From be3718968019754c93ce013f75a9ea3275083fc8 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 11:59:00 +0530 Subject: [PATCH 01/66] Source code is now python3 compatible. Needs to build test the gui now. --- MANIFEST.in | 3 + MdiArea.py => mgui/MdiArea.py | 0 .../PlotWidgetContainer.py | 6 +- RunWidget.py => mgui/RunWidget.py | 4 +- SettingsDialog.py => mgui/SettingsDialog.py | 4 +- __init__.py => mgui/__init__.py | 0 biomodelsclient.py => mgui/biomodelsclient.py | 30 ++++----- checkcombobox.py => mgui/checkcombobox.py | 0 {colormaps => mgui/colormaps}/fire | 0 {colormaps => mgui/colormaps}/greenfire | 0 {colormaps => mgui/colormaps}/grey | 0 {colormaps => mgui/colormaps}/heat | 0 {colormaps => mgui/colormaps}/jet | 0 {colormaps => mgui/colormaps}/rainbow2.pkl | 0 {colormaps => mgui/colormaps}/redhot | 0 config.py => mgui/config.py | 10 +-- configwidget.py => mgui/configwidget.py | 6 +- defaults.py => mgui/defaults.py | 0 .../global_constants.py | 0 loaderdialog.py => mgui/loaderdialog.py | 0 mexception.py => mgui/mexception.py | 8 +-- mgui.py => mgui/mgui.py | 52 +++++++-------- mload.py => mgui/mload.py | 16 ++--- mplot.py => mgui/mplot.py | 4 +- mplugin.py => mgui/mplugin.py | 0 msearch.py => mgui/msearch.py | 0 mtoolbutton.py => mgui/mtoolbutton.py | 10 +-- mtree.py => mgui/mtree.py | 2 +- mtypes.py => mgui/mtypes.py | 4 +- neuroextractor.py => mgui/neuroextractor.py | 0 newmodeldialog.py => mgui/newmodeldialog.py | 4 +- objectedit.py => mgui/objectedit.py | 10 +-- {plugins => mgui/plugins}/NeuroKit.py | 6 +- {plugins => mgui/plugins}/NeuroKitEditor.py | 8 +-- {plugins => mgui/plugins}/NeuroKitRunner.py | 6 +- .../plugins}/NeuroKitVisualizer.py | 16 ++--- .../plugins}/PreferencesPresenter.py | 6 +- {plugins => mgui/plugins}/PreferencesView.py | 2 +- {plugins => mgui/plugins}/README | 0 {plugins => mgui/plugins}/Runner.py | 10 +-- {plugins => mgui/plugins}/__init__.py | 0 {plugins => mgui/plugins}/buildkkit.py | 58 ++++++++-------- {plugins => mgui/plugins}/constants.py | 0 .../plugins}/datastore/preferences.json | 0 {plugins => mgui/plugins}/default.py | 28 ++++---- {plugins => mgui/plugins}/defines.py | 0 {plugins => mgui/plugins}/kkit.py | 66 +++++++++---------- {plugins => mgui/plugins}/kkitCalcArrow.py | 6 +- {plugins => mgui/plugins}/kkitOrdinateUtil.py | 16 ++--- {plugins => mgui/plugins}/kkitQGraphics.py | 6 +- {plugins => mgui/plugins}/kkitUtil.py | 19 +++--- {plugins => mgui/plugins}/kkitViewcontrol.py | 44 ++++++------- {plugins => mgui/plugins}/list.txt | 0 {plugins => mgui/plugins}/modelBuild.py | 18 ++--- {plugins => mgui/plugins}/setsolver.py | 2 +- {plugins => mgui/plugins}/test_plotwidget.py | 2 +- scishell.py => mgui/scishell.py | 22 +++---- shell.py => mgui/shell.py | 8 +-- sidebar.py => mgui/sidebar.py | 15 ++--- utils.py => mgui/utils.py | 16 ++--- setup.py | 60 +++++++++++++++++ suds/__init__.py | 34 +++++----- suds/argparser.py | 4 +- suds/bindings/binding.py | 6 +- suds/builder.py | 2 +- suds/cache.py | 4 +- suds/client.py | 56 ++++++++-------- suds/mx/__init__.py | 5 +- suds/mx/appender.py | 4 +- suds/mx/literal.py | 5 +- suds/mx/typer.py | 4 +- suds/options.py | 6 +- suds/plugin.py | 7 +- suds/properties.py | 26 ++++---- suds/sax/__init__.py | 2 +- suds/sax/attribute.py | 2 +- suds/sax/date.py | 6 +- suds/sax/document.py | 2 +- suds/sax/element.py | 28 ++++---- suds/sax/enc.py | 6 +- suds/sax/parser.py | 16 ++--- suds/sax/text.py | 6 +- suds/servicedefinition.py | 8 +-- suds/serviceproxy.py | 2 +- suds/store.py | 2 +- suds/sudsobject.py | 10 +-- suds/transport/__init__.py | 4 +- suds/transport/http.py | 26 ++++---- suds/transport/https.py | 6 +- suds/transport/options.py | 4 +- suds/umx/__init__.py | 5 +- suds/umx/core.py | 2 +- suds/wsdl.py | 34 +++++----- suds/xsd/__init__.py | 4 +- suds/xsd/deplist.py | 4 +- suds/xsd/query.py | 2 +- suds/xsd/schema.py | 12 ++-- suds/xsd/sxbase.py | 12 ++-- suds/xsd/sxbasic.py | 4 +- suds/xsd/sxbuiltin.py | 18 ++--- 100 files changed, 528 insertions(+), 475 deletions(-) create mode 100644 MANIFEST.in rename MdiArea.py => mgui/MdiArea.py (100%) rename PlotWidgetContainer.py => mgui/PlotWidgetContainer.py (98%) rename RunWidget.py => mgui/RunWidget.py (96%) rename SettingsDialog.py => mgui/SettingsDialog.py (95%) rename __init__.py => mgui/__init__.py (100%) rename biomodelsclient.py => mgui/biomodelsclient.py (93%) rename checkcombobox.py => mgui/checkcombobox.py (100%) rename {colormaps => mgui/colormaps}/fire (100%) rename {colormaps => mgui/colormaps}/greenfire (100%) rename {colormaps => mgui/colormaps}/grey (100%) rename {colormaps => mgui/colormaps}/heat (100%) rename {colormaps => mgui/colormaps}/jet (100%) rename {colormaps => mgui/colormaps}/rainbow2.pkl (100%) rename {colormaps => mgui/colormaps}/redhot (100%) rename config.py => mgui/config.py (96%) rename configwidget.py => mgui/configwidget.py (98%) rename defaults.py => mgui/defaults.py (100%) rename global_constants.py => mgui/global_constants.py (100%) rename loaderdialog.py => mgui/loaderdialog.py (100%) rename mexception.py => mgui/mexception.py (90%) rename mgui.py => mgui/mgui.py (98%) rename mload.py => mgui/mload.py (95%) rename mplot.py => mgui/mplot.py (99%) rename mplugin.py => mgui/mplugin.py (100%) rename msearch.py => mgui/msearch.py (100%) rename mtoolbutton.py => mgui/mtoolbutton.py (94%) rename mtree.py => mgui/mtree.py (99%) rename mtypes.py => mgui/mtypes.py (98%) rename neuroextractor.py => mgui/neuroextractor.py (100%) rename newmodeldialog.py => mgui/newmodeldialog.py (96%) rename objectedit.py => mgui/objectedit.py (99%) rename {plugins => mgui/plugins}/NeuroKit.py (96%) rename {plugins => mgui/plugins}/NeuroKitEditor.py (98%) rename {plugins => mgui/plugins}/NeuroKitRunner.py (98%) rename {plugins => mgui/plugins}/NeuroKitVisualizer.py (94%) rename {plugins => mgui/plugins}/PreferencesPresenter.py (99%) rename {plugins => mgui/plugins}/PreferencesView.py (99%) rename {plugins => mgui/plugins}/README (100%) rename {plugins => mgui/plugins}/Runner.py (95%) rename {plugins => mgui/plugins}/__init__.py (100%) rename {plugins => mgui/plugins}/buildkkit.py (94%) rename {plugins => mgui/plugins}/constants.py (100%) rename {plugins => mgui/plugins}/datastore/preferences.json (100%) rename {plugins => mgui/plugins}/default.py (98%) rename {plugins => mgui/plugins}/defines.py (100%) rename {plugins => mgui/plugins}/kkit.py (96%) rename {plugins => mgui/plugins}/kkitCalcArrow.py (95%) rename {plugins => mgui/plugins}/kkitOrdinateUtil.py (95%) rename {plugins => mgui/plugins}/kkitQGraphics.py (99%) rename {plugins => mgui/plugins}/kkitUtil.py (94%) rename {plugins => mgui/plugins}/kkitViewcontrol.py (98%) rename {plugins => mgui/plugins}/list.txt (100%) rename {plugins => mgui/plugins}/modelBuild.py (98%) rename {plugins => mgui/plugins}/setsolver.py (97%) rename {plugins => mgui/plugins}/test_plotwidget.py (98%) rename scishell.py => mgui/scishell.py (96%) rename shell.py => mgui/shell.py (99%) rename sidebar.py => mgui/sidebar.py (97%) rename utils.py => mgui/utils.py (91%) create mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..88539f4 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,3 @@ +include mgui/colormaps/* +recursive-include mgui *.pkl +include bioModels/* diff --git a/MdiArea.py b/mgui/MdiArea.py similarity index 100% rename from MdiArea.py rename to mgui/MdiArea.py diff --git a/PlotWidgetContainer.py b/mgui/PlotWidgetContainer.py similarity index 98% rename from PlotWidgetContainer.py rename to mgui/PlotWidgetContainer.py index f42e0a8..cbe3d8b 100644 --- a/PlotWidgetContainer.py +++ b/mgui/PlotWidgetContainer.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import print_function + """ """ @@ -31,7 +31,7 @@ import moose import default -import sidebar +from . import sidebar # from default import PlotWidget ELECTRICAL = 0 @@ -106,7 +106,7 @@ def addPlotWidget(self, row = None, col = 0, graph = None): widget = default.PlotWidget(self.model, graph, self.rowIndex, self) if self.modelType == ELECTRICAL: - for axes in widget.canvas.axes.values(): + for axes in list(widget.canvas.axes.values()): # axes.autoscale(False, axis='x', tight=True) axes.set_ylim(bottom = -0.07, top= 0.03) diff --git a/RunWidget.py b/mgui/RunWidget.py similarity index 96% rename from RunWidget.py rename to mgui/RunWidget.py index dd78a2f..a0a5b0f 100644 --- a/RunWidget.py +++ b/mgui/RunWidget.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import print_function + """Sidebar for plugins. The sidebar comprises of actions. Currently mode, connect and settings are defined. @@ -17,7 +17,7 @@ import sys import os -import SettingsDialog +from . import SettingsDialog from PyQt4 import QtGui, Qt from PyQt4.QtGui import QWidget from PyQt4.QtGui import QScrollArea diff --git a/SettingsDialog.py b/mgui/SettingsDialog.py similarity index 95% rename from SettingsDialog.py rename to mgui/SettingsDialog.py index bd6ce56..16b0e58 100644 --- a/SettingsDialog.py +++ b/mgui/SettingsDialog.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import print_function + """Dialog for settings. Currently only plot settings are supported """ @@ -40,7 +40,7 @@ def plotSettingsPage(self): layout = QGridLayout() page.setLayout(layout) index = 0 - for key, values in self.plotFieldMap.iteritems() : + for key, values in list(self.plotFieldMap.items()) : label = QLabel(key, page) combo = QComboBox(page) for value in values: diff --git a/__init__.py b/mgui/__init__.py similarity index 100% rename from __init__.py rename to mgui/__init__.py diff --git a/biomodelsclient.py b/mgui/biomodelsclient.py similarity index 93% rename from biomodelsclient.py rename to mgui/biomodelsclient.py index 6a24ba2..b9e2ddf 100644 --- a/biomodelsclient.py +++ b/mgui/biomodelsclient.py @@ -45,21 +45,21 @@ # Code: -from suds.client import Client -from suds.transport.http import HttpTransport as SudsHttpTransport +from .suds.client import Client +from .suds.transport.http import HttpTransport as SudsHttpTransport import os -import config +from . import config import pickle import moose BIOMODELS_WSDL_URI = 'http://www.ebi.ac.uk/biomodels-main/services/BioModelsWebServices?wsdl' proxyOpts = dict() -for k,v in {'http':'http_proxy','https':'https_proxy'}.items(): - if os.environ.has_key(v): +for k,v in list({'http':'http_proxy','https':'https_proxy'}.items()): + if v in os.environ: httpProxy = os.environ[v].replace('http://', '') proxyOpts[k] = httpProxy[0:httpProxy.rfind('/',0,len(httpProxy))] - elif os.environ.has_key(v.upper()): + elif v.upper() in os.environ: HttpProxy = os.environ[v.upper()].replace('http://', '') proxyOpts[k] = HttpProxy[0:HttpProxy.rfind('/',0,len(HttpProxy))] @@ -79,8 +79,8 @@ def __init__(self, WSDL_URI=BIOMODELS_WSDL_URI): try: Client.__init__(self, WSDL_URI,proxy=proxyOpts) #Client.__init__(self, WSDL_URI,transport=HttpTransport()) - except Exception, e: - print e + except Exception as e: + print(e) from PyQt4.Qt import Qt from PyQt4 import QtCore, QtGui @@ -156,7 +156,7 @@ def downloadModel(self): """ If user select multi row, only data from currentRow is downloaded and loaded into moose """ selectedRow = self.resultsPanel.currentRow() modelId = self.resultsPanel.item(selectedRow, 0).text() - modelSBML = unicode(self.client.service.getModelSBMLById(modelId)).encode("utf-8") + modelSBML = str(self.client.service.getModelSBMLById(modelId)).encode("utf-8") self.filePath = os.path.join(config.settings[config.KEY_LOCAL_DEMOS_DIR], str(modelId)+'.xml') f = open(str(self.filePath), 'w') f.write(modelSBML) @@ -181,7 +181,7 @@ def getTargetPath(self): return str(self.filePath) def runQuery(self): - print 'Running query .....' + print('Running query .....') #self.resultsPanel.cellClicked.connect(self.enableDownload) progressDialog = QtGui.QProgressDialog() progressDialog.setLabelText('Retrieving data from BioModels Database') @@ -237,7 +237,7 @@ def runQuery(self): progressDialog.setValue(r) if progressDialog.wasCanceled(): return 0 - name = unicode(self.client.service.getModelNameById(item)).encode("utf-8") + name = str(self.client.service.getModelNameById(item)).encode("utf-8") r = r+1 pickleResult.update({item:name}) updatepickleFile = True @@ -253,12 +253,12 @@ def runQuery(self): pickleResult = {} pickleResult[argument] = name; - except KeyError, e: - print 'A KeyError - "%s"' % str(e) ,' not found in ',filename + except KeyError as e: + print(('A KeyError - "%s"' % str(e) ,' not found in ',filename)) QtGui.QMessageBox.critical(None, "BioModels Database"," The Id "+ str(e) +" not found in "+ filename,QtGui.QMessageBox.Ok | QtGui.QMessageBox.Default,QtGui.QMessageBox.NoButton) display = False if display: - for value,name in pickleResult.items(): + for value,name in list(pickleResult.items()): self.resultsPanel.insertRow(row) item = QtGui.QTableWidgetItem(self.tr(value)) item.setFlags(item.flags() & ~Qt.ItemIsEditable) @@ -273,7 +273,7 @@ def runQuery(self): if progressDialog: progressDialog.close() #self.importButton.setEnabled(True) - print 'Finished running query' + print('Finished running query') def enableimportButton(self): self.importButton.setEnabled(True) diff --git a/checkcombobox.py b/mgui/checkcombobox.py similarity index 100% rename from checkcombobox.py rename to mgui/checkcombobox.py diff --git a/colormaps/fire b/mgui/colormaps/fire similarity index 100% rename from colormaps/fire rename to mgui/colormaps/fire diff --git a/colormaps/greenfire b/mgui/colormaps/greenfire similarity index 100% rename from colormaps/greenfire rename to mgui/colormaps/greenfire diff --git a/colormaps/grey b/mgui/colormaps/grey similarity index 100% rename from colormaps/grey rename to mgui/colormaps/grey diff --git a/colormaps/heat b/mgui/colormaps/heat similarity index 100% rename from colormaps/heat rename to mgui/colormaps/heat diff --git a/colormaps/jet b/mgui/colormaps/jet similarity index 100% rename from colormaps/jet rename to mgui/colormaps/jet diff --git a/colormaps/rainbow2.pkl b/mgui/colormaps/rainbow2.pkl similarity index 100% rename from colormaps/rainbow2.pkl rename to mgui/colormaps/rainbow2.pkl diff --git a/colormaps/redhot b/mgui/colormaps/redhot similarity index 100% rename from colormaps/redhot rename to mgui/colormaps/redhot diff --git a/config.py b/mgui/config.py similarity index 96% rename from config.py rename to mgui/config.py index cf1a9a6..975b539 100644 --- a/config.py +++ b/mgui/config.py @@ -127,7 +127,7 @@ def __new__(cls, *args, **kwargs): cls._instance = super(MooseSetting, cls).__new__(cls, *args, **kwargs) firsttime, errs = init_dirs() for e in errs: - print e + print(e) QtCore.QCoreApplication.setOrganizationName('NCBS') QtCore.QCoreApplication.setOrganizationDomain('ncbs.res.in') QtCore.QCoreApplication.setApplicationName('MOOSE') @@ -145,7 +145,7 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_DOCS_DIR, MOOSE_DOCS_DIR) cls._instance.qsettings.setValue(KEY_MOOSE_LOCAL_DIR, MOOSE_LOCAL_DIR) cls._instance.qsettings.setValue(KEY_LOCAL_BUILD, LOCAL_BUILD) - os.environ['NUMPTHREADS'] = str(cls._instance.qsettings.value(KEY_NUMPTHREADS).toString()) + os.environ['NUMPTHREADS'] = str(cls._instance.qsettings.value(KEY_NUMPTHREADS)) return cls._instance def __init__(self, *args, **kwargs): @@ -161,16 +161,16 @@ def __setitem__(self, key, value): raise TypeError('Expect only strings as keys') def __getitem__(self, key): - return str(self.qsettings.value(key).toString()) + return str(self.qsettings.value(key)) def keys(self): return [str(key) for key in self.qsettings.allKeys()] def values(self): - return [str(self.qsettings.value(key).toString()) for key in self.qsettings.allKeys()] + return [str(self.qsettings.value(key)) for key in self.qsettings.allKeys()] def itervalues(self): - return (str(self.qsettings.value(key).toString()) for key in self.qsettings.allKeys()) + return (str(self.qsettings.value(key)) for key in self.qsettings.allKeys()) def init_dirs(): """Check if there is a `.moose` directory in user's home diff --git a/configwidget.py b/mgui/configwidget.py similarity index 98% rename from configwidget.py rename to mgui/configwidget.py index 87d10c3..8ac4488 100644 --- a/configwidget.py +++ b/mgui/configwidget.py @@ -48,10 +48,10 @@ import shutil import os -import config +from . import config from PyQt4 import QtGui, QtCore -import config -from utils import * +from . import config +from .utils import * class ConfigWidget(QtGui.QDialog): """Widget to configure MOOSE.""" diff --git a/defaults.py b/mgui/defaults.py similarity index 100% rename from defaults.py rename to mgui/defaults.py diff --git a/global_constants.py b/mgui/global_constants.py similarity index 100% rename from global_constants.py rename to mgui/global_constants.py diff --git a/loaderdialog.py b/mgui/loaderdialog.py similarity index 100% rename from loaderdialog.py rename to mgui/loaderdialog.py diff --git a/mexception.py b/mgui/mexception.py similarity index 90% rename from mexception.py rename to mgui/mexception.py index 53a728b..c2836b8 100644 --- a/mexception.py +++ b/mgui/mexception.py @@ -57,17 +57,17 @@ class MooseWarning(Warning): def __init__(self, *args, **kwargs): Warning.__init__(self, *args, **kwargs) -class MooseError(StandardError): +class MooseError(Exception): def __init__(self, *args, **kwargs): - StandardError.__init__(self, *args, **kwargs) + Exception.__init__(self, *args, **kwargs) class FileLoadError(MooseError): def __init__(self, *args, **kwargs): - StandardError.__init__(self, *args, **kwargs) + Exception.__init__(self, *args, **kwargs) class ElementNameError(MooseError): def __init__(self, *args, **kwargs): - StandardError.__init__(self, *args, **kwargs) + Exception.__init__(self, *args, **kwargs) # # mexception.py ends here diff --git a/mgui.py b/mgui/mgui.py similarity index 98% rename from mgui.py rename to mgui/mgui.py index ede1ba9..2290695 100644 --- a/mgui.py +++ b/mgui/mgui.py @@ -49,31 +49,31 @@ import code import traceback import sys -sys.path.append('../python') -#sys.path.append('utils') import os -from collections import defaultdict +import re import posixpath # We use this to create MOOSE paths +from collections import defaultdict, OrderedDict + from PyQt4 import QtGui, QtCore, Qt -import config -import mplugin -import moose -import mexception -from moose import utils -from mload import loadFile -from loaderdialog import LoaderDialog -from shell import get_shell_class -from objectedit import ObjectEditDockWidget -from newmodeldialog import DialogWidget -import re -from biomodelsclient import BioModelsClientWidget from PyQt4 import Qt, QtCore, QtGui from PyQt4.QtGui import * -from MdiArea import MdiArea -import os -from setsolver import * -from defines import * -from collections import OrderedDict + +import moose +from moose import utils + +from . import config + +from . import mplugin +from . import mexception +from . import mload +from .loaderdialog import LoaderDialog +from .shell import get_shell_class +from .objectedit import ObjectEditDockWidget +from .mgui.newmodeldialog import DialogWidget +from .mgui.biomodelsclient import BioModelsClientWidget +from .mgui.MdiArea import MdiArea +from .mgui.plugins.setsolver import * +from .mgui.plugins.defines import * __author__ = 'Subhasis Ray , HarshaRani, Aviral Goel, NCBS' @@ -293,7 +293,7 @@ def run_genesis_script(self,filepath,solver): abspath = os.path.abspath(filepath) directory, modulename = os.path.split(abspath) modelName = os.path.splitext(modulename)[0] - ret = loadFile(str(abspath),'%s' %(modelName),solver,merge=False) + ret = mload.loadFile(str(abspath),'%s' %(modelName),solver,merge=False) self.setPlugin("kkit", ret["model"].path) self.setCurrentView("run") widget = self.plugin.view.getSchedulingDockWidget().widget() @@ -385,7 +385,7 @@ def getMyDockWidgets(self): self.objectEditDockWidget = dockWidget self.addDockWidget(Qt.Qt.RightDockWidgetArea, dockWidget) dockWidget.setVisible(False) - return self.dockWidgets.keys() + return list(self.dockWidgets.keys()) def getShellWidget(self): """Create an instance of shell widget. This can be either a @@ -900,7 +900,7 @@ def connectBioModel(self): head, fileName = os.path.split(filepath) modelName = os.path.splitext(fileName)[0] pwe = moose.getCwe() - ret = loadFile(str(filepath), '/model/%s' % (modelName), merge=False) + ret = mload.loadFile(str(filepath), '/model/%s' % (modelName), merge=False) self.objectEditSlot('/',False) pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) try: @@ -1137,8 +1137,8 @@ def checkPlugin(self,dialog): modelName = dialog.getTargetPath() if '/' in modelName: raise mexception.ElementNameError('Model name cannot contain `/`') - ret = loadFile(str(fileName),'%s' %(modelName),merge=False) - #ret = loadFile(str(fileName), '/model/%s' % (modelName), merge=False) + ret = mload.loadFile(str(fileName),'%s' %(modelName),merge=False) + #ret = mload.loadFile(str(fileName), '/model/%s' % (modelName), merge=False) #This will clear out object editor's objectpath and make it invisible self.objectEditSlot('/',False) #if subtype is None, in case of cspace then pluginLookup = /cspace/None @@ -1148,7 +1148,7 @@ def checkPlugin(self,dialog): pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] except KeyError: pluginName = 'default' - print 'Loaded model', ret['model'].path + print(('Loaded model', ret['model'].path)) return ret,pluginName def dialog_check(self,ret): diff --git a/mload.py b/mgui/mload.py similarity index 95% rename from mload.py rename to mgui/mload.py index 916a33c..0678604 100644 --- a/mload.py +++ b/mgui/mload.py @@ -47,13 +47,13 @@ import moose from moose import neuroml -import mtypes -from mexception import FileLoadError +from . import mtypes +from .mexception import FileLoadError import posixpath from os.path import basename from os.path import splitext from PyQt4 import QtGui, QtCore, Qt -from plugins.setsolver import * +from .plugins.setsolver import * from moose.SBML import * def loadGenCsp(target,filename,solver="gsl"): @@ -127,7 +127,7 @@ def loadFile(filename, target, solver="gsl", merge=True): with open(filename, 'rb') as infile: istext = mtypes.istextfile(infile) if not istext: - print 'Cannot handle any binary formats yet' + print('Cannot handle any binary formats yet') return None parent, child = posixpath.split(target) p = moose.Neutral(parent) @@ -149,10 +149,10 @@ def loadFile(filename, target, solver="gsl", merge=True): if moose.exists(moose.element(modelpath).path): moose.Annotator(moose.element(modelpath).path+'/info').modeltype = "kkit" else: - print " path doesn't exists" + print(" path doesn't exists") moose.le(modelpath) else: - print 'Only kkit and prototype files can be loaded.' + print('Only kkit and prototype files can be loaded.') elif modeltype == 'cspace': model,modelpath = loadGenCsp(target,filename) @@ -164,8 +164,8 @@ def loadFile(filename, target, solver="gsl", merge=True): if subtype == 'neuroml': popdict, projdict = neuroml.loadNeuroML_L123(filename) # Circus to get the container of populations from loaded neuroml - for popinfo in popdict.values(): - for cell in popinfo[1].values(): + for popinfo in list(popdict.values()): + for cell in list(popinfo[1].values()): solver = moose.HSolve(cell.path + "/hsolve") solver.target = cell.path # model = cell.parent diff --git a/mplot.py b/mgui/mplot.py similarity index 99% rename from mplot.py rename to mgui/mplot.py index f198c4b..b61b621 100644 --- a/mplot.py +++ b/mgui/mplot.py @@ -193,7 +193,7 @@ def callAxesFn(self, fname, *args, **kwargs): return fn(*args, **kwargs) def resize_event(self, event): - print("Resize event called ", event) + print(("Resize event called ", event)) def toggleGrid(self): self.gridMode = not self.gridMode @@ -209,7 +209,7 @@ def setXLimit(self, minX, maxX): import sys import os -import config +from . import config import unittest from PyQt4.QtTest import QTest diff --git a/mplugin.py b/mgui/mplugin.py similarity index 100% rename from mplugin.py rename to mgui/mplugin.py diff --git a/msearch.py b/mgui/msearch.py similarity index 100% rename from msearch.py rename to mgui/msearch.py diff --git a/mtoolbutton.py b/mgui/mtoolbutton.py similarity index 94% rename from mtoolbutton.py rename to mgui/mtoolbutton.py index c4d72ed..909bb43 100644 --- a/mtoolbutton.py +++ b/mgui/mtoolbutton.py @@ -84,19 +84,19 @@ def __init__(self, *args): def dragEnterEvent(self, event): - print '2222', event.mimeData().text() + print(('2222', event.mimeData().text())) if event.mimeData().hasFormat('text/plain'): event.acceptProposedAction() - print '3333 accepted ' + print('3333 accepted ') def dragMoveEvent(self, event): """This must be reimplemented to accept the event in case of QTextBrowser. Not needed in QWidgets in general.""" - print '4444' + print('4444') event.acceptProposedAction() def dropEvent(self, event): - print '5555', event.mimeData().text() + print(('5555', event.mimeData().text())) self.dropCount += 1 self.setPlainText('`%s` dropped: %d times' % (event.mimeData().text(), self.dropCount)) event.acceptProposedAction() @@ -113,7 +113,7 @@ def test_main(): button.setText('test') toolbar.addWidget(button) browser = MyWidget(mainwin) - print browser.acceptDrops() + print((browser.acceptDrops())) mainwin.setCentralWidget(browser) mainwin.show() sys.exit(app.exec_()) diff --git a/mtree.py b/mgui/mtree.py similarity index 99% rename from mtree.py rename to mgui/mtree.py index a95a776..3d4b632 100644 --- a/mtree.py +++ b/mgui/mtree.py @@ -220,7 +220,7 @@ def insertElementSlot(self, class_name): under currently selected element in the model tree.""" # print 'Inserting element ...', class_name current = self.currentItem() - print 'CLASS NAME:', class_name + print(('CLASS NAME:', class_name)) self.insertChildElement(current, class_name) def insertChildElement(self, item, class_name, name=''): diff --git a/mtypes.py b/mgui/mtypes.py similarity index 98% rename from mtypes.py rename to mgui/mtypes.py index 9d04c5a..69a9a88 100644 --- a/mtypes.py +++ b/mgui/mtypes.py @@ -45,7 +45,7 @@ # Code: -from __future__ import print_function + import re import moose @@ -143,7 +143,7 @@ def isNeuroML(filename): """ doc = md.parse(filename) for child in doc.childNodes: - print(child.nodeName, child.nodeType == child.ELEMENT_NODE) + print((child.nodeName, child.nodeType == child.ELEMENT_NODE)) if child.nodeType == child.ELEMENT_NODE and \ (child.nodeName == 'networkml' or \ child.nodeName == 'morphml' or \ diff --git a/neuroextractor.py b/mgui/neuroextractor.py similarity index 100% rename from neuroextractor.py rename to mgui/neuroextractor.py diff --git a/newmodeldialog.py b/mgui/newmodeldialog.py similarity index 96% rename from newmodeldialog.py rename to mgui/newmodeldialog.py index 6b5bf80..5ef5d30 100644 --- a/newmodeldialog.py +++ b/mgui/newmodeldialog.py @@ -1,7 +1,7 @@ import os from PyQt4 import QtGui, QtCore,Qt -import config -from mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +from . import config +from .mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase import re class DialogWidget(QtGui.QDialog): diff --git a/objectedit.py b/mgui/objectedit.py similarity index 99% rename from objectedit.py rename to mgui/objectedit.py index 2545a1e..74638c6 100644 --- a/objectedit.py +++ b/mgui/objectedit.py @@ -75,9 +75,9 @@ sys.path.append('../python') import moose -import defaults -import config -from plugins.kkitUtil import getColor +from . import defaults +from . import config +from .plugins.kkitUtil import getColor #these fields will be ignored extra_fields = ['this', 'me', @@ -242,7 +242,7 @@ def setData(self, index, value, role=QtCore.Qt.EditRole): return True def undo(self): - print 'Undo' + print('Undo') if len(self.undoStack) == 0: raise Info('No more undo information') index, oldvalue, = self.undoStack.pop() @@ -401,7 +401,7 @@ def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=Non self.setColor(getColor(self.model().mooseObject.path+'/info')[1]) except: pass - print 'Created view with', mobject + print(('Created view with', mobject)) def setColor(self, color): self.colorButton.setStyleSheet( diff --git a/plugins/NeuroKit.py b/mgui/plugins/NeuroKit.py similarity index 96% rename from plugins/NeuroKit.py rename to mgui/plugins/NeuroKit.py index 00785c7..b9d0b73 100644 --- a/plugins/NeuroKit.py +++ b/mgui/plugins/NeuroKit.py @@ -31,9 +31,9 @@ # from msearch import SearchWidget # from checkcombobox import CheckComboBox import sys -import default -import NeuroKitEditor -import NeuroKitRunner +from . import default +from . import NeuroKitEditor +from . import NeuroKitRunner import mplugin import moose from PyQt4.QtGui import QWidget diff --git a/plugins/NeuroKitEditor.py b/mgui/plugins/NeuroKitEditor.py similarity index 98% rename from plugins/NeuroKitEditor.py rename to mgui/plugins/NeuroKitEditor.py index e0f9c81..ac3b247 100644 --- a/plugins/NeuroKitEditor.py +++ b/mgui/plugins/NeuroKitEditor.py @@ -17,7 +17,7 @@ import moose import pprint # import NeuroKitEditorWidget -import default +from . import default from PyQt4 import QtGui from PyQt4 import QtCore @@ -32,14 +32,14 @@ from PyQt4.QtGui import QCheckBox from PyQt4.QtGui import QComboBox -from default import * +from .default import * from mplugin import * import moose import neuroextractor import moogli import numpy as np from global_constants import preferences -from NeuroKitVisualizer import MorphologyEditor +from .NeuroKitVisualizer import MorphologyEditor class NeuroKitEditor(mplugin.EditorBase): @@ -142,7 +142,7 @@ def createCentralWidget(self): self.morphology = self.createMorphology(self.geometry) self.morphology.set_compartment_order( - map(lambda x : x.path, self.compartmentOrder) + [x.path for x in self.compartmentOrder] ) self.vms = np.empty(len(self.compartmentOrder), dtype=np.float, order='C') diff --git a/plugins/NeuroKitRunner.py b/mgui/plugins/NeuroKitRunner.py similarity index 98% rename from plugins/NeuroKitRunner.py rename to mgui/plugins/NeuroKitRunner.py index 9e7f57c..a54791d 100644 --- a/plugins/NeuroKitRunner.py +++ b/mgui/plugins/NeuroKitRunner.py @@ -9,7 +9,7 @@ from mplot import CanvasWidget import RunWidget from PlotWidgetContainer import PlotWidgetContainer -from NeuroKitVisualizer import MorphologySimulator +from .NeuroKitVisualizer import MorphologySimulator from PyQt4 import QtGui, Qt from PyQt4.QtGui import QLabel from PyQt4.QtGui import QWidget @@ -19,7 +19,7 @@ from PyQt4.QtGui import QTextEdit import pprint # from PyQt4.QtGui import QToolBa -from default import * +from .default import * import moose import neuroextractor import moogli @@ -74,7 +74,7 @@ def createCentralWidget(self): self.morphology = self.createMorphology(self.geometry) self.morphology.set_compartment_order( - map(lambda x : x.path, self.compartmentOrder) + [x.path for x in self.compartmentOrder] ) self.vms = np.empty(len(self.compartmentOrder), dtype=np.float, order='C') diff --git a/plugins/NeuroKitVisualizer.py b/mgui/plugins/NeuroKitVisualizer.py similarity index 94% rename from plugins/NeuroKitVisualizer.py rename to mgui/plugins/NeuroKitVisualizer.py index 046df19..eb90ffa 100644 --- a/plugins/NeuroKitVisualizer.py +++ b/mgui/plugins/NeuroKitVisualizer.py @@ -12,7 +12,7 @@ from PyQt4.QtGui import QFont from PyQt4.QtCore import QPoint import moose -import default +from . import default import moogli class MorphologyEditor(moogli.MorphologyViewer): @@ -26,12 +26,12 @@ def __init__(self, morphology, width, height, plugin): self.plugin = plugin def start(self): - self._timer.timeout.connect(self.next) + self._timer.timeout.connect(self.__next__) self._timer.start(0) @QtCore.pyqtSlot() def show(self): - self._timer.timeout.connect(self.next) + self._timer.timeout.connect(self.__next__) super(MorphologyEditor, self).show() self._timer.start(0) @@ -40,7 +40,7 @@ def hide(self): self._timer.stop() super(MorphologyEditor, self).hide() - def next(self): + def __next__(self): self.frame() info_id = self.select_info.get_id() info_event = self.select_info.get_event_type() @@ -59,12 +59,12 @@ def __init__(self, morphology, width, height, plugin): self.plugin = plugin def start(self): - self._timer.timeout.connect(self.next) + self._timer.timeout.connect(self.__next__) self._timer.start(0) @QtCore.pyqtSlot() def show(self): - self._timer.timeout.connect(self.next) + self._timer.timeout.connect(self.__next__) super(MorphologySimulator, self).show() self._timer.start(0) @@ -88,12 +88,12 @@ def start_drag(self, info_id): drag.setPixmap(pixmap) # drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAction = drag.start(QtCore.Qt.MoveAction) - print(" => ", dropAction) + print((" => ", dropAction)) self.select_info.set_event_type(0) self._timer.start(0) return - def next(self): + def __next__(self): self.frame() info_id = self.select_info.get_id() info_event = self.select_info.get_event_type() diff --git a/plugins/PreferencesPresenter.py b/mgui/plugins/PreferencesPresenter.py similarity index 99% rename from plugins/PreferencesPresenter.py rename to mgui/plugins/PreferencesPresenter.py index 7b4a368..6485dcc 100644 --- a/plugins/PreferencesPresenter.py +++ b/mgui/plugins/PreferencesPresenter.py @@ -1,13 +1,13 @@ -from __future__ import print_function + import sys from PyQt4 import Qt, QtGui, QtCore from PyQt4.QtCore import QObject from PyQt4.QtCore import pyqtSignal from PyQt4.QtGui import QColor from PyQt4.QtGui import QGroupBox -from PreferencesView import PreferencesView +from .PreferencesView import PreferencesView import moose -from defines import * +from .defines import * import json import os diff --git a/plugins/PreferencesView.py b/mgui/plugins/PreferencesView.py similarity index 99% rename from plugins/PreferencesView.py rename to mgui/plugins/PreferencesView.py index 1699c9a..ff4a711 100644 --- a/plugins/PreferencesView.py +++ b/mgui/plugins/PreferencesView.py @@ -1,4 +1,4 @@ -from __future__ import print_function + import PyQt4 from PyQt4 import Qt, QtGui, QtCore from PyQt4.QtCore import pyqtSignal diff --git a/plugins/README b/mgui/plugins/README similarity index 100% rename from plugins/README rename to mgui/plugins/README diff --git a/plugins/Runner.py b/mgui/plugins/Runner.py similarity index 95% rename from plugins/Runner.py rename to mgui/plugins/Runner.py index e2dd0aa..9708679 100644 --- a/plugins/Runner.py +++ b/mgui/plugins/Runner.py @@ -59,9 +59,9 @@ def runSimulation(self, runTime): # print(self.simulationInterval) # print(self.runSequence) self.simulationStarted.emit(self.clock.currentTime + self.runTime) - QTimer.singleShot(0, self.next) + QTimer.singleShot(0, self.__next__) - def next(self): + def __next__(self): if self.pause: return if len(self.runSequence) == 0: @@ -69,19 +69,19 @@ def next(self): return moose.start(self.runSequence.pop(0)) self.simulationProgressed.emit(self.clock.currentTime) - QTimer.singleShot(0, self.next) + QTimer.singleShot(0, self.__next__) def pauseSimulation(self): self.pause = True def unpauseSimulation(self): self.pause = False - self.next() + next(self) def togglePauseSimulation(self): if self.pause : self.pause = False - self.next() + next(self) else: self.pause = True diff --git a/plugins/__init__.py b/mgui/plugins/__init__.py similarity index 100% rename from plugins/__init__.py rename to mgui/plugins/__init__.py diff --git a/plugins/buildkkit.py b/mgui/plugins/buildkkit.py similarity index 94% rename from plugins/buildkkit.py rename to mgui/plugins/buildkkit.py index 6e85d60..4c591f3 100644 --- a/plugins/buildkkit.py +++ b/mgui/plugins/buildkkit.py @@ -9,15 +9,15 @@ import numpy as np import config import pickle -from default import * +from .default import * from moose import * sys.path.append('plugins') from mplugin import * -from kkitUtil import * -from kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem -from kkitViewcontrol import * -from kkitCalcArrow import * -from kkitOrdinateUtil import * +from .kkitUtil import * +from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from .kkitViewcontrol import * +from .kkitCalcArrow import * +from .kkitOrdinateUtil import * import posixpath from mtoolbutton import MToolButton @@ -82,7 +82,7 @@ def __init__(self, plugin): def SaveModelDialogSlot(self): type_sbml = 'SBML' - print " here in saveModelDialog" + print(" here in saveModelDialog") filters = {'SBML(*.xml)': type_sbml} filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) extension = "" @@ -93,7 +93,7 @@ def SaveModelDialogSlot(self): if filename: filename = filename+extension if filters[str(filter_)] == 'SBML': - print "here",filename," ",self.plugin.modelRoot + print("here",filename," ",self.plugin.modelRoot) moose.writeSBML(str(filename),self.plugin.modelRoot) def getToolPanes(self): return super(KkitEditorView, self).getToolPanes() @@ -234,7 +234,7 @@ def updateModelView(self): def mooseObjOntoscene(self): # All the compartments are put first on to the scene \ # Need to do: Check With upi if empty compartments exist - for cmpt in sorted(self.meshEntry.iterkeys()): + for cmpt in sorted(self.meshEntry.keys()): self.createCompt(cmpt) self.qGraCompt[cmpt] #comptRef = self.qGraCompt[cmpt] @@ -243,7 +243,7 @@ def mooseObjOntoscene(self): # so that when cplx (which is pool object) queries for its parent, it gets its \ # parent enz co-ordinates with respect to QGraphicsscene """ - for cmpt,memb in self.meshEntry.items(): + for cmpt,memb in list(self.meshEntry.items()): for enzObj in find_index(memb,'enzyme'): enzinfo = enzObj.path+'/info' if enzObj.className == 'ZEnz': @@ -253,7 +253,7 @@ def mooseObjOntoscene(self): self.setupDisplay(enzinfo,enzItem,"enzyme") self.setupSlot(enzObj,enzItem) - for cmpt,memb in self.meshEntry.items(): + for cmpt,memb in list(self.meshEntry.items()): for poolObj in find_index(memb,'pool'): poolinfo = poolObj.path+'/info' poolItem = PoolItem(poolObj,self.qGraCompt[cmpt]) @@ -278,7 +278,7 @@ def mooseObjOntoscene(self): self.setupDisplay(tabinfo,tabItem,"tab") self.setupSlot(tabObj,tabItem) # compartment's rectangle size is calculated depending on children - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): rectcompt = v.childrenBoundingRect() v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) v.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), 5, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) @@ -339,7 +339,7 @@ def updateItemSlot(self, mooseObject): #slot for updating the display item. #In this case if the name is updated from the keyboard both in mooseobj and gui gets updation changedItem = '' - for item in self.sceneContainer.items(): + for item in list(self.sceneContainer.items()): if isinstance(item,PoolItem): if mooseObject.getId() == element(item.mobj).getId(): item.updateSlot() @@ -349,7 +349,7 @@ def updateItemSlot(self, mooseObject): def positionChange(self,mooseObject): #If the item position changes, the corresponding arrow's are calculated if isinstance(element(mooseObject),CubeMesh): - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): mesh = mooseObject.path+'/mesh[0]' if k.path == mesh: for rectChilditem in v.childItems(): @@ -357,7 +357,7 @@ def positionChange(self,mooseObject): else: mobj = self.mooseId_GObj[mooseObject.getId()] self.updateArrow(mobj) - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): rectcompt = v.childrenBoundingRect() v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) @@ -366,7 +366,7 @@ def emitItemtoEditor(self,mooseObject): self.editObject.emit(mooseObject.path) def drawLine_arrow(self, itemignoreZooming=False): - for inn,out in self.srcdesConnection.items(): + for inn,out in list(self.srcdesConnection.items()): # self.srcdesConnection is dictionary which contains key,value \ # key is Enzyme or Reaction and value [[list of substrate],[list of product]] (tuple) # key is FuncBase and value is [list of pool] (list) @@ -374,7 +374,7 @@ def drawLine_arrow(self, itemignoreZooming=False): #src = self.mooseId_GObj[inn] if isinstance(out,tuple): if len(out[0])== 0: - print inn.className + ':' +inn[0].name+ " doesn't output message" + print(inn.className + ':' +inn[0].name+ " doesn't output message") else: src = self.mooseId_GObj[inn] for items in (items for items in out[0] ): @@ -382,7 +382,7 @@ def drawLine_arrow(self, itemignoreZooming=False): self.lineCord(src,des,items,itemignoreZooming) if len(out[1]) == 0: - print inn.className + ':' +inn[0].name+ " doesn't output message" + print(inn.className + ':' +inn[0].name+ " doesn't output message") else: for items in (items for items in out[1] ): des = self.mooseId_GObj[element(items[0]).getId()] @@ -390,7 +390,7 @@ def drawLine_arrow(self, itemignoreZooming=False): elif isinstance(out,list): if len(out) == 0: - print "Func pool doesn't have sumtotal" + print("Func pool doesn't have sumtotal") else: src = self.mooseId_GObj[element(inn).getId()] for items in (items for items in out ): @@ -401,7 +401,7 @@ def lineCord(self,src,des,type_no,itemignoreZooming): endtype = type_no[1] line = 0 if (src == "") and (des == ""): - print "Source or destination is missing or incorrect" + print("Source or destination is missing or incorrect") return srcdes_list = [src,des,endtype,line] arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) @@ -414,14 +414,14 @@ def lineCord(self,src,des,type_no,itemignoreZooming): line = line +1 if type_no[2] > 5: - print "Higher order reaction will not be displayed" + print("Higher order reaction will not be displayed") def drawLine(self,srcdes_list,arrow): src = srcdes_list[0] des = srcdes_list[1] endtype = srcdes_list[2] line = srcdes_list[3] - source = element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + source = element(next((k for k,v in list(self.mooseId_GObj.items()) if v == src), None)) for l,v,o in self.object2line[src]: if v == des and o ==line: l.setPolygon(arrow) @@ -441,7 +441,7 @@ def drawLine(self,srcdes_list,arrow): if ( (endtype == 's') or (endtype == 'p')): pen.setColor(QtCore.Qt.red) elif(endtype != 'cplx'): - p1 = (next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + p1 = (next((k for k,v in list(self.mooseId_GObj.items()) if v == src), None)) pinfo = p1.path+'/info' color,bgcolor = getColor(pinfo,self.colorMap) pen.setColor(color) @@ -514,14 +514,14 @@ def keyPressEvent(self,event): self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10,self.sceneContainer.itemsBoundingRect().y()-10,self.sceneContainer.itemsBoundingRect().width()+20,self.sceneContainer.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) def updateItemTransformationMode(self, on): - for v in self.sceneContainer.items(): + for v in list(self.sceneContainer.items()): if( not isinstance(v,ComptItem)): #if ( isinstance(v, PoolItem) or isinstance(v, ReacItem) or isinstance(v, EnzItem) or isinstance(v, CplxItem) ): if isinstance(v,KineticsDisplayItem): v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations, on) def updateScale( self, scale ): - for item in self.sceneContainer.items(): + for item in list(self.sceneContainer.items()): if isinstance(item,KineticsDisplayItem): item.refresh(scale) #iteminfo = item.mobj.path+'/info' @@ -544,7 +544,7 @@ def updateScale( self, scale ): item.bg.setRect(0, 0, item.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '), item.gobj.boundingRect().height()) self.drawLine_arrow(itemignoreZooming=False) - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): rectcompt = v.childrenBoundingRect() comptPen = v.pen() comptWidth = self.defaultComptsize*self.iconScale @@ -565,7 +565,7 @@ def updateScale( self, scale ): try: filepath = '../../Demos/Genesis_files/'+modelPath+'.g' #filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' - print filepath + print(filepath) f = open(filepath, "r") loadModel(filepath,'/'+modelPath) @@ -579,8 +579,8 @@ def updateScale( self, scale ): dt.updateModelView() dt.show() - except IOError, what: + except IOError as what: (errno, strerror) = what - print "Error number",errno,"(%s)" %strerror + print("Error number",errno,"(%s)" %strerror) sys.exit(0) sys.exit(app.exec_()) diff --git a/plugins/constants.py b/mgui/plugins/constants.py similarity index 100% rename from plugins/constants.py rename to mgui/plugins/constants.py diff --git a/plugins/datastore/preferences.json b/mgui/plugins/datastore/preferences.json similarity index 100% rename from plugins/datastore/preferences.json rename to mgui/plugins/datastore/preferences.json diff --git a/plugins/default.py b/mgui/plugins/default.py similarity index 98% rename from plugins/default.py rename to mgui/plugins/default.py index ccf8846..1c67430 100644 --- a/plugins/default.py +++ b/mgui/plugins/default.py @@ -71,8 +71,8 @@ from PyQt4 import QtCore, QtGui from PyQt4.QtGui import QDoubleValidator -from kkitUtil import getColor -from Runner import Runner +from .kkitUtil import getColor +from .Runner import Runner # from Runner import Runner # from __future__ import print_function from PyQt4 import QtGui, QtCore @@ -90,7 +90,7 @@ #from EventBlocker import EventBlocker # from PlotNavigationToolbar import PlotNavigationToolbar from global_constants import preferences -from setsolver import * +from .setsolver import * ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -732,7 +732,7 @@ def solverStatus(self): QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: No objects found on path.\n ") return 16 elif status == 0: - print "Successfully built stoichiometry matrix.\n " + print("Successfully built stoichiometry matrix.\n ") # moose.reinit() return 0 # def setElectricalParameters(self): @@ -781,7 +781,7 @@ def getSimTime(self): try: time = float(str(self.simtimeEdit.text())) return time - except ValueError, e: + except ValueError as e: QtGui.QMessageBox.warning(self, 'Invalid value', 'Specified runtime was meaningless.') return 0 @@ -956,7 +956,7 @@ def getContextMenu(self): return menu def deleteGraph(self): - print("Deleting " + self.graph.path) + print(("Deleting " + self.graph.path)) moose.delete(self.graph.path) def delete(self, event): @@ -1014,7 +1014,7 @@ def genColorMap(self,tableObject): def removePlot(self, table): - print("removePlot =>", table) + print(("removePlot =>", table)) moose.delete(table) self.plotAllData() @@ -1163,7 +1163,7 @@ def addRasterPlot(self, eventtable, yoffset=0, *args, **kwargs): return self.canvas.plot(eventtable.vector, y, '|') def updatePlots(self): - for path, lines in self.pathToLine.items(): + for path, lines in list(self.pathToLine.items()): element = moose.element(path) if isinstance(element, moose.Table2): tab = moose.Table2(path) @@ -1176,7 +1176,7 @@ def updatePlots(self): self.canvas.draw() def extendXAxes(self, xlim): - for axes in self.canvas.axes.values(): + for axes in list(self.canvas.axes.values()): # axes.autoscale(False, axis='x', tight=True) axes.set_xlim(right=xlim) axes.autoscale_view(tight=True, scalex=True, scaley=True) @@ -1187,7 +1187,7 @@ def rescalePlots(self): ideally we should set xlim from simtime. """ - for axes in self.canvas.axes.values(): + for axes in list(self.canvas.axes.values()): axes.autoscale(True, tight=True) axes.relim() axes.autoscale_view(tight=True,scalex=True,scaley=True) @@ -1208,7 +1208,7 @@ def saveCsv(self, line, directory): name = moose.element(nameVec[0]).name filename = str(directory)+'/'+'%s.csv' %(name) np.savetxt(filename, np.vstack((x, y)).transpose()) - print 'Saved data from %s and %s in %s' % (xSrc.path, ySrc.path, filename) + print('Saved data from %s and %s in %s' % (xSrc.path, ySrc.path, filename)) def saveAllCsv(self): """Save data for all currently plotted lines""" @@ -1225,7 +1225,7 @@ def saveAllCsv(self): layout.addWidget(targetPanel) if fileDialog2.exec_(): directory = fileDialog2.directory().path() - for line in self.lineToDataSource.keys(): + for line in list(self.lineToDataSource.keys()): self.saveCsv(line,directory) @@ -1453,7 +1453,7 @@ def setSelectedElements(self, elementlist): for ii, entry in enumerate(elementlist): el = moose.element(entry) plottableFields = [] - for field, dtype in moose.getFieldDict(el.className, 'valueFinfo').items(): + for field, dtype in list(moose.getFieldDict(el.className, 'valueFinfo').items()): if dtype == 'double': plottableFields.append(field) if len(plottableFields) == 0: @@ -1478,7 +1478,7 @@ def setDataRoot(self, path): def getSelectedFields(self): """Returns a list containing (element, field) for all selected fields""" ret = [] - for el, widgets in self._elementWidgetsDict.items(): + for el, widgets in list(self._elementWidgetsDict.items()): combo = widgets[1] for ii in range(combo.count()): field = str(combo.itemText(ii)).strip() diff --git a/plugins/defines.py b/mgui/plugins/defines.py similarity index 100% rename from plugins/defines.py rename to mgui/plugins/defines.py diff --git a/plugins/kkit.py b/mgui/plugins/kkit.py similarity index 96% rename from plugins/kkit.py rename to mgui/plugins/kkit.py index a43aea6..0c967e7 100644 --- a/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -1,16 +1,16 @@ import sys from PyQt4 import QtGui, QtCore, Qt -from default import * +from .default import * from moose import * from moose.genesis import write from moose import SBML #sys.path.append('plugins') from mplugin import * -from kkitUtil import * -from kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem -from kkitViewcontrol import * -from kkitCalcArrow import * -from kkitOrdinateUtil import * +from .kkitUtil import * +from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from .kkitViewcontrol import * +from .kkitCalcArrow import * +from .kkitOrdinateUtil import * import posixpath from mtoolbutton import MToolButton from PyQt4.QtGui import QWidget @@ -18,7 +18,7 @@ from PyQt4.QtGui import QColor import RunWidget from os.path import expanduser -from setsolver import * +from .setsolver import * class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" @@ -65,7 +65,7 @@ def SaveModelDialogSlot(self): if filters[str(filter_)] == 'SBML': self.sceneObj = KkitEditorView(self).getCentralWidget().mooseId_GObj self.coOrdinates = {} - for k,v in self.sceneObj.items(): + for k,v in list(self.sceneObj.items()): if moose.exists(moose.element(k).path+'/info'): annoInfo = Annotator(k.path+'/info') self.coOrdinates[k] = {'x':annoInfo.x, 'y':annoInfo.y} @@ -92,19 +92,19 @@ def SaveModelDialogSlot(self): self.sceneObj = KkitEditorView(self).getCentralWidget().mooseId_GObj #Here get x,y coordinates from the Annotation, to save layout position # into genesis - for k,v in self.sceneObj.items(): + for k,v in list(self.sceneObj.items()): if moose.exists(moose.element(k).path+'/info'): annoInfo = Annotator(k.path+'/info') self.coOrdinates[k] = {'x':annoInfo.x, 'y':annoInfo.y} if mdtype.modeltype != "kkit": #If coordinates come from kkit then directly transfering the co-ordinates # else zoomed in factor is applied before saving it to genesis form - for k,v in self.coOrdinates.items(): + for k,v in list(self.coOrdinates.items()): xycord.append(v['x']) xycord.append(v['y']) cmin = min(xycord) cmax = max(xycord) - for k,v in self.coOrdinates.items(): + for k,v in list(self.coOrdinates.items()): x = v['x'] xprime = int((20*(float(v['x']-cmin)/float(cmax-cmin)))-10) v['x'] = xprime @@ -468,7 +468,7 @@ def updateItemSlot(self, mooseObject): #In this case if the name is updated from the keyboard both in mooseobj and gui gets updation changedItem = '' - for item in self.sceneContainer.items(): + for item in list(self.sceneContainer.items()): if isinstance(item,PoolItem): if mooseObject.getId() == element(item.mobj).getId(): item.updateSlot() @@ -499,7 +499,7 @@ def mooseObjOntoscene(self): else: self.mooseId_GObj = {} - for cmpt in sorted(self.meshEntry.iterkeys()): + for cmpt in sorted(self.meshEntry.keys()): self.createCompt(cmpt) self.qGraCompt[cmpt] #comptRef = self.qGraCompt[cmpt] @@ -508,7 +508,7 @@ def mooseObjOntoscene(self): # so that when cplx (which is pool object) queries for its parent, it gets its \ # parent enz co-ordinates with respect to QGraphicsscene """ - for cmpt,memb in self.meshEntry.items(): + for cmpt,memb in list(self.meshEntry.items()): for enzObj in find_index(memb,'enzyme'): enzinfo = enzObj.path+'/info' if enzObj.className == 'Enz': @@ -519,7 +519,7 @@ def mooseObjOntoscene(self): self.setupDisplay(enzinfo,enzItem,"enzyme") #self.setupSlot(enzObj,enzItem) - for cmpt,memb in self.meshEntry.items(): + for cmpt,memb in list(self.meshEntry.items()): for poolObj in find_index(memb,'pool'): poolinfo = poolObj.path+'/info' #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle @@ -563,7 +563,7 @@ def mooseObjOntoscene(self): def comptChilrenBoundingRect(self): - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): # compartment's rectangle size is calculated depending on children rectcompt = calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) @@ -641,7 +641,7 @@ def positioninfo(self,iteminfo): return(xpos,ypos) def drawLine_arrow(self, itemignoreZooming=False): - for inn,out in self.srcdesConnection.items(): + for inn,out in list(self.srcdesConnection.items()): #print "inn ",inn, " out ",out # self.srcdesConnection is dictionary which contains key,value \ # key is Enzyme or Reaction and value [[list of substrate],[list of product]] (tuple) @@ -651,13 +651,13 @@ def drawLine_arrow(self, itemignoreZooming=False): if isinstance(out,tuple): src = self.mooseId_GObj[inn] if len(out[0])== 0: - print inn.className + ' : ' +inn.name+ " doesn't output message" + print(inn.className + ' : ' +inn.name+ " doesn't output message") else: for items in (items for items in out[0] ): des = self.mooseId_GObj[element(items[0])] self.lineCord(src,des,items,itemignoreZooming) if len(out[1]) == 0: - print inn.className + ' : ' +inn.name+ " doesn't output message" + print(inn.className + ' : ' +inn.name+ " doesn't output message") else: for items in (items for items in out[1] ): des = self.mooseId_GObj[element(items[0])] @@ -665,9 +665,9 @@ def drawLine_arrow(self, itemignoreZooming=False): elif isinstance(out,list): if len(out) == 0: if inn.className == "StimulusTable": - print inn.name +" doesn't have output" + print(inn.name +" doesn't have output") elif inn.className == "ZombieFunction" or inn.className == "Function": - print inn.name + " doesn't have sumtotal " + print(inn.name + " doesn't have sumtotal ") else: src = self.mooseId_GObj[inn] for items in (items for items in out ): @@ -678,7 +678,7 @@ def lineCord(self,src,des,type_no,itemignoreZooming): endtype = type_no[1] line = 0 if (src == "") and (des == ""): - print "Source or destination is missing or incorrect" + print("Source or destination is missing or incorrect") return srcdes_list = [src,des,endtype,line] arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) @@ -691,14 +691,14 @@ def lineCord(self,src,des,type_no,itemignoreZooming): line = line +1 if type_no[2] > 5: - print "Higher order reaction will not be displayed" + print("Higher order reaction will not be displayed") def drawLine(self,srcdes_list,arrow): src = srcdes_list[0] des = srcdes_list[1] endtype = srcdes_list[2] line = srcdes_list[3] - source = element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + source = element(next((k for k,v in list(self.mooseId_GObj.items()) if v == src), None)) for l,v,et,o in self.object2line[src]: if v == des and o ==line: l.setPolygon(arrow) @@ -717,7 +717,7 @@ def drawLine(self,srcdes_list,arrow): if ( (endtype == 's') or (endtype == 'p')): pen.setColor(QtCore.Qt.red) elif(endtype != 'cplx'): - p1 = (next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + p1 = (next((k for k,v in list(self.mooseId_GObj.items()) if v == src), None)) pinfo = p1.parent.path+'/info' color,bgcolor = getColor(pinfo) #color = QColor(color[0],color[1],color[2]) @@ -735,7 +735,7 @@ def drawLine(self,srcdes_list,arrow): def positionChange(self,mooseObject): #If the item position changes, the corresponding arrow's are calculated if isinstance(element(mooseObject),ChemCompt): - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): mesh = mooseObject if k.path == mesh: for rectChilditem in v.childItems(): @@ -757,7 +757,7 @@ def positionChange(self,mooseObject): pos = elePath.find('/',1) l = elePath[0:pos] linfo = moose.Annotator(l+'/info') - for k, v in self.qGraCompt.items(): + for k, v in list(self.qGraCompt.items()): #rectcompt = v.childrenBoundingRect() rectcompt = calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() @@ -935,12 +935,12 @@ def getToolBars(self): return self._toolBars def updateValue(self): - for item in self.sceneContainer.items(): + for item in list(self.sceneContainer.items()): if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,PoolItemCircle) or isinstance(item,CplxItem): item.updateValue(item.mobj) def changeBgSize(self): - for item in self.sceneContainer.items(): + for item in list(self.sceneContainer.items()): if isinstance(item,PoolItemCircle): initialConc = moose.element(item.mobj).concInit presentConc = moose.element(item.mobj).conc @@ -958,7 +958,7 @@ def changeBgSize(self): item.updateRect(math.sqrt(abs(ratio))) def resetColor(self): - for item in self.sceneContainer.items(): + for item in list(self.sceneContainer.items()): if isinstance(item,PoolItemCircle): item.returnEllispeSize() @@ -1026,7 +1026,7 @@ def resetColor(self): try: filepath = '../../Demos/Genesis_files/'+modelPath+'.g' filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' - print filepath + print(filepath) f = open(filepath, "r") loadModel(filepath,'/'+modelPath) @@ -1040,8 +1040,8 @@ def resetColor(self): dt.updateModelView() dt.show() - except IOError, what: + except IOError as what: (errno, strerror) = what - print "Error number",errno,"(%s)" %strerror + print("Error number",errno,"(%s)" %strerror) sys.exit(0) sys.exit(app.exec_()) diff --git a/plugins/kkitCalcArrow.py b/mgui/plugins/kkitCalcArrow.py similarity index 95% rename from plugins/kkitCalcArrow.py rename to mgui/plugins/kkitCalcArrow.py index e11ebe3..770b730 100644 --- a/plugins/kkitCalcArrow.py +++ b/mgui/plugins/kkitCalcArrow.py @@ -1,7 +1,7 @@ from PyQt4.QtGui import QPolygonF from PyQt4.QtCore import QLineF,QPointF import math -from kkitQGraphics import PoolItem #, ReacItem,EnzItem,CplxItem,ComptItem +from .kkitQGraphics import PoolItem #, ReacItem,EnzItem,CplxItem,ComptItem ''' One to need to pass the source, destination,endtype and order for drawing the arrow between 2 object \ endtype is to check if needs arrow head (arrowhead for product and sumtotal) \ @@ -71,9 +71,9 @@ def calcArrow(srcdes_list,itemignoreZooming,iconScale): destIntersects, lineDestPoint = calcLineRectIntersection(desRect, tmpLine) if not srcIntersects: - print 'Source does not intersect line. Arrow points:',lineSrcPoint,src.mobj.name, src.mobj.className + print('Source does not intersect line. Arrow points:',lineSrcPoint,src.mobj.name, src.mobj.className) if not destIntersects: - print 'Dest does not intersect line. Arrow points:', lineDestPoint, des.mobj.name, des.mobj.className + print('Dest does not intersect line. Arrow points:', lineDestPoint, des.mobj.name, des.mobj.className) '''src and des are connected with line co-ordinates Arrow head is drawned if the distance between src and des line is >8 just for clean appeareance diff --git a/plugins/kkitOrdinateUtil.py b/mgui/plugins/kkitOrdinateUtil.py similarity index 95% rename from plugins/kkitOrdinateUtil.py rename to mgui/plugins/kkitOrdinateUtil.py index 01bcafd..941619b 100644 --- a/plugins/kkitOrdinateUtil.py +++ b/mgui/plugins/kkitOrdinateUtil.py @@ -112,7 +112,7 @@ def setupItem(modelPath,cntDict): uniqItem,countuniqItem = countitems(items,'prd') prdNo = uniqItem if (len(subNo) == 0 or len(prdNo) == 0): - print "Substrate Product is empty ",path, " ",items + print("Substrate Product is empty ",path, " ",items) for prd in uniqItem: prdlist.append((element(prd),'p',countuniqItem[prd])) @@ -181,11 +181,11 @@ def autoCoordinates(meshEntry,srcdesConnection): ymin = 0.0 ymax = 1.0 G = nx.Graph() - for cmpt,memb in meshEntry.items(): + for cmpt,memb in list(meshEntry.items()): for enzObj in find_index(memb,'enzyme'): #G.add_node(enzObj.path) G.add_node(enzObj.path,label='',shape='ellipse',color='',style='filled',fontname='Helvetica',fontsize=12,fontcolor='blue') - for cmpt,memb in meshEntry.items(): + for cmpt,memb in list(meshEntry.items()): for poolObj in find_index(memb,'pool'): #G.add_node(poolObj.path) G.add_node(poolObj.path,label = poolObj.name,shape = 'box',color = '',style = 'filled',fontname = 'Helvetica',fontsize = 12,fontcolor = 'blue') @@ -197,24 +197,24 @@ def autoCoordinates(meshEntry,srcdesConnection): #G.add_node(reaObj.path) G.add_node(reaObj.path,label='',shape='circle',color='') - for inn,out in srcdesConnection.items(): + for inn,out in list(srcdesConnection.items()): if (inn.className =='ZombieReac'): arrowcolor = 'green' elif(inn.className =='ZombieEnz'): arrowcolor = 'red' else: arrowcolor = 'blue' if isinstance(out,tuple): if len(out[0])== 0: - print inn.className + ':' +inn.name + " doesn't have input message" + print(inn.className + ':' +inn.name + " doesn't have input message") else: for items in (items for items in out[0] ): G.add_edge(element(items[0]).path,inn.path) if len(out[1]) == 0: - print inn.className + ':' + inn.name + "doesn't have output mssg" + print(inn.className + ':' + inn.name + "doesn't have output mssg") else: for items in (items for items in out[1] ): G.add_edge(inn.path,element(items[0]).path) elif isinstance(out,list): if len(out) == 0: - print "Func pool doesn't have sumtotal" + print("Func pool doesn't have sumtotal") else: for items in (items for items in out ): G.add_edge(element(items[0]).path,inn.path) @@ -229,7 +229,7 @@ def autoCoordinates(meshEntry,srcdesConnection): xcord = [] ycord = [] - for item in position.items(): + for item in list(position.items()): xy = item[1] ann = moose.Annotator(item[0]+'/info') ann.x = xy[0] diff --git a/plugins/kkitQGraphics.py b/mgui/plugins/kkitQGraphics.py similarity index 99% rename from plugins/kkitQGraphics.py rename to mgui/plugins/kkitQGraphics.py index 27ddbe3..1f9286c 100644 --- a/plugins/kkitQGraphics.py +++ b/mgui/plugins/kkitQGraphics.py @@ -1,10 +1,8 @@ -#import sys -#sys.path.insert(0, '/home/harsha/trunk/gui') -import config +from mgui import config from PyQt4 import QtGui, QtCore, Qt from moose import * from PyQt4.QtGui import QPixmap, QImage, QGraphicsPixmapItem -from constants import * +from .constants import * class KineticsDisplayItem(QtGui.QGraphicsWidget): """Base class for display elemenets in kinetics layout""" diff --git a/plugins/kkitUtil.py b/mgui/plugins/kkitUtil.py similarity index 94% rename from plugins/kkitUtil.py rename to mgui/plugins/kkitUtil.py index a83a496..ebf434c 100644 --- a/plugins/kkitUtil.py +++ b/mgui/plugins/kkitUtil.py @@ -1,10 +1,11 @@ from moose import Annotator -from kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem from PyQt4 import QtCore,QtGui,QtSvg from PyQt4.QtGui import QColor +from mgui import config + import numpy as np import os -import config import pickle import random import matplotlib @@ -15,11 +16,11 @@ ignoreColor= ["mistyrose","antiquewhite","aliceblue","azure","bisque","black","blanchedalmond","blue","cornsilk","darkolivegreen","darkslategray","dimgray","floralwhite","gainsboro","ghostwhite","honeydew","ivory","lavender","lavenderblush","lemonchiffon","lightcyan","lightgoldenrodyellow","lightgray","lightyellow","linen","mediumblue","mintcream","navy","oldlace","papayawhip","saddlebrown","seashell","snow","wheat","white","whitesmoke","aquamarine","lightsalmon","moccasin","limegreen","snow","sienna","beige","dimgrey","lightsage"] matplotcolor = {} -for name,hexno in matplotlib.colors.cnames.iteritems(): +for name,hexno in matplotlib.colors.cnames.items(): matplotcolor[name]=hexno def getRandColor(): - k = random.choice(matplotcolor.keys()) + k = random.choice(list(matplotcolor.keys())) if k in ignoreColor: return getRandColor() else: @@ -79,11 +80,11 @@ def colorCheck(fc_bgcolor,fcbg): return(fc_bgcolor) def validColorcheck(color): - ''' + ''' Both in Qt4.7 and 4.8 if not a valid color it makes it as back but in 4.7 there will be a warning mssg which is taken here checking if textcolor or backgroundcolor is valid color, if 'No' making white color as default where I have not taken care for checking what will be backgroundcolor for textcolor or textcolor for backgroundcolor - ''' + ''' if QColor(color).isValid(): return (QColor(color)) else: @@ -119,11 +120,9 @@ def handleCollisions(compartments, moveCallback, layoutPt,margin = 5.0): if len(compartments) is 0 : return compartments = sorted(compartments, key = lambda c: c.sceneBoundingRect().center().x()) reference = compartments.pop(0); - print reference.name + print(reference.name) referenceRect = reference.sceneBoundingRect() - colliders = filter( lambda compartment : referenceRect.intersects(compartment.sceneBoundingRect()) - , compartments - ) + colliders = [compartment for compartment in compartments if referenceRect.intersects(compartment.sceneBoundingRect())] for collider in colliders: moveCallback(reference, collider, layoutPt,margin) return handleCollisions(compartments, moveCallback, layoutPt,margin) diff --git a/plugins/kkitViewcontrol.py b/mgui/plugins/kkitViewcontrol.py similarity index 98% rename from plugins/kkitViewcontrol.py rename to mgui/plugins/kkitViewcontrol.py index c5c74b5..ba70df0 100644 --- a/plugins/kkitViewcontrol.py +++ b/mgui/plugins/kkitViewcontrol.py @@ -1,10 +1,10 @@ import sys -from modelBuild import * -from constants import * +from .modelBuild import * +from .constants import * from PyQt4.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem from PyQt4.QtCore import pyqtSignal -from kkitUtil import * -from setsolver import * +from .kkitUtil import * +from .setsolver import * from PyQt4 import QtSvg from moose import utils @@ -127,7 +127,7 @@ def editorMousePressEvent(self, event): else: self.resetState() comptList = [] - for k, v in self.layoutPt.qGraCompt.items(): + for k, v in list(self.layoutPt.qGraCompt.items()): comptList.append(v) if len(comptList) > 1: popupmenu = QtGui.QMenu('PopupMenu', self) @@ -276,7 +276,7 @@ def editorMouseReleaseEvent(self, event): l = self.modelRoot[0:self.modelRoot.find('/',1)] linfo = moose.Annotator(l+'/model/info') - for k, v in self.layoutPt.qGraCompt.items(): + for k, v in list(self.layoutPt.qGraCompt.items()): rectcompt = v.childrenBoundingRect() if linfo.modeltype == "new_kkit": #if newly built model then compartment is size is fixed for some size. @@ -352,7 +352,7 @@ def editorMouseReleaseEvent(self, event): ## if there is change in 'Topology' of the model ## or if copy has to made then oject should be in unZombify mode deleteSolver(self.modelRoot) - lKey = [key for key, value in self.layoutPt.qGraCompt.iteritems() if value == itemAtView][0] + lKey = [key for key, value in self.layoutPt.qGraCompt.items() if value == itemAtView][0] iR = 0 iP = 0 t = moose.element(cloneObj.parent().mobj) @@ -514,7 +514,7 @@ def removeExpectedConnection(self): def removeConnector(self): try: - for l,k in self.connectorlist.items(): + for l,k in list(self.connectorlist.items()): if k is not None: self.sceneContainerPt.removeItem(k) self.connectorlist[l] = None @@ -536,7 +536,7 @@ def showConnector(self, item): self.connectionSource = item rectangle = item.boundingRect() - for l in self.connectorlist.keys(): + for l in list(self.connectorlist.keys()): self.xDisp = 0 self.yDisp = 0 self.connectionSign = None @@ -721,7 +721,7 @@ def mouseReleaseEvent(self, event): ''' def updateItemTransformationMode(self, on): - for v in self.sceneContainerPt.items(): + for v in list(self.sceneContainerPt.items()): #v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations,on) if( not isinstance(v,ComptItem)): #if ( isinstance(v, PoolItem) or isinstance(v, ReacItem) or isinstance(v, EnzItem) or isinstance(v, CplxItem) ): @@ -755,7 +755,7 @@ def keyPressEvent(self,event): self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) def updateScale( self, scale ): - for item in self.sceneContainerPt.items(): + for item in list(self.sceneContainerPt.items()): if isinstance(item,KineticsDisplayItem): item.refresh(scale) #iteminfo = item.mobj.path+'/info' @@ -853,7 +853,7 @@ def deleteObject2line(self,qpolygonline,src,des,endt): if polygon == qpolygonline and objdes == src and endtype == endt: del(self.layoutPt.object2line[des]) else: - print " check this condition when is len is single and else condition",qpolygonline, objdes,endtype + print(" check this condition when is len is single and else condition",qpolygonline, objdes,endtype) else: n = 0 for polygon,objdes,endtype,numL in object2lineInfo: @@ -872,18 +872,18 @@ def deleteConnection(self,item): src = self.layoutPt.lineItem_dict[item] lineItem_value = self.layoutPt.lineItem_dict[item] i = iter(lineItem_value) - source = i.next() - destination = i.next() - endt = i.next() - numl = i.next() + source = next(i) + destination = next(i) + endt = next(i) + numl = next(i) self.deleteObject2line(item,source,destination,endt) self.deleteObject2line(item,destination,source,endt) try: del self.layoutPt.lineItem_dict[item] except KeyError: pass - srcZero = [k for k, v in self.layoutPt.mooseId_GObj.iteritems() if v == src[0]] - srcOne = [k for k, v in self.layoutPt.mooseId_GObj.iteritems() if v == src[1]] + srcZero = [k for k, v in self.layoutPt.mooseId_GObj.items() if v == src[0]] + srcOne = [k for k, v in self.layoutPt.mooseId_GObj.items() if v == src[1]] if isinstance (moose.element(srcZero[0]),moose.MMenz): gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] @@ -1019,7 +1019,7 @@ def deleteItem(self,item): # when enz is removed the connection is removed, # but when pool tried to remove then qgraphicscene says # "item scene is different from this scene" - sceneItems = self.sceneContainerPt.items() + sceneItems = list(self.sceneContainerPt.items()) if l[0] in sceneItems: #deleting the connection which is connected to Enz self.sceneContainerPt.removeItem(l[0]) @@ -1033,13 +1033,13 @@ def deleteItem(self,item): self.deleteItem(self.layoutPt.mooseId_GObj[funcp]) for l in self.layoutPt.object2line[item]: - sceneItems = self.sceneContainerPt.items() + sceneItems = list(self.sceneContainerPt.items()) if l[0] in sceneItems: self.sceneContainerPt.removeItem(l[0]) self.sceneContainerPt.removeItem(item) moose.delete(item.mobj) - for key, value in self.layoutPt.object2line.items(): - self.layoutPt.object2line[key] = filter( lambda tup: tup[1] != item ,value) + for key, value in list(self.layoutPt.object2line.items()): + self.layoutPt.object2line[key] = [tup for tup in value if tup[1] != item] self.layoutPt.getMooseObj() setupItem(self.modelRoot,self.layoutPt.srcdesConnection) diff --git a/plugins/list.txt b/mgui/plugins/list.txt similarity index 100% rename from plugins/list.txt rename to mgui/plugins/list.txt diff --git a/plugins/modelBuild.py b/mgui/plugins/modelBuild.py similarity index 98% rename from plugins/modelBuild.py rename to mgui/plugins/modelBuild.py index 471d8e9..fce64d5 100644 --- a/plugins/modelBuild.py +++ b/mgui/plugins/modelBuild.py @@ -1,9 +1,9 @@ import moose -from kkitQGraphics import * -from kkitOrdinateUtil import * -from kkitUtil import * +from .kkitQGraphics import * +from .kkitOrdinateUtil import * +from .kkitUtil import * import PyQt4 -from setsolver import * +from .setsolver import * def updateCompartmentSize(qGraCompt): #childBoundingRect = qGraCompt.childrenBoundingRect() @@ -25,16 +25,16 @@ def checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layout # modelRoot = modelpath[0:modelpath.find('/',1)] # else: # modelRoot = modelpath - print "28 ",modelpath + print("28 ",modelpath) if moose.exists(modelpath+'/info'): mType = moose.Annotator((moose.element(modelpath+'/info'))).modeltype - print " 1 event_pos ",event_pos + print(" 1 event_pos ",event_pos) itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) - print "2 ",itemAtView + print("2 ",itemAtView) pos = view.mapToScene(event_pos) - print " 3 ",pos + print(" 3 ",pos) modelpath = moose.element(modelpath) - print " model path @34 ",modelpath + print(" model path @34 ",modelpath) if num: string_num = ret_string+str(num) else: diff --git a/plugins/setsolver.py b/mgui/plugins/setsolver.py similarity index 97% rename from plugins/setsolver.py rename to mgui/plugins/setsolver.py index f55b067..5d5b810 100644 --- a/plugins/setsolver.py +++ b/mgui/plugins/setsolver.py @@ -61,7 +61,7 @@ def setCompartmentSolver(modelRoot,solver): compts = moose.wildcardFind(modelRoot+'/##[ISA=ChemCompt]') if ( len(compts) > 3 ): - print "Warning: setSolverOnCompt Cannot handle " , + print("Warning: setSolverOnCompt Cannot handle ", end=' ') len(compts) , " chemical compartments\n" return; diff --git a/plugins/test_plotwidget.py b/mgui/plugins/test_plotwidget.py similarity index 98% rename from plugins/test_plotwidget.py rename to mgui/plugins/test_plotwidget.py index 72c0a33..360b4f0 100644 --- a/plugins/test_plotwidget.py +++ b/mgui/plugins/test_plotwidget.py @@ -55,7 +55,7 @@ from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar import unittest sys.path.append('..') -from default import PlotWidget +from .default import PlotWidget import moose import config diff --git a/scishell.py b/mgui/scishell.py similarity index 96% rename from scishell.py rename to mgui/scishell.py index a9a63de..30f5db3 100644 --- a/scishell.py +++ b/mgui/scishell.py @@ -234,7 +234,7 @@ def paste(self): """ Reimplemented slot to handle the paste action. """ - lines = unicode(QApplication.clipboard().text()) + lines = str(QApplication.clipboard().text()) self.__executeLines(lines) @@ -242,7 +242,7 @@ def __middleMouseButton(self): """ Private method to handle the middle mouse button press. """ - lines = unicode(QApplication.clipboard().text(QClipboard.Selection)) + lines = str(QApplication.clipboard().text(QClipboard.Selection)) self.__executeLines(lines) @@ -338,7 +338,7 @@ def keyPressEvent(self, ev): if(ctrl): QsciScintilla.keyPressEvent(self, ev) - elif(self.keymap.has_key(key)): + elif(key in self.keymap): self.keymap[key]() # See it is text to insert. @@ -362,7 +362,7 @@ def __QScintillaTab(self): self.SendScintilla(QsciScintilla.SCI_TAB) elif self.__isCursorOnLastLine(): line, index = self.getCursorPosition() - buf = unicode(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") + buf = str(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") if self.more and not buf[:index-len(sys.ps2)].strip(): self.SendScintilla(QsciScintilla.SCI_TAB) @@ -427,7 +427,7 @@ def __QScintillaNewline(self): self.incrementalSearchActive = False line, col = self.__getEndPos() self.setCursorPosition(line,col) - buf = unicode(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") + buf = str(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") self.insert('\n') self.__executeCommand(buf) @@ -500,7 +500,7 @@ def __QScintillaLineUp(self): self.SendScintilla(QsciScintilla.SCI_LINEUP) else: line, col = self.__getEndPos() - buf = unicode(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") + buf = str(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") if buf and self.incrementalSearchActive: if self.incrementalSearchString: idx = self.__rsearchHistory(self.incrementalSearchString, @@ -530,7 +530,7 @@ def __QScintillaLineDown(self): self.SendScintilla(QsciScintilla.SCI_LINEDOWN) else: line, col = self.__getEndPos() - buf = unicode(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") + buf = str(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") if buf and self.incrementalSearchActive: if self.incrementalSearchString: idx = self.__searchHistory(self.incrementalSearchString, self.histidx) @@ -627,14 +627,14 @@ def __showDynCompletion(self): # get line line, col = self.__getEndPos() self.setCursorPosition(line,col) - buf = unicode(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") + buf = str(self.text(line)).replace(sys.ps1, "").replace(sys.ps2, "") text = buf.split()[-1][:-1] try: locals = self.interpreter.locals obj = eval(text, globals(), self.interpreter.locals) l = dir(obj) - l = filter(lambda x : not x.startswith('__'), l) + l = [x for x in l if not x.startswith('__')] self.__showCompletions(l, text) except : pass @@ -672,11 +672,11 @@ def __completionListSelected(self, id, txt): # Remove already written characters line, col = self.__getEndPos() self.setCursorPosition(line,col) - buf = unicode(self.text(line)) + buf = str(self.text(line)) ind = len(buf) - buf.rfind(".") - 1 if id == 1: - txt = unicode(txt[ind:]) + txt = str(txt[ind:]) #if self.completionText != "": # txt = txt.replace(self.completionText, "") self.__insertText(txt) diff --git a/shell.py b/mgui/shell.py similarity index 99% rename from shell.py rename to mgui/shell.py index 2eeafb5..6268666 100644 --- a/shell.py +++ b/mgui/shell.py @@ -65,7 +65,7 @@ def get_shell_class(): # Test QScintilla try: - from scishell import SciShell + from .scishell import SciShell return SciShell except ImportError: @@ -268,7 +268,7 @@ def writelines(self, text): """ Simulate stdin, stdout, and stderr. """ - map(self.write, text) + list(map(self.write, text)) def fakeUser(self, lines): @@ -295,8 +295,8 @@ def __run(self): self.H.append(QtCore.QString(self.line)) # Added by yr try: self.lines.append(str(self.line)) - except Exception,e: - print e + except Exception as e: + print(e) source = '\n'.join(self.lines) self.more = self.interpreter.runsource(source) diff --git a/sidebar.py b/mgui/sidebar.py similarity index 97% rename from sidebar.py rename to mgui/sidebar.py index d14b1af..7c03397 100644 --- a/sidebar.py +++ b/mgui/sidebar.py @@ -1,23 +1,24 @@ + # -*- coding: utf-8 -*- -from __future__ import print_function + """Sidebar for plugins. The sidebar comprises of actions. Currently mode, connect and settings are defined. """ __author__ = "Aviral Goel" -__credits__ = ["Upi Lab"] +__email__ = "goel.aviral@gmail.com" +__credits__ = ["NCBS Bangalore"] __license__ = "GPL3" __version__ = "1.0.0" -__maintainer__ = "Aviral Goel" -__email__ = "goel.aviral@gmail.com" +__maintainer__ = "Dilawar Singh " __status__ = "Development" import sys import os -import SettingsDialog +from . import SettingsDialog from PyQt4 import QtGui, Qt from PyQt4.QtGui import QDialog from PyQt4.QtGui import QHBoxLayout @@ -26,9 +27,7 @@ from PyQt4.QtGui import QPushButton from PyQt4.QtGui import QAction - - -ICON_DIRECTORY = "icons" +ICON_DIRECTORY = "../icons" HAND_ICON_FILENAME = "hand.png" CONNECTOR_ICON_FILENAME = "straight_connector_with_filled_circles.png" WRENCH_ICON_FILENAME = "wrench.png" diff --git a/utils.py b/mgui/utils.py similarity index 91% rename from utils.py rename to mgui/utils.py index 6873a9c..d281ef8 100644 --- a/utils.py +++ b/mgui/utils.py @@ -82,13 +82,13 @@ def copyTree(src, dst, progressDialog=None): dst = dst.strip() errors = [] if not os.access(src, os.R_OK + os.X_OK): - print 'Failed to access directory', src + print(('Failed to access directory', src)) return - print 'Copying %s to : %s' % (src, dst) + print(('Copying %s to : %s' % (src, dst))) if not os.access(src, os.R_OK + os.X_OK): try: os.makedirs(dst) - except OSError, e: + except OSError as e: # print e errors.append(e) totalsize = 0 @@ -97,7 +97,7 @@ def copyTree(src, dst, progressDialog=None): srcname = os.path.join(dirpath, fname) try: totalsize += os.path.getsize(srcname) - except OSError, e: + except OSError as e: # print e errors.append(e) if progressDialog: @@ -108,7 +108,7 @@ def copyTree(src, dst, progressDialog=None): # print 'Destination dir', dstdir, dirpath[len(src)+1:] try: os.makedirs(dstdir) - except OSError, e: + except OSError as e: # print e errors.append(e) # print 'Copying files from %s to %s' % (dirpath, dstdir) @@ -118,7 +118,7 @@ def copyTree(src, dst, progressDialog=None): # print 'Copying:', srcname, 'to', dstname try: shutil.copy2(srcname, dstname) - except IOError, e: + except IOError as e: # print e errors.append(e) size += os.path.getsize(srcname) @@ -127,11 +127,11 @@ def copyTree(src, dst, progressDialog=None): if progressDialog.wasCanceled(): return errors else: - print 'Copied %d bytes of %d.' % (size, totalsize) + print(('Copied %d bytes of %d.' % (size, totalsize))) if progressDialog: progressDialog.close() else: - print 'Finished.' + print('Finished.') return errors diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..b8515d2 --- /dev/null +++ b/setup.py @@ -0,0 +1,60 @@ +"""setup.py: + +Install script of moose-gui project. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys +import os +import matplotlib.pyplot as plt +import numpy as np +import os +import sys +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + +with open("README.md") as f: + readme = f.read() + +classifiers = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + ] + +setup( + name = "moose-gui", + version = "1.0.0", + description = "Graphical User Interface of MOOSE simulator", + long_description = readme, + packages = [ "mgui", 'mgui.plugins', 'suds' ], + package_dir = { 'mgui' : 'mgui' + , 'suds' : 'suds' + , 'mgui.plugins' : 'mgui/plugins' + }, + install_requires = [ ], + author = "Harsha Rani", + author_email = "hrani@ncbs.res.in", + maintainer = 'Dilawar Singh', + maintainer_email = 'dilawars@ncbs.res.in', + url = "http://github.com/BhallaLab/moose-gui", + license='GPL', + classifiers=classifiers, + entry_points = { 'console_scripts' : [ 'moose=mgui.mgui:main' ] } + +) diff --git a/suds/__init__.py b/suds/__init__.py index a907102..42eef79 100644 --- a/suds/__init__.py +++ b/suds/__init__.py @@ -25,7 +25,7 @@ # Project properties # -from version import __build__, __version__ +from .version import __build__, __version__ # @@ -34,19 +34,19 @@ class MethodNotFound(Exception): def __init__(self, name): - Exception.__init__(self, u"Method not found: '%s'" % name) + Exception.__init__(self, "Method not found: '%s'" % name) class PortNotFound(Exception): def __init__(self, name): - Exception.__init__(self, u"Port not found: '%s'" % name) + Exception.__init__(self, "Port not found: '%s'" % name) class ServiceNotFound(Exception): def __init__(self, name): - Exception.__init__(self, u"Service not found: '%s'" % name) + Exception.__init__(self, "Service not found: '%s'" % name) class TypeNotFound(Exception): def __init__(self, name): - Exception.__init__(self, u"Type not found: '%s'" % tostr(name)) + Exception.__init__(self, "Type not found: '%s'" % tostr(name)) class BuildError(Exception): msg = """ @@ -71,7 +71,7 @@ def __init__(self, name): class WebFault(Exception): def __init__(self, fault, document): if hasattr(fault, 'faultstring'): - Exception.__init__(self, u"Server raised fault: '%s'" % + Exception.__init__(self, "Server raised fault: '%s'" % fault.faultstring) self.fault = fault self.document = document @@ -104,7 +104,7 @@ def objid(obj): def tostr(object, encoding=None): """ get a unicode safe string representation of an object """ - if isinstance(object, basestring): + if isinstance(object, str): if encoding is None: return object else: @@ -112,7 +112,7 @@ def tostr(object, encoding=None): if isinstance(object, tuple): s = ['('] for item in object: - if isinstance(item, basestring): + if isinstance(item, str): s.append(item) else: s.append(tostr(item)) @@ -122,7 +122,7 @@ def tostr(object, encoding=None): if isinstance(object, list): s = ['['] for item in object: - if isinstance(item, basestring): + if isinstance(item, str): s.append(item) else: s.append(tostr(item)) @@ -131,13 +131,13 @@ def tostr(object, encoding=None): return ''.join(s) if isinstance(object, dict): s = ['{'] - for item in object.items(): - if isinstance(item[0], basestring): + for item in list(object.items()): + if isinstance(item[0], str): s.append(item[0]) else: s.append(tostr(item[0])) s.append(' = ') - if isinstance(item[1], basestring): + if isinstance(item[1], str): s.append(item[1]) else: s.append(tostr(item[1])) @@ -145,7 +145,7 @@ def tostr(object, encoding=None): s.append('}') return ''.join(s) try: - return unicode(object) + return str(object) except: return str(object) @@ -155,7 +155,7 @@ def tostr(object, encoding=None): # if sys.version_info < (3, 0): - from cStringIO import StringIO as BytesIO + from io import StringIO as BytesIO else: from io import BytesIO @@ -165,7 +165,7 @@ class UnicodeMixin(object): # For Python 3, __str__() and __unicode__() should be identical. __str__ = lambda x: x.__unicode__() else: - __str__ = lambda x: unicode(x).encode('utf-8') + __str__ = lambda x: str(x).encode('utf-8') # Used instead of byte literals because they are not supported on Python # versions prior to 2.6. @@ -177,8 +177,8 @@ def byte_str(s='', encoding='utf-8', input_encoding='utf-8', errors='strict'): strings encoded using the given input encoding. """ - assert isinstance(s, basestring) - if isinstance(s, unicode): + assert isinstance(s, str) + if isinstance(s, str): return s.encode(encoding, errors) if s and encoding != input_encoding: return s.decode(input_encoding, errors).encode(encoding, errors) diff --git a/suds/argparser.py b/suds/argparser.py index 67bdb02..ba8e5e1 100644 --- a/suds/argparser.py +++ b/suds/argparser.py @@ -161,7 +161,7 @@ def __check_for_extra_arguments(self, args_required, args_allowed): return if self.__kwargs: - param_name = self.__kwargs.keys()[0] + param_name = list(self.__kwargs.keys())[0] if param_name in self.__params_with_arguments: msg = "got multiple values for parameter '%s'" else: @@ -263,7 +263,7 @@ def __match_ancestry(self, ancestry): if len(stack) == 1: return stack[0], ancestry previous = stack[0] - for frame, n in zip(stack[1:], xrange(len(ancestry))): + for frame, n in zip(stack[1:], range(len(ancestry))): if frame.id() is not ancestry[n]: return previous, ancestry[n:] previous = frame diff --git a/suds/bindings/binding.py b/suds/bindings/binding.py index 45966eb..efe8c6a 100644 --- a/suds/bindings/binding.py +++ b/suds/bindings/binding.py @@ -88,7 +88,7 @@ def param_defs(self, method): @return: A collection of parameter definitions @rtype: [I{pdef},..] """ - raise Exception, 'not implemented' + raise Exception('not implemented') def get_message(self, method, args, kwargs): """ @@ -286,7 +286,7 @@ def bodycontent(self, method, args, kwargs): @return: The XML content for the @rtype: [L{Element},..] """ - raise Exception, 'not implemented' + raise Exception('not implemented') def headercontent(self, method): """ @@ -339,7 +339,7 @@ def replycontent(self, method, body): @return: The body content. @rtype: [L{Element},...] """ - raise Exception, 'not implemented' + raise Exception('not implemented') def body(self, content): """ diff --git a/suds/builder.py b/suds/builder.py index 9264749..a881609 100644 --- a/suds/builder.py +++ b/suds/builder.py @@ -34,7 +34,7 @@ def __init__(self, resolver): def build(self, name): """ build a an object for the specified typename as defined in the schema """ - if isinstance(name, basestring): + if isinstance(name, str): type = self.resolver.find(name) if type is None: raise TypeNotFound(name) diff --git a/suds/cache.py b/suds/cache.py index 91f0c0c..a31ac56 100644 --- a/suds/cache.py +++ b/suds/cache.py @@ -28,7 +28,7 @@ import os from tempfile import gettempdir as tmp try: - import cPickle as pickle + import pickle as pickle except Exception: import pickle @@ -136,7 +136,7 @@ def setduration(self, **duration): @type duration: {unit:value} """ if len(duration) == 1: - arg = duration.items()[0] + arg = list(duration.items())[0] if not arg[0] in self.units: raise Exception('must be: %s' % str(self.units)) self.duration = arg diff --git a/suds/client.py b/suds/client.py index 2a664fe..f8b6ceb 100644 --- a/suds/client.py +++ b/suds/client.py @@ -37,12 +37,12 @@ from suds.transport.https import HttpAuthenticated from suds.umx.basic import Basic as UmxBasic from suds.wsdl import Definitions -import sudsobject +from . import sudsobject -from cookielib import CookieJar +from http.cookiejar import CookieJar from copy import deepcopy -import httplib -from urlparse import urlparse +import http.client +from urllib.parse import urlparse from logging import getLogger log = getLogger(__name__) @@ -181,7 +181,7 @@ def __unicode__(self): if ( suds.__build__ ): s.append(' build: %s' % suds.__build__) for sd in self.sd: - s.append('\n\n%s' % unicode(sd)) + s.append('\n\n%s' % str(sd)) return ''.join(s) @@ -223,7 +223,7 @@ def create(self, name): else: try: result = self.builder.build(type) - except Exception, e: + except Exception as e: log.error("create '%s' failed", name, exc_info=True) raise BuildError(name, e) timer.stop() @@ -312,20 +312,20 @@ def __find(self, name): """ service = None if not len(self.__services): - raise Exception, 'No services defined' + raise Exception('No services defined') if isinstance(name, int): try: service = self.__services[name] name = service.name - except IndexError: - raise ServiceNotFound, 'at [%d]' % name + except IndexError as e: + raise ServiceNotFound('at [%d]' % name) else: for s in self.__services: if name == s.name: service = s break if service is None: - raise ServiceNotFound, name + raise ServiceNotFound(name) return PortSelector(self.__client, service.ports, name) def __ds(self): @@ -413,13 +413,13 @@ def __find(self, name): """ port = None if not len(self.__ports): - raise Exception, 'No ports defined: %s' % self.__qn + raise Exception('No ports defined: %s' % self.__qn) if isinstance(name, int): qn = '%s[%d]' % (self.__qn, name) try: port = self.__ports[name] - except IndexError: - raise PortNotFound, qn + except IndexError as e: + raise PortNotFound(qn) else: qn = '.'.join((self.__qn, name)) for p in self.__ports: @@ -427,7 +427,7 @@ def __find(self, name): port = p break if port is None: - raise PortNotFound, qn + raise PortNotFound(qn) qn = '.'.join((self.__qn, port.name)) return MethodSelector(self.__client, port.methods, qn) @@ -488,7 +488,7 @@ def __getitem__(self, name): m = self.__methods.get(name) if m is None: qn = '.'.join((self.__qn, name)) - raise MethodNotFound, qn + raise MethodNotFound(qn) return Method(self.__client, m) @@ -519,10 +519,10 @@ def __call__(self, *args, **kwargs): client = clientclass(self.client, self.method) try: return client.invoke(args, kwargs) - except WebFault, e: + except WebFault as e: if self.faults(): raise - return (httplib.INTERNAL_SERVER_ERROR, e) + return (http.client.INTERNAL_SERVER_ERROR, e) def faults(self): """ get faults option """ @@ -613,7 +613,7 @@ def send(self, soapenv): reply = self.options.transport.send(request) timer.stop() metrics.log.debug('waited %s on server reply', timer) - except TransportError, e: + except TransportError as e: content = e.fp and e.fp.read() or '' return self.process_reply(reply=content, status=e.httpcode, description=tostr(e), original_soapenv=original_soapenv) @@ -623,12 +623,12 @@ def send(self, soapenv): def process_reply(self, reply, status=None, description=None, original_soapenv=None): if status is None: - status = httplib.OK - if status in (httplib.ACCEPTED, httplib.NO_CONTENT): + status = http.client.OK + if status in (http.client.ACCEPTED, http.client.NO_CONTENT): return failed = True try: - if status == httplib.OK: + if status == http.client.OK: log.debug('HTTP succeeded:\n%s', reply) else: log.debug('HTTP failed - %d - %s:\n%s', status, description, @@ -657,19 +657,19 @@ def process_reply(self, reply, status=None, description=None, # An INSTANCE MUST use a "500 Internal Server Error" HTTP status # code if the response message is a SOAP Fault. replyroot = None - if status in (httplib.OK, httplib.INTERNAL_SERVER_ERROR): + if status in (http.client.OK, http.client.INTERNAL_SERVER_ERROR): replyroot = _parse(reply) plugins.message.parsed(reply=replyroot) fault = self.get_fault(replyroot) if fault: - if status != httplib.INTERNAL_SERVER_ERROR: + if status != http.client.INTERNAL_SERVER_ERROR: log.warn("Web service reported a SOAP processing " "fault using an unexpected HTTP status code %d. " "Reporting as an internal server error.", status) if self.options.faults: raise WebFault(fault, replyroot) - return (httplib.INTERNAL_SERVER_ERROR, fault) - if status != httplib.OK: + return (http.client.INTERNAL_SERVER_ERROR, fault) + if status != http.client.OK: if self.options.faults: # (todo) # Use a more specific exception class here. @@ -688,7 +688,7 @@ def process_reply(self, reply, status=None, description=None, failed = False if self.options.faults: return result - return (httplib.OK, result) + return (http.client.OK, result) finally: if failed and original_soapenv: log.error(original_soapenv) @@ -717,7 +717,7 @@ def headers(self): @rtype: dict """ action = self.method.soap.action - if isinstance(action, unicode): + if isinstance(action, str): action = action.encode('utf-8') stock = {'Content-Type':'text/xml; charset=utf-8', 'SOAPAction':action} result = dict(stock, **self.options.headers) @@ -742,7 +742,7 @@ class SimClient(SoapClient): @classmethod def simulation(cls, kwargs): """ get whether loopback has been specified in the I{kwargs}. """ - return kwargs.has_key(SimClient.injkey) + return SimClient.injkey in kwargs def invoke(self, args, kwargs): """ diff --git a/suds/mx/__init__.py b/suds/mx/__init__.py index dc8154b..be26f3b 100644 --- a/suds/mx/__init__.py +++ b/suds/mx/__init__.py @@ -43,7 +43,7 @@ def __init__(self, tag=None, value=None, **kwargs): Object.__init__(self) self.tag = tag self.value = value - for k,v in kwargs.items(): + for k,v in list(kwargs.items()): setattr(self, k, v) def __getattr__(self, name): @@ -52,8 +52,7 @@ def __getattr__(self, name): v = None setattr(self, name, v) else: - raise AttributeError, \ - 'Content has no attribute %s' % name + raise AttributeError('Content has no attribute %s' % name) else: v = self.__dict__[name] return v diff --git a/suds/mx/appender.py b/suds/mx/appender.py index e60dc79..8e50a06 100644 --- a/suds/mx/appender.py +++ b/suds/mx/appender.py @@ -208,7 +208,7 @@ def append(self, parent, content): child = self.node(content) child.setText(p.get()) parent.append(child) - for item in p.items(): + for item in list(p.items()): cont = Content(tag=item[0], value=item[1]) Appender.append(self, child, cont) @@ -240,7 +240,7 @@ def append(self, parent, content): return child = self.node(content) parent.append(child) - for item in d.items(): + for item in list(d.items()): cont = Content(tag=item[0], value=item[1]) Appender.append(self, child, cont) diff --git a/suds/mx/literal.py b/suds/mx/literal.py index 44f38a3..1e46624 100644 --- a/suds/mx/literal.py +++ b/suds/mx/literal.py @@ -131,9 +131,8 @@ def end(self, parent, content): if current == content.type: self.resolver.pop() else: - raise Exception, \ - 'content (end) mismatch: top=(%s) cont=(%s)' % \ - (current, content) + raise Exception('content (end) mismatch: top=(%s) cont=(%s)' % \ + (current, content)) def node(self, content): # diff --git a/suds/mx/typer.py b/suds/mx/typer.py index aa52ad3..9a6c145 100644 --- a/suds/mx/typer.py +++ b/suds/mx/typer.py @@ -33,10 +33,10 @@ class Typer: types = { int : ('int', NS.xsdns), - long : ('long', NS.xsdns), + int : ('long', NS.xsdns), float : ('float', NS.xsdns), str : ('string', NS.xsdns), - unicode : ('string', NS.xsdns), + str : ('string', NS.xsdns), Text : ('string', NS.xsdns), bool : ('boolean', NS.xsdns), } diff --git a/suds/options.py b/suds/options.py index de49326..9fc6e15 100644 --- a/suds/options.py +++ b/suds/options.py @@ -132,9 +132,9 @@ def __init__(self, **kwargs): Definition('extraArgumentErrors', bool, True), Definition('faults', bool, True), Definition('transport', Transport, None, TpLinker()), - Definition('service', (int, basestring), None), - Definition('port', (int, basestring), None), - Definition('location', basestring, None), + Definition('service', (int, str), None), + Definition('port', (int, str), None), + Definition('location', str, None), Definition('soapheaders', (), ()), Definition('wsse', Security, None), Definition('doctor', Doctor, None), diff --git a/suds/plugin.py b/suds/plugin.py index 0616568..fc23961 100644 --- a/suds/plugin.py +++ b/suds/plugin.py @@ -22,6 +22,7 @@ from suds import * from logging import getLogger +import collections log = getLogger(__name__) @@ -205,7 +206,7 @@ def __getattr__(self, name): plugins.append(p) return PluginDomain(ctx, plugins) else: - raise Exception, 'plugin domain (%s), invalid' % name + raise Exception('plugin domain (%s), invalid' % name) class PluginDomain: @@ -250,8 +251,8 @@ def __call__(self, **kwargs): for plugin in self.domain.plugins: try: method = getattr(plugin, self.name, None) - if method and callable(method): + if method and isinstance(method, collections.Callable): method(ctx) - except Exception, pe: + except Exception as pe: log.exception(pe) return ctx diff --git a/suds/properties.py b/suds/properties.py index 7103232..23ec820 100644 --- a/suds/properties.py +++ b/suds/properties.py @@ -67,23 +67,23 @@ def validate(self, pA, pB): """ if pA in pB.links or \ pB in pA.links: - raise Exception, 'Already linked' + raise Exception('Already linked') dA = pA.domains() dB = pB.domains() for d in dA: if d in dB: - raise Exception, 'Duplicate domain "%s" found' % d + raise Exception('Duplicate domain "%s" found' % d) for d in dB: if d in dA: - raise Exception, 'Duplicate domain "%s" found' % d - kA = pA.keys() - kB = pB.keys() + raise Exception('Duplicate domain "%s" found' % d) + kA = list(pA.keys()) + kB = list(pB.keys()) for k in kA: if k in kB: - raise Exception, 'Duplicate key %s found' % k + raise Exception('Duplicate key %s found' % k) for k in kB: if k in kA: - raise Exception, 'Duplicate key %s found' % k + raise Exception('Duplicate key %s found' % k) return self def teardown(self): @@ -177,7 +177,7 @@ def validate(self, value): if len(self.classes) and \ not isinstance(value, self.classes): msg = '"%s" must be: %s' % (self.name, self.classes) - raise AttributeError,msg + raise AttributeError(msg) def __repr__(self): @@ -251,7 +251,7 @@ def update(self, other): """ if isinstance(other, Properties): other = other.defined - for n,v in other.items(): + for n,v in list(other.items()): self.set(n, v) return self @@ -372,7 +372,7 @@ def keys(self, history=None): history = [] history.append(self) keys = set() - keys.update(self.definitions.keys()) + keys.update(list(self.definitions.keys())) for x in self.links: if x in history: continue @@ -408,7 +408,7 @@ def prime(self): @return: self @rtype: L{Properties} """ - for d in self.definitions.values(): + for d in list(self.definitions.values()): self.defined[d.name] = d.default return self @@ -434,10 +434,10 @@ def __get(self, name, *df): def str(self, history): s = [] s.append('Definitions:') - for d in self.definitions.values(): + for d in list(self.definitions.values()): s.append('\t%s' % repr(d)) s.append('Content:') - for d in self.defined.items(): + for d in list(self.defined.items()): s.append('\t%s' % str(d)) if self not in history: history.append(self) diff --git a/suds/sax/__init__.py b/suds/sax/__init__.py index bef7825..d249533 100644 --- a/suds/sax/__init__.py +++ b/suds/sax/__init__.py @@ -45,7 +45,7 @@ def splitPrefix(name): @return: A tuple containing the (2) parts of I{name} @rtype: (I{prefix}, I{name}) """ - if isinstance(name, basestring) and ':' in name: + if isinstance(name, str) and ':' in name: return tuple(name.split(':', 1)) return None, name diff --git a/suds/sax/attribute.py b/suds/sax/attribute.py index c775e20..a655430 100644 --- a/suds/sax/attribute.py +++ b/suds/sax/attribute.py @@ -171,4 +171,4 @@ def __unicode__(self): v = self.value.escape() else: v = self.value - return u'%s="%s"' % (n, v) + return '%s="%s"' % (n, v) diff --git a/suds/sax/date.py b/suds/sax/date.py index ac534c4..8ad4346 100644 --- a/suds/sax/date.py +++ b/suds/sax/date.py @@ -65,7 +65,7 @@ def __init__(self, value): self.value = value.date() elif isinstance(value, datetime.date): self.value = value - elif isinstance(value, basestring): + elif isinstance(value, str): self.value = self.__parse(value) else: raise ValueError("invalid type for Date(): %s" % type(value)) @@ -115,7 +115,7 @@ def __init__(self, value): """ if isinstance(value, datetime.datetime): self.value = value - elif isinstance(value, basestring): + elif isinstance(value, str): self.value = self.__parse(value) else: raise ValueError("invalid type for DateTime(): %s" % type(value)) @@ -173,7 +173,7 @@ def __init__(self, value): """ if isinstance(value, datetime.time): self.value = value - elif isinstance(value, basestring): + elif isinstance(value, str): self.value = self.__parse(value) else: raise ValueError("invalid type for Time(): %s" % type(value)) diff --git a/suds/sax/document.py b/suds/sax/document.py index 8697e08..d666e31 100644 --- a/suds/sax/document.py +++ b/suds/sax/document.py @@ -52,7 +52,7 @@ def append(self, node): the document root element. @type node: (L{Element}|str|None) """ - if isinstance(node, basestring): + if isinstance(node, str): self.__root = Element(node) return if isinstance(node, Element): diff --git a/suds/sax/element.py b/suds/sax/element.py index 502d90d..a75811e 100644 --- a/suds/sax/element.py +++ b/suds/sax/element.py @@ -158,7 +158,7 @@ def clone(self, parent=None): root.append(a.clone(self)) for c in self.children: root.append(c.clone(self)) - for item in self.nsprefixes.items(): + for item in list(self.nsprefixes.items()): root.addPrefix(item[0], item[1]) return root @@ -567,11 +567,11 @@ def findPrefix(self, uri, default=None): @return: A mapped prefix. @rtype: basestring """ - for item in self.nsprefixes.items(): + for item in list(self.nsprefixes.items()): if item[1] == uri: prefix = item[0] return prefix - for item in self.specialprefixes.items(): + for item in list(self.specialprefixes.items()): if item[1] == uri: prefix = item[0] return prefix @@ -592,11 +592,11 @@ def findPrefixes(self, uri, match='eq'): @rtype: [basestring,...] """ result = [] - for item in self.nsprefixes.items(): + for item in list(self.nsprefixes.items()): if self.matcher[match](item[1], uri): prefix = item[0] result.append(prefix) - for item in self.specialprefixes.items(): + for item in list(self.specialprefixes.items()): if self.matcher[match](item[1], uri): prefix = item[0] result.append(prefix) @@ -617,7 +617,7 @@ def promotePrefixes(self): c.promotePrefixes() if self.parent is None: return - for p,u in self.nsprefixes.items(): + for p,u in list(self.nsprefixes.items()): if p in self.parent.nsprefixes: pu = self.parent.nsprefixes[p] if pu == u: @@ -730,7 +730,7 @@ def str(self, indent=0): result = [] result.append('%s<%s' % (tab, self.qname())) result.append(self.nsdeclarations()) - for a in [unicode(a) for a in self.attributes]: + for a in [str(a) for a in self.attributes]: result.append(' %s' % a) if self.isempty(): result.append('/>') @@ -755,7 +755,7 @@ def plain(self): result = [] result.append('<%s' % self.qname()) result.append(self.nsdeclarations()) - for a in [unicode(a) for a in self.attributes]: + for a in [str(a) for a in self.attributes]: result.append(' %s' % a) if self.isempty(): result.append('/>') @@ -785,7 +785,7 @@ def nsdeclarations(self): if self.expns is not None: d = ' xmlns="%s"' % self.expns s.append(d) - for item in self.nsprefixes.items(): + for item in list(self.nsprefixes.items()): (p,u) = item if self.parent is not None: ns = self.parent.resolvePrefix(p) @@ -884,13 +884,13 @@ def __len__(self): return len(self.children) def __getitem__(self, index): - if isinstance(index, basestring): + if isinstance(index, str): return self.get(index) if index < len(self.children): return self.children[index] def __setitem__(self, index, value): - if isinstance(index, basestring): + if isinstance(index, str): self.set(index, value) else: if index < len(self.children) and isinstance(value, Element): @@ -927,7 +927,7 @@ def __init__(self, parent): self.pos = 0 self.children = parent.children - def next(self): + def __next__(self): """ Get the next child. @return: The next child. @@ -999,7 +999,7 @@ def pset(self, n): @rtype: set """ s = set() - for ns in n.nsprefixes.items(): + for ns in list(n.nsprefixes.items()): if self.permit(ns): s.add(ns[1]) return s @@ -1078,7 +1078,7 @@ def refitMappings(self): for n in self.branch: n.nsprefixes = {} n = self.node - for u, p in self.prefixes.items(): + for u, p in list(self.prefixes.items()): n.addPrefix(p, u) def permit(self, ns): diff --git a/suds/sax/enc.py b/suds/sax/enc.py index d15988d..3787037 100644 --- a/suds/sax/enc.py +++ b/suds/sax/enc.py @@ -46,7 +46,7 @@ def needsEncoding(self, s): @return: True if needs encoding. @rtype: boolean """ - if isinstance(s, basestring): + if isinstance(s, str): for c in self.special: if c in s: return True @@ -60,7 +60,7 @@ def encode(self, s): @return: The encoded string. @rtype: str """ - if isinstance(s, basestring) and self.needsEncoding(s): + if isinstance(s, str) and self.needsEncoding(s): for x in self.encodings: s = re.sub(x[0], x[1], s) return s @@ -73,7 +73,7 @@ def decode(self, s): @return: The decoded string. @rtype: str """ - if isinstance(s, basestring) and '&' in s: + if isinstance(s, str) and '&' in s: for x in self.decodings: s = s.replace(x[0], x[1]) return s diff --git a/suds/sax/parser.py b/suds/sax/parser.py index 2f48b3b..bc4548c 100644 --- a/suds/sax/parser.py +++ b/suds/sax/parser.py @@ -47,10 +47,10 @@ def __init__(self): def startElement(self, name, attrs): top = self.top() - node = Element(unicode(name)) + node = Element(str(name)) for a in attrs.getNames(): - n = unicode(a) - v = unicode(attrs.getValue(a)) + n = str(a) + v = str(attrs.getValue(a)) attribute = Attribute(n,v) if self.mapPrefix(node, attribute): continue @@ -63,19 +63,19 @@ def mapPrefix(self, node, attribute): skip = False if attribute.name == 'xmlns': if len(attribute.value): - node.expns = unicode(attribute.value) + node.expns = str(attribute.value) skip = True elif attribute.prefix == 'xmlns': prefix = attribute.name - node.nsprefixes[prefix] = unicode(attribute.value) + node.nsprefixes[prefix] = str(attribute.value) skip = True return skip def endElement(self, name): - name = unicode(name) + name = str(name) current = self.top() if len(current.charbuffer): - current.text = Text(u''.join(current.charbuffer)) + current.text = Text(''.join(current.charbuffer)) del current.charbuffer if len(current): current.trim() @@ -85,7 +85,7 @@ def endElement(self, name): raise Exception('malformed document') def characters(self, content): - text = unicode(content) + text = str(content) node = self.top() node.charbuffer.append(text) diff --git a/suds/sax/text.py b/suds/sax/text.py index ebdbc62..14b6dca 100644 --- a/suds/sax/text.py +++ b/suds/sax/text.py @@ -22,7 +22,7 @@ from suds.sax import * -class Text(unicode): +class Text(str): """ An XML text object used to represent text content. @ivar lang: The (optional) language flag. @@ -75,7 +75,7 @@ def trim(self): return Text(post, lang=self.lang, escaped=self.escaped) def __add__(self, other): - joined = u''.join((self, other)) + joined = ''.join((self, other)) result = Text(joined, lang=self.lang, escaped=self.escaped) if isinstance(other, Text): result.escaped = self.escaped or other.escaped @@ -112,5 +112,5 @@ def unescape(self): return self def __add__(self, other): - joined = u''.join((self, other)) + joined = ''.join((self, other)) return Raw(joined, lang=self.lang) diff --git a/suds/servicedefinition.py b/suds/servicedefinition.py index 19ed243..6418d59 100644 --- a/suds/servicedefinition.py +++ b/suds/servicedefinition.py @@ -80,7 +80,7 @@ def addports(self): timer.start() for port in self.service.ports: p = self.findport(port) - for op in port.binding.operations.values(): + for op in list(port.binding.operations.values()): m = p[0].method(op.name) binding = m.binding.input method = (m.name, binding.param_defs(m)) @@ -138,7 +138,7 @@ def paramtypes(self): def publictypes(self): """Get all public types.""" - for t in self.wsdl.schema.types.values(): + for t in list(self.wsdl.schema.types.values()): if t in self.params: continue if t in self.types: continue item = (t, t) @@ -152,7 +152,7 @@ def nextprefix(self): WSDL document. """ used = [ns[0] for ns in self.prefixes] - used += [ns[0] for ns in self.wsdl.root.nsprefixes.items()] + used += [ns[0] for ns in list(self.wsdl.root.nsprefixes.items())] for n in range(0,1024): p = 'ns%d'%n if p not in used: @@ -235,6 +235,6 @@ def description(self): def __unicode__(self): try: return self.description() - except Exception, e: + except Exception as e: log.exception(e) return tostr(e) diff --git a/suds/serviceproxy.py b/suds/serviceproxy.py index 1b6a62f..f1da926 100644 --- a/suds/serviceproxy.py +++ b/suds/serviceproxy.py @@ -70,7 +70,7 @@ def get_enum(self, name): return self.__client__.factory.create(name) def __unicode__(self): - return unicode(self.__client__) + return str(self.__client__) def __getattr__(self, name): builtin = name.startswith('__') and name.endswith('__') diff --git a/suds/store.py b/suds/store.py index 58ebf4a..ab0b0bd 100644 --- a/suds/store.py +++ b/suds/store.py @@ -566,7 +566,7 @@ def open(self, url): protocol, location = self.__split(url) content = self.__find(location) if protocol == 'suds' and content is None: - raise Exception, 'location "%s" not in document store' % location + raise Exception('location "%s" not in document store' % location) return content def __find(self, location): diff --git a/suds/sudsobject.py b/suds/sudsobject.py index 9894009..9489c87 100644 --- a/suds/sudsobject.py +++ b/suds/sudsobject.py @@ -121,7 +121,7 @@ def object(cls, classname=None, dict={}): inst = subclass() else: inst = Object() - for a in dict.items(): + for a in list(dict.items()): setattr(inst, a[0], a[1]) return inst @@ -156,7 +156,7 @@ def __delattr__(self, name): self.__keylist__.remove(name) except Exception: cls = self.__class__.__name__ - raise AttributeError, "%s has no attribute '%s'" % (cls, name) + raise AttributeError("%s has no attribute '%s'" % (cls, name)) def __getitem__(self, name): if isinstance(name, int): @@ -189,7 +189,7 @@ def __init__(self, sobject): self.keylist = self.__keylist(sobject) self.index = 0 - def next(self): + def __next__(self): keylist = self.keylist nkeys = len(self.keylist) while self.index < nkeys: @@ -278,7 +278,7 @@ def process(self, object, h, n=0, nl=False): if len(object) == 0: return "" return self.print_collection(object, h, n + 2) - if isinstance(object, basestring): + if isinstance(object, str): return '"%s"' % (tostr(object),) return "%s" % (tostr(object),) @@ -333,7 +333,7 @@ def print_dictionary(self, d, h, n, nl=False): s.append("\n") s.append(self.indent(n)) s.append("{") - for item in d.items(): + for item in list(d.items()): s.append("\n") s.append(self.indent(n+1)) if isinstance(item[1], (list,tuple)): diff --git a/suds/transport/__init__.py b/suds/transport/__init__.py index 6ffea2d..e5f7551 100644 --- a/suds/transport/__init__.py +++ b/suds/transport/__init__.py @@ -54,7 +54,7 @@ def __init__(self, url, message=None): self.message = message def __unicode__(self): - return u"""\ + return """\ URL: %s HEADERS: %s MESSAGE: @@ -89,7 +89,7 @@ def __init__(self, code, headers, message): self.message = message def __unicode__(self): - return u"""\ + return """\ CODE: %s HEADERS: %s MESSAGE: diff --git a/suds/transport/http.py b/suds/transport/http.py index c3f2512..01e08f8 100644 --- a/suds/transport/http.py +++ b/suds/transport/http.py @@ -22,12 +22,12 @@ from suds.transport import * import base64 -from cookielib import CookieJar -import httplib +from http.cookiejar import CookieJar +import http.client import socket import sys -import urllib2 -from urlparse import urlparse +import urllib.request, urllib.error, urllib.parse +from urllib.parse import urlparse from logging import getLogger log = getLogger(__name__) @@ -62,10 +62,10 @@ def open(self, request): try: url = self.__get_request_url(request) log.debug('opening (%s)', url) - u2request = urllib2.Request(url) + u2request = urllib.request.Request(url) self.proxy = self.options.proxy return self.u2open(u2request) - except urllib2.HTTPError, e: + except urllib.error.HTTPError as e: raise TransportError(str(e), e.code, e.fp) def send(self, request): @@ -74,7 +74,7 @@ def send(self, request): msg = request.message headers = request.headers try: - u2request = urllib2.Request(url, msg, headers) + u2request = urllib.request.Request(url, msg, headers) self.addcookies(u2request) self.proxy = self.options.proxy request.headers.update(u2request.headers) @@ -85,10 +85,10 @@ def send(self, request): headers = fp.headers.dict else: headers = fp.headers - result = Reply(httplib.OK, headers, fp.read()) + result = Reply(http.client.OK, headers, fp.read()) log.debug('received:\n%s', result) - except urllib2.HTTPError, e: - if e.code in (httplib.ACCEPTED, httplib.NO_CONTENT): + except urllib.error.HTTPError as e: + if e.code in (http.client.ACCEPTED, http.client.NO_CONTENT): result = None else: raise TransportError(e.msg, e.code, e.fp) @@ -140,7 +140,7 @@ def u2opener(self): """ if self.urlopener is None: - return urllib2.build_opener(*self.u2handlers()) + return urllib.request.build_opener(*self.u2handlers()) return self.urlopener def u2handlers(self): @@ -152,7 +152,7 @@ def u2handlers(self): """ handlers = [] - handlers.append(urllib2.ProxyHandler(self.proxy)) + handlers.append(urllib.request.ProxyHandler(self.proxy)) return handlers def u2ver(self): @@ -165,7 +165,7 @@ def u2ver(self): try: part = urllib2.__version__.split('.', 1) return float('.'.join(part)) - except Exception, e: + except Exception as e: log.exception(e) return 0 diff --git a/suds/transport/https.py b/suds/transport/https.py index 080315a..718b275 100644 --- a/suds/transport/https.py +++ b/suds/transport/https.py @@ -21,7 +21,7 @@ from suds.transport import * from suds.transport.http import HttpTransport -import urllib2 +import urllib.request, urllib.error, urllib.parse class HttpAuthenticated(HttpTransport): @@ -55,7 +55,7 @@ def __init__(self, **kwargs): """ HttpTransport.__init__(self, **kwargs) - self.pm = urllib2.HTTPPasswordMgrWithDefaultRealm() + self.pm = urllib.request.HTTPPasswordMgrWithDefaultRealm() def open(self, request): self.addcredentials(request) @@ -77,7 +77,7 @@ def credentials(self): def u2handlers(self): handlers = HttpTransport.u2handlers(self) - handlers.append(urllib2.HTTPBasicAuthHandler(self.pm)) + handlers.append(urllib.request.HTTPBasicAuthHandler(self.pm)) return handlers diff --git a/suds/transport/options.py b/suds/transport/options.py index c4c1552..70d8b40 100644 --- a/suds/transport/options.py +++ b/suds/transport/options.py @@ -53,6 +53,6 @@ def __init__(self, **kwargs): Definition('proxy', dict, {}), Definition('timeout', (int,float), 90), Definition('headers', dict, {}), - Definition('username', basestring, None), - Definition('password', basestring, None)] + Definition('username', str, None), + Definition('password', str, None)] Skin.__init__(self, domain, definitions, kwargs) diff --git a/suds/umx/__init__.py b/suds/umx/__init__.py index f672320..e94109b 100644 --- a/suds/umx/__init__.py +++ b/suds/umx/__init__.py @@ -40,7 +40,7 @@ def __init__(self, node, **kwargs): self.node = node self.data = None self.text = None - for k,v in kwargs.items(): + for k,v in list(kwargs.items()): setattr(self, k, v) def __getattr__(self, name): @@ -49,8 +49,7 @@ def __getattr__(self, name): v = None setattr(self, name, v) else: - raise AttributeError, \ - 'Content has no attribute %s' % name + raise AttributeError('Content has no attribute %s' % name) else: v = self.__dict__[name] return v diff --git a/suds/umx/core.py b/suds/umx/core.py index 9ffa3bd..9a1d0f3 100644 --- a/suds/umx/core.py +++ b/suds/umx/core.py @@ -95,7 +95,7 @@ def postprocess(self, content): return None else: return Text('', lang=lang) - if isinstance(content.text, basestring): + if isinstance(content.text, str): return Text(content.text, lang=lang) else: return content.text diff --git a/suds/wsdl.py b/suds/wsdl.py index 8a5e558..f652776 100644 --- a/suds/wsdl.py +++ b/suds/wsdl.py @@ -31,8 +31,8 @@ from suds.reader import DocumentReader import re -import soaparray -from urlparse import urljoin +from . import soaparray +from urllib.parse import urljoin from logging import getLogger log = getLogger(__name__) @@ -232,7 +232,7 @@ def add_methods(self, service): for p in service.ports: binding = p.binding ptype = p.binding.type - operations = p.binding.type.operations.values() + operations = list(p.binding.type.operations.values()) for name in [op.name for op in operations]: m = Facade('Method') m.name = name @@ -249,8 +249,8 @@ def add_methods(self, service): def set_wrapped(self): """ set (wrapped|bare) flag on messages """ - for b in self.bindings.values(): - for op in b.operations.values(): + for b in list(self.bindings.values()): + for op in list(b.operations.values()): for body in (op.soap.input.body, op.soap.output.body): body.wrapped = False if not self.options.unwrap: @@ -482,7 +482,7 @@ def resolve(self, definitions): @param definitions: A definitions object. @type definitions: L{Definitions} """ - for op in self.operations.values(): + for op in list(self.operations.values()): if op.input is None: op.input = Message(Element('no-input'), definitions) else: @@ -505,7 +505,7 @@ def resolve(self, definitions): qref = qualify(f.message, self.root, definitions.tns) msg = definitions.messages.get(qref) if msg is None: - raise Exception, "msg '%s', not-found" % f.message + raise Exception("msg '%s', not-found" % f.message) f.message = msg def operation(self, name): @@ -519,7 +519,7 @@ def operation(self, name): """ try: return self.operations[name] - except Exception, e: + except Exception as e: raise MethodNotFound(name) def __gt__(self, other): @@ -654,7 +654,7 @@ def resolve(self, definitions): @type definitions: L{Definitions} """ self.resolveport(definitions) - for op in self.operations.values(): + for op in list(self.operations.values()): self.resolvesoapbody(definitions, op) self.resolveheaders(definitions, op) self.resolvefaults(definitions, op) @@ -683,8 +683,7 @@ def resolvesoapbody(self, definitions, op): """ ptop = self.type.operation(op.name) if ptop is None: - raise Exception, \ - "operation '%s' not defined in portType" % op.name + raise Exception("operation '%s' not defined in portType" % op.name) soap = op.soap parts = soap.input.body.parts if len(parts): @@ -720,15 +719,14 @@ def resolveheaders(self, definitions, op): ref = qualify(mn, self.root, definitions.tns) message = definitions.messages.get(ref) if message is None: - raise Exception, "message'%s', not-found" % mn + raise Exception("message'%s', not-found" % mn) pn = header.part for p in message.parts: if p.name == pn: header.part = p break if pn == header.part: - raise Exception, \ - "message '%s' has not part named '%s'" % (ref, pn) + raise Exception("message '%s' has not part named '%s'" % (ref, pn)) def resolvefaults(self, definitions, op): """ @@ -741,8 +739,7 @@ def resolvefaults(self, definitions, op): """ ptop = self.type.operation(op.name) if ptop is None: - raise Exception, \ - "operation '%s' not defined in portType" % op.name + raise Exception("operation '%s' not defined in portType" % op.name) soap = op.soap for fault in soap.faults: for f in ptop.faults: @@ -751,8 +748,7 @@ def resolvefaults(self, definitions, op): continue if hasattr(fault, 'parts'): continue - raise Exception, \ - "fault '%s' not defined in portType '%s'" % (fault.name, self.type.name) + raise Exception("fault '%s' not defined in portType '%s'" % (fault.name, self.type.name)) def operation(self, name): """ @@ -854,7 +850,7 @@ def setlocation(self, url, names=None): @type names: [str,..] """ for p in self.ports: - for m in p.methods.values(): + for m in list(p.methods.values()): if names is None or m.name in names: m.location = url diff --git a/suds/xsd/__init__.py b/suds/xsd/__init__.py index 5c5dd8c..cf48a2a 100644 --- a/suds/xsd/__init__.py +++ b/suds/xsd/__init__.py @@ -59,8 +59,8 @@ def isqref(object): return (\ isinstance(object, tuple) and \ len(object) == 2 and \ - isinstance(object[0], basestring) and \ - isinstance(object[1], basestring)) + isinstance(object[0], str) and \ + isinstance(object[1], str)) class Filter: diff --git a/suds/xsd/deplist.py b/suds/xsd/deplist.py index b686675..81d82bc 100644 --- a/suds/xsd/deplist.py +++ b/suds/xsd/deplist.py @@ -77,7 +77,7 @@ def sort(self): while len(self.stack): try: top = self.top() - ref = top[1].next() + ref = next(top[1]) refd = self.index.get(ref) if refd is None: log.debug('"%s" not found, skipped', Repr(ref)) @@ -137,4 +137,4 @@ def pop(self): x = ('x', ()) L = DepList() L.add(c, e, d, b, f, a, x) - print [x[0] for x in L.sort()] + print([x[0] for x in L.sort()]) diff --git a/suds/xsd/query.py b/suds/xsd/query.py index 62929c9..360dca6 100644 --- a/suds/xsd/query.py +++ b/suds/xsd/query.py @@ -54,7 +54,7 @@ def execute(self, schema): @return: The item matching the search criteria. @rtype: L{sxbase.SchemaObject} """ - raise Exception, 'not-implemented by subclass' + raise Exception('not-implemented by subclass') def filter(self, result): """ diff --git a/suds/xsd/schema.py b/suds/xsd/schema.py index 33a0948..4f9dfe5 100644 --- a/suds/xsd/schema.py +++ b/suds/xsd/schema.py @@ -104,7 +104,7 @@ def autoblend(self): @return: self @rtype: L{SchemaCollection} """ - namespaces = self.namespaces.keys() + namespaces = list(self.namespaces.keys()) for s in self.children: for ns in namespaces: tns = s.root.get('targetNamespace') @@ -261,27 +261,27 @@ def merge(self, schema): @returns: self @rtype: L{Schema} """ - for item in schema.attributes.items(): + for item in list(schema.attributes.items()): if item[0] in self.attributes: continue self.all.append(item[1]) self.attributes[item[0]] = item[1] - for item in schema.elements.items(): + for item in list(schema.elements.items()): if item[0] in self.elements: continue self.all.append(item[1]) self.elements[item[0]] = item[1] - for item in schema.types.items(): + for item in list(schema.types.items()): if item[0] in self.types: continue self.all.append(item[1]) self.types[item[0]] = item[1] - for item in schema.groups.items(): + for item in list(schema.groups.items()): if item[0] in self.groups: continue self.all.append(item[1]) self.groups[item[0]] = item[1] - for item in schema.agrps.items(): + for item in list(schema.agrps.items()): if item[0] in self.agrps: continue self.all.append(item[1]) diff --git a/suds/xsd/sxbase.py b/suds/xsd/sxbase.py index 28ab814..38ce14a 100644 --- a/suds/xsd/sxbase.py +++ b/suds/xsd/sxbase.py @@ -463,7 +463,7 @@ def description(self): return () def __unicode__(self): - return unicode(self.str()) + return str(self.str()) def __repr__(self): s = [] @@ -520,7 +520,7 @@ def __init__(self, sx): self.items = sx.rawchildren self.index = 0 - def next(self): + def __next__(self): """ Get the I{next} item in the frame's collection. @return: The next item or None @@ -571,7 +571,7 @@ def top(self): else: raise StopIteration() - def next(self): + def __next__(self): """ Get the next item. @return: A tuple: the next (child, ancestry). @@ -580,15 +580,15 @@ def next(self): """ frame = self.top() while True: - result = frame.next() + result = next(frame) if result is None: self.pop() - return self.next() + return next(self) if isinstance(result, Content): ancestry = [f.sx for f in self.stack] return result, ancestry self.push(result) - return self.next() + return next(self) def __iter__(self): return self diff --git a/suds/xsd/sxbasic.py b/suds/xsd/sxbasic.py index 1f55fd9..e2b0849 100644 --- a/suds/xsd/sxbasic.py +++ b/suds/xsd/sxbasic.py @@ -26,7 +26,7 @@ from suds.sax import Namespace from suds.transport import TransportError from suds.reader import DocumentReader -from urlparse import urljoin +from urllib.parse import urljoin from logging import getLogger log = getLogger(__name__) @@ -667,7 +667,7 @@ def __applytns(self, root): root.set(TNS, tns) else: if self.schema.tns[1] != tns: - raise Exception, '%s mismatch' % TNS + raise Exception('%s mismatch' % TNS) def description(self): diff --git a/suds/xsd/sxbuiltin.py b/suds/xsd/sxbuiltin.py index 3fc82aa..2cc1d33 100644 --- a/suds/xsd/sxbuiltin.py +++ b/suds/xsd/sxbuiltin.py @@ -62,7 +62,7 @@ class XBoolean(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring): + if isinstance(value, str): return XBoolean.translation[0].get(value) else: if isinstance(value, (bool, int)): @@ -78,7 +78,7 @@ class XInteger(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring) and len(value): + if isinstance(value, str) and len(value): return int(value) else: if isinstance(value, int): @@ -94,10 +94,10 @@ class XLong(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring) and len(value): - return long(value) + if isinstance(value, str) and len(value): + return int(value) else: - if isinstance(value, (int, long)): + if isinstance(value, int): return str(value) return value @@ -110,7 +110,7 @@ class XFloat(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring) and len(value): + if isinstance(value, str) and len(value): return float(value) else: if isinstance(value, float): @@ -126,7 +126,7 @@ class XDate(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring) and len(value): + if isinstance(value, str) and len(value): return Date(value).value else: if isinstance(value, dt.date): @@ -142,7 +142,7 @@ class XTime(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring) and len(value): + if isinstance(value, str) and len(value): return Time(value).value else: if isinstance(value, dt.time): @@ -158,7 +158,7 @@ class XDateTime(XBuiltin): @staticmethod def translate(value, topython=True): if topython: - if isinstance(value, basestring) and len(value): + if isinstance(value, str) and len(value): return DateTime(value).value else: if isinstance(value, dt.datetime): From 8d19a7557ebabf0cbd3d677f41154594dc5e937e Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 12:15:10 +0530 Subject: [PATCH 02/66] Tab and spaces mixing is now removed. --- mgui/biomodelsclient.py | 30 +++++++++++++++--------------- mgui/defaults.py | 2 +- mgui/mtree.py | 28 ++++++++++++++-------------- mgui/plugins/buildkkit.py | 8 ++++---- mgui/plugins/default.py | 2 +- setup.py | 8 ++++---- 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/mgui/biomodelsclient.py b/mgui/biomodelsclient.py index b9e2ddf..1585ab7 100644 --- a/mgui/biomodelsclient.py +++ b/mgui/biomodelsclient.py @@ -67,20 +67,20 @@ class HttpTransport(SudsHttpTransport): """HttpTransport which properly obeys the ``*_proxy`` environment variables.""" def u2handlers(self): - return [] + return [] ''' class BioModelsClient(Client): def __init__(self, WSDL_URI=BIOMODELS_WSDL_URI): - """Initialize the client with the available queries listed in - the WSDL file. All the queries can be executed using the following syntax: - - client.service.queryToBeExecuted() - """ - try: - Client.__init__(self, WSDL_URI,proxy=proxyOpts) - #Client.__init__(self, WSDL_URI,transport=HttpTransport()) - except Exception as e: - print(e) + """Initialize the client with the available queries listed in + the WSDL file. All the queries can be executed using the following syntax: + + client.service.queryToBeExecuted() + """ + try: + Client.__init__(self, WSDL_URI,proxy=proxyOpts) + #Client.__init__(self, WSDL_URI,transport=HttpTransport()) + except Exception as e: + print(e) from PyQt4.Qt import Qt from PyQt4 import QtCore, QtGui @@ -102,9 +102,9 @@ class BioModelsClientWidget(QtGui.QDialog): ('Model Ids by Publication', 'getModelsIdByPublication'), ('Model Ids by Taxonomy', 'getModelsIdByTaxonomy'),] def __init__(self, parent=None): - QtGui.QWidget.__init__(self, parent) + QtGui.QWidget.__init__(self, parent) self.setWindowTitle('Connect to BioModels') - self.client = BioModelsClient() + self.client = BioModelsClient() self.queryPanel = QtGui.QWidget(self) self.queryModelLabel = QtGui.QLabel('Get ', self.queryPanel) self.queryModelCombo = QtGui.QComboBox(self.queryPanel) @@ -139,8 +139,8 @@ def __init__(self, parent=None): self.setupActions() self.client.set_options(proxy=proxyOpts) - # TODO: - # proxy = [ can be set using set_option(proxy={'http':'proxyhost:port', ...}) function + # TODO: + # proxy = [ can be set using set_option(proxy={'http':'proxyhost:port', ...}) function def setupActions(self): self.connect(self.queryLineEdit, QtCore.SIGNAL('returnPressed()'), self.runQuery) diff --git a/mgui/defaults.py b/mgui/defaults.py index 6551d2d..83f7d8e 100644 --- a/mgui/defaults.py +++ b/mgui/defaults.py @@ -4,7 +4,7 @@ 'Compartment':['Vm','Im'], 'HHChannel':['Ik','Gk'], 'ZombiePool':['n','conc'], - 'ZombieBufPool':['n','conc'], + 'ZombieBufPool':['n','conc'], 'HHChannel2D':['Ik','Gk'], 'CaConc':['Ca'] } diff --git a/mgui/mtree.py b/mgui/mtree.py index 3d4b632..538518f 100644 --- a/mgui/mtree.py +++ b/mgui/mtree.py @@ -119,17 +119,17 @@ def flags(self, index): class MooseTreeItem(QtGui.QTreeWidgetItem): def __init__(self, *args): - QtGui.QTreeWidgetItem.__init__(self, *args) - self.mobj = None + QtGui.QTreeWidgetItem.__init__(self, *args) + self.mobj = None def setObject(self, element): self.mobj = moose.element(element) - self.setText(0, QtCore.QString(self.mobj.path.rpartition('/')[-1])) - self.setText(1, QtCore.QString(self.mobj.className)) - #self.setToolTip(0, QtCore.QString('class:' + self.mooseObj_.className)) + self.setText(0, QtCore.QString(self.mobj.path.rpartition('/')[-1])) + self.setText(1, QtCore.QString(self.mobj.className)) + #self.setToolTip(0, QtCore.QString('class:' + self.mooseObj_.className)) def updateSlot(self): - self.setText(0, QtCore.QString(self.mobj.name)) + self.setText(0, QtCore.QString(self.mobj.name)) class MooseTreeWidget(QtGui.QTreeWidget): @@ -159,10 +159,10 @@ def __init__(self, *args): elementInserted(melement) emitted when a new element is inserted. """ - QtGui.QTreeWidget.__init__(self, *args) + QtGui.QTreeWidget.__init__(self, *args) self.header().hide() - self.rootElement = moose.element('/') - self.odict = {} + self.rootElement = moose.element('/') + self.odict = {} self.recreateTree() def setupTree(self, obj, parent, odict): @@ -183,19 +183,19 @@ def setupTree(self, obj, parent, odict): for ii in MooseTreeWidget.ignored: if obj.path.startswith(ii): return None - item = MooseTreeItem(parent) - item.setObject(obj) - odict[obj] = item + item = MooseTreeItem(parent) + item.setObject(obj) + odict[obj] = item # TODO: check and verify that this still works with synapses - # there have been change in API. - Subha, Fri Sep 19 19:04:35 IST 2014 - for child in obj.children: + for child in obj.children: ch = child if child.name in obj.getFieldNames('fieldElementFinfo'): ch = obj.getField(child.name) for elm in ch: self.setupTree(moose.element(elm), item, odict) - return item + return item def recreateTree(self, root=None): """Clears the current tree and recreates the tree. If root is not diff --git a/mgui/plugins/buildkkit.py b/mgui/plugins/buildkkit.py index 4c591f3..b23e794 100644 --- a/mgui/plugins/buildkkit.py +++ b/mgui/plugins/buildkkit.py @@ -82,7 +82,7 @@ def __init__(self, plugin): def SaveModelDialogSlot(self): type_sbml = 'SBML' - print(" here in saveModelDialog") + print(" here in saveModelDialog") filters = {'SBML(*.xml)': type_sbml} filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) extension = "" @@ -117,14 +117,14 @@ def getCentralWidget(self): class KineticsWidget(EditorWidgetBase): def __init__(self, *args): - EditorWidgetBase.__init__(self, *args) + EditorWidgetBase.__init__(self, *args) self.setAcceptDrops(True) self.border = 10 self.sceneContainer = QtGui.QGraphicsScene(self) self.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) self.sceneContainer.setBackgroundBrush(QtGui.QColor(230,220,219,120)) - self.insertMenu = QtGui.QMenu('&Insert') + self.insertMenu = QtGui.QMenu('&Insert') self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) @@ -227,7 +227,7 @@ def updateModelView(self): self.layout().removeWidget(self.view) self.view = GraphicalView(self.sceneContainer,self.border,self) hLayout = QtGui.QGridLayout(self) - self.setLayout(hLayout) + self.setLayout(hLayout) hLayout.addWidget(self.view) #self.layout().addWidget(self.view) diff --git a/mgui/plugins/default.py b/mgui/plugins/default.py index 1c67430..d86f86e 100644 --- a/mgui/plugins/default.py +++ b/mgui/plugins/default.py @@ -1226,7 +1226,7 @@ def saveAllCsv(self): if fileDialog2.exec_(): directory = fileDialog2.directory().path() for line in list(self.lineToDataSource.keys()): - self.saveCsv(line,directory) + self.saveCsv(line,directory) def getMenus(self): diff --git a/setup.py b/setup.py index b8515d2..5439805 100644 --- a/setup.py +++ b/setup.py @@ -33,8 +33,6 @@ 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', ] setup( @@ -42,10 +40,12 @@ version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", long_description = readme, - packages = [ "mgui", 'mgui.plugins', 'suds' ], - package_dir = { 'mgui' : 'mgui' + packages = [ "mgui", 'mgui.plugins', 'mgui.colormaps', 'suds' ], + package_dir = { + 'mgui' : 'mgui' , 'suds' : 'suds' , 'mgui.plugins' : 'mgui/plugins' + , 'mgui.colormaps' : 'mgui/colormaps' }, install_requires = [ ], author = "Harsha Rani", From cf5ec63a38708ae1367d7641cdc7f7d1a362b1a6 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 13:40:54 +0530 Subject: [PATCH 03/66] Test on ghevar. --- MANIFEST.in | 2 +- mgui/colormaps/__init__.py | 0 setup.py | 5 +---- 3 files changed, 2 insertions(+), 5 deletions(-) create mode 100644 mgui/colormaps/__init__.py diff --git a/MANIFEST.in b/MANIFEST.in index 88539f4..e81af2e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ -include mgui/colormaps/* recursive-include mgui *.pkl +include colormaps/* include bioModels/* diff --git a/mgui/colormaps/__init__.py b/mgui/colormaps/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/setup.py b/setup.py index 5439805..09919d5 100644 --- a/setup.py +++ b/setup.py @@ -19,10 +19,7 @@ import numpy as np import os import sys -try: - from setuptools import setup -except ImportError: - from distutils.core import setup +from distutils.core import setup with open("README.md") as f: readme = f.read() From 770b45ba22bcc7d313040df000a90536d0b5a918 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 16:25:22 +0530 Subject: [PATCH 04/66] Launching but not populating canvas. --- mgui/__init__.py | 2 +- mgui/biomodelsclient.py | 7 +++--- mgui/config.py | 32 ++++++++++++++++++++-------- mgui/mgui.py | 10 ++++----- mgui/plugins/PreferencesPresenter.py | 8 +++---- mgui/plugins/default.py | 27 ++++++++++++----------- mgui/plugins/setsolver.py | 4 +++- mgui/sidebar.py | 2 +- moose | 6 ++++++ setup.py | 16 ++------------ suds/client.py | 11 +++++++--- suds/sax/text.py | 2 +- suds/transport/http.py | 23 ++++++++++++++++---- suds/transport/https.py | 5 ++++- suds/wsdl.py | 6 +++++- suds/xsd/sxbasic.py | 5 ++++- 16 files changed, 105 insertions(+), 61 deletions(-) create mode 100755 moose diff --git a/mgui/__init__.py b/mgui/__init__.py index 7ff5c6b..a2ce17e 100644 --- a/mgui/__init__.py +++ b/mgui/__init__.py @@ -1 +1 @@ -all = [ "plugins", 'suds' ] +from mgui import main diff --git a/mgui/biomodelsclient.py b/mgui/biomodelsclient.py index 1585ab7..e02776b 100644 --- a/mgui/biomodelsclient.py +++ b/mgui/biomodelsclient.py @@ -45,13 +45,14 @@ # Code: -from .suds.client import Client -from .suds.transport.http import HttpTransport as SudsHttpTransport import os -from . import config import pickle import moose +from suds.client import Client +from suds.transport.http import HttpTransport as SudsHttpTransport +from . import config + BIOMODELS_WSDL_URI = 'http://www.ebi.ac.uk/biomodels-main/services/BioModelsWebServices?wsdl' proxyOpts = dict() diff --git a/mgui/config.py b/mgui/config.py index 975b539..0ff01bd 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -85,7 +85,7 @@ KEY_ELECTRICAL_PLOTDT = 'electrical/plotdt' KEY_SIMTIME = 'main/simtime' -QT_VERSION = str(QtCore.QT_VERSION_STR).split('.') +QT_VERSION = unicode(QtCore.QT_VERSION_STR).split('.') QT_MAJOR_VERSION = int(QT_VERSION[0]) QT_MINOR_VERSION = int(QT_VERSION[1]) @@ -108,6 +108,18 @@ sys.path.append(os.path.join(MOOSE_PLUGIN_DIR)) +def qvalue( qsetting, key ): + """ Return value as unicode from QSetting object. + Calling toString is not compatible with python3. + """ + qval = qsetting.value( key ) + try: + val = qval.toString( ) + except Exception as e: + val = unicode( qval ) + return u'%s' % val + + class MooseSetting(dict): """ dict-like access to QSettings. @@ -128,7 +140,7 @@ def __new__(cls, *args, **kwargs): firsttime, errs = init_dirs() for e in errs: print(e) - QtCore.QCoreApplication.setOrganizationName('NCBS') + QtCore.QCoreApplication.setOrganizationName('NCBS Bangalore') QtCore.QCoreApplication.setOrganizationDomain('ncbs.res.in') QtCore.QCoreApplication.setApplicationName('MOOSE') cls._instance.qsettings = QtCore.QSettings() @@ -137,7 +149,7 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_BIOMODEL_DIR, os.path.join(MOOSE_GUI_DIR, 'bioModels')) cls._instance.qsettings.setValue(KEY_ICON_DIR, os.path.join(MOOSE_GUI_DIR, 'icons')) cls._instance.qsettings.setValue(KEY_NUMPTHREADS, '1') - cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, str(MOOSE_UNDO_LENGTH)) + cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, unicode(MOOSE_UNDO_LENGTH)) # These are to be checked at every run cls._instance.qsettings.setValue(KEY_HOME_DIR, os.environ['HOME']) cls._instance.qsettings.setValue(KEY_DEMOS_DIR, MOOSE_DEMOS_DIR) @@ -145,14 +157,14 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_DOCS_DIR, MOOSE_DOCS_DIR) cls._instance.qsettings.setValue(KEY_MOOSE_LOCAL_DIR, MOOSE_LOCAL_DIR) cls._instance.qsettings.setValue(KEY_LOCAL_BUILD, LOCAL_BUILD) - os.environ['NUMPTHREADS'] = str(cls._instance.qsettings.value(KEY_NUMPTHREADS)) + os.environ['NUMPTHREADS'] = qvalue(cls._instance.qsettings, KEY_NUMPTHREADS) return cls._instance def __init__(self, *args, **kwargs): super(MooseSetting, self).__init__(self, *args, **kwargs) def __iter__(self): - return (str(key) for key in self.qsettings.allKeys()) + return (unicode(key) for key in self.qsettings.allKeys()) def __setitem__(self, key, value): if isinstance(key, str): @@ -161,16 +173,18 @@ def __setitem__(self, key, value): raise TypeError('Expect only strings as keys') def __getitem__(self, key): - return str(self.qsettings.value(key)) + val = qvalue( self.qsettings, key ) + assert isinstance( val, unicode ), "Expected string, got %s" % type(val) + return val def keys(self): - return [str(key) for key in self.qsettings.allKeys()] + return [unicode(key) for key in self.qsettings.allKeys()] def values(self): - return [str(self.qsettings.value(key)) for key in self.qsettings.allKeys()] + return [unicode(self.qsettings.value(key)) for key in self.qsettings.allKeys()] def itervalues(self): - return (str(self.qsettings.value(key)) for key in self.qsettings.allKeys()) + return (unicode(self.qsettings.value(key)) for key in self.qsettings.allKeys()) def init_dirs(): """Check if there is a `.moose` directory in user's home diff --git a/mgui/mgui.py b/mgui/mgui.py index 2290695..aeac47a 100644 --- a/mgui/mgui.py +++ b/mgui/mgui.py @@ -69,11 +69,11 @@ from .loaderdialog import LoaderDialog from .shell import get_shell_class from .objectedit import ObjectEditDockWidget -from .mgui.newmodeldialog import DialogWidget -from .mgui.biomodelsclient import BioModelsClientWidget -from .mgui.MdiArea import MdiArea -from .mgui.plugins.setsolver import * -from .mgui.plugins.defines import * +from .newmodeldialog import DialogWidget +from .biomodelsclient import BioModelsClientWidget +from .MdiArea import MdiArea +from .plugins.setsolver import * +from .plugins.defines import * __author__ = 'Subhasis Ray , HarshaRani, Aviral Goel, NCBS' diff --git a/mgui/plugins/PreferencesPresenter.py b/mgui/plugins/PreferencesPresenter.py index 6485dcc..f351894 100644 --- a/mgui/plugins/PreferencesPresenter.py +++ b/mgui/plugins/PreferencesPresenter.py @@ -1,13 +1,13 @@ - import sys +import moose + from PyQt4 import Qt, QtGui, QtCore from PyQt4.QtCore import QObject from PyQt4.QtCore import pyqtSignal from PyQt4.QtGui import QColor from PyQt4.QtGui import QGroupBox -from .PreferencesView import PreferencesView -import moose -from .defines import * +from mgui.plugins.PreferencesView import PreferencesView +from mgui.plugins.defines import * import json import os diff --git a/mgui/plugins/default.py b/mgui/plugins/default.py index d86f86e..909f8ac 100644 --- a/mgui/plugins/default.py +++ b/mgui/plugins/default.py @@ -46,7 +46,7 @@ # Code: import sys -import config +from mgui import config import pickle import os from collections import defaultdict @@ -56,23 +56,25 @@ import moose from moose import utils -import mtree -from mtoolbutton import MToolButton -from msearch import SearchWidget -from checkcombobox import CheckComboBox -from mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +import mgui.mtree as mtree + +from mgui.mtoolbutton import MToolButton +from mgui.msearch import SearchWidget +from mgui.checkcombobox import CheckComboBox + +from mgui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase #from defaultToolPanel import DefaultToolPanel #from DataTable import DataTable from matplotlib import rcParams rcParams.update({'figure.autolayout': True}) from matplotlib.lines import Line2D -from PlotWidgetContainer import PlotWidgetContainer +from mgui.PlotWidgetContainer import PlotWidgetContainer from PyQt4 import QtCore, QtGui from PyQt4.QtGui import QDoubleValidator -from .kkitUtil import getColor -from .Runner import Runner +from mgui.plugins.kkitUtil import getColor +from mgui.plugins.Runner import Runner # from Runner import Runner # from __future__ import print_function from PyQt4 import QtGui, QtCore @@ -89,8 +91,9 @@ from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar #from EventBlocker import EventBlocker # from PlotNavigationToolbar import PlotNavigationToolbar -from global_constants import preferences -from .setsolver import * +from mgui.global_constants import preferences +from mgui.plugins.setsolver import * + ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -313,7 +316,7 @@ def getToolBars(self): ############################################################ -from mplot import CanvasWidget +from mgui.mplot import CanvasWidget class RunView(RunBase): """A default runtime view implementation. This should be diff --git a/mgui/plugins/setsolver.py b/mgui/plugins/setsolver.py index 5d5b810..f365898 100644 --- a/mgui/plugins/setsolver.py +++ b/mgui/plugins/setsolver.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import moose def deleteSolver(modelRoot): @@ -94,4 +96,4 @@ def setCompartmentSolver(modelRoot,solver): stoichList[1].buildXreacs (stoichList [2]) for i in stoichList: - i.filterXreacs() \ No newline at end of file + i.filterXreacs() diff --git a/mgui/sidebar.py b/mgui/sidebar.py index 7c03397..6a42eba 100644 --- a/mgui/sidebar.py +++ b/mgui/sidebar.py @@ -1,4 +1,4 @@ - +from __future__ import print_function # -*- coding: utf-8 -*- diff --git a/moose b/moose new file mode 100755 index 0000000..f274d24 --- /dev/null +++ b/moose @@ -0,0 +1,6 @@ +#!/usr/bin/env python + +import mgui +print( mgui.__file__ ) +print( dir(mgui) ) +mgui.main( ) diff --git a/setup.py b/setup.py index 09919d5..d08eda3 100644 --- a/setup.py +++ b/setup.py @@ -24,34 +24,22 @@ with open("README.md") as f: readme = f.read() -classifiers = [ - 'Development Status :: 4 - Beta', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - ] - setup( name = "moose-gui", version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", long_description = readme, packages = [ "mgui", 'mgui.plugins', 'mgui.colormaps', 'suds' ], - package_dir = { - 'mgui' : 'mgui' + package_dir = { 'mgui' : 'mgui' , 'suds' : 'suds' , 'mgui.plugins' : 'mgui/plugins' , 'mgui.colormaps' : 'mgui/colormaps' }, - install_requires = [ ], + package_data = { 'mgui' : [ 'colormaps/*' ] }, author = "Harsha Rani", author_email = "hrani@ncbs.res.in", maintainer = 'Dilawar Singh', maintainer_email = 'dilawars@ncbs.res.in', url = "http://github.com/BhallaLab/moose-gui", license='GPL', - classifiers=classifiers, - entry_points = { 'console_scripts' : [ 'moose=mgui.mgui:main' ] } - ) diff --git a/suds/client.py b/suds/client.py index f8b6ceb..5ca689c 100644 --- a/suds/client.py +++ b/suds/client.py @@ -39,10 +39,15 @@ from suds.wsdl import Definitions from . import sudsobject -from http.cookiejar import CookieJar from copy import deepcopy -import http.client -from urllib.parse import urlparse +try: + from http.cookiejar import CookieJar + import http.client + from urllib.parse import urlparse +except Exception as e: + from cookielib import CookieJar + import httplib + from urlparse import urlparse from logging import getLogger log = getLogger(__name__) diff --git a/suds/sax/text.py b/suds/sax/text.py index 14b6dca..5945222 100644 --- a/suds/sax/text.py +++ b/suds/sax/text.py @@ -22,7 +22,7 @@ from suds.sax import * -class Text(str): +class Text( unicode ): """ An XML text object used to represent text content. @ivar lang: The (optional) language flag. diff --git a/suds/transport/http.py b/suds/transport/http.py index 01e08f8..16ab7f4 100644 --- a/suds/transport/http.py +++ b/suds/transport/http.py @@ -22,12 +22,27 @@ from suds.transport import * import base64 -from http.cookiejar import CookieJar -import http.client +try: + from http.cookiejar import CookieJar +except Exception as e: + from cookielib import CookieJar + +try: + import http.client +except Exception as e: + import httplib + import socket import sys -import urllib.request, urllib.error, urllib.parse -from urllib.parse import urlparse +try: + import urllib.request, urllib.error, urllib.parse +except Exception as e: + import urllib + +try: + from urllib.parse import urlparse +except Exception as e: + from urlparse import urlparse from logging import getLogger log = getLogger(__name__) diff --git a/suds/transport/https.py b/suds/transport/https.py index 718b275..babcc76 100644 --- a/suds/transport/https.py +++ b/suds/transport/https.py @@ -21,7 +21,10 @@ from suds.transport import * from suds.transport.http import HttpTransport -import urllib.request, urllib.error, urllib.parse +try: + import urllib.request, urllib.error, urllib.parse +except Exception as e: + import urllib class HttpAuthenticated(HttpTransport): diff --git a/suds/wsdl.py b/suds/wsdl.py index f652776..b78d4bc 100644 --- a/suds/wsdl.py +++ b/suds/wsdl.py @@ -32,7 +32,11 @@ import re from . import soaparray -from urllib.parse import urljoin + +try: + from urllib.parse import urljoin +except Exception as e: + from urlparse import urljoin from logging import getLogger log = getLogger(__name__) diff --git a/suds/xsd/sxbasic.py b/suds/xsd/sxbasic.py index e2b0849..8a84d90 100644 --- a/suds/xsd/sxbasic.py +++ b/suds/xsd/sxbasic.py @@ -26,7 +26,10 @@ from suds.sax import Namespace from suds.transport import TransportError from suds.reader import DocumentReader -from urllib.parse import urljoin +try: + from urllib.parse import urljoin +except Exception as e: + from urlparse import urljoin from logging import getLogger log = getLogger(__name__) From 39fd774f8e933b38e4305e6ff408b7ff86132979 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 17:45:20 +0530 Subject: [PATCH 05/66] This is almost compelte. Just need to tweak here and there. --- examples/.gitignore | 57 + examples/.travis.yml | 24 + examples/LICENSE | 340 + .../bidirectional_plastic_switch.py | 93 + examples/MemoryNetworks/stargazin_synapse.g | 413 + examples/README.md | 3 + examples/_travis/.ignore_on_travis | 0 examples/_travis/colors.sh | 45 + examples/_travis/find_scripts_to_run.sh | 89 + examples/_travis/matplotlibrc | 11 + examples/_travis/run_scripts.sh | 70 + examples/genesis/00001-sbml-l3v1.xml | 52 + examples/genesis/EGFR_MAPK_58.g | 750 + examples/genesis/EGFR_MAPK_58.png | Bin 0 -> 313988 bytes examples/genesis/Kholodenko.g | 528 + examples/genesis/Kholodenko.png | Bin 0 -> 46401 bytes examples/genesis/M1719.cspace | 1 + examples/genesis/M1719.g | 151 + examples/genesis/OSC_Cspace.g | 260 + examples/genesis/OSC_diff_vols.g | 219 + examples/genesis/Osc_cspace_ref_model.png | Bin 0 -> 45319 bytes examples/genesis/Repressillator.g | 832 + examples/genesis/acc35.g | 1373 + examples/genesis/acc68.g | 597 + examples/genesis/acc68.png | Bin 0 -> 152172 bytes examples/genesis/chanPhosphByCaMKII.g | 162 + examples/genesis/enz_classical_explicit.g | 138 + examples/genesis/enz_rea.g | 88 + examples/genesis/kkit_objects_example.g | 195 + examples/genesis/reaction.g | 76 + examples/genesis/spineCa_CaM_diffn.g | 696 + examples/genesis/spineCa_diffn.g | 151 + examples/genesis/traff_nn_diff_BIS.g | 262 + examples/genesis/traff_nn_diff_TRI.g | 261 + examples/genesis/traff_nn_diff_TRI.png | Bin 0 -> 39569 bytes examples/hopfield/guiHopfield.py | 214 + examples/hopfield/hopfield.py | 193 + examples/hopfield/hopfield1.py | 132 + examples/hopfield/hopfield_ui.py | 1318 + examples/hopfield/hopfield_ui.ui | 2672 ++ examples/hopfield/input.csv | 10 + examples/hopfield/memory1.csv | 10 + examples/hopfield/memory2.csv | 10 + examples/hopfield/test.py | 68 + examples/izhikevich/Izhikevich.py | 537 + examples/izhikevich/demogui_qt.py | 169 + examples/kinetics/test_ksolve.py | 488 + examples/moogli/color_update.py | 108 + examples/moogli/purkinje_simulation.py | 115 + .../moogli/purkinje_simulation_with_rm.py | 187 + .../purkinje_simulation_with_rm_and_graph.py | 219 + examples/moogli/simple_viewing.py | 28 + examples/neuroml/CA1PyramidalCell/CA1.net.xml | 48 + examples/neuroml/CA1PyramidalCell/CA1.py | 51 + .../neuroml/CA1PyramidalCell/CA1_hsolve.py | 57 + .../CA1PyramidalCell/CA1inhomog.net.xml | 48 + .../neuroml/CA1PyramidalCell/CA1soma.net.xml | 48 + examples/neuroml/CA1PyramidalCell/FvsI_CA1.py | 76 + examples/neuroml/CA1PyramidalCell/README | 18 + .../cells_channels/CA1.morph.bad.xml | 12609 +++++++++ .../cells_channels/CA1.morph.original.xml | 12670 +++++++++ .../cells_channels/CA1.morph.xml | 12628 +++++++++ .../cells_channels/CA1_original.morph.xml | 12670 +++++++++ .../cells_channels/CA1inhomog.morph.xml | 12670 +++++++++ .../cells_channels/CA1soma.morph.xml | 126 + .../cells_channels/Gran_KDr_98.xml | 79 + .../cells_channels/Gran_NaF_98.xml | 92 + .../cells_channels/Purkinje_KA.xml | 141 + .../CA1PyramidalCell/cells_channels/README | 14 + .../CA1PyramidalCell/cells_channels/hd.xml | 73 + .../cells_channels/hd_minus73.xml | 73 + .../CA1PyramidalCell/cells_channels/kad.xml | 84 + .../CA1PyramidalCell/cells_channels/kap.xml | 86 + .../CA1PyramidalCell/cells_channels/kdr.xml | 75 + .../CA1PyramidalCell/cells_channels/na3.xml | 107 + .../CA1PyramidalCell/cells_channels/nax.xml | 88 + .../CA1PyramidalCell/cells_channels/pas.xml | 17 + .../neuroml/GranuleCell/FvsI_Granule98.py | 69 + examples/neuroml/GranuleCell/Granule98.py | 62 + .../neuroml/GranuleCell/Granule98_hsolve.py | 67 + .../neuroml/GranuleCell/GranuleCell.net.xml | 51 + examples/neuroml/GranuleCell/README | 10 + .../cells_channels/GranPassiveCond.xml | 33 + .../cells_channels/Gran_CaHVA_98.xml | 82 + .../cells_channels/Gran_CaPool_98.xml | 44 + .../GranuleCell/cells_channels/Gran_H_98.xml | 64 + .../GranuleCell/cells_channels/Gran_KA_98.xml | 78 + .../cells_channels/Gran_KCa_98.xml | 70 + .../cells_channels/Gran_KDr_98.xml | 79 + .../cells_channels/Gran_NaF_98.xml | 92 + .../cells_channels/Granule_98.morph.xml | 160 + examples/neuroml/LIF/FvsI_LIF.py | 59 + examples/neuroml/LIF/LIFinject.net.xml | 43 + examples/neuroml/LIF/LIFxml_firing.py | 66 + examples/neuroml/LIF/LIFxml_firing_hsolve.py | 67 + examples/neuroml/LIF/cells_channels/IaF.xml | 24 + .../neuroml/LIF/cells_channels/LIF.morph.xml | 72 + .../neuroml/LIF/cells_channels/exc_syn.xml | 40 + examples/neuroml/LIF/twoLIFs.net.xml | 51 + examples/neuroml/LIF/twoLIFxml_firing.py | 85 + ...Bpassive_numgloms2_seed100.0_decimated.xml | 688 + .../OBpassive_numgloms3_seed750.0.xml | 8107 ++++++ .../OBpassive_slice_numgloms2_seed100.0.xml | 3555 +++ examples/neuroml/OlfactoryBulbPassive/README | 9 + .../neuroml/OlfactoryBulbPassive/cells/PG.xml | 172 + .../OlfactoryBulbPassive/cells/granule.xml | 89 + .../OlfactoryBulbPassive/cells/mitral.xml | 3386 +++ .../PurkinjePassive.net.xml | 55 + .../PurkinjeCellPassivePulseInput/README | 9 + .../cells/purk2.morph.xml | 21570 ++++++++++++++++ .../PurkinjeCellPassivePulseInput/p.nml | 55 + examples/neuroml/allChannelsCell/README | 11 + .../allChannelsCell/allChannelsCell.net.xml | 52 + .../allChannelsCell/allChannelsCell.py | 68 + .../cells_channels/Golgi_CaHVA.xml | 134 + .../cells_channels/Golgi_CaLVA.xml | 154 + .../cells_channels/GranPassiveCond.xml | 33 + .../cells_channels/Gran_CaHVA_98.xml | 82 + .../cells_channels/Gran_CaPool_98.xml | 44 + .../cells_channels/Gran_H_98.xml | 64 + .../cells_channels/Gran_KA_98.xml | 78 + .../cells_channels/Gran_KCa_98.xml | 70 + .../cells_channels/Gran_KDr_98.xml | 79 + .../cells_channels/Gran_NaF_98.xml | 92 + .../cells_channels/Granule_98.morph.xml | 207 + .../cells_channels/Pyramidal_KM.xml | 92 + .../SolinasEtAl_Golgi/CaHVA_CML.xml | 134 + .../SolinasEtAl_Golgi/CaLVA_CML.xml | 154 + .../SolinasEtAl_Golgi/Golgi_CALC_CML.xml | 73 + .../SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml | 73 + .../SolinasEtAl_Golgi/KAHP_CML.xml | 125 + .../SolinasEtAl_Golgi/KA_CML.xml | 161 + .../SolinasEtAl_Golgi/KC_CML.xml | 112 + .../SolinasEtAl_Golgi/KV_CML.xml | 114 + .../SolinasEtAl_Golgi/Kslow_CML.xml | 121 + .../SolinasEtAl_Golgi/NaP_CML.xml | 127 + .../SolinasEtAl_Golgi/NaR_CML.xml | 130 + .../SolinasEtAl_Golgi/NaT_CML.xml | 151 + .../SolinasEtAl_Golgi/Simple_CML.morph.xml | 159 + .../SolinasEtAl_Golgi/hcn1f_CML.xml | 126 + .../SolinasEtAl_Golgi/hcn1s_CML.xml | 127 + .../SolinasEtAl_Golgi/hcn2f_CML.xml | 137 + .../SolinasEtAl_Golgi/hcn2s_CML.xml | 131 + .../cells_channels/Traub_KA.xml | 109 + .../cells_channels/Traub_KCaAHP.xml | 105 + .../cells_channels/Traub_NaP.xml | 91 + .../lobster_pyloric/Generated.net.3syn.xml | 133 + .../Generated.net.halfcenter.xml | 135 + .../lobster_pyloric/Generated.net.reverse.xml | 133 + .../neuroml/lobster_pyloric/Generated.net.xml | 137 + examples/neuroml/lobster_pyloric/README | 30 + examples/neuroml/lobster_pyloric/STG.png | Bin 0 -> 14983 bytes examples/neuroml/lobster_pyloric/STG_net.py | 156 + .../lobster_pyloric/cells/AB_PD.morph.xml | 143 + .../lobster_pyloric/cells/LP.morph.xml | 146 + .../lobster_pyloric/cells/LP_highH.morph.xml | 146 + .../lobster_pyloric/cells/LP_highH2.morph.xml | 149 + .../lobster_pyloric/cells/PY.morph.xml | 146 + .../lobster_pyloric/channels/CaPool_STG.xml | 56 + .../lobster_pyloric/channels/CaS_STG.xml | 56 + .../lobster_pyloric/channels/CaT_STG.xml | 56 + .../lobster_pyloric/channels/ChannelTest.py | 62 + .../lobster_pyloric/channels/H_STG.xml | 48 + .../lobster_pyloric/channels/KA_STG.xml | 55 + .../lobster_pyloric/channels/KCa_STG.xml | 54 + .../lobster_pyloric/channels/Kd_STG.xml | 48 + .../channels/LeakConductance.xml | 17 + .../lobster_pyloric/channels/Na_STG.xml | 55 + .../lobster_pyloric/synapses/AchSyn_STG.py | 63 + .../synapses/DoubExpSyn_Ach.xml | 28 + .../synapses/DoubExpSyn_Glu.xml | 28 + .../lobster_pyloric/synapses/GluSyn_STG.py | 63 + .../lobster_pyloric/synapses/load_synapses.py | 9 + examples/paper-2015/Fig2_elecModels/Fig2A.py | 527 + .../Fig2_elecModels/Fig2A_analysis.py | 62 + examples/paper-2015/Fig2_elecModels/Fig2C.py | 356 + examples/paper-2015/Fig2_elecModels/Fig2D.py | 104 + examples/paper-2015/Fig2_elecModels/Fig2E.py | 125 + .../Fig2_elecModels/cells/CA1.morph.xml | 12535 +++++++++ .../Fig2_elecModels/cells/K-18.CNG.swc | 1193 + .../Fig2_elecModels/cells/VHC-neuron.CNG.swc | 3022 +++ .../Fig2_elecModels/cells/ca1_minimal.p | 58 + .../Fig2_elecModels/cells/h10.CNG.swc | 226 + .../Fig2_elecModels/cells/ko20x-07.CNG.swc | 165 + .../Fig2_elecModels/chans/CA1.morph.xml | 12673 +++++++++ .../paper-2015/Fig2_elecModels/chans/Ca.xml | 62 + .../Fig2_elecModels/chans/CaConc.xml | 36 + .../Fig2_elecModels/chans/DoubExpSyn.xml | 32 + .../Fig2_elecModels/chans/Generated.net.xml | 59 + .../paper-2015/Fig2_elecModels/chans/Glu.xml | 16 + .../Fig2_elecModels/chans/HChannel.xml | 73 + .../Fig2_elecModels/chans/KChannel_HH.xml | 49 + .../Fig2_elecModels/chans/LeakConductance.xml | 17 + .../paper-2015/Fig2_elecModels/chans/NMDA.xml | 16 + .../Fig2_elecModels/chans/NaChannel_HH.xml | 58 + .../paper-2015/Fig2_elecModels/chans/hd.xml | 73 + .../paper-2015/Fig2_elecModels/chans/kad.xml | 84 + .../paper-2015/Fig2_elecModels/chans/kap.xml | 86 + .../paper-2015/Fig2_elecModels/chans/kdr.xml | 75 + .../paper-2015/Fig2_elecModels/chans/na3.xml | 107 + .../paper-2015/Fig2_elecModels/chans/nax.xml | 88 + .../paper-2015/Fig2_elecModels/chans/pas.xml | 17 + examples/paper-2015/Fig3_chemModels/Fig3ABC.g | 832 + examples/paper-2015/Fig3_chemModels/Fig3D.py | 67 + .../paper-2015/Fig3_chemModels/Fig3_NEURON.py | 44 + .../Fig4_ReacDiff/CaMKII_merged77.g | 2076 ++ examples/paper-2015/Fig4_ReacDiff/Fig4B.py | 185 + examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py | 242 + examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py | 242 + .../paper-2015/Fig4_ReacDiff/ca1_minimal.p | 58 + .../paper-2015/Fig4_ReacDiff/rxdSpineSize.py | 293 + .../paper-2015/Fig5_CellMultiscale/Fig5A.py | 157 + .../paper-2015/Fig5_CellMultiscale/Fig5BCD.py | 281 + .../Fig5_CellMultiscale/cells/970529c.CNG.swc | 2493 ++ .../Fig5_CellMultiscale/cells/CA1.morph.xml | 12535 +++++++++ .../cells/DHC-neuron.CNG.swc | 6764 +++++ .../cells/VHC-neuron.CNG.swc | 3022 +++ .../Fig5_CellMultiscale/cells/ca1_minimal.p | 58 + .../Fig5_CellMultiscale/cells/h10.CNG.swc | 226 + .../Fig5_CellMultiscale/chans/CA1.morph.xml | 12673 +++++++++ .../Fig5_CellMultiscale/chans/Ca.xml | 62 + .../Fig5_CellMultiscale/chans/CaConc.xml | 36 + .../Fig5_CellMultiscale/chans/DoubExpSyn.xml | 32 + .../chans/Generated.net.xml | 59 + .../Fig5_CellMultiscale/chans/Glu.xml | 16 + .../Fig5_CellMultiscale/chans/HChannel.xml | 73 + .../Fig5_CellMultiscale/chans/NMDA.xml | 16 + .../Fig5_CellMultiscale/chans/hd.xml | 73 + .../Fig5_CellMultiscale/chans/kad.xml | 84 + .../Fig5_CellMultiscale/chans/kap.xml | 86 + .../Fig5_CellMultiscale/chans/kdr.xml | 75 + .../Fig5_CellMultiscale/chans/na3.xml | 107 + .../Fig5_CellMultiscale/chans/nax.xml | 88 + .../Fig5_CellMultiscale/chans/pas.xml | 17 + .../Fig5_CellMultiscale/chem/psd53.g | 477 + .../paper-2015/Fig6_NetMultiscale/Fig6A.py | 503 + .../paper-2015/Fig6_NetMultiscale/Fig6BCDE.py | 939 + .../Fig6_NetMultiscale/ReducedModel.py | 887 + .../cells_channels/CA1.morph.spines.xml | 12658 +++++++++ .../cells_channels/CA1.morph.xml | 12628 +++++++++ .../cells_channels/CA1_nochans.morph.xml | 12535 +++++++++ .../cells_channels/CA1spiny.morph.xml | 13066 ++++++++++ .../cells_channels/CA1spiny7_0.morph.xml | 13118 ++++++++++ .../Fig6_NetMultiscale/cells_channels/Ca.xml | 62 + .../cells_channels/CaConc.xml | 36 + .../cells_channels/Ca_conc.xml | 31 + .../cells_channels/GABA.xml | 16 + .../Fig6_NetMultiscale/cells_channels/Glu.xml | 16 + .../cells_channels/NMDA.xml | 16 + .../cells_channels/Pyramidal_KM.xml | 92 + .../cells_channels/Traub_KA.xml | 109 + .../cells_channels/Traub_KCaAHP.xml | 105 + .../cells_channels/ca1_minimal.p | 58 + .../Fig6_NetMultiscale/cells_channels/hd.xml | 73 + .../cells_channels/hd_minus73.xml | 73 + .../Fig6_NetMultiscale/cells_channels/kad.xml | 84 + .../Fig6_NetMultiscale/cells_channels/kap.xml | 86 + .../Fig6_NetMultiscale/cells_channels/kdr.xml | 75 + .../Fig6_NetMultiscale/cells_channels/na3.xml | 107 + .../Fig6_NetMultiscale/cells_channels/nax.xml | 88 + .../Fig6_NetMultiscale/cells_channels/pas.xml | 17 + .../paper-2015/Fig6_NetMultiscale/psd53.g | 477 + examples/paper-2015/README | 33 + examples/paper-2015/rxdSpineSize.py | 293 + examples/parallelSolver/Fig2_v4.py | 229 + examples/parallelSolver/README | 14 + examples/parallelSolver/abstrModelEqns2.py | 219 + examples/passive/passive_soma.py | 63 + examples/rall_1964/rall64.py | 285 + examples/rall_1964/rall64_graphic.py | 144 + ...GraupnerBrunel2012_STDPfromCaPlasticity.py | 314 + ...GraupnerBrunel2014_LifetimeCaPlasticity.py | 169 + examples/snippets/HsolveInstability.py | 289 + examples/snippets/IntegrateFireZoo.py | 228 + examples/snippets/Izhikevich_with_synapse.py | 157 + examples/snippets/MULTI/TuringInNeuron.py | 203 + examples/snippets/MULTI/ca1_asym.p | 100 + examples/snippets/MULTI/diffonly.g | 160 + examples/snippets/MULTI/diffusionOnly.py | 437 + examples/snippets/MULTI/loadMulti.py | 373 + examples/snippets/MULTI/midchan.py | 345 + examples/snippets/MULTI/mincell.p | 36 + examples/snippets/MULTI/mincell2.p | 37 + examples/snippets/MULTI/minchan.py | 333 + examples/snippets/MULTI/minimal.g | 150 + examples/snippets/MULTI/minimal.py | 310 + examples/snippets/MULTI/multi1.py | 364 + examples/snippets/MULTI/multi1_ee.py | 366 + examples/snippets/MULTI/multi2.py | 379 + examples/snippets/MULTI/multi3.py | 385 + examples/snippets/MULTI/proto18.py | 497 + examples/snippets/MULTI/psd_merged30.g | 1452 ++ examples/snippets/MULTI/psd_merged30b.g | 1452 ++ examples/snippets/MULTI/psd_merged31d.g | 1488 ++ examples/snippets/MULTI/runcell18.py | 71 + examples/snippets/MULTI/x_compt.g | 222 + examples/snippets/MULTI/x_compt.py | 376 + examples/snippets/Osc.cspace | 1 + examples/snippets/RandSpikeStats.py | 105 + examples/snippets/STDP.py | 230 + examples/snippets/analogStimTable.py | 92 + examples/snippets/barrionuevo_cell1zr.CNG.swc | 2267 ++ examples/snippets/bidirectionalPlasticity.py | 66 + examples/snippets/branching.p | 34 + examples/snippets/changeFuncExpression.py | 130 + examples/snippets/chemDoseResponse.py | 186 + examples/snippets/compartment_net.py | 174 + examples/snippets/compartment_net_no_array.py | 408 + examples/snippets/compartmental_neuron.py | 128 + examples/snippets/convert_Genesis2Sbml.py | 64 + examples/snippets/crossComptNeuroMesh.py | 241 + examples/snippets/crossComptOscillator.py | 88 + examples/snippets/crossComptSimpleReac.py | 154 + examples/snippets/crossComptSimpleReacGSSA.py | 153 + examples/snippets/cspaceSteadyState.py | 122 + examples/snippets/cubeMeshSigNeur.py | 307 + examples/snippets/cylinderDiffusion.py | 194 + examples/snippets/cylinderMotor.py | 154 + examples/snippets/diffEqSolution.py | 126 + examples/snippets/diffSpinyNeuron.py | 282 + examples/snippets/dotp.p | 100 + examples/snippets/fieldelement.py | 151 + examples/snippets/findChemSteadyState.py | 190 + examples/snippets/func.py | 147 + examples/snippets/funcInputToPools.py | 123 + examples/snippets/funcRateHarmonicOsc.py | 116 + examples/snippets/funcReacLotkaVolterra.py | 141 + examples/snippets/function.py | 195 + examples/snippets/gapjunction.py | 107 + examples/snippets/gssaCylinderDiffusion.py | 199 + examples/snippets/gssaRDspiny.py | 296 + examples/snippets/h10.CNG.swc | 226 + examples/snippets/hdfdemo.py | 99 + examples/snippets/helloMoose.py | 39 + examples/snippets/hhcomp.py | 262 + examples/snippets/insertSpines.py | 84 + .../snippets/insertSpinesWithoutRdesigneur.py | 109 + examples/snippets/interpol.py | 93 + examples/snippets/interpol2d.py | 80 + examples/snippets/intfire.py | 94 + examples/snippets/ionchannel.py | 266 + examples/snippets/lif.py | 135 + examples/snippets/lifcomp.py | 188 + examples/snippets/loadCspaceModel.py | 74 + examples/snippets/loadKineticModel.py | 97 + examples/snippets/loadMorphology.py | 52 + examples/snippets/loadSbmlmodel.py | 110 + examples/snippets/mgblock.py | 153 + examples/snippets/multiComptSigNeur.py | 520 + examples/snippets/multicomp_lif.py | 193 + examples/snippets/multiscaleOneCompt.py | 180 + examples/snippets/neuronFromDotp.py | 157 + examples/snippets/nsdf.py | 175 + examples/snippets/nsdf_vec.py | 182 + examples/snippets/onetoonemsg.py | 74 + examples/snippets/proto18.py | 510 + examples/snippets/pulsegen.py | 78 + examples/snippets/pulsegen2.py | 170 + examples/snippets/pyrun.py | 219 + examples/snippets/pyrun1.py | 219 + examples/snippets/randomspike.py | 131 + examples/snippets/reacDiffBranchingNeuron.py | 235 + examples/snippets/reacDiffConcGradient.py | 161 + examples/snippets/reacDiffSpinyNeuron.py | 297 + examples/snippets/recurrentIntFire.py | 110 + examples/snippets/recurrentLIF.py | 111 + examples/snippets/rxdFuncDiffusion.py | 69 + examples/snippets/rxdFuncDiffusionStoch.py | 71 + examples/snippets/rxdReacDiffusion.py | 79 + examples/snippets/rxdSpineSize.py | 293 + examples/snippets/savemodel.py | 61 + examples/snippets/scaleVolumes.py | 159 + examples/snippets/scriptGssaSolver.py | 123 + examples/snippets/scriptKineticModel.py | 120 + examples/snippets/scriptKineticSolver.py | 124 + examples/snippets/showclocks.py | 72 + examples/snippets/showmsg.py | 22 + examples/snippets/singlemsgcross.py | 95 + examples/snippets/soma.p | 16 + examples/snippets/spinyNeuron.p | 100 + examples/snippets/stargazin_synapse.g | 413 + examples/snippets/startstop.py | 117 + examples/snippets/stimtable.py | 108 + examples/snippets/stochasticLotkaVolterra.py | 151 + examples/snippets/switchKineticSolvers.py | 137 + examples/snippets/symcompartment.py | 109 + examples/snippets/synapse.py | 84 + examples/snippets/synapse_tutorial.py | 188 + examples/snippets/synapse_tutorial_2.ipynb | 309 + examples/snippets/tabledemo.py | 94 + examples/snippets/testHsolve.py | 314 + examples/snippets/testRdesigneur.py | 205 + examples/snippets/testSigNeur.py | 537 + examples/snippets/testWigglySpines.py | 223 + examples/snippets/threading_demo.py | 105 + examples/snippets/timetable.py | 161 + examples/snippets/transportBranchingNeuron.py | 217 + examples/snippets/traub_naf.py | 325 + examples/snippets/tweakingParameters.py | 75 + examples/snippets/twocells.py | 159 + examples/snippets/vclamp.py | 132 + examples/snippets/vectors.py | 62 + examples/snippets/wildcard.py | 162 + examples/squid/.gitignore | 1 + examples/squid/README.txt | 14 + examples/squid/channeleditor.py | 147 + examples/squid/electronics.py | 116 + examples/squid/help.html | 587 + examples/squid/help.org | 242 + examples/squid/images/navigationtoolbar.jpg | Bin 0 -> 11973 bytes examples/squid/squid.py | 376 + examples/squid/squid_demo.py | 899 + examples/squid/squid_setup.py | 118 + examples/squid/test_squid.py | 117 + examples/symcomp/compare_genesis.py | 78 + examples/symcomp/compartments.g | 116 + examples/symcomp/symcomp.g | 46 + examples/symcomp/symcomp.p | 20 + examples/symcomp/symcomp.py | 109 + examples/symcomp/symcomp_readcell.g | 44 + examples/symcomp/symcomp_readcell.py | 92 + examples/traub_2005/.ignore_on_travis | 0 examples/traub_2005/README | 54 + examples/traub_2005/nrn/hoc/utility.hoc | 167 + examples/traub_2005/nrn/test_ar.hoc | 31 + examples/traub_2005/nrn/test_cad.hoc | 40 + examples/traub_2005/nrn/test_cal.hoc | 28 + examples/traub_2005/nrn/test_cat.hoc | 28 + examples/traub_2005/nrn/test_cat_a.hoc | 28 + .../traub_2005/nrn/test_deepaxoaxonic.hoc | 58 + examples/traub_2005/nrn/test_deepbasket.hoc | 58 + examples/traub_2005/nrn/test_deeplts.hoc | 58 + examples/traub_2005/nrn/test_k2.hoc | 29 + examples/traub_2005/nrn/test_ka.hoc | 27 + examples/traub_2005/nrn/test_ka_ib.hoc | 28 + examples/traub_2005/nrn/test_kahp.hoc | 50 + examples/traub_2005/nrn/test_kahp_deeppyr.hoc | 50 + examples/traub_2005/nrn/test_kahp_slower.hoc | 50 + examples/traub_2005/nrn/test_kc.hoc | 50 + examples/traub_2005/nrn/test_kc_fast.hoc | 50 + examples/traub_2005/nrn/test_kdr.hoc | 28 + examples/traub_2005/nrn/test_kdr_fs.hoc | 28 + examples/traub_2005/nrn/test_km.hoc | 28 + examples/traub_2005/nrn/test_naf.hoc | 31 + examples/traub_2005/nrn/test_naf2.hoc | 31 + examples/traub_2005/nrn/test_naf2_nRT.hoc | 29 + examples/traub_2005/nrn/test_naf_tcr.hoc | 31 + examples/traub_2005/nrn/test_nap.hoc | 28 + examples/traub_2005/nrn/test_napf.hoc | 28 + examples/traub_2005/nrn/test_napf_ss.hoc | 31 + examples/traub_2005/nrn/test_napf_tcr.hoc | 28 + examples/traub_2005/nrn/test_nontuftedrs.hoc | 58 + examples/traub_2005/nrn/test_nrt.hoc | 58 + examples/traub_2005/nrn/test_singlecomp.hoc | 92 + .../traub_2005/nrn/test_spinystellate.hoc | 58 + examples/traub_2005/nrn/test_supaxoaxonic.hoc | 58 + examples/traub_2005/nrn/test_supbasket.hoc | 58 + examples/traub_2005/nrn/test_suplts.hoc | 58 + examples/traub_2005/nrn/test_suppyrfrb.hoc | 58 + examples/traub_2005/nrn/test_suppyrrs.hoc | 58 + examples/traub_2005/nrn/test_tcr.hoc | 58 + examples/traub_2005/nrn/test_tcr.old.hoc | 73 + examples/traub_2005/nrn/test_tuftedib.hoc | 58 + examples/traub_2005/nrn/test_tuftedrs.hoc | 58 + examples/traub_2005/nrn/testutils.hoc | 107 + examples/traub_2005/py/archan.py | 57 + examples/traub_2005/py/benchmark.sh | 17 + examples/traub_2005/py/cachans.py | 94 + examples/traub_2005/py/capool.py | 55 + examples/traub_2005/py/cell_test_util.py | 230 + examples/traub_2005/py/cells.py | 530 + examples/traub_2005/py/channel_test_util.py | 96 + examples/traub_2005/py/channelbase.py | 174 + examples/traub_2005/py/channelinit.py | 62 + examples/traub_2005/py/config.py | 161 + examples/traub_2005/py/custom.ini | 202 + examples/traub_2005/py/deadlock_bug.py | 266 + examples/traub_2005/py/defaults.ini | 212 + examples/traub_2005/py/display_morphology.py | 181 + examples/traub_2005/py/dump_f_i_curves.py | 112 + examples/traub_2005/py/fig_a2_fs.py | 126 + examples/traub_2005/py/fig_a3.py | 123 + examples/traub_2005/py/fig_a4c.py | 172 + examples/traub_2005/py/gui.py | 424 + examples/traub_2005/py/kchans.py | 255 + examples/traub_2005/py/nachans.py | 187 + .../traub_2005/py/proto/DeepAxoaxonic.levels | 60 + examples/traub_2005/py/proto/DeepAxoaxonic.p | 319 + .../traub_2005/py/proto/DeepBasket.levels | 60 + examples/traub_2005/py/proto/DeepBasket.p | 319 + examples/traub_2005/py/proto/DeepLTS.levels | 60 + examples/traub_2005/py/proto/DeepLTS.p | 319 + .../traub_2005/py/proto/NontuftedRS.depths | 14 + .../traub_2005/py/proto/NontuftedRS.levels | 52 + examples/traub_2005/py/proto/NontuftedRS.p | 274 + .../traub_2005/py/proto/SpinyStellate.levels | 59 + examples/traub_2005/py/proto/SpinyStellate.p | 319 + .../traub_2005/py/proto/SupAxoaxonic.levels | 59 + examples/traub_2005/py/proto/SupAxoaxonic.p | 303 + examples/traub_2005/py/proto/SupBasket.levels | 60 + examples/traub_2005/py/proto/SupBasket.p | 301 + examples/traub_2005/py/proto/SupLTS.levels | 60 + examples/traub_2005/py/proto/SupLTS.p | 319 + examples/traub_2005/py/proto/SupPyrFRB.depths | 12 + examples/traub_2005/py/proto/SupPyrFRB.levels | 74 + examples/traub_2005/py/proto/SupPyrFRB.p | 378 + examples/traub_2005/py/proto/SupPyrRS.depths | 12 + examples/traub_2005/py/proto/SupPyrRS.levels | 74 + examples/traub_2005/py/proto/SupPyrRS.p | 394 + examples/traub_2005/py/proto/TCR.levels | 138 + examples/traub_2005/py/proto/TCR.p | 709 + examples/traub_2005/py/proto/TuftedIB.levels | 62 + examples/traub_2005/py/proto/TuftedIB.p | 330 + examples/traub_2005/py/proto/TuftedRS.levels | 62 + examples/traub_2005/py/proto/TuftedRS.p | 329 + examples/traub_2005/py/proto/nRT.levels | 60 + examples/traub_2005/py/proto/nRT.p | 324 + examples/traub_2005/py/settings.py | 100 + examples/traub_2005/py/test_archan.py | 63 + examples/traub_2005/py/test_cachans.py | 102 + examples/traub_2005/py/test_capool.py | 129 + examples/traub_2005/py/test_deepaxoaxonic.py | 80 + examples/traub_2005/py/test_deepbasket.py | 80 + examples/traub_2005/py/test_deeplts.py | 80 + examples/traub_2005/py/test_hsolve_tcr.py | 96 + examples/traub_2005/py/test_kchans.py | 309 + examples/traub_2005/py/test_nachans.py | 317 + examples/traub_2005/py/test_nontuftedrs.py | 80 + examples/traub_2005/py/test_nrt.py | 80 + examples/traub_2005/py/test_singlecomp.py | 223 + examples/traub_2005/py/test_spinystellate.py | 80 + examples/traub_2005/py/test_supaxoaxonic.py | 80 + examples/traub_2005/py/test_supbasket.py | 80 + examples/traub_2005/py/test_suplts.py | 80 + examples/traub_2005/py/test_suppyrfrb.py | 80 + examples/traub_2005/py/test_suppyrrs.py | 80 + examples/traub_2005/py/test_tcr.py | 101 + examples/traub_2005/py/test_tuftedib.py | 80 + examples/traub_2005/py/test_tuftedrs.py | 80 + examples/traub_2005/py/testutils.py | 375 + examples/traub_2005/py/trbconfig.py | 150 + examples/traub_2005/py/vclamptest.py | 157 + .../tutorials/ChemicalBistables/19085.cspace | 1 + .../ChemicalBistables/doseResponse.py | 122 + .../ChemicalBistables/findSteadyState.py | 123 + .../tutorials/ChemicalBistables/mapkFB.png | Bin 0 -> 155914 bytes .../tutorials/ChemicalBistables/mapkFB.py | 80 + .../tutorials/ChemicalBistables/propBis.png | Bin 0 -> 32574 bytes .../ChemicalBistables/propagationBis.py | 168 + .../ChemicalBistables/scaleVolumes.py | 157 + .../tutorials/ChemicalBistables/simpleBis.py | 140 + .../tutorials/ChemicalBistables/strongBis.png | Bin 0 -> 28131 bytes .../tutorials/ChemicalBistables/strongBis.py | 90 + .../ChemicalOscillators/Kholodenko_tut.png | Bin 0 -> 6257 bytes .../ChemicalOscillators/TuringOneDim.py | 169 + .../ChemicalOscillators/relaxOsc_tut.png | Bin 0 -> 49157 bytes .../ChemicalOscillators/relaxationOsc.py | 89 + .../ChemicalOscillators/repressillator.py | 89 + .../ChemicalOscillators/repressillatorOsc.png | Bin 0 -> 12364 bytes .../ChemicalOscillators/slowFbOsc.py | 91 + .../ChemicalOscillators/turingPatternTut.png | Bin 0 -> 107356 bytes .../ExcInhNet_Ostojic2014_Brunel2000.py | 395 + .../ExcInhNet_Ostojic2014_Brunel2000_brian.py | 253 + ...ExcInhNet_Ostojic2014_Brunel2000_brian2.py | 243 + ...2014_Brunel2000_brian2_slow_2pops_4syns.py | 262 + .../ExcInhNet_HigginsGraupnerBrunel2014.py | 784 + .../Rdesigneur/cells/970529c.CNG.swc | 2493 ++ .../tutorials/Rdesigneur/cells/CA1.morph.xml | 12535 +++++++++ .../Rdesigneur/cells/DHC-neuron.CNG.swc | 6764 +++++ .../Rdesigneur/cells/VHC-neuron.CNG.swc | 3022 +++ .../cells/barrionuevo_cell1zr.CNG.swc | 2267 ++ .../tutorials/Rdesigneur/cells/ca1_minimal.p | 58 + .../tutorials/Rdesigneur/cells/h10.CNG.swc | 226 + .../tutorials/Rdesigneur/chans/CA1.morph.xml | 12673 +++++++++ examples/tutorials/Rdesigneur/chans/Ca.xml | 62 + .../tutorials/Rdesigneur/chans/CaConc.xml | 36 + .../tutorials/Rdesigneur/chans/DoubExpSyn.xml | 32 + .../Rdesigneur/chans/Generated.net.xml | 59 + examples/tutorials/Rdesigneur/chans/Glu.xml | 16 + .../tutorials/Rdesigneur/chans/HChannel.xml | 73 + examples/tutorials/Rdesigneur/chans/NMDA.xml | 16 + examples/tutorials/Rdesigneur/chans/hd.xml | 73 + examples/tutorials/Rdesigneur/chans/kad.xml | 84 + examples/tutorials/Rdesigneur/chans/kap.xml | 86 + examples/tutorials/Rdesigneur/chans/kdr.xml | 75 + examples/tutorials/Rdesigneur/chans/na3.xml | 107 + examples/tutorials/Rdesigneur/chans/nax.xml | 88 + examples/tutorials/Rdesigneur/chans/pas.xml | 17 + examples/tutorials/Rdesigneur/chem/psd52.g | 488 + examples/tutorials/Rdesigneur/chem/psd53.g | 477 + .../tutorials/Rdesigneur/chem/psd53_old.g | 474 + examples/tutorials/Rdesigneur/rdes_ex1.py | 5 + examples/tutorials/Rdesigneur/rdes_ex10.py | 41 + examples/tutorials/Rdesigneur/rdes_ex2.py | 12 + examples/tutorials/Rdesigneur/rdes_ex3.1.py | 54 + examples/tutorials/Rdesigneur/rdes_ex3.2.py | 69 + examples/tutorials/Rdesigneur/rdes_ex3.py | 17 + examples/tutorials/Rdesigneur/rdes_ex4.py | 19 + examples/tutorials/Rdesigneur/rdes_ex5.py | 19 + examples/tutorials/Rdesigneur/rdes_ex6.py | 34 + examples/tutorials/Rdesigneur/rdes_ex7.py | 14 + examples/tutorials/Rdesigneur/rdes_ex8.py | 37 + examples/tutorials/Rdesigneur/rdes_ex9.py | 40 + examples/unsorted/ksolve_with_heavy_load.py | 106 + examples/unsorted/test_function.py | 26 + examples/unsorted/test_gsolve.py | 53 + examples/util/moogli_viewer.py | 301 + examples/util/pymoose.py | 45 + mgui/MWindow.py | 1099 + mgui/RunWidget.py | 9 +- mgui/config.py | 15 + {icons => mgui/icons}/QMdiBackground.png | Bin {icons => mgui/icons}/add.png | Bin {icons => mgui/icons}/add_graph.png | Bin {icons => mgui/icons}/arrow.png | Bin {icons => mgui/icons}/arrow_undo.png | Bin {icons => mgui/icons}/classIcon/BufPool.png | Bin {icons => mgui/icons}/classIcon/CubeMesh.png | Bin {icons => mgui/icons}/classIcon/CylMesh.png | Bin {icons => mgui/icons}/classIcon/Enz.png | Bin {icons => mgui/icons}/classIcon/FuncPool.png | Bin {icons => mgui/icons}/classIcon/Function.png | Bin {icons => mgui/icons}/classIcon/MMenz.png | Bin {icons => mgui/icons}/classIcon/Pool.png | Bin {icons => mgui/icons}/classIcon/Reac.png | Bin .../icons}/classIcon/StimulusTable.png | Bin {icons => mgui/icons}/classIcon/SumFunc.png | Bin {icons => mgui/icons}/clone.svg | 16 +- {icons => mgui/icons}/connection.png | Bin {icons => mgui/icons}/continue.png | Bin {icons => mgui/icons}/delete.svg | 0 {icons => mgui/icons}/delete_graph.png | Bin {icons => mgui/icons}/grid.png | Bin {icons => mgui/icons}/hand.png | Bin {icons => mgui/icons}/help.png | Bin {icons => mgui/icons}/hopfield.png | Bin {icons => mgui/icons}/list.png | Bin {icons => mgui/icons}/moose_icon.png | Bin {icons => mgui/icons}/moose_icon_64x64.png | Bin {icons => mgui/icons}/moose_icon_large.png | Bin {icons => mgui/icons}/move.svg | 78 +- {icons => mgui/icons}/plot.svg | 0 {icons => mgui/icons}/reset.png | Bin {icons => mgui/icons}/run.png | Bin {icons => mgui/icons}/runtime.png | Bin {icons => mgui/icons}/squid.png | Bin {icons => mgui/icons}/stop.png | Bin ...straight_connector_with_filled_circles.png | Bin {icons => mgui/icons}/wrench.png | Bin mgui/mgui.py | 1216 +- mgui/plugins/kkit.py | 43 +- moose | 1 - setup.py | 2 +- 653 files changed, 364406 insertions(+), 1286 deletions(-) create mode 100644 examples/.gitignore create mode 100644 examples/.travis.yml create mode 100644 examples/LICENSE create mode 100644 examples/MemoryNetworks/bidirectional_plastic_switch.py create mode 100644 examples/MemoryNetworks/stargazin_synapse.g create mode 100644 examples/README.md create mode 100644 examples/_travis/.ignore_on_travis create mode 100644 examples/_travis/colors.sh create mode 100755 examples/_travis/find_scripts_to_run.sh create mode 100644 examples/_travis/matplotlibrc create mode 100755 examples/_travis/run_scripts.sh create mode 100644 examples/genesis/00001-sbml-l3v1.xml create mode 100644 examples/genesis/EGFR_MAPK_58.g create mode 100644 examples/genesis/EGFR_MAPK_58.png create mode 100644 examples/genesis/Kholodenko.g create mode 100644 examples/genesis/Kholodenko.png create mode 100644 examples/genesis/M1719.cspace create mode 100644 examples/genesis/M1719.g create mode 100644 examples/genesis/OSC_Cspace.g create mode 100644 examples/genesis/OSC_diff_vols.g create mode 100644 examples/genesis/Osc_cspace_ref_model.png create mode 100644 examples/genesis/Repressillator.g create mode 100644 examples/genesis/acc35.g create mode 100644 examples/genesis/acc68.g create mode 100644 examples/genesis/acc68.png create mode 100644 examples/genesis/chanPhosphByCaMKII.g create mode 100644 examples/genesis/enz_classical_explicit.g create mode 100644 examples/genesis/enz_rea.g create mode 100644 examples/genesis/kkit_objects_example.g create mode 100644 examples/genesis/reaction.g create mode 100644 examples/genesis/spineCa_CaM_diffn.g create mode 100644 examples/genesis/spineCa_diffn.g create mode 100755 examples/genesis/traff_nn_diff_BIS.g create mode 100644 examples/genesis/traff_nn_diff_TRI.g create mode 100644 examples/genesis/traff_nn_diff_TRI.png create mode 100644 examples/hopfield/guiHopfield.py create mode 100644 examples/hopfield/hopfield.py create mode 100644 examples/hopfield/hopfield1.py create mode 100644 examples/hopfield/hopfield_ui.py create mode 100644 examples/hopfield/hopfield_ui.ui create mode 100644 examples/hopfield/input.csv create mode 100644 examples/hopfield/memory1.csv create mode 100644 examples/hopfield/memory2.csv create mode 100644 examples/hopfield/test.py create mode 100644 examples/izhikevich/Izhikevich.py create mode 100644 examples/izhikevich/demogui_qt.py create mode 100644 examples/kinetics/test_ksolve.py create mode 100644 examples/moogli/color_update.py create mode 100644 examples/moogli/purkinje_simulation.py create mode 100644 examples/moogli/purkinje_simulation_with_rm.py create mode 100644 examples/moogli/purkinje_simulation_with_rm_and_graph.py create mode 100644 examples/moogli/simple_viewing.py create mode 100644 examples/neuroml/CA1PyramidalCell/CA1.net.xml create mode 100644 examples/neuroml/CA1PyramidalCell/CA1.py create mode 100644 examples/neuroml/CA1PyramidalCell/CA1_hsolve.py create mode 100644 examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml create mode 100644 examples/neuroml/CA1PyramidalCell/CA1soma.net.xml create mode 100644 examples/neuroml/CA1PyramidalCell/FvsI_CA1.py create mode 100644 examples/neuroml/CA1PyramidalCell/README create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/README create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml create mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml create mode 100644 examples/neuroml/GranuleCell/FvsI_Granule98.py create mode 100644 examples/neuroml/GranuleCell/Granule98.py create mode 100644 examples/neuroml/GranuleCell/Granule98_hsolve.py create mode 100644 examples/neuroml/GranuleCell/GranuleCell.net.xml create mode 100644 examples/neuroml/GranuleCell/README create mode 100644 examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml create mode 100644 examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml create mode 100644 examples/neuroml/LIF/FvsI_LIF.py create mode 100644 examples/neuroml/LIF/LIFinject.net.xml create mode 100644 examples/neuroml/LIF/LIFxml_firing.py create mode 100644 examples/neuroml/LIF/LIFxml_firing_hsolve.py create mode 100644 examples/neuroml/LIF/cells_channels/IaF.xml create mode 100644 examples/neuroml/LIF/cells_channels/LIF.morph.xml create mode 100644 examples/neuroml/LIF/cells_channels/exc_syn.xml create mode 100644 examples/neuroml/LIF/twoLIFs.net.xml create mode 100644 examples/neuroml/LIF/twoLIFxml_firing.py create mode 100644 examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml create mode 100644 examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml create mode 100644 examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml create mode 100644 examples/neuroml/OlfactoryBulbPassive/README create mode 100644 examples/neuroml/OlfactoryBulbPassive/cells/PG.xml create mode 100755 examples/neuroml/OlfactoryBulbPassive/cells/granule.xml create mode 100644 examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml create mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml create mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/README create mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml create mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/p.nml create mode 100644 examples/neuroml/allChannelsCell/README create mode 100644 examples/neuroml/allChannelsCell/allChannelsCell.net.xml create mode 100644 examples/neuroml/allChannelsCell/allChannelsCell.py create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml create mode 100644 examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml create mode 100644 examples/neuroml/lobster_pyloric/Generated.net.3syn.xml create mode 100644 examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml create mode 100644 examples/neuroml/lobster_pyloric/Generated.net.reverse.xml create mode 100644 examples/neuroml/lobster_pyloric/Generated.net.xml create mode 100644 examples/neuroml/lobster_pyloric/README create mode 100644 examples/neuroml/lobster_pyloric/STG.png create mode 100644 examples/neuroml/lobster_pyloric/STG_net.py create mode 100644 examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml create mode 100644 examples/neuroml/lobster_pyloric/cells/LP.morph.xml create mode 100644 examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml create mode 100644 examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml create mode 100644 examples/neuroml/lobster_pyloric/cells/PY.morph.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/CaS_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/CaT_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/ChannelTest.py create mode 100644 examples/neuroml/lobster_pyloric/channels/H_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/KA_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/KCa_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/Kd_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/LeakConductance.xml create mode 100644 examples/neuroml/lobster_pyloric/channels/Na_STG.xml create mode 100644 examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py create mode 100644 examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml create mode 100644 examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml create mode 100644 examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py create mode 100644 examples/neuroml/lobster_pyloric/synapses/load_synapses.py create mode 100644 examples/paper-2015/Fig2_elecModels/Fig2A.py create mode 100644 examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py create mode 100644 examples/paper-2015/Fig2_elecModels/Fig2C.py create mode 100644 examples/paper-2015/Fig2_elecModels/Fig2D.py create mode 100644 examples/paper-2015/Fig2_elecModels/Fig2E.py create mode 100644 examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml create mode 100644 examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc create mode 100644 examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc create mode 100644 examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p create mode 100644 examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc create mode 100644 examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc create mode 100644 examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/Ca.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/CaConc.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/Glu.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/HChannel.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/NMDA.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/hd.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/kad.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/kap.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/kdr.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/na3.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/nax.xml create mode 100644 examples/paper-2015/Fig2_elecModels/chans/pas.xml create mode 100644 examples/paper-2015/Fig3_chemModels/Fig3ABC.g create mode 100644 examples/paper-2015/Fig3_chemModels/Fig3D.py create mode 100644 examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py create mode 100644 examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g create mode 100644 examples/paper-2015/Fig4_ReacDiff/Fig4B.py create mode 100644 examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py create mode 100644 examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py create mode 100644 examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p create mode 100644 examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py create mode 100644 examples/paper-2015/Fig5_CellMultiscale/Fig5A.py create mode 100644 examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py create mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc create mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc create mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc create mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p create mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml create mode 100644 examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g create mode 100644 examples/paper-2015/Fig6_NetMultiscale/Fig6A.py create mode 100644 examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py create mode 100644 examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml create mode 100644 examples/paper-2015/Fig6_NetMultiscale/psd53.g create mode 100644 examples/paper-2015/README create mode 100644 examples/paper-2015/rxdSpineSize.py create mode 100644 examples/parallelSolver/Fig2_v4.py create mode 100644 examples/parallelSolver/README create mode 100644 examples/parallelSolver/abstrModelEqns2.py create mode 100644 examples/passive/passive_soma.py create mode 100755 examples/rall_1964/rall64.py create mode 100755 examples/rall_1964/rall64_graphic.py create mode 100644 examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py create mode 100644 examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py create mode 100644 examples/snippets/HsolveInstability.py create mode 100644 examples/snippets/IntegrateFireZoo.py create mode 100644 examples/snippets/Izhikevich_with_synapse.py create mode 100644 examples/snippets/MULTI/TuringInNeuron.py create mode 100644 examples/snippets/MULTI/ca1_asym.p create mode 100644 examples/snippets/MULTI/diffonly.g create mode 100644 examples/snippets/MULTI/diffusionOnly.py create mode 100644 examples/snippets/MULTI/loadMulti.py create mode 100644 examples/snippets/MULTI/midchan.py create mode 100644 examples/snippets/MULTI/mincell.p create mode 100644 examples/snippets/MULTI/mincell2.p create mode 100644 examples/snippets/MULTI/minchan.py create mode 100644 examples/snippets/MULTI/minimal.g create mode 100644 examples/snippets/MULTI/minimal.py create mode 100644 examples/snippets/MULTI/multi1.py create mode 100644 examples/snippets/MULTI/multi1_ee.py create mode 100644 examples/snippets/MULTI/multi2.py create mode 100644 examples/snippets/MULTI/multi3.py create mode 100644 examples/snippets/MULTI/proto18.py create mode 100644 examples/snippets/MULTI/psd_merged30.g create mode 100644 examples/snippets/MULTI/psd_merged30b.g create mode 100644 examples/snippets/MULTI/psd_merged31d.g create mode 100644 examples/snippets/MULTI/runcell18.py create mode 100644 examples/snippets/MULTI/x_compt.g create mode 100644 examples/snippets/MULTI/x_compt.py create mode 100644 examples/snippets/Osc.cspace create mode 100644 examples/snippets/RandSpikeStats.py create mode 100644 examples/snippets/STDP.py create mode 100644 examples/snippets/analogStimTable.py create mode 100644 examples/snippets/barrionuevo_cell1zr.CNG.swc create mode 100644 examples/snippets/bidirectionalPlasticity.py create mode 100644 examples/snippets/branching.p create mode 100644 examples/snippets/changeFuncExpression.py create mode 100644 examples/snippets/chemDoseResponse.py create mode 100644 examples/snippets/compartment_net.py create mode 100644 examples/snippets/compartment_net_no_array.py create mode 100644 examples/snippets/compartmental_neuron.py create mode 100644 examples/snippets/convert_Genesis2Sbml.py create mode 100644 examples/snippets/crossComptNeuroMesh.py create mode 100644 examples/snippets/crossComptOscillator.py create mode 100644 examples/snippets/crossComptSimpleReac.py create mode 100644 examples/snippets/crossComptSimpleReacGSSA.py create mode 100644 examples/snippets/cspaceSteadyState.py create mode 100644 examples/snippets/cubeMeshSigNeur.py create mode 100644 examples/snippets/cylinderDiffusion.py create mode 100644 examples/snippets/cylinderMotor.py create mode 100644 examples/snippets/diffEqSolution.py create mode 100644 examples/snippets/diffSpinyNeuron.py create mode 100644 examples/snippets/dotp.p create mode 100644 examples/snippets/fieldelement.py create mode 100644 examples/snippets/findChemSteadyState.py create mode 100644 examples/snippets/func.py create mode 100644 examples/snippets/funcInputToPools.py create mode 100644 examples/snippets/funcRateHarmonicOsc.py create mode 100644 examples/snippets/funcReacLotkaVolterra.py create mode 100644 examples/snippets/function.py create mode 100644 examples/snippets/gapjunction.py create mode 100644 examples/snippets/gssaCylinderDiffusion.py create mode 100644 examples/snippets/gssaRDspiny.py create mode 100644 examples/snippets/h10.CNG.swc create mode 100644 examples/snippets/hdfdemo.py create mode 100644 examples/snippets/helloMoose.py create mode 100644 examples/snippets/hhcomp.py create mode 100644 examples/snippets/insertSpines.py create mode 100644 examples/snippets/insertSpinesWithoutRdesigneur.py create mode 100644 examples/snippets/interpol.py create mode 100644 examples/snippets/interpol2d.py create mode 100644 examples/snippets/intfire.py create mode 100644 examples/snippets/ionchannel.py create mode 100644 examples/snippets/lif.py create mode 100644 examples/snippets/lifcomp.py create mode 100644 examples/snippets/loadCspaceModel.py create mode 100644 examples/snippets/loadKineticModel.py create mode 100644 examples/snippets/loadMorphology.py create mode 100644 examples/snippets/loadSbmlmodel.py create mode 100644 examples/snippets/mgblock.py create mode 100644 examples/snippets/multiComptSigNeur.py create mode 100644 examples/snippets/multicomp_lif.py create mode 100644 examples/snippets/multiscaleOneCompt.py create mode 100644 examples/snippets/neuronFromDotp.py create mode 100644 examples/snippets/nsdf.py create mode 100644 examples/snippets/nsdf_vec.py create mode 100644 examples/snippets/onetoonemsg.py create mode 100644 examples/snippets/proto18.py create mode 100644 examples/snippets/pulsegen.py create mode 100644 examples/snippets/pulsegen2.py create mode 100644 examples/snippets/pyrun.py create mode 100644 examples/snippets/pyrun1.py create mode 100644 examples/snippets/randomspike.py create mode 100644 examples/snippets/reacDiffBranchingNeuron.py create mode 100644 examples/snippets/reacDiffConcGradient.py create mode 100644 examples/snippets/reacDiffSpinyNeuron.py create mode 100644 examples/snippets/recurrentIntFire.py create mode 100644 examples/snippets/recurrentLIF.py create mode 100644 examples/snippets/rxdFuncDiffusion.py create mode 100644 examples/snippets/rxdFuncDiffusionStoch.py create mode 100644 examples/snippets/rxdReacDiffusion.py create mode 100644 examples/snippets/rxdSpineSize.py create mode 100644 examples/snippets/savemodel.py create mode 100644 examples/snippets/scaleVolumes.py create mode 100644 examples/snippets/scriptGssaSolver.py create mode 100644 examples/snippets/scriptKineticModel.py create mode 100644 examples/snippets/scriptKineticSolver.py create mode 100644 examples/snippets/showclocks.py create mode 100644 examples/snippets/showmsg.py create mode 100644 examples/snippets/singlemsgcross.py create mode 100644 examples/snippets/soma.p create mode 100644 examples/snippets/spinyNeuron.p create mode 100644 examples/snippets/stargazin_synapse.g create mode 100644 examples/snippets/startstop.py create mode 100644 examples/snippets/stimtable.py create mode 100644 examples/snippets/stochasticLotkaVolterra.py create mode 100644 examples/snippets/switchKineticSolvers.py create mode 100644 examples/snippets/symcompartment.py create mode 100644 examples/snippets/synapse.py create mode 100644 examples/snippets/synapse_tutorial.py create mode 100644 examples/snippets/synapse_tutorial_2.ipynb create mode 100644 examples/snippets/tabledemo.py create mode 100644 examples/snippets/testHsolve.py create mode 100644 examples/snippets/testRdesigneur.py create mode 100644 examples/snippets/testSigNeur.py create mode 100644 examples/snippets/testWigglySpines.py create mode 100644 examples/snippets/threading_demo.py create mode 100644 examples/snippets/timetable.py create mode 100644 examples/snippets/transportBranchingNeuron.py create mode 100644 examples/snippets/traub_naf.py create mode 100644 examples/snippets/tweakingParameters.py create mode 100644 examples/snippets/twocells.py create mode 100644 examples/snippets/vclamp.py create mode 100644 examples/snippets/vectors.py create mode 100644 examples/snippets/wildcard.py create mode 100644 examples/squid/.gitignore create mode 100644 examples/squid/README.txt create mode 100644 examples/squid/channeleditor.py create mode 100644 examples/squid/electronics.py create mode 100644 examples/squid/help.html create mode 100644 examples/squid/help.org create mode 100644 examples/squid/images/navigationtoolbar.jpg create mode 100644 examples/squid/squid.py create mode 100644 examples/squid/squid_demo.py create mode 100644 examples/squid/squid_setup.py create mode 100644 examples/squid/test_squid.py create mode 100644 examples/symcomp/compare_genesis.py create mode 100644 examples/symcomp/compartments.g create mode 100644 examples/symcomp/symcomp.g create mode 100644 examples/symcomp/symcomp.p create mode 100644 examples/symcomp/symcomp.py create mode 100644 examples/symcomp/symcomp_readcell.g create mode 100644 examples/symcomp/symcomp_readcell.py create mode 100644 examples/traub_2005/.ignore_on_travis create mode 100644 examples/traub_2005/README create mode 100644 examples/traub_2005/nrn/hoc/utility.hoc create mode 100644 examples/traub_2005/nrn/test_ar.hoc create mode 100644 examples/traub_2005/nrn/test_cad.hoc create mode 100644 examples/traub_2005/nrn/test_cal.hoc create mode 100644 examples/traub_2005/nrn/test_cat.hoc create mode 100644 examples/traub_2005/nrn/test_cat_a.hoc create mode 100644 examples/traub_2005/nrn/test_deepaxoaxonic.hoc create mode 100644 examples/traub_2005/nrn/test_deepbasket.hoc create mode 100644 examples/traub_2005/nrn/test_deeplts.hoc create mode 100644 examples/traub_2005/nrn/test_k2.hoc create mode 100644 examples/traub_2005/nrn/test_ka.hoc create mode 100644 examples/traub_2005/nrn/test_ka_ib.hoc create mode 100644 examples/traub_2005/nrn/test_kahp.hoc create mode 100644 examples/traub_2005/nrn/test_kahp_deeppyr.hoc create mode 100644 examples/traub_2005/nrn/test_kahp_slower.hoc create mode 100644 examples/traub_2005/nrn/test_kc.hoc create mode 100644 examples/traub_2005/nrn/test_kc_fast.hoc create mode 100644 examples/traub_2005/nrn/test_kdr.hoc create mode 100644 examples/traub_2005/nrn/test_kdr_fs.hoc create mode 100644 examples/traub_2005/nrn/test_km.hoc create mode 100644 examples/traub_2005/nrn/test_naf.hoc create mode 100644 examples/traub_2005/nrn/test_naf2.hoc create mode 100644 examples/traub_2005/nrn/test_naf2_nRT.hoc create mode 100644 examples/traub_2005/nrn/test_naf_tcr.hoc create mode 100644 examples/traub_2005/nrn/test_nap.hoc create mode 100644 examples/traub_2005/nrn/test_napf.hoc create mode 100644 examples/traub_2005/nrn/test_napf_ss.hoc create mode 100644 examples/traub_2005/nrn/test_napf_tcr.hoc create mode 100644 examples/traub_2005/nrn/test_nontuftedrs.hoc create mode 100644 examples/traub_2005/nrn/test_nrt.hoc create mode 100644 examples/traub_2005/nrn/test_singlecomp.hoc create mode 100644 examples/traub_2005/nrn/test_spinystellate.hoc create mode 100644 examples/traub_2005/nrn/test_supaxoaxonic.hoc create mode 100644 examples/traub_2005/nrn/test_supbasket.hoc create mode 100644 examples/traub_2005/nrn/test_suplts.hoc create mode 100644 examples/traub_2005/nrn/test_suppyrfrb.hoc create mode 100644 examples/traub_2005/nrn/test_suppyrrs.hoc create mode 100644 examples/traub_2005/nrn/test_tcr.hoc create mode 100644 examples/traub_2005/nrn/test_tcr.old.hoc create mode 100644 examples/traub_2005/nrn/test_tuftedib.hoc create mode 100644 examples/traub_2005/nrn/test_tuftedrs.hoc create mode 100644 examples/traub_2005/nrn/testutils.hoc create mode 100644 examples/traub_2005/py/archan.py create mode 100755 examples/traub_2005/py/benchmark.sh create mode 100644 examples/traub_2005/py/cachans.py create mode 100644 examples/traub_2005/py/capool.py create mode 100644 examples/traub_2005/py/cell_test_util.py create mode 100644 examples/traub_2005/py/cells.py create mode 100644 examples/traub_2005/py/channel_test_util.py create mode 100644 examples/traub_2005/py/channelbase.py create mode 100644 examples/traub_2005/py/channelinit.py create mode 100644 examples/traub_2005/py/config.py create mode 100644 examples/traub_2005/py/custom.ini create mode 100644 examples/traub_2005/py/deadlock_bug.py create mode 100644 examples/traub_2005/py/defaults.ini create mode 100644 examples/traub_2005/py/display_morphology.py create mode 100644 examples/traub_2005/py/dump_f_i_curves.py create mode 100644 examples/traub_2005/py/fig_a2_fs.py create mode 100644 examples/traub_2005/py/fig_a3.py create mode 100644 examples/traub_2005/py/fig_a4c.py create mode 100644 examples/traub_2005/py/gui.py create mode 100644 examples/traub_2005/py/kchans.py create mode 100644 examples/traub_2005/py/nachans.py create mode 100644 examples/traub_2005/py/proto/DeepAxoaxonic.levels create mode 100644 examples/traub_2005/py/proto/DeepAxoaxonic.p create mode 100644 examples/traub_2005/py/proto/DeepBasket.levels create mode 100644 examples/traub_2005/py/proto/DeepBasket.p create mode 100644 examples/traub_2005/py/proto/DeepLTS.levels create mode 100644 examples/traub_2005/py/proto/DeepLTS.p create mode 100644 examples/traub_2005/py/proto/NontuftedRS.depths create mode 100644 examples/traub_2005/py/proto/NontuftedRS.levels create mode 100644 examples/traub_2005/py/proto/NontuftedRS.p create mode 100644 examples/traub_2005/py/proto/SpinyStellate.levels create mode 100644 examples/traub_2005/py/proto/SpinyStellate.p create mode 100644 examples/traub_2005/py/proto/SupAxoaxonic.levels create mode 100644 examples/traub_2005/py/proto/SupAxoaxonic.p create mode 100644 examples/traub_2005/py/proto/SupBasket.levels create mode 100644 examples/traub_2005/py/proto/SupBasket.p create mode 100644 examples/traub_2005/py/proto/SupLTS.levels create mode 100644 examples/traub_2005/py/proto/SupLTS.p create mode 100644 examples/traub_2005/py/proto/SupPyrFRB.depths create mode 100644 examples/traub_2005/py/proto/SupPyrFRB.levels create mode 100644 examples/traub_2005/py/proto/SupPyrFRB.p create mode 100644 examples/traub_2005/py/proto/SupPyrRS.depths create mode 100644 examples/traub_2005/py/proto/SupPyrRS.levels create mode 100644 examples/traub_2005/py/proto/SupPyrRS.p create mode 100644 examples/traub_2005/py/proto/TCR.levels create mode 100644 examples/traub_2005/py/proto/TCR.p create mode 100644 examples/traub_2005/py/proto/TuftedIB.levels create mode 100644 examples/traub_2005/py/proto/TuftedIB.p create mode 100644 examples/traub_2005/py/proto/TuftedRS.levels create mode 100644 examples/traub_2005/py/proto/TuftedRS.p create mode 100644 examples/traub_2005/py/proto/nRT.levels create mode 100644 examples/traub_2005/py/proto/nRT.p create mode 100644 examples/traub_2005/py/settings.py create mode 100644 examples/traub_2005/py/test_archan.py create mode 100644 examples/traub_2005/py/test_cachans.py create mode 100644 examples/traub_2005/py/test_capool.py create mode 100644 examples/traub_2005/py/test_deepaxoaxonic.py create mode 100644 examples/traub_2005/py/test_deepbasket.py create mode 100644 examples/traub_2005/py/test_deeplts.py create mode 100644 examples/traub_2005/py/test_hsolve_tcr.py create mode 100644 examples/traub_2005/py/test_kchans.py create mode 100644 examples/traub_2005/py/test_nachans.py create mode 100644 examples/traub_2005/py/test_nontuftedrs.py create mode 100644 examples/traub_2005/py/test_nrt.py create mode 100644 examples/traub_2005/py/test_singlecomp.py create mode 100644 examples/traub_2005/py/test_spinystellate.py create mode 100644 examples/traub_2005/py/test_supaxoaxonic.py create mode 100644 examples/traub_2005/py/test_supbasket.py create mode 100644 examples/traub_2005/py/test_suplts.py create mode 100644 examples/traub_2005/py/test_suppyrfrb.py create mode 100644 examples/traub_2005/py/test_suppyrrs.py create mode 100644 examples/traub_2005/py/test_tcr.py create mode 100644 examples/traub_2005/py/test_tuftedib.py create mode 100644 examples/traub_2005/py/test_tuftedrs.py create mode 100644 examples/traub_2005/py/testutils.py create mode 100644 examples/traub_2005/py/trbconfig.py create mode 100644 examples/traub_2005/py/vclamptest.py create mode 100644 examples/tutorials/ChemicalBistables/19085.cspace create mode 100644 examples/tutorials/ChemicalBistables/doseResponse.py create mode 100644 examples/tutorials/ChemicalBistables/findSteadyState.py create mode 100644 examples/tutorials/ChemicalBistables/mapkFB.png create mode 100644 examples/tutorials/ChemicalBistables/mapkFB.py create mode 100644 examples/tutorials/ChemicalBistables/propBis.png create mode 100644 examples/tutorials/ChemicalBistables/propagationBis.py create mode 100644 examples/tutorials/ChemicalBistables/scaleVolumes.py create mode 100644 examples/tutorials/ChemicalBistables/simpleBis.py create mode 100644 examples/tutorials/ChemicalBistables/strongBis.png create mode 100644 examples/tutorials/ChemicalBistables/strongBis.py create mode 100644 examples/tutorials/ChemicalOscillators/Kholodenko_tut.png create mode 100644 examples/tutorials/ChemicalOscillators/TuringOneDim.py create mode 100644 examples/tutorials/ChemicalOscillators/relaxOsc_tut.png create mode 100644 examples/tutorials/ChemicalOscillators/relaxationOsc.py create mode 100644 examples/tutorials/ChemicalOscillators/repressillator.py create mode 100644 examples/tutorials/ChemicalOscillators/repressillatorOsc.png create mode 100644 examples/tutorials/ChemicalOscillators/slowFbOsc.py create mode 100644 examples/tutorials/ChemicalOscillators/turingPatternTut.png create mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py create mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py create mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py create mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py create mode 100644 examples/tutorials/ExcInhNetCaPlasticity/ExcInhNet_HigginsGraupnerBrunel2014.py create mode 100644 examples/tutorials/Rdesigneur/cells/970529c.CNG.swc create mode 100644 examples/tutorials/Rdesigneur/cells/CA1.morph.xml create mode 100644 examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc create mode 100644 examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc create mode 100644 examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc create mode 100644 examples/tutorials/Rdesigneur/cells/ca1_minimal.p create mode 100644 examples/tutorials/Rdesigneur/cells/h10.CNG.swc create mode 100644 examples/tutorials/Rdesigneur/chans/CA1.morph.xml create mode 100644 examples/tutorials/Rdesigneur/chans/Ca.xml create mode 100644 examples/tutorials/Rdesigneur/chans/CaConc.xml create mode 100644 examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml create mode 100644 examples/tutorials/Rdesigneur/chans/Generated.net.xml create mode 100644 examples/tutorials/Rdesigneur/chans/Glu.xml create mode 100644 examples/tutorials/Rdesigneur/chans/HChannel.xml create mode 100644 examples/tutorials/Rdesigneur/chans/NMDA.xml create mode 100644 examples/tutorials/Rdesigneur/chans/hd.xml create mode 100644 examples/tutorials/Rdesigneur/chans/kad.xml create mode 100644 examples/tutorials/Rdesigneur/chans/kap.xml create mode 100644 examples/tutorials/Rdesigneur/chans/kdr.xml create mode 100644 examples/tutorials/Rdesigneur/chans/na3.xml create mode 100644 examples/tutorials/Rdesigneur/chans/nax.xml create mode 100644 examples/tutorials/Rdesigneur/chans/pas.xml create mode 100644 examples/tutorials/Rdesigneur/chem/psd52.g create mode 100644 examples/tutorials/Rdesigneur/chem/psd53.g create mode 100644 examples/tutorials/Rdesigneur/chem/psd53_old.g create mode 100644 examples/tutorials/Rdesigneur/rdes_ex1.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex10.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex2.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex3.1.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex3.2.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex3.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex4.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex5.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex6.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex7.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex8.py create mode 100644 examples/tutorials/Rdesigneur/rdes_ex9.py create mode 100644 examples/unsorted/ksolve_with_heavy_load.py create mode 100644 examples/unsorted/test_function.py create mode 100644 examples/unsorted/test_gsolve.py create mode 100644 examples/util/moogli_viewer.py create mode 100644 examples/util/pymoose.py create mode 100644 mgui/MWindow.py rename {icons => mgui/icons}/QMdiBackground.png (100%) rename {icons => mgui/icons}/add.png (100%) rename {icons => mgui/icons}/add_graph.png (100%) rename {icons => mgui/icons}/arrow.png (100%) rename {icons => mgui/icons}/arrow_undo.png (100%) rename {icons => mgui/icons}/classIcon/BufPool.png (100%) rename {icons => mgui/icons}/classIcon/CubeMesh.png (100%) rename {icons => mgui/icons}/classIcon/CylMesh.png (100%) rename {icons => mgui/icons}/classIcon/Enz.png (100%) rename {icons => mgui/icons}/classIcon/FuncPool.png (100%) rename {icons => mgui/icons}/classIcon/Function.png (100%) rename {icons => mgui/icons}/classIcon/MMenz.png (100%) rename {icons => mgui/icons}/classIcon/Pool.png (100%) rename {icons => mgui/icons}/classIcon/Reac.png (100%) rename {icons => mgui/icons}/classIcon/StimulusTable.png (100%) rename {icons => mgui/icons}/classIcon/SumFunc.png (100%) rename {icons => mgui/icons}/clone.svg (98%) rename {icons => mgui/icons}/connection.png (100%) rename {icons => mgui/icons}/continue.png (100%) rename {icons => mgui/icons}/delete.svg (100%) rename {icons => mgui/icons}/delete_graph.png (100%) rename {icons => mgui/icons}/grid.png (100%) rename {icons => mgui/icons}/hand.png (100%) rename {icons => mgui/icons}/help.png (100%) rename {icons => mgui/icons}/hopfield.png (100%) rename {icons => mgui/icons}/list.png (100%) rename {icons => mgui/icons}/moose_icon.png (100%) rename {icons => mgui/icons}/moose_icon_64x64.png (100%) rename {icons => mgui/icons}/moose_icon_large.png (100%) rename {icons => mgui/icons}/move.svg (96%) rename {icons => mgui/icons}/plot.svg (100%) rename {icons => mgui/icons}/reset.png (100%) rename {icons => mgui/icons}/run.png (100%) rename {icons => mgui/icons}/runtime.png (100%) rename {icons => mgui/icons}/squid.png (100%) rename {icons => mgui/icons}/stop.png (100%) rename {icons => mgui/icons}/straight_connector_with_filled_circles.png (100%) rename {icons => mgui/icons}/wrench.png (100%) diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..ba74660 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,57 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ diff --git a/examples/.travis.yml b/examples/.travis.yml new file mode 100644 index 0000000..7aaff7a --- /dev/null +++ b/examples/.travis.yml @@ -0,0 +1,24 @@ +notifications: + email: + recipients: + - dilawar.s.rajput@gmail.com + - upi.bhalla@gmail.com + - ray.shubhasis@gmail.com + - hrani@ncbs.res.in + + +install: + - wget http://download.opensuse.org/repositories/home:moose/xUbuntu_12.04/Release.key + - sudo apt-key add - < Release.key + - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/moose/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/moose.list" + - sudo apt-get -y update + - sudo apt-get install python-h5py + - sudo apt-get install python3 + - sudo apt-get -y install moose + +script: + - # Making sure no python3 incompatible file. + - python3 -m compileall -q . + - python -c 'import moose' + - python -c 'import moogli' + - cd _travis && ./find_scripts_to_run.sh && ./run_scripts.sh diff --git a/examples/LICENSE b/examples/LICENSE new file mode 100644 index 0000000..8cdb845 --- /dev/null +++ b/examples/LICENSE @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + diff --git a/examples/MemoryNetworks/bidirectional_plastic_switch.py b/examples/MemoryNetworks/bidirectional_plastic_switch.py new file mode 100644 index 0000000..94521ff --- /dev/null +++ b/examples/MemoryNetworks/bidirectional_plastic_switch.py @@ -0,0 +1,93 @@ +"""bidirectional_plastic_switch.py: + +Apply sequences of random input to this switch and plot the correlation between output +sequences. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2015, Dilawar Singh and NCBS Bangalore" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import moose +import os +import sys +import pylab + + +def applyInputPulseTrain(mooseElem, fieldName, pulseTrain): + """ + Apply a train of pulse: a list of (time, value) tuples, to fieldName of + mooseElem. + + time is incremental. + """ + for (t, v) in pulseTrain: + moose.start(t) + mooseElem.setField(fieldName, v) + +def dumpPlots(): + fname = 'bidirectionalPlasticity.plot' + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/model/graphs/conc#/#,/model/moregraphs/conc#/#' ): + moose.element( x[0] ).xplot( fname, x[0].name ) + +def getPlotData(): + totR = moose.element('/model/graphs/conc1/tot_PSD_R.Co') + PP1 = moose.element('/model/moregraphs/conc4/PP1_dash_active.Co') + Ca = moose.element('/model/graphs/conc1/Ca.Co') + return totR.vector, PP1.vector, Ca.vector + +def displayPlots(): + clock = moose.Clock( '/clock' ) # look up global clock + totR = moose.element( '/model/graphs/conc1/tot_PSD_R.Co' ) + PP1 = moose.element( '/model/moregraphs/conc4/PP1_dash_active.Co' ) + Ca = moose.element( '/model/graphs/conc1/Ca.Co' ) + pylab.plot( pylab.linspace( 0, clock.currentTime, len( totR.vector )), totR.vector, label='membrane Receptor' ) + pylab.plot( pylab.linspace( 0, clock.currentTime, len( PP1.vector ) ), PP1.vector, label='active PP1' ) + pylab.plot( pylab.linspace( 0, clock.currentTime, len( Ca.vector ) ), Ca.vector, label='Ca' ) + pylab.legend() + pylab.show() + +def main(): + """ + This is a toy model of synaptic bidirectional plasticity. The model has + a small a bistable chemical switch, and a small set of reactions that + decode calcium input. One can turn the switch on with short high + calcium pulses (over 2 uM for about 10 sec). One can turn it back off + again using a long, lower calcium pulse (0.2 uM, 2000 sec). + """ + method = 'old_gssa' # This is the Gillespie Stoichastic Systems Algorithm + if ( len( sys.argv ) >= 2 ): + method = sys.argv[1] + if ( method == "gsl" ): + method = "old_gsl" + if ( method == "gssa" ): + method = "old_gssa" + # Load in the model and set up to use the specified method + modelId = moose.loadModel( './stargazin_synapse.g', 'model', method ) + moose.start( 1000.0 ) # Run the model for 1000 seconds. + Ca = moose.element( '/model/kinetics/BULK/Ca' ) + + applyInputPulseTrain(Ca, 'concInit' + , [ (1000.0, 1.0e-3) + , (10.0, 0.08e-3) + , (50.0, 1.0e-3) + , (10.0, 0.08e-3) + , (1000.0, 0.2e-3) + , (2000.0, 0.08e-3) + ] + ) + moose.start(2000.0) + displayPlots() + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/MemoryNetworks/stargazin_synapse.g b/examples/MemoryNetworks/stargazin_synapse.g new file mode 100644 index 0000000..b6241c2 --- /dev/null +++ b/examples/MemoryNetworks/stargazin_synapse.g @@ -0,0 +1,413 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Mon Jul 8 15:42:18 2013 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 1000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 9e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 0 0.83333 5 0 0 0 6 0 \ + /kinetics/geometry 35 0 0 7 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 0 yellow 0 x 0 0 "" PP1_PSD \ + defaultfile.g 0 0 0 7 10 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue yellow -4 -5 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -2 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -6 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.5 15 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/inact_CaMKII 0 0 8 8 48 48 0 0 6 0 \ + /kinetics/geometry[1] blue 0 5 11 0 +simundump text /kinetics/PSD/inact_CaMKII/notes 0 "" +call /kinetics/PSD/inact_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_bind_CaM 0 0.1 0.1 "" white 0 3 9 0 +simundump text /kinetics/PSD/CaMKII_bind_CaM/notes 0 "" +call /kinetics/PSD/CaMKII_bind_CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM.CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue 0 0 11 0 +simundump text /kinetics/PSD/CaM.CaMKII/notes 0 "" +call /kinetics/PSD/CaM.CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Basal_CaMKII 0 0 0.83333 0.83333 5 5 0 0 6 0 \ + /kinetics/geometry[2] blue 0 -5 9 0 +simundump text /kinetics/PSD/Basal_CaMKII/notes 0 "" +call /kinetics/PSD/Basal_CaMKII/notes LOAD \ +"" +simundump group /kinetics/BULK 0 yellow black x 0 0 "" BULK defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/BULK/notes 0 "" +call /kinetics/BULK/notes LOAD \ +"" +simundump kpool /kinetics/BULK/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/BULK/iR/notes 0 "Same as Fus3\n" +call /kinetics/BULK/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/BULK/PP1-inactive 0 0 0.66667 0.66667 36 36 0 0 54 \ + 0 /kinetics/geometry[1] blue yellow -4 -10 0 +simundump text /kinetics/BULK/PP1-inactive/notes 0 "" +call /kinetics/BULK/PP1-inactive/notes LOAD \ +"" +simundump kpool /kinetics/BULK/Ca 0 0 0.08 0.08 4.32 4.32 0 0 54 4 \ + /kinetics/geometry[1] 54 yellow 8 0 0 +simundump text /kinetics/BULK/Ca/notes 0 "" +call /kinetics/BULK/Ca/notes LOAD \ +"" +simundump kpool /kinetics/BULK/CaN 0 0 0.037037 0.037037 2 2 0 0 54 0 \ + /kinetics/geometry[1] 9 yellow 8 -5 0 +simundump text /kinetics/BULK/CaN/notes 0 "" +call /kinetics/BULK/CaN/notes LOAD \ +"" +simundump kpool /kinetics/BULK/Ca4.CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] 7 yellow 1 -5 0 +simundump text /kinetics/BULK/Ca4.CaN/notes 0 "" +call /kinetics/BULK/Ca4.CaN/notes LOAD \ +"" +simundump kenz /kinetics/BULK/Ca4.CaN/CaN_enz 0 0 0 0 0 54 0.92593 4 1 0 0 "" \ + red 7 "" 1 -7 0 +simundump text /kinetics/BULK/Ca4.CaN/CaN_enz/notes 0 "" +call /kinetics/BULK/Ca4.CaN/CaN_enz/notes LOAD \ +"" +simundump kreac /kinetics/BULK/CaN_bind_Ca 0 4e-06 0.1 "" white yellow 4 -7 0 +simundump text /kinetics/BULK/CaN_bind_Ca/notes 0 "" +call /kinetics/BULK/CaN_bind_Ca/notes LOAD \ +"" +simundump kreac /kinetics/BULK/CaM_bind_Ca 0 1e-08 1 "" white yellow 4 3 0 +simundump text /kinetics/BULK/CaM_bind_Ca/notes 0 "" +call /kinetics/BULK/CaM_bind_Ca/notes LOAD \ +"" +simundump kpool /kinetics/BULK/CaM 0 0 0.88889 0.88889 48 48 0 0 54 0 \ + /kinetics/geometry[1] 25 yellow 8 5 0 +simundump text /kinetics/BULK/CaM/notes 0 "" +call /kinetics/BULK/CaM/notes LOAD \ +"" +simundump kpool /kinetics/BULK/Ca4.CaM 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] 26 yellow 1 5 0 +simundump text /kinetics/BULK/Ca4.CaM/notes 0 "" +call /kinetics/BULK/Ca4.CaM/notes LOAD \ +"" +simundump kreac /kinetics/BULK/inactivate_PP1 0 0.05 0.002 "" white yellow -6 \ + -7 0 +simundump text /kinetics/BULK/inactivate_PP1/notes 0 "" +call /kinetics/BULK/inactivate_PP1/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 3523.1 -2.2424 40 0 +simundump xgraph /graphs/conc2 0 0 3523.1 0 40 0 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 4 0 0 1 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 54 0 0 1 +simundump xplot /graphs/conc2/iR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 3523.1 1.8672e-07 0.093991 0 +simundump xgraph /moregraphs/conc4 0 0 3523.1 0 11.572 0 +simundump xplot /moregraphs/conc3/Ca4.CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 7 0 0 1 +simundump xplot /moregraphs/conc3/Ca4.CaM.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 26 0 0 1 +simundump xplot /moregraphs/conc4/PP1-active.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /moregraphs/conc4/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 35 0 0 1 +simundump xcoredraw /edit/draw 0 -12 10 -18 13 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"" \ +"" \ +"16 Dec 2011. Completely new PSD version, where the R, Rp and Rpp" \ +"all refer to AMPAR bound to two stargazins, and each p is on one" \ +"of the stargazins. " \ +"" \ +"stargazin_psd2.g: tweaked traffic parameters to get bistability." \ +"Very bistable." \ +"" \ +"17 Dec 2011. stargazin_psd3.g: Minor change: reduced kcat for" \ +"CaN from 10 to 2." \ +"" \ +"stargazin_psd4.g: Changed some rates around so that it responds" \ +"in a more relevant range for CaMKII activation in the full model." \ +"Also renamed the Receptor-Stargazin pools to clarify that the" \ +"phospho steps are on the stargazin." \ +"" \ +"stargazin_psd5.g: Incorporated traffic rates from the " \ +"traffillator analysis." \ +"" \ +"stargazin_psd6.g: Raised CaN Km from 5 to 10 uM." \ +"" \ +"stargazin_psd8.g: Increased level of PP2A by 3x so we have at least" \ +"2 molecules of it in the PSD. Lowered kcat to match." \ +"" \ +"stargazin_psd9.g: Fine-tuning trafficking parameters to see if we" \ +"can improve Kramer time for off-to-on transition." \ +"" \ +"stargazin_psd11.g: first pass at revised stargazin using PP1-active" \ +"instead of CaN." \ +"" \ +"stargazin_psd12.g: Fine-tuned version of 11, with the traffic" \ +"rates estimated from traffillator analysis." \ +"" \ +"stargazin_psd12a.g: Minor naming change." \ +"" \ +"stargazin_psd12b.g: More naming change: PP2A becomes " \ +"basal_phosphatase." \ +"" \ +"07 July 2013: Adding in toy regulation by Ca." \ +"stargazin_snapse2.g: turnon happens but not turnoff." \ +"Did doser for PP1-active. Halfmax is only 0.08. Hence problem." \ +"" \ +"stargazin_synapse4.g: Scaled up doser for PP1-active so halfmax" \ +"is now up to 0.2 uM." \ +"stargazin_synapse5.g: A big of fine-tuning on the levels of PP1 " \ +"and CaMKII so that the bidirectional flip is possible." \ +"stargazin_synapse6.g: OK, now a set of parameters that do" \ +"bidirectional state flips with reasonable Ca levels." \ +"0.08 is bistable" \ +"2.0 turns on" \ +"0.2 turns off." \ +"" \ +"08 July 2013. Stargazin_synapse7.g: Raised CaM to match CaMKII" \ +"levels, so that the " \ +"turnon is faster." \ +"stargazin_synapse8.g: Further raise of CaM and CaMKII, now" \ +"turnon happens within 20 sec." \ +"stargazin_synapse9.g: Added Ca plot." \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/Basal_CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/PSD/PP1_PSD/PP1-active MM_PRD pA +addmsg /kinetics/BULK/inactivate_PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n +addmsg /kinetics/BULK/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/inact_CaMKII REAC A B +addmsg /kinetics/BULK/Ca4.CaM /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n +addmsg /kinetics/PSD/inact_CaMKII /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/CaMKII_bind_CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/CaM.CaMKII REAC B A +addmsg /kinetics/PSD/move_to_PSD /kinetics/BULK/iR REAC A B +addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/PP1-inactive REAC sA B +addmsg /kinetics/BULK/inactivate_PP1 /kinetics/BULK/PP1-inactive REAC B A +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/CaN REAC A B +addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/Ca4.CaN REAC eA B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca4.CaN REAC B A +addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/Ca4.CaN/CaN_enz ENZYME n +addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/Ca4.CaN/CaN_enz SUBSTRATE n +addmsg /kinetics/BULK/CaN /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/CaN_bind_Ca PRODUCT n +addmsg /kinetics/BULK/CaM /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca4.CaM /kinetics/BULK/CaM_bind_Ca PRODUCT n +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/CaM REAC A B +addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/BULK/Ca4.CaM REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca4.CaM REAC B A +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/BULK/inactivate_PP1 SUBSTRATE n +addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/inactivate_PP1 PRODUCT n +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 +addmsg /kinetics/BULK/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *54 +addmsg /kinetics/BULK/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 +addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +addmsg /kinetics/BULK/Ca4.CaN /moregraphs/conc3/Ca4.CaN.Co PLOT Co *Ca4.CaN.Co *7 +addmsg /kinetics/BULK/Ca4.CaM /moregraphs/conc3/Ca4.CaM.Co PLOT Co *Ca4.CaM.Co *26 +addmsg /kinetics/PSD/PP1_PSD/PP1-active /moregraphs/conc4/PP1-active.Co PLOT Co *PP1-active.Co *blue +addmsg /kinetics/PSD/actCaMKII /moregraphs/conc4/actCaMKII.Co PLOT Co *actCaMKII.Co *35 +enddump +// End of dump + +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/BULK/iR/notes LOAD \ +"Same as Fus3" \ +"" +complete_loading diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..30797ae --- /dev/null +++ b/examples/README.md @@ -0,0 +1,3 @@ +[![Build Status](https://travis-ci.org/BhallaLab/moose-examples.svg)](https://travis-ci.org/BhallaLab/moose-examples). + +Examples, tutorial and demo scripts. diff --git a/examples/_travis/.ignore_on_travis b/examples/_travis/.ignore_on_travis new file mode 100644 index 0000000..e69de29 diff --git a/examples/_travis/colors.sh b/examples/_travis/colors.sh new file mode 100644 index 0000000..79c561c --- /dev/null +++ b/examples/_travis/colors.sh @@ -0,0 +1,45 @@ +# Definitions of colors in bash +RESTORE='\033[0m' + +RED='\033[00;31m' +GREEN='\033[00;32m' +YELLOW='\033[00;33m' +BLUE='\033[00;34m' +PURPLE='\033[00;35m' +CYAN='\033[00;36m' +LIGHTGRAY='\033[00;37m' + +LRED='\033[01;31m' +LGREEN='\033[01;32m' +LYELLOW='\033[01;33m' +LBLUE='\033[01;34m' +LPURPLE='\033[01;35m' +LCYAN='\033[01;36m' +WHITE='\033[01;37m' + +function coloredPrint +{ + case $1 in + "WARN") + echo -e "[WARN] ${LRED} $2 ${RESTORE} $3" + ;; + "INFO") + echo -e "[INFO] ${LGREEN} $2 ${RESTORE} $3" + ;; + "ERROR") + echo -e "[ERROR] ${RED} $2 ${RESTORE} $3" + ;; + "DEBUG") + echo -e "[DEBUG] ${YELLOW} $2 ${RESTORE} $3" + ;; + "STEP") + echo -e "[STEP] ${BLUE} $2 ${RESTORE} $3" + ;; + "TODO") + echo -e "[TODO] ${CYAN} $2 ${RESTORE} $3" + ;; + *) + echo -e "[$1] $2 $3" + ;; + esac +} diff --git a/examples/_travis/find_scripts_to_run.sh b/examples/_travis/find_scripts_to_run.sh new file mode 100755 index 0000000..a4f674c --- /dev/null +++ b/examples/_travis/find_scripts_to_run.sh @@ -0,0 +1,89 @@ +#!/bin/bash +#set -x +set -e +source ./colors.sh + +# matplotlibrc file. +MATPLOTRC=./matplotlibrc + +PWD=$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd) + +# All scripts are here. +SRCDIR=./.. + +MAINLESS=$PWD/MAINLESS +BLACKLISTED=$PWD/BLACKLISTED +GUI=$PWD/GUISCRIPTS +INTERACTIVE=$PWD/INTERACTIVE +TORUN=$PWD/TORUN +BROKEN=$PWD/BROKEN + +for f in $MAINLESS $BLACKLISTED $GUI $INTERACTIVE $TORUN; do + # Remove already existing files + if [ -f $f ]; then + rm -f $f + fi +done + +declare -i a +PYC=`which python` + +function check_file +{ + filepath="$1" + + # These files were not tested on travis. Check issue #2 + if [[ $filepath == *"Fig2A.py" ]]; then + echo "$filepath is disabled by developer" + return + elif [[ $filepath == *"nsdf_vec.py" ]]; then + echo "$filepath is disabled by developer" + return + fi + + if grep -q "__BROKEN__" $filepath + then + coloredPrint "INFO" "This script is marked as broken by developer" + echo $filepath >> $BROKEN + elif grep -q "input(" $filepath + then + coloredPrint WARN "File contains input() call. Interactive script. \ + WONT RUN" + echo $filepath >> $INTERACTIVE + elif grep -q "QtGui" $filepath + then + coloredPrint WARN "File seems to be a GUI. WONT RUN" + echo $filepath >> $GUI + elif grep -q "__main__\|main(" $filepath + then + coloredPrint "INFO" "Script with main() or __main__" + echo $filepath >> $TORUN + fi +} + +function find_files +{ + echo "|| searching for files in $1" + PYFILES=`find "$1" \( -name "*.py" ! -iname "test_all*" \)` + for pyf in $PYFILES; do + let a=a+1 + dn=`dirname $pyf` + fn=`basename $pyf` + # copy matplotlibrc file to working directory + check_file $pyf + done +} + +# Search files to run. One can ignore directories which has .dont_run_on_travis +# file in them. + +DIRS_TO_SEARCH="" +while read -r dir; do + echo $dir + if [ -f $dir/.ignore_on_travis ]; then + echo "Ignoring this directory on travis" + else + echo "Find script from this directory to run" + find_files $dir + fi +done < <(find $SRCDIR -mindepth 1 -maxdepth 1 -type d) diff --git a/examples/_travis/matplotlibrc b/examples/_travis/matplotlibrc new file mode 100644 index 0000000..066b1bc --- /dev/null +++ b/examples/_travis/matplotlibrc @@ -0,0 +1,11 @@ +# This is configuration file for matplotlib used in examples. +# We use this configuration file to test the examples. Copy this configuration +# file in the current working directory and run the snippet. + +# This configuration file does the followings: +# - plt.show() function become non-blocking. + +backend : agg + +# This makes all plots non-blocking. +interactive : True diff --git a/examples/_travis/run_scripts.sh b/examples/_travis/run_scripts.sh new file mode 100755 index 0000000..c0140b9 --- /dev/null +++ b/examples/_travis/run_scripts.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +PWD=$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd) + +BLACKLISTED=$PWD/BLACKLISTED +SUCCEEDED=$PWD/SUCCEEDED +FAILED=$PWD/FAILED +TEMP=$PWD/__temp__ + +rm -f $BLACKLISTED $SUCCEEDED $FAILED $TEMP TORUN +$PWD/find_scripts_to_run.sh + +PYC=`which python` +MATPLOTRC=$PWD/matplotlibrc +if [ ! -f $MATPLOTRC ]; then + echo "$MATPLOTRC not found" + exit +fi + +TIMEOUT=5m +for f in `cat ./TORUN`; do + d=`dirname $f` + fn=`basename $f` + ( + cp $MATPLOTRC $d/ + cd $d + echo "++ Executing script $f" + # Do not run more than 2 minutes. + timeout $TIMEOUT $PYC $fn &> $TEMP + status=$? + if [ "$status" -eq "0" ]; then # success + echo "|| Success. Written to $SUCCEEDED" + echo "- [x] $f" >> $SUCCEEDED + elif [ "$status" -gt "128" ]; then # timeout + # If there is timeout then add to BLACKLISTED + echo "|| Killed by signal status: $status" + echo "- [ ] $f" >> $BLACKLISTED + sed -i 's/^/\ \ /' $TEMP + printf "\n\`i\`\`\n" >> $BLACKLISTED + cat $TEMP >> $BLACKLISTED + printf "\`\`\`\n" >> $BLACKLISTED + else # Failed + echo "|| Failed with status "$status" " + echo "- [ ] $f" >> $FAILED + sed -i 's/^/\ \ /' $TEMP + printf "\n\`\`\`\n" >> $FAILED + cat $TEMP >> $FAILED + printf "\`\`\`\n" >> $FAILED + cat $TEMP + echo "|| Failed. Error written to $FAILED" + fi + ) +done + +echo "Following scripts were successful" +cat $SUCCEEDED + +if [ -f $BLACKLISTED ]; then + echo "Following scripts were blacklisted due to timeout or singal interrupt" + cat $BLACKLISTED +fi + +if [ -f $FAILED ]; then + echo "==========================================" + echo "Following scripts failed." + cat $FAILED + exit 1 +fi + +## If less than 84 files passed, raise and error. diff --git a/examples/genesis/00001-sbml-l3v1.xml b/examples/genesis/00001-sbml-l3v1.xml new file mode 100644 index 0000000..135d833 --- /dev/null +++ b/examples/genesis/00001-sbml-l3v1.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + compartment + k1 + S1 + + + + + + + diff --git a/examples/genesis/EGFR_MAPK_58.g b/examples/genesis/EGFR_MAPK_58.g new file mode 100644 index 0000000..9995eac --- /dev/null +++ b/examples/genesis/EGFR_MAPK_58.g @@ -0,0 +1,750 @@ +//genesis +// kkit Version 9 flat dumpfile + +// Saved on Mon Dec 22 14:54:02 2003 + +include kkit {argv 1} + +FASTDT = 0.001 +SIMDT = 0.005 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-15 +VERSION = 9.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump kpool CoTotal CoInit Co n nInit nTotal nMin vol slave_enable notes \ + xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump linkinfo xtree_fg_req xtree_textfg_req uplink downlink x y z +simobjdump uplink xtree_fg_req xtree_textfg_req x y z +simobjdump downlink xtree_fg_req xtree_textfg_req x y z +simobjdump mirror notes xtree_fg_req x y z +simundump kpool /kinetics/PKC-active 1 0.15 0.09 0.09 54000 54000 90000 0 \ + 6e+05 6 "" red black 7 22 0 +simundump kenz /kinetics/PKC-active/PKC-act-raf 1 0 0 0 0 6e+05 5e-07 16 4 0 \ + 0 "" red yellow "" 8 7 0 +simundump kenz /kinetics/PKC-active/PKC-inact-GAP 1 0 0 0 0 1 1e-05 16 4 0 0 \ + "" red yellow "" 3 13 0 +simundump kenz /kinetics/PKC-active/PKC-act-GEF 1 0 0 0 0 1 1e-05 16 4 0 0 "" \ + red yellow "" 7.2909 20.733 0 +simundump kpool /kinetics/MAPK* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" orange \ + yellow 12 1 0 +simundump kenz /kinetics/MAPK*/MAPK*-feedback 1 0 0 0 0 6e+05 3.25e-06 40 10 \ + 0 0 "" red orange "" 4.934 23.653 0 +simundump kenz /kinetics/MAPK*/phosph_Sos 1 0 0 0 0 6e+05 3.25e-05 40 10 0 0 \ + "" red orange "" 18 40 0 +simundump kpool /kinetics/BetaGamma 1 1.6 0.0094 0.0094 5640 5640 9.6e+05 0 \ + 6e+05 4 "" yellow black 18 16 0 +simundump group /kinetics/MAPK 0 brown black x 0 0 "" defaultfile \ + defaultfile.g 0 0 0 14.616 11.191 0 +simundump kpool /kinetics/MAPK/craf-1 0 0.2 0.2 0.2 1.2e+05 1.2e+05 1.2e+05 0 \ + 6e+05 0 "" pink brown 6.326 8.1168 0 +simundump kpool /kinetics/MAPK/craf-1* 0 0.2 0 0 0 0 1.2e+05 0 6e+05 0 "" \ + pink brown 9.2401 7.7115 0 +simundump kpool /kinetics/MAPK/MAPKK 0 0.18 0.18 0.18 1.08e+05 1.08e+05 \ + 1.08e+05 0 6e+05 0 "" pink brown 6.3315 3.9894 0 +simundump kpool /kinetics/MAPK/MAPK 0 0.36 0.36 0.36 2.16e+05 2.16e+05 \ + 2.16e+05 0 6e+05 0 "" pink brown 6.0656 1.0863 0 +simundump kpool /kinetics/MAPK/craf-1** 1 0.2 0 0 0 0 1.2e+05 0 6e+05 0 "" \ + hotpink brown 12.464 7.9022 0 +simundump kpool /kinetics/MAPK/MAPK-tyr 1 0.36 0 0 0 0 2.16e+05 0 6e+05 0 "" \ + orange brown 8.4147 0.82034 0 +simundump kpool /kinetics/MAPK/MAPKK* 0 0.18 0 0 0 0 1.08e+05 0 6e+05 0 "" \ + pink brown 12.548 4.0256 0 +simundump kenz /kinetics/MAPK/MAPKK*/MAPKKtyr 0 0 0 0 0 6e+05 2.7e-05 0.6 \ + 0.15 0 0 "" red pink "" 8.8914 3.5531 0 +simundump kenz /kinetics/MAPK/MAPKK*/MAPKKthr 1 0 0 0 0 6e+05 2.7e-05 0.6 \ + 0.15 0 0 "" red pink "" 12.961 3.0363 0 +simundump kpool /kinetics/MAPK/MAPKK-ser 1 0.18 0 0 0 0 1.08e+05 0 6e+05 0 "" \ + pink brown 9.2652 4.1657 0 +simundump kpool /kinetics/MAPK/Raf-GTP-Ras* 1 0.0104 0 0 0 0 6240 0 6e+05 0 \ + "" red brown 4.9054 6.7814 0 +simundump kenz /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 1 0 0 0 0 1 5.5e-06 \ + 0.42 0.105 0 0 "" red red "" 7.6179 6.2189 0 +simundump kenz /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 1 0 0 0 0 1 5.5e-06 \ + 0.42 0.105 0 0 "" red red "" 10.698 6.0688 0 +simundump kpool /kinetics/MKP-1 1 0.008 0.0024 0.0024 1440 1440 4800 0 6e+05 \ + 0 "" hotpink black 5.0816 2.4407 0 +simundump kenz /kinetics/MKP-1/MKP1-tyr-deph 1 0 0 0 0 6e+05 0.000125 4 1 0 0 \ + "" red hotpink "" 6.2781 3.0684 0 +simundump kenz /kinetics/MKP-1/MKP1-thr-deph 1 0 0 0 0 6e+05 0.000125 4 1 0 0 \ + "" red hotpink "" 10.789 2.9311 0 +simundump kreac /kinetics/Ras-act-craf 1 4e-05 0.5 "" white black 3.5614 \ + 10.091 0 +simundump kpool /kinetics/PPhosphatase2A 1 0.224 0.224 0.224 1.344e+05 \ + 1.344e+05 1.344e+05 0 6e+05 0 "" hotpink yellow 9.3898 9.1309 0 +simundump kenz /kinetics/PPhosphatase2A/craf-deph 1 0 0 0 0 6e+05 3.3e-06 25 \ + 6 0 0 "" red hotpink "" 7.8013 10.215 0 +simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph 1 0 0 0 0 6e+05 3.3e-06 25 \ + 6 0 0 "" red hotpink "" 13.159 6.0736 0 +simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph-ser 1 0 0 0 0 6e+05 \ + 3.3e-06 25 6 0 0 "" red hotpink "" 4.8651 5.9208 0 +simundump kenz /kinetics/PPhosphatase2A/craf**-deph 1 0 0 0 0 1 3.3e-06 25 6 \ + 0 0 "" red hotpink "" 12.446 9.9054 0 +simundump group /kinetics/Ras 1 blue black x 0 0 "" defaultfile defaultfile.g \ + 0 0 0 14.513 16.351 0 +simundump kreac /kinetics/Ras/bg-act-GEF 1 1e-05 1 "" white blue 13.468 \ + 14.838 0 +simundump kpool /kinetics/Ras/GEF-Gprot-bg 1 0.1 0 0 0 0 60000 0 6e+05 0 "" \ + hotpink blue 10.373 17.271 0 +simundump kenz /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras 1 0 0 0 0 6e+05 \ + 3.3e-07 0.08 0.02 0 0 "" red hotpink "" 10.402 16.523 0 +simundump kreac /kinetics/Ras/dephosph-GEF 1 1 0 "" white blue 9.0702 17.881 \ + 0 +simundump kpool /kinetics/Ras/inact-GEF 1 0.1 0.1 0.1 60000 60000 60000 0 \ + 6e+05 0 "" hotpink blue 12 20 0 +simundump kpool /kinetics/Ras/GEF* 1 0.1 0 0 0 0 60000 0 6e+05 0 "" hotpink \ + blue 6.4483 17.246 0 +simundump kenz /kinetics/Ras/GEF*/GEF*-act-ras 1 0 0 0 0 6e+05 3.3e-07 0.08 \ + 0.02 0 0 "" red hotpink "" 7.0855 16.086 0 +simundump kpool /kinetics/Ras/GTP-Ras 1 0.2 0 0 0 0 1.2e+05 0 6e+05 0 "" \ + orange blue 12.564 13.084 0 +simundump kpool /kinetics/Ras/GDP-Ras 1 0.2 0.2 0.2 1.2e+05 1.2e+05 1.2e+05 0 \ + 6e+05 0 "" pink blue 6.1309 14.165 0 +simundump kreac /kinetics/Ras/Ras-intrinsic-GTPase 1 1e-04 0 "" white blue \ + 9.0979 13.5 0 +simundump kreac /kinetics/Ras/dephosph-GAP 1 0.1 0 "" white blue 4.0234 \ + 15.524 0 +simundump kpool /kinetics/Ras/GAP* 1 0.05 0 0 0 0 30000 0 6e+05 0 "" red blue \ + 1.3498 14.349 0 +simundump kpool /kinetics/Ras/GAP 1 0.002 0.002 0.002 1200 1200 1200 0 6e+05 \ + 0 "" red blue 6.6549 12.338 0 +simundump kenz /kinetics/Ras/GAP/GAP-inact-ras 1 0 0 0 0 6e+05 8.2476e-05 40 \ + 10 0 0 "" red red "" 9.0121 12.403 0 +simundump kpool /kinetics/Ras/inact-GEF* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + hotpink blue 15 20 0 +simundump kreac /kinetics/Ras/CaM-bind-GEF 1 1e-04 1 "" white blue 2.4861 \ + 21.679 0 +simundump kpool /kinetics/Ras/CaM-GEF 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + pink blue 5.3451 19.58 0 +simundump kenz /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras 1 0 0 0 0 6e+05 3.3e-07 \ + 0.08 0.02 0 0 "" red pink "" 5.0223 18.657 0 +simundump kreac /kinetics/Ras/dephosph-inact-GEF* 1 1 0 "" white blue 14.431 \ + 21.995 0 +simundump kpool /kinetics/PKA-active 1 0.015 0.015 0.015 9000 9000 9000 0 \ + 6e+05 4 "" yellow black 18 18 0 +simundump kenz /kinetics/PKA-active/PKA-phosph-GEF 1 0 0 0 0 6e+05 1e-05 36 9 \ + 0 0 "" red yellow "" 14 18 0 +simundump kpool /kinetics/CaM-Ca4 1 5 0 0 0 0 3e+06 0 6e+05 4 "" blue yellow \ + 0 19 0 +simundump kpool /kinetics/Shc*.Sos.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + brown yellow 11.263 27.112 0 +simundump kenz /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF 1 0 0 0 0 6e+05 3.3e-07 \ + 0.08 0.02 0 0 "" red brown "" 11.266 24.47 0 +simundump group /kinetics/EGFR 1 yellow black x 0 0 "" defaultfile \ + defaultfile.g 0 0 0 7.0249 39.57 0 +simundump kpool /kinetics/EGFR/EGFR 1 0.16667 0.16667 0.16667 1e+05 1e+05 \ + 1e+05 0 6e+05 0 "" red yellow 1.9551 39.853 0 +simundump kreac /kinetics/EGFR/act_EGFR 1 7e-06 0.25 "" white yellow 4.4894 \ + 38.493 0 +simundump kpool /kinetics/EGFR/L.EGFR 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" red \ + yellow 6.2195 36.599 0 +simundump kenz /kinetics/EGFR/L.EGFR/phosph_Shc 1 0 0 0 0 6e+05 2e-06 0.8 0.2 \ + 0 0 "" red red "" 9.0331 36.49 0 +simundump kpool /kinetics/EGFR/EGF 1 1 0 0 0 0 6e+05 0 6e+05 4 "" red yellow \ + 2.2719 36.309 0 +simundump kpool /kinetics/EGFR/SHC 1 1 0.5 0.5 3e+05 3e+05 6e+05 0 6e+05 0 "" \ + orange yellow 8.3857 33.936 0 +simundump kpool /kinetics/EGFR/SHC* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + orange yellow 12.832 33.029 0 +simundump kreac /kinetics/EGFR/dephosph_Shc 1 0.0016667 0 "" white yellow \ + 9.7373 31.442 0 +simundump kpool /kinetics/EGFR/Internal_L.EGFR 1 1.6667e-06 0 0 0 0 1 0 6e+05 \ + 0 "" red yellow 6.3061 41.93 0 +simundump kreac /kinetics/EGFR/Internalize 1 0.002 0.00033 "" white yellow \ + 4.5213 39.863 0 +simundump group /kinetics/Sos 1 blue black x 0 0 "" defaultfile defaultfile.g \ + 0 0 0 19.547 34.811 0 +simundump kreac /kinetics/Sos/Shc_bind_Sos.Grb2 1 8.333e-07 0.1 "" white blue \ + 10.23 29.891 0 +simundump kpool /kinetics/Sos/Sos*.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + orange blue 12.274 41.661 0 +simundump kreac /kinetics/Sos/Grb2_bind_Sos* 1 4.1667e-08 0.0168 "" white \ + blue 10.533 38.235 0 +simundump kpool /kinetics/Sos/Grb2 1 1 1 1 6e+05 6e+05 6e+05 0 6e+05 0 "" \ + orange blue 14.742 35.301 0 +simundump kpool /kinetics/Sos/Sos.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + orange blue 13.988 30.097 0 +simundump kpool /kinetics/Sos/Sos* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" red \ + blue 15.421 40.215 0 +simundump kreac /kinetics/Sos/dephosph_Sos 1 0.001 0 "" white blue 13.185 \ + 37.153 0 +simundump kreac /kinetics/Sos/Grb2_bind_Sos 1 4.1667e-08 0.0168 "" white blue \ + 16.422 33.133 0 +simundump kpool /kinetics/Sos/Sos 1 0.1 0.1 0.1 60000 60000 60000 0 6e+05 0 \ + "" red blue 17.381 36.794 0 +simundump xgraph /graphs/conc1 0 0 2000 0 0.01146 0 +simundump xgraph /graphs/conc2 0 360.16 2000 0.015494 0.49511 0 +simundump xplot /graphs/conc1/MAPK*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " orange 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2000 -1.1176e-08 1 0 +simundump xgraph /moregraphs/conc4 0 0 2000 0 1 0 +simundump xcoredraw /edit/draw 0 -4.5315 19.369 -1.5185 44.269 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"1 Sep 2003: Based on nonscaf_syn1c.g, which in turn is just " \ +"like nonscaf_syn1b.g" \ +"with all plots but MAPK* stripped out." \ +"The current version provides the Ca input through a fast" \ +"(10 msec) time-course reaction step so that the Ca can undergo" \ +"fluctuations." \ +"1 Oct 2003: Identical to nonscaf_syn1e.g, added a few plots." \ +"9 Dec 2003: Identical to nonscaf_syn1f.g, added a plot for Ca" \ +"22 Dec 2003: Based on nonscaf_syn1g.g, eliminated all except the" \ +"core MAPK pathway and its inputs. Cleared out plots too." \ +"Set basic values for PKC, PKA, CaM-Ca4 and Betagamma." +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/PKC-active REAC eA B +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/PKC-active REAC eA B +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/PKC-active REAC eA B +addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-raf ENZYME n +addmsg /kinetics/MAPK/craf-1 /kinetics/PKC-active/PKC-act-raf SUBSTRATE n +addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-inact-GAP ENZYME n +addmsg /kinetics/Ras/GAP /kinetics/PKC-active/PKC-inact-GAP SUBSTRATE n +addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-GEF ENZYME n +addmsg /kinetics/Ras/inact-GEF /kinetics/PKC-active/PKC-act-GEF SUBSTRATE n +addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK* REAC eA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK* MM_PRD pA +addmsg /kinetics/MKP-1/MKP1-thr-deph /kinetics/MAPK* REAC sA B +addmsg /kinetics/MAPK*/phosph_Sos /kinetics/MAPK* REAC eA B +addmsg /kinetics/MAPK* /kinetics/MAPK*/MAPK*-feedback ENZYME n +addmsg /kinetics/MAPK/craf-1* /kinetics/MAPK*/MAPK*-feedback SUBSTRATE n +addmsg /kinetics/MAPK* /kinetics/MAPK*/phosph_Sos ENZYME n +addmsg /kinetics/Sos/Sos /kinetics/MAPK*/phosph_Sos SUBSTRATE n +addmsg /kinetics/Ras/bg-act-GEF /kinetics/BetaGamma REAC A B +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1 REAC sA B +addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1 MM_PRD pA +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1* MM_PRD pA +addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1* REAC sA B +addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1* REAC sA B +addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1* MM_PRD pA +addmsg /kinetics/Ras-act-craf /kinetics/MAPK/craf-1* REAC A B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK MM_PRD pA +addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 /kinetics/MAPK/MAPKK REAC sA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK REAC sA B +addmsg /kinetics/MKP-1/MKP1-tyr-deph /kinetics/MAPK/MAPK MM_PRD pA +addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1** MM_PRD pA +addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1** REAC sA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK-tyr MM_PRD pA +addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPK-tyr REAC sA B +addmsg /kinetics/MKP-1/MKP1-tyr-deph /kinetics/MAPK/MAPK-tyr REAC sA B +addmsg /kinetics/MKP-1/MKP1-thr-deph /kinetics/MAPK/MAPK-tyr MM_PRD pA +addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPKK* REAC eA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPKK* REAC eA B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK* REAC sA B +addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 /kinetics/MAPK/MAPKK* MM_PRD pA +addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKtyr ENZYME n +addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MAPKK*/MAPKKtyr SUBSTRATE n +addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKthr ENZYME n +addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MAPK/MAPKK*/MAPKKthr SUBSTRATE n +addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK-ser MM_PRD pA +addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK-ser REAC sA B +addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 /kinetics/MAPK/MAPKK-ser MM_PRD pA +addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 /kinetics/MAPK/MAPKK-ser REAC sA B +addmsg /kinetics/Ras-act-craf /kinetics/MAPK/Raf-GTP-Ras* REAC B A +addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 /kinetics/MAPK/Raf-GTP-Ras* REAC eA B +addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 /kinetics/MAPK/Raf-GTP-Ras* REAC eA B +addmsg /kinetics/MAPK/Raf-GTP-Ras* /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 ENZYME n +addmsg /kinetics/MAPK/MAPKK /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 SUBSTRATE n +addmsg /kinetics/MAPK/Raf-GTP-Ras* /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 ENZYME n +addmsg /kinetics/MAPK/MAPKK-ser /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 SUBSTRATE n +addmsg /kinetics/MKP-1/MKP1-tyr-deph /kinetics/MKP-1 REAC eA B +addmsg /kinetics/MKP-1/MKP1-thr-deph /kinetics/MKP-1 REAC eA B +addmsg /kinetics/MKP-1 /kinetics/MKP-1/MKP1-tyr-deph ENZYME n +addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MKP-1/MKP1-tyr-deph SUBSTRATE n +addmsg /kinetics/MKP-1 /kinetics/MKP-1/MKP1-thr-deph ENZYME n +addmsg /kinetics/MAPK* /kinetics/MKP-1/MKP1-thr-deph SUBSTRATE n +addmsg /kinetics/MAPK/Raf-GTP-Ras* /kinetics/Ras-act-craf PRODUCT n +addmsg /kinetics/MAPK/craf-1* /kinetics/Ras-act-craf SUBSTRATE n +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras-act-craf SUBSTRATE n +addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf-deph ENZYME n +addmsg /kinetics/MAPK/craf-1* /kinetics/PPhosphatase2A/craf-deph SUBSTRATE n +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph ENZYME n +addmsg /kinetics/MAPK/MAPKK* /kinetics/PPhosphatase2A/MAPKK-deph SUBSTRATE n +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph-ser ENZYME n +addmsg /kinetics/MAPK/MAPKK-ser /kinetics/PPhosphatase2A/MAPKK-deph-ser SUBSTRATE n +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf**-deph ENZYME n +addmsg /kinetics/MAPK/craf-1** /kinetics/PPhosphatase2A/craf**-deph SUBSTRATE n +addmsg /kinetics/BetaGamma /kinetics/Ras/bg-act-GEF SUBSTRATE n +addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/bg-act-GEF SUBSTRATE n +addmsg /kinetics/Ras/GEF-Gprot-bg /kinetics/Ras/bg-act-GEF PRODUCT n +addmsg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras /kinetics/Ras/GEF-Gprot-bg REAC eA B +addmsg /kinetics/Ras/bg-act-GEF /kinetics/Ras/GEF-Gprot-bg REAC B A +addmsg /kinetics/Ras/GEF-Gprot-bg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras ENZYME n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras SUBSTRATE n +addmsg /kinetics/Ras/GEF* /kinetics/Ras/dephosph-GEF SUBSTRATE n +addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/dephosph-GEF PRODUCT n +addmsg /kinetics/Ras/bg-act-GEF /kinetics/Ras/inact-GEF REAC A B +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/inact-GEF REAC sA B +addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/inact-GEF REAC B A +addmsg /kinetics/PKA-active/PKA-phosph-GEF /kinetics/Ras/inact-GEF REAC sA B +addmsg /kinetics/Ras/CaM-bind-GEF /kinetics/Ras/inact-GEF REAC A B +addmsg /kinetics/Ras/dephosph-inact-GEF* /kinetics/Ras/inact-GEF REAC B A +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/GEF* MM_PRD pA +addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/GEF* REAC A B +addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GEF* REAC eA B +addmsg /kinetics/Ras/GEF* /kinetics/Ras/GEF*/GEF*-act-ras ENZYME n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/GEF*/GEF*-act-ras SUBSTRATE n +addmsg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras /kinetics/Ras/GTP-Ras MM_PRD pA +addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GTP-Ras REAC sA B +addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GTP-Ras REAC A B +addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GTP-Ras MM_PRD pA +addmsg /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras /kinetics/Ras/GTP-Ras MM_PRD pA +addmsg /kinetics/Ras-act-craf /kinetics/Ras/GTP-Ras REAC A B +addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GTP-Ras MM_PRD pA +addmsg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras /kinetics/Ras/GDP-Ras REAC sA B +addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GDP-Ras MM_PRD pA +addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GDP-Ras REAC B A +addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GDP-Ras REAC sA B +addmsg /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras /kinetics/Ras/GDP-Ras REAC sA B +addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GDP-Ras REAC sA B +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/Ras-intrinsic-GTPase SUBSTRATE n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/Ras-intrinsic-GTPase PRODUCT n +addmsg /kinetics/Ras/GAP* /kinetics/Ras/dephosph-GAP SUBSTRATE n +addmsg /kinetics/Ras/GAP /kinetics/Ras/dephosph-GAP PRODUCT n +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP* MM_PRD pA +addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP* REAC A B +addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GAP REAC eA B +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP REAC sA B +addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP REAC B A +addmsg /kinetics/Ras/GAP /kinetics/Ras/GAP/GAP-inact-ras ENZYME n +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/GAP/GAP-inact-ras SUBSTRATE n +addmsg /kinetics/PKA-active/PKA-phosph-GEF /kinetics/Ras/inact-GEF* MM_PRD pA +addmsg /kinetics/Ras/dephosph-inact-GEF* /kinetics/Ras/inact-GEF* REAC A B +addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/CaM-bind-GEF SUBSTRATE n +addmsg /kinetics/Ras/CaM-GEF /kinetics/Ras/CaM-bind-GEF PRODUCT n +addmsg /kinetics/CaM-Ca4 /kinetics/Ras/CaM-bind-GEF SUBSTRATE n +addmsg /kinetics/Ras/CaM-bind-GEF /kinetics/Ras/CaM-GEF REAC B A +addmsg /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras /kinetics/Ras/CaM-GEF REAC eA B +addmsg /kinetics/Ras/CaM-GEF /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras ENZYME n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras SUBSTRATE n +addmsg /kinetics/Ras/inact-GEF* /kinetics/Ras/dephosph-inact-GEF* SUBSTRATE n +addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/dephosph-inact-GEF* PRODUCT n +addmsg /kinetics/PKA-active/PKA-phosph-GEF /kinetics/PKA-active REAC eA B +addmsg /kinetics/PKA-active /kinetics/PKA-active/PKA-phosph-GEF ENZYME n +addmsg /kinetics/Ras/inact-GEF /kinetics/PKA-active/PKA-phosph-GEF SUBSTRATE n +addmsg /kinetics/Ras/CaM-bind-GEF /kinetics/CaM-Ca4 REAC A B +addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Shc*.Sos.Grb2 REAC B A +addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Shc*.Sos.Grb2 REAC eA B +addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF ENZYME n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF SUBSTRATE n +addmsg /kinetics/EGFR/act_EGFR /kinetics/EGFR/EGFR REAC A B +addmsg /kinetics/EGFR/EGFR /kinetics/EGFR/act_EGFR SUBSTRATE n +addmsg /kinetics/EGFR/EGF /kinetics/EGFR/act_EGFR SUBSTRATE n +addmsg /kinetics/EGFR/L.EGFR /kinetics/EGFR/act_EGFR PRODUCT n +addmsg /kinetics/EGFR/act_EGFR /kinetics/EGFR/L.EGFR REAC B A +addmsg /kinetics/EGFR/L.EGFR/phosph_Shc /kinetics/EGFR/L.EGFR REAC eA B +addmsg /kinetics/EGFR/Internalize /kinetics/EGFR/L.EGFR REAC A B +addmsg /kinetics/EGFR/L.EGFR /kinetics/EGFR/L.EGFR/phosph_Shc ENZYME n +addmsg /kinetics/EGFR/SHC /kinetics/EGFR/L.EGFR/phosph_Shc SUBSTRATE n +addmsg /kinetics/EGFR/act_EGFR /kinetics/EGFR/EGF REAC A B +addmsg /kinetics/EGFR/dephosph_Shc /kinetics/EGFR/SHC REAC B A +addmsg /kinetics/EGFR/L.EGFR/phosph_Shc /kinetics/EGFR/SHC REAC sA B +addmsg /kinetics/EGFR/dephosph_Shc /kinetics/EGFR/SHC* REAC A B +addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/EGFR/SHC* REAC A B +addmsg /kinetics/EGFR/L.EGFR/phosph_Shc /kinetics/EGFR/SHC* MM_PRD pA +addmsg /kinetics/EGFR/SHC* /kinetics/EGFR/dephosph_Shc SUBSTRATE n +addmsg /kinetics/EGFR/SHC /kinetics/EGFR/dephosph_Shc PRODUCT n +addmsg /kinetics/EGFR/Internalize /kinetics/EGFR/Internal_L.EGFR REAC B A +addmsg /kinetics/EGFR/L.EGFR /kinetics/EGFR/Internalize SUBSTRATE n +addmsg /kinetics/EGFR/Internal_L.EGFR /kinetics/EGFR/Internalize PRODUCT n +addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n +addmsg /kinetics/EGFR/SHC* /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n +addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 PRODUCT n +addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos*.Grb2 REAC B A +addmsg /kinetics/Sos/Sos* /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n +addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n +addmsg /kinetics/Sos/Sos*.Grb2 /kinetics/Sos/Grb2_bind_Sos* PRODUCT n +addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Grb2 REAC A B +addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Grb2 REAC A B +addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos.Grb2 REAC B A +addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Sos/Sos.Grb2 REAC A B +addmsg /kinetics/MAPK*/phosph_Sos /kinetics/Sos/Sos* MM_PRD pA +addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos* REAC A B +addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos* REAC A B +addmsg /kinetics/Sos/Sos* /kinetics/Sos/dephosph_Sos SUBSTRATE n +addmsg /kinetics/Sos/Sos /kinetics/Sos/dephosph_Sos PRODUCT n +addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n +addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Grb2_bind_Sos PRODUCT n +addmsg /kinetics/Sos/Sos /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n +addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos REAC A B +addmsg /kinetics/MAPK*/phosph_Sos /kinetics/Sos/Sos REAC sA B +addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos REAC B A +addmsg /kinetics/MAPK* /graphs/conc1/MAPK*.Co PLOT Co *MAPK*.Co *orange +enddump +// End of dump + +call /kinetics/PKC-active/PKC-act-raf/notes LOAD \ +"Rate consts from Chen et al Biochem 32, 1032 (1993)" \ +"k3 = k2 = 4" \ +"k1 = 9e-5" \ +"recalculated gives 1.666e-5, which is not very different." \ +"Looks like k3 is rate-limiting in this case: there is a huge amount" \ +"of craf locked up in the enz complex. Let us assume a 10x" \ +"higher Km, ie, lower affinity. k1 drops by 10x." \ +"Also changed k2 to 4x k3." \ +"Lowerd k1 to 1e-6 to balance 10X DAG sensitivity of PKC" +call /kinetics/PKC-active/PKC-inact-GAP/notes LOAD \ +"Rate consts copied from PCK-act-raf" \ +"This reaction inactivates GAP. The idea is from the " \ +"Boguski and McCormick review." +call /kinetics/PKC-active/PKC-act-GEF/notes LOAD \ +"Rate consts from PKC-act-raf." \ +"This reaction activates GEF. It can lead to at least 2X stim of ras, and" \ +"a 2X stim of MAPK over and above that obtained via direct phosph of" \ +"c-raf. Note that it is a push-pull reaction, and there is also a contribution" \ +"through the phosphorylation and inactivation of GAPs." \ +"The original PKC-act-raf rate consts are too fast. We lower K1 by 10 X" +call /kinetics/MAPK*/MAPK*-feedback/notes LOAD \ +"Ueki et al JBC 269(22):15756-15761 show the presence of" \ +"this step, but not the rate consts, which are derived from" \ +"Sanghera et al JBC 265(1):52-57, 1990, see the deriv in the" \ +"MAPK* notes." +call /kinetics/MAPK*/phosph_Sos/notes LOAD \ +"See Porfiri and McCormick JBC 271:10 pp5871 1996 for the" \ +"existence of this step. We'll take the rates from the ones" \ +"used for the phosph of Raf by MAPK." \ +"Sep 17 1997: The transient activation curve matches better" \ +"with k1 up by 10 x." +call /kinetics/BetaGamma/notes LOAD \ +"These exist in a nebulous sense in this model, basically only to balance" \ +"the conservation equations. The details of their reassociation with G-GDP" \ +"are not modeled" \ +"Resting level =0.0094, stim level =.0236 from all42.g ish." +call /kinetics/MAPK/craf-1/notes LOAD \ +"Couldn't find any ref to the actual conc of craf-1 but I" \ +"should try Strom et al Oncogene 5 pp 345" \ +"In line with the other kinases in the cascade, I estimate the conc to be" \ +"0.2 uM. To init we use 0.15, which is close to equil" +call /kinetics/MAPK/MAPKK/notes LOAD \ +"Conc is from Seger et al JBC 267:20 pp14373 (1992)" \ +"mwt is 45/46 Kd" \ +"We assume that phosphorylation on both ser and thr is needed for" \ +"activiation. See Kyriakis et al Nature 358 417 1992" \ +"Init conc of total is 0.18" \ +"" +call /kinetics/MAPK/MAPK/notes LOAD \ +"conc is from Sanghera et al JBC 265 pp 52 (1990)" \ +"A second calculation gives 3.1 uM, from same paper." \ +"They est MAPK is 1e-4x total protein, and protein is 15% of cell wt," \ +"so MAPK is 1.5e-5g/ml = 0.36uM. which is closer to our first estimate." \ +"Lets use this." +call /kinetics/MAPK/craf-1**/notes LOAD \ +"Negative feedback by MAPK* by hyperphosphorylating craf-1* gives" \ +"rise to this pool." \ +"Ueki et al JBC 269(22):15756-15761, 1994" \ +"" +call /kinetics/MAPK/MAPK-tyr/notes LOAD \ +"Haystead et al FEBS Lett. 306(1) pp 17-22 show that phosphorylation" \ +"is strictly sequential, first tyr185 then thr183." +call /kinetics/MAPK/MAPKK*/notes LOAD \ +"MAPKK phosphorylates MAPK on both the tyr and thr residues, first" \ +"tyr then thr. Refs: Seger et al JBC267:20 pp 14373 1992" \ +"The MAPKK itself is phosphorylated on ser as well as thr residues." \ +"Let us assume that the ser goes first, and that the sequential phosphorylation" \ +"is needed. See Kyriakis et al Nature 358 417-421 1992" +call /kinetics/MAPK/MAPKK*/MAPKKtyr/notes LOAD \ +"The actual MAPKK is 2 forms from Seger et al JBC 267:20 14373(1992)" \ +"Vmax = 150nmol/min/mg" \ +"From Haystead et al FEBS 306(1):17-22 we get Km=46.6nM for at least one" \ +"of the phosphs." \ +"Putting these together:" \ +"k3=0.15/sec, scale to get k2=0.6." \ +"k1=0.75/46.6nM=2.7e-5" +call /kinetics/MAPK/MAPKK*/MAPKKthr/notes LOAD \ +"Rate consts same as for MAPKKtyr." +call /kinetics/MAPK/MAPKK-ser/notes LOAD \ +"Intermediately phophorylated, assumed inactive, form of MAPKK" +call /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1/notes LOAD \ +"Kinetics are the same as for the craf-1* activity, ie.," \ +"k1=1.1e-6, k2=.42, k3 =0.105" \ +"These are based on Force et al PNAS USA 91 1270-1274 1994." \ +"These parms cannot reach the observed 4X stim of MAPK. So lets" \ +"increase the affinity, ie, raise k1 10X to 1.1e-5" \ +"Lets take it back down to where it was." \ +"Back up to 5X: 5.5e-6" +call /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2/notes LOAD \ +"Same kinetics as other c-raf activated forms. See " \ +"Force et al PNAS 91 1270-1274 1994." \ +"k1 = 1.1e-6, k2 = .42, k3 = 1.05" \ +"raise k1 to 5.5e-6" \ +"" +call /kinetics/MKP-1/notes LOAD \ +"MKP-1 dephosphoryates and inactivates MAPK in vivo: Sun et al Cell 75 " \ +"487-493 1993. Levels of MKP-1" \ +"are regulated, and rise in 1 hour. " \ +"Kinetics from Charles et al PNAS 90:5292-5296 1993. They refer" \ +"to Charles et al Oncogene 7 187-190 who show that half-life of MKP1/3CH134" \ +"is 40 min. 80% deph of MAPK in 20 min" \ +"Sep 17 1997: CoInit now 0.4x to 0.0032. See parm searches" \ +"from jun96 on." +call /kinetics/MKP-1/MKP1-tyr-deph/notes LOAD \ +"The original kinetics have been modified to obey the k2 = 4 * k3 rule," \ +"while keeping kcat and Km fixed. As noted in the NOTES, the only constraining" \ +"data point is the time course of MAPK dephosphorylation, which this" \ +"model satisfies. It would be nice to have more accurate estimates of" \ +"rate consts and MKP-1 levels from the literature. " \ +"Effective Km : 67 nM" \ +"kcat = 1.43 umol/min/mg" +call /kinetics/MKP-1/MKP1-thr-deph/notes LOAD \ +"See MKP1-tyr-deph" +call /kinetics/Ras-act-craf/notes LOAD \ +"Assume the binding is fast and limited only by the amount of " \ +"Ras* available. So kf=kb/[craf-1]" \ +"If kb is 1/sec, then kf = 1/0.2 uM = 1/(0.2 * 6e5) = 8.3e-6" \ +"Later: Raise it by 10 X to 4e-5" \ +"From Hallberg et al JBC 269:6 3913-3916 1994, 3% of cellular Raf is" \ +"complexed with Ras. So we raise kb 4x to 4" \ +"This step needed to memb-anchor and activate Raf: Leevers et al Nature" \ +"369 411-414" \ +"(I don't...." +call /kinetics/PPhosphatase2A/notes LOAD \ +"Refs: Pato et al Biochem J 293:35-41(93);" \ +"Takai&Mieskes Biochem J 275:233-239" \ +"k1=1.46e-4, k2=1000,k3=250. these use" \ +"kcat values for calponin. Also, units of kcat may be in min!" \ +"revert to Vmax base:" \ +"k3=6, k2=25,k1=3.3e-6 or 6,6,1e-6" \ +"CoInit assumed 0.1 uM." \ +"See NOTES for MAPK_Ras50.g. CoInit now 0.08" \ +"Sep 17 1997: Raise CoInt 1.4x to 0.224, see parm" \ +"searches from jun 96 on." \ +"" +call /kinetics/PPhosphatase2A/craf-deph/notes LOAD \ +"See parent PPhosphatase2A for parms" \ +"" +call /kinetics/PPhosphatase2A/MAPKK-deph/notes LOAD \ +"See: Kyriakis et al Nature 358 pp 417-421 1992" \ +"Ahn et al Curr Op Cell Biol 4:992-999 1992 for this pathway." \ +"See parent PPhosphatase2A for parms." +call /kinetics/PPhosphatase2A/craf**-deph/notes LOAD \ +"Ueki et al JBC 269(22) pp 15756-15761 1994 show hyperphosphorylation of" \ +"craf, so this is there to dephosphorylate it. Identity of phosphatase is not" \ +"known to me, but it may be PP2A like the rest, so I have made it so." +call /kinetics/Ras/notes LOAD \ +"Ras has now gotten to be a big enough component of the model to" \ +"deserve its own group. The main refs are" \ +"Boguski and McCormick Nature 366 643-654 '93 Major review" \ +"Eccleston et al JBC 268:36 pp 27012-19" \ +"Orita et al JBC 268:34 2554246" +call /kinetics/Ras/bg-act-GEF/notes LOAD \ +"SoS/GEF is present at 50 nM ie 3e4/cell. BetaGamma maxes out at 9e4." \ +"Assume we have 1/3 of the GEF active when the BetaGamma is 1.5e4." \ +"so 1e4 * kb = 2e4 * 1.5e4 * kf, so kf/kb = 3e-5. The rate of this equil should" \ +"be reasonably fast, say 1/sec" \ +"" +call /kinetics/Ras/GEF-Gprot-bg/notes LOAD \ +"Guanine nucleotide exchange factor. This activates raf by exchanging bound" \ +"GDP with GTP. I have left the GDP/GTP out of this reaction, it would be" \ +"trivial to put them in. See Boguski & McCormick." \ +"Possible candidate molecules: RasGRF, smgGDS, Vav (in dispute). " \ +"rasGRF: Kcat= 1.2/min Km = 680 nM" \ +"smgGDS: Kcat: 0.37 /min, Km = 220 nM." \ +"vav: Turnover up over baseline by 10X, " \ +"" +call /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras/notes LOAD \ +"Kinetics based on the activation of Gq by the receptor complex in the" \ +"Gq model (in turn based on the Mahama and Linderman model)" \ +"k1 = 2e-5, k2 = 1e-10, k3 = 10 (I do not know why they even bother with k2)." \ +"Lets put k1 at 2e-6 to get a reasonable equilibrium" \ +"More specific values from, eg.g: Orita et al JBC 268(34) 25542-25546" \ +"from rasGRF and smgGDS: k1=3.3e-7; k2 = 0.08, k3 = 0.02" \ +"" +call /kinetics/Ras/inact-GEF/notes LOAD \ +"Assume that SoS is present only at 50 nM." \ +"Revised to 100 nM to get equil to experimentally known levels." +call /kinetics/Ras/GEF*/notes LOAD \ +"phosphorylated and thereby activated form of GEF. See, e.g." \ +"Orita et al JBC 268:34 25542-25546 1993, Gulbins et al." \ +"It is not clear whether there is major specificity for tyr or ser/thr." +call /kinetics/Ras/GEF*/GEF*-act-ras/notes LOAD \ +"Kinetics same as GEF-bg-act-ras" \ +"" +call /kinetics/Ras/GTP-Ras/notes LOAD \ +"Only a very small fraction (7% unstim, 15% stim) of ras is GTP-bound." \ +"Gibbs et al JBC 265(33) 20437" \ +"" +call /kinetics/Ras/GDP-Ras/notes LOAD \ +"GDP bound form. See Rosen et al Neuron 12 1207-1221 June 1994." \ +"the activation loop is based on Boguski and McCormick Nature 366 643-654 93" \ +"Assume Ras is present at about the same level as craf-1, 0.2 uM." \ +"Hallberg et al JBC 269:6 3913-3916 1994 estimate upto 5-10% of cellular" \ +"Raf is assoc with Ras. Given that only 5-10% of Ras is GTP-bound, we" \ +"need similar amounts of Ras as Raf." +call /kinetics/Ras/Ras-intrinsic-GTPase/notes LOAD \ +"This is extremely slow (1e-4), but it is significant as so little GAP actually" \ +"gets complexed with it that the total GTP turnover rises only by" \ +"2-3 X (see Gibbs et al, JBC 265(33) 20437-20422) and " \ +"Eccleston et al JBC 268(36) 27012-27019" \ +"kf = 1e-4" \ +"" +call /kinetics/Ras/dephosph-GAP/notes LOAD \ +"Assume a reasonably good rate for dephosphorylating it, 1/sec" +call /kinetics/Ras/GAP/notes LOAD \ +"GTPase-activating proteins. See Boguski and McCormick." \ +"Turn off Ras by helping to hydrolyze bound GTP. " \ +"This one is probably NF1, ie., Neurofibromin as it is inhibited by AA and lipids," \ +"and expressed in neural cells. p120-GAP is also a possible candidate, but" \ +"is less regulated. Both may exist at similar levels." \ +"See Eccleston et al JBC 268(36) pp27012-19" \ +"Level=.002" +call /kinetics/Ras/GAP/GAP-inact-ras/notes LOAD \ +"From Eccleston et al JBC 268(36)pp27012-19 get Kd < 2uM, kcat - 10/sec" \ +"From Martin et al Cell 63 843-849 1990 get Kd ~ 250 nM, kcat = 20/min" \ +"I will go with the Eccleston figures as there are good error bars (10%). In general" \ +"the values are reasonably close." \ +"k1 = 1.666e-3/sec, k2 = 1000/sec, k3 = 10/sec (note k3 is rate-limiting)" \ +"5 Nov 2002: Changed ratio term to 4 from 100. Now we have" \ +"k1=8.25e-5; k2=40, k3=10. k3 is still rate-limiting." +call /kinetics/Ras/inact-GEF*/notes LOAD \ +"Phosphorylation-inactivated form of GEF. See" \ +"Hordijk et al JBC 269:5 3534-3538 1994" \ +"and " \ +"Buregering et al EMBO J 12:11 4211-4220 1993" \ +"" +call /kinetics/Ras/CaM-bind-GEF/notes LOAD \ +"We have no numbers for this. It is probably between" \ +"the two extremes represented by the CaMKII phosph states," \ +"and I have used guesses based on this." \ +"kf=1e-4" \ +"kb=1" \ +"The reaction is based on Farnsworth et al Nature 376 524-527" \ +"1995" +call /kinetics/Ras/CaM-GEF/notes LOAD \ +"See Farnsworth et al Nature 376 524-527 1995" +call /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras/notes LOAD \ +"Kinetics same as GEF-bg_act-ras" \ +"" +call /kinetics/PKA-active/PKA-phosph-GEF/notes LOAD \ +"This pathway inhibits Ras when cAMP is elevated. See:" \ +"Hordijk et al JBC 269:5 3534-3538 1994" \ +"Burgering et al EMBO J 12:11 4211-4220 1993" \ +"The rates are the same as used in PKA-phosph-I1" +call /kinetics/CaM-Ca4/notes LOAD \ +"Resting level is ~1e-5 uM, small enough to ignore." +call /kinetics/EGFR/EGFR/notes LOAD \ +"Berkers et al JBC 266 say 22K hi aff recs." \ +"Sherrill and Kyte Biochemistry 35 use range 4-200 nM." \ +"These match, lets use them." +call /kinetics/EGFR/act_EGFR/notes LOAD \ +"Affinity of EGFR for EGF is complex: depends on [EGFR]." \ +"We'll assume fixed [EGFR] and use exptal" \ +"affinity ~20 nM (see Sherrill and Kyte" \ +"Biochem 1996 35 5705-5718, Berkers et al JBC 266:2 922-927" \ +"1991, Sorokin et al JBC 269:13 9752-9759 1994). " \ +"Tau =~2 min (Davis et al JBC 263:11 5373-5379 1988)" \ +"or Berkers Kass = 6.2e5/M/sec, Kdiss=3.5e-4/sec." \ +"Sherrill and Kyte have Hill Coeff=1.7" \ +"" +call /kinetics/EGFR/L.EGFR/notes LOAD \ +"This is terribly simplified: there are many interesting" \ +"intermediate stages, including dimerization and assoc" \ +"with adapter molecules like Shc, that contribute to the" \ +"activation of the EGFR." +call /kinetics/EGFR/L.EGFR/phosph_Shc/notes LOAD \ +"Rates from Okada et al JBC 270:35 pp 20737 1995" \ +"Km = 0.70 to 0.85 uM, Vmax = 4.4 to 5.0 pmol/min. Unfortunately" \ +"the amount of enzyme is not known, the prep is only" \ +"partially purified." \ +"Time course of phosph is max within 30 sec, falls back within" \ +"20 min. Ref: Sasaoka et al JBC 269:51 32621 1994." \ +"Use k3 = 0.1 based on this tau." \ +"" +call /kinetics/EGFR/SHC/notes LOAD \ +"There are 2 isoforms: 52 KDa and 46 KDa (See Okada et al" \ +"JBC 270:35 pp 20737 1995). They are acted up on by the EGFR" \ +"in very similar ways, and apparently both bind Grb2 similarly," \ +"so we'll bundle them together here." \ +"Sasaoka et al JBC 269:51 pp 32621 1994 show immunoprecs where" \ +"it looks like there is at least as much Shc as Grb2. So" \ +"we'll tentatively say there is 1 uM of Shc." +call /kinetics/EGFR/dephosph_Shc/notes LOAD \ +"Time course of decline of phosph is 20 min. Part of this is" \ +"the turnoff time of the EGFR itself. Lets assume a tau of" \ +"10 min for this dephosph. It may be wildly off." +call /kinetics/EGFR/Internalize/notes LOAD \ +"See Helin and Beguinot JBC 266:13 1991 pg 8363-8368." \ +"In Fig 3 they have internalization tau about 10 min, " \ +"equil at about 20% EGF available. So kf = 4x kb, and" \ +"1/(kf + kb) = 600 sec so kb = 1/3K = 3.3e-4," \ +"and kf = 1.33e-3. This doesn't take into account the" \ +"unbound receptor, so we need to push the kf up a bit, to" \ +"0.002" +call /kinetics/Sos/Shc_bind_Sos.Grb2/notes LOAD \ +"Sasaoka et al JBC 269:51 pp 32621 1994, table on pg" \ +"32623 indicates that this pathway accounts for about " \ +"50% of the GEF activation. (88% - 39%). Error is large," \ +"about 20%. Fig 1 is most useful in constraining rates." \ +"" \ +"Chook et al JBC 271:48 pp 30472, 1996 say that the Kd is" \ +"0.2 uM for Shc binding to EGFR. The Kd for Grb direct binding" \ +"is 0.7, so we'll ignore it." +call /kinetics/Sos/Grb2_bind_Sos*/notes LOAD \ +"Same rates as Grb2_bind_Sos: Porfiri and McCormick JBC" \ +"271:10 pp 5871 1996 show that the binding is not affected" \ +"by the phosph." +call /kinetics/Sos/Grb2/notes LOAD \ +"There is probably a lot of it in the cell: it is also known" \ +"as Ash (abundant src homology protein I think). Also " \ +"Waters et al JBC 271:30 18224 1996 say that only a small" \ +"fraction of cellular Grb is precipitated out when SoS is" \ +"precipitated. As most of the Sos seems to be associated" \ +"with Grb2, it would seem like there is a lot of the latter." \ +"Say 1 uM. I haven't been able to find a decent...." +call /kinetics/Sos/dephosph_Sos/notes LOAD \ +"The only clue I have to these rates is from the time" \ +"courses of the EGF activation, which is around 1 to 5 min." \ +"The dephosph would be expected to be of the same order," \ +"perhaps a bit longer. Lets use 0.002 which is about 8 min." \ +"Sep 17: The transient activation curve matches better with" \ +"kf = 0.001" +call /kinetics/Sos/Grb2_bind_Sos/notes LOAD \ +"As there are 2 SH3 domains, this reaction could be 2nd order." \ +"I have a Kd of 22 uM from peptide binding (Lemmon et al " \ +"JBC 269:50 pg 31653). However, Chook et al JBC 271:48 pg30472" \ +"say it is 0.4uM with purified proteins, so we believe them." \ +"They say it is 1:1 binding." +call /kinetics/Sos/Sos/notes LOAD \ +"I have tried using low (0.02 uM) initial concs, but these" \ +"give a very flat response to EGF stim although the overall" \ +"activation of Ras is not too bad. I am reverting to 0.1 " \ +"because we expect a sharp initial response, followed by" \ +"a decline." \ +"Sep 17 1997: The transient activation curve looks better with" \ +"[Sos] = 0.05." \ +"Apr 26 1998: Some error there, it is better where it was" \ +"at 0.1" +complete_loading diff --git a/examples/genesis/EGFR_MAPK_58.png b/examples/genesis/EGFR_MAPK_58.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c5792e514198b446a525fb69b7b1f3235f6ee6 GIT binary patch literal 313988 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

S*9ioZsCe60D+yQ~9z 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ξI3cFFX>ot5ap4HPz1{?3vf<$%AL&bO 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 z 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

mq4I}2UEB8=eOtCN-ylW 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%0AXhwtkyv|vj(ojP6P-v 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

%3+~$00>DU$A(4-d?}G}?z##l1 z8bEe?j=0&FnI+hswW-g44Ao_QKX)8BcrgE1@MhoMz*!JTS8rVU#-3DrvCx_r0s;Lm zG5-E1MQ7<@1{Hmg%gEat(!s+7M`VqoJhdb{!K#_$4OqC3C^Rb1KtAG+H$xw;#;2^aso3#WFAvZA7Cxw(K|(F7Q<#qs0Sz-6)P zy8q|BLm2=l6xs~Vhp7&|r0;4NuDP!HTFZe~Bl?WYx?M}MMuY@|2(kz@v;Z6s)Ua7z z9P;I}2OL%CL(chL#}eJM->-Wn66$#F=?$Tk4yOWTvK7#d!hzFo2gD#1wXvSwQQvVJ zlj!Y9C&^?o(B1~}ml05rd&#p2H4B^=fIyjl$h)9h_?=c`Uaq0VxwY za35fwFx;2BOIbiFYCwgwFuI`f@`Wgr&(K+5Dgb4KMEs@Ub^c?b9hU0YkWlE-&c?+1 zeC|klkkl)n?l(za7>|IBF0hrFDTcHFCSZcKj~@q~gjjnKB)oKebH9qwk|Brmw2Ytk zF-|`E7HZjNW@aY2l`^u6dSo^1+FYm*Q!*LdG~v+kXvqV`d2_74SDqSNaNHmk7cJzW zrpVBGyCHPig@KO~3zR_(JpEjwQoWfGgxVoZjV~}mO4>%#6K;JQShUs2^`cGBx03cL zMpoR4xiZ;`7DZ(4|6$PZT19?S105Y5x_+FiGP{7*z~BN= z9sowrp+jFE(dgKj_fD~~v9z-BQnZvxbxr49AP)v}X%quIAMTYD7f;q)o>0TZO<2j+ zoe+w{R{8H~t5GTvzwU|B1J6*KN}CRglMgW@>@y&g@}c}Ju;@fdlyrrZLUe6O>99S!kdy0I=-?6w3B5UP+7&9 zy_LP*>MANKs;b{!#c&B6bsq|fYR|TwEt{ZwrbLrSOCy@g-y)Rg?tw`$F`^8Z+dZfI z$KiB=ke{C)9%aKy$D=i+i$|aMW9(n_BM@7z>Yq4fIy(-TsT>>}f;VqZP_!MLZ)14P zjCcFj6C`qktD!PDbYs86aj07#G2&5yX~_5R^aM&Kzp!xcL!+b&686~2}{iX34 z)2WY2zo~fhJ3M@Ry307Jf5udQ!^wIBLTk<^>Py1Nm&u_;XY)l5lz*(eq1lQ05&u18 z7DcnBfsS@m`TA>5(C{X_L1<9YijiCg$8q~LHG3Cd!sG%&4l7Rzk?3UEMm?J$o&w~~ zxtq++qB_VJl`!Om+_iHjAoJ&ECo}`+rvXLI$U0lB@w-pzR7c*0#d%iQ2+6;TYrG@x zBk*YV9&t-{c^^L3;-r+}PE1Y30MsAIfyEr|SDBteNQ+S^mgBs1rNyO7S!6((+xT>` zwB0r7z;*;8qMdgR7?zM*x1PFn&kwwaaNORVnEA(+=er*HRsO<=E7v1lu!U;3dV>QLa>&5iV zw)3%5`~O&Idc$fv@8}v`2wsR*YweGX1Rn1Lh2>!hffURS=kx&Yez7t69*HzQ|MGT3GfFRN&we`V0(dU~O4Hy{zioOh!9-9TmvS%LC%N4`$aPkHMF3({)qTuX((= ze{6iVS-Oq~W*e~4Eh=$=Q!&Fj23Xz0veMGgJOTnXqxYcYoLHI{VD-z(%YoNP&dBIY zrd8X__*B=_R0N!}q*1;Ynf}?pxs(Oxp$!UkhTjLVFJ}gl1*j?Ss+nVMMNVfc_}#+_ zv@VHMD0s_Y%+z@FILJ#7xeBL`5`9k@A{C8@Rvp~jh;6G|?Tt_yZVXtyK@g=K=kR5I z;N81-FF(H=6}W|9ufTLG;(P%5pKVZnxel?oQ1FFQ$rGw*>5Y~@yli@y>MTZX2)2R`QWdw^9_Uz~2StCcH)C+q6! zUg<7vWx2w90(R;07h+{Gy*t-Id+Hvnz21v^lwuPS_=JTuy+_}rE`D~pP<#98va{*o zo^nCoA$r0qWDEzzZjyu<>nB>@A=HI ze^~U;FqYh@gzB)tj(@m?l8g61t=DqgeIB_o8xWG4I5z2^CiL_^tN#-m0o9Hp@0v z(n$SOe-*49W;8qYJ^+^2Lf8e|zi$sKgPeIz0MIbNl$Zs4fDWM1XhnY}e%*#wU%r+l z*Yw{#dUXIMB&KZ`=Nvx04oqf(K)OIPvLBRzf} zfpaPpFj)lyr)ZJOX6>}^qz-_UQanp{p$hz%ZK{=_7&leB0jKt0DPx9)%&8AzuVGu( zq!&uLjxOghuYKESsM_4pe2{^4CJe^m6c3EMbpCW`enqySP4TVv^;!}RUcHA_21GUlb``*FW>eTf*?_r}q!~nS zVaVgaeNxg*ax(OBZ@|wRiVySyFM( z!V$|6M+$GCnnBw-%lG*jM3#O15zDDbCc=`#(XoEsq)jm2EQc3_4p5W4jl8f>;Gr$40?}G5lC>n2Oxsgs}I0uE3kU@=l>!yV42IJP9s^? T{xQ2EHbP&=_(aZe`y2lT(l@YX literal 0 HcmV?d00001 diff --git a/examples/genesis/Kholodenko.g b/examples/genesis/Kholodenko.g new file mode 100644 index 0000000..f6d4c5a --- /dev/null +++ b/examples/genesis/Kholodenko.g @@ -0,0 +1,528 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun May 18 16:25:59 2014 + +include kkit {argv 1} + +FASTDT = 5e-05 +SIMDT = 0.005 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 6000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1.6667e-21 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ + 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/MAPK 0 yellow black x 0 0 "" MAPK \ + /home2/bhalla/scripts/modules/MAPK_0.g 0 0 0 1 10 0 +simundump text /kinetics/MAPK/notes 0 \ + "This is the oscillatory MAPK model from Kholodenko 2000\nEur J. Biochem 267:1583-1588\nThe original model is formulated in terms of idealized\nMichaelis-Menten enzymes and the enzyme-substrate complex\nconcentrations are therefore assumed negligible. The\ncurrent implementation of the model uses explicit enzyme\nreactions involving substrates and is therefore an\napproximation to the Kholodenko...." +call /kinetics/MAPK/notes LOAD \ +"This is the oscillatory MAPK model from Kholodenko 2000" \ +"Eur J. Biochem 267:1583-1588" \ +"The original model is formulated in terms of idealized" \ +"Michaelis-Menten enzymes and the enzyme-substrate complex" \ +"concentrations are therefore assumed negligible. The" \ +"current implementation of the model uses explicit enzyme" \ +"reactions involving substrates and is therefore an" \ +"approximation to the Kholodenko model. The approximation is" \ +"greatly improved if the enzyme is flagged as Available" \ +"which is an option in Kinetikit. This flag means that the" \ +"enzyme protein concentration is not reduced even when it" \ +"is involved in a complex. However, the substrate protein" \ +"continues to participate in enzyme-substrate complexes" \ +"and its concentration is therefore affected. Overall," \ +"this model works almost the same as the Kholodenko model" \ +"but the peak MAPK-PP amplitudes are a little reduced and" \ +"the period of oscillations is about 10% longer." \ +"If the enzymes are not flagged as Available then the" \ +"oscillations commence only when the Km for enzyme 1" \ +"is set to 0.1 uM." +simundump kpool /kinetics/MAPK/MAPK 0 0 0.3 0.3 0.3 0.3 0 0 1 0 \ + /kinetics/geometry 35 yellow -8 -7 0 +simundump text /kinetics/MAPK/MAPK/notes 0 \ + "The total concn. of MAPK is 300nM \nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MAPK/notes LOAD \ +"The total concn. of MAPK is 300nM " \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/MKKK 0 0 0.1 0.1 0.1 0.1 0 0 1 0 \ + /kinetics/geometry 16 yellow -8 5 0 +simundump text /kinetics/MAPK/MKKK/notes 0 \ + "The total concn. of MKKK is 100nM \nfrom\nKholodenko, 2000" +call /kinetics/MAPK/MKKK/notes LOAD \ +"The total concn. of MKKK is 100nM " \ +"from" \ +"Kholodenko, 2000" +simundump kpool /kinetics/MAPK/MKK 0 0 0.3 0.3 0.3 0.3 0 0 1 0 \ + /kinetics/geometry 60 yellow -8 -1 0 +simundump text /kinetics/MAPK/MKK/notes 0 \ + "The total concn. of MKK is 300nM \nfrom\nKholodenko,2000" +call /kinetics/MAPK/MKK/notes LOAD \ +"The total concn. of MKK is 300nM " \ +"from" \ +"Kholodenko,2000" +simundump kpool /kinetics/MAPK/int1 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 30 yellow -4 4 0 +simundump text /kinetics/MAPK/int1/notes 0 \ + "This is the intermediate enzyme which catalyses the \ndephosphorylation of MKKK-P to MKKK. The concentration\nis set to 1 nM based on\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int1/notes LOAD \ +"This is the intermediate enzyme which catalyses the " \ +"dephosphorylation of MKKK-P to MKKK. The concentration" \ +"is set to 1 nM based on" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int1/2 0 0 0 0 0 0.001 156.25 1 0.25 0 1 "" red \ + 30 "" -4 5 0 +simundump text /kinetics/MAPK/int1/2/notes 0 \ + "Km is 8nM and Vmax is 0.25nM.s-1 \nfrom\nKholodenko, 2000." +call /kinetics/MAPK/int1/2/notes LOAD \ +"Km is 8nM and Vmax is 0.25nM.s-1 " \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/MKKK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 51 yellow 0 5 0 +simundump text /kinetics/MAPK/MKKK-P/notes 0 \ + "This is the phosphorylated form of MKKK which converts MKK\nto MKK-P and then to MKK-PP\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MKKK-P/notes LOAD \ +"This is the phosphorylated form of MKKK which converts MKK" \ +"to MKK-P and then to MKK-PP" \ +"from" \ +"Kholodenko, 2000." +simundump kenz /kinetics/MAPK/MKKK-P/3 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 51 "" -4 2 0 +simundump text /kinetics/MAPK/MKKK-P/3/notes 0 \ + "Km is 15 nM and Vmax is 0.025s-1\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/MKKK-P/3/notes LOAD \ +"Km is 15 nM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/MKKK-P/4 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 51 "" 4 2 0 +simundump text /kinetics/MAPK/MKKK-P/4/notes 0 \ + "Km is 15nM and Vmax is 0.025s-1\nfrom \nKholodenko, 2000." +call /kinetics/MAPK/MKKK-P/4/notes LOAD \ +"Km is 15nM and Vmax is 0.025s-1" \ +"from " \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/int3 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry blue yellow -4 -2 0 +simundump text /kinetics/MAPK/int3/notes 0 \ + "This intermediate enzyme catalyses the dephosphorylation of\nMKK-P to MKK. The concentration is 1nM\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int3/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MKK-P to MKK. The concentration is 1nM" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int3/6 0 0 0 0 0 0.001 250 3 0.75 0 1 "" red \ + blue "" -4 -1 0 +simundump text /kinetics/MAPK/int3/6/notes 0 \ + "The Km is 15nM and the Vmax is 0.75nM.s-1\nfrom\nKholodenko 2000." +call /kinetics/MAPK/int3/6/notes LOAD \ +"The Km is 15nM and the Vmax is 0.75nM.s-1" \ +"from" \ +"Kholodenko 2000." +simundump kpool /kinetics/MAPK/int5 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 1 yellow -4 -8 0 +simundump text /kinetics/MAPK/int5/notes 0 \ + "This catalyses the conversion of MAPK-P to MAPK. The \nconcenration is 1nM.\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int5/notes LOAD \ +"This catalyses the conversion of MAPK-P to MAPK. The " \ +"concenration is 1nM." \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int5/10 0 0 0 0 0 0.001 166.67 2 0.5 0 1 "" red \ + 1 "" -4 -7 0 +simundump text /kinetics/MAPK/int5/10/notes 0 \ + "The Km is 15nM and Vmax is 0.5nM.s-1\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int5/10/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1" \ +"from" \ +"Kholodenko, 2000" +simundump kpool /kinetics/MAPK/MKK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 5 \ + yellow 0 -1 0 +simundump text /kinetics/MAPK/MKK-P/notes 0 \ + "This is the single phoshorylated form of MKK.\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MKK-P/notes LOAD \ +"This is the single phoshorylated form of MKK." \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/MAPK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 55 yellow 0 -7 0 +simundump text /kinetics/MAPK/MAPK-P/notes 0 \ + "This is the single phopshorylated form of MAPK\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MAPK-P/notes LOAD \ +"This is the single phopshorylated form of MAPK" \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/int2 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 2 yellow 4 -2 0 +simundump text /kinetics/MAPK/int2/notes 0 \ + "This intermediate enzyme which catalyses the dephosphorylation of\nMKK-PP to MKK-P. The concentration is 1nM.\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int2/notes LOAD \ +"This intermediate enzyme which catalyses the dephosphorylation of" \ +"MKK-PP to MKK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int2/5 0 0 0 0 0 0.001 250 3 0.75 0 1 "" red 2 \ + "" 4 -1 0 +simundump text /kinetics/MAPK/int2/5/notes 0 \ + "The Km is 15nM and Vmax is 0.75nM.s-1 \nfrom\nKholodenko, 2000\n" +call /kinetics/MAPK/int2/5/notes LOAD \ +"The Km is 15nM and Vmax is 0.75nM.s-1 " \ +"from" \ +"Kholodenko, 2000" \ +"" +simundump kpool /kinetics/MAPK/int4 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 17 yellow 4 -8 0 +simundump text /kinetics/MAPK/int4/notes 0 \ + "This intermediate enzyme catalyses the dephosphorylation of\nMAPK-PP to MAPK-P. The concentration is 1nM.\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int4/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MAPK-PP to MAPK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int4/9 0 0 0 0 0 0.001 166.67 2 0.5 0 1 "" red \ + 17 "" 4 -7 0 +simundump text /kinetics/MAPK/int4/9/notes 0 \ + "The Km is 15nM and Vmax is 0.5nM.s-1 \nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int4/9/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1 " \ +"from" \ +"Kholodenko, 2000" +simundump kpool /kinetics/MAPK/Ras-MKKKK 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 11 yellow 6 8 0 +simundump text /kinetics/MAPK/Ras-MKKKK/notes 0 \ + "The concn. of Ras-MKKKK* is set to 1 nM implicitly\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/Ras-MKKKK/notes LOAD \ +"The concn. of Ras-MKKKK* is set to 1 nM implicitly" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/Ras-MKKKK/1 0 0 0 0 0 0.001 1250 10 2.5 0 1 "" \ + red 11 "" -4 8 0 +simundump text /kinetics/MAPK/Ras-MKKKK/1/notes 0 \ + "The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that\nthere is 1 nM of the Ras-MKKKK.\nFrom Kholodenko, 2000.\n\nIf the enzymes are not flagged as Available, then this\nKm should be set to 0.1 to obtain oscillations." +call /kinetics/MAPK/Ras-MKKKK/1/notes LOAD \ +"The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that" \ +"there is 1 nM of the Ras-MKKKK." \ +"From Kholodenko, 2000." \ +"" \ +"If the enzymes are not flagged as Available, then this" \ +"Km should be set to 0.1 to obtain oscillations." +simundump kpool /kinetics/MAPK/inactiveRas-MKKK 0 0 0 0 0 0 0 0 1 0 \ + /kinetics/geometry 30 yellow 11 8 0 +simundump text /kinetics/MAPK/inactiveRas-MKKK/notes 0 \ + "This is the inactive form of Ras-MKKK. Based on the\nreaction scheme from Kholodenko 2000, this is equivalent\nto a binding of the MAPK-PP to the Ras. The amount of\nRas in the model is small enough that negligible amounts\nof MAPK are involved in this reaction. So it is a fair\napproximation to the negative feedback mechanism from\nKholodenko, 2000." +call /kinetics/MAPK/inactiveRas-MKKK/notes LOAD \ +"This is the inactive form of Ras-MKKK. Based on the" \ +"reaction scheme from Kholodenko 2000, this is equivalent" \ +"to a binding of the MAPK-PP to the Ras. The amount of" \ +"Ras in the model is small enough that negligible amounts" \ +"of MAPK are involved in this reaction. So it is a fair" \ +"approximation to the negative feedback mechanism from" \ +"Kholodenko, 2000." +simundump kreac /kinetics/MAPK/Neg_feedback 0 1 0.009 "" white yellow 11 2 0 +simundump text /kinetics/MAPK/Neg_feedback/notes 0 \ + "From Kholodenko, 2000 Eur J Biochem 267\nthe Kd is 9 nM. We use a rather fast Kf of 1/sec/uM\nso that equilibrium is maintained.\n" +call /kinetics/MAPK/Neg_feedback/notes LOAD \ +"From Kholodenko, 2000 Eur J Biochem 267" \ +"the Kd is 9 nM. We use a rather fast Kf of 1/sec/uM" \ +"so that equilibrium is maintained." \ +"" +simundump kpool /kinetics/MAPK/MKK-PP 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 0 yellow 8 -1 0 +simundump text /kinetics/MAPK/MKK-PP/notes 0 \ + "This is the double phosphorylated and active form of MKK\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/MKK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MKK" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/MKK-PP/7 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 0 "" -4 -4 0 +simundump text /kinetics/MAPK/MKK-PP/7/notes 0 \ + "The Km is 15nM which is 0.015uM Vmax is 0.025s-1\nfrom\nKholodenko, 2000.\n" +call /kinetics/MAPK/MKK-PP/7/notes LOAD \ +"The Km is 15nM which is 0.015uM Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000." \ +"" +simundump kenz /kinetics/MAPK/MKK-PP/8 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 0 "" 4 -4 0 +simundump text /kinetics/MAPK/MKK-PP/8/notes 0 \ + "The Km is 15nM which is 0.015uM and Vmax is 0.025s-1\nfrom\nKholodenko, 2000\n" +call /kinetics/MAPK/MKK-PP/8/notes LOAD \ +"The Km is 15nM which is 0.015uM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" \ +"" +simundump kpool /kinetics/MAPK/MAPK-PP 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 58 yellow 8 -7 0 +simundump text /kinetics/MAPK/MAPK-PP/notes 0 \ + "This is the double phosphorylated and active form of MAPK.\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MAPK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MAPK." \ +"from" \ +"Kholodenko, 2000." +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 6000 0 0.3 0 +simundump xgraph /graphs/conc2 0 0 6000 4.5157e-05 0.3 0 +simundump xplot /graphs/conc1/Ras-MKKKK.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 11 0 0 1 +simundump xplot /graphs/conc1/MKKK-P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 51 0 0 1 +simundump xplot /graphs/conc1/MKK-PP.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc1/MAPK-PP.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 58 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 6000 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 6000 0 1 0 +simundump xcoredraw /edit/draw 0 -10 13 -10 12 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"22 Jan 2002" \ +" " \ +" This model is based on Kholodenko, B.N." \ +" Eur. J. Biochem. 267, 1583-1588(2000)" \ +"" +addmsg /kinetics/MAPK/MKK-PP/7 /kinetics/MAPK/MAPK REAC sA B +addmsg /kinetics/MAPK/int5/10 /kinetics/MAPK/MAPK MM_PRD pA +addmsg /kinetics/MAPK/Ras-MKKKK/1 /kinetics/MAPK/MKKK REAC sA B +addmsg /kinetics/MAPK/int1/2 /kinetics/MAPK/MKKK MM_PRD pA +addmsg /kinetics/MAPK/MKKK-P/3 /kinetics/MAPK/MKK REAC sA B +addmsg /kinetics/MAPK/int3/6 /kinetics/MAPK/MKK MM_PRD pA +addmsg /kinetics/MAPK/int1 /kinetics/MAPK/int1/2 ENZYME n +addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/int1/2 SUBSTRATE n +addmsg /kinetics/MAPK/Ras-MKKKK/1 /kinetics/MAPK/MKKK-P MM_PRD pA +addmsg /kinetics/MAPK/int1/2 /kinetics/MAPK/MKKK-P REAC sA B +addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/MKKK-P/3 ENZYME n +addmsg /kinetics/MAPK/MKK /kinetics/MAPK/MKKK-P/3 SUBSTRATE n +addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/MKKK-P/4 ENZYME n +addmsg /kinetics/MAPK/MKK-P /kinetics/MAPK/MKKK-P/4 SUBSTRATE n +addmsg /kinetics/MAPK/int3 /kinetics/MAPK/int3/6 ENZYME n +addmsg /kinetics/MAPK/MKK-P /kinetics/MAPK/int3/6 SUBSTRATE n +addmsg /kinetics/MAPK/int5 /kinetics/MAPK/int5/10 ENZYME n +addmsg /kinetics/MAPK/MAPK-P /kinetics/MAPK/int5/10 SUBSTRATE n +addmsg /kinetics/MAPK/MKKK-P/4 /kinetics/MAPK/MKK-P REAC sA B +addmsg /kinetics/MAPK/MKKK-P/3 /kinetics/MAPK/MKK-P MM_PRD pA +addmsg /kinetics/MAPK/int3/6 /kinetics/MAPK/MKK-P REAC sA B +addmsg /kinetics/MAPK/int2/5 /kinetics/MAPK/MKK-P MM_PRD pA +addmsg /kinetics/MAPK/MKK-PP/8 /kinetics/MAPK/MAPK-P REAC sA B +addmsg /kinetics/MAPK/MKK-PP/7 /kinetics/MAPK/MAPK-P MM_PRD pA +addmsg /kinetics/MAPK/int5/10 /kinetics/MAPK/MAPK-P REAC sA B +addmsg /kinetics/MAPK/int4/9 /kinetics/MAPK/MAPK-P MM_PRD pA +addmsg /kinetics/MAPK/int2 /kinetics/MAPK/int2/5 ENZYME n +addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/int2/5 SUBSTRATE n +addmsg /kinetics/MAPK/int4 /kinetics/MAPK/int4/9 ENZYME n +addmsg /kinetics/MAPK/MAPK-PP /kinetics/MAPK/int4/9 SUBSTRATE n +addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/Ras-MKKKK REAC A B +addmsg /kinetics/MAPK/Ras-MKKKK /kinetics/MAPK/Ras-MKKKK/1 ENZYME n +addmsg /kinetics/MAPK/MKKK /kinetics/MAPK/Ras-MKKKK/1 SUBSTRATE n +addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/inactiveRas-MKKK REAC B A +addmsg /kinetics/MAPK/MAPK-PP /kinetics/MAPK/Neg_feedback SUBSTRATE n +addmsg /kinetics/MAPK/Ras-MKKKK /kinetics/MAPK/Neg_feedback SUBSTRATE n +addmsg /kinetics/MAPK/inactiveRas-MKKK /kinetics/MAPK/Neg_feedback PRODUCT n +addmsg /kinetics/MAPK/MKKK-P/4 /kinetics/MAPK/MKK-PP MM_PRD pA +addmsg /kinetics/MAPK/int2/5 /kinetics/MAPK/MKK-PP REAC sA B +addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/MKK-PP/7 ENZYME n +addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MKK-PP/7 SUBSTRATE n +addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/MKK-PP/8 ENZYME n +addmsg /kinetics/MAPK/MAPK-P /kinetics/MAPK/MKK-PP/8 SUBSTRATE n +addmsg /kinetics/MAPK/MKK-PP/8 /kinetics/MAPK/MAPK-PP MM_PRD pA +addmsg /kinetics/MAPK/int4/9 /kinetics/MAPK/MAPK-PP REAC sA B +addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/MAPK-PP REAC A B +addmsg /kinetics/MAPK/Ras-MKKKK /graphs/conc1/Ras-MKKKK.Co PLOT Co *Ras-MKKKK.Co *11 +addmsg /kinetics/MAPK/MKKK-P /graphs/conc1/MKKK-P.Co PLOT Co *MKKK-P.Co *51 +addmsg /kinetics/MAPK/MKK-PP /graphs/conc1/MKK-PP.Co PLOT Co *MKK-PP.Co *0 +addmsg /kinetics/MAPK/MAPK-PP /graphs/conc1/MAPK-PP.Co PLOT Co *MAPK-PP.Co *58 +enddump +// End of dump + +call /kinetics/MAPK/notes LOAD \ +"This is the oscillatory MAPK model from Kholodenko 2000" \ +"Eur J. Biochem 267:1583-1588" \ +"The original model is formulated in terms of idealized" \ +"Michaelis-Menten enzymes and the enzyme-substrate complex" \ +"concentrations are therefore assumed negligible. The" \ +"current implementation of the model uses explicit enzyme" \ +"reactions involving substrates and is therefore an" \ +"approximation to the Kholodenko model. The approximation is" \ +"greatly improved if the enzyme is flagged as Available" \ +"which is an option in Kinetikit. This flag means that the" \ +"enzyme protein concentration is not reduced even when it" \ +"is involved in a complex. However, the substrate protein" \ +"continues to participate in enzyme-substrate complexes" \ +"and its concentration is therefore affected. Overall," \ +"this model works almost the same as the Kholodenko model" \ +"but the peak MAPK-PP amplitudes are a little reduced and" \ +"the period of oscillations is about 10% longer." \ +"If the enzymes are not flagged as Available then the" \ +"oscillations commence only when the Km for enzyme 1" \ +"is set to 0.1 uM." +call /kinetics/MAPK/MAPK/notes LOAD \ +"The total concn. of MAPK is 300nM " \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MKKK/notes LOAD \ +"The total concn. of MKKK is 100nM " \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKK/notes LOAD \ +"The total concn. of MKK is 300nM " \ +"from" \ +"Kholodenko,2000" +call /kinetics/MAPK/int1/notes LOAD \ +"This is the intermediate enzyme which catalyses the " \ +"dephosphorylation of MKKK-P to MKKK. The concentration" \ +"is set to 1 nM based on" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int1/2/notes LOAD \ +"Km is 8nM and Vmax is 0.25nM.s-1 " \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MKKK-P/notes LOAD \ +"This is the phosphorylated form of MKKK which converts MKK" \ +"to MKK-P and then to MKK-PP" \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MKKK-P/3/notes LOAD \ +"Km is 15 nM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKKK-P/4/notes LOAD \ +"Km is 15nM and Vmax is 0.025s-1" \ +"from " \ +"Kholodenko, 2000." +call /kinetics/MAPK/int3/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MKK-P to MKK. The concentration is 1nM" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int3/6/notes LOAD \ +"The Km is 15nM and the Vmax is 0.75nM.s-1" \ +"from" \ +"Kholodenko 2000." +call /kinetics/MAPK/int5/notes LOAD \ +"This catalyses the conversion of MAPK-P to MAPK. The " \ +"concenration is 1nM." \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int5/10/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKK-P/notes LOAD \ +"This is the single phoshorylated form of MKK." \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MAPK-P/notes LOAD \ +"This is the single phopshorylated form of MAPK" \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/int2/notes LOAD \ +"This intermediate enzyme which catalyses the dephosphorylation of" \ +"MKK-PP to MKK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int2/5/notes LOAD \ +"The Km is 15nM and Vmax is 0.75nM.s-1 " \ +"from" \ +"Kholodenko, 2000" \ +"" +call /kinetics/MAPK/int4/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MAPK-PP to MAPK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int4/9/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1 " \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/Ras-MKKKK/notes LOAD \ +"The concn. of Ras-MKKKK* is set to 1 nM implicitly" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/Ras-MKKKK/1/notes LOAD \ +"The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that" \ +"there is 1 nM of the Ras-MKKKK." \ +"From Kholodenko, 2000." \ +"" \ +"If the enzymes are not flagged as Available, then this" \ +"Km should be set to 0.1 to obtain oscillations." +call /kinetics/MAPK/inactiveRas-MKKK/notes LOAD \ +"This is the inactive form of Ras-MKKK. Based on the" \ +"reaction scheme from Kholodenko 2000, this is equivalent" \ +"to a binding of the MAPK-PP to the Ras. The amount of" \ +"Ras in the model is small enough that negligible amounts" \ +"of MAPK are involved in this reaction. So it is a fair" \ +"approximation to the negative feedback mechanism from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/Neg_feedback/notes LOAD \ +"From Kholodenko, 2000 Eur J Biochem 267" \ +"the Kd is 9 nM. We use a rather fast Kf of 1/sec/uM" \ +"so that equilibrium is maintained." \ +"" +call /kinetics/MAPK/MKK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MKK" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKK-PP/7/notes LOAD \ +"The Km is 15nM which is 0.015uM Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000." \ +"" +call /kinetics/MAPK/MKK-PP/8/notes LOAD \ +"The Km is 15nM which is 0.015uM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" \ +"" +call /kinetics/MAPK/MAPK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MAPK." \ +"from" \ +"Kholodenko, 2000." +complete_loading diff --git a/examples/genesis/Kholodenko.png b/examples/genesis/Kholodenko.png new file mode 100644 index 0000000000000000000000000000000000000000..370e04c6707db3ff09add9c33b3b34f1c3516b49 GIT binary patch literal 46401 zcmcG$g;x|_)HX_}h$sjMNXt;tJv69*bPIx%Gzbhel$1?LmoS6~64D?HjYxM4J(NQZ z-5vMvd%yR7|G>S=wFVte?z8tk&wlnkglK6f-n&C{2L}h|p0bj>4h{~UG7ip-+S_>G zn>%*Zs^G^h3spsVoU7|U-|KT?ac~~tD9b;6;hnNR?dA8t8q>bhpFQZX@<=6m=7v0W z=;@QFnA>-L+%664(%jzHAeAP9aQ^s!!Brtre;$Wy8oxNzF3<`y_uY@hPYhZvzm) zTUBMFQWqcJ?Ry2bX z7_51yLNnwrqly7l+UV4pi~2IP?vY) zVTzA%P4wQb^`VN0o8*nYIv7>n$xowxM4jOShEJYfD%T28q(fbUcUOgcLcYT+OUmT!Q-l-i7GQuI6GtPR)lkb{&m-xDef`cV1)Rq^E0*FUgmE8Nxr>eXyeOSXb<&hKIOvg5 z)g}9U&;ePDu{Or5Ufo%|(`#NVgYm{Q$Fgwm>%I}np~3#FQ2n7~!n%M49;S(PPGSot z-1A3|V;ig4jb*v9>0KisqNZvouUH%5D13aD`C%uBg@bZ&YoqHQ{?@g5{30)N3H2{1jEBeSRG_Y@R*X+&Befr5-ZFIL{z4g%nV5G4XRkUa{a>} ztDGa9IPaS_G<(nf_nbyy)mfOy17g)WC&i%?bxge~Ua^;{jk9%(cM;de@P}UYPwx>& z39pRdk(Ls@k2#nr`6yP zkIRhn0+q`ljMs{8mW|h)1Xt4m`X3I2`2XMMdY|*X_ZxF{SUSpM`d5F=Q38IE&5LeH zeUBh9p{j}A2YNDBDN*-j&c4pQM!la}e?;IrF#lMwalZDfdKOMM`=9!aOjS?$uoF@3 z&PS@HZ~C_0dhuh34SJC6MO9Pxhsd=hNn?Te`fOyiwLg6ts1=Qr=_)dTue_Fs`s^0% zAT`e}faPj0EAjb6Z6_(;Cbmh|qD2z>|nDJqc1;R;jyMfg14 zOuc>QEimfR@Zj4u@PF7GYN>AGr9FU%zOf5b2F& z#lu%85On6$O`i*C6HaR_cA%WN-U9lwrxm zWEEx}h83GpoMwZ3S)W!7qpaJxb#+Qb3)RYrz&<(D36d}x*ZIuZYkx^Un-no`4a9?S z-Px(TlJS~WFs3s?3OYW-#myF)(B^MaH9Wncxu0|8@`XL>wM6vTzzLLer(gr^bM8t^ z_j=zh%^Oel;!A1+p_+GsEgBU-gSw+L0H@>ozQswp6E|+~g=9I+_wlPZddY`U2CWHC zKT_AFEF#8-zuE+OoORwEs8g4hve>h^MZC~2d$KKe>)zjg{PZ1X>lQCXYfP4QBhL*Y z-)7H`CkNP*k%qOl@cW6WCu?Qk`5y9nmxS^-ywS2`rp?zbWaUXLX@S!j=>p4&*Dw5` z&(m<3Y>)aTn=WXrMz9N0;Hdd(O|s`=D-rmY9gLR<6uZC`OJ;8V8>T*8vp%J~HIt2h zay#%`c6o2`Yd}ci-`l86e4VU4pgQjtyQzhPyA!EJH41H_Cwev&8xwxtWjChMoO!kf zC3VdgvR#=?KisgNO{@3Sa~#Dg6jKz8w^c3)%XVp_T-O!AL2T|_91Z_!?TY6%?l|6g zz+oW~73rWhe^3y~c51pg-RFsNb(Ftu=d${MiD`f3=~xk1)N)@o{^Eo9yt?=IC~^lr zP=*;;Nko_cC1pWpt7X`zL!B&kEZQP-w3txu-4b4ZpenBt@AVz9WY|+{FTDwzztu;S z@>r47;loJjw*OIkEn>ZQcti&L-F<98M^{EL3};11IQw=KH>M^wsj)yu+Z z%ILdjWaNANiQgf}8O+bb{jZLaMyh%flcR&&qkazPVJd2Ky;<7J;~w```w zfD1ZU%QHm5A9aSRym-|;Ikf=O*t=L4rEix5))Uh+l7E*`W4`SHS6c-AU52meGF){A z)LjL({uIB2GbgsrVGg}ZoOHL5HKmD>ocK4}x zw_B;+t|XJxc8$#Jn>Ht>A7dFd1?by3laV0{-c-EzDWBJR4j1?LrE)@N6T*zklcr-5 z=vTJ68j~X|DLfELeb7LekzWGN3_`YozR;g4NyID(M3BcR+oQi>s%X6eLHc&GRcLey z=Z^i4=~`3;m+#S=nuN?7q{6XD^w{ywyj+I%5)o%uKZH_*urIVpUByVZs|%@v2j=GMlL|q^ zppnV({1yGI$WMFUNoU(ytk`A-jC{v~mkJD*PZ>m9`c`DCUU8-_TPUO+tR6Apk&B9s z@Ey05h@b^Vo}{Sn_gr3Wa=@Hd|8RqB6_foAnoCIFrGFzoI;~S zRL=kP<}IUlbX)|&h;*yyHzHhn;3bX4c~^SI@$Xsl>bk=n0Y!0 zxZTO_Vz#cqkAV>K4B3m8rQW*TJ6GrI)ow`|EHkS(1g{1##G3|PL+1;k^z5i%rL-gnmJf&w4VAa_j$r9JhQ1z)F zG6%~-fz;h;|EN)hg6hB$ARG=)!zOytI$B7-@~5)81Eq(={NjaEw^xyV{no+)nl*J3 zXM_d^2Yn{3jP(CVZJbcHVP`9$@dXH0o`s%q_aC9g{*N)5(cz2;tQZz`jg6Iq@Y~1y zOoAki+yifrX3uA7UQdPXR^L47>DRm@@SY<}RBKlbx<(;_S&tQ{%Ee+j?mxo>3(>Rl zT*K3&A<9taCqOjOJ-{Ukd_9r9+)@k> zPGz-zh5rZwNjjA3XPkTTIAhJgwpkAs=w`5zzF&)CxZOSuNyMACV=k@PtMHy$i@5cA)xQy_iwr@&!k{Ta{VXns3uEaaeAk zWThSC<|#EDis{LHOc>J3V@=Cs#sL2na?Lud7}&UjpKK!AJ$o%QoS0OTkj^fO=#8JM7K4^z(n8oUP_->l`>gUJG@q09w(`zjSZLpy>`X?)7dl z0UxQSQaACby%WmQW^4az)c@WRLOvf77{e~z=mn%y;U+m=+YY}?N`6PzTLQJrzwFR( zxLq{j6cbxzygsRC-WvJ@^;F(1I9r&$Yk=wQM7OEt=GZ^CYN={jQq5Yo&%FpkWW>SR zM9F(0Te9;DhxYa@!PIWZX$WO)bz4QYu=*o&d|JGn0ltJ)=#B!o7{-B5+}rDSoOotT z*BUyQrHn}zSB%(S9qWh7=dZB8a)4#5LG(~1c%Gh7&6nHdI;~}r; zj&}O}rgg4K*#6nbuPa*b^>0nzAmUmczZyFcR}1MGpGLE?2@Z2%0as1VOLy(kU;-c+MnZc1R#?*MI`|+iyXln z&m*#&&{=yzq@^UX=WGIb(2CjRi!q<+)#*HRi*Jfl=ZBkqSJGTB$>`NnCE%MqD4iZVhR?&Xe0yacl3?)O^_kwDq)$QRzM{zKwvQx&Hg|bm-T%I&M{1@O_UdYm@d{%my`ug8 z4&{bII+Xu9L+;}$4_FO?h zz=IQ&UFstQj;fqJBjdN-`^HAB6~rPQ2d_=2flxhLsGh{XVB&M|a%*d;w?Hi0PBY1k zTSMjS%!)(V;lxs*3-^y)`XAk@?+ByE8hnDlW*au+xzj2d<<1*QS?bay4XS56(VHRTbPTC%_oJ~G#19pIE)h5(-%tHb9Gwb+@u28_dm}p zPPhB`J;Gnpovo)Gt5fIp+C3f9n$ ztWhr@rD`uQ6n1#N*wvHPTVgJj3VvK1tw{iPxA14@rkSJF{EO@wukKZ-D^fM_c!l}b zOLmq|pKfGpSkKCQxtA$Vi0YJY@qDARN0|1oZ@b&rbKVAMkc@2~zZ(k$*Y4@sZ@Z?^ z!U8kR*@l{l%;2nl^fMt$HV-nVs?TU z$o#y?BQanu)?D5gXEe=*t#)}&%ABho-Wqm-A%Z$*I~k#pnyto_z3Fd3&QBYz1-k0wexAyjvF$Xr#ig}5Bw-vChnn&ROTEl`WfK=_wQ|@`EBzr zcbU9k*CQR(H_=Lt3q<-%Oa#}c$DFM3J$q(1_@T^tqB>S|mc>j4G-Aogl}k!X#SyjO zr`do^hnJ}L@+?8WRHwle+Z4>54wghHuedj)D(tM$8M8jsiFRIllokB#K%&^$_KYmS zYGY%ylFs?W?bl1&t_L=3V4Eh~X%U;Nz>;hO8 zob`*uKU90&U8euPCY?VNKrEC8KvtiwCie0IV&VSuhIB8=Y!=|a~2b@;dGmJ|2&7;0~Mu$<;6~p!v z1_z~%AH}kPWi)@mzEvXK@r>ME5h?mip4PMjW^iA+yD?en!PT88^!goE7~H=1)m%ht ztj|lbYI>3DXvO9)##Mht3x%Cw65+wYXsI?!+6nKdkJQu!ustS8&w*bQpNY!h9M)am z!16H~8}?=iWz@zi*|0qd1a$Bh1qD~xn|PQXH>9DRq%m#(1#*$4I}!DZq8Cx_Cw`MC z8T7IU(Ry}NvMd^)>IEh}D>Rfl+5|B7EA>K`_4TBBG^k_Z&2ODOaK&Hfx~anrV1k9O z1f0`g*{qO;-uIbQ^)~#?pSd=oSE0_8PPB!u27hz7FTZJHgNQ%ndrOZQfL8vLR-0a` zAZEyNc==}db=zG)T;u@O^OJAYGV$hd+7^ldtXP9xbErZ3r^?QJd zafc5*5L6O@X_Zc$iIMSK9LD2t8dB28Rkh`-T{HGR;kI0Kow_j{iFC_E`T21s?-5lr zT`oo8Zj`M+80ujrY!AxU*u&Sz??AcOl@tMiSUh3a{hgsc8N@o`WNN)@C36v1+_*I3 ztFA~2d^w(*?ksB zCo31jMb)l*7Ldhv=?1WJ>C%3O?cE|Il-j+0d8vl@0`4quvP&X4CvWs~4)r_`qTXvf zqeY8nTOO^A!Ad_Ue~w$eQ9M4vr|EN6sYdxuR>|h zu3eAm3FvP|e~(H6!h z=p$I``BT82DAMr$TbZ8N45?1NT?0>1SBVt-jLi-V`R1Tz&2cg+h4*aAbS0_ajE!r`y{j7gM+=_bG}f1^zRXYvyaKN4SRcpz+2(shF_{mz?b|Wi>DJK zc9}~U8*%a!bYoEn<+lpP(m^0IOng47+MFkK>SHnEZ5eWY7b2O8v64vaV+h1FQ!w5` zZK!P~0O7WHdvBs*90JkLm1m`o{hcrE`%UokOEcET9oHx1tP>p?BnIye183)b=E(TAM)Q);P(Xj@Kq7-ECO7_vSFTtH%VN~E8t>2O`|Et$)2 zWUMQ*vjF3hZt13A{wQm(`D;(xO#W0=`}PN=N&e7I0t8$~98U>{ohtWwMO#{T7GnR~ z_s<8l>dWY_p<$Li4{zQ5u0&e?)R;B$rL2jgrg6l1Kox;;2?fSEV49KU9X`~Q@sL)Y zomz`Dv`I#6IUCnLNR5-S?~k@p$4aA4%gaS3&467+()fLaUi8<~e*~AOVYcZasmz%* z3pL5Ju4~M^qLk7mJdgU67?7?{2CeugZz`@jSJQ_!zaMtsIKzkSu&;mgFJb)gU2H0? zR5bLs=Jf|ncL^-lDl`)?t?IPD^hHuX;<2l4cK^w8GXGb;czz{XOZaJd*VO)jcW;*+ zgDZ6?tFORA-Wj=>!$TT{uC8! zhY7|gQmQ80_xBOu;lanBrWP8yMzV_SW^DT6H~>&CL}2M~ielQG>0ZL)r2@R>Dw00; zrE&!9YL(^=ObLjZ5_l4%tDJXF&k`a%&OyPdCY}uqp*!x9Q#6q8uj4 zo-p9aiw|ZPGrwN@$GFu@w?2Hwk!PWGr=|NMrA65{<=2{7dn=0xYd_&FMigkXv;k@0 z60LSlLgu0GCJBCidys2_hDXE|Rv#WY?piGMH~Zuh-6v|A`}Df%7S+Fm_Is=hO8Xxn zT7;KM(9-V9cf#ihoxBe^1!DTqemhhyXSHwRC(5b$|G*<&nDmLqCk$iPf>=NPgR2zA zdY1;^(S7jKn*4wZiSc=QqjknlFTSSt(@)iE@8|(7l=y;84wL8&IT@HKXKc?+F+%HN zvjOu~9MVpH#j+9pRVevVPlhtNO1xkyGYXR-r{(C+XfTlQqx(L-*B`yAxS6@eN5q`j z4S%`M@a0+Zhn*OxXuHo(_Sfwt6!rc5SZ5_q_;~sJM&b9nQ$D=gXLAa{{NrB;8V*qC zyabbQny6x2x%6EwrRv`%^|_L_hv;xzUL;(J?_0djpd!lJF)jWr&^enrr?xAb8S5v4 zEs#zgx9IRTPyef2!R2a@ufXmNG(# zEe|c_fQD+M%w3+TFW*1Yejid58KL}kbm(UsFNhPbP5)TX17XW!qJn^m!3UAS!Jola z;8?P?F;r3Ne`9M*FFnoIcio`bKqLB?AQ+IiV)*@rLgbD2{08ugbzwEVA4dx_^|(+> zAoY`8)2nM?F=(+Z>c0MMM$dszYR*B60j)9 zOUX?yaWr0b)gL7jGeKgQbJ0?Nu`GfyzC%^CMZv*U;WfR?muF^l#H*v%o{>cnT)8dI zjoJ-TpYJ4rrTy0fb2KYrPfof65Q5_QAtKEIpdf)&=vr$_i5Fjm1EMdQXN0)r-r0H? z_Q7cFUFUZwdc>)yWB+)^y^>f8< zOp{S4q%l)^dm@@*V+1q2p)yQiw*TWObbq|6T`6POh{68VfIDLV6>-NyY(*tiqA zdgC|@MTB!%tuAS`#Fske^;6Bp`V+ zWaHp4HuQ_)9!-fA;b)>+TZ9HXE^d;y{;VpW>n;l_r`C20BA!;$`<8$>7rpK&y*(D}LDz1{zEqHKSy-FGWGYOeAwMEu)-?X~h^u=itPuFivI>U~b_ z8&1Bw!|{SmV0%_@J88d=*j@!J^?TXgjZRUSwkch)gD{IYmuC)UQj0}-&HT%ZbP=1X zbIpl$TNFG>P>Ej|{OC37;Z7D!rwm#%E4oxyU3gwwWOLA77Zs_pYpN?6y{?NiTpt&3 zTl`@lfD*p}GQ{4;=4_faGg5y(KNtGnT7c8TiZ^_Og!0dAcBqnHnk_D;Pn0xGC&{}} zdLUXM%p7`M7dh@MM7*Y1y6g!&maTUryeeH3wY80F6Ix*o6EWH9)FNH~+dhImQ;izM zbVDQchdQn2)>5Jwcc7A^{EaBAgEH(P^y^mRa-{6kHzk%FZKNT$pw6_7sr(HdBez3t zhcTV-B40ufJ4nD&<*0NuX>mg8X4evdD|vxe#fI)CU~T(xeRi zYMYx%%mE6BW`>2c#(d00b9T8;%weBRq$6>w-FE&GffGI1+w5S8DbGb0z&Gi>`yg_{8G6YzxBDc&Qd`NwyZOccTt*!HQH7+yrv6(Kd+mr#^kCk` z**q%mMg|&_MY2(F+es+)MMeG5)!Z3WR7?6>-cJ+uZ$>h>VH=N%PtZElw~{T!5-cF@ zc+E3mOkBCGwPhfmDwbWyii@Qe+mQ-LQ!}p} zNUCJH#Z3^QCh~r17E4{|Q+FvrLyx<-)_tLx>5lp@1 zGOG}yTz|?b=>?M1u$hA3EghsG2ix;lDA5L5vD_wb_Hmho0?NLq{0I7%-u!z4?=vS+ zXZ;os!WKLrmn$;PmOIV`8RkLE7Og@8uaks2*+gTKRj8?dyjh@iFU^s&VGGrDTPoYR z?1$n_yNiG!GVv;f=WQgAfItqPM&ySc*Np$zg%RbB!YY&tyU<7hqI*@U&BpYTz0Smb zcrwDIwk?D_0ZzNUn$K<8Q|Xl8Xxsu~;Ff%~6eXqG__w}QgF}m8WM^vn1#=jS_;T-L z4qp|@i!mB@!bty@&GKHRZ#X9l3`E)MU}ip}JMS^}txv4aI*%MG_<`z}x|Z#KcWK+$ z(;r@Isl5E$vSN~;zSC6`LEfu)?aYG7hTvk5*4Y3$;_IO3}j3 z-QUICSB5@oq#9HWc#4Mh+|GAaaSPM=2@=>xv*2*$d>`yE0NGJ+-f;Q%0ZTXY8YBNq z4m+EUMQwOzc6@b_;Lv*a;ifdQ-Mm@MJIZHI3aLoSmvOz8_NkM-Z1?e*Tx}3i4`h60 zbVkuC*nG03#9`4Zh19>@IYht3eCprU~+$-t?_H zU?!d=e$_cgTo%sP>v;UGIm0q0FEnhvwEdxUvU05VzndugvR*v zj<&Nu^87@^S=CVOZv9&UcQ*H>f$PA0^R?B?^{8Ag%L3}(n}m()y~E-(6lpQ7)ocu8 z$aPD5@c-Ix@IT0ZX(nv`p%yxhK|6CfPyXiSUSHXn&-y*l^pT*}!Hgm11csQ)225tY zo+Q8d-PQ}lw!hNZw^lYcH_OS%6^@q?41anS z)n?q>-5`{i2?!3Ky_Hd(d1p88gOgU_-V|{m7M2$HolcJbi!dm;v_HhMs|S^2%Bm5# zly@i@^9r@ID6mkcI+q*lU;xwC)J%j_U{PO%hQ&XA`XUZ{-$FVk_RkZQ1Yv-ro=n?_ z_oCf`gKw+E|J9V$f>eHIR0yNsEAlalc>MxTrC$;(?|lkZVXsDhbr1z|qi{ z7s3o+UYK}lnr}^baF!xy)-tR4gq54N zhE^G$pX6ZaET}=o|G&}iP~Z^L18`4!x?~=pO&n*X>zdXd)QFYxBqudT!}5(IPBO(# z$a50OE{Ux}L53Sc3Q#1)<0m^9IvGa*@(=o&6+erS^`n-LPw(_EEqD5X0+_ER%TCpJ zCs=aMgnx^g-k8}b?PU7|DO}SQ&;2Q<$f|i_zRk+_J}0aRRDJV!MQ$?hnNFy^Cg9xY zD(~nps*MS!LK>|+ZoRkVSC9WVpNaDa{k#Vq~gHM&5nwLs!*+x9E14mx?$u8X)RDXk@Nws$RZYP{%KVzVofE z%K=$F+Wn3+7Dqqb7(KK>#l7z;KED!dwY(^u=L*=Iu5U4^A8$QCNUWOJkvJApxCYxdVk;rfdL=SDW5n6&)y0wOpyP3BM*2{G#h@C5Ap^E| zTUPeh3-cowO1#WU9ye6X&Nn$+qBntzmJjCOL!~?Oh`%!_sB2N|?U3;!Qq92=sAisa zGgmE7$I~q-?naemW6^pUkx8vbXRZ?VBVF*|I39!M4*sRO_AJKWupDjmFQ0ZX?b((g z2AUu`8Oh(eYqqNG8cHj>0H+|Q4VN{I`N}v#qNaRypQPt z>6DrSM@a;F`M_9+BSo7laF1?B|9Rdmhr0xWP*EocP!gf#EBjD>D z(noW}ig=+2pvO<|(e5s%pN5a*h^2ZqC=ETw!?PRuBsyy~E%D>WH<7Sg_r6KQXRC7< z#spm4CRslBL2y(99ja_al7{0C9|@ z{W>3c?Gxm$i|$A`^}kAPzV4<3;`ASOns`wy$k))(FYCU`G8>?pr}LFgd9iD_pfi}X z=1`>!aMFhNXy42%NgDHdAkYtZ)$AV6`nPw+7Q9kGKtU};I1NZVbwsaEJ4mE^18-w1 zVh7OdmYDmOZveC+PR>wetmy$N@;CDJ2Y=k0Z__TMIauA<3UptI!unz8fhvrYFp-kd zN!myRRmoxgI+>_ikjl!wsC|dH0pgA4%H9j12LX1z5-F#i4)Wx7PAuNd z$6A0NNy)NNpYe@kRs@1Iu6`&M6-ogTN2!wP?Bu@MNS_p5_8sb1Q#LA_Q=h)nGNopj``9M+o|qWxK{GO)t5Ez|yB2dmlqwqcl_%!wLqFy#$hdGlEI7y-m!<@@cUf zjMohKftQUk?UCfv_7Xu>h?-s*8sXRH-o%VHEw?M3GEF3DL~VvxicCdP)p|e#Z=Cu3 z#*GrsLM&a36Djbqz8t10FHOy7WfHhEUU1wZ&U$up#y?TWR*jupQx`P9JO^QUvPibO zQlAj~; z%&;(fWpnUmb@b;;zR_Y)dR3{X(>Blcmd-D0??uM$f4GmLuKR+NcJ+PuLMXNA>$A_^ zC)UIaR&94doM*3_ENa_HhAM4&MVy#+yy>H@4XWS%eui&4N_6%9(*NmX)D|w3+Dr@5 zM@Q4`rIvA=))FdhVst$z%1RMe8`jej&m*il$!J6{=~r3qwgAH2;sC27m}jpWa2hfjnDa)j#w$mkCtHn)w-3(kDg?Md zsMI3JO;tFca-*?yrhl+ip|ay(GO}=v8a=I5|y~Q8DIOc2zp61+n9A7B(+;ReH@>2W^)Y4qc=#iswVgS zlZFc^GwK%7{QGx)E@a!M)hNTnbbTkQ#dxej-IGPiRgntM%dA4!oRTsvV`TC?9H35^ zZaz>mHCaI|@F9#!-8QB`3z>xa%|R65i$LL)5RQ`sv zFB#ci|D#f0B9m^+GRnz9{aKK6)7O&m={Ij@ZLUL%UICZA|FRgY-a+jY)2kHxf~x zaLMLHttY5UoG5R@YiZ&4uL1j}Bz-#gLn0LM@y3nqzeJ#-?57HFoO4aaRj(ytvlKuV z1QaJGt)4;+GC*6o8egcNsD zRY9Q|wIyy{93^tms@@kAW^ABA%Fo;!L>*u)0RFwI^=zwA@187E+pDB2di}I5(smF+ z$(yA?U(5X>o@Ll6yTYOUJw8A_ug5~VCu=-}N*tVXVC3I**#RR5tjWXS3kf@P6#nRh z(F0+xo*X4B+nq=|UXf5?odjd!2vLc9y=e>*6s4B-6ET^J>I5;Mq)CnF&JQ1V{2*3Q z=h3oC?i!c(s)@r+yP`oKZPU!x^!w6tp5g~wPQV}GdLVdy+c$T`v#@x>b6$-mScecH zJ$OP`^a^Rvm4g*r8}krXHlE-@%~?R=W$iUdM3X z1mM`eNkX7b)()h?a$kh}(le|YaQ8JXdAGM*QNRVW$l)jD%YxHq#QG8$V2? zX{EmlENdetps zv0rcBvG{wV;XDQu39!hM+~4N+Ku8~-ftr*cVpWY~dAnR7*i=fSa@#$Io&v-3W9I1^ z*OM}=usBddXbs%_;7wm@xhEf(+dmnpoDE-V`=tjIs@9W@@ie+Q7wwp7sc6jG&3G@q zs$gTrw{SX)BrKejQzZ<|;tn>1Vgr1Za%|&RRB$WE6=`SPR!6+@H4t<)G`hN^-2A&t zFZul0hb5;Nd#|acP>SP|!J3NIUi@JvPf%gWZTQTuP7keVJem#bj%Y!|( z%{pR(^b21&>+2#Xl#wt%qry`4&|_tl>+TXeM>%kNAah9yt~S0#t>2H;lU=sIV}%>k zKq5{rUkAzi?;oHTKqW2kZUCp?0rt39uZlm65-e^5eSO)4_XE+Z^{4eDS$3L(SiPd4 z_Z~bt%gU_Og4^i%>qqnwE0wX7;1Jc6ZnsC42h^V-3#^@B8LdtjN>-JUw<2RjU>l2E zfo?1yFZiNRr8l`JX@02}Hu0A+aOGVVtyt~e)eHtLwh197px z+PXebWxP4H1gt+l8;tthG6wV9Yo;?&whTtEDQztgS`22^>`xO*b(~tMyk}b9_1nH? zfA-#W3Vt0AD ziD0^f17O3~Pj{C^Q|0`$pWx``kWndKU9zxz)0hYF){}y!>nkNF<|@^pT~ zdVkvkMm3?LdMutRMLPc~4Z}nt^`tRif2&xM!#12jZqX))xHh5K1$|IE(zX9ac)4P$ zO_BY^4eQnLh)>5wzJ2R3aqla6FBx9j?I(evu-@(}XIFH{qOnBWMX!}c(yCKGjFWm} zr@vF>V|ndoxgdjvDSB;3dl#B3e?WrKh?|)m-wwg7T>UQrTftt5iM#g5ag(}t$ zM>Dl6GZIt~d#t^E9OZR~>BjBlKoZYU0cE2wwn+a_o*Z`x!aF~_T|s7n-RIc+6>=#r zXX^ZQ6y1|)wip2o_MfWrIgHdh1=^Y8ze5bgZL+u6PM=bAKIFl<&%8Ri2q+baIIfpK zRoFm*_t!x@9D&7DFR{Qh0ZX;z?f?0%PF;;d`$MAH(nk_8*T3)w#h_-i6QJXV!tlp8 z?`;1I0%+qNs3O1B((Zm<1&iZu138oubHB^#w9SO4VA#8WB&!nZMYm+V$L~zkT&ogN z0*k{95oOgzhCBt_+Il&t6{6xxj=%%$6Eq6cL8S?Vc~T>$AChN1vy{cpPl)hbZ3bmP(~>)2xI_tJ=>TH zlr;-<`aj?O!4Bi$l!oErAD`G>o_52Dub+%qy<2j!U^J<@PuGK-P3|*yScS$K4^|ha z@d1{sus@93cx7s2@21IMwe#J4eUGj1;?on>bKAe)$BAxAco<-caASzcMPu)Jh`%-K zr7$=ib&mY=clrA7t8P;d^-CtxXw5v1S%pvgE$b~ms(8IhX~MO)RXWXCi$-tJ>{&c% z=$^PhQe)i2f3cou{ww_OVFjHSLVhrZ5Y9#4CAt&3F?cbG`b*+zbpOEv1jak4`C#y@ zct6nlP5PxSB_H;6D^B&u$)0h8qt(n3)dQoV_9-J%?xQ)W#up9JE>)}k`$O~>IgTqr z7vmTWL+YrW%H_5qf0vm_g5^RILfP~5c223o^tX(}y;HKyXgGFP?(#g5?8>xy_x;IU zZK{+ZW*I%fGTFJ}YZCh*KS3{TXeGob~XXwMW(&H1zM6qqkIC{R%~&zwo(4spGRL^k9=J za63~CW=2o^y_S!rBl}kCK}kcP|3d8@e0B*ujNoN)NhID)-c9sN)@gGhDo>u5ym%e) zYpa^F9t8$F1KoU)0ho~Dt*ZHcd(`PGMj?QHK_#2b)af9TD3Bro%KZDlKVKzLB49qA ztTl7;_bYLK8>QVQKB=<_+T!|)eWLULL>Gy{A%W5z2n2_DEaqIK(7AJzYd22Db3T5G zRU^T1Z_f;M#=>a4_*wH!gMdXhD*fujsqq0aVe{Qru@hC*#y<`|j)MN3S*nS<>?~Fo zxnjNi_;^nG^+C%`dt4(M-Btc;X4 zTBsaI5;f%*bMTz{`~iH`Xl?ZwH+J*XyCcGUi}8H7^MPpm=DWL`FC5r;+edOSpnj1< zxgS|=98tS9Bjs+hk|d-+LjUXG+Y8yU?nNBWt)fjgaSIE#NJd7_xhIP)d?pPk{flm5 zbceaIeW@YAbI4h>aMWQYBsZVAXXPmg74}?r=hFYZIpqV28hUfou<3lW z*5Bb+%O_!!`KpOBm2XD;HDykIb}#1YSeuO%5wWX1tn+rwDYw0Mo)G)t?ZIQC1ck8w z*@6$sMh5Qnk;hA424_m2_lIHZ0jgQfnR>4;STv1#x08K7?P5&!(j-iEA(k=q)Gk!Rt0Uq$wHn;FH-8n8dL~W3R$y|IS7qQTsmsn*>`NyKp^snqU(eKmVEBWTlJ zazx@UvT`&w+d!sWG$oY0Fm?-)CdIyyB5%m!Q>kdG>Mf9p$~sEXFj0U`#d#)ptF0Lb+0OCMa!nB;TM zo%CrgUf#I`0U}BdTwb%jqZVDWnd#Tv-F$xQhd{vOfZTUsJ*H2ZSw3t)xm0z@3eVel z2Xjpz6&F4bysPRyfy(Z94AzRi^!0(;5G<%A@-3_SKACT$-K=%i!_4xTbTyjG&1cBT zu8%lWE_Mp$dN`b47*_Vci9t#G#NXf48G8BaL|F0KCKGfFW0cyPMLwSPz>AjPz=(ph zF0x^utwu==9GzyUQ_9>Lq@R*^^ev;vEcoYzd+aYOCB$S3MuSD~=+CBB;Ksb@PH0q1 z8j{6wtaind&`G~VG%1O47({`WV+U_g;_FJ&Hbhq!g_|?}dJPZH&Z8TY$F-m8NFXOp`9CLfPpaj@5f-@DNp(G z(L%own=1k|=u%CmYb*64YkPva{F(9C*3Yjq)BIF0wsseLmQ zcoq5n{aC{>Ca*J=(P`w(;yc{fhO!Z|WFU%V4PFz$)MigQUY-m0{B3cNkPBS@wAoM2u2S|js6tm?6RY>?-Xz#g57f!PYdn7zM!8A2 zkotdV7Kn?1D(nB&0@%An7*RrMaglrvJLv zw7|eSsnTjeYq5YS_-#P#g=FzUK0N!}k=PfjC4ZNQcxm7M|Fo4bVc{^%Fc9!Sg9IBS z51^Wtw~3dASS>7o36cVQwwj`m>PXIapYE>95&&1w|K?nB!cdUast2*g0(_OFAsYLj zSS$DbpK5n-xq}LK7K%hZ_f7DWzV6BEN8iz`?BF$(vVs+h-M>ojk1fkYZS9CYb7p|Q zUdYS8qlATtZXXc@hXKy)`SluH{ui5G=5P~jE|haO)xMiZK#<_%gHS=vwJ#+34WkPjy0)UvE* zzC@i)X6iLoH_3Ob=HaWr7Z=l*x_upeuM{38rca*?%CU^215V?)y7(Lxy@%4z_bRQx zqfh0}g_OutNySJ8VaJYKZNpimrVqwdQCKe#r>?UtP^-dil6+u-Mom@>=RPHMcCK98 zgL)WUKYe^LZtH6F4DaHUlpef=2@DLiR&V-{BAXsBN=*HiIdTBW7er#~zXkp6$paoH z5dR|%DNOLL$ilhqI$`UI?uh0#YD*E1dmLT3VdXTFuoA`xYGmH-Ka!9zqF!f~Naiu} z%R=*-;9X~Eh{2nIkgUIKdzFj&sCejJ`grO{~fZ%0xK7IwFQ&7)S<8i{hHg++arNv~-%WK+mN;z3+ z-EuoEFipf^ioEkty7ea2nUkb(L@xd#u}L@NO{E@OQ9b`D2qwC$!pnC3m`; z>VnI5`W0Xe>fe&mt|b`XI=_^p;yu+^#wc@0`EBNw6DuBn$5V&OoUPNWJ3}Y&} zUIIDYp*TKwKXR6GHpRo6LOK1xC)th+1QD*|1Saj?+o5EU2KOgqpkr!#k^hHlDQ7P^ znVSPT-Zp}@J&}(1&V!E43Kr%11Ij`pR5`o0HVmCjKqsSSl@(dwsQQ39&*wjD<`5Wi zN)PPY$M$?{+CUmrgspSWYV`F-ZZ$CTN6GltVQs!Rj7CX{-lGM?tjx6`0W%F*c8;ri zD9f`oRCR< z=6v8+k|+r>m{!r#sur7qhtQ(41_6tv8P7JQ*nH&DWgI74{=6T~H9sO+)BJxJ`|fzE z-}nEdD58wWE<&=hXOxlbqKwRJImh0+Bzv#yBuZ9B$0o8lh|qD2?Ch*;e%I;!{(QdQ z$M5m`g6H zp!Pnf=)-tzvSsG%=iy%?gA_GiJ8kj7$$9MUdz>7@QaB?2r_f+YQ~LzpYsd2!HA^wh zdbSEsE8dfb%r)f5@43{(wIu@1B38x4qM9qx8DuQ4C5D^o%rLWE2<)6DJJ!F>%cYcC z4A)*polz=k1*;nnO|??7>+!p-uir!Ot?$tl!C*Z6A9Yv|cVlaWe$AZCChF+mB(qK; zs;uPjMD$p^Ecwb(Ne-7{*5!rak1xwL5@}*7WfWuLmE^rf-knvPh(%~pva%XozPVy% zJscX#YHGp1w0Gq2JDu-!veW88{p!K!+I+UOs8iKg^P6zw`&7|2b>+kJ{F=bTyo9ZaUnb!&^zuns9OokJ-!o{FRG0Wv+Q0+)TQnhavDj7JGh2Wu?S~ z%slnJgP0fsV`7RbGz5?b(&vYZTwNS4ePgOKxaYF80oGXOOLo-AxHiq~{N_5Oyd#ag z8)Fn!r6%u&K0t*~R#;PHMH}qIBF2>Fd(s>TOxs5Kee<})plUVgbOpxAAw7?I2KH*s z!HbEu`-d*utHZ^jX0!>EYK`-6<{I$&#Dl*+*2{UoReRYZsVf`*Y}>!aJ-_QENi2 zmL4c`v%b%q+)r-#)+V6uwQfLtAAG!4Yoh4v%oa4>*O2O=!b2~ct{CoJl=`_`rb<1j zfvd8>V3dl;VK%|cA~r+KL_TeqawBs!P;pn7f#w85{bQ%wqk`$qZ@$@wM_g+zT+_BQfuWKbEu%vPr zHVwHO&8-oM+_rj^(OA3rk~Yy5K^xlgmt$B~COIXd;yN%b_R|rOe`>5Lqz^9zFrgS+ z;=_C`9cf@($^1@KZHt7aQQJ!kW2yN?CheDqpOi(bf`Gm~RNzC>_DXea_DT#d1Tm2_ ztrbn&dRyU~M}Q>ELQrrteWa);D_a;zfMDlw8uzQYQg+yUP4;^cPzX5nvKZl%@sh%| zcqNQPSJ!((u^>W@JLm6r2s+W|2)bl}pqZIpVWqFv5%{g)Sw3FXF4Job>A!gXXrZ_b zRn$o5(=Dq>cW}dB@)UpYyNmD{=qR%GG!zv%H*N+zcTTpt?H~>NT!ZgJwb^;aLA?gWyY5m!3so zmshM>h=_}PLqP8*$y?WK8pY>@ zim2l<0ve0&`Ie^Cqz7|!z9$A4S9{!-!iZpRygO>7d3lhzx7l0cDQmc6MhB|&HE5tg zI$s+**ivdOVCm$I*+&+ckhu(a_*3?0D8gUuWQI+U7Wy3~9|n zg+n44sa>I$ON6ggS&^-b&`7X#u>9>{8d5X&_ox#@#y(WgHHaIemjJz)noi~mxZ~f& zQzqrmupjDo5|M|%mIUlfymzu3aH&i$RW*z1Ryp2dk3}48X}-EJ*&|W4YeLsqni7Yb zArZ9Q>0KMMqfSvR+`M}CRz?Jo&m77K(5VVnzvLvP6n$NRs=W}S=VpyYQ62(gHBR5; z!x@nZ4~LwN-TO-+(-Rhmaj#^7woVJsg{=XDqjgIUbh2y^>7ybo03L|ZN(VWiCyf}G zzS~l*OkRk2K3fLtmgWY|?bo_c2n?dPffavkTF;J*$Xce9>vYzGc4rdi z12TK>E04}DejRa?%0C^yQ=5n>vwWYEld!2cbUyIDlF5jm=O5=c6&v+YWVIQ&SKOI2 zHQg?by{i=L_jm5!k$Nkp7&FG-$%Js9CtN>y88z-YnRfkW%kTgn22*<^Y*78W=qnwF z@_72=ELP*5(|l|aY`SxoeiN9d2A{kZ_tbj}Gm+XzWqT3#a7>wbO4?SG=uYQsl(bIm zkEyfde5%vJWG8%HTPQi>IhBvv^G(E{Q8b?2*f%%SR`1jN3EoZ<4 z?TiLo+`~&%oBiUEjNp=XUXZzERZSZ85EZf;g^e6f#NS)w)G9Fkc?aH$!o4@@x`m=| zcj|T6`c{s#sU}_f`zmqNcw%g6>1(mLdLI{R#WR1!Ffy%}^8upmYb6Ot_zi;CVYxk2 zz|8pu21@Q-uk*5TnrVkdTX|oRI94uumAhmgUZ!9tG3D+~jQT1b9AcU`;Te|cJJm`D zLU`OMyk7H8&SFeCK?&Z}XbFY*!M=H9+ZX=b%SA6Lem=H(TK(=r1XFL-e1Cb~f_SZx z-E^2rPcDYof+^8lFaz4xhetk+$*8ZNKf@;s%R#6DqD-20=j_*ydp#(FmLB z{{5Tv>BwrzpqB3&E02EZ%oJD1;+uZfG3mdaA~<=t2`zb=5=VLRQ9CX#o96J=#L=^A z%K4U_Z`g!4wBMhbN8?R2$^$3UA=dVoI4sZ0R9I8**mFYgI99QbJRXr1>qZBB@1R<9{T_ zbrZa~$VK>*_*^5mAsWRX;l6JTTNk3sDoImF5KrDfj-7(K?PnvXprm=~?)PYgs_o>HqwQ3TzF?Y*bSh{2)5jlw zJ0T7ysJ>{3GWG9BI+7L$=ss+AU71>MqY<>)neq&IQL5^_7==END)q&0K=3~dCF671 z`jdSNKjq7?{msz}V=76MG1db=N@SNlb7vjc%XxFS&Ru_g_SUKDMlLAyr|JM}g3(>P zC~39cjPH4-)$uxS98%BS`T1zzvM5(>Dan0ae)a`b0gK<$QMC(=k6c+JfT)IJs1!ZD zu~{|G$kUL<5+!J$6y8^<+MM)JYs_cM)w^~<vYQ?(wJ)BDS*DlYLsnCSv=!AD-n_V@4FD1qDV22 z(@cpgLlHAauK9lBXs7m1%7VB_L@Th@PzEU2c|A}gb(=sx)`qE&s~jQ()6^*Rb9P0Y z^^_cJ6<2Fihsgq9BGgmbz{`C-=>W+D5NZ}@ENGZS!&E9R_r?~mXS{jikF^sqP(Z*6 zx%+sTzHa3%&^X!Bi;Ug@L!lg^3gtG0re{~&{`H*jz8b_ILFc#%@h+`%q7_ph&MBO! zx2!id)}%WAb&f-7un`AVrRvBvQaXdPSkOR$YXC%4Y%>1~sjgd}rfp>2K|Uo|{wc;# zA4<)GQkf}Dn$Pi6`aAXTfk6MhEy%u5yX6e@PrUWF3>23CK8r_^c6HC>rdA$0J}JLt zptKBDe>b5N{S?wf6I!yPU>%{3M^3pJyeV6t?fwBWF1T_YtukzXCtn*V8Ag3XAa9AM zg?h^)weryoO2-fH!+6=Qm@PgEs&5{-FUjziYEI53*h?FsuCVdYOvyDaGa&Z;X2ZDvlfaLm8*oDX&i9lE+$9usY{c zTc$m&rep%^v<9WE4m)*!!Rb6+R0 z9%VaDOeMa7ZRTGZ2L2Yv)j!Yvnx|zL>aY_N`?-b~*cY}jaAP2$z2#ZHAbzMOYq2h3 zp4y6}^4v2Y_XygV*ja11F%0wPP!*GlDC;!x<3n5-*8i$&nam>(r8sp8o2NboW)2g1 zM$dL~v<>kcPtih%HkycjDwQROx4l;qU-hYoDxY67xy6 zL+UOx^al3rCl^k9g1&6RBqNXo$2|<&@!TeEgdSF}io>Qzu)~?5lov$TFgtUJTEXP) zg7}4R->}~x_;Sk`l9itgsw6QV;6%vH9`p{5Ft4+-D_CGFsPDxM<(6bGXqZXk+UG0v zlTD?og5?s?w_>Kx&w%>?T7EQ;_HH+|R24(@oI_Km6p}9U9(6c#l={(Dgfy&-%xej_&FJ<(dNJ!}TEy5QxW{d^dIgWD?ny7>>{EMFu zG)#WW6Whm(SM#YS97saUxzB-X7cEX#wvpxlh5PLH0AZFKE1T-mm>TmSP>HuSH`-#*I73KWd8@gvN*9 z#s)@HFHft`WY^xdE}^W4AD$%g!f`iY? z?)R~a8ovEo>B6~+fY-NELnx9ZllQk_ux7L2`9OwVCkh|vik6DsyV+H{;VK2e9l~yg zLA~0@!vnV7x7wRSKtT7c2y}4@=YaKvM41#JfWSF8aL+-LC*qOfo;B~R2Vh<69}ru- z0b+RhkKjPk2RapzjRCNret!hdXK>;f;iTc7;4zt3t9H$iCua0$cIF_zj8g~e(O0E~ z!9cEu0!|b~6+wegIhfus0I~{pYd~62T-)?kp5C`|LF4+9PLzqEW$6O>vLinOX?DrN z&Cp#0AKg$Y&*{a%x%q@z+btjI0zP)PTe|**)57dVSc=rmukUM*)vx!WyDgfL&I|Wj zqiT;$lQSG02}#5Lcr9kWK8lgeA-$e*5JPb;P^MMfEps3kGr+lO>gv_6qW!S>gJ5E< zN%c85tEA4O1vcW!W&Vu~p#9XNl}1ZUXkzTo&F<3JPasAV4sLI!yBTI|d=yFTR6A-{ zWFfgf?>C`PodhYUTON8kEgNT2D?!rDJI-6EW_s9Wu37t}{`-fThDjvur+6f}6K)lH zpIyN^2m38=bp<=+ZrrXdBeE*yH4NbTZS#LW0<#z*2J6iPaTK=PThAmIS3r}3oy{m4 zADmIAykHZHD^(8nV+8yQh1rbsO{N{5WF_Mr!@nU$@c&&xk z3bs)W_Jmvk16;eAzhCgz_vO^9e5;K#_lP6)eST22`3oshd%*Zjkn;YsKZOf7^&w4I zfro6QDYb^b?K$8LJDoubyWdH;Tfm#N+Xo_(Pq^m%q&G ztdqy9d8XJj&rSm~A@An6Qi^Sz*0wToWf!BSbQ9{XfHJDJZn6#Fa_mT*?@*{Zwk zm!TlLtgGXQK&@|;+>R4pJy;nfsq1;yjlJ4m=GpT<;$9!@HRj+7WW9B^^$z=wwT9y3 zXo8(auW#CG*UbI0zAE`7GrKb=`^0q~^Hj&#ltGR4)Q1l|ELV3Fk~}d_?VOcF52Jo( z=IiqnuEys(4U3FB?`^H9k3TS-`9Ujk+rlZi=OIeomMrazP?)3!!;`OXr;^UT!LKC@ zyGq)_Q-~?Pn&n>h^!6KR$`2((aK)mZ%y#(9zPJZZx%s+^*cAqW?nxO_~7c{V671?D}8l` z+zRReN}lIpB4sA881;C-=v0!6f8lS|Q)`VK4+?kB2HlmlIv0_JAO5^0T65+F%AWJ3 z_rZb{jnOYuPMu1Qq5Y+tdc_>WpN>Ta6LYWJCIS{EU3~t;y3+AH`Mp*u98~|Ey-0)V z_dr&v|3uG|>Vu1xJSUb@pKCHN89hMum7VxLSgeh;+@1D8p_wZw7r(AOAXIzF(ZYM~ zj@K?P<>^mn2)<%&6}Jn?TUH7@V92*R=9R@X}CtP&Yy~hFEi1FWS18!{7VfJsKr4|U+JB(h`i!vjZayK zuyJOqQ!81zA$k>4Z*Fr18vPu;eNuPUp-=d2eZBwi(^G<>sAm_&+llLq7c8X^gQ zg4b<(75nDT^w(({#KGsmq!S+L0cY+ZO_cl+;Vy~obLpqZbzTNym!APs7mo@2;wNo8 z@I7czUvDtgI}v(hDc{^S-&k96KgA=R@o267G0_xf`i`1oJ}>@d$B+7a+?Hc}90v1R zb)KE$Co031G)(msRK$%E4`{{%AFT7b_#<`;nzxlF-#Mx&uO^(m*yzwF(Byf0=_;?Y zBG{v2ABKxxW-+;L6U^9*D_Wb!4}*ADqksHLy0cN#X)r(JV|(Y@i3+t<@|_!x78@v; z#3KB0iw08}mbxaprTn2amq&{;*=iq8!odK^FvL}FFP3wU}e4&@Fy*Qb0! zbE0LnOVds`A$>n4?jCJ)&q;lhAg~cK)Nz;GvpFS4T5V~20eRW)7S7Oyf%O%^bG`KU z@44&pXY6-2kTH(1$2j)}5%(IFWU?ERm{Siv-@JjPFE=F|HZqC`$z2M@olx*#1uC;ZLnL(n0PzRg>i8e; z5CT_={9^({_wya4OEz3>8C5!^g}+nM5lw2hbIzCf2Hh~~_nTzD5ne<#4POfk6=bQ> zdG6$@GYu6_D5?*fZDC8VG3ai4nf8l~Goa%!?@H;V9^QF@in2HI!$wilXp!@05P4|6 zo%ebZa~~e6q_w}W`=I%rzE^zVy1461BO%M$P8aV&-}9e&wSQo^J1SwB z(9DQV?to8T-&q>+UO&s8aZYfs%k*LdR;9g%;Db)dsCt1Rz=n|9%cfddd!twHb7&CL zTq9u@HR8^#_MyUuE@K}ruQl{qW;(3593I#`Qccb&R9xO%%ont2-CB@5k!13rBo!`+ zDn-96;PO{WVD?zmwd8ZW4&(sa!$VZF$iP5I7v*?=%lJ-JCY=uok3H?nREziai&kZ2t~1#d@XM1&!e!m24b<1&sz)Ady3S&4^YXMR8e?t6W|uzTAW?E_TqD{O6Hxw z{r|)QOm^`ClhRb@iTX$^0$)us23X+^oi4V)j(VsQZQgw)QtZ|C5>R{_dghJB5s`D4 zr=BP4ReZ&I{g#io-(e$KL{BF^2szr$U2)6gOdBIz$3S7HFl2U9@y-pXFZ2hd(c6qT z$CjdHn0)Uq4N30bxG4FhGa=0fweSKCQ5G`s)51T4S=?8}*i?+iCG$f!KBd~_TBxqp z3N*dfdyTx)l~}t?#pE;7;jW3&omy*H7zh$ZiXPenb#<03ZnGA*b_1&tEQR&|{-~(( zMZM47iimRP#z#0L@CBTw5S@uWr}s%1>#wOkyHWv1+AbcJ;#yAf@P0TK+~hJlbWahU zJ=#eYiK-ZX>tH${v=84z{yUmCwn8Fo5@oj`}eaX}sP?B6{RZ#WR!cR!eCo?kT~aoD8XDU5PXE zn|t$;TMx?1_{oJ}0CaT|j|QX{uCLZ5NvzFGM-^K4$u<#>FnZn?@#;l%3jYij0A7@e ziCk@7yXI6WyRa`(#KX8_c(i{hI(!+y=~qa{_rj?s%gxU3=n)aGmBjY<`&8vCU+WS0 zJ(6+5hA>$c#<2LBZ7FeF)ZF?`e19vA;XQSOgD28@puKaddWp+s;3!vRGQaq>V8@G0 zw#Of%qm8vucnspV>=-xazBNb(u8uovfJZros;DZX6n(~~4S6SB9L^sD?>9HPw1k(Q zJmj&$DqID>g|G#k{c2TrYTGhK-{*7wG!BVqQDAb|=l~uC12^l*6dRD>r{9~XI&eK) zldb&or2b@lD$&5I`P{RinMesPo4yV6Q>-q_?KZ`b){IY32|Fjrg~mYYqI3_oAcj^r zKhx(0+7#s=1R6)gI_elbUb3lzbHdT7&~EfL6_@c`_Xn!-gqb@iy!p)D(JC0EH+Ns^ zR~^-quH0!N9!?P&Xc8)h>14c@W~LKJ1ix3i0Fi^wG!NOaPKkE$->+3rc+~n|x|3DX z7yI3Dr;yJUBtV`wpnBoTn?M`GET}wEtmBhu`kS!ZKQD|{Totk=Utibv$f2{W zW44%lfr_Q?5q{(4X3-7&B2^1)aE1_t!`vTw_@w^Kz}ekcIK{m2bTRZzcItULB}Z@( zRl>r4dk2_VfOUgg+Wf^`6tb)y6QHchN;$RB6%yw3t;kwxBIUYB5+UQy7zL{z(L3V< zM@Qp0!Poa<|2!LbrDr#rn<_dTt|MCKJADt%`OW82gg@sT8AmfnwD+<%V%CDo1&@!C zAQAEmaG5C7NL`Y)Q{DKcP^0}VoaXEA$?ArQ0YP@_7h@m_)7HL^kHhJEZ=0NPS-R&d zqnG#MuFN%*T}A#;03ehAp|vqiuhx)k8OBPtA-$-J2J?Z>?nxyTzM!o@<0_2C%QMis zL~h8p0&0~yiG$ibwla$nv-6j4{upc-=VrATEX@xK0Em`|nC6y$r6}EIP55CVm}Eeu zc1C4$l)6*j9~_vzDn&c&?aj=HIJdqEx!xNtOmLgZ46xAh0Nr7W+wN`Uyr;Xe^b-J|d+M;Yl7mrZFSz-uu zPT&Lrg)B90=LsJ(^YvzmKYvUlvBo=UodE>ErHZVe;mlUL49R^%HKzOmG(w>v6k-e4 zrB3vrG)5?`2{ZR4ZN?CiBtkFiJDgQcyu`Go-|$VZDprBXyy?udq4J9Cch@yEE?Cmt zGCp;346*6WEqspel4%d^c{|d?E-=74qmnGMHr~8|3b^u4WY9rZ_vg>bh}&&W#X6IT z66>8eB!jI7Uga0NzLl6ys$3Z+5&6A4J?cuQE@hqT|HE*C%CIsqMXAQMKoB+yKNk7r)6M5>v2>)!Q@ZKcdS3_gx)MMerFAn&Y@ z*puMmT)d{}zLkIweVPFAh>|0=k{hvQMMQK(^7V{aQEh(+;|`<--dkjfifo)1UQ3)2>p|eJRs}r>_B{e2n3S(Gi)xU?nVVQiIJJOkHS)t+8K8b1Ju2?NmEa zqMvVa(EFjO4lE^gUYZYnK8Tt;i=<#r(e2ZUt!PC)1&8G>vq24PY}e{6Ra1GYl3-=w zGZme?0(rqZs!vHNfyK)Md`r<%P*dweV##(TG!*18I*Uk72F*(f;tE zQ*1xKxM#F_TbgjC%MpiQdpDDbJE(F|kh9Ou243A-%-{q1Aslr*iyL}`gFOT=ywm7*N z<7kysNiH8G1BO=Cv;@iN?C0-9veb#XG$?tT33w?3Ig=|R044SDaME_12~wB+aLRJR zi+6izvym{(;Z<3>GNOMT*+XQRDzO$vsgB^F33D{YAS>2esELG2LQB!Qur~a0Nc9UW zLt=#i7Www)UW9XRu+DwV9G7`&DxeYMobkw>{lC)M9-VV6G9tLj zY@UU1N-Rasf*+FaE@rOapY6D?K@h!vsp@sM8`!jjgqCYTuX$uhRWNMi6i}Aq%DoP9 zKx;zILqSy@*=Bd)2MCgYA10Ci{Q*}41Zuo~1LaHEIaL`)kLvR?jC1P9apl6Jx$6dM zSlf{1Gv=vf0BZg7>gM0to(3iJG%00i?ra(x2Tr@_wCrHCGF#U+G`}fim@b=+KKsZR z1Mqa(WhbXt{2}TCn;qImJ6jETHy__u*>XY&y*Y1B9Uw#bifJ#hI6~_>`FZsd`i(cQ zQ{&P~_x${%xIzf&?0dwW2IY7!!FEg9QcpJJu!CtqMc5$t{v!av%1mrWwZ6wiyxyg@ zDFvjE)sGk7>Q3CmE?>q=*}TmAu?voJ%&@FzEf?X5)(|1{fB(8S;3C(%hH*8!P0M3B z;C1-ta&mU^13csk_c$z}THR>HS7(2Y?@N}(gr6SBk?WnnP`&#je9ZXeY~csVXyV?i zfzP8)t8c_O!g9lTZ~l7khi(oI$(pJy&f8xmFhc8%4~=V z!p3s$kxW?VJ$~lhJh!Phc5t7wXZN`ffiihW_|PfQ8)-;B5q6I!LJ`m zb#f3;MxO|}Nu$SdiOE7jL2n*}_b9f~PS|m9kmEyjq2C@r7W91}HW2{gFSuh)d4uKKT z`_G@yA8=AnH_G>l1tGX7|i}Bv~q0heMQ_8 z@BnboR(M1v;sv{d8R8KC*@}ZiGIF3@q?PM9;KY&xn+5?sz2^xqD6})#Ked85#Q^R5 z`whtGf4_$-7FX2&_4qtN2bxs?G@4n%7S}zsey8%4#D7Y^T_LFeP1XIU+c=n|7v#h& zotXv&xBcCHfWt2=9vKNvD2D14A>0;%6DwB>qa19H0#hgUgy8BFc-s`r%%7K{aj^yC zU?Jo{V$e`1&ko817@QHp^VZqSQ(55g!~e(Q{}HCzzrQlqK6JclTusXH-Z(n^!p4Tm z@HHH?=k!u|bmPN66G!#GkCgu0Kyq;WZ3hhBe=7*G^?DRR`v$6p^9hUdFO_WT;{eg%82T-<0&mQVf}lbTLl-5%>(|~+d{yEc^R|GdlO9Jju=gV z%3~7=Q%qu}x>{r%2K9`8qTa;x!2H`Of44b0o^0KZ+ZY1G*hlExCA8uQuLK?R&(gZa zjO?NY3d5U*tWIjq{-;Z2Mp{%ifW1cPGC4&83=qTs82uffhyNK)IP*)xq)o?ZV?-(1 z7gR_bG;sI^cKN-SVll*3{Cy0@rX?l~;_E`M-?*2|C)Z^7i5sQL9t>T{nwsy%v`QACR#?nIHiB8t%?4|_PId~Iyb{x_pjoV;ZjX$Vfan`LyOe|q--+B z9q;LFAwTibU)p7@k=?c1*JN{a**U{Jw^gW16eIHB|bTY;@`O)Y=A*kZS*{FU0~vW?3Fz*K55_`$Mih> zZm&kASFYg65(VOB@57>$xI^Mdj+n=7UyL5S-wi-tBb0hBY=7=h?=ZiCiY5^+^$jQ2 zt0wZ>8RrWpRd(sAjt@Cy>X|2%vus^XP^F@?nTJL%$OQJ(4@l)OE$&<3rr`marf3Ej2jt3RL&G%@CkSMrE z0@VQ*d#2g!`=VZh{?*Jdsu^w@&Dk8O=SsR?CW35FqcT4W9tQ2Q_=Vc-+7zk=4ILKV zUFnX$NkKpu>n5g|QKv7&u6u5xiBFzUjG#W?1!P$UaqW`$ue~9o*EoFf?9$7t-(Sqx z^LgX%$@7TP_7F1fvuiz@?!mF?NZhs zxKJN>>C{9M29T>7>OCjY!&6~l74}rMBtnxHcFB%;)B|&bS8I)<2lG{_uQ8j?K0wWK z+fW?KT3OEG8oF-+%@^sk3u{MU{iTiB>G7Fl1lnIrWO>FAlLkJs zCr^7c(`eCBhE!U|-d6Ht(z?qm_?-CX?8fMMjsJG96ZJr=%CC~zdswhYtI8MamUHOs z=s22yytZqhjuHy8Q+}r=(Ef@BWJjv@Jal%iZ%N_QhVeChf)hect`B2ZaN1C5ZWLQd zi+zSHN>AJG99JOk-M!_9b|6qLh4r>_t#8HU0e*_C!EWwu(&@enzW#;s$9nj9qT+As zeFGBg+0Jm^7=3Mz3Y5uRx)j6DSL>SkV)xzV`1wcOJqM+ad-SNad|e;tk4Y2zit}e} z&nMiA9D8_uvG!&fvWT_<&#zJV*EyO`S-VM#cQ5Z|?FQ&Ql@JU}AamJ~qCZdF)a51h zbu-O4x>k~3AkX`Yq6?YB#jlveqvlWX2MU3XamPg^+|!F33HQeQ+P`$HD;%c5C^96W zyFHd<%4T)1auSawA-_DaDr+csMq2e-Ii$_cKdwuRyGon1mISbMZ`!+sJfGZ@6+sZx zXJq7abzO7HvV$5;mLIpZ2Ltzun&@+vC9Cn#R>QfR^}?OD%0#QgPS%AXks9CI3XC1p zMtvU>wj;vsJNMtm@86r)sn-L?xNZ?cg<{pO8>h(B`HnpFx*_C7aN~;+t=CW945NDTzO3@ZY;y>@b1!!!Y)I1ff@A4%=P8KXD?p5niDgoS@oP{V$#**Si2jgtB zEXG0rt=M`2dg*opivUFSHQ9yOn7f7<3*vI`oN=G2@mu_JO0%sdCF4kkI#S}oX>j`- ziFl;&K$=-MZX<`Q8~42N>T@_WHNzR{?@#wtuCwBHQ*cbem6V9HSqiv{9Q3$wo0OOE z*?ui|B4B)yOpR8Hc!`0RxAAe}g#F zWU@GhI{J1BA(Pn`J?CGSJXlg@q?_ZxisK+Vo##BoI@1>^(IFf$M2$R(fT!qF9-011`b$Ick%UcOZB^ zrKM(V}Gc@hEdq9eiYSQUDK(3S7yEu4()~q`I2sVFREdOl&hEr;ggTd{Sd&zJDK=ddMg{K;~^S6h!k#$g62OvbRVgh?^gyeZXjp* z;lDF!XVVvj*T&Qfbk%*bwa3*98lg^;_c|n8?I#0)V=$bixlM1VV0K#gs#FGz01&Ma z^P07hhS5c-;6Ne-)&i&S@+y#0QOx9X&|l01#5UFO%%iA>j(72r3|bSpyED~iI{}AN zK;b2D3iwIsp#ZX@q|}-4JyYJS+DvT1iuJe5$a=`)xn=*Y|3*aw*0w$wl6cS})<62- z2BD!3WWX6o$YkHeovVz8o1K?rF^Op^p5haJy}u`Ol`&r*2c3eOMS#eADy-ZV=`$@H zfo)QgN~SgfIzu+K^8Bz;+|<7-vykL|KaLF;#sQ91$lbL)+s$WTE^MRovg0VOu!!TJX=<(ex405q@mHKFpU8h`EO4TrY%QKurk zhzC4gBATnC$>`LG1e`T`q0^0Omb2)AGbjP6pnk}@SO;jjE2~t7$0ou^X7!H!>X=HE zo`|X21)N#BN>xSzpsNLXDnT3YJ~JAN`RlURifUs&+aya*{3(o{o@N-K2HX}@UC1W< zXo~zFqm?`^{|;dyi1l|}0Up>_Bmy2U^Dtr^gp9^L^fo9Np2r&GRaK}R@}XL>G7COa zf{T*i0hB-c*9m3&#)gce><3!-XHkt6c4&qymtg+7WzS5HM6&3&tiost3I>MGG&jcS zR);nQ0%6S|-0t+!0EUXXt=yWD%5m_qMNgcd5IfB{kw^QbqWY06#&r6MKoXiJmtlY> zIkiMbieWksn}}ompL}+oy-dZ;@ANV+#zD`WbH=IHd{lH^+y!uDh`EL=C1(d`fm!3| zJ9of%I+nl;%6q@@Ghoz#P&r9_?DHl#mwz;#rG8K&Jn&wx>at^AxS5{2!0gCphA|Z} zzL>wq|E@i7@Y31M#46ucc5+q-d2!m&ksghDaoY2b*^<^$g$z%^S18BaOu!tD*ABP+ z%=E5)Iyg7b#p|}p{$?}CHtI@ae~tx8Moo#ClApp37)9q&;VK`IiRA}TFgJ%c|Ehgl zM$h|9e$R5*+ZN_{JrP&{)(_ol{t>pZ@e}?67aK$G81@X~rZeo-iaN3c|A_?vy{$Av ztR#5b!yJuM=QlpZp4rWs^kY0d4udkr6B#vj{dF}fsT^=j)$g^$ z5U9NV*+-V!6OM&z=rq|k^{&-i18;nWSLAeLnU8=uEP_jWyx2dCPsL4M)-i}hBPU_l z$zT7~xQje#$W}L96*ai&U}_qO%UdT5V8Ry7Hz4pK`J!qb;zA95F|CHn8F5_ImmS^9 zE(A1XRwOf21P&H-9PSkubR}p5&7!I(HhkHch1q<%3xThpiIi><C0vCiF- zV|~9mC%tP)ox8ODu|@SM*JOVU_wJ+PVaHK4KaIc#`q?3_{()pk%zi6!-|kqr9oS;O;yUI)TL(%t-KK|1E`?bMf#6c{Vg4ab&CDF zXMpS7%tJd0qr2W}uvS=N$Ir~ zqcNYdSE*IfSpOL_xM$?rwUNKWx0;LKoP0?ES;Ao0HGi&9#4yJr32!|;O+wdSW;tVndP`FQn)vG*U{;CHlcuAcSjxc?77BL9 zVT111WE}$m|A6JyTx2EpUM!qW6R1i{y{FYM6C2hVW#m5LqjynS^2O@Dr5V@3a@iWo z4;oI&YWLAf2IL4A=ZzcF_mciiw5yUR)yh$_75!rlXh;|}FVA!fvPZIP@%Bz_m6N5% z+CW~tgXzt8>S?>ZSwV>nt?eZAqJ15!a3Qt{Y$reyFkMcLu6aU-%42#cWz1HQw1uNIi) zQf=I=zR@I0Q4B zBz$~~r>Yzp3^AI`@H3eMoT7Cg@|n2^*4Y0kLzeU!hax<+g_4&Z<>4anL|~8Z0%6f| zqX1M4W)w3tJVs_I!!Dtf2i_sz*08g))V z#bnEG_cvSd)(b?bd9g%KZA zX!a4b4eQi89`BrBh1<*>H!?$<>fHmSROm^Zd&I}ieDVGHayGT}Q58#QIZyT=sd#|M=_0*3vo*)smr2=Zh8k{j)*7jmzBKqMd(VZAGHm zjTK0176+^(YW(^{-h9hM2U{yfz|;reHoJv{PW6A9Lzc7qv)VaOESO zD#h!UedMNvYb4utb!+Pa(MB5!XZ1Y^=0`hj4aj4936)3riC>pRXh+Q*lgtEF)-i6P z;&hE+_A+&`*kvLHD$zVl>&I6;4V8KqxUB9j6{T&`NvHC3`T|+Nd}eOgr?Ell63Kuz zI{t-o^*y;0>bb<^>lONr6dWk&XbAcHp!{YgfY`(5TCs#txZ-g;is7vOroiy-Pq)it z>NmvL^BhujI+<_^9;+}eH4QmGI!f@r$gXSeW!CF1CLm4n#9d$&p89lw|D(p|Uo0?Z z9*tGQRnzr}o*}_b$CH`QD6yn484^G0B{j(i+X1QZQ0Bc z?<{<)nJx})1V#Q}aqn6~DvylZp$QA! z#pzEzjE_(ugSfU|HBS|N>+1uz0gURy$u5`|VP<-Jab@#w;SExOfrwE^dL>&AG}`-& zNAkzx0ftR0--xNN{9Ul9u>|&HZjDV4Gw%ShDYP~C>(-s}&)hu^GyZ65>Vq~e#+Gz9 zB$NEUm0Y$DBcLiI&iU}^l!7nfPJj>T7$6i7{GMP$@tPn(CF$A}_mb|!>sD5#i!Wua z&F9Bl5ple}R^OFm1UYn?Lxr&5TYnEeOZ-8raBE5ajN1H`R=H=&`yCJcY2lK)NBbkL z`J-@hjFPtKq5{qb5;_%amMOeI$|8&HkTjhQWsq{?)1VS_;u=>-6}AE1@&%39SkX-t z-~A3}A!geh;s&!=56QNq!`M<)gncvFOBq1! z9q6_H7J4_1?UeK}2+HoGVR}oL*xZ$o&!)3V1B1bp!_Tys8p$}`#s4ibI#y<7B;|3K zK15Pws^@E^Igv8?m{rq~B|Ske9;w|2n^+@g+r7V?8}_?2^fH8Mk}^PSmD_}nK}0Z} zPmA_JdNkNvSFw%zV0jYan+tRygXp~)F8}hG+^9LHp5IK{$@IyegU9BnKfu8f0>J<( zlOr~Y$`C$)lLm9 zIjErltq6f2w{=boi^m)doI3UFgbYH1Ju){I?v_I8Q%PG^kVXl!^ieY|rH=I#B%LL2 z4pi`BFhIc%V9Ql90pGd#hTSDIHK{(_)PQt+G6itoYL{aAqpt~<0P9{Dj4!^Ky>9Q02j@|=oCEf z%?L=39VuxmH9HTt^k(7vogiV**||)0IiEa!H+8oN{832Yr+fy(wvr-jj^XDQ5L@D6 zaO3g)O=XwfyGPgnGsX4UkP2q*iA~4k@9aP9^}~iS*-MKHVeZ=-(;{F-)pN% z(bvENHWGf%lT8&a&^3jMYHGhq2z_vfW>9Q`m7Lu?H4ZZ9)7{`whO%A=T?U0V36tk~ zrcmQP^`BzI=!8F+1}%ttLz^HeGEP0$R6**n4`vBf*R^?{ap|Z{r8*606Vb%Yy)ie) znT`W}mG;|tJ{CrmTy(ElsY@qO)s;{@-ZKZ+u1dbkH?5xZTPrGdLkcTxx;P(@w?C8P z5=g4zw#EeC%Q4JDP)M}2IeiD%41a2Ruh*|~juzsS#0PP8o+C?Xt5vRi$3<;ZY*wPX zIai=(S$)ok=#2Z+`Pf)jrXRNx!>(9 za18{o$Ny*yCWDnAWYl{OCMLV1i7t;8Dg>P(gyXO7$ZEn<&%WdZJSIv+!$!S{+z>Vf z&14pg@+h5B{rObC1i>X)3|A1=c&@y$ZR5H$~1SAVfxPs`lfv#IxuSLkxD z10yn2&H-04JLZ(4KjGnj&`*}~X-Av)UuXEiJ4#ji2)R3vl_3#x76OmeiANfuCUs0lfGQf>^EMgH6=YJ=vcKrWp-Nj!%K z#n8si8M=DimXC~EHx4vmlpCnHbv}nS$qcxhJB7q9Ldz1hJ+>c^av!|B-YM(=w0UM` zpM2{U#Lc4O)FIt}s4&~d3uOz2<~~Qi;@Z86%8fILFmi59=bKxspY$8RB^C=Bz}Y|Q zgsH{Am=JC;OcXv<6{${G0^qj9C`XCjCEk|ZA>9J4g9=ZVa51i^#1Pl^`4d<=XjK8C zOrh}0mE7&w_h9p``zkZt0=O3*;GG?KJ(M~=n}V}zq+;uG=Bdhqg@B! zXL=3?#tI9pvgHTUiTY1EToN6Y!^6za22Om3dhj%>K`QQ!i6o1f@;9>%u2 z&~Wi13!jbJWq($g3l>O+$dK|81wc`oRAjJ3!$}(@hhY-6ugET6#pyHky0`5Y`jm1v zS6HH62-Dd{ysnTnx^wA{H+^!@==2`6P&iRRNsMU~$}c<_wv+_g=YI^+FDE9L;gTTy z@rDWtKX$peG7!7J6ZW0f9p9mt3@nlI3+h=aXkup1r@}VDrWgIk<{Bk&uqJ#qO9=XM z^wiz2TsnAx09*nHQWZ<2UB~xLFGC zzw!NhyEEtMLvHb*_rS;2rTRZ!RPL zoqHq(B+f!|xJQ)qQwc!t~WMTs*|ZPMPR}+RYz? zPTL7znrKmReeqfLsmI<<^;A(=BlEIOrbv8pA%RG^JYm*4W}spFlT~a25O1S5K#({) zZ%IRZ1*s^`}aq&!d8(*f3Oz~1r zbJ!cUykO@#7Z)J#ZUjQ?LxN4u0>a+?CFQn=6HcnMl1OM$xdMtolFiTGtddhskcqwy ze#U9-{5Q7<)Iv&XJsuG)0kEMm*aHG}z8zHVF7;}%K&f%Tb#Hj$TY+?#ym9Kt6&J!r z%{%*30gS9|Ybrikf<^E*KtSV>;|f(|osgyeDY*lhcW?Dlf7^~rp8`Osfu?v$aq>_5 zC5;Hbfv0EDsgbNr0TMR;XiwOz`0TUrCY8ZI zQ}J`ns2@Dwu^tXEtgvN09XWfE<0Dksq@oNyTQ;q86wJKa4w-Ek`go~Q_=<@nO}%G` zp7!Ubm%H4fk4e8AMro3<`|$^+M0BxeH*LssFl&@Vs*PFhr%}a7*2R1zqWL~&Ej`C# z$>;FndGfvAFw|Dr6e+Fi=Ik(m-?hW~_uB`Xwg^d&eAcd#&HGdh?Zvj94AeXfcX>Jp zNFHfkE1EH2^DwlzJyR3$$eiE`WD3n-^;qWGjbIwCXDXTLjtLN6rF2;e^u^^C+A%Gc z@JBZ)gbqlo5OMn09HdO9YPO?27CF6dYA#6$upSg0`!LJ=qph{_+t4-Wx8EJSdvv1F2a}I``3fpW zaCPd#pUpMjZMpr9p`k$5LqpTu&qn-9p*$Cbt>1|K#$J22H^qH)Se*K z+2i^+_~WKR@jvG+7wBRBPO(vIaXq-hO)hQ1-~3z+O827Z%p6nJNwc3}u>KOa9F0x- zAZw*jndf#ed&|rT=(NYhw67)O_QOzzl!IQzTgb9&*|O;y^}-FRPmvLWcjLHjX&MeM zT=R+F^GQ@K7af@GWgndcYKN>`NcrW%O5nNQ^6b4|v=z_AJ+r`F)qh0fyoggWi*54A zy8us3ghiZ$fX|yOR45t{GiIB%6V40 zysqQZ*hlHHl&})>D+Y%v?88+ta$|h4CMetO4jx~Lu4_W>Dcn&ksvJhE{^E!`7lakFAE2jw_WIp5q*0HDs`E$P$d6mw2Ol4W1^2_% zLUgw4$O=nJMh#+-;M#olX59Y&ZsWxpam8xoyeih@s4Ul8CdXUf3Jk+Z z55cgloBVqVUgm)kc%3;XG=}gC1@WSSbd2f+lPFIho&xjuRs>B_et4DX*q)zUACf~~ zw@@(u+bK&lsV(UOLrR`O~Q3pc64{0>2Fh17dIjT#rTe0E^FC-`!w>R5a)@?=0Mp5l*SG`eV^T7ZdI-EyK-F{(g?-&PoV%jh;rgY5@;_Tt74-*E_p0aE{=q$A7ygwg%*}s9rQf7NtGZr(`ALE{`d@wmmF;oZuP3PO$5ww z_&R0PKCWL%4@c0GF$Yp(z?TL*nhe0ek{RwMK@J-Cw$6HsZ%}{w0*lAuwSL5vtcoDR z(^z@3@PSe@#Z(}qNd;Tk9*E!cf!(1?n0%&#ao0dgOG*!H)-oQv%KeA*!$?}6Q@}Tu zu+yx${XSc$Qn=5)L9%>F3jc{fqM3Ai8XzUruto_ete@Kv2_fLyfu!53qw_zxSlj}}$%7bg8UMK2rDxHiMhb*oNrYr6xLIh`DQlvDumFuec>z}BShG#>c(Yxup&w) zmx1A+0399>MICBU>GTDNSl3z+&o!y*_LmtT{uo1|9D^TKCFBzyE?UbL#@RxULu)a- zak1AJiHxO!Y5+55xx>K{0{DURqH`y`r*#f15$r;HqQIR8;+lmA&vB9OG&XqsS$J7r zeF-K-huhmdMf3FQ$}`-Y6v5)#L7om2TB;8)c&(*|Dtq%Fj-givQbQpst&c~}+Kx^w zIH(7Wxi4n=PsJC5SUurfF7fg_nfdsjqwT}PXAxvTP8h zX7d-r{nid@y{YNs?~v-5`W6pO`Nj}C*opueT3i5&4{$%70~EBa^7LVntB44YvjYyd z=S9~C@p>C?T*u?HL?*#HVt~02TS!Nm(Gwr-pZc@~KQDll_`U~CdpJ!0Y?II|v_Bb2XQB+qXlHnL4H*$^1#4^w@t6TM@I$h?_w$YItXgMDiZw!*Kd`=Q! zJ}&D3m}jNtwhK;k!J&F)?}FmUwkjAWZrQC;_>L=eT!<$Fx@f3v4k+Y=dJa^W0ODs8 zWwpFj4xFa{DC}vnqHPA{8B7TDAis(PTNf4y(as+xb48n?eFtVyZHT%fNa*!=M@aw&~`i_;_%ay3rZyZr0KhPCZNUE=%uwtJstqGiO{a-3=(-zWQWB zi}8>+O&^8>v?LxKu{bztf)TydBcKGznrv)<8Vu-|=z9^Pyv^CGsMNuXewoZE18;PS zTTIZ%p?$z!6bHpUk~e-y3Eh*GAkF~}TwVlz%L@joKz!l1H;zC)H|7yK5PSF@OI~bU zLca8qV%}!E6|wpBfmv3MoaY_R6x3iICl+ZsH>Nz*)uAEgpd*$JsX(yVP4ImMed~Hx z(B6E7vhFzFkrG<4a<7J?3br;8`0(K*Z!NoKy~5k@aFYuJB_{yusmS5U_eF!VK)w1Z z8?qqWbXBrHUcZ#A+D~-s0zTf9i+5flQW^n!GhtH-SP=s-|tzWQ>p1+nbx^^rybW?VY<)5!|#P^9- zv%Ft$@XQ#e=aCXR9681^+itBG8-ta zJjc?30msoEF>N>F2qad8H3t<%zW(;u@haO>yItcDq-AB`usXLC z;5LJDR2Dd`SC(U8kvA#G{PV7QEVW7HgXY$Ra@Jr1+tuDJUZ+sv5_hQ3@sn&Eo60Y~aip_ljUhn7xAPtx4rorfd*6X+J6or&bJVFEk0<#w z*2&JcmTrB_M=;|!k{OEPz?+zD@ie#M^=-n?+#F6>AvR^KUjRXanYse> zB$V6B!D36tXFSqSP8itJY@a^&did50SwfRA@EQQ(;GZ&27m$8dRCu<@j#l4XC{O{p z+u!t#cAIOgO(0R%wT0JQZWgiQslyBVQ5d0`m_S1!8hclnN z?p!Zy=G2n~LeP)ffm$iOBSb~|S6tG}RF>;cy1Jw@U3s)j$4&QUcs_c3eni3H)O3ySFm~n+$n)N zK#+U+@!|;L3t(aC{rY>Oj&}hT zFlfE^8k;*~pb_jl!lX}4vrAm5G)04-QBFLam|XV}PxpC9lA%h;Z8<^*c%HO9azwN_ zdV=D&8SeAyl{nbANI6dg-4P4#laE$bO zwEBcBA;YOJ@|<1;<%au(SlMgaf1T+L85R!BS4x$Tc;RT6miD7RRynPEb3FKCswxxz zIc?iaPnj}L5U}}A1}BGhLBIEf6e@vu3=-B5xYVVfu+)u*R=553HEhPwYF&AK2*6H< zPKfcToI2d<`p6cdVA-U~0F!6jWp6oR0RubJVGVBZ)-=_`K6Z6vx~C1Ri+Fkh&TO$3 zxG)1m+0gQ|%yA7-4!0*M#-~|$6fXD~va}f4M z!XbS~p#Lu74s_}6;-;xGxl*bedrjO1N*ov7Mz&Z(hHcE_gv0)Eur>>dl%0^=fJOSA zY@=#yfC%L6iBXN66-0#}$bEpEWIU7KT<>dnGG&Kjs83&NXMz#)*f~rZO!ERVt)b4Q z)O57MLT8dwr%GRu+%$|#FP-OOnSp{T3)n;@6mL)dlg!2ESY}#%2N&50cmpk$jS|Kq z+gV*1g!Ue>RQ^5X%2q{2n*x=!qng+}JdY*j5ebT;qYW3fKv`r6T-cpNJUxh#6tDIs zOQ&1y2=zRBx$Uo{m)Xqu4`#6=$g%C(jgty?K4qoDY0xCV&(HMw;Ne7KjiXVs;QXWz zDp_t$Z+mXW{pRXA6VfUHH&>AFXDdh2iA{%Yk=}Yo{SM*1qJ%;FrNG{Cy#pPgy<^jc zbggT&HYWrwLBi2UlmO{zdO0^kNwsaW^{2YpzpMH^MbL6zHGm8LhbS(O~YSrTpWje~l} zWx&=Jn#)nrKuJFo(9W(G+a7!UXri@yu$|=160E9_)HfTWysXytp>L5$J|vR;`!T=1 z?m?;ymTEh(lR@LgW&1XytiGwk&I7}n^8Vm_siJhY-v7m^$0Jc(Nm1pX%!)_iq3#2m zF4#!Py(-7d{rgzncmCk1o)!G1M~(bDRH|FdM;N?&M;2rs=C4-#l3e!BH6i@;QRk&N zJ>JZ-oYBL4xvU@b#v(z|661u1T}p}mslT0KM(}p4`UE>zUy;KCQk~%C-WXiGBFo?> zKZ%;!85>G2D4yi5fXXBNL&CmTEC_`^Mp|W}L`?(k-rS#ZQtR2^4&3`fSQ9u=fu)W0 z^I=+hFI?$6^fXah(1VcMz_5}J-PzFuH#`t!E)YD8S8s{3BG#R zZS3`TAe4}fdkyqA2B*Zjdo^<`8m&3yVZM*8NPBP}(984-dz7T}vkJJ~84Sdu$Znwy z>3S$cZ}@Rz$rXzR$PjjtSQChtxX$^b|I?^SXju%7bO%m(=Osm729ews!WKe*PP(R{>swW zq?0-e{_;!366%(a1Z9vNDjW8I8kqZ)c2q&2;{O_as1Z;E_gki zbs~}Ja*cV&h9y*dOG=N{Ck21Dz3(U`VBRjgCh)ALWXk_v8+h{UzNxa6bpr@;{!gss ze`#FhA59L-%Xy9=B0euwaLnOr%P{}Uk4;jp%1?Lyjja3c+2jARh5xa&|No%&UJFP- zSbwUJ?$yo=&I|}?W%~}dQhhY6;=9E`|8r%F=~NkC3`czG=DJSuA}*t$b*r^?p?5zwd_^FRmFvF zdp#Jsrh2dYNRNDUB-UE#vi*LAvv^19e}6w&t>Z(IKSY)Y)0onjySBxWC1pUp#Ak`_JFt z?4}UP1R|Vm8=scr4pePkkHwW*XL$Uc!zu^L(G4MGZio?bms#Dh@ewVb`Ze-2yFs{9 z^C)D#JfkO{`eUKWSjLjRYe9Y&W8r6e%mKO%yCCJi+Ss2T&yk{CB6x+Dm zC{Bn6vZ>=+D@yTf*e5c5|9%?}6!rIRGCZGD3X$T}jh2|@);DDjNz&U@J8wrrO+h0SZV8HvYK>`x&*rmjn-fKbWq>9(p?tS&@ee#9Kt>g zC$)k%oW{<+FqUa>cknw?d#-A%VQzT)NftLkIzW)1bCyU}#$&*-@82H0dfTUz0b0n9 zwv$gG*T`7qNKK@!E$qi>(OleJDcd3M9-rU;6?J&S1Z1|CV~(UEnnNh_)|oS^221~J z|AJOhHAfW6u9XcC-&Xw@`yq6Rvk4AvWu8Xte3Ynv?(rnl@DQ z8kP9_N-A2p^xG?}xQypYro2>rmWG*GZ(Ta+Bc!uVWPCE5Ozi?MgQQL)=l7@Se@+`N z-h5{^*KM$pg(2W6r`F*vdV!an5zTyiU@)zRe}d~?ceMV_FfH3EtIf_TA1Em3s1ES0{>_l7oZBU$vQf zP;73muFz0#S|_sx!69nHM%Rgr&^wJuOwZZNq^*~-bKt(;CB=XXARja_2IXO#MT?1< z*s2~UVY{FI6?wm`%Zt+#s7)Xy)@xVH{J5_&0OBCMC7Vp{slgvkmuI$4^nn4z}uh6weEK90oS%G@yV zuC`4rYfEj3wRJj}RICL@L zkLgo?gZ|B#oiaN*%+c<%P>vXE6(79R*I%FPZz2BS7Nd>QgppN;1Vf(>-}*p#!Ig~6d2yo&z>B8 zVS^0|p=)hZFMJU)^A4$%N@B78QA021?7jE|ZDEFEdHu6G%e-J#Uq55|ju7aM_f)UW zsa`;;m5VOEbd({pLO~qQD&cZtpqEsBAZf{#pcKiT3i7`QpBzxzwg||b=Q{Httu?T*m;KG2`=B+yFAK&}%TnRoQJRIYtW}>IK4%6w^dxC(ihEI- zXy90o+w!=B0q zj!RxLzxnTYhySDf0!@-d>M#Q% ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/b.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/c.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2500 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 2500 0 1 0 +simundump xcoredraw /edit/draw 0 -9 6 -5 24 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"19 May 2014. M1719.g, implemented by hand." \ +"This is the version start version." +addmsg /kinetics/b /kinetics/b/autocat ENZYME n +addmsg /kinetics/b/autocat /kinetics/b REAC eA B +addmsg /kinetics/a /kinetics/b/autocat SUBSTRATE n +addmsg /kinetics/b/autocat /kinetics/a REAC sA B +addmsg /kinetics/b/autocat /kinetics/b MM_PRD pA + +addmsg /kinetics/b /kinetics/b/inhib ENZYME n +addmsg /kinetics/b/inhib /kinetics/b REAC eA B +addmsg /kinetics/c /kinetics/b/inhib SUBSTRATE n +addmsg /kinetics/b/inhib /kinetics/c REAC sA B +addmsg /kinetics/b/inhib /kinetics/a MM_PRD pA + +addmsg /kinetics/c /kinetics/c/autocat ENZYME n +addmsg /kinetics/c/autocat /kinetics/c REAC eA B +addmsg /kinetics/a /kinetics/c/autocat SUBSTRATE n +addmsg /kinetics/c/autocat /kinetics/a REAC sA B +addmsg /kinetics/c/autocat /kinetics/c MM_PRD pA + +addmsg /kinetics/c /kinetics/c/inhib ENZYME n +addmsg /kinetics/c/inhib /kinetics/c REAC eA B +addmsg /kinetics/b /kinetics/c/inhib SUBSTRATE n +addmsg /kinetics/c/inhib /kinetics/b REAC sA B +addmsg /kinetics/c/inhib /kinetics/a MM_PRD pA + +addmsg /kinetics/b /kinetics/equil SUBSTRATE n +addmsg /kinetics/c /kinetics/equil PRODUCT n +addmsg /kinetics/equil /kinetics/b REAC A B +addmsg /kinetics/equil /kinetics/c REAC B A + +addmsg /kinetics/a /graphs/conc1/a.Co PLOT Co *a.Co *red +addmsg /kinetics/b /graphs/conc1/b.Co PLOT Co *b.Co *darkgreen +addmsg /kinetics/c /graphs/conc2/c.Co PLOT Co *c.Co *blue +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/OSC_Cspace.g b/examples/genesis/OSC_Cspace.g new file mode 100644 index 0000000..6172a1d --- /dev/null +++ b/examples/genesis/OSC_Cspace.g @@ -0,0 +1,260 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Sep 7 14:04:57 2012 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.005 +CONTROLDT = 5 +PLOTDT = 10 +MAXTIME = 2500 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 9.9998e-20 3 sphere "" white black 0 \ + 0 0 +simundump geometry /kinetics/geometry[1] 0 9.9998e-21 3 sphere "" white black \ + 0 0 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump kreac /kinetics/exo 0 0.005 0 "" white black 3 9 0 +simundump text /kinetics/exo/notes 0 "" +call /kinetics/exo/notes LOAD \ +"" +simundump kreac /kinetics/endo 0 0.01 0 "" white black -6 11 0 +simundump text /kinetics/endo/notes 0 "" +call /kinetics/endo/notes LOAD \ +"" +simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ + -7 6 0 +simundump text /kinetics/B/notes 0 "" +call /kinetics/B/notes LOAD \ +"" +simundump kpool /kinetics/B/P 0 0 0.1 0.1 0.6 0.6 0 0 6 0 /kinetics/geometry \ + 4 yellow -2 2 0 +simundump text /kinetics/B/P/notes 0 "" +call /kinetics/B/P/notes LOAD \ +"" +simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 16.667 4 1 0 0 "" red 4 "" -2 0 \ + 0 +simundump text /kinetics/B/P/kenz/notes 0 "" +call /kinetics/B/P/kenz/notes LOAD \ +"" +simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -4 -4 0 +simundump text /kinetics/B/basal/notes 0 "" +call /kinetics/B/basal/notes LOAD \ +"" +simundump kpool /kinetics/B/M 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 62 \ + yellow -5 7 0 +simundump text /kinetics/B/M/notes 0 "" +call /kinetics/B/M/notes LOAD \ +"" +simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ + yellow 2 2 0 +simundump text /kinetics/B/M*/notes 0 "" +call /kinetics/B/M*/notes LOAD \ +"" +simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.41667 2 0.5 0 0 "" red \ + 28 "" 1 6 0 +simundump text /kinetics/B/M*/kenz/notes 0 "" +call /kinetics/B/M*/kenz/notes LOAD \ +"" +simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 16 \ + 0 +simundump text /kinetics/A/notes 0 "" +call /kinetics/A/notes LOAD \ +"" +simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 -1 8 0 +simundump text /kinetics/A/basal/notes 0 "" +call /kinetics/A/basal/notes LOAD \ +"" +simundump kpool /kinetics/A/Stot 0 0 0 3.5 21 0 0 0 6 0 /kinetics/geometry[2] \ + 41 16 0 24 0 +simundump text /kinetics/A/Stot/notes 0 "" +call /kinetics/A/Stot/notes LOAD \ +"" +simundump kpool /kinetics/A/P 0 0 0.1 0.1 0.59999 0.59999 0 0 5.9999 0 \ + /kinetics/geometry[1] 3 16 -1 11 0 +simundump text /kinetics/A/P/notes 0 "" +call /kinetics/A/P/notes LOAD \ +"" +simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 16.667 4 1 0 0 "" red 3 "" \ + -1 13 0 +simundump text /kinetics/A/P/kenz/notes 0 "" +call /kinetics/A/P/kenz/notes LOAD \ +"" +simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 47 \ + 16 4 19 0 +simundump text /kinetics/A/M*/notes 0 "" +call /kinetics/A/M*/notes LOAD \ +"" +simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.41667 2 0.5 0 0 "" red \ + 57 "" -1 18 0 +simundump text /kinetics/A/M*/kenz/notes 0 "" +call /kinetics/A/M*/kenz/notes LOAD \ +"" +simundump kpool /kinetics/A/M 0 0 3.5001 3.5001 21 21 0 0 5.9999 0 \ + /kinetics/geometry 53 16 -4 17 0 +simundump text /kinetics/A/M/notes 0 "" +call /kinetics/A/M/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2500 0.001 3 0 +simundump xgraph /graphs/conc2 0 0 2500 0 5 0 +simundump xplot /graphs/conc1/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc2/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2500 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 2500 0 1 0 +simundump xcoredraw /edit/draw 0 -9 6 -5 24 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"12 July 2009. cyc_dup_bis_BIS.g" \ +"cyc_dup_bis_OSC.g: this has a stable point and an oscillatory" \ +"domain. This saved version will oscillate. It has all initial" \ +"M molecules in A/M*. If they start out in B/M then it settles to" \ +"a stable point." \ +"cyc_dup_bis_OSC_ref.g: Same as above only this is a reference" \ +"version with all molecules in B/M." \ +"" \ +"31 May 2009. cyc_dup_bis.g Based on diff_dup_bis5.g. Converted" \ +"to duplicated cyclic form. Matched with cyc_dup.xls:bisslope3," \ +"but the match is poor." \ +"cyc_dup_bis2.g: matches cyc_dup.xls:bisslope2. Good match." \ +"" \ +"26 May 2009. diff_dup_bis5.g: Supposedly pentstable." \ +"" \ +"15 May 2009. diff_dup_bis2.g. Based on diff_dup_bis.g, altered" \ +"rates toward quad stable prediction." \ +"fix_bis1.g: Testing bistability. This variant has range of " \ +"about 30%, from 1.25 to 1.65." \ +"fix_bis2.g: Using the above rates for both bulk and PSD." \ +"fix_bis3.g: Reconnected the diffusion reacs." \ +"" \ +"13 May 2009. diff_dup_bis.g Based on diff_eq_bis3.g, set up" \ +"duplicate reaction set in the bulk." \ +"" \ +"10 May 2009. diff_eq_bis2.g. Based on diff_eq_bis.g, here I fixed" \ +"up the nasty sumtotal operation and now the C_psd* molecule " \ +"handles its own enzyme site rather than setting up a slave" \ +"pool and using that to do the enzyme." \ +"diff_eq_bis3.g: Based on diff_eq_bis2.g, restored original" \ +"cycling parameters as diff_eq_bis.g" \ +"" \ +"" \ +"9 May 2009. diff_eq_bis.g. Based on min6.g. Implement" \ +"diffusive exchange of equil reaction with bistable." \ +"" \ +"11 Apr 2009: min5.g: Eliminated the anchor protein from min4.g" \ +"min6.g: Replace the entire bulk bistable system" \ +"with a single dephosphorylation reaction." \ +"" \ +"min4.g: Includes trafficking too." \ +"" \ +"min3.g: Includes both bulk and PSD reactions" \ +"" \ +"min2psd.g: Same as min2.g, moved to PSD." \ +"" \ +"min2.g: This version is bistable." +addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/exo PRODUCT n +addmsg /kinetics/A/M /kinetics/endo SUBSTRATE n +addmsg /kinetics/B/M /kinetics/endo PRODUCT n +addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B +addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n +addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n +addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n +addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n +addmsg /kinetics/B/basal /kinetics/B/M REAC A B +addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA +addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B +addmsg /kinetics/endo /kinetics/B/M REAC B A +addmsg /kinetics/B/basal /kinetics/B/M* REAC B A +addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA +addmsg /kinetics/exo /kinetics/B/M* REAC A B +addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n +addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n +addmsg /kinetics/A/M /kinetics/A/Stot SUMTOTAL n nInit +addmsg /kinetics/A/M* /kinetics/A/Stot SUMTOTAL n nInit +addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/P/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B +addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n +addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n +addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA +addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B +addmsg /kinetics/A/basal /kinetics/A/M* REAC B A +addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B +addmsg /kinetics/exo /kinetics/A/M* REAC B A +addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n +addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B +addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA +addmsg /kinetics/A/basal /kinetics/A/M REAC A B +addmsg /kinetics/endo /kinetics/A/M REAC A B +addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 +addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 +addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 +addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/OSC_diff_vols.g b/examples/genesis/OSC_diff_vols.g new file mode 100644 index 0000000..35f4a0b --- /dev/null +++ b/examples/genesis/OSC_diff_vols.g @@ -0,0 +1,219 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Tue Jan 21 14:05:52 2014 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.005 +CONTROLDT = 5 +PLOTDT = 10 +MAXTIME = 2500 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 9.9998e-20 3 sphere "" white black 0 \ + 0 0 +simundump geometry /kinetics/geometry[1] 0 9.9998e-21 3 sphere "" white black \ + 0 0 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump kreac /kinetics/exo 0 0.005 0 "" white black 3 9 0 +simundump text /kinetics/exo/notes 0 "" +call /kinetics/exo/notes LOAD \ +"" +simundump kreac /kinetics/endo 0 0.01 0 "" white black -6 11 0 +simundump text /kinetics/endo/notes 0 "" +call /kinetics/endo/notes LOAD \ +"" +simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ + -7 6 0 +simundump text /kinetics/B/notes 0 "" +call /kinetics/B/notes LOAD \ +"" +simundump kpool /kinetics/B/P 0 0 0.1 0.1 0.6 0.6 0 0 6 0 /kinetics/geometry \ + 4 yellow -2 2 0 +simundump text /kinetics/B/P/notes 0 "" +call /kinetics/B/P/notes LOAD \ +"" +simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 16.667 4 1 0 0 "" red 4 "" -2 0 \ + 0 +simundump text /kinetics/B/P/kenz/notes 0 "" +call /kinetics/B/P/kenz/notes LOAD \ +"" +simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -4 -4 0 +simundump text /kinetics/B/basal/notes 0 "" +call /kinetics/B/basal/notes LOAD \ +"" +simundump kpool /kinetics/B/M 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 62 \ + yellow -5 7 0 +simundump text /kinetics/B/M/notes 0 "" +call /kinetics/B/M/notes LOAD \ +"" +simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ + yellow 2 2 0 +simundump text /kinetics/B/M*/notes 0 "" +call /kinetics/B/M*/notes LOAD \ +"" +simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.41667 2 0.5 0 0 "" red \ + 28 "" 1 6 0 +simundump text /kinetics/B/M*/kenz/notes 0 "" +call /kinetics/B/M*/kenz/notes LOAD \ +"" +simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 16 \ + 0 +simundump text /kinetics/A/notes 0 "" +call /kinetics/A/notes LOAD \ +"" +simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 -1 8 0 +simundump text /kinetics/A/basal/notes 0 "" +call /kinetics/A/basal/notes LOAD \ +"" +simundump kpool /kinetics/A/Stot 0 0 0 1.75 21 0 0 0 12 0 \ + /kinetics/geometry[2] 41 16 0 24 0 +simundump text /kinetics/A/Stot/notes 0 "" +call /kinetics/A/Stot/notes LOAD \ +"" +simundump kpool /kinetics/A/P 0 0 0.049999 0.049999 0.59999 0.59999 0 0 12 0 \ + /kinetics/geometry[1] 3 16 -1 11 0 +simundump text /kinetics/A/P/notes 0 "" +call /kinetics/A/P/notes LOAD \ +"" +simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 16.667 4 1 0 0 "" red 3 "" \ + -1 13 0 +simundump text /kinetics/A/P/kenz/notes 0 "" +call /kinetics/A/P/kenz/notes LOAD \ +"" +simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 12 0 /kinetics/geometry 47 16 \ + 4 19 0 +simundump text /kinetics/A/M*/notes 0 "" +call /kinetics/A/M*/notes LOAD \ +"" +simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.41667 2 0.5 0 0 "" red \ + 57 "" -1 18 0 +simundump text /kinetics/A/M*/kenz/notes 0 "" +call /kinetics/A/M*/kenz/notes LOAD \ +"" +simundump kpool /kinetics/A/M 0 0 1.75 1.75 21 21 0 0 12 0 /kinetics/geometry \ + 53 16 -4 17 0 +simundump text /kinetics/A/M/notes 0 "" +call /kinetics/A/M/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2500 0.001 3 0 +simundump xgraph /graphs/conc2 0 0 2500 0 5 0 +simundump xplot /graphs/conc1/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc2/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2500 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 2500 0 1 0 +simundump xcoredraw /edit/draw 0 -9 6 -6 26 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"21 Jan 2014." \ +"Using " \ +"different volumes for the two compartments, based on OSC_Cspace.g" +addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/exo PRODUCT n +addmsg /kinetics/A/M /kinetics/endo SUBSTRATE n +addmsg /kinetics/B/M /kinetics/endo PRODUCT n +addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B +addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n +addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n +addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n +addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n +addmsg /kinetics/B/basal /kinetics/B/M REAC A B +addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA +addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B +addmsg /kinetics/endo /kinetics/B/M REAC B A +addmsg /kinetics/B/basal /kinetics/B/M* REAC B A +addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA +addmsg /kinetics/exo /kinetics/B/M* REAC A B +addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n +addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n +addmsg /kinetics/A/M /kinetics/A/Stot SUMTOTAL n nInit +addmsg /kinetics/A/M* /kinetics/A/Stot SUMTOTAL n nInit +addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/P/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B +addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n +addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n +addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA +addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B +addmsg /kinetics/A/basal /kinetics/A/M* REAC B A +addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B +addmsg /kinetics/exo /kinetics/A/M* REAC B A +addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n +addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B +addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA +addmsg /kinetics/A/basal /kinetics/A/M REAC A B +addmsg /kinetics/endo /kinetics/A/M REAC A B +addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 +addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 +addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 +addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/Osc_cspace_ref_model.png b/examples/genesis/Osc_cspace_ref_model.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf7f4d3e37a6779f868a816961b6caa5cfac872 GIT binary patch literal 45319 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 literal 0 HcmV?d00001 diff --git a/examples/genesis/Repressillator.g b/examples/genesis/Repressillator.g new file mode 100644 index 0000000..d784b24 --- /dev/null +++ b/examples/genesis/Repressillator.g @@ -0,0 +1,832 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun May 18 16:56:17 2014 + +include kkit {argv 1} + +FASTDT = 5e-05 +SIMDT = 0.01 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 10000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 3e-18 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 0 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/lac_gene 0 yellow black x 0 0 "" lac_gene \ + /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 27 0 0 +simundump text /kinetics/lac_gene/notes 0 \ + "This is a group of reactions resulting in the production\nof Lac" +call /kinetics/lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac" +simundump kpool /kinetics/lac_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 52 yellow 26 -12 0 +simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 0 0 0 \ + 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 26 -11 0 +simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes 0 \ + "Rates from\nBox 1 Elowitz et al Nature (2000)\n403: 335-338" +call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +simundump kreac /kinetics/lac_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ + yellow 30 -13 0 +simundump text /kinetics/lac_gene/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/lac_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 yellow 33 -12 0 +simundump text /kinetics/lac_gene/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/lac_gene/l_op_1rst_bound/lac_transcription 0 0 0 0 0 \ + 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 33 -10 0 +simundump text /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes 0 \ + "Rates from\nBox 1 Elowitz et al Nature 2000\n403: 335-338" +call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature 2000" \ +"403: 335-338" +simundump kreac /kinetics/lac_gene/inhib_reac 0 0.0055556 2.24 "" white \ + yellow 36 -13 0 +simundump text /kinetics/lac_gene/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 224 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/lac_gene/lac_operator 0 0 0.022222 0.022222 40 40 0 \ + 0 1800 0 /kinetics/geometry 36 yellow 40 -12 0 +simundump text /kinetics/lac_gene/lac_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/lac_gene/lac_operator/lac_transcription2 0 0 0 0 0 \ + 1800 2.4998 2 0.5 0 1 "" red 36 "" 40 -11 0 +simundump text /kinetics/lac_gene/lac_operator/lac_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\n403:335-338" +call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"403:335-338" +simundump kpool /kinetics/lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 yellow 26 -8 0 +simundump text /kinetics/lac_gene/lac_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" 20 -10 0 +simundump text /kinetics/lac_gene/lac_mRNA/lac_translation/notes 0 \ + "Rates from \nBox 1 Elowitz et al Nature (2000)\n403: 335-338" +call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +simundump kpool /kinetics/lac_gene/lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 62 yellow 20 -15 0 +simundump text /kinetics/lac_gene/lac/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kpool /kinetics/lac_gene/degraded_lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 yellow 20 -19 0 +simundump text /kinetics/lac_gene/degraded_lac/notes 0 \ + "Degradation product of lac protein" +call /kinetics/lac_gene/degraded_lac/notes LOAD \ +"Degradation product of lac protein" +simundump kpool /kinetics/lac_gene/degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 yellow 33 -8 0 +simundump text /kinetics/lac_gene/degraded_lac_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kreac /kinetics/lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ + yellow 29 -7 0 +simundump text /kinetics/lac_gene/lac_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kreac /kinetics/lac_gene/lac_degradation 0 0.016666 0 "" white \ + yellow 20 -17 0 +simundump text /kinetics/lac_gene/lac_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to scaled by approx 1.4 to get desired levels\n\nElowitz et al Nature 2000. Vol403 335-338" +call /kinetics/lac_gene/lac_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz et al Nature 2000. Vol403 335-338" +simundump kpool /kinetics/lac_gene/AminoAcids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 20 -8 0 +simundump text /kinetics/lac_gene/AminoAcids/notes 0 "" +call /kinetics/lac_gene/AminoAcids/notes LOAD \ +"" +simundump kpool /kinetics/lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 40 -8 0 +simundump text /kinetics/lac_gene/Nucleotides/notes 0 "" +call /kinetics/lac_gene/Nucleotides/notes LOAD \ +"" +simundump group /kinetics/TetR_gene 0 61 black x 0 0 "" TetR_gene \ + /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 -2 0 0 +simundump text /kinetics/TetR_gene/notes 0 \ + "This is a group of reactions resulting in the production\nof Tet R" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" +simundump kpool /kinetics/TetR_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 46 61 -3 -12 0 +simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 0 0 \ + 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" -3 -11 0 +simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes 0 \ + "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ + 61 1 -13 0 +simundump text /kinetics/TetR_gene/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/TetR_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 61 4 -12 0 +simundump text /kinetics/TetR_gene/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription 0 0 0 0 \ + 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 4 -10 0 +simundump text /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes 0 \ + "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/inhib_reac 0 0.0055556 2.24 "" white 61 7 \ + -13 0 +simundump text /kinetics/TetR_gene/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 11 61 -9 -15 0 +simundump text /kinetics/TetR_gene/TetR/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kpool /kinetics/TetR_gene/degraded_TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 61 -9 -19 0 +simundump text /kinetics/TetR_gene/degraded_TetR/notes 0 \ + "Degradation product of lac protein" +call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ +"Degradation product of lac protein" +simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ + -9 -17 0 +simundump text /kinetics/TetR_gene/TetR_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get appropriate levels\n\nElowitz etal Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +simundump kpool /kinetics/TetR_gene/TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 61 -3 -8 0 +simundump text /kinetics/TetR_gene/TetR_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/TetR_gene/TetR_mRNA/TetR_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" -9 -10 0 +simundump text /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/TetR_mRNA_degradation 0 0.005775 0 "" \ + white 61 1 -7 0 +simundump text /kinetics/TetR_gene/TetR_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kpool /kinetics/TetR_gene/degraded_TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 61 4 -8 0 +simundump text /kinetics/TetR_gene/degraded_TetR_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ + 0 0 1800 0 /kinetics/geometry 36 61 11 -12 0 +simundump text /kinetics/TetR_gene/TetR_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_transcription2 0 0 0 0 \ + 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 11 -11 0 +simundump text /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 11 -8 0 +simundump text /kinetics/TetR_gene/Nucleotides/notes 0 "" +call /kinetics/TetR_gene/Nucleotides/notes LOAD \ +"" +simundump kpool /kinetics/TetR_gene/AminoAcids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 -9 -8 0 +simundump text /kinetics/TetR_gene/AminoAcids/notes 0 "" +call /kinetics/TetR_gene/AminoAcids/notes LOAD \ +"" +simundump group /kinetics/Lcl 0 15 black x 0 0 "" yellow \ + /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 56 0 0 +simundump text /kinetics/Lcl/notes 0 \ + "This is a group of reactions resulting in the production\nof Lambda cl" +call /kinetics/Lcl/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +simundump kpool /kinetics/Lcl/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 52 15 55 -12 0 +simundump text /kinetics/Lcl/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 0 0 0 0 0 \ + 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 55 -11 0 +simundump text /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes 0 "" +call /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes LOAD \ +"" +simundump kreac /kinetics/Lcl/inhib_reac[1] 0 0.0055556 0.09 "" white 15 59 \ + -13 0 +simundump text /kinetics/Lcl/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/Lcl/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 15 62 -12 0 +simundump text /kinetics/Lcl/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription 0 0 0 0 0 1800 \ + 0.0024998 0.002 0.0005 0 1 "" red 2 "" 62 -10 0 +simundump text /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/Lcl/inhib_reac 0 0.0055556 2.24 "" white 15 65 -13 \ + 0 +simundump text /kinetics/Lcl/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/Lcl/AminoAcids 0 0 0.00055555 0.00055555 0.99999 \ + 0.99999 0 0 1800 4 /kinetics/geometry 52 15 48 -8 0 +simundump text /kinetics/Lcl/AminoAcids/notes 0 "" +call /kinetics/Lcl/AminoAcids/notes LOAD \ +"" +simundump kpool /kinetics/Lcl/Nucleotides 0 0 0.00055555 0.00055555 0.99999 \ + 0.99999 0 0 1800 4 /kinetics/geometry 6 15 69 -8 0 +simundump text /kinetics/Lcl/Nucleotides/notes 0 "" +call /kinetics/Lcl/Nucleotides/notes LOAD \ +"" +simundump kreac /kinetics/Lcl/Lcl_mRNA_degradation 0 0.005775 0 "" white 15 \ + 58 -7 0 +simundump text /kinetics/Lcl/Lcl_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kpool /kinetics/Lcl/Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 5 15 55 -8 0 +simundump text /kinetics/Lcl/Lcl_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/Lcl/Lcl_mRNA/Lcl_translation 0 0 0 0 0 1800 0.83494 \ + 0.668 0.167 0 1 "" red 5 "" 48 -10 0 +simundump text /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +simundump kpool /kinetics/Lcl/Lcl 0 0 0.055555 0.055555 99.999 99.999 0 0 \ + 1800 0 /kinetics/geometry 24 15 48 -15 0 +simundump text /kinetics/Lcl/Lcl/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kreac /kinetics/Lcl/Lcl_degradation 0 0.016666 0 "" white 15 48 -17 \ + 0 +simundump text /kinetics/Lcl/Lcl_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get the desired levels\n\nElowitz etal Nature 2000. Vol403 335-338" +call /kinetics/Lcl/Lcl_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get the desired levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +simundump kpool /kinetics/Lcl/degraded_Lcl 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 15 48 -19 0 +simundump text /kinetics/Lcl/degraded_Lcl/notes 0 \ + "Degradation product of lac protein" +call /kinetics/Lcl/degraded_Lcl/notes LOAD \ +"Degradation product of lac protein" +simundump kpool /kinetics/Lcl/degraded_Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 15 62 -8 0 +simundump text /kinetics/Lcl/degraded_Lcl_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kpool /kinetics/Lcl/Lcl_operator 0 0 0.022222 0.022222 40 40 0 0 \ + 1800 0 /kinetics/geometry 36 15 69 -12 0 +simundump text /kinetics/Lcl/Lcl_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/Lcl/Lcl_operator/Lcl_transcription2 0 0 0 0 0 1800 \ + 2.4998 2 0.5 0 1 "" red 36 "" 69 -11 0 +simundump text /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" +call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 10000 0 2.0691 0 +simundump xgraph /graphs/conc2 0 0 10000 0 3.33 0 +simundump xplot /graphs/conc1/TetR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 11 0 0 1 +simundump xplot /graphs/conc1/lac.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc1/Lcl.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 24 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 10000 0 95.756 0 +simundump xgraph /moregraphs/conc4 0 0 10000 0 1 0 +simundump xcoredraw /edit/draw 0 -11 71 -21 2 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"Repressilator model: A synthetic oscillatory network" \ +"of transcriptional regulators designed by Michael B. Elowitz and" \ +"Stanislas Leibler 2000 Nature 403(6767):335-338" +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/inhib_reac[1] PRODUCT n +addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/l_op_1rst_bound REAC B A +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_1rst_bound REAC A B +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/l_op_1rst_bound/lac_transcription ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_1rst_bound/lac_transcription SUBSTRATE n +addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac PRODUCT n +addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/lac_operator REAC A B +addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/lac_operator/lac_transcription2 ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/lac_operator/lac_transcription2 SUBSTRATE n +addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/lac_mRNA REAC A B +addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA/lac_translation ENZYME n +addmsg /kinetics/lac_gene/AminoAcids /kinetics/lac_gene/lac_mRNA/lac_translation SUBSTRATE n +addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/lac MM_PRD pA +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/degraded_lac REAC B A +addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/degraded_lac_mRNA REAC B A +addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation SUBSTRATE n +addmsg /kinetics/lac_gene/degraded_lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation PRODUCT n +addmsg /kinetics/lac_gene/degraded_lac /kinetics/lac_gene/lac_degradation PRODUCT n +addmsg /kinetics/lac_gene/lac /kinetics/lac_gene/lac_degradation SUBSTRATE n +addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/AminoAcids REAC sA B +addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 SUBSTRATE n +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/inhib_reac[1] PRODUCT n +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_1rst_bound REAC A B +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/l_op_1rst_bound REAC B A +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription SUBSTRATE n +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac PRODUCT n +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/TetR MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lcl/inhib_reac /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/degraded_TetR REAC B A +addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/TetR_mRNA REAC A B +addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA/TetR_translation ENZYME n +addmsg /kinetics/TetR_gene/AminoAcids /kinetics/TetR_gene/TetR_mRNA/TetR_translation SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/degraded_TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation PRODUCT n +addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/degraded_TetR_mRNA REAC B A +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/TetR_operator REAC A B +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_transcription2 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_transcription2 SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/AminoAcids REAC sA B +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 SUBSTRATE n +addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/inhib_reac[1] PRODUCT n +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_1rst_bound REAC A B +addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/l_op_1rst_bound REAC B A +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription SUBSTRATE n +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac PRODUCT n +addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/inhib_reac SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac SUBSTRATE n +addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/AminoAcids REAC sA B +addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation SUBSTRATE n +addmsg /kinetics/Lcl/degraded_Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation PRODUCT n +addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/Lcl_mRNA REAC A B +addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA/Lcl_translation ENZYME n +addmsg /kinetics/Lcl/AminoAcids /kinetics/Lcl/Lcl_mRNA/Lcl_translation SUBSTRATE n +addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/Lcl MM_PRD pA +addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/lac_gene/inhib_reac /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/Lcl/Lcl /kinetics/Lcl/Lcl_degradation SUBSTRATE n +addmsg /kinetics/Lcl/degraded_Lcl /kinetics/Lcl/Lcl_degradation PRODUCT n +addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/degraded_Lcl REAC B A +addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/degraded_Lcl_mRNA REAC B A +addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/Lcl_operator REAC A B +addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/Lcl_operator/Lcl_transcription2 ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/Lcl_operator/Lcl_transcription2 SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *11 +addmsg /kinetics/lac_gene/lac /graphs/conc1/lac.Co PLOT Co *lac.Co *62 +addmsg /kinetics/Lcl/Lcl /graphs/conc1/Lcl.Co PLOT Co *Lcl.Co *24 +enddump +// End of dump + +call /kinetics/lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac" +call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature 2000" \ +"403: 335-338" +call /kinetics/lac_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/lac_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"403:335-338" +call /kinetics/lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +call /kinetics/lac_gene/lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/degraded_lac/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/lac_gene/lac_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz et al Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lcl/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lcl/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +call /kinetics/Lcl/Lcl/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get the desired levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +call /kinetics/Lcl/degraded_Lcl/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/Lcl/Lcl_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +complete_loading diff --git a/examples/genesis/acc35.g b/examples/genesis/acc35.g new file mode 100644 index 0000000..338c942 --- /dev/null +++ b/examples/genesis/acc35.g @@ -0,0 +1,1373 @@ +//genesis +// kkit Version 8 flat dumpfile + +// Saved on Fri Feb 1 12:54:24 2002 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.005 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1.6667e-21 +VERSION = 8.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump kpool CoTotal CoInit Co n nInit nTotal nMin vol slave_enable notes \ + xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump proto x y z +simobjdump linkinfo xtree_fg_req xtree_textfg_req uplink downlink x y z +simobjdump uplink xtree_fg_req xtree_textfg_req x y z +simobjdump downlink xtree_fg_req xtree_textfg_req x y z +simobjdump mirror notes xtree_fg_req x y z +simundump kpool /kinetics/Shc*.Sos.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + brown yellow 68 105 0 +simundump kenz /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF 1 0 0 0 0 6e+05 3.3e-07 \ + 0.08 0.02 0 0 "" red brown "" 65 94 0 +simundump group /kinetics/Sos 1 blue black x 0 1 "" defaultfile \ + /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 74 113 0 +simundump kreac /kinetics/Sos/Shc_bind_Sos.Grb2 1 8.333e-07 0.1 "" white blue \ + 69 107 0 +simundump kpool /kinetics/Sos/Sos*.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + orange blue 76 109 0 +simundump kreac /kinetics/Sos/Grb2_bind_Sos* 1 4.1667e-08 0.0168 "" white \ + blue 75 107 0 +simundump kpool /kinetics/Sos/Grb2 1 1 1 0.94164 5.6499e+05 6e+05 6e+05 0 \ + 6e+05 0 "" orange blue 73 105 0 +simundump kpool /kinetics/Sos/Sos.Grb2 1 1.6667e-06 0 0.058356 35014 0 1 0 \ + 6e+05 0 "" orange blue 70 105 0 +simundump kpool /kinetics/Sos/Sos* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" red \ + blue 74 109 0 +simundump kreac /kinetics/Sos/dephosph_Sos 1 0.001 0 "" white blue 73 107 0 +simundump kreac /kinetics/Sos/Grb2_bind_Sos 1 4.1667e-08 0.0168 "" white blue \ + 71 107 0 +simundump kpool /kinetics/Sos/Sos 1 0.1 0.1 0.041645 24987 60000 60000 0 \ + 6e+05 0 "" red blue 72 109 0 +simundump group /kinetics/PKC 0 blue black x 0 0 "" defaultfile \ + /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 47 80 0 +simundump kpool /kinetics/PKC/PKC-Ca 0 0.28282 3.7208e-17 0.075998 45599 \ + 2.2325e-11 1.6969e+05 0 6e+05 0 "" red black 48 74 0 +simundump kreac /kinetics/PKC/PKC-act-by-Ca 0 1e-06 0.5 "" white blue 48 72 0 +simundump kreac /kinetics/PKC/PKC-act-by-DAG 0 1.3333e-08 8.6348 "" white \ + blue 56 72 0 +simundump kreac /kinetics/PKC/PKC-Ca-to-memb 0 1.2705 3.5026 "" white blue 48 \ + 76 0 +simundump kreac /kinetics/PKC/PKC-DAG-to-memb 0 1 0.1 "" white blue 56 76 0 +simundump kreac /kinetics/PKC/PKC-act-by-Ca-AA 0 2e-09 0.1 "" white blue 50 \ + 76 0 +simundump kreac /kinetics/PKC/PKC-act-by-DAG-AA 0 2 0.2 "" white blue 54 76 0 +simundump kpool /kinetics/PKC/PKC-DAG-AA* 0 0.12061 4.9137e-18 0.030483 18290 \ + 2.9482e-12 72366 0 6e+05 0 "" cyan blue 54 78 0 +simundump kpool /kinetics/PKC/PKC-Ca-AA* 0 0.16962 1.75e-16 0.0055768 3346.1 \ + 1.05e-10 1.0177e+05 0 6e+05 0 "" orange blue 50 78 0 +simundump kpool /kinetics/PKC/PKC-Ca-memb* 0 0.10258 1.3896e-17 0.027567 \ + 16540 8.3376e-12 61549 0 6e+05 0 "" pink blue 48 78 0 +simundump kpool /kinetics/PKC/PKC-DAG-memb* 0 0.023753 9.4352e-21 0.0082104 \ + 4926.3 5.6611e-15 14252 0 6e+05 0 "" yellow blue 56 78 0 +simundump kpool /kinetics/PKC/PKC-basal* 0 0.0432 0.02 0.015833 9499.8 12000 \ + 25920 0 6e+05 0 "" pink blue 46 78 0 +simundump kreac /kinetics/PKC/PKC-basal-act 0 1 50 "" white blue 46 72 0 +simundump kpool /kinetics/PKC/PKC-AA* 0 1 1.8133e-17 0.0058092 3485.5 \ + 1.088e-11 6e+05 0 6e+05 0 "" cyan blue 52 78 0 +simundump kreac /kinetics/PKC/PKC-act-by-AA 0 2e-10 0.1 "" white blue 50 72 0 +simundump kpool /kinetics/PKC/PKC-Ca-DAG 0 0.0017993 8.4632e-23 0.00082104 \ + 492.63 5.0779e-17 1079.6 0 6e+05 0 "" white blue 56 74 0 +simundump kreac /kinetics/PKC/PKC-n-DAG 0 1e-09 0.1 "" white blue 52 72 0 +simundump kpool /kinetics/PKC/PKC-DAG 0 0.08533 0 0.055389 33233 0 51198 0 \ + 6e+05 0 "" white blue 52 74 0 +simundump kreac /kinetics/PKC/PKC-n-DAG-AA 0 3e-08 2 "" white blue 54 72 0 +simundump kpool /kinetics/PKC/PKC-DAG-AA 0 0.012093 2.5188e-19 0.0030483 1829 \ + 1.5113e-13 7255.5 0 6e+05 0 "" white blue 54 74 0 +simundump kpool /kinetics/PKC/PKC-cytosolic 0 1.5489 1 0.79165 4.7499e+05 \ + 6e+05 9.2935e+05 0 6e+05 0 "" white blue 50 70 0 +simundump kpool /kinetics/DAG 1 100 11.661 11.661 6.9966e+06 6.9966e+06 6e+07 \ + 0 6e+05 6 "" green black 54 60 0 +simundump kpool /kinetics/Ca 1 1 0.08 0.08 48000 48000 6e+05 0 6e+05 6 "" red \ + black 52 60 0 +simundump kpool /kinetics/AA 0 6.12 6.12 6.1151 3.669e+06 3.672e+06 3.672e+06 \ + 0 6e+05 0 "" darkgreen black 50 68 0 +simundump kpool /kinetics/PKC-active 0 0.02 2.1222e-16 0.093103 55862 12000 \ + 56088 0 6e+05 2 "" yellow black 52 80 0 +simundump kenz /kinetics/PKC-active/PKC-act-raf 1 0 0.00024472 0 146.83 6e+05 \ + 5e-07 16 4 0 0 "" red yellow "" 64 88 0 +simundump kenz /kinetics/PKC-active/PKC-inact-GAP 1 0 2.0482e-06 0 1.2289 \ + 6e+05 3.125e-06 100 25 0 0 "" red yellow "" 60 98 0 +simundump kenz /kinetics/PKC-active/PKC-act-GEF 1 0 0.0001296 0 77.762 6e+05 \ + 5e-07 16 4 0 0 "" red yellow "" 68 98 0 +simundump group /kinetics/MAPK 0 brown black x 0 0 "" defaultfile \ + /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 69 88 0 +simundump kpool /kinetics/MAPK/craf-1 0 0.2 0.2 0.17523 1.0514e+05 1.2e+05 \ + 1.2e+05 0 6e+05 0 "" pink brown 63 86 0 +simundump kpool /kinetics/MAPK/craf-1* 0 0.2 0 0.011418 6851 0 1.2e+05 0 \ + 6e+05 0 "" pink brown 65 86 0 +simundump kpool /kinetics/MAPK/MAPKK 0 0.18 0.18 0.16222 97335 1.08e+05 \ + 1.08e+05 0 6e+05 0 "" pink brown 64 82 0 +simundump kpool /kinetics/MAPK/MAPK 0 0.36 0.36 0.34219 2.0531e+05 2.16e+05 \ + 2.16e+05 0 6e+05 0 "" pink brown 67 78 0 +simundump kpool /kinetics/MAPK/craf-1** 1 0.2 0 2.951e-05 17.706 0 1.2e+05 0 \ + 6e+05 0 "" hotpink brown 67 86 0 +simundump kpool /kinetics/MAPK/MAPK-tyr 1 0.36 0 0.013943 8365.6 0 2.16e+05 0 \ + 6e+05 0 "" orange brown 67 76 0 +simundump kpool /kinetics/MAPK/MAPKK* 0 0.18 0 0.00037106 222.64 0 1.08e+05 0 \ + 6e+05 0 "" pink brown 64 78 0 +simundump kenz /kinetics/MAPK/MAPKK*/MAPKKtyr 0 0 0.0027426 0 1645.6 6e+05 \ + 2.7e-05 0.6 0.15 0 0 "" red pink "" 64 77 0 +simundump kenz /kinetics/MAPK/MAPKK*/MAPKKthr 1 0 0.00011175 0 67.049 6e+05 \ + 2.7e-05 0.6 0.15 0 0 "" red pink "" 64 75 0 +simundump kpool /kinetics/MAPK/MAPKK-ser 1 0.18 0 0.0077587 4655.2 0 1.08e+05 \ + 0 6e+05 0 "" pink brown 64 80 0 +simundump kpool /kinetics/MAPK/RGR 1 0.0104 0 0.0026971 1618.3 0 6240 0 6e+05 \ + 0 "" red brown 62 82 0 +simundump kenz /kinetics/MAPK/RGR/RGR.1 1 0 0.0027503 0 1650.2 6e+05 5.5e-06 \ + 0.42 0.105 0 0 "" red red "" 62 81 0 +simundump kenz /kinetics/MAPK/RGR/RGR.2 1 0 0.00013154 0 78.921 6e+05 5.5e-06 \ + 0.42 0.105 0 0 "" red red "" 62 79 0 +simundump kpool /kinetics/MAPK/Raf*-GTP-Ras 1 0.0104 0 0.003515 2109 0 6240 0 \ + 6e+05 0 "" red brown 66 82 0 +simundump kenz /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 1 0 0.0035843 0 \ + 2150.6 6e+05 5.5e-06 0.42 0.105 0 0 "" red red "" 65 81 0 +simundump kenz /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 1 0 0.00017142 0 \ + 102.85 6e+05 5.5e-06 0.42 0.105 0 0 "" red red "" 65 79 0 +simundump kpool /kinetics/MAPK* 0 1 0 0.00056809 340.86 0 6e+05 0 6e+05 0 "" \ + orange yellow 67 74 0 +simundump kenz /kinetics/MAPK*/MAPK*-feedback 1 0 2.5298e-07 0 0.15179 6e+05 \ + 3.25e-06 40 10 0 0 "" red orange "" 66 84 0 +simundump kenz /kinetics/MAPK*/MAPK* 0 0 2.4171e-06 0 1.4503 6e+05 6.5e-06 80 \ + 20 0 0 "" red orange "" 52 57 0 +simundump kreac /kinetics/Ras-act-craf 1 1e-04 0.5 "" white black 68 84 0 +simundump kpool /kinetics/PPhosphatase2A 1 0.224 0.224 0.2237 1.3422e+05 \ + 1.344e+05 1.344e+05 0 6e+05 0 "" hotpink yellow 68 80 0 +simundump kenz /kinetics/PPhosphatase2A/craf-deph 1 0 0.00016314 0 97.886 \ + 6e+05 3.3e-06 25 6 0 0 "" red hotpink "" 64 84 0 +simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph 1 0 5.3016e-06 0 3.181 \ + 6e+05 3.3e-06 25 6 0 0 "" red hotpink "" 68 79 0 +simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph-ser 1 0 0.00011085 0 \ + 66.513 6e+05 3.3e-06 25 6 0 0 "" red hotpink "" 68 81 0 +simundump kenz /kinetics/PPhosphatase2A/craf**-deph 1 0 0.25298 0 0.25298 1 \ + 3.3e-06 25 6 0 0 "" red hotpink "" 66 88 0 +simundump group /kinetics/PLA2 0 darkgreen black x 0 1 "" defaultfile \ + /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 56 58 0 +simundump kpool /kinetics/PLA2/PLA2-cytosolic 0 0.4 0.4 0.1091 65459 2.4e+05 \ + 2.4e+05 0 6e+05 0 "" yellow darkgreen 48 57 0 +simundump kreac /kinetics/PLA2/PLA2-Ca-act 0 1.6667e-06 0.1 "" white \ + darkgreen 51 62 0 +simundump kpool /kinetics/PLA2/PLA2-Ca* 0 1 0 0.08728 52368 0 6e+05 0 6e+05 0 \ + "" yellow darkgreen 52 64 0 +simundump kenz /kinetics/PLA2/PLA2-Ca*/kenz 0 0 0.13092 0 78552 6e+05 \ + 2.25e-06 21.6 5.4 0 0 "" red yellow "" 52 66 0 +simundump kreac /kinetics/PLA2/PIP2-PLA2-act 0 2e-09 0.5 "" white darkgreen \ + 47 62 0 +simundump kpool /kinetics/PLA2/PIP2-PLA2* 0 1 0 0.00065459 392.75 0 6e+05 0 \ + 6e+05 0 "" cyan darkgreen 46 64 0 +simundump kenz /kinetics/PLA2/PIP2-PLA2*/kenz 0 0 0.00098188 0 589.13 6e+05 \ + 4.6e-06 44.16 11.04 0 0 "" red cyan "" 46 66 0 +simundump kreac /kinetics/PLA2/PIP2-Ca-PLA2-act 0 2e-08 0.1 "" white \ + darkgreen 49 62 0 +simundump kpool /kinetics/PLA2/PIP2-Ca-PLA2* 0 1 0 0.026184 15710 0 6e+05 0 \ + 6e+05 0 "" cyan darkgreen 48 64 0 +simundump kenz /kinetics/PLA2/PIP2-Ca-PLA2*/kenz 0 0 0.039276 0 23566 6e+05 \ + 1.5e-05 144 36 0 0 "" red cyan "" 48 66 0 +simundump kreac /kinetics/PLA2/DAG-Ca-PLA2-act 0 5e-09 4 "" white darkgreen \ + 53 62 0 +simundump kpool /kinetics/PLA2/DAG-Ca-PLA2* 0 1 0 0.00076333 458 0 6e+05 0 \ + 6e+05 0 "" pink darkgreen 54 64 0 +simundump kenz /kinetics/PLA2/DAG-Ca-PLA2*/kenz 0 0 0.001145 0 687 6e+05 \ + 2.5e-05 240 60 0 0 "" red pink "" 54 66 0 +simundump kpool /kinetics/PLA2/APC 0 30 30 30 1.8e+07 1.8e+07 1.8e+07 0 6e+05 \ + 5 "" yellow darkgreen 50 64 0 +simundump kreac /kinetics/PLA2/Degrade-AA 1 0.4 0 "" white darkgreen 50 66 0 +simundump kpool /kinetics/PLA2/PLA2*-Ca 0 1 0 0.0013643 818.59 0 6e+05 0 \ + 6e+05 1 "" orange darkgreen 56 64 0 +simundump kenz /kinetics/PLA2/PLA2*-Ca/kenz 0 0 0.0020465 0 1227.9 6e+05 \ + 5e-05 480 120 0 0 "" red orange "" 56 66 0 +simundump kpool /kinetics/PLA2/PLA2* 1 1.6667e-06 0 0.00028427 170.56 0 1 0 \ + 6e+05 0 "" orange darkgreen 56 60 0 +simundump kreac /kinetics/PLA2/PLA2*-Ca-act 1 1e-05 0.1 "" white darkgreen 55 \ + 62 0 +simundump kreac /kinetics/PLA2/dephosphorylate-PLA2* 1 0.17 0 "" white \ + darkgreen 52 59 0 +simundump kpool /kinetics/temp-PIP2 1 25 2.5 2.5 1.5e+06 1.5e+06 1.5e+07 0 \ + 6e+05 6 "" green black 48 60 0 +simundump group /kinetics/Ras 1 blue black x 0 0 "" defaultfile \ + /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 64 100 0 +simundump kreac /kinetics/Ras/dephosph-GEF 1 0.1 0 "" white blue 66 98 0 +simundump kpool /kinetics/Ras/inact-GEF 1 0.1 0.1 0.092803 55682 60000 60000 \ + 0 6e+05 0 "" hotpink blue 67 100 0 +simundump kpool /kinetics/Ras/GEF* 1 0.1 0 0.0051842 3110.5 0 60000 0 6e+05 0 \ + "" hotpink blue 67 96 0 +simundump kenz /kinetics/Ras/GEF*/GEF*-act-ras 1 0 0.0018747 0 1124.8 6e+05 \ + 3.3e-07 0.08 0.02 0 0 "" red hotpink "" 67 94 0 +simundump kpool /kinetics/Ras/GTP-Ras 1 0.2 0 0.0025653 1539.2 0 1.2e+05 0 \ + 6e+05 0 "" orange blue 64 92 0 +simundump kpool /kinetics/Ras/GDP-Ras 1 0.2 0.2 0.18264 1.0958e+05 1.2e+05 \ + 1.2e+05 0 6e+05 0 "" pink blue 64 96 0 +simundump kreac /kinetics/Ras/Ras-intrinsic-GTPase 1 1e-04 0 "" white blue 63 \ + 94 0 +simundump kreac /kinetics/Ras/dephosph-GAP 1 0.1 0 "" white blue 62 98 0 +simundump kpool /kinetics/Ras/GAP* 1 0.05 0 0.00051205 307.23 0 30000 0 6e+05 \ + 0 "" red blue 61 100 0 +simundump kpool /kinetics/Ras/GAP 1 0.002 0.002 0.0014666 879.97 1200 1200 0 \ + 6e+05 0 "" red blue 61 96 0 +simundump kenz /kinetics/Ras/GAP/GAP-inact-ras 1 0 3.7236e-06 0 2.2342 6e+05 \ + 0.001666 1000 10 0 0 "" red red "" 61 94 0 +simundump kreac /kinetics/Ras-act-unphosph-raf 1 1e-05 1 "" white black 62 84 \ + 0 +simundump group /kinetics/PDGFR 1 yellow black x 0 1 "" defaultfile \ + /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 64 113 0 +simundump kpool /kinetics/PDGFR/PDGFR 1 0.16667 0.10833 0.10833 65000 65000 \ + 1e+05 0 6e+05 0 "" red yellow 59 113 0 +simundump kreac /kinetics/PDGFR/act_PDGFR 1 0.00033333 0.1 "" white yellow 60 \ + 111 0 +simundump kpool /kinetics/PDGFR/L.PDGFR 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + red yellow 61 109 0 +simundump kenz /kinetics/PDGFR/L.PDGFR/phosph_Shc 1 0 0 0 0 6e+05 5e-07 0.2 \ + 0.05 0 0 "" red red "" 64 111 0 +simundump kpool /kinetics/PDGFR/PDGF 1 1 0 0 0 0 6e+05 0 6e+05 4 "" red \ + yellow 59 109 0 +simundump kpool /kinetics/PDGFR/SHC 1 1 0.5 0.5 3e+05 3e+05 6e+05 0 6e+05 0 \ + "" orange yellow 63 109 0 +simundump kpool /kinetics/PDGFR/SHC* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ + orange yellow 65 109 0 +simundump kreac /kinetics/PDGFR/dephosph_Shc 1 0.01 0 "" white yellow 64 107 \ + 0 +simundump kpool /kinetics/PDGFR/Internal_L.PDGFR 1 1.6667e-06 0 0 0 0 1 0 \ + 6e+05 0 "" red yellow 61 113 0 +simundump kreac /kinetics/PDGFR/Internalize 1 0.001 0.00066 "" white yellow \ + 62 111 0 +simundump kpool /kinetics/MKP-2 0 0.0024 0.0024 0.001967 1180.2 1440 1440 0 \ + 6e+05 0 "" 4 black 70 76 0 +simundump kenz /kinetics/MKP-2/MKP2-tyr-deph 0 0 0.00041138 0 246.83 6e+05 \ + 0.000125 4 1 0 0 "" red 4 "" 70 77 0 +simundump kenz /kinetics/MKP-2/MKP2-thr-deph 0 0 1.6762e-05 0 10.057 6e+05 \ + 0.000125 4 1 0 0 "" red 4 "" 70 75 0 +simundump xgraph /graphs/conc1 0 0 8000 0 0.12896 0 +simundump xgraph /graphs/conc2 0 0 8000 0 0.00053347 0 +simundump xplot /graphs/conc1/MAPK*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " orange 0 0 1 +simundump xplot /graphs/conc1/PKC-active.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " yellow 0 0 1 +simundump xplot /graphs/conc2/PDGFR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc2/PDGF.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 8000 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 8000 0 1 0 +simundump xcoredraw /edit/draw 0 51.546 73.854 68.317 107.68 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"Based on fb29.g, cleaned up the dangling phosph_PLC-gamma" \ +"enzyme activity on PDGFR." +addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Shc*.Sos.Grb2 REAC B A +addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Shc*.Sos.Grb2 REAC eA B +addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF ENZYME n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF SUBSTRATE n +addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n +addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 PRODUCT n +addmsg /kinetics/PDGFR/SHC* /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n +addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos*.Grb2 REAC B A +addmsg /kinetics/Sos/Sos* /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n +addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n +addmsg /kinetics/Sos/Sos*.Grb2 /kinetics/Sos/Grb2_bind_Sos* PRODUCT n +addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Grb2 REAC A B +addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Grb2 REAC A B +addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos.Grb2 REAC B A +addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Sos/Sos.Grb2 REAC A B +addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos* REAC A B +addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos* REAC A B +addmsg /kinetics/Sos/Sos* /kinetics/Sos/dephosph_Sos SUBSTRATE n +addmsg /kinetics/Sos/Sos /kinetics/Sos/dephosph_Sos PRODUCT n +addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n +addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Grb2_bind_Sos PRODUCT n +addmsg /kinetics/Sos/Sos /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n +addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos REAC A B +addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos REAC B A +addmsg /kinetics/PKC/PKC-act-by-Ca /kinetics/PKC/PKC-Ca REAC B A +addmsg /kinetics/PKC/PKC-act-by-DAG /kinetics/PKC/PKC-Ca REAC A B +addmsg /kinetics/PKC/PKC-Ca-to-memb /kinetics/PKC/PKC-Ca REAC A B +addmsg /kinetics/PKC/PKC-act-by-Ca-AA /kinetics/PKC/PKC-Ca REAC A B +addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-act-by-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/PKC/PKC-act-by-Ca SUBSTRATE n +addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-act-by-Ca PRODUCT n +addmsg /kinetics/DAG /kinetics/PKC/PKC-act-by-DAG SUBSTRATE n +addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-act-by-DAG SUBSTRATE n +addmsg /kinetics/PKC/PKC-Ca-DAG /kinetics/PKC/PKC-act-by-DAG PRODUCT n +addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-Ca-to-memb SUBSTRATE n +addmsg /kinetics/PKC/PKC-Ca-memb* /kinetics/PKC/PKC-Ca-to-memb PRODUCT n +addmsg /kinetics/PKC/PKC-Ca-DAG /kinetics/PKC/PKC-DAG-to-memb SUBSTRATE n +addmsg /kinetics/PKC/PKC-DAG-memb* /kinetics/PKC/PKC-DAG-to-memb PRODUCT n +addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-act-by-Ca-AA SUBSTRATE n +addmsg /kinetics/AA /kinetics/PKC/PKC-act-by-Ca-AA SUBSTRATE n +addmsg /kinetics/PKC/PKC-Ca-AA* /kinetics/PKC/PKC-act-by-Ca-AA PRODUCT n +addmsg /kinetics/PKC/PKC-DAG-AA* /kinetics/PKC/PKC-act-by-DAG-AA PRODUCT n +addmsg /kinetics/PKC/PKC-DAG-AA /kinetics/PKC/PKC-act-by-DAG-AA SUBSTRATE n +addmsg /kinetics/PKC/PKC-act-by-DAG-AA /kinetics/PKC/PKC-DAG-AA* REAC B A +addmsg /kinetics/PKC/PKC-act-by-Ca-AA /kinetics/PKC/PKC-Ca-AA* REAC B A +addmsg /kinetics/PKC/PKC-Ca-to-memb /kinetics/PKC/PKC-Ca-memb* REAC B A +addmsg /kinetics/PKC/PKC-DAG-to-memb /kinetics/PKC/PKC-DAG-memb* REAC B A +addmsg /kinetics/PKC/PKC-basal-act /kinetics/PKC/PKC-basal* REAC B A +addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-basal-act SUBSTRATE n +addmsg /kinetics/PKC/PKC-basal* /kinetics/PKC/PKC-basal-act PRODUCT n +addmsg /kinetics/PKC/PKC-act-by-AA /kinetics/PKC/PKC-AA* REAC B A +addmsg /kinetics/AA /kinetics/PKC/PKC-act-by-AA SUBSTRATE n +addmsg /kinetics/PKC/PKC-AA* /kinetics/PKC/PKC-act-by-AA PRODUCT n +addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-act-by-AA SUBSTRATE n +addmsg /kinetics/PKC/PKC-act-by-DAG /kinetics/PKC/PKC-Ca-DAG REAC B A +addmsg /kinetics/PKC/PKC-DAG-to-memb /kinetics/PKC/PKC-Ca-DAG REAC A B +addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-n-DAG SUBSTRATE n +addmsg /kinetics/DAG /kinetics/PKC/PKC-n-DAG SUBSTRATE n +addmsg /kinetics/PKC/PKC-DAG /kinetics/PKC/PKC-n-DAG PRODUCT n +addmsg /kinetics/PKC/PKC-n-DAG /kinetics/PKC/PKC-DAG REAC B A +addmsg /kinetics/PKC/PKC-n-DAG-AA /kinetics/PKC/PKC-DAG REAC A B +addmsg /kinetics/PKC/PKC-DAG /kinetics/PKC/PKC-n-DAG-AA SUBSTRATE n +addmsg /kinetics/AA /kinetics/PKC/PKC-n-DAG-AA SUBSTRATE n +addmsg /kinetics/PKC/PKC-DAG-AA /kinetics/PKC/PKC-n-DAG-AA PRODUCT n +addmsg /kinetics/PKC/PKC-n-DAG-AA /kinetics/PKC/PKC-DAG-AA REAC B A +addmsg /kinetics/PKC/PKC-act-by-DAG-AA /kinetics/PKC/PKC-DAG-AA REAC A B +addmsg /kinetics/PKC/PKC-act-by-Ca /kinetics/PKC/PKC-cytosolic REAC A B +addmsg /kinetics/PKC/PKC-basal-act /kinetics/PKC/PKC-cytosolic REAC A B +addmsg /kinetics/PKC/PKC-act-by-AA /kinetics/PKC/PKC-cytosolic REAC A B +addmsg /kinetics/PKC/PKC-n-DAG /kinetics/PKC/PKC-cytosolic REAC A B +addmsg /kinetics/PKC/PKC-act-by-DAG /kinetics/DAG REAC A B +addmsg /kinetics/PKC/PKC-n-DAG /kinetics/DAG REAC A B +addmsg /kinetics/PLA2/DAG-Ca-PLA2-act /kinetics/DAG REAC A B +addmsg /kinetics/PKC/PKC-act-by-Ca /kinetics/Ca REAC A B +addmsg /kinetics/PLA2/PLA2-Ca-act /kinetics/Ca REAC A B +addmsg /kinetics/PLA2/PLA2*-Ca-act /kinetics/Ca REAC A B +addmsg /kinetics/PKC/PKC-act-by-Ca-AA /kinetics/AA REAC A B +addmsg /kinetics/PKC/PKC-act-by-AA /kinetics/AA REAC A B +addmsg /kinetics/PKC/PKC-n-DAG-AA /kinetics/AA REAC A B +addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/AA MM_PRD pA +addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/AA MM_PRD pA +addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/AA MM_PRD pA +addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/AA MM_PRD pA +addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/AA MM_PRD pA +addmsg /kinetics/PLA2/Degrade-AA /kinetics/AA REAC A B +addmsg /kinetics/PKC/PKC-DAG-AA* /kinetics/PKC-active SUMTOTAL n nInit +addmsg /kinetics/PKC/PKC-Ca-memb* /kinetics/PKC-active SUMTOTAL n nInit +addmsg /kinetics/PKC/PKC-Ca-AA* /kinetics/PKC-active SUMTOTAL n nInit +addmsg /kinetics/PKC/PKC-DAG-memb* /kinetics/PKC-active SUMTOTAL n nInit +addmsg /kinetics/PKC/PKC-basal* /kinetics/PKC-active SUMTOTAL n nInit +addmsg /kinetics/PKC/PKC-AA* /kinetics/PKC-active SUMTOTAL n nInit +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/PKC-active CONSERVE nComplex nComplexInit +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/PKC-active REAC eA B +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/PKC-active CONSERVE nComplex nComplexInit +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/PKC-active REAC eA B +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/PKC-active CONSERVE nComplex nComplexInit +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/PKC-active REAC eA B +addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-raf ENZYME n +addmsg /kinetics/MAPK/craf-1 /kinetics/PKC-active/PKC-act-raf SUBSTRATE n +addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-inact-GAP ENZYME n +addmsg /kinetics/Ras/GAP /kinetics/PKC-active/PKC-inact-GAP SUBSTRATE n +addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-GEF ENZYME n +addmsg /kinetics/Ras/inact-GEF /kinetics/PKC-active/PKC-act-GEF SUBSTRATE n +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1 REAC sA B +addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1 MM_PRD pA +addmsg /kinetics/Ras-act-unphosph-raf /kinetics/MAPK/craf-1 REAC A B +addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1* MM_PRD pA +addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1* REAC sA B +addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1* REAC sA B +addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1* MM_PRD pA +addmsg /kinetics/Ras-act-craf /kinetics/MAPK/craf-1* REAC A B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK MM_PRD pA +addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 /kinetics/MAPK/MAPKK REAC sA B +addmsg /kinetics/MAPK/RGR/RGR.1 /kinetics/MAPK/MAPKK REAC sA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK REAC sA B +addmsg /kinetics/MKP-2/MKP2-tyr-deph /kinetics/MAPK/MAPK MM_PRD pA +addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1** MM_PRD pA +addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1** REAC sA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK-tyr MM_PRD pA +addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPK-tyr REAC sA B +addmsg /kinetics/MKP-2/MKP2-tyr-deph /kinetics/MAPK/MAPK-tyr REAC sA B +addmsg /kinetics/MKP-2/MKP2-thr-deph /kinetics/MAPK/MAPK-tyr MM_PRD pA +addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPKK* REAC eA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPKK* REAC eA B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK* REAC sA B +addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 /kinetics/MAPK/MAPKK* MM_PRD pA +addmsg /kinetics/MAPK/RGR/RGR.2 /kinetics/MAPK/MAPKK* MM_PRD pA +addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKtyr ENZYME n +addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MAPKK*/MAPKKtyr SUBSTRATE n +addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKthr ENZYME n +addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MAPK/MAPKK*/MAPKKthr SUBSTRATE n +addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK-ser MM_PRD pA +addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK-ser REAC sA B +addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 /kinetics/MAPK/MAPKK-ser MM_PRD pA +addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 /kinetics/MAPK/MAPKK-ser REAC sA B +addmsg /kinetics/MAPK/RGR/RGR.1 /kinetics/MAPK/MAPKK-ser MM_PRD pA +addmsg /kinetics/MAPK/RGR/RGR.2 /kinetics/MAPK/MAPKK-ser REAC sA B +addmsg /kinetics/MAPK/RGR/RGR.1 /kinetics/MAPK/RGR REAC eA B +addmsg /kinetics/MAPK/RGR/RGR.2 /kinetics/MAPK/RGR REAC eA B +addmsg /kinetics/Ras-act-unphosph-raf /kinetics/MAPK/RGR REAC B A +addmsg /kinetics/MAPK/RGR /kinetics/MAPK/RGR/RGR.1 ENZYME n +addmsg /kinetics/MAPK/MAPKK /kinetics/MAPK/RGR/RGR.1 SUBSTRATE n +addmsg /kinetics/MAPK/RGR /kinetics/MAPK/RGR/RGR.2 ENZYME n +addmsg /kinetics/MAPK/MAPKK-ser /kinetics/MAPK/RGR/RGR.2 SUBSTRATE n +addmsg /kinetics/Ras-act-craf /kinetics/MAPK/Raf*-GTP-Ras REAC B A +addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 /kinetics/MAPK/Raf*-GTP-Ras REAC eA B +addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 /kinetics/MAPK/Raf*-GTP-Ras REAC eA B +addmsg /kinetics/MAPK/Raf*-GTP-Ras /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 ENZYME n +addmsg /kinetics/MAPK/MAPKK /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 SUBSTRATE n +addmsg /kinetics/MAPK/Raf*-GTP-Ras /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 ENZYME n +addmsg /kinetics/MAPK/MAPKK-ser /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 SUBSTRATE n +addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK* REAC eA B +addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK* MM_PRD pA +addmsg /kinetics/MAPK*/MAPK* /kinetics/MAPK* REAC eA B +addmsg /kinetics/MKP-2/MKP2-thr-deph /kinetics/MAPK* REAC sA B +addmsg /kinetics/MAPK* /kinetics/MAPK*/MAPK*-feedback ENZYME n +addmsg /kinetics/MAPK/craf-1* /kinetics/MAPK*/MAPK*-feedback SUBSTRATE n +addmsg /kinetics/MAPK* /kinetics/MAPK*/MAPK* ENZYME n +addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/MAPK*/MAPK* SUBSTRATE n +addmsg /kinetics/MAPK/Raf*-GTP-Ras /kinetics/Ras-act-craf PRODUCT n +addmsg /kinetics/MAPK/craf-1* /kinetics/Ras-act-craf SUBSTRATE n +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras-act-craf SUBSTRATE n +addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/PPhosphatase2A REAC eA B +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf-deph ENZYME n +addmsg /kinetics/MAPK/craf-1* /kinetics/PPhosphatase2A/craf-deph SUBSTRATE n +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph ENZYME n +addmsg /kinetics/MAPK/MAPKK* /kinetics/PPhosphatase2A/MAPKK-deph SUBSTRATE n +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph-ser ENZYME n +addmsg /kinetics/MAPK/MAPKK-ser /kinetics/PPhosphatase2A/MAPKK-deph-ser SUBSTRATE n +addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf**-deph ENZYME n +addmsg /kinetics/MAPK/craf-1** /kinetics/PPhosphatase2A/craf**-deph SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-Ca-act /kinetics/PLA2/PLA2-cytosolic REAC A B +addmsg /kinetics/PLA2/PIP2-PLA2-act /kinetics/PLA2/PLA2-cytosolic REAC A B +addmsg /kinetics/PLA2/PIP2-PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit +addmsg /kinetics/PLA2/PIP2-Ca-PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit +addmsg /kinetics/PLA2/DAG-Ca-PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit +addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit +addmsg /kinetics/PLA2/PLA2*-Ca /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit +addmsg /kinetics/MAPK*/MAPK* /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit +addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit +addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit +addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit +addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit +addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit +addmsg /kinetics/MAPK*/MAPK* /kinetics/PLA2/PLA2-cytosolic REAC sA B +addmsg /kinetics/PLA2/PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit +addmsg /kinetics/PLA2/dephosphorylate-PLA2* /kinetics/PLA2/PLA2-cytosolic REAC B A +addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/PLA2/PLA2-Ca-act SUBSTRATE n +addmsg /kinetics/Ca /kinetics/PLA2/PLA2-Ca-act SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PLA2-Ca-act PRODUCT n +addmsg /kinetics/PLA2/PLA2-Ca-act /kinetics/PLA2/PLA2-Ca* REAC B A +addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/PLA2/PLA2-Ca* REAC eA B +addmsg /kinetics/PLA2/PIP2-Ca-PLA2-act /kinetics/PLA2/PLA2-Ca* REAC A B +addmsg /kinetics/PLA2/DAG-Ca-PLA2-act /kinetics/PLA2/PLA2-Ca* REAC A B +addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PLA2-Ca*/kenz ENZYME n +addmsg /kinetics/PLA2/APC /kinetics/PLA2/PLA2-Ca*/kenz SUBSTRATE n +addmsg /kinetics/temp-PIP2 /kinetics/PLA2/PIP2-PLA2-act SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/PLA2/PIP2-PLA2-act SUBSTRATE n +addmsg /kinetics/PLA2/PIP2-PLA2* /kinetics/PLA2/PIP2-PLA2-act PRODUCT n +addmsg /kinetics/PLA2/PIP2-PLA2-act /kinetics/PLA2/PIP2-PLA2* REAC B A +addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/PLA2/PIP2-PLA2* REAC eA B +addmsg /kinetics/PLA2/PIP2-PLA2* /kinetics/PLA2/PIP2-PLA2*/kenz ENZYME n +addmsg /kinetics/PLA2/APC /kinetics/PLA2/PIP2-PLA2*/kenz SUBSTRATE n +addmsg /kinetics/temp-PIP2 /kinetics/PLA2/PIP2-Ca-PLA2-act SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PIP2-Ca-PLA2-act SUBSTRATE n +addmsg /kinetics/PLA2/PIP2-Ca-PLA2* /kinetics/PLA2/PIP2-Ca-PLA2-act PRODUCT n +addmsg /kinetics/PLA2/PIP2-Ca-PLA2-act /kinetics/PLA2/PIP2-Ca-PLA2* REAC B A +addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/PLA2/PIP2-Ca-PLA2* REAC eA B +addmsg /kinetics/PLA2/PIP2-Ca-PLA2* /kinetics/PLA2/PIP2-Ca-PLA2*/kenz ENZYME n +addmsg /kinetics/PLA2/APC /kinetics/PLA2/PIP2-Ca-PLA2*/kenz SUBSTRATE n +addmsg /kinetics/DAG /kinetics/PLA2/DAG-Ca-PLA2-act SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/DAG-Ca-PLA2-act SUBSTRATE n +addmsg /kinetics/PLA2/DAG-Ca-PLA2* /kinetics/PLA2/DAG-Ca-PLA2-act PRODUCT n +addmsg /kinetics/PLA2/DAG-Ca-PLA2-act /kinetics/PLA2/DAG-Ca-PLA2* REAC B A +addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/PLA2/DAG-Ca-PLA2* REAC eA B +addmsg /kinetics/PLA2/DAG-Ca-PLA2* /kinetics/PLA2/DAG-Ca-PLA2*/kenz ENZYME n +addmsg /kinetics/PLA2/APC /kinetics/PLA2/DAG-Ca-PLA2*/kenz SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/PLA2/APC REAC sA B +addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/PLA2/APC REAC sA B +addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/PLA2/APC REAC sA B +addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/PLA2/APC REAC sA B +addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/PLA2/APC REAC sA B +addmsg /kinetics/PLA2/Degrade-AA /kinetics/PLA2/APC REAC B A +addmsg /kinetics/AA /kinetics/PLA2/Degrade-AA SUBSTRATE n +addmsg /kinetics/PLA2/APC /kinetics/PLA2/Degrade-AA PRODUCT n +addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/PLA2/PLA2*-Ca REAC eA B +addmsg /kinetics/PLA2/PLA2*-Ca-act /kinetics/PLA2/PLA2*-Ca REAC B A +addmsg /kinetics/PLA2/PLA2*-Ca /kinetics/PLA2/PLA2*-Ca/kenz ENZYME n +addmsg /kinetics/PLA2/APC /kinetics/PLA2/PLA2*-Ca/kenz SUBSTRATE n +addmsg /kinetics/MAPK*/MAPK* /kinetics/PLA2/PLA2* MM_PRD pA +addmsg /kinetics/PLA2/PLA2*-Ca-act /kinetics/PLA2/PLA2* REAC A B +addmsg /kinetics/PLA2/dephosphorylate-PLA2* /kinetics/PLA2/PLA2* REAC A B +addmsg /kinetics/PLA2/PLA2* /kinetics/PLA2/PLA2*-Ca-act SUBSTRATE n +addmsg /kinetics/PLA2/PLA2*-Ca /kinetics/PLA2/PLA2*-Ca-act PRODUCT n +addmsg /kinetics/Ca /kinetics/PLA2/PLA2*-Ca-act SUBSTRATE n +addmsg /kinetics/PLA2/PLA2* /kinetics/PLA2/dephosphorylate-PLA2* SUBSTRATE n +addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/PLA2/dephosphorylate-PLA2* PRODUCT n +addmsg /kinetics/PLA2/PIP2-PLA2-act /kinetics/temp-PIP2 REAC A B +addmsg /kinetics/PLA2/PIP2-Ca-PLA2-act /kinetics/temp-PIP2 REAC A B +addmsg /kinetics/Ras/GEF* /kinetics/Ras/dephosph-GEF SUBSTRATE n +addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/dephosph-GEF PRODUCT n +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/inact-GEF REAC sA B +addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/inact-GEF REAC B A +addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/GEF* MM_PRD pA +addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/GEF* REAC A B +addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GEF* REAC eA B +addmsg /kinetics/Ras/GEF* /kinetics/Ras/GEF*/GEF*-act-ras ENZYME n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/GEF*/GEF*-act-ras SUBSTRATE n +addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GTP-Ras REAC sA B +addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GTP-Ras REAC A B +addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GTP-Ras MM_PRD pA +addmsg /kinetics/Ras-act-craf /kinetics/Ras/GTP-Ras REAC A B +addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GTP-Ras MM_PRD pA +addmsg /kinetics/Ras-act-unphosph-raf /kinetics/Ras/GTP-Ras REAC A B +addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GDP-Ras MM_PRD pA +addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GDP-Ras REAC B A +addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GDP-Ras REAC sA B +addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GDP-Ras REAC sA B +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/Ras-intrinsic-GTPase SUBSTRATE n +addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/Ras-intrinsic-GTPase PRODUCT n +addmsg /kinetics/Ras/GAP* /kinetics/Ras/dephosph-GAP SUBSTRATE n +addmsg /kinetics/Ras/GAP /kinetics/Ras/dephosph-GAP PRODUCT n +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP* MM_PRD pA +addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP* REAC A B +addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GAP REAC eA B +addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP REAC sA B +addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP REAC B A +addmsg /kinetics/Ras/GAP /kinetics/Ras/GAP/GAP-inact-ras ENZYME n +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/GAP/GAP-inact-ras SUBSTRATE n +addmsg /kinetics/MAPK/craf-1 /kinetics/Ras-act-unphosph-raf SUBSTRATE n +addmsg /kinetics/MAPK/RGR /kinetics/Ras-act-unphosph-raf PRODUCT n +addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras-act-unphosph-raf SUBSTRATE n +addmsg /kinetics/PDGFR/act_PDGFR /kinetics/PDGFR/PDGFR REAC A B +addmsg /kinetics/PDGFR/PDGFR /kinetics/PDGFR/act_PDGFR SUBSTRATE n +addmsg /kinetics/PDGFR/PDGF /kinetics/PDGFR/act_PDGFR SUBSTRATE n +addmsg /kinetics/PDGFR/L.PDGFR /kinetics/PDGFR/act_PDGFR PRODUCT n +addmsg /kinetics/PDGFR/act_PDGFR /kinetics/PDGFR/L.PDGFR REAC B A +addmsg /kinetics/PDGFR/L.PDGFR/phosph_Shc /kinetics/PDGFR/L.PDGFR REAC eA B +addmsg /kinetics/PDGFR/Internalize /kinetics/PDGFR/L.PDGFR REAC A B +addmsg /kinetics/PDGFR/L.PDGFR /kinetics/PDGFR/L.PDGFR/phosph_Shc ENZYME n +addmsg /kinetics/PDGFR/SHC /kinetics/PDGFR/L.PDGFR/phosph_Shc SUBSTRATE n +addmsg /kinetics/PDGFR/act_PDGFR /kinetics/PDGFR/PDGF REAC A B +addmsg /kinetics/PDGFR/dephosph_Shc /kinetics/PDGFR/SHC REAC B A +addmsg /kinetics/PDGFR/L.PDGFR/phosph_Shc /kinetics/PDGFR/SHC REAC sA B +addmsg /kinetics/PDGFR/dephosph_Shc /kinetics/PDGFR/SHC* REAC A B +addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/PDGFR/SHC* REAC A B +addmsg /kinetics/PDGFR/L.PDGFR/phosph_Shc /kinetics/PDGFR/SHC* MM_PRD pA +addmsg /kinetics/PDGFR/SHC* /kinetics/PDGFR/dephosph_Shc SUBSTRATE n +addmsg /kinetics/PDGFR/SHC /kinetics/PDGFR/dephosph_Shc PRODUCT n +addmsg /kinetics/PDGFR/Internalize /kinetics/PDGFR/Internal_L.PDGFR REAC B A +addmsg /kinetics/PDGFR/L.PDGFR /kinetics/PDGFR/Internalize SUBSTRATE n +addmsg /kinetics/PDGFR/Internal_L.PDGFR /kinetics/PDGFR/Internalize PRODUCT n +addmsg /kinetics/MKP-2/MKP2-tyr-deph /kinetics/MKP-2 REAC eA B +addmsg /kinetics/MKP-2/MKP2-thr-deph /kinetics/MKP-2 REAC eA B +addmsg /kinetics/MKP-2 /kinetics/MKP-2/MKP2-tyr-deph ENZYME n +addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MKP-2/MKP2-tyr-deph SUBSTRATE n +addmsg /kinetics/MKP-2 /kinetics/MKP-2/MKP2-thr-deph ENZYME n +addmsg /kinetics/MAPK* /kinetics/MKP-2/MKP2-thr-deph SUBSTRATE n +addmsg /kinetics/MAPK* /graphs/conc1/MAPK*.Co PLOT Co *MAPK*.Co *orange +addmsg /kinetics/PKC-active /graphs/conc1/PKC-active.Co PLOT Co *PKC-active.Co *yellow +addmsg /kinetics/PDGFR/PDGFR /graphs/conc2/PDGFR.Co PLOT Co *PDGFR.Co *red +addmsg /kinetics/PDGFR/PDGF /graphs/conc2/PDGF.Co PLOT Co *PDGF.Co *red +enddump +// End of dump + +call /kinetics/Shc*.Sos.Grb2/notes LOAD \ +"This three-way complex is one of the main GEFs for activating Ras." +call /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF/notes LOAD \ +"Rates from Orita et al JBC 268(34):25542-25546" +call /kinetics/Sos/notes LOAD \ +"This represents the mSos protein and the Grb2 adapter protein" \ +"involved in Ras activation. This module provides for input from" \ +"RTKs as well as feedback inhibition from MAPK, although the" \ +"latter is not implemented in this specific model." +call /kinetics/Sos/Shc_bind_Sos.Grb2/notes LOAD \ +"Sasaoka et al JBC 269:51 pp 32621 1994, table on pg" \ +"32623 indicates that this pathway accounts for about " \ +"50% of the GEF activation. (88% - 39%). Error is large," \ +"about 20%. Fig 1 is most useful in constraining rates." \ +"" \ +"Chook et al JBC 271:48 pp 30472, 1996 say that the Kd is" \ +"0.2 uM for Shc binding to EGFR. The Kd for Grb direct binding" \ +"is 0.7, so we'll ignore it." +call /kinetics/Sos/Sos*.Grb2/notes LOAD \ +"Inactive complex of Sos* with Grb2 due to phosphorylation of the Sos." \ +"See Porfiri and McCormick 1996 JBC 271(10):5871." +call /kinetics/Sos/Grb2_bind_Sos*/notes LOAD \ +"Same rates as Grb2_bind_Sos: Porfiri and McCormick JBC" \ +"271:10 pp 5871 1996 show that the binding is not affected" \ +"by the phosphorylation." +call /kinetics/Sos/Grb2/notes LOAD \ +"There is probably a lot of it in the cell: it is also known" \ +"as Ash (abundant src homology protein). Also " \ +"Waters et al JBC 271:30 18224 1996 say that only a small" \ +"fraction of cellular Grb is precipitated out when SoS is" \ +"precipitated. As most of the Sos seems to be associated" \ +"with Grb2, it would seem like there is a lot of the latter." \ +"Say 1 uM. This would comfortably saturate the SoS." +call /kinetics/Sos/Sos.Grb2/notes LOAD \ +"For simplicity I treat the activation of Sos as involving a" \ +"single complex comprising Sos, Grb2 and Shc*. This is" \ +"reasonably documented:" \ +"Sasaoka et al 1994 JBC 269(51):32621-5" \ +"Chook et al JBC 1996 271(48):30472" \ +"" +call /kinetics/Sos/Sos*/notes LOAD \ +"Phosphorylated form of SoS. Nominally this is an inactivation step" \ +"mediated by MAPK, see Profiri and McCormick 1996 JBC 271(10):5871." \ +"I have not put this inactivation in this pathway so this molecule " \ +"currently only represents a potential interaction point." +call /kinetics/Sos/dephosph_Sos/notes LOAD \ +"The best clue I have to these rates is from the time" \ +"courses of the EGF activation, which is around 1 to 5 min." \ +"The dephosph would be expected to be of the same order," \ +"perhaps a bit longer. Lets use 0.002 which is about 8 min." \ +"Sep 17: The transient activation curve matches better with" \ +"kf = 0.001" +call /kinetics/Sos/Grb2_bind_Sos/notes LOAD \ +"As there are 2 SH3 domains, this reaction could be 2nd order." \ +"I have a Kd of 22 uM from peptide binding (Lemmon et al " \ +"JBC 269:50 pg 31653). However, Chook et al JBC 271:48 pg30472" \ +"say it is 0.4uM with purified proteins, so we believe them." \ +"They say it is 1:1 binding." \ +"Porfiri and McCormick JBC 271 also have related data." \ +"After comparing with the time-course of 1 min and the efficacy" \ +"of activation of Ras, settle on Kd of 0.672 which is close" \ +"to the Chook et al value." +call /kinetics/Sos/Sos/notes LOAD \ +"I have tried using low (0.02 uM) initial concs, but these" \ +"give a very flat response to EGF stim although the overall" \ +"activation of Ras is not too bad. I am reverting to 0.1 " \ +"because we expect a sharp initial response, followed by" \ +"a decline." \ +"" +call /kinetics/PKC/notes LOAD \ +"Protein Kinase C. This module represents a weighted average of" \ +"the alpha, beta and gamma isoforms. It takes inputs from" \ +"Ca, DAG (Diacyl Glycerol) and AA (arachidonic acid)." \ +"Regulation parameters are largely from Schaechter and Benowitz" \ +"1993 J Neurosci 13(10):4361 who use synaptosomes from" \ +"mammalian brain and in one paper look at all three inputs." \ +"Shinomura et al 1991 PNAS 88:5149-5153 is also a useful source" \ +"of data and helps to tighten the DAG inputs. " \ +"General reviews include Azzi et al 1992 Eur J Bioch 208:541" \ +"and Nishizuka 1988, Nature 334:661" \ +"Concentration info from Kikkawa et al 1982 JBC 257(22):13341" \ +"The process of parameterization is described in detail" \ +"in several places. See Supplementary notes to " \ +"Bhalla and Iyengar 1999 Science 284:92-96, available at the site" \ +"http://www.ncbs.res.in/~bhalla/ltploop/pkc_example.html" \ +"The parameterization is also described in a book chapter:" \ +"Bhalla, 2000: Simulations of Biochemical Signaling in" \ +"Computational Neuroscience: Realistic Modeling for Experimentalists." \ +"Ed. E. De Schutter. CRC Press." \ +"" +call /kinetics/PKC/PKC-Ca/notes LOAD \ +"This intermediate is strongly indicated by the synergistic" \ +"activation of PKC by combinations of DAG and Ca, as well" \ +"as AA and Ca. PKC by definition also has a direct Ca-activation," \ +"to which this also contributes." +call /kinetics/PKC/PKC-act-by-Ca/notes LOAD \ +"This Kd is a straightforward result from the Schaechter and Benowitz" \ +"1993 J Neurosci 13(10):4361 curves. The time-course is based on the" \ +"known rapid activation of PKC and also the fact that Ca association" \ +"with proteins is typically quite fast. My guess is that this tau of" \ +"2 sec is quite conservative and the actualy rate may be much faster." \ +"The parameter is quite insensitive for most stimuli." \ +"" \ +"" +call /kinetics/PKC/PKC-act-by-DAG/notes LOAD \ +"Ca.PKC interaction with DAG is modeled by this reaction." \ +"Kf based on Shinomura et al PNAS 88 5149-5153 1991 and" \ +"Schaechter and Benowitz 1993 J Neurosci 13(10):4361 and uses" \ +"the constraining procedure referred to in the general" \ +"notes for PKC." +call /kinetics/PKC/PKC-Ca-to-memb/notes LOAD \ +"Membrane translocation is a standard step in PKC activation." \ +"It also turns out to be necessary to replicate the curves" \ +"from Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ +"and Shonomura et al 1991 PNAS 88:5149-5153. These rates" \ +"are constrained by matching the curves in the above papers and" \ +"by fixing a rather fast (sub-second) tau for PKC activation." +call /kinetics/PKC/PKC-DAG-to-memb/notes LOAD \ +"membrane translocation step for Ca.DAG.PKC complex." \ +"Rates constrained from Shinomura et al 1991 PNAS 88:5149-5153" \ +" and Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ +"as derived in the references cited in PKC general notes." +call /kinetics/PKC/PKC-act-by-Ca-AA/notes LOAD \ +"Ca-dependent AA activation of PKC." \ +"Note that this step combines the AA activation and also the " \ +"membrane translocation." \ +"From Schaechter and Benowitz 1993 J Neurosci 13(10):4361" +call /kinetics/PKC/PKC-act-by-DAG-AA/notes LOAD \ +"Membrane translocation step for PKC-DAG-AA complex." \ +"Rates from matching concentration-effect data in our" \ +"two main references:" \ +"Schaechter and Benowitz 1993 J Neurosci 13(10):4361 and" \ +"Shinomura et al 1988 PNAS 88: 5149-5153" +call /kinetics/PKC/PKC-DAG-AA*/notes LOAD \ +"Membrane translocated form of PKC-DAG-AA complex." +call /kinetics/PKC/PKC-Ca-AA*/notes LOAD \ +"Membrane bound and active complex of PKC, Ca and AA." +call /kinetics/PKC/PKC-Ca-memb*/notes LOAD \ +"This is the direct Ca-stimulated activity of PKC." +call /kinetics/PKC/PKC-DAG-memb*/notes LOAD \ +"Active, membrane attached form of Ca.DAG.PKC complex." +call /kinetics/PKC/PKC-basal*/notes LOAD \ +"This is the basal PKC activity which contributes about" \ +"2% to the maximum." +call /kinetics/PKC/PKC-basal-act/notes LOAD \ +"Basal activity of PKC is quite high, about 10% of max." \ +"See Schaechter and Benowitz 1993 J Neurosci 13(10):4361 and" \ +"Shinomura et al 1991 PNAS 88:5149-5153. This is partly due to" \ +"basal levels of DAG, AA and Ca, but even when these are taken" \ +"into account (see the derivations as per the PKC general notes)" \ +"there is a small basal activity still to be accounted for. This" \ +"reaction handles it by giving a 2% activity at baseline." +call /kinetics/PKC/PKC-AA*/notes LOAD \ +"This is the membrane-bound and active form of the PKC-AA complex." \ +"" +call /kinetics/PKC/PKC-act-by-AA/notes LOAD \ +"AA stimulates PKC activity even at rather low Ca." \ +"Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ +"Note that this one reaction combines the initial interaction" \ +"and also membrane translocation." +call /kinetics/PKC/PKC-Ca-DAG/notes LOAD \ +"This is the active PKC form involving Ca and DAG." \ +"It has to translocate to the membrane." +call /kinetics/PKC/PKC-n-DAG/notes LOAD \ +"Binding of PKC to DAG, non-Ca dependent." \ +"" \ +"Kf based on Shinomura et al PNAS 88 5149-5153 1991" \ +"Tau estimated as fast and here it is about the same time-course" \ +"as the formation of DAG so it will not be rate-limiting." +call /kinetics/PKC/PKC-DAG/notes LOAD \ +"This is a DAG-bound intermediate used in synergistic activation" \ +"of PKC by DAG and AA." +call /kinetics/PKC/PKC-n-DAG-AA/notes LOAD \ +"This is one of the more interesting steps. Mechanistically" \ +"it does not seem necessary at first glance. Turns out that" \ +"one needs this step to quantitatively match the curves" \ +"in Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ +"and Shinomura et al 1991 PNAS 88:5149-5153. There is" \ +"a synergy between DAG and AA activation even at low" \ +"Ca levels, which is most simply represented by this reaction." \ +"Tau is assumed to be fast." \ +"Kd comes from matching the experimental curves." +call /kinetics/PKC/PKC-DAG-AA/notes LOAD \ +"Complex of PKC, DAG and AA giving rise to synergistic" \ +"activation of PKC by DAG and AA at resting Ca." \ +"" +call /kinetics/PKC/PKC-cytosolic/notes LOAD \ +"Marquez et al J. Immun 149,2560(92) est 1e6/cell for chromaffin cells" \ +"" \ +"Kikkawa et al 1982 JBC 257(22):13341 have PKC levels in brain at " \ +"about 1 uM." \ +"" \ +"The cytosolic form is the inactive PKC. This is really a composite" \ +"of three isoforms: alpha, beta and gamma which have slightly" \ +"different properties and respond to different combinations of" \ +"Ca, AA and DAG." +call /kinetics/DAG/notes LOAD \ +"Baseline in model is 11.661 uM." \ +"DAG is pretty nasty to estimate. In this model we just hold" \ +"it fixed at this baseline level. Data sources are many and" \ +"varied and sometimes difficult to reconcile. " \ +"Welsh and Cabot 1987 JCB 35:231-245: DAG degradation" \ +"Bocckino et al JBC 260(26):14201-14207: " \ +" hepatocytes stim with vasopressin: 190 uM." \ +"Bocckino et al 1987 JBC 262(31):15309-15315:" \ +" DAG rises from 70 to 200 ng/mg wet weight, approx 150 to 450 uM." \ +"Prescott and Majerus 1983 JBC 258:764-769: Platelets: 6 uM." \ +" Also see Rittenhouse-Simmons 1979 J Clin Invest 63." \ +"Sano et al JBC 258(3):2010-2013: Report a nearly 10 fold rise." \ +"Habenicht et al 1981 JBC 256(23)12329-12335: " \ +" 3T3 cells with PDGF stim: 27 uM" \ +"Cornell and Vance 1987 BBA 919:23-36: 10x rise from 10 to 100 uM." \ +"" \ +"Summary: I see much lower rises in my PLC models," \ +"but the baseline could be anywhere from" \ +"5 to 100 uM. I have chosen about 11 uM based on the stimulus -response" \ +"characteristics from the Schaechter and Benowitz paper and the" \ +"Shinomura et al papers." \ +"" \ +"" \ +"" +call /kinetics/Ca/notes LOAD \ +"This calcium pool is treated as being buffered to a" \ +"steady 0.08 uM, which is the resting level. " +call /kinetics/AA/notes LOAD \ +"Arachidonic Acid. This messenger diffuses through membranes" \ +"as well as cytosolically, has been suggested as a possible" \ +"retrograde messenger at synapses. " +call /kinetics/PKC-active/notes LOAD \ +"This is the total active PKC. It is the sum of the respective" \ +"activities of " \ +"PKC-basal*" \ +"PKC-Ca-memb*" \ +"PKC-DAG-memb*" \ +"PKC-Ca-AA*" \ +"PKC-DAG-AA*" \ +"PKC-AA*" \ +"I treat PKC here in a two-state manner: Either it is in an active" \ +"state (any one of the above list) or it is inactive. No matter what " \ +"combination of stimuli activate the PKC, I treat it as having the same" \ +"activity. The scaling comes in through the relative amounts of PKC" \ +"which bind to the respecive stimuli." \ +"The justification for this is the mode of action of PKC, which like" \ +"most Ser/Thr kinases has a kinase domain normally bound to and blocked" \ +"by a regulatory domain. I assume that all the activators simply free" \ +"up the kinase domain." \ +"A more general model would incorporate a different enzyme activity for" \ +"each combination of activating inputs, as well as for each substrate." \ +"The current model seems to be a decent and much simpler approximation" \ +"for the available data." \ +"One caveat of this way of representing PKC is that the summation" \ +"procedure assumes that PKC does not saturate with its substrates. " \ +"If this assumption fails, then the contributing PKC complexes would" \ +"experience changes in availability which would affect their " \ +"balance. Given the relatively low percentage of PKC usually activated," \ +"and its high throughput as an enzyme, this is a safe assumption under" \ +"physiological conditions." \ +"" +call /kinetics/PKC-active/PKC-act-raf/notes LOAD \ +"Rate consts from Chen et al Biochem 32, 1032 (1993)" \ +"k3 = 4" \ +"Km for this substrate is trickier. Specific substrates are in the" \ +"uM range, so we use a higher Km here. This may be too conservative" \ +"in which case PKC would have a still higher effect on raf." \ +"The presence of this phosphorylation and activation step is from" \ +"Kolch et al 1993 Nature 364:249" \ +"" \ +"" +call /kinetics/PKC-active/PKC-inact-GAP/notes LOAD \ +"Rate consts are PKC generic rates." \ +"This reaction inactivates GAP. The reaction is from the " \ +"Boguski and McCormick 1993 review in Nature 366:643-654" \ +"The phosphorylation Vmax is 6x higher to account for" \ +"balance of GDP-Ras:GDP-Ras." +call /kinetics/PKC-active/PKC-act-GEF/notes LOAD \ +"Rate constants are generic PKC rates." \ +"See Chen et al 1993 Biochem 32:1032" \ +"This reaction activates GEF. Gives >= 2X stim of ras, and" \ +"a 2X stim of MAPK over amount from direct phosph of" \ +"c-raf. Note that it is a push-pull reaction, and also get" \ +"effect through phosph and inact of GAPs." \ +"" +call /kinetics/MAPK/notes LOAD \ +"The Mitogen Activated Protein Kinase (MAPK) cascade model " \ +"here includes both the MAPK cascade and" \ +"its regulation by two forms of MKP. MKP-1 is induced upon MAPK" \ +"activation, whereas MKP-2 is treated as a steady level of" \ +"protein. The phosphatase Protein phosphatase 2 A (PP2A) " \ +"is also included in this model to balance the activity of" \ +"the kinases." +call /kinetics/MAPK/craf-1/notes LOAD \ +"Strom et al 1990 Oncogene 5 pp 345-51 report high general expression" \ +"in all tissues." \ +"Huang and Ferrell 1996 PNAS 93(19):10078 use a value of 3 nM for oocytes." \ +"Here we stick with a much higher expression based on the Strom report." \ +"" +call /kinetics/MAPK/craf-1*/notes LOAD \ +"Singly phosphorylated form of c-raf-1. This is the form that gets" \ +"best activated by GTP.Ras." +call /kinetics/MAPK/MAPKK/notes LOAD \ +"Conc is from Seger et al JBC 267:20 pp14373 (1992)" \ +"mwt is 45/46 Kd" \ +"We assume that phosphorylation on both ser and thr is needed for" \ +"activiation. See Kyriakis et al Nature 358 417 1992" \ +"Init conc of total is 0.18" \ +"" +call /kinetics/MAPK/MAPK/notes LOAD \ +"Mol wt is 42 KDa." \ +"conc is from Sanghera et al JBC 265 pp 52 (1990)" \ +"They estimate MAPK is 1e-4x total protein, and protein is 15% of cell wt," \ +"so MAPK is 1.5e-5g/ml = 0.36uM." \ +"Lets use this." \ +"Note though that Huang and Ferrell 1996 PNAS 93(19):10078" \ +"report 1.2 uM in oocytes." \ +"Also note that brain concs may be high." \ +"Ortiz et al 1995 J. Neurosci 15(2):1285-1297 report " \ +"0.3 ng/ug protein in Cingulate Gyrus and 1.2 ng/ug protein" \ +"in nucleus accumbens. In hippocampus 270 ng/mg protein for ERK1 and" \ +"820 ng/mg protein for ERK 2. " \ +"If 15% of cell weight is protein, that means that about 300 * 0.15 ng/ul" \ +"is ERK 1. ie, 45e-9g/1e-6 litre = 45 mg/litre or about 1 uM. " \ +"For non-neuronal tissues a lower value may be better." +call /kinetics/MAPK/craf-1**/notes LOAD \ +"Negative feedback by MAPK* by hyperphosphorylating craf-1* gives" \ +"rise to this pool." \ +"Ueki et al JBC 269(22):15756-15761, 1994" \ +"" +call /kinetics/MAPK/MAPK-tyr/notes LOAD \ +"Haystead et al FEBS Lett. 306(1) pp 17-22 show that phosphorylation" \ +"is strictly sequential, first tyr185 then thr183." +call /kinetics/MAPK/MAPKK*/notes LOAD \ +"MAPKK phosphorylates MAPK on both the tyr and thr residues, first" \ +"tyr then thr. Refs: Seger et al JBC267:20 pp 14373 1992" \ +"The MAPKK itself is phosphorylated on ser as well as thr residues." \ +"Let us assume that the ser goes first, and that the sequential phosphorylation" \ +"is needed. See Kyriakis et al Nature 358 417-421 1992" +call /kinetics/MAPK/MAPKK*/MAPKKtyr/notes LOAD \ +"The actual MAPKK is 2 forms from Seger et al JBC 267:20 14373(1992)" \ +"Vmax = 150nmol/min/mg" \ +"From Haystead et al FEBS 306(1):17-22 we get Km=46.6nM for at least one" \ +"of the phosphs." \ +"Putting these together:" \ +"k3=0.15/sec, ratio of 4 to get k2=0.6." \ +"k1=0.75/46.6nM=2.7e-5" \ +"In terms of Michaelis-Menten rates, " \ +"Km = 0.046, Vmax = 0.15, ratio = 4." +call /kinetics/MAPK/MAPKK*/MAPKKthr/notes LOAD \ +"Rate consts same as for MAPKKtyr." +call /kinetics/MAPK/MAPKK-ser/notes LOAD \ +"Intermediately phophorylated, assumed inactive, form of MAPKK" +call /kinetics/MAPK/RGR/notes LOAD \ +"Shorthand name for Raf.GTP.Ras. This refers to the complex between" \ +"GTP.Ras and the unphosphorylated Raf. I treat this as having the " \ +"same enzyme activity as the Raf*.GTP.Ras form." +call /kinetics/MAPK/RGR/RGR.1/notes LOAD \ +"Kinetics are the same as for the craf-1* activity, ie.," \ +"k1=5.5e-6, k2=.42, k3 =0.105" \ +"These are based on Force et al PNAS USA 91 1270-1274 1994." \ +"" +call /kinetics/MAPK/RGR/RGR.2/notes LOAD \ +"Same kinetics as other c-raf activated forms. See " \ +"Force et al PNAS 91 1270-1274 1994." \ +"k1 = 5.5e-6, k2 = .42, k3 = 0.105" \ +"" +call /kinetics/MAPK/Raf*-GTP-Ras/notes LOAD \ +"This is the main activated form of craf. It requires binding to ras for" \ +"activation, but the presence of the phosphorylation increases this" \ +"binding. See Leevers 1994 Nature 369:411-414 and" \ +"Hallberg et al 1994 JBC 269(6):3913-3916" +call /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1/notes LOAD \ +"Kinetics are the same as for the craf-1* activity, ie.," \ +"k1=1.1e-6, k2=.42, k3 =0.105" \ +"These are based on Force et al PNAS USA 91 1270-1274 1994." \ +"They report Km for MAPKK of 0.8 uM. and a Vmax of ~500 fm/min/ug." \ +"These parms cannot reach the observed 4X stimulation of MAPK." \ +"So we increase the affinity, ie, raise k1 5x to 5.5e-6" \ +"which is equivalent to 5-fold reduction in Km to about 0.16." \ +"This is, of course, dependent on the amount of MAPKK present." \ +"" \ +"" +call /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2/notes LOAD \ +"Same kinetics as other c-raf activated forms. See " \ +"Force et al PNAS 91 1270-1274 1994." \ +"" +call /kinetics/MAPK*/notes LOAD \ +"This molecule is phosphorylated on both the tyr and thr residues and" \ +"is active: Seger et al 1992 JBC 267(20):14373" \ +"The rate consts are from two sources: Combine Sanghera et al" \ +"JBC 265(1) :52-57 with Nemenoff et al JBC 93 pp 1960 to get" \ +" k3 = 10, k2 = 40, k1 = 3.25e-6" +call /kinetics/MAPK*/MAPK*-feedback/notes LOAD \ +"Ueki et al JBC 269(22):15756-15761 show the presence of" \ +"this step, but not the rate consts, which are derived from" \ +"Sanghera et al JBC 265(1):52-57, 1990, see the deriv in the" \ +"MAPK* notes." +call /kinetics/MAPK*/MAPK*/notes LOAD \ +"Km = 25uM @ 50 uM ATP and 1mg/ml MBP (huge XS of substrate)" \ +"Vmax = 4124 pmol/min/ml at a conc of 125 pmol/ml of enz." \ +"Numbers are from Sanghera et al JBC 265 pp 52 , 1990. " \ +"From Nemenoff et al 1993 JBC 268(3):1960-1964 - using Sanghera's 1e-4 ratio" \ +"of MAPK to protein, we get k3 = 7/sec from 1000 pmol/min/mg total " \ +"protein in fig 5" \ +"I take the Vmax to be higher for PLA2 given the fold activation of PLA2" \ +"by MAPK. This is actually a balance term between MAPK and the dephosphorylation" \ +"step." \ +"" +call /kinetics/Ras-act-craf/notes LOAD \ +"Assume binding is fast and limited only by available" \ +"Ras*. So kf = kb/[craf-1] " \ +"If kb is 1/sec, then kf = 1/0.2 uM = 1/(0.2 * 6e5) = 8.3e-6" \ +"Later: Raise it by 10 X to about 1e-4, giving a Kf of 60 for Kb of 0.5" \ +"and a tau of approx 2 sec." \ +"Based on:" \ +"Hallberg et al JBC 269:6 3913-3916 1994, 3% of cellular Raf is" \ +"complexed with Ras." \ +"This step needed to memb-anchor and activate Raf:" \ +"Leevers et al Nature 369 411-414." \ +"Also see Koide et al 1993 PNAS USA 90(18):8683-8686" +call /kinetics/PPhosphatase2A/notes LOAD \ +"Refs: Pato et al Biochem J 293:35-41(93);" \ +"CoInit values span a range depending on source." \ +"Pato et al 1993 Biochem J 293:35-41 and" \ +"Cohen et al 1988 Meth Enz 159:390-408 estimate 80 nM from muscle" \ +"" \ +"Zolneierowicz et al 1994 Biochem 33:11858-11867 report" \ +"levels of 0.4 uM again from muscle, but expression" \ +"is also strong in brain." \ +"Our estimate of 0.224 is between these two." \ +"" \ +"There are many substrates for PP2A in this model, so I put" \ +"the enzyme rate calculations here:" \ +"Takai&Mieskes Biochem J 275:233-239 have mol wt 36 KDa. They" \ +"report Vmax of 119 umol/min/mg i.e. 125/sec for k3 for pNPP substrate," \ +"Km of 16 mM. This is obviously unreasonable for protein substrates." \ +"For chicken gizzard myosin light chan, we have Vmax = 13 umol/min/mg" \ +"or about k3 = 14/sec." \ +"" \ +"Pato et al 1993 Biochem J 293:35-41 report" \ +"caldesmon: Km = 2.2 uM, Vmax = 0.24 umol/min/mg. They do not think " \ +"caldesmon is a good substrate. " \ +"Calponin: Km = 14.3, Vmax = 5." \ +"Our values approximate these." \ +"" \ +"" +call /kinetics/PPhosphatase2A/craf-deph/notes LOAD \ +"See parent PPhosphatase2A for parms" \ +"" +call /kinetics/PPhosphatase2A/MAPKK-deph/notes LOAD \ +"See: Kyriakis et al Nature 358 pp 417-421 1992" \ +"Ahn et al Curr Op Cell Biol 4:992-999 1992 for this pathway." \ +"See parent PPhosphatase2A for parms." +call /kinetics/PPhosphatase2A/MAPKK-deph-ser/notes LOAD \ +"See parent PPhostphatase2A description for rate details" +call /kinetics/PPhosphatase2A/craf**-deph/notes LOAD \ +"Ueki et al JBC 269(22) pp 15756-15761 1994 show hyperphosphorylation of" \ +"craf, so this is there to dephosphorylate it. Identity of phosphatase is" \ +"assumed to be PP2A." +call /kinetics/PLA2/notes LOAD \ +"Main source of data: Leslie and Channon BBA 1045 (1990) pp 261-270." \ +"Fig 6 is Ca curve. Fig 4a is PIP2 curve. Fig 4b is DAG curve. Also see" \ +"Wijkander and Sundler JBC 202 (1991) pp873-880;" \ +"Diez and Mong JBC 265(24) p14654;" \ +"Leslie JBC 266(17) (1991) pp11366-11371" \ +"Many inputs activate PLA2. In this model I simply take" \ +"each combination of stimuli as binding to PLA2 to give a" \ +"unique enzymatic activity. The Km and Vmax of these" \ +"active complexes is scaled according to the" \ +"relative activation reported in the papers above." +call /kinetics/PLA2/PLA2-cytosolic/notes LOAD \ +"cPLA2 IV form has mol wt of 85 Kd." \ +"Glaser et al 1993 TIPS 14:92-98." \ +"" \ +"Calculated cytosolic concentration is ~300 nM from Wijkander and Sundler" \ +"1991 Eur J Biochem 202:873" \ +"Leslie and Channon 1990 BBA 1045:261 use about 400 nM. " \ +"Decent match. Use 400 nM." \ +"" +call /kinetics/PLA2/PLA2-Ca-act/notes LOAD \ +"Direct activation of PLA2 by Ca." \ +"From Leslie and Channon BBA 1045 (1990) 261-270 fig6 pp267." +call /kinetics/PLA2/PLA2-Ca*/notes LOAD \ +"The generic Ca-activated form ofPLA2." \ +"Leslie and Channon 1990 BBA 1045:261." +call /kinetics/PLA2/PLA2-Ca*/kenz/notes LOAD \ +"Based on Leslie and Channon 1990 BBA 1045:261, in relation to the" \ +"other PLA2 inputs (not including MAPK). Ca alone is rather a " \ +"weak input." +call /kinetics/PLA2/PIP2-PLA2-act/notes LOAD \ +"Activation of PLA2 by PIP2. From" \ +"Leslie and Channon 1990 BBA 1045:261 the stimulation of PLA2" \ +"activity by high PIP2 is 7x." \ +"In this model we don't really expect any PIP2 stimulus." \ +"" +call /kinetics/PLA2/PIP2-PLA2*/kenz/notes LOAD \ +"Based on Leslie and Channon 1990 BBA 1045:261." +call /kinetics/PLA2/PIP2-Ca-PLA2-act/notes LOAD \ +"Synergistic activation of PLA2 by Ca and PIP2. Again from " \ +"Leslie and Channon 1990 BBA 1045:261" +call /kinetics/PLA2/PIP2-Ca-PLA2*/kenz/notes LOAD \ +"Based on AA generation by different stimuli according to" \ +"Leslie and Channon 1990 BBA 1045:261" +call /kinetics/PLA2/DAG-Ca-PLA2-act/notes LOAD \ +"Synergistic activation of PLA2 by Ca and DAG. " \ +"Based on Leslie and Channon 1990 BBA 1045:261" \ +"The Kd is rather large and may reflect the complications" \ +"in measuring DAG. For this model it is not critical " \ +"since DAG is held fixed." +call /kinetics/PLA2/DAG-Ca-PLA2*/kenz/notes LOAD \ +"Based on Leslie and Channon 1990 BBA 1045:261." +call /kinetics/PLA2/APC/notes LOAD \ +"arachodonylphosphatidylcholine is the favoured substrate" \ +"from Wijkander and Sundler, JBC 202 pp 873-880, 1991." \ +"Their assay used 30 uM substrate, which is what the kinetics in" \ +"this model are based on. For the later model we should locate" \ +"a more realistic value for APC. For now it is treated as" \ +"a buffered metabolite." +call /kinetics/PLA2/Degrade-AA/notes LOAD \ +"Degradation pathway for AA." \ +"APC is a convenient buffered pool to dump it back into, though the" \ +"actual metabolism is probably far more complex." \ +"For the purposes of the full model we use a rate of degradation of" \ +"0.4/sec to give a dynamic range of AA comparable to what is seen" \ +"experimentally." \ +"Wijkander and Sundler 1991 Eur J Biochem 202:873" \ +"Leslie and Channon 1990 BBA 1045:261" +call /kinetics/PLA2/PLA2*-Ca/notes LOAD \ +"Phosphorylated and active form of PLA2. Several kinases act on it:" \ +"PKA: Wightman et al JBC 257 pp6650 1982" \ +"PKC: Many refs, eg Gronich et al JBC 263 pp 16645, 1988 but see Lin etal" \ +"MAPK: Lin et al, Cell 72 pp 269, 1993. Show 3x with MAPK but not PKC alone" \ +"The Nemenoff assays are conducted in rather high Ca so I have" \ +"assumed a Ca binding step." +call /kinetics/PLA2/PLA2*-Ca/kenz/notes LOAD \ +"This form should be 3 to 6 times as fast as the Ca-only form, from" \ +"Lin et al 1993 Cell 269-278" \ +"Nemenoff et al 1993 JBC 268:1960" \ +"Several forms contribute to the Ca-stimulated form, so this rate has" \ +"to be a factor larger than their total contribution. " \ +"I assign Vmax as the scale factor here because there is lots of APC" \ +"substrate, so all the PLA2 complex enzymes are limited primarily by Vmax." +call /kinetics/PLA2/PLA2*/notes LOAD \ +"Phosphorylated PLA2. The site differs from the site" \ +"phosphorylated by PKC. See" \ +"Nemenoff et al 1993 JBC 268(3):1960-1964" +call /kinetics/PLA2/PLA2*-Ca-act/notes LOAD \ +"Nemenoff et al 1993 JBC 268:1960 report a 2X to 4x activation of PLA2" \ +"by MAPK, which seems dependent on Ca as well. This reaction " \ +"represents this activation. Rates are scaled to give appropriate" \ +"fold activation." +call /kinetics/PLA2/dephosphorylate-PLA2*/notes LOAD \ +"Dephosphorylation reaction to balance MAPK phosphorylation of PLA2." \ +"This is probably mediated by PP2A. " \ +"Rates determined to keep the balance of phosphorylated and" \ +"non-phosphorylated PLA2 reasonable. The constraining factor" \ +"is the fold activation of PLA2 by MAPK." +call /kinetics/temp-PIP2/notes LOAD \ +"This is a steady PIP2 input to PLA2. The sensitivity" \ +"of PLA2 to PIP2 discussed below" \ +"does not match with the reported free levels which are" \ +"used by the phosphlipase Cs. My understanding is that" \ +"there may be different pools of PIP2 available for stimulating" \ +"PLA2 as opposed to being substrates for PLCs. For that reason" \ +"I have given this PIP2 pool a separate identity. As it is" \ +"a steady input this is not a problem in this model." \ +"" \ +"Majerus et al Cell 37:701-703 report a brain concentration of" \ +"0.1 - 0.2 mole %" \ +"Majerus et al Science 234:1519-1526 report a huge range of " \ +"concentrations: from 1 to 10% of PI content, which is in turn" \ +"2-8% of cell lipid. This gives 2e-4 to 8e-3 of cell lipid." \ +"In concentrations in total volume of cell (a somewhat strange" \ +"number given the compartmental considerations) this comes to" \ +"anywhere from 4 uM to 200 uM." \ +"" \ +"PLA2 is stim 7x by PIP2 (Leslie and Channon BBA 1045:261(1990) " \ +"Leslie and Channon say PIP2 is present at 0.1 - 0.2mol% range in membs," \ +"so I'll use a value at the lower end of the scale for basal PIP2." +call /kinetics/Ras/notes LOAD \ +" The main refs for Ras are" \ +"Boguski and McCormick Nature 366 643-654 '93 Major review" \ +"Eccleston et al JBC 268:36 pp 27012-19" \ +"Orita et al JBC 268:34 25542-25546" +call /kinetics/Ras/dephosph-GEF/notes LOAD \ +"This rate is based on the known ratio of GDP-Ras to GTP-Ras." \ +"Basal: Ras.GTP = 7%" \ +"Stimulated 15%" \ +"Time course is within 10 min, probably much faster as not" \ +"all early data points are there." \ +"See Gibbs et al JBC 265(33):20437-20422" +call /kinetics/Ras/inact-GEF/notes LOAD \ +"This is the amount of inactive GEF available to the system." \ +"The value is the same as the estimated amount of SoS, though" \ +"I treat it here as a different pool. Probably several molecules" \ +"can function as GEFs and this is a simplification." \ +"Orita et al JBC 268(34):25542-25546" \ +"Gulbins et al 1994 Mol Cell Biol 14(2):906-913" \ +"" +call /kinetics/Ras/GEF*/notes LOAD \ +"Phosphorylated and thereby activated form of GEF. See, e.g." \ +"Orita et al JBC 268:34 25542-25546 1993, Gulbins et al." \ +"It is not clear whether there is major specificity for tyr or ser/thr." +call /kinetics/Ras/GEF*/GEF*-act-ras/notes LOAD \ +"Kinetics from Orita et al JBC 268(34):25542-25546." \ +"Note that the Vmax is slow, but it does match" \ +"the slow GTP hydrolysis rates." \ +"" +call /kinetics/Ras/GTP-Ras/notes LOAD \ +"Only a very small fraction (7% unstim, 15% stim) of ras is GTP-bound." \ +"Gibbs et al JBC 265(33) 20437" \ +"" +call /kinetics/Ras/GDP-Ras/notes LOAD \ +"GDP bound form. See Rosen et al Neuron 12 1207-1221 June 1994." \ +"the activation loop is based on Boguski and McCormick Nature 366 643-654 93" \ +"Assume Ras is present at about the same level as craf-1, 0.2 uM." \ +"Hallberg et al JBC 269:6 3913-3916 1994 estimate upto 5-10% of cellular" \ +"Raf is assoc with Ras. Given that only 5-10% of Ras is GTP-bound, we" \ +"need similar amounts of Ras as Raf." +call /kinetics/Ras/Ras-intrinsic-GTPase/notes LOAD \ +"This is extremely slow (kf = 1e-4), but it is significant as so little GAP actually" \ +"gets complexed with it that the total GTP turnover rises only by" \ +"2-3 X (see Gibbs et al, JBC 265(33) 20437-20422) and " \ +"Eccleston et al JBC 268(36) 27012-27019" \ +"There is no back reaction as we assume this to be a regular" \ +"irreversible Michaelis-Menten zeroth order hydrolysis." \ +"" +call /kinetics/Ras/dephosph-GAP/notes LOAD \ +"Assume a reasonably good rate for dephosphorylating it, 0.1/sec." \ +"This fits well with resting levels of active kinase and the" \ +"degree of activation as well as time-course of turnoff of Ras activation," \ +"but data is quite indirect." +call /kinetics/Ras/GAP*/notes LOAD \ +"Phosphorylated and inactive GAP." \ +"See Boguski and McCormick 1993 Nature 366:643-654 for a review." +call /kinetics/Ras/GAP/notes LOAD \ +"GTPase-activating proteins. See Boguski and McCormick 1993 Nature 366:643-654" \ +"Turn off Ras by helping to hydrolyze bound GTP. " \ +"This one is probably NF1, ie., Neurofibromin as it is inhibited by AA and lipids," \ +"and expressed in neural cells. p120-GAP is also a possible candidate, but" \ +"is less regulated. Both may exist at similar levels." \ +"See Eccleston et al JBC 268(36) pp27012-19" \ +"Level=.002" +call /kinetics/Ras/GAP/GAP-inact-ras/notes LOAD \ +"From Eccleston et al JBC 268(36)pp27012-19 get Kd < 2uM, kcat - 10/sec" \ +"From Martin et al Cell 63 843-849 1990 get Kd ~ 250 nM, kcat = 20/min" \ +"I will go with the Eccleston figures as there are good error bars (10%)." \ +"The two sets of values are reasonably close." \ +"k1 = 1.666e-3/sec, k2 = 1000/sec, k3 = 10/sec (note k3 is rate-limiting)" \ +"This is one of the rare cases where we have direct info on the" \ +"k3 being rate-limiting. Hence the ratio I use for the k2:k3 rates is" \ +"100 rather than the usual 4." +call /kinetics/Ras-act-unphosph-raf/notes LOAD \ +"Based on rates of Ras-act-craf which has Kf=60, Kb= 0.5." \ +"This reaction was introduced to account for the PKC-independent" \ +"activation of MAPK." \ +"This reac should have less affinity" \ +"but similar tau as compared to the Ras-cat-craf," \ +" since the phosphorylated Raf form has" \ +"a greater effect on MAPK." \ +"" \ +"" +call /kinetics/PDGFR/notes LOAD \ +"Platelet Derived Growth Factor Receptor pathway." \ +"Possible outputs include phosphorylation of Shc (which " \ +"couples ot Sos and Grb2 to activate Ras) and" \ +"phosphorylation of PLC-gamma. The latter is not" \ +"implemented in this specific model." +call /kinetics/PDGFR/PDGFR/notes LOAD \ +"Berkers et al JBC 266 say 22K high affinity receptors per cell." \ +"Sherrill and Kyte Biochemistry 35 use range 4-200 nM." \ +"These values match reasonably." \ +"Heidaran et al 1993 JBC 268(13):9287-9295" \ +"use NIH3T3 cells and have 6.5e4 receptors/cell. This is" \ +"also in the same general range. We use this last" \ +"value because the cell type matches." +call /kinetics/PDGFR/act_PDGFR/notes LOAD \ +"From Heidaran et al JBC268(13):9287 Fig 5." \ +"Kd is ~0.5 nM" +call /kinetics/PDGFR/L.PDGFR/notes LOAD \ +"This is terribly simplified: there are many interesting" \ +"intermediate stages, including dimerization and assoc" \ +"with adapter molecules like Shc, that contribute to the" \ +"activation of the EGFR." +call /kinetics/PDGFR/L.PDGFR/phosph_Shc/notes LOAD \ +"Rates from Okada et al JBC 270:35 pp 20737 1995" \ +"Km = 0.70 to 0.85 uM, Vmax = 4.4 to 5.0 pmol/min. Unfortunately" \ +"the amount of enzyme is not known, the prep is only" \ +"partially purified." \ +"Tau phosph is max within 30 sec, falls back within" \ +"20 min. Ref: Sasaoka et al JBC 269:51 32621 1994." \ +"Use k3 = 0.1 based on this tau." \ +"27 Apr 2001: Lowered k3 to 0.05 to fix conc-effect of SHC phosph" \ +"by PDGF. This gives results for downstream effects in" \ +"agreement with other papers, e.g., the Brondello papers." +call /kinetics/PDGFR/PDGF/notes LOAD \ +"Platelet-derived growth factor. Heterodimer Mol wt. is approx 30 KDa" \ +"Deuel et al 1985 Cancer Surv. 4(4):633-53" \ +"Conc of 50 ng/ml is close to saturating, and is used by P. Ram (personal" \ +"communication). Other refs use 65 ng/ml" \ +"Weise RJ et al 1995 JBC 270(7):3442-3446" \ +"A stimulus of 5 min is commonly used." \ +"Conversion factor: " \ +"1ng/ml = (1e-9/30K)* 1000 Moles/litre = 3e-11M = 3e-5 uM" \ +"So 50 ng/ml ~ 1.5 nM." +call /kinetics/PDGFR/SHC/notes LOAD \ +"There are 2 isoforms: 52 KDa and 46 KDa (See Okada et al" \ +"JBC 270:35 pp 20737 1995). They are acted up on by the EGFR" \ +"in very similar ways, and apparently both bind Grb2 similarly," \ +"so we'll bundle them together here." \ +"Sasaoka et al JBC 269:51 pp 32621 1994 show immunoprecs where" \ +"it looks like there is at least as much Shc as Grb2. So" \ +"we'll tentatively say there is 1 uM of Shc." +call /kinetics/PDGFR/SHC*/notes LOAD \ +"Phosphorylated form of SHC. Binds to the SoS.Grb2 " \ +"complex to give the activated GEF form upstream" \ +"of Ras." +call /kinetics/PDGFR/dephosph_Shc/notes LOAD \ +"Time course of decline of phosph is 20 min from Sasaoka" \ +"et al 1994 JBC 269(51):32621. Part of this is" \ +"the turnoff time of the EGFR itself. Lets assume a tau of" \ +"10 min for this dephosphorylation as a first pass." \ +"27 Apr 2001: Dephosph too slow, shifts SHC balance over to" \ +"phosphorylated form. Increase Kf to 0.01. This gives a reasonable" \ +"overall time-course." +call /kinetics/PDGFR/Internal_L.PDGFR/notes LOAD \ +"The internalized PDGFR is treated as a generic pool in equilibrium with" \ +"the surface receptor. This simplifies the turnover processes but" \ +"fits reasonably well with data." +call /kinetics/PDGFR/Internalize/notes LOAD \ +"Original model derived from EGFR model." \ +"See Helin and Beguinot JBC 266:13 1991 pg 8363-8368." \ +"In Fig 3 they have internalization tau about 10 min, " \ +"equil at about 20% EGF available. So kf = 4x kb, and" \ +"1/(kf + kb) = 600 sec so kb = 1/3K = 3.3e-4," \ +"and kf = 1.33e-3. This doesn't take into account the" \ +"unbound receptor, so we need to push the kf up a bit, to" \ +"0.002" \ +"26 apr 2001: Keq too low for the PDGF model." \ +"Now Kf=0.001,Kb=0.00066" \ +"The previously calculated internalization equilibrium" \ +"led to very high internalization which shifted the effective" \ +"dependence of the receptor on PDGF so it looked like the" \ +"receptor binding was higher affinity than experimentally" \ +"determined. Used two constraining factors: " \ +"1. Time course of " \ +"SHC phosphorylation/dephosphorylation which is fast on, but" \ +"10-20 minutes off." \ +"2. Conc dependence of MAPK on PDGF has a halfmax around 3ng/ml." \ +"See Brondello et al 1997 JBC 272(2):1368-1376 and " \ +"Brondello et al 1999 Science 286:2514-1517." \ +"" \ +"" \ +"" +call /kinetics/MKP-2/notes LOAD \ +"MKP2 is modeled to act as a relatively steady," \ +"unregulated phosphatase for controlling MAPK activity." \ +"From Brondello et al JBC 272(2):1368-1376 (1997), the" \ +"blockage of MKP-1 induction increases MAPK activity by" \ +"no more than 2x. So this phosphatase will play the steady" \ +"role and the fully stimulated MKP-1 can come up to the" \ +"level of this steady level." \ +"From Chu et al 1995 JBC 271(11):6497-6501 it looks like" \ +"both MKP-1 and MKP-2 have similar activities in dephosphorylating" \ +"ERK2. So I use the same enzymatic rates for both." \ +"" \ +"31 Jan 2002: For the purposes of making a bistable model without the" \ +"complications of MKP-1 induction, I simply set the initial" \ +"conc of MKP-2 up by 0.0004 uM which was the starting level of MKP-1." +call /kinetics/MKP-2/MKP2-tyr-deph/notes LOAD \ +"22 Apr 2001: Based on MKP1 parms." \ +"The original kinetics have been modified to obey the k2 = 4 * k3 rule," \ +"while keeping kcat and Km fixed. The only constraining" \ +"data point is the time course of MAPK dephosphorylation, which this" \ +"model satisfies." \ +"" \ +"The rates are treated as the same as for MKP-1, based on" \ +"Chu et al 1995 JBC 271(11):6497-6501" +call /kinetics/MKP-2/MKP2-thr-deph/notes LOAD \ +"See MKP2-tyr-deph" +complete_loading diff --git a/examples/genesis/acc68.g b/examples/genesis/acc68.g new file mode 100644 index 0000000..5531f0f --- /dev/null +++ b/examples/genesis/acc68.g @@ -0,0 +1,597 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Mon Feb 13 16:21:21 2006 + +include kkit {argv 1} + +FASTDT = 5e-05 +SIMDT = 0.01 +CONTROLDT = 0.1 +PLOTDT = 20 +MAXTIME = 20000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 3e-18 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 394 4 0 +simundump group /kinetics/Lambda-cl_gene 0 15 yellow x 0 0 "" Lambda-cl_gene \ + /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 386 1 0 +simundump kpool /kinetics/Lambda-cl_gene/Nucleotides 0 0 0.00055555 \ + 0.00055555 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 15 400 -4 0 +simundump kpool /kinetics/Lambda-cl_gene/Amino_Acids 0 0 0.00055555 \ + 0.00055555 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 15 379 -4 0 +simundump kpool /kinetics/Lambda-cl_gene/lambda-cl_mRNA 0 0 0 0 0 0 0 0 1800 \ + 0 /kinetics/geometry 5 15 386 -4 0 +simundump kenz /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation 0 \ + 0 0 0 0 1800 0.83494 0.668 0.167 0 1 "" red 5 "" 379 -6 0 +simundump kpool /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA 0 0 0 0 0 0 \ + 0 0 1800 4 /kinetics/geometry 1 15 393 -4 0 +simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl_operator 0 0 0.022222 \ + 0.022222 40 40 0 0 1800 0 /kinetics/geometry 36 15 400 -8 0 +simundump kenz /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription 0 \ + 0 0 0 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 400 -7 0 +simundump kreac /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction 0 \ + 0.55556 224 "" white 15 396 -9 0 +simundump kreac /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] 0 \ + 0.55556 9 "" white 15 390 -9 0 +simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound 0 0 0 0 \ + 0 0 0 0 1800 0 /kinetics/geometry 2 15 393 -8 0 +simundump kenz /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription 0 \ + 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 393 -6 0 +simundump kpool /kinetics/Lambda-cl_gene/Degraded_Lambda-cl 0 0 0 0 0 0 0 0 \ + 1800 4 /kinetics/geometry 2 15 379 -15 0 +simundump kreac /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation 0 \ + 0.005775 0 "" white 15 389 -3 0 +simundump kreac /kinetics/Lambda-cl_gene/Lambda-cl_degradation 0 0.016666 0 \ + "" white 15 379 -13 0 +simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound 0 0 0 0 \ + 0 0 0 0 1800 0 /kinetics/geometry 52 15 386 -8 0 +simundump kenz /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 0 \ + 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 386 -7 0 +simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 27 15 379 -11 0 +simundump group /kinetics/Lac_gene 0 yellow yellow x 0 0 "" Lac_gene \ + /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 345 1 0 +simundump kpool /kinetics/Lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 yellow 344 -4 0 +simundump kenz /kinetics/Lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" 338 -6 0 +simundump kpool /kinetics/Lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 358 -4 0 +simundump kreac /kinetics/Lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ + yellow 347 -3 0 +simundump kpool /kinetics/Lac_gene/Degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 4 \ + /kinetics/geometry 1 yellow 351 -4 0 +simundump kpool /kinetics/Lac_gene/Lac_operator 0 0 0.022222 0.022222 40 40 0 \ + 0 1800 0 /kinetics/geometry 36 yellow 358 -8 0 +simundump kenz /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription 0 0 0 \ + 0 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 358 -7 0 +simundump kpool /kinetics/Lac_gene/Lac_operator_1st_bound 0 0 0 0 0 0 0 0 \ + 1800 0 /kinetics/geometry 2 yellow 351 -8 0 +simundump kenz /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription 0 \ + 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 351 -6 0 +simundump kpool /kinetics/Lac_gene/Lac_operator_2nd_bound 0 0 0 0 0 0 0 0 \ + 1800 0 /kinetics/geometry 52 yellow 344 -8 0 +simundump kenz /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 0 \ + 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 344 -7 0 +simundump kreac /kinetics/Lac_gene/Lac_degradation 0 0.016666 0 "" white \ + yellow 338 -13 0 +simundump kpool /kinetics/Lac_gene/Degraded_lac 0 0 0 0 0 0 0 0 1800 4 \ + /kinetics/geometry 2 yellow 338 -15 0 +simundump kpool /kinetics/Lac_gene/Amino_Acids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 338 -4 0 +simundump kreac /kinetics/Lac_gene/Lac_operator_inhibition_reaction 0 0.55556 \ + 224 "" white yellow 354 -9 0 +simundump kreac /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] 0 \ + 0.55556 9 "" white yellow 348 -9 0 +simundump kpool /kinetics/Lac_gene/Lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 yellow 338 -11 0 +simundump group /kinetics/TetR_gene 0 61 yellow x 0 0 "" TetR_gene \ + /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 311 1 0 +simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ + 303 -13 0 +simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ + 0 0 1800 0 /kinetics/geometry 36 61 323 -8 0 +simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription 0 0 \ + 0 0 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 323 -7 0 +simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 323 -4 0 +simundump kpool /kinetics/TetR_gene/TetR_operator_1st_bound 0 0 0 0 0 0 0 0 \ + 1800 0 /kinetics/geometry 2 61 316 -8 0 +simundump kenz /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription 0 \ + 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 316 -6 0 +simundump kpool /kinetics/TetR_gene/TetR_operator_2nd_bound 0 0 0 0 0 0 0 0 \ + 1800 0 /kinetics/geometry 46 61 309 -8 0 +simundump kenz /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 0 \ + 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" 309 -7 0 +simundump kpool /kinetics/TetR_gene/Amino_Acids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 303 -4 0 +simundump kpool /kinetics/TetR_gene/tetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 61 309 -4 0 +simundump kenz /kinetics/TetR_gene/tetR_mRNA/tetR_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" 303 -6 0 +simundump kreac /kinetics/TetR_gene/tetR_mRNA_degradation 0 0.005775 0 "" \ + white 61 313 -3 0 +simundump kpool /kinetics/TetR_gene/Degraded_tetR_mRNA 0 0 0 0 0 0 0 0 1800 4 \ + /kinetics/geometry 1 61 316 -4 0 +simundump kpool /kinetics/TetR_gene/Degraded_TetR 0 0 0 0 0 0 0 0 1800 4 \ + /kinetics/geometry 2 61 303 -15 0 +simundump kreac /kinetics/TetR_gene/TetR_operator_inhibition_reaction 0 \ + 0.55556 224 "" white 61 319 -9 0 +simundump kreac /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] 0 \ + 0.55556 9 "" white 61 313 -9 0 +simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 16 61 303 -11 0 +simundump doqcsinfo /kinetics/doqcsinfo 0 /home/harsha/Repressilator.g \ + Repressilator network "Amrita Sekhar and Sharat J. Vayttaden, NCBS" \ + "Michael B. Elowitz, Stanislas Lelbler" "" "E. Coli" \ + "E.coli Expression, Transposon, Lambda phage" Cytosol Qualitative \ + "Elowitz MB, Leibler S., Nature. 2000 Jan 20;403(6767):335-8 ( Peer-reviewed publication )" \ + "Exact GENESIS implementation" "Approximates original data " 374 4 0 +simundump xgraph /graphs/conc1 0 9500 14500 0 1.65 0 +simundump xgraph /graphs/conc2 0 0 1e+05 0 1.2 0 +simundump xplot /graphs/conc1/TetR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 16 0 0 1 +simundump xplot /graphs/conc1/Lambda-cl.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 27 0 0 1 +simundump xplot /graphs/conc1/Lac.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 1e+05 0 1.8 0 +simundump xgraph /moregraphs/conc4 0 0 1e+05 0 0.115 0 +simundump xcoredraw /edit/draw 0 301 402 -17 6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"Repressilator model: A synthetic oscillatory network" \ +"of transcriptional regulators designed by Michael B. Elowitz and" \ +"Stanislas Leibler 2000 Nature 403(6767):335-338" +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 /kinetics/Lambda-cl_gene/Nucleotides REAC sA B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription /kinetics/Lambda-cl_gene/Nucleotides REAC sA B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription /kinetics/Lambda-cl_gene/Nucleotides REAC sA B +addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation /kinetics/Lambda-cl_gene/Amino_Acids REAC sA B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 /kinetics/Lambda-cl_gene/lambda-cl_mRNA MM_PRD pA +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription /kinetics/Lambda-cl_gene/lambda-cl_mRNA MM_PRD pA +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription /kinetics/Lambda-cl_gene/lambda-cl_mRNA MM_PRD pA +addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation /kinetics/Lambda-cl_gene/lambda-cl_mRNA REAC A B +addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation ENZYME n +addmsg /kinetics/Lambda-cl_gene/Amino_Acids /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA REAC B A +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction /kinetics/Lambda-cl_gene/Lambda-cl_operator REAC A B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription ENZYME n +addmsg /kinetics/Lambda-cl_gene/Nucleotides /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction PRODUCT n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] PRODUCT n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound REAC A B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound REAC B A +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription ENZYME n +addmsg /kinetics/Lambda-cl_gene/Nucleotides /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_degradation /kinetics/Lambda-cl_gene/Degraded_Lambda-cl REAC B A +addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation PRODUCT n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl /kinetics/Lambda-cl_gene/Lambda-cl_degradation SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/Degraded_Lambda-cl /kinetics/Lambda-cl_gene/Lambda-cl_degradation PRODUCT n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound REAC B A +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 ENZYME n +addmsg /kinetics/Lambda-cl_gene/Nucleotides /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 SUBSTRATE n +addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation /kinetics/Lambda-cl_gene/Lambda-cl MM_PRD pA +addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction /kinetics/Lambda-cl_gene/Lambda-cl REAC A B +addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] /kinetics/Lambda-cl_gene/Lambda-cl REAC A B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_degradation /kinetics/Lambda-cl_gene/Lambda-cl REAC A B +addmsg /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription /kinetics/Lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 /kinetics/Lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription /kinetics/Lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/Lac_gene/lac_mRNA_degradation /kinetics/Lac_gene/lac_mRNA REAC A B +addmsg /kinetics/Lac_gene/lac_mRNA /kinetics/Lac_gene/lac_mRNA/lac_translation ENZYME n +addmsg /kinetics/Lac_gene/Amino_Acids /kinetics/Lac_gene/lac_mRNA/lac_translation SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription /kinetics/Lac_gene/Nucleotides REAC sA B +addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 /kinetics/Lac_gene/Nucleotides REAC sA B +addmsg /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription /kinetics/Lac_gene/Nucleotides REAC sA B +addmsg /kinetics/Lac_gene/lac_mRNA /kinetics/Lac_gene/lac_mRNA_degradation SUBSTRATE n +addmsg /kinetics/Lac_gene/Degraded_lac_mRNA /kinetics/Lac_gene/lac_mRNA_degradation PRODUCT n +addmsg /kinetics/Lac_gene/lac_mRNA_degradation /kinetics/Lac_gene/Degraded_lac_mRNA REAC B A +addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction /kinetics/Lac_gene/Lac_operator REAC A B +addmsg /kinetics/Lac_gene/Lac_operator /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription ENZYME n +addmsg /kinetics/Lac_gene/Nucleotides /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction /kinetics/Lac_gene/Lac_operator_1st_bound REAC B A +addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] /kinetics/Lac_gene/Lac_operator_1st_bound REAC A B +addmsg /kinetics/Lac_gene/Lac_operator_1st_bound /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription ENZYME n +addmsg /kinetics/Lac_gene/Nucleotides /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] /kinetics/Lac_gene/Lac_operator_2nd_bound REAC B A +addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 ENZYME n +addmsg /kinetics/Lac_gene/Nucleotides /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 SUBSTRATE n +addmsg /kinetics/Lac_gene/Degraded_lac /kinetics/Lac_gene/Lac_degradation PRODUCT n +addmsg /kinetics/Lac_gene/Lac /kinetics/Lac_gene/Lac_degradation SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_degradation /kinetics/Lac_gene/Degraded_lac REAC B A +addmsg /kinetics/Lac_gene/lac_mRNA/lac_translation /kinetics/Lac_gene/Amino_Acids REAC sA B +addmsg /kinetics/Lac_gene/Lac_operator /kinetics/Lac_gene/Lac_operator_inhibition_reaction SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_operator_1st_bound /kinetics/Lac_gene/Lac_operator_inhibition_reaction PRODUCT n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl /kinetics/Lac_gene/Lac_operator_inhibition_reaction SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_operator_1st_bound /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] PRODUCT n +addmsg /kinetics/Lambda-cl_gene/Lambda-cl /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac_degradation /kinetics/Lac_gene/Lac REAC A B +addmsg /kinetics/Lac_gene/lac_mRNA/lac_translation /kinetics/Lac_gene/Lac MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction /kinetics/Lac_gene/Lac REAC A B +addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] /kinetics/Lac_gene/Lac REAC A B +addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/Degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n +addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction /kinetics/TetR_gene/TetR_operator REAC A B +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] /kinetics/TetR_gene/TetR_operator_1st_bound REAC A B +addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction /kinetics/TetR_gene/TetR_operator_1st_bound REAC B A +addmsg /kinetics/TetR_gene/TetR_operator_1st_bound /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] /kinetics/TetR_gene/TetR_operator_2nd_bound REAC B A +addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 SUBSTRATE n +addmsg /kinetics/TetR_gene/tetR_mRNA/tetR_translation /kinetics/TetR_gene/Amino_Acids REAC sA B +addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 /kinetics/TetR_gene/tetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription /kinetics/TetR_gene/tetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription /kinetics/TetR_gene/tetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/tetR_mRNA_degradation /kinetics/TetR_gene/tetR_mRNA REAC A B +addmsg /kinetics/TetR_gene/tetR_mRNA /kinetics/TetR_gene/tetR_mRNA/tetR_translation ENZYME n +addmsg /kinetics/TetR_gene/Amino_Acids /kinetics/TetR_gene/tetR_mRNA/tetR_translation SUBSTRATE n +addmsg /kinetics/TetR_gene/tetR_mRNA /kinetics/TetR_gene/tetR_mRNA_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/Degraded_tetR_mRNA /kinetics/TetR_gene/tetR_mRNA_degradation PRODUCT n +addmsg /kinetics/TetR_gene/tetR_mRNA_degradation /kinetics/TetR_gene/Degraded_tetR_mRNA REAC B A +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/Degraded_TetR REAC B A +addmsg /kinetics/TetR_gene/TetR_operator_1st_bound /kinetics/TetR_gene/TetR_operator_inhibition_reaction PRODUCT n +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator_inhibition_reaction SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac /kinetics/TetR_gene/TetR_operator_inhibition_reaction SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] PRODUCT n +addmsg /kinetics/TetR_gene/TetR_operator_1st_bound /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] SUBSTRATE n +addmsg /kinetics/Lac_gene/Lac /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/tetR_mRNA/tetR_translation /kinetics/TetR_gene/TetR MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *16 +addmsg /kinetics/Lambda-cl_gene/Lambda-cl /graphs/conc1/Lambda-cl.Co PLOT Co *Lambda-cl.Co *27 +addmsg /kinetics/Lac_gene/Lac /graphs/conc1/Lac.Co PLOT Co *Lac.Co *1 +enddump +// End of dump + +call /kinetics/Lambda-cl_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +call /kinetics/Lambda-cl_gene/lambda-cl_mRNA/notes LOAD \ +"The m-RNA transcribed by the Lcl operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation/notes LOAD \ +"Translation the lambda cl mRNA." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA/notes LOAD \ +"Degradation product of lambda cl m-RNA" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator/notes LOAD \ +"The lambda cl operator under normal conditions" \ +"drives transcription of lambda cl" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription/notes LOAD \ +"Basal transcription of the Lambda cl gene." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction/notes LOAD \ +"It signifies the first binding of the repressor" \ +"with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 " \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1]/notes LOAD \ +"It signifies the second binding of the repressor" \ +"with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 " \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/notes LOAD \ +"This represents the promoter " \ +"with one of its sites bound by the inhibitor." \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription/notes LOAD \ +"Transcription of the Lambda cl gene " \ +"with only one of its promoter sites activated." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Degraded_Lambda-cl/notes LOAD \ +"Degradation product of Lambda-cl protein" +call /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the lambda cl m-RNA," \ +"the half life of which is two minutes." \ +"" \ +"t1/2 = 0.693/k where k denotes kf" +call /kinetics/Lambda-cl_gene/Lambda-cl_degradation/notes LOAD \ +"This reaction denotes the degradation of Lambda cl" \ +"the half life of which is ten minutes." \ +"t1/2 = 0.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/notes LOAD \ +"This represents the promoter " \ +"with both of its sites bound by the inhibitor." \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1/notes LOAD \ +"Transcription of the Lambda cl gene" \ +"with both its promoter sites activated." \ +"" \ +"Rates from Box 1" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lambda-cl_gene/Lambda-cl/notes LOAD \ +"Lambda-cl translated from lcl m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac." \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Translation of the lac mRNA." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al (2000)" \ +"Nature 403: 335-338" +call /kinetics/Lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the lac m-RNA," \ +"the half life of which is two minutes." \ +"t1/2 = 0.693/k where k denotes kf" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/Lac_gene/Lac_operator/notes LOAD \ +"The Lac operator under normal conditions" \ +"drives transcription of Lac" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription/notes LOAD \ +"Basal transcription of the Lac gene." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Lac_operator_1st_bound/notes LOAD \ +"This represents the promoter " \ +"with one of its sites bound by the inhibitor." \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription/notes LOAD \ +"Transcription of the lac gene " \ +"with only one of its promoter sites activated." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000) N" \ +"Nature 403: 335-338" +call /kinetics/Lac_gene/Lac_operator_2nd_bound/notes LOAD \ +"This represents the promoter " \ +"with both of its sites bound by the inhibitor." \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1/notes LOAD \ +"Transcription of the Lac gene " \ +"with both its promoter sites activated." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000) " \ +"Nature 403: 335-338" +call /kinetics/Lac_gene/Lac_degradation/notes LOAD \ +"This reaction denotes the degradation of Lac" \ +"the half life of which is ten minutes." \ +"t1/2 = 0.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Degraded_lac/notes LOAD \ +"Degradation product of Lac protein" +call /kinetics/Lac_gene/Lac_operator_inhibition_reaction/notes LOAD \ +"It signifies the first binding of the repressor" \ +"with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 " \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1]/notes LOAD \ +"It signifies the second binding of the repressor" \ +"with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 " \ +"Elowitz, M. et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lac_gene/Lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of Tet R" \ +"the half life of which is ten minutes." \ +"t1/2 = 0.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The TetR operator under normal conditions" \ +"drives transcription of TetR" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription/notes LOAD \ +"Basal transcription of the Tet R gene." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator_1st_bound/notes LOAD \ +"This represents the promoter " \ +"with one of its sites bound by the inhibitor" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription/notes LOAD \ +"Transcription of the TetR gene " \ +"with only one of its promoter sites activated." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator_2nd_bound/notes LOAD \ +"This represents the promoter " \ +"with both of its sites bound by the inhibitor." \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1/notes LOAD \ +"Transcription of the TetR gene " \ +"with both its promoter sites activated." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/tetR_mRNA/notes LOAD \ +"The mRNA transcribed by the TetR operator" \ +"" \ +"Elowitz, M, et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/TetR_gene/tetR_mRNA/tetR_translation/notes LOAD \ +"Translation of the tetR mRNA." \ +"" \ +"Rates from Box 1 " \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/tetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the tetR m-RNA," \ +"the half life of which is two minutes." \ +"t1/2 = 0.693/k where k denotes kf" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/Degraded_tetR_mRNA/notes LOAD \ +"Degradation product of tetR m-RNA" +call /kinetics/TetR_gene/Degraded_TetR/notes LOAD \ +"Degradation product of TetR protein" +call /kinetics/TetR_gene/TetR_operator_inhibition_reaction/notes LOAD \ +"It signifies the first binding of the repressor " \ +"with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 " \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1]/notes LOAD \ +"It signifies the second binding of the repressor" \ +"with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 " \ +"Elowitz, M. et al. (2000) " \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"TetR translated from tetR m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz, M. et al. (2000)" \ +"Nature 403:335-338" +call /kinetics/doqcsinfo/notes LOAD \ +"This is a network model termed as Repressilator in which LacI inhibit transcription of tetR which in turn inhibit transcription of Lambda phage. This model simulates the result as per the Fig 1c of the paper : Elowitz MB, Leibler S., Nature. 2000 Jan 20;403(6767):335-8." +complete_loading diff --git a/examples/genesis/acc68.png b/examples/genesis/acc68.png new file mode 100644 index 0000000000000000000000000000000000000000..5107e0b6e065c9cfe631ed2695b4f94130b1db79 GIT binary patch literal 152172 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

W96FiY^(@oB20!@`^GR_dGnNW#-_avYhs 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 ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/chan_p.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 7 0 0 1 +simundump xplot /graphs/conc2/Ca_CaM_CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 +simundump xcoredraw /edit/draw 0 -4 7 -7 6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"Very simplified calcium-to-kinase model for a test multiscale" \ +"model." +addmsg /kinetics/Ca_bind_CaM /kinetics/CaM REAC A B +addmsg /kinetics/Ca_bind_CaM /kinetics/Ca_CaM REAC B A +addmsg /kinetics/CaM_bind_CaMKII /kinetics/Ca_CaM REAC A B +addmsg /kinetics/Ca_bind_CaM /kinetics/Ca REAC A B +addmsg /kinetics/Ca_bind_CaM /kinetics/Ca REAC A B +addmsg /kinetics/Ca_CaM /kinetics/CaM_bind_CaMKII SUBSTRATE n +addmsg /kinetics/CaMKII /kinetics/CaM_bind_CaMKII SUBSTRATE n +addmsg /kinetics/Ca_CaM_CaMKII /kinetics/CaM_bind_CaMKII PRODUCT n +addmsg /kinetics/CaM_bind_CaMKII /kinetics/CaMKII REAC A B +addmsg /kinetics/CaM_bind_CaMKII /kinetics/Ca_CaM_CaMKII REAC B A +addmsg /kinetics/Ca_CaM_CaMKII/kinase /kinetics/Ca_CaM_CaMKII REAC eA B +addmsg /kinetics/Ca_CaM_CaMKII /kinetics/Ca_CaM_CaMKII/kinase ENZYME n +addmsg /kinetics/chan /kinetics/Ca_CaM_CaMKII/kinase SUBSTRATE n +addmsg /kinetics/Ca_CaM_CaMKII/kinase /kinetics/chan REAC sA B +addmsg /kinetics/dephosph /kinetics/chan REAC B A +addmsg /kinetics/Ca_CaM_CaMKII/kinase /kinetics/chan_p MM_PRD pA +addmsg /kinetics/dephosph /kinetics/chan_p REAC A B +addmsg /kinetics/Ca /kinetics/Ca_bind_CaM SUBSTRATE n +addmsg /kinetics/Ca /kinetics/Ca_bind_CaM SUBSTRATE n +addmsg /kinetics/CaM /kinetics/Ca_bind_CaM SUBSTRATE n +addmsg /kinetics/Ca_CaM /kinetics/Ca_bind_CaM PRODUCT n +addmsg /kinetics/chan_p /kinetics/dephosph SUBSTRATE n +addmsg /kinetics/chan /kinetics/dephosph PRODUCT n +addmsg /kinetics/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *blue +addmsg /kinetics/chan_p /graphs/conc2/chan_p.Co PLOT Co *chan_p.Co *7 +addmsg /kinetics/Ca_CaM_CaMKII /graphs/conc2/Ca_CaM_CaMKII.Co PLOT Co *Ca_CaM_CaMKII.Co *blue +enddump +// End of dump + +call /kinetics/Ca_bind_CaM/notes LOAD \ +"This should actually be 4th order in Ca. Using 2nd order here" \ +"for simplicity and to lessen numerical stiffness." +complete_loading diff --git a/examples/genesis/enz_classical_explicit.g b/examples/genesis/enz_classical_explicit.g new file mode 100644 index 0000000..f04e9c3 --- /dev/null +++ b/examples/genesis/enz_classical_explicit.g @@ -0,0 +1,138 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Jul 15 11:23:30 2012 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.01 +CONTROLDT = 5 +PLOTDT = 1 +MAXTIME = 100 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 0 +DEFAULT_VOL = 1.6667e-21 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ + 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump kpool /kinetics/S1 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry blue \ + black -5 1 0 +simundump text /kinetics/S1/notes 0 "" +call /kinetics/S1/notes LOAD \ +"" +simundump kpool /kinetics/P1 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 25 black \ + 4 2 0 +simundump text /kinetics/P1/notes 0 "" +call /kinetics/P1/notes LOAD \ +"" +simundump kpool /kinetics/S2 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 3 black \ + -5 -2 0 +simundump text /kinetics/S2/notes 0 "" +call /kinetics/S2/notes LOAD \ +"" +simundump kpool /kinetics/P2 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 62 black \ + 5 -2 0 +simundump text /kinetics/P2/notes 0 "" +call /kinetics/P2/notes LOAD \ +"" +simundump kpool /kinetics/E1_explicit 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry \ + 48 black 0 8 0 +simundump text /kinetics/E1_explicit/notes 0 "" +call /kinetics/E1_explicit/notes LOAD \ +"" +simundump kenz /kinetics/E1_explicit/explicit 0 0 0 0 0 1 0.2 0.8 0.2 0 0 "" \ + red 48 "" 0 6 0 +simundump text /kinetics/E1_explicit/explicit/notes 0 "" +call /kinetics/E1_explicit/explicit/notes LOAD \ +"" +simundump kpool /kinetics/E2_class 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 33 \ + black 0 -7 0 +simundump text /kinetics/E2_class/notes 0 "" +call /kinetics/E2_class/notes LOAD \ +"" +simundump kenz /kinetics/E2_class/classical 0 0 0 0 0 1 0.2 0.8 0.2 0 1 "" \ + red 33 "" 0 -5 0 +simundump text /kinetics/E2_class/classical/notes 0 "" +call /kinetics/E2_class/classical/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 100 0 1 0 +simundump xgraph /graphs/conc2 0 0 100 0 1 0 +simundump xplot /graphs/conc1/S1.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/S2.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 3 0 0 1 +simundump xplot /graphs/conc1/E1_explicit.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 48 0 0 1 +simundump xplot /graphs/conc1/E2_class.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 33 0 0 1 +simundump xplot /graphs/conc2/P2.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc2/P1.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 25 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 +simundump xcoredraw /edit/draw 0 -7 7 -9 10 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +addmsg /kinetics/E1_explicit/explicit /kinetics/S1 REAC sA B +addmsg /kinetics/E1_explicit/explicit /kinetics/P1 MM_PRD pA +addmsg /kinetics/E2_class/classical /kinetics/S2 REAC sA B +addmsg /kinetics/E2_class/classical /kinetics/P2 MM_PRD pA +addmsg /kinetics/E1_explicit/explicit /kinetics/E1_explicit REAC eA B +addmsg /kinetics/E1_explicit /kinetics/E1_explicit/explicit ENZYME n +addmsg /kinetics/S1 /kinetics/E1_explicit/explicit SUBSTRATE n +addmsg /kinetics/E2_class /kinetics/E2_class/classical ENZYME n +addmsg /kinetics/S2 /kinetics/E2_class/classical SUBSTRATE n +addmsg /kinetics/S1 /graphs/conc1/S1.Co PLOT Co *S1.Co *blue +addmsg /kinetics/S2 /graphs/conc1/S2.Co PLOT Co *S2.Co *3 +addmsg /kinetics/E1_explicit /graphs/conc1/E1_explicit.Co PLOT Co *E1_explicit.Co *48 +addmsg /kinetics/E2_class /graphs/conc1/E2_class.Co PLOT Co *E2_class.Co *33 +addmsg /kinetics/P2 /graphs/conc2/P2.Co PLOT Co *P2.Co *62 +addmsg /kinetics/P1 /graphs/conc2/P1.Co PLOT Co *P1.Co *25 +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/enz_rea.g b/examples/genesis/enz_rea.g new file mode 100644 index 0000000..9f5dcda --- /dev/null +++ b/examples/genesis/enz_rea.g @@ -0,0 +1,88 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Mon Jul 9 11:42:22 2012 + +include kkit {argv 1} + +FASTDT = 1e-06 +SIMDT = 0.0001 +CONTROLDT = 0.01 +PLOTDT = 0.01 +MAXTIME = 1 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1.6667e-21 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ + 0 0 +simundump kpool /kinetics/a 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry blue black \ + -2 1 0 +simundump kpool /kinetics/b 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 60 black 2 \ + 1 0 +simundump kpool /kinetics/c 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 47 black 0 \ + -2 0 +simundump kenz /kinetics/c/kenz 0 0 0 0 0 1 0.5 0.4 0.1 0 0 "" red 47 "" 0 -1 \ + 0 +simundump kreac /kinetics/kreac 0 0.01 0.1 "" white black 0 2 0 +simundump xgraph /graphs/conc1 0 0 1 0 1 0 +simundump xgraph /graphs/conc2 0 0 1 0 1 0 +simundump xplot /graphs/conc1/a.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/b.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 60 0 0 1 +simundump xplot /graphs/conc2/c.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 1 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 1 0 1 0 +simundump xcoredraw /edit/draw 0 -4 4 -4 4 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +addmsg /kinetics/kreac /kinetics/a REAC A B +addmsg /kinetics/c/kenz /kinetics/a REAC sA B +addmsg /kinetics/kreac /kinetics/b REAC B A +addmsg /kinetics/c/kenz /kinetics/b MM_PRD pA +addmsg /kinetics/c/kenz /kinetics/c REAC eA B +addmsg /kinetics/c /kinetics/c/kenz ENZYME n +addmsg /kinetics/a /kinetics/c/kenz SUBSTRATE n +addmsg /kinetics/a /kinetics/kreac SUBSTRATE n +addmsg /kinetics/b /kinetics/kreac PRODUCT n +addmsg /kinetics/a /graphs/conc1/a.Co PLOT Co *a.Co *blue +addmsg /kinetics/b /graphs/conc2/b.Co PLOT Co *b.Co *60 +addmsg /kinetics/c /graphs/conc2/c.Co PLOT Co *c.Co *47 +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/kkit_objects_example.g b/examples/genesis/kkit_objects_example.g new file mode 100644 index 0000000..de66fc9 --- /dev/null +++ b/examples/genesis/kkit_objects_example.g @@ -0,0 +1,195 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Wed Mar 19 11:08:42 2014 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.01 +CONTROLDT = 5 +PLOTDT = 0.1 +MAXTIME = 20 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 0 +DEFAULT_VOL = 1.6667e-21 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 3 \ + -7 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump kpool /kinetics/B 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 62 black 1 \ + 1 0 +simundump text /kinetics/B/notes 0 "" +call /kinetics/B/notes LOAD \ +"" +simundump kpool /kinetics/A 0 0 2 2 2 2 0 0 1 0 /kinetics/geometry blue black \ + -3 1 0 +simundump text /kinetics/A/notes 0 "" +call /kinetics/A/notes LOAD \ +"" +simundump kpool /kinetics/tot1 0 0 0 2 2 0 0 0 1 0 /kinetics/geometry 47 \ + black -1 -2 0 +simundump text /kinetics/tot1/notes 0 "" +call /kinetics/tot1/notes LOAD \ +"" +simundump kpool /kinetics/C 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 56 black 5 \ + 1 0 +simundump text /kinetics/C/notes 0 "" +call /kinetics/C/notes LOAD \ +"" +simundump xtab /kinetics/xtab 0 0 0 1 1 0 "" edit_xtab "" red 0 0 0 1 -1 7 0 +loadtab /kinetics/xtab table 1 100 0 10 \ + 1 1.0628 1.1253 1.1874 1.2487 1.309 1.3681 1.4258 1.4817 1.5358 1.5878 \ + 1.6374 1.6845 1.729 1.7705 1.809 1.8443 1.8763 1.9048 1.9298 1.951 1.9686 \ + 1.9823 1.9921 1.998 2 1.998 1.9921 1.9823 1.9686 1.951 1.9298 1.9048 1.8763 \ + 1.8443 1.809 1.7705 1.729 1.6846 1.6375 1.5878 1.5358 1.4818 1.4258 1.3681 \ + 1.309 1.2487 1.1874 1.1254 1.0628 0.99999 0.93723 0.87462 0.81261 0.75133 \ + 0.69103 0.63186 0.57423 0.51829 0.46416 0.41222 0.36261 0.31543 0.27104 \ + 0.22951 0.19097 0.15567 0.12371 0.095158 0.070223 0.048953 0.031407 0.017712 \ + 0.0078885 0.0019706 0 0.001972 0.0078787 0.017716 0.031413 0.048929 0.070231 \ + 0.095168 0.12367 0.15569 0.19098 0.22946 0.27105 0.31545 0.36255 0.41224 \ + 0.46417 0.51822 0.57425 0.63188 0.69096 0.75135 0.81263 0.87465 0.93716 1 +simundump text /kinetics/xtab/notes 0 "" +call /kinetics/xtab/notes LOAD \ +"" +simundump kpool /kinetics/D 0 0 0 0 0 0 0 0 1 2 /kinetics/geometry 25 black \ + -3 5 0 +simundump text /kinetics/D/notes 0 "" +call /kinetics/D/notes LOAD \ +"" +simundump kreac /kinetics/Reac1 0 0.2 0.1 "" white black -1 3 0 +simundump text /kinetics/Reac1/notes 0 "" +call /kinetics/Reac1/notes LOAD \ +"" +simundump kreac /kinetics/Reac2 0 0.1 0 "" white black 3 3 0 +simundump text /kinetics/Reac2/notes 0 "" +call /kinetics/Reac2/notes LOAD \ +"" +simundump kpool /kinetics/E 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 1 black 9 \ + 1 0 +simundump text /kinetics/E/notes 0 "" +call /kinetics/E/notes LOAD \ +"" +simundump kpool /kinetics/MassActionEnz 0 0 1 1 1 1 0 0 1 0 \ + /kinetics/geometry 28 black 7 5 0 +simundump text /kinetics/MassActionEnz/notes 0 "" +call /kinetics/MassActionEnz/notes LOAD \ +"" +simundump kenz /kinetics/MassActionEnz/e1 0 0 0 0 0 1 1 4 1 0 0 "" red 28 "" \ + 7 3 0 +simundump text /kinetics/MassActionEnz/e1/notes 0 "" +call /kinetics/MassActionEnz/e1/notes LOAD \ +"" +simundump kpool /kinetics/MM_Enz 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 22 \ + black 6 -1 0 +simundump text /kinetics/MM_Enz/notes 0 "" +call /kinetics/MM_Enz/notes LOAD \ +"" +simundump kenz /kinetics/MM_Enz/e2 0 0 0 0 0 1 1 4 1 0 1 "" red 22 "" 7 -1 0 +simundump text /kinetics/MM_Enz/e2/notes 0 "" +call /kinetics/MM_Enz/e2/notes LOAD \ +"" +simundump kpool /kinetics/F 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry blue black \ + 9 -3 0 +simundump text /kinetics/F/notes 0 "" +call /kinetics/F/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 20 0 2 0 +simundump xgraph /graphs/conc2 0 0 20 0 2 0 +simundump xplot /graphs/conc1/A.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/B.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc2/tot1.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/C.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 56 0 0 1 +simundump xplot /graphs/conc2/D.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 25 0 0 1 +simundump xplot /graphs/conc2/E.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/F.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 20 0 1.2 0 +simundump xgraph /moregraphs/conc4 0 0 20 0 1.2 0 +simundump xcoredraw /edit/draw 0 -5 11 -9 9 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +addmsg /kinetics/Reac1 /kinetics/B REAC B A +addmsg /kinetics/Reac2 /kinetics/B REAC A B +addmsg /kinetics/Reac2 /kinetics/B REAC A B +addmsg /kinetics/Reac1 /kinetics/A REAC A B +addmsg /kinetics/A /kinetics/tot1 SUMTOTAL n nInit +addmsg /kinetics/B /kinetics/tot1 SUMTOTAL n nInit +addmsg /kinetics/Reac2 /kinetics/C REAC B A +addmsg /kinetics/MassActionEnz/e1 /kinetics/C REAC sA B +addmsg /kinetics/xtab /kinetics/D SLAVE output +addmsg /kinetics/Reac1 /kinetics/D REAC A B +addmsg /kinetics/A /kinetics/Reac1 SUBSTRATE n +addmsg /kinetics/B /kinetics/Reac1 PRODUCT n +addmsg /kinetics/D /kinetics/Reac1 SUBSTRATE n +addmsg /kinetics/C /kinetics/Reac2 PRODUCT n +addmsg /kinetics/B /kinetics/Reac2 SUBSTRATE n +addmsg /kinetics/B /kinetics/Reac2 SUBSTRATE n +addmsg /kinetics/MassActionEnz/e1 /kinetics/E MM_PRD pA +addmsg /kinetics/MM_Enz/e2 /kinetics/E REAC sA B +addmsg /kinetics/MassActionEnz/e1 /kinetics/MassActionEnz REAC eA B +addmsg /kinetics/MassActionEnz /kinetics/MassActionEnz/e1 ENZYME n +addmsg /kinetics/C /kinetics/MassActionEnz/e1 SUBSTRATE n +addmsg /kinetics/MM_Enz /kinetics/MM_Enz/e2 ENZYME n +addmsg /kinetics/E /kinetics/MM_Enz/e2 SUBSTRATE n +addmsg /kinetics/MM_Enz/e2 /kinetics/F MM_PRD pA +addmsg /kinetics/A /graphs/conc1/A.Co PLOT Co *A.Co *blue +addmsg /kinetics/B /graphs/conc1/B.Co PLOT Co *B.Co *62 +addmsg /kinetics/tot1 /graphs/conc2/tot1.Co PLOT Co *tot1.Co *47 +addmsg /kinetics/C /graphs/conc2/C.Co PLOT Co *C.Co *56 +addmsg /kinetics/D /graphs/conc2/D.Co PLOT Co *D.Co *25 +addmsg /kinetics/E /graphs/conc2/E.Co PLOT Co *E.Co *1 +addmsg /kinetics/F /graphs/conc2/F.Co PLOT Co *F.Co *blue +enddump +// End of dump + +setfield /kinetics/xtab table->dx 0.1 +setfield /kinetics/xtab table->invdx 10 +complete_loading diff --git a/examples/genesis/reaction.g b/examples/genesis/reaction.g new file mode 100644 index 0000000..1f93a52 --- /dev/null +++ b/examples/genesis/reaction.g @@ -0,0 +1,76 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sat Jul 14 05:01:10 2012 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.01 +CONTROLDT = 5 +PLOTDT = 1 +MAXTIME = 100 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 0 +DEFAULT_VOL = 1.6667e-21 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simundump geometry /kinetics/geometry 0 1.6667e-19 3 sphere "" white black 0 \ + 0 0 +simundump kreac /kinetics/kreac 0 0.1 0.1 "" 45 black -1 4 0 +simundump kpool /kinetics/Sub 0 0 1 1 100 100 0 0 100 0 /kinetics/geometry \ + blue black -6 1 0 +simundump kpool /kinetics/Prd 0 0 0 0 0 0 0 0 100 0 /kinetics/geometry 60 \ + black 4 0 0 +simundump xgraph /graphs/conc1 0 0 99 0.001 0.999 0 +simundump xgraph /graphs/conc2 0 0 100 0 1 0 +simundump xplot /graphs/conc1/Sub.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Prd.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 60 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 +simundump xcoredraw /edit/draw 0 -6 4 -2 6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +addmsg /kinetics/Sub /kinetics/kreac SUBSTRATE n +addmsg /kinetics/Prd /kinetics/kreac PRODUCT n +addmsg /kinetics/kreac /kinetics/Sub REAC A B +addmsg /kinetics/kreac /kinetics/Prd REAC B A +addmsg /kinetics/Sub /graphs/conc1/Sub.Co PLOT Co *Sub.Co *blue +addmsg /kinetics/Prd /graphs/conc1/Prd.Co PLOT Co *Prd.Co *60 +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/spineCa_CaM_diffn.g b/examples/genesis/spineCa_CaM_diffn.g new file mode 100644 index 0000000..7b2badb --- /dev/null +++ b/examples/genesis/spineCa_CaM_diffn.g @@ -0,0 +1,696 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Aug 21 08:50:42 2016 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 1000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 2e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry 53 0 -16 6 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ + /kinetics/geometry 55 black -10 2 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_stim 0 50 1 "" white black -13 4 0 +simundump text /kinetics/PSD/Ca_stim/notes 0 "" +call /kinetics/PSD/Ca_stim/notes LOAD \ +"" +simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 -28 11 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM 1 5e-13 40 40 240 240 0 0 6 0 \ + /kinetics/geometry pink blue -24 13 0 +simundump text /kinetics/PSD/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.3 10 "" white blue -10 \ + 10 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10\n24 Sep 2015\nThis is a bit too low affinity. Changing to match K2 at \nKd = 2.8." +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ +"24 Sep 2015" \ +"This is a bit too low affinity. Changing to match K2 at " \ +"Kd = 2.8." +simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry hotpink blue -12 13 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ + -22 10 0 +simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue -16 13 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ + -14 10 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ + blue -18 10 0 +simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue -20 13 0 +simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue blue -7 13 0 +simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ + 11 -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 2e-11 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry 54 40 -8 -20 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ + /kinetics/geometry 55 40 -2 -20 0 +simundump text /kinetics/DEND/Ca_input/notes 0 "" +call /kinetics/DEND/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/DEND/Ca_stim 0 50 1 "" white 40 -5 -19 0 +simundump text /kinetics/DEND/Ca_stim/notes 0 "" +call /kinetics/DEND/Ca_stim/notes LOAD \ +"" +simundump group /kinetics/DEND/CaM 1 blue 13 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 -21 -15 0 +simundump text /kinetics/DEND/CaM/notes 0 "" +call /kinetics/DEND/CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaM/CaM 1 5e-13 2 2 1200 1200 0 0 600 0 \ + /kinetics/geometry pink blue -17 -13 0 +simundump text /kinetics/DEND/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/DEND/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-Ca3-bind-Ca 1 0.003 10 "" white blue \ + -3 -16 0 +simundump text /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/DEND/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry hotpink blue -5 -13 0 +simundump text /kinetics/DEND/CaM/CaM-Ca3/notes 0 "" +call /kinetics/DEND/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-bind-Ca 1 0.014141 8.4853 "" white \ + blue -15 -16 0 +simundump text /kinetics/DEND/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/DEND/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry pink blue -9 -13 0 +simundump text /kinetics/DEND/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/DEND/CaM/CaM-Ca2-bind-Ca 1 0.006 10 "" white blue \ + -7 -16 0 +simundump text /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-Ca-bind-Ca 1 0.014141 8.4853 "" white \ + blue -11 -16 0 +simundump text /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/DEND/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry pink blue -13 -13 0 +simundump text /kinetics/DEND/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/DEND/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry blue blue 0 -13 0 +simundump text /kinetics/DEND/CaM/CaM-Ca4/notes 0 "" +call /kinetics/DEND/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaM/CaM_x2 0 10 10 "" white black -27 -13 0 +simundump text /kinetics/DEND/CaM/CaM_x2/notes 0 "" +call /kinetics/DEND/CaM/CaM_x2/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[1] blue blue -36 -15 0 +simundump text /kinetics/DEND/CaM/CaM_xchange/notes 0 "" +call /kinetics/DEND/CaM/CaM_xchange/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca 0 2e-11 0.11111 0.11111 6 6 0 0 54 0 \ + /kinetics/geometry[1] 50 yellow -12 -11 0 +simundump text /kinetics/SPINE/Ca/notes 0 "" +call /kinetics/SPINE/Ca/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 -24 -7 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM 1 5e-13 40 40 2160 2160 0 0 54 0 \ + /kinetics/geometry pink blue -20 -5 0 +simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.033333 10 "" white \ + blue -6 -8 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry hotpink blue -8 -5 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ + blue -18 -8 0 +simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue -12 -5 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ + blue -10 -8 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ + blue -14 -8 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue -16 -5 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry blue blue -3 -5 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM_x2 0 1 100 "" white black -23 1 0 +simundump text /kinetics/SPINE/CaM/CaM_x2/notes 0 "" +call /kinetics/SPINE/CaM/CaM_x2/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[2] blue black -28 -2 0 +simundump text /kinetics/SPINE/CaM/CaM_xchange/notes 0 "" +call /kinetics/SPINE/CaM/CaM_xchange/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2923 0 38.53 0 +simundump xgraph /graphs/conc2 0 0 2923 0 16.804 0 +simundump xgraph /moregraphs/conc3 0 0 2923 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 2923 0 4 0 +simundump xcoredraw /edit/draw 0 -38 31 -32 15 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"" \ +"4 Aug 2016: CaM_3compt.g: Based on CaMKII_merged91.g, just have" \ +"the CaM part in all 3 compartments, for merging." \ +"CaM_3compt1.g: Eliminated Ca and Ca input too." \ +"" \ +"4 Aug 2016: Merged CaM_3compt1.g into NN_mapk6.g, some " \ +"elimination of Ca buffer pools. All now handled by CaM." \ +"" \ +"15 Aug 2016: Doubled CaM levels throughout, use as a surrogate" \ +"for other Ca buffers." \ +"" \ +"21 Aug 2016: Ca and CaM in spine and dendrite for diffusive" \ +"calculations with CaM acting as buffer." \ +"" +addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_stim SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_stim PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca REAC B A +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/Ca REAC A B +addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B +addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n +addmsg /kinetics/DEND/Ca /kinetics/DEND/Ca_stim PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM REAC A B +addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM_x2 SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM_xchange /kinetics/DEND/CaM/CaM_x2 PRODUCT n +addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM_xchange REAC B A +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM_x2 SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM_xchange /kinetics/SPINE/CaM/CaM_x2 PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM_xchange REAC B A +enddump +// End of dump + +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ +"24 Sep 2015" \ +"This is a bit too low affinity. Changing to match K2 at " \ +"Kd = 2.8." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +complete_loading diff --git a/examples/genesis/spineCa_diffn.g b/examples/genesis/spineCa_diffn.g new file mode 100644 index 0000000..8895c87 --- /dev/null +++ b/examples/genesis/spineCa_diffn.g @@ -0,0 +1,151 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Aug 21 08:51:57 2016 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 1000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 2e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry 53 0 -16 6 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ + /kinetics/geometry 55 black -10 2 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_stim 0 50 1 "" white black -13 4 0 +simundump text /kinetics/PSD/Ca_stim/notes 0 "" +call /kinetics/PSD/Ca_stim/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ + 11 -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 2e-11 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry 54 40 -8 -20 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ + /kinetics/geometry 55 40 -2 -20 0 +simundump text /kinetics/DEND/Ca_input/notes 0 "" +call /kinetics/DEND/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/DEND/Ca_stim 0 50 1 "" white 40 -5 -19 0 +simundump text /kinetics/DEND/Ca_stim/notes 0 "" +call /kinetics/DEND/Ca_stim/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca 0 2e-11 0.11111 0.11111 6 6 0 0 54 0 \ + /kinetics/geometry[1] 50 yellow -12 -11 0 +simundump text /kinetics/SPINE/Ca/notes 0 "" +call /kinetics/SPINE/Ca/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2923 0 38.53 0 +simundump xgraph /graphs/conc2 0 0 2923 0 16.804 0 +simundump xgraph /moregraphs/conc3 0 0 2923 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 2923 0 4 0 +simundump xcoredraw /edit/draw 0 -18 31 -32 14 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"" \ +"4 Aug 2016: CaM_3compt.g: Based on CaMKII_merged91.g, just have" \ +"the CaM part in all 3 compartments, for merging." \ +"CaM_3compt1.g: Eliminated Ca and Ca input too." \ +"" \ +"4 Aug 2016: Merged CaM_3compt1.g into NN_mapk6.g, some " \ +"elimination of Ca buffer pools. All now handled by CaM." \ +"" \ +"15 Aug 2016: Doubled CaM levels throughout, use as a surrogate" \ +"for other Ca buffers." \ +"" \ +"21 Aug 2016: Ca in spine and dendrite for diffusive" \ +"calculations." \ +"" +addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca REAC B A +addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_stim SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_stim PRODUCT n +addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca REAC B A +addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B +addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n +addmsg /kinetics/DEND/Ca /kinetics/DEND/Ca_stim PRODUCT n +enddump +// End of dump + +complete_loading diff --git a/examples/genesis/traff_nn_diff_BIS.g b/examples/genesis/traff_nn_diff_BIS.g new file mode 100755 index 0000000..2e91bf6 --- /dev/null +++ b/examples/genesis/traff_nn_diff_BIS.g @@ -0,0 +1,262 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Jul 15 11:46:45 2012 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.002 +CONTROLDT = 5 +PLOTDT = 5 +MAXTIME = 1000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump kreac /kinetics/exo 0 0.0002 0.0002 "" white black 2 7 0 +simundump text /kinetics/exo/notes 0 "" +call /kinetics/exo/notes LOAD \ +"" +simundump kreac /kinetics/endo 0 0.002 0.002 "" white black -6 8 0 +simundump text /kinetics/endo/notes 0 "" +call /kinetics/endo/notes LOAD \ +"" +simundump kpool /kinetics/stot 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry blue \ + black 6 12 0 +simundump text /kinetics/stot/notes 0 "" +call /kinetics/stot/notes LOAD \ +"" +simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ + -8 1 0 +simundump text /kinetics/B/notes 0 "" +call /kinetics/B/notes LOAD \ +"" +simundump kpool /kinetics/B/P 0 0 0.2 0.2 1.2 1.2 0 0 6 0 /kinetics/geometry \ + 4 yellow -2 -2 0 +simundump text /kinetics/B/P/notes 0 "" +call /kinetics/B/P/notes LOAD \ +"" +simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 4.1667 4 1 0 0 "" red 4 "" -2 \ + -1 0 +simundump text /kinetics/B/P/kenz/notes 0 "" +call /kinetics/B/P/kenz/notes LOAD \ +"" +simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -2 -6 0 +simundump text /kinetics/B/basal/notes 0 "" +call /kinetics/B/basal/notes LOAD \ +"" +simundump kpool /kinetics/B/M 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry 62 \ + yellow -6 1 0 +simundump text /kinetics/B/M/notes 0 "" +call /kinetics/B/M/notes LOAD \ +"" +simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ + yellow 2 1 0 +simundump text /kinetics/B/M*/notes 0 "" +call /kinetics/B/M*/notes LOAD \ +"" +simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.83333 4 1 0 0 "" red 28 \ + "" -2 4 0 +simundump text /kinetics/B/M*/kenz/notes 0 "" +call /kinetics/B/M*/kenz/notes LOAD \ +"" +simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 16 \ + 0 +simundump text /kinetics/A/notes 0 "" +call /kinetics/A/notes LOAD \ +"" +simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 0 23 0 +simundump text /kinetics/A/basal/notes 0 "" +call /kinetics/A/basal/notes LOAD \ +"" +simundump kpool /kinetics/A/P 0 0 0.2 0.2 1.2 1.2 0 0 5.9999 0 \ + /kinetics/geometry 3 16 -1 11 0 +simundump text /kinetics/A/P/notes 0 "" +call /kinetics/A/P/notes LOAD \ +"" +simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 4.1667 4 1 0 0 "" red 3 "" \ + -1 12 0 +simundump text /kinetics/A/P/kenz/notes 0 "" +call /kinetics/A/P/kenz/notes LOAD \ +"" +simundump kpool /kinetics/A/M 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 53 \ + 16 -4 18 0 +simundump text /kinetics/A/M/notes 0 "2.235\n" +call /kinetics/A/M/notes LOAD \ +"2.235" \ +"" +simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 47 \ + 16 3 18 0 +simundump text /kinetics/A/M*/notes 0 "" +call /kinetics/A/M*/notes LOAD \ +"" +simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.83335 4 1 0 0 "" red 57 \ + "" 0 20 0 +simundump text /kinetics/A/M*/kenz/notes 0 "" +call /kinetics/A/M*/kenz/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 1000 0.001 3 0 +simundump xgraph /graphs/conc2 0 0 1000 0 3 0 +simundump xplot /graphs/conc1/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc2/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 1000 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 1000 0 1 0 +simundump xcoredraw /edit/draw 0 -11.317 7.317 -4.078 23.873 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"8 Jul 2009. diff_dup_neg_TRI.g. Renamed mols, and a bit of fine-tuning" \ +"of diff_dup_neg_tristable.g" \ +"diff_dup_neg_BIS.g: different parms." \ +"" \ +"26 May 2009. diff_dup_neg_tristable.g" \ +"This is the tristable model with the parameters as predicted by" \ +"diff_dup_noanch.xls." \ +"" \ +"25 May 2009. diff_dup_neg4.g Based on neg4.g, so that both" \ +"parts are neg slope but not bistable." \ +"diff_dup_neg5.g: Based on diff_dup_neg4.g, this one fixes up" \ +"some parameters and is nicely bistable." \ +"" \ +"" \ +"20 May 2009. neg4.g. Based on diff_dup_neg2.g, which turned out" \ +"to be bistable. This one really is not bistable." \ +"" \ +"" \ +"16 May 2009. diff_dup_neg2.g. Based on diff_dup_neg.g, filled" \ +"in rates and diffusion reacs." \ +"" \ +"15 May 2009. diff_dup_bis2.g. Based on diff_dup_bis.g, altered" \ +"rates toward quad stable prediction." \ +"fix_bis1.g: Testing bistability. This variant has range of " \ +"about 30%, from 1.25 to 1.65." \ +"" \ +"diff_dup_neg.g: Based on fix_bis1.g, working out whether it is " \ +"clearly neg slope." \ +"" \ +"13 May 2009. diff_dup_bis.g Based on diff_eq_bis3.g, set up" \ +"duplicate reaction set in the bulk." \ +"" \ +"10 May 2009. diff_eq_bis2.g. Based on diff_eq_bis.g, here I fixed" \ +"up the nasty sumtotal operation and now the C_psd* molecule " \ +"handles its own enzyme site rather than setting up a slave" \ +"pool and using that to do the enzyme." \ +"diff_eq_bis3.g: Based on diff_eq_bis2.g, restored original" \ +"cycling parameters as diff_eq_bis.g" \ +"" \ +"" \ +"9 May 2009. diff_eq_bis.g. Based on min6.g. Implement" \ +"diffusive exchange of equil reaction with bistable." \ +"" \ +"11 Apr 2009: min5.g: Eliminated the anchor protein from min4.g" \ +"min6.g: Replace the entire bulk bistable system" \ +"with a single dephosphorylation reaction." \ +"" \ +"min4.g: Includes trafficking too." \ +"" \ +"min3.g: Includes both bulk and PSD reactions" \ +"" \ +"min2psd.g: Same as min2.g, moved to PSD." \ +"" \ +"min2.g: This version is bistable." +addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/exo PRODUCT n +addmsg /kinetics/B/M /kinetics/endo SUBSTRATE n +addmsg /kinetics/A/M /kinetics/endo PRODUCT n +addmsg /kinetics/A/M /kinetics/stot SUMTOTAL n nInit +addmsg /kinetics/A/M* /kinetics/stot SUMTOTAL n nInit +addmsg /kinetics/A/M*/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/P/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B +addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n +addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n +addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n +addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n +addmsg /kinetics/B/basal /kinetics/B/M REAC A B +addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA +addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B +addmsg /kinetics/endo /kinetics/B/M REAC A B +addmsg /kinetics/B/basal /kinetics/B/M* REAC B A +addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA +addmsg /kinetics/exo /kinetics/B/M* REAC A B +addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n +addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n +addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B +addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n +addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n +addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B +addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA +addmsg /kinetics/A/basal /kinetics/A/M REAC A B +addmsg /kinetics/endo /kinetics/A/M REAC B A +addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA +addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B +addmsg /kinetics/A/basal /kinetics/A/M* REAC B A +addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B +addmsg /kinetics/exo /kinetics/A/M* REAC B A +addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n +addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 +addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 +addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 +addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 +enddump +// End of dump + +call /kinetics/A/M/notes LOAD \ +"2.235" \ +"" +complete_loading diff --git a/examples/genesis/traff_nn_diff_TRI.g b/examples/genesis/traff_nn_diff_TRI.g new file mode 100644 index 0000000..403f566 --- /dev/null +++ b/examples/genesis/traff_nn_diff_TRI.g @@ -0,0 +1,261 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Jul 15 11:47:11 2012 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.002 +CONTROLDT = 5 +PLOTDT = 5 +MAXTIME = 1000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump kreac /kinetics/exo 0 0.00028 0.00028 "" white black 3 11 0 +simundump text /kinetics/exo/notes 0 "" +call /kinetics/exo/notes LOAD \ +"" +simundump kreac /kinetics/endo 0 0.001 0.001 "" white black -6 11 0 +simundump text /kinetics/endo/notes 0 "" +call /kinetics/endo/notes LOAD \ +"" +simundump kpool /kinetics/stot 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry blue \ + black 6 15 0 +simundump text /kinetics/stot/notes 0 "" +call /kinetics/stot/notes LOAD \ +"" +simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ + -7 2 0 +simundump text /kinetics/B/notes 0 "" +call /kinetics/B/notes LOAD \ +"" +simundump kpool /kinetics/B/P 0 0 0.2 0.2 1.2 1.2 0 0 6 0 /kinetics/geometry \ + 4 yellow -2 -2 0 +simundump text /kinetics/B/P/notes 0 "" +call /kinetics/B/P/notes LOAD \ +"" +simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 4.1667 4 1 0 0 "" red 4 "" -2 \ + -1 0 +simundump text /kinetics/B/P/kenz/notes 0 "" +call /kinetics/B/P/kenz/notes LOAD \ +"" +simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -2 -5 0 +simundump text /kinetics/B/basal/notes 0 "" +call /kinetics/B/basal/notes LOAD \ +"" +simundump kpool /kinetics/B/M 0 0 2.8 2.8 16.8 16.8 0 0 6 0 \ + /kinetics/geometry 62 yellow -4 2 0 +simundump text /kinetics/B/M/notes 0 "" +call /kinetics/B/M/notes LOAD \ +"" +simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ + yellow 3 2 0 +simundump text /kinetics/B/M*/notes 0 "" +call /kinetics/B/M*/notes LOAD \ +"" +simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.83333 4 1 0 0 "" red 28 \ + "" 1 5 0 +simundump text /kinetics/B/M*/kenz/notes 0 "" +call /kinetics/B/M*/kenz/notes LOAD \ +"" +simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 20 \ + 0 +simundump text /kinetics/A/notes 0 "" +call /kinetics/A/notes LOAD \ +"" +simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 1 27 0 +simundump text /kinetics/A/basal/notes 0 "" +call /kinetics/A/basal/notes LOAD \ +"" +simundump kpool /kinetics/A/P 0 0 0.2 0.2 1.2 1.2 0 0 5.9999 0 \ + /kinetics/geometry 3 16 0 15 0 +simundump text /kinetics/A/P/notes 0 "" +call /kinetics/A/P/notes LOAD \ +"" +simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 4.1667 4 1 0 0 "" red 3 "" \ + 0 16 0 +simundump text /kinetics/A/P/kenz/notes 0 "" +call /kinetics/A/P/kenz/notes LOAD \ +"" +simundump kpool /kinetics/A/M 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 53 \ + 16 -3 20 0 +simundump text /kinetics/A/M/notes 0 "2.235\n" +call /kinetics/A/M/notes LOAD \ +"2.235" \ +"" +simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 47 \ + 16 5 20 0 +simundump text /kinetics/A/M*/notes 0 "" +call /kinetics/A/M*/notes LOAD \ +"" +simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.83335 4 1 0 0 "" red 57 \ + "" 1 23 0 +simundump text /kinetics/A/M*/kenz/notes 0 "" +call /kinetics/A/M*/kenz/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 1000 0.001 3 0 +simundump xgraph /graphs/conc2 0 0 1000 0 3 0 +simundump xplot /graphs/conc1/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/M.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc2/M*.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 1000 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 1000 0 1 0 +simundump xcoredraw /edit/draw 0 -9 8 -7 29 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"8 Jul 2009. diff_dup_neg_TRI.g. Renamed mols, and a bit of fine-tuning" \ +"of diff_dup_neg_tristable.g" \ +"" \ +"26 May 2009. diff_dup_neg_tristable.g" \ +"This is the tristable model with the parameters as predicted by" \ +"diff_dup_noanch.xls." \ +"" \ +"25 May 2009. diff_dup_neg4.g Based on neg4.g, so that both" \ +"parts are neg slope but not bistable." \ +"diff_dup_neg5.g: Based on diff_dup_neg4.g, this one fixes up" \ +"some parameters and is nicely bistable." \ +"" \ +"" \ +"20 May 2009. neg4.g. Based on diff_dup_neg2.g, which turned out" \ +"to be bistable. This one really is not bistable." \ +"" \ +"" \ +"16 May 2009. diff_dup_neg2.g. Based on diff_dup_neg.g, filled" \ +"in rates and diffusion reacs." \ +"" \ +"15 May 2009. diff_dup_bis2.g. Based on diff_dup_bis.g, altered" \ +"rates toward quad stable prediction." \ +"fix_bis1.g: Testing bistability. This variant has range of " \ +"about 30%, from 1.25 to 1.65." \ +"" \ +"diff_dup_neg.g: Based on fix_bis1.g, working out whether it is " \ +"clearly neg slope." \ +"" \ +"13 May 2009. diff_dup_bis.g Based on diff_eq_bis3.g, set up" \ +"duplicate reaction set in the bulk." \ +"" \ +"10 May 2009. diff_eq_bis2.g. Based on diff_eq_bis.g, here I fixed" \ +"up the nasty sumtotal operation and now the C_psd* molecule " \ +"handles its own enzyme site rather than setting up a slave" \ +"pool and using that to do the enzyme." \ +"diff_eq_bis3.g: Based on diff_eq_bis2.g, restored original" \ +"cycling parameters as diff_eq_bis.g" \ +"" \ +"" \ +"9 May 2009. diff_eq_bis.g. Based on min6.g. Implement" \ +"diffusive exchange of equil reaction with bistable." \ +"" \ +"11 Apr 2009: min5.g: Eliminated the anchor protein from min4.g" \ +"min6.g: Replace the entire bulk bistable system" \ +"with a single dephosphorylation reaction." \ +"" \ +"min4.g: Includes trafficking too." \ +"" \ +"min3.g: Includes both bulk and PSD reactions" \ +"" \ +"min2psd.g: Same as min2.g, moved to PSD." \ +"" \ +"min2.g: This version is bistable." +addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/exo PRODUCT n +addmsg /kinetics/B/M /kinetics/endo SUBSTRATE n +addmsg /kinetics/A/M /kinetics/endo PRODUCT n +addmsg /kinetics/A/M /kinetics/stot SUMTOTAL n nInit +addmsg /kinetics/A/M* /kinetics/stot SUMTOTAL n nInit +addmsg /kinetics/A/M*/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/A/P/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit +addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B +addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n +addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n +addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n +addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n +addmsg /kinetics/B/basal /kinetics/B/M REAC A B +addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA +addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B +addmsg /kinetics/endo /kinetics/B/M REAC A B +addmsg /kinetics/B/basal /kinetics/B/M* REAC B A +addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B +addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA +addmsg /kinetics/exo /kinetics/B/M* REAC A B +addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n +addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n +addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B +addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n +addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n +addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B +addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA +addmsg /kinetics/A/basal /kinetics/A/M REAC A B +addmsg /kinetics/endo /kinetics/A/M REAC B A +addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA +addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B +addmsg /kinetics/A/basal /kinetics/A/M* REAC B A +addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B +addmsg /kinetics/exo /kinetics/A/M* REAC B A +addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n +addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n +addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 +addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 +addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 +addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 +enddump +// End of dump + +call /kinetics/A/M/notes LOAD \ +"2.235" \ +"" +complete_loading diff --git a/examples/genesis/traff_nn_diff_TRI.png b/examples/genesis/traff_nn_diff_TRI.png new file mode 100644 index 0000000000000000000000000000000000000000..9a074a89a036b811c96af3d55629babf88bfa0ec GIT binary patch literal 39569 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 g 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 Ix^>9^0L-DUPyhe` literal 0 HcmV?d00001 diff --git a/examples/hopfield/guiHopfield.py b/examples/hopfield/guiHopfield.py new file mode 100644 index 0000000..1df12e5 --- /dev/null +++ b/examples/hopfield/guiHopfield.py @@ -0,0 +1,214 @@ +import os +import sys +from PyQt4 import QtCore,QtGui +from PyQt4.QtCore import QEvent, Qt +import numpy as np +from hopfield_ui import Ui_MainWindow +from hopfield import HopfieldNetwork + +class DesignerMainWindow(QtGui.QMainWindow, Ui_MainWindow): + """Customization for Qt Designer created window""" + def __init__(self, interpreter=None,parent = None): + # initialization of the superclass + super(DesignerMainWindow, self).__init__(parent) + # setup the GUI --> function generated by pyuic4 + self.setupUi(self) + self.hop = HopfieldNetwork(100) + self.hop.setClocksHopfield() + self.defaultButtonState() + self.mem1 = [] + self.mem2 = [] + self.mem3 = [] + self.mem4 = [] + self.input = [] + self.connectElements() + self.runCount = 0 + self.runPushButton.setEnabled(False) + self.statusbar.showMessage('Hopfield Network Demo') + self.inputChanged = False + + def defaultButtonState(self): + self.mem1PushButton.setEnabled(False) + self.mem2PushButton.setEnabled(False) + self.mem3PushButton.setEnabled(False) + self.mem4PushButton.setEnabled(False) + self.inputPushButton.setEnabled(False) + + def connectElements(self): + self.connect(self.clearDisplayPushButton,QtCore.SIGNAL('clicked()'), self.clearDisplay) + self.connect(self.memorizePushButton,QtCore.SIGNAL('clicked()'),self.memorizePattern) + self.connect(self.randomizePushButton,QtCore.SIGNAL('clicked()'),self.randomizePattern) + self.connect(self.clearMemPushButton,QtCore.SIGNAL('clicked()'),self.clearMemory) + self.connect(self.runPushButton,QtCore.SIGNAL('clicked()'),self.runStep) + self.connect(self.mem1PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem1) + self.connect(self.mem2PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem2) + self.connect(self.mem3PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem3) + self.connect(self.mem4PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem4) + self.connect(self.inputPushButton,QtCore.SIGNAL('clicked()'),self.retriveInput) + self.connect(self.saveInputPushButton,QtCore.SIGNAL('clicked()'),self.saveInput) + self.connect(self.aPushButton,QtCore.SIGNAL('clicked()'),self.retriveA) + self.connect(self.bPushButton,QtCore.SIGNAL('clicked()'),self.retriveB) + self.connect(self.cPushButton,QtCore.SIGNAL('clicked()'),self.retriveC) + self.connect(self.dPushButton,QtCore.SIGNAL('clicked()'),self.retriveD) + self.connect(self.computeSynWeightsPushButton,QtCore.SIGNAL('clicked()'),self.computeAllWeights) + + def saveInput(self): + print 'saving current pattern as input' + inpList = [] + for i in range(100): + exec(('inpList.append(int(self.pushButton_%s.isChecked()))' %i)) + self.input = inpList + self.inputPushButton.setEnabled(True) + self.inputChanged = True + self.runCount = 0 + + def computeAllWeights(self): + self.statusbar.showMessage('Computing synaptic weights') + self.hop.assignAllSynapticWeights() #weights are assigned + self.runPushButton.setEnabled(True) + + def runStep(self): + self.statusbar.showMessage('Running') + + if self.inputChanged: + inputPattern = self.input + self.hop.updateInputs(inputPattern) #input updating + self.hop.mooseReinit() + self.hop.runMooseHopfield(0.0310) + + if self.runCount == 0: + for i in range(100): + if np.any((self.hop.allSpikes[i].vector>0.0)&(self.hop.allSpikes[i].vector<0.0310)): + exec(('self.pushButton_%s.setChecked(True)' %i)) + else: + exec(('self.pushButton_%s.setChecked(False)' %i)) + + else: + self.hop.runMooseHopfield(0.02) + #print 0.0310+(0.02*(self.runCount-1)),(0.0310+(0.02*self.runCount)) + for i in range(100): + if np.any((self.hop.allSpikes[i].vector>(0.0301+(0.02*(self.runCount-1))))&(self.hop.allSpikes[i].vector<(0.0301+(0.02*self.runCount)))): + exec(('self.pushButton_%s.setChecked(True)' %i)) + else: + exec(('self.pushButton_%s.setChecked(False)' %i)) + + self.runCount += 1 + self.statusbar.showMessage('Done Running') + + def retriveMem1(self): + for i in range(100): + exec(('self.pushButton_%s.setChecked(self.mem1[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Mem1') + + def retriveMem2(self): + for i in range(100): + exec(('self.pushButton_%s.setChecked(self.mem2[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Mem2') + + def retriveMem3(self): + for i in range(100): + exec(('self.pushButton_%s.setChecked(self.mem3[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Mem3') + + def retriveMem4(self): + for i in range(100): + exec(('self.pushButton_%s.setChecked(self.mem4[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Mem4') + + def retriveInput(self): + for i in range(100): + exec(('self.pushButton_%s.setChecked(self.input[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Input') + + def retriveA(self): + a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + for i in range(100): + exec(('self.pushButton_%s.setChecked(a[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Sample A') + + def retriveB(self): + b = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + for i in range(100): + exec(('self.pushButton_%s.setChecked(b[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Sample B') + + def retriveC(self): + c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + for i in range(100): + exec(('self.pushButton_%s.setChecked(c[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Sample C') + + def retriveD(self): + d = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + for i in range(100): + exec(('self.pushButton_%s.setChecked(d[int(%s)])' %(i,i))) + self.statusbar.showMessage('Showing Sample D') + + def clearMemory(self): + self.hop.clearAllMemory() + self.clearDisplay() + self.defaultButtonState() + self.mem1 = [] + self.mem2 = [] + self.mem3 = [] + self.input = [] + self.statusbar.showMessage('Cleared all Memory') + self.runPushButton.setEnabled(False) + self.inputPushButton.setEnabled(False) + self.runCount = 0 + + def randomizePattern(self): + r = np.random.randint(2,size=100) + for i in range(100): + exec(('self.pushButton_%s.setChecked(r[int(%s)])' %(i,i))) + + def memorizePattern(self): + pattern = [] + for i in range(100): + exec(('pattern.append(int(self.pushButton_%s.isChecked()))' %i)) + + self.hop.updateWeights(pattern) + + for k in range(100): #very weird that I have to do this! + if pattern[k] == -1: + pattern[k] = 0 + + savedAlready = self.hop.numMemories + if savedAlready == 1: + self.mem1 = pattern + self.mem1PushButton.setEnabled(True) + #print pattern + elif savedAlready == 2: + self.mem2 = pattern + self.mem2PushButton.setEnabled(True) + #print pattern + elif savedAlready == 3: + self.mem3 = pattern + self.mem3PushButton.setEnabled(True) + elif savedAlready == 4: + self.mem4 = pattern + self.mem4PushButton.setEnabled(True) + + self.runPushButton.setEnabled(False) + + self.statusbar.showMessage('New Pattern Memorised') + + def clearDisplay(self): + for i in range(100): + exec(('self.pushButton_%s.setChecked(False)' %i)) + self.statusbar.showMessage('Cleared display') + + +app = QtGui.QApplication(sys.argv) +# instantiate the main window +dmw = DesignerMainWindow() +# show it +dmw.show() +# start the Qt main loop execution, exiting from this script +#http://code.google.com/p/subplot/source/browse/branches/mzViewer/PyMZViewer/mpl_custom_widget.py +#http://eli.thegreenplace.net/files/prog_code/qt_mpl_bars.py.txt +#http://lionel.textmalaysia.com/a-simple-tutorial-on-gui-programming-using-qt-designer-with-pyqt4.html +#http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg13241.html +# with the same return code of Qt application +sys.exit(app.exec_()) + diff --git a/examples/hopfield/hopfield.py b/examples/hopfield/hopfield.py new file mode 100644 index 0000000..870c9b3 --- /dev/null +++ b/examples/hopfield/hopfield.py @@ -0,0 +1,193 @@ +# __BROKEN__ +# +# A demo of a simple hopfield network using leaky integrate and fire neurons +# memory1.csv and memory2.csv have the memory being saved, the synaptic weights +# are set at start according to this memory memory must be a square matrix of +# 0's and 1's only input.csv has partial input given as input to the cells. - +# By C.H.Chaitanya This code is available under GPL3 or greater GNU license + +import moose +import math +import csv +import numpy as np +import matplotlib.pyplot as plt + +class HopfieldNetwork(): + def __init__(self,numberOfNeurons): + self.cells = [] + #self.Vms = [] + self.allSpikes = [] + #self.inTables = [] + self.inSpike = [] + self.numNeurons = numberOfNeurons + self.synWeights = [0]*self.numNeurons*self.numNeurons + self.numMemories = 0 + self.createNetwork() + + def mooseReinit(self): + moose.reinit() + + def clearAllMemory(self): + self.synWeights = [0]*self.numNeurons*self.numNeurons + self.numMemories = 0 + self.clearAllSynapticWeights() + + def readMemoryFile(self, memoryFile): + '''read a memory pattern to save from a file''' + f = open(memoryFile,'r') + testLine = f.readline() + dialect = csv.Sniffer().sniff(testLine) #to get the format of the csv + f.close() + f = open(memoryFile, 'r') + reader = csv.reader(f,dialect) + memory = [] + for row in reader: + for i in row[0:]: + memory.append(int(i)) + f.close() + + return memory + + def updateWeights(self, memory): + for i in range(self.numNeurons): + for j in range(self.numNeurons): + if i != j: + if memory[i] == 0: + memory[i] = -1 + if memory[j] == 0: + memory[j] = -1 + self.synWeights[i*len(memory)+j] += memory[i]*memory[j] + + print self.synWeights[0:100] + self.numMemories += 1 + print self.numMemories, '#number Of saved memories' + + def createNetwork(self): + '''setting up of the cells and their connections''' + hopfield = moose.Neutral('/hopfield') + pg = moose.PulseGen('/hopfield/inPulGen') + + pgTable = moose.Table('/hopfield/inPulGen/pgTable') + moose.connect(pgTable, 'requestOut', pg, 'getOutputValue') + + pg.firstDelay = 10e-3 + pg.firstWidth = 2e-03 + pg.firstLevel = 3.0 + pg.secondDelay = 1.0 + + for i in range(self.numNeurons): + cellPath = '/hopfield/cell_'+str(i) + cell = moose.IntFire(cellPath) + cell.setField('tau',10e-3) + cell.setField('refractoryPeriod', 5e-3) + cell.setField('thresh', 0.99) + cell.synapse.num = self.numNeurons + #definite firing everytime ip is given + cell.synapse[i].weight = 1.00 #synapse i = input synapse + cell.synapse[i].delay = 0.0 #1e-3 #instantaneous + + #VmVals = moose.Table(cellPath+'/Vm_cell_'+str(i)) + #moose.connect(VmVals, 'requestOut', cell, 'getVm') + spikeVals = moose.Table(cellPath+'/spike_cell_'+str(i)) + moose.connect(cell, 'spike', spikeVals, 'input') + + inSpkGen = moose.SpikeGen(cellPath+'/inSpkGen') + inSpkGen.setField('edgeTriggered', True) + inSpkGen.setField('threshold', 2.0) + moose.connect(pg, 'output', inSpkGen, 'Vm') + #inTable = moose.Table(cellPath+'/inSpkGen/inTable') + #moose.connect(inTable, 'requestOut', inSpkGen, 'getHasFired') + moose.connect(inSpkGen, 'spikeOut', cell.synapse[i] ,'addSpike') #self connection is the input + self.inSpike.append(inSpkGen) + #self.inTables.append(inTable) + #self.Vms.append(VmVals) + self.cells.append(cell) + self.allSpikes.append(spikeVals) + + for ii in range(self.numNeurons): + for jj in range(self.numNeurons): + if ii == jj: + continue + self.cells[jj].synapse[ii].weight = 0 + self.cells[jj].synapse[ii].delay = 20e-3 + moose.connect(self.cells[ii], 'spike', self.cells[jj].synapse[ii], 'addSpike') + + def updateInputs(self,inputGiven): + '''assign inputs here''' + for i in range(self.numNeurons): + if inputGiven[i] == 1: + self.inSpike[i].setField('threshold',2.0) + else: + self.inSpike[i].setField('threshold',4.0) + + def clearAllSynapticWeights(self): + for ii in range(self.numNeurons): + for jj in range(self.numNeurons): + self.cells[jj].synapse[ii].weight = 0.0 + + def assignAllSynapticWeights(self): + '''always call before runnning model''' + for ii in range(self.numNeurons): + for jj in range(self.numNeurons): + if (ii <= jj): + continue + self.cells[jj].synapse[ii].weight = float(self.synWeights[(jj*self.numNeurons)+ii]/self.numMemories) + self.cells[ii].synapse[jj].weight = float(self.synWeights[(ii*self.numNeurons)+jj]/self.numMemories) + + + def setClocksHopfield(self): + moose.setClock(0, 1e-4) + moose.useClock(0, '/hopfield/##', 'process') + + def runMooseHopfield(self,runtime): + moose.start(runtime) + +def test(runtime=0.2): + hopF = HopfieldNetwork(100) + + pattern1 = hopF.readMemoryFile('memory1.csv') + hopF.updateWeights(pattern1) + pattern2 = hopF.readMemoryFile('memory2.csv') + hopF.updateWeights(pattern2) + + #hopF.createNetwork() + hopF.assignAllSynapticWeights() + + initialInputs = hopF.readMemoryFile('input.csv') + hopF.updateInputs(initialInputs) + hopF.setClocksHopfield() + + moose.reinit() + moose.start(runtime) + + for ySet,Vm in enumerate(hopF.allSpikes): + ySpike = ySet + plt.subplot(211) + if pattern1[ySet] == 1: + plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='blue') + else: + plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='red') + plt.subplot(212) + if pattern2[ySet] == 1: + plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='blue') + else: + plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='red') + + plt.subplot(211) + plt.xlim(0,0.25) + plt.ylim(0,100) + plt.xlabel('time') + plt.ylabel('neuron#') + plt.title('spikes:pattern1- red:misfire & blue:correct') + plt.subplot(212) + plt.xlim(0,0.25) + plt.ylim(0,100) + plt.xlabel('time') + plt.ylabel('neuron#') + plt.title('spikes:pattern2- red:misfire & blue:correct') + + plt.show() + +if __name__ == '__main__': + test() + diff --git a/examples/hopfield/hopfield1.py b/examples/hopfield/hopfield1.py new file mode 100644 index 0000000..0f50393 --- /dev/null +++ b/examples/hopfield/hopfield1.py @@ -0,0 +1,132 @@ +# __BROKEN__ +# PARTIAL DEMO +# demo of a simple hopfield network using leaky integrate and fire neurons +# memory.csv has the memory being saved, the synaptic weights are set at start according to this memory +# memory must be a square matrix of 0's and 1's only +# input.csv has partial input given as input to the cells. +# - By C.H.Chaitanya +# This code is available under GPL3 or greater GNU license +import sys +sys.path.append('../../python') + +import moose +import math +from moose.utils import * +import csv +import numpy as np +#import matplotlib.pyplot as plt +from pylab import * +#from datetime import datetime + +cell = [] +spikegen = [] +vmtable = [] +intable = {} + +def updateWeights(old_weights, training_data): + new_weights = np.array( + [x * y for x in training_data[:,0] for y in training_data[:,1] ] + ) + new_weights = new_weights.reshape(old_weights.shape) + old_weights += new_weights + return old_weights + +def createNetwork(synWeights,inputGiven): + """synWeights : 2D array. synWeights[ii][jj] is the weight of + connection from cell [ii] to cell [jj].""" + global cell + global vmtable + global spikegen + global intable +# start = datetime.now() + numberOfCells = synWeights.shape[0] + hopfield = moose.Neutral('/hopfield') + data = moose.Neutral('/data') + pg = moose.PulseGen('/hopfield/inPulGen') + pgTable = moose.Table('/hopfield/inPulGen/pgTable') + moose.connect(pgTable, 'requestOut', pg, 'getOutputValue') +# pg.firstDelay = 10e-3 +# pg.firstWidth = 2e-03 +# pg.firstLevel = 3 +# pg.secondDelay = 1.0 + pg.count = 1 + pg.level[0] = 3 + pg.width[0] = 2e-03 + pg.delay[0] = 50e-03 #every 50ms +# start1 = datetime.now() + for ii in range(numberOfCells): + cell.append(moose.IntFire('/hopfield/cell_%d' % (ii))) + cell[ii].tau = 10e-3 + cell[ii].Vm = -0.07 + cell[ii].synapse.num = numberOfCells + cell[ii].synapse[ii].delay = 1e-3 + cell[ii].synapse[ii].weight = 1.0 + cell[ii].setField('thresh', 0.98) + vmtable.append(moose.Table('/data/Vm_%d' % (ii))) + moose.connect(vmtable[ii], 'requestOut', cell[ii], 'getVm') + spikegen.append(moose.SpikeGen('/hopfield/inSpkGen_%d' % (ii))) + if inputGiven[ii] == 0: + spikegen[ii].threshold = 4.0 + else: + spikegen[ii].threshold = 2.0 + spikegen[ii].edgeTriggered = True # Redundant + intable[ii] = moose.Table('/data/inTable_%d' % (ii)) + moose.connect(pg, 'output', spikegen[ii], 'Vm') + # No self connection - so we can use the synapse [ii] for input delivery + moose.connect(spikegen[ii], 'spikeOut', cell[ii].synapse[ii], 'addSpike') + moose.connect(intable[ii], 'requestOut', spikegen[ii], 'getHasFired') +# end1 = datetime.now() + for ii in range(numberOfCells): + for jj in range(numberOfCells): + if ii == jj: + continue + cell[jj].synapse[ii].weight = float(synWeights[ii,jj]/2.0) + cell[jj].synapse[ii].delay = 20e-3 + moose.connect(cell[ii], 'spike', cell[jj].synapse[ii], 'addSpike') +# end2 = datetime.now() +# delta = end2 - start +# print 'createNetwork: Total time:', delta.seconds + delta.microseconds * 1e-6 +# delta = end1 - start1 +# print 'createNetwork: create cells:', delta.seconds + delta.microseconds * 1e-6 +# delta = end2 - end1 +# print 'createNetwork: connect cells:', delta.seconds + delta.microseconds * 1e-6 + return (cell,vmtable,pgTable, spikegen, intable) + +def update_conn(inputFileName): + inputdata = np.loadtxt(inputFileName) + for ii in range(len(spikegen)): + if inputGiven[ii] == 0: + spikegen[ii].threshold = 4.0 + else: + spiksegen[ii].threshold = 2.0 + +if __name__ == '__main__': + memoryFile1 = "memory1.csv" + memory = np.loadtxt(memoryFile1) + synWeights = np.zeros((len(memory), len(memory))) + synWeights = updateWeights(synWeights, memory) + + memoryFile2 = "memory2.csv" + memory2 = np.loadtxt(memoryFile2) + synWeights = updateWeights(synWeights, memory2) + + inputFile = "input.csv" + inputData = np.loadtxt(inputFile) + #cells,Vms,pgTable,inTables = + cell,vmtable,pgTable,spikegen,intable = createNetwork(synWeights,inputData) + moose.setClock(0, 1e-4) + moose.useClock(0, '/hopfield/##,/data/##','process') + moose.reinit() + moose.start(0.2) + ii = 0 + for vm in vmtable: + plot(np.linspace(0, 0.2, len(vm.vector)), vm.vector + ii*1.5e-7, label=vm.name) + ii += 1 + show() +# #plot(pgTable.vector[1:]) +# #for yset,inTable in enumerate(inTables): +# # plot(float(yset)+inTable.vector[1:]) +# for ySet,Vm in enumerate(Vms): +# plot(float(2*ySet)/(1e+7)+Vm.vector[1:]) +# #plot(Vms[0].vector[1:]) +# show() diff --git a/examples/hopfield/hopfield_ui.py b/examples/hopfield/hopfield_ui.py new file mode 100644 index 0000000..7e6b273 --- /dev/null +++ b/examples/hopfield/hopfield_ui.py @@ -0,0 +1,1318 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'hopfield_ui.ui' +# +# Created: Sun Jul 8 14:11:37 2012 +# by: PyQt4 UI code generator 4.9.1 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName(_fromUtf8("MainWindow")) + MainWindow.resize(389, 492) + MainWindow.setTabShape(QtGui.QTabWidget.Rounded) + self.centralwidget = QtGui.QWidget(MainWindow) + self.centralwidget.setObjectName(_fromUtf8("centralwidget")) + self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) + self.gridLayout = QtGui.QGridLayout() + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.pushButton_16 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_16.sizePolicy().hasHeightForWidth()) + self.pushButton_16.setSizePolicy(sizePolicy) + self.pushButton_16.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_16.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_16.setText(_fromUtf8("")) + self.pushButton_16.setCheckable(True) + self.pushButton_16.setObjectName(_fromUtf8("pushButton_16")) + self.gridLayout.addWidget(self.pushButton_16, 1, 6, 1, 1) + self.pushButton_44 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_44.sizePolicy().hasHeightForWidth()) + self.pushButton_44.setSizePolicy(sizePolicy) + self.pushButton_44.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_44.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_44.setText(_fromUtf8("")) + self.pushButton_44.setCheckable(True) + self.pushButton_44.setObjectName(_fromUtf8("pushButton_44")) + self.gridLayout.addWidget(self.pushButton_44, 4, 4, 1, 1) + self.pushButton_45 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_45.sizePolicy().hasHeightForWidth()) + self.pushButton_45.setSizePolicy(sizePolicy) + self.pushButton_45.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_45.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_45.setText(_fromUtf8("")) + self.pushButton_45.setCheckable(True) + self.pushButton_45.setObjectName(_fromUtf8("pushButton_45")) + self.gridLayout.addWidget(self.pushButton_45, 4, 5, 1, 1) + self.pushButton_31 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_31.sizePolicy().hasHeightForWidth()) + self.pushButton_31.setSizePolicy(sizePolicy) + self.pushButton_31.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_31.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_31.setText(_fromUtf8("")) + self.pushButton_31.setCheckable(True) + self.pushButton_31.setObjectName(_fromUtf8("pushButton_31")) + self.gridLayout.addWidget(self.pushButton_31, 3, 1, 1, 1) + self.pushButton_82 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_82.sizePolicy().hasHeightForWidth()) + self.pushButton_82.setSizePolicy(sizePolicy) + self.pushButton_82.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_82.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_82.setText(_fromUtf8("")) + self.pushButton_82.setCheckable(True) + self.pushButton_82.setObjectName(_fromUtf8("pushButton_82")) + self.gridLayout.addWidget(self.pushButton_82, 8, 2, 1, 1) + self.pushButton_98 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_98.sizePolicy().hasHeightForWidth()) + self.pushButton_98.setSizePolicy(sizePolicy) + self.pushButton_98.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_98.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_98.setText(_fromUtf8("")) + self.pushButton_98.setCheckable(True) + self.pushButton_98.setObjectName(_fromUtf8("pushButton_98")) + self.gridLayout.addWidget(self.pushButton_98, 9, 8, 1, 1) + self.pushButton_20 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_20.sizePolicy().hasHeightForWidth()) + self.pushButton_20.setSizePolicy(sizePolicy) + self.pushButton_20.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_20.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_20.setText(_fromUtf8("")) + self.pushButton_20.setCheckable(True) + self.pushButton_20.setObjectName(_fromUtf8("pushButton_20")) + self.gridLayout.addWidget(self.pushButton_20, 2, 0, 1, 1) + self.pushButton_96 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_96.sizePolicy().hasHeightForWidth()) + self.pushButton_96.setSizePolicy(sizePolicy) + self.pushButton_96.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_96.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_96.setText(_fromUtf8("")) + self.pushButton_96.setCheckable(True) + self.pushButton_96.setObjectName(_fromUtf8("pushButton_96")) + self.gridLayout.addWidget(self.pushButton_96, 9, 6, 1, 1) + self.pushButton_65 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_65.sizePolicy().hasHeightForWidth()) + self.pushButton_65.setSizePolicy(sizePolicy) + self.pushButton_65.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_65.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_65.setText(_fromUtf8("")) + self.pushButton_65.setCheckable(True) + self.pushButton_65.setObjectName(_fromUtf8("pushButton_65")) + self.gridLayout.addWidget(self.pushButton_65, 6, 5, 1, 1) + self.pushButton_72 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_72.sizePolicy().hasHeightForWidth()) + self.pushButton_72.setSizePolicy(sizePolicy) + self.pushButton_72.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_72.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_72.setText(_fromUtf8("")) + self.pushButton_72.setCheckable(True) + self.pushButton_72.setObjectName(_fromUtf8("pushButton_72")) + self.gridLayout.addWidget(self.pushButton_72, 7, 2, 1, 1) + self.pushButton_91 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_91.sizePolicy().hasHeightForWidth()) + self.pushButton_91.setSizePolicy(sizePolicy) + self.pushButton_91.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_91.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_91.setText(_fromUtf8("")) + self.pushButton_91.setCheckable(True) + self.pushButton_91.setObjectName(_fromUtf8("pushButton_91")) + self.gridLayout.addWidget(self.pushButton_91, 9, 1, 1, 1) + self.pushButton_41 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_41.sizePolicy().hasHeightForWidth()) + self.pushButton_41.setSizePolicy(sizePolicy) + self.pushButton_41.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_41.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_41.setText(_fromUtf8("")) + self.pushButton_41.setCheckable(True) + self.pushButton_41.setObjectName(_fromUtf8("pushButton_41")) + self.gridLayout.addWidget(self.pushButton_41, 4, 1, 1, 1) + self.pushButton_83 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_83.sizePolicy().hasHeightForWidth()) + self.pushButton_83.setSizePolicy(sizePolicy) + self.pushButton_83.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_83.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_83.setText(_fromUtf8("")) + self.pushButton_83.setCheckable(True) + self.pushButton_83.setObjectName(_fromUtf8("pushButton_83")) + self.gridLayout.addWidget(self.pushButton_83, 8, 3, 1, 1) + self.pushButton_3 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_3.sizePolicy().hasHeightForWidth()) + self.pushButton_3.setSizePolicy(sizePolicy) + self.pushButton_3.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_3.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_3.setText(_fromUtf8("")) + self.pushButton_3.setCheckable(True) + self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) + self.gridLayout.addWidget(self.pushButton_3, 0, 3, 1, 1) + self.pushButton_22 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_22.sizePolicy().hasHeightForWidth()) + self.pushButton_22.setSizePolicy(sizePolicy) + self.pushButton_22.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_22.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_22.setText(_fromUtf8("")) + self.pushButton_22.setCheckable(True) + self.pushButton_22.setObjectName(_fromUtf8("pushButton_22")) + self.gridLayout.addWidget(self.pushButton_22, 2, 2, 1, 1) + self.pushButton_8 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_8.sizePolicy().hasHeightForWidth()) + self.pushButton_8.setSizePolicy(sizePolicy) + self.pushButton_8.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_8.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_8.setText(_fromUtf8("")) + self.pushButton_8.setCheckable(True) + self.pushButton_8.setObjectName(_fromUtf8("pushButton_8")) + self.gridLayout.addWidget(self.pushButton_8, 0, 8, 1, 1) + self.pushButton_59 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_59.sizePolicy().hasHeightForWidth()) + self.pushButton_59.setSizePolicy(sizePolicy) + self.pushButton_59.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_59.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_59.setText(_fromUtf8("")) + self.pushButton_59.setCheckable(True) + self.pushButton_59.setObjectName(_fromUtf8("pushButton_59")) + self.gridLayout.addWidget(self.pushButton_59, 5, 9, 1, 1) + self.pushButton_17 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_17.sizePolicy().hasHeightForWidth()) + self.pushButton_17.setSizePolicy(sizePolicy) + self.pushButton_17.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_17.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_17.setText(_fromUtf8("")) + self.pushButton_17.setCheckable(True) + self.pushButton_17.setObjectName(_fromUtf8("pushButton_17")) + self.gridLayout.addWidget(self.pushButton_17, 1, 7, 1, 1) + self.pushButton_9 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_9.sizePolicy().hasHeightForWidth()) + self.pushButton_9.setSizePolicy(sizePolicy) + self.pushButton_9.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_9.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_9.setText(_fromUtf8("")) + self.pushButton_9.setCheckable(True) + self.pushButton_9.setObjectName(_fromUtf8("pushButton_9")) + self.gridLayout.addWidget(self.pushButton_9, 0, 9, 1, 1) + self.pushButton_15 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_15.sizePolicy().hasHeightForWidth()) + self.pushButton_15.setSizePolicy(sizePolicy) + self.pushButton_15.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_15.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_15.setText(_fromUtf8("")) + self.pushButton_15.setCheckable(True) + self.pushButton_15.setObjectName(_fromUtf8("pushButton_15")) + self.gridLayout.addWidget(self.pushButton_15, 1, 5, 1, 1) + self.pushButton_4 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_4.sizePolicy().hasHeightForWidth()) + self.pushButton_4.setSizePolicy(sizePolicy) + self.pushButton_4.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_4.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_4.setText(_fromUtf8("")) + self.pushButton_4.setCheckable(True) + self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) + self.gridLayout.addWidget(self.pushButton_4, 0, 4, 1, 1) + self.pushButton_80 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_80.sizePolicy().hasHeightForWidth()) + self.pushButton_80.setSizePolicy(sizePolicy) + self.pushButton_80.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_80.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_80.setText(_fromUtf8("")) + self.pushButton_80.setCheckable(True) + self.pushButton_80.setObjectName(_fromUtf8("pushButton_80")) + self.gridLayout.addWidget(self.pushButton_80, 8, 0, 1, 1) + self.pushButton_30 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_30.sizePolicy().hasHeightForWidth()) + self.pushButton_30.setSizePolicy(sizePolicy) + self.pushButton_30.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_30.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_30.setText(_fromUtf8("")) + self.pushButton_30.setCheckable(True) + self.pushButton_30.setObjectName(_fromUtf8("pushButton_30")) + self.gridLayout.addWidget(self.pushButton_30, 3, 0, 1, 1) + self.pushButton_0 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_0.sizePolicy().hasHeightForWidth()) + self.pushButton_0.setSizePolicy(sizePolicy) + self.pushButton_0.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_0.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_0.setText(_fromUtf8("")) + self.pushButton_0.setCheckable(True) + self.pushButton_0.setObjectName(_fromUtf8("pushButton_0")) + self.gridLayout.addWidget(self.pushButton_0, 0, 0, 1, 1) + self.pushButton_97 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_97.sizePolicy().hasHeightForWidth()) + self.pushButton_97.setSizePolicy(sizePolicy) + self.pushButton_97.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_97.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_97.setText(_fromUtf8("")) + self.pushButton_97.setCheckable(True) + self.pushButton_97.setObjectName(_fromUtf8("pushButton_97")) + self.gridLayout.addWidget(self.pushButton_97, 9, 7, 1, 1) + self.pushButton_63 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_63.sizePolicy().hasHeightForWidth()) + self.pushButton_63.setSizePolicy(sizePolicy) + self.pushButton_63.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_63.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_63.setText(_fromUtf8("")) + self.pushButton_63.setCheckable(True) + self.pushButton_63.setObjectName(_fromUtf8("pushButton_63")) + self.gridLayout.addWidget(self.pushButton_63, 6, 3, 1, 1) + self.pushButton_71 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_71.sizePolicy().hasHeightForWidth()) + self.pushButton_71.setSizePolicy(sizePolicy) + self.pushButton_71.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_71.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_71.setText(_fromUtf8("")) + self.pushButton_71.setCheckable(True) + self.pushButton_71.setObjectName(_fromUtf8("pushButton_71")) + self.gridLayout.addWidget(self.pushButton_71, 7, 1, 1, 1) + self.pushButton_26 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_26.sizePolicy().hasHeightForWidth()) + self.pushButton_26.setSizePolicy(sizePolicy) + self.pushButton_26.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_26.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_26.setText(_fromUtf8("")) + self.pushButton_26.setCheckable(True) + self.pushButton_26.setObjectName(_fromUtf8("pushButton_26")) + self.gridLayout.addWidget(self.pushButton_26, 2, 6, 1, 1) + self.pushButton_35 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_35.sizePolicy().hasHeightForWidth()) + self.pushButton_35.setSizePolicy(sizePolicy) + self.pushButton_35.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_35.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_35.setText(_fromUtf8("")) + self.pushButton_35.setCheckable(True) + self.pushButton_35.setObjectName(_fromUtf8("pushButton_35")) + self.gridLayout.addWidget(self.pushButton_35, 3, 5, 1, 1) + self.pushButton_32 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_32.sizePolicy().hasHeightForWidth()) + self.pushButton_32.setSizePolicy(sizePolicy) + self.pushButton_32.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_32.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_32.setText(_fromUtf8("")) + self.pushButton_32.setCheckable(True) + self.pushButton_32.setObjectName(_fromUtf8("pushButton_32")) + self.gridLayout.addWidget(self.pushButton_32, 3, 2, 1, 1) + self.pushButton_81 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_81.sizePolicy().hasHeightForWidth()) + self.pushButton_81.setSizePolicy(sizePolicy) + self.pushButton_81.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_81.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_81.setText(_fromUtf8("")) + self.pushButton_81.setCheckable(True) + self.pushButton_81.setObjectName(_fromUtf8("pushButton_81")) + self.gridLayout.addWidget(self.pushButton_81, 8, 1, 1, 1) + self.pushButton_25 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_25.sizePolicy().hasHeightForWidth()) + self.pushButton_25.setSizePolicy(sizePolicy) + self.pushButton_25.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_25.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_25.setText(_fromUtf8("")) + self.pushButton_25.setCheckable(True) + self.pushButton_25.setObjectName(_fromUtf8("pushButton_25")) + self.gridLayout.addWidget(self.pushButton_25, 2, 5, 1, 1) + self.pushButton_79 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_79.sizePolicy().hasHeightForWidth()) + self.pushButton_79.setSizePolicy(sizePolicy) + self.pushButton_79.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_79.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_79.setText(_fromUtf8("")) + self.pushButton_79.setCheckable(True) + self.pushButton_79.setObjectName(_fromUtf8("pushButton_79")) + self.gridLayout.addWidget(self.pushButton_79, 7, 9, 1, 1) + self.pushButton_24 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_24.sizePolicy().hasHeightForWidth()) + self.pushButton_24.setSizePolicy(sizePolicy) + self.pushButton_24.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_24.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_24.setText(_fromUtf8("")) + self.pushButton_24.setCheckable(True) + self.pushButton_24.setObjectName(_fromUtf8("pushButton_24")) + self.gridLayout.addWidget(self.pushButton_24, 2, 4, 1, 1) + self.pushButton_28 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_28.sizePolicy().hasHeightForWidth()) + self.pushButton_28.setSizePolicy(sizePolicy) + self.pushButton_28.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_28.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_28.setText(_fromUtf8("")) + self.pushButton_28.setCheckable(True) + self.pushButton_28.setObjectName(_fromUtf8("pushButton_28")) + self.gridLayout.addWidget(self.pushButton_28, 2, 8, 1, 1) + self.pushButton_33 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_33.sizePolicy().hasHeightForWidth()) + self.pushButton_33.setSizePolicy(sizePolicy) + self.pushButton_33.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_33.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_33.setText(_fromUtf8("")) + self.pushButton_33.setCheckable(True) + self.pushButton_33.setObjectName(_fromUtf8("pushButton_33")) + self.gridLayout.addWidget(self.pushButton_33, 3, 3, 1, 1) + self.pushButton_76 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_76.sizePolicy().hasHeightForWidth()) + self.pushButton_76.setSizePolicy(sizePolicy) + self.pushButton_76.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_76.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_76.setText(_fromUtf8("")) + self.pushButton_76.setCheckable(True) + self.pushButton_76.setObjectName(_fromUtf8("pushButton_76")) + self.gridLayout.addWidget(self.pushButton_76, 7, 6, 1, 1) + self.pushButton_51 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_51.sizePolicy().hasHeightForWidth()) + self.pushButton_51.setSizePolicy(sizePolicy) + self.pushButton_51.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_51.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_51.setText(_fromUtf8("")) + self.pushButton_51.setCheckable(True) + self.pushButton_51.setObjectName(_fromUtf8("pushButton_51")) + self.gridLayout.addWidget(self.pushButton_51, 5, 1, 1, 1) + self.pushButton_55 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_55.sizePolicy().hasHeightForWidth()) + self.pushButton_55.setSizePolicy(sizePolicy) + self.pushButton_55.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_55.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_55.setText(_fromUtf8("")) + self.pushButton_55.setCheckable(True) + self.pushButton_55.setObjectName(_fromUtf8("pushButton_55")) + self.gridLayout.addWidget(self.pushButton_55, 5, 5, 1, 1) + self.pushButton_93 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_93.sizePolicy().hasHeightForWidth()) + self.pushButton_93.setSizePolicy(sizePolicy) + self.pushButton_93.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_93.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_93.setText(_fromUtf8("")) + self.pushButton_93.setCheckable(True) + self.pushButton_93.setObjectName(_fromUtf8("pushButton_93")) + self.gridLayout.addWidget(self.pushButton_93, 9, 3, 1, 1) + self.pushButton_5 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_5.sizePolicy().hasHeightForWidth()) + self.pushButton_5.setSizePolicy(sizePolicy) + self.pushButton_5.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_5.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_5.setText(_fromUtf8("")) + self.pushButton_5.setCheckable(True) + self.pushButton_5.setObjectName(_fromUtf8("pushButton_5")) + self.gridLayout.addWidget(self.pushButton_5, 0, 5, 1, 1) + self.pushButton_12 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_12.sizePolicy().hasHeightForWidth()) + self.pushButton_12.setSizePolicy(sizePolicy) + self.pushButton_12.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_12.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_12.setText(_fromUtf8("")) + self.pushButton_12.setCheckable(True) + self.pushButton_12.setObjectName(_fromUtf8("pushButton_12")) + self.gridLayout.addWidget(self.pushButton_12, 1, 2, 1, 1) + self.pushButton_60 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_60.sizePolicy().hasHeightForWidth()) + self.pushButton_60.setSizePolicy(sizePolicy) + self.pushButton_60.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_60.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_60.setText(_fromUtf8("")) + self.pushButton_60.setCheckable(True) + self.pushButton_60.setObjectName(_fromUtf8("pushButton_60")) + self.gridLayout.addWidget(self.pushButton_60, 6, 0, 1, 1) + self.pushButton_64 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_64.sizePolicy().hasHeightForWidth()) + self.pushButton_64.setSizePolicy(sizePolicy) + self.pushButton_64.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_64.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_64.setText(_fromUtf8("")) + self.pushButton_64.setCheckable(True) + self.pushButton_64.setObjectName(_fromUtf8("pushButton_64")) + self.gridLayout.addWidget(self.pushButton_64, 6, 4, 1, 1) + self.pushButton_68 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_68.sizePolicy().hasHeightForWidth()) + self.pushButton_68.setSizePolicy(sizePolicy) + self.pushButton_68.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_68.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_68.setText(_fromUtf8("")) + self.pushButton_68.setCheckable(True) + self.pushButton_68.setObjectName(_fromUtf8("pushButton_68")) + self.gridLayout.addWidget(self.pushButton_68, 6, 8, 1, 1) + self.pushButton_46 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_46.sizePolicy().hasHeightForWidth()) + self.pushButton_46.setSizePolicy(sizePolicy) + self.pushButton_46.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_46.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_46.setText(_fromUtf8("")) + self.pushButton_46.setCheckable(True) + self.pushButton_46.setObjectName(_fromUtf8("pushButton_46")) + self.gridLayout.addWidget(self.pushButton_46, 4, 6, 1, 1) + self.pushButton_1 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_1.sizePolicy().hasHeightForWidth()) + self.pushButton_1.setSizePolicy(sizePolicy) + self.pushButton_1.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_1.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_1.setText(_fromUtf8("")) + self.pushButton_1.setCheckable(True) + self.pushButton_1.setObjectName(_fromUtf8("pushButton_1")) + self.gridLayout.addWidget(self.pushButton_1, 0, 1, 1, 1) + self.pushButton_58 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_58.sizePolicy().hasHeightForWidth()) + self.pushButton_58.setSizePolicy(sizePolicy) + self.pushButton_58.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_58.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_58.setText(_fromUtf8("")) + self.pushButton_58.setCheckable(True) + self.pushButton_58.setObjectName(_fromUtf8("pushButton_58")) + self.gridLayout.addWidget(self.pushButton_58, 5, 8, 1, 1) + self.pushButton_48 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_48.sizePolicy().hasHeightForWidth()) + self.pushButton_48.setSizePolicy(sizePolicy) + self.pushButton_48.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_48.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_48.setText(_fromUtf8("")) + self.pushButton_48.setCheckable(True) + self.pushButton_48.setObjectName(_fromUtf8("pushButton_48")) + self.gridLayout.addWidget(self.pushButton_48, 4, 8, 1, 1) + self.pushButton_47 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_47.sizePolicy().hasHeightForWidth()) + self.pushButton_47.setSizePolicy(sizePolicy) + self.pushButton_47.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_47.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_47.setText(_fromUtf8("")) + self.pushButton_47.setCheckable(True) + self.pushButton_47.setObjectName(_fromUtf8("pushButton_47")) + self.gridLayout.addWidget(self.pushButton_47, 4, 7, 1, 1) + self.pushButton_29 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_29.sizePolicy().hasHeightForWidth()) + self.pushButton_29.setSizePolicy(sizePolicy) + self.pushButton_29.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_29.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_29.setText(_fromUtf8("")) + self.pushButton_29.setCheckable(True) + self.pushButton_29.setObjectName(_fromUtf8("pushButton_29")) + self.gridLayout.addWidget(self.pushButton_29, 2, 9, 1, 1) + self.pushButton_73 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_73.sizePolicy().hasHeightForWidth()) + self.pushButton_73.setSizePolicy(sizePolicy) + self.pushButton_73.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_73.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_73.setText(_fromUtf8("")) + self.pushButton_73.setCheckable(True) + self.pushButton_73.setObjectName(_fromUtf8("pushButton_73")) + self.gridLayout.addWidget(self.pushButton_73, 7, 3, 1, 1) + self.pushButton_99 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_99.sizePolicy().hasHeightForWidth()) + self.pushButton_99.setSizePolicy(sizePolicy) + self.pushButton_99.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_99.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_99.setText(_fromUtf8("")) + self.pushButton_99.setCheckable(True) + self.pushButton_99.setObjectName(_fromUtf8("pushButton_99")) + self.gridLayout.addWidget(self.pushButton_99, 9, 9, 1, 1) + self.pushButton_57 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_57.sizePolicy().hasHeightForWidth()) + self.pushButton_57.setSizePolicy(sizePolicy) + self.pushButton_57.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_57.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_57.setText(_fromUtf8("")) + self.pushButton_57.setCheckable(True) + self.pushButton_57.setObjectName(_fromUtf8("pushButton_57")) + self.gridLayout.addWidget(self.pushButton_57, 5, 7, 1, 1) + self.pushButton_85 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_85.sizePolicy().hasHeightForWidth()) + self.pushButton_85.setSizePolicy(sizePolicy) + self.pushButton_85.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_85.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_85.setText(_fromUtf8("")) + self.pushButton_85.setCheckable(True) + self.pushButton_85.setObjectName(_fromUtf8("pushButton_85")) + self.gridLayout.addWidget(self.pushButton_85, 8, 5, 1, 1) + self.pushButton_74 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_74.sizePolicy().hasHeightForWidth()) + self.pushButton_74.setSizePolicy(sizePolicy) + self.pushButton_74.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_74.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_74.setText(_fromUtf8("")) + self.pushButton_74.setCheckable(True) + self.pushButton_74.setObjectName(_fromUtf8("pushButton_74")) + self.gridLayout.addWidget(self.pushButton_74, 7, 4, 1, 1) + self.pushButton_10 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_10.sizePolicy().hasHeightForWidth()) + self.pushButton_10.setSizePolicy(sizePolicy) + self.pushButton_10.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_10.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_10.setText(_fromUtf8("")) + self.pushButton_10.setCheckable(True) + self.pushButton_10.setObjectName(_fromUtf8("pushButton_10")) + self.gridLayout.addWidget(self.pushButton_10, 1, 0, 1, 1) + self.pushButton_37 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_37.sizePolicy().hasHeightForWidth()) + self.pushButton_37.setSizePolicy(sizePolicy) + self.pushButton_37.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_37.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_37.setText(_fromUtf8("")) + self.pushButton_37.setCheckable(True) + self.pushButton_37.setObjectName(_fromUtf8("pushButton_37")) + self.gridLayout.addWidget(self.pushButton_37, 3, 7, 1, 1) + self.pushButton_13 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_13.sizePolicy().hasHeightForWidth()) + self.pushButton_13.setSizePolicy(sizePolicy) + self.pushButton_13.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_13.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_13.setText(_fromUtf8("")) + self.pushButton_13.setCheckable(True) + self.pushButton_13.setObjectName(_fromUtf8("pushButton_13")) + self.gridLayout.addWidget(self.pushButton_13, 1, 3, 1, 1) + self.pushButton_43 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_43.sizePolicy().hasHeightForWidth()) + self.pushButton_43.setSizePolicy(sizePolicy) + self.pushButton_43.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_43.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_43.setText(_fromUtf8("")) + self.pushButton_43.setCheckable(True) + self.pushButton_43.setObjectName(_fromUtf8("pushButton_43")) + self.gridLayout.addWidget(self.pushButton_43, 4, 3, 1, 1) + self.pushButton_36 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_36.sizePolicy().hasHeightForWidth()) + self.pushButton_36.setSizePolicy(sizePolicy) + self.pushButton_36.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_36.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_36.setText(_fromUtf8("")) + self.pushButton_36.setCheckable(True) + self.pushButton_36.setObjectName(_fromUtf8("pushButton_36")) + self.gridLayout.addWidget(self.pushButton_36, 3, 6, 1, 1) + self.pushButton_61 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_61.sizePolicy().hasHeightForWidth()) + self.pushButton_61.setSizePolicy(sizePolicy) + self.pushButton_61.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_61.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_61.setText(_fromUtf8("")) + self.pushButton_61.setCheckable(True) + self.pushButton_61.setObjectName(_fromUtf8("pushButton_61")) + self.gridLayout.addWidget(self.pushButton_61, 6, 1, 1, 1) + self.pushButton_84 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_84.sizePolicy().hasHeightForWidth()) + self.pushButton_84.setSizePolicy(sizePolicy) + self.pushButton_84.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_84.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_84.setText(_fromUtf8("")) + self.pushButton_84.setCheckable(True) + self.pushButton_84.setObjectName(_fromUtf8("pushButton_84")) + self.gridLayout.addWidget(self.pushButton_84, 8, 4, 1, 1) + self.pushButton_87 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_87.sizePolicy().hasHeightForWidth()) + self.pushButton_87.setSizePolicy(sizePolicy) + self.pushButton_87.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_87.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_87.setText(_fromUtf8("")) + self.pushButton_87.setCheckable(True) + self.pushButton_87.setObjectName(_fromUtf8("pushButton_87")) + self.gridLayout.addWidget(self.pushButton_87, 8, 7, 1, 1) + self.pushButton_6 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_6.sizePolicy().hasHeightForWidth()) + self.pushButton_6.setSizePolicy(sizePolicy) + self.pushButton_6.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_6.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_6.setText(_fromUtf8("")) + self.pushButton_6.setCheckable(True) + self.pushButton_6.setObjectName(_fromUtf8("pushButton_6")) + self.gridLayout.addWidget(self.pushButton_6, 0, 6, 1, 1) + self.pushButton_78 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_78.sizePolicy().hasHeightForWidth()) + self.pushButton_78.setSizePolicy(sizePolicy) + self.pushButton_78.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_78.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_78.setText(_fromUtf8("")) + self.pushButton_78.setCheckable(True) + self.pushButton_78.setObjectName(_fromUtf8("pushButton_78")) + self.gridLayout.addWidget(self.pushButton_78, 7, 8, 1, 1) + self.pushButton_94 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_94.sizePolicy().hasHeightForWidth()) + self.pushButton_94.setSizePolicy(sizePolicy) + self.pushButton_94.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_94.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_94.setText(_fromUtf8("")) + self.pushButton_94.setCheckable(True) + self.pushButton_94.setObjectName(_fromUtf8("pushButton_94")) + self.gridLayout.addWidget(self.pushButton_94, 9, 4, 1, 1) + self.pushButton_39 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_39.sizePolicy().hasHeightForWidth()) + self.pushButton_39.setSizePolicy(sizePolicy) + self.pushButton_39.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_39.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_39.setText(_fromUtf8("")) + self.pushButton_39.setCheckable(True) + self.pushButton_39.setObjectName(_fromUtf8("pushButton_39")) + self.gridLayout.addWidget(self.pushButton_39, 3, 9, 1, 1) + self.pushButton_90 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_90.sizePolicy().hasHeightForWidth()) + self.pushButton_90.setSizePolicy(sizePolicy) + self.pushButton_90.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_90.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_90.setText(_fromUtf8("")) + self.pushButton_90.setCheckable(True) + self.pushButton_90.setObjectName(_fromUtf8("pushButton_90")) + self.gridLayout.addWidget(self.pushButton_90, 9, 0, 1, 1) + self.pushButton_23 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_23.sizePolicy().hasHeightForWidth()) + self.pushButton_23.setSizePolicy(sizePolicy) + self.pushButton_23.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_23.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_23.setText(_fromUtf8("")) + self.pushButton_23.setCheckable(True) + self.pushButton_23.setObjectName(_fromUtf8("pushButton_23")) + self.gridLayout.addWidget(self.pushButton_23, 2, 3, 1, 1) + self.pushButton_42 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_42.sizePolicy().hasHeightForWidth()) + self.pushButton_42.setSizePolicy(sizePolicy) + self.pushButton_42.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_42.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_42.setText(_fromUtf8("")) + self.pushButton_42.setCheckable(True) + self.pushButton_42.setObjectName(_fromUtf8("pushButton_42")) + self.gridLayout.addWidget(self.pushButton_42, 4, 2, 1, 1) + self.pushButton_70 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_70.sizePolicy().hasHeightForWidth()) + self.pushButton_70.setSizePolicy(sizePolicy) + self.pushButton_70.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_70.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_70.setText(_fromUtf8("")) + self.pushButton_70.setCheckable(True) + self.pushButton_70.setObjectName(_fromUtf8("pushButton_70")) + self.gridLayout.addWidget(self.pushButton_70, 7, 0, 1, 1) + self.pushButton_19 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_19.sizePolicy().hasHeightForWidth()) + self.pushButton_19.setSizePolicy(sizePolicy) + self.pushButton_19.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_19.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_19.setText(_fromUtf8("")) + self.pushButton_19.setCheckable(True) + self.pushButton_19.setObjectName(_fromUtf8("pushButton_19")) + self.gridLayout.addWidget(self.pushButton_19, 1, 9, 1, 1) + self.pushButton_34 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_34.sizePolicy().hasHeightForWidth()) + self.pushButton_34.setSizePolicy(sizePolicy) + self.pushButton_34.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_34.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_34.setText(_fromUtf8("")) + self.pushButton_34.setCheckable(True) + self.pushButton_34.setObjectName(_fromUtf8("pushButton_34")) + self.gridLayout.addWidget(self.pushButton_34, 3, 4, 1, 1) + self.pushButton_62 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_62.sizePolicy().hasHeightForWidth()) + self.pushButton_62.setSizePolicy(sizePolicy) + self.pushButton_62.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_62.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_62.setText(_fromUtf8("")) + self.pushButton_62.setCheckable(True) + self.pushButton_62.setObjectName(_fromUtf8("pushButton_62")) + self.gridLayout.addWidget(self.pushButton_62, 6, 2, 1, 1) + self.pushButton_18 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_18.sizePolicy().hasHeightForWidth()) + self.pushButton_18.setSizePolicy(sizePolicy) + self.pushButton_18.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_18.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_18.setText(_fromUtf8("")) + self.pushButton_18.setCheckable(True) + self.pushButton_18.setObjectName(_fromUtf8("pushButton_18")) + self.gridLayout.addWidget(self.pushButton_18, 1, 8, 1, 1) + self.pushButton_49 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_49.sizePolicy().hasHeightForWidth()) + self.pushButton_49.setSizePolicy(sizePolicy) + self.pushButton_49.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_49.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_49.setText(_fromUtf8("")) + self.pushButton_49.setCheckable(True) + self.pushButton_49.setObjectName(_fromUtf8("pushButton_49")) + self.gridLayout.addWidget(self.pushButton_49, 4, 9, 1, 1) + self.pushButton_14 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_14.sizePolicy().hasHeightForWidth()) + self.pushButton_14.setSizePolicy(sizePolicy) + self.pushButton_14.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_14.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_14.setText(_fromUtf8("")) + self.pushButton_14.setCheckable(True) + self.pushButton_14.setObjectName(_fromUtf8("pushButton_14")) + self.gridLayout.addWidget(self.pushButton_14, 1, 4, 1, 1) + self.pushButton_27 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_27.sizePolicy().hasHeightForWidth()) + self.pushButton_27.setSizePolicy(sizePolicy) + self.pushButton_27.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_27.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_27.setText(_fromUtf8("")) + self.pushButton_27.setCheckable(True) + self.pushButton_27.setObjectName(_fromUtf8("pushButton_27")) + self.gridLayout.addWidget(self.pushButton_27, 2, 7, 1, 1) + self.pushButton_56 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_56.sizePolicy().hasHeightForWidth()) + self.pushButton_56.setSizePolicy(sizePolicy) + self.pushButton_56.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_56.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_56.setText(_fromUtf8("")) + self.pushButton_56.setCheckable(True) + self.pushButton_56.setObjectName(_fromUtf8("pushButton_56")) + self.gridLayout.addWidget(self.pushButton_56, 5, 6, 1, 1) + self.pushButton_75 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_75.sizePolicy().hasHeightForWidth()) + self.pushButton_75.setSizePolicy(sizePolicy) + self.pushButton_75.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_75.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_75.setText(_fromUtf8("")) + self.pushButton_75.setCheckable(True) + self.pushButton_75.setObjectName(_fromUtf8("pushButton_75")) + self.gridLayout.addWidget(self.pushButton_75, 7, 5, 1, 1) + self.pushButton_50 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_50.sizePolicy().hasHeightForWidth()) + self.pushButton_50.setSizePolicy(sizePolicy) + self.pushButton_50.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_50.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_50.setText(_fromUtf8("")) + self.pushButton_50.setCheckable(True) + self.pushButton_50.setObjectName(_fromUtf8("pushButton_50")) + self.gridLayout.addWidget(self.pushButton_50, 5, 0, 1, 1) + self.pushButton_53 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_53.sizePolicy().hasHeightForWidth()) + self.pushButton_53.setSizePolicy(sizePolicy) + self.pushButton_53.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_53.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_53.setText(_fromUtf8("")) + self.pushButton_53.setCheckable(True) + self.pushButton_53.setObjectName(_fromUtf8("pushButton_53")) + self.gridLayout.addWidget(self.pushButton_53, 5, 3, 1, 1) + self.pushButton_67 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_67.sizePolicy().hasHeightForWidth()) + self.pushButton_67.setSizePolicy(sizePolicy) + self.pushButton_67.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_67.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_67.setText(_fromUtf8("")) + self.pushButton_67.setCheckable(True) + self.pushButton_67.setObjectName(_fromUtf8("pushButton_67")) + self.gridLayout.addWidget(self.pushButton_67, 6, 7, 1, 1) + self.pushButton_52 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_52.sizePolicy().hasHeightForWidth()) + self.pushButton_52.setSizePolicy(sizePolicy) + self.pushButton_52.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_52.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_52.setText(_fromUtf8("")) + self.pushButton_52.setCheckable(True) + self.pushButton_52.setObjectName(_fromUtf8("pushButton_52")) + self.gridLayout.addWidget(self.pushButton_52, 5, 2, 1, 1) + self.pushButton_7 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_7.sizePolicy().hasHeightForWidth()) + self.pushButton_7.setSizePolicy(sizePolicy) + self.pushButton_7.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_7.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_7.setText(_fromUtf8("")) + self.pushButton_7.setCheckable(True) + self.pushButton_7.setObjectName(_fromUtf8("pushButton_7")) + self.gridLayout.addWidget(self.pushButton_7, 0, 7, 1, 1) + self.pushButton_54 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_54.sizePolicy().hasHeightForWidth()) + self.pushButton_54.setSizePolicy(sizePolicy) + self.pushButton_54.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_54.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_54.setText(_fromUtf8("")) + self.pushButton_54.setCheckable(True) + self.pushButton_54.setObjectName(_fromUtf8("pushButton_54")) + self.gridLayout.addWidget(self.pushButton_54, 5, 4, 1, 1) + self.pushButton_92 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_92.sizePolicy().hasHeightForWidth()) + self.pushButton_92.setSizePolicy(sizePolicy) + self.pushButton_92.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_92.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_92.setText(_fromUtf8("")) + self.pushButton_92.setCheckable(True) + self.pushButton_92.setObjectName(_fromUtf8("pushButton_92")) + self.gridLayout.addWidget(self.pushButton_92, 9, 2, 1, 1) + self.pushButton_69 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_69.sizePolicy().hasHeightForWidth()) + self.pushButton_69.setSizePolicy(sizePolicy) + self.pushButton_69.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_69.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_69.setText(_fromUtf8("")) + self.pushButton_69.setCheckable(True) + self.pushButton_69.setObjectName(_fromUtf8("pushButton_69")) + self.gridLayout.addWidget(self.pushButton_69, 6, 9, 1, 1) + self.pushButton_89 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_89.sizePolicy().hasHeightForWidth()) + self.pushButton_89.setSizePolicy(sizePolicy) + self.pushButton_89.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_89.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_89.setText(_fromUtf8("")) + self.pushButton_89.setCheckable(True) + self.pushButton_89.setObjectName(_fromUtf8("pushButton_89")) + self.gridLayout.addWidget(self.pushButton_89, 8, 9, 1, 1) + self.pushButton_66 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_66.sizePolicy().hasHeightForWidth()) + self.pushButton_66.setSizePolicy(sizePolicy) + self.pushButton_66.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_66.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_66.setText(_fromUtf8("")) + self.pushButton_66.setCheckable(True) + self.pushButton_66.setObjectName(_fromUtf8("pushButton_66")) + self.gridLayout.addWidget(self.pushButton_66, 6, 6, 1, 1) + self.pushButton_88 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_88.sizePolicy().hasHeightForWidth()) + self.pushButton_88.setSizePolicy(sizePolicy) + self.pushButton_88.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_88.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_88.setText(_fromUtf8("")) + self.pushButton_88.setCheckable(True) + self.pushButton_88.setObjectName(_fromUtf8("pushButton_88")) + self.gridLayout.addWidget(self.pushButton_88, 8, 8, 1, 1) + self.pushButton_38 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_38.sizePolicy().hasHeightForWidth()) + self.pushButton_38.setSizePolicy(sizePolicy) + self.pushButton_38.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_38.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_38.setText(_fromUtf8("")) + self.pushButton_38.setCheckable(True) + self.pushButton_38.setObjectName(_fromUtf8("pushButton_38")) + self.gridLayout.addWidget(self.pushButton_38, 3, 8, 1, 1) + self.pushButton_95 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_95.sizePolicy().hasHeightForWidth()) + self.pushButton_95.setSizePolicy(sizePolicy) + self.pushButton_95.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_95.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_95.setText(_fromUtf8("")) + self.pushButton_95.setCheckable(True) + self.pushButton_95.setObjectName(_fromUtf8("pushButton_95")) + self.gridLayout.addWidget(self.pushButton_95, 9, 5, 1, 1) + self.pushButton_11 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_11.sizePolicy().hasHeightForWidth()) + self.pushButton_11.setSizePolicy(sizePolicy) + self.pushButton_11.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_11.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_11.setText(_fromUtf8("")) + self.pushButton_11.setCheckable(True) + self.pushButton_11.setObjectName(_fromUtf8("pushButton_11")) + self.gridLayout.addWidget(self.pushButton_11, 1, 1, 1, 1) + self.pushButton_40 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_40.sizePolicy().hasHeightForWidth()) + self.pushButton_40.setSizePolicy(sizePolicy) + self.pushButton_40.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_40.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_40.setText(_fromUtf8("")) + self.pushButton_40.setCheckable(True) + self.pushButton_40.setObjectName(_fromUtf8("pushButton_40")) + self.gridLayout.addWidget(self.pushButton_40, 4, 0, 1, 1) + self.pushButton_77 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_77.sizePolicy().hasHeightForWidth()) + self.pushButton_77.setSizePolicy(sizePolicy) + self.pushButton_77.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_77.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_77.setText(_fromUtf8("")) + self.pushButton_77.setCheckable(True) + self.pushButton_77.setObjectName(_fromUtf8("pushButton_77")) + self.gridLayout.addWidget(self.pushButton_77, 7, 7, 1, 1) + self.pushButton_21 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_21.sizePolicy().hasHeightForWidth()) + self.pushButton_21.setSizePolicy(sizePolicy) + self.pushButton_21.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_21.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_21.setText(_fromUtf8("")) + self.pushButton_21.setCheckable(True) + self.pushButton_21.setObjectName(_fromUtf8("pushButton_21")) + self.gridLayout.addWidget(self.pushButton_21, 2, 1, 1, 1) + self.pushButton_86 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_86.sizePolicy().hasHeightForWidth()) + self.pushButton_86.setSizePolicy(sizePolicy) + self.pushButton_86.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_86.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_86.setText(_fromUtf8("")) + self.pushButton_86.setCheckable(True) + self.pushButton_86.setObjectName(_fromUtf8("pushButton_86")) + self.gridLayout.addWidget(self.pushButton_86, 8, 6, 1, 1) + self.pushButton_2 = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth()) + self.pushButton_2.setSizePolicy(sizePolicy) + self.pushButton_2.setMaximumSize(QtCore.QSize(27, 27)) + self.pushButton_2.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) + self.pushButton_2.setText(_fromUtf8("")) + self.pushButton_2.setCheckable(True) + self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) + self.gridLayout.addWidget(self.pushButton_2, 0, 2, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + self.gridLayout_2 = QtGui.QGridLayout() + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.clearDisplayPushButton = QtGui.QPushButton(self.centralwidget) + self.clearDisplayPushButton.setObjectName(_fromUtf8("clearDisplayPushButton")) + self.gridLayout_2.addWidget(self.clearDisplayPushButton, 0, 0, 1, 1) + self.randomizePushButton = QtGui.QPushButton(self.centralwidget) + self.randomizePushButton.setObjectName(_fromUtf8("randomizePushButton")) + self.gridLayout_2.addWidget(self.randomizePushButton, 0, 2, 1, 1) + self.clearMemPushButton = QtGui.QPushButton(self.centralwidget) + self.clearMemPushButton.setObjectName(_fromUtf8("clearMemPushButton")) + self.gridLayout_2.addWidget(self.clearMemPushButton, 0, 3, 1, 1) + self.memorizePushButton = QtGui.QPushButton(self.centralwidget) + self.memorizePushButton.setObjectName(_fromUtf8("memorizePushButton")) + self.gridLayout_2.addWidget(self.memorizePushButton, 0, 1, 1, 1) + self.mem1PushButton = QtGui.QPushButton(self.centralwidget) + self.mem1PushButton.setObjectName(_fromUtf8("mem1PushButton")) + self.gridLayout_2.addWidget(self.mem1PushButton, 1, 0, 1, 1) + self.runPushButton = QtGui.QPushButton(self.centralwidget) + self.runPushButton.setObjectName(_fromUtf8("runPushButton")) + self.gridLayout_2.addWidget(self.runPushButton, 2, 0, 1, 1) + self.mem2PushButton = QtGui.QPushButton(self.centralwidget) + self.mem2PushButton.setObjectName(_fromUtf8("mem2PushButton")) + self.gridLayout_2.addWidget(self.mem2PushButton, 1, 1, 1, 1) + self.mem3PushButton = QtGui.QPushButton(self.centralwidget) + self.mem3PushButton.setObjectName(_fromUtf8("mem3PushButton")) + self.gridLayout_2.addWidget(self.mem3PushButton, 1, 2, 1, 1) + self.computeSynWeightsPushButton = QtGui.QPushButton(self.centralwidget) + self.computeSynWeightsPushButton.setObjectName(_fromUtf8("computeSynWeightsPushButton")) + self.gridLayout_2.addWidget(self.computeSynWeightsPushButton, 2, 1, 1, 1) + self.mem4PushButton = QtGui.QPushButton(self.centralwidget) + self.mem4PushButton.setObjectName(_fromUtf8("mem4PushButton")) + self.gridLayout_2.addWidget(self.mem4PushButton, 1, 3, 1, 1) + self.inputPushButton = QtGui.QPushButton(self.centralwidget) + self.inputPushButton.setObjectName(_fromUtf8("inputPushButton")) + self.gridLayout_2.addWidget(self.inputPushButton, 2, 2, 1, 1) + self.saveInputPushButton = QtGui.QPushButton(self.centralwidget) + self.saveInputPushButton.setObjectName(_fromUtf8("saveInputPushButton")) + self.gridLayout_2.addWidget(self.saveInputPushButton, 2, 3, 1, 1) + self.aPushButton = QtGui.QPushButton(self.centralwidget) + self.aPushButton.setObjectName(_fromUtf8("aPushButton")) + self.gridLayout_2.addWidget(self.aPushButton, 3, 0, 1, 1) + self.bPushButton = QtGui.QPushButton(self.centralwidget) + self.bPushButton.setObjectName(_fromUtf8("bPushButton")) + self.gridLayout_2.addWidget(self.bPushButton, 3, 1, 1, 1) + self.cPushButton = QtGui.QPushButton(self.centralwidget) + self.cPushButton.setObjectName(_fromUtf8("cPushButton")) + self.gridLayout_2.addWidget(self.cPushButton, 3, 2, 1, 1) + self.dPushButton = QtGui.QPushButton(self.centralwidget) + self.dPushButton.setObjectName(_fromUtf8("dPushButton")) + self.gridLayout_2.addWidget(self.dPushButton, 3, 3, 1, 1) + self.verticalLayout.addLayout(self.gridLayout_2) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtGui.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 389, 25)) + self.menubar.setObjectName(_fromUtf8("menubar")) + self.menuQuit = QtGui.QMenu(self.menubar) + self.menuQuit.setObjectName(_fromUtf8("menuQuit")) + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtGui.QStatusBar(MainWindow) + self.statusbar.setObjectName(_fromUtf8("statusbar")) + MainWindow.setStatusBar(self.statusbar) + self.actionQuit = QtGui.QAction(MainWindow) + self.actionQuit.setObjectName(_fromUtf8("actionQuit")) + self.menuQuit.addAction(self.actionQuit) + self.menubar.addAction(self.menuQuit.menuAction()) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Hopfield Demo (MOOSE)", None, QtGui.QApplication.UnicodeUTF8)) + self.clearDisplayPushButton.setText(QtGui.QApplication.translate("MainWindow", "Clear", None, QtGui.QApplication.UnicodeUTF8)) + self.randomizePushButton.setText(QtGui.QApplication.translate("MainWindow", "Randomize", None, QtGui.QApplication.UnicodeUTF8)) + self.clearMemPushButton.setText(QtGui.QApplication.translate("MainWindow", "ClearMem", None, QtGui.QApplication.UnicodeUTF8)) + self.memorizePushButton.setText(QtGui.QApplication.translate("MainWindow", "Memorize", None, QtGui.QApplication.UnicodeUTF8)) + self.mem1PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem1", None, QtGui.QApplication.UnicodeUTF8)) + self.runPushButton.setText(QtGui.QApplication.translate("MainWindow", "Run", None, QtGui.QApplication.UnicodeUTF8)) + self.mem2PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem2", None, QtGui.QApplication.UnicodeUTF8)) + self.mem3PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem3", None, QtGui.QApplication.UnicodeUTF8)) + self.computeSynWeightsPushButton.setText(QtGui.QApplication.translate("MainWindow", "Compute", None, QtGui.QApplication.UnicodeUTF8)) + self.mem4PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem4", None, QtGui.QApplication.UnicodeUTF8)) + self.inputPushButton.setText(QtGui.QApplication.translate("MainWindow", "Input", None, QtGui.QApplication.UnicodeUTF8)) + self.saveInputPushButton.setText(QtGui.QApplication.translate("MainWindow", "Save ip", None, QtGui.QApplication.UnicodeUTF8)) + self.aPushButton.setText(QtGui.QApplication.translate("MainWindow", "A", None, QtGui.QApplication.UnicodeUTF8)) + self.bPushButton.setText(QtGui.QApplication.translate("MainWindow", "B", None, QtGui.QApplication.UnicodeUTF8)) + self.cPushButton.setText(QtGui.QApplication.translate("MainWindow", "C", None, QtGui.QApplication.UnicodeUTF8)) + self.dPushButton.setText(QtGui.QApplication.translate("MainWindow", "D", None, QtGui.QApplication.UnicodeUTF8)) + self.menuQuit.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8)) + self.actionQuit.setText(QtGui.QApplication.translate("MainWindow", "Quit", None, QtGui.QApplication.UnicodeUTF8)) + diff --git a/examples/hopfield/hopfield_ui.ui b/examples/hopfield/hopfield_ui.ui new file mode 100644 index 0000000..a09b9ac --- /dev/null +++ b/examples/hopfield/hopfield_ui.ui @@ -0,0 +1,2672 @@ + + + MainWindow + + + + 0 + 0 + 389 + 492 + + + + Hopfield Demo (MOOSE) + + + QTabWidget::Rounded + + + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + 0 + 0 + + + + + 27 + 27 + + + + background-color: rgb(0, 0, 0); + + + + + + true + + + + + + + + + + + Clear + + + + + + + Randomize + + + + + + + ClearMem + + + + + + + Memorize + + + + + + + Mem1 + + + + + + + Run + + + + + + + Mem2 + + + + + + + Mem3 + + + + + + + Compute + + + + + + + Mem4 + + + + + + + Input + + + + + + + Save ip + + + + + + + A + + + + + + + B + + + + + + + C + + + + + + + D + + + + + + + + + + + 0 + 0 + 389 + 25 + + + + + File + + + + + + + + + Quit + + + + + + + signal1() + + diff --git a/examples/hopfield/input.csv b/examples/hopfield/input.csv new file mode 100644 index 0000000..10f7834 --- /dev/null +++ b/examples/hopfield/input.csv @@ -0,0 +1,10 @@ +1 0 0 0 0 1 1 0 1 1 +1 0 1 0 1 0 0 1 0 1 +1 1 0 1 0 0 1 0 1 0 +1 0 1 0 1 0 0 1 0 1 +0 1 0 1 0 1 1 1 1 0 +0 1 1 0 0 0 0 0 1 1 +0 0 1 1 1 1 0 1 0 1 +0 1 1 1 0 0 1 0 0 0 +0 1 1 0 1 1 0 1 0 1 +0 1 1 1 0 1 1 0 1 1 \ No newline at end of file diff --git a/examples/hopfield/memory1.csv b/examples/hopfield/memory1.csv new file mode 100644 index 0000000..bbe00d7 --- /dev/null +++ b/examples/hopfield/memory1.csv @@ -0,0 +1,10 @@ +1 1 0 1 1 1 1 0 1 1 +1 0 1 0 1 1 0 1 0 1 +0 1 0 1 0 0 1 0 1 0 +1 0 1 0 1 1 0 1 0 1 +1 1 0 1 0 1 1 0 1 0 +1 1 0 1 1 1 1 0 1 1 +1 0 1 0 1 1 0 1 0 1 +0 1 0 1 0 0 1 0 1 0 +1 0 1 0 1 1 0 1 0 1 +1 1 0 1 0 1 1 0 1 0 \ No newline at end of file diff --git a/examples/hopfield/memory2.csv b/examples/hopfield/memory2.csv new file mode 100644 index 0000000..c55d998 --- /dev/null +++ b/examples/hopfield/memory2.csv @@ -0,0 +1,10 @@ +0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 +0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 +0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 +0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 +0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 \ No newline at end of file diff --git a/examples/hopfield/test.py b/examples/hopfield/test.py new file mode 100644 index 0000000..8ff674c --- /dev/null +++ b/examples/hopfield/test.py @@ -0,0 +1,68 @@ +import moose +from pylab import * +from moose.utils import * +import numpy as np + +inputGiven = 1 +moose.Neutral('/elec') +pg = moose.PulseGen('/elec/inPulGen') +pgTable = moose.Table('/elec/inPulGen/pgTable') +moose.connect(pgTable, 'requestOut', pg, 'getOutputValue') + +pg.firstDelay = 10e-3 +pg.firstWidth = 2e-03 +pg.firstLevel = 3 +pg.secondDelay = 1.0 + +cellPath = '/cell' + +# cell = moose.LeakyIaF(cellPath) +# cell.setField('Cm',1e-6) +# cell.setField('Rm',1e4) +# cell.setField('Em',-0.07) +# cell.setField('initVm',-0.05) +# cell.setField('Vreset',-0.07) +# cell.setField('Vthreshold',0.0) +# cell.setField('refractoryPeriod',0.01) + +cell = moose.IntFire(cellPath) +cell.setField('tau',10e-3) +#cell.setField('Vm', 1.0) +cell.setField('refractoryPeriod', 5e-3) +cell.setField('thresh', 0.9) +cell.synapse.num = 1 +cell.synapse[0].weight = 0.91 +cell.synapse[0].delay = 10e-3 +#this cell fires only when synaptic weight reaching it exceeds threshold - resets to neg and resets to 0 in refractoryPeriod time +#else, goes back to 0 in tau time + +VmVal = moose.Table(cellPath+'/Vm_cell') +print 'table>cellVm:', moose.connect(VmVal, 'requestOut', cell, 'getVm') +spikeTime = moose.Table(cellPath+'/spikeTimes') +print 'table>cellSpike:', moose.connect(cell, 'spike', spikeTime, 'input') + +inSpkGen = moose.SpikeGen(cellPath+'/inSpkGen') +inSpkGen.setField('threshold', 2.0) +inSpkGen.setField('edgeTriggered', True) + +if inputGiven == 1: + print 'pulse>spike:', moose.connect(pg, 'output', moose.element(cellPath+'/inSpkGen'), 'Vm') + inTable = moose.Table(cellPath+'/inSpkGen/inTable') + print 'table>spike:',moose.connect(inTable, 'requestOut', inSpkGen, 'getHasFired') + +print 'spike>cell:', moose.connect(inSpkGen, 'spikeOut', cell.synapse[0] ,'addSpike') +#print 'spike>cell:', moose.connect(pg, 'output', cell ,'injectDest') + +moose.setClock(0, 1e-4) +moose.useClock(0, '/cell,/cell/##,/elec/##','process') +moose.reinit() +moose.start(0.2) + +subplot(311) +plot(np.arange(0,0.2,0.2/len(pgTable.vector[1:])),pgTable.vector[1:]) +subplot(312) +#plot(inTable.vector[1:]) +scatter(spikeTime.vector,np.ones(len(spikeTime.vector))) +subplot(313) +plot(np.arange(0,0.2,0.2/len(pgTable.vector[1:])),VmVal.vector[1:]) +show() diff --git a/examples/izhikevich/Izhikevich.py b/examples/izhikevich/Izhikevich.py new file mode 100644 index 0000000..f6cf12e --- /dev/null +++ b/examples/izhikevich/Izhikevich.py @@ -0,0 +1,537 @@ +# Izhikevich.py --- +# +# Filename: Izhikevich.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri May 28 14:42:33 2010 (+0530) +# Version: +# Last-Updated: Tue Sep 11 14:27:18 2012 (+0530) +# By: subha +# Update #: 1212 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# threhold variablity to be checked. +# Bistability not working. +# DAP working with increased parameter value 'a' +# inhibition induced spiking kind of working but not matching with the paper figure +# inhibition induced bursting kind of working but not matching with the paper figure +# Accommodation cannot work with the current implementation: because the equation for u is not what is mentioned in the paper +# it is: u = u + tau*a*(b*(V+65)); [It is nowhere in the paper and you face it only if you look at the matlab code for figure 1]. +# It is not possible to tune a, b, c, d in any way to produce this from: u = u + tau*a*(b*V - u) +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import time +from numpy import * +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../python') + +import moose + +class IzhikevichDemo: + """Class to setup and simulate the various kind of neuronal behaviour using Izhikevich model. + + Fields: + """ + # Paramteres for different kinds of behaviour described by Izhikevich + # (1. IEEE TRANSACTIONS ON NEURAL NETWORKS, VOL. 14, NO. 6, NOVEMBER 2003 + # and 2. IEEE TRANSACTIONS ON NEURAL NETWORKS, VOL. 15, NO. 5, SEPTEMBER + # 2004) + # Modified and enhanced using: http://www.izhikevich.org/publications/figure1.m + # The entries in the tuple are as follows: + # fig. no. in paper (2), parameter a, parameter b, parameter c (reset value of v in mV), parameter d (after-spike reset value of u), injection current I (uA), initial value of Vm, duration of simulation (ms) + # + # They are all in whatever unit they were in the paper. Just before use we convert them to SI. + parameters = { + "tonic_spiking": ['A', 0.02 , 0.2 , -65.0, 6.0 , 14.0, -70.0, 100.0], # Fig. 1.A + "phasic_spiking": ['B', 0.02 , 0.25 , -65.0, 6.0 , 0.5, -64.0, 200.0], # Fig. 1.B + "tonic_bursting": ['C', 0.02 , 0.2 , -50.0, 2.0 , 15.0, -70.0, 220.0], # Fig. 1.C + "phasic_bursting": ['D', 0.02 , 0.25 , -55.0, 0.05 , 0.6, -64.0, 200.0], # Fig. 1.D + "mixed_mode": ['E', 0.02 , 0.2 , -55.0, 4.0 , 10.0, -70.0, 160.0], # Fig. 1.E + "spike_freq_adapt": ['F', 0.01 , 0.2 , -65.0, 8.0 , 30.0, -70.0, 85.0 ], # Fig. 1.F # spike frequency adaptation + "Class_1": ['G', 0.02 , -0.1 , -55.0, 6.0 , 0, -60.0, 300.0], # Fig. 1.G # Spikining Frequency increases with input strength + "Class_2": ['H', 0.2 , 0.26 , -65.0, 0.0 , 0, -64.0, 300.0], # Fig. 1.H # Produces high frequency spikes + "spike_latency": ['I', 0.02 , 0.2 , -65.0, 6.0 , 7.0, -70.0, 100.0], # Fig. 1.I + "subthresh_osc": ['J', 0.05 , 0.26 , -60.0, 0.0 , 0, -62.0, 200.0], # Fig. 1.J # subthreshold oscillations + "resonator": ['K', 0.1 , 0.26 , -60.0, -1.0 , 0, -62.0, 400.0], # Fig. 1.K + "integrator": ['L', 0.02 , -0.1 , -55.0, 6.0 , 0, -60.0, 100.0], # Fig. 1.L + "rebound_spike": ['M', 0.03 , 0.25 , -60.0, 4.0 , -15, -64.0, 200.0], # Fig. 1.M + "rebound_burst": ['N', 0.03 , 0.25 , -52.0, 0.0 , -15, -64.0, 200.0], # Fig. 1.N + "thresh_var": ['O', 0.03 , 0.25 , -60.0, 4.0 , 0, -64.0, 100.0], # Fig. 1.O # threshold variability + "bistable": ['P', 0.1 , 0.26 , -60.0, 0.0 , 1.24, -61.0, 300.0], # Fig. 1.P + "DAP": ['Q', 1.15 , 0.2 , -60.0, -21.0 , 20, -70.0, 50.0], # Fig. 1.Q # Depolarizing after-potential - a had to be increased in order to reproduce the figure + "accommodation": ['R', 0.02 , 1.0 , -55.0, 4.0 , 0, -65.0, 400.0], # Fig. 1.R + "iispike": ['S', -0.02 , -1.0 , -60.0, 8.0 , 75.0, -63.8, 350.0], # Fig. 1.S # inhibition-induced spiking + "iiburst": ['T', -0.026, -1.0 , -45.0, 0.0 , 75.0, -63.8, 350.0] # Fig. 1.T # inhibition-induced bursting + } + + documentation = { + "tonic_spiking": """ +Neuron is normally silent but spikes when stimulated with a current injection.""", + + "phasic_spiking": """ +Neuron fires a single spike only at the start of a current pulse.""", + + "tonic_bursting": """ +Neuron is normally silent but produces bursts of spikes when +stimulated with current injection.""", + + "phasic_bursting": """ +Neuron is normally silent but produces a burst of spikes at the +beginning of an input current pulse.""", + + "mixed_mode": """ +Neuron fires a burst at the beginning of input current pulse, but then +switches to tonic spiking.""", + + "spike_freq_adapt": """ +Neuron fires spikes when a current injection is applied, but at a +gradually reducing rate.""", + + "Class_1": """ +Neuron fires low frequency spikes with weak input current injection.""", + + "Class_2": """ +Neuron fires high frequency (40-200 Hz) spikes when stimulated with +current injection.""", + + "spike_latency": """ +The spike starts after a delay from the onset of current +injection. The delay is dependent on strength of input.""", + + "subthresh_osc": """ +Even at subthreshold inputs a neuron exhibits oscillatory membrane potential.""", + + "resonator": """ +Neuron fires spike only when an input pulsetrain of a frequency + similar to that of the neuron's subthreshold oscillatory frequency is + applied.""", + + "integrator": """ +The chances of the neuron firing increases with increase in the frequency +of input pulse train.""", + + "rebound_spike": """ +When the neuron is released from an inhibitory input, it fires a spike.""", + + "rebound_burst": """ +When the neuron is released from an inhibitory input, it fires a burst + of action potentials.""", + + "thresh_var": """ +Depending on the previous input, the firing threshold of a neuron may +change. In this example, the first input pulse does not produce +spike, but when the same input is applied after an inhibitory input, +it fires.""", + + "bistable": """ +These neurons switch between two stable modes (resting and tonic spiking). +The switch happens via an excitatory or inhibitory input.""", + + "DAP": """ +After firing a spike, the membrane potential shows a prolonged depolarized +after-potential.""", + + "accommodation": """ +These neurons do not respond to slowly rising input, but a sharp increase +in input may cause firing.""", + + "iispike": """ +These neurons fire in response to inhibitory input.""", + + "iiburst": """ +These neurons show bursting in response to inhibitory input.""" + } + + def __init__(self): + """Initialize the object.""" + self.model_container = moose.Neutral('/model') + self.data_container = moose.Neutral('/data') + self.neurons = {} + self.Vm_tables = {} + self.u_tables = {} + self.inject_tables = {} + self.inputs = {} + self.simtime = 100e-3 + self.dt = 0.25e-3 + self.steps = int(self.simtime/self.dt) + moose.setClock(0, self.dt) + moose.setClock(1, self.dt) + moose.setClock(2, self.dt) + self.scheduled = {} # this is to bypass multiple clock issue + self.neuron = None + + def setup(self, key): + neuron = self._get_neuron(key) + pulsegen = self._make_pulse_input(key) + if pulsegen is None: + print key, 'Not implemented.' + + def simulate(self, key): + self.setup(key) + return self.run(key) + + def run(self, key): + try: + Vm = self.Vm_tables[key] + u = self.u_tables[key] + except KeyError, e: + Vm = moose.Table(self.data_container.path + '/' + key + '_Vm') + nrn = self.neurons[key] + moose.connect(Vm, 'requestOut', nrn, 'getVm') + utable = moose.Table(self.data_container.path + '/' + key + '_u') + utable.connect('requestOut', self.neurons[key], 'getU') + self.Vm_tables[key] = Vm + self.u_tables[key] = utable + try: + Im = self.inject_tables[key] + except KeyError, e: + Im = moose.Table(self.data_container.path + '/' + key + '_inject') # May be different for non-pulsegen sources. + Im.connect('requestOut', self._get_neuron(key), 'getIm') + self.inject_tables[key] = Im + self.simtime = IzhikevichDemo.parameters[key][7] * 1e-3 + for obj in moose.wildcardFind('%s/##' % (self.model_container.path)): + if obj not in self.scheduled: + moose.useClock(0, obj.path, 'process') + self.scheduled[obj] = True + for obj in moose.wildcardFind('%s/##' % (self.data_container.path)): + if obj not in self.scheduled: + moose.useClock(2, obj.path, 'process') + self.scheduled[obj] = True + moose.reinit() + moose.start(self.simtime) + while moose.isRunning(): + time.sleep(100) + time = linspace(0, IzhikevichDemo.parameters[key][7], len(Vm.vector)) + # DEBUG + nrn = self._get_neuron(key) + print 'a = %g, b = %g, c = %g, d = %g, initVm = %g, initU = %g' % (nrn.a,nrn.b, nrn.c, nrn.d, nrn.initVm, nrn.initU) + #! DEBUG + return (time, Vm, Im) + + + def _get_neuron(self, key): + try: + params = IzhikevichDemo.parameters[key] + except KeyError as e: + print ' %s : Invalid neuron type. The valid types are:' % (key) + for key in IzhikevichDemo.parameters: + print key + raise e + try: + neuron = self.neurons[key] + return neuron + except KeyError, e: + neuron = moose.IzhikevichNrn(self.model_container.path + '/' + key) + + if key == 'integrator' or key == 'Class_1': # Integrator has different constants + neuron.beta = 4.1e3 + neuron.gamma = 108.0 + if key == 'accommodation': + neuron.accommodating = True + neuron.u0 = -0.065 + self.neuron = neuron + neuron.a = params[1] * 1e3 # ms^-1 -> s^-1 + neuron.b = params[2] * 1e3 # ms^-1 -> s^-1 + neuron.c = params[3] * 1e-3 # mV -> V + neuron.d = params[4] # d is in mV/ms = V/s + neuron.initVm = params[6] * 1e-3 # mV -> V + neuron.Vmax = 0.03 # mV -> V + if key != 'accommodation': + neuron.initU = neuron.initVm * neuron.b + else: + neuron.initU = -16.0 # u is in mV/ms = V/s + moose.showfield(neuron) + self.neurons[key] = neuron + return neuron + + def _make_pulse_input(self, key): + """This is for creating a pulse generator for use as a current + source for all cases except Class_1, Class_2, resonator, + integrator, thresh_var and accommodation.""" + try: + return self.inputs[key] + except KeyError: + pass # continue to the reset of the function + baseLevel = 0.0 + firstWidth = 1e6 + firstDelay = 0.0 + firstLevel = IzhikevichDemo.parameters[key][5] * 1e-6 + secondDelay = 1e6 + secondWidth = 0.0 + secondLevel = 0.0 + if key == 'tonic_spiking': + firstDelay = 10e-3 + elif key == 'phasic_spiking': + firstDelay = 20e-3 + elif key == 'tonic_bursting': + firstDelay = 22e-3 + elif key == 'phasic_bursting': + firstDelay = 20e-3 + elif key == 'mixed_mode': + firstDelay = 16e-3 + elif key == 'spike_freq_adapt': + firstDelay = 8.5e-3 + elif key == 'spike_latency': + firstDelay = 10e-3 + firstWidth = 3e-3 + elif key == 'subthresh_osc': + firstDelay = 20e-3 + firstWidth = 5e-3 + firstLevel = 2e-9 + elif key == 'rebound_spike': + firstDelay = 20e-3 + firstWidth = 5e-3 + elif key == 'rebound_burst': + firstDelay = 20e-3 + firstWidth = 5e-3 + elif key == 'bistable': + input_table = self._make_bistable_input() + self.inputs[key] = input_table + return input_table + elif key == 'DAP': + firstDelay = 9e-3 + firstWidth = 2e-3 + elif (key == 'iispike') or (key == 'iiburst'): + baseLevel = 80e-9 + firstDelay = 50e-3 + firstWidth = 200e-3 + fisrtLevel = 75e-9 + elif key == 'Class_1': + input_table = self._make_Class_1_input() + self.inputs[key] = input_table + return input_table + elif key == 'Class_2': + input_table = self._make_Class_2_input() + self.inputs[key] = input_table + return input_table + elif key == 'resonator': + input_table = self._make_resonator_input() + self.inputs[key] = input_table + return input_table + elif key == 'integrator': + input_table = self._make_integrator_input() + self.inputs[key] = input_table + return input_table + elif key == 'accommodation': + input_table = self._make_accommodation_input() + self.inputs[key] = input_table + return input_table + elif key == 'thresh_var': + input_table = self._make_thresh_var_input() + self.inputs[key] = input_table + return input_table + else: + print key, ': Stimulus is not based on pulse generator.' + raise + pulsegen = self._make_pulsegen(key, + firstLevel, + firstDelay, + firstWidth, + secondLevel, + secondDelay, + secondWidth, baseLevel) + self.inputs[key] = pulsegen + return pulsegen + + + def _make_pulsegen(self, key, firstLevel, firstDelay, firstWidth=1e6, secondLevel=0, secondDelay=1e6, secondWidth=0, baseLevel=0): + pulsegen = moose.PulseGen(self.model_container.path + '/' + key + '_input') + pulsegen.firstLevel = firstLevel + pulsegen.firstDelay = firstDelay + pulsegen.firstWidth = firstWidth + pulsegen.secondLevel = secondLevel + pulsegen.secondDelay = secondDelay + pulsegen.secondWidth = secondWidth + pulsegen.baseLevel = baseLevel + nrn = self._get_neuron(key) + moose.connect(pulsegen, 'output', nrn, 'injectMsg') + # self.stimulus_table = moose.Table(self.data_container.path + '/stimulus') + # self.stimulus_table.connect('requestOut', pulsegen, 'getOutputValue') + return pulsegen + + def _make_Class_1_input(self): + input_table = moose.StimulusTable(self.model_container.path + '/' + 'Class_1_input') + input_table.stepSize = self.dt + input_table.startTime = 30e-3 # The ramp starts at 30 ms + input_table.stopTime = IzhikevichDemo.parameters['Class_1'][7] * 1e-3 + # matlab code: if (t>T1) I=(0.075*(t-T1)); else I=0; + input_vec = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1.0) * 0.075 * self.dt * 1e3 * 1e-9 + input_table.vector = input_vec + input_table.connect('output', self._get_neuron('Class_1'), 'injectMsg') + self.stimulus_table = moose.Table(self.data_container.path + '/stimulus') + moose.connect(input_table, 'output', self.stimulus_table, 'input') + return input_table + + def _make_Class_2_input(self): + key = 'Class_2' + input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') + input_table.stepSize = self.dt + input_table.startTime = 30e-3 # The ramp starts at 30 ms + input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 + # The matlab code is: if (t>T1) I=-0.5+(0.015*(t-T1)); else I=-0.5 + # convert dt from s to ms, and convert total current from nA to A. + input_vec = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1.0) * 0.015 * self.dt * 1e3 * 1e-9 - 0.05*1e-9 + input_table.vector = input_vec + input_table.connect('output', self._get_neuron(key), 'injectMsg') + return input_table + + def _make_bistable_input(self): + key = 'bistable' + input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') + input_table.stepSize = self.dt + input_table.startTime = 0 + input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 + t1 = IzhikevichDemo.parameters[key][7] * 1e-3/8 + t2 = 216e-3 + t = np.arange(0, + int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize))) * self.dt + input_vec = np.where(np.logical_or(np.logical_and(t > t1, t < t1+5e-3), + np.logical_and(t > t2, t < t2+5e-3)), + 1.24e-9, + 0.24e-9) + input_table.vector = input_vec + input_table.connect('output', self._get_neuron(key), 'injectMsg') + return input_table + + def _make_resonator_input(self): + key = 'resonator' + input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') + input_table.stepSize = self.dt + input_table.startTime = 0 + input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 + t1 = IzhikevichDemo.parameters[key][7] * 1e-3/10 + t2 = t1 + 20e-3 + t3 = 0.7 * IzhikevichDemo.parameters[key][7] * 1e-3 + t4 = t3 + 40e-3 + t = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1) * self.dt + input_vec = np.zeros(t.shape) + idx = np.nonzero(((t > t1) & (t < t1 + 4e-3)) | + ((t > t2) & (t < t2 + 4e-3)) | + ((t > t3) & (t < t3 + 4e-3)) | + ((t > t4) & (t < t4 + 4e-3)))[0] + input_vec[idx] = 0.65e-9 + input_table.vector = input_vec + input_table.connect('output', self._get_neuron(key), 'injectMsg') + return input_table + + def _make_integrator_input(self): + key = 'integrator' + input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') + input_table.stepSize = self.dt + input_table.startTime = 0 + input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 + t1 = IzhikevichDemo.parameters[key][7] * 1e-3/11 + t2 = t1 + 5e-3 + t3 = 0.7 * IzhikevichDemo.parameters[key][7] * 1e-3 + t4 = t3 + 10e-3 + t = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize))) * self.dt + input_vec = np.where(((t > t1) & (t < t1 + 2e-3)) | + ((t > t2) & (t < t2 + 2e-3)) | + ((t > t3) & (t < t3 + 2e-3)) | + ((t > t4) & (t < t4 + 2e-3)), + 9e-9, + 0.0) + input_table.vector = input_vec + input_table.connect('output', self._get_neuron(key), 'injectMsg') + return input_table + + def _make_accommodation_input(self): + key = 'accommodation' + input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') + input_table.stepSize = self.dt + input_table.startTime = 0 + input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 + input_vec = np.zeros(int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize))) + t = 0.0 + for ii in range(len(input_vec)): + if t < 200e-3: + input_vec[ii] = t * 1e-6/25 + elif t < 300e-3: + input_vec[ii] = 0.0 + elif t < 312.5e-3: + input_vec[ii] = 4e-6 * (t-300e-3)/12.5 + else: + input_vec[ii] = 0.0 + t = t + self.dt + input_table.vector = input_vec + input_table.connect('output', self._get_neuron(key), 'injectMsg') + return input_table + + def _make_thresh_var_input(self): + key = 'thresh_var' + input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') + input_table.stepSize = self.dt + input_table.startTime = 0 + input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 + t = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1) * self.dt + input_vec = np.zeros(t.shape) + input_vec[((t > 10e-3) & (t < 15e-3)) | ((t > 80e-3) & (t < 85e-3))] = 1e-9 + input_vec[(t > 70e-3) & (t < 75e-3)] = -6e-9 + input_table.vector = input_vec + nrn = self._get_neuron(key) + input_table.connect('output', nrn, 'injectMsg') + return input_table + + def getEquation(self, key): + params = IzhikevichDemo.parameters[key] + if key != 'accommodation': + equationText = "v' = 0.04v^2 + 5v + 140 - u + I
u' = a(bv - u)

If v >= 30 mV, v = c and u = u + d
where a = %g, b = %g, c = %g and d = %g." % (params[1], params[2], params[3], params[4]) + else: + equationText = "v' = 0.04v^2 + 5v + 140 - u + I
u' = ab(v + 65)

If v >= 30 mV, v = c and u = u + d
where a = %g, b = %g, c = %g and d = %g." % (params[1], params[2], params[3], params[4]) + return equationText + +import sys +try: + from pylab import * + if __name__ == '__main__': + key = 'thresh_var' + if len(sys.argv) > 1: + key = sys.argv[1] + demo = IzhikevichDemo() + (time, Vm, Im) = demo.simulate(key) + title(IzhikevichDemo.parameters[key][0] + '. ' + key) + subplot(3,1,1) + plot(time, Vm.vector) + subplot(3,1,2) + plot(time, Im.vector) + subplot(3,1,3) + show() + print 'Finished simulation.' +except ImportError: + print 'Matplotlib not installed.' + +# +# Izhikevich.py ends here diff --git a/examples/izhikevich/demogui_qt.py b/examples/izhikevich/demogui_qt.py new file mode 100644 index 0000000..753e98f --- /dev/null +++ b/examples/izhikevich/demogui_qt.py @@ -0,0 +1,169 @@ +# demo_gui.py --- +# +# Filename: demo_gui.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Jun 16 05:41:58 2010 (+0530) +# Version: +# Last-Updated: Tue Sep 11 14:26:13 2012 (+0530) +# By: subha +# Update #: 318 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +from PyQt4 import QtGui, QtCore +from PyQt4.Qt import Qt +import PyQt4.Qwt5 as Qwt +import numpy +from Izhikevich import IzhikevichDemo + + +class IzhikevichGui(QtGui.QMainWindow): + """This is a Qt version of the GUI""" + def __init__(self, *args): + QtGui.QMainWindow.__init__(self, *args) + self.demo = IzhikevichDemo() + self.signalMapper = QtCore.QSignalMapper(self) + self.demoFrame = QtGui.QFrame(self) + self.controlPanel = QtGui.QFrame(self.demoFrame) + self.figureNo = {} + self.buttons = {} + for key, value in IzhikevichDemo.parameters.items(): + button = QtGui.QPushButton(key, self.controlPanel) + self.figureNo[value[0]] = key + self.buttons[key] = button + keys = self.figureNo.keys() + keys.sort() + length = len(keys) + rows = int(numpy.rint(numpy.sqrt(length))) + cols = int(numpy.ceil(length * 1.0 / rows)) + layout = QtGui.QGridLayout() + for ii in range(rows): + for jj in range(cols): + index = ii * cols + jj + if index < length: + key = self.figureNo[keys[index]] + button = self.buttons[key] + button.setToolTip(self.tr(IzhikevichDemo.documentation[key])) + layout.addWidget(button, ii, jj) + self.connect(button, QtCore.SIGNAL('clicked()'), self.signalMapper, QtCore.SLOT('map()')) + self.signalMapper.setMapping(button, key) + + self.connect(self.signalMapper, QtCore.SIGNAL('mapped(const QString &)'), self._simulateAndPlot) + self.controlPanel.setLayout(layout) + self.plotPanel = QtGui.QFrame(self.demoFrame) + self.VmPlot = Qwt.QwtPlot(self.plotPanel) + self.VmPlot.setAxisTitle(Qwt.QwtPlot.xBottom, 'time (ms)') + self.VmPlot.setAxisTitle(Qwt.QwtPlot.yLeft, 'Vm (mV)') + self.VmPlot.replot() + self.ImPlot = Qwt.QwtPlot(self.plotPanel) + self.ImPlot.setAxisTitle(Qwt.QwtPlot.xBottom, 'time (ms)') + self.ImPlot.setAxisTitle(Qwt.QwtPlot.yLeft, 'Im (nA)') + self.vmPlotZoomer = self._make_zoomer(self.VmPlot) + self.imPlotZoomer = self._make_zoomer(self.ImPlot) + self.descriptionWidget = QtGui.QLabel('Click any of the buttons to simulate and plot the corresponding neuron.') + self.descriptionWidget.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Sunken) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self.descriptionWidget.setSizePolicy(sizePolicy) + self.VmPlot.setSizePolicy(sizePolicy) + self.ImPlot.setSizePolicy(sizePolicy) + layout = QtGui.QVBoxLayout() + layout.addWidget(self.VmPlot) + layout.addWidget(self.ImPlot) + layout.addWidget(self.descriptionWidget) + self.plotPanel.setLayout(layout) + layout = QtGui.QVBoxLayout() + layout.addWidget(self.plotPanel) + layout.addWidget(self.controlPanel) + self.demoFrame.setLayout(layout) + self.setCentralWidget(self.demoFrame) + + def _simulateAndPlot(self, key): + key = str(key) + equationText = self.demo.getEquation(key).replace('\n', '
') + doc = IzhikevichDemo.documentation[key].replace('\n', '
') + text = '%s: %s

Equation:
%s' % (key, doc, equationText) + self.descriptionWidget.setText(self.tr(text)) +# if key == 'accommodation': +# mbox = QtGui.QMessageBox(self) +# mbox.setText(self.tr('Accommodation cannot be shown with regular Izhikevich model.')) +# mbox.setDetailedText(self.tr('\ +# Equation for u for the accommodating neuron is: \ +# u\' = a * b * (V + 65)\n Which is different from \ +# the regular equation u\' = a * (b*V - u) and cannot \ +# be obtained from the latter by any choice of a and b.')) +# mbox.show() +# return + (time, Vm, Im) = self.demo.simulate(key) + Vm = numpy.array(Vm.vector) * 1e3 + Im = numpy.array(Im.vector) * 1e9 + self.VmPlot.clear() + self.ImPlot.clear() + curve = Qwt.QwtPlotCurve(self.tr(key + '_Vm')) + curve.setPen(QtCore.Qt.red) + curve.setData(time, numpy.array(Vm)) + curve.attach(self.VmPlot) + curve = Qwt.QwtPlotCurve(self.tr(key + '_Im')) + curve.setPen(QtCore.Qt.blue) + curve.setData(time, Im) + curve.attach(self.ImPlot) + self.imPlotZoomer.setZoomBase() + self.vmPlotZoomer.setZoomBase() + self.ImPlot.replot() + self.VmPlot.replot() + + + def _make_zoomer(self, plot): + zoomer = Qwt.QwtPlotZoomer(Qwt.QwtPlot.xBottom, + Qwt.QwtPlot.yLeft, + Qwt.QwtPicker.DragSelection, + Qwt.QwtPicker.AlwaysOn, + plot.canvas()) + zoomer.setRubberBandPen(QtGui.QPen(QtCore.Qt.white)) + zoomer.setTrackerPen(QtGui.QPen(QtCore.Qt.cyan)) + return zoomer + + +import sys +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + mainWin = IzhikevichGui() + mainWin.show() + sys.exit(app.exec_()) + +# +# demo_gui.py ends here diff --git a/examples/kinetics/test_ksolve.py b/examples/kinetics/test_ksolve.py new file mode 100644 index 0000000..84ab080 --- /dev/null +++ b/examples/kinetics/test_ksolve.py @@ -0,0 +1,488 @@ +# test_ksolve.py --- +# modified by Dilawar Singh Wed Aug 5 19:21:19 2015 + +import sys +import moose +import moose.utils as mu +import math +import os +import time + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def createSquid(): + """Create a single compartment squid model.""" + parent = moose.Neutral ('/n' ) + compt = moose.SymCompartment( '/n/compt' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 * 0.5 + compt.Rm = 4.2e5 * 5.0 + compt.Ra = 7639.44e3 + nachan = moose.HHChannel( '/n/compt/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) + yGate.useInterpolation = 1 + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') + + kchan = moose.HHChannel( '/n/compt/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') + return compt + +def createSpine( parentCompt, parentObj, index, frac, length, dia, theta ): + """Create spine of specified dimensions and index""" + RA = 1.0 + RM = 1.0 + CM = 0.01 + shaftDia = dia / 5.0 + sname = 'shaft' + str(index) + hname = 'head' + str(index) + shaft = moose.SymCompartment( parentObj.path + '/' + sname ) + moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single' ) + x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) + y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) + z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) + shaft.x0 = x + shaft.y0 = y + shaft.z0 = z + sy = y + length * math.cos( theta * math.pi / 180.0 ) + sz = z + length * math.sin( theta * math.pi / 180.0 ) + shaft.x = x + shaft.y = sy + shaft.z = sz + shaft.diameter = dia / 2.0 + shaft.length = length + xa = math.pi * shaftDia * shaftDia / 4 + circumference = math.pi * shaftDia + shaft.Ra = RA * length / xa + shaft.Rm = RM / ( length * circumference ) + shaft.Cm = CM * length * circumference + shaft.Em = EREST_ACT + shaft.initVm = EREST_ACT + + head = moose.SymCompartment( parentObj.path + '/' + hname ) + moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) + head.x0 = x + head.y0 = sy + head.z0 = sz + hy = sy + length * math.cos ( theta * math.pi / 180.0 ) + hz = sz + length * math.sin ( theta * math.pi / 180.0 ) + head.x = x + head.y = hy + head.z = hz + head.diameter = dia + head.length = length + xa = math.pi * dia * dia / 4.0 + circumference = math.pi * dia + head.Ra = RA * length / xa + head.Rm = RM / ( length * circumference ) + head.Cm = CM * length * circumference + head.Em = EREST_ACT + head.initVm = EREST_ACT + #print head.Rm, head.Ra, head.Cm, head.diameter, head.length + #print shaft.Rm, shaft.Ra, shaft.Cm, shaft.diameter, shaft.length + return head + +def createSpineWithReceptor( compt, cell, index, frac ): + FaradayConst = 96485.3415 # s A / mol + spineLength = 5.0e-6 + spineDia = 4.0e-6 + head = createSpine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) + gluR = moose.SynChan( head.path + '/gluR' ) + gluR.tau1 = 4e-3 + gluR.tau2 = 4e-3 + gluR.Gbar = 1e-6 + gluR.Ek= 10.0e-3 + moose.connect( head, 'channel', gluR, 'channel', 'Single' ) + synh = moose.SimpleSynHandler( gluR.path + '/synh' ) + moose.connect( synh, 'activationOut', gluR, 'activation' ) + + caPool = moose.CaConc( head.path + '/ca' ) + caPool.CaBasal = 1e-4 # 0.1 micromolar + caPool.tau = 0.01 + B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) + B = B / 20.0 # scaling factor for Ca buffering + caPool.B = B + moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) + + return synh + +def addPlot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table2( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/compt', 'getVm', 'elec/dendVm' ) + #addPlot( '/n/compt/Na', 'getGbar', 'elec/NaGbar' ) + addPlot( '/model/elec/compt/K', 'getGbar', 'elec/KGbar' ) + #addPlot( '/n/compt/Na', 'getIk', 'elec/NaIk' ) + #addPlot( '/n/compt/K', 'getIk', 'elec/KIk' ) + #addPlot( '/n/compt/Na', 'getEk', 'elec/NaEk' ) + #addPlot( '/n/compt/K', 'getEk', 'elec/KEk' ) + addPlot( '/model/elec/head0', 'getVm', 'elec/head0Vm' ) + addPlot( '/model/elec/head2', 'getVm', 'elec/head2Vm' ) + #addPlot( '/n/head2', 'getIm', 'elec/head2Im' ) + addPlot( '/model/elec/head0/ca', 'getCa', 'elec/head0Ca' ) + addPlot( '/model/elec/head1/ca', 'getCa', 'elec/head1Ca' ) + addPlot( '/model/elec/head2/ca', 'getCa', 'elec/head2Ca' ) + addPlot( '/model/elec/head0/gluR', 'getIk', 'elec/head0Ik' ) + addPlot( '/model/elec/head1/gluR', 'getIk', 'elec/head1Ik' ) + addPlot( '/model/elec/head2/gluR', 'getIk', 'elec/head2Ik' ) + addPlot( '/model/elec/head1/gluR', 'getGbar', 'elec/head1Gbar' ) + addPlot( '/model/elec/head2/gluR', 'getGbar', 'elec/head2Gbar' ) + #addPlot( '/n/head0/gluR', 'getGk', 'elec/head0Gk' ) + #addPlot( '/n/head2/gluR', 'getGk', 'elec/head2Gk' ) + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + records = {} + for x in moose.wildcardFind( '/graphs/##[TYPE=Table2]' ): + records[x.name] = x + mu.plotRecords(records, subplot=True, outfile='%s.png' % fname) + +def makeSpinyCompt(): + comptLength = 30e-6 + comptDia = 6e-6 + numSpines = 5 + compt = createSquid() + compt.inject = 0 + compt.x0 = 0 + compt.y0 = 0 + compt.z0 = 0 + compt.x = comptLength + compt.y = 0 + compt.z = 0 + compt.length = comptLength + compt.diameter = comptDia + #kchan = moose.element( '/n/compt/K' ) + #kchan.Gbar = 0.2e-3 + synInput = moose.SpikeGen( '/n/compt/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + cell = moose.element( '/n' ) + for i in range( numSpines ): + r = createSpineWithReceptor( compt, cell, i, i/float(numSpines) ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 * i * ( 4 - i ) + syn.delay = i * 1.0e-3 + +def createPool( compt, name, concInit ): + meshEntries = moose.element( compt.path + '/mesh' ) + pool = moose.Pool( compt.path + '/' + name ) + pool.concInit = concInit + pool.diffConst = 1e-11 + return pool + + +def createChemModel( neuroCompt, spineCompt, psdCompt ): + # Stuff in spine + psd + #psdCa = createPool( psdCompt, 'Ca', 0.0001 ) + psdGluR = createPool( psdCompt, 'psdGluR', 1 ) + headCa = createPool( spineCompt, 'Ca', 1e-4 ) + headGluR = createPool( spineCompt, 'headGluR', 2 ) + toPsd = createPool( spineCompt, 'toPsd', 0 ) + toPsdInact = createPool( spineCompt, 'toPsdInact', 1e-3 ) + turnOnPsd = moose.Reac( spineCompt.path + '/turnOnPsd' ) + moose.connect( turnOnPsd, 'sub', headCa, 'reac', 'OneToOne' ) + moose.connect( turnOnPsd, 'sub', toPsdInact, 'reac', 'OneToOne' ) + moose.connect( turnOnPsd, 'prd', toPsd, 'reac', 'OneToOne' ) + turnOnPsd.Kf = 1e3 + turnOnPsd.Kb = 1 + toPsdEnz = moose.Enz( toPsd.path + '/enz' ) + toPsdEnzCplx = moose.Pool( toPsdEnz.path + '/cplx' ) + toPsdEnzCplx.concInit = 0 + moose.connect( toPsdEnz, 'enz', toPsd, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'sub', headGluR, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'prd', psdGluR, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'cplx', toPsdEnzCplx, 'reac', 'OneToOne' ) + toPsdEnz.Km = 1.0e-3 + toPsdEnz.kcat = 10.0 + fromPsd = moose.Reac( psdCompt.path + '/fromPsd' ) + moose.connect( fromPsd, 'sub', psdGluR, 'reac', 'OneToOne' ) + moose.connect( fromPsd, 'prd', headGluR, 'reac', 'OneToOne' ) + fromPsd.Kf = 0.5 + fromPsd.Kb = 0.0 + # Stuff in dendrite + dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) + bufCa = moose.Pool( neuroCompt.path + '/bufCa' ) + bufCa.concInit = 1e-4 + pumpCa = moose.Reac( neuroCompt.path + '/pumpCa' ) + moose.connect( pumpCa, 'sub', dendCa, 'reac', 'OneToOne' ) + moose.connect( pumpCa, 'prd', bufCa, 'reac', 'OneToOne' ) + pumpCa.Kf = 1 + pumpCa.Kb = 1 + dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) + dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) + dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) + moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) + moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) + moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) + dendTurnOnKinase.Kf = 50000 + dendTurnOnKinase.Kb = 1 + dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) + dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) + kChan = createPool( neuroCompt, 'kChan', 1e-3 ) + kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) + moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) + dendKinaseEnz.Km = 1e-4 + dendKinaseEnz.kcat = 20 + dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) + moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) + moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) + dendPhosphatase.Kf = 1 + dendPhosphatase.Kb = 0.0 + + +# Just for printf debugging +def printMolVecs( title ): + print title + """ + nCa = moose.vec( '/model/chem/neuroMesh/Ca' ) + sCa = moose.vec( '/model/chem/spineMesh/Ca' ) + sR = moose.vec( '/model/chem/spineMesh/headGluR' ) + pR = moose.vec( '/model/chem/psdMesh/psdGluR' ) + print 'sizes: nCa, sCa, sR, pR = ', len(nCa), len(sCa), len(sR), len(pR) + #print 'nCa=', nCa.conc, ', sCa=', sCa.conc, ', sR=', sR.n, ', pR=', pR.n + print 'nCaConcInit=', nCa.concInit, ', sCa=', sCa.concInit + #print 'sRnInit=', sR.nInit, ', pR=', pR.nInit + print 'sRconcInit=', sR.concInit, ', pR=', pR.concInit + + #print 'nCaSize=', nCa.volume, ', sCa=', sCa.volume, ', sR=', sR.n, ', pR=', pR.n + """ + +def makeChemInCubeMesh(): + dendSide = 10.8e-6 + spineSide = 6.8e-6 + psdSide = 8.565e-7 + parent = moose.Neutral ('/model/chem' ) + neuroMesh = moose.CubeMesh( '/model/chem/neuroMesh' ) + spineMesh = moose.CubeMesh( '/model/chem/spineMesh' ) + psdMesh = moose.CubeMesh( '/model/chem/psdMesh' ) + coords = [dendSide] * 9 + coords[0] = 0 + coords[1] = 0 + coords[2] = 0 + neuroMesh.coords = coords + neuroMesh.preserveNumEntries = 1 + + coords = [spineSide] * 9 + coords[0] = dendSide + coords[1] = 0 + coords[2] = 0 + coords[3] = spineSide + dendSide + spineMesh.coords = coords + spineMesh.preserveNumEntries = 1 + + coords = [psdSide] * 9 + coords[0] = dendSide + spineSide + coords[1] = 0 + coords[2] = 0 + coords[3] = psdSide + spineSide + dendSide + psdMesh.coords = coords + psdMesh.preserveNumEntries = 1 + + createChemModel( neuroMesh, spineMesh, psdMesh ) + dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) + assert dendCa.volume == dendSide * dendSide * dendSide + spineCa = moose.element( '/model/chem/spineMesh/Ca' ) + assert spineCa.volume == spineSide * spineSide * spineSide + psdGluR = moose.element( '/model/chem/psdMesh/psdGluR' ) + assert psdGluR.volume == psdSide * psdSide * psdSide + dendKinaseEnzCplx = moose.element( '/model/chem/neuroMesh/Ca.kinase/enz/cplx' ) + assert dendKinaseEnzCplx.volume == dendSide * dendSide * dendSide + +def makeSolvers( elecDt ): + # Put in the solvers, see how they fare. + # Here we kludge in a single chem solver for the whole system. + ksolve = moose.Ksolve( '/model/ksolve' ) + stoich = moose.Stoich( '/model/stoich' ) + stoich.compartment = moose.element( '/model/chem/neuroMesh' ) + stoich.ksolve = ksolve + stoich.path = '/model/chem/##' + moose.useClock( 5, '/model/ksolve', 'init' ) + moose.useClock( 6, '/model/ksolve', 'process' ) + # Here is the elec solver + hsolve = moose.HSolve( '/model/hsolve' ) + moose.useClock( 1, '/model/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + +def makeCubeMultiscale(): + makeSpinyCompt() + model = moose.Neutral( '/model' ) + elec = moose.element( '/n' ) + elec.name = 'elec' + moose.move( elec, model ) + synInput = moose.element( '/model/elec/compt/synInput' ) + synInput.refractT = 47e-3 + makeChemInCubeMesh() + # set up a reaction to fake diffusion between compts. + headCa = moose.element( '/model/chem/spineMesh/Ca' ) + dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) + diffReac = moose.Reac( '/model/chem/spineMesh/diff' ) + moose.connect( diffReac, 'sub', headCa, 'reac' ) + moose.connect( diffReac, 'prd', dendCa, 'reac' ) + diffReac.Kf = 1 + diffReac.Kb = headCa.volume / dendCa.volume + + # set up adaptors + headCa = moose.element( '/model/chem/spineMesh/Ca' ) + dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) + adaptCa = moose.Adaptor( '/model/chem/adaptCa' ) + elecCa = moose.element( '/model/elec/head2/ca' ) + # There are 5 spine heads in the electrical model. Average their input. + for i in range( 5 ): + path = '/model/elec/head' + str( i ) + '/ca' + elecCa = moose.element( path ) + moose.connect( elecCa, 'concOut', adaptCa, 'input', 'Single' ) + moose.connect( adaptCa, 'output', headCa, 'setConc' ) + adaptCa.outputOffset = 0.0001 # 100 nM offset in chem. + adaptCa.scale = 0.05 # 0.06 to 0.003 mM + + adaptGluR = moose.Adaptor( '/model/chem/psdMesh/adaptGluR' ) + chemR = moose.element( '/model/chem/psdMesh/psdGluR' ) + # Here we connect up the chem adaptors to only 3 of the spine + # heads in the elec model, just to make it interesting. + elec1R = moose.element( '/model/elec/head1/gluR' ) + elec2R = moose.element( '/model/elec/head2/gluR' ) + elec3R = moose.element( '/model/elec/head3/gluR' ) + moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToAll' ) + moose.connect( adaptGluR, 'output', elec1R, 'setGbar', 'OneToAll' ) + moose.connect( adaptGluR, 'output', elec2R, 'setGbar', 'OneToAll' ) + moose.connect( adaptGluR, 'output', elec3R, 'setGbar', 'OneToAll' ) + adaptGluR.outputOffset = 1e-9 # pS + adaptGluR.scale = 1e-8 / 100 # from n to pS + + adaptK = moose.Adaptor( '/model/chem/neuroMesh/adaptK' ) + chemK = moose.element( '/model/chem/neuroMesh/kChan' ) + elecK = moose.element( '/model/elec/compt/K' ) + moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) + moose.connect( adaptK, 'output', elecK, 'setGbar', 'OneToAll' ) + adaptK.scale = 0.3 # from mM to Siemens + + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/chem/psdMesh/psdGluR', 'getN', 'psd0R' ) + addPlot( '/model/chem/spineMesh/Ca', 'getConc', 'spine0Ca' ) + addPlot( '/model/chem/neuroMesh/Ca', 'getConc', 'dend0Ca' ) + addPlot( '/model/chem/neuroMesh/kChan_p', 'getConc', 'kChan_p' ) + addPlot( '/model/chem/neuroMesh/kChan', 'getConc', 'kChan' ) + addPlot( '/model/chem/neuroMesh/Ca.kinase', 'getConc', 'dendKinase' ) + addPlot( '/model/chem/spineMesh/toPsd', 'getConc', 'toPsd0' ) + #addPlot( '/n/neuroMesh/Ca', 'getConc', 'dendCa' ) + #addPlot( '/n/neuroMesh/inact_kinase', 'getConc', 'inactDendKinase' ) + #addPlot( '/n/psdMesh/psdGluR', 'getN', 'psdGluR' ) + +def testCubeMultiscale( useSolver ): + elecDt = 10e-6 + chemDt = 1e-4 + plotDt = 5e-4 + plotName = 'mc.plot' + if ( useSolver ): + elecDt = 50e-6 + chemDt = 2e-3 + plotName = 'mcs.plot' + makeCubeMultiscale() + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment],/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=SynBase],/model/elec/##[ISA=ChanBase],/model/elec/##[ISA=CaConc]','process') + moose.useClock( 5, '/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + moose.useClock( 6, '/model/##[ISA=PoolBase],/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + if ( useSolver ): + makeSolvers( elecDt ) + moose.reinit() + t = time.time() + moose.start( 1.0 ) + print("Total time taken: %s sec for 1.0 sec of simulation" % (time.time() - t)) + dumpPlots( plotName ) + +def main(): + testCubeMultiscale( 1 ) + +if __name__ == '__main__': + main() + diff --git a/examples/moogli/color_update.py b/examples/moogli/color_update.py new file mode 100644 index 0000000..01e3be1 --- /dev/null +++ b/examples/moogli/color_update.py @@ -0,0 +1,108 @@ +import moogli +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import random +import numpy as np + +app = QtGui.QApplication(sys.argv) +filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" + ) +moose.neuroml.loadNeuroML_L123(filename) +morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") +morphology.create_group( "group-1" + , [ "/cells[0]/BigCellCML_0[0]/Seg0_dend_1043_1044[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1033_1034[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1019_1020[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1018_1019[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1016_1017[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1539_1540[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1579_1580[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1573_1574[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1572_1573[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1569_1570[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1559_1560[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1045_1046[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1021_1022[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1020_1021[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1581_1582[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1580_1581[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1046_1047[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1022_1023[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1027_1028[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1023_1024[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1028_1029[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1025_1026[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1024_1025[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1026_1027[0]" + ] + , 10.0 + , 200.0 + , [1.0, 0.0, 0.0, 1.0] + , [0.0, 1.0, 0.0, 1.0] + ) +morphology.create_group( "group-2" + , [ "/cells[0]/BigCellCML_0[0]/Seg0_dend_1076_1077[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1072_1073[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1099_1100[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1096_1097[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1108_1109[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1135_1136[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_35_36[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_655_656[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_535_536[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_716_717[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_14_15[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_87_88[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_236_237[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_218_219[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_172_173[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_152_153[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_363_364[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_362_363[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_344_345[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_341_342[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_320_321[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_312_313[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_453_454[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_449_450[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_437_438[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_426_427[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_418_419[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_409_410[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_407_408[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_396_397[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_394_395[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_390_391[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_389_390[0]" + , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1079_1080[0]" + ] + , 0.0 + , 1.0 + , [0.0, 1.0, 0.0, 1.0] + , [0.0, 0.0, 1.0, 1.0] + ) +def callback(morphology, viewer): + morphology.set_color( "group-1" + , np.random.random_sample((24,)) * (100.0 - 20.0) + 20.0 + ) + morphology.set_color( "group-2" + , np.random.random_sample((34,)) + ) + viewer.roll(0.05, 0) + viewer.pitch(0.05, 1) + viewer.yaw(0.05, 2) + return True + +viewer = moogli.DynamicMorphologyViewerWidget(morphology) +viewer.showMaximized() +viewer.split_horizontally(0) +viewer.split_vertically(1) +viewer.zoom(0.5, 0) +viewer.zoom(0.5, 1) +viewer.zoom(0.5, 2) +viewer.set_callback(callback) +app.exec_() diff --git a/examples/moogli/purkinje_simulation.py b/examples/moogli/purkinje_simulation.py new file mode 100644 index 0000000..02df05d --- /dev/null +++ b/examples/moogli/purkinje_simulation.py @@ -0,0 +1,115 @@ +""" +This script demonstrates how to use moogli to carry out a simulation and +simultaneously update the visualizer. +The visualizer remains active while the simulation is running. +""" + +import moogli +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import random +import numpy as np +import math + +# The QApplication class manages the GUI application's +# control flow and main settings +app = QtGui.QApplication(sys.argv) + + +# Load model from the neuroml file into moose +filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" + ) +popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) + +# setting up hsolve object for each neuron +for popinfo in popdict.values(): + for cell in popinfo[1].values(): + solver = moose.HSolve(cell.path + "/hsolve") + solver.target = cell.path + +# reinit moose to bring to a reliable initial state. +moose.reinit() + +SIMULATION_DELTA = 0.001 +SIMULATION_TIME = 0.03 + +ALL_COMPARTMENTS = map( lambda x : x.path + , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") + ) +BASE_VM_VALUE = -0.065 +PEAK_VM_VALUE = -0.060 +BASE_VM_COLOR = [1.0, 0.0, 0.0, 0.1] +PEAK_VM_COLOR = [0.0, 0.0, 1.0, 1.0] + +# Moogli requires a morphology object. Create a morphology object +# by reading the geometry details from all objects of type CompartmentBase +# inside /cells[0] +morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") + + +# Create a named group of compartments called 'group-all' +# which will contain all the compartments of the model. +# Each group has a strict upper and lower limit for the +# variable which is being visualized. +# Both limits map to colors provided to the api. +# The value of the variable is linearly mapped to a color value +# lying between the upper and lower color values. + +morphology.create_group( "group-all" # group name + , ALL_COMPARTMENTS # sequence of compartments belonging to this group + , BASE_VM_VALUE # base value of variable + , PEAK_VM_VALUE # peak value of variable + , BASE_VM_COLOR # color corresponding to base value + , PEAK_VM_COLOR # color corresponding to peak value + ) + +# set initial color of all compartments in accordance with their vm +morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Vm + , ALL_COMPARTMENTS + ) + ) + +# instantiate the visualizer with the morphology object created earlier +viewer = moogli.DynamicMorphologyViewerWidget(morphology) + +# by default the visualizer is shown maximized. +viewer.showMaximized() + +# Callback function will be called by the visualizer at regular intervals. +# The callback can modify both the morphology and viewer object's properties +# since they are passed as arguments. +def callback(morphology, viewer): + # run simulation for 1 ms + moose.start(SIMULATION_DELTA) + # change color of all the compartments according to their vm values. + # a value higher than peak value will be clamped to peak value + # a value lower than base value will be clamped to base value. + morphology.set_color( "group-all" + , map( lambda x : x.Vm + , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") + ) + ) + # if the callback returns true, it will be called again. + # if it returns false it will not be called ever again. + # the condition below ensures that simulation runs for 1 sec + if moose.element("/clock").currentTime < SIMULATION_TIME : return True + else : return False + +# set the callback function to be called after every idletime milliseconds +viewer.set_callback(callback, idletime = 0) + +# make sure that entire model is visible +viewer.pitch(math.pi / 2) +viewer.zoom(0.25) + +# Enter the main event loop and wait until exit() is called. +# It is necessary to call this function to start event handling. +# The main event loop receives events from the window system and +# dispatches these to the application widgets. + +app.exec_() diff --git a/examples/moogli/purkinje_simulation_with_rm.py b/examples/moogli/purkinje_simulation_with_rm.py new file mode 100644 index 0000000..4957c69 --- /dev/null +++ b/examples/moogli/purkinje_simulation_with_rm.py @@ -0,0 +1,187 @@ +""" +This script demonstrates how to use moogli to carry out a simulation and +simultaneously update the visualizer. Also another viewer shows the compartment +rm values. The visualizers remain active while the simulation is running. +""" + + +import moogli +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import random +import numpy as np +import math +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +# The QApplication class manages the GUI application's +# control flow and main settings +app = QtGui.QApplication(sys.argv) + +# Load model from the neuroml file into moose +filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" + ) +popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) + +# setting up hsolve object for each neuron +for popinfo in popdict.values(): + for cell in popinfo[1].values(): + solver = moose.HSolve(cell.path + "/hsolve") + solver.target = cell.path + +# reinit moose to bring to a reliable initial state. +moose.reinit() + +SIMULATION_DELTA = 0.001 +SIMULATION_TIME = 0.03 + +ALL_COMPARTMENTS = map( lambda x : x.path + , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") + ) + +BASE_RM_VALUE = min( map( lambda x : moose.element(x).Rm + , ALL_COMPARTMENTS + ) + ) +PEAK_RM_VALUE = max( map( lambda x : moose.element(x).Rm + , ALL_COMPARTMENTS + ) + ) +BASE_RM_COLOR = [0.0, 1.0, 0.0, 0.1] +PEAK_RM_COLOR = [1.0, 0.0, 0.0, 1.0] + +BASE_VM_VALUE = -0.065 +PEAK_VM_VALUE = -0.060 +BASE_VM_COLOR = [1.0, 0.0, 0.0, 0.1] +PEAK_VM_COLOR = [0.0, 0.0, 1.0, 1.0] + + +def create_vm_visualizer(): + # Moogli requires a morphology object. Create a morphology object + # by reading the geometry details from all objects of type CompartmentBase + # inside /cells[0] + vm_morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") + + + # Create a named group of compartments called 'group-all' + # which will contain all the compartments of the model. + # Each group has a strict upper and lower limit for the + # variable which is being visualized. + # Both limits map to colors provided to the api. + # The value of the variable is linearly mapped to a color value + # lying between the upper and lower color values. + + vm_morphology.create_group( "group-all" # group name + , ALL_COMPARTMENTS # sequence of compartments belonging to this group + , BASE_VM_VALUE # base value of variable + , PEAK_VM_VALUE # peak value of variable + , BASE_VM_COLOR # color corresponding to base value + , PEAK_VM_COLOR # color corresponding to peak value + ) + + + # set initial color of all compartments in accordance with their vm + vm_morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Vm + , ALL_COMPARTMENTS + ) + ) + + # instantiate the visualizer with the morphology object created earlier + vm_viewer = moogli.DynamicMorphologyViewerWidget(vm_morphology) + + # Callback function will be called by the visualizer at regular intervals. + # The callback can modify both the morphology and viewer object's properties + # since they are passed as arguments. + def callback(morphology, viewer): + # run simulation for 1 ms + moose.start(SIMULATION_DELTA) + + # change color of all the compartments according to their vm values. + # a value higher than peak value will be clamped to peak value + # a value lower than base value will be clamped to base value. + morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Vm + , ALL_COMPARTMENTS + ) + ) + # if the callback returns true, it will be called again. + # if it returns false it will not be called again. + # the condition below ensures that simulation runs for 1 sec + if moose.element("/clock").currentTime < SIMULATION_TIME : return True + else : return False + + + # set the callback function to be called after every idletime milliseconds + vm_viewer.set_callback(callback, idletime = 0) + + # make sure that entire model is visible + vm_viewer.pitch(math.pi / 2) + vm_viewer.zoom(0.25) + vm_viewer.setWindowTitle("Vm Visualization") + return vm_viewer + +def create_rm_visualizer(): + # Moogli requires a morphology object. Create a morphology object + # by reading the geometry details from all objects of type CompartmentBase + # inside /cells[0] + morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") + + # Create a named group of compartments called 'group-all' + # which will contain all the compartments of the model. + # Each group has a strict upper and lower limit for the + # variable which is being visualized. + # Both limits map to colors provided to the api. + # The value of the variable is linearly mapped to a color value + # lying between the upper and lower color values. + morphology.create_group( "group-all" # group name + , ALL_COMPARTMENTS # sequence of compartments belonging to this group + , BASE_RM_VALUE # base value of variable + , PEAK_RM_VALUE # peak value of variable + , BASE_RM_COLOR # color corresponding to base value + , PEAK_RM_COLOR # color corresponding to peak value + ) + + # set initial color of all compartments in accordance with their rm + morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Rm + , ALL_COMPARTMENTS + ) + ) + + # instantiate the visualizer with the morphology object created earlier + rm_viewer = moogli.MorphologyViewerWidget(morphology) + + # make sure that entire model is visible + rm_viewer.pitch(math.pi / 2) + rm_viewer.zoom(0.25) + rm_viewer.setWindowTitle("Rm") + return rm_viewer + +vm_visualizer = create_vm_visualizer() +rm_visualizer = create_rm_visualizer() +vm_visualizer.show() +rm_visualizer.show() + + + +# http://stackoverflow.com/questions/15861839/error-upon-app-shutdown-qglcontextmakecurrent-cannot-make-invalid-context-cu +def delete_gl_widget(): + global vm_visualizer + global rm_visualizer + vm_visualizer.setParent(None) + del vm_visualizer + rm_visualizer.setParent(None) + del rm_visualizer + +QApplication.instance().aboutToQuit.connect( delete_gl_widget ) + +# Enter the main event loop and wait until exit() is called. +# It is necessary to call this function to start event handling. +# The main event loop receives events from the window system and +# dispatches these to the application widgets. +app.exec_() diff --git a/examples/moogli/purkinje_simulation_with_rm_and_graph.py b/examples/moogli/purkinje_simulation_with_rm_and_graph.py new file mode 100644 index 0000000..ec886b2 --- /dev/null +++ b/examples/moogli/purkinje_simulation_with_rm_and_graph.py @@ -0,0 +1,219 @@ +""" +This script demonstrates how to use moogli to carry out a simulation and +simultaneously update the visualizer. Also another viewer shows the compartment +rm values. The visualizers remain active while the simulation is running. +Once the simulation finishes, a graph comes up, showing the soma vm values. +""" + +import moogli +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import random +import numpy as np +import math +from PyQt4.QtCore import * +from PyQt4.QtGui import * +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.figure import Figure + +# The QApplication class manages the GUI application's +# control flow and main settings +app = QtGui.QApplication(sys.argv) + +# Load model from the neuroml file into moose +filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" + ) +popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) + +# setting up hsolve object for each neuron +for popinfo in popdict.values(): + for cell in popinfo[1].values(): + solver = moose.HSolve(cell.path + "/hsolve") + solver.target = cell.path + +# create a table to store vm values +table = moose.Table("/soma_table") +moose.connect( table + , 'requestOut' + , moose.element("/cells[0]/BigCellCML_0[0]/Seg0_soma_0[0]") + , "getVm" + ) + +# reinit moose to bring to a reliable initial state. +moose.reinit() + +SIMULATION_DELTA = 0.001 +SIMULATION_TIME = 0.03 + +ALL_COMPARTMENTS = map( lambda x : x.path + , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") + ) + +BASE_RM_VALUE = min( map( lambda x : moose.element(x).Rm + , ALL_COMPARTMENTS + ) + ) +PEAK_RM_VALUE = max( map( lambda x : moose.element(x).Rm + , ALL_COMPARTMENTS + ) + ) +BASE_RM_COLOR = [0.0, 1.0, 0.0, 0.1] +PEAK_RM_COLOR = [1.0, 0.0, 0.0, 1.0] + +BASE_VM_VALUE = -0.065 +PEAK_VM_VALUE = -0.060 +BASE_VM_COLOR = [1.0, 0.0, 0.0, 0.1] +PEAK_VM_COLOR = [0.0, 0.0, 1.0, 1.0] + +"""Create a class for plotting vm""" +class PlotWidget(FigureCanvas): + """Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.).""" + def __init__(self, parent=None, width=5, height=4, dpi=100): + fig = Figure(figsize=(width, height), dpi=dpi) + self.axes = fig.add_subplot(111) + # We want the axes cleared every time plot() is called + self.axes.hold(False) + FigureCanvas.__init__(self, fig) + self.setParent(parent) + + FigureCanvas.setSizePolicy(self, + QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + FigureCanvas.updateGeometry(self) + +def create_vm_visualizer(): + # Moogli requires a morphology object. Create a morphology object + # by reading the geometry details from all objects of type CompartmentBase + # inside /cells[0] + vm_morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") + + + # Create a named group of compartments called 'group-all' + # which will contain all the compartments of the model. + # Each group has a strict upper and lower limit for the + # variable which is being visualized. + # Both limits map to colors provided to the api. + # The value of the variable is linearly mapped to a color value + # lying between the upper and lower color values. + + vm_morphology.create_group( "group-all" # group name + , ALL_COMPARTMENTS # sequence of compartments belonging to this group + , BASE_VM_VALUE # base value of variable + , PEAK_VM_VALUE # peak value of variable + , BASE_VM_COLOR # color corresponding to base value + , PEAK_VM_COLOR # color corresponding to peak value + ) + + + # set initial color of all compartments in accordance with their vm + vm_morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Vm + , ALL_COMPARTMENTS + ) + ) + + # instantiate the visualizer with the morphology object created earlier + vm_viewer = moogli.DynamicMorphologyViewerWidget(vm_morphology) + + # Callback function will be called by the visualizer at regular intervals. + # The callback can modify both the morphology and viewer object's properties + # since they are passed as arguments. + def callback(morphology, viewer): + # run simulation for 1 ms + moose.start(SIMULATION_DELTA) + + # change color of all the compartments according to their vm values. + # a value higher than peak value will be clamped to peak value + # a value lower than base value will be clamped to base value. + morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Vm + , ALL_COMPARTMENTS + ) + ) + # if the callback returns true, it will be called again. + # if it returns false it will not be called again. + # the condition below ensures that simulation runs for 1 sec + if moose.element("/clock").currentTime < SIMULATION_TIME : return True + else: + plot_widget = PlotWidget() + xs = np.linspace(0, moose.element("/clock").runTime, len(table.vector)) + ys = table.vector.copy() + plot_widget.axes.plot(xs, ys) + plot_widget.draw() + plot_widget.show() + plot_widget.setWindowTitle("Soma Vm") + return False + + + # set the callback function to be called after every idletime milliseconds + vm_viewer.set_callback(callback, idletime = 0) + + # make sure that entire model is visible + vm_viewer.pitch(math.pi / 2) + vm_viewer.zoom(0.25) + vm_viewer.setWindowTitle("Vm Visualization") + return vm_viewer + +def create_rm_visualizer(): + # Moogli requires a morphology object. Create a morphology object + # by reading the geometry details from all objects of type CompartmentBase + # inside /cells[0] + morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") + + # Create a named group of compartments called 'group-all' + # which will contain all the compartments of the model. + # Each group has a strict upper and lower limit for the + # variable which is being visualized. + # Both limits map to colors provided to the api. + # The value of the variable is linearly mapped to a color value + # lying between the upper and lower color values. + morphology.create_group( "group-all" # group name + , ALL_COMPARTMENTS # sequence of compartments belonging to this group + , BASE_RM_VALUE # base value of variable + , PEAK_RM_VALUE # peak value of variable + , BASE_RM_COLOR # color corresponding to base value + , PEAK_RM_COLOR # color corresponding to peak value + ) + + # set initial color of all compartments in accordance with their rm + morphology.set_color( "group-all" + , map( lambda x : moose.element(x).Rm + , ALL_COMPARTMENTS + ) + ) + + # instantiate the visualizer with the morphology object created earlier + rm_viewer = moogli.MorphologyViewerWidget(morphology) + + # make sure that entire model is visible + rm_viewer.pitch(math.pi / 2) + rm_viewer.zoom(0.25) + rm_viewer.setWindowTitle("Rm") + return rm_viewer + +vm_visualizer = create_vm_visualizer() +rm_visualizer = create_rm_visualizer() +vm_visualizer.show() +rm_visualizer.show() + +# http://stackoverflow.com/questions/15861839/error-upon-app-shutdown-qglcontextmakecurrent-cannot-make-invalid-context-cu +def delete_gl_widget(): + global vm_visualizer + global rm_visualizer + vm_visualizer.setParent(None) + del vm_visualizer + rm_visualizer.setParent(None) + del rm_visualizer + +QApplication.instance().aboutToQuit.connect( delete_gl_widget ) + + +# Enter the main event loop and wait until exit() is called. +# It is necessary to call this function to start event handling. +# The main event loop receives events from the window system and +# dispatches these to the application widgets. +app.exec_() diff --git a/examples/moogli/simple_viewing.py b/examples/moogli/simple_viewing.py new file mode 100644 index 0000000..71d399e --- /dev/null +++ b/examples/moogli/simple_viewing.py @@ -0,0 +1,28 @@ +import moogli +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import sys +import os + +app = QtGui.QApplication(sys.argv) +filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" + ) +moose.neuroml.loadNeuroML_L123(filename) +morphology_distal = moogli.read_morphology_from_moose(name = "", path = "/cells[0]", radius = moogli.DISTAL) +viewer_distal = moogli.MorphologyViewerWidget(morphology_distal) +viewer_distal.setWindowTitle("Distal Radius") + +morphology_averaged = moogli.read_morphology_from_moose(name = "", path = "/cells[0]", radius = moogli.AVERAGED) +viewer_averaged = moogli.MorphologyViewerWidget(morphology_averaged) +viewer_averaged.setWindowTitle("Averaged Radius") + +morphology_proximal_distal = moogli.read_morphology_from_moose(name = "", path = "/cells[0]", radius = moogli.PROXIMAL_DISTAL) +viewer_proximal_distal = moogli.MorphologyViewerWidget(morphology_proximal_distal) +viewer_proximal_distal.setWindowTitle("Continous Variation in Radius") + +viewer_distal.show() +viewer_averaged.show() +viewer_proximal_distal.show() +app.exec_() diff --git a/examples/neuroml/CA1PyramidalCell/CA1.net.xml b/examples/neuroml/CA1PyramidalCell/CA1.net.xml new file mode 100644 index 0000000..2f8a936 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/CA1.net.xml @@ -0,0 +1,48 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/CA1.py b/examples/neuroml/CA1PyramidalCell/CA1.py new file mode 100644 index 0000000..c8b8e74 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/CA1.py @@ -0,0 +1,51 @@ +## Aditya Gilra, NCBS, Bangalore, 2012 + +""" +Inside the .../moose-examples/CA1PyramidalCell/ directory supplied with MOOSE, run +python CA1.py +(if no filename is specified, the single compartment CA1 cell is used.) +(supporting channels and different morph xml files are already present in this same directory). +The soma name below is hard coded for CA1, else any other file can be used by modifying this script. +""" + +import os +os.environ['NUMPTHREADS'] = '1' +import moose +from moose.utils import * + +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +simdt = 10e-6 # s +plotdt = 10e-6 # s +runtime = 0.2 # s + +def loadGran98NeuroML_L123(filename): + neuromlR = NeuroML() + populationDict, projectionDict = \ + neuromlR.readNeuroMLFromFile(filename) + soma_path = populationDict['CA1group'][1][0].path+'/Seg0_soma_0_0' + somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') + #somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') + #somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') + #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') + soma = moose.Compartment(soma_path) + print "Reinit MOOSE ... " + resetSim(['/elec','/cells'],simdt,plotdt,simmethod='ee') # from moose.utils + print "Running ... " + moose.start(runtime) + tvec = arange(0.0,runtime,simdt) + plot(tvec,somaVm.vector[1:]) + title('Soma Vm') + xlabel('time (s)') + ylabel('Voltage (V)') + print "Showing plots ..." + show() + +if __name__ == "__main__": + if len(sys.argv)<2: + filename = "CA1soma.net.xml" + else: + filename = sys.argv[1] + loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/CA1PyramidalCell/CA1_hsolve.py b/examples/neuroml/CA1PyramidalCell/CA1_hsolve.py new file mode 100644 index 0000000..06f437e --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/CA1_hsolve.py @@ -0,0 +1,57 @@ +## Aditya Gilra, NCBS, Bangalore, 201 + +""" +Inside the .../moose-examples/CA1PyramidalCell/ directory supplied with MOOSE, run +python testNeuroML_CA1.py +(other channels and morph xml files are already present in this same directory). +The soma name below is hard coded for CA1, else any other file can be used by modifying this script. +""" + +import moose +from moose.utils import * + +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +simdt = 10e-6 # s +plotdt = 10e-6 # s +runtime = 0.2 # s +cells_path = '/cells' # neuromlR.readNeuroMLFromFile creates cells in '/cells' + +def loadGran98NeuroML_L123(filename,params): + neuromlR = NeuroML() + populationDict, projectionDict = \ + neuromlR.readNeuroMLFromFile(filename,params=params) + print "Number of compartments =",\ + len(moose.Neuron(populationDict['CA1group'][1][0].path).children) + soma_path = populationDict['CA1group'][1][0].path+'/Seg0_soma_0_0' + somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') + #somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') + #somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') + #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') + soma = moose.Compartment(soma_path) + + print "Reinit MOOSE ... " + resetSim(['/elec','/cells'],simdt,plotdt,simmethod='hsolve') # from moose.utils + print "Running ... " + moose.start(runtime) + tvec = arange(0.0,runtime,simdt) + plot(tvec,somaVm.vector[1:]) + title('Soma Vm') + xlabel('time (s)') + ylabel('Voltage (V)') + print "Showing plots ..." + show() + +if __name__ == "__main__": + if len(sys.argv)<2: + filename = "CA1soma.net.xml" + params = {} + else: + filename = sys.argv[1] + params = {} + if len(sys.argv)>2: + params = {'combineSegments':bool(sys.argv[2])} + # sys.argv[2] should be True or False + loadGran98NeuroML_L123(filename,params) diff --git a/examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml b/examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml new file mode 100644 index 0000000..13c40ec --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml @@ -0,0 +1,48 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/CA1soma.net.xml b/examples/neuroml/CA1PyramidalCell/CA1soma.net.xml new file mode 100644 index 0000000..b5ab7ba --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/CA1soma.net.xml @@ -0,0 +1,48 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/FvsI_CA1.py b/examples/neuroml/CA1PyramidalCell/FvsI_CA1.py new file mode 100644 index 0000000..dc2fc94 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/FvsI_CA1.py @@ -0,0 +1,76 @@ + +# -*- coding: utf-8 -*- +## all SI units +######################################################################################## +## Plot the firing rate vs current injection curve for a Cerebellar Granule Cell neuron +## Author: Aditya Gilra +## Creation Date: 2012-07-12 +## Modification Date: 2012-07-12 +######################################################################################## + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('.') +import moose +from moose.utils import * + +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +SIMDT = 25e-6 # s +PLOTDT = 25e-6 # s +RUNTIME = 1.0 # s + +injectmax = 2e-12 # Amperes + +neuromlR = NeuroML() +neuromlR.readNeuroMLFromFile('cells_channels/CA1soma.morph.xml') +libcell = moose.Neuron('/library/CA1soma') +CA1Cellid = moose.copy(libcell,moose.Neutral('/cells'),'CA1') +CA1Cell = moose.Neuron(CA1Cellid) +#printCellTree(CA1Cell) + +## edge-detect the spikes using spike-gen (table does not have edge detect) +spikeGen = moose.SpikeGen(CA1Cell.path+'/spikeGen') +spikeGen.threshold = -30e-3 # V +CA1CellSoma = moose.Compartment(CA1Cell.path+'/Seg0_soma_0_0') +CA1CellSoma.inject = 0 # by default the cell has a current injection +moose.connect(CA1CellSoma,'VmOut',spikeGen,'Vm') +## save spikes in table +table_path = moose.Neutral(CA1Cell.path+'/data').path +CA1CellSpikesTable = moose.Table(table_path+'/spikesTable') +moose.connect(spikeGen,'spikeOut',CA1CellSpikesTable,'input') + +#CA1CellVmTable = moose.Table(table_path+'/vmTable') +#moose.connect(CA1CellSoma,'VmOut',CA1CellVmTable,'input') + +cells_path = '/cells' + +## from moose_utils.py sets clocks and resets/reinits +resetSim(['/cells'],SIMDT,PLOTDT,simmethod='hsolve') # from moose.utils + +## Loop through different current injections +freqList = [] +currentvec = arange(0, injectmax, injectmax/50.0) +for currenti in currentvec: + moose.reinit() + CA1CellSoma.inject = currenti + moose.start(RUNTIME) + spikesList = array(CA1CellSpikesTable.vector) + if len(spikesList)>0: + spikesList = spikesList[where(spikesList>0.0)[0]] + spikesNow = len(spikesList) + else: spikesNow = 0.0 + print "For injected current =",currenti,\ + "number of spikes in",RUNTIME,"seconds =",spikesNow + freqList.append( spikesNow/float(RUNTIME) ) + +## plot the F vs I curve of the neuron +figure(facecolor='w') +plot(currentvec, freqList,'o-') +xlabel('time (s)') +ylabel('frequency (Hz)') +title('HH single-compartment Cell') +show() diff --git a/examples/neuroml/CA1PyramidalCell/README b/examples/neuroml/CA1PyramidalCell/README new file mode 100644 index 0000000..17ae8a5 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/README @@ -0,0 +1,18 @@ +This is the directory for the NeuroML files generated by neuroConstruct 1.5.3 (neuroConstruct.org) for CA1 cell model. +These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). + +Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. +Select and open the CA1.net.xml or CA1soma.net.xml file. +[ +CA1soma.net.xml instantiates a CA1 cell having only the soma. +CA1.net.xml instantiates a detailed CA1 model, however it has been modified from that exported from neuroConstruct. +Some inhomogeneous channels in the dendrites, and some negative conductance (!) channels were removed, hence it fires spontaneously. +] +Select the soma (graphical viewer or element tree) and click 'add field' on the right 'plot configuration' pane to plot Vm. +Run the simulation and see the soma Vm. + +To test on the terminal, just run (hsolve is much faster): +python CA1_hsolve.py +python CA1.py + can be one of CA1soma.net.xml, CA1.net.xml, or CA1inhomog.net.xml +(pops up soma Vm) (if no filename is specified, the simgle compartment CA1 is used). diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml new file mode 100644 index 0000000..b7ea967 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml @@ -0,0 +1,12609 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + soma_group + + + + + + + soma_group + + + + + + + + all + + + all + + + soma_group + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml new file mode 100644 index 0000000..68f982a --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml @@ -0,0 +1,12670 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + all + + + all + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + soma_group + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + + dendrite_group + + + + + + + + + dendrite_group + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml new file mode 100644 index 0000000..074524a --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml @@ -0,0 +1,12628 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml new file mode 100644 index 0000000..68f982a --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml @@ -0,0 +1,12670 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + all + + + all + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + soma_group + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + + dendrite_group + + + + + + + + + dendrite_group + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml new file mode 100644 index 0000000..c4700d0 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml @@ -0,0 +1,12670 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + all + + + all + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + soma_group + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + + dendrite_group + + + + + + + + + dendrite_group + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml new file mode 100644 index 0000000..f95579a --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml @@ -0,0 +1,126 @@ + + + + + + + Only soma of more detailed cell + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + all + soma_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_9 + OneSecGrp_SectionRef_1 + + + + + + + + + + + + + + + all + + + + + + all + + + + + + all + + + + + + soma_group + + + + + + all + + + all + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml new file mode 100644 index 0000000..49fc297 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml @@ -0,0 +1,79 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. + Updated to post v1.7.3 new ChannelML format + There is a discontinuity in the expression for alpha in h gate + + Padraig Gleeson + + + + Delayed rectifyer K channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml new file mode 100644 index 0000000..39a24bf --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml @@ -0,0 +1,92 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + Quite a small dt (~0.001 ms) is needed to give matching NEURON/GENESIS results for a compartment with just + this channel (and a leak current) + + Padraig Gleeson + + + + Fast inactivating Na+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml new file mode 100644 index 0000000..0ff356a --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml @@ -0,0 +1,141 @@ + + + + ChannelML file containing a single Channel from De Schutter and Bower 1998 + + + + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse (but 0.002 is better) + Needs a large value of table_divisions for equivalence with orig NEURON mod impl + + Padraig Gleeson + + + + A type K current. Based on Roth et al's reimplementation of original GENESIS model in NEURON + + + + De Schutter, E. + + + Bower, J. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Jenny Davie + UCL + Conversion of GENESIS model to NEURON + + + Arnd Roth + UCL + Conversion of GENESIS model to NEURON + + + Volker Steuber + UCL + Conversion of GENESIS model to NEURON + + + Michael Hausser + UCL + Conversion of GENESIS model to NEURON + + + + + De Schutter, E., and Bower, J. M. (1994). An active membrane model of the cerebellar Purkinje cell. I. Simulation of current clamps in slice. J Neurophysiol 71, 375-400. + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&cmd=Retrieve&dopt=AbstractPlus&list_uids=7512629 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Settings from the original mod file + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/README b/examples/neuroml/CA1PyramidalCell/cells_channels/README new file mode 100644 index 0000000..c461327 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/README @@ -0,0 +1,14 @@ +CA1.morph.original.xml is the original file exported from neuroConstruct. +It does not work with MOOSE as it has inhomogeneous_value tags, + and negative conductances for hd channel (!), + and channels whose parameters change in the morphml after loading in the channelml. + +CA1.morph.bad.xml is the CA1 cell morphology with channels from the cerebellar granule cell! +It shows spikes that are a few tens of microsecond wide using 10microsec time step in ee, + but hsolve just oscillates for 10microsec, with 1 microsec time step, hsolve works. + +CA1.morph.xml is the original file from neuroConstruct, but the inhomogeneous_value tags have been removed, + and hd channels with negative conductances have been removed, + and some new channels with the parameter changes hard coded have been used. +This works in MOOSE, but fires uniformly spontaneously at a low rate. + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml new file mode 100644 index 0000000..a882baa --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml new file mode 100644 index 0000000..38815ff --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml new file mode 100644 index 0000000..5684d19 --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml new file mode 100644 index 0000000..3ca589c --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/neuroml/GranuleCell/FvsI_Granule98.py b/examples/neuroml/GranuleCell/FvsI_Granule98.py new file mode 100644 index 0000000..c9e403d --- /dev/null +++ b/examples/neuroml/GranuleCell/FvsI_Granule98.py @@ -0,0 +1,69 @@ + +# -*- coding: utf-8 -*- +## all SI units +######################################################################################## +## Plot the firing rate vs current injection curve for a Cerebellar Granule Cell neuron +## Author: Aditya Gilra +## Creation Date: 2012-07-12 +## Modification Date: 2012-07-12 +######################################################################################## + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('.') +import moose +from moose.utils import * + +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +SIMDT = 25e-6 # s +PLOTDT = 25e-6 # s +RUNTIME = 2.0 # s + +injectmax = 20e-12 # Amperes + +neuromlR = NeuroML() +neuromlR.readNeuroMLFromFile('cells_channels/Granule_98.morph.xml') +libcell = moose.Neuron('/library/Granule_98') +granCellid = moose.copy(libcell,moose.Neutral('/cells'),'granCell') +granCell = moose.Neuron(granCellid) + +## edge-detect the spikes using spike-gen (table does not have edge detect) +spikeGen = moose.SpikeGen(granCell.path+'/spikeGen') +spikeGen.threshold = 0e-3 # V +granCellSoma = moose.Compartment(granCell.path+'/Soma_0') +moose.connect(granCellSoma,'VmOut',spikeGen,'Vm') +## save spikes in table +table_path = moose.Neutral(granCell.path+'/data').path +granCellSpikesTable = moose.Table(table_path+'/spikesTable') +moose.connect(spikeGen,'spikeOut',granCellSpikesTable,'input') + +## from moose_utils.py sets clocks and resets/reinits +resetSim(['/cells'], SIMDT, PLOTDT, simmethod='hsolve') + +## Loop through different current injections +freqList = [] +currentvec = arange(0.0, injectmax, injectmax/50.0) +for currenti in currentvec: + moose.reinit() + granCellSoma.inject = currenti + moose.start(RUNTIME) + spikesList = array(granCellSpikesTable.vector) + if len(spikesList)>0: + spikesList = spikesList[where(spikesList>0.0)[0]] + spikesNow = len(spikesList) + else: spikesNow = 0.0 + print "For injected current =",currenti,\ + "number of spikes in",RUNTIME,"seconds =",spikesNow + freqList.append( spikesNow/float(RUNTIME) ) + +## plot the F vs I curve of the neuron +figure(facecolor='w') +plot(currentvec, freqList,'o-',linewidth=2) +xlabel('time (s)',fontsize=24) +ylabel('frequency (Hz)',fontsize=24) +title('HH single-compartment Cell',fontsize=24) +show() diff --git a/examples/neuroml/GranuleCell/Granule98.py b/examples/neuroml/GranuleCell/Granule98.py new file mode 100644 index 0000000..cde13f6 --- /dev/null +++ b/examples/neuroml/GranuleCell/Granule98.py @@ -0,0 +1,62 @@ +## Aditya Gilra, NCBS, Bangalore, 2012 + +""" +Inside the .../moose-examples/GranuleCell/ directory supplied with MOOSE, run +python testNeuroML_Gran98.py +(other channels and morph xml files are already present in this same directory). +The soma name below is hard coded for gran98, else any other file can be used by modifying this script. +""" +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import moose +from moose.utils import * + +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +simdt = 1e-6 # s +plotdt = 10e-6 # s +runtime = 0.7 # s + +def loadGran98NeuroML_L123(filename): + neuromlR = NeuroML() + populationDict, projectionDict = \ + neuromlR.readNeuroMLFromFile(filename) + soma_path = populationDict['Gran'][1][0].path+'/Soma_0' + somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') + somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') + somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') + #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') + soma = moose.Compartment(soma_path) + print "Reinit MOOSE ... " + resetSim(['/elec','/cells'],simdt,plotdt,simmethod='ee') # from moose.utils + print "Running ... " + moose.start(runtime) + tvec = arange(0.0,runtime,plotdt) + plot(tvec,somaVm.vector[1:]) + title('Soma Vm') + xlabel('time (s)') + ylabel('Voltage (V)') + figure() + plot(tvec,somaCa.vector[1:]) + title('Soma Ca') + xlabel('time (s)') + ylabel('Ca conc (mol/m^3)') + figure() + plot(tvec,somaIKCa.vector[1:]) + title('KCa current (A)') + xlabel('time (s)') + ylabel('') + print "Showing plots ..." + show() + +filename = "GranuleCell.net.xml" +if __name__ == "__main__": + if len(sys.argv)<2: + filename = "GranuleCell.net.xml" + else: + filename = sys.argv[1] + loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/GranuleCell/Granule98_hsolve.py b/examples/neuroml/GranuleCell/Granule98_hsolve.py new file mode 100644 index 0000000..52a3f81 --- /dev/null +++ b/examples/neuroml/GranuleCell/Granule98_hsolve.py @@ -0,0 +1,67 @@ +## Aditya Gilra, NCBS, Bangalore, 2012 + +""" +Inside the .../moose-examples/GranuleCell/ directory supplied with MOOSE, run +python testNeuroML_Gran98.py +(other channels and morph xml files are already present in this same directory). +The soma name below is hard coded for gran98, else any other file can be used by modifying this script. +""" + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') + +import moose +from moose.utils import * +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +simdt = 10e-6 # s +plotdt = 10e-6 # s +runtime = 0.7 # s +cells_path = '/cells' # neuromlR.readNeuroMLFromFile creates cells in '/cells' + +def loadGran98NeuroML_L123(filename): + neuromlR = NeuroML() + populationDict, projectionDict = \ + neuromlR.readNeuroMLFromFile(filename) + soma_path = populationDict['Gran'][1][0].path+'/Soma_0' + somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') + somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') + somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') + ## Am not able to plot KDr gating variable X when running under hsolve + #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') + + print "Reinit MOOSE ... " + resetSim(['/elec',cells_path], simdt, plotdt, simmethod='hsolve') + + print "Running ... " + moose.start(runtime) + tvec = arange(0.0,runtime*2.0,plotdt) + tvec = tvec[ : somaVm.vector.size ] + plot(tvec,somaVm.vector) + title('Soma Vm') + xlabel('time (s)') + ylabel('Voltage (V)') + figure() + plot(tvec,somaCa.vector) + title('Soma Ca') + xlabel('time (s)') + ylabel('Ca conc (mol/m^3)') + figure() + plot(tvec,somaIKCa.vector) + title('soma KCa current') + xlabel('time (s)') + ylabel('KCa current (A)') + print "Showing plots ..." + show() + +filename = "GranuleCell.net.xml" +if __name__ == "__main__": + if len(sys.argv)<2: + filename = "GranuleCell.net.xml" + else: + filename = sys.argv[1] + loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/GranuleCell/GranuleCell.net.xml b/examples/neuroml/GranuleCell/GranuleCell.net.xml new file mode 100644 index 0000000..14a879d --- /dev/null +++ b/examples/neuroml/GranuleCell/GranuleCell.net.xml @@ -0,0 +1,51 @@ + + + + + +Network structure (NeuroML 1.x) for project: GranuleCell saved with neuroConstruct v1.5.1 on: 14:34:18, 15-Nov-11 + +Cell Group: Gran contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/README b/examples/neuroml/GranuleCell/README new file mode 100644 index 0000000..dfba684 --- /dev/null +++ b/examples/neuroml/GranuleCell/README @@ -0,0 +1,10 @@ +This is the directory for the NeuroML files generated by neuroConstruct 1.5.1 (neuroConstruct.org) for the Cerebellar Granule cell model +(Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, J Neurophysiol, Nov 1998; 80: 2521 - 2537). +These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). + +Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. +Select and open the GranuleCell.net.xml file. +Select the soma (graphical viewer or element tree) and click 'add field' on the right 'plot configuration' pane to plot Vm. +Run the simulation and see the soma Vm. + +To test on the terminal, just run python Granule98.py (uses exponential euler) or python Granule98_hsolve.py (uses hines solver). diff --git a/examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml b/examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml new file mode 100644 index 0000000..6a00e70 --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml @@ -0,0 +1,33 @@ + + + + + ChannelML file containing a single Channel description + + + + + + + Padraig Gleeson + + + + Simple leak conductance for Granule cell + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml new file mode 100644 index 0000000..bd83930 --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml @@ -0,0 +1,82 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. + Updated to post v1.7.3 new ChannelML format + + Padraig Gleeson + + + + A High Voltage Activated Ca2+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + Calcium channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml new file mode 100644 index 0000000..c091b34 --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml @@ -0,0 +1,44 @@ + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + This ChannelML file has been updated to reflect the preferred form of elements/attributes which will be required from v2.0. + See info on Version 2 Requirements. + + Padraig Gleeson + + + + An expontially decaying pool of calcium + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml new file mode 100644 index 0000000..54029c8 --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml @@ -0,0 +1,64 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + A values don't match table 1 in M and DeS 98 + + Padraig Gleeson + + + + Anomalous inward rectifying H conductance + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml new file mode 100644 index 0000000..3a8578c --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml @@ -0,0 +1,78 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + + Padraig Gleeson + + + + A-type K channel, with rate equations expressed in tau and inf form + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml new file mode 100644 index 0000000..c865b56 --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml @@ -0,0 +1,70 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + This ChannelML file is intended ONLY to replicate the original GENESIS functionality. A new Granule cell model is being developed based on + D'Angelo et al 2001 and Berends, Maex and De Schutter 2005, and the ChannelML files will be updated + + Padraig Gleeson + + + + Calcium dependent K+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml new file mode 100644 index 0000000..49fc297 --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml @@ -0,0 +1,79 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. + Updated to post v1.7.3 new ChannelML format + There is a discontinuity in the expression for alpha in h gate + + Padraig Gleeson + + + + Delayed rectifyer K channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml new file mode 100644 index 0000000..39a24bf --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml @@ -0,0 +1,92 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + Quite a small dt (~0.001 ms) is needed to give matching NEURON/GENESIS results for a compartment with just + this channel (and a leak current) + + Padraig Gleeson + + + + Fast inactivating Na+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml b/examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml new file mode 100644 index 0000000..c56403e --- /dev/null +++ b/examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml @@ -0,0 +1,160 @@ + + + + + + + An implementation using ChannelML of the Granule cell mode from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, 1998 + + + + + + + + + + + + + + + all + soma_group + + + + + + + + + + + + + + + all + + + + + + all + + + all + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + + all + + + + + + + all + + + + all + + + + + + + all + + + + + + + all + + + + all + + + + all + + + + all + + + + + + diff --git a/examples/neuroml/LIF/FvsI_LIF.py b/examples/neuroml/LIF/FvsI_LIF.py new file mode 100644 index 0000000..0d2d975 --- /dev/null +++ b/examples/neuroml/LIF/FvsI_LIF.py @@ -0,0 +1,59 @@ + +# -*- coding: utf-8 -*- +## all SI units +######################################################################################## +## Plot the firing rate vs current injection curve for a leaky integrate and fire neuron +## Author: Aditya Gilra +## Creation Date: 2012-06-08 +## Modification Date: 2012-06-08 +######################################################################################## + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('.') + +from LIFxml_firing import * +injectmax = 1e-7 # Amperes + +IF1 = create_LIF() + +## edge-detect the spikes using spike-gen (table does not have edge detect) +## save spikes in table +table_path = moose.Neutral(IF1.path+'/data').path +IF1spikesTable = moose.Table(table_path+'/spikesTable') +IF1soma = moose.element(IF1.path+'/soma_0') +moose.connect(IF1soma,'spikeOut',IF1spikesTable,'input') + +## from moose_utils.py sets clocks and resets/reinits +## simmethod='hsolve' doesn't work -- check resetSim +resetSim(['/cells'], SIMDT, PLOTDT, simmethod='ee') + +## Loop through different current injections +freqList = [] +currentvec = arange(0.4e-12, injectmax, injectmax/30.0) +### log scale for x-axis +#dlogI = log(2.5) +#logcurrentvec = arange(log(injectmax)-30*dlogI,log(injectmax),dlogI) +#currentvec = [0.0] +#currentvec.extend( [exp(I) for I in logcurrentvec] ) +for currenti in currentvec: + moose.reinit() + IF1soma.inject = currenti + moose.start(RUNTIME) + spikesList = IF1spikesTable.vector + if len(spikesList)>0: + spikesList = spikesList[where(spikesList>0.0)[0]] + spikesNow = len(spikesList) + else: spikesNow = 0.0 + print "For injected current =",currenti,\ + "number of spikes in",RUNTIME,"seconds =",spikesNow + freqList.append( spikesNow/float(RUNTIME) ) + +## plot the F vs I curve of the neuron +figure(facecolor='w') +plot(currentvec, freqList,'o-',linewidth=2) +xlabel('current (A)',fontsize=24) +ylabel('frequency (Hz)',fontsize=24) +title('Leaky Integrate and Fire',fontsize=24) +show() diff --git a/examples/neuroml/LIF/LIFinject.net.xml b/examples/neuroml/LIF/LIFinject.net.xml new file mode 100644 index 0000000..3f4e1a0 --- /dev/null +++ b/examples/neuroml/LIF/LIFinject.net.xml @@ -0,0 +1,43 @@ + + + + + +LIF cell with current injection: written by Aditya Gilra + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/LIF/LIFxml_firing.py b/examples/neuroml/LIF/LIFxml_firing.py new file mode 100644 index 0000000..293c286 --- /dev/null +++ b/examples/neuroml/LIF/LIFxml_firing.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +## all SI units +######################################################################################## +## Plot the membrane potential for a leaky integrate and fire neuron with current injection +## Author: Aditya Gilra +## Creation Date: 2012-06-08 +## Modification Date: 2012-06-08 +######################################################################################## + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') + +## simulation parameters +SIMDT = 5e-5 # seconds +PLOTDT = 5e-5 # seconds +RUNTIME = 2.0 # seconds +injectI = 1e-8#2.5e-12 # Amperes + +## moose imports +import moose +from moose.neuroml import * +from moose.utils import * # has setupTable(), resetSim() etc +import math + +## import numpy and matplotlib in matlab style commands +from pylab import * + +def create_LIF(): + neuromlR = NeuroML() + neuromlR.readNeuroMLFromFile('cells_channels/LIF.morph.xml') + libcell = moose.Neuron('/library/LIF') + LIFCellid = moose.copy(libcell,moose.Neutral('/cells'),'IF1') + LIFCell = moose.Neuron(LIFCellid) + return LIFCell + +def run_LIF(): + ## reset and run the simulation + print("Reinit MOOSE.") + ## from moose_utils.py sets clocks and resets + resetSim(['/cells[0]'], SIMDT, PLOTDT, simmethod='ee') + print("Running now...") + moose.start(RUNTIME) + +if __name__ == '__main__': + IF1 = create_LIF() + # FIXME: Following call does not work anymore. + #printCellTree(IF1) + IF1Soma = moose.element(IF1.path+'/soma_0') # moose.LIF instance + IF1Soma.inject = injectI + IF1vmTable = setupTable("vmTableIF1",IF1Soma,'Vm') + + table_path = moose.Neutral(IF1Soma.path+'/data').path + IF1spikesTable = moose.Table(table_path+'/spikesTable') + moose.connect(IF1Soma,'spikeOut',IF1spikesTable,'input') ## spikeGen gives spiketimes + + run_LIF() + print(("Spiketimes :",IF1spikesTable.vector)) + ## plot the membrane potential of the neuron + timevec = arange(0.0,RUNTIME+PLOTDT/2.0,PLOTDT) + ## Something is crazy! Why twice the number of table entries compared to time!!?? + figure(facecolor='w') + print(IF1vmTable) + plot(timevec, IF1vmTable.vector) + show() diff --git a/examples/neuroml/LIF/LIFxml_firing_hsolve.py b/examples/neuroml/LIF/LIFxml_firing_hsolve.py new file mode 100644 index 0000000..0e0e35f --- /dev/null +++ b/examples/neuroml/LIF/LIFxml_firing_hsolve.py @@ -0,0 +1,67 @@ +## __BROKEN__ +## all SI units +######################################################################################## +## Plot the membrane potential for a leaky integrate and fire neuron with current injection +## Author: Aditya Gilra +## Creation Date: 2012-06-08 +## Modification Date: 2012-06-08 +######################################################################################## + +import os + +SIMDT = 5e-5 # seconds +PLOTDT = 5e-5 # seconds +RUNTIME = 2.0 # seconds +injectI = 2.5e-12 # Amperes + +## moose imports +import moose +print( '[DBEUG] Using moose from %s' % moose.__file__ ) + +from moose.neuroml import * +from moose.utils import * # has setupTable(), resetSim() etc +import math + +## import numpy and matplotlib in matlab style commands +from pylab import * + +def create_LIF(): + neuromlR = NeuroML() + neuromlR.readNeuroMLFromFile('cells_channels/LIF.morph.xml') + libcell = moose.Neuron('/library/LIF') + LIFCellid = moose.copy(libcell,moose.Neutral('/cells'),'IF1') + # FIXME: No LeakyIaF is found in MOOSE. + LIFCell = moose.LeakyIaF(LIFCellid) + return LIFCell + +def run_LIF(): + cells_path = '/cells' + + ## reset and run the simulation + print("Reinit MOOSE.") + ## from moose_utils.py sets clocks and resets + resetSim(['/cells'], SIMDT, PLOTDT, simmethod='hsolve') + print("Running now...") + moose.start(RUNTIME) + +if __name__ == '__main__': + IF1 = create_LIF() + IF1.inject = injectI + IF1vmTable = setupTable("vmTableIF1",IF1,'Vm') + + ## edge-detect the spikes using spike-gen (table does not have edge detect) + spikeGen = moose.SpikeGen(IF1.path+'/spikeGen') + spikeGen.threshold = IF1.Vthreshold + moose.connect(IF1,'VmOut',spikeGen,'Vm') + ## save spikes in table + table_path = moose.Neutral(IF1.path+'/data').path + IF1spikesTable = moose.Table(table_path+'/spikesTable') + moose.connect(spikeGen,'event',IF1spikesTable,'input') + + run_LIF() + print("Spiketimes :",IF1spikesTable.vector) + ## plot the membrane potential of the neuron + timevec = arange(0.0,RUNTIME+PLOTDT/2.0,PLOTDT) + figure(facecolor='w') + plot(timevec, IF1vmTable.vector) + show() diff --git a/examples/neuroml/LIF/cells_channels/IaF.xml b/examples/neuroml/LIF/cells_channels/IaF.xml new file mode 100644 index 0000000..58deece --- /dev/null +++ b/examples/neuroml/LIF/cells_channels/IaF.xml @@ -0,0 +1,24 @@ + + + + + A cell mechanism for creating a simple integrate and fire cell + + + + A simple integrate and fire mechanism, for MOOSE where g_refrac is not implemented yet + + + + + + + + + + + diff --git a/examples/neuroml/LIF/cells_channels/LIF.morph.xml b/examples/neuroml/LIF/cells_channels/LIF.morph.xml new file mode 100644 index 0000000..4cf6a21 --- /dev/null +++ b/examples/neuroml/LIF/cells_channels/LIF.morph.xml @@ -0,0 +1,72 @@ + + + + + + + Aditya Gilra: sample leaky integrate-and-fire neuron. + + + + + + + + + + + + + + + + + all + + + all + + + + + + + + all + + + all + + + all + + + + + + + + + all + + + + + all + + + + + all + + + + + + + + diff --git a/examples/neuroml/LIF/cells_channels/exc_syn.xml b/examples/neuroml/LIF/cells_channels/exc_syn.xml new file mode 100644 index 0000000..b43d333 --- /dev/null +++ b/examples/neuroml/LIF/cells_channels/exc_syn.xml @@ -0,0 +1,40 @@ + + + + + Excitatory synpase + + + + + + Aditya Gilra + + + + Dual exponential excitatory synapse + + + + Aditya Gilra + + + Aditya Gilra + NCBS, India + adityag@ncbs.res.in + + + + + + + + + + + + diff --git a/examples/neuroml/LIF/twoLIFs.net.xml b/examples/neuroml/LIF/twoLIFs.net.xml new file mode 100644 index 0000000..1ac659b --- /dev/null +++ b/examples/neuroml/LIF/twoLIFs.net.xml @@ -0,0 +1,51 @@ + + + + + +LIF cell with current injection: written by Aditya Gilra + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/LIF/twoLIFxml_firing.py b/examples/neuroml/LIF/twoLIFxml_firing.py new file mode 100644 index 0000000..aed0ef2 --- /dev/null +++ b/examples/neuroml/LIF/twoLIFxml_firing.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +## all SI units +######################################################################################## +## Plot the membrane potential for a leaky integrate and fire neuron with current injection +## Author: Aditya Gilra +## Creation Date: 2012-06-08 +## Modification Date: 2012-06-08 +######################################################################################## + +#import os +#os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') + +## simulation parameters +SIMDT = 5e-5 # seconds +PLOTDT = 5e-5 # seconds +RUNTIME = 2.0 # seconds +injectI = 1e-8#2.5e-12 # Amperes + +## moose imports +import moose +from moose.neuroml import * +from moose.utils import * # has setupTable(), resetSim() etc +import math + +## import numpy and matplotlib in matlab style commands +from pylab import * + +def create_twoLIFs(): + NML = NetworkML({'temperature':37.0,'model_dir':'.'}) + ## Below returns populationDict = { 'populationname1':(cellname,{instanceid1:moosecell, ... }) , ... } + ## and projectionDict = { 'projectionname1':(source,target,[(syn_name1,pre_seg_path,post_seg_path),...]) , ... } + (populationDict,projectionDict) = \ + NML.readNetworkMLFromFile('twoLIFs.net.xml', {}, params={}) + return populationDict,projectionDict + +def run_twoLIFs(): + ## reset and run the simulation + print "Reinit MOOSE." + ## from moose_utils.py sets clocks and resets + resetSim(['/cells[0]'], SIMDT, PLOTDT, simmethod='ee') + print "Running now..." + moose.start(RUNTIME) + +if __name__ == '__main__': + populationDict,projectionDict = create_twoLIFs() + ## element returns the right element and error if not present + IF1Soma = moose.element(populationDict['LIFs'][1][0].path+'/soma_0') + IF1Soma.inject = injectI + IF2Soma = moose.element(populationDict['LIFs'][1][1].path+'/soma_0') + IF2Soma.inject = 0.0#injectI*2.0 + #IF2Soma.inject = injectI + IF1vmTable = setupTable("vmTableIF1",IF1Soma,'Vm') + IF2vmTable = setupTable("vmTableIF2",IF2Soma,'Vm') + + table_path = moose.Neutral(IF1Soma.path+'/data').path + IF1spikesTable = moose.Table(table_path+'/spikesTable') + moose.connect(IF1Soma,'spikeOut',IF1spikesTable,'input') ## spikeGen gives spiketimes + + ## record Gk of the synapse on IF2 + #print IF2Soma.children + IF2SynChanTable = moose.Table(table_path+'/synChanTable') + moose.connect(IF2SynChanTable,'requestOut',IF2Soma.path+'/exc_syn','getIk') + + run_twoLIFs() + print "Spiketimes :",IF1spikesTable.vector + ## plot the membrane potential of the neuron + timevec = arange(0.0,RUNTIME+PLOTDT/2.0,PLOTDT) + figure(facecolor='w') + plot(timevec, IF1vmTable.vector*1000,'r-') + xlabel('time(s)') + ylabel('Vm (mV)') + title('Vm of presynaptic IntFire') + figure(facecolor='w') + plot(timevec, IF2vmTable.vector*1000,'b-') + xlabel('time(s)') + ylabel('Vm (mV)') + title('Vm of postsynaptic IntFire') + figure(facecolor='w') + plot(timevec, IF2SynChanTable.vector*1e12,'b-') + xlabel('time(s)') + ylabel('Ik (pA)') + title('Ik entering postsynaptic IntFire') + show() diff --git a/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml b/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml new file mode 100644 index 0000000..877a0ed --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml @@ -0,0 +1,688 @@ + + + + Fully instantiated network model of Olfactory Bulb by Aditya Gilra, NCBS, Bangalore, India, 2010. + + + + + + + + zrotation=4.45555739853 + + + + + + zrotation=1.67580256963 + + + + + + zrotation=0.107490103564 + + + + + + zrotation=5.37465229285 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml b/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml new file mode 100644 index 0000000..e955cba --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml @@ -0,0 +1,8107 @@ + + + + Fully instantiated network model of Olfactory Bulb by Aditya Gilra, NCBS, Bangalore, India, 2010. + + + + + + + + zrotation=1.51838909902 + + + + + + zrotation=0.639183861167 + + + + + + zrotation=0.107620598277 + + + + + + zrotation=6.01790595229 + + + + + + zrotation=4.80939357636 + + + + + + zrotation=3.77129156808 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml b/examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml new file mode 100644 index 0000000..01f96c4 --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml @@ -0,0 +1,3555 @@ + + + Fully instantiated network model of Olfactory Bulb by Aditya Gilra, NCBS, Bangalore, India, 2010. + + + + + + zrotation=0.915266923378 + + + + zrotation=4.43287034149 + + + + zrotation=1.88732185889 + + + + zrotation=4.26996423639 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/OlfactoryBulbPassive/README b/examples/neuroml/OlfactoryBulbPassive/README new file mode 100644 index 0000000..27e201b --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/README @@ -0,0 +1,9 @@ +This is the directory for the NeuroML files used by Aditya Gilra in his rodent olfactory bulb model. + +Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. Load any of these models: +OBpassive_numgloms3_seed750.0.xml : 3 glomeruli (2 mitral cells in each) with lots of granule and PG cells. +OBpassive_slice_numgloms2_seed100.0_fewcells.xml : 2 glomeruli with very few granule and PG cells (good for testing). +OBpassive_slice_numgloms2_seed100.0.xml : 2 glomeruli with granules and PGs present only in a slice of 300 microns thickness. + +Presently all cells have only passive properties, no active channels, and no synapses and connections, + as not all channels have been converted to ChannelML, and it saves loading time. diff --git a/examples/neuroml/OlfactoryBulbPassive/cells/PG.xml b/examples/neuroml/OlfactoryBulbPassive/cells/PG.xml new file mode 100644 index 0000000..da39803 --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/cells/PG.xml @@ -0,0 +1,172 @@ + + + +author: Aditya Gilra adapted from Cleland and Sethupathy 2006. + + + + Cell: periglomerular morphml written by hand by Aditya Gilra, NCBS, Bangalore, India. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + all + + + + + + all + + + + + all + + + + + all + + + + + + + dendrites + + + + + dendrites + + + + dendrites + + + dendrites + + + + + diff --git a/examples/neuroml/OlfactoryBulbPassive/cells/granule.xml b/examples/neuroml/OlfactoryBulbPassive/cells/granule.xml new file mode 100755 index 0000000..6defe1a --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/cells/granule.xml @@ -0,0 +1,89 @@ + + + +author: Aditya Gilra adapted from Migliore and Shepherd 2008. + + + + Cell: granule morphml written by hand by Aditya. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + all + + + + + all + + + + + all + + + + + all + + + + + + + periphery + + + periphery + + + + + diff --git a/examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml b/examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml new file mode 100644 index 0000000..958bcb1 --- /dev/null +++ b/examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml @@ -0,0 +1,3386 @@ + + + + +NeuroML Level 2 file generated from ModelView by: NEURON -- Release 7.1 (359:7f113b76a94b) 2009-10-26 +Authors: Michael Hines, Sushil Kambampati and Padraig Gleeson, Yale University and UCL. +Aditya Gilra added Level 3 connectivity information and modifed the cell: +changed RM throughout to 5 Ohm-m^2 to halve tau_m, +added Na+K to primary dendrite and tuft, +removed electrode leak (RM changed) in soma, +halved Na to get f-vs-i shape in Arevian et al 2008 (still not enough). + + + + + + Cell: soma exported from NEURON ModelView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelViewParmSubset_4 + + + + + + OneSecGrp_SectionRef_1 + + + all + + + + + + all + + + + + all + + + + + all + + + + + + + + + + ModelViewParmSubset_32 + + + + + ModelViewParmSubset_32 + + + ModelViewParmSubset_26 + ModelViewParmSubset_27 + ModelViewParmSubset_24 + OneSecGrp_SectionRef_1 + + + + + diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml b/examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml new file mode 100644 index 0000000..d28cdc3 --- /dev/null +++ b/examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml @@ -0,0 +1,55 @@ + + + + + +Network structure (NeuroML 1.x) for project: PurkinjeCell saved with neuroConstruct v1.5.3 on: 14:20:09, 07-Sep-12 + +Cell Group: BigCellCML contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/README b/examples/neuroml/PurkinjeCellPassivePulseInput/README new file mode 100644 index 0000000..974a81f --- /dev/null +++ b/examples/neuroml/PurkinjeCellPassivePulseInput/README @@ -0,0 +1,9 @@ +This is the directory for the NeuroML files generated by neuroConstruct 1.5.3 (neuroConstruct.org) for Purkinje cell model. +These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). + +Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. +Open the PurkinjePassive.net.xml file. +Presently this cell has only passive properties, no active channels, + as all the channels exported by neuroConstruct were in old deprecated ChannelML format which current importer does not support. +You can set the inject field in the soma or any other compartment and see how the voltage passive decays. + diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml b/examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml new file mode 100644 index 0000000..a2c7b64 --- /dev/null +++ b/examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml @@ -0,0 +1,21570 @@ + + + + + + + Cell: soma exported from NEURON ModelView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + soma_group + ModelViewParmSubset_1 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + OneSecGrp_SectionRef_1 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_2 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_3 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_77 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_5 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_83 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_8 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_49 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_11 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_84 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_21 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_22 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_57 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_80 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_33 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_12 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_54 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_3 + ModelViewParmSubset_4 + ModelViewParmSubset_84 + ModelViewParmSubset_85 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_65 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_66 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_81 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_78 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_86 + OneSecGrp_SectionRef_98 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_22 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_56 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_77 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_74 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_54 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_78 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_59 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_71 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_52 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_173 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_80 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_5 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_64 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_52 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_53 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_13 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_59 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_80 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_9 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_61 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_8 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_64 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_83 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_5 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_57 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_61 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_48 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_48 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_74 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_80 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_73 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_48 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_50 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_76 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_11 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_75 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_82 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_67 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_76 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_70 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_12 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_53 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_385 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_76 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_62 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_419 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_53 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_22 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_10 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_55 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_57 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_66 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_65 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_83 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_56 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_11 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_22 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_51 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_65 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_77 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_79 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_73 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_51 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_55 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_56 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_58 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_61 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_61 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_81 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_72 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_54 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_79 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_69 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_69 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_66 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_793 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_65 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_66 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_64 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_77 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_55 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_68 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_912 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_67 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_66 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_59 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_10 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_60 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_70 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_9 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_51 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_5 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_49 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_70 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_47 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_51 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_79 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_10 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_10 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_72 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_78 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_18 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_8 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_70 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_46 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_68 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_1130 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_50 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_54 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_71 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_11 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_5 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_63 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_54 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_12 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_11 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_1223 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_17 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_13 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_75 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_6 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_50 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_9 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_12 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + OneSecGrp_SectionRef_1313 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_82 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_10 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_11 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_51 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_58 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_60 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_62 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_22 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_14 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_15 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_51 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_13 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_28 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_20 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_58 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_7 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_45 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_24 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_19 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_4 + ModelViewParmSubset_54 + ModelViewParmSubset_86 + ModelViewParmSubset_87 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_8 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_21 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_44 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_36 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_16 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_26 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_25 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_10 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_29 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_13 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_5 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_32 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_27 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_34 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_23 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_33 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_30 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_31 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_37 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_35 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_39 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_40 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_38 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_41 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_42 + ModelViewParmSubset_86 + + + + all + dendrite_group + ModelViewParmSubset_2 + ModelViewParmSubset_43 + ModelViewParmSubset_86 + + + + + + + + + + + ModelViewParmSubset_28 + + + + + + ModelViewParmSubset_20 + + + + + + ModelViewParmSubset_10 + + + + + + ModelViewParmSubset_87 + + + + + + ModelViewParmSubset_47 + + + + + + ModelViewParmSubset_37 + + + + + + ModelViewParmSubset_36 + + + + + + ModelViewParmSubset_27 + + + + + + ModelViewParmSubset_32 + + + + + + ModelViewParmSubset_30 + + + + + + ModelViewParmSubset_13 + + + + + + ModelViewParmSubset_41 + + + + + + ModelViewParmSubset_19 + + + + + + ModelViewParmSubset_39 + + + + + + ModelViewParmSubset_44 + + + + + + ModelViewParmSubset_17 + + + + + + ModelViewParmSubset_35 + + + + + + ModelViewParmSubset_45 + + + + + + ModelViewParmSubset_24 + + + + + + ModelViewParmSubset_29 + + + + + + OneSecGrp_SectionRef_1 + + + + + + ModelViewParmSubset_38 + + + + + + ModelViewParmSubset_12 + + + + + + ModelViewParmSubset_23 + + + + + + ModelViewParmSubset_15 + + + + + + ModelViewParmSubset_33 + + + + + + ModelViewParmSubset_40 + + + + + + ModelViewParmSubset_46 + + + + + + ModelViewParmSubset_14 + + + + + + ModelViewParmSubset_25 + + + + + + ModelViewParmSubset_42 + + + + + + ModelViewParmSubset_8 + + + + + + ModelViewParmSubset_18 + + + + + + ModelViewParmSubset_31 + + + + + + ModelViewParmSubset_26 + + + + + + ModelViewParmSubset_5 + + + + + + ModelViewParmSubset_11 + + + + + + ModelViewParmSubset_16 + + + + + + ModelViewParmSubset_21 + + + + + + ModelViewParmSubset_6 + + + + + + ModelViewParmSubset_7 + + + + + + ModelViewParmSubset_48 + + + + + + OneSecGrp_SectionRef_98 + + + + + + ModelViewParmSubset_43 + + + + + + ModelViewParmSubset_22 + + + + + + ModelViewParmSubset_9 + + + + + + ModelViewParmSubset_34 + + + + + + ModelViewParmSubset_21 + + + + ModelViewParmSubset_46 + + + + ModelViewParmSubset_15 + + + + ModelViewParmSubset_42 + + + + ModelViewParmSubset_12 + + + + ModelViewParmSubset_39 + + + + ModelViewParmSubset_23 + + + + ModelViewParmSubset_14 + + + + ModelViewParmSubset_48 + + + + ModelViewParmSubset_40 + + + + ModelViewParmSubset_8 + + + + ModelViewParmSubset_6 + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_19 + + + + ModelViewParmSubset_20 + + + + ModelViewParmSubset_43 + + + + ModelViewParmSubset_9 + + + + ModelViewParmSubset_22 + + + + ModelViewParmSubset_31 + + + + ModelViewParmSubset_4 + + + + ModelViewParmSubset_17 + + + + ModelViewParmSubset_29 + + + + ModelViewParmSubset_32 + + + + ModelViewParmSubset_47 + + + + ModelViewParmSubset_27 + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_36 + + + + ModelViewParmSubset_33 + + + + ModelViewParmSubset_10 + + + + ModelViewParmSubset_25 + + + + ModelViewParmSubset_38 + + + + ModelViewParmSubset_18 + + + + OneSecGrp_SectionRef_98 + + + + ModelViewParmSubset_44 + + + + ModelViewParmSubset_41 + + + + ModelViewParmSubset_35 + + + + ModelViewParmSubset_28 + + + + ModelViewParmSubset_11 + + + + ModelViewParmSubset_26 + + + + ModelViewParmSubset_45 + + + + ModelViewParmSubset_37 + + + + ModelViewParmSubset_24 + + + + ModelViewParmSubset_16 + + + + ModelViewParmSubset_30 + + + + ModelViewParmSubset_34 + + + + ModelViewParmSubset_13 + + + + + + all + + + + + + all + + + + + + + + diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/p.nml b/examples/neuroml/PurkinjeCellPassivePulseInput/p.nml new file mode 100644 index 0000000..d28cdc3 --- /dev/null +++ b/examples/neuroml/PurkinjeCellPassivePulseInput/p.nml @@ -0,0 +1,55 @@ + + + + + +Network structure (NeuroML 1.x) for project: PurkinjeCell saved with neuroConstruct v1.5.3 on: 14:20:09, 07-Sep-12 + +Cell Group: BigCellCML contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/README b/examples/neuroml/allChannelsCell/README new file mode 100644 index 0000000..18daeb4 --- /dev/null +++ b/examples/neuroml/allChannelsCell/README @@ -0,0 +1,11 @@ +This is the directory for the NeuroML files generated by neuroConstruct 1.5.1 (neuroConstruct.org) for the Cerebellar Granule cell model +(Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, J Neurophysiol, Nov 1998; 80: 2521 - 2537). +These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). +However, further NeuroML channels have been added to the single compartment, so that their effect can be studied. + +Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. +Select and open the allChannelsCell.net.xml file. +Select the soma (graphical viewer or element tree) and click 'add field' on the right 'plot configuration' pane to plot Vm. +Run the simulation and see the soma Vm. + +Select channels from the element tree and change Gmax to observe different behaviours. Setting Gmax to zero is equivalent to removing the channel. diff --git a/examples/neuroml/allChannelsCell/allChannelsCell.net.xml b/examples/neuroml/allChannelsCell/allChannelsCell.net.xml new file mode 100644 index 0000000..90a9186 --- /dev/null +++ b/examples/neuroml/allChannelsCell/allChannelsCell.net.xml @@ -0,0 +1,52 @@ + + + + + +Network structure (NeuroML 1.x) for project: GranuleCell saved with neuroConstruct v1.5.1 on: 14:34:18, 15-Nov-11 + +Cell Group: Gran contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/allChannelsCell.py b/examples/neuroml/allChannelsCell/allChannelsCell.py new file mode 100644 index 0000000..99ae428 --- /dev/null +++ b/examples/neuroml/allChannelsCell/allChannelsCell.py @@ -0,0 +1,68 @@ +## Aditya Gilra, NCBS, Bangalore, 2012 + +""" +Inside the .../moose-examples/GranuleCell/ directory supplied with MOOSE, run +python testNeuroML_Gran98.py +(other channels and morph xml files are already present in this same directory). +The soma name below is hard coded for gran98, else any other file can be used by modifying this script. +""" +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import moose +from moose.utils import * + +from moose.neuroml.NeuroML import NeuroML + +from pylab import * + +simdt = 25e-6 # s +plotdt = 25e-6 # s +runtime = 0.7 # s + +def loadGran98NeuroML_L123(filename): + neuromlR = NeuroML() + populationDict, projectionDict = \ + neuromlR.readNeuroMLFromFile(filename) + soma_path = populationDict['Gran'][1][0].path+'/Soma_0' + somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') + somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') + somaIKC = setupTable('somaIKC',moose.HHChannel(soma_path+'/KC_CML'),'Gk') + somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') + #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') + soma = moose.Compartment(soma_path) + print "Reinit MOOSE ... " + resetSim(['/elec','/cells'],simdt,plotdt) # from moose.utils + print "Running ... " + moose.start(runtime) + tvec = arange(0.0,runtime,simdt) + plot(tvec,somaVm.vector[1:]) + title('Soma Vm') + xlabel('time (s)') + ylabel('Voltage (V)') + figure() + plot(tvec,somaCa.vector[1:]) + title('Soma Ca') + xlabel('time (s)') + ylabel('Ca conc (mol/m^3)') + figure() + plot(tvec,somaIKCa.vector[1:]) + title('KCa current (A)') + xlabel('time (s)') + ylabel('') + figure() + plot(tvec,somaIKC.vector[1:]) + title('KC current (A)') + xlabel('time (s)') + ylabel('') + print "Showing plots ..." + show() + +filename = "allChannelsCell.net.xml" +if __name__ == "__main__": + if len(sys.argv)<2: + filename = "allChannelsCell.net.xml" + else: + filename = sys.argv[1] + loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml b/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml new file mode 100644 index 0000000..82ad468 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml @@ -0,0 +1,134 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + High voltage Activated Ca2+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) + + + + E.DAngelo + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + T.Nieus + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Ca channels + http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml b/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml new file mode 100644 index 0000000..a5b60db --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml @@ -0,0 +1,154 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + Low voltage Activated Ca2+ channel. Uses name ca2 for calcium ion + + + + Alain Destexhe + Cited implementer according to the original .mod file. Comments from that file: +: +: Ca++ current responsible for low threshold spikes (LTS) +: RETICULAR THALAMUS +: Differential equations +: +: Model of Huguenard and McCormick, J Neurophysiol 68: 1373-1383, 1992. +: The kinetics is described by standard equations (NOT GHK) +: using a m2h format, according to the voltage-clamp data +: (whole cell patch clamp) of Huguenard and Prince, J Neurosci. +: 12: 3804-3817, 1992. The model was introduced in Destexhe et al. +: J. Neurophysiology 72: 803-818, 1994. +: See http://www.cnl.salk.edu/~alain , http://cns.fmed.ulaval.ca +: +: - Kinetics adapted to fit the T-channel of reticular neuron +: - Q10 changed to 5 and 3 +: - Time constant tau_h fitted from experimental data +: - shift parameter for screening charge +: +: ACTIVATION FUNCTIONS FROM EXPERIMENTS (NO CORRECTION) +: +: Reversal potential taken from Nernst Equation +: +: Written by Alain Destexhe, Salk Institute, Sept 18, 1992 +: + + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Ca channels + http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml b/examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml new file mode 100644 index 0000000..6a00e70 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml @@ -0,0 +1,33 @@ + + + + + ChannelML file containing a single Channel description + + + + + + + Padraig Gleeson + + + + Simple leak conductance for Granule cell + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml new file mode 100644 index 0000000..bd83930 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml @@ -0,0 +1,82 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. + Updated to post v1.7.3 new ChannelML format + + Padraig Gleeson + + + + A High Voltage Activated Ca2+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + Calcium channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml new file mode 100644 index 0000000..ee408ba --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml @@ -0,0 +1,44 @@ + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + This ChannelML file has been updated to reflect the preferred form of elements/attributes which will be required from v2.0. + See info on Version 2 Requirements. + + Padraig Gleeson + + + + An expontially decaying pool of calcium + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml new file mode 100644 index 0000000..54029c8 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml @@ -0,0 +1,64 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + A values don't match table 1 in M and DeS 98 + + Padraig Gleeson + + + + Anomalous inward rectifying H conductance + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml new file mode 100644 index 0000000..3a8578c --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml @@ -0,0 +1,78 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + + Padraig Gleeson + + + + A-type K channel, with rate equations expressed in tau and inf form + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml new file mode 100644 index 0000000..c865b56 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml @@ -0,0 +1,70 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + This ChannelML file is intended ONLY to replicate the original GENESIS functionality. A new Granule cell model is being developed based on + D'Angelo et al 2001 and Berends, Maex and De Schutter 2005, and the ChannelML files will be updated + + Padraig Gleeson + + + + Calcium dependent K+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml new file mode 100644 index 0000000..49fc297 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml @@ -0,0 +1,79 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. + Updated to post v1.7.3 new ChannelML format + There is a discontinuity in the expression for alpha in h gate + + Padraig Gleeson + + + + Delayed rectifyer K channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml new file mode 100644 index 0000000..39a24bf --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml @@ -0,0 +1,92 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be + Updated to post v1.7.3 new ChannelML format + Quite a small dt (~0.001 ms) is needed to give matching NEURON/GENESIS results for a compartment with just + this channel (and a leak current) + + Padraig Gleeson + + + + Fast inactivating Na+ channel + + + + Maex, R. + + + De Schutter, E. + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Maex, R and De Schutter, E. + Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the + cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract + + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml b/examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml new file mode 100644 index 0000000..6dde282 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml @@ -0,0 +1,207 @@ + + + + + + + An implementation using ChannelML of the Granule cell mode from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, 1998 + + + + + + + + + + + + + + + all + soma_group + + + + + + + + + + + + + + + all + + + + + + all + + + all + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + + all + + + + + + + all + + + + all + + + + + + + all + + + + + + + all + + + + all + + + + all + + + + all + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml b/examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml new file mode 100644 index 0000000..09239c3 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml @@ -0,0 +1,92 @@ + + + + + Voltage-gated K channel + + + + + + Matteo Farinella + + + + Channel translated from the original .mod file used in Kole MH, Ilschner SU, Kampa BM, Williams SR, Ruben PC, Stuart GJ, Action potential generation requires a high sodium channel density in the axon initial segment. Nat Neurosci. 2008 Feb;11(2):178-86. + Based on I-M (muscarinic K channel) Slow, noninactivating + + + + + Zach Mainen + Salk Institute + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + + Rothman JS, Cathala L, Steuber V, Silver RA, Synaptic depression enables neuronal gain control. Nature. 2009 Jan 14 + http://www.ncbi.nlm.nih.gov/pubmed/19145233?ordinalpos=1&itool=EntrezSystem2.PEntrez.Pubmed.Pubmed_ResultsPanel.Pubmed_DefaultReportPanel.Pubmed_RVDocSum + + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml new file mode 100644 index 0000000..a3b8f15 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml @@ -0,0 +1,134 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + High voltage Activated Ca2+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) + + + + E.DAngelo + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + T.Nieus + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Ca channels + http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml new file mode 100644 index 0000000..90a0e60 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml @@ -0,0 +1,154 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + Low voltage Activated Ca2+ channel. Uses name ca2 for calcium ion + + + + Alain Destexhe + Cited implementer according to the original .mod file. Comments from that file: +: +: Ca++ current responsible for low threshold spikes (LTS) +: RETICULAR THALAMUS +: Differential equations +: +: Model of Huguenard and McCormick, J Neurophysiol 68: 1373-1383, 1992. +: The kinetics is described by standard equations (NOT GHK) +: using a m2h format, according to the voltage-clamp data +: (whole cell patch clamp) of Huguenard and Prince, J Neurosci. +: 12: 3804-3817, 1992. The model was introduced in Destexhe et al. +: J. Neurophysiology 72: 803-818, 1994. +: See http://www.cnl.salk.edu/~alain , http://cns.fmed.ulaval.ca +: +: - Kinetics adapted to fit the T-channel of reticular neuron +: - Q10 changed to 5 and 3 +: - Time constant tau_h fitted from experimental data +: - shift parameter for screening charge +: +: ACTIVATION FUNCTIONS FROM EXPERIMENTS (NO CORRECTION) +: +: Reversal potential taken from Nernst Equation +: +: Written by Alain Destexhe, Salk Institute, Sept 18, 1992 +: + + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Ca channels + http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml new file mode 100644 index 0000000..4118c34 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml @@ -0,0 +1,73 @@ + + + + + Internal calcium concentration due to calcium currents and pump from Solinas et al 2007 + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + Note: a slightly different method was used for calculating submembrane shell volume in the original paper. + This calculated the volume of the shell as the surface area of the section times the thickness of the shell, which is approximately correct if the thickness is + quite small. The NEURON mapping of this file calculates the volume exactly from the inner and outer volumes, hence the slight difference in the thickness here + from the thickness in the original paper (0.2 um). + + Matteo Farinella + + + Padraig Gleeson + + + + Calcium first order kinetics + + + + + A.Fontana + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml new file mode 100644 index 0000000..6bf7089 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml @@ -0,0 +1,73 @@ + + + + + Internal calcium concentration due to calcium currents and pump from Solinas et al 2007 + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + Note: a slightly different method was used for calculating submembrane shell volume in the original paper. + This calculated the volume of the shell as the surface area of the section times the thickness of the shell, which is approximately correct if the thickness is + quite small. The NEURON mapping of this file calculates the volume exactly from the inner and outer volumes, hence the slight difference in the thickness here + from the thickness in the original paper (0.2 um). + + Matteo Farinella + + + Padraig Gleeson + + + + Calcium first order kinetics + + + + A.Fontana + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml new file mode 100644 index 0000000..e70006d --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml @@ -0,0 +1,125 @@ + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + Note: only mapping available is to NEURON mod file. + + Padraig Gleeson + + + + SK type Ca2+ dependent K+ channel (After HyperPolarizing), based on mod file supplied with Solinas et al 2007 (ModelDB 112685) + + + + + Sergio Solinas + Cited implementer according to the original .mod file. Note from original mod file: Based on data from: Hirschberg, Maylie, Adelman, Marrion J Gen Physiol 1998 +Last revised: May 2007 + + + + Lia Forti + Cited implementer according to the original .mod file. Note from original mod file: Based on data from: Hirschberg, Maylie, Adelman, Marrion J Gen Physiol 1998 +Last revised: May 2007 + + + + Egidio D'Angelo + Cited implementer according to the original .mod file. Note from original mod file: Based on data from: Hirschberg, Maylie, Adelman, Marrion J Gen Physiol 1998 +Last revised: May 2007 + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml new file mode 100644 index 0000000..48c63ee --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml @@ -0,0 +1,161 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + A type K+ channel + + + + + E.DAngelo + Cited implementer according to the original .mod file. Comment from original mod file: Last revised: Egidio 3.12.2003 + + + + T.Nieus + Cited implementer according to the original .mod file + + + + A. Fontana + Cited implementer according to the original .mod file + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Ca channels + http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml new file mode 100644 index 0000000..cdfa6db --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml @@ -0,0 +1,112 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + + Padraig Gleeson + + + + BK type voltage and [Ca2+] dependent K+ channel + + + + + + Egidio D'Angelo + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + T. Nieus + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml new file mode 100644 index 0000000..8970bc8 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml @@ -0,0 +1,114 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + Delayed rectifier K+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) + + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod: Last revised: 12.12.98 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml new file mode 100644 index 0000000..ffe02cd --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml @@ -0,0 +1,121 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + A slow M-like K+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) + + + + E.DAngelo + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + T.Nieus + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml new file mode 100644 index 0000000..29646dd --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml @@ -0,0 +1,127 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). + + Matteo Farinella + + + Padraig Gleeson + + + + Persistent Na+ channel + + + + E.DAngelo + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + T.Nieus + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml new file mode 100644 index 0000000..395fcce --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml @@ -0,0 +1,130 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + Does not include check in beta_s for x1=(v+V0beta_s)/Kbeta_s (when v > ~-22mV), but this shouldn't matter as beta_s ~ 0 for these values. + 30mV for table may be too low an upper limit (peak of AP can go above this) + + Matteo Farinella + + + Padraig Gleeson + + + + Resurgent Na+ channel + + + + + T.Nieus + Cited implementer according to the original .mod file. Notes from original mod file: + Last revised: 30.6.2003 + Critical value gNa + Inserted a control in bet_s to avoid huge values of x1 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml new file mode 100644 index 0000000..0b12ad8 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml @@ -0,0 +1,151 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this) + + Matteo Farinella + + + Padraig Gleeson + + + + Transient Na+ channel + + + + + E.DAngelo + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + T.Nieus + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + A. Fontana + Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml new file mode 100644 index 0000000..8e002d2 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml @@ -0,0 +1,159 @@ + + + + + + + A single segment/compartment cell + + + + + + + + + + + + + + + all + soma_group + + + + + + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + all + + + + + + soma_group + + + + + + + + + + all + + + + + + all + + + + + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + all + + + + + + all + + + all + + + + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml new file mode 100644 index 0000000..a7c46a1 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml @@ -0,0 +1,126 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). +Note: no q10 temperature dependence in channel + + Matteo Farinella + + + Padraig Gleeson + + + + hcn1 channel - fast component + + + + + S.Solinas + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + L.Forti + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + E.DAngelo + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml new file mode 100644 index 0000000..866f355 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml @@ -0,0 +1,127 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). +Note: no q10 temperature dependence in channel + + Matteo Farinella + + + Padraig Gleeson + + + + hcn1 channel - slow component + + + + + S.Solinas + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + L.Forti + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + E.DAngelo + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml new file mode 100644 index 0000000..aee3a38 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml @@ -0,0 +1,137 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). +Note: no q10 temperature dependence in channel. +Does not contain correction in original mod file for inf below -108.70. + + Matteo Farinella + + + Padraig Gleeson + + + + hcn2 channel - fast component + + + + + S.Solinas + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + L.Forti + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + E.DAngelo + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml new file mode 100644 index 0000000..24883bc --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml @@ -0,0 +1,131 @@ + + + + + ChannelML file containing a single Channel description from Solinas et al 2007 + + + + + 30mV for table may be too low an upper limit (peak of AP can go above this). +Note: no q10 temperature dependence in channel. +Does not contain correction in original mod file for inf below -108.70. + + Matteo Farinella + + + Padraig Gleeson + + + + hcn2 channel - slow component + + + + + S.Solinas + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + L.Forti + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + E.DAngelo + Cited implementer according to the original .mod file. Comment from original mod file: +Data from: Santoro et al. J Neurosci. 2000 +Last revised: May 2007 + + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + + Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. + http://www.ncbi.nlm.nih.gov/pubmed/18946520 + + + + Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) + http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml b/examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml new file mode 100644 index 0000000..9e507d0 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml @@ -0,0 +1,109 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + Yoana Dimitrova + + + Padraig Gleeson + + + + Potasium A-type conductance (transient, inactivating). Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Yoana Dimitrova + UCL + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Using broad range of voltages for sufficient coverage + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml b/examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml new file mode 100644 index 0000000..bc5e1b5 --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml @@ -0,0 +1,105 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse on single comp incl CaD + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + + Padraig Gleeson + + + Yoana Dimitrova + + + + [Ca2+] dependent K AHP (afterhyperpolarization) conductance. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Yoana Dimitrova + UCL + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + + + + This will ensure more points in calcium dependence table + + + + + + + + diff --git a/examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml b/examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml new file mode 100644 index 0000000..cd4f2ba --- /dev/null +++ b/examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml @@ -0,0 +1,91 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + Padraig Gleeson + + + + Persistent (non inactivating) Sodium channel. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + Using broad range of voltages for sufficient coverage + + + + + diff --git a/examples/neuroml/lobster_pyloric/Generated.net.3syn.xml b/examples/neuroml/lobster_pyloric/Generated.net.3syn.xml new file mode 100644 index 0000000..1d641d2 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/Generated.net.3syn.xml @@ -0,0 +1,133 @@ + + + + + +Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 + +Cell Group: AB_PD contains 1 cells +Cell Group: PY contains 1 cells +Cell Group: LP contains 1 cells + +Network connection: PD_LP contains 1 individual synaptic connections +Network connection: PY_LP contains 1 individual synaptic connections +Network connection: AB_PY contains 1 individual synaptic connections +Network connection: AB_LP contains 1 individual synaptic connections +Network connection: LP_PY contains 1 individual synaptic connections +Network connection: LP_ABPD contains 1 individual synaptic connections +Network connection: PD_PY contains 1 individual synaptic connections + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml b/examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml new file mode 100644 index 0000000..2c17370 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml @@ -0,0 +1,135 @@ + + + + + +Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 + +Cell Group: AB_PD contains 1 cells +Cell Group: PY contains 1 cells +Cell Group: LP contains 1 cells + +Network connection: PD_LP contains 1 individual synaptic connections +Network connection: PY_LP contains 1 individual synaptic connections +Network connection: AB_PY contains 1 individual synaptic connections +Network connection: AB_LP contains 1 individual synaptic connections +Network connection: LP_PY contains 1 individual synaptic connections +Network connection: LP_ABPD contains 1 individual synaptic connections +Network connection: PD_PY contains 1 individual synaptic connections + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/Generated.net.reverse.xml b/examples/neuroml/lobster_pyloric/Generated.net.reverse.xml new file mode 100644 index 0000000..ded501e --- /dev/null +++ b/examples/neuroml/lobster_pyloric/Generated.net.reverse.xml @@ -0,0 +1,133 @@ + + + + + +Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 + +Cell Group: AB_PD contains 1 cells +Cell Group: PY contains 1 cells +Cell Group: LP contains 1 cells + +Network connection: PD_LP contains 1 individual synaptic connections +Network connection: PY_LP contains 1 individual synaptic connections +Network connection: AB_PY contains 1 individual synaptic connections +Network connection: AB_LP contains 1 individual synaptic connections +Network connection: LP_PY contains 1 individual synaptic connections +Network connection: LP_ABPD contains 1 individual synaptic connections +Network connection: PD_PY contains 1 individual synaptic connections + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/Generated.net.xml b/examples/neuroml/lobster_pyloric/Generated.net.xml new file mode 100644 index 0000000..fa80c36 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/Generated.net.xml @@ -0,0 +1,137 @@ + + + + + +Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 + +Cell Group: AB_PD contains 1 cells +Cell Group: PY contains 1 cells +Cell Group: LP contains 1 cells + +Network connection: PD_LP contains 1 individual synaptic connections +Network connection: PY_LP contains 1 individual synaptic connections +Network connection: AB_PY contains 1 individual synaptic connections +Network connection: AB_LP contains 1 individual synaptic connections +Network connection: LP_PY contains 1 individual synaptic connections +Network connection: LP_ABPD contains 1 individual synaptic connections +Network connection: PD_PY contains 1 individual synaptic connections + +Close to Fig 3e of Prinz et al 2004, Nat Neuro. +Model converted by Aditya Gilra, 2013, from model of Prinz et al, 2003 and Prinz et al, 2004. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/README b/examples/neuroml/lobster_pyloric/README new file mode 100644 index 0000000..b61d594 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/README @@ -0,0 +1,30 @@ +Stomatogastric ganglion Central Pattern Generator: + generates pyloric rhythm of the lobster + +Network model translated from: +Prinz, Bucher, Marder, Nature Neuroscience, 2004; +STG neuron models translated from: +Prinz, Billimoria, Marder, J.Neurophys., 2003. + +Translated into MOOSE by Aditya Gilra, Bangalore, 2013, revised 2014. + +On a terminal, cd to the lobster_pyloric path and then execute: +python STG_net.py + +You can switch between graded (default) versus spiking synapses by setting the graded_syn variable inside STG_net.py. + +The model is fully specified in NeuroML 1.8.1 except the graded synapses which are in pyMOOSE as NeuroML 1.8.1 doesn't support graded synapses. + +You can change the model by setting filename in STG_net.py to one of: +Generated.net.xml (default) +Generated.net.reverse.xml (reverse pyloric rhythm) +Generated.net.halfcenter.xml (2 neurons half-center oscillator) +Generated.net.3syn.xml (3 synapses version of pyloric rhythm) + +Currently the default network model Generated.net.xml file with default graded synapses (as in the lobster and in the Prinz et al 2004 paper) gives the correct pyloric rhythm. +With default network with spiking synapses (graded_syn=False, un-lobster-like), one of the cells doesn't spike. +For the reversed network: Generated.net.reverse.xml, both the graded and the spiking synapses give the reverse sequence of spiking. + +However, one of the synaptic parameters (LP to PY) had to be changed from the original Fig 3e of the Prinz et al 2004 paper. +I think basal Ca and resting potential (to confirm, it's been a while since I coded this) are not specified in the original paper, so that could be the reason of the discrepancy, or could be a bug in my implementation. + diff --git a/examples/neuroml/lobster_pyloric/STG.png b/examples/neuroml/lobster_pyloric/STG.png new file mode 100644 index 0000000000000000000000000000000000000000..f63d7af0d280c67930f95073bdf2b25ab9cee464 GIT binary patch literal 14983 zcmch81ydYNxGv7(4vVw6TX1)`Ai-S%!5xB2AV9E%;O-I#?j*Q7!3j=qcM06dcj{K1 zUvLU2ieYDJX1e=*AL}R$HF*qF5>yx%7z{-P8BG`%Sa{%v4Fm@q2_t|m1HWM1HRYvX zswc<}fIpBdl;ve$UjKdNb(SUpM^Ic8^xa`#(D45Kz`|r?fq{d_9*U~6$ZN=O*mPKF zg;f?XFjO##GLqUp%O?ST8l<`zXX&fus=vvHy-v=ZwkleCgHcdpc62+uoncx-dlqFy zCc=#T`k=mx#7RdgA+>`O?*=mc;JYcbl8(Wl-hAd5P0}XTjCx2$4OFi_Z>XYrptZs6 z>BB8_v>o1#jdk8sab-jPKv)jHnjCWCjg4lE z3NKXR9OC@^%|%7w=Fw?eTcJInp*_?>&iE+$QdjH?JAFG_z`;E^&V~WktgK3K#PH;3 z6_040{Q~=ulf9xHQ???(zI{WGln{)|!^|!dvhr!*;`)QHugmk^&Q3xqD?2-Ncxb*E zCqAx`j$Os#-HsS4N;HD#bbBhhs)~w;}H_cT9!ZGbTL)ucu2mTZwk&W zOv;riP*C^~*3{g@rNZSfW#c!?Gg@-vs*8loMZs!w^|f2F4HX}S!~*e#&(MI2>JJuS zJu$`awdH}xUJpUwexw6LJG)SU>sJ$tQBf0Jz76T#%E`BrTO`5?*?607x%%&`q2p1*VB=du4M1I zbm#Q!>o+_EWWN(3NMOWGj*>&8 z;E=MNToYZokfSRujyJ5@XR!wZ%T}LgdSi{wHHhM3sPY28Bs7DkNu2tgTQFo;6{1kBF<&~RY+_uwti85KNZPl^( z%!e*Y^iSAQ1O!;4+RW66pIg>wetjl-UNqyBVY%?jzhjGFs;I6a$XyDpq!#%}0+OM| zx#V|M9wYrS@Z2F1J~cKr_~@Blnr+(^MK%7(JbKqkye(Vp^Bul?#g?}EC0+lqqyA61PJTXQ{swh z%gSl@R{>GG_;+xgQo6x;V#xy9Ea230j+&Xl7eA zqb>Q7Iji2id&mdGl&9Hm+pS^9!?~)0i+hzzUz@ zO)=Itpmux(2FO(K@0CJ0Kln=`=qHJusORCYrPEU=6e=z53yV!h7>m$Un3a_!WSE_0 zqPfW#Ta>4ufaAE_z*Jq1^Pb}x3q4`ooorC87H&Pg+cx}a&5VZ-C<w+*<8Yd^- zo)@YPw5a4TYj8;%m_YIF^f$b2RJUzjj6x!IB)9|w!AJk}4*tdV0!{ktXCyYR$4~#$ zjcz97_Kk~)cB5(9^toWl%cyQ9?$592k|SBov;*0(tY=%p|O@b zo?a}lf}5Rm37;^`=YTrl``-4|$hq?9`0$I@=KI{gun>f4d7w9KX)LAGJ$D$T`sK6- z7+$*Ee01hUhhO7?75#gywV+4Xu&0{I2U{Rf2s1J{>gep~C^~PTp%*SogX=6;my*RR=M$AlXRXjRW z;Wjp66LI{}=g-MuvcC@G67!O~czAZrwj)vxLv6?~fu}Z4`>TFZ8l#+;w}H?Z_*Y13 zXg4RNp)yEsva*5Bn}G)BKE-R;g$_&hVMq9|`7O4r6bTBE zb$Rnr%{tNLk>`S^78GI@1+;#y^+M4POt_~sWvH-&KdIa#7Xn5KcrlG{A8OcT!Z;Xl z!#T0Ft-2W)9q2_Va=`;zT}8pUy&P)YHEW4f?)+WO9;HIt5r@;)uwrB-W_b$tp;(c% z;n+_dgKR(Ouyh@9ZLFbR)V?VUJ*F$=-qU<`W z7rAHye$(E{_Pv}HiWr%bvm*`7A?La>F8U&QesZw}t!-)z^0);biyLlIH9su+c|eO^mMxeyJ)-fh=@>SL*XnFHRlMo8TimS9e~S9!u0wmAP2#qZx~b1Y|@i} zalP`t;c01lQHS7r;R&N5GP@oBt~tI+T)}tilZ%Xe`uMS3NNB}y1vs}6?wc9sC&eKm%yEZx10TIvicYLd8fk?OjHH{3p9& zN>3x*X)AHrHe^EKdR{$V<%D2s4_W!_BCA}9XMH$ySaId-&q)4d3|A#xBK5pt9Ha@s z<0a8P-VI5bc9(&0BvNv49dsuZ(GBlsL{t;=>{=D3=~G08@D@`GdwZk0B?69$ikK7= z!y|UPj$?YJL~+mMv>W)KhmsbWeozICHzTSuN+sInLm36N`k%u4cBmC^s5XVzg`}i- z(lru&d1?hq6{fO``XYOwh7fZ$mkjG0YVv*oP%;JG(tG(CF5L5IW@t>`S{QB8HJ!Tt z1BtubA-n=JI*N)V-%{drGy>}-bDgCE$xBkII<&UHrq7;K)jVO+pk7^Wh6UHZXsmER)IQoq`h~paJDYGD*FG*vi+n^uHZ2oTF>?iLt!>O$G$Hiue)M$;n4pyj z_ZJmw(TFL`u%+-PIak4pMH1EwT3?}|_x00lJQ}oRMT{)GMrQeZ=^NC7ajeKKJ-HwxYg*a& z9o2p_2UsXuHc(eZGSecpF7(f2g!TFy?kp*Z_`ZK#el-VnPP9qF@o5banbU0-&(*pG zcjR+S>ubtECkJsk_utae{!oinS=cJp8N7`Bgb_fV0R6%D5NZo2Paqp=p%nZ;KYXf1 zO>)5gDynGC4SVsG8X_4%b#(`YEv*=4{)iuY-Vud?erbyEMp{&8*&`TX40|Vcf2&@# zaVjD>cee4Akxz(atC;iZqZOKvM5rcOc2P&=GSjE#&_HQd==AsNQNo5e1TsU&s~#@$ zdL=P6Qp=p@9;{+!=1fUvnzY;lu+m45$l$1|C8tkA{3?U5$GRrUi(X0Z1!qb=(XAikK8s`rn4oBHyS}C z{_^W@E6kc?mzr-5+zBFvQ!(>JZ)q8KtDxwTxa9P#m%gkvg0m6McU}hu6L_fszs;)~wA=nlF5!!DOf)04!Xo!aqJz;d|dPO=UqR z)r}(}zxvT7UmA%w&4AZ-()sMm3IOAacvh6hu(iefYWUe$NZE^{+05LT8w*O5XRwi@%MYX# z^5*4I9te{u^bF=R8|lbZCsjsMd1@-6qs-Ibk+I77mJ=&!0P5At8Hq_LbrgIn+NypY zt8!)gwI8nMYs!rc2E=@A*WlcTIAW>ZJ3edO^!Vq#+ho!@@TNw7v1=AUuK)f<{5l66 zn+Z9iY)Gpda{iAYN>4Nbq5vo#0EQ&zTC{!nqp9rfWV&`0Wz|(*>v2Lt63{mR$gk<# z5SBVmAT0qR{xUG|K8L_(sjCMkH6tSv9O2r!SE`RJE0vXvQGiKC;c7Rq3C>NU{aMbV zb8Kg;F&uzMqfv*;` z@>FU1V>(rX2Gbu4pffW{vovr`RI{Tt^>hDdEq?QQypBC?SPOjrr=svmoYKwFfOeyR$TUL{mW>9U5#Qsy-(=i zQ6dM)&Cgj5>{#vDuY+=OkH|9nb$a4hTWKoSIK3%3>4)pK=g{;}4>GzVK-iPGru)NDO9yCV{@b4-@j=)FW(yLvwf!9vp{OpHmQxsQKp@2F8r0+x|R-GjsV+E1&D_fPF zyc7=x)2G~q9Llb#vVw1)NsD$0FQ>z10^Df3uyOB;qTZNAq>#%7d3v;!2R#-Mp=^B| zeazrxC3-8H{wrWkU+XJY-t}YJchjHMak?^rBcJ_+W*;5_-q_2@pq8cA43V?AE66}R zAtWMN&_ys&vh8-4RvY>JtkBLsnJW(>w{=KPl5SSBwf6Px-X0&(9i^acS-o2&t0@=A|=WCSjrIM*EG zH20c1zoqkH?U~DEpW;x?(f)p(TVfhmPLwobx!7hdepV@0 z88Qqkq$kPkm;#)*VbweNzh?5h)aQ>MKkC3pLnnN{EINE3F4IDO(~Do3yH>8L-Q>?n z`z77#PaJxE;pvVCr!Qzxjg?irGJ$ivj$4}O4Q@E{9vMcx7XH^XdZ($m>GVXE?C${= z{X}*%64WARS(&7ygD`ef|}Ld>AF3z9(cLZ?tMlb&df})))qh- zxCxq+r|vjQ`CeIRZzLC02GCh~dHEi?I$+siQrc|_RChMsjJ29hv9agIHIuiC@Zdjn zS%Cl8Dx)PU(A;^1@9DzBu2&g?ASEq;I5jpt(PrcnzkrAS$pytDruBn&)lFA7{D))- zb>AJK^m;72Wk3u?(eu1_5iocRst{lz^u3u8HMFO7YM>dKQkPgZx_zid$K+edJkKWn zr^qH3nQQ2X=6^3Gay9};%aE1oq64zx7(nzI*hM4>>jl$20<)Y7{@VB~7ulusd(kf5 zorn1MCbI_U$}{*@0HSU2WKJRpZ9=Pma7gl5m31!GAw5W`zmF{vCw8+dIO$I6n>5@6 zmOL)m;z2#n`DV>VxT+R!5jX>k3rL5o2c2wc4!dvkGaT3Q7Jv6Y^Fz zy776bn=_BMBNeJtNz;u*Z6_p(cfR+O_+I9_0AhFcv?u zz_wyQenh?)i~=x$+lX0u@cbL}Ekatvr}!fON>%XZxnDbjCFm#uj0+Zg_Otg2aoF{N z=wY7wl1W-=#8=1{8Cz8)sz-20(w9PEaI_oSlK<(-i+8l>^O?x1cAZR;jO_0c8y&1@ zjHQP`OsEMkSJ1>o*W&O(7?+Subc1GY*{DzImWFUm?6&Jeayio|-|JRE9cZ1-i=z}mYyq_&m1?6LqevvDjHsj$&x8x+jN3>x^C8D$ZQ?djsnr-*V)_=Or zlQ7Y% z%HH1oFFZV;@hvWvnH;`u)^pVEf7Dk9W&<=vjLs(~MZ5AiRGs6cdVXJ+@2qU&;}bn4 zku~Przopz3{_O2ihnp?*3=llC^7HdEFd)Amu_nHfq9gu%q!DWyLWo~oT?GUHTr8W8?a{3xp*z8#Yx7PcTe4iw>M`q}E1|m%AU}Rv zA_PXr?1Sc9oGOvWpH&V(8?m}|4{_%a24+Rs%ryuQ<=jReIvWTG*e51Om1in^^6#pS z7QUY?H?la%;6H0V2RJ!Z_gknb2B@Twr24Jxx*f4Q&?-)7ysz}zPIWf2)OR&P(mn{+ z=&xflg!)c(jPf$+bh%&siEMIQkAn{ZCTqu9W+uNlz9Yd}rw3q@=<156SpCxS^%az| z9qE?y5&Mxq*?XMeZ`S5NXyhO*U%@T=^}}0zIaqOTpd?ln)^|2mbv9!7e_s5P<}YQ6 z?oFYegt~{NNK)=%B6BIH+&s&)p2FOX_YOV~bfWpwluA3C?q>)iRjS{Q#;TLEpub17 z#fyiBgA-of$kGt~NSXP!lIDp!T`}l0Ock zMFw8>+#D@DAtO!PU28AQL$PAdpO@VCu%!SM`O?1~SXf&h0-F6VtfOsn!jpOMG)C}f z)$Owa(?#MnJrurCh7PN*{XkFgzM$T6upINMX;wPdAR|h`jf|)M9vVJC79}H*@k?Q4 zY!8#-8;=f5kisS;gfYMqJq!e+?^fQ%@Sq+xZCgJVVAo=3A_w}KoD%x!Zv1MmmdSZ- zw@rj699!slTbfBRj0+r_Kn?d71%D;(^mlvYKg2MnrWq$NOBZFh8=d;Wm&ga4@p|dz%{mdAmc2=-iGdv=ZTni+I{4N?QGXXFqer5+j&L zxU}_Zl8d%rCbW`OO`D3*)g($<1a_Sn`W=F-FhkWK-u_5v&j%>2xh(|<-(o%3e58Z>TOzFA~b*^fl~c(iR7liIiS zn`x?5YFCwiv(rJ@L@Jp9#y2;zK~5D(^X@Obo9(;3VyV&5k)urx!*zFGhr=cFjr8@0 z>vVh7ddD*;>vjY={`e%ls#{_`#;xEjEX744ZswXpt@^1;K z)o~K0y#l^33&+naDgM%16w=>GztEMHls0(YdJt$C0fvaQ-RD!+i3xKYD#=)4xOPz! zb*NTSZmKhvZorLqwS);nws#5YZ0KNSPZ=s#Z0r{aJ>}J_gY!fh@3XZzS;h0@DS+W| zqt|a-R3pLBDYEkSr89R{j95Gju0PY0pY7hP$(RZ?#o)?F$@cex@^?y0>MOPWaQrj0 z<}IrZ43B+NkG{^9?k*_wLHdqhQ4E_M;jgAwj~)2zloIOM`4t$v1nj+%eYzcW=XID` z5Dq1+wUjki->dwg2&Bpog)QogVywk_ESOGAblv6Xaa|?->2H}0QZSWOT^}OZ+g?2e ziUsgAb9&bL))b$Gc{N&$7Chei+7ss?PR4p_f(mQOKAVG6{Q^C#Xoc7IEB6=Vt!%pF zWu;;p=l_#WiN{61dKIV(%Fxaz^tGWaOh<8S%`ZtGdf+2hR-;CNp1F~jk*@P63gTgeJqjuHJhWOgKQgp9@6acWX~)N9<2HcTvhHmj9DAk-8bX)0O})-mHUt0fWIJxkW=$H z<I1gl11@0WN~4) zC4ILQ-vY1(X^%>R=RLAY;CKj>~azvWyc8VWAdG+{8sI>JQ*X1{14v)c5FWt`p?WvFFwrrPUhq!kPG%N^ z|BoMkCsvl5X*&H5W`bUSkVBGN&^b(72k7D&*Yi+NJy0Wr#_K|x>fKO?f6#=o6 z0pTx+(yI6L3e(?Rk(Jp7%Pi{4eN0jUezdT)v)Q;4HmoY6Y}Tuf%IO?qtJGE3aMNy_ z+l+hJ_KEUYdce1E3+Mq8RMce*0bBxJcAMc|hOX*lnt|>G7ZU&`IE?)<`MjREL@zK# zeXa#ILUI+O^Y{t~pWNMC15pPPVlpG~a*z_r9r82@cvX$TB`n!PKw=o?t(K6qu6(IK zSVIXNeR-O=W=!J5?7ngpfL zh#rIN%xaB3zg4n9&K&_nBcam%{d3MhTU32oI@wZgy%lYN7vKg1Z8KDO8R@)X6;Vj( zjvSk&H#a?0uqiQsS;K~G?uGt1ur_!WVgYnxE9y=z+-7dNd zm~@SDp=dzU7`9+L$i!FT)-CF6jO~;5vo}Q5-5J@)GZQY>Sxq4IE@I?v0_5IROo|cs z)8$6{!3lD@^@q5E4Pp>nc4l^VTAI=MYH%6kb8_J0L8(W!TqzXm9&PeT*6!f$+`Uf=d*dX zxU28qzWH?Im@(2Wa#l2IDG}kGSE|)x3QYI6YAaOeRZx8)E;U+m@Z_C0_)EV~jhEpn z@L%xD!D2KPwgyOsD7k;(iAB(yaGe+rxKz)TQRc=UBT^Gxde~PRf%O=nTVx{4y@qB| z;1GKye0*#CcM%9~aJ#LQha(L05QR?xT*>7@GHe=j;y;rdAjPDGps7KN3rQvY-qLM0 zq|NU0Cs85_I=>GqgqY0umR6(Snl2z9yJHVfRDl?r?W>{j-!!idJe-`fhq(t~@6!&q z$GtWd&SEj3<&BN`XN3|NIZO6KbG3K#f(?0w9exDo!Vgvy+#@Qe=m>(iZxw#|k|D@2 z{0u$%#Ne>pfC91N((U~C*l-`DHJ7ur>vo5Qo}8M>;46l5d|D@%RJnGK?^dDjCd$&Nu{0mDoY7-AT7}XYSf@f2t*lnVk3av( zqAe8E0|eCWO&OciP^AROFxbC9io3Kn=&|J&*Ont5gnzYIr&+L)1M8E2C3EQh4d|uc zwM9ToSA-d4NUKb^5h4jP1~i<$xn8Vg!C4c{p%tkj zZ{R~a#)$_H0uxx(herpWmb$!=qO`HIvpk%YrKChI06aV)qpFR(a~ z&iSpxU?vI~-lH(!ZLczQE4U~Ye9XjHCk$IZ@z^p?=%l##wj~&un<$NYgi_OAFsk08AF$IQ-k_cvgh+&1x*S*4*%=0!_f z2uv;7)~30V83Ga1jlH!_Khw@95~=;ZC_EQ{0kh>fcRVj}^kRMZ)`;GVAPsq*r=z0- zB%JSAFM@$eii#*wwvLXf=co5rK1Vj~etEfu}j!^0!t zt@qT@x7{I}XH9^9I{;&4p?#B;l@^{+d@uHoC;|d(w+5q^U$RxA87E0z^~ZrkjizGO zQ)ggIfgA2l{UjTdwF{bzkNx7)$q&&?aL@s`7|Vb8Fy8s!K*kW8ysROahbI6&*nC;j zB*(xT!J#{}r{K+AVC}#9d&g$f1-{dwxjC*{X+mkiVE4lMdZZYt8=)V{d<$gGY9p_Q z#RK4ijP?W2f>8Ei29F@Q$~{y)SKS&wqO5A=jMSv~AQ7w(?6gA|lm4u!_V8qtsG*^U z;GoUXR0w8ubFkV00P}?jfVRdbNBfT_%y|CweFpWcj)A(g+FvV&261GHGd3SM!3ga@ zSfS+V2CxP81TcRl?u6k#oc%GbrhM6#-(l_V+?mK02IbqcqW$GW9H`#+GN;Iu?tK}EMPAAT1*!#>1S^b)Fl9_eC>DZI05@U!yH2ndUoB^1s4I{0u+4l1U=2RSQ+XA zpF(dAV#v}Dft;T81W4iYeYXq=|(Ovul!;eaevU-9;`VuC-GhkD^dc8dwmw3N&CE;xzXKA zjoxrk(`174i$vCj(|SrF7g`akhJgjy`ILTZXB9@hWCA}loi5>??GLji_Ge?%++>|0 zeFKbp0F~*Rm{732_L=d#%b+-*1gB+Y)A4pK7POT2@Q868+^qFYMxXn8dh$wvGKFZP z+N= zgA2tsf_%o?LYGC3q?t2{Z^Xeb-GP+j^+-+bA)*vcq->`kA~~WKsv7Z-4pgGD-Z(T7 z1BV)91{5!)jeH9%_y^ldNiOu~ML(ES(BWAUU*L=`e7u)%_W94PgHUdHAh~uxiT#9! zV1l3CsP#H)S1yos3|Qx{rmr`zzqA*g7hZ2ur+qFaPFBR9{+e0H?+>O6#a}aLgDyA1T#}qqpHqSV z<~L$X?We!b?O$Jawq$IW|CNCCc!3qv;&YS&oFd?Vf1cVixn(hz`}*+XECB2D{QdfK ziJ8Oe)tqijOf(-jcK!F2vA`j^oaNiVm!API4|};mFX7|w4Bq|wPR@M=ykw}Z=+kk1 z?%x;hZjG{+C#xrz&H-rRBtLvT2ICHwKZH%+ zGhm6exDR5!tckWTNbN_CPv#1)AUb#2Z4V4OdIsH&JCnRz&(i!x#ybc#~&EY-&a&k49>(hhuDgzRAs(hM7rhNW=7Sz0Pfh27o^gz`9 z^0M$V@S5W#RL+nQ6Oo`L60ua660_I2Ap4PPi}l{cC&PNvzaJ~ZMqe#$L9eS#;DVq&&q%?4qIAZ^5)7Qmww$S7kkP+h~F&8Kd!DJu!2LMHw zY6c?C;q6`3c%#SiDTH=hfXvv~SOW%A2|{-^QUs)mI5=>l_RD7dY%nM)L*^P%Ui1I$ zx%fE$zcyb$s=k9nj8@5B>?$}d= zoDWP>crM32HcV>zm0t{{{FHOyGY946UZ-m}bj^czO9l zW|2{A{_N~*9DDA|*wm(3B7nMp)HdtCT(o*!G1T1&lf(-W4kWy>$i-++$364U;5<%; zCP!E9c780{%}>2X{7MEK%pZ2M^hZuC6e>WINez62O1KbxN%45BMtUZC;&57SC^t9l z9mZn_%coMCiEPctNsrjf7I3BRxdQs^Hc<#_DKaJn6(vL3GtVud@(&O_du{TP`tgUN z7VSgk z5BCJ;t|@WMLrfBIVqos4C_in9VoBWQEx4%A{)Aub2&T{_#2O!$KiybV9IOLd-9LzE z86+qz7OBA~v?&OiBT!<@P~lPe(7ZI-hdO{2_T#~Y!8&aGr81kYIa7@IGC5_dkdWnH zMvz`Xzs@v|cP*tuI4b_~haYgm0JEMwmDFGrh(ZGv3BbsPWCB$dzMCRvB0cN^`);UM zD79ni*sK9}D|C<)kbRDgI2*hgimidgCee^>Lryj*>eMKwB?YMZ8%tC_kB<-i)8jV^ zq(KnCna-=BTCR+Zje~>(n=OVonw{1okm=WPAk`c)(9vBv(C(i<69QzRuLed&;o_nB zyfLlO9m7B%Ds*s^6P;-*H96&72D8PlFJZ&YONT=o>w$ZYj0E3gCrPRm)AXa?#bH)9 zfgoYidYT3Xng*zki~`GQSwcW`MPb9@>2NL-1c_j3Gv(z7R&vt_D9Wn=DRBzy{Q>Tj zY!KMt@e1r<`Y)vuT1BI$c7Zf9Jly(37B(;()Pfnjc9)z95LLJ zgY!JVN=l84pxsk?j7S7QE56W{1=IUVZ~q0q6MAz9={Do(xV#)SD2r*c+=~NGgj0&V z!VA0|s#ybI>NZ1AQ%lRDIOj(DE*=eRN;DDSWR%1w0)HF8U8xK*gZX%DFs1_l&T|am z{*N6L5$3mY@ul(a20!p_0Ev9=Nw=0LAA-CRWpo=T7|33Pqb8*BIdBdzHX-&?gyr+X zdMo956l9Iarb_|>Vd6~m=fk9Kv+zG>m%zTbkh!^CwQySD*0(6=~MQ(R*U>(Oztm>hN@=B-xJkKJJzn)!{DqkZ)XaFS5( zFjN!(zpr(_5;o|Lqph;=r=_Gh1b@b3Vm#3qzx^KC;)Wx&AJotRMn_!tzfx^A#<7}h zJLdwnsQhkx7e2*Osy-<|)`B_tp(_Z$v9_|7za0ro_1;%ng8u*{g)l}JK9Etp0buKJ zi9oZ0ZVN23_?!sF(F8Hkca8C;^v9>U3b12g0E2UBJh~Msg_9Emm`_yyLUw$g-k{(~ zy~6{d=m5~^UOIJ(yBbUjnlgV}KNvL4Iq)|&D*8%m)Cv;*W>y=TpCEUGV61Ue`!0Ur z4X{aJYE9d&0;U$(?K6&4WRSnY<(Kk0y||`^ECJ8Myv_p&OPYTsl~j2L{QA$yD;+Ik z;G|*BF+iH`S?;9)M?^uIV51S@TSRye5a)L({SZINYPdX|C#DRF-*fWw6PYxvy<7OT znru+n8!|8e6n*jM>G%zo5R~%fxkNnbcjTEFnI-Q_0E;O!Kd-!}p{a?U-GDt05MpiG zJA=&fE?W11%DaghVZOYwJTvpz)p+h}*KhqA0-dQ4B!fR7)?h%;wc4jRwUWlY&m0Oh z1K5y; zIgLOtLZn@V6A(VUh0D7##`;T<0x?~nx-Kq&(O&RA{w)5OFC^Mx>6V>FS5 zgcwrgD5*%-HudyweciZg#3RszU4J@RdoSv8qzDYMZ32fjF)A^-pY literal 0 HcmV?d00001 diff --git a/examples/neuroml/lobster_pyloric/STG_net.py b/examples/neuroml/lobster_pyloric/STG_net.py new file mode 100644 index 0000000..9122636 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/STG_net.py @@ -0,0 +1,156 @@ +## Aditya Gilra, NCBS, Bangalore, 2013 + +""" +Stomatogastric ganglion Central Pattern Generator: + generates pyloric rhythm of the lobster + +Network model translated from: +Prinz, Bucher, Marder, Nature Neuroscience, 2004; +STG neuron models translated from: +Prinz, Billimoria, Marder, J.Neurophys., 2003. + +Translated into MOOSE by Aditya Gilra, Bangalore, 2013, revised 2014. +""" + +#import os +#os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.extend(['../../../python','synapses']) + +import moose +from moose.utils import * +from moose.neuroml.NeuroML import NeuroML + +import matplotlib.pyplot as plt +import numpy as np + +simdt = 25e-6 # s +plotdt = 25e-6 # s +runtime = 10.0 # s +cells_path = '/cells' # neuromlR.readNeuroMLFromFile creates cells in '/cells' + +def loadRunSTGNeuroML_L123(filename): + 'Loads and runs the pyloric rhythm generator from NeuroML files.' + # for graded synapses, else NeuroML event-based are used + from load_synapses import load_synapses + moose.Neutral('/library') + # set graded to False to use event based synapses + # if False, neuroml event-based synapses get searched for and loaded + # True to load graded synapses + graded_syn = True + #graded_syn = False + if graded_syn: + load_synapses() + + neuromlR = NeuroML() + ## readNeuroMLFromFile below returns: + # This returns + # populationDict = { + # 'populationname1':('cellName',{('instanceid1'):moosecell, ... }) + # , ... + # } + # (cellName and instanceid are strings, mooosecell is a moose.Neuron object instance) + # and + # projectionDict = { + # 'projName1':('source','target',[('syn_name1','pre_seg_path','post_seg_path') + # ,...]) + # , ... + # } + populationDict, projectionDict = \ + neuromlR.readNeuroMLFromFile(filename) + soma1_path = populationDict['AB_PD'][1][0].path+'/Soma_0' + soma1Vm = setupTable('somaVm',moose.Compartment(soma1_path),'Vm') + soma2_path = populationDict['LP'][1][0].path+'/Soma_0' + soma2Vm = setupTable('somaVm',moose.Compartment(soma2_path),'Vm') + soma3_path = populationDict['PY'][1][0].path+'/Soma_0' + soma3Vm = setupTable('somaVm',moose.Compartment(soma3_path),'Vm') + + # monitor channel current + channel_path = soma1_path + '/KCa_STG' + channel_Ik = setupTable('KCa_Ik',moose.element(channel_path),'Ik') + # monitor Ca + capool_path = soma1_path + '/CaPool_STG' + capool_Ca = setupTable('CaPool_Ca',moose.element(capool_path),'Ca') + + # monitor synaptic current + soma2 = moose.element(soma2_path) + print "Children of",soma2_path,"are:" + for child in soma2.children: + print child.className, child.path + if graded_syn: + syn_path = soma2_path+'/DoubExpSyn_Ach__cells-0-_AB_PD_0-0-_Soma_0' + syn = moose.element(syn_path) + else: + syn_path = soma2_path+'/DoubExpSyn_Ach' + syn = moose.element(syn_path) + syn_Ik = setupTable('DoubExpSyn_Ach_Ik',syn,'Ik') + + print "Reinit MOOSE ... " + resetSim(['/elec',cells_path], simdt, plotdt, simmethod='hsolve') + + print "Using graded synapses? = ", graded_syn + print "Running model filename = ",filename," ... " + moose.start(runtime) + tvec = np.arange(0.0,runtime+2*plotdt,plotdt) + tvec = tvec[ : soma1Vm.vector.size ] + + fig = plt.figure(facecolor='w',figsize=(10,6)) + axA = plt.subplot2grid((3,2),(0,0),rowspan=3,colspan=1,frameon=False) + img = plt.imread( 'STG.png' ) + imgplot = axA.imshow( img ) + for tick in axA.get_xticklines(): + tick.set_visible(False) + for tick in axA.get_yticklines(): + tick.set_visible(False) + axA.set_xticklabels([]) + axA.set_yticklabels([]) + ax = plt.subplot2grid((3,2),(0,1),rowspan=1,colspan=1) + ax.plot(tvec,soma1Vm.vector*1000,label='AB_PD',color='g',linestyle='solid') + ax.set_xticklabels([]) + ax.set_ylabel('AB_PD (mV)') + ax = plt.subplot2grid((3,2),(1,1),rowspan=1,colspan=1) + ax.plot(tvec,soma2Vm.vector*1000,label='LP',color='r',linestyle='solid') + ax.set_xticklabels([]) + ax.set_ylabel('LP (mV)') + ax = plt.subplot2grid((3,2),(2,1),rowspan=1,colspan=1) + ax.plot(tvec,soma3Vm.vector*1000,label='PY',color='b',linestyle='solid') + ax.set_ylabel('PY (mV)') + ax.set_xlabel('time (s)') + fig.tight_layout() + + fig = plt.figure(facecolor='w') + plt.plot(tvec,soma2Vm.vector*1000,label='LP',color='r',linestyle='solid') + plt.plot(tvec,soma3Vm.vector*1000,label='PY',color='b',linestyle='solid') + plt.legend() + plt.xlabel('time (s)') + plt.ylabel('Soma Vm (mV)') + + plt.figure(facecolor='w') + plt.plot(tvec,channel_Ik.vector,color='b',linestyle='solid') + plt.title('KCa current; Ca conc') + plt.xlabel('time (s)') + plt.ylabel('Ik (Amp)') + plt.twinx() + plt.plot(tvec,capool_Ca.vector,color='r',linestyle='solid') + plt.ylabel('Ca (mol/m^3)') + + plt.figure(facecolor='w') + plt.plot(tvec,syn_Ik.vector,color='b',linestyle='solid') + plt.title('Ach syn current in '+soma2_path) + plt.xlabel('time (s)') + plt.ylabel('Isyn (S)') + print "Showing plots ..." + + plt.show() + +filename = "Generated.net.xml" +if __name__ == "__main__": + ''' + Inside the moose-examples/neuroml/lobster_ploric/ directory supplied with MOOSE, run + ``python STG_net.py`` + (other channels and morph xml files are already present in this same directory). + read the pdf documentation for a tutorial by Aditya Gilra. + ''' + if len(sys.argv)>=2: + filename = sys.argv[1] + loadRunSTGNeuroML_L123(filename) diff --git a/examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml b/examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml new file mode 100644 index 0000000..d0f5453 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml @@ -0,0 +1,143 @@ + + + + + + + Stomatogastric Ganglion (STG) neuron +From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons +Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, +J Neurophysiol 90: 3998–4015, 2003. + +The AB_PD cell is an STG neuron with channel densities corresponding to AB/PD neuron #2 from Table 2 of: +Similar network activity from disparate circuit parameters +Astrid A Prinz, Dirk Bucher and Eve Marder +Nature Neuroscience, 2004. + +Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + soma_group + + + + soma_group + + + + + + diff --git a/examples/neuroml/lobster_pyloric/cells/LP.morph.xml b/examples/neuroml/lobster_pyloric/cells/LP.morph.xml new file mode 100644 index 0000000..a138523 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/cells/LP.morph.xml @@ -0,0 +1,146 @@ + + + + + + + Stomatogastric Ganglion (STG) neuron +From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons +Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, +J Neurophysiol 90: 3998–4015, 2003. + +The LP cell is an STG neuron with channel densities corresponding to LP neuron #5 from Table 2 of: +Similar network activity from disparate circuit parameters +Astrid A Prinz, Dirk Bucher and Eve Marder +Nature Neuroscience, 2004. + +Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + soma_group + + + + soma_group + + + + + + diff --git a/examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml b/examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml new file mode 100644 index 0000000..8659b0e --- /dev/null +++ b/examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml @@ -0,0 +1,146 @@ + + + + + + + Stomatogastric Ganglion (STG) neuron +From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons +Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, +J Neurophysiol 90: 3998–4015, 2003. + +The LP cell is an STG neuron with channel densities corresponding to LP neuron #5 from Table 2 of: +Similar network activity from disparate circuit parameters +Astrid A Prinz, Dirk Bucher and Eve Marder +Nature Neuroscience, 2004. + +Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + soma_group + + + + soma_group + + + + + + diff --git a/examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml b/examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml new file mode 100644 index 0000000..1e60f1d --- /dev/null +++ b/examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml @@ -0,0 +1,149 @@ + + + + + + + Stomatogastric Ganglion (STG) neuron +From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons +Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, +J Neurophysiol 90: 3998–4015, 2003. + +The LP cell is an STG neuron with channel densities corresponding to LP neuron #5 from Table 2 of: +Similar network activity from disparate circuit parameters +Astrid A Prinz, Dirk Bucher and Eve Marder +Nature Neuroscience, 2004. + +Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + all + + + + + + all + + + + + + + + + all + + + + + + soma_group + + + + soma_group + + + + + + diff --git a/examples/neuroml/lobster_pyloric/cells/PY.morph.xml b/examples/neuroml/lobster_pyloric/cells/PY.morph.xml new file mode 100644 index 0000000..5323aa8 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/cells/PY.morph.xml @@ -0,0 +1,146 @@ + + + + + + + Stomatogastric Ganglion (STG) neuron +From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons +Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, +J Neurophysiol 90: 3998–4015, 2003. + +The PY cell is an STG neuron with channel densities corresponding to PY neuron #1 from Table 2 of: +Similar network activity from disparate circuit parameters +Astrid A Prinz, Dirk Bucher and Eve Marder +Nature Neuroscience, 2004. + +Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + soma_group + + + + + + all + + + + + + all + + + + + + all + + + + + + soma_group + + + + soma_group + + + + + + diff --git a/examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml b/examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml new file mode 100644 index 0000000..c71ebd5 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml @@ -0,0 +1,56 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + An expontially decaying pool of calcium + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at - ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + Ca Pool Ion Concentration + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/channels/CaS_STG.xml b/examples/neuroml/lobster_pyloric/channels/CaS_STG.xml new file mode 100644 index 0000000..a1210cf --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/CaS_STG.xml @@ -0,0 +1,56 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + CaS conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at -- ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + CaS channel + + + + + Nernst,Cout=3e-6,z=2 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/channels/CaT_STG.xml b/examples/neuroml/lobster_pyloric/channels/CaT_STG.xml new file mode 100644 index 0000000..c12911e --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/CaT_STG.xml @@ -0,0 +1,56 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + Ca T-type (low threshold) conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at - ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + Na channel + + + + + Nernst,Cout=3e-6,z=2 + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/channels/ChannelTest.py b/examples/neuroml/lobster_pyloric/channels/ChannelTest.py new file mode 100644 index 0000000..1928c50 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/ChannelTest.py @@ -0,0 +1,62 @@ +import random +import sys +import math +import moose +from moose.neuroml import * + +# This program plots a channel's state variables / hinf, htau etc. as a function +# of voltage. + +mechanisms = { + 'H_STG': ['minf','mtau'], + 'CaS_STG': ['minf','mtau','hinf','htau'], + 'CaT_STG': ['minf','mtau','hinf','htau'], + 'KA_STG': ['minf','mtau','hinf','htau'], + 'Kd_STG': ['ninf','ntau'], + 'Na_STG': ['minf','mtau','hinf','htau'] + } + +import sys +if len(sys.argv)<2: + print("Selecting a channel randomly form %s" % list(mechanisms.keys())) + channel_name = random.choice( mechanisms.keys() ) + print("Selected %s" % channel_name ) +else: + channel_name = sys.argv[1] + +if channel_name in mechanisms: + mechanism_vars = mechanisms[channel_name] +else: + print("Undefined channel, please use one of", list(mechanisms.keys())) + sys.exit(1) + +CELSIUS = 35 # degrees Centigrade +CML = ChannelML({'temperature':CELSIUS}) +CML.readChannelMLFromFile('../channels/'+channel_name+'.xml') + +from pylab import * + +if __name__ == "__main__": + + for varidx in range(len(mechanism_vars)/2): # loop over each inf and tau + print( "Running for %s" % varidx ) + var = ['X','Y','Z'][varidx] + gate = moose.element('/library/'+channel_name+'/gate'+var) + VMIN = gate.min + VMAX = gate.max + NDIVS = gate.divs + dv = (VMAX-VMIN)/NDIVS + # will use same VMIN, VMAX and dv for A and B tables. + vrange = array([VMIN+i*dv for i in range(NDIVS+1)]) + figure() + plot(vrange*1000,gate.tableA/gate.tableB,'b-,') # Assume A and B have corresponding number of entries + xlabel('Voltage (mV)') + ylabel('steady state value') + title('state variable '+mechanism_vars[2*varidx]+' of '+channel_name+' vs Voltage (mV)') + figure() + plot(vrange*1000,1./gate.tableB*1000.,'b-,') + xlabel('Voltage (mV)') + ylabel('tau (ms)') + title('state variable '+mechanism_vars[2*varidx+1]+' of '+channel_name+' vs Voltage (mV)') + show() + diff --git a/examples/neuroml/lobster_pyloric/channels/H_STG.xml b/examples/neuroml/lobster_pyloric/channels/H_STG.xml new file mode 100644 index 0000000..aa45ed0 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/H_STG.xml @@ -0,0 +1,48 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + H conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at -- ncbs.res.in + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + H channel + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/channels/KA_STG.xml b/examples/neuroml/lobster_pyloric/channels/KA_STG.xml new file mode 100644 index 0000000..73830df --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/KA_STG.xml @@ -0,0 +1,55 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + K Anomalous conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at -- ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + KA channel + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/channels/KCa_STG.xml b/examples/neuroml/lobster_pyloric/channels/KCa_STG.xml new file mode 100644 index 0000000..8c8e4c5 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/KCa_STG.xml @@ -0,0 +1,54 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + KCa conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at -- ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + KCa channel + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/channels/Kd_STG.xml b/examples/neuroml/lobster_pyloric/channels/Kd_STG.xml new file mode 100644 index 0000000..bb50f9e --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/Kd_STG.xml @@ -0,0 +1,48 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + Kd conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at - ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + Kd channel + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/channels/LeakConductance.xml b/examples/neuroml/lobster_pyloric/channels/LeakConductance.xml new file mode 100644 index 0000000..c5f4586 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/LeakConductance.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/channels/Na_STG.xml b/examples/neuroml/lobster_pyloric/channels/Na_STG.xml new file mode 100644 index 0000000..6bfa57a --- /dev/null +++ b/examples/neuroml/lobster_pyloric/channels/Na_STG.xml @@ -0,0 +1,55 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + Aditya Gilra + + + + Na conductance + + + + Aditya Gilra + National Centre for Biological Sciences, Bangalore, India. + adityag - at -- ncbs.res.in + + + + + Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. + + + + + Na channel + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py b/examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py new file mode 100644 index 0000000..65c6a88 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py @@ -0,0 +1,63 @@ + +# -*- coding: utf-8 -*- +import sys +import math + +from pylab import * + +try: + import moose +except ImportError: + print "ERROR: Could not import moose. Please add the directory containing moose.py in your PYTHONPATH" + import sys + sys.exit(1) + +from moose.utils import * # for BSplineFill + +class AchSyn_STG(moose.SynChan): + """Acetylcholine graded synapse""" + def __init__(self, *args): + moose.SynChan.__init__(self,*args) + self.Ek = -80e-3 # V + # For event based synapses, I had a strength of 5e-6 S + # to compensate for event-based, + # but for the original graded synapses, 5e-9 S is correct. + self.Gbar = 5e-9 # S # set weight on connecting the network + self.tau1 = 100e-3 # s # this is Vpre dependent (see below) + self.tau2 = 0.0 # single first order equation + + Vth = -35e-3 # V + Delta = 5e-3 # V + ######## Graded synapse activation + inhsyntable = moose.Interpol(self.path+"/graded_table") + graded = moose.Mstring(self.path+'/graded') + graded.value = 'True' + mgblock = moose.Mstring(self.path+'/mgblockStr') + mgblock.value = 'False' + # also needs a synhandler + moosesynhandler = moose.SimpleSynHandler(self.path+'/handler') + # connect the SimpleSynHandler or the STDPSynHandler to the SynChan (double exp) + moose.connect( moosesynhandler, 'activationOut', self, 'activation' ) + + # ds/dt = s_inf/tau - s/tau = A - Bs + # where A=s_inf/tau is activation, B is 1/tau + # Fill up the activation and tau tables + # Graded synapse tau + inhtautable = moose.Interpol(self.path+"/tau_table") + inhtautable.xmin = -70e-3 # V + inhtautable.xmax = 0e-3 # V + tau = [self.tau1] # at -70 mV + tau.extend( [self.tau1*(1. - 1./(1+math.exp((Vth-vm)/Delta))) \ + for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) + inhtautable.vector = array(tau) + inhtautable.connect("lookupOut",self,"setTau1") + + # Graded synapse activation + inhsyntable.xmin = -70e-3 # V + inhsyntable.xmax = 0e-3 # V + act = [0.0] # at -70 mV + act.extend( [1/(1+math.exp((Vth-vm)/Delta)) \ + for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) + act = array(act) / array(tau) # element-wise division # NOTE: A = s_inf/tau + inhsyntable.vector = array(act) + inhsyntable.connect("lookupOut",self,"activation") diff --git a/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml b/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml new file mode 100644 index 0000000..2882ec9 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml @@ -0,0 +1,28 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Padraig Gleeson + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml b/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml new file mode 100644 index 0000000..00d6151 --- /dev/null +++ b/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml @@ -0,0 +1,28 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Padraig Gleeson + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py b/examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py new file mode 100644 index 0000000..c8cdbec --- /dev/null +++ b/examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py @@ -0,0 +1,63 @@ + +# -*- coding: utf-8 -*- +import sys +import math + +from pylab import * + +try: + import moose +except ImportError: + print "ERROR: Could not import moose. Please add the directory containing moose.py in your PYTHONPATH" + import sys + sys.exit(1) + +from moose.utils import * # for BSplineFill + +class GluSyn_STG(moose.SynChan): + """Glutamate graded synapse""" + def __init__(self, *args): + moose.SynChan.__init__(self,*args) + self.Ek = -70e-3 # V + # For event based synapses, I had a strength of 5e-6 S + # to compensate for event-based, + # but for the original graded synapses, 5e-9 S is correct. + self.Gbar = 5e-9 # S # set weight on connecting the network + self.tau1 = 40e-3 # s # this is Vpre dependent (see below) + self.tau2 = 0.0 # single first order equation + + Vth = -35e-3 # V + Delta = 5e-3 # V + ######## Graded synapse activation + inhsyntable = moose.Interpol(self.path+"/graded_table") + graded = moose.Mstring(self.path+'/graded') + graded.value = 'True' + mgblock = moose.Mstring(self.path+'/mgblockStr') + mgblock.value = 'False' + # also needs a synhandler + moosesynhandler = moose.SimpleSynHandler(self.path+'/handler') + # connect the SimpleSynHandler to the SynChan (double exp) + moose.connect( moosesynhandler, 'activationOut', self, 'activation' ) + + # ds/dt = s_inf/tau - s/tau = A - Bs + # where A=s_inf/tau is activation, B is 1/tau + # Fill up the activation and tau tables + # Graded synapse tau + inhtautable = moose.Interpol(self.path+"/tau_table") + inhtautable.xmin = -70e-3 # V + inhtautable.xmax = 0e-3 # V + tau = [self.tau1] # at -70 mV + tau.extend( [self.tau1*(1. - 1./(1+math.exp((Vth-vm)/Delta))) \ + for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) + inhtautable.vector = array(tau) + inhtautable.connect("lookupOut",self,"setTau1") + + # Graded synapse activation + inhsyntable.xmin = -70e-3 # V + inhsyntable.xmax = 0e-3 # V + act = [0.0] # at -70 mV + act.extend( [1/(1+math.exp((Vth-vm)/Delta)) \ + for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) + act = array(act) / array(tau) # element-wise division # NOTE: A = s_inf/tau + inhsyntable.vector = array(act) + inhsyntable.connect("lookupOut",self,"activation") diff --git a/examples/neuroml/lobster_pyloric/synapses/load_synapses.py b/examples/neuroml/lobster_pyloric/synapses/load_synapses.py new file mode 100644 index 0000000..fe8b50e --- /dev/null +++ b/examples/neuroml/lobster_pyloric/synapses/load_synapses.py @@ -0,0 +1,9 @@ + +# -*- coding: utf-8 -*- + +from GluSyn_STG import GluSyn_STG +from AchSyn_STG import AchSyn_STG + +def load_synapses(): + GluSyn_STG("/library/DoubExpSyn_Glu") + AchSyn_STG("/library/DoubExpSyn_Ach") diff --git a/examples/paper-2015/Fig2_elecModels/Fig2A.py b/examples/paper-2015/Fig2_elecModels/Fig2A.py new file mode 100644 index 0000000..560167d --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/Fig2A.py @@ -0,0 +1,527 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Author: Aditya Gilra, NCBS, Bangalore, October, 2014. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose + +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 11.5e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +red_fact = 10 # reduction factor for N,C,J +N = 10000/red_fact # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 1200.0 #s # Simulation time +dt = 1e-3 #s # time step +plotDt = 1.0 #s # Time step for storing output. + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 500/red_fact # Number of incoming connections on each neuron (exc or inh) + # 5% conn prob between any two neurons + # Since we reduced N from 10000 to 1000, C = 50 instead of 500 + # but we need to increase J by 10 to maintain total input per neuron +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +J *= red_fact # Multiply J by red_fact to compensate C/red_fact. +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.16 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = self.Iinject + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=int(self.T) + ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + self.noiseTables.vec[i].stopTime = self.simtime + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + # moose simulation + #moose.useClock( 1, '/network', 'process' ) + #moose.setClock( 0, dt ) + #moose.setClock( 1, dt ) + #moose.setClock( 2, dt ) + #moose.setClock( 3, dt ) + #moose.setClock( 9, dt ) + ## Do need to set the dt for MOOSE clocks + for i in range(10): + moose.setClock( i, dt ) + moose.setClock( 18, plotDt ) + t1 = time.time() + print('reinit MOOSE -- takes a while ~20s.') + moose.reinit() + print('reinit time t = ', time.time() - t1) + t1 = time.time() + print('starting') + simadvance = self.simtime / 50.0 + for i in range( 50 ): + moose.start( simadvance ) + print('at t = ', i * simadvance, 'realtime = ', time.time() - t1) + #moose.start(self.simtime) + print('runtime for ', self.simtime, 'sec, is t = ', time.time() - t1) + + if plotif: + self._plot() + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table2( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(list(range(self.N)),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table2( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table2( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table2( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self): + """ plots the spike raster for the simulated net""" + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + self.recN = 50 # number of neurons for which to record weights and Ca + if CaPlasticity: + ## make tables to store weights of recN exc synapses + ## for each post-synaptic exc neuron + self.weights = moose.Table2( '/plotWeights', self.excC*self.recN ) + for i in range(self.recN): # range(self.N) is too large + for j in range(self.excC): + moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + self.CaTables = moose.Table2( '/plotCa', self.recN ) + for i in range(self.recN): # range(self.N) is too large + moose.connect( self.CaTables.vec[i], 'requestOut', + self.synsEE.vec[i*self.excC+j], 'getCa') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + if np.random.uniform()<0.05: + synij.weight = 1.0 + else: + synij.weight = self.J # no weightScale here, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + ## individual neuron Vm-s + + timeseries = net.trange + ## individual neuron firing rates + + ## population firing rates + + ## Ca plasticity: weight vs time plots + if CaPlasticity: + ## Ca versus time in post-synaptic neurons + for i in range(net.recN): # range(net.N) is too large + net.CaTables.vec[i].xplot( 'ca.xplot', 'Ca_' + str(i) ) + + for i in range(net.recN): # range(net.N) is too large + for j in range(net.excC): + k = net.excC*i+j + net.weights.vec[k].xplot( 'wt.xplot', 'w_' + str(k) ) + + ## all EE weights are used for a histogram + weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ + for i in range(net.NmaxExc) for j in range(net.excC) ] + histo, edges = np.histogram( weights, bins=100 ) + print() + print(histo) + print() + print(edges) + print() + + plt.figure() + plt.hist(weights, bins=100) + plt.title("Histogram of efficacies") + plt.xlabel("Efficacy (arb)") + plt.ylabel("# per bin") + +if __name__=='__main__': + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print(net) + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + net.simulate(simtime,plotif=True, v0=np.random.uniform(el-20e-3,vt,size=N)) + plt.figure() + extra_plots(net) + plt.show() + diff --git a/examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py b/examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py new file mode 100644 index 0000000..8caeccb --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py @@ -0,0 +1,62 @@ +import os +import numpy as np +from pylab import * +from itertools import islice + +if not os.path.isfile('wx.xplot'): + print("Please run ./Fig2A.py to generate the data") + quit() + +fh = open('wt.xplot',mode='r') + +fulltime = 1200 #s +plotdt = 1 #s +numpts = int(fulltime/plotdt)+1 + +print 'reading' +wts = [] +while True: + next_line = '' + while 'plotname' not in next_line: + next_line = fh.readline() + if next_line == '': break + if next_line == '': break + next_wt = [float(fh.readline()) for i in range(numpts)] + wts.append(next_wt) + print 'weight',len(wts) + + +hiAve = np.zeros( len( wts[0] ) ) +loAve = np.zeros( len( wts[0] ) ) +numHi = 0 +for i in wts: + if i[0] > 0.5: + hiAve += np.array( i ) + numHi += 1 + else: + loAve += np.array( i ) + + +hiAve /= numHi +loAve /= ( len( wts ) - numHi ) + +def dumpVec( f, name, vec ): + f.write( '/newplot\n' ) + f.write( '/plotname ' + name + '\n' ) + for i in vec: + f.write( str( i ) + '\n' ) + +f = open( 'averageOfxplots', 'w' ) +dumpVec( f, 'highAverage', hiAve ) +dumpVec( f, 'lowAverage', loAve ) +dumpVec( f, 'highExample', wts[4] ) +dumpVec( f, 'lowExample', wts[5] ) +f.close() + + +print 'numHi = ', numHi, ' plotting...' +figure() +plot(transpose(wts)) +plot( hiAve, linewidth=4 ) +plot( loAve, linewidth=4 ) +show() diff --git a/examples/paper-2015/Fig2_elecModels/Fig2C.py b/examples/paper-2015/Fig2_elecModels/Fig2C.py new file mode 100644 index 0000000..5314c3a --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/Fig2C.py @@ -0,0 +1,356 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This programme illustrates building a panel of multiscale models to +# test neuronal plasticity in different contexts. +######################################################################## +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('../../../Demos/util') +import rdesigneur as rd +import moogli + +PI = 3.14159265359 +useGssa = True +combineSegments = True +# Pick your favourite cell here. +#elecFileName = "ca1_minimal.p" +## Cell morphology from Bannister and Larkman J Neurophys 2015/NeuroMorpho +elecFileName = "h10.CNG.swc" +#elecFileName = "CA1.morph.xml" +#elecFileName = "VHC-neuron.CNG.swc" +synSpineList = [] +synDendList = [] +probeInterval = 0.1 +probeAmplitude = 1.0 +tetanusFrequency = 100.0 +tetanusAmplitude = 1000 +tetanusAmplitudeForSpines = 1000 +frameRunTime = 1e-3 # 1 ms +baselineTime = 0.05 +tetTime = 0.01 +postTetTime = 0.01 +runtime = baselineTime + tetTime + postTetTime + +def buildRdesigneur(): + ''' + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + ''' + cellProto = [ [ "./cells/" + elecFileName, "elec" ] ] + chanProto = [ + ['./chans/hd.xml'], \ + ['./chans/kap.xml'], \ + ['./chans/kad.xml'], \ + ['./chans/kdr.xml'], \ + ['./chans/na3.xml'], \ + ['./chans/nax.xml'], \ + ['./chans/CaConc.xml'], \ + ['./chans/Ca.xml'], \ + ['./chans/NMDA.xml'], \ + ['./chans/Glu.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are: + # p, g, L, len, dia, maxP, maxG, maxL. + # where + # p = path distance from soma, threaded along dendrite + # g = geometrical distance from soma (shortest distance) + # L = electrotonic distance from soma: number of length constants + # len = length of dendritic compartment + # dia = diameter of dendritic compartment + # maxP = maximal value of 'p' for the cell + # maxG = maximal value of 'g' for the cell + # maxL = maximal value of 'L' for the cell + # + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], \ + ["na3", "#soma#,#dend#,#apical#", "Gbar", "250" ], \ + ["nax", "#soma#,#axon#", "Gbar", "1250" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#", "tau", "0.0133" ], \ + ["kad", "#soma#,#dend#,#apical#", "Gbar", \ + "300*H(p - 100e-6)*(1+p*1e4)" ], \ + ["Ca", "#dend#,#apical#", "Gbar", "p<160e-6? 10+ p*0.25e-6 : 50" ], \ + ["Ca", "#soma#", "Gbar", "10" ], \ + ["glu", "#dend#,#apical#", "Gbar", "200*H(p-200e-6)" ], \ + ["NMDA", "#dend#,#apical#", "Gbar", "2*H(p-200e-6)" ] \ + ] + spineDistrib = [ \ + ["spine", '#apical#', "spineSpacing", "20e-6", \ + "spineSpacingDistrib", "2e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField offset scale + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rd.addSpineProto() # This adds a version with an LCa channel by default. + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + #spineProto = spineProto, \ + + return rdes + +def buildPlots( rdes ): + graphs = moose.Neutral( '/graphs' ) + vtab = moose.Table( '/graphs/VmTab' ) + moose.connect( vtab, 'requestOut', rdes.soma, 'getVm' ) + +def displayPlots(): + pylab.figure(1, figsize = (8,10 ) ) + pylab.subplot( 1,1,1) + for i in moose.wildcardFind( "/graphs/#VmTab" ): + t = numpy.arange( 0, i.vector.size, 1 ) * i.dt + pylab.plot( t, i.vector, label = i.name ) + pylab.xlabel( "Time (s)" ) + pylab.legend() + pylab.title( 'Vm' ) + + pylab.figure(2, figsize= (8,10)) + ax = pylab.subplot( 1,1,1 ) + neuron = moose.element( '/model/elec' ) + comptDistance = dict( zip( neuron.compartments, neuron.pathDistanceFromSoma ) ) + for i in moose.wildcardFind( '/library/#[ISA=ChanBase]' ): + chans = moose.wildcardFind( '/model/elec/#/' + i.name ) + print i.name, len( chans ) + p = [ 1e6*comptDistance.get( j.parent, 0) for j in chans ] + Gbar = [ j.Gbar/(j.parent.length * j.parent.diameter * PI) for j in chans ] + if len( p ) > 2: + pylab.plot( p, Gbar, linestyle = 'None', marker = ".", label = i.name ) + sortedGbar = sorted(zip(p, Gbar), key=lambda x: x[0]) + ax.set_yscale( 'log' ) + pylab.xlabel( "Distance from soma (microns)" ) + pylab.ylabel( "Channel density (Seimens/sq mtr)" ) + pylab.legend() + pylab.title( 'Channel distribution' ) + pylab.show() + +def create_vm_viewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.0, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 1.0, + 0.0, + 0.1)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + + def prelude(view): + view.pitch(PI/2) + view.zoom(0.4) + + def interlude(view): + moose.start(frameRunTime) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + view.yaw(0.01) + currTime = moose.element('/clock').currentTime + if currTime < runtime: + deliverStim(currTime) + else: + view.stop() + + def postlude(view): + displayPlots() + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + prelude=prelude, + interlude=interlude, + postlude=postlude) + viewer.attach_view(view) + return viewer + + +def create_ca_viewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path) + ca_elements = [] + for compartment_path in network.shapes.keys(): + if moose.exists(compartment_path + '/Ca_conc'): + ca_elements.append(moose.element(compartment_path + '/Ca_conc')) + else: + ca_elements.append(moose.element('/library/Ca_conc')) + + normalizer = moogli.utilities.normalizer(0.0, + 0.002, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(1.0, + 0.0, + 0.0, + 1.0), + moogli.colors.Color(0.0, + 1.0, + 1.0, + 0.1)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + cas = [element.Ca for element in ca_elements] + network.set("color", cas, mapper) + + def prelude(view): + view.pitch(PI/2) + view.zoom(0.4) + + def interlude(view): + moose.start(frameRunTime) + cas = [element.Ca for element in ca_elements] + network.set("color", cas, mapper) + view.yaw(0.01) + currTime = moose.element('/clock').currentTime + if currTime < runtime: + deliverStim(currTime) + else: + view.stop() + + viewer = moogli.Viewer("ca-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("ca-view", + prelude=prelude, + interlude=interlude) + viewer.attach_view(view) + return viewer + +def build3dDisplay(rdes): + print "building 3d Display" + app = QtGui.QApplication(sys.argv) + + vm_viewer = create_vm_viewer(rdes) + vm_viewer.resize(700, 900) + vm_viewer.show() + vm_viewer.start() + + ca_viewer = create_ca_viewer(rdes) + ca_viewer.resize(700, 900) + ca_viewer.show() + ca_viewer.start() + + return app.exec_() + + +def deliverStim( currTime ): + if currTime > baselineTime and currTime < baselineTime + tetTime: + # deliver tet stim + step = int ( (currTime - baselineTime) / frameRunTime ) + tetStep = int( 1.0 / (tetanusFrequency * frameRunTime ) ) + if step % tetStep == 0: + for i in synDendList: + i.activation( tetanusAmplitude ) + for i in synSpineList: + i.activation( tetanusAmplitudeForSpines ) + else: + # deliver probe stim + step = int (currTime / frameRunTime ) + probeStep = int( probeInterval / frameRunTime ) + if step % probeStep == 0: + print "Doing probe Stim at ", currTime + for i in synSpineList: + i.activation( probeAmplitude ) + + +def main(): + global synSpineList + global synDendList + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + synSpineList = moose.wildcardFind( "/model/elec/#head#/glu,/model/elec/#head#/NMDA" ) + temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) + + synDendList = list( temp - set( synSpineList ) ) + print "num spine, dend syns = ", len( synSpineList ), len( synDendList ) + moose.reinit() + #for i in moose.wildcardFind( '/model/elec/#apical#/#[ISA=CaConcBase]' ): + #print i.path, i.length, i.diameter, i.parent.length, i.parent.diameter + + buildPlots(rdes) + # Run for baseline, tetanus, and post-tetanic settling time + t1 = time.time() + build3dDisplay(rdes) + print 'real time = ', time.time() - t1 + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig2_elecModels/Fig2D.py b/examples/paper-2015/Fig2_elecModels/Fig2D.py new file mode 100644 index 0000000..ef8a05e --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/Fig2D.py @@ -0,0 +1,104 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### +# This example illustrates loading a model from an SWC file, inserting +# spines, and viewing it. + +import moogli +import moose +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import rdesigneur as rd + +PI = 3.14159265358979 +frameRunTime = 0.0001 +runtime = 0.1 +inject = 15e-10 +simdt = 5e-5 +RM = 1.0 +RA = 1.0 +CM = 0.01 +# This is the expression used to set spine spacing: +spineSpacing = "dia * 2" +minSpacing = 0.1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle = 0 +spineAngleDistrib = 2*PI + + +def create_vm_viewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path, + vertices=10) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + + def interlude(view): + moose.start(frameRunTime) + #vms = [moose.element(x).Vm for x in network.shapes.keys()] + #network.set("color", vms, mapper) + view.pitch(0.01) + currTime = moose.element('/clock').currentTime + if currTime >= runtime: + view.stop() + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + interlude=interlude) + viewer.attach_view(view) + return viewer + + +def main(): + ######## Put your favourite cell model here ###### + ##This one is from PMID 19146814: Peng et al Neuron 2009 + filename = 'cells/K-18.CNG.swc' + moose.Neutral( '/library' ) + rdes = rd.rdesigneur( \ + cellProto = [[ filename, 'elec' ] ],\ + spineProto = [['makeSpineProto()', 'spine' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', spineSpacing, \ + 'spacingDistrib', str( minSpacing ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ] \ + ) + rdes.buildModel('/model') + moose.reinit() + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + + ################## Now we set up the display ######################## + print "Setting Up 3D Display" + app = QtGui.QApplication(sys.argv) + vm_viewer = create_vm_viewer(rdes) + vm_viewer.showMaximized() + vm_viewer.start() + return app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig2_elecModels/Fig2E.py b/examples/paper-2015/Fig2_elecModels/Fig2E.py new file mode 100644 index 0000000..1a02727 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/Fig2E.py @@ -0,0 +1,125 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### +# This example illustrates loading a model from an SWC file, inserting +# channels, and running it. + +import moogli +import moose +from PyQt4 import Qt, QtCore, QtGui +import numpy +import pylab +import sys +import os +import rdesigneur as rd + +PI = 3.14159265358979 +frameRunTime = 0.0005 +runtime = 0.1 +inject = 1e-9 +chanProto_ = [ + ['./chans/KChannel_HH.xml'], + ['./chans/NaChannel_HH.xml'], + ['./chans/LeakConductance.xml'], + [ './chans/kdr.xml' ] + ] + +passiveDistrib_ = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", + "Em", "-58e-3", "initVm", "-65e-3" ] + , [ ".", "#axon#", "RA", "0.5" ] + ] + +chanDistrib_ = [ + [ "NaConductance", "#", "Gbar", "1200" ] + , [ "KConductance", "#", "Gbar", "360" ] + , [ "LeakConductance", "#", "Gbar", "3" ] + , [ "kdr", "#", "Gbar", "10" ] + ] + + +def create_vm_viewer(rdes, somaVm): + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + + def prelude(view): + view.pitch(PI/2.0) + + def interlude(view): + moose.start(frameRunTime) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + view.yaw(0.01) + currTime = moose.element('/clock').currentTime + if currTime >= runtime: + view.stop() + + def postlude(view): + pylab.plot(numpy.linspace(0, + runtime, + len(somaVm.vector)), + somaVm.vector * 1000) + pylab.xlabel("Time (s)") + pylab.ylabel("Vm (mV)") + pylab.show() + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + prelude=prelude, + interlude=interlude, + postlude=postlude) + viewer.attach_view(view) + return viewer + + +def main(): + ######## Put your favourite cell model here ###### + ##This one is from PMID 22730554: Suo et al J. Mol Cell Biol 2012 + filename = 'cells/ko20x-07.CNG.swc' + moose.Neutral( '/library' ) + rdes = rd.rdesigneur( \ + cellProto = [[ filename, 'elec' ] ],\ + passiveDistrib = passiveDistrib_, + chanProto = chanProto_, + chanDistrib = chanDistrib_ + ) + rdes.buildModel( '/model' ) + moose.reinit() + + ################## Now we store plots ######################## + somaVm = moose.Table( '/somaVm' ) + moose.connect( somaVm, 'requestOut', rdes.soma, 'getVm' ) + ################## Now we set up the display ######################## + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + + print "Setting Up 3D Display" + app = QtGui.QApplication(sys.argv) + vm_viewer = create_vm_viewer(rdes, somaVm) + vm_viewer.show() + vm_viewer.start() + return app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml b/examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc new file mode 100644 index 0000000..c8c64e8 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc @@ -0,0 +1,1193 @@ +# Original file K-18.swc edited using StdSwc version 1.31 on 1/26/12. +# Irregularities and fixes documented in K-18.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\Master File Processing\Original\K-18.asc +# +# NEUROMANTIC V1.6.3 (1/26/2012 12:52:03 PM): Saved to K-18.swc.CNG.swc +1 1 2.67 1.55 -7.84 9.3275 -1 +2 1 2.67 10.87 -7.84 9.3275 1 +3 1 2.67 -7.77 -7.84 9.3275 1 +4 3 -4.16 8.32 -5.88 1.91 1 +5 3 -5.85 11.02 -5.88 1.575 4 +6 3 -8.89 16.3 -5.88 1.405 5 +7 3 -12.37 21.82 -5.88 1.405 6 +8 3 -14.4 25.42 -5.88 1.405 7 +9 3 -15.63 27.67 -4.9 1.405 8 +10 3 -16.76 29.13 -4.9 1.405 9 +11 3 -21.37 31.15 -4.9 0.845 10 +12 3 -23.96 32.72 -4.9 0.845 11 +13 3 -26.54 34.08 -4.9 0.845 12 +14 3 -26.77 34.19 -4.9 0.845 13 +15 3 -30.25 32.72 -4.9 0.675 14 +16 3 -32.28 31.49 -4.9 0.675 15 +17 3 -33.07 32.61 -3.92 0.225 16 +18 3 -35.88 27.78 -3.92 0.675 17 +19 3 -37.68 25.64 -3.92 0.675 18 +20 3 -41.95 24.29 -3.92 0.505 19 +21 3 -44.99 23.06 -3.92 0.505 20 +22 3 -46.45 23.39 -3.92 0.225 21 +23 3 -48.7 20.13 -3.92 0.45 22 +24 3 -51.4 16.98 -3.92 0.45 23 +25 3 -53.87 14.85 -3.92 0.45 24 +26 3 -54.32 14.28 -3.92 0.45 25 +27 3 -55.34 12.93 -4.9 0.395 26 +28 3 -58.71 12.15 -4.9 0.395 27 +29 3 -60.4 12.03 -4.9 0.28 28 +30 3 -62.65 11.81 -4.9 0.225 29 +31 3 -64.56 11.47 -4.9 0.225 30 +32 3 -37.56 19.12 -4.9 0.62 19 +33 3 -38.24 15.97 -4.9 0.56 32 +34 3 -38.58 14.51 -4.9 0.56 33 +35 3 -39.59 15.52 -4.9 0.395 34 +36 3 -39.81 10.91 -4.9 0.56 35 +37 3 -40.83 8.32 -4.9 0.56 36 +38 3 -42.29 6.19 -4.9 0.56 37 +39 3 -42.85 3.49 -4.9 0.56 38 +40 3 -42.96 1.12 -4.9 0.56 39 +41 3 -43.19 -0.11 -4.9 0.56 40 +42 3 -46.56 -2.81 -4.9 0.56 41 +43 3 -49.94 -5.96 -4.9 0.56 42 +44 3 -53.31 -7.31 -4.9 0.56 43 +45 3 -57.02 -8.77 -4.9 0.56 44 +46 3 -59.27 -9.56 -4.9 0.56 45 +47 3 -61.52 -12.03 -4.9 0.56 46 +48 3 -63.32 -14.06 -4.9 0.56 47 +49 3 -66.36 -14.85 -4.9 0.56 48 +50 3 -69.28 -15.3 -4.9 0.56 49 +51 3 -73.22 -15.75 -4.9 0.56 50 +52 3 -76.37 -18.22 -4.9 0.56 51 +53 3 -78.39 -19.12 -4.9 0.56 52 +54 3 -82.22 -18.55 -4.9 0.56 53 +55 3 -85.14 -18.89 -4.9 0.56 54 +56 3 -86.38 -18.89 -4.9 0.56 55 +57 3 -88.06 -20.47 -4.9 0.335 56 +58 3 -90.2 -22.72 -4.9 0.335 57 +59 3 -91.78 -23.84 -4.9 0.335 58 +60 3 -93.69 -25.42 -4.9 0.335 59 +61 3 -94.59 -26.21 -4.9 0.335 60 +62 3 -88.4 -16.07 -4.9 0.395 56 +63 3 -88.63 -13.72 -4.9 0.395 62 +64 3 -89.08 -12.15 -4.9 0.395 63 +65 3 -90.54 -11.58 -4.9 0.395 64 +66 3 -93.24 -12.82 -4.9 0.395 65 +67 3 -96.16 -13.05 -4.9 0.395 66 +68 3 -97.96 -11.58 -4.9 0.395 67 +69 3 -99.76 -10.57 -4.9 0.395 68 +70 3 -100.77 -11.47 -4.9 0.28 69 +71 3 -100.55 -10.11 -4.9 0.395 70 +72 3 -103.47 -9.67 -4.9 0.395 71 +73 3 -106.28 -9.67 -4.9 0.395 72 +74 3 -107.86 -10.01 -4.9 0.395 73 +75 3 -109.32 -11.02 -4.9 0.395 74 +76 3 -110.45 -11.47 -4.9 0.395 75 +77 3 -111.46 -11.92 -4.9 0.395 76 +78 3 -113.03 -11.92 -4.9 0.395 77 +79 3 -29.02 36.44 -4.9 0.73 14 +80 3 -30.59 36.22 -4.9 0.28 79 +81 3 -31.27 36.33 -4.9 0.28 80 +82 3 -31.72 36.33 -4.9 0.28 81 +83 3 -31.15 38.58 -4.9 0.73 79 +84 3 -32.28 39.59 -4.9 0.73 83 +85 3 -33.29 40.15 -4.9 0.73 84 +86 3 -33.29 40.26 -4.9 0.73 85 +87 3 -37.22 43.3 -4.9 0.62 86 +88 3 -39.47 44.88 -4.9 0.62 87 +89 3 -41.28 45.89 -4.9 0.62 88 +90 3 -44.2 47.91 -4.9 0.62 89 +91 3 -45.89 49.71 -4.9 0.62 90 +92 3 -49.04 52.75 -4.9 0.62 91 +93 3 -52.41 55.34 -4.9 0.62 92 +94 3 -58.26 59.16 -4.9 0.62 93 +95 3 -59.72 60.4 -4.9 0.62 94 +96 3 -60.96 61.52 -4.9 0.62 95 +97 3 -61.07 61.52 -4.9 0.62 96 +98 3 -59.95 62.53 -4.9 0.335 97 +99 3 -63.66 63.55 -4.9 0.62 98 +100 3 -65.01 64.9 -4.9 0.62 99 +101 3 -66.13 65.91 -4.9 0.62 100 +102 3 -66.23 66.02 -4.9 0.62 101 +103 3 -65.12 67.37 -4.9 0.335 102 +104 3 -68.38 67.81 -4.9 0.62 103 +105 3 -68.94 68.72 -4.9 0.62 104 +106 3 -72.88 69.06 -3.92 0.56 105 +107 3 -77.83 70.41 -3.92 0.56 106 +108 3 -81.77 71.64 -3.92 0.56 107 +109 3 -84.8 74.12 -4.9 0.56 108 +110 3 -87.39 76.37 -4.9 0.56 109 +111 3 -89.19 77.27 -4.9 0.56 110 +112 3 -89.64 77.48 -4.9 0.56 111 +113 3 -93.24 77.83 -4.9 0.56 112 +114 3 -97.06 77.94 -4.9 0.56 113 +115 3 -100.66 78.05 -4.9 0.56 114 +116 3 -103.25 78.05 -4.9 0.56 115 +117 3 -106.17 77.48 -4.9 0.56 116 +118 3 -106.96 77.04 -4.9 0.56 117 +119 3 -108.98 76.59 -4.9 0.56 118 +120 3 -110.78 76.7 -4.9 0.56 119 +121 3 -112.69 76.25 -4.9 0.56 120 +122 3 -90.54 82.33 -4.9 0.335 112 +123 3 -90.88 84.69 -4.9 0.335 122 +124 3 -90.09 89.64 -4.9 0.335 123 +125 3 -89.08 95.37 -4.9 0.335 124 +126 3 -88.74 99.2 -4.9 0.335 125 +127 3 -88.63 101.22 -4.9 0.335 126 +128 3 -88.4 104.82 -4.9 0.335 127 +129 3 -87.95 106.4 -4.9 0.335 128 +130 3 -87.95 108.08 -4.9 0.335 129 +131 3 -87.84 108.87 -4.9 0.335 130 +132 3 -87.84 109.21 -4.9 0.335 131 +133 3 -69.62 71.42 -4.9 0.62 105 +134 3 -70.41 74.34 -4.9 0.62 133 +135 3 -71.08 77.48 -3.92 0.62 134 +136 3 -70.86 79.84 -3.92 0.62 135 +137 3 -70.63 82.44 -4.9 0.62 136 +138 3 -71.08 85.36 -3.92 0.62 137 +139 3 -71.87 86.94 -3.92 0.62 138 +140 3 -72.77 90.65 -3.92 0.62 139 +141 3 -73.11 92.11 -3.92 0.62 140 +142 3 -75.69 91.89 -3.92 0.45 141 +143 3 -78.5 90.54 -3.92 0.45 142 +144 3 -79.84 90.31 -3.92 0.45 143 +145 3 -81.88 91.44 -3.92 0.45 144 +146 3 -83.34 92.56 -3.92 0.45 145 +147 3 -84.35 92.9 -3.92 0.45 146 +148 3 -84.69 92.9 -3.92 0.45 147 +149 3 -73.89 94.47 -3.92 0.45 141 +150 3 -74.23 96.5 -3.92 0.45 149 +151 3 -75.69 98.19 -3.92 0.45 150 +152 3 -76.25 98.41 -3.92 0.45 151 +153 3 -78.17 97.17 -3.92 0.28 152 +154 3 -78.84 96.16 -3.92 0.28 153 +155 3 -79.06 95.71 -3.92 0.28 154 +156 3 -78.5 102.01 -3.92 0.62 152 +157 3 -79.52 104.26 -3.92 0.62 156 +158 3 -79.4 108.08 -3.92 0.62 157 +159 3 -81.65 113.93 -3.92 0.62 158 +160 3 -82.44 115.28 -3.92 0.62 159 +161 3 -84.46 114.94 -3.92 0.505 160 +162 3 -86.49 114.94 -3.92 0.45 161 +163 3 -87.95 115.28 -3.92 0.45 162 +164 3 -89.08 115.39 -3.92 0.45 163 +165 3 -34.29 43.41 -4.9 0.45 86 +166 3 -35.09 45.33 -4.9 0.395 165 +167 3 -37.34 47.46 -4.9 0.395 166 +168 3 -39.14 50.16 -4.9 0.395 167 +169 3 -40.94 52.52 -4.9 0.395 168 +170 3 -41.39 53.76 -4.9 0.395 169 +171 3 -42.06 54.44 -4.9 0.395 170 +172 3 -47.01 56.01 -4.9 0.395 171 +173 3 -53.31 59.5 -4.9 0.395 172 +174 3 -56.12 62.65 -4.9 0.395 173 +175 3 -56.35 60.06 -4.9 0.28 174 +176 3 -58.48 55.56 -4.9 0.225 175 +177 3 -59.38 53.31 -4.9 0.225 176 +178 3 -60.51 51.51 -4.9 0.225 177 +179 3 -61.63 49.26 -4.9 0.225 178 +180 3 -58.37 66.58 -4.9 0.335 174 +181 3 -60.4 71.08 -4.9 0.335 180 +182 3 -63.21 75.34 -4.9 0.28 181 +183 3 -65.56 78.05 -4.9 0.28 182 +184 3 -70.41 83.23 -4.9 0.28 183 +185 3 -75.58 84.69 -4.9 0.28 184 +186 3 -80.3 85.93 -4.9 0.28 185 +187 3 -84.02 85.59 -5.88 0.28 186 +188 3 -88.96 85.7 -5.88 0.28 187 +189 3 -94.02 85.7 -5.88 0.28 188 +190 3 -96.61 86.38 -5.88 0.28 189 +191 3 -102.57 87.16 -5.88 0.28 190 +192 3 -106.73 88.29 -5.88 0.28 191 +193 3 -109.21 89.75 -5.88 0.28 192 +194 3 -110.78 91.66 -4.9 0.28 193 +195 3 -111.8 93.35 -4.9 0.28 194 +196 3 -111.91 94.25 -4.9 0.28 195 +197 3 -108.76 85.36 -5.88 0.28 191 +198 3 -111.8 84.02 -5.88 0.28 197 +199 3 -40.15 58.71 -4.9 0.335 171 +200 3 -38.35 62.53 -4.9 0.335 199 +201 3 -37.22 67.26 -4.9 0.335 200 +202 3 -37.45 71.42 -4.9 0.335 201 +203 3 -38.69 76.59 -4.9 0.335 202 +204 3 -40.38 79.63 -4.9 0.335 203 +205 3 -42.4 82.55 -4.9 0.335 204 +206 3 -42.85 84.13 -4.9 0.335 205 +207 3 -42.96 88.18 -4.9 0.335 206 +208 3 -42.63 91.44 -4.9 0.335 207 +209 3 -42.51 92.11 -4.9 0.335 208 +210 3 -42.74 97.62 -4.9 0.335 209 +211 3 -40.6 104.93 -3.92 0.335 210 +212 3 -39.03 110.56 -3.92 0.335 211 +213 3 -39.14 113.26 -3.92 0.335 212 +214 3 -38.35 114.94 -3.92 0.335 213 +215 3 -15.41 32.84 -4.9 0.955 10 +216 3 -15.07 34.08 -4.9 0.955 215 +217 3 -11.81 35.77 -3.92 0.395 216 +218 3 -8.32 39.81 -3.92 0.395 217 +219 3 -3.37 44.43 -3.92 0.395 218 +220 3 0.34 47.8 -3.92 0.395 219 +221 3 5.05 54.41 -4.9 0.335 220 +222 3 11.92 60.03 -4.9 0.335 221 +223 3 16.42 62.28 -4.9 0.335 222 +224 3 21.26 64.31 -4.9 0.335 223 +225 3 28.01 71.17 -4.9 0.335 224 +226 3 31.15 74.88 -4.9 0.335 225 +227 3 33.74 77.58 -3.92 0.335 226 +228 3 38.58 81.96 -3.92 0.335 227 +229 3 41.61 86.35 -3.92 0.335 228 +230 3 43.53 90.17 -3.92 0.335 229 +231 3 44.09 93.21 -3.92 0.335 230 +232 3 45.33 96.36 -3.92 0.335 231 +233 3 44.31 100.63 -3.92 0.335 232 +234 3 42.85 105.47 -3.92 0.335 233 +235 3 42.85 107.72 -3.92 0.335 234 +236 3 41.16 113.12 -3.92 0.335 235 +237 3 40.94 114.13 -3.92 0.335 236 +238 3 40.83 114.47 -3.92 0.335 237 +239 3 -14.51 39.7 -4.9 0.9 216 +240 3 -14.62 41.84 -4.9 0.9 239 +241 3 -16.3 43.3 -4.9 0.675 240 +242 3 -16.87 43.98 -4.9 0.675 241 +243 3 -18.45 43.08 -4.9 0.335 242 +244 3 -19.68 42.51 -4.9 0.335 243 +245 3 -20.02 48.02 -4.9 0.73 242 +246 3 -21.59 50.16 -4.9 0.73 245 +247 3 -23.62 51.96 -4.9 0.73 246 +248 3 -24.52 53.09 -4.9 0.73 247 +249 3 -28.12 53.87 -4.9 0.56 248 +250 3 -29.58 54.21 -4.9 0.56 249 +251 3 -30.93 56.12 -4.9 0.28 250 +252 3 -31.04 57.13 -4.9 0.28 251 +253 3 -31.27 57.92 -4.9 0.28 252 +254 3 -33.18 54.89 -4.9 0.395 250 +255 3 -36.33 54.77 -4.9 0.395 254 +256 3 -39.81 53.65 -4.9 0.395 255 +257 3 -44.65 54.32 -4.9 0.395 256 +258 3 -48.7 55.45 -4.9 0.395 257 +259 3 -52.3 56.12 -4.9 0.395 258 +260 3 -55.56 57.02 -4.9 0.395 259 +261 3 -57.7 56.91 -4.9 0.395 260 +262 3 -27.67 56.01 -4.9 0.675 248 +263 3 -31.27 58.93 -4.9 0.675 262 +264 3 -33.85 61.18 -4.9 0.675 263 +265 3 -34.42 62.31 -4.9 0.675 264 +266 3 -32.84 63.97 -3.92 0.395 265 +267 3 -31.94 64.42 -3.92 0.395 266 +268 3 -31.49 64.98 -3.92 0.395 267 +269 3 -37.34 65.31 -4.9 0.62 265 +270 3 -40.94 68.13 -4.9 0.62 269 +271 3 -42.85 69.93 -4.9 0.62 270 +272 3 -43.98 71.62 -4.9 0.62 271 +273 3 -44.2 72.29 -4.9 0.62 272 +274 3 -43.3 72.63 -3.92 0.395 273 +275 3 -46.68 74.88 -3.92 0.62 274 +276 3 -48.81 77.23 -3.92 0.62 275 +277 3 -50.95 78.93 -3.92 0.62 276 +278 3 -51.74 79.48 -4.9 0.62 277 +279 3 -53.31 77.23 -4.9 0.225 278 +280 3 -53.76 76.12 -4.9 0.225 279 +281 3 -54.32 75.89 -4.9 0.225 280 +282 3 -53.2 80.5 -4.9 0.62 278 +283 3 -57.36 79.26 -4.9 0.335 282 +284 3 -60.4 79.48 -4.9 0.335 283 +285 3 -63.88 78.7 -4.9 0.335 284 +286 3 -68.27 78.81 -4.9 0.335 285 +287 3 -73.22 79.04 -4.9 0.335 286 +288 3 -76.37 80.05 -4.9 0.335 287 +289 3 -80.64 79.83 -4.9 0.335 288 +290 3 -81.99 79.83 -4.9 0.335 289 +291 3 -84.35 79.38 -4.9 0.335 290 +292 3 -86.6 79.38 -4.9 0.335 291 +293 3 -90.76 81.96 -4.9 0.335 292 +294 3 -92.11 83.09 -4.9 0.335 293 +295 3 -93.13 83.88 -4.9 0.335 294 +296 3 -54.89 82.75 -4.9 0.62 282 +297 3 -55.67 83.88 -4.9 0.62 296 +298 3 -54.44 84.44 -4.9 0.335 297 +299 3 -58.6 86.24 -4.9 0.62 298 +300 3 -61.63 88.82 -4.9 0.62 299 +301 3 -63.21 89.61 -4.9 0.62 300 +302 3 -69.06 89.05 -4.9 0.62 301 +303 3 -73.22 88.94 -4.9 0.62 302 +304 3 -77.59 90.96 -4.9 0.62 303 +305 3 -82.1 93.55 -4.9 0.62 304 +306 3 -84.91 95.46 -4.9 0.62 305 +307 3 -90.76 96.58 -4.9 0.62 306 +308 3 -94.47 95.24 -4.9 0.62 307 +309 3 -95.37 95.01 -4.9 0.62 308 +310 3 -96.72 93.55 -4.9 0.335 309 +311 3 -99.2 93.55 -4.9 0.335 310 +312 3 -101.67 93.32 -4.9 0.335 311 +313 3 -99.65 95.12 -4.9 0.675 309 +314 3 -103.13 95.35 -4.9 0.675 313 +315 3 -105.83 95.12 -4.9 0.62 314 +316 3 -107.63 95.8 -4.9 0.62 315 +317 3 -110.11 94.34 -4.9 0.62 316 +318 3 -111.8 93.1 -4.9 0.62 317 +319 3 -112.69 93.21 -4.9 0.62 318 +320 3 -11.36 46.56 -4.9 0.845 240 +321 3 -10.01 49.15 -4.9 0.845 320 +322 3 -9.34 50.27 -4.9 0.845 321 +323 3 -8.1 56.35 -4.9 0.845 322 +324 3 -7.87 59.5 -4.9 0.73 323 +325 3 -7.99 62.53 -4.9 0.73 324 +326 3 -7.54 64.33 -4.9 0.73 325 +327 3 -9.44 65.34 -4.9 0.45 326 +328 3 -9.9 65.68 -4.9 0.45 327 +329 3 -10.91 66.13 -4.9 0.45 328 +330 3 -11.58 66.23 -4.9 0.45 329 +331 3 -5.4 69.39 -4.9 0.73 326 +332 3 -3.94 69.06 -4.9 0.335 331 +333 3 -4.61 72.2 -4.9 0.73 332 +334 3 -3.6 74.45 -5.88 0.73 333 +335 3 -4.61 75.47 -5.88 0.335 334 +336 3 -5.4 76.14 -5.88 0.335 335 +337 3 -6.3 76.59 -5.88 0.335 336 +338 3 -1.46 79.63 -4.9 0.845 334 +339 3 1.57 80.42 -4.9 0.45 338 +340 3 4.16 81.77 -4.9 0.45 339 +341 3 5.96 83.12 -4.9 0.335 340 +342 3 7.31 84.35 -3.92 0.335 341 +343 3 7.76 84.69 -3.92 0.335 342 +344 3 -0.11 83.23 -4.9 0.785 338 +345 3 0.73 85.7 -4.9 0.785 344 +346 3 1.14 86.94 -4.9 0.785 345 +347 3 1.57 88.18 -4.9 0.785 346 +348 3 9.97 87.5 -4.9 0.335 346 +349 3 2.36 89.98 -4.9 0.785 345 +350 3 2.59 89.98 -4.9 0.785 349 +351 3 -1.01 94.14 -4.9 0.62 350 +352 3 -3.15 96.39 -4.9 0.62 351 +353 3 -7.09 99.99 -3.92 0.62 352 +354 3 -8.32 101 -3.92 0.62 353 +355 3 -9.22 103.81 -3.92 0.56 354 +356 3 -10.11 106.62 -3.92 0.56 355 +357 3 -10.8 108.53 -3.92 0.56 356 +358 3 -13.05 110.56 -3.92 0.56 357 +359 3 -14.85 111.23 -3.92 0.56 358 +360 3 -16.07 111.8 -3.92 0.56 359 +361 3 -16.76 113.37 -3.92 0.505 360 +362 3 -17.77 114.61 -3.92 0.505 361 +363 3 -18.55 115.39 -3.92 0.505 362 +364 3 -18.89 110.33 -3.92 0.395 360 +365 3 -21.48 109.55 -3.92 0.395 364 +366 3 -22.72 109.55 -3.92 0.395 365 +367 3 -24.63 110.22 -3.92 0.335 366 +368 3 -26.21 110.56 -3.92 0.335 367 +369 3 -28.01 110.11 -3.92 0.335 368 +370 3 -30.14 108.76 -3.92 0.335 369 +371 3 -34.64 108.53 -3.92 0.335 370 +372 3 -36.22 107.41 -3.92 0.335 371 +373 3 -38.46 104.93 -3.92 0.28 372 +374 3 -39.14 104.48 -3.92 0.28 373 +375 3 -25.31 106.4 -3.92 0.28 366 +376 3 -26.88 105.27 -3.92 0.28 375 +377 3 -28.79 105.38 -3.92 0.28 376 +378 3 -29.35 105.72 -3.92 0.28 377 +379 3 -30.14 105.72 -3.92 0.28 378 +380 3 9 94.36 -4.9 0.73 350 +381 3 10.23 95.26 -4.9 0.73 380 +382 3 10.68 95.82 -4.9 0.73 381 +383 3 12.37 94.59 -4.9 0.28 382 +384 3 14.62 93.35 -4.9 0.28 383 +385 3 16.2 93.13 -4.9 0.28 384 +386 3 18.78 92.56 -4.9 0.28 385 +387 3 20.36 91.44 -4.9 0.28 386 +388 3 13.05 99.09 -3.92 0.73 382 +389 3 14.4 102.46 -3.92 0.62 388 +390 3 12.03 103.13 -3.92 0.45 389 +391 3 10.23 103.36 -3.92 0.45 390 +392 3 7.2 104.03 -3.92 0.45 391 +393 3 6.3 104.03 -3.92 0.45 392 +394 3 15.18 104.26 -3.92 0.73 389 +395 3 14.4 107.86 -3.92 0.45 394 +396 3 14.28 110.33 -3.92 0.45 395 +397 3 14.17 111.12 -3.92 0.45 396 +398 3 13.95 112.25 -3.92 0.45 397 +399 3 13.5 113.37 -3.92 0.45 398 +400 3 13.05 114.49 -3.92 0.45 399 +401 3 12.6 115.28 -3.92 0.45 400 +402 3 17.43 111.8 -3.92 0.395 397 +403 3 20.36 113.26 -3.92 0.395 402 +404 3 22.49 114.16 -3.92 0.395 403 +405 3 23.96 114.61 -3.92 0.395 404 +406 3 24.86 114.94 -3.92 0.395 405 +407 3 18.11 106.28 -3.92 0.62 394 +408 3 20.13 108.08 -3.92 0.62 407 +409 3 22.16 109.88 -3.92 0.62 408 +410 3 23.62 111.46 -3.92 0.62 409 +411 3 23.73 112.69 -3.92 0.62 410 +412 3 24.86 114.16 -3.92 0.62 411 +413 3 25.64 115.06 -3.92 0.62 412 +414 3 26.09 115.51 -3.92 0.62 413 +415 3 2.81 82.1 -4.9 0.335 344 +416 3 4.84 80.75 -4.9 0.335 415 +417 3 5.62 80.19 -4.9 0.335 416 +418 3 -3.07 51.53 -4.9 0.845 322 +419 3 -9.6 56.25 -4.9 0.335 418 +420 3 -15.67 60.75 -4.9 0.335 419 +421 3 -20.17 62.33 -4.9 0.335 420 +422 3 1.01 53.2 -4.9 0.62 418 +423 3 5.17 54.1 -4.9 0.62 422 +424 3 12.26 58.93 -4.9 0.62 423 +425 3 15.97 61.3 -4.9 0.62 424 +426 3 23.84 66.58 -4.9 0.62 425 +427 3 28.57 70.18 -4.9 0.62 426 +428 3 32.84 72.31 -4.9 0.62 427 +429 3 35.99 72.98 -4.9 0.62 428 +430 3 40.38 74.01 -4.9 0.62 429 +431 3 46 77.04 -3.92 0.62 430 +432 3 48.25 79.84 -3.92 0.56 431 +433 3 49.82 82.1 -3.92 0.56 432 +434 3 51.4 86.71 -3.92 0.56 433 +435 3 53.42 90.09 -3.92 0.505 434 +436 3 55.56 93.57 -3.92 0.505 435 +437 3 59.61 96.84 -2.94 0.505 436 +438 3 63.55 100.32 -2.94 0.505 437 +439 3 66.92 103.25 -2.94 0.505 438 +440 3 69.28 105.27 -2.94 0.505 439 +441 3 70.97 107.97 -2.94 0.505 440 +442 3 71.08 107.94 -2.94 0.505 441 +443 3 71.64 109.32 -2.94 0.505 442 +444 3 71.87 110 -2.94 0.505 443 +445 3 73.67 112.33 -2.94 0.335 444 +446 3 74.9 114.8 -2.94 0.335 445 +447 3 75.23 115.25 -2.94 0.335 446 +448 3 75.23 108.28 -2.94 0.335 442 +449 3 79.52 110.08 -2.94 0.335 448 +450 3 83.57 113.12 -2.94 0.335 449 +451 3 84.24 113.91 -2.94 0.335 450 +452 3 11.7 -3.15 -4.9 0.675 1 +453 3 12.71 -6.97 -4.9 0.73 452 +454 3 12.26 -11.02 -3.92 0.73 453 +455 3 12.48 -13.72 -3.92 0.62 454 +456 3 12.37 -16.42 -3.92 0.62 455 +457 3 11.81 -19.23 -3.92 0.62 456 +458 3 9.34 -24.07 -3.92 0.62 457 +459 3 6.41 -31.49 -3.92 0.62 458 +460 3 4.26 -30.93 -3.92 0.45 459 +461 3 0.79 -31.49 -3.92 0.45 460 +462 3 -3.94 -33.74 -3.92 0.45 461 +463 3 -5.17 -34.64 -3.92 0.45 462 +464 3 -6.64 -35.09 -3.92 0.45 463 +465 3 2.02 -41.84 -3.92 0.45 459 +466 3 2.02 -42.4 -3.92 0.45 465 +467 3 3.15 -43.53 -3.92 0.45 466 +468 3 4.05 -44.2 -3.92 0.45 467 +469 3 5.05 -44.43 -3.92 0.45 468 +470 3 0.11 -46.68 -3.92 0.45 466 +471 3 0 -48.92 -3.92 0.45 470 +472 3 -0.22 -50.72 -3.92 0.45 471 +473 3 -1.69 -52.64 -3.92 0.45 472 +474 3 -5.74 -58.03 -3.92 0.45 473 +475 3 -10.01 -65.91 -3.92 0.45 474 +476 3 -11.02 -70.29 -3.92 0.45 475 +477 3 -12.03 -74.9 -3.92 0.45 476 +478 3 -11.92 -77.38 -3.92 0.45 477 +479 3 -11.02 -78.84 -3.92 0.45 478 +480 3 -11.92 -80.53 -4.9 0.395 479 +481 3 -11.7 -82.89 -4.9 0.395 480 +482 3 -12.48 -85.7 -4.9 0.28 481 +483 3 -13.95 -89.64 -4.9 0.28 482 +484 3 -14.73 -92 -4.9 0.28 483 +485 3 -15.41 -93.35 -4.9 0.28 484 +486 3 11.25 5.17 -4.9 0.73 1 +487 3 13.83 8.44 -4.9 0.73 486 +488 3 15.97 11.81 -4.9 0.73 487 +489 3 16.3 13.72 -4.9 0.62 488 +490 3 12.82 17.66 -4.9 0.505 489 +491 3 9.56 19.91 -4.9 0.45 490 +492 3 6.86 22.49 -4.9 0.45 491 +493 3 4.61 25.64 -4.9 0.45 492 +494 3 2.14 28.57 -4.9 0.45 493 +495 3 -0.56 30.37 -4.9 0.45 494 +496 3 -3.26 32.17 -4.9 0.45 495 +497 3 -6.52 34.86 -4.9 0.45 496 +498 3 -10.23 37.68 -4.9 0.45 497 +499 3 -12.03 37.68 -4.9 0.45 498 +500 3 -13.61 39.14 -4.9 0.395 499 +501 3 18.45 18.55 -4.9 0.62 489 +502 3 20.47 25.76 -4.9 0.62 501 +503 3 20.81 29.24 -4.9 0.62 502 +504 3 20.23 33.29 -4.9 0.56 503 +505 3 18.78 37.9 -4.9 0.56 504 +506 3 18.11 42.18 -3.92 0.45 505 +507 3 18.11 45.21 -3.92 0.45 506 +508 3 19.57 49.26 -3.92 0.45 507 +509 3 21.37 51.17 -3.92 0.45 508 +510 3 23.51 52.86 -3.92 0.45 509 +511 3 28.45 53.31 -4.9 0.45 510 +512 3 32.61 54.89 -4.9 0.45 511 +513 3 34.97 55.56 -5.88 0.45 512 +514 3 40.6 55.79 -6.86 0.45 513 +515 3 44.2 57.13 -6.86 0.45 514 +516 3 46.45 60.73 -4.9 0.45 515 +517 3 46.23 63.43 -4.9 0.45 516 +518 3 45.66 68.61 -4.9 0.45 517 +519 3 46.23 73.33 -4.9 0.45 518 +520 3 47.91 76.59 -4.9 0.45 519 +521 3 49.04 80.42 -4.9 0.45 520 +522 3 49.71 83.99 -3.92 0.45 521 +523 3 -8.55 1.57 -4.9 1.63 1 +524 3 -11.02 0.22 -4.9 1.63 523 +525 3 -16.07 -8.21 -4.9 0.73 524 +526 3 -16.64 -9 -4.9 0.73 525 +527 3 -34.9 -18.63 -4.9 0.73 526 +528 3 -35.55 -18.97 -4.9 0.73 527 +529 3 -36.19 -19.31 -4.9 0.73 528 +530 3 -37.49 -20 -4.9 0.73 529 +531 3 -17.88 -13.16 -4.9 0.675 529 +532 3 -18.67 -16.42 -4.9 0.675 531 +533 3 -20.02 -18.89 -4.9 0.62 532 +534 3 -22.61 -22.72 -4.9 0.62 533 +535 3 -26.32 -28.57 -4.9 0.62 534 +536 3 -28.01 -30.93 -4.9 0.62 535 +537 3 -28.9 -37.34 -4.9 0.505 536 +538 3 -26.66 -38.69 -4.9 0.28 537 +539 3 -23.39 -41.39 -4.9 0.28 538 +540 3 -19.91 -44.31 -4.9 0.28 539 +541 3 -32.5 -47.01 -4.9 0.505 537 +542 3 -34.29 -50.5 -4.9 0.505 541 +543 3 -35.99 -52.75 -4.9 0.505 542 +544 3 -37.22 -58.6 -4.9 0.505 543 +545 3 -37.56 -61.18 -5.88 0.505 544 +546 3 -38.9 -68.38 -5.88 0.505 545 +547 3 -39.03 -71.64 -5.88 0.45 546 +548 3 -39.59 -75.92 -4.9 0.395 547 +549 3 -38.79 -80.53 -4.9 0.395 548 +550 3 -37.45 -84.8 -4.9 0.395 549 +551 3 -35.43 -90.88 -4.9 0.395 550 +552 3 -34.08 -99.65 -4.9 0.395 551 +553 3 -33.63 -100.44 -4.9 0.395 552 +554 3 -44.31 -72.2 -4.9 0.395 546 +555 3 -46.11 -75.23 -4.9 0.395 554 +556 3 -49.6 -74.68 -4.9 0.225 555 +557 3 -51.4 -74.79 -4.9 0.225 556 +558 3 -53.65 -74.9 -4.9 0.225 557 +559 3 -48.92 -80.53 -4.9 0.45 555 +560 3 -50.61 -83.9 -4.9 0.45 559 +561 3 -52.75 -88.63 -4.9 0.45 560 +562 3 -53.09 -92.68 -4.9 0.45 561 +563 3 -52.52 -97.74 -4.9 0.45 562 +564 3 -53.54 -102.57 -4.9 0.45 563 +565 3 -53.65 -103.92 -4.9 0.45 564 +566 3 -54.32 -107.52 -4.9 0.395 565 +567 3 -34.42 -33.52 -4.9 0.395 536 +568 3 -36.33 -35.2 -4.9 0.395 567 +569 3 -37.11 -35.54 -4.9 0.395 568 +570 3 -37.79 -38.24 -4.9 0.28 569 +571 3 -38.01 -39.14 -4.9 0.28 570 +572 3 -44.31 -38.9 -4.9 0.395 569 +573 3 -48.02 -40.26 -4.9 0.395 572 +574 3 -50.16 -41.39 -4.9 0.395 573 +575 3 -50.84 -41.73 -4.9 0.395 574 +576 3 -50.27 -44.31 -4.9 0.225 575 +577 3 -49.71 -46.56 -4.9 0.225 576 +578 3 -49.94 -47.69 -4.9 0.225 577 +579 3 -58.15 -43.64 -4.9 0.395 575 +580 3 -59.95 -44.54 -4.9 0.395 579 +581 3 -62.76 -44.88 -4.9 0.395 580 +582 3 -65.56 -44.76 -4.9 0.395 581 +583 3 -68.04 -44.43 -4.9 0.395 582 +584 3 -71.08 -46.23 -4.9 0.395 583 +585 3 -75.02 -48.92 -4.9 0.395 584 +586 3 -77.15 -49.71 -4.9 0.395 585 +587 3 -79.84 -51.17 -4.9 0.395 586 +588 3 -81.43 -51.51 -4.9 0.395 587 +589 3 -81.99 -52.07 -4.9 0.395 588 +590 3 -82.22 -52.75 -4.9 0.395 589 +591 3 -82.67 -54.44 -4.9 0.395 590 +592 3 -83 -55.22 -4.9 0.395 591 +593 3 -32.09 -24.5 -4.9 0.335 528 +594 3 -38.46 -20.27 -4.9 0.505 527 +595 3 -43.64 -23.42 -4.9 0.505 594 +596 3 -47.24 -26.01 -4.9 0.505 595 +597 3 -48.02 -29.61 -4.9 0.505 596 +598 3 -50.61 -32.19 -4.9 0.505 597 +599 3 -51.4 -32.97 -4.9 0.505 598 +600 3 -50.27 -33.99 -4.9 0.335 599 +601 3 -59.16 -41.19 -4.9 0.505 600 +602 3 -61.52 -44.23 -4.9 0.45 601 +603 3 -64.9 -48.05 -4.9 0.45 602 +604 3 -67.7 -50.75 -4.9 0.45 603 +605 3 -71.53 -49.18 -3.92 0.335 604 +606 3 -76.37 -44.9 -3.92 0.335 605 +607 3 -80.64 -42.43 -3.92 0.335 606 +608 3 -83.9 -40.18 -3.92 0.335 607 +609 3 -91.21 -41.53 -3.92 0.335 608 +610 3 -93.91 -42.09 -4.9 0.335 609 +611 3 -99.2 -41.3 -4.9 0.335 610 +612 3 -102.91 -38.15 -4.9 0.335 611 +613 3 -105.61 -36.79 -5.88 0.335 612 +614 3 -108.53 -36.13 -4.9 0.335 613 +615 3 -111.12 -35.34 -4.9 0.335 614 +616 3 -112.36 -35.22 -4.9 0.335 615 +617 3 -74.34 -57.16 -4.9 0.335 604 +618 3 -76.14 -59.97 -4.9 0.335 617 +619 3 -75.13 -63.01 -4.9 0.225 618 +620 3 -74.91 -68.41 -4.9 0.225 619 +621 3 -73.44 -72.23 -4.9 0.225 620 +622 3 -72.31 -77.06 -4.9 0.225 621 +623 3 -69.17 -82.36 -4.9 0.225 622 +624 3 -63.55 -87.19 -4.9 0.225 623 +625 3 -62.53 -87.53 -4.9 0.225 624 +626 3 -61.86 -87.87 -4.9 0.225 625 +627 3 -79.63 -66.38 -4.9 0.395 618 +628 3 -79.97 -67.28 -4.9 0.395 627 +629 3 -80.19 -70.2 -4.9 0.225 628 +630 3 -81.54 -72.23 -4.9 0.225 629 +631 3 -84.58 -75.83 -4.9 0.225 630 +632 3 -86.15 -77.18 -4.9 0.225 631 +633 3 -87.61 -77.86 -4.9 0.225 632 +634 3 -87.95 -78.08 -4.9 0.225 633 +635 3 -87.16 -70.2 -4.9 0.225 628 +636 3 -91.44 -72.8 -4.9 0.225 635 +637 3 -99.2 -78.76 -4.9 0.225 636 +638 3 -102.8 -82.8 -4.9 0.225 637 +639 3 -106.62 -89.22 -4.9 0.225 638 +640 3 -106.4 -92.93 -4.9 0.225 639 +641 3 -106.73 -97.99 -4.9 0.225 640 +642 3 -104.71 -102.37 -4.9 0.225 641 +643 3 -103.7 -103.5 -4.9 0.225 642 +644 3 -19.68 -9.22 -4.9 0.45 526 +645 3 -21.59 -11.13 -4.9 0.45 644 +646 3 -24.86 -16.87 -4.9 0.45 645 +647 3 -27.33 -21.26 -4.9 0.45 646 +648 3 -30.37 -23.84 -4.9 0.45 647 +649 3 -33.74 -26.77 -3.92 0.45 648 +650 3 -36.54 -28.34 -3.92 0.45 649 +651 3 -38.46 -27.44 -3.92 0.335 650 +652 3 -39.59 -26.66 -3.92 0.335 651 +653 3 -40.15 -26.32 -3.92 0.335 652 +654 3 -38.01 -31.27 -3.92 0.335 650 +655 3 -38.79 -34.75 -3.92 0.335 654 +656 3 -41.39 -38.35 -3.92 0.335 655 +657 3 -45.89 -41.95 -3.92 0.335 656 +658 3 -49.26 -44.99 -3.92 0.335 657 +659 3 -52.19 -47.57 -4.9 0.335 658 +660 3 14.17 0.34 -4.9 1.575 1 +661 3 16.76 0.22 -4.9 1.575 660 +662 3 19.37 -0.72 -4.61 1.01 661 +663 3 21.98 -1.67 -4.33 1.01 662 +664 3 25.76 -3.04 -3.92 1.01 663 +665 3 25.42 -5.29 -3.92 0.225 664 +666 3 32.04 -4.5 -3.92 1.01 665 +667 3 37.68 -7.09 -3.92 1.01 666 +668 3 42.06 -9 -3.92 1.01 667 +669 3 44.31 -12.71 -3.92 0.62 668 +670 3 46 -13.83 -3.92 0.62 669 +671 3 50.05 -19.12 -3.92 0.62 670 +672 3 50.95 -20.92 -3.92 0.62 671 +673 3 52.52 -26.54 -3.92 0.62 672 +674 3 55.79 -31.83 -3.92 0.73 673 +675 3 56.35 -32.61 -3.92 0.73 674 +676 3 63.43 -37.68 -3.92 0.62 675 +677 3 66.02 -39.36 -3.92 0.62 676 +678 3 73.22 -39.47 -3.92 0.56 677 +679 3 79.52 -39.14 -3.92 0.56 678 +680 3 80.53 -39.03 -3.92 0.56 679 +681 3 84.02 -34.86 -3.92 0.56 680 +682 3 86.26 -32.5 -3.92 0.56 681 +683 3 89.86 -26.88 -3.92 0.505 682 +684 3 91.78 -23.06 -3.92 0.505 683 +685 3 95.94 -18.32 -3.92 0.505 684 +686 3 98.07 -16.42 -3.92 0.505 685 +687 3 100.1 -14.85 -3.92 0.505 686 +688 3 100.55 -13.95 -3.92 0.505 687 +689 3 100.89 -13.61 -3.92 0.505 688 +690 3 88.85 -32.72 -3.92 0.335 682 +691 3 91.21 -32.72 -3.92 0.335 690 +692 3 83.45 -39.36 -3.92 0.56 680 +693 3 83.57 -40.94 -3.92 0.28 692 +694 3 85.93 -39.59 -3.92 0.56 693 +695 3 89.64 -41.05 -3.92 0.56 694 +696 3 96.72 -44.43 -3.92 0.56 695 +697 3 99.87 -46.9 -4.9 0.56 696 +698 3 102.57 -48.81 -4.9 0.56 697 +699 3 105.16 -50.61 -4.9 0.56 698 +700 3 109.66 -52.19 -4.9 0.56 699 +701 3 112.69 -54.1 -4.9 0.56 700 +702 3 115.96 -55.22 -4.9 0.56 701 +703 3 116.97 -55.56 -4.9 0.56 702 +704 3 66.02 -42.63 -3.92 0.45 677 +705 3 65.34 -44.54 -3.92 0.45 704 +706 3 67.37 -46.45 -3.92 0.45 705 +707 3 68.16 -46.79 -3.92 0.45 706 +708 3 70.97 -51.51 -3.92 0.395 707 +709 3 73.44 -54.89 -3.92 0.395 708 +710 3 76.59 -61.3 -3.92 0.395 709 +711 3 77.72 -60.73 -3.92 0.395 710 +712 3 76.7 -64.22 -3.92 0.395 711 +713 3 76.25 -67.7 -3.92 0.395 712 +714 3 76.37 -68.72 -3.92 0.395 713 +715 3 80.19 -71.08 -2.94 0.505 714 +716 3 82.89 -71.08 -2.94 0.505 715 +717 3 85.93 -72.31 -2.94 0.505 716 +718 3 90.31 -74.12 -2.94 0.505 717 +719 3 94.02 -75.23 -2.94 0.505 718 +720 3 97.06 -74.45 -2.94 0.505 719 +721 3 101.67 -74.01 -2.94 0.395 720 +722 3 104.82 -74.12 -2.94 0.395 721 +723 3 108.2 -75.34 -2.94 0.395 722 +724 3 110.78 -76.37 -2.94 0.395 723 +725 3 113.03 -77.27 -2.94 0.395 724 +726 3 114.38 -77.83 -2.94 0.395 725 +727 3 115.39 -78.28 -2.94 0.395 726 +728 3 98.07 -72.66 -2.94 0.335 720 +729 3 98.3 -71.53 -2.94 0.335 728 +730 3 73.56 -70.06 -2.94 0.395 714 +731 3 69.84 -73.11 -2.94 0.395 730 +732 3 68.04 -73.56 -2.94 0.395 731 +733 3 66.13 -73.78 -2.94 0.395 732 +734 3 69.06 -44.65 -2.94 0.28 707 +735 3 69.06 -43.53 -2.94 0.225 734 +736 3 69.06 -42.51 -2.94 0.225 735 +737 3 54.55 -36.54 -3.92 0.56 675 +738 3 53.76 -41.5 -3.92 0.56 737 +739 3 53.87 -46.68 -3.92 0.56 738 +740 3 53.76 -48.47 -3.92 0.56 739 +741 3 52.75 -53.76 -3.92 0.395 740 +742 3 53.65 -55.9 -3.92 0.395 741 +743 3 53.87 -58.48 -3.92 0.395 742 +744 3 53.42 -59.95 -3.92 0.395 743 +745 3 53.09 -62.98 -3.92 0.395 744 +746 3 53.09 -64.56 -3.92 0.395 745 +747 3 51.4 -50.72 -3.92 0.395 740 +748 3 50.84 -52.64 -3.92 0.395 747 +749 3 50.39 -53.76 -3.92 0.395 748 +750 3 51.85 -66.36 -3.92 0.395 749 +751 3 53.09 -68.38 -3.92 0.335 750 +752 3 53.87 -72.31 -4.9 0.335 751 +753 3 55.22 -74.68 -4.9 0.335 752 +754 3 55.34 -78.5 -4.9 0.335 753 +755 3 56.46 -81.77 -4.9 0.335 754 +756 3 56.46 -82.55 -4.9 0.335 755 +757 3 51.17 -29.58 -3.92 0.45 673 +758 3 50.16 -32.28 -3.92 0.45 757 +759 3 48.92 -35.54 -3.92 0.45 758 +760 3 49.37 -41.16 -3.92 0.45 759 +761 3 48.36 -45.89 -3.92 0.45 760 +762 3 46.45 -48.7 -3.92 0.395 761 +763 3 43.41 -51.96 -3.92 0.395 762 +764 3 39.7 -53.42 -3.92 0.395 763 +765 3 36.67 -54.89 -3.92 0.395 764 +766 3 33.74 -56.68 -3.92 0.395 765 +767 3 32.28 -58.03 -3.92 0.395 766 +768 3 31.72 -58.48 -3.92 0.395 767 +769 3 43.98 -46.34 -2.94 0.335 761 +770 3 40.94 -47.91 -2.94 0.335 769 +771 3 40.15 -48.47 -2.94 0.335 770 +772 3 54.1 -20.23 -3.92 0.45 672 +773 3 56.8 -19.01 -3.92 0.45 772 +774 3 60.73 -17.21 -3.92 0.45 773 +775 3 61.52 -14.06 -3.92 0.45 774 +776 3 62.2 -12.15 -3.92 0.45 775 +777 3 62.2 -11.36 -3.92 0.45 776 +778 3 46.79 -12.6 -3.92 0.335 670 +779 3 47.69 -12.03 -3.92 0.335 778 +780 3 50.5 -6.52 -3.92 0.73 668 +781 3 52.3 -6.19 -4.9 0.73 780 +782 3 52.64 -7.2 -3.92 0.395 781 +783 3 56.57 -4.38 -3.92 0.73 782 +784 3 61.07 -8.66 -3.92 0.505 783 +785 3 62.76 -12.15 -3.92 0.505 784 +786 3 63.43 -14.85 -3.92 0.505 785 +787 3 63.43 -16.42 -3.92 0.395 786 +788 3 66.81 -19.46 -3.92 0.395 787 +789 3 70.86 -25.64 -3.92 0.395 788 +790 3 72.43 -29.02 -3.92 0.395 789 +791 3 74.68 -32.04 -2.94 0.395 790 +792 3 75.8 -36.44 -2.94 0.395 791 +793 3 76.03 -41.16 -2.94 0.395 792 +794 3 76.25 -49.04 -2.94 0.395 793 +795 3 75.13 -52.41 -2.94 0.395 794 +796 3 74.12 -55.9 -2.94 0.395 795 +797 3 73.22 -57.25 -2.94 0.395 796 +798 3 73.33 -27.67 -3.92 0.395 790 +799 3 74.01 -26.66 -3.92 0.395 798 +800 3 74.23 -25.42 -3.92 0.395 799 +801 3 67.59 -13.61 -3.92 0.335 786 +802 3 69.62 -16.3 -3.92 0.335 801 +803 3 69.17 -19.68 -3.92 0.28 802 +804 3 68.61 -24.97 -3.92 0.28 803 +805 3 68.38 -28.23 -3.92 0.28 804 +806 3 69.28 -32.28 -3.92 0.28 805 +807 3 69.39 -34.08 -3.92 0.28 806 +808 3 69.39 -35.99 -3.92 0.28 807 +809 3 69.39 -37.45 -3.92 0.28 808 +810 3 68.94 -38.35 -3.92 0.28 809 +811 3 60.17 -1.35 -3.92 0.62 783 +812 3 63.77 1.35 -3.92 0.62 811 +813 3 69.17 5.74 -3.92 0.62 812 +814 3 72.98 6.97 -3.92 0.62 813 +815 3 78.73 9.11 -3.92 0.56 814 +816 3 84.46 11.36 -3.92 0.56 815 +817 3 85.93 12.03 -3.92 0.56 816 +818 3 89.64 15.63 -3.92 0.62 817 +819 3 90.88 16.3 -3.92 0.62 818 +820 3 95.37 16.42 -3.92 0.62 819 +821 3 99.42 21.03 -4.9 0.395 820 +822 3 103.7 24.86 -4.9 0.395 821 +823 3 109.43 30.37 -4.9 0.395 822 +824 3 112.92 33.97 -3.92 0.395 823 +825 3 115.73 36.22 -3.92 0.395 824 +826 3 115.96 36.89 -3.92 0.395 825 +827 3 116.18 38.13 -3.92 0.395 826 +828 3 116.18 39.25 -3.92 0.395 827 +829 3 116.82 42.98 -2.94 0.335 828 +830 3 130.54 45.23 -2.94 0.335 829 +831 3 99.76 16.2 -2.94 0.395 820 +832 3 103.02 16.98 -2.94 0.395 831 +833 3 106.4 18.32 -2.94 0.395 832 +834 3 110.22 19.12 -2.94 0.395 833 +835 3 112.81 19.23 -2.94 0.395 834 +836 3 114.61 18.11 -2.94 0.395 835 +837 3 115.06 17.32 -2.94 0.395 836 +838 3 89.86 22.38 -4.9 0.56 819 +839 3 88.74 25.87 -2.94 0.505 838 +840 3 88.29 29.92 -2.94 0.505 839 +841 3 90.31 33.97 -2.94 0.505 840 +842 3 91.44 38.35 -2.94 0.505 841 +843 3 91.89 43.3 -3.92 0.505 842 +844 3 91.1 45.55 -3.92 0.505 843 +845 3 90.54 49.37 -2.94 0.56 844 +846 3 88.74 53.31 -2.94 0.56 845 +847 3 88.06 58.15 -2.94 0.56 846 +848 3 88.85 62.42 -2.94 0.56 847 +849 3 88.63 67.26 -2.94 0.505 848 +850 3 88.74 69.51 -2.94 0.45 849 +851 3 89.64 73.11 -2.94 0.45 850 +852 3 90.2 77.15 -1.96 0.45 851 +853 3 90.54 80.64 -1.96 0.45 852 +854 3 90.99 84.91 -2.94 0.45 853 +855 3 91.89 89.3 -2.94 0.395 854 +856 3 93.01 93.24 -2.94 0.335 855 +857 3 95.15 96.16 -2.94 0.335 856 +858 3 95.94 97.51 -2.94 0.335 857 +859 3 89.41 44.76 -2.94 0.335 844 +860 3 87.39 42.51 -2.94 0.335 859 +861 3 86.49 41.84 -2.94 0.335 860 +862 3 88.18 8.44 -2.94 0.395 817 +863 3 89.64 6.19 -2.94 0.395 862 +864 3 88.74 2.36 -1.96 0.395 863 +865 3 88.96 0.67 -2.94 0.395 864 +866 3 88.63 -1.24 -2.94 0.395 865 +867 3 89.53 -4.61 -2.94 0.395 866 +868 3 66.47 6.19 -3.92 0.395 812 +869 3 67.81 6.3 -3.92 0.395 868 +870 3 69.95 12.48 -3.92 0.395 869 +871 3 72.43 16.98 -3.92 0.395 870 +872 3 74.23 15.86 -3.92 0.395 871 +873 3 74.34 23.39 -3.92 0.395 872 +874 3 75.69 27.67 -3.92 0.395 873 +875 3 76.48 29.69 -3.92 0.395 874 +876 3 76.7 31.04 -3.92 0.395 875 +877 3 77.04 32.04 -3.92 0.395 876 +878 3 39.7 -5.51 -3.92 0.335 667 +879 3 40.83 -3.37 -3.92 0.335 878 +880 3 40.71 -1.8 -3.92 0.225 879 +881 3 39.7 -0.67 -3.92 0.225 880 +882 3 41.84 -2.92 -3.92 0.225 879 +883 3 43.08 -3.49 -3.92 0.225 882 +884 3 43.64 -3.6 -3.92 0.225 883 +885 3 33.18 -2.14 -3.92 0.56 666 +886 3 33.4 -1.35 -3.92 0.56 885 +887 3 37.11 -0.22 -3.92 0.395 886 +888 3 39.93 2.14 -3.92 0.395 887 +889 3 41.95 3.94 -3.92 0.395 888 +890 3 43.3 4.95 -3.92 0.395 889 +891 3 31.15 1.01 -2.94 0.45 886 +892 3 29.58 2.47 -2.94 0.335 891 +893 3 28.12 3.94 -2.94 0.335 892 +894 3 27.78 4.95 -2.94 0.335 893 +895 3 28.68 -0.67 -3.92 0.45 663 +896 3 34.64 0.34 -4.9 0.45 895 +897 3 39.7 0.79 -3.92 0.45 896 +898 3 40.83 0.67 -3.92 0.45 897 +899 3 43.08 5.29 -3.92 0.45 898 +900 3 45.78 9.22 -2.94 0.45 899 +901 3 48.59 14.28 -2.94 0.395 900 +902 3 49.04 15.86 -2.94 0.395 901 +903 3 48.59 18.32 -2.94 0.395 902 +904 3 48.81 18.89 -2.94 0.395 903 +905 3 47.35 18.89 -1.96 0.28 904 +906 3 51.06 23.17 -2.94 0.45 905 +907 3 57.36 29.24 -2.94 0.45 906 +908 3 64.9 40.85 -3.92 0.45 907 +909 3 64.78 42.2 -3.92 0.45 908 +910 3 43.98 -0.79 -4.9 0.395 898 +911 3 46.11 -1.91 -4.9 0.395 910 +912 3 50.84 -3.15 -4.9 0.395 911 +913 3 58.37 -1.57 -4.9 0.395 912 +914 3 60.73 0.11 -4.9 0.395 913 +915 3 65.68 1.01 -4.9 0.395 914 +916 3 69.17 0.45 -4.9 0.395 915 +917 3 72.31 0.22 -4.9 0.335 916 +918 3 73.22 -0.11 -4.9 0.335 917 +919 3 22.04 -7.99 -4.9 0.73 662 +920 3 23.39 -11.7 -4.9 0.675 919 +921 3 25.42 -14.96 -4.9 0.62 920 +922 3 26.54 -17.43 -4.9 0.62 921 +923 3 25.64 -21.03 -4.9 0.62 922 +924 3 24.18 -25.53 -4.9 0.62 923 +925 3 22.94 -29.13 -4.9 0.62 924 +926 3 25.76 -34.08 -4.9 0.62 925 +927 3 29.13 -37.11 -4.9 0.62 926 +928 3 30.59 -36.67 -3.92 0.395 927 +929 3 31.38 -40.04 -3.92 0.62 928 +930 3 35.99 -43.75 -3.92 0.62 929 +931 3 41.5 -46.9 -3.92 0.62 930 +932 3 46.56 -50.95 -3.92 0.62 931 +933 3 50.72 -54.66 -3.92 0.62 932 +934 3 51.29 -64.02 -3.92 0.62 933 +935 3 49.94 -67.73 -3.92 0.56 934 +936 3 48.59 -70.31 -3.92 0.505 935 +937 3 49.71 -74.59 -3.92 0.505 936 +938 3 51.29 -80.44 -3.92 0.505 937 +939 3 56.24 -83.36 -3.92 0.505 938 +940 3 61.52 -84.6 -3.92 0.505 939 +941 3 66.36 -85.27 -3.92 0.505 940 +942 3 69.84 -85.72 -3.92 0.335 941 +943 3 71.53 -85.72 -3.92 0.335 942 +944 3 73.22 -85.72 -3.92 0.335 943 +945 3 75.47 -86.29 -2.94 0.335 944 +946 3 67.93 -83.48 -3.92 0.335 941 +947 3 68.27 -82.24 -3.92 0.335 946 +948 3 21.37 4.84 -4.9 0.955 661 +949 3 26.43 10.23 -4.9 0.955 948 +950 3 31.49 14.96 -4.9 0.955 949 +951 3 33.29 16.98 -4.9 0.955 950 +952 3 34.64 15.63 -4.9 0.225 951 +953 3 36.44 19.91 -4.9 0.955 952 +954 3 35.77 21.82 -4.9 0.45 953 +955 3 39.93 23.28 -3.92 0.9 954 +956 3 37.34 26.32 -3.92 0.45 955 +957 3 33.97 29.35 -3.92 0.45 956 +958 3 33.07 30.93 -3.92 0.45 957 +959 3 32.5 31.49 -4.9 0.45 958 +960 3 30.48 31.6 -3.92 0.28 959 +961 3 29.13 31.38 -3.92 0.28 960 +962 3 29.8 35.2 -4.9 0.45 959 +963 3 27.11 37.34 -4.9 0.45 962 +964 3 20.92 39.14 -4.9 0.45 963 +965 3 17.55 39.36 -4.9 0.45 964 +966 3 16.07 39.81 -4.9 0.45 965 +967 3 15.3 42.51 -4.9 0.395 966 +968 3 14.85 44.65 -4.9 0.395 967 +969 3 15.3 45.21 -4.9 0.395 968 +970 3 12.03 39.03 -4.9 0.395 966 +971 3 7.54 38.35 -4.9 0.395 970 +972 3 3.15 38.69 -4.9 0.395 971 +973 3 0.67 39.14 -4.9 0.395 972 +974 3 -1.24 39.7 -4.9 0.395 973 +975 3 -2.47 40.26 -4.9 0.395 974 +976 3 43.75 26.54 -3.92 0.73 955 +977 3 49.37 26.21 -3.92 0.56 976 +978 3 52.86 26.21 -3.92 0.56 977 +979 3 58.26 26.09 -3.92 0.56 978 +980 3 63.1 26.77 -3.92 0.56 979 +981 3 67.37 26.88 -3.92 0.56 980 +982 3 71.64 28.34 -3.92 0.56 981 +983 3 75.47 31.6 -3.92 0.56 982 +984 3 77.83 32.95 -3.92 0.56 983 +985 3 86.26 33.4 -3.92 0.56 984 +986 3 89.98 33.52 -3.92 0.56 985 +987 3 94.14 32.95 -3.92 0.505 986 +988 3 98.86 31.6 -3.92 0.45 987 +989 3 100.77 30.93 -3.92 0.45 988 +990 3 101.45 30.37 -3.92 0.45 989 +991 3 44.43 28.01 -3.92 0.73 976 +992 3 38.9 28.79 -3.92 0.45 991 +993 3 37.68 28.34 -3.92 0.45 992 +994 3 37.11 26.99 -3.92 0.335 993 +995 3 36.89 26.21 -3.92 0.335 994 +996 3 33.74 28.23 -3.92 0.395 993 +997 3 32.28 28.01 -3.92 0.395 996 +998 3 33.29 26.99 -3.92 0.335 997 +999 3 33.74 25.98 -3.92 0.335 998 +1000 3 28.34 26.32 -2.94 0.45 997 +1001 3 24.86 25.08 -2.94 0.45 1000 +1002 3 22.72 23.28 -2.94 0.45 1001 +1003 3 20.81 21.48 -2.94 0.45 1002 +1004 3 15.97 19.12 -3.92 0.45 1003 +1005 3 13.61 18.32 -3.92 0.45 1004 +1006 3 12.48 18.32 -3.92 0.45 1005 +1007 3 8.44 17.88 -3.92 0.335 1006 +1008 3 6.19 17.88 -3.92 0.335 1007 +1009 3 4.95 17.77 -3.92 0.335 1008 +1010 3 7.87 15.18 -3.92 0.335 1006 +1011 3 4.26 14.28 -3.92 0.335 1010 +1012 3 1.35 12.37 -3.92 0.335 1011 +1013 3 0.11 11.47 -3.92 0.335 1012 +1014 3 -1.35 10.91 -3.92 0.335 1013 +1015 3 -2.25 10.35 -3.92 0.335 1014 +1016 3 49.37 34.15 -3.92 0.675 991 +1017 3 47.18 36.28 -3.92 0.45 1016 +1018 3 45.89 37.54 -3.92 0.45 1017 +1019 3 41.28 42.15 -3.92 0.45 1018 +1020 3 39.14 43.95 -3.92 0.45 1019 +1021 3 36.89 45.41 -3.92 0.45 1020 +1022 3 36.33 45.75 -3.92 0.45 1021 +1023 3 35.43 44.74 -2.94 0.28 1022 +1024 3 34.19 48.11 -3.92 0.45 1023 +1025 3 30.93 51.48 -3.92 0.45 1024 +1026 3 28.34 52.95 -3.92 0.45 1025 +1027 3 22.49 53.62 -3.92 0.45 1026 +1028 3 20.36 54.97 -3.92 0.45 1027 +1029 3 18.32 55.65 -3.92 0.45 1028 +1030 3 16.2 57.45 -3.92 0.45 1029 +1031 3 16.2 60.48 -3.92 0.45 1030 +1032 3 16.3 63.97 -3.92 0.395 1031 +1033 3 14.96 66.56 -2.94 0.395 1032 +1034 3 12.93 68.02 -2.94 0.395 1033 +1035 3 10.46 69.48 -2.94 0.395 1034 +1036 3 7.65 70.04 -2.94 0.395 1035 +1037 3 5.51 72.18 -2.94 0.395 1036 +1038 3 4.16 80.39 -2.94 0.395 1037 +1039 3 3.82 83.54 -2.94 0.335 1038 +1040 3 3.82 84.21 -3.92 0.335 1039 +1041 3 3.71 84.66 -3.92 0.335 1040 +1042 3 49.94 34.95 -3.92 0.73 1017 +1043 3 49.71 31.01 -3.92 0.505 1042 +1044 3 50.05 27.64 -3.92 0.45 1043 +1045 3 51.74 24.38 -3.92 0.45 1044 +1046 3 55.45 21.68 -3.92 0.45 1045 +1047 3 58.6 18.42 -3.92 0.45 1046 +1048 3 62.08 15.72 -3.92 0.45 1047 +1049 3 64.11 13.24 -3.92 0.45 1048 +1050 3 64.9 10.55 -3.92 0.45 1049 +1051 3 62.98 7.62 -3.92 0.45 1050 +1052 3 61.63 4.01 -4.9 0.45 1051 +1053 3 61.75 1.1 -4.9 0.45 1052 +1054 3 61.52 -0.7 -4.9 0.45 1053 +1055 3 61.52 -1.6 -4.9 0.45 1054 +1056 3 52.3 38.76 -3.92 0.73 1016 +1057 3 52.75 39.65 -3.92 0.73 1056 +1058 3 52.75 41.23 -3.92 0.675 1057 +1059 3 52.75 42.81 -3.92 0.675 1058 +1060 3 53.42 46.63 -3.92 0.675 1059 +1061 3 53.99 50 -3.92 0.675 1060 +1062 3 54.32 51.24 -3.92 0.675 1061 +1063 3 49.6 55.18 -3.92 0.505 1062 +1064 3 46.45 57.31 -3.92 0.505 1063 +1065 3 42.51 59.45 -3.92 0.505 1064 +1066 3 40.04 60.69 -3.92 0.505 1065 +1067 3 39.47 60.91 -3.92 0.505 1066 +1068 3 38.58 64.84 -3.92 0.395 1067 +1069 3 37.34 69.45 -3.92 0.395 1068 +1070 3 36.44 71.37 -2.94 0.395 1069 +1071 3 33.63 73.73 -3.92 0.395 1070 +1072 3 32.28 74.75 -3.92 0.395 1071 +1073 3 31.94 75.08 -3.92 0.395 1072 +1074 3 33.4 80.5 -3.92 0.335 1073 +1075 3 37.45 84.33 -3.92 0.335 1074 +1076 3 42.18 88.04 -2.94 0.28 1075 +1077 3 45.21 90.17 -2.94 0.28 1076 +1078 3 45.89 90.29 -2.94 0.28 1077 +1079 3 46.11 90.51 -2.94 0.28 1078 +1080 3 50.16 88.49 -2.94 0.28 1079 +1081 3 54.89 85.23 -2.94 0.28 1080 +1082 3 60.62 83.54 -2.94 0.28 1081 +1083 3 73.78 86.24 -2.94 0.28 1082 +1084 3 81.43 89.39 -2.94 0.28 1083 +1085 3 85.03 90.51 -2.94 0.28 1084 +1086 3 92.56 93.77 -2.94 0.28 1085 +1087 3 105.72 97.82 -2.94 0.28 1086 +1088 3 110 98.27 -2.94 0.28 1087 +1089 3 113.59 98.83 -2.94 0.28 1088 +1090 3 115.06 98.95 -2.94 0.28 1089 +1091 3 49.6 101.87 -2.94 0.28 1079 +1092 3 49.82 103.33 -2.94 0.28 1091 +1093 3 49.82 104.79 -2.94 0.28 1092 +1094 3 49.82 105.69 -2.94 0.28 1093 +1095 3 36.33 57.76 -3.92 0.45 1067 +1096 3 34.42 55.18 -3.92 0.45 1095 +1097 3 33.18 53.27 -3.92 0.45 1096 +1098 3 33.52 52.14 -3.92 0.45 1097 +1099 3 60.17 58.44 -3.92 0.62 1062 +1100 3 62.2 61.48 -3.92 0.62 1099 +1101 3 67.26 65.3 -3.92 0.62 1100 +1102 3 71.53 70.02 -3.92 0.62 1101 +1103 3 72.31 71.15 -3.92 0.62 1102 +1104 3 71.53 71.81 -3.92 0.395 1103 +1105 3 76.93 74.97 -3.92 0.62 1104 +1106 3 84.58 80.7 -3.92 0.62 1105 +1107 3 88.85 84.53 -2.94 0.62 1106 +1108 3 93.35 91.39 -2.94 0.62 1107 +1109 3 98.86 96.79 -2.94 0.62 1108 +1110 3 103.7 101.85 -2.94 0.62 1109 +1111 3 104.26 102.42 -2.94 0.62 1110 +1112 3 106.17 103.76 -2.94 0.395 1111 +1113 3 107.97 105.11 -2.94 0.395 1112 +1114 3 108.31 105.34 -2.94 0.395 1113 +1115 3 103.92 106.8 -2.94 0.505 1111 +1116 3 103.25 109.5 -2.94 0.505 1115 +1117 3 103.13 110.96 -2.94 0.505 1116 +1118 3 104.71 113.44 -3.92 0.505 1117 +1119 3 107.41 114.9 -3.92 0.505 1118 +1120 3 110.11 115.01 -3.92 0.505 1119 +1121 3 114.04 115.12 -3.92 0.505 1120 +1122 3 115.51 115.12 -3.92 0.505 1121 +1123 3 102.69 113.1 -2.94 0.45 1117 +1124 3 102.24 114.79 -2.94 0.335 1123 +1125 3 101.9 115.57 -2.94 0.335 1124 +1126 3 60.62 67.55 -3.92 0.56 1100 +1127 3 59.95 70.02 -3.92 0.56 1126 +1128 3 59.95 70.47 -3.92 0.56 1127 +1129 3 57.81 69.45 -3.92 0.335 1128 +1130 3 56.01 68.79 -3.92 0.335 1129 +1131 3 54.77 68.34 -3.92 0.335 1130 +1132 3 54.32 68.11 -3.92 0.335 1131 +1133 3 60.06 73.62 -2.94 0.505 1128 +1134 3 61.75 76.43 -2.94 0.505 1133 +1135 3 62.53 79.36 -2.94 0.505 1134 +1136 3 64.67 82.73 -2.94 0.505 1135 +1137 3 67.59 86.22 -2.94 0.505 1136 +1138 3 68.83 87.57 -2.94 0.505 1137 +1139 3 70.18 91.51 -2.94 0.505 1138 +1140 3 70.63 94.77 -2.94 0.505 1139 +1141 3 72.66 98.59 -2.94 0.505 1140 +1142 3 73.11 99.83 -2.94 0.505 1141 +1143 3 76.25 104.1 -2.94 0.505 1142 +1144 3 76.25 106.8 -2.94 0.505 1143 +1145 3 77.48 109.05 -3.92 0.505 1144 +1146 3 79.63 112.54 -3.92 0.505 1145 +1147 3 81.2 114.56 -3.92 0.505 1146 +1148 3 82.1 115.8 -3.92 0.505 1147 +1149 3 45.96 45.9 -3.92 0.335 1058 +1150 3 60.4 41.57 -3.92 0.62 1057 +1151 3 62.87 42.13 -3.92 0.62 1150 +1152 3 65.56 39.88 -3.92 0.45 1151 +1153 3 67.37 39.09 -3.92 0.45 1152 +1154 3 70.73 39.88 -3.92 0.45 1153 +1155 3 73.56 39.43 -3.92 0.45 1154 +1156 3 76.14 38.31 -3.92 0.45 1155 +1157 3 76.59 38.08 -3.92 0.45 1156 +1158 3 77.59 36.61 -3.92 0.28 1157 +1159 3 79.29 35.61 -3.92 0.28 1158 +1160 3 80.42 34.93 -3.92 0.28 1159 +1161 3 80.64 38.31 -3.92 0.505 1157 +1162 3 81.43 38.31 -3.92 0.505 1161 +1163 3 83.12 38.19 -3.92 0.395 1162 +1164 3 84.91 36.72 -3.92 0.395 1163 +1165 3 85.48 36.06 -3.92 0.395 1164 +1166 3 84.02 35.95 -3.92 0.395 1162 +1167 3 85.93 34.47 -3.92 0.395 1166 +1168 3 86.38 33.92 -3.92 0.395 1167 +1169 3 68.16 44.61 -3.92 0.675 1151 +1170 3 69.39 44.83 -3.92 0.675 1169 +1171 3 69.84 47.19 -3.92 0.335 1170 +1172 3 69.95 48.88 -3.92 0.335 1171 +1173 3 75.69 45.84 -3.92 0.73 1170 +1174 3 78.28 46.97 -3.92 0.675 1173 +1175 3 79.4 45.17 -2.94 0.335 1174 +1176 3 83.57 49.67 -3.92 0.675 1175 +1177 3 88.74 52.7 -3.92 0.675 1176 +1178 3 94.59 57.31 -3.92 0.62 1177 +1179 3 96.84 61.59 -3.92 0.62 1178 +1180 3 99.76 67.66 -2.94 0.56 1179 +1181 3 103.25 75.76 -2.94 0.56 1180 +1182 3 107.52 82.28 -3.92 0.56 1181 +1183 3 111.8 87.23 -3.92 0.56 1182 +1184 3 113.26 88.24 -3.92 0.56 1183 +1185 3 115.62 89.26 -3.92 0.56 1184 +1186 3 116.52 89.48 -3.92 0.56 1185 diff --git a/examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc new file mode 100644 index 0000000..3a7b77c --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc @@ -0,0 +1,3022 @@ +# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +1 1 0.0 0.0 0.0 8.88119 -1 +2 1 0.35 -8.83 -0.87 8.88119 1 +3 1 -0.35 8.83 0.87 8.88119 1 +4 3 0.67 -4.33 -2.18 2.165 1 +5 3 -0.09 -6.62 -2.34 1.84 4 +6 3 -1.76 -8.01 -2.31 1.405 5 +7 3 -2.97 -8.02 -2.2 1.405 6 +8 3 -3.39 -8.37 -2.2 1.405 7 +9 3 -3.48 -8.5 -2.2 1.405 8 +10 3 -3.53 -8.81 -3.1 1.19 9 +11 3 -3.61 -9.04 -3.55 1.19 10 +12 3 -4.27 -8.08 -3.52 0.11 11 +13 3 -5.31 -7.95 -3.18 0.11 12 +14 3 -5.47 -8.42 -3.21 0.54 13 +15 3 -6.69 -8.42 -3.11 0.54 14 +16 3 -7.0 -7.52 -2.98 0.54 15 +17 3 -8.21 -7.23 -2.84 0.54 16 +18 3 -8.66 -7.68 -2.85 0.54 17 +19 3 -9.28 -8.31 -2.85 0.54 18 +20 3 -9.73 -9.06 -2.88 0.54 19 +21 3 -10.03 -10.29 -2.97 0.54 20 +22 3 -10.03 -10.88 -3.03 0.54 21 +23 3 -10.18 -11.95 -3.12 0.54 22 +24 3 -10.63 -12.42 -3.13 0.54 23 +25 3 -10.94 -13.64 -3.22 0.54 24 +26 3 -11.39 -14.1 -3.22 0.54 25 +27 3 -11.68 -15.01 -3.28 0.54 26 +28 3 -12.22 -15.99 -4.24 0.65 27 +29 3 -12.53 -16.61 -4.26 0.65 28 +30 3 -12.98 -17.36 -4.31 0.65 29 +31 3 -13.66 -18.21 -5.16 0.54 30 +32 3 -14.88 -18.82 -5.11 0.54 31 +33 3 -16.85 -19.3 -4.97 0.54 32 +34 3 -17.61 -20.37 -5.0 0.54 33 +35 3 -17.76 -22.05 -5.16 0.54 34 +36 3 -17.6 -22.81 -5.25 0.54 35 +37 3 -17.44 -24.17 -5.39 0.54 36 +38 3 -17.74 -25.1 -5.45 0.54 37 +39 3 -19.12 -25.86 -5.4 0.54 38 +40 3 -20.94 -25.87 -5.24 0.54 39 +41 3 -22.15 -25.9 -5.05 0.54 40 +42 3 -22.3 -26.96 -5.14 0.54 41 +43 3 -22.29 -27.57 -5.19 0.54 42 +44 3 -22.44 -28.04 -5.22 0.54 43 +45 3 -22.94 -27.75 -6.06 0.435 44 +46 3 -23.25 -28.36 -6.09 0.435 45 +47 3 -23.56 -29.27 -6.23 0.435 46 +48 3 -24.05 -29.99 -6.72 0.435 47 +49 3 -24.86 -30.7 -7.31 0.435 48 +50 3 -26.08 -31.33 -7.26 0.435 49 +51 3 -27.75 -31.18 -7.09 0.435 50 +52 3 -29.32 -31.45 -7.5 0.435 51 +53 3 -30.27 -31.72 -7.89 0.435 52 +54 3 -31.81 -31.43 -7.79 0.435 53 +55 3 -33.73 -30.72 -8.68 0.435 54 +56 3 -34.98 -30.41 -8.84 0.435 55 +57 3 -35.25 -30.43 -10.1 0.54 56 +58 3 -36.17 -31.34 -10.26 0.54 57 +59 3 -37.55 -32.11 -10.29 0.54 58 +60 3 -38.19 -32.68 -10.73 0.54 59 +61 3 -38.5 -33.59 -10.86 0.54 60 +62 3 -39.6 -34.93 -11.27 0.54 61 +63 3 -40.35 -36.61 -11.37 0.54 62 +64 3 -41.27 -37.83 -11.48 0.54 63 +65 3 -41.72 -38.58 -11.59 0.54 64 +66 3 -42.19 -39.04 -11.66 0.54 65 +67 3 -42.37 -39.46 -11.98 0.54 66 +68 3 -42.4 -39.43 -12.36 0.54 67 +69 3 -43.94 -40.64 -12.57 0.54 68 +70 3 -45.25 -41.77 -13.61 0.54 69 +71 3 -46.49 -43.28 -13.86 0.54 70 +72 3 -47.71 -44.49 -13.96 0.54 71 +73 3 -48.47 -45.27 -13.96 0.54 72 +74 3 -49.24 -46.32 -14.14 0.54 73 +75 3 -50.18 -47.81 -14.57 0.54 74 +76 3 -52.32 -49.34 -14.68 0.54 75 +77 3 -53.07 -50.1 -14.68 0.54 76 +78 3 -53.41 -50.69 -15.09 0.54 77 +79 3 -53.87 -51.44 -15.19 0.54 78 +80 3 -54.81 -52.33 -15.5 0.54 79 +81 3 -56.05 -53.53 -15.8 0.54 80 +82 3 -57.73 -54.0 -15.77 0.54 81 +83 3 -59.85 -54.92 -15.66 0.54 82 +84 3 -61.23 -56.61 -15.78 0.54 83 +85 3 -62.89 -58.3 -15.79 0.54 84 +86 3 -66.39 -60.61 -15.69 0.54 85 +87 3 -67.76 -61.99 -15.7 0.54 86 +88 3 -68.97 -63.22 -15.7 0.54 87 +89 3 -71.85 -64.3 -15.55 0.54 88 +90 3 -73.99 -64.64 -15.38 0.54 89 +91 3 -75.81 -64.35 -15.19 0.54 90 +92 3 -79.65 -65.1 -15.35 0.54 91 +93 3 -82.24 -64.37 -15.04 0.54 92 +94 3 -84.53 -64.23 -14.82 0.54 93 +95 3 -86.41 -64.78 -15.39 0.54 94 +96 3 -88.69 -65.57 -15.26 0.54 95 +97 3 -90.98 -66.66 -15.15 0.54 96 +98 3 -92.87 -67.8 -16.07 0.54 97 +99 3 -93.53 -69.89 -16.73 0.54 98 +100 3 -95.82 -71.88 -16.79 0.54 99 +101 3 -96.87 -73.56 -16.87 0.54 100 +102 3 -97.85 -75.31 -17.77 0.54 101 +103 3 -98.47 -76.52 -17.99 0.54 102 +104 3 -98.16 -77.74 -18.06 0.54 103 +105 3 -98.09 -78.42 -17.38 0.54 104 +106 3 -97.89 -79.23 -16.87 0.54 105 +107 3 -98.75 -80.5 -16.54 0.54 106 +108 3 -99.36 -81.41 -16.57 0.54 107 +109 3 -99.32 -83.28 -16.31 0.54 108 +110 3 -100.2 -86.04 -16.34 0.54 109 +111 3 -99.59 -88.77 -16.67 0.54 110 +112 3 -99.27 -90.91 -16.82 0.54 111 +113 3 -98.62 -92.16 -16.55 0.54 112 +114 3 -98.46 -93.83 -16.73 0.54 113 +115 3 -98.58 -94.93 -16.45 0.54 114 +116 3 -98.4 -96.01 -16.42 0.54 115 +117 3 -98.69 -96.93 -16.4 0.54 116 +118 3 -22.3 -29.09 -5.42 0.54 44 +119 3 -21.83 -31.67 -5.72 0.54 118 +120 3 -20.61 -34.99 -6.22 0.54 119 +121 3 -19.89 -36.61 -6.91 0.54 120 +122 3 -19.46 -38.24 -7.56 0.54 121 +123 3 -19.16 -39.45 -7.78 0.54 122 +124 3 -18.65 -40.57 -7.25 0.54 123 +125 3 -17.05 -42.46 -6.82 0.54 124 +126 3 -16.58 -44.14 -6.97 0.54 125 +127 3 -16.87 -45.37 -6.98 0.54 126 +128 3 -16.66 -45.58 -6.26 0.54 127 +129 3 -17.25 -47.1 -6.35 0.54 128 +130 3 -18.32 -47.57 -6.3 0.54 129 +131 3 -19.05 -48.38 -6.01 0.54 130 +132 3 -20.1 -49.46 -5.87 0.54 131 +133 3 -20.55 -51.43 -6.02 0.54 132 +134 3 -21.15 -53.57 -6.17 0.54 133 +135 3 -22.35 -55.72 -6.2 0.54 134 +136 3 -23.41 -57.41 -6.27 0.54 135 +137 3 -24.16 -59.09 -6.36 0.54 136 +138 3 -25.52 -59.88 -6.16 0.54 137 +139 3 -26.42 -60.8 -6.08 0.54 138 +140 3 -27.46 -61.9 -5.8 0.54 139 +141 3 -28.2 -64.21 -5.88 0.54 140 +142 3 -28.5 -66.33 -6.07 0.54 141 +143 3 -29.72 -67.87 -6.1 0.54 142 +144 3 -31.08 -68.64 -6.05 0.54 143 +145 3 -32.76 -70.63 -6.09 0.54 144 +146 3 -33.19 -72.63 -6.16 0.54 145 +147 3 -33.8 -75.05 -6.34 0.54 146 +148 3 -33.71 -76.04 -5.62 0.54 147 +149 3 -35.03 -77.17 -6.74 0.54 148 +150 3 -36.24 -79.02 -6.8 0.54 149 +151 3 -37.19 -80.5 -7.25 0.54 150 +152 3 -37.41 -81.78 -8.26 0.54 151 +153 3 -37.85 -84.68 -8.5 0.54 152 +154 3 -38.77 -88.03 -8.81 0.54 153 +155 3 -38.91 -90.01 -9.0 0.54 154 +156 3 -39.06 -91.68 -9.15 0.54 155 +157 3 -38.76 -93.18 -9.47 0.54 156 +158 3 -38.8 -94.06 -9.93 0.54 157 +159 3 -39.48 -94.59 -10.83 0.54 158 +160 3 -41.17 -96.26 -10.99 0.54 159 +161 3 -41.54 -97.09 -11.87 0.54 160 +162 3 -41.81 -97.74 -13.11 0.54 161 +163 3 -41.84 -99.24 -11.97 0.54 162 +164 3 -42.03 -99.98 -10.67 0.54 163 +165 3 -41.98 -100.61 -10.44 0.54 164 +166 3 -42.73 -102.6 -10.48 0.54 165 +167 3 -42.57 -105.2 -10.68 0.54 166 +168 3 -42.71 -106.56 -10.8 0.54 167 +169 3 -43.6 -108.43 -10.59 0.54 168 +170 3 -44.18 -109.97 -10.46 0.54 169 +171 3 -44.24 -110.81 -9.71 0.54 170 +172 3 -44.24 -112.04 -9.68 0.54 171 +173 3 -44.52 -113.29 -9.54 0.54 172 +174 3 -44.93 -114.69 -9.33 0.54 173 +175 3 -44.89 -116.26 -9.04 0.54 174 +176 3 -44.68 -117.66 -8.75 0.54 175 +177 3 -44.39 -119.19 -8.84 0.54 176 +178 3 -43.91 -120.55 -9.02 0.54 177 +179 3 -43.89 -120.9 -8.69 0.54 178 +180 3 -42.63 -122.13 -8.62 0.54 179 +181 3 -41.35 -123.71 -8.14 0.54 180 +182 3 -40.56 -125.39 -8.29 0.54 181 +183 3 -39.95 -126.59 -8.46 0.54 182 +184 3 -39.34 -128.42 -8.63 0.54 183 +185 3 -38.71 -130.56 -8.81 0.54 184 +186 3 -38.07 -131.8 -8.62 0.54 185 +187 3 -37.6 -132.87 -8.68 0.54 186 +188 3 -37.59 -134.08 -8.74 0.54 187 +189 3 -37.59 -135.0 -8.83 0.54 188 +190 3 -37.43 -135.76 -8.92 0.54 189 +191 3 -36.82 -136.67 -9.06 0.54 190 +192 3 -36.05 -138.64 -9.32 0.54 191 +193 3 -35.9 -140.01 -9.47 0.54 192 +194 3 -36.34 -141.07 -9.54 0.54 193 +195 3 -37.05 -141.51 -9.36 0.435 194 +196 3 -37.96 -142.43 -9.36 0.435 195 +197 3 -39.64 -142.9 -9.25 0.435 196 +198 3 -41.44 -143.55 -9.01 0.435 197 +199 3 -42.34 -144.48 -8.86 0.435 198 +200 3 -43.11 -144.62 -8.95 0.435 199 +201 3 -43.6 -145.36 -9.28 0.435 200 +202 3 -43.94 -145.63 -9.65 0.435 201 +203 3 -44.28 -146.19 -10.13 0.435 202 +204 3 -44.99 -146.71 -11.25 0.435 203 +205 3 -45.66 -147.56 -11.88 0.435 204 +206 3 -45.84 -148.59 -12.34 0.435 205 +207 3 -46.13 -150.11 -12.46 0.435 206 +208 3 -46.59 -151.48 -12.62 0.435 207 +209 3 -46.59 -152.7 -12.74 0.435 208 +210 3 -46.42 -154.06 -12.89 0.435 209 +211 3 -46.6 -154.8 -13.25 0.435 210 +212 3 -46.15 -155.85 -13.47 0.435 211 +213 3 -45.85 -157.07 -13.61 0.435 212 +214 3 -46.02 -157.81 -13.9 0.435 213 +215 3 -46.02 -158.71 -14.14 0.435 214 +216 3 -46.22 -159.72 -14.67 0.435 215 +217 3 -46.53 -160.34 -14.78 0.435 216 +218 3 -46.83 -160.94 -14.81 0.435 217 +219 3 -46.99 -161.4 -14.84 0.435 218 +220 3 -47.04 -161.94 -15.64 0.435 219 +221 3 -47.65 -162.54 -15.73 0.435 220 +222 3 -48.11 -163.01 -15.73 0.435 221 +223 3 -48.42 -163.32 -15.73 0.435 222 +224 3 -48.62 -163.71 -16.28 0.435 223 +225 3 -48.31 -165.22 -16.53 0.435 224 +226 3 -47.25 -165.67 -16.67 0.435 225 +227 3 -3.29 -10.26 -4.74 1.19 10 +228 3 -2.54 -10.99 -5.1 1.08 227 +229 3 -1.93 -11.9 -5.24 0.865 228 +230 3 -1.81 -12.92 -5.81 0.65 229 +231 3 -1.21 -13.83 -5.95 0.65 230 +232 3 -1.2 -14.74 -6.04 0.65 231 +233 3 -1.8 -15.96 -6.11 0.65 232 +234 3 -2.26 -16.71 -6.22 0.65 233 +235 3 -3.79 -17.95 -6.19 0.65 234 +236 3 -4.84 -19.93 -6.3 0.65 235 +237 3 -5.14 -20.55 -6.33 0.435 236 +238 3 -6.2 -22.22 -6.39 0.435 237 +239 3 -6.34 -23.59 -6.51 0.435 238 +240 3 -5.58 -24.95 -6.72 0.435 239 +241 3 -4.67 -27.09 -7.01 0.435 240 +242 3 -4.2 -29.67 -7.3 0.435 241 +243 3 -4.2 -30.88 -7.42 0.435 242 +244 3 -3.89 -32.39 -7.6 0.435 243 +245 3 -2.46 -33.18 -8.94 0.435 244 +246 3 -1.39 -33.63 -9.08 0.435 245 +247 3 -0.03 -34.37 -9.35 0.435 246 +248 3 1.17 -35.88 -9.61 0.435 247 +249 3 2.25 -38.15 -9.94 0.435 248 +250 3 3.18 -40.28 -10.23 0.435 249 +251 3 3.48 -41.49 -10.37 0.435 250 +252 3 4.85 -42.85 -10.63 0.435 251 +253 3 6.49 -42.62 -11.29 0.435 252 +254 3 8.21 -43.42 -12.58 0.435 253 +255 3 9.59 -44.79 -11.18 0.435 254 +256 3 10.7 -45.29 -10.8 0.435 255 +257 3 11.5 -46.08 -10.51 0.435 256 +258 3 11.97 -47.16 -10.5 0.435 257 +259 3 13.08 -48.25 -10.26 0.435 258 +260 3 13.0 -48.78 -9.54 0.435 259 +261 3 12.87 -49.57 -9.46 0.435 260 +262 3 12.76 -50.06 -9.04 0.435 261 +263 3 12.82 -51.04 -8.45 0.435 262 +264 3 13.34 -52.46 -7.97 0.435 263 +265 3 13.53 -52.95 -7.73 0.435 264 +266 3 13.55 -53.89 -7.6 0.435 265 +267 3 13.56 -54.5 -7.58 0.435 266 +268 3 -4.18 -10.16 -2.3 0.755 9 +269 3 -5.4 -11.08 -2.28 0.65 268 +270 3 -6.46 -12.15 -2.28 0.65 269 +271 3 -7.06 -13.68 -2.38 0.65 270 +272 3 -7.51 -15.67 -2.45 0.65 271 +273 3 -7.34 -17.65 -2.66 0.65 272 +274 3 -6.43 -19.76 -2.95 0.65 273 +275 3 -5.66 -21.74 -3.21 0.65 274 +276 3 -5.04 -24.47 -3.53 0.65 275 +277 3 -4.42 -25.98 -3.75 0.65 276 +278 3 -4.72 -27.19 -3.83 0.65 277 +279 3 -5.34 -27.81 -3.84 0.65 278 +280 3 -6.55 -27.83 -3.72 0.65 279 +281 3 -7.47 -29.36 -3.79 0.65 280 +282 3 -7.71 -30.46 -3.88 0.65 281 +283 3 -7.85 -30.94 -2.1 0.435 282 +284 3 -8.31 -31.4 -2.1 0.435 283 +285 3 -8.76 -31.87 -2.1 0.435 284 +286 3 -9.26 -32.27 -2.63 0.435 285 +287 3 -9.8 -32.65 -3.44 0.435 286 +288 3 -10.28 -33.09 -3.67 0.435 287 +289 3 -10.55 -33.42 -3.44 0.435 288 +290 3 -10.84 -33.75 -3.23 0.435 289 +291 3 -10.83 -34.36 -3.22 0.435 290 +292 3 -10.5 -34.69 -3.06 0.435 291 +293 3 -9.99 -35.2 -2.47 0.435 292 +294 3 -9.77 -35.72 -1.86 0.435 293 +295 3 -8.83 -36.34 -1.86 0.435 294 +296 3 -8.98 -37.42 -1.86 0.435 295 +297 3 -9.13 -38.17 -1.92 0.435 296 +298 3 -9.44 -38.79 -1.95 0.435 297 +299 3 -10.19 -39.56 -1.89 0.435 298 +300 3 -10.33 -40.33 -1.88 0.435 299 +301 3 -10.62 -41.25 -1.87 0.435 300 +302 3 -10.93 -41.86 -1.9 0.435 301 +303 3 -11.04 -42.96 -1.61 0.435 302 +304 3 -10.29 -43.39 -3.53 0.435 303 +305 3 -10.28 -44.0 -3.52 0.435 304 +306 3 -7.61 -30.42 -3.89 0.54 282 +307 3 -6.54 -31.79 -4.11 0.54 306 +308 3 -5.85 -33.07 -3.47 0.54 307 +309 3 -6.0 -34.45 -3.59 0.54 308 +310 3 -7.37 -35.22 -3.55 0.54 309 +311 3 -7.21 -37.19 -3.75 0.54 310 +312 3 -6.22 -38.47 -4.87 0.54 311 +313 3 -5.61 -39.97 -5.07 0.54 312 +314 3 -6.21 -41.81 -5.21 0.54 313 +315 3 -5.85 -42.47 -4.77 0.435 314 +316 3 -5.24 -43.37 -4.91 0.435 315 +317 3 -4.62 -45.49 -5.17 0.435 316 +318 3 -4.17 -46.86 -5.35 0.435 317 +319 3 -3.56 -47.46 -5.47 0.435 318 +320 3 -2.5 -47.3 -5.55 0.435 319 +321 3 -1.73 -47.43 -5.72 0.435 320 +322 3 -1.12 -48.96 -5.92 0.435 321 +323 3 -1.58 -50.03 -5.98 0.435 322 +324 3 -1.42 -51.69 -6.15 0.435 323 +325 3 -0.66 -53.05 -6.36 0.435 324 +326 3 0.4 -54.4 -6.66 0.435 325 +327 3 1.17 -55.16 -6.81 0.435 326 +328 3 0.71 -56.23 -6.87 0.435 327 +329 3 0.33 -56.76 -7.79 0.435 328 +330 3 -0.32 -58.22 -8.39 0.435 329 +331 3 -1.38 -59.61 -8.44 0.435 330 +332 3 -1.83 -60.98 -8.53 0.435 331 +333 3 -1.82 -62.5 -8.67 0.435 332 +334 3 -1.82 -64.32 -8.86 0.435 333 +335 3 -1.2 -65.54 -9.03 0.435 334 +336 3 0.0 -66.74 -9.26 0.435 335 +337 3 0.47 -68.12 -9.43 0.435 336 +338 3 0.32 -68.57 -9.46 0.435 337 +339 3 0.01 -69.48 -9.53 0.435 338 +340 3 0.02 -70.4 -9.62 0.435 339 +341 3 0.78 -71.76 -9.82 0.435 340 +342 3 1.7 -72.97 -10.02 0.435 341 +343 3 2.45 -74.0 -10.42 0.435 342 +344 3 1.99 -75.37 -10.59 0.435 343 +345 3 1.98 -75.98 -10.65 0.435 344 +346 3 2.75 -77.03 -10.82 0.435 345 +347 3 3.06 -78.25 -10.97 0.435 346 +348 3 2.76 -78.86 -11.0 0.435 347 +349 3 2.15 -79.78 -11.03 0.435 348 +350 3 2.61 -81.14 -11.21 0.435 349 +351 3 3.98 -81.27 -11.35 0.435 350 +352 3 4.44 -81.73 -11.44 0.435 351 +353 3 4.9 -82.79 -11.58 0.435 352 +354 3 5.05 -84.17 -11.73 0.435 353 +355 3 5.11 -85.41 -13.06 0.435 354 +356 3 4.51 -86.03 -13.07 0.435 355 +357 3 4.05 -87.08 -13.13 0.435 356 +358 3 5.87 -87.99 -13.39 0.435 357 +359 3 6.94 -89.34 -13.62 0.435 358 +360 3 7.26 -89.66 -15.19 0.435 359 +361 3 7.41 -90.71 -15.31 0.435 360 +362 3 7.27 -91.78 -15.4 0.435 361 +363 3 6.96 -92.39 -15.43 0.435 362 +364 3 6.97 -93.61 -15.55 0.435 363 +365 3 7.89 -94.51 -15.72 0.435 364 +366 3 8.9 -95.81 -16.63 0.435 365 +367 3 9.5 -97.01 -16.87 0.435 366 +368 3 9.78 -97.89 -17.28 0.435 367 +369 3 10.05 -99.68 -17.87 0.435 368 +370 3 10.22 -101.04 -18.02 0.435 369 +371 3 11.12 -101.33 -18.2 0.435 370 +372 3 12.8 -101.77 -18.4 0.435 371 +373 3 13.56 -102.83 -18.57 0.435 372 +374 3 13.72 -104.5 -18.75 0.435 373 +375 3 14.47 -105.55 -19.0 0.435 374 +376 3 15.39 -106.77 -19.2 0.435 375 +377 3 16.61 -108.57 -19.48 0.435 376 +378 3 17.38 -110.24 -19.72 0.435 377 +379 3 18.45 -112.52 -20.04 0.435 378 +380 3 19.52 -114.78 -20.36 0.435 379 +381 3 21.03 -116.57 -20.9 0.435 380 +382 3 21.89 -118.02 -21.88 0.435 381 +383 3 22.81 -119.53 -22.12 0.435 382 +384 3 24.02 -120.73 -22.34 0.435 383 +385 3 25.54 -121.63 -22.57 0.435 384 +386 3 27.84 -123.58 -22.97 0.435 385 +387 3 29.06 -125.1 -23.23 0.435 386 +388 3 28.92 -127.99 -23.5 0.435 387 +389 3 29.37 -129.34 -23.68 0.435 388 +390 3 29.07 -130.27 -23.81 0.435 389 +391 3 30.9 -131.15 -24.06 0.435 390 +392 3 31.66 -132.83 -24.3 0.435 391 +393 3 32.58 -134.34 -24.53 0.435 392 +394 3 33.65 -135.38 -24.73 0.435 393 +395 3 33.96 -136.6 -24.88 0.435 394 +396 3 35.33 -138.86 -25.23 0.435 395 +397 3 35.84 -140.11 -25.48 0.435 396 +398 3 36.6 -141.17 -25.65 0.435 397 +399 3 37.52 -142.08 -25.82 0.435 398 +400 3 39.34 -142.96 -26.08 0.435 399 +401 3 40.03 -144.86 -27.15 0.435 400 +402 3 40.8 -146.82 -27.42 0.435 401 +403 3 42.11 -148.41 -28.45 0.435 402 +404 3 42.11 -149.32 -28.54 0.435 403 +405 3 42.07 -149.87 -29.12 0.435 404 +406 3 42.82 -151.24 -29.39 0.435 405 +407 3 44.05 -151.83 -29.57 0.435 406 +408 3 45.05 -152.2 -30.46 0.435 407 +409 3 45.07 -152.83 -31.95 0.435 408 +410 3 44.94 -153.0 -33.4 0.435 409 +411 3 45.09 -154.36 -33.54 0.435 410 +412 3 46.16 -156.02 -33.87 0.435 411 +413 3 47.23 -157.98 -34.17 0.435 412 +414 3 49.06 -160.71 -34.6 0.435 413 +415 3 49.67 -162.22 -34.8 0.435 414 +416 3 50.75 -162.66 -34.94 0.435 415 +417 3 51.97 -163.86 -35.17 0.435 416 +418 3 52.73 -165.53 -35.49 0.435 417 +419 3 53.95 -166.73 -35.79 0.435 418 +420 3 56.12 -167.07 -37.08 0.435 419 +421 3 57.77 -167.77 -37.76 0.435 420 +422 3 59.29 -169.59 -38.07 0.435 421 +423 3 60.21 -170.79 -38.27 0.435 422 +424 3 61.11 -171.07 -38.53 0.435 423 +425 3 61.46 -172.32 -39.9 0.435 424 +426 3 61.73 -172.88 -40.37 0.435 425 +427 3 61.98 -174.03 -41.25 0.435 426 +428 3 62.36 -175.0 -42.21 0.435 427 +429 3 62.89 -176.75 -43.26 0.435 428 +430 3 63.65 -178.11 -43.54 0.435 429 +431 3 64.27 -179.61 -43.75 0.435 430 +432 3 64.73 -180.38 -43.87 0.435 431 +433 3 65.79 -181.11 -44.04 0.435 432 +434 3 66.86 -181.57 -44.18 0.435 433 +435 3 68.38 -180.94 -44.26 0.435 434 +436 3 68.69 -180.64 -44.26 0.435 435 +437 3 68.53 -180.47 -46.04 0.435 436 +438 3 68.0 -179.64 -46.59 0.435 437 +439 3 -7.29 -42.58 -5.25 0.435 314 +440 3 -8.04 -43.04 -5.22 0.435 439 +441 3 -9.1 -45.63 -5.38 0.435 440 +442 3 -7.72 -48.2 -5.76 0.435 441 +443 3 -7.1 -50.64 -6.05 0.435 442 +444 3 -7.7 -51.86 -6.05 0.435 443 +445 3 -9.02 -52.67 -5.62 0.435 444 +446 3 -9.47 -53.15 -5.47 0.435 445 +447 3 -10.07 -53.77 -5.41 0.435 446 +448 3 -9.61 -54.83 -5.55 0.435 447 +449 3 -9.46 -55.59 -5.64 0.435 448 +450 3 -10.07 -56.21 -5.65 0.435 449 +451 3 -11.44 -56.36 -5.54 0.435 450 +452 3 -12.35 -57.28 -5.54 0.435 451 +453 3 -12.49 -57.74 -5.57 0.435 452 +454 3 -12.6 -58.26 -5.08 0.435 453 +455 3 -12.59 -59.47 -5.19 0.435 454 +456 3 -12.13 -61.45 -5.36 0.435 455 +457 3 -12.12 -62.66 -5.48 0.435 456 +458 3 -13.18 -63.13 -5.43 0.435 457 +459 3 -13.79 -64.05 -5.46 0.435 458 +460 3 -14.7 -65.88 -5.56 0.435 459 +461 3 -14.54 -67.86 -5.76 0.435 460 +462 3 -14.05 -69.56 -5.67 0.435 461 +463 3 -13.28 -70.32 -5.73 0.435 462 +464 3 -12.67 -71.52 -5.92 0.435 463 +465 3 -12.66 -72.75 -6.03 0.435 464 +466 3 -12.95 -73.97 -6.05 0.435 465 +467 3 -12.96 -75.19 -6.17 0.435 466 +468 3 -13.05 -75.7 -5.67 0.435 467 +469 3 -13.36 -76.3 -5.71 0.435 468 +470 3 -13.35 -76.61 -5.67 0.435 469 +471 3 -13.8 -77.68 -5.73 0.435 470 +472 3 -4.13 -8.82 -3.75 0.11 8 +473 3 -5.04 -9.14 -3.56 0.11 472 +474 3 -5.17 -9.91 -3.62 0.11 473 +475 3 -5.4 -9.38 -4.23 0.65 474 +476 3 -6.03 -9.39 -4.32 0.65 475 +477 3 -7.57 -9.66 -4.59 0.65 476 +478 3 -9.11 -9.96 -4.69 0.65 477 +479 3 -11.24 -10.59 -4.56 0.65 478 +480 3 -13.07 -11.2 -4.52 0.65 479 +481 3 -14.78 -12.25 -4.85 0.65 480 +482 3 -15.69 -13.17 -4.93 0.54 481 +483 3 -16.79 -14.8 -5.44 0.54 482 +484 3 -17.3 -15.82 -6.03 0.54 483 +485 3 -17.49 -16.53 -6.61 0.54 484 +486 3 -18.03 -16.92 -7.43 0.54 485 +487 3 -18.49 -17.35 -7.58 0.54 486 +488 3 -20.18 -16.91 -7.45 0.54 487 +489 3 -22.02 -17.51 -7.64 0.54 488 +490 3 -23.12 -17.93 -7.96 0.54 489 +491 3 -24.34 -18.55 -7.9 0.54 490 +492 3 -25.12 -18.67 -9.82 0.54 491 +493 3 -25.19 -19.23 -10.54 0.54 492 +494 3 -25.88 -18.84 -11.35 0.54 493 +495 3 -27.71 -17.94 -11.09 0.54 494 +496 3 -28.76 -18.42 -10.97 0.54 495 +497 3 -29.45 -18.34 -11.73 0.54 496 +498 3 -31.51 -17.81 -12.39 0.54 497 +499 3 -33.03 -18.12 -12.35 0.54 498 +500 3 -35.21 -17.8 -12.65 0.54 499 +501 3 -37.66 -17.18 -12.52 0.54 500 +502 3 -40.65 -16.07 -13.04 0.54 501 +503 3 -41.66 -16.27 -14.1 0.54 502 +504 3 -43.19 -16.58 -14.07 0.54 503 +505 3 -46.23 -17.82 -13.91 0.54 504 +506 3 -49.43 -18.6 -13.84 0.54 505 +507 3 -52.13 -18.96 -14.91 0.54 506 +508 3 -54.57 -19.28 -14.71 0.54 507 +509 3 -57.24 -18.15 -15.33 0.54 508 +510 3 -60.0 -18.47 -15.2 0.54 509 +511 3 -60.98 -18.7 -15.96 0.54 510 +512 3 -61.98 -18.92 -16.94 0.54 511 +513 3 -63.16 -19.26 -18.08 0.54 512 +514 3 -63.47 -19.57 -18.16 0.54 513 +515 3 -64.11 -20.15 -18.53 0.54 514 +516 3 -64.76 -20.11 -18.92 0.54 515 +517 3 -65.52 -20.87 -18.92 0.54 516 +518 3 -65.65 -21.05 -20.29 0.54 517 +519 3 -65.8 -21.49 -20.48 0.54 518 +520 3 -66.24 -21.66 -21.89 0.54 519 +521 3 -66.09 -21.81 -21.84 0.54 520 +522 3 -65.97 -21.94 -22.24 0.54 521 +523 3 -66.03 -21.87 -22.91 0.54 522 +524 3 -65.79 -22.1 -23.72 0.54 523 +525 3 -65.66 -22.21 -24.11 0.54 524 +526 3 -65.56 -22.92 -24.72 0.54 525 +527 3 -65.5 -23.29 -25.67 0.54 526 +528 3 -65.7 -23.68 -26.37 0.54 527 +529 3 -65.88 -24.11 -26.69 0.54 528 +530 3 -65.95 -24.34 -27.47 0.54 529 +531 3 -66.0 -24.89 -28.04 0.54 530 +532 3 -66.14 -24.75 -29.53 0.54 531 +533 3 -66.17 -25.01 -30.08 0.54 532 +534 3 -66.41 -25.36 -31.07 0.54 533 +535 3 -66.47 -25.93 -31.66 0.54 534 +536 3 -67.13 -26.47 -32.33 0.54 535 +537 3 -67.32 -26.9 -32.73 0.54 536 +538 3 -67.71 -27.11 -33.62 0.54 537 +539 3 -68.11 -27.31 -34.74 0.54 538 +540 3 -68.29 -27.74 -35.07 0.54 539 +541 3 -68.48 -28.16 -35.55 0.54 540 +542 3 -68.82 -29.04 -35.97 0.54 541 +543 3 -65.85 -20.54 -20.83 0.54 517 +544 3 -66.61 -20.69 -20.77 0.54 543 +545 3 -68.01 -20.83 -20.97 0.54 544 +546 3 -69.3 -20.45 -21.72 0.54 545 +547 3 -71.02 -20.27 -21.99 0.54 546 +548 3 -71.91 -20.3 -23.28 0.54 547 +549 3 -73.47 -20.56 -23.68 0.54 548 +550 3 -75.26 -20.3 -24.77 0.54 549 +551 3 -77.1 -20.02 -24.66 0.54 550 +552 3 -78.96 -19.68 -24.82 0.54 551 +553 3 -80.73 -19.46 -25.63 0.54 552 +554 3 -82.71 -20.23 -25.59 0.54 553 +555 3 -84.53 -20.25 -25.42 0.54 554 +556 3 -86.26 -19.76 -25.75 0.54 555 +557 3 -87.79 -18.56 -25.49 0.54 556 +558 3 -89.16 -17.5 -25.26 0.54 557 +559 3 -90.21 -17.06 -25.04 0.54 558 +560 3 -92.19 -16.62 -24.81 0.54 559 +561 3 -93.6 -16.14 -25.02 0.54 560 +562 3 -94.25 -15.81 -25.3 0.54 561 +563 3 -96.38 -14.92 -25.02 0.54 562 +564 3 -24.5 -18.09 -7.92 0.54 491 +565 3 -26.66 -18.39 -8.06 0.54 564 +566 3 -28.03 -19.16 -8.08 0.54 565 +567 3 -29.48 -19.84 -8.99 0.54 566 +568 3 -29.94 -20.9 -9.13 0.54 567 +569 3 -30.25 -21.2 -9.13 0.54 568 +570 3 -31.18 -21.5 -7.63 0.54 569 +571 3 -32.1 -21.52 -7.55 0.54 570 +572 3 -34.69 -21.09 -7.28 0.54 571 +573 3 -38.04 -20.2 -6.96 0.54 572 +574 3 -40.66 -19.74 -6.9 0.54 573 +575 3 -41.28 -20.34 -7.05 0.54 574 +576 3 -43.0 -20.75 -7.53 0.54 575 +577 3 -43.16 -20.9 -7.68 0.54 576 +578 3 -43.07 -21.29 -6.75 0.54 577 +579 3 -43.92 -21.67 -5.95 0.54 578 +580 3 -45.55 -22.49 -5.42 0.54 579 +581 3 -47.53 -23.89 -5.38 0.54 580 +582 3 -49.35 -23.9 -5.14 0.54 581 +583 3 -52.08 -25.15 -5.0 0.54 582 +584 3 -53.9 -26.08 -4.92 0.54 583 +585 3 -55.41 -27.31 -4.77 0.54 584 +586 3 -57.2 -27.98 -4.36 0.54 585 +587 3 -59.45 -28.48 -3.9 0.54 586 +588 3 -61.09 -28.99 -3.41 0.54 587 +589 3 -63.5 -29.65 -2.96 0.54 588 +590 3 -65.78 -29.51 -2.73 0.54 589 +591 3 -69.56 -29.72 -2.18 0.54 590 +592 3 -71.53 -29.6 -1.84 0.54 591 +593 3 -73.15 -29.53 -0.99 0.54 592 +594 3 -73.43 -30.78 -0.87 0.54 593 +595 3 -74.0 -31.43 -0.5 0.54 594 +596 3 -76.57 -30.69 -0.12 0.54 595 +597 3 -79.45 -31.49 0.14 0.54 596 +598 3 -81.74 -31.97 0.31 0.54 597 +599 3 -84.31 -32.46 0.65 0.54 598 +600 3 -85.67 -33.25 0.84 0.54 599 +601 3 -87.01 -33.45 1.25 0.54 600 +602 3 -89.27 -33.94 1.64 0.54 601 +603 3 -90.76 -34.9 1.98 0.54 602 +604 3 -92.58 -36.14 2.12 0.54 603 +605 3 -93.74 -36.8 2.6 0.54 604 +606 3 -96.02 -37.9 2.78 0.54 605 +607 3 -96.78 -38.67 2.78 0.54 606 +608 3 -30.41 -22.58 -9.26 0.54 569 +609 3 -31.31 -24.71 -9.38 0.54 608 +610 3 -32.21 -26.85 -9.5 0.54 609 +611 3 -32.21 -28.06 -9.63 0.54 610 +612 3 -32.23 -28.94 -10.01 0.54 611 +613 3 -32.43 -29.97 -10.55 0.54 612 +614 3 -33.03 -31.18 -10.68 0.54 613 +615 3 -33.72 -32.01 -11.69 0.54 614 +616 3 -34.8 -32.47 -11.71 0.54 615 +617 3 -35.85 -33.55 -11.71 0.54 616 +618 3 -36.47 -34.77 -11.77 0.54 617 +619 3 -36.15 -36.29 -11.95 0.54 618 +620 3 -36.42 -36.55 -11.96 0.54 619 +621 3 -36.57 -37.32 -10.35 0.65 620 +622 3 -36.91 -37.59 -10.73 0.65 621 +623 3 -37.01 -37.49 -11.77 0.65 622 +624 3 -37.15 -37.96 -10.06 0.65 623 +625 3 -37.58 -38.45 -9.76 0.65 624 +626 3 -38.43 -38.82 -9.11 0.65 625 +627 3 -38.88 -39.29 -9.04 0.65 626 +628 3 -39.78 -39.01 -8.85 0.65 627 +629 3 -40.55 -38.86 -8.77 0.54 628 +630 3 -41.77 -38.87 -8.65 0.54 629 +631 3 -42.51 -39.64 -8.51 0.54 630 +632 3 -43.42 -40.58 -8.45 0.54 631 +633 3 -43.39 -42.11 -8.45 0.54 632 +634 3 -43.69 -42.74 -8.4 0.54 633 +635 3 -44.43 -43.52 -8.19 0.54 634 +636 3 -45.94 -43.85 -8.0 0.54 635 +637 3 -47.62 -43.72 -7.76 0.54 636 +638 3 -48.63 -44.23 -7.27 0.54 637 +639 3 -49.35 -45.04 -6.76 0.54 638 +640 3 -50.21 -45.4 -6.26 0.54 639 +641 3 -50.79 -46.05 -5.96 0.54 640 +642 3 -51.85 -47.74 -5.94 0.54 641 +643 3 -53.06 -48.36 -5.9 0.54 642 +644 3 -54.11 -49.45 -5.69 0.54 643 +645 3 -55.62 -50.38 -5.63 0.54 644 +646 3 -56.5 -51.33 -5.34 0.54 645 +647 3 -57.4 -51.64 -5.21 0.54 646 +648 3 -59.23 -50.75 -4.95 0.54 647 +649 3 -59.97 -51.54 -4.75 0.54 648 +650 3 -61.03 -52.62 -4.67 0.54 649 +651 3 -62.84 -53.27 -4.34 0.54 650 +652 3 -63.74 -54.5 -4.3 0.54 651 +653 3 -64.65 -55.42 -4.31 0.54 652 +654 3 -65.71 -55.88 -4.26 0.54 653 +655 3 -67.38 -55.75 -4.09 0.54 654 +656 3 -69.97 -56.54 -3.92 0.54 655 +657 3 -71.02 -58.52 -4.02 0.54 656 +658 3 -71.77 -59.29 -3.96 0.54 657 +659 3 -71.92 -60.98 -4.11 0.54 658 +660 3 -72.07 -62.04 -4.19 0.54 659 +661 3 -72.51 -62.82 -4.0 0.54 660 +662 3 -74.79 -62.7 -3.7 0.54 661 +663 3 -76.29 -63.03 -3.52 0.54 662 +664 3 -76.89 -63.65 -3.38 0.54 663 +665 3 -77.75 -64.63 -2.87 0.54 664 +666 3 -78.35 -65.25 -2.79 0.54 665 +667 3 -79.26 -66.17 -2.79 0.54 666 +668 3 -80.78 -66.49 -2.61 0.54 667 +669 3 -81.84 -67.57 -2.63 0.54 668 +670 3 -82.9 -68.64 -2.63 0.54 669 +671 3 -85.03 -68.97 -2.46 0.54 670 +672 3 -86.1 -70.04 -2.47 0.54 671 +673 3 -87.15 -70.52 -2.34 0.54 672 +674 3 -87.87 -71.62 -2.08 0.54 673 +675 3 -88.17 -71.94 -1.93 0.54 674 +676 3 -88.62 -72.4 -1.93 0.54 675 +677 3 -89.21 -73.02 -1.87 0.54 676 +678 3 -90.59 -73.18 -1.75 0.54 677 +679 3 -92.27 -73.35 -1.62 0.54 678 +680 3 -93.03 -74.13 -1.63 0.54 679 +681 3 -93.63 -74.73 -1.63 0.54 680 +682 3 -94.37 -75.52 -1.49 0.54 681 +683 3 -94.98 -76.74 -1.47 0.54 682 +684 3 -95.28 -77.66 -1.53 0.54 683 +685 3 -95.57 -78.28 -1.49 0.54 684 +686 3 -96.18 -79.2 -1.53 0.54 685 +687 3 -96.63 -79.96 -1.56 0.54 686 +688 3 -98.31 -79.81 -1.39 0.54 687 +689 3 -99.52 -79.83 -1.28 0.54 688 +690 3 -100.5 -80.4 -0.26 0.65 689 +691 3 -101.37 -81.06 0.2 0.65 690 +692 3 -101.93 -81.71 0.64 0.65 691 +693 3 -104.5 -82.22 1.12 0.65 692 +694 3 -107.38 -82.71 1.34 0.65 693 +695 3 -108.58 -83.33 1.48 0.65 694 +696 3 -110.26 -84.42 1.53 0.435 695 +697 3 -112.24 -84.59 1.69 0.435 696 +698 3 -113.74 -84.92 1.94 0.435 697 +699 3 -115.1 -86.3 2.09 0.435 698 +700 3 -115.4 -86.62 2.09 0.65 699 +701 3 -116.47 -87.09 2.14 0.65 700 +702 3 -117.67 -88.32 2.2 0.65 701 +703 3 -118.11 -89.99 2.08 0.65 702 +704 3 -117.51 -90.91 1.93 0.65 703 +705 3 -116.44 -91.96 1.81 0.65 704 +706 3 -116.38 -93.84 2.08 0.65 705 +707 3 -116.38 -94.75 2.06 0.65 706 +708 3 -116.66 -95.39 2.17 0.65 707 +709 3 -116.82 -95.84 2.22 0.65 708 +710 3 -117.38 -95.88 2.65 0.65 709 +711 3 -117.21 -97.57 2.55 0.65 710 +712 3 -117.31 -98.69 3.06 0.65 711 +713 3 -117.87 -99.35 3.56 0.65 712 +714 3 -118.31 -99.82 3.64 0.65 713 +715 3 -119.48 -99.89 4.34 0.65 714 +716 3 -119.79 -100.19 4.34 0.65 715 +717 3 -120.37 -100.84 4.64 0.65 716 +718 3 -121.26 -101.77 4.78 0.65 717 +719 3 -121.57 -102.09 4.78 0.65 718 +720 3 -122.02 -102.54 4.78 0.65 719 +721 3 -123.54 -102.26 5.02 0.65 720 +722 3 -124.3 -102.42 5.07 0.65 721 +723 3 -124.59 -102.74 5.14 0.65 722 +724 3 -124.74 -103.2 5.11 0.65 723 +725 3 -36.35 -37.31 -10.9 0.54 620 +726 3 -35.82 -37.83 -10.25 0.54 725 +727 3 -35.54 -38.11 -10.45 0.54 726 +728 3 -35.25 -38.41 -9.06 0.54 727 +729 3 -34.88 -38.78 -8.38 0.54 728 +730 3 -34.45 -39.82 -7.17 0.54 729 +731 3 -34.43 -40.75 -7.11 0.54 730 +732 3 -34.99 -42.63 -6.71 0.54 731 +733 3 -35.37 -44.07 -6.05 0.54 732 +734 3 -35.66 -44.7 -5.94 0.54 733 +735 3 -35.61 -45.35 -5.55 0.54 734 +736 3 -35.72 -46.45 -5.27 0.54 735 +737 3 -36.02 -47.07 -5.22 0.54 736 +738 3 -36.42 -47.6 -4.63 0.54 737 +739 3 -36.87 -48.68 -4.55 0.54 738 +740 3 -37.46 -49.3 -4.4 0.54 739 +741 3 -37.74 -49.94 -4.22 0.54 740 +742 3 -38.08 -51.13 -3.09 0.54 741 +743 3 -37.89 -52.21 -2.84 0.54 742 +744 3 -38.14 -53.2 -2.31 0.54 743 +745 3 -38.38 -54.17 -1.7 0.54 744 +746 3 -38.36 -55.11 -1.64 0.54 745 +747 3 -38.5 -55.57 -1.52 0.54 746 +748 3 -38.49 -55.89 -1.4 0.54 747 +749 3 -38.75 -56.54 -1.06 0.54 748 +750 3 -39.46 -57.36 -0.54 0.54 749 +751 3 -40.96 -57.7 -0.14 0.54 750 +752 3 -42.01 -57.87 0.0 0.54 751 +753 3 -42.45 -58.35 0.23 0.54 752 +754 3 -43.05 -58.98 0.29 0.54 753 +755 3 6.7 -3.75 -5.33 0.865 1 +756 3 7.16 -4.21 -5.41 0.865 755 +757 3 8.22 -4.04 -5.49 0.865 756 +758 3 9.44 -4.63 -5.66 0.865 757 +759 3 10.51 -5.08 -5.81 0.865 758 +760 3 11.58 -6.45 -6.04 0.865 759 +761 3 12.35 -7.2 -6.18 0.54 760 +762 3 14.62 -7.02 -6.37 0.54 761 +763 3 16.16 -7.01 -6.52 0.54 762 +764 3 16.73 -7.29 -5.23 0.54 763 +765 3 17.34 -7.28 -5.29 0.54 764 +766 3 18.42 -6.85 -3.46 0.54 765 +767 3 19.63 -5.01 -3.39 0.54 766 +768 3 20.89 -4.13 -4.55 0.54 767 +769 3 22.56 -3.66 -4.66 0.54 768 +770 3 23.48 -3.35 -4.72 0.54 769 +771 3 24.39 -2.42 -4.71 0.54 770 +772 3 25.0 -1.82 -4.71 0.54 771 +773 3 27.48 -1.23 -6.0 0.54 772 +774 3 29.0 -1.51 -6.17 0.54 773 +775 3 29.91 -0.59 -6.17 0.54 774 +776 3 31.13 0.63 -6.16 0.54 775 +777 3 32.73 1.79 -6.95 0.54 776 +778 3 34.85 3.33 -7.0 0.54 777 +779 3 36.38 4.25 -7.05 0.54 778 +780 3 39.25 5.95 -7.15 0.54 779 +781 3 41.7 6.88 -7.28 0.54 780 +782 3 44.17 7.47 -8.52 0.54 781 +783 3 45.54 7.95 -8.75 0.54 782 +784 3 46.67 8.34 -7.98 0.54 783 +785 3 48.22 8.32 -7.82 0.54 784 +786 3 49.47 8.61 -7.53 0.54 785 +787 3 50.45 8.24 -6.98 0.54 786 +788 3 52.97 7.87 -6.34 0.54 787 +789 3 54.85 8.43 -5.78 0.54 788 +790 3 56.74 8.68 -5.18 0.54 789 +791 3 58.14 9.43 -5.0 0.54 790 +792 3 59.39 9.7 -4.63 0.54 791 +793 3 60.79 10.44 -4.32 0.54 792 +794 3 62.66 10.41 -4.04 0.54 793 +795 3 65.9 10.85 -3.76 0.54 794 +796 3 18.25 -7.88 -5.43 0.54 765 +797 3 19.2 -8.81 -5.31 0.54 796 +798 3 19.5 -10.04 -5.37 0.54 797 +799 3 19.68 -10.81 -5.32 0.54 798 +800 3 21.72 -13.13 -5.06 0.54 799 +801 3 23.56 -14.94 -5.4 0.54 800 +802 3 24.81 -16.17 -5.41 0.54 801 +803 3 26.03 -18.3 -5.59 0.54 802 +804 3 26.38 -18.96 -5.23 0.54 803 +805 3 26.56 -19.43 -5.06 0.54 804 +806 3 26.58 -20.67 -5.03 0.54 805 +807 3 26.88 -21.57 -5.14 0.54 806 +808 3 27.2 -22.79 -5.22 0.54 807 +809 3 27.99 -23.57 -5.13 0.54 808 +810 3 29.55 -24.49 -4.99 0.54 809 +811 3 31.08 -24.2 -5.03 0.54 810 +812 3 33.23 -23.6 -4.79 0.54 811 +813 3 34.92 -24.35 -4.94 0.54 812 +814 3 36.3 -25.12 -4.99 0.54 813 +815 3 37.35 -25.55 -5.28 0.54 814 +816 3 38.39 -25.36 -5.66 0.54 815 +817 3 39.69 -25.1 -6.6 0.54 816 +818 3 41.21 -25.7 -6.8 0.54 817 +819 3 41.11 -26.5 -8.07 0.435 818 +820 3 41.28 -26.98 -7.9 0.435 819 +821 3 41.37 -27.36 -8.7 0.435 820 +822 3 41.43 -27.72 -9.65 0.435 821 +823 3 41.51 -28.11 -10.53 0.435 822 +824 3 41.7 -28.58 -11.96 0.435 823 +825 3 43.52 -30.38 -12.38 0.435 824 +826 3 44.59 -31.74 -12.61 0.435 825 +827 3 45.81 -34.47 -13.0 0.435 826 +828 3 48.56 -36.26 -13.42 0.435 827 +829 3 49.79 -38.08 -13.71 0.435 828 +830 3 50.69 -39.29 -13.91 0.435 829 +831 3 50.1 -40.51 -13.97 0.435 830 +832 3 47.97 -41.44 -13.87 0.435 831 +833 3 47.06 -42.66 -13.91 0.435 832 +834 3 47.67 -44.48 -14.14 0.435 833 +835 3 49.35 -44.92 -14.33 0.435 834 +836 3 50.37 -45.02 -14.96 0.435 835 +837 3 50.05 -46.22 -15.28 0.435 836 +838 3 49.9 -47.27 -15.45 0.435 837 +839 3 49.75 -49.25 -15.62 0.435 838 +840 3 49.75 -50.47 -15.74 0.435 839 +841 3 49.59 -51.52 -15.98 0.435 840 +842 3 49.53 -52.98 -16.73 0.435 841 +843 3 49.98 -54.33 -17.05 0.435 842 +844 3 50.87 -55.81 -17.58 0.435 843 +845 3 51.79 -57.63 -17.85 0.435 844 +846 3 52.1 -59.75 -18.15 0.435 845 +847 3 52.26 -62.03 -18.38 0.435 846 +848 3 52.85 -62.92 -18.67 0.435 847 +849 3 53.77 -63.52 -18.91 0.435 848 +850 3 54.58 -65.83 -20.41 0.435 849 +851 3 54.57 -67.64 -20.66 0.435 850 +852 3 54.7 -69.58 -21.25 0.435 851 +853 3 54.93 -71.32 -22.26 0.435 852 +854 3 56.08 -72.45 -23.31 0.435 853 +855 3 57.4 -74.07 -24.12 0.435 854 +856 3 58.83 -75.75 -25.63 0.435 855 +857 3 61.87 -78.15 -26.21 0.435 856 +858 3 63.91 -79.24 -27.57 0.435 857 +859 3 66.44 -81.15 -28.52 0.435 858 +860 3 67.97 -82.65 -28.87 0.435 859 +861 3 68.9 -84.76 -29.17 0.435 860 +862 3 70.27 -86.12 -29.43 0.435 861 +863 3 72.7 -86.41 -29.68 0.435 862 +864 3 74.37 -87.44 -30.09 0.435 863 +865 3 76.32 -89.68 -30.79 0.435 864 +866 3 77.64 -91.58 -31.71 0.435 865 +867 3 77.81 -92.34 -33.31 0.435 866 +868 3 78.38 -93.21 -33.98 0.435 867 +869 3 79.18 -94.29 -35.44 0.435 868 +870 3 80.02 -95.42 -36.38 0.435 869 +871 3 79.7 -97.22 -36.84 0.435 870 +872 3 79.68 -100.23 -37.49 0.435 871 +873 3 81.27 -104.22 -39.09 0.435 872 +874 3 82.94 -106.47 -39.54 0.435 873 +875 3 84.3 -108.12 -39.98 0.435 874 +876 3 84.22 -110.15 -41.09 0.435 875 +877 3 83.92 -111.99 -41.3 0.435 876 +878 3 83.01 -114.72 -41.57 0.435 877 +879 3 83.16 -115.79 -41.69 0.435 878 +880 3 84.18 -117.08 -42.58 0.435 879 +881 3 85.78 -118.66 -43.64 0.435 880 +882 3 86.0 -120.08 -44.85 0.435 881 +883 3 86.26 -120.62 -45.54 0.435 882 +884 3 87.14 -121.81 -45.96 0.435 883 +885 3 88.82 -122.26 -46.16 0.435 884 +886 3 89.68 -124.0 -47.16 0.435 885 +887 3 89.84 -126.28 -47.4 0.435 886 +888 3 91.66 -128.08 -47.83 0.435 887 +889 3 93.26 -128.44 -48.84 0.435 888 +890 3 94.76 -128.1 -49.18 0.435 889 +891 3 95.21 -128.56 -49.26 0.435 890 +892 3 41.61 -25.79 -7.52 0.54 818 +893 3 44.26 -26.59 -8.82 0.54 892 +894 3 46.54 -26.4 -9.01 0.54 893 +895 3 48.66 -26.67 -9.47 0.54 894 +896 3 50.33 -27.72 -9.72 0.54 895 +897 3 52.09 -28.24 -10.61 0.54 896 +898 3 54.16 -29.07 -11.64 0.54 897 +899 3 55.53 -29.2 -11.78 0.54 898 +900 3 56.54 -30.2 -10.99 0.54 899 +901 3 58.49 -30.93 -9.81 0.54 900 +902 3 60.79 -32.89 -10.21 0.54 901 +903 3 63.02 -34.5 -9.37 0.54 902 +904 3 65.02 -35.86 -9.6 0.54 903 +905 3 66.69 -37.83 -9.95 0.54 904 +906 3 67.76 -39.18 -10.18 0.54 905 +907 3 69.76 -41.14 -10.55 0.54 906 +908 3 71.64 -42.09 -10.14 0.54 907 +909 3 72.86 -43.0 -10.35 0.54 908 +910 3 73.48 -43.9 -10.49 0.54 909 +911 4 -2.36 9.28 -0.57 4.11 1 +912 4 -2.99 13.54 -0.1 3.14 911 +913 4 -3.77 16.72 0.27 2.49 912 +914 4 -4.07 19.45 0.57 1.73 913 +915 4 -4.39 21.59 0.8 1.515 914 +916 4 -5.0 23.4 1.12 1.405 915 +917 4 -5.16 25.07 1.3 1.405 916 +918 4 -5.16 26.28 1.42 1.405 917 +919 4 -5.46 27.8 1.66 1.405 918 +920 4 -5.05 29.49 3.08 1.73 919 +921 4 -4.75 31.94 3.29 1.73 920 +922 4 -5.06 34.06 3.52 1.73 921 +923 4 -5.52 36.34 3.79 1.73 922 +924 4 -5.87 38.81 3.61 1.405 923 +925 4 -5.8 40.87 2.97 1.405 924 +926 4 -5.82 42.7 3.08 1.19 925 +927 4 -5.37 44.38 3.2 1.19 926 +928 4 -5.22 46.05 3.35 1.19 927 +929 4 -4.31 47.89 3.45 1.19 928 +930 4 -3.71 50.02 3.6 1.19 929 +931 4 -2.65 51.7 3.67 1.19 930 +932 4 -1.75 54.45 3.84 1.19 931 +933 4 -1.45 55.98 3.97 1.19 932 +934 4 -1.43 57.49 2.68 1.19 933 +935 4 -1.34 58.92 3.72 1.19 934 +936 4 -1.66 60.43 3.97 1.19 935 +937 4 -1.36 61.35 3.97 1.19 936 +938 4 -2.03 62.01 3.48 1.19 937 +939 4 -2.42 63.01 2.71 1.19 938 +940 4 -2.68 62.9 3.33 0.54 939 +941 4 -3.28 62.89 3.38 0.54 940 +942 4 -3.26 62.88 3.53 0.54 941 +943 4 -3.2 62.81 4.27 0.54 942 +944 4 -3.18 62.79 4.49 0.54 943 +945 4 -3.56 62.84 5.44 0.54 944 +946 4 -3.5 62.49 6.01 0.54 945 +947 4 -3.44 62.43 6.67 0.54 946 +948 4 -3.33 62.31 7.86 0.54 947 +949 4 -3.13 62.11 8.28 0.54 948 +950 4 -3.12 61.49 8.37 0.54 949 +951 4 -3.11 60.57 8.28 0.54 950 +952 4 -3.24 59.47 8.56 0.54 951 +953 4 -3.23 58.56 8.47 0.54 952 +954 4 -3.22 57.95 8.48 0.54 953 +955 4 -3.81 57.02 8.53 0.54 954 +956 4 -4.11 56.71 8.6 0.54 955 +957 4 -5.02 57.0 8.79 0.54 956 +958 4 -5.55 57.5 9.87 0.54 957 +959 4 -6.0 58.57 10.01 0.65 958 +960 4 -6.76 59.01 10.12 0.65 959 +961 4 -7.3 58.93 10.92 0.65 960 +962 4 -8.11 58.83 10.45 0.65 961 +963 4 -8.11 60.05 8.99 0.65 962 +964 4 -7.92 60.48 7.8 0.65 963 +965 4 -9.09 61.64 6.89 0.65 964 +966 4 -9.86 62.4 6.89 0.65 965 +967 4 -11.04 63.28 5.79 0.65 966 +968 4 -12.6 63.9 5.7 0.65 967 +969 4 -14.08 64.45 4.69 0.65 968 +970 4 -14.86 65.22 4.75 0.65 969 +971 4 -16.53 66.26 5.01 0.65 970 +972 4 -17.44 67.16 5.18 0.65 971 +973 4 -17.75 67.47 5.24 0.65 972 +974 4 -18.66 67.76 5.35 0.65 973 +975 4 -19.88 68.37 5.52 0.65 974 +976 4 -21.15 69.63 5.15 0.65 975 +977 4 -21.96 71.62 5.12 0.65 976 +978 4 -22.38 72.05 3.84 0.65 977 +979 4 -22.04 73.24 2.8 0.65 978 +980 4 -22.69 73.88 2.38 0.435 979 +981 4 -23.76 74.94 2.66 0.435 980 +982 4 -23.91 76.0 2.78 0.54 981 +983 4 -24.22 77.83 2.98 0.54 982 +984 4 -24.36 79.48 3.24 0.54 983 +985 4 -24.22 80.86 3.28 0.54 984 +986 4 -24.13 81.98 2.78 0.54 985 +987 4 -24.25 83.31 1.79 0.54 986 +988 4 -23.93 84.83 0.32 0.54 987 +989 4 -24.03 85.56 -0.72 0.54 988 +990 4 -23.99 87.04 -1.8 0.54 989 +991 4 -24.53 88.18 -2.39 0.54 990 +992 4 -25.3 89.55 -4.0 0.54 991 +993 4 -25.85 91.31 -4.69 0.54 992 +994 4 -26.54 93.82 -5.29 0.54 993 +995 4 -26.94 96.94 -5.77 0.54 994 +996 4 -26.5 99.86 -5.68 0.54 995 +997 4 -25.4 101.2 -6.86 0.54 996 +998 4 -24.5 102.74 -6.87 0.54 997 +999 4 -24.36 105.01 -6.66 0.54 998 +1000 4 -23.75 105.63 -6.73 0.54 999 +1001 4 -22.53 105.95 -6.81 0.54 1000 +1002 4 -21.96 106.6 -7.18 0.54 1001 +1003 4 -21.07 107.54 -7.4 0.54 1002 +1004 4 -20.88 107.97 -8.66 0.54 1003 +1005 4 -20.98 108.68 -9.57 0.54 1004 +1006 4 -21.55 110.15 -10.59 0.54 1005 +1007 4 -22.0 110.61 -12.0 0.54 1006 +1008 4 -22.54 110.53 -12.87 0.54 1007 +1009 4 -23.53 110.0 -13.74 0.54 1008 +1010 4 -24.05 109.62 -14.48 0.54 1009 +1011 4 -24.55 108.9 -15.04 0.54 1010 +1012 4 -24.91 108.66 -15.7 0.54 1011 +1013 4 -25.63 108.16 -16.9 0.54 1012 +1014 4 -27.38 107.78 -17.6 0.54 1013 +1015 4 -29.09 107.35 -18.02 0.54 1014 +1016 4 -30.38 106.79 -18.63 0.54 1015 +1017 4 -31.99 105.66 -19.65 0.54 1016 +1018 4 -33.92 105.15 -20.66 0.54 1017 +1019 4 -35.31 105.02 -20.85 0.54 1018 +1020 4 -36.26 104.14 -21.23 0.54 1019 +1021 4 -37.38 103.73 -21.84 0.54 1020 +1022 4 -38.82 103.03 -22.53 0.54 1021 +1023 4 -39.89 102.56 -22.55 0.54 1022 +1024 4 -21.12 73.85 2.77 0.435 979 +1025 4 -20.74 75.31 2.04 0.435 1024 +1026 4 -21.43 75.38 1.21 0.54 1025 +1027 4 -22.5 76.74 1.44 0.54 1026 +1028 4 -24.34 77.95 1.72 0.54 1027 +1029 4 -25.85 78.23 1.89 0.54 1028 +1030 4 -27.46 79.21 1.31 0.54 1029 +1031 4 -29.09 80.52 0.37 0.54 1030 +1032 4 -30.73 81.25 -0.68 0.54 1031 +1033 4 -31.11 81.93 -1.33 0.54 1032 +1034 4 -32.04 82.54 -1.34 0.54 1033 +1035 4 -32.62 83.11 -2.51 0.54 1034 +1036 4 -33.03 83.23 -3.67 0.54 1035 +1037 4 -33.66 83.85 -3.79 0.54 1036 +1038 4 -34.42 84.31 -5.41 0.54 1037 +1039 4 -34.98 84.86 -4.7 0.54 1038 +1040 4 -35.5 85.38 -5.28 0.54 1039 +1041 4 -36.26 86.44 -6.7 0.54 1040 +1042 4 -36.87 87.35 -6.55 0.54 1041 +1043 4 -38.48 88.04 -7.4 0.54 1042 +1044 4 -40.59 88.91 -8.48 0.54 1043 +1045 4 -42.74 89.84 -8.4 0.54 1044 +1046 4 -44.31 90.47 -8.73 0.54 1045 +1047 4 -45.65 92.4 -9.63 0.54 1046 +1048 4 -46.08 93.44 -10.85 0.54 1047 +1049 4 -2.27 64.69 2.78 1.19 939 +1050 4 -1.98 65.92 2.81 1.19 1049 +1051 4 -1.53 66.99 2.87 1.19 1050 +1052 4 -0.62 69.11 3.05 1.19 1051 +1053 4 -0.92 70.01 3.25 1.19 1052 +1054 4 -1.19 71.49 3.88 1.19 1053 +1055 4 -2.26 72.5 4.08 1.19 1054 +1056 4 -1.69 72.84 5.34 0.54 1055 +1057 4 -1.53 73.28 5.59 0.54 1056 +1058 4 -1.03 73.39 5.93 0.54 1057 +1059 4 -0.89 74.16 5.91 0.54 1058 +1060 4 -0.13 75.84 6.01 0.54 1059 +1061 4 0.46 77.68 6.13 0.54 1060 +1062 4 0.91 78.75 6.19 0.54 1061 +1063 4 0.02 79.93 6.69 0.54 1062 +1064 4 -0.87 80.82 6.94 0.54 1063 +1065 4 -1.18 83.25 7.21 0.54 1064 +1066 4 -1.14 84.41 7.93 0.54 1065 +1067 4 -1.51 85.09 7.27 0.54 1066 +1068 4 -1.52 85.99 7.43 0.54 1067 +1069 4 -1.73 86.82 6.85 0.54 1068 +1070 4 -1.93 87.64 6.35 0.54 1069 +1071 4 -2.29 88.0 5.81 0.54 1070 +1072 4 -2.37 88.68 5.06 0.54 1071 +1073 4 -2.92 89.83 4.23 0.54 1072 +1074 4 -2.86 90.69 3.33 0.54 1073 +1075 4 -3.25 91.68 2.62 0.54 1074 +1076 4 -3.31 92.36 2.02 0.54 1075 +1077 4 -4.27 94.22 1.77 0.54 1076 +1078 4 -4.28 95.44 1.89 0.54 1077 +1079 4 -4.44 96.5 1.92 0.54 1078 +1080 4 -4.95 97.32 1.45 0.54 1079 +1081 4 -4.83 98.72 1.35 0.54 1080 +1082 4 -5.2 99.99 0.83 0.54 1081 +1083 4 -5.57 101.57 0.34 0.54 1082 +1084 4 -5.51 102.44 -0.64 0.54 1083 +1085 4 -6.15 102.16 -2.57 0.54 1084 +1086 4 -6.45 102.17 -2.54 0.54 1085 +1087 4 -7.51 102.61 -2.4 0.54 1086 +1088 4 -7.83 103.82 -2.26 0.54 1087 +1089 4 -7.82 104.73 -2.09 0.54 1088 +1090 4 -7.83 105.65 -1.99 0.54 1089 +1091 4 -8.17 106.6 -2.4 0.54 1090 +1092 4 -8.11 107.45 -3.15 0.54 1091 +1093 4 -8.11 108.07 -4.84 0.54 1092 +1094 4 -8.42 108.38 -6.45 0.54 1093 +1095 4 -9.37 109.01 -6.67 0.54 1094 +1096 4 -9.37 110.83 -6.43 0.54 1095 +1097 4 -9.28 112.27 -6.96 0.54 1096 +1098 4 -9.84 112.83 -7.99 0.54 1097 +1099 4 -10.31 113.3 -8.13 0.54 1098 +1100 4 -11.46 115.96 -8.6 0.54 1099 +1101 4 -11.75 118.36 -9.69 0.54 1100 +1102 4 -11.68 120.11 -10.37 0.54 1101 +1103 4 -11.17 122.05 -11.21 0.54 1102 +1104 4 -12.02 123.2 -12.0 0.54 1103 +1105 4 -13.35 125.12 -12.89 0.54 1104 +1106 4 -12.85 126.46 -13.87 0.54 1105 +1107 4 -12.1 127.24 -14.02 0.54 1106 +1108 4 -10.88 129.37 -13.91 0.54 1107 +1109 4 -10.66 131.88 -14.45 0.54 1108 +1110 4 -10.24 134.8 -14.5 0.54 1109 +1111 4 -9.71 136.09 -15.19 0.54 1110 +1112 4 -9.21 137.74 -16.28 0.54 1111 +1113 4 -8.85 139.52 -17.12 0.54 1112 +1114 4 -8.37 140.88 -18.47 0.54 1113 +1115 4 -8.15 142.17 -19.2 0.54 1114 +1116 4 -7.47 143.03 -20.17 0.54 1115 +1117 4 -6.98 143.76 -21.34 0.54 1116 +1118 4 -6.3 144.62 -22.15 0.54 1117 +1119 4 -5.65 145.49 -23.34 0.54 1118 +1120 4 -4.55 146.83 -24.52 0.54 1119 +1121 4 -4.03 147.56 -25.56 0.54 1120 +1122 4 -3.49 148.24 -26.29 0.54 1121 +1123 4 -2.86 149.13 -27.56 0.54 1122 +1124 4 -1.65 150.97 -27.55 0.54 1123 +1125 4 -1.2 152.35 -29.06 0.54 1124 +1126 4 0.46 154.05 -29.11 0.54 1125 +1127 4 -2.56 72.54 4.11 1.19 1055 +1128 4 -4.2 74.16 4.79 1.08 1127 +1129 4 -5.12 75.06 5.04 1.08 1128 +1130 4 -5.32 75.9 5.51 0.54 1129 +1131 4 -4.55 76.67 5.52 0.54 1130 +1132 4 -2.73 76.99 5.39 0.54 1131 +1133 4 0.29 77.02 5.11 0.54 1132 +1134 4 2.09 76.76 4.54 0.54 1133 +1135 4 4.1 76.3 4.61 0.54 1134 +1136 4 6.44 75.81 4.88 0.54 1135 +1137 4 9.03 74.46 4.59 0.54 1136 +1138 4 11.15 73.57 4.3 0.54 1137 +1139 4 12.56 73.4 4.45 0.54 1138 +1140 4 14.72 72.48 4.46 0.54 1139 +1141 4 16.24 71.58 4.24 0.54 1140 +1142 4 17.65 70.18 4.35 0.54 1141 +1143 4 20.1 68.37 4.02 0.54 1142 +1144 4 21.94 68.38 4.0 0.54 1143 +1145 4 23.51 68.34 4.38 0.54 1144 +1146 4 24.77 68.32 4.65 0.54 1145 +1147 4 26.58 68.03 4.45 0.54 1146 +1148 4 28.73 66.83 4.21 0.54 1147 +1149 4 31.16 67.15 4.02 0.54 1148 +1150 4 34.23 66.84 4.01 0.54 1149 +1151 4 37.46 65.47 3.95 0.54 1150 +1152 4 39.76 65.63 3.9 0.54 1151 +1153 4 42.35 65.8 3.76 0.54 1152 +1154 4 45.1 66.44 3.64 0.54 1153 +1155 4 46.65 66.11 3.77 0.54 1154 +1156 4 49.09 64.29 3.45 0.54 1155 +1157 4 51.69 62.65 3.05 0.54 1156 +1158 4 53.37 63.12 2.94 0.54 1157 +1159 4 55.18 64.05 2.86 0.54 1158 +1160 4 62.55 62.92 2.23 0.54 1159 +1161 4 66.81 62.05 1.75 0.54 1160 +1162 4 69.42 61.89 1.79 0.54 1161 +1163 4 70.71 61.85 2.34 0.54 1162 +1164 4 71.95 60.62 2.34 0.54 1163 +1165 4 74.38 60.03 2.06 0.54 1164 +1166 4 76.51 60.05 1.87 0.54 1165 +1167 4 76.74 59.83 2.57 0.54 1166 +1168 4 78.33 59.47 3.22 0.54 1167 +1169 4 79.02 58.79 3.85 0.54 1168 +1170 4 79.24 58.56 4.57 0.54 1169 +1171 4 79.18 57.1 5.41 0.54 1170 +1172 4 78.9 56.15 5.64 0.54 1171 +1173 4 78.68 55.45 6.5 0.54 1172 +1174 4 78.42 55.1 6.94 0.54 1173 +1175 4 78.14 54.47 7.21 0.54 1174 +1176 4 -6.09 76.33 6.23 1.08 1129 +1177 4 -6.97 77.79 6.92 1.08 1176 +1178 4 -6.79 78.22 7.24 1.08 1177 +1179 4 -6.31 79.27 7.52 1.08 1178 +1180 4 -5.77 79.63 8.49 1.08 1179 +1181 4 -5.31 80.69 8.77 1.08 1180 +1182 4 -4.24 82.37 8.85 1.08 1181 +1183 4 -3.78 82.82 8.93 1.08 1182 +1184 4 -3.8 83.87 9.55 1.08 1183 +1185 4 -3.8 86.0 9.76 1.08 1184 +1186 4 -4.21 87.32 8.86 1.08 1185 +1187 4 -4.67 88.38 9.02 1.08 1186 +1188 4 -5.57 89.89 7.73 1.405 1187 +1189 4 -6.18 91.4 7.93 1.405 1188 +1190 4 -6.29 92.12 8.47 1.3 1189 +1191 4 -6.35 92.48 8.73 1.3 1190 +1192 4 -5.43 91.69 7.22 0.11 1191 +1193 4 -4.97 92.16 7.3 0.435 1192 +1194 4 -4.52 93.52 7.4 0.435 1193 +1195 4 -3.75 95.19 7.49 0.435 1194 +1196 4 -2.85 96.11 7.56 0.435 1195 +1197 4 -1.34 96.74 7.48 0.435 1196 +1198 4 -0.13 96.77 7.22 0.435 1197 +1199 4 1.04 97.42 6.81 0.435 1198 +1200 4 2.99 98.23 6.32 0.435 1199 +1201 4 4.03 99.03 6.08 0.435 1200 +1202 4 5.07 100.41 5.96 0.435 1201 +1203 4 6.42 101.2 5.77 0.435 1202 +1204 4 8.85 102.46 5.52 0.435 1203 +1205 4 9.2 103.02 4.48 0.435 1204 +1206 4 10.99 103.99 3.95 0.435 1205 +1207 4 12.96 105.69 3.94 0.435 1206 +1208 4 15.08 107.22 3.81 0.435 1207 +1209 4 16.37 108.09 2.95 0.435 1208 +1210 4 18.6 109.22 2.32 0.435 1209 +1211 4 21.77 110.34 1.91 0.435 1210 +1212 4 23.85 111.03 1.18 0.435 1211 +1213 4 26.71 111.84 0.7 0.435 1212 +1214 4 29.14 113.08 0.59 0.435 1213 +1215 4 31.56 113.73 0.21 0.435 1214 +1216 4 33.64 114.71 -0.4 0.435 1215 +1217 4 35.75 115.65 -0.58 0.435 1216 +1218 4 39.1 117.21 -0.74 0.435 1217 +1219 4 41.37 119.2 -0.75 0.435 1218 +1220 4 43.96 120.89 -0.83 0.435 1219 +1221 4 47.91 123.37 -0.95 0.435 1220 +1222 4 50.77 124.17 -1.29 0.435 1221 +1223 4 52.39 123.8 -2.23 0.435 1222 +1224 4 55.57 123.99 -2.59 0.435 1223 +1225 4 58.26 124.68 -3.29 0.435 1224 +1226 4 61.6 125.33 -3.62 0.435 1225 +1227 4 65.79 126.35 -4.59 0.435 1226 +1228 4 69.02 127.72 -6.04 0.435 1227 +1229 4 72.83 127.0 -6.53 0.435 1228 +1230 4 77.43 127.39 -7.0 0.435 1229 +1231 4 81.36 128.35 -7.33 0.435 1230 +1232 4 84.07 129.01 -7.82 0.435 1231 +1233 4 86.66 128.58 -8.11 0.435 1232 +1234 4 88.95 128.75 -8.3 0.435 1233 +1235 4 90.32 128.61 -8.44 0.435 1234 +1236 4 -6.92 93.64 8.6 1.3 1190 +1237 4 -6.7 94.03 9.3 1.3 1236 +1238 4 -7.6 95.22 9.65 1.3 1237 +1239 4 -8.01 95.74 9.74 1.3 1238 +1240 4 -6.77 95.72 9.93 0.435 1239 +1241 4 -6.3 95.85 10.13 0.435 1240 +1242 4 -5.99 96.17 10.13 0.435 1241 +1243 4 -5.56 96.37 9.72 0.435 1242 +1244 4 -5.11 96.52 9.7 0.435 1243 +1245 4 -3.65 97.2 9.02 0.435 1244 +1246 4 -3.22 96.78 8.64 0.435 1245 +1247 4 -1.59 96.69 7.95 0.435 1246 +1248 4 0.06 96.27 7.54 0.435 1247 +1249 4 0.75 95.59 6.65 0.435 1248 +1250 4 1.95 94.41 6.19 0.435 1249 +1251 4 3.43 93.55 5.52 0.435 1250 +1252 4 4.94 93.58 5.16 0.435 1251 +1253 4 6.69 93.67 4.25 0.435 1252 +1254 4 7.39 93.9 3.52 0.435 1253 +1255 4 7.55 94.05 1.94 0.435 1254 +1256 4 7.86 93.75 1.95 0.435 1255 +1257 4 8.62 93.6 1.87 0.435 1256 +1258 4 8.47 93.76 0.24 0.435 1257 +1259 4 8.55 93.69 -0.6 0.435 1258 +1260 4 8.65 93.28 -1.17 0.435 1259 +1261 4 8.86 93.09 -2.27 0.435 1260 +1262 4 9.6 92.98 -2.73 0.435 1261 +1263 4 10.35 92.85 -2.97 0.435 1262 +1264 4 11.04 93.07 -3.62 0.435 1263 +1265 4 12.22 92.49 0.75 0.435 1264 +1266 4 12.37 91.72 0.66 0.435 1265 +1267 4 12.64 91.46 0.24 0.435 1266 +1268 4 12.07 91.13 -1.02 0.435 1267 +1269 4 12.68 90.22 -1.24 0.435 1268 +1270 4 13.27 89.64 -1.58 0.435 1269 +1271 4 13.77 88.24 -2.98 0.435 1270 +1272 4 14.83 87.19 -3.25 0.435 1271 +1273 4 15.9 86.75 -3.39 0.435 1272 +1274 4 16.34 85.41 -3.71 0.435 1273 +1275 4 16.74 84.41 -4.6 0.435 1274 +1276 4 17.49 83.36 -4.85 0.435 1275 +1277 4 17.74 82.52 -5.71 0.435 1276 +1278 4 17.35 81.99 -6.48 0.435 1277 +1279 4 16.73 81.39 -6.71 0.435 1278 +1280 4 16.61 80.62 -8.14 0.435 1279 +1281 4 16.89 79.13 -8.68 0.435 1280 +1282 4 17.51 77.92 -8.85 0.435 1281 +1283 4 17.9 76.92 -9.67 0.435 1282 +1284 4 18.34 75.89 -10.12 0.435 1283 +1285 4 18.93 75.3 -10.39 0.435 1284 +1286 4 19.68 75.17 -10.54 0.435 1285 +1287 4 20.75 75.34 -10.7 0.435 1286 +1288 4 21.77 74.33 -11.35 0.435 1287 +1289 4 22.35 73.44 -11.79 0.435 1288 +1290 4 22.45 73.35 -12.41 0.435 1289 +1291 4 22.72 71.88 -13.03 0.435 1290 +1292 4 23.1 69.68 -14.19 0.435 1291 +1293 4 24.33 68.48 -14.42 0.435 1292 +1294 4 24.92 67.6 -14.79 0.435 1293 +1295 4 26.7 66.45 -15.59 0.435 1294 +1296 4 27.74 64.82 -16.14 0.435 1295 +1297 4 30.33 61.95 -16.75 0.435 1296 +1298 4 32.47 60.45 -17.09 0.435 1297 +1299 4 33.38 59.54 -17.26 0.435 1298 +1300 4 35.28 56.77 -18.68 0.435 1299 +1301 4 35.84 55.31 -19.42 0.435 1300 +1302 4 36.6 54.26 -19.66 0.435 1301 +1303 4 37.2 53.36 -19.88 0.435 1302 +1304 4 37.67 52.92 -19.97 0.435 1303 +1305 4 38.06 52.53 -20.8 0.435 1304 +1306 4 38.49 52.1 -21.18 0.435 1305 +1307 4 -8.0 96.22 10.54 1.3 1239 +1308 4 -8.91 97.42 10.82 1.3 1307 +1309 4 -10.54 98.52 11.08 1.3 1308 +1310 4 -11.37 99.05 12.03 0.54 1309 +1311 4 -12.45 99.8 12.2 0.54 1310 +1312 4 -13.21 100.55 12.35 0.54 1311 +1313 4 -14.17 100.6 11.92 0.54 1312 +1314 4 -15.54 101.05 12.01 0.54 1313 +1315 4 -16.17 102.27 12.04 0.54 1314 +1316 4 -17.05 103.14 12.59 0.54 1315 +1317 4 -19.02 105.37 13.29 0.54 1316 +1318 4 -19.32 106.29 13.4 0.54 1317 +1319 4 -19.78 107.34 13.55 0.54 1318 +1320 4 -20.55 109.01 13.79 0.54 1319 +1321 4 -20.8 108.95 14.41 0.54 1320 +1322 4 -21.56 109.39 14.52 0.54 1321 +1323 4 -22.61 109.53 14.7 0.54 1322 +1324 4 -23.57 109.86 14.45 0.54 1323 +1325 4 -24.08 110.37 13.94 0.54 1324 +1326 4 -23.72 112.15 13.02 0.54 1325 +1327 4 -24.34 112.46 13.03 0.54 1326 +1328 4 -25.41 113.81 13.26 0.54 1327 +1329 4 -26.93 116.54 13.67 0.54 1328 +1330 4 -27.6 119.31 13.54 0.54 1329 +1331 4 -27.31 120.86 13.51 0.54 1330 +1332 4 -26.83 122.22 12.17 0.54 1331 +1333 4 -27.15 123.13 12.22 0.54 1332 +1334 4 -28.01 125.51 11.47 0.54 1333 +1335 4 -27.85 127.77 10.24 0.54 1334 +1336 4 -28.01 129.17 8.65 0.54 1335 +1337 4 -28.25 130.01 7.85 0.54 1336 +1338 4 -29.16 130.9 8.1 0.54 1337 +1339 4 -30.38 132.72 8.38 0.54 1338 +1340 4 -30.99 133.33 6.83 0.54 1339 +1341 4 -32.18 136.02 6.0 0.54 1340 +1342 4 -33.32 138.37 5.49 0.54 1341 +1343 4 -33.63 140.51 5.67 0.54 1342 +1344 4 -35.17 143.23 6.07 0.54 1343 +1345 4 -35.5 145.38 6.08 0.54 1344 +1346 4 -35.76 148.97 5.47 0.54 1345 +1347 4 -35.49 152.03 5.45 0.54 1346 +1348 4 -35.46 155.97 4.54 0.54 1347 +1349 4 -36.39 158.7 4.9 0.54 1348 +1350 4 -37.16 162.49 5.33 0.54 1349 +1351 4 -38.67 165.51 4.26 0.54 1350 +1352 4 -40.46 167.59 3.49 0.54 1351 +1353 4 -40.73 169.07 2.37 0.54 1352 +1354 4 -41.1 170.05 1.83 0.54 1353 +1355 4 -42.23 171.76 1.5 0.54 1354 +1356 4 -43.65 173.48 1.26 0.54 1355 +1357 4 -44.41 174.23 1.4 0.54 1356 +1358 4 -44.59 175.64 -0.4 0.54 1357 +1359 4 -44.76 177.91 -0.16 0.54 1358 +1360 4 -44.15 180.04 -0.01 0.54 1359 +1361 4 -43.85 182.49 0.19 0.54 1360 +1362 4 -44.5 184.95 0.18 0.54 1361 +1363 4 -45.07 187.94 -0.59 0.54 1362 +1364 4 -44.92 190.53 -1.94 0.54 1363 +1365 4 -44.75 191.57 -0.05 0.54 1364 +1366 4 -45.06 191.87 -0.06 0.54 1365 +1367 4 -44.43 192.47 0.09 0.54 1366 +1368 4 -46.08 176.81 1.81 0.54 1357 +1369 4 -49.45 181.64 1.0 0.54 1368 +1370 4 -50.39 182.55 2.54 0.54 1369 +1371 4 -52.84 184.97 3.01 0.54 1370 +1372 4 -54.24 188.18 3.14 0.54 1371 +1373 4 -10.13 99.23 11.11 1.19 1309 +1374 4 -10.86 100.86 11.71 1.08 1373 +1375 4 -10.7 100.97 11.71 1.08 1374 +1376 4 -11.55 100.89 12.54 0.54 1375 +1377 4 -12.46 101.19 12.65 0.54 1376 +1378 4 -13.07 101.79 12.77 0.54 1377 +1379 4 -13.83 102.54 12.91 0.54 1378 +1380 4 -14.44 103.15 13.02 0.54 1379 +1381 4 -15.2 104.51 13.22 0.54 1380 +1382 4 -15.97 106.78 13.51 0.54 1381 +1383 4 -15.22 108.15 13.58 0.54 1382 +1384 4 -15.22 109.07 13.67 0.54 1383 +1385 4 -15.45 110.22 12.9 0.54 1384 +1386 4 -16.38 111.13 13.0 0.54 1385 +1387 4 -17.15 112.5 13.2 0.54 1386 +1388 4 -18.07 114.61 13.5 0.54 1387 +1389 4 -18.84 116.58 13.76 0.54 1388 +1390 4 -19.91 119.16 14.11 0.54 1389 +1391 4 -20.09 122.07 14.18 0.54 1390 +1392 4 -20.92 123.8 13.74 0.54 1391 +1393 4 -21.25 125.64 13.81 0.54 1392 +1394 4 -22.16 128.37 14.07 0.54 1393 +1395 4 -23.4 130.48 14.39 0.54 1394 +1396 4 -24.92 133.22 14.8 0.54 1395 +1397 4 -26.92 135.79 15.17 0.54 1396 +1398 4 -29.09 138.84 15.37 0.54 1397 +1399 4 -29.71 140.97 15.55 0.54 1398 +1400 4 -31.13 144.79 15.68 0.54 1399 +1401 4 -31.29 147.39 15.86 0.54 1400 +1402 4 -32.47 150.38 15.14 0.54 1401 +1403 4 -33.09 152.81 15.43 0.54 1402 +1404 4 -32.94 154.79 15.61 0.54 1403 +1405 4 -34.16 155.99 15.84 0.54 1404 +1406 4 -35.44 156.94 15.45 0.54 1405 +1407 4 -36.97 157.54 15.58 0.54 1406 +1408 4 -38.05 158.61 15.78 0.54 1407 +1409 4 -38.2 160.89 16.01 0.54 1408 +1410 4 -39.55 162.96 16.26 0.54 1409 +1411 4 -39.86 165.09 16.5 0.54 1410 +1412 4 -40.93 167.05 16.78 0.54 1411 +1413 4 -42.35 169.06 16.59 0.54 1412 +1414 4 -43.42 171.33 16.91 0.54 1413 +1415 4 -44.51 173.92 17.18 0.54 1414 +1416 4 -44.51 175.75 17.36 0.54 1415 +1417 4 -45.66 179.31 16.98 0.54 1416 +1418 4 -46.89 181.43 17.31 0.54 1417 +1419 4 -48.12 185.38 17.72 0.54 1418 +1420 4 -48.44 189.33 18.14 0.54 1419 +1421 4 -49.21 191.61 18.43 0.54 1420 +1422 4 -49.37 193.89 18.67 0.54 1421 +1423 4 -48.8 196.05 18.52 0.54 1422 +1424 4 -48.59 197.98 17.64 0.54 1423 +1425 4 -49.06 199.95 17.8 0.54 1424 +1426 4 -49.67 201.17 17.98 0.54 1425 +1427 4 -49.29 205.94 17.8 0.54 1426 +1428 4 -50.12 208.29 17.43 0.54 1427 +1429 4 -50.05 209.74 16.66 0.54 1428 +1430 4 -50.52 211.72 16.81 0.54 1429 +1431 4 -51.59 214.3 17.16 0.54 1430 +1432 4 -51.95 216.77 16.99 0.54 1431 +1433 4 -51.85 218.19 16.59 0.54 1432 +1434 4 -51.41 220.79 16.73 0.54 1433 +1435 4 -51.44 221.73 16.52 0.54 1434 +1436 4 -51.19 223.31 16.04 0.54 1435 +1437 4 -10.4 102.22 11.88 1.08 1375 +1438 4 -9.64 102.99 11.89 1.08 1437 +1439 4 -8.89 104.97 12.08 1.08 1438 +1440 4 -8.74 106.95 12.26 1.08 1439 +1441 4 -8.24 109.18 12.96 0.975 1440 +1442 4 -7.33 111.62 13.19 0.975 1441 +1443 4 -7.03 112.84 13.28 0.975 1442 +1444 4 -6.11 112.65 14.32 0.65 1443 +1445 4 -5.35 112.5 14.23 0.65 1444 +1446 4 -4.89 112.05 14.15 0.65 1445 +1447 4 -5.04 110.98 14.06 0.65 1446 +1448 4 -4.58 109.62 13.89 0.435 1447 +1449 4 -3.51 108.26 13.65 0.435 1448 +1450 4 -2.19 106.34 12.81 0.435 1449 +1451 4 -1.4 105.26 12.86 0.435 1450 +1452 4 -0.76 104.63 13.11 0.54 1451 +1453 4 0.21 103.36 13.59 0.54 1452 +1454 4 0.57 102.09 13.96 0.54 1453 +1455 4 1.41 100.65 14.64 0.54 1454 +1456 4 1.88 99.27 14.47 0.54 1455 +1457 4 2.21 98.33 14.65 0.54 1456 +1458 4 2.57 97.38 15.13 0.54 1457 +1459 4 2.89 96.46 15.08 0.54 1458 +1460 4 3.2 95.23 15.0 0.54 1459 +1461 4 3.81 94.63 14.89 0.54 1460 +1462 4 5.05 92.81 14.75 0.54 1461 +1463 4 5.54 92.32 14.96 0.54 1462 +1464 4 6.32 90.95 14.91 0.54 1463 +1465 4 6.78 89.56 14.89 0.54 1464 +1466 4 7.3 88.75 15.36 0.54 1465 +1467 4 7.46 88.3 15.37 0.54 1466 +1468 4 -7.18 114.81 13.56 0.975 1443 +1469 4 -8.4 116.92 13.89 0.975 1468 +1470 4 -9.63 119.35 14.24 0.975 1469 +1471 4 -11.16 122.06 14.65 0.975 1470 +1472 4 -11.68 123.48 15.96 0.975 1471 +1473 4 -12.43 124.23 16.1 0.975 1472 +1474 4 -12.83 124.88 16.2 0.975 1473 +1475 4 -12.98 124.12 14.48 0.54 1474 +1476 4 -13.43 123.36 14.45 0.54 1475 +1477 4 -13.12 122.14 14.29 0.54 1476 +1478 4 -12.82 121.54 14.21 0.435 1477 +1479 4 -13.12 120.02 14.09 0.435 1478 +1480 4 -13.12 119.41 14.03 0.435 1479 +1481 4 -13.11 118.19 13.92 0.435 1480 +1482 4 -13.12 116.97 13.79 0.435 1481 +1483 4 -12.96 116.52 13.73 0.435 1482 +1484 4 -12.65 115.62 13.62 0.435 1483 +1485 4 -12.49 115.15 13.56 0.435 1484 +1486 4 -13.5 126.51 16.42 0.975 1474 +1487 4 -14.27 128.76 16.8 0.975 1486 +1488 4 -14.12 131.35 17.03 0.975 1487 +1489 4 -13.67 132.73 17.12 0.975 1488 +1490 4 -12.92 135.01 17.28 0.975 1489 +1491 4 -13.22 136.23 17.43 1.08 1490 +1492 4 -13.7 139.11 17.76 1.08 1491 +1493 4 -13.55 141.09 17.93 1.08 1492 +1494 4 -14.31 142.46 18.13 1.08 1493 +1495 4 -15.08 144.43 18.4 1.08 1494 +1496 4 -15.85 146.39 18.66 1.08 1495 +1497 4 -16.31 147.77 18.84 1.08 1496 +1498 4 -16.16 150.04 19.05 1.08 1497 +1499 4 -14.95 150.66 19.0 1.08 1498 +1500 4 -13.58 151.74 18.97 1.08 1499 +1501 4 -13.12 152.8 19.03 1.08 1500 +1502 4 -12.97 154.78 19.29 1.08 1501 +1503 4 -11.31 158.28 19.47 1.08 1502 +1504 4 -11.32 162.24 19.86 1.08 1503 +1505 4 -10.83 162.78 19.87 1.08 1504 +1506 4 -11.36 162.68 20.73 0.65 1505 +1507 4 -11.81 163.75 20.88 0.65 1506 +1508 4 -12.24 164.17 21.34 0.65 1507 +1509 4 -12.68 164.59 21.64 0.65 1508 +1510 4 -13.29 164.59 21.63 0.65 1509 +1511 4 -13.7 165.61 22.23 0.65 1510 +1512 4 -14.28 166.17 22.79 0.65 1511 +1513 4 -14.49 166.37 23.89 0.65 1512 +1514 4 -14.78 168.17 24.39 0.65 1513 +1515 4 -15.17 169.17 23.53 0.435 1514 +1516 4 -15.63 170.83 23.82 0.435 1515 +1517 4 -15.93 172.06 22.23 0.435 1516 +1518 4 -16.16 172.88 21.58 0.435 1517 +1519 4 -16.22 174.47 21.2 0.435 1518 +1520 4 -16.27 176.03 20.83 0.54 1519 +1521 4 -16.43 178.01 21.05 0.54 1520 +1522 4 -16.93 179.72 20.8 0.54 1521 +1523 4 -17.55 181.55 20.96 0.54 1522 +1524 4 -18.77 183.36 21.25 0.54 1523 +1525 4 -18.47 185.5 21.43 0.54 1524 +1526 4 -17.72 187.48 21.55 0.54 1525 +1527 4 -18.03 189.0 21.73 0.54 1526 +1528 4 -19.3 191.46 21.63 0.54 1527 +1529 4 -18.91 193.2 21.09 0.54 1528 +1530 4 -18.65 195.37 20.9 0.54 1529 +1531 4 -18.39 198.45 20.79 0.54 1530 +1532 4 -19.05 201.54 20.63 0.54 1531 +1533 4 -19.92 203.6 19.93 0.54 1532 +1534 4 -20.71 205.91 19.86 0.54 1533 +1535 4 -21.75 208.16 18.88 0.54 1534 +1536 4 -21.61 209.84 18.95 0.54 1535 +1537 4 -22.45 211.58 18.37 0.54 1536 +1538 4 -24.56 213.98 17.36 0.54 1537 +1539 4 -26.24 215.33 17.65 0.54 1538 +1540 4 -27.77 216.85 17.94 0.54 1539 +1541 4 -29.3 218.97 18.28 0.54 1540 +1542 4 -31.19 220.23 17.83 0.54 1541 +1543 4 -33.94 222.94 18.35 0.54 1542 +1544 4 -35.63 224.61 18.58 0.54 1543 +1545 4 -36.53 226.41 17.41 0.54 1544 +1546 4 -37.71 229.4 16.6 0.54 1545 +1547 4 -38.66 230.29 16.7 0.54 1546 +1548 4 -39.74 231.03 16.87 0.54 1547 +1549 4 -40.73 232.02 16.22 0.54 1548 +1550 4 -40.98 234.4 15.51 0.54 1549 +1551 4 -41.28 237.74 14.26 0.54 1550 +1552 4 -42.13 239.8 13.65 0.54 1551 +1553 4 -41.6 241.71 12.87 0.54 1552 +1554 4 -41.19 243.74 12.65 0.54 1553 +1555 4 -41.33 245.7 11.34 0.54 1554 +1556 4 -42.81 248.37 10.68 0.54 1555 +1557 4 -43.38 251.37 9.9 0.54 1556 +1558 4 -44.94 256.24 10.29 0.54 1557 +1559 4 -45.75 259.78 10.26 0.54 1558 +1560 4 -46.31 261.56 9.27 0.54 1559 +1561 4 -46.66 264.63 9.37 0.54 1560 +1562 4 -46.86 266.34 9.03 0.54 1561 +1563 4 -47.79 269.09 9.24 0.54 1562 +1564 4 -48.3 273.22 9.38 0.54 1563 +1565 4 -48.53 275.89 8.76 0.54 1564 +1566 4 -49.27 277.53 8.83 0.54 1565 +1567 4 -11.65 164.37 20.09 1.08 1505 +1568 4 -11.89 164.43 20.12 1.08 1567 +1569 4 -11.64 167.11 20.37 1.08 1568 +1570 4 -11.65 169.85 20.63 0.865 1569 +1571 4 -11.81 173.65 21.02 0.865 1570 +1572 4 -11.53 177.92 21.41 0.865 1571 +1573 4 -11.39 180.56 21.73 0.975 1572 +1574 4 -10.79 183.0 21.92 0.975 1573 +1575 4 -10.02 185.58 22.09 0.975 1574 +1576 4 -9.42 188.02 22.28 0.975 1575 +1577 4 -11.12 192.11 22.84 0.975 1576 +1578 4 -11.1 193.92 23.23 0.975 1577 +1579 4 -12.33 196.94 23.64 0.975 1578 +1580 4 -13.26 199.97 24.02 0.975 1579 +1581 4 -13.87 202.4 24.39 1.08 1580 +1582 4 -13.72 205.59 24.7 1.08 1581 +1583 4 -13.93 207.02 24.32 1.08 1582 +1584 4 -12.94 206.93 25.95 0.54 1583 +1585 4 -12.18 207.4 25.86 0.54 1584 +1586 4 -11.91 207.12 27.17 0.54 1585 +1587 4 -10.96 207.38 27.57 0.54 1586 +1588 4 -9.48 207.43 28.64 0.65 1587 +1589 4 -8.25 208.04 28.81 0.65 1588 +1590 4 -6.69 208.91 29.13 0.65 1589 +1591 4 -4.35 209.96 29.62 0.65 1590 +1592 4 -1.76 211.63 29.7 0.65 1591 +1593 4 1.57 213.79 29.6 0.65 1592 +1594 4 5.23 215.65 29.52 0.65 1593 +1595 4 8.0 217.15 29.86 0.65 1594 +1596 4 9.85 218.04 30.15 0.65 1595 +1597 4 10.79 218.33 30.33 0.65 1596 +1598 4 12.77 219.72 30.28 0.65 1597 +1599 4 14.44 221.11 30.33 0.65 1598 +1600 4 15.07 222.0 29.01 0.65 1599 +1601 4 15.08 221.98 29.16 0.65 1600 +1602 4 15.85 222.44 29.13 0.65 1601 +1603 4 15.8 222.5 28.61 0.65 1602 +1604 4 16.63 222.9 27.66 0.65 1603 +1605 4 16.85 223.59 26.8 0.65 1604 +1606 4 17.56 224.1 26.26 0.65 1605 +1607 4 17.52 224.53 26.3 0.65 1606 +1608 4 18.05 224.3 27.14 0.54 1607 +1609 4 18.36 224.0 27.0 0.54 1608 +1610 4 18.75 223.6 27.91 0.54 1609 +1611 4 19.28 223.68 28.78 0.54 1610 +1612 4 19.95 223.62 29.31 0.54 1611 +1613 4 20.91 223.89 29.78 0.54 1612 +1614 4 21.74 224.28 30.42 0.54 1613 +1615 4 22.2 224.73 30.51 0.54 1614 +1616 4 22.58 224.35 31.34 0.54 1615 +1617 4 22.5 225.33 32.27 0.54 1616 +1618 4 22.65 226.7 32.39 0.54 1617 +1619 4 22.5 227.76 32.58 0.54 1618 +1620 4 22.13 228.12 33.63 0.54 1619 +1621 4 21.74 228.49 34.46 0.54 1620 +1622 4 22.51 230.77 34.77 0.435 1621 +1623 4 23.87 233.07 34.86 0.435 1622 +1624 4 24.09 234.37 35.65 0.435 1623 +1625 4 23.78 237.4 36.05 0.435 1624 +1626 4 23.93 239.37 36.31 0.435 1625 +1627 4 24.38 241.05 36.42 0.435 1626 +1628 4 24.35 243.21 36.34 0.435 1627 +1629 4 24.32 245.05 36.3 0.435 1628 +1630 4 24.27 248.13 36.29 0.435 1629 +1631 4 24.72 251.63 36.53 0.435 1630 +1632 4 25.42 255.5 36.24 0.435 1631 +1633 4 25.34 256.48 35.58 0.435 1632 +1634 4 24.67 258.68 35.17 0.435 1633 +1635 4 25.39 260.99 35.03 0.435 1634 +1636 4 26.22 264.73 34.48 0.435 1635 +1637 4 27.38 266.0 34.05 0.435 1636 +1638 4 28.74 268.61 34.1 0.435 1637 +1639 4 27.51 271.35 34.41 0.435 1638 +1640 4 26.51 273.54 33.88 0.54 1639 +1641 4 25.68 274.37 33.29 0.54 1640 +1642 4 25.67 275.29 33.3 0.54 1641 +1643 4 24.52 224.25 32.36 0.54 1616 +1644 4 25.58 225.03 32.34 0.54 1643 +1645 4 26.86 225.88 32.98 0.54 1644 +1646 4 27.65 227.83 33.4 0.54 1645 +1647 4 27.64 230.27 33.72 0.54 1646 +1648 4 27.35 231.76 34.04 0.54 1647 +1649 4 28.88 232.96 34.32 0.54 1648 +1650 4 29.8 233.58 34.3 0.54 1649 +1651 4 30.74 234.17 34.64 0.54 1650 +1652 4 31.12 234.08 35.5 0.54 1651 +1653 4 32.67 234.68 35.64 0.54 1652 +1654 4 35.62 235.72 36.07 0.54 1653 +1655 4 36.39 236.46 36.23 0.54 1654 +1656 4 36.88 238.11 36.8 0.54 1655 +1657 4 37.07 240.02 37.57 0.54 1656 +1658 4 38.75 242.32 37.72 0.54 1657 +1659 4 40.57 244.76 37.86 0.54 1658 +1660 4 42.41 245.96 38.05 0.54 1659 +1661 4 46.98 248.44 37.87 0.54 1660 +1662 4 50.48 250.76 37.84 0.54 1661 +1663 4 53.24 252.27 38.04 0.54 1662 +1664 4 55.08 252.88 38.08 0.54 1663 +1665 4 56.44 253.65 38.02 0.54 1664 +1666 4 58.12 254.42 38.02 0.54 1665 +1667 4 59.18 255.19 38.0 0.54 1666 +1668 4 19.34 225.08 25.73 0.435 1607 +1669 4 21.17 226.01 25.66 0.435 1668 +1670 4 22.34 226.98 25.19 0.435 1669 +1671 4 23.82 227.94 24.69 0.54 1670 +1672 4 26.39 231.16 24.77 0.54 1671 +1673 4 28.48 232.75 24.27 0.54 1672 +1674 4 30.77 232.92 24.09 0.54 1673 +1675 4 32.74 232.18 23.83 0.54 1674 +1676 4 36.09 232.51 23.55 0.54 1675 +1677 4 38.92 233.14 23.2 0.435 1676 +1678 4 43.64 234.84 22.93 0.435 1677 +1679 4 47.43 237.48 22.84 0.435 1678 +1680 4 49.28 238.68 21.43 0.54 1679 +1681 4 51.85 241.3 21.44 0.54 1680 +1682 4 53.21 245.11 21.69 0.54 1681 +1683 4 53.26 248.1 20.92 0.54 1682 +1684 4 53.55 250.24 21.03 0.54 1683 +1685 4 55.83 253.76 21.16 0.54 1684 +1686 4 57.48 256.67 21.29 0.54 1685 +1687 4 57.79 257.58 21.36 0.54 1686 +1688 4 57.93 261.07 21.68 0.54 1687 +1689 4 59.6 263.37 21.75 0.54 1688 +1690 4 60.48 264.32 21.46 0.54 1689 +1691 4 62.1 265.14 20.85 0.54 1690 +1692 4 63.89 264.6 20.18 0.54 1691 +1693 4 65.71 264.63 20.01 0.54 1692 +1694 4 -14.08 209.9 24.62 1.08 1583 +1695 4 -13.95 213.4 24.94 1.08 1694 +1696 4 -13.35 216.14 25.16 1.08 1695 +1697 4 -13.66 218.28 25.39 1.08 1696 +1698 4 -15.03 220.84 25.77 1.08 1697 +1699 4 -16.41 222.8 26.09 1.08 1698 +1700 4 -17.17 224.47 26.32 1.08 1699 +1701 4 -17.34 227.36 26.62 1.08 1700 +1702 4 -17.19 231.16 26.98 1.08 1701 +1703 4 -16.75 234.36 27.25 1.08 1702 +1704 4 -17.18 237.23 26.29 1.08 1703 +1705 4 -17.48 239.02 26.71 1.08 1704 +1706 4 -18.11 240.86 26.64 1.08 1705 +1707 4 -18.39 242.66 25.57 1.08 1706 +1708 4 -19.02 243.14 26.35 0.65 1707 +1709 4 -20.33 243.83 25.56 0.65 1708 +1710 4 -21.29 244.15 26.89 0.65 1709 +1711 4 -21.74 243.98 28.65 0.65 1710 +1712 4 -23.19 244.51 29.59 0.65 1711 +1713 4 -26.02 245.48 30.62 0.65 1712 +1714 4 -27.69 246.81 31.06 0.65 1713 +1715 4 -30.05 248.52 32.35 0.65 1714 +1716 4 -31.28 249.74 32.58 0.65 1715 +1717 4 -32.6 251.04 33.28 0.65 1716 +1718 4 -34.58 253.61 33.8 0.65 1717 +1719 4 -36.41 254.2 34.03 0.65 1718 +1720 4 -39.15 255.38 34.46 0.65 1719 +1721 4 -41.74 257.03 34.86 0.65 1720 +1722 4 -44.48 258.52 35.26 0.65 1721 +1723 4 -46.01 260.03 35.63 0.54 1722 +1724 4 -47.21 260.01 35.74 0.54 1723 +1725 4 -49.35 261.21 36.12 0.54 1724 +1726 4 -51.02 263.16 36.47 0.54 1725 +1727 4 -53.63 266.04 36.99 0.54 1726 +1728 4 -56.67 268.74 37.53 0.54 1727 +1729 4 -58.05 271.32 37.92 0.54 1728 +1730 4 -59.43 274.2 38.32 0.54 1729 +1731 4 -60.5 276.46 38.65 0.54 1730 +1732 4 -61.58 279.35 39.02 0.54 1731 +1733 4 -63.56 280.08 39.28 0.54 1732 +1734 4 -65.24 281.44 39.56 0.54 1733 +1735 4 -67.53 283.39 39.97 0.54 1734 +1736 4 -68.7 284.54 40.79 0.54 1735 +1737 4 -70.06 287.11 41.25 0.54 1736 +1738 4 -70.49 288.73 41.9 0.54 1737 +1739 4 -70.46 290.23 42.35 0.54 1738 +1740 4 -69.8 290.77 43.02 0.54 1739 +1741 4 -69.26 291.15 43.84 0.54 1740 +1742 4 -70.31 292.18 44.26 0.54 1741 +1743 4 -71.52 293.38 44.64 0.54 1742 +1744 4 -71.68 295.35 44.85 0.54 1743 +1745 4 -71.81 296.69 45.29 0.54 1744 +1746 4 -73.02 297.58 45.64 0.54 1745 +1747 4 -74.21 297.85 46.0 0.54 1746 +1748 4 -75.86 299.17 46.58 0.54 1747 +1749 4 -76.45 299.76 46.92 0.54 1748 +1750 4 -77.45 300.75 47.79 0.54 1749 +1751 4 -77.62 301.18 49.51 0.54 1750 +1752 4 -78.53 301.79 49.65 0.54 1751 +1753 4 -78.86 302.11 51.08 0.54 1752 +1754 4 -79.29 302.22 51.51 0.54 1753 +1755 4 -17.79 245.71 25.81 1.08 1707 +1756 4 -17.95 247.99 26.05 1.08 1755 +1757 4 -17.21 249.38 25.88 1.08 1756 +1758 4 -16.46 251.67 26.03 1.08 1757 +1759 4 -16.93 253.35 26.17 1.08 1758 +1760 4 -18.15 255.17 26.46 1.08 1759 +1761 4 -19.82 258.34 25.41 1.08 1760 +1762 4 -20.59 260.91 25.73 1.08 1761 +1763 4 -20.91 263.96 26.06 1.08 1762 +1764 4 -20.63 268.83 26.42 1.08 1763 +1765 4 -20.07 271.27 26.55 1.19 1764 +1766 4 -19.33 274.16 26.75 1.19 1765 +1767 4 -19.33 275.38 26.88 1.19 1766 +1768 4 -19.12 276.58 28.11 0.865 1767 +1769 4 -19.42 278.11 28.28 0.865 1768 +1770 4 -19.72 279.01 28.47 0.865 1769 +1771 4 -20.34 279.62 28.51 0.865 1770 +1772 4 -20.67 280.85 30.11 0.865 1771 +1773 4 -21.56 281.73 30.43 0.865 1772 +1774 4 -21.99 283.36 31.15 0.865 1773 +1775 4 -23.18 284.53 31.67 0.865 1774 +1776 4 -23.79 286.34 31.99 0.865 1775 +1777 4 -25.13 287.66 32.62 0.865 1776 +1778 4 -26.51 289.01 32.88 0.865 1777 +1779 4 -27.87 291.27 33.3 0.865 1778 +1780 4 -28.64 293.86 33.63 0.865 1779 +1781 4 -28.65 296.29 33.86 0.865 1780 +1782 4 -28.8 298.55 34.24 0.865 1781 +1783 4 -28.79 300.07 34.47 0.865 1782 +1784 4 -30.47 303.85 35.07 0.865 1783 +1785 4 -31.85 307.03 35.51 0.865 1784 +1786 4 -32.63 310.21 35.89 0.865 1785 +1787 4 -34.3 312.78 36.3 0.865 1786 +1788 4 -36.6 315.05 36.73 0.865 1787 +1789 4 -37.54 315.89 37.05 0.865 1788 +1790 4 -38.92 318.77 37.46 0.865 1789 +1791 4 -40.3 321.64 37.86 0.865 1790 +1792 4 -42.89 323.29 38.26 0.865 1791 +1793 4 -44.42 326.01 38.68 0.865 1792 +1794 4 -46.11 329.51 39.17 0.865 1793 +1795 4 -47.21 332.39 40.99 0.865 1794 +1796 4 -47.72 334.12 40.59 0.865 1795 +1797 4 -48.34 335.36 38.88 0.865 1796 +1798 4 -49.4 337.62 37.77 0.865 1797 +1799 4 -50.47 338.68 37.9 0.865 1798 +1800 4 -52.63 341.41 38.28 0.865 1799 +1801 4 -54.76 344.73 38.8 0.865 1800 +1802 4 -55.43 349.03 38.75 0.865 1801 +1803 4 -55.94 352.55 38.84 0.865 1802 +1804 4 -55.08 356.27 38.6 0.865 1803 +1805 4 -54.71 359.25 37.95 0.865 1804 +1806 4 -55.34 362.0 38.2 0.865 1805 +1807 4 -54.82 365.14 37.47 0.865 1806 +1808 4 -53.38 368.86 36.95 0.865 1807 +1809 4 -52.37 372.41 36.67 0.865 1808 +1810 4 -51.94 375.04 35.07 0.865 1809 +1811 4 -50.47 378.74 34.92 0.865 1810 +1812 4 -49.98 381.91 33.91 0.865 1811 +1813 4 -50.57 382.78 32.75 0.865 1812 +1814 4 -51.17 383.99 32.93 0.865 1813 +1815 4 -51.52 384.33 32.99 0.435 1814 +1816 4 -51.82 384.93 33.08 0.865 1815 +1817 4 -51.5 387.06 31.89 0.865 1816 +1818 4 -51.65 388.73 32.07 0.865 1817 +1819 4 -52.87 389.93 32.3 0.865 1818 +1820 4 -54.06 390.8 31.21 0.865 1819 +1821 4 -55.81 392.23 30.67 0.865 1820 +1822 4 -55.97 393.0 30.69 0.865 1821 +1823 4 -56.94 395.16 30.47 0.865 1822 +1824 4 -57.4 396.54 30.57 0.865 1823 +1825 4 -57.73 398.37 30.7 1.3 1824 +1826 4 -57.88 400.03 30.89 0.975 1825 +1827 4 -58.48 403.06 29.79 0.975 1826 +1828 4 -58.77 404.3 29.93 0.975 1827 +1829 4 -59.79 404.09 30.46 0.54 1828 +1830 4 -61.01 403.47 30.52 0.54 1829 +1831 4 -62.07 403.92 30.66 0.54 1830 +1832 4 -63.75 404.36 30.86 0.54 1831 +1833 4 -65.44 405.12 31.02 0.54 1832 +1834 4 -66.97 405.74 29.4 0.54 1833 +1835 4 -68.34 407.08 29.66 0.54 1834 +1836 4 -69.56 408.3 29.89 0.54 1835 +1837 4 -70.93 408.73 30.06 0.54 1836 +1838 4 -72.2 409.67 29.88 0.54 1837 +1839 4 -72.78 409.97 28.45 0.54 1838 +1840 4 -73.63 409.59 27.59 0.54 1839 +1841 4 -74.09 409.46 25.81 0.54 1840 +1842 4 -74.35 409.11 24.59 0.54 1841 +1843 4 -74.54 408.99 24.21 0.54 1842 +1844 4 -74.69 408.54 24.18 0.54 1843 +1845 4 -58.94 404.74 29.92 0.975 1828 +1846 4 -58.5 407.04 30.03 0.975 1845 +1847 4 -58.83 408.88 28.42 0.975 1846 +1848 4 -59.16 410.74 26.67 0.975 1847 +1849 4 -60.12 411.68 26.4 0.975 1848 +1850 4 -62.36 413.31 25.56 0.975 1849 +1851 4 -63.03 415.56 24.85 0.975 1850 +1852 4 -63.49 417.54 25.08 0.865 1851 +1853 4 -64.8 419.45 24.42 0.865 1852 +1854 4 -64.81 420.98 22.83 0.865 1853 +1855 4 -64.64 422.34 21.5 0.865 1854 +1856 4 -64.51 423.12 21.34 0.865 1855 +1857 4 -64.07 423.6 21.2 0.865 1856 +1858 4 -64.23 425.88 19.85 0.865 1857 +1859 4 -64.97 427.53 18.64 0.865 1858 +1860 4 -64.91 430.2 17.92 0.865 1859 +1861 4 -65.28 432.71 15.85 0.865 1860 +1862 4 -65.7 433.72 16.59 0.865 1861 +1863 4 -66.37 435.91 16.1 0.865 1862 +1864 4 -66.93 437.69 15.27 0.865 1863 +1865 4 -67.17 439.14 14.53 0.865 1864 +1866 4 -68.16 439.81 13.86 0.865 1865 +1867 4 -69.28 441.53 13.6 0.865 1866 +1868 4 -70.9 442.84 12.82 0.865 1867 +1869 4 -71.75 444.29 12.06 0.865 1868 +1870 4 -72.49 445.63 10.97 0.865 1869 +1871 4 -73.83 446.97 9.79 0.865 1870 +1872 4 -74.39 448.11 9.04 0.865 1871 +1873 4 -75.42 449.76 7.94 0.865 1872 +1874 4 -75.89 450.83 8.01 0.865 1873 +1875 4 -77.1 451.73 8.21 0.865 1874 +1876 4 -78.48 453.7 8.46 0.865 1875 +1877 4 -79.04 456.07 7.75 0.865 1876 +1878 4 -77.54 459.43 7.94 0.865 1877 +1879 4 -75.96 462.44 7.03 0.865 1878 +1880 4 -75.44 465.57 6.45 0.865 1879 +1881 4 -75.68 468.54 5.86 0.865 1880 +1882 4 -75.19 470.47 4.87 0.865 1881 +1883 4 -74.8 472.53 4.29 0.865 1882 +1884 4 -74.42 474.28 3.66 0.865 1883 +1885 4 -74.74 475.39 3.8 0.865 1884 +1886 4 -75.42 475.77 3.06 0.435 1885 +1887 4 -75.88 476.23 3.15 0.435 1886 +1888 4 -76.82 476.55 2.96 0.435 1887 +1889 4 -77.28 476.1 2.81 0.435 1888 +1890 4 -77.61 476.43 2.65 0.54 1889 +1891 4 -79.59 477.17 2.91 0.54 1890 +1892 4 -79.9 478.69 3.08 0.54 1891 +1893 4 -80.67 479.16 1.38 0.54 1892 +1894 4 -81.7 479.26 0.28 0.54 1893 +1895 4 -82.29 479.55 -1.07 0.54 1894 +1896 4 -82.72 479.38 -2.55 0.54 1895 +1897 4 -83.65 479.7 -2.52 0.54 1896 +1898 4 -85.11 480.23 -3.31 0.54 1897 +1899 4 -85.96 480.46 -4.12 0.54 1898 +1900 4 -86.59 481.1 -4.37 0.54 1899 +1901 4 -87.51 481.41 -5.92 0.54 1900 +1902 4 -87.66 481.58 -7.71 0.54 1901 +1903 4 -88.41 482.0 -8.96 0.54 1902 +1904 4 -89.13 482.72 -10.02 0.54 1903 +1905 4 -89.85 483.45 -11.17 0.54 1904 +1906 4 -73.88 475.57 3.05 0.865 1885 +1907 4 -73.79 477.62 2.57 0.865 1906 +1908 4 -73.62 479.27 1.28 0.865 1907 +1909 4 -74.82 481.66 0.33 0.865 1908 +1910 4 -74.93 483.61 -0.73 0.865 1909 +1911 4 -74.02 485.14 -0.67 0.865 1910 +1912 4 -72.32 487.12 -1.93 0.865 1911 +1913 4 -71.11 490.18 -3.4 0.865 1912 +1914 4 -71.5 492.69 -4.03 0.865 1913 +1915 4 -71.93 494.64 -5.08 0.865 1914 +1916 4 -71.81 496.33 -5.15 0.865 1915 +1917 4 -72.31 498.87 -6.06 0.865 1916 +1918 4 -71.64 499.73 -7.03 0.865 1917 +1919 4 -70.64 503.6 -7.28 0.865 1918 +1920 4 -69.15 505.47 -7.6 0.865 1919 +1921 4 -69.42 508.16 -8.46 0.865 1920 +1922 4 -70.29 509.94 -9.33 0.865 1921 +1923 4 -70.46 511.32 -9.41 0.865 1922 +1924 4 -70.53 513.51 -9.87 0.865 1923 +1925 4 -70.27 516.0 -10.1 0.865 1924 +1926 4 -71.33 518.26 -11.23 0.865 1925 +1927 4 -71.95 520.08 -11.07 0.865 1926 +1928 4 -72.93 522.29 -11.58 0.865 1927 +1929 4 -73.88 523.83 -13.25 0.865 1928 +1930 4 -73.89 525.66 -13.14 0.865 1929 +1931 4 -73.9 529.32 -14.44 0.865 1930 +1932 4 -73.97 529.39 -15.19 0.865 1931 +1933 4 -73.61 531.16 -16.03 0.865 1932 +1934 4 -73.7 533.69 -16.76 0.865 1933 +1935 4 -73.7 535.51 -18.1 0.865 1934 +1936 4 -73.96 537.29 -19.03 0.865 1935 +1937 4 -74.53 539.99 -19.92 0.865 1936 +1938 4 -74.15 542.65 -20.53 0.865 1937 +1939 4 -72.95 545.1 -20.4 0.865 1938 +1940 4 -72.42 548.52 -20.86 0.865 1939 +1941 4 -71.81 551.27 -22.32 0.865 1940 +1942 4 -70.81 554.24 -22.81 0.865 1941 +1943 4 -70.18 556.94 -23.82 0.865 1942 +1944 4 -68.51 558.96 -25.51 0.865 1943 +1945 4 -67.91 560.48 -25.41 0.865 1944 +1946 4 -66.61 561.93 -26.07 0.865 1945 +1947 4 -65.91 563.36 -26.6 0.865 1946 +1948 4 -65.22 566.04 -27.24 0.865 1947 +1949 4 -65.31 567.95 -27.88 0.865 1948 +1950 4 -65.54 570.59 -28.28 0.865 1949 +1951 4 -66.56 574.04 -28.98 0.865 1950 +1952 4 -67.53 578.34 -29.0 0.865 1951 +1953 4 -68.36 581.65 -28.75 0.865 1952 +1954 4 -68.66 585.6 -28.34 0.865 1953 +1955 4 -68.84 588.5 -28.19 0.865 1954 +1956 4 -69.31 591.09 -27.98 0.865 1955 +1957 4 -70.14 594.33 -28.18 0.865 1956 +1958 4 -70.38 596.7 -28.84 0.865 1957 +1959 4 -70.16 598.92 -29.55 0.865 1958 +1960 4 -69.48 600.67 -30.2 0.865 1959 +1961 4 -68.03 601.97 -30.88 0.865 1960 +1962 4 -67.78 602.91 -30.89 0.54 1961 +1963 4 -66.57 605.06 -30.8 0.54 1962 +1964 4 -66.17 605.58 -31.46 0.54 1963 +1965 4 -65.24 606.49 -32.89 0.54 1964 +1966 4 -63.43 608.04 -33.05 0.54 1965 +1967 4 -62.07 608.82 -33.11 0.54 1966 +1968 4 -59.79 609.9 -33.21 0.54 1967 +1969 4 -58.44 610.39 -33.51 0.54 1968 +1970 4 -56.47 611.48 -33.66 0.54 1969 +1971 4 -54.88 612.34 -34.57 0.54 1970 +1972 4 -54.03 612.73 -35.37 0.54 1971 +1973 4 -53.88 612.57 -35.39 0.54 1972 +1974 4 -54.3 613.0 -36.6 0.435 1973 +1975 4 -54.77 613.47 -36.66 0.435 1974 +1976 4 -55.42 613.78 -36.87 0.435 1975 +1977 4 -54.82 614.42 -37.02 0.435 1976 +1978 4 -55.23 614.83 -38.06 0.435 1977 +1979 4 -54.75 615.58 -39.47 0.435 1978 +1980 4 -54.58 616.63 -40.82 0.435 1979 +1981 4 -54.26 617.24 -42.31 0.435 1980 +1982 4 -54.19 617.48 -43.27 0.435 1981 +1983 4 -54.01 617.91 -44.46 0.435 1982 +1984 4 -53.71 618.53 -46.17 0.435 1983 +1985 4 -53.72 619.75 -46.12 0.435 1984 +1986 4 -53.51 621.68 -47.01 0.435 1985 +1987 4 -53.61 623.29 -47.75 0.435 1986 +1988 4 -53.55 625.07 -48.56 0.435 1987 +1989 4 -54.08 626.8 -49.1 0.435 1988 +1990 4 -54.38 628.63 -50.49 0.435 1989 +1991 4 -54.53 630.0 -51.93 0.435 1990 +1992 4 -54.96 632.25 -52.94 0.435 1991 +1993 4 -56.33 633.9 -52.66 0.435 1992 +1994 4 -56.39 634.89 -53.24 0.435 1993 +1995 4 -56.05 635.78 -54.47 0.435 1994 +1996 4 -55.39 636.34 -55.54 0.435 1995 +1997 4 -52.58 613.43 -36.26 0.54 1973 +1998 4 -51.09 614.37 -36.53 0.54 1997 +1999 4 -50.09 615.5 -37.11 0.54 1998 +2000 4 -47.89 617.89 -37.98 0.54 1999 +2001 4 -46.31 618.77 -39.1 0.54 2000 +2002 4 -43.9 620.02 -39.29 0.54 2001 +2003 4 -41.36 621.45 -39.9 0.54 2002 +2004 4 -39.1 623.18 -40.18 0.54 2003 +2005 4 -36.98 625.03 -40.27 0.54 2004 +2006 4 -36.05 626.84 -41.62 0.54 2005 +2007 4 -32.96 629.26 -42.65 0.54 2006 +2008 4 -31.82 631.17 -43.39 0.54 2007 +2009 4 -30.72 634.63 -44.3 0.54 2008 +2010 4 -29.79 636.45 -45.57 0.54 2009 +2011 4 -28.27 637.99 -45.63 0.54 2010 +2012 4 -26.39 639.78 -46.68 0.54 2011 +2013 4 -24.2 640.96 -47.76 0.54 2012 +2014 4 -22.17 641.99 -48.83 0.54 2013 +2015 4 -21.01 642.38 -49.66 0.54 2014 +2016 4 -20.54 642.82 -51.09 0.54 2015 +2017 4 -19.07 644.42 -51.67 0.54 2016 +2018 4 -18.46 645.94 -53.09 0.54 2017 +2019 4 -16.92 649.28 -54.34 0.54 2018 +2020 4 -15.61 651.63 -54.77 0.54 2019 +2021 4 -14.71 653.18 -56.51 0.54 2020 +2022 4 -13.13 656.16 -57.13 0.54 2021 +2023 4 -11.23 657.33 -58.09 0.54 2022 +2024 4 -9.11 658.88 -58.21 0.54 2023 +2025 4 -7.68 660.51 -59.17 0.54 2024 +2026 4 -6.55 662.44 -59.99 0.54 2025 +2027 4 -5.71 664.02 -60.6 0.54 2026 +2028 4 -5.26 665.1 -60.61 0.54 2027 +2029 4 -3.83 667.32 -61.35 0.54 2028 +2030 4 -3.0 668.95 -62.25 0.54 2029 +2031 4 -1.86 672.08 -62.89 0.54 2030 +2032 4 -1.23 674.79 -63.89 0.54 2031 +2033 4 1.18 677.26 -64.02 0.54 2032 +2034 4 4.06 679.87 -64.02 0.54 2033 +2035 4 5.35 680.42 -65.0 0.54 2034 +2036 4 7.82 681.93 -66.22 0.54 2035 +2037 4 10.21 684.13 -66.68 0.54 2036 +2038 4 10.36 684.6 -68.46 0.54 2037 +2039 4 -68.53 604.57 -30.88 0.865 1961 +2040 4 -69.08 609.08 -31.45 0.865 2039 +2041 4 -69.0 614.17 -31.57 0.865 2040 +2042 4 -68.42 616.32 -31.57 0.865 2041 +2043 4 -67.21 619.67 -31.35 0.865 2042 +2044 4 -66.84 625.07 -31.61 0.865 2043 +2045 4 -67.06 630.75 -31.56 0.865 2044 +2046 4 -66.61 633.94 -31.3 0.865 2045 +2047 4 -66.46 637.44 -30.97 0.865 2046 +2048 4 -65.59 640.58 -30.89 0.54 2047 +2049 4 -65.91 644.53 -30.47 0.54 2048 +2050 4 -64.24 649.25 -30.18 0.54 2049 +2051 4 -62.58 652.77 -29.98 0.54 2050 +2052 4 -61.12 655.25 -28.66 0.54 2051 +2053 4 -59.15 659.67 -28.34 0.54 2052 +2054 4 -56.11 663.66 -28.23 0.54 2053 +2055 4 -53.24 668.4 -28.03 0.54 2054 +2056 4 -51.27 673.13 -27.75 0.54 2055 +2057 4 -50.07 679.22 -27.27 0.54 2056 +2058 4 -49.03 684.55 -26.77 0.54 2057 +2059 4 -48.58 689.26 -26.35 0.54 2058 +2060 4 -47.95 693.21 -25.72 0.54 2059 +2061 4 -47.12 696.32 -26.25 0.54 2060 +2062 4 -45.22 698.92 -28.14 0.54 2061 +2063 4 -43.1 701.08 -28.13 0.54 2062 +2064 4 -42.34 703.36 -27.97 0.54 2063 +2065 4 -40.37 706.27 -27.87 0.54 2064 +2066 4 -38.4 709.47 -27.74 0.54 2065 +2067 4 -36.9 713.44 -27.49 0.54 2066 +2068 4 -35.53 717.56 -27.21 0.54 2067 +2069 4 -34.18 720.16 -27.09 0.54 2068 +2070 4 -30.1 723.41 -25.71 0.54 2069 +2071 4 -26.09 725.2 -25.22 0.54 2070 +2072 4 -22.39 726.69 -24.74 0.54 2071 +2073 4 -19.04 728.84 -24.76 0.54 2072 +2074 4 -17.81 729.46 -24.74 0.54 2073 +2075 4 -15.69 732.52 -24.64 0.54 2074 +2076 4 -14.33 735.11 -24.51 0.54 2075 +2077 4 -13.19 736.11 -23.68 0.54 2076 +2078 4 -11.21 738.41 -23.57 0.54 2077 +2079 4 -9.54 739.49 -23.62 0.54 2078 +2080 4 -7.73 740.42 -23.69 0.54 2079 +2081 4 -17.36 277.69 26.92 1.19 1767 +2082 4 -15.39 280.28 26.99 1.19 2081 +2083 4 -13.39 282.85 25.84 1.19 2082 +2084 4 -11.82 284.96 24.78 1.19 2083 +2085 4 -10.56 287.07 23.65 1.19 2084 +2086 4 -8.93 289.09 23.25 1.19 2085 +2087 4 -8.11 290.11 22.28 1.19 2086 +2088 4 -6.9 291.04 22.26 1.19 2087 +2089 4 -5.65 291.83 23.13 0.755 2088 +2090 4 -4.02 293.26 22.67 0.755 2089 +2091 4 -3.27 294.64 22.73 0.755 2090 +2092 4 -2.78 296.0 21.38 1.08 2091 +2093 4 -1.73 298.6 21.55 1.08 2092 +2094 4 -1.02 300.03 21.09 1.08 2093 +2095 4 -0.04 301.18 20.27 1.08 2094 +2096 4 0.25 302.69 20.4 1.08 2095 +2097 4 0.7 304.37 20.52 1.08 2096 +2098 4 1.14 306.06 20.49 1.08 2097 +2099 4 1.18 307.56 19.43 1.08 2098 +2100 4 1.39 309.18 18.43 1.08 2099 +2101 4 1.89 310.03 17.56 0.755 2100 +2102 4 2.2 310.34 17.63 0.755 2101 +2103 4 3.12 311.24 17.78 0.755 2102 +2104 4 4.06 312.43 18.12 1.08 2103 +2105 4 4.95 313.69 17.94 1.08 2104 +2106 4 5.14 314.72 16.74 1.08 2105 +2107 4 4.92 316.75 16.35 1.08 2106 +2108 4 4.92 318.58 16.53 1.08 2107 +2109 4 4.84 319.58 15.73 1.08 2108 +2110 4 5.23 322.22 15.42 1.08 2109 +2111 4 5.35 324.83 15.36 1.08 2110 +2112 4 5.76 326.25 15.0 1.08 2111 +2113 4 6.0 327.82 14.61 1.08 2112 +2114 4 6.98 329.6 13.71 1.08 2113 +2115 4 7.27 332.96 13.94 1.08 2114 +2116 4 7.1 335.85 14.23 1.08 2115 +2117 4 7.55 338.44 14.45 1.08 2116 +2118 4 7.7 341.33 14.71 0.975 2117 +2119 4 7.32 344.13 14.27 0.975 2118 +2120 4 7.16 346.12 14.47 0.975 2119 +2121 4 5.72 348.74 14.18 0.975 2120 +2122 4 4.94 351.03 14.4 0.865 2121 +2123 4 4.62 354.67 14.78 0.865 2122 +2124 4 5.08 357.26 15.0 0.865 2123 +2125 4 6.28 359.11 14.99 0.865 2124 +2126 4 8.1 360.65 14.98 0.865 2125 +2127 4 9.61 362.79 14.96 0.865 2126 +2128 4 10.51 365.85 15.18 0.865 2127 +2129 4 10.8 370.41 15.6 0.865 2128 +2130 4 11.28 374.18 14.71 0.865 2129 +2131 4 12.49 378.15 14.98 0.865 2130 +2132 4 13.09 380.89 15.2 0.865 2131 +2133 4 14.89 386.39 15.5 0.865 2132 +2134 4 16.25 389.6 15.69 0.865 2133 +2135 4 16.25 392.64 15.98 0.865 2134 +2136 4 17.15 395.08 16.21 0.865 2135 +2137 4 18.52 397.07 16.28 0.865 2136 +2138 4 19.73 399.51 16.41 0.865 2137 +2139 4 20.78 402.41 16.59 0.865 2138 +2140 4 20.61 407.73 17.12 0.865 2139 +2141 4 20.7 411.29 16.79 0.865 2140 +2142 4 20.14 414.87 16.27 0.755 2141 +2143 4 19.98 419.9 16.78 0.755 2142 +2144 4 19.66 422.93 17.11 0.755 2143 +2145 4 18.58 425.81 17.49 0.755 2144 +2146 4 18.43 427.18 17.64 0.755 2145 +2147 4 18.88 429.77 17.85 0.755 2146 +2148 4 17.97 431.28 18.08 0.755 2147 +2149 4 16.43 432.48 18.34 0.755 2148 +2150 4 15.96 433.55 18.34 0.755 2149 +2151 4 16.2 436.36 17.98 0.755 2150 +2152 4 17.27 438.02 18.2 0.755 2151 +2153 4 18.34 440.93 18.45 0.755 2152 +2154 4 18.82 442.56 18.88 0.755 2153 +2155 4 18.97 443.93 19.07 0.755 2154 +2156 4 19.27 447.27 19.44 0.755 2155 +2157 4 19.56 450.62 19.74 0.755 2156 +2158 4 20.19 453.33 20.25 0.755 2157 +2159 4 20.94 455.3 20.45 0.755 2158 +2160 4 21.4 457.6 20.64 0.755 2159 +2161 4 22.46 458.97 20.67 0.755 2160 +2162 4 25.04 462.1 21.2 0.755 2161 +2163 4 26.55 466.07 21.44 0.755 2162 +2164 4 27.91 470.5 21.74 0.755 2163 +2165 4 27.89 473.84 22.08 0.755 2164 +2166 4 27.73 475.52 22.25 0.755 2165 +2167 4 28.04 477.66 23.95 0.54 2166 +2168 4 28.02 479.2 24.02 0.54 2167 +2169 4 29.08 480.27 24.02 0.54 2168 +2170 4 29.8 481.69 23.72 0.54 2169 +2171 4 29.64 483.05 23.79 0.54 2170 +2172 4 29.79 484.42 23.99 0.54 2171 +2173 4 29.53 485.89 24.61 0.54 2172 +2174 4 28.98 486.44 25.39 0.54 2173 +2175 4 29.01 488.22 26.02 0.54 2174 +2176 4 28.58 489.55 26.49 0.54 2175 +2177 4 28.94 490.01 26.5 0.54 2176 +2178 4 28.57 490.08 27.45 0.54 2177 +2179 4 27.96 490.68 27.56 0.54 2178 +2180 4 28.41 492.04 27.65 0.54 2179 +2181 4 28.56 494.01 27.91 0.54 2180 +2182 4 29.32 496.3 28.06 0.54 2181 +2183 4 29.76 496.79 27.91 0.54 2182 +2184 4 30.51 498.77 28.04 0.54 2183 +2185 4 30.47 500.33 27.82 0.54 2184 +2186 4 30.32 501.09 27.91 0.54 2185 +2187 4 30.97 501.65 28.36 0.54 2186 +2188 4 31.5 502.03 29.25 0.54 2187 +2189 4 32.59 503.08 29.56 0.54 2188 +2190 4 33.5 503.69 29.54 0.54 2189 +2191 4 34.15 504.26 29.9 0.54 2190 +2192 4 33.99 506.54 30.22 0.54 2191 +2193 4 33.84 508.21 30.4 0.54 2192 +2194 4 33.53 509.12 30.59 0.54 2193 +2195 4 35.06 509.43 30.48 0.435 2194 +2196 4 35.97 511.57 30.68 0.435 2195 +2197 4 37.18 513.69 30.85 0.435 2196 +2198 4 37.04 514.75 31.04 0.435 2197 +2199 4 37.19 516.41 31.26 0.435 2198 +2200 4 38.28 518.06 31.71 0.435 2199 +2201 4 39.65 519.14 31.68 0.435 2200 +2202 4 41.49 521.57 31.98 0.435 2201 +2203 4 41.85 521.81 32.65 0.435 2202 +2204 4 43.07 522.74 32.63 0.435 2203 +2205 4 44.13 523.8 32.7 0.435 2204 +2206 4 45.06 524.72 32.86 0.435 2205 +2207 4 45.85 526.67 33.28 0.435 2206 +2208 4 47.11 528.13 33.91 0.54 2207 +2209 4 48.02 529.06 33.99 0.54 2208 +2210 4 48.39 529.9 34.73 0.54 2209 +2211 4 48.13 531.37 35.42 0.54 2210 +2212 4 48.64 533.6 36.19 0.54 2211 +2213 4 49.72 534.64 36.58 0.54 2212 +2214 4 50.83 536.28 37.09 0.54 2213 +2215 4 51.47 537.45 37.59 0.54 2214 +2216 4 51.81 539.24 38.2 0.54 2215 +2217 4 51.83 540.13 38.5 0.54 2216 +2218 4 51.84 541.34 38.7 0.54 2217 +2219 4 52.15 542.24 38.83 0.54 2218 +2220 4 52.33 543.59 39.32 0.54 2219 +2221 4 53.6 545.36 39.99 0.54 2220 +2222 4 54.28 545.89 40.81 0.54 2221 +2223 4 55.34 546.35 40.83 0.54 2222 +2224 4 56.13 546.78 41.09 0.54 2223 +2225 4 56.77 547.36 41.39 0.54 2224 +2226 4 57.57 548.09 41.93 0.54 2225 +2227 4 57.56 550.21 42.21 0.54 2226 +2228 4 57.72 551.28 42.29 0.54 2227 +2229 4 57.57 552.32 42.56 0.54 2228 +2230 4 58.03 553.09 42.6 0.54 2229 +2231 4 58.34 553.99 42.74 0.54 2230 +2232 4 59.13 554.73 43.11 0.54 2231 +2233 4 59.45 555.63 43.32 0.54 2232 +2234 4 59.32 556.35 43.7 0.54 2233 +2235 4 59.47 558.03 43.94 0.54 2234 +2236 4 58.88 558.3 44.17 0.54 2235 +2237 4 29.04 490.61 26.63 0.54 2177 +2238 4 29.72 492.36 27.64 0.54 2237 +2239 4 30.65 494.47 27.99 0.54 2238 +2240 4 32.98 497.63 28.69 0.54 2239 +2241 4 34.1 499.26 29.35 0.54 2240 +2242 4 34.53 499.43 29.09 0.54 2241 +2243 4 35.37 501.32 28.6 0.54 2242 +2244 4 36.74 502.7 28.61 0.54 2243 +2245 4 37.77 504.43 28.3 0.54 2244 +2246 4 38.65 506.3 28.03 0.54 2245 +2247 4 39.81 507.26 27.49 0.54 2246 +2248 4 41.92 509.73 27.45 0.54 2247 +2249 4 42.23 511.56 27.6 0.54 2248 +2250 4 43.71 512.51 27.26 0.54 2249 +2251 4 44.78 513.28 27.24 0.54 2250 +2252 4 46.29 515.73 27.34 0.54 2251 +2253 4 47.49 518.78 27.44 0.54 2252 +2254 4 48.37 519.74 27.16 0.54 2253 +2255 4 49.59 521.58 27.15 0.54 2254 +2256 4 51.09 522.81 27.13 0.54 2255 +2257 4 51.84 523.29 27.02 0.54 2256 +2258 4 52.76 524.21 26.97 0.54 2257 +2259 4 53.56 524.62 27.46 0.54 2258 +2260 4 54.52 525.19 28.03 0.54 2259 +2261 4 56.24 527.44 28.55 0.54 2260 +2262 4 57.33 528.46 29.0 0.54 2261 +2263 4 58.44 530.41 29.61 0.54 2262 +2264 4 59.99 533.42 30.14 0.54 2263 +2265 4 60.91 535.55 30.41 0.54 2264 +2266 4 61.08 536.92 29.03 0.54 2265 +2267 4 59.7 537.66 29.22 0.54 2266 +2268 4 59.23 538.12 29.16 0.54 2267 +2269 4 59.76 538.5 29.98 0.54 2268 +2270 4 59.88 539.59 29.85 0.54 2269 +2271 4 59.98 539.81 29.25 0.54 2270 +2272 4 59.62 540.17 28.64 0.54 2271 +2273 4 59.29 540.5 28.4 0.54 2272 +2274 4 59.24 541.17 27.94 0.54 2273 +2275 4 59.32 541.68 27.3 0.54 2274 +2276 4 58.81 542.19 26.79 0.54 2275 +2277 4 58.14 543.48 26.23 0.54 2276 +2278 4 58.07 544.76 25.76 0.54 2277 +2279 4 58.32 546.03 25.25 0.54 2278 +2280 4 58.55 547.32 24.67 0.54 2279 +2281 4 58.82 547.67 24.22 0.54 2280 +2282 4 59.4 548.3 24.01 0.54 2281 +2283 4 60.73 549.42 23.54 0.54 2282 +2284 4 61.76 549.92 23.19 0.54 2283 +2285 4 63.43 551.0 23.07 0.54 2284 +2286 4 64.13 552.74 22.58 0.54 2285 +2287 4 64.24 553.84 22.29 0.54 2286 +2288 4 65.11 554.8 21.85 0.54 2287 +2289 4 65.65 555.19 21.08 0.54 2288 +2290 4 66.55 555.81 20.98 0.54 2289 +2291 4 67.24 556.66 20.24 0.54 2290 +2292 4 67.35 556.86 19.72 0.54 2291 +2293 4 68.34 558.0 18.99 0.54 2292 +2294 4 69.21 559.57 18.62 0.54 2293 +2295 4 70.23 560.4 18.14 0.54 2294 +2296 4 70.45 560.79 17.17 0.54 2295 +2297 4 70.86 561.29 16.81 0.54 2296 +2298 4 71.45 561.94 16.52 0.54 2297 +2299 4 72.6 563.83 15.99 0.54 2298 +2300 4 72.7 565.56 15.61 0.54 2299 +2301 4 73.54 568.06 15.03 0.54 2300 +2302 4 74.38 568.75 14.34 0.54 2301 +2303 4 74.67 569.39 12.56 0.54 2302 +2304 4 75.73 570.17 12.39 0.54 2303 +2305 4 76.89 571.45 11.81 0.54 2304 +2306 4 77.94 573.13 11.87 0.54 2305 +2307 4 78.76 575.36 11.1 0.54 2306 +2308 4 79.3 576.06 10.3 0.54 2307 +2309 4 80.31 577.19 9.71 0.54 2308 +2310 4 81.31 578.93 9.17 0.54 2309 +2311 4 82.86 579.76 8.13 0.54 2310 +2312 4 83.76 583.11 8.38 0.54 2311 +2313 4 83.89 585.4 8.52 0.54 2312 +2314 4 83.09 588.03 8.39 0.54 2313 +2315 4 82.89 591.55 8.53 0.54 2314 +2316 4 82.42 594.13 8.74 0.54 2315 +2317 4 82.09 597.81 8.83 0.54 2316 +2318 4 80.69 599.8 8.85 0.54 2317 +2319 4 79.69 600.78 8.21 0.54 2318 +2320 4 26.36 477.48 22.58 0.755 2166 +2321 4 24.42 479.08 23.43 0.755 2320 +2322 4 23.06 481.64 23.96 0.755 2321 +2323 4 21.95 482.74 23.71 0.755 2322 +2324 4 21.76 484.24 25.7 0.755 2323 +2325 4 21.44 485.15 25.82 0.755 2324 +2326 4 21.44 488.19 26.11 0.755 2325 +2327 4 22.34 490.02 26.21 0.54 2326 +2328 4 23.55 491.86 26.27 0.54 2327 +2329 4 24.7 492.57 25.41 0.54 2328 +2330 4 26.64 493.37 25.0 0.54 2329 +2331 4 28.16 494.6 24.99 0.54 2330 +2332 4 29.82 496.6 25.02 0.54 2331 +2333 4 31.5 499.79 25.33 0.54 2332 +2334 4 35.02 503.9 25.71 0.54 2333 +2335 4 36.39 505.89 25.78 0.54 2334 +2336 4 37.44 507.57 25.85 0.54 2335 +2337 4 39.27 508.79 25.87 0.54 2336 +2338 4 41.55 511.1 25.89 0.54 2337 +2339 4 43.37 512.94 25.89 0.54 2338 +2340 4 45.21 515.97 26.41 0.54 2339 +2341 4 46.45 518.1 26.65 0.54 2340 +2342 4 47.53 519.74 27.02 0.54 2341 +2343 4 48.62 522.01 27.43 0.54 2342 +2344 4 50.17 523.2 27.78 0.54 2343 +2345 4 50.85 523.74 28.6 0.54 2344 +2346 4 51.93 524.48 28.81 0.54 2345 +2347 4 53.46 526.01 28.88 0.54 2346 +2348 4 56.05 529.52 29.14 0.54 2347 +2349 4 57.74 531.78 29.58 0.54 2348 +2350 4 58.99 534.18 30.08 0.54 2349 +2351 4 59.92 536.9 30.63 0.54 2350 +2352 4 60.03 537.4 31.74 0.54 2351 +2353 4 59.3 538.72 32.39 0.54 2352 +2354 4 58.51 539.21 30.61 0.54 2353 +2355 4 58.69 540.25 29.33 0.54 2354 +2356 4 58.29 541.25 28.49 0.54 2355 +2357 4 58.14 542.0 28.57 0.54 2356 +2358 4 57.79 542.95 28.32 0.54 2357 +2359 4 57.57 544.41 27.59 0.54 2358 +2360 4 57.43 545.47 26.19 0.54 2359 +2361 4 57.68 547.64 25.92 0.54 2360 +2362 4 58.55 549.2 25.61 0.54 2361 +2363 4 60.81 550.32 25.21 0.54 2362 +2364 4 62.55 551.33 24.39 0.54 2363 +2365 4 64.07 552.86 24.33 0.54 2364 +2366 4 64.52 555.77 24.57 0.54 2365 +2367 4 66.41 556.93 23.6 0.54 2366 +2368 4 67.27 557.6 23.06 0.54 2367 +2369 4 69.63 560.75 22.39 0.54 2368 +2370 4 70.56 562.25 21.01 0.54 2369 +2371 4 71.46 562.88 19.26 0.54 2370 +2372 4 71.6 564.27 19.3 0.54 2371 +2373 4 72.57 565.75 18.3 0.54 2372 +2374 4 72.91 568.45 17.39 0.54 2373 +2375 4 73.87 569.02 16.15 0.54 2374 +2376 4 74.26 569.56 15.34 0.54 2375 +2377 4 74.92 571.33 14.54 0.54 2376 +2378 4 76.82 573.71 13.77 0.54 2377 +2379 4 77.18 574.27 12.73 0.54 2378 +2380 4 78.21 575.39 12.36 0.54 2379 +2381 4 79.55 577.99 12.43 0.54 2380 +2382 4 80.96 580.25 11.3 0.54 2381 +2383 4 81.84 581.2 11.02 0.54 2382 +2384 4 82.74 582.73 11.0 0.54 2383 +2385 4 82.67 584.93 10.54 0.54 2384 +2386 4 82.51 588.13 10.79 0.54 2385 +2387 4 81.97 591.69 10.44 0.54 2386 +2388 4 81.88 593.0 9.67 0.54 2387 +2389 4 81.54 596.06 9.69 0.54 2388 +2390 4 81.34 597.5 9.25 0.54 2389 +2391 4 80.58 599.45 8.0 0.54 2390 +2392 4 79.34 601.89 8.2 0.54 2391 +2393 4 78.44 602.79 6.85 0.54 2392 +2394 4 20.72 483.94 23.94 0.755 2323 +2395 4 19.2 485.14 24.21 0.755 2394 +2396 4 16.73 486.68 24.28 0.755 2395 +2397 4 15.18 489.43 24.38 0.755 2396 +2398 4 14.35 490.85 23.92 0.755 2397 +2399 4 12.92 492.26 23.58 0.755 2398 +2400 4 11.82 493.95 23.63 0.755 2399 +2401 4 9.92 496.43 23.29 0.755 2400 +2402 4 7.41 498.92 23.01 0.755 2401 +2403 4 5.5 501.41 22.6 0.755 2402 +2404 4 4.59 502.93 22.83 0.755 2403 +2405 4 3.9 503.93 22.08 0.755 2404 +2406 4 3.28 506.96 22.44 0.755 2405 +2407 4 1.99 508.53 22.03 0.755 2406 +2408 4 -0.01 509.91 22.05 0.755 2407 +2409 4 -1.77 511.36 21.36 0.755 2408 +2410 4 -4.16 512.8 20.74 0.755 2409 +2411 4 -6.66 514.37 20.37 0.755 2410 +2412 4 -9.32 516.4 20.06 0.755 2411 +2413 4 -11.82 518.26 19.87 0.755 2412 +2414 4 -14.28 520.09 20.05 0.755 2413 +2415 4 -16.46 522.25 20.0 0.755 2414 +2416 4 -18.6 524.05 20.3 0.755 2415 +2417 4 -20.89 525.7 20.67 0.755 2416 +2418 4 -23.94 527.8 21.16 0.755 2417 +2419 4 -26.93 529.84 20.72 0.755 2418 +2420 4 -29.22 531.8 21.05 0.755 2419 +2421 4 -29.98 534.08 21.35 0.755 2420 +2422 4 -30.75 534.84 20.96 0.755 2421 +2423 4 -31.21 536.5 21.16 0.755 2422 +2424 4 -30.76 540.01 21.46 0.755 2423 +2425 4 -30.25 542.53 20.68 0.755 2424 +2426 4 -30.3 545.32 20.51 0.755 2425 +2427 4 -30.29 546.84 19.14 0.755 2426 +2428 4 -30.31 549.89 19.29 0.755 2427 +2429 4 -29.75 552.96 19.23 0.755 2428 +2430 4 -30.09 554.54 18.9 0.755 2429 +2431 4 -31.06 556.7 18.74 0.755 2430 +2432 4 -32.64 557.96 18.4 0.755 2431 +2433 4 -32.86 561.2 18.21 0.755 2432 +2434 4 -33.38 564.45 17.96 0.755 2433 +2435 4 -34.04 566.93 17.68 0.755 2434 +2436 4 -33.96 570.49 17.41 0.755 2435 +2437 4 -33.17 573.98 16.38 0.755 2436 +2438 4 -32.45 577.82 16.32 0.755 2437 +2439 4 -32.12 579.92 15.2 0.755 2438 +2440 4 -32.25 582.78 14.22 0.755 2439 +2441 4 -32.01 584.97 13.8 0.755 2440 +2442 4 -31.58 586.68 13.62 0.755 2441 +2443 4 -30.45 589.2 12.94 0.755 2442 +2444 4 -29.95 590.83 11.99 0.755 2443 +2445 4 -29.68 592.4 11.66 0.755 2444 +2446 4 -29.88 595.32 11.58 0.755 2445 +2447 4 -29.65 597.51 11.17 0.755 2446 +2448 4 -28.28 599.5 11.17 0.755 2447 +2449 4 -26.84 601.72 10.49 0.755 2448 +2450 4 -27.0 604.61 10.79 0.755 2449 +2451 4 -26.27 606.94 10.56 0.755 2450 +2452 4 -25.77 609.69 10.64 0.755 2451 +2453 4 -26.39 612.12 10.93 0.755 2452 +2454 4 -27.3 614.54 11.26 0.755 2453 +2455 4 -28.75 616.58 10.76 0.755 2454 +2456 4 -29.58 619.82 10.55 0.755 2455 +2457 4 -29.82 622.48 10.07 0.755 2456 +2458 4 -30.14 625.24 10.14 0.755 2457 +2459 4 -31.18 628.09 9.23 0.755 2458 +2460 4 -31.97 631.59 9.5 0.755 2459 +2461 4 -33.21 634.65 9.68 0.755 2460 +2462 4 -34.46 637.08 9.95 0.755 2461 +2463 4 -34.52 640.79 9.65 0.755 2462 +2464 4 -35.78 643.25 9.62 0.755 2463 +2465 4 -36.33 645.32 8.9 0.755 2464 +2466 4 -37.28 647.47 8.89 0.755 2465 +2467 4 -38.71 650.71 8.74 0.755 2466 +2468 4 -39.06 654.69 8.85 0.755 2467 +2469 4 -38.94 658.81 9.09 0.755 2468 +2470 4 -38.69 661.92 8.7 0.755 2469 +2471 4 -38.58 665.73 8.9 0.755 2470 +2472 4 -38.48 669.28 8.79 0.755 2471 +2473 4 -36.45 674.25 8.18 0.755 2472 +2474 4 -35.23 677.91 8.42 0.755 2473 +2475 4 -35.36 680.69 7.11 0.755 2474 +2476 4 -35.11 684.39 6.85 0.755 2475 +2477 4 -35.23 686.32 7.57 0.755 2476 +2478 4 -35.07 688.29 7.83 0.755 2477 +2479 4 -35.04 690.69 6.85 0.755 2478 +2480 4 -34.86 693.24 5.88 0.755 2479 +2481 4 -34.95 696.08 5.1 0.755 2480 +2482 4 -35.02 698.27 4.64 0.755 2481 +2483 4 -34.65 700.63 4.07 0.755 2482 +2484 4 -34.07 703.1 3.9 0.755 2483 +2485 4 -32.44 705.74 2.11 0.755 2484 +2486 4 -30.6 706.97 2.06 0.755 2485 +2487 4 -28.65 708.68 1.9 0.755 2486 +2488 4 -27.71 709.59 0.45 0.755 2487 +2489 4 -25.75 710.99 0.26 0.755 2488 +2490 4 -24.15 712.43 -0.41 0.755 2489 +2491 4 -21.64 713.91 -1.26 0.755 2490 +2492 4 -20.49 715.5 -1.96 0.755 2491 +2493 4 -19.15 716.91 -2.25 0.755 2492 +2494 4 -17.57 718.38 -3.09 0.755 2493 +2495 4 -15.77 719.65 -3.57 0.755 2494 +2496 4 -14.31 720.93 -4.04 0.755 2495 +2497 4 -13.02 722.09 -4.96 0.755 2496 +2498 4 -12.3 722.91 -5.48 0.755 2497 +2499 4 0.45 311.01 18.62 0.975 2100 +2500 4 -0.41 312.78 17.74 0.975 2499 +2501 4 -1.24 313.6 17.23 0.975 2500 +2502 4 -1.75 314.11 16.64 0.975 2501 +2503 4 -1.81 316.3 16.33 0.975 2502 +2504 4 -1.73 318.05 15.65 0.975 2503 +2505 4 -2.05 319.58 15.76 0.975 2504 +2506 4 -2.58 321.63 15.25 0.975 2505 +2507 4 -3.23 322.86 15.13 0.975 2506 +2508 4 -4.25 324.19 14.06 0.865 2507 +2509 4 -5.18 325.71 14.3 0.865 2508 +2510 4 -5.49 328.14 14.56 0.865 2509 +2511 4 -4.58 331.49 14.81 0.865 2510 +2512 4 -3.58 333.83 14.42 0.865 2511 +2513 4 -3.49 335.87 13.94 0.865 2512 +2514 4 -3.81 338.62 14.08 0.865 2513 +2515 4 -5.36 341.96 14.47 0.865 2514 +2516 4 -6.25 344.68 13.45 0.865 2515 +2517 4 -7.41 347.64 12.94 0.865 2516 +2518 4 -8.21 349.66 12.76 0.865 2517 +2519 4 -9.21 351.85 12.23 0.865 2518 +2520 4 -9.95 353.8 11.13 0.865 2519 +2521 4 -10.57 356.85 11.42 0.865 2520 +2522 4 -11.34 358.81 11.68 0.865 2521 +2523 4 -12.0 361.28 11.53 0.865 2522 +2524 4 -14.22 363.19 11.01 0.865 2523 +2525 4 -15.83 365.69 10.49 0.865 2524 +2526 4 -18.06 369.41 10.07 0.865 2525 +2527 4 -19.29 373.04 10.54 0.865 2526 +2528 4 -22.14 377.07 10.14 0.865 2527 +2529 4 -23.1 379.24 9.98 0.865 2528 +2530 4 -23.53 380.89 8.84 0.865 2529 +2531 4 -23.88 383.35 8.72 0.865 2530 +2532 4 -24.53 387.03 8.77 0.865 2531 +2533 4 -24.08 389.32 8.95 0.865 2532 +2534 4 -24.09 391.45 9.16 0.865 2533 +2535 4 -24.86 394.03 9.48 0.865 2534 +2536 4 -25.48 395.85 8.05 0.865 2535 +2537 4 -26.13 397.42 7.81 0.865 2536 +2538 4 -26.68 399.8 7.1 0.865 2537 +2539 4 -26.49 400.51 6.33 0.865 2538 +2540 4 -25.58 402.04 6.39 0.865 2539 +2541 4 -24.74 402.73 7.22 0.865 2540 +2542 4 -24.29 404.69 7.51 0.865 2541 +2543 4 -23.23 406.69 7.6 0.755 2542 +2544 4 -22.88 408.46 8.29 0.755 2543 +2545 4 -22.43 409.53 8.35 0.755 2544 +2546 4 -21.7 410.33 8.05 0.755 2545 +2547 4 -20.98 411.14 7.53 0.755 2546 +2548 4 -20.3 412.0 6.66 0.755 2547 +2549 4 -19.27 412.5 6.31 0.755 2548 +2550 4 -18.52 412.96 6.2 0.865 2549 +2551 4 -17.16 414.95 6.27 0.865 2550 +2552 4 -15.9 417.06 5.15 0.865 2551 +2553 4 -14.49 419.23 4.55 0.865 2552 +2554 4 -14.04 422.43 4.83 0.865 2553 +2555 4 -13.9 425.02 3.32 0.865 2554 +2556 4 -14.02 426.97 2.32 0.865 2555 +2557 4 -14.02 429.4 1.04 0.865 2556 +2558 4 -13.44 431.27 0.72 0.865 2557 +2559 4 -12.65 432.3 -0.38 0.865 2558 +2560 4 -11.8 433.29 -1.12 0.865 2559 +2561 4 -10.33 434.26 -1.62 0.865 2560 +2562 4 -9.34 435.12 -2.54 0.865 2561 +2563 4 -7.91 435.84 -3.57 0.865 2562 +2564 4 -6.58 436.96 -3.96 0.865 2563 +2565 4 -5.57 439.61 -4.4 0.865 2564 +2566 4 -5.38 440.92 -5.34 0.865 2565 +2567 4 -4.84 441.91 -6.06 0.865 2566 +2568 4 -4.81 443.41 -7.21 0.865 2567 +2569 4 -4.87 444.69 -7.75 0.865 2568 +2570 4 -5.13 445.57 -8.86 0.865 2569 +2571 4 -5.01 446.65 -8.98 0.865 2570 +2572 4 -4.96 447.81 -9.93 0.865 2571 +2573 4 -5.06 449.15 -10.93 0.865 2572 +2574 4 -4.75 449.29 -11.62 0.54 2573 +2575 4 -3.29 449.98 -12.38 0.54 2574 +2576 4 -2.58 450.49 -13.0 0.54 2575 +2577 4 -2.33 450.54 -13.46 0.54 2576 +2578 4 -1.64 451.07 -14.22 0.54 2577 +2579 4 -0.5 452.39 -15.11 0.54 2578 +2580 4 -0.14 453.85 -15.99 0.54 2579 +2581 4 -0.05 454.99 -16.57 0.54 2580 +2582 4 0.18 455.67 -17.28 0.54 2581 +2583 4 0.48 455.98 -17.35 0.54 2582 +2584 4 0.13 456.62 -17.63 0.54 2583 +2585 4 0.62 457.37 -18.97 0.54 2584 +2586 4 -0.14 458.15 -20.56 0.54 2585 +2587 4 -0.75 459.36 -22.05 0.54 2586 +2588 4 -1.78 460.98 -22.94 0.54 2587 +2589 4 -1.54 462.27 -23.57 0.54 2588 +2590 4 -0.84 464.32 -24.05 0.54 2589 +2591 4 -1.11 464.9 -25.33 0.54 2590 +2592 4 -0.49 465.5 -25.11 0.54 2591 +2593 4 -0.34 466.55 -24.94 0.54 2592 +2594 4 -0.49 467.31 -26.45 0.54 2593 +2595 4 -0.39 468.13 -26.97 0.54 2594 +2596 4 -0.74 470.01 -27.28 0.54 2595 +2597 4 -0.97 470.83 -27.87 0.54 2596 +2598 4 -1.67 472.13 -28.58 0.54 2597 +2599 4 -0.75 473.06 -28.65 0.54 2598 +2600 4 0.2 473.93 -29.71 0.54 2599 +2601 4 0.79 474.26 -29.96 0.54 2600 +2602 4 2.11 475.08 -30.54 0.54 2601 +2603 4 2.81 475.31 -31.25 0.54 2602 +2604 4 3.67 475.98 -31.81 0.54 2603 +2605 4 5.03 477.05 -31.82 0.54 2604 +2606 4 5.69 477.93 -32.93 0.54 2605 +2607 4 6.67 479.09 -33.81 0.54 2606 +2608 4 7.67 481.74 -34.25 0.54 2607 +2609 4 8.44 482.82 -35.8 0.54 2608 +2610 4 9.07 484.33 -37.16 0.54 2609 +2611 4 9.71 485.22 -38.41 0.54 2610 +2612 4 10.16 485.67 -38.41 0.54 2611 +2613 4 11.12 486.86 -39.51 0.54 2612 +2614 4 11.62 487.59 -40.69 0.54 2613 +2615 4 12.5 488.85 -40.96 0.54 2614 +2616 4 13.86 490.84 -40.89 0.54 2615 +2617 4 14.78 491.76 -40.88 0.54 2616 +2618 4 15.2 492.24 -41.18 0.54 2617 +2619 4 15.27 493.08 -41.94 0.54 2618 +2620 4 16.1 493.79 -42.86 0.54 2619 +2621 4 16.49 494.33 -43.6 0.54 2620 +2622 4 16.5 494.62 -45.07 0.54 2621 +2623 4 17.73 495.24 -45.13 0.54 2622 +2624 4 18.31 495.88 -45.34 0.54 2623 +2625 4 18.85 496.56 -46.09 0.54 2624 +2626 4 19.69 497.56 -46.82 0.54 2625 +2627 4 20.38 498.39 -47.49 0.54 2626 +2628 4 21.06 499.85 -48.25 0.54 2627 +2629 4 21.6 501.14 -48.84 0.54 2628 +2630 4 22.39 502.73 -48.76 0.54 2629 +2631 4 22.61 503.49 -49.38 0.54 2630 +2632 4 23.96 504.88 -49.45 0.54 2631 +2633 4 25.57 508.45 -49.93 0.54 2632 +2634 4 26.97 511.91 -50.78 0.54 2633 +2635 4 27.71 513.93 -50.89 0.54 2634 +2636 4 28.54 515.53 -51.56 0.54 2635 +2637 4 28.97 516.64 -51.94 0.54 2636 +2638 4 29.65 518.08 -52.54 0.54 2637 +2639 4 30.79 519.69 -53.39 0.54 2638 +2640 4 32.95 523.04 -54.55 0.54 2639 +2641 4 33.78 525.84 -55.04 0.54 2640 +2642 4 34.99 529.21 -56.49 0.54 2641 +2643 4 35.75 531.81 -57.97 0.54 2642 +2644 4 36.13 533.87 -58.56 0.54 2643 +2645 4 35.91 537.95 -58.37 0.54 2644 +2646 4 36.37 539.31 -59.71 0.54 2645 +2647 4 37.22 541.51 -60.26 0.54 2646 +2648 4 37.72 543.15 -61.28 0.54 2647 +2649 4 38.29 543.73 -61.27 0.54 2648 +2650 4 38.41 544.21 -61.54 0.11 2649 +2651 4 37.6 545.31 -61.8 0.435 2650 +2652 4 36.83 548.18 -61.46 0.435 2651 +2653 4 36.22 550.02 -61.31 0.435 2652 +2654 4 35.87 550.37 -61.69 0.435 2653 +2655 4 35.35 553.01 -61.99 0.435 2654 +2656 4 34.88 554.08 -61.91 0.435 2655 +2657 4 35.14 556.25 -62.18 0.435 2656 +2658 4 35.21 557.09 -63.01 0.435 2657 +2659 4 35.17 557.73 -63.25 0.435 2658 +2660 4 35.41 559.32 -63.79 0.435 2659 +2661 4 35.81 559.85 -64.46 0.435 2660 +2662 4 35.76 560.51 -64.85 0.435 2661 +2663 4 36.27 561.21 -65.89 0.435 2662 +2664 4 36.21 562.19 -66.39 0.435 2663 +2665 4 36.15 562.25 -67.05 0.435 2664 +2666 4 36.99 563.24 -67.71 0.435 2665 +2667 4 38.29 565.32 -68.54 0.435 2666 +2668 4 38.96 565.85 -67.72 0.435 2667 +2669 4 39.41 566.93 -67.72 0.435 2668 +2670 4 39.67 567.27 -68.17 0.435 2669 +2671 4 39.73 567.54 -69.29 0.435 2670 +2672 4 40.12 568.06 -69.95 0.435 2671 +2673 4 40.64 568.76 -70.84 0.435 2672 +2674 4 40.89 569.12 -71.43 0.435 2673 +2675 4 41.23 569.41 -72.72 0.435 2674 +2676 4 42.55 570.23 -73.3 0.435 2675 +2677 4 43.04 570.96 -74.47 0.435 2676 +2678 4 44.59 571.87 -75.89 0.435 2677 +2679 4 46.21 572.71 -76.57 0.435 2678 +2680 4 47.96 574.0 -77.28 0.435 2679 +2681 4 48.98 574.52 -77.86 0.435 2680 +2682 4 49.68 575.06 -78.69 0.435 2681 +2683 4 51.18 576.3 -78.86 0.435 2682 +2684 4 52.38 576.63 -79.02 0.435 2683 +2685 4 53.07 576.56 -79.84 0.435 2684 +2686 4 53.63 576.92 -80.4 0.435 2685 +2687 4 54.5 577.58 -80.94 0.435 2686 +2688 4 38.92 545.0 -61.35 0.54 2649 +2689 4 39.59 545.86 -62.32 0.54 2688 +2690 4 39.83 547.44 -62.8 0.54 2689 +2691 4 40.2 548.91 -63.59 0.54 2690 +2692 4 39.93 549.79 -64.76 0.54 2691 +2693 4 40.73 551.11 -64.25 0.54 2692 +2694 4 42.55 552.96 -64.25 0.54 2693 +2695 4 44.21 554.65 -64.3 0.54 2694 +2696 4 44.58 555.52 -65.24 0.54 2695 +2697 4 45.64 557.2 -65.18 0.54 2696 +2698 4 46.81 559.99 -66.97 0.54 2697 +2699 4 48.13 562.04 -67.51 0.54 2698 +2700 4 49.0 564.21 -67.81 0.54 2699 +2701 4 50.03 565.33 -68.19 0.54 2700 +2702 4 50.9 566.28 -68.55 0.54 2701 +2703 4 52.68 567.85 -68.94 0.54 2702 +2704 4 56.02 571.54 -68.89 0.54 2703 +2705 4 58.84 573.92 -69.67 0.54 2704 +2706 4 60.43 575.37 -70.44 0.54 2705 +2707 4 61.6 576.65 -70.87 0.54 2706 +2708 4 63.19 579.03 -71.7 0.54 2707 +2709 4 63.94 579.81 -71.76 0.54 2708 +2710 4 65.4 581.1 -72.45 0.54 2709 +2711 4 66.7 581.94 -73.17 0.54 2710 +2712 4 69.07 583.76 -73.37 0.54 2711 +2713 4 70.55 584.43 -73.95 0.54 2712 +2714 4 72.2 585.53 -74.23 0.54 2713 +2715 4 73.5 586.37 -74.95 0.54 2714 +2716 4 74.67 587.34 -75.5 0.54 2715 +2717 4 76.08 588.98 -76.59 0.54 2716 +2718 4 78.19 590.26 -76.9 0.54 2717 +2719 4 79.84 591.64 -76.99 0.54 2718 +2720 4 80.71 592.31 -77.6 0.54 2719 +2721 4 82.15 593.33 -78.55 0.54 2720 +2722 4 82.64 594.06 -79.73 0.54 2721 +2723 4 84.0 594.84 -79.86 0.54 2722 +2724 4 84.73 595.34 -80.26 0.54 2723 +2725 4 85.78 596.12 -80.35 0.54 2724 +2726 4 86.62 596.81 -81.11 0.54 2725 +2727 4 -5.68 450.37 -10.83 0.755 2573 +2728 4 -7.62 451.97 -11.56 0.755 2727 +2729 4 -8.69 452.12 -11.59 0.755 2728 +2730 4 -10.72 453.23 -11.83 0.755 2729 +2731 4 -11.21 454.92 -11.91 0.755 2730 +2732 4 -12.07 457.6 -12.63 0.755 2731 +2733 4 -12.78 459.52 -13.43 0.755 2732 +2734 4 -13.79 461.13 -14.09 0.755 2733 +2735 4 -14.92 462.85 -14.51 0.755 2734 +2736 4 -16.0 466.65 -14.1 0.755 2735 +2737 4 -17.08 471.05 -13.58 0.65 2736 +2738 4 -17.55 473.64 -13.28 0.65 2737 +2739 4 -18.17 476.06 -12.99 0.65 2738 +2740 4 -18.93 477.41 -12.79 0.65 2739 +2741 4 -18.92 478.03 -12.72 0.65 2740 +2742 4 -19.99 479.08 -12.52 0.65 2741 +2743 4 -20.0 481.22 -12.32 0.65 2742 +2744 4 -20.47 484.1 -11.99 0.65 2743 +2745 4 -21.39 487.12 -11.61 0.65 2744 +2746 4 -22.53 489.47 -12.03 0.65 2745 +2747 4 -23.69 491.23 -12.66 0.65 2746 +2748 4 -25.08 494.72 -12.35 0.65 2747 +2749 4 -26.47 498.82 -11.82 0.65 2748 +2750 4 -27.38 501.55 -11.47 0.65 2749 +2751 4 -28.46 503.51 -11.17 0.65 2750 +2752 4 -29.07 504.49 -11.02 0.65 2751 +2753 4 -28.35 504.98 -11.42 0.54 2752 +2754 4 -27.59 505.75 -11.41 0.54 2753 +2755 4 -26.52 506.52 -11.44 0.54 2754 +2756 4 -25.61 507.43 -11.43 0.54 2755 +2757 4 -25.62 508.66 -11.31 0.54 2756 +2758 4 -25.5 509.45 -11.63 0.54 2757 +2759 4 -24.78 510.86 -11.86 0.54 2758 +2760 4 -24.04 512.26 -12.01 0.54 2759 +2761 4 -22.72 514.91 -12.41 0.54 2760 +2762 4 -21.39 515.71 -12.76 0.54 2761 +2763 4 -20.04 517.11 -12.96 0.54 2762 +2764 4 -18.72 518.54 -13.41 0.54 2763 +2765 4 -17.36 519.63 -13.58 0.54 2764 +2766 4 -16.54 521.23 -14.33 0.54 2765 +2767 4 -15.85 523.9 -14.89 0.54 2766 +2768 4 -15.57 526.04 -14.86 0.54 2767 +2769 4 -14.71 528.24 -15.25 0.54 2768 +2770 4 -14.13 529.49 -15.49 0.54 2769 +2771 4 -11.55 531.19 -15.62 0.54 2770 +2772 4 -9.73 533.95 -15.53 0.54 2771 +2773 4 -8.89 536.13 -15.92 0.54 2772 +2774 4 -8.8 538.78 -16.35 0.54 2773 +2775 4 -7.45 543.52 -16.1 0.54 2774 +2776 4 -7.16 546.86 -15.79 0.54 2775 +2777 4 -6.71 550.38 -15.49 0.54 2776 +2778 4 -6.26 552.04 -15.37 0.54 2777 +2779 4 -6.58 554.78 -15.08 0.54 2778 +2780 4 -6.43 557.07 -14.86 0.54 2779 +2781 4 -5.68 559.05 -14.74 0.54 2780 +2782 4 -4.0 560.12 -14.79 0.54 2781 +2783 4 -3.71 562.26 -14.61 0.54 2782 +2784 4 -3.24 565.75 -14.08 0.54 2783 +2785 4 -3.1 568.93 -13.79 0.54 2784 +2786 4 -2.49 570.47 -13.69 0.54 2785 +2787 4 -2.65 573.04 -13.35 0.54 2786 +2788 4 -3.35 576.46 -12.2 0.54 2787 +2789 4 -3.06 579.81 -11.9 0.54 2788 +2790 4 -1.85 581.94 -11.8 0.54 2789 +2791 4 -0.34 585.61 -11.58 0.54 2790 +2792 4 1.06 590.57 -10.55 0.54 2791 +2793 4 1.36 592.1 -10.43 0.54 2792 +2794 4 2.42 593.18 -10.43 0.54 2793 +2795 4 3.33 594.09 -10.42 0.54 2794 +2796 4 4.09 596.99 -10.21 0.54 2795 +2797 4 5.18 601.67 -9.4 0.54 2796 +2798 4 6.39 605.03 -9.1 0.54 2797 +2799 4 8.17 608.71 -7.63 0.54 2798 +2800 4 8.66 611.57 -6.94 0.54 2799 +2801 4 8.85 612.9 -6.37 0.54 2800 +2802 4 8.73 614.22 -5.85 0.54 2801 +2803 4 8.63 615.53 -5.1 0.54 2802 +2804 4 8.21 617.15 -4.3 0.54 2803 +2805 4 7.77 618.49 -3.91 0.54 2804 +2806 4 -29.22 505.49 -10.91 0.65 2752 +2807 4 -30.38 510.28 -11.25 0.65 2806 +2808 4 -30.54 512.56 -11.01 0.65 2807 +2809 4 -31.88 517.53 -11.53 0.65 2808 +2810 4 -32.81 520.25 -11.18 0.65 2809 +2811 4 -34.59 524.5 -10.76 0.65 2810 +2812 4 -35.11 527.47 -11.17 0.65 2811 +2813 4 -36.54 531.0 -11.15 0.65 2812 +2814 4 -37.46 534.04 -12.51 0.65 2813 +2815 4 -38.11 536.8 -12.49 0.65 2814 +2816 4 -39.15 539.05 -13.45 0.65 2815 +2817 4 -39.8 541.51 -13.53 0.65 2816 +2818 4 -41.08 544.31 -13.82 0.65 2817 +2819 4 -43.01 547.42 -14.25 0.65 2818 +2820 4 -43.05 550.19 -14.34 0.65 2819 +2821 4 -43.57 552.83 -14.65 0.65 2820 +2822 4 -44.35 554.81 -14.47 0.65 2821 +2823 4 -45.33 556.4 -14.97 0.65 2822 +2824 4 -45.18 558.68 -14.83 0.65 2823 +2825 4 -45.56 560.87 -15.27 0.65 2824 +2826 4 -46.54 563.05 -15.64 0.65 2825 +2827 4 -47.8 564.91 -15.72 0.65 2826 +2828 4 -48.62 566.93 -15.99 0.65 2827 +2829 4 -49.69 569.52 -15.7 0.65 2828 +2830 4 -51.23 572.23 -15.3 0.65 2829 +2831 4 -52.47 575.28 -15.03 0.65 2830 +2832 4 -52.71 577.04 -15.75 0.65 2831 +2833 4 -52.46 581.04 -15.91 0.65 2832 +2834 4 -52.79 585.91 -15.41 0.65 2833 +2835 4 -53.43 588.98 -15.36 0.65 2834 +2836 4 -54.13 591.48 -15.95 0.65 2835 +2837 4 -54.63 593.8 -16.06 0.65 2836 +2838 4 -55.34 595.72 -16.87 0.65 2837 +2839 4 -56.04 597.02 -17.65 0.65 2838 +2840 4 -56.59 599.4 -18.27 0.65 2839 +2841 4 -58.6 603.8 -17.89 0.65 2840 +2842 4 -59.74 607.65 -17.79 0.65 2841 +2843 4 -61.44 612.95 -17.11 0.65 2842 +2844 4 -62.51 614.61 -16.85 0.65 2843 +2845 4 -64.65 617.03 -16.41 0.65 2844 +2846 4 -66.74 620.92 -16.99 0.65 2845 +2847 4 -68.28 626.39 -16.31 0.65 2846 +2848 4 -69.9 630.41 -16.74 0.65 2847 +2849 4 -70.57 634.1 -16.78 0.65 2848 +2850 4 -72.15 636.28 -17.02 0.65 2849 +2851 4 -74.14 639.76 -16.5 0.65 2850 +2852 4 -76.29 642.78 -16.08 0.65 2851 +2853 4 -80.28 645.82 -15.8 0.65 2852 +2854 4 -83.81 648.7 -15.27 0.65 2853 +2855 4 -86.4 652.46 -14.66 0.65 2854 +2856 4 -86.7 653.63 -16.33 0.65 2855 +2857 4 -88.69 656.8 -15.83 0.65 2856 +2858 4 -90.16 660.37 -16.26 0.65 2857 +2859 4 -90.83 664.69 -16.31 0.65 2858 +2860 4 -92.21 668.77 -15.78 0.65 2859 +2861 4 -92.89 672.19 -16.15 0.65 2860 +2862 4 -94.32 674.81 -16.28 0.65 2861 +2863 4 -95.39 676.78 -15.99 0.65 2862 +2864 4 -96.13 678.12 -17.23 0.65 2863 +2865 4 -97.23 680.42 -17.13 0.65 2864 +2866 4 -98.4 681.58 -18.04 0.65 2865 +2867 4 -99.66 684.65 -18.01 0.65 2866 +2868 4 -100.65 686.24 -18.59 0.65 2867 +2869 4 -101.65 687.22 -19.15 0.65 2868 +2870 4 -101.87 688.35 -19.78 0.65 2869 +2871 4 -102.17 690.47 -19.47 0.65 2870 +2872 4 -102.02 693.06 -19.23 0.65 2871 +2873 4 -102.79 694.41 -19.03 0.65 2872 +2874 4 -103.4 696.84 -18.74 0.65 2873 +2875 4 -103.41 699.89 -18.43 0.65 2874 +2876 4 -103.28 701.26 -18.4 0.65 2875 +2877 4 -102.84 703.86 -18.25 0.65 2876 +2878 4 -102.62 706.68 -18.84 0.65 2877 +2879 4 -102.17 708.97 -18.65 0.65 2878 +2880 4 -101.57 712.62 -18.36 0.65 2879 +2881 4 -101.12 716.13 -18.05 0.65 2880 +2882 4 -101.59 719.31 -17.7 0.65 2881 +2883 4 -101.45 723.13 -17.34 0.65 2882 +2884 4 -100.55 727.08 -17.04 0.65 2883 +2885 4 -99.54 730.7 -16.84 0.65 2884 +2886 4 -99.0 736.53 -16.86 0.65 2885 +2887 4 -98.71 738.97 -16.65 0.65 2886 +2888 4 -97.84 739.93 -17.09 0.65 2887 +2889 4 -96.18 741.32 -17.26 0.65 2888 +2890 4 -94.52 743.93 -17.16 0.65 2889 +2891 4 -93.56 748.14 -17.82 0.65 2890 +2892 4 -93.31 750.02 -18.19 0.65 2891 +2893 4 -92.56 752.01 -18.14 0.65 2892 +2894 4 -91.61 753.82 -19.26 0.65 2893 +2895 4 -90.7 754.74 -19.33 0.65 2894 +2896 4 -103.71 688.65 -19.73 0.65 2869 +2897 4 -105.4 690.34 -19.64 0.65 2896 +2898 4 -107.22 692.14 -20.81 0.65 2897 +2899 4 -108.98 692.97 -21.48 0.65 2898 +2900 4 -110.42 694.08 -21.92 0.65 2899 +2901 4 -112.79 695.52 -22.47 0.65 2900 +2902 4 -114.23 696.65 -22.99 0.65 2901 +2903 4 -115.02 697.43 -23.2 0.65 2902 +2904 4 -116.57 700.18 -23.02 0.65 2903 +2905 4 -117.92 701.51 -24.12 0.65 2904 +2906 4 -118.68 703.48 -23.87 0.65 2905 +2907 4 -119.14 706.06 -23.57 0.65 2906 +2908 4 -118.3 710.09 -23.85 0.65 2907 +2909 4 -117.2 712.04 -24.91 0.65 2908 +2910 4 -116.16 715.54 -24.73 0.65 2909 +2911 4 -115.67 719.32 -25.62 0.65 2910 +2912 4 -115.32 721.72 -26.63 0.65 2911 +2913 4 -114.96 723.78 -27.29 0.65 2912 +2914 4 -114.38 725.05 -27.67 0.65 2913 +2915 4 -113.51 726.6 -27.98 0.65 2914 +2916 4 -113.22 728.44 -27.91 0.65 2915 +2917 4 -112.84 730.5 -28.49 0.65 2916 +2918 4 -27.98 401.37 6.92 0.65 2538 +2919 4 -29.04 402.74 7.15 0.65 2918 +2920 4 -31.79 405.45 7.68 0.65 2919 +2921 4 -34.06 407.7 6.67 0.65 2920 +2922 4 -35.9 409.5 7.01 0.65 2921 +2923 4 -38.35 411.92 7.41 0.65 2922 +2924 4 -41.44 414.68 7.43 0.65 2923 +2925 4 -46.14 419.63 7.14 0.65 2924 +2926 4 -48.43 422.49 7.62 0.65 2925 +2927 4 -48.54 425.34 6.78 0.65 2926 +2928 4 -48.64 428.77 6.22 0.65 2927 +2929 4 -48.07 430.64 5.89 0.65 2928 +2930 4 -47.63 433.53 6.06 0.54 2929 +2931 4 -47.99 435.73 5.77 0.54 2930 +2932 4 -48.6 437.55 4.35 0.54 2931 +2933 4 -49.3 438.85 3.63 0.54 2932 +2934 4 -49.29 439.74 5.46 0.54 2933 +2935 4 -50.1 440.54 5.16 0.54 2934 +2936 4 -50.96 441.39 4.26 0.54 2935 +2937 4 -51.52 442.86 3.39 0.54 2936 +2938 4 -52.49 444.74 3.07 0.54 2937 +2939 4 -53.85 447.31 1.86 0.54 2938 +2940 4 -54.82 448.87 1.56 0.54 2939 +2941 4 -54.78 450.35 0.58 0.54 2940 +2942 4 -55.02 452.7 0.0 0.54 2941 +2943 4 -55.12 454.94 -0.91 0.54 2942 +2944 4 -55.78 456.2 -1.17 0.54 2943 +2945 4 -57.93 457.42 -1.09 0.54 2944 +2946 4 -60.72 460.18 -1.02 0.54 2945 +2947 4 -61.87 463.13 -1.44 0.54 2946 +2948 4 -62.44 464.91 -2.35 0.54 2947 +2949 4 -62.81 466.19 -2.88 0.54 2948 +2950 4 -62.67 466.98 -3.04 0.54 2949 +2951 4 -5.99 292.26 22.29 0.865 2088 +2952 4 -5.25 294.24 22.42 0.865 2951 +2953 4 -4.94 296.38 22.6 0.865 2952 +2954 4 -3.89 299.58 22.82 0.865 2953 +2955 4 -1.99 302.56 22.11 0.865 2954 +2956 4 -0.94 304.26 22.18 0.865 2955 +2957 4 -0.79 306.85 22.41 0.865 2956 +2958 4 -1.4 310.18 22.8 0.865 2957 +2959 4 -2.07 313.26 24.29 0.865 2958 +2960 4 -1.92 315.84 24.61 0.865 2959 +2961 4 -2.08 318.11 24.91 0.865 2960 +2962 4 -2.39 321.15 25.24 0.865 2961 +2963 4 -3.31 324.17 25.7 0.865 2962 +2964 4 -4.07 326.74 26.09 0.65 2963 +2965 4 -6.04 328.69 26.61 0.65 2964 +2966 4 -7.57 332.02 27.16 0.65 2965 +2967 4 -8.07 332.51 28.39 0.65 2966 +2968 4 -9.45 333.87 28.64 0.65 2967 +2969 4 -11.59 335.97 29.04 0.65 2968 +2970 4 -12.81 339.01 29.46 0.65 2969 +2971 4 -14.35 342.33 29.92 0.65 2970 +2972 4 -16.34 344.9 30.36 0.65 2971 +2973 4 -18.01 346.25 30.64 0.65 2972 +2974 4 -19.26 348.09 32.3 0.65 2973 +2975 4 -19.83 349.85 33.05 0.65 2974 +2976 4 -20.38 351.0 33.9 0.65 2975 +2977 4 -21.41 352.01 34.62 0.65 2976 +2978 4 -21.71 352.9 34.81 0.65 2977 +2979 4 -21.97 353.78 35.37 0.65 2978 +2980 4 -21.82 356.05 35.65 0.65 2979 +2981 4 -21.83 358.78 35.92 0.65 2980 +2982 4 -21.29 360.38 36.93 0.65 2981 +2983 4 -20.75 362.49 38.54 0.65 2982 +2984 4 -19.8 363.97 39.11 0.65 2983 +2985 4 -19.08 364.47 40.23 0.65 2984 +2986 4 -18.66 364.64 41.56 0.65 2985 +2987 4 -18.04 365.84 41.93 0.65 2986 +2988 4 -17.67 365.79 42.5 0.65 2987 +2989 4 -17.2 365.91 44.37 0.65 2988 +2990 4 -6.61 91.18 9.77 0.435 1189 +2991 4 -7.98 91.62 9.94 0.435 2990 +2992 4 -8.7 91.42 10.44 0.435 2991 +2993 4 -8.69 91.11 10.56 0.65 2992 +2994 4 -8.95 90.75 11.08 0.65 2993 +2995 4 -8.89 90.09 11.62 0.65 2994 +2996 4 -9.16 89.43 11.96 0.65 2995 +2997 4 -9.56 88.31 12.41 0.65 2996 +2998 4 -9.55 87.99 12.53 0.65 2997 +2999 4 -9.83 87.06 12.69 0.65 2998 +3000 4 -9.81 86.44 12.78 0.65 2999 +3001 4 -9.77 86.09 13.2 0.65 3000 +3002 4 -9.87 85.27 13.65 0.65 3001 +3003 4 -9.68 84.79 13.89 0.65 3002 +3004 4 -9.21 84.32 13.95 0.65 3003 +3005 4 -8.85 83.96 14.57 0.65 3004 +3006 4 -8.62 83.72 15.35 0.65 3005 +3007 4 -8.21 83.31 16.42 0.65 3006 +3008 4 -7.9 82.7 16.39 0.65 3007 +3009 4 -7.85 82.04 16.93 0.65 3008 +3010 4 -7.79 81.68 17.42 0.65 3009 +3011 4 -7.91 80.57 17.78 0.435 3010 +3012 4 -7.99 80.05 18.49 0.435 3011 +3013 4 -7.97 79.73 18.53 0.435 3012 +3014 4 -8.26 79.11 18.65 0.435 3013 +3015 4 -8.4 78.63 18.84 0.435 3014 +3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p b/examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc new file mode 100644 index 0000000..554dbe2 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc @@ -0,0 +1,226 @@ +# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. +# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. +# +#---------------------------------------------------------------------- +# This file was obtained using ban2swc.pl on file h10.txt +# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 +#---------------------------------------------------------------------- +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0. 23. 0. 3.35 -1 + 2 1 0. 18. 0. 2.5 1 + 3 1 0. 0. 0. 1.058 2 + 4 3 -4.157 -2.778 0. 0.6 3 + 5 3 -5.925 -3.510 -4.62 0.55 4 + 6 3 -15.47 -7.464 -29.560 0.4 5 + 7 3 -23.89 -9.139 -72.72 0.4 6 + 8 3 -24.39 -13.43 -83.51 0.350 6 + 9 3 -9.814 -5.121 -14.780 0.5 5 + 10 3 -15.81 -6.313 -23.93 0.5 9 + 11 3 -65.94 -16.29 -100.4 0.4 10 + 12 3 -54.5 -14.01 -82.960 0.4 10 + 13 3 -17.2 -10.06 -28.09 0.4 9 + 14 3 -78.64 -51.11 -138.70 0.4 13 + 15 3 -41.69 -26.42 -72.15 0.350 13 + 16 3 -10.11 -8.731 -20.330 0.45 4 + 17 3 -14.44 -13.06 -35.11 0.350 16 + 18 3 -26.61 -21.19 -108.7 0.3 17 + 19 3 -24.2 -27.66 -123.4 0.3 17 + 20 3 -32.3 -30.92 -96.08 0.350 16 + 21 3 -45.7 -39.87 -120.2 0.3 20 + 22 3 -56.99 -67.88 -162.60 0.350 20 + 23 3 -8.889 -13.3 0. 0.65 3 + 24 3 -11.39 -15.8 -3.54 0.55 23 + 25 3 -19.39 -23.8 -14.85 0.5 24 + 26 3 -21.7 -25.35 -19.01 0.45 25 + 27 3 -33.25 -33.06 -39.79 0.4 26 + 28 3 -64.36 -45.95 -121.10 0.350 27 + 29 3 -53.54 -53.36 -109.10 0.350 27 + 30 3 -26.32 -28.43 -27.32 0.4 26 + 31 3 -68.78 -46.02 -73.28 0.3 30 + 32 3 -71.820 -73.93 -91.67 0.350 30 + 33 3 -59.82 -84.320 -123.80 0.350 25 + 34 3 -84.52 -121.30 -190.3 0.25 33 + 35 3 -34.39 -38.80 -36.06 0.350 24 + 36 3 -96.61 -80.38 -86.06 0.3 35 + 37 3 -93.98 -128. -107.7 0.3 35 + 38 3 -15.65 -29.64 -17.68 0.5 23 + 39 3 -17.01 -32.9 -21.21 0.5 38 + 40 3 -21.95 -40.29 -34.52 0.4 39 + 41 3 -50.03 -82.33 -110.2 0.3 40 + 42 3 -49.730 -81.87 -109.30 0.350 40 + 43 3 -22.75 -61.78 -65.28 0.3 39 + 44 3 -37.30 -81.9 -74.25 0.3 38 + 45 3 -2.146 -10.790 0. 0.75 3 + 46 3 -24.77 -65.42 -24.490 0.350 45 + 47 3 -54.47 -137.1 -56.64 0.350 46 + 48 3 -55.18 -138.8 -57.4 0.350 46 + 49 3 -2.146 -20.95 -4.21 0.6 45 + 50 3 -2.146 -35.730 -10.33 0.45 49 + 51 3 -22.75 -139.3 -80.89 0.3 50 + 52 3 29. -192.3 -117. 0.350 50 + 53 3 -2.146 -25.57 -6.12 0.55 49 + 54 3 -3.103 -30.38 -7.10 0.5 53 + 55 3 -49.410 -263.2 -54.31 0.350 54 + 56 3 -22.05 -125.60 -26.41 0.3 54 + 57 3 16.990 -121.80 -25.63 0.3 53 + 58 3 2.146 -10.790 0. 0.65 3 + 59 3 2.146 -20.79 0. 0.4 58 + 60 3 2.146 -235.8 0. 0.350 59 + 61 3 2.146 -250.8 0. 0.25 60 + 62 3 4.059 -15.41 0. 0.4 58 + 63 3 8.269 -25.57 0. 0.350 62 + 64 3 35.63 -163.10 -27.90 0.4 63 + 65 3 45.32 -81.02 -13.27 0.3 63 + 66 3 20.13 -54.21 0. 0.350 62 + 67 3 35.25 -130.20 15.41 0.3 66 + 68 3 78.98 -142.3 21.07 0.350 66 + 69 3 8.889 -13.3 0. 0.6 3 + 70 3 16.67 -32.08 8.42 0.5 69 + 71 3 24.45 -50.86 16.84 0.45 70 + 72 3 49.32 -175.9 42.2 0.350 71 + 73 3 84.38 -140.6 38.30 0.350 71 + 74 3 42.45 -141.4 78.51 0.4 70 + 75 3 48.94 -174. 100.7 0.3 74 + 76 3 16.080 -20.490 4.21 0.4 69 + 77 3 99.04 -103.5 52.81 0.3 76 + 78 3 41.550 -45.97 19.13 0.3 76 + 79 3 63.71 -109.60 64.06 0.3 78 + 80 3 75.26 -126.9 77.95 0.2 79 + 81 3 18.29 -12.22 0. 0.6 3 + 82 3 20.79 -14.72 3.54 0.55 81 + 83 3 26.29 -20.22 11.31 0.5 82 + 84 3 101.10 -132.20 101.30 0.350 83 + 85 3 97.5 -67.8 68.54 0.3 83 + 86 3 47.29 -41.22 41.01 0.25 82 + 87 3 21.56 -13.58 3.54 0.5 81 + 88 3 28.09 -16.28 10.61 0.45 87 + 89 3 122.10 -79.11 86.16 0.3 88 + 90 3 85.99 -27.8 50.050 0.3 88 + 91 3 43.12 -22.51 26.87 0.4 87 + 92 3 75.45 -44.11 85.070 0.350 91 + 93 3 97.61 -33.34 110. 0.350 91 + 94 4 0. 41. 0. 2.550 1 + 95 4 0. 127. 0. 0.3 94 + 96 4 5.932 70.820 -6.05 2.25 94 + 97 4 18.37 133.3 -18.73 1.25 96 + 98 4 26.63 153.3 -23.02 0.6 97 + 99 4 56.65 225.8 -38.63 0.3 98 + 100 4 29.63 160.5 -24.580 0.6 98 + 101 4 91.850 253.70 -24.580 0.350 100 + 102 4 63.97 333.1 -24.580 0.350 100 + 103 4 18.37 142.20 -20.48 1.25 97 + 104 4 18.37 145.1 -21.07 1.25 103 + 105 4 28.28 195. -42.12 0.45 104 + 106 4 33.69 222.10 -53.6 0.350 105 + 107 4 39.1 249.3 -65.08 0.25 106 + 108 4 17.47 149.6 -22.98 1.25 104 + 109 4 4.851 213.10 -49.77 0.5 108 + 110 4 -10.07 288.1 -100.9 0.350 109 + 111 4 15.85 157.8 -26.43 1.25 108 + 112 4 15.85 182.3 -31.3 0.5 111 + 113 4 15.85 235.3 -41.84 0.350 112 + 114 4 15.85 272.2 -57.15 0.3 113 + 115 4 15.85 195.10 -33.84 0.350 112 + 116 4 30.09 266.7 -33.84 0.3 115 + 117 4 0.2380 273.5 -33.84 0.3 115 + 118 4 11.72 167.8 -28.57 1.25 111 + 119 4 3.46 187.70 -32.87 1.25 118 + 120 4 -0.506 207.60 -41.28 1.25 119 + 121 4 -3.39 222.10 -47.410 1.25 120 + 122 4 -3.39 223.8 -48.52 1.25 121 + 123 4 -3.39 247.10 -64.070 0.45 122 + 124 4 1.439 271.40 -88.820 0.3 123 + 125 4 -16.080 310.90 -129.1 0.350 123 + 126 4 -3.39 248.70 -65.19 1.25 122 + 127 4 -3.209 249.70 -65.570 1.25 126 + 128 4 1.297 272.3 -75.14 0.5 127 + 129 4 12. 326.1 -111.80 0.350 128 + 130 4 -0.506 263.2 -71.31 1.25 127 + 131 4 0.2450 265.1 -71.7 0.6 130 + 132 4 3.623 273.2 -73.45 0.55 131 + 133 4 46.230 337. -105.2 0.3 132 + 134 4 22.55 368.40 -113.60 0.350 132 + 135 4 19.01 310.40 -81.45 0.45 131 + 136 4 42.74 367.6 -81.45 0.350 135 + 137 4 -0.506 280.90 -74.820 1.25 130 + 138 4 -0.506 284.8 -75.60 0.850 137 + 139 4 14.450 360. -107.4 0.4 138 + 140 4 18.06 378.1 -115. 0.3 139 + 141 4 -14.02 352.8 -104.30 0.850 138 + 142 4 -20.330 384.5 -117.7 0.70 141 + 143 4 -20.330 441.8 -141.4 0.70 142 + 144 4 -20.330 494.40 -163.20 0.45 143 + 145 4 -20.330 544.30 -196.60 0.350 144 + 146 4 -20.330 582.6 -222.10 0.3 145 + 147 4 -20.330 622.5 -248.8 0.3 145 + 148 4 -20.330 462.1 -149.8 0.6 143 + 149 4 -7.321 527.5 -163.10 0.45 148 + 150 4 -1.389 557.30 -169.20 0.350 149 + 151 4 21.51 612.6 -181.10 0.3 150 + 152 4 -1.389 630.90 -183.8 0.25 150 + 153 4 -36.6 543.9 -166.4 0.6 148 + 154 4 -46.36 592.9 -176.4 0.350 153 + 155 4 -46.36 669.6 -208.10 0.25 154 + 156 4 -74.99 662.1 -207.4 0.25 154 + 157 4 -44.44 583.30 -174.4 0.5 153 + 158 4 -44.44 665.30 -174.4 0.350 157 + 159 4 -44.44 705.30 -174.4 0.25 158 + 160 4 -87.3 686.80 -174.4 0.350 157 + 161 4 -121.7 769.90 -174.4 0.25 160 + 162 4 -32.71 414.40 -131.1 0.45 142 + 163 4 -85.74 542.4 -188.5 0.350 162 + 164 4 -120. 625.2 -225.60 0.3 163 + 165 4 -137.4 667. -244.4 0.25 164 + 166 4 -132.4 655.1 -239. 0.2 164 + 167 4 -0.506 290.7 -76.77 0.9 137 + 168 4 6.713 327. -76.77 0.8 167 + 169 4 8.664 336.8 -76.77 0.6 168 + 170 4 12.49 356. -80.67 0.5 169 + 171 4 21.48 401.3 -89.84 0.350 170 + 172 4 13.74 362.3 -76.77 0.5 168 + 173 4 23.12 385. -71.89 0.25 172 + 174 4 13.74 396.6 -69.94 0.350 172 + 175 4 -20.6 391.70 -76.77 0.350 167 + 176 4 -15.83 311.3 -91.59 0.4 126 + 177 4 -28.44 374.70 -118.4 0.3 176 + 178 4 -14.84 249.8 -67.41 0.45 121 + 179 4 -37.12 303.6 -106.30 0.350 178 + 180 4 -55.25 347.3 -138. 0.3 178 + 181 4 -3.209 221.20 -47.02 0.45 120 + 182 4 -3.209 356.6 -73.95 0.350 181 + 183 4 -31.36 289.2 -61.660 0.350 181 + 184 4 -11.94 210.70 -44.35 0.6 119 + 185 4 -36.06 246.9 -62.33 0.5 184 + 186 4 -67.18 322. -96.01 0.3 185 + 187 4 -81.14 291.90 -88.74 0.3 185 + 188 4 1.208 193.10 -34.04 0.4 118 + 189 4 -21.42 306.90 -34.04 0.3 188 + 190 4 -77.13 310.40 -34.04 0.350 188 + 191 4 18.37 165.70 -25.17 0.5 103 + 192 4 25.78 203. -25.17 0.350 191 + 193 4 56.22 356. -25.17 0.3 192 + 194 4 50.36 326.6 -25.17 0.3 192 + 195 4 16.22 176.5 -25.17 0.350 191 + 196 4 -10.31 309.90 -25.17 0.350 195 + 197 4 2.957 243.20 -25.17 0.3 195 + 198 4 -2.105 51.58 -2.15 0.350 94 + 199 4 -20.09 142. -20.48 0.350 198 + 200 4 -3.061 56.39 -3.12 0.3 198 + 201 4 -3.061 76.39 -3.12 0.3 200 + 202 4 -3.061 142.4 -3.12 0.3 201 + 203 4 -3.061 167.4 -3.12 0.3 201 + 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc new file mode 100644 index 0000000..066eaf4 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc @@ -0,0 +1,165 @@ +# Original file ko20x-07.swc edited using StdSwc version 1.31 on 7/9/13. +# Irregularities and fixes documented in ko20x-07.swc.std. See StdSwc1.31.doc for more information. +# +# SWC to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\Uzma\NewArchives\ToBeProcessed\WuOriginal\NeuroMorph files\Hippocampal CA1 Neuron\Wu test file\Before L measure\ko20x-07-T1.swc +# +# Original neuron tracing performed in Neuromantic +# which was programmed by Darren Myatt (d.r.myatt@reading.ac.uk) +# See homepage at http://www.rdg.ac.uk/Neuromantic +# +# NEUROMANTIC V1.6.3 (2012-4-11 10:34:10): Saved to 20x-7.swc +# NEUROMANTIC V1.6.3 (6/19/2013 5:45:09 PM): Saved to ko20x-07-T1.swc +# NEUROMANTIC V1.6.3 (7/9/2013 2:47:31 PM): Saved to ko20x-07-T1.swc +1 1 0.0 0.0 0.0 13.655 -1 +2 1 10.4 -8.84 0.0 13.655 1 +3 1 -10.4 8.84 0.0 13.655 1 +4 4 3.38 17.23 0.0 3.5795 1 +5 4 6.39 30.42 -6.0 1.5 4 +6 4 5.47 41.7 -10.0 1.0 5 +7 4 4.56 52.98 -10.0 1.0 6 +8 4 5.28 61.55 -13.0 1.0 7 +9 4 4.36 72.83 -15.0 1.5 8 +10 4 3.45 84.1 -16.0 1.5 9 +11 4 -0.93 94.39 -18.0 1.5 10 +12 4 -5.96 103.91 -19.0 1.5 11 +13 4 -4.4 119.65 -22.0 2.0 12 +14 4 -5.96 130.16 -23.0 1.5 13 +15 4 -6.88 141.44 -24.0 1.5 14 +16 4 -4.39 154.41 -27.0 1.5 15 +17 4 -4.35 154.43 -36.0 0.18199 16 +18 4 -4.94 169.97 -27.0 2.0 17 +19 4 -5.86 181.25 -28.0 2.0 18 +20 4 -8.83 191.65 -28.0 1.5 19 +21 4 -13.86 201.17 -29.0 1.5 20 +22 4 -14.78 212.45 -29.0 1.5 21 +23 4 -11.35 222.66 -30.0 1.5 22 +24 4 -9.34 232.75 -30.0 1.0 23 +25 4 -6.33 239.38 -30.0 1.5 24 +26 4 -10.71 249.67 -29.0 1.5 25 +27 4 -12.92 259.42 -28.0 1.5 26 +28 4 -15.9 269.82 -27.0 1.5 27 +29 4 -16.81 281.1 -27.0 1.5 28 +30 4 -14.15 291.96 -27.0 1.5 29 +31 4 -11.48 302.81 -27.0 2.0 30 +32 4 -10.11 312.15 -32.0 2.0 31 +33 4 -3.64 319.77 -35.0 2.0 32 +34 4 6.1 321.98 -36.0 2.0 33 +35 4 12.58 329.6 -37.0 2.0 34 +36 4 16.01 339.81 -38.0 2.0 35 +37 4 17.07 344.16 -44.0 1.5 36 +38 4 19.09 354.25 -45.0 1.5 37 +39 4 15.47 363.89 -45.0 1.5 38 +40 4 9.14 371.89 -44.0 1.5 39 +41 4 1.52 378.36 -42.0 1.5 40 +42 4 -5.44 385.6 -42.0 1.5 41 +43 4 -8.42 396.0 -42.0 1.5 42 +44 4 -13.45 405.52 -42.0 1.0 43 +45 4 -19.12 414.28 -42.0 1.5 44 +46 4 -19.13 414.43 -42.0 0.10175 45 +47 4 -25.45 422.28 -41.0 1.0 46 +48 4 -26.14 430.74 -40.0 1.0 47 +49 4 -27.05 442.02 -39.0 1.0 48 +50 4 -27.21 452.65 -39.0 1.5 49 +51 4 -24.41 464.05 -45.0 2.4622 50 +52 4 -13.72 417.56 -42.0 1.0 46 +53 4 -7.24 425.18 -41.0 1.0 52 +54 4 -2.29 434.1 -39.0 1.0 53 +55 4 -0.27 444.19 -39.0 1.0 54 +56 4 -38.44 416.26 -47.0 1.5 45 +57 4 -49.07 416.11 -48.0 1.5 56 +58 4 29.79 362.22 -51.0 2.0 38 +59 4 40.31 363.78 -51.0 2.0 58 +60 4 50.71 366.75 -51.0 3.0 59 +61 4 4.09 285.64 -25.0 1.5 30 +62 4 13.65 281.45 -25.0 1.5 61 +63 4 -25.07 234.31 -30.0 1.5 23 +64 4 -32.69 240.79 -29.0 1.5 63 +65 4 -39.66 248.03 -29.0 1.0 64 +66 4 -46.64 255.26 -29.0 1.0 65 +67 4 7.5 173.82 -30.0 1.0 17 +68 4 12.26 182.9 -29.0 2.25 67 +69 4 -13.4 169.28 -36.0 2.0 16 +70 4 -21.02 175.76 -33.0 2.0 69 +71 4 -28.64 182.23 -36.0 2.5 70 +72 4 11.85 146.51 -28.0 1.5 15 +73 4 20.73 150.78 -28.0 3.5 72 +74 4 -16.78 130.17 -30.0 1.5207 14 +75 4 -20.5 130.04 -30.0 2.0 74 +76 3 4.32 -18.33 0.0 2.5 1 +77 3 7.16 -22.71 1.0 1.5 76 +78 3 13.49 -30.71 1.0 2.0 77 +79 3 21.76 -36.42 -3.0 2.0 78 +80 3 32.61 -39.09 -5.0 1.5 79 +81 3 43.47 -41.75 -6.0 1.5 80 +82 3 51.93 -41.06 -6.0 1.0 81 +83 3 62.56 -40.91 -6.0 1.0 82 +84 3 72.65 -42.93 -7.0 1.0 83 +85 3 82.75 -44.94 -7.0 1.0 84 +86 3 93.61 -47.61 -8.0 1.5 85 +87 3 103.29 -53.21 -8.0 1.5 86 +88 3 113.38 -55.22 -9.0 1.5 87 +89 3 122.3 -60.18 -9.0 1.5 88 +90 3 23.43 -48.35 3.0 1.0 79 +91 3 31.7 -54.06 4.0 1.0 90 +92 3 42.56 -56.72 4.0 1.0 91 +93 3 -1.45 -17.03 -1.0 2.1506 1 +94 3 -6.05 -25.91 0.0 1.5 93 +95 3 -11.0 -34.83 -2.0 1.0 94 +96 3 -19.76 -40.51 -1.0 1.0 95 +97 3 -27.76 -46.83 1.0 1.0 96 +98 3 -35.0 -53.81 2.0 1.0 97 +99 3 -40.18 -59.9 4.0 1.0 98 +100 3 -45.13 -68.82 5.0 1.0 99 +101 3 -50.08 -77.73 8.0 1.0 100 +102 3 -54.38 -85.89 10.0 1.0 101 +103 3 -54.99 -95.87 10.0 1.0 102 +104 3 -57.0 -105.96 11.0 1.0 103 +105 3 -41.81 -51.52 2.0 1.2693 98 +106 3 -49.15 -54.25 2.0 1.3333 105 +107 3 -6.96 -40.89 -5.0 1.0 95 +108 3 -2.58 -51.17 -7.0 1.0 107 +109 3 -1.01 -61.69 -10.0 1.0 108 +110 3 1.84 -70.68 -11.0 1.0 109 +111 3 -0.82 -81.53 -13.0 1.5 110 +112 3 -0.66 -92.16 -14.0 1.5 111 +113 3 -4.09 -102.37 -15.0 1.5 112 +114 3 -8.28 -111.94 -16.0 1.5 113 +115 3 -7.7 -118.98 -19.0 1.0 114 +116 3 -6.79 -130.26 -21.0 1.5 115 +117 3 -6.63 -140.89 -23.0 1.5 116 +118 3 -10.06 -151.1 -24.0 1.5 117 +119 3 5.42 -71.09 -11.0 2.5 109 +120 3 9.04 -80.73 -13.0 1.5 119 +121 3 11.25 -90.48 -14.0 1.5 120 +122 3 15.29 -96.54 -18.0 1.5 121 +123 3 20.97 -105.3 -24.0 1.5 122 +124 3 22.84 -110.83 -26.0 1.5 123 +125 3 20.82 -120.92 -26.0 1.5 124 +126 3 -12.14 -14.17 3.0 2.3049 1 +127 3 -23.12 -16.66 6.0 1.0 126 +128 3 -32.87 -18.87 6.0 1.0 127 +129 3 -42.39 -23.9 8.0 1.0 128 +130 3 -55.74 -25.45 5.0 1.0541 129 +131 3 -67.32 -24.15 5.0 1.3017 130 +132 3 -76.81 -32.49 5.0 1.2134 131 +133 3 -85.84 -33.34 5.0 2.1213 132 +134 3 -22.46 -26.18 11.0 1.8333 126 +135 3 -32.88 -40.51 13.0 1.2133 134 +136 3 -43.11 -47.14 12.0 1.0 135 +137 3 -51.92 -60.86 12.0 1.5092 136 +138 3 -14.02 -6.34 3.0 2.5739 1 +139 3 -30.43 -5.19 5.0 1.0 138 +140 3 -41.06 -5.35 5.0 1.0 139 +141 3 -51.04 -4.74 3.0 1.0 140 +142 3 -61.67 -4.89 2.0 1.0 141 +143 3 -71.65 -4.29 1.0 1.0 142 +144 3 -82.93 -5.2 0.0 1.0 143 +145 3 -94.21 -6.12 0.0 1.0 144 +146 3 -38.36 -15.29 7.0 1.3333 139 +147 3 -45.07 -18.56 7.0 0.89754 146 +148 3 -50.51 -15.69 7.0 1.1667 147 +149 3 -58.94 -18.15 7.0 1.2693 148 +150 3 -26.71 -13.17 9.0 0.84984 138 +151 3 -41.67 -26.91 9.0 1.3333 150 +152 3 -48.31 -28.28 9.0 0.89753 151 diff --git a/examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml b/examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml new file mode 100644 index 0000000..2a3815b --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml @@ -0,0 +1,12673 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + soma_group + + + + soma_group + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + axon_group + soma_group + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + all + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/Ca.xml b/examples/paper-2015/Fig2_elecModels/chans/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/CaConc.xml b/examples/paper-2015/Fig2_elecModels/chans/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml b/examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml new file mode 100644 index 0000000..58cc74e --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml @@ -0,0 +1,32 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml b/examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml new file mode 100644 index 0000000..d2f3f34 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml @@ -0,0 +1,59 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 + +Cell Group: CA1_CG contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/Glu.xml b/examples/paper-2015/Fig2_elecModels/chans/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/HChannel.xml b/examples/paper-2015/Fig2_elecModels/chans/HChannel.xml new file mode 100644 index 0000000..c1c91b4 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/HChannel.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml b/examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml new file mode 100644 index 0000000..dfd1d3c --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml @@ -0,0 +1,49 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations adapted from HH paper for modern convention of external potential being zero + + Padraig Gleeson + + + + Simple example of K conductance in squid giant axon. Based on channel from Hodgkin and Huxley 1952 + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + A. L. Hodgkin and A. F. Huxley, A quantitative description of membrane current and its application + to conduction and excitation in nerve, J. Physiol., vol. 117, pp. 500-544, 1952. + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12991237 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml b/examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml new file mode 100644 index 0000000..c40270d --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/NMDA.xml b/examples/paper-2015/Fig2_elecModels/chans/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml b/examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml new file mode 100644 index 0000000..5e52c69 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml @@ -0,0 +1,58 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations adapted from HH paper for modern convention of external potential being zero + + Padraig Gleeson + + + + Simple example of Na conductance in squid giant axon. Based on channel from Hodgkin and Huxley 1952 + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + A. L. Hodgkin and A. F. Huxley, A quantitative description of membrane current and + its application to conduction and excitation in nerve, J. Physiol., vol. 117, pp. 500-544, 1952. + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12991237 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/hd.xml b/examples/paper-2015/Fig2_elecModels/chans/hd.xml new file mode 100644 index 0000000..a882baa --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/kad.xml b/examples/paper-2015/Fig2_elecModels/chans/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/kap.xml b/examples/paper-2015/Fig2_elecModels/chans/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/kdr.xml b/examples/paper-2015/Fig2_elecModels/chans/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/na3.xml b/examples/paper-2015/Fig2_elecModels/chans/na3.xml new file mode 100644 index 0000000..94e9713 --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/nax.xml b/examples/paper-2015/Fig2_elecModels/chans/nax.xml new file mode 100644 index 0000000..1225d6a --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/paper-2015/Fig2_elecModels/chans/pas.xml b/examples/paper-2015/Fig2_elecModels/chans/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/paper-2015/Fig2_elecModels/chans/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig3_chemModels/Fig3ABC.g b/examples/paper-2015/Fig3_chemModels/Fig3ABC.g new file mode 100644 index 0000000..d784b24 --- /dev/null +++ b/examples/paper-2015/Fig3_chemModels/Fig3ABC.g @@ -0,0 +1,832 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun May 18 16:56:17 2014 + +include kkit {argv 1} + +FASTDT = 5e-05 +SIMDT = 0.01 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 10000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 3e-18 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 0 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/lac_gene 0 yellow black x 0 0 "" lac_gene \ + /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 27 0 0 +simundump text /kinetics/lac_gene/notes 0 \ + "This is a group of reactions resulting in the production\nof Lac" +call /kinetics/lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac" +simundump kpool /kinetics/lac_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 52 yellow 26 -12 0 +simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 0 0 0 \ + 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 26 -11 0 +simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes 0 \ + "Rates from\nBox 1 Elowitz et al Nature (2000)\n403: 335-338" +call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +simundump kreac /kinetics/lac_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ + yellow 30 -13 0 +simundump text /kinetics/lac_gene/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/lac_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 yellow 33 -12 0 +simundump text /kinetics/lac_gene/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/lac_gene/l_op_1rst_bound/lac_transcription 0 0 0 0 0 \ + 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 33 -10 0 +simundump text /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes 0 \ + "Rates from\nBox 1 Elowitz et al Nature 2000\n403: 335-338" +call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature 2000" \ +"403: 335-338" +simundump kreac /kinetics/lac_gene/inhib_reac 0 0.0055556 2.24 "" white \ + yellow 36 -13 0 +simundump text /kinetics/lac_gene/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 224 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/lac_gene/lac_operator 0 0 0.022222 0.022222 40 40 0 \ + 0 1800 0 /kinetics/geometry 36 yellow 40 -12 0 +simundump text /kinetics/lac_gene/lac_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/lac_gene/lac_operator/lac_transcription2 0 0 0 0 0 \ + 1800 2.4998 2 0.5 0 1 "" red 36 "" 40 -11 0 +simundump text /kinetics/lac_gene/lac_operator/lac_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\n403:335-338" +call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"403:335-338" +simundump kpool /kinetics/lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 yellow 26 -8 0 +simundump text /kinetics/lac_gene/lac_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" 20 -10 0 +simundump text /kinetics/lac_gene/lac_mRNA/lac_translation/notes 0 \ + "Rates from \nBox 1 Elowitz et al Nature (2000)\n403: 335-338" +call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +simundump kpool /kinetics/lac_gene/lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 62 yellow 20 -15 0 +simundump text /kinetics/lac_gene/lac/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kpool /kinetics/lac_gene/degraded_lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 yellow 20 -19 0 +simundump text /kinetics/lac_gene/degraded_lac/notes 0 \ + "Degradation product of lac protein" +call /kinetics/lac_gene/degraded_lac/notes LOAD \ +"Degradation product of lac protein" +simundump kpool /kinetics/lac_gene/degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 yellow 33 -8 0 +simundump text /kinetics/lac_gene/degraded_lac_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kreac /kinetics/lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ + yellow 29 -7 0 +simundump text /kinetics/lac_gene/lac_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kreac /kinetics/lac_gene/lac_degradation 0 0.016666 0 "" white \ + yellow 20 -17 0 +simundump text /kinetics/lac_gene/lac_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to scaled by approx 1.4 to get desired levels\n\nElowitz et al Nature 2000. Vol403 335-338" +call /kinetics/lac_gene/lac_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz et al Nature 2000. Vol403 335-338" +simundump kpool /kinetics/lac_gene/AminoAcids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 20 -8 0 +simundump text /kinetics/lac_gene/AminoAcids/notes 0 "" +call /kinetics/lac_gene/AminoAcids/notes LOAD \ +"" +simundump kpool /kinetics/lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 40 -8 0 +simundump text /kinetics/lac_gene/Nucleotides/notes 0 "" +call /kinetics/lac_gene/Nucleotides/notes LOAD \ +"" +simundump group /kinetics/TetR_gene 0 61 black x 0 0 "" TetR_gene \ + /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 -2 0 0 +simundump text /kinetics/TetR_gene/notes 0 \ + "This is a group of reactions resulting in the production\nof Tet R" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" +simundump kpool /kinetics/TetR_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 46 61 -3 -12 0 +simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 0 0 \ + 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" -3 -11 0 +simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes 0 \ + "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ + 61 1 -13 0 +simundump text /kinetics/TetR_gene/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/TetR_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 61 4 -12 0 +simundump text /kinetics/TetR_gene/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription 0 0 0 0 \ + 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 4 -10 0 +simundump text /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes 0 \ + "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/inhib_reac 0 0.0055556 2.24 "" white 61 7 \ + -13 0 +simundump text /kinetics/TetR_gene/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 11 61 -9 -15 0 +simundump text /kinetics/TetR_gene/TetR/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kpool /kinetics/TetR_gene/degraded_TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 61 -9 -19 0 +simundump text /kinetics/TetR_gene/degraded_TetR/notes 0 \ + "Degradation product of lac protein" +call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ +"Degradation product of lac protein" +simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ + -9 -17 0 +simundump text /kinetics/TetR_gene/TetR_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get appropriate levels\n\nElowitz etal Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +simundump kpool /kinetics/TetR_gene/TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 61 -3 -8 0 +simundump text /kinetics/TetR_gene/TetR_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/TetR_gene/TetR_mRNA/TetR_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" -9 -10 0 +simundump text /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/TetR_mRNA_degradation 0 0.005775 0 "" \ + white 61 1 -7 0 +simundump text /kinetics/TetR_gene/TetR_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kpool /kinetics/TetR_gene/degraded_TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 61 4 -8 0 +simundump text /kinetics/TetR_gene/degraded_TetR_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ + 0 0 1800 0 /kinetics/geometry 36 61 11 -12 0 +simundump text /kinetics/TetR_gene/TetR_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_transcription2 0 0 0 0 \ + 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 11 -11 0 +simundump text /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 11 -8 0 +simundump text /kinetics/TetR_gene/Nucleotides/notes 0 "" +call /kinetics/TetR_gene/Nucleotides/notes LOAD \ +"" +simundump kpool /kinetics/TetR_gene/AminoAcids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 -9 -8 0 +simundump text /kinetics/TetR_gene/AminoAcids/notes 0 "" +call /kinetics/TetR_gene/AminoAcids/notes LOAD \ +"" +simundump group /kinetics/Lcl 0 15 black x 0 0 "" yellow \ + /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 56 0 0 +simundump text /kinetics/Lcl/notes 0 \ + "This is a group of reactions resulting in the production\nof Lambda cl" +call /kinetics/Lcl/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +simundump kpool /kinetics/Lcl/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 52 15 55 -12 0 +simundump text /kinetics/Lcl/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 0 0 0 0 0 \ + 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 55 -11 0 +simundump text /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes 0 "" +call /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes LOAD \ +"" +simundump kreac /kinetics/Lcl/inhib_reac[1] 0 0.0055556 0.09 "" white 15 59 \ + -13 0 +simundump text /kinetics/Lcl/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/Lcl/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 15 62 -12 0 +simundump text /kinetics/Lcl/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription 0 0 0 0 0 1800 \ + 0.0024998 0.002 0.0005 0 1 "" red 2 "" 62 -10 0 +simundump text /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/Lcl/inhib_reac 0 0.0055556 2.24 "" white 15 65 -13 \ + 0 +simundump text /kinetics/Lcl/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/Lcl/AminoAcids 0 0 0.00055555 0.00055555 0.99999 \ + 0.99999 0 0 1800 4 /kinetics/geometry 52 15 48 -8 0 +simundump text /kinetics/Lcl/AminoAcids/notes 0 "" +call /kinetics/Lcl/AminoAcids/notes LOAD \ +"" +simundump kpool /kinetics/Lcl/Nucleotides 0 0 0.00055555 0.00055555 0.99999 \ + 0.99999 0 0 1800 4 /kinetics/geometry 6 15 69 -8 0 +simundump text /kinetics/Lcl/Nucleotides/notes 0 "" +call /kinetics/Lcl/Nucleotides/notes LOAD \ +"" +simundump kreac /kinetics/Lcl/Lcl_mRNA_degradation 0 0.005775 0 "" white 15 \ + 58 -7 0 +simundump text /kinetics/Lcl/Lcl_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kpool /kinetics/Lcl/Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 5 15 55 -8 0 +simundump text /kinetics/Lcl/Lcl_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/Lcl/Lcl_mRNA/Lcl_translation 0 0 0 0 0 1800 0.83494 \ + 0.668 0.167 0 1 "" red 5 "" 48 -10 0 +simundump text /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +simundump kpool /kinetics/Lcl/Lcl 0 0 0.055555 0.055555 99.999 99.999 0 0 \ + 1800 0 /kinetics/geometry 24 15 48 -15 0 +simundump text /kinetics/Lcl/Lcl/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kreac /kinetics/Lcl/Lcl_degradation 0 0.016666 0 "" white 15 48 -17 \ + 0 +simundump text /kinetics/Lcl/Lcl_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get the desired levels\n\nElowitz etal Nature 2000. Vol403 335-338" +call /kinetics/Lcl/Lcl_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get the desired levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +simundump kpool /kinetics/Lcl/degraded_Lcl 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 15 48 -19 0 +simundump text /kinetics/Lcl/degraded_Lcl/notes 0 \ + "Degradation product of lac protein" +call /kinetics/Lcl/degraded_Lcl/notes LOAD \ +"Degradation product of lac protein" +simundump kpool /kinetics/Lcl/degraded_Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 15 62 -8 0 +simundump text /kinetics/Lcl/degraded_Lcl_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kpool /kinetics/Lcl/Lcl_operator 0 0 0.022222 0.022222 40 40 0 0 \ + 1800 0 /kinetics/geometry 36 15 69 -12 0 +simundump text /kinetics/Lcl/Lcl_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/Lcl/Lcl_operator/Lcl_transcription2 0 0 0 0 0 1800 \ + 2.4998 2 0.5 0 1 "" red 36 "" 69 -11 0 +simundump text /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" +call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 10000 0 2.0691 0 +simundump xgraph /graphs/conc2 0 0 10000 0 3.33 0 +simundump xplot /graphs/conc1/TetR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 11 0 0 1 +simundump xplot /graphs/conc1/lac.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc1/Lcl.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 24 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 10000 0 95.756 0 +simundump xgraph /moregraphs/conc4 0 0 10000 0 1 0 +simundump xcoredraw /edit/draw 0 -11 71 -21 2 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"Repressilator model: A synthetic oscillatory network" \ +"of transcriptional regulators designed by Michael B. Elowitz and" \ +"Stanislas Leibler 2000 Nature 403(6767):335-338" +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/inhib_reac[1] PRODUCT n +addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/l_op_1rst_bound REAC B A +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_1rst_bound REAC A B +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/l_op_1rst_bound/lac_transcription ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_1rst_bound/lac_transcription SUBSTRATE n +addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac PRODUCT n +addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/lac_operator REAC A B +addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/lac_operator/lac_transcription2 ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/lac_operator/lac_transcription2 SUBSTRATE n +addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/lac_mRNA REAC A B +addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA/lac_translation ENZYME n +addmsg /kinetics/lac_gene/AminoAcids /kinetics/lac_gene/lac_mRNA/lac_translation SUBSTRATE n +addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/lac MM_PRD pA +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/degraded_lac REAC B A +addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/degraded_lac_mRNA REAC B A +addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation SUBSTRATE n +addmsg /kinetics/lac_gene/degraded_lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation PRODUCT n +addmsg /kinetics/lac_gene/degraded_lac /kinetics/lac_gene/lac_degradation PRODUCT n +addmsg /kinetics/lac_gene/lac /kinetics/lac_gene/lac_degradation SUBSTRATE n +addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/AminoAcids REAC sA B +addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 SUBSTRATE n +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/inhib_reac[1] PRODUCT n +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_1rst_bound REAC A B +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/l_op_1rst_bound REAC B A +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription SUBSTRATE n +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac PRODUCT n +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/TetR MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lcl/inhib_reac /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/degraded_TetR REAC B A +addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/TetR_mRNA REAC A B +addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA/TetR_translation ENZYME n +addmsg /kinetics/TetR_gene/AminoAcids /kinetics/TetR_gene/TetR_mRNA/TetR_translation SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/degraded_TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation PRODUCT n +addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/degraded_TetR_mRNA REAC B A +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/TetR_operator REAC A B +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_transcription2 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_transcription2 SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/AminoAcids REAC sA B +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 SUBSTRATE n +addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/inhib_reac[1] PRODUCT n +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_1rst_bound REAC A B +addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/l_op_1rst_bound REAC B A +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription SUBSTRATE n +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac PRODUCT n +addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/inhib_reac SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac SUBSTRATE n +addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/AminoAcids REAC sA B +addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation SUBSTRATE n +addmsg /kinetics/Lcl/degraded_Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation PRODUCT n +addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/Lcl_mRNA REAC A B +addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA/Lcl_translation ENZYME n +addmsg /kinetics/Lcl/AminoAcids /kinetics/Lcl/Lcl_mRNA/Lcl_translation SUBSTRATE n +addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/Lcl MM_PRD pA +addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/lac_gene/inhib_reac /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/Lcl/Lcl /kinetics/Lcl/Lcl_degradation SUBSTRATE n +addmsg /kinetics/Lcl/degraded_Lcl /kinetics/Lcl/Lcl_degradation PRODUCT n +addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/degraded_Lcl REAC B A +addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/degraded_Lcl_mRNA REAC B A +addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/Lcl_operator REAC A B +addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/Lcl_operator/Lcl_transcription2 ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/Lcl_operator/Lcl_transcription2 SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *11 +addmsg /kinetics/lac_gene/lac /graphs/conc1/lac.Co PLOT Co *lac.Co *62 +addmsg /kinetics/Lcl/Lcl /graphs/conc1/Lcl.Co PLOT Co *Lcl.Co *24 +enddump +// End of dump + +call /kinetics/lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac" +call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature 2000" \ +"403: 335-338" +call /kinetics/lac_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/lac_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"403:335-338" +call /kinetics/lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +call /kinetics/lac_gene/lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/degraded_lac/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/lac_gene/lac_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz et al Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lcl/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lcl/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +call /kinetics/Lcl/Lcl/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get the desired levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +call /kinetics/Lcl/degraded_Lcl/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/Lcl/Lcl_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +complete_loading diff --git a/examples/paper-2015/Fig3_chemModels/Fig3D.py b/examples/paper-2015/Fig3_chemModels/Fig3D.py new file mode 100644 index 0000000..b2117f2 --- /dev/null +++ b/examples/paper-2015/Fig3_chemModels/Fig3D.py @@ -0,0 +1,67 @@ +import numpy +import pylab +import moose +import time + +''' +This example implements a reaction-diffusion like system which is +bistable and propagates losslessly. It is based on the NEURON example +rxdrun.py, but incorporates more compartments and runs for a longer time. +The system is implemented in a function rather than as a proper system +of chemical reactions. Please see rxdReacDiffusion.py for a variant that +uses a reaction plus a function object to control its rates. +''' + +dt = 0.1 + +# define the geometry +compt = moose.CylMesh( '/cylinder' ) +compt.r0 = compt.r1 = 1 +compt.x1 = 100 +compt.diffLength = 0.2 +assert( compt.numDiffCompts == compt.x1/compt.diffLength ) + +#define the molecule. Its geometry is defined by its parent volume, cylinder +c = moose.Pool( '/cylinder/pool' ) +c.diffConst = 1 # define diffusion constant + +# Here we set up a function calculation +func = moose.Function( '/cylinder/pool/func' ) +func.expr = "-x0 * (0.3 - x0) * (1 - x0)" +func.x.num = 1 #specify number of input variables. + +#Connect the molecules to the func +moose.connect( c, 'nOut', func.x[0], 'input' ) +#Connect the function to the pool +moose.connect( func, 'valueOut', c, 'increment' ) + +#Set up solvers +ksolve = moose.Ksolve( '/cylinder/ksolve' ) +dsolve = moose.Dsolve( '/cylinder/dsolve' ) +stoich = moose.Stoich( '/cylinder/stoich' ) +stoich.compartment = compt +stoich.ksolve = ksolve +stoich.dsolve = dsolve +stoich.path = '/cylinder/##' +for i in range( 10, 18 ): + moose.setClock( i, dt ) + +#initialize +x = numpy.arange( 0, compt.x1, compt.diffLength ) +c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] + +# Run and plot it. +moose.reinit() +updateDt = 50 +runtime = updateDt * 4 +plt = pylab.plot( x, c.vec.n, label='t = 0 ') +t1 = time.time() +for t in range( 0, runtime-1, updateDt ): + moose.start( updateDt ) + plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) +print "Time = ", time.time() - t1 + +pylab.ylim( 0, 1.05 ) +pylab.legend() +pylab.show() + diff --git a/examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py b/examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py new file mode 100644 index 0000000..ea4330c --- /dev/null +++ b/examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py @@ -0,0 +1,44 @@ +from neuron import h, rxd +import numpy +from matplotlib import pyplot +import time + +# needed for standard run system +h.load_file('stdrun.hoc') + +dend = h.Section() +dend.nseg = 501 + +# WHERE the dynamics will take place +where = rxd.Region(h.allsec()) + +# WHO the actors are +u = rxd.Species(where, d=1, initial=0) + +# HOW they act +bistable_reaction = rxd.Rate(u, -u * (1 - u) * (0.3 - u)) + +# initial conditions +h.finitialize() +for node in u.nodes: + if node.x < .2: node.concentration = 1 + +def plot_it(color='k'): + y = u.nodes.concentration + x = u.nodes.x + + # convert x from normalized position to microns + x = dend.L * numpy.array(x) + + pyplot.plot(x, y, color) + +plot_it('r') +interval = 50 + +t1 = time.time() +for i in xrange(1, 5): + h.continuerun(i * interval) + plot_it() +print "Time = ", time.time() - t1 + +pyplot.show() diff --git a/examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g b/examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g new file mode 100644 index 0000000..41b8311 --- /dev/null +++ b/examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g @@ -0,0 +1,2076 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Nov 15 09:10:36 2015 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black -4 -26 \ + 0 +simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 1 \ + -24 0 +simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 4 \ + -20 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 3 -6 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-18 3 sphere "" white black -2 \ + -12 0 +simundump geometry /kinetics/geometry[5] 0 1e-18 3 sphere "" white black 9 \ + -11 0 +simundump geometry /kinetics/geometry[6] 0 9e-20 3 sphere "" white black 10 \ + -15 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 12 20 70 33 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.083325 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.083325 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry cyan yellow 44 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ + "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ + 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry orange yellow 35.35 21.88 0 +simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ + "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 36 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ + 26 0 +simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ + "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ + 17 26 0 +simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ + "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 22 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry orange yellow 21 22 0 +simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ + "Dephosph is mainly by PP2B" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 1 yellow -1 33 0 +simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.5 "" white \ + yellow 21 40 0 +simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue yellow 12 33 0 +simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.69444 1 "" white yellow \ + 7 40 0 +simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.62499 \ + 0.59998 0.15 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.62499 \ + 0.59998 0.15 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PKA-active 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry yellow 20 14 17 0 +simundump text /kinetics/PSD/PKA-active/notes 0 "" +call /kinetics/PSD/PKA-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ + 0.012345 4 1 0 0 "" red 27 "" 27 19 0 +simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" +call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ +"" +simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ + defaultfile.g 0 0 0 39 32 0 +simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 0.5 3 12 0 0 6 0 \ + /kinetics/geometry 29 33 74 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ + 0.066667 8 2 0 0 "" red 29 "" 72 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ + 0.016667 2 0.5 0 0 "" red 29 "" 59 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ + 0.2 24 6 0 0 "" red 29 "" 78 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 23 33 84 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 59 33 52 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 47 33 61 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ + 0 7.732 0.10417 8 2 0 0 "" red 47 "" 72 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ + 54.001 0.3125 24 6 0 0 "" red 47 "" 78 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ + 7.732 0.026042 2 0.5 0 0 "" red 47 "" 60 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 0.5 0.5 3 3 0 0 6 0 \ + /kinetics/geometry blue 33 81 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ + 0.0022 "" white 33 54 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ + white 33 65 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ + /kinetics/geometry blue 33 67 8 0 +simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ + "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.002 0 "" white 33 56 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ + "Same as for transloc_1\n\n\n" +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.002 0 "" white 33 63 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ + 75 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ + "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ + 89 13 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry 47 33 56 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 50 33 63 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 62 33 75 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 0 33 81 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 30 33 88 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[7] 50 black 66 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[7] 2 black 84 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 0 \ + 0 6 0 /kinetics/geometry[7] 46 black 58 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 5e-13 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[7] 61 black 78 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry[7] 36 black 91 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 57 33 69 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry[7] 54 black 73 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ + 20 45 17 0 +simundump text /kinetics/PSD/PP2A/notes 0 "" +call /kinetics/PSD/PP2A/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ + "k1 changed from 3.3e-6 to 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 0 0 0 0 54.001 0.0013289 \ + 0.92593 0.22222 0 0 "" red red "" 27 20 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ + "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM 1 5e-13 20 20 120 120 0 0 6 0 \ + /kinetics/geometry pink blue 35 39 0 +simundump text /kinetics/PSD/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.6 10 "" white blue 49 \ + 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10\n24 Sep 2015\nThis is a bit too low affinity. Changing to match K2 at \nKd = 2.8." +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ +"24 Sep 2015" \ +"This is a bit too low affinity. Changing to match K2 at " \ +"Kd = 2.8." +simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry hotpink blue 47 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ + 37 36 0 +simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 43 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ + 45 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ + blue 41 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 39 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry red blue 43 33 0 +simundump text /kinetics/PSD/CaM/Ca/notes 0 "" +call /kinetics/PSD/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue blue 52 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ + /kinetics/geometry[3] blue black 49 33 0 +simundump text /kinetics/PSD/CaM/Ca_input/notes 0 "" +call /kinetics/PSD/CaM/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/Ca_stim 0 50 50 "" white black 46 31 0 +simundump text /kinetics/PSD/CaM/Ca_stim/notes 0 "" +call /kinetics/PSD/CaM/Ca_stim/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM_CaN 1 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 1 20 30 33 0 +simundump text /kinetics/PSD/CaM_CaN/notes 0 "" +call /kinetics/PSD/CaM_CaN/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/CaN_1 0 0 0 0 0 6 0.033333 8 2 0 0 "" \ + red pink "" -6 -4 0 +simundump text /kinetics/PSD/CaM_CaN/CaN_1/notes 0 "" +call /kinetics/PSD/CaM_CaN/CaN_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/CaN_2 0 0 0 0 0 6 0.033333 8 2 0 0 "" \ + red pink "" -2 -4 0 +simundump text /kinetics/PSD/CaM_CaN/CaN_2/notes 0 "" +call /kinetics/PSD/CaM_CaN/CaN_2/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ + 11 -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump group /kinetics/DEND/CaM 1 blue 13 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 34 -32 0 +simundump text /kinetics/DEND/CaM/notes 0 "" +call /kinetics/DEND/CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaM/CaM 1 5e-13 1 1 600 600 0 0 600 0 \ + /kinetics/geometry pink blue 38 -30 0 +simundump text /kinetics/DEND/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/DEND/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-Ca3-bind-Ca 1 0.006 10 "" white blue \ + 52 -33 0 +simundump text /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/DEND/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry hotpink blue 50 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca3/notes 0 "" +call /kinetics/DEND/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-bind-Ca 1 0.014141 8.4853 "" white \ + blue 40 -33 0 +simundump text /kinetics/DEND/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/DEND/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry pink blue 46 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/DEND/CaM/CaM-Ca2-bind-Ca 1 0.006 10 "" white blue \ + 48 -33 0 +simundump text /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-Ca-bind-Ca 1 0.014141 8.4853 "" white \ + blue 44 -33 0 +simundump text /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/DEND/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry pink blue 42 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/DEND/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry blue blue 55 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca4/notes 0 "" +call /kinetics/DEND/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaM/CaM_x2 0 10 10 "" white black 28 -30 0 +simundump text /kinetics/DEND/CaM/CaM_x2/notes 0 "" +call /kinetics/DEND/CaM/CaM_x2/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[1] blue blue 19 -32 0 +simundump text /kinetics/DEND/CaM/CaM_xchange/notes 0 "" +call /kinetics/DEND/CaM/CaM_xchange/notes LOAD \ +"" +simundump group /kinetics/DEND/CaMKII_BULK 0 33 13 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 42 -37 0 +simundump text /kinetics/DEND/CaMKII_BULK/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/tot-auto 0 0 0.18 0.5 300 108 0 0 \ + 600 0 /kinetics/geometry 29 33 77 -33 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.00066667 8 2 0 0 "" red 29 "" 75 -46 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 69.588 \ + 0.00016667 2 0.5 0 0 "" red 29 "" 62 -46 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 486.01 \ + 0.002 24 6 0 0 "" red 29 "" 81 -46 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/tot_CaMKII 0 0 0.18 1.18 708 108 0 \ + 0 600 0 /kinetics/geometry 23 33 87 -33 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 600 \ + 0 /kinetics/geometry 47 33 64 -36 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 \ + 0 0 69.588 0.0010417 8 2 0 0 "" red 47 "" 75 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.003125 24 6 0 0 "" red 47 "" 81 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.00026042 2 0.5 0 0 "" red 47 "" 63 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/basal_CaMKII 0 0 0.5 0.5 300 300 0 \ + 0 600 0 /kinetics/geometry blue 33 84 -36 0 +simundump text /kinetics/DEND/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 0.10945 \ + 0.0022 "" white 33 57 -41 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM 0 0.10945 2.2 "" \ + white 33 68 -41 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 \ + 0 0 600 0 /kinetics/geometry 47 33 59 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 600 \ + 0 /kinetics/geometry 50 33 66 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry 57 33 72 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII 0 5e-13 1 1 600 600 0 0 600 \ + 0 /kinetics/geometry 62 33 78 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry 30 33 91 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry 0 33 84 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII_x2 0 10 10 "" white black \ + 95 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_x2/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII_x2/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII_xchange 0 2e-11 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry[5] blue black 99 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_xchange/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII_xchange/notes LOAD \ +"" +simundump kpool /kinetics/DEND/actCaMKII 0 0 0.18 0.18 108 108 0 0 600 0 \ + /kinetics/geometry 12 5 73 -36 0 +simundump text /kinetics/DEND/actCaMKII/notes 0 "" +call /kinetics/DEND/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/DEND/PP2A 1 0 1.2 1.2 720 720 0 0 600 0 \ + /kinetics/geometry 62 5 47 -44 0 +simundump text /kinetics/DEND/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/DEND/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/DEND/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0033334 8 2 \ + 0 0 "" red 62 "" 64 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr286/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0033334 8 \ + 2 0 0 "" red 62 "" 74 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0033334 8 2 \ + 0 0 "" red 62 "" 81 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr305/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.00083332 2 \ + 0.5 0 0 "" red 62 "" 91 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0033334 8 \ + 2 0 0 "" red 62 "" 86 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ + /kinetics/geometry[4] blue black 53 -37 0 +simundump text /kinetics/DEND/Ca_input/notes 0 "" +call /kinetics/DEND/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/DEND/Ca_stim 0 50 50 "" white black 49 -38 0 +simundump text /kinetics/DEND/Ca_stim/notes 0 "" +call /kinetics/DEND/Ca_stim/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM 1 5e-13 20 20 1080 1080 0 0 54 0 \ + /kinetics/geometry pink blue 37 4 0 +simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.066667 10 "" white \ + blue 51 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry hotpink blue 49 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ + blue 39 1 0 +simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 45 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ + blue 47 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ + blue 43 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 41 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ + /kinetics/geometry red blue 45 -2 0 +simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" +call /kinetics/SPINE/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry blue blue 54 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM_x2 0 1 100 "" white black 34 10 0 +simundump text /kinetics/SPINE/CaM/CaM_x2/notes 0 "" +call /kinetics/SPINE/CaM/CaM_x2/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[2] blue black 29 7 0 +simundump text /kinetics/SPINE/CaM/CaM_xchange/notes 0 "" +call /kinetics/SPINE/CaM/CaM_xchange/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 41 -3 0 +simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 0.5 27 108 0 0 54 \ + 0 /kinetics/geometry 29 33 76 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.0074074 8 2 0 0 "" red 29 "" 74 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ + 69.588 0.0018519 2 0.5 0 0 "" red 29 "" 61 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ + 486.01 0.022222 24 6 0 0 "" red 29 "" 80 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ + 54 0 /kinetics/geometry 23 33 86 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 59 33 54 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 47 33 63 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ + 0 0 0 69.588 0.011574 8 2 0 0 "" red 47 "" 74 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.034722 24 6 0 0 "" red 47 "" 80 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.0028935 2 0.5 0 0 "" red 47 "" 62 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 0.5 0.5 27 27 0 \ + 0 54 0 /kinetics/geometry blue 33 83 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ + 0.0022 "" white 33 56 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ + white 33 67 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 \ + 0 0 54 0 /kinetics/geometry 47 33 58 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 50 33 65 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 57 33 71 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 5e-13 20 20 1080 1080 0 \ + 0 54 0 /kinetics/geometry 62 33 77 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 30 33 90 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 0 33 83 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 0 1 100 "" white black \ + 92 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_x2/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_x2/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange 0 2e-11 0 0 0 0 0 \ + 0 54 0 /kinetics/geometry[6] blue black 98 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM_CaN 1 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 1 5 32 -2 0 +simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" +call /kinetics/SPINE/CaM_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ + /kinetics/geometry 12 5 72 -2 0 +simundump text /kinetics/SPINE/actCaMKII/notes 0 "" +call /kinetics/SPINE/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/PP2A 1 0 5 5 270 270 0 0 54 0 \ + /kinetics/geometry 62 5 46 -10 0 +simundump text /kinetics/SPINE/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.037038 8 2 \ + 0 0 "" red 62 "" 63 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.037038 8 \ + 2 0 0 "" red 62 "" 73 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.037038 8 2 \ + 0 0 "" red 62 "" 80 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 90 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.037038 8 \ + 2 0 0 "" red 62 "" 85 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 +simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" +call /kinetics/SPINE/CaN_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 0 1 1 54 54 0 0 54 0 \ + /kinetics/geometry 1 yellow 4 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.5 "" white \ + yellow 23 5 0 +simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ + "From Quintana et al 2005" +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0085734 1 "" white \ + yellow 8 5 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] blue yellow 15 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Ca 1 1e-11 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry red 13 46 -36 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2000 0 4 0 +simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc1/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 12 0 0 1 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc2/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 12 0 0 1 +simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 +simundump xplot /moregraphs/conc3/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /moregraphs/conc3/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 12 0 0 1 +simundump xplot /moregraphs/conc3/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xcoredraw /edit/draw 0 -10 101 -51 42 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"23 Dec 2011" \ +"CaMKII_merged16.g" \ +"Added Ca-binding step to the CaN activation pathway." \ +"Based on CaMKII_merged15.g" \ +"" \ +"CaMKII_merged16a.g" \ +"Halved the Kb for CaN-bind-CaM" \ +"" \ +"CaMKII_merged17.g" \ +" Used more rates from Saucerman and Bers BPJ 2008" \ +"" \ +"CaMKII_merged17a.g" \ +"Fix to init conc of PP1-active in PSD: from 2 to 4." \ +"" \ +"CaMKII_merged17b.g" \ +"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ +"levels in PSD. Scaled kcats down to match." \ +"" \ +"CaMKII_merged20.g" \ +"First pass at a version with a reasonable basal PKA and a less" \ +"saturating effect on PP1-active of CaMKII." \ +"" \ +"CaMKII_merged20c.g: This version turns on but does not go off" \ +"afterwards. " \ +"" \ +"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ +"" \ +"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ +"" \ +"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ +"sites given that CaMKII is a dodecamer." \ +"" \ +"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ +"0.002/sec." \ +"" \ +"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ +"" \ +"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ +"CaM with 6:54." \ +"" \ +"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ +"" \ +"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ +"CaMKII in bulk." \ +"" \ +"19 July 2013. psd_merged30.g: Variant for signeur loading." \ +"" \ +"22 Aug 2015. CaMKII_merged32.g: Duplicated spine head CaMKII and" \ +"ancillary reactions, into Dend. Will need to figure out how to " \ +"keep hihger CaMKII and CaM levels in spine head rather than" \ +"dend." \ +"23 Aug 2015. CaMKII_merged33.g: Added pools and reactions to " \ +"sustain the gradients of CaM and CaMKII between DEND and SPINE." \ +"Needed because we have diffusion of CaM, CaMKII and various " \ +"converted forms of these molecules." \ +"" \ +"23 Aug 2015. CaMKII_merged34.g: Added Ca_input for PSD and DEND." \ +"" \ +"24 Aug 2015. CaMKII_merged35.g" \ +"Increased CaDiffusion rate to 10 microns^2/sec. " \ +"Increased Ca_stim Kf and Kb to 50 from 20." \ +"" \ +"13 Sep 2015. CaMKII_merged36.g" \ +"Set PSD/PKA-active nInit to zero. It was a tiny fractional value" \ +"leading to a possible discrepancy between stochastic and determ" \ +"calculations." \ +"" \ +"14 Sep 2015. CaMKII_merged37.g" \ +"PP2A in the PSD had some tiny nComplexInits in its enz sites." \ +"Zeroed." \ +"" \ +"24 Sep 2015. CaMKII_merged38.g" \ +"Fixed some discrepancies in rates in the Dend compartment. Seems" \ +"that vol scaling had not happened properly." \ +"Also raised affinity of final stage of CaM.Ca3 binding to Ca to" \ +"the same value as for CaM.Ca2 binding." \ +"" \ +"25 Sep 2015. CaMKII_merged39.g" \ +"Fixed CaM_xchange reactions, also similar for CaMKII. These set" \ +"up the higher conc in the spine and PSD, but were not effective." \ +"" \ +"26 Sep 2015. CaMKII_merged42.g" \ +"Moved PP1_1 and PP1_2 enzymes to CaM_CaN" \ +"Some rates changes." \ +"CaMKII_merged42a.g: moved /kinetics/DEND/Ca to /kinetics/Ca so" \ +"that the system isn't confused during diffusions setup." \ +"" \ +"29 Sep 2015. CaMKII_merged43.g" \ +"Added back the CaMKII exchange reaction, and CaMKII diffusion" \ +"between dend and spine. Also moved the CaM_xchange reaction to" \ +"the dend as its substrate is there." \ +"CaMKII_merged44.g: Lower Keq rate of both xchangeReactions from" \ +"10 to 2. kb now 0.5, kf still 1." \ +"" \ +"02 Oct 2015: CaMKII_merged50.g. Moved NMDAR to Spine rather than" \ +"PSD, to keep both substrates in same compt. Also moved reac to" \ +"same compt as substrates." \ +"" \ +"05 Nov 2015: CaMKII_merged57.g. Put all the translocation reactions" \ +"in the PSD itself, now the CaMKII phospho forms just diffuse" \ +"into the PSD if they want to translocate. Then they bind to" \ +"NMDAR and form the scaffolded version." \ +"CaMKII_merged58.g: There was too little CaM and CaMKII in the " \ +"spine. Increased the rate of the reactions pumping them in." \ +"" \ +"09 Nov 2015" \ +"CaMKII_merged59.g: 3 major changes. " \ +"1. Lowered basal activity of CaMKII to 0.5 uM from 1 uM." \ +"2. Fixed Km of intramolecular CaMKII. Divide Km by 20 for" \ +" each of the intramolecular reactions, this brings it into the" \ +" same range as the total amount of CaMKII" \ +"3. CaN is now activated by Ca2.CaM, not by Ca4.CaM." \ +"CaMKII_merged60.g. Fix to Km for PP2A on CaMKII in Dend: it had" \ +" been reduced to 0.45, restored to 5 so that it is the same as" \ +" in PSD. Also doubled kcat for PP2A action on CaMKII phospho-" \ +" forms, across the board." \ +"" \ +"CaMKII_merged61.g: Zero out diffusion constt for all CaN forms." \ +"CaMKII_merged62.g: Double PP2A rates on CaMKII phosph forms in" \ +" dend and spine. Raise back-reac rate for Ca2.CaM binding to" \ +" CaN by factor of 10." \ +"" \ +"10 Nov 2015. CaMKII_merged63.g: Raised PP2A levels in dend and" \ +"spine head by 25%. Doubled kcat for CaMKII on PSDR. Doubled" \ +"back rate for CaM binding to CaN." \ +"" \ +"" \ +"11 Nov 2015. CaMKII_merged65.g: (64 was a dead end). Removed" \ +"xchange reacs between dend and spine, which were there for setting" \ +"up the steady-state conc gradient of CaM and CaMKII. Replaced" \ +"with a diffusion process and local reacs to achieve gradient." \ +"CaMKII_merged66.g: Changed local rates to steepen gradient." \ +"CaMKII_merged67.g: Further sped up diffusion of xchange molecules" \ +"to steepen gradient. Also lowered CaN affinity for CaM." \ +"CaMKII_merged68.g: Lowered CaN affinity for CaM. Lowered CaMKII" \ +"activity on PSDR. Increased 10x rate for NMDAR binding to CaMKII." \ +"CaMKII_merged69.g: further lowered CaN affinity for CaM to ~0.1." \ +"Lowered CaMKII basal activity to 0.2 uM." \ +"Increased 2x further NMDAR binding to CaMKII." \ +"CaMKII_merged70.g: Double CaMKII rate on PSDR." \ +"" \ +"13 Nov 2015. CaMKII_merged71.g. Fine-tuning to restore bistability" \ +"in the PSDR. Lowered CaN kcas on PSDR to 0.8. Raised basal" \ +"CaMKII back to 0.5 uM, from 0.2, in PSD." \ +"" \ +"14 Nov 2015. CaMKII_merged74.g. Did various tests for the" \ +"bistability of the PSDR system. This one has slower CaN kcat on" \ +"PSDR, from 0.8 to 0.2. Based on psdr2.g" \ +"CaMKII_merged75.g. The prev one didn't acheive turnoff. Doubled" \ +"CaN kcat on psdr, now at 0.4." \ +"15 Nov 2015." \ +"CaMKII_merged76.g. Raised kcat and Km both for CaN on PSDR, to" \ +"lessen saturation." \ +"CaMKII_merged77.g. Raised kcat of basal_phosphatase for PSDR from" \ +"0.11 to 0.15, in order to raise threshold and lessen spontaneous" \ +"turnons." \ +"" \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B +addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B +addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/sCaMKII REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/sCaMKII MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/sCaMKII MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/sCaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/sCaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/Ca_stim /kinetics/PSD/CaM/Ca REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/PSD/CaM/Ca_stim /kinetics/PSD/CaM/Ca_input REAC A B +addmsg /kinetics/PSD/CaM/Ca_input /kinetics/PSD/CaM/Ca_stim SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/Ca_stim PRODUCT n +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A +addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/CaM_CaN/CaN_1 SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/CaN_1 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/CaM_CaN/CaN_2 SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/CaN_2 ENZYME n +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM REAC A B +addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC A B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM_x2 SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM_xchange /kinetics/DEND/CaM/CaM_x2 PRODUCT n +addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM_xchange REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/basal_CaMKII /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/DEND/actCaMKII /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_x2 /kinetics/DEND/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/CaMKII_x2 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_xchange /kinetics/DEND/CaMKII_BULK/CaMKII_x2 PRODUCT n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_x2 /kinetics/DEND/CaMKII_BULK/CaMKII_xchange REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 /kinetics/DEND/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B +addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/Ca_stim PRODUCT n +addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM_x2 SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM_xchange /kinetics/SPINE/CaM/CaM_x2 PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM_xchange REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B +addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/Ca_stim /kinetics/Ca REAC B A +addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/PSD/actCaMKII /graphs/conc1/actCaMKII.Co PLOT Co *actCaMKII.Co *12 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/SPINE/actCaMKII /graphs/conc2/actCaMKII.Co PLOT Co *actCaMKII.Co *12 +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/Ca /moregraphs/conc3/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/DEND/actCaMKII /moregraphs/conc3/actCaMKII.Co PLOT Co *actCaMKII.Co *12 +addmsg /kinetics/DEND/CaM/CaM-Ca4 /moregraphs/conc3/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +enddump +// End of dump + +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ +"24 Sep 2015" \ +"This is a bit too low affinity. Changing to match K2 at " \ +"Kd = 2.8." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/DEND/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +complete_loading diff --git a/examples/paper-2015/Fig4_ReacDiff/Fig4B.py b/examples/paper-2015/Fig4_ReacDiff/Fig4B.py new file mode 100644 index 0000000..fd3029f --- /dev/null +++ b/examples/paper-2015/Fig4_ReacDiff/Fig4B.py @@ -0,0 +1,185 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This program builds a multiscale model with a few spines inserted into +# a simplified cellular morphology. Each spine has a signaling model in it +# too. The program doesn't run the model, it just displays it in 3D. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +baselineTime = 1 +tetTime = 1 +interTetTime = 0.1 +postTetTime = 0.1 +ltdTime = 0.1 +postLtdTime = 0.1 +do3D = True +dt = 0.01 +plotdt = 0.1 +psdTetCa = 8e-3 +basalCa = 0.08e-3 +ltdCa = 0.25e-3 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ ['ca1_minimal.p', 'elec'] ] + spineProto = [ ['makeSpineProto()', 'spine' ]] + chemProto = [ ['CaMKII_merged77.g', 'chem'] ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", chemRange + " * 5e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", "6.28", \ + "size", "6", \ + "sizeDistrib", "0" ] \ + ] + chemDistrib = [ \ + [ "chem", "#apical#", "install", chemRange ] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/DEND/Ca_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + spineDistrib = spineDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chemProto = chemProto + ) + + return rdes + +def createVmViewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def prelude(view): + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + view.pitch(PI/2.0) + view.down(450) + view.left(100) + view.h = 2.0 + view.zoom(5.0) + + def interlude(view): + if view.h > 0.10: + view.h /= 1.005 + view.zoom(0.005) + view.yaw(0.01) + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + prelude=prelude, + interlude=interlude) + viewer.attach_view(view) + return viewer + + +def main(): + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + moose.element( '/model/elec/hsolve' ).tick = -1 + for i in range( 10, 18 ): + moose.setClock( i, dt ) + moose.setClock( 18, plotdt ) + moose.reinit() + + if do3D: + app = QtGui.QApplication(sys.argv) + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + print "LEN = ", len( compts ) + for i in compts: + n = i.name[:4] + if ( n == 'head' or n == 'shaf' ): + i.diameter *= 1.0 + i.Vm = 0.02 + else: + i.diameter *= 4.0 + i.Vm = -0.05 + vm_viewer = createVmViewer(rdes) + vm_viewer.showMaximized() + vm_viewer.start() + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py b/examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py new file mode 100644 index 0000000..5d76909 --- /dev/null +++ b/examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py @@ -0,0 +1,242 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This program builds a multiscale model with a few spines inserted into +# a simplified cellular morphology. Each spine has a signaling model in it +# too. The program runs the model with a strong but brief calcium input +# synapses at 10 seconds, and a long but smaller Ca influx from 290 to +# 650 seconds. This simulation runs using a deterministic method. +# The runtime on a 2.2 GHz Intel core I7 processor is about 550 s. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = False +combineSegments = False +baselineTime = 10 +tetTime = 1 +interTetTime = 20 +postTetTime = 240 +ltdTime = 360 +postLtdTime = 60 +do3D = False +dt = 0.001 +plotdt = 0.1 +psdTetCa = 8e-3 +dendTetCa = 2e-3 +basalCa = 0.08e-3 +ltdCa = 0.25e-3 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ ['ca1_minimal.p', 'elec'] ] + spineProto = [ ['makeSpineProto()', 'spine' ]] + chemProto = [ ['CaMKII_merged77.g', 'chem'] ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", chemRange + " * 5e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", "0", \ + "size", "1", \ + "sizeDistrib", "0" ] \ + ] + chemDistrib = [ \ + [ "chem", "#apical#", "install", chemRange ] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + spineDistrib = spineDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chemProto = chemProto + ) + + return rdes + +def buildOnePlot( path, field = 'getConc' ): + elist = moose.vec( '/model/chem/' + path ) + tabname = path.replace( '/', '_' ) + tab = moose.Table2( '/graphs/' + tabname, len( elist ) ).vec + moose.connect( tab, 'requestOut', elist, field, 'OneToOne' ) + +def buildPlots(): + if not moose.exists( '/graphs' ): + moose.Neutral( '/graphs' ) + buildOnePlot( 'psd/actCaMKII' ) + buildOnePlot( 'spine/actCaMKII' ) + buildOnePlot( 'dend/DEND/actCaMKII' ) + buildOnePlot( 'psd/tot_PSD_R', 'getN' ) + +def displayPlots(): + #plt.style.use( 'ggplot' ) + #fig = plt.figure( figsize=( 6, 10 ), frameon=False, facecolor='white' ) + fig = plt.figure( figsize=( 5, 10 ), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + elist = moose.wildcardFind( '/graphs/#[0]' ) + n = len(elist) + j = 1 + timePts = numpy.arange( 0, len( elist[0].vector ) ) * elist[0].dt + labelName = [ "[CaMKII] (uM)", "[CaMKII] (uM)", + "[CaMKII] (uM)", "# AMPAR" ] + showTickLabels = [0,0,0,1] + plotTitle = ['C', 'D', 'E', 'F'] + plotScale = [1000,1000,1000,1] + for i in zip( elist, labelName, showTickLabels, plotTitle, plotScale ): + ax = plt.subplot( 4, 1, j ) + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + + #This function does the same as below, one axis at a time + #ax.xaxis.set_tick_params( direction = 'out' ) + #ax.yaxis.set_tick_params( direction = 'out' ) + ax.tick_params( direction = 'out' ) + + # These two are equivalent, get rid of the ticks but not the border + #ax.xaxis.set_visible( False ) + #ax.get_xaxis().set_visible( False ) + if not i[2]: + ax.set_xticklabels([]) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + + plt.ylabel( i[1], fontsize = 16 ) + # alternate way of doing this separately. + #plt.yaxis.label.size_size(16) + #plt.title( 'B' ) + ax.text( -0.18, 1.0, i[3], fontsize = 18, weight = 'bold', + transform=ax.transAxes ) + j = j + 1 + for k in i[0].vec: + plt.plot( timePts, k.vector * i[4] ) + #plt.title( i.name ) + print i[0].name + + plt.xlabel( 'Time (s)', fontsize = 16 ) + plt.show() + +def main(): + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + moose.element( '/model/elec/hsolve' ).tick = -1 + for i in range( 0, 10 ): + moose.setClock( i, 100 ) + for i in range( 10, 18 ): + moose.setClock( i, dt ) + moose.setClock( 18, plotdt ) + moose.reinit() + buildPlots() + # Run for baseline, tetanus, and post-tetanic settling time + print 'starting...' + t1 = time.time() + moose.start( baselineTime ) + caPsd = moose.vec( '/model/chem/psd/Ca_input' ) + caDend = moose.vec( '/model/chem/dend/DEND/Ca_input' ) + castim = (numpy.random.rand( len( caPsd.concInit ) ) * 0.8 + 0.2) * psdTetCa + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( interTetTime ) + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postTetTime ) + caPsd.concInit = ltdCa + caDend.concInit = ltdCa + moose.start( ltdTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postLtdTime ) + print 'real time = ', time.time() - t1 + + if do3D: + app = QtGui.QApplication(sys.argv) + compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + def callback( morphology, viewer ): + moose.start( 0.1 ) + return True + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + + displayPlots() + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py b/examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py new file mode 100644 index 0000000..997dfd9 --- /dev/null +++ b/examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py @@ -0,0 +1,242 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This program builds a multiscale model with a few spines inserted into +# a simplified cellular morphology. Each spine has a signaling model in it +# too. The program runs the model with a strong but brief calcium input +# synapses at 10 seconds, and a long but smaller Ca influx from 290 to +# 650 seconds. This simulation runs using a stochastic method. +# The runtime on a 2.2 GHz Intel core I7 processor is about 465 s. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +baselineTime = 10 +tetTime = 1 +interTetTime = 20 +postTetTime = 240 +ltdTime = 360 +postLtdTime = 60 +do3D = False +dt = 0.001 +plotdt = 0.1 +psdTetCa = 8e-3 +dendTetCa = 2e-3 +basalCa = 0.08e-3 +ltdCa = 0.25e-3 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ ['ca1_minimal.p', 'elec'] ] + spineProto = [ ['makeSpineProto()', 'spine' ]] + chemProto = [ ['CaMKII_merged77.g', 'chem'] ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", chemRange + " * 5e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", "0", \ + "size", "1", \ + "sizeDistrib", "0" ] \ + ] + chemDistrib = [ \ + [ "chem", "#apical#", "install", chemRange ] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + spineDistrib = spineDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chemProto = chemProto + ) + + return rdes + +def buildOnePlot( path, field = 'getConc' ): + elist = moose.vec( '/model/chem/' + path ) + tabname = path.replace( '/', '_' ) + tab = moose.Table2( '/graphs/' + tabname, len( elist ) ).vec + moose.connect( tab, 'requestOut', elist, field, 'OneToOne' ) + +def buildPlots(): + if not moose.exists( '/graphs' ): + moose.Neutral( '/graphs' ) + buildOnePlot( 'psd/actCaMKII' ) + buildOnePlot( 'spine/actCaMKII' ) + buildOnePlot( 'dend/DEND/actCaMKII' ) + buildOnePlot( 'psd/tot_PSD_R', 'getN' ) + +def displayPlots(): + #plt.style.use( 'ggplot' ) + #fig = plt.figure( figsize=( 6, 10 ), frameon=False, facecolor='white' ) + fig = plt.figure( figsize=( 5, 10 ), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + elist = moose.wildcardFind( '/graphs/#[0]' ) + n = len(elist) + j = 1 + timePts = numpy.arange( 0, len( elist[0].vector ) ) * elist[0].dt + labelName = [ "[CaMKII] (uM)", "[CaMKII] (uM)", + "[CaMKII] (uM)", "# AMPAR" ] + showTickLabels = [0,0,0,1] + plotTitle = ['G', 'H', 'I', 'J'] + plotScale = [1000,1000,1000,1] + for i in zip( elist, labelName, showTickLabels, plotTitle, plotScale ): + ax = plt.subplot( 4, 1, j ) + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + + #This function does the same as below, one axis at a time + #ax.xaxis.set_tick_params( direction = 'out' ) + #ax.yaxis.set_tick_params( direction = 'out' ) + ax.tick_params( direction = 'out' ) + + # These two are equivalent, get rid of the ticks but not the border + #ax.xaxis.set_visible( False ) + #ax.get_xaxis().set_visible( False ) + if not i[2]: + ax.set_xticklabels([]) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + + plt.ylabel( i[1], fontsize = 16 ) + # alternate way of doing this separately. + #plt.yaxis.label.size_size(16) + #plt.title( 'B' ) + ax.text( -0.18, 1.0, i[3], fontsize = 18, weight = 'bold', + transform=ax.transAxes ) + j = j + 1 + for k in i[0].vec: + plt.plot( timePts, k.vector * i[4] ) + #plt.title( i.name ) + print i[0].name + + plt.xlabel( 'Time (s)', fontsize = 16 ) + plt.show() + +def main(): + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + moose.element( '/model/elec/hsolve' ).tick = -1 + for i in range( 0, 10 ): + moose.setClock( i, 100 ) + for i in range( 10, 18 ): + moose.setClock( i, dt ) + moose.setClock( 18, plotdt ) + moose.reinit() + buildPlots() + # Run for baseline, tetanus, and post-tetanic settling time + print 'starting...' + t1 = time.time() + moose.start( baselineTime ) + caPsd = moose.vec( '/model/chem/psd/Ca_input' ) + caDend = moose.vec( '/model/chem/dend/DEND/Ca_input' ) + castim = (numpy.random.rand( len( caPsd.concInit ) ) * 0.8 + 0.2) * psdTetCa + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( interTetTime ) + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postTetTime ) + caPsd.concInit = ltdCa + caDend.concInit = ltdCa + moose.start( ltdTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postLtdTime ) + print 'real time = ', time.time() - t1 + + if do3D: + app = QtGui.QApplication(sys.argv) + compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + def callback( morphology, viewer ): + moose.start( 0.1 ) + return True + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + + displayPlots() + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p b/examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py b/examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py new file mode 100644 index 0000000..1d071ab --- /dev/null +++ b/examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py @@ -0,0 +1,293 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## rxdSpineSize.py: Builds a cell with spines and a propagating reaction +## wave. Products diffuse into the spine and cause it to get bigger. +################################################################## +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +sys.path.append( '../util' ) +import rdesigneur as rd +from PyQt4 import QtGui +import moogli +import moogli.extensions.moose +import matplotlib + +PI = 3.141592653 +ScalingForTesting = 10 +RM = 1.0 / ScalingForTesting +RA = 1.0 * ScalingForTesting +CM = 0.01 * ScalingForTesting +runtime = 100.0 +frameruntime = 1.0 +diffConst = 5e-12 +dendLen = 100e-6 +diffLen = 1.0e-6 +dendDia = 2e-6 +somaDia = 5e-6 +concInit = 0.001 # 1 millimolar +spineSpacing = 10e-6 +spineSpacingDistrib = 1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle= numpy.pi / 2.0 +spineAngleDistrib = 0.0 + +def makeCellProto( name ): + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) + dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) + moose.connect( soma, 'axial', dend, 'raxial' ) + elec.buildSegmentTree() + +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + comptVol = diffLen * dendDia * dendDia * PI / 4.0 + for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i[0] ) + compt.volume = i[1] + #x = moose.Pool( compt.path + '/x' ) + #y = moose.BufPool( compt.path + '/y' ) + z = moose.Pool( compt.path + '/z' ) + #x.concInit = 0.0 + #x.diffConst = diffConst + #y.concInit = concInit + z.concInit = 0.0 + z.diffConst = diffConst + nInit = comptVol * 6e23 * concInit + nstr = str( 1/nInit) + + x = moose.Pool( chem.path + '/dend/x' ) + x.diffConst = diffConst + func = moose.Function( x.path + '/func' ) + func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" + print func.expr + func.x.num = 1 + moose.connect( x, 'nOut', func.x[0], 'input' ) + moose.connect( func, 'valueOut', x, 'increment' ) + z = moose.element( '/library/' + name + '/dend/z' ) + reac = moose.Reac( '/library/' + name + '/dend/reac' ) + reac.Kf = 1 + reac.Kb = 10 + moose.connect( reac, 'sub', x, 'reac' ) + moose.connect( reac, 'prd', z, 'reac' ) + +def makeSpineProto2( name ): + spine = moose.Neutral( '/library/' + name ) + shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) + head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def makeModel(): + moose.Neutral( '/library' ) + makeCellProto( 'cellProto' ) + makeChemProto( 'cProto' ) + makeSpineProto2( 'spine' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + stealCellFromLibrary = True, \ + diffusionLength = 1e-6, \ + cellProto = [['cellProto', 'elec' ]] ,\ + spineProto = [['spineProto', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "dend", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + x = moose.vec( '/model/chem/dend/x' ) + x.concInit = 0.0 + for i in range( 0,20 ): + x[i].concInit = concInit + +def makePlot( name, srcVec, field ): + tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec + for i in zip(srcVec, tab): + moose.connect(i[1], 'requestOut', i[0], field) + return tab + + +def displayPlots(): + for x in moose.wildcardFind( '/graphs/#[0]' ): + tab = moose.vec( x ) + for i in range( len( tab ) ): + pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) + pylab.legend() + pylab.figure() + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and then to resize them using spine fields. These are the + fields that would be changed dynamically in a simulation with reactions + that affect spine geometry. + In this simulation there is a propagating reaction wave using a + highly abstracted equation, whose product diffuses into the spines and + makes them bigger. + """ + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + makePlot( 'headDia', eHead, 'getDiameter' ) + + ''' + debug = moose.PyRun( '/pyrun' ) + debug.tick = 10 + debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" + ''' + moose.reinit() + moose.start( runtime ) + + displayPlots() + pylab.plot( oldDia, label = 'old Diameter' ) + pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) + pylab.legend() + pylab.show() + + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +# Run the 'main' if this script is executed standalone. + +def showVisualization(): + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) + # print diaTab[0].vector[-1] + # return + dendrite = moose.element("/model/elec/dend") + dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] + # print dendrites + moose.reinit() + + spineHeads = moose.wildcardFind( '/model/elec/#head#') + # print moose.wildcardFind( '/model/elec/##') + + # print "dendZ", readValues(dendZ) + # print dendrite + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) + viewer.showMaximized() + viewer.start() + return app.exec_() + + +def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): + network = moogli.extensions.moose.read(path=path, + vertices=15) + + dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] + chem_compt_group = dendrite.subdivide(len(dendZ)) + normalizer = moogli.utilities.normalizer(0.0, + 300.0, + clipleft=True, + clipright=True) + colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def readValues(tables): + values = [] + for i in range(len(tables)): + values.append(tables[i].vector[-1]) + return values + + def prelude(view): + view.home() + view.pitch(math.pi / 3.0) + view.zoom(0.3) + network.groups["soma"].set("color", moogli.colors.RED) + network.groups["spine"].groups["shaft"].set("color", + moogli.colors.RED) + + def interlude(view): + moose.start(frameruntime) + network.groups["spine"].groups["head"].set("radius", + readValues(diaTab), + lambda x: x * 0.5e6) + network.groups["spine"].groups["head"].set("color", + readValues(psdZ), + mapper) + chem_compt_group.set("color", + readValues(dendZ), + mapper) + if moose.element("/clock").currentTime >= runtime: + view.stop() + + viewer = moogli.Viewer("Viewer") + viewer.attach_shapes(network.shapes.values()) + viewer.detach_shape(dendrite) + viewer.attach_shapes(chem_compt_group.shapes.values()) + + view = moogli.View("main-view", + prelude=prelude, + interlude=interlude) + cb = moogli.widgets.ColorBar(id="cb", + title="Molecule #", + text_color=moogli.colors.BLACK, + position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), + size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), + text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", + orientation=math.pi / 2.0, + text_character_size=20, + label_formatting_precision=0, + colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), + color_resolution=100, + scalar_range=moogli.geometry.Vec2f(0.0, + 300.0)) + view.attach_color_bar(cb) + viewer.attach_view(view) + return viewer + + +if __name__ == '__main__': + showVisualization() diff --git a/examples/paper-2015/Fig5_CellMultiscale/Fig5A.py b/examples/paper-2015/Fig5_CellMultiscale/Fig5A.py new file mode 100644 index 0000000..330516e --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/Fig5A.py @@ -0,0 +1,157 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This programme illustrates building a panel of multiscale models to +# test neuronal plasticity in different contexts. The simulation is set +# to settle for 5 seconds, then a 2 second tetanus is delivered, then +# the simulation continues for another 50 seconds. +# By default we set it to run the smallest model, that takes about 4 minutes +# to run 57 seconds of simulation time, on an Intel core I7 at +# 2.2 GHz. The big model, VHC-neuron, takes almost 90 minutes. +# This program dumps data to text files for further analysis. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +#### Choose your favourite models here. ################# +#elecFileNames = ( "ca1_minimal.p", ) +#elecFileNames = ( "ca1_minimal.p", "h10.CNG.swc" ) +elecFileNames = ( "CA1.morph.xml", "ca1_minimal.p", "VHC-neuron.CNG.swc", "h10.CNG.swc" ) +synSpineList = [] +synDendList = [] +probeInterval = 0.1 +probeAmplitude = 1.0 +tetanusFrequency = 100.0 +tetanusAmplitude = 1000 +tetanusAmplitudeForSpines = 1000 +baselineTime = 5 +tetTime = 2 +postTetTime = 50 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + spineDistrib = [ \ + ["spine", '#apical#', "spineSpacing", "20e-6", \ + "spineSpacingDistrib", "2e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + spineProto = spineProto \ + ) + + return rdes + +def interlude( view ): + view.yaw( 0.01 ) + +def create_viewer(rdes): + print ' doing viewer for ', rdes.soma.path + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", interlude=interlude ) + viewer.attach_view(view) + viewer.show() + viewer.start() + view.pitch( PI/2.0 ) + return viewer + +def main(): + app = QtGui.QApplication(sys.argv) + numpy.random.seed(1234) + rdes = buildRdesigneur() + viewers = [] + j = 0 + for i in elecFileNames: + print i + ename = '/model' + str(j) + rdes.cellProtoList = [ ['./cells/' + i, 'elec' ] ] + rdes.buildModel( ename ) + assert( moose.exists( ename ) ) + moose.reinit() + viewers.append(create_viewer(rdes)) + j = j + 1 + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py b/examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py new file mode 100644 index 0000000..78595b4 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py @@ -0,0 +1,281 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This programme illustrates building a panel of multiscale models to +# test neuronal plasticity in different contexts. The simulation is set +# to settle for 5 seconds, then a 2 second tetanus is delivered, then +# the simulation continues for another 50 seconds. +# By default we set it to run the smallest model, that takes about 4 minutes +# to run 57 seconds of simulation time, on an Intel core I7 at +# 2.2 GHz. The big model, VHC-neuron, takes almost 90 minutes. +# This program dumps data to text files for further analysis. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +#### Choose your favourite model here. ################# +#elecFileNames = ( "ca1_minimal.p", ) +#elecFileNames = ( "ca1_minimal.p", "h10.CNG.swc" ) +elecFileNames = ( "CA1.morph.xml", "ca1_minimal.p", "VHC-neuron.CNG.swc", "h10.CNG.swc" ) +synSpineList = [] +synDendList = [] +probeInterval = 0.1 +probeAmplitude = 1.0 +tetanusFrequency = 100.0 +tetanusAmplitude = 1000 +tetanusAmplitudeForSpines = 1000 +baselineTime = 5 +tetTime = 2 +postTetTime = 50 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + chanProto = [ + ['./chans/hd.xml'], \ + ['./chans/kap.xml'], \ + ['./chans/kad.xml'], \ + ['./chans/kdr.xml'], \ + ['./chans/na3.xml'], \ + ['./chans/nax.xml'], \ + ['./chans/CaConc.xml'], \ + ['./chans/Ca.xml'], \ + ['./chans/NMDA.xml'], \ + ['./chans/Glu.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [ \ + ['./chem/' + 'psd53.g', 'ltpModel'] \ + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], \ + ["na3", "#soma#,#dend#,#apical#", "Gbar", "250" ], \ + ["nax", "#soma#,#axon#", "Gbar", "1250" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#dend#,#apical#", "tau", "0.0133" ], \ + ["kad", "#soma#,#dend#,#apical#", "Gbar", \ + "300*H(p - 100e-6)*(1+p*1e4)" ], \ + ["Ca", "#dend#,#apical#", "Gbar", "50" ], \ + ["glu", "#dend#,#apical#", "Gbar", "200*H(p-200e-6)" ], \ + ["NMDA", "#dend#,#apical#", "Gbar", "2*H(p-200e-6)" ] \ + ] + spineDistrib = [ \ + ["spine", '#apical#', "spineSpacing", "20e-6", \ + "spineSpacingDistrib", "2e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [ \ + [ "ltpModel", "#apical#", "install", "1"] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + + return rdes + +def buildPlots( rdes ): + numPlots = 10 + caPsd = moose.vec( '/model/chem/psd/Ca' ) + caHead = moose.vec( '/model/chem/spine/Ca' ) + psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) + numSpines = rdes.spineCompt.mesh.num + assert( 2 * numSpines == len( rdes.spineComptElist ) ) + if not moose.exists( '/graphs' ): + moose.Neutral( '/graphs' ) + assert( len( caPsd ) == numSpines ) + assert( len( caHead ) == numSpines ) + if numSpines < numPlots: + caPsdTab = moose.Table2( '/graphs/caPsdTab', numSpines ).vec + caHeadTab = moose.Table2( '/graphs/caHeadTab', numSpines ).vec + psdRtab = moose.Table2( '/graphs/psdRtab', numSpines ).vec + for i in range( numSpines ): + moose.connect( caPsdTab[i], 'requestOut', caPsd[i], 'getConc' ) + moose.connect( caHeadTab[i], 'requestOut', caHead[i], 'getConc') + moose.connect( psdRtab[i], 'requestOut', psdR[i], 'getN' ) + else: + caPsdTab = moose.Table2( '/graphs/caPsdTab', numPlots ).vec + caHeadTab = moose.Table2( '/graphs/caHeadTab', numPlots ).vec + psdRtab = moose.Table2( '/graphs/psdRtab', numPlots ).vec + dx = numSpines / numPlots + for i in range( numPlots ): + moose.connect( caPsdTab[i], 'requestOut', caPsd[i*dx], 'getConc' ) + moose.connect( caHeadTab[i], 'requestOut', caHead[i*dx], 'getConc' ) + moose.connect( psdRtab[i], 'requestOut', psdR[i*dx], 'getN' ) + vtab = moose.Table( '/graphs/vtab' ) + moose.connect( vtab, 'requestOut', rdes.soma, 'getVm' ) + eSpineCaTab = moose.Table( '/graphs/eSpineCaTab' ) + path = rdes.spineComptElist[1].path + "/Ca_conc" + moose.connect( eSpineCaTab, 'requestOut', path, 'getCa' ) + eSpineVmTab = moose.Table( '/graphs/eSpineVmTab' ) + moose.connect( eSpineVmTab, 'requestOut', rdes.spineComptElist[1], 'getVm' ) + eSpineGkTab = moose.Table( '/graphs/eSpineGkTab' ) + path = rdes.spineComptElist[1].path + "/NMDA" + moose.connect( eSpineGkTab, 'requestOut', path, 'getGk' ) + +def saveAndClearPlots( name ): + print 'saveAndClearPlots( ', name, ' )' + for i in moose.wildcardFind( "/graphs/#" ): + #plot stuff + i.xplot( name + '.xplot', i.name ) + moose.delete( "/graphs" ) + +def printPsd( name ): + # Print the vol, the path dist from soma, the electrotonic dist, and N + psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) + neuronVoxel = moose.element( '/model/chem/spine' ).neuronVoxel + elecComptMap = moose.element( '/model/chem/dend' ).elecComptMap + print "len( neuronVoxel = ", len( neuronVoxel), min( neuronVoxel), max( neuronVoxel) + print len( elecComptMap), elecComptMap[0], elecComptMap[12] + neuron = moose.element( '/model/elec' ) + ncompts = neuron.compartments + d = {} + j = 0 + for i in ncompts: + #print i + d[i] = j + j += 1 + + f = open( name + ".txt", 'w' ) + for i in range( len( psdR ) ): + n = psdR[i].n + conc = psdR[i].conc + vol = psdR[i].volume + compt = elecComptMap[ neuronVoxel[i] ] + #print compt + segIndex = d[compt[0]] + p = neuron.geometricalDistanceFromSoma[ segIndex ] + L = neuron.electrotonicDistanceFromSoma[ segIndex ] + s = str( i ) + " " + str(n) + " " + str( conc ) + " " + str(p) + " " + str(L) + "\n" + f.write( s ) + f.close() + + +def probeStimulus( time ): + for t in numpy.arange( 0, time, probeInterval ): + moose.start( probeInterval ) + for i in synSpineList: + i.activation( probeAmplitude ) + +def tetanicStimulus( time ): + tetInterval = 1.0/tetanusFrequency + for t in numpy.arange( 0, time, tetInterval ): + moose.start( tetInterval ) + for i in synDendList: + i.activation( tetanusAmplitude ) + for i in synSpineList: + i.activation( tetanusAmplitudeForSpines ) + +def main(): + global synSpineList + global synDendList + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + for i in elecFileNames: + print i + rdes.cellProtoList = [ ['./cells/' + i, 'elec'] ] + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + synSpineList = moose.wildcardFind( "/model/elec/#head#/glu,/model/elec/#head#/NMDA" ) + temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) + + synDendList = list( temp - set( synSpineList ) ) + moose.reinit() + buildPlots( rdes ) + # Run for baseline, tetanus, and post-tetanic settling time + t1 = time.time() + probeStimulus( baselineTime ) + tetanicStimulus( tetTime ) + probeStimulus( postTetTime ) + print 'real time = ', time.time() - t1 + + printPsd( i + ".fig5" ) + saveAndClearPlots( i + ".fig5" ) + moose.delete( '/model' ) + rdes.elecid = moose.element( '/' ) + +if __name__ == '__main__': + main() diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc new file mode 100644 index 0000000..6b8748e --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc @@ -0,0 +1,2493 @@ +# Original file 970529c.out.swc edited by Duncan Donohue using StdSwc version 1.21 on 8/16/05. +# Irregularities and fixes documented in 970529c.out.swc.std. See StdSwc1.21.doc for more information. +# +# Claiborne to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu +# Original fileName:C:\Documents and Settings\Admin\Desktop\Jaffe\970529c.out +# +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0 0 0 42.789 -1 + 2 3 -3.25 -3.95 -1.35 2.485 1 + 3 3 -4.34 -5.37 -1.38 1.955 2 + 4 3 -5.86 -5.37 -1.38 1.955 3 + 5 3 -5.64 -8.92 -1.38 1.955 4 + 6 3 -6.73 -11.41 -1.38 1.955 5 + 7 3 -8.03 -13.01 -1.38 1.955 6 + 8 3 -8.9 -14.61 -1.38 1.775 7 + 9 3 -9.55 -16.74 -1.38 1.775 8 + 10 3 -10.42 -17.27 0.67 1.955 9 + 11 3 -10.42 -17.8 0.67 1.955 10 + 12 3 -12.16 -18.87 0.67 0.89 11 + 13 3 -13.46 -20.65 -1.74 0.89 12 + 14 3 -15.42 -22.25 -1.74 0.89 13 + 15 3 -16.28 -23.84 -4.51 0.71 14 + 16 3 -18.46 -25.8 -4.51 0.71 15 + 17 3 -20.63 -27.93 -4.51 0.71 16 + 18 3 -21.71 -29.35 -6.68 0.71 17 + 19 3 -23.67 -32.02 -6.68 0.71 18 + 20 3 -25.19 -33.26 -6.68 0.71 19 + 21 3 -26.87 -35.31 -6.68 0.71 20 + 22 3 -28.39 -37.45 -6.68 0.71 21 + 23 3 -30.13 -38.69 -6.68 0.71 22 + 24 3 -31.43 -38.36 -7.26 0.71 23 + 25 3 -31.65 -41.2 -7.26 0.71 24 + 26 3 -33.61 -43.33 -7.26 0.71 25 + 27 3 -34.69 -45.46 -7.7 0.71 26 + 28 3 -36.21 -47.95 -7.7 0.71 27 + 29 3 -36.99 -50.85 -7.7 0.71 28 + 30 3 -38.29 -52.8 -7.7 0.71 29 + 31 3 -38.94 -54.58 -7.7 0.71 30 + 32 3 -39.59 -56.71 -7.7 0.71 31 + 33 3 -40.24 -58.84 -7.7 0.71 32 + 34 3 -41.11 -61.15 -7.7 0.71 33 + 35 3 -41.98 -63.46 -7.7 0.71 34 + 36 3 -43.02 -65.34 -7.7 0.71 35 + 37 3 -44.98 -66.94 -7.05 0.71 36 + 38 3 -46.06 -68.38 -7.34 0.71 37 + 39 3 -48.45 -71.04 -7.34 0.71 38 + 40 3 -49.54 -72.82 -7.34 0.71 39 + 41 3 -51.27 -74.6 -7.14 0.71 40 + 42 3 -53.01 -76.55 -7.14 0.71 41 + 43 3 -54.31 -78.68 -7.14 0.71 42 + 44 3 -55.86 -81.29 -7.14 0.71 43 + 45 3 -57.59 -83.07 -7.14 0.71 44 + 46 3 -59.33 -85.56 -7.14 0.71 45 + 47 3 -60.85 -88.22 -7.14 0.71 46 + 48 3 -61.8 -88.72 -7.14 0.71 47 + 49 3 -63.11 -89.43 -9.1 0.71 48 + 50 3 -64.84 -90.67 -12.48 0.71 49 + 51 3 -67.02 -91.38 -14.43 0.71 50 + 52 3 -68.54 -92.45 -15.53 0.71 51 + 53 3 -70.71 -93.87 -15.53 0.71 52 + 54 3 -72.45 -95.47 -15.53 0.71 53 + 55 3 -73.31 -97.42 -15.53 0.71 54 + 56 3 -74.18 -100.08 -17.04 0.71 55 + 57 3 -74.83 -102.75 -17.04 0.71 56 + 58 3 -74.5 -104.76 -17.04 0.71 57 + 59 3 -74.72 -106.18 -15.7 0.71 58 + 60 3 -75.15 -108.84 -15.7 0.71 59 + 61 3 -76.02 -111.15 -15.7 0.71 60 + 62 3 -77.11 -113.29 -15.7 0.71 61 + 63 3 -78.63 -115.77 -17.44 0.71 62 + 64 3 -80.15 -117.55 -17.44 0.71 63 + 65 3 -80.79 -120.07 -17.44 0.71 64 + 66 3 -80.79 -121.14 -20.1 0.71 65 + 67 3 -82.26 -123.16 -20.1 0.71 66 + 68 3 -83.78 -125.29 -20.1 0.71 67 + 69 3 -84.43 -127.24 -20.1 0.71 68 + 70 3 -85.51 -129.02 -20.1 0.71 69 + 71 3 -87.9 -130.26 -20.1 0.71 70 + 72 3 -88.77 -132.04 -20.1 0.71 71 + 73 3 -89.64 -134 -20.1 0.71 72 + 74 3 -92.03 -136.84 -20.1 0.71 73 + 75 3 -93.67 -138.89 -20.1 0.71 74 + 76 3 -94.82 -140.58 -20.1 0.71 75 + 77 3 -96.34 -141.65 -20.1 0.71 76 + 78 3 -98.3 -142.18 -20.1 0.71 77 + 79 3 -99.82 -143.6 -20.1 0.71 78 + 80 3 -100.47 -145.02 -20.1 0.71 79 + 81 3 -101.55 -146.09 -20.1 0.71 80 + 82 3 -80.79 -123.27 -20.1 0.71 66 + 83 3 -81 -125.4 -20.1 0.71 82 + 84 3 -82.09 -128.06 -20.1 0.71 83 + 85 3 -82.09 -130.2 -20.1 0.71 84 + 86 3 -82.31 -130.91 -20.1 0.71 85 + 87 3 -82.31 -131.26 -19.08 0.71 86 + 88 3 -82.74 -133.04 -19.08 0.71 87 + 89 3 -82.95 -134.31 -19.08 0.71 88 + 90 3 -82.74 -135.74 -19.08 0.71 89 + 91 3 -61.15 -89.6 -5.21 0.71 47 + 92 3 -62.46 -92.82 -5.21 0.71 91 + 93 3 -63.54 -95.67 -5.21 0.71 92 + 94 3 -64.41 -97.8 -5.21 0.71 93 + 95 3 -65.06 -100.28 -5.21 0.71 94 + 96 3 -65.28 -101.88 -5.21 0.71 95 + 97 3 -65.71 -104.55 -5.21 0.71 96 + 98 3 -65.95 -107.94 -5.21 0.71 97 + 99 3 -66.19 -110.6 -5.21 0.71 98 + 100 3 -66.62 -113.09 -5.21 0.71 99 + 101 3 -66.62 -114.86 -5.46 0.71 100 + 102 3 -67.27 -116.28 -5.46 0.71 101 + 103 3 -68.14 -117.88 -5.46 0.71 102 + 104 3 -67.92 -119.66 -3.45 0.71 103 + 105 3 -67.72 -121.38 -3.45 0.71 104 + 106 3 -67.07 -124.05 -3.45 0.71 105 + 107 3 -67.72 -126.36 -3.45 0.71 106 + 108 3 -67.72 -128.49 -3.45 0.71 107 + 109 3 -68.37 -130.09 0.1 0.71 108 + 110 3 -68.37 -132.75 0.1 0.71 109 + 111 3 -69.67 -133.99 0.1 0.71 110 + 112 3 -70.11 -135.77 0.1 0.71 111 + 113 3 -69.48 -139.14 0.1 0.71 112 + 114 3 -69.27 -140.73 0.26 0.71 113 + 115 3 -69.48 -142.69 0.26 0.71 114 + 116 3 -69.7 -144.46 0.26 0.71 115 + 117 3 -69.48 -146.24 2.1 0.71 116 + 118 3 -68.62 -148.91 2.1 0.71 117 + 119 3 -70.14 -150.68 2.1 0.71 118 + 120 3 -70.14 -151.52 1.9 0.89 119 + 121 3 -10.6 -19.79 0.67 1.245 11 + 122 3 -10.82 -20.86 0.67 1.065 121 + 123 3 -11.25 -22.63 3.11 1.065 122 + 124 3 -11.69 -23.34 3.11 1.065 123 + 125 3 -11.91 -24.05 3.1 1.065 124 + 126 3 -12.77 -25.12 3.1 0.89 125 + 127 3 -13.86 -26.72 3.1 0.89 126 + 128 3 -15.16 -28.5 2.5 0.89 127 + 129 3 -16.68 -30.45 2.5 0.89 128 + 130 3 -17.34 -32.05 4.34 0.89 129 + 131 3 -18.2 -33.65 4.34 0.89 130 + 132 3 -19.29 -34.18 6.59 0.89 131 + 133 3 -19.72 -35.07 6.06 0.89 132 + 134 3 -20.94 -35.93 6.06 0.71 133 + 135 3 -22.24 -37.71 6.06 0.71 134 + 136 3 -23.54 -38.95 8.27 0.71 135 + 137 3 -25.5 -40.02 9.75 0.71 136 + 138 3 -26.58 -40.73 12.12 0.71 137 + 139 3 -28.1 -40.91 14.37 0.71 138 + 140 3 -29.84 -40.73 15.93 0.71 139 + 141 3 -31.36 -40.91 17.94 0.71 140 + 142 3 -33.1 -41.26 20.75 0.71 141 + 143 3 -34.83 -42.15 22.3 0.71 142 + 144 3 -36.35 -43.04 24.67 0.71 143 + 145 3 -39.18 -44.46 26.14 0.71 144 + 146 3 -42.72 -46.04 26.14 0.71 145 + 147 3 -45.11 -46.22 28.64 0.71 146 + 148 3 -47.5 -46.75 31.14 0.71 147 + 149 3 -49.67 -47.82 30.56 0.71 148 + 150 3 -52.5 -48 30.56 0.71 149 + 151 3 -54.89 -48.89 30.56 0.71 150 + 152 3 -57.06 -49.24 30.56 0.71 151 + 153 3 -59.66 -49.96 30.56 0.71 152 + 154 3 -62.04 -50.13 33.3 0.71 153 + 155 3 -65.3 -51.02 33.3 0.71 154 + 156 3 -68.13 -51.73 33.3 0.71 155 + 157 3 -71.17 -53.15 32.83 0.71 156 + 158 3 -73.99 -54.4 32.83 0.71 157 + 159 3 -76.59 -55.64 32.83 0.71 158 + 160 3 -78.39 -56.69 32.83 0.71 159 + 161 3 -80.34 -57.6 32.83 0.71 160 + 162 3 -82.51 -58.13 32.83 0.71 161 + 163 3 -84.03 -59.02 32.83 0.71 162 + 164 3 -85.55 -59.73 34.9 0.71 163 + 165 3 -87.29 -59.91 34.9 0.71 164 + 166 3 -89.25 -59.91 34.9 0.71 165 + 167 3 -92.07 -61.15 36.86 0.71 166 + 168 3 -94.24 -63.28 36.86 0.71 167 + 169 3 -95.34 -65.4 36.86 0.71 168 + 170 3 -96.86 -67 36.86 0.71 169 + 171 3 -98.16 -68.24 36.86 0.71 170 + 172 3 -99.03 -69.13 36.86 0.71 171 + 173 3 -100.55 -70.02 36.86 0.71 172 + 174 3 -102.28 -71.08 36.86 0.71 173 + 175 3 -103.15 -71.79 36.42 0.71 174 + 176 3 -103.59 -72.86 32.87 0.71 175 + 177 3 -104.67 -74.99 32.87 0.71 176 + 178 3 -105.33 -77.12 32.87 0.71 177 + 179 3 -106.41 -78.9 32.87 0.71 178 + 180 3 -107.12 -80.29 32.87 0.71 179 + 181 3 -19.94 -36.85 3.29 0.71 133 + 182 3 -20.81 -37.73 3.29 0.71 181 + 183 3 -21.68 -39.51 4.88 0.71 182 + 184 3 -21.56 -41.92 1.67 0.71 183 + 185 3 -22.64 -43.87 2.73 0.71 184 + 186 3 -23.08 -46.18 0.45 0.71 185 + 187 3 -24.38 -48.32 0.45 0.71 186 + 188 3 -25.03 -50.45 0.45 0.71 187 + 189 3 -26.34 -52.58 0.45 0.71 188 + 190 3 -26.55 -54.71 0.45 0.71 189 + 191 3 -27.44 -56.21 -1.87 0.71 190 + 192 3 -28.03 -59.1 -2.98 0.71 191 + 193 3 -29.11 -61.94 -2.98 0.71 192 + 194 3 -29.55 -64.6 -2.98 0.71 193 + 195 3 -30.2 -67.09 -5.04 0.71 194 + 196 3 -30.63 -69.22 -6.86 0.71 195 + 197 3 -31.07 -71.36 -6.86 0.71 196 + 198 3 -31.59 -74.5 -6.86 0.71 197 + 199 3 -32.24 -76.45 -6.86 0.71 198 + 200 3 -33.11 -78.41 -6.42 0.71 199 + 201 3 -33.11 -81.25 -6.42 0.71 200 + 202 3 -33.33 -83.56 -6.42 0.71 201 + 203 3 -33.55 -84.8 -6.42 0.71 202 + 204 3 -33.55 -86.04 -6.86 0.89 203 + 205 3 -34.72 -86.76 -6.86 0.71 204 + 206 3 -35.59 -88.71 -6.86 0.71 205 + 207 3 -36.24 -89.98 -7.02 0.71 206 + 208 3 -36.89 -92.28 -7.78 0.71 207 + 209 3 -37.54 -94.42 -10.3 0.71 208 + 210 3 -37.98 -96.19 -10.3 0.71 209 + 211 3 -38.63 -98.15 -10.3 0.71 210 + 212 3 -39.28 -99.57 -10.62 0.71 211 + 213 3 -39.28 -100.81 -12.82 0.71 212 + 214 3 -39.9 -103.35 -12.82 0.71 213 + 215 3 -40.55 -105.13 -12.54 0.71 214 + 216 3 -41.2 -106.2 -13.25 0.71 215 + 217 3 -42.34 -107.47 -13.25 0.71 216 + 218 3 -43.86 -109.06 -13.25 0.71 217 + 219 3 -45.38 -110.13 -13.25 0.71 218 + 220 3 -46.03 -111.73 -13.25 0.71 219 + 221 3 -46.46 -113.15 -16.46 0.71 220 + 222 3 -47.98 -115.3 -16.46 0.71 221 + 223 3 -49.07 -117.44 -18.34 0.71 222 + 224 3 -51.02 -118.15 -18.34 0.71 223 + 225 3 -53.19 -119.57 -20.06 0.71 224 + 226 3 -55.37 -120.81 -20.06 0.71 225 + 227 3 -57.4 -122.11 -21.44 0.71 226 + 228 3 -59.36 -123 -24.04 0.71 227 + 229 3 -61.1 -124.95 -24.04 0.71 228 + 230 3 -63.48 -126.55 -24.04 0.71 229 + 231 3 -65.87 -128.51 -24.04 0.71 230 + 232 3 -67.18 -130.46 -27.01 0.71 231 + 233 3 -69.57 -131.35 -27.01 0.71 232 + 234 3 -71.74 -134.55 -27.01 0.71 233 + 235 3 -73.91 -135.61 -27.8 0.71 234 + 236 3 -76.22 -136.53 -30.56 0.71 235 + 237 3 -77.96 -137.07 -30.56 0.71 236 + 238 3 -80.35 -138.13 -30.56 0.71 237 + 239 3 -81.65 -139.2 -30.56 0.71 238 + 240 3 -83.17 -139.73 -30.56 0.71 239 + 241 3 -84.69 -141.15 -30.56 0.71 240 + 242 3 -86.43 -142.57 -30.56 0.71 241 + 243 3 -87.32 -144.27 -30.56 0.71 242 + 244 3 -89.49 -145.33 -30.56 0.71 243 + 245 3 -91.44 -146.22 -30.56 0.71 244 + 246 3 -41.42 -108.68 -15.42 0.71 216 + 247 3 -41.86 -111.88 -15.42 0.71 246 + 248 3 -41.86 -114.01 -15.34 0.71 247 + 249 3 -42.07 -116.15 -15.34 0.71 248 + 250 3 -41.38 -119.46 -16.16 0.71 249 + 251 3 -41.18 -121.77 -19.07 0.71 250 + 252 3 -41.83 -123.91 -18.58 0.71 251 + 253 3 -41.62 -125.86 -18.58 0.71 252 + 254 3 -41.62 -127.99 -20.79 0.71 253 + 255 3 -40.96 -130.48 -20.79 0.71 254 + 256 3 -40.96 -132.97 -22.38 0.71 255 + 257 3 -40.18 -135.18 -22.38 0.71 256 + 258 3 -40.4 -137.31 -24.36 0.71 257 + 259 3 -41.27 -139.08 -24.36 0.71 258 + 260 3 -41.7 -140.51 -26.77 0.71 259 + 261 3 -44.09 -142.64 -29.73 0.71 260 + 262 3 -44.96 -144.41 -29.73 0.71 261 + 263 3 -45.18 -146.01 -29.73 0.71 262 + 264 3 -45.18 -148.5 -29.73 0.71 263 + 265 3 -44.38 -151.06 -29.73 0.71 264 + 266 3 -43.36 -153.55 -29.73 0.71 265 + 267 3 -43.36 -155.15 -29.73 0.71 266 + 268 3 -33.55 -87.82 -5.68 0.71 204 + 269 3 -34.2 -90.66 -5.68 0.71 268 + 270 3 -34.42 -92.62 -5.68 0.71 269 + 271 3 -35.07 -95.1 -5.68 0.71 270 + 272 3 -35.5 -97.24 -5.68 0.71 271 + 273 3 -35.5 -99.72 -5.68 0.71 272 + 274 3 -34.63 -101.32 -5.68 0.71 273 + 275 3 -34.67 -103.04 -5.68 0.71 274 + 276 3 -35.1 -104.82 -6.99 0.71 275 + 277 3 -35.32 -106.42 -6.99 0.71 276 + 278 3 -35.54 -108.37 -6.99 0.71 277 + 279 3 -35.97 -109.79 -8.37 0.71 278 + 280 3 -35.97 -110.86 -8.37 0.71 279 + 281 3 -35.97 -111.22 -8.37 0.71 280 + 282 3 -37.35 -112.89 -8.37 0.71 281 + 283 3 -38.66 -115.02 -8.37 0.71 282 + 284 3 -39.31 -116.8 -8.37 0.71 283 + 285 3 -40.39 -117.68 -8.37 0.71 284 + 286 3 -41.26 -119.46 -8.37 0.71 285 + 287 3 -41.7 -120.7 -8.37 0.71 286 + 288 3 -43.43 -122.84 -8.37 0.71 287 + 289 3 -44.95 -124.08 -8.37 0.71 288 + 290 3 -46.26 -125.86 -8.37 0.71 289 + 291 3 -47.13 -127.63 -10.46 0.71 290 + 292 3 -48.14 -130.42 -10.46 0.71 291 + 293 3 -48.48 -132.24 -7.5 0.71 292 + 294 3 -49.79 -134.55 -7.5 0.71 293 + 295 3 -49.57 -136.86 -6.16 0.71 294 + 296 3 -50.66 -138.46 -7.18 0.71 295 + 297 3 -53.04 -140.24 -7.18 0.71 296 + 298 3 -55 -141.84 -4.03 0.71 297 + 299 3 -57.17 -142.37 -4.03 0.71 298 + 300 3 -58.91 -144.5 -4.03 0.71 299 + 301 3 -61.51 -145.75 -4.03 0.71 300 + 302 3 -63.6 -148.18 -3.6 0.71 301 + 303 3 -65.56 -149.78 -3.6 0.71 302 + 304 3 -66.86 -151.73 -3.6 0.71 303 + 305 3 -68.16 -152.44 -0.13 0.71 304 + 306 3 -68.62 -152.44 -0.76 0.71 305 + 307 3 -69.48 -152.97 -0.76 0.71 306 + 308 3 -35.32 -113.17 -10.42 0.71 281 + 309 3 -35.32 -117.08 -10.42 0.71 308 + 310 3 -35.25 -119.15 -10.42 0.71 309 + 311 3 -35.03 -121.29 -11.3 0.71 310 + 312 3 -34.82 -123.06 -11.3 0.71 311 + 313 3 -34.38 -124.48 -11.42 0.71 312 + 314 3 -33.73 -124.66 -11.42 0.71 313 + 315 3 -33.73 -126.79 -11.42 0.71 314 + 316 3 -33.51 -128.57 -11.42 0.71 315 + 317 3 -32.64 -129.99 -11.42 0.71 316 + 318 3 -31.56 -132.48 -11.42 0.71 317 + 319 3 -31.2 -135.26 -11.42 0.71 318 + 320 3 -30.55 -136.86 -11.42 0.71 319 + 321 3 -29.69 -139.17 -11.42 0.71 320 + 322 3 -29.04 -140.59 -11.42 0.71 321 + 323 3 -27.96 -141.84 -11.42 0.71 322 + 324 3 -28.61 -143.44 -11.42 0.71 323 + 325 3 -27.52 -143.97 -14.1 0.71 324 + 326 3 -27.31 -146.99 -14.1 0.71 325 + 327 3 -26.58 -148.51 -14.1 0.71 326 + 328 3 -25.8 -150.07 -14.1 0.71 327 + 329 3 -24.93 -151.49 -14.1 0.71 328 + 330 3 -23.41 -152.91 -14.1 0.71 329 + 331 3 -22.11 -153.62 -14.1 0.71 330 + 332 3 -20.8 -154.68 -14.1 0.71 331 + 333 3 -21.24 -157.17 -17.15 0.71 332 + 334 3 -20.59 -159.3 -17.15 0.71 333 + 335 3 -20.15 -160.72 -17.15 0.71 334 + 336 3 -19.28 -162.32 -17.15 0.71 335 + 337 3 -17.76 -162.15 -17.15 0.71 336 + 338 3 -17.11 -164.46 -17.15 0.71 337 + 339 3 -15.76 -166.02 -17.15 0.71 338 + 340 3 -14.68 -167.8 -17.15 0.71 339 + 341 3 -14.03 -168.51 -19.01 0.71 340 + 342 3 -12.75 -169.71 -19.01 0.71 341 + 343 3 -10.39 -25.65 6.52 0.71 125 + 344 3 -10.17 -27.43 7.42 0.71 343 + 345 3 -8.65 -28.32 7.42 0.71 344 + 346 3 -8.87 -30.1 7.42 0.71 345 + 347 3 -8.65 -32.4 10.22 0.71 346 + 348 3 -7.52 -34.06 13.02 0.71 347 + 349 3 -6.43 -35.66 15.02 0.71 348 + 350 3 -5.13 -37.08 14.17 0.71 349 + 351 3 -4.69 -39.21 14.17 0.71 350 + 352 3 -4.26 -40.63 16.77 0.71 351 + 353 3 -3.39 -42.41 16.22 0.71 352 + 354 3 -2.31 -43.65 16.22 0.71 353 + 355 3 -1.22 -45.61 18.72 0.71 354 + 356 3 -0.13 -47.03 19.02 0.71 355 + 357 3 1.1 -48.66 19.02 0.71 356 + 358 3 2.19 -49.37 21.17 0.71 357 + 359 3 3.92 -50.97 22.74 0.71 358 + 360 3 5.88 -52.39 22.74 0.71 359 + 361 3 7.83 -54.34 22.74 0.71 360 + 362 3 8.92 -55.76 24.71 0.71 361 + 363 3 9.79 -57.36 22.82 0.71 362 + 364 3 10.66 -59.32 22.82 0.71 363 + 365 3 11.31 -61.27 22.82 0.71 364 + 366 3 12.61 -62.87 22.82 0.71 365 + 367 3 13.67 -65.35 22.82 0.71 366 + 368 3 13.45 -67.66 24.69 0.71 367 + 369 3 13.23 -69.79 26.55 0.71 368 + 370 3 13.23 -72.28 26.55 0.71 369 + 371 3 12.36 -75.12 26.55 0.71 370 + 372 3 12.15 -77.96 26.55 0.71 371 + 373 3 13.27 -80.17 26.55 0.71 372 + 374 3 14.57 -83.01 26.55 0.71 373 + 375 3 16.31 -84.61 26.55 0.71 374 + 376 3 17.61 -86.03 25.15 0.71 375 + 377 3 18.91 -87.28 25.15 0.71 376 + 378 3 20.65 -89.58 25.15 0.71 377 + 379 3 21.52 -91.54 25.15 0.71 378 + 380 3 22.6 -93.14 25.15 0.71 379 + 381 3 23.88 -95.39 25.15 0.71 380 + 382 3 24.53 -96.99 25.15 0.71 381 + 383 3 24.75 -97.52 23.02 0.71 382 + 384 3 25.19 -98.59 23.02 0.71 383 + 385 3 24.55 -99.53 23.02 0.71 384 + 386 3 24.11 -102.72 23.02 0.71 385 + 387 3 24.11 -105.21 23.02 0.71 386 + 388 3 24.55 -106.63 23.02 0.71 387 + 389 3 23.03 -108.94 23.02 0.71 388 + 390 3 23.24 -112.14 23.02 0.71 389 + 391 3 23.24 -114.09 23.02 0.71 390 + 392 3 23.4 -116.15 23.28 0.71 391 + 393 3 23.18 -118.46 23.28 0.71 392 + 394 3 22.96 -120.41 23.28 0.71 393 + 395 3 22.75 -122.19 23.28 0.71 394 + 396 3 22.09 -124.5 23.28 0.71 395 + 397 3 20.79 -126.45 23.28 0.71 396 + 398 3 19.92 -128.4 23.28 0.71 397 + 399 3 18.93 -130.24 23.28 0.71 398 + 400 3 17.49 -131.68 23.28 0.71 399 + 401 3 26.71 -99.48 23.02 0.71 384 + 402 3 28.88 -101.61 23.02 0.71 401 + 403 3 29.96 -103.39 23.02 0.71 402 + 404 3 30.62 -104.1 25.22 0.71 403 + 405 3 32.14 -104.98 25.22 0.71 404 + 406 3 33.22 -106.94 25.22 0.71 405 + 407 3 34.09 -108.54 25.22 0.71 406 + 408 3 35.52 -110.44 23.38 0.71 407 + 409 3 36.6 -112.21 22.04 0.71 408 + 410 3 36.6 -114.88 20.78 0.71 409 + 411 3 37.25 -116.83 20.78 0.71 410 + 412 3 37.91 -119.14 20.78 0.71 411 + 413 3 37.47 -121.1 20.78 0.71 412 + 414 3 38.56 -122.52 20.78 0.71 413 + 415 3 38.34 -125.36 20.78 0.71 414 + 416 3 38.63 -127.72 20.78 0.71 415 + 417 3 39.93 -130.03 20.78 0.71 416 + 418 3 41.67 -133.05 20.78 0.71 417 + 419 3 42.76 -133.94 20.34 0.71 418 + 420 3 43.84 -136.07 18.02 0.71 419 + 421 3 44.93 -138.21 18.02 0.71 420 + 422 3 47.1 -140.16 18.02 0.71 421 + 423 3 48.97 -141.7 18.02 0.71 422 + 424 3 -3.44 -3.24 -7.45 1.42 1 + 425 3 -5.39 -5.04 -7.45 1.065 424 + 426 3 -6.26 -6.81 -9 1.065 425 + 427 3 -7.56 -9.3 -11.45 1.065 426 + 428 3 -8.87 -12.14 -11.15 1.065 427 + 429 3 -9.74 -13.74 -11.15 1.065 428 + 430 3 -9.95 -14.63 -11.15 1.065 429 + 431 3 -10.82 -15.87 -11.15 1.065 430 + 432 3 -11.04 -17.65 -10.71 0.89 431 + 433 3 -11.47 -19.96 -10.71 0.89 432 + 434 3 -11.39 -21.59 -12.99 0.89 433 + 435 3 -12.04 -24.61 -15.49 0.89 434 + 436 3 -11.39 -27.28 -15.49 0.89 435 + 437 3 -10.3 -29.41 -15.78 0.89 436 + 438 3 -9 -32.25 -15.78 0.71 437 + 439 3 -5.96 -34.92 -15.78 0.71 438 + 440 3 -4.25 -37.17 -15.78 0.71 439 + 441 3 -2.95 -40.01 -15.78 0.71 440 + 442 3 -1.86 -42.32 -17.46 0.71 441 + 443 3 -0.12 -44.45 -17.46 0.71 442 + 444 3 0.96 -46.58 -17.46 0.71 443 + 445 3 2.92 -47.3 -17.46 0.71 444 + 446 3 5.31 -49.96 -17.46 0.71 445 + 447 3 7.15 -50.93 -17.46 0.71 446 + 448 3 8.45 -51.99 -17.37 0.71 447 + 449 3 10.63 -53.26 -15.32 0.71 448 + 450 3 13.23 -54.32 -15.32 0.71 449 + 451 3 14.97 -56.1 -15.32 0.71 450 + 452 3 16.73 -57.99 -11.07 0.71 451 + 453 3 19.99 -60.3 -11.07 0.71 452 + 454 3 22.16 -62.61 -11.07 0.71 453 + 455 3 24.55 -64.56 -11.07 0.71 454 + 456 3 26.51 -65.28 -9.06 0.71 455 + 457 3 29.33 -66.52 -7.1 0.71 456 + 458 3 31.94 -68.83 -7.5 0.71 457 + 459 3 34.98 -70.6 -6.11 0.71 458 + 460 3 37.4 -72.08 -6.09 0.71 459 + 461 3 40.66 -73.68 -6.09 0.71 460 + 462 3 43.48 -75.46 -6.09 0.71 461 + 463 3 45.44 -75.99 -6.09 0.71 462 + 464 3 47.39 -77.05 -6.09 0.71 463 + 465 3 48.91 -77.23 -7.27 0.71 464 + 466 3 50.65 -78.3 -7.27 0.71 465 + 467 3 53.91 -77.77 -7.27 0.71 466 + 468 3 55.32 -79.97 -9.21 0.71 467 + 469 3 58.14 -81.03 -7.62 0.71 468 + 470 3 60.09 -82.28 -10.16 0.71 469 + 471 3 62.05 -84.05 -10.16 0.71 470 + 472 3 62.27 -85.83 -8.19 0.71 471 + 473 3 62.85 -87.26 -8.19 0.71 472 + 474 3 64.8 -88.5 -8.19 0.71 473 + 475 3 66.11 -88.86 -8.19 0.71 474 + 476 3 67.41 -90.28 -8.19 0.71 475 + 477 3 68.28 -90.63 -8.19 0.71 476 + 478 3 69.58 -90.81 -8.19 0.71 477 + 479 3 70.23 -91.17 -8.19 0.71 478 + 480 3 71.32 -91.88 -8.19 0.71 479 + 481 3 72.19 -93.12 -8.19 0.71 480 + 482 3 73.27 -93.12 -8.19 0.71 481 + 483 3 -4.72 8.96 0.48 0.89 1 + 484 3 -5.59 9.67 -1.32 0.89 483 + 485 3 -6.68 9.67 -2.98 0.89 484 + 486 3 -8.42 9.5 -2.98 0.89 485 + 487 3 -9.94 9.67 -5.41 0.89 486 + 488 3 -12.11 10.21 -3.33 0.89 487 + 489 3 -13.84 10.21 -5.28 0.89 488 + 490 3 -15.15 10.03 -5.28 0.89 489 + 491 3 -16.02 10.38 -5.26 0.89 490 + 492 3 -17.54 10.21 -7.5 0.89 491 + 493 3 -19.06 10.03 -7.5 0.89 492 + 494 3 -20.58 9.85 -7.5 0.89 493 + 495 3 -22.52 9.05 -7.5 0.89 494 + 496 3 -22.54 9.39 -8.39 1.065 495 + 497 3 -24.56 9.52 -6.46 0.71 496 + 498 3 -27.6 9.16 -6.46 0.71 497 + 499 3 -29.12 9.52 -6.46 0.71 498 + 500 3 -30.42 9.87 -6.46 0.71 499 + 501 3 -31.72 9.52 -6.46 0.71 500 + 502 3 -33.9 9.16 -6.46 0.71 501 + 503 3 -35.42 9.16 -5.93 0.71 502 + 504 3 -36.72 9.52 -5.93 0.71 503 + 505 3 -38.46 10.23 -5.93 0.71 504 + 506 3 -39.54 9.87 -3.47 0.71 505 + 507 3 -41.06 9.87 -3.47 0.71 506 + 508 3 -42.31 9.79 -3.34 0.71 507 + 509 3 -44.26 9.43 -3.34 0.71 508 + 510 3 -45.78 8.7 -3.32 0.71 509 + 511 3 -46 7.81 -3.5 0.71 510 + 512 3 -48.6 7.81 -3.5 0.71 511 + 513 3 -51.64 7.28 -3.5 0.71 512 + 514 3 -54.03 7.28 -7.03 0.71 513 + 515 3 -57.07 7.28 -8.9 0.71 514 + 516 3 -59.68 7.45 -8.9 0.71 515 + 517 3 -61.31 7.01 -9.79 0.71 516 + 518 3 -62.61 7.19 -9.79 0.71 517 + 519 3 -63.48 6.65 -8.6 0.71 518 + 520 3 -65 5.94 -11.2 0.71 519 + 521 3 -67.17 5.76 -11.2 0.71 520 + 522 3 -69.56 6.12 -13.28 0.71 521 + 523 3 -69.78 6.83 -15.9 0.71 522 + 524 3 -73.03 5.41 -18.18 0.71 523 + 525 3 -74.99 4.88 -18.18 0.71 524 + 526 3 -75.64 4.7 -16.49 0.71 525 + 527 3 -77.38 4.17 -16.49 0.71 526 + 528 3 -78.05 3.79 -16.49 0.71 527 + 529 3 -22.76 9.92 -8.69 0.71 496 + 530 3 -25.17 7.83 -13.5 0.71 529 + 531 3 -26.69 6.94 -16 0.71 530 + 532 3 -28 6.23 -17.93 0.71 531 + 533 3 -29.95 5.52 -17.93 0.71 532 + 534 3 -31.47 5.17 -17.49 0.71 533 + 535 3 -32.99 4.63 -19.25 0.71 534 + 536 3 -33.88 3.75 -21.23 0.71 535 + 537 3 -34.75 2.48 -23.63 0.71 536 + 538 3 -35.83 1.06 -21.14 0.71 537 + 539 3 -36.92 -0.36 -21.14 0.71 538 + 540 3 -37.57 -1.25 -23.59 0.71 539 + 541 3 -38.87 -2.67 -26.42 0.71 540 + 542 3 -39.53 -4.27 -25.9 0.71 541 + 543 3 -40.61 -5.52 -27.79 0.71 542 + 544 3 -41.65 -7.41 -27.57 0.71 543 + 545 3 -42.74 -8.48 -27.36 0.71 544 + 546 3 -43.83 -10.43 -29.26 0.71 545 + 547 3 -44.91 -12.39 -30.73 0.71 546 + 548 3 -46 -14.16 -32.63 0.71 547 + 549 3 -46.65 -16.12 -32.63 0.71 548 + 550 3 -46.87 -15.94 -33.9 0.71 549 + 551 3 -48.82 -18.25 -36.08 0.71 550 + 552 3 -50.34 -20.56 -35.03 0.71 551 + 553 3 -51.91 -23.32 -36.91 0.71 552 + 554 3 -53.21 -25.28 -36.91 0.71 553 + 555 3 -54.95 -26.88 -38.65 0.71 554 + 556 3 -54.95 -26.88 -39.05 0.71 555 + 557 3 -56.31 -27.93 -39.05 0.71 556 + 558 3 -57.83 -28.81 -39.05 0.71 557 + 559 3 -59.56 -30.41 -40.08 0.71 558 + 560 3 -61.52 -32.37 -40.08 0.71 559 + 561 3 -62.6 -33.61 -42.58 0.71 560 + 562 3 -63.69 -35.21 -42.58 0.71 561 + 563 3 -65.43 -36.1 -42.58 0.71 562 + 564 3 -67.38 -37.34 -44.58 0.71 563 + 565 3 -69.55 -38.41 -47.55 0.71 564 + 566 3 -70.86 -39.3 -47.55 0.71 565 + 567 3 -72.16 -40.18 -49.9 0.71 566 + 568 3 -73.71 -41.5 -51.42 0.71 567 + 569 3 -75.23 -43.63 -51.42 0.71 568 + 570 3 -76.09 -45.06 -51.42 0.71 569 + 571 3 -77.4 -46.65 -51.42 0.71 570 + 572 3 -79.14 -48.43 -51.42 0.71 571 + 573 3 -80.66 -50.56 -51.42 0.71 572 + 574 3 -81.74 -52.52 -51.12 0.71 573 + 575 3 -82.18 -54.65 -51.12 0.71 574 + 576 3 -83.04 -56.6 -51.12 0.71 575 + 577 3 -81.48 -58.19 -51.12 0.71 576 + 578 3 -83.44 -61.74 -51.12 0.71 577 + 579 3 -84.09 -64.05 -53.42 0.71 578 + 580 3 -85.17 -66.01 -53.42 0.71 579 + 581 3 -85.39 -67.96 -53.42 0.71 580 + 582 3 -85.17 -70.27 -53.42 0.71 581 + 583 3 -85.39 -72.58 -53.42 0.71 582 + 584 3 -85.19 -74.57 -53.42 0.71 583 + 585 3 -86.49 -76.88 -53.42 0.71 584 + 586 3 -87.79 -78.65 -53.42 0.71 585 + 587 3 -88.88 -80.43 -53.42 0.71 586 + 588 3 -89.31 -82.03 -53.42 0.71 587 + 589 3 -90.18 -83.81 -53.42 0.71 588 + 590 3 -92.35 -85.23 -53.42 0.71 589 + 591 3 -94.09 -86.83 -53.42 0.71 590 + 592 3 -95.07 -88.99 -55.52 0.71 591 + 593 3 -97.24 -91.12 -55.52 0.71 592 + 594 3 -99.2 -91.3 -59.18 0.71 593 + 595 3 -101.8 -91.83 -59.18 0.71 594 + 596 3 -103.54 -92.37 -57.78 0.71 595 + 597 3 -105.06 -92.54 -60.13 0.71 596 + 598 3 -106.8 -93.97 -60.13 0.71 597 + 599 3 -107.23 -94.14 -58.8 0.71 598 + 600 3 -108.97 -96.99 -60.87 0.71 599 + 601 3 -110.93 -99.3 -64.3 0.71 600 + 602 3 -112.88 -101.25 -64.3 0.71 601 + 603 3 -114.07 -103.95 -64.3 0.71 602 + 604 3 -115.16 -106.08 -64.3 0.71 603 + 605 3 -116.46 -108.03 -64.3 0.71 604 + 606 3 -118.42 -108.57 -64.3 0.71 605 + 607 3 -120.8 -109.45 -64.3 0.71 606 + 608 3 -123.19 -110.16 -64.3 0.71 607 + 609 3 -125.58 -109.28 -63.32 0.71 608 + 610 3 -127.32 -109.99 -63.32 0.71 609 + 611 3 -129.27 -110.34 -63.32 0.71 610 + 612 3 -130.79 -110.34 -63.32 0.71 611 + 613 3 -132.54 -110.46 -61.53 0.71 612 + 614 3 -135.8 -111.88 -61.53 0.71 613 + 615 3 -136.67 -113.3 -61.53 0.71 614 + 616 3 -137.75 -114.9 -61.53 0.71 615 + 617 3 -138.19 -116.32 -61.53 0.71 616 + 618 3 -138.4 -118.28 -61.53 0.71 617 + 619 3 -54.95 -29.54 -40.82 0.71 556 + 620 3 -56.03 -31.5 -40.82 0.71 619 + 621 3 -56.68 -33.1 -40.82 0.71 620 + 622 3 -57.55 -35.58 -41.45 0.71 621 + 623 3 -58.04 -38.86 -41.45 0.71 622 + 624 3 -58.91 -40.63 -43.09 0.71 623 + 625 3 -59.77 -42.94 -43.87 0.71 624 + 626 3 -60.22 -44.48 -43.87 0.71 625 + 627 3 -60.65 -46.08 -43.07 0.71 626 + 628 3 -61.24 -47.99 -43.07 0.71 627 + 629 3 -61.89 -49.59 -43.07 0.71 628 + 630 3 -62.32 -50.83 -43.07 0.71 629 + 631 3 8.75 -0.81 1.12 1.065 1 + 632 3 9.61 -2.79 -0.82 0.89 631 + 633 3 11.13 -4.57 -0.82 0.89 632 + 634 3 12 -6.7 -3.23 0.89 633 + 635 3 12.87 -8.3 -3.23 0.89 634 + 636 3 14.17 -9.9 -3.23 0.89 635 + 637 3 15.69 -12.21 -3.23 0.89 636 + 638 3 17.35 -13.53 -3.23 0.71 637 + 639 3 19.09 -17.26 -3.23 0.71 638 + 640 3 20.39 -19.39 -3.23 0.71 639 + 641 3 21.48 -20.45 -3.23 0.71 640 + 642 3 22.13 -23.65 -3.23 0.71 641 + 643 3 22.56 -25.43 -4.4 0.71 642 + 644 3 24.3 -27.56 -4.4 0.71 643 + 645 3 25.08 -29.28 -4.4 0.71 644 + 646 3 25.65 -30.5 -4.4 0.71 645 + 647 3 27.17 -31.92 -4.4 0.71 646 + 648 3 27.8 -32.81 -4.4 0.89 647 + 649 3 26.95 -34.99 -4.4 0.71 648 + 650 3 26.29 -37.3 -4.4 0.71 649 + 651 3 25.86 -39.08 -4.4 0.71 650 + 652 3 25.64 -40.5 -6.3 0.71 651 + 653 3 26.29 -41.74 -6.3 0.71 652 + 654 3 26.73 -43.7 -6.3 0.71 653 + 655 3 26.51 -45.65 -6.3 0.71 654 + 656 3 26.95 -47.25 -6.3 0.71 655 + 657 3 27.6 -49.2 -7.94 0.71 656 + 658 3 28.05 -51.3 -7.94 0.71 657 + 659 3 28.7 -53.63 -7.83 0.71 658 + 660 3 29.35 -55.23 -7.38 0.71 659 + 661 3 30 -57.01 -10.33 0.71 660 + 662 3 30.44 -59.14 -10.35 0.71 661 + 663 3 30.61 -59.41 -10.35 0.71 662 + 664 3 29.51 -60.88 -12.27 0.71 663 + 665 3 28.43 -64.26 -12.27 0.71 664 + 666 3 28.21 -66.21 -12.27 0.71 665 + 667 3 27.56 -67.81 -12.9 0.71 666 + 668 3 27.56 -69.76 -12.9 0.71 667 + 669 3 26.91 -72.07 -14.77 0.71 668 + 670 3 27.12 -74.2 -14.77 0.71 669 + 671 3 27.21 -76.04 -16.82 0.71 670 + 672 3 27.21 -79.06 -16.82 0.71 671 + 673 3 27.21 -81.54 -16.82 0.71 672 + 674 3 27.65 -83.5 -16.82 0.71 673 + 675 3 27.43 -86.16 -16.82 0.71 674 + 676 3 27.43 -88.83 -16.82 0.71 675 + 677 3 27.4 -91.52 -19.22 0.71 676 + 678 3 28.05 -94.37 -19.22 0.71 677 + 679 3 28.05 -97.21 -19.22 0.71 678 + 680 3 28.05 -100.41 -19.22 0.71 679 + 681 3 27.83 -102.72 -19.22 0.71 680 + 682 3 27.6 -104.61 -19.22 0.71 681 + 683 3 27.38 -106.21 -19.22 0.71 682 + 684 3 32.35 -61.19 -11.72 0.71 663 + 685 3 33.44 -63.15 -11.72 0.71 684 + 686 3 34.74 -64.92 -11.72 0.71 685 + 687 3 35.83 -66.52 -11.72 0.71 686 + 688 3 36.91 -68.3 -11.72 0.71 687 + 689 3 37.56 -69.72 -12.58 0.71 688 + 690 3 38.43 -70.78 -14.82 0.71 689 + 691 3 39.08 -73.63 -16.77 0.71 690 + 692 3 39.9 -74.37 -15.78 0.71 691 + 693 3 40.99 -77.57 -15.78 0.71 692 + 694 3 41.88 -79.41 -18.03 0.71 693 + 695 3 43.4 -81.9 -18.03 0.71 694 + 696 3 44.27 -83.85 -18.03 0.71 695 + 697 3 45.36 -85.63 -18.03 0.71 696 + 698 3 46.01 -87.76 -18.03 0.71 697 + 699 3 47.51 -89.18 -20.03 0.71 698 + 700 3 48.6 -90.61 -21.13 0.71 699 + 701 3 49.25 -92.38 -20.53 0.71 700 + 702 3 50.73 -94.57 -20.53 0.71 701 + 703 3 51.8 -96.55 -20.53 0.71 702 + 704 3 53.11 -97.61 -21.27 0.71 703 + 705 3 53.97 -99.03 -21.27 0.71 704 + 706 3 55.28 -101.34 -21.27 0.71 705 + 707 3 57.23 -102.23 -21.27 0.71 706 + 708 3 59.84 -104.01 -23.21 0.71 707 + 709 3 61.58 -105.25 -23.21 0.71 708 + 710 3 63.75 -105.07 -23.21 0.71 709 + 711 3 65.7 -105.78 -21.2 0.71 710 + 712 3 67.01 -106.14 -22.98 0.71 711 + 713 3 69.39 -107.38 -22.98 0.71 712 + 714 3 72.24 -108.7 -22.98 0.71 713 + 715 3 74.41 -109.24 -22.98 0.71 714 + 716 3 75.93 -110.3 -23.78 0.71 715 + 717 3 77.23 -111.9 -23.78 0.71 716 + 718 3 78.54 -113.5 -23.78 0.71 717 + 719 3 79.62 -115.1 -23.78 0.71 718 + 720 3 81.14 -117.23 -23.78 0.71 719 + 721 3 82.88 -119.01 -23.78 0.71 720 + 722 3 83.96 -120.25 -24.59 0.71 721 + 723 3 85.27 -121.49 -24.59 0.71 722 + 724 3 86.35 -122.92 -24.59 0.71 723 + 725 3 87.92 -124.28 -24.59 0.71 724 + 726 3 29.76 -33.88 -2.3 0.71 648 + 727 3 31.71 -36.37 -2.3 0.71 726 + 728 3 33.23 -37.79 -2.3 0.71 727 + 729 3 33.67 -37.96 3.37 0.71 728 + 730 3 35.19 -40.63 3.37 0.71 729 + 731 3 36.49 -41.52 5.54 0.71 730 + 732 3 37.58 -42.94 5.54 0.71 731 + 733 3 38.88 -43.83 7.86 0.71 732 + 734 3 41.19 -45.86 7.86 0.71 733 + 735 3 42.49 -47.28 7.86 0.71 734 + 736 3 43.57 -48.7 10.42 0.71 735 + 737 3 44.66 -51.37 10.42 0.71 736 + 738 3 46.18 -52.25 12.98 0.71 737 + 739 3 47.48 -53.32 14.64 0.71 738 + 740 3 48.79 -54.56 14.64 0.71 739 + 741 3 49.87 -55.81 16.12 0.71 740 + 742 3 50.52 -57.94 17.84 0.71 741 + 743 3 51.18 -59.72 20.06 0.71 742 + 744 3 50.33 -63.95 20.06 0.71 743 + 745 3 50.11 -66.63 22.44 0.71 744 + 746 3 50.33 -68.23 21.22 0.71 745 + 747 3 50.55 -70.36 22.63 0.71 746 + 748 3 50.98 -72.32 22.82 0.71 747 + 749 3 50.76 -74.98 25.59 0.71 748 + 750 3 51.67 -77.75 25.59 0.71 749 + 751 3 52.1 -80.59 25.59 0.71 750 + 752 3 52.97 -82.37 25.59 0.71 751 + 753 3 53.19 -84.85 25.51 0.71 752 + 754 3 53.62 -86.98 25.51 0.71 753 + 755 3 54.05 -89.12 25.51 0.71 754 + 756 3 54.71 -91.43 25.51 0.71 755 + 757 3 55.48 -94.1 25.51 0.71 756 + 758 3 55.47 -95.52 26.67 0.71 757 + 759 3 56.77 -96.06 26.67 0.71 758 + 760 3 56.33 -99.79 28.31 0.71 759 + 761 3 56.4 -101.81 28.31 0.71 760 + 762 3 55.96 -104.12 28.31 0.71 761 + 763 3 57.05 -106.61 28.31 0.71 762 + 764 3 57.47 -108.39 28.98 0.71 763 + 765 3 58.33 -110.52 28.98 0.71 764 + 766 3 58.33 -112.12 28.98 0.71 765 + 767 3 58.55 -114.07 28.98 0.71 766 + 768 3 59.85 -115.49 28.98 0.71 767 + 769 3 59.8 -117.52 28.98 0.71 768 + 770 3 59.58 -119.3 28.98 0.71 769 + 771 3 59.15 -121.43 28.98 0.71 770 + 772 3 59.8 -122.85 28.98 0.71 771 + 773 3 60.45 -124.45 28.98 0.71 772 + 774 3 61.53 -125.7 28.98 0.71 773 + 775 3 61.75 -128.18 28.98 0.71 774 + 776 3 61.32 -129.96 28.98 0.71 775 + 777 4 11.43 16.93 -0.7 2.485 1 + 778 4 13.17 18.71 -0.7 2.485 777 + 779 4 14.69 19.95 -0.6 2.31 778 + 780 4 16.43 21.55 -0.6 2.31 779 + 781 4 18.38 23.15 -3.24 2.31 780 + 782 4 20.34 25.64 -2.86 2.31 781 + 783 4 23.6 29.01 -2.86 2.13 782 + 784 4 25.07 30.07 -0.58 2.13 783 + 785 4 27.24 32.2 -0.58 2.13 784 + 786 4 28.11 34.33 -0.58 2.13 785 + 787 4 28.98 36.46 1.38 2.13 786 + 788 4 30.28 38.42 1.38 2.13 787 + 789 4 31.8 40.01 3.08 2.13 788 + 790 4 33.54 42.15 1.32 1.955 789 + 791 4 35.28 44.28 1.96 1.6 790 + 792 4 38.42 47.91 1.96 1.775 791 + 793 4 39.51 49.15 -0.19 1.775 792 + 794 4 39.73 51.11 0.88 1.775 793 + 795 4 41.03 53.24 0.88 1.775 794 + 796 4 41.9 54.66 -1.98 1.775 795 + 797 4 43.42 56.97 -1.98 1.775 796 + 798 4 45.81 58.57 -2.04 1.775 797 + 799 4 46.43 59.84 -4.69 1.775 798 + 800 4 48.17 61.98 -4.32 1.775 799 + 801 4 50.13 64.64 -4.32 1.775 800 + 802 4 50.78 66.77 -6.38 1.775 801 + 803 4 52.08 68.19 -8.52 1.775 802 + 804 4 54.25 70.32 -9.89 1.775 803 + 805 4 55.99 72.63 -10.66 1.775 804 + 806 4 58.38 75.3 -10.66 1.775 805 + 807 4 60.54 78.02 -8.25 1.6 806 + 808 4 62.27 79.97 -8.25 1.6 807 + 809 4 64.01 82.46 -5.63 1.6 808 + 810 4 65.97 85.3 -5.63 1.6 809 + 811 4 67.27 87.61 -4 1.6 810 + 812 4 69.44 90.1 -4 1.6 811 + 813 4 70.69 93.58 -4 1.775 812 + 814 4 71.55 95.53 -7.28 1.955 813 + 815 4 72.62 97.84 -7.28 1.955 814 + 816 4 73.71 99.97 -7.28 2.13 815 + 817 4 74.79 101.75 -7.28 2.13 816 + 818 4 76.1 104.95 -7.28 2.13 817 + 819 4 78.57 108.91 -6 2.13 818 + 820 4 79.87 111.22 -6 2.13 819 + 821 4 81.39 113.53 -4.77 2.13 820 + 822 4 82.05 115.84 -4.77 2.13 821 + 823 4 82.92 116.72 -4.77 2.13 822 + 824 4 83.13 119.39 -4.77 2.13 823 + 825 4 84.47 121.53 -4.77 1.955 824 + 826 4 85.99 123.31 -4.77 1.955 825 + 827 4 87.73 125.62 -4.77 1.955 826 + 828 4 89.25 127.39 -6.71 1.955 827 + 829 4 90.98 129.53 -6.71 1.955 828 + 830 4 92.5 130.59 -11.6 2.13 829 + 831 4 94.02 131.3 -11.6 2.13 830 + 832 4 95.54 132.01 -11.6 2.485 831 + 833 4 95.76 132.37 -11.6 3.02 832 + 834 4 94.89 134.15 -10.74 1.775 833 + 835 4 95.11 136.1 -10.74 1.775 834 + 836 4 95.11 137.34 -12.26 1.775 835 + 837 4 95.11 139.3 -12.26 1.775 836 + 838 4 95.11 139.47 -11.68 1.6 837 + 839 4 95.11 140.9 -11.68 1.6 838 + 840 4 95.33 142.14 -11.68 1.42 839 + 841 4 95.76 143.92 -13.98 1.42 840 + 842 4 96.16 145.86 -13.98 1.42 841 + 843 4 96.38 147.81 -12.71 1.42 842 + 844 4 96.6 149.94 -12.71 1.42 843 + 845 4 97.68 151.37 -12.71 1.42 844 + 846 4 99.2 153.32 -12.71 1.42 845 + 847 4 100.51 155.27 -12.71 1.42 846 + 848 4 101.16 156.52 -12.71 1.42 847 + 849 4 101.81 157.58 -14.33 1.42 848 + 850 4 102.68 158.83 -14.33 1.6 849 + 851 4 102.94 158.9 -14.33 1.775 850 + 852 4 102.35 159.83 -13.14 1.6 851 + 853 4 102.35 161.79 -13.14 1.6 852 + 854 4 102.56 163.56 -13.07 1.42 853 + 855 4 103 166.05 -13.07 1.42 854 + 856 4 103.21 168.36 -13.07 1.42 855 + 857 4 103.65 170.14 -13.07 1.42 856 + 858 4 104.08 171.91 -13.07 1.42 857 + 859 4 104.3 172.62 -13.23 1.42 858 + 860 4 105.27 174.66 -13.23 1.42 859 + 861 4 105.48 176.23 -13.23 1.42 860 + 862 4 105.27 178.01 -13.23 1.42 861 + 863 4 105.7 179.07 -13.23 1.42 862 + 864 4 106.13 180.32 -13.23 1.42 863 + 865 4 106.13 181.21 -13.23 1.42 864 + 866 4 106.35 181.92 -13.23 1.42 865 + 867 4 105.48 183.16 -13.23 1.065 866 + 868 4 105.7 184.76 -13.23 1.065 867 + 869 4 106.35 186 -11.38 0.89 868 + 870 4 106.79 188.31 -11.38 0.89 869 + 871 4 106.35 190.09 -8.14 0.89 870 + 872 4 105.7 191.51 -8.14 0.89 871 + 873 4 106.35 193.11 -8.14 1.065 872 + 874 4 105.7 194.71 -8.14 1.065 873 + 875 4 105.83 196.52 -5.66 1.065 874 + 876 4 106.05 198.83 -5.66 1.065 875 + 877 4 106.48 200.25 -5.66 1.065 876 + 878 4 106.7 201.49 -5.66 1.065 877 + 879 4 106.27 203.09 -7.68 1.065 878 + 880 4 106.27 204.16 -6.5 0.89 879 + 881 4 106.27 206.47 -6.5 0.89 880 + 882 4 106.27 208.6 -6.5 0.89 881 + 883 4 105.83 210.55 -6.5 0.89 882 + 884 4 105.81 211.61 -4.37 1.065 883 + 885 4 106.03 214.09 -4.37 1.065 884 + 886 4 106.25 215.69 -4.37 1.065 885 + 887 4 105.81 216.94 -2.22 1.065 886 + 888 4 105.81 218.53 -2.22 0.89 887 + 889 4 105.38 220.84 -2.22 0.89 888 + 890 4 105.16 222.8 -2.22 0.89 889 + 891 4 105.16 224.4 -2.22 0.89 890 + 892 4 104.29 226.35 -0.57 0.89 891 + 893 4 104.85 227.41 -0.57 0.89 892 + 894 4 105.07 229.54 -0.57 0.89 893 + 895 4 105.07 231.49 -0.57 0.89 894 + 896 4 105.28 233.62 -0.57 0.89 895 + 897 4 105.72 235.76 -0.57 0.89 896 + 898 4 106.15 237 -0.57 0.89 897 + 899 4 106.59 238.42 -0.57 0.89 898 + 900 4 106.8 239.84 0.98 0.89 899 + 901 4 107.24 241.97 0.98 0.89 900 + 902 4 107.67 244.78 0.98 0.89 901 + 903 4 107.67 246.91 0.98 0.89 902 + 904 4 107.67 248.87 0.98 0.89 903 + 905 4 108.1 250.47 0.98 0.89 904 + 906 4 108.53 251.89 0.98 0.89 905 + 907 4 109.62 253.67 0.98 0.89 906 + 908 4 109.84 255.09 0.98 0.89 907 + 909 4 110.71 256.15 0.98 0.89 908 + 910 4 111.05 257.54 2.28 0.89 909 + 911 4 111.48 259.32 2.28 1.065 910 + 912 4 111.05 260.91 2.28 1.065 911 + 913 4 111.27 262.34 3.51 1.065 912 + 914 4 111.27 264.47 3.51 1.065 913 + 915 4 111.27 265.71 3.51 1.065 914 + 916 4 111.48 267.31 5.26 0.89 915 + 917 4 111.7 269.09 5.26 0.89 916 + 918 4 111.92 270.69 5.26 1.065 917 + 919 4 112.47 272.01 5.26 1.065 918 + 920 4 113.1 273.94 7.2 1.065 919 + 921 4 113.53 276.43 7.2 1.065 920 + 922 4 113.75 278.2 7.2 1.065 921 + 923 4 113.97 280.33 8.1 1.065 922 + 924 4 114.19 282.29 8.1 1.065 923 + 925 4 114.19 284.42 8.1 1.065 924 + 926 4 114.62 286.37 9.94 1.065 925 + 927 4 114.63 288.12 9.94 1.065 926 + 928 4 114.2 290.25 9.94 1.065 927 + 929 4 113.98 292.2 9.94 1.065 928 + 930 4 113.98 294.69 9.94 1.065 929 + 931 4 113.33 296.11 9.94 1.065 930 + 932 4 113.11 297.35 11.25 1.065 931 + 933 4 113.55 299.31 11.25 1.065 932 + 934 4 113.76 301.26 13.19 1.065 933 + 935 4 113.6 303.12 13.19 1.065 934 + 936 4 113.38 306.31 13.19 1.065 935 + 937 4 112.73 308.27 13.19 1.065 936 + 938 4 112.73 310.05 15.53 1.065 937 + 939 4 112.51 311.64 15.53 1.065 938 + 940 4 112.95 313.42 15.53 1.065 939 + 941 4 113.6 314.84 15.53 1.065 940 + 942 4 113.38 316.8 15.53 1.065 941 + 943 4 113.2 319.23 16.7 1.065 942 + 944 4 112.98 322.07 16.57 0.89 943 + 945 4 112.98 325.09 16.57 0.89 944 + 946 4 112.98 327.22 18.62 0.89 945 + 947 4 112.33 330.06 18.62 0.89 946 + 948 4 111.46 332.2 19.22 0.89 947 + 949 4 111.2 333.92 19.22 0.89 948 + 950 4 110.98 336.05 20.91 0.89 949 + 951 4 111.63 338 20.91 0.89 950 + 952 4 111.41 340.31 20.91 0.89 951 + 953 4 111.41 342.44 22.79 0.89 952 + 954 4 111.63 344.58 22.79 0.89 953 + 955 4 112.28 347.6 22.79 0.89 954 + 956 4 112.87 348.78 22.79 0.89 955 + 957 4 113.52 350.92 24.5 0.89 956 + 958 4 114.48 352.03 24.5 0.71 957 + 959 4 114.92 353.61 24.5 0.71 958 + 960 4 116 356.09 26.17 0.71 959 + 961 4 116.44 358.4 26.17 0.71 960 + 962 4 117.09 360 28.04 0.71 961 + 963 4 117.96 361.42 28.04 0.71 962 + 964 4 118.17 363.2 27.9 0.71 963 + 965 4 118.61 364.8 27.9 0.71 964 + 966 4 119.48 366.04 27.9 0.71 965 + 967 4 119.85 367.36 30.1 0.71 966 + 968 4 120.07 369.32 31.49 0.71 967 + 969 4 120.93 370.91 31.49 0.71 968 + 970 4 121.59 373.05 31.49 0.71 969 + 971 4 122.24 374.47 31.49 0.71 970 + 972 4 124.41 376.6 31.49 0.71 971 + 973 4 123.54 378.02 31.49 0.71 972 + 974 4 124.63 379.8 31.49 0.71 973 + 975 4 125.93 381.04 32.14 0.71 974 + 976 4 127.12 382.89 32.14 0.71 975 + 977 4 128.42 385.03 32.14 0.71 976 + 978 4 129.29 386.63 32.14 0.71 977 + 979 4 130.16 389.11 32.14 0.71 978 + 980 4 130.81 389.82 32.14 0.71 979 + 981 4 131.46 391.6 32.47 0.71 980 + 982 4 132.11 393.2 32.47 0.71 981 + 983 4 133.63 395.33 32.78 0.71 982 + 984 4 134.05 397.47 35.28 0.71 983 + 985 4 134.27 399.6 35.28 0.71 984 + 986 4 135.35 401.74 35.28 0.71 985 + 987 4 135.79 403.51 35.28 0.89 986 + 988 4 136.44 405.11 35.28 0.89 987 + 989 4 136.85 405.32 35.28 0.89 988 + 990 4 108.09 183.34 -16.39 1.065 866 + 991 4 108.52 185.47 -16.39 0.89 990 + 992 4 108.96 187.07 -17.9 0.89 991 + 993 4 109.39 188.13 -15.86 0.89 992 + 994 4 109.83 189.73 -18.03 0.89 993 + 995 4 110.04 191.15 -20.49 0.89 994 + 996 4 110.69 192.58 -21.47 0.89 995 + 997 4 111.56 193.29 -21.47 0.89 996 + 998 4 112.43 194.53 -22.15 0.89 997 + 999 4 113.08 195.6 -23.38 0.89 998 + 1000 4 113.74 196.66 -24.36 0.89 999 + 1001 4 113.74 198.08 -25.89 0.89 1000 + 1002 4 114.17 199.15 -27.94 0.89 1001 + 1003 4 114.6 200.75 -30.08 0.89 1002 + 1004 4 115.69 203.06 -30.08 0.89 1003 + 1005 4 115.64 204.31 -31.51 0.89 1004 + 1006 4 116.08 205.56 -31.51 0.89 1005 + 1007 4 116.73 206.98 -31.51 0.71 1006 + 1008 4 117.16 208.75 -31.51 0.71 1007 + 1009 4 117.6 210.53 -32.74 0.71 1008 + 1010 4 117.6 212.13 -32.74 0.71 1009 + 1011 4 117.6 214.62 -34.55 0.89 1010 + 1012 4 117.82 216.75 -34.55 0.89 1011 + 1013 4 118.03 218.7 -34.55 0.89 1012 + 1014 4 118.24 220.22 -33.58 0.89 1013 + 1015 4 118.03 223.6 -33.58 0.89 1014 + 1016 4 117.37 225.2 -34.98 0.89 1015 + 1017 4 117.16 226.97 -34.98 0.89 1016 + 1018 4 116.72 228.75 -34.98 0.89 1017 + 1019 4 116.51 230.17 -36.51 0.89 1018 + 1020 4 116.29 231.95 -36.51 0.89 1019 + 1021 4 116.29 233.72 -38.15 0.89 1020 + 1022 4 116.01 235.6 -38.15 0.89 1021 + 1023 4 116.01 237.38 -39.9 0.89 1022 + 1024 4 117.08 239.33 -39.9 0.89 1023 + 1025 4 117.73 241.11 -41.34 0.89 1024 + 1026 4 118.82 242.88 -41.34 0.89 1025 + 1027 4 119.9 244.66 -41.34 0.89 1026 + 1028 4 121.42 248.57 -41.34 0.71 1027 + 1029 4 122.73 249.89 -43.37 0.71 1028 + 1030 4 123.58 251.13 -43.37 0.71 1029 + 1031 4 124.67 252.73 -45.26 0.71 1030 + 1032 4 125.75 254.15 -45.26 0.71 1031 + 1033 4 126.84 255.93 -46.82 0.71 1032 + 1034 4 127.92 257.88 -46.82 0.71 1033 + 1035 4 128.58 259.48 -47.64 0.71 1034 + 1036 4 129.44 261.26 -48.99 0.71 1035 + 1037 4 130.53 262.86 -50.41 0.71 1036 + 1038 4 131.62 264.64 -50.32 0.71 1037 + 1039 4 133.14 266.59 -50.32 0.71 1038 + 1040 4 135.09 268.19 -50.32 0.71 1039 + 1041 4 136.39 270.32 -50.32 0.71 1040 + 1042 4 137.7 271.92 -50.32 0.71 1041 + 1043 4 139.22 273.52 -50.32 0.71 1042 + 1044 4 140.3 275.12 -49.5 0.71 1043 + 1045 4 141.61 277.07 -49.5 0.71 1044 + 1046 4 143.45 279.1 -49.5 0.71 1045 + 1047 4 144.32 280.88 -49.5 0.71 1046 + 1048 4 144.97 282.12 -49.77 0.71 1047 + 1049 4 146.06 284.08 -49.77 0.71 1048 + 1050 4 146.71 285.5 -49.77 0.71 1049 + 1051 4 147.36 287.45 -49.77 0.71 1050 + 1052 4 148.45 289.23 -49.77 0.71 1051 + 1053 4 149.31 291 -49.77 0.71 1052 + 1054 4 150.4 292.43 -49.77 0.71 1053 + 1055 4 151.49 293.65 -49.77 0.71 1054 + 1056 4 151.7 295.42 -51.57 0.71 1055 + 1057 4 152.57 297.38 -51.57 0.71 1056 + 1058 4 153.22 298.98 -51.57 0.71 1057 + 1059 4 153.87 300.93 -51.45 0.71 1058 + 1060 4 153.87 302.88 -51.45 0.71 1059 + 1061 4 154.09 305.02 -51.45 0.71 1060 + 1062 4 154.31 306.62 -51.45 0.71 1061 + 1063 4 154.67 308.27 -51.45 0.71 1062 + 1064 4 154.45 310.05 -53.14 0.71 1063 + 1065 4 155.1 312 -53.14 0.71 1064 + 1066 4 155.32 314.31 -53.14 0.71 1065 + 1067 4 155.32 316.09 -53.55 0.89 1066 + 1068 4 155.97 317.86 -53.55 0.89 1067 + 1069 4 155.75 320.17 -53.55 0.89 1068 + 1070 4 155.97 321.59 -52.72 0.89 1069 + 1071 4 155.82 324 -52.72 0.89 1070 + 1072 4 155.8 325.96 -55.36 0.89 1071 + 1073 4 155.58 327.38 -55.36 0.89 1072 + 1074 4 156.23 328.98 -55.14 0.89 1073 + 1075 4 156.23 331.29 -55.14 0.89 1074 + 1076 4 156.45 333.95 -55.14 0.89 1075 + 1077 4 157.1 336.08 -57.1 0.89 1076 + 1078 4 157.47 337.14 -59.1 0.89 1077 + 1079 4 157.9 338.2 -59.1 0.89 1078 + 1080 4 158.12 338.91 -59.1 1.065 1079 + 1081 4 157.6 341.05 -59.34 0.71 1080 + 1082 4 158.03 343.36 -59.34 0.71 1081 + 1083 4 158.03 344.42 -59.79 0.71 1082 + 1084 4 157.6 346.91 -59.79 0.71 1083 + 1085 4 157.38 348.15 -59.85 0.71 1084 + 1086 4 157.38 350.28 -61.52 0.71 1085 + 1087 4 157.17 352.77 -61.52 0.71 1086 + 1088 4 157.17 354.55 -61.52 0.71 1087 + 1089 4 157.23 357.49 -62.28 0.71 1088 + 1090 4 157.23 359.62 -62.28 0.71 1089 + 1091 4 157.23 362.11 -62.28 0.71 1090 + 1092 4 157.23 363.89 -64.82 0.71 1091 + 1093 4 157.45 366.02 -64.82 0.71 1092 + 1094 4 157.89 367.97 -64.82 0.71 1093 + 1095 4 158.54 369.57 -64.82 0.71 1094 + 1096 4 160.17 371.42 -64.82 0.71 1095 + 1097 4 160.82 373.2 -64.82 0.71 1096 + 1098 4 162.13 374.98 -66.88 0.71 1097 + 1099 4 162.56 376.22 -66.88 0.71 1098 + 1100 4 164.3 378.53 -68.36 0.71 1099 + 1101 4 165.17 380.31 -68.36 0.71 1100 + 1102 4 166.04 382.26 -70.17 0.71 1101 + 1103 4 167.12 384.57 -68.43 0.71 1102 + 1104 4 167.47 386.6 -71.03 0.71 1103 + 1105 4 168.34 388.73 -71.34 0.71 1104 + 1106 4 168.55 390.69 -73.47 0.71 1105 + 1107 4 168.55 392.29 -73.47 0.71 1106 + 1108 4 168.99 393.35 -73.47 0.71 1107 + 1109 4 168.4 394.54 -72.38 0.71 1108 + 1110 4 169.05 396.49 -72.38 0.71 1109 + 1111 4 169.27 398.27 -72.38 0.71 1110 + 1112 4 168.83 400.04 -72.38 0.71 1111 + 1113 4 168.4 401.46 -72.38 0.71 1112 + 1114 4 167.75 402.53 -72.38 0.71 1113 + 1115 4 167.53 403.95 -72.3 0.71 1114 + 1116 4 167.53 405.37 -71.58 0.71 1115 + 1117 4 167.31 408.04 -69.38 0.71 1116 + 1118 4 167.45 410.2 -69.38 0.71 1117 + 1119 4 166.8 411.62 -67.06 0.71 1118 + 1120 4 166.37 413.04 -67.06 0.71 1119 + 1121 4 166.37 415.53 -67.06 0.71 1120 + 1122 4 165.93 417.49 -67.06 0.71 1121 + 1123 4 165.28 419.08 -66.7 0.71 1122 + 1124 4 163.54 420.33 -66.7 0.71 1123 + 1125 4 162.02 421.57 -63.24 0.71 1124 + 1126 4 160.72 424.24 -63.24 0.71 1125 + 1127 4 159.77 425.71 -63.24 0.71 1126 + 1128 4 159.11 427.67 -62.42 0.71 1127 + 1129 4 158.25 429.27 -62.42 0.71 1128 + 1130 4 158.03 431.04 -62.42 0.71 1129 + 1131 4 157.38 432.46 -62.42 0.71 1130 + 1132 4 156.73 434.77 -62.42 0.71 1131 + 1133 4 155.64 436.55 -61.43 0.71 1132 + 1134 4 155.21 439.04 -61.93 0.71 1133 + 1135 4 153.71 441.2 -60.51 0.71 1134 + 1136 4 152.41 443.16 -60.51 0.71 1135 + 1137 4 151.54 445.29 -60.51 0.71 1136 + 1138 4 150.46 447.42 -60.97 0.71 1137 + 1139 4 148.94 449.91 -60.97 0.71 1138 + 1140 4 147.63 451.86 -59.15 0.71 1139 + 1141 4 146.98 453.97 -60.79 0.71 1140 + 1142 4 147.23 456 -60.79 0.71 1141 + 1143 4 146.15 458.49 -59.41 0.71 1142 + 1144 4 145.5 460.8 -59.41 0.71 1143 + 1145 4 144.85 462.75 -59.41 0.71 1144 + 1146 4 144.41 464.88 -59.41 0.71 1145 + 1147 4 143.76 467.37 -59.41 0.71 1146 + 1148 4 144.41 467.91 -59.41 0.71 1147 + 1149 4 143.33 471.1 -59.41 0.71 1148 + 1150 4 143.43 473.2 -59.26 0.71 1149 + 1151 4 143.22 475.51 -59.26 0.71 1150 + 1152 4 143.65 478 -59.26 0.71 1151 + 1153 4 143.43 480.13 -59.26 0.71 1152 + 1154 4 143.43 481.91 -59.26 0.71 1153 + 1155 4 144.3 483.86 -60.06 0.71 1154 + 1156 4 144.74 486.53 -60.06 0.71 1155 + 1157 4 146.14 488.42 -60.06 0.71 1156 + 1158 4 147.22 490.73 -60.06 0.71 1157 + 1159 4 148.53 492.33 -60.06 0.71 1158 + 1160 4 149.18 493.93 -60.06 0.71 1159 + 1161 4 148.96 496.42 -60.06 0.71 1160 + 1162 4 149.83 498.55 -60.06 0.71 1161 + 1163 4 151.13 501.04 -60.06 0.71 1162 + 1164 4 151.92 503.74 -60.06 0.71 1163 + 1165 4 153.01 505.69 -60.54 0.71 1164 + 1166 4 154.31 507.82 -60.54 0.71 1165 + 1167 4 154.96 510.66 -60.54 0.71 1166 + 1168 4 156.48 513.51 -60.54 0.71 1167 + 1169 4 158 515.82 -59.02 0.71 1168 + 1170 4 158.7 517.29 -61.86 0.71 1169 + 1171 4 160.01 519.25 -61.86 0.71 1170 + 1172 4 161.96 520.49 -61.86 0.71 1171 + 1173 4 163.92 521.91 -61.86 0.71 1172 + 1174 4 164.35 523.69 -61.86 0.71 1173 + 1175 4 165.65 524.93 -61.86 0.71 1174 + 1176 4 167.17 526.17 -61.86 0.71 1175 + 1177 4 169.34 527.06 -61.64 0.71 1176 + 1178 4 171.3 528.13 -61.64 0.71 1177 + 1179 4 172.17 529.73 -60.11 0.71 1178 + 1180 4 173.25 531.5 -59.06 0.71 1179 + 1181 4 175.41 532.91 -59.06 0.71 1180 + 1182 4 176.71 534.34 -59.06 0.71 1181 + 1183 4 178.23 536.29 -59.06 0.71 1182 + 1184 4 179.32 537.51 -59.06 0.71 1183 + 1185 4 181.92 539.29 -59.06 0.71 1184 + 1186 4 183.44 539.64 -59.06 0.71 1185 + 1187 4 185.18 540.71 -62.56 0.71 1186 + 1188 4 186.26 542.31 -62.56 0.71 1187 + 1189 4 188 543.91 -62.56 0.71 1188 + 1190 4 190.17 545.86 -62.56 0.71 1189 + 1191 4 192.01 547.82 -61.79 0.71 1190 + 1192 4 193.73 549.78 -63.96 0.71 1191 + 1193 4 195.68 551.2 -66.18 0.71 1192 + 1194 4 198.29 552.8 -66.18 0.71 1193 + 1195 4 199.59 553.86 -66.18 0.71 1194 + 1196 4 200.89 556 -66.18 0.71 1195 + 1197 4 202.85 557.6 -66.18 0.71 1196 + 1198 4 204.37 559.73 -66.18 0.71 1197 + 1199 4 205.89 562.57 -66.18 0.71 1198 + 1200 4 206.72 564.09 -67.75 0.71 1199 + 1201 4 208.01 566.05 -67.21 0.71 1200 + 1202 4 208.87 568.36 -69.38 0.71 1201 + 1203 4 209.96 570.49 -69.38 0.71 1202 + 1204 4 210.61 572.62 -69.38 0.71 1203 + 1205 4 211.7 574.04 -69.38 0.71 1204 + 1206 4 212.78 575.64 -69.38 0.71 1205 + 1207 4 214.3 576.88 -69.38 0.71 1206 + 1208 4 215.97 578.29 -69.38 0.71 1207 + 1209 4 170.51 394.6 -73.47 0.71 1108 + 1210 4 172.9 395.31 -73.47 0.71 1209 + 1211 4 174.42 397.26 -73.47 0.71 1210 + 1212 4 175.07 398.15 -74.9 0.71 1211 + 1213 4 176.16 399.57 -74.9 0.71 1212 + 1214 4 177.75 400.36 -74.9 0.71 1213 + 1215 4 177.97 401.6 -73.17 0.71 1214 + 1216 4 178.19 403.02 -75.59 0.71 1215 + 1217 4 178.41 404.27 -75.59 0.71 1216 + 1218 4 179.27 406.04 -75.34 0.71 1217 + 1219 4 178.84 408.18 -75.34 0.71 1218 + 1220 4 178.84 410.13 -77.88 0.71 1219 + 1221 4 179.27 412.08 -77.88 0.71 1220 + 1222 4 179.49 413.86 -77.88 0.71 1221 + 1223 4 180.3 416.54 -77.88 0.71 1222 + 1224 4 180.3 418.49 -77.88 0.71 1223 + 1225 4 180.52 420.27 -78.7 0.71 1224 + 1226 4 180.74 422.4 -78.7 0.71 1225 + 1227 4 180.52 424.35 -78.7 0.71 1226 + 1228 4 179.65 426.84 -78.7 0.71 1227 + 1229 4 180.09 429.15 -80.71 0.71 1228 + 1230 4 179.82 430.67 -80.71 0.71 1229 + 1231 4 179.6 432.8 -80.71 0.71 1230 + 1232 4 179.6 435.11 -79.88 0.71 1231 + 1233 4 179.38 437.24 -79.88 0.71 1232 + 1234 4 179.82 438.84 -79.88 0.71 1233 + 1235 4 180.25 440.44 -79.88 0.71 1234 + 1236 4 180.25 441.68 -81.52 0.71 1235 + 1237 4 180.69 442.93 -83.26 0.71 1236 + 1238 4 181.99 444.35 -83.26 0.71 1237 + 1239 4 183.55 445.71 -82.04 0.71 1238 + 1240 4 185.29 447.49 -82.04 0.71 1239 + 1241 4 186.59 449.09 -81.54 0.71 1240 + 1242 4 187.46 450.69 -81.54 0.71 1241 + 1243 4 188.98 452.11 -83.78 0.71 1242 + 1244 4 190.29 453.89 -85.06 0.71 1243 + 1245 4 191.81 455.66 -83.98 0.71 1244 + 1246 4 193.33 457.44 -83.98 0.71 1245 + 1247 4 193.98 458.86 -83.98 0.71 1246 + 1248 4 194.9 461 -84.02 0.71 1247 + 1249 4 195.77 463.31 -84.02 0.71 1248 + 1250 4 197.29 464.56 -87.18 0.71 1249 + 1251 4 198.81 466.69 -87.18 0.71 1250 + 1252 4 200.33 468.64 -87.18 0.71 1251 + 1253 4 201.42 470.42 -88.28 0.71 1252 + 1254 4 201.85 471.66 -87.12 0.71 1253 + 1255 4 202.94 473.97 -85.42 0.71 1254 + 1256 4 204.79 476.71 -85.42 0.71 1255 + 1257 4 205.64 478.31 -85.42 0.71 1256 + 1258 4 206.94 480.8 -85.42 0.71 1257 + 1259 4 208.25 483.29 -85.42 0.71 1258 + 1260 4 209.55 485.06 -83.62 0.71 1259 + 1261 4 210.85 487.37 -83.62 0.71 1260 + 1262 4 213.02 489.5 -83.62 0.71 1261 + 1263 4 213.7 491.96 -83.62 0.71 1262 + 1264 4 214.77 493.73 -85.06 0.71 1263 + 1265 4 216.07 496.4 -87.32 0.71 1264 + 1266 4 217.81 498.35 -88.84 0.71 1265 + 1267 4 219.55 500.48 -88.84 0.71 1266 + 1268 4 220.2 502.44 -88.84 0.71 1267 + 1269 4 221.29 504.04 -88.84 0.71 1268 + 1270 4 222.75 505.71 -88.84 0.71 1269 + 1271 4 224.06 507.67 -88.84 0.71 1270 + 1272 4 225.36 509.07 -88.84 0.71 1271 + 1273 4 226.23 510.13 -88.84 0.71 1272 + 1274 4 226.88 511.91 -88.84 0.71 1273 + 1275 4 227.97 514.22 -90.92 0.71 1274 + 1276 4 228.18 516 -90.92 0.71 1275 + 1277 4 229.27 517.42 -89.16 0.71 1276 + 1278 4 230.14 519.02 -89.16 0.71 1277 + 1279 4 232.01 520.67 -89.16 0.71 1278 + 1280 4 233.53 522.25 -89.16 0.71 1279 + 1281 4 234.61 524.38 -89.16 0.71 1280 + 1282 4 236.35 525.8 -89.16 0.71 1281 + 1283 4 237.22 527.04 -89.16 0.71 1282 + 1284 4 238.3 528.64 -90.46 0.71 1283 + 1285 4 240.04 530.06 -90.46 0.71 1284 + 1286 4 240.69 531.84 -89.98 0.71 1285 + 1287 4 241.56 534.15 -89.98 0.71 1286 + 1288 4 242.72 535.67 -89.98 0.71 1287 + 1289 4 243.81 537.27 -89.98 0.71 1288 + 1290 4 245.33 538.16 -89.54 0.71 1289 + 1291 4 246.41 539.58 -89.54 0.71 1290 + 1292 4 247.93 541 -89.54 0.71 1291 + 1293 4 249.45 542.42 -89.54 0.71 1292 + 1294 4 250.76 543.49 -89.54 0.71 1293 + 1295 4 252.71 544.37 -86.81 0.71 1294 + 1296 4 254.23 544.91 -85.04 0.71 1295 + 1297 4 255.53 545.62 -86.74 0.71 1296 + 1298 4 257.49 546.51 -86.26 0.71 1297 + 1299 4 258.57 546.51 -86.66 0.71 1298 + 1300 4 260.31 547.22 -85.52 0.71 1299 + 1301 4 261.75 548.34 -85.52 0.71 1300 + 1302 4 262.84 548.69 -85.52 0.71 1301 + 1303 4 158.99 339.8 -60.21 0.71 1080 + 1304 4 160.51 341.04 -60.21 0.71 1303 + 1305 4 162.45 342.11 -62.85 0.71 1304 + 1306 4 164.18 343.71 -62.85 0.71 1305 + 1307 4 165.27 343.71 -63.99 0.71 1306 + 1308 4 167.01 344.06 -66.1 0.71 1307 + 1309 4 168.74 345.84 -68.3 0.71 1308 + 1310 4 170.26 346.91 -70.45 0.71 1309 + 1311 4 172.22 348.51 -70.45 0.71 1310 + 1312 4 174.39 350.11 -71.54 0.71 1311 + 1313 4 176.13 351.53 -73.3 0.71 1312 + 1314 4 178.41 353.42 -76.18 0.71 1313 + 1315 4 180.36 355.2 -77.5 0.71 1314 + 1316 4 182.1 356.44 -78.82 0.71 1315 + 1317 4 183.18 357.33 -77.79 0.71 1316 + 1318 4 184.92 359.29 -79.28 0.71 1317 + 1319 4 187.09 361.06 -81.11 0.71 1318 + 1320 4 188.83 363.02 -82.41 0.71 1319 + 1321 4 190.78 364.97 -83.39 0.71 1320 + 1322 4 191.44 365.68 -84.27 0.71 1321 + 1323 4 192.32 366.58 -82.58 0.71 1322 + 1324 4 194.04 367.29 -82.58 0.71 1323 + 1325 4 195.78 368.54 -82.58 0.71 1324 + 1326 4 197.73 370.84 -82.58 0.71 1325 + 1327 4 199.69 372.62 -81.69 0.71 1326 + 1328 4 200.56 373.86 -81.69 0.71 1327 + 1329 4 202.08 374.22 -81.69 0.71 1328 + 1330 4 203.6 375.82 -81.69 0.71 1329 + 1331 4 205.33 377.24 -84.2 0.71 1330 + 1332 4 206.85 379.37 -84.2 0.71 1331 + 1333 4 209.24 380.62 -82.27 0.71 1332 + 1334 4 210.99 381.38 -82.27 0.71 1333 + 1335 4 212.29 382.45 -83.34 0.71 1334 + 1336 4 214.03 383.51 -83.34 0.71 1335 + 1337 4 215.77 384.76 -83.34 0.71 1336 + 1338 4 217.29 384.93 -83.34 0.71 1337 + 1339 4 218.59 385.64 -83.34 0.71 1338 + 1340 4 220.11 385.82 -83.34 0.71 1339 + 1341 4 221.63 386.71 -83.34 0.71 1340 + 1342 4 223.15 387.6 -83.34 0.71 1341 + 1343 4 225.1 388.13 -83.34 0.71 1342 + 1344 4 227.28 389.2 -84.61 0.71 1343 + 1345 4 229.86 389.27 -84.61 0.71 1344 + 1346 4 231.81 389.8 -83.78 0.71 1345 + 1347 4 235.5 391.05 -85.85 0.71 1346 + 1348 4 236.37 392.65 -85.85 0.71 1347 + 1349 4 238.11 394.42 -87.34 0.71 1348 + 1350 4 240.28 395.84 -89.05 0.71 1349 + 1351 4 242.45 397.44 -89.05 0.71 1350 + 1352 4 243.1 399.4 -89.05 0.71 1351 + 1353 4 244.63 400.82 -91.1 0.71 1352 + 1354 4 246.36 402.42 -92.89 0.71 1353 + 1355 4 248.62 404.09 -92.35 0.71 1354 + 1356 4 251.01 405.87 -92.35 0.71 1355 + 1357 4 252.53 407.47 -92.35 0.71 1356 + 1358 4 254.05 408.71 -94.54 0.71 1357 + 1359 4 255.57 410.13 -94.65 0.71 1358 + 1360 4 259.26 412.09 -97.34 0.71 1359 + 1361 4 259.92 413.86 -97.34 0.71 1360 + 1362 4 261.65 415.64 -97.34 0.71 1361 + 1363 4 262.3 416.35 -97.92 0.71 1362 + 1364 4 262.74 417.77 -98.9 0.71 1363 + 1365 4 264.37 418.74 -98.9 0.71 1364 + 1366 4 266.11 419.98 -98.9 0.71 1365 + 1367 4 268.26 421.22 -97.77 0.71 1366 + 1368 4 270.44 422.82 -97.77 0.71 1367 + 1369 4 272.39 424.95 -97.58 0.71 1368 + 1370 4 274.13 425.84 -97.58 0.71 1369 + 1371 4 275.21 427.44 -97.58 0.71 1370 + 1372 4 276.08 429.22 -97.58 0.71 1371 + 1373 4 276.73 429.93 -97.58 0.71 1372 + 1374 4 278.69 432.24 -99.62 0.71 1373 + 1375 4 279.72 434.22 -96.31 0.71 1374 + 1376 4 281.02 435.82 -96.31 0.71 1375 + 1377 4 282.33 437.6 -96.31 0.71 1376 + 1378 4 283.85 439.02 -96.31 0.71 1377 + 1379 4 285.37 440.09 -96.31 0.71 1378 + 1380 4 287.1 441.15 -96.31 0.71 1379 + 1381 4 287.97 443.11 -96.31 0.71 1380 + 1382 4 289.28 445.06 -96.31 0.71 1381 + 1383 4 291.66 447.55 -95.6 0.71 1382 + 1384 4 291.42 449.07 -95.6 0.71 1383 + 1385 4 292.07 451.38 -94.46 0.71 1384 + 1386 4 292.94 453.16 -94.46 0.71 1385 + 1387 4 293.59 455.11 -93.38 0.71 1386 + 1388 4 294.89 457.42 -93.38 0.71 1387 + 1389 4 296.19 459.73 -95.56 0.71 1388 + 1390 4 299.45 461.86 -95.56 0.71 1389 + 1391 4 299.87 464.02 -95.56 0.71 1390 + 1392 4 300.09 465.45 -93.33 0.71 1391 + 1393 4 300.09 467.04 -93.33 0.71 1392 + 1394 4 299.87 468.64 -93.33 0.71 1393 + 1395 4 300.3 470.78 -92.41 0.71 1394 + 1396 4 300.52 473.26 -92.41 0.71 1395 + 1397 4 300.95 475.04 -90.96 0.71 1396 + 1398 4 300.52 477.17 -92.18 0.71 1397 + 1399 4 301.07 479.2 -92.18 0.71 1398 + 1400 4 301.94 481.33 -89.05 0.71 1399 + 1401 4 303.46 483.47 -89.05 0.71 1400 + 1402 4 305.19 485.42 -87.02 0.71 1401 + 1403 4 307.58 488.08 -87.02 0.71 1402 + 1404 4 309.1 490.04 -87.33 0.71 1403 + 1405 4 310.41 491.99 -87.33 0.71 1404 + 1406 4 312.41 493.87 -85.52 0.71 1405 + 1407 4 313.71 496 -82.5 0.71 1406 + 1408 4 315.45 497.24 -82.5 0.71 1407 + 1409 4 317.18 498.67 -80.96 0.71 1408 + 1410 4 319.36 499.91 -78.21 0.71 1409 + 1411 4 320.52 500.76 -78.21 0.71 1410 + 1412 4 321.17 501.65 -78.21 0.71 1411 + 1413 4 321.61 502.71 -78.21 0.71 1412 + 1414 4 321.82 504.13 -78.21 0.71 1413 + 1415 4 322.04 505.2 -78.21 0.71 1414 + 1416 4 193.82 366.2 -86.77 0.71 1322 + 1417 4 195.13 367.62 -89.76 0.71 1416 + 1418 4 196.65 368.51 -92.06 0.71 1417 + 1419 4 198.38 369.58 -93.94 0.71 1418 + 1420 4 200.56 370.64 -95.34 0.71 1419 + 1421 4 202.29 371.71 -95.34 0.71 1420 + 1422 4 203.81 372.24 -97.05 0.71 1421 + 1423 4 205.77 371.71 -99.43 0.71 1422 + 1424 4 207.72 371 -100.82 0.71 1423 + 1425 4 210.76 371 -102.69 0.71 1424 + 1426 4 213.24 370.38 -104.76 0.71 1425 + 1427 4 215.63 369.67 -104.76 0.71 1426 + 1428 4 217.8 370.2 -104.76 0.71 1427 + 1429 4 219.1 370.38 -106.96 0.71 1428 + 1430 4 221.49 370.92 -109.06 0.71 1429 + 1431 4 223.37 371.25 -109.06 0.71 1430 + 1432 4 104.68 159.61 -14.07 1.065 851 + 1433 4 106.64 160.68 -14.07 1.065 1432 + 1434 4 108.16 161.75 -16.66 1.065 1433 + 1435 4 109.68 162.46 -15.8 1.065 1434 + 1436 4 111.41 163.35 -15.85 0.89 1435 + 1437 4 112.93 164.06 -15.85 0.89 1436 + 1438 4 114.67 164.77 -15.85 0.89 1437 + 1439 4 116.19 165.65 -17.62 0.89 1438 + 1440 4 117.71 166.9 -18.6 0.89 1439 + 1441 4 119.45 168.32 -18.6 0.89 1440 + 1442 4 121.84 169.74 -20.68 0.89 1441 + 1443 4 122.85 170.59 -19.88 1.065 1442 + 1444 4 123.65 171.72 -23.29 1.065 1443 + 1445 4 124.52 172.79 -22.74 0.89 1444 + 1446 4 125.17 174.21 -25.44 0.71 1445 + 1447 4 126.04 175.45 -25.16 0.71 1446 + 1448 4 126.91 177.76 -28.48 0.71 1447 + 1449 4 128.21 179.72 -28.48 0.71 1448 + 1450 4 129.29 181.67 -30.55 0.71 1449 + 1451 4 130.38 183.63 -33.03 0.71 1450 + 1452 4 132.55 186.82 -35.06 0.71 1451 + 1453 4 131.96 189.37 -36.48 0.71 1452 + 1454 4 132.38 191.5 -36.71 0.71 1453 + 1455 4 132.81 193.63 -40.1 0.71 1454 + 1456 4 132.81 195.76 -40.1 0.71 1455 + 1457 4 133.68 197.54 -40.1 0.71 1456 + 1458 4 133.68 200.2 -41.74 0.71 1457 + 1459 4 133.9 203.05 -41.74 0.71 1458 + 1460 4 133.8 205.94 -42.17 0.71 1459 + 1461 4 134.65 208.25 -44.11 0.71 1460 + 1462 4 134.21 209.85 -44.11 0.71 1461 + 1463 4 134.43 212.16 -46.74 0.71 1462 + 1464 4 134.87 214.83 -48.19 0.71 1463 + 1465 4 134.65 217.14 -48.19 0.71 1464 + 1466 4 136.17 219.62 -50 0.71 1465 + 1467 4 137.5 221.61 -52.58 0.71 1466 + 1468 4 139.24 223.39 -52.18 0.71 1467 + 1469 4 140.76 225.34 -53.82 0.71 1468 + 1470 4 142.71 226.94 -53.82 0.71 1469 + 1471 4 143.8 229.07 -55.17 0.71 1470 + 1472 4 144.88 231.03 -56.26 0.71 1471 + 1473 4 145.97 233.34 -58 0.71 1472 + 1474 4 146.84 235.47 -59.86 0.71 1473 + 1475 4 147.25 237.08 -59.86 0.71 1474 + 1476 4 148.33 239.03 -57.89 0.71 1475 + 1477 4 149.4 240.45 -59.65 0.71 1476 + 1478 4 150.71 241.87 -62.14 0.71 1477 + 1479 4 152.01 244.18 -62.14 0.71 1478 + 1480 4 152.88 245.61 -64 0.71 1479 + 1481 4 153.96 247.56 -66.18 0.71 1480 + 1482 4 155.27 248.98 -66.18 0.71 1481 + 1483 4 156.79 250.4 -67.97 0.71 1482 + 1484 4 158.1 253.68 -67.97 0.71 1483 + 1485 4 158.32 255.63 -69.63 0.71 1484 + 1486 4 159.19 257.41 -69.63 0.71 1485 + 1487 4 160.71 259.54 -71.56 0.71 1486 + 1488 4 161.14 261.67 -73.5 0.71 1487 + 1489 4 162.23 262.91 -73.5 0.71 1488 + 1490 4 163.53 263.8 -75.31 0.71 1489 + 1491 4 163.96 265.76 -77.27 0.71 1490 + 1492 4 164.63 267.63 -77.26 0.71 1491 + 1493 4 165.72 268.88 -79.4 0.71 1492 + 1494 4 166.37 271.01 -81.16 0.71 1493 + 1495 4 168.11 273.14 -82.99 0.71 1494 + 1496 4 169.84 275.45 -85.39 0.71 1495 + 1497 4 171.15 277.05 -88.18 0.71 1496 + 1498 4 172.23 279.54 -89.27 0.71 1497 + 1499 4 174.4 280.96 -92.58 0.71 1498 + 1500 4 176.59 281.59 -92.58 0.71 1499 + 1501 4 178.09 283.19 -95.35 0.71 1500 + 1502 4 179.83 283.9 -95.35 0.71 1501 + 1503 4 182.22 286.21 -97.55 0.71 1502 + 1504 4 183.95 287.99 -99.36 0.71 1503 + 1505 4 185.04 289.76 -101.12 0.71 1504 + 1506 4 186.12 291.89 -102.69 0.71 1505 + 1507 4 186.34 294.2 -102.69 0.71 1506 + 1508 4 187.86 295.8 -104.69 0.71 1507 + 1509 4 189.53 297.66 -106.06 0.71 1508 + 1510 4 191.27 299.61 -106.06 0.71 1509 + 1511 4 193.01 301.39 -109.05 0.71 1510 + 1512 4 194.09 302.63 -109.05 0.71 1511 + 1513 4 195.83 303.52 -110.88 0.71 1512 + 1514 4 196.48 305.29 -112.76 0.71 1513 + 1515 4 197.79 306.54 -114.91 0.71 1514 + 1516 4 198.22 308.49 -116.84 0.71 1515 + 1517 4 198.87 310.62 -118.38 0.71 1516 + 1518 4 200.3 312.46 -120.46 0.71 1517 + 1519 4 200.95 314.94 -123.82 0.71 1518 + 1520 4 202.25 317.25 -125.7 0.71 1519 + 1521 4 203.99 319.03 -125.7 0.71 1520 + 1522 4 204.86 320.45 -127.08 0.71 1521 + 1523 4 206.16 323.11 -127.08 0.71 1522 + 1524 4 206.82 325.07 -131.26 0.71 1523 + 1525 4 207.23 327.06 -131.26 0.71 1524 + 1526 4 208.1 328.12 -133.51 0.71 1525 + 1527 4 209.19 329.9 -136.01 0.71 1526 + 1528 4 209.84 331.85 -137.86 0.71 1527 + 1529 4 210.49 333.45 -140.03 0.71 1528 + 1530 4 210.92 335.58 -142.07 0.71 1529 + 1531 4 211.14 337 -144.91 0.71 1530 + 1532 4 211.79 338.6 -146.06 0.71 1531 + 1533 4 212.88 340.56 -146.84 0.71 1532 + 1534 4 214.53 342.08 -146.84 0.71 1533 + 1535 4 215.4 344.39 -148.82 0.71 1534 + 1536 4 217.14 346.52 -150.9 0.71 1535 + 1537 4 218.01 348.3 -153.4 0.71 1536 + 1538 4 218.66 350.43 -154.82 0.71 1537 + 1539 4 219.96 352.2 -154.82 0.71 1538 + 1540 4 221.27 353.98 -156.14 0.71 1539 + 1541 4 222.79 355.4 -158.7 0.71 1540 + 1542 4 223.87 356.72 -158.7 0.71 1541 + 1543 4 225.17 358.14 -161.48 0.71 1542 + 1544 4 226.69 359.21 -163.85 0.71 1543 + 1545 4 228.21 361.16 -163.85 0.71 1544 + 1546 4 228.64 361.52 -166.42 0.71 1545 + 1547 4 230.16 362.94 -166.42 0.71 1546 + 1548 4 231.47 365.07 -166.42 0.71 1547 + 1549 4 232.77 367.56 -166.42 0.71 1548 + 1550 4 234.29 368.63 -168.77 0.71 1549 + 1551 4 235.38 370.22 -170.48 0.71 1550 + 1552 4 236.68 372.06 -173.12 0.71 1551 + 1553 4 237.99 374.19 -171.79 0.71 1552 + 1554 4 239.51 376.32 -171.79 0.71 1553 + 1555 4 240.59 377.92 -174.18 0.71 1554 + 1556 4 242.11 379.87 -176.73 0.71 1555 + 1557 4 243.85 381.47 -176.73 0.71 1556 + 1558 4 245.59 383.07 -178.46 0.71 1557 + 1559 4 247.32 384.85 -177.55 0.71 1558 + 1560 4 249.12 386.86 -179.96 0.71 1559 + 1561 4 250.2 388.45 -179.96 0.71 1560 + 1562 4 252.16 389.88 -179.96 0.71 1561 + 1563 4 253.03 391.3 -182.7 0.71 1562 + 1564 4 254.55 392.72 -182.7 0.71 1563 + 1565 4 255.85 394.49 -182.7 0.71 1564 + 1566 4 256.28 396.27 -182.7 0.71 1565 + 1567 4 256.85 397.88 -182.7 0.71 1566 + 1568 4 257.28 398.59 -185.53 0.71 1567 + 1569 4 257.5 400.54 -187.73 0.71 1568 + 1570 4 257.5 402.5 -189.17 0.71 1569 + 1571 4 256.85 404.45 -190.48 0.71 1570 + 1572 4 256.63 406.58 -190.48 0.71 1571 + 1573 4 256.41 408.18 -189 0.71 1572 + 1574 4 256.41 409.96 -191.3 0.71 1573 + 1575 4 257.72 411.38 -191.3 0.71 1574 + 1576 4 258 413.97 -191.3 0.71 1575 + 1577 4 258.21 416.25 -192.57 0.71 1576 + 1578 4 258 418.92 -192.57 0.71 1577 + 1579 4 258.65 420.69 -195.35 0.71 1578 + 1580 4 258.87 422.65 -195.35 0.71 1579 + 1581 4 259.73 425.31 -195.42 0.71 1580 + 1582 4 260.17 427.8 -195.42 0.71 1581 + 1583 4 260.85 429.1 -197.68 0.71 1582 + 1584 4 261.07 431.94 -197.68 0.71 1583 + 1585 4 261.65 433.83 -197.68 0.71 1584 + 1586 4 261.65 436.5 -197.68 0.71 1585 + 1587 4 261.87 438.1 -197.91 0.71 1586 + 1588 4 262.08 440.41 -199.85 0.71 1587 + 1589 4 261.87 443.07 -197.82 0.71 1588 + 1590 4 261.87 444.85 -200.63 0.71 1589 + 1591 4 262.08 446.98 -200.63 0.71 1590 + 1592 4 262.65 449.54 -200.63 0.71 1591 + 1593 4 263.25 451.43 -200.63 0.71 1592 + 1594 4 263.9 453.57 -198.22 0.71 1593 + 1595 4 264.33 455.7 -198.22 0.71 1594 + 1596 4 265.27 457.63 -198.22 0.71 1595 + 1597 4 265.7 459.59 -198.22 0.71 1596 + 1598 4 265.92 460.65 -198.22 0.71 1597 + 1599 4 266.57 462.61 -198.22 0.71 1598 + 1600 4 265.92 464.38 -198.22 0.71 1599 + 1601 4 265.48 465.63 -198.22 0.71 1600 + 1602 4 124.37 171.12 -19.88 1.065 1443 + 1603 4 126.11 171.66 -22.04 0.89 1602 + 1604 4 127.84 172.9 -22.04 0.71 1603 + 1605 4 129.15 173.97 -20.95 0.71 1604 + 1606 4 131.1 174.86 -23.14 0.71 1605 + 1607 4 133.49 176.1 -23.14 0.71 1606 + 1608 4 135.66 177.52 -25.39 0.71 1607 + 1609 4 137.18 179.3 -25.39 0.71 1608 + 1610 4 139.14 181.07 -26.37 0.71 1609 + 1611 4 141.31 182.32 -27.28 0.71 1610 + 1612 4 142.86 183.55 -26.5 0.71 1611 + 1613 4 144.38 184.61 -27.97 0.71 1612 + 1614 4 146.12 186.57 -30.14 0.71 1613 + 1615 4 148.08 187.81 -30.14 0.71 1614 + 1616 4 149.16 189.23 -32.23 0.71 1615 + 1617 4 150.25 191.36 -35.3 0.71 1616 + 1618 4 151.12 193.14 -35.3 0.71 1617 + 1619 4 152.85 195.45 -38.03 0.71 1618 + 1620 4 154.16 197.76 -39.54 0.71 1619 + 1621 4 155.43 199.66 -39.54 0.71 1620 + 1622 4 156.52 201.43 -41.39 0.71 1621 + 1623 4 157.6 203.39 -43.26 0.71 1622 + 1624 4 159.34 204.99 -43.26 0.71 1623 + 1625 4 160.64 207.12 -45.29 0.71 1624 + 1626 4 161.95 209.25 -45.29 0.71 1625 + 1627 4 163.25 210.49 -46.8 0.71 1626 + 1628 4 164.33 212.09 -46.8 0.71 1627 + 1629 4 164.98 213.52 -49.34 0.71 1628 + 1630 4 166.72 216.01 -50.76 0.71 1629 + 1631 4 168.67 219.21 -53.36 0.71 1630 + 1632 4 170.84 222.05 -55.05 0.71 1631 + 1633 4 172.58 224.18 -55.05 0.71 1632 + 1634 4 174.1 225.78 -56.75 0.71 1633 + 1635 4 175.62 227.91 -57.33 0.71 1634 + 1636 4 176.2 229.68 -57.33 0.71 1635 + 1637 4 176.41 231.1 -55.85 0.71 1636 + 1638 4 177.5 233.59 -55.85 0.71 1637 + 1639 4 178.8 235.37 -57.51 0.71 1638 + 1640 4 180.54 237.32 -59.19 0.71 1639 + 1641 4 181.84 239.1 -59.19 0.71 1640 + 1642 4 184.01 241.23 -59.39 0.71 1641 + 1643 4 185.32 243 -61.45 0.71 1642 + 1644 4 186.85 244.17 -60.1 0.71 1643 + 1645 4 188.58 245.59 -60.1 0.71 1644 + 1646 4 190.54 247.55 -60.1 0.71 1645 + 1647 4 191.84 248.97 -58.18 0.71 1646 + 1648 4 193.8 250.21 -59.54 0.71 1647 + 1649 4 194.67 251.99 -59.62 0.71 1648 + 1650 4 196.4 252.87 -60.71 0.71 1649 + 1651 4 197.71 253.94 -62.62 0.71 1650 + 1652 4 199.44 254.65 -64.31 0.71 1651 + 1653 4 200.96 255.54 -64.31 0.71 1652 + 1654 4 203.14 256.61 -66.01 0.71 1653 + 1655 4 205.31 258.38 -66.01 0.71 1654 + 1656 4 207.06 259.37 -66.01 0.71 1655 + 1657 4 208.37 260.61 -67.36 0.71 1656 + 1658 4 210.32 261.15 -67.36 0.71 1657 + 1659 4 212.28 262.03 -66.45 0.71 1658 + 1660 4 213.8 262.39 -66.45 0.71 1659 + 1661 4 215.32 263.46 -68.96 0.71 1660 + 1662 4 217.71 264.52 -68.96 0.71 1661 + 1663 4 220.53 266.3 -68.96 0.71 1662 + 1664 4 222.7 267.72 -71.01 0.71 1663 + 1665 4 224.66 268.96 -71.01 0.71 1664 + 1666 4 226.18 270.03 -71.01 0.71 1665 + 1667 4 228.13 271.98 -72.57 0.71 1666 + 1668 4 229.43 273.94 -74.75 0.71 1667 + 1669 4 231.17 276.25 -74.75 0.71 1668 + 1670 4 231.65 278.23 -74.16 0.71 1669 + 1671 4 232.52 280.72 -75.14 0.71 1670 + 1672 4 233.82 282.85 -78.13 0.71 1671 + 1673 4 235.12 284.63 -75.94 0.71 1672 + 1674 4 236.43 286.76 -75.94 0.71 1673 + 1675 4 237.95 288.71 -75.94 0.71 1674 + 1676 4 239.68 291.56 -78.56 0.71 1675 + 1677 4 240.9 294.7 -78.56 0.71 1676 + 1678 4 241.75 297.34 -78.34 0.71 1677 + 1679 4 243.05 299.47 -80.03 0.71 1678 + 1680 4 243.49 301.07 -80.82 0.71 1679 + 1681 4 244.79 303.03 -80.82 0.71 1680 + 1682 4 246.09 304.09 -80.82 0.71 1681 + 1683 4 248.05 305.51 -80.82 0.71 1682 + 1684 4 248.92 307.29 -80.26 0.71 1683 + 1685 4 249.01 308.88 -82.98 0.71 1684 + 1686 4 250.97 311.37 -82.98 0.71 1685 + 1687 4 251.62 313.32 -82.98 0.71 1686 + 1688 4 252.71 314.74 -84.96 0.71 1687 + 1689 4 253.14 316.52 -84.38 0.71 1688 + 1690 4 253.57 318.65 -86.87 0.71 1689 + 1691 4 253.57 320.6 -88.82 0.71 1690 + 1692 4 253.79 322.2 -86.19 0.71 1691 + 1693 4 253.8 324.59 -86.19 0.71 1692 + 1694 4 254.01 325.83 -88.11 0.71 1693 + 1695 4 254.23 329.03 -88.11 0.71 1694 + 1696 4 255.1 330.27 -89.68 0.71 1695 + 1697 4 255.75 332.41 -90.22 0.71 1696 + 1698 4 256.19 334.54 -90.22 0.71 1697 + 1699 4 256.84 336.67 -90.22 0.71 1698 + 1700 4 257.67 338.99 -90.22 0.71 1699 + 1701 4 257.88 341.12 -90.22 0.71 1700 + 1702 4 258.1 343.07 -91.56 0.71 1701 + 1703 4 259.19 345.74 -91.56 0.71 1702 + 1704 4 258.97 348.05 -92.98 0.71 1703 + 1705 4 259.4 350.89 -92.43 0.71 1704 + 1706 4 259.61 353.19 -92.43 0.71 1705 + 1707 4 260.03 355.85 -92.43 0.71 1706 + 1708 4 259.81 357.99 -92.43 0.71 1707 + 1709 4 261.12 359.58 -94.19 0.71 1708 + 1710 4 261.77 361.54 -93.5 0.71 1709 + 1711 4 263.07 364.74 -93.5 0.71 1710 + 1712 4 264.16 367.05 -96.28 0.71 1711 + 1713 4 265.5 368.68 -94.7 0.71 1712 + 1714 4 266.15 370.1 -96.42 0.71 1713 + 1715 4 267.02 372.23 -96.42 0.71 1714 + 1716 4 268.32 374.36 -96.42 0.71 1715 + 1717 4 269.63 377.74 -99.59 0.71 1716 + 1718 4 269.84 379.69 -99.59 0.71 1717 + 1719 4 269.63 381.47 -99.49 0.71 1718 + 1720 4 269.83 383.43 -99.49 0.71 1719 + 1721 4 269.83 385.92 -99.49 0.71 1720 + 1722 4 270.48 388.41 -99.49 0.71 1721 + 1723 4 270.92 390.36 -99.49 0.71 1722 + 1724 4 270.78 392.23 -99.49 0.71 1723 + 1725 4 271.21 395.08 -99.49 0.71 1724 + 1726 4 272.3 397.21 -100.18 0.71 1725 + 1727 4 274.04 399.52 -100.18 0.71 1726 + 1728 4 274.69 400.76 -96.18 0.71 1727 + 1729 4 275.12 403.07 -96.18 0.71 1728 + 1730 4 275.99 405.2 -96.18 0.71 1729 + 1731 4 278.15 407.77 -96.18 0.71 1730 + 1732 4 279.67 409.72 -96.18 0.71 1731 + 1733 4 281.19 411.5 -96.18 0.71 1732 + 1734 4 281.84 413.98 -96.18 0.71 1733 + 1735 4 283.15 415.94 -96.18 0.71 1734 + 1736 4 283.8 418.25 -96.18 0.71 1735 + 1737 4 284.88 419.67 -93.06 0.71 1736 + 1738 4 285.25 421.99 -93.06 0.71 1737 + 1739 4 286.12 424.65 -93.06 0.71 1738 + 1740 4 287.2 426.41 -93.06 0.71 1739 + 1741 4 287.87 427.72 -93.06 0.71 1740 + 1742 4 98.15 132.37 -11.6 1.6 833 + 1743 4 99.89 133.61 -11.6 1.6 1742 + 1744 4 101.63 135.03 -10.04 1.42 1743 + 1745 4 102.89 136.4 -10.04 1.42 1744 + 1746 4 104.84 137.29 -10.04 1.245 1745 + 1747 4 107.01 137.29 -10.04 1.245 1746 + 1748 4 108.32 138.35 -10.04 1.245 1747 + 1749 4 110.7 139.24 -8.42 1.245 1748 + 1750 4 113.09 140.31 -8.42 1.245 1749 + 1751 4 114.4 141.55 -8.42 1.245 1750 + 1752 4 115.92 143.5 -8.42 1.245 1751 + 1753 4 117.44 144.93 -8.42 1.245 1752 + 1754 4 119.17 146.7 -8.42 1.245 1753 + 1755 4 120.91 147.41 -10.38 1.245 1754 + 1756 4 124.01 149.35 -10.38 1.245 1755 + 1757 4 125.09 150.42 -10.38 1.245 1756 + 1758 4 127.03 151.49 -10.38 1.245 1757 + 1759 4 127.9 152.2 -12.32 1.42 1758 + 1760 4 128.12 153.26 -12.32 1.6 1759 + 1761 4 127.66 154.48 -11.34 1.42 1760 + 1762 4 127.01 157.15 -11.34 1.245 1761 + 1763 4 127.23 158.57 -11.34 1.245 1762 + 1764 4 126.14 159.99 -11.34 1.065 1763 + 1765 4 125.93 161.59 -11.34 1.065 1764 + 1766 4 126.14 163.72 -11.34 1.065 1765 + 1767 4 125.71 166.39 -10.09 0.89 1766 + 1768 4 124.99 167.6 -10.74 1.065 1767 + 1769 4 123.69 170.44 -10.74 1.065 1768 + 1770 4 122.61 173.1 -10.74 1.065 1769 + 1771 4 122.39 174.88 -10.74 1.065 1770 + 1772 4 120.43 176.3 -10.74 0.89 1771 + 1773 4 119.57 179.14 -13.15 0.89 1772 + 1774 4 118.48 181.1 -13.15 0.89 1773 + 1775 4 111.53 199.88 -15.63 0.89 1774 + 1776 4 111.09 202.19 -17.74 0.89 1775 + 1777 4 109.57 204.15 -16.32 0.89 1776 + 1778 4 108.05 206.81 -16.32 0.89 1777 + 1779 4 107.4 208.59 -19 0.89 1778 + 1780 4 106.97 210.01 -18.81 0.89 1779 + 1781 4 106.75 212.14 -19.57 0.89 1780 + 1782 4 107.08 214.82 -19.57 0.89 1781 + 1783 4 107.73 217.13 -21.53 0.89 1782 + 1784 4 107.95 219.08 -21.53 0.89 1783 + 1785 4 108.17 220.68 -20.49 0.89 1784 + 1786 4 108.17 222.28 -20.49 0.89 1785 + 1787 4 109.04 224.06 -22.98 0.89 1786 + 1788 4 109.47 225.48 -22.98 0.89 1787 + 1789 4 109.69 227.61 -22.98 0.89 1788 + 1790 4 110.12 229.92 -21.8 0.89 1789 + 1791 4 110.99 232.23 -23.58 0.89 1790 + 1792 4 111.86 233.83 -23.58 0.89 1791 + 1793 4 112.73 235.96 -22.74 0.71 1792 + 1794 4 113.16 238.62 -22.74 0.71 1793 + 1795 4 113.81 240.58 -24.97 0.71 1794 + 1796 4 114.46 241.82 -26.93 0.71 1795 + 1797 4 114.46 245.02 -27.81 0.71 1796 + 1798 4 115.62 246.41 -29.34 0.71 1797 + 1799 4 116.06 248.36 -29.34 0.71 1798 + 1800 4 116.28 249.96 -31.06 0.71 1799 + 1801 4 116.71 253.34 -29.5 0.71 1800 + 1802 4 117.36 256 -29.5 0.71 1801 + 1803 4 118.66 259.91 -29.5 0.71 1802 + 1804 4 119.61 262.45 -31.09 0.71 1803 + 1805 4 120.48 264.76 -31.09 0.71 1804 + 1806 4 121.13 266.71 -31.09 0.71 1805 + 1807 4 121.78 269.02 -31.24 0.71 1806 + 1808 4 122.43 271.16 -31.24 0.71 1807 + 1809 4 123.08 273.47 -31.24 0.71 1808 + 1810 4 123.3 275.77 -31.24 0.71 1809 + 1811 4 124.84 277.36 -31.24 0.71 1810 + 1812 4 124.41 279.85 -31.24 0.71 1811 + 1813 4 124.62 282.16 -31.19 0.71 1812 + 1814 4 124.62 284.65 -31.19 0.89 1813 + 1815 4 123.76 287.84 -31.19 0.89 1814 + 1816 4 123.32 290.15 -29.84 0.89 1815 + 1817 4 122.45 291.76 -29.84 0.89 1816 + 1818 4 122.02 294.07 -29.84 0.89 1817 + 1819 4 121.37 295.85 -27.79 0.89 1818 + 1820 4 120.28 299.4 -27.79 0.89 1819 + 1821 4 119.63 301 -27.79 0.89 1820 + 1822 4 119.41 303.31 -27.79 0.89 1821 + 1823 4 118.76 305.44 -27.79 0.89 1822 + 1824 4 118.3 308.23 -29.7 0.89 1823 + 1825 4 118.3 310.36 -29.7 0.89 1824 + 1826 4 117.87 312.31 -29.35 0.71 1825 + 1827 4 117.65 314.27 -29.35 0.71 1826 + 1828 4 117.22 316.22 -29.35 0.71 1827 + 1829 4 116.78 318.53 -29.44 0.71 1828 + 1830 4 117 320.84 -29.44 0.71 1829 + 1831 4 117.16 323.58 -26.38 0.71 1830 + 1832 4 117.37 326.43 -25.88 0.71 1831 + 1833 4 117.37 328.74 -26.61 0.71 1832 + 1834 4 117.59 331.93 -26.61 0.71 1833 + 1835 4 118.02 333.89 -24.66 0.71 1834 + 1836 4 118.24 336.55 -24.66 0.71 1835 + 1837 4 117.7 339.05 -24.66 0.71 1836 + 1838 4 117.49 341.18 -24.46 0.71 1837 + 1839 4 116.84 343.67 -24.46 0.71 1838 + 1840 4 116.18 345.27 -23.34 0.71 1839 + 1841 4 115.32 347.4 -23.08 0.71 1840 + 1842 4 114.66 349.53 -23.08 0.71 1841 + 1843 4 113.36 351.49 -23.08 0.71 1842 + 1844 4 113.12 352.99 -22.22 0.71 1843 + 1845 4 112.25 354.58 -22.22 0.71 1844 + 1846 4 110.73 355.83 -20.5 0.71 1845 + 1847 4 108.99 357.07 -20.5 0.71 1846 + 1848 4 107.69 359.03 -20.5 0.71 1847 + 1849 4 106.61 361.16 -20.86 0.71 1848 + 1850 4 105.74 362.93 -20.86 0.71 1849 + 1851 4 105.3 365.24 -18.22 0.71 1850 + 1852 4 105.52 367.55 -18.22 0.71 1851 + 1853 4 105.76 369.36 -18.22 0.71 1852 + 1854 4 105.54 370.96 -18.22 0.71 1853 + 1855 4 104.89 372.56 -17.36 0.71 1854 + 1856 4 104.89 375.76 -17.36 0.71 1855 + 1857 4 104.24 377.36 -17.36 0.71 1856 + 1858 4 104.45 378.96 -19.62 0.71 1857 + 1859 4 103.58 380.91 -19.62 0.71 1858 + 1860 4 103.15 382.69 -19.62 0.71 1859 + 1861 4 102.05 384.01 -18.9 0.71 1860 + 1862 4 101.18 385.61 -18.9 0.71 1861 + 1863 4 100.75 387.38 -19.01 0.71 1862 + 1864 4 100.1 389.69 -19.08 0.71 1863 + 1865 4 99.45 391.47 -19.08 0.71 1864 + 1866 4 99.23 393.25 -17.48 0.71 1865 + 1867 4 98.58 395.02 -17.48 0.71 1866 + 1868 4 97.06 397.69 -16.22 0.71 1867 + 1869 4 96.07 399.54 -16.22 0.71 1868 + 1870 4 95.64 401.85 -16.22 0.71 1869 + 1871 4 94.98 403.8 -15.14 0.71 1870 + 1872 4 94.77 406.29 -15.14 0.71 1871 + 1873 4 94.55 408.96 -16.16 0.71 1872 + 1874 4 94.33 411.09 -16.16 0.71 1873 + 1875 4 94.12 412.51 -16.16 0.71 1874 + 1876 4 93.92 414.7 -15.18 0.71 1875 + 1877 4 93.49 416.12 -15.18 0.71 1876 + 1878 4 93.7 418.07 -16.14 0.71 1877 + 1879 4 94.57 420.03 -16.14 0.71 1878 + 1880 4 95.22 422.87 -16.14 0.71 1879 + 1881 4 96.09 424.29 -16.14 0.71 1880 + 1882 4 97.4 426.24 -16.14 0.71 1881 + 1883 4 99.13 428.55 -16.14 0.71 1882 + 1884 4 100.24 429.81 -16.26 0.71 1883 + 1885 4 101.09 431.23 -17.58 0.71 1884 + 1886 4 101.96 433.54 -17.58 0.71 1885 + 1887 4 102.83 435.49 -17.58 0.71 1886 + 1888 4 103.48 437.8 -19.68 0.71 1887 + 1889 4 104.13 439.93 -19.68 0.71 1888 + 1890 4 104.57 441.71 -18.02 0.71 1889 + 1891 4 105.65 444.02 -19.78 0.71 1890 + 1892 4 107.08 445.94 -19.78 0.71 1891 + 1893 4 108.58 449.32 -19.78 0.71 1892 + 1894 4 108.58 451.45 -19.78 0.71 1893 + 1895 4 108.36 453.76 -18.92 0.71 1894 + 1896 4 108.58 455.87 -18.92 0.71 1895 + 1897 4 107.93 457.64 -18.92 0.71 1896 + 1898 4 108.14 459.6 -20.96 0.71 1897 + 1899 4 108.16 462.05 -20.78 0.71 1898 + 1900 4 108.81 464.36 -19.81 0.71 1899 + 1901 4 109.46 466.67 -22.46 0.71 1900 + 1902 4 109.68 469.33 -22.46 0.71 1901 + 1903 4 110.11 471.29 -22.46 0.71 1902 + 1904 4 110.76 473.24 -22.1 0.71 1903 + 1905 4 111.41 475.73 -22.1 0.71 1904 + 1906 4 111.56 477.72 -22.1 0.71 1905 + 1907 4 112.21 480.38 -22.1 0.71 1906 + 1908 4 112.21 482.51 -21.55 0.71 1907 + 1909 4 113.29 483.76 -23.06 0.71 1908 + 1910 4 114.81 485.36 -23.06 0.71 1909 + 1911 4 116.98 487.31 -23.06 0.71 1910 + 1912 4 118.29 488.55 -24.53 0.71 1911 + 1913 4 120.46 489.98 -24.53 0.71 1912 + 1914 4 123.14 491.74 -23.77 0.71 1913 + 1915 4 124.88 493.34 -23.77 0.71 1914 + 1916 4 126.18 494.58 -24.12 0.71 1915 + 1917 4 128.36 495.65 -25.64 0.71 1916 + 1918 4 129.23 496.71 -27.22 0.71 1917 + 1919 4 130.31 499.02 -29.28 0.71 1918 + 1920 4 131.61 501.16 -29.28 0.71 1919 + 1921 4 133.35 503.64 -29.28 0.71 1920 + 1922 4 135.09 505.95 -29.28 0.71 1921 + 1923 4 138.18 507.25 -26.71 0.71 1922 + 1924 4 139.92 507.59 -28.54 0.71 1923 + 1925 4 141.87 508.12 -27.29 0.71 1924 + 1926 4 144.04 509.54 -27.29 0.71 1925 + 1927 4 146.87 510.61 -27.29 0.71 1926 + 1928 4 149.25 512.03 -28.7 0.71 1927 + 1929 4 151.86 512.74 -28.7 0.71 1928 + 1930 4 154.11 513.83 -28.7 0.71 1929 + 1931 4 156.28 514.9 -28.7 0.71 1930 + 1932 4 157.8 515.78 -28.05 0.71 1931 + 1933 4 160.19 515.96 -28.05 0.71 1932 + 1934 4 161.71 517.38 -28.05 0.71 1933 + 1935 4 163.88 518.63 -29.96 0.71 1934 + 1936 4 165.84 518.98 -29.96 0.71 1935 + 1937 4 167.36 519.51 -30.54 0.71 1936 + 1938 4 169.75 520.4 -30.54 0.71 1937 + 1939 4 171.71 521.07 -30.54 0.71 1938 + 1940 4 174.75 522.83 -30.54 0.71 1939 + 1941 4 177.36 523.54 -30.54 0.71 1940 + 1942 4 178.42 525.19 -30.54 0.71 1941 + 1943 4 180.6 526.07 -29.19 0.71 1942 + 1944 4 182.77 527.49 -29.19 0.71 1943 + 1945 4 184.48 528.45 -30.65 0.71 1944 + 1946 4 186.65 529.52 -32.37 0.71 1945 + 1947 4 189.04 531.29 -30.94 0.71 1946 + 1948 4 190.99 532.54 -30.94 0.71 1947 + 1949 4 192.73 534.14 -33.76 0.71 1948 + 1950 4 195.33 536.09 -33.76 0.71 1949 + 1951 4 197.07 537.16 -33.76 0.71 1950 + 1952 4 198.37 539.29 -31.19 0.71 1951 + 1953 4 200.55 541.78 -33.38 0.71 1952 + 1954 4 202.94 543.74 -33.38 0.71 1953 + 1955 4 205.55 545.16 -32.87 0.71 1954 + 1956 4 207.51 546.58 -36.15 0.71 1955 + 1957 4 209.89 547.12 -36.15 0.71 1956 + 1958 4 211.85 547.83 -36.15 0.71 1957 + 1959 4 214.24 549.07 -36.28 0.71 1958 + 1960 4 215.97 550.31 -38.06 0.71 1959 + 1961 4 218.15 551.2 -38.06 0.71 1960 + 1962 4 220.11 552.41 -38.06 0.71 1961 + 1963 4 222.5 553.83 -38.06 0.71 1962 + 1964 4 224.02 555.43 -38.06 0.71 1963 + 1965 4 225.76 556.85 -39.22 0.71 1964 + 1966 4 227.28 558.8 -39.22 0.71 1965 + 1967 4 229.23 560.22 -38.27 0.71 1966 + 1968 4 231.4 562.36 -40.79 0.71 1967 + 1969 4 233.57 564.31 -40.79 0.71 1968 + 1970 4 235.31 565.73 -38.98 0.71 1969 + 1971 4 236.66 567.43 -41.87 0.71 1970 + 1972 4 238.04 568.45 -41.87 0.71 1971 + 1973 4 130.29 153.62 -12.32 1.42 1760 + 1974 4 132.46 154.33 -12.32 1.42 1973 + 1975 4 134.2 155.93 -13 1.42 1974 + 1976 4 135.28 157.35 -13 1.42 1975 + 1977 4 136.8 158.77 -13 1.42 1976 + 1978 4 138.97 160.01 -14.96 1.42 1977 + 1979 4 140.93 160.55 -14.96 1.42 1978 + 1980 4 143.34 162.18 -14.96 1.245 1979 + 1981 4 144.42 163.42 -14.96 1.245 1980 + 1982 4 146.38 165.02 -17.78 1.245 1981 + 1983 4 148.77 166.97 -17.78 1.245 1982 + 1984 4 150.94 168.75 -20.4 1.245 1983 + 1985 4 153.54 170.7 -20.4 1.245 1984 + 1986 4 155.5 171.95 -20.4 1.245 1985 + 1987 4 157.67 173.37 -20.4 1.245 1986 + 1988 4 159.84 174.79 -22.43 1.245 1987 + 1989 4 161.09 176.91 -22.43 1.245 1988 + 1990 4 162.61 179.04 -22.43 1.245 1989 + 1991 4 163.91 181.71 -23.53 1.245 1990 + 1992 4 165.86 184.02 -23.53 1.245 1991 + 1993 4 167.6 186.32 -25.49 1.245 1992 + 1994 4 168.47 187.57 -25.49 1.245 1993 + 1995 4 169.56 189.17 -26.96 1.245 1994 + 1996 4 170.42 190.77 -26.96 1.245 1995 + 1997 4 170.86 192.54 -26.96 1.245 1996 + 1998 4 171.29 193.25 -26.96 1.245 1997 + 1999 4 171.69 196.41 -29.56 1.065 1998 + 2000 4 172.35 200.67 -30.86 0.89 1999 + 2001 4 173 201.91 -32.81 0.89 2000 + 2002 4 172.78 203.16 -30.36 0.71 2001 + 2003 4 173.21 204.56 -33.54 0.71 2002 + 2004 4 173.87 206.51 -33.54 0.71 2003 + 2005 4 173.61 207.99 -36.85 0.71 2004 + 2006 4 174.48 210.47 -39.62 0.71 2005 + 2007 4 176.21 212.6 -41.46 0.71 2006 + 2008 4 176.43 214.2 -44.14 0.71 2007 + 2009 4 178.17 216.34 -44.14 0.71 2008 + 2010 4 179.69 218.64 -44.53 0.71 2009 + 2011 4 181.21 220.95 -46.7 0.71 2010 + 2012 4 184.28 224.14 -48.52 0.71 2011 + 2013 4 186.02 226.09 -50.26 0.71 2012 + 2014 4 187.76 228.76 -50.26 0.71 2013 + 2015 4 189.93 231.07 -49.74 0.71 2014 + 2016 4 191.02 232.84 -49.74 0.71 2015 + 2017 4 192.95 234.8 -53.27 0.71 2016 + 2018 4 193.39 236.4 -52.7 0.71 2017 + 2019 4 193.88 238.3 -56.21 0.71 2018 + 2020 4 195.61 240.25 -56.21 0.71 2019 + 2021 4 196.7 242.03 -55.74 0.71 2020 + 2022 4 198.44 244.16 -55.74 0.71 2021 + 2023 4 200.39 246.47 -60.65 0.71 2022 + 2024 4 202.13 249.13 -60.65 0.71 2023 + 2025 4 203.65 250.55 -62.71 0.71 2024 + 2026 4 204.28 251.96 -63.17 0.71 2025 + 2027 4 205.36 255.16 -63.17 0.71 2026 + 2028 4 205.8 257.29 -65.22 0.71 2027 + 2029 4 206.67 259.78 -68.57 0.71 2028 + 2030 4 207.32 262.09 -68.57 0.71 2029 + 2031 4 208.62 264.4 -70.42 0.71 2030 + 2032 4 208.84 266.89 -70.42 0.71 2031 + 2033 4 209.73 269.1 -70.22 0.71 2032 + 2034 4 210.81 270.7 -73.11 0.71 2033 + 2035 4 211.9 272.83 -73.11 0.71 2034 + 2036 4 213.85 274.96 -76.22 0.71 2035 + 2037 4 215.16 277.45 -76.22 0.71 2036 + 2038 4 216.89 280.47 -79.48 0.71 2037 + 2039 4 218.63 283.31 -79.48 0.71 2038 + 2040 4 220.38 284.94 -80.12 0.71 2039 + 2041 4 221.25 286.54 -82.98 0.71 2040 + 2042 4 224.07 289.92 -82.98 0.71 2041 + 2043 4 222.99 292.22 -84.88 0.71 2042 + 2044 4 224.29 294.89 -84.88 0.71 2043 + 2045 4 226.03 297.2 -87.38 0.71 2044 + 2046 4 227.33 299.15 -87.38 0.71 2045 + 2047 4 228.76 301.1 -89.58 0.71 2046 + 2048 4 230.72 303.76 -89.58 0.71 2047 + 2049 4 232.24 305.72 -88.9 0.71 2048 + 2050 4 233.32 307.14 -91.44 0.71 2049 + 2051 4 234.63 308.74 -91.44 0.71 2050 + 2052 4 235.49 311.04 -92.26 0.71 2051 + 2053 4 237.23 312.82 -92.26 0.71 2052 + 2054 4 239.4 314.42 -94.47 0.71 2053 + 2055 4 241.18 316.12 -94.47 0.71 2054 + 2056 4 242.05 317.72 -94.5 0.71 2055 + 2057 4 243.57 318.78 -94.5 0.71 2056 + 2058 4 245.74 320.03 -94.5 0.71 2057 + 2059 4 247.69 321.45 -94.5 0.71 2058 + 2060 4 249.18 322.23 -94.5 0.71 2059 + 2061 4 249.83 323.3 -94.5 0.71 2060 + 2062 4 250.48 324.18 -94.5 0.89 2061 + 2063 4 250.24 325.41 -92.05 0.71 2062 + 2064 4 251.11 327.16 -92.05 0.71 2063 + 2065 4 252.41 329.12 -92.05 0.71 2064 + 2066 4 254.15 330.72 -91.42 0.71 2065 + 2067 4 255.02 332.67 -88.13 0.71 2066 + 2068 4 256.76 335.69 -88.13 0.71 2067 + 2069 4 258.71 338.89 -88.13 0.71 2068 + 2070 4 260.16 341.07 -86.93 0.71 2069 + 2071 4 261.25 343.03 -86.93 0.71 2070 + 2072 4 261.68 344.8 -86.93 0.71 2071 + 2073 4 262.77 346.94 -89.26 0.71 2072 + 2074 4 265.37 349.6 -89.26 0.71 2073 + 2075 4 265.81 351.91 -88.25 0.71 2074 + 2076 4 267.55 354.93 -88.25 0.71 2075 + 2077 4 269.41 357.07 -87.89 0.71 2076 + 2078 4 270.5 359.56 -90.03 0.71 2077 + 2079 4 272.24 361.16 -90.03 0.71 2078 + 2080 4 273.97 362.76 -91.48 0.71 2079 + 2081 4 275.49 364.71 -91.48 0.71 2080 + 2082 4 277.88 366.13 -91.48 0.71 2081 + 2083 4 280.92 367.73 -91.48 0.71 2082 + 2084 4 282.44 370.04 -93.86 0.71 2083 + 2085 4 283.75 372.07 -93.86 0.71 2084 + 2086 4 286.13 374.38 -93.86 0.71 2085 + 2087 4 288.96 376.52 -93.86 0.71 2086 + 2088 4 290.48 378.47 -93.86 0.71 2087 + 2089 4 291.78 380.25 -95.68 0.71 2088 + 2090 4 294.17 383.62 -95.68 0.71 2089 + 2091 4 296.56 385.75 -95.68 0.71 2090 + 2092 4 297.95 387.52 -93.94 0.71 2091 + 2093 4 299.03 389.65 -93.94 0.71 2092 + 2094 4 300.33 391.78 -93.94 0.71 2093 + 2095 4 300.77 394.45 -91.73 0.71 2094 + 2096 4 301.2 397.29 -91.73 0.71 2095 + 2097 4 301.42 400.31 -91.73 0.71 2096 + 2098 4 300.81 403.01 -91.73 0.71 2097 + 2099 4 300.63 404.39 -91.73 0.71 2098 + 2100 4 299.32 406.87 -91.73 0.71 2099 + 2101 4 299.54 408.63 -87.99 0.71 2100 + 2102 4 299.76 411.47 -87.99 0.71 2101 + 2103 4 299.11 413.6 -84.5 0.71 2102 + 2104 4 299.32 416.27 -84.5 0.71 2103 + 2105 4 299.97 418.93 -84.5 0.71 2104 + 2106 4 298.96 421.78 -84.5 0.71 2105 + 2107 4 298.96 424.09 -84.14 0.71 2106 + 2108 4 299.39 426.23 -84.14 0.71 2107 + 2109 4 300.48 428.89 -84.14 0.71 2108 + 2110 4 301.35 433.33 -80.07 0.71 2109 + 2111 4 302.75 436.18 -80.07 0.71 2110 + 2112 4 304.7 439.92 -80.07 0.71 2111 + 2113 4 306.44 442.4 -80.07 0.71 2112 + 2114 4 307.31 444.71 -77.86 0.71 2113 + 2115 4 308.17 446.67 -77.86 0.71 2114 + 2116 4 309.48 449.86 -74.91 0.71 2115 + 2117 4 310.75 452.41 -74.91 0.71 2116 + 2118 4 312.48 454.89 -74.91 0.71 2117 + 2119 4 314.22 457.03 -74.91 0.71 2118 + 2120 4 315.31 459.34 -73.53 0.71 2119 + 2121 4 316.17 461.11 -73.53 0.71 2120 + 2122 4 317.48 463.78 -73.53 0.71 2121 + 2123 4 318.56 466.97 -75.58 0.71 2122 + 2124 4 319.51 468.92 -75.58 0.71 2123 + 2125 4 319.95 470.87 -74.23 0.71 2124 + 2126 4 321.03 473 -74.23 0.71 2125 + 2127 4 320.38 475.67 -71.43 0.71 2126 + 2128 4 320.16 477.62 -71.43 0.71 2127 + 2129 4 320.81 479.93 -71.43 0.71 2128 + 2130 4 319.95 482.78 -71.67 0.71 2129 + 2131 4 319.61 484.54 -69.26 0.71 2130 + 2132 4 319.83 486.67 -67.86 0.71 2131 + 2133 4 319.83 488.8 -70.26 0.71 2132 + 2134 4 319.83 490.94 -70.26 0.71 2133 + 2135 4 320.26 493.6 -70.57 0.71 2134 + 2136 4 320.26 495.91 -70.57 0.71 2135 + 2137 4 318.96 497.69 -67.66 0.71 2136 + 2138 4 317.76 499.54 -67.66 0.71 2137 + 2139 4 316.67 502.74 -67.66 0.71 2138 + 2140 4 315.8 505.23 -67.66 0.71 2139 + 2141 4 316.28 507.32 -67.66 0.71 2140 + 2142 4 316.28 509.98 -67.66 0.71 2141 + 2143 4 316.49 512.83 -67.66 0.71 2142 + 2144 4 316.66 514.16 -67.66 0.71 2143 + 2145 4 252.41 324.14 -94.5 0.71 2062 + 2146 4 255.89 324.12 -96.7 0.71 2145 + 2147 4 260.23 324.65 -96.7 0.71 2146 + 2148 4 262.84 325.36 -96.7 0.71 2147 + 2149 4 265.01 326.25 -101.5 0.71 2148 + 2150 4 267.83 327.14 -101.63 0.71 2149 + 2151 4 271.31 327.85 -103.7 0.71 2150 + 2152 4 274.32 330.05 -106.5 0.71 2151 + 2153 4 277.57 331.12 -106.5 0.71 2152 + 2154 4 279.51 332.01 -106.5 0.71 2153 + 2155 4 281.85 332.65 -106.5 0.71 2154 + 2156 4 285.74 333.01 -106.5 0.71 2155 + 2157 4 290.74 333.72 -106.5 0.71 2156 + 2158 4 293.56 335.14 -106.5 0.71 2157 + 2159 4 294.43 336.38 -106.5 0.71 2158 + 2160 4 172.38 195.39 -25.17 1.065 1998 + 2161 4 173.03 196.98 -25.17 1.065 2160 + 2162 4 173.46 198.58 -25.17 1.065 2161 + 2163 4 174.77 200.54 -21.96 0.89 2162 + 2164 4 175.2 202.49 -21.96 0.89 2163 + 2165 4 176.07 204.45 -21.96 0.89 2164 + 2166 4 177.74 206.48 -20.91 0.89 2165 + 2167 4 178.61 208.43 -20.91 0.89 2166 + 2168 4 181 210.92 -18.71 0.89 2167 + 2169 4 180.35 212.69 -18.71 0.89 2168 + 2170 4 180.78 214.47 -17.41 0.89 2169 + 2171 4 182.09 216.6 -17.41 0.89 2170 + 2172 4 183.61 218.2 -16.01 0.89 2171 + 2173 4 185.56 219.98 -16.01 0.89 2172 + 2174 4 187.28 221.04 -17.66 0.89 2173 + 2175 4 189.67 222.11 -17.66 0.89 2174 + 2176 4 191.63 223.18 -17.66 0.89 2175 + 2177 4 193.58 224.6 -17.66 0.89 2176 + 2178 4 195.32 225.49 -17.66 0.89 2177 + 2179 4 196.84 227.26 -17.66 0.89 2178 + 2180 4 198.14 228.51 -18.38 0.89 2179 + 2181 4 200.31 230.28 -18.38 0.89 2180 + 2182 4 202.05 231.7 -18.38 0.89 2181 + 2183 4 203.57 233.12 -16.53 0.89 2182 + 2184 4 205.31 234.55 -18.31 0.89 2183 + 2185 4 206.7 236 -18.31 0.89 2184 + 2186 4 208.87 238.13 -17.34 0.89 2185 + 2187 4 210.83 240.44 -19.08 0.89 2186 + 2188 4 212.56 242.39 -19.08 0.89 2187 + 2189 4 214.08 244.35 -19.08 0.89 2188 + 2190 4 215.82 245.77 -17.5 0.89 2189 + 2191 4 217.34 247.19 -19.88 0.89 2190 + 2192 4 218.86 248.61 -19.88 0.89 2191 + 2193 4 220.6 250.03 -20.38 0.71 2192 + 2194 4 222.1 252.31 -20.38 0.89 2193 + 2195 4 222.97 253.91 -20.38 0.89 2194 + 2196 4 224.27 256.04 -20.38 0.89 2195 + 2197 4 224.92 257.64 -20.38 0.89 2196 + 2198 4 225.57 259.95 -22.62 0.89 2197 + 2199 4 226.44 261.9 -22.62 0.89 2198 + 2200 4 226.88 264.04 -22.62 0.89 2199 + 2201 4 227.96 266.34 -22.62 0.89 2200 + 2202 4 229.33 269.27 -22.62 0.89 2201 + 2203 4 229.77 270.69 -22.22 0.89 2202 + 2204 4 230.42 271.75 -22.22 1.065 2203 + 2205 4 230.85 272.64 -22.22 1.065 2204 + 2206 4 230.85 273 -22.22 1.245 2205 + 2207 4 230.2 274.24 -22.22 0.89 2206 + 2208 4 230.2 275.48 -24.66 0.89 2207 + 2209 4 229.55 277.44 -27.06 0.89 2208 + 2210 4 228.9 279.04 -27.06 0.89 2209 + 2211 4 228.68 280.46 -26.86 0.71 2210 + 2212 4 228.68 282.59 -26.86 0.71 2211 + 2213 4 227.16 284.37 -26.86 0.71 2212 + 2214 4 226.51 286.68 -28.33 0.71 2213 + 2215 4 225.86 288.45 -28.37 0.71 2214 + 2216 4 225.43 289.7 -28.37 0.71 2215 + 2217 4 224.99 291.83 -28.37 0.71 2216 + 2218 4 224.77 294.31 -28.37 0.71 2217 + 2219 4 224.56 295.91 -29.94 0.71 2218 + 2220 4 223.91 298.93 -29.94 0.71 2219 + 2221 4 223.25 301.06 -31.99 0.71 2220 + 2222 4 223.03 303.27 -33.33 0.71 2221 + 2223 4 222.16 306.12 -33.33 0.71 2222 + 2224 4 221.94 309.14 -35.13 0.71 2223 + 2225 4 222.16 312.51 -35.13 0.71 2224 + 2226 4 221.51 314.64 -36.4 0.71 2225 + 2227 4 221.29 316.78 -35.34 0.71 2226 + 2228 4 221.03 318.52 -35.34 0.71 2227 + 2229 4 221.03 320.65 -37.2 0.71 2228 + 2230 4 221.24 323.32 -37.2 0.71 2229 + 2231 4 220.81 326.51 -37.2 0.71 2230 + 2232 4 220.59 329.89 -37.2 0.71 2231 + 2233 4 220.81 333.09 -37.3 0.71 2232 + 2234 4 221.06 336.16 -37.3 0.71 2233 + 2235 4 220.84 337.58 -38.95 0.71 2234 + 2236 4 221.71 339.89 -38.95 0.71 2235 + 2237 4 222.36 342.38 -37.04 0.71 2236 + 2238 4 223.01 343.8 -37.04 0.71 2237 + 2239 4 223.67 345.76 -37.04 0.71 2238 + 2240 4 224.1 348.42 -37.04 0.71 2239 + 2241 4 224.91 350.14 -37.04 0.71 2240 + 2242 4 224.91 352.27 -37.04 0.71 2241 + 2243 4 225.78 355.12 -35.97 0.71 2242 + 2244 4 226.87 357.42 -37.05 0.71 2243 + 2245 4 228.39 360.27 -37.05 0.71 2244 + 2246 4 229.69 362.75 -37.05 0.71 2245 + 2247 4 230.53 365.23 -37.05 0.71 2246 + 2248 4 232.7 368.6 -37.05 0.71 2247 + 2249 4 234.87 370.18 -37.82 0.71 2248 + 2250 4 236.83 371.96 -37.82 0.71 2249 + 2251 4 239 374.09 -37.82 0.71 2250 + 2252 4 240.52 376.58 -37.82 0.71 2251 + 2253 4 242.26 378.53 -38.21 0.71 2252 + 2254 4 244.18 379.96 -38.21 0.71 2253 + 2255 4 245.92 381.38 -38.21 0.71 2254 + 2256 4 248.31 382.81 -38.21 0.71 2255 + 2257 4 249.17 384.05 -37.32 0.71 2256 + 2258 4 251.56 385.83 -36.91 0.71 2257 + 2259 4 253.95 387.25 -36.91 0.71 2258 + 2260 4 256.12 388.67 -39.64 0.71 2259 + 2261 4 258.51 390.09 -39.64 0.71 2260 + 2262 4 261.12 392.22 -39.64 0.71 2261 + 2263 4 262.35 393.74 -39.64 0.71 2262 + 2264 4 264.3 394.98 -41.7 0.71 2263 + 2265 4 266.04 396.23 -40.45 0.71 2264 + 2266 4 268.21 398.18 -40.45 0.71 2265 + 2267 4 269.51 399.6 -42.02 0.71 2266 + 2268 4 271.03 400.85 -45.7 0.71 2267 + 2269 4 273.2 402.62 -45.7 0.71 2268 + 2270 4 275.38 404.93 -47.35 0.71 2269 + 2271 4 277.33 406 -47.35 0.71 2270 + 2272 4 279.28 407.24 -47.12 0.71 2271 + 2273 4 281.87 408.21 -47.12 0.71 2272 + 2274 4 283.39 409.45 -47.3 0.71 2273 + 2275 4 285.12 411.05 -48.96 0.71 2274 + 2276 4 285.99 413 -51.37 0.71 2275 + 2277 4 287.29 415.14 -51.37 0.71 2276 + 2278 4 288.82 418.16 -51.37 0.71 2277 + 2279 4 290.34 420.11 -50.91 0.71 2278 + 2280 4 292.07 422.42 -50.91 0.71 2279 + 2281 4 292.93 424.1 -52.87 0.71 2280 + 2282 4 294.23 425.7 -52.86 0.71 2281 + 2283 4 294.91 427.52 -52.86 0.71 2282 + 2284 4 296.21 430.01 -52.86 0.71 2283 + 2285 4 296.21 432.14 -55.55 0.71 2284 + 2286 4 297.95 434.09 -55.55 0.71 2285 + 2287 4 299.04 436.05 -55.6 0.71 2286 + 2288 4 300.12 438 -55.6 0.71 2287 + 2289 4 301.43 439.42 -58.14 0.71 2288 + 2290 4 302.55 440.23 -58.14 0.535 2289 + 2291 4 304.07 442.9 -58.14 0.535 2290 + 2292 4 306.02 444.67 -58.14 0.535 2291 + 2293 4 306.45 446.98 -58.14 0.535 2292 + 2294 4 307.11 448.76 -58.14 0.535 2293 + 2295 4 308.19 450.18 -58.14 0.535 2294 + 2296 4 232.81 274.06 -24.65 0.89 2206 + 2297 4 234.33 275.13 -24.22 0.89 2296 + 2298 4 235.63 276.37 -24.22 0.89 2297 + 2299 4 236.5 277.79 -26.18 0.89 2298 + 2300 4 237.59 279.04 -24.21 0.89 2299 + 2301 4 238.89 280.64 -24.21 0.89 2300 + 2302 4 239.98 281.7 -24.77 0.89 2301 + 2303 4 240.45 283.2 -24.77 0.89 2302 + 2304 4 241.27 284.44 -24.77 0.89 2303 + 2305 4 241.27 285.87 -24.77 0.89 2304 + 2306 4 242.13 287.29 -24.77 0.89 2305 + 2307 4 242.35 288 -24.77 0.89 2306 + 2308 4 243.46 291.06 -21.93 0.89 2307 + 2309 4 244.33 292.3 -23.02 0.71 2308 + 2310 4 245.85 293.54 -21.62 0.71 2309 + 2311 4 247.15 295.5 -19.23 0.71 2310 + 2312 4 248.46 297.1 -19.23 0.71 2311 + 2313 4 249.98 298.87 -19.23 0.71 2312 + 2314 4 251.71 300.83 -19.23 0.71 2313 + 2315 4 253.02 302.78 -16.84 0.71 2314 + 2316 4 255.16 304.41 -17.58 0.71 2315 + 2317 4 256.25 306.01 -17.58 0.71 2316 + 2318 4 257.55 307.43 -15.7 0.71 2317 + 2319 4 258.42 309.03 -16.48 0.71 2318 + 2320 4 259.94 310.28 -13 0.71 2319 + 2321 4 261.68 311.7 -13 0.71 2320 + 2322 4 264.07 313.83 -13 0.71 2321 + 2323 4 266.02 314.69 -11.39 0.71 2322 + 2324 4 267.76 316.12 -11.39 0.71 2323 + 2325 4 269.5 316.83 -11.39 0.71 2324 + 2326 4 270.91 317.52 -9.86 0.71 2325 + 2327 4 273.52 318.95 -9.86 0.71 2326 + 2328 4 274.61 320.19 -10.13 0.71 2327 + 2329 4 276.13 321.08 -8.43 0.71 2328 + 2330 4 277.21 323.21 -7.66 0.71 2329 + 2331 4 277.65 325.87 -7.66 0.71 2330 + 2332 4 278.95 328.01 -7.66 0.71 2331 + 2333 4 281.12 329.78 -9.3 0.71 2332 + 2334 4 282.86 331.2 -9.3 0.71 2333 + 2335 4 284.51 332.46 -9.3 0.71 2334 + 2336 4 285.16 334.23 -7.48 0.71 2335 + 2337 4 286.68 335.48 -7.48 0.71 2336 + 2338 4 287.77 337.08 -7.48 0.71 2337 + 2339 4 289.07 339.56 -6.02 0.71 2338 + 2340 4 290.81 341.52 -7.11 0.71 2339 + 2341 4 292.77 343.12 -4.54 0.71 2340 + 2342 4 295.37 345.43 -4.54 0.71 2341 + 2343 4 297.33 346.84 -3.45 0.71 2342 + 2344 4 300.37 348.61 -2.7 0.71 2343 + 2345 4 302.98 350.57 -2.7 0.71 2344 + 2346 4 304.71 352.16 -0.7 0.71 2345 + 2347 4 306.89 355.01 -0.7 0.71 2346 + 2348 4 308.19 356.96 -0.7 0.71 2347 + 2349 4 309.93 358.2 -0.06 0.71 2348 + 2350 4 311.66 359.98 -2.46 0.71 2349 + 2351 4 313.13 361.97 -2.46 0.71 2350 + 2352 4 314.65 364.1 -2.46 0.71 2351 + 2353 4 315.95 366.05 -0.24 0.71 2352 + 2354 4 318.34 366.94 -0.24 0.71 2353 + 2355 4 320.95 369.07 -0.79 0.71 2354 + 2356 4 322.9 371.21 -0.79 0.71 2355 + 2357 4 324.21 373.34 -1.72 0.71 2356 + 2358 4 324.86 374.94 -3.03 0.71 2357 + 2359 4 325.64 376.44 -0.34 0.71 2358 + 2360 4 326.95 378.21 -0.34 0.71 2359 + 2361 4 327.38 380.7 2.91 0.71 2360 + 2362 4 327.82 383.01 2.91 0.71 2361 + 2363 4 327.38 385.14 3.42 0.71 2362 + 2364 4 326.3 386.74 3.42 0.71 2363 + 2365 4 326.3 388.52 5.5 0.71 2364 + 2366 4 324.34 391.18 4.82 0.71 2365 + 2367 4 322.86 394.94 6.1 0.71 2366 + 2368 4 321.55 397.79 6.1 0.71 2367 + 2369 4 321.34 400.27 9.19 0.71 2368 + 2370 4 321.34 402.41 9.19 0.71 2369 + 2371 4 320.68 404.54 9.31 0.71 2370 + 2372 4 320.9 407.02 9.31 0.71 2371 + 2373 4 320.11 408.84 9.31 0.71 2372 + 2374 4 319.24 410.61 11.2 0.71 2373 + 2375 4 318.8 412.57 11.2 0.71 2374 + 2376 4 318.59 414.7 13.74 0.71 2375 + 2377 4 318.59 417.01 13.74 0.71 2376 + 2378 4 318.37 420.56 16.29 0.71 2377 + 2379 4 317.94 423.76 17.03 0.71 2378 + 2380 4 317.54 426.3 18.78 0.71 2379 + 2381 4 317.54 428.79 17.7 0.71 2380 + 2382 4 317.11 432.16 18.41 0.71 2381 + 2383 4 316.67 435.01 18.41 0.71 2382 + 2384 4 316.24 436.78 20.42 0.71 2383 + 2385 4 316.24 439.27 23.22 0.71 2384 + 2386 4 315.74 441.9 23.22 0.71 2385 + 2387 4 315.52 444.03 23.22 0.71 2386 + 2388 4 316.39 446.16 23.31 0.71 2387 + 2389 4 317.7 448.83 25.14 0.71 2388 + 2390 4 317.7 452.2 25.14 0.71 2389 + 2391 4 318.56 454.34 27.66 0.71 2390 + 2392 4 319.88 455.86 27.66 0.71 2391 + 2393 4 319.88 457.99 30.31 0.71 2392 + 2394 4 320.21 459.64 30.31 0.71 2393 + 2395 4 320.86 462.3 33.11 0.535 2394 + 2396 4 322.16 464.79 33.11 0.535 2395 + 2397 4 323.68 466.92 33.11 0.535 2396 + 2398 4 324.55 469.41 33.11 0.535 2397 + 2399 4 325.42 471.72 33.11 0.535 2398 + 2400 4 324.77 473.14 35.75 0.71 2399 + 2401 4 325.66 475.19 35.75 0.71 2400 + 2402 4 243.87 288.89 -24.82 0.71 2307 + 2403 4 246.04 290.84 -24.82 0.71 2402 + 2404 4 247.56 292.62 -27.58 0.71 2403 + 2405 4 249.52 294.93 -27.58 0.71 2404 + 2406 4 251.91 296.35 -27.14 0.71 2405 + 2407 4 253.21 297.41 -27.14 0.71 2406 + 2408 4 254.73 298.66 -24.03 0.71 2407 + 2409 4 256.25 299.9 -24.03 0.71 2408 + 2410 4 256.9 301.32 -24.03 0.71 2409 + 2411 4 258.21 302.39 -24.03 0.71 2410 + 2412 4 259.29 303.45 -22.58 0.71 2411 + 2413 4 260.59 305.23 -24.06 0.71 2412 + 2414 4 261.68 307.01 -22.05 0.71 2413 + 2415 4 262.98 308.6 -19.55 0.71 2414 + 2416 4 265.15 310.38 -19.55 0.71 2415 + 2417 4 268.02 311.66 -19.55 0.71 2416 + 2418 4 270.61 311.48 -19.55 0.71 2417 + 2419 4 272.34 311.12 -21.46 0.71 2418 + 2420 4 273.43 311.48 -24.34 0.71 2419 + 2421 4 274.73 313.43 -24.9 0.71 2420 + 2422 4 276.47 315.03 -23.42 0.71 2421 + 2423 4 279.07 316.63 -25.15 0.71 2422 + 2424 4 281.9 319.12 -25.15 0.71 2423 + 2425 4 285.59 321.61 -22.04 0.71 2424 + 2426 4 287.55 323.04 -19.46 0.71 2425 + 2427 4 289.5 325.17 -19.46 0.71 2426 + 2428 4 290.37 326.23 -20.76 0.71 2427 + 2429 4 291.89 328.19 -20.76 0.71 2428 + 2430 4 293.19 329.61 -20.76 0.71 2429 + 2431 4 295.15 331.74 -19.03 0.71 2430 + 2432 4 297.1 333.34 -17.14 0.71 2431 + 2433 4 300.58 335.65 -18 0.71 2432 + 2434 4 303.4 336.54 -18 0.71 2433 + 2435 4 304.44 338.06 -15.97 0.71 2434 + 2436 4 306.83 339.12 -14.74 0.71 2435 + 2437 4 309.44 340.19 -14.29 0.71 2436 + 2438 4 310.96 340.72 -13.74 0.71 2437 + 2439 4 313.78 341.97 -12.42 0.71 2438 + 2440 4 316.61 343.03 -12.42 0.71 2439 + 2441 4 318.56 343.56 -9.78 0.71 2440 + 2442 4 321.6 344.1 -9.78 0.71 2441 + 2443 4 323.11 345.44 -9.78 0.71 2442 + 2444 4 326.15 346.15 -9.78 0.71 2443 + 2445 4 328.31 347.03 -5.91 0.71 2444 + 2446 4 331.35 347.57 -5.91 0.71 2445 + 2447 4 333.95 348.81 -5.91 0.71 2446 + 2448 4 336.13 349.88 -5.91 0.71 2447 + 2449 4 338.52 350.23 -6.59 0.71 2448 + 2450 4 340.9 352.01 -3.68 0.71 2449 + 2451 4 342.5 353.26 -3.56 0.71 2450 + 2452 4 345.32 354.86 -3.56 0.71 2451 + 2453 4 347.49 354.86 -4.33 0.71 2452 + 2454 4 350.31 356.63 -2.45 0.71 2453 + 2455 4 351.83 359.12 -2.45 0.71 2454 + 2456 4 353.14 361.43 -2.17 0.71 2455 + 2457 4 353.35 363.38 -2.17 0.71 2456 + 2458 4 353.79 365.16 -1.03 0.71 2457 + 2459 4 354.22 366.94 2.1 0.71 2458 + 2460 4 353.98 368.1 2.1 0.71 2459 + 2461 4 354.19 369.7 2.34 0.71 2460 + 2462 4 355.93 372.01 2.34 0.71 2461 + 2463 4 357.45 374.32 3.12 0.71 2462 + 2464 4 358.75 376.1 5.85 0.71 2463 + 2465 4 360.49 378.23 9.16 0.71 2464 + 2466 4 362.01 380.89 11.15 0.71 2465 + 2467 4 363.1 383.02 11.15 0.71 2466 + 2468 4 365.58 386.39 10.92 0.71 2467 + 2469 4 367.1 388.88 10.92 0.71 2468 + 2470 4 367.97 391.54 10.8 0.71 2469 + 2471 4 369.49 393.14 10.8 0.71 2470 + 2472 4 370.91 395.52 12.87 0.71 2471 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml b/examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc new file mode 100644 index 0000000..6ca8c78 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc @@ -0,0 +1,6764 @@ +# Original file DHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in DHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\DHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +# NEUROMANTIC V1.6.3 (2/28/2013 12:43:57 PM): Saved to DHC-neuron.swc +1 1 0.0 0.0 0.0 8.5214 -1 +2 1 -0.05 -8.47 -0.87 8.5214 1 +3 1 0.05 8.47 0.87 8.5214 1 +4 3 4.36 -6.98 -4.24 2.275 1 +5 3 5.55 -8.63 -4.38 1.625 4 +6 3 6.29 -9.84 -4.79 1.3 5 +7 3 7.21 -11.46 -3.28 1.085 6 +8 3 7.88 -11.55 -3.27 1.085 7 +9 3 8.14 -12.19 -3.18 0.435 8 +10 3 8.15 -12.41 -3.2 0.435 9 +11 3 8.2 -12.48 -4.57 0.435 10 +12 3 8.45 -12.85 -5.05 0.435 11 +13 3 8.5 -13.21 -5.84 0.435 12 +14 3 8.52 -13.12 -6.74 0.435 13 +15 3 7.83 -13.33 -5.11 0.435 14 +16 3 7.81 -13.11 -5.09 0.435 15 +17 3 8.03 -13.11 -5.01 0.76 16 +18 3 8.07 -13.74 -5.07 0.975 17 +19 3 8.38 -15.02 -5.2 0.975 18 +20 3 8.84 -15.53 -5.24 0.975 19 +21 3 9.53 -16.4 -4.87 0.435 20 +22 3 10.63 -16.55 -4.86 0.435 21 +23 3 11.07 -16.51 -4.99 0.435 22 +24 3 11.52 -16.63 -5.59 0.435 23 +25 3 12.19 -16.76 -5.97 0.435 24 +26 3 12.66 -17.12 -6.45 0.435 25 +27 3 13.12 -17.29 -6.68 0.435 26 +28 3 13.14 -17.22 -7.35 0.435 27 +29 3 13.74 -17.39 -5.39 0.435 28 +30 3 14.63 -17.69 -6.08 0.435 29 +31 3 15.99 -18.22 -6.4 0.435 30 +32 3 17.12 -18.77 -6.73 0.435 31 +33 3 18.71 -19.93 -7.12 0.435 32 +34 3 20.11 -21.34 -7.31 0.435 33 +35 3 22.14 -22.5 -7.38 0.435 34 +36 3 23.28 -23.3 -7.44 0.435 35 +37 3 24.85 -24.28 -7.5 0.435 36 +38 3 25.78 -25.09 -7.57 0.435 37 +39 3 26.27 -25.9 -7.71 0.435 38 +40 3 27.19 -26.95 -7.49 0.435 39 +41 3 28.59 -28.63 -7.33 0.435 40 +42 3 29.96 -29.62 -7.33 0.435 41 +43 3 31.09 -30.41 -7.39 0.435 42 +44 3 33.97 -31.32 -7.41 0.435 43 +45 3 35.74 -31.85 -7.43 0.435 44 +46 3 36.9 -33.07 -7.44 0.435 45 +47 3 38.05 -34.08 -7.52 0.435 46 +48 3 39.23 -35.52 -7.64 0.435 47 +49 3 39.91 -36.13 -7.62 0.435 48 +50 3 40.4 -36.75 -7.67 0.435 49 +51 3 41.32 -37.76 -7.76 0.435 50 +52 3 42.03 -38.57 -7.89 0.435 51 +53 3 43.66 -40.19 -8.02 0.435 52 +54 3 44.56 -41.0 -8.08 0.435 53 +55 3 46.4 -42.39 -8.18 0.435 54 +56 3 47.96 -43.15 -8.23 0.435 55 +57 3 49.11 -44.17 -8.3 0.435 56 +58 3 50.04 -45.18 -8.39 0.435 57 +59 3 50.3 -45.82 -8.45 0.435 58 +60 3 50.6 -47.08 -8.57 0.435 59 +61 3 51.33 -48.33 -8.68 0.435 60 +62 3 51.57 -48.74 -8.72 0.435 61 +63 3 51.64 -49.82 -8.83 0.435 62 +64 3 51.88 -50.23 -8.87 0.435 63 +65 3 52.6 -50.99 -9.46 0.435 64 +66 3 53.31 -51.52 -10.25 0.435 65 +67 3 54.03 -52.51 -10.71 0.435 66 +68 3 54.98 -53.25 -11.45 0.435 67 +69 3 55.45 -53.84 -11.72 0.435 68 +70 3 55.93 -54.45 -11.92 0.435 69 +71 3 56.4 -54.8 -12.4 0.435 70 +72 3 56.85 -55.2 -12.43 0.435 71 +73 3 57.55 -55.81 -12.48 0.435 72 +74 3 58.34 -57.88 -12.9 0.435 73 +75 3 60.6 -58.97 -13.57 0.435 74 +76 3 61.73 -59.75 -13.69 0.435 75 +77 3 62.66 -60.25 -14.7 0.435 76 +78 3 63.34 -60.38 -15.15 0.435 77 +79 3 64.47 -61.16 -15.28 0.435 78 +80 3 64.93 -61.28 -15.96 0.435 79 +81 3 65.87 -62.29 -16.12 0.435 80 +82 3 66.34 -62.63 -16.67 0.435 81 +83 3 68.15 -63.33 -17.3 0.435 82 +84 3 69.71 -63.8 -18.06 0.435 83 +85 3 70.82 -63.89 -18.65 0.435 84 +86 3 71.91 -63.81 -18.7 0.435 85 +87 3 72.57 -64.2 -18.72 0.435 86 +88 3 74.39 -65.36 -19.02 0.435 87 +89 3 75.52 -65.91 -19.2 0.435 88 +90 3 76.46 -66.92 -19.43 0.435 89 +91 3 77.38 -67.42 -20.37 0.435 90 +92 3 78.31 -67.94 -21.16 0.435 91 +93 3 79.92 -69.31 -21.56 0.435 92 +94 3 80.83 -69.62 -22.25 0.435 93 +95 3 81.76 -70.4 -22.45 0.435 94 +96 3 82.22 -70.48 -23.51 0.435 95 +97 3 83.16 -71.24 -24.02 0.435 96 +98 3 84.75 -72.15 -24.76 0.435 97 +99 3 85.43 -72.52 -25.0 0.435 98 +100 3 85.9 -72.64 -25.69 0.435 99 +101 3 86.57 -72.79 -25.91 0.435 100 +102 3 87.47 -73.12 -26.37 0.435 101 +103 3 88.61 -73.89 -26.65 0.435 102 +104 3 89.93 -74.21 -26.95 0.435 103 +105 3 93.09 -75.67 -27.63 0.435 104 +106 3 94.85 -75.94 -28.15 0.435 105 +107 3 96.18 -76.28 -28.22 0.435 106 +108 3 97.7 -76.16 -28.41 0.435 107 +109 3 100.33 -76.4 -28.67 0.435 108 +110 3 101.47 -77.19 -28.8 0.435 109 +111 3 103.49 -78.36 -28.87 0.435 110 +112 3 104.84 -78.87 -29.42 0.435 111 +113 3 106.17 -79.21 -29.5 0.435 112 +114 3 107.69 -79.12 -29.45 0.435 113 +115 3 109.24 -79.64 -29.77 0.435 114 +116 3 111.67 -80.12 -29.84 0.435 115 +117 3 112.82 -81.12 -29.99 0.435 116 +118 3 114.22 -82.51 -30.48 0.435 117 +119 3 114.92 -83.33 -30.55 0.435 118 +120 3 115.64 -84.35 -30.71 0.435 119 +121 3 116.36 -85.37 -30.8 0.435 120 +122 3 116.85 -86.2 -30.95 0.435 121 +123 3 117.37 -87.46 -31.07 0.435 122 +124 3 118.05 -88.06 -31.12 0.435 123 +125 3 118.54 -88.87 -31.41 0.435 124 +126 3 119.26 -89.66 -31.78 0.435 125 +127 3 119.51 -90.03 -32.26 0.435 126 +128 3 120.21 -90.61 -32.61 0.435 127 +129 3 120.45 -91.23 -32.66 0.435 128 +130 3 120.92 -91.62 -32.76 0.435 129 +131 3 121.41 -92.46 -32.84 0.435 130 +132 3 121.66 -92.85 -33.03 0.435 131 +133 3 122.36 -93.45 -33.22 0.435 132 +134 3 123.27 -94.21 -33.58 0.435 133 +135 3 123.52 -94.63 -33.7 0.435 134 +136 3 124.69 -95.56 -34.44 0.435 135 +137 3 125.16 -95.96 -34.47 0.435 136 +138 3 125.6 -96.36 -34.58 0.435 137 +139 3 126.29 -96.74 -34.76 0.435 138 +140 3 126.74 -96.91 -34.83 0.435 139 +141 3 127.21 -97.3 -35.01 0.435 140 +142 3 127.66 -97.66 -35.42 0.435 141 +143 3 128.13 -98.03 -35.82 0.435 142 +144 3 128.6 -98.41 -36.0 0.435 143 +145 3 128.84 -98.55 -36.61 0.435 144 +146 3 129.53 -99.14 -36.74 0.435 145 +147 3 130.42 -99.29 -36.95 0.435 146 +148 3 130.45 -99.43 -37.57 0.435 147 +149 3 7.37 -16.37 -5.36 0.54 20 +150 3 7.01 -17.48 -5.48 0.54 149 +151 3 6.43 -18.58 -5.61 0.54 150 +152 3 5.65 -19.92 -5.77 0.54 151 +153 3 4.59 -20.41 -5.84 0.54 152 +154 3 4.39 -20.67 -5.65 0.65 153 +155 3 3.35 -21.35 -5.9 0.65 154 +156 3 2.97 -21.68 -7.22 0.65 155 +157 3 3.24 -21.69 -9.02 0.435 156 +158 3 3.3 -22.56 -9.11 0.435 157 +159 3 3.35 -23.42 -9.13 0.435 158 +160 3 2.55 -24.33 -9.24 0.435 159 +161 3 1.72 -25.03 -9.34 0.435 160 +162 3 0.89 -25.5 -9.4 0.435 161 +163 3 1.32 -25.86 -8.79 0.435 162 +164 3 1.76 -26.22 -8.17 0.435 163 +165 3 2.7 -27.25 -8.25 0.435 164 +166 3 3.62 -28.27 -8.34 0.435 165 +167 3 4.79 -29.48 -8.44 0.435 166 +168 3 5.98 -31.13 -8.58 0.435 167 +169 3 6.73 -32.59 -8.71 0.435 168 +170 3 7.49 -34.48 -8.89 0.435 169 +171 3 8.25 -36.16 -9.05 0.435 170 +172 3 8.84 -38.48 -9.27 0.435 171 +173 3 9.36 -39.74 -9.39 0.435 172 +174 3 9.88 -41.22 -9.53 0.435 173 +175 3 10.22 -43.14 -9.72 0.435 174 +176 3 10.15 -45.29 -9.95 0.435 175 +177 3 10.26 -47.0 -10.12 0.435 176 +178 3 10.79 -48.69 -10.28 0.435 177 +179 3 10.9 -50.39 -10.46 0.435 178 +180 3 11.63 -51.65 -10.57 0.435 179 +181 3 12.82 -53.08 -10.69 0.435 180 +182 3 13.38 -54.92 -11.4 0.435 181 +183 3 13.71 -56.38 -11.84 0.435 182 +184 3 14.0 -57.37 -12.69 0.435 183 +185 3 14.11 -58.82 -13.21 0.435 184 +186 3 14.45 -60.73 -13.48 0.435 185 +187 3 14.96 -62.0 -13.6 0.435 186 +188 3 15.07 -63.71 -13.78 0.435 187 +189 3 15.17 -65.21 -13.93 0.435 188 +190 3 15.86 -66.02 -14.0 0.435 189 +191 3 16.38 -67.28 -14.11 0.435 190 +192 3 17.11 -68.31 -14.2 0.435 191 +193 3 17.59 -69.15 -14.28 0.435 192 +194 3 17.6 -69.32 -14.3 0.435 193 +195 3 17.43 -69.37 -15.89 0.435 194 +196 3 17.24 -69.83 -15.94 0.435 195 +197 3 16.82 -70.07 -15.9 0.435 196 +198 3 16.39 -70.1 -15.91 0.435 197 +199 3 16.23 -70.96 -16.01 0.435 198 +200 3 16.26 -71.39 -16.12 0.435 199 +201 3 16.31 -72.24 -16.28 0.435 200 +202 3 16.41 -73.74 -16.43 0.435 201 +203 3 16.7 -74.8 -16.54 0.435 202 +204 3 16.97 -75.64 -16.62 0.435 203 +205 3 17.24 -76.49 -16.7 0.435 204 +206 3 17.26 -76.91 -16.82 0.435 205 +207 3 17.31 -77.54 -16.95 0.435 206 +208 3 17.34 -77.97 -17.08 0.435 207 +209 3 17.38 -78.6 -17.14 0.435 208 +210 3 17.43 -79.23 -17.28 0.435 209 +211 3 17.06 -80.33 -17.4 0.435 210 +212 3 16.68 -81.22 -17.5 0.435 211 +213 3 16.28 -81.67 -17.56 0.435 212 +214 3 16.34 -82.75 -17.67 0.435 213 +215 3 16.39 -83.39 -17.73 0.435 214 +216 3 16.45 -84.46 -17.84 0.435 215 +217 3 16.51 -85.31 -17.93 0.435 216 +218 3 16.8 -86.37 -18.03 0.435 217 +219 3 16.84 -87.02 -18.1 0.435 218 +220 3 16.88 -87.66 -18.16 0.435 219 +221 3 16.7 -88.31 -18.23 0.435 220 +222 3 16.98 -88.89 -18.82 0.435 221 +223 3 17.2 -88.88 -18.73 0.435 222 +224 3 17.23 -89.3 -18.93 0.435 223 +225 3 17.69 -89.67 -19.26 0.435 224 +226 3 17.94 -90.08 -19.37 0.435 225 +227 3 17.98 -90.47 -19.79 0.435 226 +228 3 18.43 -90.61 -20.24 0.435 227 +229 3 18.93 -91.37 -21.06 0.435 228 +230 3 19.19 -91.95 -21.5 0.435 229 +231 3 19.45 -92.34 -21.9 0.435 230 +232 3 20.13 -92.44 -22.5 0.435 231 +233 3 20.38 -92.81 -22.99 0.435 232 +234 3 20.64 -93.13 -23.92 0.435 233 +235 3 21.11 -93.49 -24.47 0.435 234 +236 3 21.36 -93.9 -24.51 0.435 235 +237 3 21.61 -94.26 -24.99 0.435 236 +238 3 22.1 -94.85 -25.34 0.435 237 +239 3 22.13 -95.48 -25.49 0.435 238 +240 3 22.6 -95.86 -25.89 0.435 239 +241 3 23.1 -96.41 -26.46 0.435 240 +242 3 23.35 -97.04 -26.59 0.435 241 +243 3 23.61 -97.62 -27.1 0.435 242 +244 3 23.88 -98.25 -27.24 0.435 243 +245 3 24.13 -98.85 -27.45 0.435 244 +246 3 24.18 -99.49 -27.58 0.435 245 +247 3 24.67 -100.04 -28.31 0.435 246 +248 3 24.92 -100.4 -28.86 0.435 247 +249 3 25.22 -101.44 -29.12 0.435 248 +250 3 25.51 -102.23 -29.79 0.435 249 +251 3 25.97 -102.62 -29.9 0.435 250 +252 3 26.21 -102.75 -30.59 0.435 251 +253 3 26.71 -103.54 -31.11 0.435 252 +254 3 27.2 -104.3 -31.78 0.435 253 +255 3 27.46 -104.93 -31.84 0.435 254 +256 3 27.73 -105.52 -32.26 0.435 255 +257 3 28.61 -105.68 -32.34 0.435 256 +258 3 29.09 -106.03 -32.89 0.435 257 +259 3 29.78 -106.59 -33.23 0.435 258 +260 3 30.24 -106.74 -33.69 0.435 259 +261 3 31.18 -107.46 -34.58 0.435 260 +262 3 31.42 -107.59 -35.26 0.435 261 +263 3 32.77 -108.1 -35.81 0.435 262 +264 3 33.22 -108.29 -35.82 0.435 263 +265 3 33.91 -108.34 -36.94 0.435 264 +266 3 34.15 -108.47 -37.7 0.435 265 +267 3 34.38 -108.39 -38.29 0.435 266 +268 3 35.06 -108.76 -38.61 0.435 267 +269 3 35.74 -109.15 -38.63 0.435 268 +270 3 37.1 -109.63 -39.41 0.435 269 +271 3 37.99 -109.77 -39.62 0.435 270 +272 3 38.45 -110.11 -40.25 0.435 271 +273 3 38.9 -110.3 -40.34 0.435 272 +274 3 39.15 -110.7 -40.37 0.435 273 +275 3 39.4 -111.33 -40.43 0.435 274 +276 3 39.46 -112.19 -40.52 0.435 275 +277 3 39.54 -112.71 -41.85 0.435 276 +278 3 39.78 -113.09 -42.11 0.435 277 +279 3 39.83 -113.4 -43.27 0.435 278 +280 3 39.85 -113.57 -43.81 0.435 279 +281 3 39.04 -114.25 -43.98 0.435 280 +282 3 38.86 -114.41 -44.76 0.435 281 +283 3 38.45 -114.58 -45.54 0.435 282 +284 3 38.5 -114.9 -46.55 0.435 283 +285 3 38.53 -114.78 -47.67 0.435 284 +286 3 38.12 -115.21 -47.94 0.435 285 +287 3 37.73 -115.62 -48.45 0.435 286 +288 3 37.76 -116.04 -48.56 0.435 287 +289 3 38.01 -116.2 -49.11 0.435 288 +290 3 38.03 -116.35 -49.64 0.435 289 +291 3 37.63 -116.75 -50.15 0.435 290 +292 3 38.12 -117.35 -50.43 0.435 291 +293 3 38.15 -117.77 -50.54 0.435 292 +294 3 38.62 -118.36 -50.89 0.435 293 +295 3 40.77 -117.78 -50.93 0.435 294 +296 3 41.66 -118.16 -50.95 0.435 295 +297 3 42.34 -118.76 -51.0 0.435 296 +298 3 43.03 -119.38 -51.05 0.435 297 +299 3 43.52 -120.2 -51.12 0.435 298 +300 3 44.0 -120.82 -51.17 0.435 299 +301 3 44.47 -121.43 -51.22 0.435 300 +302 3 44.91 -121.4 -51.21 0.435 301 +303 3 46.2 -121.32 -51.17 0.435 302 +304 3 46.85 -121.28 -51.15 0.435 303 +305 3 47.28 -121.25 -51.14 0.435 304 +306 3 48.32 -120.55 -51.04 0.435 305 +307 3 49.37 -120.05 -50.96 0.435 306 +308 3 50.2 -119.37 -50.87 0.435 307 +309 3 50.85 -119.28 -51.23 0.435 308 +310 3 51.28 -119.25 -51.29 0.435 309 +311 3 52.18 -119.37 -51.66 0.435 310 +312 3 53.04 -119.32 -51.64 0.435 311 +313 3 53.92 -119.48 -51.7 0.435 312 +314 3 55.44 -119.59 -51.68 0.435 313 +315 3 56.53 -119.75 -51.67 0.435 314 +316 3 56.98 -119.93 -51.68 0.435 315 +317 3 57.67 -120.29 -52.0 0.435 316 +318 3 58.36 -120.61 -52.62 0.435 317 +319 3 59.04 -121.22 -52.67 0.435 318 +320 3 59.75 -121.78 -53.09 0.435 319 +321 3 60.44 -122.38 -53.14 0.435 320 +322 3 60.89 -122.78 -53.24 0.435 321 +323 3 61.14 -123.19 -53.27 0.435 322 +324 3 61.63 -124.03 -53.35 0.435 323 +325 3 61.88 -124.44 -53.47 0.435 324 +326 3 62.12 -124.84 -53.57 0.435 325 +327 3 62.37 -125.23 -53.83 0.435 326 +328 3 62.83 -125.62 -53.94 0.435 327 +329 3 63.49 -125.8 -54.01 0.435 328 +330 3 63.95 -126.19 -54.04 0.435 329 +331 3 64.4 -126.12 -54.48 0.435 330 +332 3 64.83 -126.07 -54.69 0.435 331 +333 3 65.28 -126.01 -54.98 0.435 332 +334 3 16.54 -88.97 -18.31 0.435 221 +335 3 16.16 -90.07 -18.43 0.435 334 +336 3 16.21 -90.92 -18.52 0.435 335 +337 3 15.45 -92.27 -18.67 0.435 336 +338 3 15.98 -93.94 -18.83 0.435 337 +339 3 16.27 -95.01 -18.94 0.435 338 +340 3 16.3 -95.45 -18.98 0.435 339 +341 3 16.59 -96.44 -19.61 0.435 340 +342 3 15.61 -97.73 -20.37 0.435 341 +343 3 15.72 -97.83 -20.38 0.435 342 +344 3 16.49 -97.63 -20.86 0.325 343 +345 3 16.73 -98.26 -20.85 0.325 344 +346 3 16.76 -98.43 -21.24 0.325 345 +347 3 16.78 -98.35 -22.07 0.325 346 +348 3 17.03 -98.46 -23.05 0.325 347 +349 3 17.29 -98.53 -24.26 0.325 348 +350 3 17.34 -99.17 -24.4 0.325 349 +351 3 17.38 -99.52 -25.11 0.325 350 +352 3 17.44 -100.09 -25.92 0.325 351 +353 3 17.73 -100.78 -27.49 0.325 352 +354 3 17.99 -101.13 -28.05 0.325 353 +355 3 18.03 -101.53 -28.47 0.325 354 +356 3 18.27 -101.19 -29.56 0.325 355 +357 3 18.31 -101.57 -30.05 0.325 356 +358 3 18.35 -102.17 -30.56 0.325 357 +359 3 17.62 -103.88 -31.36 0.325 358 +360 3 17.67 -104.72 -31.51 0.325 359 +361 3 17.74 -105.78 -31.85 0.325 360 +362 3 17.82 -106.54 -32.84 0.325 361 +363 3 18.1 -107.1 -33.56 0.325 362 +364 3 18.15 -107.68 -34.22 0.325 363 +365 3 18.63 -108.29 -34.35 0.325 364 +366 3 18.88 -108.69 -34.54 0.325 365 +367 3 19.12 -109.31 -34.6 0.325 366 +368 3 19.38 -109.94 -34.73 0.325 367 +369 3 19.63 -110.33 -34.99 0.325 368 +370 3 19.72 -111.62 -35.13 0.325 369 +371 3 19.8 -112.89 -35.33 0.325 370 +372 3 19.87 -113.96 -35.44 0.325 371 +373 3 20.12 -114.59 -35.49 0.325 372 +374 3 20.17 -115.45 -35.58 0.325 373 +375 3 20.42 -115.87 -35.62 0.325 374 +376 3 20.49 -116.93 -35.73 0.325 375 +377 3 20.53 -117.58 -35.79 0.325 376 +378 3 20.78 -117.99 -35.91 0.325 377 +379 3 20.81 -118.39 -36.1 0.325 378 +380 3 20.86 -119.02 -36.39 0.325 379 +381 3 20.04 -119.7 -36.63 0.325 380 +382 3 20.13 -120.95 -37.06 0.325 381 +383 3 20.28 -123.02 -37.95 0.325 382 +384 3 20.76 -123.6 -38.44 0.325 383 +385 3 20.82 -124.41 -38.98 0.325 384 +386 3 21.32 -125.22 -39.28 0.325 385 +387 3 21.48 -127.57 -39.59 0.325 386 +388 3 21.13 -129.1 -39.76 0.325 387 +389 3 21.41 -129.93 -39.92 0.325 388 +390 3 21.92 -130.95 -40.23 0.325 389 +391 3 21.98 -131.76 -40.77 0.325 390 +392 3 22.02 -132.37 -41.06 0.325 391 +393 3 22.08 -132.99 -41.43 0.325 392 +394 3 22.11 -133.63 -41.49 0.325 393 +395 3 22.17 -134.24 -41.85 0.325 394 +396 3 22.21 -134.86 -42.22 0.325 395 +397 3 22.28 -135.66 -42.82 0.325 396 +398 3 22.34 -136.47 -43.36 0.325 397 +399 3 22.4 -137.32 -43.52 0.325 398 +400 3 22.04 -138.12 -44.37 0.325 399 +401 3 22.17 -140.04 -44.64 0.325 400 +402 3 22.25 -141.04 -45.41 0.325 401 +403 3 22.3 -141.68 -45.56 0.325 402 +404 3 22.36 -142.74 -45.82 0.325 403 +405 3 22.03 -144.05 -46.03 0.325 404 +406 3 22.08 -144.9 -46.12 0.325 405 +407 3 22.34 -145.24 -46.9 0.325 406 +408 3 22.38 -145.62 -47.47 0.325 407 +409 3 22.41 -146.25 -47.61 0.325 408 +410 3 22.66 -146.67 -47.64 0.325 409 +411 3 22.72 -147.51 -47.88 0.325 410 +412 3 22.75 -147.92 -48.07 0.325 411 +413 3 23.02 -148.53 -48.28 0.325 412 +414 3 23.09 -149.33 -48.96 0.325 413 +415 3 22.74 -150.6 -49.49 0.325 414 +416 3 23.5 -152.26 -49.79 0.325 415 +417 3 23.56 -153.09 -50.1 0.325 416 +418 3 24.1 -154.54 -50.54 0.325 417 +419 3 24.82 -155.53 -51.0 0.325 418 +420 3 25.76 -156.24 -51.96 0.325 419 +421 3 26.72 -156.9 -53.43 0.325 420 +422 3 27.19 -157.23 -54.13 0.325 421 +423 3 27.66 -157.62 -54.31 0.325 422 +424 3 27.91 -157.68 -55.67 0.325 423 +425 3 28.4 -158.01 -56.52 0.325 424 +426 3 29.27 -157.89 -57.1 0.325 425 +427 3 29.94 -157.77 -57.82 0.325 426 +428 3 30.87 -158.02 -59.02 0.325 427 +429 3 31.76 -158.35 -59.49 0.325 428 +430 3 15.84 -97.92 -20.39 0.435 343 +431 3 15.47 -99.02 -20.58 0.435 430 +432 3 15.74 -99.62 -21.02 0.435 431 +433 3 15.79 -100.21 -21.53 0.435 432 +434 3 15.87 -101.24 -22.09 0.435 433 +435 3 15.93 -102.07 -22.39 0.435 434 +436 3 16.17 -102.48 -22.43 0.435 435 +437 3 16.23 -103.34 -22.6 0.435 436 +438 3 16.26 -103.77 -22.64 0.435 437 +439 3 16.74 -104.59 -22.78 0.435 438 +440 3 16.41 -106.11 -22.95 0.435 439 +441 3 15.87 -107.87 -23.14 0.435 440 +442 3 15.91 -108.27 -23.42 0.435 441 +443 3 15.97 -108.84 -24.15 0.435 442 +444 3 16.04 -109.64 -24.83 0.435 443 +445 3 16.08 -110.01 -25.4 0.435 444 +446 3 16.13 -110.6 -26.06 0.435 445 +447 3 16.2 -111.39 -26.74 0.435 446 +448 3 16.25 -112.22 -26.97 0.435 447 +449 3 16.75 -112.77 -27.7 0.435 448 +450 3 16.79 -113.14 -28.34 0.435 449 +451 3 16.81 -113.58 -28.39 0.435 450 +452 3 17.31 -114.61 -28.55 0.435 451 +453 3 17.34 -115.04 -28.68 0.435 452 +454 3 17.41 -115.8 -29.58 0.435 453 +455 3 18.15 -117.04 -29.84 0.435 454 +456 3 18.2 -117.61 -30.5 0.435 455 +457 3 18.48 -118.41 -31.03 0.435 456 +458 3 19.64 -119.41 -31.19 0.435 457 +459 3 19.69 -120.27 -31.28 0.435 458 +460 3 19.75 -120.6 -32.35 0.435 459 +461 3 19.38 -121.68 -32.55 0.435 460 +462 3 19.42 -122.06 -33.05 0.435 461 +463 3 19.05 -122.91 -33.44 0.435 462 +464 3 19.13 -123.95 -33.85 0.435 463 +465 3 19.2 -124.75 -34.54 0.435 464 +466 3 19.48 -125.77 -35.01 0.435 465 +467 3 19.55 -126.6 -35.39 0.435 466 +468 3 19.84 -127.64 -35.57 0.435 467 +469 3 20.17 -129.33 -35.89 0.435 468 +470 3 20.44 -130.14 -36.19 0.435 469 +471 3 20.49 -130.75 -36.71 0.435 470 +472 3 20.99 -131.58 -36.86 0.435 471 +473 3 21.01 -131.78 -36.95 0.435 472 +474 3 21.06 -132.62 -37.04 0.435 473 +475 3 21.11 -132.95 -38.13 0.435 474 +476 3 21.17 -133.49 -39.16 0.435 475 +477 3 21.21 -133.86 -39.8 0.435 476 +478 3 21.51 -134.33 -41.43 0.435 477 +479 3 21.57 -135.14 -42.03 0.435 478 +480 3 21.63 -135.7 -42.84 0.435 479 +481 3 21.68 -136.33 -43.06 0.435 480 +482 3 21.72 -136.69 -43.78 0.435 481 +483 3 21.13 -137.56 -44.03 0.435 482 +484 3 21.39 -138.2 -44.09 0.435 483 +485 3 21.48 -139.48 -44.22 0.435 484 +486 3 21.51 -139.89 -44.49 0.435 485 +487 3 21.55 -140.24 -45.27 0.435 486 +488 3 21.23 -141.71 -46.04 0.435 487 +489 3 20.47 -143.47 -46.24 0.435 488 +490 3 19.27 -145.04 -46.5 0.435 489 +491 3 18.52 -146.8 -46.78 0.435 490 +492 3 16.95 -149.26 -47.07 0.435 491 +493 3 16.61 -150.79 -47.24 0.435 492 +494 3 15.85 -152.55 -47.44 0.435 493 +495 3 15.49 -153.65 -47.56 0.435 494 +496 3 15.13 -154.97 -47.71 0.435 495 +497 3 15.21 -156.25 -47.84 0.435 496 +498 3 14.41 -157.16 -47.95 0.435 497 +499 3 13.66 -158.92 -48.15 0.435 498 +500 3 11.6 -160.56 -48.37 0.435 499 +501 3 9.96 -162.16 -48.57 0.435 500 +502 3 8.77 -163.96 -48.79 0.435 501 +503 3 8.22 -165.49 -48.96 0.435 502 +504 3 7.1 -168.37 -49.28 0.435 503 +505 3 5.65 -172.47 -50.49 0.435 504 +506 3 4.45 -173.98 -51.2 0.435 505 +507 3 2.96 -177.21 -52.48 0.435 506 +508 3 1.37 -179.44 -52.9 0.435 507 +509 3 0.17 -180.72 -53.96 0.435 508 +510 3 -1.46 -182.09 -54.29 0.435 509 +511 3 -2.47 -183.23 -54.43 0.435 510 +512 3 -3.95 -183.96 -54.55 0.435 511 +513 3 -5.18 -184.89 -54.75 0.435 512 +514 3 -6.45 -185.39 -54.83 0.435 513 +515 3 17.85 -69.54 -14.54 0.435 194 +516 3 18.1 -70.12 -15.04 0.435 515 +517 3 18.36 -70.75 -15.1 0.435 516 +518 3 17.99 -71.63 -15.28 0.435 517 +519 3 17.21 -72.96 -15.44 0.435 518 +520 3 17.26 -73.81 -15.52 0.435 519 +521 3 17.3 -74.46 -15.59 0.435 520 +522 3 17.75 -74.86 -15.62 0.435 521 +523 3 18.21 -75.06 -15.63 0.435 522 +524 3 18.65 -75.24 -15.64 0.435 523 +525 3 19.33 -75.63 -15.66 0.435 524 +526 3 19.83 -76.65 -15.98 0.435 525 +527 3 20.35 -77.91 -16.18 0.435 526 +528 3 20.86 -78.94 -16.34 0.435 527 +529 3 20.94 -80.22 -16.47 0.435 528 +530 3 21.02 -81.52 -16.6 0.435 529 +531 3 21.28 -82.15 -16.66 0.435 530 +532 3 21.59 -83.63 -16.81 0.435 531 +533 3 22.11 -84.89 -16.93 0.435 532 +534 3 23.54 -86.95 -17.11 0.435 533 +535 3 24.47 -87.97 -17.19 0.435 534 +536 3 25.18 -89.0 -17.28 0.435 535 +537 3 25.29 -90.5 -17.51 0.435 536 +538 3 25.4 -92.2 -17.69 0.435 537 +539 3 25.45 -93.07 -17.78 0.435 538 +540 3 25.79 -94.98 -17.97 0.435 539 +541 3 25.9 -96.69 -18.14 0.435 540 +542 3 26.39 -97.73 -18.24 0.435 541 +543 3 27.1 -97.72 -19.72 0.435 542 +544 3 27.98 -98.1 -19.73 0.435 543 +545 3 28.66 -98.48 -19.76 0.435 544 +546 3 29.13 -99.12 -19.66 0.435 545 +547 3 29.41 -99.95 -19.74 0.435 546 +548 3 29.9 -101.0 -19.84 0.435 547 +549 3 30.37 -101.4 -19.87 0.435 548 +550 3 30.64 -102.46 -19.97 0.435 549 +551 3 30.91 -103.07 -20.26 0.435 550 +552 3 31.41 -104.1 -20.51 0.435 551 +553 3 31.72 -105.34 -20.85 0.435 552 +554 3 32.0 -106.18 -21.08 0.435 553 +555 3 32.29 -107.2 -21.48 0.435 554 +556 3 32.31 -107.63 -21.52 0.435 555 +557 3 33.25 -108.64 -21.61 0.435 556 +558 3 33.71 -109.26 -21.66 0.435 557 +559 3 34.2 -109.59 -22.44 0.435 558 +560 3 35.38 -111.01 -22.64 0.435 559 +561 3 35.44 -112.09 -22.75 0.435 560 +562 3 35.47 -112.51 -22.86 0.435 561 +563 3 35.97 -113.55 -22.95 0.435 562 +564 3 36.06 -114.84 -23.09 0.435 563 +565 3 36.54 -115.67 -23.16 0.435 564 +566 3 37.22 -116.05 -23.18 0.435 565 +567 3 37.92 -116.67 -23.23 0.435 566 +568 3 39.1 -118.32 -23.37 0.435 567 +569 3 39.39 -119.36 -23.48 0.435 568 +570 3 39.91 -120.84 -23.62 0.435 569 +571 3 39.96 -121.48 -23.68 0.435 570 +572 3 40.69 -122.7 -24.02 0.435 571 +573 3 40.79 -124.2 -24.24 0.435 572 +574 3 41.3 -125.45 -24.44 0.435 573 +575 3 41.8 -126.29 -24.52 0.435 574 +576 3 42.09 -127.54 -24.79 0.435 575 +577 3 42.35 -128.17 -24.85 0.435 576 +578 3 42.42 -129.24 -25.03 0.435 577 +579 3 42.45 -129.66 -25.07 0.435 578 +580 3 43.15 -130.48 -25.14 0.435 579 +581 3 43.61 -130.88 -25.17 0.435 580 +582 3 43.87 -131.51 -25.23 0.435 581 +583 3 44.12 -131.92 -25.27 0.435 582 +584 3 44.85 -133.18 -25.38 0.435 583 +585 3 45.31 -133.78 -25.43 0.435 584 +586 3 45.82 -134.83 -25.53 0.435 585 +587 3 45.84 -135.26 -25.57 0.435 586 +588 3 46.1 -135.88 -25.63 0.435 587 +589 3 46.35 -136.3 -25.67 0.435 588 +590 3 46.64 -137.58 -25.79 0.435 589 +591 3 46.91 -138.42 -25.87 0.435 590 +592 3 47.02 -139.91 -26.1 0.435 591 +593 3 47.7 -140.51 -26.15 0.435 592 +594 3 48.42 -141.54 -26.24 0.435 593 +595 3 48.9 -142.37 -26.32 0.435 594 +596 3 49.19 -143.43 -26.42 0.435 595 +597 3 49.45 -144.07 -26.48 0.435 596 +598 3 49.71 -144.7 -26.54 0.435 597 +599 3 49.74 -145.33 -26.6 0.435 598 +600 3 50.02 -146.18 -26.68 0.435 599 +601 3 50.28 -146.81 -26.74 0.435 600 +602 3 50.55 -147.66 -26.82 0.435 601 +603 3 50.85 -148.93 -26.95 0.435 602 +604 3 50.89 -149.57 -27.01 0.435 603 +605 3 50.94 -150.43 -27.1 0.435 604 +606 3 51.22 -151.28 -27.18 0.435 605 +607 3 51.96 -152.73 -27.31 0.435 606 +608 3 52.44 -153.56 -27.39 0.435 607 +609 3 52.7 -154.19 -27.45 0.435 608 +610 3 52.96 -154.53 -28.3 0.435 609 +611 3 53.44 -155.08 -28.95 0.435 610 +612 3 53.93 -155.42 -29.58 0.435 611 +613 3 54.39 -155.8 -29.83 0.435 612 +614 3 54.64 -156.21 -29.86 0.435 613 +615 3 55.73 -156.35 -30.0 0.435 614 +616 3 56.48 -157.81 -30.14 0.435 615 +617 3 57.44 -159.26 -30.26 0.435 616 +618 3 57.91 -159.86 -30.31 0.435 617 +619 3 58.41 -160.6 -31.36 0.435 618 +620 3 59.36 -161.6 -31.67 0.435 619 +621 3 59.84 -162.17 -32.1 0.435 620 +622 3 60.09 -162.79 -32.23 0.435 621 +623 3 60.84 -163.75 -33.06 0.435 622 +624 3 61.29 -164.14 -33.17 0.435 623 +625 3 61.54 -164.55 -33.21 0.435 624 +626 3 61.77 -164.49 -33.72 0.435 625 +627 3 62.25 -165.08 -34.07 0.435 626 +628 3 62.49 -165.21 -34.76 0.435 627 +629 3 62.98 -165.78 -35.18 0.435 628 +630 3 63.0 -165.68 -36.15 0.435 629 +631 3 63.47 -166.04 -36.71 0.435 630 +632 3 64.15 -166.41 -36.88 0.435 631 +633 3 64.82 -166.8 -36.9 0.435 632 +634 3 65.28 -166.98 -36.98 0.435 633 +635 3 65.96 -167.37 -37.01 0.435 634 +636 3 66.39 -167.55 -37.01 0.435 635 +637 3 27.14 -99.2 -18.37 0.435 542 +638 3 27.21 -100.26 -18.55 0.435 637 +639 3 28.24 -101.99 -20.21 0.435 638 +640 3 27.9 -103.51 -20.38 0.435 639 +641 3 27.98 -104.79 -20.51 0.435 640 +642 3 28.07 -106.08 -20.71 0.435 641 +643 3 27.29 -107.42 -20.87 0.435 642 +644 3 26.91 -108.29 -20.97 0.435 643 +645 3 26.94 -108.73 -21.01 0.435 644 +646 3 27.19 -109.35 -21.07 0.435 645 +647 3 27.49 -110.36 -21.62 0.435 646 +648 3 27.75 -110.71 -22.25 0.435 647 +649 3 28.02 -111.56 -22.33 0.435 648 +650 3 28.3 -112.62 -22.52 0.435 649 +651 3 28.04 -115.2 -22.79 0.435 650 +652 3 28.11 -116.0 -23.55 0.435 651 +653 3 28.21 -117.48 -23.78 0.435 652 +654 3 28.51 -118.98 -23.92 0.435 653 +655 3 28.81 -120.25 -24.05 0.435 654 +656 3 28.91 -121.69 -24.27 0.435 655 +657 3 28.98 -122.77 -24.38 0.435 656 +658 3 29.26 -123.57 -24.75 0.435 657 +659 3 29.33 -124.38 -25.37 0.435 658 +660 3 28.99 -125.9 -25.68 0.435 659 +661 3 29.28 -126.92 -26.16 0.435 660 +662 3 28.94 -127.97 -26.65 0.435 661 +663 3 28.56 -129.07 -26.78 0.435 662 +664 3 27.79 -130.41 -26.93 0.435 663 +665 3 27.44 -131.93 -27.17 0.435 664 +666 3 27.53 -133.2 -27.38 0.435 665 +667 3 27.18 -134.51 -27.52 0.435 666 +668 3 27.25 -135.59 -27.63 0.435 667 +669 3 27.01 -138.39 -27.93 0.435 668 +670 3 27.07 -139.45 -28.19 0.435 669 +671 3 27.18 -140.92 -28.71 0.435 670 +672 3 27.26 -142.21 -28.84 0.435 671 +673 3 26.88 -143.08 -28.94 0.435 672 +674 3 26.51 -144.17 -29.13 0.435 673 +675 3 26.59 -145.25 -29.24 0.435 674 +676 3 26.21 -146.13 -29.34 0.435 675 +677 3 26.47 -146.72 -29.78 0.435 676 +678 3 26.72 -147.12 -29.97 0.435 677 +679 3 26.98 -147.75 -30.03 0.435 678 +680 3 27.23 -148.38 -30.08 0.435 679 +681 3 27.73 -149.21 -30.23 0.435 680 +682 3 28.21 -150.04 -30.3 0.435 681 +683 3 28.51 -151.08 -30.55 0.435 682 +684 3 28.14 -152.15 -30.91 0.435 683 +685 3 28.21 -152.93 -31.66 0.435 684 +686 3 28.97 -154.57 -32.19 0.435 685 +687 3 29.28 -155.61 -32.59 0.435 686 +688 3 29.34 -156.41 -33.13 0.435 687 +689 3 29.42 -157.69 -33.33 0.435 688 +690 3 29.71 -158.74 -33.51 0.435 689 +691 3 29.77 -159.3 -34.32 0.435 690 +692 3 29.84 -160.11 -34.93 0.435 691 +693 3 29.45 -160.72 -35.53 0.435 692 +694 3 29.52 -161.79 -35.71 0.435 693 +695 3 29.58 -162.64 -35.88 0.435 694 +696 3 29.84 -163.27 -35.94 0.435 695 +697 3 29.49 -164.57 -36.15 0.435 696 +698 3 29.52 -165.0 -36.19 0.435 697 +699 3 29.19 -166.49 -36.74 0.435 698 +700 3 29.29 -167.98 -36.96 0.435 699 +701 3 29.34 -168.57 -37.54 0.435 700 +702 3 29.39 -169.41 -37.71 0.435 701 +703 3 29.47 -170.49 -37.82 0.435 702 +704 3 29.13 -171.75 -38.41 0.435 703 +705 3 29.2 -172.79 -38.74 0.435 704 +706 3 29.93 -174.05 -38.85 0.435 705 +707 3 30.43 -174.58 -39.73 0.435 706 +708 3 30.94 -175.59 -40.12 0.435 707 +709 3 31.18 -176.0 -40.23 0.435 708 +710 3 31.7 -176.7 -41.58 0.435 709 +711 3 31.75 -177.3 -42.09 0.435 710 +712 3 31.99 -177.7 -42.2 0.435 711 +713 3 32.23 -178.12 -42.23 0.435 712 +714 3 32.71 -178.72 -42.52 0.435 713 +715 3 32.76 -179.33 -42.8 0.435 714 +716 3 33.22 -179.51 -42.89 0.435 715 +717 3 33.52 -180.76 -43.31 0.435 716 +718 3 33.99 -181.08 -44.01 0.435 717 +719 3 34.43 -180.99 -44.66 0.435 718 +720 3 35.13 -181.58 -44.86 0.435 719 +721 3 35.6 -181.97 -45.04 0.435 720 +722 3 36.07 -182.57 -45.09 0.435 721 +723 3 37.41 -183.12 -45.34 0.435 722 +724 3 38.31 -183.22 -45.94 0.435 723 +725 3 40.08 -183.75 -46.02 0.435 724 +726 3 41.89 -184.9 -46.48 0.435 725 +727 3 42.37 -185.21 -47.25 0.435 726 +728 3 42.86 -185.8 -47.61 0.435 727 +729 3 43.1 -186.2 -47.86 0.435 728 +730 3 43.58 -186.81 -47.91 0.435 729 +731 3 43.85 -187.35 -48.87 0.435 730 +732 3 44.12 -187.97 -49.01 0.435 731 +733 3 1.19 -26.21 -10.83 0.435 163 +734 3 1.24 -27.08 -10.84 0.435 733 +735 3 1.32 -28.35 -10.97 0.435 734 +736 3 1.4 -29.65 -11.1 0.435 735 +737 3 1.71 -30.91 -11.22 0.435 736 +738 3 1.81 -32.63 -11.4 0.435 737 +739 3 1.92 -34.13 -11.55 0.435 738 +740 3 2.02 -35.84 -11.72 0.435 739 +741 3 2.14 -37.77 -11.92 0.435 740 +742 3 2.24 -39.27 -12.07 0.435 741 +743 3 2.76 -40.53 -12.19 0.435 742 +744 3 3.28 -41.79 -12.31 0.435 743 +745 3 3.62 -43.91 -12.52 0.435 744 +746 3 3.88 -44.56 -12.51 0.435 745 +747 3 4.35 -45.15 -12.78 0.435 746 +748 3 4.64 -45.7 -13.67 0.435 747 +749 3 4.9 -46.25 -14.39 0.435 748 +750 3 5.19 -47.3 -14.56 0.435 749 +751 3 5.25 -48.16 -14.65 0.435 750 +752 3 5.3 -49.01 -14.82 0.435 751 +753 3 4.96 -50.32 -14.96 0.435 752 +754 3 5.0 -50.96 -15.1 0.435 753 +755 3 5.51 -51.96 -15.57 0.435 754 +756 3 5.76 -52.6 -15.63 0.435 755 +757 3 6.23 -52.94 -16.18 0.435 756 +758 3 6.77 -54.62 -16.42 0.435 757 +759 3 7.04 -55.24 -16.55 0.435 758 +760 3 7.32 -56.09 -16.71 0.435 759 +761 3 7.56 -56.47 -16.97 0.435 760 +762 3 8.09 -57.95 -17.11 0.435 761 +763 3 8.14 -58.59 -17.17 0.435 762 +764 3 8.17 -59.22 -17.32 0.435 763 +765 3 7.79 -60.11 -17.42 0.435 764 +766 3 7.82 -60.54 -17.46 0.435 765 +767 3 8.1 -61.34 -17.84 0.435 766 +768 3 8.67 -63.46 -18.12 0.435 767 +769 3 9.0 -65.16 -18.28 0.435 768 +770 3 8.68 -66.89 -18.47 0.435 769 +771 3 8.71 -67.3 -18.74 0.435 770 +772 3 9.19 -67.89 -19.09 0.435 771 +773 3 9.45 -68.23 -19.73 0.435 772 +774 3 9.7 -68.85 -20.01 0.435 773 +775 3 9.97 -69.47 -20.14 0.435 774 +776 3 10.21 -69.89 -20.18 0.435 775 +777 3 10.47 -70.5 -20.39 0.435 776 +778 3 10.77 -71.48 -21.24 0.435 777 +779 3 11.56 -73.57 -21.51 0.435 778 +780 3 11.39 -74.44 -21.68 0.435 779 +781 3 11.94 -76.12 -21.84 0.435 780 +782 3 12.29 -78.01 -22.33 0.435 781 +783 3 12.38 -79.26 -22.83 0.435 782 +784 3 12.45 -80.29 -23.24 0.435 783 +785 3 13.21 -81.96 -23.54 0.435 784 +786 3 13.51 -83.01 -23.64 0.435 785 +787 3 13.78 -83.85 -23.8 0.435 786 +788 3 13.81 -84.28 -23.84 0.435 787 +789 3 14.08 -85.11 -24.0 0.435 788 +790 3 14.35 -85.95 -24.15 0.435 789 +791 3 14.39 -86.34 -24.57 0.435 790 +792 3 14.47 -87.1 -25.55 0.435 791 +793 3 14.49 -87.27 -26.09 0.435 792 +794 3 14.53 -87.91 -26.16 0.435 793 +795 3 14.78 -88.01 -27.15 0.435 794 +796 3 15.04 -88.65 -27.21 0.435 795 +797 3 15.54 -89.68 -27.3 0.435 796 +798 3 16.0 -90.09 -27.26 0.435 797 +799 3 17.33 -90.44 -27.26 0.435 798 +800 3 18.92 -91.08 -28.49 0.435 799 +801 3 19.13 -91.08 -28.42 0.435 800 +802 3 19.37 -91.28 -28.43 0.435 801 +803 3 19.81 -91.46 -28.51 0.435 802 +804 3 20.65 -90.97 -28.52 0.435 803 +805 3 21.09 -90.89 -29.03 0.435 804 +806 3 22.36 -90.13 -29.22 0.435 805 +807 3 23.24 -90.25 -29.66 0.435 806 +808 3 23.94 -90.56 -30.5 0.435 807 +809 3 24.38 -90.74 -30.59 0.435 808 +810 3 24.87 -91.04 -31.52 0.435 809 +811 3 25.55 -91.42 -31.76 0.435 810 +812 3 26.45 -92.0 -31.88 0.435 811 +813 3 26.7 -92.14 -32.41 0.435 812 +814 3 28.04 -92.71 -32.44 0.435 813 +815 3 28.72 -93.09 -32.46 0.435 814 +816 3 29.85 -93.61 -33.09 0.435 815 +817 3 30.55 -94.19 -33.44 0.435 816 +818 3 31.43 -94.34 -33.51 0.435 817 +819 3 31.89 -94.7 -33.84 0.435 818 +820 3 32.12 -94.9 -33.93 0.435 819 +821 3 32.36 -94.84 -34.37 0.435 820 +822 3 32.6 -94.99 -34.98 0.435 821 +823 3 33.06 -95.11 -35.59 0.435 822 +824 3 33.53 -95.45 -36.21 0.435 823 +825 3 34.25 -95.93 -37.45 0.435 824 +826 3 35.62 -96.88 -37.97 0.435 825 +827 3 36.73 -97.22 -38.13 0.435 826 +828 3 37.66 -97.74 -38.92 0.435 827 +829 3 38.37 -98.27 -39.63 0.435 828 +830 3 39.27 -98.33 -40.59 0.435 829 +831 3 39.95 -98.72 -40.54 0.435 830 +832 3 40.17 -98.66 -41.05 0.435 831 +833 3 40.19 -98.55 -42.1 0.435 832 +834 3 40.89 -98.84 -43.1 0.435 833 +835 3 41.56 -98.99 -43.4 0.435 834 +836 3 42.03 -99.13 -43.86 0.435 835 +837 3 42.48 -99.52 -43.95 0.435 836 +838 3 43.15 -99.69 -43.96 0.435 837 +839 3 43.58 -99.88 -43.97 0.435 838 +840 3 44.52 -100.65 -44.41 0.435 839 +841 3 45.17 -100.6 -44.39 0.435 840 +842 3 45.64 -101.22 -44.51 0.435 841 +843 3 46.34 -102.03 -44.58 0.435 842 +844 3 46.82 -102.4 -44.99 0.435 843 +845 3 47.94 -102.94 -45.32 0.435 844 +846 3 48.39 -103.12 -45.4 0.435 845 +847 3 49.28 -103.5 -45.41 0.435 846 +848 3 49.71 -103.47 -45.4 0.435 847 +849 3 50.37 -103.37 -45.91 0.435 848 +850 3 50.8 -103.35 -45.89 0.435 849 +851 3 51.26 -103.25 -46.55 0.435 850 +852 3 51.96 -103.25 -48.34 0.435 851 +853 3 52.4 -103.19 -48.7 0.435 852 +854 3 52.84 -103.11 -49.21 0.435 853 +855 3 53.5 -103.03 -49.49 0.435 854 +856 3 53.96 -102.91 -50.37 0.435 855 +857 3 54.84 -103.02 -50.88 0.435 856 +858 3 55.29 -102.93 -51.47 0.435 857 +859 3 55.96 -102.83 -52.11 0.435 858 +860 3 56.41 -102.96 -52.65 0.435 859 +861 3 57.08 -103.12 -52.72 0.435 860 +862 3 57.3 -103.1 -52.79 0.435 861 +863 3 58.16 -103.01 -53.14 0.435 862 +864 3 59.06 -103.11 -53.73 0.435 863 +865 3 59.5 -103.04 -54.16 0.435 864 +866 3 60.15 -103.0 -54.22 0.435 865 +867 3 60.8 -102.94 -54.35 0.435 866 +868 3 60.83 -102.78 -55.85 0.435 867 +869 3 61.08 -102.65 -57.03 0.435 868 +870 3 61.53 -102.56 -57.61 0.435 869 +871 3 62.21 -102.94 -57.71 0.435 870 +872 3 63.12 -103.5 -58.12 0.435 871 +873 3 64.02 -103.55 -59.09 0.435 872 +874 3 64.91 -103.7 -59.23 0.435 873 +875 3 65.36 -103.87 -59.46 0.435 874 +876 3 66.04 -104.26 -59.49 0.435 875 +877 3 66.71 -104.37 -60.01 0.435 876 +878 3 67.4 -104.7 -60.64 0.435 877 +879 3 68.3 -105.05 -61.02 0.435 878 +880 3 68.53 -105.23 -61.12 0.435 879 +881 3 68.77 -105.43 -61.13 0.435 880 +882 3 0.29 -26.4 -9.51 0.435 162 +883 3 -0.93 -27.34 -9.64 0.435 882 +884 3 -1.38 -27.94 -8.27 0.435 883 +885 3 -1.79 -28.43 -7.88 0.435 884 +886 3 -2.19 -28.86 -8.17 0.435 885 +887 3 -2.59 -29.26 -8.82 0.435 886 +888 3 -2.53 -29.84 -9.48 0.435 887 +889 3 -2.92 -30.23 -10.13 0.435 888 +890 3 -3.32 -30.68 -10.26 0.435 889 +891 3 -3.67 -31.43 -11.7 0.435 890 +892 3 -3.13 -32.61 -12.5 0.435 891 +893 3 -3.1 -33.26 -12.56 0.435 892 +894 3 -3.04 -34.11 -12.72 0.435 893 +895 3 -3.41 -35.0 -12.82 0.435 894 +896 3 -4.65 -36.14 -12.97 0.435 895 +897 3 -5.8 -38.58 -13.25 0.435 896 +898 3 -6.98 -40.36 -13.53 0.435 897 +899 3 -8.19 -41.44 -14.43 0.435 898 +900 3 -9.82 -43.0 -15.01 0.435 899 +901 3 -12.12 -44.19 -15.49 0.435 900 +902 3 -13.3 -45.69 -16.34 0.435 901 +903 3 -14.53 -46.62 -16.62 0.435 902 +904 3 -15.3 -47.89 -17.45 0.435 903 +905 3 -16.54 -48.53 -18.37 0.435 904 +906 3 -18.31 -51.16 -19.29 0.435 905 +907 3 -19.43 -53.77 -19.89 0.435 906 +908 3 -20.98 -56.14 -21.08 0.435 907 +909 3 -22.19 -57.71 -21.34 0.435 908 +910 3 -23.77 -59.88 -22.35 0.435 909 +911 3 -25.82 -61.73 -22.67 0.435 910 +912 3 -27.89 -63.13 -22.87 0.435 911 +913 3 -28.48 -63.75 -23.7 0.435 912 +914 3 -29.05 -65.07 -23.77 0.435 913 +915 3 -29.42 -66.17 -23.89 0.435 914 +916 3 -30.22 -67.06 -24.31 0.435 915 +917 3 -30.58 -67.91 -24.63 0.435 916 +918 3 -31.39 -68.78 -25.11 0.435 917 +919 3 -31.81 -68.74 -25.8 0.435 918 +920 3 -32.15 -69.73 -26.97 0.435 919 +921 3 -33.77 -71.56 -27.2 0.435 920 +922 3 -34.1 -72.55 -28.21 0.435 921 +923 3 -35.7 -74.58 -28.53 0.435 922 +924 3 -36.05 -75.31 -30.12 0.435 923 +925 3 -37.0 -77.52 -30.38 0.435 924 +926 3 -38.2 -79.1 -30.57 0.435 925 +927 3 -40.22 -81.37 -30.85 0.435 926 +928 3 -41.35 -83.44 -32.67 0.435 927 +929 3 -42.99 -84.82 -32.93 0.435 928 +930 3 -42.66 -85.7 -34.74 0.435 929 +931 3 -43.7 -86.41 -34.84 0.435 930 +932 3 -44.9 -87.99 -35.03 0.435 931 +933 3 -45.93 -88.91 -35.08 0.435 932 +934 3 -45.88 -89.77 -35.17 0.435 933 +935 3 -47.05 -91.47 -36.28 0.435 934 +936 3 -48.65 -93.25 -36.87 0.435 935 +937 3 -49.03 -93.83 -37.77 0.435 936 +938 3 -49.36 -95.35 -38.01 0.435 937 +939 3 -50.16 -96.19 -38.87 0.435 938 +940 3 -50.49 -97.43 -39.61 0.435 939 +941 3 -50.44 -97.76 -40.62 0.435 940 +942 3 -50.82 -98.39 -41.08 0.435 941 +943 3 -50.75 -98.91 -42.41 0.435 942 +944 3 -51.12 -99.7 -43.4 0.435 943 +945 3 -51.46 -100.75 -43.89 0.435 944 +946 3 -51.15 -101.45 -45.4 0.435 945 +947 3 1.92 -21.67 -8.0 0.54 156 +948 3 1.3 -21.83 -8.86 0.54 947 +949 3 0.89 -21.74 -10.07 0.54 948 +950 3 -0.54 -22.67 -10.35 0.54 949 +951 3 -1.97 -24.01 -10.9 0.435 950 +952 3 -3.24 -24.51 -11.06 0.435 951 +953 3 -4.44 -25.28 -12.75 0.435 952 +954 3 -6.7 -27.13 -13.06 0.435 953 +955 3 -7.53 -27.79 -13.53 0.435 954 +956 3 -8.55 -28.47 -14.0 0.435 955 +957 3 -9.18 -28.93 -14.06 0.435 956 +958 3 -9.63 -28.48 -14.48 0.435 957 +959 3 -10.24 -28.65 -15.41 0.435 958 +960 3 -10.2 -28.69 -17.08 0.435 959 +961 3 -10.58 -29.36 -17.08 0.435 960 +962 3 -11.2 -29.81 -17.45 0.435 961 +963 3 -12.0 -30.67 -18.01 0.435 962 +964 3 -12.74 -32.12 -19.07 0.435 963 +965 3 -13.54 -32.94 -20.01 0.435 964 +966 3 -13.65 -34.57 -20.18 0.435 965 +967 3 -13.84 -35.31 -19.58 0.325 966 +968 3 -13.6 -35.72 -19.61 0.325 967 +969 3 -13.35 -35.6 -20.73 0.435 968 +970 3 -13.31 -36.24 -20.8 0.435 969 +971 3 -13.28 -36.66 -20.84 0.435 970 +972 3 -13.22 -37.74 -20.95 0.435 971 +973 3 -13.19 -38.15 -21.14 0.435 972 +974 3 -13.16 -38.31 -21.61 0.435 973 +975 3 -13.07 -39.6 -21.74 0.435 974 +976 3 -13.42 -40.89 -22.04 0.435 975 +977 3 -13.34 -41.96 -22.21 0.435 976 +978 3 -13.29 -42.81 -22.38 0.435 977 +979 3 -13.67 -43.69 -22.55 0.435 978 +980 3 -13.6 -44.75 -22.81 0.435 979 +981 3 -13.51 -45.73 -23.74 0.435 980 +982 3 -13.44 -46.79 -24.0 0.435 981 +983 3 -13.38 -47.36 -24.67 0.435 982 +984 3 -13.35 -47.76 -25.01 0.435 983 +985 3 -13.3 -48.35 -25.66 0.435 984 +986 3 -13.03 -48.96 -25.87 0.435 985 +987 3 -12.95 -50.24 -26.0 0.435 986 +988 3 -12.88 -51.04 -26.61 0.435 987 +989 3 -12.82 -52.11 -26.79 0.435 988 +990 3 -12.77 -52.45 -27.66 0.435 989 +991 3 -12.72 -53.09 -27.8 0.435 990 +992 3 -12.64 -53.85 -28.86 0.435 991 +993 3 -12.61 -54.26 -28.97 0.435 992 +994 3 -12.55 -55.09 -29.36 0.435 993 +995 3 -12.3 -55.51 -29.47 0.435 994 +996 3 -12.27 -56.13 -29.61 0.435 995 +997 3 -12.16 -57.63 -29.76 0.435 996 +998 3 -12.51 -58.89 -30.5 0.435 997 +999 3 -12.45 -59.46 -31.25 0.435 998 +1000 3 -12.37 -60.47 -31.87 0.435 999 +1001 3 -12.31 -61.32 -32.04 0.435 1000 +1002 3 -11.96 -62.93 -33.09 0.435 1001 +1003 3 -12.28 -64.64 -33.58 0.435 1002 +1004 3 -12.19 -65.64 -34.43 0.435 1003 +1005 3 -11.93 -65.98 -35.15 0.435 1004 +1006 3 -11.88 -66.83 -35.3 0.435 1005 +1007 3 -11.6 -67.65 -35.68 0.435 1006 +1008 3 -11.56 -68.06 -35.87 0.435 1007 +1009 3 -11.03 -69.24 -36.74 0.435 1008 +1010 3 -11.0 -69.89 -36.8 0.435 1009 +1011 3 -10.93 -70.42 -37.91 0.435 1010 +1012 3 -10.87 -71.27 -38.0 0.435 1011 +1013 3 -11.22 -72.58 -38.23 0.435 1012 +1014 3 -11.59 -73.13 -39.42 0.435 1013 +1015 3 -11.54 -73.78 -39.48 0.435 1014 +1016 3 -11.48 -74.32 -40.44 0.435 1015 +1017 3 -11.43 -74.95 -40.66 0.435 1016 +1018 3 -11.41 -75.38 -40.7 0.435 1017 +1019 3 -11.78 -76.22 -41.25 0.435 1018 +1020 3 -11.5 -77.27 -41.42 0.435 1019 +1021 3 -11.44 -78.09 -41.81 0.435 1020 +1022 3 -11.4 -78.47 -42.38 0.435 1021 +1023 3 -11.34 -78.82 -43.24 0.435 1022 +1024 3 -11.29 -79.42 -43.68 0.435 1023 +1025 3 -11.25 -79.74 -44.62 0.435 1024 +1026 3 -11.21 -80.16 -44.81 0.435 1025 +1027 3 -11.18 -80.55 -45.3 0.435 1026 +1028 3 -11.1 -81.07 -46.55 0.435 1027 +1029 3 -10.85 -81.69 -46.61 0.435 1028 +1030 3 -10.58 -82.24 -47.57 0.435 1029 +1031 3 -10.33 -82.63 -47.75 0.435 1030 +1032 3 -10.06 -82.96 -48.61 0.435 1031 +1033 3 -10.02 -83.33 -49.17 0.435 1032 +1034 3 -9.54 -83.94 -49.31 0.435 1033 +1035 3 -9.26 -84.22 -50.69 0.435 1034 +1036 3 -9.02 -84.63 -50.87 0.435 1035 +1037 3 -7.86 -85.83 -51.12 0.435 1036 +1038 3 -6.91 -86.76 -52.02 0.435 1037 +1039 3 -6.65 -87.16 -52.21 0.435 1038 +1040 3 -5.51 -87.86 -53.16 0.435 1039 +1041 3 -5.04 -88.02 -53.38 0.435 1040 +1042 3 -4.78 -88.32 -54.54 0.435 1041 +1043 3 -3.87 -88.91 -54.65 0.435 1042 +1044 3 -2.92 -89.61 -55.69 0.435 1043 +1045 3 -1.81 -90.18 -55.87 0.435 1044 +1046 3 -1.36 -90.36 -55.88 0.435 1045 +1047 3 -0.47 -90.73 -55.97 0.435 1046 +1048 3 -0.04 -90.7 -55.96 0.435 1047 +1049 3 -14.34 -33.86 -20.12 0.435 966 +1050 3 -15.59 -34.79 -20.32 0.435 1049 +1051 3 -17.03 -35.45 -21.18 0.435 1050 +1052 3 -17.43 -36.09 -21.4 0.435 1051 +1053 3 -19.06 -37.71 -21.61 0.435 1052 +1054 3 -19.44 -38.37 -21.77 0.435 1053 +1055 3 -18.95 -39.16 -22.29 0.435 1054 +1056 3 -18.89 -39.68 -23.47 0.435 1055 +1057 3 -19.69 -40.57 -23.73 0.435 1056 +1058 3 -20.74 -41.07 -23.81 0.435 1057 +1059 3 -22.16 -42.12 -25.08 0.435 1058 +1060 3 -23.17 -42.97 -25.79 0.435 1059 +1061 3 -23.96 -43.76 -27.03 0.435 1060 +1062 3 -24.35 -44.14 -27.83 0.435 1061 +1063 3 -25.12 -44.94 -29.14 0.435 1062 +1064 3 -25.92 -45.78 -29.85 0.435 1063 +1065 3 -26.67 -47.29 -30.47 0.435 1064 +1066 3 -27.48 -47.59 -32.17 0.435 1065 +1067 3 -28.26 -48.4 -33.33 0.435 1066 +1068 3 -30.44 -50.98 -35.01 0.435 1067 +1069 3 -31.67 -51.85 -35.81 0.435 1068 +1070 3 -33.3 -53.45 -36.08 0.435 1069 +1071 3 -34.3 -54.0 -37.67 0.435 1070 +1072 3 -35.92 -55.57 -38.25 0.435 1071 +1073 3 -36.72 -56.69 -38.46 0.435 1072 +1074 3 -37.27 -57.67 -39.85 0.435 1073 +1075 3 -38.9 -59.01 -40.48 0.435 1074 +1076 3 -39.67 -60.25 -41.53 0.435 1075 +1077 3 -40.46 -61.34 -41.97 0.435 1076 +1078 3 -41.65 -62.59 -43.26 0.435 1077 +1079 3 -41.78 -63.34 -44.54 0.435 1078 +1080 3 -42.79 -64.47 -44.76 0.435 1079 +1081 3 -43.48 -66.53 -46.35 0.435 1080 +1082 3 -44.25 -68.08 -46.53 0.435 1081 +1083 3 -45.19 -69.45 -46.69 0.435 1082 +1084 3 -46.21 -69.76 -48.41 0.11 1083 +1085 3 -46.16 -70.05 -49.79 0.435 1084 +1086 3 -46.52 -70.41 -50.81 0.435 1085 +1087 3 -47.32 -71.5 -51.32 0.435 1086 +1088 3 -48.1 -72.31 -52.32 0.435 1087 +1089 3 -48.87 -73.56 -53.31 0.435 1088 +1090 3 -49.65 -74.65 -53.81 0.435 1089 +1091 3 -50.69 -75.31 -54.35 0.435 1090 +1092 3 -51.51 -75.99 -54.68 0.435 1091 +1093 3 -53.16 -76.87 -55.56 0.435 1092 +1094 3 -54.83 -77.55 -56.34 0.435 1093 +1095 3 -56.47 -78.89 -57.05 0.435 1094 +1096 3 -56.41 -79.43 -58.15 0.435 1095 +1097 3 -57.64 -80.35 -58.36 0.435 1096 +1098 3 -58.43 -81.42 -59.01 0.435 1097 +1099 3 -58.77 -82.73 -59.24 0.435 1098 +1100 3 -59.17 -83.39 -59.31 0.435 1099 +1101 3 -59.11 -84.02 -59.6 0.435 1100 +1102 3 -59.49 -84.35 -60.78 0.435 1101 +1103 3 -59.87 -85.44 -60.97 0.435 1102 +1104 3 -59.79 -85.95 -62.31 0.435 1103 +1105 3 -45.01 -69.81 -47.02 0.435 1083 +1106 3 -45.76 -71.04 -48.22 0.435 1105 +1107 3 -46.57 -71.93 -48.56 0.435 1106 +1108 3 -46.9 -73.45 -48.8 0.435 1107 +1109 3 -46.61 -73.94 -50.2 0.435 1108 +1110 3 -47.8 -75.72 -50.57 0.435 1109 +1111 3 -48.97 -77.73 -50.72 0.435 1110 +1112 3 -49.89 -80.15 -50.99 0.435 1111 +1113 3 -51.1 -81.45 -51.84 0.435 1112 +1114 3 -51.44 -82.51 -52.4 0.435 1113 +1115 3 -52.65 -84.08 -52.59 0.435 1114 +1116 3 -52.6 -84.93 -52.76 0.435 1115 +1117 3 -53.8 -86.26 -53.3 0.435 1116 +1118 3 -54.76 -87.72 -54.46 0.435 1117 +1119 3 -55.72 -89.71 -54.69 0.435 1118 +1120 3 -56.13 -89.89 -54.87 0.435 1119 +1121 3 -56.75 -90.58 -54.95 0.435 1120 +1122 3 -56.64 -91.74 -56.2 0.435 1121 +1123 3 -57.01 -92.61 -56.53 0.435 1122 +1124 3 -56.95 -93.45 -56.76 0.435 1123 +1125 3 -56.89 -94.29 -57.07 0.435 1124 +1126 3 -56.82 -95.07 -57.83 0.435 1125 +1127 3 -57.44 -95.54 -57.96 0.435 1126 +1128 3 -58.24 -96.66 -58.1 0.435 1127 +1129 3 -59.06 -97.34 -58.27 0.435 1128 +1130 3 -60.27 -98.7 -58.51 0.435 1129 +1131 3 -60.64 -99.57 -58.69 0.435 1130 +1132 3 -61.42 -100.9 -59.07 0.435 1131 +1133 3 -61.78 -101.7 -59.91 0.435 1132 +1134 3 -62.57 -102.81 -60.12 0.435 1133 +1135 3 -63.38 -103.94 -60.25 0.435 1134 +1136 3 -63.29 -105.17 -60.91 0.435 1135 +1137 3 -63.2 -106.17 -61.69 0.435 1136 +1138 3 -63.16 -106.55 -62.18 0.435 1137 +1139 3 -63.11 -107.19 -62.32 0.435 1138 +1140 3 -62.85 -107.82 -62.45 0.435 1139 +1141 3 -63.59 -109.78 -62.75 0.435 1140 +1142 3 -63.96 -110.63 -63.15 0.435 1141 +1143 3 -63.9 -111.46 -63.61 0.435 1142 +1144 3 -63.85 -112.04 -64.27 0.435 1143 +1145 3 -63.82 -112.46 -64.31 0.435 1144 +1146 3 -63.79 -112.88 -64.44 0.435 1145 +1147 3 -63.51 -113.44 -65.16 0.435 1146 +1148 3 -63.43 -114.71 -65.44 0.435 1147 +1149 3 -64.59 -116.93 -65.78 0.435 1148 +1150 3 -64.94 -118.24 -65.92 0.435 1149 +1151 3 -64.89 -119.09 -66.08 0.435 1150 +1152 3 -64.81 -120.12 -66.57 0.435 1151 +1153 3 -64.75 -120.98 -66.65 0.435 1152 +1154 3 -64.7 -121.56 -67.32 0.435 1153 +1155 3 -64.4 -122.83 -67.51 0.435 1154 +1156 3 -64.37 -123.23 -67.77 0.435 1155 +1157 3 -64.09 -124.05 -68.0 0.435 1156 +1158 3 -63.83 -124.69 -68.06 0.435 1157 +1159 3 -63.54 -125.73 -68.31 0.435 1158 +1160 3 -62.83 -126.51 -68.76 0.435 1159 +1161 3 -62.31 -127.49 -69.52 0.435 1160 +1162 3 -62.06 -127.88 -69.71 0.435 1161 +1163 3 -61.59 -128.49 -69.91 0.435 1162 +1164 3 -61.56 -128.88 -70.25 0.435 1163 +1165 3 -61.53 -129.3 -70.37 0.435 1164 +1166 3 -61.26 -129.65 -71.08 0.435 1165 +1167 3 -60.79 -129.98 -71.85 0.435 1166 +1168 3 -60.97 -130.41 -71.9 0.435 1167 +1169 3 -60.92 -130.76 -72.77 0.435 1168 +1170 3 -61.77 -131.24 -72.84 0.435 1169 +1171 3 -61.75 -131.45 -72.93 0.435 1170 +1172 3 -62.09 -131.96 -73.08 0.435 1171 +1173 3 -61.83 -132.58 -73.2 0.435 1172 +1174 3 -61.78 -132.89 -74.36 0.435 1173 +1175 3 -61.51 -133.23 -75.07 0.435 1174 +1176 3 -61.46 -133.78 -76.04 0.435 1175 +1177 3 -61.38 -134.56 -76.87 0.435 1176 +1178 3 -61.11 -134.86 -77.95 0.435 1177 +1179 3 -60.64 -135.46 -78.22 0.435 1178 +1180 3 -60.37 -136.08 -78.36 0.435 1179 +1181 3 -60.14 -136.5 -78.4 0.435 1180 +1182 3 -60.1 -136.91 -78.66 0.435 1181 +1183 3 -59.84 -137.53 -78.8 0.435 1182 +1184 3 8.32 -12.11 -2.64 1.085 8 +1185 3 8.51 -12.22 -1.51 1.085 1184 +1186 3 9.85 -13.04 -1.04 0.65 1185 +1187 3 10.53 -13.65 -1.09 0.65 1186 +1188 3 11.44 -14.25 -0.98 0.65 1187 +1189 3 11.86 -14.57 0.27 0.65 1188 +1190 3 12.51 -14.78 0.57 0.65 1189 +1191 3 12.93 -15.07 1.52 0.65 1190 +1192 3 13.59 -15.27 1.89 0.65 1191 +1193 3 14.04 -15.97 2.58 0.65 1192 +1194 3 14.75 -16.78 2.52 0.65 1193 +1195 3 14.77 -17.22 2.55 0.65 1194 +1196 3 14.87 -17.58 2.52 0.65 1195 +1197 3 14.42 -16.6 1.17 0.65 1196 +1198 3 13.99 -16.86 1.28 0.65 1197 +1199 3 14.06 -17.12 -0.31 0.65 1198 +1200 3 14.3 -17.32 -0.4 0.54 1199 +1201 3 14.16 -18.62 -0.53 0.54 1200 +1202 3 14.22 -19.47 -0.62 0.54 1201 +1203 3 14.25 -20.12 -0.69 0.54 1202 +1204 3 13.88 -21.0 -0.79 0.54 1203 +1205 3 13.07 -21.92 -0.83 0.54 1204 +1206 3 12.23 -22.61 -0.92 0.54 1205 +1207 3 11.87 -23.19 -1.9 0.54 1206 +1208 3 11.94 -23.7 -3.22 0.54 1207 +1209 3 11.56 -24.09 -3.96 0.54 1208 +1210 3 11.64 -24.84 -5.01 0.54 1209 +1211 3 11.7 -25.65 -5.54 0.54 1210 +1212 3 11.34 -26.71 -6.11 0.54 1211 +1213 3 10.13 -28.06 -6.35 0.54 1212 +1214 3 10.21 -29.06 -7.21 0.54 1213 +1215 3 9.41 -29.7 -7.83 0.54 1214 +1216 3 9.03 -30.28 -8.72 0.54 1215 +1217 3 9.07 -30.62 -9.59 0.54 1216 +1218 3 9.11 -31.01 -10.08 0.54 1217 +1219 3 7.78 -33.11 -11.61 0.54 1218 +1220 3 7.79 -33.32 -11.63 0.54 1219 +1221 3 7.81 -34.05 -10.88 0.54 1220 +1222 3 7.39 -34.0 -11.64 0.54 1221 +1223 3 6.59 -34.35 -12.97 0.54 1222 +1224 3 6.2 -34.68 -14.22 0.54 1223 +1225 3 6.28 -35.45 -15.2 0.54 1224 +1226 3 6.78 -35.32 -24.67 0.54 1225 +1227 3 7.25 -35.94 -24.72 0.54 1226 +1228 3 7.55 -37.21 -24.85 0.54 1227 +1229 3 7.16 -37.88 -24.93 0.54 1228 +1230 3 7.22 -37.9 -26.74 0.54 1229 +1231 3 7.25 -38.03 -27.66 0.54 1230 +1232 3 7.08 -38.69 -27.73 0.54 1231 +1233 3 6.89 -39.1 -28.08 0.435 1232 +1234 3 6.09 -40.0 -28.19 0.435 1233 +1235 3 5.95 -41.32 -28.25 0.435 1234 +1236 3 5.55 -41.72 -28.68 0.435 1235 +1237 3 5.18 -42.83 -28.8 0.435 1236 +1238 3 4.82 -43.41 -29.7 0.435 1237 +1239 3 4.46 -44.23 -30.4 0.435 1238 +1240 3 4.51 -44.55 -31.55 0.435 1239 +1241 3 4.56 -44.87 -32.64 0.435 1240 +1242 3 4.62 -45.42 -33.6 0.435 1241 +1243 3 4.24 -46.27 -33.93 0.435 1242 +1244 3 4.28 -46.64 -34.57 0.435 1243 +1245 3 3.95 -47.64 -35.66 0.435 1244 +1246 3 4.01 -48.7 -35.85 0.435 1245 +1247 3 4.06 -49.04 -36.77 0.435 1246 +1248 3 4.12 -49.62 -37.44 0.435 1247 +1249 3 4.19 -50.43 -37.9 0.435 1248 +1250 3 4.24 -51.06 -38.12 0.54 1249 +1251 3 4.29 -51.93 -38.12 0.54 1250 +1252 3 4.3 -52.12 -38.44 0.54 1251 +1253 3 3.94 -52.18 -40.27 0.54 1252 +1254 3 3.99 -52.71 -41.31 0.54 1253 +1255 3 4.07 -53.48 -42.28 0.54 1254 +1256 3 3.73 -54.17 -44.17 0.54 1255 +1257 3 3.41 -55.12 -45.79 0.54 1256 +1258 3 3.08 -56.09 -47.18 0.54 1257 +1259 3 3.13 -56.43 -48.04 0.54 1258 +1260 3 3.21 -56.88 -49.96 0.54 1259 +1261 3 3.27 -56.89 -51.93 0.54 1260 +1262 3 3.32 -57.2 -53.09 0.54 1261 +1263 3 2.93 -57.81 -53.77 0.54 1262 +1264 3 2.57 -58.38 -54.88 0.54 1263 +1265 3 2.23 -59.39 -55.83 0.54 1264 +1266 3 2.28 -60.24 -55.99 0.54 1265 +1267 3 2.37 -60.94 -57.49 0.54 1266 +1268 3 2.65 -61.23 -58.88 0.54 1267 +1269 3 2.71 -61.48 -60.63 0.54 1268 +1270 3 2.81 -62.14 -62.66 0.54 1269 +1271 3 2.44 -62.46 -63.83 0.54 1270 +1272 3 2.5 -63.31 -64.14 0.54 1271 +1273 3 2.53 -63.73 -64.19 0.54 1272 +1274 3 2.18 -64.23 -65.89 0.54 1273 +1275 3 2.23 -65.09 -65.98 0.54 1274 +1276 3 2.71 -65.71 -66.03 0.54 1275 +1277 3 2.98 -66.26 -66.77 0.54 1276 +1278 3 3.05 -66.78 -68.1 0.54 1277 +1279 3 3.09 -67.43 -68.16 0.54 1278 +1280 3 3.14 -68.02 -68.53 0.54 1279 +1281 3 3.21 -68.84 -69.06 0.54 1280 +1282 3 2.8 -69.29 -69.2 0.54 1281 +1283 3 2.41 -69.69 -69.77 0.54 1282 +1284 3 2.04 -70.31 -70.38 0.54 1283 +1285 3 2.09 -70.87 -71.26 0.54 1284 +1286 3 2.14 -71.19 -72.35 0.54 1285 +1287 3 2.21 -71.98 -72.95 0.54 1286 +1288 3 1.44 -73.0 -74.13 0.54 1287 +1289 3 1.5 -73.26 -75.82 0.54 1288 +1290 3 1.59 -74.0 -77.03 0.54 1289 +1291 3 1.22 -74.57 -78.14 0.54 1290 +1292 3 1.26 -75.21 -78.21 0.54 1291 +1293 3 0.89 -75.54 -79.38 0.54 1292 +1294 3 0.95 -76.11 -80.2 0.54 1293 +1295 3 0.54 -76.56 -80.32 0.54 1294 +1296 3 0.61 -77.6 -80.73 0.54 1295 +1297 3 0.67 -78.19 -81.39 0.54 1296 +1298 3 0.71 -78.8 -81.69 0.54 1297 +1299 3 0.76 -79.44 -81.82 0.54 1298 +1300 3 1.02 -80.06 -81.96 0.54 1299 +1301 3 1.5 -80.63 -82.53 0.54 1300 +1302 3 1.78 -81.47 -82.61 0.54 1301 +1303 3 1.87 -82.96 -82.84 0.54 1302 +1304 3 2.12 -83.37 -82.88 0.54 1303 +1305 3 2.61 -84.17 -83.25 0.54 1304 +1306 3 3.32 -84.96 -83.62 0.54 1305 +1307 3 4.04 -85.73 -84.13 0.54 1306 +1308 3 4.73 -86.33 -84.25 0.54 1307 +1309 3 6.52 -87.29 -84.31 0.54 1308 +1310 3 7.42 -87.67 -84.33 0.54 1309 +1311 3 8.31 -88.03 -84.42 0.54 1310 +1312 3 9.43 -88.61 -84.46 0.54 1311 +1313 3 10.76 -88.96 -84.46 0.54 1312 +1314 3 11.42 -89.13 -84.46 0.54 1313 +1315 3 12.28 -89.07 -84.44 0.54 1314 +1316 3 12.9 -88.61 -84.37 0.54 1315 +1317 3 13.54 -88.58 -84.36 0.54 1316 +1318 3 7.3 -38.67 -27.79 0.54 1232 +1319 3 8.0 -39.48 -27.86 0.54 1318 +1320 3 9.16 -40.13 -29.26 0.54 1319 +1321 3 9.84 -40.51 -29.36 0.54 1320 +1322 3 10.54 -40.82 -30.27 0.54 1321 +1323 3 11.03 -41.62 -30.57 0.54 1322 +1324 3 11.98 -42.31 -31.68 0.54 1323 +1325 3 12.23 -42.17 -32.93 0.54 1324 +1326 3 12.91 -42.52 -33.41 0.54 1325 +1327 3 13.55 -42.48 -33.39 0.54 1326 +1328 3 14.65 -42.34 -34.1 0.54 1327 +1329 3 15.58 -43.13 -34.24 0.54 1328 +1330 3 16.28 -43.39 -35.45 0.54 1329 +1331 3 16.74 -43.79 -35.48 0.54 1330 +1332 3 17.21 -44.14 -36.04 0.54 1331 +1333 3 17.9 -44.42 -37.11 0.54 1332 +1334 3 18.62 -45.2 -37.62 0.54 1333 +1335 3 18.89 -45.26 -38.9 0.54 1334 +1336 3 19.39 -46.04 -39.57 0.54 1335 +1337 3 20.11 -46.46 -41.26 0.54 1336 +1338 3 21.29 -47.68 -41.43 0.54 1337 +1339 3 21.78 -47.92 -43.03 0.54 1338 +1340 3 22.25 -48.52 -43.23 0.54 1339 +1341 3 22.99 -49.5 -43.84 0.54 1340 +1342 3 23.7 -50.24 -44.58 0.54 1341 +1343 3 24.4 -50.84 -44.78 0.54 1342 +1344 3 25.1 -51.65 -44.91 0.54 1343 +1345 3 26.05 -52.61 -45.59 0.54 1344 +1346 3 27.18 -53.39 -45.65 0.54 1345 +1347 3 27.89 -54.21 -45.72 0.54 1346 +1348 3 28.39 -54.96 -46.62 0.54 1347 +1349 3 29.33 -55.97 -46.77 0.54 1348 +1350 3 30.26 -56.99 -46.85 0.54 1349 +1351 3 31.22 -57.92 -47.83 0.54 1350 +1352 3 31.7 -58.74 -47.97 0.54 1351 +1353 3 31.97 -59.37 -48.03 0.54 1352 +1354 3 32.25 -60.15 -48.64 0.54 1353 +1355 3 32.5 -60.52 -49.13 0.54 1354 +1356 3 32.99 -61.35 -49.27 0.54 1355 +1357 3 33.25 -61.74 -49.61 0.54 1356 +1358 3 33.49 -62.11 -50.02 0.54 1357 +1359 3 33.52 -62.53 -50.13 0.54 1358 +1360 3 33.79 -63.37 -50.3 0.54 1359 +1361 3 33.81 -63.54 -50.68 0.54 1360 +1362 3 15.23 -17.86 2.72 0.65 1196 +1363 3 15.26 -18.31 2.82 0.65 1362 +1364 3 15.74 -18.94 2.92 0.65 1363 +1365 3 16.41 -19.35 3.12 0.65 1364 +1366 3 16.84 -19.57 3.41 0.65 1365 +1367 3 18.16 -20.22 4.13 0.65 1366 +1368 3 18.83 -20.39 4.13 0.65 1367 +1369 3 19.7 -20.81 4.56 0.65 1368 +1370 3 21.0 -21.01 5.17 0.65 1369 +1371 3 22.34 -21.59 5.21 0.65 1370 +1372 3 23.65 -21.71 5.23 0.65 1371 +1373 3 24.79 -22.51 5.18 0.65 1372 +1374 3 25.71 -23.3 5.12 0.65 1373 +1375 3 26.39 -23.92 5.07 0.65 1374 +1376 3 27.29 -24.3 5.13 0.65 1375 +1377 3 28.58 -24.22 5.17 0.65 1376 +1378 3 29.47 -24.37 5.18 0.65 1377 +1379 3 30.55 -24.53 5.19 0.65 1378 +1380 3 31.88 -24.88 5.18 0.65 1379 +1381 3 32.55 -25.26 5.16 0.65 1380 +1382 3 33.22 -25.66 5.28 0.65 1381 +1383 3 33.86 -25.94 7.07 0.435 1382 +1384 3 34.52 -26.12 7.15 0.435 1383 +1385 3 36.08 -26.67 7.13 0.435 1384 +1386 3 36.29 -26.78 7.12 0.435 1385 +1387 3 37.03 -27.74 6.43 0.11 1386 +1388 3 38.98 -27.86 6.69 0.435 1387 +1389 3 41.2 -28.59 6.67 0.435 1388 +1390 3 43.79 -28.43 6.74 0.435 1389 +1391 3 45.55 -28.75 6.75 0.435 1390 +1392 3 47.55 -29.5 6.72 0.435 1391 +1393 3 49.35 -30.68 6.64 0.435 1392 +1394 3 50.06 -31.49 6.58 0.435 1393 +1395 3 51.41 -32.28 6.53 0.435 1394 +1396 3 53.25 -33.34 5.4 0.435 1395 +1397 3 55.69 -34.04 5.32 0.435 1396 +1398 3 56.61 -34.3 4.11 0.435 1397 +1399 3 58.36 -34.38 3.92 0.435 1398 +1400 3 59.27 -34.97 3.8 0.435 1399 +1401 3 59.67 -35.31 5.2 0.435 1400 +1402 3 60.55 -35.51 5.65 0.435 1401 +1403 3 60.99 -35.99 6.37 0.435 1402 +1404 3 62.29 -36.17 6.91 0.435 1403 +1405 3 62.7 -36.22 7.67 0.435 1404 +1406 3 63.38 -36.86 7.84 0.435 1405 +1407 3 65.15 -37.18 7.85 0.435 1406 +1408 3 66.24 -37.56 8.07 0.435 1407 +1409 3 68.62 -37.67 8.57 0.435 1408 +1410 3 71.21 -37.53 8.79 0.435 1409 +1411 3 73.12 -37.0 8.96 0.435 1410 +1412 3 74.0 -37.17 9.05 0.435 1411 +1413 3 75.1 -37.57 9.41 0.435 1412 +1414 3 76.23 -38.4 9.8 0.435 1413 +1415 3 76.9 -39.1 10.73 0.435 1414 +1416 3 77.35 -39.53 10.98 0.435 1415 +1417 3 78.68 -40.13 11.26 0.435 1416 +1418 3 80.02 -40.73 11.53 0.435 1417 +1419 3 81.14 -41.53 11.55 0.435 1418 +1420 3 81.83 -42.14 11.66 0.435 1419 +1421 3 83.41 -43.14 11.66 0.435 1420 +1422 3 84.99 -44.12 11.6 0.435 1421 +1423 3 85.89 -44.71 11.64 0.435 1422 +1424 3 86.81 -45.55 11.94 0.435 1423 +1425 3 87.91 -45.93 12.01 0.435 1424 +1426 3 88.35 -46.11 12.0 0.435 1425 +1427 3 90.36 -46.86 12.04 0.435 1426 +1428 3 91.23 -46.81 12.07 0.435 1427 +1429 3 92.09 -46.76 12.09 0.435 1428 +1430 3 92.71 -46.29 12.16 0.435 1429 +1431 3 93.33 -45.81 12.22 0.435 1430 +1432 3 94.6 -45.31 12.3 0.435 1431 +1433 3 97.19 -45.15 12.38 0.435 1432 +1434 3 98.73 -45.48 12.38 0.435 1433 +1435 3 99.88 -46.28 12.33 0.435 1434 +1436 3 101.02 -47.31 12.4 0.435 1435 +1437 3 101.92 -47.88 12.36 0.435 1436 +1438 3 102.84 -48.7 12.38 0.435 1437 +1439 3 103.49 -48.88 12.38 0.435 1438 +1440 3 104.82 -49.22 12.37 0.435 1439 +1441 3 105.45 -49.28 13.29 0.435 1440 +1442 3 106.54 -49.46 13.59 0.435 1441 +1443 3 106.97 -49.69 13.95 0.435 1442 +1444 3 108.06 -49.88 14.41 0.435 1443 +1445 3 108.76 -50.45 14.0 0.435 1444 +1446 3 109.22 -50.33 13.12 0.435 1445 +1447 3 110.35 -50.57 11.98 0.435 1446 +1448 3 110.39 -50.38 10.2 0.435 1447 +1449 3 111.7 -50.24 9.64 0.435 1448 +1450 3 114.97 -50.22 9.27 0.435 1449 +1451 3 116.93 -50.28 9.01 0.435 1450 +1452 3 118.26 -50.1 8.07 0.435 1451 +1453 3 119.16 -50.45 7.84 0.435 1452 +1454 3 120.53 -51.12 6.66 0.435 1453 +1455 3 121.21 -51.49 6.42 0.435 1454 +1456 3 36.99 -27.48 7.06 0.435 1386 +1457 3 39.19 -28.0 7.13 0.435 1456 +1458 3 40.11 -28.02 5.79 0.435 1457 +1459 3 41.83 -27.92 5.93 0.435 1458 +1460 3 43.56 -27.82 5.98 0.435 1459 +1461 3 45.3 -27.94 6.08 0.435 1460 +1462 3 46.2 -28.3 6.06 0.435 1461 +1463 3 47.24 -27.81 6.07 0.435 1462 +1464 3 48.79 -28.14 6.07 0.435 1463 +1465 3 50.79 -28.87 6.04 0.435 1464 +1466 3 51.7 -29.47 6.0 0.435 1465 +1467 3 52.63 -30.48 5.84 0.435 1466 +1468 3 53.59 -31.93 5.71 0.435 1467 +1469 3 54.56 -33.37 5.58 0.435 1468 +1470 3 55.27 -34.4 5.49 0.435 1469 +1471 3 56.68 -36.05 5.36 0.435 1470 +1472 3 56.93 -36.67 5.3 0.435 1471 +1473 3 57.61 -37.03 4.83 0.11 1472 +1474 3 58.07 -37.48 5.39 0.435 1473 +1475 3 58.71 -37.46 5.56 0.435 1474 +1476 3 59.14 -37.43 5.57 0.435 1475 +1477 3 59.6 -37.83 5.47 0.435 1476 +1478 3 60.07 -38.23 5.44 0.435 1477 +1479 3 60.75 -38.3 4.47 0.435 1478 +1480 3 61.01 -38.64 3.76 0.435 1479 +1481 3 61.69 -38.7 2.57 0.435 1480 +1482 3 62.17 -39.07 2.17 0.435 1481 +1483 3 62.41 -39.2 1.55 0.435 1482 +1484 3 63.11 -39.73 0.83 0.435 1483 +1485 3 63.59 -40.08 0.28 0.435 1484 +1486 3 64.51 -40.57 -0.79 0.435 1485 +1487 3 65.22 -41.38 -0.86 0.435 1486 +1488 3 65.7 -41.71 -1.55 0.435 1487 +1489 3 65.1 -42.41 -1.57 0.435 1488 +1490 3 65.75 -42.58 -1.57 0.435 1489 +1491 3 66.87 -43.16 -1.52 0.435 1490 +1492 3 68.43 -43.72 -1.55 0.435 1491 +1493 3 69.09 -43.89 -1.55 0.435 1492 +1494 3 69.53 -44.07 -1.64 0.435 1493 +1495 3 70.44 -44.4 -2.1 0.435 1494 +1496 3 70.68 -44.27 -3.14 0.435 1495 +1497 3 71.39 -44.77 -4.3 0.435 1496 +1498 3 72.08 -44.86 -5.13 0.435 1497 +1499 3 72.74 -44.74 -5.92 0.435 1498 +1500 3 73.22 -44.81 -6.9 0.435 1499 +1501 3 73.93 -45.61 -7.34 0.435 1500 +1502 3 74.66 -46.32 -8.31 0.435 1501 +1503 3 75.14 -47.14 -8.53 0.435 1502 +1504 3 75.62 -47.72 -8.95 0.435 1503 +1505 3 76.31 -48.32 -9.0 0.435 1504 +1506 3 76.83 -48.8 -10.39 0.435 1505 +1507 3 77.29 -49.4 -10.52 0.435 1506 +1508 3 77.76 -50.02 -10.58 0.435 1507 +1509 3 78.48 -50.78 -11.24 0.435 1508 +1510 3 78.76 -51.05 -12.61 0.435 1509 +1511 3 79.23 -51.67 -12.66 0.435 1510 +1512 3 79.93 -51.94 -13.81 0.435 1511 +1513 3 80.39 -52.13 -13.89 0.435 1512 +1514 3 81.11 -52.88 -14.55 0.435 1513 +1515 3 81.8 -53.47 -14.75 0.435 1514 +1516 3 82.89 -53.59 -14.97 0.435 1515 +1517 3 83.35 -53.98 -15.22 0.435 1516 +1518 3 84.06 -54.24 -16.43 0.435 1517 +1519 3 84.98 -54.79 -16.92 0.435 1518 +1520 3 85.42 -54.7 -17.44 0.435 1519 +1521 3 85.9 -54.75 -18.78 0.435 1520 +1522 3 86.41 -55.49 -19.75 0.435 1521 +1523 3 86.91 -56.0 -20.84 0.435 1522 +1524 3 86.98 -56.5 -22.18 0.435 1523 +1525 3 87.23 -56.89 -22.52 0.435 1524 +1526 3 87.26 -57.06 -23.06 0.435 1525 +1527 3 87.75 -57.85 -23.51 0.435 1526 +1528 3 88.01 -58.19 -24.21 0.435 1527 +1529 3 88.48 -58.57 -24.46 0.435 1528 +1530 3 88.5 -58.7 -25.31 0.435 1529 +1531 3 88.77 -59.33 -25.37 0.435 1530 +1532 3 89.26 -59.61 -26.59 0.435 1531 +1533 3 89.75 -59.87 -27.96 0.435 1532 +1534 3 90.42 -60.23 -28.21 0.435 1533 +1535 3 91.17 -61.15 -29.42 0.435 1534 +1536 3 91.68 -62.15 -29.96 0.435 1535 +1537 3 92.39 -62.96 -30.03 0.435 1536 +1538 3 92.39 -62.95 -30.17 0.435 1537 +1539 3 92.4 -62.89 -30.77 0.435 1538 +1540 3 92.44 -63.28 -31.19 0.435 1539 +1541 3 92.48 -63.67 -31.6 0.435 1540 +1542 3 92.71 -63.56 -32.57 0.435 1541 +1543 3 92.94 -63.74 -32.73 0.435 1542 +1544 3 93.2 -63.88 -33.5 0.435 1543 +1545 3 93.43 -64.01 -34.11 0.435 1544 +1546 3 93.9 -64.14 -34.71 0.435 1545 +1547 3 94.13 -64.27 -35.24 0.435 1546 +1548 3 94.6 -64.44 -35.55 0.435 1547 +1549 3 94.81 -64.42 -35.63 0.435 1548 +1550 3 95.05 -64.57 -36.16 0.435 1549 +1551 3 95.95 -64.93 -36.33 0.435 1550 +1552 3 96.39 -65.11 -36.33 0.435 1551 +1553 3 96.86 -65.23 -37.09 0.435 1552 +1554 3 97.54 -65.56 -37.56 0.435 1553 +1555 3 98.22 -65.7 -38.01 0.435 1554 +1556 3 98.68 -65.8 -38.83 0.435 1555 +1557 3 99.39 -66.07 -39.98 0.435 1556 +1558 3 100.51 -66.64 -40.08 0.435 1557 +1559 3 100.73 -66.62 -40.16 0.435 1558 +1560 3 100.97 -66.75 -40.84 0.435 1559 +1561 3 101.22 -66.64 -41.88 0.435 1560 +1562 3 101.88 -66.51 -42.67 0.435 1561 +1563 3 102.11 -66.42 -43.41 0.435 1562 +1564 3 102.98 -66.35 -43.54 0.435 1563 +1565 3 103.64 -66.26 -44.04 0.435 1564 +1566 3 104.3 -66.18 -44.47 0.435 1565 +1567 3 105.4 -66.07 -44.81 0.435 1566 +1568 3 106.04 -66.02 -44.79 0.435 1567 +1569 3 106.7 -65.93 -45.3 0.435 1568 +1570 3 107.35 -65.88 -45.35 0.435 1569 +1571 3 108.21 -65.31 -46.02 0.435 1570 +1572 3 108.86 -65.26 -46.23 0.435 1571 +1573 3 57.45 -37.93 5.18 0.435 1472 +1574 3 58.41 -39.38 5.05 0.435 1573 +1575 3 60.03 -41.0 4.92 0.435 1574 +1576 3 61.15 -41.56 4.74 0.435 1575 +1577 3 62.73 -42.29 4.33 0.435 1576 +1578 3 64.53 -43.26 4.27 0.435 1577 +1579 3 65.45 -43.49 2.91 0.435 1578 +1580 3 66.15 -43.82 2.29 0.435 1579 +1581 3 66.59 -43.97 1.91 0.435 1580 +1582 3 67.75 -44.47 1.14 0.435 1581 +1583 3 68.43 -44.78 0.44 0.435 1582 +1584 3 69.98 -45.06 -0.15 0.435 1583 +1585 3 70.49 -45.56 -1.39 0.435 1584 +1586 3 71.18 -46.16 -1.43 0.435 1585 +1587 3 71.43 -46.25 -2.57 0.435 1586 +1588 3 71.94 -46.75 -3.67 0.435 1587 +1589 3 72.45 -48.01 -3.86 0.435 1588 +1590 3 72.46 -48.21 -3.96 0.435 1589 +1591 3 73.2 -49.67 -4.09 0.435 1590 +1592 3 73.29 -50.15 -5.72 0.435 1591 +1593 3 73.79 -51.15 -6.19 0.435 1592 +1594 3 74.07 -51.95 -6.72 0.435 1593 +1595 3 74.61 -53.11 -7.8 0.435 1594 +1596 3 74.89 -53.91 -8.33 0.435 1595 +1597 3 75.4 -54.95 -8.5 0.435 1596 +1598 3 75.71 -56.18 -9.15 0.435 1597 +1599 3 75.77 -57.02 -9.3 0.435 1598 +1600 3 76.27 -58.05 -9.55 0.435 1599 +1601 3 76.8 -59.28 -9.97 0.435 1600 +1602 3 77.35 -60.91 -10.66 0.435 1601 +1603 3 77.43 -62.18 -10.86 0.435 1602 +1604 3 77.03 -62.62 -11.06 0.435 1603 +1605 3 77.09 -62.94 -12.23 0.435 1604 +1606 3 77.37 -63.69 -13.21 0.435 1605 +1607 3 77.43 -64.54 -13.29 0.435 1606 +1608 3 77.99 -66.44 -13.48 0.435 1607 +1609 3 78.69 -67.26 -13.61 0.435 1608 +1610 3 79.22 -68.19 -14.75 0.435 1609 +1611 3 79.5 -69.25 -14.86 0.435 1610 +1612 3 33.53 -26.95 5.16 0.435 1382 +1613 3 33.0 -28.91 4.94 0.435 1612 +1614 3 33.95 -30.35 4.81 0.435 1613 +1615 3 34.47 -31.4 4.72 0.435 1614 +1616 3 35.16 -31.81 4.69 0.435 1615 +1617 3 35.41 -31.89 3.4 0.435 1616 +1618 3 36.91 -31.37 3.49 0.435 1617 +1619 3 37.35 -31.51 3.11 0.435 1618 +1620 3 38.63 -31.0 3.12 0.435 1619 +1621 3 39.75 -31.35 3.04 0.435 1620 +1622 3 41.08 -31.37 1.86 0.435 1621 +1623 3 42.41 -31.44 1.28 0.435 1622 +1624 3 44.82 -31.65 0.56 0.435 1623 +1625 3 46.34 -31.51 0.16 0.435 1624 +1626 3 47.45 -31.38 -0.39 0.435 1625 +1627 3 48.32 -31.53 -0.46 0.435 1626 +1628 3 49.9 -31.99 -1.45 0.435 1627 +1629 3 51.03 -32.55 -1.64 0.435 1628 +1630 3 52.16 -33.1 -1.82 0.435 1629 +1631 3 52.62 -33.49 -2.0 0.435 1630 +1632 3 52.66 -33.84 -2.86 0.435 1631 +1633 3 53.13 -34.45 -2.91 0.435 1632 +1634 3 53.41 -35.28 -3.22 0.435 1633 +1635 3 53.66 -35.67 -3.48 0.435 1634 +1636 3 54.13 -36.29 -3.53 0.435 1635 +1637 3 54.61 -36.89 -3.66 0.435 1636 +1638 3 56.82 -37.37 -4.03 0.435 1637 +1639 3 57.92 -37.2 -4.97 0.435 1638 +1640 3 58.82 -37.28 -5.78 0.435 1639 +1641 3 60.17 -37.78 -6.33 0.435 1640 +1642 3 61.29 -37.82 -7.44 0.435 1641 +1643 3 62.84 -37.83 -8.53 0.435 1642 +1644 3 63.31 -37.95 -9.14 0.435 1643 +1645 3 63.99 -38.31 -9.39 0.435 1644 +1646 3 64.7 -38.82 -10.33 0.435 1645 +1647 3 65.4 -39.36 -11.12 0.435 1646 +1648 3 66.36 -40.3 -11.94 0.435 1647 +1649 3 68.16 -41.26 -12.08 0.435 1648 +1650 3 35.47 -33.7 4.5 0.435 1616 +1651 3 35.98 -34.75 4.41 0.435 1650 +1652 3 36.08 -36.25 4.25 0.435 1651 +1653 3 36.6 -37.72 4.11 0.435 1652 +1654 3 36.73 -39.87 3.9 0.435 1653 +1655 3 36.49 -42.68 3.6 0.435 1654 +1656 3 36.15 -44.21 3.43 0.435 1655 +1657 3 36.21 -45.28 3.32 0.435 1656 +1658 3 36.71 -46.1 3.25 0.435 1657 +1659 3 37.21 -47.15 3.15 0.435 1658 +1660 3 37.7 -48.2 3.06 0.435 1659 +1661 3 37.32 -48.87 2.98 0.435 1660 +1662 3 36.54 -50.42 2.8 0.435 1661 +1663 3 36.67 -52.56 2.65 0.435 1662 +1664 3 36.39 -54.73 2.42 0.435 1663 +1665 3 36.73 -56.64 2.23 0.435 1664 +1666 3 36.95 -57.17 3.09 0.435 1665 +1667 3 37.01 -58.52 3.77 0.435 1666 +1668 3 37.3 -59.02 2.3 0.435 1667 +1669 3 37.0 -60.16 0.6 0.435 1668 +1670 3 37.08 -61.43 0.23 0.435 1669 +1671 3 37.42 -63.04 -0.67 0.435 1670 +1672 3 38.13 -63.82 -1.18 0.435 1671 +1673 3 38.39 -64.14 -2.12 0.435 1672 +1674 3 38.67 -64.98 -2.27 0.435 1673 +1675 3 39.16 -65.8 -2.42 0.435 1674 +1676 3 39.19 -66.23 -2.47 0.435 1675 +1677 3 39.27 -67.51 -2.6 0.435 1676 +1678 3 39.32 -68.36 -2.68 0.435 1677 +1679 3 39.38 -68.96 -3.27 0.435 1678 +1680 3 40.09 -69.76 -3.41 0.435 1679 +1681 3 41.05 -71.22 -3.54 0.435 1680 +1682 3 41.35 -71.91 -5.03 0.435 1681 +1683 3 41.62 -72.74 -5.26 0.435 1682 +1684 3 41.69 -73.81 -5.37 0.435 1683 +1685 3 41.79 -74.76 -6.75 0.435 1684 +1686 3 41.85 -75.61 -6.83 0.435 1685 +1687 3 42.38 -77.3 -6.99 0.435 1686 +1688 3 42.66 -78.13 -7.07 0.435 1687 +1689 3 42.93 -78.99 -7.16 0.435 1688 +1690 3 43.39 -79.39 -7.27 0.435 1689 +1691 3 43.45 -79.68 -8.65 0.435 1690 +1692 3 43.56 -81.09 -9.55 0.435 1691 +1693 3 43.91 -83.0 -9.74 0.435 1692 +1694 3 44.16 -83.62 -10.02 0.435 1693 +1695 3 44.45 -84.39 -10.78 0.435 1694 +1696 3 44.53 -85.13 -12.05 0.435 1695 +1697 3 44.61 -86.18 -12.24 0.435 1696 +1698 3 44.67 -86.73 -13.2 0.435 1697 +1699 3 44.79 -88.14 -14.31 0.435 1698 +1700 3 44.89 -89.37 -15.04 0.435 1699 +1701 3 45.42 -90.54 -15.91 0.435 1700 +1702 3 45.47 -91.39 -15.99 0.435 1701 +1703 3 45.57 -92.86 -16.59 0.435 1702 +1704 3 46.01 -92.83 -16.66 0.435 1703 +1705 3 46.53 -94.07 -16.78 0.435 1704 +1706 3 46.87 -95.99 -16.97 0.435 1705 +1707 3 46.12 -97.97 -17.19 0.435 1706 +1708 3 46.2 -99.25 -17.32 0.435 1707 +1709 3 47.16 -100.23 -17.85 0.435 1708 +1710 3 48.5 -100.77 -18.18 0.435 1709 +1711 3 49.42 -101.57 -18.24 0.435 1710 +1712 3 49.94 -102.28 -19.35 0.435 1711 +1713 3 49.98 -102.64 -20.07 0.435 1712 +1714 3 49.19 -103.97 -20.37 0.435 1713 +1715 3 49.26 -105.04 -20.55 0.435 1714 +1716 3 49.12 -105.91 -20.73 0.435 1715 +1717 3 49.18 -106.2 -22.11 0.435 1716 +1718 3 48.81 -106.52 -23.51 0.435 1717 +1719 3 48.86 -107.11 -24.1 0.435 1718 +1720 3 48.9 -106.93 -25.89 0.435 1719 +1721 3 48.95 -107.26 -26.89 0.435 1720 +1722 3 48.57 -107.9 -27.05 0.435 1721 +1723 3 48.61 -108.28 -27.69 0.435 1722 +1724 3 48.22 -108.89 -28.29 0.435 1723 +1725 3 48.26 -109.26 -28.86 0.435 1724 +1726 3 48.75 -109.87 -28.98 0.435 1725 +1727 3 48.85 -111.32 -29.66 0.435 1726 +1728 3 48.94 -112.04 -31.08 0.435 1727 +1729 3 49.19 -112.14 -32.07 0.435 1728 +1730 3 49.25 -112.99 -32.23 0.435 1729 +1731 3 49.3 -113.84 -32.39 0.435 1730 +1732 3 49.33 -114.26 -32.44 0.435 1731 +1733 3 49.24 -115.37 -34.36 0.435 1732 +1734 3 48.47 -116.65 -35.19 0.435 1733 +1735 3 48.53 -117.24 -35.78 0.435 1734 +1736 3 47.52 -118.09 -36.57 0.435 1735 +1737 3 47.76 -118.21 -37.4 0.435 1736 +1738 3 47.83 -118.75 -38.44 0.435 1737 +1739 3 47.84 -118.68 -39.1 0.435 1738 +1740 3 47.91 -119.48 -39.79 0.435 1739 +1741 3 47.56 -120.27 -40.78 0.435 1740 +1742 3 47.43 -121.51 -41.37 0.435 1741 +1743 3 47.06 -122.39 -41.62 0.435 1742 +1744 3 47.13 -122.92 -42.66 0.435 1743 +1745 3 47.18 -123.5 -43.39 0.435 1744 +1746 3 46.82 -124.33 -44.16 0.435 1745 +1747 3 46.26 -125.64 -44.39 0.435 1746 +1748 3 45.92 -126.9 -44.98 0.435 1747 +1749 3 45.56 -127.41 -46.62 0.435 1748 +1750 3 45.21 -127.94 -47.97 0.435 1749 +1751 3 45.26 -128.27 -48.98 0.435 1750 +1752 3 44.88 -129.1 -49.59 0.435 1751 +1753 3 44.96 -129.86 -50.73 0.435 1752 +1754 3 45.01 -129.96 -51.79 0.435 1753 +1755 3 45.29 -130.78 -52.1 0.435 1754 +1756 3 45.55 -131.13 -52.73 0.435 1755 +1757 3 45.8 -131.97 -52.89 0.435 1756 +1758 3 45.87 -132.55 -53.63 0.435 1757 +1759 3 45.92 -133.39 -53.78 0.435 1758 +1760 3 45.99 -133.95 -54.68 0.435 1759 +1761 3 46.02 -134.06 -55.58 0.435 1760 +1762 3 46.07 -134.7 -55.8 0.435 1761 +1763 3 46.13 -135.21 -57.14 0.435 1762 +1764 3 46.18 -135.55 -57.99 0.435 1763 +1765 3 46.47 -136.09 -58.95 0.435 1764 +1766 3 46.52 -136.94 -59.12 0.435 1765 +1767 3 46.33 -137.37 -59.16 0.435 1766 +1768 3 46.15 -138.07 -58.94 0.435 1767 +1769 3 46.2 -138.71 -59.0 0.435 1768 +1770 3 45.82 -139.02 -60.47 0.435 1769 +1771 3 45.48 -140.08 -61.5 0.435 1770 +1772 3 45.18 -141.44 -63.3 0.435 1771 +1773 3 45.31 -142.81 -64.72 0.435 1772 +1774 3 44.53 -144.1 -65.32 0.435 1773 +1775 3 43.31 -145.24 -65.55 0.435 1774 +1776 3 42.27 -145.43 -66.5 0.435 1775 +1777 3 41.27 -146.17 -68.4 0.435 1776 +1778 3 40.0 -146.41 -68.91 0.435 1777 +1779 3 39.34 -145.95 -69.48 0.435 1778 +1780 3 39.12 -145.47 -70.19 0.435 1779 +1781 3 38.27 -145.19 -71.39 0.435 1780 +1782 3 37.66 -145.04 -73.27 0.435 1781 +1783 3 36.18 -145.51 -73.8 0.435 1782 +1784 3 35.38 -145.9 -74.77 0.435 1783 +1785 3 34.75 -146.09 -75.4 0.435 1784 +1786 3 34.36 -146.47 -76.14 0.435 1785 +1787 3 -1.87 -7.91 -3.58 1.95 1 +1788 3 -1.88 -7.93 -3.36 1.95 1787 +1789 3 -2.04 -8.83 -3.3 1.41 1788 +1790 3 -2.46 -9.07 -3.26 1.41 1789 +1791 3 -3.08 -9.83 -2.6 1.41 1790 +1792 3 -3.06 -9.74 -3.49 1.41 1791 +1793 3 -3.22 -10.82 -3.61 1.085 1792 +1794 3 -3.62 -11.28 -3.6 1.085 1793 +1795 3 -3.6 -11.71 -3.64 1.085 1794 +1796 3 -3.75 -12.58 -3.73 1.085 1795 +1797 3 -4.61 -13.19 -2.61 0.65 1796 +1798 3 -5.76 -12.39 -2.55 0.65 1797 +1799 3 -6.84 -12.46 -2.59 0.65 1798 +1800 3 -7.88 -12.95 -2.73 0.54 1799 +1801 3 -9.8 -13.5 -2.83 0.54 1800 +1802 3 -11.46 -15.43 -1.95 0.54 1801 +1803 3 -12.71 -16.16 -1.97 0.54 1802 +1804 3 -14.18 -16.92 -1.86 0.54 1803 +1805 3 -14.62 -17.46 -1.1 0.54 1804 +1806 3 -15.03 -17.97 -0.55 0.54 1805 +1807 3 -16.51 -18.73 -0.52 0.54 1806 +1808 3 -18.18 -19.97 -0.09 0.54 1807 +1809 3 -19.0 -20.9 0.01 0.54 1808 +1810 3 -21.24 -23.21 -0.12 0.54 1809 +1811 3 -22.87 -24.8 -0.32 0.54 1810 +1812 3 -23.72 -25.31 -0.17 0.54 1811 +1813 3 -25.62 -26.08 -0.22 0.54 1812 +1814 3 -27.32 -26.62 -0.31 0.54 1813 +1815 3 -27.56 -26.2 -0.27 0.54 1814 +1816 3 -27.89 -26.6 -2.96 0.325 1815 +1817 3 -28.28 -26.66 -4.71 0.435 1816 +1818 3 -29.08 -27.58 -4.68 0.435 1817 +1819 3 -29.71 -28.06 -4.66 0.435 1818 +1820 3 -30.73 -28.96 -5.08 0.435 1819 +1821 3 -31.54 -29.34 -6.12 0.435 1820 +1822 3 -32.36 -30.03 -6.22 0.435 1821 +1823 3 -33.65 -30.31 -6.35 0.435 1822 +1824 3 -34.95 -30.13 -6.89 0.435 1823 +1825 3 -36.89 -29.95 -7.66 0.435 1824 +1826 3 -38.44 -29.16 -7.92 0.435 1825 +1827 3 -39.74 -29.23 -8.04 0.435 1826 +1828 3 -41.47 -29.29 -8.46 0.435 1827 +1829 3 -42.54 -29.1 -8.91 0.435 1828 +1830 3 -43.6 -29.37 -9.05 0.435 1829 +1831 3 -44.43 -29.53 -10.14 0.435 1830 +1832 3 -45.26 -29.94 -10.88 0.435 1831 +1833 3 -46.06 -30.84 -11.07 0.435 1832 +1834 3 -46.88 -31.53 -11.31 0.435 1833 +1835 3 -48.15 -32.0 -11.76 0.435 1834 +1836 3 -50.03 -32.69 -12.56 0.435 1835 +1837 3 -51.76 -32.78 -12.68 0.435 1836 +1838 3 -53.27 -32.29 -14.17 0.435 1837 +1839 3 -54.79 -32.14 -14.57 0.435 1838 +1840 3 -56.09 -32.22 -14.6 0.435 1839 +1841 3 -57.58 -32.51 -14.67 0.435 1840 +1842 3 -59.07 -32.49 -15.84 0.435 1841 +1843 3 -60.63 -31.7 -16.1 0.435 1842 +1844 3 -62.14 -31.78 -16.21 0.435 1843 +1845 3 -62.1 -31.63 -17.63 0.435 1844 +1846 3 -63.39 -31.94 -17.61 0.435 1845 +1847 3 -64.26 -32.01 -17.49 0.435 1846 +1848 3 -65.77 -31.8 -18.34 0.435 1847 +1849 3 -66.64 -31.33 -19.22 0.435 1848 +1850 3 -67.73 -31.4 -19.25 0.435 1849 +1851 3 -68.99 -31.91 -19.33 0.435 1850 +1852 3 -69.81 -32.58 -19.57 0.435 1851 +1853 3 -70.85 -33.03 -20.09 0.435 1852 +1854 3 -72.31 -33.43 -21.3 0.435 1853 +1855 3 -73.8 -33.95 -21.46 0.435 1854 +1856 3 -75.25 -35.11 -21.61 0.435 1855 +1857 3 -75.62 -36.0 -21.79 0.435 1856 +1858 3 -76.68 -36.26 -21.92 0.435 1857 +1859 3 -77.28 -36.92 -22.23 0.435 1858 +1860 3 -78.33 -37.41 -22.31 0.435 1859 +1861 3 -79.2 -37.47 -22.33 0.435 1860 +1862 3 -80.76 -36.91 -22.31 0.435 1861 +1863 3 -82.03 -37.17 -22.74 0.435 1862 +1864 3 -82.64 -37.57 -23.4 0.435 1863 +1865 3 -82.59 -37.89 -24.57 0.435 1864 +1866 3 -83.61 -38.56 -25.11 0.435 1865 +1867 3 -84.89 -38.85 -25.24 0.435 1866 +1868 3 -86.38 -39.1 -25.69 0.435 1867 +1869 3 -88.12 -38.99 -25.79 0.435 1868 +1870 3 -88.91 -39.37 -25.85 0.435 1869 +1871 3 -88.62 -39.85 -27.32 0.435 1870 +1872 3 -88.58 -40.5 -27.31 0.435 1871 +1873 3 -88.48 -41.47 -28.47 0.435 1872 +1874 3 -88.86 -42.07 -29.21 0.435 1873 +1875 3 -89.02 -42.39 -30.38 0.435 1874 +1876 3 -89.41 -43.06 -30.46 0.435 1875 +1877 3 -89.78 -44.43 -30.08 0.435 1876 +1878 3 -89.73 -45.33 -29.87 0.435 1877 +1879 3 -89.9 -45.14 -31.75 0.435 1878 +1880 3 -90.28 -45.47 -32.99 0.435 1879 +1881 3 -90.64 -46.28 -33.76 0.435 1880 +1882 3 -91.0 -46.55 -35.61 0.435 1881 +1883 3 -90.93 -47.32 -36.44 0.435 1882 +1884 3 -91.75 -48.01 -36.6 0.435 1883 +1885 3 -91.71 -47.84 -38.24 0.435 1884 +1886 3 -92.08 -48.68 -38.86 0.435 1885 +1887 3 -92.45 -49.24 -39.91 0.435 1886 +1888 3 -92.85 -49.41 -40.7 0.435 1887 +1889 3 -92.81 -49.77 -41.4 0.435 1888 +1890 3 -92.77 -50.14 -42.05 0.435 1889 +1891 3 -92.49 -50.74 -42.33 0.435 1890 +1892 3 -92.24 -51.08 -43.12 0.435 1891 +1893 3 -92.2 -51.72 -43.25 0.435 1892 +1894 3 -92.15 -52.33 -43.62 0.54 1893 +1895 3 -92.09 -53.16 -44.0 0.54 1894 +1896 3 -91.57 -53.91 -44.82 0.54 1895 +1897 3 -91.29 -54.68 -45.57 0.54 1896 +1898 3 -90.78 -55.44 -46.39 0.54 1897 +1899 3 -90.56 -55.61 -46.63 0.54 1898 +1900 3 -90.5 -56.2 -47.21 0.54 1899 +1901 3 -90.46 -56.6 -47.56 0.54 1900 +1902 3 -90.41 -57.16 -48.45 0.54 1901 +1903 3 -90.37 -57.53 -49.09 0.54 1902 +1904 3 -90.3 -57.8 -50.61 0.54 1903 +1905 3 -90.24 -58.61 -51.15 0.54 1904 +1906 3 -90.16 -59.68 -51.34 0.54 1905 +1907 3 -90.07 -60.91 -51.99 0.54 1906 +1908 3 -89.99 -61.66 -53.12 0.54 1907 +1909 3 -89.92 -62.45 -53.8 0.54 1908 +1910 3 -90.68 -63.45 -55.21 0.54 1909 +1911 3 -91.25 -64.48 -55.93 0.54 1910 +1912 3 -91.35 -65.92 -56.98 0.54 1911 +1913 3 -91.27 -66.66 -58.11 0.54 1912 +1914 3 -91.63 -67.47 -58.89 0.54 1913 +1915 3 -91.53 -68.39 -60.49 0.54 1914 +1916 3 -91.41 -69.8 -61.54 0.54 1915 +1917 3 -91.8 -70.16 -62.41 0.54 1916 +1918 3 -92.15 -70.67 -64.13 0.54 1917 +1919 3 -92.09 -70.98 -65.28 0.54 1918 +1920 3 -92.02 -71.76 -66.05 0.54 1919 +1921 3 -92.4 -72.14 -67.0 0.54 1920 +1922 3 -92.79 -72.7 -68.04 0.54 1921 +1923 3 -93.58 -73.06 -69.38 0.54 1922 +1924 3 -93.97 -73.66 -70.05 0.54 1923 +1925 3 -93.89 -74.42 -71.03 0.54 1924 +1926 3 -93.85 -75.06 -71.1 0.54 1925 +1927 3 -94.65 -75.98 -71.21 0.54 1926 +1928 3 -95.45 -76.79 -72.22 0.54 1927 +1929 3 -95.4 -77.13 -73.16 0.54 1928 +1930 3 -96.18 -78.18 -74.04 0.54 1929 +1931 3 -96.97 -79.02 -74.68 0.54 1930 +1932 3 -97.36 -79.39 -75.7 0.54 1931 +1933 3 -97.69 -80.37 -76.87 0.54 1932 +1934 3 -98.46 -81.62 -77.99 0.54 1933 +1935 3 -98.36 -82.84 -78.65 0.54 1934 +1936 3 -98.72 -83.66 -79.41 0.54 1935 +1937 3 -99.08 -84.75 -79.62 0.54 1936 +1938 3 -99.65 -86.07 -79.77 0.54 1937 +1939 3 -99.39 -86.71 -79.83 0.54 1938 +1940 3 -100.16 -87.71 -81.07 0.54 1939 +1941 3 -99.83 -88.59 -83.04 0.54 1940 +1942 3 -99.76 -89.35 -83.87 0.54 1941 +1943 3 -100.11 -90.41 -84.44 0.54 1942 +1944 3 -100.04 -91.23 -84.82 0.54 1943 +1945 3 -99.95 -92.47 -85.48 0.54 1944 +1946 3 -100.27 -93.91 -86.39 0.54 1945 +1947 3 -101.05 -95.23 -86.77 0.54 1946 +1948 3 -101.36 -96.67 -87.76 0.54 1947 +1949 3 -102.33 -98.39 -88.56 0.54 1948 +1950 3 -103.48 -100.29 -89.76 0.54 1949 +1951 3 -103.38 -101.25 -90.99 0.54 1950 +1952 3 -104.15 -102.8 -91.25 0.54 1951 +1953 3 -104.07 -103.86 -91.35 0.54 1952 +1954 3 -104.45 -104.47 -92.03 0.54 1953 +1955 3 -104.81 -105.51 -92.75 0.54 1954 +1956 3 -104.92 -106.98 -93.36 0.54 1955 +1957 3 -105.29 -107.85 -93.61 0.54 1956 +1958 3 -105.24 -108.19 -94.46 0.54 1957 +1959 3 -105.18 -108.49 -95.77 0.54 1958 +1960 3 -105.15 -108.87 -96.19 0.54 1959 +1961 3 -89.59 -39.42 -26.77 0.435 1870 +1962 3 -89.56 -39.53 -27.76 0.435 1961 +1963 3 -90.37 -39.98 -28.13 0.435 1962 +1964 3 -90.98 -40.36 -29.08 0.435 1963 +1965 3 -91.79 -40.73 -30.2 0.435 1964 +1966 3 -92.64 -41.21 -30.27 0.435 1965 +1967 3 -93.68 -41.67 -30.79 0.435 1966 +1968 3 -95.95 -43.02 -31.74 0.435 1967 +1969 3 -97.62 -43.97 -31.96 0.435 1968 +1970 3 -99.09 -44.69 -32.29 0.435 1969 +1971 3 -99.72 -44.91 -32.63 0.435 1970 +1972 3 -99.82 -45.64 -33.01 0.435 1971 +1973 3 -100.84 -46.57 -33.13 0.435 1972 +1974 3 -102.96 -47.34 -33.33 0.435 1973 +1975 3 -102.94 -47.24 -34.3 0.435 1974 +1976 3 -104.01 -47.24 -34.93 0.435 1975 +1977 3 -105.07 -47.5 -35.13 0.435 1976 +1978 3 -106.13 -47.47 -36.06 0.435 1977 +1979 3 -107.51 -46.27 -35.97 0.435 1978 +1980 3 -108.82 -45.89 -36.33 0.435 1979 +1981 3 -110.63 -44.67 -36.55 0.435 1980 +1982 3 -112.17 -44.29 -36.93 0.435 1981 +1983 3 -113.02 -44.03 -37.9 0.435 1982 +1984 3 -113.93 -43.17 -38.37 0.435 1983 +1985 3 -115.29 -41.94 -38.64 0.435 1984 +1986 3 -117.25 -41.52 -39.55 0.435 1985 +1987 3 -118.36 -41.16 -39.54 0.435 1986 +1988 3 -119.26 -40.03 -40.5 0.435 1987 +1989 3 -120.39 -39.46 -40.54 0.435 1988 +1990 3 -120.86 -38.55 -41.06 0.435 1989 +1991 3 -121.96 -37.94 -41.47 0.435 1990 +1992 3 -121.97 -37.43 -42.18 0.435 1991 +1993 3 -122.65 -37.31 -41.73 0.435 1992 +1994 3 -123.55 -36.94 -41.64 0.435 1993 +1995 3 -124.24 -36.35 -41.51 0.435 1994 +1996 3 -124.91 -35.66 -42.21 0.435 1995 +1997 3 -125.56 -35.17 -43.16 0.435 1996 +1998 3 -28.4 -26.9 -0.37 0.54 1815 +1999 3 -29.67 -27.43 -0.15 0.54 1998 +2000 3 -31.37 -27.97 -0.25 0.54 1999 +2001 3 -33.05 -28.72 -0.36 0.54 2000 +2002 3 -34.27 -30.09 -0.46 0.54 2001 +2003 3 -34.25 -30.55 -0.13 0.54 2002 +2004 3 -34.16 -31.84 -0.19 0.54 2003 +2005 3 -34.76 -33.54 1.05 0.54 2004 +2006 3 -34.73 -34.24 1.65 0.54 2005 +2007 3 -35.5 -35.53 0.98 0.54 2006 +2008 3 -36.74 -36.18 0.13 0.54 2007 +2009 3 -38.38 -37.28 -0.77 0.54 2008 +2010 3 -39.59 -38.59 -1.39 0.54 2009 +2011 3 -40.41 -39.27 -1.56 0.54 2010 +2012 3 -41.17 -40.83 -1.74 0.54 2011 +2013 3 -41.78 -41.48 -2.12 0.54 2012 +2014 3 -42.79 -42.63 -2.26 0.54 2013 +2015 3 -44.67 -43.8 -2.43 0.54 2014 +2016 3 -45.9 -44.67 -3.3 0.54 2015 +2017 3 -46.01 -45.92 -3.89 0.54 2016 +2018 3 -45.96 -46.55 -4.09 0.54 2017 +2019 3 -46.75 -47.88 -4.25 0.54 2018 +2020 3 -47.39 -48.98 -2.5 0.54 2019 +2021 3 -48.17 -50.31 -2.65 0.54 2020 +2022 3 -49.0 -51.33 -1.8 0.54 2021 +2023 3 -50.02 -52.49 -1.65 0.54 2022 +2024 3 -50.81 -53.86 -1.57 0.54 2023 +2025 3 -51.17 -55.43 -1.22 0.54 2024 +2026 3 -51.56 -56.12 -1.15 0.54 2025 +2027 3 -52.39 -56.84 -0.95 0.54 2026 +2028 3 -52.8 -57.34 -0.62 0.54 2027 +2029 3 -53.21 -57.83 -0.31 0.54 2028 +2030 3 -53.62 -58.58 0.34 0.54 2029 +2031 3 -53.63 -59.16 1.71 0.54 2030 +2032 3 -54.47 -59.7 2.24 0.54 2031 +2033 3 -54.47 -60.22 3.17 0.54 2032 +2034 3 -54.46 -60.71 3.72 0.54 2033 +2035 3 -54.87 -61.71 4.67 0.54 2034 +2036 3 -55.65 -62.83 4.53 0.54 2035 +2037 3 -56.45 -64.19 4.59 0.54 2036 +2038 3 -56.83 -65.1 4.79 0.54 2037 +2039 3 -57.6 -66.92 5.11 0.54 2038 +2040 3 -58.63 -68.15 5.79 0.54 2039 +2041 3 -59.27 -69.24 7.54 0.54 2040 +2042 3 -3.66 -14.09 -3.89 0.76 1796 +2043 3 -2.93 -15.33 -4.0 0.76 2042 +2044 3 -2.9 -15.76 -3.96 0.76 2043 +2045 3 -2.63 -16.31 -4.77 0.76 2044 +2046 3 -2.41 -16.85 -3.69 0.76 2045 +2047 3 -2.19 -17.34 -2.9 0.76 2046 +2048 3 -1.95 -17.78 -2.79 0.76 2047 +2049 3 -1.73 -18.35 -1.34 0.76 2048 +2050 3 -1.26 -19.25 -0.74 0.76 2049 +2051 3 -0.57 -20.09 -0.51 0.76 2050 +2052 3 -0.09 -20.96 -0.36 0.76 2051 +2053 3 0.37 -21.37 -0.32 0.76 2052 +2054 3 0.6 -21.79 -0.21 0.76 2053 +2055 3 1.29 -22.4 -0.18 0.76 2054 +2056 3 2.21 -23.23 -0.02 0.76 2055 +2057 3 2.66 -23.65 0.09 0.76 2056 +2058 3 3.35 -24.25 0.05 0.76 2057 +2059 3 3.58 -24.72 0.46 0.76 2058 +2060 3 4.04 -25.12 0.49 0.76 2059 +2061 3 4.28 -26.09 1.61 0.65 2060 +2062 3 4.53 -26.49 1.42 0.65 2061 +2063 3 4.76 -26.95 1.76 0.65 2062 +2064 3 5.2 -27.72 3.12 0.65 2063 +2065 3 5.42 -28.21 3.91 0.65 2064 +2066 3 5.43 -28.5 4.62 0.65 2065 +2067 3 5.45 -29.19 5.0 0.65 2066 +2068 3 5.71 -29.85 5.24 0.65 2067 +2069 3 5.93 -30.33 5.88 0.65 2068 +2070 3 5.95 -31.06 6.63 0.65 2069 +2071 3 5.95 -31.32 7.14 0.65 2070 +2072 3 6.19 -31.79 7.55 0.65 2071 +2073 3 6.47 -32.85 7.45 0.65 2072 +2074 3 6.77 -34.12 7.32 0.65 2073 +2075 3 6.81 -34.79 7.47 0.65 2074 +2076 3 7.27 -35.46 7.95 0.65 2075 +2077 3 7.73 -36.08 8.05 0.65 2076 +2078 3 8.43 -36.94 8.28 0.65 2077 +2079 3 8.9 -37.58 8.44 0.65 2078 +2080 3 9.81 -38.7 9.4 0.65 2079 +2081 3 10.05 -39.16 9.73 0.65 2080 +2082 3 10.58 -40.88 9.95 0.65 2081 +2083 3 11.04 -41.53 10.2 0.65 2082 +2084 3 11.3 -42.42 10.56 0.65 2083 +2085 3 11.36 -43.28 10.47 0.65 2084 +2086 3 11.6 -43.72 10.74 0.65 2085 +2087 3 11.83 -44.15 10.85 0.65 2086 +2088 3 12.08 -44.57 10.81 0.65 2087 +2089 4 -1.69 6.41 -3.07 2.06 1 +2090 4 -3.12 8.26 -2.91 1.085 2089 +2091 4 -4.24 9.64 -4.3 0.975 2090 +2092 4 -4.45 10.02 -4.27 0.975 2091 +2093 4 -4.03 10.53 -4.74 0.54 2092 +2094 4 -3.64 11.2 -4.66 0.54 2093 +2095 4 -3.02 11.88 -4.57 0.54 2094 +2096 4 -2.19 12.41 -5.02 0.54 2095 +2097 4 -1.95 13.03 -6.76 0.54 2096 +2098 4 -1.74 13.57 -7.53 0.54 2097 +2099 4 -1.69 13.77 -9.46 0.54 2098 +2100 4 -1.03 13.86 -10.04 0.54 2099 +2101 4 -0.87 14.73 -10.03 0.54 2100 +2102 4 -0.44 15.3 -10.94 0.54 2101 +2103 4 -0.26 16.28 -11.89 0.54 2102 +2104 4 -0.07 17.24 -12.69 0.54 2103 +2105 4 0.13 17.5 -13.03 0.54 2104 +2106 4 0.32 18.25 -13.78 0.54 2105 +2107 4 0.49 19.43 -14.71 0.435 2106 +2108 4 1.33 20.22 -15.43 0.435 2107 +2109 4 1.51 20.86 -15.29 0.435 2108 +2110 4 1.72 21.38 -15.91 0.435 2109 +2111 4 1.92 22.2 -17.41 0.435 2110 +2112 4 2.93 23.86 -18.19 0.435 2111 +2113 4 3.37 24.46 -19.54 0.435 2112 +2114 4 3.97 25.62 -19.94 0.435 2113 +2115 4 4.36 26.61 -20.8 0.435 2114 +2116 4 4.34 27.64 -22.36 0.435 2115 +2117 4 4.66 29.6 -22.15 0.435 2116 +2118 4 4.84 30.31 -22.59 0.435 2117 +2119 4 5.26 31.06 -23.41 0.435 2118 +2120 4 5.46 32.12 -25.1 0.435 2119 +2121 4 6.02 33.71 -25.46 0.435 2120 +2122 4 7.29 34.76 -26.45 0.435 2121 +2123 4 7.92 35.26 -26.76 0.435 2122 +2124 4 9.72 38.56 -28.11 0.435 2123 +2125 4 9.48 38.99 -28.22 0.435 2124 +2126 4 9.67 39.21 -28.04 0.435 2125 +2127 4 10.08 39.67 -28.06 0.435 2126 +2128 4 10.28 40.69 -29.53 0.435 2127 +2129 4 11.11 41.45 -29.96 0.435 2128 +2130 4 11.35 41.81 -31.12 0.435 2129 +2131 4 11.54 42.82 -32.44 0.435 2130 +2132 4 11.49 43.69 -32.5 0.435 2131 +2133 4 12.1 44.39 -32.57 0.435 2132 +2134 4 12.45 46.23 -33.27 0.435 2133 +2135 4 12.45 46.79 -34.5 0.435 2134 +2136 4 12.84 47.74 -35.15 0.435 2135 +2137 4 13.4 49.33 -35.42 0.435 2136 +2138 4 13.62 50.11 -36.55 0.435 2137 +2139 4 14.22 51.07 -37.11 0.435 2138 +2140 4 14.57 52.39 -37.03 0.435 2139 +2141 4 15.12 54.43 -37.49 0.435 2140 +2142 4 15.45 56.3 -38.5 0.435 2141 +2143 4 16.46 58.17 -39.25 0.435 2142 +2144 4 16.78 60.21 -39.87 0.435 2143 +2145 4 17.59 61.64 -40.61 0.435 2144 +2146 4 17.76 62.81 -41.31 0.435 2145 +2147 4 18.54 64.43 -41.73 0.435 2146 +2148 4 19.25 67.35 -42.23 0.435 2147 +2149 4 19.83 68.75 -42.76 0.435 2148 +2150 4 20.79 70.78 -42.9 0.435 2149 +2151 4 22.01 72.14 -42.73 0.435 2150 +2152 4 23.83 74.2 -42.55 0.435 2151 +2153 4 25.66 76.04 -42.32 0.435 2152 +2154 4 27.1 77.41 -42.14 0.435 2153 +2155 4 28.6 77.76 -42.52 0.435 2154 +2156 4 31.63 77.95 -42.43 0.435 2155 +2157 4 32.99 77.17 -42.55 0.435 2156 +2158 4 34.55 76.12 -41.87 0.435 2157 +2159 4 35.47 75.29 -41.71 0.435 2158 +2160 4 36.13 74.29 -39.99 0.435 2159 +2161 4 37.28 73.02 -39.64 0.435 2160 +2162 4 38.45 71.58 -39.76 0.435 2161 +2163 4 38.89 71.08 -38.75 0.435 2162 +2164 4 39.09 70.48 -36.99 0.435 2163 +2165 4 38.69 70.59 -38.35 0.435 2164 +2166 4 39.12 70.33 -37.76 0.435 2165 +2167 4 39.12 70.36 -37.99 0.435 2166 +2168 4 39.37 70.24 -38.67 0.435 2167 +2169 4 39.66 69.99 -40.35 0.435 2168 +2170 4 39.7 70.15 -41.91 0.435 2169 +2171 4 40.18 69.31 -41.91 0.435 2170 +2172 4 40.41 69.1 -41.85 0.435 2171 +2173 4 40.69 68.87 -43.61 0.435 2172 +2174 4 40.98 68.42 -45.45 0.435 2173 +2175 4 41.04 68.35 -46.89 0.435 2174 +2176 4 41.93 68.49 -47.68 0.435 2175 +2177 4 42.42 68.0 -49.01 0.435 2176 +2178 4 42.69 67.68 -50.01 0.435 2177 +2179 4 43.18 67.16 -50.89 0.435 2178 +2180 4 43.65 67.09 -52.08 0.435 2179 +2181 4 43.95 66.87 -54.05 0.435 2180 +2182 4 44.21 66.26 -54.26 0.435 2181 +2183 4 44.69 66.21 -55.54 0.435 2182 +2184 4 45.15 66.37 -56.79 0.435 2183 +2185 4 46.09 65.95 -58.54 0.435 2184 +2186 4 46.76 66.07 -59.27 0.435 2185 +2187 4 48.03 65.53 -57.42 0.435 2186 +2188 4 48.67 66.29 -58.23 0.435 2187 +2189 4 48.86 67.31 -59.39 0.435 2188 +2190 4 49.29 68.12 -60.89 0.435 2189 +2191 4 49.29 68.95 -62.6 0.435 2190 +2192 4 -5.37 10.72 -5.05 0.975 2092 +2193 4 -5.84 11.44 -4.99 0.975 2192 +2194 4 -6.11 13.03 -5.88 0.54 2193 +2195 4 -7.05 14.04 -5.8 0.54 2194 +2196 4 -7.34 15.32 -5.68 0.435 2195 +2197 4 -8.06 16.35 -5.59 0.435 2196 +2198 4 -7.86 17.13 -6.63 0.435 2197 +2199 4 -7.65 17.64 -7.25 0.435 2198 +2200 4 -7.69 18.29 -7.41 0.435 2199 +2201 4 -8.14 18.99 -8.1 0.435 2200 +2202 4 -8.58 19.52 -9.26 0.435 2201 +2203 4 -8.62 20.18 -9.35 0.435 2202 +2204 4 -8.65 20.59 -9.22 0.435 2203 +2205 4 -8.68 21.01 -9.11 0.435 2204 +2206 4 -8.7 21.51 -9.66 0.435 2205 +2207 4 -8.72 22.51 -10.99 0.435 2206 +2208 4 -8.73 23.0 -11.54 0.435 2207 +2209 4 -9.21 23.86 -11.7 0.435 2208 +2210 4 -9.23 24.56 -12.23 0.435 2209 +2211 4 -9.71 25.73 -13.39 0.435 2210 +2212 4 -9.74 26.39 -13.4 0.435 2211 +2213 4 -10.23 27.26 -13.7 0.435 2212 +2214 4 -10.28 28.11 -13.61 0.435 2213 +2215 4 -10.32 28.76 -13.62 0.435 2214 +2216 4 -10.38 29.61 -13.53 0.435 2215 +2217 4 -10.19 30.83 -14.61 0.435 2216 +2218 4 -10.23 31.5 -14.84 0.435 2217 +2219 4 -10.06 32.4 -15.04 0.435 2218 +2220 4 -9.89 33.32 -15.4 0.435 2219 +2221 4 -9.69 34.04 -16.0 0.435 2220 +2222 4 -9.76 35.16 -16.34 0.435 2221 +2223 4 -9.59 36.02 -16.17 0.435 2222 +2224 4 -9.59 36.06 -16.54 0.435 2223 +2225 4 -9.59 36.6 -17.54 0.435 2224 +2226 4 -9.58 36.9 -18.41 0.435 2225 +2227 4 -9.6 37.64 -19.24 0.435 2226 +2228 4 -9.38 38.24 -20.76 0.435 2227 +2229 4 -9.44 39.1 -20.67 0.435 2228 +2230 4 -9.49 39.96 -20.58 0.435 2229 +2231 4 -10.47 41.04 -18.99 0.435 2230 +2232 4 -10.99 42.29 -18.87 0.435 2231 +2233 4 -11.03 43.2 -19.3 0.435 2232 +2234 4 -11.06 44.17 -20.19 0.435 2233 +2235 4 -11.58 45.65 -20.11 0.435 2234 +2236 4 -11.65 46.73 -20.16 0.435 2235 +2237 4 -12.62 48.44 -20.45 0.435 2236 +2238 4 -13.54 49.73 -20.95 0.435 2237 +2239 4 -14.61 52.93 -21.01 0.435 2238 +2240 4 -14.67 54.01 -21.05 0.435 2239 +2241 4 -15.63 55.77 -21.73 0.435 2240 +2242 4 -16.62 58.14 -22.26 0.435 2241 +2243 4 -16.95 60.11 -22.59 0.435 2242 +2244 4 -17.9 61.63 -23.14 0.435 2243 +2245 4 -18.37 62.52 -23.51 0.435 2244 +2246 4 -18.84 63.41 -24.1 0.435 2245 +2247 4 -18.53 65.66 -24.62 0.435 2246 +2248 4 -18.59 66.8 -25.17 0.435 2247 +2249 4 -18.64 67.66 -25.17 0.435 2248 +2250 4 -18.68 68.6 -25.89 0.435 2249 +2251 4 -18.76 69.91 -25.91 0.435 2250 +2252 4 -18.81 70.78 -25.97 0.435 2251 +2253 4 -19.31 72.07 -26.23 0.435 2252 +2254 4 -19.8 72.92 -26.31 0.435 2253 +2255 4 -19.86 73.78 -26.22 0.435 2254 +2256 4 -19.91 74.65 -26.2 0.435 2255 +2257 4 -20.85 76.67 -27.52 0.435 2256 +2258 4 -20.88 77.64 -28.56 0.435 2257 +2259 4 -20.66 77.98 -29.57 0.435 2258 +2260 4 -20.68 78.7 -30.25 0.435 2259 +2261 4 -21.2 80.23 -30.63 0.435 2260 +2262 4 -21.68 81.32 -30.98 0.435 2261 +2263 4 -23.31 83.19 -31.13 0.435 2262 +2264 4 -23.81 84.49 -31.53 0.435 2263 +2265 4 -24.84 87.05 -31.59 0.435 2264 +2266 4 -25.64 89.35 -31.37 0.435 2265 +2267 4 -26.13 90.18 -31.15 0.435 2266 +2268 4 -26.85 91.2 -30.99 0.435 2267 +2269 4 -27.35 92.51 -31.39 0.435 2268 +2270 4 -27.8 93.24 -32.38 0.435 2269 +2271 4 -28.95 94.5 -32.66 0.435 2270 +2272 4 -30.19 97.06 -33.01 0.435 2271 +2273 4 -31.12 98.33 -33.14 0.435 2272 +2274 4 -32.78 100.63 -33.39 0.435 2273 +2275 4 -33.34 102.76 -33.25 0.435 2274 +2276 4 -34.31 104.46 -33.55 0.435 2275 +2277 4 -34.41 106.22 -33.83 0.435 2276 +2278 4 -36.15 109.81 -33.88 0.435 2277 +2279 4 -36.75 112.63 -34.12 0.435 2278 +2280 4 -36.89 115.02 -34.26 0.435 2279 +2281 4 -38.78 117.5 -34.12 0.435 2280 +2282 4 -40.66 119.53 -33.95 0.435 2281 +2283 4 -41.7 122.48 -33.67 0.435 2282 +2284 4 -42.3 125.02 -33.43 0.435 2283 +2285 4 -42.41 126.73 -33.25 0.435 2284 +2286 4 -44.52 129.19 -33.05 0.435 2285 +2287 4 -45.04 130.45 -32.93 0.435 2286 +2288 4 -45.01 130.82 -34.55 0.435 2287 +2289 4 -45.71 131.42 -34.35 0.435 2288 +2290 4 -45.73 131.85 -34.31 0.435 2289 +2291 4 -46.86 132.67 -34.55 0.435 2290 +2292 4 -7.72 38.87 -19.52 0.435 2227 +2293 4 -7.35 40.26 -20.05 0.435 2292 +2294 4 -6.26 40.67 -21.26 0.435 2293 +2295 4 -6.06 41.37 -21.63 0.435 2294 +2296 4 -5.92 42.75 -22.31 0.435 2295 +2297 4 -5.94 43.48 -23.07 0.435 2296 +2298 4 -6.57 43.52 -23.91 0.435 2297 +2299 4 -6.39 44.47 -24.49 0.435 2298 +2300 4 -5.99 45.22 -25.16 0.435 2299 +2301 4 -5.79 45.93 -25.6 0.435 2300 +2302 4 -5.61 46.89 -26.48 0.435 2301 +2303 4 -5.42 47.65 -27.3 0.435 2302 +2304 4 -5.03 48.82 -27.92 0.435 2303 +2305 4 -4.88 49.94 -28.1 0.435 2304 +2306 4 -5.11 50.64 -28.79 0.435 2305 +2307 4 -5.83 51.67 -28.78 0.435 2306 +2308 4 -5.85 52.14 -29.1 0.435 2307 +2309 4 -5.65 52.9 -30.01 0.435 2308 +2310 4 -5.62 53.06 -31.57 0.435 2309 +2311 4 -6.06 53.52 -32.13 0.435 2310 +2312 4 -6.68 53.61 -33.34 0.435 2311 +2313 4 -7.13 54.29 -33.89 0.435 2312 +2314 4 -7.13 54.6 -34.76 0.435 2313 +2315 4 -7.75 54.39 -35.25 0.435 2314 +2316 4 -7.37 55.59 -36.09 0.435 2315 +2317 4 -7.55 55.22 -36.89 0.435 2316 +2318 4 -7.53 55.85 -38.78 0.435 2317 +2319 4 -7.4 57.36 -38.63 0.435 2318 +2320 4 -7.41 57.84 -39.1 0.435 2319 +2321 4 -8.06 58.1 -39.09 0.435 2320 +2322 4 -8.96 58.49 -39.07 0.435 2321 +2323 4 -9.89 59.28 -39.01 0.435 2322 +2324 4 -9.96 60.04 -37.96 0.435 2323 +2325 4 -10.89 60.48 -36.42 0.435 2324 +2326 4 -10.9 60.77 -37.07 0.435 2325 +2327 4 -11.34 60.74 -37.01 0.435 2326 +2328 4 -11.57 61.42 -37.62 0.435 2327 +2329 4 -11.57 61.73 -38.49 0.435 2328 +2330 4 -11.55 62.08 -39.74 0.435 2329 +2331 4 -11.58 62.78 -40.2 0.435 2330 +2332 4 -11.55 63.15 -41.66 0.435 2331 +2333 4 -11.99 63.69 -42.98 0.435 2332 +2334 4 -11.79 64.14 -43.08 0.435 2333 +2335 4 -11.61 65.09 -43.73 0.435 2334 +2336 4 -11.41 65.59 -44.19 0.435 2335 +2337 4 -11.19 66.17 -45.49 0.435 2336 +2338 4 -10.56 66.71 -46.1 0.435 2337 +2339 4 -10.39 67.6 -46.3 0.435 2338 +2340 4 -10.36 67.74 -47.64 0.435 2339 +2341 4 -10.15 68.52 -48.76 0.435 2340 +2342 4 -10.16 68.8 -49.41 0.435 2341 +2343 4 -10.18 69.8 -50.67 0.435 2342 +2344 4 -10.01 70.93 -51.0 0.435 2343 +2345 4 -10.07 71.79 -50.91 0.435 2344 +2346 4 -10.53 72.49 -51.6 0.435 2345 +2347 4 -10.6 74.04 -51.97 0.435 2346 +2348 4 -10.66 75.45 -53.1 0.435 2347 +2349 4 -10.14 77.66 -53.09 0.435 2348 +2350 4 -10.15 78.17 -53.86 0.435 2349 +2351 4 -10.18 78.85 -54.1 0.435 2350 +2352 4 -9.36 79.85 -54.88 0.435 2351 +2353 4 -9.34 79.92 -55.62 0.435 2352 +2354 4 -9.15 80.63 -56.08 0.435 2353 +2355 4 -9.17 81.35 -56.68 0.435 2354 +2356 4 -9.21 82.27 -57.26 0.435 2355 +2357 4 -9.01 82.76 -57.74 0.435 2356 +2358 4 -9.33 84.48 -57.72 0.435 2357 +2359 4 -8.69 84.81 -58.34 0.435 2358 +2360 4 -8.73 85.73 -58.85 0.435 2359 +2361 4 -8.74 86.25 -59.63 0.435 2360 +2362 4 -7.96 87.81 -59.67 0.435 2361 +2363 4 -10.09 19.69 -9.8 0.435 2202 +2364 4 -11.18 19.93 -10.64 0.435 2363 +2365 4 -12.26 20.12 -11.1 0.435 2364 +2366 4 -13.38 20.97 -11.64 0.435 2365 +2367 4 -14.08 22.3 -12.34 0.435 2366 +2368 4 -14.76 22.99 -12.96 0.435 2367 +2369 4 -14.53 23.1 -14.0 0.435 2368 +2370 4 -14.51 23.15 -14.45 0.435 2369 +2371 4 -14.93 23.71 -15.99 0.435 2370 +2372 4 -14.93 24.54 -17.71 0.435 2371 +2373 4 -16.27 25.38 -18.18 0.435 2372 +2374 4 -16.25 25.48 -19.15 0.435 2373 +2375 4 -17.13 25.93 -19.95 0.435 2374 +2376 4 -17.34 26.47 -21.11 0.435 2375 +2377 4 -17.78 27.24 -22.47 0.435 2376 +2378 4 -17.77 27.55 -23.41 0.435 2377 +2379 4 -18.66 28.17 -23.75 0.435 2378 +2380 4 -18.67 28.39 -23.73 0.435 2379 +2381 4 -18.83 28.11 -25.34 0.435 2380 +2382 4 -19.26 28.09 -25.35 0.435 2381 +2383 4 -19.68 27.86 -25.54 0.435 2382 +2384 4 -19.67 27.9 -25.98 0.435 2383 +2385 4 -20.08 27.96 -26.82 0.435 2384 +2386 4 -20.05 28.1 -28.17 0.435 2385 +2387 4 -20.46 28.13 -28.69 0.435 2386 +2388 4 -20.92 28.86 -29.69 0.435 2387 +2389 4 -21.75 28.63 -30.1 0.435 2388 +2390 4 -22.38 28.67 -30.95 0.435 2389 +2391 4 -22.86 29.58 -31.54 0.435 2390 +2392 4 -23.71 29.59 -32.24 0.435 2391 +2393 4 -25.0 30.04 -33.2 0.435 2392 +2394 4 -25.22 30.02 -33.21 0.435 2393 +2395 4 -26.1 30.49 -34.01 0.435 2394 +2396 4 -26.52 30.5 -34.4 0.435 2395 +2397 4 -26.71 30.32 -34.87 0.435 2396 +2398 4 -28.25 31.19 -35.87 0.435 2397 +2399 4 -28.67 31.53 -37.36 0.435 2398 +2400 4 -28.69 31.98 -37.53 0.435 2399 +2401 4 -28.67 32.07 -38.36 0.435 2400 +2402 4 -29.1 32.31 -38.86 0.435 2401 +2403 4 -29.1 32.58 -39.29 0.435 2402 +2404 4 -29.99 32.98 -39.64 0.435 2403 +2405 4 -29.98 33.02 -40.02 0.435 2404 +2406 4 -30.19 33.59 -41.39 0.435 2405 +2407 4 -30.84 33.78 -41.69 0.435 2406 +2408 4 -30.85 34.33 -42.69 0.435 2407 +2409 4 -31.32 34.97 -42.94 0.435 2408 +2410 4 -31.97 35.18 -43.23 0.435 2409 +2411 4 -32.64 35.6 -43.51 0.435 2410 +2412 4 -33.09 36.03 -43.7 0.435 2411 +2413 4 -33.08 36.08 -44.22 0.435 2412 +2414 4 -33.1 36.54 -44.56 0.435 2413 +2415 4 -33.52 36.8 -45.21 0.435 2414 +2416 4 -34.19 37.24 -45.64 0.435 2415 +2417 4 -34.83 37.23 -46.02 0.435 2416 +2418 4 -35.24 37.11 -47.18 0.435 2417 +2419 4 -35.43 36.89 -47.28 0.435 2418 +2420 4 -36.32 37.28 -47.34 0.435 2419 +2421 4 -36.97 37.24 -47.43 0.435 2420 +2422 4 -37.17 37.57 -48.69 0.435 2421 +2423 4 -36.98 38.0 -48.41 0.435 2422 +2424 4 -38.03 37.75 -48.91 0.435 2423 +2425 4 -38.05 38.22 -49.25 0.435 2424 +2426 4 -38.48 38.54 -50.42 0.435 2425 +2427 4 -38.51 39.49 -51.31 0.435 2426 +2428 4 -38.49 39.61 -52.42 0.435 2427 +2429 4 -38.93 40.33 -53.34 0.435 2428 +2430 4 -38.91 40.41 -54.16 0.435 2429 +2431 4 -38.94 41.15 -54.99 0.435 2430 +2432 4 -39.0 42.49 -55.45 0.435 2431 +2433 4 -39.47 43.12 -55.55 0.435 2432 +2434 4 -40.35 43.8 -56.25 0.435 2433 +2435 4 -40.39 44.49 -56.71 0.435 2434 +2436 4 -41.96 45.27 -56.81 0.435 2435 +2437 4 -42.16 45.32 -57.35 0.435 2436 +2438 4 -43.02 45.77 -58.15 0.435 2437 +2439 4 -43.24 45.8 -58.53 0.435 2438 +2440 4 -44.14 46.63 -58.77 0.435 2439 +2441 4 -44.78 46.64 -59.23 0.435 2440 +2442 4 -6.88 11.21 -6.39 0.76 2193 +2443 4 -9.07 12.29 -7.91 0.76 2442 +2444 4 -10.02 13.21 -6.78 0.65 2443 +2445 4 -10.7 13.6 -6.76 0.65 2444 +2446 4 -11.62 14.4 -6.7 0.65 2445 +2447 4 -12.57 15.9 -7.02 0.65 2446 +2448 4 -13.29 16.96 -7.23 0.65 2447 +2449 4 -13.52 17.65 -7.76 0.65 2448 +2450 4 -14.46 18.7 -7.98 0.65 2449 +2451 4 -14.93 19.59 -8.42 0.65 2450 +2452 4 -14.95 20.33 -9.33 0.65 2451 +2453 4 -15.46 21.6 -9.36 0.65 2452 +2454 4 -15.95 22.69 -9.63 0.65 2453 +2455 4 -16.89 23.72 -9.63 0.65 2454 +2456 4 -18.03 24.74 -9.7 0.65 2455 +2457 4 -19.38 25.78 -10.15 0.65 2456 +2458 4 -20.76 27.01 -10.28 0.65 2457 +2459 4 -21.3 28.7 -10.12 0.65 2458 +2460 4 -21.9 31.26 -10.02 0.65 2459 +2461 4 -22.63 32.52 -10.13 0.54 2460 +2462 4 -22.8 35.31 -9.85 0.54 2461 +2463 4 -23.63 38.3 -9.79 0.54 2462 +2464 4 -23.86 38.8 -9.74 0.54 2463 +2465 4 -24.5 39.31 -10.91 0.435 2464 +2466 4 -25.42 39.9 -10.79 0.435 2465 +2467 4 -25.43 40.1 -10.62 0.435 2466 +2468 4 -26.1 40.52 -10.89 0.435 2467 +2469 4 -26.31 40.52 -10.98 0.435 2468 +2470 4 -26.76 40.99 -11.77 0.435 2469 +2471 4 -27.45 41.88 -12.36 0.435 2470 +2472 4 -27.42 41.98 -13.34 0.435 2471 +2473 4 -27.63 42.25 -13.92 0.435 2472 +2474 4 -28.12 43.36 -14.49 0.435 2473 +2475 4 -29.69 44.4 -14.95 0.435 2474 +2476 4 -30.19 45.74 -15.65 0.325 2475 +2477 4 -31.06 46.18 -16.3 0.325 2476 +2478 4 -31.53 46.83 -16.54 0.325 2477 +2479 4 -32.21 47.73 -17.3 0.325 2478 +2480 4 -33.11 48.61 -17.91 0.325 2479 +2481 4 -33.59 49.51 -18.58 0.325 2480 +2482 4 -35.38 50.74 -18.87 0.325 2481 +2483 4 -36.05 51.17 -19.3 0.325 2482 +2484 4 -37.89 52.78 -19.25 0.325 2483 +2485 4 -39.26 54.53 -20.15 0.325 2484 +2486 4 -39.95 55.4 -20.68 0.325 2485 +2487 4 -41.54 56.92 -21.54 0.325 2486 +2488 4 -42.64 57.34 -22.05 0.325 2487 +2489 4 -43.55 58.2 -22.51 0.325 2488 +2490 4 -45.35 59.42 -22.96 0.325 2489 +2491 4 -48.0 60.65 -23.8 0.325 2490 +2492 4 -49.56 61.5 -24.65 0.325 2491 +2493 4 -50.24 62.11 -24.68 0.325 2492 +2494 4 -52.9 63.27 -24.92 0.325 2493 +2495 4 -55.35 64.75 -26.03 0.325 2494 +2496 4 -56.93 66.04 -26.84 0.325 2495 +2497 4 -58.95 67.22 -26.99 0.325 2496 +2498 4 -60.52 68.5 -27.73 0.325 2497 +2499 4 -61.86 69.33 -28.13 0.325 2498 +2500 4 -63.86 70.59 -28.95 0.325 2499 +2501 4 -65.17 71.02 -29.69 0.325 2500 +2502 4 -66.26 70.98 -30.09 0.325 2501 +2503 4 -66.67 71.03 -30.78 0.325 2502 +2504 4 -67.51 71.1 -31.99 0.325 2503 +2505 4 -68.56 70.89 -32.72 0.325 2504 +2506 4 -68.96 70.7 -33.2 0.325 2505 +2507 4 -69.15 70.81 -34.47 0.325 2506 +2508 4 -24.69 41.48 -9.79 0.54 2464 +2509 4 -25.39 45.75 -9.43 0.54 2508 +2510 4 -26.04 48.94 -9.12 0.54 2509 +2511 4 -27.54 52.08 -8.91 0.54 2510 +2512 4 -28.85 55.65 -8.57 0.54 2511 +2513 4 -30.58 59.0 -8.26 0.54 2512 +2514 4 -30.75 61.56 -8.0 0.54 2513 +2515 4 -31.61 64.74 -7.69 0.54 2514 +2516 4 -32.05 65.78 -8.72 0.435 2515 +2517 4 -33.21 67.0 -8.62 0.435 2516 +2518 4 -33.25 67.61 -8.26 0.435 2517 +2519 4 -34.6 68.69 -9.08 0.435 2518 +2520 4 -34.64 69.87 -9.94 0.435 2519 +2521 4 -34.68 70.79 -10.53 0.435 2520 +2522 4 -34.71 71.75 -11.41 0.435 2521 +2523 4 -35.45 73.27 -11.8 0.435 2522 +2524 4 -36.43 75.46 -12.65 0.435 2523 +2525 4 -37.63 77.87 -13.56 0.435 2524 +2526 4 -38.42 80.0 -13.58 0.435 2525 +2527 4 -39.58 81.52 -14.28 0.435 2526 +2528 4 -39.79 82.04 -15.36 0.435 2527 +2529 4 -40.75 83.24 -14.95 0.435 2528 +2530 4 -41.24 84.3 -14.94 0.435 2529 +2531 4 -41.75 85.59 -15.12 0.435 2530 +2532 4 -42.22 86.49 -15.71 0.435 2531 +2533 4 -43.15 87.84 -16.73 0.435 2532 +2534 4 -42.99 89.21 -17.26 0.435 2533 +2535 4 -45.58 92.8 -17.85 0.435 2534 +2536 4 -47.01 95.38 -18.52 0.435 2535 +2537 4 -48.22 97.31 -18.96 0.435 2536 +2538 4 -49.12 98.41 -19.62 0.435 2537 +2539 4 -49.67 100.34 -19.8 0.435 2538 +2540 4 -50.17 101.65 -20.21 0.435 2539 +2541 4 -50.9 103.21 -20.97 0.435 2540 +2542 4 -51.84 104.74 -21.66 0.435 2541 +2543 4 -51.94 106.51 -22.08 0.435 2542 +2544 4 -52.98 109.5 -22.25 0.435 2543 +2545 4 -54.16 111.44 -22.75 0.435 2544 +2546 4 -54.87 112.8 -23.83 0.435 2545 +2547 4 -56.75 115.06 -23.65 0.435 2546 +2548 4 -57.75 117.16 -23.6 0.435 2547 +2549 4 -58.29 118.89 -23.82 0.435 2548 +2550 4 -59.25 120.58 -23.97 0.435 2549 +2551 4 -60.47 122.69 -24.08 0.435 2550 +2552 4 -62.55 124.71 -23.92 0.435 2551 +2553 4 -64.6 126.32 -23.87 0.435 2552 +2554 4 -65.99 127.74 -23.76 0.435 2553 +2555 4 -10.59 12.43 -8.01 0.54 2443 +2556 4 -12.47 11.52 -8.75 0.54 2555 +2557 4 -14.18 10.98 -8.84 0.54 2556 +2558 4 -16.11 10.66 -9.0 0.54 2557 +2559 4 -17.64 11.29 -9.8 0.54 2558 +2560 4 -20.23 11.14 -9.87 0.54 2559 +2561 4 -21.95 10.81 -9.95 0.54 2560 +2562 4 -24.78 11.07 -9.99 0.54 2561 +2563 4 -30.29 12.82 -11.29 0.54 2562 +2564 4 -31.62 13.39 -11.42 0.54 2563 +2565 4 -32.79 14.82 -11.3 0.54 2564 +2566 4 -34.55 15.14 -11.31 0.54 2565 +2567 4 -37.17 15.42 -11.34 0.54 2566 +2568 4 -38.72 15.97 -11.32 0.435 2567 +2569 4 -40.34 17.37 -11.21 0.435 2568 +2570 4 -40.87 19.06 -11.05 0.435 2569 +2571 4 -42.04 20.28 -10.95 0.435 2570 +2572 4 -44.05 21.22 -10.9 0.435 2571 +2573 4 -46.75 22.79 -10.8 0.435 2572 +2574 4 -48.18 24.63 -10.65 0.435 2573 +2575 4 -49.51 26.02 -12.19 0.435 2574 +2576 4 -51.34 27.41 -12.09 0.435 2575 +2577 4 -52.5 27.85 -10.72 0.435 2576 +2578 4 -53.43 28.87 -10.63 0.435 2577 +2579 4 -54.38 30.32 -10.51 0.435 2578 +2580 4 -54.76 32.11 -9.2 0.435 2579 +2581 4 -56.21 34.39 -8.92 0.435 2580 +2582 4 -57.23 36.41 -8.13 0.435 2581 +2583 4 -58.2 38.07 -7.91 0.435 2582 +2584 4 -60.1 39.69 -5.83 0.435 2583 +2585 4 -61.27 40.31 -4.21 0.435 2584 +2586 4 -61.99 41.34 -4.13 0.435 2585 +2587 4 -62.47 42.19 -4.2 0.435 2586 +2588 4 -62.97 43.24 -4.1 0.435 2587 +2589 4 -63.86 43.6 -4.01 0.435 2588 +2590 4 -64.93 43.28 -3.61 0.435 2589 +2591 4 -65.77 42.56 -3.49 0.435 2590 +2592 4 -66.63 42.26 -3.24 0.435 2591 +2593 4 -67.18 42.89 -3.18 0.435 2592 +2594 4 -68.05 42.83 -3.13 0.435 2593 +2595 4 -68.52 43.45 -3.16 0.435 2594 +2596 4 -70.61 42.79 -4.48 0.435 2595 +2597 4 -71.47 42.55 -4.68 0.435 2596 +2598 4 -72.13 42.47 -4.32 0.435 2597 +2599 4 -73.17 41.71 -3.9 0.435 2598 +2600 4 -74.92 42.02 -3.91 0.435 2599 +2601 4 -75.85 42.81 -3.7 0.435 2600 +2602 4 -76.78 43.62 -3.56 0.435 2601 +2603 4 -77.69 44.12 -2.62 0.435 2602 +2604 4 -79.0 44.03 -2.51 0.435 2603 +2605 4 -79.27 44.03 -0.72 0.435 2604 +2606 4 -80.38 44.39 -0.7 0.435 2605 +2607 4 -80.59 44.4 -0.93 0.435 2606 +2608 4 -80.79 44.49 -1.98 0.435 2607 +2609 4 -81.02 44.91 -1.94 0.435 2608 +2610 4 -81.51 44.93 -0.22 0.435 2609 +2611 4 -81.76 44.77 1.18 0.435 2610 +2612 4 -82.24 45.04 2.41 0.435 2611 +2613 4 -82.5 45.16 3.24 0.435 2612 +2614 4 -82.56 45.71 4.13 0.435 2613 +2615 4 -83.1 47.14 4.85 0.435 2614 +2616 4 -83.58 47.72 5.21 0.435 2615 +2617 4 -84.26 48.09 5.31 0.435 2616 +2618 4 -85.57 47.97 5.72 0.435 2617 +2619 4 -87.37 48.93 5.84 0.435 2618 +2620 4 -88.9 49.05 5.82 0.435 2619 +2621 4 -90.44 49.35 6.2 0.435 2620 +2622 4 -91.98 49.68 6.27 0.435 2621 +2623 4 -93.13 50.66 6.57 0.435 2622 +2624 4 -94.31 51.87 6.82 0.435 2623 +2625 4 -94.99 52.24 6.99 0.435 2624 +2626 4 -95.45 52.6 7.39 0.435 2625 +2627 4 3.0 7.07 -2.66 3.035 1 +2628 4 2.98 7.28 -2.64 3.035 2627 +2629 4 3.48 9.68 -2.38 2.6 2628 +2630 4 4.2 11.88 -2.14 2.385 2629 +2631 4 4.5 14.03 -1.84 2.165 2630 +2632 4 5.01 16.22 -1.6 2.275 2631 +2633 4 4.91 18.79 -1.34 2.275 2632 +2634 4 5.35 19.38 -2.54 0.325 2633 +2635 4 6.38 20.08 -2.36 0.325 2634 +2636 4 6.81 20.1 -2.28 0.325 2635 +2637 4 7.24 20.62 -2.89 0.325 2636 +2638 4 7.47 20.74 -3.86 0.325 2637 +2639 4 7.88 21.71 -4.57 0.325 2638 +2640 4 8.29 22.21 -5.05 0.325 2639 +2641 4 8.72 22.29 -5.48 0.325 2640 +2642 4 9.13 22.97 -5.47 0.325 2641 +2643 4 9.73 23.65 -5.39 0.435 2642 +2644 4 10.73 24.99 -5.22 0.435 2643 +2645 4 11.24 27.18 -4.98 0.435 2644 +2646 4 11.42 27.83 -4.91 0.435 2645 +2647 4 11.81 28.81 -5.79 0.435 2646 +2648 4 12.47 29.42 -6.99 0.435 2647 +2649 4 13.07 30.91 -8.4 0.435 2648 +2650 4 13.46 31.59 -8.47 0.435 2649 +2651 4 13.72 31.76 -10.1 0.435 2650 +2652 4 14.88 34.0 -9.92 0.435 2651 +2653 4 16.1 35.4 -10.05 0.435 2652 +2654 4 16.73 36.17 -10.85 0.435 2653 +2655 4 17.16 36.23 -11.22 0.435 2654 +2656 4 17.37 37.27 -12.69 0.435 2655 +2657 4 17.75 38.19 -12.96 0.435 2656 +2658 4 18.17 38.67 -13.2 0.435 2657 +2659 4 18.35 39.89 -14.43 0.435 2658 +2660 4 18.52 40.81 -14.78 0.435 2659 +2661 4 18.5 41.57 -15.83 0.435 2660 +2662 4 18.49 42.34 -16.96 0.435 2661 +2663 4 18.68 43.06 -17.48 0.435 2662 +2664 4 19.01 45.1 -18.17 0.435 2663 +2665 4 19.33 46.85 -18.05 0.435 2664 +2666 4 19.8 47.26 -19.66 0.435 2665 +2667 4 20.15 48.07 -18.96 0.435 2666 +2668 4 20.74 49.19 -18.76 0.435 2667 +2669 4 21.11 50.08 -18.66 0.435 2668 +2670 4 21.73 51.13 -20.12 0.435 2669 +2671 4 21.96 51.95 -21.69 0.435 2670 +2672 4 22.08 53.47 -21.6 0.435 2671 +2673 4 22.66 54.59 -21.47 0.435 2672 +2674 4 22.99 56.11 -21.3 0.435 2673 +2675 4 23.38 57.02 -21.5 0.435 2674 +2676 4 23.55 57.93 -21.78 0.435 2675 +2677 4 23.74 58.91 -22.65 0.435 2676 +2678 4 24.33 60.07 -23.12 0.435 2677 +2679 4 24.5 60.77 -23.43 0.435 2678 +2680 4 5.64 19.91 -1.2 2.275 2633 +2681 4 5.48 22.49 -0.94 2.275 2680 +2682 4 5.36 24.41 -0.74 2.275 2681 +2683 4 5.46 26.14 -0.56 2.275 2682 +2684 4 5.78 27.88 -0.38 2.275 2683 +2685 4 5.94 28.84 -0.27 2.275 2684 +2686 4 5.28 28.75 0.23 0.54 2685 +2687 4 4.63 28.71 0.21 0.54 2686 +2688 4 4.42 28.71 0.12 0.54 2687 +2689 4 4.16 29.07 0.61 0.54 2688 +2690 4 2.59 29.3 1.73 0.54 2689 +2691 4 2.12 29.65 2.21 0.54 2690 +2692 4 1.04 29.55 2.54 0.54 2691 +2693 4 0.08 29.95 4.37 0.435 2692 +2694 4 -0.79 30.33 4.39 0.435 2693 +2695 4 -0.8 30.56 4.19 0.435 2694 +2696 4 -1.48 30.95 4.29 0.435 2695 +2697 4 -2.2 31.69 5.1 0.435 2696 +2698 4 -3.14 32.4 6.06 0.435 2697 +2699 4 -3.86 33.15 6.79 0.435 2698 +2700 4 -3.89 33.56 6.98 0.435 2699 +2701 4 -3.94 34.19 7.2 0.435 2700 +2702 4 -4.86 34.74 7.69 0.435 2701 +2703 4 -5.96 35.11 7.55 0.435 2702 +2704 4 -6.0 35.49 8.12 0.435 2703 +2705 4 -6.51 35.91 10.11 0.435 2704 +2706 4 -7.45 36.38 11.18 0.435 2705 +2707 4 -8.38 36.89 11.97 0.435 2706 +2708 4 -9.56 38.04 12.81 0.435 2707 +2709 4 -10.75 39.63 13.4 0.435 2708 +2710 4 -11.26 40.38 14.37 0.435 2709 +2711 4 -12.21 41.36 14.9 0.435 2710 +2712 4 -12.71 42.11 15.65 0.435 2711 +2713 4 -13.44 42.8 16.98 0.435 2712 +2714 4 -13.96 43.76 17.9 0.435 2713 +2715 4 -15.11 44.23 18.97 0.435 2714 +2716 4 -16.25 44.45 20.26 0.435 2715 +2717 4 -17.65 46.1 20.39 0.435 2716 +2718 4 -17.68 46.53 20.44 0.435 2717 +2719 4 -18.21 47.43 21.8 0.435 2718 +2720 4 -19.14 47.96 22.51 0.435 2719 +2721 4 -19.41 48.52 23.24 0.435 2720 +2722 4 -19.95 49.4 24.83 0.435 2721 +2723 4 -20.88 50.36 25.51 0.435 2722 +2724 4 -22.09 51.74 26.14 0.435 2723 +2725 4 -23.0 52.52 26.5 0.435 2724 +2726 4 -23.95 53.73 26.76 0.435 2725 +2727 4 -25.35 54.88 27.45 0.435 2726 +2728 4 -25.88 56.08 28.16 0.435 2727 +2729 4 -27.31 57.85 29.06 0.435 2728 +2730 4 -29.43 59.99 30.14 0.435 2729 +2731 4 -31.52 62.0 30.45 0.435 2730 +2732 4 -33.11 62.97 30.58 0.435 2731 +2733 4 -34.12 65.28 30.8 0.435 2732 +2734 4 -36.02 67.96 31.03 0.435 2733 +2735 4 -37.7 70.21 31.22 0.435 2734 +2736 4 -39.61 73.12 31.48 0.435 2735 +2737 4 -41.94 75.56 31.68 0.435 2736 +2738 4 -42.55 78.31 31.95 0.435 2737 +2739 4 -44.88 80.98 32.17 0.435 2738 +2740 4 -47.95 84.66 32.48 0.435 2739 +2741 4 -49.78 86.26 32.6 0.435 2740 +2742 4 -50.31 87.47 33.24 0.435 2741 +2743 4 -50.89 89.29 34.17 0.435 2742 +2744 4 -52.06 90.42 35.24 0.435 2743 +2745 4 -53.98 92.83 35.97 0.435 2744 +2746 4 -55.83 94.64 36.12 0.435 2745 +2747 4 -57.89 96.23 36.31 0.435 2746 +2748 4 -59.06 97.68 36.43 0.435 2747 +2749 4 -60.07 99.75 36.62 0.435 2748 +2750 4 -61.49 101.57 37.15 0.435 2749 +2751 4 -63.0 104.69 37.59 0.435 2750 +2752 4 -63.54 106.1 38.25 0.435 2751 +2753 4 -64.52 107.47 39.12 0.435 2752 +2754 4 -65.05 108.64 40.13 0.435 2753 +2755 4 -65.13 109.67 40.69 0.435 2754 +2756 4 -65.66 110.64 41.53 0.435 2755 +2757 4 -66.17 111.89 41.72 0.435 2756 +2758 4 -66.25 112.88 42.58 0.435 2757 +2759 4 -66.75 113.66 43.1 0.435 2758 +2760 4 -66.82 114.72 43.36 0.435 2759 +2761 4 -67.77 115.69 43.89 0.435 2760 +2762 4 -68.89 116.26 44.07 0.435 2761 +2763 4 -69.21 117.44 45.02 0.435 2762 +2764 4 -69.94 118.45 45.26 0.435 2763 +2765 4 -69.81 119.72 45.69 0.435 2764 +2766 4 -15.97 43.66 19.73 0.435 2715 +2767 4 -16.79 42.96 19.64 0.435 2766 +2768 4 -17.44 42.62 20.49 0.435 2767 +2769 4 -18.28 42.12 20.64 0.435 2768 +2770 4 -19.6 41.98 21.13 0.435 2769 +2771 4 -20.29 42.3 21.82 0.435 2770 +2772 4 -20.98 42.08 23.51 0.435 2771 +2773 4 -22.1 42.38 24.2 0.435 2772 +2774 4 -22.98 42.01 25.11 0.435 2773 +2775 4 -23.41 41.7 25.76 0.435 2774 +2776 4 -24.25 40.89 26.78 0.435 2775 +2777 4 -25.71 39.72 26.77 0.435 2776 +2778 4 -26.52 38.57 26.87 0.435 2777 +2779 4 -26.89 37.39 27.48 0.435 2778 +2780 4 -28.8 36.6 27.65 0.435 2779 +2781 4 -29.2 35.64 28.3 0.435 2780 +2782 4 -30.48 35.08 28.75 0.435 2781 +2783 4 -30.93 34.72 29.82 0.435 2782 +2784 4 -31.32 34.29 29.47 0.435 2783 +2785 4 -31.35 34.2 30.36 0.435 2784 +2786 4 -31.78 33.59 31.8 0.435 2785 +2787 4 -32.43 33.01 32.93 0.435 2786 +2788 4 -33.27 32.26 33.29 0.435 2787 +2789 4 -33.52 32.37 34.2 0.435 2788 +2790 4 6.3 30.1 -0.5 2.06 2685 +2791 4 6.21 32.13 -1.27 2.06 2790 +2792 4 6.31 33.86 -1.09 1.95 2791 +2793 4 6.23 35.76 -2.71 1.95 2792 +2794 4 6.32 37.92 -2.48 1.95 2793 +2795 4 6.01 39.27 -2.35 1.95 2794 +2796 4 5.11 39.05 -0.73 0.435 2795 +2797 4 4.71 38.83 -0.92 0.435 2796 +2798 4 4.27 38.81 -1.01 0.435 2797 +2799 4 3.83 38.75 -0.72 0.435 2798 +2800 4 2.99 38.26 -0.64 0.54 2799 +2801 4 1.74 37.32 -0.77 0.54 2800 +2802 4 0.47 36.55 -0.28 0.54 2801 +2803 4 0.01 36.37 1.11 0.54 2802 +2804 4 -0.41 36.04 1.9 0.54 2803 +2805 4 -1.24 35.32 2.03 0.54 2804 +2806 4 -2.32 35.03 2.12 0.54 2805 +2807 4 -3.16 34.49 2.58 0.54 2806 +2808 4 -3.56 33.53 3.23 0.54 2807 +2809 4 -3.97 33.05 3.47 0.54 2808 +2810 4 -4.65 33.43 3.49 0.54 2809 +2811 4 -4.56 34.54 5.49 0.435 2810 +2812 4 -4.38 35.2 5.56 0.435 2811 +2813 4 -4.41 35.35 6.18 0.435 2812 +2814 4 -4.49 36.09 7.31 0.435 2813 +2815 4 -4.53 36.44 8.1 0.435 2814 +2816 4 -5.02 36.78 8.88 0.435 2815 +2817 4 -5.07 37.4 9.09 0.435 2816 +2818 4 -4.3 38.92 9.64 0.435 2817 +2819 4 -4.98 39.28 9.96 0.435 2818 +2820 4 -5.46 40.11 10.04 0.435 2819 +2821 4 -5.95 40.72 10.09 0.435 2820 +2822 4 -6.91 42.38 10.24 0.435 2821 +2823 4 -8.51 43.58 10.32 0.435 2822 +2824 4 -9.87 44.35 10.37 0.435 2823 +2825 4 -11.2 44.64 10.97 0.435 2824 +2826 4 -11.68 45.26 11.03 0.435 2825 +2827 4 -11.93 45.89 11.09 0.435 2826 +2828 4 -11.95 46.35 10.83 0.435 2827 +2829 4 -12.36 46.7 9.2 0.435 2828 +2830 4 -12.19 46.79 10.57 0.435 2829 +2831 4 -12.65 46.94 10.96 0.435 2830 +2832 4 -12.9 47.07 11.72 0.435 2831 +2833 4 -12.74 47.88 12.4 0.435 2832 +2834 4 -13.17 47.86 12.39 0.435 2833 +2835 4 -13.23 48.17 13.55 0.435 2834 +2836 4 -13.71 48.52 14.1 0.435 2835 +2837 4 -14.04 50.15 14.8 0.435 2836 +2838 4 -14.72 50.53 15.04 0.435 2837 +2839 4 -15.23 51.29 15.71 0.435 2838 +2840 4 -4.82 32.52 3.85 0.54 2810 +2841 4 -6.34 32.12 4.59 0.54 2840 +2842 4 -6.8 31.97 5.84 0.54 2841 +2843 4 -7.67 31.93 5.67 0.435 2842 +2844 4 -8.73 31.66 5.62 0.435 2843 +2845 4 -9.17 31.08 6.75 0.435 2844 +2846 4 -10.06 31.46 6.77 0.435 2845 +2847 4 -10.96 32.03 6.81 0.435 2846 +2848 4 -11.67 32.86 6.88 0.435 2847 +2849 4 -12.09 32.85 6.72 0.435 2848 +2850 4 -12.54 32.51 7.65 0.435 2849 +2851 4 -12.78 32.65 8.19 0.435 2850 +2852 4 -13.2 32.42 8.08 0.435 2851 +2853 4 -13.59 31.99 7.73 0.435 2852 +2854 4 -14.01 31.2 8.84 0.435 2853 +2855 4 -14.4 30.29 8.96 0.435 2854 +2856 4 -14.8 29.54 9.71 0.435 2855 +2857 4 -15.42 28.54 10.64 0.435 2856 +2858 4 -16.03 27.56 11.35 0.435 2857 +2859 4 -16.47 27.25 11.92 0.325 2858 +2860 4 -16.87 26.82 11.63 0.325 2859 +2861 4 -16.87 26.81 11.78 0.325 2860 +2862 4 -17.31 26.51 12.27 0.325 2861 +2863 4 -17.3 26.0 13.04 0.325 2862 +2864 4 -17.73 25.68 13.75 0.325 2863 +2865 4 -17.71 25.2 14.16 0.325 2864 +2866 4 -18.15 24.93 14.42 0.325 2865 +2867 4 6.01 39.73 -3.51 1.95 2795 +2868 4 6.01 39.83 -3.5 1.95 2867 +2869 4 5.88 41.88 -3.29 1.735 2868 +2870 4 5.82 42.74 -3.2 1.735 2869 +2871 4 5.94 45.07 -4.62 1.735 2870 +2872 4 5.85 46.56 -4.46 1.735 2871 +2873 4 6.01 48.21 -5.65 1.735 2872 +2874 4 6.35 49.75 -5.55 1.735 2873 +2875 4 6.51 51.43 -7.11 1.735 2874 +2876 4 6.85 52.75 -6.97 1.735 2875 +2877 4 7.21 54.39 -7.92 1.735 2876 +2878 4 7.81 56.14 -9.68 1.735 2877 +2879 4 8.84 57.58 -10.48 1.735 2878 +2880 4 9.61 59.18 -10.75 1.735 2879 +2881 4 10.39 60.51 -10.6 1.735 2880 +2882 4 9.14 60.71 -12.41 0.54 2881 +2883 4 8.27 60.66 -12.44 0.54 2882 +2884 4 7.18 60.81 -12.38 0.54 2883 +2885 4 5.84 61.37 -12.35 0.54 2884 +2886 4 5.33 62.63 -12.24 0.54 2885 +2887 4 4.58 64.09 -12.1 0.54 2886 +2888 4 2.54 65.47 -12.01 0.54 2887 +2889 4 0.95 66.98 -12.95 0.54 2888 +2890 4 0.43 68.46 -12.8 0.54 2889 +2891 4 -0.12 70.35 -12.62 0.54 2890 +2892 4 -1.77 72.41 -12.45 0.54 2891 +2893 4 -3.09 72.76 -12.44 0.54 2892 +2894 4 -4.42 72.82 -11.71 0.54 2893 +2895 4 -6.0 73.57 -11.59 0.435 2894 +2896 4 -6.65 73.54 -11.61 0.435 2895 +2897 4 -7.79 74.85 -12.34 0.435 2896 +2898 4 -7.95 74.5 -13.35 0.435 2897 +2899 4 -7.94 75.08 -14.8 0.435 2898 +2900 4 -8.59 75.36 -15.84 0.435 2899 +2901 4 -9.19 75.51 -17.72 0.435 2900 +2902 4 -9.63 75.71 -17.71 0.435 2901 +2903 4 -9.87 75.92 -17.78 0.435 2902 +2904 4 -9.82 76.11 -19.56 0.435 2903 +2905 4 -9.81 76.19 -20.38 0.435 2904 +2906 4 -9.98 76.31 -21.65 0.435 2905 +2907 4 -9.94 76.47 -23.22 0.435 2906 +2908 4 -9.91 76.6 -24.49 0.435 2907 +2909 4 -10.31 75.93 -24.56 0.435 2908 +2910 4 -10.12 77.17 -26.01 0.435 2909 +2911 4 -11.26 77.95 -25.81 0.435 2910 +2912 4 -11.7 78.47 -26.97 0.435 2911 +2913 4 -11.66 78.61 -28.31 0.435 2912 +2914 4 -11.65 79.21 -29.98 0.435 2913 +2915 4 -11.65 79.51 -30.7 0.435 2914 +2916 4 -11.64 79.8 -31.43 0.435 2915 +2917 4 -11.42 80.12 -32.22 0.435 2916 +2918 4 -11.45 81.1 -33.33 0.435 2917 +2919 4 -11.45 81.65 -34.47 0.435 2918 +2920 4 -11.44 81.92 -35.04 0.435 2919 +2921 4 -12.33 82.57 -35.6 0.435 2920 +2922 4 -12.38 83.78 -36.76 0.435 2921 +2923 4 -12.38 84.32 -37.83 0.435 2922 +2924 4 -13.08 85.41 -38.27 0.435 2923 +2925 4 -13.08 85.94 -39.19 0.435 2924 +2926 4 -13.11 86.69 -40.17 0.435 2925 +2927 4 -12.9 87.2 -40.87 0.435 2926 +2928 4 -11.38 87.59 -41.55 0.435 2927 +2929 4 -11.34 87.74 -43.04 0.435 2928 +2930 4 -11.86 89.01 -42.99 0.435 2929 +2931 4 -11.88 89.72 -43.6 0.435 2930 +2932 4 -11.92 90.66 -44.26 0.435 2931 +2933 4 -12.17 91.55 -44.76 0.435 2932 +2934 4 -12.38 91.87 -45.79 0.435 2933 +2935 4 -12.84 92.56 -46.33 0.435 2934 +2936 4 -12.89 93.41 -46.33 0.435 2935 +2937 4 -13.78 94.34 -47.53 0.435 2936 +2938 4 -13.79 95.14 -48.89 0.435 2937 +2939 4 -13.59 95.6 -49.13 0.435 2938 +2940 4 -13.38 95.66 -49.5 0.435 2939 +2941 4 -12.95 96.19 -50.18 0.435 2940 +2942 4 -12.99 97.1 -50.54 0.435 2941 +2943 4 -13.01 97.58 -51.02 0.435 2942 +2944 4 -13.48 98.48 -51.62 0.435 2943 +2945 4 -14.09 98.57 -52.9 0.435 2944 +2946 4 -14.75 99.04 -53.7 0.435 2945 +2947 4 -15.41 99.52 -54.57 0.435 2946 +2948 4 -16.08 100.2 -55.19 0.435 2947 +2949 4 -16.27 100.26 -55.95 0.435 2948 +2950 4 -17.17 100.95 -56.87 0.435 2949 +2951 4 -18.99 102.35 -56.77 0.435 2950 +2952 4 -19.92 103.9 -57.69 0.435 2951 +2953 4 -20.8 104.63 -58.92 0.435 2952 +2954 4 -21.61 107.17 -58.75 0.435 2953 +2955 4 -22.15 108.84 -58.59 0.435 2954 +2956 4 -21.92 109.48 -60.25 0.435 2955 +2957 4 -22.48 111.38 -60.14 0.435 2956 +2958 4 -22.5 111.85 -60.55 0.435 2957 +2959 4 -20.93 115.05 -61.0 0.435 2958 +2960 4 -20.98 115.94 -61.36 0.435 2959 +2961 4 -20.8 116.64 -61.59 0.435 2960 +2962 4 -10.54 76.41 -25.12 0.435 2909 +2963 4 -10.72 76.53 -26.47 0.435 2962 +2964 4 -11.15 77.06 -27.64 0.435 2963 +2965 4 -11.13 77.16 -28.68 0.435 2964 +2966 4 -11.11 77.5 -29.77 0.435 2965 +2967 4 -11.12 77.77 -30.35 0.435 2966 +2968 4 -11.75 78.28 -31.59 0.435 2967 +2969 4 -12.86 78.67 -31.8 0.435 2968 +2970 4 -12.87 78.65 -31.57 0.435 2969 +2971 4 -13.28 78.72 -32.56 0.435 2970 +2972 4 -13.3 79.18 -32.82 0.435 2971 +2973 4 -14.16 79.43 -33.72 0.435 2972 +2974 4 -15.04 80.13 -34.64 0.435 2973 +2975 4 -15.94 80.48 -34.39 0.435 2974 +2976 4 -16.38 80.66 -34.25 0.435 2975 +2977 4 -16.4 80.85 -34.07 0.435 2976 +2978 4 -17.06 81.3 -34.57 0.435 2977 +2979 4 -17.71 81.26 -34.59 0.435 2978 +2980 4 -18.57 81.83 -36.36 0.435 2979 +2981 4 -19.22 81.99 -36.36 0.435 2980 +2982 4 -19.66 81.94 -36.14 0.435 2981 +2983 4 -20.54 82.39 -36.8 0.435 2982 +2984 4 -21.8 82.49 -38.63 0.435 2983 +2985 4 -23.06 82.52 -39.71 0.435 2984 +2986 4 -23.5 82.46 -39.43 0.435 2985 +2987 4 -23.49 82.51 -39.87 0.435 2986 +2988 4 -24.11 82.36 -40.88 0.435 2987 +2989 4 -24.95 82.12 -41.23 0.435 2988 +2990 4 -25.98 81.99 -42.69 0.435 2989 +2991 4 -27.03 81.83 -43.94 0.435 2990 +2992 4 -27.65 81.66 -44.73 0.435 2991 +2993 4 -29.6 81.8 -45.29 0.435 2992 +2994 4 -31.12 82.69 -46.51 0.435 2993 +2995 4 -32.18 82.76 -47.81 0.435 2994 +2996 4 -33.91 83.23 -49.16 0.435 2995 +2997 4 -35.18 83.24 -50.09 0.435 2996 +2998 4 -36.51 84.11 -50.94 0.435 2997 +2999 4 -37.97 83.93 -52.2 0.435 2998 +3000 4 -39.06 83.87 -52.38 0.435 2999 +3001 4 -40.72 83.47 -53.74 0.435 3000 +3002 4 -42.01 83.19 -53.88 0.435 3001 +3003 4 -43.69 82.48 -54.36 0.435 3002 +3004 4 -45.64 82.59 -54.55 0.435 3003 +3005 4 -46.48 82.12 -54.7 0.435 3004 +3006 4 -47.97 82.11 -55.64 0.435 3005 +3007 4 -48.84 82.56 -56.29 0.435 3006 +3008 4 -50.16 82.99 -56.96 0.435 3007 +3009 4 -51.19 83.1 -58.77 0.435 3008 +3010 4 -4.78 75.24 -12.23 0.54 2893 +3011 4 -6.22 77.52 -12.02 0.54 3010 +3012 4 -7.69 80.02 -11.8 0.54 3011 +3013 4 -7.97 81.89 -13.34 0.54 3012 +3014 4 -8.26 83.44 -13.86 0.54 3013 +3015 4 -8.3 84.39 -14.6 0.54 3014 +3016 4 -8.67 86.73 -14.44 0.54 3015 +3017 4 -9.65 88.88 -14.77 0.54 3016 +3018 4 -10.54 89.56 -15.55 0.54 3017 +3019 4 -10.6 90.92 -16.24 0.54 3018 +3020 4 -11.49 91.9 -17.89 0.54 3019 +3021 4 -11.49 92.43 -18.74 0.54 3020 +3022 4 -11.95 93.37 -19.71 0.54 3021 +3023 4 -13.83 95.86 -19.72 0.54 3022 +3024 4 -15.05 98.0 -20.13 0.54 3023 +3025 4 -16.44 99.95 -21.02 0.54 3024 +3026 4 -17.68 102.49 -21.16 0.54 3025 +3027 4 -18.65 104.16 -21.09 0.54 3026 +3028 4 -20.59 107.5 -20.86 0.54 3027 +3029 4 -21.64 110.5 -21.17 0.54 3028 +3030 4 -23.5 112.56 -21.09 0.54 3029 +3031 4 -25.02 116.15 -21.12 0.54 3030 +3032 4 -26.44 118.01 -21.04 0.54 3031 +3033 4 -27.85 119.64 -20.91 0.54 3032 +3034 4 -27.98 121.57 -20.71 0.54 3033 +3035 4 -27.92 124.16 -20.44 0.54 3034 +3036 4 -28.67 125.92 -20.65 0.435 3035 +3037 4 -29.2 127.4 -20.51 0.435 3036 +3038 4 -29.34 129.58 -20.67 0.435 3037 +3039 4 -29.5 132.15 -20.41 0.435 3038 +3040 4 -29.58 133.45 -20.5 0.435 3039 +3041 4 -30.37 135.78 -20.42 0.435 3040 +3042 4 -30.98 138.84 -20.88 0.435 3041 +3043 4 -31.67 139.92 -21.38 0.435 3042 +3044 4 -32.43 141.61 -21.23 0.435 3043 +3045 4 -33.45 143.91 -21.01 0.435 3044 +3046 4 -34.64 145.56 -20.87 0.435 3045 +3047 4 -36.27 147.18 -20.74 0.435 3046 +3048 4 -36.78 148.69 -20.9 0.435 3047 +3049 4 -37.45 152.32 -20.62 0.435 3048 +3050 4 -37.63 155.33 -20.53 0.435 3049 +3051 4 -38.17 157.06 -20.82 0.435 3050 +3052 4 -38.28 159.07 -21.29 0.435 3051 +3053 4 -39.1 161.85 -21.4 0.435 3052 +3054 4 -39.2 163.61 -21.75 0.435 3053 +3055 4 -39.68 164.7 -22.03 0.435 3054 +3056 4 -39.76 166.29 -22.69 0.435 3055 +3057 4 -39.83 167.62 -23.16 0.435 3056 +3058 4 -39.91 168.93 -23.17 0.435 3057 +3059 4 -39.99 170.24 -23.27 0.435 3058 +3060 4 -40.07 171.78 -23.57 0.435 3059 +3061 4 -40.11 172.44 -23.65 0.435 3060 +3062 4 -40.59 173.28 -23.64 0.435 3061 +3063 4 -41.06 174.22 -24.54 0.435 3062 +3064 4 -41.52 174.62 -24.51 0.435 3063 +3065 4 10.83 61.1 -11.73 1.735 2881 +3066 4 11.81 62.66 -11.55 1.735 3065 +3067 4 11.57 63.18 -11.5 1.735 3066 +3068 4 10.69 64.17 -13.38 0.54 3067 +3069 4 10.23 64.56 -13.2 0.54 3068 +3070 4 10.2 64.99 -13.15 0.54 3069 +3071 4 9.3 65.36 -13.14 0.54 3070 +3072 4 8.17 66.16 -13.08 0.54 3071 +3073 4 7.72 66.57 -13.2 0.54 3072 +3074 4 7.25 67.24 -13.59 0.54 3073 +3075 4 6.55 68.1 -13.97 0.54 3074 +3076 4 5.86 68.94 -14.12 0.54 3075 +3077 4 4.95 70.06 -15.02 0.54 3076 +3078 4 4.44 71.34 -15.05 0.54 3077 +3079 4 4.42 72.08 -15.95 0.54 3078 +3080 4 4.38 73.0 -16.38 0.54 3079 +3081 4 4.08 74.52 -16.61 0.54 3080 +3082 4 4.25 75.45 -17.11 0.54 3081 +3083 4 4.22 76.14 -17.49 0.54 3082 +3084 4 4.63 76.89 -18.16 0.54 3083 +3085 4 5.19 78.71 -18.71 0.435 3084 +3086 4 5.14 79.9 -19.65 0.435 3085 +3087 4 5.11 80.55 -19.73 0.435 3086 +3088 4 5.1 81.05 -20.43 0.435 3087 +3089 4 4.6 82.4 -21.21 0.435 3088 +3090 4 4.55 83.56 -21.91 0.435 3089 +3091 4 4.73 84.51 -22.49 0.435 3090 +3092 4 4.87 86.06 -22.77 0.435 3091 +3093 4 4.4 87.0 -23.74 0.435 3092 +3094 4 4.08 88.73 -23.8 0.435 3093 +3095 4 3.98 90.77 -24.72 0.435 3094 +3096 4 3.62 93.14 -24.79 0.435 3095 +3097 4 3.53 94.92 -25.21 0.435 3096 +3098 4 3.48 95.81 -25.42 0.435 3097 +3099 4 2.53 97.34 -26.19 0.435 3098 +3100 4 2.46 98.91 -26.7 0.435 3099 +3101 4 1.51 100.37 -26.65 0.435 3100 +3102 4 1.42 101.69 -26.89 0.435 3101 +3103 4 0.4 104.51 -27.46 0.435 3102 +3104 4 0.34 105.61 -27.65 0.435 3103 +3105 4 -0.74 109.23 -27.6 0.435 3104 +3106 4 -0.83 111.04 -28.24 0.435 3105 +3107 4 -0.92 112.82 -28.81 0.435 3106 +3108 4 -0.82 114.8 -28.84 0.435 3107 +3109 4 -0.86 115.69 -29.2 0.435 3108 +3110 4 -0.94 116.77 -29.16 0.435 3109 +3111 4 -0.77 117.95 -29.94 0.435 3110 +3112 4 -0.38 118.88 -30.28 0.435 3111 +3113 4 -0.82 119.6 -31.27 0.435 3112 +3114 4 -0.38 119.68 -31.78 0.435 3113 +3115 4 11.52 63.81 -11.43 1.735 3067 +3116 4 11.74 63.82 -11.43 1.735 3115 +3117 4 13.25 63.84 -11.47 1.735 3116 +3118 4 12.89 65.33 -9.36 0.435 3117 +3119 4 12.86 66.0 -9.52 0.435 3118 +3120 4 12.38 66.35 -9.04 0.435 3119 +3121 4 12.12 66.36 -7.24 0.435 3120 +3122 4 11.63 67.21 -7.24 0.435 3121 +3123 4 11.6 67.66 -7.41 0.435 3122 +3124 4 11.58 67.57 -6.53 0.435 3123 +3125 4 11.55 67.71 -5.76 0.435 3124 +3126 4 11.53 67.65 -5.16 0.435 3125 +3127 4 11.48 67.98 -4.3 0.435 3126 +3128 4 11.47 68.15 -3.91 0.435 3127 +3129 4 11.6 68.9 -2.54 0.435 3128 +3130 4 11.97 69.51 -1.86 0.435 3129 +3131 4 12.27 71.11 -0.41 0.435 3130 +3132 4 12.4 72.17 0.0 0.435 3131 +3133 4 12.9 74.54 0.4 0.435 3132 +3134 4 12.73 77.06 1.26 0.435 3133 +3135 4 12.81 78.97 1.76 0.435 3134 +3136 4 13.33 80.92 2.19 0.435 3135 +3137 4 13.03 81.37 3.89 0.435 3136 +3138 4 13.37 82.9 3.99 0.435 3137 +3139 4 13.94 84.23 4.21 0.435 3138 +3140 4 14.28 85.23 5.23 0.435 3139 +3141 4 14.23 85.58 6.09 0.435 3140 +3142 4 13.48 86.72 7.09 0.435 3141 +3143 4 13.17 88.21 7.24 0.435 3142 +3144 4 13.06 89.92 7.41 0.435 3143 +3145 4 12.95 91.64 7.59 0.435 3144 +3146 4 11.87 95.01 7.91 0.435 3145 +3147 4 12.01 95.28 9.68 0.435 3146 +3148 4 11.52 96.32 9.78 0.435 3147 +3149 4 11.44 97.4 9.81 0.435 3148 +3150 4 11.38 98.23 10.19 0.435 3149 +3151 4 11.35 98.63 10.54 0.435 3150 +3152 4 10.65 98.92 11.54 0.435 3151 +3153 4 10.17 99.46 12.25 0.435 3152 +3154 4 9.61 100.87 13.06 0.435 3153 +3155 4 9.55 101.71 13.3 0.435 3154 +3156 4 9.19 104.04 13.61 0.435 3155 +3157 4 9.07 105.97 13.81 0.435 3156 +3158 4 8.93 107.55 15.24 0.435 3157 +3159 4 8.79 109.7 15.46 0.435 3158 +3160 4 7.78 111.79 15.66 0.435 3159 +3161 4 7.23 113.42 16.41 0.435 3160 +3162 4 7.14 114.69 16.7 0.435 3161 +3163 4 7.26 116.18 17.08 0.435 3162 +3164 4 5.78 118.62 17.75 0.435 3163 +3165 4 5.29 119.67 17.92 0.435 3164 +3166 4 5.44 120.49 18.39 0.435 3165 +3167 4 5.72 122.61 19.07 0.435 3166 +3168 4 6.0 124.99 19.39 0.435 3167 +3169 4 6.73 127.18 19.64 0.435 3168 +3170 4 7.67 129.38 19.97 0.435 3169 +3171 4 9.27 131.62 20.31 0.435 3170 +3172 4 9.84 132.7 20.66 0.435 3171 +3173 4 10.56 134.66 21.26 0.435 3172 +3174 4 11.08 136.57 21.99 0.435 3173 +3175 4 11.64 137.83 22.67 0.435 3174 +3176 4 11.94 139.56 23.61 0.435 3175 +3177 4 12.46 141.23 24.62 0.435 3176 +3178 4 12.83 142.07 25.09 0.435 3177 +3179 4 13.15 143.55 25.71 0.435 3178 +3180 4 13.25 145.0 26.46 0.435 3179 +3181 4 14.59 147.82 27.31 0.435 3180 +3182 4 14.89 149.25 28.45 0.435 3181 +3183 4 15.2 150.4 30.22 0.435 3182 +3184 4 16.2 151.74 30.39 0.435 3183 +3185 4 16.82 152.18 30.75 0.435 3184 +3186 4 17.37 153.69 31.22 0.435 3185 +3187 4 17.9 154.62 33.14 0.435 3186 +3188 4 18.71 155.53 33.25 0.435 3187 +3189 4 19.64 157.39 34.75 0.435 3188 +3190 4 19.77 158.42 35.39 0.435 3189 +3191 4 20.74 160.19 35.66 0.435 3190 +3192 4 21.26 162.15 36.03 0.435 3191 +3193 4 22.91 163.28 36.57 0.435 3192 +3194 4 23.68 164.78 37.26 0.435 3193 +3195 4 24.03 165.84 37.68 0.435 3194 +3196 4 24.79 167.34 38.39 0.435 3195 +3197 4 24.84 169.66 39.23 0.435 3196 +3198 4 25.09 172.44 39.68 0.435 3197 +3199 4 24.97 174.12 40.3 0.435 3198 +3200 4 24.8 176.66 40.86 0.435 3199 +3201 4 24.7 177.86 41.74 0.435 3200 +3202 4 24.82 178.89 42.37 0.435 3201 +3203 4 24.01 181.41 42.76 0.435 3202 +3204 4 23.5 182.66 43.03 0.435 3203 +3205 4 23.39 184.36 43.28 0.435 3204 +3206 4 23.26 186.28 43.63 0.435 3205 +3207 4 22.7 187.88 44.53 0.435 3206 +3208 4 22.96 190.22 45.31 0.435 3207 +3209 4 23.5 191.94 45.8 0.435 3208 +3210 4 22.95 193.82 46.05 0.435 3209 +3211 4 23.02 195.76 46.41 0.435 3210 +3212 4 22.95 196.76 47.19 0.435 3211 +3213 4 22.88 197.31 48.15 0.435 3212 +3214 4 21.95 198.07 48.73 0.435 3213 +3215 4 22.29 199.59 48.9 0.435 3214 +3216 4 22.45 200.44 49.22 0.435 3215 +3217 4 22.37 201.19 50.27 0.435 3216 +3218 4 22.3 202.24 50.53 0.435 3217 +3219 4 21.82 202.86 50.58 0.435 3218 +3220 4 21.1 203.62 51.17 0.435 3219 +3221 4 20.21 203.99 51.26 0.435 3220 +3222 4 19.9 205.44 51.71 0.435 3221 +3223 4 20.42 207.19 51.97 0.435 3222 +3224 4 21.61 208.97 52.42 0.435 3223 +3225 4 22.34 211.16 52.73 0.435 3224 +3226 4 24.35 213.47 53.1 0.435 3225 +3227 4 24.84 215.84 53.66 0.435 3226 +3228 4 25.98 218.24 54.3 0.435 3227 +3229 4 26.73 219.72 55.16 0.435 3228 +3230 4 27.48 221.44 55.81 0.435 3229 +3231 4 27.98 223.81 56.37 0.435 3230 +3232 4 28.33 224.65 56.91 0.435 3231 +3233 4 29.14 225.76 57.12 0.435 3232 +3234 4 29.24 227.22 57.8 0.435 3233 +3235 4 29.79 228.5 58.4 0.435 3234 +3236 4 30.33 230.21 58.96 0.435 3235 +3237 4 30.69 231.3 59.24 0.435 3236 +3238 4 30.8 232.52 60.19 0.435 3237 +3239 4 30.71 233.79 60.4 0.435 3238 +3240 4 14.76 86.98 7.6 0.435 3141 +3241 4 15.26 88.6 9.07 0.435 3240 +3242 4 15.39 89.85 9.57 0.435 3241 +3243 4 15.1 90.35 10.91 0.435 3242 +3244 4 15.22 91.87 11.07 0.435 3243 +3245 4 15.79 93.19 11.22 0.435 3244 +3246 4 15.76 94.42 9.83 0.325 3245 +3247 4 15.0 96.1 9.99 0.325 3246 +3248 4 14.21 98.2 10.19 0.325 3247 +3249 4 13.43 100.31 10.39 0.325 3248 +3250 4 12.58 103.47 10.69 0.325 3249 +3251 4 12.58 106.7 11.03 0.325 3250 +3252 4 14.55 64.69 -12.56 1.735 3117 +3253 4 15.81 65.98 -13.89 1.735 3252 +3254 4 16.36 67.52 -13.72 1.735 3253 +3255 4 16.59 67.59 -14.31 0.435 3254 +3256 4 17.05 67.18 -14.27 0.435 3255 +3257 4 17.53 66.85 -14.97 0.435 3256 +3258 4 17.97 66.91 -15.26 0.435 3257 +3259 4 17.76 66.94 -15.71 0.435 3258 +3260 4 18.22 67.07 -16.67 0.435 3259 +3261 4 18.67 67.16 -17.25 0.435 3260 +3262 4 19.12 66.8 -17.65 0.435 3261 +3263 4 19.58 66.61 -17.74 0.435 3262 +3264 4 20.04 66.21 -17.77 0.435 3263 +3265 4 20.92 66.3 -18.11 0.435 3264 +3266 4 21.74 67.02 -18.25 0.435 3265 +3267 4 22.55 67.93 -18.14 0.435 3266 +3268 4 22.96 68.41 -18.37 0.435 3267 +3269 4 23.5 70.22 -18.62 0.435 3268 +3270 4 24.35 70.71 -18.7 0.435 3269 +3271 4 24.6 71.08 -20.17 0.435 3270 +3272 4 24.77 71.55 -20.2 0.435 3271 +3273 4 25.42 72.35 -21.37 0.435 3272 +3274 4 25.44 72.44 -22.27 0.435 3273 +3275 4 26.1 72.54 -22.78 0.435 3274 +3276 4 26.91 73.47 -22.81 0.435 3275 +3277 4 26.93 73.57 -23.7 0.435 3276 +3278 4 27.56 74.06 -23.93 0.435 3277 +3279 4 27.76 74.79 -24.61 0.435 3278 +3280 4 27.99 74.91 -25.57 0.435 3279 +3281 4 28.64 74.96 -25.7 0.435 3280 +3282 4 29.24 75.88 -25.82 0.435 3281 +3283 4 29.46 75.91 -26.04 0.435 3282 +3284 4 29.7 76.01 -26.78 0.435 3283 +3285 4 30.58 76.15 -27.65 0.435 3284 +3286 4 30.82 75.97 -27.96 0.435 3285 +3287 4 31.27 76.09 -28.76 0.435 3286 +3288 4 31.28 76.14 -29.28 0.435 3287 +3289 4 32.19 75.82 -29.9 0.435 3288 +3290 4 32.43 75.94 -30.78 0.435 3289 +3291 4 33.12 75.59 -31.18 0.435 3290 +3292 4 33.35 75.45 -31.87 0.435 3291 +3293 4 33.84 75.15 -32.87 0.435 3292 +3294 4 34.33 74.57 -33.29 0.435 3293 +3295 4 35.03 74.06 -34.15 0.435 3294 +3296 4 35.52 73.23 -34.31 0.435 3295 +3297 4 36.01 72.94 -35.38 0.435 3296 +3298 4 36.49 72.37 -35.8 0.435 3297 +3299 4 36.58 71.36 -36.59 0.435 3298 +3300 4 37.28 70.55 -36.73 0.435 3299 +3301 4 37.57 69.76 -37.33 0.435 3300 +3302 4 37.84 69.24 -38.44 0.435 3301 +3303 4 38.1 68.89 -39.14 0.435 3302 +3304 4 38.35 68.49 -39.33 0.435 3303 +3305 4 38.57 69.09 -40.77 0.435 3304 +3306 4 39.04 68.68 -40.72 0.435 3305 +3307 4 39.46 68.69 -40.56 0.435 3306 +3308 4 39.71 68.28 -40.67 0.435 3307 +3309 4 39.96 67.9 -41.01 0.435 3308 +3310 4 40.45 67.35 -41.73 0.435 3309 +3311 4 40.72 66.78 -42.38 0.435 3310 +3312 4 40.73 66.8 -42.61 0.435 3311 +3313 4 40.78 66.79 -44.49 0.435 3312 +3314 4 41.04 66.72 -45.77 0.435 3313 +3315 4 41.07 66.56 -46.39 0.435 3314 +3316 4 41.32 66.69 -47.51 0.435 3315 +3317 4 41.6 65.92 -48.34 0.435 3316 +3318 4 41.64 65.87 -49.85 0.435 3317 +3319 4 41.67 66.0 -51.11 0.435 3318 +3320 4 41.94 65.66 -52.05 0.435 3319 +3321 4 41.98 65.53 -52.73 0.435 3320 +3322 4 42.21 65.35 -53.05 0.435 3321 +3323 4 42.24 65.49 -54.32 0.435 3322 +3324 4 42.47 65.6 -55.28 0.435 3323 +3325 4 42.51 65.46 -55.89 0.435 3324 +3326 4 42.54 65.59 -57.24 0.435 3325 +3327 4 42.79 65.5 -58.37 0.435 3326 +3328 4 43.28 65.21 -59.52 0.435 3327 +3329 4 43.54 65.11 -60.43 0.435 3328 +3330 4 43.98 64.94 -60.66 0.435 3329 +3331 4 44.43 64.77 -60.82 0.435 3330 +3332 4 44.91 64.44 -61.59 0.435 3331 +3333 4 45.37 64.05 -61.7 0.435 3332 +3334 4 45.82 63.87 -61.86 0.435 3333 +3335 4 46.48 63.71 -61.93 0.435 3334 +3336 4 47.57 63.79 -61.98 0.435 3335 +3337 4 48.37 64.69 -61.87 0.435 3336 +3338 4 48.83 64.82 -62.82 0.435 3337 +3339 4 48.86 64.93 -63.86 0.435 3338 +3340 4 49.29 64.96 -63.92 0.435 3339 +3341 4 49.53 65.08 -64.89 0.435 3340 +3342 4 50.82 65.65 -65.4 0.435 3341 +3343 4 52.12 65.5 -65.24 0.435 3342 +3344 4 53.39 65.98 -64.92 0.435 3343 +3345 4 54.04 66.02 -64.91 0.435 3344 +3346 4 55.14 65.66 -64.92 0.435 3345 +3347 4 56.66 65.75 -64.8 0.435 3346 +3348 4 57.54 65.36 -64.82 0.435 3347 +3349 4 58.62 65.42 -64.79 0.435 3348 +3350 4 59.07 65.22 -64.65 0.435 3349 +3351 4 60.58 65.58 -65.03 0.435 3350 +3352 4 61.44 65.63 -65.0 0.435 3351 +3353 4 61.67 65.66 -65.14 0.435 3352 +3354 4 62.15 65.15 -66.16 0.435 3353 +3355 4 62.63 65.04 -67.0 0.435 3354 +3356 4 62.87 64.66 -67.4 0.435 3355 +3357 4 63.35 64.32 -67.95 0.435 3356 +3358 4 64.03 63.95 -68.12 0.435 3357 +3359 4 65.16 63.42 -68.6 0.435 3358 +3360 4 65.86 63.12 -69.6 0.435 3359 +3361 4 66.29 63.16 -69.74 0.435 3360 +3362 4 67.0 62.64 -70.53 0.435 3361 +3363 4 67.91 62.34 -71.29 0.435 3362 +3364 4 68.61 61.75 -71.49 0.435 3363 +3365 4 68.63 61.58 -71.88 0.435 3364 +3366 4 69.09 61.2 -72.21 0.435 3365 +3367 4 69.59 60.93 -73.5 0.435 3366 +3368 4 70.06 60.58 -74.06 0.435 3367 +3369 4 70.3 60.72 -75.17 0.435 3368 +3370 4 70.78 60.38 -75.87 0.435 3369 +3371 4 71.04 60.33 -77.3 0.435 3370 +3372 4 71.5 59.94 -77.41 0.435 3371 +3373 4 71.99 59.13 -77.7 0.435 3372 +3374 4 72.18 59.27 -76.93 0.435 3373 +3375 4 72.39 59.29 -76.92 0.435 3374 +3376 4 72.63 58.86 -76.81 0.435 3375 +3377 4 72.63 58.9 -77.19 0.435 3376 +3378 4 72.87 58.99 -78.0 0.435 3377 +3379 4 73.1 59.57 -79.21 0.435 3378 +3380 4 74.62 59.45 -79.19 0.435 3379 +3381 4 74.86 59.55 -80.01 0.435 3380 +3382 4 74.89 59.7 -81.42 0.435 3381 +3383 4 75.78 59.55 -81.64 0.435 3382 +3384 4 76.0 59.59 -81.94 0.435 3383 +3385 4 76.47 59.49 -82.69 0.435 3384 +3386 4 76.92 59.63 -83.79 0.435 3385 +3387 4 77.38 59.5 -84.4 0.435 3386 +3388 4 77.66 59.49 -86.27 0.435 3387 +3389 4 78.1 59.31 -86.36 0.435 3388 +3390 4 78.36 59.22 -87.42 0.435 3389 +3391 4 78.59 59.27 -87.78 0.435 3390 +3392 4 79.03 59.39 -88.66 0.435 3391 +3393 4 79.72 59.04 -89.06 0.435 3392 +3394 4 80.0 58.79 -90.73 0.435 3393 +3395 4 81.14 58.24 -90.99 0.435 3394 +3396 4 82.05 57.71 -91.55 0.435 3395 +3397 4 82.73 57.31 -91.58 0.435 3396 +3398 4 83.82 57.18 -91.64 0.435 3397 +3399 4 16.39 67.89 -15.27 1.735 3254 +3400 4 16.95 69.7 -16.05 1.515 3399 +3401 4 17.06 71.43 -15.87 1.515 3400 +3402 4 17.17 72.62 -14.76 1.41 3401 +3403 4 17.53 73.74 -14.79 1.515 3402 +3404 4 17.48 74.59 -14.7 1.515 3403 +3405 4 17.45 75.02 -14.66 1.515 3404 +3406 4 16.45 73.5 -14.24 0.435 3405 +3407 4 15.36 73.43 -14.27 0.435 3406 +3408 4 13.39 73.76 -14.35 0.435 3407 +3409 4 11.64 74.09 -14.44 0.435 3408 +3410 4 10.05 74.79 -13.8 0.435 3409 +3411 4 9.35 75.57 -13.44 0.435 3410 +3412 4 7.4 75.18 -12.92 0.435 3411 +3413 4 4.82 74.81 -13.02 0.435 3412 +3414 4 2.25 74.44 -13.12 0.435 3413 +3415 4 0.35 73.55 -13.25 0.435 3414 +3416 4 -1.0 74.06 -12.63 0.435 3415 +3417 4 -1.47 74.68 -12.58 0.435 3416 +3418 4 -2.36 75.29 -12.76 0.435 3417 +3419 4 -3.73 75.48 -11.19 0.435 3418 +3420 4 -4.63 76.06 -11.15 0.435 3419 +3421 4 -5.51 76.84 -11.09 0.435 3420 +3422 4 -6.02 77.84 -10.48 0.435 3421 +3423 4 -6.09 78.91 -10.37 0.435 3422 +3424 4 -6.59 79.95 -10.27 0.435 3423 +3425 4 -6.67 81.03 -10.16 0.435 3424 +3426 4 -6.5 82.16 -10.5 0.435 3425 +3427 4 -6.63 84.09 -10.3 0.435 3426 +3428 4 -7.17 85.98 -10.12 0.435 3427 +3429 4 -8.66 88.7 -9.87 0.435 3428 +3430 4 -10.18 92.25 -9.54 0.435 3429 +3431 4 -11.29 95.29 -7.96 0.435 3430 +3432 4 -12.28 97.37 -7.77 0.435 3431 +3433 4 -13.72 99.44 -7.52 0.435 3432 +3434 4 -14.51 101.54 -7.32 0.435 3433 +3435 4 -15.74 103.54 -6.46 0.435 3434 +3436 4 -17.2 105.51 -5.39 0.435 3435 +3437 4 -18.65 107.78 -5.11 0.435 3436 +3438 4 -20.35 110.44 -4.58 0.435 3437 +3439 4 -20.51 113.02 -4.31 0.435 3438 +3440 4 -20.41 114.73 -3.9 0.435 3439 +3441 4 -22.87 119.29 -3.49 0.435 3440 +3442 4 -24.08 121.16 -3.33 0.435 3441 +3443 4 -25.03 122.33 -2.62 0.435 3442 +3444 4 -25.14 123.81 -2.18 0.435 3443 +3445 4 -25.19 123.83 -0.22 0.435 3444 +3446 4 -26.19 124.85 1.74 0.435 3445 +3447 4 -27.85 127.13 1.94 0.435 3446 +3448 4 -28.31 127.53 1.97 0.435 3447 +3449 4 -28.82 128.79 2.09 0.435 3448 +3450 4 -29.33 129.3 3.03 0.435 3449 +3451 4 -30.29 130.73 3.38 0.435 3450 +3452 4 -30.4 132.44 3.71 0.435 3451 +3453 4 -31.42 134.48 4.26 0.435 3452 +3454 4 -32.49 137.39 4.92 0.435 3453 +3455 4 -33.02 138.81 5.58 0.435 3454 +3456 4 -32.92 140.5 6.14 0.435 3455 +3457 4 -32.85 142.62 6.66 0.435 3456 +3458 4 -33.39 144.08 7.02 0.435 3457 +3459 4 -33.95 145.92 7.73 0.435 3458 +3460 4 -34.52 147.79 8.28 0.435 3459 +3461 4 -35.1 150.11 8.59 0.435 3460 +3462 4 -35.18 151.11 9.37 0.435 3461 +3463 4 -36.59 152.73 9.58 0.435 3462 +3464 4 -37.54 153.97 9.69 0.435 3463 +3465 4 -37.63 155.25 9.89 0.435 3464 +3466 4 -37.46 156.05 10.05 0.435 3465 +3467 4 -37.53 156.86 10.66 0.435 3466 +3468 4 -37.4 157.55 12.39 0.435 3467 +3469 4 -37.01 158.22 12.47 0.435 3468 +3470 4 -37.06 158.85 12.76 0.435 3469 +3471 4 -36.67 159.26 13.26 0.435 3470 +3472 4 -24.84 124.92 -0.1 0.435 3445 +3473 4 -24.92 126.2 0.02 0.435 3472 +3474 4 -24.99 127.3 -0.08 0.435 3473 +3475 4 -24.46 129.01 0.55 0.435 3474 +3476 4 -24.35 130.72 0.8 0.435 3475 +3477 4 -24.97 133.45 1.37 0.435 3476 +3478 4 -25.4 136.85 1.87 0.435 3477 +3479 4 -25.47 137.64 2.63 0.435 3478 +3480 4 -26.48 139.71 2.97 0.435 3479 +3481 4 -27.47 141.56 3.36 0.435 3480 +3482 4 -5.99 76.83 -10.88 0.435 3421 +3483 4 -7.05 76.32 -10.88 0.435 3482 +3484 4 -9.26 76.79 -10.58 0.435 3483 +3485 4 -9.91 76.17 -9.08 0.435 3484 +3486 4 -12.01 74.73 -9.05 0.435 3485 +3487 4 -14.12 73.95 -9.11 0.435 3486 +3488 4 -15.62 73.64 -9.18 0.435 3487 +3489 4 -19.31 73.63 -9.19 0.435 3488 +3490 4 -21.22 72.86 -9.31 0.435 3489 +3491 4 -22.9 71.89 -9.38 0.435 3490 +3492 4 -24.41 71.79 -9.35 0.435 3491 +3493 4 -26.13 71.45 -9.2 0.435 3492 +3494 4 -30.21 70.75 -9.22 0.435 3493 +3495 4 -33.67 70.54 -9.32 0.435 3494 +3496 4 -36.46 69.95 -9.45 0.435 3495 +3497 4 -38.34 68.95 -9.45 0.435 3496 +3498 4 -40.88 67.93 -9.61 0.435 3497 +3499 4 -44.5 66.64 -9.83 0.435 3498 +3500 4 -47.67 65.37 -10.04 0.435 3499 +3501 4 -50.67 64.75 -10.17 0.435 3500 +3502 4 -54.34 64.54 -10.28 0.435 3501 +3503 4 -58.4 63.64 -10.47 0.435 3502 +3504 4 -60.7 62.21 -10.67 0.435 3503 +3505 4 -63.37 59.9 -10.98 0.435 3504 +3506 4 -64.95 57.43 -11.27 0.435 3505 +3507 4 -67.84 55.11 -11.58 0.435 3506 +3508 4 -69.04 53.53 -11.77 0.435 3507 +3509 4 -69.82 52.19 -11.93 0.435 3508 +3510 4 -0.14 74.49 -13.09 0.435 3415 +3511 4 -2.29 74.13 -12.96 0.435 3510 +3512 4 -4.92 74.34 -12.39 0.435 3511 +3513 4 -7.74 74.17 -12.48 0.435 3512 +3514 4 -9.88 73.6 -12.52 0.435 3513 +3515 4 -11.39 73.5 -12.56 0.435 3514 +3516 4 -13.11 73.17 -12.56 0.435 3515 +3517 4 -13.92 72.47 -12.65 0.435 3516 +3518 4 -14.71 71.15 -12.8 0.435 3517 +3519 4 -15.47 69.1 -12.43 0.435 3518 +3520 4 -16.66 67.3 -12.57 0.435 3519 +3521 4 -17.45 65.89 -12.06 0.435 3520 +3522 4 -18.2 63.9 -12.21 0.435 3521 +3523 4 -18.15 63.47 -12.86 0.435 3522 +3524 4 -18.55 62.79 -12.63 0.435 3523 +3525 4 -18.95 62.39 -13.21 0.435 3524 +3526 4 -19.88 60.72 -14.61 0.435 3525 +3527 4 -21.28 58.7 -14.85 0.435 3526 +3528 4 -22.06 57.89 -15.86 0.435 3527 +3529 4 -22.41 56.6 -16.22 0.435 3528 +3530 4 -23.38 54.82 -16.51 0.435 3529 +3531 4 -24.54 52.88 -17.41 0.435 3530 +3532 4 -26.19 51.72 -17.72 0.435 3531 +3533 4 -26.54 50.68 -18.44 0.435 3532 +3534 4 -27.04 48.57 -19.42 0.435 3533 +3535 4 -27.38 47.06 -19.59 0.435 3534 +3536 4 -28.17 45.94 -19.8 0.435 3535 +3537 4 -28.93 44.39 -20.05 0.435 3536 +3538 4 -29.72 43.86 -21.56 0.435 3537 +3539 4 -30.65 41.7 -22.33 0.435 3538 +3540 4 -30.36 40.42 -22.53 0.435 3539 +3541 4 -30.27 39.45 -23.46 0.435 3540 +3542 4 -31.39 36.61 -24.08 0.435 3541 +3543 4 -31.96 35.79 -24.86 0.435 3542 +3544 4 -32.3 34.47 -25.08 0.435 3543 +3545 4 -33.54 33.32 -25.23 0.435 3544 +3546 4 -33.44 32.35 -26.23 0.435 3545 +3547 4 -33.76 30.65 -26.79 0.435 3546 +3548 4 -34.11 29.86 -27.86 0.435 3547 +3549 4 -34.46 28.81 -28.43 0.435 3548 +3550 4 -35.04 28.29 -30.08 0.435 3549 +3551 4 -35.8 26.74 -30.26 0.435 3550 +3552 4 -36.6 25.61 -30.24 0.435 3551 +3553 4 -36.34 25.0 -30.67 0.435 3552 +3554 4 -36.7 24.46 -32.02 0.435 3553 +3555 4 -36.98 22.37 -32.85 0.435 3554 +3556 4 17.35 77.3 -15.78 1.515 3404 +3557 4 17.49 78.38 -15.67 1.515 3556 +3558 4 18.01 80.57 -15.5 1.41 3557 +3559 4 18.55 82.33 -15.31 1.41 3558 +3560 4 19.09 84.08 -15.11 1.41 3559 +3561 4 20.1 85.76 -16.05 1.41 3560 +3562 4 20.64 87.52 -15.85 1.41 3561 +3563 4 21.46 88.75 -16.75 1.41 3562 +3564 4 22.34 88.42 -16.77 1.41 3563 +3565 4 23.52 87.51 -17.74 0.54 3564 +3566 4 23.95 87.53 -17.73 0.54 3565 +3567 4 24.17 87.53 -17.5 0.54 3566 +3568 4 24.41 87.16 -17.99 0.54 3567 +3569 4 25.11 86.91 -19.35 0.54 3568 +3570 4 25.6 86.31 -19.62 0.54 3569 +3571 4 26.32 85.31 -19.94 0.54 3570 +3572 4 26.79 84.93 -20.27 0.54 3571 +3573 4 27.28 84.13 -20.56 0.54 3572 +3574 4 27.74 84.02 -21.32 0.54 3573 +3575 4 28.44 83.42 -21.51 0.54 3574 +3576 4 29.36 82.93 -22.45 0.54 3575 +3577 4 30.08 82.47 -23.84 0.54 3576 +3578 4 30.53 82.53 -24.12 0.54 3577 +3579 4 31.02 82.28 -25.64 0.54 3578 +3580 4 31.51 81.73 -26.44 0.54 3579 +3581 4 31.98 81.4 -26.99 0.54 3580 +3582 4 32.48 80.89 -28.16 0.54 3581 +3583 4 32.74 80.26 -28.3 0.54 3582 +3584 4 33.21 79.91 -28.77 0.54 3583 +3585 4 33.27 79.1 -29.23 0.54 3584 +3586 4 33.53 78.73 -29.79 0.54 3585 +3587 4 34.01 78.41 -30.57 0.54 3586 +3588 4 34.69 78.04 -30.81 0.54 3587 +3589 4 35.37 77.67 -30.99 0.54 3588 +3590 4 36.26 77.57 -31.51 0.54 3589 +3591 4 36.73 77.44 -32.18 0.54 3590 +3592 4 36.96 77.25 -32.35 0.54 3591 +3593 4 37.4 77.09 -32.51 0.54 3592 +3594 4 37.87 76.73 -32.92 0.54 3593 +3595 4 38.35 76.38 -33.46 0.54 3594 +3596 4 38.82 76.03 -34.09 0.54 3595 +3597 4 39.54 75.27 -34.68 0.54 3596 +3598 4 40.68 74.26 -34.83 0.54 3597 +3599 4 40.93 73.87 -35.02 0.54 3598 +3600 4 41.0 73.31 -35.98 0.54 3599 +3601 4 41.73 72.6 -37.01 0.54 3600 +3602 4 42.19 72.5 -37.85 0.54 3601 +3603 4 42.9 71.71 -38.21 0.54 3602 +3604 4 42.92 71.53 -38.6 0.54 3603 +3605 4 43.41 70.98 -39.18 0.54 3604 +3606 4 43.88 70.63 -39.73 0.54 3605 +3607 4 44.39 69.88 -40.7 0.54 3606 +3608 4 45.08 69.07 -40.77 0.54 3607 +3609 4 45.56 68.45 -40.82 0.54 3608 +3610 4 46.27 67.65 -41.04 0.54 3609 +3611 4 47.36 67.79 -41.67 0.54 3610 +3612 4 48.06 67.46 -42.29 0.54 3611 +3613 4 48.49 67.5 -42.43 0.54 3612 +3614 4 48.75 66.85 -42.27 0.54 3613 +3615 4 48.75 66.87 -42.42 0.54 3614 +3616 4 49.47 66.68 -44.38 0.54 3615 +3617 4 49.47 66.7 -44.53 0.54 3616 +3618 4 49.96 66.14 -45.18 0.54 3617 +3619 4 50.22 65.76 -45.58 0.54 3618 +3620 4 50.92 65.22 -46.3 0.54 3619 +3621 4 51.38 64.82 -46.33 0.54 3620 +3622 4 51.84 64.46 -46.74 0.54 3621 +3623 4 52.52 64.08 -46.83 0.54 3622 +3624 4 52.99 63.99 -47.81 0.54 3623 +3625 4 53.23 63.85 -48.28 0.54 3624 +3626 4 53.26 63.73 -49.26 0.54 3625 +3627 4 53.3 63.87 -50.6 0.54 3626 +3628 4 53.77 63.47 -50.71 0.54 3627 +3629 4 53.84 62.68 -51.47 0.435 3628 +3630 4 53.87 62.53 -52.16 0.435 3629 +3631 4 53.66 62.32 -52.33 0.435 3630 +3632 4 54.12 61.92 -52.37 0.435 3631 +3633 4 54.8 61.29 -52.26 0.435 3632 +3634 4 55.48 60.92 -52.37 0.435 3633 +3635 4 55.94 60.74 -52.44 0.435 3634 +3636 4 56.67 60.01 -53.34 0.435 3635 +3637 4 57.14 59.18 -53.41 0.435 3636 +3638 4 57.41 58.55 -53.54 0.435 3637 +3639 4 57.9 57.73 -53.69 0.435 3638 +3640 4 58.36 57.36 -54.02 0.435 3639 +3641 4 58.83 56.99 -54.35 0.435 3640 +3642 4 59.52 56.71 -55.34 0.435 3641 +3643 4 59.99 56.59 -56.1 0.435 3642 +3644 4 60.7 56.1 -57.19 0.435 3643 +3645 4 61.18 55.79 -58.11 0.435 3644 +3646 4 61.65 55.4 -58.29 0.435 3645 +3647 4 62.14 55.15 -59.74 0.435 3646 +3648 4 62.63 54.63 -60.76 0.435 3647 +3649 4 62.91 54.35 -62.06 0.435 3648 +3650 4 63.18 53.75 -62.5 0.435 3649 +3651 4 63.68 53.28 -63.96 0.435 3650 +3652 4 63.73 52.95 -64.97 0.435 3651 +3653 4 64.24 52.46 -66.3 0.435 3652 +3654 4 64.48 52.33 -66.98 0.435 3653 +3655 4 64.97 51.83 -68.08 0.435 3654 +3656 4 65.23 51.43 -68.26 0.435 3655 +3657 4 65.5 50.85 -68.84 0.435 3656 +3658 4 65.54 50.75 -69.9 0.435 3657 +3659 4 65.79 50.96 -71.84 0.435 3658 +3660 4 66.29 50.71 -73.21 0.435 3659 +3661 4 66.34 50.61 -74.43 0.435 3660 +3662 4 67.5 49.67 -75.25 0.435 3661 +3663 4 67.99 49.17 -76.35 0.435 3662 +3664 4 68.93 48.42 -76.92 0.435 3663 +3665 4 69.39 48.27 -77.31 0.435 3664 +3666 4 70.3 47.72 -77.72 0.435 3665 +3667 4 71.01 47.23 -78.89 0.435 3666 +3668 4 71.95 46.73 -79.82 0.435 3667 +3669 4 72.83 46.36 -79.84 0.435 3668 +3670 4 74.2 45.88 -80.75 0.435 3669 +3671 4 74.86 45.72 -80.83 0.435 3670 +3672 4 75.51 45.76 -80.88 0.435 3671 +3673 4 76.62 45.43 -81.12 0.435 3672 +3674 4 77.75 44.88 -81.38 0.435 3673 +3675 4 79.75 44.4 -81.83 0.435 3674 +3676 4 81.09 43.62 -81.88 0.435 3675 +3677 4 82.23 42.83 -82.01 0.435 3676 +3678 4 83.38 42.08 -82.44 0.435 3677 +3679 4 84.96 41.1 -82.58 0.435 3678 +3680 4 86.52 40.56 -82.6 0.435 3679 +3681 4 87.63 40.0 -82.7 0.435 3680 +3682 4 22.05 89.61 -16.28 1.41 3564 +3683 4 22.63 90.56 -16.17 1.41 3682 +3684 4 23.48 90.8 -15.89 0.54 3683 +3685 4 23.92 90.6 -15.83 0.54 3684 +3686 4 24.11 91.04 -15.78 0.54 3685 +3687 4 24.13 91.15 -16.82 0.54 3686 +3688 4 24.37 90.97 -17.06 0.54 3687 +3689 4 24.6 91.05 -17.65 0.54 3688 +3690 4 24.62 91.13 -18.39 0.54 3689 +3691 4 24.84 91.18 -18.84 0.54 3690 +3692 4 24.86 91.27 -19.66 0.54 3691 +3693 4 25.32 91.39 -20.61 0.54 3692 +3694 4 25.75 91.42 -20.6 0.54 3693 +3695 4 25.94 91.87 -20.55 0.54 3694 +3696 4 26.37 92.41 -21.39 0.54 3695 +3697 4 27.03 92.81 -22.76 0.435 3696 +3698 4 27.66 93.85 -23.99 0.435 3697 +3699 4 28.49 94.58 -24.28 0.435 3698 +3700 4 28.91 95.1 -24.89 0.435 3699 +3701 4 29.15 95.19 -25.56 0.435 3700 +3702 4 29.93 96.56 -25.77 0.435 3701 +3703 4 30.4 96.71 -26.95 0.435 3702 +3704 4 31.07 96.82 -27.53 0.435 3703 +3705 4 31.49 97.39 -28.59 0.435 3704 +3706 4 32.3 98.84 -29.55 0.435 3705 +3707 4 32.94 99.39 -30.23 0.435 3706 +3708 4 33.54 100.29 -30.2 0.435 3707 +3709 4 34.15 101.26 -30.77 0.435 3708 +3710 4 34.78 102.04 -31.65 0.435 3709 +3711 4 35.39 103.01 -32.36 0.435 3710 +3712 4 37.08 104.04 -32.74 0.435 3711 +3713 4 38.73 105.72 -33.28 0.435 3712 +3714 4 39.8 106.32 -34.25 0.435 3713 +3715 4 41.01 108.18 -34.63 0.435 3714 +3716 4 41.37 109.55 -35.01 0.435 3715 +3717 4 41.76 110.78 -36.23 0.435 3716 +3718 4 42.13 112.44 -37.33 0.435 3717 +3719 4 42.54 113.2 -38.14 0.435 3718 +3720 4 43.07 115.21 -38.3 0.435 3719 +3721 4 44.26 117.53 -39.09 0.435 3720 +3722 4 45.69 119.45 -39.91 0.435 3721 +3723 4 46.5 120.95 -41.32 0.435 3722 +3724 4 47.11 121.9 -41.73 0.435 3723 +3725 4 47.49 122.82 -42.08 0.435 3724 +3726 4 48.02 125.07 -42.52 0.435 3725 +3727 4 48.78 127.36 -43.09 0.435 3726 +3728 4 48.86 130.11 -44.46 0.435 3727 +3729 4 48.83 131.08 -45.48 0.435 3728 +3730 4 49.19 132.67 -46.0 0.435 3729 +3731 4 49.12 134.04 -46.61 0.435 3730 +3732 4 48.66 135.25 -48.0 0.435 3731 +3733 4 48.19 136.18 -48.98 0.435 3732 +3734 4 48.36 137.33 -49.45 0.435 3733 +3735 4 47.87 138.43 -49.95 0.435 3734 +3736 4 47.83 138.83 -49.68 0.435 3735 +3737 4 47.82 139.59 -50.66 0.435 3736 +3738 4 47.78 140.48 -50.94 0.435 3737 +3739 4 47.73 141.12 -50.73 0.435 3738 +3740 4 47.74 141.7 -52.18 0.435 3739 +3741 4 47.65 143.5 -52.9 0.435 3740 +3742 4 47.79 144.59 -52.71 0.435 3741 +3743 4 48.04 144.99 -54.46 0.435 3742 +3744 4 48.02 146.01 -55.95 0.435 3743 +3745 4 48.34 148.3 -56.98 0.435 3744 +3746 4 48.51 149.47 -57.61 0.435 3745 +3747 4 49.52 150.91 -58.19 0.435 3746 +3748 4 50.63 154.51 -58.77 0.435 3747 +3749 4 50.52 156.52 -59.47 0.435 3748 +3750 4 51.36 157.53 -60.33 0.435 3749 +3751 4 52.3 159.75 -60.15 0.435 3750 +3752 4 53.1 161.19 -60.96 0.435 3751 +3753 4 22.85 90.51 -16.09 1.515 3683 +3754 4 22.57 92.13 -17.13 1.515 3753 +3755 4 22.02 93.8 -16.97 1.515 3754 +3756 4 21.93 95.3 -16.82 1.515 3755 +3757 4 21.88 96.76 -18.26 1.515 3756 +3758 4 21.34 98.44 -18.1 1.515 3757 +3759 4 20.58 100.67 -19.09 1.515 3758 +3760 4 20.06 102.74 -20.54 1.515 3759 +3761 4 19.98 104.02 -20.41 1.515 3760 +3762 4 19.9 105.31 -20.28 1.515 3761 +3763 4 20.05 106.96 -21.54 1.515 3762 +3764 4 20.46 107.53 -21.47 1.515 3763 +3765 4 21.29 107.75 -20.98 0.435 3764 +3766 4 21.91 108.22 -20.91 0.435 3765 +3767 4 22.1 108.63 -20.56 0.435 3766 +3768 4 22.25 109.21 -19.75 0.435 3767 +3769 4 22.42 109.82 -19.23 0.435 3768 +3770 4 22.57 110.63 -18.54 0.435 3769 +3771 4 22.96 111.03 -17.96 0.435 3770 +3772 4 23.12 111.62 -17.29 0.435 3771 +3773 4 23.24 112.86 -16.56 0.435 3772 +3774 4 23.4 113.5 -16.34 0.435 3773 +3775 4 23.93 115.19 -15.47 0.435 3774 +3776 4 24.5 116.24 -14.82 0.435 3775 +3777 4 24.86 117.31 -14.32 0.435 3776 +3778 4 25.26 117.74 -14.05 0.435 3777 +3779 4 25.63 118.35 -13.52 0.435 3778 +3780 4 26.03 118.74 -12.8 0.435 3779 +3781 4 26.65 119.21 -12.74 0.435 3780 +3782 4 26.82 119.6 -12.24 0.435 3781 +3783 4 27.21 120.26 -12.01 0.435 3782 +3784 4 27.36 121.12 -11.84 0.435 3783 +3785 4 28.04 121.27 -12.93 0.435 3784 +3786 4 29.51 122.22 -12.8 0.435 3785 +3787 4 31.01 125.77 -12.4 0.435 3786 +3788 4 32.36 128.42 -12.09 0.435 3787 +3789 4 33.15 129.2 -10.71 0.435 3788 +3790 4 34.13 130.76 -10.46 0.435 3789 +3791 4 35.32 132.3 -9.97 0.435 3790 +3792 4 36.59 132.81 -9.89 0.435 3791 +3793 4 36.94 133.62 -9.04 0.435 3792 +3794 4 37.74 134.69 -8.38 0.435 3793 +3795 4 38.48 136.41 -7.73 0.435 3794 +3796 4 39.86 138.15 -6.76 0.435 3795 +3797 4 41.33 138.85 -6.5 0.435 3796 +3798 4 43.14 140.85 -5.65 0.435 3797 +3799 4 44.74 142.57 -4.53 0.435 3798 +3800 4 45.93 144.1 -3.9 0.435 3799 +3801 4 48.45 145.31 -3.57 0.435 3800 +3802 4 49.44 146.67 -3.4 0.435 3801 +3803 4 49.96 148.61 -2.89 0.435 3802 +3804 4 51.36 150.41 -2.59 0.435 3803 +3805 4 52.91 153.29 -2.18 0.435 3804 +3806 4 54.07 155.51 -1.92 0.435 3805 +3807 4 54.9 155.69 -0.98 0.435 3806 +3808 4 55.92 156.81 -0.76 0.435 3807 +3809 4 57.57 157.67 0.41 0.435 3808 +3810 4 57.69 158.39 1.92 0.435 3809 +3811 4 58.75 158.89 1.99 0.435 3810 +3812 4 59.16 158.81 3.05 0.435 3811 +3813 4 59.29 159.6 3.89 0.435 3812 +3814 4 59.69 159.73 4.97 0.435 3813 +3815 4 60.56 159.54 5.27 0.435 3814 +3816 4 61.21 159.58 5.29 0.435 3815 +3817 4 61.15 160.41 5.6 0.435 3816 +3818 4 61.32 161.07 5.75 0.435 3817 +3819 4 61.25 161.86 6.35 0.435 3818 +3820 4 61.2 162.45 6.95 0.435 3819 +3821 4 60.73 163.05 7.15 0.435 3820 +3822 4 60.67 163.62 7.88 0.435 3821 +3823 4 60.6 164.69 8.07 0.435 3822 +3824 4 60.96 165.52 8.62 0.435 3823 +3825 4 61.32 166.55 9.41 0.435 3824 +3826 4 62.1 167.65 9.76 0.435 3825 +3827 4 63.67 170.32 10.15 0.435 3826 +3828 4 64.03 170.62 11.7 0.435 3827 +3829 4 64.64 171.04 12.21 0.435 3828 +3830 4 64.59 171.36 13.45 0.435 3829 +3831 4 64.55 171.99 13.58 0.435 3830 +3832 4 65.14 172.28 15.29 0.435 3831 +3833 4 65.47 173.28 16.37 0.435 3832 +3834 4 65.67 173.21 17.13 0.435 3833 +3835 4 66.47 174.04 18.07 0.435 3834 +3836 4 66.8 175.29 18.81 0.435 3835 +3837 4 68.03 175.92 19.88 0.435 3836 +3838 4 68.55 177.62 20.6 0.435 3837 +3839 4 69.3 179.31 21.39 0.435 3838 +3840 4 70.3 180.15 22.33 0.435 3839 +3841 4 70.45 180.94 23.32 0.435 3840 +3842 4 71.67 181.79 24.26 0.435 3841 +3843 4 72.27 182.19 24.92 0.435 3842 +3844 4 73.02 183.94 25.35 0.435 3843 +3845 4 73.59 185.01 25.84 0.435 3844 +3846 4 74.2 185.45 26.21 0.435 3845 +3847 4 75.35 187.62 26.91 0.435 3846 +3848 4 75.7 188.68 27.41 0.435 3847 +3849 4 76.07 189.76 27.75 0.435 3848 +3850 4 76.68 190.17 28.34 0.435 3849 +3851 4 77.96 190.2 28.83 0.435 3850 +3852 4 78.35 190.59 29.55 0.435 3851 +3853 4 79.91 193.22 30.23 0.435 3852 +3854 4 80.0 194.85 31.39 0.435 3853 +3855 4 80.81 194.94 33.15 0.435 3854 +3856 4 81.56 196.18 34.2 0.435 3855 +3857 4 82.14 197.04 34.75 0.435 3856 +3858 4 82.52 197.37 36.0 0.435 3857 +3859 4 83.57 197.54 37.1 0.435 3858 +3860 4 83.9 198.53 38.27 0.435 3859 +3861 4 85.0 200.99 40.36 0.435 3860 +3862 4 85.41 200.94 41.12 0.435 3861 +3863 4 85.78 201.53 41.93 0.435 3862 +3864 4 86.56 202.58 42.81 0.435 3863 +3865 4 87.13 203.33 44.26 0.435 3864 +3866 4 87.48 204.13 45.26 0.435 3865 +3867 4 88.09 204.53 45.92 0.435 3866 +3868 4 88.65 205.58 46.79 0.435 3867 +3869 4 26.62 122.57 -11.63 0.435 3784 +3870 4 26.15 123.19 -11.58 0.435 3869 +3871 4 26.08 123.99 -10.97 0.435 3870 +3872 4 26.02 124.54 -9.94 0.435 3871 +3873 4 25.95 125.33 -9.25 0.435 3872 +3874 4 25.86 126.34 -8.55 0.435 3873 +3875 4 25.32 128.01 -8.24 0.435 3874 +3876 4 25.66 129.53 -7.99 0.435 3875 +3877 4 25.56 131.03 -7.84 0.435 3876 +3878 4 25.48 132.31 -7.71 0.435 3877 +3879 4 24.9 134.64 -7.48 0.435 3878 +3880 4 24.82 135.93 -7.35 0.435 3879 +3881 4 25.11 138.1 -7.05 0.435 3880 +3882 4 24.95 140.66 -6.78 0.435 3881 +3883 4 25.02 142.82 -6.56 0.435 3882 +3884 4 25.06 145.62 -6.27 0.435 3883 +3885 4 24.89 148.18 -6.01 0.435 3884 +3886 4 25.54 151.67 -5.63 0.435 3885 +3887 4 25.69 152.73 -5.29 0.435 3886 +3888 4 25.78 154.41 -4.66 0.435 3887 +3889 4 26.29 156.35 -4.14 0.435 3888 +3890 4 26.58 158.48 -3.55 0.435 3889 +3891 4 26.54 159.62 -4.1 0.435 3890 +3892 4 26.48 160.77 -4.74 0.435 3891 +3893 4 26.82 162.34 -5.02 0.435 3892 +3894 4 27.01 163.3 -5.75 0.435 3893 +3895 4 27.37 164.93 -6.7 0.435 3894 +3896 4 27.71 165.68 -5.19 0.435 3895 +3897 4 27.21 166.71 -4.94 0.435 3896 +3898 4 27.41 167.2 -5.41 0.435 3897 +3899 4 27.58 167.57 -4.61 0.435 3898 +3900 4 27.72 168.65 -4.5 0.435 3899 +3901 4 27.67 168.98 -3.49 0.435 3900 +3902 4 27.8 170.46 -3.03 0.435 3901 +3903 4 27.72 171.53 -2.84 0.435 3902 +3904 4 27.65 172.54 -2.29 0.435 3903 +3905 4 27.97 174.27 -2.03 0.435 3904 +3906 4 27.44 175.5 -1.46 0.435 3905 +3907 4 27.57 176.54 -0.98 0.435 3906 +3908 4 19.98 108.04 -21.43 1.515 3764 +3909 4 19.66 109.74 -21.26 1.515 3908 +3910 4 19.6 110.82 -21.15 1.515 3909 +3911 4 19.52 111.88 -21.04 1.515 3910 +3912 4 19.03 112.76 -20.96 1.515 3911 +3913 4 18.38 112.89 -21.57 0.65 3912 +3914 4 18.17 113.1 -21.62 0.975 3913 +3915 4 17.74 112.85 -21.59 0.975 3914 +3916 4 17.58 113.02 -23.39 0.975 3915 +3917 4 17.38 113.1 -24.29 0.975 3916 +3918 4 17.18 113.2 -25.48 0.975 3917 +3919 4 16.99 113.28 -26.31 0.975 3918 +3920 4 16.58 113.36 -27.37 0.975 3919 +3921 4 16.36 113.85 -28.07 0.975 3920 +3922 4 15.72 114.12 -28.97 0.975 3921 +3923 4 15.09 114.7 -30.8 0.975 3922 +3924 4 13.8 114.94 -31.78 0.975 3923 +3925 4 12.88 116.07 -32.74 0.76 3924 +3926 4 12.91 116.18 -33.79 0.76 3925 +3927 4 12.0 117.03 -34.25 0.65 3926 +3928 4 11.56 117.48 -34.74 0.65 3927 +3929 4 11.33 118.52 -36.52 0.65 3928 +3930 4 11.32 118.5 -36.3 0.65 3929 +3931 4 10.87 118.9 -36.27 0.65 3930 +3932 4 11.3 119.47 -37.33 0.54 3931 +3933 4 11.49 119.94 -37.5 0.54 3932 +3934 4 11.46 120.89 -38.31 0.54 3933 +3935 4 10.95 122.16 -38.26 0.54 3934 +3936 4 10.95 122.13 -38.05 0.54 3935 +3937 4 10.97 122.24 -39.09 0.54 3936 +3938 4 11.0 122.36 -40.28 0.54 3937 +3939 4 10.32 123.3 -41.33 0.54 3938 +3940 4 10.28 123.11 -39.47 0.54 3939 +3941 4 10.46 122.99 -38.19 0.54 3940 +3942 4 10.46 123.55 -39.49 0.54 3941 +3943 4 10.5 123.72 -41.13 0.54 3942 +3944 4 10.25 124.37 -41.29 0.54 3943 +3945 4 10.23 124.84 -41.62 0.54 3944 +3946 4 10.24 125.12 -42.2 0.54 3945 +3947 4 10.2 125.79 -42.43 0.54 3946 +3948 4 9.76 126.05 -43.09 0.54 3947 +3949 4 9.77 126.64 -44.62 0.54 3948 +3950 4 9.77 126.91 -45.11 0.54 3949 +3951 4 9.76 127.45 -46.11 0.54 3950 +3952 4 9.37 127.59 -47.69 0.54 3951 +3953 4 9.39 127.67 -48.51 0.54 3952 +3954 4 9.17 128.21 -49.74 0.54 3953 +3955 4 8.77 128.25 -50.35 0.54 3954 +3956 4 8.32 128.98 -51.34 0.54 3955 +3957 4 7.86 129.7 -52.33 0.54 3956 +3958 4 7.84 130.44 -53.31 0.54 3957 +3959 4 8.0 131.85 -54.13 0.54 3958 +3960 4 8.02 132.17 -55.16 0.54 3959 +3961 4 8.02 132.72 -56.38 0.54 3960 +3962 4 8.01 133.2 -56.78 0.54 3961 +3963 4 8.21 133.97 -57.83 0.54 3962 +3964 4 8.4 134.48 -58.38 0.54 3963 +3965 4 8.42 134.83 -59.7 0.54 3964 +3966 4 8.39 135.51 -60.0 0.54 3965 +3967 4 8.79 137.01 -61.65 0.54 3966 +3968 4 8.22 139.44 -62.38 0.54 3967 +3969 4 7.52 140.56 -63.19 0.54 3968 +3970 4 7.46 141.4 -62.88 0.54 3969 +3971 4 6.8 142.09 -63.73 0.54 3970 +3972 4 6.63 142.25 -65.38 0.54 3971 +3973 4 6.41 142.81 -66.75 0.54 3972 +3974 4 6.23 142.96 -68.25 0.54 3973 +3975 4 5.81 143.5 -69.63 0.54 3974 +3976 4 5.31 144.6 -70.07 0.54 3975 +3977 4 4.64 144.97 -69.81 0.54 3976 +3978 4 3.74 146.15 -71.37 0.54 3977 +3979 4 3.7 146.79 -71.23 0.54 3978 +3980 4 3.22 147.39 -71.03 0.54 3979 +3981 4 2.73 148.49 -71.45 0.54 3980 +3982 4 2.69 149.18 -71.84 0.54 3981 +3983 4 2.24 149.85 -72.3 0.54 3982 +3984 4 2.46 150.42 -73.52 0.54 3983 +3985 4 2.65 151.18 -74.42 0.54 3984 +3986 4 2.64 151.67 -74.97 0.54 3985 +3987 4 2.61 152.38 -75.5 0.54 3986 +3988 4 3.2 153.76 -76.03 0.54 3987 +3989 4 3.17 154.21 -76.12 0.54 3988 +3990 4 2.06 154.84 -76.68 0.54 3989 +3991 4 1.84 155.35 -77.47 0.54 3990 +3992 4 1.63 155.64 -78.27 0.54 3991 +3993 4 0.76 156.34 -79.36 0.54 3992 +3994 4 0.08 156.48 -79.06 0.54 3993 +3995 4 -0.38 157.08 -78.77 0.54 3994 +3996 4 -1.29 157.94 -79.24 0.54 3995 +3997 4 -1.26 158.07 -80.5 0.54 3996 +3998 4 -1.69 158.61 -81.88 0.54 3997 +3999 4 -1.5 159.58 -82.68 0.54 3998 +4000 4 -1.51 160.62 -84.39 0.54 3999 +4001 4 -2.2 161.21 -84.19 0.435 4000 +4002 4 -2.7 162.04 -84.12 0.435 4001 +4003 4 -2.72 162.26 -84.18 0.435 4002 +4004 4 10.87 119.2 -37.06 0.65 3931 +4005 4 10.41 119.58 -36.88 0.65 4004 +4006 4 10.44 119.74 -38.38 0.65 4005 +4007 4 9.99 120.2 -38.94 0.65 4006 +4008 4 9.81 120.32 -40.22 0.65 4007 +4009 4 9.58 120.81 -40.85 0.65 4008 +4010 4 8.93 121.28 -41.64 0.65 4009 +4011 4 8.8 120.58 -43.38 0.65 4010 +4012 4 8.16 120.31 -43.2 0.65 4011 +4013 4 7.76 120.43 -44.62 0.65 4012 +4014 4 7.39 120.36 -46.37 0.65 4013 +4015 4 6.36 120.02 -47.94 0.65 4014 +4016 4 5.35 119.43 -49.16 0.54 4015 +4017 4 5.45 118.99 -51.16 0.54 4016 +4018 4 4.67 117.68 -51.69 0.54 4017 +4019 4 4.72 117.13 -52.65 0.54 4018 +4020 4 3.51 116.3 -53.67 0.54 4019 +4021 4 2.68 116.14 -54.76 0.54 4020 +4022 4 1.92 115.15 -56.16 0.54 4021 +4023 4 1.13 114.59 -57.59 0.54 4022 +4024 4 0.09 114.42 -58.84 0.54 4023 +4025 4 -1.18 114.2 -59.57 0.54 4024 +4026 4 -1.34 114.33 -60.92 0.54 4025 +4027 4 -1.96 114.42 -62.21 0.54 4026 +4028 4 -3.06 114.9 -63.24 0.54 4027 +4029 4 -4.1 114.97 -64.69 0.54 4028 +4030 4 -5.15 115.07 -66.28 0.54 4029 +4031 4 -6.21 114.81 -66.56 0.54 4030 +4032 4 -6.22 114.79 -66.41 0.54 4031 +4033 4 -6.84 114.89 -67.69 0.54 4032 +4034 4 -7.87 114.74 -69.02 0.54 4033 +4035 4 -7.83 114.89 -70.43 0.54 4034 +4036 4 -9.67 113.88 -72.31 0.54 4035 +4037 4 -10.51 113.98 -73.83 0.54 4036 +4038 4 -11.54 113.8 -74.93 0.54 4037 +4039 4 -13.68 113.5 -75.46 0.54 4038 +4040 4 -14.51 113.32 -76.33 0.54 4039 +4041 4 -15.3 112.51 -77.41 0.54 4040 +4042 4 -16.59 112.47 -77.82 0.54 4041 +4043 4 -18.43 111.46 -79.71 0.54 4042 +4044 4 -19.48 111.46 -80.41 0.54 4043 +4045 4 -21.17 110.72 -80.6 0.54 4044 +4046 4 -22.67 110.43 -80.74 0.54 4045 +4047 4 -23.5 109.98 -81.19 0.54 4046 +4048 4 -25.47 110.32 -81.49 0.54 4047 +4049 4 19.18 113.86 -20.92 1.515 3912 +4050 4 19.09 115.37 -20.76 1.515 4049 +4051 4 18.99 116.87 -20.61 1.515 4050 +4052 4 19.52 118.83 -20.39 1.515 4051 +4053 4 20.31 120.49 -21.26 1.515 4052 +4054 4 20.66 121.8 -21.12 1.515 4053 +4055 4 21.2 123.55 -20.92 1.515 4054 +4056 4 21.27 125.71 -20.7 1.515 4055 +4057 4 21.21 126.84 -20.58 1.515 4056 +4058 4 21.88 126.7 -21.11 0.54 4057 +4059 4 23.14 127.43 -21.01 0.54 4058 +4060 4 24.0 127.48 -20.98 0.65 4059 +4061 4 25.46 128.43 -20.85 0.65 4060 +4062 4 26.96 128.74 -20.78 0.65 4061 +4063 4 28.05 128.59 -20.77 0.65 4062 +4064 4 29.35 128.67 -20.73 0.65 4063 +4065 4 29.86 127.99 -22.22 0.435 4064 +4066 4 30.13 127.36 -22.28 0.435 4065 +4067 4 31.32 125.72 -22.42 0.435 4066 +4068 4 32.5 124.28 -22.54 0.435 4067 +4069 4 34.04 123.72 -22.56 0.435 4068 +4070 4 35.99 123.85 -22.5 0.435 4069 +4071 4 39.06 123.39 -22.56 0.435 4070 +4072 4 40.87 122.43 -22.61 0.435 4071 +4073 4 43.74 121.05 -22.16 0.435 4072 +4074 4 45.94 120.75 -22.14 0.435 4073 +4075 4 48.53 120.9 -21.99 0.435 4074 +4076 4 50.45 121.45 -21.89 0.435 4075 +4077 4 53.72 121.21 -21.83 0.435 4076 +4078 4 57.2 121.21 -21.75 0.435 4077 +4079 4 59.79 121.38 -21.67 0.435 4078 +4080 4 62.48 123.26 -21.41 0.435 4079 +4081 4 65.65 124.77 -21.48 0.435 4080 +4082 4 69.23 126.7 -21.2 0.435 4081 +4083 4 72.44 127.33 -21.06 0.435 4082 +4084 4 75.21 127.93 -20.93 0.435 4083 +4085 4 78.27 127.92 -20.93 0.435 4084 +4086 4 81.82 127.24 -22.8 0.435 4085 +4087 4 85.38 126.18 -22.82 0.435 4086 +4088 4 89.98 125.38 -22.8 0.435 4087 +4089 4 93.42 125.8 -22.67 0.435 4088 +4090 4 96.63 126.43 -22.53 0.435 4089 +4091 4 99.06 125.93 -22.52 0.435 4090 +4092 4 101.28 124.99 -22.57 0.435 4091 +4093 4 103.3 124.04 -22.62 0.435 4092 +4094 4 105.73 123.33 -22.64 0.435 4093 +4095 4 107.68 123.45 -22.58 0.435 4094 +4096 4 110.7 123.63 -22.49 0.435 4095 +4097 4 112.38 124.59 -22.35 0.435 4096 +4098 4 30.61 129.4 -20.63 0.54 4064 +4099 4 32.57 129.3 -20.59 0.54 4098 +4100 4 34.3 129.19 -20.48 0.54 4099 +4101 4 36.24 129.3 -20.42 0.54 4100 +4102 4 38.42 129.21 -20.38 0.54 4101 +4103 4 39.99 129.51 -22.28 0.54 4102 +4104 4 42.14 129.64 -22.21 0.54 4103 +4105 4 42.55 130.4 -23.03 0.54 4104 +4106 4 43.57 131.54 -22.89 0.54 4105 +4107 4 44.52 133.53 -22.66 0.54 4106 +4108 4 45.05 135.51 -22.44 0.54 4107 +4109 4 45.7 138.99 -22.06 0.54 4108 +4110 4 47.59 143.19 -21.58 0.54 4109 +4111 4 47.5 144.13 -20.21 0.54 4110 +4112 4 48.89 146.15 -19.97 0.54 4111 +4113 4 50.97 147.57 -19.85 0.54 4112 +4114 4 52.95 149.97 -18.64 0.54 4113 +4115 4 54.56 152.22 -18.37 0.54 4114 +4116 4 56.0 153.17 -18.24 0.54 4115 +4117 4 58.05 154.7 -17.13 0.54 4116 +4118 4 59.17 157.04 -15.89 0.54 4117 +4119 4 59.91 158.98 -15.13 0.54 4118 +4120 4 60.44 160.44 -14.22 0.54 4119 +4121 4 61.28 160.68 -13.95 0.54 4120 +4122 4 62.74 161.62 -13.74 0.54 4121 +4123 4 63.74 162.96 -13.58 0.54 4122 +4124 4 64.53 163.79 -12.65 0.54 4123 +4125 4 65.91 165.75 -11.81 0.54 4124 +4126 4 66.85 167.66 -10.76 0.54 4125 +4127 4 67.14 169.3 -9.6 0.54 4126 +4128 4 67.89 170.74 -8.31 0.54 4127 +4129 4 68.43 172.22 -7.61 0.54 4128 +4130 4 69.63 173.51 -6.69 0.54 4129 +4131 4 70.22 173.89 -5.81 0.54 4130 +4132 4 72.11 175.13 -6.16 0.54 4131 +4133 4 72.49 175.5 -5.29 0.54 4132 +4134 4 74.4 175.45 -3.52 0.54 4133 +4135 4 76.56 175.57 -3.38 0.54 4134 +4136 4 77.63 175.59 -2.9 0.54 4135 +4137 4 78.68 175.53 -1.67 0.54 4136 +4138 4 79.31 176.0 -1.61 0.54 4137 +4139 4 80.18 176.05 -1.59 0.54 4138 +4140 4 82.28 177.04 -1.43 0.54 4139 +4141 4 84.52 179.32 -1.14 0.54 4140 +4142 4 85.3 180.11 0.22 0.54 4141 +4143 4 86.27 181.07 2.08 0.54 4142 +4144 4 86.59 182.81 2.26 0.54 4143 +4145 4 87.32 184.75 3.01 0.54 4144 +4146 4 87.26 185.26 4.12 0.54 4145 +4147 4 87.4 185.81 5.31 0.54 4146 +4148 4 87.54 186.83 6.1 0.54 4147 +4149 4 87.67 188.11 6.31 0.54 4148 +4150 4 88.24 189.19 6.81 0.54 4149 +4151 4 88.58 190.21 7.6 0.54 4150 +4152 4 88.99 190.65 7.88 0.54 4151 +4153 4 44.5 130.01 -22.12 0.54 4104 +4154 4 47.27 130.82 -21.97 0.54 4153 +4155 4 50.0 132.49 -21.81 0.54 4154 +4156 4 51.7 133.59 -22.93 0.54 4155 +4157 4 54.21 135.04 -22.72 0.54 4156 +4158 4 56.75 136.07 -22.71 0.54 4157 +4159 4 58.21 137.27 -23.0 0.54 4158 +4160 4 59.53 137.44 -23.78 0.54 4159 +4161 4 62.07 138.47 -23.84 0.54 4160 +4162 4 63.74 139.44 -23.7 0.54 4161 +4163 4 65.09 138.93 -24.25 0.54 4162 +4164 4 66.86 138.66 -24.77 0.54 4163 +4165 4 70.11 138.64 -24.69 0.54 4164 +4166 4 73.04 140.55 -24.49 0.54 4165 +4167 4 74.89 142.17 -24.28 0.54 4166 +4168 4 76.12 143.61 -24.86 0.54 4167 +4169 4 78.29 143.81 -25.47 0.54 4168 +4170 4 81.27 144.9 -25.73 0.54 4169 +4171 4 84.64 146.62 -25.55 0.54 4170 +4172 4 86.97 147.9 -26.12 0.54 4171 +4173 4 88.24 148.46 -26.4 0.54 4172 +4174 4 90.65 148.72 -27.38 0.54 4173 +4175 4 94.09 149.39 -27.61 0.54 4174 +4176 4 97.55 150.17 -28.87 0.54 4175 +4177 4 100.52 151.21 -28.69 0.54 4176 +4178 4 102.0 152.24 -29.24 0.54 4177 +4179 4 103.54 152.45 -30.3 0.54 4178 +4180 4 105.05 152.54 -30.33 0.54 4179 +4181 4 105.93 152.66 -30.9 0.54 4180 +4182 4 108.04 153.67 -30.98 0.54 4181 +4183 4 109.51 154.65 -31.21 0.54 4182 +4184 4 110.77 155.68 -31.91 0.54 4183 +4185 4 112.3 155.85 -32.61 0.54 4184 +4186 4 114.43 156.62 -32.55 0.54 4185 +4187 4 117.2 157.5 -33.0 0.54 4186 +4188 4 118.68 158.49 -33.24 0.54 4187 +4189 4 119.98 158.63 -33.8 0.54 4188 +4190 4 120.89 158.59 -34.91 0.54 4189 +4191 4 121.76 158.67 -35.18 0.54 4190 +4192 4 122.88 158.63 -36.29 0.54 4191 +4193 4 124.61 158.76 -36.38 0.54 4192 +4194 4 125.69 158.82 -36.35 0.54 4193 +4195 4 126.6 158.78 -37.47 0.54 4194 +4196 4 127.05 158.88 -38.2 0.54 4195 +4197 4 127.71 158.75 -38.57 0.54 4196 +4198 4 21.84 127.26 -20.67 1.515 4057 +4199 4 21.95 128.77 -20.52 1.515 4198 +4200 4 22.31 130.93 -22.24 1.41 4199 +4201 4 22.62 132.68 -22.06 1.41 4200 +4202 4 22.95 134.41 -21.87 1.41 4201 +4203 4 23.48 136.38 -21.65 1.41 4202 +4204 4 23.84 138.32 -23.4 1.41 4203 +4205 4 23.99 139.4 -23.29 1.41 4204 +4206 4 24.13 140.72 -23.3 1.41 4205 +4207 4 24.27 142.02 -23.16 1.41 4206 +4208 4 24.16 143.74 -22.99 1.41 4207 +4209 4 24.27 145.25 -22.83 1.41 4208 +4210 4 24.38 146.97 -22.65 1.41 4209 +4211 4 24.55 147.85 -22.55 1.515 4210 +4212 4 24.3 148.31 -22.51 1.515 4211 +4213 4 23.55 148.94 -20.58 0.435 4212 +4214 4 23.09 149.35 -20.62 0.54 4213 +4215 4 22.13 150.8 -20.49 0.54 4214 +4216 4 21.35 153.48 -21.66 0.54 4215 +4217 4 21.38 156.48 -21.35 0.54 4216 +4218 4 21.85 159.3 -21.05 0.54 4217 +4219 4 23.2 161.76 -20.76 0.54 4218 +4220 4 23.82 162.73 -21.4 0.54 4219 +4221 4 23.71 164.44 -21.16 0.435 4220 +4222 4 23.43 166.07 -22.42 0.435 4221 +4223 4 22.66 168.51 -23.4 0.435 4222 +4224 4 22.01 171.71 -23.16 0.435 4223 +4225 4 21.61 174.69 -22.86 0.435 4224 +4226 4 21.57 175.4 -22.86 0.435 4225 +4227 4 21.51 176.26 -22.77 0.54 4226 +4228 4 21.38 178.39 -22.55 0.54 4227 +4229 4 20.61 180.29 -22.38 0.54 4228 +4230 4 20.35 181.2 -23.04 0.54 4229 +4231 4 19.39 182.65 -22.91 0.54 4230 +4232 4 18.88 184.2 -23.44 0.54 4231 +4233 4 17.42 186.69 -23.22 0.54 4232 +4234 4 16.97 187.42 -24.21 0.54 4233 +4235 4 16.93 188.35 -24.87 0.54 4234 +4236 4 16.43 189.71 -25.72 0.54 4235 +4237 4 15.73 191.35 -27.3 0.54 4236 +4238 4 24.85 149.8 -22.34 1.515 4212 +4239 4 24.98 151.31 -22.18 1.515 4238 +4240 4 25.43 152.54 -22.05 1.515 4239 +4241 4 25.86 153.16 -23.48 0.54 4240 +4242 4 26.28 153.61 -23.42 0.54 4241 +4243 4 26.62 154.33 -21.9 0.54 4242 +4244 4 26.8 154.18 -20.19 0.54 4243 +4245 4 27.47 154.32 -21.21 0.54 4244 +4246 4 27.88 155.1 -22.18 0.54 4245 +4247 4 28.73 155.59 -22.18 0.54 4246 +4248 4 29.15 156.15 -23.16 0.54 4247 +4249 4 29.78 156.41 -23.12 0.54 4248 +4250 4 29.99 157.21 -24.54 0.54 4249 +4251 4 30.77 158.56 -24.38 0.54 4250 +4252 4 30.98 158.5 -23.71 0.54 4251 +4253 4 31.35 159.1 -22.96 0.54 4252 +4254 4 31.95 160.04 -23.3 0.54 4253 +4255 4 32.79 161.05 -24.16 0.54 4254 +4256 4 33.39 161.99 -24.42 0.54 4255 +4257 4 33.97 163.34 -24.57 0.54 4256 +4258 4 34.8 164.09 -24.92 0.54 4257 +4259 4 35.59 165.47 -25.29 0.54 4258 +4260 4 36.79 167.06 -25.17 0.54 4259 +4261 4 37.59 168.18 -25.04 0.54 4260 +4262 4 38.86 168.7 -25.02 0.54 4261 +4263 4 39.86 170.05 -24.86 0.54 4262 +4264 4 41.04 171.85 -24.65 0.54 4263 +4265 4 42.05 173.21 -24.63 0.54 4264 +4266 4 42.8 175.23 -24.86 0.54 4265 +4267 4 43.37 176.83 -25.21 0.54 4266 +4268 4 44.34 178.66 -25.45 0.54 4267 +4269 4 44.71 180.0 -25.68 0.54 4268 +4270 4 45.06 181.59 -26.11 0.54 4269 +4271 4 45.44 182.8 -27.03 0.54 4270 +4272 4 45.38 184.16 -27.49 0.54 4271 +4273 4 45.31 185.27 -27.83 0.54 4272 +4274 4 45.48 186.4 -28.08 0.54 4273 +4275 4 46.04 188.0 -28.51 0.54 4274 +4276 4 46.64 188.89 -28.48 0.54 4275 +4277 4 46.79 189.98 -28.44 0.54 4276 +4278 4 47.2 190.75 -29.25 0.54 4277 +4279 4 47.6 191.2 -29.2 0.54 4278 +4280 4 47.57 191.89 -29.51 0.54 4279 +4281 4 47.93 193.21 -29.43 0.54 4280 +4282 4 48.68 195.26 -29.96 0.54 4281 +4283 4 49.29 196.25 -30.75 0.54 4282 +4284 4 50.06 198.02 -30.62 0.54 4283 +4285 4 51.53 199.04 -31.16 0.54 4284 +4286 4 52.58 200.08 -32.08 0.54 4285 +4287 4 53.6 201.81 -33.54 0.54 4286 +4288 4 55.02 203.4 -33.34 0.54 4287 +4289 4 55.57 205.23 -33.81 0.54 4288 +4290 4 56.15 206.83 -34.24 0.54 4289 +4291 4 56.65 209.01 -34.08 0.54 4290 +4292 4 57.16 211.19 -33.84 0.54 4291 +4293 4 57.31 212.78 -34.35 0.54 4292 +4294 4 57.67 213.88 -34.3 0.54 4293 +4295 4 58.03 215.28 -34.91 0.54 4294 +4296 4 59.03 216.86 -34.87 0.54 4295 +4297 4 60.61 219.11 -34.6 0.54 4296 +4298 4 62.89 220.99 -34.64 0.54 4297 +4299 4 64.75 222.42 -34.68 0.54 4298 +4300 4 65.32 224.0 -34.88 0.54 4299 +4301 4 65.71 224.89 -34.86 0.54 4300 +4302 4 66.67 226.68 -34.72 0.54 4301 +4303 4 66.58 228.19 -34.64 0.54 4302 +4304 4 66.62 231.25 -34.85 0.54 4303 +4305 4 67.17 233.02 -34.88 0.54 4304 +4306 4 68.56 234.86 -34.96 0.54 4305 +4307 4 70.2 236.69 -34.74 0.54 4306 +4308 4 71.38 238.74 -34.95 0.54 4307 +4309 4 72.16 240.37 -35.52 0.54 4308 +4310 4 72.54 241.53 -35.99 0.54 4309 +4311 4 73.78 243.24 -37.14 0.54 4310 +4312 4 74.13 244.6 -37.51 0.54 4311 +4313 4 74.5 246.02 -38.33 0.54 4312 +4314 4 74.45 246.92 -38.62 0.54 4313 +4315 4 74.84 247.86 -39.12 0.54 4314 +4316 4 75.2 249.48 -39.77 0.54 4315 +4317 4 75.12 251.03 -40.14 0.54 4316 +4318 4 75.45 252.78 -40.11 0.54 4317 +4319 4 75.94 255.18 -39.85 0.54 4318 +4320 4 76.86 257.82 -39.55 0.54 4319 +4321 4 77.19 259.56 -39.36 0.54 4320 +4322 4 77.26 261.72 -39.21 0.54 4321 +4323 4 76.78 262.86 -40.01 0.54 4322 +4324 4 76.58 266.08 -39.68 0.54 4323 +4325 4 77.28 268.7 -39.39 0.54 4324 +4326 4 78.82 271.59 -39.06 0.54 4325 +4327 4 79.58 272.88 -39.05 0.54 4326 +4328 4 80.77 273.9 -37.64 0.54 4327 +4329 4 80.79 273.99 -38.46 0.54 4328 +4330 4 81.35 275.58 -38.81 0.54 4329 +4331 4 81.76 276.3 -39.25 0.54 4330 +4332 4 82.28 278.51 -39.31 0.54 4331 +4333 4 82.62 280.04 -39.22 0.54 4332 +4334 4 82.72 281.99 -39.09 0.54 4333 +4335 4 83.04 283.73 -38.91 0.54 4334 +4336 4 83.93 286.81 -38.72 0.54 4335 +4337 4 84.59 290.09 -38.43 0.54 4336 +4338 4 84.62 293.1 -38.12 0.54 4337 +4339 4 84.46 295.45 -37.88 0.54 4338 +4340 4 84.52 297.84 -37.71 0.54 4339 +4341 4 84.74 301.29 -37.35 0.54 4340 +4342 4 85.27 303.26 -37.13 0.54 4341 +4343 4 85.74 306.08 -36.83 0.54 4342 +4344 4 85.82 308.29 -37.05 0.54 4343 +4345 4 86.03 311.96 -36.74 0.54 4344 +4346 4 86.21 315.85 -36.33 0.54 4345 +4347 4 86.03 318.63 -36.05 0.54 4346 +4348 4 86.48 321.88 -35.7 0.54 4347 +4349 4 86.75 324.48 -35.43 0.54 4348 +4350 4 87.27 326.47 -35.44 0.54 4349 +4351 4 87.41 328.04 -35.88 0.54 4350 +4352 4 87.95 329.82 -35.9 0.54 4351 +4353 4 88.08 331.34 -35.89 0.54 4352 +4354 4 30.68 156.34 -24.01 0.54 4249 +4355 4 31.78 156.2 -24.08 0.54 4354 +4356 4 32.45 156.03 -24.15 0.54 4355 +4357 4 33.5 156.53 -24.16 0.54 4356 +4358 4 34.12 157.02 -24.31 0.54 4357 +4359 4 34.99 157.07 -24.22 0.54 4358 +4360 4 35.6 157.51 -23.93 0.54 4359 +4361 4 36.01 157.44 -23.02 0.54 4360 +4362 4 36.19 157.83 -22.3 0.54 4361 +4363 4 36.58 158.22 -21.65 0.54 4362 +4364 4 37.16 159.05 -20.94 0.54 4363 +4365 4 37.58 159.0 -20.26 0.54 4364 +4366 4 37.94 159.86 -19.94 0.54 4365 +4367 4 38.3 160.91 -19.44 0.54 4366 +4368 4 38.68 161.56 -19.14 0.54 4367 +4369 4 39.29 161.99 -18.63 0.54 4368 +4370 4 39.88 162.85 -18.15 0.54 4369 +4371 4 40.67 163.95 -17.87 0.54 4370 +4372 4 41.04 164.57 -17.19 0.54 4371 +4373 4 41.22 164.93 -16.47 0.54 4372 +4374 4 42.24 165.84 -16.2 0.54 4373 +4375 4 42.65 166.29 -16.07 0.54 4374 +4376 4 43.05 166.7 -15.64 0.54 4375 +4377 4 43.6 167.99 -15.12 0.54 4376 +4378 4 43.81 167.93 -14.44 0.54 4377 +4379 4 44.23 167.91 -13.98 0.54 4378 +4380 4 44.63 167.88 -13.37 0.54 4379 +4381 4 45.69 168.35 -12.99 0.54 4380 +4382 4 46.32 168.3 -12.16 0.54 4381 +4383 4 46.72 168.74 -11.88 0.54 4382 +4384 4 47.31 169.59 -11.48 0.54 4383 +4385 4 47.7 170.02 -11.12 0.54 4384 +4386 4 48.25 171.54 -10.8 0.54 4385 +4387 4 48.65 171.95 -10.3 0.54 4386 +4388 4 49.04 172.34 -9.56 0.54 4387 +4389 4 49.43 172.73 -8.91 0.54 4388 +4390 4 49.82 173.16 -8.56 0.54 4389 +4391 4 50.59 173.93 -7.1 0.54 4390 +4392 4 51.44 173.88 -6.11 0.54 4391 +4393 4 52.07 173.8 -4.98 0.54 4392 +4394 4 52.47 173.73 -4.07 0.54 4393 +4395 4 53.11 173.71 -3.45 0.54 4394 +4396 4 54.2 173.53 -2.99 0.54 4395 +4397 4 55.47 173.5 -1.91 0.54 4396 +4398 4 56.74 174.01 -1.83 0.54 4397 +4399 4 57.54 174.9 -1.64 0.54 4398 +4400 4 58.08 175.86 -0.03 0.54 4399 +4401 4 59.09 177.21 0.21 0.54 4400 +4402 4 59.84 178.43 1.48 0.54 4401 +4403 4 60.4 179.72 1.93 0.54 4402 +4404 4 60.97 180.52 2.93 0.54 4403 +4405 4 61.54 181.33 3.86 0.54 4404 +4406 4 62.77 182.18 4.8 0.54 4405 +4407 4 63.79 183.07 5.37 0.54 4406 +4408 4 64.97 184.82 5.81 0.54 4407 +4409 4 65.96 186.18 6.05 0.54 4408 +4410 4 66.77 187.04 6.53 0.54 4409 +4411 4 67.73 188.8 7.03 0.54 4410 +4412 4 68.26 190.76 7.33 0.54 4411 +4413 4 68.63 191.4 7.62 0.54 4412 +4414 4 69.22 192.25 8.18 0.54 4413 +4415 4 70.67 193.15 8.76 0.54 4414 +4416 4 71.47 193.73 10.04 0.54 4415 +4417 4 71.88 193.99 9.93 0.54 4416 +4418 4 72.67 195.33 10.02 0.54 4417 +4419 4 72.86 195.76 10.14 0.54 4418 +4420 4 73.46 196.14 11.18 0.54 4419 +4421 4 73.58 197.11 12.25 0.54 4420 +4422 4 74.18 197.72 13.09 0.54 4421 +4423 4 74.96 198.55 13.94 0.54 4422 +4424 4 75.31 199.56 14.96 0.54 4423 +4425 4 75.86 200.55 16.2 0.54 4424 +4426 4 76.39 202.0 17.2 0.54 4425 +4427 4 76.93 203.47 18.04 0.54 4426 +4428 4 77.44 205.12 19.28 0.54 4427 +4429 4 78.16 206.99 20.55 0.54 4428 +4430 4 78.31 207.56 21.43 0.54 4429 +4431 4 78.83 209.24 22.37 0.54 4430 +4432 4 79.39 210.5 23.2 0.54 4431 +4433 4 80.18 211.32 24.13 0.54 4432 +4434 4 80.52 212.09 25.35 0.54 4433 +4435 4 80.9 212.42 26.59 0.54 4434 +4436 4 81.46 213.45 27.47 0.54 4435 +4437 4 82.5 213.86 28.44 0.54 4436 +4438 4 83.34 213.86 28.99 0.54 4437 +4439 4 83.95 214.25 29.72 0.54 4438 +4440 4 84.56 214.67 30.31 0.54 4439 +4441 4 85.34 215.99 30.69 0.54 4440 +4442 4 85.69 216.79 31.53 0.54 4441 +4443 4 86.27 217.33 33.03 0.54 4442 +4444 4 86.69 217.28 33.79 0.54 4443 +4445 4 87.75 217.29 34.35 0.54 4444 +4446 4 88.59 217.76 34.49 0.54 4445 +4447 4 25.53 152.84 -22.01 1.515 4240 +4448 4 25.68 153.72 -21.92 1.515 4447 +4449 4 25.09 153.81 -20.72 0.435 4448 +4450 4 24.57 154.5 -19.3 0.435 4449 +4451 4 24.13 154.39 -18.5 0.435 4450 +4452 4 24.11 154.3 -17.6 0.435 4451 +4453 4 23.85 154.13 -16.19 0.435 4452 +4454 4 23.82 153.98 -14.71 0.435 4453 +4455 4 23.54 154.26 -13.4 0.435 4454 +4456 4 23.52 154.16 -12.43 0.435 4455 +4457 4 23.48 153.96 -10.56 0.435 4456 +4458 4 23.45 153.87 -9.67 0.435 4457 +4459 4 23.2 153.69 -7.96 0.435 4458 +4460 4 22.23 154.8 -6.74 0.435 4459 +4461 4 21.46 156.15 -5.49 0.435 4460 +4462 4 20.67 157.71 -4.22 0.435 4461 +4463 4 19.49 159.14 -4.1 0.435 4462 +4464 4 18.97 160.4 -3.9 0.435 4463 +4465 4 18.61 162.2 -2.59 0.435 4464 +4466 4 18.77 163.06 -2.5 0.435 4465 +4467 4 18.89 164.57 -2.34 0.435 4466 +4468 4 19.07 165.22 -2.2 0.435 4467 +4469 4 19.01 165.83 -1.76 0.435 4468 +4470 4 19.16 166.89 -1.49 0.435 4469 +4471 4 18.41 168.09 -0.86 0.435 4470 +4472 4 17.68 169.09 -0.48 0.435 4471 +4473 4 16.3 170.25 0.05 0.435 4472 +4474 4 16.27 170.65 0.33 0.435 4473 +4475 4 15.31 171.84 0.88 0.435 4474 +4476 4 15.23 172.88 1.29 0.435 4475 +4477 4 15.35 174.14 1.87 0.435 4476 +4478 4 15.45 176.05 2.37 0.435 4477 +4479 4 15.37 176.83 3.21 0.435 4478 +4480 4 15.52 177.6 4.12 0.435 4479 +4481 4 15.46 178.44 4.5 0.435 4480 +4482 4 15.4 179.26 4.89 0.435 4481 +4483 4 14.39 181.1 5.36 0.435 4482 +4484 4 12.69 184.0 5.69 0.435 4483 +4485 4 12.18 185.04 5.78 0.435 4484 +4486 4 11.69 185.84 6.24 0.435 4485 +4487 4 11.13 187.47 6.99 0.435 4486 +4488 4 11.31 188.12 7.14 0.435 4487 +4489 4 11.23 189.16 7.54 0.435 4488 +4490 4 11.35 190.36 8.57 0.435 4489 +4491 4 10.82 191.62 8.77 0.435 4490 +4492 4 9.88 192.84 8.88 0.435 4491 +4493 4 9.38 193.88 9.04 0.435 4492 +4494 4 8.89 194.71 9.12 0.435 4493 +4495 4 8.85 195.35 9.26 0.435 4494 +4496 4 8.73 195.63 9.29 0.435 4495 +4497 4 8.52 196.19 7.83 0.435 4496 +4498 4 7.89 196.53 6.27 0.435 4497 +4499 4 7.25 196.48 6.33 0.435 4498 +4500 4 6.8 196.94 5.84 0.65 4499 +4501 4 6.11 197.54 5.89 0.865 4500 +4502 4 5.01 198.52 4.22 0.325 4501 +4503 4 3.65 199.5 4.29 0.325 4502 +4504 4 2.74 200.63 3.26 0.325 4503 +4505 4 2.19 201.74 4.94 0.325 4504 +4506 4 1.28 202.3 5.36 0.325 4505 +4507 4 0.33 202.98 6.45 0.325 4506 +4508 4 -0.56 203.3 7.07 0.325 4507 +4509 4 -1.51 203.98 8.25 0.325 4508 +4510 4 -1.78 204.34 8.89 0.325 4509 +4511 4 -1.83 204.37 10.7 0.325 4510 +4512 4 -1.66 205.26 10.56 0.325 4511 +4513 4 -1.47 205.41 11.42 0.325 4512 +4514 4 -1.29 205.31 12.46 0.325 4513 +4515 4 -1.13 205.62 13.78 0.325 4514 +4516 4 -0.79 206.89 14.44 0.325 4515 +4517 4 -0.22 208.2 14.67 0.325 4516 +4518 4 0.1 209.93 14.93 0.325 4517 +4519 4 -0.49 212.25 15.24 0.325 4518 +4520 4 -1.12 215.44 15.55 0.325 4519 +4521 4 -1.5 217.78 15.78 0.325 4520 +4522 4 -1.57 218.79 16.49 0.325 4521 +4523 4 -1.23 220.07 17.0 0.325 4522 +4524 4 -1.23 222.99 18.14 0.325 4523 +4525 4 -1.84 225.72 18.63 0.325 4524 +4526 4 -2.02 228.51 18.99 0.325 4525 +4527 4 -2.18 230.85 19.3 0.325 4526 +4528 4 -2.67 231.68 19.98 0.325 4527 +4529 4 -2.84 234.25 20.24 0.325 4528 +4530 4 -2.18 237.31 20.57 0.325 4529 +4531 4 -2.54 239.66 20.81 0.325 4530 +4532 4 -3.11 241.76 21.01 0.325 4531 +4533 4 -5.12 246.16 21.42 0.325 4532 +4534 4 -6.67 249.93 21.85 0.325 4533 +4535 4 -7.64 251.07 22.77 0.325 4534 +4536 4 -7.77 252.99 23.12 0.325 4535 +4537 4 -8.6 255.73 23.39 0.325 4536 +4538 4 -10.02 257.8 23.56 0.325 4537 +4539 4 -12.59 259.6 25.65 0.325 4538 +4540 4 -13.58 261.41 26.49 0.325 4539 +4541 4 -14.1 262.12 27.54 0.325 4540 +4542 4 -14.17 262.65 28.79 0.325 4541 +4543 4 -15.12 263.87 29.12 0.325 4542 +4544 4 9.2 196.39 9.83 0.435 4496 +4545 4 8.68 197.86 10.04 0.435 4544 +4546 4 7.68 199.46 10.87 0.435 4545 +4547 4 6.97 200.26 11.08 0.435 4546 +4548 4 6.0 201.63 11.95 0.435 4547 +4549 4 4.99 203.44 12.71 0.435 4548 +4550 4 3.58 205.02 13.45 0.435 4549 +4551 4 2.17 206.41 13.79 0.435 4550 +4552 4 1.2 207.83 14.29 0.435 4551 +4553 4 0.7 208.8 14.98 0.435 4552 +4554 4 -0.3 210.36 16.17 0.435 4553 +4555 4 -0.41 211.84 16.62 0.435 4554 +4556 4 -1.64 213.54 18.28 0.435 4555 +4557 4 -1.72 214.82 18.41 0.435 4556 +4558 4 -2.52 217.11 18.93 0.435 4557 +4559 4 -3.58 219.28 20.34 0.435 4558 +4560 4 -4.14 221.14 20.97 0.435 4559 +4561 4 -4.68 222.02 22.7 0.435 4560 +4562 4 -5.31 224.99 23.0 0.435 4561 +4563 4 -5.42 226.71 23.17 0.435 4562 +4564 4 -5.52 228.15 23.84 0.435 4563 +4565 4 -6.07 229.83 24.15 0.435 4564 +4566 4 -6.63 231.7 24.57 0.435 4565 +4567 4 -7.18 233.37 25.03 0.435 4566 +4568 4 -7.29 234.82 25.55 0.435 4567 +4569 4 -7.4 236.5 26.02 0.435 4568 +4570 4 -7.93 237.39 27.68 0.435 4569 +4571 4 -8.01 238.46 27.79 0.435 4570 +4572 4 -9.48 240.35 29.69 0.435 4571 +4573 4 -10.93 242.62 29.89 0.435 4572 +4574 4 -10.79 243.92 30.02 0.435 4573 +4575 4 -10.9 245.1 31.2 0.435 4574 +4576 4 -11.36 245.49 31.3 0.435 4575 +4577 4 -11.94 247.82 31.53 0.435 4576 +4578 4 -12.47 249.3 31.67 0.435 4577 +4579 4 -13.08 251.8 32.36 0.435 4578 +4580 4 -12.95 253.1 32.5 0.435 4579 +4581 4 -12.65 255.26 32.81 0.435 4580 +4582 4 -12.81 257.64 33.36 0.435 4581 +4583 4 -13.91 261.23 33.7 0.435 4582 +4584 4 -14.88 265.57 35.33 0.435 4583 +4585 4 -15.0 267.49 35.52 0.435 4584 +4586 4 -16.25 269.42 37.13 0.435 4585 +4587 4 -17.2 270.66 37.24 0.435 4586 +4588 4 -17.12 272.81 37.46 0.435 4587 +4589 4 -18.0 276.37 38.26 0.435 4588 +4590 4 -18.67 279.49 39.24 0.435 4589 +4591 4 -19.97 282.53 40.58 0.435 4590 +4592 4 -20.8 284.47 42.27 0.435 4591 +4593 4 -20.66 285.78 42.41 0.435 4592 +4594 4 -20.31 286.29 43.98 0.435 4593 +4595 4 -20.37 287.35 44.09 0.435 4594 +4596 4 -21.31 288.37 44.17 0.435 4595 +4597 4 -22.54 290.37 45.17 0.435 4596 +4598 4 -23.08 291.83 45.39 0.435 4597 +4599 4 -23.18 293.28 46.06 0.435 4598 +4600 4 -23.28 294.77 46.29 0.435 4599 +4601 4 -23.37 296.08 46.58 0.435 4600 +4602 4 -24.18 298.61 46.82 0.435 4601 +4603 4 -24.24 299.45 47.13 0.435 4602 +4604 4 -25.23 301.07 47.72 0.435 4603 +4605 4 -26.2 302.22 48.5 0.435 4604 +4606 4 -27.16 303.88 48.72 0.435 4605 +4607 4 -27.66 304.67 49.18 0.435 4606 +4608 4 -28.19 305.88 49.81 0.435 4607 +4609 4 -28.74 307.26 50.85 0.435 4608 +4610 4 -29.27 308.71 51.14 0.435 4609 +4611 4 -29.36 309.97 51.56 0.435 4610 +4612 4 -29.85 310.78 51.86 0.435 4611 +4613 4 -30.35 311.81 52.18 0.435 4612 +4614 4 -30.44 313.08 52.38 0.435 4613 +4615 4 -30.98 314.55 52.6 0.435 4614 +4616 4 -32.33 315.32 52.72 0.435 4615 +4617 4 -33.49 316.54 52.82 0.435 4616 +4618 4 -35.11 317.94 53.01 0.435 4617 +4619 4 -36.21 318.26 53.32 0.435 4618 +4620 4 -36.92 318.84 53.58 0.435 4619 +4621 4 -37.84 319.6 54.09 0.435 4620 +4622 4 -38.52 319.98 54.19 0.435 4621 +4623 4 -39.94 321.82 54.42 0.435 4622 +4624 4 -40.45 322.86 54.6 0.435 4623 +4625 4 -40.5 323.7 54.83 0.435 4624 +4626 4 -41.44 324.71 55.07 0.435 4625 +4627 4 -41.9 325.09 55.32 0.435 4626 +4628 4 -42.38 325.68 55.52 0.435 4627 +4629 4 -43.75 326.67 55.74 0.435 4628 +4630 4 -45.3 327.22 55.69 0.435 4629 +4631 4 -46.31 329.3 55.95 0.435 4630 +4632 4 -47.31 331.39 56.22 0.435 4631 +4633 4 -48.0 331.96 56.49 0.435 4632 +4634 4 -49.15 332.73 56.77 0.435 4633 +4635 4 -49.62 333.35 56.89 0.435 4634 +4636 4 -50.11 334.15 57.2 0.435 4635 +4637 4 -50.62 335.19 57.44 0.435 4636 +4638 4 -50.7 336.21 57.92 0.435 4637 +4639 4 -51.45 337.65 58.27 0.435 4638 +4640 4 -52.15 338.46 58.42 0.435 4639 +4641 4 -52.85 339.04 58.68 0.435 4640 +4642 4 -53.54 339.64 58.73 0.435 4641 +4643 4 -54.48 340.88 58.83 0.435 4642 +4644 4 -54.78 342.14 58.96 0.435 4643 +4645 4 -55.3 343.62 59.1 0.435 4644 +4646 4 -55.8 344.65 59.27 0.435 4645 +4647 4 -56.53 345.68 59.51 0.435 4646 +4648 4 -56.54 345.87 59.76 0.435 4647 +4649 4 -57.5 347.09 59.94 0.435 4648 +4650 4 -57.95 347.49 59.97 0.435 4649 +4651 4 -58.49 348.97 60.11 0.435 4650 +4652 4 -58.96 349.59 60.16 0.435 4651 +4653 4 -58.99 350.0 60.21 0.435 4652 +4654 4 -59.01 350.44 60.25 0.435 4653 +4655 4 25.8 155.24 -21.76 1.515 4448 +4656 4 25.68 157.16 -21.56 1.515 4655 +4657 4 25.82 158.46 -21.42 1.515 4656 +4658 4 25.95 159.76 -21.29 1.515 4657 +4659 4 26.34 160.65 -21.19 1.515 4658 +4660 4 26.62 162.81 -20.96 1.515 4659 +4661 4 27.01 163.49 -20.88 1.515 4660 +4662 4 26.91 164.99 -20.72 1.515 4661 +4663 4 27.05 166.28 -20.59 1.515 4662 +4664 4 26.95 167.93 -20.42 1.3 4663 +4665 4 26.87 169.75 -21.29 1.3 4664 +4666 4 26.34 170.96 -20.57 1.41 4665 +4667 4 25.77 172.85 -20.39 1.41 4666 +4668 4 25.25 174.33 -20.25 1.41 4667 +4669 4 25.22 174.66 -20.22 1.41 4668 +4670 4 24.34 175.06 -20.5 0.76 4669 +4671 4 23.19 176.07 -20.42 0.76 4670 +4672 4 22.52 176.45 -20.4 0.865 4671 +4673 4 21.37 177.46 -20.32 0.76 4672 +4674 4 20.68 178.36 -21.0 0.76 4673 +4675 4 19.39 178.29 -21.18 0.54 4674 +4676 4 18.28 179.45 -22.6 0.435 4675 +4677 4 16.93 180.81 -23.99 0.435 4676 +4678 4 15.12 182.54 -25.06 0.435 4677 +4679 4 13.01 185.53 -25.94 0.435 4678 +4680 4 11.36 188.14 -26.91 0.435 4679 +4681 4 11.12 188.84 -27.52 0.435 4680 +4682 4 9.47 190.9 -27.42 0.435 4681 +4683 4 7.4 192.7 -27.29 0.435 4682 +4684 4 6.91 194.39 -28.55 0.435 4683 +4685 4 5.46 196.65 -28.27 0.435 4684 +4686 4 25.17 175.61 -20.12 1.41 4669 +4687 4 25.09 176.91 -20.14 1.41 4686 +4688 4 25.21 178.42 -19.98 1.41 4687 +4689 4 25.33 179.93 -19.82 1.41 4688 +4690 4 25.51 180.38 -19.77 1.41 4689 +4691 4 25.89 180.97 -19.01 0.54 4690 +4692 4 26.29 181.68 -19.23 0.54 4691 +4693 4 26.72 181.7 -19.15 0.54 4692 +4694 4 27.33 182.38 -19.06 0.54 4693 +4695 4 27.48 183.46 -18.95 0.54 4694 +4696 4 27.41 184.54 -18.84 0.435 4695 +4697 4 27.75 186.06 -18.67 0.435 4696 +4698 4 28.3 187.33 -18.0 0.435 4697 +4699 4 28.65 188.38 -17.36 0.435 4698 +4700 4 29.21 189.13 -15.91 0.435 4699 +4701 4 29.64 189.1 -15.38 0.435 4700 +4702 4 29.74 190.57 -14.77 0.435 4701 +4703 4 29.88 191.61 -14.28 0.435 4702 +4704 4 29.78 192.84 -13.55 0.435 4703 +4705 4 29.9 194.34 -13.32 0.435 4704 +4706 4 30.03 195.37 -12.61 0.435 4705 +4707 4 30.38 196.65 -12.24 0.435 4706 +4708 4 30.77 197.07 -11.73 0.435 4707 +4709 4 31.08 198.75 -10.95 0.435 4708 +4710 4 31.44 199.8 -10.46 0.435 4709 +4711 4 31.76 201.27 -9.76 0.435 4710 +4712 4 31.68 202.31 -9.29 0.435 4711 +4713 4 32.05 203.18 -9.04 0.435 4712 +4714 4 32.18 204.67 -8.73 0.435 4713 +4715 4 32.25 206.81 -8.35 0.435 4714 +4716 4 32.38 208.12 -8.22 0.435 4715 +4717 4 32.49 209.57 -7.46 0.435 4716 +4718 4 31.99 210.3 -6.49 0.435 4717 +4719 4 32.14 211.45 -6.97 0.435 4718 +4720 4 32.11 212.4 -7.86 0.435 4719 +4721 4 32.22 214.42 -8.39 0.435 4720 +4722 4 32.58 215.79 -8.78 0.435 4721 +4723 4 32.5 217.07 -8.72 0.435 4722 +4724 4 33.1 218.01 -8.84 0.435 4723 +4725 4 33.04 219.11 -9.1 0.435 4724 +4726 4 33.61 220.44 -8.94 0.435 4725 +4727 4 34.14 222.2 -8.75 0.435 4726 +4728 4 34.24 224.14 -8.63 0.435 4727 +4729 4 34.63 225.37 -9.85 0.435 4728 +4730 4 35.17 227.13 -9.65 0.435 4729 +4731 4 35.12 227.43 -8.42 0.435 4730 +4732 4 35.72 228.09 -8.1 0.435 4731 +4733 4 36.08 228.92 -7.4 0.435 4732 +4734 4 36.48 229.32 -6.83 0.435 4733 +4735 4 36.63 229.93 -6.31 0.435 4734 +4736 4 36.79 230.76 -5.92 0.435 4735 +4737 4 36.97 231.15 -5.27 0.435 4736 +4738 4 37.13 231.51 -4.56 0.435 4737 +4739 4 37.31 231.9 -3.98 0.435 4738 +4740 4 37.73 231.86 -3.37 0.435 4739 +4741 4 25.23 181.44 -19.73 1.41 4690 +4742 4 25.15 182.74 -19.6 1.41 4741 +4743 4 24.84 184.22 -19.46 1.41 4742 +4744 4 24.33 185.27 -19.36 1.41 4743 +4745 4 23.6 186.51 -19.25 1.41 4744 +4746 4 22.68 187.52 -19.17 1.41 4745 +4747 4 21.94 188.99 -19.03 1.41 4746 +4748 4 21.86 190.06 -18.92 1.41 4747 +4749 4 21.75 191.78 -18.75 1.41 4748 +4750 4 22.08 193.31 -18.58 1.41 4749 +4751 4 22.45 194.4 -18.46 1.41 4750 +4752 4 23.94 195.52 -19.97 1.41 4751 +4753 4 24.28 196.77 -19.31 1.41 4752 +4754 4 24.86 198.17 -19.75 1.41 4753 +4755 4 24.77 198.43 -21.0 0.54 4754 +4756 4 25.39 198.07 -19.3 0.54 4755 +4757 4 26.05 197.88 -19.07 0.54 4756 +4758 4 26.29 197.44 -18.89 0.54 4757 +4759 4 26.71 197.42 -18.35 0.54 4758 +4760 4 26.91 197.35 -17.6 0.54 4759 +4761 4 27.32 197.57 -17.41 0.54 4760 +4762 4 27.74 197.51 -16.58 0.54 4761 +4763 4 28.55 198.41 -16.32 0.54 4762 +4764 4 29.09 199.94 -16.07 0.54 4763 +4765 4 29.52 199.95 -15.84 0.54 4764 +4766 4 29.9 200.31 -14.89 0.54 4765 +4767 4 30.31 200.74 -14.61 0.54 4766 +4768 4 30.3 200.71 -14.31 0.54 4767 +4769 4 30.91 201.13 -13.87 0.54 4768 +4770 4 31.28 201.7 -12.83 0.54 4769 +4771 4 31.42 203.01 -12.84 0.54 4770 +4772 4 31.58 203.68 -12.84 0.54 4771 +4773 4 31.76 204.29 -12.25 0.54 4772 +4774 4 32.08 205.56 -11.73 0.54 4773 +4775 4 32.62 207.3 -11.38 0.54 4774 +4776 4 33.79 209.52 -11.13 0.54 4775 +4777 4 35.13 212.16 -10.67 0.54 4776 +4778 4 36.26 214.8 -10.22 0.54 4777 +4779 4 36.96 217.19 -9.8 0.54 4778 +4780 4 37.5 218.94 -9.54 0.54 4779 +4781 4 38.23 221.13 -9.3 0.54 4780 +4782 4 38.59 222.21 -8.95 0.54 4781 +4783 4 39.57 223.73 -8.31 0.54 4782 +4784 4 40.12 225.23 -7.84 0.54 4783 +4785 4 40.69 226.88 -8.71 0.54 4784 +4786 4 40.88 227.37 -9.04 0.54 4785 +4787 4 41.24 228.98 -9.69 0.54 4786 +4788 4 42.02 230.57 -9.89 0.54 4787 +4789 4 42.56 232.33 -9.84 0.54 4788 +4790 4 43.29 234.53 -9.67 0.54 4789 +4791 4 43.89 235.71 -10.14 0.54 4790 +4792 4 44.72 236.74 -11.15 0.54 4791 +4793 4 45.28 238.27 -10.98 0.54 4792 +4794 4 45.65 239.42 -11.44 0.54 4793 +4795 4 45.59 240.79 -11.99 0.54 4794 +4796 4 45.77 241.48 -12.21 0.54 4795 +4797 4 45.3 242.39 -12.95 0.54 4796 +4798 4 45.66 244.01 -13.68 0.54 4797 +4799 4 45.82 244.63 -13.24 0.54 4798 +4800 4 46.46 244.88 -13.2 0.54 4799 +4801 4 46.91 244.97 -13.85 0.54 4800 +4802 4 47.11 245.47 -14.33 0.54 4801 +4803 4 48.19 246.1 -15.45 0.54 4802 +4804 4 49.24 246.59 -15.37 0.54 4803 +4805 4 49.7 246.72 -16.39 0.54 4804 +4806 4 50.14 247.3 -17.61 0.54 4805 +4807 4 50.76 248.29 -18.47 0.54 4806 +4808 4 51.82 249.12 -19.41 0.54 4807 +4809 4 52.89 249.97 -20.74 0.54 4808 +4810 4 53.31 251.01 -22.12 0.54 4809 +4811 4 54.2 250.94 -23.01 0.54 4810 +4812 4 54.21 251.0 -23.61 0.54 4811 +4813 4 55.25 251.68 -23.29 0.54 4812 +4814 4 55.26 251.98 -24.01 0.54 4813 +4815 4 55.3 252.17 -25.87 0.54 4814 +4816 4 56.6 252.8 -26.98 0.54 4815 +4817 4 57.24 253.37 -27.82 0.54 4816 +4818 4 58.1 253.97 -28.94 0.54 4817 +4819 4 58.34 254.06 -29.75 0.54 4818 +4820 4 58.94 255.02 -30.09 0.54 4819 +4821 4 59.83 255.14 -30.74 0.54 4820 +4822 4 60.68 255.99 -32.28 0.54 4821 +4823 4 61.08 256.93 -32.71 0.54 4822 +4824 4 62.16 257.53 -33.59 0.54 4823 +4825 4 62.38 258.1 -34.82 0.54 4824 +4826 4 62.78 258.87 -35.63 0.54 4825 +4827 4 62.8 258.94 -36.37 0.54 4826 +4828 4 63.03 259.52 -37.66 0.54 4827 +4829 4 63.26 259.91 -39.27 0.54 4828 +4830 4 63.43 261.09 -40.05 0.54 4829 +4831 4 63.66 260.9 -40.07 0.54 4830 +4832 4 63.62 262.36 -41.73 0.54 4831 +4833 4 63.59 262.78 -41.6 0.54 4832 +4834 4 63.77 263.74 -42.26 0.54 4833 +4835 4 63.74 264.18 -42.44 0.54 4834 +4836 4 63.77 264.56 -44.06 0.54 4835 +4837 4 63.81 264.71 -45.55 0.54 4836 +4838 4 64.01 265.49 -46.59 0.54 4837 +4839 4 64.21 266.5 -47.91 0.54 4838 +4840 4 64.2 267.3 -49.27 0.54 4839 +4841 4 64.2 267.85 -50.42 0.54 4840 +4842 4 64.37 269.05 -51.42 0.54 4841 +4843 4 64.34 270.02 -52.37 0.54 4842 +4844 4 64.49 271.38 -52.83 0.54 4843 +4845 4 64.61 272.89 -52.67 0.54 4844 +4846 4 64.58 273.3 -52.48 0.54 4845 +4847 4 64.08 274.12 -52.26 0.54 4846 +4848 4 64.08 274.67 -53.33 0.54 4847 +4849 4 64.07 275.42 -54.38 0.54 4848 +4850 4 63.85 276.22 -55.97 0.54 4849 +4851 4 32.19 201.41 -13.59 0.54 4769 +4852 4 33.04 201.46 -13.57 0.54 4851 +4853 4 34.92 202.37 -12.74 0.54 4852 +4854 4 35.13 202.33 -12.29 0.54 4853 +4855 4 36.77 203.71 -12.04 0.54 4854 +4856 4 38.03 204.18 -11.51 0.54 4855 +4857 4 39.28 204.57 -10.3 0.54 4856 +4858 4 40.91 205.94 -9.9 0.54 4857 +4859 4 41.71 206.78 -9.19 0.54 4858 +4860 4 42.55 207.25 -9.04 0.54 4859 +4861 4 44.01 207.94 -8.49 0.54 4860 +4862 4 44.83 208.36 -7.68 0.54 4861 +4863 4 46.12 208.41 -7.41 0.54 4862 +4864 4 46.89 209.41 -6.01 0.54 4863 +4865 4 47.54 209.42 -5.76 0.54 4864 +4866 4 48.14 209.84 -5.18 0.54 4865 +4867 4 48.89 211.33 -4.48 0.54 4866 +4868 4 49.94 211.78 -3.95 0.54 4867 +4869 4 51.14 213.33 -3.61 0.54 4868 +4870 4 51.92 214.44 -3.26 0.54 4869 +4871 4 53.38 215.38 -2.98 0.54 4870 +4872 4 54.59 216.74 -2.81 0.54 4871 +4873 4 55.84 217.66 -2.53 0.54 4872 +4874 4 57.03 219.23 -2.26 0.54 4873 +4875 4 58.09 219.72 -2.18 0.54 4874 +4876 4 59.76 220.69 -2.04 0.54 4875 +4877 4 61.46 221.22 -1.95 0.54 4876 +4878 4 63.72 223.07 -1.63 0.54 4877 +4879 4 65.35 224.89 -1.41 0.54 4878 +4880 4 66.72 227.13 -1.14 0.54 4879 +4881 4 68.18 228.07 -1.01 0.54 4880 +4882 4 69.11 230.48 -0.66 0.54 4881 +4883 4 70.69 232.95 -0.37 0.54 4882 +4884 4 71.91 234.32 -0.2 0.54 4883 +4885 4 72.52 234.74 0.22 0.54 4884 +4886 4 73.16 234.75 0.54 0.54 4885 +4887 4 75.06 235.55 0.3 0.54 4886 +4888 4 77.23 235.68 0.36 0.54 4887 +4889 4 78.5 236.19 0.45 0.54 4888 +4890 4 79.12 236.65 0.51 0.54 4889 +4891 4 80.16 237.12 0.95 0.54 4890 +4892 4 81.67 237.19 1.22 0.54 4891 +4893 4 83.17 237.24 1.71 0.54 4892 +4894 4 84.22 237.68 2.16 0.54 4893 +4895 4 85.72 237.7 2.95 0.54 4894 +4896 4 87.43 237.77 3.37 0.54 4895 +4897 4 88.09 237.53 3.97 0.54 4896 +4898 4 89.16 237.33 4.51 0.54 4897 +4899 4 90.24 237.11 5.26 0.54 4898 +4900 4 91.09 237.11 5.74 0.54 4899 +4901 4 91.96 237.14 5.98 0.54 4900 +4902 4 92.82 236.91 6.58 0.54 4901 +4903 4 93.69 236.75 6.65 0.54 4902 +4904 4 94.33 236.76 6.97 0.54 4903 +4905 4 94.97 236.75 7.44 0.54 4904 +4906 4 95.84 236.54 7.82 0.54 4905 +4907 4 96.28 236.33 8.11 0.54 4906 +4908 4 97.05 236.71 7.72 0.54 4907 +4909 4 97.3 236.87 6.23 0.54 4908 +4910 4 97.71 236.29 7.91 0.54 4909 +4911 4 97.9 236.96 7.91 0.54 4910 +4912 4 98.32 236.97 8.07 0.54 4911 +4913 4 98.53 236.91 8.75 0.54 4912 +4914 4 98.93 236.85 9.65 0.54 4913 +4915 4 99.55 237.02 10.44 0.54 4914 +4916 4 100.19 237.03 10.69 0.54 4915 +4917 4 100.64 236.59 11.11 0.54 4916 +4918 4 101.7 236.55 12.18 0.54 4917 +4919 4 102.55 236.59 12.28 0.54 4918 +4920 4 102.75 236.5 13.25 0.54 4919 +4921 4 103.16 236.44 14.16 0.54 4920 +4922 4 103.37 236.41 14.61 0.54 4921 +4923 4 104.0 236.37 15.46 0.54 4922 +4924 4 104.2 236.06 16.49 0.54 4923 +4925 4 104.39 235.98 17.46 0.54 4924 +4926 4 104.83 235.69 18.34 0.54 4925 +4927 4 105.02 235.37 19.37 0.54 4926 +4928 4 105.23 235.32 20.04 0.54 4927 +4929 4 106.11 234.88 20.62 0.54 4928 +4930 4 106.55 234.42 21.19 0.54 4929 +4931 4 107.21 234.23 21.42 0.54 4930 +4932 4 107.43 233.94 22.22 0.54 4931 +4933 4 108.07 233.45 23.16 0.54 4932 +4934 4 108.73 233.23 23.53 0.54 4933 +4935 4 108.92 232.91 24.71 0.54 4934 +4936 4 109.55 232.86 25.62 0.54 4935 +4937 4 109.75 232.8 26.3 0.54 4936 +4938 4 110.38 233.02 26.63 0.54 4937 +4939 4 110.59 232.99 27.09 0.54 4938 +4940 4 110.78 232.9 27.99 0.54 4939 +4941 4 25.17 200.33 -19.52 1.41 4754 +4942 4 25.25 202.27 -19.32 1.41 4941 +4943 4 25.33 204.43 -19.09 1.41 4942 +4944 4 25.43 204.52 -19.08 1.41 4943 +4945 4 24.91 204.95 -17.16 0.435 4944 +4946 4 23.76 206.25 -17.96 0.435 4945 +4947 4 23.23 207.43 -17.02 0.435 4946 +4948 4 22.52 207.95 -16.08 0.435 4947 +4949 4 21.58 208.38 -14.63 0.435 4948 +4950 4 20.89 208.7 -13.93 0.435 4949 +4951 4 20.18 209.19 -12.77 0.435 4950 +4952 4 19.27 209.47 -11.86 0.435 4951 +4953 4 18.56 210.28 -11.64 0.435 4952 +4954 4 18.24 211.23 -10.49 0.435 4953 +4955 4 16.82 213.07 -10.25 0.435 4954 +4956 4 15.8 215.09 -9.4 0.435 4955 +4957 4 14.64 216.26 -8.85 0.435 4956 +4958 4 13.68 217.23 -8.32 0.435 4957 +4959 4 12.72 218.64 -7.82 0.435 4958 +4960 4 12.38 220.34 -7.12 0.435 4959 +4961 4 11.33 223.08 -6.87 0.435 4960 +4962 4 11.09 223.49 -6.76 0.435 4961 +4963 4 10.15 224.71 -6.65 0.435 4962 +4964 4 9.59 226.63 -6.47 0.435 4963 +4965 4 9.33 227.24 -6.41 0.435 4964 +4966 4 9.28 228.11 -6.32 0.435 4965 +4967 4 8.34 228.87 -5.81 0.435 4966 +4968 4 7.2 229.86 -5.66 0.435 4967 +4969 4 6.67 231.33 -5.52 0.435 4968 +4970 4 6.14 232.59 -5.4 0.435 4969 +4971 4 5.9 233.21 -5.27 0.435 4970 +4972 4 5.41 233.83 -5.22 0.435 4971 +4973 4 4.92 234.88 -5.12 0.435 4972 +4974 4 4.2 235.91 -5.03 0.435 4973 +4975 4 3.07 236.7 -4.98 0.435 4974 +4976 4 2.56 237.74 -4.88 0.435 4975 +4977 4 2.23 239.44 -4.63 0.435 4976 +4978 4 1.75 240.27 -4.56 0.435 4977 +4979 4 0.98 241.9 -3.96 0.435 4978 +4980 4 0.46 242.86 -3.11 0.435 4979 +4981 4 -0.05 244.09 -2.7 0.435 4980 +4982 4 -0.97 244.89 -2.64 0.435 4981 +4983 4 -1.48 245.9 -2.09 0.435 4982 +4984 4 -2.17 246.21 -1.4 0.435 4983 +4985 4 -3.26 246.95 -2.93 0.435 4984 +4986 4 -3.7 247.44 -3.73 0.435 4985 +4987 4 -4.37 247.87 -4.07 0.435 4986 +4988 4 -5.49 248.44 -4.04 0.435 4987 +4989 4 -6.81 248.79 -4.03 0.435 4988 +4990 4 -7.94 249.59 -3.97 0.435 4989 +4991 4 -8.49 251.27 -3.81 0.435 4990 +4992 4 -9.9 252.91 -3.68 0.435 4991 +4993 4 -10.38 254.27 -4.6 0.435 4992 +4994 4 -11.32 255.57 -5.16 0.435 4993 +4995 4 -12.9 257.31 -6.16 0.435 4994 +4996 4 -13.38 258.21 -6.68 0.435 4995 +4997 4 -13.47 259.79 -7.27 0.435 4996 +4998 4 -14.64 261.23 -7.22 0.435 4997 +4999 4 -15.82 262.91 -7.38 0.435 4998 +5000 4 -16.71 263.56 -7.94 0.435 4999 +5001 4 -16.85 266.0 -8.52 0.435 5000 +5002 4 -16.96 267.93 -8.32 0.435 5001 +5003 4 -17.07 269.42 -8.17 0.435 5002 +5004 4 -18.23 270.88 -8.27 0.435 5003 +5005 4 -19.17 272.18 -8.84 0.435 5004 +5006 4 -19.69 273.66 -8.77 0.435 5005 +5007 4 -20.61 274.48 -8.86 0.435 5006 +5008 4 -20.67 275.6 -9.2 0.435 5007 +5009 4 -20.73 276.7 -9.31 0.435 5008 +5010 4 -20.56 277.87 -10.09 0.435 5009 +5011 4 -20.59 278.83 -10.89 0.435 5010 +5012 4 -20.66 279.9 -10.78 0.435 5011 +5013 4 -20.75 281.69 -11.43 0.435 5012 +5014 4 -21.44 282.59 -12.03 0.435 5013 +5015 4 -22.55 283.51 -13.32 0.435 5014 +5016 4 -23.45 284.36 -13.71 0.435 5015 +5017 4 -24.11 284.83 -14.5 0.435 5016 +5018 4 -25.64 285.23 -15.1 0.435 5017 +5019 4 -26.92 285.2 -15.58 0.435 5018 +5020 4 -27.79 285.17 -15.84 0.435 5019 +5021 4 -29.05 284.69 -16.22 0.435 5020 +5022 4 -30.6 285.25 -16.27 0.435 5021 +5023 4 -32.61 286.22 -16.3 0.435 5022 +5024 4 -36.18 287.73 -16.29 0.435 5023 +5025 4 -39.26 288.93 -17.23 0.435 5024 +5026 4 -40.9 291.3 -18.15 0.435 5025 +5027 4 -42.33 292.61 -16.84 0.435 5026 +5028 4 -43.32 294.68 -16.65 0.435 5027 +5029 4 -43.79 294.82 -16.12 0.435 5028 +5030 4 -45.41 296.18 -15.57 0.435 5029 +5031 4 -45.51 297.63 -14.89 0.435 5030 +5032 4 -46.48 299.06 -14.54 0.435 5031 +5033 4 -47.18 299.6 -13.9 0.435 5032 +5034 4 -47.71 300.56 -12.98 0.435 5033 +5035 4 -48.41 301.36 -12.76 0.435 5034 +5036 4 -48.67 301.94 -12.25 0.435 5035 +5037 4 -48.75 302.97 -11.7 0.435 5036 +5038 4 -48.91 305.3 -11.24 0.435 5037 +5039 4 25.5 205.85 -20.22 1.41 4944 +5040 4 24.79 206.88 -20.13 1.41 5039 +5041 4 25.11 206.91 -20.16 1.41 5040 +5042 4 25.27 206.92 -20.17 1.41 5041 +5043 4 24.04 207.49 -18.58 0.11 5042 +5044 4 23.5 209.18 -18.49 0.11 5043 +5045 4 22.71 211.23 -17.77 0.435 5044 +5046 4 21.92 213.08 -17.29 0.435 5045 +5047 4 21.35 214.89 -16.06 0.435 5046 +5048 4 20.8 216.26 -15.03 0.435 5047 +5049 4 20.27 217.2 -13.89 0.435 5048 +5050 4 19.56 217.43 -12.38 0.435 5049 +5051 4 18.45 217.81 -12.44 0.435 5050 +5052 4 16.79 220.07 -12.25 0.435 5051 +5053 4 15.97 222.59 -12.0 0.435 5052 +5054 4 15.88 224.1 -11.85 0.435 5053 +5055 4 16.25 224.93 -11.15 0.435 5054 +5056 4 16.43 225.36 -11.1 0.435 5055 +5057 4 16.79 226.68 -11.04 0.435 5056 +5058 4 16.74 227.28 -10.53 0.435 5057 +5059 4 16.85 228.53 -9.86 0.435 5058 +5060 4 15.6 230.76 -9.06 0.435 5059 +5061 4 15.09 231.72 -8.14 0.435 5060 +5062 4 13.63 234.2 -7.84 0.435 5061 +5063 4 12.41 236.27 -7.59 0.435 5062 +5064 4 12.33 237.31 -7.18 0.435 5063 +5065 4 11.36 238.69 -6.46 0.435 5064 +5066 4 11.01 240.07 -5.2 0.435 5065 +5067 4 10.49 240.98 -3.91 0.435 5066 +5068 4 8.18 242.98 -3.6 0.435 5067 +5069 4 6.48 245.65 -3.14 0.435 5068 +5070 4 4.52 249.17 -2.67 0.435 5069 +5071 4 2.66 251.21 -2.5 0.435 5070 +5072 4 0.25 254.68 -1.83 0.435 5071 +5073 4 -1.47 257.75 -1.02 0.435 5072 +5074 4 -2.04 259.34 0.18 0.435 5073 +5075 4 -3.67 260.9 0.83 0.435 5074 +5076 4 -4.19 261.88 1.59 0.435 5075 +5077 4 -4.7 262.85 2.28 0.435 5076 +5078 4 -5.65 263.83 2.81 0.435 5077 +5079 4 -8.18 266.03 3.06 0.435 5078 +5080 4 -10.04 268.06 3.3 0.435 5079 +5081 4 -11.68 269.63 3.95 0.435 5080 +5082 4 -13.1 270.93 5.26 0.435 5081 +5083 4 -14.12 272.97 5.97 0.435 5082 +5084 4 -14.27 275.05 6.72 0.435 5083 +5085 4 -14.29 275.74 6.25 0.435 5084 +5086 4 -14.76 276.37 6.24 0.435 5085 +5087 4 -14.57 276.28 7.29 0.435 5086 +5088 4 -15.09 276.72 9.12 0.435 5087 +5089 4 -15.13 277.05 10.06 0.435 5088 +5090 4 -15.87 277.49 11.6 0.435 5089 +5091 4 -16.77 278.03 12.16 0.435 5090 +5092 4 25.36 208.22 -20.06 1.41 5041 +5093 4 25.75 208.68 -20.0 1.41 5092 +5094 4 26.09 210.2 -19.84 1.41 5093 +5095 4 25.77 211.9 -19.67 1.41 5094 +5096 4 25.17 214.24 -19.44 1.41 5095 +5097 4 24.36 216.77 -19.2 1.41 5096 +5098 4 23.37 218.86 -19.0 1.41 5097 +5099 4 23.07 220.44 -19.74 1.41 5098 +5100 4 23.38 220.59 -19.72 1.41 5099 +5101 4 24.2 221.0 -18.9 0.435 5100 +5102 4 24.15 221.65 -18.92 0.435 5101 +5103 4 24.33 222.02 -18.2 0.435 5102 +5104 4 24.46 223.29 -17.77 0.435 5103 +5105 4 24.65 223.19 -16.72 0.435 5104 +5106 4 24.62 223.6 -16.52 0.435 5105 +5107 4 24.82 223.54 -15.69 0.435 5106 +5108 4 24.77 224.14 -15.33 0.435 5107 +5109 4 24.95 224.52 -14.61 0.435 5108 +5110 4 25.08 225.32 -13.84 0.435 5109 +5111 4 25.45 226.14 -13.07 0.435 5110 +5112 4 25.82 227.0 -12.82 0.435 5111 +5113 4 25.97 228.07 -12.56 0.435 5112 +5114 4 26.35 228.7 -12.11 0.435 5113 +5115 4 26.52 229.33 -11.74 0.435 5114 +5116 4 26.89 230.21 -11.64 0.435 5115 +5117 4 27.48 231.31 -11.43 0.435 5116 +5118 4 27.77 233.48 -11.13 0.435 5117 +5119 4 28.12 234.79 -10.99 0.435 5118 +5120 4 28.22 236.24 -10.23 0.435 5119 +5121 4 28.37 237.31 -10.04 0.435 5120 +5122 4 28.52 238.37 -9.7 0.435 5121 +5123 4 28.87 239.44 -9.2 0.435 5122 +5124 4 29.21 240.48 -8.48 0.435 5123 +5125 4 29.39 241.1 -8.19 0.435 5124 +5126 4 29.74 242.18 -7.84 0.435 5125 +5127 4 29.94 242.89 -8.37 0.435 5126 +5128 4 30.15 243.45 -9.36 0.435 5127 +5129 4 30.55 244.16 -9.73 0.435 5128 +5130 4 30.73 245.09 -10.23 0.435 5129 +5131 4 31.11 245.99 -10.21 0.435 5130 +5132 4 31.25 247.32 -10.44 0.435 5131 +5133 4 31.18 248.39 -10.4 0.435 5132 +5134 4 31.55 249.5 -10.36 0.435 5133 +5135 4 31.52 250.23 -11.04 0.435 5134 +5136 4 31.69 251.11 -11.1 0.435 5135 +5137 4 32.76 251.67 -11.62 0.435 5136 +5138 4 33.71 253.66 -11.39 0.435 5137 +5139 4 34.25 255.41 -11.19 0.435 5138 +5140 4 34.44 256.14 -11.79 0.435 5139 +5141 4 34.59 257.25 -11.82 0.435 5140 +5142 4 34.56 257.39 -11.28 0.435 5141 +5143 4 34.75 258.1 -11.58 0.435 5142 +5144 4 34.72 258.79 -11.96 0.435 5143 +5145 4 34.69 259.48 -12.42 0.435 5144 +5146 4 34.85 260.61 -12.75 0.435 5145 +5147 4 35.01 261.49 -12.73 0.435 5146 +5148 4 36.04 262.67 -13.11 0.435 5147 +5149 4 36.14 264.4 -12.93 0.435 5148 +5150 4 35.79 266.54 -12.79 0.435 5149 +5151 4 35.71 267.82 -12.66 0.435 5150 +5152 4 35.69 268.04 -12.64 0.435 5151 +5153 4 35.63 269.41 -13.33 0.435 5152 +5154 4 35.1 271.14 -13.61 0.435 5153 +5155 4 34.33 273.34 -14.3 0.435 5154 +5156 4 33.58 275.36 -15.4 0.435 5155 +5157 4 33.7 277.1 -15.37 0.435 5156 +5158 4 33.35 279.26 -15.37 0.435 5157 +5159 4 32.99 282.12 -15.99 0.435 5158 +5160 4 32.62 284.52 -16.35 0.435 5159 +5161 4 32.53 286.02 -16.2 0.435 5160 +5162 4 32.46 287.66 -17.32 0.435 5161 +5163 4 31.64 290.4 -17.06 0.435 5162 +5164 4 31.79 292.04 -18.08 0.435 5163 +5165 4 31.73 293.12 -18.05 0.435 5164 +5166 4 31.78 295.75 -18.23 0.435 5165 +5167 4 33.4 297.78 -18.05 0.435 5166 +5168 4 34.36 299.85 -18.42 0.435 5167 +5169 4 34.49 301.4 -18.64 0.435 5168 +5170 4 35.25 303.21 -18.88 0.435 5169 +5171 4 35.57 305.17 -18.74 0.435 5170 +5172 4 36.5 307.32 -17.9 0.435 5171 +5173 4 36.73 310.34 -17.58 0.435 5172 +5174 4 36.45 311.38 -17.33 0.435 5173 +5175 4 36.33 313.31 -17.13 0.435 5174 +5176 4 36.4 315.47 -16.9 0.435 5175 +5177 4 36.68 318.06 -16.63 0.435 5176 +5178 4 36.99 319.86 -16.52 0.435 5177 +5179 4 37.58 321.0 -16.69 0.435 5178 +5180 4 37.96 322.18 -17.31 0.435 5179 +5181 4 37.91 323.61 -18.59 0.435 5180 +5182 4 38.08 324.77 -19.22 0.435 5181 +5183 4 38.05 325.76 -20.48 0.435 5182 +5184 4 37.32 327.26 -20.71 0.435 5183 +5185 4 37.04 328.64 -21.56 0.435 5184 +5186 4 36.36 329.55 -22.46 0.435 5185 +5187 4 36.31 330.19 -22.32 0.435 5186 +5188 4 35.84 331.32 -23.04 0.435 5187 +5189 4 36.15 333.84 -24.2 0.435 5188 +5190 4 36.3 335.24 -24.96 0.435 5189 +5191 4 36.86 337.06 -25.51 0.435 5190 +5192 4 37.23 338.46 -26.11 0.435 5191 +5193 4 38.13 341.55 -26.0 0.435 5192 +5194 4 38.46 343.32 -26.11 0.435 5193 +5195 4 39.61 345.76 -25.9 0.435 5194 +5196 4 40.68 349.53 -25.94 0.435 5195 +5197 4 41.48 350.65 -25.8 0.435 5196 +5198 4 42.65 352.66 -25.57 0.435 5197 +5199 4 42.56 354.16 -25.42 0.435 5198 +5200 4 42.46 355.67 -25.34 0.435 5199 +5201 4 42.15 357.69 -26.2 0.435 5200 +5202 4 41.01 359.3 -27.79 0.435 5201 +5203 4 22.75 222.16 -19.87 1.41 5100 +5204 4 22.65 224.49 -21.37 1.41 5203 +5205 4 23.01 225.8 -21.3 1.41 5204 +5206 4 23.11 227.53 -21.12 1.41 5205 +5207 4 23.26 229.17 -22.15 1.41 5206 +5208 4 23.43 230.84 -23.49 1.41 5207 +5209 4 23.32 232.56 -23.46 1.41 5208 +5210 4 23.49 234.07 -25.26 1.41 5209 +5211 4 23.54 234.89 -25.17 1.41 5210 +5212 4 22.83 235.39 -24.08 0.435 5211 +5213 4 22.78 236.02 -23.94 0.435 5212 +5214 4 22.3 236.57 -23.22 0.435 5213 +5215 4 21.58 237.07 -22.21 0.435 5214 +5216 4 20.88 237.39 -21.44 0.435 5215 +5217 4 20.16 238.63 -21.25 0.435 5216 +5218 4 19.69 238.98 -20.7 0.435 5217 +5219 4 19.19 239.55 -20.2 0.435 5218 +5220 4 19.12 240.32 -19.37 0.435 5219 +5221 4 18.38 241.76 -19.09 0.435 5220 +5222 4 17.89 242.59 -19.01 0.435 5221 +5223 4 17.38 243.85 -18.81 0.435 5222 +5224 4 16.67 244.66 -18.68 0.435 5223 +5225 4 15.93 245.88 -18.33 0.435 5224 +5226 4 15.43 246.92 -18.17 0.435 5225 +5227 4 14.98 247.09 -18.01 0.435 5226 +5228 4 14.51 247.71 -17.96 0.435 5227 +5229 4 14.65 248.79 -17.84 0.435 5228 +5230 4 14.54 250.5 -17.59 0.435 5229 +5231 4 13.77 252.39 -17.41 0.435 5230 +5232 4 12.98 254.48 -17.21 0.435 5231 +5233 4 12.44 256.16 -16.9 0.435 5232 +5234 4 11.94 256.92 -16.16 0.435 5233 +5235 4 11.42 258.18 -16.04 0.435 5234 +5236 4 10.97 258.88 -16.74 0.435 5235 +5237 4 10.48 259.71 -16.66 0.435 5236 +5238 4 9.56 260.78 -17.02 0.435 5237 +5239 4 8.9 261.52 -18.32 0.435 5238 +5240 4 8.24 261.93 -18.6 0.435 5239 +5241 4 7.57 262.11 -18.59 0.435 5240 +5242 4 6.85 263.14 -18.57 0.435 5241 +5243 4 6.82 264.1 -19.31 0.435 5242 +5244 4 7.0 264.79 -19.69 0.435 5243 +5245 4 6.98 265.47 -19.99 0.435 5244 +5246 4 6.92 266.62 -20.55 0.435 5245 +5247 4 6.9 267.32 -21.01 0.435 5246 +5248 4 6.83 268.43 -21.35 0.435 5247 +5249 4 6.34 269.26 -21.27 0.435 5248 +5250 4 5.84 270.81 -21.88 0.435 5249 +5251 4 4.9 271.83 -21.79 0.435 5250 +5252 4 4.18 273.41 -22.77 0.435 5251 +5253 4 3.18 275.49 -22.51 0.435 5252 +5254 4 2.65 276.73 -22.24 0.435 5253 +5255 4 1.75 277.84 -23.13 0.435 5254 +5256 4 1.73 279.1 -24.73 0.435 5255 +5257 4 1.68 280.29 -25.74 0.435 5256 +5258 4 1.6 281.8 -25.74 0.435 5257 +5259 4 1.0 284.13 -25.51 0.435 5258 +5260 4 -0.66 286.61 -25.29 0.435 5259 +5261 4 -1.83 288.37 -26.19 0.435 5260 +5262 4 -2.36 289.84 -26.06 0.435 5261 +5263 4 -3.3 291.13 -26.55 0.435 5262 +5264 4 -4.21 292.46 -27.34 0.435 5263 +5265 4 -4.7 293.29 -27.33 0.435 5264 +5266 4 -5.87 295.04 -28.16 0.435 5265 +5267 4 -6.74 295.55 -29.41 0.435 5266 +5268 4 -8.07 296.12 -29.45 0.435 5267 +5269 4 -9.19 296.97 -29.99 0.435 5268 +5270 4 -9.92 298.24 -30.03 0.435 5269 +5271 4 -11.31 299.66 -29.92 0.435 5270 +5272 4 -13.35 301.85 -31.4 0.435 5271 +5273 4 -14.71 303.16 -32.2 0.435 5272 +5274 4 -15.39 303.83 -32.83 0.435 5273 +5275 4 -15.85 304.72 -33.34 0.435 5274 +5276 4 -16.78 306.05 -34.28 0.435 5275 +5277 4 -17.7 307.36 -34.85 0.435 5276 +5278 4 -18.83 308.5 -36.12 0.435 5277 +5279 4 -20.42 310.21 -36.88 0.435 5278 +5280 4 -21.37 311.49 -37.15 0.435 5279 +5281 4 -22.28 312.58 -37.81 0.435 5280 +5282 4 -23.39 313.49 -38.87 0.435 5281 +5283 4 -23.87 314.36 -39.24 0.435 5282 +5284 4 -23.91 315.8 -40.53 0.435 5283 +5285 4 -24.63 317.11 -41.09 0.435 5284 +5286 4 -25.3 318.08 -42.36 0.435 5285 +5287 4 -25.97 319.0 -43.41 0.435 5286 +5288 4 -28.19 319.76 -43.76 0.435 5287 +5289 4 -29.1 320.62 -44.15 0.435 5288 +5290 4 -29.79 321.5 -44.75 0.435 5289 +5291 4 -31.42 323.58 -44.87 0.435 5290 +5292 4 -32.36 324.61 -44.87 0.435 5291 +5293 4 -32.78 325.16 -46.18 0.435 5292 +5294 4 -33.89 326.08 -47.47 0.435 5293 +5295 4 23.42 235.13 -25.15 1.41 5211 +5296 4 23.56 236.43 -25.01 1.41 5295 +5297 4 24.14 237.55 -24.89 1.41 5296 +5298 4 24.54 238.83 -26.55 1.41 5297 +5299 4 24.89 240.4 -26.76 1.515 5298 +5300 4 25.23 242.5 -27.96 1.515 5299 +5301 4 25.6 243.61 -27.99 1.515 5300 +5302 4 25.31 244.88 -27.86 1.625 5301 +5303 4 25.0 246.65 -28.89 1.625 5302 +5304 4 24.94 248.26 -29.93 1.625 5303 +5305 4 25.08 249.34 -29.6 1.625 5304 +5306 4 24.51 249.71 -29.57 1.625 5305 +5307 4 23.36 250.4 -29.08 0.65 5306 +5308 4 22.83 251.57 -28.13 0.54 5307 +5309 4 22.6 251.78 -28.2 0.54 5308 +5310 4 22.58 251.68 -27.22 0.54 5309 +5311 4 22.56 251.59 -26.34 0.54 5310 +5312 4 22.54 251.5 -25.51 0.54 5311 +5313 4 22.49 251.84 -24.57 0.54 5312 +5314 4 22.48 251.81 -24.27 0.54 5313 +5315 4 22.46 252.0 -24.03 0.54 5314 +5316 4 22.44 251.94 -23.44 0.54 5315 +5317 4 22.41 252.04 -22.37 0.54 5316 +5318 4 22.4 251.99 -21.92 0.54 5317 +5319 4 22.38 251.89 -20.88 0.54 5318 +5320 4 22.37 252.16 -21.37 0.54 5319 +5321 4 22.36 252.36 -21.28 0.54 5320 +5322 4 22.33 252.78 -21.02 0.54 5321 +5323 4 22.31 252.68 -20.12 0.54 5322 +5324 4 21.83 253.01 -19.42 0.54 5323 +5325 4 21.34 253.82 -19.2 0.76 5324 +5326 4 20.56 255.93 -19.0 0.65 5325 +5327 4 20.46 257.43 -18.84 0.65 5326 +5328 4 19.04 259.27 -18.69 0.65 5327 +5329 4 18.3 260.51 -18.5 0.65 5328 +5330 4 17.54 262.4 -18.33 0.65 5329 +5331 4 16.79 263.84 -17.96 0.65 5330 +5332 4 16.0 265.68 -17.27 0.65 5331 +5333 4 15.42 267.46 -16.04 0.54 5332 +5334 4 14.89 268.65 -15.18 0.54 5333 +5335 4 14.36 269.59 -14.11 0.54 5334 +5336 4 14.31 270.15 -13.23 0.54 5335 +5337 4 14.21 271.11 -12.07 0.54 5336 +5338 4 13.4 273.38 -11.34 0.54 5337 +5339 4 12.61 275.47 -11.06 0.54 5338 +5340 4 12.33 276.85 -11.98 0.435 5339 +5341 4 11.57 278.53 -11.82 0.435 5340 +5342 4 11.52 279.4 -11.88 0.435 5341 +5343 4 11.32 282.9 -12.28 0.435 5342 +5344 4 10.65 286.74 -11.9 0.435 5343 +5345 4 10.75 288.46 -11.72 0.435 5344 +5346 4 9.78 290.13 -11.57 0.435 5345 +5347 4 8.54 292.42 -11.36 0.435 5346 +5348 4 7.73 294.95 -11.2 0.435 5347 +5349 4 7.38 296.75 -9.96 0.435 5348 +5350 4 6.84 298.5 -10.32 0.435 5349 +5351 4 6.77 299.84 -10.72 0.435 5350 +5352 4 6.85 302.01 -10.56 0.435 5351 +5353 4 6.76 303.77 -10.9 0.435 5352 +5354 4 5.1 305.83 -10.81 0.435 5353 +5355 4 3.96 306.84 -10.73 0.435 5354 +5356 4 2.12 308.45 -10.61 0.435 5355 +5357 4 -0.11 309.63 -10.84 0.435 5356 +5358 4 -1.79 312.11 -10.62 0.435 5357 +5359 4 -1.95 314.69 -10.36 0.435 5358 +5360 4 -2.92 316.34 -10.28 0.435 5359 +5361 4 -4.14 318.47 -10.54 0.435 5360 +5362 4 -4.68 320.41 -10.66 0.435 5361 +5363 4 -5.42 321.63 -10.33 0.435 5362 +5364 4 -6.12 322.44 -10.26 0.435 5363 +5365 4 -7.54 324.29 -10.1 0.435 5364 +5366 4 -7.82 324.88 -9.6 0.435 5365 +5367 4 -8.26 324.73 -8.42 0.435 5366 +5368 4 -8.35 325.44 -6.99 0.435 5367 +5369 4 -9.28 325.67 -5.56 0.435 5368 +5370 4 -9.76 326.01 -4.85 0.435 5369 +5371 4 -10.23 326.33 -4.0 0.435 5370 +5372 4 -11.15 326.62 -3.24 0.435 5371 +5373 4 -11.62 327.2 -2.74 0.435 5372 +5374 4 -13.21 327.89 -2.03 0.435 5373 +5375 4 -13.07 328.41 -0.69 0.435 5374 +5376 4 -13.85 330.49 -0.19 0.435 5375 +5377 4 -13.88 330.39 0.77 0.435 5376 +5378 4 -15.05 331.32 1.52 0.435 5377 +5379 4 -16.19 332.06 2.09 0.435 5378 +5380 4 -17.59 333.2 2.71 0.435 5379 +5381 4 -18.96 334.16 3.15 0.435 5380 +5382 4 -19.52 335.76 4.28 0.435 5381 +5383 4 -20.73 337.1 5.29 0.435 5382 +5384 4 -20.82 338.32 5.95 0.435 5383 +5385 4 -21.76 339.33 6.18 0.435 5384 +5386 4 -22.96 340.62 7.64 0.435 5385 +5387 4 -24.08 340.44 8.81 0.435 5386 +5388 4 -24.8 341.18 9.61 0.435 5387 +5389 4 -25.96 342.11 10.28 0.435 5388 +5390 4 -26.74 343.94 11.14 0.435 5389 +5391 4 -27.77 346.22 11.5 0.435 5390 +5392 4 -28.76 348.06 12.04 0.435 5391 +5393 4 -29.82 350.7 13.19 0.435 5392 +5394 4 -30.86 352.41 15.0 0.435 5393 +5395 4 -30.94 353.4 15.86 0.435 5394 +5396 4 -31.03 354.39 16.78 0.435 5395 +5397 4 -32.45 355.93 17.81 0.435 5396 +5398 4 -31.91 357.2 18.49 0.435 5397 +5399 4 -31.56 358.73 18.66 0.435 5398 +5400 4 -31.4 359.6 18.75 0.435 5399 +5401 4 -31.48 360.67 18.86 0.435 5400 +5402 4 -32.2 361.64 19.55 0.435 5401 +5403 4 -32.92 362.42 19.98 0.435 5402 +5404 4 -34.33 364.03 20.35 0.435 5403 +5405 4 -36.16 365.41 20.6 0.435 5404 +5406 4 -36.49 366.99 21.36 0.435 5405 +5407 4 -36.56 367.79 21.96 0.435 5406 +5408 4 -37.48 368.57 22.32 0.435 5407 +5409 4 -38.01 369.8 22.67 0.435 5408 +5410 4 -38.95 370.79 23.04 0.435 5409 +5411 4 -39.04 372.28 23.34 0.435 5410 +5412 4 -39.79 373.69 23.92 0.435 5411 +5413 4 -39.72 375.36 24.7 0.435 5412 +5414 4 -40.3 377.65 25.22 0.435 5413 +5415 4 -40.82 378.86 25.79 0.435 5414 +5416 4 -41.99 379.56 26.82 0.435 5415 +5417 4 -42.9 379.8 28.1 0.435 5416 +5418 4 -43.81 380.12 28.65 0.435 5417 +5419 4 -45.2 381.29 29.26 0.435 5418 +5420 4 -46.14 382.28 29.41 0.435 5419 +5421 4 -46.22 383.56 29.69 0.435 5420 +5422 4 -46.34 385.24 30.16 0.435 5421 +5423 4 -46.88 386.68 30.68 0.435 5422 +5424 4 -48.33 389.16 30.97 0.435 5423 +5425 4 -49.85 392.51 31.36 0.435 5424 +5426 4 -51.48 394.12 31.49 0.435 5425 +5427 4 -52.44 395.57 31.69 0.435 5426 +5428 4 -54.07 397.17 31.9 0.435 5427 +5429 4 -55.67 398.37 31.98 0.435 5428 +5430 4 -57.42 401.86 32.83 0.435 5429 +5431 4 -59.31 404.32 33.12 0.435 5430 +5432 4 -60.72 405.95 33.4 0.435 5431 +5433 4 -61.9 407.12 34.02 0.435 5432 +5434 4 -63.33 408.94 34.32 0.435 5433 +5435 4 -63.43 410.15 35.2 0.435 5434 +5436 4 -63.37 412.46 36.04 0.435 5435 +5437 4 -63.43 413.03 36.79 0.435 5436 +5438 4 -63.31 414.52 37.16 0.435 5437 +5439 4 -63.4 415.48 38.39 0.435 5438 +5440 4 -64.82 417.09 38.75 0.435 5439 +5441 4 -64.9 418.37 38.95 0.435 5440 +5442 4 -65.46 420.27 39.14 0.435 5441 +5443 4 -65.57 421.98 39.31 0.435 5442 +5444 4 -66.5 423.0 39.39 0.435 5443 +5445 4 -67.03 424.46 39.61 0.435 5444 +5446 4 -67.09 425.09 39.9 0.435 5445 +5447 4 -67.15 425.62 41.09 0.435 5446 +5448 4 -67.24 426.87 41.52 0.435 5447 +5449 4 -67.91 427.06 41.89 0.435 5448 +5450 4 -68.38 427.69 41.88 0.435 5449 +5451 4 -68.67 427.89 43.85 0.435 5450 +5452 4 -69.34 427.76 44.8 0.435 5451 +5453 4 -69.82 428.09 45.42 0.435 5452 +5454 4 -70.53 428.32 47.09 0.435 5453 +5455 4 -70.4 428.79 48.87 0.435 5454 +5456 4 -70.69 429.56 49.78 0.435 5455 +5457 4 -71.19 430.83 49.75 0.435 5456 +5458 4 -70.83 431.4 50.79 0.435 5457 +5459 4 -70.69 432.44 51.35 0.435 5458 +5460 4 -71.64 432.86 53.1 0.435 5459 +5461 4 -72.13 433.68 53.26 0.435 5460 +5462 4 -72.86 434.38 54.37 0.435 5461 +5463 4 -73.55 434.95 54.71 0.435 5462 +5464 4 -74.52 436.37 55.14 0.435 5463 +5465 4 -74.8 437.18 55.52 0.435 5464 +5466 4 -74.42 437.8 56.11 0.435 5465 +5467 4 -74.29 438.86 56.46 0.435 5466 +5468 4 -74.34 439.71 56.61 0.435 5467 +5469 4 -74.81 440.33 56.67 0.435 5468 +5470 4 -75.98 441.75 56.87 0.435 5469 +5471 4 -77.58 442.95 56.95 0.435 5470 +5472 4 -79.51 445.84 57.21 0.435 5471 +5473 4 -80.99 448.77 57.48 0.435 5472 +5474 4 -81.53 449.95 58.26 0.435 5473 +5475 4 -83.24 452.79 59.19 0.435 5474 +5476 4 -83.16 454.71 59.62 0.435 5475 +5477 4 -83.05 456.16 60.37 0.435 5476 +5478 4 -82.78 458.54 60.7 0.435 5477 +5479 4 -82.69 460.44 61.28 0.435 5478 +5480 4 -82.56 461.44 62.21 0.435 5479 +5481 4 -82.16 461.87 62.49 0.435 5480 +5482 4 -82.28 463.52 63.26 0.435 5481 +5483 4 -82.79 464.27 64.09 0.435 5482 +5484 4 -83.96 465.19 64.98 0.435 5483 +5485 4 -84.45 465.43 66.57 0.435 5484 +5486 4 -85.19 466.12 67.91 0.435 5485 +5487 4 -86.14 466.82 68.94 0.435 5486 +5488 4 -86.39 467.15 69.87 0.435 5487 +5489 4 -87.75 467.87 70.36 0.435 5488 +5490 4 -89.09 468.16 71.04 0.435 5489 +5491 4 24.48 250.15 -29.53 1.625 5306 +5492 4 25.04 250.78 -31.11 1.735 5491 +5493 4 25.2 251.66 -31.01 1.735 5492 +5494 4 24.94 253.32 -32.58 1.735 5493 +5495 4 24.84 255.39 -33.79 1.735 5494 +5496 4 24.75 257.17 -34.21 1.735 5495 +5497 4 24.22 258.42 -34.03 1.735 5496 +5498 4 24.4 259.13 -33.95 1.735 5497 +5499 4 24.81 259.89 -34.69 0.65 5498 +5500 4 25.2 260.54 -34.54 0.865 5499 +5501 4 26.04 260.81 -34.41 0.865 5500 +5502 4 26.62 262.18 -34.71 0.865 5501 +5503 4 27.38 263.94 -34.59 0.65 5502 +5504 4 28.18 265.31 -34.65 0.65 5503 +5505 4 28.52 266.63 -34.58 0.65 5504 +5506 4 29.08 268.17 -34.48 0.65 5505 +5507 4 30.07 269.54 -34.4 0.65 5506 +5508 4 31.02 271.74 -34.15 0.65 5507 +5509 4 31.97 273.96 -34.05 0.65 5508 +5510 4 32.68 276.4 -33.93 0.65 5509 +5511 4 33.63 278.6 -33.68 0.65 5510 +5512 4 34.55 281.24 -33.45 0.65 5511 +5513 4 35.7 283.46 -33.2 0.65 5512 +5514 4 36.96 287.63 -32.73 0.65 5513 +5515 4 37.71 289.39 -32.53 0.65 5514 +5516 4 38.64 291.81 -32.26 0.65 5515 +5517 4 39.53 294.88 -31.92 0.65 5516 +5518 4 40.45 297.31 -31.65 0.65 5517 +5519 4 41.41 299.51 -31.4 0.65 5518 +5520 4 42.53 302.38 -31.08 0.65 5519 +5521 4 43.47 304.59 -30.83 0.65 5520 +5522 4 43.84 305.22 -30.38 0.65 5521 +5523 4 44.85 306.57 -30.22 0.65 5522 +5524 4 47.13 308.21 -29.99 0.65 5523 +5525 4 47.49 309.32 -29.87 0.65 5524 +5526 4 47.83 310.83 -29.62 0.65 5525 +5527 4 48.14 312.78 -29.41 0.65 5526 +5528 4 48.48 314.1 -29.27 0.65 5527 +5529 4 48.44 314.73 -29.21 0.65 5528 +5530 4 49.23 316.37 -29.7 0.65 5529 +5531 4 49.64 316.85 -29.94 0.65 5530 +5532 4 49.99 317.91 -29.44 0.65 5531 +5533 4 23.96 259.81 -35.1 1.735 5498 +5534 4 23.69 260.96 -35.81 1.735 5533 +5535 4 23.35 261.23 -35.79 1.735 5534 +5536 4 22.02 261.6 -36.08 0.76 5535 +5537 4 21.26 263.26 -35.78 0.54 5536 +5538 4 20.31 264.49 -35.67 0.54 5537 +5539 4 19.56 266.17 -35.52 0.54 5538 +5540 4 18.81 267.63 -35.38 0.54 5539 +5541 4 18.32 268.68 -35.29 0.54 5540 +5542 4 17.79 269.93 -35.17 0.54 5541 +5543 4 17.69 271.43 -35.02 0.54 5542 +5544 4 17.64 272.29 -34.93 0.54 5543 +5545 4 17.8 273.16 -34.84 0.54 5544 +5546 4 17.71 274.66 -34.68 0.54 5545 +5547 4 17.82 276.39 -34.5 0.54 5546 +5548 4 17.75 277.45 -34.39 0.54 5547 +5549 4 16.37 278.66 -34.3 0.54 5548 +5550 4 15.86 279.71 -34.2 0.54 5549 +5551 4 14.91 281.16 -34.08 0.54 5550 +5552 4 13.53 282.35 -33.99 0.54 5551 +5553 4 13.23 282.82 -32.22 0.54 5552 +5554 4 12.87 283.44 -32.08 0.65 5553 +5555 4 12.99 284.95 -31.92 0.65 5554 +5556 4 12.9 286.45 -31.77 0.865 5555 +5557 4 13.01 288.18 -31.58 0.865 5556 +5558 4 13.31 290.14 -31.38 0.865 5557 +5559 4 13.44 291.65 -31.22 0.865 5558 +5560 4 13.55 293.16 -31.06 0.865 5559 +5561 4 13.52 293.6 -31.01 0.865 5560 +5562 4 12.83 294.19 -30.97 0.865 5561 +5563 4 11.9 295.21 -30.88 0.54 5562 +5564 4 11.62 296.27 -30.78 0.76 5563 +5565 4 10.47 297.28 -30.7 0.76 5564 +5566 4 9.96 298.32 -30.61 0.76 5565 +5567 4 9.23 299.56 -30.5 0.65 5566 +5568 4 7.86 300.78 -30.4 0.65 5567 +5569 4 7.34 302.03 -30.29 0.65 5568 +5570 4 6.36 303.7 -30.14 0.65 5569 +5571 4 6.28 304.98 -30.01 0.65 5570 +5572 4 4.84 306.46 -28.38 0.65 5571 +5573 4 3.46 307.67 -28.29 0.65 5572 +5574 4 2.76 308.22 -27.79 0.65 5573 +5575 4 2.71 308.55 -26.78 0.65 5574 +5576 4 2.2 309.51 -25.87 0.65 5575 +5577 4 2.08 311.2 -25.47 0.65 5576 +5578 4 1.07 313.3 -25.28 0.65 5577 +5579 4 0.53 314.97 -25.05 0.65 5578 +5580 4 0.44 315.97 -24.26 0.65 5579 +5581 4 -0.94 317.37 -23.85 0.65 5580 +5582 4 -2.36 318.97 -23.41 0.65 5581 +5583 4 -2.91 320.61 -22.73 0.65 5582 +5584 4 -3.02 322.03 -21.84 0.65 5583 +5585 4 -4.45 323.85 -21.38 0.65 5584 +5586 4 -5.83 325.02 -21.06 0.65 5585 +5587 4 -6.99 326.03 -20.91 0.65 5586 +5588 4 -7.04 326.65 -20.7 0.65 5587 +5589 4 -7.98 327.89 -20.59 0.65 5588 +5590 4 -8.05 328.91 -20.04 0.65 5589 +5591 4 -8.15 330.13 -19.24 0.65 5590 +5592 4 -8.02 331.23 -18.82 0.65 5591 +5593 4 -8.08 331.81 -18.16 0.65 5592 +5594 4 -8.15 332.61 -17.62 0.65 5593 +5595 4 -8.23 333.62 -16.92 0.65 5594 +5596 4 -8.79 335.49 -16.35 0.65 5595 +5597 4 -9.29 336.5 -15.96 0.65 5596 +5598 4 -10.29 338.34 -15.49 0.65 5597 +5599 4 -10.35 339.15 -14.96 0.65 5598 +5600 4 -10.87 340.4 -14.69 0.65 5599 +5601 4 -12.29 342.24 -14.46 0.65 5600 +5602 4 -13.48 343.64 -14.04 0.65 5601 +5603 4 -14.39 344.2 -13.63 0.65 5602 +5604 4 -14.69 345.19 -12.93 0.65 5603 +5605 4 -15.23 346.86 -12.55 0.65 5604 +5606 4 -15.13 348.58 -12.28 0.65 5605 +5607 4 -15.69 350.22 -11.69 0.65 5606 +5608 4 -16.9 352.03 -11.07 0.65 5607 +5609 4 -17.39 352.56 -10.13 0.65 5608 +5610 4 -18.55 353.54 -9.82 0.65 5609 +5611 4 -19.71 354.75 -9.65 0.65 5610 +5612 4 -19.78 355.32 -8.84 0.65 5611 +5613 4 -20.29 356.3 -8.07 0.65 5612 +5614 4 -20.38 357.3 -7.29 0.65 5613 +5615 4 -20.9 358.51 -6.8 0.65 5614 +5616 4 -21.63 359.5 -6.34 0.65 5615 +5617 4 -22.57 360.46 -5.66 0.65 5616 +5618 4 -23.53 361.65 -5.11 0.65 5617 +5619 4 -24.03 362.65 -4.64 0.65 5618 +5620 4 -24.1 363.46 -4.03 0.65 5619 +5621 4 -24.87 365.08 -3.36 0.65 5620 +5622 4 -25.42 366.51 -2.84 0.65 5621 +5623 4 -26.14 366.97 -1.38 0.65 5622 +5624 4 -26.65 368.24 -1.26 0.65 5623 +5625 4 -27.14 368.73 -0.09 0.65 5624 +5626 4 -27.24 369.72 0.76 0.65 5625 +5627 4 -27.36 371.37 1.67 0.65 5626 +5628 4 -27.45 372.63 1.95 0.65 5627 +5629 4 -28.21 373.99 3.06 0.65 5628 +5630 4 -28.73 375.25 3.18 0.65 5629 +5631 4 -30.1 375.97 3.74 0.65 5630 +5632 4 -31.5 376.83 5.16 0.65 5631 +5633 4 -32.39 377.2 5.25 0.65 5632 +5634 4 -33.59 379.06 5.42 0.65 5633 +5635 4 -33.05 380.82 5.61 0.65 5634 +5636 4 -32.69 381.85 5.8 0.54 5635 +5637 4 -32.09 382.23 6.69 0.54 5636 +5638 4 -31.98 383.44 7.71 0.54 5637 +5639 4 -31.83 384.22 8.55 0.54 5638 +5640 4 -32.82 385.83 9.29 0.54 5639 +5641 4 -33.32 386.84 9.69 0.54 5640 +5642 4 -33.43 388.04 10.64 0.54 5641 +5643 4 -33.51 389.07 11.2 0.54 5642 +5644 4 -33.84 390.75 11.44 0.54 5643 +5645 4 -33.91 391.81 11.7 0.54 5644 +5646 4 -33.78 392.52 13.36 0.54 5645 +5647 4 -34.06 393.33 13.81 0.54 5646 +5648 4 -35.05 394.9 14.85 0.54 5647 +5649 4 -35.81 396.05 15.86 0.54 5648 +5650 4 -36.56 397.22 16.72 0.54 5649 +5651 4 -37.24 397.82 16.83 0.54 5650 +5652 4 -37.95 398.37 17.33 0.54 5651 +5653 4 -38.22 399.17 17.79 0.54 5652 +5654 4 -38.72 399.95 18.46 0.54 5653 +5655 4 -38.78 400.55 18.82 0.54 5654 +5656 4 -38.89 401.98 19.79 0.54 5655 +5657 4 -39.18 402.49 20.89 0.54 5656 +5658 4 -39.72 403.64 22.21 0.54 5657 +5659 4 -40.72 404.91 23.97 0.54 5658 +5660 4 -41.89 406.33 24.24 0.54 5659 +5661 4 -42.64 407.24 25.45 0.54 5660 +5662 4 -43.11 407.62 25.7 0.54 5661 +5663 4 -43.59 407.96 26.33 0.54 5662 +5664 4 -44.26 408.32 26.72 0.54 5663 +5665 4 -44.95 408.67 27.05 0.54 5664 +5666 4 -45.66 409.44 27.63 0.54 5665 +5667 4 -46.57 409.76 28.18 0.54 5666 +5668 4 -47.26 410.12 28.42 0.54 5667 +5669 4 -47.94 410.72 28.55 0.54 5668 +5670 4 -49.04 410.85 28.68 0.54 5669 +5671 4 23.1 261.64 -35.75 1.735 5535 +5672 4 23.43 262.39 -37.18 1.735 5671 +5673 4 23.38 263.57 -38.11 1.735 5672 +5674 4 23.64 264.48 -38.01 1.735 5673 +5675 4 24.05 264.17 -36.74 0.65 5674 +5676 4 24.7 263.88 -35.71 0.65 5675 +5677 4 25.3 264.57 -35.7 0.65 5676 +5678 4 25.72 264.48 -34.57 0.65 5677 +5679 4 26.13 264.46 -34.03 0.65 5678 +5680 4 27.13 265.27 -32.95 0.65 5679 +5681 4 27.31 265.69 -32.6 0.65 5680 +5682 4 27.73 265.65 -31.99 0.65 5681 +5683 4 27.91 266.03 -31.34 0.65 5682 +5684 4 27.89 265.96 -30.68 0.65 5683 +5685 4 28.3 265.91 -29.99 0.65 5684 +5686 4 28.26 266.28 -29.28 0.65 5685 +5687 4 29.29 267.16 -28.78 0.65 5686 +5688 4 29.68 267.55 -28.06 0.65 5687 +5689 4 30.02 268.82 -27.61 0.65 5688 +5690 4 30.38 269.67 -27.07 0.65 5689 +5691 4 30.75 270.52 -26.67 0.65 5690 +5692 4 31.13 271.14 -26.14 0.65 5691 +5693 4 31.52 271.78 -25.76 0.65 5692 +5694 4 31.7 272.2 -25.42 0.65 5693 +5695 4 32.28 273.05 -24.93 0.65 5694 +5696 4 33.06 274.35 -24.33 0.65 5695 +5697 4 33.64 275.21 -23.93 0.65 5696 +5698 4 34.17 276.94 -23.51 0.65 5697 +5699 4 34.76 278.02 -23.23 0.65 5698 +5700 4 35.08 279.53 -22.85 0.65 5699 +5701 4 36.24 281.75 -22.51 0.65 5700 +5702 4 37.42 283.54 -22.3 0.65 5701 +5703 4 39.89 285.62 -21.95 0.65 5702 +5704 4 41.54 287.02 -21.77 0.65 5703 +5705 4 42.13 287.9 -21.58 0.65 5704 +5706 4 42.53 288.57 -21.43 0.65 5705 +5707 4 44.27 291.68 -20.99 0.65 5706 +5708 4 45.89 293.48 -20.7 0.65 5707 +5709 4 46.89 295.09 -21.03 0.65 5708 +5710 4 47.87 296.67 -20.84 0.65 5709 +5711 4 48.65 297.67 -19.59 0.65 5710 +5712 4 49.63 298.65 -17.88 0.65 5711 +5713 4 50.8 300.66 -17.64 0.65 5712 +5714 4 52.16 302.88 -17.31 0.65 5713 +5715 4 53.49 305.69 -16.31 0.65 5714 +5716 4 55.72 307.97 -15.95 0.65 5715 +5717 4 56.91 309.76 -15.73 0.65 5716 +5718 4 58.53 311.8 -15.48 0.65 5717 +5719 4 60.98 314.1 -15.19 0.65 5718 +5720 4 61.76 314.65 -13.68 0.65 5719 +5721 4 62.58 315.56 -13.57 0.65 5720 +5722 4 64.04 316.51 -13.44 0.65 5721 +5723 4 64.8 317.81 -12.9 0.65 5722 +5724 4 65.38 318.91 -12.71 0.65 5723 +5725 4 66.61 320.06 -12.56 0.65 5724 +5726 4 68.26 321.45 -12.37 0.65 5725 +5727 4 69.25 323.01 -12.19 0.65 5726 +5728 4 70.18 325.22 -11.94 0.65 5727 +5729 4 71.18 326.58 -11.77 0.65 5728 +5730 4 72.81 328.39 -11.47 0.65 5729 +5731 4 74.19 330.4 -11.08 0.65 5730 +5732 4 75.33 332.55 -10.22 0.65 5731 +5733 4 75.43 334.5 -10.02 0.65 5732 +5734 4 76.29 337.72 -9.21 0.65 5733 +5735 4 76.35 340.09 -8.9 0.65 5734 +5736 4 77.43 343.6 -8.51 0.65 5735 +5737 4 78.93 346.81 -7.08 0.65 5736 +5738 4 79.42 349.21 -6.82 0.65 5737 +5739 4 79.93 351.59 -6.49 0.65 5738 +5740 4 80.73 352.51 -6.37 0.65 5739 +5741 4 81.71 354.07 -6.19 0.65 5740 +5742 4 82.85 356.72 -5.89 0.65 5741 +5743 4 83.26 360.41 -5.49 0.65 5742 +5744 4 84.34 363.91 -5.11 0.65 5743 +5745 4 85.32 365.95 -5.4 0.65 5744 +5746 4 86.98 367.17 -5.54 0.65 5745 +5747 4 87.81 368.14 -6.09 0.65 5746 +5748 4 87.98 369.09 -6.75 0.65 5747 +5749 4 88.17 369.78 -7.12 0.65 5748 +5750 4 89.0 371.3 -8.61 0.65 5749 +5751 4 23.56 265.03 -39.61 1.735 5674 +5752 4 23.87 267.3 -40.43 1.41 5751 +5753 4 24.22 269.42 -41.78 1.19 5752 +5754 4 24.58 271.04 -42.51 1.19 5753 +5755 4 24.74 272.44 -43.26 1.19 5754 +5756 4 24.99 273.38 -43.16 1.19 5755 +5757 4 25.4 273.84 -43.1 1.19 5756 +5758 4 25.55 274.68 -42.78 0.54 5757 +5759 4 25.53 275.13 -42.89 0.54 5758 +5760 4 25.71 274.98 -41.32 0.54 5759 +5761 4 26.32 275.7 -41.68 0.54 5760 +5762 4 26.52 276.14 -41.63 0.54 5761 +5763 4 26.9 276.82 -41.62 0.54 5762 +5764 4 27.05 277.63 -40.93 0.54 5763 +5765 4 27.01 277.98 -40.15 0.54 5764 +5766 4 27.2 278.18 -39.83 0.54 5765 +5767 4 27.37 278.52 -38.88 0.54 5766 +5768 4 27.56 278.94 -38.45 0.54 5767 +5769 4 27.7 279.75 -37.84 0.54 5768 +5770 4 27.85 280.55 -37.15 0.54 5769 +5771 4 27.78 281.61 -36.89 0.76 5770 +5772 4 27.9 282.61 -35.95 0.65 5771 +5773 4 27.85 282.92 -34.72 0.65 5772 +5774 4 27.84 282.88 -34.35 0.65 5773 +5775 4 27.79 283.23 -33.56 0.65 5774 +5776 4 27.72 284.02 -32.72 0.65 5775 +5777 4 27.36 286.11 -32.21 0.76 5776 +5778 4 27.25 287.29 -31.12 0.76 5777 +5779 4 26.75 288.28 -30.43 0.76 5778 +5780 4 26.66 289.31 -29.94 0.76 5779 +5781 4 26.8 290.36 -29.45 0.76 5780 +5782 4 26.9 292.02 -28.68 0.76 5781 +5783 4 26.78 293.72 -28.35 0.76 5782 +5784 4 27.11 295.46 -28.16 0.76 5783 +5785 4 27.46 296.51 -27.6 0.76 5784 +5786 4 28.64 298.26 -26.93 0.76 5785 +5787 4 29.17 299.99 -26.44 0.76 5786 +5788 4 29.29 301.25 -26.09 0.76 5787 +5789 4 29.59 303.41 -25.62 0.76 5788 +5790 4 28.98 305.94 -25.31 0.76 5789 +5791 4 28.41 308.06 -25.1 0.76 5790 +5792 4 28.7 310.21 -24.79 0.76 5791 +5793 4 29.24 312.18 -24.5 0.76 5792 +5794 4 30.0 313.67 -24.25 0.65 5793 +5795 4 31.77 316.57 -23.91 0.65 5794 +5796 4 32.93 318.79 -23.65 0.65 5795 +5797 4 34.26 321.67 -23.32 0.65 5796 +5798 4 35.05 323.0 -23.17 0.65 5797 +5799 4 35.16 324.73 -22.98 0.65 5798 +5800 4 34.62 326.2 -22.85 0.65 5799 +5801 4 33.58 328.93 -22.52 0.65 5800 +5802 4 32.2 333.37 -22.09 0.65 5801 +5803 4 31.87 335.49 -21.88 0.65 5802 +5804 4 31.97 337.0 -21.72 0.65 5803 +5805 4 32.06 339.16 -21.49 0.65 5804 +5806 4 32.39 340.69 -21.33 0.65 5805 +5807 4 32.46 343.06 -21.08 0.65 5806 +5808 4 32.28 345.84 -20.8 0.65 5807 +5809 4 31.76 347.32 -20.66 0.65 5808 +5810 4 31.24 348.57 -20.54 0.65 5809 +5811 4 31.18 349.43 -20.45 0.65 5810 +5812 4 30.84 351.02 -19.24 0.54 5811 +5813 4 31.16 352.76 -19.05 0.54 5812 +5814 4 31.91 354.53 -18.85 0.54 5813 +5815 4 32.28 355.64 -18.8 0.54 5814 +5816 4 32.42 356.93 -18.66 0.54 5815 +5817 4 32.34 358.0 -18.55 0.54 5816 +5818 4 32.29 358.86 -18.47 0.54 5817 +5819 4 31.76 360.33 -18.33 0.54 5818 +5820 4 32.45 362.96 -18.04 0.54 5819 +5821 4 33.01 364.49 -17.87 0.54 5820 +5822 4 33.75 366.49 -17.64 0.54 5821 +5823 4 34.9 368.91 -17.36 0.54 5822 +5824 4 35.9 370.26 -17.2 0.54 5823 +5825 4 36.27 371.15 -17.1 0.54 5824 +5826 4 36.23 371.79 -17.03 0.54 5825 +5827 4 36.28 374.37 -16.77 0.54 5826 +5828 4 35.69 376.91 -16.52 0.54 5827 +5829 4 36.2 379.1 -16.28 0.54 5828 +5830 4 37.1 381.95 -15.96 0.54 5829 +5831 4 38.04 384.15 -15.71 0.54 5830 +5832 4 38.75 386.26 -14.57 0.54 5831 +5833 4 39.93 388.27 -14.34 0.54 5832 +5834 4 40.65 390.46 -14.02 0.435 5833 +5835 4 41.41 391.98 -13.62 0.435 5834 +5836 4 41.94 393.7 -13.05 0.435 5835 +5837 4 41.83 395.15 -12.45 0.435 5836 +5838 4 42.49 398.41 -12.02 0.435 5837 +5839 4 43.63 400.84 -11.67 0.435 5838 +5840 4 44.36 403.24 -11.4 0.435 5839 +5841 4 44.69 404.78 -11.24 0.435 5840 +5842 4 44.98 406.94 -11.01 0.435 5841 +5843 4 44.87 408.65 -10.75 0.435 5842 +5844 4 45.18 410.61 -10.54 0.435 5843 +5845 4 45.88 413.23 -10.26 0.435 5844 +5846 4 47.67 415.71 -9.96 0.435 5845 +5847 4 48.69 416.84 -9.82 0.435 5846 +5848 4 48.63 417.91 -9.71 0.435 5847 +5849 4 48.71 419.63 -9.38 0.435 5848 +5850 4 49.03 421.58 -9.1 0.435 5849 +5851 4 50.44 423.16 -8.82 0.435 5850 +5852 4 53.74 425.93 -8.45 0.435 5851 +5853 4 54.83 429.24 -8.09 0.435 5852 +5854 4 55.38 430.77 -7.91 0.435 5853 +5855 4 55.72 432.04 -7.33 0.435 5854 +5856 4 55.86 433.08 -6.77 0.435 5855 +5857 4 55.78 434.11 -6.28 0.435 5856 +5858 4 55.09 435.55 -7.96 0.435 5857 +5859 4 54.63 436.16 -7.98 0.435 5858 +5860 4 53.7 437.53 -9.21 0.435 5859 +5861 4 53.28 437.76 -9.65 0.435 5860 +5862 4 52.38 438.71 -10.86 0.435 5861 +5863 4 51.26 440.11 -12.55 0.435 5862 +5864 4 50.59 441.31 -14.18 0.435 5863 +5865 4 49.21 443.34 -15.73 0.435 5864 +5866 4 47.62 444.86 -16.67 0.435 5865 +5867 4 47.54 445.89 -16.26 0.435 5866 +5868 4 46.84 446.99 -16.69 0.435 5867 +5869 4 46.54 448.01 -16.29 0.435 5868 +5870 4 46.73 448.43 -16.1 0.435 5869 +5871 4 46.72 449.17 -16.84 0.435 5870 +5872 4 46.45 450.35 -17.94 0.435 5871 +5873 4 46.4 451.22 -18.07 0.435 5872 +5874 4 45.74 451.94 -19.14 0.435 5873 +5875 4 45.25 453.3 -19.99 0.435 5874 +5876 4 45.25 453.85 -20.99 0.435 5875 +5877 4 43.92 454.97 -22.26 0.435 5876 +5878 4 44.24 456.76 -22.52 0.435 5877 +5879 4 42.85 458.73 -23.56 0.435 5878 +5880 4 42.56 460.57 -24.65 0.435 5879 +5881 4 42.88 462.31 -24.54 0.435 5880 +5882 4 43.59 465.49 -25.33 0.435 5881 +5883 4 44.93 468.16 -25.1 0.435 5882 +5884 4 45.62 470.99 -24.79 0.435 5883 +5885 4 46.91 474.68 -24.53 0.435 5884 +5886 4 47.97 478.4 -24.12 0.435 5885 +5887 4 50.13 481.98 -23.7 0.435 5886 +5888 4 52.83 487.3 -23.08 0.435 5887 +5889 4 55.67 490.27 -22.71 0.435 5888 +5890 4 57.08 491.86 -22.51 0.435 5889 +5891 4 59.46 495.96 -22.85 0.435 5890 +5892 4 61.33 497.44 -23.26 0.435 5891 +5893 4 62.37 498.44 -24.04 0.435 5892 +5894 4 64.34 501.8 -23.79 0.435 5893 +5895 4 65.3 502.99 -21.99 0.435 5894 +5896 4 65.63 504.45 -21.31 0.435 5895 +5897 4 66.65 505.4 -21.25 0.435 5896 +5898 4 67.2 506.94 -21.16 0.435 5897 +5899 4 67.75 508.48 -20.99 0.435 5898 +5900 4 68.32 509.8 -20.84 0.435 5899 +5901 4 68.65 511.06 -20.1 0.435 5900 +5902 4 68.8 512.08 -19.54 0.435 5901 +5903 4 68.76 512.5 -19.26 0.435 5902 +5904 4 68.74 513.22 -20.02 0.435 5903 +5905 4 68.72 513.99 -21.14 0.435 5904 +5906 4 68.29 514.99 -22.86 0.435 5905 +5907 4 68.3 515.31 -23.81 0.435 5906 +5908 4 68.27 516.04 -24.49 0.435 5907 +5909 4 68.2 517.37 -24.81 0.435 5908 +5910 4 68.14 518.5 -25.21 0.435 5909 +5911 4 67.33 521.04 -25.12 0.435 5910 +5912 4 67.04 522.62 -25.87 0.435 5911 +5913 4 67.62 524.04 -26.61 0.435 5912 +5914 4 68.19 525.07 -25.66 0.435 5913 +5915 4 68.57 526.53 -26.94 0.435 5914 +5916 4 68.76 527.5 -27.89 0.435 5915 +5917 4 69.37 528.5 -28.75 0.435 5916 +5918 4 69.77 529.73 -29.9 0.435 5917 +5919 4 70.22 530.08 -30.97 0.435 5918 +5920 4 70.75 532.12 -31.5 0.435 5919 +5921 4 70.64 534.61 -32.38 0.435 5920 +5922 4 71.39 536.69 -33.2 0.435 5921 +5923 4 71.73 538.48 -33.46 0.435 5922 +5924 4 72.67 541.21 -34.06 0.435 5923 +5925 4 72.8 542.77 -34.35 0.435 5924 +5926 4 71.81 545.17 -35.18 0.435 5925 +5927 4 71.71 546.68 -35.09 0.435 5926 +5928 4 71.83 548.68 -35.42 0.435 5927 +5929 4 71.94 550.45 -35.68 0.435 5928 +5930 4 64.14 504.21 -21.89 0.435 5895 +5931 4 64.08 505.07 -21.95 0.435 5930 +5932 4 63.6 505.68 -21.75 0.435 5931 +5933 4 64.15 506.63 -19.98 0.435 5932 +5934 4 64.05 507.57 -18.76 0.435 5933 +5935 4 63.68 509.33 -17.0 0.435 5934 +5936 4 62.73 510.02 -15.82 0.435 5935 +5937 4 62.51 509.99 -15.68 0.435 5936 +5938 4 61.42 509.6 -14.77 0.435 5937 +5939 4 60.34 509.57 -15.02 0.435 5938 +5940 4 59.91 509.53 -14.88 0.435 5939 +5941 4 29.75 351.27 -20.3 0.54 5811 +5942 4 29.28 352.11 -20.22 0.54 5941 +5943 4 29.22 352.68 -19.48 0.54 5942 +5944 4 29.16 352.99 -18.32 0.54 5943 +5945 4 29.09 353.79 -17.56 0.54 5944 +5946 4 29.4 355.21 -16.43 0.54 5945 +5947 4 29.58 355.84 -16.06 0.54 5946 +5948 4 29.47 357.04 -15.11 0.54 5947 +5949 4 29.84 357.87 -14.63 0.54 5948 +5950 4 29.76 358.9 -14.01 0.54 5949 +5951 4 29.71 359.26 -13.37 0.54 5950 +5952 4 28.75 360.4 -12.29 0.54 5951 +5953 4 28.7 360.99 -11.77 0.54 5952 +5954 4 27.98 361.47 -10.53 0.54 5953 +5955 4 27.5 361.81 -9.84 0.54 5954 +5956 4 27.02 362.11 -8.84 0.54 5955 +5957 4 26.49 363.26 -7.68 0.54 5956 +5958 4 26.2 364.02 -6.85 0.54 5957 +5959 4 26.12 364.52 -5.37 0.54 5958 +5960 4 26.28 365.11 -4.63 0.54 5959 +5961 4 26.2 365.58 -2.92 0.54 5960 +5962 4 25.47 366.54 -2.01 0.54 5961 +5963 4 25.61 367.34 -1.32 0.54 5962 +5964 4 25.52 368.34 -0.47 0.54 5963 +5965 4 25.47 368.92 0.18 0.54 5964 +5966 4 24.03 370.93 0.81 0.54 5965 +5967 4 23.55 371.52 1.16 0.54 5966 +5968 4 22.6 372.48 1.84 0.54 5967 +5969 4 21.68 373.0 2.48 0.54 5968 +5970 4 21.24 372.96 2.61 0.54 5969 +5971 4 19.84 374.27 3.24 0.54 5970 +5972 4 18.95 374.15 3.89 0.54 5971 +5973 4 18.7 374.48 4.67 0.54 5972 +5974 4 17.53 375.13 6.07 0.54 5973 +5975 4 17.49 375.25 7.06 0.54 5974 +5976 4 17.43 376.06 7.52 0.54 5975 +5977 4 17.62 376.23 8.22 0.54 5976 +5978 4 17.56 376.82 8.88 0.54 5977 +5979 4 17.51 377.66 8.97 0.54 5978 +5980 4 17.63 378.93 9.32 0.54 5979 +5981 4 17.78 380.0 9.67 0.54 5980 +5982 4 17.1 380.35 9.99 0.54 5981 +5983 4 16.64 380.75 10.17 0.54 5982 +5984 4 15.92 381.27 10.96 0.54 5983 +5985 4 15.23 381.86 11.23 0.54 5984 +5986 4 14.3 382.63 11.51 0.54 5985 +5987 4 13.98 384.06 12.11 0.54 5986 +5988 4 12.77 385.63 13.15 0.54 5987 +5989 4 12.73 385.99 13.79 0.54 5988 +5990 4 12.2 387.19 14.5 0.54 5989 +5991 4 11.27 387.95 15.0 0.54 5990 +5992 4 11.22 388.55 15.59 0.54 5991 +5993 4 10.51 389.08 16.24 0.54 5992 +5994 4 10.01 389.86 16.83 0.54 5993 +5995 4 9.52 390.67 17.05 0.54 5994 +5996 4 9.04 391.25 17.48 0.54 5995 +5997 4 8.57 391.6 17.96 0.54 5996 +5998 4 7.88 391.95 18.43 0.54 5997 +5999 4 7.39 392.76 18.65 0.54 5998 +6000 4 6.87 393.74 19.42 0.54 5999 +6001 4 6.34 394.9 20.58 0.54 6000 +6002 4 6.27 395.69 21.26 0.54 6001 +6003 4 6.43 396.3 21.78 0.54 6002 +6004 4 6.57 397.58 22.07 0.54 6003 +6005 4 6.48 398.57 22.93 0.54 6004 +6006 4 6.43 399.2 23.21 0.54 6005 +6007 4 5.04 400.33 23.98 0.54 6006 +6008 4 3.43 401.74 24.09 0.54 6007 +6009 4 3.35 402.8 24.19 0.54 6008 +6010 4 2.87 403.36 24.84 0.54 6009 +6011 4 3.0 404.6 25.58 0.54 6010 +6012 4 3.15 405.46 25.74 0.54 6011 +6013 4 3.08 406.27 26.28 0.54 6012 +6014 4 2.59 407.07 26.73 0.54 6013 +6015 4 2.05 408.49 27.39 0.54 6014 +6016 4 1.98 409.29 27.92 0.54 6015 +6017 4 1.93 409.89 28.5 0.54 6016 +6018 4 2.91 410.88 29.99 0.54 6017 +6019 4 3.43 412.3 31.43 0.54 6018 +6020 4 3.58 413.37 31.7 0.54 6019 +6021 4 3.68 414.82 32.37 0.54 6020 +6022 4 2.95 415.81 32.91 0.54 6021 +6023 4 1.76 417.17 33.71 0.54 6022 +6024 4 1.25 418.16 34.32 0.54 6023 +6025 4 0.73 419.13 35.08 0.54 6024 +6026 4 0.64 420.39 35.51 0.54 6025 +6027 4 0.55 421.35 36.67 0.54 6026 +6028 4 0.08 421.72 37.08 0.54 6027 +6029 4 0.2 422.94 37.88 0.54 6028 +6030 4 0.98 424.27 38.19 0.54 6029 +6031 4 1.17 424.16 39.38 0.54 6030 +6032 4 1.72 425.18 40.41 0.54 6031 +6033 4 2.03 426.31 42.26 0.54 6032 +6034 4 2.55 427.98 43.35 0.54 6033 +6035 4 2.95 428.35 44.08 0.54 6034 +6036 4 3.28 429.66 44.38 0.54 6035 +6037 4 3.67 430.28 44.82 0.54 6036 +6038 4 4.72 430.74 45.28 0.54 6037 +6039 4 5.06 431.83 46.0 0.54 6038 +6040 4 5.04 431.74 46.89 0.54 6039 +6041 4 5.43 431.63 48.17 0.54 6040 +6042 4 5.59 432.47 48.64 0.54 6041 +6043 4 5.98 432.84 49.37 0.54 6042 +6044 4 6.11 433.6 50.73 0.54 6043 +6045 4 6.7 434.17 51.85 0.54 6044 +6046 4 25.07 273.97 -43.1 1.19 5757 +6047 4 25.06 274.47 -43.87 1.19 6046 +6048 4 24.98 275.75 -43.74 1.19 6047 +6049 4 24.47 277.02 -43.62 1.19 6048 +6050 4 24.18 278.89 -45.02 1.19 6049 +6051 4 23.72 279.38 -44.98 1.19 6050 +6052 4 23.54 279.55 -46.77 0.54 6051 +6053 4 22.14 280.97 -46.66 0.54 6052 +6054 4 21.71 280.93 -46.52 0.76 6053 +6055 4 20.77 282.16 -46.41 0.76 6054 +6056 4 21.32 283.49 -46.26 0.76 6055 +6057 4 21.69 284.59 -46.22 0.76 6056 +6058 4 22.05 285.9 -46.08 0.76 6057 +6059 4 21.67 287.7 -44.69 0.435 6058 +6060 4 20.96 288.73 -44.6 0.435 6059 +6061 4 20.88 289.49 -43.62 0.435 6060 +6062 4 19.97 290.04 -43.13 0.435 6061 +6063 4 20.11 291.12 -42.95 0.435 6062 +6064 4 20.25 292.16 -42.61 0.435 6063 +6065 4 20.15 293.62 -42.01 0.435 6064 +6066 4 20.09 294.45 -41.55 0.435 6065 +6067 4 19.1 296.31 -41.3 0.435 6066 +6068 4 18.6 297.08 -40.63 0.435 6067 +6069 4 18.08 298.1 -40.23 0.435 6068 +6070 4 17.71 300.38 -39.4 0.435 6069 +6071 4 17.6 301.85 -39.03 0.435 6070 +6072 4 17.04 303.73 -38.55 0.435 6071 +6073 4 16.52 304.94 -38.06 0.435 6072 +6074 4 16.0 305.92 -37.37 0.435 6073 +6075 4 15.94 306.77 -37.05 0.435 6074 +6076 4 16.04 307.95 -35.87 0.435 6075 +6077 4 16.18 309.25 -35.74 0.435 6076 +6078 4 16.07 310.96 -35.49 0.435 6077 +6079 4 15.99 312.25 -35.36 0.435 6078 +6080 4 15.08 312.83 -35.32 0.435 6079 +6081 4 14.15 313.82 -34.94 0.435 6080 +6082 4 13.44 314.33 -34.07 0.435 6081 +6083 4 12.93 315.37 -33.82 0.435 6082 +6084 4 12.82 316.81 -33.07 0.435 6083 +6085 4 12.97 317.64 -32.68 0.435 6084 +6086 4 12.9 318.66 -32.05 0.435 6085 +6087 4 12.36 320.08 -31.47 0.435 6086 +6088 4 12.3 320.94 -31.3 0.435 6087 +6089 4 12.88 322.03 -30.95 0.435 6088 +6090 4 13.02 323.1 -30.76 0.435 6089 +6091 4 13.18 323.98 -30.66 0.435 6090 +6092 4 13.34 324.8 -30.13 0.435 6091 +6093 4 13.27 325.61 -29.67 0.435 6092 +6094 4 12.95 327.09 -29.45 0.435 6093 +6095 4 12.63 328.3 -28.73 0.435 6094 +6096 4 12.55 329.29 -27.79 0.435 6095 +6097 4 12.93 330.14 -27.33 0.435 6096 +6098 4 13.03 331.6 -26.72 0.435 6097 +6099 4 12.97 332.43 -26.4 0.435 6098 +6100 4 12.94 332.86 -26.21 0.435 6099 +6101 4 13.08 333.88 -25.65 0.435 6100 +6102 4 13.23 334.95 -25.38 0.435 6101 +6103 4 13.22 334.92 -25.08 0.435 6102 +6104 4 13.18 335.3 -24.52 0.435 6103 +6105 4 13.11 336.11 -23.99 0.435 6104 +6106 4 13.49 336.45 -22.82 0.435 6105 +6107 4 13.67 336.84 -22.32 0.435 6106 +6108 4 13.81 337.65 -21.55 0.435 6107 +6109 4 13.96 338.45 -20.79 0.435 6108 +6110 4 14.12 339.31 -20.62 0.435 6109 +6111 4 13.15 340.74 -20.34 0.435 6110 +6112 4 13.31 341.59 -19.95 0.435 6111 +6113 4 12.79 342.32 -18.98 0.435 6112 +6114 4 12.08 343.34 -18.74 0.435 6113 +6115 4 12.02 343.94 -18.38 0.435 6114 +6116 4 12.4 344.81 -18.06 0.435 6115 +6117 4 12.53 346.1 -17.84 0.435 6116 +6118 4 12.49 346.49 -17.43 0.435 6117 +6119 4 12.68 346.93 -17.3 0.435 6118 +6120 4 23.88 280.73 -46.27 1.19 6051 +6121 4 23.8 282.02 -46.14 1.19 6120 +6122 4 24.18 283.73 -47.76 1.19 6121 +6123 4 23.93 284.24 -47.71 1.19 6122 +6124 4 24.54 285.07 -47.92 1.19 6123 +6125 4 24.75 285.61 -48.91 1.19 6124 +6126 4 24.73 286.62 -50.23 1.19 6125 +6127 4 24.24 288.08 -51.45 0.76 6126 +6128 4 23.77 289.26 -52.62 0.975 6127 +6129 4 22.84 291.08 -54.11 0.975 6128 +6130 4 22.32 292.88 -54.92 0.975 6129 +6131 4 22.28 294.06 -56.0 0.975 6130 +6132 4 22.27 294.85 -57.27 0.975 6131 +6133 4 22.43 295.98 -57.61 0.975 6132 +6134 4 23.01 297.66 -58.78 0.975 6133 +6135 4 23.58 299.53 -59.78 0.975 6134 +6136 4 24.17 300.95 -60.52 0.975 6135 +6137 4 24.3 302.04 -60.4 0.975 6136 +6138 4 24.05 303.4 -61.24 0.975 6137 +6139 4 23.55 304.79 -62.25 0.975 6138 +6140 4 23.07 306.17 -63.39 0.975 6139 +6141 4 22.15 307.54 -64.56 0.975 6140 +6142 4 21.22 309.11 -65.62 0.975 6141 +6143 4 20.31 310.26 -66.81 0.975 6142 +6144 4 19.35 312.0 -67.48 0.975 6143 +6145 4 18.4 313.99 -68.43 0.975 6144 +6146 4 18.14 315.18 -69.59 0.975 6145 +6147 4 17.65 316.26 -69.79 0.865 6146 +6148 4 17.4 317.49 -71.33 0.865 6147 +6149 4 17.34 318.61 -71.67 0.865 6148 +6150 4 17.65 320.56 -71.53 0.865 6149 +6151 4 18.23 322.23 -72.63 0.865 6150 +6152 4 18.59 323.55 -72.48 0.865 6151 +6153 4 19.17 324.66 -72.35 0.865 6152 +6154 4 19.57 325.67 -73.52 0.865 6153 +6155 4 19.49 326.96 -73.39 0.865 6154 +6156 4 19.0 328.54 -74.36 0.865 6155 +6157 4 18.04 329.78 -74.25 0.865 6156 +6158 4 17.54 331.38 -75.31 0.865 6157 +6159 4 17.01 333.39 -76.25 0.865 6158 +6160 4 17.18 334.26 -76.15 0.865 6159 +6161 4 17.7 336.24 -76.01 0.865 6160 +6162 4 17.68 337.23 -77.26 0.865 6161 +6163 4 18.05 338.95 -78.89 0.865 6162 +6164 4 18.21 340.34 -79.64 0.865 6163 +6165 4 18.14 341.68 -80.03 0.865 6164 +6166 4 17.88 342.83 -80.82 0.865 6165 +6167 4 17.86 343.85 -82.31 0.865 6166 +6168 4 17.82 345.06 -83.54 0.865 6167 +6169 4 17.55 346.43 -84.3 0.865 6168 +6170 4 17.5 347.57 -85.02 0.865 6169 +6171 4 16.56 348.85 -85.28 0.865 6170 +6172 4 16.07 350.2 -86.06 0.865 6171 +6173 4 15.34 352.02 -87.24 0.865 6172 +6174 4 14.82 353.82 -88.2 0.865 6173 +6175 4 14.52 355.6 -88.92 0.865 6174 +6176 4 14.69 356.56 -89.5 0.865 6175 +6177 4 14.85 358.18 -90.46 0.865 6176 +6178 4 15.41 358.73 -90.84 1.085 6177 +6179 4 16.01 359.36 -90.24 1.085 6178 +6180 4 16.63 360.66 -91.82 1.085 6179 +6181 4 17.24 361.91 -93.1 1.085 6180 +6182 4 17.68 362.51 -94.47 1.085 6181 +6183 4 18.09 363.26 -95.21 1.085 6182 +6184 4 18.3 363.8 -96.05 1.085 6183 +6185 4 18.57 363.98 -96.71 0.975 6184 +6186 4 18.89 364.43 -97.11 1.085 6185 +6187 4 20.61 365.32 -98.4 0.865 6186 +6188 4 21.66 366.12 -99.2 0.76 6187 +6189 4 22.49 367.37 -100.18 0.76 6188 +6190 4 23.14 367.67 -100.58 0.65 6189 +6191 4 23.59 367.52 -100.97 0.65 6190 +6192 4 24.48 367.15 -100.99 0.65 6191 +6193 4 25.35 367.2 -100.96 0.65 6192 +6194 4 26.06 366.9 -102.03 0.65 6193 +6195 4 27.52 367.65 -101.92 0.65 6194 +6196 4 28.62 368.09 -103.43 0.65 6195 +6197 4 29.49 368.42 -104.05 0.65 6196 +6198 4 31.18 369.75 -105.38 0.65 6197 +6199 4 32.48 370.4 -106.64 0.65 6198 +6200 4 34.19 370.94 -106.54 0.65 6199 +6201 4 36.2 370.49 -107.29 0.65 6200 +6202 4 37.67 371.01 -107.2 0.65 6201 +6203 4 39.8 372.33 -108.14 0.65 6202 +6204 4 42.52 374.0 -107.91 0.65 6203 +6205 4 44.19 375.52 -109.07 0.65 6204 +6206 4 47.21 376.51 -110.4 0.65 6205 +6207 4 49.54 377.51 -110.24 0.65 6206 +6208 4 51.91 378.44 -111.53 0.65 6207 +6209 4 53.85 379.36 -112.89 0.65 6208 +6210 4 55.73 380.56 -112.72 0.65 6209 +6211 4 56.29 381.92 -113.02 0.65 6210 +6212 4 56.51 382.16 -113.07 0.65 6211 +6213 4 56.69 382.91 -113.89 0.65 6212 +6214 4 56.91 383.44 -114.73 0.65 6213 +6215 4 57.12 384.21 -115.71 0.65 6214 +6216 4 57.12 384.8 -117.15 0.65 6215 +6217 4 57.14 384.88 -117.97 0.65 6216 +6218 4 57.14 385.14 -118.55 0.65 6217 +6219 4 57.13 385.64 -119.17 0.65 6218 +6220 4 57.31 386.34 -119.47 0.65 6219 +6221 4 57.29 387.11 -120.6 0.65 6220 +6222 4 57.48 387.85 -121.27 0.65 6221 +6223 4 57.7 388.4 -122.34 0.65 6222 +6224 4 58.07 389.78 -122.86 0.65 6223 +6225 4 58.52 389.9 -123.82 0.65 6224 +6226 4 58.95 390.42 -124.36 0.65 6225 +6227 4 59.54 391.6 -124.98 0.65 6226 +6228 4 59.93 392.56 -125.48 0.65 6227 +6229 4 60.59 392.63 -125.75 0.65 6228 +6230 4 61.26 392.78 -126.78 0.65 6229 +6231 4 61.71 392.87 -127.43 0.65 6230 +6232 4 62.38 393.01 -128.31 0.65 6231 +6233 4 62.8 393.51 -128.7 0.65 6232 +6234 4 62.99 394.27 -129.67 0.65 6233 +6235 4 63.18 395.23 -130.47 0.65 6234 +6236 4 62.7 396.08 -130.62 0.65 6235 +6237 4 62.67 396.82 -131.45 0.65 6236 +6238 4 62.85 397.77 -132.18 0.65 6237 +6239 4 63.43 399.16 -132.61 0.65 6238 +6240 4 63.42 399.66 -133.25 0.65 6239 +6241 4 64.45 400.85 -133.62 0.65 6240 +6242 4 64.87 401.65 -134.82 0.65 6241 +6243 4 65.71 402.42 -135.47 0.65 6242 +6244 4 66.81 403.1 -137.18 0.65 6243 +6245 4 67.66 403.67 -137.93 0.65 6244 +6246 4 68.96 404.04 -138.61 0.65 6245 +6247 4 69.74 405.63 -138.88 0.65 6246 +6248 4 70.81 406.19 -139.4 0.65 6247 +6249 4 71.86 407.23 -140.4 0.65 6248 +6250 4 72.65 408.33 -139.96 0.65 6249 +6251 4 73.03 409.19 -139.71 0.65 6250 +6252 4 73.64 409.66 -139.65 0.65 6251 +6253 4 17.2 365.25 -97.28 0.865 6185 +6254 4 16.5 366.08 -97.29 0.865 6253 +6255 4 16.03 366.97 -97.82 0.865 6254 +6256 4 15.58 367.94 -99.07 0.865 6255 +6257 4 15.3 369.59 -100.57 0.865 6256 +6258 4 14.84 370.27 -101.04 0.865 6257 +6259 4 14.38 371.26 -102.53 0.865 6258 +6260 4 14.78 372.76 -104.18 0.865 6259 +6261 4 15.14 373.55 -103.25 0.865 6260 +6262 4 15.73 374.75 -103.87 0.65 6261 +6263 4 15.25 375.54 -103.57 0.65 6262 +6264 4 15.25 375.85 -104.37 0.65 6263 +6265 4 15.25 376.1 -104.72 0.65 6264 +6266 4 15.02 376.57 -105.2 0.65 6265 +6267 4 15.2 377.28 -105.66 0.65 6266 +6268 4 14.76 377.77 -106.44 0.65 6267 +6269 4 14.76 378.6 -108.17 0.65 6268 +6270 4 14.75 379.09 -108.79 0.65 6269 +6271 4 14.74 379.58 -109.27 0.65 6270 +6272 4 14.73 379.83 -109.62 0.65 6271 +6273 4 14.95 380.39 -110.76 0.65 6272 +6274 4 15.37 380.92 -111.45 0.65 6273 +6275 4 15.56 381.37 -111.48 0.65 6274 +6276 4 16.18 382.37 -112.27 0.65 6275 +6277 4 16.39 382.88 -112.97 0.65 6276 +6278 4 16.57 383.62 -113.71 0.65 6277 +6279 4 16.55 384.62 -114.96 0.65 6278 +6280 4 16.55 385.18 -116.18 0.65 6279 +6281 4 16.56 385.76 -117.63 0.65 6280 +6282 4 16.59 386.14 -119.17 0.65 6281 +6283 4 16.6 386.74 -120.77 0.65 6282 +6284 4 16.61 387.1 -122.09 0.65 6283 +6285 4 16.6 387.83 -122.92 0.65 6284 +6286 4 16.63 387.96 -124.26 0.65 6285 +6287 4 16.21 388.54 -125.94 0.65 6286 +6288 4 16.22 389.13 -127.47 0.65 6287 +6289 4 16.23 389.73 -129.05 0.65 6288 +6290 4 16.22 390.53 -130.48 0.65 6289 +6291 4 16.2 391.22 -130.94 0.65 6290 +6292 4 15.75 391.96 -132.0 0.65 6291 +6293 4 15.77 392.32 -133.32 0.65 6292 +6294 4 15.76 393.08 -134.45 0.65 6293 +6295 4 15.31 393.82 -135.66 0.65 6294 +6296 4 14.8 395.38 -136.35 0.65 6295 +6297 4 14.06 396.62 -136.16 0.65 6296 +6298 4 13.1 398.29 -136.09 0.65 6297 +6299 4 11.94 399.82 -136.86 0.65 6298 +6300 4 11.41 401.81 -137.57 0.65 6299 +6301 4 10.48 403.39 -138.64 0.65 6300 +6302 4 9.92 405.82 -139.45 0.65 6301 +6303 4 8.96 407.61 -140.49 0.65 6302 +6304 4 8.04 410.54 -140.44 0.65 6303 +6305 4 7.22 413.91 -141.99 0.54 6304 +6306 4 6.69 415.63 -142.13 0.54 6305 +6307 4 6.49 418.84 -141.88 0.54 6306 +6308 4 5.33 423.29 -141.45 0.54 6307 +6309 4 5.45 425.3 -141.91 0.54 6308 +6310 4 4.76 429.13 -141.53 0.54 6309 +6311 4 3.92 432.09 -141.24 0.54 6310 +6312 4 3.52 435.08 -140.94 0.54 6311 +6313 4 2.56 439.97 -140.46 0.54 6312 +6314 4 1.01 444.29 -141.26 0.54 6313 +6315 4 0.41 446.84 -141.01 0.54 6314 +6316 4 -0.88 450.78 -141.99 0.54 6315 +6317 4 -0.83 453.86 -142.42 0.54 6316 +6318 4 -1.95 457.88 -142.1 0.54 6317 +6319 4 -3.85 460.35 -141.89 0.54 6318 +6320 4 -5.45 462.07 -142.74 0.54 6319 +6321 4 -6.5 464.81 -142.48 0.54 6320 +6322 4 -6.65 467.43 -142.73 0.54 6321 +6323 4 -6.75 469.37 -143.22 0.54 6322 +6324 4 -7.34 471.69 -142.91 0.54 6323 +6325 4 -7.7 474.33 -143.4 0.54 6324 +6326 4 -7.43 476.94 -143.2 0.54 6325 +6327 4 -7.16 479.52 -142.92 0.54 6326 +6328 4 -7.23 484.58 -143.54 0.54 6327 +6329 4 -8.41 489.46 -143.06 0.54 6328 +6330 4 -10.77 492.32 -142.82 0.54 6329 +6331 4 13.94 358.71 -90.57 0.65 6177 +6332 4 13.27 359.66 -91.85 0.65 6331 +6333 4 11.72 360.49 -92.33 0.65 6332 +6334 4 9.96 361.66 -94.21 0.435 6333 +6335 4 7.77 362.75 -95.8 0.435 6334 +6336 4 6.24 363.68 -97.18 0.435 6335 +6337 4 4.2 365.32 -97.58 0.435 6336 +6338 4 2.62 366.31 -97.67 0.435 6337 +6339 4 0.86 367.46 -99.32 0.435 6338 +6340 4 -1.39 368.83 -99.31 0.435 6339 +6341 4 -2.3 370.21 -100.55 0.435 6340 +6342 4 -2.78 371.63 -102.07 0.435 6341 +6343 4 -4.64 373.96 -102.48 0.435 6342 +6344 4 -6.0 375.27 -103.57 0.435 6343 +6345 4 -7.09 375.98 -104.66 0.435 6344 +6346 4 -8.41 377.16 -106.45 0.435 6345 +6347 4 -10.18 378.25 -107.59 0.435 6346 +6348 4 -11.29 379.14 -108.58 0.435 6347 +6349 4 -12.83 380.01 -109.58 0.435 6348 +6350 4 -14.42 381.25 -109.79 0.435 6349 +6351 4 -15.52 381.92 -110.8 0.435 6350 +6352 4 -16.7 383.36 -110.68 0.435 6351 +6353 4 -18.53 384.97 -110.63 0.435 6352 +6354 4 -19.95 386.82 -110.47 0.435 6353 +6355 4 -21.35 388.24 -110.36 0.435 6354 +6356 4 -22.49 389.25 -110.28 0.435 6355 +6357 4 -23.84 390.03 -110.23 0.435 6356 +6358 4 -25.45 391.44 -110.12 0.435 6357 +6359 4 -27.06 392.62 -110.04 0.435 6358 +6360 4 -28.23 394.06 -109.92 0.435 6359 +6361 4 -29.65 395.91 -109.76 0.435 6360 +6362 4 -30.41 396.78 -108.11 0.435 6361 +6363 4 -31.37 397.92 -107.03 0.435 6362 +6364 4 -32.33 399.06 -106.04 0.435 6363 +6365 4 -33.7 400.04 -105.89 0.435 6364 +6366 4 -36.03 402.2 -104.97 0.435 6365 +6367 4 -37.92 404.15 -104.14 0.435 6366 +6368 4 -39.35 405.95 -103.45 0.435 6367 +6369 4 -42.34 408.03 -102.33 0.435 6368 +6370 4 -45.07 410.03 -102.19 0.435 6369 +6371 4 -47.13 411.35 -101.5 0.435 6370 +6372 4 -48.08 412.27 -100.52 0.435 6371 +6373 4 -49.68 413.44 -100.35 0.435 6372 +6374 4 -50.84 414.68 -100.25 0.435 6373 +6375 4 -51.84 416.18 -98.69 0.435 6374 +6376 4 -53.02 417.61 -98.57 0.435 6375 +6377 4 -53.85 417.53 -97.63 0.435 6376 +6378 4 -55.21 418.03 -97.0 0.435 6377 +6379 4 -58.36 419.78 -96.9 0.435 6378 +6380 4 -60.0 421.83 -96.72 0.435 6379 +6381 4 -61.59 422.76 -96.21 0.435 6380 +6382 4 -63.43 424.36 -96.09 0.435 6381 +6383 4 -66.58 426.11 -95.99 0.435 6382 +6384 4 -69.33 428.31 -95.82 0.435 6383 +6385 4 -70.26 429.87 -96.81 0.435 6384 +6386 4 -72.98 431.63 -96.62 0.435 6385 +6387 4 -74.8 433.03 -96.52 0.435 6386 +6388 4 -76.41 434.23 -96.43 0.435 6387 +6389 4 -77.77 434.91 -95.56 0.435 6388 +6390 4 -80.09 437.14 -95.38 0.435 6389 +6391 4 -81.29 438.48 -94.37 0.435 6390 +6392 4 -82.9 439.88 -94.26 0.435 6391 +6393 4 -84.33 441.12 -92.44 0.435 6392 +6394 4 -86.39 442.72 -92.32 0.435 6393 +6395 4 -88.22 444.34 -92.2 0.435 6394 +6396 4 -89.6 445.53 -92.11 0.435 6395 +6397 4 -92.32 446.75 -90.84 0.435 6396 +6398 4 -94.61 448.54 -90.64 0.435 6397 +6399 4 -96.24 450.38 -90.48 0.435 6398 +6400 4 -98.24 451.7 -91.9 0.435 6399 +6401 4 -100.52 453.5 -91.77 0.435 6400 +6402 4 -103.5 456.13 -91.64 0.435 6401 +6403 4 -108.48 459.26 -91.43 0.435 6402 +6404 4 -112.75 461.59 -91.44 0.435 6403 +6405 4 -114.79 462.97 -91.35 0.435 6404 +6406 4 -117.01 463.92 -91.3 0.435 6405 +6407 4 -119.5 465.25 -91.07 0.435 6406 +6408 4 -122.39 466.37 -91.03 0.435 6407 +6409 4 -125.71 467.46 -90.99 0.435 6408 +6410 4 -128.61 468.54 -90.58 0.435 6409 +6411 4 -131.06 469.45 -90.54 0.435 6410 +6412 4 -132.12 469.84 -90.6 0.435 6411 +6413 4 -134.14 470.78 -90.48 0.435 6412 +6414 4 -137.65 471.43 -90.49 0.435 6413 +6415 4 -139.86 471.94 -90.49 0.435 6414 +6416 4 -142.97 473.04 -90.45 0.435 6415 +6417 4 -146.94 474.08 -90.44 0.435 6416 +6418 4 -149.59 474.79 -90.5 0.435 6417 +6419 4 -153.5 474.99 -90.65 0.435 6418 +6420 4 -157.9 475.8 -90.67 0.435 6419 +6421 4 -161.81 475.99 -90.74 0.435 6420 +6422 4 -165.49 475.98 -90.83 0.435 6421 +6423 4 -168.73 475.79 -90.93 0.435 6422 +6424 4 -170.88 475.23 -91.04 0.435 6423 +6425 4 -172.18 475.15 -91.08 0.435 6424 +6426 4 -53.98 419.96 -98.13 0.435 6376 +6427 4 -54.47 421.11 -99.08 0.435 6426 +6428 4 -54.55 422.4 -98.95 0.435 6427 +6429 4 -54.7 424.75 -98.63 0.435 6428 +6430 4 -55.05 426.87 -98.35 0.435 6429 +6431 4 -55.62 429.0 -98.29 0.435 6430 +6432 4 -55.78 431.36 -98.05 0.435 6431 +6433 4 -56.79 433.88 -97.82 0.435 6432 +6434 4 -57.51 435.75 -99.52 0.435 6433 +6435 4 -58.62 436.66 -100.66 0.435 6434 +6436 4 -60.23 438.34 -101.13 0.435 6435 +6437 4 -61.38 439.91 -102.27 0.435 6436 +6438 4 -62.59 442.28 -102.89 0.435 6437 +6439 4 -62.74 444.64 -102.65 0.435 6438 +6440 4 -62.39 446.48 -103.42 0.435 6439 +6441 4 -62.91 448.53 -104.65 0.435 6440 +6442 4 -63.36 449.54 -106.22 0.435 6441 +6443 4 -63.59 450.54 -107.78 0.435 6442 +6444 4 -64.07 451.4 -107.92 0.435 6443 +6445 4 -64.54 452.3 -108.67 0.435 6444 +6446 4 -64.54 453.15 -110.55 0.435 6445 +6447 4 -65.01 453.47 -109.77 0.435 6446 +6448 4 -65.72 454.6 -110.57 0.435 6447 +6449 4 -65.74 455.6 -111.83 0.435 6448 +6450 4 -65.98 456.55 -112.86 0.435 6449 +6451 4 -66.5 458.6 -114.02 0.435 6450 +6452 4 -66.98 460.04 -115.54 0.435 6451 +6453 4 -68.17 461.96 -116.13 0.435 6452 +6454 4 -68.23 463.29 -116.44 0.435 6453 +6455 4 -68.76 464.81 -116.67 0.435 6454 +6456 4 -68.82 465.88 -116.64 0.435 6455 +6457 4 -69.3 467.29 -117.85 0.435 6456 +6458 4 -69.86 469.19 -117.67 0.435 6457 +6459 4 -71.22 470.75 -118.98 0.435 6458 +6460 4 -72.16 472.05 -119.54 0.435 6459 +6461 4 -73.14 473.99 -119.51 0.435 6460 +6462 4 -74.33 476.17 -120.3 0.435 6461 +6463 4 -75.36 478.48 -120.16 0.435 6462 +6464 4 -76.78 480.54 -119.98 0.435 6463 +6465 4 -77.95 481.76 -119.88 0.435 6464 +6466 4 25.33 288.32 -51.62 0.975 6126 +6467 4 26.34 290.03 -52.71 0.865 6466 +6468 4 27.32 292.17 -53.97 0.54 6467 +6469 4 28.34 293.86 -54.98 0.54 6468 +6470 4 28.5 294.74 -55.04 0.54 6469 +6471 4 29.05 296.28 -54.86 0.54 6470 +6472 4 29.4 298.1 -55.41 0.54 6471 +6473 4 29.46 300.47 -55.17 0.54 6472 +6474 4 29.8 302.0 -55.0 0.54 6473 +6475 4 31.12 305.09 -54.65 0.54 6474 +6476 4 31.67 306.63 -54.48 0.54 6475 +6477 4 32.83 308.84 -54.15 0.54 6476 +6478 4 33.98 311.27 -53.87 0.54 6477 +6479 4 34.72 313.2 -53.65 0.54 6478 +6480 4 35.26 314.95 -53.46 0.54 6479 +6481 4 35.57 316.91 -53.25 0.54 6480 +6482 4 35.66 318.85 -53.05 0.54 6481 +6483 4 35.54 320.77 -52.85 0.54 6482 +6484 4 35.46 322.1 -53.09 0.54 6483 +6485 4 35.59 324.19 -54.38 0.54 6484 +6486 4 36.11 326.39 -54.22 0.54 6485 +6487 4 36.61 328.57 -53.98 0.54 6486 +6488 4 37.33 330.97 -53.71 0.54 6487 +6489 4 38.08 332.95 -53.49 0.54 6488 +6490 4 38.65 334.06 -53.36 0.54 6489 +6491 4 39.0 335.63 -53.56 0.54 6490 +6492 4 39.52 337.6 -53.35 0.54 6491 +6493 4 39.48 337.95 -52.49 0.54 6492 +6494 4 39.65 338.6 -52.49 0.54 6493 +6495 4 39.41 339.59 -53.75 0.54 6494 +6496 4 40.0 341.01 -54.49 0.54 6495 +6497 4 40.37 341.85 -54.09 0.54 6496 +6498 4 40.94 343.76 -55.24 0.54 6497 +6499 4 41.13 344.72 -56.11 0.54 6498 +6500 4 41.5 346.44 -57.67 0.54 6499 +6501 4 41.87 347.52 -57.55 0.54 6500 +6502 4 42.46 349.24 -59.08 0.54 6501 +6503 4 43.68 351.44 -60.64 0.54 6502 +6504 4 44.45 353.3 -61.4 0.54 6503 +6505 4 45.24 355.23 -62.84 0.54 6504 +6506 4 46.44 357.87 -64.5 0.54 6505 +6507 4 47.47 359.41 -66.13 0.54 6506 +6508 4 47.84 360.77 -66.5 0.54 6507 +6509 4 47.97 362.08 -66.36 0.54 6508 +6510 4 47.26 363.12 -66.35 0.54 6509 +6511 4 47.47 363.58 -67.05 0.435 6510 +6512 4 48.02 365.12 -66.88 0.435 6511 +6513 4 48.8 366.44 -66.65 0.435 6512 +6514 4 49.75 368.44 -66.35 0.435 6513 +6515 4 50.52 370.19 -66.15 0.435 6514 +6516 4 50.64 371.19 -65.21 0.435 6515 +6517 4 50.96 372.38 -63.8 0.435 6516 +6518 4 50.37 374.71 -63.57 0.435 6517 +6519 4 49.19 376.38 -63.58 0.435 6518 +6520 4 47.53 378.96 -64.41 0.435 6519 +6521 4 46.11 381.06 -64.59 0.435 6520 +6522 4 45.62 382.4 -65.3 0.435 6521 +6523 4 44.67 384.19 -66.34 0.435 6522 +6524 4 44.18 385.82 -67.7 0.435 6523 +6525 4 43.68 387.4 -68.59 0.435 6524 +6526 4 43.36 388.88 -68.44 0.435 6525 +6527 4 43.47 391.11 -68.97 0.435 6526 +6528 4 43.54 393.27 -68.82 0.435 6527 +6529 4 43.76 396.8 -68.6 0.435 6528 +6530 4 44.6 400.51 -68.2 0.435 6529 +6531 4 45.02 404.49 -68.6 0.435 6530 +6532 4 45.92 407.35 -68.28 0.435 6531 +6533 4 46.95 411.5 -67.83 0.435 6532 +6534 4 48.16 416.51 -67.28 0.435 6533 +6535 4 48.99 420.44 -66.86 0.435 6534 +6536 4 49.54 422.24 -67.11 0.435 6535 +6537 4 49.69 423.06 -66.5 0.435 6536 +6538 4 49.83 424.08 -65.86 0.435 6537 +6539 4 49.72 425.54 -65.26 0.435 6538 +6540 4 50.11 426.18 -64.96 0.435 6539 +6541 4 50.89 427.52 -64.72 0.435 6540 +6542 4 51.24 428.04 -63.3 0.435 6541 +6543 4 51.42 428.65 -62.79 0.435 6542 +6544 4 51.54 429.67 -62.0 0.435 6543 +6545 4 51.84 431.56 -61.19 0.435 6544 +6546 4 51.98 432.38 -60.58 0.435 6545 +6547 4 52.35 433.2 -59.89 0.435 6546 +6548 4 52.47 434.22 -59.09 0.435 6547 +6549 4 53.17 436.8 -58.44 0.435 6548 +6550 4 53.21 439.02 -56.85 0.435 6549 +6551 4 53.69 441.63 -56.49 0.435 6550 +6552 4 53.57 443.04 -55.45 0.435 6551 +6553 4 53.9 444.78 -55.26 0.435 6552 +6554 4 54.8 447.42 -54.97 0.435 6553 +6555 4 55.34 449.16 -54.69 0.435 6554 +6556 4 55.83 451.48 -53.69 0.435 6555 +6557 4 56.18 452.79 -53.54 0.435 6556 +6558 4 56.06 454.72 -53.28 0.435 6557 +6559 4 55.49 456.62 -53.09 0.435 6558 +6560 4 54.94 458.52 -52.91 0.435 6559 +6561 4 55.05 460.25 -52.73 0.435 6560 +6562 4 55.07 462.73 -51.42 0.435 6561 +6563 4 56.13 466.45 -51.01 0.435 6562 +6564 4 56.83 469.1 -50.63 0.435 6563 +6565 4 59.16 473.33 -50.14 0.435 6564 +6566 4 60.09 475.75 -49.87 0.435 6565 +6567 4 61.0 478.38 -49.5 0.435 6566 +6568 4 62.09 481.12 -48.06 0.435 6567 +6569 4 62.84 485.72 -45.77 0.435 6568 +6570 4 62.89 487.54 -44.37 0.435 6569 +6571 4 63.63 489.73 -44.13 0.435 6570 +6572 4 64.43 493.53 -42.43 0.435 6571 +6573 4 65.12 495.81 -40.9 0.435 6572 +6574 4 66.22 498.33 -39.4 0.435 6573 +6575 4 66.92 500.4 -37.97 0.435 6574 +6576 4 67.17 502.41 -36.09 0.435 6575 +6577 4 67.07 503.61 -35.15 0.325 6576 +6578 4 67.29 506.85 -34.81 0.325 6577 +6579 4 67.4 508.79 -34.6 0.325 6578 +6580 4 67.66 511.38 -34.33 0.325 6579 +6581 4 67.25 513.79 -32.58 0.325 6580 +6582 4 67.3 516.14 -32.18 0.325 6581 +6583 4 67.8 518.54 -31.92 0.325 6582 +6584 4 67.84 521.06 -30.99 0.325 6583 +6585 4 68.53 523.88 -30.6 0.325 6584 +6586 4 69.43 525.93 -28.86 0.325 6585 +6587 4 69.7 528.54 -28.58 0.325 6586 +6588 4 70.4 531.15 -28.22 0.325 6587 +6589 4 70.49 533.31 -28.0 0.325 6588 +6590 4 70.59 534.82 -27.84 0.325 6589 +6591 4 71.12 536.79 -27.62 0.325 6590 +6592 4 71.92 537.9 -27.41 0.325 6591 +6593 4 72.07 538.99 -27.29 0.325 6592 +6594 4 72.4 540.52 -27.13 0.325 6593 +6595 4 72.5 542.45 -26.93 0.325 6594 +6596 4 72.43 543.53 -26.82 0.325 6595 +6597 4 72.34 545.02 -26.66 0.325 6596 +6598 4 71.81 546.28 -26.55 0.325 6597 +6599 4 71.76 547.15 -26.46 0.325 6598 +6600 4 71.29 547.75 -26.34 0.325 6599 +6601 4 46.3 364.57 -66.23 0.54 6510 +6602 4 45.33 366.22 -66.08 0.54 6601 +6603 4 45.04 367.56 -66.62 0.435 6602 +6604 4 44.56 368.95 -67.77 0.435 6603 +6605 4 44.09 369.87 -68.51 0.435 6604 +6606 4 43.19 371.03 -69.84 0.435 6605 +6607 4 42.95 372.02 -71.1 0.435 6606 +6608 4 42.67 373.11 -71.3 0.435 6607 +6609 4 42.44 374.02 -72.5 0.435 6608 +6610 4 42.21 374.83 -74.15 0.435 6609 +6611 4 41.98 375.79 -75.26 0.435 6610 +6612 4 41.73 376.73 -76.15 0.435 6611 +6613 4 40.8 377.78 -76.36 0.435 6612 +6614 4 39.98 378.15 -78.3 0.435 6613 +6615 4 24.1 207.46 -20.24 0.435 5040 +6616 4 23.59 208.52 -20.21 0.435 6615 +6617 4 23.58 208.74 -20.27 0.435 6616 +6618 4 23.52 209.54 -19.66 0.435 6617 +6619 4 22.8 210.05 -18.64 0.435 6618 +6620 4 22.31 211.11 -18.77 0.435 6619 +6621 4 22.24 211.91 -18.16 0.435 6620 +6622 4 21.69 213.25 -16.68 0.435 6621 +6623 4 20.7 214.86 -16.08 0.435 6622 +6624 4 19.73 216.03 -15.38 0.435 6623 +6625 4 18.27 218.52 -15.16 0.435 6624 +6626 4 18.18 220.03 -15.0 0.435 6625 +6627 4 17.53 223.42 -14.67 0.435 6626 +6628 4 16.27 226.15 -14.42 0.435 6627 +6629 4 14.17 228.39 -14.23 0.435 6628 +6630 4 12.99 229.82 -14.11 0.435 6629 +6631 4 11.49 232.96 -13.82 0.435 6630 +6632 4 9.96 237.06 -14.57 0.435 6631 +6633 4 8.24 240.19 -14.36 0.435 6632 +6634 4 7.72 241.99 -15.32 0.435 6633 +6635 4 6.74 243.87 -15.22 0.435 6634 +6636 4 6.18 246.59 -16.61 0.435 6635 +6637 4 5.23 248.03 -16.49 0.435 6636 +6638 4 4.69 249.52 -16.34 0.435 6637 +6639 4 4.6 251.02 -16.19 0.435 6638 +6640 4 4.72 252.53 -16.03 0.435 6639 +6641 4 4.43 253.75 -16.06 0.435 6640 +6642 4 4.37 254.91 -16.77 0.435 6641 +6643 4 4.32 256.02 -17.11 0.435 6642 +6644 4 2.9 257.88 -17.03 0.435 6643 +6645 4 1.5 259.3 -16.92 0.435 6644 +6646 4 0.6 260.18 -17.52 0.435 6645 +6647 4 0.32 261.24 -17.57 0.435 6646 +6648 4 0.24 262.54 -17.51 0.435 6647 +6649 4 0.18 263.67 -17.92 0.435 6648 +6650 4 -0.38 265.99 -17.7 0.435 6649 +6651 4 -0.96 268.12 -17.49 0.435 6650 +6652 4 -3.07 271.38 -18.86 0.435 6651 +6653 4 -3.81 272.84 -18.73 0.435 6652 +6654 4 -5.45 274.92 -18.78 0.435 6653 +6655 4 -6.01 276.82 -18.6 0.435 6654 +6656 4 -6.17 279.18 -18.43 0.435 6655 +6657 4 -5.97 283.06 -18.02 0.435 6656 +6658 4 -6.37 285.85 -17.89 0.435 6657 +6659 4 -7.39 288.98 -19.47 0.435 6658 +6660 4 -8.22 291.94 -19.19 0.435 6659 +6661 4 -8.3 293.77 -20.06 0.435 6660 +6662 4 -8.93 297.01 -20.19 0.435 6661 +6663 4 -10.6 299.52 -20.27 0.435 6662 +6664 4 -11.6 302.14 -21.08 0.435 6663 +6665 4 -12.66 305.41 -21.82 0.435 6664 +6666 4 -14.57 308.3 -21.57 0.435 6665 +6667 4 -15.9 312.63 -22.13 0.435 6666 +6668 4 -15.82 315.09 -22.86 0.435 6667 +6669 4 -15.83 318.75 -22.55 0.435 6668 +6670 4 -15.55 321.68 -23.29 0.435 6669 +6671 4 -15.48 324.35 -23.85 0.435 6670 +6672 4 -15.2 326.74 -23.67 0.435 6671 +6673 4 -15.06 328.24 -24.04 0.435 6672 +6674 4 -14.28 329.57 -23.73 0.435 6673 +6675 4 -13.73 331.1 -23.48 0.435 6674 +6676 4 -13.31 331.64 -24.25 0.435 6675 +6677 4 -12.95 333.3 -25.35 0.435 6676 +6678 4 -12.51 334.09 -26.53 0.435 6677 +6679 4 -12.15 335.46 -26.92 0.435 6678 +6680 4 17.94 73.8 -14.09 0.435 3403 +6681 4 19.39 74.96 -13.94 0.435 6680 +6682 4 19.82 75.01 -14.07 0.435 6681 +6683 4 20.41 75.32 -12.6 0.435 6682 +6684 4 21.21 75.62 -10.74 0.435 6683 +6685 4 21.97 76.89 -9.83 0.435 6684 +6686 4 23.57 78.87 -9.14 0.435 6685 +6687 4 24.55 80.17 -8.53 0.435 6686 +6688 4 25.68 82.56 -7.73 0.435 6687 +6689 4 26.63 84.46 -6.61 0.435 6688 +6690 4 27.17 85.96 -6.06 0.435 6689 +6691 4 28.36 87.5 -5.5 0.435 6690 +6692 4 30.0 88.86 -4.94 0.435 6691 +6693 4 31.2 90.19 -4.48 0.435 6692 +6694 4 31.43 90.14 -4.48 0.435 6693 +6695 4 31.8 91.02 -4.3 0.435 6694 +6696 4 32.39 91.92 -4.19 0.435 6695 +6697 4 33.18 93.25 -4.03 0.435 6696 +6698 4 33.75 94.57 -3.88 0.435 6697 +6699 4 33.68 95.65 -3.77 0.435 6698 +6700 4 33.82 97.0 -4.23 0.435 6699 +6701 4 33.59 98.01 -5.56 0.435 6700 +6702 4 33.54 98.61 -5.13 0.435 6701 +6703 4 33.5 98.96 -4.34 0.435 6702 +6704 4 33.85 100.02 -3.99 0.435 6703 +6705 4 33.32 101.45 -3.33 0.435 6704 +6706 4 33.4 102.86 -2.13 0.435 6705 +6707 4 33.49 104.76 -1.56 0.435 6706 +6708 4 33.8 105.95 -0.29 0.435 6707 +6709 4 34.35 107.18 0.81 0.435 6708 +6710 4 35.3 109.1 1.72 0.435 6709 +6711 4 35.83 110.81 2.36 0.435 6710 +6712 4 37.04 112.17 2.6 0.435 6711 +6713 4 37.33 114.33 2.91 0.435 6712 +6714 4 37.7 115.16 3.46 0.435 6713 +6715 4 38.24 116.65 4.15 0.435 6714 +6716 4 39.49 117.08 4.98 0.435 6715 +6717 4 40.44 119.07 5.28 0.435 6716 +6718 4 41.22 120.37 5.73 0.435 6717 +6719 4 41.79 121.19 6.51 0.435 6718 +6720 4 42.38 122.61 5.92 0.435 6719 +6721 4 43.11 123.96 7.96 0.435 6720 +6722 4 43.91 124.89 7.92 0.435 6721 +6723 4 33.33 90.68 -3.77 0.435 6694 +6724 4 35.91 91.05 -3.59 0.435 6723 +6725 4 37.85 91.18 -3.54 0.435 6724 +6726 4 40.24 91.1 -3.49 0.435 6725 +6727 4 43.02 91.7 -3.36 0.435 6726 +6728 4 46.0 92.75 -3.18 0.435 6727 +6729 4 49.06 92.28 -3.16 0.435 6728 +6730 4 53.19 92.32 -3.05 0.435 6729 +6731 4 55.53 92.88 -2.94 0.435 6730 +6732 4 57.69 92.96 -2.36 0.435 6731 +6733 4 60.19 94.37 -1.7 0.435 6732 +6734 4 61.4 95.15 -0.15 0.435 6733 +6735 4 63.65 97.22 0.1 0.435 6734 +6736 4 64.84 98.51 1.09 0.435 6735 +6737 4 65.38 99.99 1.86 0.435 6736 +6738 4 68.32 101.44 2.16 0.435 6737 +6739 4 71.07 102.68 2.42 0.435 6738 +6740 4 72.46 104.7 2.67 0.435 6739 +6741 4 75.61 109.62 3.25 0.435 6740 +6742 4 78.25 112.36 3.6 0.435 6741 +6743 4 80.84 115.97 4.03 0.435 6742 +6744 4 83.49 118.72 4.38 0.435 6743 +6745 4 85.54 120.56 4.62 0.435 6744 +6746 4 87.68 120.9 4.78 0.435 6745 +6747 4 90.67 121.69 5.24 0.435 6746 +6748 4 93.01 121.97 6.06 0.435 6747 +6749 4 95.6 122.13 6.22 0.435 6748 +6750 4 98.95 124.04 6.57 0.435 6749 +6751 4 102.37 124.68 6.72 0.435 6750 +6752 4 105.55 125.96 6.92 0.435 6751 +6753 4 106.75 127.24 7.77 0.435 6752 +6754 4 109.25 128.64 8.43 0.435 6753 +6755 4 110.47 129.77 8.79 0.435 6754 +6756 4 111.34 129.82 8.9 0.435 6755 +6757 4 112.41 129.85 9.3 0.435 6756 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc new file mode 100644 index 0000000..3a7b77c --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc @@ -0,0 +1,3022 @@ +# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +1 1 0.0 0.0 0.0 8.88119 -1 +2 1 0.35 -8.83 -0.87 8.88119 1 +3 1 -0.35 8.83 0.87 8.88119 1 +4 3 0.67 -4.33 -2.18 2.165 1 +5 3 -0.09 -6.62 -2.34 1.84 4 +6 3 -1.76 -8.01 -2.31 1.405 5 +7 3 -2.97 -8.02 -2.2 1.405 6 +8 3 -3.39 -8.37 -2.2 1.405 7 +9 3 -3.48 -8.5 -2.2 1.405 8 +10 3 -3.53 -8.81 -3.1 1.19 9 +11 3 -3.61 -9.04 -3.55 1.19 10 +12 3 -4.27 -8.08 -3.52 0.11 11 +13 3 -5.31 -7.95 -3.18 0.11 12 +14 3 -5.47 -8.42 -3.21 0.54 13 +15 3 -6.69 -8.42 -3.11 0.54 14 +16 3 -7.0 -7.52 -2.98 0.54 15 +17 3 -8.21 -7.23 -2.84 0.54 16 +18 3 -8.66 -7.68 -2.85 0.54 17 +19 3 -9.28 -8.31 -2.85 0.54 18 +20 3 -9.73 -9.06 -2.88 0.54 19 +21 3 -10.03 -10.29 -2.97 0.54 20 +22 3 -10.03 -10.88 -3.03 0.54 21 +23 3 -10.18 -11.95 -3.12 0.54 22 +24 3 -10.63 -12.42 -3.13 0.54 23 +25 3 -10.94 -13.64 -3.22 0.54 24 +26 3 -11.39 -14.1 -3.22 0.54 25 +27 3 -11.68 -15.01 -3.28 0.54 26 +28 3 -12.22 -15.99 -4.24 0.65 27 +29 3 -12.53 -16.61 -4.26 0.65 28 +30 3 -12.98 -17.36 -4.31 0.65 29 +31 3 -13.66 -18.21 -5.16 0.54 30 +32 3 -14.88 -18.82 -5.11 0.54 31 +33 3 -16.85 -19.3 -4.97 0.54 32 +34 3 -17.61 -20.37 -5.0 0.54 33 +35 3 -17.76 -22.05 -5.16 0.54 34 +36 3 -17.6 -22.81 -5.25 0.54 35 +37 3 -17.44 -24.17 -5.39 0.54 36 +38 3 -17.74 -25.1 -5.45 0.54 37 +39 3 -19.12 -25.86 -5.4 0.54 38 +40 3 -20.94 -25.87 -5.24 0.54 39 +41 3 -22.15 -25.9 -5.05 0.54 40 +42 3 -22.3 -26.96 -5.14 0.54 41 +43 3 -22.29 -27.57 -5.19 0.54 42 +44 3 -22.44 -28.04 -5.22 0.54 43 +45 3 -22.94 -27.75 -6.06 0.435 44 +46 3 -23.25 -28.36 -6.09 0.435 45 +47 3 -23.56 -29.27 -6.23 0.435 46 +48 3 -24.05 -29.99 -6.72 0.435 47 +49 3 -24.86 -30.7 -7.31 0.435 48 +50 3 -26.08 -31.33 -7.26 0.435 49 +51 3 -27.75 -31.18 -7.09 0.435 50 +52 3 -29.32 -31.45 -7.5 0.435 51 +53 3 -30.27 -31.72 -7.89 0.435 52 +54 3 -31.81 -31.43 -7.79 0.435 53 +55 3 -33.73 -30.72 -8.68 0.435 54 +56 3 -34.98 -30.41 -8.84 0.435 55 +57 3 -35.25 -30.43 -10.1 0.54 56 +58 3 -36.17 -31.34 -10.26 0.54 57 +59 3 -37.55 -32.11 -10.29 0.54 58 +60 3 -38.19 -32.68 -10.73 0.54 59 +61 3 -38.5 -33.59 -10.86 0.54 60 +62 3 -39.6 -34.93 -11.27 0.54 61 +63 3 -40.35 -36.61 -11.37 0.54 62 +64 3 -41.27 -37.83 -11.48 0.54 63 +65 3 -41.72 -38.58 -11.59 0.54 64 +66 3 -42.19 -39.04 -11.66 0.54 65 +67 3 -42.37 -39.46 -11.98 0.54 66 +68 3 -42.4 -39.43 -12.36 0.54 67 +69 3 -43.94 -40.64 -12.57 0.54 68 +70 3 -45.25 -41.77 -13.61 0.54 69 +71 3 -46.49 -43.28 -13.86 0.54 70 +72 3 -47.71 -44.49 -13.96 0.54 71 +73 3 -48.47 -45.27 -13.96 0.54 72 +74 3 -49.24 -46.32 -14.14 0.54 73 +75 3 -50.18 -47.81 -14.57 0.54 74 +76 3 -52.32 -49.34 -14.68 0.54 75 +77 3 -53.07 -50.1 -14.68 0.54 76 +78 3 -53.41 -50.69 -15.09 0.54 77 +79 3 -53.87 -51.44 -15.19 0.54 78 +80 3 -54.81 -52.33 -15.5 0.54 79 +81 3 -56.05 -53.53 -15.8 0.54 80 +82 3 -57.73 -54.0 -15.77 0.54 81 +83 3 -59.85 -54.92 -15.66 0.54 82 +84 3 -61.23 -56.61 -15.78 0.54 83 +85 3 -62.89 -58.3 -15.79 0.54 84 +86 3 -66.39 -60.61 -15.69 0.54 85 +87 3 -67.76 -61.99 -15.7 0.54 86 +88 3 -68.97 -63.22 -15.7 0.54 87 +89 3 -71.85 -64.3 -15.55 0.54 88 +90 3 -73.99 -64.64 -15.38 0.54 89 +91 3 -75.81 -64.35 -15.19 0.54 90 +92 3 -79.65 -65.1 -15.35 0.54 91 +93 3 -82.24 -64.37 -15.04 0.54 92 +94 3 -84.53 -64.23 -14.82 0.54 93 +95 3 -86.41 -64.78 -15.39 0.54 94 +96 3 -88.69 -65.57 -15.26 0.54 95 +97 3 -90.98 -66.66 -15.15 0.54 96 +98 3 -92.87 -67.8 -16.07 0.54 97 +99 3 -93.53 -69.89 -16.73 0.54 98 +100 3 -95.82 -71.88 -16.79 0.54 99 +101 3 -96.87 -73.56 -16.87 0.54 100 +102 3 -97.85 -75.31 -17.77 0.54 101 +103 3 -98.47 -76.52 -17.99 0.54 102 +104 3 -98.16 -77.74 -18.06 0.54 103 +105 3 -98.09 -78.42 -17.38 0.54 104 +106 3 -97.89 -79.23 -16.87 0.54 105 +107 3 -98.75 -80.5 -16.54 0.54 106 +108 3 -99.36 -81.41 -16.57 0.54 107 +109 3 -99.32 -83.28 -16.31 0.54 108 +110 3 -100.2 -86.04 -16.34 0.54 109 +111 3 -99.59 -88.77 -16.67 0.54 110 +112 3 -99.27 -90.91 -16.82 0.54 111 +113 3 -98.62 -92.16 -16.55 0.54 112 +114 3 -98.46 -93.83 -16.73 0.54 113 +115 3 -98.58 -94.93 -16.45 0.54 114 +116 3 -98.4 -96.01 -16.42 0.54 115 +117 3 -98.69 -96.93 -16.4 0.54 116 +118 3 -22.3 -29.09 -5.42 0.54 44 +119 3 -21.83 -31.67 -5.72 0.54 118 +120 3 -20.61 -34.99 -6.22 0.54 119 +121 3 -19.89 -36.61 -6.91 0.54 120 +122 3 -19.46 -38.24 -7.56 0.54 121 +123 3 -19.16 -39.45 -7.78 0.54 122 +124 3 -18.65 -40.57 -7.25 0.54 123 +125 3 -17.05 -42.46 -6.82 0.54 124 +126 3 -16.58 -44.14 -6.97 0.54 125 +127 3 -16.87 -45.37 -6.98 0.54 126 +128 3 -16.66 -45.58 -6.26 0.54 127 +129 3 -17.25 -47.1 -6.35 0.54 128 +130 3 -18.32 -47.57 -6.3 0.54 129 +131 3 -19.05 -48.38 -6.01 0.54 130 +132 3 -20.1 -49.46 -5.87 0.54 131 +133 3 -20.55 -51.43 -6.02 0.54 132 +134 3 -21.15 -53.57 -6.17 0.54 133 +135 3 -22.35 -55.72 -6.2 0.54 134 +136 3 -23.41 -57.41 -6.27 0.54 135 +137 3 -24.16 -59.09 -6.36 0.54 136 +138 3 -25.52 -59.88 -6.16 0.54 137 +139 3 -26.42 -60.8 -6.08 0.54 138 +140 3 -27.46 -61.9 -5.8 0.54 139 +141 3 -28.2 -64.21 -5.88 0.54 140 +142 3 -28.5 -66.33 -6.07 0.54 141 +143 3 -29.72 -67.87 -6.1 0.54 142 +144 3 -31.08 -68.64 -6.05 0.54 143 +145 3 -32.76 -70.63 -6.09 0.54 144 +146 3 -33.19 -72.63 -6.16 0.54 145 +147 3 -33.8 -75.05 -6.34 0.54 146 +148 3 -33.71 -76.04 -5.62 0.54 147 +149 3 -35.03 -77.17 -6.74 0.54 148 +150 3 -36.24 -79.02 -6.8 0.54 149 +151 3 -37.19 -80.5 -7.25 0.54 150 +152 3 -37.41 -81.78 -8.26 0.54 151 +153 3 -37.85 -84.68 -8.5 0.54 152 +154 3 -38.77 -88.03 -8.81 0.54 153 +155 3 -38.91 -90.01 -9.0 0.54 154 +156 3 -39.06 -91.68 -9.15 0.54 155 +157 3 -38.76 -93.18 -9.47 0.54 156 +158 3 -38.8 -94.06 -9.93 0.54 157 +159 3 -39.48 -94.59 -10.83 0.54 158 +160 3 -41.17 -96.26 -10.99 0.54 159 +161 3 -41.54 -97.09 -11.87 0.54 160 +162 3 -41.81 -97.74 -13.11 0.54 161 +163 3 -41.84 -99.24 -11.97 0.54 162 +164 3 -42.03 -99.98 -10.67 0.54 163 +165 3 -41.98 -100.61 -10.44 0.54 164 +166 3 -42.73 -102.6 -10.48 0.54 165 +167 3 -42.57 -105.2 -10.68 0.54 166 +168 3 -42.71 -106.56 -10.8 0.54 167 +169 3 -43.6 -108.43 -10.59 0.54 168 +170 3 -44.18 -109.97 -10.46 0.54 169 +171 3 -44.24 -110.81 -9.71 0.54 170 +172 3 -44.24 -112.04 -9.68 0.54 171 +173 3 -44.52 -113.29 -9.54 0.54 172 +174 3 -44.93 -114.69 -9.33 0.54 173 +175 3 -44.89 -116.26 -9.04 0.54 174 +176 3 -44.68 -117.66 -8.75 0.54 175 +177 3 -44.39 -119.19 -8.84 0.54 176 +178 3 -43.91 -120.55 -9.02 0.54 177 +179 3 -43.89 -120.9 -8.69 0.54 178 +180 3 -42.63 -122.13 -8.62 0.54 179 +181 3 -41.35 -123.71 -8.14 0.54 180 +182 3 -40.56 -125.39 -8.29 0.54 181 +183 3 -39.95 -126.59 -8.46 0.54 182 +184 3 -39.34 -128.42 -8.63 0.54 183 +185 3 -38.71 -130.56 -8.81 0.54 184 +186 3 -38.07 -131.8 -8.62 0.54 185 +187 3 -37.6 -132.87 -8.68 0.54 186 +188 3 -37.59 -134.08 -8.74 0.54 187 +189 3 -37.59 -135.0 -8.83 0.54 188 +190 3 -37.43 -135.76 -8.92 0.54 189 +191 3 -36.82 -136.67 -9.06 0.54 190 +192 3 -36.05 -138.64 -9.32 0.54 191 +193 3 -35.9 -140.01 -9.47 0.54 192 +194 3 -36.34 -141.07 -9.54 0.54 193 +195 3 -37.05 -141.51 -9.36 0.435 194 +196 3 -37.96 -142.43 -9.36 0.435 195 +197 3 -39.64 -142.9 -9.25 0.435 196 +198 3 -41.44 -143.55 -9.01 0.435 197 +199 3 -42.34 -144.48 -8.86 0.435 198 +200 3 -43.11 -144.62 -8.95 0.435 199 +201 3 -43.6 -145.36 -9.28 0.435 200 +202 3 -43.94 -145.63 -9.65 0.435 201 +203 3 -44.28 -146.19 -10.13 0.435 202 +204 3 -44.99 -146.71 -11.25 0.435 203 +205 3 -45.66 -147.56 -11.88 0.435 204 +206 3 -45.84 -148.59 -12.34 0.435 205 +207 3 -46.13 -150.11 -12.46 0.435 206 +208 3 -46.59 -151.48 -12.62 0.435 207 +209 3 -46.59 -152.7 -12.74 0.435 208 +210 3 -46.42 -154.06 -12.89 0.435 209 +211 3 -46.6 -154.8 -13.25 0.435 210 +212 3 -46.15 -155.85 -13.47 0.435 211 +213 3 -45.85 -157.07 -13.61 0.435 212 +214 3 -46.02 -157.81 -13.9 0.435 213 +215 3 -46.02 -158.71 -14.14 0.435 214 +216 3 -46.22 -159.72 -14.67 0.435 215 +217 3 -46.53 -160.34 -14.78 0.435 216 +218 3 -46.83 -160.94 -14.81 0.435 217 +219 3 -46.99 -161.4 -14.84 0.435 218 +220 3 -47.04 -161.94 -15.64 0.435 219 +221 3 -47.65 -162.54 -15.73 0.435 220 +222 3 -48.11 -163.01 -15.73 0.435 221 +223 3 -48.42 -163.32 -15.73 0.435 222 +224 3 -48.62 -163.71 -16.28 0.435 223 +225 3 -48.31 -165.22 -16.53 0.435 224 +226 3 -47.25 -165.67 -16.67 0.435 225 +227 3 -3.29 -10.26 -4.74 1.19 10 +228 3 -2.54 -10.99 -5.1 1.08 227 +229 3 -1.93 -11.9 -5.24 0.865 228 +230 3 -1.81 -12.92 -5.81 0.65 229 +231 3 -1.21 -13.83 -5.95 0.65 230 +232 3 -1.2 -14.74 -6.04 0.65 231 +233 3 -1.8 -15.96 -6.11 0.65 232 +234 3 -2.26 -16.71 -6.22 0.65 233 +235 3 -3.79 -17.95 -6.19 0.65 234 +236 3 -4.84 -19.93 -6.3 0.65 235 +237 3 -5.14 -20.55 -6.33 0.435 236 +238 3 -6.2 -22.22 -6.39 0.435 237 +239 3 -6.34 -23.59 -6.51 0.435 238 +240 3 -5.58 -24.95 -6.72 0.435 239 +241 3 -4.67 -27.09 -7.01 0.435 240 +242 3 -4.2 -29.67 -7.3 0.435 241 +243 3 -4.2 -30.88 -7.42 0.435 242 +244 3 -3.89 -32.39 -7.6 0.435 243 +245 3 -2.46 -33.18 -8.94 0.435 244 +246 3 -1.39 -33.63 -9.08 0.435 245 +247 3 -0.03 -34.37 -9.35 0.435 246 +248 3 1.17 -35.88 -9.61 0.435 247 +249 3 2.25 -38.15 -9.94 0.435 248 +250 3 3.18 -40.28 -10.23 0.435 249 +251 3 3.48 -41.49 -10.37 0.435 250 +252 3 4.85 -42.85 -10.63 0.435 251 +253 3 6.49 -42.62 -11.29 0.435 252 +254 3 8.21 -43.42 -12.58 0.435 253 +255 3 9.59 -44.79 -11.18 0.435 254 +256 3 10.7 -45.29 -10.8 0.435 255 +257 3 11.5 -46.08 -10.51 0.435 256 +258 3 11.97 -47.16 -10.5 0.435 257 +259 3 13.08 -48.25 -10.26 0.435 258 +260 3 13.0 -48.78 -9.54 0.435 259 +261 3 12.87 -49.57 -9.46 0.435 260 +262 3 12.76 -50.06 -9.04 0.435 261 +263 3 12.82 -51.04 -8.45 0.435 262 +264 3 13.34 -52.46 -7.97 0.435 263 +265 3 13.53 -52.95 -7.73 0.435 264 +266 3 13.55 -53.89 -7.6 0.435 265 +267 3 13.56 -54.5 -7.58 0.435 266 +268 3 -4.18 -10.16 -2.3 0.755 9 +269 3 -5.4 -11.08 -2.28 0.65 268 +270 3 -6.46 -12.15 -2.28 0.65 269 +271 3 -7.06 -13.68 -2.38 0.65 270 +272 3 -7.51 -15.67 -2.45 0.65 271 +273 3 -7.34 -17.65 -2.66 0.65 272 +274 3 -6.43 -19.76 -2.95 0.65 273 +275 3 -5.66 -21.74 -3.21 0.65 274 +276 3 -5.04 -24.47 -3.53 0.65 275 +277 3 -4.42 -25.98 -3.75 0.65 276 +278 3 -4.72 -27.19 -3.83 0.65 277 +279 3 -5.34 -27.81 -3.84 0.65 278 +280 3 -6.55 -27.83 -3.72 0.65 279 +281 3 -7.47 -29.36 -3.79 0.65 280 +282 3 -7.71 -30.46 -3.88 0.65 281 +283 3 -7.85 -30.94 -2.1 0.435 282 +284 3 -8.31 -31.4 -2.1 0.435 283 +285 3 -8.76 -31.87 -2.1 0.435 284 +286 3 -9.26 -32.27 -2.63 0.435 285 +287 3 -9.8 -32.65 -3.44 0.435 286 +288 3 -10.28 -33.09 -3.67 0.435 287 +289 3 -10.55 -33.42 -3.44 0.435 288 +290 3 -10.84 -33.75 -3.23 0.435 289 +291 3 -10.83 -34.36 -3.22 0.435 290 +292 3 -10.5 -34.69 -3.06 0.435 291 +293 3 -9.99 -35.2 -2.47 0.435 292 +294 3 -9.77 -35.72 -1.86 0.435 293 +295 3 -8.83 -36.34 -1.86 0.435 294 +296 3 -8.98 -37.42 -1.86 0.435 295 +297 3 -9.13 -38.17 -1.92 0.435 296 +298 3 -9.44 -38.79 -1.95 0.435 297 +299 3 -10.19 -39.56 -1.89 0.435 298 +300 3 -10.33 -40.33 -1.88 0.435 299 +301 3 -10.62 -41.25 -1.87 0.435 300 +302 3 -10.93 -41.86 -1.9 0.435 301 +303 3 -11.04 -42.96 -1.61 0.435 302 +304 3 -10.29 -43.39 -3.53 0.435 303 +305 3 -10.28 -44.0 -3.52 0.435 304 +306 3 -7.61 -30.42 -3.89 0.54 282 +307 3 -6.54 -31.79 -4.11 0.54 306 +308 3 -5.85 -33.07 -3.47 0.54 307 +309 3 -6.0 -34.45 -3.59 0.54 308 +310 3 -7.37 -35.22 -3.55 0.54 309 +311 3 -7.21 -37.19 -3.75 0.54 310 +312 3 -6.22 -38.47 -4.87 0.54 311 +313 3 -5.61 -39.97 -5.07 0.54 312 +314 3 -6.21 -41.81 -5.21 0.54 313 +315 3 -5.85 -42.47 -4.77 0.435 314 +316 3 -5.24 -43.37 -4.91 0.435 315 +317 3 -4.62 -45.49 -5.17 0.435 316 +318 3 -4.17 -46.86 -5.35 0.435 317 +319 3 -3.56 -47.46 -5.47 0.435 318 +320 3 -2.5 -47.3 -5.55 0.435 319 +321 3 -1.73 -47.43 -5.72 0.435 320 +322 3 -1.12 -48.96 -5.92 0.435 321 +323 3 -1.58 -50.03 -5.98 0.435 322 +324 3 -1.42 -51.69 -6.15 0.435 323 +325 3 -0.66 -53.05 -6.36 0.435 324 +326 3 0.4 -54.4 -6.66 0.435 325 +327 3 1.17 -55.16 -6.81 0.435 326 +328 3 0.71 -56.23 -6.87 0.435 327 +329 3 0.33 -56.76 -7.79 0.435 328 +330 3 -0.32 -58.22 -8.39 0.435 329 +331 3 -1.38 -59.61 -8.44 0.435 330 +332 3 -1.83 -60.98 -8.53 0.435 331 +333 3 -1.82 -62.5 -8.67 0.435 332 +334 3 -1.82 -64.32 -8.86 0.435 333 +335 3 -1.2 -65.54 -9.03 0.435 334 +336 3 0.0 -66.74 -9.26 0.435 335 +337 3 0.47 -68.12 -9.43 0.435 336 +338 3 0.32 -68.57 -9.46 0.435 337 +339 3 0.01 -69.48 -9.53 0.435 338 +340 3 0.02 -70.4 -9.62 0.435 339 +341 3 0.78 -71.76 -9.82 0.435 340 +342 3 1.7 -72.97 -10.02 0.435 341 +343 3 2.45 -74.0 -10.42 0.435 342 +344 3 1.99 -75.37 -10.59 0.435 343 +345 3 1.98 -75.98 -10.65 0.435 344 +346 3 2.75 -77.03 -10.82 0.435 345 +347 3 3.06 -78.25 -10.97 0.435 346 +348 3 2.76 -78.86 -11.0 0.435 347 +349 3 2.15 -79.78 -11.03 0.435 348 +350 3 2.61 -81.14 -11.21 0.435 349 +351 3 3.98 -81.27 -11.35 0.435 350 +352 3 4.44 -81.73 -11.44 0.435 351 +353 3 4.9 -82.79 -11.58 0.435 352 +354 3 5.05 -84.17 -11.73 0.435 353 +355 3 5.11 -85.41 -13.06 0.435 354 +356 3 4.51 -86.03 -13.07 0.435 355 +357 3 4.05 -87.08 -13.13 0.435 356 +358 3 5.87 -87.99 -13.39 0.435 357 +359 3 6.94 -89.34 -13.62 0.435 358 +360 3 7.26 -89.66 -15.19 0.435 359 +361 3 7.41 -90.71 -15.31 0.435 360 +362 3 7.27 -91.78 -15.4 0.435 361 +363 3 6.96 -92.39 -15.43 0.435 362 +364 3 6.97 -93.61 -15.55 0.435 363 +365 3 7.89 -94.51 -15.72 0.435 364 +366 3 8.9 -95.81 -16.63 0.435 365 +367 3 9.5 -97.01 -16.87 0.435 366 +368 3 9.78 -97.89 -17.28 0.435 367 +369 3 10.05 -99.68 -17.87 0.435 368 +370 3 10.22 -101.04 -18.02 0.435 369 +371 3 11.12 -101.33 -18.2 0.435 370 +372 3 12.8 -101.77 -18.4 0.435 371 +373 3 13.56 -102.83 -18.57 0.435 372 +374 3 13.72 -104.5 -18.75 0.435 373 +375 3 14.47 -105.55 -19.0 0.435 374 +376 3 15.39 -106.77 -19.2 0.435 375 +377 3 16.61 -108.57 -19.48 0.435 376 +378 3 17.38 -110.24 -19.72 0.435 377 +379 3 18.45 -112.52 -20.04 0.435 378 +380 3 19.52 -114.78 -20.36 0.435 379 +381 3 21.03 -116.57 -20.9 0.435 380 +382 3 21.89 -118.02 -21.88 0.435 381 +383 3 22.81 -119.53 -22.12 0.435 382 +384 3 24.02 -120.73 -22.34 0.435 383 +385 3 25.54 -121.63 -22.57 0.435 384 +386 3 27.84 -123.58 -22.97 0.435 385 +387 3 29.06 -125.1 -23.23 0.435 386 +388 3 28.92 -127.99 -23.5 0.435 387 +389 3 29.37 -129.34 -23.68 0.435 388 +390 3 29.07 -130.27 -23.81 0.435 389 +391 3 30.9 -131.15 -24.06 0.435 390 +392 3 31.66 -132.83 -24.3 0.435 391 +393 3 32.58 -134.34 -24.53 0.435 392 +394 3 33.65 -135.38 -24.73 0.435 393 +395 3 33.96 -136.6 -24.88 0.435 394 +396 3 35.33 -138.86 -25.23 0.435 395 +397 3 35.84 -140.11 -25.48 0.435 396 +398 3 36.6 -141.17 -25.65 0.435 397 +399 3 37.52 -142.08 -25.82 0.435 398 +400 3 39.34 -142.96 -26.08 0.435 399 +401 3 40.03 -144.86 -27.15 0.435 400 +402 3 40.8 -146.82 -27.42 0.435 401 +403 3 42.11 -148.41 -28.45 0.435 402 +404 3 42.11 -149.32 -28.54 0.435 403 +405 3 42.07 -149.87 -29.12 0.435 404 +406 3 42.82 -151.24 -29.39 0.435 405 +407 3 44.05 -151.83 -29.57 0.435 406 +408 3 45.05 -152.2 -30.46 0.435 407 +409 3 45.07 -152.83 -31.95 0.435 408 +410 3 44.94 -153.0 -33.4 0.435 409 +411 3 45.09 -154.36 -33.54 0.435 410 +412 3 46.16 -156.02 -33.87 0.435 411 +413 3 47.23 -157.98 -34.17 0.435 412 +414 3 49.06 -160.71 -34.6 0.435 413 +415 3 49.67 -162.22 -34.8 0.435 414 +416 3 50.75 -162.66 -34.94 0.435 415 +417 3 51.97 -163.86 -35.17 0.435 416 +418 3 52.73 -165.53 -35.49 0.435 417 +419 3 53.95 -166.73 -35.79 0.435 418 +420 3 56.12 -167.07 -37.08 0.435 419 +421 3 57.77 -167.77 -37.76 0.435 420 +422 3 59.29 -169.59 -38.07 0.435 421 +423 3 60.21 -170.79 -38.27 0.435 422 +424 3 61.11 -171.07 -38.53 0.435 423 +425 3 61.46 -172.32 -39.9 0.435 424 +426 3 61.73 -172.88 -40.37 0.435 425 +427 3 61.98 -174.03 -41.25 0.435 426 +428 3 62.36 -175.0 -42.21 0.435 427 +429 3 62.89 -176.75 -43.26 0.435 428 +430 3 63.65 -178.11 -43.54 0.435 429 +431 3 64.27 -179.61 -43.75 0.435 430 +432 3 64.73 -180.38 -43.87 0.435 431 +433 3 65.79 -181.11 -44.04 0.435 432 +434 3 66.86 -181.57 -44.18 0.435 433 +435 3 68.38 -180.94 -44.26 0.435 434 +436 3 68.69 -180.64 -44.26 0.435 435 +437 3 68.53 -180.47 -46.04 0.435 436 +438 3 68.0 -179.64 -46.59 0.435 437 +439 3 -7.29 -42.58 -5.25 0.435 314 +440 3 -8.04 -43.04 -5.22 0.435 439 +441 3 -9.1 -45.63 -5.38 0.435 440 +442 3 -7.72 -48.2 -5.76 0.435 441 +443 3 -7.1 -50.64 -6.05 0.435 442 +444 3 -7.7 -51.86 -6.05 0.435 443 +445 3 -9.02 -52.67 -5.62 0.435 444 +446 3 -9.47 -53.15 -5.47 0.435 445 +447 3 -10.07 -53.77 -5.41 0.435 446 +448 3 -9.61 -54.83 -5.55 0.435 447 +449 3 -9.46 -55.59 -5.64 0.435 448 +450 3 -10.07 -56.21 -5.65 0.435 449 +451 3 -11.44 -56.36 -5.54 0.435 450 +452 3 -12.35 -57.28 -5.54 0.435 451 +453 3 -12.49 -57.74 -5.57 0.435 452 +454 3 -12.6 -58.26 -5.08 0.435 453 +455 3 -12.59 -59.47 -5.19 0.435 454 +456 3 -12.13 -61.45 -5.36 0.435 455 +457 3 -12.12 -62.66 -5.48 0.435 456 +458 3 -13.18 -63.13 -5.43 0.435 457 +459 3 -13.79 -64.05 -5.46 0.435 458 +460 3 -14.7 -65.88 -5.56 0.435 459 +461 3 -14.54 -67.86 -5.76 0.435 460 +462 3 -14.05 -69.56 -5.67 0.435 461 +463 3 -13.28 -70.32 -5.73 0.435 462 +464 3 -12.67 -71.52 -5.92 0.435 463 +465 3 -12.66 -72.75 -6.03 0.435 464 +466 3 -12.95 -73.97 -6.05 0.435 465 +467 3 -12.96 -75.19 -6.17 0.435 466 +468 3 -13.05 -75.7 -5.67 0.435 467 +469 3 -13.36 -76.3 -5.71 0.435 468 +470 3 -13.35 -76.61 -5.67 0.435 469 +471 3 -13.8 -77.68 -5.73 0.435 470 +472 3 -4.13 -8.82 -3.75 0.11 8 +473 3 -5.04 -9.14 -3.56 0.11 472 +474 3 -5.17 -9.91 -3.62 0.11 473 +475 3 -5.4 -9.38 -4.23 0.65 474 +476 3 -6.03 -9.39 -4.32 0.65 475 +477 3 -7.57 -9.66 -4.59 0.65 476 +478 3 -9.11 -9.96 -4.69 0.65 477 +479 3 -11.24 -10.59 -4.56 0.65 478 +480 3 -13.07 -11.2 -4.52 0.65 479 +481 3 -14.78 -12.25 -4.85 0.65 480 +482 3 -15.69 -13.17 -4.93 0.54 481 +483 3 -16.79 -14.8 -5.44 0.54 482 +484 3 -17.3 -15.82 -6.03 0.54 483 +485 3 -17.49 -16.53 -6.61 0.54 484 +486 3 -18.03 -16.92 -7.43 0.54 485 +487 3 -18.49 -17.35 -7.58 0.54 486 +488 3 -20.18 -16.91 -7.45 0.54 487 +489 3 -22.02 -17.51 -7.64 0.54 488 +490 3 -23.12 -17.93 -7.96 0.54 489 +491 3 -24.34 -18.55 -7.9 0.54 490 +492 3 -25.12 -18.67 -9.82 0.54 491 +493 3 -25.19 -19.23 -10.54 0.54 492 +494 3 -25.88 -18.84 -11.35 0.54 493 +495 3 -27.71 -17.94 -11.09 0.54 494 +496 3 -28.76 -18.42 -10.97 0.54 495 +497 3 -29.45 -18.34 -11.73 0.54 496 +498 3 -31.51 -17.81 -12.39 0.54 497 +499 3 -33.03 -18.12 -12.35 0.54 498 +500 3 -35.21 -17.8 -12.65 0.54 499 +501 3 -37.66 -17.18 -12.52 0.54 500 +502 3 -40.65 -16.07 -13.04 0.54 501 +503 3 -41.66 -16.27 -14.1 0.54 502 +504 3 -43.19 -16.58 -14.07 0.54 503 +505 3 -46.23 -17.82 -13.91 0.54 504 +506 3 -49.43 -18.6 -13.84 0.54 505 +507 3 -52.13 -18.96 -14.91 0.54 506 +508 3 -54.57 -19.28 -14.71 0.54 507 +509 3 -57.24 -18.15 -15.33 0.54 508 +510 3 -60.0 -18.47 -15.2 0.54 509 +511 3 -60.98 -18.7 -15.96 0.54 510 +512 3 -61.98 -18.92 -16.94 0.54 511 +513 3 -63.16 -19.26 -18.08 0.54 512 +514 3 -63.47 -19.57 -18.16 0.54 513 +515 3 -64.11 -20.15 -18.53 0.54 514 +516 3 -64.76 -20.11 -18.92 0.54 515 +517 3 -65.52 -20.87 -18.92 0.54 516 +518 3 -65.65 -21.05 -20.29 0.54 517 +519 3 -65.8 -21.49 -20.48 0.54 518 +520 3 -66.24 -21.66 -21.89 0.54 519 +521 3 -66.09 -21.81 -21.84 0.54 520 +522 3 -65.97 -21.94 -22.24 0.54 521 +523 3 -66.03 -21.87 -22.91 0.54 522 +524 3 -65.79 -22.1 -23.72 0.54 523 +525 3 -65.66 -22.21 -24.11 0.54 524 +526 3 -65.56 -22.92 -24.72 0.54 525 +527 3 -65.5 -23.29 -25.67 0.54 526 +528 3 -65.7 -23.68 -26.37 0.54 527 +529 3 -65.88 -24.11 -26.69 0.54 528 +530 3 -65.95 -24.34 -27.47 0.54 529 +531 3 -66.0 -24.89 -28.04 0.54 530 +532 3 -66.14 -24.75 -29.53 0.54 531 +533 3 -66.17 -25.01 -30.08 0.54 532 +534 3 -66.41 -25.36 -31.07 0.54 533 +535 3 -66.47 -25.93 -31.66 0.54 534 +536 3 -67.13 -26.47 -32.33 0.54 535 +537 3 -67.32 -26.9 -32.73 0.54 536 +538 3 -67.71 -27.11 -33.62 0.54 537 +539 3 -68.11 -27.31 -34.74 0.54 538 +540 3 -68.29 -27.74 -35.07 0.54 539 +541 3 -68.48 -28.16 -35.55 0.54 540 +542 3 -68.82 -29.04 -35.97 0.54 541 +543 3 -65.85 -20.54 -20.83 0.54 517 +544 3 -66.61 -20.69 -20.77 0.54 543 +545 3 -68.01 -20.83 -20.97 0.54 544 +546 3 -69.3 -20.45 -21.72 0.54 545 +547 3 -71.02 -20.27 -21.99 0.54 546 +548 3 -71.91 -20.3 -23.28 0.54 547 +549 3 -73.47 -20.56 -23.68 0.54 548 +550 3 -75.26 -20.3 -24.77 0.54 549 +551 3 -77.1 -20.02 -24.66 0.54 550 +552 3 -78.96 -19.68 -24.82 0.54 551 +553 3 -80.73 -19.46 -25.63 0.54 552 +554 3 -82.71 -20.23 -25.59 0.54 553 +555 3 -84.53 -20.25 -25.42 0.54 554 +556 3 -86.26 -19.76 -25.75 0.54 555 +557 3 -87.79 -18.56 -25.49 0.54 556 +558 3 -89.16 -17.5 -25.26 0.54 557 +559 3 -90.21 -17.06 -25.04 0.54 558 +560 3 -92.19 -16.62 -24.81 0.54 559 +561 3 -93.6 -16.14 -25.02 0.54 560 +562 3 -94.25 -15.81 -25.3 0.54 561 +563 3 -96.38 -14.92 -25.02 0.54 562 +564 3 -24.5 -18.09 -7.92 0.54 491 +565 3 -26.66 -18.39 -8.06 0.54 564 +566 3 -28.03 -19.16 -8.08 0.54 565 +567 3 -29.48 -19.84 -8.99 0.54 566 +568 3 -29.94 -20.9 -9.13 0.54 567 +569 3 -30.25 -21.2 -9.13 0.54 568 +570 3 -31.18 -21.5 -7.63 0.54 569 +571 3 -32.1 -21.52 -7.55 0.54 570 +572 3 -34.69 -21.09 -7.28 0.54 571 +573 3 -38.04 -20.2 -6.96 0.54 572 +574 3 -40.66 -19.74 -6.9 0.54 573 +575 3 -41.28 -20.34 -7.05 0.54 574 +576 3 -43.0 -20.75 -7.53 0.54 575 +577 3 -43.16 -20.9 -7.68 0.54 576 +578 3 -43.07 -21.29 -6.75 0.54 577 +579 3 -43.92 -21.67 -5.95 0.54 578 +580 3 -45.55 -22.49 -5.42 0.54 579 +581 3 -47.53 -23.89 -5.38 0.54 580 +582 3 -49.35 -23.9 -5.14 0.54 581 +583 3 -52.08 -25.15 -5.0 0.54 582 +584 3 -53.9 -26.08 -4.92 0.54 583 +585 3 -55.41 -27.31 -4.77 0.54 584 +586 3 -57.2 -27.98 -4.36 0.54 585 +587 3 -59.45 -28.48 -3.9 0.54 586 +588 3 -61.09 -28.99 -3.41 0.54 587 +589 3 -63.5 -29.65 -2.96 0.54 588 +590 3 -65.78 -29.51 -2.73 0.54 589 +591 3 -69.56 -29.72 -2.18 0.54 590 +592 3 -71.53 -29.6 -1.84 0.54 591 +593 3 -73.15 -29.53 -0.99 0.54 592 +594 3 -73.43 -30.78 -0.87 0.54 593 +595 3 -74.0 -31.43 -0.5 0.54 594 +596 3 -76.57 -30.69 -0.12 0.54 595 +597 3 -79.45 -31.49 0.14 0.54 596 +598 3 -81.74 -31.97 0.31 0.54 597 +599 3 -84.31 -32.46 0.65 0.54 598 +600 3 -85.67 -33.25 0.84 0.54 599 +601 3 -87.01 -33.45 1.25 0.54 600 +602 3 -89.27 -33.94 1.64 0.54 601 +603 3 -90.76 -34.9 1.98 0.54 602 +604 3 -92.58 -36.14 2.12 0.54 603 +605 3 -93.74 -36.8 2.6 0.54 604 +606 3 -96.02 -37.9 2.78 0.54 605 +607 3 -96.78 -38.67 2.78 0.54 606 +608 3 -30.41 -22.58 -9.26 0.54 569 +609 3 -31.31 -24.71 -9.38 0.54 608 +610 3 -32.21 -26.85 -9.5 0.54 609 +611 3 -32.21 -28.06 -9.63 0.54 610 +612 3 -32.23 -28.94 -10.01 0.54 611 +613 3 -32.43 -29.97 -10.55 0.54 612 +614 3 -33.03 -31.18 -10.68 0.54 613 +615 3 -33.72 -32.01 -11.69 0.54 614 +616 3 -34.8 -32.47 -11.71 0.54 615 +617 3 -35.85 -33.55 -11.71 0.54 616 +618 3 -36.47 -34.77 -11.77 0.54 617 +619 3 -36.15 -36.29 -11.95 0.54 618 +620 3 -36.42 -36.55 -11.96 0.54 619 +621 3 -36.57 -37.32 -10.35 0.65 620 +622 3 -36.91 -37.59 -10.73 0.65 621 +623 3 -37.01 -37.49 -11.77 0.65 622 +624 3 -37.15 -37.96 -10.06 0.65 623 +625 3 -37.58 -38.45 -9.76 0.65 624 +626 3 -38.43 -38.82 -9.11 0.65 625 +627 3 -38.88 -39.29 -9.04 0.65 626 +628 3 -39.78 -39.01 -8.85 0.65 627 +629 3 -40.55 -38.86 -8.77 0.54 628 +630 3 -41.77 -38.87 -8.65 0.54 629 +631 3 -42.51 -39.64 -8.51 0.54 630 +632 3 -43.42 -40.58 -8.45 0.54 631 +633 3 -43.39 -42.11 -8.45 0.54 632 +634 3 -43.69 -42.74 -8.4 0.54 633 +635 3 -44.43 -43.52 -8.19 0.54 634 +636 3 -45.94 -43.85 -8.0 0.54 635 +637 3 -47.62 -43.72 -7.76 0.54 636 +638 3 -48.63 -44.23 -7.27 0.54 637 +639 3 -49.35 -45.04 -6.76 0.54 638 +640 3 -50.21 -45.4 -6.26 0.54 639 +641 3 -50.79 -46.05 -5.96 0.54 640 +642 3 -51.85 -47.74 -5.94 0.54 641 +643 3 -53.06 -48.36 -5.9 0.54 642 +644 3 -54.11 -49.45 -5.69 0.54 643 +645 3 -55.62 -50.38 -5.63 0.54 644 +646 3 -56.5 -51.33 -5.34 0.54 645 +647 3 -57.4 -51.64 -5.21 0.54 646 +648 3 -59.23 -50.75 -4.95 0.54 647 +649 3 -59.97 -51.54 -4.75 0.54 648 +650 3 -61.03 -52.62 -4.67 0.54 649 +651 3 -62.84 -53.27 -4.34 0.54 650 +652 3 -63.74 -54.5 -4.3 0.54 651 +653 3 -64.65 -55.42 -4.31 0.54 652 +654 3 -65.71 -55.88 -4.26 0.54 653 +655 3 -67.38 -55.75 -4.09 0.54 654 +656 3 -69.97 -56.54 -3.92 0.54 655 +657 3 -71.02 -58.52 -4.02 0.54 656 +658 3 -71.77 -59.29 -3.96 0.54 657 +659 3 -71.92 -60.98 -4.11 0.54 658 +660 3 -72.07 -62.04 -4.19 0.54 659 +661 3 -72.51 -62.82 -4.0 0.54 660 +662 3 -74.79 -62.7 -3.7 0.54 661 +663 3 -76.29 -63.03 -3.52 0.54 662 +664 3 -76.89 -63.65 -3.38 0.54 663 +665 3 -77.75 -64.63 -2.87 0.54 664 +666 3 -78.35 -65.25 -2.79 0.54 665 +667 3 -79.26 -66.17 -2.79 0.54 666 +668 3 -80.78 -66.49 -2.61 0.54 667 +669 3 -81.84 -67.57 -2.63 0.54 668 +670 3 -82.9 -68.64 -2.63 0.54 669 +671 3 -85.03 -68.97 -2.46 0.54 670 +672 3 -86.1 -70.04 -2.47 0.54 671 +673 3 -87.15 -70.52 -2.34 0.54 672 +674 3 -87.87 -71.62 -2.08 0.54 673 +675 3 -88.17 -71.94 -1.93 0.54 674 +676 3 -88.62 -72.4 -1.93 0.54 675 +677 3 -89.21 -73.02 -1.87 0.54 676 +678 3 -90.59 -73.18 -1.75 0.54 677 +679 3 -92.27 -73.35 -1.62 0.54 678 +680 3 -93.03 -74.13 -1.63 0.54 679 +681 3 -93.63 -74.73 -1.63 0.54 680 +682 3 -94.37 -75.52 -1.49 0.54 681 +683 3 -94.98 -76.74 -1.47 0.54 682 +684 3 -95.28 -77.66 -1.53 0.54 683 +685 3 -95.57 -78.28 -1.49 0.54 684 +686 3 -96.18 -79.2 -1.53 0.54 685 +687 3 -96.63 -79.96 -1.56 0.54 686 +688 3 -98.31 -79.81 -1.39 0.54 687 +689 3 -99.52 -79.83 -1.28 0.54 688 +690 3 -100.5 -80.4 -0.26 0.65 689 +691 3 -101.37 -81.06 0.2 0.65 690 +692 3 -101.93 -81.71 0.64 0.65 691 +693 3 -104.5 -82.22 1.12 0.65 692 +694 3 -107.38 -82.71 1.34 0.65 693 +695 3 -108.58 -83.33 1.48 0.65 694 +696 3 -110.26 -84.42 1.53 0.435 695 +697 3 -112.24 -84.59 1.69 0.435 696 +698 3 -113.74 -84.92 1.94 0.435 697 +699 3 -115.1 -86.3 2.09 0.435 698 +700 3 -115.4 -86.62 2.09 0.65 699 +701 3 -116.47 -87.09 2.14 0.65 700 +702 3 -117.67 -88.32 2.2 0.65 701 +703 3 -118.11 -89.99 2.08 0.65 702 +704 3 -117.51 -90.91 1.93 0.65 703 +705 3 -116.44 -91.96 1.81 0.65 704 +706 3 -116.38 -93.84 2.08 0.65 705 +707 3 -116.38 -94.75 2.06 0.65 706 +708 3 -116.66 -95.39 2.17 0.65 707 +709 3 -116.82 -95.84 2.22 0.65 708 +710 3 -117.38 -95.88 2.65 0.65 709 +711 3 -117.21 -97.57 2.55 0.65 710 +712 3 -117.31 -98.69 3.06 0.65 711 +713 3 -117.87 -99.35 3.56 0.65 712 +714 3 -118.31 -99.82 3.64 0.65 713 +715 3 -119.48 -99.89 4.34 0.65 714 +716 3 -119.79 -100.19 4.34 0.65 715 +717 3 -120.37 -100.84 4.64 0.65 716 +718 3 -121.26 -101.77 4.78 0.65 717 +719 3 -121.57 -102.09 4.78 0.65 718 +720 3 -122.02 -102.54 4.78 0.65 719 +721 3 -123.54 -102.26 5.02 0.65 720 +722 3 -124.3 -102.42 5.07 0.65 721 +723 3 -124.59 -102.74 5.14 0.65 722 +724 3 -124.74 -103.2 5.11 0.65 723 +725 3 -36.35 -37.31 -10.9 0.54 620 +726 3 -35.82 -37.83 -10.25 0.54 725 +727 3 -35.54 -38.11 -10.45 0.54 726 +728 3 -35.25 -38.41 -9.06 0.54 727 +729 3 -34.88 -38.78 -8.38 0.54 728 +730 3 -34.45 -39.82 -7.17 0.54 729 +731 3 -34.43 -40.75 -7.11 0.54 730 +732 3 -34.99 -42.63 -6.71 0.54 731 +733 3 -35.37 -44.07 -6.05 0.54 732 +734 3 -35.66 -44.7 -5.94 0.54 733 +735 3 -35.61 -45.35 -5.55 0.54 734 +736 3 -35.72 -46.45 -5.27 0.54 735 +737 3 -36.02 -47.07 -5.22 0.54 736 +738 3 -36.42 -47.6 -4.63 0.54 737 +739 3 -36.87 -48.68 -4.55 0.54 738 +740 3 -37.46 -49.3 -4.4 0.54 739 +741 3 -37.74 -49.94 -4.22 0.54 740 +742 3 -38.08 -51.13 -3.09 0.54 741 +743 3 -37.89 -52.21 -2.84 0.54 742 +744 3 -38.14 -53.2 -2.31 0.54 743 +745 3 -38.38 -54.17 -1.7 0.54 744 +746 3 -38.36 -55.11 -1.64 0.54 745 +747 3 -38.5 -55.57 -1.52 0.54 746 +748 3 -38.49 -55.89 -1.4 0.54 747 +749 3 -38.75 -56.54 -1.06 0.54 748 +750 3 -39.46 -57.36 -0.54 0.54 749 +751 3 -40.96 -57.7 -0.14 0.54 750 +752 3 -42.01 -57.87 0.0 0.54 751 +753 3 -42.45 -58.35 0.23 0.54 752 +754 3 -43.05 -58.98 0.29 0.54 753 +755 3 6.7 -3.75 -5.33 0.865 1 +756 3 7.16 -4.21 -5.41 0.865 755 +757 3 8.22 -4.04 -5.49 0.865 756 +758 3 9.44 -4.63 -5.66 0.865 757 +759 3 10.51 -5.08 -5.81 0.865 758 +760 3 11.58 -6.45 -6.04 0.865 759 +761 3 12.35 -7.2 -6.18 0.54 760 +762 3 14.62 -7.02 -6.37 0.54 761 +763 3 16.16 -7.01 -6.52 0.54 762 +764 3 16.73 -7.29 -5.23 0.54 763 +765 3 17.34 -7.28 -5.29 0.54 764 +766 3 18.42 -6.85 -3.46 0.54 765 +767 3 19.63 -5.01 -3.39 0.54 766 +768 3 20.89 -4.13 -4.55 0.54 767 +769 3 22.56 -3.66 -4.66 0.54 768 +770 3 23.48 -3.35 -4.72 0.54 769 +771 3 24.39 -2.42 -4.71 0.54 770 +772 3 25.0 -1.82 -4.71 0.54 771 +773 3 27.48 -1.23 -6.0 0.54 772 +774 3 29.0 -1.51 -6.17 0.54 773 +775 3 29.91 -0.59 -6.17 0.54 774 +776 3 31.13 0.63 -6.16 0.54 775 +777 3 32.73 1.79 -6.95 0.54 776 +778 3 34.85 3.33 -7.0 0.54 777 +779 3 36.38 4.25 -7.05 0.54 778 +780 3 39.25 5.95 -7.15 0.54 779 +781 3 41.7 6.88 -7.28 0.54 780 +782 3 44.17 7.47 -8.52 0.54 781 +783 3 45.54 7.95 -8.75 0.54 782 +784 3 46.67 8.34 -7.98 0.54 783 +785 3 48.22 8.32 -7.82 0.54 784 +786 3 49.47 8.61 -7.53 0.54 785 +787 3 50.45 8.24 -6.98 0.54 786 +788 3 52.97 7.87 -6.34 0.54 787 +789 3 54.85 8.43 -5.78 0.54 788 +790 3 56.74 8.68 -5.18 0.54 789 +791 3 58.14 9.43 -5.0 0.54 790 +792 3 59.39 9.7 -4.63 0.54 791 +793 3 60.79 10.44 -4.32 0.54 792 +794 3 62.66 10.41 -4.04 0.54 793 +795 3 65.9 10.85 -3.76 0.54 794 +796 3 18.25 -7.88 -5.43 0.54 765 +797 3 19.2 -8.81 -5.31 0.54 796 +798 3 19.5 -10.04 -5.37 0.54 797 +799 3 19.68 -10.81 -5.32 0.54 798 +800 3 21.72 -13.13 -5.06 0.54 799 +801 3 23.56 -14.94 -5.4 0.54 800 +802 3 24.81 -16.17 -5.41 0.54 801 +803 3 26.03 -18.3 -5.59 0.54 802 +804 3 26.38 -18.96 -5.23 0.54 803 +805 3 26.56 -19.43 -5.06 0.54 804 +806 3 26.58 -20.67 -5.03 0.54 805 +807 3 26.88 -21.57 -5.14 0.54 806 +808 3 27.2 -22.79 -5.22 0.54 807 +809 3 27.99 -23.57 -5.13 0.54 808 +810 3 29.55 -24.49 -4.99 0.54 809 +811 3 31.08 -24.2 -5.03 0.54 810 +812 3 33.23 -23.6 -4.79 0.54 811 +813 3 34.92 -24.35 -4.94 0.54 812 +814 3 36.3 -25.12 -4.99 0.54 813 +815 3 37.35 -25.55 -5.28 0.54 814 +816 3 38.39 -25.36 -5.66 0.54 815 +817 3 39.69 -25.1 -6.6 0.54 816 +818 3 41.21 -25.7 -6.8 0.54 817 +819 3 41.11 -26.5 -8.07 0.435 818 +820 3 41.28 -26.98 -7.9 0.435 819 +821 3 41.37 -27.36 -8.7 0.435 820 +822 3 41.43 -27.72 -9.65 0.435 821 +823 3 41.51 -28.11 -10.53 0.435 822 +824 3 41.7 -28.58 -11.96 0.435 823 +825 3 43.52 -30.38 -12.38 0.435 824 +826 3 44.59 -31.74 -12.61 0.435 825 +827 3 45.81 -34.47 -13.0 0.435 826 +828 3 48.56 -36.26 -13.42 0.435 827 +829 3 49.79 -38.08 -13.71 0.435 828 +830 3 50.69 -39.29 -13.91 0.435 829 +831 3 50.1 -40.51 -13.97 0.435 830 +832 3 47.97 -41.44 -13.87 0.435 831 +833 3 47.06 -42.66 -13.91 0.435 832 +834 3 47.67 -44.48 -14.14 0.435 833 +835 3 49.35 -44.92 -14.33 0.435 834 +836 3 50.37 -45.02 -14.96 0.435 835 +837 3 50.05 -46.22 -15.28 0.435 836 +838 3 49.9 -47.27 -15.45 0.435 837 +839 3 49.75 -49.25 -15.62 0.435 838 +840 3 49.75 -50.47 -15.74 0.435 839 +841 3 49.59 -51.52 -15.98 0.435 840 +842 3 49.53 -52.98 -16.73 0.435 841 +843 3 49.98 -54.33 -17.05 0.435 842 +844 3 50.87 -55.81 -17.58 0.435 843 +845 3 51.79 -57.63 -17.85 0.435 844 +846 3 52.1 -59.75 -18.15 0.435 845 +847 3 52.26 -62.03 -18.38 0.435 846 +848 3 52.85 -62.92 -18.67 0.435 847 +849 3 53.77 -63.52 -18.91 0.435 848 +850 3 54.58 -65.83 -20.41 0.435 849 +851 3 54.57 -67.64 -20.66 0.435 850 +852 3 54.7 -69.58 -21.25 0.435 851 +853 3 54.93 -71.32 -22.26 0.435 852 +854 3 56.08 -72.45 -23.31 0.435 853 +855 3 57.4 -74.07 -24.12 0.435 854 +856 3 58.83 -75.75 -25.63 0.435 855 +857 3 61.87 -78.15 -26.21 0.435 856 +858 3 63.91 -79.24 -27.57 0.435 857 +859 3 66.44 -81.15 -28.52 0.435 858 +860 3 67.97 -82.65 -28.87 0.435 859 +861 3 68.9 -84.76 -29.17 0.435 860 +862 3 70.27 -86.12 -29.43 0.435 861 +863 3 72.7 -86.41 -29.68 0.435 862 +864 3 74.37 -87.44 -30.09 0.435 863 +865 3 76.32 -89.68 -30.79 0.435 864 +866 3 77.64 -91.58 -31.71 0.435 865 +867 3 77.81 -92.34 -33.31 0.435 866 +868 3 78.38 -93.21 -33.98 0.435 867 +869 3 79.18 -94.29 -35.44 0.435 868 +870 3 80.02 -95.42 -36.38 0.435 869 +871 3 79.7 -97.22 -36.84 0.435 870 +872 3 79.68 -100.23 -37.49 0.435 871 +873 3 81.27 -104.22 -39.09 0.435 872 +874 3 82.94 -106.47 -39.54 0.435 873 +875 3 84.3 -108.12 -39.98 0.435 874 +876 3 84.22 -110.15 -41.09 0.435 875 +877 3 83.92 -111.99 -41.3 0.435 876 +878 3 83.01 -114.72 -41.57 0.435 877 +879 3 83.16 -115.79 -41.69 0.435 878 +880 3 84.18 -117.08 -42.58 0.435 879 +881 3 85.78 -118.66 -43.64 0.435 880 +882 3 86.0 -120.08 -44.85 0.435 881 +883 3 86.26 -120.62 -45.54 0.435 882 +884 3 87.14 -121.81 -45.96 0.435 883 +885 3 88.82 -122.26 -46.16 0.435 884 +886 3 89.68 -124.0 -47.16 0.435 885 +887 3 89.84 -126.28 -47.4 0.435 886 +888 3 91.66 -128.08 -47.83 0.435 887 +889 3 93.26 -128.44 -48.84 0.435 888 +890 3 94.76 -128.1 -49.18 0.435 889 +891 3 95.21 -128.56 -49.26 0.435 890 +892 3 41.61 -25.79 -7.52 0.54 818 +893 3 44.26 -26.59 -8.82 0.54 892 +894 3 46.54 -26.4 -9.01 0.54 893 +895 3 48.66 -26.67 -9.47 0.54 894 +896 3 50.33 -27.72 -9.72 0.54 895 +897 3 52.09 -28.24 -10.61 0.54 896 +898 3 54.16 -29.07 -11.64 0.54 897 +899 3 55.53 -29.2 -11.78 0.54 898 +900 3 56.54 -30.2 -10.99 0.54 899 +901 3 58.49 -30.93 -9.81 0.54 900 +902 3 60.79 -32.89 -10.21 0.54 901 +903 3 63.02 -34.5 -9.37 0.54 902 +904 3 65.02 -35.86 -9.6 0.54 903 +905 3 66.69 -37.83 -9.95 0.54 904 +906 3 67.76 -39.18 -10.18 0.54 905 +907 3 69.76 -41.14 -10.55 0.54 906 +908 3 71.64 -42.09 -10.14 0.54 907 +909 3 72.86 -43.0 -10.35 0.54 908 +910 3 73.48 -43.9 -10.49 0.54 909 +911 4 -2.36 9.28 -0.57 4.11 1 +912 4 -2.99 13.54 -0.1 3.14 911 +913 4 -3.77 16.72 0.27 2.49 912 +914 4 -4.07 19.45 0.57 1.73 913 +915 4 -4.39 21.59 0.8 1.515 914 +916 4 -5.0 23.4 1.12 1.405 915 +917 4 -5.16 25.07 1.3 1.405 916 +918 4 -5.16 26.28 1.42 1.405 917 +919 4 -5.46 27.8 1.66 1.405 918 +920 4 -5.05 29.49 3.08 1.73 919 +921 4 -4.75 31.94 3.29 1.73 920 +922 4 -5.06 34.06 3.52 1.73 921 +923 4 -5.52 36.34 3.79 1.73 922 +924 4 -5.87 38.81 3.61 1.405 923 +925 4 -5.8 40.87 2.97 1.405 924 +926 4 -5.82 42.7 3.08 1.19 925 +927 4 -5.37 44.38 3.2 1.19 926 +928 4 -5.22 46.05 3.35 1.19 927 +929 4 -4.31 47.89 3.45 1.19 928 +930 4 -3.71 50.02 3.6 1.19 929 +931 4 -2.65 51.7 3.67 1.19 930 +932 4 -1.75 54.45 3.84 1.19 931 +933 4 -1.45 55.98 3.97 1.19 932 +934 4 -1.43 57.49 2.68 1.19 933 +935 4 -1.34 58.92 3.72 1.19 934 +936 4 -1.66 60.43 3.97 1.19 935 +937 4 -1.36 61.35 3.97 1.19 936 +938 4 -2.03 62.01 3.48 1.19 937 +939 4 -2.42 63.01 2.71 1.19 938 +940 4 -2.68 62.9 3.33 0.54 939 +941 4 -3.28 62.89 3.38 0.54 940 +942 4 -3.26 62.88 3.53 0.54 941 +943 4 -3.2 62.81 4.27 0.54 942 +944 4 -3.18 62.79 4.49 0.54 943 +945 4 -3.56 62.84 5.44 0.54 944 +946 4 -3.5 62.49 6.01 0.54 945 +947 4 -3.44 62.43 6.67 0.54 946 +948 4 -3.33 62.31 7.86 0.54 947 +949 4 -3.13 62.11 8.28 0.54 948 +950 4 -3.12 61.49 8.37 0.54 949 +951 4 -3.11 60.57 8.28 0.54 950 +952 4 -3.24 59.47 8.56 0.54 951 +953 4 -3.23 58.56 8.47 0.54 952 +954 4 -3.22 57.95 8.48 0.54 953 +955 4 -3.81 57.02 8.53 0.54 954 +956 4 -4.11 56.71 8.6 0.54 955 +957 4 -5.02 57.0 8.79 0.54 956 +958 4 -5.55 57.5 9.87 0.54 957 +959 4 -6.0 58.57 10.01 0.65 958 +960 4 -6.76 59.01 10.12 0.65 959 +961 4 -7.3 58.93 10.92 0.65 960 +962 4 -8.11 58.83 10.45 0.65 961 +963 4 -8.11 60.05 8.99 0.65 962 +964 4 -7.92 60.48 7.8 0.65 963 +965 4 -9.09 61.64 6.89 0.65 964 +966 4 -9.86 62.4 6.89 0.65 965 +967 4 -11.04 63.28 5.79 0.65 966 +968 4 -12.6 63.9 5.7 0.65 967 +969 4 -14.08 64.45 4.69 0.65 968 +970 4 -14.86 65.22 4.75 0.65 969 +971 4 -16.53 66.26 5.01 0.65 970 +972 4 -17.44 67.16 5.18 0.65 971 +973 4 -17.75 67.47 5.24 0.65 972 +974 4 -18.66 67.76 5.35 0.65 973 +975 4 -19.88 68.37 5.52 0.65 974 +976 4 -21.15 69.63 5.15 0.65 975 +977 4 -21.96 71.62 5.12 0.65 976 +978 4 -22.38 72.05 3.84 0.65 977 +979 4 -22.04 73.24 2.8 0.65 978 +980 4 -22.69 73.88 2.38 0.435 979 +981 4 -23.76 74.94 2.66 0.435 980 +982 4 -23.91 76.0 2.78 0.54 981 +983 4 -24.22 77.83 2.98 0.54 982 +984 4 -24.36 79.48 3.24 0.54 983 +985 4 -24.22 80.86 3.28 0.54 984 +986 4 -24.13 81.98 2.78 0.54 985 +987 4 -24.25 83.31 1.79 0.54 986 +988 4 -23.93 84.83 0.32 0.54 987 +989 4 -24.03 85.56 -0.72 0.54 988 +990 4 -23.99 87.04 -1.8 0.54 989 +991 4 -24.53 88.18 -2.39 0.54 990 +992 4 -25.3 89.55 -4.0 0.54 991 +993 4 -25.85 91.31 -4.69 0.54 992 +994 4 -26.54 93.82 -5.29 0.54 993 +995 4 -26.94 96.94 -5.77 0.54 994 +996 4 -26.5 99.86 -5.68 0.54 995 +997 4 -25.4 101.2 -6.86 0.54 996 +998 4 -24.5 102.74 -6.87 0.54 997 +999 4 -24.36 105.01 -6.66 0.54 998 +1000 4 -23.75 105.63 -6.73 0.54 999 +1001 4 -22.53 105.95 -6.81 0.54 1000 +1002 4 -21.96 106.6 -7.18 0.54 1001 +1003 4 -21.07 107.54 -7.4 0.54 1002 +1004 4 -20.88 107.97 -8.66 0.54 1003 +1005 4 -20.98 108.68 -9.57 0.54 1004 +1006 4 -21.55 110.15 -10.59 0.54 1005 +1007 4 -22.0 110.61 -12.0 0.54 1006 +1008 4 -22.54 110.53 -12.87 0.54 1007 +1009 4 -23.53 110.0 -13.74 0.54 1008 +1010 4 -24.05 109.62 -14.48 0.54 1009 +1011 4 -24.55 108.9 -15.04 0.54 1010 +1012 4 -24.91 108.66 -15.7 0.54 1011 +1013 4 -25.63 108.16 -16.9 0.54 1012 +1014 4 -27.38 107.78 -17.6 0.54 1013 +1015 4 -29.09 107.35 -18.02 0.54 1014 +1016 4 -30.38 106.79 -18.63 0.54 1015 +1017 4 -31.99 105.66 -19.65 0.54 1016 +1018 4 -33.92 105.15 -20.66 0.54 1017 +1019 4 -35.31 105.02 -20.85 0.54 1018 +1020 4 -36.26 104.14 -21.23 0.54 1019 +1021 4 -37.38 103.73 -21.84 0.54 1020 +1022 4 -38.82 103.03 -22.53 0.54 1021 +1023 4 -39.89 102.56 -22.55 0.54 1022 +1024 4 -21.12 73.85 2.77 0.435 979 +1025 4 -20.74 75.31 2.04 0.435 1024 +1026 4 -21.43 75.38 1.21 0.54 1025 +1027 4 -22.5 76.74 1.44 0.54 1026 +1028 4 -24.34 77.95 1.72 0.54 1027 +1029 4 -25.85 78.23 1.89 0.54 1028 +1030 4 -27.46 79.21 1.31 0.54 1029 +1031 4 -29.09 80.52 0.37 0.54 1030 +1032 4 -30.73 81.25 -0.68 0.54 1031 +1033 4 -31.11 81.93 -1.33 0.54 1032 +1034 4 -32.04 82.54 -1.34 0.54 1033 +1035 4 -32.62 83.11 -2.51 0.54 1034 +1036 4 -33.03 83.23 -3.67 0.54 1035 +1037 4 -33.66 83.85 -3.79 0.54 1036 +1038 4 -34.42 84.31 -5.41 0.54 1037 +1039 4 -34.98 84.86 -4.7 0.54 1038 +1040 4 -35.5 85.38 -5.28 0.54 1039 +1041 4 -36.26 86.44 -6.7 0.54 1040 +1042 4 -36.87 87.35 -6.55 0.54 1041 +1043 4 -38.48 88.04 -7.4 0.54 1042 +1044 4 -40.59 88.91 -8.48 0.54 1043 +1045 4 -42.74 89.84 -8.4 0.54 1044 +1046 4 -44.31 90.47 -8.73 0.54 1045 +1047 4 -45.65 92.4 -9.63 0.54 1046 +1048 4 -46.08 93.44 -10.85 0.54 1047 +1049 4 -2.27 64.69 2.78 1.19 939 +1050 4 -1.98 65.92 2.81 1.19 1049 +1051 4 -1.53 66.99 2.87 1.19 1050 +1052 4 -0.62 69.11 3.05 1.19 1051 +1053 4 -0.92 70.01 3.25 1.19 1052 +1054 4 -1.19 71.49 3.88 1.19 1053 +1055 4 -2.26 72.5 4.08 1.19 1054 +1056 4 -1.69 72.84 5.34 0.54 1055 +1057 4 -1.53 73.28 5.59 0.54 1056 +1058 4 -1.03 73.39 5.93 0.54 1057 +1059 4 -0.89 74.16 5.91 0.54 1058 +1060 4 -0.13 75.84 6.01 0.54 1059 +1061 4 0.46 77.68 6.13 0.54 1060 +1062 4 0.91 78.75 6.19 0.54 1061 +1063 4 0.02 79.93 6.69 0.54 1062 +1064 4 -0.87 80.82 6.94 0.54 1063 +1065 4 -1.18 83.25 7.21 0.54 1064 +1066 4 -1.14 84.41 7.93 0.54 1065 +1067 4 -1.51 85.09 7.27 0.54 1066 +1068 4 -1.52 85.99 7.43 0.54 1067 +1069 4 -1.73 86.82 6.85 0.54 1068 +1070 4 -1.93 87.64 6.35 0.54 1069 +1071 4 -2.29 88.0 5.81 0.54 1070 +1072 4 -2.37 88.68 5.06 0.54 1071 +1073 4 -2.92 89.83 4.23 0.54 1072 +1074 4 -2.86 90.69 3.33 0.54 1073 +1075 4 -3.25 91.68 2.62 0.54 1074 +1076 4 -3.31 92.36 2.02 0.54 1075 +1077 4 -4.27 94.22 1.77 0.54 1076 +1078 4 -4.28 95.44 1.89 0.54 1077 +1079 4 -4.44 96.5 1.92 0.54 1078 +1080 4 -4.95 97.32 1.45 0.54 1079 +1081 4 -4.83 98.72 1.35 0.54 1080 +1082 4 -5.2 99.99 0.83 0.54 1081 +1083 4 -5.57 101.57 0.34 0.54 1082 +1084 4 -5.51 102.44 -0.64 0.54 1083 +1085 4 -6.15 102.16 -2.57 0.54 1084 +1086 4 -6.45 102.17 -2.54 0.54 1085 +1087 4 -7.51 102.61 -2.4 0.54 1086 +1088 4 -7.83 103.82 -2.26 0.54 1087 +1089 4 -7.82 104.73 -2.09 0.54 1088 +1090 4 -7.83 105.65 -1.99 0.54 1089 +1091 4 -8.17 106.6 -2.4 0.54 1090 +1092 4 -8.11 107.45 -3.15 0.54 1091 +1093 4 -8.11 108.07 -4.84 0.54 1092 +1094 4 -8.42 108.38 -6.45 0.54 1093 +1095 4 -9.37 109.01 -6.67 0.54 1094 +1096 4 -9.37 110.83 -6.43 0.54 1095 +1097 4 -9.28 112.27 -6.96 0.54 1096 +1098 4 -9.84 112.83 -7.99 0.54 1097 +1099 4 -10.31 113.3 -8.13 0.54 1098 +1100 4 -11.46 115.96 -8.6 0.54 1099 +1101 4 -11.75 118.36 -9.69 0.54 1100 +1102 4 -11.68 120.11 -10.37 0.54 1101 +1103 4 -11.17 122.05 -11.21 0.54 1102 +1104 4 -12.02 123.2 -12.0 0.54 1103 +1105 4 -13.35 125.12 -12.89 0.54 1104 +1106 4 -12.85 126.46 -13.87 0.54 1105 +1107 4 -12.1 127.24 -14.02 0.54 1106 +1108 4 -10.88 129.37 -13.91 0.54 1107 +1109 4 -10.66 131.88 -14.45 0.54 1108 +1110 4 -10.24 134.8 -14.5 0.54 1109 +1111 4 -9.71 136.09 -15.19 0.54 1110 +1112 4 -9.21 137.74 -16.28 0.54 1111 +1113 4 -8.85 139.52 -17.12 0.54 1112 +1114 4 -8.37 140.88 -18.47 0.54 1113 +1115 4 -8.15 142.17 -19.2 0.54 1114 +1116 4 -7.47 143.03 -20.17 0.54 1115 +1117 4 -6.98 143.76 -21.34 0.54 1116 +1118 4 -6.3 144.62 -22.15 0.54 1117 +1119 4 -5.65 145.49 -23.34 0.54 1118 +1120 4 -4.55 146.83 -24.52 0.54 1119 +1121 4 -4.03 147.56 -25.56 0.54 1120 +1122 4 -3.49 148.24 -26.29 0.54 1121 +1123 4 -2.86 149.13 -27.56 0.54 1122 +1124 4 -1.65 150.97 -27.55 0.54 1123 +1125 4 -1.2 152.35 -29.06 0.54 1124 +1126 4 0.46 154.05 -29.11 0.54 1125 +1127 4 -2.56 72.54 4.11 1.19 1055 +1128 4 -4.2 74.16 4.79 1.08 1127 +1129 4 -5.12 75.06 5.04 1.08 1128 +1130 4 -5.32 75.9 5.51 0.54 1129 +1131 4 -4.55 76.67 5.52 0.54 1130 +1132 4 -2.73 76.99 5.39 0.54 1131 +1133 4 0.29 77.02 5.11 0.54 1132 +1134 4 2.09 76.76 4.54 0.54 1133 +1135 4 4.1 76.3 4.61 0.54 1134 +1136 4 6.44 75.81 4.88 0.54 1135 +1137 4 9.03 74.46 4.59 0.54 1136 +1138 4 11.15 73.57 4.3 0.54 1137 +1139 4 12.56 73.4 4.45 0.54 1138 +1140 4 14.72 72.48 4.46 0.54 1139 +1141 4 16.24 71.58 4.24 0.54 1140 +1142 4 17.65 70.18 4.35 0.54 1141 +1143 4 20.1 68.37 4.02 0.54 1142 +1144 4 21.94 68.38 4.0 0.54 1143 +1145 4 23.51 68.34 4.38 0.54 1144 +1146 4 24.77 68.32 4.65 0.54 1145 +1147 4 26.58 68.03 4.45 0.54 1146 +1148 4 28.73 66.83 4.21 0.54 1147 +1149 4 31.16 67.15 4.02 0.54 1148 +1150 4 34.23 66.84 4.01 0.54 1149 +1151 4 37.46 65.47 3.95 0.54 1150 +1152 4 39.76 65.63 3.9 0.54 1151 +1153 4 42.35 65.8 3.76 0.54 1152 +1154 4 45.1 66.44 3.64 0.54 1153 +1155 4 46.65 66.11 3.77 0.54 1154 +1156 4 49.09 64.29 3.45 0.54 1155 +1157 4 51.69 62.65 3.05 0.54 1156 +1158 4 53.37 63.12 2.94 0.54 1157 +1159 4 55.18 64.05 2.86 0.54 1158 +1160 4 62.55 62.92 2.23 0.54 1159 +1161 4 66.81 62.05 1.75 0.54 1160 +1162 4 69.42 61.89 1.79 0.54 1161 +1163 4 70.71 61.85 2.34 0.54 1162 +1164 4 71.95 60.62 2.34 0.54 1163 +1165 4 74.38 60.03 2.06 0.54 1164 +1166 4 76.51 60.05 1.87 0.54 1165 +1167 4 76.74 59.83 2.57 0.54 1166 +1168 4 78.33 59.47 3.22 0.54 1167 +1169 4 79.02 58.79 3.85 0.54 1168 +1170 4 79.24 58.56 4.57 0.54 1169 +1171 4 79.18 57.1 5.41 0.54 1170 +1172 4 78.9 56.15 5.64 0.54 1171 +1173 4 78.68 55.45 6.5 0.54 1172 +1174 4 78.42 55.1 6.94 0.54 1173 +1175 4 78.14 54.47 7.21 0.54 1174 +1176 4 -6.09 76.33 6.23 1.08 1129 +1177 4 -6.97 77.79 6.92 1.08 1176 +1178 4 -6.79 78.22 7.24 1.08 1177 +1179 4 -6.31 79.27 7.52 1.08 1178 +1180 4 -5.77 79.63 8.49 1.08 1179 +1181 4 -5.31 80.69 8.77 1.08 1180 +1182 4 -4.24 82.37 8.85 1.08 1181 +1183 4 -3.78 82.82 8.93 1.08 1182 +1184 4 -3.8 83.87 9.55 1.08 1183 +1185 4 -3.8 86.0 9.76 1.08 1184 +1186 4 -4.21 87.32 8.86 1.08 1185 +1187 4 -4.67 88.38 9.02 1.08 1186 +1188 4 -5.57 89.89 7.73 1.405 1187 +1189 4 -6.18 91.4 7.93 1.405 1188 +1190 4 -6.29 92.12 8.47 1.3 1189 +1191 4 -6.35 92.48 8.73 1.3 1190 +1192 4 -5.43 91.69 7.22 0.11 1191 +1193 4 -4.97 92.16 7.3 0.435 1192 +1194 4 -4.52 93.52 7.4 0.435 1193 +1195 4 -3.75 95.19 7.49 0.435 1194 +1196 4 -2.85 96.11 7.56 0.435 1195 +1197 4 -1.34 96.74 7.48 0.435 1196 +1198 4 -0.13 96.77 7.22 0.435 1197 +1199 4 1.04 97.42 6.81 0.435 1198 +1200 4 2.99 98.23 6.32 0.435 1199 +1201 4 4.03 99.03 6.08 0.435 1200 +1202 4 5.07 100.41 5.96 0.435 1201 +1203 4 6.42 101.2 5.77 0.435 1202 +1204 4 8.85 102.46 5.52 0.435 1203 +1205 4 9.2 103.02 4.48 0.435 1204 +1206 4 10.99 103.99 3.95 0.435 1205 +1207 4 12.96 105.69 3.94 0.435 1206 +1208 4 15.08 107.22 3.81 0.435 1207 +1209 4 16.37 108.09 2.95 0.435 1208 +1210 4 18.6 109.22 2.32 0.435 1209 +1211 4 21.77 110.34 1.91 0.435 1210 +1212 4 23.85 111.03 1.18 0.435 1211 +1213 4 26.71 111.84 0.7 0.435 1212 +1214 4 29.14 113.08 0.59 0.435 1213 +1215 4 31.56 113.73 0.21 0.435 1214 +1216 4 33.64 114.71 -0.4 0.435 1215 +1217 4 35.75 115.65 -0.58 0.435 1216 +1218 4 39.1 117.21 -0.74 0.435 1217 +1219 4 41.37 119.2 -0.75 0.435 1218 +1220 4 43.96 120.89 -0.83 0.435 1219 +1221 4 47.91 123.37 -0.95 0.435 1220 +1222 4 50.77 124.17 -1.29 0.435 1221 +1223 4 52.39 123.8 -2.23 0.435 1222 +1224 4 55.57 123.99 -2.59 0.435 1223 +1225 4 58.26 124.68 -3.29 0.435 1224 +1226 4 61.6 125.33 -3.62 0.435 1225 +1227 4 65.79 126.35 -4.59 0.435 1226 +1228 4 69.02 127.72 -6.04 0.435 1227 +1229 4 72.83 127.0 -6.53 0.435 1228 +1230 4 77.43 127.39 -7.0 0.435 1229 +1231 4 81.36 128.35 -7.33 0.435 1230 +1232 4 84.07 129.01 -7.82 0.435 1231 +1233 4 86.66 128.58 -8.11 0.435 1232 +1234 4 88.95 128.75 -8.3 0.435 1233 +1235 4 90.32 128.61 -8.44 0.435 1234 +1236 4 -6.92 93.64 8.6 1.3 1190 +1237 4 -6.7 94.03 9.3 1.3 1236 +1238 4 -7.6 95.22 9.65 1.3 1237 +1239 4 -8.01 95.74 9.74 1.3 1238 +1240 4 -6.77 95.72 9.93 0.435 1239 +1241 4 -6.3 95.85 10.13 0.435 1240 +1242 4 -5.99 96.17 10.13 0.435 1241 +1243 4 -5.56 96.37 9.72 0.435 1242 +1244 4 -5.11 96.52 9.7 0.435 1243 +1245 4 -3.65 97.2 9.02 0.435 1244 +1246 4 -3.22 96.78 8.64 0.435 1245 +1247 4 -1.59 96.69 7.95 0.435 1246 +1248 4 0.06 96.27 7.54 0.435 1247 +1249 4 0.75 95.59 6.65 0.435 1248 +1250 4 1.95 94.41 6.19 0.435 1249 +1251 4 3.43 93.55 5.52 0.435 1250 +1252 4 4.94 93.58 5.16 0.435 1251 +1253 4 6.69 93.67 4.25 0.435 1252 +1254 4 7.39 93.9 3.52 0.435 1253 +1255 4 7.55 94.05 1.94 0.435 1254 +1256 4 7.86 93.75 1.95 0.435 1255 +1257 4 8.62 93.6 1.87 0.435 1256 +1258 4 8.47 93.76 0.24 0.435 1257 +1259 4 8.55 93.69 -0.6 0.435 1258 +1260 4 8.65 93.28 -1.17 0.435 1259 +1261 4 8.86 93.09 -2.27 0.435 1260 +1262 4 9.6 92.98 -2.73 0.435 1261 +1263 4 10.35 92.85 -2.97 0.435 1262 +1264 4 11.04 93.07 -3.62 0.435 1263 +1265 4 12.22 92.49 0.75 0.435 1264 +1266 4 12.37 91.72 0.66 0.435 1265 +1267 4 12.64 91.46 0.24 0.435 1266 +1268 4 12.07 91.13 -1.02 0.435 1267 +1269 4 12.68 90.22 -1.24 0.435 1268 +1270 4 13.27 89.64 -1.58 0.435 1269 +1271 4 13.77 88.24 -2.98 0.435 1270 +1272 4 14.83 87.19 -3.25 0.435 1271 +1273 4 15.9 86.75 -3.39 0.435 1272 +1274 4 16.34 85.41 -3.71 0.435 1273 +1275 4 16.74 84.41 -4.6 0.435 1274 +1276 4 17.49 83.36 -4.85 0.435 1275 +1277 4 17.74 82.52 -5.71 0.435 1276 +1278 4 17.35 81.99 -6.48 0.435 1277 +1279 4 16.73 81.39 -6.71 0.435 1278 +1280 4 16.61 80.62 -8.14 0.435 1279 +1281 4 16.89 79.13 -8.68 0.435 1280 +1282 4 17.51 77.92 -8.85 0.435 1281 +1283 4 17.9 76.92 -9.67 0.435 1282 +1284 4 18.34 75.89 -10.12 0.435 1283 +1285 4 18.93 75.3 -10.39 0.435 1284 +1286 4 19.68 75.17 -10.54 0.435 1285 +1287 4 20.75 75.34 -10.7 0.435 1286 +1288 4 21.77 74.33 -11.35 0.435 1287 +1289 4 22.35 73.44 -11.79 0.435 1288 +1290 4 22.45 73.35 -12.41 0.435 1289 +1291 4 22.72 71.88 -13.03 0.435 1290 +1292 4 23.1 69.68 -14.19 0.435 1291 +1293 4 24.33 68.48 -14.42 0.435 1292 +1294 4 24.92 67.6 -14.79 0.435 1293 +1295 4 26.7 66.45 -15.59 0.435 1294 +1296 4 27.74 64.82 -16.14 0.435 1295 +1297 4 30.33 61.95 -16.75 0.435 1296 +1298 4 32.47 60.45 -17.09 0.435 1297 +1299 4 33.38 59.54 -17.26 0.435 1298 +1300 4 35.28 56.77 -18.68 0.435 1299 +1301 4 35.84 55.31 -19.42 0.435 1300 +1302 4 36.6 54.26 -19.66 0.435 1301 +1303 4 37.2 53.36 -19.88 0.435 1302 +1304 4 37.67 52.92 -19.97 0.435 1303 +1305 4 38.06 52.53 -20.8 0.435 1304 +1306 4 38.49 52.1 -21.18 0.435 1305 +1307 4 -8.0 96.22 10.54 1.3 1239 +1308 4 -8.91 97.42 10.82 1.3 1307 +1309 4 -10.54 98.52 11.08 1.3 1308 +1310 4 -11.37 99.05 12.03 0.54 1309 +1311 4 -12.45 99.8 12.2 0.54 1310 +1312 4 -13.21 100.55 12.35 0.54 1311 +1313 4 -14.17 100.6 11.92 0.54 1312 +1314 4 -15.54 101.05 12.01 0.54 1313 +1315 4 -16.17 102.27 12.04 0.54 1314 +1316 4 -17.05 103.14 12.59 0.54 1315 +1317 4 -19.02 105.37 13.29 0.54 1316 +1318 4 -19.32 106.29 13.4 0.54 1317 +1319 4 -19.78 107.34 13.55 0.54 1318 +1320 4 -20.55 109.01 13.79 0.54 1319 +1321 4 -20.8 108.95 14.41 0.54 1320 +1322 4 -21.56 109.39 14.52 0.54 1321 +1323 4 -22.61 109.53 14.7 0.54 1322 +1324 4 -23.57 109.86 14.45 0.54 1323 +1325 4 -24.08 110.37 13.94 0.54 1324 +1326 4 -23.72 112.15 13.02 0.54 1325 +1327 4 -24.34 112.46 13.03 0.54 1326 +1328 4 -25.41 113.81 13.26 0.54 1327 +1329 4 -26.93 116.54 13.67 0.54 1328 +1330 4 -27.6 119.31 13.54 0.54 1329 +1331 4 -27.31 120.86 13.51 0.54 1330 +1332 4 -26.83 122.22 12.17 0.54 1331 +1333 4 -27.15 123.13 12.22 0.54 1332 +1334 4 -28.01 125.51 11.47 0.54 1333 +1335 4 -27.85 127.77 10.24 0.54 1334 +1336 4 -28.01 129.17 8.65 0.54 1335 +1337 4 -28.25 130.01 7.85 0.54 1336 +1338 4 -29.16 130.9 8.1 0.54 1337 +1339 4 -30.38 132.72 8.38 0.54 1338 +1340 4 -30.99 133.33 6.83 0.54 1339 +1341 4 -32.18 136.02 6.0 0.54 1340 +1342 4 -33.32 138.37 5.49 0.54 1341 +1343 4 -33.63 140.51 5.67 0.54 1342 +1344 4 -35.17 143.23 6.07 0.54 1343 +1345 4 -35.5 145.38 6.08 0.54 1344 +1346 4 -35.76 148.97 5.47 0.54 1345 +1347 4 -35.49 152.03 5.45 0.54 1346 +1348 4 -35.46 155.97 4.54 0.54 1347 +1349 4 -36.39 158.7 4.9 0.54 1348 +1350 4 -37.16 162.49 5.33 0.54 1349 +1351 4 -38.67 165.51 4.26 0.54 1350 +1352 4 -40.46 167.59 3.49 0.54 1351 +1353 4 -40.73 169.07 2.37 0.54 1352 +1354 4 -41.1 170.05 1.83 0.54 1353 +1355 4 -42.23 171.76 1.5 0.54 1354 +1356 4 -43.65 173.48 1.26 0.54 1355 +1357 4 -44.41 174.23 1.4 0.54 1356 +1358 4 -44.59 175.64 -0.4 0.54 1357 +1359 4 -44.76 177.91 -0.16 0.54 1358 +1360 4 -44.15 180.04 -0.01 0.54 1359 +1361 4 -43.85 182.49 0.19 0.54 1360 +1362 4 -44.5 184.95 0.18 0.54 1361 +1363 4 -45.07 187.94 -0.59 0.54 1362 +1364 4 -44.92 190.53 -1.94 0.54 1363 +1365 4 -44.75 191.57 -0.05 0.54 1364 +1366 4 -45.06 191.87 -0.06 0.54 1365 +1367 4 -44.43 192.47 0.09 0.54 1366 +1368 4 -46.08 176.81 1.81 0.54 1357 +1369 4 -49.45 181.64 1.0 0.54 1368 +1370 4 -50.39 182.55 2.54 0.54 1369 +1371 4 -52.84 184.97 3.01 0.54 1370 +1372 4 -54.24 188.18 3.14 0.54 1371 +1373 4 -10.13 99.23 11.11 1.19 1309 +1374 4 -10.86 100.86 11.71 1.08 1373 +1375 4 -10.7 100.97 11.71 1.08 1374 +1376 4 -11.55 100.89 12.54 0.54 1375 +1377 4 -12.46 101.19 12.65 0.54 1376 +1378 4 -13.07 101.79 12.77 0.54 1377 +1379 4 -13.83 102.54 12.91 0.54 1378 +1380 4 -14.44 103.15 13.02 0.54 1379 +1381 4 -15.2 104.51 13.22 0.54 1380 +1382 4 -15.97 106.78 13.51 0.54 1381 +1383 4 -15.22 108.15 13.58 0.54 1382 +1384 4 -15.22 109.07 13.67 0.54 1383 +1385 4 -15.45 110.22 12.9 0.54 1384 +1386 4 -16.38 111.13 13.0 0.54 1385 +1387 4 -17.15 112.5 13.2 0.54 1386 +1388 4 -18.07 114.61 13.5 0.54 1387 +1389 4 -18.84 116.58 13.76 0.54 1388 +1390 4 -19.91 119.16 14.11 0.54 1389 +1391 4 -20.09 122.07 14.18 0.54 1390 +1392 4 -20.92 123.8 13.74 0.54 1391 +1393 4 -21.25 125.64 13.81 0.54 1392 +1394 4 -22.16 128.37 14.07 0.54 1393 +1395 4 -23.4 130.48 14.39 0.54 1394 +1396 4 -24.92 133.22 14.8 0.54 1395 +1397 4 -26.92 135.79 15.17 0.54 1396 +1398 4 -29.09 138.84 15.37 0.54 1397 +1399 4 -29.71 140.97 15.55 0.54 1398 +1400 4 -31.13 144.79 15.68 0.54 1399 +1401 4 -31.29 147.39 15.86 0.54 1400 +1402 4 -32.47 150.38 15.14 0.54 1401 +1403 4 -33.09 152.81 15.43 0.54 1402 +1404 4 -32.94 154.79 15.61 0.54 1403 +1405 4 -34.16 155.99 15.84 0.54 1404 +1406 4 -35.44 156.94 15.45 0.54 1405 +1407 4 -36.97 157.54 15.58 0.54 1406 +1408 4 -38.05 158.61 15.78 0.54 1407 +1409 4 -38.2 160.89 16.01 0.54 1408 +1410 4 -39.55 162.96 16.26 0.54 1409 +1411 4 -39.86 165.09 16.5 0.54 1410 +1412 4 -40.93 167.05 16.78 0.54 1411 +1413 4 -42.35 169.06 16.59 0.54 1412 +1414 4 -43.42 171.33 16.91 0.54 1413 +1415 4 -44.51 173.92 17.18 0.54 1414 +1416 4 -44.51 175.75 17.36 0.54 1415 +1417 4 -45.66 179.31 16.98 0.54 1416 +1418 4 -46.89 181.43 17.31 0.54 1417 +1419 4 -48.12 185.38 17.72 0.54 1418 +1420 4 -48.44 189.33 18.14 0.54 1419 +1421 4 -49.21 191.61 18.43 0.54 1420 +1422 4 -49.37 193.89 18.67 0.54 1421 +1423 4 -48.8 196.05 18.52 0.54 1422 +1424 4 -48.59 197.98 17.64 0.54 1423 +1425 4 -49.06 199.95 17.8 0.54 1424 +1426 4 -49.67 201.17 17.98 0.54 1425 +1427 4 -49.29 205.94 17.8 0.54 1426 +1428 4 -50.12 208.29 17.43 0.54 1427 +1429 4 -50.05 209.74 16.66 0.54 1428 +1430 4 -50.52 211.72 16.81 0.54 1429 +1431 4 -51.59 214.3 17.16 0.54 1430 +1432 4 -51.95 216.77 16.99 0.54 1431 +1433 4 -51.85 218.19 16.59 0.54 1432 +1434 4 -51.41 220.79 16.73 0.54 1433 +1435 4 -51.44 221.73 16.52 0.54 1434 +1436 4 -51.19 223.31 16.04 0.54 1435 +1437 4 -10.4 102.22 11.88 1.08 1375 +1438 4 -9.64 102.99 11.89 1.08 1437 +1439 4 -8.89 104.97 12.08 1.08 1438 +1440 4 -8.74 106.95 12.26 1.08 1439 +1441 4 -8.24 109.18 12.96 0.975 1440 +1442 4 -7.33 111.62 13.19 0.975 1441 +1443 4 -7.03 112.84 13.28 0.975 1442 +1444 4 -6.11 112.65 14.32 0.65 1443 +1445 4 -5.35 112.5 14.23 0.65 1444 +1446 4 -4.89 112.05 14.15 0.65 1445 +1447 4 -5.04 110.98 14.06 0.65 1446 +1448 4 -4.58 109.62 13.89 0.435 1447 +1449 4 -3.51 108.26 13.65 0.435 1448 +1450 4 -2.19 106.34 12.81 0.435 1449 +1451 4 -1.4 105.26 12.86 0.435 1450 +1452 4 -0.76 104.63 13.11 0.54 1451 +1453 4 0.21 103.36 13.59 0.54 1452 +1454 4 0.57 102.09 13.96 0.54 1453 +1455 4 1.41 100.65 14.64 0.54 1454 +1456 4 1.88 99.27 14.47 0.54 1455 +1457 4 2.21 98.33 14.65 0.54 1456 +1458 4 2.57 97.38 15.13 0.54 1457 +1459 4 2.89 96.46 15.08 0.54 1458 +1460 4 3.2 95.23 15.0 0.54 1459 +1461 4 3.81 94.63 14.89 0.54 1460 +1462 4 5.05 92.81 14.75 0.54 1461 +1463 4 5.54 92.32 14.96 0.54 1462 +1464 4 6.32 90.95 14.91 0.54 1463 +1465 4 6.78 89.56 14.89 0.54 1464 +1466 4 7.3 88.75 15.36 0.54 1465 +1467 4 7.46 88.3 15.37 0.54 1466 +1468 4 -7.18 114.81 13.56 0.975 1443 +1469 4 -8.4 116.92 13.89 0.975 1468 +1470 4 -9.63 119.35 14.24 0.975 1469 +1471 4 -11.16 122.06 14.65 0.975 1470 +1472 4 -11.68 123.48 15.96 0.975 1471 +1473 4 -12.43 124.23 16.1 0.975 1472 +1474 4 -12.83 124.88 16.2 0.975 1473 +1475 4 -12.98 124.12 14.48 0.54 1474 +1476 4 -13.43 123.36 14.45 0.54 1475 +1477 4 -13.12 122.14 14.29 0.54 1476 +1478 4 -12.82 121.54 14.21 0.435 1477 +1479 4 -13.12 120.02 14.09 0.435 1478 +1480 4 -13.12 119.41 14.03 0.435 1479 +1481 4 -13.11 118.19 13.92 0.435 1480 +1482 4 -13.12 116.97 13.79 0.435 1481 +1483 4 -12.96 116.52 13.73 0.435 1482 +1484 4 -12.65 115.62 13.62 0.435 1483 +1485 4 -12.49 115.15 13.56 0.435 1484 +1486 4 -13.5 126.51 16.42 0.975 1474 +1487 4 -14.27 128.76 16.8 0.975 1486 +1488 4 -14.12 131.35 17.03 0.975 1487 +1489 4 -13.67 132.73 17.12 0.975 1488 +1490 4 -12.92 135.01 17.28 0.975 1489 +1491 4 -13.22 136.23 17.43 1.08 1490 +1492 4 -13.7 139.11 17.76 1.08 1491 +1493 4 -13.55 141.09 17.93 1.08 1492 +1494 4 -14.31 142.46 18.13 1.08 1493 +1495 4 -15.08 144.43 18.4 1.08 1494 +1496 4 -15.85 146.39 18.66 1.08 1495 +1497 4 -16.31 147.77 18.84 1.08 1496 +1498 4 -16.16 150.04 19.05 1.08 1497 +1499 4 -14.95 150.66 19.0 1.08 1498 +1500 4 -13.58 151.74 18.97 1.08 1499 +1501 4 -13.12 152.8 19.03 1.08 1500 +1502 4 -12.97 154.78 19.29 1.08 1501 +1503 4 -11.31 158.28 19.47 1.08 1502 +1504 4 -11.32 162.24 19.86 1.08 1503 +1505 4 -10.83 162.78 19.87 1.08 1504 +1506 4 -11.36 162.68 20.73 0.65 1505 +1507 4 -11.81 163.75 20.88 0.65 1506 +1508 4 -12.24 164.17 21.34 0.65 1507 +1509 4 -12.68 164.59 21.64 0.65 1508 +1510 4 -13.29 164.59 21.63 0.65 1509 +1511 4 -13.7 165.61 22.23 0.65 1510 +1512 4 -14.28 166.17 22.79 0.65 1511 +1513 4 -14.49 166.37 23.89 0.65 1512 +1514 4 -14.78 168.17 24.39 0.65 1513 +1515 4 -15.17 169.17 23.53 0.435 1514 +1516 4 -15.63 170.83 23.82 0.435 1515 +1517 4 -15.93 172.06 22.23 0.435 1516 +1518 4 -16.16 172.88 21.58 0.435 1517 +1519 4 -16.22 174.47 21.2 0.435 1518 +1520 4 -16.27 176.03 20.83 0.54 1519 +1521 4 -16.43 178.01 21.05 0.54 1520 +1522 4 -16.93 179.72 20.8 0.54 1521 +1523 4 -17.55 181.55 20.96 0.54 1522 +1524 4 -18.77 183.36 21.25 0.54 1523 +1525 4 -18.47 185.5 21.43 0.54 1524 +1526 4 -17.72 187.48 21.55 0.54 1525 +1527 4 -18.03 189.0 21.73 0.54 1526 +1528 4 -19.3 191.46 21.63 0.54 1527 +1529 4 -18.91 193.2 21.09 0.54 1528 +1530 4 -18.65 195.37 20.9 0.54 1529 +1531 4 -18.39 198.45 20.79 0.54 1530 +1532 4 -19.05 201.54 20.63 0.54 1531 +1533 4 -19.92 203.6 19.93 0.54 1532 +1534 4 -20.71 205.91 19.86 0.54 1533 +1535 4 -21.75 208.16 18.88 0.54 1534 +1536 4 -21.61 209.84 18.95 0.54 1535 +1537 4 -22.45 211.58 18.37 0.54 1536 +1538 4 -24.56 213.98 17.36 0.54 1537 +1539 4 -26.24 215.33 17.65 0.54 1538 +1540 4 -27.77 216.85 17.94 0.54 1539 +1541 4 -29.3 218.97 18.28 0.54 1540 +1542 4 -31.19 220.23 17.83 0.54 1541 +1543 4 -33.94 222.94 18.35 0.54 1542 +1544 4 -35.63 224.61 18.58 0.54 1543 +1545 4 -36.53 226.41 17.41 0.54 1544 +1546 4 -37.71 229.4 16.6 0.54 1545 +1547 4 -38.66 230.29 16.7 0.54 1546 +1548 4 -39.74 231.03 16.87 0.54 1547 +1549 4 -40.73 232.02 16.22 0.54 1548 +1550 4 -40.98 234.4 15.51 0.54 1549 +1551 4 -41.28 237.74 14.26 0.54 1550 +1552 4 -42.13 239.8 13.65 0.54 1551 +1553 4 -41.6 241.71 12.87 0.54 1552 +1554 4 -41.19 243.74 12.65 0.54 1553 +1555 4 -41.33 245.7 11.34 0.54 1554 +1556 4 -42.81 248.37 10.68 0.54 1555 +1557 4 -43.38 251.37 9.9 0.54 1556 +1558 4 -44.94 256.24 10.29 0.54 1557 +1559 4 -45.75 259.78 10.26 0.54 1558 +1560 4 -46.31 261.56 9.27 0.54 1559 +1561 4 -46.66 264.63 9.37 0.54 1560 +1562 4 -46.86 266.34 9.03 0.54 1561 +1563 4 -47.79 269.09 9.24 0.54 1562 +1564 4 -48.3 273.22 9.38 0.54 1563 +1565 4 -48.53 275.89 8.76 0.54 1564 +1566 4 -49.27 277.53 8.83 0.54 1565 +1567 4 -11.65 164.37 20.09 1.08 1505 +1568 4 -11.89 164.43 20.12 1.08 1567 +1569 4 -11.64 167.11 20.37 1.08 1568 +1570 4 -11.65 169.85 20.63 0.865 1569 +1571 4 -11.81 173.65 21.02 0.865 1570 +1572 4 -11.53 177.92 21.41 0.865 1571 +1573 4 -11.39 180.56 21.73 0.975 1572 +1574 4 -10.79 183.0 21.92 0.975 1573 +1575 4 -10.02 185.58 22.09 0.975 1574 +1576 4 -9.42 188.02 22.28 0.975 1575 +1577 4 -11.12 192.11 22.84 0.975 1576 +1578 4 -11.1 193.92 23.23 0.975 1577 +1579 4 -12.33 196.94 23.64 0.975 1578 +1580 4 -13.26 199.97 24.02 0.975 1579 +1581 4 -13.87 202.4 24.39 1.08 1580 +1582 4 -13.72 205.59 24.7 1.08 1581 +1583 4 -13.93 207.02 24.32 1.08 1582 +1584 4 -12.94 206.93 25.95 0.54 1583 +1585 4 -12.18 207.4 25.86 0.54 1584 +1586 4 -11.91 207.12 27.17 0.54 1585 +1587 4 -10.96 207.38 27.57 0.54 1586 +1588 4 -9.48 207.43 28.64 0.65 1587 +1589 4 -8.25 208.04 28.81 0.65 1588 +1590 4 -6.69 208.91 29.13 0.65 1589 +1591 4 -4.35 209.96 29.62 0.65 1590 +1592 4 -1.76 211.63 29.7 0.65 1591 +1593 4 1.57 213.79 29.6 0.65 1592 +1594 4 5.23 215.65 29.52 0.65 1593 +1595 4 8.0 217.15 29.86 0.65 1594 +1596 4 9.85 218.04 30.15 0.65 1595 +1597 4 10.79 218.33 30.33 0.65 1596 +1598 4 12.77 219.72 30.28 0.65 1597 +1599 4 14.44 221.11 30.33 0.65 1598 +1600 4 15.07 222.0 29.01 0.65 1599 +1601 4 15.08 221.98 29.16 0.65 1600 +1602 4 15.85 222.44 29.13 0.65 1601 +1603 4 15.8 222.5 28.61 0.65 1602 +1604 4 16.63 222.9 27.66 0.65 1603 +1605 4 16.85 223.59 26.8 0.65 1604 +1606 4 17.56 224.1 26.26 0.65 1605 +1607 4 17.52 224.53 26.3 0.65 1606 +1608 4 18.05 224.3 27.14 0.54 1607 +1609 4 18.36 224.0 27.0 0.54 1608 +1610 4 18.75 223.6 27.91 0.54 1609 +1611 4 19.28 223.68 28.78 0.54 1610 +1612 4 19.95 223.62 29.31 0.54 1611 +1613 4 20.91 223.89 29.78 0.54 1612 +1614 4 21.74 224.28 30.42 0.54 1613 +1615 4 22.2 224.73 30.51 0.54 1614 +1616 4 22.58 224.35 31.34 0.54 1615 +1617 4 22.5 225.33 32.27 0.54 1616 +1618 4 22.65 226.7 32.39 0.54 1617 +1619 4 22.5 227.76 32.58 0.54 1618 +1620 4 22.13 228.12 33.63 0.54 1619 +1621 4 21.74 228.49 34.46 0.54 1620 +1622 4 22.51 230.77 34.77 0.435 1621 +1623 4 23.87 233.07 34.86 0.435 1622 +1624 4 24.09 234.37 35.65 0.435 1623 +1625 4 23.78 237.4 36.05 0.435 1624 +1626 4 23.93 239.37 36.31 0.435 1625 +1627 4 24.38 241.05 36.42 0.435 1626 +1628 4 24.35 243.21 36.34 0.435 1627 +1629 4 24.32 245.05 36.3 0.435 1628 +1630 4 24.27 248.13 36.29 0.435 1629 +1631 4 24.72 251.63 36.53 0.435 1630 +1632 4 25.42 255.5 36.24 0.435 1631 +1633 4 25.34 256.48 35.58 0.435 1632 +1634 4 24.67 258.68 35.17 0.435 1633 +1635 4 25.39 260.99 35.03 0.435 1634 +1636 4 26.22 264.73 34.48 0.435 1635 +1637 4 27.38 266.0 34.05 0.435 1636 +1638 4 28.74 268.61 34.1 0.435 1637 +1639 4 27.51 271.35 34.41 0.435 1638 +1640 4 26.51 273.54 33.88 0.54 1639 +1641 4 25.68 274.37 33.29 0.54 1640 +1642 4 25.67 275.29 33.3 0.54 1641 +1643 4 24.52 224.25 32.36 0.54 1616 +1644 4 25.58 225.03 32.34 0.54 1643 +1645 4 26.86 225.88 32.98 0.54 1644 +1646 4 27.65 227.83 33.4 0.54 1645 +1647 4 27.64 230.27 33.72 0.54 1646 +1648 4 27.35 231.76 34.04 0.54 1647 +1649 4 28.88 232.96 34.32 0.54 1648 +1650 4 29.8 233.58 34.3 0.54 1649 +1651 4 30.74 234.17 34.64 0.54 1650 +1652 4 31.12 234.08 35.5 0.54 1651 +1653 4 32.67 234.68 35.64 0.54 1652 +1654 4 35.62 235.72 36.07 0.54 1653 +1655 4 36.39 236.46 36.23 0.54 1654 +1656 4 36.88 238.11 36.8 0.54 1655 +1657 4 37.07 240.02 37.57 0.54 1656 +1658 4 38.75 242.32 37.72 0.54 1657 +1659 4 40.57 244.76 37.86 0.54 1658 +1660 4 42.41 245.96 38.05 0.54 1659 +1661 4 46.98 248.44 37.87 0.54 1660 +1662 4 50.48 250.76 37.84 0.54 1661 +1663 4 53.24 252.27 38.04 0.54 1662 +1664 4 55.08 252.88 38.08 0.54 1663 +1665 4 56.44 253.65 38.02 0.54 1664 +1666 4 58.12 254.42 38.02 0.54 1665 +1667 4 59.18 255.19 38.0 0.54 1666 +1668 4 19.34 225.08 25.73 0.435 1607 +1669 4 21.17 226.01 25.66 0.435 1668 +1670 4 22.34 226.98 25.19 0.435 1669 +1671 4 23.82 227.94 24.69 0.54 1670 +1672 4 26.39 231.16 24.77 0.54 1671 +1673 4 28.48 232.75 24.27 0.54 1672 +1674 4 30.77 232.92 24.09 0.54 1673 +1675 4 32.74 232.18 23.83 0.54 1674 +1676 4 36.09 232.51 23.55 0.54 1675 +1677 4 38.92 233.14 23.2 0.435 1676 +1678 4 43.64 234.84 22.93 0.435 1677 +1679 4 47.43 237.48 22.84 0.435 1678 +1680 4 49.28 238.68 21.43 0.54 1679 +1681 4 51.85 241.3 21.44 0.54 1680 +1682 4 53.21 245.11 21.69 0.54 1681 +1683 4 53.26 248.1 20.92 0.54 1682 +1684 4 53.55 250.24 21.03 0.54 1683 +1685 4 55.83 253.76 21.16 0.54 1684 +1686 4 57.48 256.67 21.29 0.54 1685 +1687 4 57.79 257.58 21.36 0.54 1686 +1688 4 57.93 261.07 21.68 0.54 1687 +1689 4 59.6 263.37 21.75 0.54 1688 +1690 4 60.48 264.32 21.46 0.54 1689 +1691 4 62.1 265.14 20.85 0.54 1690 +1692 4 63.89 264.6 20.18 0.54 1691 +1693 4 65.71 264.63 20.01 0.54 1692 +1694 4 -14.08 209.9 24.62 1.08 1583 +1695 4 -13.95 213.4 24.94 1.08 1694 +1696 4 -13.35 216.14 25.16 1.08 1695 +1697 4 -13.66 218.28 25.39 1.08 1696 +1698 4 -15.03 220.84 25.77 1.08 1697 +1699 4 -16.41 222.8 26.09 1.08 1698 +1700 4 -17.17 224.47 26.32 1.08 1699 +1701 4 -17.34 227.36 26.62 1.08 1700 +1702 4 -17.19 231.16 26.98 1.08 1701 +1703 4 -16.75 234.36 27.25 1.08 1702 +1704 4 -17.18 237.23 26.29 1.08 1703 +1705 4 -17.48 239.02 26.71 1.08 1704 +1706 4 -18.11 240.86 26.64 1.08 1705 +1707 4 -18.39 242.66 25.57 1.08 1706 +1708 4 -19.02 243.14 26.35 0.65 1707 +1709 4 -20.33 243.83 25.56 0.65 1708 +1710 4 -21.29 244.15 26.89 0.65 1709 +1711 4 -21.74 243.98 28.65 0.65 1710 +1712 4 -23.19 244.51 29.59 0.65 1711 +1713 4 -26.02 245.48 30.62 0.65 1712 +1714 4 -27.69 246.81 31.06 0.65 1713 +1715 4 -30.05 248.52 32.35 0.65 1714 +1716 4 -31.28 249.74 32.58 0.65 1715 +1717 4 -32.6 251.04 33.28 0.65 1716 +1718 4 -34.58 253.61 33.8 0.65 1717 +1719 4 -36.41 254.2 34.03 0.65 1718 +1720 4 -39.15 255.38 34.46 0.65 1719 +1721 4 -41.74 257.03 34.86 0.65 1720 +1722 4 -44.48 258.52 35.26 0.65 1721 +1723 4 -46.01 260.03 35.63 0.54 1722 +1724 4 -47.21 260.01 35.74 0.54 1723 +1725 4 -49.35 261.21 36.12 0.54 1724 +1726 4 -51.02 263.16 36.47 0.54 1725 +1727 4 -53.63 266.04 36.99 0.54 1726 +1728 4 -56.67 268.74 37.53 0.54 1727 +1729 4 -58.05 271.32 37.92 0.54 1728 +1730 4 -59.43 274.2 38.32 0.54 1729 +1731 4 -60.5 276.46 38.65 0.54 1730 +1732 4 -61.58 279.35 39.02 0.54 1731 +1733 4 -63.56 280.08 39.28 0.54 1732 +1734 4 -65.24 281.44 39.56 0.54 1733 +1735 4 -67.53 283.39 39.97 0.54 1734 +1736 4 -68.7 284.54 40.79 0.54 1735 +1737 4 -70.06 287.11 41.25 0.54 1736 +1738 4 -70.49 288.73 41.9 0.54 1737 +1739 4 -70.46 290.23 42.35 0.54 1738 +1740 4 -69.8 290.77 43.02 0.54 1739 +1741 4 -69.26 291.15 43.84 0.54 1740 +1742 4 -70.31 292.18 44.26 0.54 1741 +1743 4 -71.52 293.38 44.64 0.54 1742 +1744 4 -71.68 295.35 44.85 0.54 1743 +1745 4 -71.81 296.69 45.29 0.54 1744 +1746 4 -73.02 297.58 45.64 0.54 1745 +1747 4 -74.21 297.85 46.0 0.54 1746 +1748 4 -75.86 299.17 46.58 0.54 1747 +1749 4 -76.45 299.76 46.92 0.54 1748 +1750 4 -77.45 300.75 47.79 0.54 1749 +1751 4 -77.62 301.18 49.51 0.54 1750 +1752 4 -78.53 301.79 49.65 0.54 1751 +1753 4 -78.86 302.11 51.08 0.54 1752 +1754 4 -79.29 302.22 51.51 0.54 1753 +1755 4 -17.79 245.71 25.81 1.08 1707 +1756 4 -17.95 247.99 26.05 1.08 1755 +1757 4 -17.21 249.38 25.88 1.08 1756 +1758 4 -16.46 251.67 26.03 1.08 1757 +1759 4 -16.93 253.35 26.17 1.08 1758 +1760 4 -18.15 255.17 26.46 1.08 1759 +1761 4 -19.82 258.34 25.41 1.08 1760 +1762 4 -20.59 260.91 25.73 1.08 1761 +1763 4 -20.91 263.96 26.06 1.08 1762 +1764 4 -20.63 268.83 26.42 1.08 1763 +1765 4 -20.07 271.27 26.55 1.19 1764 +1766 4 -19.33 274.16 26.75 1.19 1765 +1767 4 -19.33 275.38 26.88 1.19 1766 +1768 4 -19.12 276.58 28.11 0.865 1767 +1769 4 -19.42 278.11 28.28 0.865 1768 +1770 4 -19.72 279.01 28.47 0.865 1769 +1771 4 -20.34 279.62 28.51 0.865 1770 +1772 4 -20.67 280.85 30.11 0.865 1771 +1773 4 -21.56 281.73 30.43 0.865 1772 +1774 4 -21.99 283.36 31.15 0.865 1773 +1775 4 -23.18 284.53 31.67 0.865 1774 +1776 4 -23.79 286.34 31.99 0.865 1775 +1777 4 -25.13 287.66 32.62 0.865 1776 +1778 4 -26.51 289.01 32.88 0.865 1777 +1779 4 -27.87 291.27 33.3 0.865 1778 +1780 4 -28.64 293.86 33.63 0.865 1779 +1781 4 -28.65 296.29 33.86 0.865 1780 +1782 4 -28.8 298.55 34.24 0.865 1781 +1783 4 -28.79 300.07 34.47 0.865 1782 +1784 4 -30.47 303.85 35.07 0.865 1783 +1785 4 -31.85 307.03 35.51 0.865 1784 +1786 4 -32.63 310.21 35.89 0.865 1785 +1787 4 -34.3 312.78 36.3 0.865 1786 +1788 4 -36.6 315.05 36.73 0.865 1787 +1789 4 -37.54 315.89 37.05 0.865 1788 +1790 4 -38.92 318.77 37.46 0.865 1789 +1791 4 -40.3 321.64 37.86 0.865 1790 +1792 4 -42.89 323.29 38.26 0.865 1791 +1793 4 -44.42 326.01 38.68 0.865 1792 +1794 4 -46.11 329.51 39.17 0.865 1793 +1795 4 -47.21 332.39 40.99 0.865 1794 +1796 4 -47.72 334.12 40.59 0.865 1795 +1797 4 -48.34 335.36 38.88 0.865 1796 +1798 4 -49.4 337.62 37.77 0.865 1797 +1799 4 -50.47 338.68 37.9 0.865 1798 +1800 4 -52.63 341.41 38.28 0.865 1799 +1801 4 -54.76 344.73 38.8 0.865 1800 +1802 4 -55.43 349.03 38.75 0.865 1801 +1803 4 -55.94 352.55 38.84 0.865 1802 +1804 4 -55.08 356.27 38.6 0.865 1803 +1805 4 -54.71 359.25 37.95 0.865 1804 +1806 4 -55.34 362.0 38.2 0.865 1805 +1807 4 -54.82 365.14 37.47 0.865 1806 +1808 4 -53.38 368.86 36.95 0.865 1807 +1809 4 -52.37 372.41 36.67 0.865 1808 +1810 4 -51.94 375.04 35.07 0.865 1809 +1811 4 -50.47 378.74 34.92 0.865 1810 +1812 4 -49.98 381.91 33.91 0.865 1811 +1813 4 -50.57 382.78 32.75 0.865 1812 +1814 4 -51.17 383.99 32.93 0.865 1813 +1815 4 -51.52 384.33 32.99 0.435 1814 +1816 4 -51.82 384.93 33.08 0.865 1815 +1817 4 -51.5 387.06 31.89 0.865 1816 +1818 4 -51.65 388.73 32.07 0.865 1817 +1819 4 -52.87 389.93 32.3 0.865 1818 +1820 4 -54.06 390.8 31.21 0.865 1819 +1821 4 -55.81 392.23 30.67 0.865 1820 +1822 4 -55.97 393.0 30.69 0.865 1821 +1823 4 -56.94 395.16 30.47 0.865 1822 +1824 4 -57.4 396.54 30.57 0.865 1823 +1825 4 -57.73 398.37 30.7 1.3 1824 +1826 4 -57.88 400.03 30.89 0.975 1825 +1827 4 -58.48 403.06 29.79 0.975 1826 +1828 4 -58.77 404.3 29.93 0.975 1827 +1829 4 -59.79 404.09 30.46 0.54 1828 +1830 4 -61.01 403.47 30.52 0.54 1829 +1831 4 -62.07 403.92 30.66 0.54 1830 +1832 4 -63.75 404.36 30.86 0.54 1831 +1833 4 -65.44 405.12 31.02 0.54 1832 +1834 4 -66.97 405.74 29.4 0.54 1833 +1835 4 -68.34 407.08 29.66 0.54 1834 +1836 4 -69.56 408.3 29.89 0.54 1835 +1837 4 -70.93 408.73 30.06 0.54 1836 +1838 4 -72.2 409.67 29.88 0.54 1837 +1839 4 -72.78 409.97 28.45 0.54 1838 +1840 4 -73.63 409.59 27.59 0.54 1839 +1841 4 -74.09 409.46 25.81 0.54 1840 +1842 4 -74.35 409.11 24.59 0.54 1841 +1843 4 -74.54 408.99 24.21 0.54 1842 +1844 4 -74.69 408.54 24.18 0.54 1843 +1845 4 -58.94 404.74 29.92 0.975 1828 +1846 4 -58.5 407.04 30.03 0.975 1845 +1847 4 -58.83 408.88 28.42 0.975 1846 +1848 4 -59.16 410.74 26.67 0.975 1847 +1849 4 -60.12 411.68 26.4 0.975 1848 +1850 4 -62.36 413.31 25.56 0.975 1849 +1851 4 -63.03 415.56 24.85 0.975 1850 +1852 4 -63.49 417.54 25.08 0.865 1851 +1853 4 -64.8 419.45 24.42 0.865 1852 +1854 4 -64.81 420.98 22.83 0.865 1853 +1855 4 -64.64 422.34 21.5 0.865 1854 +1856 4 -64.51 423.12 21.34 0.865 1855 +1857 4 -64.07 423.6 21.2 0.865 1856 +1858 4 -64.23 425.88 19.85 0.865 1857 +1859 4 -64.97 427.53 18.64 0.865 1858 +1860 4 -64.91 430.2 17.92 0.865 1859 +1861 4 -65.28 432.71 15.85 0.865 1860 +1862 4 -65.7 433.72 16.59 0.865 1861 +1863 4 -66.37 435.91 16.1 0.865 1862 +1864 4 -66.93 437.69 15.27 0.865 1863 +1865 4 -67.17 439.14 14.53 0.865 1864 +1866 4 -68.16 439.81 13.86 0.865 1865 +1867 4 -69.28 441.53 13.6 0.865 1866 +1868 4 -70.9 442.84 12.82 0.865 1867 +1869 4 -71.75 444.29 12.06 0.865 1868 +1870 4 -72.49 445.63 10.97 0.865 1869 +1871 4 -73.83 446.97 9.79 0.865 1870 +1872 4 -74.39 448.11 9.04 0.865 1871 +1873 4 -75.42 449.76 7.94 0.865 1872 +1874 4 -75.89 450.83 8.01 0.865 1873 +1875 4 -77.1 451.73 8.21 0.865 1874 +1876 4 -78.48 453.7 8.46 0.865 1875 +1877 4 -79.04 456.07 7.75 0.865 1876 +1878 4 -77.54 459.43 7.94 0.865 1877 +1879 4 -75.96 462.44 7.03 0.865 1878 +1880 4 -75.44 465.57 6.45 0.865 1879 +1881 4 -75.68 468.54 5.86 0.865 1880 +1882 4 -75.19 470.47 4.87 0.865 1881 +1883 4 -74.8 472.53 4.29 0.865 1882 +1884 4 -74.42 474.28 3.66 0.865 1883 +1885 4 -74.74 475.39 3.8 0.865 1884 +1886 4 -75.42 475.77 3.06 0.435 1885 +1887 4 -75.88 476.23 3.15 0.435 1886 +1888 4 -76.82 476.55 2.96 0.435 1887 +1889 4 -77.28 476.1 2.81 0.435 1888 +1890 4 -77.61 476.43 2.65 0.54 1889 +1891 4 -79.59 477.17 2.91 0.54 1890 +1892 4 -79.9 478.69 3.08 0.54 1891 +1893 4 -80.67 479.16 1.38 0.54 1892 +1894 4 -81.7 479.26 0.28 0.54 1893 +1895 4 -82.29 479.55 -1.07 0.54 1894 +1896 4 -82.72 479.38 -2.55 0.54 1895 +1897 4 -83.65 479.7 -2.52 0.54 1896 +1898 4 -85.11 480.23 -3.31 0.54 1897 +1899 4 -85.96 480.46 -4.12 0.54 1898 +1900 4 -86.59 481.1 -4.37 0.54 1899 +1901 4 -87.51 481.41 -5.92 0.54 1900 +1902 4 -87.66 481.58 -7.71 0.54 1901 +1903 4 -88.41 482.0 -8.96 0.54 1902 +1904 4 -89.13 482.72 -10.02 0.54 1903 +1905 4 -89.85 483.45 -11.17 0.54 1904 +1906 4 -73.88 475.57 3.05 0.865 1885 +1907 4 -73.79 477.62 2.57 0.865 1906 +1908 4 -73.62 479.27 1.28 0.865 1907 +1909 4 -74.82 481.66 0.33 0.865 1908 +1910 4 -74.93 483.61 -0.73 0.865 1909 +1911 4 -74.02 485.14 -0.67 0.865 1910 +1912 4 -72.32 487.12 -1.93 0.865 1911 +1913 4 -71.11 490.18 -3.4 0.865 1912 +1914 4 -71.5 492.69 -4.03 0.865 1913 +1915 4 -71.93 494.64 -5.08 0.865 1914 +1916 4 -71.81 496.33 -5.15 0.865 1915 +1917 4 -72.31 498.87 -6.06 0.865 1916 +1918 4 -71.64 499.73 -7.03 0.865 1917 +1919 4 -70.64 503.6 -7.28 0.865 1918 +1920 4 -69.15 505.47 -7.6 0.865 1919 +1921 4 -69.42 508.16 -8.46 0.865 1920 +1922 4 -70.29 509.94 -9.33 0.865 1921 +1923 4 -70.46 511.32 -9.41 0.865 1922 +1924 4 -70.53 513.51 -9.87 0.865 1923 +1925 4 -70.27 516.0 -10.1 0.865 1924 +1926 4 -71.33 518.26 -11.23 0.865 1925 +1927 4 -71.95 520.08 -11.07 0.865 1926 +1928 4 -72.93 522.29 -11.58 0.865 1927 +1929 4 -73.88 523.83 -13.25 0.865 1928 +1930 4 -73.89 525.66 -13.14 0.865 1929 +1931 4 -73.9 529.32 -14.44 0.865 1930 +1932 4 -73.97 529.39 -15.19 0.865 1931 +1933 4 -73.61 531.16 -16.03 0.865 1932 +1934 4 -73.7 533.69 -16.76 0.865 1933 +1935 4 -73.7 535.51 -18.1 0.865 1934 +1936 4 -73.96 537.29 -19.03 0.865 1935 +1937 4 -74.53 539.99 -19.92 0.865 1936 +1938 4 -74.15 542.65 -20.53 0.865 1937 +1939 4 -72.95 545.1 -20.4 0.865 1938 +1940 4 -72.42 548.52 -20.86 0.865 1939 +1941 4 -71.81 551.27 -22.32 0.865 1940 +1942 4 -70.81 554.24 -22.81 0.865 1941 +1943 4 -70.18 556.94 -23.82 0.865 1942 +1944 4 -68.51 558.96 -25.51 0.865 1943 +1945 4 -67.91 560.48 -25.41 0.865 1944 +1946 4 -66.61 561.93 -26.07 0.865 1945 +1947 4 -65.91 563.36 -26.6 0.865 1946 +1948 4 -65.22 566.04 -27.24 0.865 1947 +1949 4 -65.31 567.95 -27.88 0.865 1948 +1950 4 -65.54 570.59 -28.28 0.865 1949 +1951 4 -66.56 574.04 -28.98 0.865 1950 +1952 4 -67.53 578.34 -29.0 0.865 1951 +1953 4 -68.36 581.65 -28.75 0.865 1952 +1954 4 -68.66 585.6 -28.34 0.865 1953 +1955 4 -68.84 588.5 -28.19 0.865 1954 +1956 4 -69.31 591.09 -27.98 0.865 1955 +1957 4 -70.14 594.33 -28.18 0.865 1956 +1958 4 -70.38 596.7 -28.84 0.865 1957 +1959 4 -70.16 598.92 -29.55 0.865 1958 +1960 4 -69.48 600.67 -30.2 0.865 1959 +1961 4 -68.03 601.97 -30.88 0.865 1960 +1962 4 -67.78 602.91 -30.89 0.54 1961 +1963 4 -66.57 605.06 -30.8 0.54 1962 +1964 4 -66.17 605.58 -31.46 0.54 1963 +1965 4 -65.24 606.49 -32.89 0.54 1964 +1966 4 -63.43 608.04 -33.05 0.54 1965 +1967 4 -62.07 608.82 -33.11 0.54 1966 +1968 4 -59.79 609.9 -33.21 0.54 1967 +1969 4 -58.44 610.39 -33.51 0.54 1968 +1970 4 -56.47 611.48 -33.66 0.54 1969 +1971 4 -54.88 612.34 -34.57 0.54 1970 +1972 4 -54.03 612.73 -35.37 0.54 1971 +1973 4 -53.88 612.57 -35.39 0.54 1972 +1974 4 -54.3 613.0 -36.6 0.435 1973 +1975 4 -54.77 613.47 -36.66 0.435 1974 +1976 4 -55.42 613.78 -36.87 0.435 1975 +1977 4 -54.82 614.42 -37.02 0.435 1976 +1978 4 -55.23 614.83 -38.06 0.435 1977 +1979 4 -54.75 615.58 -39.47 0.435 1978 +1980 4 -54.58 616.63 -40.82 0.435 1979 +1981 4 -54.26 617.24 -42.31 0.435 1980 +1982 4 -54.19 617.48 -43.27 0.435 1981 +1983 4 -54.01 617.91 -44.46 0.435 1982 +1984 4 -53.71 618.53 -46.17 0.435 1983 +1985 4 -53.72 619.75 -46.12 0.435 1984 +1986 4 -53.51 621.68 -47.01 0.435 1985 +1987 4 -53.61 623.29 -47.75 0.435 1986 +1988 4 -53.55 625.07 -48.56 0.435 1987 +1989 4 -54.08 626.8 -49.1 0.435 1988 +1990 4 -54.38 628.63 -50.49 0.435 1989 +1991 4 -54.53 630.0 -51.93 0.435 1990 +1992 4 -54.96 632.25 -52.94 0.435 1991 +1993 4 -56.33 633.9 -52.66 0.435 1992 +1994 4 -56.39 634.89 -53.24 0.435 1993 +1995 4 -56.05 635.78 -54.47 0.435 1994 +1996 4 -55.39 636.34 -55.54 0.435 1995 +1997 4 -52.58 613.43 -36.26 0.54 1973 +1998 4 -51.09 614.37 -36.53 0.54 1997 +1999 4 -50.09 615.5 -37.11 0.54 1998 +2000 4 -47.89 617.89 -37.98 0.54 1999 +2001 4 -46.31 618.77 -39.1 0.54 2000 +2002 4 -43.9 620.02 -39.29 0.54 2001 +2003 4 -41.36 621.45 -39.9 0.54 2002 +2004 4 -39.1 623.18 -40.18 0.54 2003 +2005 4 -36.98 625.03 -40.27 0.54 2004 +2006 4 -36.05 626.84 -41.62 0.54 2005 +2007 4 -32.96 629.26 -42.65 0.54 2006 +2008 4 -31.82 631.17 -43.39 0.54 2007 +2009 4 -30.72 634.63 -44.3 0.54 2008 +2010 4 -29.79 636.45 -45.57 0.54 2009 +2011 4 -28.27 637.99 -45.63 0.54 2010 +2012 4 -26.39 639.78 -46.68 0.54 2011 +2013 4 -24.2 640.96 -47.76 0.54 2012 +2014 4 -22.17 641.99 -48.83 0.54 2013 +2015 4 -21.01 642.38 -49.66 0.54 2014 +2016 4 -20.54 642.82 -51.09 0.54 2015 +2017 4 -19.07 644.42 -51.67 0.54 2016 +2018 4 -18.46 645.94 -53.09 0.54 2017 +2019 4 -16.92 649.28 -54.34 0.54 2018 +2020 4 -15.61 651.63 -54.77 0.54 2019 +2021 4 -14.71 653.18 -56.51 0.54 2020 +2022 4 -13.13 656.16 -57.13 0.54 2021 +2023 4 -11.23 657.33 -58.09 0.54 2022 +2024 4 -9.11 658.88 -58.21 0.54 2023 +2025 4 -7.68 660.51 -59.17 0.54 2024 +2026 4 -6.55 662.44 -59.99 0.54 2025 +2027 4 -5.71 664.02 -60.6 0.54 2026 +2028 4 -5.26 665.1 -60.61 0.54 2027 +2029 4 -3.83 667.32 -61.35 0.54 2028 +2030 4 -3.0 668.95 -62.25 0.54 2029 +2031 4 -1.86 672.08 -62.89 0.54 2030 +2032 4 -1.23 674.79 -63.89 0.54 2031 +2033 4 1.18 677.26 -64.02 0.54 2032 +2034 4 4.06 679.87 -64.02 0.54 2033 +2035 4 5.35 680.42 -65.0 0.54 2034 +2036 4 7.82 681.93 -66.22 0.54 2035 +2037 4 10.21 684.13 -66.68 0.54 2036 +2038 4 10.36 684.6 -68.46 0.54 2037 +2039 4 -68.53 604.57 -30.88 0.865 1961 +2040 4 -69.08 609.08 -31.45 0.865 2039 +2041 4 -69.0 614.17 -31.57 0.865 2040 +2042 4 -68.42 616.32 -31.57 0.865 2041 +2043 4 -67.21 619.67 -31.35 0.865 2042 +2044 4 -66.84 625.07 -31.61 0.865 2043 +2045 4 -67.06 630.75 -31.56 0.865 2044 +2046 4 -66.61 633.94 -31.3 0.865 2045 +2047 4 -66.46 637.44 -30.97 0.865 2046 +2048 4 -65.59 640.58 -30.89 0.54 2047 +2049 4 -65.91 644.53 -30.47 0.54 2048 +2050 4 -64.24 649.25 -30.18 0.54 2049 +2051 4 -62.58 652.77 -29.98 0.54 2050 +2052 4 -61.12 655.25 -28.66 0.54 2051 +2053 4 -59.15 659.67 -28.34 0.54 2052 +2054 4 -56.11 663.66 -28.23 0.54 2053 +2055 4 -53.24 668.4 -28.03 0.54 2054 +2056 4 -51.27 673.13 -27.75 0.54 2055 +2057 4 -50.07 679.22 -27.27 0.54 2056 +2058 4 -49.03 684.55 -26.77 0.54 2057 +2059 4 -48.58 689.26 -26.35 0.54 2058 +2060 4 -47.95 693.21 -25.72 0.54 2059 +2061 4 -47.12 696.32 -26.25 0.54 2060 +2062 4 -45.22 698.92 -28.14 0.54 2061 +2063 4 -43.1 701.08 -28.13 0.54 2062 +2064 4 -42.34 703.36 -27.97 0.54 2063 +2065 4 -40.37 706.27 -27.87 0.54 2064 +2066 4 -38.4 709.47 -27.74 0.54 2065 +2067 4 -36.9 713.44 -27.49 0.54 2066 +2068 4 -35.53 717.56 -27.21 0.54 2067 +2069 4 -34.18 720.16 -27.09 0.54 2068 +2070 4 -30.1 723.41 -25.71 0.54 2069 +2071 4 -26.09 725.2 -25.22 0.54 2070 +2072 4 -22.39 726.69 -24.74 0.54 2071 +2073 4 -19.04 728.84 -24.76 0.54 2072 +2074 4 -17.81 729.46 -24.74 0.54 2073 +2075 4 -15.69 732.52 -24.64 0.54 2074 +2076 4 -14.33 735.11 -24.51 0.54 2075 +2077 4 -13.19 736.11 -23.68 0.54 2076 +2078 4 -11.21 738.41 -23.57 0.54 2077 +2079 4 -9.54 739.49 -23.62 0.54 2078 +2080 4 -7.73 740.42 -23.69 0.54 2079 +2081 4 -17.36 277.69 26.92 1.19 1767 +2082 4 -15.39 280.28 26.99 1.19 2081 +2083 4 -13.39 282.85 25.84 1.19 2082 +2084 4 -11.82 284.96 24.78 1.19 2083 +2085 4 -10.56 287.07 23.65 1.19 2084 +2086 4 -8.93 289.09 23.25 1.19 2085 +2087 4 -8.11 290.11 22.28 1.19 2086 +2088 4 -6.9 291.04 22.26 1.19 2087 +2089 4 -5.65 291.83 23.13 0.755 2088 +2090 4 -4.02 293.26 22.67 0.755 2089 +2091 4 -3.27 294.64 22.73 0.755 2090 +2092 4 -2.78 296.0 21.38 1.08 2091 +2093 4 -1.73 298.6 21.55 1.08 2092 +2094 4 -1.02 300.03 21.09 1.08 2093 +2095 4 -0.04 301.18 20.27 1.08 2094 +2096 4 0.25 302.69 20.4 1.08 2095 +2097 4 0.7 304.37 20.52 1.08 2096 +2098 4 1.14 306.06 20.49 1.08 2097 +2099 4 1.18 307.56 19.43 1.08 2098 +2100 4 1.39 309.18 18.43 1.08 2099 +2101 4 1.89 310.03 17.56 0.755 2100 +2102 4 2.2 310.34 17.63 0.755 2101 +2103 4 3.12 311.24 17.78 0.755 2102 +2104 4 4.06 312.43 18.12 1.08 2103 +2105 4 4.95 313.69 17.94 1.08 2104 +2106 4 5.14 314.72 16.74 1.08 2105 +2107 4 4.92 316.75 16.35 1.08 2106 +2108 4 4.92 318.58 16.53 1.08 2107 +2109 4 4.84 319.58 15.73 1.08 2108 +2110 4 5.23 322.22 15.42 1.08 2109 +2111 4 5.35 324.83 15.36 1.08 2110 +2112 4 5.76 326.25 15.0 1.08 2111 +2113 4 6.0 327.82 14.61 1.08 2112 +2114 4 6.98 329.6 13.71 1.08 2113 +2115 4 7.27 332.96 13.94 1.08 2114 +2116 4 7.1 335.85 14.23 1.08 2115 +2117 4 7.55 338.44 14.45 1.08 2116 +2118 4 7.7 341.33 14.71 0.975 2117 +2119 4 7.32 344.13 14.27 0.975 2118 +2120 4 7.16 346.12 14.47 0.975 2119 +2121 4 5.72 348.74 14.18 0.975 2120 +2122 4 4.94 351.03 14.4 0.865 2121 +2123 4 4.62 354.67 14.78 0.865 2122 +2124 4 5.08 357.26 15.0 0.865 2123 +2125 4 6.28 359.11 14.99 0.865 2124 +2126 4 8.1 360.65 14.98 0.865 2125 +2127 4 9.61 362.79 14.96 0.865 2126 +2128 4 10.51 365.85 15.18 0.865 2127 +2129 4 10.8 370.41 15.6 0.865 2128 +2130 4 11.28 374.18 14.71 0.865 2129 +2131 4 12.49 378.15 14.98 0.865 2130 +2132 4 13.09 380.89 15.2 0.865 2131 +2133 4 14.89 386.39 15.5 0.865 2132 +2134 4 16.25 389.6 15.69 0.865 2133 +2135 4 16.25 392.64 15.98 0.865 2134 +2136 4 17.15 395.08 16.21 0.865 2135 +2137 4 18.52 397.07 16.28 0.865 2136 +2138 4 19.73 399.51 16.41 0.865 2137 +2139 4 20.78 402.41 16.59 0.865 2138 +2140 4 20.61 407.73 17.12 0.865 2139 +2141 4 20.7 411.29 16.79 0.865 2140 +2142 4 20.14 414.87 16.27 0.755 2141 +2143 4 19.98 419.9 16.78 0.755 2142 +2144 4 19.66 422.93 17.11 0.755 2143 +2145 4 18.58 425.81 17.49 0.755 2144 +2146 4 18.43 427.18 17.64 0.755 2145 +2147 4 18.88 429.77 17.85 0.755 2146 +2148 4 17.97 431.28 18.08 0.755 2147 +2149 4 16.43 432.48 18.34 0.755 2148 +2150 4 15.96 433.55 18.34 0.755 2149 +2151 4 16.2 436.36 17.98 0.755 2150 +2152 4 17.27 438.02 18.2 0.755 2151 +2153 4 18.34 440.93 18.45 0.755 2152 +2154 4 18.82 442.56 18.88 0.755 2153 +2155 4 18.97 443.93 19.07 0.755 2154 +2156 4 19.27 447.27 19.44 0.755 2155 +2157 4 19.56 450.62 19.74 0.755 2156 +2158 4 20.19 453.33 20.25 0.755 2157 +2159 4 20.94 455.3 20.45 0.755 2158 +2160 4 21.4 457.6 20.64 0.755 2159 +2161 4 22.46 458.97 20.67 0.755 2160 +2162 4 25.04 462.1 21.2 0.755 2161 +2163 4 26.55 466.07 21.44 0.755 2162 +2164 4 27.91 470.5 21.74 0.755 2163 +2165 4 27.89 473.84 22.08 0.755 2164 +2166 4 27.73 475.52 22.25 0.755 2165 +2167 4 28.04 477.66 23.95 0.54 2166 +2168 4 28.02 479.2 24.02 0.54 2167 +2169 4 29.08 480.27 24.02 0.54 2168 +2170 4 29.8 481.69 23.72 0.54 2169 +2171 4 29.64 483.05 23.79 0.54 2170 +2172 4 29.79 484.42 23.99 0.54 2171 +2173 4 29.53 485.89 24.61 0.54 2172 +2174 4 28.98 486.44 25.39 0.54 2173 +2175 4 29.01 488.22 26.02 0.54 2174 +2176 4 28.58 489.55 26.49 0.54 2175 +2177 4 28.94 490.01 26.5 0.54 2176 +2178 4 28.57 490.08 27.45 0.54 2177 +2179 4 27.96 490.68 27.56 0.54 2178 +2180 4 28.41 492.04 27.65 0.54 2179 +2181 4 28.56 494.01 27.91 0.54 2180 +2182 4 29.32 496.3 28.06 0.54 2181 +2183 4 29.76 496.79 27.91 0.54 2182 +2184 4 30.51 498.77 28.04 0.54 2183 +2185 4 30.47 500.33 27.82 0.54 2184 +2186 4 30.32 501.09 27.91 0.54 2185 +2187 4 30.97 501.65 28.36 0.54 2186 +2188 4 31.5 502.03 29.25 0.54 2187 +2189 4 32.59 503.08 29.56 0.54 2188 +2190 4 33.5 503.69 29.54 0.54 2189 +2191 4 34.15 504.26 29.9 0.54 2190 +2192 4 33.99 506.54 30.22 0.54 2191 +2193 4 33.84 508.21 30.4 0.54 2192 +2194 4 33.53 509.12 30.59 0.54 2193 +2195 4 35.06 509.43 30.48 0.435 2194 +2196 4 35.97 511.57 30.68 0.435 2195 +2197 4 37.18 513.69 30.85 0.435 2196 +2198 4 37.04 514.75 31.04 0.435 2197 +2199 4 37.19 516.41 31.26 0.435 2198 +2200 4 38.28 518.06 31.71 0.435 2199 +2201 4 39.65 519.14 31.68 0.435 2200 +2202 4 41.49 521.57 31.98 0.435 2201 +2203 4 41.85 521.81 32.65 0.435 2202 +2204 4 43.07 522.74 32.63 0.435 2203 +2205 4 44.13 523.8 32.7 0.435 2204 +2206 4 45.06 524.72 32.86 0.435 2205 +2207 4 45.85 526.67 33.28 0.435 2206 +2208 4 47.11 528.13 33.91 0.54 2207 +2209 4 48.02 529.06 33.99 0.54 2208 +2210 4 48.39 529.9 34.73 0.54 2209 +2211 4 48.13 531.37 35.42 0.54 2210 +2212 4 48.64 533.6 36.19 0.54 2211 +2213 4 49.72 534.64 36.58 0.54 2212 +2214 4 50.83 536.28 37.09 0.54 2213 +2215 4 51.47 537.45 37.59 0.54 2214 +2216 4 51.81 539.24 38.2 0.54 2215 +2217 4 51.83 540.13 38.5 0.54 2216 +2218 4 51.84 541.34 38.7 0.54 2217 +2219 4 52.15 542.24 38.83 0.54 2218 +2220 4 52.33 543.59 39.32 0.54 2219 +2221 4 53.6 545.36 39.99 0.54 2220 +2222 4 54.28 545.89 40.81 0.54 2221 +2223 4 55.34 546.35 40.83 0.54 2222 +2224 4 56.13 546.78 41.09 0.54 2223 +2225 4 56.77 547.36 41.39 0.54 2224 +2226 4 57.57 548.09 41.93 0.54 2225 +2227 4 57.56 550.21 42.21 0.54 2226 +2228 4 57.72 551.28 42.29 0.54 2227 +2229 4 57.57 552.32 42.56 0.54 2228 +2230 4 58.03 553.09 42.6 0.54 2229 +2231 4 58.34 553.99 42.74 0.54 2230 +2232 4 59.13 554.73 43.11 0.54 2231 +2233 4 59.45 555.63 43.32 0.54 2232 +2234 4 59.32 556.35 43.7 0.54 2233 +2235 4 59.47 558.03 43.94 0.54 2234 +2236 4 58.88 558.3 44.17 0.54 2235 +2237 4 29.04 490.61 26.63 0.54 2177 +2238 4 29.72 492.36 27.64 0.54 2237 +2239 4 30.65 494.47 27.99 0.54 2238 +2240 4 32.98 497.63 28.69 0.54 2239 +2241 4 34.1 499.26 29.35 0.54 2240 +2242 4 34.53 499.43 29.09 0.54 2241 +2243 4 35.37 501.32 28.6 0.54 2242 +2244 4 36.74 502.7 28.61 0.54 2243 +2245 4 37.77 504.43 28.3 0.54 2244 +2246 4 38.65 506.3 28.03 0.54 2245 +2247 4 39.81 507.26 27.49 0.54 2246 +2248 4 41.92 509.73 27.45 0.54 2247 +2249 4 42.23 511.56 27.6 0.54 2248 +2250 4 43.71 512.51 27.26 0.54 2249 +2251 4 44.78 513.28 27.24 0.54 2250 +2252 4 46.29 515.73 27.34 0.54 2251 +2253 4 47.49 518.78 27.44 0.54 2252 +2254 4 48.37 519.74 27.16 0.54 2253 +2255 4 49.59 521.58 27.15 0.54 2254 +2256 4 51.09 522.81 27.13 0.54 2255 +2257 4 51.84 523.29 27.02 0.54 2256 +2258 4 52.76 524.21 26.97 0.54 2257 +2259 4 53.56 524.62 27.46 0.54 2258 +2260 4 54.52 525.19 28.03 0.54 2259 +2261 4 56.24 527.44 28.55 0.54 2260 +2262 4 57.33 528.46 29.0 0.54 2261 +2263 4 58.44 530.41 29.61 0.54 2262 +2264 4 59.99 533.42 30.14 0.54 2263 +2265 4 60.91 535.55 30.41 0.54 2264 +2266 4 61.08 536.92 29.03 0.54 2265 +2267 4 59.7 537.66 29.22 0.54 2266 +2268 4 59.23 538.12 29.16 0.54 2267 +2269 4 59.76 538.5 29.98 0.54 2268 +2270 4 59.88 539.59 29.85 0.54 2269 +2271 4 59.98 539.81 29.25 0.54 2270 +2272 4 59.62 540.17 28.64 0.54 2271 +2273 4 59.29 540.5 28.4 0.54 2272 +2274 4 59.24 541.17 27.94 0.54 2273 +2275 4 59.32 541.68 27.3 0.54 2274 +2276 4 58.81 542.19 26.79 0.54 2275 +2277 4 58.14 543.48 26.23 0.54 2276 +2278 4 58.07 544.76 25.76 0.54 2277 +2279 4 58.32 546.03 25.25 0.54 2278 +2280 4 58.55 547.32 24.67 0.54 2279 +2281 4 58.82 547.67 24.22 0.54 2280 +2282 4 59.4 548.3 24.01 0.54 2281 +2283 4 60.73 549.42 23.54 0.54 2282 +2284 4 61.76 549.92 23.19 0.54 2283 +2285 4 63.43 551.0 23.07 0.54 2284 +2286 4 64.13 552.74 22.58 0.54 2285 +2287 4 64.24 553.84 22.29 0.54 2286 +2288 4 65.11 554.8 21.85 0.54 2287 +2289 4 65.65 555.19 21.08 0.54 2288 +2290 4 66.55 555.81 20.98 0.54 2289 +2291 4 67.24 556.66 20.24 0.54 2290 +2292 4 67.35 556.86 19.72 0.54 2291 +2293 4 68.34 558.0 18.99 0.54 2292 +2294 4 69.21 559.57 18.62 0.54 2293 +2295 4 70.23 560.4 18.14 0.54 2294 +2296 4 70.45 560.79 17.17 0.54 2295 +2297 4 70.86 561.29 16.81 0.54 2296 +2298 4 71.45 561.94 16.52 0.54 2297 +2299 4 72.6 563.83 15.99 0.54 2298 +2300 4 72.7 565.56 15.61 0.54 2299 +2301 4 73.54 568.06 15.03 0.54 2300 +2302 4 74.38 568.75 14.34 0.54 2301 +2303 4 74.67 569.39 12.56 0.54 2302 +2304 4 75.73 570.17 12.39 0.54 2303 +2305 4 76.89 571.45 11.81 0.54 2304 +2306 4 77.94 573.13 11.87 0.54 2305 +2307 4 78.76 575.36 11.1 0.54 2306 +2308 4 79.3 576.06 10.3 0.54 2307 +2309 4 80.31 577.19 9.71 0.54 2308 +2310 4 81.31 578.93 9.17 0.54 2309 +2311 4 82.86 579.76 8.13 0.54 2310 +2312 4 83.76 583.11 8.38 0.54 2311 +2313 4 83.89 585.4 8.52 0.54 2312 +2314 4 83.09 588.03 8.39 0.54 2313 +2315 4 82.89 591.55 8.53 0.54 2314 +2316 4 82.42 594.13 8.74 0.54 2315 +2317 4 82.09 597.81 8.83 0.54 2316 +2318 4 80.69 599.8 8.85 0.54 2317 +2319 4 79.69 600.78 8.21 0.54 2318 +2320 4 26.36 477.48 22.58 0.755 2166 +2321 4 24.42 479.08 23.43 0.755 2320 +2322 4 23.06 481.64 23.96 0.755 2321 +2323 4 21.95 482.74 23.71 0.755 2322 +2324 4 21.76 484.24 25.7 0.755 2323 +2325 4 21.44 485.15 25.82 0.755 2324 +2326 4 21.44 488.19 26.11 0.755 2325 +2327 4 22.34 490.02 26.21 0.54 2326 +2328 4 23.55 491.86 26.27 0.54 2327 +2329 4 24.7 492.57 25.41 0.54 2328 +2330 4 26.64 493.37 25.0 0.54 2329 +2331 4 28.16 494.6 24.99 0.54 2330 +2332 4 29.82 496.6 25.02 0.54 2331 +2333 4 31.5 499.79 25.33 0.54 2332 +2334 4 35.02 503.9 25.71 0.54 2333 +2335 4 36.39 505.89 25.78 0.54 2334 +2336 4 37.44 507.57 25.85 0.54 2335 +2337 4 39.27 508.79 25.87 0.54 2336 +2338 4 41.55 511.1 25.89 0.54 2337 +2339 4 43.37 512.94 25.89 0.54 2338 +2340 4 45.21 515.97 26.41 0.54 2339 +2341 4 46.45 518.1 26.65 0.54 2340 +2342 4 47.53 519.74 27.02 0.54 2341 +2343 4 48.62 522.01 27.43 0.54 2342 +2344 4 50.17 523.2 27.78 0.54 2343 +2345 4 50.85 523.74 28.6 0.54 2344 +2346 4 51.93 524.48 28.81 0.54 2345 +2347 4 53.46 526.01 28.88 0.54 2346 +2348 4 56.05 529.52 29.14 0.54 2347 +2349 4 57.74 531.78 29.58 0.54 2348 +2350 4 58.99 534.18 30.08 0.54 2349 +2351 4 59.92 536.9 30.63 0.54 2350 +2352 4 60.03 537.4 31.74 0.54 2351 +2353 4 59.3 538.72 32.39 0.54 2352 +2354 4 58.51 539.21 30.61 0.54 2353 +2355 4 58.69 540.25 29.33 0.54 2354 +2356 4 58.29 541.25 28.49 0.54 2355 +2357 4 58.14 542.0 28.57 0.54 2356 +2358 4 57.79 542.95 28.32 0.54 2357 +2359 4 57.57 544.41 27.59 0.54 2358 +2360 4 57.43 545.47 26.19 0.54 2359 +2361 4 57.68 547.64 25.92 0.54 2360 +2362 4 58.55 549.2 25.61 0.54 2361 +2363 4 60.81 550.32 25.21 0.54 2362 +2364 4 62.55 551.33 24.39 0.54 2363 +2365 4 64.07 552.86 24.33 0.54 2364 +2366 4 64.52 555.77 24.57 0.54 2365 +2367 4 66.41 556.93 23.6 0.54 2366 +2368 4 67.27 557.6 23.06 0.54 2367 +2369 4 69.63 560.75 22.39 0.54 2368 +2370 4 70.56 562.25 21.01 0.54 2369 +2371 4 71.46 562.88 19.26 0.54 2370 +2372 4 71.6 564.27 19.3 0.54 2371 +2373 4 72.57 565.75 18.3 0.54 2372 +2374 4 72.91 568.45 17.39 0.54 2373 +2375 4 73.87 569.02 16.15 0.54 2374 +2376 4 74.26 569.56 15.34 0.54 2375 +2377 4 74.92 571.33 14.54 0.54 2376 +2378 4 76.82 573.71 13.77 0.54 2377 +2379 4 77.18 574.27 12.73 0.54 2378 +2380 4 78.21 575.39 12.36 0.54 2379 +2381 4 79.55 577.99 12.43 0.54 2380 +2382 4 80.96 580.25 11.3 0.54 2381 +2383 4 81.84 581.2 11.02 0.54 2382 +2384 4 82.74 582.73 11.0 0.54 2383 +2385 4 82.67 584.93 10.54 0.54 2384 +2386 4 82.51 588.13 10.79 0.54 2385 +2387 4 81.97 591.69 10.44 0.54 2386 +2388 4 81.88 593.0 9.67 0.54 2387 +2389 4 81.54 596.06 9.69 0.54 2388 +2390 4 81.34 597.5 9.25 0.54 2389 +2391 4 80.58 599.45 8.0 0.54 2390 +2392 4 79.34 601.89 8.2 0.54 2391 +2393 4 78.44 602.79 6.85 0.54 2392 +2394 4 20.72 483.94 23.94 0.755 2323 +2395 4 19.2 485.14 24.21 0.755 2394 +2396 4 16.73 486.68 24.28 0.755 2395 +2397 4 15.18 489.43 24.38 0.755 2396 +2398 4 14.35 490.85 23.92 0.755 2397 +2399 4 12.92 492.26 23.58 0.755 2398 +2400 4 11.82 493.95 23.63 0.755 2399 +2401 4 9.92 496.43 23.29 0.755 2400 +2402 4 7.41 498.92 23.01 0.755 2401 +2403 4 5.5 501.41 22.6 0.755 2402 +2404 4 4.59 502.93 22.83 0.755 2403 +2405 4 3.9 503.93 22.08 0.755 2404 +2406 4 3.28 506.96 22.44 0.755 2405 +2407 4 1.99 508.53 22.03 0.755 2406 +2408 4 -0.01 509.91 22.05 0.755 2407 +2409 4 -1.77 511.36 21.36 0.755 2408 +2410 4 -4.16 512.8 20.74 0.755 2409 +2411 4 -6.66 514.37 20.37 0.755 2410 +2412 4 -9.32 516.4 20.06 0.755 2411 +2413 4 -11.82 518.26 19.87 0.755 2412 +2414 4 -14.28 520.09 20.05 0.755 2413 +2415 4 -16.46 522.25 20.0 0.755 2414 +2416 4 -18.6 524.05 20.3 0.755 2415 +2417 4 -20.89 525.7 20.67 0.755 2416 +2418 4 -23.94 527.8 21.16 0.755 2417 +2419 4 -26.93 529.84 20.72 0.755 2418 +2420 4 -29.22 531.8 21.05 0.755 2419 +2421 4 -29.98 534.08 21.35 0.755 2420 +2422 4 -30.75 534.84 20.96 0.755 2421 +2423 4 -31.21 536.5 21.16 0.755 2422 +2424 4 -30.76 540.01 21.46 0.755 2423 +2425 4 -30.25 542.53 20.68 0.755 2424 +2426 4 -30.3 545.32 20.51 0.755 2425 +2427 4 -30.29 546.84 19.14 0.755 2426 +2428 4 -30.31 549.89 19.29 0.755 2427 +2429 4 -29.75 552.96 19.23 0.755 2428 +2430 4 -30.09 554.54 18.9 0.755 2429 +2431 4 -31.06 556.7 18.74 0.755 2430 +2432 4 -32.64 557.96 18.4 0.755 2431 +2433 4 -32.86 561.2 18.21 0.755 2432 +2434 4 -33.38 564.45 17.96 0.755 2433 +2435 4 -34.04 566.93 17.68 0.755 2434 +2436 4 -33.96 570.49 17.41 0.755 2435 +2437 4 -33.17 573.98 16.38 0.755 2436 +2438 4 -32.45 577.82 16.32 0.755 2437 +2439 4 -32.12 579.92 15.2 0.755 2438 +2440 4 -32.25 582.78 14.22 0.755 2439 +2441 4 -32.01 584.97 13.8 0.755 2440 +2442 4 -31.58 586.68 13.62 0.755 2441 +2443 4 -30.45 589.2 12.94 0.755 2442 +2444 4 -29.95 590.83 11.99 0.755 2443 +2445 4 -29.68 592.4 11.66 0.755 2444 +2446 4 -29.88 595.32 11.58 0.755 2445 +2447 4 -29.65 597.51 11.17 0.755 2446 +2448 4 -28.28 599.5 11.17 0.755 2447 +2449 4 -26.84 601.72 10.49 0.755 2448 +2450 4 -27.0 604.61 10.79 0.755 2449 +2451 4 -26.27 606.94 10.56 0.755 2450 +2452 4 -25.77 609.69 10.64 0.755 2451 +2453 4 -26.39 612.12 10.93 0.755 2452 +2454 4 -27.3 614.54 11.26 0.755 2453 +2455 4 -28.75 616.58 10.76 0.755 2454 +2456 4 -29.58 619.82 10.55 0.755 2455 +2457 4 -29.82 622.48 10.07 0.755 2456 +2458 4 -30.14 625.24 10.14 0.755 2457 +2459 4 -31.18 628.09 9.23 0.755 2458 +2460 4 -31.97 631.59 9.5 0.755 2459 +2461 4 -33.21 634.65 9.68 0.755 2460 +2462 4 -34.46 637.08 9.95 0.755 2461 +2463 4 -34.52 640.79 9.65 0.755 2462 +2464 4 -35.78 643.25 9.62 0.755 2463 +2465 4 -36.33 645.32 8.9 0.755 2464 +2466 4 -37.28 647.47 8.89 0.755 2465 +2467 4 -38.71 650.71 8.74 0.755 2466 +2468 4 -39.06 654.69 8.85 0.755 2467 +2469 4 -38.94 658.81 9.09 0.755 2468 +2470 4 -38.69 661.92 8.7 0.755 2469 +2471 4 -38.58 665.73 8.9 0.755 2470 +2472 4 -38.48 669.28 8.79 0.755 2471 +2473 4 -36.45 674.25 8.18 0.755 2472 +2474 4 -35.23 677.91 8.42 0.755 2473 +2475 4 -35.36 680.69 7.11 0.755 2474 +2476 4 -35.11 684.39 6.85 0.755 2475 +2477 4 -35.23 686.32 7.57 0.755 2476 +2478 4 -35.07 688.29 7.83 0.755 2477 +2479 4 -35.04 690.69 6.85 0.755 2478 +2480 4 -34.86 693.24 5.88 0.755 2479 +2481 4 -34.95 696.08 5.1 0.755 2480 +2482 4 -35.02 698.27 4.64 0.755 2481 +2483 4 -34.65 700.63 4.07 0.755 2482 +2484 4 -34.07 703.1 3.9 0.755 2483 +2485 4 -32.44 705.74 2.11 0.755 2484 +2486 4 -30.6 706.97 2.06 0.755 2485 +2487 4 -28.65 708.68 1.9 0.755 2486 +2488 4 -27.71 709.59 0.45 0.755 2487 +2489 4 -25.75 710.99 0.26 0.755 2488 +2490 4 -24.15 712.43 -0.41 0.755 2489 +2491 4 -21.64 713.91 -1.26 0.755 2490 +2492 4 -20.49 715.5 -1.96 0.755 2491 +2493 4 -19.15 716.91 -2.25 0.755 2492 +2494 4 -17.57 718.38 -3.09 0.755 2493 +2495 4 -15.77 719.65 -3.57 0.755 2494 +2496 4 -14.31 720.93 -4.04 0.755 2495 +2497 4 -13.02 722.09 -4.96 0.755 2496 +2498 4 -12.3 722.91 -5.48 0.755 2497 +2499 4 0.45 311.01 18.62 0.975 2100 +2500 4 -0.41 312.78 17.74 0.975 2499 +2501 4 -1.24 313.6 17.23 0.975 2500 +2502 4 -1.75 314.11 16.64 0.975 2501 +2503 4 -1.81 316.3 16.33 0.975 2502 +2504 4 -1.73 318.05 15.65 0.975 2503 +2505 4 -2.05 319.58 15.76 0.975 2504 +2506 4 -2.58 321.63 15.25 0.975 2505 +2507 4 -3.23 322.86 15.13 0.975 2506 +2508 4 -4.25 324.19 14.06 0.865 2507 +2509 4 -5.18 325.71 14.3 0.865 2508 +2510 4 -5.49 328.14 14.56 0.865 2509 +2511 4 -4.58 331.49 14.81 0.865 2510 +2512 4 -3.58 333.83 14.42 0.865 2511 +2513 4 -3.49 335.87 13.94 0.865 2512 +2514 4 -3.81 338.62 14.08 0.865 2513 +2515 4 -5.36 341.96 14.47 0.865 2514 +2516 4 -6.25 344.68 13.45 0.865 2515 +2517 4 -7.41 347.64 12.94 0.865 2516 +2518 4 -8.21 349.66 12.76 0.865 2517 +2519 4 -9.21 351.85 12.23 0.865 2518 +2520 4 -9.95 353.8 11.13 0.865 2519 +2521 4 -10.57 356.85 11.42 0.865 2520 +2522 4 -11.34 358.81 11.68 0.865 2521 +2523 4 -12.0 361.28 11.53 0.865 2522 +2524 4 -14.22 363.19 11.01 0.865 2523 +2525 4 -15.83 365.69 10.49 0.865 2524 +2526 4 -18.06 369.41 10.07 0.865 2525 +2527 4 -19.29 373.04 10.54 0.865 2526 +2528 4 -22.14 377.07 10.14 0.865 2527 +2529 4 -23.1 379.24 9.98 0.865 2528 +2530 4 -23.53 380.89 8.84 0.865 2529 +2531 4 -23.88 383.35 8.72 0.865 2530 +2532 4 -24.53 387.03 8.77 0.865 2531 +2533 4 -24.08 389.32 8.95 0.865 2532 +2534 4 -24.09 391.45 9.16 0.865 2533 +2535 4 -24.86 394.03 9.48 0.865 2534 +2536 4 -25.48 395.85 8.05 0.865 2535 +2537 4 -26.13 397.42 7.81 0.865 2536 +2538 4 -26.68 399.8 7.1 0.865 2537 +2539 4 -26.49 400.51 6.33 0.865 2538 +2540 4 -25.58 402.04 6.39 0.865 2539 +2541 4 -24.74 402.73 7.22 0.865 2540 +2542 4 -24.29 404.69 7.51 0.865 2541 +2543 4 -23.23 406.69 7.6 0.755 2542 +2544 4 -22.88 408.46 8.29 0.755 2543 +2545 4 -22.43 409.53 8.35 0.755 2544 +2546 4 -21.7 410.33 8.05 0.755 2545 +2547 4 -20.98 411.14 7.53 0.755 2546 +2548 4 -20.3 412.0 6.66 0.755 2547 +2549 4 -19.27 412.5 6.31 0.755 2548 +2550 4 -18.52 412.96 6.2 0.865 2549 +2551 4 -17.16 414.95 6.27 0.865 2550 +2552 4 -15.9 417.06 5.15 0.865 2551 +2553 4 -14.49 419.23 4.55 0.865 2552 +2554 4 -14.04 422.43 4.83 0.865 2553 +2555 4 -13.9 425.02 3.32 0.865 2554 +2556 4 -14.02 426.97 2.32 0.865 2555 +2557 4 -14.02 429.4 1.04 0.865 2556 +2558 4 -13.44 431.27 0.72 0.865 2557 +2559 4 -12.65 432.3 -0.38 0.865 2558 +2560 4 -11.8 433.29 -1.12 0.865 2559 +2561 4 -10.33 434.26 -1.62 0.865 2560 +2562 4 -9.34 435.12 -2.54 0.865 2561 +2563 4 -7.91 435.84 -3.57 0.865 2562 +2564 4 -6.58 436.96 -3.96 0.865 2563 +2565 4 -5.57 439.61 -4.4 0.865 2564 +2566 4 -5.38 440.92 -5.34 0.865 2565 +2567 4 -4.84 441.91 -6.06 0.865 2566 +2568 4 -4.81 443.41 -7.21 0.865 2567 +2569 4 -4.87 444.69 -7.75 0.865 2568 +2570 4 -5.13 445.57 -8.86 0.865 2569 +2571 4 -5.01 446.65 -8.98 0.865 2570 +2572 4 -4.96 447.81 -9.93 0.865 2571 +2573 4 -5.06 449.15 -10.93 0.865 2572 +2574 4 -4.75 449.29 -11.62 0.54 2573 +2575 4 -3.29 449.98 -12.38 0.54 2574 +2576 4 -2.58 450.49 -13.0 0.54 2575 +2577 4 -2.33 450.54 -13.46 0.54 2576 +2578 4 -1.64 451.07 -14.22 0.54 2577 +2579 4 -0.5 452.39 -15.11 0.54 2578 +2580 4 -0.14 453.85 -15.99 0.54 2579 +2581 4 -0.05 454.99 -16.57 0.54 2580 +2582 4 0.18 455.67 -17.28 0.54 2581 +2583 4 0.48 455.98 -17.35 0.54 2582 +2584 4 0.13 456.62 -17.63 0.54 2583 +2585 4 0.62 457.37 -18.97 0.54 2584 +2586 4 -0.14 458.15 -20.56 0.54 2585 +2587 4 -0.75 459.36 -22.05 0.54 2586 +2588 4 -1.78 460.98 -22.94 0.54 2587 +2589 4 -1.54 462.27 -23.57 0.54 2588 +2590 4 -0.84 464.32 -24.05 0.54 2589 +2591 4 -1.11 464.9 -25.33 0.54 2590 +2592 4 -0.49 465.5 -25.11 0.54 2591 +2593 4 -0.34 466.55 -24.94 0.54 2592 +2594 4 -0.49 467.31 -26.45 0.54 2593 +2595 4 -0.39 468.13 -26.97 0.54 2594 +2596 4 -0.74 470.01 -27.28 0.54 2595 +2597 4 -0.97 470.83 -27.87 0.54 2596 +2598 4 -1.67 472.13 -28.58 0.54 2597 +2599 4 -0.75 473.06 -28.65 0.54 2598 +2600 4 0.2 473.93 -29.71 0.54 2599 +2601 4 0.79 474.26 -29.96 0.54 2600 +2602 4 2.11 475.08 -30.54 0.54 2601 +2603 4 2.81 475.31 -31.25 0.54 2602 +2604 4 3.67 475.98 -31.81 0.54 2603 +2605 4 5.03 477.05 -31.82 0.54 2604 +2606 4 5.69 477.93 -32.93 0.54 2605 +2607 4 6.67 479.09 -33.81 0.54 2606 +2608 4 7.67 481.74 -34.25 0.54 2607 +2609 4 8.44 482.82 -35.8 0.54 2608 +2610 4 9.07 484.33 -37.16 0.54 2609 +2611 4 9.71 485.22 -38.41 0.54 2610 +2612 4 10.16 485.67 -38.41 0.54 2611 +2613 4 11.12 486.86 -39.51 0.54 2612 +2614 4 11.62 487.59 -40.69 0.54 2613 +2615 4 12.5 488.85 -40.96 0.54 2614 +2616 4 13.86 490.84 -40.89 0.54 2615 +2617 4 14.78 491.76 -40.88 0.54 2616 +2618 4 15.2 492.24 -41.18 0.54 2617 +2619 4 15.27 493.08 -41.94 0.54 2618 +2620 4 16.1 493.79 -42.86 0.54 2619 +2621 4 16.49 494.33 -43.6 0.54 2620 +2622 4 16.5 494.62 -45.07 0.54 2621 +2623 4 17.73 495.24 -45.13 0.54 2622 +2624 4 18.31 495.88 -45.34 0.54 2623 +2625 4 18.85 496.56 -46.09 0.54 2624 +2626 4 19.69 497.56 -46.82 0.54 2625 +2627 4 20.38 498.39 -47.49 0.54 2626 +2628 4 21.06 499.85 -48.25 0.54 2627 +2629 4 21.6 501.14 -48.84 0.54 2628 +2630 4 22.39 502.73 -48.76 0.54 2629 +2631 4 22.61 503.49 -49.38 0.54 2630 +2632 4 23.96 504.88 -49.45 0.54 2631 +2633 4 25.57 508.45 -49.93 0.54 2632 +2634 4 26.97 511.91 -50.78 0.54 2633 +2635 4 27.71 513.93 -50.89 0.54 2634 +2636 4 28.54 515.53 -51.56 0.54 2635 +2637 4 28.97 516.64 -51.94 0.54 2636 +2638 4 29.65 518.08 -52.54 0.54 2637 +2639 4 30.79 519.69 -53.39 0.54 2638 +2640 4 32.95 523.04 -54.55 0.54 2639 +2641 4 33.78 525.84 -55.04 0.54 2640 +2642 4 34.99 529.21 -56.49 0.54 2641 +2643 4 35.75 531.81 -57.97 0.54 2642 +2644 4 36.13 533.87 -58.56 0.54 2643 +2645 4 35.91 537.95 -58.37 0.54 2644 +2646 4 36.37 539.31 -59.71 0.54 2645 +2647 4 37.22 541.51 -60.26 0.54 2646 +2648 4 37.72 543.15 -61.28 0.54 2647 +2649 4 38.29 543.73 -61.27 0.54 2648 +2650 4 38.41 544.21 -61.54 0.11 2649 +2651 4 37.6 545.31 -61.8 0.435 2650 +2652 4 36.83 548.18 -61.46 0.435 2651 +2653 4 36.22 550.02 -61.31 0.435 2652 +2654 4 35.87 550.37 -61.69 0.435 2653 +2655 4 35.35 553.01 -61.99 0.435 2654 +2656 4 34.88 554.08 -61.91 0.435 2655 +2657 4 35.14 556.25 -62.18 0.435 2656 +2658 4 35.21 557.09 -63.01 0.435 2657 +2659 4 35.17 557.73 -63.25 0.435 2658 +2660 4 35.41 559.32 -63.79 0.435 2659 +2661 4 35.81 559.85 -64.46 0.435 2660 +2662 4 35.76 560.51 -64.85 0.435 2661 +2663 4 36.27 561.21 -65.89 0.435 2662 +2664 4 36.21 562.19 -66.39 0.435 2663 +2665 4 36.15 562.25 -67.05 0.435 2664 +2666 4 36.99 563.24 -67.71 0.435 2665 +2667 4 38.29 565.32 -68.54 0.435 2666 +2668 4 38.96 565.85 -67.72 0.435 2667 +2669 4 39.41 566.93 -67.72 0.435 2668 +2670 4 39.67 567.27 -68.17 0.435 2669 +2671 4 39.73 567.54 -69.29 0.435 2670 +2672 4 40.12 568.06 -69.95 0.435 2671 +2673 4 40.64 568.76 -70.84 0.435 2672 +2674 4 40.89 569.12 -71.43 0.435 2673 +2675 4 41.23 569.41 -72.72 0.435 2674 +2676 4 42.55 570.23 -73.3 0.435 2675 +2677 4 43.04 570.96 -74.47 0.435 2676 +2678 4 44.59 571.87 -75.89 0.435 2677 +2679 4 46.21 572.71 -76.57 0.435 2678 +2680 4 47.96 574.0 -77.28 0.435 2679 +2681 4 48.98 574.52 -77.86 0.435 2680 +2682 4 49.68 575.06 -78.69 0.435 2681 +2683 4 51.18 576.3 -78.86 0.435 2682 +2684 4 52.38 576.63 -79.02 0.435 2683 +2685 4 53.07 576.56 -79.84 0.435 2684 +2686 4 53.63 576.92 -80.4 0.435 2685 +2687 4 54.5 577.58 -80.94 0.435 2686 +2688 4 38.92 545.0 -61.35 0.54 2649 +2689 4 39.59 545.86 -62.32 0.54 2688 +2690 4 39.83 547.44 -62.8 0.54 2689 +2691 4 40.2 548.91 -63.59 0.54 2690 +2692 4 39.93 549.79 -64.76 0.54 2691 +2693 4 40.73 551.11 -64.25 0.54 2692 +2694 4 42.55 552.96 -64.25 0.54 2693 +2695 4 44.21 554.65 -64.3 0.54 2694 +2696 4 44.58 555.52 -65.24 0.54 2695 +2697 4 45.64 557.2 -65.18 0.54 2696 +2698 4 46.81 559.99 -66.97 0.54 2697 +2699 4 48.13 562.04 -67.51 0.54 2698 +2700 4 49.0 564.21 -67.81 0.54 2699 +2701 4 50.03 565.33 -68.19 0.54 2700 +2702 4 50.9 566.28 -68.55 0.54 2701 +2703 4 52.68 567.85 -68.94 0.54 2702 +2704 4 56.02 571.54 -68.89 0.54 2703 +2705 4 58.84 573.92 -69.67 0.54 2704 +2706 4 60.43 575.37 -70.44 0.54 2705 +2707 4 61.6 576.65 -70.87 0.54 2706 +2708 4 63.19 579.03 -71.7 0.54 2707 +2709 4 63.94 579.81 -71.76 0.54 2708 +2710 4 65.4 581.1 -72.45 0.54 2709 +2711 4 66.7 581.94 -73.17 0.54 2710 +2712 4 69.07 583.76 -73.37 0.54 2711 +2713 4 70.55 584.43 -73.95 0.54 2712 +2714 4 72.2 585.53 -74.23 0.54 2713 +2715 4 73.5 586.37 -74.95 0.54 2714 +2716 4 74.67 587.34 -75.5 0.54 2715 +2717 4 76.08 588.98 -76.59 0.54 2716 +2718 4 78.19 590.26 -76.9 0.54 2717 +2719 4 79.84 591.64 -76.99 0.54 2718 +2720 4 80.71 592.31 -77.6 0.54 2719 +2721 4 82.15 593.33 -78.55 0.54 2720 +2722 4 82.64 594.06 -79.73 0.54 2721 +2723 4 84.0 594.84 -79.86 0.54 2722 +2724 4 84.73 595.34 -80.26 0.54 2723 +2725 4 85.78 596.12 -80.35 0.54 2724 +2726 4 86.62 596.81 -81.11 0.54 2725 +2727 4 -5.68 450.37 -10.83 0.755 2573 +2728 4 -7.62 451.97 -11.56 0.755 2727 +2729 4 -8.69 452.12 -11.59 0.755 2728 +2730 4 -10.72 453.23 -11.83 0.755 2729 +2731 4 -11.21 454.92 -11.91 0.755 2730 +2732 4 -12.07 457.6 -12.63 0.755 2731 +2733 4 -12.78 459.52 -13.43 0.755 2732 +2734 4 -13.79 461.13 -14.09 0.755 2733 +2735 4 -14.92 462.85 -14.51 0.755 2734 +2736 4 -16.0 466.65 -14.1 0.755 2735 +2737 4 -17.08 471.05 -13.58 0.65 2736 +2738 4 -17.55 473.64 -13.28 0.65 2737 +2739 4 -18.17 476.06 -12.99 0.65 2738 +2740 4 -18.93 477.41 -12.79 0.65 2739 +2741 4 -18.92 478.03 -12.72 0.65 2740 +2742 4 -19.99 479.08 -12.52 0.65 2741 +2743 4 -20.0 481.22 -12.32 0.65 2742 +2744 4 -20.47 484.1 -11.99 0.65 2743 +2745 4 -21.39 487.12 -11.61 0.65 2744 +2746 4 -22.53 489.47 -12.03 0.65 2745 +2747 4 -23.69 491.23 -12.66 0.65 2746 +2748 4 -25.08 494.72 -12.35 0.65 2747 +2749 4 -26.47 498.82 -11.82 0.65 2748 +2750 4 -27.38 501.55 -11.47 0.65 2749 +2751 4 -28.46 503.51 -11.17 0.65 2750 +2752 4 -29.07 504.49 -11.02 0.65 2751 +2753 4 -28.35 504.98 -11.42 0.54 2752 +2754 4 -27.59 505.75 -11.41 0.54 2753 +2755 4 -26.52 506.52 -11.44 0.54 2754 +2756 4 -25.61 507.43 -11.43 0.54 2755 +2757 4 -25.62 508.66 -11.31 0.54 2756 +2758 4 -25.5 509.45 -11.63 0.54 2757 +2759 4 -24.78 510.86 -11.86 0.54 2758 +2760 4 -24.04 512.26 -12.01 0.54 2759 +2761 4 -22.72 514.91 -12.41 0.54 2760 +2762 4 -21.39 515.71 -12.76 0.54 2761 +2763 4 -20.04 517.11 -12.96 0.54 2762 +2764 4 -18.72 518.54 -13.41 0.54 2763 +2765 4 -17.36 519.63 -13.58 0.54 2764 +2766 4 -16.54 521.23 -14.33 0.54 2765 +2767 4 -15.85 523.9 -14.89 0.54 2766 +2768 4 -15.57 526.04 -14.86 0.54 2767 +2769 4 -14.71 528.24 -15.25 0.54 2768 +2770 4 -14.13 529.49 -15.49 0.54 2769 +2771 4 -11.55 531.19 -15.62 0.54 2770 +2772 4 -9.73 533.95 -15.53 0.54 2771 +2773 4 -8.89 536.13 -15.92 0.54 2772 +2774 4 -8.8 538.78 -16.35 0.54 2773 +2775 4 -7.45 543.52 -16.1 0.54 2774 +2776 4 -7.16 546.86 -15.79 0.54 2775 +2777 4 -6.71 550.38 -15.49 0.54 2776 +2778 4 -6.26 552.04 -15.37 0.54 2777 +2779 4 -6.58 554.78 -15.08 0.54 2778 +2780 4 -6.43 557.07 -14.86 0.54 2779 +2781 4 -5.68 559.05 -14.74 0.54 2780 +2782 4 -4.0 560.12 -14.79 0.54 2781 +2783 4 -3.71 562.26 -14.61 0.54 2782 +2784 4 -3.24 565.75 -14.08 0.54 2783 +2785 4 -3.1 568.93 -13.79 0.54 2784 +2786 4 -2.49 570.47 -13.69 0.54 2785 +2787 4 -2.65 573.04 -13.35 0.54 2786 +2788 4 -3.35 576.46 -12.2 0.54 2787 +2789 4 -3.06 579.81 -11.9 0.54 2788 +2790 4 -1.85 581.94 -11.8 0.54 2789 +2791 4 -0.34 585.61 -11.58 0.54 2790 +2792 4 1.06 590.57 -10.55 0.54 2791 +2793 4 1.36 592.1 -10.43 0.54 2792 +2794 4 2.42 593.18 -10.43 0.54 2793 +2795 4 3.33 594.09 -10.42 0.54 2794 +2796 4 4.09 596.99 -10.21 0.54 2795 +2797 4 5.18 601.67 -9.4 0.54 2796 +2798 4 6.39 605.03 -9.1 0.54 2797 +2799 4 8.17 608.71 -7.63 0.54 2798 +2800 4 8.66 611.57 -6.94 0.54 2799 +2801 4 8.85 612.9 -6.37 0.54 2800 +2802 4 8.73 614.22 -5.85 0.54 2801 +2803 4 8.63 615.53 -5.1 0.54 2802 +2804 4 8.21 617.15 -4.3 0.54 2803 +2805 4 7.77 618.49 -3.91 0.54 2804 +2806 4 -29.22 505.49 -10.91 0.65 2752 +2807 4 -30.38 510.28 -11.25 0.65 2806 +2808 4 -30.54 512.56 -11.01 0.65 2807 +2809 4 -31.88 517.53 -11.53 0.65 2808 +2810 4 -32.81 520.25 -11.18 0.65 2809 +2811 4 -34.59 524.5 -10.76 0.65 2810 +2812 4 -35.11 527.47 -11.17 0.65 2811 +2813 4 -36.54 531.0 -11.15 0.65 2812 +2814 4 -37.46 534.04 -12.51 0.65 2813 +2815 4 -38.11 536.8 -12.49 0.65 2814 +2816 4 -39.15 539.05 -13.45 0.65 2815 +2817 4 -39.8 541.51 -13.53 0.65 2816 +2818 4 -41.08 544.31 -13.82 0.65 2817 +2819 4 -43.01 547.42 -14.25 0.65 2818 +2820 4 -43.05 550.19 -14.34 0.65 2819 +2821 4 -43.57 552.83 -14.65 0.65 2820 +2822 4 -44.35 554.81 -14.47 0.65 2821 +2823 4 -45.33 556.4 -14.97 0.65 2822 +2824 4 -45.18 558.68 -14.83 0.65 2823 +2825 4 -45.56 560.87 -15.27 0.65 2824 +2826 4 -46.54 563.05 -15.64 0.65 2825 +2827 4 -47.8 564.91 -15.72 0.65 2826 +2828 4 -48.62 566.93 -15.99 0.65 2827 +2829 4 -49.69 569.52 -15.7 0.65 2828 +2830 4 -51.23 572.23 -15.3 0.65 2829 +2831 4 -52.47 575.28 -15.03 0.65 2830 +2832 4 -52.71 577.04 -15.75 0.65 2831 +2833 4 -52.46 581.04 -15.91 0.65 2832 +2834 4 -52.79 585.91 -15.41 0.65 2833 +2835 4 -53.43 588.98 -15.36 0.65 2834 +2836 4 -54.13 591.48 -15.95 0.65 2835 +2837 4 -54.63 593.8 -16.06 0.65 2836 +2838 4 -55.34 595.72 -16.87 0.65 2837 +2839 4 -56.04 597.02 -17.65 0.65 2838 +2840 4 -56.59 599.4 -18.27 0.65 2839 +2841 4 -58.6 603.8 -17.89 0.65 2840 +2842 4 -59.74 607.65 -17.79 0.65 2841 +2843 4 -61.44 612.95 -17.11 0.65 2842 +2844 4 -62.51 614.61 -16.85 0.65 2843 +2845 4 -64.65 617.03 -16.41 0.65 2844 +2846 4 -66.74 620.92 -16.99 0.65 2845 +2847 4 -68.28 626.39 -16.31 0.65 2846 +2848 4 -69.9 630.41 -16.74 0.65 2847 +2849 4 -70.57 634.1 -16.78 0.65 2848 +2850 4 -72.15 636.28 -17.02 0.65 2849 +2851 4 -74.14 639.76 -16.5 0.65 2850 +2852 4 -76.29 642.78 -16.08 0.65 2851 +2853 4 -80.28 645.82 -15.8 0.65 2852 +2854 4 -83.81 648.7 -15.27 0.65 2853 +2855 4 -86.4 652.46 -14.66 0.65 2854 +2856 4 -86.7 653.63 -16.33 0.65 2855 +2857 4 -88.69 656.8 -15.83 0.65 2856 +2858 4 -90.16 660.37 -16.26 0.65 2857 +2859 4 -90.83 664.69 -16.31 0.65 2858 +2860 4 -92.21 668.77 -15.78 0.65 2859 +2861 4 -92.89 672.19 -16.15 0.65 2860 +2862 4 -94.32 674.81 -16.28 0.65 2861 +2863 4 -95.39 676.78 -15.99 0.65 2862 +2864 4 -96.13 678.12 -17.23 0.65 2863 +2865 4 -97.23 680.42 -17.13 0.65 2864 +2866 4 -98.4 681.58 -18.04 0.65 2865 +2867 4 -99.66 684.65 -18.01 0.65 2866 +2868 4 -100.65 686.24 -18.59 0.65 2867 +2869 4 -101.65 687.22 -19.15 0.65 2868 +2870 4 -101.87 688.35 -19.78 0.65 2869 +2871 4 -102.17 690.47 -19.47 0.65 2870 +2872 4 -102.02 693.06 -19.23 0.65 2871 +2873 4 -102.79 694.41 -19.03 0.65 2872 +2874 4 -103.4 696.84 -18.74 0.65 2873 +2875 4 -103.41 699.89 -18.43 0.65 2874 +2876 4 -103.28 701.26 -18.4 0.65 2875 +2877 4 -102.84 703.86 -18.25 0.65 2876 +2878 4 -102.62 706.68 -18.84 0.65 2877 +2879 4 -102.17 708.97 -18.65 0.65 2878 +2880 4 -101.57 712.62 -18.36 0.65 2879 +2881 4 -101.12 716.13 -18.05 0.65 2880 +2882 4 -101.59 719.31 -17.7 0.65 2881 +2883 4 -101.45 723.13 -17.34 0.65 2882 +2884 4 -100.55 727.08 -17.04 0.65 2883 +2885 4 -99.54 730.7 -16.84 0.65 2884 +2886 4 -99.0 736.53 -16.86 0.65 2885 +2887 4 -98.71 738.97 -16.65 0.65 2886 +2888 4 -97.84 739.93 -17.09 0.65 2887 +2889 4 -96.18 741.32 -17.26 0.65 2888 +2890 4 -94.52 743.93 -17.16 0.65 2889 +2891 4 -93.56 748.14 -17.82 0.65 2890 +2892 4 -93.31 750.02 -18.19 0.65 2891 +2893 4 -92.56 752.01 -18.14 0.65 2892 +2894 4 -91.61 753.82 -19.26 0.65 2893 +2895 4 -90.7 754.74 -19.33 0.65 2894 +2896 4 -103.71 688.65 -19.73 0.65 2869 +2897 4 -105.4 690.34 -19.64 0.65 2896 +2898 4 -107.22 692.14 -20.81 0.65 2897 +2899 4 -108.98 692.97 -21.48 0.65 2898 +2900 4 -110.42 694.08 -21.92 0.65 2899 +2901 4 -112.79 695.52 -22.47 0.65 2900 +2902 4 -114.23 696.65 -22.99 0.65 2901 +2903 4 -115.02 697.43 -23.2 0.65 2902 +2904 4 -116.57 700.18 -23.02 0.65 2903 +2905 4 -117.92 701.51 -24.12 0.65 2904 +2906 4 -118.68 703.48 -23.87 0.65 2905 +2907 4 -119.14 706.06 -23.57 0.65 2906 +2908 4 -118.3 710.09 -23.85 0.65 2907 +2909 4 -117.2 712.04 -24.91 0.65 2908 +2910 4 -116.16 715.54 -24.73 0.65 2909 +2911 4 -115.67 719.32 -25.62 0.65 2910 +2912 4 -115.32 721.72 -26.63 0.65 2911 +2913 4 -114.96 723.78 -27.29 0.65 2912 +2914 4 -114.38 725.05 -27.67 0.65 2913 +2915 4 -113.51 726.6 -27.98 0.65 2914 +2916 4 -113.22 728.44 -27.91 0.65 2915 +2917 4 -112.84 730.5 -28.49 0.65 2916 +2918 4 -27.98 401.37 6.92 0.65 2538 +2919 4 -29.04 402.74 7.15 0.65 2918 +2920 4 -31.79 405.45 7.68 0.65 2919 +2921 4 -34.06 407.7 6.67 0.65 2920 +2922 4 -35.9 409.5 7.01 0.65 2921 +2923 4 -38.35 411.92 7.41 0.65 2922 +2924 4 -41.44 414.68 7.43 0.65 2923 +2925 4 -46.14 419.63 7.14 0.65 2924 +2926 4 -48.43 422.49 7.62 0.65 2925 +2927 4 -48.54 425.34 6.78 0.65 2926 +2928 4 -48.64 428.77 6.22 0.65 2927 +2929 4 -48.07 430.64 5.89 0.65 2928 +2930 4 -47.63 433.53 6.06 0.54 2929 +2931 4 -47.99 435.73 5.77 0.54 2930 +2932 4 -48.6 437.55 4.35 0.54 2931 +2933 4 -49.3 438.85 3.63 0.54 2932 +2934 4 -49.29 439.74 5.46 0.54 2933 +2935 4 -50.1 440.54 5.16 0.54 2934 +2936 4 -50.96 441.39 4.26 0.54 2935 +2937 4 -51.52 442.86 3.39 0.54 2936 +2938 4 -52.49 444.74 3.07 0.54 2937 +2939 4 -53.85 447.31 1.86 0.54 2938 +2940 4 -54.82 448.87 1.56 0.54 2939 +2941 4 -54.78 450.35 0.58 0.54 2940 +2942 4 -55.02 452.7 0.0 0.54 2941 +2943 4 -55.12 454.94 -0.91 0.54 2942 +2944 4 -55.78 456.2 -1.17 0.54 2943 +2945 4 -57.93 457.42 -1.09 0.54 2944 +2946 4 -60.72 460.18 -1.02 0.54 2945 +2947 4 -61.87 463.13 -1.44 0.54 2946 +2948 4 -62.44 464.91 -2.35 0.54 2947 +2949 4 -62.81 466.19 -2.88 0.54 2948 +2950 4 -62.67 466.98 -3.04 0.54 2949 +2951 4 -5.99 292.26 22.29 0.865 2088 +2952 4 -5.25 294.24 22.42 0.865 2951 +2953 4 -4.94 296.38 22.6 0.865 2952 +2954 4 -3.89 299.58 22.82 0.865 2953 +2955 4 -1.99 302.56 22.11 0.865 2954 +2956 4 -0.94 304.26 22.18 0.865 2955 +2957 4 -0.79 306.85 22.41 0.865 2956 +2958 4 -1.4 310.18 22.8 0.865 2957 +2959 4 -2.07 313.26 24.29 0.865 2958 +2960 4 -1.92 315.84 24.61 0.865 2959 +2961 4 -2.08 318.11 24.91 0.865 2960 +2962 4 -2.39 321.15 25.24 0.865 2961 +2963 4 -3.31 324.17 25.7 0.865 2962 +2964 4 -4.07 326.74 26.09 0.65 2963 +2965 4 -6.04 328.69 26.61 0.65 2964 +2966 4 -7.57 332.02 27.16 0.65 2965 +2967 4 -8.07 332.51 28.39 0.65 2966 +2968 4 -9.45 333.87 28.64 0.65 2967 +2969 4 -11.59 335.97 29.04 0.65 2968 +2970 4 -12.81 339.01 29.46 0.65 2969 +2971 4 -14.35 342.33 29.92 0.65 2970 +2972 4 -16.34 344.9 30.36 0.65 2971 +2973 4 -18.01 346.25 30.64 0.65 2972 +2974 4 -19.26 348.09 32.3 0.65 2973 +2975 4 -19.83 349.85 33.05 0.65 2974 +2976 4 -20.38 351.0 33.9 0.65 2975 +2977 4 -21.41 352.01 34.62 0.65 2976 +2978 4 -21.71 352.9 34.81 0.65 2977 +2979 4 -21.97 353.78 35.37 0.65 2978 +2980 4 -21.82 356.05 35.65 0.65 2979 +2981 4 -21.83 358.78 35.92 0.65 2980 +2982 4 -21.29 360.38 36.93 0.65 2981 +2983 4 -20.75 362.49 38.54 0.65 2982 +2984 4 -19.8 363.97 39.11 0.65 2983 +2985 4 -19.08 364.47 40.23 0.65 2984 +2986 4 -18.66 364.64 41.56 0.65 2985 +2987 4 -18.04 365.84 41.93 0.65 2986 +2988 4 -17.67 365.79 42.5 0.65 2987 +2989 4 -17.2 365.91 44.37 0.65 2988 +2990 4 -6.61 91.18 9.77 0.435 1189 +2991 4 -7.98 91.62 9.94 0.435 2990 +2992 4 -8.7 91.42 10.44 0.435 2991 +2993 4 -8.69 91.11 10.56 0.65 2992 +2994 4 -8.95 90.75 11.08 0.65 2993 +2995 4 -8.89 90.09 11.62 0.65 2994 +2996 4 -9.16 89.43 11.96 0.65 2995 +2997 4 -9.56 88.31 12.41 0.65 2996 +2998 4 -9.55 87.99 12.53 0.65 2997 +2999 4 -9.83 87.06 12.69 0.65 2998 +3000 4 -9.81 86.44 12.78 0.65 2999 +3001 4 -9.77 86.09 13.2 0.65 3000 +3002 4 -9.87 85.27 13.65 0.65 3001 +3003 4 -9.68 84.79 13.89 0.65 3002 +3004 4 -9.21 84.32 13.95 0.65 3003 +3005 4 -8.85 83.96 14.57 0.65 3004 +3006 4 -8.62 83.72 15.35 0.65 3005 +3007 4 -8.21 83.31 16.42 0.65 3006 +3008 4 -7.9 82.7 16.39 0.65 3007 +3009 4 -7.85 82.04 16.93 0.65 3008 +3010 4 -7.79 81.68 17.42 0.65 3009 +3011 4 -7.91 80.57 17.78 0.435 3010 +3012 4 -7.99 80.05 18.49 0.435 3011 +3013 4 -7.97 79.73 18.53 0.435 3012 +3014 4 -8.26 79.11 18.65 0.435 3013 +3015 4 -8.4 78.63 18.84 0.435 3014 +3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p b/examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc new file mode 100644 index 0000000..554dbe2 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc @@ -0,0 +1,226 @@ +# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. +# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. +# +#---------------------------------------------------------------------- +# This file was obtained using ban2swc.pl on file h10.txt +# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 +#---------------------------------------------------------------------- +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0. 23. 0. 3.35 -1 + 2 1 0. 18. 0. 2.5 1 + 3 1 0. 0. 0. 1.058 2 + 4 3 -4.157 -2.778 0. 0.6 3 + 5 3 -5.925 -3.510 -4.62 0.55 4 + 6 3 -15.47 -7.464 -29.560 0.4 5 + 7 3 -23.89 -9.139 -72.72 0.4 6 + 8 3 -24.39 -13.43 -83.51 0.350 6 + 9 3 -9.814 -5.121 -14.780 0.5 5 + 10 3 -15.81 -6.313 -23.93 0.5 9 + 11 3 -65.94 -16.29 -100.4 0.4 10 + 12 3 -54.5 -14.01 -82.960 0.4 10 + 13 3 -17.2 -10.06 -28.09 0.4 9 + 14 3 -78.64 -51.11 -138.70 0.4 13 + 15 3 -41.69 -26.42 -72.15 0.350 13 + 16 3 -10.11 -8.731 -20.330 0.45 4 + 17 3 -14.44 -13.06 -35.11 0.350 16 + 18 3 -26.61 -21.19 -108.7 0.3 17 + 19 3 -24.2 -27.66 -123.4 0.3 17 + 20 3 -32.3 -30.92 -96.08 0.350 16 + 21 3 -45.7 -39.87 -120.2 0.3 20 + 22 3 -56.99 -67.88 -162.60 0.350 20 + 23 3 -8.889 -13.3 0. 0.65 3 + 24 3 -11.39 -15.8 -3.54 0.55 23 + 25 3 -19.39 -23.8 -14.85 0.5 24 + 26 3 -21.7 -25.35 -19.01 0.45 25 + 27 3 -33.25 -33.06 -39.79 0.4 26 + 28 3 -64.36 -45.95 -121.10 0.350 27 + 29 3 -53.54 -53.36 -109.10 0.350 27 + 30 3 -26.32 -28.43 -27.32 0.4 26 + 31 3 -68.78 -46.02 -73.28 0.3 30 + 32 3 -71.820 -73.93 -91.67 0.350 30 + 33 3 -59.82 -84.320 -123.80 0.350 25 + 34 3 -84.52 -121.30 -190.3 0.25 33 + 35 3 -34.39 -38.80 -36.06 0.350 24 + 36 3 -96.61 -80.38 -86.06 0.3 35 + 37 3 -93.98 -128. -107.7 0.3 35 + 38 3 -15.65 -29.64 -17.68 0.5 23 + 39 3 -17.01 -32.9 -21.21 0.5 38 + 40 3 -21.95 -40.29 -34.52 0.4 39 + 41 3 -50.03 -82.33 -110.2 0.3 40 + 42 3 -49.730 -81.87 -109.30 0.350 40 + 43 3 -22.75 -61.78 -65.28 0.3 39 + 44 3 -37.30 -81.9 -74.25 0.3 38 + 45 3 -2.146 -10.790 0. 0.75 3 + 46 3 -24.77 -65.42 -24.490 0.350 45 + 47 3 -54.47 -137.1 -56.64 0.350 46 + 48 3 -55.18 -138.8 -57.4 0.350 46 + 49 3 -2.146 -20.95 -4.21 0.6 45 + 50 3 -2.146 -35.730 -10.33 0.45 49 + 51 3 -22.75 -139.3 -80.89 0.3 50 + 52 3 29. -192.3 -117. 0.350 50 + 53 3 -2.146 -25.57 -6.12 0.55 49 + 54 3 -3.103 -30.38 -7.10 0.5 53 + 55 3 -49.410 -263.2 -54.31 0.350 54 + 56 3 -22.05 -125.60 -26.41 0.3 54 + 57 3 16.990 -121.80 -25.63 0.3 53 + 58 3 2.146 -10.790 0. 0.65 3 + 59 3 2.146 -20.79 0. 0.4 58 + 60 3 2.146 -235.8 0. 0.350 59 + 61 3 2.146 -250.8 0. 0.25 60 + 62 3 4.059 -15.41 0. 0.4 58 + 63 3 8.269 -25.57 0. 0.350 62 + 64 3 35.63 -163.10 -27.90 0.4 63 + 65 3 45.32 -81.02 -13.27 0.3 63 + 66 3 20.13 -54.21 0. 0.350 62 + 67 3 35.25 -130.20 15.41 0.3 66 + 68 3 78.98 -142.3 21.07 0.350 66 + 69 3 8.889 -13.3 0. 0.6 3 + 70 3 16.67 -32.08 8.42 0.5 69 + 71 3 24.45 -50.86 16.84 0.45 70 + 72 3 49.32 -175.9 42.2 0.350 71 + 73 3 84.38 -140.6 38.30 0.350 71 + 74 3 42.45 -141.4 78.51 0.4 70 + 75 3 48.94 -174. 100.7 0.3 74 + 76 3 16.080 -20.490 4.21 0.4 69 + 77 3 99.04 -103.5 52.81 0.3 76 + 78 3 41.550 -45.97 19.13 0.3 76 + 79 3 63.71 -109.60 64.06 0.3 78 + 80 3 75.26 -126.9 77.95 0.2 79 + 81 3 18.29 -12.22 0. 0.6 3 + 82 3 20.79 -14.72 3.54 0.55 81 + 83 3 26.29 -20.22 11.31 0.5 82 + 84 3 101.10 -132.20 101.30 0.350 83 + 85 3 97.5 -67.8 68.54 0.3 83 + 86 3 47.29 -41.22 41.01 0.25 82 + 87 3 21.56 -13.58 3.54 0.5 81 + 88 3 28.09 -16.28 10.61 0.45 87 + 89 3 122.10 -79.11 86.16 0.3 88 + 90 3 85.99 -27.8 50.050 0.3 88 + 91 3 43.12 -22.51 26.87 0.4 87 + 92 3 75.45 -44.11 85.070 0.350 91 + 93 3 97.61 -33.34 110. 0.350 91 + 94 4 0. 41. 0. 2.550 1 + 95 4 0. 127. 0. 0.3 94 + 96 4 5.932 70.820 -6.05 2.25 94 + 97 4 18.37 133.3 -18.73 1.25 96 + 98 4 26.63 153.3 -23.02 0.6 97 + 99 4 56.65 225.8 -38.63 0.3 98 + 100 4 29.63 160.5 -24.580 0.6 98 + 101 4 91.850 253.70 -24.580 0.350 100 + 102 4 63.97 333.1 -24.580 0.350 100 + 103 4 18.37 142.20 -20.48 1.25 97 + 104 4 18.37 145.1 -21.07 1.25 103 + 105 4 28.28 195. -42.12 0.45 104 + 106 4 33.69 222.10 -53.6 0.350 105 + 107 4 39.1 249.3 -65.08 0.25 106 + 108 4 17.47 149.6 -22.98 1.25 104 + 109 4 4.851 213.10 -49.77 0.5 108 + 110 4 -10.07 288.1 -100.9 0.350 109 + 111 4 15.85 157.8 -26.43 1.25 108 + 112 4 15.85 182.3 -31.3 0.5 111 + 113 4 15.85 235.3 -41.84 0.350 112 + 114 4 15.85 272.2 -57.15 0.3 113 + 115 4 15.85 195.10 -33.84 0.350 112 + 116 4 30.09 266.7 -33.84 0.3 115 + 117 4 0.2380 273.5 -33.84 0.3 115 + 118 4 11.72 167.8 -28.57 1.25 111 + 119 4 3.46 187.70 -32.87 1.25 118 + 120 4 -0.506 207.60 -41.28 1.25 119 + 121 4 -3.39 222.10 -47.410 1.25 120 + 122 4 -3.39 223.8 -48.52 1.25 121 + 123 4 -3.39 247.10 -64.070 0.45 122 + 124 4 1.439 271.40 -88.820 0.3 123 + 125 4 -16.080 310.90 -129.1 0.350 123 + 126 4 -3.39 248.70 -65.19 1.25 122 + 127 4 -3.209 249.70 -65.570 1.25 126 + 128 4 1.297 272.3 -75.14 0.5 127 + 129 4 12. 326.1 -111.80 0.350 128 + 130 4 -0.506 263.2 -71.31 1.25 127 + 131 4 0.2450 265.1 -71.7 0.6 130 + 132 4 3.623 273.2 -73.45 0.55 131 + 133 4 46.230 337. -105.2 0.3 132 + 134 4 22.55 368.40 -113.60 0.350 132 + 135 4 19.01 310.40 -81.45 0.45 131 + 136 4 42.74 367.6 -81.45 0.350 135 + 137 4 -0.506 280.90 -74.820 1.25 130 + 138 4 -0.506 284.8 -75.60 0.850 137 + 139 4 14.450 360. -107.4 0.4 138 + 140 4 18.06 378.1 -115. 0.3 139 + 141 4 -14.02 352.8 -104.30 0.850 138 + 142 4 -20.330 384.5 -117.7 0.70 141 + 143 4 -20.330 441.8 -141.4 0.70 142 + 144 4 -20.330 494.40 -163.20 0.45 143 + 145 4 -20.330 544.30 -196.60 0.350 144 + 146 4 -20.330 582.6 -222.10 0.3 145 + 147 4 -20.330 622.5 -248.8 0.3 145 + 148 4 -20.330 462.1 -149.8 0.6 143 + 149 4 -7.321 527.5 -163.10 0.45 148 + 150 4 -1.389 557.30 -169.20 0.350 149 + 151 4 21.51 612.6 -181.10 0.3 150 + 152 4 -1.389 630.90 -183.8 0.25 150 + 153 4 -36.6 543.9 -166.4 0.6 148 + 154 4 -46.36 592.9 -176.4 0.350 153 + 155 4 -46.36 669.6 -208.10 0.25 154 + 156 4 -74.99 662.1 -207.4 0.25 154 + 157 4 -44.44 583.30 -174.4 0.5 153 + 158 4 -44.44 665.30 -174.4 0.350 157 + 159 4 -44.44 705.30 -174.4 0.25 158 + 160 4 -87.3 686.80 -174.4 0.350 157 + 161 4 -121.7 769.90 -174.4 0.25 160 + 162 4 -32.71 414.40 -131.1 0.45 142 + 163 4 -85.74 542.4 -188.5 0.350 162 + 164 4 -120. 625.2 -225.60 0.3 163 + 165 4 -137.4 667. -244.4 0.25 164 + 166 4 -132.4 655.1 -239. 0.2 164 + 167 4 -0.506 290.7 -76.77 0.9 137 + 168 4 6.713 327. -76.77 0.8 167 + 169 4 8.664 336.8 -76.77 0.6 168 + 170 4 12.49 356. -80.67 0.5 169 + 171 4 21.48 401.3 -89.84 0.350 170 + 172 4 13.74 362.3 -76.77 0.5 168 + 173 4 23.12 385. -71.89 0.25 172 + 174 4 13.74 396.6 -69.94 0.350 172 + 175 4 -20.6 391.70 -76.77 0.350 167 + 176 4 -15.83 311.3 -91.59 0.4 126 + 177 4 -28.44 374.70 -118.4 0.3 176 + 178 4 -14.84 249.8 -67.41 0.45 121 + 179 4 -37.12 303.6 -106.30 0.350 178 + 180 4 -55.25 347.3 -138. 0.3 178 + 181 4 -3.209 221.20 -47.02 0.45 120 + 182 4 -3.209 356.6 -73.95 0.350 181 + 183 4 -31.36 289.2 -61.660 0.350 181 + 184 4 -11.94 210.70 -44.35 0.6 119 + 185 4 -36.06 246.9 -62.33 0.5 184 + 186 4 -67.18 322. -96.01 0.3 185 + 187 4 -81.14 291.90 -88.74 0.3 185 + 188 4 1.208 193.10 -34.04 0.4 118 + 189 4 -21.42 306.90 -34.04 0.3 188 + 190 4 -77.13 310.40 -34.04 0.350 188 + 191 4 18.37 165.70 -25.17 0.5 103 + 192 4 25.78 203. -25.17 0.350 191 + 193 4 56.22 356. -25.17 0.3 192 + 194 4 50.36 326.6 -25.17 0.3 192 + 195 4 16.22 176.5 -25.17 0.350 191 + 196 4 -10.31 309.90 -25.17 0.350 195 + 197 4 2.957 243.20 -25.17 0.3 195 + 198 4 -2.105 51.58 -2.15 0.350 94 + 199 4 -20.09 142. -20.48 0.350 198 + 200 4 -3.061 56.39 -3.12 0.3 198 + 201 4 -3.061 76.39 -3.12 0.3 200 + 202 4 -3.061 142.4 -3.12 0.3 201 + 203 4 -3.061 167.4 -3.12 0.3 201 + 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml new file mode 100644 index 0000000..2a3815b --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml @@ -0,0 +1,12673 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + soma_group + + + + soma_group + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + axon_group + soma_group + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + all + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml new file mode 100644 index 0000000..58cc74e --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml @@ -0,0 +1,32 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml new file mode 100644 index 0000000..d2f3f34 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml @@ -0,0 +1,59 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 + +Cell Group: CA1_CG contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml new file mode 100644 index 0000000..c1c91b4 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml new file mode 100644 index 0000000..a882baa --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml new file mode 100644 index 0000000..94e9713 --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml new file mode 100644 index 0000000..1225d6a --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g b/examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g new file mode 100644 index 0000000..e120a6a --- /dev/null +++ b/examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g @@ -0,0 +1,477 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Jun 5 09:12:59 2015 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca/notes 0 "" +call /kinetics/Bulk/Ca/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ + 1 black -19 -25 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." \ +"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ +"psd. Will use diffusion instead." \ +"05 June 2015. psd53.g updated further to use the same name (Ca)" \ +"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ +"" +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A +addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/paper-2015/Fig6_NetMultiscale/Fig6A.py b/examples/paper-2015/Fig6_NetMultiscale/Fig6A.py new file mode 100644 index 0000000..88193db --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/Fig6A.py @@ -0,0 +1,503 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. +This variant has 2500 LIF neurons + +Upi Bhalla, Nov 2014: Appended single neuron model. +This script generates Panel A from Figure 6. It is a dummy for showing +the layout, and loads in about 20 seconds. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose +from PyQt4 import Qt, QtCore, QtGui +from numpy import random as nprand +from moose.neuroml.NeuroML import NeuroML +import sys +sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) +import rdesigneur as rd +import moogli +cellname = "./cells_channels/CA1_nochans.morph.xml" +#cellname = "./ca1_minimal.p" +fname = "fig6bcde" + +############################################# +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +PI = 3.14159265358979 +useGssa = True +combineSegments = False + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 10e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +N = 2500 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30 #s # Simulation time +interTetInterval = 5.0 # sec +updateDt = 0.2 #s: time to update live display +dt = 1e-3 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM + +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Here we set up a single neuron to fit in this network +############################################# + +diffDt = 0.005 +chemDt = 0.005 +ePlotDt = 0.5e-3 +cPlotDt = 0.005 + +############################################# +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ [cellname, 'elec'] ] + chanProto = [ + ['./cells_channels/hd.xml'], \ + ['./cells_channels/kap.xml'], \ + ['./cells_channels/kad.xml'], \ + ['./cells_channels/kdr.xml'], \ + ['./cells_channels/na3.xml'], \ + ['./cells_channels/nax.xml'], \ + ['./cells_channels/CaConc.xml'], \ + ['./cells_channels/Ca.xml'], \ + ['./cells_channels/NMDA.xml'], \ + ['./cells_channels/Glu.xml'], \ + ['./cells_channels/GABA.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "100" ], \ + ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ + ["nax", "#axon#", "Gbar", "1250" ], \ + ["nax", "#soma#", "Gbar", "100" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#,#user#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ + ["kad", "#dend#,#apical#,#user#", "Gbar", \ + "300*H(p*1e6-100)*(1+p*1e4)" ], \ + ["Ca", "#soma#", "Gbar", "10e-3" ], \ + ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ + ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ + ] + spineDistrib = [ \ + ["spine", '#apical#,#dend#,#user#', "spineSpacing", "6.2e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + ) + + return rdes + + +############################################# + +def makeDetailedNeuron(): + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + #bcs.addAllPlots() + + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(range(self.N),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self, fig): + """ plots the spike raster for the simulated net""" + plt.figure(1) + + ax = plt.subplot(221) + cleanAx( ax, 'B' ) + plt.ylabel( 'Neuron #', fontsize = 16 ) + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.', markersize = 2, label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.', markersize = 2, label=label) + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Make plots +############################################# + +def interlude( view ): + view.yaw( 0.005 ) + +def create_viewer(rdes): + # print "Creating 3D Viewer" + network = moogli.extensions.moose.read(path=rdes.elecid.path, + vertices=10) + # print "Read Network" + network.set("color", moogli.colors.LIGHT_BLUE) + network.groups["spine"].set("color", moogli.colors.ORANGE) + # for dendrite in dendrites.values(): + # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) + + [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in + network.groups["spine"].groups["head"].shapes.values()] + # print "Creating LIFS" + soma = network.shapes[rdes.soma.path] + + center = soma.get_center() + row_axis = moogli.geometry.X_AXIS + row_count = 50 + row_separation = soma.get_base_radius() * 5.0 + col_axis = moogli.geometry.Z_AXIS + col_count = 50 + col_separation = row_separation + radii = soma.get_base_radius() + colors = moogli.colors.GREEN + vertices = 20 + lifs = moogli.shapes.Sphere.grid("LIF", + center, + row_axis, + row_count, + row_separation, + col_axis, + col_count, + col_separation, + radii, + colors, + vertices) + # print "Created LIFS" + # morphology.create_group("dendrites", dendrites, 0.0, 300.0, colormap) + # print "Creating Viewer" + viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) + # print "Created Viewer" + viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(lifs.shapes.values()) + # print "Attached Shapes" + view = moogli.View("view", interlude=interlude) + viewer.attach_view(view) + # print "Attached View" + viewer.showMaximized() + viewer.start() + view.zoom( 0.4 ) + view.pitch( PI/2.5 ) + return viewer + +if __name__=='__main__': + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print net + moose.le( '/' ) + moose.le( '/network' ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer(rdes) + app.exec_() diff --git a/examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py b/examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py new file mode 100644 index 0000000..82a9ece --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py @@ -0,0 +1,939 @@ +from __future__ import print_function + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. +This variant has 2500 LIF neurons + +Upi Bhalla, Nov 2014: Appended single neuron model. +This script generates the panels in Figure 6. It takes a long time, +about 65 minutes to run 30 seconds of simulation time. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose +from PyQt4 import Qt, QtCore, QtGui +from numpy import random as nprand +from moose.neuroml.NeuroML import NeuroML +import sys +import rdesigneur as rd +import moogli +cellname = "./cells_channels/CA1_nochans.morph.xml" +fname = "fig6bcde" + +############################################# +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +PI = 3.14159265358979 +useGssa = True +combineSegments = False + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 10e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +N = 2500 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30 #s # Simulation time +interTetInterval = 5.0 # sec +updateDt = 0.2 #s: time to update live display +dt = 1e-3 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM + +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Here we set up a single neuron to fit in this network +############################################# + +diffDt = 0.005 +chemDt = 0.005 +ePlotDt = 0.5e-3 +cPlotDt = 0.005 + +############################################# +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ [cellname, 'elec'] ] + chanProto = [ + ['./cells_channels/hd.xml'], \ + ['./cells_channels/kap.xml'], \ + ['./cells_channels/kad.xml'], \ + ['./cells_channels/kdr.xml'], \ + ['./cells_channels/na3.xml'], \ + ['./cells_channels/nax.xml'], \ + ['./cells_channels/CaConc.xml'], \ + ['./cells_channels/Ca.xml'], \ + ['./cells_channels/NMDA.xml'], \ + ['./cells_channels/Glu.xml'], \ + ['./cells_channels/GABA.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [ \ + [ 'psd53.g', 'ltpModel'] \ + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "100" ], \ + ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ + ["nax", "#axon#", "Gbar", "1250" ], \ + ["nax", "#soma#", "Gbar", "100" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#,#user#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ + ["kad", "#dend#,#apical#,#user#", "Gbar", \ + "300*H(p*1e6-100)*(1+p*1e4)" ], \ + ["Ca", "#soma#", "Gbar", "10e-3" ], \ + ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ + ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ + ] + spineDistrib = [ \ + ["spine", '#apical#,#dend#,#user#', "spineSpacing", "6.2e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [ \ + [ "ltpModel", "#apical#,#dend#,#user#", "install", "1" ] \ + ] + + ''' + ''' + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'modulation', 0.5, 0.002 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + + return rdes + + +############################################# + +def makeDetailedNeuron(): + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + #bcs.addAllPlots() + +def connectDetailedNeuron(): + excProb = 0.00042 + excSeed = 1234 + inhProb = 0.00013 + inhSeed = 4567 + numExc = 0 + numNMDA = 0 + numInh = 0 + delayMax = 0.010 + delayMin = 0.002 + excWeightMax = 360 + nmdaWeightMax = 1 + inhWeightMax = 100 + # Note we use the same seed for all 3 exc connections, to make sure + # they are all equivalent. + seed = excSeed + totGluWt = 0.0 + totNMDAWt = 0.0 + totGABAWt = 0.0 + for x in moose.wildcardFind( '/model/elec/#/glu/##[ISA=Synapse]' ): + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numExc += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print('+', end=' ') + totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = excSeed + for x in moose.wildcardFind( '/model/elec/#/NMDA/##[ISA=Synapse]' ): + #print " x = ", x + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numNMDA += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print('*', end=' ') + totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = inhSeed + for x in moose.wildcardFind( '/model/elec/#/GABA/##[ISA=Synapse]' ): + #print x + inh = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + inh.setRandomConnectivity( inhProb, seed ) + seed = seed + 1 + if inh.numEntries > 0: + numInh += inh.numEntries + x.vec.delay = delayMin + nprand.rand( inh.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print('-', end=' ') + totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + print('connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh) + print('connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt) + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + # Build in the LTP stimulus + offset = Iinject * 0.5 + injBaseline = np.repeat( self.Iinject, self.T ) + start = np.ceil( simtime / (interTetInterval * dt) ) + for i in range( 3 ): + end = start + np.ceil( 0.5 / dt ) + injBaseline[ start:end ] += offset + start = start + np.ceil( interTetInterval / dt ) + + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = injBaseline + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=self.T ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + + + self.noiseTables.vec[i].stopTime = self.simtime + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(list(range(self.N)),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self, fig): + """ plots the spike raster for the simulated net""" + plt.figure(1) + + ax = plt.subplot(221) + cleanAx( ax, 'B' ) + plt.ylabel( 'Neuron #', fontsize = 16 ) + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.', markersize = 2, label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.', markersize = 2, label=label) + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + self.recN = 5 # number of neurons for which to record weights and Ca + if CaPlasticity: + ## make tables to store weights of recN exc synapses + ## for each post-synaptic exc neuron + self.weights = moose.Table( '/plotWeights', self.excC*self.recN ) + for i in range(self.recN): # range(self.N) is too large + for j in range(self.excC): + moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + if np.random.uniform()<0.05: + synij.weight = 1.0 + else: + synij.weight = self.J # no weightScale here, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + timeseries = net.trange + ## individual neuron firing rates + fig3 = plt.figure() + plt.subplot(221) + num_to_plot = 10 + #rates = [] + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" exc nrns") + plt.ylabel("Hz") + plt.ylim(0,100) + plt.subplot(222) + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" inh nrns") + plt.ylim(0,100) + + ## population firing rates + plt.subplot(223) + rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ + /float(net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Exc population rate") + plt.ylabel("Hz") + plt.xlabel("Time (s)") + plt.subplot(224) + rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ + /float(net.N-net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Inh population rate") + plt.xlabel("Time (s)") + + fig3.tight_layout() + +def makeScatterPlot( m, n, v ): + fig4 = plt.figure() + + dx = 100e-6 + dy = 100e-6 + x = np.arange( m ) * dx + x = np.tile( x, n ) + y = np.arange( n ) * dy + y = y.repeat( m ) + #z = np.arange( m * n ) + #ret = plt.scatter( x, y, s = 64, c = v, vmin = -0.065, vmax = -0.055 ) + cmap = plt.get_cmap('afmhot') + ret = plt.scatter( x, y, s = 64, c = v, vmin = 0.5, vmax = 1.0, cmap = cmap ) + plt.xlim( -dx, dx * m ) + plt.ylim( -dy, dy * n ) + return fig4, ret + +def buildNeuronPlots( rdes ): + if not moose.exists( '/graphs' ): + graphs = moose.Neutral( '/graphs' ) + vtab = moose.Table( '/graphs/vtab' ) + catab = moose.Table( '/graphs/catab' ) + moose.connect( vtab, "requestOut", rdes.soma, "getVm" ) + caSoma = moose.element( rdes.soma.path + "/Ca_conc" ) + moose.connect( catab, "requestOut", caSoma, "getCa" ) + elist = moose.wildcardFind( '/model/chem/psd/tot_PSD_R[]' ) + rtab = moose.Table2( '/graphs/rtab', len( elist ) ).vec + for i in zip( elist, rtab ): + moose.connect( i[1], "requestOut", i[0], "getN" ) + elist = moose.wildcardFind( '/model/chem/spine/Ca[]' ) + pcatab = moose.Table2( '/graphs/pcatab', len( elist ) ).vec + for i in zip( elist, pcatab ): + moose.connect( i[1], "requestOut", i[0], "getConc" ) + +def cleanAx( ax, label, showXlabel = False ): + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + ax.tick_params( direction = 'out' ) + if not showXlabel: + ax.set_xticklabels( [] ) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + ax.text( -0.18, 1.0, label, fontsize = 18, weight = 'bold', transform=ax.transAxes ) + + +def saveNeuronPlots( fig, rdes ): + #fig = plt.figure( figsize=(12, 10), facecolor='white' ) + #fig.subplots_adjust( left = 0.18 ) + plt.figure(1) + + ax = plt.subplot(222) + cleanAx( ax, 'C' ) + plt.ylabel( 'Vm (mV)', fontsize = 16 ) + vtab = moose.element( '/graphs/vtab' ) + t = np.arange( 0, len( vtab.vector ), 1 ) * vtab.dt + plt.plot( t, vtab.vector * 1000, label="Vm" ) + #plt.legend() + + ax = plt.subplot(223) + cleanAx( ax, 'D', showXlabel = True ) + pcatab = list( moose.vec( '/graphs/pcatab' ) )[0::50] + t = np.arange( 0, len( pcatab[0].vector ), 1 ) * pcatab[0].dt + for i in pcatab: + plt.plot( t, i.vector * 1000 ) + plt.ylabel( '[Ca] (uM)', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + + ax = plt.subplot(224) + cleanAx( ax, 'E', showXlabel = True ) + rtab = list( moose.vec( '/graphs/rtab' ) )[0::50] + t = np.arange( 0, len( rtab[0].vector ), 1 ) * rtab[0].dt + for i in rtab: + plt.plot( t, i.vector ) + plt.ylabel( '# of inserted GluRs', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + ''' + for i in moose.wildcardFind( '/graphs/#' ): + i.xplot( fname + '.xplot', i.name ) + ''' + +def create_viewer(rdes): + # print "Creating 3D Viewer" + network = moogli.extensions.moose.read(path=rdes.elecid.path, + vertices=10) + # print "Read Network" + network.set("color", moogli.colors.LIGHT_BLUE) + network.groups["spine"].set("color", moogli.colors.ORANGE) + # for dendrite in dendrites.values(): + # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) + + [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in + list(network.groups["spine"].groups["head"].shapes.values())] + # print "Creating LIFS" + soma = network.shapes[rdes.soma.path] + + center = soma.get_center() + row_axis = moogli.geometry.X_AXIS + row_count = 25 + row_separation = soma.get_base_radius() * 5.0 + col_axis = moogli.geometry.Z_AXIS + col_count = 25 + col_separation = row_separation + radii = soma.get_base_radius() + colors = moogli.colors.GREEN + vertices = 20 + lifs = moogli.shapes.Sphere.grid("LIF", + center, + row_axis, + row_count, + row_separation, + col_axis, + col_count, + col_separation, + radii, + colors, + vertices) + # print "Created LIFS" + # morphology.create_group("dendrites", dendrites, 0.0, 300.0, colormap) + # print "Creating Viewer" + viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) + # print "Created Viewer" + viewer.attach_shapes(list(network.shapes.values())) + viewer.attach_shapes(list(lifs.shapes.values())) + # print "Attached Shapes" + view = moogli.View("view") + viewer.attach_view(view) + # print "Attached View" + return viewer + +if __name__=='__main__': + plt.ion() + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print(net) + moose.le( '/' ) + moose.le( '/network' ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + buildNeuronPlots( rdes ) + connectDetailedNeuron() + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer(rdes) + viewer.showMaximized() + viewer.start() + app.exec_() + + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + plotif = True + net.simulate(simtime,plotif=plotif,\ + v0=np.random.uniform(el-20e-3,vt,size=N)) + + # moose simulation + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/plotSpikes', 'process' ) + moose.useClock( 3, '/plotVms', 'process' ) + if CaPlasticity: + moose.useClock( 3, '/plotWeights', 'process' ) + moose.useClock( 3, '/plotCa', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + #moose.setClock( moose.element( '/cell/hsolve' ), dt ) + moose.setClock( 9, dt ) + + if plotif: + Vm = net.network.vec.Vm + fig = plt.figure( 1, figsize=(12, 10), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + fig2, ret = makeScatterPlot( 50, 50, Vm ) + #cellFig = bcs.neuronPlot( '/model/elec', '/model/chem/psd/tot_PSD_R[]' ) + + moose.reinit() + t1 = time.time() + print('starting') + #moose.start(simtime) + for currTime in np.arange( 0, simtime, updateDt ): + moose.start(updateDt) + lastt = net.network.vec.lastEventTime + lastt = np.exp( 2 * (lastt - currTime ) ) + print(currTime, time.time() - t1) + ret.set_array( lastt ) + fig2.canvas.draw() + + print('runtime, t = ', time.time() - t1) + + if plotif: + net._plot( fig ) + + extra_plots(net) + #bcs.displayCellPlots( plt ) + saveNeuronPlots( fig, rdes ) + plt.show() + plt.savefig( fname + '.svg', bbox_inches='tight') + print( "Hit 'enter' to exit" ) + input() diff --git a/examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py b/examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py new file mode 100644 index 0000000..75c5161 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py @@ -0,0 +1,887 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. +This variant has 400 LIF neurons + +Upi Bhalla, Nov 2014: Appended single neuron model. + +This script is a reduced version of the model that generates the panels +in Figure 6. It takes just a couple of minutes to run 30 seconds of +simulation time. That is, 400 neurons, 1 detailed model with 36 +compartments plus 16 spines each having 2 compartments and 34 molecules, +and lots of synapses. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose +from numpy import random as nprand +from moose.neuroml.NeuroML import NeuroML +import sys +sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) +import rdesigneur as rd +#cellname = "./cells_channels/CA1_nochans.morph.xml" +cellname = "./cells_channels/ca1_minimal.p" +fname = "reduced" + +############################################# +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +PI = 3.14159265358979 +useGssa = True +combineSegments = False + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 10e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +N = 400 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30 #s # Simulation time +interTetInterval = 5.0 # sec +updateDt = 0.2 #s: time to update live display +dt = 1e-3 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM + +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Here we set up a single neuron to fit in this network +############################################# + +diffDt = 0.005 +chemDt = 0.005 +ePlotDt = 0.5e-3 +cPlotDt = 0.005 + +############################################# +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ [cellname, 'elec'] ] + chanProto = [ + ['./cells_channels/hd.xml'], \ + ['./cells_channels/kap.xml'], \ + ['./cells_channels/kad.xml'], \ + ['./cells_channels/kdr.xml'], \ + ['./cells_channels/na3.xml'], \ + ['./cells_channels/nax.xml'], \ + ['./cells_channels/CaConc.xml'], \ + ['./cells_channels/Ca.xml'], \ + ['./cells_channels/NMDA.xml'], \ + ['./cells_channels/Glu.xml'], \ + ['./cells_channels/GABA.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [ \ + [ 'psd53.g', 'ltpModel'] \ + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "100" ], \ + ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ + ["nax", "#axon#", "Gbar", "1250" ], \ + ["nax", "#soma#", "Gbar", "100" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#,#user#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ + ["kad", "#dend#,#apical#,#user#", "Gbar", \ + "300*H(p*1e6-100)*(1+p*1e4)" ], \ + ["Ca", "#soma#", "Gbar", "10e-3" ], \ + ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ + ["glu", "#dend#,#apical#", "Gbar", "50" ], \ + ["NMDA", "#dend#,#apical#", "Gbar", "20" ], \ + ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ + ] + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", "H(p-400e-6)*H(800e-6-p)*10e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [ \ + [ "ltpModel", "#apical#", "install", "1" ] \ + ] + + ''' + ''' + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'modulation', 0.5, 0.002 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + + return rdes + + +############################################# + +def makeDetailedNeuron(): + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + #bcs.addAllPlots() + +def connectDetailedNeuron(): + excProb = 0.005 + excSeed = 1234 + inhProb = 0.005 + inhSeed = 4567 + numExc = 0 + numNMDA = 0 + numInh = 0 + delayMax = 0.010 + delayMin = 0.002 + excWeightMax = 5 + nmdaWeightMax = 2 + inhWeightMax = 50 + # Note we use the same seed for all 3 exc connections, to make sure + # they are all equivalent. + seed = excSeed + totGluWt = 0.0 + totNMDAWt = 0.0 + totGABAWt = 0.0 + for x in moose.wildcardFind( '/model/elec/#/glu/##[ISA=Synapse]' ): + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numExc += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '+', + totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = excSeed + for x in moose.wildcardFind( '/model/elec/#/NMDA/##[ISA=Synapse]' ): + #print " x = ", x + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numNMDA += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '*', + totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = inhSeed + for x in moose.wildcardFind( '/model/elec/#/GABA/##[ISA=Synapse]' ): + #print x + inh = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + inh.setRandomConnectivity( inhProb, seed ) + seed = seed + 1 + if inh.numEntries > 0: + numInh += inh.numEntries + x.vec.delay = delayMin + nprand.rand( inh.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '-', + totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + print 'connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh + print 'connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + # Build in the LTP stimulus + offset = Iinject * 0.5 + injBaseline = np.repeat( self.Iinject, self.T ) + start = np.ceil( simtime / (interTetInterval * dt) ) + for i in range( 3 ): + end = start + np.ceil( 0.5 / dt ) + injBaseline[ start:end ] += offset + start = start + np.ceil( interTetInterval / dt ) + + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = injBaseline + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=self.T ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + + + self.noiseTables.vec[i].stopTime = self.simtime + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(range(self.N),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self, fig): + """ plots the spike raster for the simulated net""" + plt.figure(1) + + ax = plt.subplot(221) + cleanAx( ax, 'B' ) + plt.ylabel( 'Neuron #', fontsize = 16 ) + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.', markersize = 2, label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.', markersize = 2, label=label) + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + self.recN = 5 # number of neurons for which to record weights and Ca + if CaPlasticity: + ## make tables to store weights of recN exc synapses + ## for each post-synaptic exc neuron + self.weights = moose.Table( '/plotWeights', self.excC*self.recN ) + for i in range(self.recN): # range(self.N) is too large + for j in range(self.excC): + moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(self.NmaxExc),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + if np.random.uniform()<0.05: + synij.weight = 1.0 + else: + synij.weight = self.J # no weightScale here, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(self.NmaxExc),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + timeseries = net.trange + ## individual neuron firing rates + fig3 = plt.figure() + plt.subplot(221) + num_to_plot = 10 + #rates = [] + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" exc nrns") + plt.ylabel("Hz") + plt.ylim(0,100) + plt.subplot(222) + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" inh nrns") + plt.ylim(0,100) + + ## population firing rates + plt.subplot(223) + rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ + /float(net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Exc population rate") + plt.ylabel("Hz") + plt.xlabel("Time (s)") + plt.subplot(224) + rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ + /float(net.N-net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Inh population rate") + plt.xlabel("Time (s)") + + fig3.tight_layout() + +def makeScatterPlot( m, n, v ): + fig4 = plt.figure() + + dx = 100e-6 + dy = 100e-6 + x = np.arange( m ) * dx + x = np.tile( x, n ) + y = np.arange( n ) * dy + y = y.repeat( m ) + #z = np.arange( m * n ) + #ret = plt.scatter( x, y, s = 64, c = v, vmin = -0.065, vmax = -0.055 ) + cmap = plt.get_cmap('afmhot') + ret = plt.scatter( x, y, s = 64, c = v, vmin = 0.5, vmax = 1.0, cmap = cmap ) + plt.xlim( -dx, dx * m ) + plt.ylim( -dy, dy * n ) + return fig4, ret + +def buildNeuronPlots( rdes ): + if not moose.exists( '/graphs' ): + graphs = moose.Neutral( '/graphs' ) + vtab = moose.Table( '/graphs/vtab' ) + catab = moose.Table( '/graphs/catab' ) + moose.connect( vtab, "requestOut", rdes.soma, "getVm" ) + caSoma = moose.element( rdes.soma.path + "/Ca_conc" ) + moose.connect( catab, "requestOut", caSoma, "getCa" ) + elist = moose.wildcardFind( '/model/chem/psd/tot_PSD_R[]' ) + rtab = moose.Table2( '/graphs/rtab', len( elist ) ).vec + for i in zip( elist, rtab ): + moose.connect( i[1], "requestOut", i[0], "getN" ) + elist = moose.wildcardFind( '/model/chem/spine/Ca[]' ) + pcatab = moose.Table2( '/graphs/pcatab', len( elist ) ).vec + for i in zip( elist, pcatab ): + moose.connect( i[1], "requestOut", i[0], "getConc" ) + +def cleanAx( ax, label, showXlabel = False ): + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + ax.tick_params( direction = 'out' ) + if not showXlabel: + ax.set_xticklabels( [] ) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + ax.text( -0.18, 1.0, label, fontsize = 18, weight = 'bold', transform=ax.transAxes ) + + +def saveNeuronPlots( fig, rdes ): + #fig = plt.figure( figsize=(12, 10), facecolor='white' ) + #fig.subplots_adjust( left = 0.18 ) + plt.figure(1) + + ax = plt.subplot(222) + cleanAx( ax, 'C' ) + plt.ylabel( 'Vm (mV)', fontsize = 16 ) + vtab = moose.element( '/graphs/vtab' ) + t = np.arange( 0, len( vtab.vector ), 1 ) * vtab.dt + plt.plot( t, vtab.vector * 1000, label="Vm" ) + #plt.legend() + + ax = plt.subplot(223) + cleanAx( ax, 'D', showXlabel = True ) + pcatab = list( moose.vec( '/graphs/pcatab' ) )[0::2] + t = np.arange( 0, len( pcatab[0].vector ), 1 ) * pcatab[0].dt + for i in pcatab: + plt.plot( t, i.vector * 1000 ) + plt.ylabel( '[Ca] (uM)', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + + ax = plt.subplot(224) + cleanAx( ax, 'E', showXlabel = True ) + rtab = list( moose.vec( '/graphs/rtab' ) )[0::2] + t = np.arange( 0, len( rtab[0].vector ), 1 ) * rtab[0].dt + for i in rtab: + plt.plot( t, i.vector ) + plt.ylabel( '# of inserted GluRs', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + ''' + for i in moose.wildcardFind( '/graphs/#' ): + i.xplot( fname + '.xplot', i.name ) + ''' + +if __name__=='__main__': + plt.ion() + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print net + moose.le( '/' ) + moose.le( '/network' ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + buildNeuronPlots( rdes ) + connectDetailedNeuron() + + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + plotif = True + net.simulate(simtime,plotif=plotif,\ + v0=np.random.uniform(el-20e-3,vt,size=N)) + + # moose simulation + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/plotSpikes', 'process' ) + moose.useClock( 3, '/plotVms', 'process' ) + if CaPlasticity: + moose.useClock( 3, '/plotWeights', 'process' ) + moose.useClock( 3, '/plotCa', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + moose.setClock( 9, dt ) + + if plotif: + Vm = net.network.vec.Vm + fig = plt.figure( 1, figsize=(12, 10), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + fig2, ret = makeScatterPlot( 20, 20, Vm ) + title = fig2.text( 0.1, 0.95, "Simulation starting..." ) + + moose.reinit() + t1 = time.time() + print 'starting' + for currTime in np.arange( 0, simtime, updateDt ): + moose.start(updateDt) + lastt = net.network.vec.lastEventTime + lastt = np.exp( 2 * (lastt - currTime ) ) + title.set_text( "t = " + str( currTime ) ) + ret.set_array( lastt ) + fig2.canvas.draw() + + print 'runtime, t = ', time.time() - t1 + + if plotif: + net._plot( fig ) + + extra_plots(net) + saveNeuronPlots( fig, rdes ) + plt.show() + plt.savefig( fname + '.svg', bbox_inches='tight') + print( "Hit 'enter' to exit" ) + raw_input() diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml new file mode 100644 index 0000000..028852a --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml @@ -0,0 +1,12658 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml new file mode 100644 index 0000000..074524a --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml @@ -0,0 +1,12628 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml new file mode 100644 index 0000000..6041e73 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml @@ -0,0 +1,13066 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allButSpineShaft + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + allButSpineShaft + + + + + + allButSpineShaft + + + + + allButShaft + + + + + + all + + + + + + all + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml new file mode 100644 index 0000000..b2f8ee5 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml @@ -0,0 +1,13118 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allButSpineShaft + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + This opaque name OneSecGrp_SectionRef_5 means the axon. + + + OneSecGrp_SectionRef_5 + soma_group + + + + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + allButSpineShaft + + + + + allButShaft + + + + + + all + + + + + + all + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml new file mode 100644 index 0000000..29da3e8 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml @@ -0,0 +1,31 @@ + + + + Ca pool. + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + + An expontially decaying pool of calcium + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml new file mode 100644 index 0000000..306dd9e --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml @@ -0,0 +1,16 @@ + + + + + GABA receptor synchan, 2 ms tau. + + + + Simple double exponential waveform GABA synapse + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml new file mode 100644 index 0000000..09239c3 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml @@ -0,0 +1,92 @@ + + + + + Voltage-gated K channel + + + + + + Matteo Farinella + + + + Channel translated from the original .mod file used in Kole MH, Ilschner SU, Kampa BM, Williams SR, Ruben PC, Stuart GJ, Action potential generation requires a high sodium channel density in the axon initial segment. Nat Neurosci. 2008 Feb;11(2):178-86. + Based on I-M (muscarinic K channel) Slow, noninactivating + + + + + Zach Mainen + Salk Institute + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + + Rothman JS, Cathala L, Steuber V, Silver RA, Synaptic depression enables neuronal gain control. Nature. 2009 Jan 14 + http://www.ncbi.nlm.nih.gov/pubmed/19145233?ordinalpos=1&itool=EntrezSystem2.PEntrez.Pubmed.Pubmed_ResultsPanel.Pubmed_DefaultReportPanel.Pubmed_RVDocSum + + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml new file mode 100644 index 0000000..9e507d0 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml @@ -0,0 +1,109 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + Yoana Dimitrova + + + Padraig Gleeson + + + + Potasium A-type conductance (transient, inactivating). Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Yoana Dimitrova + UCL + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Using broad range of voltages for sufficient coverage + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml new file mode 100644 index 0000000..bc5e1b5 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml @@ -0,0 +1,105 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse on single comp incl CaD + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + + Padraig Gleeson + + + Yoana Dimitrova + + + + [Ca2+] dependent K AHP (afterhyperpolarization) conductance. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Yoana Dimitrova + UCL + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + + + + This will ensure more points in calcium dependence table + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml new file mode 100644 index 0000000..141c1ac --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml new file mode 100644 index 0000000..38815ff --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml new file mode 100644 index 0000000..5684d19 --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml new file mode 100644 index 0000000..3ca589c --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/psd53.g b/examples/paper-2015/Fig6_NetMultiscale/psd53.g new file mode 100644 index 0000000..e120a6a --- /dev/null +++ b/examples/paper-2015/Fig6_NetMultiscale/psd53.g @@ -0,0 +1,477 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Jun 5 09:12:59 2015 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca/notes 0 "" +call /kinetics/Bulk/Ca/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ + 1 black -19 -25 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." \ +"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ +"psd. Will use diffusion instead." \ +"05 June 2015. psd53.g updated further to use the same name (Ca)" \ +"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ +"" +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A +addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/paper-2015/README b/examples/paper-2015/README new file mode 100644 index 0000000..bd856f3 --- /dev/null +++ b/examples/paper-2015/README @@ -0,0 +1,33 @@ +Here we have Python scripts that replicate most of the figures in the MOOSE +paper. Most of these can be accessed through the MooseGUI startup screen. +Some of these take a very long time. Approximate runtimes for a 2.2 GHz +core I7 processor are listed here. +Some of these figures/demos depend on the 3-D graphics visualization, which +may not be compiled into your distribution. + +The figure scripts are in the directories Fig_ +and are named Fig2A, Fig3D etc. + +Figure panel Runtime(s) Uses 3-D? Notes +2A 1500 No Generates 2 xplot files for + analysis by Fig2A_analysis.py +2C 6 Yes +2D 35 Yes +2E 5 Yes + +3ABC 2 No This is a GENESIS/KKIT model + definition file loaded by MOOSE. +3D 1 No There is a corresponding + Fig3_NEURON.py for the same + model in NEURON. + +4B 10 Yes +4CDEF 370 No +4GHIJ 300 No + +5A 20 Yes Pops up four windows. +5BCDE 240 No Text only output. + +6A 60 Yes Spines exaggerated for display +6BCDE 3900 No Dumps to SVG. + diff --git a/examples/paper-2015/rxdSpineSize.py b/examples/paper-2015/rxdSpineSize.py new file mode 100644 index 0000000..c6fb828 --- /dev/null +++ b/examples/paper-2015/rxdSpineSize.py @@ -0,0 +1,293 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## rxdSpineSize.py: Builds a cell with spines and a propagating reaction +## wave. Products diffuse into the spine and cause it to get bigger. +################################################################## +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +sys.path.append( '../util' ) +import rdesigneur as rd +from PyQt4 import QtGui +import moogli +import moogli.extensions.moose +import matplotlib + +PI = 3.141592653 +ScalingForTesting = 10 +RM = 1.0 / ScalingForTesting +RA = 1.0 * ScalingForTesting +CM = 0.01 * ScalingForTesting +runtime = 100.0 +frameruntime = 1.0 +diffConst = 5e-12 +dendLen = 100e-6 +diffLen = 1.0e-6 +dendDia = 2e-6 +somaDia = 5e-6 +concInit = 0.001 # 1 millimolar +spineSpacing = 10e-6 +spineSpacingDistrib = 1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle= numpy.pi / 2.0 +spineAngleDistrib = 0.0 + +def makeCellProto( name ): + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) + dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) + moose.connect( soma, 'axial', dend, 'raxial' ) + elec.buildSegmentTree() + +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + comptVol = diffLen * dendDia * dendDia * PI / 4.0 + for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i[0] ) + compt.volume = i[1] + #x = moose.Pool( compt.path + '/x' ) + #y = moose.BufPool( compt.path + '/y' ) + z = moose.Pool( compt.path + '/z' ) + #x.concInit = 0.0 + #x.diffConst = diffConst + #y.concInit = concInit + z.concInit = 0.0 + z.diffConst = diffConst + nInit = comptVol * 6e23 * concInit + nstr = str( 1/nInit) + + x = moose.Pool( chem.path + '/dend/x' ) + x.diffConst = diffConst + func = moose.Function( x.path + '/func' ) + func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" + print func.expr + func.x.num = 1 + moose.connect( x, 'nOut', func.x[0], 'input' ) + moose.connect( func, 'valueOut', x, 'increment' ) + z = moose.element( '/library/' + name + '/dend/z' ) + reac = moose.Reac( '/library/' + name + '/dend/reac' ) + reac.Kf = 1 + reac.Kb = 10 + moose.connect( reac, 'sub', x, 'reac' ) + moose.connect( reac, 'prd', z, 'reac' ) + +def makeSpineProto2( name ): + spine = moose.Neutral( '/library/' + name ) + shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) + head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def makeModel(): + moose.Neutral( '/library' ) + makeCellProto( 'cellProto' ) + makeChemProto( 'cProto' ) + makeSpineProto2( 'spine' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + stealCellFromLibrary = True, \ + meshLambda = 1e-6, \ + cellProto = [['cellProto', 'elec' ]] ,\ + spineProto = [['spineProto', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "dend", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + x = moose.vec( '/model/chem/dend/x' ) + x.concInit = 0.0 + for i in range( 0,20 ): + x[i].concInit = concInit + +def makePlot( name, srcVec, field ): + tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec + for i in zip(srcVec, tab): + moose.connect(i[1], 'requestOut', i[0], field) + return tab + + +def displayPlots(): + for x in moose.wildcardFind( '/graphs/#[0]' ): + tab = moose.vec( x ) + for i in range( len( tab ) ): + pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) + pylab.legend() + pylab.figure() + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and then to resize them using spine fields. These are the + fields that would be changed dynamically in a simulation with reactions + that affect spine geometry. + In this simulation there is a propagating reaction wave using a + highly abstracted equation, whose product diffuses into the spines and + makes them bigger. + """ + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + makePlot( 'headDia', eHead, 'getDiameter' ) + + ''' + debug = moose.PyRun( '/pyrun' ) + debug.tick = 10 + debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" + ''' + moose.reinit() + moose.start( runtime ) + + displayPlots() + pylab.plot( oldDia, label = 'old Diameter' ) + pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) + pylab.legend() + pylab.show() + + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +# Run the 'main' if this script is executed standalone. + +def showVisualization(): + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) + # print diaTab[0].vector[-1] + # return + dendrite = moose.element("/model/elec/dend") + dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] + # print dendrites + moose.reinit() + + spineHeads = moose.wildcardFind( '/model/elec/#head#') + # print moose.wildcardFind( '/model/elec/##') + + # print "dendZ", readValues(dendZ) + # print dendrite + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) + viewer.showMaximized() + viewer.start() + return app.exec_() + + +def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): + network = moogli.extensions.moose.read(path=path, + vertices=15) + + dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] + chem_compt_group = dendrite.subdivide(len(dendZ)) + normalizer = moogli.utilities.normalizer(0.0, + 300.0, + clipleft=True, + clipright=True) + colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def readValues(tables): + values = [] + for i in range(len(tables)): + values.append(tables[i].vector[-1]) + return values + + def prelude(view): + view.home() + view.pitch(math.pi / 3.0) + view.zoom(0.3) + network.groups["soma"].set("color", moogli.colors.RED) + network.groups["spine"].groups["shaft"].set("color", + moogli.colors.RED) + + def interlude(view): + moose.start(frameruntime) + network.groups["spine"].groups["head"].set("radius", + readValues(diaTab), + lambda x: x * 0.5e6) + network.groups["spine"].groups["head"].set("color", + readValues(psdZ), + mapper) + chem_compt_group.set("color", + readValues(dendZ), + mapper) + if moose.element("/clock").currentTime >= runtime: + view.stop() + + viewer = moogli.Viewer("Viewer") + viewer.attach_shapes(network.shapes.values()) + viewer.detach_shape(dendrite) + viewer.attach_shapes(chem_compt_group.shapes.values()) + + view = moogli.View("main-view", + prelude=prelude, + interlude=interlude) + cb = moogli.widgets.ColorBar(id="cb", + title="Molecule #", + text_color=moogli.colors.BLACK, + position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), + size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), + text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", + orientation=math.pi / 2.0, + text_character_size=20, + label_formatting_precision=0, + colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), + color_resolution=100, + scalar_range=moogli.geometry.Vec2f(0.0, + 300.0)) + view.attach_color_bar(cb) + viewer.attach_view(view) + return viewer + + +if __name__ == '__main__': + showVisualization() diff --git a/examples/parallelSolver/Fig2_v4.py b/examples/parallelSolver/Fig2_v4.py new file mode 100644 index 0000000..59169a1 --- /dev/null +++ b/examples/parallelSolver/Fig2_v4.py @@ -0,0 +1,229 @@ +# Generates time-series response to a Ca pulse for each of the models. No +# diffusion involved. + +import sys +import numpy as np +import pylab +import matplotlib.pyplot as plt +import moose +import abstrModelEqns2 +import rdesigneur as rd +import time + + +def singleCompt( name, params ): + mod = moose.copy( '/library/' + name + '/' + name, '/model' ) + A = moose.element( mod.path + '/A' ) + Z = moose.element( mod.path + '/Z' ) + Z.nInit = 1 + Ca = moose.element( mod.path + '/Ca' ) + CaStim = moose.element( Ca.path + '/CaStim' ) + runtime = params['preStimTime'] + params['stimWidth'] + params['postStimTime'] + steptime = 100 + + CaStim.expr += ' + x2 * (t > ' + str( runtime ) + ' ) * ( t < ' + str( runtime + steptime ) + ' )' + print CaStim.expr + tab = moose.Table2( '/model/' + name + '/Atab' ) + #for i in range( 10, 19 ): + #moose.setClock( i, 0.01 ) + ampl = moose.element( mod.path + '/ampl' ) + phase = moose.element( mod.path + '/phase' ) + moose.connect( tab, 'requestOut', A, 'getN' ) + ampl.nInit = params['stimAmplitude'] * 1 + phase.nInit = params['preStimTime'] + + ksolve = moose.Ksolve( mod.path + '/ksolve' ) + stoich = moose.Stoich( mod.path + '/stoich' ) + stoich.compartment = mod + stoich.ksolve = ksolve + stoich.path = mod.path + '/##' + runtime += 2 * steptime + + moose.reinit() + moose.start( runtime ) + t = np.arange( 0, runtime + 1e-9, tab.dt ) + return name, t, tab.vector + #pylab.plot( t, tab.vector, label='[A] (mM)' ) + + #pylab.show() + +def plotBoilerplate( panelTitle, plotPos, xlabel = ''): + ax = plt.subplot( 8,4,plotPos ) + #ax.xaxis.set_ticks( i[1] ) + #ax.locator_params( + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + ax.tick_params( direction = 'out' ) + if (((plotPos -1)/4) % 2) == 0: + ax.set_xticklabels([]) + else: + ax.set_xlabel( xlabel ) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + + if (plotPos % 4) == 1: + plt.ylabel( 'conc', fontsize = 16 ) + # alternate way of doing this separately. + #plt.yaxis.label.size_size(16) + #plt.title( 'B' ) + ax.text( -0.3, 1, panelTitle, fontsize = 18, weight = 'bold', + transform=ax.transAxes ) + return ax + +def plotPanelB(): + panelB = [] + panelBticks = [] + panelB.append( singleCompt( 'fhn', abstrModelEqns2.makeFHN() ) ) + panelB.append( singleCompt( 'bis', abstrModelEqns2.makeBis() ) ) + panelB.append( singleCompt( 'negFB', abstrModelEqns2.makeNegFB() ) ) + panelB.append( singleCompt( 'negFF', abstrModelEqns2.makeNegFF() ) ) + + panelBticks.append( np.arange( 0, 4.00001, 1 ) ) + panelBticks.append( np.arange( 0, 4.00001, 1 ) ) + panelBticks.append( np.arange( 0, 15.00001, 5 ) ) + panelBticks.append( np.arange( 0, 6.00001, 2 ) ) + moose.delete( '/model' ) + + for i in zip( panelB, panelBticks, range( len( panelB ) ) ): + plotPos = i[2] + 5 + ax = plotBoilerplate( 'B', plotPos ) + plt.plot( i[0][1], i[0][2] ) + xmax = ax.get_xlim()[1] + #ax.xaxis.set_ticks( np.arange( 0, xmax, 50 ) ) + ax.xaxis.set_ticks( np.arange( 0, 200.001, 50 ) ) + ax.yaxis.set_ticks( i[1] ) + +def runPanelCDEF( name, dist, seqDt, numSpine, seq, stimAmpl ): + preStim = 10.0 + blanks = 20 + rdes = rd.rdesigneur( + useGssa = False, + turnOffElec = True, + chemPlotDt = 0.1, + #diffusionLength = params['diffusionLength'], + diffusionLength = 1e-6, + cellProto = [['cell', 'soma']], + chemProto = [['dend', name]], + chemDistrib = [['dend', 'soma', 'install', '1' ]], + plotList = [['soma', '1', 'dend' + '/A', 'n', '# of A']], + ) + rdes.buildModel() + #for i in range( 20 ): + #moose.setClock( i, 0.02 ) + A = moose.vec( '/model/chem/dend/A' ) + Z = moose.vec( '/model/chem/dend/Z' ) + print moose.element( '/model/chem/dend/A/Adot' ).expr + print moose.element( '/model/chem/dend/B/Bdot' ).expr + print moose.element( '/model/chem/dend/Ca/CaStim' ).expr + phase = moose.vec( '/model/chem/dend/phase' ) + ampl = moose.vec( '/model/chem/dend/ampl' ) + vel = moose.vec( '/model/chem/dend/vel' ) + vel.nInit = 1e-6 * seqDt + ampl.nInit = stimAmpl + stride = int( dist ) / numSpine + phase.nInit = 10000 + Z.nInit = 0 + for j in range( numSpine ): + k = blanks + j * stride + Z[k].nInit = 1 + phase[k].nInit = preStim + seq[j] * seqDt + moose.reinit() + runtime = 50 + snapshot = preStim + seqDt * (numSpine - 0.8) + print snapshot + #snapshot = 26 + moose.start( snapshot ) + avec = moose.vec( '/model/chem/dend/A' ).n + moose.start( runtime - snapshot ) + tvec = [] + for i in range( 5 ): + tab = moose.element( '/model/graphs/plot0[' + str( blanks + i * stride ) + ']' ) + dt = tab.dt + tvec.append( tab.vector ) + moose.delete( '/model' ) + return dt, tvec, avec + +def makePassiveSoma( name, length, diameter ): + elecid = moose.Neuron( '/library/' + name ) + dend = moose.Compartment( elecid.path + '/soma' ) + dend.diameter = diameter + dend.length = length + dend.x = length + return elecid + +def plotOnePanel( tLabel, dt, tplot, numSyn, plotRange, tick ): + t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt + ax = plotBoilerplate( tLabel, 1 + start ) + for i in range( 5 ): + plt.plot( t, tplot[i] ) + ax.yaxis.set_ticks( np.arange( 0, plotRange, tick ) ) + + +def plotPanelCDEF( seq, row ): + makePassiveSoma( 'cell', 100e-6, 10e-6 ) + start = (row -1) * 4 + tLabel = chr( ord( 'A' ) + row - 1 ) + xLabel = chr( ord( 'C' ) + row - 1 ) + xplot = [] + #dt, tplot, avec = runPanelCDEF( 'fhn', 15.0, 3.0, 5, seq, 0.4 ) + dt, tplot, avec = runPanelCDEF( 'fhn', 5.0, 0.5, 5, seq, 0.4 ) + xplot.append( avec ) + #plotOnePanel( dt, 'B', tplot, 5, 1.5, 0.5 ) + t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt + #ax = plotBoilerplate( tLabel, 1 + start ) + ax = plotBoilerplate( tLabel, 1 + start, 'Time (s)') + for i in range( 5 ): + plt.plot( t, tplot[i] ) + yl = ax.get_ylim()[1] + ax.yaxis.set_ticks( np.arange( 0, 4.0001, 1.0 ) ) + + #dt, tplot, avec = runPanelCDEF( 'bis', 5.0, 4.0, 5, seq, 1.0 ) + dt, tplot, avec = runPanelCDEF( 'bis', 15.0, 2.0, 5, seq, 1.0 ) + xplot.append( avec ) + t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt + ax = plotBoilerplate( tLabel, 2 + start, 'Time (s)' ) + for i in range( 5 ): + plt.plot( t, tplot[i] ) + yl = ax.get_ylim()[1] + ax.yaxis.set_ticks( np.arange( 0, 3.0001, 1.0 ) ) + + dt, tplot, avec = runPanelCDEF( 'negFB', 5.0, 2.0, 5, seq, 1.0 ) + xplot.append( avec ) + t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt + ax = plotBoilerplate( tLabel, 3 + start, 'Time (s)') + for i in range( 5 ): + plt.plot( t, tplot[i] ) + ax.yaxis.set_ticks( np.arange( 0, 10.00001, 5.0 ) ) + + dt, tplot, avec = runPanelCDEF( 'negFF', 5.0, 4.0, 5, seq, 1.0 ) + xplot.append( avec ) + t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt + ax = plotBoilerplate( tLabel, 4 + start, 'Time (s)') + for i in range( 5 ): + plt.plot( t, tplot[i] ) + ax.yaxis.set_ticks( np.arange( 0, 5.00001, 2.0 ) ) + + for i in zip( range(4), (4.0, 3.0, 10, 4 ), (1, 1, 5, 2) ): + ax = plotBoilerplate( xLabel, 9 + start + i[0], 'Position( um)' ) + plt.plot( xplot[i[0]][:50] ) + ax.yaxis.set_ticks( np.arange( 0, i[1] * 1.0000001, i[2] ) ) + +################################################################## +if __name__ == '__main__': + moose.Neutral( '/library' ) + moose.Neutral( '/model' ) + + t1 = time.time() + fig = plt.figure( figsize = (10,10), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + plotPanelB() + plotPanelCDEF( [0,1,2,3,4], 3 ) + plotPanelCDEF( [4,1,0,3,2], 4 ) + print ("Time taken = ", time.time() - t1) + plt.tight_layout() + + plt.show() + + diff --git a/examples/parallelSolver/README b/examples/parallelSolver/README new file mode 100644 index 0000000..eaae614 --- /dev/null +++ b/examples/parallelSolver/README @@ -0,0 +1,14 @@ +Parallel solvers are implemented for Ksolve, Dsolve and Gsolve. + +Instructions to run the solvers in parallel. + +1) Clone the repository from github/BhallaLab/moose-core/tree/multithreaded + i.e., the multithreaded branch of the moose-core. + +2) Build the code, compile and run it. + +3) Set the environment variable NUM_THREADS to the number of threads with which you want to execute your script. + +4) The environment variable has to be set to make use of the parallelization. It runs with 1 thread by default(sequential). + +3) Run your python script regularly. The framwork will pick up the number of threads set by you and parallelize the solvers using them. diff --git a/examples/parallelSolver/abstrModelEqns2.py b/examples/parallelSolver/abstrModelEqns2.py new file mode 100644 index 0000000..dbb6b4b --- /dev/null +++ b/examples/parallelSolver/abstrModelEqns2.py @@ -0,0 +1,219 @@ +import re +import moose +# Equations here are: +# Adot = 1 -6A + 5A^2 - A^3, or spread out as: +# Adot = k0a + k1a.A + k2a.A.A + k3a.A.A.A + k4a.Ca.A/(1+A+10*B) - k5a.A.B +# Bdot = k1b.A - k2b.B +# + + +def parseExpr( expr, params, hasCa ): + if hasCa: + expr = expr.replace( 'Ca', 'x0' ) + expr = expr.replace( 'A', 'x1' ) + expr = expr.replace( 'B', 'x2' ) + else: + expr = expr.replace( 'Ca', 'x0' ) # happens in the negFF model + expr = expr.replace( 'A', 'x0' ) # This is the usual case. + expr = expr.replace( 'B', 'x1' ) + + parts = re.split( 'k', expr ) + ret = parts[0] + for i in parts[1:]: + ret += str( params[ 'k' + i[:2] ] ) + ret += i[2:] + + if hasCa: + return 'x3*( ' + ret + ')' + else: + return 'x2*( ' + ret + ')' + +def makeChemProto( name, Aexpr, Bexpr, params ): + sw = params['stimWidth'] + diffLength = params['diffusionLength'] + dca = params['diffConstA'] * diffLength * diffLength + dcb = params['diffConstB'] * diffLength * diffLength + + # Objects + chem = moose.Neutral( '/library/' + name ) + compt = moose.CubeMesh( '/library/' + name + '/' + name ) + A = moose.Pool( compt.path + '/A' ) + B = moose.Pool( compt.path + '/B' ) + Z = moose.BufPool( compt.path + '/Z' ) + Ca = moose.BufPool( compt.path + '/Ca' ) + phase = moose.BufPool( compt.path + '/phase' ) + vel = moose.BufPool( compt.path + '/vel' ) + ampl = moose.BufPool( compt.path + '/ampl' ) + Adot = moose.Function( A.path + '/Adot' ) + Bdot = moose.Function( B.path + '/Bdot' ) + CaStim = moose.Function( Ca.path + '/CaStim' ) + A.diffConst = dca + B.diffConst = dcb + + # Equations + + Adot.expr = parseExpr( Aexpr, params, True ) + Bdot.expr = parseExpr( Bexpr, params, False ) + CaStim.expr = 'x2 * exp( -((x0 - t)^2)/(2* ' + str(sw*sw) + ') )' + + print Adot.expr + print Bdot.expr + print CaStim.expr + + # Connections + Adot.x.num = 4 + moose.connect( Ca, 'nOut', Adot.x[0], 'input' ) + moose.connect( A, 'nOut', Adot.x[1], 'input' ) + moose.connect( B, 'nOut', Adot.x[2], 'input' ) + moose.connect( Z, 'nOut', Adot.x[3], 'input' ) + moose.connect( Adot, 'valueOut', A, 'increment' ) + + Bdot.x.num = 3 + if name == 'negFF': + moose.connect( Ca, 'nOut', Bdot.x[0], 'input' ) + else: + moose.connect( A, 'nOut', Bdot.x[0], 'input' ) + moose.connect( B, 'nOut', Bdot.x[1], 'input' ) + moose.connect( Z, 'nOut', Bdot.x[2], 'input' ) + moose.connect( Bdot, 'valueOut', B, 'increment' ) + + CaStim.x.num = 3 + moose.connect( phase, 'nOut', CaStim.x[0], 'input' ) + moose.connect( vel, 'nOut', CaStim.x[1], 'input' ) + moose.connect( ampl, 'nOut', CaStim.x[2], 'input' ) + moose.connect( CaStim, 'valueOut', Ca, 'setN' ) + + return compt + + +def makeBis(): + params = { + 'k0a':0.1, # Constant + 'k1a':-5.0, # Coeff for A + 'k2a':5.0, # Coeff for A^2 + 'k3a':-1.0, # Coeff for A^3 + 'k4a':10.0, # turnon of A by A and Ca + 'k5a':-5.0, # Turnoff of A by B + 'k1b':0.1, # turnon of B by A + 'k2b':-0.01, # Decay rate of B + 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. + 'dendDiameter': 10e-6, # Diameter of section of dendrite in model + 'dendLength': 100e-6, # Length of section of dendrite in model + 'diffConstA':1.0, # Diffusion constant of A + 'diffConstB':1.0, # Diffusion constant of B + 'stimWidth' :5.0, # Stimulus width in seconds + 'stimAmplitude':1.0, # Stimulus amplitude, arb units. From FHN review + 'blankVoxelsAtEnd':10, # of voxels to leave blank at end of cylinder + 'preStimTime':40.0, # Time to run before turning on stimulus. + 'postStimTime':80.0, # Time to run after stimulus. ~3x decay time + 'settleTime':20.0, # Settling time of response, after stimulus. + # To include in analysis of total response over + # entire dendrite. + 'fnumber':1, # Number to append to fname + } + + makeChemProto( 'bis', + 'k0a + k1a*A + k2a*A*A + k3a*A*A*A + k4a*Ca*A/(1+A+10*B) + k5a*A*B', + 'k1b*A*A + k2b*B', + params ) + return params + +def makeFHN(): + params = { + 'k_t':2.5, # Time-const. + 'k_a':0.7, # Coeff1 + 'k_b':0.8, # Coeff2 + 'kxa': 2.0, # Offset for V for FHN eqns. + 'kxb': 0.8, # Offset for W for FHN eqns. + 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. + 'dendDiameter': 10e-6, # Diameter of section of dendrite in model + 'dendLength': 100e-6, # Length of section of dendrite in model + 'diffConstA':7.5, # Diffusion constant of A + 'diffConstB':5.0, # Diffusion constant of B + 'stimWidth' :1.0, # Stimulus width in seconds + 'stimAmplitude':0.4, # Stimulus amplitude, arb units. From FHN review + 'blankVoxelsAtEnd':10, # of voxels to leave blank at end of cylinder + 'preStimTime':30.0, # Time to run before turning on stimulus. + 'postStimTime':40.0, # Time to run after stimulus. ~3x decay time + 'settleTime':20.0, # Settling time of response, after stimulus. + # To include in analysis of total response over + # entire dendrite. + 'fnumber': 1, # Number to append to fname + } + makeChemProto( 'fhn', + '5.0*(A - kxa - (A-kxa)^3/3 - (B-kxb) + Ca)', + '(A-kxa + k_a - k_b*(B-kxb))/k_t', + params ) + return params + + +def makeNegFB(): + params = { + 'k1a':-0.1, # Coeff for decay of A, slow. + 'k2a':-0.2, # Coeff for turnoff of A by B, medium. + 'k3a':10.0, # turnon of A by Ca, fast. + 'k1b':0.2, # turnon of B by A, medium + 'k2b':-0.1, # Decay rate of B, slow + 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. + 'dendDiameter': 10e-6, # Diameter of section of dendrite in model + 'dendLength': 100e-6, # Length of section of dendrite in model + 'diffConstA':0.5, # Diffusion constant of A + 'diffConstB':1.0, # Diffusion constant of B + 'stimWidth' :1.0, # Stimulus width in seconds + 'stimAmplitude':1.0, # Stimulus amplitude, arb units. From FHN review + 'blankVoxelsAtEnd':10, #of voxels to leave blank at end of cylinder + 'preStimTime':10.0, # Time to run before turning on stimulus. + 'postStimTime':60.0, # Time to run after stimulus. ~3x decay time + 'settleTime':20.0, # Settling time of response, after stimulus. + # To include in analysis of total response over + # entire dendrite. + 'fnumber':1, # Number to append to fname + } + makeChemProto( 'negFB', + 'k1a*A + k2a*A*B + k3a*Ca', + 'k1b*A + k2b*B', + params ) + return params + + +def makeNegFF(): + params = { + 'k1a':-0.1, # Coeff for decay of A, slow. + 'k2a':-1.0, # Coeff for turnoff of A by B, medium. + 'k3a':10.0, # turnon of A by Ca, fast. + 'k1b':2.0, # turnon of B by Ca, medium + 'k2b':-0.1, # Decay rate of B, slow + 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. + 'dendDiameter': 10e-6, # Diameter of section of dendrite in model + 'dendLength': 100e-6, # Length of section of dendrite in model + 'diffConstA':1.0, # Diffusion constant of A + 'diffConstB':2.0, # Diffusion constant of B + 'stimWidth' :1.0, # Stimulus width in seconds + 'stimAmplitude':1.0, # Stimulus amplitude, arb units. From FHN review + 'blankVoxelsAtEnd':10, # of voxels to leave blank at end of cylinder + 'preStimTime':10.0, # Time to run before turning on stimulus. + 'postStimTime':60.0, # Time to run after stimulus. ~3x decay time + 'settleTime':20.0, # Settling time of response, after stimulus. + # To include in analysis of total response over + # entire dendrite. + 'fnumber':1, # Number to append to fname + } + makeChemProto( 'negFF', + 'k1a*A + k2a*A*B + k3a*Ca', + 'k1b*Ca + k2b*B', + params ) + + return params + +if __name__ == '__main__': + moose.Neutral( '/library' ) + print "Making Bistable model" + makeBis() + print "Making FHN model" + makeFHN() + print "Making Negative Feedback model" + makeNegFB() + print "Making Negative Feedforward model" + makeNegFF() + + diff --git a/examples/passive/passive_soma.py b/examples/passive/passive_soma.py new file mode 100644 index 0000000..1a7a74a --- /dev/null +++ b/examples/passive/passive_soma.py @@ -0,0 +1,63 @@ +""" passive_soma.py: + +In this script, we simulate a single compartment soma in MOOSE. + +This soma does not have any ion-channels, only passive properties. It should +behave like a RC circuit. A current is injected into soma. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2015, Dilawar Singh and NCBS Bangalore" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + + +import moose +import pylab + + +model = None +soma = None +vmtab = None + +def buildModel(): + global model + global soma + model = moose.Neutral('/model') + soma = moose.Compartment('/model/soma') + soma.Em = -60e-3 + soma.Rm = 1e10 + soma.Cm = 1e-10 + return model + +def stimulus(): + global soma + global vmtab + pulse = moose.PulseGen('/model/pulse') + pulse.delay[0] = 50e-3 + pulse.width[0] = 100e-3 + pulse.level[0] = 1e-9 + pulse.delay[1] = 1e9 + vmtab = moose.Table('/soma_Vm') + moose.connect(pulse, 'output', soma, 'injectMsg') + moose.connect(vmtab, 'requestOut', soma , 'getVm') + +def main(): + global vmtab + buildModel() + stimulus() + moose.reinit() + t = 500e-2 + moose.start(t) + time_vector = pylab.linspace(0, t, len(vmtab.vector)) + pylab.plot(time_vector, vmtab.vector) + pylab.show( ) + # pylab.savefig('soma_passive.png') + +if __name__ == '__main__': + main() diff --git a/examples/rall_1964/rall64.py b/examples/rall_1964/rall64.py new file mode 100755 index 0000000..7b016ad --- /dev/null +++ b/examples/rall_1964/rall64.py @@ -0,0 +1,285 @@ +# rall64.py --- +# +# Filename: rall64.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri May 23 16:33:43 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Implementation of Rall 1964 model of dendritic branching. All units +SI.""" + +import sys + +import math +import pylab +import moose +from moose import utils as mu + +RM = 0.4 # specific membrane resistivity unit: Ohm m2 +RA = 1.0 # specific cytoplasmic resistivity unit: Ohm m +CM = 0.01 # specific membrane capacitance unit: Farad/m2 +diameter = 1e-6 + +lambda_ = math.sqrt(0.25 * diameter * RM/RA) # electrotonic length +tau = RM * CM # Membrane time constant + +length = 0.2 * lambda_ # Rall used 10 compartments of `0.2 * lambda` length each + +Em = -65e-3 # Leak reversal potential +initVm = Em # Initial membrane potential +Rm = RM / (math.pi * diameter * length) # Total membrane resistance +Cm = CM * (math.pi * diameter * length) # Total membrane capacitance +# Total axial (cytoplasmic) resistance between compartments +Ra = RA * length / (math.pi * diameter * diameter / 4.0) + +Ek = Em + 1e-3 + +print 'tau =', tau, 'lambda =', lambda_ + +# Rall used `0.05 * tau`, but that does not reproduce in our +# case. Why? Sym vs Asym comp?? +dt = 0.01 * tau +simtime = 2.5 * tau +inject_time = 0.25 * tau + +model = moose.Neutral('/model') +data = moose.Neutral('/data') + +num_comp = 10 + +def make_compartment(path): + """Create a compartment at `path` with standard property values.""" + comp = moose.Compartment(path) + comp.Em = Em + comp.Rm = Rm + comp.Cm = Cm + comp.Ra = Ra + comp.initVm = initVm + comp.diameter = diameter + comp.length = length + return comp + +def make_cable(path, num_comp): + """Create a cable made of `nump_comp` identical compartments under + `path`. + + The compartments will be named c0 to c{num_comp} and returned in a + list. + + """ + cable_container = moose.Neutral(path) + comp_list = [] + for ii in range(num_comp): + comp_path = '%s/c%d' % (path, ii) + comp = make_compartment(comp_path) + if len(comp_list) > 0: + # connect to the last compartment via axial resistance + moose.connect(comp_list[-1], 'raxial', comp, 'axial') + comp_list.append(comp) + return comp_list + +def insert_channel(comp, ek=Ek): + """Insert a constant conductance channel on compartment `comp`. Set + the channel reversal potential to `Ek` + + """ + chan = moose.Leakage('%s/chan' % (comp.path)) + chan.Ek = ek + moose.connect(chan, 'channel', comp, 'channel') + return chan + +def insert_Vm_probe(probename, comp): + """Insert a recorder for Vm in compartment `comp`.""" + probe = moose.Table('/data/%s' % (probename)) + moose.connect(probe, 'requestOut', comp, 'getVm') + return probe + +# Scheduling +def schedule(): + moose.setClock(0, dt) + moose.setClock(1, dt) + moose.setClock(2, dt) + moose.setClock(3, dt) + moose.useClock(0, '/model/##[ISA=Compartment]', 'init') + moose.useClock(1, '/model/##', 'process') + moose.useClock(3, '/data/##', 'process') + moose.reinit() + +def setup_model_fig6(): + """Setup the model and recording for fig 6 experiment. This will + insert channels in specific compartments for each cable.""" + # Figure 6A + cable_6a = make_cable('/model/cable_6a', num_comp) + chan_6a_1 = insert_channel(cable_6a[1]) + chan_6a_2 = insert_channel(cable_6a[2]) + soma_Vm_6a = insert_Vm_probe('soma_Vm_6a', cable_6a[0]) + + # Figure 6B + cable_6b = make_cable('/model/cable_6b', num_comp) + chan_6b_1 = insert_channel(cable_6b[3]) + chan_6b_2 = insert_channel(cable_6b[4]) + soma_Vm_6b = insert_Vm_probe('soma_Vm_6b', cable_6b[0]) + + # Figure 6C + cable_6c = make_cable('/model/cable_6c', num_comp) + chan_6c_1 = insert_channel(cable_6c[5]) + chan_6c_2 = insert_channel(cable_6c[6]) + soma_Vm_6c = insert_Vm_probe('soma_Vm_6c', cable_6c[0]) + + # Figure 6D + cable_6d = make_cable('/model/cable_6d', num_comp) + chan_6d_1 = insert_channel(cable_6d[7]) + chan_6d_2 = insert_channel(cable_6d[8]) + soma_Vm_6d = insert_Vm_probe('soma_Vm_6d', cable_6d[0]) + return [soma_Vm_6a, soma_Vm_6b, soma_Vm_6c, soma_Vm_6d] + +def run_model_fig6(): + """Do a simulation for fig6 and plot data.""" + for ch in moose.wildcardFind('/model/##[ISA=ChanBase]'): + ch.Gk = 1.0/Rm + print 'Starting for', inject_time + moose.start(inject_time) + for ch in moose.wildcardFind('/model/##[ISA=ChanBase]'): + ch.Gk = 0.0 + moose.start(simtime - inject_time) + +def plot_fig6(vm): + ax_6a = pylab.subplot(411) + ax_6a.plot(pylab.linspace(0, simtime / tau, + len(vm[0].vector)), + (vm[0].vector - Em)/(Ek - Em)) + ax_6a.set_title('6A') + ax_6b = pylab.subplot(412, sharex=ax_6a, sharey=ax_6a) + ax_6b.plot(pylab.linspace(0, simtime / tau, len(vm[1].vector)), + (vm[1].vector - Em)/(Ek - Em)) + ax_6b.set_title('6B') + ax_6c = pylab.subplot(413, sharex=ax_6a, sharey=ax_6a) + ax_6c.plot(pylab.linspace(0, simtime / tau, len(vm[2].vector)), + (vm[2].vector - Em)/(Ek - Em)) + ax_6c.set_title('6C') + ax_6d = pylab.subplot(414, sharex=ax_6a, sharey=ax_6a) + ax_6d.plot(pylab.linspace(0, simtime / tau, len(vm[3].vector)), + (vm[3].vector - Em)/(Ek - Em)) + ax_6d.set_title('6D') + pylab.tight_layout() + pylab.show() + +def simulate_fig6(): + vm_tables = setup_model_fig6() + schedule() + run_model_fig6() + plot_fig6(vm_tables) + +def setup_model_fig7(): + cable_1 = make_cable('/model/cable_7_1', num_comp) + chans_1 = [] + for ii in range(1, 9): + chan = insert_channel(cable_1[ii]) + chans_1.append(chan) + cable_2 = make_cable('/model/cable_7_2', num_comp) + chans_2 = [] + for ii in range(1, 9): + chan = insert_channel(cable_2[ii]) + chans_2.append(chan) + cable_3 = make_cable('/model/cable_7_3', num_comp) + chans_3 = [] + for ii in range(1, 9): + chan = insert_channel(cable_3[ii]) + chans_3.append(chan) + # chan.Gk = 0.25 / Rm + soma_Vm_1 = insert_Vm_probe('ABCD', cable_1[0]) + soma_Vm_2 = insert_Vm_probe('DCBA', cable_2[0]) + soma_Vm_3 = insert_Vm_probe('control', cable_3[0]) + return (chans_1, chans_2, chans_3), (soma_Vm_1, soma_Vm_2, soma_Vm_3) + +def run_model_fig7(chans_1, chans_2, chans_3): + to_run = simtime + delta_t = 0.25 * tau + for ii in range(0, len(chans_1), 2): + print ii + print '-----------------' + chans_1[ii].Gk = 1 / Rm + chans_1[ii+1].Gk = 1 / Rm + chans_2[-ii-1].Gk = 1 / Rm + chans_2[-ii-2].Gk = 1 / Rm + for chan in chans_3: + chan.Gk = 0.25 / Rm + + for chan in chans_1: + print chan.Gk, + print + for chan in chans_2: + print chan.Gk, + print + moose.start(delta_t) + for chan in chans_1: + chan.Gk = 0.0 + for chan in chans_2: + chan.Gk = 0.0 + to_run = to_run - delta_t + for chan in chans_3: + chan.Gk = 0.0 + moose.start(to_run) + +def plot_fig7(vm): + ax_7 = pylab.subplot(111) + ax_7.plot(pylab.linspace(0, simtime/tau, len(vm[0].vector)), + (vm[0].vector-Em)/(Ek - Em), label='(1,2)->(3,4)->(5,6)->(7,8)') + ax_7.plot(pylab.linspace(0, simtime/tau, len(vm[1].vector)), + (vm[1].vector-Em)/(Ek - Em), label='(7,8)->(5,6)->(3,4)->(1,2)') + ax_7.plot(pylab.linspace(0, simtime/tau, len(vm[2].vector)), + (vm[2].vector-Em)/(Ek - Em), label='control') + pylab.legend() + pylab.show() + +def simulate_fig7(): + chans_list, vm_list = setup_model_fig7() + schedule() + run_model_fig7(*chans_list) # * converts list to args + plot_fig7(vm_list) + +if __name__ == '__main__': + # simulate_fig6() + simulate_fig7() + +# +# rall64.py ends here diff --git a/examples/rall_1964/rall64_graphic.py b/examples/rall_1964/rall64_graphic.py new file mode 100755 index 0000000..a8b9d17 --- /dev/null +++ b/examples/rall_1964/rall64_graphic.py @@ -0,0 +1,144 @@ +# rall64_graphic.py --- +# +# Filename: rall64_graphic.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Thu May 29 13:18:12 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""Rall 1964 demo with fancy graphics""" + +from matplotlib import pyplot as plt +from matplotlib import animation as anim +import numpy as np +from rall64 import * + +fig = plt.figure('Rall 1964, Figure 7') +fig.suptitle('Rall 1964, Figure 7') +ax_model = fig.add_subplot(2, 1, 1) +ax_data = fig.add_subplot(2, 1, 2) + +colors = ['darkblue', 'darkgreen', 'darkred'] +active_colors = ['lightblue', 'lightgreen', 'lightpink'] +radius = 0.5 +length = 0.8 +cables = [] +lines = [] +for yy in range(3): + cables.append([]) + for xx in range(10): + patch = ax_model.add_patch(plt.Rectangle((xx, 2*yy), length, 2 * radius, color=colors[yy])) + cables[yy].append(patch) + txt = ax_model.annotate('%d' % (xx), (xx, 2*yy), xytext=(xx + length/2.0, 2 * yy + radius), color='gray') +ax_model.set_xlim((-1, xx + 1)) +ax_model.set_ylim((-1, 2 * yy + 3 * radius)) +# ax_model.xaxis.set_visible(False) +# ax_model.yaxis.set_visible(False) +ax_model.set_axis_off() +stim_no = 0 +stim_count = 4 +clock = moose.element('/clock') +chan_list, vm_list = setup_model_fig7() +stim_t = 0.25 * tau +update_dt = dt +xdata = [[],[],[]] +ydata = [[],[],[]] + +def update(xx): + global stim_no, chan_list, vm_list, cables, clock + if stim_no < stim_count: + cables[0][2 * stim_no+1].set_facecolor(active_colors[0]) + cables[0][2 * stim_no+1].set_edgecolor('y') + cables[0][2 * stim_no + 2].set_facecolor(active_colors[0]) + cables[0][2 * stim_no + 2].set_edgecolor('y') + cables[1][- 2 * stim_no - 2].set_facecolor(active_colors[1]) + cables[1][- 2 * stim_no - 2].set_edgecolor('y') + cables[1][- 2 * stim_no - 3].set_facecolor(active_colors[1]) + cables[1][- 2 * stim_no - 3].set_edgecolor('y') + for patch in cables[2][1:-1]: + patch.set_facecolor(active_colors[2]) + patch.set_edgecolor('y') + if clock.currentTime < stim_t * (stim_no + 1): + chan_list[0][2 * stim_no].Gk = 1 / Rm + chan_list[0][2 * stim_no + 1].Gk = 1 / Rm + chan_list[1][- 2 * stim_no - 1].Gk = 1 / Rm + chan_list[1][- 2 * stim_no - 2].Gk = 1 / Rm + for chan in chan_list[2]: + chan.Gk = 0.25 / Rm + moose.start(update_dt) + else: + stim_no += 1 + for chans in chan_list: + for ch in chans: + ch.Gk = 0.0 + for ii in range(len(cables)): + for patch in cables[ii]: + patch.set_color(colors[ii]) + elif clock.currentTime < simtime: + + moose.start(update_dt) + for patch in cables[0]: + patch.set_facecolor(colors[0]) + for patch in cables[1]: + patch.set_facecolor(colors[1]) + for ii, (tmp_lines, vm, color) in enumerate(zip(lines, vm_list, colors)): + for line in tmp_lines: + line.set_data(np.linspace(0, clock.currentTime, len(vm.vector))/tau, (vm.vector - Em) / (Ek - Em)) + + +# """A variation of rall64.run_model_fig7 with visualization of the compartments.""" +lines.append(ax_data.plot([0], [0], label='(1,2)->(3,4)->(5,6)->(7,8)', color=colors[0])) +lines.append(ax_data.plot([0], [0], label='(7,8)->(5,6)->(3,4)->(1,2)', color=colors[1])) +lines.append(ax_data.plot([0], [0], label='control', color=colors[2])) +ax_data.set_xlim(0, simtime/tau) +ax_data.set_ylim(0, 0.15) +ax_data.set_xlabel('Time (t/tau)') +ax_data.set_ylabel('Membrane voltage (Vm - Em)/(Ek - Vm)') +print lines +plt.legend() +schedule() +fanim = anim.FuncAnimation(fig, update, fargs=None, interval=25, repeat=False) +plt.show() + + +# +# rall64_graphic.py ends here diff --git a/examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py b/examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py new file mode 100644 index 0000000..ee0ab8a --- /dev/null +++ b/examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py @@ -0,0 +1,314 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +Simulate a pseudo-STDP protocol and plot the STDP kernel +that emerges from Ca plasticity of Graupner and Brunel 2012. + +Author: Aditya Gilra, NCBS, Bangalore, October, 2014. +''' + +import moose +from pylab import * + +# ########################################### +# Neuron models +# ########################################### + +## Leaky integrate and fire neuron +Vrest = -65e-3 # V # resting potential +Vt_base = -45e-3 # V # threshold +Vreset = -55e-3 # V # in current steps, Vreset is same as pedestal +R = 1e8 # Ohm +tau = 10e-3 # s +refrT = 2e-3 # s + +# ########################################### +# Initialize neuron group +# ########################################### + +## two neurons: index 0 will be presynaptic, 1 will be postsynaptic +network = moose.LIF( 'network', 2 ); +moose.le( '/network' ) +network.vec.Em = Vrest +network.vec.thresh = Vt_base +network.vec.refractoryPeriod = refrT +network.vec.Rm = R +network.vec.vReset = Vreset +network.vec.Cm = tau/R +network.vec.inject = 0. +network.vec.initVm = Vrest + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +### Cortical slice values -- Table Suppl 2 in Graupner & Brunel 2012 +### Also used in Higgins et al 2014 +#tauCa = 22.6936e-3 # s # Ca decay time scale +#tauSyn = 346.3615 # s # synaptic plasticity time scale +### in vitro values in Higgins et al 2014, faster plasticity +#CaPre = 0.56175 # mM +#CaPost = 1.2964 # mM +### in vivo values in Higgins et al 2014, slower plasticity +##CaPre = 0.33705 # mM +##CaPost = 0.74378 # mM +#delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + ## proxy for rise-time of NMDA +#thetaD = 1.0 # mM # depression threshold for Ca +#thetaP = 1.3 # mM # potentiation threshold for Ca +#gammaD = 331.909 # factor for depression term +#gammaP = 725.085 # factor for potentiation term + +#J = 5e-3 # V # delta function synapse, adds to Vm +#weight = 0.43 # initial synaptic weight + ## gammaP/(gammaP+gammaD) = eq weight w/o noise + ## see eqn (22), noiseSD also appears + ## but doesn't work here, + ## weights away from 0.4 - 0.5 screw up the STDP rule!! + +#bistable = True # if bistable is True, use bistable potential for weights +#noisy = False # use noisy weight updates given by noiseSD +#noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) + +######################################## + +## DP STDP curve (Fig 2C) values -- Table Suppl 1 in Graupner & Brunel 2012 +tauCa = 20e-3 # s # Ca decay time scale +tauSyn = 150.0 # s # synaptic plasticity time scale +CaPre = 1.0 # arb +CaPost = 2.0 # arb +delayD = 13.7e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 200.0 # factor for depression term +gammaP = 321.808 # factor for potentiation term + +J = 5e-3 # V # delta function synapse, adds to Vm +weight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # see eqn (22), noiseSD also appears + # but doesn't work here, + # weights away from 0.4 - 0.5 screw up the STDP rule!! + +bistable = True # if bistable is True, use bistable potential for weights +noisy = False # use noisy weight updates given by noiseSD +noiseSD = 2.8284 # if noisy, use noiseSD (3.3501 in Higgins et al 2014) + +########################################## + +syn = moose.GraupnerBrunel2012CaPlasticitySynHandler( '/network/syn' ) +syn.numSynapses = 1 # 1 synapse + # many pre-synaptic inputs can connect to a synapse +# synapse onto postsynaptic neuron +moose.connect( syn, 'activationOut', network.vec[1], 'activation' ) + +# synapse from presynaptic neuron +moose.connect( network.vec[0],'spikeOut', syn.synapse[0], 'addSpike') + +# post-synaptic spikes also needed for STDP +moose.connect( network.vec[1], 'spikeOut', syn, 'addPostSpike') + +syn.synapse[0].delay = 0.0 +syn.synapse[0].weight = weight +syn.CaInit = 0.0 +syn.tauCa = tauCa +syn.tauSyn = tauSyn +syn.CaPre = CaPre +syn.CaPost = CaPost +syn.delayD = delayD +syn.thetaD = thetaD +syn.thetaP = thetaP +syn.gammaD = gammaD +syn.gammaP = gammaP +syn.weightScale = J # weight ~1, weightScale ~ J + # weight*weightScale is activation, + # i.e. delta-fn added to postsynaptic Vm + +syn.weightMax = 1.0 # bounds on the weight +syn.weightMin = 0. + +syn.noisy = noisy +syn.noiseSD = noiseSD +syn.bistable = bistable + +# ########################################### +# Setting up tables +# ########################################### + +Vms = moose.Table( '/plotVms', 2 ) +moose.connect( network, 'VmOut', Vms, 'input', 'OneToOne') +spikes = moose.Table( '/plotSpikes', 2 ) +moose.connect( network, 'spikeOut', spikes, 'input', 'OneToOne') +CaTable = moose.Table( '/plotCa', 1 ) +moose.connect( CaTable, 'requestOut', syn, 'getCa') +WtTable = moose.Table( '/plotWeight', 1 ) +moose.connect( WtTable, 'requestOut', syn.synapse[0], 'getWeight') + +# ########################################### +# Simulate the STDP curve with spaced pre-post spike pairs +# ########################################### + +dt = 1e-3 # s +# moose simulation +moose.useClock( 0, '/network/syn', 'process' ) +moose.useClock( 1, '/network', 'process' ) +moose.useClock( 2, '/plotSpikes', 'process' ) +moose.useClock( 3, '/plotVms', 'process' ) +moose.useClock( 3, '/plotCa', 'process' ) +moose.useClock( 3, '/plotWeight', 'process' ) +moose.setClock( 0, dt ) +moose.setClock( 1, dt ) +moose.setClock( 2, dt ) +moose.setClock( 3, dt ) +moose.setClock( 9, dt ) +moose.reinit() + +# function to make the aPlus and aMinus settle to equilibrium values +settletime = 100e-3 # s +def reset_settle(): + """ Call this between every pre-post pair + to reset the neurons and make them settle to rest. + """ + syn.synapse[0].weight = weight + syn.Ca = 0.0 + moose.start(settletime) + # Ca gets a jump at pre-spike+delayD + # So this event can occur during settletime + # So set Ca and weight once more after settletime + syn.synapse[0].weight = weight + syn.Ca = 0.0 + +# function to inject a sharp current pulse to make neuron spike +# immediately at a given time step +def make_neuron_spike(nrnidx,I=1e-7,duration=1e-3): + """ Inject a brief current pulse to + make a neuron spike + """ + network.vec[nrnidx].inject = I + moose.start(duration) + network.vec[nrnidx].inject = 0. + +dwlist_neg = [] +ddt = 2e-3 # s +# since CaPlasticitySynHandler is event based +# multiple pairs are needed for Ca to be registered above threshold +# Values from Fig 2, last line of legend +numpairs = 60 # number of spike parts per deltat +t_between_pairs = 1.0 # time between each spike pair +t_extent = 100e-3 # s # STDP kernel extent, + # t_extent > t_between_pairs/2 inverts pre-post pairing! +# dt = tpost - tpre +# negative dt corresponds to post before pre +print '-----------------------------------------------' +for deltat in arange(t_extent,0.0,-ddt): + reset_settle() + for i in range(numpairs): + # post neuron spike + make_neuron_spike(1) + moose.start(deltat) + # pre neuron spike after deltat + make_neuron_spike(0) + moose.start(t_between_pairs) # weight changes after pre-spike+delayD + # must run for at least delayD after pre-spike + dw = ( syn.synapse[0].weight - weight ) / weight + print 'post before pre, dt = %1.3f s, dw/w = %1.3f'%(-deltat,dw) + dwlist_neg.append(dw) +print '-----------------------------------------------' +# positive dt corresponds to pre before post +dwlist_pos = [] +for deltat in arange(ddt,t_extent+ddt,ddt): + reset_settle() + for i in range(numpairs): + # pre neuron spike + make_neuron_spike(0) + moose.start(deltat) + # post neuron spike after deltat + make_neuron_spike(1) + moose.start(t_between_pairs) + dw = ( syn.synapse[0].weight - weight ) / weight + print 'pre before post, dt = %1.3f s, dw/w = %1.3f'%(deltat,dw) + dwlist_pos.append(dw) +print '-----------------------------------------------' +print 'Each of the above pre-post pairs was repeated',\ + numpairs,'times, with',t_between_pairs,'s between pairs.' +print +print 'Due to event based updates, Ca decays suddenly at events:' +print 'pre-spike, pre-spike + delayD, and post-spike;' +print 'apart from the usual CaPre and CaPost jumps at' +print 'pre-spike + delayD and post-spike respectively.' +print 'Because of the event based update, multiple pre-post pairs are used.' +print +print 'If you reduce the t_between_pairs,' +print ' you\'ll see potentiation for the LTD part without using any triplet rule!' +print +print "If you turn on noise, the weights fluctuate too much," +print " not sure if there's a bug in my noise implementation." +print '-----------------------------------------------' + +# ########################################### +# Plot the simulated Vm-s and STDP curve +# ########################################### + +# insert spikes so that Vm reset doesn't look weird +Vmseries0 = Vms.vec[0].vector +numsteps = len(Vmseries0) +for t in spikes.vec[0].vector: + Vmseries0[int(t/dt)-1] = 30e-3 # V +Vmseries1 = Vms.vec[1].vector +for t in spikes.vec[1].vector: + Vmseries1[int(t/dt)-1] = 30e-3 # V + +timeseries = linspace(0.,1000*numsteps*dt,numsteps) +# Voltage plots +figure(facecolor='w') +plot(timeseries,Vmseries0,color='r') # pre neuron's vm +plot(timeseries,Vmseries1,color='b') # post neuron's vm +xlabel('time (ms)') +ylabel('Vm (V)') +title("pre (r) and post (b) neurons' Vm") + +# Ca plots for the synapse +figure(facecolor='w') +plot(timeseries,CaTable.vector[:len(timeseries)],color='r') +plot((timeseries[0],timeseries[-1]),(thetaP,thetaP),color='k',\ + linestyle='dashed',label='pot thresh') +plot((timeseries[0],timeseries[-1]),(thetaD,thetaD),color='b',\ + linestyle='dashed',label='dep thresh') +legend() +xlabel('time (ms)') +ylabel('Ca (arb)') +title("Ca conc in the synapse") + +# Weight plots for the synapse +figure(facecolor='w') +plot(timeseries,WtTable.vector[:len(timeseries)],color='r') +xlabel('time (ms)') +ylabel('Efficacy') +title("Efficacy of the synapse") + +# STDP curve +fig = figure(facecolor='w') +ax = fig.add_subplot(111) +ax.plot(arange(-t_extent,0,ddt)*1000,array(dwlist_neg),'.-r') +ax.plot(arange(ddt,(t_extent+ddt),ddt)*1000,array(dwlist_pos),'.-b') +xmin,xmax = ax.get_xlim() +ymin,ymax = ax.get_ylim() +ax.set_xticks([xmin,0,xmax]) +ax.set_yticks([ymin,0,ymax]) +ax.plot((0,0),(ymin,ymax),linestyle='dashed',color='k') +ax.plot((xmin,xmax),(0,0),linestyle='dashed',color='k') +ax.set_xlabel('$t_{post}-t_{pre}$ (ms)') +ax.set_ylabel('$\Delta w / w$') +fig.tight_layout() +#fig.subplots_adjust(hspace=0.3,wspace=0.5) # use after tight_layout() + +show() diff --git a/examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py b/examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py new file mode 100644 index 0000000..f4647cc --- /dev/null +++ b/examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py @@ -0,0 +1,169 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +Simulate pre and post Poisson firing for a synapse with +Ca plasticity of Graupner and Brunel 2012. +See the trace over time (lifetime) for the synaptic efficacy, +similar to figure 2A of Higgins, Graupner, Brunel, 2014. + +Author: Aditya Gilra, NCBS, Bangalore, October, 2014. +''' + +import moose +from pylab import * + +numrepeats = 10 # repeat runtime for numrepeats + +frate = 1.0 # pre- and post-synaptic firing rate + # 1 Hz gives ~300s lifetime, ~0.2 efficacy (weight) + # 10 Hz gives ~10s lifetime, ~0.5 efficacy (weight) + # high firing rates make synaptic efficacy go to 0.5. +runtime = 600.0/frate # s + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +## Cortical slice values -- Table Suppl 2 in Graupner & Brunel 2012 +## Also used in Higgins et al 2014 +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +J = 5e-3 # V # delta function synapse, adds to Vm +weight = 0.43 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # see eqn (22), noiseSD also appears + # but doesn't work here, + # weights away from 0.4 - 0.5 screw up the STDP rule!! + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) + +########################################## + +prePoisson = moose.RandSpike('/pre') +prePoisson.rate = frate +postPoisson = moose.RandSpike('/post') +postPoisson.rate = frate + +syn = moose.GraupnerBrunel2012CaPlasticitySynHandler( '/syn' ) +syn.numSynapses = 1 # 1 synapse + # many pre-synaptic inputs can connect to a synapse + +# spikes from presynaptic Poisson generator +moose.connect( prePoisson,'spikeOut', syn.synapse[0], 'addSpike') + +# post-synaptic spikes from postsynaptic Poisson generator +moose.connect( postPoisson, 'spikeOut', syn, 'addPostSpike') + +syn.synapse[0].delay = 0.0 +syn.synapse[0].weight = 1.0 # starting weight to decay from +syn.CaInit = 0.0 +syn.tauCa = tauCa +syn.tauSyn = tauSyn +syn.CaPre = CaPre +syn.CaPost = CaPost +syn.delayD = delayD +syn.thetaD = thetaD +syn.thetaP = thetaP +syn.gammaD = gammaD +syn.gammaP = gammaP +syn.weightMax = 1.0 # bounds on the weight +syn.weightMin = 0. + +syn.noisy = noisy +syn.noiseSD = noiseSD +syn.bistable = bistable + +# ########################################### +# Setting up tables +# ########################################### + +CaTable = moose.Table( '/plotCa', 1 ) +moose.connect( CaTable, 'requestOut', syn, 'getCa') +WtTable = moose.Table( '/plotWeight', 1 ) +moose.connect( WtTable, 'requestOut', syn.synapse[0], 'getWeight') + +# ########################################### +# Simulate +# ########################################### + +dt = 1e-3 # s +# moose simulation +#moose.useClock( 0, '/syn', 'process' ) +#moose.useClock( 1, '/pre', 'process' ) +#moose.useClock( 1, '/post', 'process' ) +# I think MOOSE uses a different clock than 3 for Tables +# anyway, we use the default one and set all clocks to dt below +#moose.useClock( 3, '/plotCa', 'process' ) +#moose.useClock( 3, '/plotWeight', 'process' ) +## use setClock to set the dt different from default dt +for i in range(10): + moose.setClock( i, dt ) + +moose.seed(100) +moose.reinit() + +# function to make the aPlus and aMinus settle to equilibrium values +print "Rates of pre- and post-syanptic neurons =",frate +WtSeries = [] +numsteps = int(runtime/dt) +for i in range(numrepeats): + syn.synapse[0].weight = 1.0 # starting weight to decay from + syn.Ca = 0.0 + print "Repeat number",i,"running..." + moose.start(runtime) + WtSeries.append(WtTable.vector[i*numsteps:(i+1)*numsteps]) +WtSeries = array(WtSeries) +WtMean = mean(WtSeries,axis=0) +print "plotting..." + +# ########################################### +# Plot the simulated weights and Ca vs time +# ########################################### + +timeseries = linspace(0.0,runtime,numsteps) +# Ca plots for the synapse +# only the first repeat +figure(facecolor='w') +plot(timeseries,CaTable.vector[:numsteps],color='r') +plot((timeseries[0],timeseries[-1]),(thetaP,thetaP),color='k',\ + linestyle='dashed',label='pot thresh') +plot((timeseries[0],timeseries[-1]),(thetaD,thetaD),color='b',\ + linestyle='dashed',label='dep thresh') +legend() +xlabel('time (s)') +ylabel('Ca (arb)') +title("Ca conc in the synapse @ "+str(frate)+" Hz firing") + +# Weight plots for the synapse +figure(facecolor='w') +for i in range(numrepeats): + plot(timeseries,WtSeries[i],alpha=0.5) +plot(timeseries,WtMean,color='k',linewidth=2) +xlabel('time (s)') +ylabel('Efficacy') +title("Efficacy of the synapse @ "+str(frate)+" Hz firing") + +show() diff --git a/examples/snippets/HsolveInstability.py b/examples/snippets/HsolveInstability.py new file mode 100644 index 0000000..61ac1df --- /dev/null +++ b/examples/snippets/HsolveInstability.py @@ -0,0 +1,289 @@ +# HsolveInstability.py --- + +# Commentary: +# +# A toy compartmental neuronal + chemical model that causes bad things +# to happen to the hsolver, as of 28 May 2013. Hopefully this will +# become irrelevant soon. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +#import sys +#sys.path.append('../../python') +#import os +#os.environ['NUMPTHREADS'] = '1' +import math +import numpy + +import pylab +import moose + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def create_na_proto(): + lib = moose.Neutral('/library') + na = moose.HHChannel('/library/na') + na.Xpower = 3 + xGate = moose.HHGate(na.path + '/gateX') + xGate.setupAlpha(Na_m_params + + [VDIVS, VMIN, VMAX]) + na.Ypower = 1 + yGate = moose.HHGate(na.path + '/gateY') + yGate.setupAlpha(Na_h_params + + [VDIVS, VMIN, VMAX]) + return na + +def create_k_proto(): + lib = moose.Neutral('/library') + k = moose.HHChannel('/library/k') + k.Xpower = 4.0 + xGate = moose.HHGate(k.path + '/gateX') + xGate.setupAlpha(K_n_params + + [VDIVS, VMIN, VMAX]) + return k + +def create_squid(): + """Create a single compartment squid model.""" + parent = moose.Neutral ('/n' ) + compt = moose.Compartment( '/n/compt' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 + compt.Rm = 4.2e5 + compt.Ra = 7639.44e3 + nachan = moose.HHChannel( '/n/compt/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + + [VDIVS, VMIN, VMAX]) + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + + [VDIVS, VMIN, VMAX]) + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') + + kchan = moose.HHChannel( '/n/compt/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + + [VDIVS, VMIN, VMAX]) + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') + return compt + +def create_spine( parentCompt, parentObj, index, frac, length, dia, theta ): + """Create spine of specified dimensions and index""" + RA = 1.0 + RM = 1.0 + CM = 0.01 + sname = 'shaft' + str(index) + hname = 'head' + str(index) + shaft = moose.Compartment( parentObj.path + '/' + sname ) + moose.connect( parentCompt, 'raxial', shaft, 'axial', 'single' ) + x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) + y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) + z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) + shaft.x0 = x + shaft.y0 = y + shaft.z0 = z + sy = y + length * math.cos( theta * math.pi / 180.0 ) + sz = z + length * math.sin( theta * math.pi / 180.0 ) + shaft.x = x + shaft.y = sy + shaft.z = sz + shaft.diameter = dia / 10.0 + shaft.length = length + xa = math.pi * dia * dia / 400.0 + circumference = math.pi * dia / 10.0 + shaft.Ra = RA * length / xa + shaft.Rm = RM / ( length * circumference ) + shaft.Cm = CM * length * circumference + shaft.Em = EREST_ACT + shaft.initVm = EREST_ACT + + head = moose.Compartment( parentObj.path + '/' + hname ) + moose.connect( shaft, 'raxial', head, 'axial', 'single' ) + head.x0 = x + head.y0 = sy + head.z0 = sz + hy = sy + length * math.cos ( theta * math.pi / 180.0 ) + hz = sz + length * math.sin ( theta * math.pi / 180.0 ) + head.x = x + head.y = hy + head.z = hz + head.diameter = dia + head.length = length + xa = math.pi * dia * dia / 4.0 + circumference = math.pi * dia + head.Ra = RA * length / xa + head.Rm = RM / ( length * circumference ) + head.Cm = CM * length * circumference + head.Em = EREST_ACT + head.initVm = EREST_ACT + return head + +def create_spine_with_receptor( compt, cell, index, frac ): + FaradayConst = 96485.3415 # s A / mol + spineLength = 5.0e-6 + spineDia = 4.0e-6 + head = create_spine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) + gluR = moose.SynChan( head.path + '/gluR' ) + gluR.tau1 = 1e-3 + gluR.tau2 = 1e-3 + gluR.Gbar = 1e-5 + gluR.Ek= 10.0e-3 + moose.connect( head, 'channel', gluR, 'channel', 'single' ) + + caPool = moose.CaConc( head.path + '/ca' ) + caPool.CaBasal = 1e-4 # 0.1 micromolar + caPool.tau = 0.01 + B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) + B = B / 20.0 # scaling factor for Ca buffering + caPool.B = B + moose.connect( gluR, 'IkOut', caPool, 'current', 'single' ) + + synh = moose.SimpleSynHandler( gluR.path + '/synh' ) + moose.connect( synh, "activationOut", gluR, "activation" ) + return synh + +def add_plot( objpath, field, plot ): + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def make_plots(): + graphs = moose.Neutral( '/graphs' ) + add_plot( '/n/compt', 'getVm', 'dendVm' ) + add_plot( '/n/head2', 'getVm', 'head2Vm' ) + add_plot( '/n/head2/ca', 'getCa', 'head2Ca' ) + +def display_plots( name ): + pylab.figure() + for x in moose.wildcardFind( '/graphs/#' ): + pos = numpy.arange( 0, x.vector.size ) * x.dt + print len( pos ), len( x.vector ) + pylab.plot( pos, x.vector, label=x.name ) + pylab.legend() + pylab.title( name ) + +def make_spiny_compt(): + comptLength = 100e-6 + comptDia = 4e-6 + numSpines = 5 + compt = create_squid() + compt.inject = 0 + compt.x0 = 0 + compt.y0 = 0 + compt.z0 = 0 + compt.x = comptLength + compt.y = 0 + compt.z = 0 + compt.length = comptLength + compt.diameter = comptDia + synInput = moose.SpikeGen( '/n/compt/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + cell = moose.element( '/n' ) + for i in range( numSpines ): + r = create_spine_with_receptor( compt, cell, i, i/float(numSpines) ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'single' ) + syn.weight = 0.2 + syn.delay = i * 1.0e-4 + +def main(): + fineDt = 1e-5 + coarseDt = 5e-5 + make_spiny_compt() + make_plots() + for i in range( 8 ): + moose.setClock( i, fineDt ) + moose.setClock( 8, coarseDt ) + moose.reinit() + moose.start( 0.1 ) + display_plots( 'instab.plot' ) + # make Hsolver and rerun + hsolve = moose.HSolve( '/n/hsolve' ) + for i in range( 8 ): + moose.setClock( i, coarseDt ) + hsolve.dt = coarseDt + hsolve.target = '/n/compt' + moose.reinit() + moose.start( 0.1 ) + display_plots( 'h_instab.plot' ) + pylab.show() + +if __name__ == '__main__': + main() + +# +# HsolveInstability.py ends here diff --git a/examples/snippets/IntegrateFireZoo.py b/examples/snippets/IntegrateFireZoo.py new file mode 100644 index 0000000..b715519 --- /dev/null +++ b/examples/snippets/IntegrateFireZoo.py @@ -0,0 +1,228 @@ + +# -*- coding: utf-8 -*- +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +#### Author: Aditya Gilra, NCBS, Bangalore, October, 2014. + +''' +Simulate current injection into various Integrate and Fire neurons. + +All integrate and fire (IF) neurons are subclasses of compartment, +so they have all the fields of a passive compartment. Multicompartmental neurons can be created. +Even ion channels and synaptic channels can be added to them, say for sub-threshold behaviour. + +The key addition is that they have a reset mechanism when the membrane potential Vm crosses a threshold. +On each reset, a spikeOut message is generated, and the membrane potential is reset to Vreset. +The threshold may be the spike generation threshold as for LIF and AdThreshIF, +or it may be the peak of the spike as for QIF, ExIF, AdExIF, and IzhIF. +The adaptive IFs have an extra adapting variable apart from membrane potential Vm. + +Details of the IFs are given below. +The fields of the MOOSE objects are named exactly as the parameters in the equations below. + + LIF: Leaky Integrate and Fire: + Rm*Cm * dVm/dt = -(Vm-Em) + Rm*I + + QIF: Quadratic LIF: + Rm*Cm * dVm/dt = a0*(Vm-Em)*(Vm-vCritical) + Rm*I + + ExIF: Exponential leaky integrate and fire: + Rm*Cm * dVm/dt = -(Vm-Em) + deltaThresh * exp((Vm-thresh)/deltaThresh) + Rm*I + + AdExIF: Adaptive Exponential LIF: + Rm*Cm * dVm/dt = -(Vm-Em) + deltaThresh * exp((Vm-thresh)/deltaThresh) + Rm*I - w, + + tau_w * dw/dt = a0*(Vm-Em) - w, + + At each spike, w -> w + b0 " + + AdThreshIF: Adaptive threshold LIF: + Rm*Cm * dVm/dt = -(Vm-Em) + Rm*I, + + tauThresh * d threshAdaptive / dt = a0*(Vm-Em) - threshAdaptive, + + At each spike, threshAdaptive is increased by threshJump + the spiking threshold adapts as thresh + threshAdaptive + + IzhIF: Izhikevich: + d Vm /dt = a0 * Vm^2 + b0 * Vm + c0 - u + I/Cm, + + d u / dt = a * ( b * Vm - u ), + + At each spike, u -> u + d, + + By default, a0 = 0.04e6/V/s, b0 = 5e3/s, c0 = 140 V/s are set to SI units, + so use SI consistently, or change a0, b0, c0 also if you wish to use other units. + Rm from Compartment is not used here, vReset is same as c in the usual formalism. + At rest, u0 = b V0, and V0 = ( -(-b0-b) +/- sqrt((b0-b)^2 - 4*a0*c0)) / (2*a0). + +''' + +import moose +import matplotlib.pyplot as plt +import numpy as np + +# ########################################### +# Neuron model parameters (definitions above) +# ########################################### + +# Leaky Integrate and Fire neuron (common to all IFs) +Vrest = -65e-3 # V # resting potential +Vt_base = -45e-3 # V # threshold +Vreset = -55e-3 # V # Vreset need not be same as Vrest +R = 1e8 # Ohm +tau = 10e-3 # s +refrT = 1e-3 # s + +# for QIF +vCritical = -54e-3 # V # critical voltage above + # which Vm rises fast quadratically +a0 = 1e3 # V^-1 # parameter in equation + +# for ExIF +deltaThresh = 10e-3 # V +vPeak = 30e-3 # V # for ExpIF & IzhIF, reset is from vPeak, not thresh. + # I also use vPeak for adding spikes post-simulation + # to LIF, QIF, etc. +# for AdExIF +a0AdEx = 0.0 # unitless # voltage-dependent adaptation factor +b0 = 5e-10 # Amp # current step added to the adaptation current at each spike +tauW = 20e-3 # s # decay time constant of the adaptation current + +# for AdThreshIF +a0AdTh = 0.0 # unitless # voltage-dependent adaptation factor +threshJump = 5e-3 # V # voltage step added to the threshold at each spike +tauThresh = 20e-3 # s # decay time constant of the adaptative threshold + +# for IzhIF +a = 50.0 # s^-1 # d u / dt = a * ( b * Vm - u ) +b = 246.15 # s^-1 # to obtain Em = -65mV at rest, set b = (a0*Em^2 + b0*Em + c0)/Em + # b = (4×10⁴×(−65×10⁻³)^2 + 5×10³×(−65×10⁻³) + 140) ÷ (−65×10⁻³) +uRest = -16 # V/s # uRest = b*Em = -16 V/s +d = 10 # V/s # d is added to u at every spike + +def main(): + ''' + On the command-line, in moose-examples/snippets directory, run ``python IntegrateFireZoo.py``. + The script will ask you which neuron you want to simulate and you can choose and run what you want. + Play with the parameters of the IF neurons in the source code. + ''' + neuronChoices = {'LIF':moose.LIF, 'QIF':moose.QIF, 'ExIF':moose.ExIF, 'AdExIF':moose.AdExIF, + 'AdThreshIF':moose.AdThreshIF, 'IzhIF':moose.IzhIF} + #### CHOOSE ONE OF THE NEURON KEYS AS choiceKey FROM BELOW DICTIONARY #### + #choiceKey = 'LIF' + #### No need, am inputting it from the user on the terminal + choiceKeys = neuronChoices.keys() # keys() does not retain the order in dict defn above! + choiceIndex = input('Choose a number corresponding to your desired neuron: '+ \ + str([(i,key) for (i,key) in enumerate(choiceKeys)])+' -- ') + choiceKey = choiceKeys[choiceIndex] + neuronChoice = neuronChoices[choiceKey] + + # ########################################### + # Initialize neuron group + # ########################################### + + # neuron instantiation + network = neuronChoice( 'network' ); # choose neuron type above + moose.le( '/network' ) + network.vec.Em = Vrest + network.vec.thresh = Vt_base + network.vec.refractoryPeriod = refrT + network.vec.Rm = R + network.vec.vReset = Vreset + network.vec.Cm = tau/R + network.vec.initVm = Vrest + + # neuron specific parameters and current injected I + if choiceKey == 'LIF': + network.vec.inject = 5e-10 # Amp # injected current I + if choiceKey == 'QIF': + network.vec.a0 = a0 + network.vec.vCritical = vCritical + network.vec.inject = 5e-10 # Amp # injected current I + elif choiceKey == 'ExIF': + network.vec.deltaThresh = deltaThresh + network.vec.vPeak = vPeak # reset at vPeak, not at thresh + network.vec.inject = 5e-9 # Amp # injected current I + elif choiceKey == 'AdExIF': + network.vec.deltaThresh = deltaThresh + network.vec.vPeak = vPeak # reset at vPeak, not at thresh + network.vec.a0 = a0AdEx + network.vec.b0 = b0 + network.vec.tauW = tauW + network.vec.inject = 5e-9 # Amp # injected current I + elif choiceKey == 'AdThreshIF': + network.vec.a0 = a0AdTh + network.vec.threshJump = threshJump + network.vec.tauThresh = tauThresh + network.vec.inject = 1e-9 # Amp # injected current I + elif choiceKey == 'IzhIF': + network.vec.a = a + network.vec.b = b + network.vec.d = d + network.vec.uInit = uRest # Just sets the initial value of u + network.vec.vPeak = vPeak # reset at vPeak, not at thresh + network.vec.inject = 5e-9 # Amp # injected current I + + print "Injecting current =",network.vec[0].inject,"in",choiceKey,"neuron." + + # ########################################### + # Setting up table + # ########################################### + + Vm = moose.Table( '/plotVm' ) + moose.connect( network, 'VmOut', Vm, 'input', 'OneToOne') + spikes = moose.Table( '/plotSpikes' ) + moose.connect( network, 'spikeOut', spikes, 'input', 'OneToOne') + + # ########################################### + # Simulate the current injection + # ########################################### + + dt = 5e-6 # s + runtime = 0.02 # s + + # moose simulation + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/plotSpikes', 'process' ) + moose.useClock( 3, '/plotVm', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + moose.setClock( 9, dt ) + moose.reinit() + moose.start(runtime) + + # ########################################### + # Plot the simulated Vm-s and STDP curve + # ########################################### + + # Voltage plots + Vmseries = Vm.vector + numsteps = len(Vmseries) + if choiceKey not in ['ExIF','AdExIF','IzhIF']: + # insert spikes so that Vm reset at thresh doesn't look weird + # for ExIF, etc. reset is at vPeak, so not weird. + for t in spikes.vector: + Vmseries[int(t/dt)-1] = 30e-3 # V + timeseries = np.arange(0.,1000*numsteps*dt-1e-10,dt*1000) + plt.figure(facecolor='w') + plt.plot(timeseries,Vmseries*1000,color='r') # neuron's Vm + plt.xlabel('time (ms)') + plt.ylabel('Vm (mV)') + plt.title(choiceKey+"neuron, current="+str(network.vec[0].inject)+"A") + + plt.show() + +# Run below if script is executed standalone. +if __name__ == '__main__': + '''The main function to simulate an integrate and fire neuron.''' + main() diff --git a/examples/snippets/Izhikevich_with_synapse.py b/examples/snippets/Izhikevich_with_synapse.py new file mode 100644 index 0000000..9780ea5 --- /dev/null +++ b/examples/snippets/Izhikevich_with_synapse.py @@ -0,0 +1,157 @@ +# __BROKEN__ +# Izhikevich_with_synapse.py --- +# +# Filename: Izhikevich_with_synapse.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Sat Apr 19 10:47:15 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# This shows the use of SynChan with Izhikevich neuron. This can be +# used for creating a network of Izhikevich neurons. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +import pylab +sys.path.append('../../python') +import moose +from moose import utils as mutils + +def make_neuron(path): + """Create a neuron with parameters set for tonic_bursting.""" + nrn = moose.IzhikevichNrn(path) + # "tonic_bursting": ['C', 0.02 , 0.2 , -50.0, 2.0 , 15.0, -70.0, 220.0], # Fig. 1.C + print((path,dir(nrn))) + nrn.alpha = 0.04 + nrn.beta = 5.0 + nrn.gamma = 140.0 + #nrn.Rm = 1.0 # FIXME: IzhikevichNrn does not have this field. + nrn.a = 0.02 + nrn.b = 0.2 + nrn.c = -50.0 + nrn.d = 2.0 + nrn.initVm = -70.0 + nrn.Vmax = 40.0 + return nrn + +def make_pulsegen(path): + """Create a pulse generator to test tonic spiking in the neuron.""" + pulse = moose.PulseGen(path) + pulse.delay[0] = 10.0 # ms + pulse.width[0] = 200.0 # ms + pulse.level[0] = 15e-3 # uA + return pulse + +def make_synapse(path): + """Create a synapse with two time constants.""" + syn = moose.SynChan(path) + syn.tau1 = 5.0 # ms + syn.tau2 = 1.0 # ms + syn.Gbar = 1.0 # mS + syn.Ek = 0.0 + syn.synapse.num = 1 + # syn.bufferTime = 1.0 # ms + syn.synapse.delay = 1.0 + syn.synapse.weight = 1.0 + print(('Synapses:', len(syn.synapse), 'w=', syn.synapse[0].weight)) + spikegen = moose.SpikeGen('%s/spike' % (syn.parent.path)) + spikegen.edgeTriggered = False # Make it fire continuously when input is high + spikegen.refractT = 10.0 # With this setting it will fire at 1 s / 10 ms = 100 Hz + spikegen.threshold = 0.5 + # This will send alternatind -1 and +1 to SpikeGen to make it fire + spike_stim = moose.PulseGen('%s/spike_stim' % (syn.parent.path)) + spike_stim.delay[0] = 50.0 + spike_stim.level[0] = 1.0 + spike_stim.width[0] = 100.0 + moose.connect(spike_stim, 'output', spikegen, 'Vm') + m = moose.connect(spikegen, 'spikeOut', syn.synapse[0], 'addSpike') + return syn, spikegen + +def make_model(): + model = moose.Neutral('/model') # Just a container for other things + neuron = make_neuron('/model/neuron') + pulse = make_pulsegen('/model/pulse') + synapse, spike_in = make_synapse('/model/synapse') + # moose.connect(pulse, 'output', neuron, 'injectDest') + moose.connect(neuron, 'channel', synapse, 'channel') + return {'neuron': neuron, + 'pulse': pulse, + 'synapse': synapse, + 'spike_in': spike_in} + +def setup_data_recording(neuron, pulse, synapse, spikegen): + data = moose.Neutral('/data') + vm_table = moose.Table('/data/Vm') + moose.connect(vm_table, 'requestOut', neuron, 'getVm') + inject_table = moose.Table('/data/Inject') + moose.connect(inject_table, 'requestOut', pulse, 'getOutputValue') + gk_table = moose.Table('/data/Gk') + moose.connect(gk_table, 'requestOut', synapse, 'getGk') + spike_in_table = moose.Table('/data/spike_in') + moose.connect(spikegen, 'spikeOut', spike_in_table, 'spike') + return [vm_table, inject_table, gk_table, spike_in_table] + +if __name__ == '__main__': + simtime = 200.0 + stepsize = 10.0 + model_dict = make_model() + vm, inject, gk, spike = setup_data_recording(model_dict['neuron'], + model_dict['pulse'], + model_dict['synapse'], + model_dict['spike_in']) + mutils.setDefaultDt(elecdt=0.01, plotdt2=0.25) + mutils.assignDefaultTicks(solver='ee') + moose.reinit() + mutils.stepRun(simtime, stepsize) + pylab.subplot(411) + pylab.plot(pylab.linspace(0, simtime, len(vm.vector)), vm.vector, label='Vm (mV)') + pylab.legend() + pylab.subplot(412) + pylab.plot(pylab.linspace(0, simtime, len(inject.vector)), inject.vector, label='Inject (uA)') + pylab.legend() + pylab.subplot(413) + pylab.plot(spike.vector, pylab.ones(len(spike.vector)), '|', label='input spike times') + pylab.legend() + pylab.subplot(414) + pylab.plot(pylab.linspace(0, simtime, len(gk.vector)), gk.vector, label='Gk (mS)') + pylab.legend() + pylab.show() + +# +# Izhikevich_with_synapse.py ends here diff --git a/examples/snippets/MULTI/TuringInNeuron.py b/examples/snippets/MULTI/TuringInNeuron.py new file mode 100644 index 0000000..1f38df8 --- /dev/null +++ b/examples/snippets/MULTI/TuringInNeuron.py @@ -0,0 +1,203 @@ +# __DEPRECATED__ __BROKEN__ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example illustrates how to set up a Turing pattern in 1-D using +# reaction diffusion calculations. The runtime is kept short so that the +# pattern doesn't make it all the way to the end of the system. + +import math +import pylab +import numpy +import moose +import proto18 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + model = moose.element( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def makeChemModel( cellId ): + # create container for model + r0 = 1e-6 # m + r1 = 1e-6 # m + num = 2800 + diffLength = 1e-6 # m + diffConst = 5e-12 # m^2/sec + motorRate = 1e-6 # m/sec + concA = 1 # millimolar + + model = moose.element( '/model' ) + compartment = moose.NeuroMesh( '/model/compartment' ) + # FIXME: No attribute cell + compartment.cell = cellId + compartment.diffLength = diffLength + print "cell NeuroMesh parameters: numSeg and numDiffCompt: ", compartment.numSegments, compartment.numDiffCompts + + print "compartment.numDiffCompts == num: ", compartment.numDiffCompts, num + assert( compartment.numDiffCompts == num ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + s = moose.Pool( '/model/compartment/s' ) + e1 = moose.MMenz( '/model/compartment/e1' ) + e2 = moose.MMenz( '/model/compartment/e2' ) + e3 = moose.MMenz( '/model/compartment/e3' ) + r1 = moose.Reac( '/model/compartment/r1' ) + moose.connect( e1, 'sub', s, 'reac' ) + moose.connect( e1, 'prd', a, 'reac' ) + moose.connect( a, 'nOut', e1, 'enzDest' ) + e1.Km = 1 + e1.kcat = 1 + + moose.connect( e2, 'sub', s, 'reac' ) + moose.connect( e2, 'prd', b, 'reac' ) + moose.connect( a, 'nOut', e2, 'enzDest' ) + e2.Km = 1 + e2.kcat = 0.5 + + moose.connect( e3, 'sub', a, 'reac' ) + moose.connect( e3, 'prd', s, 'reac' ) + moose.connect( b, 'nOut', e3, 'enzDest' ) + e3.Km = 0.1 + e3.kcat = 1 + + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'prd', s, 'reac' ) + r1.Kf = 0.3 # 1/sec + r1.Kb = 0 # 1/sec + + # Assign parameters + a.diffConst = diffConst/10 + b.diffConst = diffConst + s.diffConst = 0 + #b.motorConst = motorRate + + # Make solvers + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + dsolve = moose.Dsolve( '/model/compartment/dsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + #ksolve.numAllVoxels = compartment.numDiffCompts + stoich.ksolve = ksolve + stoich.dsolve = dsolve + stoich.path = "/model/compartment/##" + assert( dsolve.numPools == 3 ) + a.vec.concInit = [0.1]*num + a.vec[0].concInit += 0.5 + a.vec[400].concInit += 0.5 + a.vec[800].concInit += 0.5 + a.vec[1200].concInit += 0.5 + a.vec[1600].concInit += 0.5 + a.vec[2000].concInit += 0.5 + a.vec[2400].concInit += 0.5 + #a.vec[num/2].concInit -= 0.1 + b.vec.concInit = [0.1]*num + s.vec.concInit = [1]*num + +def displayPlots( num ): + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + print '/newplot\n/plotname a' + str(num) + for x in a.vec.conc: + print x + print '/newplot\n/plotname b' + str(num) + for y in b.vec.conc: + print y + """ + print '/newplot\n/plotname bvol' + for z in a.vec.volume: + print z * 1e18 + print '/newplot\n/plotname aInit' + for x in a.vec.concInit: + print x + pos = numpy.arange( 0, a.vec.conc.size, 1.0 ) + aconc = numpy.array( a.vec.conc ) + bconc = numpy.array( b.vec.conc ) + print "pos a, b = ", pos, b.vec.conc.size + pylab.plot( pos[:100], aconc[:100], label='a' ) + pylab.plot( pos[:100], bconc[:100], label='b' ) + #pylab.plot( pos, a.vec.conc, label='a' ) + #pylab.plot( pos, b.vec.conc, label='b' ) + print "plotting done" + pylab.legend() + print "legend done" + pylab.show() + print "show done" + """ + +def main(): + runtime = 400 + dt4 = 0.02 # for the diffusion + dt5 = 0.2 # for the reaction + # Set up clocks. The dsolver to know before assigning stoich + moose.setClock( 4, dt4 ) + moose.setClock( 5, dt5 ) + model = moose.Neutral( '/model' ) + cellId = loadElec() + makeChemModel( cellId ) + moose.useClock( 4, '/model/compartment/dsolve', 'process' ) + # Ksolve must be scheduled after dsolve. + moose.useClock( 5, '/model/compartment/ksolve', 'process' ) + print "finished loading" + moose.reinit() + for i in range( 10 ): + moose.start( runtime / 10 ) # Run the model for 10 seconds. + # print 'done', i + displayPlots( i ) + print "finished running" + + """ + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + s = moose.element( '/model/compartment/s' ) + + atot = sum( a.vec.conc ) + btot = sum( b.vec.conc ) + stot = sum( s.vec.conc ) + print "a = ", a.vec.conc + print "b = ", b.vec.conc + print "s = ", s.vec.conc + + print 'tot = ', atot, btot, atot + btot + stot + displayPlots() + """ + + """ + dsolve = moose.element( '/model/compartment/dsolve' ) + + print '**************** dsolve.nvecs' + x = dsolve.nVec[0] + print dsolve.numPools, x, sum(x) + print dsolve.nVec[1], sum( dsolve.nVec[1] ) + print dsolve.nVec[2], sum( dsolve.nVec[2] ) + print dsolve.nVec[3], sum( dsolve.nVec[3] ) + """ + + quit() + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/MULTI/ca1_asym.p b/examples/snippets/MULTI/ca1_asym.p new file mode 100644 index 0000000..42bd21d --- /dev/null +++ b/examples/snippets/MULTI/ca1_asym.p @@ -0,0 +1,100 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +/* NOTE: The format of the cell descriptor files does not allow for + continuation to another line. The following long line lists the + soma channels with their "density" parameters. + + Ca_conc -17.402e12 + Not really a channel, but a "Ca_concen" object. Normally, the B + field is set to "dens"/compt_volume (m^3), but the negative sign + causes the absolute value to be used with no scaling by volume. + Na 300 + Ca 40 + K_DR 150 + K_AHP 8 + K_C 100 + K_A 50 +*/ + +basal_3 none 0 220 0 3.84 Ca_conc 8.96e-3 Ca 50 K_AHP 8 K_C 50 +basal_5 . 0 220 0 3.84 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 +basal_6 . 0 220 0 3.84 Ca_conc 8.96e-3 Na 200 Ca 120 K_DR 200 K_AHP 8 K_C 100 +basal_8 . 0 110 0 3.84 Ca_conc -34.53e12 Na 150 Ca 80 K_DR 100 K_AHP 8 K_C 200 + +soma basal_8 0 125 0 8.46 Ca_conc -17.402e12 Na 300 Ca 40 K_DR 250 K_AHP 8 K_C 100 K_A 50 + + +apical_10 soma 0 120 0 4.0 Ca_conc -26.404e12 Na 150 Ca 80 K_DR 100 K_AHP 8 K_C 200 glu 700 NMDA 200 +apical_11 apical_10 0 120 0 3 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 80 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_12 apical_11 0 120 0 3 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 60 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_13 apical_12 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 50 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_14 apical_13 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_15 apical_14 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_16 apical_15 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_17 apical_16 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_18 apical_17 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +apical_19 apical_18 0 120 0 2.6 Ca_conc 8.96e-3 + +lat_11_1 apical_10 -60 60 0 2 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 80 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_11_2 lat_11_1 -60 60 0 1.8 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_11_3 lat_11_2 0 80 0 1.5 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_11_4 lat_11_3 0 80 0 1.5 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 + +lat_13_1 apical_12 40 40 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_13_2 lat_13_1 40 40 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 + +lat_14_1 lat_13_2 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_2 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_3 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_4 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_5 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_6 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_7 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_8 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_9 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_10 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_11 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_12 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_14_13 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_15_1 . 0 30 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 +lat_15_2 . 0 60 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 + +spine_neck_14_1 lat_14_1 0.5 0 0 0.1 +spine_head_14_1 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_2 lat_14_2 0.5 0 0 0.1 +spine_head_14_2 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_3 lat_14_3 0.5 0 0 0.1 +spine_head_14_3 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_4 lat_14_4 0.5 0 0 0.1 +spine_head_14_4 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_5 lat_14_5 0.5 0 0 0.1 +spine_head_14_5 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_6 lat_14_6 0.5 0 0 0.1 +spine_head_14_6 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_7 lat_14_7 0.5 0 0 0.1 +spine_head_14_7 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_8 lat_14_8 0.5 0 0 0.1 +spine_head_14_8 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_9 lat_14_9 0.5 0 0 0.1 +spine_head_14_9 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_10 lat_14_10 0.5 0 0 0.1 +spine_head_14_10 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_11 lat_14_11 0.5 0 0 0.1 +spine_head_14_11 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_12 lat_14_12 0.5 0 0 0.1 +spine_head_14_12 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 +spine_neck_14_13 lat_14_13 0.5 0 0 0.1 +spine_head_14_13 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 diff --git a/examples/snippets/MULTI/diffonly.g b/examples/snippets/MULTI/diffonly.g new file mode 100644 index 0000000..9b485d7 --- /dev/null +++ b/examples/snippets/MULTI/diffonly.g @@ -0,0 +1,160 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Tue Aug 27 21:53:07 2013 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.01 +CONTROLDT = 5 +PLOTDT = 1 +MAXTIME = 100 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 0 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-18 3 sphere "" white black 2 -6 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 0 -8 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black -3 \ + -6 0 +simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump group /kinetics/DEND 0 yellow black x 0 0 "" DEND defaultfile.g 0 0 \ + 0 -3 -3 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 1e-10 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry blue yellow -4 4 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca_CaM 0 1e-11 1 1 600 600 0 0 600 0 \ + /kinetics/geometry[3] blue yellow -2 -1 0 +simundump text /kinetics/DEND/Ca_CaM/notes 0 "" +call /kinetics/DEND/Ca_CaM/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 28 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 0 -3 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca 0 1e-10 0.08 0.08 4.8 4.8 0 0 60 0 \ + /kinetics/geometry[1] blue 28 -2 4 0 +simundump text /kinetics/SPINE/Ca/notes 0 "" +call /kinetics/SPINE/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM 0 1e-11 5 5 300 300 0 0 60 0 \ + /kinetics/geometry[1] 55 28 -2 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca_CaM 0 1e-11 0 0 0 0 0 0 60 0 \ + /kinetics/geometry[1] blue 28 1 -1 0 +simundump text /kinetics/SPINE/Ca_CaM/notes 0 "" +call /kinetics/SPINE/Ca_CaM/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/kreac 0 0.1 0.1 "" white 28 -1 0 0 +simundump text /kinetics/SPINE/kreac/notes 0 "" +call /kinetics/SPINE/kreac/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 0 "" PSD defaultfile.g 0 0 0 3 -3 \ + 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-10 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry[2] blue 0 1 4 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM 0 1e-11 5 5 30 30 0 0 6 0 \ + /kinetics/geometry[2] 53 0 1 2 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_CaM 0 1e-11 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue 0 4 -1 0 +simundump text /kinetics/PSD/Ca_CaM/notes 0 "" +call /kinetics/PSD/Ca_CaM/notes LOAD \ +"" +simundump kreac /kinetics/PSD/kreac 0 0.1 0.1 "" white 0 2 0 0 +simundump text /kinetics/PSD/kreac/notes 0 "" +call /kinetics/PSD/kreac/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 100 0 1 0 +simundump xgraph /graphs/conc2 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 +simundump xcoredraw /edit/draw 0 -6 6 -10 6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/CaM REAC A B +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca_CaM REAC B A +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/kreac SUBSTRATE n +addmsg /kinetics/SPINE/CaM /kinetics/SPINE/kreac SUBSTRATE n +addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/kreac PRODUCT n +addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/kreac /kinetics/PSD/CaM REAC A B +addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca_CaM REAC B A +addmsg /kinetics/PSD/Ca /kinetics/PSD/kreac SUBSTRATE n +addmsg /kinetics/PSD/CaM /kinetics/PSD/kreac SUBSTRATE n +addmsg /kinetics/PSD/Ca_CaM /kinetics/PSD/kreac PRODUCT n +enddump +// End of dump + +complete_loading diff --git a/examples/snippets/MULTI/diffusionOnly.py b/examples/snippets/MULTI/diffusionOnly.py new file mode 100644 index 0000000..68faddb --- /dev/null +++ b/examples/snippets/MULTI/diffusionOnly.py @@ -0,0 +1,437 @@ +# __DEPRECATED__ __BROKEN__ +# minimal.py --- +# Upi Bhalla, NCBS Bangalore 2013. +# +# Commentary: +# +# Testing system for loading in arbitrary multiscale models based on +# model definition files. +# This version has a minimal model with Ca in all 3 compartments, +# and CaM (just one step) in SPINE and PSD, with a nominal product Ca.CaM. +# In this diffusionOnly version there is no reaction. To be more precise, +# the loaded in minimal.g model has the Ca-binding reaction, but it is +# deleted when the file is loaded in. +# Incoming Ca from synaptic events comes to the PSD. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math + +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "hsolve" ) + return cellId + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if ( moose.exists( objpath ) ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/graphs/#[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name + '_e' ) + +def moveCompt( path, oldParent, newParent ): + meshEntries = moose.element( newParent.path + '/mesh' ) + # Set up vol messaging from new compts to all their child objects. + for x in moose.wildcardFind( path + '/##[ISA=PoolBase]' ): + moose.connect( meshEntries, 'mesh', x, 'mesh', 'OneToOne' ) + #print 'path = ', path, ', oldparent = ', oldParent.path + orig = moose.element( path ) + moose.move( orig, newParent ) + moose.delete( moose.vec( oldParent.path ) ) + chem = moose.element( '/model/chem' ) + moose.move( newParent, chem ) + +def loadChem( neuroCompt, spineCompt, psdCompt ): + # We need the compartments to come in with a volume of 1 to match the + # original CubeMesh. + assert( neuroCompt.volume == 1.0 ) + assert( spineCompt.volume == 1.0 ) + assert( psdCompt.volume == 1.0 ) + assert( neuroCompt.mesh.num == 1 ) + print('volume = ', neuroCompt.mesh[0].volume) + #assert( neuroCompt.mesh[0].volume == 1.0 ) + #an unfortunate mismatch + # So we'll have to resize the volumes of the current compartments to the + # new ones. + + modelId = moose.loadModel( 'diffonly.g', '/model', 'ee' ) + #moose.le( '/model/model' ) + #moose.le( '/model/model/kinetics' ) + #moose.le( '/model/model/kinetics/PSD' ) + #moose.le( '/model/model/kinetics/SPINE' ) + moose.delete( moose.vec( '/model/model/kinetics/PSD/kreac' ) ) + moose.delete( moose.vec( '/model/model/kinetics/SPINE/kreac' ) ) + #moose.le( '/model/model/kinetics/PSD' ) + #moose.le( '/model/model/kinetics/SPINE' ) + pCaCaM = moose.element( '/model/model/kinetics/PSD/Ca_CaM' ) + pCaCaM.concInit = 0.001 + dCaCaM = moose.element( '/model/model/kinetics/PSD/Ca_CaM' ) + sCaCaM = moose.element( '/model/model/kinetics/SPINE/Ca_CaM' ) + print("CaCaM.concInit[p,s,d] = ", pCaCaM.concInit, sCaCaM.concInit, dCaCaM.concInit) + #moose.delete( moose.vec( '/model/model/kinetics/SPINE/Ca_CaM' ) ) + #CaCaM2 = moose.element( '/model/model/kinetics/SPINE/Ca_CaM' ) + #CaCaM2.concInit = 0.001 + chem = moose.element( '/model/model' ) + chem.name = 'chem' + oldS = moose.element( '/model/chem/compartment_1' ) + oldP = moose.element( '/model/chem/compartment_2' ) + oldN = moose.element( '/model/chem/kinetics' ) + print('oldvols[p,s,d] = ', oldP.volume, oldS.volume, oldN.volume) + print('newvols[p,s,d] = ', psdCompt.mesh[0].volume, spineCompt.mesh[0].volume, neuroCompt.mesh[0].volume) + oldN.volume = neuroCompt.mesh[0].volume + oldS.volume = spineCompt.mesh[0].volume + oldP.volume = psdCompt.mesh[0].volume + print('after redoing vols') + print("CaCaM.concInit[p,s,d] = ", pCaCaM.concInit, sCaCaM.concInit, dCaCaM.concInit) + moveCompt( '/model/chem/kinetics/SPINE', oldS, spineCompt ) + moveCompt( '/model/chem/kinetics/PSD', oldP, psdCompt ) + # Need to do the DEND last because the oldN is /kinetics, + # and it will be deleted. + moveCompt( '/model/chem/kinetics/DEND', oldN, neuroCompt ) + print('after moving to new compts') + print("CaCaM.concInit[p,s,d] = ", pCaCaM.concInit, sCaCaM.concInit, dCaCaM.concInit) + +def makeNeuroMeshModel(): + diffLength = 20e-6 # But we only want diffusion over part of the model. + numSyn = 13 + elec = loadElec() + synInput = moose.SpikeGen( '/model/elec/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + + synInput.refractT = 47e-3 + for i in range( numSyn ): + name = '/model/elec/spine_head_14_' + str( i + 1 ) + r = moose.element( name + '/glu' ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 * i * ( numSyn - 1 - i ) + syn.delay = i * 1.0e-3 + + neuroCompt = moose.NeuroMesh( '/model/neuroMesh' ) + #print 'neuroMeshvolume = ', neuroCompt.mesh[0].volume + neuroCompt.separateSpines = 1 + neuroCompt.diffLength = diffLength + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/spineMesh' ) + #print 'spineMeshvolume = ', spineCompt.mesh[0].volume + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/psdMesh' ) + #print 'psdMeshvolume = ', psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + loadChem( neuroCompt, spineCompt, psdCompt ) + + # Put in the solvers, see how they fare. + nmksolve = moose.GslStoich( '/model/chem/neuroMesh/ksolve' ) + nmksolve.path = '/model/chem/neuroMesh/##' + nmksolve.compartment = moose.element( '/model/chem/neuroMesh' ) + nmksolve.method = 'rk5' + nm = moose.element( '/model/chem/neuroMesh/mesh' ) + moose.connect( nm, 'remesh', nmksolve, 'remesh' ) + #print "neuron: nv=", nmksolve.numLocalVoxels, ", nav=", nmksolve.numAllVoxels, nmksolve.numVarPools, nmksolve.numAllPools + + #print 'setting up smksolve' + smksolve = moose.GslStoich( '/model/chem/spineMesh/ksolve' ) + smksolve.path = '/model/chem/spineMesh/##' + smksolve.compartment = moose.element( '/model/chem/spineMesh' ) + smksolve.method = 'rk5' + sm = moose.element( '/model/chem/spineMesh/mesh' ) + moose.connect( sm, 'remesh', smksolve, 'remesh' ) + #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools + # + #print 'setting up pmksolve' + pmksolve = moose.GslStoich( '/model/chem/psdMesh/ksolve' ) + pmksolve.path = '/model/chem/psdMesh/##' + pmksolve.compartment = moose.element( '/model/chem/psdMesh' ) + pmksolve.method = 'rk5' + pm = moose.element( '/model/chem/psdMesh/mesh' ) + moose.connect( pm, 'remesh', pmksolve, 'remesh' ) + #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools + # + print('neuroMeshvolume = ', neuroCompt.mesh[0].volume) + + #print 'Assigning the cell model' + # Now to set up the model. + #neuroCompt.cell = elec + neuroCompt.cellPortion( elec, '/model/elec/lat_14_#,/model/elec/spine_neck#,/model/elec/spine_head#' ) + """ + ns = neuroCompt.numSegments + #assert( ns == 11 ) # dend, 5x (shaft+head) + ndc = neuroCompt.numDiffCompts + #print 'numDiffCompts = ', ndc + assert( ndc == 145 ) + ndc = neuroCompt.mesh.num + #print 'NeuroMeshNum = ', ndc + assert( ndc == 145 ) + + sdc = spineCompt.mesh.num + #print 'SpineMeshNum = ', sdc + assert( sdc == 13 ) + pdc = psdCompt.mesh.num + #print 'PsdMeshNum = ', pdc + assert( pdc == 13 ) + """ + + mesh = moose.vec( '/model/chem/neuroMesh/mesh' ) + #for i in range( ndc ): + # print 's[', i, '] = ', mesh[i].volume + mesh2 = moose.vec( '/model/chem/spineMesh/mesh' ) +# for i in range( sdc ): +# print 's[', i, '] = ', mesh2[i].volume + #print 'numPSD = ', moose.element( '/model/chem/psdMesh/mesh' ).localNumField + mesh = moose.vec( '/model/chem/psdMesh/mesh' ) + #print 'psd mesh.volume = ', mesh.volume + #for i in range( pdc ): + # print 's[', i, '] = ', mesh[i].volume + # + # We need to use the spine solver as the master for the purposes of + # these calculations. This will handle the diffusion calculations + # between head and dendrite, and between head and PSD. + smksolve.addJunction( nmksolve ) + #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools + smksolve.addJunction( pmksolve ) + #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools + ndc = neuroCompt.numDiffCompts + #print 'numDiffCompts = ', ndc + assert( ndc == 13 ) + ndc = neuroCompt.mesh.num + #print 'NeuroMeshNum = ', ndc + assert( ndc == 13 ) + sdc = spineCompt.mesh.num + #print 'SpineMeshNum = ', sdc + assert( sdc == 13 ) + pdc = psdCompt.mesh.num + #print 'PsdMeshNum = ', pdc + assert( pdc == 13 ) + + """ + print 'neuroCompt' + for i in range( ndc ): + print i, neuroCompt.stencilIndex[i] + print i, neuroCompt.stencilRate[i] + + print 'spineCompt' + for i in range( sdc * 3 ): + print i, spineCompt.stencilIndex[i] + print i, spineCompt.stencilRate[i] + + print 'psdCompt' + for i in range( pdc ): + print i, psdCompt.stencilIndex[i] + print i, psdCompt.stencilRate[i] + print 'Spine parents:' + pavoxel = spineCompt.parentVoxel + for i in range( sdc ): + print i, pavoxel[i] + """ + + # oddly, numLocalFields does not work. + #moose.le( '/model/chem/neuroMesh' ) + ca = moose.element( '/model/chem/neuroMesh/DEND/Ca' ) + assert( ca.lastDimension == ndc ) + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spineMesh/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + # set up adaptors + aCa = moose.Adaptor( '/model/chem/psdMesh/adaptCa', pdc ) + adaptCa = moose.vec( '/model/chem/psdMesh/adaptCa' ) + chemCa = moose.vec( '/model/chem/psdMesh/PSD/Ca' ) + assert( len( adaptCa ) == pdc ) + assert( len( chemCa ) == pdc ) + for i in range( pdc ): + path = '/model/elec/spine_head_14_' + str( i + 1 ) + '/NMDA_Ca_conc' + elecCa = moose.element( path ) + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 80e-6 # 80 nM offset in chem. + adaptCa.scale = 1e-5 # 520 to 0.0052 mM + #print adaptCa.outputOffset + #print adaptCa.scale + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) + addPlot( '/model/elec/basal_3', 'getVm', 'elec/basal3Vm' ) + addPlot( '/model/elec/apical_14', 'getVm', 'elec/apical_14Vm' ) + addPlot( '/model/elec/apical_14/Ca_conc', 'getCa', 'elec/apical_14Ca' ) + addPlot( '/model/elec/spine_head_14_7', 'getVm', 'elec/spine_7Vm' ) + addPlot( '/model/elec/spine_head_14_7/NMDA_Ca_conc', 'getCa', 'elec/spine_7Ca' ) + addPlot( '/model/elec/spine_head_14_13/NMDA_Ca_conc', 'getCa', 'elec/spine_13Ca' ) + +def makeChemPlots(): + spineMesh = moose.element( '/model/chem/spineMesh' ) + middleSpine = 6 + midSpineVoxel = spineMesh.parentVoxel[middleSpine] + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/chem/psdMesh/PSD/Ca[0]', 'getConc', 'pCa0' ) + addPlot( '/model/chem/psdMesh/PSD/Ca[6]', 'getConc', 'pCa6' ) + addPlot( '/model/chem/psdMesh/PSD/Ca[12]', 'getConc', 'pCa12' ) + + addPlot( '/model/chem/spineMesh/SPINE/Ca[0]', 'getConc', 'sCa0' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca[6]', 'getConc', 'sCa6' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca[12]', 'getConc', 'sCa12' ) + + addPlot( '/model/chem/neuroMesh/DEND/Ca[0]', 'getConc', 'dend0Ca' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel ) + ']', 'getConc', 'dendMidCa' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel+2 ) + ']', 'getConc', 'dendMid2' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel+4 ) + ']', 'getConc', 'dendMid4' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel+6 ) + ']', 'getConc', 'dendMid6' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[144]', 'getConc', 'dend144Ca' ) + + addPlot( '/model/chem/psdMesh/PSD/CaM[0]', 'getConc', 'pCaM0' ) + addPlot( '/model/chem/psdMesh/PSD/CaM[6]', 'getConc', 'pCaM6' ) + addPlot( '/model/chem/psdMesh/PSD/CaM[12]', 'getConc', 'pCaM12' ) + + addPlot( '/model/chem/spineMesh/SPINE/CaM[0]', 'getConc', 'sCaM0' ) + addPlot( '/model/chem/spineMesh/SPINE/CaM[6]', 'getConc', 'sCaM6' ) + addPlot( '/model/chem/spineMesh/SPINE/CaM[12]', 'getConc', 'sCaM12' ) + + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[0]', 'getConc', 'pCaCaM0' ) + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[6]', 'getConc', 'pCaCaM6' ) + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[12]', 'getConc', 'pCaCaM12' ) + + addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[0]', 'getConc', 'sCaCaM0' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[6]', 'getConc', 'sCaCaM6' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[12]', 'getConc', 'sCaCaM12' ) + + addPlot( '/model/chem/neuroMesh/DEND/Ca_CaM[0]', 'getConc', 'dCaCaM0' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca_CaM[' + str( midSpineVoxel ) + ']', 'getConc', 'dendMidCaCaM' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca_CaM[144]', 'getConc', 'dCaCaM144' ) + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 1e-4 + plotDt = 5e-4 + plotName = 'diffonly.plot' + + makeNeuroMeshModel() + """ + for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if ( i[0].diffConst > 0 ): + grandpaname = i.parent[0].parent.name + '/' + paname = i.parent[0].name + '/' + print grandpaname + paname + i[0].name, i[0].diffConst + moose.le( '/model/chem/spineMesh/ksolve' ) + print 'Neighbors:' + for t in moose.element( '/model/chem/spineMesh/ksolve/junction' ).neighbors['masterJunction']: + print 'masterJunction <-', t.path + for t in moose.wildcardFind( '/model/chem/#Mesh/ksolve' ): + k = moose.element( t[0] ) + print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels + """ + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + moose.useClock( 5, '/model/chem/#Mesh/ksolve', 'init' ) + moose.useClock( 6, '/model/chem/#Mesh/ksolve', 'process' ) + hsolve = moose.HSolve( '/model/elec/hsolve' ) + moose.useClock( 1, '/model/elec/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + moose.reinit() + moose.reinit() + """ + print 'pre' + eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'dend' + eca = moose.vec( '/model/chem/neuroMesh/DEND/Ca' ) + for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): + print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + + print 'PSD' + eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'spine' + eca = moose.vec( '/model/chem/spineMesh/SPINE/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + """ + + moose.start( 0.5 ) + dumpPlots( plotName ) + print('All done') + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# loadMulti.py ends here. diff --git a/examples/snippets/MULTI/loadMulti.py b/examples/snippets/MULTI/loadMulti.py new file mode 100644 index 0000000..d4e92aa --- /dev/null +++ b/examples/snippets/MULTI/loadMulti.py @@ -0,0 +1,373 @@ +# __DEPRECATED__ __BROKEN__ +# loadMulti.py --- +# Upi Bhalla, NCBS Bangalore 2013. +# +# Commentary: +# +# Testing system for loading in arbirary multiscale models based on +# model definition files. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +import os +import math + +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print("addPlot failed: object is a Neutral: ", objpath) + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print("addPlot failed: object not found: ", objpath) + return moose.element( '/' ) + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/graphs/#[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name + '_e' ) + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + + +def makeNeuroMeshModel(): + diffLength = 10e-6 # But we only want diffusion over part of the model. + numSyn = 13 + elec = loadElec() + synInput = moose.SpikeGen( '/model/elec/synInput' ) + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + synInput.refractT = 47e-3 + + for i in range( numSyn ): + name = '/model/elec/spine_head_14_' + str( i + 1 ) + r = moose.element( name + '/glu' ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 * i * ( numSyn - 1 - i ) + syn.delay = i * 1.0e-3 + + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print('ns = ', ns, ', ndc = ', ndc) + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 36 ) # dend, 5x (shaft+head) + assert( ndc == 278 ) + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print('done setting path, numPools = ', nmdsolve.numPools) + assert( nmdsolve.numPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print('sdc = ', sdc) + assert( sdc == 13 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + assert( smstoich.numAllPools == 36 ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + print('numAllPools = ', pmstoich.numAllPools) + assert( pmstoich.numAllPools == 56 ) + foo = moose.element( '/model/chem/psd/Ca' ) + bar = moose.element( '/model/chem/psd/I1_p' ) + print('PSD: numfoo = ', foo.numData, 'numbar = ', bar.numData) + print('PSD: numAllVoxels = ', pmksolve.numAllVoxels) + + # Put in junctions between diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + # set up adaptors + aCa = moose.Adaptor( '/model/chem/psd/adaptCa', pdc ) + adaptCa = moose.vec( '/model/chem/psd/adaptCa' ) + chemCa = moose.vec( '/model/chem/psd/Ca' ) + print('aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData) + assert( len( adaptCa ) == pdc ) + assert( len( chemCa ) == pdc ) + for i in range( pdc ): + path = '/model/elec/spine_head_14_' + str( i + 1 ) + '/NMDA_Ca_conc' + elecCa = moose.element( path ) + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa[i].inputOffset = 0.0 # + adaptCa[i].outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa[i].scale = 1e-5 # 520 to 0.0052 mM + #print adaptCa.outputOffset + #print adaptCa.scale + """ + """ + + """ + aGluR = moose.Adaptor( '/model/chem/psd/adaptGluR', 5 ) + adaptGluR = moose.vec( '/model/chem/psd/adaptGluR' ) + chemR = moose.vec( '/model/chem/psd/psdGluR' ) + assert( len( adaptGluR ) == 5 ) + for i in range( 5 ): + path = '/model/elec/head' + str( i ) + '/gluR' + elecR = moose.element( path ) + moose.connect( adaptGluR[i], 'outputSrc', elecR, 'setGbar', 'Single' ) + #moose.connect( chemR, 'nOut', adaptGluR, 'input', 'OneToOne' ) + # Ksolve isn't sending nOut. Not good. So have to use requestOut. + moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToOne' ) + adaptGluR.outputOffset = 1e-7 # pS + adaptGluR.scale = 1e-6 / 100 # from n to pS + + adaptK = moose.Adaptor( '/model/chem/dend/adaptK' ) + chemK = moose.element( '/model/chem/dend/kChan' ) + elecK = moose.element( '/model/elec/compt/K' ) + moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) + moose.connect( adaptK, 'outputSrc', elecK, 'setGbar', 'Single' ) + adaptK.scale = 0.3 # from mM to Siemens + """ + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) + addPlot( '/model/elec/basal_3', 'getVm', 'elec/basal3Vm' ) + addPlot( '/model/elec/apical_14', 'getVm', 'elec/apical_14Vm' ) + addPlot( '/model/elec/apical_14/Ca_conc', 'getCa', 'elec/apical_14Ca' ) + addPlot( '/model/elec/spine_head_14_7', 'getVm', 'elec/spine_7Vm' ) + addPlot( '/model/elec/spine_head_14_7/NMDA_Ca_conc', 'getCa', 'elec/spine_7Ca' ) + addPlot( '/model/elec/spine_head_14_13/NMDA_Ca_conc', 'getCa', 'elec/spine_13Ca' ) + +def makeChemPlots(): + spineMesh = moose.element( '/model/chem/spine' ) + middleSpine = 6 + # handy lookup function to find which voxel # the spine is on. + midSpineVoxel = spineMesh.parentVoxel[middleSpine] + print(spineMesh.parentVoxel) + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/chem/psd/tot_PSD_R[0]', 'getN', 'psd0R' ) + addPlot( '/model/chem/psd/tot_PSD_R[1]', 'getN', 'psd1R' ) + addPlot( '/model/chem/psd/tot_PSD_R[2]', 'getN', 'psd2R' ) + addPlot( '/model/chem/psd/CaM_dash_Ca4[0]', 'getConc', 'psdCaM0' ) + addPlot( '/model/chem/psd/CaM_dash_Ca4[6]', 'getConc', 'psdCaM6' ) + addPlot( '/model/chem/psd/CaM_CaN[0]', 'getConc', 'CaM_CaN' ) + addPlot( '/model/chem/psd/PP1_dash_active[0]', 'getConc', 'PP1_active0' ) + addPlot( '/model/chem/psd/PP1_dash_active[6]', 'getConc', 'psdPP1_active6' ) + addPlot( '/model/chem/psd/actCaMKII[6]', 'getConc', 'psdCaMKII6' ) + addPlot( '/model/chem/spine/actCaMKII[6]', 'getConc', 'spineCaMKII6' ) + addPlot( '/model/chem/psd/Ca[0]', 'getConc', 'psd0Ca' ) + addPlot( '/model/chem/psd/Ca[6]', 'getConc', 'psd6Ca' ) + addPlot( '/model/chem/psd/Ca[12]', 'getConc', 'psd12Ca' ) + + addPlot( '/model/chem/spine/Ca[0]', 'getConc', 'spine0Ca' ) + addPlot( '/model/chem/spine/Ca[6]', 'getConc', 'spine6Ca' ) + addPlot( '/model/chem/spine/Ca[12]', 'getConc', 'spine12Ca' ) + + addPlot( '/model/chem/dend/DEND/Ca[0]', 'getConc', 'dend0Ca' ) + path = '/model/chem/dend/DEND/Ca[' + addPlot( path + str( midSpineVoxel ) + ']', 'getConc', 'dendMidCa' ) + addPlot( path + str( midSpineVoxel+2 ) + ']', 'getConc', 'dendMid2Ca' ) + addPlot( path + str( midSpineVoxel+4 ) + ']', 'getConc', 'dendMid4Ca' ) + addPlot( path + str( midSpineVoxel+6 ) + ']', 'getConc', 'dendMid6Ca' ) + addPlot( '/model/chem/dend/DEND/Ca[144]', 'getConc', 'dend144Ca' ) + + #addPlot( '/n/dend/Ca', 'getConc', 'dendCa' ) + #addPlot( '/n/dend/inact_kinase', 'getConc', 'inactDendKinase' ) + #addPlot( '/n/psd/psdGluR', 'getN', 'psdGluR' ) + addPlot( '/model/chem/psd/CaMKII_dash_CaM[6]', 'getConc', 'psdCaM_CaMKII6' ) + addPlot( '/model/chem/spine/CaMKII_dash_CaM[6]', 'getConc', 'spineCaM_CaMKII6' ) + addPlot( '/model/chem/spine/NMDAR[6]', 'getConc', 'psd_NMDAR6' ) + + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 1e-2 + cplotDt = 1e-2 + eplotDt = 1e-3 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print("after model is completely done") + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print(i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb) + + """ + for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if ( i[0].diffConst > 0 ): + grandpaname = i.parent[0].parent.name + '/' + paname = i.parent[0].name + '/' + print grandpaname + paname + i[0].name, i[0].diffConst + print 'Neighbors:' + for t in moose.element( '/model/chem/spine/ksolve/junction' ).neighbors['masterJunction']: + print 'masterJunction <-', t.path + for t in moose.wildcardFind( '/model/chem/#/ksolve' ): + k = moose.element( t[0] ) + print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels + """ + """ + moose.useClock( 4, '/model/chem/dend/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/dend/ksolve', 'process' ) + moose.useClock( 5, '/model/chem/spine/ksolve', 'process' ) + moose.useClock( 5, '/model/chem/psd/ksolve', 'process' ) + """ + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 4, chemDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, cplotDt ) + moose.setClock( 8, eplotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) + moose.useClock( 6, '/model/chem/psd/adaptCa', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + #hsolve = moose.HSolve( '/model/elec/hsolve' ) + #moose.useClock( 1, '/model/elec/hsolve', 'process' ) + #hsolve.dt = elecDt + #hsolve.target = '/model/elec/compt' + #moose.reinit() + moose.reinit() + """ + print 'pre' + eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'dend' + eca = moose.vec( '/model/chem/dend/DEND/Ca' ) + #for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): + for i in range( 13 ): + print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + + print 'PSD' + eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'spine' + eca = moose.vec( '/model/chem/spine/SPINE/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + """ + + moose.start( 0.5 ) + dumpPlots( plotName ) + print('All done') + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# loadMulti.py ends here. diff --git a/examples/snippets/MULTI/midchan.py b/examples/snippets/MULTI/midchan.py new file mode 100644 index 0000000..46890fa --- /dev/null +++ b/examples/snippets/MULTI/midchan.py @@ -0,0 +1,345 @@ +# midchan.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# This loads in a medium-detail model incorporating +# reac-diff and elec signaling in neurons. The reac-diff model +# has just Ca and CaM in it, and there are no-cross-compartment +# reactions though Ca diffuses everywhere. The elec model controls the +# Ca levels in the chem compartments. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) + #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + +def makeNeuroMeshModel(): + diffLength = 10e-6 # Aim for 2 soma compartments. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 36 ) # + assert( ndc == 278 ) # + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == ndc ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 13 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + print 'spine num Pools = ', smstoich.numAllPools + assert( smstoich.numAllPools == 3 ) + assert( smdsolve.numPools == 3 ) + assert( smdsolve.numAllVoxels == sdc ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + assert( pmstoich.numAllPools == 3 ) + assert( pmdsolve.numPools == 3 ) + assert( pmdsolve.numAllVoxels == pdc ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + # Put in junctions between the diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + ################################################################## + # set up adaptors + aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) + adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) + chemCa = moose.vec( '/model/chem/spine/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( adaptCa ) == sdc ) + assert( len( chemCa ) == sdc ) + for i in range( sdc ): + elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) + #print elecCa + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 1e-4 # 520 to 0.0052 mM + #print adaptCa.outputOffset + + + moose.le( '/model/chem/dend/DEND' ) + + + compts = neuroCompt.elecComptList + begin = neuroCompt.startVoxelInCompt + end = neuroCompt.endVoxelInCompt + aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) + adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) + chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( chemCa ) == ndc ) + for i in zip( compts, adaptCa, begin, end ): + name = i[0].path + '/Ca_conc' + if ( moose.exists( name ) ): + elecCa = moose.element( name ) + #print i[2], i[3], ' ', elecCa + #print i[1] + moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) + for j in range( i[2], i[3] ): + moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 20e-6 # 10 arb units to 2 uM. + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) + addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'elec/lat11Ca' ) + addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'elec/spine4Ca' ) + addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'elec/spine12Ca' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) + addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) + addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 0.005 + ePlotDt = 0.5e-3 + cPlotDt = 0.005 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 4, chemDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, cPlotDt ) + moose.setClock( 8, ePlotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) + moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) + moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) + moose.useClock( 7, '/graphs/chem/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + #hsolve = moose.HSolve( '/model/elec/hsolve' ) + #moose.useClock( 1, '/model/elec/hsolve', 'process' ) + #hsolve.dt = elecDt + #hsolve.target = '/model/elec/compt' + #moose.reinit() + moose.element( '/model/elec/soma' ).inject = 2e-10 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + + moose.start( 0.25 ) +# moose.element( '/model/elec/soma' ).inject = 0 +# moose.start( 0.25 ) + plt.ion() + fig = plt.figure( figsize=(8,8) ) + chem = fig.add_subplot( 311 ) + chem.set_ylim( 0, 0.002 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = chem.plot( pos, x.vector, label=x.name ) + plt.legend() + + elec = fig.add_subplot( 312 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = elec.plot( pos, x.vector, label=x.name ) + plt.legend() + + lenplot = fig.add_subplot( 313 ) + plt.ylabel( 'Ca (mM )' ) + plt.xlabel( 'Voxel#)' ) + + spineCa = moose.vec( '/model/chem/spine/Ca' ) + dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) + line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) + + ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConc]') ] + line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) + + spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) + line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) + psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) + line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) + plt.legend() + + + fig.canvas.draw() + raw_input() + + ''' + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + ''' + + print 'All done' + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/mincell.p b/examples/snippets/MULTI/mincell.p new file mode 100644 index 0000000..12fa813 --- /dev/null +++ b/examples/snippets/MULTI/mincell.p @@ -0,0 +1,36 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +/* NOTE: The format of the cell descriptor files does not allow for + continuation to another line. The following long line lists the + soma channels with their "density" parameters. + + Ca_conc -17.402e12 + Not really a channel, but a "Ca_concen" object. Normally, the B + field is set to "dens"/compt_volume (m^3), but the negative sign + causes the absolute value to be used with no scaling by volume. + Na 300 + Ca 40 + K_DR 150 + K_AHP 8 + K_C 100 + K_A 50 +*/ + + +soma none 0 10 0 8.46 + +spine_neck soma 0.5 0 0 0.1 +spine_head . 0.5 0 0 0.5 diff --git a/examples/snippets/MULTI/mincell2.p b/examples/snippets/MULTI/mincell2.p new file mode 100644 index 0000000..418e8e9 --- /dev/null +++ b/examples/snippets/MULTI/mincell2.p @@ -0,0 +1,37 @@ + +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +/* NOTE: The format of the cell descriptor files does not allow for + continuation to another line. The following long line lists the + soma channels with their "density" parameters. + + Ca_conc -17.402e12 + Not really a channel, but a "Ca_concen" object. Normally, the B + field is set to "dens"/compt_volume (m^3), but the negative sign + causes the absolute value to be used with no scaling by volume. + Na 300 + Ca 40 + K_DR 150 + K_AHP 8 + K_C 100 + K_A 50 +*/ + + +soma none 0 10 0 8.46 Na 150 K_DR 400 Ca_conc 8.96e-3 Ca 50 + +spine_neck soma 0.5 0 0 0.2 glu 700 +spine_head . 0.5 0 0 0.5 glu 700 diff --git a/examples/snippets/MULTI/minchan.py b/examples/snippets/MULTI/minchan.py new file mode 100644 index 0000000..0f654f9 --- /dev/null +++ b/examples/snippets/MULTI/minchan.py @@ -0,0 +1,333 @@ +# minimal.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# Minimal model for loading rdesigneur: reac-diff elec signaling in neurons +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'mincell2.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + + +def makeNeuroMeshModel(): + diffLength = 6e-6 # Aim for 2 soma compartments. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 1 ) # soma/dend only + assert( ndc == 2 ) # split into 2. + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == 2 ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 1 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + assert( smstoich.numAllPools == 3 ) + assert( smdsolve.numPools == 3 ) + assert( smdsolve.numAllVoxels == 1 ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 1 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + assert( pmstoich.numAllPools == 3 ) + assert( pmdsolve.numPools == 3 ) + assert( pmdsolve.numAllVoxels == 1 ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + # Put in junctions between the diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + # set up adaptors + aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', ndc ) + adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) + chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( adaptCa ) == ndc ) + assert( len( chemCa ) == ndc ) + path = '/model/elec/soma/Ca_conc' + elecCa = moose.element( path ) + print "==========" + print elecCa + print adaptCa + print chemCa + moose.connect( elecCa, 'concOut', adaptCa[0], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 1e-3 # 520 to 0.0052 mM + #print adaptCa.outputOffset + #print adaptCa.scale + + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head', 'getVm', 'elec/spineVm' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/Ca', 'getConc', 'chem/spineCa' ) + addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 0.01 + ePlotDt = 0.5e-3 + cPlotDt = 0.01 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + """ + for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if ( i[0].diffConst > 0 ): + grandpaname = i.parent[0].parent.name + '/' + paname = i.parent[0].name + '/' + print grandpaname + paname + i[0].name, i[0].diffConst + print 'Neighbors:' + for t in moose.element( '/model/chem/spine/ksolve/junction' ).neighbors['masterJunction']: + print 'masterJunction <-', t.path + for t in moose.wildcardFind( '/model/chem/#/ksolve' ): + k = moose.element( t[0] ) + print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels + """ + ''' + moose.useClock( 4, '/model/chem/dend/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/dend/ksolve', 'process' ) + moose.useClock( 5, '/model/chem/spine/ksolve', 'process' ) + moose.useClock( 5, '/model/chem/psd/ksolve', 'process' ) + ''' + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 4, chemDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, cPlotDt ) + moose.setClock( 8, ePlotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) + moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) + moose.useClock( 7, '/graphs/chem/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + #hsolve = moose.HSolve( '/model/elec/hsolve' ) + #moose.useClock( 1, '/model/elec/hsolve', 'process' ) + #hsolve.dt = elecDt + #hsolve.target = '/model/elec/compt' + #moose.reinit() + moose.element( '/model/elec/spine_head' ).inject = 5e-12 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + """ + print 'pre' + eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'dend' + eca = moose.vec( '/model/chem/dend/DEND/Ca' ) + #for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): + for i in range( 13 ): + print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + + print 'PSD' + eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'spine' + eca = moose.vec( '/model/chem/spine/SPINE/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + """ + + moose.start( 0.5 ) + plt.ion() + fig = plt.figure( figsize=(8,8) ) + chem = fig.add_subplot( 211 ) + chem.set_ylim( 0, 0.004 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = chem.plot( pos, x.vector, label=x.name ) + plt.legend() + + elec = fig.add_subplot( 212 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = elec.plot( pos, x.vector, label=x.name ) + plt.legend() + + fig.canvas.draw() + raw_input() + + ''' + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + ''' + + pylab.show() + print 'All done' + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/minimal.g b/examples/snippets/MULTI/minimal.g new file mode 100644 index 0000000..a149f65 --- /dev/null +++ b/examples/snippets/MULTI/minimal.g @@ -0,0 +1,150 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Sep 22 23:33:41 2013 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.01 +CONTROLDT = 5 +PLOTDT = 1 +MAXTIME = 100 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 0 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-18 3 sphere "" white black 2 -6 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 0 -8 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black -3 \ + -6 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump group /kinetics/DEND 0 yellow black x 0 0 "" DEND defaultfile.g 0 0 \ + 0 -3 -3 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 1e-10 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry blue yellow -4 4 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 28 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 0 -3 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca 0 1e-10 0.08 0.08 4.8 4.8 0 0 60 0 \ + /kinetics/geometry[1] blue 28 -2 4 0 +simundump text /kinetics/SPINE/Ca/notes 0 "" +call /kinetics/SPINE/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM 0 1e-11 5 5 300 300 0 0 60 0 \ + /kinetics/geometry[1] 55 28 -2 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca_CaM 0 1e-11 0 0 0 0 0 0 60 0 \ + /kinetics/geometry[1] blue 28 1 -1 0 +simundump text /kinetics/SPINE/Ca_CaM/notes 0 "" +call /kinetics/SPINE/Ca_CaM/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/kreac 0 0.1 0.1 "" white 28 -1 0 0 +simundump text /kinetics/SPINE/kreac/notes 0 "" +call /kinetics/SPINE/kreac/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 0 "" PSD defaultfile.g 0 0 0 3 -3 \ + 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-10 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry[2] blue 0 1 4 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM 0 1e-11 5 5 30 30 0 0 6 0 \ + /kinetics/geometry[2] 53 0 1 2 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_CaM 0 1e-11 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue 0 4 -1 0 +simundump text /kinetics/PSD/Ca_CaM/notes 0 "" +call /kinetics/PSD/Ca_CaM/notes LOAD \ +"" +simundump kreac /kinetics/PSD/kreac 0 0.1 0.1 "" white 0 2 0 0 +simundump text /kinetics/PSD/kreac/notes 0 "" +call /kinetics/PSD/kreac/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 100 0 1 0 +simundump xgraph /graphs/conc2 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 +simundump xcoredraw /edit/draw 0 -6 6 -10 6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/CaM REAC A B +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca_CaM REAC B A +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/kreac SUBSTRATE n +addmsg /kinetics/SPINE/CaM /kinetics/SPINE/kreac SUBSTRATE n +addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/kreac PRODUCT n +addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/kreac /kinetics/PSD/CaM REAC A B +addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca_CaM REAC B A +addmsg /kinetics/PSD/Ca /kinetics/PSD/kreac SUBSTRATE n +addmsg /kinetics/PSD/CaM /kinetics/PSD/kreac SUBSTRATE n +addmsg /kinetics/PSD/Ca_CaM /kinetics/PSD/kreac PRODUCT n +enddump +// End of dump + +complete_loading diff --git a/examples/snippets/MULTI/minimal.py b/examples/snippets/MULTI/minimal.py new file mode 100644 index 0000000..5035acd --- /dev/null +++ b/examples/snippets/MULTI/minimal.py @@ -0,0 +1,310 @@ +# minimal.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# Minimal model for loading rdesigneur: reac-diff elec signaling in neurons +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +#import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'mincell.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + + +def makeNeuroMeshModel(): + diffLength = 20e-6 # Aim for just 3 compts. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 1 ) # dend, 5x (shaft+head) + assert( ndc == 1 ) + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == 1 ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 1 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + assert( smstoich.numAllPools == 3 ) + assert( smdsolve.numPools == 3 ) + assert( smdsolve.numAllVoxels == 1 ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 1 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + assert( pmstoich.numAllPools == 3 ) + assert( pmdsolve.numPools == 3 ) + assert( pmdsolve.numAllVoxels == 1 ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + # set up adaptors + aCa = moose.Adaptor( '/model/chem/psd/adaptCa', pdc ) + + adaptCa = moose.vec( '/model/chem/psd/adaptCa' ) + chemCa = moose.vec( '/model/chem/psd/Ca' ) + print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData + assert( len( adaptCa ) == pdc ) + assert( len( chemCa ) == pdc ) + path = '/model/elec/spine_head' + elecCa = moose.element( path ) + moose.connect( elecCa, 'VmOut', adaptCa[0], 'input', 'Single' ) + #moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 1e-5 # 520 to 0.0052 mM + #print adaptCa.outputOffset + #print adaptCa.scale + + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head', 'getVm', 'elec/spineVm' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/Ca', 'getConc', 'chem/spineCa' ) + addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 1e-1 + plotDt = 1e-1 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + """ + for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if ( i[0].diffConst > 0 ): + grandpaname = i.parent[0].parent.name + '/' + paname = i.parent[0].name + '/' + print grandpaname + paname + i[0].name, i[0].diffConst + print 'Neighbors:' + for t in moose.element( '/model/chem/spine/ksolve/junction' ).neighbors['masterJunction']: + print 'masterJunction <-', t.path + for t in moose.wildcardFind( '/model/chem/#/ksolve' ): + k = moose.element( t[0] ) + print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels + """ + ''' + moose.useClock( 4, '/model/chem/dend/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/dend/ksolve', 'process' ) + moose.useClock( 5, '/model/chem/spine/ksolve', 'process' ) + moose.useClock( 5, '/model/chem/psd/ksolve', 'process' ) + ''' + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 4, chemDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + #moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/chem/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + moose.useClock( 5, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 6, '/model/chem/#/ksolve', 'process' ) + #hsolve = moose.HSolve( '/model/elec/hsolve' ) + #moose.useClock( 1, '/model/elec/hsolve', 'process' ) + #hsolve.dt = elecDt + #hsolve.target = '/model/elec/compt' + #moose.reinit() + moose.element( '/model/elec/spine_head' ).inject = 1e-9 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + """ + print 'pre' + eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'dend' + eca = moose.vec( '/model/chem/dend/DEND/Ca' ) + #for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): + for i in range( 13 ): + print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + + print 'PSD' + eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'spine' + eca = moose.vec( '/model/chem/spine/SPINE/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + """ + + moose.start( 0.5 ) + plt.ion() + fig = plt.figure( figsize=(8,8) ) + chem = fig.add_subplot( 211 ) + chem.set_ylim( 0, 0.004 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, len(x.vector), 1 ) + line1, = chem.plot( pos, x.vector, label=x.name ) + plt.legend() + + elec = fig.add_subplot( 212 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, len(x.vector), 1 ) + line1, = elec.plot( pos, x.vector, label=x.name ) + plt.legend() + + fig.canvas.draw() + raw_input() + + ''' + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + ''' + + print 'All done' + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi1.py b/examples/snippets/MULTI/multi1.py new file mode 100644 index 0000000..f4fc54e --- /dev/null +++ b/examples/snippets/MULTI/multi1.py @@ -0,0 +1,364 @@ +# multi1.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# This loads in a low-detail model incorporating +# reac-diff and elec signaling in neurons. The reac-diff model +# has just Ca and CaM in it, and there are no-cross-compartment +# reactions though Ca diffuses everywhere. The elec model controls the +# Ca levels in the chem compartments. +# This version uses solvers for both chem and electrical parts. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) + #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + +def makeNeuroMeshModel(): + diffLength = 10e-6 # Aim for 2 soma compartments. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 36 ) # + assert( ndc == 278 ) # + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == ndc ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 13 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + print 'spine num Pools = ', smstoich.numAllPools + assert( smstoich.numAllPools == 3 ) + assert( smdsolve.numPools == 3 ) + assert( smdsolve.numAllVoxels == sdc ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + assert( pmstoich.numAllPools == 3 ) + assert( pmdsolve.numPools == 3 ) + assert( pmdsolve.numAllVoxels == pdc ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + # Put in junctions between the diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + ################################################################## + # set up adaptors + aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) + adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) + chemCa = moose.vec( '/model/chem/spine/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( adaptCa ) == sdc ) + assert( len( chemCa ) == sdc ) + for i in range( sdc ): + elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) + #print elecCa + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 1e-4 # 520 to 0.0052 mM + #print adaptCa.outputOffset + + + moose.le( '/model/chem/dend/DEND' ) + + + compts = neuroCompt.elecComptList + begin = neuroCompt.startVoxelInCompt + end = neuroCompt.endVoxelInCompt + aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) + adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) + chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( chemCa ) == ndc ) + for i in zip( compts, adaptCa, begin, end ): + name = i[0].path + '/Ca_conc' + if ( moose.exists( name ) ): + elecCa = moose.element( name ) + #print i[2], i[3], ' ', elecCa + #print i[1] + moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) + for j in range( i[2], i[3] ): + moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 20e-6 # 10 arb units to 2 uM. + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeCaPlots(): + graphs = moose.Neutral( '/graphs' ) + ca = moose.Neutral( '/graphs/ca' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) + addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) + addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) + addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) + addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) + addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) + +def makeGraphics(): + plt.ion() + fig = plt.figure( figsize=(10,16) ) + chem = fig.add_subplot( 411 ) + chem.set_ylim( 0, 0.006 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + plt.legend() + + elec = fig.add_subplot( 412 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + plt.legend() + + ca = fig.add_subplot( 413 ) + plt.ylabel( '[Ca] (mM)' ) + plt.xlabel( 'time (seconds)' ) + plt.legend() + + lenplot = fig.add_subplot( 414 ) + plt.ylabel( 'Ca (mM )' ) + plt.xlabel( 'Voxel#)' ) + plt.legend() + spineCa = moose.vec( '/model/chem/spine/Ca' ) + dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) + line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) + + Ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] + line3, = lenplot.plot( range( len( Ca ) ), Ca, label='elec' ) + + spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) + line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) + psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) + line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) + lenplot.set_ylim( 0, 0.01 ) + fig.canvas.draw() + return ( chem, elec, ca, lenplot, fig, line1, line2, line3, line4, line5 ) + +def updateGraphics( plotlist ): + spineCa = moose.vec( '/model/chem/spine/Ca' ) + dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + plotlist[5].set_ydata( spineCa.conc ) + plotlist[6].set_ydata( dendCa.conc ) + + ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] + plotlist[7].set_ydata( ca ) + spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) + plotlist[8].set_ydata( spineCaM.conc ) + psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) + plotlist[9].set_ydata( psdCaM.conc ) + plotlist[4].canvas.draw() + +def finalizeGraphics( plotlist, cPlotDt, ePlotDt ): + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = plotlist[0].plot( pos, x.vector, label=x.name ) + + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = plotlist[1].plot( pos, x.vector, label=x.name ) + + for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = plotlist[2].plot( pos, x.vector, label=x.name ) + plotlist[4].canvas.draw() + raw_input() + +def testNeuroMeshMultiscale(): + runtime = 0.5 + #elecDt = 0.2e-6 + elecDt = 10e-6 + chemDt = 0.0025 + ePlotDt = 0.5e-3 + cPlotDt = 0.0025 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + makeChemPlots() + makeElecPlots() + makeCaPlots() + for i in range (10): + moose.setClock( i, elecDt ) + for i in range ( 10, 20 ): + moose.setClock( i, chemDt ) + moose.setClock( 8, ePlotDt ) + moose.setClock( 18, cPlotDt ) + moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) + moose.useClock( 18, '/graphs/chem/#', 'process' ) + hsolve = moose.HSolve( '/model/elec/hsolve' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + plotlist = makeGraphics() + moose.reinit() + moose.element( '/model/elec/soma' ).inject = 2e-10 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + + numDivs = 200 + partialRuntime = runtime / numDivs + for i in range( numDivs ): + moose.start( partialRuntime ) + updateGraphics( plotlist ) +# moose.element( '/model/elec/soma' ).inject = 0 +# moose.start( 0.25 ) + finalizeGraphics( plotlist, cPlotDt, ePlotDt ) + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi1_ee.py b/examples/snippets/MULTI/multi1_ee.py new file mode 100644 index 0000000..3f3dc43 --- /dev/null +++ b/examples/snippets/MULTI/multi1_ee.py @@ -0,0 +1,366 @@ +# multi1.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# This loads in a medium-detail model incorporating +# reac-diff and elec signaling in neurons. The reac-diff model +# has just Ca and CaM in it, and there are no-cross-compartment +# reactions though Ca diffuses everywhere. The elec model controls the +# Ca levels in the chem compartments. +# This version uses solvers for both chem and electrical parts. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) + #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + +def makeNeuroMeshModel(): + diffLength = 10e-6 # Aim for 2 soma compartments. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 36 ) # + assert( ndc == 278 ) # + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == ndc ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 13 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + print 'spine num Pools = ', smstoich.numAllPools + assert( smstoich.numAllPools == 3 ) + assert( smdsolve.numPools == 3 ) + assert( smdsolve.numAllVoxels == sdc ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + assert( pmstoich.numAllPools == 3 ) + assert( pmdsolve.numPools == 3 ) + assert( pmdsolve.numAllVoxels == pdc ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + # Put in junctions between the diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + ################################################################## + # set up adaptors + aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) + adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) + chemCa = moose.vec( '/model/chem/spine/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( adaptCa ) == sdc ) + assert( len( chemCa ) == sdc ) + for i in range( sdc ): + elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) + #print elecCa + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 1e-4 # 520 to 0.0052 mM + #print adaptCa.outputOffset + + + moose.le( '/model/chem/dend/DEND' ) + + + compts = neuroCompt.elecComptList + begin = neuroCompt.startVoxelInCompt + end = neuroCompt.endVoxelInCompt + aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) + adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) + chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( chemCa ) == ndc ) + for i in zip( compts, adaptCa, begin, end ): + name = i[0].path + '/Ca_conc' + if ( moose.exists( name ) ): + elecCa = moose.element( name ) + #print i[2], i[3], ' ', elecCa + #print i[1] + moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) + for j in range( i[2], i[3] ): + moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 20e-6 # 10 arb units to 2 uM. + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeCaPlots(): + graphs = moose.Neutral( '/graphs' ) + ca = moose.Neutral( '/graphs/ca' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) + addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) + addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) + addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) + addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) + addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) + +def makeGraphics( cPlotDt, ePlotDt ): + plt.ion() + fig = plt.figure( figsize=(10,16) ) + chem = fig.add_subplot( 411 ) + chem.set_ylim( 0, 0.006 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = chem.plot( pos, x.vector, label=x.name ) + plt.legend() + + elec = fig.add_subplot( 412 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = elec.plot( pos, x.vector, label=x.name ) + plt.legend() + + ca = fig.add_subplot( 413 ) + plt.ylabel( '[Ca] (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = ca.plot( pos, x.vector, label=x.name ) + plt.legend() + + lenplot = fig.add_subplot( 414 ) + plt.ylabel( 'Ca (mM )' ) + plt.xlabel( 'Voxel#)' ) + + spineCa = moose.vec( '/model/chem/spine/Ca' ) + dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) + line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) + + ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] + line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) + + spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) + line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) + psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) + line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) + plt.legend() + + + fig.canvas.draw() + raw_input() + + ''' + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + ''' + + print 'All done' + +def testNeuroMeshMultiscale(): + runtime = 0.5 + elecDt = 0.2e-6 + chemDt = 0.005 + ePlotDt = 0.5e-3 + cPlotDt = 0.005 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + makeChemPlots() + makeElecPlots() + makeCaPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 4, chemDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, cPlotDt ) + moose.setClock( 8, ePlotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 2, '/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) + moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) + moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) + moose.useClock( 7, '/graphs/chem/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) + ''' + hsolve = moose.HSolve( '/model/elec/hsolve' ) + moose.useClock( 1, '/model/elec/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + ''' + moose.reinit() + moose.element( '/model/elec/soma' ).inject = 2e-10 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + + moose.start( runtime ) +# moose.element( '/model/elec/soma' ).inject = 0 +# moose.start( 0.25 ) + makeGraphics( cPlotDt, ePlotDt ) + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi2.py b/examples/snippets/MULTI/multi2.py new file mode 100644 index 0000000..373e25a --- /dev/null +++ b/examples/snippets/MULTI/multi2.py @@ -0,0 +1,379 @@ +# multi2.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# This loads in a medium-detail model incorporating +# reac-diff and elec signaling in neurons. The reac-diff model is +# psd_merged31d.g which has only Ca in the dendrites, but is quite +# interesting in the PSD and spine head. Problem is lots of +# cross-compartment reactions. +# has in it, and there are no-cross-compartment +# reactions though Ca diffuses everywhere. The elec model controls the +# Ca levels in the chem compartments. +# This version uses solvers for both chem and electrical parts. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + modelId = moose.loadModel( 'separate_compts.g', '/model/chem', 'ee' ) + #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + +def makeNeuroMeshModel(): + diffLength = 10e-6 # Aim for 2 soma compartments. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 36 ) # + assert( ndc == 278 ) # + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == ndc ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 13 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + print 'spine num Pools = ', smstoich.numAllPools, smdsolve.numPools + assert( smstoich.numAllPools == 35 ) + assert( smdsolve.numPools == 30 ) + assert( smdsolve.numAllVoxels == sdc ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + print 'psd num Pools = ', pmstoich.numAllPools, pmdsolve.numPools + assert( pmstoich.numAllPools == 55 ) + assert( pmdsolve.numPools == 48 ) + assert( pmdsolve.numAllVoxels == pdc ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + # Put in junctions between the diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + ################################################################## + # set up adaptors + aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) + adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) + chemCa = moose.vec( '/model/chem/spine/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( adaptCa ) == sdc ) + assert( len( chemCa ) == sdc ) + for i in range( sdc ): + elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) + #print elecCa + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 5e-3 # 520 to 0.0052 mM + #print adaptCa.outputOffset + + + moose.le( '/model/chem/dend/DEND' ) + + + compts = neuroCompt.elecComptList + begin = neuroCompt.startVoxelInCompt + end = neuroCompt.endVoxelInCompt + aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) + adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) + chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( chemCa ) == ndc ) + for i in zip( compts, adaptCa, begin, end ): + name = i[0].path + '/Ca_conc' + if ( moose.exists( name ) ): + elecCa = moose.element( name ) + #print i[2], i[3], ' ', elecCa + #print i[1] + moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) + for j in range( i[2], i[3] ): + moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 20e-6 # 10 arb units to 2 uM. + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeCaPlots(): + graphs = moose.Neutral( '/graphs' ) + ca = moose.Neutral( '/graphs/ca' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) + addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) + addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) + addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/CaM_dash_Ca4', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/actCaMKII', 'getConc', 'chem/psdActCaMKII' ) + addPlot( '/model/chem/spine/CaM_dash_Ca4', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/CaM_dash_Ca4[12]', 'getConc', 'chem/spine12CaCam' ) + addPlot( '/model/chem/spine/actCaMKII', 'getConc', 'chem/spineActCaMKII' ) + addPlot( '/model/chem/spine/actCaMKII[11]', 'getConc', 'chem/spine12ActCaMKII' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/psd/Ca[11]', 'getConc', 'chem/psd12Ca' ) + addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) + addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) + #addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + #addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) + +def makeGraphics( cPlotDt, ePlotDt ): + plt.ion() + fig = plt.figure( figsize=(10,16) ) + chem = fig.add_subplot( 411 ) + chem.set_ylim( 0, 0.006 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = chem.plot( pos, x.vector, label=x.name ) + plt.legend() + + elec = fig.add_subplot( 412 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = elec.plot( pos, x.vector, label=x.name ) + plt.legend() + + ca = fig.add_subplot( 413 ) + plt.ylabel( '[Ca] (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = ca.plot( pos, x.vector, label=x.name ) + plt.legend() + + lenplot = fig.add_subplot( 414 ) + plt.ylabel( 'Ca (mM )' ) + plt.xlabel( 'Voxel#)' ) + + spineCa = moose.vec( '/model/chem/spine/Ca' ) + dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) + line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) + + ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] + line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) + + spineCaM = moose.vec( '/model/chem/spine/CaM_dash_Ca4' ) + line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) + psdCaM = moose.vec( '/model/chem/psd/CaM_dash_Ca4' ) + line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) + plt.legend() + + + fig.canvas.draw() + raw_input() + + ''' + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + ''' + + print 'All done' + +def testNeuroMeshMultiscale(): + useHsolve = 0 + runtime = 0.5 + elecDt = 10e-6 + chemDt = 0.005 + ePlotDt = 0.5e-3 + cPlotDt = 0.005 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + makeChemPlots() + makeElecPlots() + makeCaPlots() + for i in range( 10 ): + moose.setClock( i, elecDt ) + for i in range( 10, 20 ): + moose.setClock( i, chemDt ) + moose.setClock( 8, ePlotDt ) + moose.setClock( 18, cPlotDt ) + if useHsolve: + hsolve = moose.HSolve( '/model/elec/hsolve' ) + #moose.useClock( 1, '/model/elec/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + moose.reinit() + #soma = moose.element( '/model/elec/soma' ) + ''' + else: + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) + moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) + moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) + ''' + + moose.useClock( 18, '/graphs/chem/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) + moose.element( '/model/elec/soma' ).inject = 2e-10 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + + moose.start( runtime ) +# moose.element( '/model/elec/soma' ).inject = 0 +# moose.start( 0.25 ) + makeGraphics( cPlotDt, ePlotDt ) + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi3.py b/examples/snippets/MULTI/multi3.py new file mode 100644 index 0000000..005738c --- /dev/null +++ b/examples/snippets/MULTI/multi3.py @@ -0,0 +1,385 @@ +# multi2.py --- +# Upi Bhalla, NCBS Bangalore 2014. +# +# Commentary: +# +# This loads in a medium-detail model incorporating +# reac-diff and elec signaling in neurons. The reac-diff model is +# psd_merged31d.g which has only Ca in the dendrites, but is quite +# interesting in the PSD and spine head. Problem is lots of +# cross-compartment reactions. +# has in it, and there are no-cross-compartment +# reactions though Ca diffuses everywhere. The elec model controls the +# Ca levels in the chem compartments. +# This version uses solvers for both chem and electrical parts. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import matplotlib.pyplot as plt +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + moose.setCwe( '/library' ) + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) + return cellId + +def loadChem( diffLength ): + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) + neuroCompt.separateSpines = 1 + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) + #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + #modelId = moose.loadModel( 'separate_compts.g', '/model/chem', 'ee' ) + modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) + neuroCompt.name = 'dend' + spineCompt.name = 'spine' + psdCompt.name = 'psd' + +def makeNeuroMeshModel(): + diffLength = 10e-6 # Aim for 2 soma compartments. + elec = loadElec() + loadChem( diffLength ) + neuroCompt = moose.element( '/model/chem/dend' ) + neuroCompt.diffLength = diffLength + neuroCompt.cellPortion( elec, '/model/elec/#' ) + for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if (x.diffConst > 0): + x.diffConst = 1e-11 + for x in moose.wildcardFind( '/model/chem/##/Ca' ): + x.diffConst = 1e-10 + + # Put in dend solvers + ns = neuroCompt.numSegments + ndc = neuroCompt.numDiffCompts + print 'ns = ', ns, ', ndc = ', ndc + assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) + assert( ns == 36 ) # + assert( ndc == 278 ) # + nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) + nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) + nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) + nmstoich.compartment = neuroCompt + nmstoich.ksolve = nmksolve + nmstoich.dsolve = nmdsolve + nmstoich.path = "/model/chem/dend/##" + print 'done setting path, numPools = ', nmdsolve.numPools + assert( nmdsolve.numPools == 1 ) + assert( nmdsolve.numAllVoxels == ndc ) + assert( nmstoich.numAllPools == 1 ) + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/dend/DEND/Ca' ) + assert( ca.numData == ndc ) + + # Put in spine solvers. Note that these get info from the neuroCompt + spineCompt = moose.element( '/model/chem/spine' ) + sdc = spineCompt.mesh.num + print 'sdc = ', sdc + assert( sdc == 13 ) + smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) + smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) + smstoich = moose.Stoich( '/model/chem/spine/stoich' ) + smstoich.compartment = spineCompt + smstoich.ksolve = smksolve + smstoich.dsolve = smdsolve + smstoich.path = "/model/chem/spine/##" + print 'spine num Pools = ', smstoich.numAllPools, 'dsolve n = ', smdsolve.numPools + assert( smstoich.numAllPools == 36 ) + assert( smdsolve.numPools == 31 ) + assert( smdsolve.numAllVoxels == sdc ) + + # Put in PSD solvers. Note that these get info from the neuroCompt + psdCompt = moose.element( '/model/chem/psd' ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) + pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) + pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) + pmstoich.compartment = psdCompt + pmstoich.ksolve = pmksolve + pmstoich.dsolve = pmdsolve + pmstoich.path = "/model/chem/psd/##" + print 'psd num Pools = ', pmstoich.numAllPools + assert( pmstoich.numAllPools == 56 ) + assert( pmdsolve.numPools == 49 ) + assert( pmdsolve.numAllVoxels == pdc ) + foo = moose.element( '/model/chem/psd/Ca' ) + print 'PSD: numfoo = ', foo.numData + print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels + + # Put in junctions between the diffusion solvers + nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) + + # Put in cross-compartment reactions between ksolvers + nmstoich.buildXreacs( smstoich ) + smstoich.buildXreacs( pmstoich ) + + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + ################################################################## + # set up adaptors + aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) + adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) + chemCa = moose.vec( '/model/chem/spine/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( adaptCa ) == sdc ) + assert( len( chemCa ) == sdc ) + for i in range( sdc ): + elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) + #print elecCa + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 5e-3 # 520 to 0.0052 mM + #print adaptCa.outputOffset + + + moose.le( '/model/chem/dend/DEND' ) + + + compts = neuroCompt.elecComptList + begin = neuroCompt.startVoxelInCompt + end = neuroCompt.endVoxelInCompt + aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) + adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) + chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) + assert( len( chemCa ) == ndc ) + for i in zip( compts, adaptCa, begin, end ): + name = i[0].path + '/Ca_conc' + if ( moose.exists( name ) ): + elecCa = moose.element( name ) + #print i[2], i[3], ' ', elecCa + #print i[1] + moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) + for j in range( i[2], i[3] ): + moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 20e-6 # 10 arb units to 2 uM. + +def addPlot( objpath, field, plot ): + #assert moose.exists( objpath ) + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + if obj.className == 'Neutral': + print "addPlot failed: object is a Neutral: ", objpath + return moose.element( '/' ) + else: + #print "object was found: ", objpath, obj.className + moose.connect( tab, 'requestOut', obj, field ) + return tab + else: + print "addPlot failed: object not found: ", objpath + return moose.element( '/' ) + +def makeCaPlots(): + graphs = moose.Neutral( '/graphs' ) + ca = moose.Neutral( '/graphs/ca' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) + addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) + addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) + addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + chem = moose.Neutral( '/graphs/chem' ) + addPlot( '/model/chem/psd/CaM_dash_Ca4', 'getConc', 'chem/psdCaCam' ) + addPlot( '/model/chem/psd/actCaMKII', 'getConc', 'chem/psdActCaMKII' ) + addPlot( '/model/chem/spine/CaM_dash_Ca4', 'getConc', 'chem/spineCaCam' ) + addPlot( '/model/chem/spine/CaM_dash_Ca4[12]', 'getConc', 'chem/spine12CaCam' ) + addPlot( '/model/chem/spine/actCaMKII', 'getConc', 'chem/spineActCaMKII' ) + addPlot( '/model/chem/spine/actCaMKII[11]', 'getConc', 'chem/spine12ActCaMKII' ) + addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) + addPlot( '/model/chem/psd/Ca[11]', 'getConc', 'chem/psd12Ca' ) + addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) + addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) + #addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) + #addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) + +def makeGraphics( cPlotDt, ePlotDt ): + plt.ion() + fig = plt.figure( figsize=(10,16) ) + chem = fig.add_subplot( 411 ) + chem.set_ylim( 0, 0.006 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = chem.plot( pos, x.vector, label=x.name ) + plt.legend() + + elec = fig.add_subplot( 412 ) + plt.ylabel( 'Vm (V)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = elec.plot( pos, x.vector, label=x.name ) + plt.legend() + + ca = fig.add_subplot( 413 ) + plt.ylabel( '[Ca] (mM)' ) + plt.xlabel( 'time (seconds)' ) + for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt + line1, = ca.plot( pos, x.vector, label=x.name ) + plt.legend() + + lenplot = fig.add_subplot( 414 ) + plt.ylabel( 'Ca (mM )' ) + plt.xlabel( 'Voxel#)' ) + + spineCa = moose.vec( '/model/chem/spine/Ca' ) + dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) + line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) + line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) + + ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] + line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) + + spineCaM = moose.vec( '/model/chem/spine/CaM_dash_Ca4' ) + line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) + psdCaM = moose.vec( '/model/chem/psd/CaM_dash_Ca4' ) + line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) + plt.legend() + + + fig.canvas.draw() + raw_input() + + ''' + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + ''' + + print 'All done' + +def testNeuroMeshMultiscale(): + useHsolve = 1 + runtime = 0.5 + if useHsolve: + elecDt = 50e-6 + else: + elecDt = 10e-6 + chemDt = 0.005 + ePlotDt = 0.5e-3 + cPlotDt = 0.005 + plotName = 'nm.plot' + + makeNeuroMeshModel() + print "after model is completely done" + for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): + print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb + + makeChemPlots() + makeElecPlots() + makeCaPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 4, chemDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, cPlotDt ) + moose.setClock( 8, ePlotDt ) + if useHsolve: + hsolve = moose.HSolve( '/model/elec/hsolve' ) + moose.useClock( 1, '/model/elec/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + moose.reinit() + else: + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) + moose.useClock( 4, '/model/chem/#/ksolve', 'init' ) + moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) + moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) + moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) + moose.useClock( 7, '/graphs/chem/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) + moose.element( '/model/elec/soma' ).inject = 2e-10 + moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 + moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 + moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 + moose.reinit() + + moose.start( runtime ) +# moose.element( '/model/elec/soma' ).inject = 0 +# moose.start( 0.25 ) + makeGraphics( cPlotDt, ePlotDt ) + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# minimal.py ends here. diff --git a/examples/snippets/MULTI/proto18.py b/examples/snippets/MULTI/proto18.py new file mode 100644 index 0000000..06057af --- /dev/null +++ b/examples/snippets/MULTI/proto18.py @@ -0,0 +1,497 @@ +#/* FILE INFORMATION +#** Based mostly on the traub91proto.g by Dave Beeman +#** Main difference is addition of Glu and NMDA channels +#** The 1991 Traub set of voltage and concentration dependent channels +#** Implemented as tabchannels by : Dave Beeman +#** R.D.Traub, R. K. S. Wong, R. Miles, and H. Michelson +#** Journal of Neurophysiology, Vol. 66, p. 635 (1991) +#** +#** This file depends on functions and constants defined in defaults.g +#** As it is also intended as an example of the use of the tabchannel +#** object to implement concentration dependent channels, it has extensive +#** comments. Note that the original units used in the paper have been +#** converted to SI (MKS) units. Also, we define the ionic equilibrium +#** potentials relative to the resting potential, EREST_ACT. In the +#** paper, this was defined to be zero. Here, we use -0.060 volts, the +#** measured value relative to the outside of the cell. +#*/ + +#/* November 1999 update for GENESIS 2.2: Previous versions of this file used +# a combination of a table, tabgate, and vdep_channel to implement the +# Ca-dependent K Channel - K(C). This new version uses the new tabchannel +# "instant" field, introduced in GENESIS 2.2, to implement an +# "instantaneous" gate for the multiplicative Ca-dependent factor in the +# conductance. This allows these channels to be used with the fast +# hsolve chanmodes > 1. +#*/ + +# Apr 2012 update for pymoose. Converted to equivalent MOOSE funcs. + +import moose +import numpy +import math + +#CONSTANTS +EREST_ACT = -0.060 #/* hippocampal cell resting potl */ +ENA = 0.115 + EREST_ACT #// 0.055 +EK = -0.015 + EREST_ACT #// -0.075 +ECA = 0.140 + EREST_ACT #// 0.080 +SOMA_A = 3.320e-9 #// soma area in square meters + +#/* +#For these channels, the maximum channel conductance (Gbar) has been +#calculated using the CA3 soma channel conductance densities and soma +#area. Typically, the functions which create these channels will be used +#to create a library of prototype channels. When the cell reader creates +#copies of these channels in various compartments, it will set the actual +#value of Gbar by calculating it from the cell parameter file. +#*/ + +#//======================================================================== +#// Tabulated Ca Channel +#//======================================================================== + +def make_Ca(): + if moose.exists( 'Ca' ): + return + Ca = moose.HHChannel( 'Ca' ) + Ca.Ek = ECA + Ca.Gbar = 40 * SOMA_A + Ca.Gk = 0 + Ca.Xpower = 2 + Ca.Ypower = 1 + Ca.Zpower = 0 + + xgate = moose.element( 'Ca/gateX' ) + xA = numpy.array( [ 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389, -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3, 3000, -0.1, 0.05 ] ) +# xgate.min = -0.1 +# xgate.max = 0.05 +# xgate.divs = 3000 +#// Converting Traub's expressions for the gCa/s alpha and beta functions +#// to SI units and entering the A, B, C, D and F parameters, we get: +# xgate.alpha( 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389 ) +# xgate.beta( -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3 ) + #xgate.setupAlpha( xA ) + xgate.alphaParms = xA + + +# The Y gate (gCa/r) is not quite of this form. For V > EREST_ACT, alpha = +# 5*{exp({-50*(V - EREST_ACT)})}. Otherwise, alpha = 5. Over the entire +# range, alpha + beta = 5. To create the Y_A and Y_B tables, we use some +# of the pieces of the setupalpha function. + ygate = moose.element( 'Ca/gateY' ) + ygate.min = -0.1 + ygate.max = 0.05 + ygate.divs = 3000 + yA = numpy.zeros( (ygate.divs + 1), dtype=float) + yB = numpy.zeros( (ygate.divs + 1), dtype=float) + + +#Fill the Y_A table with alpha values and the Y_B table with (alpha+beta) + dx = (ygate.max - ygate.min)/ygate.divs + x = ygate.min + for i in range( ygate.divs + 1 ): + if ( x > EREST_ACT): + yA[i] = 5.0 * math.exp( -50 * (x - EREST_ACT) ) + else: + yA[i] = 5.0 + yB[i] = 5.0 + x += dx + ygate.tableA = yA + ygate.tableB = yB +# Tell the cell reader that the current from this channel must be fed into +# the Ca_conc pool of calcium. + addmsg1 = moose.Mstring( '/library/Ca/addmsg1' ) + addmsg1.value = '. IkOut ../Ca_conc current' +# in some compartments, whe have an NMDA_Ca_conc object to put the current +# into. + addmsg2 = moose.Mstring( '/library/Ca/addmsg2' ) + addmsg2.value = '. IkOut ../NMDA_Ca_conc current' +# As we typically use the cell reader to create copies of these prototype +#elements in one or more compartments, we need some way to be sure that the +#needed messages are established. Although the cell reader has enough +#information to create the messages which link compartments to their channels +#and to other adjacent compartments, it most be provided with the information +#needed to establish additional messages. This is done by placing the +#message string in a user-defined field of one of the elements which is +#involved in the message. The cell reader recognizes the added object names +#"addmsg1", "addmsg2", etc. as indicating that they are to be +#evaluated and used to set up messages. The paths are relative to the +#element which contains the message string in its added field. Thus, +#"../Ca_conc" refers to the sibling element Ca_conc and "." +#refers to the Ca element itself. + + +#/************************************************************************* +#Next, we need an element to take the Calcium current calculated by the Ca +#channel and convert it to the Ca concentration. The "Ca_concen" object +#solves the equation dC/dt = B*I_Ca - C/tau, and sets Ca = Ca_base + C. As +#it is easy to make mistakes in units when using this Calcium diffusion +#equation, the units used here merit some discussion. + +#With Ca_base = 0, this corresponds to Traub's diffusion equation for +#concentration, except that the sign of the current term here is positive, as +#GENESIS uses the convention that I_Ca is the current flowing INTO the +#compartment through the channel. In SI units, the concentration is usually +#expressed in moles/m^3 (which equals millimoles/liter), and the units of B +#are chosen so that B = 1/(ion_charge * Faraday * volume). Current is +#expressed in amperes and one Faraday = 96487 coulombs. However, in this +#case, Traub expresses the concentration in arbitrary units, current in +#microamps and uses tau = 13.33 msec. If we use the same concentration units, +#but express current in amperes and tau in seconds, our B constant is then +#10^12 times the constant (called "phi") used in the paper. The actual value +#used will be typically be determined by the cell reader from the cell +#parameter file. However, for the prototype channel we wlll use Traub's +#corrected value for the soma. (An error in the paper gives it as 17,402 +#rather than 17.402.) In our units, this will be 17.402e12. + +#*************************************************************************/ + + +#//======================================================================== +#// Ca conc +#//======================================================================== + +def make_Ca_conc(): + if moose.exists( 'Ca_conc' ): + return + conc = moose.CaConc( 'Ca_conc' ) + conc.tau = 0.013333 # sec + conc.B = 17.402e12 # Curr to conc conversion for soma + conc.Ca_base = 0.0 + +#This Ca_concen element should receive a message from any calcium channels +# with the current going through the channel. Here we have this specified +# in the Ca channel, with the idea that more than one channel might +# contribute Ca ions to this calcium pool. In the original GENESIS file +# this was specified here in make_Ca_conc. + +#======================================================================== +# Tabulated Ca-dependent K AHP Channel +#======================================================================== + +# This is a tabchannel which gets the calcium concentration from Ca_conc +# in order to calculate the activation of its Z gate. It is set up much +# like the Ca channel, except that the A and B tables have values which are +# functions of concentration, instead of voltage. + +def make_K_AHP(): + if moose.exists( 'K_AHP' ): + return + + K_AHP = moose.HHChannel( 'K_AHP' ) + K_AHP.Ek = EK # V + K_AHP.Gbar = 8 * SOMA_A # S + K_AHP.Gk = 0 # S + K_AHP.Xpower = 0 + K_AHP.Ypower = 0 + K_AHP.Zpower = 1 + + zgate = moose.element( 'K_AHP/gateZ' ) + xmax = 500.0 + zgate.min = 0 + zgate.max = xmax + zgate.divs = 3000 + zA = numpy.zeros( (zgate.divs + 1), dtype=float) + zB = numpy.zeros( (zgate.divs + 1), dtype=float) + dx = (zgate.max - zgate.min)/zgate.divs + x = zgate.min + for i in range( zgate.divs + 1 ): + if (x < (xmax / 2.0 )): + zA[i] = 0.02*x + else: + zA[i] = 10.0 + zB[i] = zA[i] + 1.0 + x = x + dx + + zgate.tableA = zA + zgate.tableB = zB + addmsg1 = moose.Mstring( '/library/K_AHP/addmsg1' ) + addmsg1.value = '../Ca_conc concOut . concen' +# Use an added field to tell the cell reader to set up a message from the +# Ca_Conc with concentration info, to the current K_AHP object. + + +#//======================================================================== +#// Ca-dependent K Channel - K(C) - (vdep_channel with table and tabgate) +#//======================================================================== + +#The expression for the conductance of the potassium C-current channel has a +#typical voltage and time dependent activation gate, where the time dependence +#arises from the solution of a differential equation containing the rate +#parameters alpha and beta. It is multiplied by a function of calcium +#concentration that is given explicitly rather than being obtained from a +#differential equation. Therefore, we need a way to multiply the activation +#by a concentration dependent value which is determined from a lookup table. +#This is accomplished by using the Z gate with the new tabchannel "instant" +#field, introduced in GENESIS 2.2, to implement an "instantaneous" gate for +#the multiplicative Ca-dependent factor in the conductance. + +def make_K_C(): + if moose.exists( 'K_C'): + return + + K_C = moose.HHChannel( 'K_C' ) + K_C.Ek = EK # V + K_C.Gbar = 100.0 * SOMA_A # S + K_C.Gk = 0 # S + K_C.Xpower = 1 + K_C.Zpower = 1 + K_C.instant = 4 # Flag: 0x100 means Z gate is instant. + + # Now make a X-table for the voltage-dependent activation parameter. + xgate = moose.element( 'K_C/gateX' ) + xgate.min = -0.1 + xgate.max = 0.05 + xgate.divs = 3000 + xA = numpy.zeros( (xgate.divs + 1), dtype=float) + xB = numpy.zeros( (xgate.divs + 1), dtype=float) + dx = (xgate.max - xgate.min)/xgate.divs + x = xgate.min + for i in range( xgate.divs + 1 ): + alpha = 0.0 + beta = 0.0 + if (x < EREST_ACT + 0.05): + alpha = math.exp( 53.872 * (x - EREST_ACT) - 0.66835 ) / 0.018975 + beta = 2000* (math.exp ( (EREST_ACT + 0.0065 - x)/0.027)) - alpha + else: + alpha = 2000 * math.exp( ( EREST_ACT + 0.0065 - x)/0.027 ) + beta = 0.0 + xA[i] = alpha + xB[i] = alpha + beta + x = x + dx + xgate.tableA = xA + xgate.tableB = xB + +# Create a table for the function of concentration, allowing a +# concentration range of 0 to 1000, with 50 divisions. This is done +# using the Z gate, which can receive a CONCEN message. By using +# the "instant" flag, the A and B tables are evaluated as lookup tables, +# rather than being used in a differential equation. + zgate = moose.element( 'K_C/gateZ' ) + zgate.min = 0.0 + xmax = 500.0 + zgate.max = xmax + zgate.divs = 3000 + zA = numpy.zeros( (zgate.divs + 1), dtype=float) + zB = numpy.zeros( (zgate.divs + 1), dtype=float) + dx = ( zgate.max - zgate.min)/ zgate.divs + x = zgate.min + for i in range( xgate.divs + 1 ): + if ( x < ( xmax / 4.0 ) ): + zA[i] = x * 4.0 / xmax + else: + zA[i] = 1.0 + zB[i] = 1.0 + x += dx + zgate.tableA = zA + zgate.tableB = zB + +# Now we need to provide for messages that link to external elements. +# The message that sends the Ca concentration to the Z gate tables is stored +# in an added field of the channel, so that it may be found by the cell +# reader. + addmsg1 = moose.Mstring( '/library/K_C/addmsg1' ) + addmsg1.value = '../Ca_conc concOut . concen' + + +# The remaining channels are straightforward tabchannel implementations + +#/======================================================================== +#/ Tabchannel Na Hippocampal cell channel +#/======================================================================== +def make_Na(): + if moose.exists( 'Na' ): + return + Na = moose.HHChannel( 'Na' ) + Na.Ek = ENA # V + Na.Gbar = 300 * SOMA_A # S + Na.Gk = 0 # S + Na.Xpower = 2 + Na.Ypower = 1 + Na.Zpower = 0 + + xgate = moose.element( 'Na/gateX' ) + xA = numpy.array( [ 320e3 * (0.0131 + EREST_ACT), + -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004, + -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, + -1.0 * (0.0401 + EREST_ACT), 5.0e-3, + 3000, -0.1, 0.05 ] ) + xgate.alphaParms = xA + + + #xgate.alpha( 320e3 * (0.0131 + EREST_ACT), -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004 ) + #xgate.beta( -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 5.0e-3 ) + + ygate = moose.element( 'Na/gateY' ) + yA = numpy.array( [ 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018, + 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3, + 3000, -0.1, 0.05 ] ) + ygate.alphaParms = yA + + #ygate.alpha( 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018 ) + #ygate.beta( 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3 ) + +#======================================================================== +# Tabchannel K(DR) Hippocampal cell channel +#======================================================================== +def make_K_DR(): + if moose.exists( 'K_DR' ): + return + K_DR = moose.HHChannel( 'K_DR' ) + K_DR.Ek = EK # V + K_DR.Gbar = 150 * SOMA_A # S + K_DR.Gk = 0 # S + K_DR.Xpower = 1 + K_DR.Ypower = 0 + K_DR.Zpower = 0 + + xgate = moose.element( 'K_DR/gateX' ) + xA = numpy.array( [ 16e3 * (0.0351 + EREST_ACT), + -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005, + 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04, + 3000, -0.1, 0.05 ] ) + xgate.alphaParms = xA + #xgate.alpha( 16e3 * (0.0351 + EREST_ACT), -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005 ) + #xgate.beta( 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04 ) + +#======================================================================== +# Tabchannel K(A) Hippocampal cell channel +#======================================================================== +def make_K_A(): + if moose.exists( 'K_A' ): + return + K_A = moose.HHChannel( 'K_A' ) + K_A.Ek = EK # V + K_A.Gbar = 50 * SOMA_A # S + K_A.Gk = 0 # S + K_A.Xpower = 1 + K_A.Ypower = 1 + K_A.Zpower = 0 + + xgate = moose.element( 'K_A/gateX' ) + xA = numpy.array( [ 20e3 * (0.0131 + EREST_ACT), + -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01, + -17.5e3 * (0.0401 + EREST_ACT), + 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01, + 3000, -0.1, 0.05 ] ) + xgate.alphaParms = xA + # xgate.alpha( 20e3 * (0.0131 + EREST_ACT), -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01 ) + # xgate.beta( -17.5e3 * (0.0401 + EREST_ACT), 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01 ) + + ygate = moose.element( 'K_A/gateY' ) + yA = numpy.array( [ 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018, + 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005, + 3000, -0.1, 0.05 ] ) + ygate.alphaParms = yA + # ygate.alpha( 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018 ) + # ygate.beta( 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005 ) +#======================================================================== +# SynChan: Glu receptor +#======================================================================== + +def make_glu(): + if moose.exists( 'glu' ): + return + glu = moose.SynChan( 'glu' ) + glu.Ek = 0.0 + glu.tau1 = 2.0e-3 + glu.tau2 = 9.0e-3 + glu.Gbar = 40 * SOMA_A + +#======================================================================== +# SynChan: NMDA receptor +#======================================================================== + +def make_NMDA(): + if moose.exists( 'NMDA' ): + return + NMDA = moose.SynChan( 'NMDA' ) + NMDA.Ek = 0.0 + NMDA.tau1 = 20.0e-3 + NMDA.tau2 = 20.0e-3 + NMDA.Gbar = 5 * SOMA_A + + block = moose.MgBlock( '/library/NMDA/block' ) + block.CMg = 1.2 # [Mg] in mM + block.Zk = 2 + block.KMg_A = 1.0/0.28 + block.KMg_B = 1.0/62 + + moose.connect( NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) + addmsg1 = moose.Mstring( '/library/NMDA/addmsg1' ) + addmsg1.value = '.. channel ./block channel' + #Here we want to also tell the cell reader to _remove_ the original + #Gk, Ek term going from the channel to the compartment, as this is + # now handled by the MgBlock. + #addmsg2 = moose.Mstring( 'NMDA/addmsg2' + #addmsg2.value = 'DropMsg .. channel' + addmsg3 = moose.Mstring( '/library/NMDA/addmsg3' ) + addmsg3.value = '.. VmOut . Vm' + + +#addfield NMDA addmsg1 +#setfield NMDA addmsg1 ".. ./block VOLTAGE Vm" +#addfield NMDA addmsg2 +#setfield NMDA addmsg2 "./block .. CHANNEL Gk Ek" + +#======================================================================== +# The Ca_NMDA channel is a subset of the NMDA channel that carries Ca. +# It is identical to above, except that the Ek for Ca is much higher: +# 0.08 V from the consts at the top of this file. +# This is about the reversal potl for 1 uM Ca_in, 2 mM out. +# Also we do not want this channel to contribute to the current, +# which is already accounted for in the main channel. So there is +# no CHANNEL message to the parent compartment. +# I would like to have used the Nernst to do the Ca potential, and +# Synchans now take Ek messages but I haven't yet used this. +#======================================================================== + +def make_Ca_NMDA(): + if moose.exists( 'Ca_NMDA' ): + return + Ca_NMDA = moose.SynChan( 'Ca_NMDA' ) + Ca_NMDA.Ek = ECA + Ca_NMDA.tau1 = 20.0e-3 + Ca_NMDA.tau2 = 20.0e-3 + Ca_NMDA.Gbar = 5 * SOMA_A + + block = moose.MgBlock( '/library/Ca_NMDA/block' ) + block.CMg = 1.2 # [Mg] in mM + block.Zk = 2 + block.KMg_A = 1.0/0.28 + block.KMg_B = 1.0/62 + + moose.connect( Ca_NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) + addmsg1 = moose.Mstring( '/library/Ca_NMDA/addmsg1' ) + addmsg1.value = '.. VmOut ./block Vm' + addmsg2 = moose.Mstring( '/library/Ca_NMDA/addmsg2' ) + addmsg2.value = './block IkOut ../NMDA_Ca_conc current' + # The original model has the Ca current also coming here. + +#======================================================================== +# Ca pool for influx through Ca_NMDA +#======================================================================== +def make_NMDA_Ca_conc(): + if moose.exists( 'NMDA_Ca_conc' ): + return + NMDA_Ca_conc = moose.CaConc( 'NMDA_Ca_conc' ) + NMDA_Ca_conc.tau = 0.004 # sec. Faster in spine than dend + NMDA_Ca_conc.B = 17.402e12 # overridden by cellreader. + NMDA_Ca_conc.Ca_base = 0.0 + +# This pool used to set up Ca info coming to it. Now we insist that the +# originating channel should specify the deferred message. + +#===================================================================== +# SPIKE DETECTOR +#===================================================================== + +#//addmsg axon/spike axon BUFFER name +def make_axon(): + if moose.exists( 'axon' ): + return + axon = moose.SpikeGen( 'axon' ) + axon.threshold = -40e-3 # V + axon.abs_refract = 10e-3 # sec + diff --git a/examples/snippets/MULTI/psd_merged30.g b/examples/snippets/MULTI/psd_merged30.g new file mode 100644 index 0000000..c896b1c --- /dev/null +++ b/examples/snippets/MULTI/psd_merged30.g @@ -0,0 +1,1452 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Jul 19 17:23:18 2013 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 12 20 70 33 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry cyan yellow 44 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ + "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -2 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -6 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ + 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry orange yellow 35.35 21.88 0 +simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ + "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 36 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ + 26 0 +simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ + "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ + 17 26 0 +simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ + "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 22 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry orange yellow 21 22 0 +simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ + "Dephosph is mainly by PP2B" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 1e-12 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 1 yellow -1 33 0 +simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.002 "" white \ + yellow 21 40 0 +simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue yellow 12 33 0 +simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.11111 1 "" white yellow \ + 7 40 0 +simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PKA-active 1 0 0.02 0.02 0.12 0.12 0 0 6 0 \ + /kinetics/geometry yellow 20 14 17 0 +simundump text /kinetics/PSD/PKA-active/notes 0 "" +call /kinetics/PSD/PKA-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ + 0.11111 36 9 0 0 "" red 27 "" 27 19 0 +simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" +call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ +"" +simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ + defaultfile.g 0 0 0 39 32 0 +simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ + /kinetics/geometry blue 33 67 8 0 +simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ + "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 1 6 12 0 0 6 0 \ + /kinetics/geometry 29 33 74 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ + 0.0033333 8 2 0 0 "" red 29 "" 72 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ + 0.00083333 2 0.5 0 0 "" red 29 "" 59 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ + 0.01 24 6 0 0 "" red 29 "" 78 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 23 33 84 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 59 33 52 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 47 33 61 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ + 0 7.732 0.0052083 8 2 0 0 "" red 47 "" 72 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ + 54.001 0.015625 24 6 0 0 "" red 47 "" 78 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ + 7.732 0.0013021 2 0.5 0 0 "" red 47 "" 60 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry blue 33 81 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ + 0.0022 "" white 33 54 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ + white 33 65 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry 47 33 56 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 50 33 63 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 57 33 69 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 62 33 75 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 30 33 88 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 0 33 81 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.0001 0 "" white 33 63 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ + 75 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ + "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.0001 0 "" white 33 56 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ + "Same as for transloc_1\n\n\n" +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ + 89 13 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ + 20 45 17 0 +simundump text /kinetics/PSD/PP2A/notes 0 "" +call /kinetics/PSD/PP2A/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0.0012791 0.0012791 \ + 0.06907 0.06907 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ + "k1 changed from 3.3e-6 to 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 2.2155e-07 2.2155e-07 \ + 1.1964e-05 1.1964e-05 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 27 \ + 20 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ + "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM 1 1e-12 20 20 120 120 0 0 6 0 \ + /kinetics/geometry pink blue 35 39 0 +simundump text /kinetics/PSD/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.077501 10 "" white blue \ + 49 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry hotpink blue 47 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ + 37 36 0 +simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 43 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ + 45 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ + blue 41 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 39 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/PSD/CaM/Ca 1 1e-12 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry red blue 43 33 0 +simundump text /kinetics/PSD/CaM/Ca/notes 0 "" +call /kinetics/PSD/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue blue 52 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM_CaN 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 1 20 30 33 0 +simundump text /kinetics/PSD/CaM_CaN/notes 0 "" +call /kinetics/PSD/CaM_CaN/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 8 \ + -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 1e-12 0.08 0 0 48 0 0 600 0 \ + /kinetics/geometry[3] 62 13 13 -27 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM 1 1e-12 20 20 1080 1080 0 0 54 0 \ + /kinetics/geometry pink blue 37 4 0 +simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.0086112 10 "" white \ + blue 51 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry hotpink blue 49 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ + blue 39 1 0 +simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 45 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ + blue 47 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ + blue 43 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 41 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-12 0.08 0.08 4.32 4.32 0 0 54 0 \ + /kinetics/geometry red blue 45 -2 0 +simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" +call /kinetics/SPINE/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry blue blue 54 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 41 -3 0 +simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 1 54 108 0 0 54 0 \ + /kinetics/geometry 29 33 76 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.00037037 8 2 0 0 "" red 29 "" 74 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ + 69.588 9.2592e-05 2 0.5 0 0 "" red 29 "" 61 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ + 486.01 0.0011111 24 6 0 0 "" red 29 "" 80 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ + 54 0 /kinetics/geometry 23 33 86 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 59 33 54 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 47 33 63 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ + 0 0 0 69.588 0.0005787 8 2 0 0 "" red 47 "" 74 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.0017361 24 6 0 0 "" red 47 "" 80 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.00014468 2 0.5 0 0 "" red 47 "" 62 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 1 1 54 54 0 0 54 \ + 0 /kinetics/geometry blue 33 83 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ + 0.0022 "" white 33 56 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ + white 33 67 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 47 33 58 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 50 33 65 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 57 33 71 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 0 20 20 1080 1080 0 0 54 \ + 0 /kinetics/geometry 62 33 77 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 30 33 90 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 0 33 83 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM_CaN 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 1 5 32 -2 0 +simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" +call /kinetics/SPINE/CaM_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ + /kinetics/geometry 12 5 72 -2 0 +simundump text /kinetics/SPINE/actCaMKII/notes 0 "" +call /kinetics/SPINE/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/PP2A 1 0 4 4 216 216 0 0 54 0 \ + /kinetics/geometry 62 5 46 -10 0 +simundump text /kinetics/SPINE/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 63 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 73 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 80 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0023148 \ + 0.5 0.125 0 0 "" red 62 "" 90 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 85 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 +simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" +call /kinetics/SPINE/CaN_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 1e-12 1 1 54 54 0 0 54 0 \ + /kinetics/geometry 1 yellow 4 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.002 "" \ + white yellow 23 5 0 +simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ + "From Quintana et al 2005" +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0013717 1 "" white \ + yellow 8 5 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] blue yellow 15 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 9587.3 0 4 0 +simundump xgraph /graphs/conc2 0 0 9587.3 0 16.804 0 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 4 0 0 1 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc1/PP1-active.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " cyan 0 0 1 +simundump xplot /graphs/conc1/CaM_CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc1/tot-CaM-CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc1/tot-auto.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 29 0 0 1 +simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/iR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xplot /graphs/conc2/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc2/CaM_CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot-CaM-CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/tot-auto.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 29 0 0 1 +simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 9587.3 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 9587.3 0 4 0 +simundump xcoredraw /edit/draw 0 -10 92 -38.4 28.6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"23 Dec 2011" \ +"CaMKII_merged16.g" \ +"Added Ca-binding step to the CaN activation pathway." \ +"Based on CaMKII_merged15.g" \ +"" \ +"CaMKII_merged16a.g" \ +"Halved the Kb for CaN-bind-CaM" \ +"" \ +"CaMKII_merged17.g" \ +" Used more rates from Saucerman and Bers BPJ 2008" \ +"" \ +"CaMKII_merged17a.g" \ +"Fix to init conc of PP1-active in PSD: from 2 to 4." \ +"" \ +"CaMKII_merged17b.g" \ +"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ +"levels in PSD. Scaled kcats down to match." \ +"" \ +"CaMKII_merged20.g" \ +"First pass at a version with a reasonable basal PKA and a less" \ +"saturating effect on PP1-active of CaMKII." \ +"" \ +"CaMKII_merged20c.g: This version turns on but does not go off" \ +"afterwards. " \ +"" \ +"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ +"" \ +"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ +"" \ +"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ +"sites given that CaMKII is a dodecamer." \ +"" \ +"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ +"0.002/sec." \ +"" \ +"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ +"" \ +"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ +"CaM with 6:54." \ +"" \ +"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ +"" \ +"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ +"CaMKII in bulk." \ +"" \ +"19 July 2013. psd_merged30.g: Variant for signeur loading." \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B +addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B +addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n +addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC B A +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 +addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/PSD/PP1_PSD/PP1-active /graphs/conc1/PP1-active.Co PLOT Co *PP1-active.Co *cyan +addmsg /kinetics/PSD/CaM_CaN /graphs/conc1/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /graphs/conc1/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /graphs/conc1/tot-auto.Co PLOT Co *tot-auto.Co *29 +addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/SPINE/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 +addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/SPINE/CaM_CaN /graphs/conc2/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /graphs/conc2/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /graphs/conc2/tot-auto.Co PLOT Co *tot-auto.Co *29 +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +enddump +// End of dump + +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +complete_loading diff --git a/examples/snippets/MULTI/psd_merged30b.g b/examples/snippets/MULTI/psd_merged30b.g new file mode 100644 index 0000000..73e00c2 --- /dev/null +++ b/examples/snippets/MULTI/psd_merged30b.g @@ -0,0 +1,1452 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Mon Aug 12 22:34:03 2013 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 12 20 70 33 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry cyan yellow 44 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ + "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -2 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -6 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ + 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry orange yellow 35.35 21.88 0 +simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ + "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 36 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ + 26 0 +simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ + "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ + 17 26 0 +simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ + "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 22 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry orange yellow 21 22 0 +simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ + "Dephosph is mainly by PP2B" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 1e-12 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 1 yellow -1 33 0 +simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.002 "" white \ + yellow 21 40 0 +simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue yellow 12 33 0 +simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.11111 1 "" white yellow \ + 7 40 0 +simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PKA-active 1 0 0.02 0.02 0.12 0.12 0 0 6 0 \ + /kinetics/geometry yellow 20 14 17 0 +simundump text /kinetics/PSD/PKA-active/notes 0 "" +call /kinetics/PSD/PKA-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ + 0.11111 36 9 0 0 "" red 27 "" 27 19 0 +simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" +call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ +"" +simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ + defaultfile.g 0 0 0 39 32 0 +simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ + /kinetics/geometry blue 33 67 8 0 +simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ + "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 1 6 12 0 0 6 0 \ + /kinetics/geometry 29 33 74 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ + 0.0033333 8 2 0 0 "" red 29 "" 72 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ + 0.00083333 2 0.5 0 0 "" red 29 "" 59 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ + 0.01 24 6 0 0 "" red 29 "" 78 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 23 33 84 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 59 33 52 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 47 33 61 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ + 0 7.732 0.0052083 8 2 0 0 "" red 47 "" 72 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ + 54.001 0.015625 24 6 0 0 "" red 47 "" 78 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ + 7.732 0.0013021 2 0.5 0 0 "" red 47 "" 60 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry blue 33 81 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ + 0.0022 "" white 33 54 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ + white 33 65 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry 47 33 56 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 50 33 63 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 57 33 69 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 62 33 75 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 30 33 88 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 0 33 81 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.0001 0 "" white 33 63 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ + 75 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ + "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.0001 0 "" white 33 56 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ + "Same as for transloc_1\n\n\n" +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ + 89 13 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ + 20 45 17 0 +simundump text /kinetics/PSD/PP2A/notes 0 "" +call /kinetics/PSD/PP2A/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0.0012791 0.0012791 \ + 0.06907 0.06907 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ + "k1 changed from 3.3e-6 to 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 2.2155e-07 2.2155e-07 \ + 1.1964e-05 1.1964e-05 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 27 \ + 20 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ + "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM 1 1e-12 20 20 120 120 0 0 6 0 \ + /kinetics/geometry pink blue 35 39 0 +simundump text /kinetics/PSD/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.077501 10 "" white blue \ + 49 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry hotpink blue 47 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ + 37 36 0 +simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 43 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ + 45 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ + blue 41 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 39 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry red blue 43 33 0 +simundump text /kinetics/PSD/CaM/Ca/notes 0 "" +call /kinetics/PSD/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue blue 52 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM_CaN 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 1 20 30 33 0 +simundump text /kinetics/PSD/CaM_CaN/notes 0 "" +call /kinetics/PSD/CaM_CaN/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 8 \ + -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 1e-11 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry[3] 62 13 13 -27 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM 1 1e-12 20 20 1080 1080 0 0 54 0 \ + /kinetics/geometry pink blue 37 4 0 +simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.0086112 10 "" white \ + blue 51 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry hotpink blue 49 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ + blue 39 1 0 +simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 45 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ + blue 47 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ + blue 43 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 41 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ + /kinetics/geometry red blue 45 -2 0 +simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" +call /kinetics/SPINE/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry blue blue 54 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 41 -3 0 +simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 1 54 108 0 0 54 0 \ + /kinetics/geometry 29 33 76 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.00037037 8 2 0 0 "" red 29 "" 74 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ + 69.588 9.2592e-05 2 0.5 0 0 "" red 29 "" 61 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ + 486.01 0.0011111 24 6 0 0 "" red 29 "" 80 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ + 54 0 /kinetics/geometry 23 33 86 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 59 33 54 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 47 33 63 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ + 0 0 0 69.588 0.0005787 8 2 0 0 "" red 47 "" 74 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.0017361 24 6 0 0 "" red 47 "" 80 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.00014468 2 0.5 0 0 "" red 47 "" 62 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 1 1 54 54 0 0 54 \ + 0 /kinetics/geometry blue 33 83 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ + 0.0022 "" white 33 56 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ + white 33 67 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 47 33 58 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 50 33 65 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 57 33 71 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 0 20 20 1080 1080 0 0 54 \ + 0 /kinetics/geometry 62 33 77 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 30 33 90 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 0 33 83 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM_CaN 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 1 5 32 -2 0 +simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" +call /kinetics/SPINE/CaM_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ + /kinetics/geometry 12 5 72 -2 0 +simundump text /kinetics/SPINE/actCaMKII/notes 0 "" +call /kinetics/SPINE/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/PP2A 1 0 4 4 216 216 0 0 54 0 \ + /kinetics/geometry 62 5 46 -10 0 +simundump text /kinetics/SPINE/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 63 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 73 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 80 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0023148 \ + 0.5 0.125 0 0 "" red 62 "" 90 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 85 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 +simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" +call /kinetics/SPINE/CaN_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 1e-12 1 1 54 54 0 0 54 0 \ + /kinetics/geometry 1 yellow 4 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.002 "" \ + white yellow 23 5 0 +simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ + "From Quintana et al 2005" +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0013717 1 "" white \ + yellow 8 5 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] blue yellow 15 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2000 0 4 0 +simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 4 0 0 1 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc1/PP1-active.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " cyan 0 0 1 +simundump xplot /graphs/conc1/CaM_CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc1/tot-CaM-CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc1/tot-auto.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 29 0 0 1 +simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/iR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xplot /graphs/conc2/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc2/CaM_CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot-CaM-CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/tot-auto.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 29 0 0 1 +simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 +simundump xcoredraw /edit/draw 0 -10 92 -32 42 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"23 Dec 2011" \ +"CaMKII_merged16.g" \ +"Added Ca-binding step to the CaN activation pathway." \ +"Based on CaMKII_merged15.g" \ +"" \ +"CaMKII_merged16a.g" \ +"Halved the Kb for CaN-bind-CaM" \ +"" \ +"CaMKII_merged17.g" \ +" Used more rates from Saucerman and Bers BPJ 2008" \ +"" \ +"CaMKII_merged17a.g" \ +"Fix to init conc of PP1-active in PSD: from 2 to 4." \ +"" \ +"CaMKII_merged17b.g" \ +"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ +"levels in PSD. Scaled kcats down to match." \ +"" \ +"CaMKII_merged20.g" \ +"First pass at a version with a reasonable basal PKA and a less" \ +"saturating effect on PP1-active of CaMKII." \ +"" \ +"CaMKII_merged20c.g: This version turns on but does not go off" \ +"afterwards. " \ +"" \ +"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ +"" \ +"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ +"" \ +"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ +"sites given that CaMKII is a dodecamer." \ +"" \ +"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ +"0.002/sec." \ +"" \ +"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ +"" \ +"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ +"CaM with 6:54." \ +"" \ +"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ +"" \ +"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ +"CaMKII in bulk." \ +"" \ +"19 July 2013. psd_merged30.g: Variant for signeur loading." \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B +addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B +addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n +addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC B A +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 +addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/PSD/PP1_PSD/PP1-active /graphs/conc1/PP1-active.Co PLOT Co *PP1-active.Co *cyan +addmsg /kinetics/PSD/CaM_CaN /graphs/conc1/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /graphs/conc1/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /graphs/conc1/tot-auto.Co PLOT Co *tot-auto.Co *29 +addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/SPINE/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 +addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/SPINE/CaM_CaN /graphs/conc2/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /graphs/conc2/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /graphs/conc2/tot-auto.Co PLOT Co *tot-auto.Co *29 +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +enddump +// End of dump + +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +complete_loading diff --git a/examples/snippets/MULTI/psd_merged31d.g b/examples/snippets/MULTI/psd_merged31d.g new file mode 100644 index 0000000..e677d13 --- /dev/null +++ b/examples/snippets/MULTI/psd_merged31d.g @@ -0,0 +1,1488 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Mon Sep 23 22:48:38 2013 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[5] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 12 20 70 33 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry cyan yellow 44 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ + "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -2 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -6 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ + 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry orange yellow 35.35 21.88 0 +simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ + "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 36 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ + 26 0 +simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ + "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ + 17 26 0 +simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ + "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 22 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry orange yellow 21 22 0 +simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ + "Dephosph is mainly by PP2B" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 1e-12 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 1 yellow -1 33 0 +simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.002 "" white \ + yellow 21 40 0 +simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue yellow 12 33 0 +simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.11111 1 "" white yellow \ + 7 40 0 +simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PKA-active 1 0 0.02 0.02 0.12 0.12 0 0 6 0 \ + /kinetics/geometry yellow 20 14 17 0 +simundump text /kinetics/PSD/PKA-active/notes 0 "" +call /kinetics/PSD/PKA-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ + 0.11111 36 9 0 0 "" red 27 "" 27 19 0 +simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" +call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ +"" +simundump group /kinetics/PSD/CaMKII_PSD 0 27 20 x 0 0 "" CaMKII_PSD \ + defaultfile.g 0 0 0 39 32 0 +simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 1 6 12 0 0 6 0 \ + /kinetics/geometry 29 27 74 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ + 0.0033333 8 2 0 0 "" red 29 "" 72 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ + 0.00083333 2 0.5 0 0 "" red 29 "" 59 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ + 0.01 24 6 0 0 "" red 29 "" 78 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 23 27 84 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 59 27 52 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 47 27 61 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ + 0 7.732 0.0052083 8 2 0 0 "" red 47 "" 72 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ + 54.001 0.015625 24 6 0 0 "" red 47 "" 78 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ + 7.732 0.0013021 2 0.5 0 0 "" red 47 "" 60 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry blue 27 81 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ + 0.0022 "" white 27 54 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ + white 27 65 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry 47 27 56 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 50 27 63 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 57 27 69 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 62 27 75 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 30 27 88 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 0 27 81 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 1 1e-06 "" white 27 63 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 27 \ + 75 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ + "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.0001 1e-06 "" white \ + 27 56 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ + "Same as for transloc_1\n\n\n" +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 27 \ + 89 13 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/bar 0 0 0.66667 0.66667 4 4 0 0 6 0 \ + /kinetics/geometry[4] blue 27 50 18 0 +simundump text /kinetics/PSD/CaMKII_PSD/bar/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/bar/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ + 20 45 17 0 +simundump text /kinetics/PSD/PP2A/notes 0 "" +call /kinetics/PSD/PP2A/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0.0012791 0.0012791 \ + 0.06907 0.06907 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ + "k1 changed from 3.3e-6 to 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 2.2155e-07 2.2155e-07 \ + 1.1964e-05 1.1964e-05 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 27 \ + 20 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ + "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM 1 1e-12 20 20 120 120 0 0 6 0 \ + /kinetics/geometry pink blue 35 39 0 +simundump text /kinetics/PSD/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.077501 10 "" white blue \ + 49 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry hotpink blue 47 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ + 37 36 0 +simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 43 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ + 45 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ + blue 41 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 39 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 4 \ + /kinetics/geometry red blue 43 33 0 +simundump text /kinetics/PSD/CaM/Ca/notes 0 "" +call /kinetics/PSD/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue blue 52 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM_CaN 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 1 20 30 33 0 +simundump text /kinetics/PSD/CaM_CaN/notes 0 "" +call /kinetics/PSD/CaM_CaN/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 8 \ + -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 1e-11 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry[3] 62 13 13 -27 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM 1 1e-12 20 20 1080 1080 0 0 54 0 \ + /kinetics/geometry pink blue 37 4 0 +simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.0086112 10 "" white \ + blue 51 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry hotpink blue 49 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ + blue 39 1 0 +simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 45 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ + blue 47 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ + blue 43 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 41 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ + /kinetics/geometry red blue 45 -2 0 +simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" +call /kinetics/SPINE/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry blue blue 54 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 41 -3 0 +simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 1 54 108 0 0 54 0 \ + /kinetics/geometry 29 33 76 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.00037037 8 2 0 0 "" red 29 "" 74 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ + 69.588 9.2592e-05 2 0.5 0 0 "" red 29 "" 61 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ + 486.01 0.0011111 24 6 0 0 "" red 29 "" 80 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ + 54 0 /kinetics/geometry 23 33 86 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 59 33 54 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 47 33 63 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ + 0 0 0 69.588 0.0005787 8 2 0 0 "" red 47 "" 74 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.0017361 24 6 0 0 "" red 47 "" 80 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.00014468 2 0.5 0 0 "" red 47 "" 62 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 1 1 54 54 0 0 54 \ + 0 /kinetics/geometry blue 33 83 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ + 0.0022 "" white 33 56 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ + white 33 67 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 47 33 58 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 50 33 65 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 57 33 71 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 0 20 20 1080 1080 0 0 54 \ + 0 /kinetics/geometry 62 33 77 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 30 33 90 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 0 33 83 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/NMDAR 0 0 4.4444 4.4444 240 240 0 \ + 0 54 0 /kinetics/geometry blue 33 67 8 0 +simundump text /kinetics/SPINE/CaMKII_BULK/NMDAR/notes 0 \ + "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." +call /kinetics/SPINE/CaMKII_BULK/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +simundump kpool /kinetics/SPINE/CaMKII_BULK/foo 0 0 0.18519 0.18519 10 10 0 0 \ + 54 0 /kinetics/geometry[5] blue 33 43 9 0 +simundump text /kinetics/SPINE/CaMKII_BULK/foo/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/foo/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/tr0 0 0.1 0.1 "" white 33 48 12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tr0/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tr0/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM_CaN 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 1 5 32 -2 0 +simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" +call /kinetics/SPINE/CaM_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ + /kinetics/geometry 12 5 72 -2 0 +simundump text /kinetics/SPINE/actCaMKII/notes 0 "" +call /kinetics/SPINE/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/PP2A 1 0 4 4 216 216 0 0 54 0 \ + /kinetics/geometry 62 5 46 -10 0 +simundump text /kinetics/SPINE/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 63 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 73 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 80 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0023148 \ + 0.5 0.125 0 0 "" red 62 "" 90 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 85 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 +simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" +call /kinetics/SPINE/CaN_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 1e-12 1 1 54 54 0 0 54 0 \ + /kinetics/geometry 1 yellow 4 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.002 "" \ + white yellow 23 5 0 +simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ + "From Quintana et al 2005" +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0013717 1 "" white \ + yellow 8 5 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] blue yellow 15 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2000 0 4 0 +simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 4 0 0 1 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc1/PP1-active.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " cyan 0 0 1 +simundump xplot /graphs/conc1/CaM_CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc1/tot-CaM-CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc1/tot-auto.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 29 0 0 1 +simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/iR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xplot /graphs/conc2/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc2/CaM_CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot-CaM-CaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 47 0 0 1 +simundump xplot /graphs/conc2/tot-auto.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 29 0 0 1 +simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 +simundump xcoredraw /edit/draw 0 -10 92 -32 42 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"23 Dec 2011" \ +"CaMKII_merged16.g" \ +"Added Ca-binding step to the CaN activation pathway." \ +"Based on CaMKII_merged15.g" \ +"" \ +"CaMKII_merged16a.g" \ +"Halved the Kb for CaN-bind-CaM" \ +"" \ +"CaMKII_merged17.g" \ +" Used more rates from Saucerman and Bers BPJ 2008" \ +"" \ +"CaMKII_merged17a.g" \ +"Fix to init conc of PP1-active in PSD: from 2 to 4." \ +"" \ +"CaMKII_merged17b.g" \ +"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ +"levels in PSD. Scaled kcats down to match." \ +"" \ +"CaMKII_merged20.g" \ +"First pass at a version with a reasonable basal PKA and a less" \ +"saturating effect on PP1-active of CaMKII." \ +"" \ +"CaMKII_merged20c.g: This version turns on but does not go off" \ +"afterwards. " \ +"" \ +"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ +"" \ +"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ +"" \ +"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ +"sites given that CaMKII is a dodecamer." \ +"" \ +"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ +"0.002/sec." \ +"" \ +"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ +"" \ +"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ +"CaM with 6:54." \ +"" \ +"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ +"" \ +"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ +"CaMKII in bulk." \ +"" \ +"19 July 2013. psd_merged30.g: Variant for signeur loading." \ +"" \ +"23 Sep 2013. psd_merged31.g: moved NMDAR to spine bulk, to check" \ +"possible bug in handling of cross-compartment reactions." \ +"23 Sep 2013. psd_merged31b.g: added dummy reaction tr0 to check" \ +"what happens with a simple cross-compt reaction." \ +"23 Sep 2013. psd_merged31c.g: moved tr0 to the CaMKII_PSD to see" \ +"if this fixes the problem." \ +"psd_merged31d.g: Tried eliminating NMDAR as substrate." \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B +addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B +addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/tr0 /kinetics/PSD/CaMKII_PSD/bar REAC B A +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n +addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC B A +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tr0 /kinetics/SPINE/CaMKII_BULK/foo REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/foo /kinetics/SPINE/CaMKII_BULK/tr0 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/bar /kinetics/SPINE/CaMKII_BULK/tr0 PRODUCT n +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 +addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/PSD/PP1_PSD/PP1-active /graphs/conc1/PP1-active.Co PLOT Co *PP1-active.Co *cyan +addmsg /kinetics/PSD/CaM_CaN /graphs/conc1/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /graphs/conc1/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /graphs/conc1/tot-auto.Co PLOT Co *tot-auto.Co *29 +addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/SPINE/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 +addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/SPINE/CaM_CaN /graphs/conc2/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /graphs/conc2/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /graphs/conc2/tot-auto.Co PLOT Co *tot-auto.Co *29 +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +enddump +// End of dump + +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/CaMKII_BULK/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +complete_loading diff --git a/examples/snippets/MULTI/runcell18.py b/examples/snippets/MULTI/runcell18.py new file mode 100644 index 0000000..3007dd7 --- /dev/null +++ b/examples/snippets/MULTI/runcell18.py @@ -0,0 +1,71 @@ +# First pass at loading and running a cell model +import os +os.environ['NUMPTHREADS'] = '1' + +import moose +import proto18 + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + tab.xplot( fname, 'soma.Vm' ) + catab.xplot( fname, 'soma.Ca' ) + +library = moose.Neutral( '/library' ) +moose.setCwe( '/library' ) +proto18.make_Ca() +proto18.make_Ca_conc() +proto18.make_K_AHP() +proto18.make_K_C() +proto18.make_Na() +proto18.make_K_DR() +proto18.make_K_A() +proto18.make_glu() +proto18.make_NMDA() +proto18.make_Ca_NMDA() +proto18.make_NMDA_Ca_conc() +proto18.make_axon() + +cellId = moose.loadModel( 'ca1_asym.p', '/cell', "hsolve" ) +moose.le( cellId ) +moose.le( '/cell/lat_14_1' ) +#le( '/cell' ) +graphs = moose.Neutral( '/graphs' ) +tab = moose.Table( '/graphs/soma' ) +catab = moose.Table( '/graphs/ca' ) +soma = moose.element( '/cell/soma' ) +soma.inject = 2e-10 +moose.connect( tab, 'requestOut', soma, 'getVm' ) +capool = moose.element( '/cell/soma/Ca_conc' ) +moose.connect( catab, 'requestOut', capool, 'getCa' ) +print 1 +dt = 50e-6 +moose.setClock( 0, dt ) +moose.setClock( 1, dt ) +moose.setClock( 2, dt ) +moose.setClock( 3, 2e-4 ) +moose.useClock( 0, '/cell/##[ISA=Compartment]', 'init' ) +moose.useClock( 1, '/cell/##[ISA=Compartment]', 'process' ) +moose.useClock( 2, '/cell/##[ISA!=Compartment]', 'process' ) +moose.useClock( 3, '/graphs/soma,/graphs/ca', 'process' ) + +print 2 +moose.reinit() +print 3 +moose.start( 0.1 ) +dumpPlots( '50usec.plot' ) +print 4 +moose.reinit() +hsolve = moose.HSolve( '/cell/hsolve' ) +moose.useClock( 1, '/cell/hsolve', 'process' ) +hsolve.dt = dt +hsolve.target = '/cell/soma' +moose.reinit() +moose.reinit() +print 5 +moose.start( 0.1 ) +print 6 + +dumpPlots( 'h50usec.plot' ) + +print 7 diff --git a/examples/snippets/MULTI/x_compt.g b/examples/snippets/MULTI/x_compt.g new file mode 100644 index 0000000..627aadb --- /dev/null +++ b/examples/snippets/MULTI/x_compt.g @@ -0,0 +1,222 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Thu Sep 26 22:28:32 2013 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.01 +CONTROLDT = 5 +PLOTDT = 1 +MAXTIME = 100 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 0 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-18 3 sphere "" white black 2 -6 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 0 -8 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black -3 \ + -6 0 +simundump geometry /kinetics/geometry[3] 0 1e-19 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[5] 0 1e-19 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[6] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump group /kinetics/DEND 0 yellow black x 0 0 "" DEND defaultfile.g 0 0 \ + 0 -3 -3 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca 0 1e-10 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry blue yellow -4 4 0 +simundump text /kinetics/DEND/Ca/notes 0 "" +call /kinetics/DEND/Ca/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 28 black x 0 1 "" SPINE defaultfile.g 0 0 0 \ + 0 -6 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca 0 1e-10 0.08 0.08 4.8 4.8 0 0 60 0 \ + /kinetics/geometry[1] blue 28 -2 4 0 +simundump text /kinetics/SPINE/Ca/notes 0 "" +call /kinetics/SPINE/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM 0 1e-11 5 5 300 300 0 0 60 0 \ + /kinetics/geometry[1] 55 28 -2 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/Ca_CaM 0 1e-11 0 0 0 0 0 0 60 0 \ + /kinetics/geometry[1] blue 28 1 -1 0 +simundump text /kinetics/SPINE/Ca_CaM/notes 0 "" +call /kinetics/SPINE/Ca_CaM/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/kreac 0 0.1 0.1 "" white 28 -1 0 0 +simundump text /kinetics/SPINE/kreac/notes 0 "" +call /kinetics/SPINE/kreac/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII 0 0 8.3333 8.3333 500 500 0 0 60 0 \ + /kinetics/geometry[3] 7 28 -1 -3 0 +simundump text /kinetics/SPINE/CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM_bind_CaMKII 0 0.0016667 0.01 "" white 28 \ + 1 -4 0 +simundump text /kinetics/SPINE/CaM_bind_CaMKII/notes 0 "" +call /kinetics/SPINE/CaM_bind_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/foo 0 0 0.16667 0.16667 10 10 0 0 60 0 \ + /kinetics/geometry[5] blue 28 -2 -9 0 +simundump text /kinetics/SPINE/foo/notes 0 "" +call /kinetics/SPINE/foo/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/bar 0 0 0.33333 0 0 20 0 0 60 0 \ + /kinetics/geometry[5] blue 28 -2 -11 0 +simundump text /kinetics/SPINE/bar/notes 0 "" +call /kinetics/SPINE/bar/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/r2 0 0.1 0.1 "" white 28 0 -10 0 +simundump text /kinetics/SPINE/r2/notes 0 "" +call /kinetics/SPINE/r2/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 0 "" PSD defaultfile.g 0 0 0 3 -3 \ + 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-10 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry[2] blue 0 1 4 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM 0 1e-11 5 5 30 30 0 0 6 0 \ + /kinetics/geometry[2] 53 0 1 2 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_CaM 0 1e-11 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue 0 4 -1 0 +simundump text /kinetics/PSD/Ca_CaM/notes 0 "" +call /kinetics/PSD/Ca_CaM/notes LOAD \ +"" +simundump kreac /kinetics/PSD/kreac 0 0.1 0.1 "" white 0 2 0 0 +simundump text /kinetics/PSD/kreac/notes 0 "" +call /kinetics/PSD/kreac/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_CaM_CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 4 -5 0 +simundump text /kinetics/PSD/Ca_CaM_CaMKII/notes 0 "" +call /kinetics/PSD/Ca_CaM_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/zod 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[6] \ + blue 0 3 -11 0 +simundump text /kinetics/PSD/zod/notes 0 "" +call /kinetics/PSD/zod/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 100 0 1 0 +simundump xgraph /graphs/conc2 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 +simundump xcoredraw /edit/draw 0 -6 6 -13 6 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"23 sep 2013. Variant of minimal.g. Added a cross-compartment" \ +"reaction taking CaMKII to PSD upon binding of CaM." \ +"23 Sep 2013. x_compt2.g Added a dummy reaction to show that" \ +"x-compt reacts work even with bigger reacs." \ +"" +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca REAC A B +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/CaM REAC A B +addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca_CaM REAC B A +addmsg /kinetics/SPINE/CaM_bind_CaMKII /kinetics/SPINE/Ca_CaM REAC A B +addmsg /kinetics/SPINE/Ca /kinetics/SPINE/kreac SUBSTRATE n +addmsg /kinetics/SPINE/CaM /kinetics/SPINE/kreac SUBSTRATE n +addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/kreac PRODUCT n +addmsg /kinetics/SPINE/CaM_bind_CaMKII /kinetics/SPINE/CaMKII REAC A B +addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/CaM_bind_CaMKII SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII /kinetics/SPINE/CaM_bind_CaMKII SUBSTRATE n +addmsg /kinetics/PSD/Ca_CaM_CaMKII /kinetics/SPINE/CaM_bind_CaMKII PRODUCT n +addmsg /kinetics/SPINE/r2 /kinetics/SPINE/foo REAC A B +addmsg /kinetics/SPINE/r2 /kinetics/SPINE/bar REAC A B +addmsg /kinetics/SPINE/foo /kinetics/SPINE/r2 SUBSTRATE n +addmsg /kinetics/SPINE/bar /kinetics/SPINE/r2 SUBSTRATE n +addmsg /kinetics/PSD/zod /kinetics/SPINE/r2 PRODUCT n +addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/kreac /kinetics/PSD/CaM REAC A B +addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca_CaM REAC B A +addmsg /kinetics/PSD/Ca /kinetics/PSD/kreac SUBSTRATE n +addmsg /kinetics/PSD/CaM /kinetics/PSD/kreac SUBSTRATE n +addmsg /kinetics/PSD/Ca_CaM /kinetics/PSD/kreac PRODUCT n +addmsg /kinetics/SPINE/CaM_bind_CaMKII /kinetics/PSD/Ca_CaM_CaMKII REAC B A +addmsg /kinetics/SPINE/r2 /kinetics/PSD/zod REAC B A +enddump +// End of dump + +complete_loading diff --git a/examples/snippets/MULTI/x_compt.py b/examples/snippets/MULTI/x_compt.py new file mode 100644 index 0000000..1aeba1f --- /dev/null +++ b/examples/snippets/MULTI/x_compt.py @@ -0,0 +1,376 @@ +# __DEPRECATED__ __BROKEN__ +# x_compt.py --- +# Upi Bhalla, NCBS Bangalore 2013. +# +# Commentary: +# +# Testing system for loading in arbitrary multiscale models based on +# model definition files. +# This version examines cross-compartment reactions. It is based on +# minimal.py. It uses a minimal model with Ca in all 3 compartments, +# and a binding reaction of Ca to CaM (just one step) in SPINE and PSD. +# Incoming Ca from synaptic events comes to the PSD. +# The CaMKII binds CaM in the spine, and the product goes reversibly +# to the PSD. Just to be sure, another reaction involving foo, bar and zod +# is also set up to go to and from the PSD. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math + +import moose +import proto18 + +EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_K_AHP() + proto18.make_K_C() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + proto18.make_glu() + proto18.make_NMDA() + proto18.make_Ca_NMDA() + proto18.make_NMDA_Ca_conc() + proto18.make_axon() + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "hsolve" ) + return cellId + +def addPlot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/graphs/#[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name ) + for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name + '_e' ) + +def moveCompt( path, oldParent, newParent ): + meshEntries = moose.element( newParent.path + '/mesh' ) + # Set up vol messaging from new compts to all their child objects. + for x in moose.wildcardFind( path + '/##[ISA=PoolBase]' ): + moose.connect( meshEntries, 'mesh', x, 'mesh', 'OneToOne' ) + orig = moose.element( path ) + moose.move( orig, newParent ) + moose.delete( moose.vec( oldParent.path ) ) + chem = moose.element( '/model/chem' ) + moose.move( newParent, chem ) + +def loadChem( neuroCompt, spineCompt, psdCompt ): + # We need the compartments to come in with a volume of 1 to match the + # original CubeMesh. + assert( neuroCompt.volume == 1.0 ) + assert( spineCompt.volume == 1.0 ) + assert( psdCompt.volume == 1.0 ) + assert( neuroCompt.mesh.num == 1 ) + #print 'volume = ', neuroCompt.mesh[0].volume + #assert( neuroCompt.mesh[0].volume == 1.0 ) + #an unfortunate mismatch + # So we'll have to resize the volumes of the current compartments to the + # new ones. + + modelId = moose.loadModel( 'x_compt.g', '/model', 'ee' ) + chem = moose.element( '/model/model' ) + chem.name = 'chem' + oldN = moose.element( '/model/chem/compartment_1' ) + oldS = moose.element( '/model/chem/compartment_2' ) + oldP = moose.element( '/model/chem/kinetics' ) + oldN.volume = neuroCompt.mesh[0].volume + oldS.volume = spineCompt.mesh[0].volume + oldP.volume = psdCompt.mesh[0].volume + moveCompt( '/model/chem/kinetics/DEND', oldN, neuroCompt ) + moveCompt( '/model/chem/kinetics/SPINE', oldS, spineCompt ) + moveCompt( '/model/chem/kinetics/PSD', oldP, psdCompt ) + +def makeNeuroMeshModel(): + diffLength = 20e-6 # But we only want diffusion over part of the model. + numSyn = 13 + elec = loadElec() + synInput = moose.SpikeGen( '/model/elec/synInput' ) + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + synInput.refractT = 47e-3 + + for i in range( numSyn ): + name = '/model/elec/spine_head_14_' + str( i + 1 ) + r = moose.element( name + '/glu' ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 * i * ( numSyn - 1 - i ) + syn.delay = i * 1.0e-3 + + neuroCompt = moose.NeuroMesh( '/model/neuroMesh' ) + #print 'neuroMeshvolume = ', neuroCompt.mesh[0].volume + neuroCompt.separateSpines = 1 + neuroCompt.diffLength = diffLength + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/spineMesh' ) + #print 'spineMeshvolume = ', spineCompt.mesh[0].volume + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/psdMesh' ) + #print 'psdMeshvolume = ', psdCompt.mesh[0].volume + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + loadChem( neuroCompt, spineCompt, psdCompt ) + #for x in moose.wildcardFind( '/model/chem/##/Ca' ): + # x.diffConst = 1e-11 + + # Put in the solvers, see how they fare. + nmksolve = moose.GslStoich( '/model/chem/neuroMesh/ksolve' ) + nmksolve.path = '/model/chem/neuroMesh/##' + nmksolve.compartment = moose.element( '/model/chem/neuroMesh' ) + nmksolve.method = 'rk5' + nm = moose.element( '/model/chem/neuroMesh/mesh' ) + moose.connect( nm, 'remesh', nmksolve, 'remesh' ) + #print "neuron: nv=", nmksolve.numLocalVoxels, ", nav=", nmksolve.numAllVoxels, nmksolve.numVarPools, nmksolve.numAllPools + + #print 'setting up smksolve' + smksolve = moose.GslStoich( '/model/chem/spineMesh/ksolve' ) + smksolve.path = '/model/chem/spineMesh/##' + smksolve.compartment = moose.element( '/model/chem/spineMesh' ) + smksolve.method = 'rk5' + sm = moose.element( '/model/chem/spineMesh/mesh' ) + moose.connect( sm, 'remesh', smksolve, 'remesh' ) + #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools + # + #print 'setting up pmksolve' + pmksolve = moose.GslStoich( '/model/chem/psdMesh/ksolve' ) + pmksolve.path = '/model/chem/psdMesh/##' + pmksolve.compartment = moose.element( '/model/chem/psdMesh' ) + pmksolve.method = 'rk5' + pm = moose.element( '/model/chem/psdMesh/mesh' ) + moose.connect( pm, 'remesh', pmksolve, 'remesh' ) + #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools + # + #print 'neuroMeshvolume = ', neuroCompt.mesh[0].volume + + #print 'Assigning the cell model' + # Now to set up the model. + #neuroCompt.cell = elec + neuroCompt.cellPortion( elec, '/model/elec/lat_14_#,/model/elec/spine_neck#,/model/elec/spine_head#' ) + ns = neuroCompt.numSegments + #assert( ns == 11 ) # dend, 5x (shaft+head) + ndc = neuroCompt.numDiffCompts + assert( ndc == 13 ) + ndc = neuroCompt.mesh.num + assert( ndc == 13 ) + + sdc = spineCompt.mesh.num + assert( sdc == 13 ) + pdc = psdCompt.mesh.num + assert( pdc == 13 ) + #print 'mesh nums ( neuro, spine, psd ) = ', ndc, sdc, pdc, ', numSeg = ', ns + + mesh = moose.vec( '/model/chem/neuroMesh/mesh' ) + #for i in range( ndc ): + # print 's[', i, '] = ', mesh[i].volume + mesh2 = moose.vec( '/model/chem/spineMesh/mesh' ) +# for i in range( sdc ): +# print 's[', i, '] = ', mesh2[i].volume + #print 'numPSD = ', moose.element( '/model/chem/psdMesh/mesh' ).localNumField + mesh = moose.vec( '/model/chem/psdMesh/mesh' ) + #print 'psd mesh.volume = ', mesh.volume + #for i in range( pdc ): + # print 's[', i, '] = ', mesh[i].volume + # + # We need to use the spine solver as the master for the purposes of + # these calculations. This will handle the diffusion calculations + # between head and dendrite, and between head and PSD. + smksolve.addJunction( nmksolve ) + #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools + smksolve.addJunction( pmksolve ) + #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools + + # oddly, numLocalFields does not work. + #moose.le( '/model/chem/neuroMesh' ) + ca = moose.element( '/model/chem/neuroMesh/DEND/Ca' ) + assert( ca.lastDimension == ndc ) + """ + CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) + print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume + CaNspine = moose.vec( '/model/chem/spineMesh/SPINE/CaN_BULK/CaN' ) + print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume + """ + + # set up adaptors + aCa = moose.Adaptor( '/model/chem/psdMesh/adaptCa', pdc ) + adaptCa = moose.vec( '/model/chem/psdMesh/adaptCa' ) + chemCa = moose.vec( '/model/chem/psdMesh/PSD/Ca' ) + assert( len( adaptCa ) == pdc ) + assert( len( chemCa ) == pdc ) + for i in range( pdc ): + path = '/model/elec/spine_head_14_' + str( i + 1 ) + '/NMDA_Ca_conc' + elecCa = moose.element( path ) + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.000 # 100 nM offset in chem. + adaptCa.scale = 1e-5 # 520 to 0.0052 mM + #print adaptCa.outputOffset + #print adaptCa.scale + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) + addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) + addPlot( '/model/elec/basal_3', 'getVm', 'elec/basal3Vm' ) + addPlot( '/model/elec/apical_14', 'getVm', 'elec/apical_14Vm' ) + addPlot( '/model/elec/apical_14/Ca_conc', 'getCa', 'elec/apical_14Ca' ) + addPlot( '/model/elec/spine_head_14_7', 'getVm', 'elec/spine_7Vm' ) + addPlot( '/model/elec/spine_head_14_7/NMDA_Ca_conc', 'getCa', 'elec/spine_7Ca' ) + addPlot( '/model/elec/spine_head_14_13/NMDA_Ca_conc', 'getCa', 'elec/spine_13Ca' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/chem/psdMesh/PSD/Ca[0]', 'getConc', 'pCa0' ) + addPlot( '/model/chem/psdMesh/PSD/Ca[6]', 'getConc', 'pCa6' ) + addPlot( '/model/chem/psdMesh/PSD/Ca[12]', 'getConc', 'pCa12' ) + + addPlot( '/model/chem/spineMesh/SPINE/Ca[0]', 'getConc', 'sCa0' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca[6]', 'getConc', 'sCa6' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca[12]', 'getConc', 'sCa12' ) + + addPlot( '/model/chem/neuroMesh/DEND/Ca[0]', 'getConc', 'dend0Ca' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[60]', 'getConc', 'dend60Ca' ) + addPlot( '/model/chem/neuroMesh/DEND/Ca[144]', 'getConc', 'dend144Ca' ) + + addPlot( '/model/chem/psdMesh/PSD/CaM[0]', 'getConc', 'pCaM0' ) + addPlot( '/model/chem/psdMesh/PSD/CaM[6]', 'getConc', 'pCaM6' ) + addPlot( '/model/chem/psdMesh/PSD/CaM[12]', 'getConc', 'pCaM12' ) + + addPlot( '/model/chem/spineMesh/SPINE/CaM[0]', 'getConc', 'sCaM0' ) + addPlot( '/model/chem/spineMesh/SPINE/CaM[6]', 'getConc', 'sCaM6' ) + addPlot( '/model/chem/spineMesh/SPINE/CaM[12]', 'getConc', 'sCaM12' ) + + addPlot( '/model/chem/spineMesh/SPINE/CaMKII[6]', 'getConc', 'sCaMKII6' ) + + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[0]', 'getConc', 'pCaCaM0' ) + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[6]', 'getConc', 'pCaCaM6' ) + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[12]', 'getConc', 'pCaCaM12' ) + + addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[0]', 'getConc', 'sCaCaM0' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[6]', 'getConc', 'sCaCaM6' ) + addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[12]', 'getConc', 'sCaCaM12' ) + addPlot( '/model/chem/psdMesh/PSD/Ca_CaM_CaMKII[6]', 'getConc', 'pCaCaMCaMKII6' ) + + addPlot( '/model/chem/psdMesh/PSD/zod[6]', 'getConc', 'zod6' ) + + addPlot( '/model/chem/spineMesh/SPINE/foo[6]', 'getConc', 'foo6' ) + addPlot( '/model/chem/spineMesh/SPINE/bar[6]', 'getConc', 'bar6' ) + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 1e-4 + plotDt = 5e-4 + plotName = 'x_compt.plot' + + makeNeuroMeshModel() + """ + for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): + if ( i[0].diffConst > 0 ): + grandpaname = i.parent[0].parent.name + '/' + paname = i.parent[0].name + '/' + print grandpaname + paname + i[0].name, i[0].diffConst + """ + """ + moose.le( '/model/chem/spineMesh/ksolve' ) + print 'Neighbors:' + for t in moose.element( '/model/chem/spineMesh/ksolve/junction' ).neighbors['masterJunction']: + print 'masterJunction <-', t.path + for t in moose.wildcardFind( '/model/chem/#Mesh/ksolve' ): + k = moose.element( t[0] ) + print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels + """ + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + moose.useClock( 5, '/model/chem/#Mesh/ksolve', 'init' ) + moose.useClock( 6, '/model/chem/#Mesh/ksolve', 'process' ) + hsolve = moose.HSolve( '/model/elec/hsolve' ) + moose.useClock( 1, '/model/elec/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + moose.reinit() + moose.reinit() + """ + print 'pre' + eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'dend' + eca = moose.vec( '/model/chem/neuroMesh/DEND/Ca' ) + for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): + print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + + print 'PSD' + eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + print 'spine' + eca = moose.vec( '/model/chem/spineMesh/SPINE/CaM/Ca' ) + for i in range( 3 ): + print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume + """ + + moose.start( 0.5 ) + dumpPlots( plotName ) + print 'All done' + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# loadMulti.py ends here. diff --git a/examples/snippets/Osc.cspace b/examples/snippets/Osc.cspace new file mode 100644 index 0000000..5972533 --- /dev/null +++ b/examples/snippets/Osc.cspace @@ -0,0 +1 @@ +|AabX|DabX|Jbca|AdeX|DdeX|Jefd|AadX|AbeX| 3.5 0 0.1 0 0 0.1 0.01 0 0.5 1 1 0.05 0.01 0 0.5 1 1 0.05 0.01 0 0 0.005 diff --git a/examples/snippets/RandSpikeStats.py b/examples/snippets/RandSpikeStats.py new file mode 100644 index 0000000..cea9c03 --- /dev/null +++ b/examples/snippets/RandSpikeStats.py @@ -0,0 +1,105 @@ +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ +# This snippet shows the use of several objects. +# This snippet sets up a StimulusTable to control a RandSpike which +# sends its outputs to two places: to a SimpleSynHandler on an IntFire, +# which is used to monitor spike arrival, and to various Stats objects. +# I record and plot each of these. +# The StimulusTable has a sine-wave waveform +# +import numpy +import pylab +import moose + +dt = 0.01 +runtime = 100 +def make_model(): + sinePeriod = 50 + maxFiringRate = 10 + refractT = 0.05 + + for i in range( 20 ): + moose.setClock( i, dt ) + + ############### Create objects ############### + stim = moose.StimulusTable( 'stim' ) + spike = moose.RandSpike( 'spike' ) + syn = moose.SimpleSynHandler( 'syn' ) + fire = moose.IntFire( 'fire' ) + stats1 = moose.SpikeStats( 'stats1' ) + stats2 = moose.Stats( 'stats2' ) + plots = moose.Table( 'plots' ) + plot1 = moose.Table( 'plot1' ) + plot2 = moose.Table( 'plot2' ) + plotf = moose.Table( 'plotf' ) + + ############### Set up parameters ############### + stim.vector = [ maxFiringRate * + numpy.sin(x * 2 * numpy.pi / sinePeriod) + for x in range( sinePeriod )] + stim.startTime = 0 + stim.stopTime = sinePeriod + stim.loopTime = sinePeriod + stim.stepSize = 0 + stim.stepPosition = 0 + stim.doLoop = 1 + + spike.refractT = refractT + syn.synapse.num = 1 + syn.synapse[0].weight = 1 + syn.synapse[0].delay = 0 + + fire.thresh = 100 # Don't want it to spike, just to integrate + fire.tau = 1.0 / maxFiringRate + + stats1.windowLength = int( 1/dt ) + stats2.windowLength = int( 1/dt ) + + ############### Connect up circuit ############### + moose.connect( stim, 'output', spike, 'setRate' ) + moose.connect( spike, 'spikeOut', syn.synapse[0], 'addSpike' ) + moose.connect( spike, 'spikeOut', stats1, 'addSpike' ) + moose.connect( syn, 'activationOut', fire, 'activation' ) + moose.connect( stats2, 'requestOut', fire, 'getVm' ) + moose.connect( plots, 'requestOut', stim, 'getOutputValue' ) + moose.connect( plot1, 'requestOut', stats1, 'getWmean' ) + moose.connect( plot2, 'requestOut', stats2, 'getWmean' ) + moose.connect( plotf, 'requestOut', fire, 'getVm' ) + +def main(): + make_model() + + ''' + moose.useClock( 0, '/stim', 'process' ) + moose.useClock( 1, '/spike', 'process' ) + moose.useClock( 2, '/syn', 'process' ) + moose.useClock( 3, '/fire', 'process' ) + moose.useClock( 4, '/stats#', 'process' ) + moose.useClock( 8, '/plot#', 'process' ) + for i in range (10): + moose.setClock( i, dt ) + moose.useClock( 8, '/plot#', 'process' ) + ''' + moose.reinit() + moose.start( runtime ) + plots = moose.element( '/plots' ) + plot1 = moose.element( '/plot1' ) + plot2 = moose.element( '/plot2' ) + plotf = moose.element( '/plotf' ) + t = [i * dt for i in range( plot1.vector.size )] + pylab.plot( t, plots.vector, label='stimulus' ) + pylab.plot( t, plot1.vector, label='spike rate mean' ) + pylab.plot( t, plot2.vector, label='Vm mean' ) + pylab.plot( t, plotf.vector, label='Vm' ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/STDP.py b/examples/snippets/STDP.py new file mode 100644 index 0000000..dec9be8 --- /dev/null +++ b/examples/snippets/STDP.py @@ -0,0 +1,230 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +##### Author: Aditya Gilra, NCBS, Bangalore, October, 2014. +##### Fixed numpy imports and global variables: Subhasis Ray, Fri Jul 10 19:34:53 IST 2015 + + +''' +Connect two cells via a plastic synapse (STDPSynHandler). +Induce spikes spearated by varying intervals, in the pre and post synaptic cells. +Plot the synaptic weight change for different intervals between the spike-pairs. +This ia a pseudo-STDP protocol and we get the STDP rule. +''' + +import moose +import matplotlib.pyplot as plt +from numpy import arange, array + +# ########################################### +# Neuron models +# ########################################### + +## Leaky integrate and fire neuron +Vrest = -65e-3 # V # resting potential +Vt_base = -45e-3 # V # threshold +Vreset = -55e-3 # V # in current steps, Vreset is same as pedestal +R = 1e8 # Ohm +tau = 10e-3 # s +refrT = 2e-3 # s +network = None +syn = None +Vms = None +weight = 0.0 +spikes = None +dt = 1e-6 + +def setupModel(): + ''' + Set up two LIF neurons and connect them by an STDPSynHandler. + Set up some tables, and reinit MOOSE before simulation. + ''' + global network, syn, Vms, weight, spikes, dt + # ########################################### + # Initialize neuron group + # ########################################### + + ## two neurons: index 0 will be presynaptic, 1 will be postsynaptic + network = moose.LIF( 'network', 2 ); + moose.le( '/network' ) + network.vec.Em = Vrest + network.vec.thresh = Vt_base + network.vec.refractoryPeriod = refrT + network.vec.Rm = R + network.vec.vReset = Vreset + network.vec.Cm = tau/R + network.vec.inject = 0. + network.vec.initVm = Vrest + + # ########################################### + # Synaptic model: STDP at each pre and post spike + # ########################################### + + # Values approx from figure in Scholarpedia article (following Bi and Poo 1998): + # Jesper Sjoestroem and Wulfram Gerstner (2010) Spike-timing dependent plasticity. + # Scholarpedia, 5(2):1362., revision #137369 + tauPlus = 10e-3 # s # Apre time constant + tauMinus = 10e-3 # s # Apost time constant + aPlus0 = 1.0 # at pre, Apre += Apre0 + aMinus0 = 0.25 # at post, Apost += Apost0 + weight = 5e-3 # V # delta function synapse, adds to Vm + + syn = moose.STDPSynHandler( '/network/syn' ) + syn.numSynapses = 1 # 1 synapse + # many pre-synaptic inputs can connect to a synapse + # synapse onto postsynaptic neuron + moose.connect( syn, 'activationOut', network.vec[1], 'activation' ) + + # synapse from presynaptic neuron + moose.connect( network.vec[0],'spikeOut', syn.synapse[0], 'addSpike') + + # post-synaptic spikes also needed for STDP + moose.connect( network.vec[1], 'spikeOut', syn, 'addPostSpike') + + syn.synapse[0].delay = 0.0 + syn.synapse[0].weight = weight # V + syn.aPlus0 = aPlus0*weight # on every pre-spike, aPlus gets this jump + # aMinus0 includes learning rate + # on every pre-spike, aMinus is added to weight + syn.tauPlus = tauPlus + syn.aMinus0 = -aMinus0*weight # on every post-spike, aMinus gets this jump + # aMinus0 includes learning rate + # on every post-spike, aPlus is added to weight + syn.tauMinus = tauMinus + syn.weightMax = 2*weight # bounds on the weight + syn.weightMin = 0. + + # ########################################### + # Setting up tables + # ########################################### + + Vms = moose.Table( '/plotVms', 2 ) + moose.connect( network, 'VmOut', Vms, 'input', 'OneToOne') + spikes = moose.Table( '/plotSpikes', 2 ) + moose.connect( network, 'spikeOut', spikes, 'input', 'OneToOne') + + # ########################################### + # Simulate the STDP curve with spaced pre-post spike pairs + # ########################################### + + dt = 0.5e-5 # s + # moose simulation + moose.useClock( 0, '/network/syn', 'process' ) + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/plotSpikes', 'process' ) + moose.useClock( 3, '/plotVms', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + moose.setClock( 9, dt ) + moose.reinit() + + +# function to make the aPlus and aMinus settle to equilibrium values +def reset_settle(): + """ Call this between every pre-post pair + to reset the neurons and make them settle to rest. + """ + settletime = 100e-3 # s + syn.synapse[0].weight = weight # V + moose.start(settletime) + +# function to inject a sharp current pulse to make neuron spike +# immediately at a given time step +def make_neuron_spike(nrnidx,I=1e-7,duration=1e-3): + """ Inject a brief current pulse to + make a neuron spike + """ + network.vec[nrnidx].inject = I + moose.start(duration) + network.vec[nrnidx].inject = 0. + +def main(): + ''' + On the command-line, in moose-examples/snippets directory, run ``python STDP.py`` + ''' + setupModel() + dwlist_neg = [] + ddt = 2e-3 # s + t_extent = 20e-3 # s + # dt = tpost - tpre + # negative dt corresponds to post before pre + print '-----------------------------------------------' + for deltat in arange(t_extent,0.0,-ddt): + reset_settle() + # post neuron spike + make_neuron_spike(1) + moose.start(deltat) + # pre neuron spike after deltat + make_neuron_spike(0) + moose.start(1e-3) + dw = ( syn.synapse[0].weight - weight ) / weight + print 'post before pre, dt = %1.3f s, dw/w = %1.3f'%(-deltat,dw) + dwlist_neg.append(dw) + print '-----------------------------------------------' + # positive dt corresponds to pre before post + dwlist_pos = [] + for deltat in arange(ddt,t_extent+ddt,ddt): + reset_settle() + # pre neuron spike + make_neuron_spike(0) + moose.start(deltat) + # post neuron spike after deltat + make_neuron_spike(1) + moose.start(1e-3) + dw = ( syn.synapse[0].weight - weight ) / weight + print 'pre before post, dt = %1.3f s, dw/w = %1.3f'%(deltat,dw) + dwlist_pos.append(dw) + print '-----------------------------------------------' + + # ########################################### + # Plot the simulated Vm-s and STDP curve + # ########################################### + + # insert spikes so that Vm reset doesn't look weird + Vmseries0 = list(Vms.vec[0].vector) + numsteps = len(Vmseries0) + for t in spikes.vec[0].vector: + Vmseries0[int(t/dt)-1] = 30e-3 # V + Vmseries1 = list(Vms.vec[1].vector) + for t in spikes.vec[1].vector: + Vmseries1[int(t/dt)-1] = 30e-3 # V + + # Voltage plots + plt.figure(facecolor='w') + timeseries = arange(0.,1000*numsteps*dt,dt*1000) + plt.plot(timeseries,Vmseries0,color='r') # pre neuron's vm + plt.plot(timeseries,Vmseries1,color='b') # post neuron's vm + plt.xlabel('time (ms)') + plt.ylabel('Vm (V)') + plt.title("pre (r) and post (b) neurons' Vm") + + # STDP curve + fig = plt.figure(facecolor='w') + ax = fig.add_subplot(111) + ax.plot(arange(-t_extent,0,ddt)*1000,array(dwlist_neg),'.-r') + ax.plot(arange(ddt,(t_extent+ddt),ddt)*1000,array(dwlist_pos),'.-b') + xmin,xmax = ax.get_xlim() + ymin,ymax = ax.get_ylim() + ax.set_xticks([xmin,0,xmax]) + ax.set_yticks([ymin,0,ymax]) + ax.plot((0,0),(ymin,ymax),linestyle='dashed',color='k') + ax.plot((xmin,xmax),(0,0),linestyle='dashed',color='k') + ax.set_xlabel('$t_{post}-t_{pre}$ (ms)') + ax.set_ylabel('$\Delta w / w$') + fig.tight_layout() + #fig.subplots_adjust(hspace=0.3,wspace=0.5) # has to be after tight_layout() + + plt.show() + +# Run below if script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/analogStimTable.py b/examples/snippets/analogStimTable.py new file mode 100644 index 0000000..bda8dfb --- /dev/null +++ b/examples/snippets/analogStimTable.py @@ -0,0 +1,92 @@ +# analogStimTable.py --- +# +# Filename: analogStimTable.py +# Description: +# Author: Upi Bhalla +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +import numpy as np +import pylab +import moose +from moose import utils + +def analogStimTable(): + """Example of using a StimulusTable as an analog signal source in + a reaction system. It could be used similarly to give other + analog inputs to a model, such as a current or voltage clamp signal. + + This demo creates a StimulusTable and assigns it half a sine wave. + Then we assign the start time and period over which to emit the wave. + The output of the StimTable is sent to a pool **a**, which participates + in a trivial reaction:: + + table ----> a <===> b + + The output of **a** and **b** are recorded in a regular table + for plotting. + """ + simtime = 150 + simdt = 0.1 + model = moose.Neutral('/model') + data = moose.Neutral('/data') + # This is the stimulus generator + stimtable = moose.StimulusTable('/model/stim') + a = moose.BufPool( '/model/a' ) + b = moose.Pool( '/model/b' ) + reac = moose.Reac( '/model/reac' ) + reac.Kf = 0.1 + reac.Kb = 0.1 + moose.connect( stimtable, 'output', a, 'setConcInit' ) + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + aPlot = moose.Table('/data/aPlot') + moose.connect(aPlot, 'requestOut', a, 'getConc') + bPlot = moose.Table('/data/bPlot') + moose.connect(bPlot, 'requestOut', b, 'getConc') + moose.setClock( stimtable.tick, simdt ) + moose.setClock( a.tick, simdt ) + moose.setClock( aPlot.tick, simdt ) + + #################################################### + # Here we set up the stimulus table. It is half a sine-wave. + stim = [ np.sin(0.01 * float(i) ) for i in range( 314 )] + stimtable.vector = stim + stimtable.stepSize = 0 # This forces use of current time as x value + + # The table will interpolate its contents over the time start to stop: + # At values less than startTime, it emits the first value in table + stimtable.startTime = 5 + # At values more than stopTime, it emits the last value in table + stimtable.stopTime = 60 + stimtable.doLoop = 1 # Enable repeat playbacks. + stimtable.loopTime = 10 + simtime / 2.0 # Repeat playback over this time + + moose.reinit() + moose.start(simtime) + t = [ x * simdt for x in range( len( aPlot.vector ) )] + pylab.plot( t, aPlot.vector, label='Stimulus waveform' ) + pylab.plot( t, bPlot.vector, label='Reaction product b' ) + pylab.legend() + pylab.show() + +if __name__ == '__main__': + analogStimTable() + + +# +# stimtable.py ends here diff --git a/examples/snippets/barrionuevo_cell1zr.CNG.swc b/examples/snippets/barrionuevo_cell1zr.CNG.swc new file mode 100644 index 0000000..1a48b8f --- /dev/null +++ b/examples/snippets/barrionuevo_cell1zr.CNG.swc @@ -0,0 +1,2267 @@ +# Original file cell1zr.txt.swc edited by Duncan Donohue using StdSwc version 1.21 on 5/25/05. +# Irregularities and fixes documented in cell1zr.txt.swc.std. See StdSwc1.21.doc for more information. +# +# Amaral to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu +# Original fileName:H:\\cells\\ca3\\henze\\cell1zr.txt +# +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 -1.135 21 1.692 6.603 -1 + 2 2 0 0 0 0.9 1 + 3 2 -1.5 0 -2 0.9 2 + 4 2 -2.5 -6.5 -2 0.9 3 + 5 2 -7.5 -10.5 0 0.9 4 + 6 2 -10 -14 -7 0.9 5 + 7 2 -10 -18.5 -13.5 0.9 6 + 8 2 -10.5 -22 -17 0.9 7 + 9 2 -9 -26 -18 0.9 8 + 10 2 -7.5 -29.5 -19 0.3 9 + 11 2 -6.5 -36.5 -13.5 0.3 10 + 12 2 -5.5 -44.5 -14.5 0.3 11 + 13 2 -8 -50.5 -14.5 0.3 12 + 14 2 -9.5 -54 -17 0.3 13 + 15 2 -8.5 -60 -18 0.3 14 + 16 2 -9.5 -67 -18 0.3 15 + 17 2 -9 -77.5 -19 0.3 16 + 18 2 -8 -86.5 -20 0.3 17 + 19 2 -5.5 -93 -20 0.3 18 + 20 2 -6.5 -100 -19 0.3 19 + 21 2 -6 -106 -19 0.3 20 + 22 2 -7.5 -110.5 -19 0.3 21 + 23 2 -7.5 -116 -19 0.3 22 + 24 2 -8 -118.5 -19 0.3 23 + 25 2 -9.5 -125 -22 0.3 24 + 26 2 -11.5 -129.5 -22 0.3 25 + 27 2 -16.5 -133.5 -22 0.3 26 + 28 2 -20 -138 -30.5 0.3 27 + 29 2 -21 -142 -30.5 0.3 28 + 30 2 -20 -144 -30.5 0.3 29 + 31 2 -21 -148.5 -29.5 0.3 30 + 32 2 -22 -151 -29.5 0.2 31 + 33 2 -21 -155.5 -29.5 0.2 32 + 34 2 -19.5 -160 -28.5 0.2 33 + 35 2 -5.5 -124.5 -19 0.3 24 + 36 2 -4 -130 -19 0.3 35 + 37 2 -2.5 -135 -20 0.3 36 + 38 2 -4 -140 -20 0.3 37 + 39 2 -4 -143.5 -20 0.3 38 + 40 2 3 -151 -15.5 0.3 39 + 41 2 8.5 -157 -10.5 0.3 40 + 42 2 11.5 -162 -10.5 0.3 41 + 43 2 15.5 -165 -10.5 0.3 42 + 44 2 20 -164.5 -9.5 0.2 43 + 45 2 -4 -36 -10.5 0.55 9 + 46 2 -2.5 -41 -10.5 0.55 45 + 47 2 3.5 -44 -10.5 0.55 46 + 48 2 6.5 -47.5 -10.5 0.55 47 + 49 2 10.5 -49.5 -9.5 0.55 48 + 50 2 13 -55 -15.5 0.55 49 + 51 2 16 -60 -15.5 0.4 50 + 52 2 22 -63 -19 0.4 51 + 53 2 28 -67.5 -19 0.4 52 + 54 2 40 -69.5 -18 0.4 53 + 55 2 48 -69 -18 0.4 54 + 56 2 57 -69.5 -17 0.4 55 + 57 2 68 -69.5 -12.5 0.4 56 + 58 2 73 -71 -12.5 0.4 57 + 59 2 79.5 -74.5 -12.5 0.4 58 + 60 2 84.5 -76 -12.5 0.4 59 + 61 2 86.5 -77 -12.5 0.4 60 + 62 2 87.5 -80.5 -11.5 0.4 61 + 63 2 91 -82.5 -11.5 0.4 62 + 64 2 94.5 -85 -6 0.4 63 + 65 2 99.5 -90 -5 0.4 64 + 66 2 104 -93 0 0.4 65 + 67 2 105.5 -96.5 3.5 0.3 66 + 68 2 106.5 -102 6.5 0.3 67 + 69 2 108.5 -107.5 13 0.3 68 + 70 2 108.5 -113 18 0.3 69 + 71 2 111.5 -115.5 22.5 0.3 70 + 72 2 115.5 -123 28.5 0.3 71 + 73 2 122 -128 36 0.3 72 + 74 2 123.5 -132.5 38.5 0.3 73 + 75 2 134.5 -139 38.5 0.3 74 + 76 2 138 -141.5 46.5 0.3 75 + 77 2 142 -143 46.5 0.3 76 + 78 2 148.5 -148 52 0.3 77 + 79 2 153.5 -148.5 50 0.3 78 + 80 2 158 -150 56.5 0.3 79 + 81 2 162 -151 59.5 0.3 80 + 82 2 167 -152 61.5 0.3 81 + 83 2 171 -151.5 61.5 0.3 82 + 84 2 176 -153 63.5 0.3 83 + 85 2 182 -155 64.5 0.3 84 + 86 2 184.5 -154 66 0.3 85 + 87 2 192.5 -156.5 64.5 0.3 86 + 88 2 193 -157 63.5 0.3 87 + 89 2 197 -155 62.5 0.3 88 + 90 2 205.5 -156 69 0.3 89 + 91 2 211 -157.5 70 0.3 90 + 92 2 213.5 -156.5 70 0.3 91 + 93 2 218 -158 75.5 0.3 92 + 94 2 223.5 -159.5 74 0.3 93 + 95 2 229.5 -161 73 0.3 94 + 96 2 236 -161 74 0.3 95 + 97 2 244 -160 75.5 0.3 96 + 98 2 254 -159 79.5 0.3 97 + 99 2 262.5 -158.5 79.5 0.3 98 + 100 2 271.5 -160.5 82.5 0.3 99 + 101 2 278 -159.5 85 0.3 100 + 102 2 285 -157 89 0.3 101 + 103 2 290.5 -154 89 0.3 102 + 104 2 298.5 -153 90 0.3 103 + 105 2 303 -151.5 90 0.3 104 + 106 2 309.5 -149 90 0.3 105 + 107 2 318.5 -151.5 95.5 0.3 106 + 108 2 323 -150.5 97.5 0.3 107 + 109 2 329 -146 100.5 0.3 108 + 110 2 334 -147.5 104 0.3 109 + 111 2 340.5 -147.5 108 0.3 110 + 112 2 346 -146.5 111.5 0.3 111 + 113 2 351.5 -145.5 114.5 0.3 112 + 114 2 356 -147.5 116.5 0.3 113 + 115 2 356 -147.5 115.5 0.3 114 + 116 2 89.5 -77.5 -23 0.2 61 + 117 2 93 -75 -33.5 0.2 116 + 118 2 97.5 -69.5 -39 0.2 117 + 119 2 98.5 -67 -49.5 0.2 118 + 120 2 102 -62 -49.5 0.2 119 + 121 2 104.5 -56 -57 0.2 120 + 122 2 109 -53 -61 0.2 121 + 123 2 115 -52 -70.5 0.2 122 + 124 2 114.5 -46 -82.5 0.2 123 + 125 2 116 -43 -100.5 0.2 124 + 126 2 120 -37 -112 0.2 125 + 127 2 127 -33 -129 0.2 126 + 128 2 138.5 -32.5 -131 0.2 127 + 129 2 148 -29.5 -148 0.2 128 + 130 2 157.5 -26.5 -156.5 0.2 129 + 131 2 166 -22.5 -160.5 0.2 130 + 132 2 173 -17 -163 0.2 131 + 133 2 181 -18 -174.5 0.2 132 + 134 2 189 -20.5 -178.5 0.2 133 + 135 2 202 -20 -183 0.2 134 + 136 2 205.5 -15.5 -191.5 0.2 135 + 137 2 211 -11 -194.5 0.2 136 + 138 2 223 -8 -196.5 0.2 137 + 139 2 229.5 -4 -209.5 0.2 138 + 140 2 234 4 -206 0.2 139 + 141 2 238 8.5 -207 0.2 140 + 142 2 237.5 13 -209.5 0.2 141 + 143 2 242.5 16 -212.5 0.2 142 + 144 2 246.5 17 -220 0.2 143 + 145 2 249.5 21.5 -212.5 0.2 144 + 146 2 253.5 27.5 -219 0.2 145 + 147 2 256 31 -223 0.2 146 + 148 2 263 37.5 -217 0.2 147 + 149 2 268 42 -215.5 0.2 148 + 150 2 273.5 45.5 -214.5 0.2 149 + 151 2 276.5 49.5 -224 0.2 150 + 152 2 280.5 51.5 -229.5 0.2 151 + 153 2 288 58 -233.5 0.2 152 + 154 2 289.5 61 -238 0.2 153 + 155 2 294 62.5 -237 0.2 154 + 156 2 298.5 64 -241 0.2 155 + 157 2 305.5 69 -248.5 0.2 156 + 158 2 306.5 71.5 -246.5 0.2 157 + 159 2 310 73.5 -246.5 0.2 158 + 160 2 317 82 -247.5 0.2 159 + 161 2 322 85 -247.5 0.2 160 + 162 2 331 88 -263.5 0.2 161 + 163 2 332 92 -263.5 0.2 162 + 164 2 338 95 -263.5 0.2 163 + 165 2 342.5 98 -263.5 0.2 164 + 166 2 346 96 -256 0.2 165 + 167 2 349.5 99.5 -256 0.2 166 + 168 2 353.5 102 -269.5 0.2 167 + 169 2 360 104 -275 0.2 168 + 170 2 361.5 108.5 -275 0.2 169 + 171 2 367 109.5 -275 0.2 170 + 172 2 367.5 112.5 -275 0.2 171 + 173 2 375.5 110.5 -279 0.2 172 + 174 2 380 111.5 -279 0.2 173 + 175 2 382.5 115 -280 0.2 174 + 176 2 386.5 114.5 -280 0.2 175 + 177 2 340 103.5 -259 0.2 165 + 178 2 338 106.5 -262.5 0.2 177 + 179 2 337 109.5 -264.5 0.2 178 + 180 2 334.5 113.5 -266.5 0.2 179 + 181 2 333.5 118.5 -259 0.2 180 + 182 2 333.5 123.5 -255 0.2 181 + 183 2 332 130 -255 0.2 182 + 184 2 333 138 -254 0.2 183 + 185 2 334 149 -248.5 0.2 184 + 186 2 338 160.5 -240 0.2 185 + 187 2 340.5 168 -237 0.2 186 + 188 2 345 174.5 -229.5 0.2 187 + 189 2 346 181 -223 0.2 188 + 190 2 346 188.5 -218 0.2 189 + 191 2 347 192 -213.5 0.2 190 + 192 2 353.5 199.5 -209.5 0.2 191 + 193 2 355 206 -207 0.2 192 + 194 2 357 211.5 -205 0.2 193 + 195 2 359 217 -195.5 0.2 194 + 196 2 359.5 218 -195.5 0.2 195 + 197 2 361 225 -195.5 0.2 196 + 198 2 364 234 -195.5 0.2 197 + 199 2 369.5 248 -185 0.2 198 + 200 2 370.5 258 -174.5 0.2 199 + 201 2 372.5 265.5 -171.5 0.2 200 + 202 2 374.5 274.5 -164 0.2 201 + 203 2 375.5 286 -143.5 0.2 202 + 204 2 374.5 295 -130 0.2 203 + 205 2 377.5 303 -129 0.2 204 + 206 2 384.5 314 -128 0.2 205 + 207 2 392 327 -123.5 0.2 206 + 208 2 395 336 -118.5 0.2 207 + 209 2 396 341 -114 0.2 208 + 210 2 399 349 -113 0.2 209 + 211 2 403.5 358 -111 0.2 210 + 212 2 408.5 367 -108 0.2 211 + 213 2 414 372 -111 0.2 212 + 214 2 427 387 -127 0.2 213 + 215 2 429 389 -126 0.2 214 + 216 2 341.5 110.5 -261 0.2 179 + 217 2 345 117 -260 0.2 216 + 218 2 347.5 126.5 -257 0.2 217 + 219 2 349 133 -257 0.2 218 + 220 2 351 145 -265.5 0.2 219 + 221 2 353 150 -267.5 0.2 220 + 222 2 350.5 150.5 -272 0.2 221 + 223 2 359 158 -273 0.2 222 + 224 2 362 167.5 -278 0.2 223 + 225 2 363 175.5 -279 0.2 224 + 226 2 363.5 180 -275 0.2 225 + 227 2 366.5 188.5 -274 0.2 226 + 228 2 366 197.5 -274 0.2 227 + 229 2 376 196 -278 0.2 228 + 230 2 389.5 199 -260 0.2 229 + 231 2 405 208.5 -260 0.2 230 + 232 2 420.5 210 -255 0.2 231 + 233 2 427.5 204 -229.5 0.2 232 + 234 2 430.5 202 -232.5 0.2 233 + 235 2 345.5 157 -267.5 0.2 222 + 236 4 -0.5 41.5 -9.5 3.9 1 + 237 4 -0.5 49.5 -8.5 3.6 236 + 238 4 -1.5 55 -6 3.65 237 + 239 4 -0.5 59.5 -11.5 3.65 238 + 240 4 -2 65.5 -11.5 2.45 239 + 241 4 -4 69.5 -11.5 3.2 240 + 242 4 -8.5 71.5 -10.5 1.8 241 + 243 4 -12 75 -8.5 1.6 242 + 244 4 -14.5 76.5 -8.5 1.6 243 + 245 4 -15 80 -8.5 1.6 244 + 246 4 -17 84.5 -8.5 1.3 245 + 247 4 -19 86.5 -8.5 1.3 246 + 248 4 -21 89.5 -4 1.3 247 + 249 4 -22.5 93.5 -3 1.3 248 + 250 4 -24.5 98.5 -4 1.3 249 + 251 4 -25.5 102.5 0 1.3 250 + 252 4 -26.5 105.5 3.5 1.3 251 + 253 4 -27 109 4.5 1.3 252 + 254 4 -27.5 112 5.5 1.2 253 + 255 4 -29.5 116 5.5 1.2 254 + 256 4 -29.5 117 5.5 1.2 255 + 257 4 -33 118 2.5 0.65 256 + 258 4 -37 119.5 6.5 0.6 257 + 259 4 -39.5 120 6.5 0.6 258 + 260 4 -42 122 4.5 0.6 259 + 261 4 -45 123.5 5.5 0.6 260 + 262 4 -47 125.5 5.5 0.6 261 + 263 4 -49.5 125.5 7.5 0.45 262 + 264 4 -54 127 8.5 0.45 263 + 265 4 -57.5 128.5 8.5 0.45 264 + 266 4 -60 129 12 0.45 265 + 267 4 -63 131 14 0.45 266 + 268 4 -63.5 132 15 0.45 267 + 269 4 -66.5 131.5 21.5 0.4 268 + 270 4 -68.5 130 23.5 0.4 269 + 271 4 -71 129 28.5 0.4 270 + 272 4 -72 130 28.5 0.3 271 + 273 4 -73.5 130.5 28.5 0.3 272 + 274 4 -73.5 132 27.5 0.3 273 + 275 4 -75.5 131.5 33 0.3 274 + 276 4 -77 132 34 0.3 275 + 277 4 -78 132.5 36 0.3 276 + 278 4 -79.5 132.5 39.5 0.3 277 + 279 4 -81.5 133.5 43.5 0.3 278 + 280 4 -84.5 133.5 40.5 0.3 279 + 281 4 -86.5 134 43.5 0.3 280 + 282 4 -88.5 134.5 41.5 0.3 281 + 283 4 -91 132.5 40.5 0.2 282 + 284 4 -91 132.5 41.5 0.2 283 + 285 4 -66 133.5 17 0.4 268 + 286 4 -68.5 134.5 17 0.4 285 + 287 4 -70.5 137 15 0.4 286 + 288 4 -71 139.5 14 0.4 287 + 289 4 -72.5 141 13 0.4 288 + 290 4 -73.5 144.5 12 0.4 289 + 291 4 -74 147 14 0.3 290 + 292 4 -76 151 15 0.3 291 + 293 4 -75 153 16 0.3 292 + 294 4 -77 156.5 17 0.3 293 + 295 4 -78.5 160 15 0.3 294 + 296 4 -79 162.5 14 0.3 295 + 297 4 -81 164.5 14 0.3 296 + 298 4 -82.5 166.5 19 0.3 297 + 299 4 -84 171 17 0.2 298 + 300 4 -86 174 20.5 0.2 299 + 301 4 -90 177 20.5 0.2 300 + 302 4 -89.5 180 20.5 0.2 301 + 303 4 -91 182 20.5 0.2 302 + 304 4 -92.5 185 18 0.2 303 + 305 4 -93.5 187.5 18 0.2 304 + 306 4 -95 193 21.5 0.2 305 + 307 4 -95 193 22.5 0.2 306 + 308 4 -29.5 118 8.5 0.85 256 + 309 4 -31.5 120.5 7.5 0.85 308 + 310 4 -33 124 18 0.85 309 + 311 4 -35 129.5 20.5 0.85 310 + 312 4 -36.5 134 20.5 0.85 311 + 313 4 -36.5 134 21.5 0.85 312 + 314 4 -38 135 21.5 0.55 313 + 315 4 -41 137 30 0.55 314 + 316 4 -42.5 139 28.5 0.55 315 + 317 4 -44 139.5 34 0.55 316 + 318 4 -45 140.5 36 0.45 317 + 319 4 -44.5 142.5 36 0.45 318 + 320 4 -43.5 145 36 0.45 319 + 321 4 -43.5 146 37 0.4 320 + 322 4 -42 150.5 39.5 0.4 321 + 323 4 -40.5 152.5 39.5 0.4 322 + 324 4 -41 156 43.5 0.4 323 + 325 4 -40.5 157 43.5 0.4 324 + 326 4 -38.5 160 48 0.4 325 + 327 4 -38 162.5 54 0.4 326 + 328 4 -41 163.5 54 0.4 327 + 329 4 -44.5 164.5 60.5 0.4 328 + 330 4 -45.5 167 60.5 0.3 329 + 331 4 -48 166.5 59.5 0.3 330 + 332 4 -50 165 61.5 0.3 331 + 333 4 -49.5 167.5 68 0.3 332 + 334 4 -52 170 67 0.3 333 + 335 4 -53.5 171.5 70 0.3 334 + 336 4 -54 176.5 73 0.3 335 + 337 4 -56 177.5 75.5 0.3 336 + 338 4 -58 178.5 79.5 0.3 337 + 339 4 -57.5 181.5 81.5 0.3 338 + 340 4 -57 182.5 80.5 0.3 339 + 341 4 -59.5 183.5 86 0.3 340 + 342 4 -58.5 186 88 0.3 341 + 343 4 -58 188 88 0.3 342 + 344 4 -58.5 188.5 86 0.2 343 + 345 4 -60 190 90 0.2 344 + 346 4 -58.5 192.5 91 0.15 345 + 347 4 -38 165 50 0.3 327 + 348 4 -37.5 167 55 0.3 347 + 349 4 -39.5 172 59.5 0.3 348 + 350 4 -38 174 63.5 0.3 349 + 351 4 -38 176 64.5 0.3 350 + 352 4 -38 177.5 68 0.3 351 + 353 4 -37 181 68 0.3 352 + 354 4 -38.5 181.5 69 0.3 353 + 355 4 -40 183 73 0.3 354 + 356 4 -40 185 76.5 0.3 355 + 357 4 -40.5 187.5 80.5 0.3 356 + 358 4 -40 189 85 0.3 357 + 359 4 -38 191 89 0.3 358 + 360 4 -37 192.5 89 0.3 359 + 361 4 -39 140 20.5 0.65 313 + 362 4 -39 143.5 19 0.65 361 + 363 4 -39.5 146.5 18 0.65 362 + 364 4 -41 151 18 0.65 363 + 365 4 -42 155.5 17 0.65 364 + 366 4 -42.5 158 22.5 0.65 365 + 367 4 -43.5 161.5 22.5 0.65 366 + 368 4 -44 164 23.5 0.65 367 + 369 4 -43.5 167.5 23.5 0.65 368 + 370 4 -44.5 169.5 22.5 0.65 369 + 371 4 -46 171.5 21.5 0.65 370 + 372 4 -48 174 21.5 0.65 371 + 373 4 -49 176.5 26.5 0.65 372 + 374 4 -50.5 178.5 26.5 0.65 373 + 375 4 -52.5 181 27.5 0.65 374 + 376 4 -53.5 184 27.5 0.65 375 + 377 4 -54.5 187 28.5 0.65 376 + 378 4 -54 189 30 0.65 377 + 379 4 -54 192 31 0.65 378 + 380 4 -54.5 194 30 0.65 379 + 381 4 -58 201 33 0.65 380 + 382 4 -59.5 205 35 0.65 381 + 383 4 -59.5 207.5 36 0.65 382 + 384 4 -60.5 209.5 34 0.65 383 + 385 4 -63.5 212 33 0.65 384 + 386 4 -65.5 215.5 41.5 0.65 385 + 387 4 -66.5 218 44.5 0.65 386 + 388 4 -68 221.5 45.5 0.65 387 + 389 4 -68 223 50 0.65 388 + 390 4 -70 223.5 50 0.65 389 + 391 4 -70.5 226.5 51 0.65 390 + 392 4 -71 231 51 0.65 391 + 393 4 -71 233 54 0.65 392 + 394 4 -73 235.5 58.5 0.65 393 + 395 4 -73.5 235.5 56.5 0.65 394 + 396 4 -75.5 237.5 60.5 0.65 395 + 397 4 -78.5 242 52 0.65 396 + 398 4 -80.5 244.5 51 0.65 397 + 399 4 -82 247 50 0.6 398 + 400 4 -82.5 250.5 58.5 0.6 399 + 401 4 -82.5 253.5 57.5 0.6 400 + 402 4 -83.5 256.5 59.5 0.6 401 + 403 4 -85 259.5 61.5 0.6 402 + 404 4 -87 262.5 64.5 0.6 403 + 405 4 -88 263.5 64.5 0.6 404 + 406 4 -88.5 267.5 62.5 0.6 405 + 407 4 -87.5 270.5 62.5 0.6 406 + 408 4 -88.5 274 62.5 0.6 407 + 409 4 -90 278 60.5 0.6 408 + 410 4 -92 278.5 59.5 0.6 409 + 411 4 -94 283.5 59.5 0.6 410 + 412 4 -93.5 286 59.5 0.6 411 + 413 4 -93 289 68 0.6 412 + 414 4 -94.5 293.5 66 0.6 413 + 415 4 -99 295 64.5 0.2 414 + 416 4 -101.5 297.5 72 0.2 415 + 417 4 -104 298 74 0.2 416 + 418 4 -105.5 301.5 74 0.2 417 + 419 4 -111 303.5 70 0.2 418 + 420 4 -112.5 306.5 71 0.2 419 + 421 4 -115 307 70 0.2 420 + 422 4 -116.5 308.5 71 0.2 421 + 423 4 -118.5 310 73 0.2 422 + 424 4 -121.5 311.5 75.5 0.2 423 + 425 4 -127 314 74 0.2 424 + 426 4 -127 314 75.5 0.2 425 + 427 4 -96 297.5 69 0.45 414 + 428 4 -95.5 299.5 67 0.45 427 + 429 4 -97 302 70 0.45 428 + 430 4 -99 304 70 0.45 429 + 431 4 -101.5 305 72 0.45 430 + 432 4 -103.5 306 72 0.45 431 + 433 4 -104 309 71 0.45 432 + 434 4 -106.5 310 77.5 0.45 433 + 435 4 -110.5 311 79.5 0.4 434 + 436 4 -109.5 312.5 77.5 0.4 435 + 437 4 -113.5 315.5 78.5 0.4 436 + 438 4 -115.5 318.5 81.5 0.4 437 + 439 4 -118.5 321.5 80.5 0.4 438 + 440 4 -121 323.5 81.5 0.4 439 + 441 4 -123 326 82.5 0.4 440 + 442 4 -126 327.5 88 0.4 441 + 443 4 -129.5 330.5 87 0.4 442 + 444 4 -131 333 88 0.4 443 + 445 4 -134.5 334 89 0.4 444 + 446 4 -137 338 88 0.4 445 + 447 4 -139 342 91 0.4 446 + 448 4 -138.5 343.5 91 0.4 447 + 449 4 -142 347 94.5 0.4 448 + 450 4 -141.5 352.5 93.5 0.3 449 + 451 4 -140.5 356 93.5 0.3 450 + 452 4 -141 358 98.5 0.3 451 + 453 4 -142 360.5 97.5 0.3 452 + 454 4 -144 362.5 96.5 0.3 453 + 455 4 -144.5 364 96.5 0.3 454 + 456 4 -144.5 364 93.5 0.3 455 + 457 4 -146.5 367.5 96.5 0.2 456 + 458 4 -147 372.5 100.5 0.2 457 + 459 4 -149 375 100.5 0.2 458 + 460 4 -151 376.5 100.5 0.2 459 + 461 4 -150.5 377 100.5 0.2 460 + 462 4 -152.5 379.5 104 0.2 461 + 463 4 -154 379.5 103 0.2 462 + 464 4 -154.5 378.5 106 0.2 463 + 465 4 -156 378 105 0.2 464 + 466 4 -158 379.5 105 0.2 465 + 467 4 -157.5 380.5 104 0.2 466 + 468 4 -156 381 102 0.2 463 + 469 4 -157 382.5 104 0.2 468 + 470 4 -158 384 103 0.2 469 + 471 4 -159 384 102 0.2 470 + 472 4 -143.5 368 99.5 0.2 456 + 473 4 -143 370.5 99.5 0.2 472 + 474 4 -142 373 99.5 0.2 473 + 475 4 -143.5 375 99.5 0.2 474 + 476 4 -143 377.5 106 0.2 475 + 477 4 -142.5 379 104 0.2 476 + 478 4 -143.5 381.5 104 0.2 477 + 479 4 -145 384 102 0.2 478 + 480 4 -104 311.5 68 0.3 433 + 481 4 -104.5 314.5 67 0.3 480 + 482 4 -105.5 318.5 69 0.3 481 + 483 4 -105 321 69 0.3 482 + 484 4 -105.5 325.5 69 0.3 483 + 485 4 -107.5 329 66 0.3 484 + 486 4 -107.5 332 66 0.3 485 + 487 4 -108.5 336.5 69 0.3 486 + 488 4 -108.5 342.5 68 0.2 487 + 489 4 -69.5 235 58.5 0.3 395 + 490 4 -69.5 238 63.5 0.3 489 + 491 4 -69.5 241 67 0.3 490 + 492 4 -67.5 243 70 0.3 491 + 493 4 -65.5 245 69 0.3 492 + 494 4 -65.5 251 74 0.3 493 + 495 4 -64 252 75.5 0.3 494 + 496 4 -60.5 253.5 77.5 0.3 495 + 497 4 -61 256 77.5 0.3 496 + 498 4 -60 258.5 79.5 0.3 497 + 499 4 -59.5 260 81.5 0.3 498 + 500 4 -60 262 84 0.3 499 + 501 4 -60.5 262.5 85 0.3 500 + 502 4 -60 265.5 85 0.3 501 + 503 4 -59 267.5 87 0.3 502 + 504 4 -58 270 82.5 0.3 503 + 505 4 -57.5 271.5 82.5 0.3 504 + 506 4 -57 274.5 86 0.3 505 + 507 4 -57 276.5 86 0.3 506 + 508 4 -55.5 279.5 84 0.3 507 + 509 4 -53 280.5 80.5 0.2 508 + 510 4 -53.5 282 84 0.2 509 + 511 4 -56 283 82.5 0.2 510 + 512 4 -56 283 84 0.2 511 + 513 4 -53.5 197.5 31 0.3 380 + 514 4 -54.5 202 31 0.3 513 + 515 4 -53 208 23.5 0.3 514 + 516 4 -54 210 23.5 0.3 515 + 517 4 -53 214 22.5 0.3 516 + 518 4 -52.5 218 21.5 0.3 517 + 519 4 -51 221.5 21.5 0.3 518 + 520 4 -52 225.5 22.5 0.3 519 + 521 4 -52.5 229 21.5 0.3 520 + 522 4 -52 231.5 21.5 0.3 521 + 523 4 -53 235 20.5 0.3 522 + 524 4 -54 238 21.5 0.3 523 + 525 4 -53.5 240 21.5 0.2 524 + 526 4 -54 246.5 21.5 0.2 525 + 527 4 -53 250 17 0.2 526 + 528 4 -53.5 254 14 0.2 527 + 529 4 -52 258 12 0.2 528 + 530 4 -51.5 267 12 0.2 529 + 531 4 -50.5 270.5 12 0.2 530 + 532 4 -49.5 276.5 13 0.2 531 + 533 4 -47.5 283.5 14 0.2 532 + 534 4 -47 286.5 13 0.15 533 + 535 4 -45.5 292.5 6.5 0.15 534 + 536 4 -2.5 70.5 -11.5 1.8 241 + 537 4 -3 76 -9.5 1.8 536 + 538 4 -4.5 79 -10.5 1.8 537 + 539 4 -6.5 83.5 -7 0.9 538 + 540 4 -8 88 0 0.9 539 + 541 4 -7 91 0 0.9 540 + 542 4 -8 96.5 -1 0.9 541 + 543 4 -9 99.5 -2 0.9 542 + 544 4 -10.5 101.5 6.5 0.9 543 + 545 4 -11 103.5 9.5 0.9 544 + 546 4 -10.5 108.5 11 0.9 545 + 547 4 -11.5 111 7.5 0.9 546 + 548 4 -11.5 115 6.5 0.9 547 + 549 4 -11.5 118.5 14 0.9 548 + 550 4 -13 128 14 0.85 549 + 551 4 -14.5 136 15 0.65 550 + 552 4 -16 141.5 16 0.65 551 + 553 4 -15 144 16 0.65 552 + 554 4 -15.5 148 16 0.65 553 + 555 4 -16.5 155 16 0.65 554 + 556 4 -16.5 158.5 15 0.65 555 + 557 4 -17.5 163 15 0.65 556 + 558 4 -19 167 18 0.65 557 + 559 4 -18 170.5 18 0.65 558 + 560 4 -18 173 18 0.65 559 + 561 4 -19 176.5 18 0.65 560 + 562 4 -20.5 181.5 24.5 0.65 561 + 563 4 -21 183.5 24.5 0.65 562 + 564 4 -21.5 188 24.5 0.65 563 + 565 4 -21.5 190.5 24.5 0.65 564 + 566 4 -23 194.5 24.5 0.65 565 + 567 4 -24 198.5 24.5 0.65 566 + 568 4 -25 200.5 27.5 0.65 567 + 569 4 -27.5 206.5 25.5 0.65 568 + 570 4 -28.5 209 25.5 0.65 569 + 571 4 -29 214 25.5 0.65 570 + 572 4 -29.5 215.5 31 0.65 571 + 573 4 -30 220 31 0.65 572 + 574 4 -31.5 222.5 31 0.65 573 + 575 4 -32 225.5 31 0.65 574 + 576 4 -31 229.5 34 0.65 575 + 577 4 -32 231 34 0.65 576 + 578 4 -33 235.5 32 0.65 577 + 579 4 -32.5 238 34 0.65 578 + 580 4 -31.5 242.5 33 0.65 579 + 581 4 -31.5 247 39.5 0.6 580 + 582 4 -32 252.5 37 0.6 581 + 583 4 -30.5 256 38.5 0.6 582 + 584 4 -31 263.5 39.5 0.6 583 + 585 4 -32.5 266 46.5 0.6 584 + 586 4 -35 266.5 45.5 0.6 585 + 587 4 -36 268.5 49 0.6 586 + 588 4 -36.5 271.5 49 0.6 587 + 589 4 -36.5 275.5 53 0.6 588 + 590 4 -39 286 55 0.6 589 + 591 4 -40 294 58.5 0.6 590 + 592 4 -39.5 296.5 58.5 0.6 591 + 593 4 -37 300.5 58.5 0.6 592 + 594 4 -36.5 301.5 60.5 0.55 593 + 595 4 -35.5 304.5 60.5 0.55 594 + 596 4 -36 306 59.5 0.55 595 + 597 4 -37.5 309.5 58.5 0.55 596 + 598 4 -38.5 313.5 58.5 0.55 597 + 599 4 -40 317.5 62.5 0.45 598 + 600 4 -41.5 320.5 63.5 0.45 599 + 601 4 -42 324 63.5 0.4 600 + 602 4 -43 326.5 63.5 0.4 601 + 603 4 -45 328 63.5 0.4 602 + 604 4 -47.5 329.5 63.5 0.4 603 + 605 4 -51 333.5 63.5 0.4 604 + 606 4 -49.5 336.5 63.5 0.4 605 + 607 4 -52 341.5 63.5 0.4 606 + 608 4 -56 343.5 63.5 0.4 607 + 609 4 -61 346.5 64.5 0.4 608 + 610 4 -65 350 60.5 0.4 609 + 611 4 -69 353.5 72 0.3 610 + 612 4 -72.5 357 73 0.3 611 + 613 4 -75.5 362 75.5 0.3 612 + 614 4 -78.5 367.5 76.5 0.3 613 + 615 4 -86 377.5 75.5 0.3 614 + 616 4 -89.5 383 78.5 0.3 615 + 617 4 -89 390 79.5 0.3 616 + 618 4 -92 398 79.5 0.3 617 + 619 4 -96.5 405 80.5 0.3 618 + 620 4 -101 409.5 79.5 0.3 619 + 621 4 -103.5 412.5 79.5 0.3 620 + 622 4 -105.5 419 79.5 0.3 621 + 623 4 -109.5 424.5 79.5 0.3 622 + 624 4 -110.5 428.5 79.5 0.3 623 + 625 4 -111.5 432.5 79.5 0.3 624 + 626 4 -118.5 436.5 85 0.3 625 + 627 4 -121 439 85 0.3 626 + 628 4 -121.5 444.5 85 0.3 627 + 629 4 -125 447.5 81.5 0.3 628 + 630 4 -126.5 448.5 81.5 0.3 629 + 631 4 -128.5 452.5 80.5 0.3 630 + 632 4 -130 454 80.5 0.3 631 + 633 4 -132.5 456.5 80.5 0.2 632 + 634 4 -137 460 80.5 0.2 633 + 635 4 -138 463 76.5 0.2 634 + 636 4 -139 467 76.5 0.2 635 + 637 4 -140 474 76.5 0.2 636 + 638 4 -141.5 478.5 75.5 0.2 637 + 639 4 -140 482.5 75.5 0.2 638 + 640 4 -143 486.5 75.5 0.2 639 + 641 4 -144.5 490.5 78.5 0.2 640 + 642 4 -143 494.5 78.5 0.2 641 + 643 4 -143 500.5 78.5 0.2 642 + 644 4 -144 503 84 0.2 643 + 645 4 -143.5 507 84 0.2 644 + 646 4 -142.5 509 84 0.2 645 + 647 4 -142 515 90 0.2 646 + 648 4 -146 522.5 89 0.2 647 + 649 4 -148.5 523.5 89 0.2 648 + 650 4 -149.5 527 92 0.2 649 + 651 4 -153 528.5 92 0.2 650 + 652 4 -156 530 93.5 0.2 651 + 653 4 -156 530 92 0.2 652 + 654 4 -33 317 57.5 0.4 598 + 655 4 -33 319 57.5 0.4 654 + 656 4 -31.5 321 61.5 0.4 655 + 657 4 -31 324.5 60.5 0.4 656 + 658 4 -31 328.5 59.5 0.4 657 + 659 4 -31.5 331 59.5 0.4 658 + 660 4 -31 336 61.5 0.3 659 + 661 4 -33 339 62.5 0.3 660 + 662 4 -32 344 62.5 0.3 661 + 663 4 -35.5 349 61.5 0.3 662 + 664 4 -35.5 354 70 0.3 663 + 665 4 -31 381 68 0.3 664 + 666 4 -31 392 69 0.3 665 + 667 4 -32 403 69 0.3 666 + 668 4 -35.5 417 69 0.3 667 + 669 4 -35 419.5 73 0.3 668 + 670 4 -37.5 430.5 70 0.3 669 + 671 4 -39 437 68 0.3 670 + 672 4 -44 444.5 71 0.3 671 + 673 4 -48 459.5 67 0.3 672 + 674 4 -49 466 66 0.3 673 + 675 4 -50.5 476 63.5 0.2 674 + 676 4 -50.5 489 62.5 0.2 675 + 677 4 -50 497 64.5 0.2 676 + 678 4 -51 503.5 64.5 0.2 677 + 679 4 -53 505.5 63.5 0.2 678 + 680 4 -52.5 513.5 64.5 0.2 679 + 681 4 -53 515.5 66 0.2 680 + 682 4 -55.5 524 64.5 0.15 681 + 683 4 -55.5 524 67 0.15 682 + 684 4 -51.5 520.5 64.5 0.2 681 + 685 4 -53 523.5 63.5 0.2 684 + 686 4 -54.5 525.5 66 0.2 685 + 687 4 -56.5 528.5 63.5 0.2 686 + 688 4 -58 532.5 61.5 0.2 687 + 689 4 -56 537.5 61.5 0.2 688 + 690 4 -57 540.5 63.5 0.2 689 + 691 4 -28.5 205 36 0.3 568 + 692 4 -31.5 206 36 0.3 691 + 693 4 -30.5 207.5 43.5 0.3 692 + 694 4 -33 209.5 43.5 0.3 693 + 695 4 -34 210 44.5 0.3 694 + 696 4 -34.5 212.5 46.5 0.3 695 + 697 4 -36.5 213 49 0.3 696 + 698 4 -39 215.5 51 0.3 697 + 699 4 -41 219 56.5 0.3 698 + 700 4 -45 220 55 0.3 699 + 701 4 -46.5 223 55 0.3 700 + 702 4 -47.5 225 53 0.3 701 + 703 4 -49.5 226.5 50 0.3 702 + 704 4 -51.5 227.5 55 0.3 703 + 705 4 -54 230 55 0.3 704 + 706 4 -55.5 232.5 59.5 0.3 705 + 707 4 -58.5 238 59.5 0.3 706 + 708 4 -59.5 240.5 59.5 0.3 707 + 709 4 -60.5 243.5 58.5 0.3 708 + 710 4 -62 247.5 61.5 0.3 709 + 711 4 -64 251.5 61.5 0.3 710 + 712 4 -66 254 68 0.3 711 + 713 4 -67.5 254.5 67 0.2 712 + 714 4 -68.5 256 68 0.2 713 + 715 4 -71.5 259 68 0.2 714 + 716 4 -8 121.5 15 0.3 549 + 717 4 -7.5 123.5 17 0.3 716 + 718 4 -9 124.5 20.5 0.3 717 + 719 4 -7.5 128 25.5 0.4 718 + 720 4 -9 130 28.5 0.4 719 + 721 4 -8.5 131 28.5 0.4 720 + 722 4 -7.5 131.5 30 0.4 721 + 723 4 -6 136 39.5 0.4 722 + 724 4 -3 137.5 44.5 0.4 723 + 725 4 -2 142 51 0.4 724 + 726 4 -3.5 144.5 50 0.4 725 + 727 4 -4 147 59.5 0.4 726 + 728 4 -4 148 60.5 0.4 727 + 729 4 -5 151.5 59.5 0.3 728 + 730 4 -7.5 154 64.5 0.3 729 + 731 4 -7.5 156 63.5 0.2 730 + 732 4 -7.5 157.5 67 0.2 731 + 733 4 -8.5 159 71 0.2 732 + 734 4 -12.5 159.5 77.5 0.2 733 + 735 4 -11 161 77.5 0.2 734 + 736 4 -13.5 160.5 79.5 0.2 735 + 737 4 -14.5 162 81.5 0.2 736 + 738 4 -14 163.5 85 0.2 737 + 739 4 -14 165.5 88 0.2 738 + 740 4 -13.5 167.5 92 0.2 739 + 741 4 -12.5 170.5 95.5 0.2 740 + 742 4 -14 172 98.5 0.2 741 + 743 4 -12.5 175 94.5 0.2 742 + 744 4 -17 176.5 96.5 0.2 743 + 745 4 -16.5 177 99.5 0.2 744 + 746 4 -17.5 180.5 98.5 0.15 745 + 747 4 -1 150.5 61.5 0.3 728 + 748 4 0 152 63.5 0.3 747 + 749 4 -1.5 153 63.5 0.2 748 + 750 4 0.5 154.5 64.5 0.3 749 + 751 4 3 155.5 64.5 0.3 750 + 752 4 0 157.5 72 0.3 751 + 753 4 3 159.5 75.5 0.3 752 + 754 4 1 161.5 75.5 0.3 753 + 755 4 2 163 78.5 0.2 754 + 756 4 2 166.5 81.5 0.2 755 + 757 4 0.5 166.5 80.5 0.2 756 + 758 4 1 169.5 85 0.2 757 + 759 4 -0.5 173 87 0.2 758 + 760 4 -0.5 175.5 91 0.2 759 + 761 4 -2 178 94.5 0.2 760 + 762 4 0 179.5 97.5 0.2 761 + 763 4 0.5 184 102 0.2 762 + 764 4 1 186.5 97.5 0.2 763 + 765 4 2 189 99.5 0.2 764 + 766 4 4.5 191 98.5 0.2 765 + 767 4 3 192 98.5 0.2 766 + 768 4 2 193.5 107 0.2 767 + 769 4 3 195 109 0.2 768 + 770 4 2.5 196.5 111.5 0.2 769 + 771 4 3.5 199 104 0.2 770 + 772 4 4 200.5 103 0.2 771 + 773 4 -2 82 -13.5 0.6 538 + 774 4 -1 85.5 -7 0.55 773 + 775 4 -0.5 89 -10.5 0.55 774 + 776 4 -1.5 89.5 -13.5 0.55 775 + 777 4 -3 94 -3 0.3 776 + 778 4 -3.5 99.5 -5 0.3 777 + 779 4 -5.5 103.5 -13.5 0.3 778 + 780 4 -8 110 -15.5 0.3 779 + 781 4 -7 113.5 -14.5 0.3 780 + 782 4 -7 119 -13.5 0.3 781 + 783 4 -8 122.5 -18 0.3 782 + 784 4 -10.5 125 -22 0.3 783 + 785 4 -13.5 130 -25 0.3 784 + 786 4 -17 136.5 -28.5 0.3 785 + 787 4 -17 143 -29.5 0.3 786 + 788 4 -17.5 148 -31.5 0.3 787 + 789 4 -18 156.5 -31.5 0.3 788 + 790 4 -20 163 -31.5 0.3 789 + 791 4 -19.5 164.5 -37 0.3 790 + 792 4 -24.5 167 -39 0.3 791 + 793 4 -26.5 171 -45.5 0.3 792 + 794 4 -27 174.5 -47.5 0.3 793 + 795 4 -28.5 180.5 -54 0.3 794 + 796 4 -31 182.5 -60 0.2 795 + 797 4 -33.5 186 -66.5 0.2 796 + 798 4 -37.5 187 -63.5 0.2 797 + 799 4 -40.5 191 -59 0.2 798 + 800 4 -42.5 194 -59 0.2 799 + 801 4 -45.5 196 -75 0.2 800 + 802 4 -50 198 -78 0.2 801 + 803 4 -52 199 -83.5 0.2 802 + 804 4 -54 199.5 -90 0.2 803 + 805 4 -20 169 -30.5 0.3 791 + 806 4 -23 176.5 -28.5 0.3 805 + 807 4 -25 185.5 -34.5 0.3 806 + 808 4 -25 190 -37 0.3 807 + 809 4 -27 195 -37 0.3 808 + 810 4 -28 200 -40 0.3 809 + 811 4 -29.5 202.5 -43 0.3 810 + 812 4 -30.5 207.5 -43 0.3 811 + 813 4 -32 215 -40 0.3 812 + 814 4 -32 221.5 -39 0.3 813 + 815 4 -33 227 -40 0.3 814 + 816 4 -34 232.5 -42 0.3 815 + 817 4 -35 239.5 -48.5 0.3 816 + 818 4 -37 247 -50.5 0.3 817 + 819 4 -39 252 -52.5 0.3 818 + 820 4 -37.5 256.5 -48.5 0.3 819 + 821 4 -37.5 262 -52.5 0.3 820 + 822 4 -37 266.5 -56 0.3 821 + 823 4 -39.5 273 -57 0.3 822 + 824 4 -40.5 281 -58 0.3 823 + 825 4 -41.5 287.5 -56 0.3 824 + 826 4 -42.5 293.5 -52.5 0.3 825 + 827 4 -44.5 297.5 -58 0.3 826 + 828 4 -45.5 303 -60 0.3 827 + 829 4 -47 306.5 -60 0.3 828 + 830 4 -47.5 311 -59 0.3 829 + 831 4 -49.5 321.5 -63.5 0.3 830 + 832 4 -50 329.5 -68.5 0.3 831 + 833 4 -51.5 334 -64.5 0.3 832 + 834 4 -53.5 342 -61 0.3 833 + 835 4 -57.5 351 -64.5 0.3 834 + 836 4 -58 358.5 -64.5 0.3 835 + 837 4 -58.5 364.5 -59 0.3 836 + 838 4 -57.5 374 -69.5 0.3 837 + 839 4 -55.5 380.5 -74 0.3 838 + 840 4 -53 389 -76 0.2 839 + 841 4 -52 392 -83.5 0.2 840 + 842 4 -53 404.5 -86.5 0.2 841 + 843 4 -54 420 -85.5 0.2 842 + 844 4 -53.5 433 -93 0.2 843 + 845 4 -54 443 -100.5 0.2 844 + 846 4 -54.5 452.5 -99.5 0.2 845 + 847 4 -55.5 462 -110 0.2 846 + 848 4 -59.5 471.5 -109 0.2 847 + 849 4 -59.5 482 -110 0.2 848 + 850 4 -60.5 492 -113 0.2 849 + 851 4 -60 502 -113 0.2 850 + 852 4 -62.5 508.5 -115 0.15 851 + 853 4 -63.5 513 -121.5 0.15 852 + 854 4 -66 517.5 -127 0.15 853 + 855 4 -65.5 519 -121.5 0.15 854 + 856 4 -58 508 -111 0.15 851 + 857 4 -60.5 514.5 -119.5 0.15 856 + 858 4 -59 517.5 -122.5 0.15 857 + 859 4 -59 517.5 -120.5 0.15 858 + 860 4 -0.5 98 -7 0.85 776 + 861 4 0 101.5 -6 0.85 860 + 862 4 1 106 -7 0.65 861 + 863 4 1 111 -10.5 0.65 862 + 864 4 2.5 114.5 -11.5 0.65 863 + 865 4 0.5 120.5 -1 0.4 864 + 866 4 0 124.5 -1 0.3 865 + 867 4 -0.5 127.5 -1 0.3 866 + 868 4 -1 132 -3 0.3 867 + 869 4 0 137 -4 0.3 868 + 870 4 -0.5 140.5 -6 0.3 869 + 871 4 -1 145 -3 0.3 870 + 872 4 0 148.5 -2 0.3 871 + 873 4 4 174 -4 0.3 872 + 874 4 5 187 -5 0.3 873 + 875 4 9 201.5 0 0.3 874 + 876 4 13 214.5 -1 0.3 875 + 877 4 15 221 -2 0.3 876 + 878 4 15 228 3.5 0.3 877 + 879 4 18 236.5 2.5 0.3 878 + 880 4 21.5 248.5 2.5 0.3 879 + 881 4 24 258 4.5 0.3 880 + 882 4 24.5 265.5 4.5 0.3 881 + 883 4 25 271.5 3.5 0.3 882 + 884 4 27 279 3.5 0.3 883 + 885 4 28.5 282.5 2.5 0.3 884 + 886 4 29.5 287.5 2.5 0.3 885 + 887 4 30.5 295.5 2.5 0.3 886 + 888 4 31 302 2.5 0.3 887 + 889 4 33 307 2.5 0.3 888 + 890 4 39.5 312 2.5 0.3 889 + 891 4 43 316.5 1 0.3 890 + 892 4 48 323.5 1 0.3 891 + 893 4 49.5 327 1 0.3 892 + 894 4 52.5 333 1 0.3 893 + 895 4 54.5 339 1 0.2 894 + 896 4 56.5 348.5 2.5 0.2 895 + 897 4 56 355 1 0.2 896 + 898 4 56 360 0 0.2 897 + 899 4 56 370.5 2.5 0.2 898 + 900 4 57.5 381 -2 0.2 899 + 901 4 59 386 -4 0.2 900 + 902 4 62 393.5 -5 0.2 901 + 903 4 66 401 -6 0.2 902 + 904 4 68 409 -8.5 0.2 903 + 905 4 69.5 415 -8.5 0.2 904 + 906 4 71.5 419.5 -8.5 0.2 905 + 907 4 71.5 433.5 -5 0.2 906 + 908 4 71.5 442 0 0.2 907 + 909 4 71 451.5 -1 0.2 908 + 910 4 71.5 459.5 -8.5 0.2 909 + 911 4 73 467.5 -10.5 0.2 910 + 912 4 72 476 -12.5 0.2 911 + 913 4 68.5 487.5 -4 0.2 912 + 914 4 67 497 -3 0.2 913 + 915 4 67.5 504.5 -2 0.2 914 + 916 4 67.5 511.5 -6 0.2 915 + 917 4 68.5 521.5 -3 0.2 916 + 918 4 70.5 527.5 2.5 0.2 917 + 919 4 70 533.5 0 0.2 918 + 920 4 69.5 536 1 0.2 919 + 921 4 3.5 122.5 -3 0.45 864 + 922 4 4 127.5 -4 0.45 921 + 923 4 4.5 131.5 -3 0.45 922 + 924 4 5.5 137.5 -2 0.45 923 + 925 4 6.5 142.5 -2 0.45 924 + 926 4 5.5 144 2.5 0.45 925 + 927 4 6.5 151 -7 0.45 926 + 928 4 7 156 -9.5 0.45 927 + 929 4 8.5 160 -13.5 0.45 928 + 930 4 10 165 -15.5 0.45 929 + 931 4 11.5 170.5 -12.5 0.45 930 + 932 4 12.5 173.5 -14.5 0.45 931 + 933 4 13.5 176.5 -14.5 0.45 932 + 934 4 15 181 -18 0.45 933 + 935 4 16.5 186 -14.5 0.45 934 + 936 4 17 189.5 -15.5 0.45 935 + 937 4 18.5 194.5 -18 0.45 936 + 938 4 18.5 195.5 -17 0.45 937 + 939 4 18.5 201.5 -17 0.45 938 + 940 4 20 207 -15.5 0.45 939 + 941 4 22 213.5 -20 0.45 940 + 942 4 25 220.5 -25 0.45 941 + 943 4 23.5 227 -23 0.45 942 + 944 4 26 237.5 -28.5 0.45 943 + 945 4 28 243.5 -37 0.45 944 + 946 4 29 249.5 -33.5 0.3 945 + 947 4 31 259.5 -30.5 0.3 946 + 948 4 32.5 264.5 -40 0.3 947 + 949 4 33.5 267.5 -43 0.3 948 + 950 4 35 278 -45.5 0.3 949 + 951 4 38.5 283.5 -34.5 0.3 950 + 952 4 41 286.5 -36 0.3 951 + 953 4 43.5 296.5 -41 0.3 952 + 954 4 42 303.5 -34.5 0.3 953 + 955 4 43.5 309 -39 0.3 954 + 956 4 45 313 -40 0.3 955 + 957 4 48 319 -33.5 0.3 956 + 958 4 52.5 328.5 -41 0.3 957 + 959 4 54.5 332.5 -40 0.3 958 + 960 4 54 339.5 -40 0.3 959 + 961 4 53.5 345.5 -39 0.3 960 + 962 4 53 349.5 -44.5 0.3 961 + 963 4 54 356 -44.5 0.3 962 + 964 4 54.5 362 -55 0.3 963 + 965 4 57 374 -58 0.3 964 + 966 4 60 383 -59 0.3 965 + 967 4 62.5 391 -60 0.3 966 + 968 4 68 407 -61 0.3 967 + 969 4 64.5 416.5 -62.5 0.3 968 + 970 4 61 425 -61 0.3 969 + 971 4 60.5 431 -61 0.3 970 + 972 4 57.5 437.5 -69.5 0.3 971 + 973 4 55.5 443.5 -73 0.3 972 + 974 4 52.5 449 -76 0.3 973 + 975 4 49 455 -65.5 0.3 974 + 976 4 40.5 461.5 -64.5 0.3 975 + 977 4 35.5 466.5 -64.5 0.3 976 + 978 4 33.5 474 -66.5 0.3 977 + 979 4 31.5 478.5 -68.5 0.2 978 + 980 4 27 488.5 -68.5 0.2 979 + 981 4 25.5 494.5 -68.5 0.2 980 + 982 4 25 502 -72 0.2 981 + 983 4 21.5 516 -72 0.2 982 + 984 4 20.5 531.5 -76 0.15 983 + 985 4 21.5 534.5 -79 0.15 984 + 986 4 35 478.5 -65.5 0.2 978 + 987 4 33.5 485 -56 0.2 986 + 988 4 33.5 494.5 -54 0.2 987 + 989 4 35 509 -49.5 0.2 988 + 990 4 38 518.5 -46.5 0.2 989 + 991 4 40.5 529 -45.5 0.2 990 + 992 4 42 533.5 -56 0.2 991 + 993 4 44.5 541 -58 0.2 992 + 994 4 48.5 551 -58 0.2 993 + 995 4 51.5 559.5 -55 0.2 994 + 996 4 52 571 -57 0.15 995 + 997 4 24 198.5 -23 0.2 938 + 998 4 29.5 203 -23 0.2 997 + 999 4 31 206 -26.5 0.2 998 + 1000 4 35 210.5 -22 0.2 999 + 1001 4 39 214.5 -21 0.2 1000 + 1002 4 43.5 216 -25 0.2 1001 + 1003 4 47 218 -25 0.2 1002 + 1004 4 50.5 220 -22 0.2 1003 + 1005 4 56 224 -21 0.2 1004 + 1006 4 61 224 -22 0.2 1005 + 1007 4 66.5 225 -24 0.2 1006 + 1008 4 13.5 148 -1 0.3 926 + 1009 4 18.5 155.5 -1 0.3 1008 + 1010 4 20 159.5 0 0.3 1009 + 1011 4 26 167 0 0.3 1010 + 1012 4 32.5 171.5 -1 0.3 1011 + 1013 4 35.5 173.5 0 0.2 1012 + 1014 4 36 177 4.5 0.2 1013 + 1015 4 40.5 184.5 2.5 0.2 1014 + 1016 4 42 188 1 0.2 1015 + 1017 4 43 192 3.5 0.2 1016 + 1018 4 45 197 -4 0.2 1017 + 1019 4 48.5 200.5 -3 0.2 1018 + 1020 4 53 205.5 1 0.2 1019 + 1021 4 54.5 209 5.5 0.2 1020 + 1022 4 59 215 7.5 0.2 1021 + 1023 4 59.5 216.5 2.5 0.2 1022 + 1024 4 3.5 67 -13.5 1.55 239 + 1025 4 4 72.5 -14.5 1.55 1024 + 1026 4 3.5 76.5 -13.5 1.55 1025 + 1027 4 5 83 -12.5 1.55 1026 + 1028 4 4.5 89 -21 1.2 1027 + 1029 4 4 96 -17 1.2 1028 + 1030 4 5.5 101 -17 1.2 1029 + 1031 4 5 105.5 -25 1.2 1030 + 1032 4 4 111 -26.5 1.2 1031 + 1033 4 -2 124 -33.5 0.3 1032 + 1034 4 -3.5 129.5 -34.5 0.3 1033 + 1035 4 -6 133 -36 0.3 1034 + 1036 4 -7.5 136.5 -37 0.3 1035 + 1037 4 -7.5 136.5 -41 0.3 1036 + 1038 4 -11.5 140 -41 0.3 1037 + 1039 4 -11.5 150 -45.5 0.3 1038 + 1040 4 7.5 121 -26.5 0.45 1032 + 1041 4 10 129.5 -26.5 0.45 1040 + 1042 4 12 134 -25 0.45 1041 + 1043 4 13.5 137.5 -27.5 0.45 1042 + 1044 4 14.5 141.5 -31.5 0.45 1043 + 1045 4 16 146.5 -37 0.45 1044 + 1046 4 18 151.5 -37 0.45 1045 + 1047 4 19 155.5 -34.5 0.45 1046 + 1048 4 22 160 -33.5 0.45 1047 + 1049 4 24.5 167.5 -31.5 0.45 1048 + 1050 4 26 172 -32.5 0.45 1049 + 1051 4 30.5 177 -38 0.45 1050 + 1052 4 31.5 180.5 -37 0.45 1051 + 1053 4 33 185.5 -33.5 0.45 1052 + 1054 4 36.5 189.5 -44.5 0.45 1053 + 1055 4 39.5 193.5 -45.5 0.45 1054 + 1056 4 41.5 199 -44.5 0.45 1055 + 1057 4 43 202 -44.5 0.45 1056 + 1058 4 43.5 203.5 -42 0.45 1057 + 1059 4 47.5 207 -48.5 0.45 1058 + 1060 4 50.5 211 -52.5 0.45 1059 + 1061 4 52 215.5 -55 0.45 1060 + 1062 4 56.5 221.5 -57 0.45 1061 + 1063 4 58 226.5 -57 0.45 1062 + 1064 4 62 234.5 -56 0.45 1063 + 1065 4 63 237 -58 0.45 1064 + 1066 4 67.5 240 -43 0.2 1065 + 1067 4 76.5 243.5 -49.5 0.2 1066 + 1068 4 83 248 -38 0.2 1067 + 1069 4 89 250.5 -27.5 0.2 1068 + 1070 4 94.5 254.5 -18 0.2 1069 + 1071 4 99 255.5 -27.5 0.2 1070 + 1072 4 101.5 258.5 -26.5 0.2 1071 + 1073 4 67.5 245 -61 0.45 1065 + 1074 4 69 250.5 -62.5 0.45 1073 + 1075 4 69 256.5 -61 0.3 1074 + 1076 4 67.5 265 -63.5 0.3 1075 + 1077 4 59.5 269.5 -69.5 0.3 1076 + 1078 4 55 272.5 -73 0.3 1077 + 1079 4 53 277 -79 0.3 1078 + 1080 4 51 283.5 -75 0.3 1079 + 1081 4 51 287.5 -74 0.3 1080 + 1082 4 50.5 294.5 -82.5 0.3 1081 + 1083 4 51.5 297.5 -83.5 0.3 1082 + 1084 4 50.5 305 -83.5 0.3 1083 + 1085 4 51.5 311.5 -87.5 0.3 1084 + 1086 4 51.5 315 -93 0.3 1085 + 1087 4 49.5 318 -96 0.3 1086 + 1088 4 49.5 323 -92 0.3 1087 + 1089 4 49.5 331 -93 0.3 1088 + 1090 4 48.5 334.5 -93 0.3 1089 + 1091 4 49.5 340 -92 0.3 1090 + 1092 4 49.5 346 -92 0.3 1091 + 1093 4 51 350 -91 0.3 1092 + 1094 4 52 355 -87.5 0.3 1093 + 1095 4 51 360 -83.5 0.3 1094 + 1096 4 49.5 366 -92 0.3 1095 + 1097 4 53 372 -92 0.15 1096 + 1098 4 54 379 -92 0.15 1097 + 1099 4 53.5 386.5 -90 0.15 1098 + 1100 4 56 389.5 -90 0.15 1099 + 1101 4 44 376.5 -70.5 0.3 1096 + 1102 4 43.5 383.5 -74 0.2 1101 + 1103 4 42 390.5 -68.5 0.2 1102 + 1104 4 40 398.5 -67.5 0.2 1103 + 1105 4 37 404 -69.5 0.2 1104 + 1106 4 33.5 410.5 -62.5 0.2 1105 + 1107 4 26 417.5 -54 0.2 1106 + 1108 4 21 423.5 -65.5 0.2 1107 + 1109 4 17 428 -58 0.2 1108 + 1110 4 16 434.5 -59 0.2 1109 + 1111 4 13 441.5 -60 0.2 1110 + 1112 4 9.5 446 -52.5 0.2 1111 + 1113 4 7.5 452.5 -52.5 0.2 1112 + 1114 4 7.5 459 -59 0.2 1113 + 1115 4 6 463.5 -59 0.2 1114 + 1116 4 2.5 468.5 -60 0.2 1115 + 1117 4 0 477.5 -61 0.2 1116 + 1118 4 -2.5 485.5 -49.5 0.2 1117 + 1119 4 -6.5 493.5 -46.5 0.2 1118 + 1120 4 -6 503 -41 0.2 1119 + 1121 4 -9.5 511.5 -37 0.2 1120 + 1122 4 -12.5 512.5 -33.5 0.2 1121 + 1123 4 -17.5 506.5 -32.5 0.2 1122 + 1124 4 -17.5 506.5 -31.5 0.2 1123 + 1125 4 42 408 -74 0.2 1104 + 1126 4 38.5 417.5 -72 0.2 1125 + 1127 4 37 429 -80 0.2 1126 + 1128 4 34.5 431.5 -88.5 0.2 1127 + 1129 4 31 439.5 -93 0.2 1128 + 1130 4 29 448 -93 0.2 1129 + 1131 4 28.5 455 -96 0.2 1130 + 1132 4 26 467 -102.5 0.2 1131 + 1133 4 25 476 -110 0.2 1132 + 1134 4 22.5 482.5 -120.5 0.2 1133 + 1135 4 22 492 -121.5 0.2 1134 + 1136 4 20.5 495 -124.5 0.2 1135 + 1137 4 21 509 -123.5 0.2 1136 + 1138 4 20 515 -132 0.2 1137 + 1139 4 16 523 -133 0.2 1138 + 1140 4 14.5 529 -137.5 0.2 1139 + 1141 4 11 535 -132 0.2 1140 + 1142 4 75.5 259 -62.5 0.3 1074 + 1143 4 76 262 -61 0.3 1142 + 1144 4 78 267 -61 0.3 1143 + 1145 4 80 271.5 -62.5 0.3 1144 + 1146 4 84.5 276.5 -64.5 0.3 1145 + 1147 4 86 281.5 -63.5 0.3 1146 + 1148 4 88.5 283 -62.5 0.3 1147 + 1149 4 89.5 289.5 -55 0.2 1148 + 1150 4 90.5 300 -58 0.2 1149 + 1151 4 92 306 -58 0.2 1150 + 1152 4 93.5 314.5 -57 0.2 1151 + 1153 4 95.5 319.5 -47.5 0.2 1152 + 1154 4 98 326 -51.5 0.2 1153 + 1155 4 100 332 -51.5 0.2 1154 + 1156 4 105 343 -48.5 0.2 1155 + 1157 4 110 352 -44.5 0.2 1156 + 1158 4 116.5 365 -38 0.2 1157 + 1159 4 119.5 370.5 -32.5 0.2 1158 + 1160 4 124 378 -41 0.2 1159 + 1161 4 126 387 -40 0.2 1160 + 1162 4 124 392 -45.5 0.2 1161 + 1163 4 123.5 401 -49.5 0.2 1162 + 1164 4 122 410 -49.5 0.2 1163 + 1165 4 122 419 -56 0.2 1164 + 1166 4 121 429 -60 0.2 1165 + 1167 4 122 441.5 -59 0.2 1166 + 1168 4 122 450.5 -67.5 0.2 1167 + 1169 4 120.5 457 -66.5 0.2 1168 + 1170 4 121.5 466.5 -67.5 0.2 1169 + 1171 4 125 471.5 -66.5 0.2 1170 + 1172 4 126.5 476.5 -67.5 0.2 1171 + 1173 4 129.5 483 -75 0.2 1172 + 1174 4 129.5 488.5 -78 0.2 1173 + 1175 4 131.5 494 -77 0.2 1174 + 1176 4 133.5 501 -79 0.2 1175 + 1177 4 132.5 504.5 -80 0.2 1176 + 1178 4 133.5 513 -81.5 0.2 1177 + 1179 4 133 519 -83.5 0.2 1178 + 1180 4 133 527.5 -83.5 0.2 1179 + 1181 4 133.5 535.5 -90 0.2 1180 + 1182 4 136 546 -88.5 0.2 1181 + 1183 4 137 550 -91 0.2 1182 + 1184 4 135.5 557 -92 0.2 1183 + 1185 4 135.5 566 -95 0.2 1184 + 1186 4 135.5 566 -92 0.2 1185 + 1187 4 130.5 389.5 -37 0.2 1161 + 1188 4 132 392.5 -37 0.2 1187 + 1189 4 137.5 400 -33.5 0.2 1188 + 1190 4 142.5 407 -30.5 0.2 1189 + 1191 4 145.5 411.5 -22 0.2 1190 + 1192 4 149 417 -21 0.2 1191 + 1193 4 152.5 420.5 -26.5 0.2 1192 + 1194 4 155.5 424 -26.5 0.2 1193 + 1195 4 158.5 426 -22 0.2 1194 + 1196 4 95.5 290 -66.5 0.2 1148 + 1197 4 100.5 295 -64.5 0.2 1196 + 1198 4 105.5 298.5 -68.5 0.2 1197 + 1199 4 109.5 302 -76 0.2 1198 + 1200 4 115 306.5 -81.5 0.2 1199 + 1201 4 124 307.5 -85.5 0.2 1200 + 1202 4 126 308.5 -94 0.2 1201 + 1203 4 8.5 87.5 -12.5 0.8 1027 + 1204 4 15 95 -9.5 0.8 1203 + 1205 4 16 99 -9.5 0.8 1204 + 1206 4 19.5 104.5 -9.5 0.8 1205 + 1207 4 20.5 108 -9.5 0.8 1206 + 1208 4 23 112 -9.5 0.8 1207 + 1209 4 25.5 116.5 -5 0.8 1208 + 1210 4 29 121.5 -5 0.8 1209 + 1211 4 31.5 122.5 -5 0.8 1210 + 1212 4 34 126 -6 0.8 1211 + 1213 4 35.5 130.5 -4 0.8 1212 + 1214 4 39.5 132 5.5 0.45 1213 + 1215 4 42 135 6.5 0.45 1214 + 1216 4 49 136.5 6.5 0.4 1215 + 1217 4 57 139 5.5 0.4 1216 + 1218 4 65 141.5 3.5 0.4 1217 + 1219 4 74 144 3.5 0.4 1218 + 1220 4 82.5 144.5 3.5 0.4 1219 + 1221 4 91 146.5 3.5 0.3 1220 + 1222 4 95 145 2.5 0.3 1221 + 1223 4 100.5 144.5 2.5 0.3 1222 + 1224 4 104.5 143.5 0 0.2 1223 + 1225 4 111.5 144 1 0.2 1224 + 1226 4 112.5 144 3.5 0.2 1225 + 1227 4 36.5 137.5 -2 0.6 1213 + 1228 4 38 142 -2 0.6 1227 + 1229 4 39 144.5 1 0.6 1228 + 1230 4 40 149 1 0.6 1229 + 1231 4 43 149.5 -4 0.2 1230 + 1232 4 47.5 150.5 -4 0.2 1231 + 1233 4 50.5 150 -4 0.2 1232 + 1234 4 56.5 153.5 -9.5 0.2 1233 + 1235 4 61 155.5 -13.5 0.2 1234 + 1236 4 66.5 161.5 -15.5 0.2 1235 + 1237 4 71.5 164 -15.5 0.2 1236 + 1238 4 75 167.5 -7 0.2 1237 + 1239 4 79 170.5 -3 0.2 1238 + 1240 4 83.5 171.5 2.5 0.2 1239 + 1241 4 93 173.5 2.5 0.2 1240 + 1242 4 97.5 177 8.5 0.2 1241 + 1243 4 106 179 9.5 0.2 1242 + 1244 4 111.5 182.5 12 0.2 1243 + 1245 4 119 184 7.5 0.2 1244 + 1246 4 123 185 12 0.2 1245 + 1247 4 41.5 154 0 0.55 1230 + 1248 4 41.5 155.5 0 0.55 1247 + 1249 4 41.5 158.5 -6 0.2 1248 + 1250 4 39.5 166.5 -3 0.2 1249 + 1251 4 38 170 -4 0.2 1250 + 1252 4 39 175 -3 0.2 1251 + 1253 4 40 178.5 -7 0.2 1252 + 1254 4 38.5 184 -8.5 0.2 1253 + 1255 4 39 189.5 -10.5 0.2 1254 + 1256 4 41 194.5 -10.5 0.2 1255 + 1257 4 43 204.5 -13.5 0.2 1256 + 1258 4 44 207.5 -15.5 0.2 1257 + 1259 4 44.5 212.5 -19 0.2 1258 + 1260 4 46.5 217.5 -25 0.2 1259 + 1261 4 48 224.5 -18 0.2 1260 + 1262 4 48 232 -18 0.15 1261 + 1263 4 48 235 -19 0.15 1262 + 1264 4 48 235 -20 0.15 1263 + 1265 4 47.5 169 -4 0.55 1248 + 1266 4 49 174 -5 0.55 1265 + 1267 4 53.5 181 -5 0.55 1266 + 1268 4 56 184 -13.5 0.55 1267 + 1269 4 57.5 188 -14.5 0.55 1268 + 1270 4 59 191 -13.5 0.55 1269 + 1271 4 60.5 195.5 -10.5 0.55 1270 + 1272 4 62.5 202 -10.5 0.2 1271 + 1273 4 65 209 -15.5 0.2 1272 + 1274 4 64.5 214 -18 0.2 1273 + 1275 4 65 221 -18 0.2 1274 + 1276 4 65.5 227.5 -18 0.2 1275 + 1277 4 65 235 -22 0.2 1276 + 1278 4 65 244.5 -14.5 0.2 1277 + 1279 4 62 248 -13.5 0.2 1278 + 1280 4 67.5 204.5 -19 0.6 1271 + 1281 4 73.5 209.5 -18 0.45 1280 + 1282 4 76 213 -19 0.45 1281 + 1283 4 79 218.5 -19 0.45 1282 + 1284 4 80.5 223.5 -30.5 0.2 1283 + 1285 4 82.5 231 -36 0.2 1284 + 1286 4 84 238 -37 0.2 1285 + 1287 4 85.5 243.5 -37 0.2 1286 + 1288 4 86.5 247.5 -33.5 0.2 1287 + 1289 4 88.5 254 -42 0.2 1288 + 1290 4 90 257 -48.5 0.2 1289 + 1291 4 89 261.5 -56 0.2 1290 + 1292 4 91 267 -58 0.2 1291 + 1293 4 92 271 -62.5 0.2 1292 + 1294 4 94.5 273 -62.5 0.2 1293 + 1295 4 100 279 -62.5 0.2 1294 + 1296 4 103.5 283 -61 0.2 1295 + 1297 4 103 288.5 -64.5 0.2 1296 + 1298 4 103.5 290.5 -64.5 0.2 1297 + 1299 4 104.5 295.5 -66.5 0.2 1298 + 1300 4 106.5 303.5 -63.5 0.2 1299 + 1301 4 106.5 323 -61 0.2 1300 + 1302 4 106 333.5 -63.5 0.2 1301 + 1303 4 108.5 288 -61 0.3 1296 + 1304 4 112 291.5 -59 0.3 1303 + 1305 4 113 295 -62.5 0.3 1304 + 1306 4 119 298.5 -59 0.2 1305 + 1307 4 123 303 -64.5 0.2 1306 + 1308 4 128.5 308.5 -64.5 0.2 1307 + 1309 4 131 315 -59 0.2 1308 + 1310 4 135.5 321 -63.5 0.2 1309 + 1311 4 140.5 324.5 -74 0.2 1310 + 1312 4 144.5 329 -78 0.2 1311 + 1313 4 146 333.5 -79 0.2 1312 + 1314 4 149.5 338.5 -80 0.2 1313 + 1315 4 153.5 343 -78 0.2 1314 + 1316 4 149 351 -84.5 0.2 1315 + 1317 4 148 356 -82.5 0.2 1316 + 1318 4 145 365 -81.5 0.2 1317 + 1319 4 141 369 -83.5 0.2 1318 + 1320 4 135 378 -86.5 0.2 1319 + 1321 4 133 384.5 -88.5 0.2 1320 + 1322 4 130.5 389.5 -91 0.2 1321 + 1323 4 129.5 394 -93 0.2 1322 + 1324 4 127 406.5 -98 0.2 1323 + 1325 4 124 413 -92 0.2 1324 + 1326 4 125.5 422 -91 0.2 1325 + 1327 4 127.5 429 -86.5 0.2 1326 + 1328 4 128 431 -91 0.2 1327 + 1329 4 135 454 -91 0.2 1328 + 1330 4 138.5 464.5 -83.5 0.2 1329 + 1331 4 142 474 -82.5 0.2 1330 + 1332 4 144 480.5 -72 0.2 1331 + 1333 4 146 488 -81.5 0.2 1332 + 1334 4 142.5 494.5 -70.5 0.2 1333 + 1335 4 145 506 -73 0.2 1334 + 1336 4 147.5 519.5 -69.5 0.2 1335 + 1337 4 148.5 531 -66.5 0.2 1336 + 1338 4 147 540.5 -73 0.2 1337 + 1339 4 144 550.5 -66.5 0.2 1338 + 1340 4 138.5 552 -65.5 0.15 1339 + 1341 4 131.5 557.5 -66.5 0.15 1340 + 1342 4 131 438 -101.5 0.2 1328 + 1343 4 130.5 447.5 -101.5 0.2 1342 + 1344 4 130 454 -114 0.2 1343 + 1345 4 127 464.5 -113 0.2 1344 + 1346 4 128.5 469.5 -119.5 0.2 1345 + 1347 4 128.5 477 -118.5 0.2 1346 + 1348 4 126.5 482.5 -128 0.2 1347 + 1349 4 121.5 491.5 -131 0.2 1348 + 1350 4 117 495 -133 0.2 1349 + 1351 4 115.5 501.5 -135.5 0.2 1350 + 1352 4 112 510.5 -138.5 0.2 1351 + 1353 4 108 518.5 -142.5 0.2 1352 + 1354 4 105.5 521 -140.5 0.2 1353 + 1355 4 101.5 525.5 -140.5 0.2 1354 + 1356 4 97.5 536 -145 0.2 1355 + 1357 4 93 539 -146 0.2 1356 + 1358 4 90.5 542 -146 0.2 1357 + 1359 4 81 220 -18 0.3 1283 + 1360 4 86.5 225 -15.5 0.3 1359 + 1361 4 91.5 231 -17 0.3 1360 + 1362 4 96 236.5 -18 0.3 1361 + 1363 4 97 239.5 -20 0.3 1362 + 1364 4 102 243 -19 0.3 1363 + 1365 4 106 247 -19 0.3 1364 + 1366 4 111.5 253.5 -19 0.3 1365 + 1367 4 115.5 256 -19 0.3 1366 + 1368 4 118 259.5 -20 0.3 1367 + 1369 4 120.5 263 -19 0.3 1368 + 1370 4 121.5 265 -18 0.3 1369 + 1371 4 126 270 -17 0.3 1370 + 1372 4 127.5 274.5 -14.5 0.3 1371 + 1373 4 130.5 280 -14.5 0.3 1372 + 1374 4 132.5 285 -15.5 0.3 1373 + 1375 4 134.5 288 -15.5 0.2 1374 + 1376 4 135.5 294 -17 0.2 1375 + 1377 4 135 298 -18 0.2 1376 + 1378 4 135.5 305 -18 0.2 1377 + 1379 4 136 311 -15.5 0.2 1378 + 1380 4 138 316.5 -12.5 0.2 1379 + 1381 4 140 321 -22 0.2 1380 + 1382 4 139 327.5 -20 0.2 1381 + 1383 4 141.5 334.5 -25 0.2 1382 + 1384 4 143 339 -27.5 0.2 1383 + 1385 4 144.5 344.5 -20 0.2 1384 + 1386 4 144 349 -29.5 0.2 1385 + 1387 4 145.5 357.5 -29.5 0.2 1386 + 1388 4 145.5 368 -40 0.2 1387 + 1389 4 143.5 372 -43 0.2 1388 + 1390 4 142.5 378.5 -46.5 0.2 1389 + 1391 4 142.5 384.5 -46.5 0.2 1390 + 1392 4 143 389 -48.5 0.2 1391 + 1393 4 142.5 396 -47.5 0.2 1392 + 1394 4 143 415.5 -42 0.2 1393 + 1395 4 144 426.5 -44.5 0.2 1394 + 1396 4 143.5 433.5 -44.5 0.2 1395 + 1397 4 143.5 441.5 -46.5 0.2 1396 + 1398 4 140.5 459 -32.5 0.2 1397 + 1399 4 142 464 -27.5 0.2 1398 + 1400 4 141 475 -32.5 0.2 1399 + 1401 4 143 482.5 -33.5 0.2 1400 + 1402 4 143.5 492.5 -28.5 0.2 1401 + 1403 4 145 501 -21 0.2 1402 + 1404 4 145 507 -27.5 0.2 1403 + 1405 4 142 513.5 -20 0.2 1404 + 1406 4 143.5 522 -17 0.2 1405 + 1407 4 145.5 532.5 -9.5 0.2 1406 + 1408 4 147.5 541 -9.5 0.2 1407 + 1409 4 147.5 541 2.5 0.2 1408 + 1410 3 2 1 3.5 1.8 1 + 1411 3 5.5 -2.5 3.5 1.45 1410 + 1412 3 6.5 -6 2.5 1.45 1411 + 1413 3 6.5 -8 5.5 1.45 1412 + 1414 3 7 -9 0 0.55 1413 + 1415 3 7 -18.5 -1 0.55 1414 + 1416 3 6 -25.5 -6 0.55 1415 + 1417 3 4.5 -30.5 -6 0.55 1416 + 1418 3 3.5 -33 -6 0.45 1417 + 1419 3 4 -40.5 -6 0.45 1418 + 1420 3 4 -49 -10.5 0.45 1419 + 1421 3 5.5 -57.5 -8.5 0.45 1420 + 1422 3 5.5 -61 -8.5 0.45 1421 + 1423 3 6 -64.5 -8.5 0.45 1422 + 1424 3 3.5 -69 -8.5 0.45 1423 + 1425 3 5.5 -75 -7 0.45 1424 + 1426 3 5 -86 -6 0.45 1425 + 1427 3 6 -96 -6 0.45 1426 + 1428 3 5.5 -105 -5 0.45 1427 + 1429 3 4 -113.5 -9.5 0.45 1428 + 1430 3 5 -119 -9.5 0.4 1429 + 1431 3 6.5 -125.5 -9.5 0.4 1430 + 1432 3 5.5 -127.5 -9.5 0.4 1431 + 1433 3 5.5 -137.5 -9.5 0.4 1432 + 1434 3 3.5 -142.5 -7 0.4 1433 + 1435 3 4.5 -149.5 -6 0.4 1434 + 1436 3 4 -155 -12.5 0.4 1435 + 1437 3 4 -162 -12.5 0.4 1436 + 1438 3 2.5 -165.5 -12.5 0.4 1437 + 1439 3 2 -169.5 -12.5 0.3 1438 + 1440 3 4 -172 -12.5 0.3 1439 + 1441 3 2 -176.5 -11.5 0.3 1440 + 1442 3 3.5 -179 -20 0.3 1441 + 1443 3 3.5 -184 -19 0.3 1442 + 1444 3 0.5 -186.5 -19 0.3 1443 + 1445 3 -0.5 -189.5 -17 0.3 1444 + 1446 3 -1 -192 -15.5 0.3 1445 + 1447 3 -1.5 -193.5 -23 0.2 1446 + 1448 3 -2.5 -197 -21 0.2 1447 + 1449 3 -3 -200.5 -26.5 0.2 1448 + 1450 3 -4 -204 -26.5 0.2 1449 + 1451 3 7.5 -13 5.5 0.2 1414 + 1452 3 6 -16.5 9.5 0.3 1451 + 1453 3 8 -19 13 0.3 1452 + 1454 3 9 -29 17 0.3 1453 + 1455 3 9 -33 20.5 0.3 1454 + 1456 3 4.5 -38 20.5 0.3 1455 + 1457 3 3.5 -41.5 20.5 0.3 1456 + 1458 3 2 -46 19 0.3 1457 + 1459 3 1 -50 18 0.3 1458 + 1460 3 -0.5 -53 18 0.3 1459 + 1461 3 -4 -57.5 24.5 0.3 1460 + 1462 3 -3.5 -59 25.5 0.3 1461 + 1463 3 -3.5 -64 26.5 0.3 1462 + 1464 3 -2.5 -73.5 31 0.3 1463 + 1465 3 -2.5 -82.5 43.5 0.3 1464 + 1466 3 -1 -88.5 37 0.3 1465 + 1467 3 -1.5 -94 38.5 0.3 1466 + 1468 3 -2.5 -97.5 42.5 0.3 1467 + 1469 3 0 -99.5 48 0.3 1468 + 1470 3 1.5 -107 53 0.3 1469 + 1471 3 2.5 -110.5 56.5 0.3 1470 + 1472 3 3.5 -114 56.5 0.3 1471 + 1473 3 3 -116.5 60.5 0.3 1472 + 1474 3 2.5 -121.5 68 0.2 1473 + 1475 3 1.5 -125 69 0.2 1474 + 1476 3 2 -127 67 0.2 1475 + 1477 3 1.5 -130 67 0.2 1476 + 1478 3 -7 -65.5 25.5 0.3 1462 + 1479 3 -8 -69.5 25.5 0.3 1478 + 1480 3 -10 -74 30 0.3 1479 + 1481 3 -11.5 -79 28.5 0.3 1480 + 1482 3 -13 -83.5 28.5 0.3 1481 + 1483 3 -16.5 -88.5 35 0.3 1482 + 1484 3 -18.5 -94 36 0.3 1483 + 1485 3 -21.5 -100 36 0.3 1484 + 1486 3 -22.5 -107 37 0.3 1485 + 1487 3 -24 -114 37 0.3 1486 + 1488 3 -25 -123 36 0.3 1487 + 1489 3 -26.5 -128 38.5 0.3 1488 + 1490 3 -27.5 -132 39.5 0.3 1489 + 1491 3 -30 -138 38.5 0.3 1490 + 1492 3 -31 -142 39.5 0.3 1491 + 1493 3 -32.5 -146 39.5 0.3 1492 + 1494 3 -33 -149 39.5 0.3 1493 + 1495 3 -34.5 -152.5 39.5 0.3 1494 + 1496 3 -35 -155 39.5 0.3 1495 + 1497 3 -34.5 -158.5 38.5 0.3 1496 + 1498 3 -33 -163.5 38.5 0.2 1497 + 1499 3 -34 -167 38.5 0.2 1498 + 1500 3 -35 -169 38.5 0.2 1499 + 1501 3 -33 -170.5 38.5 0.2 1500 + 1502 3 -34.5 -173.5 36 0.2 1501 + 1503 3 -33.5 -174.5 37 0.2 1502 + 1504 3 7.5 -10 -9.5 0.3 1451 + 1505 3 12.5 -16 -17 0.3 1504 + 1506 3 14.5 -19 -17 0.3 1505 + 1507 3 15 -21 -17 0.3 1506 + 1508 3 16.5 -27.5 -15.5 0.3 1507 + 1509 3 16 -32 -24 0.3 1508 + 1510 3 19 -37.5 -23 0.3 1509 + 1511 3 16.5 -42.5 -27.5 0.3 1510 + 1512 3 17 -45.5 -26.5 0.3 1511 + 1513 3 18.5 -49.5 -25 0.3 1512 + 1514 3 20 -55.5 -24 0.3 1513 + 1515 3 23 -60.5 -23 0.3 1514 + 1516 3 22 -64 -29.5 0.3 1515 + 1517 3 23.5 -67 -33.5 0.3 1516 + 1518 3 25 -72 -38 0.3 1517 + 1519 3 25 -76 -42 0.3 1518 + 1520 3 26.5 -81 -47.5 0.3 1519 + 1521 3 29 -86.5 -47.5 0.3 1520 + 1522 3 28 -89 -51.5 0.3 1521 + 1523 3 30 -96 -56 0.3 1522 + 1524 3 30 -101.5 -61 0.3 1523 + 1525 3 30 -107.5 -65.5 0.3 1524 + 1526 3 32 -112.5 -64.5 0.3 1525 + 1527 3 35 -119 -67.5 0.3 1526 + 1528 3 36 -123.5 -74 0.3 1527 + 1529 3 37.5 -129 -77 0.3 1528 + 1530 3 38.5 -132 -81.5 0.3 1529 + 1531 3 41.5 -136.5 -83.5 0.3 1530 + 1532 3 42.5 -141.5 -87.5 0.3 1531 + 1533 3 41 -146.5 -87.5 0.2 1532 + 1534 3 42 -152 -95 0.2 1533 + 1535 3 43 -157 -91 0.2 1534 + 1536 3 43.5 -162 -96 0.2 1535 + 1537 3 44 -164.5 -98 0.2 1536 + 1538 3 43.5 -167 -104.5 0.2 1537 + 1539 3 41 -170.5 -99.5 0.2 1538 + 1540 3 39.5 -173 -100.5 0.15 1539 + 1541 3 18 -21 -15.5 0.3 1507 + 1542 3 22.5 -26.5 -23 0.3 1541 + 1543 3 25 -29 -25 0.3 1542 + 1544 3 29 -35 -26.5 0.3 1543 + 1545 3 33 -42 -30.5 0.3 1544 + 1546 3 36 -45 -36 0.3 1545 + 1547 3 39.5 -48 -37 0.3 1546 + 1548 3 38.5 -54 -37 0.3 1547 + 1549 3 40.5 -60 -37 0.3 1548 + 1550 3 41.5 -66 -37 0.3 1549 + 1551 3 40 -72 -37 0.3 1550 + 1552 3 41.5 -81 -34.5 0.3 1551 + 1553 3 44 -90.5 -34.5 0.3 1552 + 1554 3 46 -97 -34.5 0.3 1553 + 1555 3 46.5 -106 -34.5 0.3 1554 + 1556 3 48 -118 -41 0.3 1555 + 1557 3 46 -128.5 -42 0.3 1556 + 1558 3 48 -135 -49.5 0.3 1557 + 1559 3 47.5 -143 -49.5 0.3 1558 + 1560 3 49.5 -145.5 -49.5 0.3 1559 + 1561 3 47.5 -152.5 -48.5 0.3 1560 + 1562 3 48.5 -161.5 -46.5 0.3 1561 + 1563 3 47 -165.5 -46.5 0.3 1562 + 1564 3 46.5 -169.5 -50.5 0.3 1563 + 1565 3 48.5 -172 -49.5 0.3 1564 + 1566 3 46.5 -176.5 -49.5 0.3 1565 + 1567 3 48 -181.5 -55 0.3 1566 + 1568 3 47 -186 -54 0.2 1567 + 1569 3 46 -189 -55 0.2 1568 + 1570 3 43 -51 -31.5 0.3 1547 + 1571 3 46.5 -55 -32.5 0.3 1570 + 1572 3 49 -58.5 -39 0.3 1571 + 1573 3 53.5 -59.5 -39 0.3 1572 + 1574 3 54.5 -62.5 -41 0.3 1573 + 1575 3 59 -63.5 -45.5 0.3 1574 + 1576 3 62.5 -64.5 -47.5 0.3 1575 + 1577 3 64 -69.5 -45.5 0.3 1576 + 1578 3 64 -73 -44.5 0.3 1577 + 1579 3 63.5 -74.5 -50.5 0.3 1578 + 1580 3 6.5 -12.5 -1 0.3 1504 + 1581 3 10.5 -20.5 -2 0.3 1580 + 1582 3 14 -29.5 -2 0.3 1581 + 1583 3 17 -34.5 0 0.3 1582 + 1584 3 20 -40.5 0 0.3 1583 + 1585 3 22 -46 1 0.3 1584 + 1586 3 27.5 -51.5 0 0.3 1585 + 1587 3 28 -55 0 0.3 1586 + 1588 3 30 -58 1 0.3 1587 + 1589 3 33 -62 1 0.3 1588 + 1590 3 35 -63.5 3.5 0.3 1589 + 1591 3 35.5 -68.5 3.5 0.3 1590 + 1592 3 38 -72.5 2.5 0.2 1591 + 1593 3 39.5 -81.5 5.5 0.2 1592 + 1594 3 42.5 -86 5.5 0.2 1593 + 1595 3 44 -87.5 12 0.2 1594 + 1596 3 46.5 -90.5 14 0.2 1595 + 1597 3 49.5 -93 16 0.2 1596 + 1598 3 52 -97.5 18 0.2 1597 + 1599 3 55 -98.5 19 0.2 1598 + 1600 3 57.5 -100 19 0.2 1599 + 1601 3 40 -69 -3 0.3 1590 + 1602 3 42.5 -72 -5 0.3 1601 + 1603 3 47 -77 -10.5 0.3 1602 + 1604 3 49 -80.5 -5 0.3 1603 + 1605 3 53.5 -83 -13.5 0.3 1604 + 1606 3 56 -87 -12.5 0.3 1605 + 1607 3 58 -93 -14.5 0.3 1606 + 1608 3 59.5 -97 -19 0.3 1607 + 1609 3 63 -103.5 -21 0.3 1608 + 1610 3 66 -105.5 -21 0.3 1609 + 1611 3 67.5 -114.5 -26.5 0.3 1610 + 1612 3 70 -122 -24 0.3 1611 + 1613 3 71.5 -130.5 -27.5 0.3 1612 + 1614 3 71 -132.5 -27.5 0.2 1613 + 1615 3 71.5 -135 -28.5 0.2 1614 + 1616 3 71.5 -140 -27.5 0.15 1615 + 1617 3 71.5 -140 -28.5 0.15 1616 + 1618 3 8 -12.5 -5 0.4 1580 + 1619 3 13.5 -13 -3 0.4 1618 + 1620 3 15 -17.5 2.5 0.4 1619 + 1621 3 21 -20.5 3.5 0.4 1620 + 1622 3 27 -23.5 5.5 0.4 1621 + 1623 3 31 -27 2.5 0.3 1622 + 1624 3 34.5 -32.5 6.5 0.3 1623 + 1625 3 39 -38 7.5 0.3 1624 + 1626 3 41.5 -42 14 0.3 1625 + 1627 3 43 -45.5 12 0.3 1626 + 1628 3 46 -50.5 12 0.3 1627 + 1629 3 49.5 -53.5 12 0.3 1628 + 1630 3 51 -56 13 0.3 1629 + 1631 3 55.5 -54.5 21.5 0.3 1630 + 1632 3 58 -55 26.5 0.3 1631 + 1633 3 62.5 -55.5 32 0.3 1632 + 1634 3 64.5 -59 37 0.3 1633 + 1635 3 67.5 -63 33 0.3 1634 + 1636 3 70 -66.5 34 0.3 1635 + 1637 3 76.5 -68.5 34 0.3 1636 + 1638 3 81 -73.5 36 0.3 1637 + 1639 3 82.5 -76 36 0.3 1638 + 1640 3 84.5 -80 35 0.15 1639 + 1641 3 9.5 -18 19 0.3 1618 + 1642 3 11 -19.5 20.5 0.3 1641 + 1643 3 13.5 -20.5 19 0.3 1642 + 1644 3 19 -25.5 20.5 0.3 1643 + 1645 3 22 -27 24.5 0.3 1644 + 1646 3 22 -29 22.5 0.3 1645 + 1647 3 24.5 -32 32 0.3 1646 + 1648 3 24.5 -31.5 39.5 0.3 1647 + 1649 3 26 -34.5 40.5 0.3 1648 + 1650 3 27 -35.5 39.5 0.3 1649 + 1651 3 28 -39 42.5 0.3 1650 + 1652 3 30 -41 48 0.3 1651 + 1653 3 30 -43.5 48 0.3 1652 + 1654 3 29 -46 49 0.3 1653 + 1655 3 31.5 -46.5 50 0.3 1654 + 1656 3 31.5 -49 53 0.3 1655 + 1657 3 31.5 -50.5 54 0.3 1656 + 1658 3 34 -52.5 56.5 0.3 1657 + 1659 3 33 -54.5 61.5 0.3 1658 + 1660 3 32 -57.5 62.5 0.3 1659 + 1661 3 33 -59.5 62.5 0.3 1660 + 1662 3 32.5 -62 67 0.3 1661 + 1663 3 34.5 -65 64.5 0.3 1662 + 1664 3 34 -66.5 64.5 0.3 1663 + 1665 3 33.5 -69.5 68 0.3 1664 + 1666 3 33.5 -71 71 0.3 1665 + 1667 3 35 -75 75.5 0.3 1666 + 1668 3 34 -78 80.5 0.3 1667 + 1669 3 36.5 -80.5 87 0.3 1668 + 1670 3 37 -83.5 91 0.3 1669 + 1671 3 37 -86 86 0.2 1670 + 1672 3 35 -87 85 0.2 1671 + 1673 3 35 -87 86 0.2 1672 + 1674 3 31 -32 32 0.3 1648 + 1675 3 33 -35 36 0.3 1674 + 1676 3 38 -38.5 36 0.3 1675 + 1677 3 41.5 -41.5 39.5 0.3 1676 + 1678 3 45 -44 41.5 0.3 1677 + 1679 3 49.5 -47 48 0.3 1678 + 1680 3 51 -49 50 0.3 1679 + 1681 3 53 -51.5 50 0.3 1680 + 1682 3 56 -52.5 49 0.3 1681 + 1683 3 58 -55 54 0.3 1682 + 1684 3 60 -58 58.5 0.3 1683 + 1685 3 61.5 -58 58.5 0.3 1684 + 1686 3 64 -63 59.5 0.2 1685 + 1687 3 66 -65 58.5 0.2 1686 + 1688 3 67.5 -66.5 58.5 0.2 1687 + 1689 3 69 -68 57.5 0.2 1688 + 1690 3 74 -72.5 58.5 0.2 1689 + 1691 3 0 0 -4 0.65 1 + 1692 3 0.5 -5 -4 0.65 1691 + 1693 3 0 -10.5 -3 0.65 1692 + 1694 3 -0.5 -14 -3 0.65 1693 + 1695 3 -1 -17.5 -3 0.65 1694 + 1696 3 -2.5 -21.5 -1 0.65 1695 + 1697 3 -2.5 -22.5 -1 0.65 1696 + 1698 3 -4.5 -27 -1 0.45 1697 + 1699 3 -5 -30 -2 0.45 1698 + 1700 3 -6 -32 -2 0.45 1699 + 1701 3 -4 -35.5 -2 0.45 1700 + 1702 3 -5.5 -39 -2 0.45 1701 + 1703 3 -5.5 -41.5 -2 0.4 1702 + 1704 3 -3 -46 -2 0.4 1703 + 1705 3 -4.5 -51 3.5 0.4 1704 + 1706 3 -4.5 -50.5 2.5 0.4 1705 + 1707 3 -6.5 -56.5 0 0.4 1706 + 1708 3 -6.5 -63.5 1 0.4 1707 + 1709 3 -6 -69 1 0.4 1708 + 1710 3 -7 -71 1 0.4 1709 + 1711 3 -7.5 -73.5 2.5 0.4 1710 + 1712 3 -9 -77 0 0.4 1711 + 1713 3 -8 -80 1 0.4 1712 + 1714 3 -10 -84 -4 0.4 1713 + 1715 3 -11.5 -88 -4 0.4 1714 + 1716 3 -10 -94.5 -5 0.4 1715 + 1717 3 -11 -98.5 -5 0.4 1716 + 1718 3 -13.5 -104.5 -4 0.4 1717 + 1719 3 -13.5 -111 -8.5 0.4 1718 + 1720 3 -15 -115.5 -7 0.4 1719 + 1721 3 -16.5 -120.5 -7 0.4 1720 + 1722 3 -18.5 -126 -8.5 0.4 1721 + 1723 3 -19.5 -129 -6 0.4 1722 + 1724 3 -20 -133 -9.5 0.3 1723 + 1725 3 -20.5 -137.5 -9.5 0.3 1724 + 1726 3 -20 -142.5 -8.5 0.3 1725 + 1727 3 -20 -144.5 -8.5 0.3 1726 + 1728 3 -19 -148 -11.5 0.3 1727 + 1729 3 -19 -149.5 -15.5 0.3 1728 + 1730 3 -18.5 -154.5 -12.5 0.3 1729 + 1731 3 -20.5 -157 -12.5 0.3 1730 + 1732 3 -22 -160.5 -12.5 0.3 1731 + 1733 3 -20.5 -165 -12.5 0.2 1732 + 1734 3 -18.5 -166 -20 0.2 1733 + 1735 3 -2.5 -58.5 2.5 0.3 1706 + 1736 3 0 -67 8.5 0.3 1735 + 1737 3 0 -76.5 9.5 0.3 1736 + 1738 3 0.5 -87 9.5 0.3 1737 + 1739 3 0.5 -93.5 16 0.3 1738 + 1740 3 0 -97 15 0.3 1739 + 1741 3 0 -102.5 18 0.3 1740 + 1742 3 -0.5 -107.5 23.5 0.3 1741 + 1743 3 0.5 -113 26.5 0.3 1742 + 1744 3 2.5 -119 23.5 0.3 1743 + 1745 3 5 -127.5 23.5 0.3 1744 + 1746 3 2.5 -135.5 24.5 0.3 1745 + 1747 3 1 -136.5 25.5 0.3 1746 + 1748 3 2 -151.5 30 0.3 1747 + 1749 3 3.5 -158 31 0.3 1748 + 1750 3 3 -161.5 31 0.2 1749 + 1751 3 4.5 -163.5 31 0.3 1750 + 1752 3 3.5 -168.5 31 0.3 1751 + 1753 3 3.5 -172.5 32 0.3 1752 + 1754 3 5 -178 31 0.3 1753 + 1755 3 5.5 -184 31 0.2 1754 + 1756 3 5.5 -187.5 25.5 0.2 1755 + 1757 3 10 -191 27.5 0.2 1756 + 1758 3 9 -194.5 26.5 0.2 1757 + 1759 3 0.5 -28.5 -4 0.4 1697 + 1760 3 2.5 -32 -5 0.4 1759 + 1761 3 4 -35 -6 0.4 1760 + 1762 3 6.5 -41 -6 0.4 1761 + 1763 3 9 -46 -6 0.4 1762 + 1764 3 11.5 -51 -5 0.4 1763 + 1765 3 14 -57 -3 0.4 1764 + 1766 3 16 -63.5 -3 0.4 1765 + 1767 3 19 -67.5 -6 0.4 1766 + 1768 3 19 -67.5 -5 0.4 1767 + 1769 3 21 -74.5 -3 0.3 1768 + 1770 3 22.5 -79 -6 0.3 1769 + 1771 3 23.5 -85 -11.5 0.3 1770 + 1772 3 25 -90 -13.5 0.3 1771 + 1773 3 26.5 -97.5 -8.5 0.3 1772 + 1774 3 27 -106 -6 0.3 1773 + 1775 3 28 -112 -8.5 0.3 1774 + 1776 3 26.5 -117 -6 0.3 1775 + 1777 3 28 -121.5 -7 0.3 1776 + 1778 3 29 -125 -10.5 0.3 1777 + 1779 3 31.5 -134 -11.5 0.3 1778 + 1780 3 33 -137 -9.5 0.3 1779 + 1781 3 34 -148 -9.5 0.3 1780 + 1782 3 36.5 -150.5 -9.5 0.3 1781 + 1783 3 38 -155.5 -12.5 0.3 1782 + 1784 3 38.5 -160 -12.5 0.2 1783 + 1785 3 37.5 -164.5 -8.5 0.2 1784 + 1786 3 35.5 -166 -8.5 0.2 1785 + 1787 3 34.5 -166.5 -7 0.2 1786 + 1788 3 24 -76 -12.5 0.3 1768 + 1789 3 25.5 -78.5 -13.5 0.3 1788 + 1790 3 28 -83.5 -10.5 0.3 1789 + 1791 3 29.5 -88 -10.5 0.3 1790 + 1792 3 30.5 -91 -14.5 0.3 1791 + 1793 3 32.5 -96 -14.5 0.3 1792 + 1794 3 35 -99 -14.5 0.3 1793 + 1795 3 36 -101 -14.5 0.3 1794 + 1796 3 39 -104 -18 0.3 1795 + 1797 3 40.5 -111 -18 0.3 1796 + 1798 3 45.5 -116 -20 0.3 1797 + 1799 3 46.5 -121 -20 0.3 1798 + 1800 3 50.5 -126 -21 0.3 1799 + 1801 3 50.5 -130 -26.5 0.3 1800 + 1802 3 54 -138 -26.5 0.3 1801 + 1803 3 56.5 -143.5 -29.5 0.3 1802 + 1804 3 57.5 -149 -29.5 0.3 1803 + 1805 3 59.5 -154.5 -32.5 0.3 1804 + 1806 3 62.5 -160.5 -32.5 0.3 1805 + 1807 3 62 -166 -34.5 0.3 1806 + 1808 3 64.5 -169 -34.5 0.3 1807 + 1809 3 66 -173 -39 0.3 1808 + 1810 3 66 -176.5 -41 0.3 1809 + 1811 3 67 -179.5 -45.5 0.2 1810 + 1812 3 3 -17 -5 0.3 1694 + 1813 3 6 -21.5 -5 0.3 1812 + 1814 3 9 -24 -5 0.3 1813 + 1815 3 12 -29 -4 0.3 1814 + 1816 3 13 -32.5 -3 0.3 1815 + 1817 3 16 -34.5 -3 0.3 1816 + 1818 3 18.5 -38.5 -3 0.3 1817 + 1819 3 23 -41.5 -3 0.3 1818 + 1820 3 26 -44 -5 0.3 1819 + 1821 3 28.5 -48.5 -5 0.3 1820 + 1822 3 33 -52.5 -5 0.3 1821 + 1823 3 35.5 -53.5 -5 0.3 1822 + 1824 3 35 -57.5 -6 0.3 1823 + 1825 3 35 -64 -6 0.3 1824 + 1826 3 36 -70.5 -8.5 0.3 1825 + 1827 3 34.5 -75.5 -8.5 0.3 1826 + 1828 3 34 -81.5 -5 0.3 1827 + 1829 3 34.5 -90.5 -5 0.3 1828 + 1830 3 33 -95.5 -6 0.3 1829 + 1831 3 35.5 -99 -6 0.3 1830 + 1832 3 34 -101.5 -3 0.3 1831 + 1833 3 34 -105.5 -3 0.3 1832 + 1834 3 36 -110.5 -3 0.3 1833 + 1835 3 37 -114 -1 0.3 1834 + 1836 3 37.5 -121.5 -3 0.3 1835 + 1837 3 38 -127.5 3.5 0.3 1836 + 1838 3 38.5 -134.5 3.5 0.3 1837 + 1839 3 38 -136 2.5 0.3 1838 + 1840 3 41 -138.5 2.5 0.3 1839 + 1841 3 40.5 -141.5 2.5 0.3 1840 + 1842 3 43.5 -148.5 2.5 0.3 1841 + 1843 3 46.5 -155 -4 0.3 1842 + 1844 3 47.5 -158.5 -3 0.2 1843 + 1845 3 50 -164.5 -8.5 0.2 1844 + 1846 3 50 -169.5 -6 0.2 1845 + 1847 3 38 -63.5 -6 0.3 1824 + 1848 3 41.5 -73.5 -6 0.3 1847 + 1849 3 46.5 -83 -6 0.3 1848 + 1850 3 48 -87 -5 0.3 1849 + 1851 3 54 -90.5 -5 0.3 1850 + 1852 3 57.5 -95.5 -5 0.3 1851 + 1853 3 66 -102 -5 0.3 1852 + 1854 3 73 -104.5 -4 0.3 1853 + 1855 3 76.5 -110 -3 0.3 1854 + 1856 3 82 -114.5 -2 0.3 1855 + 1857 3 88.5 -117 -2 0.3 1856 + 1858 3 -3.5 0 16 0.85 1 + 1859 3 -7 -5.5 15 0.85 1858 + 1860 3 -8.5 -10 21.5 0.85 1859 + 1861 3 -12.5 -16 21.5 0.85 1860 + 1862 3 -16.5 -22 18 0.85 1861 + 1863 3 -17 -25 21.5 0.85 1862 + 1864 3 -20 -29.5 22.5 0.85 1863 + 1865 3 -22 -34 28.5 0.65 1864 + 1866 3 -25 -40.5 17 0.4 1865 + 1867 3 -28.5 -42 15 0.4 1866 + 1868 3 -31.5 -46 20.5 0.4 1867 + 1869 3 -33.5 -50 21.5 0.4 1868 + 1870 3 -35.5 -50 21.5 0.4 1869 + 1871 3 -37 -52.5 21.5 0.4 1870 + 1872 3 -40 -55 18 0.4 1871 + 1873 3 -44.5 -56.5 18 0.4 1872 + 1874 3 -47 -65 18 0.4 1873 + 1875 3 -49.5 -70.5 13 0.4 1874 + 1876 3 -50.5 -74 13 0.4 1875 + 1877 3 -51 -75.5 13 0.4 1876 + 1878 3 -53 -78 12 0.4 1877 + 1879 3 -54.5 -82 12 0.4 1878 + 1880 3 -56.5 -86.5 12 0.4 1879 + 1881 3 -59 -91 12 0.4 1880 + 1882 3 -60 -94 12 0.4 1881 + 1883 3 -61.5 -99.5 12 0.4 1882 + 1884 3 -64.5 -101 12 0.4 1883 + 1885 3 -68 -110 11 0.4 1884 + 1886 3 -70.5 -114 11 0.4 1885 + 1887 3 -74 -117.5 11 0.4 1886 + 1888 3 -73.5 -120 12 0.3 1887 + 1889 3 -76 -127.5 12 0.3 1888 + 1890 3 -79.5 -133 12 0.3 1889 + 1891 3 -82 -138.5 13 0.3 1890 + 1892 3 -82.5 -145 12 0.3 1891 + 1893 3 -84.5 -150.5 11 0.3 1892 + 1894 3 -87.5 -154 11 0.3 1893 + 1895 3 -21.5 -42 26.5 0.3 1865 + 1896 3 -22 -47.5 25.5 0.3 1895 + 1897 3 -23.5 -51.5 26.5 0.3 1896 + 1898 3 -25 -56.5 23.5 0.3 1897 + 1899 3 -24.5 -63.5 23.5 0.3 1898 + 1900 3 -25.5 -73 23.5 0.3 1899 + 1901 3 -28.5 -78 22.5 0.3 1900 + 1902 3 -28 -82.5 22.5 0.3 1901 + 1903 3 -30 -89 22.5 0.3 1902 + 1904 3 -31.5 -93 22.5 0.3 1903 + 1905 3 -31.5 -95 22.5 0.3 1904 + 1906 3 -31 -100.5 22.5 0.3 1905 + 1907 3 -32.5 -106 23.5 0.3 1906 + 1908 3 -33.5 -112.5 23.5 0.3 1907 + 1909 3 -35 -116 22.5 0.3 1908 + 1910 3 -36.5 -122.5 22.5 0.3 1909 + 1911 3 -38.5 -125 22.5 0.3 1910 + 1912 3 -37 -128 22.5 0.3 1911 + 1913 3 -38 -132 22.5 0.3 1912 + 1914 3 -39 -137 27.5 0.3 1913 + 1915 3 -40.5 -144.5 26.5 0.3 1914 + 1916 3 -40 -149.5 26.5 0.3 1915 + 1917 3 -41 -153.5 27.5 0.3 1916 + 1918 3 -41 -159.5 27.5 0.3 1917 + 1919 3 -40.5 -164 27.5 0.3 1918 + 1920 3 -40 -168.5 27.5 0.2 1919 + 1921 3 -23.5 -33.5 31 0.45 1864 + 1922 3 -25 -39 32 0.45 1921 + 1923 3 -26 -43 31 0.45 1922 + 1924 3 -25.5 -48 32 0.45 1923 + 1925 3 -27.5 -49 36 0.3 1924 + 1926 3 -29 -52 35 0.3 1925 + 1927 3 -33.5 -55 35 0.3 1926 + 1928 3 -36.5 -57 41.5 0.3 1927 + 1929 3 -38.5 -59.5 41.5 0.3 1928 + 1930 3 -39 -61.5 48 0.3 1929 + 1931 3 -44.5 -64 46.5 0.3 1930 + 1932 3 -47 -69.5 46.5 0.3 1931 + 1933 3 -48.5 -74.5 46.5 0.3 1932 + 1934 3 -48 -79.5 46.5 0.3 1933 + 1935 3 -46.5 -84 46.5 0.3 1934 + 1936 3 -44.5 -89.5 46.5 0.3 1935 + 1937 3 -45.5 -95.5 48 0.3 1936 + 1938 3 -47.5 -101.5 48 0.3 1937 + 1939 3 -48.5 -105 46.5 0.3 1938 + 1940 3 -47 -112.5 54 0.3 1939 + 1941 3 -48.5 -117.5 55 0.3 1940 + 1942 3 -49.5 -126 55 0.3 1941 + 1943 3 -51 -131.5 60.5 0.3 1942 + 1944 3 -53.5 -135 60.5 0.3 1943 + 1945 3 -54.5 -138 60.5 0.3 1944 + 1946 3 -54.5 -146 61.5 0.3 1945 + 1947 3 -58.5 -148.5 61.5 0.3 1946 + 1948 3 -59.5 -152 61.5 0.3 1947 + 1949 3 -60.5 -159.5 60.5 0.3 1948 + 1950 3 -59.5 -166 60.5 0.3 1949 + 1951 3 -61.5 -170.5 61.5 0.3 1950 + 1952 3 -62.5 -171.5 54 0.3 1951 + 1953 3 -63.5 -173.5 52 0.2 1952 + 1954 3 -65.5 -175.5 52 0.2 1953 + 1955 3 -66.5 -179 52 0.2 1954 + 1956 3 -68 -181.5 53 0.2 1955 + 1957 3 -71 -182.5 53 0.2 1956 + 1958 3 -72 -184 52 0.15 1957 + 1959 3 -73 -187.5 51 0.15 1958 + 1960 3 -73 -187.5 50 0.15 1959 + 1961 3 -26.5 -54.5 32 0.3 1924 + 1962 3 -24.5 -59.5 39.5 0.3 1961 + 1963 3 -24.5 -65 40.5 0.3 1962 + 1964 3 -24.5 -72.5 41.5 0.3 1963 + 1965 3 -22 -79 42.5 0.3 1964 + 1966 3 -23.5 -82 44.5 0.3 1965 + 1967 3 -23.5 -89 45.5 0.3 1966 + 1968 3 -23.5 -94.5 45.5 0.3 1967 + 1969 3 -25 -99.5 45.5 0.3 1968 + 1970 3 -26.5 -104.5 46.5 0.3 1969 + 1971 3 -28 -109.5 53 0.3 1970 + 1972 3 -27.5 -114.5 52 0.3 1971 + 1973 3 -27.5 -121 55 0.3 1972 + 1974 3 -26.5 -127 60.5 0.3 1973 + 1975 3 -30 -132.5 61.5 0.3 1974 + 1976 3 -29.5 -137 67 0.3 1975 + 1977 3 -28 -141 66 0.3 1976 + 1978 3 -31.5 -151.5 64.5 0.3 1977 + 1979 3 -31.5 -155 64.5 0.3 1978 + 1980 3 -32.5 -157.5 66 0.3 1979 + 1981 3 -32 -162 63.5 0.2 1980 + 1982 3 -30.5 -165.5 63.5 0.2 1981 + 1983 3 -33.5 -170 63.5 0.2 1982 + 1984 3 -34.5 -174.5 63.5 0.2 1983 + 1985 3 -36.5 -178.5 62.5 0.2 1984 + 1986 3 -35.5 -181.5 62.5 0.2 1985 + 1987 3 -37.5 -184.5 62.5 0.2 1986 + 1988 3 -37 -187.5 62.5 0.2 1987 + 1989 3 -4.5 1 -10.5 0.9 1 + 1990 3 -8.5 -3 -10.5 0.9 1989 + 1991 3 -10.5 -8 -11.5 0.9 1990 + 1992 3 -12.5 -11 -11.5 0.9 1991 + 1993 3 -13 -11 -11.5 0.9 1992 + 1994 3 -9 -16 -3 0.3 1993 + 1995 3 -10.5 -19 -3 0.3 1994 + 1996 3 -9.5 -27.5 -12.5 0.3 1995 + 1997 3 -8.5 -36.5 -14.5 0.3 1996 + 1998 3 -8 -45 -14.5 0.3 1997 + 1999 3 -5 -52.5 -19 0.3 1998 + 2000 3 -4 -59.5 -25 0.3 1999 + 2001 3 -2 -67 -33.5 0.3 2000 + 2002 3 -1 -72.5 -36 0.3 2001 + 2003 3 1 -80 -38 0.3 2002 + 2004 3 1 -85 -47.5 0.3 2003 + 2005 3 3.5 -90.5 -46.5 0.3 2004 + 2006 3 2.5 -94 -46.5 0.3 2005 + 2007 3 5.5 -101 -49.5 0.3 2006 + 2008 3 8 -110 -56 0.3 2007 + 2009 3 9.5 -116 -56 0.3 2008 + 2010 3 12.5 -120 -56 0.3 2009 + 2011 3 13.5 -129.5 -61 0.3 2010 + 2012 3 15 -138.5 -69.5 0.3 2011 + 2013 3 14.5 -142.5 -67.5 0.3 2012 + 2014 3 15 -146.5 -74 0.3 2013 + 2015 3 16 -154 -78 0.3 2014 + 2016 3 16 -155.5 -85.5 0.3 2015 + 2017 3 16.5 -159 -84.5 0.3 2016 + 2018 3 14 -163 -88.5 0.3 2017 + 2019 3 13.5 -167 -91 0.3 2018 + 2020 3 13 -173.5 -94 0.3 2019 + 2021 3 -18.5 -12.5 -11.5 0.55 1993 + 2022 3 -21 -16 -11.5 0.55 2021 + 2023 3 -24 -19 -6 0.55 2022 + 2024 3 -27 -23 -1 0.55 2023 + 2025 3 -29.5 -26.5 1 0.55 2024 + 2026 3 -34.5 -28.5 1 0.4 2025 + 2027 3 -40.5 -32 1 0.4 2026 + 2028 3 -45 -37 1 0.4 2027 + 2029 3 -50 -41 1 0.4 2028 + 2030 3 -55.5 -44.5 1 0.4 2029 + 2031 3 -60 -49 1 0.4 2030 + 2032 3 -65.5 -51 1 0.4 2031 + 2033 3 -69 -53 1 0.4 2032 + 2034 3 -71.5 -57 1 0.4 2033 + 2035 3 -77.5 -59 1 0.4 2034 + 2036 3 -81.5 -64 1 0.4 2035 + 2037 3 -85 -69 1 0.4 2036 + 2038 3 -89.5 -72.5 1 0.4 2037 + 2039 3 -94.5 -76 1 0.4 2038 + 2040 3 -95.5 -79 6.5 0.4 2039 + 2041 3 -99.5 -80.5 6.5 0.4 2040 + 2042 3 -103 -87.5 6.5 0.4 2041 + 2043 3 -108 -91 6.5 0.4 2042 + 2044 3 -115 -95.5 6.5 0.4 2043 + 2045 3 -119.5 -98.5 6.5 0.4 2044 + 2046 3 -123 -97 6.5 0.4 2045 + 2047 3 -125.5 -101 6.5 0.4 2046 + 2048 3 -129.5 -105.5 6.5 0.4 2047 + 2049 3 -132.5 -109.5 6.5 0.4 2048 + 2050 3 -136.5 -109.5 13 0.4 2049 + 2051 3 -140 -110.5 13 0.3 2050 + 2052 3 -142.5 -114 13 0.3 2051 + 2053 3 -146.5 -119 13 0.3 2052 + 2054 3 -149.5 -121 13 0.3 2053 + 2055 3 -154.5 -122 13 0.3 2054 + 2056 3 -15 -15.5 -14.5 0.4 1992 + 2057 3 -18.5 -19 -14.5 0.4 2056 + 2058 3 -22 -25 -13.5 0.4 2057 + 2059 3 -24.5 -30.5 -22 0.4 2058 + 2060 3 -26 -34 -27.5 0.4 2059 + 2061 3 -28.5 -37 -28.5 0.4 2060 + 2062 3 -29.5 -39.5 -28.5 0.4 2061 + 2063 3 -32.5 -45 -30.5 0.4 2062 + 2064 3 -36 -49.5 -31.5 0.4 2063 + 2065 3 -37 -52 -28.5 0.4 2064 + 2066 3 -38 -55.5 -27.5 0.4 2065 + 2067 3 -41.5 -59.5 -39 0.3 2066 + 2068 3 -43.5 -64.5 -38 0.3 2067 + 2069 3 -46.5 -69 -45.5 0.3 2068 + 2070 3 -50.5 -72 -45.5 0.3 2069 + 2071 3 -53 -77 -49.5 0.3 2070 + 2072 3 -54.5 -81 -49.5 0.3 2071 + 2073 3 -57.5 -84.5 -55 0.3 2072 + 2074 3 -59.5 -89 -61 0.3 2073 + 2075 3 -62.5 -94 -61 0.3 2074 + 2076 3 -63.5 -99 -61 0.3 2075 + 2077 3 -67.5 -104.5 -61 0.3 2076 + 2078 3 -69.5 -108.5 -61 0.3 2077 + 2079 3 -71.5 -115 -64.5 0.3 2078 + 2080 3 -71.5 -121 -64.5 0.3 2079 + 2081 3 -73 -125.5 -67.5 0.3 2080 + 2082 3 -77 -130.5 -69.5 0.3 2081 + 2083 3 -78.5 -136 -69.5 0.3 2082 + 2084 3 -82 -141.5 -70.5 0.3 2083 + 2085 3 -85 -146 -75 0.2 2084 + 2086 3 -87.5 -147.5 -73 0.2 2085 + 2087 3 -88.5 -151 -73 0.2 2086 + 2088 3 -91.5 -152 -72 0.2 2087 + 2089 3 -93 -153.5 -79 0.2 2088 + 2090 3 -95 -155.5 -79 0.2 2089 + 2091 3 -98 -156.5 -76 0.15 2090 + 2092 3 -39.5 -59 -22 0.3 2066 + 2093 3 -40.5 -63 -22 0.3 2092 + 2094 3 -43 -66.5 -23 0.3 2093 + 2095 3 -44.5 -72 -22 0.3 2094 + 2096 3 -46.5 -72.5 -22 0.3 2095 + 2097 3 -47.5 -75.5 -21 0.3 2096 + 2098 3 -50.5 -80 -21 0.3 2097 + 2099 3 -55.5 -86 -22 0.3 2098 + 2100 3 -59.5 -93 -22 0.3 2099 + 2101 3 -61 -97.5 -22 0.3 2100 + 2102 3 -65.5 -101 -22 0.3 2101 + 2103 3 -67.5 -106.5 -22 0.3 2102 + 2104 3 -71 -110 -22 0.3 2103 + 2105 3 -76 -113.5 -22 0.3 2104 + 2106 3 -79 -117.5 -17 0.3 2105 + 2107 3 -81.5 -122 -18 0.2 2106 + 2108 3 -83 -127 -17 0.2 2107 + 2109 3 -85.5 -131 -17 0.2 2108 + 2110 3 -86 -133.5 -10.5 0.2 2109 + 2111 3 -88.5 -134 -18 0.2 2110 + 2112 3 -27.5 -42.5 -31.5 0.3 2062 + 2113 3 -25 -48.5 -36 0.3 2112 + 2114 3 -24 -52.5 -36 0.3 2113 + 2115 3 -22 -58 -42 0.3 2114 + 2116 3 -20.5 -61 -44.5 0.3 2115 + 2117 3 -19.5 -66.5 -47.5 0.3 2116 + 2118 3 -20 -72 -50.5 0.3 2117 + 2119 3 -20 -79.5 -50.5 0.3 2118 + 2120 3 -21 -82.5 -56 0.3 2119 + 2121 3 -21 -87 -59 0.3 2120 + 2122 3 -21.5 -95 -57 0.3 2121 + 2123 3 -22.5 -99 -61 0.3 2122 + 2124 3 -22.5 -104 -67.5 0.3 2123 + 2125 3 -23.5 -108 -72 0.3 2124 + 2126 3 -23 -112.5 -76 0.3 2125 + 2127 3 -24.5 -117 -81.5 0.3 2126 + 2128 3 -24 -123.5 -81.5 0.3 2127 + 2129 3 -25.5 -129 -86.5 0.3 2128 + 2130 3 -24.5 -132.5 -91 0.3 2129 + 2131 3 -23 -135 -79 0.3 2130 + 2132 3 -21 -140 -79 0.3 2131 + 2133 3 -5.5 2.5 12 0.55 1 + 2134 3 -8 1.5 13 0.55 2133 + 2135 3 -4 0 13 0.45 2134 + 2136 3 -3.5 -2 19 0.45 2135 + 2137 3 -3 -6 24.5 0.45 2136 + 2138 3 -4.5 -7 31 0.45 2137 + 2139 3 -5.5 -8 34 0.45 2138 + 2140 3 -7.5 -8.5 35 0.45 2139 + 2141 3 -9.5 -8 35 0.45 2140 + 2142 3 -11 -10.5 41.5 0.45 2141 + 2143 3 -14 -13 42.5 0.45 2142 + 2144 3 -16.5 -14 46.5 0.45 2143 + 2145 3 -19 -18.5 49 0.45 2144 + 2146 3 -19 -20.5 48 0.45 2145 + 2147 3 -22 -22.5 51 0.4 2146 + 2148 3 -25 -22 46.5 0.4 2147 + 2149 3 -26 -23.5 51 0.4 2148 + 2150 3 -29 -25.5 51 0.4 2149 + 2151 3 -29.5 -26.5 57.5 0.4 2150 + 2152 3 -30.5 -28 54 0.4 2151 + 2153 3 -31.5 -27 55 0.4 2152 + 2154 3 -32.5 -29 66 0.4 2153 + 2155 3 -33 -30.5 66 0.4 2154 + 2156 3 -38.5 -33 67 0.4 2155 + 2157 3 -36.5 -36.5 72 0.4 2156 + 2158 3 -38 -40.5 74 0.4 2157 + 2159 3 -40.5 -44 77.5 0.4 2158 + 2160 3 -40.5 -47 77.5 0.3 2159 + 2161 3 -43 -50 73 0.3 2160 + 2162 3 -45.5 -52.5 82.5 0.3 2161 + 2163 3 -46.5 -55 88 0.3 2162 + 2164 3 -49 -57.5 91 0.3 2163 + 2165 3 -49 -61.5 93.5 0.3 2164 + 2166 3 -50.5 -64.5 95.5 0.3 2165 + 2167 3 -51.5 -68 95.5 0.3 2166 + 2168 3 -52.5 -72 102 0.3 2167 + 2169 3 -52 -75.5 109 0.3 2168 + 2170 3 -52.5 -78.5 113.5 0.3 2169 + 2171 3 -50.5 -80.5 120 0.3 2170 + 2172 3 -5 5 1 0.45 1 + 2173 3 -8.5 1.5 5.5 0.45 2172 + 2174 3 -12 0 1 0.45 2173 + 2175 3 -15 -3 1 0.45 2174 + 2176 3 -15.5 -6 1 0.45 2175 + 2177 3 -17 -7.5 5.5 0.4 2176 + 2178 3 -19.5 -11 4.5 0.4 2177 + 2179 3 -22.5 -13 5.5 0.4 2178 + 2180 3 -25 -18 5.5 0.4 2179 + 2181 3 -29.5 -21 4.5 0.4 2180 + 2182 3 -33.5 -24 4.5 0.4 2181 + 2183 3 -37.5 -25 7.5 0.4 2182 + 2184 3 -42 -30 6.5 0.4 2183 + 2185 3 -45.5 -36.5 6.5 0.4 2184 + 2186 3 -48 -42 7.5 0.4 2185 + 2187 3 -51 -45 7.5 0.4 2186 + 2188 3 -56.5 -49.5 13 0.4 2187 + 2189 3 -57 -52 13 0.4 2188 + 2190 3 -60 -53 12 0.4 2189 + 2191 3 -63 -55 12 0.4 2190 + 2192 3 -65 -60.5 18 0.4 2191 + 2193 3 -65.5 -62 18 0.4 2192 + 2194 3 -69 -63 18 0.3 2193 + 2195 3 -73 -66 18 0.3 2194 + 2196 3 -73.5 -67.5 18 0.3 2195 + 2197 3 -77 -68 19 0.3 2196 + 2198 3 -78 -72.5 18 0.3 2197 + 2199 3 -82.5 -77 23.5 0.3 2198 + 2200 3 -86.5 -82 26.5 0.3 2199 + 2201 3 -91 -83 30 0.3 2200 + 2202 3 -93 -86 30 0.3 2201 + 2203 3 -97.5 -90 33 0.3 2202 + 2204 3 -99.5 -92 33 0.3 2203 + 2205 3 -102.5 -95.5 35 0.3 2204 + 2206 3 -104 -100.5 38.5 0.3 2205 + 2207 3 -106.5 -102 38.5 0.3 2206 + 2208 3 -111 -104.5 38.5 0.3 2207 + 2209 3 -113 -107 44.5 0.3 2208 + 2210 3 -116 -109.5 43.5 0.3 2209 + 2211 3 -118 -113.5 43.5 0.3 2210 + 2212 3 -121.5 -116.5 43.5 0.3 2211 + 2213 3 -123.5 -117.5 43.5 0.3 2212 + 2214 3 -126.5 -119 43.5 0.3 2213 + 2215 3 -127 -122.5 44.5 0.3 2214 + 2216 3 -129.5 -126 44.5 0.3 2215 + 2217 3 -132 -129 48 0.3 2216 + 2218 3 -134 -130.5 48 0.3 2217 + 2219 3 -136.5 -133 48 0.3 2218 + 2220 3 -138 -134.5 48 0.3 2219 + 2221 3 -141 -136 48 0.3 2220 + 2222 3 -143.5 -136.5 48 0.3 2221 + 2223 3 -145.5 -136 51 0.3 2222 + 2224 3 -148 -136.5 50 0.3 2223 + 2225 3 -150.5 -136.5 50 0.3 2224 + 2226 3 -67.5 -66 18 0.3 2193 + 2227 3 -68.5 -70.5 18 0.3 2226 + 2228 3 -69.5 -72 18 0.3 2227 + 2229 3 -70.5 -75 17 0.3 2228 + 2230 3 -71.5 -80 18 0.3 2229 + 2231 3 -73.5 -85 18 0.3 2230 + 2232 3 -75.5 -88.5 18 0.3 2231 + 2233 3 -77 -93.5 18 0.3 2232 + 2234 3 -75 -96 18 0.3 2233 + 2235 3 -76.5 -101 27.5 0.3 2234 + 2236 3 -76.5 -106.5 28.5 0.3 2235 + 2237 3 -78.5 -112 27.5 0.3 2236 + 2238 3 -79.5 -118 30 0.3 2237 + 2239 3 -80.5 -120 30 0.3 2238 + 2240 3 -80.5 -122 30 0.3 2239 + 2241 3 -84 -128 28.5 0.3 2240 + 2242 3 -83 -132.5 33 0.3 2241 + 2243 3 -84 -137 33 0.3 2242 + 2244 3 -86 -136 36 0.3 2243 + 2245 3 -85.5 -139.5 37 0.2 2244 + 2246 3 -87.5 -139.5 37 0.2 2245 diff --git a/examples/snippets/bidirectionalPlasticity.py b/examples/snippets/bidirectionalPlasticity.py new file mode 100644 index 0000000..11d6b5e --- /dev/null +++ b/examples/snippets/bidirectionalPlasticity.py @@ -0,0 +1,66 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import moose +import os +import sys +import pylab + +def dumpPlots(): + fname = 'bidirectionalPlasticity.plot' + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/model/graphs/conc#/#,/model/moregraphs/conc#/#' ): + moose.element( x[0] ).xplot( fname, x[0].name ) + +def displayPlots(): + clock = moose.Clock( '/clock' ) # look up global clock + totR = moose.element( '/model/graphs/conc1/tot_PSD_R.Co' ) + PP1 = moose.element( '/model/moregraphs/conc4/PP1_dash_active.Co' ) + Ca = moose.element( '/model/graphs/conc1/Ca.Co' ) + pylab.plot( pylab.linspace( 0, clock.currentTime, len( totR.vector )), totR.vector, label='membrane Receptor' ) + pylab.plot( pylab.linspace( 0, clock.currentTime, len( PP1.vector ) ), PP1.vector, label='active PP1' ) + pylab.plot( pylab.linspace( 0, clock.currentTime, len( Ca.vector ) ), Ca.vector, label='Ca' ) + pylab.legend() + pylab.show() + +def main(): + """ + This is a toy model of synaptic bidirectional plasticity. The model has + a small a bistable chemical switch, and a small set of reactions that + decode calcium input. One can turn the switch on with short high + calcium pulses (over 2 uM for about 10 sec). One can turn it back off + again using a long, lower calcium pulse (0.2 uM, 2000 sec). + """ + method = 'old_gssa' # This is the Gillespie Stoichastic Systems Algorithm + if ( len( sys.argv ) >= 2 ): + method = sys.argv[1] + if ( method == "gsl" ): + method = "old_gsl" + if ( method == "gssa" ): + method = "old_gssa" + # Load in the model and set up to use the specified method + modelId = moose.loadModel( './stargazin_synapse.g', 'model', method ) + moose.start( 1000.0 ) # Run the model for 1000 seconds. + Ca = moose.element( '/model/kinetics/BULK/Ca' ) + Ca.concInit = 2.0e-3 # Calcium stimulus for turnon + moose.start( 20.0 ) # Run the model for 100 seconds. + Ca.concInit = 0.08e-3 # Calcium back to baseline + moose.start( 1000.0 ) # Let system settle for 1000 sec + Ca.concInit = 0.2e-3 # Calcium turnoff stimulus + moose.start( 2000.0 ) # Run the model for 1000 seconds for turnoff + Ca.concInit = 0.08e-3 # Calcium back to baseline + moose.start( 2000.0 ) # Let system settle for 2000 sec + + displayPlots() + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/branching.p b/examples/snippets/branching.p new file mode 100644 index 0000000..fc2d2c1 --- /dev/null +++ b/examples/snippets/branching.p @@ -0,0 +1,34 @@ +// genesis +// Artificial binary branching neuron geometry, 4 levels of branch. +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +soma none 0 15 0 15 + +dend1 soma 0 20 0 4 + +dend11 dend1 -10 10 0 3 +dend12 dend1 10 10 0 3 + +dend111 dend11 -10 0 0 2.12 +dend112 dend11 0 10 0 2.12 +dend121 dend12 0 10 0 2.12 +dend122 dend12 10 0 0 2.12 + +dend1111 dend111 -5 -5 0 1.5 +dend1112 dend111 -5 5 0 1.5 +dend1121 dend112 -5 5 0 1.5 +dend1122 dend112 5 5 0 1.5 +dend1211 dend121 -5 5 0 1.5 +dend1212 dend121 5 5 0 1.5 +dend1221 dend122 5 5 0 1.5 +dend1222 dend122 5 -5 0 1.5 diff --git a/examples/snippets/changeFuncExpression.py b/examples/snippets/changeFuncExpression.py new file mode 100644 index 0000000..13e9b6c --- /dev/null +++ b/examples/snippets/changeFuncExpression.py @@ -0,0 +1,130 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example illustrates how to set up a kinetic solver and kinetic model +# using the scripting interface. Normally this would be done using the +# Shell::doLoadModel command, and normally would be coordinated by the +# SimManager as the base of the entire model. +# This example creates a bistable model having two enzymes and a reaction. +# One of the enzymes is autocatalytic. +# The model is set up to run using Exponential Euler integration. + +import math +import pylab +import numpy +import moose + +useY = False + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-15 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + # a <----> b + # b + 10c ---func---> d + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + d = moose.BufPool( '/model/compartment/d' ) + reac = moose.Reac( '/model/compartment/reac' ) + func = moose.Function( '/model/compartment/d/func' ) + func.numVars = 2 + #func.x.num = 2 + + # connect them up for reactions + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + if useY: + moose.connect( func, 'requestOut', b, 'getN' ) + moose.connect( func, 'requestOut', c, 'getN' ) + else: + moose.connect( b, 'nOut', func.x[0], 'input' ) + moose.connect( c, 'nOut', func.x[1], 'input' ) + + moose.connect( func, 'valueOut', d, 'setN' ) + if useY: + func.expr = "y0 + 10*y1" + else: + func.expr = "x0 + 10*x1" + + # connect them up to the compartment for volumes + #for x in ( a, b, c, cplx1, cplx2 ): + # moose.connect( x, 'mesh', mesh, 'mesh' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 0.5 + c.concInit = 0.1 + reac.Kf = 0.001 + reac.Kb = 0.01 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + outputC = moose.Table2 ( '/model/graphs/concC' ) + outputD = moose.Table2 ( '/model/graphs/concD' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + moose.connect( outputC, 'requestOut', c, 'getConc' ); + moose.connect( outputD, 'requestOut', d, 'getConc' ); + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def main(): + makeModel() + ''' + ''' + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = moose.element( '/model/compartment' ) + stoich.ksolve = ksolve + stoich.path = "/model/compartment/##" + #solver.method = "rk5" + #mesh = moose.element( "/model/compartment/mesh" ) + #moose.connect( mesh, "remesh", solver, "remesh" ) + ''' + moose.setClock( 5, 1.0 ) # clock for the solver + moose.useClock( 5, '/model/compartment/ksolve', 'process' ) + ''' + + moose.reinit() + moose.start( 100.0 ) # Run the model for 100 seconds. + func = moose.element( '/model/compartment/d/func' ) + if useY: + func.expr = "-y0 + 10*y1" + else: + func.expr = "-x0 + 10*x1" + moose.start( 100.0 ) # Run the model for 100 seconds. + #moose.showfields( '/model/compartment/d' ) + #moose.showfields( '/model/compartment/d/func' ) + print func.x.value + print moose.element( '/model/compartment/b' ).n + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/chemDoseResponse.py b/examples/snippets/chemDoseResponse.py new file mode 100644 index 0000000..c3b7737 --- /dev/null +++ b/examples/snippets/chemDoseResponse.py @@ -0,0 +1,186 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import math +import pylab +import numpy +import moose + +def main(): + """ + This example builds a dose-response of a bistable model of a chemical + system. It uses the kinetic solver *Ksolve* and the steady-state finder + *SteadyState*. + The model is set up within the script. + + The basic approach is to increment the control variable, **a** in this + case, while monitoring **b**. + The algorithm marches through a series of values of the buffered pool + **a** and measures resultant values of pool **b**. At each cycle + the algorithm calls the steady-state finder. Since **a** is incremented + only a small amount on each step, each new steady state is + (usually) quite close to the previous one. The exception is when there + is a state transition. + + Here we plot three dose-response curves to illustrate the bistable + nature of the system. + + On the upward going curve in blue, **a** starts low. Here, + **b** follows the low arm of the curve + and then jumps up to the high value at roughly *log( [a] ) = -0.55*. + + On the downward going curve in green, **b** follows the high arm + of the curve forming a nice hysteretic loop. + Eventually **b** has to fall to the low state at about + *log( [a] ) = -0.83* + + Through nasty concentration manipulations, we find the third arm + of the curve, which tracks the unstable fixed point. This is in red. + We find this arm by + setting an initial point close to the unstable fixed point, which + the steady-state finder duly locates. We then follow a dose-response + curve as with the other arms of the curve. + + Note that the steady-state solver doesn't always succeed in finding a + good solution, despite moving only in small steps. Nevertheless the + resultant curves are smooth because it gives up pretty close to the + correct value, simply because the successive points are close together. + Overall, the system is pretty robust despite the core root-finder + computations in GSL being temperamental. + + In doing a production dose-response series + you may wish to sample concentration space logarithmically rather than + linearly. + """ + compartment = makeModel() + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.path = "/model/compartment/##" + state = moose.SteadyState( '/model/compartment/state' ) + + moose.reinit() + state.stoich = stoich + state.convergenceCriterion = 1e-6 + moose.seed( 111 ) # Used when generating the samples in state space + + b = moose.element( '/model/compartment/b' ) + a = moose.element( '/model/compartment/a' ) + c = moose.element( '/model/compartment/c' ) + a.concInit = 0.1 + deltaA = 0.002 + num = 150 + avec = [] + bvec = [] + moose.reinit() + + # Now go up. + for i in range( 0, num ): + moose.start( 1.0 ) # Run the model for 1 seconds. + state.settle() # This function finds the steady states. + avec.append( a.conc ) + bvec.append( b.conc ) + a.concInit += deltaA + #print i, a.conc, b.conc + pylab.plot( numpy.log10( avec ), numpy.log10( bvec ), label='b vs a up' ) + # Now go down. + avec = [] + bvec = [] + for i in range( 0, num ): + moose.start( 1.0 ) # Run the model for 1 seconds. + state.settle() # This function finds the steady states. + avec.append( a.conc ) + bvec.append( b.conc ) + a.concInit -= deltaA + #print i, a.conc, b.conc + + + pylab.plot( numpy.log10( avec ), numpy.log10( bvec ), label='b vs a down' ) + # Now aim for the middle. We do this by judiciously choosing a + # start point that should be closer to the unstable fixed point. + avec = [] + bvec = [] + a.concInit = 0.28 + b.conc = 0.15 + for i in range( 0, 65 ): + moose.start( 1.0 ) # Run the model for 1 seconds. + state.settle() # This function finds the steady states. + avec.append( a.conc ) + bvec.append( b.conc ) + a.concInit -= deltaA + #print i, a.conc, b.conc + pylab.plot( numpy.log10( avec ), numpy.log10( bvec ), label='b vs a mid' ) + + pylab.ylim( [-1.7, 1.2] ) + pylab.legend() + pylab.show() + + quit() + +def makeModel(): + """ This function creates a bistable reaction system using explicit + MOOSE calls rather than load from a file. + The reaction is:: + + a ---b---> 2b # b catalyzes a to form more of b. + 2b ---c---> a # c catalyzes b to form a. + a <======> 2b # a interconverts to b. + + """ + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-15 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.BufPool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + enz1 = moose.Enz( '/model/compartment/b/enz1' ) + enz2 = moose.Enz( '/model/compartment/c/enz2' ) + cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) + cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) + reac = moose.Reac( '/model/compartment/reac' ) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) # Note 2 molecules of b. + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'sub', b, 'reac' ) # Note 2 molecules of b. + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) # Note 2 order in b. + + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + + return compartment + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/compartment_net.py b/examples/snippets/compartment_net.py new file mode 100644 index 0000000..8d66b30 --- /dev/null +++ b/examples/snippets/compartment_net.py @@ -0,0 +1,174 @@ +# compartment_net.py --- +# +# Filename: compartment_net.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sat Aug 11 14:30:21 2012 (+0530) +# Version: +# Last-Updated: Sun Aug 12 15:45:38 2012 (+0530) +# By: subha +# Update #: 521 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# A demo to create a network of single compartmental neurons connected +# via alpha synapses. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""This script demonstrates the use of SynChan class to create a +network of single-compartment neurons connected by synapse.""" +import sys +sys.path.append('../../python') +import os +from pylab import * +import numpy as np +import matplotlib.pyplot as plt + +import moose +from ionchannel import create_1comp_neuron + +def create_population(container, size): + """Create a population of `size` single compartmental neurons with Na+ + and K+ channels. Also create SpikeGen objects and SynChan objects + connected to these which can act as plug points for setting up + synapses later. + + This uses ..ref::`ionchannel.create_1comp_neuron`. + + """ + path = container.path + print path, size, type(path) + comps = create_1comp_neuron('{}/neuron'.format(path), number=size) + synpath = path+'/synchan' + print synpath, size, type(size) + synchan = moose.vec(synpath, n=size, dtype='SynChan') + synchan.Gbar = 1e-8 + synchan.tau1 = 2e-3 + synchan.tau2 = 2e-3 + m = moose.connect(comps, 'channel', synchan, 'channel', 'OneToOne') + synhandler = moose.vec('{}/synhandler'.format(path), n=size, + dtype='SimpleSynHandler') + moose.connect(synhandler, 'activationOut', synchan, 'activation', 'OneToOne') + spikegen = moose.vec('{}/spikegen'.format(path), n=size, dtype='SpikeGen') + spikegen.threshold = 0.0 + m = moose.connect(comps, 'VmOut', spikegen, 'Vm', 'OneToOne') + return {'compartment': comps, 'spikegen': spikegen, 'synchan': + synchan, 'synhandler': synhandler} + +def make_synapses(spikegen, synhandler, connprob=1.0, delay=5e-3): + """Create synapses from spikegen array to synchan array. + + Parameters + ---------- + spikegen : vec of SpikGen elements + Spike generators from neurons. + + synhandler : vec of SynHandler elements + Handles presynaptic spike event inputs to synchans. + + connprob: float in range (0, 1] + connection probability between any two neurons + + delay: float + mean delay of synaptic transmission. Individual delays are + normally distributed with sd=0.1*mean. + """ + for sh in synhandler: + scount = len(spikegen) + sh.synapse.num = scount + sh.synapse.vec.delay = 5e-3 + for ii, syn in enumerate(sh.synapse): + msg = moose.connect(spikegen[ii], 'spikeOut', syn, 'addSpike') + print 'Connected', spikegen[ii].path, 'to', syn.path, 'on', sh.path + +def create_network(size=2): + """Create a network containing two neuronal populations, pop_A and + pop_B and connect them up""" + net = moose.Neutral('network') + pop_a = create_population(moose.Neutral('/network/pop_A'), size) + print pop_a + pop_b = create_population(moose.Neutral('/network/pop_B'), size) + make_synapses(pop_a['spikegen'], pop_b['synhandler']) + pulse = moose.PulseGen('pulse') + pulse.level[0] = 1e-9 + pulse.delay[0] = 0.02 # disable the pulsegen + pulse.width[0] = 40e-3 + pulse.delay[1] = 1e9 + data = moose.Neutral('/data') + vm_a = moose.Table('/data/Vm_A', n=size) + moose.connect(pulse, 'output', pop_a['compartment'], 'injectMsg', 'OneToAll') + moose.connect(vm_a, 'requestOut', pop_a['compartment'], 'getVm', 'OneToOne') + vm_b = moose.Table('/data/Vm_B', size) + moose.connect(vm_b, 'requestOut', pop_b['compartment'], 'getVm', 'OneToOne') + gksyn_b = moose.Table('/data/Gk_syn_b', n=size) + moose.connect(gksyn_b, 'requestOut', pop_b['synchan'], 'getGk', 'OneToOne') + pulsetable = moose.Table('/data/pulse') + pulsetable.connect('requestOut', pulse, 'getOutputValue') + return {'A': pop_a, + 'B': pop_b, + 'Vm_A': vm_a, + 'Vm_B': vm_b, + 'Gsyn_B': gksyn_b + } + +if __name__ == '__main__': + simtime = 0.1 + simdt = 0.25e-5 + plotdt = 0.25e-3 + netinfo = create_network(size=2) + vm_a = netinfo['Vm_A'] + vm_b = netinfo['Vm_B'] + gksyn_b = netinfo['Gsyn_B'] + for ii in range(10): + moose.setClock(ii, simdt) + moose.setClock(18, plotdt) + moose.reinit() + moose.start(simtime) + plt.subplot(221) + for oid in vm_a.vec: + print oid, oid.vector.shape + plt.plot(oid.vector, label=oid.path) + plt.legend() + plt.subplot(223) + for oid in vm_b.vec: + plt.plot(oid.vector, label=oid.path) + plt.legend() + plt.subplot(224) + for oid in gksyn_b.vec: + plt.plot(oid.vector, label=oid.path) + plt.legend() + plt.show() + + +# +# compartment_net.py ends here diff --git a/examples/snippets/compartment_net_no_array.py b/examples/snippets/compartment_net_no_array.py new file mode 100644 index 0000000..a67f271 --- /dev/null +++ b/examples/snippets/compartment_net_no_array.py @@ -0,0 +1,408 @@ +# compartment_net_no_array.py --- +# +# Filename: compartment_net_no_array.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sat Aug 11 14:30:21 2012 (+0530) +# Version: +# Last-Updated: Tue May 7 18:26:26 2013 (+0530) +# By: subha +# Update #: 974 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# A demo to create a network of single compartmental neurons connected +# via alpha synapses. This is same as compartment_net.py except that +# we avoid ematrix and use single melements. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import numpy as np +import matplotlib.pyplot as plt + +import moose +from moose import utils + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -40e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 30000 + +soma_dia = 30e-6 + +def create_na_chan(path): + na = moose.HHChannel('%s/na' % (path)) + na.Xpower = 3 + xGate = moose.HHGate(na.path + '/gateX') + xGate.setupAlpha(Na_m_params + + [VDIVS, VMIN, VMAX]) + na.Ypower = 1 + yGate = moose.HHGate(na.path + '/gateY') + yGate.setupAlpha(Na_h_params + + [VDIVS, VMIN, VMAX]) + na.Ek = 115e-3 + EREST_ACT + return na + +def create_k_chan(path): + k = moose.HHChannel('%s/k' % (path)) + k.Xpower = 4.0 + xGate = moose.HHGate(k.path + '/gateX') + xGate.setupAlpha(K_n_params + + [VDIVS, VMIN, VMAX]) + k.Ek = -12e-3 + EREST_ACT + return k + +def create_compartment(path): + comp = moose.Compartment(path) + comp.diameter = soma_dia + comp.Em = EREST_ACT + 10.613e-3 + comp.initVm = EREST_ACT + sarea = np.pi * soma_dia * soma_dia + comp.Rm = 1/(0.3e-3 * 1e4 * sarea) + comp.Cm = 1e-6 * 1e4 * sarea + if moose.exists('/library/na'): + nachan = moose.element(moose.copy('/library/na', comp, 'na')) + else: + nachan = create_na_chan(comp.path) + nachan.Gbar = 120e-3 * sarea * 1e4 + moose.showfield(nachan) + moose.connect(nachan, 'channel', comp, 'channel') + if moose.exists('/library/k'): + kchan = moose.element(moose.copy('/library/k', comp, 'k')) + else: + kchan = create_k_chan(comp.path) + kchan.Gbar = 36e-3 * sarea * 1e4 + moose.connect(kchan, 'channel', comp, 'channel') + synchan = moose.SynChan(comp.path + '/synchan') + synchan.Gbar = 1e-8 + synchan.tau1 = 2e-3 + synchan.tau2 = 2e-3 + synchan.Ek = 0.0 + m = moose.connect(comp, 'channel', synchan, 'channel') + spikegen = moose.SpikeGen(comp.path + '/spikegen') + spikegen.threshold = 0.0 + m = moose.connect(comp, 'VmOut', spikegen, 'Vm') + return comp + +def test_compartment(): + n = moose.Neutral('/model') + lib = moose.Neutral('/library') + create_na_chan(lib.path) + create_k_chan(lib.path) + comp = create_compartment('/model/soma') + pg = moose.PulseGen('/model/pulse') + pg.firstDelay = 50e-3 + pg.firstWidth = 40e-3 + pg.firstLevel = 1e-9 + moose.connect(pg, 'output', comp, 'injectMsg') + d = moose.Neutral('/data') + vm = moose.Table('/data/Vm') + moose.connect(vm, 'requestOut', comp, 'getVm') + gK = moose.Table('/data/gK') + moose.connect(gK, 'requestOut', moose.element('%s/k' % (comp.path)), 'getGk') + gNa = moose.Table('/data/gNa') + moose.connect(gNa, 'requestOut', moose.element('%s/na' % (comp.path)), 'getGk') + # utils.resetSim(['/model', '/data'], 1e-6, 1e-4, simmethod='ee') + assign_clocks(['/model'], 1e-6, 1e-4) + simtime = 100e-3 + moose.start(simtime) + t = np.linspace(0, simtime, len(vm.vector)) + plt.subplot(221) + plt.title('Vm') + plt.plot(t, vm.vector) + plt.subplot(222) + plt.title('Conductance') + plt.plot(t, gK.vector, label='GK') + plt.plot(t, gNa.vector, label='GNa') + plt.legend() + plt.subplot(223) + ma = moose.element('%s/na/gateX' % (comp.path)).tableA + mb = moose.element('%s/na/gateX' % (comp.path)).tableB + ha = moose.element('%s/na/gateY' % (comp.path)).tableA + hb = moose.element('%s/na/gateY' % (comp.path)).tableB + na = moose.element('%s/k/gateX' % (comp.path)).tableA + nb = moose.element('%s/k/gateX' % (comp.path)).tableB + plt.plot(1/mb, label='tau_m') + plt.plot(1/hb, label='tau_h') + plt.plot(1/nb, label='tau_n') + plt.legend() + plt.subplot(224) + plt.plot(ma/mb, label='m_inf') + plt.plot(ha/hb, label='h_inf') + plt.plot(na/nb, label='n_inf') + plt.legend() + plt.show() + plt.close() + +def create_population(container, size): + """Create a population of `size` single compartmental neurons with + Na and K channels. Also create SpikeGen objects and SynChan + objects connected to these which can act as plug points for + setting up synapses later.""" + path = container.path + # Contrast this with + # comps = moose.vec(path+'/soma', size, 'Compartment') + comps = [create_compartment(path+'/soma_%d' % (ii)) for ii in range(size)] + spikegens = [] + synchans = [] + Em = EREST_ACT + 10.613e-3 + initVm_array = [EREST_ACT] * size + Em_array = [Em] * size + # initVm_array = np.random.normal(EREST_ACT, np.abs(EREST_ACT) * 0.1, size) + # Em_array = np.random.normal(Em, np.abs(Em) * 0.1, size) + for comp, initVm, Em in zip(comps, initVm_array, Em_array): + comp.Em = Em + comp.initVm = initVm + synchan = moose.element(comp.path + '/synchan') + synchans.append(synchan) + spikegen = moose.element(comp.path + '/spikegen') + spikegens.append(spikegen) + + return {'compartment': comps, + 'spikegen': spikegens, + 'synchan': synchans} + +def make_synapses(spikegen, synchan, delay=5e-3): + """Create synapses from spikegens to synchans in a manner similar to + OneToAll connection. + + spikegen: list of spikegen objects - these are sources of synaptic + event messages. + + synchan: list of synchan objects - these are the targets of the + synaptic event messages. + + delay: mean delay of synaptic transmission. Individual delays are + normally distributed with sd=0.1*mean. + + """ + scount = len(spikegen) + for ii, sid in enumerate(synchan): + s = moose.SynChan(sid) + sh = moose.SimpleSynHandler( sid.path + "/synh" ) + moose.connect( sh, "activationOut", s, "activation" ) + sh.synapse.num = scount + delay_list = np.random.normal(delay, delay*0.1, scount) + # print delay_list + for jj in range(scount): + sh.synapse[jj].delay = delay_list[jj] + # Connect all spikegens to this synchan except that from + # same compartment - we assume if parents are same the two belong to the same compartment + if s.parent.path != spikegen[jj].parent.path: + m = moose.connect(spikegen[jj], 'spikeOut', moose.element(sh.path + '/synapse'), 'addSpike') + +def two_populations(size=2): + """An example with two population connected via synapses.""" + net = moose.Neutral('network2') + pop_a = create_population(moose.Neutral('/network2/pop_A'), size) + pop_b = create_population(moose.Neutral('/network2/pop_B'), size) + make_synapses(pop_a['spikegen'], pop_b['synchan']) + make_synapses(pop_b['spikegen'], pop_a['synchan']) + pulse = moose.PulseGen('/network2/net2_pulse') + pulse.firstLevel = 1e-9 + pulse.firstDelay = 0.05 # disable the pulsegen + pulse.firstWidth = 0.02 + moose.connect(pulse, 'output', pop_a['compartment'][0], 'injectMsg') + data = moose.Neutral('/data') + vm_a = [moose.Table('/data/net2_Vm_A_%d' % (ii)) for ii in range(size)] + for tab, comp in zip(vm_a, pop_a['compartment']): + moose.connect(tab, 'requestOut', comp, 'getVm') + vm_b = [moose.Table('/data/net2_Vm_B_%d' % (ii)) for ii in range(size)] + for tab, comp in zip(vm_b, pop_b['compartment']): + moose.connect(tab, 'requestOut', comp, 'getVm') + gksyn_a = [moose.Table('/data/net2_Gk_syn_a_%d' % (ii)) for ii in range(size)] + for tab, synchan in zip(gksyn_a, pop_a['synchan']): + moose.connect(tab, 'requestOut', synchan, 'getGk') + gksyn_b = [moose.Table('/data/net2_Gk_syn_b_%d' % (ii)) for ii in range(size)] + for tab, synchan in zip(gksyn_b, pop_b['synchan']): + moose.connect(tab, 'requestOut', synchan, 'getGk') + pulsetable = moose.Table('/data/net2_pulse') + pulsetable.connect('requestOut', pulse, 'getOutputValue') + return {'vm_a': vm_a, + 'vm_b': vm_b, + 'gksyn_a': gksyn_a, + 'gksyn_b': gksyn_b, + 'pulse': pulsetable,} + +def single_population(size=2): + """Example of a single population where each cell is connected to + every other cell. + + Creates a network of single compartmental cells under /network1 and a pulse generaor + + """ + net = moose.Neutral('network1') + pop = create_population(moose.Neutral('/network1'), size) + make_synapses(pop['spikegen'], pop['synchan']) + pulse = moose.PulseGen('/network1/net1_pulse') + pulse.firstLevel = 1e-9 + pulse.firstDelay = 0.05 + pulse.firstWidth = 0.02 + moose.connect(pulse, 'output', pop['compartment'][0], 'injectMsg') + data = moose.Neutral('/data') + vm = [moose.Table('/data/net1_Vm_%d' % (ii)) for ii in range(size)] + for tab, comp in zip(vm, pop['compartment']): + moose.connect(tab, 'requestOut', comp, 'getVm') + gksyn = [moose.Table('/data/net1_Gk_syn_%d' % (ii)) for ii in range(size)] + for tab, synchan in zip(gksyn, pop['synchan']): + moose.connect(tab, 'requestOut', synchan, 'getGk') + pulsetable = moose.Table('/data/net1_pulse') + pulsetable.connect('requestOut', pulse, 'getOutputValue') + return {'vm': vm, + 'gksyn': gksyn, + 'pulse': pulsetable,} + +inited = False +def assign_clocks(model_container_list, simdt, plotdt): + """Assign clocks to elements under the listed paths. + + This should be called only after all model components have been + created. Anything created after this will not be scheduled. + + """ + global inited + # `inited` is for avoiding double scheduling of the same object + if not inited: + print 'SimDt=%g, PlotDt=%g' % (simdt, plotdt) + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.setClock(3, simdt) + moose.setClock(4, plotdt) + for path in model_container_list: + print 'Scheduling elements under:', path + moose.useClock(0, '%s/##[TYPE=Compartment]' % (path), 'init') + moose.useClock(1, '%s/##[TYPE=Compartment]' % (path), 'process') + moose.useClock(2, '%s/##[TYPE=SynChan],%s/##[TYPE=HHChannel]' % (path, path), 'process') + moose.useClock(3, '%s/##[TYPE=SpikeGen],%s/##[TYPE=PulseGen]' % (path, path), 'process') + moose.useClock(4, '/data/##[TYPE=Table]', 'process') + inited = True + moose.reinit() + +if __name__ == '__main__': + # test_compartment() # this calls assign_clocks - after which nothing else will be scheduled. + simtime = 0.1 + simdt = 0.25e-5 + plotdt = 0.25e-3 + size = 2 + data1 = single_population(size=size) + data2 = two_populations(size=size) + assign_clocks(['/network1', '/network2'], simdt, plotdt) + # assign_clocks(['/network1'], simdt, plotdt) + moose.start(simtime) + plt.figure(1) + plt.suptitle('Single population') + plt.subplot(211) + for vm in data1['vm']: + t = np.linspace(0, simtime, len(vm.vector)) + plt.plot(t, vm.vector, label=vm.path) + plt.plot(np.linspace(0, simtime, len(data1['pulse'].vector)), data1['pulse'].vector * 1e6, label='Inject(uA)') + plt.legend() + plt.subplot(212) + for gk in data1['gksyn']: + t = np.linspace(0, simtime, len(gk.vector)) + plt.plot(t, gk.vector, label=gk.path) + plt.legend() + plt.figure(2) + plt.suptitle('Two populations') + plt.subplot(221) + for vm in data2['vm_a']: + t = np.linspace(0, simtime, len(vm.vector)) + plt.plot(t, vm.vector, label=vm.path) + plt.plot(np.linspace(0, simtime, len(data2['pulse'].vector)), data2['pulse'].vector*1e6, label='Inject(uA)') + plt.legend() + plt.subplot(223) + for vm in data2['vm_b']: + t = np.linspace(0, simtime, len(vm.vector)) + plt.plot(t, vm.vector, label=vm.path) + plt.legend() + plt.subplot(222) + for gk in data2['gksyn_a']: + t = np.linspace(0, simtime, len(gk.vector)) + plt.plot(t, gk.vector, label=gk.path) + plt.legend() + plt.subplot(224) + for gk in data2['gksyn_b']: + t = np.linspace(0, simtime, len(gk.vector)) + plt.plot(t, gk.vector, label=gk.path) + plt.legend() + plt.show() + + +# +# compartment_net_no_array.py ends here diff --git a/examples/snippets/compartmental_neuron.py b/examples/snippets/compartmental_neuron.py new file mode 100644 index 0000000..86ba70f --- /dev/null +++ b/examples/snippets/compartmental_neuron.py @@ -0,0 +1,128 @@ +# compartmental_neuron.py --- +# +# Filename: compartmental_neuron.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Tue Aug 7 10:27:26 2012 (+0530) +# Version: +# Last-Updated: Tue Dec 29 12:40:48 2015 (-0500) +# By: Subhasis Ray +# Update #: 86 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Demostrates how to connect two compartments to form a simple neuron. +# All units are in SI +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Setting up a compartmental neuron from scratch using MOOSE classes. + +A simple electrophysiological simulation of a neuron composed of two +passive compartments. A current pulse is injected into the `soma` +compartment and the membrane voltage in both compartments are recorded +and saved into a csv file. + +""" +from __future__ import print_function +import sys +import numpy as np +import moose +# Create the somatic compartment +model = moose.Neutral('/model') # This is a container for the model +soma = moose.Compartment('/model/soma') +soma.Em = -65e-3 # Leak potential +soma.initVm = -65e-3 # Initial membrane potential +soma.Rm = 5e9 # Total membrane resistance of the compartment +soma.Cm = 1e-12 # Total membrane capacitance of the compartment +soma.Ra = 1e6 # Total axial resistance of the compartment +# Create the axon +axon = moose.Compartment('/model/axon') +axon.Em = -65e-3 +axon.initVm = -65e-3 +axon.Rm = 2.5e9 +axon.Cm = 2e-12 +axon.Ra = 2e5 +# Connect the soma to the axon. Note the order of raxial-axial +# connection decides which Ra is going to be used in the computation. +# `raxial` message sends the Ra and Vm of the source to destionation, +# `axial` gets back the Vm of the destination. Try: +# moose.doc('Compartment.axial') in python interpreter for details. +moose.connect(soma, 'raxial', axon, 'axial') + +# Setup data recording +data = moose.Neutral('/data') +axon_Vm = moose.Table('/data/axon_Vm') +axon_Vm2 = moose.Table('/data/axon_Vm2') +moose.connect(axon_Vm, 'requestOut', axon, 'getVm') +moose.connect(axon_Vm2, 'requestOut', axon, 'getVm') + +# Now schedule the sequence of operations and time resolutions +moose.setClock(0, 0.025e-3) +moose.setClock(1, 0.025e-3) +moose.setClock(2, 0.25e-3) +# useClock: First argument is clock no. +# Second argument is a wildcard path matching all elements of type Compartment +# Last argument is the processing function to be executed at each tick of clock 0 +moose.useClock(0, '/model/#[TYPE=Compartment]', 'init') +moose.useClock(1, '/model/#[TYPE=Compartment]', 'process') +moose.useClock(2, axon_Vm.path, 'process') +moose.useClock(2, axon_Vm2.path, 'process') +# Now initialize everything and get set +moose.reinit() + +# Here we take a simple approach to try current injection experiemnt: +# Run the simulation for some time. Then set the `inject` field of the +# soma to a positive value and run for some more time. This will +# emulate a current injection for that duration. Finally, remove the +# current injection by setting the `inject` field back to 0 and run +# for some more time to get the discharging curve. + +# Normally you should use a PulseGen object for this instead of +# stopping the simulation midway to set the inject field.. +moose.start(50e-3) +# Now apply 1 pA current injection to soma +soma.inject = 1e-12 +# Run for 100 ms +moose.start(100e-3) +# Stop the current injection +soma.inject = 0.0 +# Run for 500 ms +moose.start(500e-3) +clock = moose.Clock('/clock') # Get a handle to the global clock +time = np.linspace(0, clock.currentTime, len(axon_Vm.vector)) +data = np.vstack((time, axon_Vm.vector, axon_Vm2.vector)) + +np.savetxt('compartmental_neuron.csv', data.T, delimiter=',', header='time,Vm1,Vm2') +print('Saved data in compartmental_neuron.csv') + +# +# compartmental_neuron.py ends here diff --git a/examples/snippets/convert_Genesis2Sbml.py b/examples/snippets/convert_Genesis2Sbml.py new file mode 100644 index 0000000..4fca921 --- /dev/null +++ b/examples/snippets/convert_Genesis2Sbml.py @@ -0,0 +1,64 @@ +# convert_Genesis2Sbml.py --- +# +# Filename: convert_Genesis2Sbml.py +# Description: +# Author:Harsha Rani +# Maintainer: +# Created: Mon Jan 19 09:16:58 2015 (+0530) +# Version: +# Last-Updated: Mon Nov 7 15:155:38 2012 (+0530) +# By: Harsha Rani +# Update #: +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# The script demonstates to convert Chemical (Genesis) file to SBML file using moose +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import moose +from moose.SBML import * +def main(): + """This example illustrates loading a kinetic model defined in Genesis format + into Moose using loadModel function and using writeSBML function + one can save the model into SBML format. \n + libsbml should be installed +""" + #This command loads the file into the path '/Kholodenko' + moose.loadModel('../genesis/Kholodenko.g','/Kholodenko') + + #Writes model to xml file + written = mooseWriteSBML('/Kholodenko','../genesis/Kholodenko_tosbml.xml') + print written + +if __name__ == '__main__': + main() diff --git a/examples/snippets/crossComptNeuroMesh.py b/examples/snippets/crossComptNeuroMesh.py new file mode 100644 index 0000000..189cc3b --- /dev/null +++ b/examples/snippets/crossComptNeuroMesh.py @@ -0,0 +1,241 @@ +######################################################################### +# +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +def makeCompt( name, parent, dx, dy, dia ): + RM = 1.0 + RA = 1.0 + CM = 0.01 + EM = -0.065 + pax = 0 + pay = 0 + if ( parent.className == "Compartment" ): + pax = parent.x + pay = parent.y + compt = moose.Compartment( name ) + compt.x0 = pax + compt.y0 = pay + compt.z0 = 0 + compt.x = pax + dx + compt.y = pay + dy + compt.z = 0 + compt.diameter = dia + clen = numpy.sqrt( dx * dx + dy * dy ) + compt.length = clen + compt.Rm = RM / (numpy.pi * dia * clen) + compt.Ra = RA * 4.0 * numpy.pi * clen / ( dia * dia ) + compt.Cm = CM * numpy.pi * dia * clen + if ( parent.className == "Compartment" ): + moose.connect( parent, 'raxial', compt, 'axial' ) + return compt + + +def makeNeuron( numSeg ): + segmentLength = 1e-6 + segmentDia = 1e-6 + shaftLength = 1e-6 + shaftDia = 0.2e-6 + headLength = 0.5e-6 + headDia = 0.5e-6 + + cell = moose.Neutral( '/model/cell' ) + model = moose.element( '/model' ) + prev = makeCompt( '/model/cell/soma', + model, 0.0, segmentLength, segmentDia ) + dend = prev + for i in range( 0, numSeg ): + name = '/model/cell/dend' + str( i ) + dend = makeCompt( name, dend, 0.0, segmentLength, segmentDia ) + name = '/model/cell/shaft' + str( i ) + shaft = makeCompt( name, dend, shaftLength, 0.0, shaftDia ) + name = '/model/cell/head' + str( i ) + head = makeCompt( name, shaft, headLength, 0.0, headDia ) + return cell + +def makeModel(): + numSeg = 5 + diffConst = 0.0 + # create container for model + model = moose.Neutral( 'model' ) + compt0 = moose.NeuroMesh( '/model/compt0' ) + compt0.separateSpines = 1 + compt0.geometryPolicy = 'cylinder' + compt1 = moose.SpineMesh( '/model/compt1' ) + moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) + compt2 = moose.PsdMesh( '/model/compt2' ) + moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) + + # create molecules and reactions + a = moose.Pool( '/model/compt0/a' ) + b = moose.Pool( '/model/compt1/b' ) + c = moose.Pool( '/model/compt2/c' ) + reac0 = moose.Reac( '/model/compt0/reac0' ) + reac1 = moose.Reac( '/model/compt1/reac1' ) + + # connect them up for reactions + moose.connect( reac0, 'sub', a, 'reac' ) + moose.connect( reac0, 'prd', b, 'reac' ) + moose.connect( reac1, 'sub', b, 'reac' ) + moose.connect( reac1, 'prd', c, 'reac' ) + + # Assign parameters + a.diffConst = diffConst + b.diffConst = diffConst + c.diffConst = diffConst + a.concInit = 1 + b.concInit = 12.1 + c.concInit = 1 + reac0.Kf = 1 + reac0.Kb = 1 + reac1.Kf = 1 + reac1.Kb = 1 + + # Create a 'neuron' with a dozen spiny compartments. + elec = makeNeuron( numSeg ) + # assign geometry to mesh + compt0.diffLength = 10e-6 + #compt0.cell = elec + compt0.subTreePath = elec.path + "/##" + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/compt0/ksolve' ) + ksolve1 = moose.Ksolve( '/model/compt1/ksolve' ) + ksolve2 = moose.Ksolve( '/model/compt2/ksolve' ) + stoich0 = moose.Stoich( '/model/compt0/stoich' ) + stoich1 = moose.Stoich( '/model/compt1/stoich' ) + stoich2 = moose.Stoich( '/model/compt2/stoich' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + stoich0.path = '/model/compt0/#' + stoich1.path = '/model/compt1/#' + stoich2.path = '/model/compt2/#' + assert( stoich0.numVarPools == 1 ) + assert( stoich0.numProxyPools == 1 ) + assert( stoich0.numRates == 1 ) + assert( stoich1.numVarPools == 1 ) + assert( stoich1.numProxyPools == 1 ) + assert( stoich1.numRates == 1 ) + assert( stoich2.numVarPools == 1 ) + assert( stoich2.numProxyPools == 0 ) + assert( stoich2.numRates == 0 ) + stoich0.buildXreacs( stoich1 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + + print a.vec.volume, b.vec.volume, c.vec.volume + a.vec.concInit = range( numSeg + 1, 0, -1 ) + b.vec.concInit = [5.0 * ( 1 + x ) for x in range( numSeg )] + c.vec.concInit = range( 1, numSeg + 1 ) + print a.vec.concInit, b.vec.concInit, c.vec.concInit + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + outputC = moose.Table2 ( '/model/graphs/concC' ) + + # connect up the tables + a1 = moose.element( '/model/compt0/a[' + str( numSeg )+ ']') + b1 = moose.element( '/model/compt1/b[' +str(numSeg - 1)+']') + c1 = moose.element( '/model/compt2/c[' +str(numSeg - 1)+']') + moose.connect( outputA, 'requestOut', a1, 'getConc' ); + moose.connect( outputB, 'requestOut', b1, 'getConc' ); + moose.connect( outputC, 'requestOut', c1, 'getConc' ); + + +def main(): + """ + This example illustrates how to define a kinetic model embedded in + a NeuroMesh, and undergoing cross-compartment reactions. It is + completely self-contained and does not use any external model definition + files. Normally one uses standard model formats like + SBML or kkit to concisely define kinetic and neuronal models. + This example creates a simple reaction:: + a <==> b <==> c + in which + **a, b**, and **c** are in the dendrite, spine head, and PSD + respectively. + The model is set up to run using the Ksolve for integration. Although + a diffusion solver is set up, the diff consts here are set to zero. + The display has two parts: + Above is a line plot of concentration against compartment#. + Below is a time-series plot that appears after # the simulation has + ended. The plot is for the last (rightmost) compartment. + Concs of **a**, **b**, **c** are plotted for both graphs. + """ + simdt = 0.01 + plotdt = 0.01 + + makeModel() + + # Schedule the whole lot + for i in range( 10, 19): + moose.setClock( i, simdt ) # for the compute objects + moose.reinit() + display() + quit() + +def display(): + dt = 0.01 + runtime = 1 + a = moose.element( '/model/compt0/a' ) + b = moose.element( '/model/compt1/b' ) + c = moose.element( '/model/compt2/c' ) + plt.ion() + fig = plt.figure( figsize=(12,10)) + timeseries = fig.add_subplot( 212 ) + spatial = fig.add_subplot( 211) + spatial.set_ylim(0, 15) + pos = numpy.arange( 0, a.vec.conc.size, 1 ) + line1, = spatial.plot( pos, a.vec.conc, 'b-', label='a' ) + line2, = spatial.plot( pos[1:], b.vec.conc, 'g-', label='b' ) + line3, = spatial.plot( pos[1:], c.vec.conc, 'r-', label='c' ) + timeLabel = plt.text( 3, 12, 'time = 0' ) + plt.legend() + fig.canvas.draw() + + for t in numpy.arange( dt, runtime, dt ): + line1.set_ydata( a.vec.conc ) + line2.set_ydata( b.vec.conc ) + line3.set_ydata( c.vec.conc ) + #print b.vec.volume + #print a.vec.n, b.vec.n, c.vec.n + timeLabel.set_text( "time = %f" % t ) + fig.canvas.draw() + #raw_input() + moose.start( dt ) + + timeseries.set_ylim( 0, 20 ) + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.arange( 0, x.vector.size *dt , dt ) # sec + line4, = timeseries.plot( t, x.vector, label=x.name ) + plt.legend() + fig.canvas.draw() + + print( "Hit 'enter' to exit" ) + raw_input() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/crossComptOscillator.py b/examples/snippets/crossComptOscillator.py new file mode 100644 index 0000000..cc812bc --- /dev/null +++ b/examples/snippets/crossComptOscillator.py @@ -0,0 +1,88 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import moose +import pylab +import numpy +import sys + +def deq( a, b ): + eps1 = 1e-9 + eps2 = 1e-20 + return ( abs (a-b) < eps1 * (abs(a) + abs(b)) + eps2 ) + +def main(): + """ + This example illustrates loading and running a reaction system that + spans two volumes, that is, is in different compartments. It uses a + kkit model file. You can tell if it is working if you see nice + relaxation oscillations. + """ + # the kkit reader doesn't know how to do multicompt solver setup. + solver = "ee" + mfile = '../genesis/OSC_diff_vols.g' + runtime = 3000.0 + simDt = 1.0 + modelId = moose.loadModel( mfile, 'model', solver ) + #moose.delete( '/model/kinetics/A/Stot' ) + compt0 = moose.element( '/model/kinetics' ) + compt1 = moose.element( '/model/compartment_1' ) + assert( deq( compt0.volume, 2e-20 ) ) + assert( deq( compt1.volume, 1e-20 ) ) + dy = compt0.dy + compt1.y1 += dy + compt1.y0 = dy + assert( deq( compt1.volume, 1e-20 ) ) + # We now have two cubes adjacent to each other. Compt0 has 2x vol. + # Compt1 touches it. + stoich0 = moose.Stoich( '/model/kinetics/stoich' ) + stoich1 = moose.Stoich( '/model/compartment_1/stoich' ) + ksolve0 = moose.Ksolve( '/model/kinetics/ksolve' ) + ksolve1 = moose.Ksolve( '/model/compartment_1/ksolve' ) + stoich0.compartment = compt0 + stoich0.ksolve = ksolve0 + stoich0.path = '/model/kinetics/##' + stoich1.compartment = compt1 + stoich1.ksolve = ksolve1 + stoich1.path = '/model/compartment_1/##' + #stoich0.buildXreacs( stoich1 ) + print ksolve0.numLocalVoxels, ksolve0.numPools, stoich0.numAllPools + assert( ksolve0.numLocalVoxels == 1 ) + assert( ksolve0.numPools == 7 ) + assert( stoich0.numVarPools == 5 ) + assert( stoich0.numBufPools == 1 ) + assert( stoich0.numProxyPools == 1 ) + assert( stoich0.numAllPools == 7 ) + print len( stoich0.proxyPools[stoich1] ), + print len( stoich1.proxyPools[stoich0] ) + assert( len( stoich0.proxyPools[stoich1] ) == 1 ) + assert( len( stoich1.proxyPools[stoich0] ) == 1 ) + print ksolve1.numLocalVoxels, ksolve1.numPools, stoich1.numAllPools + assert( ksolve1.numLocalVoxels == 1 ) + assert( ksolve1.numPools == 6 ) + assert( stoich1.numAllPools == 6 ) + stoich0.buildXreacs( stoich1 ) + print moose.element( '/model/kinetics/endo' ) + print moose.element( '/model/compartment_1/exo' ) + moose.le( '/model/compartment_1' ) + moose.reinit() + moose.start( runtime ) + + # Display all plots. + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * simDt + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + + #quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/crossComptSimpleReac.py b/examples/snippets/crossComptSimpleReac.py new file mode 100644 index 0000000..82571b3 --- /dev/null +++ b/examples/snippets/crossComptSimpleReac.py @@ -0,0 +1,154 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + + +import math +import matplotlib.pyplot as plt +import numpy +import moose + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compt0 = moose.CubeMesh( '/model/compt0' ) + compt0.volume = 1e-15 + compt1 = moose.CubeMesh( '/model/compt1' ) + compt1.volume = 1e-16 + compt2 = moose.CubeMesh( '/model/compt2' ) + compt2.volume = 1e-17 + + # Position containers so that they abut each other, with + # compt1 in the middle. + side = compt1.dy + compt0.y1 += side + compt0.y0 += side + compt2.x1 += side + compt2.x0 += side + print('Volumes = ', compt0.volume, compt1.volume, compt2.volume) + + # create molecules and reactions + a = moose.Pool( '/model/compt0/a' ) + b = moose.Pool( '/model/compt1/b' ) + c = moose.Pool( '/model/compt2/c' ) + reac0 = moose.Reac( '/model/compt1/reac0' ) + reac1 = moose.Reac( '/model/compt1/reac1' ) + + # connect them up for reactions + moose.connect( reac0, 'sub', a, 'reac' ) + moose.connect( reac0, 'prd', b, 'reac' ) + moose.connect( reac1, 'sub', b, 'reac' ) + moose.connect( reac1, 'prd', c, 'reac' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 12.1 + c.concInit = 1 + reac0.Kf = 0.1 + reac0.Kb = 0.1 + reac1.Kf = 0.1 + reac1.Kb = 0.1 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + outputC = moose.Table2 ( '/model/graphs/concC' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + moose.connect( outputC, 'requestOut', c, 'getConc' ); + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/compt0/ksolve0' ) + ksolve1 = moose.Ksolve( '/model/compt1/ksolve1' ) + ksolve2 = moose.Ksolve( '/model/compt2/ksolve2' ) + stoich0 = moose.Stoich( '/model/compt0/stoich0' ) + stoich1 = moose.Stoich( '/model/compt1/stoich1' ) + stoich2 = moose.Stoich( '/model/compt2/stoich2' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + stoich0.path = '/model/compt0/#' + stoich1.path = '/model/compt1/#' + stoich2.path = '/model/compt2/#' + stoich1.buildXreacs( stoich0 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + + +def main(): + """ + This example illustrates a simple cross compartment reaction:: + + a <===> b <===> c + + Here each molecule is in a different compartment. + The initial conditions are such that the end conc on all compartments + should be 2.0. + The time course depends on which compartment the Reac object is + embedded in. + The cleanest thing numerically and also conceptually is to have both + reactions in the same compartment, in this case the middle one + (**compt1**). + The initial conditions have a lot of **B**. The equilibrium with + **C** is fast and so **C** shoots up and passes **B**, peaking at + about (2.5,9). This is also just + about the crossover point. + **A** starts low and slowly climbs up to equilibrate. + + If we put **reac0** in **compt0** and **reac1** in **compt1**, + it behaves the same + qualitiatively but now the peak is at around (1, 5.2) + + This configuration of reactions makes sense from the viewpoint of + having the + reactions always in the compartment with the smaller volume, which is + important if we need to have junctions where many small voxels talk to + one big voxel in another compartment. + + Note that putting the reacs in other compartments doesn't work and in + some combinations (e.g., **reac0** in **compt0** and **reac1** in + **compt2**) give + numerical instability. + """ + simdt = 0.1 + plotdt = 0.1 + runtime = 100.0 + + makeModel() + + # MOOSE autoschedules everything. + moose.reinit() + moose.start( runtime ) # Run the model for 100 seconds. + print("All concs should converge to 2.0 even though vols differ:") + for x in moose.wildcardFind( '/model/compt#/#[ISA=PoolBase]' ): + print(x.name, x.conc) + + # FIXME: Plotting causes seg-fault. + ## Iterate through all plots, dump their contents to data.plot. + #for x in moose.wildcardFind( '/model/graphs/conc#' ): + # t = numpy.linspace( 0, runtime, x.vector.size ) # sec + # plt.plot( t, x.vector, label=x.name ) + #plt.legend() + #plt.show() + #quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/crossComptSimpleReacGSSA.py b/examples/snippets/crossComptSimpleReacGSSA.py new file mode 100644 index 0000000..879fd90 --- /dev/null +++ b/examples/snippets/crossComptSimpleReacGSSA.py @@ -0,0 +1,153 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + + +import math +import pylab +import numpy +import moose + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compt0 = moose.CubeMesh( '/model/compt0' ) + compt0.volume = 1e-18 + compt1 = moose.CubeMesh( '/model/compt1' ) + compt1.volume = 1e-19 + compt2 = moose.CubeMesh( '/model/compt2' ) + compt2.volume = 1e-20 + + # Position containers so that they abut each other, with + # compt1 in the middle. + side = compt1.dy + compt0.y1 += side + compt0.y0 += side + compt2.x1 += side + compt2.x0 += side + print('Volumes = ', compt0.volume, compt1.volume, compt2.volume) + + # create molecules and reactions + a = moose.Pool( '/model/compt0/a' ) + b = moose.Pool( '/model/compt1/b' ) + c = moose.Pool( '/model/compt2/c' ) + reac0 = moose.Reac( '/model/compt1/reac0' ) + reac1 = moose.Reac( '/model/compt1/reac1' ) + + # connect them up for reactions + moose.connect( reac0, 'sub', a, 'reac' ) + moose.connect( reac0, 'prd', b, 'reac' ) + moose.connect( reac1, 'sub', b, 'reac' ) + moose.connect( reac1, 'prd', c, 'reac' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 12.1 + c.concInit = 1 + reac0.Kf = 0.1 + reac0.Kb = 0.1 + reac1.Kf = 0.1 + reac1.Kb = 0.1 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + outputC = moose.Table2 ( '/model/graphs/concC' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + moose.connect( outputC, 'requestOut', c, 'getConc' ); + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Gsolve( '/model/compt0/ksolve0' ) + ksolve1 = moose.Gsolve( '/model/compt1/ksolve1' ) + ksolve2 = moose.Gsolve( '/model/compt2/ksolve2' ) + stoich0 = moose.Stoich( '/model/compt0/stoich0' ) + stoich1 = moose.Stoich( '/model/compt1/stoich1' ) + stoich2 = moose.Stoich( '/model/compt2/stoich2' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + stoich0.path = '/model/compt0/#' + stoich1.path = '/model/compt1/#' + stoich2.path = '/model/compt2/#' + stoich1.buildXreacs( stoich0 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + + +def main(): + """ + This example illustrates a simple cross compartment reaction:: + + a <===> b <===> c + + Here each molecule is in a different compartment. + The initial conditions are such that the end conc on all compartments + should be 2.0. + The time course depends on which compartment the Reac object is + embedded in. + The cleanest thing numerically and also conceptually is to have both + reactions in the same compartment, in this case the middle one + (**compt1**). + The initial conditions have a lot of **B**. The equilibrium with + **C** is fast and so **C** shoots up and passes **B**, peaking at + about (2.5,9). This is also just + about the crossover point. + **A** starts low and slowly climbs up to equilibrate. + + If we put **reac0** in **compt0** and **reac1** in **compt1**, + it behaves the same + qualitiatively but now the peak is at around (1, 5.2) + + This configuration of reactions makes sense from the viewpoint of + having the + reactions always in the compartment with the smaller volume, which is + important if we need to have junctions where many small voxels talk to + one big voxel in another compartment. + + Note that putting the reacs in other compartments doesn't work and in + some combinations (e.g., **reac0** in **compt0** and **reac1** in + **compt2**) give + numerical instability. + """ + simdt = 0.1 + plotdt = 0.1 + runtime = 100.0 + + makeModel() + + # MOOSE autoschedules everything. + moose.reinit() + moose.start( runtime ) # Run the model for 100 seconds. + print("All concs should converge to 2.0 even though vols differ:") + for x in moose.wildcardFind( '/model/compt#/#[ISA=PoolBase]' ): + print(x.name, x.conc) + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.linspace( 0, runtime, x.vector.size ) # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/cspaceSteadyState.py b/examples/snippets/cspaceSteadyState.py new file mode 100644 index 0000000..a21f3bf --- /dev/null +++ b/examples/snippets/cspaceSteadyState.py @@ -0,0 +1,122 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example sets up the kinetic solver and steady-state finder, on +# a bistable model. +# It looks for the fixed points 100 times, as follows: +# - Set up the random initial condition that fits the conservation laws +# - Run for 2 seconds. This should not be mathematically necessary, but +# for obscure numerical reasons it makes it much more likely that the +# steady state solver will succeed in finding a state. +# - Find the fixed point +# - Print out the fixed point vector and various diagnostics. +# - Run for 10 seconds. This is completely unnecessary, and is done here +# just so that the resultant graph will show what kind of state has been +# found. +# After it does all this, the program runs for 100 more seconds on the last +# found fixed point (which turns out to be a saddle node), then +# is hard-switched in the script to the first attractor basin from which +# it runs for another 100 seconds till it settles there, and then +# is hard-switched yet again to the second attractor and runs for 100 +# seconds. +# Looking at the output you will see many features of note: +# - the first attractor (stable point) and the saddle point +# (unstable fixed point) are both found quite often. But the second +# attractor is found just once. Has a very small basin of attraction. +# - The values found for each of the fixed points match well with the +# values found by running the system to steady-state at the end. +# - There are a large number of failures to find a fixed point. These are +# found and reported in the diagnostics. They show up on the plot +# as cases where the 10-second runs are not flat. +# +# If you wanted to find fixed points in a production model, you would +# not need to do the 10-second runs, and you would need to eliminate the +# cases where the state-finder failed. Then you could identify the good +# points and keep track of how many of each were found. +# There is no way to guarantee that all fixed points have been found using +# this algorithm! +# You may wish to sample concentration space logarithmically rather than +# linearly. + +import math +import pylab +import numpy +import moose + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def getState( ksolve, state ): + state.randomInit() + moose.start( 0.1 ) # Run the model for 2 seconds. + state.settle() + ''' + scale = 1.0 / ( 1e-15 * 6.022e23 ) + for x in ksolve.nVec[0]: + print x * scale, + # print ksolve.nVec[0] + print state.nIter, state.status, state.stateType, state.nNegEigenvalues, state.nPosEigenvalues, state.solutionStatus + ''' + moose.start( 20.0 ) # Run model for 10 seconds, just for display + + +def main(): + # The wildcard uses # for single level, and ## for recursive. + #compartment = makeModel() + moose.loadModel( '../genesis/M1719.cspace', '/model', 'ee' ) + compartment = moose.element( 'model/kinetics' ) + compartment.name = 'compartment' + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + #ksolve.stoich = stoich + stoich.path = "/model/compartment/##" + state = moose.SteadyState( '/model/compartment/state' ) + + moose.reinit() + state.stoich = stoich + #state.showMatrices() + state.convergenceCriterion = 1e-7 + + moose.le( '/model/graphs' ) + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + + for i in range( 0, 100 ): + getState( ksolve, state ) + + moose.start( 100.0 ) # Run the model for 100 seconds. + + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + + # move most molecules over to b + b.conc = b.conc + c.conc * 0.95 + c.conc = c.conc * 0.05 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + c.conc = c.conc + b.conc * 0.95 + b.conc = b.conc * 0.05 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/cubeMeshSigNeur.py b/examples/snippets/cubeMeshSigNeur.py new file mode 100644 index 0000000..4669db4 --- /dev/null +++ b/examples/snippets/cubeMeshSigNeur.py @@ -0,0 +1,307 @@ +# HsolveInstability.py --- + +# Commentary: +# +# A toy compartmental neuronal + chemical model in just a cubic volume +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import pylab + +import moose + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def createSquid(): + """Create a single compartment squid model.""" + parent = moose.Neutral ('/n' ) + elec = moose.Neutral ('/n/elec' ) + compt = moose.SymCompartment( '/n/elec/compt' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 * 0.5 + compt.Rm = 4.2e5 * 5.0 + compt.Ra = 7639.44e3 + compt.length = 100e-6 + compt.diameter = 4e-6 + nachan = moose.HHChannel( '/n/elec/compt/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) + yGate.useInterpolation = 1 + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') + + kchan = moose.HHChannel( '/n/elec/compt/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') + return compt + +def createSynapseOnCompartment( compt ): + FaradayConst = 96485.3415 # s A / mol + length = compt.length + dia = compt.diameter + + gluR = moose.SynChan( compt.path + '/gluR' ) + gluR.tau1 = 4e-3 + gluR.tau2 = 4e-3 + gluR.Gbar = 1e-6 + gluR.Ek= 10.0e-3 + moose.connect( compt, 'channel', gluR, 'channel', 'Single' ) + gluSyn = moose.SimpleSynHandler( compt.path + '/gluR/sh' ) + moose.connect( gluSyn, 'activationOut', gluR, 'activation' ) + gluSyn.synapse.num = 1 + # Ca comes in through this channel, at least for this example. + caPool = moose.CaConc( compt.path + '/ca' ) + caPool.CaBasal = 1e-4 # 0.1 micromolar + caPool.tau = 0.01 + B = 1.0 / ( FaradayConst * length * dia * dia * math.pi / 4) + B = B / 20.0 # scaling factor for Ca buffering + caPool.B = B + moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) + # Provide a regular synaptic input. + synInput = moose.SpikeGen( '/n/elec/compt/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + syn = moose.element( gluSyn.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 + syn.delay = 1.0e-3 + return gluR + +def createPool( compt, name, concInit ): + pool = moose.Pool( compt.path + '/' + name ) + pool.concInit = concInit + pool.diffConst = 5e-11 + return pool + +# This is a Ca-activated enzyme that phosphorylates and inactivates kChan +# as per the following scheme: +# Ca + inact_kinase <===> Ca.kinase +# kChan ----- Ca.kinase -----> kChan_p +# kChan_p -------> kChan +def createChemModel( neuroCompt ): + dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) + dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) + dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) + dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) + moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) + moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) + moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) + dendTurnOnKinase.Kf = 50000 + dendTurnOnKinase.Kb = 1 + dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) + dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) + kChan = createPool( neuroCompt, 'kChan', 1e-3 ) + kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) + moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) + dendKinaseEnz.Km = 1e-4 + dendKinaseEnz.kcat = 20 + dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) + moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) + moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) + dendPhosphatase.Kf = 1 + dendPhosphatase.Kb = 0.0 + +def makeModelInCubeMesh(): + compt = createSquid() + createSynapseOnCompartment( compt ) + chem = moose.Neutral( '/n/chem' ) + neuroMesh = moose.CubeMesh( '/n/chem/neuroMesh' ) + coords = [0] * 9 + coords[3] = compt.length + coords[4] = compt.diameter + coords[5] = compt.diameter + coords[6] = compt.length + coords[7] = compt.diameter + coords[8] = compt.diameter + neuroMesh.coords = coords + neuroMesh.preserveNumEntries = 1 + createChemModel( neuroMesh ) + dendCa = moose.element( '/n/chem/neuroMesh/Ca' ) + assert dendCa.volume == compt.length * compt.diameter * compt.diameter + dendKinaseEnzCplx = moose.element( '/n/chem/neuroMesh/Ca.kinase/enz/cplx' ) + assert dendKinaseEnzCplx.volume == dendCa.volume + # Make adaptors + # Note that we can do this two ways: We can use an existing output + # msg from the object, which will come whenever the object processes, + # or the adapator can request the object for the field, which happens + # whenever the adaptor processes. Here we illustrate both alternatives. + adaptK = moose.Adaptor( '/n/chem/neuroMesh/adaptK' ) + chemK = moose.element( '/n/chem/neuroMesh/kChan' ) + elecK = moose.element( '/n/elec/compt/K' ) + moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) + moose.connect( adaptK, 'output', elecK, 'setGbar', 'OneToAll' ) + adaptK.scale = 0.3 # from mM to Siemens + + adaptCa = moose.Adaptor( '/n/chem/neuroMesh/adaptCa' ) + chemCa = moose.element( '/n/chem/neuroMesh/Ca' ) + elecCa = moose.element( '/n/elec/compt/ca' ) + moose.connect( elecCa, 'concOut', adaptCa, 'input', 'OneToAll' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToAll' ) + adaptCa.outputOffset = 0.0001 # 100 nM offset in chem conc + adaptCa.scale = 0.05 # Empirical: 0.06 max to 0.003 mM + +def addPlot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def displayPlots(): + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/n/elec/compt', 'getVm', 'elec/Vm' ) + addPlot( '/n/elec/compt/ca', 'getCa', 'elec/Ca' ) + addPlot( '/n/elec/compt/K', 'getGk', 'elec/K_Gk' ) + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + addPlot( '/n/chem/neuroMesh/Ca', 'getConc', 'chemCa' ) + addPlot( '/n/chem/neuroMesh/kChan_p', 'getConc', 'chemkChan_p' ) + addPlot( '/n/chem/neuroMesh/kChan', 'getConc', 'chemkChan' ) + addPlot( '/n/chem/neuroMesh/Ca.kinase', 'getConc', 'activeKinase' ) + +def testCubeMultiscale( useSolver ): + elecDt = 10e-6 + chemDt = 1e-4 + plotDt = 5e-4 + plotName = 'cm.plot' + if ( useSolver ): + elecDt = 50e-6 + chemDt = 2e-3 + plotName = 'solve_cm.plot' + + makeModelInCubeMesh() + makeChemPlots() + makeElecPlots() + ''' + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 1, '/n/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/n/##[ISA=SynBase]','process') + moose.useClock( 6, '/n/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + moose.useClock( 0, '/n/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/n/##[ISA=Compartment]', 'process' ) + moose.useClock( 2, '/n/##[ISA=ChanBase],/n/##[ISA=SynBase],/n/##[ISA=CaConc]','process') + moose.useClock( 5, '/n/##[ISA=PoolBase],/n/##[ISA=ReacBase],/n/##[ISA=EnzBase]', 'process' ) + ''' + if ( useSolver ): + ksolve = moose.Ksolve( '/n/ksolve' ) + stoich = moose.Stoich( '/n/stoich' ) + stoich.compartment = moose.element( '/n/chem/neuroMesh' ) + stoich.ksolve = ksolve + stoich.path = '/n/##' + ksolve.method = 'rk5' + #moose.useClock( 5, '/n/ksolve', 'process' ) + hsolve = moose.HSolve( '/n/hsolve' ) + #moose.useClock( 1, '/n/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/n/compt' + moose.reinit() + moose.start( 1 ) + displayPlots() + +def main(): + testCubeMultiscale( 1 ) # change argument to 0 to run without solver. + +if __name__ == '__main__': + main() + +# cubeMeshSigNeur.py ends here diff --git a/examples/snippets/cylinderDiffusion.py b/examples/snippets/cylinderDiffusion.py new file mode 100644 index 0000000..0b4d866 --- /dev/null +++ b/examples/snippets/cylinderDiffusion.py @@ -0,0 +1,194 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import sys +sys.path.append('../../python') +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +import os +import signal +PID = os.getpid() + +def doNothing( *args ): + pass + +signal.signal( signal.SIGUSR1, doNothing ) + +def makeModel(): + """ + This example illustrates how to set up a diffusion/transport model with + a simple reaction-diffusion system in a tapering cylinder: + + | Molecule **a** diffuses with diffConst of 10e-12 m^2/s. + | Molecule **b** diffuses with diffConst of 5e-12 m^2/s. + | Molecule **b** also undergoes motor transport with a rate of 10e-6 m/s + | Thus it 'piles up' at the end of the cylinder. + | Molecule **c** does not move: diffConst = 0.0 + | Molecule **d** does not move: diffConst = 10.0e-12 but it is buffered. + | Because it is buffered, it is treated as non-diffusing. + + All molecules other than **d** start out only in the leftmost (first) + voxel, with a concentration of 1 mM. **d** is present throughout + at 0.2 mM, except in the last voxel, where it is at 1.0 mM. + + The cylinder has a starting radius of 2 microns, and end radius of + 1 micron. So when the molecule undergoing motor transport gets to the + narrower end, its concentration goes up. + + There is a little reaction in all compartments: ``b + d <===> c`` + + As there is a high concentration of **d** in the last compartment, + when the molecule **b** reaches the end of the cylinder, the reaction + produces lots of **c**. + + Note that molecule **a** does not participate in this reaction. + + The concentrations of all molecules are displayed in an animation. + """ + # create container for model + r0 = 2e-6 # m + r1 = 1e-6 # m + num = 100 + diffLength = 1e-6 # m + len = num * diffLength # m + diffConst = 10e-12 # m^2/sec + motorRate = 10e-6 # m/sec + concA = 1 # millimolar + + model = moose.Neutral( 'model' ) + compartment = moose.CylMesh( '/model/compartment' ) + compartment.r0 = r0 + compartment.r1 = r1 + compartment.x0 = 0 + compartment.x1 = len + compartment.diffLength = diffLength + + assert( compartment.numDiffCompts == num ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + d = moose.BufPool( '/model/compartment/d' ) + r1 = moose.Reac( '/model/compartment/r1' ) + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'sub', d, 'reac' ) + moose.connect( r1, 'prd', c, 'reac' ) + r1.Kf = 1.0 # 1/(mM.sec) + r1.Kb = 1.0 # 1/sec + + # Assign parameters + a.diffConst = diffConst + b.diffConst = diffConst / 2.0 + b.motorConst = motorRate + c.diffConst = 0 + d.diffConst = diffConst + + + # Make solvers + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + dsolve = moose.Dsolve( '/model/compartment/dsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.dsolve = dsolve + os.kill( PID, signal.SIGUSR1 ) + stoich.path = "/model/compartment/##" + + print dsolve.numPools + assert( dsolve.numPools == 3 ) + a.vec[0].concInit = concA + b.vec[0].concInit = concA + c.vec[0].concInit = concA + d.vec.concInit = concA / 5.0 + d.vec[num-1].concInit = concA + +def makePlots(): + plt.ion() + fig = plt.figure( figsize=(12,6) ) + dynamic = fig.add_subplot( 111 ) + + a = moose.vec( '/model/compartment/a' ) + b = moose.vec( '/model/compartment/b' ) + c = moose.vec( '/model/compartment/c' ) + d = moose.vec( '/model/compartment/d' ) + pos = numpy.arange( 0, a.conc.size, 1 ) + aline, = dynamic.plot( pos, a.conc, label='a' ) + bline, = dynamic.plot( pos, b.conc, label='b' ) + cline, = dynamic.plot( pos, c.conc, label='c' ) + dline, = dynamic.plot( pos, d.conc, label='d' ) + + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Cylinder voxel #' ) + plt.legend() + timelabel = plt.text( 10, 0.8, 'time = 0.0' ) + fig.canvas.draw() + return( fig, dynamic, timelabel, aline, bline, cline, dline ) + +def updatePlots( plotlist, time ): + a = moose.vec( '/model/compartment/a' ) + b = moose.vec( '/model/compartment/b' ) + c = moose.vec( '/model/compartment/c' ) + d = moose.vec( '/model/compartment/d' ) + + plotlist[2].set_text( "time = %g" % time ) + plotlist[3].set_ydata( a.conc ) + plotlist[4].set_ydata( b.conc ) + plotlist[5].set_ydata( c.conc ) + plotlist[6].set_ydata( d.conc ) + plotlist[0].canvas.draw() + + +def main(): + runtime = 20.0 + diffdt = 0.005 + plotdt = 0.1 + makeModel() + # Set up clocks. The dsolver to know before assigning stoich + moose.setClock( 10, diffdt ) # 10 is the standard clock for Dsolve. + moose.setClock( 16, plotdt ) # 16 is the standard clock for Ksolve. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + d = moose.element( '/model/compartment/d' ) + + moose.reinit() + atot = sum( a.vec.n ) + btot = sum( b.vec.n ) + ctot = sum( c.vec.n ) + dtot = sum( d.vec.n ) + plotlist = makePlots() + for t in numpy.arange( 0, runtime, plotdt ): + moose.start( plotdt ) + updatePlots( plotlist, t ) + # moose.start( runtime ) # Run the model + + atot2 = sum( a.vec.n ) + btot2 = sum( b.vec.n ) + ctot2 = sum( c.vec.n ) + dtot2 = sum( d.vec.n ) + + print 'Ratio of initial to final total numbers of of a, b, c, d = ' + print atot2/atot, btot2/btot, ctot2/ctot, dtot2/dtot + print 'Initial to final (b+c)=', (btot2 + ctot2) / (btot + ctot ) + print "\nHit 'enter' to exit" + raw_input() + + quit() + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/cylinderMotor.py b/examples/snippets/cylinderMotor.py new file mode 100644 index 0000000..91257b9 --- /dev/null +++ b/examples/snippets/cylinderMotor.py @@ -0,0 +1,154 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example illustrates how to set up a transport model with +# four non-reacting molecules in a cylinder. +# Molecule a and b have a positive motorConst so they are +# are transported from soma (voxel 0) to the end of the cylinder. +# Molecules c and d have a negative motorConst so they are transported +# from the end of the cylinder to the soma. +# Rate of all motors is 1e-6 microns/sec. +# Pools a and c start out with all molecules at the soma, b and d +# start with all molecules at the end of the cylinder. +# Net effect is that only molecules a and d actually move. B and c +# stay put as their motors are pushing further toward their respective +# ends, and I assume all cells have sealed ends. + +import math +import pylab +import numpy +import moose + +import os +import signal +PID = os.getpid() + +def doNothing( *args ): + pass + +signal.signal( signal.SIGUSR1, doNothing ) + +def makeModel(): + # create container for model + r0 = 1e-6 # m + r1 = 1e-6 # m + num = 25 + diffLength = 1e-6 # m + len = num * diffLength # m + diffConst = 1e-12 # m^2/sec + motorConst = 1e-6 # m/sec + concA = 1 # millimolar + + model = moose.Neutral( 'model' ) + compartment = moose.CylMesh( '/model/compartment' ) + compartment.r0 = r0 + compartment.r1 = r1 + compartment.x0 = 0 + compartment.x1 = len + compartment.diffLength = diffLength + + assert( compartment.numDiffCompts == num ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + d = moose.Pool( '/model/compartment/d' ) + """ + r1 = moose.Reac( '/model/compartment/r1' ) + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'sub', d, 'reac' ) + moose.connect( r1, 'prd', c, 'reac' ) + r1.Kf = 100 # 1/(mM.sec) + r1.Kb = 0.01 # 1/sec + """ + + # Assign parameters + a.diffConst = 0.0; + b.diffConst = 0.0; + #b.motorRate = motorRate + c.diffConst = 0.0; + d.diffConst = 0.0; + #d.diffConst = diffConst; + os.kill( PID, signal.SIGUSR1 ) + a.motorConst = motorConst + b.motorConst = motorConst + c.motorConst = -motorConst + d.motorConst = -motorConst + + + # Make solvers + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + dsolve = moose.Dsolve( '/model/compartment/dsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.dsolve = dsolve + stoich.path = "/model/compartment/##" + assert( dsolve.numPools == 4 ) + a.vec[0].concInit = concA * 1 + b.vec[num-1].concInit = concA * 2 + c.vec[0].concInit = concA * 3 + d.vec[num-1].concInit = concA * 4 + +def displayPlots(): + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + d = moose.element( '/model/compartment/d' ) + pos = numpy.arange( 0, a.vec.conc.size, 1 ) + pylab.plot( pos, a.vec.conc, label='a' ) + pylab.plot( pos, b.vec.conc, label='b' ) + pylab.plot( pos, c.vec.conc, label='c' ) + pylab.plot( pos, d.vec.conc, label='d' ) + pylab.legend() + pylab.show() + +def main(): + dt4 = 0.01 + dt5 = 0.01 + runtime = 10.0 # seconds + # Set up clocks. The dsolver to know before assigning stoich + moose.setClock( 4, dt4 ) + moose.setClock( 5, dt5 ) + + makeModel() + moose.useClock( 4, '/model/compartment/dsolve', 'process' ) + # Ksolve must be scheduled after dsolve. + moose.useClock( 5, '/model/compartment/ksolve', 'process' ) + + moose.reinit() + moose.start( runtime ) # Run the model + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + d = moose.element( '/model/compartment/d' ) + + atot = sum( a.vec.conc ) + btot = sum( b.vec.conc ) + ctot = sum( c.vec.conc ) + dtot = sum( d.vec.conc ) + + print 'tot = ', atot, btot, ctot, dtot, ' (b+c)=', btot+ctot + displayPlots() + moose.start( runtime ) # Run the model + atot = sum( a.vec.conc ) + btot = sum( b.vec.conc ) + ctot = sum( c.vec.conc ) + dtot = sum( d.vec.conc ) + + print 'tot = ', atot, btot, ctot, dtot, ' (b+c)=', btot+ctot + + quit() + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/diffEqSolution.py b/examples/snippets/diffEqSolution.py new file mode 100644 index 0000000..7911480 --- /dev/null +++ b/examples/snippets/diffEqSolution.py @@ -0,0 +1,126 @@ +######################################################################### +## diffEqSolution.py +## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import numpy +import moose +import pylab + +runtime = 10 +chemdt = 0.05 +tgtCaInitConc = 50e-6 + +def makeReacs(): + # Parameters + volume = 1e-15 + CaInitConc = 60e-6 + NA = 6.022e23 + tauI = 1 + tauG = 0.1 + + model = moose.Neutral( '/cells' ) + compartment = moose.CubeMesh( '/cells/compartment' ) + compartment.volume = volume + + # Make pools + Ca = moose.BufPool( '/cells/compartment/Ca' ) + tgtCa = moose.BufPool( '/cells/compartment/tgtCa' ) + m = moose.Pool( '/cells/compartment/m' ) + chan = moose.Pool( '/cells/compartment/chan' ) + + # Make Funcs + f1 = moose.Func( '/cells/compartment/f1' ) + f2 = moose.Func( '/cells/compartment/f2' ) + + # connect up + moose.connect( f1, 'valueOut', m, 'increment' ) + moose.connect( f2, 'valueOut', chan, 'increment' ) + + moose.connect( Ca, 'nOut', f1, 'xIn' ) + moose.connect( tgtCa, 'nOut', f1, 'yIn' ) + + moose.connect( m, 'nOut', f2, 'xIn' ) + moose.connect( chan, 'nOut', f2, 'yIn' ) + + # Set params + Ca.concInit = CaInitConc + tgtCa.concInit = tgtCaInitConc + m.concInit = 0.0 + chan.concInit = 0.0 + volscale = 1.0 + + f1.expr = str( volscale / tauI ) + " * (x-y)" + f2.expr = str( volscale / tauG ) + " * (x-y)" + + #Plotting + channelPlot = makePlot( 'channelConc', chan, 'Conc', 18 ) + mPlot = makePlot( 'mConc', m, 'Conc', 18 ) + caPlot = makePlot( 'Ca', Ca, 'Conc', 18 ) + targetPlot = makePlot( 'tgtCa', tgtCa, 'Conc', 18 ) + return (channelPlot, mPlot, caPlot ) + +def makePlot( name, src, field, tick ): + tab = moose.Table( '/graphs/' + name ) + moose.connect( tab, 'requestOut', src, 'get' + field ) + tab.tick = tick + return tab + +def main(): + """ + This snippet illustrates the solution of an arbitrary set of + differential equations using the **Func** class and the **Pool** + class. The equations solved here are:: + + tauI.m' = Ca - Ca_tgt + tauG.chan' = m - chan + + These equations are taken from: O'Leary et al *Neuron* 2014. + + **Func** evaluates an arbitrary function each timestep. + Here this function is the rate of change from the equations above. + The rate of change is passed to the *increment* message of the + **Pool**. The numerical integration method is the Exponential + Euler method but this will work fine if the rates are slow compared to + the simulation timestep. + + Conceptually, the idea is that if Ca is greater than the target level, + then more mRNA is made, which makes more channels. + Although the equations have no upper or lower bounds on **m** or + **chan**, MOOSE is sensible about preventing the molecular pools from + having negative concentrations. This does mean that the solution method + employed here won't work for the general solution of differential + equations in non-chemical systems. + """ + elecdt = 25e-6 + eplotdt = 0.5e-3 + plotdt = 0.1 # s + graphs = moose.Neutral( '/graphs' ) + plots = makeReacs() + for i in range( 0, 18 ): + moose.setClock( i, chemdt ) + moose.setClock( 18, plotdt ) + moose.setClock( 8, eplotdt ) + + moose.reinit() + moose.start( runtime ) + moose.element( '/cells/compartment/Ca' ).concInit = tgtCaInitConc/2 + moose.start( runtime ) + tvec = [ i * plotdt for i in range( plots[0].vector.size ) ] + + for x in moose.wildcardFind( '/graphs/#' ): + pylab.plot(tvec, x.vector, label = x.name ) + pylab.xlabel('time (s)') + pylab.ylabel('voltage (v)') + pylab.legend() + pylab.show() + + +if __name__ == "__main__": + main() diff --git a/examples/snippets/diffSpinyNeuron.py b/examples/snippets/diffSpinyNeuron.py new file mode 100644 index 0000000..af7f457 --- /dev/null +++ b/examples/snippets/diffSpinyNeuron.py @@ -0,0 +1,282 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +diffConst = 1e-11 +chemdt = 0.001 # Tested various dts, this is reasonable. +diffdt = 0.001 +plotdt = 0.01 +animationdt = 0.01 +runtime = 1 +useGssa = False + +def makeModel(): + model = moose.Neutral( '/model' ) + # Make neuronal model. It has no channels, just for geometry + cell = moose.loadModel( './spinyNeuron.p', '/model/cell', 'Neutral' ) + # We don't want the cell to do any calculations. Disable everything. + for i in moose.wildcardFind( '/model/cell/##' ): + i.tick = -1 + + # create container for model + model = moose.element( '/model' ) + chem = moose.Neutral( '/model/chem' ) + # The naming of the compartments is dicated by the places that the + # chem model expects to be loaded. + compt0 = moose.NeuroMesh( '/model/chem/compt0' ) + compt0.separateSpines = 1 + compt0.geometryPolicy = 'cylinder' + compt1 = moose.SpineMesh( '/model/chem/compt1' ) + moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) + compt2 = moose.PsdMesh( '/model/chem/compt2' ) + moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) + + #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) + makeChemModel( compt0, True ) # Populate all 3 compts with the chem system. + makeChemModel( compt1, False ) + makeChemModel( compt2, True ) + + compt0.diffLength = 2e-6 # This will be over 100 compartments. + # This is the magic command that configures the diffusion compartments. + compt0.subTreePath = cell.path + "/#" + moose.showfields( compt0 ) + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) + if useGssa: + ksolve1 = moose.Gsolve( '/model/chem/compt1/ksolve' ) + ksolve2 = moose.Gsolve( '/model/chem/compt2/ksolve' ) + else: + ksolve1 = moose.Ksolve( '/model/chem/compt1/ksolve' ) + ksolve2 = moose.Ksolve( '/model/chem/compt2/ksolve' ) + dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) + dsolve1 = moose.Dsolve( '/model/chem/compt1/dsolve' ) + dsolve2 = moose.Dsolve( '/model/chem/compt2/dsolve' ) + stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) + stoich1 = moose.Stoich( '/model/chem/compt1/stoich' ) + stoich2 = moose.Stoich( '/model/chem/compt2/stoich' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + stoich0.dsolve = dsolve0 + stoich1.dsolve = dsolve1 + stoich2.dsolve = dsolve2 + stoich0.path = '/model/chem/compt0/#' + stoich1.path = '/model/chem/compt1/#' + stoich2.path = '/model/chem/compt2/#' + assert( stoich0.numVarPools == 1 ) + assert( stoich0.numProxyPools == 0 ) + assert( stoich0.numRates == 1 ) + assert( stoich1.numVarPools == 1 ) + assert( stoich1.numProxyPools == 0 ) + if useGssa: + assert( stoich1.numRates == 2 ) + assert( stoich2.numRates == 2 ) + else: + assert( stoich1.numRates == 1 ) + assert( stoich2.numRates == 1 ) + assert( stoich2.numVarPools == 1 ) + assert( stoich2.numProxyPools == 0 ) + dsolve0.buildNeuroMeshJunctions( dsolve1, dsolve2 ) + stoich0.buildXreacs( stoich1 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + Ca_input_dend = moose.vec( '/model/chem/compt0/Ca_input' ) + print len( Ca_input_dend ) + for i in range( 60 ): + Ca_input_dend[ 3 + i * 3 ].conc = 2.0 + + Ca_input_PSD = moose.vec( '/model/chem/compt2/Ca_input' ) + print len( Ca_input_PSD ) + for i in range( 5 ): + Ca_input_PSD[ 2 + i * 2].conc = 1.0 + + # Create the output tables + num = compt0.numDiffCompts - 1 + graphs = moose.Neutral( '/model/graphs' ) + makeTab( 'Ca_soma', '/model/chem/compt0/Ca[0]' ) + makeTab( 'Ca_d1', '/model/chem/compt0/Ca[1]' ) + makeTab( 'Ca_d2', '/model/chem/compt0/Ca[2]' ) + makeTab( 'Ca_d3', '/model/chem/compt0/Ca[3]' ) + makeTab( 'Ca_s3', '/model/chem/compt1/Ca[3]' ) + makeTab( 'Ca_s4', '/model/chem/compt1/Ca[4]' ) + makeTab( 'Ca_s5', '/model/chem/compt1/Ca[5]' ) + makeTab( 'Ca_p3', '/model/chem/compt2/Ca[3]' ) + makeTab( 'Ca_p4', '/model/chem/compt2/Ca[4]' ) + makeTab( 'Ca_p5', '/model/chem/compt2/Ca[5]' ) + +def makeTab( plotname, molpath ): + tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table + # connect up the tables + moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); + + +def makeDisplay(): + plt.ion() + fig = plt.figure( figsize=(10,12) ) + + dend = fig.add_subplot( 411 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Dend voxel #' ) + plt.legend() + timeLabel = plt.text(200, 0.5, 'time = 0') + + spine = fig.add_subplot( 412 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Spine voxel #' ) + plt.legend() + + psd = fig.add_subplot( 413 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'PSD voxel #' ) + plt.legend() + + timeSeries = fig.add_subplot( 414 ) + timeSeries.set_ylim( 0, 2 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + plt.legend() + + Ca = moose.vec( '/model/chem/compt0/Ca' ) + Ca_input = moose.vec( '/model/chem/compt0/Ca_input' ) + line1, = dend.plot( range( len( Ca ) ), Ca.conc, label='Ca' ) + line2, = dend.plot( range( len( Ca_input ) ), Ca_input.conc, label='Ca_input' ) + dend.set_ylim( 0, 2 ) + + Ca = moose.vec( '/model/chem/compt1/Ca' ) + line3, = spine.plot( range( len( Ca ) ), Ca.conc, label='Ca' ) + spine.set_ylim( 0, 1 ) + + Ca = moose.vec( '/model/chem/compt2/Ca' ) + Ca_input = moose.vec( '/model/chem/compt2/Ca_input' ) + line4, = psd.plot( range( len( Ca ) ), Ca.conc, label='Ca' ) + line5, = psd.plot( range( len( Ca_input ) ), Ca_input.conc, label='Ca_input' ) + psd.set_ylim( 0, 1 ) + + fig.canvas.draw() + return ( timeSeries, dend, spine, psd, fig, line1, line2, line3, line4, line5, timeLabel ) + +def updateDisplay( plotlist ): + Ca = moose.vec( '/model/chem/compt0/Ca' ) + Ca_input = moose.vec( '/model/chem/compt0/Ca_input' ) + plotlist[5].set_ydata( Ca.conc ) + plotlist[6].set_ydata( Ca_input.conc ) + + Ca = moose.vec( '/model/chem/compt1/Ca' ) + plotlist[7].set_ydata( Ca.conc ) + + Ca = moose.vec( '/model/chem/compt2/Ca' ) + Ca_input = moose.vec( '/model/chem/compt2/Ca_input' ) + plotlist[8].set_ydata( Ca.conc ) + plotlist[9].set_ydata( Ca_input.conc ) + plotlist[4].canvas.draw() + + +def finalizeDisplay( plotlist, cPlotDt ): + for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = plotlist[0].plot( pos, x.vector, label=x.name ) + plotlist[4].canvas.draw() + print( "Hit 'enter' to exit" ) + raw_input() + +def makeChemModel( compt, doInput ): + """ + This function setus up a simple chemical system in which Ca input + comes to the dend and to selected PSDs. There is diffusion between + PSD and spine head, and between dend and spine head. + + Ca_input ------> Ca // in dend and spine head only. + """ + # create molecules and reactions + Ca = moose.Pool( compt.path + '/Ca' ) + Ca.concInit = 0.08*1e-3 + Ca.diffConst = diffConst + if doInput: + Ca_input = moose.BufPool( compt.path + '/Ca_input' ) + Ca_input.concInit = 0.08*1e-3 + Ca_input.diffConst = diffConst + rInput = moose.Reac( compt.path + '/rInput' ) + moose.connect( rInput, 'sub', Ca, 'reac' ) + moose.connect( rInput, 'prd', Ca_input, 'reac' ) + rInput.Kf = 100 # 1/sec + rInput.Kb = 100 # 1/sec + else: + Ca_sink = moose.BufPool( compt.path + '/Ca_sink' ) + Ca_sink.concInit = 0.08*1e-3 + rSink = moose.Reac( compt.path + '/rSink' ) + moose.connect( rSink, 'sub', Ca, 'reac' ) + moose.connect( rSink, 'prd', Ca_sink, 'reac' ) + rSink.Kf = 10 # 1/sec + rSink.Kb = 10 # 1/sec + +def main(): + """ + This example illustrates and tests diffusion embedded in + the branching pseudo-1-dimensional geometry of a neuron. + An input pattern of Ca stimulus is applied in a periodic manner both + on the dendrite and on the PSDs of the 13 spines. The Ca levels in + each of the dend, the spine head, and the spine PSD are monitored. + Since the same molecule name is used for Ca in the three compartments, + these are automagially connected up for diffusion. The simulation + shows the outcome of this diffusion. + This example uses an external electrical model file with basal + dendrite and three branches on + the apical dendrite. One of those branches has the 13 spines. + The model is set up to run using the Ksolve for integration and the + Dsolve for handling diffusion. + The timesteps here are not the defaults. It turns out that the + chem reactions and diffusion in this example are sufficiently fast + that the chemDt has to be smaller than default. Note that this example + uses rates quite close to those used in production models. + The display has four parts: + + a. animated line plot of concentration against main compartment#. + b. animated line plot of concentration against spine compartment#. + c. animated line plot of concentration against psd compartment#. + d. time-series plot that appears after the simulation has + ended. + + """ + + makeModel() + plotlist = makeDisplay() + + # Schedule the whole lot - autoscheduling already does this. + for i in range( 11, 17 ): + moose.setClock( i, chemdt ) # for the chem objects + moose.setClock( 10, diffdt ) # for the diffusion + moose.setClock( 18, plotdt ) # for the output tables. + ''' + ''' + moose.reinit() + for i in numpy.arange( 0, runtime, animationdt ): + moose.start( animationdt ) + plotlist[10].set_text( "time = %d" % i ) + updateDisplay( plotlist ) + + finalizeDisplay( plotlist, plotdt ) + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/dotp.p b/examples/snippets/dotp.p new file mode 100644 index 0000000..2b53508 --- /dev/null +++ b/examples/snippets/dotp.p @@ -0,0 +1,100 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +/* NOTE: The format of the cell descriptor files does not allow for + continuation to another line. The following long line lists the + soma channels with their "density" parameters. + + Ca_conc -17.402e12 + Not really a channel, but a "Ca_concen" object. Normally, the B + field is set to "dens"/compt_volume (m^3), but the negative sign + causes the absolute value to be used with no scaling by volume. + Na 300 + Ca 40 + K_DR 150 + K_AHP 8 + K_C 100 + K_A 50 +*/ + +basal_3 none 0 220 0 3.84 Na 200 K 50 +basal_5 . 0 220 0 3.84 Na 200 K 50 +basal_6 . 0 220 0 3.84 Na 200 K 50 +basal_8 . 0 110 0 3.84 Na 200 K 50 + +soma basal_8 0 125 0 8.46 Na 2500 K 600 + + +apical_10 soma 0 120 0 4.0 Na 250 K 100 +apical_11 apical_10 0 120 0 3 Na 150 K 100 +apical_12 apical_11 0 120 0 3 Na 150 K 100 +apical_13 apical_12 0 120 0 2.6 Na 100 K 100 +apical_14 apical_13 0 120 0 2.6 Na 100 K 100 +apical_15 apical_14 0 120 0 2.6 Na 100 K 100 +apical_16 apical_15 0 120 0 2.6 Na 100 K 100 +apical_17 apical_16 0 120 0 2.6 Na 100 K 100 +apical_18 apical_17 0 120 0 2.6 Na 100 K 100 +apical_19 apical_18 0 120 0 2.6 + +lat_11_1 apical_10 -60 60 0 2 Na 40 K 60 +lat_11_2 lat_11_1 -60 60 0 1.8 Na 40 K 60 +lat_11_3 lat_11_2 0 80 0 1.5 Na 40 K 60 +lat_11_4 lat_11_3 0 80 0 1.5 Na 40 K 60 + +lat_13_1 apical_12 40 40 0 1.0 Na 40 K 60 +lat_13_2 lat_13_1 40 40 0 1.0 Na 40 K 60 + +lat_14_1 lat_13_2 0 10 0 1.0 Na 40 K 60 +lat_14_2 . 0 10 0 1.0 Na 40 K 60 +lat_14_3 . 0 10 0 1.0 Na 40 K 60 +lat_14_4 . 0 10 0 1.0 Na 40 K 60 +lat_14_5 . 0 10 0 1.0 Na 40 K 60 +lat_14_6 . 0 10 0 1.0 Na 40 K 60 +lat_14_7 . 0 10 0 1.0 Na 40 K 60 +lat_14_8 . 0 10 0 1.0 Na 40 K 60 +lat_14_9 . 0 10 0 1.0 Na 40 K 60 +lat_14_10 . 0 10 0 1.0 Na 40 K 60 +lat_14_11 . 0 10 0 1.0 Na 40 K 60 +lat_14_12 . 0 10 0 1.0 Na 40 K 60 +lat_14_13 . 0 10 0 1.0 Na 40 K 60 +lat_15_1 . 0 30 0 1.0 Na 40 K 60 +lat_15_2 . 0 60 0 1.0 Na 40 K 60 + +spine_neck_14_1 lat_14_1 0.5 0 0 0.1 +spine_head_14_1 . 0.5 0 0 0.5 +spine_neck_14_2 lat_14_2 0.5 0 0 0.1 +spine_head_14_2 . 0.5 0 0 0.5 +spine_neck_14_3 lat_14_3 0.5 0 0 0.1 +spine_head_14_3 . 0.5 0 0 0.5 +spine_neck_14_4 lat_14_4 0.5 0 0 0.1 +spine_head_14_4 . 0.5 0 0 0.5 +spine_neck_14_5 lat_14_5 0.5 0 0 0.1 +spine_head_14_5 . 0.5 0 0 0.5 +spine_neck_14_6 lat_14_6 0.5 0 0 0.1 +spine_head_14_6 . 0.5 0 0 0.5 +spine_neck_14_7 lat_14_7 0.5 0 0 0.1 +spine_head_14_7 . 0.5 0 0 0.5 +spine_neck_14_8 lat_14_8 0.5 0 0 0.1 +spine_head_14_8 . 0.5 0 0 0.5 +spine_neck_14_9 lat_14_9 0.5 0 0 0.1 +spine_head_14_9 . 0.5 0 0 0.5 +spine_neck_14_10 lat_14_10 0.5 0 0 0.1 +spine_head_14_10 . 0.5 0 0 0.5 +spine_neck_14_11 lat_14_11 0.5 0 0 0.1 +spine_head_14_11 . 0.5 0 0 0.5 +spine_neck_14_12 lat_14_12 0.5 0 0 0.1 +spine_head_14_12 . 0.5 0 0 0.5 +spine_neck_14_13 lat_14_13 0.5 0 0 0.1 +spine_head_14_13 . 0.5 0 0 0.5 diff --git a/examples/snippets/fieldelement.py b/examples/snippets/fieldelement.py new file mode 100644 index 0000000..53835f9 --- /dev/null +++ b/examples/snippets/fieldelement.py @@ -0,0 +1,151 @@ +"""This code is under testing: checking the protocol for +FieldElements. Once that is cleaned up, this can be reused as a +demo. + +>>> import moose +on node 0, numNodes = 1, numCores = 8 +Info: Time to define moose classes:0 +Info: Time to initialize module:0.05 +>>> a = moose.IntFire('a') +Created 123 path=a numData=1 isGlobal=0 baseType=IntFire +>>> b = moose.Synapse('a/b') +Created 125 path=a/b numData=1 isGlobal=0 baseType=Synapse +>>> b.numSynapse = 10 +Traceback (most recent call last): + File "", line 1, in +AttributeError: 'moose.Synapse' object has no attribute 'numSynapse' +>>> a.numSynapse = 10 +Traceback (most recent call last): + File "", line 1, in +AttributeError: 'moose.IntFire' object has no attribute 'numSynapse' +>>> dir(a) +['__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'connect', 'ematrix', 'getDataIndex', 'getField', 'getFieldIndex', 'getFieldNames', 'getFieldType', 'getId', 'getLookupField', 'getNeighbors', 'neighbors', 'parentMsg', 'process', 'reinit', 'setDestField', 'setField', 'setLookupField', 'synapse'] +>>> a.synapse +/a.synapse +>>> a.synapse[0] +Traceback (most recent call last): + File "", line 1, in +IndexError: moose.ElementField.getItem: index out of bounds. +>>> a.synapse.num = 10 +>>> a.synapse[0] + +>>> a.synapse[1] + +>>> + +---------------------- +Subha, Tue Jan 7 11:58:10 IST 2014 + +Documentation/discussion on accessing synapses (ElementField): + +A `synapse` is an ElementField of an IntFire element. The following +example is taken from Upi and modified to reflect the current API:: + + network = moose.IntFire('/network', size) + network.vec.buffferTime = [delayMax * 2] * size # `vec` allows vectorized access to fields on all `element`s + + +IntFire elements have an ElementField called `synapse`. You can access +the first `synapse` element on the first IntFire element with the +following:: + + synapse = moose.element('/network/synapse') + +This is equivalent to:: + + synapse = moose.element('/network[0]/synapse[0]') + +`synapse` is just another element but by default its length is 0 +unless you set the number of elements in it either explicitly:: + + synapse.num = 10 + +or in an indirect way:: + +mid = moose.connect( network, 'spike', synapse, 'addSpike', 'Sparse' ) + +mid.setRandomConnectivity( connectionProbability, 5489 ) +network.vec.Vm = [(Vmax*random.random()) for r in range(size)] +network.vec.thresh = thresh +network.vec.refractoryPeriod = refractoryPeriod +numSynVec = network.numSynapses +numTotSym = sum( numSynVec ) +netvec = network.vec +for i in range( size ): + synvec = netvec[i].synapse.vec + synvec.weight = [ (random.random() * weightMax) for r in range( synvec.len )] + synvec.delay = [ (delayMin + random.random() * delayMax) for r in range( synvec.len )] + +moose.useClock( '/network', 'process', 0 ) +moose.setClock( 0, timestep ) +moose.setClock( 9, timestep ) +moose.reinit() +network.vec.Vm = [(Vmax*random.random()) for r in range(size)] +moose.start(runtime) +print network.vec[100].Vm, network.vec[900].Vm + +""" +import sys +import os +sys.path.append('../../python') +import moose + +# Create an IntFire vec containing 10 elements, a refers to alpha[0] +a = moose.IntFire('alpha', 10) +print 'a=', a +for i in range( 10 ): + syn = moose.SimpleSynHandler( 'alpha[' + str(i) + ']/sh' ) + moose.connect( syn, 'activationOut', a.vec[i], 'activation' ) + +syn = moose.SimpleSynHandler( 'alpha/sh', 10 ) +moose.connect( syn, 'activationOut', a, 'activation', 'OneToOne' ) +############################### +# FieldElement identity +############################### +x = syn.synapse # x is an ElementField alpha[0].synapse +print 'x=',x +print 'x.num=', x.num # Initially there are no synapses, so this will be 0 +syn.synapse.num = 3 # We set number of field elements to 3 +print 'x.num=', x.num # x refers to a.synapse, so this should be 3 +b = moose.element('alpha[0]/sh/synapse[1]') # We access x[1] +print 'b=',b +print 'x[1]=', x[1] +print 'b==x[1]?', b == x[1] + +############################### +# Check fieldIndex and dataId +############################### +print 'syn.synapse[0]=', syn.synapse[0] +print 'syn.synapse[1]=', syn.synapse[1] # The fieldIndex should change, not dataId + +######################### +# setVec call example +######################### +print 'alpha[0].synapse.delay=', x.delay +x.delay = [1.0, 2.0, 3.0] # This sets `delay` field in all elements via setVec call +print 'alpha[0].synapse.delay=', x.delay +x.delay = [1.141592] * len(x) # This is a Pythonic way of replicating the values in a list - ensures same length +print 'alpha[0].synapse.delay=', x.delay + +##################################################### +# Play a little more with ObjId, FieldElement, Id +##################################################### +print 'Length of alpha[1]/synapse=', len(moose.element('/alpha[1]/sh').synapse) +c = moose.element('alpha[1]/sh/synapse[2]') # This should throw an error - alpha[1] does not have 3 synapses. +print 'b=', b, 'numData=', b.numData +print 'c=', c, 'numData=', c.numData +try: + print 'len(c)=', len(c) +except TypeError, e: + print e +d = moose.element('/alpha[1]/sh') +try: + print d.synapse[1] +except IndexError, e: + print e +else: + print 'Expected an IndexError. Length of synapse=', len(d.synapse) +# The fieldIndex should change, not dataId +x = moose.element(a.vec, 0, 1) +y = moose.element(a.vec, 1, 2) +print x, y diff --git a/examples/snippets/findChemSteadyState.py b/examples/snippets/findChemSteadyState.py new file mode 100644 index 0000000..6f928d1 --- /dev/null +++ b/examples/snippets/findChemSteadyState.py @@ -0,0 +1,190 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import math +import pylab +import numpy +import moose + +def main(): + """ + This example sets up the kinetic solver and steady-state finder, on + a bistable model of a chemical system. The model is set up within the + script. + The algorithm calls the steady-state finder 50 times with different + (randomized) initial conditions, as follows: + + * Set up the random initial condition that fits the conservation laws + * Run for 2 seconds. This should not be mathematically necessary, but + for obscure numerical reasons it makes it much more likely that the + steady state solver will succeed in finding a state. + * Find the fixed point + * Print out the fixed point vector and various diagnostics. + * Run for 10 seconds. This is completely unnecessary, and is done here + just so that the resultant graph will show what kind of state has + been found. + + After it does all this, the program runs for 100 more seconds on the + last found fixed point (which turns out to be a saddle node), then + is hard-switched in the script to the first attractor basin from which + it runs for another 100 seconds till it settles there, and then + is hard-switched yet again to the second attractor and runs for 400 + seconds. + + Looking at the output you will see many features of note: + + * the first attractor (stable point) and the saddle point (unstable + fixed point) are both found quite often. But the second + attractor is found just once. + It has a very small basin of attraction. + * The values found for each of the fixed points match well with the + values found by running the system to steady-state at the end. + * There are a large number of failures to find a fixed point. These are + found and reported in the diagnostics. They show up on the plot + as cases where the 10-second runs are not flat. + + If you wanted to find fixed points in a production model, you would + not need to do the 10-second runs, and you would need to eliminate the + cases where the state-finder failed. Then you could identify the good + points and keep track of how many of each were found. + + There is no way to guarantee that all fixed points have been found + using this algorithm! If there are points in an obscure corner of state + space (as for the singleton second attractor convergence in this + example) you may have to iterate very many times to find them. + + You may wish to sample concentration space logarithmically rather than + linearly. + """ + compartment = makeModel() + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.path = "/model/compartment/##" + state = moose.SteadyState( '/model/compartment/state' ) + + moose.reinit() + state.stoich = stoich + state.showMatrices() + state.convergenceCriterion = 1e-6 + moose.seed( 111 ) # Used when generating the samples in state space + + for i in range( 0, 50 ): + getState( ksolve, state ) + + # Now display the states of the system at more length to compare. + moose.start( 100.0 ) # Run the model for 100 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + + # move most molecules over to b + b.conc = b.conc + a.conc * 0.9 + a.conc = a.conc * 0.1 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + a.conc = a.conc + b.conc * 0.99 + b.conc = b.conc * 0.01 + moose.start( 400.0 ) # Run the model for 200 seconds. + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + + quit() + +def makeModel(): + """ This function creates a bistable reaction system using explicit + MOOSE calls rather than load from a file + """ + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-15 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + enz1 = moose.Enz( '/model/compartment/b/enz1' ) + enz2 = moose.Enz( '/model/compartment/c/enz2' ) + cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) + cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) + reac = moose.Reac( '/model/compartment/reac' ) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table ( '/model/graphs/concA' ) + outputB = moose.Table ( '/model/graphs/concB' ) + outputC = moose.Table ( '/model/graphs/concC' ) + outputCplx1 = moose.Table ( '/model/graphs/concCplx1' ) + outputCplx2 = moose.Table ( '/model/graphs/concCplx2' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + moose.connect( outputC, 'requestOut', c, 'getConc' ); + moose.connect( outputCplx1, 'requestOut', cplx1, 'getConc' ); + moose.connect( outputCplx2, 'requestOut', cplx2, 'getConc' ); + + return compartment + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def getState( ksolve, state ): + """ This function finds a steady state starting from a random + initial condition that is consistent with the stoichiometry rules + and the original model concentrations. + """ + scale = 1.0 / ( 1e-15 * 6.022e23 ) + state.randomInit() # Randomize init conditions, subject to stoichiometry + moose.start( 2.0 ) # Run the model for 2 seconds. + state.settle() # This function finds the steady states. + for x in ksolve.nVec[0]: + print x * scale, + print state.nIter, state.status, state.stateType, state.nNegEigenvalues, state.nPosEigenvalues, state.solutionStatus + moose.start( 10.0 ) # Run model for 10 seconds, just for display + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/func.py b/examples/snippets/func.py new file mode 100644 index 0000000..d5bfc7d --- /dev/null +++ b/examples/snippets/func.py @@ -0,0 +1,147 @@ +# func.py --- +# +# Filename: func.py +# Description: +# Author: Subhasis Ray +# Maintainer: Subhasis Ray +# Created: Mon May 27 17:45:05 2013 (+0530) +# Version: +# Last-Updated: Sat Jun 1 19:07:20 2013 (+0530) +# By: subha +# Update #: 253 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Demonstrate the use of Func class""" +import numpy as np +import pylab + +import moose + +def test_func_nosim(): + """Create a Func object for computing function values without running + a simulations.""" + # func_0 demonstrates multivariable function + lib = moose.Neutral('/library') + func_0 = moose.Func('%s/func_0' % (lib.path)) + func_0.mode = 1 + num = 5 + expr = 'avg(' + for ii in range(num-1): + expr += 'x_%d, ' % (ii) + expr += 'x_%d)' % (num-1) + print 'Expression:', expr + func_0.expr = expr + for ii in range(num): + var = 'x_%d' % (ii) + print 'Setting:', var, '=', func_0.var[var] + func_0.var[var] = float(ii) + print 'Expression:', func_0.expr + print 'Variables after assignment:' + for v in func_0.vars: + print ' %s = %g' % (v, func_0.var[v]) + print 'value %g\n' % (func_0.value) + +def test_func(): + """This function creates a Func object evaluating a function of a + single variable. It both shows direct evaluation without running a + simulation and a case where the x variable comes from another + source. + + """ + model = moose.Neutral('/model') + data = moose.Neutral('/data') + + func_1 = moose.Func('%s/func_1' % (model.path)) + func_1.mode = 3 # mode = 1 : value, mode = 2 : derivative + # Expression is that for tau_m in Traub's NaF channel model + func_1.expr = 'x < -30e-3? 1.0e-3 * (0.025 + 0.14 * exp((x + 30.0e-3) / 10.0e-3)): 1.0e-3 * (0.02 + 0.145 * exp(( - x - 30.0e-3) / 10.0e-3))' + # First we display the use of Func as a standalone funculator + xarr = np.linspace(-120e-3, 40e-3, 1000) + values = [] + deriv = [] + for x in xarr: + func_1.var['x'] = x + values.append(func_1.value) + deriv.append(func_1.derivative) + pylab.plot(xarr, values, 'g-', label='f(no-sim)') + pylab.plot(xarr, np.array(deriv)/1000, 'k-.', label="1e-3 * f'(no-sim)") + + + simdt = xarr[1] - xarr[0] + input = moose.StimulusTable('%s/xtab' % (model.path)) + input.vector = xarr + input.startTime = 0.0 + input.stepPosition = xarr[0] + input.stopTime = xarr[-1] - xarr[0] + print input.startTime, input.stopTime + + moose.connect(input, 'output', func_1, 'xIn') + + x_tab = moose.Table('/data/xtab') + moose.connect(x_tab, 'requestOut', input, 'getOutputValue') + + y_tab = moose.Table('%s/y' % (data.path)) + moose.connect(y_tab, 'requestOut', func_1, 'getValue') + yprime_tab = moose.Table('%s/yprime' % (data.path)) + moose.connect(yprime_tab, 'requestOut', + func_1, 'getDerivative') + func_1.mode = 3 # This forces both f ad f' to be computed and sent out + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.setClock(3, simdt) + moose.useClock(0, '%s/##[TYPE=StimulusTable]' % (model.path), 'process') + moose.useClock(1, '%s/##[TYPE=Func]' % (model.path), 'process') + moose.useClock(2, '%s/##[TYPE=DiffAmp]' % (model.path), 'process') + moose.useClock(3, '%s/##' % (data.path), 'process') + moose.reinit() + t = xarr[-1] - xarr[0] + print 'Run for', t + moose.start(t) + y = np.asarray(y_tab.vector) + yp = np.asarray(yprime_tab.vector) + pylab.plot(x_tab.vector, y, 'r-.', label='f(x)') + pylab.plot(x_tab.vector, yp/1000, 'b--', label="1e-3 * f'(x)") + pylab.legend() + pylab.show() + +if __name__ == '__main__': + test_func_nosim() + test_func() + + +# +# func.py ends here diff --git a/examples/snippets/funcInputToPools.py b/examples/snippets/funcInputToPools.py new file mode 100644 index 0000000..1293985 --- /dev/null +++ b/examples/snippets/funcInputToPools.py @@ -0,0 +1,123 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +""" +This example describes the special (and discouraged) use case where +functions provide input to a reaction system. Here we have two functions of +time which control the pool # and pool rate of change, respectively: + + number of molecules of a = 1 + sin(t) + rate of change of number of molecules of b = 10 * cos(t) + +In the stochastic case one must set a special flag *useClockedUpdate* +in order to achieve clock-triggered updates from the functions. This is +needed because the functions do not have reaction events to trigger them, +and even if there were reaction events they might not be frequent enough to +track the periodic updates. The use of this flag slows down the calculations, +so try to use a table to control a pool instead. + +To run in stochastic mode: + + python funcInputToPools + +To run in deterministic mode: + + python funcInputToPools false + +""" + +import math +import pylab +import numpy +import moose +import sys + +def makeModel(): + if len( sys.argv ) == 1: + useGsolve = True + else: + useGsolve = ( sys.argv[1] == 'True' ) + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-22 + # the mesh is created automatically by the compartment + moose.le( '/model/compartment' ) + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + + # create functions of time + f1 = moose.Function( '/model/compartment/f1' ) + f2 = moose.Function( '/model/compartment/f2' ) + + # connect them up for reactions + moose.connect( f1, 'valueOut', a, 'setConc' ) + moose.connect( f2, 'valueOut', b, 'increment' ) + + # Assign parameters + a.concInit = 0 + b.concInit = 1 + #f1.numVars = 1 + #f2.numVars = 1 + f1.expr = '1 + sin(t)' + f2.expr = '10 * cos(t)' + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/nA' ) + outputB = moose.Table2 ( '/model/graphs/nB' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getN' ); + moose.connect( outputB, 'requestOut', b, 'getN' ); + + # Set up the solvers + if useGsolve: + gsolve = moose.Gsolve( '/model/compartment/gsolve' ) + gsolve.useClockedUpdate = True + else: + gsolve = moose.Ksolve( '/model/compartment/gsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = gsolve + stoich.path = '/model/compartment/##' + ''' + ''' + + # We need a finer timestep than the default 0.1 seconds, + # in order to get numerical accuracy. + for i in range (10, 19 ): + moose.setClock( i, 0.1 ) # for computational objects + +def main(): + makeModel() + moose.seed() + + moose.reinit() + moose.start( 50.0 ) # Run the model for 100 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/n#' ): + #x.xplot( 'scriptKineticModel.plot', x.name ) + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/funcRateHarmonicOsc.py b/examples/snippets/funcRateHarmonicOsc.py new file mode 100644 index 0000000..029f49f --- /dev/null +++ b/examples/snippets/funcRateHarmonicOsc.py @@ -0,0 +1,116 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import math +import pylab +import numpy +import moose + +runtime = 120.0 +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + harmonic = moose.CubeMesh( '/model/harmonic' ) + harmonic.volume = 1e-15 + lotka = moose.CubeMesh( '/model/lotka' ) + lotka.volume = 1e-15 + + # create molecules and reactions + p = moose.Pool( '/model/harmonic/p' ) + v = moose.Pool( '/model/harmonic/v' ) + pdot = moose.Function( '/model/harmonic/p/func' ) + vdot = moose.Function( '/model/harmonic/v/func' ) + + # Parameters + offset1 = 1.0 + offset2 = 1.0 + k = 0.1 + p.nInit = offset1 + v.nInit = offset2 + 0.1 + pdot.x.num = 1 + vdot.x.num = 1 + pdot.expr = "x0 - " + str( offset1 ) + vdot.expr = "-" + str( k ) + " * (x0 - " + str( offset2 ) + ")" + + # connect them up for reactions + moose.connect( p, 'nOut', vdot.x[0], 'input' ) + moose.connect( v, 'nOut', pdot.x[0], 'input' ) + moose.connect( vdot, 'valueOut', v, 'increment' ) + moose.connect( pdot, 'valueOut', p, 'increment' ) + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + pplot = moose.Table2 ( '/model/graphs/p' ) + vplot = moose.Table2 ( '/model/graphs/v' ) + + # connect up the tables + moose.connect( pplot, 'requestOut', p, 'getN' ); + moose.connect( vplot, 'requestOut', v, 'getN' ); + +def main(): + + """ + funcRateHarmonicOsc illustrates the use of function objects to + directly define the rates of change of pool concentration. This + example shows how to set up a simple harmonic oscillator system + of differential equations using the script. In normal use one would + prefer to use SBML. + + The equations are :: + + p' = v - offset1 + v' = -k(p - offset2) + + where the rates for Pools p and v are computed using Functions. + Note the use of offsets. This is because MOOSE chemical + systems cannot have negative concentrations. + + The model is set up to run using default Exponential Euler + integration, and then using the GSL deterministic solver. + """ + makeModel() + + for i in range( 11, 18 ): + moose.setClock( i, 0.01 ) + moose.setClock( 18, 0.1 ) + moose.reinit() + moose.start( runtime ) # Run the model + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/#' ): + #x.xplot( 'scriptKineticModel.plot', x.name ) + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.suptitle( "Integration using ee" ) + pylab.legend() + pylab.figure() + + compt = moose.element( '/model/harmonic' ) + ksolve = moose.Ksolve( '/model/harmonic/ksolve' ) + stoich = moose.Stoich( '/model/harmonic/stoich' ) + stoich.compartment = compt + stoich.ksolve = ksolve + stoich.path = '/model/harmonic/##' + for i in range( 11, 18 ): + moose.setClock( i, 0.1 ) + moose.reinit() + moose.start( runtime ) # Run the model + + for x in moose.wildcardFind( '/model/graphs/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.suptitle( "Integration using gsl" ) + pylab.legend() + pylab.show() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/funcReacLotkaVolterra.py b/examples/snippets/funcReacLotkaVolterra.py new file mode 100644 index 0000000..a192239 --- /dev/null +++ b/examples/snippets/funcReacLotkaVolterra.py @@ -0,0 +1,141 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import moose + +runtime = 50.0 +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + harmonic = moose.CubeMesh( '/model/harmonic' ) + harmonic.volume = 1e-15 + lotka = moose.CubeMesh( '/model/lotka' ) + lotka.volume = 1e-15 + + # create molecules and reactions + x = moose.Pool( '/model/lotka/x' ) + y = moose.Pool( '/model/lotka/y' ) + z = moose.BufPool( '/model/lotka/z' ) # Dummy molecule. + xreac = moose.Reac( '/model/lotka/xreac' ) + yreac = moose.Reac( '/model/lotka/yreac' ) + xrate = moose.Function( '/model/lotka/xreac/func' ) + yrate = moose.Function( '/model/lotka/yreac/func' ) + + # Parameters + alpha = 1.0 + beta = 1.0 + gamma = 1.0 + delta = 1.0 + k = 1.0 + x.nInit = 2.0 + y.nInit = 1.0 + z.nInit = 0.0 + xrate.x.num = 1 + yrate.x.num = 1 + xrate.expr = "x0 * " + str( beta ) + " - " + str( alpha ) + yrate.expr = str( gamma ) + " - x0 * " + str( delta ) + xreac.Kf = k + yreac.Kf = k + xreac.Kb = 0 + yreac.Kb = 0 + + # connect them up for reactions + moose.connect( y, 'nOut', xrate.x[0], 'input' ) + moose.connect( x, 'nOut', yrate.x[0], 'input' ) + moose.connect( xrate, 'valueOut', xreac, 'setNumKf' ) + moose.connect( yrate, 'valueOut', yreac, 'setNumKf' ) + moose.connect( xreac, 'sub', x, 'reac' ) + moose.connect( xreac, 'prd', z, 'reac' ) + moose.connect( yreac, 'sub', y, 'reac' ) + moose.connect( yreac, 'prd', z, 'reac' ) + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + xplot = moose.Table2 ( '/model/graphs/x' ) + yplot = moose.Table2 ( '/model/graphs/y' ) + + # connect up the tables + moose.connect( xplot, 'requestOut', x, 'getN' ); + moose.connect( yplot, 'requestOut', y, 'getN' ); + +def main(): + """ + The funcReacLotkaVolterra example shows how to use function objects + as part of differential equation systems in the framework of the MOOSE + kinetic solvers. Here the system is set up explicitly using the + scripting, in normal use one would expect to use SBML. + + In this example we set up a Lotka-Volterra system. The equations + are readily expressed as a pair of reactions each of whose rate is + governed by a function:: + + x' = x( alpha - beta.y ) + y' = -y( gamma - delta.x ) + + This translates into two reactions:: + + x ---> z Kf = beta.y - alpha + y ---> z Kf = gamma - delta.x + + Here z is a dummy molecule whose concentration is buffered to zero. + + The model first runs using default Exponential Euler integration. + This is not particularly accurate even with a small timestep. + The model is then converted to use the deterministic Kinetic solver + Ksolve. This is accurate and faster. + Note that we cannot use the stochastic GSSA solver for this system, it + cannot handle a reaction term whose rate keeps changing. + """ + makeModel() + + for i in range( 11, 18 ): + moose.setClock( i, 0.001 ) + moose.setClock( 18, 0.1 ) + moose.reinit() + moose.start( runtime ) # Run the model + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/#' ): + #x.xplot( 'scriptKineticModel.plot', x.name ) + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.ylim( 0, 2.5 ) + pylab.title( "Exponential Euler solution. Note slight error buildup" ) + pylab.legend() + + + pylab.figure() + compt = moose.element( '/model/lotka' ) + ksolve = moose.Ksolve( '/model/lotka/ksolve' ) + stoich = moose.Stoich( '/model/lotka/stoich' ) + stoich.compartment = compt + stoich.ksolve = ksolve + stoich.path = '/model/lotka/##' + moose.reinit() + moose.start( runtime ) # Run the model + + for i in range( 11, 18 ): + moose.setClock( i, 0.1 ) + for x in moose.wildcardFind( '/model/graphs/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.ylim( 0, 2.5 ) + pylab.title( "Runge-Kutta solution." ) + pylab.legend() + pylab.show() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/function.py b/examples/snippets/function.py new file mode 100644 index 0000000..c0727f1 --- /dev/null +++ b/examples/snippets/function.py @@ -0,0 +1,195 @@ +# function.py --- +# +# Filename: function.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Tue Sep 9 17:59:50 2014 (+0530) +# Version: +# Last-Updated: Sun Dec 20 00:02:50 2015 (-0500) +# By: subha +# Update #: 4 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import numpy as np +import sys +import matplotlib.pyplot as plt + +import moose + +simtime = 1.0 + +def example(): + """Function objects can be used to evaluate expressions with arbitrary + number of variables and constants. We can assign expression of the + form:: + + f(c0, c1, ..., cM, x0, x1, ..., xN, y0,..., yP ) + + where `ci`'s are constants and `xi`'s and `yi`'s are variables. + + The constants must be defined before setting the expression and + variables are connected via messages. The constants can have any + name, but the variable names must be of the form x{i} or y{i} + where i is increasing integer starting from 0. + + The `xi`'s are field elements and you have to set their number + first (function.x.num = N). Then you can connect any source field + sending out double to the 'input' destination field of the + `x[i]`. + + The `yi`'s are useful when the required variable is a value field + and is not available as a source field. In that case you connect + the `requestOut` source field of the function element to the + `get{Field}` destination field on the target element. The `yi`'s + are automatically added on connecting. Thus, if you call:: + + moose.connect(function, 'requestOut', a, 'getSomeField') + moose.connect(function, 'requestOut', b, 'getSomeField') + + then ``a.someField`` will be assigned to ``y0`` and + ``b.someField`` will be assigned to ``y1``. + + In this example we evaluate the expression: ``z = c0 * exp(c1 * + x0) * cos(y0)`` + + with x0 ranging from -1 to +1 and y0 ranging from -pi to + +pi. These values are stored in two stimulus tables called xtab + and ytab respectively, so that at each timestep the next values of + x0 and y0 are assigned to the function. + + Along with the value of the expression itself we also compute its + derivative with respect to y0 and its derivative with respect to + time (rate). The former uses a five-point stencil for the + numerical differentiation and has a glitch at y=0. The latter uses + backward difference divided by dt. + + Unlike Func class, the number of variables and constants are + unlimited in Function and you can set all the variables via + messages. + + """ + demo = moose.Neutral('/model') + function = moose.Function('/model/function') + function.c['c0'] = 1.0 + function.c['c1'] = 2.0 + function.x.num = 1 + function.expr = 'c0 * exp(c1*x0) * cos(y0) + sin(t)' + # mode 0 - evaluate function value, derivative and rate + # mode 1 - just evaluate function value, + # mode 2 - evaluate derivative, + # mode 3 - evaluate rate + function.mode = 0 + function.independent = 'y0' + nsteps = 1000 + xarr = np.linspace(0.0, 1.0, nsteps) + # Stimulus tables allow you to store sequences of numbers which + # are delivered via the 'output' message at each time step. This + # is a placeholder and in real scenario you will be using any + # sourceFinfo that sends out a double value. + input_x = moose.StimulusTable('/xtab') + input_x.vector = xarr + input_x.startTime = 0.0 + input_x.stepPosition = xarr[0] + input_x.stopTime = simtime + moose.connect(input_x, 'output', function.x[0], 'input') + + yarr = np.linspace(-np.pi, np.pi, nsteps) + input_y = moose.StimulusTable('/ytab') + input_y.vector = yarr + input_y.startTime = 0.0 + input_y.stepPosition = yarr[0] + input_y.stopTime = simtime + moose.connect(function, 'requestOut', input_y, 'getOutputValue') + + # data recording + result = moose.Table('/ztab') + moose.connect(result, 'requestOut', function, 'getValue') + derivative = moose.Table('/zprime') + moose.connect(derivative, 'requestOut', function, 'getDerivative') + rate = moose.Table('/dz_by_dt') + moose.connect(rate, 'requestOut', function, 'getRate') + x_rec = moose.Table('/xrec') + moose.connect(x_rec, 'requestOut', input_x, 'getOutputValue') + y_rec = moose.Table('/yrec') + moose.connect(y_rec, 'requestOut', input_y, 'getOutputValue') + + dt = simtime/nsteps + for ii in range(32): + moose.setClock(ii, dt) + moose.reinit() + moose.start(simtime) + + # Uncomment the following lines and the import matplotlib.pyplot as plt on top + # of this file to display the plot. + plt.subplot(3,1,1) + plt.plot(x_rec.vector, result.vector, 'r-', label='z = {}'.format(function.expr)) + z = function.c['c0'] * np.exp(function.c['c1'] * xarr) * np.cos(yarr) + np.sin(np.arange(len(xarr)) * dt) + plt.plot(xarr, z, 'b--', label='numpy computed') + plt.xlabel('x') + plt.ylabel('z') + plt.legend() + + plt.subplot(3,1,2) + plt.plot(y_rec.vector, derivative.vector, 'r-', label='dz/dy0') + # derivatives computed by putting x values in the analytical formula + dzdy = function.c['c0'] * np.exp(function.c['c1'] * xarr) * (- np.sin(yarr)) + plt.plot(yarr, dzdy, 'b--', label='numpy computed') + plt.xlabel('y') + plt.ylabel('dz/dy') + plt.legend() + + plt.subplot(3,1,3) + # *** BEWARE *** The first two entries are spurious. Entry 0 is + # *** from reinit sending out the defaults. Entry 2 is because + # *** there is no lastValue for computing real forward difference. + plt.plot(np.arange(2, len(rate.vector), 1) * dt, rate.vector[2:], 'r-', label='dz/dt') + dzdt = np.diff(z)/dt + plt.plot(np.arange(0, len(dzdt), 1.0) * dt, dzdt, 'b--', label='numpy computed') + plt.xlabel('t') + plt.ylabel('dz/dt') + plt.legend() + plt.tight_layout() + plt.show() + +if __name__ == '__main__': + example() + + + +# +# function.py ends here diff --git a/examples/snippets/gapjunction.py b/examples/snippets/gapjunction.py new file mode 100644 index 0000000..11a7c27 --- /dev/null +++ b/examples/snippets/gapjunction.py @@ -0,0 +1,107 @@ +# gapjunction.py --- +# +# Filename: gapjunction.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Tue Jul 2 14:28:35 2013 (+0530) +# Version: +# Last-Updated: Tue Jul 23 21:28:45 2013 (+0530) +# By: subha +# Update #: 57 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Demo for gap junction""" + +import moose +from moose import utils +import pylab + +simtime = 100e-3 +simdt = 1e-6 + +def make_compartment(path): + comp = moose.Compartment(path) + comp.Em = -70e-3 + comp.initVm = -70e-3 + comp.Cm = 1e-12 + comp.Rm = 1e9 + return comp + +def gapjunction_demo(): + model = moose.Neutral('model') + data = moose.Neutral('data') + comps = [] + comp1 = make_compartment('%s/comp1' % (model.path)) + comp2 = make_compartment('%s/comp2' % (model.path)) + pulse = moose.PulseGen('%s/pulse' % (model.path)) + pulse.level[0] = 1e-9 + pulse.delay[0] = 50e-3 + pulse.width[0] = 20e-3 + pulse.delay[1] = 1e9 + moose.connect(pulse, 'output', comp1, 'injectMsg') + gj = moose.GapJunction('%s/gj' % (model.path)) + gj.Gk = 1e-6 + moose.connect(gj, 'channel1', comp1, 'channel') + moose.connect(gj, 'channel2', comp2, 'channel') + vm1_tab = moose.Table('%s/Vm1' % (data.path)) + moose.connect(vm1_tab, 'requestOut', comp1, 'getVm') + vm2_tab = moose.Table('%s/Vm2' % (data.path)) + moose.connect(vm2_tab, 'requestOut', comp2, 'getVm') + pulse_tab = moose.Table('%s/inject' % (data.path)) + moose.connect(pulse_tab, 'requestOut', pulse, 'getOutputValue') + utils.setDefaultDt(elecdt=simdt, plotdt2=simdt) + utils.assignDefaultTicks() + utils.stepRun(simtime, 10000*simdt) + # print len(vm1_tab.vector), len(vm2_tab.vector), len(pulse_tab.vector) + # moose.showmsg(comp1) + # moose.showmsg(comp2) + # moose.showmsg(pulse) + t = pylab.linspace(0, simtime, len(vm1_tab.vector)) + pylab.plot(t, vm1_tab.vector*1000, label='Vm1 (mV)') + pylab.plot(t, vm2_tab.vector*1000, label='Vm2 (mV)') + pylab.plot(t, pulse_tab.vector*1e9, label='inject (nA)') + pylab.legend() + pylab.show() + + +if __name__ == '__main__': + gapjunction_demo() + + + +# +# gapjunction.py ends here diff --git a/examples/snippets/gssaCylinderDiffusion.py b/examples/snippets/gssaCylinderDiffusion.py new file mode 100644 index 0000000..57033a4 --- /dev/null +++ b/examples/snippets/gssaCylinderDiffusion.py @@ -0,0 +1,199 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import sys +sys.path.append('../../python') +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +import os +import signal +PID = os.getpid() + +def doNothing( *args ): + pass + +signal.signal( signal.SIGUSR1, doNothing ) + +concA = 0.005 # millimolar +def makeModel(): + """ + This example illustrates how to set up a diffusion/transport model with + a simple reaction-diffusion system in a tapering cylinder: + + | Molecule **a** diffuses with diffConst of 10e-12 m^2/s. + | Molecule **b** diffuses with diffConst of 5e-12 m^2/s. + | Molecule **b** also undergoes motor transport with a rate of 10e-6 m/s + | Thus it 'piles up' at the end of the cylinder. + | Molecule **c** does not move: diffConst = 0.0 + | Molecule **d** does not move: diffConst = 10.0e-12 but it is buffered. + | Because it is buffered, it is treated as non-diffusing. + + All molecules other than **d** start out only in the leftmost (first) + voxel, with a concentration of 1 mM. **d** is present throughout + at 0.2 mM, except in the last voxel, where it is at 1.0 mM. + + The cylinder has a starting radius of 2 microns, and end radius of + 1 micron. So when the molecule undergoing motor transport gets to the + narrower end, its concentration goes up. + + There is a little reaction in all compartments: ``b + d <===> c`` + + As there is a high concentration of **d** in the last compartment, + when the molecule **b** reaches the end of the cylinder, the reaction + produces lots of **c**. + + Note that molecule **a** does not participate in this reaction. + + The concentrations of all molecules are displayed in an animation. + """ + # create container for model + r0 = 2e-6 # m + r1 = 1e-6 # m + num = 100 + diffLength = 1e-6 # m + len = num * diffLength # m + diffConst = 10e-12 + #motorRate = 1e-6 + #diffConst = 0 + motorRate = 0 + + model = moose.Neutral( 'model' ) + compartment = moose.CylMesh( '/model/compartment' ) + compartment.r0 = r0 + compartment.r1 = r1 + compartment.x0 = 0 + compartment.x1 = len + compartment.diffLength = diffLength + + assert( compartment.numDiffCompts == num ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + d = moose.Pool( '/model/compartment/d' ) + r1 = moose.Reac( '/model/compartment/r1' ) + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'sub', d, 'reac' ) + moose.connect( r1, 'prd', c, 'reac' ) + r1.Kf = 1000.0 # 1/(mM.sec) + r1.Kb = 1 # 1/sec + + # Assign parameters + a.diffConst = diffConst + b.diffConst = diffConst / 2.0 + b.motorConst = motorRate + c.diffConst = diffConst + d.diffConst = diffConst + + + # Make solvers + ksolve = moose.Gsolve( '/model/compartment/ksolve' ) + dsolve = moose.Dsolve( '/model/compartment/dsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.dsolve = dsolve + os.kill( PID, signal.SIGUSR1 ) + stoich.path = "/model/compartment/##" + + print dsolve.numPools + assert( dsolve.numPools == 4 ) + a.vec.concInit = concA + b.vec.concInit = concA / 5.0 + c.vec.concInit = concA + d.vec.concInit = concA / 5.0 + for i in range( num ): + d.vec[i].concInit = concA * 2 * i / num + #d.vec[num/2:num].concInit = concA * 1.5 + +def makePlots(): + plt.ion() + fig = plt.figure( figsize=(12,6) ) + dynamic = fig.add_subplot( 111 ) + + a = moose.vec( '/model/compartment/a' ) + b = moose.vec( '/model/compartment/b' ) + c = moose.vec( '/model/compartment/c' ) + d = moose.vec( '/model/compartment/d' ) + pos = numpy.arange( 0, a.conc.size, 1 ) + aline, = dynamic.plot( pos, a.conc, label='a' ) + bline, = dynamic.plot( pos, b.conc, label='b' ) + cline, = dynamic.plot( pos, c.conc, label='c' ) + dline, = dynamic.plot( pos, d.conc, label='d' ) + + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Cylinder voxel #' ) + plt.legend() + timelabel = plt.text( 10, concA * 3, 'time = 0.0' ) + #fig.canvas.draw() + plt.ylim( 0, 4.0 * concA ) + return( fig, dynamic, timelabel, aline, bline, cline, dline ) + +def updatePlots( plotlist, time ): + a = moose.vec( '/model/compartment/a' ) + b = moose.vec( '/model/compartment/b' ) + c = moose.vec( '/model/compartment/c' ) + d = moose.vec( '/model/compartment/d' ) + + plotlist[2].set_text( "time = %g" % time ) + plotlist[3].set_ydata( a.conc ) + plotlist[4].set_ydata( b.conc ) + plotlist[5].set_ydata( c.conc ) + plotlist[6].set_ydata( d.conc ) + plotlist[0].canvas.draw() + + +def main(): + runtime = 20.0 + diffdt = 0.005 + plotdt = 0.1 + makeModel() + # Set up clocks. The dsolver to know before assigning stoich + moose.setClock( 10, diffdt ) # 10 is the standard clock for Dsolve. + moose.setClock( 16, plotdt ) # 16 is the standard clock for Ksolve. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + d = moose.element( '/model/compartment/d' ) + + moose.reinit() + atot = sum( a.vec.n ) + btot = sum( b.vec.n ) + ctot = sum( c.vec.n ) + dtot = sum( d.vec.n ) + plotlist = makePlots() + for t in numpy.arange( 0, runtime, plotdt ): + moose.start( plotdt ) + updatePlots( plotlist, t ) + # moose.start( runtime ) # Run the model + + atot2 = sum( a.vec.n ) + btot2 = sum( b.vec.n ) + ctot2 = sum( c.vec.n ) + dtot2 = sum( d.vec.n ) + + print 'Ratio of initial to final total numbers of of a, b, c, d = ' + print atot2/atot, btot2/btot, ctot2/ctot, dtot2/dtot + print 'Initial to final (b+c)=', (btot2 + ctot2) / (btot + ctot ) + print "\nHit 'enter' to exit" + #raw_input() + + quit() + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/gssaRDspiny.py b/examples/snippets/gssaRDspiny.py new file mode 100644 index 0000000..46beebc --- /dev/null +++ b/examples/snippets/gssaRDspiny.py @@ -0,0 +1,296 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +#diffConst = 10e-12 # m^2/sec +diffConst = 0.0 +def makeModel(): + model = moose.Neutral( '/model' ) + # Make neuronal model. It has no channels, just for geometry + cell = moose.loadModel( './spinyNeuron.p', '/model/cell', 'Neutral' ) + # We don't want the cell to do any calculations. Disable everything. + for i in moose.wildcardFind( '/model/cell/##' ): + i.tick = -1 + + # create container for model + model = moose.element( '/model' ) + chem = moose.Neutral( '/model/chem' ) + # The naming of the compartments is dicated by the places that the + # chem model expects to be loaded. + compt0 = moose.NeuroMesh( '/model/chem/compt0' ) + compt0.separateSpines = 1 + compt0.geometryPolicy = 'cylinder' + compt1 = moose.SpineMesh( '/model/chem/compt1' ) + moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) + compt2 = moose.PsdMesh( '/model/chem/compt2' ) + moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) + + #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) + makeChemModel( compt0 ) # Populate all 3 compts with the chem system. + makeChemModel( compt1 ) + makeChemModel( compt2 ) + + compt0.diffLength = 2e-6 # This will be over 100 compartments. + # This is the magic command that configures the diffusion compartments. + compt0.subTreePath = cell.path + "/##" + moose.showfields( compt0 ) + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) + ksolve1 = moose.Gsolve( '/model/chem/compt1/ksolve' ) + ksolve2 = moose.Gsolve( '/model/chem/compt2/ksolve' ) + #dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) + #dsolve1 = moose.Dsolve( '/model/chem/compt1/dsolve' ) + #dsolve2 = moose.Dsolve( '/model/chem/compt2/dsolve' ) + stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) + stoich1 = moose.Stoich( '/model/chem/compt1/stoich' ) + stoich2 = moose.Stoich( '/model/chem/compt2/stoich' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + #stoich0.dsolve = dsolve0 + #stoich1.dsolve = dsolve1 + #stoich2.dsolve = dsolve2 + stoich0.path = '/model/chem/compt0/#' + stoich1.path = '/model/chem/compt1/#' + stoich2.path = '/model/chem/compt2/#' + assert( stoich0.numVarPools == 3 ) + assert( stoich0.numProxyPools == 0 ) + assert( stoich0.numRates == 4 ) + assert( stoich1.numVarPools == 3 ) + assert( stoich1.numProxyPools == 0 ) + #assert( stoich1.numRates == 4 ) + assert( stoich2.numVarPools == 3 ) + assert( stoich2.numProxyPools == 0 ) + #assert( stoich2.numRates == 4 ) + #dsolve0.buildNeuroMeshJunctions( dsolve1, dsolve2 ) + stoich0.buildXreacs( stoich1 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + moose.element( '/model/chem/compt2/a[0]' ).concInit *= 1.5 + + # Create the output tables + num = compt0.numDiffCompts - 1 + graphs = moose.Neutral( '/model/graphs' ) + makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) + makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) + makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) + makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) + makeTab( 'a_spine', '/model/chem/compt1/a[5]' ) + makeTab( 'b_spine', '/model/chem/compt1/b[5]' ) + makeTab( 'a_psd', '/model/chem/compt2/a[5]' ) + makeTab( 'b_psd', '/model/chem/compt2/b[5]' ) + +def makeTab( plotname, molpath ): + tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table + # connect up the tables + moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); + + +def makeDisplay(): + plt.ion() + fig = plt.figure( figsize=(10,12) ) + + dend = fig.add_subplot( 411 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Dend voxel #' ) + plt.legend() + timeLabel = plt.text(200, 0.5, 'time = 0') + + spine = fig.add_subplot( 412 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Spine voxel #' ) + plt.legend() + + psd = fig.add_subplot( 413 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'PSD voxel #' ) + plt.legend() + + timeSeries = fig.add_subplot( 414 ) + timeSeries.set_ylim( 0, 0.6 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + plt.legend() + + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + line1, = dend.plot( range( len( a ) ), a.conc, label='a' ) + line2, = dend.plot( range( len( b ) ), b.conc, label='b' ) + dend.set_ylim( 0, 0.6 ) + + a = moose.vec( '/model/chem/compt1/a' ) + b = moose.vec( '/model/chem/compt1/b' ) + line3, = spine.plot( range( len( a ) ), a.conc, label='a' ) + line4, = spine.plot( range( len( b ) ), b.conc, label='b' ) + spine.set_ylim( 0, 0.6 ) + + a = moose.vec( '/model/chem/compt2/a' ) + b = moose.vec( '/model/chem/compt2/b' ) + line5, = psd.plot( range( len( a ) ), a.conc, label='a' ) + line6, = psd.plot( range( len( b ) ), b.conc, label='b' ) + psd.set_ylim( 0, 0.6 ) + + fig.canvas.draw() + return ( timeSeries, dend, spine, psd, fig, line1, line2, line3, line4, line5, line6, timeLabel ) + +def updateDisplay( plotlist ): + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + plotlist[5].set_ydata( a.conc ) + plotlist[6].set_ydata( b.conc ) + print 'compt0:', min(a.n), max(a.n), min(b.n), max(b.n) + + a = moose.vec( '/model/chem/compt1/a' ) + b = moose.vec( '/model/chem/compt1/b' ) + plotlist[7].set_ydata( a.conc ) + plotlist[8].set_ydata( b.conc ) + print 'compt1:', min(a.n), max(a.n), min(b.n), max(b.n) + + a = moose.vec( '/model/chem/compt2/a' ) + b = moose.vec( '/model/chem/compt2/b' ) + plotlist[9].set_ydata( a.conc ) + plotlist[10].set_ydata( b.conc ) + plotlist[4].canvas.draw() + print 'compt2:', min(a.n), max(a.n), min(b.n), max(b.n) + + +def finalizeDisplay( plotlist, cPlotDt ): + for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = plotlist[0].plot( pos, x.vector, label=x.name ) + plotlist[4].canvas.draw() + print( "Hit 'enter' to exit" ) + raw_input() + +def makeChemModel( compt ): + """ + This function setus up a simple oscillatory chemical system within + the script. The reaction system is:: + + s ---a---> a // s goes to a, catalyzed by a. + s ---a---> b // s goes to b, catalyzed by a. + a ---b---> s // a goes to s, catalyzed by b. + b -------> s // b is degraded irreversibly to s. + + in sum, **a** has a positive feedback onto itself and also forms **b**. + **b** has a negative feedback onto **a**. + Finally, the diffusion constant for **a** is 1/10 that of **b**. + """ + # create container for model + concA = 1 # millimolar + + # create molecules and reactions + a = moose.Pool( compt.path + '/a' ) + b = moose.Pool( compt.path + '/b' ) + s = moose.Pool( compt.path + '/s' ) + e1 = moose.MMenz( compt.path + '/e1' ) + e2 = moose.MMenz( compt.path + '/e2' ) + e3 = moose.MMenz( compt.path + '/e3' ) + r1 = moose.Reac( compt.path + '/r1' ) + + a.concInit = 0.1 + b.concInit = 0.1 + s.concInit = 1 + + moose.connect( e1, 'sub', s, 'reac' ) + moose.connect( e1, 'prd', a, 'reac' ) + moose.connect( a, 'nOut', e1, 'enzDest' ) + e1.Km = 1 + e1.kcat = 1 + + moose.connect( e2, 'sub', s, 'reac' ) + moose.connect( e2, 'prd', b, 'reac' ) + moose.connect( a, 'nOut', e2, 'enzDest' ) + e2.Km = 1 + e2.kcat = 0.5 + + moose.connect( e3, 'sub', a, 'reac' ) + moose.connect( e3, 'prd', s, 'reac' ) + moose.connect( b, 'nOut', e3, 'enzDest' ) + e3.Km = 0.1 + e3.kcat = 1 + + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'prd', s, 'reac' ) + r1.Kf = 0.3 # 1/sec + r1.Kb = 0 # 1/sec + + # Assign parameters + a.diffConst = diffConst/10 + b.diffConst = diffConst + s.diffConst = 0 + +def main(): + """ + This example illustrates how to define a kinetic model embedded in + the branching pseudo-1-dimensional geometry of a neuron. The model + oscillates in space and time due to a Turing-like reaction-diffusion + mechanism present in all compartments. For the sake of this demo, + the initial conditions are set up slightly different on the PSD + compartments, so as to break the symmetry and initiate oscillations + in the spines. + This example uses an external electrical model file with basal + dendrite and three branches on + the apical dendrite. One of those branches has a dozen or so spines. + In this example we build an identical model in each compartment, using + the makeChemModel function. One could readily define a system with + distinct reactions in each compartment. + The model is set up to run using the Ksolve for integration and the + Dsolve for handling diffusion. + The display has four parts: + + a. animated line plot of concentration against main compartment#. + b. animated line plot of concentration against spine compartment#. + c. animated line plot of concentration against psd compartment#. + d. time-series plot that appears after the simulation has + ended. The plot is for the last (rightmost) compartment. + + """ + chemdt = 0.1 # Tested various dts, this is reasonable. + diffdt = 0.01 + plotdt = 1 + animationdt = 5 + runtime = 200 + + makeModel() + plotlist = makeDisplay() + + # Schedule the whole lot - autoscheduling already does this. + ''' + for i in range( 11, 17 ): + moose.setClock( i, chemdt ) # for the chem objects + moose.setClock( 10, diffdt ) # for the diffusion + moose.setClock( 18, plotdt ) # for the output tables. + ''' + moose.reinit() + for i in range( 0, runtime, animationdt ): + moose.start( animationdt ) + plotlist[11].set_text( "time = %d" % i ) + updateDisplay( plotlist ) + + finalizeDisplay( plotlist, plotdt ) + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/h10.CNG.swc b/examples/snippets/h10.CNG.swc new file mode 100644 index 0000000..554dbe2 --- /dev/null +++ b/examples/snippets/h10.CNG.swc @@ -0,0 +1,226 @@ +# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. +# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. +# +#---------------------------------------------------------------------- +# This file was obtained using ban2swc.pl on file h10.txt +# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 +#---------------------------------------------------------------------- +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0. 23. 0. 3.35 -1 + 2 1 0. 18. 0. 2.5 1 + 3 1 0. 0. 0. 1.058 2 + 4 3 -4.157 -2.778 0. 0.6 3 + 5 3 -5.925 -3.510 -4.62 0.55 4 + 6 3 -15.47 -7.464 -29.560 0.4 5 + 7 3 -23.89 -9.139 -72.72 0.4 6 + 8 3 -24.39 -13.43 -83.51 0.350 6 + 9 3 -9.814 -5.121 -14.780 0.5 5 + 10 3 -15.81 -6.313 -23.93 0.5 9 + 11 3 -65.94 -16.29 -100.4 0.4 10 + 12 3 -54.5 -14.01 -82.960 0.4 10 + 13 3 -17.2 -10.06 -28.09 0.4 9 + 14 3 -78.64 -51.11 -138.70 0.4 13 + 15 3 -41.69 -26.42 -72.15 0.350 13 + 16 3 -10.11 -8.731 -20.330 0.45 4 + 17 3 -14.44 -13.06 -35.11 0.350 16 + 18 3 -26.61 -21.19 -108.7 0.3 17 + 19 3 -24.2 -27.66 -123.4 0.3 17 + 20 3 -32.3 -30.92 -96.08 0.350 16 + 21 3 -45.7 -39.87 -120.2 0.3 20 + 22 3 -56.99 -67.88 -162.60 0.350 20 + 23 3 -8.889 -13.3 0. 0.65 3 + 24 3 -11.39 -15.8 -3.54 0.55 23 + 25 3 -19.39 -23.8 -14.85 0.5 24 + 26 3 -21.7 -25.35 -19.01 0.45 25 + 27 3 -33.25 -33.06 -39.79 0.4 26 + 28 3 -64.36 -45.95 -121.10 0.350 27 + 29 3 -53.54 -53.36 -109.10 0.350 27 + 30 3 -26.32 -28.43 -27.32 0.4 26 + 31 3 -68.78 -46.02 -73.28 0.3 30 + 32 3 -71.820 -73.93 -91.67 0.350 30 + 33 3 -59.82 -84.320 -123.80 0.350 25 + 34 3 -84.52 -121.30 -190.3 0.25 33 + 35 3 -34.39 -38.80 -36.06 0.350 24 + 36 3 -96.61 -80.38 -86.06 0.3 35 + 37 3 -93.98 -128. -107.7 0.3 35 + 38 3 -15.65 -29.64 -17.68 0.5 23 + 39 3 -17.01 -32.9 -21.21 0.5 38 + 40 3 -21.95 -40.29 -34.52 0.4 39 + 41 3 -50.03 -82.33 -110.2 0.3 40 + 42 3 -49.730 -81.87 -109.30 0.350 40 + 43 3 -22.75 -61.78 -65.28 0.3 39 + 44 3 -37.30 -81.9 -74.25 0.3 38 + 45 3 -2.146 -10.790 0. 0.75 3 + 46 3 -24.77 -65.42 -24.490 0.350 45 + 47 3 -54.47 -137.1 -56.64 0.350 46 + 48 3 -55.18 -138.8 -57.4 0.350 46 + 49 3 -2.146 -20.95 -4.21 0.6 45 + 50 3 -2.146 -35.730 -10.33 0.45 49 + 51 3 -22.75 -139.3 -80.89 0.3 50 + 52 3 29. -192.3 -117. 0.350 50 + 53 3 -2.146 -25.57 -6.12 0.55 49 + 54 3 -3.103 -30.38 -7.10 0.5 53 + 55 3 -49.410 -263.2 -54.31 0.350 54 + 56 3 -22.05 -125.60 -26.41 0.3 54 + 57 3 16.990 -121.80 -25.63 0.3 53 + 58 3 2.146 -10.790 0. 0.65 3 + 59 3 2.146 -20.79 0. 0.4 58 + 60 3 2.146 -235.8 0. 0.350 59 + 61 3 2.146 -250.8 0. 0.25 60 + 62 3 4.059 -15.41 0. 0.4 58 + 63 3 8.269 -25.57 0. 0.350 62 + 64 3 35.63 -163.10 -27.90 0.4 63 + 65 3 45.32 -81.02 -13.27 0.3 63 + 66 3 20.13 -54.21 0. 0.350 62 + 67 3 35.25 -130.20 15.41 0.3 66 + 68 3 78.98 -142.3 21.07 0.350 66 + 69 3 8.889 -13.3 0. 0.6 3 + 70 3 16.67 -32.08 8.42 0.5 69 + 71 3 24.45 -50.86 16.84 0.45 70 + 72 3 49.32 -175.9 42.2 0.350 71 + 73 3 84.38 -140.6 38.30 0.350 71 + 74 3 42.45 -141.4 78.51 0.4 70 + 75 3 48.94 -174. 100.7 0.3 74 + 76 3 16.080 -20.490 4.21 0.4 69 + 77 3 99.04 -103.5 52.81 0.3 76 + 78 3 41.550 -45.97 19.13 0.3 76 + 79 3 63.71 -109.60 64.06 0.3 78 + 80 3 75.26 -126.9 77.95 0.2 79 + 81 3 18.29 -12.22 0. 0.6 3 + 82 3 20.79 -14.72 3.54 0.55 81 + 83 3 26.29 -20.22 11.31 0.5 82 + 84 3 101.10 -132.20 101.30 0.350 83 + 85 3 97.5 -67.8 68.54 0.3 83 + 86 3 47.29 -41.22 41.01 0.25 82 + 87 3 21.56 -13.58 3.54 0.5 81 + 88 3 28.09 -16.28 10.61 0.45 87 + 89 3 122.10 -79.11 86.16 0.3 88 + 90 3 85.99 -27.8 50.050 0.3 88 + 91 3 43.12 -22.51 26.87 0.4 87 + 92 3 75.45 -44.11 85.070 0.350 91 + 93 3 97.61 -33.34 110. 0.350 91 + 94 4 0. 41. 0. 2.550 1 + 95 4 0. 127. 0. 0.3 94 + 96 4 5.932 70.820 -6.05 2.25 94 + 97 4 18.37 133.3 -18.73 1.25 96 + 98 4 26.63 153.3 -23.02 0.6 97 + 99 4 56.65 225.8 -38.63 0.3 98 + 100 4 29.63 160.5 -24.580 0.6 98 + 101 4 91.850 253.70 -24.580 0.350 100 + 102 4 63.97 333.1 -24.580 0.350 100 + 103 4 18.37 142.20 -20.48 1.25 97 + 104 4 18.37 145.1 -21.07 1.25 103 + 105 4 28.28 195. -42.12 0.45 104 + 106 4 33.69 222.10 -53.6 0.350 105 + 107 4 39.1 249.3 -65.08 0.25 106 + 108 4 17.47 149.6 -22.98 1.25 104 + 109 4 4.851 213.10 -49.77 0.5 108 + 110 4 -10.07 288.1 -100.9 0.350 109 + 111 4 15.85 157.8 -26.43 1.25 108 + 112 4 15.85 182.3 -31.3 0.5 111 + 113 4 15.85 235.3 -41.84 0.350 112 + 114 4 15.85 272.2 -57.15 0.3 113 + 115 4 15.85 195.10 -33.84 0.350 112 + 116 4 30.09 266.7 -33.84 0.3 115 + 117 4 0.2380 273.5 -33.84 0.3 115 + 118 4 11.72 167.8 -28.57 1.25 111 + 119 4 3.46 187.70 -32.87 1.25 118 + 120 4 -0.506 207.60 -41.28 1.25 119 + 121 4 -3.39 222.10 -47.410 1.25 120 + 122 4 -3.39 223.8 -48.52 1.25 121 + 123 4 -3.39 247.10 -64.070 0.45 122 + 124 4 1.439 271.40 -88.820 0.3 123 + 125 4 -16.080 310.90 -129.1 0.350 123 + 126 4 -3.39 248.70 -65.19 1.25 122 + 127 4 -3.209 249.70 -65.570 1.25 126 + 128 4 1.297 272.3 -75.14 0.5 127 + 129 4 12. 326.1 -111.80 0.350 128 + 130 4 -0.506 263.2 -71.31 1.25 127 + 131 4 0.2450 265.1 -71.7 0.6 130 + 132 4 3.623 273.2 -73.45 0.55 131 + 133 4 46.230 337. -105.2 0.3 132 + 134 4 22.55 368.40 -113.60 0.350 132 + 135 4 19.01 310.40 -81.45 0.45 131 + 136 4 42.74 367.6 -81.45 0.350 135 + 137 4 -0.506 280.90 -74.820 1.25 130 + 138 4 -0.506 284.8 -75.60 0.850 137 + 139 4 14.450 360. -107.4 0.4 138 + 140 4 18.06 378.1 -115. 0.3 139 + 141 4 -14.02 352.8 -104.30 0.850 138 + 142 4 -20.330 384.5 -117.7 0.70 141 + 143 4 -20.330 441.8 -141.4 0.70 142 + 144 4 -20.330 494.40 -163.20 0.45 143 + 145 4 -20.330 544.30 -196.60 0.350 144 + 146 4 -20.330 582.6 -222.10 0.3 145 + 147 4 -20.330 622.5 -248.8 0.3 145 + 148 4 -20.330 462.1 -149.8 0.6 143 + 149 4 -7.321 527.5 -163.10 0.45 148 + 150 4 -1.389 557.30 -169.20 0.350 149 + 151 4 21.51 612.6 -181.10 0.3 150 + 152 4 -1.389 630.90 -183.8 0.25 150 + 153 4 -36.6 543.9 -166.4 0.6 148 + 154 4 -46.36 592.9 -176.4 0.350 153 + 155 4 -46.36 669.6 -208.10 0.25 154 + 156 4 -74.99 662.1 -207.4 0.25 154 + 157 4 -44.44 583.30 -174.4 0.5 153 + 158 4 -44.44 665.30 -174.4 0.350 157 + 159 4 -44.44 705.30 -174.4 0.25 158 + 160 4 -87.3 686.80 -174.4 0.350 157 + 161 4 -121.7 769.90 -174.4 0.25 160 + 162 4 -32.71 414.40 -131.1 0.45 142 + 163 4 -85.74 542.4 -188.5 0.350 162 + 164 4 -120. 625.2 -225.60 0.3 163 + 165 4 -137.4 667. -244.4 0.25 164 + 166 4 -132.4 655.1 -239. 0.2 164 + 167 4 -0.506 290.7 -76.77 0.9 137 + 168 4 6.713 327. -76.77 0.8 167 + 169 4 8.664 336.8 -76.77 0.6 168 + 170 4 12.49 356. -80.67 0.5 169 + 171 4 21.48 401.3 -89.84 0.350 170 + 172 4 13.74 362.3 -76.77 0.5 168 + 173 4 23.12 385. -71.89 0.25 172 + 174 4 13.74 396.6 -69.94 0.350 172 + 175 4 -20.6 391.70 -76.77 0.350 167 + 176 4 -15.83 311.3 -91.59 0.4 126 + 177 4 -28.44 374.70 -118.4 0.3 176 + 178 4 -14.84 249.8 -67.41 0.45 121 + 179 4 -37.12 303.6 -106.30 0.350 178 + 180 4 -55.25 347.3 -138. 0.3 178 + 181 4 -3.209 221.20 -47.02 0.45 120 + 182 4 -3.209 356.6 -73.95 0.350 181 + 183 4 -31.36 289.2 -61.660 0.350 181 + 184 4 -11.94 210.70 -44.35 0.6 119 + 185 4 -36.06 246.9 -62.33 0.5 184 + 186 4 -67.18 322. -96.01 0.3 185 + 187 4 -81.14 291.90 -88.74 0.3 185 + 188 4 1.208 193.10 -34.04 0.4 118 + 189 4 -21.42 306.90 -34.04 0.3 188 + 190 4 -77.13 310.40 -34.04 0.350 188 + 191 4 18.37 165.70 -25.17 0.5 103 + 192 4 25.78 203. -25.17 0.350 191 + 193 4 56.22 356. -25.17 0.3 192 + 194 4 50.36 326.6 -25.17 0.3 192 + 195 4 16.22 176.5 -25.17 0.350 191 + 196 4 -10.31 309.90 -25.17 0.350 195 + 197 4 2.957 243.20 -25.17 0.3 195 + 198 4 -2.105 51.58 -2.15 0.350 94 + 199 4 -20.09 142. -20.48 0.350 198 + 200 4 -3.061 56.39 -3.12 0.3 198 + 201 4 -3.061 76.39 -3.12 0.3 200 + 202 4 -3.061 142.4 -3.12 0.3 201 + 203 4 -3.061 167.4 -3.12 0.3 201 + 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/snippets/hdfdemo.py b/examples/snippets/hdfdemo.py new file mode 100644 index 0000000..f1fdc2e --- /dev/null +++ b/examples/snippets/hdfdemo.py @@ -0,0 +1,99 @@ + +# Author: Subhasis Ray + +"""HDF5 is a self-describing file format for storing large +datasets. MOOSE has an utility :class:`HDF5DataWriter` for saving +simulations data in HDF5 files.""" + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import numpy +import moose + +def example(): + """In this example + + 1. We create a passive neuronal compartment `comp`. + + 2. We create an HDF5DataWriter object `hdfwriter` for writing to a + file ``output_hdfdemo.h5``. The `mode` of the HDF5DataWriter + is set to `2` which means if a file of the same name exists, it + will be overwritten. + + 3. The membrane voltage `Vm` and membrane current `Im` of `comp` + are connected to `hdfwriter` for recording. + + 4. We set some attributes of the datasets and the file. + + 5. We run the simulation, `hdfwriter` records and stores the `Vm` + and `Im` values over time. + + 6. We close the file by calling close() method of `hdfwriter`. + + Running this snippet creates the file ``output_hdfdemo.h5`` which + reflects the structure of the model:: + + model + | + | + c[0] + | + |___im + | + |___vm + + + `im` and `vm` are datasets containing `Im` and `Vm` field values + recorded from `comp`. + + """ + model = moose.Neutral('/model') + comp = moose.Compartment('/model/c') + hdfwriter = moose.HDF5DataWriter('h') + hdfwriter.mode = 2 # Truncate existing file + moose.connect(hdfwriter, 'requestOut', comp, 'getVm') + moose.connect(hdfwriter, 'requestOut', comp, 'getIm') + + hdfwriter.filename = 'output_hdfdemo.h5' + hdfwriter.compressor = 'zlib' + hdfwriter.compression = 7 + + # Flush data from memory to disk after accumulating every 1K entries. + hdfwriter.flushLimit = 1024 + + # We allow simple attributes of type string, double and long. + # This allows for file-level metadata/annotation. + hdfwriter.stringAttr['note'] = 'This is a test.' + + # All paths are taken relative to the root. The last token is the name + # of the attribute. + hdfwriter.doubleAttr['{}/vm/a_double_attribute'.format(comp.path)] = 3.141592 + hdfwriter.longAttr['an_int_attribute'] = 8640 + + # In addition, vectors of string, long and double can also be stored + # as attributes. + hdfwriter.stringVecAttr['stringvec'] = ['I wonder', 'why', 'I wonder'] + hdfwriter.doubleVecAttr['{}/dvec'.format(comp.path)] = [3.141592, 2.71828] + hdfwriter.longVecAttr['{}/lvec'.format(comp.path)] = [3, 14, 1592, 271828] + + vm_tab = moose.Table('Vm') + moose.connect(vm_tab, 'requestOut', comp, 'getVm') + moose.setClock(0, 1e-3) + moose.setClock(1, 1e-3) + moose.setClock(2, 1e-3) + moose.useClock(0, '/model/c', 'init') + moose.useClock(1, '/##[TYPE!=HDF5DataWriter]', 'process') + moose.useClock(2, '/##[TYPE=HDF5DataWriter]', 'process') + + moose.reinit() + comp.inject = 0.1 + moose.start(30.0) + hdfwriter.close() + vm_tab.plainPlot('hdfdemo_Vm.csv') + print 'Finished simulation. Data was saved in', hdfwriter.filename + + +if __name__ == '__main__': + example() diff --git a/examples/snippets/helloMoose.py b/examples/snippets/helloMoose.py new file mode 100644 index 0000000..1db5f60 --- /dev/null +++ b/examples/snippets/helloMoose.py @@ -0,0 +1,39 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import moose +import pylab +import numpy + +def main(): + """ + This is the Hello MOOSE program. It shows how to get MOOSE to do + its most basic operations: to load, run, and graph a model defined + in an external model definition file. + + The loadModel function is the core of this example. It can accept + a range of file and model types, including kkit, cspace and GENESIS .p + files. It autodetects the file type and loads in the simulation. + + The wildcardFind function finds all objects matching the specified path, + in this case Table objects hoding the simulation results. They were + all defined in the model file. + """ + mfile = '../genesis/kkit_objects_example.g' + modelId = moose.loadModel( mfile, 'model', 'gsl' ) # Load it + moose.reinit() # Set initial conditions + moose.start( 20.0 ) # Run it + # Graph it + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + pylab.plot( x.vector, label=x.name ) + pylab.legend() + pylab.show() + +if __name__ == '__main__': + main() diff --git a/examples/snippets/hhcomp.py b/examples/snippets/hhcomp.py new file mode 100644 index 0000000..7115a57 --- /dev/null +++ b/examples/snippets/hhcomp.py @@ -0,0 +1,262 @@ +# hhcomp.py --- +# +# Filename: hhcomp.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Tue May 7 12:11:22 2013 (+0530) +# Version: +# Last-Updated: Tue May 7 19:21:43 2013 (+0530) +# By: subha +# Update #: 309 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""A compartment with hodgkin-huxley ion channels""" + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import numpy as np +import matplotlib.pyplot as plt + +import moose +from moose import utils + +EREST_ACT = -70e-3 +per_ms = 1e3 + +def create_na_chan(parent='/library', name='na', vmin=-110e-3, vmax=50e-3, vdivs=3000): + """Create a Hodhkin-Huxley Na channel under `parent`. + + vmin, vmax, vdivs: voltage range and number of divisions for gate tables + + """ + na = moose.HHChannel('%s/%s' % (parent, name)) + na.Xpower = 3 + na.Ypower = 1 + v = np.linspace(vmin, vmax, vdivs+1) - EREST_ACT + m_alpha = per_ms * (25 - v * 1e3) / (10 * (np.exp((25 - v * 1e3) / 10) - 1)) + m_beta = per_ms * 4 * np.exp(- v * 1e3/ 18) + m_gate = moose.element('%s/gateX' % (na.path)) + m_gate.min = vmin + m_gate.max = vmax + m_gate.divs = vdivs + m_gate.tableA = m_alpha + m_gate.tableB = m_alpha + m_beta + h_alpha = per_ms * 0.07 * np.exp(-v / 20e-3) + h_beta = per_ms * 1/(np.exp((30e-3 - v) / 10e-3) + 1) + h_gate = moose.element('%s/gateY' % (na.path)) + h_gate.min = vmin + h_gate.max = vmax + h_gate.divs = vdivs + h_gate.tableA = h_alpha + h_gate.tableB = h_alpha + h_beta + plt.subplot(2,1,1) + plt.plot(v, m_alpha / (m_alpha + m_beta), label='m_inf') + plt.plot(v, h_alpha / (h_alpha + h_beta), label='h_inf') + plt.legend() + plt.subplot(2,1,2) + plt.plot(v, 1/(m_alpha + m_beta), label='tau_m') + plt.plot(v, 1/(h_alpha + h_beta), label='tau_h') + plt.legend() + plt.show() + plt.close() + na.tick = -1 + return na + +def create_k_chan(parent='/library', name='k', vmin=-120e-3, vmax=40e-3, vdivs=3000): + """Create a Hodhkin-Huxley K channel under `parent`. + + vmin, vmax, vdivs: voltage range and number of divisions for gate tables + + """ + k = moose.HHChannel('%s/%s' % (parent, name)) + k.Xpower = 4 + v = np.linspace(vmin, vmax, vdivs+1) - EREST_ACT + n_alpha = per_ms * (10 - v * 1e3)/(100 * (np.exp((10 - v * 1e3)/10) - 1)) + n_beta = per_ms * 0.125 * np.exp(- v * 1e3 / 80) + n_gate = moose.element('%s/gateX' % (k.path)) + n_gate.min = vmin + n_gate.max = vmax + n_gate.divs = vdivs + n_gate.tableA = n_alpha + n_gate.tableB = n_alpha + n_beta + plt.subplot(211) + plt.plot(v, n_alpha/(n_alpha + n_beta)) + plt.subplot(212) + plt.plot(v, 1/(n_alpha + n_beta)) + plt.show() + plt.close() + k.tick = -1 + return k + +def test_channel_gates(): + """Creates prototype channels under `/library` and plots the time + constants (tau) and activation (minf, hinf, ninf) parameters for the + channel gates. + + Does not execute any simulation. + + """ + lib = moose.Neutral('/library') + na_proto = create_na_chan() + k_proto = create_k_chan() + m = moose.element('%s/gateX' % (na_proto.path)) + h = moose.element('%s/gateY' % (na_proto.path)) + n = moose.element('%s/gateX' % (k_proto.path)) + v = np.linspace(m.min,m.max, m.divs+1) + plt.subplot(211) + plt.plot(v, 1/m.tableB, label='tau_m') + plt.plot(v, 1/h.tableB, label='tau_h') + plt.plot(v, 1/n.tableB, label='tau_n') + plt.legend() + plt.subplot(212) + plt.plot(v, m.tableA/m.tableB, label='m_inf') + plt.plot(v, h.tableA/h.tableB, label='h_inf') + plt.plot(v, n.tableA/n.tableB, label='n_inf') + plt.legend() + plt.show() + +def create_passive_comp(parent='/library', name='comp', diameter=30e-6, length=0.0): + """Creates a single compartment with squid axon Em, Cm and Rm. Does + not set Ra""" + comp = moose.Compartment('%s/%s' % (parent, name)) + comp.Em = EREST_ACT + 10.613e-3 + comp.initVm = EREST_ACT + if length <= 0: + sarea = np.pi * diameter * diameter + else: + sarea = np.pi * diameter * length + # specific conductance gm = 0.3 mS/cm^2 + comp.Rm = 1 / (0.3e-3 * sarea * 1e4) + # Specific capacitance cm = 1 uF/cm^2 + comp.Cm = 1e-6 * sarea * 1e4 + return comp, sarea + +def create_hhcomp(parent='/library', name='hhcomp', diameter=-30e-6, length=0.0): + """Create a compartment with Hodgkin-Huxley type ion channels (Na and + K). + + Returns a 3-tuple: (compartment, nachannel, kchannel) + + """ + comp, sarea = create_passive_comp(parent, name, diameter, length) + if moose.exists('/library/na'): + moose.copy('/library/na', comp.path, 'na') + else: + create_na_chan(parent=comp.path) + na = moose.element('%s/na' % (comp.path)) + # Na-conductance 120 mS/cm^2 + na.Gbar = 120e-3 * sarea * 1e4 + na.Ek = 115e-3 + EREST_ACT + moose.connect(comp, 'channel', na, 'channel') + if moose.exists('/library/k'): + moose.copy('/library/k', comp.path, 'k') + else: + create_k_chan(parent=comp.path) + k = moose.element('%s/k' % (comp.path)) + # K-conductance 36 mS/cm^2 + k.Gbar = 36e-3 * sarea * 1e4 + k.Ek = -12e-3 + EREST_ACT + moose.connect(comp, 'channel', k, 'channel') + return comp, na, k + +def test_hhcomp(): + """Create and simulate a single spherical compartment with + Hodgkin-Huxley Na and K channel. + + Plots Vm, injected current, channel conductances. + + """ + model = moose.Neutral('/model') + data = moose.Neutral('/data') + comp, na, k = create_hhcomp(parent=model.path) + print comp.Rm, comp.Cm, na.Ek, na.Gbar, k.Ek, k.Gbar + pg = moose.PulseGen('%s/pg' % (model.path)) + pg.firstDelay = 20e-3 + pg.firstWidth = 40e-3 + pg.firstLevel = 1e-9 + pg.secondDelay = 1e9 + moose.connect(pg, 'output', comp, 'injectMsg') + inj = moose.Table('%s/pulse' % (data.path)) + moose.connect(inj, 'requestOut', pg, 'getOutputValue') + vm = moose.Table('%s/Vm' % (data.path)) + moose.connect(vm, 'requestOut', comp, 'getVm') + gK = moose.Table('%s/gK' % (data.path)) + moose.connect(gK, 'requestOut', k, 'getGk') + gNa = moose.Table('%s/gNa' % (data.path)) + moose.connect(gNa, 'requestOut', na, 'getGk') + simdt = 1e-6 + plotdt = 1e-4 + simtime = 100e-3 + if (1): + moose.showmsg( '/clock' ) + for i in range(8): + moose.setClock( i, simdt ) + moose.setClock( 8, plotdt ) + moose.reinit() + else: + utils.resetSim([model.path, data.path], simdt, plotdt, simmethod='ee') + moose.showmsg( '/clock' ) + moose.start(simtime) + t = np.linspace(0, simtime, len(vm.vector)) + plt.subplot(211) + plt.plot(t, vm.vector * 1e3, label='Vm (mV)') + plt.plot(t, inj.vector * 1e9, label='injected (nA)') + plt.legend() + plt.title('Vm') + plt.subplot(212) + plt.title('Conductance (uS)') + plt.plot(t, gK.vector * 1e6, label='K') + plt.plot(t, gNa.vector * 1e6, label='Na') + plt.legend() + plt.show() + plt.close() + # moose.showfield(comp) + # moose.showfield(na) + # moose.showfield(k) + + +if __name__ == '__main__': + test_channel_gates() + test_hhcomp() + + + + +# +# hhcomp.py ends here diff --git a/examples/snippets/insertSpines.py b/examples/snippets/insertSpines.py new file mode 100644 index 0000000..024e8aa --- /dev/null +++ b/examples/snippets/insertSpines.py @@ -0,0 +1,84 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### +# This example illustrates loading a model from an SWC file, inserting +# spines, and viewing it. + +import moogli +import moose +from matplotlib.cm import gnuplot +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import rdesigneur as rd + +PI = 3.14159265358979 +frameRunTime = 0.0002 +runtime = 1.0 +inject = 5e-10 +simdt = 5e-5 +RM = 1.0 +RA = 1.0 +CM = 0.01 +spineSpacing = 2.0e-6 +minSpacing = 0.2e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle = 0 +spineAngleDistrib = 2*PI + +def main(): + app = QtGui.QApplication(sys.argv) + filename = 'barrionuevo_cell1zr.CNG.swc' + #filename = 'h10.CNG.swc' + moose.Neutral( '/library' ) + rdes = rd.rdesigneur( \ + cellProto = [[ filename, 'elec' ] ],\ + spineProto = [['makeSpineProto()', 'spine' ]] ,\ + spineDistrib = [ \ + ['spine', '#apical#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( minSpacing ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ] \ + ) + rdes.buildModel( '/model' ) + moose.reinit() + + # Now we set up the display + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") + #morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + # [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + gnuplot ) + + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + viewer.set_background_color( 1.0, 1.0, 1.0, 1.0 ) + def callback( morphology, viewer ): + moose.start( frameRunTime ) + Vm = map( lambda x: moose.element( x ).Vm, compts ) + morphology.set_color( "group_all", Vm ) + currTime = moose.element( '/clock' ).currentTime + #print currTime, compts[0].Vm + if ( currTime < runtime ): + return True + return False + + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/snippets/insertSpinesWithoutRdesigneur.py b/examples/snippets/insertSpinesWithoutRdesigneur.py new file mode 100644 index 0000000..48ae40e --- /dev/null +++ b/examples/snippets/insertSpinesWithoutRdesigneur.py @@ -0,0 +1,109 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### +# This example illustrates loading a model from an SWC file, inserting +# spines, and viewing it. + +import moogli +import moose +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +sys.path.append( '../util' ) + +PI = 3.14159265358979 +frameRunTime = 0.0002 +runtime = 1.0 +inject = 5e-10 +simdt = 5e-5 +RM = 1.0 +RA = 1.0 +CM = 0.01 +spineSpacing = 2.0e-6 +minSpacing = 0.2e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle = 0 +spineAngleDistrib = 2*PI +filename = 'barrionuevo_cell1zr.CNG.swc' +#filename = 'h10.CNG.swc' + + + ################################################################ + # Utility function for building a compartment, used for spines. +def buildCompt( pa, name, length, dia, xoffset, RM, RA, CM ): + compt = moose.Compartment( pa.path + '/' + name ) + compt.x0 = xoffset + compt.y0 = 0 + compt.z0 = 0 + compt.x = length + xoffset + compt.y = 0 + compt.z = 0 + compt.diameter = dia + compt.length = length + xa = dia * dia * PI / 4.0 + sa = length * dia * PI + compt.Ra = length * RA / xa + compt.Rm = RM / sa + compt.Cm = CM * sa + return compt + +def makeSpineProto(): + spine = moose.Neutral( '/library/spine' ) + shaft = buildCompt( spine, 'shaft', 1e-6, 0.2e-6, 0, RM, RA, CM ) + head = buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 1e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def main(): + """ + This snippet illustrates how the Neuron class does the spine + specification, without the rdesigneur intermediate. + """ + app = QtGui.QApplication(sys.argv) + moose.Neutral( '/library' ) + makeSpineProto() + model = moose.loadModel( filename, '/model' ) + model[0].buildSegmentTree() + model[0].spineDistribution = [ \ + 'spine', '#apical#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( minSpacing ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ), \ + '' \ + ] + moose.reinit() + + # Now we set up the display + compts = moose.wildcardFind( "/model/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model") + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + def callback( morphology, viewer ): + moose.start( frameRunTime ) + Vm = map( lambda x: moose.element( x ).Vm, compts ) + morphology.set_color( "group_all", Vm ) + currTime = moose.element( '/clock' ).currentTime + #print currTime, compts[0].Vm + if ( currTime < runtime ): + return True + return False + + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/snippets/interpol.py b/examples/snippets/interpol.py new file mode 100644 index 0000000..61193c6 --- /dev/null +++ b/examples/snippets/interpol.py @@ -0,0 +1,93 @@ +# interpol.py --- +# +# Filename: interpol.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Jun 25 16:13:26 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Example of Interpol object.""" +__author__ = 'Subhasis Ray' + +import sys +import math +import numpy as np +from matplotlib import pyplot as plt + +sys.path.append('../../python') +import moose + +simtime = 1.0 +simdt = 0.001 +model = moose.Neutral('/model') +data = moose.Neutral('/data') +interpol = moose.Interpol('/model/sin') +vec = np.sin(np.linspace(-3.14, 3.14, 100)) +interpol.vector = vec +interpol.xmax = 3.14 +interpol.xmin = -3.14 +recorded = moose.Table('/data/output') +moose.connect(recorded, 'requestOut', interpol, 'getY') + +stimtab = moose.StimulusTable('/model/x') +stimtab.stepSize = 0.0 +# stimtab.startTime = 0.0 +# stimtab.stopTime = simtime +stimtab.vector = np.linspace(-4, 4, 1000) +print stimtab.vector +print interpol.vector +moose.connect(stimtab, 'output', interpol, 'input') + + +moose.setClock(0, simdt) +moose.useClock(0, '/data/##,/model/##', 'process') +moose.reinit() +moose.start(simtime) +plt.plot(np.linspace(0, simtime, len(recorded.vector)), recorded.vector, 'b-+', label='interpolated') +plt.plot(np.linspace(0, simtime, len(vec)), vec, 'r-+', label='original') +plt.show() + + + + + +# +# interpol.py ends here diff --git a/examples/snippets/interpol2d.py b/examples/snippets/interpol2d.py new file mode 100644 index 0000000..46a3041 --- /dev/null +++ b/examples/snippets/interpol2d.py @@ -0,0 +1,80 @@ +# interpol2d.py --- +# +# Filename: interpol2d.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Thu Jun 28 15:19:46 2012 (+0530) +# Version: +# Last-Updated: Thu Jun 28 17:11:42 2012 (+0530) +# By: subha +# Update #: 49 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + + +import numpy as np +import sys +sys.path.append('../../python') +import moose + + +def interpolation_demo(): + interpol = moose.Interpol2D('/interpol2D') + interpol.xmin = 0.0 + interpol.xmax = 1.0 + interpol.ymin = 0.0 + interpol.ymax = 1.0 + # Make a 50 element array with entries at equal distance from + # [0,1) and reshape it into a 10x5 matrix and assign to table. + matrix = np.linspace(0, 1.0, 50).reshape(10, 5) + print 'Setting table to' + print matrix + interpol.tableVector2D = matrix + # interpolating beyond top left corner. + # value should be + pos = (0.8, 0.3) + + print 'Interpolated value at', pos + print interpol.z[pos[0], pos[1]] + + print 'Point going out of bound on both x and y', interpol.z[1.1, 1.1] + print 'Point going out of bound on both x and y', interpol.z[0.5, 1.1] + +if __name__ == '__main__': + interpolation_demo() +# +# interpol2d.py ends here diff --git a/examples/snippets/intfire.py b/examples/snippets/intfire.py new file mode 100644 index 0000000..6b1e4c9 --- /dev/null +++ b/examples/snippets/intfire.py @@ -0,0 +1,94 @@ +# intfire.py --- +# +# Filename: intfire.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Thu Jun 21 16:40:25 2012 (+0530) +# Version: +# Last-Updated: Sat Jun 23 13:44:10 2012 (+0530) +# By: subha +# Update #: 35 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Code snippet to show some operations on IntFire. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import moose + +def connect_two_intfires(): + """Connect two IntFire neurons so that spike events in one gets + transmitted to synapse of the other.""" + if1 = moose.IntFire('if1') + if2 = moose.IntFire('if2') + sf1 = moose.SimpleSynHandler( 'if1/sh' ) + moose.connect( sf1, 'activationOut', if1, 'activation' ) + sf1.synapse.num = 1 + syn1 = moose.element(sf1.synapse) + # Connect the spike message of if2 to the first synapse on if1 + moose.connect(if2, 'spikeOut', syn1, 'addSpike') + +def connect_spikegen(): + """Connect a SpikeGen object to an IntFire neuron such that spike + events in spikegen get transmitted to the synapse of the IntFire + neuron.""" + if3 = moose.IntFire('if3') + sf3 = moose.SimpleSynHandler( 'if3/sh' ) + moose.connect( sf3, 'activationOut', if3, 'activation' ) + sf3.synapse.num = 1 + sg = moose.SpikeGen('sg') + syn = moose.element(sf3.synapse) + moose.connect(sg, 'spikeOut', syn, 'addSpike') + +def setup_synapse(): + """Create an intfire object and create two synapses on it.""" + if4 = moose.IntFire('if4') + sf4 = moose.SimpleSynHandler( 'if4/sh' ) + sg1 = moose.SpikeGen('sg1') + sg2 = moose.SpikeGen('sg2') + sf4.synapse.num = 2 # set synapse count to 2 + sf4.synapse[0].weight = 0.5 + sf4.synapse[0].delay = 1e-3 + sf4.synapse[1].weight = 2.0 + sf4.synapse[1].delay = 2e-3 + moose.connect(sg1, 'spikeOut', sf4.synapse[0], 'addSpike') + moose.connect(sg2, 'spikeOut', sf4.synapse[1], 'addSpike') + +if __name__ == '__main__': + connect_two_intfires() + connect_spikegen() + setup_synapse() + +# +# intfire.py ends here diff --git a/examples/snippets/ionchannel.py b/examples/snippets/ionchannel.py new file mode 100644 index 0000000..4be6a84 --- /dev/null +++ b/examples/snippets/ionchannel.py @@ -0,0 +1,266 @@ +# ionchannel.py --- +# +# Filename: ionchannel.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Sep 17 10:33:20 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""This demo shows how to set the parameters for a Hodgkin-Huxley type ion channel. + +Hodgkin-Huxley type ion channels are composed of one or more gates +that allow ions to cross the membrane. The gates transition between +open and closed states and this, taken over a large population of +ion channels over a patch of membrane has first order kinetics, where +the rate of change of fraction of open gates (n) is given by:: + + dn/dt = alpha(Vm) * (1 - n) - beta(Vm) * n + +where alpha and beta are rate parameters for gate opening and +closing respectively that depend on the membrane potential. +The final channel conductance is computed as:: + + Gbar * m^x * h^y ... + +where m, n are the fraction of open gates of different types and x, +y are the number of such gates in each channel. We can define the +channel by specifying the alpha and beta parameters as functions of +membrane potential and the exponents for each gate. +The number gates is commonly one or two. + +Gate opening/closing rates have the form:: + + y(x) = (A + B * x) / (C + exp((x + D) / F)) + +where x is membrane voltage and y is the rate parameter for gate +closing or opening. + + +""" + +import numpy as np +import matplotlib.pyplot as plt +import moose + +EREST_ACT = -70e-3 #: Resting membrane potential + + +#: The parameters for defining m as a function of Vm +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] + +#: Parameters for defining h gate of Na+ channel +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] + +#: K+ channel in Hodgkin-Huxley model has only one gate, n and these +#are the parameters for the same +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] + +#: We define the rate parameters, which are functions of Vm as +#: interpolation tables looked up by membrane potential. +#: Minimum x-value for the interpolation table +VMIN = -30e-3 + EREST_ACT +#: Maximum x-value for the interpolation table +VMAX = 120e-3 + EREST_ACT +#: Number of divisions in the interpolation table +VDIVS = 3000 + +def create_na_proto(): + """Create and return a Na+ channel prototype '/library/na' + + The Na+ channel conductance has the equation:: + + g = Gbar * m^3 * h + + For each gate, we use the HHChannel.setupAlpha function to set up + the interpolation table. + + """ + lib = moose.Neutral('/library') + na = moose.HHChannel('/library/na') + na.tick = -1 + #: The exponent for m gate is 3 + na.Xpower = 3 + #: channel/gateX is the m gate + #: setting Xpower to a positive number automatically creates this gate. + xGate = moose.element(na.path + '/gateX') + xGate.setupAlpha(Na_m_params + + [VDIVS, VMIN, VMAX]) + #: channel/gateY is the h gate + #: Exponent for h gate is 1 + na.Ypower = 1 + yGate = moose.element(na.path + '/gateY') + yGate.setupAlpha(Na_h_params + + [VDIVS, VMIN, VMAX]) + return na + +def create_k_proto(): + """Create and return a K+ channel prototype '/library/k'. + + The K+ channel conductance has the equation:: + + g = Gbar * n^4 + + """ + lib = moose.Neutral('/library') + k = moose.HHChannel('/library/k') + k.tick = -1 + k.Xpower = 4.0 + xGate = moose.HHGate(k.path + '/gateX') + xGate.setupAlpha(K_n_params + + [VDIVS, VMIN, VMAX]) + return k + +def create_1comp_neuron(path, number=1): + """Create single-compartmental neuron with Na+ and K+ channels. + + Parameters + ---------- + path : str + path of the compartment to be created + + number : int + number of compartments to be created. If n is greater than 1, + we create a vec with that size, each having the same property. + + Returns + ------- + comp : moose.Compartment + a compartment vec with `number` elements. + + """ + comps = moose.vec(path=path, n=number, dtype='Compartment') + diameter = 30e-6 + length = 50e-6 + sarea = np.pi * diameter * length + xarea = np.pi * diameter * diameter / 4.0 + Em = EREST_ACT + 10.613e-3 + comps.Em = Em + comps.initVm = EREST_ACT + #: CM = 1 uF/cm^2 + comps.Cm = 1e-6 * sarea * 1e4 + #: RM = 0.3 mS/cm^2 + comps.Rm = 1 / (0.3e-3 * sarea * 1e4) + container = comps[0].parent.path + #: Here we create copies of the prototype channels + nachan = moose.copy(create_na_proto(), container, 'na_{}'.format(comps.name), number) + #: Gbar_Na = 120 mS/cm^2 + nachan.Gbar = [120e-3 * sarea * 1e4] * len(nachan) + nachan.Ek = 115e-3 + EREST_ACT + moose.connect(nachan, 'channel', comps, 'channel', 'OneToOne') + kchan = moose.copy(create_k_proto(), container, 'k_{}'.format(comps.name), number) + #: Gbar_K = 36 mS/cm^2 + kchan.Gbar = 36e-3 * sarea * 1e4 + kchan.Ek = -12e-3 + EREST_ACT + moose.connect(kchan, 'channel', comps, 'channel', 'OneToOne') + return comps + +def current_step_test(simtime, simdt, plotdt): + """Create a single compartment and set it up for applying a step + current injection. + + We use a PulseGen object to generate a 40 ms wide 1 nA current + pulse that starts 20 ms after start of simulation. + + """ + model = moose.Neutral('/model') + comp = create_1comp_neuron('/model/neuron') + stim = moose.PulseGen('/model/stimulus') + stim.delay[0] = 20e-3 + stim.level[0] = 1e-9 + stim.width[0] = 40e-3 + stim.delay[1] = 1e9 + moose.connect(stim, 'output', comp, 'injectMsg') + data = moose.Neutral('/data') + current_tab = moose.Table('/data/current') + moose.connect(current_tab, 'requestOut', stim, 'getOutputValue') + vm_tab = moose.Table('/data/Vm') + moose.connect(vm_tab, 'requestOut', comp, 'getVm') + for i in range(10): + moose.setClock(i, simdt) + moose.setClock(8, plotdt) + moose.reinit() + moose.start(simtime) + ts = np.linspace(0, simtime, len(vm_tab.vector)) + return ts, current_tab.vector, vm_tab.vector, + +if __name__ == '__main__': + simtime = 0.1 + simdt = 0.25e-5 + plotdt = 0.25e-3 + ts, current, vm = current_step_test(simtime, simdt, plotdt) + plt.plot(ts, vm * 1e3, label='Vm (mV)') + plt.plot(ts, current * 1e9, label='current (nA)') + plt.legend() + plt.show() + + +# +# ionchannel.py ends here diff --git a/examples/snippets/lif.py b/examples/snippets/lif.py new file mode 100644 index 0000000..74fbbf8 --- /dev/null +++ b/examples/snippets/lif.py @@ -0,0 +1,135 @@ +# lif.py --- +# +# Filename: lif.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sun Jul 8 14:00:31 2012 (+0530) +# Version: +# Last-Updated: Tue Jul 17 16:45:44 2012 (+0530) +# By: subha +# Update #: 187 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Demonstrates use of Leaky Integrate and Fire (LeakyIaf class) in +# moose. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' + +import moose +from matplotlib import pyplot as plt +import numpy as np + +def setupmodel(modelpath, iaf_Rm, iaf_Cm, pulse_interval): + """Create a LeakyIaF neuron under `modelpath` and a synaptic + channel (SynChan) in it. Create a spike generator stimulated by a + pulse generator to give input to the synapse. + """ + model_container = moose.Neutral(modelpath) + data_container = moose.Neutral(datapath) + iaf = moose.LIF('%s/iaf' % (modelpath)) + iaf.Rm = iaf_Rm + iaf.Cm = iaf_Cm + iaf.initVm = -0.070 + iaf.Em = -0.065 + #iaf.Vreset = -0.070 + iaf.thresh = -0.055 + # iaf.refractoryPeriod = 0.005 + syn = moose.SynChan('%s/syn' % (iaf.path)) + synh = moose.SimpleSynHandler( syn.path + '/synh' ) + moose.connect( synh, 'activationOut', syn, 'activation' ) + synh.synapse.num = 1 + synh.synapse[0].delay = 0.01 + syn.Ek = 0.0 + syn.Gbar = 1.0 + moose.connect(syn, 'channel', iaf, 'channel') + moose.connect(iaf, 'VmOut', syn, 'Vm') + sg = moose.SpikeGen('%s/spike' % (modelpath)) + sg.threshold = 0.1 + moose.connect(sg, 'spikeOut', synh.synapse[0], 'addSpike') + pg = moose.PulseGen('%s/pulse' % (modelpath)) + pg.delay[0] = pulse_interval + pg.width[0] = 1e-3 + pg.level[0] = 0.5 + moose.connect(pg, 'output', sg, 'Vm') + return { + 'model': model_container, + 'iaf': iaf, + 'synchan': syn, + 'spikegen': sg, + 'pulsegen': pg + } + +if __name__ == '__main__': + modelpath = '/lif_demo' + datapath = '/data' + simtime = 1.0 + setup = setupmodel(modelpath, 127e6, 7.8e-11, 0.1) + # Setup data recording + data_container = moose.Neutral(datapath) + vm_table = moose.Table('%s/vm' % (data_container.path)) + moose.connect(vm_table, 'requestOut', setup['iaf'], 'getVm') + spike_table = moose.Table('%s/spike' % (data_container.path)) + # Can't connect this, the types don't match. + #moose.connect(spike_table, 'requestOut', setup['spikegen'], 'getHasFired') + # moose.connect(setup['iaf'], 'VmOut', spike_table, 'spike') + pulse_table = moose.Table('%s/pulse' % (data_container.path)) + moose.connect(pulse_table, 'requestOut', setup['pulsegen'], 'getOutputValue') + gsyn_table = moose.Table('%s/gk' % (datapath)) + moose.connect(gsyn_table, 'requestOut', setup['synchan'], 'getIk') + # Schedule model components for simulation + moose.setClock(0, 1e-4) + moose.setClock(1, 1e-4) + moose.setClock(2, 1e-4) + moose.setClock(3, 1e-4) + moose.useClock(0, '%s,%s' % (setup['pulsegen'].path, setup['spikegen'].path), 'process') + moose.useClock(1, setup['synchan'].path, 'process') + moose.useClock(2, setup['iaf'].path, 'process') + moose.useClock(3, '%s/##' % (datapath), 'process') + # Initialize and run simulation + moose.reinit() + moose.start(simtime) + t = np.linspace(0, simtime, len(pulse_table.vector)) + plt.plot(t, pulse_table.vector, 'r', label='Input pulse') + plt.plot(t, vm_table.vector, 'b', label='Vm') + plt.plot(t, gsyn_table.vector, 'c', label='Isyn') + plt.legend() + plt.show() + +# +# lif.py ends here diff --git a/examples/snippets/lifcomp.py b/examples/snippets/lifcomp.py new file mode 100644 index 0000000..d1b114e --- /dev/null +++ b/examples/snippets/lifcomp.py @@ -0,0 +1,188 @@ +# lifcomp.py --- +# +# Filename: lifcomp.py +# Description: Leaky Integrate and Fire using regular neuronal compartment +# Author: Subhasis Ray +# Maintainer: +# Created: Fri Feb 7 16:26:05 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""This is an example of how you can create a Leaky Integrate and Fire +compartment using regular compartment and Func to check for thresold +crossing and resetting the Vm.""" + + +import moose +from moose import utils +from pylab import * + +simtime = 500e-3 # Total simulation time +stepsize = 100e-3 # Time step for pauses between runs +simdt = 1e-4 # time step for numerical integration +plotdt = 0.25e-3 # time step for plotting + +delayMax = 5e-3 # Maximum synaptic delay + +class LIFComp(moose.Compartment): + """Leaky integrate and fire neuron using regular compartments, + spikegen and Func.""" + def __init__(self, *args): + moose.Compartment.__init__(self, *args) + self.spikegen = moose.SpikeGen('%s/spike' % (self.path)) + self.spikegen.edgeTriggered = 1 # This ensures that spike is generated only on leading edge. + self.dynamics = moose.Func('%s/dynamics' % (self.path)) + self.initVm = 0.0 + self.Rm = 10e6 + self.Ra = 1e4 + self.Cm = 100e-9 + self.Em = 0 #-65e-3 + self.initVm = 0 #self.Em + + # Note that the result is dependent on exact order of + # execution of SpikeGen and Func. If Func gets executed first + # SpikeGen will never cross threshold. + self.dynamics.expr = 'x >= y? z: x' + moose.connect(self, 'VmOut', self.dynamics, 'xIn') + moose.connect(self.dynamics, 'valueOut', self, 'setVm') + moose.connect(self, 'VmOut', self.spikegen, 'Vm') + + @property + def Vreset(self): + """Reset voltage. The cell's membrane potential is set to this value + after spiking.""" + return self.dynamics.z + + @Vreset.setter + def Vreset(self, value): + self.dynamics.z = value + + @property + def Vthreshold(self): + """Threshold voltage. The cell spikes if its membrane potential goes + above this value.""" + return self.dynamics.y + + @Vthreshold.setter + def Vthreshold(self, value): + self.dynamics.y = value + self.spikegen.threshold = value + +def setup_two_cells(): + """Create two cells with leaky integrate and fire compartments. Each + cell is a single compartment a1 and b2. a1 is stimulated by a step + current injection. + + The compartment a1 is connected to the compartment b2 through a + synaptic channel. + + """ + model = moose.Neutral('/model') + data = moose.Neutral('/data') + a1 = LIFComp('/model/a1') + b2 = LIFComp(moose.copy(a1, '/model', 'b2')) + a1.Vthreshold = 10e-3 + a1.Vreset = 0 + b2.Vthreshold = 10e-3 + b2.Vreset = 0 + syn = moose.SynChan('%s/syn' % (b2.path)) + syn.tau1 = 1e-3 + syn.tau2 = 5e-3 + syn.Ek = 90e-3 + synh = moose.SimpleSynHandler( syn.path + '/synh' ) + moose.connect( synh, 'activationOut', syn, 'activation' ) + synh.synapse.num += 1 + # syn.numSynapses = 1 + synh.synapse.delay = delayMax + moose.connect(b2, 'channel', syn, 'channel') + ## Single message works most of the time but occassionally gives a + ## core dump + + # m = moose.connect(a1.spikegen, 'spikeOut', + # syn.synapse.vec, 'addSpike') + + ## With Sparse message and random connectivity I did not get core + ## dump. + m = moose.connect(a1.spikegen, 'spikeOut', + synh.synapse.vec, 'addSpike', 'Sparse') + m.setRandomConnectivity(1.0, 1) + stim = moose.PulseGen('/model/stim') + stim.delay[0] = 100e-3 + stim.width[0] = 1e3 + stim.level[0] = 11e-9 + moose.connect(stim, 'output', a1, 'injectMsg') + tables = [] + data = moose.Neutral('/data') + for c in moose.wildcardFind('/##[ISA=Compartment]'): + tab = moose.Table('%s/%s_Vm' % (data.path, c.name)) + moose.connect(tab, 'requestOut', c, 'getVm') + tables.append(tab) + syntab = moose.Table('%s/%s' % (data.path, 'Gk')) + moose.connect(syntab, 'requestOut', syn, 'getGk') + tables.append(syntab) + synh.synapse[0].delay = 1e-3 + syn.Gbar = 1e-6 + return tables + +if __name__ == '__main__': + tables = setup_two_cells() + + utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + utils.assignDefaultTicks(modelRoot='/model', dataRoot='/data', solver='ee') + moose.reinit() + utils.stepRun(simtime, stepsize) + data = [] + for tab in tables: + data.append(tab.vector) + data = np.vstack(data) + + # Travis fix for Ubuntu-12.04 + try: + np.savetxt('lifcomp.csv', data.transpose(), delimiter='\t', header=' '.join([tab.name for tab in tables])) + except TypeError as e: # old numpy may not have header. + np.savetxt('lifcomp.csv', data.transpose(), delimiter='\t' ) + + # subplot(len(tables), 1, ii+1) + # t = np.linspace(0, simtime, len(tab.vector))*1e3 + # plot(t, tab.vector*1e3, label=tab.name) + # legend() + # show() +# +# lifcomp.py ends here diff --git a/examples/snippets/loadCspaceModel.py b/examples/snippets/loadCspaceModel.py new file mode 100644 index 0000000..561f419 --- /dev/null +++ b/examples/snippets/loadCspaceModel.py @@ -0,0 +1,74 @@ +# loadCspaceModel.py --- +# +# Filename: loadCspaceModel.py +# Description: +# Author: Upi Bhalla +# Maintainer: +# Created: Sat Oct 04 10:14:15 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# +# Code: + +import math +import pylab +import numpy +import moose +def main(): + """ This example illustrates loading and running, a kinetic model + defined in cspace format. We use the gsl solver here. The model already + defines a couple of plots and sets the runtime to 3000 seconds. + """ + # This command loads the file into the path '/model', and tells + # the system to use the gsl solver. + modelId = moose.loadModel( 'Osc.cspace', 'model', 'gsl' ) + moose.reinit() + moose.start( 3000.0 ) # Run the model for 300 seconds. + + # display all plots + for x in moose.wildcardFind( '/model/graphs/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + + # moose.saveModel( modelId, 'saveReaction.g' ) + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/loadKineticModel.py b/examples/snippets/loadKineticModel.py new file mode 100644 index 0000000..49206ad --- /dev/null +++ b/examples/snippets/loadKineticModel.py @@ -0,0 +1,97 @@ +# loadKineticModel.py --- +# +# Filename: loadKineticModel.py +# Description: +# Author: Upi Bhalla +# Maintainer: +# Created: Sat Oct 04 12:14:15 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# +# Code: + +import moose +import pylab +import numpy +import sys + +def main(): + """ This example illustrates loading, running, and saving a kinetic model + defined in kkit format. It uses a default kkit model but you can specify another using the command line ``python filename runtime solver``. We use the gsl solver here. The model already defines a couple of plots and sets the runtime to 20 seconds. + """ + solver = "gsl" # Pick any of gsl, gssa, ee.. + mfile = '../genesis/kkit_objects_example.g' + runtime = 20.0 + if ( len( sys.argv ) >= 3 ): + if sys.argv[1][0] == '/': + mfile = sys.argv[1] + else: + mfile = '../genesis/' + sys.argv[1] + runtime = float( sys.argv[2] ) + if ( len( sys.argv ) == 4 ): + solver = sys.argv[3] + modelId = moose.loadModel( mfile, 'model', solver ) + # Increase volume so that the stochastic solver gssa + # gives an interesting output + #compt = moose.element( '/model/kinetics' ) + #compt.volume = 1e-19 + + moose.reinit() + moose.start( runtime ) + + # Report parameters + ''' + for x in moose.wildcardFind( '/model/kinetics/##[ISA=PoolBase]' ): + print x.name, x.nInit, x.concInit + for x in moose.wildcardFind( '/model/kinetics/##[ISA=ReacBase]' ): + print x.name, 'num: (', x.numKf, ', ', x.numKb, '), conc: (', x.Kf, ', ', x.Kb, ')' + for x in moose.wildcardFind('/model/kinetics/##[ISA=EnzBase]'): + print x.name, '(', x.Km, ', ', x.numKm, ', ', x.kcat, ')' + ''' + + # Display all plots. + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/loadMorphology.py b/examples/snippets/loadMorphology.py new file mode 100644 index 0000000..99cbc62 --- /dev/null +++ b/examples/snippets/loadMorphology.py @@ -0,0 +1,52 @@ +import moogli +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import sys +import os + +frameRunTime = 0.0002 +runtime = 1.0 +inject = 5e-10 +simdt = 5e-5 + +def main(): + app = QtGui.QApplication(sys.argv) + filename = 'barrionuevo_cell1zr.CNG.swc' + moose.Neutral( '/library' ) + moose.Neutral( '/model' ) + cell = moose.loadModel( filename, '/model/testSwc' ) + for i in range( 8 ): + moose.setClock( i, simdt ) + hsolve = moose.HSolve( '/model/testSwc/hsolve' ) + hsolve.dt = simdt + hsolve.target = '/model/testSwc/soma' + moose.le( cell ) + moose.reinit() + + # Now we set up the display + compts = moose.wildcardFind( "/model/testSwc/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model/testSwc") + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + def callback( morphology, viewer ): + moose.start( frameRunTime ) + Vm = map( lambda x: moose.element( x ).Vm, compts ) + morphology.set_color( "group_all", Vm ) + currTime = moose.element( '/clock' ).currentTime + #print currTime, compts[0].Vm + if ( currTime < runtime ): + return True + return False + + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/snippets/loadSbmlmodel.py b/examples/snippets/loadSbmlmodel.py new file mode 100644 index 0000000..9323a46 --- /dev/null +++ b/examples/snippets/loadSbmlmodel.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +# Filename: loadSbmlmodel.py +# Description: +# Author: Harsha rani +# Maintainer: +# Created: Fri Jan 29 11:43:15 2016 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# + +import moose +import matplotlib +import numpy as np +import matplotlib.pyplot as plt +import sys +import pylab +from moose.SBML import * +import os.path + +def main(): + """ This example illustrates loading, running of an SBML model defined in XML format.\n + The model 00001-sbml-l3v1.xml is taken from l3v1 SBML testcase.\n + Plots are setup.\n + Model is run for 20sec.\n + As a general rule we created model under '/path/model' and plots under '/path/graphs'.\n + """ + + mfile = "../genesis/00001-sbml-l3v1.xml" + try: + sys.argv[1] + except: + pass + else: + mfile = sys.argv[1] + + try: + sys.argv[2] + except: + runtime = 20.0 + else: + runtime = float(sys.argv[2]) + + # Loading the sbml file into MOOSE, models are loaded in path/model + sbmlId = mooseReadSBML(mfile,'/sbml') + if isinstance(sbmlId, (list, tuple)): + print sbmlId + elif sbmlId.path != '/': + + s1 = moose.element('/sbml/model/compartment/S1') + s2= moose.element('/sbml/model/compartment/S2') + + # Creating MOOSE Table, Table2 is for the chemical model + graphs = moose.Neutral( '/sbml/graphs' ) + outputs1 = moose.Table2 ( '/sbml/graphs/concS1') + outputs2 = moose.Table2 ( '/sbml/graphs/concS2') + + # connect up the tables + moose.connect( outputs1,'requestOut', s1, 'getConc' ); + moose.connect( outputs2,'requestOut', s2, 'getConc' ); + + + # Reset and Run + moose.reinit() + moose.start(runtime) + return sbmlId,True + return sbmlId,False + +def displayPlots(): + # Display all plots. + for x in moose.wildcardFind( '/sbml/graphs/#[TYPE=Table2]' ): + t = np.arange( 0, x.vector.size, 1 ) #sec + plt.plot( t, x.vector, label=x.name ) + + pylab.legend() + pylab.show() + + quit() +if __name__=='__main__': + + modelPath, modelpathexist = main() + if modelpathexist == True: + displayPlots() diff --git a/examples/snippets/mgblock.py b/examples/snippets/mgblock.py new file mode 100644 index 0000000..2ad8741 --- /dev/null +++ b/examples/snippets/mgblock.py @@ -0,0 +1,153 @@ +# mgblock.py --- +# +# Filename: mgblock.py +# Description: +# Author:Upi Bhalla +# Maintainer: +# Created: Wed Jul 3 09:36:06 2013 (+0530) +# Version: +# Last-Updated: Fri Sep 12 10:56:18 2014 (+0530) +# By: Upi +# Update #: +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import moose +from moose import utils +import pylab + +simtime = 100e-3 +simdt = 1e-6 +plotdt = 1e-4 + +def test_mgblock(): + """ + Demonstrates the use of MgBlock. + Creates an NMDA channel with MgBlock and another without. + Connects them up to the compartment on one hand, and to a + SynHandler on the other, so as to receive synaptic input. + Delivers two pulses to each receptor, with a small delay in between. + + Plots out the conductance change at each receptor and the reslting + membrane potential rise at the compartment. + + Note that these NMDA channels do NOT separate out the contributions + due to calcium and other ions. To do this correctly one should use + the GHK object. + """ + model = moose.Neutral('/model') + data = moose.Neutral('/data') + soma = moose.Compartment('/model/soma') + soma.Em = -60e-3 + soma.Rm = 1e7 + soma.Cm = 1e-9 + + ################################################### + # This is where we create the synapse with MgBlock + #-------------------------------------------------- + nmda = moose.SynChan('/model/soma/nmda') + nmda.Gbar = 1e-9 + mgblock = moose.MgBlock('/model/soma/mgblock') + mgblock.CMg = 2.0 + mgblock.KMg_A = 1/0.33 + mgblock.KMg_B = 1/60.0 + + # The synHandler manages the synapses and their learning rules if any. + synHandler = moose.SimpleSynHandler( '/model/soma/nmda/handler' ) + synHandler.synapse.num = 1 + moose.connect( synHandler, 'activationOut', nmda, 'activation' ) + + + + # MgBlock sits between original channel nmda and the + # compartment. The origChannel receives the channel message from + # the nmda SynChan. + moose.connect(soma, 'VmOut', nmda, 'Vm' ) + moose.connect(nmda, 'channelOut', mgblock, 'origChannel') + moose.connect(mgblock, 'channel', soma, 'channel') + # This is for comparing with MgBlock + nmda_noMg = moose.copy(nmda, soma, 'nmda_noMg') + moose.connect( nmda_noMg, 'channel', soma, 'channel') + moose.le( nmda_noMg ) + + ######################################### + # The rest is for experiment setup + spikegen = moose.SpikeGen('/model/spike') + pulse = moose.PulseGen('/model/input') + pulse.delay[0] = 10e-3 + pulse.level[0] = 1.0 + pulse.width[0] = 50e-3 + moose.connect(pulse, 'output', spikegen, 'Vm') + moose.le( synHandler ) + #syn = moose.element(synHandler.path + '/synapse' ) + syn = synHandler.synapse[0] + syn.delay = simdt * 2 + syn.weight = 10 + moose.connect(spikegen, 'spikeOut', synHandler.synapse[0], 'addSpike') + moose.le( nmda_noMg ) + noMgSyn = moose.element(nmda_noMg.path + '/handler/synapse' ) + noMgSyn.delay = 0.01 + noMgSyn.weight = 1 + moose.connect(spikegen, 'spikeOut', noMgSyn, 'addSpike') + moose.showfields( syn ) + moose.showfields( noMgSyn ) + Gnmda = moose.Table('/data/Gnmda') + moose.connect(Gnmda, 'requestOut', mgblock, 'getGk') + Gnmda_noMg = moose.Table('/data/Gnmda_noMg') + moose.connect(Gnmda_noMg, 'requestOut', nmda_noMg, 'getGk') + Vm = moose.Table('/data/Vm') + moose.connect(Vm, 'requestOut', soma, 'getVm') + for i in range( 10 ): + moose.setClock( i, simdt ) + moose.setClock( Gnmda.tick, plotdt ) + print spikegen.dt, Gnmda.dt + moose.reinit() + moose.start( simtime ) + t = pylab.linspace(0, simtime*1e3, len(Vm.vector)) + pylab.plot(t, (Vm.vector + 0.06) * 1000, label='Vm (mV)') + pylab.plot(t, Gnmda.vector * 1e9, label='Gnmda (nS)') + pylab.plot(t, Gnmda_noMg.vector * 1e9, label='Gnmda no Mg (nS)') + pylab.legend() + #data = pylab.vstack((t, Gnmda.vector, Gnmda_noMg.vector)).transpose() + #pylab.savetxt('mgblock.dat', data) + pylab.show() + + +if __name__ == '__main__': + test_mgblock() + +# +# mgblock.py ends here diff --git a/examples/snippets/multiComptSigNeur.py b/examples/snippets/multiComptSigNeur.py new file mode 100644 index 0000000..5d7180a --- /dev/null +++ b/examples/snippets/multiComptSigNeur.py @@ -0,0 +1,520 @@ +# multiComptSigNeur.py --- +# Upi Bhalla NCBS Bangalore 2013. +# Commentary: + +# A toy compartmental neuronal + chemical model. The neuronal model is in +# a dendrite and five dendritic spines. The chemical model is in three +# compartments: one for the dendrite, +# one for the spine head, and one for the postsynaptic density. However, +# the spatial geometry of the neuronal model is ignored and the chemical +# model just has three cubic volumes for each compartment. So there +# is a functional mapping but spatial considerations are lost. +# The electrical model contributes the incoming calcium flux to the +# chemical model. This comes from the synaptic channels. +# The signalling here does two things to the electrical model. First, the +# amount of receptor in the chemical model controls the amount of glutamate +# receptor in the PSD. Second, there is a small kinase reaction that +# phosphorylates and inactivates the dendritic potassium channel. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys + +import os +import math + +import moose + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def createSquid(): + """Create a single compartment squid model.""" + parent = moose.Neutral ('/n' ) + compt = moose.SymCompartment( '/n/compt' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 * 0.5 + compt.Rm = 4.2e5 * 5.0 + compt.Ra = 7639.44e3 + nachan = moose.HHChannel( '/n/compt/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) + yGate.useInterpolation = 1 + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') + + kchan = moose.HHChannel( '/n/compt/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') + return compt + +def createSpine( parentCompt, parentObj, index, frac, length, dia, theta ): + """Create spine of specified dimensions and index""" + RA = 1.0 + RM = 1.0 + CM = 0.01 + shaftDia = dia / 5.0 + sname = 'shaft' + str(index) + hname = 'head' + str(index) + shaft = moose.SymCompartment( parentObj.path + '/' + sname ) + moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single' ) + x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) + y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) + z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) + shaft.x0 = x + shaft.y0 = y + shaft.z0 = z + sy = y + length * math.cos( theta * math.pi / 180.0 ) + sz = z + length * math.sin( theta * math.pi / 180.0 ) + shaft.x = x + shaft.y = sy + shaft.z = sz + shaft.diameter = dia / 2.0 + shaft.length = length + xa = math.pi * shaftDia * shaftDia / 4 + circumference = math.pi * shaftDia + shaft.Ra = RA * length / xa + shaft.Rm = RM / ( length * circumference ) + shaft.Cm = CM * length * circumference + shaft.Em = EREST_ACT + shaft.initVm = EREST_ACT + + head = moose.SymCompartment( parentObj.path + '/' + hname ) + moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) + head.x0 = x + head.y0 = sy + head.z0 = sz + hy = sy + length * math.cos ( theta * math.pi / 180.0 ) + hz = sz + length * math.sin ( theta * math.pi / 180.0 ) + head.x = x + head.y = hy + head.z = hz + head.diameter = dia + head.length = length + xa = math.pi * dia * dia / 4.0 + circumference = math.pi * dia + head.Ra = RA * length / xa + head.Rm = RM / ( length * circumference ) + head.Cm = CM * length * circumference + head.Em = EREST_ACT + head.initVm = EREST_ACT + #print head.Rm, head.Ra, head.Cm, head.diameter, head.length + #print shaft.Rm, shaft.Ra, shaft.Cm, shaft.diameter, shaft.length + return head + +def createSpineWithReceptor( compt, cell, index, frac ): + FaradayConst = 96485.3415 # s A / mol + spineLength = 5.0e-6 + spineDia = 4.0e-6 + head = createSpine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) + gluR = moose.SynChan( head.path + '/gluR' ) + gluR.tau1 = 4e-3 + gluR.tau2 = 4e-3 + gluR.Gbar = 1e-6 + gluR.Ek= 10.0e-3 + moose.connect( head, 'channel', gluR, 'channel', 'Single' ) + synh = moose.SimpleSynHandler( gluR.path + '/synh' ) + moose.connect( synh, 'activationOut', gluR, 'activation' ) + + caPool = moose.CaConc( head.path + '/ca' ) + caPool.CaBasal = 1e-4 # 0.1 micromolar + caPool.tau = 0.01 + B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) + B = B / 20.0 # scaling factor for Ca buffering + caPool.B = B + moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) + + return synh + +def addPlot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/compt', 'getVm', 'elec/dendVm' ) + #addPlot( '/n/compt/Na', 'getGbar', 'elec/NaGbar' ) + addPlot( '/model/elec/compt/K', 'getGbar', 'elec/KGbar' ) + #addPlot( '/n/compt/Na', 'getIk', 'elec/NaIk' ) + #addPlot( '/n/compt/K', 'getIk', 'elec/KIk' ) + #addPlot( '/n/compt/Na', 'getEk', 'elec/NaEk' ) + #addPlot( '/n/compt/K', 'getEk', 'elec/KEk' ) + addPlot( '/model/elec/head0', 'getVm', 'elec/head0Vm' ) + addPlot( '/model/elec/head2', 'getVm', 'elec/head2Vm' ) + #addPlot( '/n/head2', 'getIm', 'elec/head2Im' ) + addPlot( '/model/elec/head0/ca', 'getCa', 'elec/head0Ca' ) + addPlot( '/model/elec/head1/ca', 'getCa', 'elec/head1Ca' ) + addPlot( '/model/elec/head2/ca', 'getCa', 'elec/head2Ca' ) + addPlot( '/model/elec/head0/gluR', 'getIk', 'elec/head0Ik' ) + addPlot( '/model/elec/head1/gluR', 'getIk', 'elec/head1Ik' ) + addPlot( '/model/elec/head2/gluR', 'getIk', 'elec/head2Ik' ) + addPlot( '/model/elec/head1/gluR', 'getGbar', 'elec/head1Gbar' ) + addPlot( '/model/elec/head2/gluR', 'getGbar', 'elec/head2Gbar' ) + #addPlot( '/n/head0/gluR', 'getGk', 'elec/head0Gk' ) + #addPlot( '/n/head2/gluR', 'getGk', 'elec/head2Gk' ) + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + x.xplot( fname, x.name ) + +def makeSpinyCompt(): + comptLength = 30e-6 + comptDia = 6e-6 + numSpines = 5 + compt = createSquid() + compt.inject = 0 + compt.x0 = 0 + compt.y0 = 0 + compt.z0 = 0 + compt.x = comptLength + compt.y = 0 + compt.z = 0 + compt.length = comptLength + compt.diameter = comptDia + #kchan = moose.element( '/n/compt/K' ) + #kchan.Gbar = 0.2e-3 + synInput = moose.SpikeGen( '/n/compt/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + cell = moose.element( '/n' ) + for i in range( numSpines ): + r = createSpineWithReceptor( compt, cell, i, i/float(numSpines) ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 * i * ( 4 - i ) + syn.delay = i * 1.0e-3 + +def createPool( compt, name, concInit ): + meshEntries = moose.element( compt.path + '/mesh' ) + pool = moose.Pool( compt.path + '/' + name ) + pool.concInit = concInit + pool.diffConst = 1e-11 + return pool + + +def createChemModel( neuroCompt, spineCompt, psdCompt ): + # Stuff in spine + psd + #psdCa = createPool( psdCompt, 'Ca', 0.0001 ) + psdGluR = createPool( psdCompt, 'psdGluR', 1 ) + headCa = createPool( spineCompt, 'Ca', 1e-4 ) + headGluR = createPool( spineCompt, 'headGluR', 2 ) + toPsd = createPool( spineCompt, 'toPsd', 0 ) + toPsdInact = createPool( spineCompt, 'toPsdInact', 1e-3 ) + turnOnPsd = moose.Reac( spineCompt.path + '/turnOnPsd' ) + moose.connect( turnOnPsd, 'sub', headCa, 'reac', 'OneToOne' ) + moose.connect( turnOnPsd, 'sub', toPsdInact, 'reac', 'OneToOne' ) + moose.connect( turnOnPsd, 'prd', toPsd, 'reac', 'OneToOne' ) + turnOnPsd.Kf = 1e3 + turnOnPsd.Kb = 1 + toPsdEnz = moose.Enz( toPsd.path + '/enz' ) + toPsdEnzCplx = moose.Pool( toPsdEnz.path + '/cplx' ) + toPsdEnzCplx.concInit = 0 + moose.connect( toPsdEnz, 'enz', toPsd, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'sub', headGluR, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'prd', psdGluR, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'cplx', toPsdEnzCplx, 'reac', 'OneToOne' ) + toPsdEnz.Km = 1.0e-3 + toPsdEnz.kcat = 10.0 + fromPsd = moose.Reac( psdCompt.path + '/fromPsd' ) + moose.connect( fromPsd, 'sub', psdGluR, 'reac', 'OneToOne' ) + moose.connect( fromPsd, 'prd', headGluR, 'reac', 'OneToOne' ) + fromPsd.Kf = 0.5 + fromPsd.Kb = 0.0 + # Stuff in dendrite + dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) + bufCa = moose.Pool( neuroCompt.path + '/bufCa' ) + bufCa.concInit = 1e-4 + pumpCa = moose.Reac( neuroCompt.path + '/pumpCa' ) + moose.connect( pumpCa, 'sub', dendCa, 'reac', 'OneToOne' ) + moose.connect( pumpCa, 'prd', bufCa, 'reac', 'OneToOne' ) + pumpCa.Kf = 1 + pumpCa.Kb = 1 + dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) + dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) + dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) + moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) + moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) + moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) + dendTurnOnKinase.Kf = 50000 + dendTurnOnKinase.Kb = 1 + dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) + dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) + kChan = createPool( neuroCompt, 'kChan', 1e-3 ) + kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) + moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) + dendKinaseEnz.Km = 1e-4 + dendKinaseEnz.kcat = 20 + dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) + moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) + moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) + dendPhosphatase.Kf = 1 + dendPhosphatase.Kb = 0.0 + + +# Just for printf debugging +def printMolVecs( title ): + print(title) + """ + nCa = moose.vec( '/model/chem/neuroMesh/Ca' ) + sCa = moose.vec( '/model/chem/spineMesh/Ca' ) + sR = moose.vec( '/model/chem/spineMesh/headGluR' ) + pR = moose.vec( '/model/chem/psdMesh/psdGluR' ) + print 'sizes: nCa, sCa, sR, pR = ', len(nCa), len(sCa), len(sR), len(pR) + #print 'nCa=', nCa.conc, ', sCa=', sCa.conc, ', sR=', sR.n, ', pR=', pR.n + print 'nCaConcInit=', nCa.concInit, ', sCa=', sCa.concInit + #print 'sRnInit=', sR.nInit, ', pR=', pR.nInit + print 'sRconcInit=', sR.concInit, ', pR=', pR.concInit + + #print 'nCaSize=', nCa.volume, ', sCa=', sCa.volume, ', sR=', sR.n, ', pR=', pR.n + """ + +def makeChemInCubeMesh(): + dendSide = 10.8e-6 + spineSide = 6.8e-6 + psdSide = 8.565e-7 + parent = moose.Neutral ('/model/chem' ) + neuroMesh = moose.CubeMesh( '/model/chem/neuroMesh' ) + spineMesh = moose.CubeMesh( '/model/chem/spineMesh' ) + psdMesh = moose.CubeMesh( '/model/chem/psdMesh' ) + coords = [dendSide] * 9 + coords[0] = 0 + coords[1] = 0 + coords[2] = 0 + neuroMesh.coords = coords + neuroMesh.preserveNumEntries = 1 + + coords = [spineSide] * 9 + coords[0] = dendSide + coords[1] = 0 + coords[2] = 0 + coords[3] = spineSide + dendSide + spineMesh.coords = coords + spineMesh.preserveNumEntries = 1 + + coords = [psdSide] * 9 + coords[0] = dendSide + spineSide + coords[1] = 0 + coords[2] = 0 + coords[3] = psdSide + spineSide + dendSide + psdMesh.coords = coords + psdMesh.preserveNumEntries = 1 + + createChemModel( neuroMesh, spineMesh, psdMesh ) + dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) + assert dendCa.volume == dendSide * dendSide * dendSide + spineCa = moose.element( '/model/chem/spineMesh/Ca' ) + assert spineCa.volume == spineSide * spineSide * spineSide + psdGluR = moose.element( '/model/chem/psdMesh/psdGluR' ) + assert psdGluR.volume == psdSide * psdSide * psdSide + dendKinaseEnzCplx = moose.element( '/model/chem/neuroMesh/Ca.kinase/enz/cplx' ) + assert dendKinaseEnzCplx.volume == dendSide * dendSide * dendSide + +def makeSolvers( elecDt ): + # Put in the solvers, see how they fare. + # Here we kludge in a single chem solver for the whole system. + ksolve = moose.Ksolve( '/model/ksolve' ) + stoich = moose.Stoich( '/model/stoich' ) + stoich.compartment = moose.element( '/model/chem/neuroMesh' ) + stoich.ksolve = ksolve + stoich.path = '/model/chem/##' + #stoich.method = 'rk5' + moose.useClock( 5, '/model/ksolve', 'init' ) + moose.useClock( 6, '/model/ksolve', 'process' ) + # Here is the elec solver + hsolve = moose.HSolve( '/model/hsolve' ) + moose.useClock( 1, '/model/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + +def makeCubeMultiscale(): + makeSpinyCompt() + model = moose.Neutral( '/model' ) + elec = moose.element( '/n' ) + elec.name = 'elec' + moose.move( elec, model ) + synInput = moose.element( '/model/elec/compt/synInput' ) + synInput.refractT = 47e-3 + makeChemInCubeMesh() + # set up a reaction to fake diffusion between compts. + headCa = moose.element( '/model/chem/spineMesh/Ca' ) + dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) + diffReac = moose.Reac( '/model/chem/spineMesh/diff' ) + moose.connect( diffReac, 'sub', headCa, 'reac' ) + moose.connect( diffReac, 'prd', dendCa, 'reac' ) + diffReac.Kf = 1 + diffReac.Kb = headCa.volume / dendCa.volume + + # set up adaptors + headCa = moose.element( '/model/chem/spineMesh/Ca' ) + dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) + adaptCa = moose.Adaptor( '/model/chem/adaptCa' ) + elecCa = moose.element( '/model/elec/head2/ca' ) + # There are 5 spine heads in the electrical model. Average their input. + for i in range( 5 ): + path = '/model/elec/head' + str( i ) + '/ca' + elecCa = moose.element( path ) + moose.connect( elecCa, 'concOut', adaptCa, 'input', 'Single' ) + moose.connect( adaptCa, 'output', headCa, 'setConc' ) + adaptCa.outputOffset = 0.0001 # 100 nM offset in chem. + adaptCa.scale = 0.05 # 0.06 to 0.003 mM + + adaptGluR = moose.Adaptor( '/model/chem/psdMesh/adaptGluR' ) + chemR = moose.element( '/model/chem/psdMesh/psdGluR' ) + # Here we connect up the chem adaptors to only 3 of the spine + # heads in the elec model, just to make it interesting. + elec1R = moose.element( '/model/elec/head1/gluR' ) + elec2R = moose.element( '/model/elec/head2/gluR' ) + elec3R = moose.element( '/model/elec/head3/gluR' ) + moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToAll' ) + moose.connect( adaptGluR, 'output', elec1R, 'setGbar', 'OneToAll' ) + moose.connect( adaptGluR, 'output', elec2R, 'setGbar', 'OneToAll' ) + moose.connect( adaptGluR, 'output', elec3R, 'setGbar', 'OneToAll' ) + adaptGluR.outputOffset = 1e-9 # pS + adaptGluR.scale = 1e-8 / 100 # from n to pS + + adaptK = moose.Adaptor( '/model/chem/neuroMesh/adaptK' ) + chemK = moose.element( '/model/chem/neuroMesh/kChan' ) + elecK = moose.element( '/model/elec/compt/K' ) + moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) + moose.connect( adaptK, 'output', elecK, 'setGbar', 'OneToAll' ) + adaptK.scale = 0.3 # from mM to Siemens + + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/chem/psdMesh/psdGluR', 'getN', 'psd0R' ) + addPlot( '/model/chem/spineMesh/Ca', 'getConc', 'spine0Ca' ) + addPlot( '/model/chem/neuroMesh/Ca', 'getConc', 'dend0Ca' ) + addPlot( '/model/chem/neuroMesh/kChan_p', 'getConc', 'kChan_p' ) + addPlot( '/model/chem/neuroMesh/kChan', 'getConc', 'kChan' ) + addPlot( '/model/chem/neuroMesh/Ca.kinase', 'getConc', 'dendKinase' ) + addPlot( '/model/chem/spineMesh/toPsd', 'getConc', 'toPsd0' ) + #addPlot( '/n/neuroMesh/Ca', 'getConc', 'dendCa' ) + #addPlot( '/n/neuroMesh/inact_kinase', 'getConc', 'inactDendKinase' ) + #addPlot( '/n/psdMesh/psdGluR', 'getN', 'psdGluR' ) + +def testCubeMultiscale( useSolver ): + elecDt = 10e-6 + chemDt = 1e-4 + plotDt = 5e-4 + plotName = 'mc.plot' + if ( useSolver ): + elecDt = 50e-6 + chemDt = 2e-3 + plotName = 'mcs.plot' + makeCubeMultiscale() + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=Compartment],/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=SynBase],/model/elec/##[ISA=ChanBase],/model/elec/##[ISA=CaConc]','process') + moose.useClock( 5, '/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + moose.useClock( 6, '/model/##[ISA=PoolBase],/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + if ( useSolver ): + makeSolvers( elecDt ) + moose.reinit() + moose.start( 1.0 ) + dumpPlots( plotName ) + +def main(): + testCubeMultiscale( 1 ) + +if __name__ == '__main__': + main() + +# +# HsolveInstability.py ends here diff --git a/examples/snippets/multicomp_lif.py b/examples/snippets/multicomp_lif.py new file mode 100644 index 0000000..8b29501 --- /dev/null +++ b/examples/snippets/multicomp_lif.py @@ -0,0 +1,193 @@ +# multicomp_lif.py --- +# +# Filename: multicomp_lif.py +# Description: Leaky Integrate and Fire using regular neuronal compartment +# Author: Subhasis Ray +# Maintainer: +# Created: Fri Feb 7 16:26:05 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""This is an example of how you can create a Leaky Integrate and Fire +compartment using regular compartment and Func to check for thresold +crossing and resetting the Vm.""" + + +import sys +sys.path.append('../../python') + +import moose +from moose import utils +from pylab import * + +simtime = 500e-3 # Total simulation time +stepsize = 100e-3 # Time step for pauses between runs +simdt = 1e-4 # time step for numerical integration +plotdt = 0.25e-3 # time step for plotting + +delayMax = 5e-3 # Maximum synaptic delay + +class LIFComp(moose.Compartment): + """Leaky integrate and fire neuron using regular compartments, + spikegen and Func.""" + def __init__(self, *args): + moose.Compartment.__init__(self, *args) + self.spikegen = moose.SpikeGen('%s/spike' % (self.path)) + self.spikegen.edgeTriggered = 1 # This ensures that spike is generated only on leading edge. + self.dynamics = moose.Func('%s/dynamics' % (self.path)) + self.initVm = 0.0 + self.Rm = 10e6 + self.Ra = 1e4 + self.Cm = 100e-9 + self.Em = 0 #-65e-3 + self.initVm = 0 #self.Em + + # Note that the result is dependent on exact order of + # execution of SpikeGen and Func. If Func gets executed first + # SpikeGen will never cross threshold. + self.dynamics.expr = 'x >= y? z: x' + moose.connect(self, 'VmOut', self.dynamics, 'xIn') + moose.connect(self.dynamics, 'valueOut', self, 'setVm') + moose.connect(self, 'VmOut', self.spikegen, 'Vm') + + @property + def Vreset(self): + """Reset voltage. The cell's membrane potential is set to this value + after spiking.""" + return self.dynamics.z + + @Vreset.setter + def Vreset(self, value): + self.dynamics.z = value + + @property + def Vthreshold(self): + """Threshold voltage. The cell spikes if its membrane potential goes + above this value.""" + return self.dynamics.y + + @Vthreshold.setter + def Vthreshold(self, value): + self.dynamics.y = value + self.spikegen.threshold = value + +def setup_two_cells(): + """Create two cells with leaky integrate and fire compartments. The + first cell is composed of two compartments a1 and a2 and the + second cell is composed of compartments b1 and b2. Each pair is + connected via raxial message so that the voltage of one + compartment influences the other through axial resistance Ra. + + The compartment a1 of the first neuron is connected to the + compartment b2 of the second neuron through a synaptic channel. + + """ + model = moose.Neutral('/model') + data = moose.Neutral('/data') + a1 = LIFComp('/model/a1') + a2 = LIFComp('/model/a2') + moose.connect(a1, 'raxial', a2, 'axial') + b1 = LIFComp('/model/b1') + b2 = LIFComp('/model/b2') + moose.connect(b1, 'raxial', b2, 'axial') + a1.Vthreshold = 10e-3 + a1.Vreset = 0 + a2.Vthreshold = 10e-3 + a2.Vreset = 0 + b1.Vthreshold = 10e-3 + b1.Vreset = 0 + b2.Vthreshold = 10e-3 + b2.Vreset = 0 + syn = moose.SynChan('%s/syn' % (b2.path)) + syn.tau1 = 1e-3 + syn.tau2 = 5e-3 + syn.Ek = 90e-3 + synh = moose.SimpleSynHandler( syn.path + "/synh" ) + moose.connect( synh, "activationOut", syn, "activation" ) + synh.numSynapses = 1 + synh.synapse.delay = delayMax + moose.connect(b2, 'channel', syn, 'channel') + ## Single message works most of the time but occassionally gives a + ## core dump + + # m = moose.connect(a1.spikegen, 'spikeOut', + # syn.synapse.vec, 'addSpike') + + ## With Sparse message and random connectivity I did not get core + ## dump. + m = moose.connect(a1.spikegen, 'spikeOut', + synh.synapse.vec, 'addSpike', 'Sparse') + m.setRandomConnectivity(1.0, 1) + stim = moose.PulseGen('/model/stim') + stim.delay[0] = 100e-3 + stim.width[0] = 1e3 + stim.level[0] = 11e-9 + moose.connect(stim, 'output', a1, 'injectMsg') + tables = [] + data = moose.Neutral('/data') + for c in moose.wildcardFind('/##[ISA=Compartment]'): + tab = moose.Table('%s/%s' % (data.path, c.name)) + moose.connect(tab, 'requestOut', c, 'getVm') + tables.append(tab) + # t1 = moose.Table('%s/%s' % (data.path, c.name)) + # moose.connect(t1, 'requestOut', moose.element('%s/dynamics' % (c.path)), 'getX') + # tables.append(t1) + syntab = moose.Table('%s/%s' % (data.path, 'Gk')) + moose.connect(syntab, 'requestOut', syn, 'getGk') + tables.append(syntab) + synh.synapse[0].delay = 1e-3 + syn.Gbar = 1e-6 + return tables + +if __name__ == '__main__': + tables = setup_two_cells() + + utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + utils.assignDefaultTicks(modelRoot='/model', dataRoot='/data', solver='ee') + moose.reinit() + utils.stepRun(simtime, stepsize) + for ii, tab in enumerate(tables): + subplot(len(tables), 1, ii+1) + t = np.linspace(0, simtime, len(tab.vector))*1e3 + plot(t, tab.vector*1e3, label=tab.name) + legend() + show() +# +# multicomp_lif.py ends here diff --git a/examples/snippets/multiscaleOneCompt.py b/examples/snippets/multiscaleOneCompt.py new file mode 100644 index 0000000..1920212 --- /dev/null +++ b/examples/snippets/multiscaleOneCompt.py @@ -0,0 +1,180 @@ +######################################################################### +## multiscaleOneCompt.py --- +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU General Public License version 2 or later. +## See the file COPYING.LIB for the full notice. +######################################################################### + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math +import numpy +import pylab +import matplotlib.pyplot as plt +import moose +import proto18 + +#EREST_ACT = -70e-3 + +def loadElec(): + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + proto18.make_Ca() + proto18.make_Ca_conc() + proto18.make_Na() + proto18.make_K_DR() + proto18.make_K_A() + # Disable all the prototypes. + for x in moose.wildcardFind( "/library/##" ): + x.tick = -1 + model = moose.Neutral( '/model' ) + cellId = moose.loadModel( 'soma.p', '/model/elec', "Neutral" ) + moose.setCwe( '/' ) + ''' + hsolve = moose.HSolve( '/model/elec/hsolve' ) + hsolve.dt = 50.0e-6 + hsolve.target = '/model/elec/soma' + moose.reinit() + ''' + return cellId + +def loadChem(): + chem = moose.Neutral( '/model/chem' ) + modelId = moose.loadModel( '../genesis/chanPhosphByCaMKII.g', '/model/chem', 'gsl' ) + nmstoich = moose.element( '/model/chem/kinetics/stoich' ) + +def makeModel(): + loadElec() + loadChem() + makeAdaptors() + +def makeAdaptors(): + ################################################################## + # set up adaptor for elec model Ca -> chem model Ca + # Here it is easy because we don't have to deal with different + # sizes of electrical and chemical compartments. + adaptCa = moose.Adaptor( '/model/chem/kinetics/adaptCa' ) + chemCa = moose.element( '/model/chem/kinetics/Ca' ) + elecCa = moose.element( '/model/elec/soma/Ca_conc' ) + moose.connect( elecCa, 'concOut', adaptCa, 'input' ) + moose.connect( adaptCa, 'output', chemCa, 'setConc' ) + adaptCa.inputOffset = 0.0 # + adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. + adaptCa.scale = 0.0008 + + # set up adaptor for chem model chan -> elec model chan. + adaptChan = moose.Adaptor( '/model/chem/kinetics/adaptChan' ) + chemChan = moose.element( '/model/chem/kinetics/chan' ) + elecChan = moose.element( '/model/elec/soma/K_A' ) + # The Adaptor has to request the output conc of the chemical pool, + # since there isn't an output message to deliver this value. + moose.connect( adaptChan, 'requestOut', chemChan, 'getConc' ) + moose.connect( adaptChan, 'output', elecChan, 'setGbar' ) + adaptChan.inputOffset = 0.0 # + adaptChan.outputOffset = 0.0 + adaptChan.scale = 1e-5 # + +def addPlot( objpath, field, plot, tick ): + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + tab.tick = tick + return tab + else: + print "failed in addPlot(", objpath, field, plot, tick, ")" + return 0 + +def main(): + """ + This example builds a simple multiscale model involving + electrical and chemical signaling, but without spatial dimensions. + The electrical cell model is in a single compartment and has + voltage-gated channels, including a voltage-gated Ca channel for + Ca influx, and a K_A channel which is regulated by the chemical + pathways. + + The chemical model has calcium activating Calmodulin which activates + CaM-Kinase II. The kinase phosphorylates the K_A channel to inactivate + it. + + The net effect of the multiscale activity is a positive feedback + loop where activity increases Ca, which activates the kinase, + which reduces K_A, leading to increased excitability of the cell. + + In this example this results + in a bistable neuron. In the resting state the cell does not fire, + but if it is activated by a current pulse the cell will continue to + fire even after the current is turned off. Application of an + inhibitory current restores the cell to its silent state. + + Both the electrical and chemical models are loaded in from model + description files, and these files could be replaced if one wished + to define different models. However, there + are model-specific Adaptor objects needed to map activity between the + models of the two kinds. The Adaptors connect specific model entities + between the two models. Here one Adaptor connects the electrical + Ca_conc object to the chemical Ca pool. The other Adaptor connects + the chemical pool representing the K_A channel to its conductance + term in the electrical model. + """ + + runtime = 4 + chemDt = 0.005 + ePlotDt = 0.5e-3 + cPlotDt = 0.0025 + + makeModel() + + moose.setClock( 8, ePlotDt ) + moose.setClock( 18, cPlotDt ) + for i in range( 10, 18 ): + moose.setClock( i, chemDt ) + graphs = moose.Neutral( '/graphs' ) + caplot = addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'somaCa', 8 ) + vmplot = addPlot( '/model/elec/soma', 'getVm', 'somaVm', 8 ) + ikplot = addPlot( '/model/elec/soma/K_A', 'getIk', 'KAIk', 8 ) + addPlot( '/model/chem/kinetics/chan', 'getConc', 'chan', 18 ) + addPlot( '/model/chem/kinetics/Ca', 'getConc', 'Ca', 18 ) + addPlot( '/model/chem/kinetics/CaM', 'getConc', 'CaM', 18 ) + addPlot( '/model/chem/kinetics/Ca_CaM_CaMKII', 'getConc', 'enz', 18 ) + hsolve = moose.HSolve( '/model/elec/hsolve' ) + hsolve.dt = 50.0e-6 + hsolve.target = '/model/elec/soma' + moose.reinit() + moose.element( '/model/elec/soma' ).inject = 0e-12 + moose.start( runtime ) + moose.element( '/model/elec/soma' ).inject = 1e-12 + moose.start( runtime ) + moose.element( '/model/elec/soma' ).inject = 0e-12 + moose.start( runtime ) + moose.element( '/model/elec/soma' ).inject = -1e-12 + moose.start( runtime ) + moose.element( '/model/elec/soma' ).inject = 0e-12 + moose.start( runtime ) + fig = plt.figure( figsize = (12,10) ) + t = numpy.arange( 0, caplot.vector.size, 1 ) * caplot.dt + p1 = fig.add_subplot( 411 ) + p1.plot( t, caplot.vector, label="Ca elec" ) + p1.legend() + p2 = fig.add_subplot( 412 ) + p2.plot( t, vmplot.vector, label="Vm" ) + p2.legend() + p3 = fig.add_subplot( 413 ) + p3.plot( t, ikplot.vector, label="Ik for K_A" ) + p3.legend() + p4 = fig.add_subplot( 414 ) + for x in moose.wildcardFind( '/graphs/#[FIELD(tick)=18]' ): + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt + p4.plot( t, x.vector, label=x.name ) + p4.legend() + plt.show() + quit() + +if __name__ == '__main__': + main() diff --git a/examples/snippets/neuronFromDotp.py b/examples/snippets/neuronFromDotp.py new file mode 100644 index 0000000..8b8702c --- /dev/null +++ b/examples/snippets/neuronFromDotp.py @@ -0,0 +1,157 @@ +# neuronFromDotp.py --- +# Author: Upi Bhalla NCBS Bangalore 2014. +# Commentary: + +# Demonstrates how to load a simple neuronal model in GENESIS dotp format. +# The model has branches and a few spines. +# It is adorned just with classic HH squid channels. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +#import sys +#sys.path.append('../../python') +import math +import pylab +import numpy +import moose + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def makeChannelPrototypes(): + """Create channel prototypes for readcell.""" + library = moose.Neutral( '/library' ) + moose.setCwe( '/library' ) + compt = moose.SymCompartment( '/library/symcompartment' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 * 0.5 + compt.Rm = 4.2e5 * 5.0 + compt.Ra = 7639.44e3 + nachan = moose.HHChannel( '/library/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) + yGate.useInterpolation = 1 + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + + kchan = moose.HHChannel( '/library/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + +def addPlot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def dumpPlots(): + plots = moose.wildcardFind( '/graphs/##[ISA=Table]' ) + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.size ) * x.dt # msec + pylab.plot( t, x.vector, label=x.name) + + pylab.legend() + pylab.show() + +def makeModel(): + makeChannelPrototypes() + cellId = moose.loadModel( 'dotp.p', '/model', 'Neutral' ) + moose.element( '/model/soma' ).inject = 1.7e-9 + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/soma', 'getVm', 'somaVm' ) + addPlot( '/model/apical_14', 'getVm', 'midVm' ) + addPlot( '/model/lat_15_2', 'getVm', 'latVm' ) + addPlot( '/model/apical_19', 'getVm', 'tipVm' ) + +def testModel( useSolver ): + plotDt = 2e-4 + if ( useSolver ): + elecDt = 50e-6 + chemDt = 2e-3 + + makeModel() + moose.setClock( 18, plotDt ) + + moose.reinit() + moose.start( 0.1 ) + dumpPlots() + +def main(): + testModel( 1 ) + +if __name__ == '__main__': + main() + +# +# neuronFromDotp.py ends here diff --git a/examples/snippets/nsdf.py b/examples/snippets/nsdf.py new file mode 100644 index 0000000..93db916 --- /dev/null +++ b/examples/snippets/nsdf.py @@ -0,0 +1,175 @@ +# nsdf.py --- +# +# Filename: nsdf.py +# Description: +# Author: subha +# Maintainer: +# Created: Fri Jun 26 12:23:07 2015 (-0400) +# Version: +# Last-Updated: Tue Dec 29 12:50:27 2015 (-0500) +# By: Subhasis Ray +# Update #: 6 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""NSDF : Neuroscience Simulation Data Format +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +NSDF is an HDF5 based format for storing data from neuroscience +simulation. + +This script is for demonstrating the use of NSDFWriter class to +dump data in NSDF format. + +The present implementation of NSDFWriter puts all value fields +connected to its requestData into +/data/uniform/{className}/{fieldName} 2D dataset - each row +corresponding to one object. + +Event data are stored in +/data/event/{className}/{fieldName}/{Id}_{dataIndex}_{fieldIndex} +where the last component is the string representation of the ObjId of +the source. + +The model tree (starting below root element) is saved as a tree of +groups under /model/modeltree (one could easily add the fields as +atributes with a little bit of more code). + +The mapping between data source and uniformly sampled data is stored +as a dimension scale in /map/uniform/{className}/{fieldName}. That for +event data is stored as a compound dataset in +/map/event/{className}/{fieldName} with a [source, data] columns. + +The start and end timestamps of the simulation are saved as file +attributes: C/C++ time functions have this limitation that they give +resolution up to a second, this means for simulation lasting < 1 s the +two timestamps may be identical. + +Much of the environment specification is set as HDF5 attributes (which +is a generic feature from HDF5WriterBase). + +MOOSE is unit agnostic at present so unit specification is not +implemented in NSDFWriter. But units can be easily added as dataset +attribute if desired as shown in this example. + + +References: + +Ray, Chintaluri, Bhalla and Wojcik. NSDF: Neuroscience Simulation Data +Format, Neuroinformatics, 2015. + +http://nsdf.readthedocs.org/en/latest/ + +See also: +nsdf_vec.py +""" + +import numpy as np +from datetime import datetime +import getpass + +import moose + +def setup_model(): + """Setup a dummy model with a PulseGen and a SpikeGen. The SpikeGen + detects the leading edges of the pulses created by the PulseGen + and sends out the event times. We record the PulseGen outputValue + as Uniform data and leading edge time as Event data in the NSDF + file. + + """ + simtime = 100.0 + dt = 1e-3 + model = moose.Neutral('/model') + pulse = moose.PulseGen('/model/pulse') + pulse.level[0] = 1.0 + pulse.delay[0] = 10 + pulse.width[0] = 20 + t_lead = moose.SpikeGen('/model/t_lead') + t_lead.threshold = 0.5 + moose.connect(pulse, 'output', t_lead,'Vm'); + nsdf = moose.NSDFWriter('/model/writer') + nsdf.filename = 'nsdf_demo.h5' + nsdf.mode = 2 #overwrite existing file + nsdf.flushLimit = 100 + moose.connect(nsdf, 'requestOut', pulse, 'getOutputValue') + print 'event input', nsdf.eventInput, nsdf.eventInput.num + print nsdf + + nsdf.eventInput.num = 1 + ei = nsdf.eventInput[0] + print ei.path + moose.connect(t_lead, 'spikeOut', nsdf.eventInput[0], 'input') + tab = moose.Table('spiketab') + tab.threshold = t_lead.threshold + clock = moose.element('/clock') + for ii in range(32): + moose.setClock(ii, dt) + moose.connect(pulse, 'output', tab, 'spike') + print 'Starting simulation at:', datetime.now().isoformat() + moose.reinit() + moose.start(simtime) + print 'Finished simulation at:', datetime.now().isoformat() + np.savetxt('nsdf.txt', tab.vector) + ################################### + # Set the environment attributes + ################################### + nsdf.stringAttr['title'] = 'NSDF writing demo for moose' + nsdf.stringAttr['description'] = '''An example of writing data to NSDF file from MOOSE simulation. In +this simulation we generate square pules from a PulseGen object and +use a SpikeGen to detect the threshold crossing events of rising +edges. We store the pulsegen output as Uniform data and the threshold +crossing times as Event data. ''' + nsdf.stringAttr['creator'] = getpass.getuser() + nsdf.stringVecAttr['software'] = ['python2.7', 'moose3' ] + nsdf.stringVecAttr['method'] = [''] + nsdf.stringAttr['rights'] = '' + nsdf.stringAttr['license'] = 'CC-BY-NC' + # Specify units. MOOSE is unit agnostic, so we explicitly set the + # unit attibutes on individual datasets + nsdf.stringAttr['/data/uniform/PulseGen/outputValue/tunit'] = 's' + nsdf.stringAttr['/data/uniform/PulseGen/outputValue/unit'] = 'A' + eventDataPath = '/data/event/SpikeGen/spikeOut/{}_{}_{}/unit'.format(t_lead.vec.value, + t_lead.getDataIndex(), + t_lead.fieldIndex) + nsdf.stringAttr[eventDataPath] = 's' + + +if __name__ == '__main__': + setup_model() + + +# +# nsdf.py ends here diff --git a/examples/snippets/nsdf_vec.py b/examples/snippets/nsdf_vec.py new file mode 100644 index 0000000..879c26d --- /dev/null +++ b/examples/snippets/nsdf_vec.py @@ -0,0 +1,182 @@ +# nsdf_vec.py --- +# +# Filename: nsdf_vec.py +# Description: +# Author: subha +# Maintainer: +# Created: Sat Dec 19 22:27:27 2015 (-0500) +# Version: +# Last-Updated: Thu Aug 11 11:09:33 2016 (-0400) +# By: Subhasis Ray +# Update #: 135 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Example code to dump data from multiple elements in a vector. + +In this demo we create a PulseGen vector where each element has a +different set of pulse parameters. After saving the output vector +directly using MOOSE NSDFWriter we open the NSDF file using h5py and +plot the saved data. + +You need h5py module installed to run this simulation. + +References: + +Ray, Chintaluri, Bhalla and Wojcik. NSDF: Neuroscience Simulation Data +Format, Neuroinformatics, 2015. + +http://nsdf.readthedocs.org/en/latest/ + +See also: + +nsdf.py + +""" + +from __future__ import print_function +import numpy as np +from datetime import datetime +import getpass +import h5py as h5 +from matplotlib import pyplot as plt + +import moose + +def write_nsdf(): + """Setup a dummy model with a PulseGen vec and dump the outputValue in + NSDF file + + """ + simtime = 100.0 + dt = 1e-3 + elements = 5 + model = moose.Neutral('/model') + pulsegen = moose.PulseGen('/model/pulse', elements) + spikegen = moose.SpikeGen('/model/t_lead', elements) + nsdf = moose.NSDFWriter('/model/writer') + nsdf.filename = 'nsdf_vec_demo.h5' + nsdf.mode = 2 #overwrite existing file + # nsdf.eventInput.num = elements + nsdf.flushLimit = 100 + for ii in range(elements): + pulse = pulsegen.vec[ii] + t_lead = spikegen.vec[ii] + # Just to make the values different for different elements in + # the vec ... + pulse.level[0] = 1.0*(ii+1) + pulse.delay[0] = 5 * (ii+1) + pulse.width[0] = 20 + t_lead.threshold = 0.5 + moose.connect(pulse, 'output', t_lead,'Vm') + moose.connect(nsdf, 'requestOut', pulse, 'getOutputValue') + # ei = nsdf.eventInput[ii] + # moose.connect(t_lead, 'spikeOut', ei, 'input') + # tab = moose.Table('spiketab_{}'.format(ii)) + # tab.threshold = t_lead.threshold + # moose.connect(pulse, 'output', tab, 'spike') + clock = moose.element('/clock') + for ii in range(32): + moose.setClock(ii, dt) + print('Starting simulation at:', datetime.now().isoformat()) + moose.reinit() + moose.start(simtime) + print('Finished simulation at:', datetime.now().isoformat()) + ################################### + # Set the environment attributes + ################################### + nsdf.stringAttr['title'] = 'NSDF writing demo for moose' + nsdf.stringAttr['description'] = '''An example of writing data to NSDF file from MOOSE simulation. In +this simulation we generate square pules from a PulseGen object and +use a SpikeGen to detect the threshold crossing events of rising +edges. We store the pulsegen output as Uniform data and the threshold +crossing times as Event data. ''' + nsdf.stringAttr['creator'] = getpass.getuser() + nsdf.stringVecAttr['software'] = ['python2.7', 'moose3' ] + nsdf.stringVecAttr['method'] = [''] + nsdf.stringAttr['rights'] = '' + nsdf.stringAttr['license'] = 'CC-BY-NC' + #################################################### + ## !! Work in progress: concurrent write via h5py does not work !! + #################################################### + ## Now write some custom stuff via h5py + print('Closing nsdf handle') + nsdf.close() #explicitly close the file so we do not interfere with h5py + print('Closed nsdf handle') + with h5.File(nsdf.filename, 'a') as fd: + static = fd.create_group('/data/static') + static_pg = static.create_group(pulsegen.className) + pulse_info = static_pg.create_dataset('pulse_0', (elements,), dtype=np.dtype([('delay', 'float64'), ('level', 'float64'), ('width','float64')])) + map_ = fd.create_group('/map/static') + map_pg = map_.create_group(pulsegen.className) + map_pulse = map_pg.create_dataset('pulse_0', (elements,), dtype=h5.special_dtype(vlen=str)) + for ii in range(elements): + pulse_info['delay', ii] = pulsegen.vec[ii].delay[0] + pulse_info['width', ii] = pulsegen.vec[ii].width[0] + pulse_info['level', ii] = pulsegen.vec[ii].level[0] + map_pulse[ii] = pulsegen.vec[ii].path + #TODO: connect this as a dimension scale on pulse_info + + return nsdf.filename + +def read_nsdf(fname): + """Read the specific file we created in this example. + + Note that the preferable way of associating source with data is to + use the DimensionScale. But since there is one-to-one + correspondence between the data rows and the map rows (source + path), we are exploiting that here. + + """ + with h5.File(fname, 'r') as fd: + pulse_data = fd['/data/uniform/PulseGen/outputValue'] + pulse_src = fd['/map/uniform/PulseGen/outputValue'] + for ii in range(len(pulse_src)): + source = pulse_src[ii] + data = pulse_data[ii, :] + dt = pulse_data.attrs['dt'] + plt.figure(source) + ts = np.arange(len(data)) * dt + plt.plot(ts, data) + plt.suptitle(source) + plt.show() + + +if __name__ == '__main__': + fname = write_nsdf() + read_nsdf(fname) + +# +# nsdf_vec.py ends here diff --git a/examples/snippets/onetoonemsg.py b/examples/snippets/onetoonemsg.py new file mode 100644 index 0000000..7f875f6 --- /dev/null +++ b/examples/snippets/onetoonemsg.py @@ -0,0 +1,74 @@ +# onetoonemsg.py --- +# +# Filename: onetoonemsg.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Wed May 1 11:05:30 2013 (+0530) +# Version: +# Last-Updated: Wed May 1 11:12:07 2013 (+0530) +# By: subha +# Update #: 24 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import pylab +import sys +sys.path.append('../../python') +import moose + +def test_one_to_one(size=2): + pg = moose.PulseGen('pulsegen', size) + for ix, ii in enumerate(pg.vec): + pulse = moose.element(ii) + pulse.delay[0] = 1.0 + pulse.width[0] = 2.0 + pulse.level[0] = (-1)**ix + tab = moose.Table('pulseamp', size) + moose.connect(tab, 'requestOut', pg, 'getOutputValue', 'OneToOne') + moose.setClock(0, 0.1) + moose.useClock(0, '/##', 'process') + moose.start(5) + for ii in tab.vec: + t = moose.Table(ii).vector + pylab.plot(t) + pylab.show() + +if __name__ == '__main__': + test_one_to_one() + +# +# onetoonemsg.py ends here diff --git a/examples/snippets/proto18.py b/examples/snippets/proto18.py new file mode 100644 index 0000000..83448ef --- /dev/null +++ b/examples/snippets/proto18.py @@ -0,0 +1,510 @@ +#/* FILE INFORMATION +#** Based mostly on the traub91proto.g by Dave Beeman +#** Main difference is addition of Glu and NMDA channels +#** The 1991 Traub set of voltage and concentration dependent channels +#** Implemented as tabchannels by : Dave Beeman +#** R.D.Traub, R. K. S. Wong, R. Miles, and H. Michelson +#** Journal of Neurophysiology, Vol. 66, p. 635 (1991) +#** +#** This file depends on functions and constants defined in defaults.g +#** As it is also intended as an example of the use of the tabchannel +#** object to implement concentration dependent channels, it has extensive +#** comments. Note that the original units used in the paper have been +#** converted to SI (MKS) units. Also, we define the ionic equilibrium +#** potentials relative to the resting potential, EREST_ACT. In the +#** paper, this was defined to be zero. Here, we use -0.060 volts, the +#** measured value relative to the outside of the cell. +#*/ + +#/* November 1999 update for GENESIS 2.2: Previous versions of this file used +# a combination of a table, tabgate, and vdep_channel to implement the +# Ca-dependent K Channel - K(C). This new version uses the new tabchannel +# "instant" field, introduced in GENESIS 2.2, to implement an +# "instantaneous" gate for the multiplicative Ca-dependent factor in the +# conductance. This allows these channels to be used with the fast +# hsolve chanmodes > 1. +#*/ + +# Apr 2012 update for pymoose. Converted to equivalent MOOSE funcs. + +import moose +import numpy +import math + +#CONSTANTS +EREST_ACT = -0.060 #/* hippocampal cell resting potl */ +ENA = 0.115 + EREST_ACT #// 0.055 +EK = -0.015 + EREST_ACT #// -0.075 +ECA = 0.140 + EREST_ACT #// 0.080 +SOMA_A = 3.320e-9 #// soma area in square meters + +#/* +#For these channels, the maximum channel conductance (Gbar) has been +#calculated using the CA3 soma channel conductance densities and soma +#area. Typically, the functions which create these channels will be used +#to create a library of prototype channels. When the cell reader creates +#copies of these channels in various compartments, it will set the actual +#value of Gbar by calculating it from the cell parameter file. +#*/ + +#//======================================================================== +#// Tabulated Ca Channel +#//======================================================================== + +def make_Ca(): + if moose.exists( 'Ca' ): + return + Ca = moose.HHChannel( 'Ca' ) + Ca.Ek = ECA + Ca.Gbar = 40 * SOMA_A + Ca.Gk = 0 + Ca.Xpower = 2 + Ca.Ypower = 1 + Ca.Zpower = 0 + + xgate = moose.element( 'Ca/gateX' ) + xA = numpy.array( [ 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389, -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3, 3000, -0.1, 0.05 ] ) +# xgate.min = -0.1 +# xgate.max = 0.05 +# xgate.divs = 3000 +#// Converting Traub's expressions for the gCa/s alpha and beta functions +#// to SI units and entering the A, B, C, D and F parameters, we get: +# xgate.alpha( 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389 ) +# xgate.beta( -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3 ) + #xgate.setupAlpha( xA ) + xgate.alphaParms = xA + + +# The Y gate (gCa/r) is not quite of this form. For V > EREST_ACT, alpha = +# 5*{exp({-50*(V - EREST_ACT)})}. Otherwise, alpha = 5. Over the entire +# range, alpha + beta = 5. To create the Y_A and Y_B tables, we use some +# of the pieces of the setupalpha function. + ygate = moose.element( 'Ca/gateY' ) + ygate.min = -0.1 + ygate.max = 0.05 + ygate.divs = 3000 + yA = numpy.zeros( (ygate.divs + 1), dtype=float) + yB = numpy.zeros( (ygate.divs + 1), dtype=float) + + +#Fill the Y_A table with alpha values and the Y_B table with (alpha+beta) + dx = (ygate.max - ygate.min)/ygate.divs + x = ygate.min + for i in range( ygate.divs + 1 ): + if ( x > EREST_ACT): + yA[i] = 5.0 * math.exp( -50 * (x - EREST_ACT) ) + else: + yA[i] = 5.0 + yB[i] = 5.0 + x += dx + ygate.tableA = yA + ygate.tableB = yB +# Tell the cell reader that the current from this channel must be fed into +# the Ca_conc pool of calcium. + addmsg1 = moose.Mstring( '/library/Ca/addmsg1' ) + addmsg1.value = '. IkOut ../Ca_conc current' +# in some compartments, whe have an NMDA_Ca_conc object to put the current +# into. + addmsg2 = moose.Mstring( '/library/Ca/addmsg2' ) + addmsg2.value = '. IkOut ../NMDA_Ca_conc current' +# As we typically use the cell reader to create copies of these prototype +#elements in one or more compartments, we need some way to be sure that the +#needed messages are established. Although the cell reader has enough +#information to create the messages which link compartments to their channels +#and to other adjacent compartments, it most be provided with the information +#needed to establish additional messages. This is done by placing the +#message string in a user-defined field of one of the elements which is +#involved in the message. The cell reader recognizes the added object names +#"addmsg1", "addmsg2", etc. as indicating that they are to be +#evaluated and used to set up messages. The paths are relative to the +#element which contains the message string in its added field. Thus, +#"../Ca_conc" refers to the sibling element Ca_conc and "." +#refers to the Ca element itself. + + +#/************************************************************************* +#Next, we need an element to take the Calcium current calculated by the Ca +#channel and convert it to the Ca concentration. The "Ca_concen" object +#solves the equation dC/dt = B*I_Ca - C/tau, and sets Ca = Ca_base + C. As +#it is easy to make mistakes in units when using this Calcium diffusion +#equation, the units used here merit some discussion. + +#With Ca_base = 0, this corresponds to Traub's diffusion equation for +#concentration, except that the sign of the current term here is positive, as +#GENESIS uses the convention that I_Ca is the current flowing INTO the +#compartment through the channel. In SI units, the concentration is usually +#expressed in moles/m^3 (which equals millimoles/liter), and the units of B +#are chosen so that B = 1/(ion_charge * Faraday * volume). Current is +#expressed in amperes and one Faraday = 96487 coulombs. However, in this +#case, Traub expresses the concentration in arbitrary units, current in +#microamps and uses tau = 13.33 msec. If we use the same concentration units, +#but express current in amperes and tau in seconds, our B constant is then +#10^12 times the constant (called "phi") used in the paper. The actual value +#used will be typically be determined by the cell reader from the cell +#parameter file. However, for the prototype channel we wlll use Traub's +#corrected value for the soma. (An error in the paper gives it as 17,402 +#rather than 17.402.) In our units, this will be 17.402e12. + +#*************************************************************************/ + + +#//======================================================================== +#// Ca conc +#//======================================================================== + +def make_Ca_conc(): + if moose.exists( 'Ca_conc' ): + return + conc = moose.CaConc( 'Ca_conc' ) + conc.tau = 0.013333 # sec + conc.B = 17.402e12 # Curr to conc conversion for soma + conc.Ca_base = 0.0 + +#This Ca_concen element should receive a message from any calcium channels +# with the current going through the channel. Here we have this specified +# in the Ca channel, with the idea that more than one channel might +# contribute Ca ions to this calcium pool. In the original GENESIS file +# this was specified here in make_Ca_conc. + +#======================================================================== +# Tabulated Ca-dependent K AHP Channel +#======================================================================== + +# This is a tabchannel which gets the calcium concentration from Ca_conc +# in order to calculate the activation of its Z gate. It is set up much +# like the Ca channel, except that the A and B tables have values which are +# functions of concentration, instead of voltage. + +def make_K_AHP(): + if moose.exists( 'K_AHP' ): + return + + K_AHP = moose.HHChannel( 'K_AHP' ) + K_AHP.Ek = EK # V + K_AHP.Gbar = 8 * SOMA_A # S + K_AHP.Gk = 0 # S + K_AHP.Xpower = 0 + K_AHP.Ypower = 0 + K_AHP.Zpower = 1 + + zgate = moose.element( 'K_AHP/gateZ' ) + xmax = 500.0 + zgate.min = 0 + zgate.max = xmax + zgate.divs = 3000 + zA = numpy.zeros( (zgate.divs + 1), dtype=float) + zB = numpy.zeros( (zgate.divs + 1), dtype=float) + dx = (zgate.max - zgate.min)/zgate.divs + x = zgate.min + for i in range( zgate.divs + 1 ): + if (x < (xmax / 2.0 )): + zA[i] = 0.02*x + else: + zA[i] = 10.0 + zB[i] = zA[i] + 1.0 + x = x + dx + + zgate.tableA = zA + zgate.tableB = zB + addmsg1 = moose.Mstring( '/library/K_AHP/addmsg1' ) + addmsg1.value = '../Ca_conc concOut . concen' +# Use an added field to tell the cell reader to set up a message from the +# Ca_Conc with concentration info, to the current K_AHP object. + + +#//======================================================================== +#// Ca-dependent K Channel - K(C) - (vdep_channel with table and tabgate) +#//======================================================================== + +#The expression for the conductance of the potassium C-current channel has a +#typical voltage and time dependent activation gate, where the time dependence +#arises from the solution of a differential equation containing the rate +#parameters alpha and beta. It is multiplied by a function of calcium +#concentration that is given explicitly rather than being obtained from a +#differential equation. Therefore, we need a way to multiply the activation +#by a concentration dependent value which is determined from a lookup table. +#This is accomplished by using the Z gate with the new tabchannel "instant" +#field, introduced in GENESIS 2.2, to implement an "instantaneous" gate for +#the multiplicative Ca-dependent factor in the conductance. + +def make_K_C(): + if moose.exists( 'K_C'): + return + + K_C = moose.HHChannel( 'K_C' ) + K_C.Ek = EK # V + K_C.Gbar = 100.0 * SOMA_A # S + K_C.Gk = 0 # S + K_C.Xpower = 1 + K_C.Zpower = 1 + K_C.instant = 4 # Flag: 0x100 means Z gate is instant. + + # Now make a X-table for the voltage-dependent activation parameter. + xgate = moose.element( 'K_C/gateX' ) + xgate.min = -0.1 + xgate.max = 0.05 + xgate.divs = 3000 + xA = numpy.zeros( (xgate.divs + 1), dtype=float) + xB = numpy.zeros( (xgate.divs + 1), dtype=float) + dx = (xgate.max - xgate.min)/xgate.divs + x = xgate.min + for i in range( xgate.divs + 1 ): + alpha = 0.0 + beta = 0.0 + if (x < EREST_ACT + 0.05): + alpha = math.exp( 53.872 * (x - EREST_ACT) - 0.66835 ) / 0.018975 + beta = 2000* (math.exp ( (EREST_ACT + 0.0065 - x)/0.027)) - alpha + else: + alpha = 2000 * math.exp( ( EREST_ACT + 0.0065 - x)/0.027 ) + beta = 0.0 + xA[i] = alpha + xB[i] = alpha + beta + x = x + dx + xgate.tableA = xA + xgate.tableB = xB + +# Create a table for the function of concentration, allowing a +# concentration range of 0 to 1000, with 50 divisions. This is done +# using the Z gate, which can receive a CONCEN message. By using +# the "instant" flag, the A and B tables are evaluated as lookup tables, +# rather than being used in a differential equation. + zgate = moose.element( 'K_C/gateZ' ) + zgate.min = 0.0 + xmax = 500.0 + zgate.max = xmax + zgate.divs = 3000 + zA = numpy.zeros( (zgate.divs + 1), dtype=float) + zB = numpy.zeros( (zgate.divs + 1), dtype=float) + dx = ( zgate.max - zgate.min)/ zgate.divs + x = zgate.min + for i in range( xgate.divs + 1 ): + if ( x < ( xmax / 4.0 ) ): + zA[i] = x * 4.0 / xmax + else: + zA[i] = 1.0 + zB[i] = 1.0 + x += dx + zgate.tableA = zA + zgate.tableB = zB + +# Now we need to provide for messages that link to external elements. +# The message that sends the Ca concentration to the Z gate tables is stored +# in an added field of the channel, so that it may be found by the cell +# reader. + addmsg1 = moose.Mstring( '/library/K_C/addmsg1' ) + addmsg1.value = '../Ca_conc concOut . concen' + + +# The remaining channels are straightforward tabchannel implementations + +#/======================================================================== +#/ Tabchannel Na Hippocampal cell channel +#/======================================================================== +def make_Na(): + if moose.exists( 'Na' ): + return + Na = moose.HHChannel( 'Na' ) + Na.Ek = ENA # V + Na.Gbar = 300 * SOMA_A # S + Na.Gk = 0 # S + Na.Xpower = 2 + Na.Ypower = 1 + Na.Zpower = 0 + + xgate = moose.element( 'Na/gateX' ) + xA = numpy.array( [ 320e3 * (0.0131 + EREST_ACT), + -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004, + -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, + -1.0 * (0.0401 + EREST_ACT), 5.0e-3, + 3000, -0.1, 0.05 ] ) + xgate.alphaParms = xA + + + #xgate.alpha( 320e3 * (0.0131 + EREST_ACT), -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004 ) + #xgate.beta( -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 5.0e-3 ) + + ygate = moose.element( 'Na/gateY' ) + yA = numpy.array( [ 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018, + 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3, + 3000, -0.1, 0.05 ] ) + ygate.alphaParms = yA + + #ygate.alpha( 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018 ) + #ygate.beta( 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3 ) + +#======================================================================== +# Tabchannel K(DR) Hippocampal cell channel +#======================================================================== +def make_K_DR(): + if moose.exists( 'K_DR' ): + return + K_DR = moose.HHChannel( 'K_DR' ) + K_DR.Ek = EK # V + K_DR.Gbar = 150 * SOMA_A # S + K_DR.Gk = 0 # S + K_DR.Xpower = 1 + K_DR.Ypower = 0 + K_DR.Zpower = 0 + + xgate = moose.element( 'K_DR/gateX' ) + xA = numpy.array( [ 16e3 * (0.0351 + EREST_ACT), + -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005, + 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04, + 3000, -0.1, 0.05 ] ) + xgate.alphaParms = xA + #xgate.alpha( 16e3 * (0.0351 + EREST_ACT), -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005 ) + #xgate.beta( 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04 ) + +#======================================================================== +# Tabchannel K(A) Hippocampal cell channel +#======================================================================== +def make_K_A(): + if moose.exists( 'K_A' ): + return + K_A = moose.HHChannel( 'K_A' ) + K_A.Ek = EK # V + K_A.Gbar = 50 * SOMA_A # S + K_A.Gk = 0 # S + K_A.Xpower = 1 + K_A.Ypower = 1 + K_A.Zpower = 0 + + xgate = moose.element( 'K_A/gateX' ) + xA = numpy.array( [ 20e3 * (0.0131 + EREST_ACT), + -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01, + -17.5e3 * (0.0401 + EREST_ACT), + 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01, + 3000, -0.1, 0.05 ] ) + xgate.alphaParms = xA + # xgate.alpha( 20e3 * (0.0131 + EREST_ACT), -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01 ) + # xgate.beta( -17.5e3 * (0.0401 + EREST_ACT), 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01 ) + + ygate = moose.element( 'K_A/gateY' ) + yA = numpy.array( [ 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018, + 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005, + 3000, -0.1, 0.05 ] ) + ygate.alphaParms = yA + # ygate.alpha( 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018 ) + # ygate.beta( 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005 ) +#======================================================================== +# SynChan: Glu receptor +#======================================================================== + +def make_glu(): + if moose.exists( 'glu' ): + return + glu = moose.SynChan( 'glu' ) + glu.Ek = 0.0 + glu.tau1 = 2.0e-3 + glu.tau2 = 9.0e-3 + glu.Gbar = 40 * SOMA_A + sh = moose.SimpleSynHandler( 'glu/sh' ) + moose.connect( sh, 'activationOut', glu, 'activation' ) + sh.numSynapses = 1 + sh.synapse[0].weight = 1 + + +#======================================================================== +# SynChan: NMDA receptor +#======================================================================== + +def make_NMDA(): + if moose.exists( 'NMDA' ): + return + NMDA = moose.SynChan( 'NMDA' ) + NMDA.Ek = 0.0 + NMDA.tau1 = 20.0e-3 + NMDA.tau2 = 20.0e-3 + NMDA.Gbar = 5 * SOMA_A + + block = moose.MgBlock( '/library/NMDA/block' ) + block.CMg = 1.2 # [Mg] in mM + block.Zk = 2 + block.KMg_A = 1.0/0.28 + block.KMg_B = 1.0/62 + + moose.connect( NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) + addmsg1 = moose.Mstring( '/library/NMDA/addmsg1' ) + addmsg1.value = '.. channel ./block channel' + #Here we want to also tell the cell reader to _remove_ the original + #Gk, Ek term going from the channel to the compartment, as this is + # now handled by the MgBlock. + #addmsg2 = moose.Mstring( 'NMDA/addmsg2' + #addmsg2.value = 'DropMsg .. channel' + addmsg1 = moose.Mstring( '/library/NMDA/addmsg1' ) + addmsg1.value = '.. VmOut ./block Vm' + addmsg2 = moose.Mstring( '/library/NMDA/addmsg2' ) + addmsg2.value = './block IkOut ../Ca_conc current' + addmsg3 = moose.Mstring( '/library/NMDA/addmsg3' ) + addmsg3.value = '.. VmOut . Vm' + + sh = moose.SimpleSynHandler( 'NMDA/sh' ) + moose.connect( sh, 'activationOut', NMDA, 'activation' ) + sh.numSynapses = 1 + sh.synapse[0].weight = 1 + +#addfield NMDA addmsg1 +#setfield NMDA addmsg1 ".. ./block VOLTAGE Vm" +#addfield NMDA addmsg2 +#setfield NMDA addmsg2 "./block .. CHANNEL Gk Ek" + +#======================================================================== +# The Ca_NMDA channel is a subset of the NMDA channel that carries Ca. +# It is identical to above, except that the Ek for Ca is much higher: +# 0.08 V from the consts at the top of this file. +# This is about the reversal potl for 1 uM Ca_in, 2 mM out. +# Also we do not want this channel to contribute to the current, +# which is already accounted for in the main channel. So there is +# no CHANNEL message to the parent compartment. +# I would like to have used the Nernst to do the Ca potential, and +# Synchans now take Ek messages but I haven't yet used this. +#======================================================================== + +def make_Ca_NMDA(): + if moose.exists( 'Ca_NMDA' ): + return + Ca_NMDA = moose.SynChan( 'Ca_NMDA' ) + Ca_NMDA.Ek = ECA + Ca_NMDA.tau1 = 20.0e-3 + Ca_NMDA.tau2 = 20.0e-3 + Ca_NMDA.Gbar = 5 * SOMA_A + + block = moose.MgBlock( '/library/Ca_NMDA/block' ) + block.CMg = 1.2 # [Mg] in mM + block.Zk = 2 + block.KMg_A = 1.0/0.28 + block.KMg_B = 1.0/62 + + moose.connect( Ca_NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) + addmsg1 = moose.Mstring( '/library/Ca_NMDA/addmsg1' ) + addmsg1.value = '.. VmOut ./block Vm' + addmsg2 = moose.Mstring( '/library/Ca_NMDA/addmsg2' ) + addmsg2.value = './block IkOut ../NMDA_Ca_conc current' + # The original model has the Ca current also coming here. + +#======================================================================== +# Ca pool for influx through Ca_NMDA +#======================================================================== +def make_NMDA_Ca_conc(): + if moose.exists( 'NMDA_Ca_conc' ): + return + NMDA_Ca_conc = moose.CaConc( 'NMDA_Ca_conc' ) + NMDA_Ca_conc.tau = 0.004 # sec. Faster in spine than dend + NMDA_Ca_conc.B = 17.402e12 # overridden by cellreader. + NMDA_Ca_conc.Ca_base = 0.0 + +# This pool used to set up Ca info coming to it. Now we insist that the +# originating channel should specify the deferred message. + +#===================================================================== +# SPIKE DETECTOR +#===================================================================== + +#//addmsg axon/spike axon BUFFER name +def make_axon(): + if moose.exists( 'axon' ): + return + axon = moose.SpikeGen( 'axon' ) + axon.threshold = -40e-3 # V + axon.abs_refract = 10e-3 # sec + diff --git a/examples/snippets/pulsegen.py b/examples/snippets/pulsegen.py new file mode 100644 index 0000000..2f6cfa3 --- /dev/null +++ b/examples/snippets/pulsegen.py @@ -0,0 +1,78 @@ + +# pulsegen.py --- +# +# Filename: pulsegen.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sat Jun 23 10:26:25 2012 (+0530) +# Version: +# Last-Updated: Sat Jun 23 13:51:28 2012 (+0530) +# By: subha +# Update #: 34 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +sys.path.append('../../python') +import moose +from matplotlib import pyplot as plt +import numpy as np + +def multilevel_pulsegen(): + """Demonstrates a pulsegen with multiple levels, delays and + widths.""" + pg = moose.PulseGen('pulsegen') + pg.count = 5 + for ii in range(pg.count): + pg.level[ii] = ii+1 + pg.width[ii] = 0.1 + pg.delay[ii] = 0.5 * (ii+1) + tab = moose.Table('tab') + moose.connect(tab, 'requestOut', pg, 'getOutputValue') + moose.setClock(0, 0.01) + moose.useClock(0, '%s,%s' % (pg.path, tab.path), 'process') + moose.reinit() + moose.start(20.0) + plt.plot(tab.vector) + plt.show() + +if __name__ == '__main__': + multilevel_pulsegen() + + +# +# pulsegen.py ends here diff --git a/examples/snippets/pulsegen2.py b/examples/snippets/pulsegen2.py new file mode 100644 index 0000000..812e630 --- /dev/null +++ b/examples/snippets/pulsegen2.py @@ -0,0 +1,170 @@ +# pulsegen2.py --- +# +# Filename: pulsegen2.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Jul 8 17:06:23 2015 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Recovered old demo from moose branch (beta 1.4) and converted to +# current API. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. + +# +# + +# Code: + +"""Pulse generator example +^^^^^^^^^^^^^^^^^^^^^^^ + +This example shows the full range of operations of PulseGen objects +with a reimplementation of corresponding GENESIS demo. + +A PulseGen object can be run in three modes: free running +(trigMode=0), triggered (trigMode=1) and gated (trigMode=2). + +In the free running mode it keeps repeating the pulse series +indefinitely. + +In triggered mode, it generates a pulse series on the leading edge of +the trigger signal coming to its `input` field. The trigger can be the +`output` of another PulseGen as in this example. + +In gated mode, the PulseGen acts as if it was free-running as long as +the `input` remains high. + +""" + + + +import moose +import pylab +import numpy +RUNTIME = 200.0 +SIMDT = 1.0 + +# Pulse generator with trigger mode = 0 This is free running - and +# creates a series of pulses +pulse0 = moose.PulseGen("/pulse0") +pulse0.level[0] = 50.0 +pulse0.width[0] = 3.0 +pulse0.delay[0] = 5.0 +pulse0.level[1] = -20.0 +pulse0.width[1] = 5.0 +pulse0.delay[1] = 8.0 +pulse0.baseLevel = 10.0 +pulse0.trigMode = 0 + +trig = moose.PulseGen("/trig") +trig.level[0] = 20.0 +trig.width[0] = 1.0 +trig.delay[0] = 5.0 +trig.width[1] = 30.0 + +# Pulse generator with trigger mode = 1 +pulse1 = moose.PulseGen("/pulse1") +pulse1.level[0] = 50.0 +pulse1.width[0] = 3.0 +pulse1.delay[0] = 5.0 +pulse1.level[1] = -20.0 +pulse1.width[1] = 5.0 +pulse1.delay[1] = 8.0 +pulse1.baseLevel = 10.0 +pulse1.trigMode = 1 +trig.connect("output", pulse1, "input") + +# Gated pulse +gate = moose.PulseGen("/gate") +gate.level[0] = 20.0 +gate.width[0] = 30.0 +gate.delay[0] = 15.0 +gate.width[1] = 30.0 + +# Pulse generator with trigger mode = 2 +pulse2 = moose.PulseGen("/pulse2") +pulse2.level[0] = 50.0 +pulse2.width[0] = 3.0 +pulse2.delay[0] = 5.0 +pulse2.level[1] = -20.0 +pulse2.width[1] = 5.0 +pulse2.delay[1] = 8.0 +pulse2.baseLevel = 10.0 +pulse2.trigMode = 2 +gate.connect("output", pulse2, "input") + +plot0 = moose.Table("/plot0") +plot0.connect("requestOut", pulse0, "getOutputValue") + +plot1 = moose.Table("/plot1") +plot1.connect("requestOut", pulse1, "getOutputValue") + +plot2 = moose.Table("/plot2") +plot2.connect("requestOut", pulse2, "getOutputValue") + +plotGate = moose.Table("/plotGate") +plotGate.connect("requestOut", gate, "getOutputValue") + +plotTrig = moose.Table("/plotTrig") +plotTrig.connect("requestOut", trig, "getOutputValue") + +moose.useClock(0, "/#[TYPE=PulseGen]", 'process') +moose.useClock(1, "/#[TYPE=Table]", 'process') +moose.setClock(0, SIMDT) +moose.setClock(1, SIMDT) +moose.reinit() +moose.start(RUNTIME) + +pylab.subplot(511) +pylab.plot(plot0.vector) +pylab.title('Free Run') +pylab.subplot(512) +pylab.plot(plot1.vector) +pylab.title('Triggered (below)') +pylab.subplot(513) +pylab.plot(plotTrig.vector) +pylab.title('Free Running Trigger') +pylab.subplot(514) +pylab.plot(plot2.vector) +pylab.title('Gated (below)') +pylab.subplot(515) +pylab.plot(plotGate.vector) +pylab.title('Free Running Gate') +pylab.tight_layout() +pylab.show() +print "pulsegen.py: finished simulation" + +# +# pulsegen2.py ends here diff --git a/examples/snippets/pyrun.py b/examples/snippets/pyrun.py new file mode 100644 index 0000000..6eac0f3 --- /dev/null +++ b/examples/snippets/pyrun.py @@ -0,0 +1,219 @@ +# pyrun.py --- +# +# Filename: pyrun.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Oct 15 10:14:15 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""You can use the PyRun class to run Python statements from MOOSE at +runtime. This opens up many possibilities of interleaving computing in +Python and MOOSE. You can also use this for debugging simulations. +""" +import numpy as np +from matplotlib import pyplot as plt +import moose + +def run_sequence(): + """In this example we demonstrate the use of PyRun objects to execute + Python statements from MOOSE. Here is a couple of fun things to + indicate the power of MOOSE-Python integration. + + First we create a PyRun object called `Hello`. In its `initString` + we put in Python statements that prints the element's string + representation using pymoose-API. When ``moose.reinit()`` is + called, this causes MOOSE to execute these Python statements which + include Python calling a MOOSE function + (Python->MOOSE->Python->MOOSE) - isn't that cool! + + We also initialize a counter called `hello_count` to 0. + + The statements in initString gets executed once, when we call + ``moose.reinit()``. + + In the `runString` we put a couple of print statements to indicate + the name fof the object which is running and the current + count. Then we increase the count directly. + + When we call ``moose.start()``, the `runString` gets executed at + each time step. + + The other PyRun object we create, is `/World`. In its `initString` + apart from ordinary print statements and initialization, we define + a Python function called ``incr_count``. This silly little + function just increments the global `world_count` by 1. + + The `runString` for `World` simply calls this function to + increment the count and print it. + + We may notice that we assign tick 0 to `Hello` and tick 1 to + `World`. Looking at the output, you will realize that the + sequences of the ticks strictly maintain the sequence of + execution. + + """ + model = moose.Neutral('/model') + hello_runner = moose.PyRun('/model/Hello') + hello_runner.initString = """ +print 'Init', moose.element('/model/Hello') +hello_count = 0 +""" + hello_runner.runString = """ +print 'Running Hello' +print 'Hello count =', hello_count +hello_count += 1 +""" + hello_runner.run('from datetime import datetime') + hello_runner.run('print "Hello: current time:", datetime.now().isoformat()') + moose.useClock(0, hello_runner.path, 'process') + world_runner = moose.PyRun('World') + world_runner.initString = """ +print 'Init World' +world_count = 0 +def incr_count(): + global world_count + world_count += 1 +""" + world_runner.runString = """ +print 'Running World' +print 'World count =', world_count +incr_count() +""" + world_runner.run('from datetime import datetime') + world_runner.run('print "World: current time:", datetime.now().isoformat()') + + moose.useClock(0, world_runner.path, 'process') + moose.reinit() + moose.start(0.001) + + +def input_output(): + """The PyRun class can take a double input through `trigger` + field. Whenever another object sends an input to this field, the + `runString` is executed. + + The fun part of this is that you can use the input value in your + python statements in `runString`. This is stored in a local + variable called `input_`. You can rename this by setting `inputVar` + field. + + Things become even more interesting when you can send out a value + computed using Python. PyRun objects allow you to define a local + variable called `output` and whatever value you assign to this, + will be sent out through the source field `output` on successful + execution of the `runString`. + + You can rename the output variable by setting `outputVar` field. + + In this example, we send the output of a pulsegen object sending + out the values 1, 2, 3 during each pulse and compute the square of + these numbers in Python and set output to this square. + + The calculated value is assigned to the `output` variable and in + turn sent out to a Table object's input and gets recorded. + + By default PyRun executes the `runString` whenever a `trigger` + message is received and when its process method is called at each + timestep. In both cases it sends out the `output` value. Since + this may cause inaccuracies depending on what the Python + statements in `runString` do, a `mode` can be specified to disable + one of the above. We set ``mode = 2`` to disable the `process` + method. Note that this could also have been done by setting its + ``tick = -1``. + + ``mode = 1`` will disable `trigger` message and ``mode = 0``, the + default, enables both. + """ + model = moose.Neutral('/model') + input_pulse = moose.PulseGen('/model/pulse') + #: set the baseline output 0 + input_pulse.baseLevel = 0.0 + #: We make it generate three pulses + input_pulse.count = 3 + input_pulse.level[0] = 1.0 + input_pulse.level[1] = 2.0 + input_pulse.level[2] = 3.0 + #: Each pulse will appear 1 s after the previous one + input_pulse.delay[0] = 1.0 + input_pulse.delay[1] = 1.0 + input_pulse.delay[2] = 1.0 + #: Each pulse is 1 s wide + input_pulse.width[0] = 1.0 + input_pulse.width[1] = 1.0 + input_pulse.width[2] = 1.0 + #: Now create the PyRun object + pyrun = moose.PyRun('/model/pyrun') + pyrun.runString = """ +output = input_ * input_ +print 'input =', input_ +print 'output =', output +""" + pyrun.mode = 2 # do not run process method + moose.connect(input_pulse, 'output', pyrun, 'trigger') + output_table = moose.Table('/model/output') + moose.connect(pyrun, 'output', output_table, 'input') + input_table = moose.Table('/model/input') + moose.connect(input_pulse, 'output', input_table, 'input') + moose.setClock(0, 0.25) + moose.setClock(1, 0.25) + moose.setClock(2, 0.25) + moose.useClock(0, input_pulse.path, 'process') + #: this is unnecessary because the mode=2 ensures that `process` + #: does nothing + moose.useClock(1, pyrun.path, 'process') + moose.useClock(2, '/model/#[ISA=Table]', 'process') + moose.reinit() + moose.start(10.0) + #ts = + plt.plot(input_table.vector, label='input') + plt.plot(output_table.vector, label='output') + plt.legend() + plt.show() + +if __name__ == '__main__': + run_sequence() + moose.delete('/model') + input_output() + + + +# +# pyrun.py ends here diff --git a/examples/snippets/pyrun1.py b/examples/snippets/pyrun1.py new file mode 100644 index 0000000..6eac0f3 --- /dev/null +++ b/examples/snippets/pyrun1.py @@ -0,0 +1,219 @@ +# pyrun.py --- +# +# Filename: pyrun.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Oct 15 10:14:15 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""You can use the PyRun class to run Python statements from MOOSE at +runtime. This opens up many possibilities of interleaving computing in +Python and MOOSE. You can also use this for debugging simulations. +""" +import numpy as np +from matplotlib import pyplot as plt +import moose + +def run_sequence(): + """In this example we demonstrate the use of PyRun objects to execute + Python statements from MOOSE. Here is a couple of fun things to + indicate the power of MOOSE-Python integration. + + First we create a PyRun object called `Hello`. In its `initString` + we put in Python statements that prints the element's string + representation using pymoose-API. When ``moose.reinit()`` is + called, this causes MOOSE to execute these Python statements which + include Python calling a MOOSE function + (Python->MOOSE->Python->MOOSE) - isn't that cool! + + We also initialize a counter called `hello_count` to 0. + + The statements in initString gets executed once, when we call + ``moose.reinit()``. + + In the `runString` we put a couple of print statements to indicate + the name fof the object which is running and the current + count. Then we increase the count directly. + + When we call ``moose.start()``, the `runString` gets executed at + each time step. + + The other PyRun object we create, is `/World`. In its `initString` + apart from ordinary print statements and initialization, we define + a Python function called ``incr_count``. This silly little + function just increments the global `world_count` by 1. + + The `runString` for `World` simply calls this function to + increment the count and print it. + + We may notice that we assign tick 0 to `Hello` and tick 1 to + `World`. Looking at the output, you will realize that the + sequences of the ticks strictly maintain the sequence of + execution. + + """ + model = moose.Neutral('/model') + hello_runner = moose.PyRun('/model/Hello') + hello_runner.initString = """ +print 'Init', moose.element('/model/Hello') +hello_count = 0 +""" + hello_runner.runString = """ +print 'Running Hello' +print 'Hello count =', hello_count +hello_count += 1 +""" + hello_runner.run('from datetime import datetime') + hello_runner.run('print "Hello: current time:", datetime.now().isoformat()') + moose.useClock(0, hello_runner.path, 'process') + world_runner = moose.PyRun('World') + world_runner.initString = """ +print 'Init World' +world_count = 0 +def incr_count(): + global world_count + world_count += 1 +""" + world_runner.runString = """ +print 'Running World' +print 'World count =', world_count +incr_count() +""" + world_runner.run('from datetime import datetime') + world_runner.run('print "World: current time:", datetime.now().isoformat()') + + moose.useClock(0, world_runner.path, 'process') + moose.reinit() + moose.start(0.001) + + +def input_output(): + """The PyRun class can take a double input through `trigger` + field. Whenever another object sends an input to this field, the + `runString` is executed. + + The fun part of this is that you can use the input value in your + python statements in `runString`. This is stored in a local + variable called `input_`. You can rename this by setting `inputVar` + field. + + Things become even more interesting when you can send out a value + computed using Python. PyRun objects allow you to define a local + variable called `output` and whatever value you assign to this, + will be sent out through the source field `output` on successful + execution of the `runString`. + + You can rename the output variable by setting `outputVar` field. + + In this example, we send the output of a pulsegen object sending + out the values 1, 2, 3 during each pulse and compute the square of + these numbers in Python and set output to this square. + + The calculated value is assigned to the `output` variable and in + turn sent out to a Table object's input and gets recorded. + + By default PyRun executes the `runString` whenever a `trigger` + message is received and when its process method is called at each + timestep. In both cases it sends out the `output` value. Since + this may cause inaccuracies depending on what the Python + statements in `runString` do, a `mode` can be specified to disable + one of the above. We set ``mode = 2`` to disable the `process` + method. Note that this could also have been done by setting its + ``tick = -1``. + + ``mode = 1`` will disable `trigger` message and ``mode = 0``, the + default, enables both. + """ + model = moose.Neutral('/model') + input_pulse = moose.PulseGen('/model/pulse') + #: set the baseline output 0 + input_pulse.baseLevel = 0.0 + #: We make it generate three pulses + input_pulse.count = 3 + input_pulse.level[0] = 1.0 + input_pulse.level[1] = 2.0 + input_pulse.level[2] = 3.0 + #: Each pulse will appear 1 s after the previous one + input_pulse.delay[0] = 1.0 + input_pulse.delay[1] = 1.0 + input_pulse.delay[2] = 1.0 + #: Each pulse is 1 s wide + input_pulse.width[0] = 1.0 + input_pulse.width[1] = 1.0 + input_pulse.width[2] = 1.0 + #: Now create the PyRun object + pyrun = moose.PyRun('/model/pyrun') + pyrun.runString = """ +output = input_ * input_ +print 'input =', input_ +print 'output =', output +""" + pyrun.mode = 2 # do not run process method + moose.connect(input_pulse, 'output', pyrun, 'trigger') + output_table = moose.Table('/model/output') + moose.connect(pyrun, 'output', output_table, 'input') + input_table = moose.Table('/model/input') + moose.connect(input_pulse, 'output', input_table, 'input') + moose.setClock(0, 0.25) + moose.setClock(1, 0.25) + moose.setClock(2, 0.25) + moose.useClock(0, input_pulse.path, 'process') + #: this is unnecessary because the mode=2 ensures that `process` + #: does nothing + moose.useClock(1, pyrun.path, 'process') + moose.useClock(2, '/model/#[ISA=Table]', 'process') + moose.reinit() + moose.start(10.0) + #ts = + plt.plot(input_table.vector, label='input') + plt.plot(output_table.vector, label='output') + plt.legend() + plt.show() + +if __name__ == '__main__': + run_sequence() + moose.delete('/model') + input_output() + + + +# +# pyrun.py ends here diff --git a/examples/snippets/randomspike.py b/examples/snippets/randomspike.py new file mode 100644 index 0000000..a898840 --- /dev/null +++ b/examples/snippets/randomspike.py @@ -0,0 +1,131 @@ +# randomspike.py --- +# +# Filename: randomspike.py +# Author: Subhasis Ray +# Maintainer: +# Created: Tue Sep 30 10:58:09 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""This is an example of simulating random events from a Poisson +process and applying the event as spike input to a +single-compartmental Hodgekin-Huxley type neuron model.""" + +import sys +sys.path.append('../../python') +import os +import numpy as np +import matplotlib.pyplot as plt + +import moose +from ionchannel import create_1comp_neuron + +SIMTIME = 5.0 + +def create_cell(): + """Create a single-compartment Hodgking-Huxley neuron with a + synaptic channel. + + This uses the :func:`ionchannel.create_1comp_neuron` function for + model creation. + + Returns a dict containing the neuron, the synchan and the + synhandler for accessing the synapse, + """ + neuron = create_1comp_neuron('/neuron') + #: SynChan for post synaptic neuron + synchan = moose.SynChan('/neuron/synchan') + synchan.Gbar = 1e-8 + synchan.tau1 = 2e-3 + synchan.tau2 = 2e-3 + msg = moose.connect(neuron, 'channel', synchan, 'channel') + #: Create SynHandler to handle spike event input and set the + #: activation input of synchan + synhandler = moose.SimpleSynHandler('/neuron/synhandler') + synhandler.synapse.num = 1 + synhandler.synapse[0].delay = 5e-3 + moose.connect(synhandler, 'activationOut', synchan, 'activation') + return {'neuron': neuron, + 'synchan': synchan, + 'synhandler': synhandler} + + +def example(): + """ + The RandSpike class generates spike events from a Poisson process + and sends out a trigger via its `spikeOut` message. It is very + common to approximate the spiking in many neurons as a Poisson + process, i.e., the probability of `k` spikes in any interval `t` + is given by the Poisson distribution: + + exp(-ut)(ut)^k/k! + + for k = 0, 1, 2, ... u is the rate of spiking (the mean of the + Poisson distribution). See `wikipedia + `__ for details. + + Many cortical neuron types spontaneously fire action + potentials. These are called ectopic spikes. In this example we + simulate this with a RandSpike object with rate 10 spikes/s and + send this to a single compartmental neuron via a synapse. + + In this model the synaptic conductance is set so high that each + incoming spike evokes an action potential. + """ + ectopic = moose.RandSpike('ectopic_input') + ectopic.rate = 10.0 + cellmodel = create_cell() + moose.connect(ectopic, 'spikeOut', + cellmodel['synhandler'].synapse[0], 'addSpike') + tab_vm = moose.Table('/Vm') + moose.connect(tab_vm, 'requestOut', cellmodel['neuron'], 'getVm') + moose.reinit() + moose.start(SIMTIME) + return tab_vm + +if __name__ == '__main__': + tab_vm = example() + ts = np.linspace(0, SIMTIME, len(tab_vm.vector)) + plt.plot(ts, tab_vm.vector) + plt.ylabel('Vm (Volt)') + plt.xlabel('Time (s)') + plt.show() + +# +# randomspike.py ends here diff --git a/examples/snippets/reacDiffBranchingNeuron.py b/examples/snippets/reacDiffBranchingNeuron.py new file mode 100644 index 0000000..fa4864e --- /dev/null +++ b/examples/snippets/reacDiffBranchingNeuron.py @@ -0,0 +1,235 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +def makeModel(): + model = moose.Neutral( '/model' ) + # Make neuronal model. It has no channels, just for geometry + cell = moose.loadModel( './branching.p', '/model/cell', 'Neutral' ) + # We don't want the cell to do any calculations. Disable everything. + for i in moose.wildcardFind( '/model/cell/##' ): + i.tick = -1 + + # create container for model + model = moose.element( '/model' ) + chem = moose.Neutral( '/model/chem' ) + # The naming of the compartments is dicated by the places that the + # chem model expects to be loaded. + compt0 = moose.NeuroMesh( '/model/chem/compt0' ) + compt0.separateSpines = 0 + compt0.geometryPolicy = 'cylinder' + + #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) + makeChemModel( compt0 ) # Populate all compt with the chem system. + + compt0.diffLength = 1e-6 # This will be over 100 compartments. + # This is the magic command that configures the diffusion compartments. + compt0.subTreePath = cell.path + "/#" + moose.showfields( compt0 ) + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) + dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) + stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich0.ksolve = ksolve0 + stoich0.dsolve = dsolve0 + stoich0.path = '/model/chem/compt0/#' + assert( stoich0.numVarPools == 3 ) + assert( stoich0.numProxyPools == 0 ) + assert( stoich0.numRates == 4 ) + + num = compt0.numDiffCompts - 1 + moose.element( '/model/chem/compt0/a[' + str(num) + ']' ).concInit *= 1.5 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) + makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) + makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) + makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) + +def makeTab( plotname, molpath ): + tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table + # connect up the tables + moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); + + +def makeDisplay(): + plt.ion() + fig = plt.figure( figsize=(10,12) ) + + layout = fig.add_subplot( 211 ) + plt.ylabel( 'x position + 10*conc' ) + plt.xlabel( 'y position (microns)' ) + timeLabel = plt.text(0, 20, 'time = 0') + layout.set_xlim( -5, 75 ) + layout.set_ylim( -20, 25 ) + compt = moose.element( '/model/chem/compt0' ) + pos = compt.voxelMidpoint + i = len( pos ) / 3 + r2 = numpy.sqrt( 0.5 ) + yp = [ -r2 * pos[j] * 1e6 for j in range( i ) ] + xp = pos[i:2*i] * 1e6 - yp + #xp = [ pos[i + j] for j in range( i ) ] + #yp = [ -r2 * pos[j] for j in range( i ) ] + #line0, = layout.plot( pos[:i], pos[i:2*i] , 'bo' ) + line, = layout.plot( xp, yp, 'bo' ) + + timeSeries = fig.add_subplot( 212 ) + timeSeries.set_ylim( 0, 0.6 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + + fig.canvas.draw() + return ( timeSeries, fig, line, timeLabel, yp ) + +def updateDisplay( plotlist ): + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + plotlist[2].set_ydata( a.conc * 10 + plotlist[4] ) + + plotlist[1].canvas.draw() + + +def finalizeDisplay( plotlist, cPlotDt ): + for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = plotlist[0].plot( pos, x.vector, label=x.name ) + plt.legend() + plotlist[1].canvas.draw() + print( "Hit 'enter' to exit" ) + raw_input() + +def makeChemModel( compt ): + """ + This function sets up a simple oscillatory chemical system within + the script. The reaction system is:: + + s ---a---> a // s goes to a, catalyzed by a. + s ---a---> b // s goes to b, catalyzed by a. + a ---b---> s // a goes to s, catalyzed by b. + b -------> s // b is degraded irreversibly to s. + + in sum, **a** has a positive feedback onto itself and also forms **b**. + **b** has a negative feedback onto **a**. + Finally, the diffusion constant for **a** is 1/10 that of **b**. + """ + # create container for model + diffConst = 10e-12 # m^2/sec + motorRate = 1e-6 # m/sec + concA = 1 # millimolar + + # create molecules and reactions + a = moose.Pool( compt.path + '/a' ) + b = moose.Pool( compt.path + '/b' ) + s = moose.Pool( compt.path + '/s' ) + e1 = moose.MMenz( compt.path + '/e1' ) + e2 = moose.MMenz( compt.path + '/e2' ) + e3 = moose.MMenz( compt.path + '/e3' ) + r1 = moose.Reac( compt.path + '/r1' ) + + a.concInit = 0.1 + b.concInit = 0.1 + s.concInit = 1 + + moose.connect( e1, 'sub', s, 'reac' ) + moose.connect( e1, 'prd', a, 'reac' ) + moose.connect( a, 'nOut', e1, 'enzDest' ) + e1.Km = 1 + e1.kcat = 1 + + moose.connect( e2, 'sub', s, 'reac' ) + moose.connect( e2, 'prd', b, 'reac' ) + moose.connect( a, 'nOut', e2, 'enzDest' ) + e2.Km = 1 + e2.kcat = 0.5 + + moose.connect( e3, 'sub', a, 'reac' ) + moose.connect( e3, 'prd', s, 'reac' ) + moose.connect( b, 'nOut', e3, 'enzDest' ) + e3.Km = 0.1 + e3.kcat = 1 + + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'prd', s, 'reac' ) + r1.Kf = 0.3 # 1/sec + r1.Kb = 0 # 1/sec + + # Assign parameters + a.diffConst = diffConst/10 + b.diffConst = diffConst + s.diffConst = 0 + +def main(): + """ + reacDiffBranchingNeuron: + This example illustrates how to define a kinetic model embedded in + the branching pseudo 1-dimensional geometry of a neuron. This means + that diffusion only happens along the axis of dendritic segments, not + radially from inside to outside a dendrite, nor tangentially around + the dendrite circumference. The model + oscillates in space and time due to a Turing-like reaction-diffusion + mechanism present in all compartments. For the sake of this demo, + the initial conditions are set to be slightly different on one of the + terminal dendrites, so as to break the symmetry and initiate + oscillations. + This example uses an external model file to specify a binary branching + neuron. This model does not have any spines. The electrical model is + used here purely for the geometry and is not part of the computations. + In this example we build an identical chemical model throughout the + neuronal geometry, using the makeChemModel function. + The model is set up to run using the Ksolve for integration and the + Dsolve for handling diffusion. + + The display has two parts: + + a. Animated pseudo-3D plot of neuronal geometry, where each point + represents a diffusive voxel and moves in the y-axis to show + changes in concentration. + b. Time-series plot that appears after the simulation has + ended. The plots are for the first and last diffusive voxel, + that is, the soma and the tip of one of the apical dendrites. + + """ + chemdt = 0.1 # Tested various dts, this is reasonable. + diffdt = 0.01 + plotdt = 1 + animationdt = 5 + runtime = 750 + + makeModel() + plotlist = makeDisplay() + + # Schedule the whole lot. Autoscheduling already takes care of these + ''' + for i in range( 11, 17 ): + moose.setClock( i, chemdt ) # for the chem objects + moose.setClock( 10, diffdt ) # for the diffusion + moose.setClock( 18, plotdt ) # for the output tables. + ''' + moose.reinit() + for i in range( 0, runtime, animationdt ): + moose.start( animationdt ) + plotlist[3].set_text( "time = %d" % i ) + updateDisplay( plotlist ) + + finalizeDisplay( plotlist, plotdt ) + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/reacDiffConcGradient.py b/examples/snippets/reacDiffConcGradient.py new file mode 100644 index 0000000..80cf463 --- /dev/null +++ b/examples/snippets/reacDiffConcGradient.py @@ -0,0 +1,161 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + + +import math +import pylab +import numpy +import moose + +diffConst = 1e-12 + +def makeCyl( num, concInit, radius, x0, x1 ): + compt = moose.CylMesh( '/model/compt' + num ) + compt.x0 = x0 + compt.x1 = x1 + compt.y0 = 0 + compt.y1 = 0 + compt.z0 = 0 + compt.z1 = 0 + compt.r0 = radius + compt.r1 = radius + compt.diffLength = x1-x0 + a = moose.Pool( compt.path + '/a' ) + b = moose.Pool( compt.path + '/b' + num ) + reac = moose.Reac( compt.path + '/reac' ) + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + a.diffConst = diffConst + a.concInit = concInit + b.concInit = concInit + reac.Kf = 0.1 + reac.Kb = 0.1 + return a, b, compt + +def makeModel(): + radius = 1e-6 + len0 = 4e-6 + len1 = 2e-6 + len2 = 1e-6 + # create container for model + model = moose.Neutral( 'model' ) + a0, b0, compt0 = makeCyl( '0', 1, radius, -len0, 0 ) + a1, b1, compt1 = makeCyl( '1', 2, radius, 0, len1 ) + a2, b2, compt2 = makeCyl( '2', 6, radius, len1, len1 + len2 ) + + print('Volumes = ', compt0.volume, compt1.volume, compt2.volume) + + # create molecules and reactions + reac0 = moose.Reac( '/model/compt1/reac0' ) + reac1 = moose.Reac( '/model/compt1/reac1' ) + + # connect them up for reactions + moose.connect( reac0, 'sub', b0, 'reac' ) + moose.connect( reac0, 'prd', b1, 'reac' ) + moose.connect( reac1, 'sub', b1, 'reac' ) + moose.connect( reac1, 'prd', b2, 'reac' ) + + # Assign parameters + reac0.Kf = 0.5 + reac0.Kb = 0.05 + reac1.Kf = 0.5 + reac1.Kb = 0.05 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA0 = moose.Table2 ( '/model/graphs/concA0' ) + outputA1 = moose.Table2 ( '/model/graphs/concA1' ) + outputA2 = moose.Table2 ( '/model/graphs/concA2' ) + + # connect up the tables + moose.connect( outputA0, 'requestOut', a0, 'getConc' ); + moose.connect( outputA1, 'requestOut', a1, 'getConc' ); + moose.connect( outputA2, 'requestOut', a2, 'getConc' ); + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/compt0/ksolve0' ) + ksolve1 = moose.Ksolve( '/model/compt1/ksolve1' ) + ksolve2 = moose.Ksolve( '/model/compt2/ksolve2' ) + dsolve0 = moose.Dsolve( '/model/compt0/dsolve0' ) + dsolve1 = moose.Dsolve( '/model/compt1/dsolve1' ) + dsolve2 = moose.Dsolve( '/model/compt2/dsolve2' ) + stoich0 = moose.Stoich( '/model/compt0/stoich0' ) + stoich1 = moose.Stoich( '/model/compt1/stoich1' ) + stoich2 = moose.Stoich( '/model/compt2/stoich2' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + stoich0.dsolve = dsolve0 + stoich1.dsolve = dsolve1 + stoich2.dsolve = dsolve2 + stoich0.path = '/model/compt0/#' + stoich1.path = '/model/compt1/#' + stoich2.path = '/model/compt2/#' + dsolve1.buildMeshJunctions( dsolve0 ) + dsolve1.buildMeshJunctions( dsolve2 ) + stoich1.buildXreacs( stoich0 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + + +def main(): + """ + This example shows how to maintain a conc gradient against diffusion :: + + compt0 compt1 compt 2 + a ......... a .......... a [Diffusion between compts] + |\ |\ |\ + | | | [Reacs within compts] + \| \| \| + b0 <------->b1 <--------b2 [Reacs between compts] + + 4x 2x 1x [Ratios of vols of compts] + + If there is no diffusion then the ratio of concs should be 1:10:100 + If there is no x-compt reac, then clearly the concs should all be + the same, in this case they should be 2.0. + If both are happening then the final concs are 1.4, 2.5, 3.4. + """ + simdt = 0.1 + plotdt = 0.1 + runtime = 100.0 + + makeModel() + + # MOOSE autoschedules everything. + moose.reinit() + moose.start( runtime ) # Run the model for 100 seconds. + initTot = 0 + tot = 0 + for x in moose.wildcardFind( '/model/compt#/#[ISA=PoolBase]' ): + print(x.name, x.conc) + tot += x.n + initTot += x.nInit + print("Totals: expected = ", initTot, ", got: ", tot) + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.linspace( 0, runtime, x.vector.size ) # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/reacDiffSpinyNeuron.py b/examples/snippets/reacDiffSpinyNeuron.py new file mode 100644 index 0000000..2edb86b --- /dev/null +++ b/examples/snippets/reacDiffSpinyNeuron.py @@ -0,0 +1,297 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +def makeModel(): + model = moose.Neutral( '/model' ) + # Make neuronal model. It has no channels, just for geometry + cell = moose.loadModel( './spinyNeuron.p', '/model/cell', 'Neutral' ) + # We don't want the cell to do any calculations. Disable everything. + for i in moose.wildcardFind( '/model/cell/##' ): + i.tick = -1 + + diffConst = 0.0 + # create container for model + model = moose.element( '/model' ) + chem = moose.Neutral( '/model/chem' ) + # The naming of the compartments is dicated by the places that the + # chem model expects to be loaded. + compt0 = moose.NeuroMesh( '/model/chem/compt0' ) + compt0.separateSpines = 1 + compt0.geometryPolicy = 'cylinder' + compt1 = moose.SpineMesh( '/model/chem/compt1' ) + moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) + compt2 = moose.PsdMesh( '/model/chem/compt2' ) + moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) + + #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) + makeChemModel( compt0 ) # Populate all 3 compts with the chem system. + makeChemModel( compt1 ) + makeChemModel( compt2 ) + + compt0.diffLength = 2e-6 # This will be over 100 compartments. + # This is the magic command that configures the diffusion compartments. + compt0.subTreePath = cell.path + "/#" + moose.showfields( compt0 ) + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) + ksolve1 = moose.Ksolve( '/model/chem/compt1/ksolve' ) + ksolve2 = moose.Ksolve( '/model/chem/compt2/ksolve' ) + dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) + dsolve1 = moose.Dsolve( '/model/chem/compt1/dsolve' ) + dsolve2 = moose.Dsolve( '/model/chem/compt2/dsolve' ) + stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) + stoich1 = moose.Stoich( '/model/chem/compt1/stoich' ) + stoich2 = moose.Stoich( '/model/chem/compt2/stoich' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich1.compartment = compt1 + stoich2.compartment = compt2 + stoich0.ksolve = ksolve0 + stoich1.ksolve = ksolve1 + stoich2.ksolve = ksolve2 + stoich0.dsolve = dsolve0 + stoich1.dsolve = dsolve1 + stoich2.dsolve = dsolve2 + stoich0.path = '/model/chem/compt0/#' + stoich1.path = '/model/chem/compt1/#' + stoich2.path = '/model/chem/compt2/#' + assert( stoich0.numVarPools == 3 ) + assert( stoich0.numProxyPools == 0 ) + assert( stoich0.numRates == 4 ) + assert( stoich1.numVarPools == 3 ) + assert( stoich1.numProxyPools == 0 ) + assert( stoich1.numRates == 4 ) + assert( stoich2.numVarPools == 3 ) + assert( stoich2.numProxyPools == 0 ) + assert( stoich2.numRates == 4 ) + dsolve0.buildNeuroMeshJunctions( dsolve1, dsolve2 ) + stoich0.buildXreacs( stoich1 ) + stoich1.buildXreacs( stoich2 ) + stoich0.filterXreacs() + stoich1.filterXreacs() + stoich2.filterXreacs() + + moose.element( '/model/chem/compt2/a[0]' ).concInit *= 1.5 + + # Create the output tables + num = compt0.numDiffCompts - 1 + graphs = moose.Neutral( '/model/graphs' ) + moose.le( '/model/chem/compt1' ) + a = moose.element( '/model/chem/compt1' ) + print a.voxelVolume + makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) + makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) + makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) + makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) + makeTab( 'a_spine', '/model/chem/compt1/a[5]' ) + makeTab( 'b_spine', '/model/chem/compt1/b[5]' ) + makeTab( 'a_psd', '/model/chem/compt2/a[5]' ) + makeTab( 'b_psd', '/model/chem/compt2/b[5]' ) + +def makeTab( plotname, molpath ): + tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table + # connect up the tables + moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); + + +def makeDisplay(): + plt.ion() + fig = plt.figure( figsize=(10,12) ) + + dend = fig.add_subplot( 411 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Dend voxel #' ) + plt.legend() + timeLabel = plt.text(200, 0.5, 'time = 0') + + spine = fig.add_subplot( 412 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Spine voxel #' ) + plt.legend() + + psd = fig.add_subplot( 413 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'PSD voxel #' ) + plt.legend() + + timeSeries = fig.add_subplot( 414 ) + timeSeries.set_ylim( 0, 0.6 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + plt.legend() + + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + line1, = dend.plot( range( len( a ) ), a.conc, label='a' ) + line2, = dend.plot( range( len( b ) ), b.conc, label='b' ) + dend.set_ylim( 0, 0.6 ) + + a = moose.vec( '/model/chem/compt1/a' ) + b = moose.vec( '/model/chem/compt1/b' ) + line3, = spine.plot( range( len( a ) ), a.conc, label='a' ) + line4, = spine.plot( range( len( b ) ), b.conc, label='b' ) + spine.set_ylim( 0, 0.6 ) + + a = moose.vec( '/model/chem/compt2/a' ) + b = moose.vec( '/model/chem/compt2/b' ) + line5, = psd.plot( range( len( a ) ), a.conc, label='a' ) + line6, = psd.plot( range( len( b ) ), b.conc, label='b' ) + psd.set_ylim( 0, 0.6 ) + + fig.canvas.draw() + return ( timeSeries, dend, spine, psd, fig, line1, line2, line3, line4, line5, line6, timeLabel ) + +def updateDisplay( plotlist ): + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + plotlist[5].set_ydata( a.conc ) + plotlist[6].set_ydata( b.conc ) + + a = moose.vec( '/model/chem/compt1/a' ) + b = moose.vec( '/model/chem/compt1/b' ) + plotlist[7].set_ydata( a.conc ) + plotlist[8].set_ydata( b.conc ) + + a = moose.vec( '/model/chem/compt2/a' ) + b = moose.vec( '/model/chem/compt2/b' ) + plotlist[9].set_ydata( a.conc ) + plotlist[10].set_ydata( b.conc ) + plotlist[4].canvas.draw() + + +def finalizeDisplay( plotlist, cPlotDt ): + for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = plotlist[0].plot( pos, x.vector, label=x.name ) + plotlist[4].canvas.draw() + print( "Hit 'enter' to exit" ) + raw_input() + +def makeChemModel( compt ): + """ + This function setus up a simple oscillatory chemical system within + the script. The reaction system is:: + + s ---a---> a // s goes to a, catalyzed by a. + s ---a---> b // s goes to b, catalyzed by a. + a ---b---> s // a goes to s, catalyzed by b. + b -------> s // b is degraded irreversibly to s. + + in sum, **a** has a positive feedback onto itself and also forms **b**. + **b** has a negative feedback onto **a**. + Finally, the diffusion constant for **a** is 1/10 that of **b**. + """ + # create container for model + diffConst = 10e-12 # m^2/sec + motorRate = 1e-6 # m/sec + concA = 1 # millimolar + + # create molecules and reactions + a = moose.Pool( compt.path + '/a' ) + b = moose.Pool( compt.path + '/b' ) + s = moose.Pool( compt.path + '/s' ) + e1 = moose.MMenz( compt.path + '/e1' ) + e2 = moose.MMenz( compt.path + '/e2' ) + e3 = moose.MMenz( compt.path + '/e3' ) + r1 = moose.Reac( compt.path + '/r1' ) + + a.concInit = 0.1 + b.concInit = 0.1 + s.concInit = 1 + + moose.connect( e1, 'sub', s, 'reac' ) + moose.connect( e1, 'prd', a, 'reac' ) + moose.connect( a, 'nOut', e1, 'enzDest' ) + e1.Km = 1 + e1.kcat = 1 + + moose.connect( e2, 'sub', s, 'reac' ) + moose.connect( e2, 'prd', b, 'reac' ) + moose.connect( a, 'nOut', e2, 'enzDest' ) + e2.Km = 1 + e2.kcat = 0.5 + + moose.connect( e3, 'sub', a, 'reac' ) + moose.connect( e3, 'prd', s, 'reac' ) + moose.connect( b, 'nOut', e3, 'enzDest' ) + e3.Km = 0.1 + e3.kcat = 1 + + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'prd', s, 'reac' ) + r1.Kf = 0.3 # 1/sec + r1.Kb = 0 # 1/sec + + # Assign parameters + a.diffConst = diffConst/10 + b.diffConst = diffConst + s.diffConst = 0 + +def main(): + """ + This example illustrates how to define a kinetic model embedded in + the branching pseudo-1-dimensional geometry of a neuron. The model + oscillates in space and time due to a Turing-like reaction-diffusion + mechanism present in all compartments. For the sake of this demo, + the initial conditions are set up slightly different on the PSD + compartments, so as to break the symmetry and initiate oscillations + in the spines. + This example uses an external electrical model file with basal + dendrite and three branches on + the apical dendrite. One of those branches has a dozen or so spines. + In this example we build an identical model in each compartment, using + the makeChemModel function. One could readily define a system with + distinct reactions in each compartment. + The model is set up to run using the Ksolve for integration and the + Dsolve for handling diffusion. + The display has four parts: + + a. animated line plot of concentration against main compartment#. + b. animated line plot of concentration against spine compartment#. + c. animated line plot of concentration against psd compartment#. + d. time-series plot that appears after the simulation has + ended. The plot is for the last (rightmost) compartment. + + """ + chemdt = 0.1 # Tested various dts, this is reasonable. + diffdt = 0.01 + plotdt = 1 + animationdt = 5 + runtime = 800 + + makeModel() + plotlist = makeDisplay() + + # Schedule the whole lot - autoscheduling already does this. + ''' + for i in range( 11, 17 ): + moose.setClock( i, chemdt ) # for the chem objects + moose.setClock( 10, diffdt ) # for the diffusion + moose.setClock( 18, plotdt ) # for the output tables. + ''' + moose.reinit() + for i in range( 0, runtime, animationdt ): + moose.start( animationdt ) + plotlist[11].set_text( "time = %d" % i ) + updateDisplay( plotlist ) + + finalizeDisplay( plotlist, plotdt ) + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/recurrentIntFire.py b/examples/snippets/recurrentIntFire.py new file mode 100644 index 0000000..6a480cc --- /dev/null +++ b/examples/snippets/recurrentIntFire.py @@ -0,0 +1,110 @@ +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ +# This snippet sets up a recurrent network of IntFire objects, using +# SimpleSynHandlers to deal with spiking events. +# It isn't very satisfactory as activity runs down after a while. +# It is a good example for using the IntFire, setting up random +# connectivity, and using SynHandlers. +# +import os +import random +import time +import pylab +from numpy import random as nprand +import sys +sys.path.append('/home/subha/src/moose_async13/python') +import moose + +def make_network(): + size = 1024 + dt = 0.2 + runsteps = 50 + delayMin = 0 + delayMax = 4 + weightMax = 1 + Vmax = 1.0 + thresh = 0.4 + refractoryPeriod = 0.4 + tau = 0.5 + connectionProbability = 0.01 + random.seed( 123 ) + nprand.seed( 456 ) + t0 = time.time() + + network = moose.IntFire( 'network', size ); + syns = moose.SimpleSynHandler( '/network/syns', size ); + moose.connect( syns, 'activationOut', network, 'activation', 'OneToOne' ) + moose.le( '/network' ) + syns.vec.numSynapses = [1] * size + sv = moose.vec( '/network/syns/synapse' ) + print 'before connect t = ', time.time() - t0 + mid = moose.connect( network, 'spikeOut', sv, 'addSpike', 'Sparse') + print 'after connect t = ', time.time() - t0 + #print mid.destFields + m2 = moose.element( mid ) + m2.setRandomConnectivity( connectionProbability, 5489 ) + print 'after setting connectivity, t = ', time.time() - t0 + #network.vec.Vm = [(Vmax*random.random()) for r in range(size)] + network.vec.Vm = nprand.rand( size ) * Vmax + network.vec.thresh = thresh + network.vec.refractoryPeriod = refractoryPeriod + network.vec.tau = tau + numSynVec = syns.vec.numSynapses + print 'Middle of setup, t = ', time.time() - t0 + numTotSyn = sum( numSynVec ) + print numSynVec.size, ', tot = ', numTotSyn, ', numSynVec = ', numSynVec + for item in syns.vec: + sh = moose.element( item ) + sh.synapse.delay = delayMin + (delayMax - delayMin ) * nprand.rand( len( sh.synapse ) ) + #sh.synapse.delay = [ (delayMin + random.random() * (delayMax - delayMin ) for r in range( len( sh.synapse ) ) ] + sh.synapse.weight = nprand.rand( len( sh.synapse ) ) * weightMax + print 'after setup, t = ', time.time() - t0 + + numStats = 100 + stats = moose.SpikeStats( '/stats', numStats ) + stats.vec.windowLength = 1 # timesteps to put together. + plots = moose.Table( '/plot', numStats ) + convergence = size / numStats + for i in range( numStats ): + for j in range( size/numStats ): + k = i * convergence + j + moose.connect( network.vec[k], 'spikeOut', stats.vec[i], 'addSpike' ) + moose.connect( plots, 'requestOut', stats, 'getMean', 'OneToOne' ) + + #moose.useClock( 0, '/network/syns,/network', 'process' ) + moose.useClock( 0, '/network/syns', 'process' ) + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/stats', 'process' ) + moose.useClock( 3, '/plot', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + moose.setClock( 9, dt ) + t1 = time.time() + moose.reinit() + print 'reinit time t = ', time.time() - t1 + network.vec.Vm = nprand.rand( size ) * Vmax + print 'setting Vm , t = ', time.time() - t1 + t1 = time.time() + print 'starting' + moose.start(runsteps * dt) + print 'runtime, t = ', time.time() - t1 + print network.vec.Vm[99:103], network.vec.Vm[900:903] + t = [i * dt for i in range( plots.vec[0].vector.size )] + i = 0 + for p in plots.vec: + pylab.plot( t, p.vector, label=str( i) ) + i += 1 + pylab.xlabel( "Time (s)" ) + pylab.ylabel( "Vm (mV)" ) + pylab.legend() + pylab.show() + +make_network() diff --git a/examples/snippets/recurrentLIF.py b/examples/snippets/recurrentLIF.py new file mode 100644 index 0000000..6f00fdf --- /dev/null +++ b/examples/snippets/recurrentLIF.py @@ -0,0 +1,111 @@ +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ +# This snippet sets up a recurrent network of LIF objects, using +# SimpleSynHandlers to deal with spiking events. +# It isn't very satisfactory as activity runs down after a while. +# It is a good example for using the LIF, setting up random +# connectivity, and using SynHandlers. +# +import os +import random +import time +import pylab +from numpy import random as nprand +import sys +sys.path.append('/home/subha/src/moose_async13/python') +import moose + +def make_network(): + size = 1024 + dt = 0.2 + runsteps = 50 + delayMin = 0 + delayMax = 4 + weightMax = 1 + Vmax = 1.0 + thresh = 0.4 + refractoryPeriod = 0.4 + tau = 0.5 + connectionProbability = 0.01 + random.seed( 123 ) + nprand.seed( 456 ) + t0 = time.time() + + network = moose.LIF( 'network', size ); + syns = moose.SimpleSynHandler( '/network/syns', size ); + moose.connect( syns, 'activationOut', network, 'activation', 'OneToOne' ) + moose.le( '/network' ) + syns.vec.numSynapses = [1] * size + sv = moose.vec( '/network/syns/synapse' ) + print 'before connect t = ', time.time() - t0 + mid = moose.connect( network, 'spikeOut', sv, 'addSpike', 'Sparse') + print 'after connect t = ', time.time() - t0 + #print mid.destFields + m2 = moose.element( mid ) + m2.setRandomConnectivity( connectionProbability, 5489 ) + print 'after setting connectivity, t = ', time.time() - t0 + #network.vec.Vm = [(Vmax*random.random()) for r in range(size)] + network.vec.Vm = nprand.rand( size ) * Vmax + network.vec.thresh = thresh + network.vec.refractoryPeriod = refractoryPeriod + network.vec.Rm = 1e10 + network.vec.Cm = 5e-9 + numSynVec = syns.vec.numSynapses + print 'Middle of setup, t = ', time.time() - t0 + numTotSyn = sum( numSynVec ) + print numSynVec.size, ', tot = ', numTotSyn, ', numSynVec = ', numSynVec + for item in syns.vec: + sh = moose.element( item ) + sh.synapse.delay = delayMin + (delayMax - delayMin ) * nprand.rand( len( sh.synapse ) ) + #sh.synapse.delay = [ (delayMin + random.random() * (delayMax - delayMin ) for r in range( len( sh.synapse ) ) ] + sh.synapse.weight = nprand.rand( len( sh.synapse ) ) * weightMax + print 'after setup, t = ', time.time() - t0 + + numStats = 100 + stats = moose.SpikeStats( '/stats', numStats ) + stats.vec.windowLength = 1 # timesteps to put together. + plots = moose.Table( '/plot', numStats ) + convergence = size / numStats + for i in range( numStats ): + for j in range( size/numStats ): + k = i * convergence + j + moose.connect( network.vec[k], 'spikeOut', stats.vec[i], 'addSpike' ) + moose.connect( plots, 'requestOut', stats, 'getMean', 'OneToOne' ) + + #moose.useClock( 0, '/network/syns,/network', 'process' ) + moose.useClock( 0, '/network/syns', 'process' ) + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/stats', 'process' ) + moose.useClock( 3, '/plot', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + moose.setClock( 9, dt ) + t1 = time.time() + moose.reinit() + print 'reinit time t = ', time.time() - t1 + network.vec.Vm = nprand.rand( size ) * Vmax + print 'setting Vm , t = ', time.time() - t1 + t1 = time.time() + print 'starting' + moose.start(runsteps * dt) + print 'runtime, t = ', time.time() - t1 + print network.vec.Vm[99:103], network.vec.Vm[900:903] + t = [i * dt for i in range( plots.vec[0].vector.size )] + i = 0 + for p in plots.vec: + pylab.plot( t, p.vector, label=str( i) ) + i += 1 + pylab.xlabel( "Time (s)" ) + pylab.ylabel( "Rate (Hz)" ) + pylab.legend() + pylab.show() + +make_network() diff --git a/examples/snippets/rxdFuncDiffusion.py b/examples/snippets/rxdFuncDiffusion.py new file mode 100644 index 0000000..142341d --- /dev/null +++ b/examples/snippets/rxdFuncDiffusion.py @@ -0,0 +1,69 @@ +import numpy +import pylab +import moose +import time +import sys + +''' +This example implements a reaction-diffusion like system which is +bistable and propagates losslessly. It is based on the NEURON example +rxdrun.py, but incorporates more compartments and runs for a longer time. +The system is implemented in a function rather than as a proper system +of chemical reactions. Please see rxdReacDiffusion.py for a variant that +uses a reaction plus a function object to control its rates. +''' + +dt = 0.1 + +# define the geometry +compt = moose.CylMesh( '/cylinder' ) +compt.r0 = compt.r1 = 1 +compt.x1 = 100 +compt.diffLength = 0.2 +assert( compt.numDiffCompts == compt.x1/compt.diffLength ) + +#define the molecule. Its geometry is defined by its parent volume, cylinder +c = moose.Pool( '/cylinder/pool' ) +c.diffConst = 1 # define diffusion constant + +# Here we set up a function calculation +func = moose.Function( '/cylinder/pool/func' ) +func.expr = "-x0 * (0.3 - x0) * (1 - x0)" +func.x.num = 1 #specify number of input variables. + +#Connect the molecules to the func +moose.connect( c, 'nOut', func.x[0], 'input' ) +#Connect the function to the pool +moose.connect( func, 'valueOut', c, 'increment' ) + +#Set up solvers +ksolve = moose.Ksolve( '/cylinder/ksolve' ) +dsolve = moose.Dsolve( '/cylinder/dsolve' ) +stoich = moose.Stoich( '/cylinder/stoich' ) +stoich.ksolve = ksolve +stoich.dsolve = dsolve +stoich.compartment = compt +stoich.path = '/cylinder/##' + +#initialize +x = numpy.arange( 0, compt.x1, compt.diffLength ) +c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] + +# Run and plot it. +moose.reinit() +updateDt = 50 +runtime = updateDt * 4 +plt = pylab.plot( x, c.vec.n, label='t = 0 ') +t1 = time.time() +for t in range( 0, runtime-1, updateDt ): + moose.start( updateDt ) + plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) + +print("Time = %s " % ( time.time() - t1) ) +pylab.ylim( 0, 1.05 ) +pylab.legend() +pylab.show( ) +# outfile = '%s.png' % sys.argv[0] +# pylab.savefig( outfile ) +# print( '[INFO] Wrote results to %s' % outfile ) + diff --git a/examples/snippets/rxdFuncDiffusionStoch.py b/examples/snippets/rxdFuncDiffusionStoch.py new file mode 100644 index 0000000..64883f0 --- /dev/null +++ b/examples/snippets/rxdFuncDiffusionStoch.py @@ -0,0 +1,71 @@ +import numpy +import pylab +import moose +import time + +''' +This example implements a reaction-diffusion like system which is +bistable and propagates losslessly. It is based on the NEURON example +rxdrun.py, but incorporates more compartments and runs for a longer time. +The system is implemented in a function rather than as a proper system +of chemical reactions. Please see rxdReacDiffusion.py for a variant that +uses a reaction plus a function object to control its rates. +''' + +dt = 0.1 + +# define the geometry +compt = moose.CylMesh( '/cylinder' ) +compt.r0 = compt.r1 = 100e-9 +compt.x1 = 100e-9 +compt.diffLength = 0.2e-9 +assert( compt.numDiffCompts == compt.x1/compt.diffLength ) + +#define the molecule. Its geometry is defined by its parent volume, cylinder +c = moose.Pool( '/cylinder/pool' ) +c.diffConst = 1e-13 # define diffusion constant + + +# Here we set up a function calculation +func = moose.Function( '/cylinder/pool/func' ) +func.expr = "(-x0 * (30e-9 - x0) * (100e-9 - x0))*0.0001" +func.x.num = 1 #specify number of input variables. + +#Connect the molecules to the func +moose.connect( c, 'nOut', func.x[0], 'input' ) +#Connect the function to the pool +moose.connect( func, 'valueOut', c, 'increment' ) + +#Set up solvers +ksolve = moose.Gsolve( '/cylinder/Gsolve' ) +dsolve = moose.Dsolve( '/cylinder/dsolve' ) +stoich = moose.Stoich( '/cylinder/stoich' ) +stoich.compartment = compt +stoich.ksolve = ksolve +stoich.dsolve = dsolve +stoich.path = '/cylinder/##' + +#for i in range( 10, 18 ): +# moose.setClock( i, dt ) + +#initialize +x = numpy.arange( 0, compt.x1, compt.diffLength ) +# c.vec.nInit = [ 100.0 * (q < 0.2 * compt.x1) for q in x ] +c.vec.nInit = [ 100 for q in x ] + +# Run and plot it. +moose.reinit() +print dir(compt) +updateDt = 50 +runtime = updateDt * 4 +plt = pylab.plot( x, c.vec.n, label='t = 0 ') +t1 = time.time() +for t in range( 0, runtime-1, updateDt ): + moose.start( updateDt ) + plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) +print "Time = ", time.time() - t1 + +pylab.ylim( 0, 105 ) +pylab.legend() +pylab.show() + diff --git a/examples/snippets/rxdReacDiffusion.py b/examples/snippets/rxdReacDiffusion.py new file mode 100644 index 0000000..b6b1ada --- /dev/null +++ b/examples/snippets/rxdReacDiffusion.py @@ -0,0 +1,79 @@ +import numpy +import pylab +import moose +import time + +''' +This example implements a reaction-diffusion like system which is +bistable and propagates losslessly. It is based on the NEURON example +rxdrun.py, but incorporates more compartments and runs for a longer time. +The system is implemented as a hybrid of a reaction and a function which +sets its rates. Please see rxdFuncDiffusion.py for a variant that uses +just a function object to set up the system. +''' + +dt = 0.1 + +# define the geometry +compt = moose.CylMesh( '/cylinder' ) +compt.r0 = compt.r1 = 1 +compt.x1 = 100 +compt.diffLength = 0.2 +assert( compt.numDiffCompts == compt.x1/compt.diffLength ) + +#define the molecule. Its geometry is defined by its parent volume, cylinder +c = moose.Pool( '/cylinder/pool' ) +c.diffConst = 1 # define diffusion constant +# There is an implicit reaction substrate/product. MOOSE makes it explicit. +buf = moose.BufPool( '/cylinder/buf' ) +buf.nInit = 1 + +# The reaction is something entirely peculiar, not a chemical thing. +reaction = moose.Reac( '/cylinder/reac' ) +reaction.Kb = 0 + +# so here we set up a function calculation to do the same thing. +func = moose.Function( '/cylinder/reac/func' ) +func.expr = "(1 - x0) * (0.3 - x0)" +func.x.num = 1 #specify number of input variables. + +#Connect the reaction to the pools +moose.connect( reaction, 'sub', c, 'reac' ) +moose.connect( reaction, 'prd', buf, 'reac' ) + +#Connect the function to the reaction +moose.connect( func, 'valueOut', reaction, 'setNumKf' ) + +#Connect the molecules to the func +moose.connect( c, 'nOut', func.x[0], 'input' ) + +#Set up solvers +ksolve = moose.Ksolve( '/cylinder/ksolve' ) +dsolve = moose.Dsolve( '/cylinder/dsolve' ) +stoich = moose.Stoich( '/cylinder/stoich' ) +stoich.compartment = compt +stoich.ksolve = ksolve +stoich.dsolve = dsolve +stoich.path = '/cylinder/##' +for i in range( 10, 18 ): + moose.setClock( i, dt ) + +#initialize +x = numpy.arange( 0, compt.x1, compt.diffLength ) +c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] + +# Run and plot it. +moose.reinit() +updateDt = 50 +runtime = updateDt * 4 +plt = pylab.plot( x, c.vec.n, label='t = 0 ') +t1 = time.time() +for t in range( 0, runtime-1, updateDt ): + moose.start( updateDt ) + plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) +print "Time = ", time.time() - t1 + +pylab.ylim( 0, 1.05 ) +pylab.legend() +pylab.show() + diff --git a/examples/snippets/rxdSpineSize.py b/examples/snippets/rxdSpineSize.py new file mode 100644 index 0000000..1d071ab --- /dev/null +++ b/examples/snippets/rxdSpineSize.py @@ -0,0 +1,293 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## rxdSpineSize.py: Builds a cell with spines and a propagating reaction +## wave. Products diffuse into the spine and cause it to get bigger. +################################################################## +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +sys.path.append( '../util' ) +import rdesigneur as rd +from PyQt4 import QtGui +import moogli +import moogli.extensions.moose +import matplotlib + +PI = 3.141592653 +ScalingForTesting = 10 +RM = 1.0 / ScalingForTesting +RA = 1.0 * ScalingForTesting +CM = 0.01 * ScalingForTesting +runtime = 100.0 +frameruntime = 1.0 +diffConst = 5e-12 +dendLen = 100e-6 +diffLen = 1.0e-6 +dendDia = 2e-6 +somaDia = 5e-6 +concInit = 0.001 # 1 millimolar +spineSpacing = 10e-6 +spineSpacingDistrib = 1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle= numpy.pi / 2.0 +spineAngleDistrib = 0.0 + +def makeCellProto( name ): + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) + dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) + moose.connect( soma, 'axial', dend, 'raxial' ) + elec.buildSegmentTree() + +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + comptVol = diffLen * dendDia * dendDia * PI / 4.0 + for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i[0] ) + compt.volume = i[1] + #x = moose.Pool( compt.path + '/x' ) + #y = moose.BufPool( compt.path + '/y' ) + z = moose.Pool( compt.path + '/z' ) + #x.concInit = 0.0 + #x.diffConst = diffConst + #y.concInit = concInit + z.concInit = 0.0 + z.diffConst = diffConst + nInit = comptVol * 6e23 * concInit + nstr = str( 1/nInit) + + x = moose.Pool( chem.path + '/dend/x' ) + x.diffConst = diffConst + func = moose.Function( x.path + '/func' ) + func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" + print func.expr + func.x.num = 1 + moose.connect( x, 'nOut', func.x[0], 'input' ) + moose.connect( func, 'valueOut', x, 'increment' ) + z = moose.element( '/library/' + name + '/dend/z' ) + reac = moose.Reac( '/library/' + name + '/dend/reac' ) + reac.Kf = 1 + reac.Kb = 10 + moose.connect( reac, 'sub', x, 'reac' ) + moose.connect( reac, 'prd', z, 'reac' ) + +def makeSpineProto2( name ): + spine = moose.Neutral( '/library/' + name ) + shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) + head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def makeModel(): + moose.Neutral( '/library' ) + makeCellProto( 'cellProto' ) + makeChemProto( 'cProto' ) + makeSpineProto2( 'spine' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + stealCellFromLibrary = True, \ + diffusionLength = 1e-6, \ + cellProto = [['cellProto', 'elec' ]] ,\ + spineProto = [['spineProto', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "dend", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + x = moose.vec( '/model/chem/dend/x' ) + x.concInit = 0.0 + for i in range( 0,20 ): + x[i].concInit = concInit + +def makePlot( name, srcVec, field ): + tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec + for i in zip(srcVec, tab): + moose.connect(i[1], 'requestOut', i[0], field) + return tab + + +def displayPlots(): + for x in moose.wildcardFind( '/graphs/#[0]' ): + tab = moose.vec( x ) + for i in range( len( tab ) ): + pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) + pylab.legend() + pylab.figure() + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and then to resize them using spine fields. These are the + fields that would be changed dynamically in a simulation with reactions + that affect spine geometry. + In this simulation there is a propagating reaction wave using a + highly abstracted equation, whose product diffuses into the spines and + makes them bigger. + """ + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + makePlot( 'headDia', eHead, 'getDiameter' ) + + ''' + debug = moose.PyRun( '/pyrun' ) + debug.tick = 10 + debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" + ''' + moose.reinit() + moose.start( runtime ) + + displayPlots() + pylab.plot( oldDia, label = 'old Diameter' ) + pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) + pylab.legend() + pylab.show() + + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +# Run the 'main' if this script is executed standalone. + +def showVisualization(): + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) + # print diaTab[0].vector[-1] + # return + dendrite = moose.element("/model/elec/dend") + dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] + # print dendrites + moose.reinit() + + spineHeads = moose.wildcardFind( '/model/elec/#head#') + # print moose.wildcardFind( '/model/elec/##') + + # print "dendZ", readValues(dendZ) + # print dendrite + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) + viewer.showMaximized() + viewer.start() + return app.exec_() + + +def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): + network = moogli.extensions.moose.read(path=path, + vertices=15) + + dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] + chem_compt_group = dendrite.subdivide(len(dendZ)) + normalizer = moogli.utilities.normalizer(0.0, + 300.0, + clipleft=True, + clipright=True) + colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def readValues(tables): + values = [] + for i in range(len(tables)): + values.append(tables[i].vector[-1]) + return values + + def prelude(view): + view.home() + view.pitch(math.pi / 3.0) + view.zoom(0.3) + network.groups["soma"].set("color", moogli.colors.RED) + network.groups["spine"].groups["shaft"].set("color", + moogli.colors.RED) + + def interlude(view): + moose.start(frameruntime) + network.groups["spine"].groups["head"].set("radius", + readValues(diaTab), + lambda x: x * 0.5e6) + network.groups["spine"].groups["head"].set("color", + readValues(psdZ), + mapper) + chem_compt_group.set("color", + readValues(dendZ), + mapper) + if moose.element("/clock").currentTime >= runtime: + view.stop() + + viewer = moogli.Viewer("Viewer") + viewer.attach_shapes(network.shapes.values()) + viewer.detach_shape(dendrite) + viewer.attach_shapes(chem_compt_group.shapes.values()) + + view = moogli.View("main-view", + prelude=prelude, + interlude=interlude) + cb = moogli.widgets.ColorBar(id="cb", + title="Molecule #", + text_color=moogli.colors.BLACK, + position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), + size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), + text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", + orientation=math.pi / 2.0, + text_character_size=20, + label_formatting_precision=0, + colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), + color_resolution=100, + scalar_range=moogli.geometry.Vec2f(0.0, + 300.0)) + view.attach_color_bar(cb) + viewer.attach_view(view) + return viewer + + +if __name__ == '__main__': + showVisualization() diff --git a/examples/snippets/savemodel.py b/examples/snippets/savemodel.py new file mode 100644 index 0000000..bf29b91 --- /dev/null +++ b/examples/snippets/savemodel.py @@ -0,0 +1,61 @@ +# savemodel.py --- +# +# Filename: savemodel.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Oct 29 00:08:50 2014 (+0530) +# Version: +# Last-Updated:Thr Dec 23 16:31:00 2015 (+0530) +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""This example illustrates loading a kinetic model defined in Genesis format +into Moose using "loadModel" function and using "saveModel" function one can +save the model back to Genesis format +""" + +import sys +#sys.path.append('../../python') +import moose +from moose.genesis import * + +if __name__ == '__main__': + """ The script demonstates to convert Chemical (Genesis) file back to Genesis file using moose """ + model = moose.loadModel('../genesis/reaction.g', '/model') + written = write('/model', 'testsave.g') + print written diff --git a/examples/snippets/scaleVolumes.py b/examples/snippets/scaleVolumes.py new file mode 100644 index 0000000..6a69da6 --- /dev/null +++ b/examples/snippets/scaleVolumes.py @@ -0,0 +1,159 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import math +import pylab +import numpy +import moose + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-20 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + enz1 = moose.Enz( '/model/compartment/b/enz1' ) + enz2 = moose.Enz( '/model/compartment/c/enz2' ) + cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) + cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) + reac = moose.Reac( '/model/compartment/reac' ) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + + # connect them up to the compartment for volumes + #for x in ( a, b, c, cplx1, cplx2 ): + # moose.connect( x, 'mesh', mesh, 'mesh' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2( '/model/graphs/concA' ) + outputB = moose.Table2( '/model/graphs/concB' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + + ''' + # Schedule the whole lot + moose.setClock( 4, 0.01 ) # for the computational objects + moose.setClock( 8, 1.0 ) # for the plots + # The wildcard uses # for single level, and ## for recursive. + moose.useClock( 4, '/model/compartment/##', 'process' ) + moose.useClock( 8, '/model/graphs/#', 'process' ) + ''' + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + +def main(): + + """ + This example illustrates how to run a model at different volumes. + The key line is just to set the volume of the compartment:: + + compt.volume = vol + + If everything + else is set up correctly, then this change propagates through to all + reactions molecules. + + For a deterministic reaction one would not see any change in output + concentrations. + For a stochastic reaction illustrated here, one sees the level of + 'noise' + changing, even though the concentrations are similar up to a point. + This example creates a bistable model having two enzymes and a reaction. + One of the enzymes is autocatalytic. + This model is set up within the script rather than using an external + file. + The model is set up to run using the GSSA (Gillespie Stocahstic systems + algorithim) method in MOOSE. + + To run the example, run the script + + ``python scaleVolumes.py`` + + and hit ``enter`` every cycle to see the outcome of stochastic + calculations at ever smaller volumes, keeping concentrations the same. + """ + makeModel() + moose.seed( 11111 ) + gsolve = moose.Gsolve( '/model/compartment/gsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + compt = moose.element( '/model/compartment' ); + stoich.compartment = compt + stoich.ksolve = gsolve + stoich.path = "/model/compartment/##" + #moose.setClock( 5, 1.0 ) # clock for the solver + #moose.useClock( 5, '/model/compartment/gsolve', 'process' ) + a = moose.element( '/model/compartment/a' ) + + for vol in ( 1e-19, 1e-20, 1e-21, 3e-22, 1e-22, 3e-23, 1e-23 ): + # Set the volume + compt.volume = vol + print 'vol = ', vol, ', a.concInit = ', a.concInit, ', a.nInit = ', a.nInit + + moose.reinit() + moose.start( 100.0 ) # Run the model for 100 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + + # move most molecules over to b + b.conc = b.conc + a.conc * 0.9 + a.conc = a.conc * 0.1 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + a.conc = a.conc + b.conc * 0.99 + b.conc = b.conc * 0.01 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + pylab.show( block=False ) + print 'vol = ', vol, 'hit enter to go to next plot' + raw_input() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/scriptGssaSolver.py b/examples/snippets/scriptGssaSolver.py new file mode 100644 index 0000000..94f10ae --- /dev/null +++ b/examples/snippets/scriptGssaSolver.py @@ -0,0 +1,123 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example illustrates how to set up a kinetic solver and kinetic model +# using the scripting interface. Normally this would be done using the +# Shell::doLoadModel command, and normally would be coordinated by the +# SimManager as the base of the entire model. +# This example creates a bistable model having two enzymes and a reaction. +# One of the enzymes is autocatalytic. +# The model is set up to run using Exponential Euler integration. + +import math +import pylab +import numpy +import moose + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-20 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + enz1 = moose.Enz( '/model/compartment/b/enz1' ) + enz2 = moose.Enz( '/model/compartment/c/enz2' ) + cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) + cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) + reac = moose.Reac( '/model/compartment/reac' ) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + + # connect them up to the compartment for volumes + #for x in ( a, b, c, cplx1, cplx2 ): + # moose.connect( x, 'mesh', mesh, 'mesh' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def main(): + makeModel() + gsolve = moose.Gsolve( '/model/compartment/gsolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = moose.element( '/model/compartment' ) + stoich.ksolve = gsolve + stoich.path = "/model/compartment/##" + #solver.method = "rk5" + #mesh = moose.element( "/model/compartment/mesh" ) + #moose.connect( mesh, "remesh", solver, "remesh" ) + moose.setClock( 5, 1.0 ) # clock for the solver + moose.useClock( 5, '/model/compartment/gsolve', 'process' ) + + moose.reinit() + moose.start( 100.0 ) # Run the model for 100 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + + # move most molecules over to bgsolve + b.conc = b.conc + a.conc * 0.9 + a.conc = a.conc * 0.1 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + a.conc = a.conc + b.conc * 0.99 + b.conc = b.conc * 0.01 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/scriptKineticModel.py b/examples/snippets/scriptKineticModel.py new file mode 100644 index 0000000..453e446 --- /dev/null +++ b/examples/snippets/scriptKineticModel.py @@ -0,0 +1,120 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +""" +This example illustrates how to define a kinetic model using the +scripting interface. Normally one uses standard model formats like +SBML or kkit to concisely define kinetic models, but in some cases one +would like to modify the model through the script. +This example creates a bistable model having two enzymes and a reaction. +One of the enzymes is autocatalytic. +The model is set up to run using default Exponential Euler integration. +The snippet scriptKineticSolver.py uses the much better GSL +Runge-Kutta-Fehlberg integration scheme on this same model. +""" + +import math +import pylab +import numpy +import moose + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-15 + # the mesh is created automatically by the compartment + moose.le( '/model/compartment' ) + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + enz1 = moose.Enz( '/model/compartment/b/enz1' ) + enz2 = moose.Enz( '/model/compartment/c/enz2' ) + cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) + cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) + reac = moose.Reac( '/model/compartment/reac' ) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + + # connect them up to the compartment for volumes + #for x in ( a, b, c, cplx1, cplx2 ): + # moose.connect( x, 'mesh', mesh, 'mesh' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + + # We need a finer timestep than the default 0.1 seconds, + # in order to get numerical accuracy. + for i in range (11, 15 ): + moose.setClock( i, 0.001 ) # for computational objects + +def main(): + makeModel() + + moose.reinit() + moose.start( 100.0 ) # Run the model for 100 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + + # move most molecules over to b + b.conc = b.conc + a.conc * 0.9 + a.conc = a.conc * 0.1 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + a.conc = a.conc + b.conc * 0.99 + b.conc = b.conc * 0.01 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/conc#' ): + #x.xplot( 'scriptKineticModel.plot', x.name ) + t = numpy.arange( 0, x.vector.size, 1 ) # sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/scriptKineticSolver.py b/examples/snippets/scriptKineticSolver.py new file mode 100644 index 0000000..977a099 --- /dev/null +++ b/examples/snippets/scriptKineticSolver.py @@ -0,0 +1,124 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example illustrates how to set up a kinetic solver and kinetic model +# using the scripting interface. Normally this would be done using the +# Shell::doLoadModel command, and normally would be coordinated by the +# SimManager as the base of the entire model. +# This example creates a bistable model having two enzymes and a reaction. +# One of the enzymes is autocatalytic. +# The model is set up to run using Exponential Euler integration. + +import math +import pylab +import numpy +import moose + +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-15 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + c = moose.Pool( '/model/compartment/c' ) + enz1 = moose.Enz( '/model/compartment/b/enz1' ) + enz2 = moose.Enz( '/model/compartment/c/enz2' ) + cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) + cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) + reac = moose.Reac( '/model/compartment/reac' ) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + + # connect them up to the compartment for volumes + #for x in ( a, b, c, cplx1, cplx2 ): + # moose.connect( x, 'mesh', mesh, 'mesh' ) + + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + outputA = moose.Table2 ( '/model/graphs/concA' ) + outputB = moose.Table2 ( '/model/graphs/concB' ) + + # connect up the tables + moose.connect( outputA, 'requestOut', a, 'getConc' ); + moose.connect( outputB, 'requestOut', b, 'getConc' ); + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/conc#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def main(): + makeModel() + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = moose.element( '/model/compartment' ) + stoich.ksolve = ksolve + stoich.path = "/model/compartment/##" + #solver.method = "rk5" + #mesh = moose.element( "/model/compartment/mesh" ) + #moose.connect( mesh, "remesh", solver, "remesh" ) + ''' + moose.setClock( 5, 1.0 ) # clock for the solver + moose.useClock( 5, '/model/compartment/ksolve', 'process' ) + ''' + + moose.reinit() + moose.start( 100.0 ) # Run the model for 100 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + + # move most molecules over to b + b.conc = b.conc + a.conc * 0.9 + a.conc = a.conc * 0.1 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + a.conc = a.conc + b.conc * 0.99 + b.conc = b.conc * 0.01 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/showclocks.py b/examples/snippets/showclocks.py new file mode 100644 index 0000000..3ebb3f7 --- /dev/null +++ b/examples/snippets/showclocks.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# Author: Subhasis Ray +# Date: Mon Jun 10 16:23:41 IST 2013 + +"""This snippet shows various ways of displaying scheduling +information of moose model components. + +The `/clock/tick` ematrix has 10 elements, any of which can be setup +by using the `moose.setClock(tickNo, dt)` function. This sets the +interval between the ticking events for it to `dt` time. + +Individual model components can be assigned ticks by +`moose.useClock(tickNo, targetPath, targetFinfo)`. Commonly used +target finfo is `process`, which causes the function of the same name +in the ematrix at target path to be called at each ticking event of +tick `tickNo`. Thus displaying the neighbors of `process` finfo of an +element will show the tick assigned to it. + +On the other hand, the tick ematrix has 10 finfos, `proc0` ... `proc9` +which connect to all the targets of the corresponding `tickNo`. You +can display the neighbors of these finfos also to see what is +scheduled on each tick. + +""" + +import moose + +comp = moose.Compartment('/comp') +# Setup the ticks +moose.setClock(0, 1e-6) +moose.setClock(1, 1e-6) + +# Schedule the element. +moose.useClock(0, '/##[ISA=Compartment]', 'init') +moose.useClock(1, '/##[ISA=Compartment]', 'process') + +# List the ticks connected to an element. +print 'Ticks connected to `process` method of', comp.path +for tick in comp.neighbors['process']: + print ' ->',tick.path + +# Different ticks can be connected to different fields. +print 'Ticks connected to `init` method of', comp.path +for tick in comp.neighbors['init']: + print ' ->',tick.path + +# View the scheduled elements using the tick nos. +t = moose.element('/clock') +print 'Elements on tick 0' +for e in t.neighbors['proc0']: + print ' ->', e.path +print 'Elements on tick 1' +for e in t.neighbors['proc1']: + print ' ->', e.path + +ch = moose.HHChannel('/comp/chan') +moose.useClock(1, ch.path, 'process') +print ch.path, 'has been scheduled' +print 'Elements on tick 1' +for e in t.neighbors['proc1']: + print ' ->', e.path + +# Go through elements by wildcard search and list the ticks connected. +# This can be slow when the model is too big. +for el in moose.wildcardFind('/##[ISA=Compartment]'): + print 'Ticks connected to `process` method of', el.path + for t in moose.element(el).neighbors['process']: + print ' ->', t.path + +# + + diff --git a/examples/snippets/showmsg.py b/examples/snippets/showmsg.py new file mode 100644 index 0000000..38535e6 --- /dev/null +++ b/examples/snippets/showmsg.py @@ -0,0 +1,22 @@ + +"""This is to show a _raw_ way of traversing messages.""" +import sys +sys.path.append('../../python') + +import moose + +connectionProbability = 0.5 +net = moose.IntFire('/net1', 10) +syn = moose.SimpleSynHandler( '/net1/sh', 10 ) +moose.connect( syn, 'activationOut', net, 'activation', 'OneToOne' ) +synapse = syn.synapse.vec +mid = moose.connect(net, 'spikeOut', synapse, 'addSpike', 'Sparse') # This creates a `Sparse` message from `spikeOut` source of net to `addSpike` destination on synapse. +msg = moose.element(mid) +msg.setRandomConnectivity(connectionProbability, 5) +for n in net.vec: + print 'Messages from %s.spikeOut' % (n.path) + node = moose.element(n) + for dest, df in zip(node.msgDests['spikeOut'], node.msgDestFunctions['spikeOut']): + print '\t--> %s.%s' % (dest.path, df) + + diff --git a/examples/snippets/singlemsgcross.py b/examples/snippets/singlemsgcross.py new file mode 100644 index 0000000..7a58929 --- /dev/null +++ b/examples/snippets/singlemsgcross.py @@ -0,0 +1,95 @@ +# singlemsgcross.py --- +# +# Filename: singlemsgcross.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Wed May 1 11:05:30 2013 (+0530) +# Version: +# Last-Updated: Wed May 1 12:16:14 2013 (+0530) +# By: subha +# Update #: 43 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""This example shows that you can have two ematrix objects and +connect individual elements using `Single` message""" + +import pylab +import sys +sys.path.append('../../python') +import moose + +def test_crossing_single(): + """This function creates an ematrix of two PulseGen elements and + another ematrix of two Table elements. + + The two pulsegen elements have same amplitude but opposite phase. + + Table[0] is connected to PulseGen[1] and Table[1] to Pulsegen[0]. + + In the plot you should see two square pulses of opposite phase. + + """ + size = 2 + pg = moose.PulseGen('pulsegen', size) + for ix, ii in enumerate(pg.vec): + pulse = moose.element(ii) + pulse.delay[0] = 1.0 + pulse.width[0] = 2.0 + pulse.level[0] = (-1)**ix + tab = moose.Table('table', size) + moose.connect(tab.vec[0], 'requestOut', pg.vec[1], 'getOutputValue', 'Single') + moose.connect(tab.vec[1], 'requestOut', pg.vec[0], 'getOutputValue', 'Single') + print 'Neighbors:' + for t in tab.vec: + print t.path + for n in moose.element(t).neighbors['requestOut']: + print 'requestOut <-', n.path + moose.setClock(0, 0.1) + moose.useClock(0, '/##', 'process') + moose.start(5) + for ii in tab.vec: + t = moose.Table(ii).vector + print len(t) + pylab.plot(t) + pylab.show() + +if __name__ == '__main__': + test_crossing_single() + +# +# singlemsgcross.py ends here diff --git a/examples/snippets/soma.p b/examples/snippets/soma.p new file mode 100644 index 0000000..e27fbb3 --- /dev/null +++ b/examples/snippets/soma.p @@ -0,0 +1,16 @@ +// genesis +// cell parameter file for multiscale modeling snippet. +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +// soma none 0 12 0 12 Ca_conc -17.402e12 Na 300 Ca 40 K_DR 250 K_A 50 K_C 250 +soma none 0 12 0 12 Ca_conc -1e13 Na 300 Ca 50 K_DR 250 K_A 200 diff --git a/examples/snippets/spinyNeuron.p b/examples/snippets/spinyNeuron.p new file mode 100644 index 0000000..d30ba53 --- /dev/null +++ b/examples/snippets/spinyNeuron.p @@ -0,0 +1,100 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + +/* NOTE: The format of the cell descriptor files does not allow for + continuation to another line. The following long line lists the + soma channels with their "density" parameters. + + Ca_conc -17.402e12 + Not really a channel, but a "Ca_concen" object. Normally, the B + field is set to "dens"/compt_volume (m^3), but the negative sign + causes the absolute value to be used with no scaling by volume. + Na 300 + Ca 40 + K_DR 150 + K_AHP 8 + K_C 100 + K_A 50 +*/ + +basal_3 none 0 22 0 3.84 +basal_5 . 0 22 0 3.84 +basal_6 . 0 22 0 3.84 +basal_8 . 0 11 0 3.84 + +soma basal_8 0 12 0 8.46 + + +apical_10 soma 0 12 0 4.0 +apical_11 apical_10 0 12 0 3 +apical_12 apical_11 0 12 0 3 +apical_13 apical_12 0 12 0 2.6 +apical_14 apical_13 0 12 0 2.6 +apical_15 apical_14 0 12 0 2.6 +apical_16 apical_15 0 12 0 2.6 +apical_17 apical_16 0 12 0 2.6 +apical_18 apical_17 0 12 0 2.6 +apical_19 apical_18 0 12 0 2.6 + +lat_11_1 apical_10 -6 6 0 2 +lat_11_2 lat_11_1 -6 6 0 1.8 +lat_11_3 lat_11_2 0 8 0 1.5 +lat_11_4 lat_11_3 0 8 0 1.5 + +lat_13_1 apical_12 4 4 0 1.0 +lat_13_2 lat_13_1 4 4 0 1.0 + +lat_14_1 lat_13_2 0 10 0 1.0 +lat_14_2 . 0 10 0 1.0 +lat_14_3 . 0 10 0 1.0 +lat_14_4 . 0 10 0 1.0 +lat_14_5 . 0 10 0 1.0 +lat_14_6 . 0 10 0 1.0 +lat_14_7 . 0 10 0 1.0 +lat_14_8 . 0 10 0 1.0 +lat_14_9 . 0 10 0 1.0 +lat_14_10 . 0 10 0 1.0 +lat_14_11 . 0 10 0 1.0 +lat_14_12 . 0 10 0 1.0 +lat_14_13 . 0 10 0 1.0 +lat_15_1 . 0 10 0 1.0 +lat_15_2 . 0 10 0 1.0 + +spine_neck_14_1 lat_14_1 0.5 0 0 0.1 +spine_head_14_1 . 0.5 0 0 0.5 +spine_neck_14_2 lat_14_2 0.5 0 0 0.1 +spine_head_14_2 . 0.5 0 0 0.5 +spine_neck_14_3 lat_14_3 0.5 0 0 0.1 +spine_head_14_3 . 0.5 0 0 0.5 +spine_neck_14_4 lat_14_4 0.5 0 0 0.1 +spine_head_14_4 . 0.5 0 0 0.5 +spine_neck_14_5 lat_14_5 0.5 0 0 0.1 +spine_head_14_5 . 0.5 0 0 0.5 +spine_neck_14_6 lat_14_6 0.5 0 0 0.1 +spine_head_14_6 . 0.5 0 0 0.5 +spine_neck_14_7 lat_14_7 0.5 0 0 0.1 +spine_head_14_7 . 0.5 0 0 0.5 +spine_neck_14_8 lat_14_8 0.5 0 0 0.1 +spine_head_14_8 . 0.5 0 0 0.5 +spine_neck_14_9 lat_14_9 0.5 0 0 0.1 +spine_head_14_9 . 0.5 0 0 0.5 +spine_neck_14_10 lat_14_10 0.5 0 0 0.1 +spine_head_14_10 . 0.5 0 0 0.5 +spine_neck_14_11 lat_14_11 0.5 0 0 0.1 +spine_head_14_11 . 0.5 0 0 0.5 +spine_neck_14_12 lat_14_12 0.5 0 0 0.1 +spine_head_14_12 . 0.5 0 0 0.5 +spine_neck_14_13 lat_14_13 0.5 0 0 0.1 +spine_head_14_13 . 0.5 0 0 0.5 diff --git a/examples/snippets/stargazin_synapse.g b/examples/snippets/stargazin_synapse.g new file mode 100644 index 0000000..b6241c2 --- /dev/null +++ b/examples/snippets/stargazin_synapse.g @@ -0,0 +1,413 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Mon Jul 8 15:42:18 2013 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 1000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 9e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 +simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 0 0.83333 5 0 0 0 6 0 \ + /kinetics/geometry 35 0 0 7 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 0 yellow 0 x 0 0 "" PP1_PSD \ + defaultfile.g 0 0 0 7 10 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue yellow -4 -5 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -2 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ + 0.2 0.05 0 0 "" red blue "" -6 -4 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.5 15 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ + 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/inact_CaMKII 0 0 8 8 48 48 0 0 6 0 \ + /kinetics/geometry[1] blue 0 5 11 0 +simundump text /kinetics/PSD/inact_CaMKII/notes 0 "" +call /kinetics/PSD/inact_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_bind_CaM 0 0.1 0.1 "" white 0 3 9 0 +simundump text /kinetics/PSD/CaMKII_bind_CaM/notes 0 "" +call /kinetics/PSD/CaMKII_bind_CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM.CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[2] blue 0 0 11 0 +simundump text /kinetics/PSD/CaM.CaMKII/notes 0 "" +call /kinetics/PSD/CaM.CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Basal_CaMKII 0 0 0.83333 0.83333 5 5 0 0 6 0 \ + /kinetics/geometry[2] blue 0 -5 9 0 +simundump text /kinetics/PSD/Basal_CaMKII/notes 0 "" +call /kinetics/PSD/Basal_CaMKII/notes LOAD \ +"" +simundump group /kinetics/BULK 0 yellow black x 0 0 "" BULK defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/BULK/notes 0 "" +call /kinetics/BULK/notes LOAD \ +"" +simundump kpool /kinetics/BULK/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/BULK/iR/notes 0 "Same as Fus3\n" +call /kinetics/BULK/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/BULK/PP1-inactive 0 0 0.66667 0.66667 36 36 0 0 54 \ + 0 /kinetics/geometry[1] blue yellow -4 -10 0 +simundump text /kinetics/BULK/PP1-inactive/notes 0 "" +call /kinetics/BULK/PP1-inactive/notes LOAD \ +"" +simundump kpool /kinetics/BULK/Ca 0 0 0.08 0.08 4.32 4.32 0 0 54 4 \ + /kinetics/geometry[1] 54 yellow 8 0 0 +simundump text /kinetics/BULK/Ca/notes 0 "" +call /kinetics/BULK/Ca/notes LOAD \ +"" +simundump kpool /kinetics/BULK/CaN 0 0 0.037037 0.037037 2 2 0 0 54 0 \ + /kinetics/geometry[1] 9 yellow 8 -5 0 +simundump text /kinetics/BULK/CaN/notes 0 "" +call /kinetics/BULK/CaN/notes LOAD \ +"" +simundump kpool /kinetics/BULK/Ca4.CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] 7 yellow 1 -5 0 +simundump text /kinetics/BULK/Ca4.CaN/notes 0 "" +call /kinetics/BULK/Ca4.CaN/notes LOAD \ +"" +simundump kenz /kinetics/BULK/Ca4.CaN/CaN_enz 0 0 0 0 0 54 0.92593 4 1 0 0 "" \ + red 7 "" 1 -7 0 +simundump text /kinetics/BULK/Ca4.CaN/CaN_enz/notes 0 "" +call /kinetics/BULK/Ca4.CaN/CaN_enz/notes LOAD \ +"" +simundump kreac /kinetics/BULK/CaN_bind_Ca 0 4e-06 0.1 "" white yellow 4 -7 0 +simundump text /kinetics/BULK/CaN_bind_Ca/notes 0 "" +call /kinetics/BULK/CaN_bind_Ca/notes LOAD \ +"" +simundump kreac /kinetics/BULK/CaM_bind_Ca 0 1e-08 1 "" white yellow 4 3 0 +simundump text /kinetics/BULK/CaM_bind_Ca/notes 0 "" +call /kinetics/BULK/CaM_bind_Ca/notes LOAD \ +"" +simundump kpool /kinetics/BULK/CaM 0 0 0.88889 0.88889 48 48 0 0 54 0 \ + /kinetics/geometry[1] 25 yellow 8 5 0 +simundump text /kinetics/BULK/CaM/notes 0 "" +call /kinetics/BULK/CaM/notes LOAD \ +"" +simundump kpool /kinetics/BULK/Ca4.CaM 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] 26 yellow 1 5 0 +simundump text /kinetics/BULK/Ca4.CaM/notes 0 "" +call /kinetics/BULK/Ca4.CaM/notes LOAD \ +"" +simundump kreac /kinetics/BULK/inactivate_PP1 0 0.05 0.002 "" white yellow -6 \ + -7 0 +simundump text /kinetics/BULK/inactivate_PP1/notes 0 "" +call /kinetics/BULK/inactivate_PP1/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 3523.1 -2.2424 40 0 +simundump xgraph /graphs/conc2 0 0 3523.1 0 40 0 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 4 0 0 1 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 54 0 0 1 +simundump xplot /graphs/conc2/iR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 3523.1 1.8672e-07 0.093991 0 +simundump xgraph /moregraphs/conc4 0 0 3523.1 0 11.572 0 +simundump xplot /moregraphs/conc3/Ca4.CaN.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 7 0 0 1 +simundump xplot /moregraphs/conc3/Ca4.CaM.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 26 0 0 1 +simundump xplot /moregraphs/conc4/PP1-active.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /moregraphs/conc4/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 35 0 0 1 +simundump xcoredraw /edit/draw 0 -12 10 -18 13 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"" \ +"" \ +"16 Dec 2011. Completely new PSD version, where the R, Rp and Rpp" \ +"all refer to AMPAR bound to two stargazins, and each p is on one" \ +"of the stargazins. " \ +"" \ +"stargazin_psd2.g: tweaked traffic parameters to get bistability." \ +"Very bistable." \ +"" \ +"17 Dec 2011. stargazin_psd3.g: Minor change: reduced kcat for" \ +"CaN from 10 to 2." \ +"" \ +"stargazin_psd4.g: Changed some rates around so that it responds" \ +"in a more relevant range for CaMKII activation in the full model." \ +"Also renamed the Receptor-Stargazin pools to clarify that the" \ +"phospho steps are on the stargazin." \ +"" \ +"stargazin_psd5.g: Incorporated traffic rates from the " \ +"traffillator analysis." \ +"" \ +"stargazin_psd6.g: Raised CaN Km from 5 to 10 uM." \ +"" \ +"stargazin_psd8.g: Increased level of PP2A by 3x so we have at least" \ +"2 molecules of it in the PSD. Lowered kcat to match." \ +"" \ +"stargazin_psd9.g: Fine-tuning trafficking parameters to see if we" \ +"can improve Kramer time for off-to-on transition." \ +"" \ +"stargazin_psd11.g: first pass at revised stargazin using PP1-active" \ +"instead of CaN." \ +"" \ +"stargazin_psd12.g: Fine-tuned version of 11, with the traffic" \ +"rates estimated from traffillator analysis." \ +"" \ +"stargazin_psd12a.g: Minor naming change." \ +"" \ +"stargazin_psd12b.g: More naming change: PP2A becomes " \ +"basal_phosphatase." \ +"" \ +"07 July 2013: Adding in toy regulation by Ca." \ +"stargazin_snapse2.g: turnon happens but not turnoff." \ +"Did doser for PP1-active. Halfmax is only 0.08. Hence problem." \ +"" \ +"stargazin_synapse4.g: Scaled up doser for PP1-active so halfmax" \ +"is now up to 0.2 uM." \ +"stargazin_synapse5.g: A big of fine-tuning on the levels of PP1 " \ +"and CaMKII so that the bidirectional flip is possible." \ +"stargazin_synapse6.g: OK, now a set of parameters that do" \ +"bidirectional state flips with reasonable Ca levels." \ +"0.08 is bistable" \ +"2.0 turns on" \ +"0.2 turns off." \ +"" \ +"08 July 2013. Stargazin_synapse7.g: Raised CaM to match CaMKII" \ +"levels, so that the " \ +"turnon is faster." \ +"stargazin_synapse8.g: Further raise of CaM and CaMKII, now" \ +"turnon happens within 20 sec." \ +"stargazin_synapse9.g: Added Ca plot." \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/Basal_CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/PSD/PP1_PSD/PP1-active MM_PRD pA +addmsg /kinetics/BULK/inactivate_PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n +addmsg /kinetics/BULK/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/inact_CaMKII REAC A B +addmsg /kinetics/BULK/Ca4.CaM /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n +addmsg /kinetics/PSD/inact_CaMKII /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/CaMKII_bind_CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/CaM.CaMKII REAC B A +addmsg /kinetics/PSD/move_to_PSD /kinetics/BULK/iR REAC A B +addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/PP1-inactive REAC sA B +addmsg /kinetics/BULK/inactivate_PP1 /kinetics/BULK/PP1-inactive REAC B A +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/CaN REAC A B +addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/Ca4.CaN REAC eA B +addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca4.CaN REAC B A +addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/Ca4.CaN/CaN_enz ENZYME n +addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/Ca4.CaN/CaN_enz SUBSTRATE n +addmsg /kinetics/BULK/CaN /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/CaN_bind_Ca PRODUCT n +addmsg /kinetics/BULK/CaM /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n +addmsg /kinetics/BULK/Ca4.CaM /kinetics/BULK/CaM_bind_Ca PRODUCT n +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/CaM REAC A B +addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/BULK/Ca4.CaM REAC A B +addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca4.CaM REAC B A +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/BULK/inactivate_PP1 SUBSTRATE n +addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/inactivate_PP1 PRODUCT n +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 +addmsg /kinetics/BULK/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *54 +addmsg /kinetics/BULK/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 +addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +addmsg /kinetics/BULK/Ca4.CaN /moregraphs/conc3/Ca4.CaN.Co PLOT Co *Ca4.CaN.Co *7 +addmsg /kinetics/BULK/Ca4.CaM /moregraphs/conc3/Ca4.CaM.Co PLOT Co *Ca4.CaM.Co *26 +addmsg /kinetics/PSD/PP1_PSD/PP1-active /moregraphs/conc4/PP1-active.Co PLOT Co *PP1-active.Co *blue +addmsg /kinetics/PSD/actCaMKII /moregraphs/conc4/actCaMKII.Co PLOT Co *actCaMKII.Co *35 +enddump +// End of dump + +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/BULK/iR/notes LOAD \ +"Same as Fus3" \ +"" +complete_loading diff --git a/examples/snippets/startstop.py b/examples/snippets/startstop.py new file mode 100644 index 0000000..11d98ea --- /dev/null +++ b/examples/snippets/startstop.py @@ -0,0 +1,117 @@ +# startstop.py --- +# +# Filename: startstop.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sun Jul 1 13:42:28 2012 (+0530) +# Version: +# Last-Updated: Sun Jul 1 14:41:34 2012 (+0530) +# By: subha +# Update #: 62 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +import pylab +import moose + +def main(): + """ + This demo shows how to start, stop, and continue a simulation. + This is commonly done when we want to run a model till settling, then + change a parameter or deliver a stimulus, and then continue the + simulation. + + Here, the model is just the output of a PulseGen object which + generates periodic pulses. + The demo shows how to start the simulation. using the + *moose.reinit* command to reset the model to its initial state, + and *moose.start* command to run the model for the specified duration. + We issue multiple *moose.start* commands and do different things to + the model between them. First, we change the delay of the pulseGen. + Then we show a number of ways to assign the timestep (dt) to the + table object in the simulation. + Note that throughout this simulation the pulsegen is going at a + uniform rate, it is just being sampled by the output table at + different intervals. + """ + + dt = 0.1 + steps = 100 + simtime = dt * steps + # Pulsegen is on tick 0, we can pre-emptively set its dt. + moose.setClock(0, dt) + table = setup_model() + pulse = moose.element( '/model/pulse' ) + # The 'tick' field is on every object, we can use this to set its dt. + moose.setClock( table.tick, dt ) + moose.reinit() + clock = moose.element('/clock') + print dt + print 'dt = ', dt, ', Total simulation time = ', simtime + print 'Running simulation for', simtime, 'seconds' + moose.start( simtime ) + print 'Simulator time:', clock.currentTime + # Here we change the pulse delay and then run again. + pulse.delay[0] = 1.0 + moose.start( simtime ) + + # We change the table tick and use a different dt for it: + table.tick = 2 + moose.setClock( table.tick, dt * 2 ) + moose.start( simtime ) + + # Here is yet another way to change clocks used by the table + moose.useClock( 9, '/model/pulse/tab', 'process' ) + print table.tick + moose.setClock( 9, dt / 2.0 ) + moose.start( simtime ) + + # Finally, here we change the pulse delay to 1 second and run again. + + print 'Simulator time at end of simulation', clock.currentTime + pylab.plot(pylab.linspace(0, clock.currentTime, len(table.vector)), table.vector) + pylab.show() + +def setup_model(): + model_container = moose.Neutral('/model') + pulse = moose.PulseGen('/model/pulse') + pulse.level[0] = 1.0 + pulse.delay[0] = 0.5 + pulse.width[0] = 0.5 + table = moose.Table('%s/tab' % (pulse.path)) + moose.connect(table, 'requestOut', pulse, 'getOutputValue') + return table + +if __name__ == '__main__': + main() diff --git a/examples/snippets/stimtable.py b/examples/snippets/stimtable.py new file mode 100644 index 0000000..2bdaa90 --- /dev/null +++ b/examples/snippets/stimtable.py @@ -0,0 +1,108 @@ +# stimtable.py --- +# +# Filename: stimtable.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed May 8 18:51:07 2013 (+0530) +# Version: +# Last-Updated: Mon May 27 21:15:36 2013 (+0530) +# By: subha +# Update #: 124 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Example of StimulusTable using Poisson random numbers. + +Creates a StimulusTable and assigns it signal representing events in a +Poisson process. The output of the StimTable is sent to a DiffAmp +object for buffering and then recorded in a regular table. + +""" + +import numpy as np +from matplotlib import pyplot as plt +import moose +from moose import utils + +def stimulus_table_demo(): + model = moose.Neutral('/model') + data = moose.Neutral('/data') + # This is the stimulus generator + stimtable = moose.StimulusTable('/model/stim') + recorded = moose.Table('/data/stim') + moose.connect(recorded, 'requestOut', stimtable, 'getOutputValue') + simtime = 100 + simdt = 1e-3 + # Inter-stimulus-intervals with rate=20/s + rate = 20 + np.random.seed(1) # ensure repeatability + isi = np.random.exponential(rate, int(simtime/rate)) + # The stimulus times are the cumulative sum of the inter-stimulus intervals. + stimtimes = np.cumsum(isi) + # Select only stimulus times that are within simulation time - + # this may leave out some possible stimuli at the end, but the + # exoected number of Poisson events within simtime is + # simtime/rate. + stimtimes = stimtimes[stimtimes < simtime] + ts = np.arange(0, simtime, simdt) + # Find the indices of table entries corresponding to time of stimulus + stimidx = np.searchsorted(ts, stimtimes) + stim = np.zeros(len(ts)) + # Since linear interpolation is forced, we need at least three + # consecutive entries to have same value to get correct + # magnitude. And still we shall be off by at least one time step. + indices = np.concatenate((stimidx-1, stimidx, stimidx+1)) + stim[indices] = 1.0 + stimtable.vector = stim + stimtable.stepSize = 0 # This forces use of current time as x value for interpolation + stimtable.stopTime = simtime + moose.setClock(0, simdt) + moose.useClock(0, '/model/##,/data/##', 'process') + moose.reinit() + moose.start(simtime) + plt.plot(np.linspace(0, simtime, len(recorded.vector)), recorded.vector, 'r-+', label='generated stimulus') + plt.plot(ts, stim, 'b-x', label='originally assigned values') + plt.ylim((-1, 2)) + plt.legend() + plt.title('Exmaple of StimulusTable') + plt.show() + +if __name__ == '__main__': + stimulus_table_demo() + + +# +# stimtable.py ends here diff --git a/examples/snippets/stochasticLotkaVolterra.py b/examples/snippets/stochasticLotkaVolterra.py new file mode 100644 index 0000000..5986400 --- /dev/null +++ b/examples/snippets/stochasticLotkaVolterra.py @@ -0,0 +1,151 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import moose + +runtime = 138.0 +def makeModel(): + # create container for model + model = moose.Neutral( 'model' ) + harmonic = moose.CubeMesh( '/model/harmonic' ) + harmonic.volume = 1e-15 + lotka = moose.CubeMesh( '/model/lotka' ) + lotka.volume = 1e-15 + + # create molecules and reactions + x = moose.Pool( '/model/lotka/x' ) + y = moose.Pool( '/model/lotka/y' ) + z = moose.BufPool( '/model/lotka/z' ) # Dummy molecule. + xreac = moose.Reac( '/model/lotka/xreac' ) + yreac = moose.Reac( '/model/lotka/yreac' ) + xrate = moose.Function( '/model/lotka/xreac/func' ) + yrate = moose.Function( '/model/lotka/yreac/func' ) + + # Parameters + alpha = 1.0 + beta = 1.0 + gamma = 1.0 + delta = 1.0 + k = 1.0 + x.nInit = 200.0 + y.nInit = 100.0 + z.nInit = 0.0 + xrate.x.num = 1 + yrate.x.num = 1 + xrate.expr = "0.01 * x0 * " + str( beta ) + " - " + str( alpha ) + yrate.expr = str( gamma ) + " - 0.01 * x0 * " + str( delta ) + xreac.Kf = k + yreac.Kf = k + xreac.Kb = 0 + yreac.Kb = 0 + + # connect them up for reactions + moose.connect( y, 'nOut', xrate.x[0], 'input' ) + moose.connect( x, 'nOut', yrate.x[0], 'input' ) + moose.connect( xrate, 'valueOut', xreac, 'setNumKf' ) + moose.connect( yrate, 'valueOut', yreac, 'setNumKf' ) + moose.connect( xreac, 'sub', x, 'reac' ) + moose.connect( xreac, 'prd', z, 'reac' ) + moose.connect( yreac, 'sub', y, 'reac' ) + moose.connect( yreac, 'prd', z, 'reac' ) + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + xplot = moose.Table2 ( '/model/graphs/x' ) + yplot = moose.Table2 ( '/model/graphs/y' ) + + # connect up the tables + moose.connect( xplot, 'requestOut', x, 'getN' ); + moose.connect( yplot, 'requestOut', y, 'getN' ); + +def main(): + """ + The stochasticLotkaVolterra example is almost identical to the + funcReacLotkaVolterra. It shows how to use function objects + as part of differential equation systems in the framework of the MOOSE + kinetic solvers. Here the difference is that we use a a stochastic + solver. The system is interesting because it illustrates the + instability of Lotka-Volterra systems in stochastic conditions. Here we + see exctinction of one of the species and runaway buildup of the other. + The simulation has to be halted at this point. + + Here the system is set up explicitly using the + scripting, in normal use one would expect to use SBML. + + In this example we set up a Lotka-Volterra system. The equations + are readily expressed as a pair of reactions each of whose rate is + governed by a function:: + + x' = x( alpha - beta.y ) + y' = -y( gamma - delta.x ) + + This translates into two reactions:: + + x ---> z Kf = beta.y - alpha + y ---> z Kf = gamma - delta.x + + Here z is a dummy molecule whose concentration is buffered to zero. + + The model first runs using default Exponential Euler integration. + This is not particularly accurate even with a small timestep. + The model is then converted to use the deterministic Kinetic solver + Ksolve. This is accurate and faster. + Note that we cannot use the stochastic GSSA solver for this system, it + cannot handle a reaction term whose rate keeps changing. + """ + makeModel() + + moose.seed( 1 ) + # A seed of 3 will give an extinction at 79 seconds. + + for i in range( 11, 18 ): + moose.setClock( i, 0.001 ) + moose.setClock( 18, 0.1 ) + moose.reinit() + moose.start( runtime ) # Run the model + + # Iterate through all plots, dump their contents to data.plot. + for x in moose.wildcardFind( '/model/graphs/#' ): + #x.xplot( 'scriptKineticModel.plot', x.name ) + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + #pylab.ylim( 0, 2.5 ) + pylab.title( "Exponential Euler solution. Note slight error buildup" ) + pylab.legend() + + + pylab.figure() + compt = moose.element( '/model/lotka' ) + ksolve = moose.Gsolve( '/model/lotka/ksolve' ) + stoich = moose.Stoich( '/model/lotka/stoich' ) + stoich.compartment = compt + stoich.ksolve = ksolve + stoich.path = '/model/lotka/##' + moose.reinit() + moose.start( runtime ) # Run the model + + for i in range( 11, 18 ): + moose.setClock( i, 0.1 ) + for x in moose.wildcardFind( '/model/graphs/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec + pylab.plot( t, x.vector, label=x.name ) + #pylab.ylim( 0, 2.5 ) + pylab.title( "GSSA solution." ) + pylab.legend() + pylab.show() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/switchKineticSolvers.py b/examples/snippets/switchKineticSolvers.py new file mode 100644 index 0000000..5ef2c1d --- /dev/null +++ b/examples/snippets/switchKineticSolvers.py @@ -0,0 +1,137 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import moose +import pylab +import numpy +import matplotlib.pyplot as plt +import sys + + +def runAndSavePlots( name ): + runtime = 20.0 + moose.reinit() + moose.start( runtime ) + pa = moose.Neutral( '/model/graphs/' + name ) + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + if ( x.tick != -1 ): + tabname = '/model/graphs/' + name + '/' + x.name + '.' + name + y = moose.Table( tabname ) + y.vector = x.vector + y.tick = -1 + +# Takes args ee, gsl, or gssa +def switchSolvers( solver ): + if ( moose.exists( 'model/kinetics/stoich' ) ): + moose.delete( '/model/kinetics/stoich' ) + moose.delete( '/model/kinetics/ksolve' ) + compt = moose.element( '/model/kinetics' ) + if ( solver == 'gsl' ): + ksolve = moose.Ksolve( '/model/kinetics/ksolve' ) + if ( solver == 'gssa' ): + ksolve = moose.Gsolve( '/model/kinetics/ksolve' ) + if ( solver != 'ee' ): + stoich = moose.Stoich( '/model/kinetics/stoich' ) + stoich.compartment = compt + stoich.ksolve = ksolve + stoich.path = "/model/kinetics/##" + +def main(): + """ + At zero order, you can select the solver you want to use within the + function moose.loadModel( filename, modelpath, solver ). + Having loaded in the model, you can change the solver to use on it. + This example illustrates how to assign and change solvers for a + kinetic model. This process is necessary in two situations: + + * If we want to change the numerical method employed, for example, + from deterministic to stochastic. + * If we are already using a solver, and we have changed the reaction + network by adding or removing molecules or reactions. + + Note that we do not have to change the solvers if the volume or + reaction rates change. + In this example the model is loaded in with a gsl solver. The + sequence of solver calculations is: + + #. gsl + #. ee + #. gsl + #. gssa + #. gsl + + If you're removing the solvers, you just delete the stoichiometry + object and the associated ksolve/gsolve. Should there be diffusion + (a dsolve)then you should delete that too. If you're + building the solvers up again, then you must do the following + steps in order: + + #. build up the ksolve/gsolve and stoich (any order) + #. Assign stoich.ksolve + #. Assign stoich.path. + + See the Reaction-diffusion section should you want to do diffusion + as well. + + """ + + solver = "gsl" # Pick any of gsl, gssa, ee.. + mfile = '../genesis/kkit_objects_example.g' + modelId = moose.loadModel( mfile, 'model', solver ) + # Increase volume so that the stochastic solver gssa + # gives an interesting output + compt = moose.element( '/model/kinetics' ) + compt.volume = 1e-19 + runAndSavePlots( 'gsl' ) + ######################################################### + switchSolvers( 'ee' ) + runAndSavePlots( 'ee' ) + ######################################################### + switchSolvers( 'gsl' ) + runAndSavePlots( 'gsl2' ) + ######################################################### + switchSolvers( 'gssa' ) + runAndSavePlots( 'gssa' ) + ######################################################### + switchSolvers( 'gsl' ) + runAndSavePlots( 'gsl3' ) + ######################################################### + + # Display all plots. + fig = plt.figure( figsize = (12, 10) ) + orig = fig.add_subplot( 511 ) + gsl = fig.add_subplot( 512 ) + ee = fig.add_subplot( 513 ) + gsl2 = fig.add_subplot( 514 ) + gssa = fig.add_subplot( 515 ) + plotdt = moose.element( '/clock' ).tickDt[18] + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * plotdt + orig.plot( t, x.vector, label=x.name ) + for x in moose.wildcardFind( '/model/graphs/gsl/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * plotdt + gsl.plot( t, x.vector, label=x.name ) + for x in moose.wildcardFind( '/model/graphs/ee/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * plotdt + ee.plot( t, x.vector, label=x.name ) + for x in moose.wildcardFind( '/model/graphs/gsl2/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * plotdt + gsl2.plot( t, x.vector, label=x.name ) + for x in moose.wildcardFind( '/model/graphs/gssa/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * plotdt + gssa.plot( t, x.vector, label=x.name ) + plt.legend() + + pylab.show() + quit() + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/symcompartment.py b/examples/snippets/symcompartment.py new file mode 100644 index 0000000..5097dd9 --- /dev/null +++ b/examples/snippets/symcompartment.py @@ -0,0 +1,109 @@ +# symcompartment.py --- +# +# Filename: symcompartment.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Thu Jun 20 17:47:10 2013 (+0530) +# Version: +# Last-Updated: Fri Jul 12 12:10:52 2013 (+0530) +# By: subha +# Update #: 71 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import numpy as np +import pylab + +import moose + +simdt = 1e-6 +simtime = 100e-3 + +def test_symcompartment(): + model = moose.Neutral('model') + soma = moose.SymCompartment('%s/soma' % (model.path)) + soma.Em = -60e-3 + soma.Rm = 1000402560 + soma.Cm = 2.375043912e-11 + soma.Ra = 233957.7812 + d1 = moose.SymCompartment('%s/d1' % (model.path)) + d1.Rm = 397887392 + d1.Cm = 2.261946489e-12 + d1.Ra = 24867960 + d2 = moose.SymCompartment('%s/d2' % (model.path)) + d2.Rm = 2.877870285e+10 + d2.Cm = 8.256105218e-13 + d2.Ra = 20906072 + moose.connect(d1, 'proximal', soma, 'distal') + moose.connect(d2, 'proximal', soma, 'distal') + moose.connect(d1, 'sibling', d2, 'sibling') + pg = moose.PulseGen('/model/pulse') + pg.delay[0] = 10e-3 + pg.width[0] = 20e-3 + pg.level[0] = 1e-6 + pg.delay[1] = 1e9 + moose.connect(pg, 'output', d1, 'injectMsg') + data = moose.Neutral('/data') + tab_soma = moose.Table('%s/soma_Vm' % (data.path)) + tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) + tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) + moose.connect(tab_soma, 'requestOut', soma, 'getVm') + moose.connect(tab_d1, 'requestOut', d1, 'getVm') + moose.connect(tab_d2, 'requestOut', d2, 'getVm') + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.useClock(0, '/model/##[ISA=Compartment]', 'init') # This is allowed because SymCompartment is a subclass of Compartment + moose.useClock(1, '/model/##', 'process') + moose.useClock(2, '/data/##[ISA=Table]', 'process') + moose.reinit() + moose.start(simtime) + t = np.linspace(0, simtime, len(tab_soma.vector)) + data_matrix = np.vstack((t, tab_soma.vector, tab_d1.vector, tab_d2.vector)) + np.savetxt('symcompartment.txt', data_matrix.transpose()) + pylab.plot(t, tab_soma.vector, label='Vm_soma') + pylab.plot(t, tab_d1.vector, label='Vm_d1') + pylab.plot(t, tab_d2.vector, label='Vm_d2') + pylab.show() + +if __name__ == '__main__': + test_symcompartment() + + + +# +# symcompartment.py ends here diff --git a/examples/snippets/synapse.py b/examples/snippets/synapse.py new file mode 100644 index 0000000..aea6f37 --- /dev/null +++ b/examples/snippets/synapse.py @@ -0,0 +1,84 @@ +# synapse.py --- +# +# Filename: synapse.py +# Description: +# Author:Upi Bhalla +# Maintainer: +# Created: Sat Jun 29 11:32:29 2013 (+0530) +# Version: +# Last-Updated: Thu Oct 2 2014 (+0530) +# By: Upi +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +import moose + +def many_ematrix_to_one_element(): + """This is an example of event messages from multiple SpikeGen objects + into a synchan. + + Create a SynChan element with 2 elements in synapse field. + + Create 5 SpikeGen elements. + + Connect alternet SpikeGen elements to synapse[0] and synapse[1] + + ... This is a minimal example. In real simulations the SpikeGens + will be embedded in compartments representing axon terminals and + the SynChans will be embedded in somatic/dendritic compartments. + + """ + model = moose.Neutral('/model') + # data = moose.Neutral('/data') + synchan = moose.SynChan('/model/synchan') + synh = moose.SimpleSynHandler( '/model/synchan/synh' ) + moose.connect( synh, 'activationOut', synchan, 'activation' ) + synh.synapse.num = 2 + num_spikegen = 5 + spikegens = [moose.SpikeGen('/model/spikegen_%d' % (ii)) for ii in range(num_spikegen)] + for ii in range(num_spikegen): + msg = moose.connect(spikegens[ii], 'spikeOut', synh.synapse[ii%2], 'addSpike') + # synchan.synapse[ii].delay = ii * 1e-3 + # synchan.synapse[ii].weight = (ii+1) * 0.1 + for sg in spikegens: + print sg.path, '-->', + for m in sg.msgOut: + print moose.element(m).adjacent[sg].path + +if __name__ == '__main__': + many_ematrix_to_one_element() + +# +# synapse.py ends here diff --git a/examples/snippets/synapse_tutorial.py b/examples/snippets/synapse_tutorial.py new file mode 100644 index 0000000..98b6c02 --- /dev/null +++ b/examples/snippets/synapse_tutorial.py @@ -0,0 +1,188 @@ +# synapse_tutorial.py --- +# +# Filename: synapse_tutorial.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri Jan 17 09:43:51 2014 (+0530) +# Version: +# Last-Updated: Thu Oct 2 11:27:05 IST 2014 +# By: Upi +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# This is a tutorial based on an example Upi suggested. The code is +# exported from an ipython notebook and the comments present the +# markdown version of the tutorial text. +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA.# -*- coding: utf-8 -*- + +# +# + +# Code: + +"""In this example we walk through creation of a vector of IntFire +elements and setting up synaptic connection between them. Synapse on +IntFire elements is an example of ElementField - elements that do not +exist on their own, but only as part of another element. This example +also illustrates various operations on `vec` objects and +ElementFields.""" + + + + +import moose + + + +size = 1024 # number of IntFire objects in a vec +delayMin = 0 +delayMax = 4 +Vmax = 1.0 +thresh = 0.8 +refractoryPeriod = 0.4 +connectionProbability = 0.1 +weightMax = 0.5 + + + +# The above sets the constants we shall use in this example. Now we create a vector of IntFire elements of size `size`. + + + +net = moose.IntFire('/network', size) + + + +# This creates a `vec` of `IntFire` elements of size 1024 and returns the first `element`, i.e. "/network[0]". + + + +net = moose.element('/network[0]') + + +# You need now to provide synaptic input to the network + +synh = moose.SimpleSynHandler( '/network/synh', size ) + +# These need to be connected to the nodes in the network + +moose.connect( synh, 'activationOut', net, 'activation', 'OneToOne' ) + + +# You can access the underlying vector of elements using the `vec` field on any element. This is very useful for vectorized field access: + + + +net.vec.Vm = [thresh / 2.0] * size + + + +# The right part of the assigment creates a Python list of length `size` with each element set to `thresh/2.0`, which is 0.4. You can index into the `vec` to access individual elements' field: + + + +print net.vec[1].Vm + + + +# `SimpleSynHandler` class has an `ElementField` called `synapse`. It is just like a `vec` above in terms of field access, but by default its size is 0. + + + +print len(synh.synapse) + + + +# To actually create synapses, you can explicitly assign the `num` field of this, or set the `numSynapses` field of the `IntFire` element. There are some functions which can implicitly set the size of the `ElementField`. + + + +synh.numSynapses = 3 +print len(synh.synapse) + + + +synh.synapse.num = 4 +print len(synh.synapse) + + + +# Now you can index into `net.synapse` as if it was an array. + + + +print 'Before:', synh.synapse[0].delay +synh.synapse[0].delay = 1.0 +print 'After:', synh.synapse[0].delay + + + +# You could do the same vectorized assignment as with `vec` directly: + + + +synh.synapse.weight = [0.2] * len(synh.synapse) +print synh.synapse.weight + + + +# You can create the synapses and assign the weights and delays using loops: + + + +import random # We need this for random number generation +from numpy import random as nprand +for syn in synh.vec: + syn.synapse.num = random.randint(1,10) # create synapse fields with random size between 1 and 10, end points included + # Below is one (inefficient) way of setting the individual weights of the elements in 'synapse' + for ii in range(len(syn.synapse)): + syn.synapse[ii].weight = random.random() * weightMax + # This is a more efficient way - rhs of `=` is list comprehension in Python and rather fast + syn.synapse.delay = [delayMin + random.random() * delayMax for ii in range(len(syn.synapse))] + # An even faster way will be to use numpy.random.rand(size) which produces array of random numbers uniformly distributed between 0 and 1 + syn.synapse.delay = delayMin + nprand.rand(len(syn.synapse)) * delayMax + + + + +# Now display the results, we use slice notation on `vec` to show the values of delay and weight for the first 5 elements in `/network` + + + +for syn in synh.vec[:5]: + print 'Delays for synapses on ', syn.path, ':', syn.synapse.delay + print 'Weights for synapses on ', syn.path, ':', syn.synapse.weight + + + + +# +# synapse_tutorial.py ends here + diff --git a/examples/snippets/synapse_tutorial_2.ipynb b/examples/snippets/synapse_tutorial_2.ipynb new file mode 100644 index 0000000..7062fde --- /dev/null +++ b/examples/snippets/synapse_tutorial_2.ipynb @@ -0,0 +1,309 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import moose" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 3 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "size = 1024 # number of IntFire objects in a vec\n", + "delayMin = 0 \n", + "delayMax = 4\n", + "Vmax = 1.0\n", + "thresh = 0.8\n", + "refractoryPeriod = 0.4\n", + "connectionProbability = 0.1\n", + "weightMax = 0.5\n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above sets the constants we shall use in this example. Now we create a vector of IntFire elements of size `size`." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "net = moose.IntFire('/network', size)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This creates a `vec` of `IntFire` elements of size 1024 and returns the first `element`, i.e. \"/network[0]\"." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "net == moose.element('/network[0]')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 6, + "text": [ + "True" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can access the underlying vector of elements using the `vec` field on any element. This is very useful for vectorized field access:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "net.vec.bufferTime = [2 * delayMax] * size" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The right part of the assigment creates a Python list of length `size` with each element set to `2 * delayMax`, which is 8.0. You can index into the `vec` to access individual elements' field:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print net.vec[1].bufferTime" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "8.0\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`IntFire` class has an `ElementField` called `synapse`. It is just like a `vec` above in terms of field access, but by default its size is 0." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print len(net.synapse)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To actually create synapses, you can explicitly assign the `num` field of this, or set the `numSynapses` field of the `IntFire` element. There are some functions which can implicitly set the size of the `ElementField`. Here is the implicit way:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "synapse = moose.element('/network[0]/synapse')\n", + "mid = moose.connect(net, 'spikeOut', synapse, 'addSpike', 'Sparse') # This creates a `Sparse` message from `spikeOut` source of net to `addSpike` destination on synapse." + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 10 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "msg = moose.element(mid)\n", + "msg.setRandomConnectivity(connectionProbability, 5489)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 12, + "text": [ + "True" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above sets random connectivity in the sparse message. Now you can see what are the sizes of each synapse in each element of '/network'" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for ii in range(10, 15):\n", + " el = moose.element(net.vec[ii])\n", + " print el.path, 'has', len(el.synapse), 'synaptic connections'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "/network[10] has 102 synaptic connections\n", + "/network[11] has 107 synaptic connections\n", + "/network[12] has 101 synaptic connections\n", + "/network[13] has 109 synaptic connections\n", + "/network[14] has 101 synaptic connections\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can set the weight and delay fields of each synapse using various looping methods" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import random # We need this for random number generation\n", + "from numpy import random as nprand\n", + "for item in net.vec:\n", + " neuron = moose.element(item) # You have to convert each entry of a `vec` into corresponding IntFire element in order to access class-specific fields\n", + " # Below is one (inefficient) way of setting the individual weights of the elements in 'synapse'\n", + " for ii in range(len(neuron.synapse)):\n", + " neuron.synapse[ii].weight = random.random() * weightMax\n", + " # This is a more efficient way - rhs of `=` is list comprehension in Python and rather fast\n", + " neuron.synapse.delay = [delayMin + random.random() * delayMax for ii in range(len(neuron.synapse))]\n", + " # An even faster way will be to use numpy.random.rand(size) which produces array of random numbers uniformly distributed between 0 and 1\n", + " neuron.synapse.delay = delayMin + nprand.rand(len(neuron.synapse)) * delayMax\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now display the results, we use slice notation on `vec` to show the values of delay and weight for the first 5 elements in `/network`" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for item in net.vec[:5]:\n", + " neuron = moose.element(item)\n", + " print 'Delays for synapses on ', neuron.path, ':', neuron.synapse.delay\n", + " print 'Weights for synapses on ', neuron.path, ':', neuron.synapse.weight" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Delays for synapses on /network[0] : [ 2.16949827 2.87672892 0.55775816 1.5307453 1.2545798 3.08150047\n", + " 1.69471445 1.72783837]\n", + "Weights for synapses on /network[0] : [ 0.01378044 0.16739938 0.18983276 0.36676815 0.1026694 0.40671933\n", + " 0.01169365 0.2939791 ]\n", + "Delays for synapses on /network[1] : [ 0.66554382 0.69812038 3.84877248]\n", + "Weights for synapses on /network[1] : [ 0.32135398 0.2293562 0.35553433]\n", + "Delays for synapses on /network[2] : [ 2.84297188 3.64714918 3.59338126 2.01446565 1.1388517 1.91031348\n", + " 3.82746114]\n", + "Weights for synapses on /network[2] : [ 0.12762092 0.06323899 0.00916775 0.11610243 0.04453261 0.46170508\n", + " 0.30207453]\n", + "Delays for synapses on /network[3] : [ 3.14259038 1.73694338 1.9056121 1.96542664 1.11544011 2.55803099]\n", + "Weights for synapses on /network[3] : [ 0.30468313 0.04061773 0.18337534 0.47436774 0.04179184 0.30259949]\n", + "Delays for synapses on /network[4] : [ 1.08777299 1.71847959 3.5191226 3.84163071 3.84634335]\n", + "Weights for synapses on /network[4] : [ 0.29244741 0.10342571 0.3912255 0.02361261 0.27258286]\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/examples/snippets/tabledemo.py b/examples/snippets/tabledemo.py new file mode 100644 index 0000000..47dd254 --- /dev/null +++ b/examples/snippets/tabledemo.py @@ -0,0 +1,94 @@ +# tabledemo.py --- +# +# Filename: tabledemo.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri Aug 29 18:26:20 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +""":class:`Table` can be used for recording and saving data in ascii text formats.""" + +import sys +sys.path.append('../../python') +import moose + +def example(): + """In this example we create a square-pulse generator object and + record the output using a table. + + The steps are: + + 1. Create a PulseGen element `pulse`. + + 2. Set `delay[0]=1.0`, `width[0]=0.2`, `level[0]=0.5`, so it + generates 0.2 s wide square pulses with 0.5 amplitude every 1 s. + + 3. Create a Table element `tab`. + + 4. Connect the `outputValue` field of `pulse` to `tab`. + + 5. We set tick-interval of ticks 0 and 1 to 0.01 and schedule + `pulse` on tick 0 and `tab` on tick 1. + + 5. Run the simulation for 5 s and save data to the ascii file + `output_tabledemo.csv`. + + """ + pg = moose.PulseGen('pulse') + pg.delay[0] = 1.0 + pg.width[0] = 0.2 + pg.level[0] = 0.5 + tab = moose.Table('tab') + moose.connect(tab, 'requestOut', pg, 'getOutputValue') + moose.setClock(0, 0.01) + moose.setClock(1, 0.01) + moose.useClock(0, pg.path, 'process') + moose.useClock(1, tab.path, 'process') + moose.reinit() + moose.start(5.0) + tab.plainPlot('output_tabledemo.csv') + +if __name__ == '__main__': + example() + + +# +# tabledemo.py ends here diff --git a/examples/snippets/testHsolve.py b/examples/snippets/testHsolve.py new file mode 100644 index 0000000..7eba662 --- /dev/null +++ b/examples/snippets/testHsolve.py @@ -0,0 +1,314 @@ + +# testHsolve.py --- +# Upi Bhalla, NCBS Bangalore, 9 June 2013. +# +# Commentary: +# +# A small compartmental model that demonstrates +# a) how to set up a multicompartmental model using SymCompartments +# b) Solving this with the default Exponential Euler (EE) method +# c) Solving this with the Hsolver. +# d) What happens at different timesteps. +# +# +# Also have a look at what happens without the useInterpolate flag for +# the ion channels, even though the voltage range is subdivided into 3000 +# intervals. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import pylab +import numpy +import math +import moose +import moose.utils + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def create_squid(): + """Create a single compartment squid model.""" + parent = moose.Neutral ('/n' ) + compt = moose.SymCompartment( '/n/compt' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 * 0.5 + compt.Rm = 4.2e5 * 5.0 + compt.Ra = 7639.44e3 + nachan = moose.HHChannel( '/n/compt/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) + #This is important: one can run without it but the output will diverge. + xGate.useInterpolation = 1 + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) + yGate.useInterpolation = 1 + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') + + kchan = moose.HHChannel( '/n/compt/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') + return compt + +def create_spine( parentCompt, parentObj, index, frac, length, dia, theta ): + """Create spine of specified dimensions and index""" + RA = 1.0 + RM = 1.0 + CM = 0.01 + sname = 'shaft' + str(index) + hname = 'head' + str(index) + shaft = moose.SymCompartment( parentObj.path + '/' + sname ) + #moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single') + #moose.connect( parentCompt, 'distal', shaft, 'proximal','Single' ) + moose.connect( parentCompt, 'sphere', shaft, 'proximalOnly','Single' ) + x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) + y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) + z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) + shaft.x0 = x + shaft.y0 = y + shaft.z0 = z + sy = y + length * math.cos( theta * math.pi / 180.0 ) + sz = z + length * math.sin( theta * math.pi / 180.0 ) + shaft.x = x + shaft.y = sy + shaft.z = sz + shaft.diameter = dia / 2.0 + shaft.length = length + xa = math.pi * dia * dia / 400.0 + circumference = math.pi * dia / 10.0 + shaft.Ra = RA * length / xa + shaft.Rm = RM / ( length * circumference ) + shaft.Cm = CM * length * circumference + shaft.Em = EREST_ACT + shaft.initVm = EREST_ACT + + head = moose.SymCompartment( parentObj.path + '/' + hname ) + moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) + head.x0 = x + head.y0 = sy + head.z0 = sz + hy = sy + length * math.cos ( theta * math.pi / 180.0 ) + hz = sz + length * math.sin ( theta * math.pi / 180.0 ) + head.x = x + head.y = hy + head.z = hz + head.diameter = dia + head.length = length + xa = math.pi * dia * dia / 4.0 + circumference = math.pi * dia + head.Ra = RA * length / xa + head.Rm = RM / ( length * circumference ) + head.Cm = CM * length * circumference + head.Em = EREST_ACT + head.initVm = EREST_ACT + return head + +def create_spine_with_receptor( compt, cell, index, frac ): + FaradayConst = 96485.3415 # s A / mol + spineLength = 5.0e-6 + spineDia = 4.0e-6 + head = create_spine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) + gluR = moose.SynChan( head.path + '/gluR' ) + gluR.tau1 = 4e-3 + gluR.tau2 = 4e-3 + gluR.Gbar = 1e-6 + gluR.Ek= 10.0e-3 + moose.connect( head, 'channel', gluR, 'channel', 'Single' ) + + caPool = moose.CaConc( head.path + '/ca' ) + caPool.CaBasal = 1e-4 # 0.1 micromolar + caPool.tau = 0.01 + B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) + B = B / 20.0 # scaling factor for Ca buffering + caPool.B = B + moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) + + synHandler = moose.SimpleSynHandler( head.path + '/gluR/handler' ) + synHandler.synapse.num = 1 + moose.connect( synHandler, 'activationOut', gluR, 'activation', 'Single' ) + + return gluR + +def add_plot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def make_elec_plots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + add_plot( '/n/compt', 'getVm', 'elec/dendVm' ) + add_plot( '/n/head0', 'getVm', 'elec/head0Vm' ) + add_plot( '/n/head2', 'getVm', 'elec/head2Vm' ) + add_plot( '/n/head2/ca', 'getCa', 'elec/head2Ca' ) + +def dump_plots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + t = numpy.arange( 0, x.vector.size, 1 ) + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + #moose.utils.plotAscii(x.vector, file=fname) + +def make_spiny_compt(): + comptLength = 100e-6 + comptDia = 4e-6 + numSpines = 5 + compt = create_squid() + compt.inject = 1e-7 + compt.x0 = 0 + compt.y0 = 0 + compt.z0 = 0 + compt.x = comptLength + compt.y = 0 + compt.z = 0 + compt.length = comptLength + compt.diameter = comptDia + synInput = moose.SpikeGen( '/n/compt/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + cell = moose.element( '/n' ) + for i in range( numSpines ): + r = create_spine_with_receptor( compt, cell, i, i/float(numSpines) ) + #r.synapse.num = 1 + syn = moose.element( r.path + '/handler/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 + syn.delay = i * 1.0e-4 + """ + path = '/n/head' + str(i) + sib1 = moose.element( path ) + for j in range( i - 1 ): + sib2 = moose.element( '/n/head' + str(j) ) + moose.connect( sib1, 'sibling', sib2, 'sibling', 'Single' ) + """ + +def create_pool( compt, name, concInit ): + meshEntries = moose.element( compt.path + '/mesh' ) + pool = moose.Pool( compt.path + '/' + name ) + moose.connect( pool, 'mesh', meshEntries, 'mesh', 'Single' ) + pool.concInit = concInit + return pool + +def test_elec_alone(): + eeDt = 2e-6 + hSolveDt = 2e-5 + runTime = 0.02 + + make_spiny_compt() + make_elec_plots() + head2 = moose.element( '/n/head2' ) + moose.setClock( 0, 2e-6 ) + moose.setClock( 1, 2e-6 ) + moose.setClock( 2, 2e-6 ) + moose.setClock( 8, 0.1e-3 ) + moose.useClock( 0, '/n/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/n/##[ISA=Compartment]', 'process' ) + moose.useClock( 2, '/n/##[ISA=ChanBase],/n/##[ISA=SynBase],/n/##[ISA=CaConc],/n/##[ISA=SpikeGen]','process') + moose.useClock( 8, '/graphs/elec/#', 'process' ) + moose.reinit() + moose.start( runTime ) + dump_plots( 'instab.plot' ) + # make Hsolver and rerun + hsolve = moose.HSolve( '/n/hsolve' ) + moose.useClock( 1, '/n/hsolve', 'process' ) + hsolve.dt = 20e-6 + hsolve.target = '/n/compt' + moose.le( '/n' ) + for dt in ( 20e-6, 50e-6, 100e-6 ): + print 'running at dt =', dt + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + hsolve.dt = dt + moose.reinit() + moose.start( runTime ) + dump_plots( 'h_instab' + str( dt ) + '.plot' ) + +def main(): + test_elec_alone() + +if __name__ == '__main__': + main() + +# +# testHsolve.py ends here diff --git a/examples/snippets/testRdesigneur.py b/examples/snippets/testRdesigneur.py new file mode 100644 index 0000000..c776481 --- /dev/null +++ b/examples/snippets/testRdesigneur.py @@ -0,0 +1,205 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## testRdesigneur.py: Builds a spiny compartment and populates it with +## a molecule that diffuses. +################################################################## + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +#sys.path.append( '../util' ) +from PyQt4 import QtGui +import rdesigneur as rd +import moogli + +RM = 1.0 +RA = 1.0 +CM = 0.01 +runtime = 1.0 +diffConst = 1e-12 +dendLen = 100e-6 +numDendSegments = 50 +segLen = dendLen / numDendSegments +spineSpacing = 2.0e-6 +spineSpacingDistrib = 0.0 +spineSize = 1.0 +spineSizeDistrib = 0.2 +spineAngle= 0.0 +spineAngleDistrib = 2*numpy.pi + + +# Here we define a function that is used to make a cell prototype. Normally +# it would load in a model from a file. +def makeCellProto( name ): + print 'IN: makeCellProto( ', name, ')' + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + for i in range( numDendSegments ): + ec = rd.buildCompt( elec, 'dend' + str(i), segLen, 2.0e-6, i * segLen, RM, RA, CM ) + ecompt.append( ec ) + if i > 0: + moose.connect( ecompt[i-1], 'axial', ec, 'raxial' ) + else: + ec.name = "soma" + for i in ecompt: + i.z0 = i.x0 + i.x0 = 0 + i.z = i.x + i.x = 0 + +# This line is used so that rdesigneur knows about the cell proto function +rd.makeCellProto = makeCellProto + +# This function is used to make the chem prototype. +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + for i in ( 'dend', 'spine', 'psd' ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i ) + compt.volume = 1e-18 + ca = moose.Pool( compt.path + '/Ca' ) + ca.concInit = 0.08e-3 + ca.diffConst = 1e-12 + + +def makeModel(): + moose.Neutral( '/library' ) + # Here we illustrate building the chem proto directly. This is not + # good practice as it takes the model definition away from the + # declaration of prototypes. + makeChemProto( 'cProto' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + meshLambda = 1e-6, \ + cellProto = [['makeCellProto()', 'elec' ]] ,\ + spineProto = [['makeSpineProto()', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spineSpacing', str( spineSpacing ), \ + 'spineSpacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "#", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/Ca', 'conc', '.', 'inject', 0, 2e-9 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + +def addPlot( objpath, field, plot, tick ): + if moose.exists( objpath ): + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + tab.tick = tick + return tab + else: + print "failed in addPlot(", objpath, field, plot, tick, ")" + return 0 + +def plotVm( plot, name ): + wc = moose.wildcardFind( '/model/elec/' + name + '#' ) + Vm = [] + xpos = [] + for i in wc: + Vm.append( i.Vm ) + xpos.append( i.z0 ) + if len( wc ) > 0: + plot.plot( xpos, Vm, label = name + 'Vm' ) + + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and to confirm that the chemical contents of the spines align + with the electrical. Just a single molecule Ca is involved. + It diffuses and we plot the distribution. + It causes 'inject' of the relevant compartment to rise. + """ + makeModel() + + # Create the output tables + graphs = moose.Neutral( '/graphs' ) + #dendVm = addPlot( 'model/elec/dend', 'getVm', 'dendVm', 8 ) + addPlot( 'model/chem/dend/Ca[0]', 'getConc', 'dCa0', 18 ) + addPlot( 'model/chem/dend/Ca[25]', 'getConc', 'dCa25', 18 ) + addPlot( 'model/chem/dend/Ca[49]', 'getConc', 'dCa49', 18 ) + addPlot( 'model/chem/spine/Ca[0]', 'getN', 'sCa0', 18 ) + addPlot( 'model/chem/spine/Ca[25]', 'getN', 'sCa25', 18 ) + addPlot( 'model/chem/spine/Ca[49]', 'getN', 'sCa49', 18 ) + addPlot( 'model/chem/psd/Ca[0]', 'getConc', 'pCa0', 18 ) + addPlot( 'model/chem/psd/Ca[25]', 'getConc', 'pCa25', 18 ) + addPlot( 'model/chem/psd/Ca[49]', 'getConc', 'pCa49', 18 ) + + d = moose.vec( '/model/chem/dend/Ca' ) + s = moose.vec( '/model/chem/spine/Ca' ) + p = moose.vec( '/model/chem/psd/Ca' ) + s[5].nInit = 1000 + s[40].nInit = 5000 + moose.reinit() + moose.start( runtime ) + + fig = plt.figure( figsize = (13,10 ) ) + p1 = fig.add_subplot( 311 ) + plotVm( p1, 'dend' ) + plotVm( p1, 'head' ) + plotVm( p1, 'psd' ) + p1.legend() + #time = numpy.arange( 0, dendVm.vector.size, 1 ) * dendVm.dt + #p1.plot( time, dendVm.vector, label = 'dendVm' ) + p2 = fig.add_subplot( 312 ) + p2.plot( d.conc, label = 'idendCa' ) + p2.plot( s.conc, label = 'ispineCa' ) + p2.plot( p.conc, label = 'ipsdCa' ) + p2.legend() + ''' + p2 = fig.add_subplot( 312 ) + for i in moose.wildcardFind( '/graphs/#Ca#' ): + time = numpy.arange( 0, i.vector.size, 1 ) * i.dt + p2.plot( time, i.vector, label = i.name ) + p2.legend() + ''' + p3 = fig.add_subplot( 313 ) + p3.plot( getMidpts('dend'), d.conc, label = 'dendCa' ) + #p3.plot( range( 0, len( d ) ), d.conc, label = 'dendCa' ) + + + p3.plot( getMidpts('spine'), s.conc, label = 'spineCa' ) + p3.plot( getMidpts('psd'), p.conc, label = 'psdCa' ) + p3.legend() + + plt.show() + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +def getMidpts( compt ): + scale = 1.0 + midpt = moose.element( '/model/chem/' + compt ).voxelMidpoint + xpt = [i*scale for i in midpt[2*len(midpt)/3:] ] + #for i in range( 0, len( midpt)/ 3 ): + #xpt.append( midpt[i] * 1e6 ) + return xpt + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/testSigNeur.py b/examples/snippets/testSigNeur.py new file mode 100644 index 0000000..679bb31 --- /dev/null +++ b/examples/snippets/testSigNeur.py @@ -0,0 +1,537 @@ +# __DEPRECATED__ __BROKEN__ + +# testSigNeur.py --- +# Upi Bhalla, NCBS Bangalore 2013. +# +# Commentary: +# +# A toy compartmental neuronal + chemical model. The neuronal model +# geometry sets up the chemical volume to match the parent dendrite +# and five dendritic spines, each with a shaft and head. This volume +# mapping uses the NeuroMesh, SpineMesh and PsdMesh classes from MOOSE. +# There is a +# 3-compartment chemical model to go with this: one for the dendrite, +# one for the spine head, and one for the postsynaptic density. Note +# that the three mesh classes distribute the chemical model appropriately +# to all the respective spines, and set up the diffusion to the dendrite. +# The electrical model contributes the incoming calcium flux to the +# chemical model. This comes from the synaptic channels. +# The signalling here does two things to the electrical model. First, the +# amount of receptor in the chemical model controls the amount of glutamate +# receptor in the PSD. Second, there is a small kinase reaction that +# phosphorylates and inactivates the dendritic potassium channel. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' +import math + +import moose + +EREST_ACT = -70e-3 + +# Gate equations have the form: +# +# y(x) = (A + B * x) / (C + exp((x + D) / F)) +# +# where x is membrane voltage and y is the rate constant for gate +# closing or opening + +Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': + -1e5, # 'A_B': + -1.0, # 'A_C': + -25e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 4e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 18e-3 # 'B_F': + ] +Na_h_params = [ 70.0, # 'A_A': + 0.0, # 'A_B': + 0.0, # 'A_C': + 0.0 - EREST_ACT, # 'A_D': + 0.02, # 'A_F': + 1000.0, # 'B_A': + 0.0, # 'B_B': + 1.0, # 'B_C': + -30e-3 - EREST_ACT, # 'B_D': + -0.01 # 'B_F': + ] +K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': + -1e4, # 'A_B': + -1.0, # 'A_C': + -10e-3 - EREST_ACT, # 'A_D': + -10e-3, # 'A_F': + 0.125e3, # 'B_A': + 0.0, # 'B_B': + 0.0, # 'B_C': + 0.0 - EREST_ACT, # 'B_D': + 80e-3 # 'B_F': + ] +VMIN = -30e-3 + EREST_ACT +VMAX = 120e-3 + EREST_ACT +VDIVS = 3000 + +def createSquid(): + """Create a single compartment squid model.""" + parent = moose.Neutral ('/n' ) + compt = moose.SymCompartment( '/n/compt' ) + Em = EREST_ACT + 10.613e-3 + compt.Em = Em + compt.initVm = EREST_ACT + compt.Cm = 7.85e-9 * 0.5 + compt.Rm = 4.2e5 * 5.0 + compt.Ra = 7639.44e3 + nachan = moose.HHChannel( '/n/compt/Na' ) + nachan.Xpower = 3 + xGate = moose.HHGate(nachan.path + '/gateX') + xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + nachan.Ypower = 1 + yGate = moose.HHGate(nachan.path + '/gateY') + yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) + yGate.useInterpolation = 1 + nachan.Gbar = 0.942e-3 + nachan.Ek = 115e-3+EREST_ACT + moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') + + kchan = moose.HHChannel( '/n/compt/K' ) + kchan.Xpower = 4.0 + xGate = moose.HHGate(kchan.path + '/gateX') + xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) + xGate.useInterpolation = 1 + kchan.Gbar = 0.2836e-3 + kchan.Ek = -12e-3+EREST_ACT + moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') + return compt + +def createSpine( parentCompt, parentObj, index, frac, length, dia, theta ): + """Create spine of specified dimensions and index""" + RA = 1.0 + RM = 1.0 + CM = 0.01 + shaftDia = dia / 5.0 + sname = 'shaft' + str(index) + hname = 'head' + str(index) + shaft = moose.SymCompartment( parentObj.path + '/' + sname ) + moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single' ) + x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) + y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) + z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) + shaft.x0 = x + shaft.y0 = y + shaft.z0 = z + sy = y + length * math.cos( theta * math.pi / 180.0 ) + sz = z + length * math.sin( theta * math.pi / 180.0 ) + shaft.x = x + shaft.y = sy + shaft.z = sz + shaft.diameter = dia / 2.0 + shaft.length = length + xa = math.pi * shaftDia * shaftDia / 4 + circumference = math.pi * shaftDia + shaft.Ra = RA * length / xa + shaft.Rm = RM / ( length * circumference ) + shaft.Cm = CM * length * circumference + shaft.Em = EREST_ACT + shaft.initVm = EREST_ACT + + head = moose.SymCompartment( parentObj.path + '/' + hname ) + moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) + head.x0 = x + head.y0 = sy + head.z0 = sz + hy = sy + length * math.cos ( theta * math.pi / 180.0 ) + hz = sz + length * math.sin ( theta * math.pi / 180.0 ) + head.x = x + head.y = hy + head.z = hz + head.diameter = dia + head.length = length + xa = math.pi * dia * dia / 4.0 + circumference = math.pi * dia + head.Ra = RA * length / xa + head.Rm = RM / ( length * circumference ) + head.Cm = CM * length * circumference + head.Em = EREST_ACT + head.initVm = EREST_ACT + #print head.Rm, head.Ra, head.Cm, head.diameter, head.length + #print shaft.Rm, shaft.Ra, shaft.Cm, shaft.diameter, shaft.length + return head + +def createSpineWithReceptor( compt, cell, index, frac ): + FaradayConst = 96485.3415 # s A / mol + spineLength = 5.0e-6 + spineDia = 4.0e-6 + head = createSpine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) + gluR = moose.SynChan( head.path + '/gluR' ) + gluR.tau1 = 4e-3 + gluR.tau2 = 4e-3 + gluR.Gbar = 1e-6 + gluR.Ek= 10.0e-3 + moose.connect( head, 'channel', gluR, 'channel', 'Single' ) + + caPool = moose.CaConc( head.path + '/ca' ) + caPool.CaBasal = 1e-4 # 0.1 micromolar + caPool.tau = 0.01 + B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) + B = B / 20.0 # scaling factor for Ca buffering + caPool.B = B + moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) + + return gluR + +def addPlot( objpath, field, plot ): + assert moose.exists( objpath ) + tab = moose.Table( '/graphs/' + plot ) + obj = moose.element( objpath ) + moose.connect( tab, 'requestOut', obj, field ) + return tab + +def makeElecPlots(): + graphs = moose.Neutral( '/graphs' ) + elec = moose.Neutral( '/graphs/elec' ) + addPlot( '/model/elec/compt', 'getVm', 'elec/dendVm' ) + addPlot( '/model/elec/head0', 'getVm', 'elec/head0Vm' ) + addPlot( '/model/elec/head2', 'getVm', 'elec/head2Vm' ) + addPlot( '/model/elec/head0/ca', 'getCa', 'elec/head0Ca' ) + addPlot( '/model/elec/head1/ca', 'getCa', 'elec/head1Ca' ) + addPlot( '/model/elec/head2/ca', 'getCa', 'elec/head2Ca' ) + addPlot( '/model/elec/head0/gluR', 'getIk', 'elec/head0Ik' ) + addPlot( '/model/elec/head1/gluR', 'getIk', 'elec/head1Ik' ) + addPlot( '/model/elec/head2/gluR', 'getIk', 'elec/head2Ik' ) + addPlot( '/model/elec/head1/gluR', 'getGbar', 'elec/head1Gbar' ) + addPlot( '/model/elec/head2/gluR', 'getGbar', 'elec/head2Gbar' ) + +def dumpPlots( fname ): + if ( os.path.exists( fname ) ): + os.remove( fname ) + for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): + moose.element( x[0] ).xplot( fname, x[0].name ) + +def makeSpinyCompt(): + comptLength = 30e-6 + comptDia = 6e-6 + numSpines = 5 + compt = createSquid() + compt.inject = 0 + compt.x0 = 0 + compt.y0 = 0 + compt.z0 = 0 + compt.x = comptLength + compt.y = 0 + compt.z = 0 + compt.length = comptLength + compt.diameter = comptDia + synInput = moose.SpikeGen( '/n/compt/synInput' ) + synInput.refractT = 47e-3 + synInput.threshold = -1.0 + synInput.edgeTriggered = 0 + synInput.Vm( 0 ) + cell = moose.element( '/n' ) + for i in range( numSpines ): + r = createSpineWithReceptor( compt, cell, i, i/float(numSpines) ) + r.synapse.num = 1 + syn = moose.element( r.path + '/synapse' ) + moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) + syn.weight = 0.2 * i * ( 4 - i ) + syn.delay = i * 1.0e-3 + +def createPool( compt, name, concInit ): + meshEntries = moose.element( compt.path + '/mesh' ) + pool = moose.Pool( compt.path + '/' + name ) + moose.connect( pool, 'mesh', meshEntries, 'mesh', 'Single' ) + pool.concInit = concInit + pool.diffConst = 1e-11 + return pool + + +def createChemModel( neuroCompt, spineCompt, psdCompt ): + # Stuff in spine + psd + # The psdCa pool is an unfortunate necessity because of limitations in + # the solver setup that require molecules to diffuse through all + # compartments, at least as of the July 2013 version. + psdCa = createPool( psdCompt, 'Ca', 0.0001 ) + psdGluR = createPool( psdCompt, 'psdGluR', 1 ) + headCa = createPool( spineCompt, 'Ca', 1e-4 ) + headGluR = createPool( spineCompt, 'headGluR', 2 ) + toPsd = createPool( spineCompt, 'toPsd', 0 ) + toPsdInact = createPool( spineCompt, 'toPsdInact', 1e-3 ) + turnOnPsd = moose.Reac( spineCompt.path + '/turnOnPsd' ) + moose.connect( turnOnPsd, 'sub', headCa, 'reac', 'OneToOne' ) + moose.connect( turnOnPsd, 'sub', toPsdInact, 'reac', 'OneToOne' ) + moose.connect( turnOnPsd, 'prd', toPsd, 'reac', 'OneToOne' ) + turnOnPsd.Kf = 1e3 + turnOnPsd.Kb = 1 + toPsdEnz = moose.Enz( toPsd.path + '/enz' ) + toPsdEnzCplx = moose.Pool( toPsdEnz.path + '/cplx' ) + mesh = moose.element( spineCompt.path + '/mesh' ) + moose.connect( toPsdEnzCplx, 'mesh', mesh, 'mesh' ) + toPsdEnzCplx.concInit = 0 + moose.connect( toPsdEnz, 'enz', toPsd, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'sub', headGluR, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'prd', psdGluR, 'reac', 'OneToOne' ) + moose.connect( toPsdEnz, 'cplx', toPsdEnzCplx, 'reac', 'OneToOne' ) + toPsdEnz.Km = 1.0e-3 + toPsdEnz.kcat = 10.0 + fromPsd = moose.Reac( psdCompt.path + '/fromPsd' ) + moose.connect( fromPsd, 'sub', psdGluR, 'reac', 'OneToOne' ) + moose.connect( fromPsd, 'prd', headGluR, 'reac', 'OneToOne' ) + fromPsd.Kf = 0.5 + fromPsd.Kb = 0.0 + # Stuff in dendrite + dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) + bufCa = moose.Pool( neuroCompt.path + '/bufCa' ) + mesh = moose.element( neuroCompt.path + '/mesh' ) + moose.connect( mesh, 'mesh', bufCa, 'mesh', 'Single' ) + bufCa.concInit = 1e-4 + pumpCa = moose.Reac( neuroCompt.path + '/pumpCa' ) + moose.connect( pumpCa, 'sub', dendCa, 'reac', 'OneToOne' ) + moose.connect( pumpCa, 'prd', bufCa, 'reac', 'OneToOne' ) + pumpCa.Kf = 1 + pumpCa.Kb = 1 + dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) + dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) + dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) + moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) + moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) + moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) + dendTurnOnKinase.Kf = 50000 + dendTurnOnKinase.Kb = 1 + dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) + dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) + moose.connect( dendKinaseEnzCplx, 'mesh', mesh, 'mesh' ) + kChan = createPool( neuroCompt, 'kChan', 1e-3 ) + kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) + moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) + moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) + dendKinaseEnz.Km = 1e-4 + dendKinaseEnz.kcat = 20 + dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) + moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) + moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) + dendPhosphatase.Kf = 1 + dendPhosphatase.Kb = 0.0 + + + +def makeNeuroMeshModel(): + makeSpinyCompt() + diffLength = moose.element( '/n/compt' ).length + diffLength = diffLength / 10.0 + elec = moose.element( '/n' ) + elec.name = 'elec' + model = moose.Neutral( '/model' ) + moose.move( elec, model ) + synInput = moose.element( '/model/elec/compt/synInput' ) + synInput.refractT = 47e-3 + + chem = moose.Neutral( '/model/chem' ) + neuroCompt = moose.NeuroMesh( '/model/chem/neuroMesh' ) + neuroCompt.separateSpines = 1 + neuroCompt.diffLength = diffLength + neuroCompt.geometryPolicy = 'cylinder' + spineCompt = moose.SpineMesh( '/model/chem/spineMesh' ) + moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) + psdCompt = moose.PsdMesh( '/model/chem/psdMesh' ) + moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) + + createChemModel( neuroCompt, spineCompt, psdCompt ) + + # Put in the solvers, see how they fare. + nmksolve = moose.GslStoich( '/model/chem/neuroMesh/ksolve' ) + nmksolve.path = '/model/chem/neuroMesh/##' + nmksolve.compartment = moose.element( '/model/chem/neuroMesh' ) + nmksolve.method = 'rk5' + nm = moose.element( '/model/chem/neuroMesh/mesh' ) + moose.connect( nm, 'remesh', nmksolve, 'remesh' ) + #print "neuron: nv=", nmksolve.numLocalVoxels, ", nav=", nmksolve.numAllVoxels, nmksolve.numVarPools, nmksolve.numAllPools + + #print 'setting up smksolve' + smksolve = moose.GslStoich( '/model/chem/spineMesh/ksolve' ) + smksolve.path = '/model/chem/spineMesh/##' + smksolve.compartment = moose.element( '/model/chem/spineMesh' ) + smksolve.method = 'rk5' + sm = moose.element( '/model/chem/spineMesh/mesh' ) + moose.connect( sm, 'remesh', smksolve, 'remesh' ) + #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools + # + #print 'setting up pmksolve' + pmksolve = moose.GslStoich( '/model/chem/psdMesh/ksolve' ) + pmksolve.path = '/model/chem/psdMesh/##' + pmksolve.compartment = moose.element( '/model/chem/psdMesh' ) + pmksolve.method = 'rk5' + pm = moose.element( '/model/chem/psdMesh/mesh' ) + moose.connect( pm, 'remesh', pmksolve, 'remesh' ) + #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools + # + + #print 'Assigning the cell model' + # Now to set up the model. + neuroCompt.cell = elec + ns = neuroCompt.numSegments + #assert( ns == 11 ) # dend, 5x (shaft+head) + ndc = neuroCompt.numDiffCompts + assert( ndc == 10 ) + ndc = neuroCompt.mesh.num + assert( ndc == 10 ) + sdc = spineCompt.mesh.num + assert( sdc == 5 ) + pdc = psdCompt.mesh.num + assert( pdc == 5 ) + # + # We need to use the spine solver as the master for the purposes of + # these calculations. This will handle the diffusion calculations + # between head and dendrite, and between head and PSD. + smksolve.addJunction( nmksolve ) + #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools + smksolve.addJunction( pmksolve ) + #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools + # Have to pass a message between the various solvers. + foo = moose.vec( '/model/chem/spineMesh/headGluR' ) + + # oddly, numLocalFields does not work. + ca = moose.element( '/model/chem/neuroMesh/Ca' ) + assert( ca.lastDimension == ndc ) + + moose.vec( '/model/chem/spineMesh/headGluR' ).nInit = 100 + moose.vec( '/model/chem/psdMesh/psdGluR' ).nInit = 0 + + # set up adaptors + aCa = moose.Adaptor( '/model/chem/spineMesh/adaptCa', 5 ) + adaptCa = moose.vec( '/model/chem/spineMesh/adaptCa' ) + chemCa = moose.vec( '/model/chem/spineMesh/Ca' ) + assert( len( adaptCa ) == 5 ) + for i in range( 5 ): + path = '/model/elec/head' + str( i ) + '/ca' + elecCa = moose.element( path ) + moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) + moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) + adaptCa.outputOffset = 0.0001 # 100 nM offset in chem. + adaptCa.scale = 0.05 # 0.06 to 0.003 mM + + aGluR = moose.Adaptor( '/model/chem/psdMesh/adaptGluR', 5 ) + adaptGluR = moose.vec( '/model/chem/psdMesh/adaptGluR' ) + chemR = moose.vec( '/model/chem/psdMesh/psdGluR' ) + assert( len( adaptGluR ) == 5 ) + for i in range( 5 ): + path = '/model/elec/head' + str( i ) + '/gluR' + elecR = moose.element( path ) + moose.connect( adaptGluR[i], 'outputSrc', elecR, 'setGbar', 'Single' ) + #moose.connect( chemR, 'nOut', adaptGluR, 'input', 'OneToOne' ) + # Ksolve isn't sending nOut. Not good. So have to use requestOut. + moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToOne' ) + adaptGluR.outputOffset = 1e-7 # pS + adaptGluR.scale = 1e-6 / 100 # from n to pS + + adaptK = moose.Adaptor( '/model/chem/neuroMesh/adaptK' ) + chemK = moose.element( '/model/chem/neuroMesh/kChan' ) + elecK = moose.element( '/model/elec/compt/K' ) + moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) + moose.connect( adaptK, 'outputSrc', elecK, 'setGbar', 'Single' ) + adaptK.scale = 0.3 # from mM to Siemens + """ + """ + + +def makeChemPlots(): + graphs = moose.Neutral( '/graphs' ) + addPlot( '/model/chem/psdMesh/psdGluR[0]', 'getN', 'psd0R' ) + addPlot( '/model/chem/psdMesh/psdGluR[1]', 'getN', 'psd1R' ) + addPlot( '/model/chem/psdMesh/psdGluR[2]', 'getN', 'psd2R' ) + addPlot( '/model/chem/spineMesh/Ca[0]', 'getConc', 'spine0Ca' ) + addPlot( '/model/chem/spineMesh/Ca[1]', 'getConc', 'spine1Ca' ) + addPlot( '/model/chem/spineMesh/Ca[2]', 'getConc', 'spine2Ca' ) + addPlot( '/model/chem/neuroMesh/Ca[0]', 'getConc', 'dend0Ca' ) + addPlot( '/model/chem/neuroMesh/Ca[1]', 'getConc', 'dend1Ca' ) + addPlot( '/model/chem/neuroMesh/Ca[2]', 'getConc', 'dend2Ca' ) + addPlot( '/model/chem/neuroMesh/Ca[3]', 'getConc', 'dend3Ca' ) + addPlot( '/model/chem/neuroMesh/Ca[6]', 'getConc', 'dend6Ca' ) + addPlot( '/model/chem/neuroMesh/Ca[9]', 'getConc', 'dend9Ca' ) + addPlot( '/model/chem/neuroMesh/kChan_p[4]', 'getConc', 'kChan_p4' ) + addPlot( '/model/chem/neuroMesh/kChan[4]', 'getConc', 'kChan4' ) + addPlot( '/model/chem/neuroMesh/Ca.kinase[4]', 'getConc', 'dendKinase4' ) + addPlot( '/model/chem/spineMesh/toPsd[0]', 'getConc', 'toPsd0' ) + addPlot( '/model/chem/spineMesh/toPsd[2]', 'getConc', 'toPsd2' ) + addPlot( '/model/chem/spineMesh/toPsd[4]', 'getConc', 'toPsd4' ) + #addPlot( '/n/neuroMesh/Ca', 'getConc', 'dendCa' ) + #addPlot( '/n/neuroMesh/inact_kinase', 'getConc', 'inactDendKinase' ) + #addPlot( '/n/psdMesh/psdGluR', 'getN', 'psdGluR' ) + +def testNeuroMeshMultiscale(): + elecDt = 50e-6 + chemDt = 2e-3 + plotDt = 5e-4 + plotName = 'nm.plot' + + makeNeuroMeshModel() + """ + moose.le( '/model/chem/spineMesh/ksolve' ) + print 'Neighbors:' + for t in moose.element( '/model/chem/spineMesh/ksolve/junction' ).neighbors['masterJunction']: + print 'masterJunction <-', t.path + for t in moose.wildcardFind( '/model/chem/#Mesh/ksolve' ): + k = moose.element( t[0] ) + print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels + """ + + makeChemPlots() + makeElecPlots() + moose.setClock( 0, elecDt ) + moose.setClock( 1, elecDt ) + moose.setClock( 2, elecDt ) + moose.setClock( 5, chemDt ) + moose.setClock( 6, chemDt ) + moose.setClock( 7, plotDt ) + moose.setClock( 8, plotDt ) + moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) + moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) + moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') + moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) + moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) + moose.useClock( 7, '/graphs/#', 'process' ) + moose.useClock( 8, '/graphs/elec/#', 'process' ) + moose.useClock( 5, '/model/chem/#Mesh/ksolve', 'init' ) + moose.useClock( 6, '/model/chem/#Mesh/ksolve', 'process' ) + hsolve = moose.HSolve( '/model/elec/hsolve' ) + moose.useClock( 1, '/model/elec/hsolve', 'process' ) + hsolve.dt = elecDt + hsolve.target = '/model/elec/compt' + moose.reinit() + moose.reinit() + + moose.start( 1.0 ) + dumpPlots( plotName ) + + +def main(): + testNeuroMeshMultiscale() + +if __name__ == '__main__': + main() + +# +# testSigNeur.py ends here. diff --git a/examples/snippets/testWigglySpines.py b/examples/snippets/testWigglySpines.py new file mode 100644 index 0000000..36a8294 --- /dev/null +++ b/examples/snippets/testWigglySpines.py @@ -0,0 +1,223 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## testRdesigneur.py: Builds a spiny compartment and populates it with +## a molecule that diffuses. +################################################################## + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +sys.path.append( '../util' ) +import rdesigneur as rd +from PyQt4 import QtGui +import moogli + +PI = 3.141592653 +ScalingForTesting = 10 +RM = 1.0 / ScalingForTesting +RA = 1.0 * ScalingForTesting +CM = 0.01 * ScalingForTesting +runtime = 1.0 +diffConst = 1e-12 +dendLen = 10e-6 +spineSpacing = 1.5e-6 +spineSpacingDistrib = 1e-10 +spineSize = 1.0 +spineSizeDistrib = 0 +spineAngle= numpy.pi / 2.0 +spineAngleDistrib = 0.0 + + +def makeCellProto( name ): + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + ec = rd.buildCompt( elec, 'dend', dendLen, 2.0e-6, 0, RM, RA, CM ) + elec.buildSegmentTree() + +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + for i in ( ['dend', 1e-18], ['spine', 1e-19], ['psd', 1e-20] ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i[0] ) + compt.volume = i[1] + Ca = moose.Pool( compt.path + '/Ca' ) + Ca.concInit = 0.08 + Ca.diffConst = 1e-11 + +def makeSpineProto2( name ): + spine = moose.Neutral( '/library/' + name ) + shaft = rd.buildCompt( spine, 'shaft', 1e-6, 0.2e-6, 0, RM, RA, CM ) + head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 1e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def makeModel(): + moose.Neutral( '/library' ) + makeCellProto( 'cellProto' ) + makeChemProto( 'cProto' ) + makeSpineProto2( 'spine' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + stealCellFromLibrary = True, \ + meshLambda = 1e-6, \ + cellProto = [['cellProto', 'elec' ]] ,\ + spineProto = [['spineProto', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "#", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/Ca', 'conc', '.', 'inject', False, 0, 2e-9 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + +def p2(x): + ''' + Print to 2 sig fig + ''' + print round(x, 1-int(numpy.floor(numpy.log10(x)))), + +def assertEq( a, b ): + print '.', + if not( numpy.fabs( a-b) / (a+b) < 1e-10 ): + print 'a!=b:', a, b + assert(False) + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and then to resize them using spine fields. These are the + fields that would be changed dynamically in a simulation with reactions + that affect spine geometry. + """ + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + caDend = moose.vec( '/model/chem/dend/Ca' ) + caHead = moose.vec( '/model/chem/spine/Ca' ) + caPsd = moose.vec( '/model/chem/psd/Ca' ) + eHead = moose.wildcardFind( '/model/elec/#head#' ) + graphs = moose.Neutral( '/graphs' ) + psdTab = moose.Table2( '/graphs/psdTab', len( caPsd ) ).vec + headTab = moose.Table2( '/graphs/headTab', len( caHead ) ).vec + dendTab = moose.Table2( '/graphs/dendTab', len( caDend ) ).vec + eTab = moose.Table( '/graphs/eTab', len( eHead ) ).vec + stimtab = moose.StimulusTable( '/stim' ) + stimtab.stopTime = 0.3 + stimtab.loopTime = 0.3 + stimtab.doLoop = True + stimtab.vector = [ 1.0 + numpy.sin( x ) for x in numpy.arange( 0, 2*PI, PI/1000 ) ] + estimtab = moose.StimulusTable( '/estim' ) + estimtab.stopTime = 0.001 + estimtab.loopTime = 0.001 + estimtab.doLoop = True + estimtab.vector = [ 1e-9*numpy.sin( x ) for x in numpy.arange( 0, 2*PI, PI/1000 ) ] + + for i in range( len( caPsd ) ): + moose.connect( psdTab[ i ], 'requestOut', caPsd[i], 'getConc' ) + for i in range( len( caHead ) ): + moose.connect( headTab[ i ], 'requestOut', caHead[i], 'getConc' ) + for i in range( len( caDend ) ): + moose.connect( dendTab[ i ], 'requestOut', caDend[i], 'getConc' ) + for i in range( len( eHead ) ): + moose.connect( eTab[ i ], 'requestOut', eHead[i], 'getVm' ) + moose.connect( stimtab, 'output', caDend, 'setConc', 'OneToAll' ) + dend = moose.element( '/model/elec/dend' ) + moose.connect( estimtab, 'output', dend, 'setInject' ) + + moose.reinit() + moose.start( 1 ) + + head0 = moose.element( '/model/elec/head0' ) + shaft1 = moose.element( '/model/elec/shaft1' ) + head2 = moose.element( '/model/elec/head2' ) + + # Here we scale the spine head length while keeping all vols constt. + print "Spine 0: longer head, same vol\nSpine 1: longer shaft" + print "Spine 2: Bigger head, same diffScale\n" + elecParms = [ (i.Rm, i.Cm, i.Ra) for i in ( head0, shaft1, head2) ] + chemParms = [ i.volume for i in ( caHead[0], caPsd[0], caHead[1], caPsd[1], caHead[2], caPsd[2] ) ] + + elec.spine[0].headLength *= 4 # 4x length + elec.spine[0].headDiameter *= 0.5 # 1/2 x dia + + # Here we scale the shaft length. Vols are not touched. + elec.spine[1].shaftLength *= 2 # 2 x length + + #Here we scale the spine head vol while retaining diffScale = xArea/len + # This gives 4x vol. + hdia = elec.spine[2].headDiameter + sdsolve = moose.element( '/model/chem/spine/dsolve' ) + elec.spine[2].headLength *= 2 # 2x length + elec.spine[2].headDiameter *= numpy.sqrt(2) # sqrt(2) x dia + hdia = elec.spine[2].headDiameter + + print "Checking scaling assertions: " + assertEq( elecParms[0][0] * 0.5 , head0.Rm ) + assertEq( elecParms[0][1] * 2 , head0.Cm ) + assertEq( elecParms[0][2] * 16 , head0.Ra ) + assertEq( chemParms[0] , caHead[0].volume ) + assertEq( chemParms[1] * 0.25 , caPsd[0].volume ) + + assertEq( elecParms[1][0] * 0.5 , shaft1.Rm ) + assertEq( elecParms[1][1] * 2 , shaft1.Cm ) + assertEq( elecParms[1][2] * 2 , shaft1.Ra ) + assertEq( chemParms[2] , caHead[1].volume ) + assertEq( chemParms[3] , caPsd[1].volume ) + + ratio = 2 * numpy.sqrt( 2 ) + assertEq( elecParms[2][0] / ratio , head2.Rm ) + assertEq( elecParms[2][1] * ratio , head2.Cm ) + assertEq( elecParms[2][2] , head2.Ra ) + assertEq( chemParms[4] * 4 , caHead[2].volume ) + assertEq( chemParms[5] * 2 , caPsd[2].volume ) + print "\nAll assertions cleared" + + moose.start( 2 ) + for i in range( len( psdTab ) ): + pylab.plot( psdTab[i].vector, label= 'PSD' + str(i) ) + pylab.legend() + pylab.figure() + for i in range( len( headTab ) ): + pylab.plot( headTab[i].vector, label= 'head' + str(i) ) + pylab.legend() + pylab.figure() + for i in range( len( dendTab ) ): + pylab.plot( dendTab[i].vector, label= 'dendCa' + str(i) ) + pylab.legend() + pylab.figure() + for i in range( len( eTab ) ): + pylab.plot( eTab[i].vector, label= 'headVm' + str(i) ) + #print i, len( eTab[i].vector ), eTab[i].vector + pylab.legend() + pylab.show() + + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/threading_demo.py b/examples/snippets/threading_demo.py new file mode 100644 index 0000000..a9fd15c --- /dev/null +++ b/examples/snippets/threading_demo.py @@ -0,0 +1,105 @@ +# test_moose_thread.py --- +# +# Filename: test_moose_thread.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Thu Mar 8 09:38:02 2012 (+0530) +# Version: +# Last-Updated: Thu Mar 8 15:16:03 2012 (+0530) +# By: Subhasis Ray +# Update #: 162 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Example of using multithreading to run a MOOSE simulation in +# parallel with querying MOOSE objects involved. See the documentatin +# of the classes to get an idea of this demo's function. +# + +# Change log: +# +# 2012-03-08 12:31:46 (+0530) Initial version by Subha +# + +# Code: + +import sys +from datetime import datetime +import threading +import Queue +import time + +import moose + +worker_queue = Queue.Queue() +status_queue = Queue.Queue() + +class WorkerThread(threading.Thread): + """This thread initializes the simulation (reinit) and then runs + the simulation in its run method. It keeps querying moose for + running status every second and returns when the simulation is + over. It puts its name in the global worker_queue at the end to + signal successful completion.""" + def __init__(self, runtime): + threading.Thread.__init__(self) + self.runtime = runtime + print 'Created WorkerThread of name', self.name + + def run(self): + print self.name, 'Starting run for', self.runtime, ' seconds' + moose.reinit() + moose.start(self.runtime) + while moose.isRunning(): + time.sleep(1.0) + print self.name, 'Table length', len(moose.Table('/tab').vector) + print self.name, 'Finishing simulation' + worker_queue.put(self.name) + +class StatusThread(threading.Thread): + """This thread checks the status of the moose worker thread by + checking the worker_queue for available entry. If there is + nothing, it goes to sleep for a second and then prints current + length of the table. If there is an entry, it puts its name in the + status queue, which is used by the main thread to recognize + successful completion.""" + def __init__(self, tab): + threading.Thread.__init__(self) + self.table = tab + print 'Created StatusThread of name', self.name + + def run(self): + while True: + try: + value = worker_queue.get(False) + print self.name, 'Received queue entry: ', value, '. Final table length:', len(self.table.vector), ' ... now Finishing' + status_queue.put(self.name) + return + except Queue.Empty: + time.sleep(1.0) + print self.name, 'Queue is empty. Current table length:', len(self.table.vector) + +if __name__ == '__main__': + pg = moose.PulseGen('pg') + pg.firstDelay = 10.0 + pg.firstLevel = 10.0 + pg.firstWidth = 5.0 + tab = moose.Table('tab') + moose.connect(tab, 'requestOut', pg, 'getOutputValue') + moose.setClock(0, 1.0) + moose.useClock(0, 'pg,tab', 'process') + t1 = WorkerThread(10000) + t2 = StatusThread(tab) + t2.start() + t1.start() + status_queue.get(True) + tab.xplot('threading_demo.dat', 'pulsegen_output') + print 'Ending threading_demo: final length of table', len(tab.vector) + +# +# threading_demo.py ends here diff --git a/examples/snippets/timetable.py b/examples/snippets/timetable.py new file mode 100644 index 0000000..e149a59 --- /dev/null +++ b/examples/snippets/timetable.py @@ -0,0 +1,161 @@ +# timetable.py --- +# +# Filename: timetable.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Jun 19 19:37:00 2013 (+0530) +# Version: +# Last-Updated: Thu Oct 02 +# By: Upi +# Update #: ? +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""Demonstrates the use of TimeTable elements in MOOSE. + +This scripts creates two time tables, #1 is filled with entries in a +numpy array and #2 is filled from a text file containing the event +times. + +The `state` field of #1, which becomes 1 when an event occurs and 0 +otherwise, is recorded. + +On the other hand, #2 is connected to a synapse (in a SynChan element) +to demonstrate artificial spike event generation. + +""" + +import os +import numpy as np +import moose + +import pylab + +simtime = 100 +simdt = 1e-3 + +def generate_poisson_times(rate=20, simtime=100, seed=1): + """Generate Poisson spike times using `rate`. Use `seed` for seeding + the numpy rng""" + np.random.seed(seed) # ensure repeatability + isi = np.random.exponential(rate, int(simtime/rate)) + # The stimulus times are the cumulative sum of the inter-stimulus intervals. + stimtimes = np.cumsum(isi) + # Select only stimulus times that are within simulation time - + # this may leave out some possible stimuli at the end, but the + # exoected number of Poisson events within simtime is + # simtime/rate. + stimtimes = stimtimes[stimtimes < simtime] + return stimtimes + +def timetable_nparray(): + """Create a time table and populate it with numpy array. The `vec` + field in a Table can be directly assigned a sequence to fill the + table entries. + + """ + times = generate_poisson_times(rate=20, simtime=simtime, seed=1) + model = moose.Neutral('/model') + tt = moose.TimeTable('%s/tt_array' % (model.path)) + tt.vector = times + return tt, times, + +def timetable_file(filename='timetable.txt'): + """Create a TimeTable and populate it from file specified by + `filename`. If `filename` does not exist, a file of the same name is + created and a random series of spike times is saved in it""" + if not os.access(filename, os.R_OK): + times = generate_poisson_times(rate=10, simtime=simtime, seed=1) + np.savetxt(filename, times) + model = moose.Neutral('/model') + tt = moose.TimeTable('%s/tt_file' % (model.path)) + tt.filename = filename + return tt, np.loadtxt(filename), + +def timetable_demo(): + tt_array, sp_array = timetable_nparray() + tt_file, sp_file = timetable_file() + # Create a synchan inside a compartment to demonstrate how to use + # TimeTable to send artificial spike events to a synapse. + comp = moose.Compartment('/model/comp') + comp.Em = -60e-3 + comp.Rm = 1e9 + comp.Cm = 1e-12 + synchan = moose.SynChan('/model/comp/synchan') + synchan.Gbar = 1e-6 + synchan.Ek = 0.0 + moose.connect(synchan, 'channel', comp, 'channel') + synh = moose.SimpleSynHandler( '/model/comp/synchan/synh' ) + moose.connect( synh, 'activationOut', synchan, 'activation') + synh.synapse.num = 1 + moose.connect(tt_file, 'eventOut', moose.element(synh.path + '/synapse'), 'addSpike') + # Data recording: record the `state` of the time table filled + # using array. + data = moose.Neutral('/data') + tab_array = moose.Table('/data/tab_array') + moose.connect(tab_array, 'requestOut', tt_array, 'getState') + # Record the synaptic conductance for the other time table, which + # is filled from a text file and sends spike events to a synchan. + tab_file = moose.Table('/data/tab_file') + moose.connect(tab_file, 'requestOut', synchan, 'getGk') + + # Scheduling + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.useClock(1, '/model/##[ISA=Compartment]', 'init') + moose.useClock(1, '/model/##,/data/##', 'process') + moose.reinit() + moose.start(simtime) + + # Plotting + pylab.subplot(2,1,1) + pylab.plot(sp_array, np.ones(len(sp_array)), 'rx', label='spike times from numpy array') + pylab.plot(np.linspace(0, simtime, len(tab_array.vector)), tab_array.vector, 'b-', label='TimeTable state') + pylab.legend() + pylab.subplot(2,1,2) + pylab.plot(sp_file, np.ones(len(sp_file)), 'rx', label='spike times from file') + pylab.plot(np.linspace(0, simtime, len(tab_file.vector)), tab_file.vector*1e6, 'b-', label='Syn Gk (uS)') + pylab.legend() + pylab.show() + +if __name__ == '__main__': + timetable_demo() + + + + +# +# timetable.py ends here diff --git a/examples/snippets/transportBranchingNeuron.py b/examples/snippets/transportBranchingNeuron.py new file mode 100644 index 0000000..b8616b5 --- /dev/null +++ b/examples/snippets/transportBranchingNeuron.py @@ -0,0 +1,217 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose + +diffConst = 0.1e-12 # m^2/sec +motorConst = 0.1e-6 # m/sec +aConcInit = 1 # millimolar, at soma. +bConcInit = 10 # millimolar, at dend tips. +plotScale = 20 + +def findTwigs( compt ): + pa = compt.parentVoxel + numkids = [ 0 ] * len( pa ) + for i in pa: + if i >= 0 and i < len( pa ): + numkids[i] += 1 + twigs = [] + for i in range( len( numkids ) ): + if numkids[i] == 0: + twigs.append( i ) + return twigs + +def makeModel(): + model = moose.Neutral( '/model' ) + # Make neuronal model. It has no channels, just for geometry + cell = moose.loadModel( './branching.p', '/model/cell', 'Neutral' ) + # We don't want the cell to do any calculations. Disable everything. + for i in moose.wildcardFind( '/model/cell/##' ): + i.tick = -1 + + # create container for model + model = moose.element( '/model' ) + chem = moose.Neutral( '/model/chem' ) + # The naming of the compartments is dicated by the places that the + # chem model expects to be loaded. + compt0 = moose.NeuroMesh( '/model/chem/compt0' ) + compt0.separateSpines = 0 + compt0.geometryPolicy = 'cylinder' + + #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) + makeChemModel( compt0 ) # Populate all compt with the chem system. + + compt0.diffLength = 1e-6 # This will be over 100 compartments. + # This is the magic command that configures the diffusion compartments. + compt0.subTreePath = "/model/cell/#" + #compt0.cell = cell + + # Build the solvers. No need for diffusion in this version. + ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) + dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) + stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) + + # Configure solvers + stoich0.compartment = compt0 + stoich0.ksolve = ksolve0 + stoich0.dsolve = dsolve0 + stoich0.path = '/model/chem/compt0/#' + assert( stoich0.numVarPools == 2 ) + assert( stoich0.numProxyPools == 0 ) + assert( stoich0.numRates == 0 ) + + moose.element( '/model/chem/compt0/a[0]' ).concInit = aConcInit + twigs = findTwigs( compt0 ) + print 'twigs = ', twigs + for i in twigs: + e = moose.element( '/model/chem/compt0/b[' + str(i) + ']' ) + e.concInit = bConcInit + + # Create the output tables + graphs = moose.Neutral( '/model/graphs' ) + makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) + makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) + num = twigs[0] + makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) + makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) + +def makeTab( plotname, molpath ): + tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table + # connect up the tables + moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); + + +def makeDisplay(): + plt.ion() + fig = plt.figure( figsize=(10,12) ) + compt = moose.element( '/model/chem/compt0' ) + + aConc = fig.add_subplot( 311 ) + plt.ylabel( 'x position + 10*aconc' ) + plt.xlabel( 'y position (microns)' ) + timeLabel = plt.text(0, 20, 'time = 0') + aConc.set_xlim( -5, 75 ) + aConc.set_ylim( -20, 40 ) + pos = compt.voxelMidpoint + i = len( pos ) / 3 + r2 = numpy.sqrt( 0.5 ) + yp = [ -r2 * pos[j] * 1e6 for j in range( i ) ] + xp = pos[i:2*i] * 1e6 - yp + aline, = aConc.plot( xp, yp, 'b.' ) + + bConc = fig.add_subplot( 312 ) + plt.ylabel( 'x position + 10*bconc' ) + plt.xlabel( 'y position (microns)' ) + bConc.set_xlim( -5, 75 ) + bConc.set_ylim( -20, 40 ) + bline, = bConc.plot( xp, yp, 'r.' ) + + timeSeries = fig.add_subplot( 313 ) + timeSeries.set_ylim( 0, bConcInit / 2.0 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'time (seconds)' ) + + fig.canvas.draw() + return ( timeSeries, fig, aline, bline, timeLabel, yp ) + +def updateDisplay( plotlist ): + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + plotlist[2].set_ydata( a.conc * plotScale + plotlist[5] ) + plotlist[3].set_ydata( b.conc * plotScale + plotlist[5] ) + plotlist[1].canvas.draw() + + +def finalizeDisplay( plotlist, cPlotDt ): + for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): + pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt + line1, = plotlist[0].plot( pos, x.vector, label=x.name ) + plt.legend() + plotlist[1].canvas.draw() + print( "Hit 'enter' to exit" ) + raw_input() + +def makeChemModel( compt ): + + # create molecules and reactions + a = moose.Pool( compt.path + '/a' ) + b = moose.Pool( compt.path + '/b' ) + + a.concInit = 0 + b.concInit = 0 + + # Assign parameters + a.diffConst = diffConst + a.motorConst = motorConst + b.diffConst = diffConst + b.motorConst = -motorConst + +def main(): + """ + transportBranchingNeuron: + This example illustrates bidirectional transport + embedded in the branching pseudo 1-dimensional geometry of a neuron. + This means that diffusion and transport only happen along the axis of + dendritic segments, not radially from inside to outside a dendrite, + nor tangentially around the dendrite circumference. + In this model there is a molecule **a** starting at the soma, which is + transported out to the dendrites. There is another molecule, **b**, + which is initially present at the dendrite tips, and is transported + toward the soma. + This example uses an external model file to specify a binary branching + neuron. This model does not have any spines. The electrical model is + used here purely for the geometry and is not part of the computations. + In this example we build trival chemical model just having + molecules **a** and **b** throughout the neuronal geometry, using + the makeChemModel function. + The model is set up to run using the Ksolve for integration and the + Dsolve for handling diffusion. + + The display has three parts: + + a. Animated pseudo-3D plot of neuronal geometry, where each point + represents a diffusive voxel and moves in the y-axis to show + changes in concentration of molecule a. + b. Similar animated pseudo-3D plot for molecule b. + c. Time-series plot that appears after the simulation has + ended. The plots are for the first and last diffusive voxel, + that is, the soma and the tip of one of the apical dendrites. + + """ + plotdt = 1 + animationdt = 5 + runtime = 600 + + makeModel() + plotlist = makeDisplay() + # Default Scheduling works fine for this model. + # Chemdt = 0.1, diffdt = 0.01, plotdt = 1 + + moose.reinit() + a = moose.vec( '/model/chem/compt0/a' ) + b = moose.vec( '/model/chem/compt0/b' ) + a0 = sum( a.n ) + b0 = sum( b.n ) + for i in range( 0, runtime, animationdt ): + moose.start( animationdt ) + plotlist[4].set_text( "time = %d" % i ) + updateDisplay( plotlist ) + + print 'mass consv a = ', a0, sum( a.n ), ', b = ', b0, sum( b.n ) + + finalizeDisplay( plotlist, plotdt ) + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/traub_naf.py b/examples/snippets/traub_naf.py new file mode 100644 index 0000000..cb124e4 --- /dev/null +++ b/examples/snippets/traub_naf.py @@ -0,0 +1,325 @@ +# traub_naf.py --- +# +# Filename: traub_naf.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Mon Apr 29 21:07:30 2013 (+0530) +# Version: +# Last-Updated: Mon May 6 18:50:14 2013 (+0530) +# By: subha +# Update #: 436 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""This is an example showing pymoose implementation of the NaF +channel in Traub et al 2005 + +Author: Subhasis Ray + +""" + +import numpy as np +from matplotlib import pyplot as plt +import os +os.environ['NUMPTHREADS'] = '1' +import moose +from moose import utils + +vmin = -120e-3 +vmax = 40e-3 +vdivs = 640 +v_array = np.linspace(vmin, vmax, vdivs+1) + +def create_naf_proto(): + """Create an NaF channel prototype in /library. You can copy it later + into any compartment or load a .p file with this channel using + loadModel. + + This channel has the conductance form: + + Gk(v) = Gbar * m^3 * h (V - Ek) + + We are using all SI units + + """ + if moose.exists('/library/NaF'): + return moose.element('/library/NaF') + if not moose.exists('/library'): + lib = moose.Neutral('/library') + channel = moose.HHChannel('/library/NaF') + shift = -3.5e-3 + # tau_m is defined piecewise: + # tau_m = 1.0e-3 * (0.025 + 0.14 * exp(( v + shift + 30e-3) / 10)) if v + shift < -30e-3 + # = 1.0e-3 * (0.02 + 0.145 * np.exp(( - v_array - shift - 30.0e-3) / 10.0e-3)) otherwise + tau_m = np.where((v_array + shift) < -30e-3, + 1.0e-3 * (0.025 + 0.14 * np.exp((v_array + shift + 30.0e-3) / 10.0e-3)), \ + 1.0e-3 * (0.02 + 0.145 * np.exp(( - v_array - shift - 30.0e-3) / 10.0e-3))) + inf_m = 1.0 / (1.0 + np.exp(( - v_array - shift - 38e-3) / 10e-3)) + tau_h = 1.0e-3 * (0.15 + 1.15 / ( 1.0 + np.exp(( v_array + 37.0e-3) / 15.0e-3))) + inf_h = 1.0 / (1.0 + np.exp((v_array + 62.9e-3) / 10.7e-3)) + channel.Xpower = 3 # Creates m-gate + # In svn version of moose you can even do: + # mgate = channel.gateX[0] + mgate = moose.element('%s/gateX' % (channel.path)) + mgate.tableA = inf_m / tau_m + mgate.tableB = 1 / tau_m + channel.Ypower = 1 # Creates h-gate + hgate = moose.element('%s/gateY' % (channel.path)) + hgate.tableA = inf_h / tau_h + hgate.tableB = 1 / tau_h + return channel + +def create_compartment(parent_path, name): + """This shows how to use the prototype channel on a compartment.""" + comp = moose.Compartment('%s/%s' % (parent_path, name)) + comp.Rm = 5e6 + comp.Ra = 1e9 + comp.Cm = 5e-9 + comp.initVm = -0.06 + comp.Em = -0.06 + protochan = create_naf_proto() + chan = moose.copy(protochan, comp, 'NaF') + chan.Gbar = 1e-6 + moose.connect(comp, 'channel', chan, 'channel') + return comp + +def setup_electronics(model_container, data_container, compartment): + """Setup voltage and current clamp circuit using DiffAmp and PID and + RC filter""" + command = moose.PulseGen('%s/command' % (model_container.path)) + command.delay[0] = 20e-3 + command.width[0] = 50e-3 + command.level[0] = 100e-9 + command.delay[1] = 1e9 + lowpass = moose.RC('%s/lowpass' % (model_container.path)) + lowpass.R = 1.0 + lowpass.C = 5e-4 + vclamp = moose.DiffAmp('%s/vclamp' % (model_container.path)) + vclamp.saturation = 1e10 + iclamp = moose.DiffAmp('%s/iclamp' % (model_container.path)) + iclamp.gain = 0.0 + iclamp.saturation = 1e10 + pid = moose.PIDController('%s/pid' % (model_container.path)) + pid.gain = compartment.Cm / 100e-6 # Cm/dt is a good number for gain + pid.tauI = 100e-6 # same as dt + pid.tauD = 0.0 + pid.saturation = 1e10 + # Current clamp circuit: connect command output to iclamp amplifier + # and the output of the amplifier to compartment. + moose.connect(command, 'output', iclamp, 'plusIn') + moose.connect(iclamp, 'output', compartment, 'injectMsg') + # Setup voltage clamp circuit: + # 1. Connect command output (which is now command) to lowpass + # filter. + # 2. Connect lowpass output to vclamp amplifier. + # 3. Connect amplifier output to PID's command input. + # 4. Connect Vm of compartment to PID's sensed input. + # 5. Connect PID output to compartment's injectMsg. + moose.connect(command, 'output', lowpass, 'injectIn') + moose.connect(lowpass, 'output', vclamp, 'plusIn') + moose.connect(vclamp, 'output', pid, 'commandIn') + moose.connect(compartment, 'VmOut', pid, 'sensedIn') + moose.connect(pid, 'output', compartment, 'injectMsg') + command_table = moose.Table('%s/command' % (data_container.path)) + moose.connect(command_table, 'requestOut', command, 'getOutputValue') + inject_table = moose.Table('%s/inject' % (data_container.path)) + moose.connect(inject_table, 'requestOut', compartment, 'getIm') + return {'command_tab': command_table, + 'inject_tab': inject_table, + 'iclamp': iclamp, + 'vclamp': vclamp, + 'pid': pid, + 'command': command} + +def do_vclamp(vclamp, iclamp, pid): + """Turn on voltage clamp and turn off current clamp""" + vclamp.gain = 1.0 + iclamp.gain = 0.0 + pid.gain = 5e-9/100e-6 # compartment.Cm / simulation.dt + +def do_iclamp(vclamp, iclamp, pid): + """Turn on current clamp and turn off voltage clamp""" + vclamp.gain = 0.0 + pid.gain = 0.0 + iclamp.gain = 1.0 + +def setup_model(): + """Setup the model and the electronic circuit. Also creates the data + container.""" + model = moose.Neutral('model') + data =moose.Neutral('/data') + comp = create_compartment(model.path, 'soma') + ret = setup_electronics(model, data, comp) + vmtab = moose.Table('%s/Vm' % (data.path)) + moose.connect(vmtab, 'requestOut', comp, 'getVm') + gktab = moose.Table('%s/Gk' % (data.path)) + moose.connect(gktab, 'requestOut', moose.element(comp.path + '/NaF'), 'getGk') + ret.update({'model': model, 'data': data, 'vm_tab': vmtab, 'gk_tab': gktab}) + return ret + +inited = False +def run_sim(model, data, simtime=100e-3, simdt=1e-6, plotdt=1e-4, solver='ee'): + """Reset and run the simulation. + + model: model container element + data: data container element + simtime: simulation run time + simdt: simulation timestep + plotdt: plotting time step + solver: neuronal solver to use. + + """ + global inited + if not inited: + utils.resetSim([model.path, data.path], simdt, plotdt, simmethod=solver) + inited = True + else: + moose.reinit() + moose.start(simtime) + +def run_clamp(model_dict, clamp, levels, holding=0.0, simtime=100e-3): + """Run either voltage or current clamp for default timing settings + with multiple levels of command input. + + model_dict: dictionary containing the model components - + `vlcamp` - the voltage clamp amplifier + `iclamp` - the current clamp amplifier + `model` - the model container + `data` - the data container + `inject_tab` - table recording membrane + `command_tab` - table recording command input for voltage or current clamp + `vm_tab` - table recording membrane potential + + clamp: string specifying clamp mode, either `voltage` or `current` + + levels: sequence of values for command input levels to be + simulated. + + holding: holding current or voltage + + Returns: + a dict containing the following lists of time series: + + `command` - list of command input time series + `inject` - list of of membrane current (includes injected current) time series + `vm` - list of membrane voltage time series + `t` - list of time points for all of the above + + """ + if clamp == 'voltage': + do_vclamp(model_dict['vclamp'], model_dict['iclamp'], model_dict['pid']) + elif clamp == 'current': + do_iclamp(model_dict['vclamp'], model_dict['iclamp'], model_dict['pid']) + else: + raise Exception('Only allowed clamp options are `voltage` and `current`') + cvec = [] + ivec = [] + vvec = [] + gvec = [] + tvec = [] + for level in levels: + model_dict['command'].level[0] = level + model_dict['command'].baseLevel = holding + print 'Running %s with holding=%g, level=%g' % (clamp, holding, model_dict['command'].level[0]) + run_sim(model_dict['model'], model_dict['data'], simtime) + ivec.append(np.asarray(model_dict['inject_tab'].vector)) + cvec.append(np.asarray(model_dict['command_tab'].vector)) + vvec.append(np.asarray(model_dict['vm_tab'].vector)) + gvec.append(np.asarray(model_dict['gk_tab'].vector)) + tvec.append(np.linspace(0, simtime, len(vvec[-1]))) + return {'command': cvec, + 'inject': ivec, + 'vm': vvec, + 'gk': gvec, + 't': tvec} + + + +if __name__ == '__main__': + mdict = setup_model() + current_levels = (-0.3e-8, 0.1e-8, 0.3e-8, 0.5e-8) + iclamp_data = run_clamp(mdict, 'current', current_levels) + voltage_levels = (-30e-3, -10e-3, 10e-3, 30e-3) + vclamp_data = run_clamp(mdict, 'voltage', voltage_levels, holding=-60e-3) + colors = ('r', 'g', 'b', 'k') + # Plot current clamp data + ifigure = plt.figure(1) + ifigure.suptitle('Current clamp') + vax = ifigure.add_subplot(2,2,1) + vax.set_title('Vm') + iax = ifigure.add_subplot(2,2,2) + iax.set_title('Injected current') + cax = ifigure.add_subplot(2,2,3) + cax.set_title('Command') + ivax = ifigure.add_subplot(2,2,4) + for ii in range(len(current_levels)): + t = iclamp_data['t'][ii] + vax.plot(t, iclamp_data['vm'][ii], color=colors[ii % len(colors)]) + iax.plot(t, iclamp_data['inject'][ii], color=colors[ii % len(colors)]) + cax.plot(t, iclamp_data['command'][ii], color=colors[ii % len(colors)]) + ivax.plot(t, iclamp_data['gk'][ii], color=colors[ii% len(colors)]) + # Plot voltage clamp data + vfigure = plt.figure(2) + vfigure.suptitle('Voltage clamp') + vax = vfigure.add_subplot(2,2,1) + vax.set_title('Vm') + iax = vfigure.add_subplot(2,2,2) + iax.set_title('Injected current') + cax = vfigure.add_subplot(2,2,3) + cax.set_title('Command') + ivax = vfigure.add_subplot(2,2,4) + # iv = [] + for ii in range(len(voltage_levels)): + t = vclamp_data['t'][ii] + vax.plot(t, vclamp_data['vm'][ii], color=colors[ii % len(colors)]) + iax.plot(t, vclamp_data['inject'][ii], color=colors[ii % len(colors)]) + cax.plot(t, vclamp_data['command'][ii], color=colors[ii% len(colors)]) + ivax.plot(t, vclamp_data['gk'][ii], color=colors[ii% len(colors)]) + # Select the i and v at midpoint + # mid = max(vclamp_data['vm'][ii]) + 0.5 * min(vclamp_data['vm'][ii]) + # sindices = np.argsort(vclamp_data['vm'][ii]) + # sorted_vm = np.sort(vclamp_data['vm'][ii]) + # mididx = np.searchsorted(sorted_vm, mid) + # mididx = sindices[mididx] + # iv.append((vclamp_data['inject'][ii][mididx], vclamp_data['vm'][ii][mididx])) + # iv = np.array(iv) + # ivax.plot(iv[:,0], iv[:,1], 'ko-') + + plt.show() + +# +# traub_naf.py ends here diff --git a/examples/snippets/tweakingParameters.py b/examples/snippets/tweakingParameters.py new file mode 100644 index 0000000..2f7a2a5 --- /dev/null +++ b/examples/snippets/tweakingParameters.py @@ -0,0 +1,75 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import moose +import pylab +import numpy + +def main(): + """ + This example illustrates parameter tweaking. It uses a kinetic model + for a relaxation oscillator, defined in kkit format. + We use the gsl solver here. + The model looks like this:: + + _________ + | | + V | + M-----Enzyme---->M* All in compartment A + |\ /| ^ + | \___basal___/ | + | | + endo | + | exo + | _______ | + | | \ | + V V \ | + M-----Enzyme---->M* All in compartment B + \ /| + \___basal___/ + + + The way it works: We set the run off for a few seconds with the original + model parameters. This version oscillates. Then we double the endo + and exo forward rates and run it further to show that the period becomes + nearly twice as fast. Then we restore endo and exo, and instead double + the initial amounts of M. We run it further again to see what happens. + This model takes several seconds to run. + """ + mfile = '../genesis/OSC_Cspace.g' + runtime = 4000.0 + modelId = moose.loadModel( mfile, 'model', 'gsl' ) + + moose.reinit() + moose.start( runtime ) + + # Here begins the parameter tweaking. + # Now we double the rates of the endo and exo reactions. + endo = moose.element( '/model/kinetics/endo' ) + endo.Kf *= 2.0 + exo = moose.element( '/model/kinetics/exo' ) + exo.Kf *= 2.0 + moose.start( runtime ) # run it again + + # Now we restore rates, but double the total amount of M. + endo.Kf /= 2.0 + exo.Kf /= 2.0 + M = moose.element( '/model/kinetics/A/M' ) + M.conc += M.concInit # concInit was the starting concentration. + moose.start( runtime ) # run it again + + # Now plot the whole lot. + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + pylab.plot( x.vector, label=x.name ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/snippets/twocells.py b/examples/snippets/twocells.py new file mode 100644 index 0000000..f3ce5a1 --- /dev/null +++ b/examples/snippets/twocells.py @@ -0,0 +1,159 @@ +# twocells.py --- +# +# Filename: twocells.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sat Aug 11 14:30:21 2012 (+0530) +# Version: +# Last-Updated: Sun Aug 12 15:45:38 2012 (+0530) +# By: subha +# Update #: 521 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# A demo to create a network of single compartmental neurons connected +# via alpha synapses. +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""This script demonstrates the use of SynChan class to setup synaptic +connection between two single-compartmental Hodgkin-Huxley type +neurons.""" +import sys +sys.path.append('../../python') +import os +import numpy as np +import matplotlib.pyplot as plt + +import moose +from ionchannel import create_1comp_neuron + +def create_model(): + """Create two single compartmental neurons, neuron_A is the + presynaptic neuron and neuron_B is the postsynaptic neuron. + + 1. The presynaptic cell's Vm is monitored by a SpikeGen + object. Whenever the Vm crosses the threshold of the spikegen, it + sends out a spike event message. + + 2. This is event message is received by a SynHandler, which + passes the event as activation parameter to a SynChan object. + + 3. The SynChan, which is connected to the postsynaptic neuron + as a channel, updates its conductance based on the activation + parameter. + + 4. The change in conductance due to a spike may evoke an + action potential in the post synaptic neuron. + + """ + model = moose.Neutral('/model') + nrn_a = create_1comp_neuron('/model/neuron_A')[0] + nrn_b = create_1comp_neuron('/model/neuron_B')[0] + #: SynChan for post synaptic neuron + synchan = moose.SynChan('/model/neuron_B/synchan') + synchan.Gbar = 1e-8 + synchan.tau1 = 2e-3 + synchan.tau2 = 2e-3 + msg = moose.connect(nrn_b, 'channel', synchan, 'channel') + #: Create SynHandler to handle spike event input and set the + #: activation input of synchan + synhandler = moose.SimpleSynHandler('/model/neuron_B/synhandler') + synhandler.synapse.num = 1 + synhandler.synapse[0].delay = 5e-3 + moose.connect(synhandler, 'activationOut', synchan, 'activation') + #: SpikeGen detects when presynaptic Vm crosses threshold and + #: sends out a spike event + spikegen = moose.SpikeGen('/model/neuron_A/spikegen') + spikegen.threshold = 0.0 + msg = moose.connect(nrn_a, 'VmOut', spikegen, 'Vm') + msg = moose.connect(spikegen, 'spikeOut', synhandler.synapse[0], + 'addSpike') + return {'presynaptic': nrn_a, 'postsynaptic': nrn_b, 'spikegen': + spikegen, 'synchan': synchan, 'synhandler': synhandler} + +def setup_experiment(presynaptic, postsynaptic, synchan): + """Setup step current stimulation of presynaptic neuron. Also setup + recording of pre and postsynaptic Vm, Gk of synchan. + + """ + pulse = moose.PulseGen('/model/pulse') + pulse.level[0] = 1e-9 + pulse.delay[0] = 0.02 # disable the pulsegen + pulse.width[0] = 40e-3 + pulse.delay[1] = 1e9 + moose.connect(pulse, 'output', presynaptic, 'injectMsg') + data = moose.Neutral('/data') + vm_a = moose.Table('/data/Vm_pre') + moose.connect(vm_a, 'requestOut', presynaptic, 'getVm') + vm_b = moose.Table('/data/Vm_post') + moose.connect(vm_b, 'requestOut', postsynaptic, 'getVm') + gksyn_b = moose.Table('/data/Gk_syn') + moose.connect(gksyn_b, 'requestOut', synchan, 'getGk') + pulsetable = moose.Table('/data/pulse') + pulsetable.connect('requestOut', pulse, 'getOutputValue') + return { 'stimulus': pulsetable, + 'Vm_pre': vm_a, + 'Vm_post': vm_b, + 'Gk_syn': gksyn_b + } + +if __name__ == '__main__': + simtime = 0.1 + simdt = 0.25e-5 + plotdt = 0.25e-3 + netinfo = create_model() + expinfo = setup_experiment(netinfo['presynaptic'], + netinfo['postsynaptic'], + netinfo['synchan']) + vm_a = expinfo['Vm_pre'] + vm_b = expinfo['Vm_post'] + gksyn_b = expinfo['Gk_syn'] + for ii in range(10): + moose.setClock(ii, simdt) + moose.setClock(18, plotdt) + moose.reinit() + moose.start(simtime) + plt.subplot(211) + plt.plot(vm_a.vector*1e3, color='b', label='presynaptic Vm (mV)') + plt.plot(vm_b.vector*1e3, color='g', label='postsynaptic Vm (mV)') + plt.plot(expinfo['stimulus'].vector * 1e9, color='r', label='injected current (nA)') + plt.legend() + plt.subplot(212) + plt.plot(expinfo['Gk_syn'].vector*1e9, color='orange', label='Gk_synapse (nS)') + plt.legend() + plt.tight_layout() + plt.show() + + +# +# twocells.py ends here diff --git a/examples/snippets/vclamp.py b/examples/snippets/vclamp.py new file mode 100644 index 0000000..71f6067 --- /dev/null +++ b/examples/snippets/vclamp.py @@ -0,0 +1,132 @@ +# vclamp.py --- +# +# Filename: vclamp.py +# Description: +# Author:Subhasis Ray +# Maintainer: +# Created: Sat Feb 2 19:16:54 2013 (+0530) +# Version: +# Last-Updated: Tue Jun 11 17:35:20 2013 (+0530) +# By: subha +# Update #: 178 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +sys.path.append('../../python') +import moose +sys.path.append('../squid') +from squid import SquidAxon +from pylab import * + +def vclamp_demo(simtime=50.0, dt=1e-2): + ## It is good practice to modularize test elements inside a + ## container + container = moose.Neutral('/vClampDemo') + ## Create a compartment with properties of a squid giant axon + comp = SquidAxon('/vClampDemo/axon') + # Create and setup the voltage clamp object + clamp = moose.VClamp('/vClampDemo/vclamp') + ## The defaults should work fine + # clamp.mode = 2 + # clamp.tau = 10*dt + # clamp.ti = dt + # clamp.td = 0 + # clamp.gain = comp.Cm / dt + ## Setup command voltage time course + command = moose.PulseGen('/vClampDemo/command') + command.delay[0] = 10.0 + command.width[0] = 20.0 + command.level[0] = 50.0 + command.delay[1] = 1e9 + moose.connect(command, 'output', clamp, 'commandIn') + ## Connect the Voltage Clamp to the compartemnt + moose.connect(clamp, 'currentOut', comp, 'injectMsg') + moose.connect(comp, 'VmOut', clamp, 'sensedIn') + ## setup stimulus recroding - this is the command pulse + stimtab = moose.Table('/vClampDemo/vclamp_command') + moose.connect(stimtab, 'requestOut', command, 'getOutputValue') + ## Set up Vm recording + vmtab = moose.Table('/vClampDemo/vclamp_Vm') + moose.connect(vmtab, 'requestOut', comp, 'getVm') + ## setup command potential recording - this is the filtered input + ## to PID controller + commandtab = moose.Table('/vClampDemo/vclamp_filteredcommand') + moose.connect(commandtab, 'requestOut', clamp, 'getCommand') + ## setup current recording + Imtab = moose.Table('/vClampDemo/vclamp_inject') + moose.connect(Imtab, 'requestOut', clamp, 'getCurrent') + # Scheduling + moose.setClock(0, dt) + moose.setClock(1, dt) + moose.setClock(2, dt) + moose.setClock(3, dt) + moose.useClock(0, '%s/##[TYPE=Compartment]' % (container.path), 'init') + moose.useClock(0, '%s/##[TYPE=PulseGen]' % (container.path), 'process') + moose.useClock(1, '%s/##[TYPE=Compartment]' % (container.path), 'process') + moose.useClock(2, '%s/##[TYPE=HHChannel]' % (container.path), 'process') + moose.useClock(2, '%s/##[TYPE=VClamp]' % (container.path), 'process') + moose.useClock(3, '%s/##[TYPE=Table]' % (container.path), 'process') + moose.reinit() + print 'RC filter in VClamp:: tau:', clamp.tau + print 'PID controller in VClamp:: ti:', clamp.ti, 'td:', clamp.td, 'gain:', clamp.gain + moose.start(simtime) + print 'Finished simulation for %g seconds' % (simtime) + tseries = linspace(0, simtime, len(vmtab.vector)) + subplot(211) + title('Membrane potential and clamp voltage') + plot(tseries, vmtab.vector, 'g-', label='Vm (mV)') + plot(tseries, commandtab.vector, 'b-', label='Filtered command (mV)') + plot(tseries, stimtab.vector, 'r-', label='Command (mV)') + xlabel('Time (ms)') + ylabel('Voltage (mV)') + legend() + # print len(commandtab.vector) + subplot(212) + title('Current through clamp circuit') + # plot(tseries, stimtab.vector, label='stimulus (uA)') + plot(tseries, Imtab.vector, label='injected current (uA)') + xlabel('Time (ms)') + ylabel('Current (uA)') + legend() + show() + +if __name__ == '__main__': + vclamp_demo() + + +# +# vclamp.py ends here diff --git a/examples/snippets/vectors.py b/examples/snippets/vectors.py new file mode 100644 index 0000000..5ecec26 --- /dev/null +++ b/examples/snippets/vectors.py @@ -0,0 +1,62 @@ +# vectors.py --- +# +# Filename: vectors.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Tue May 6 12:49:53 2014 (+0530) +# Version: +# Last-Updated: +# By: +# Update #: 0 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. + +# +# + +# Code: + +"""Demonstrates how to use vectors of moose elements""" +import sys +sys.path.append('../../python') +import moose +import pylab as pl +import numpy as np +comps = moose.vec(path='mycomps', n=2800, dtype='Compartment') +comps.Em = np.random.sample(len(comps)) +pl.plot(comps.Em) +pl.show() + + +# +# vectors.py ends here diff --git a/examples/snippets/wildcard.py b/examples/snippets/wildcard.py new file mode 100644 index 0000000..6db9225 --- /dev/null +++ b/examples/snippets/wildcard.py @@ -0,0 +1,162 @@ +# wildcard.py --- +# +# Filename: wildcard.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Tue Jun 4 11:20:57 2013 (+0530) +# Version: +# Last-Updated: Tue Jun 4 12:27:42 2013 (+0530) +# By: subha +# Update #: 143 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""Explore the wildcard search in moose models""" + +import moose + +def wildcard_setup(): + a = moose.Neutral('/alfa') + b = moose.Compartment('/alfa/bravo') + c = moose.HHChannel('/alfa/bravo/charlie') + f = moose.HHChannel2D('/alfa/bravo/foxtrot') + e = moose.Neutral('/alfa/echo') + d = moose.DiffAmp('/alfa/echo/delta') + p = moose.PulseGen('/alfa/echo/papa') + e1 = moose.Pool('/alfa/bravo/charlie/echo') + g = moose.HHChannel('%s/golf' % (e1.path)) + f1 = moose.Neutral('/alfa/bravo/foxtail') + c1 = moose.Neutral('/alfa/bravo/charlee') + b.Rm = 2.0e6 + c.Gbar = 1e-9 + f.Gbar = 0.5e-6 + p.delay[0] = 10e-3 + d.gain = 3.0 + g.Gbar = 1e-6 + +def wildcard_test(): + # TYPE matches the type of the object + wildcard = '/alfa/bravo/#[TYPE=HHChannel2D]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # ISA matches elements of specified type or its subclasses + wildcard = '/alfa/bravo/#[ISA=HHChannel]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # HHChannel and HHChannel2D are subclasses of ChanBase + wildcard = '/alfa/bravo/#[ISA=ChanBase]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # HHChannel and HHChannel2D are subclasses of ChanBase + wildcard = '/alfa/bravo/#[TYPE=ChanBase]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # `#` can be used only once and matches all subsequent characters in name + wildcard = '/alfa/bravo/charl?e' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # `?` can be used any number of times but substitutes a single character + wildcard = '/alfa/bravo/fox#' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # Specify `##` to search through all levels below the path prefixing it + wildcard = '/##[ISA=ChanBase]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # You can even select by field - but if the field does not exist, + # this will produce a lot of harmless error messages in debug + # builds. + wildcard = '/##[FIELD(name)=echo]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # == and = are same + wildcard = '/##[FIELD(name)==echo]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path + + # Comparison operators other than == are allowed for floating point number fields + wildcard = '/alfa/##[FIELD(Gbar)<1e-6]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path, moose.element(element).Gbar + + # Equality is not defined for floating point fields + wildcard = '/alfa/##[FIELD(Gbar)=1e-6]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path, moose.element(element).Gbar + + # Another operator is != + wildcard = '/alfa/bravo/#[TYPE!=HHChannel]' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path, ', class:', element.className + + # With `##` you can get a listing of all elements under a path if + # you don't use a condition + wildcard = '/alfa/##' + print '\nElements Matching:', wildcard + for element in moose.wildcardFind(wildcard): + print '\t', element.path, ', class:', element.className + + +if __name__ == '__main__': + wildcard_setup() + wildcard_test() + + + + +# +# wildcard.py ends here diff --git a/examples/squid/.gitignore b/examples/squid/.gitignore new file mode 100644 index 0000000..773a6df --- /dev/null +++ b/examples/squid/.gitignore @@ -0,0 +1 @@ +*.dat diff --git a/examples/squid/README.txt b/examples/squid/README.txt new file mode 100644 index 0000000..221cc0a --- /dev/null +++ b/examples/squid/README.txt @@ -0,0 +1,14 @@ +This is the port of Hodgkin-Huxley Squid Giant Axon demo from +GENESIS. Run `python squid_demo.py` to start the GUI. Open help.org in +a text editor or help.html in a web-browser (or click `Help` button in +the GUI) to read the tutorial. + +The biophysical model is in `squid.py`. The electronics setup is in +`electronics.py`. The combination of squid axon model and the +electronics is in squid_setup.py. All these can be run without any GUI +dependency. To run squid_demo.py you need PyQt and matplotlib with Qt +backend installed. + +Author: Subhasis Ray +Place: NCBS, Bangalore, INDIA +Date: 21 September 2012 diff --git a/examples/squid/channeleditor.py b/examples/squid/channeleditor.py new file mode 100644 index 0000000..ead9041 --- /dev/null +++ b/examples/squid/channeleditor.py @@ -0,0 +1,147 @@ +# channeleditor.py --- +# +# Filename: channeleditor.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Jul 18 19:06:39 2012 (+0530) +# Version: +# Last-Updated: Wed Aug 8 16:36:10 2012 (+0530) +# By: Subhasis Ray +# Update #: 179 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# A widget for editing Hodgkin-Huxley type ion channels. +# +# + +# Change log: +# +# +# + +# Code: + +import sys +from PyQt4 import QtGui, QtCore +from numpy import * +import ast + +class GateEditor(QtGui.QWidget): + """Utility to edit gate equations. + + It provides two line edits to enter the alpha and beta equations + directly. + """ + def __init__(self, *args): + QtGui.QWidget.__init__(self, *args) + self.useVButton = QtGui.QRadioButton('Use V', self) + self.useVButton.setChecked(True) + self.useCaButton = QtGui.QRadioButton('Use Ca', self) + self.useCaButton.setChecked(False) + self.symbolGroup = QtGui.QGroupBox(self) + layout = QtGui.QHBoxLayout() + # self.symbolGroup.setExclusive(True) + layout.addWidget(self.useVButton) + layout.addWidget(self.useCaButton) + self.symbolGroup.setLayout(layout) + self.inputPanel = QtGui.QFrame(self) + self.minVLabel = QtGui.QLabel('Minimum', self) + self.maxVLabel = QtGui.QLabel('Maximum', self) + self.divsVLabel = QtGui.QLabel('Number of divisions', self) + self.minVEdit = QtGui.QLineEdit(self) + self.maxVEdit = QtGui.QLineEdit(self) + self.divsVEdit = QtGui.QLineEdit(self) + self.equation = '(A + B * V) / (C + exp((V + D)/F))' + self.alphaText = u'Equation for forward rate \u03B1 ' + self.betaText = u'Equation for backward rate \u03B2 ' + self.minfText = u'Equation for m\u221E ' + self.taumText = u'Equation for \u03C4m ' + self.alphaLabel = QtGui.QLabel(self.minfText, self) + self.betaLabel = QtGui.QLabel(self.taumText, self) + self.alphaEdit = QtGui.QLineEdit(self) + self.betaEdit = QtGui.QLineEdit(self) + self.formCombo = QtGui.QComboBox(self) + self.formCombo.addItem(u'm\u221E - \u03C4m') + self.formCombo.addItem(u'\u03B1 - \u03B2') + self.okButton = QtGui.QPushButton('OK', self) + layout = QtGui.QGridLayout(self.inputPanel) + layout.addWidget(self.minVLabel, 0, 0) + layout.addWidget(self.minVEdit, 0, 1) + layout.addWidget(self.maxVLabel, 0, 3) + layout.addWidget(self.maxVEdit, 0, 4) + layout.addWidget(self.divsVLabel, 0, 6) + layout.addWidget(self.divsVEdit, 0, 7) + layout.addWidget(self.formCombo, 1, 0, 1, 4) + layout.addWidget(self.alphaLabel, 2, 0, 1, 2) + layout.addWidget(self.alphaEdit, 2, 2, 1, 7) + layout.addWidget(self.betaLabel, 3, 0, 1, 2) + layout.addWidget(self.betaEdit, 3, 2, 1, 7) + self.inputPanel.setLayout(layout) + layout = QtGui.QVBoxLayout(self) + layout.addWidget(self.symbolGroup) + layout.addWidget(self.inputPanel) + layout.addWidget(self.okButton) + self.setLayout(layout) + self.connect(self.okButton, QtCore.SIGNAL('clicked()'), self.evalGateExpressions) + # self.connect(self.useVButton, QtCore.SIGNAL('toggled(bool)'), self.toggleInputPanel) + self.connect(self.formCombo, QtCore.SIGNAL('currentIndexChanged(int)'), self.switchEquationForm) + + def toggleInputPanel(self, on): + self.inputPanel.setVisible(on) + self.adjustSize() + + def switchEquationForm(self, index): + if index == 1: + self.alphaLabel.setText(self.alphaText) + self.betaLabel.setText(self.betaText) + elif index == 0: + self.alphaLabel.setText(self.minfText) + self.betaLabel.setText(self.taumText) + + def evalGateExpressions(self): + """Evaluate the expressions supplied by user to obtain the + arrays for the gate tables.""" + vmin = float(str(self.minVEdit.text())) + vmax = float(str(self.maxVEdit.text())) + vdivs = float(str(self.divsVEdit.text())) + vrange = linspace(vmin, vmax, vdivs+1) + a_expr = str(self.alphaEdit.text()) + b_expr = str(self.betaEdit.text()) + a = zeros(vdivs+1) + b = zeros(vdivs+1) + if self.useVButton.isChecked(): + symbol = 'V' + elif self.useCaButton.isChecked(): + symbol = 'Ca' + code = """for ii in range(len(vrange)): + %s = vrange[ii] + a[ii] = %s + b[ii] = %s + """ % (symbol, a_expr, b_expr) + print code + tree = compile(code, '', 'exec') + exec(tree) + print a, b + return {'min': vmin, + 'max': vmax, + 'divs': vdivs, + 'a': a, + 'b': b} + + # 0.5 * (1-exp(-(V-10)/10)) +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + QtGui.qApp = app + editor = GateEditor() + editor.show() + sys.exit(app.exec_()) + +# +# channeleditor.py ends here diff --git a/examples/squid/electronics.py b/examples/squid/electronics.py new file mode 100644 index 0000000..2f356e3 --- /dev/null +++ b/examples/squid/electronics.py @@ -0,0 +1,116 @@ +# electronics.py --- +# +# Filename: electronics.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Feb 22 00:53:38 2012 (+0530) +# Version: +# Last-Updated: Tue Jul 10 10:28:40 2012 (+0530) +# By: subha +# Update #: 221 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# 2012-02-22 23:22:30 (+0530) Subha - the circuitry put in a class. +# + +# Code: + +import numpy +import moose + +class ClampCircuit(moose.Neutral): + """Container for a Voltage-Clamp/Current clamp circuit.""" + defaults = { + 'level1': 25.0, + 'width1': 50.0, + 'delay1': 2.0, + 'delay2': 1e6, + 'trigMode': 0, + 'delay3': 1e9 + } + def __init__(self, path, compartment): + moose.Neutral.__init__(self, path) + self.pulsegen = moose.PulseGen(path+"/pulse") # holding voltage/current generator + self.pulsegen.count = 2 + self.pulsegen.firstLevel = 25.0 + self.pulsegen.firstWidth = 50.0 + self.pulsegen.firstDelay = 2.0 + self.pulsegen.secondDelay = 0.0 + self.pulsegen.trigMode = 2 + self.gate = moose.PulseGen(path+"/gate") # holding voltage/current generator + self.gate.level[0] = 1.0 + self.gate.delay[0] = 0.0 + self.gate.width[0] = 1e9 + moose.connect(self.gate, 'output', self.pulsegen, 'input') + self.lowpass = moose.RC(path+"/lowpass") # lowpass filter + self.lowpass.R = 1.0 + self.lowpass.C = 0.03 + self.vclamp = moose.DiffAmp(path+"/vclamp") + self.vclamp.gain = 0.0 + self.vclamp.saturation = 1e10 + self.iclamp = moose.DiffAmp(path+"/iclamp") + self.iclamp.gain = 0.0 + self.iclamp.saturation = 1e10 + self.pid = moose.PIDController(path+"/pid") + self.pid.gain = 0.5 + self.pid.tauI = 0.02 + self.pid.tauD = 0.005 + self.pid.saturation = 1e10 + # Connect current clamp circuitry + moose.connect(self.pulsegen, "output", self.iclamp, "plusIn") + moose.connect(self.iclamp, "output", compartment, "injectMsg") + # Connect voltage clamp circuitry + moose.connect(self.pulsegen, "output", self.lowpass, "injectIn") + moose.connect(self.lowpass, "output", self.vclamp, "plusIn") + moose.connect(self.vclamp, "output", self.pid, "commandIn") + moose.connect(compartment, "VmOut", self.pid, "sensedIn") + moose.connect(self.pid, "output", compartment, "injectMsg") + current_table = moose.Table("/data/Im") + moose.connect(current_table, "requestOut", compartment, "getIm") + + def configure_pulses(self, baseLevel=0.0, firstLevel=0.1, firstDelay=5.0, firstWidth=40.0, secondLevel=0.0, secondDelay=1e6, secondWidth=0.0, singlePulse=True): + """Set up the pulse generator.""" + self.pulsegen.baseLevel = baseLevel + self.pulsegen.firstLevel = firstLevel + self.pulsegen.firstWidth = firstWidth + self.pulsegen.firstDelay = firstDelay + self.pulsegen.secondLevel = secondLevel + self.pulsegen.secondDelay = secondDelay + self.pulsegen.secondWidth = secondWidth + if singlePulse: + self.pulsegen.trigMode = 1 + else: + self.pulsegen.trigMode = 0 + + def do_voltage_clamp(self): + """Switch to voltage clamp circuitry. After this the simdt may + need to be changed for correct performance.""" + self.vclamp.gain = 1.0 + self.iclamp.gain = 0.0 + self.pid.gain = 0.5 + self.pid.tauD = 0.005 + self.pid.tauI = 0.02 + + def do_current_clamp(self): + """Switch to current clamp circuitry. After this the simdt may + need to be changed for correct performance.""" + self.iclamp.gain = 1.0 + self.vclamp.gain = 0.0 + self.pid.gain = 0.0 + + +# +# electronics.py ends here diff --git a/examples/squid/help.html b/examples/squid/help.html new file mode 100644 index 0000000..617a710 --- /dev/null +++ b/examples/squid/help.html @@ -0,0 +1,587 @@ + + + + +Simulation of squid axon with Hodgkin-Huxley ion channels + + + + + + + + + + + + + +

+ +
+ +
+

Simulation of squid axon with Hodgkin-Huxley ion channels

+ + + + +
+

1 Navigation: navigation toolbar is located at bottom of the plots

+
+ +

This uses the built-in navigation toolbar of matplotlib [click to + open in your default web-browser]. +

+ +
+

./images/navigationtoolbar.jpg

+

Navigation toolbar for plots

+
+ +

+ You can hover the mouse cursor on any icon on this toolbar to get a + brief tool-tip. To summarize: +

+ +
+ +
+

1.1 Zoom

+
+ +
    +
  1. Zoom-in: +
      +
    1. Zoom-in both X and Y axes: +
        +
      • click on the subplot you want to zoom and scroll mouse + wheel down, or +
      • +
      • click magnifier icon and press left mouse button on the + subplot and drag. This will zoom the subplot to the + rectangle you cover by this. +
      • +
      • click compass icon and press right mouse button on the plot + and drag towards top-right. +
      • +
      + +
    2. +
    3. Zoom-in along X-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag towards right. +
      • +
      + +
    4. +
    5. Zoom-in along Y-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag upwards. +
      • +
      + +
    6. +
    + +
  2. +
  3. Zoom-out: +
      +
    1. Zoom-out both X and Y axes: +
        +
      • click on the subplot you want to zoom and scroll mouse wheel up, or +
      • +
      • click magnifier icon and press right mouse button on the + plot and drag. The whole visible axis area will fit into + the rectangle you cover by this. +
      • +
      • click compass icon and press right mouse button on the plot + and drag towards bottom-left. +
      • +
      + +
    2. +
    3. Zoom-out whole plot window along X-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag towards left. +
      • +
      + +
    4. +
    5. Zoom-out Y-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag downwards. +
      • +
      + +
    6. +
    + +
  4. +
  5. Go forward/backward in zoom stack: + click right/left arrow icon. +
  6. +
+ +
+ +
+ +
+

1.2 Pan:

+
+ +

click compass-icon and left click-and-drag +

+ +
+ +
+

1.3 Reset to initial plot state:

+
+ +

click home icon. +

+ +
+ +
+

1.4 Change spacing and position of subplots:

+
+ +

click button with four green arrow-heads pointing (this is called + the Subplot-Configuration button). +

+ +
+ +
+

1.5 Configure axes:

+
+ +

click green tick-mark. In the pop-up dialog select the axis you want + to modify and click OK. In the next dialog you can set the range of + X and Y values for the axes and modify several other properties. +

+ +
+ +
+

1.6 Save plot:

+
+ +

click floppy-disk icon. +

+
+
+ +
+ +
+

2 Rearranging the frames on small screens

+
+ +

The default layout of the squid demo may exceed available screen + size on your system. But you can always undock the control panels + and put them one over the other to save screen space. To undock all + panels in one go, click the "Undock all" button in the tool bar. +

+

+ To move or float a single panel, click the left mouse button on its + title bar (in the same horizontal line with the expand buttons) of + any of the panels and drag. You can choose to leave it floating or + drop it somewhere (top, left, bottom or right of the plot window) in + the main window to reposition it. You can drop multiple panels in + the same location. Then they will be put as multiple tabs over one + another. +

+

+ An undocked panel will be always on top of the main window. If this + is a problem, you can close it by clicking the close button. You can + make it visible again by clicking "Show all" button on the tool bar. +

+
+ +
+ +
+

3 The SQUID tutorial

+
+ +

The following is adapted from the GENESIS squid demo notes with + modifications for MOOSE by Subhasis Ray, September 2012. +

+

+ The original header was: +

+ +
+ +

+ SQUID +

+

+ An Introductory Tutorial for GENESIS, XODUS, and the HODGKIN-HUXLEY model +

+

+ By M. Nelson, Caltech, April 1989 - Modified by D. Beeman, June 1991, Dec 1994 + ­ Modified by E. Vigmond, September 1993 +

+ +
+ +

+ In the process of working through this tutorial, you will learn + something about the Hodgkin-Huxley model. This program may serve as + a good starting point for those of you who plan to work on + single-cell models for a course project. +

+ +
+ +
+

3.1 The Model

+
+ +

For the time being, we are going to simulate a single axon + compartment with active Na and K conductances, as described by Hodgkin + and Huxley for the squid giant axon. In other tutorials we will link + compartments together to form a simple model of an entire neuron with + a soma and dendrites (the Neuron tutorial), model a cable with many + compartments (the cable tutorial), and build neural circuits with + connected neurons (MultiCell and tritonia). For now, we confine + ourselves to a single axon compartment. +

+
+ +
+ +
+

3.2 Running the Simulation

+
+ +

The model has already been initialized with some reasonable + parameter values, so all you have to do to run the simulation is: +

+

+ click on the ``Run`` button in the toolbar. +

+

+ The simulation which you just observed was for a constant current + pulse, which is shown in the lower left graph panel. The upper left + graph shows the membrane potential. You can see that 3 action + potentials were generated during this 50 msec simulation. Now let's + change the injection current and see what happens. +

+

+ At the bottom of the left panel is a widget labeled "Electronics" + and inside it there are two tabs labeled ``Current clamp`` and + ``Voltage clamp``. Select the ``Current clamp`` tab and you will + see a series of labeled text boxes with default values. In order + to change the injection current: +

+

+ position the cursor to the right of the last digit in the "First + Pulse Current" field and click in the text box with the left mouse + button. +

+

+ Let's change the peak injection current from 0.1 to 1.0. +

+

+ type <BACKSPACE> to delete the 0.1 and then type 1.0 +

+

+ The value in the dialog field should now be 1.0. +

+

+ Now we'll run the simulation again. +

+

+ click the "Run" button on the toolbar again. +

+

+ There should be a dramatic change in the time-course of the + membrane potential at this higher current injection level. + Experiment with the injection level to see what happens to the + axon at higher injection currents. Also try decreasing the + injection level until an action potential is no longer elicited by + the stimulus. What is the threshold for producing an action + potential in this compartment? +

+

+ You may also experiment with trains of short pulses. Set the + "First Pulse Width" dialog field to 1 msec and click on the + "Single Pulse" drop down box and select "Pulse Train". Now vary + "First Onset Delay". What is the minimum interval between action + potentials that you can achieve? +

+
+ +
+ +
+

3.3 Voltage Clamping

+
+ +

You can also perform voltage clamp experiments in this simulation. +

+

+ click on the "Voltage clamp" tab header at the bottom of the + control form under "Electronics". +

+

+ Again, reasonable default values have been selected , so all you + have to do to run the voltage clamp simulation is: +

+

+ click the "Run" button on the control form +

+
+ +
+ +
+

3.4 Changing Extracellular Concentrations

+
+ +

You can alter the extracellular concentrations of the ions through + the "Channels" panel. Any changes in concentration will cause the + reversal potentials to be recalculated. To reset the values back + to the initial ones, just click on the "Restore defaults" button + in the top tool bar. +

+
+ +
+ +
+

3.5 Controlling Graphs

+
+ +

The graph of the clamp current (lower left panel) has gone off + scale. In order to rescale the graph: +

+

+ click on the button with green tick mark in the navigation toolbar + at the bottom of the plots. +

+

+ A dialog containing drop-down to select the subplot should appear. + Select the "Injection current" and click OK. Another dialog box + will appear with text boxes for `Min` and `Max` values for X-Axis + and Y-Axis. Adjust for Y axis to bring the graph into range and + press "Apply". +

+ +

+ The top toolbar has an "Overlay plots" button. When it is + checked, any existing plots in the graph will be held and new + simulation results will be overlayed. Try this now. +

+

+ Click "Overlay plots" and run the simulation at several values of + the clamp voltage. Do the first run with "Overlay plots" button + unchecked so that all previous graphs are cleared at this + run. Then click this button to checked state and do the subsequent + runs. +

+
+ +
+ +
+

3.6 State Plots

+
+ +

One can learn a great deal by studying plots in which one of the + Hodgkin-Huxley channel activation parameters (the K activation + "n", the Na activation "m", or the Na inactivation "h") is plotted + as a function of the membrane potential, V. (See, for example, + Chapter 5 of "Methods in Neuronal Modeling", by Koch and Segev.) +

+

+ In order to view such a plot, click the left mouse button on the + button labeled "State plot" in the top toolbar. The label will + change to "State Plot Visible", and a state plot graph will + appear. Clicking the button again will hide the graph. The + default plot is to show the K channel "n" parameter on the y-axis + and the membrane potential on the x-axis. The drop-down menus at + the top of the window allow you to change these defaults. +

+
+ +
+ +
+

3.7 Channel Blocking

+
+ +

In order to explore the effects of blocking one of the channels, + you may click on one of the check boxes in the "Channels" panel + for blocking and unblocking a channel. When a channel is blocked, + its conductance is set to zero. Activation parameters for a + blocked channel are still calculated and may be plotted, but are + relatively meaningless because they will have no effect on the + membrane potential. +

+
+ +
+ +
+

3.8 Saving Graphs

+
+ +

You can save a graph to file by clicking the save button in the + navigation toolbar. In the file dialog you can select from several + formats including PDF, JPEG, PNG and SVG. +

+
+ +
+ +
+

3.9 Units used in the simulation

+
+ +

Units: +

+ ++ + + + + + + + + + + + + + + +
quantityunit
timemsec
lengthum (microns)
potentialmV
conductancemS (mmho)
resistancekohm
capacitanceuF
specific axial resistancekohm-cm
specific membrane conductancemS/cm2
specific membrane capacitanceuF/cm2
+ + +
+
+
+
+ +
+

Date: 2012-09-25 17:03:29 IST

+

Author: Subhasis Ray

+

Org version 7.8.11 with Emacs version 23

+Validate XHTML 1.0 + +
+ + diff --git a/examples/squid/help.org b/examples/squid/help.org new file mode 100644 index 0000000..2b47b4e --- /dev/null +++ b/examples/squid/help.org @@ -0,0 +1,242 @@ +Simulation of squid axon with Hodgkin-Huxley ion channels + +#+AUTHOR: Subhasis Ray + +* Navigation: navigation toolbar is located at bottom of the plots + This uses the built-in navigation toolbar of [[http://matplotlib.org/users/navigation_toolbar.html][matplotlib]] [click to + open in your default web-browser]. + +#+CAPTION: Navigation toolbar for plots +#+LABEL: fignavigationtoolbar +[[./images/navigationtoolbar.jpg]] + + You can hover the mouse cursor on any icon on this toolbar to get a + brief tool-tip. To summarize: + +** Zoom + 1. Zoom-in: + 1) Zoom-in both X and Y axes: + - click on the subplot you want to zoom and scroll mouse + wheel down, or + - click magnifier icon and press left mouse button on the + subplot and drag. This will zoom the subplot to the + rectangle you cover by this. + - click compass icon and press right mouse button on the plot + and drag towards top-right. + 2) Zoom-in along X-axis: + - click compass icon and press right mouse button on the plot + and drag towards right. + 3) Zoom-in along Y-axis: + - click compass icon and press right mouse button on the plot + and drag upwards. + 2. Zoom-out: + 1) Zoom-out both X and Y axes: + - click on the subplot you want to zoom and scroll mouse wheel up, or + - click magnifier icon and press right mouse button on the + plot and drag. The whole visible axis area will fit into + the rectangle you cover by this. + - click compass icon and press right mouse button on the plot + and drag towards bottom-left. + 2) Zoom-out whole plot window along X-axis: + - click compass icon and press right mouse button on the plot + and drag towards left. + 3) Zoom-out Y-axis: + - click compass icon and press right mouse button on the plot + and drag downwards. + 3. Go forward/backward in zoom stack: + click right/left arrow icon. +** Pan: + click compass-icon and left click-and-drag +** Reset to initial plot state: + click home icon. +** Change spacing and position of subplots: + click button with four green arrow-heads pointing (this is called + the Subplot-Configuration button). +** Configure axes: + click green tick-mark. In the pop-up dialog select the axis you want + to modify and click OK. In the next dialog you can set the range of + X and Y values for the axes and modify several other properties. +** Save plot: + click floppy-disk icon. + +* Rearranging the frames on small screens + The default layout of the squid demo may exceed available screen + size on your system. But you can always undock the control panels + and put them one over the other to save screen space. To undock all + panels in one go, click the "Undock all" button in the tool bar. + + To move or float a single panel, click the left mouse button on its + title bar (in the same horizontal line with the expand buttons) of + any of the panels and drag. You can choose to leave it floating or + drop it somewhere (top, left, bottom or right of the plot window) in + the main window to reposition it. You can drop multiple panels in + the same location. Then they will be put as multiple tabs over one + another. + + An undocked panel will be always on top of the main window. If this + is a problem, you can close it by clicking the close button. You can + make it visible again by clicking "Show all" button on the tool bar. + +* The SQUID tutorial + The following is adapted from the GENESIS squid demo notes with + modifications for MOOSE by Subhasis Ray, September 2012. + + The original header was: + + ----------------------------------------------------------------------------- + + SQUID + + An Introductory Tutorial for GENESIS, XODUS, and the HODGKIN-HUXLEY model + + By M. Nelson, Caltech, April 1989 - Modified by D. Beeman, June 1991, Dec 1994 + \- Modified by E. Vigmond, September 1993 + + ----------------------------------------------------------------------------- + + In the process of working through this tutorial, you will learn + something about the Hodgkin-Huxley model. This program may serve as + a good starting point for those of you who plan to work on + single-cell models for a course project. + +** The Model + For the time being, we are going to simulate a single axon + compartment with active Na and K conductances, as described by Hodgkin + and Huxley for the squid giant axon. In other tutorials we will link + compartments together to form a simple model of an entire neuron with + a soma and dendrites (the Neuron tutorial), model a cable with many + compartments (the cable tutorial), and build neural circuits with + connected neurons (MultiCell and tritonia). For now, we confine + ourselves to a single axon compartment. + +** Running the Simulation + The model has already been initialized with some reasonable + parameter values, so all you have to do to run the simulation is: + + click on the ``Run`` button in the toolbar. + + The simulation which you just observed was for a constant current + pulse, which is shown in the lower left graph panel. The upper left + graph shows the membrane potential. You can see that 3 action + potentials were generated during this 50 msec simulation. Now let's + change the injection current and see what happens. + + At the bottom of the left panel is a widget labeled "Electronics" + and inside it there are two tabs labeled ``Current clamp`` and + ``Voltage clamp``. Select the ``Current clamp`` tab and you will + see a series of labeled text boxes with default values. In order + to change the injection current: + + position the cursor to the right of the last digit in the "First + Pulse Current" field and click in the text box with the left mouse + button. + + Let's change the peak injection current from 0.1 to 1.0. + + type to delete the 0.1 and then type 1.0 + + The value in the dialog field should now be 1.0. + + Now we'll run the simulation again. + + click the "Run" button on the toolbar again. + + There should be a dramatic change in the time-course of the + membrane potential at this higher current injection level. + Experiment with the injection level to see what happens to the + axon at higher injection currents. Also try decreasing the + injection level until an action potential is no longer elicited by + the stimulus. What is the threshold for producing an action + potential in this compartment? + + You may also experiment with trains of short pulses. Set the + "First Pulse Width" dialog field to 1 msec and click on the + "Single Pulse" drop down box and select "Pulse Train". Now vary + "First Onset Delay". What is the minimum interval between action + potentials that you can achieve? + +** Voltage Clamping + You can also perform voltage clamp experiments in this simulation. + + click on the "Voltage clamp" tab header at the bottom of the + control form under "Electronics". + + Again, reasonable default values have been selected , so all you + have to do to run the voltage clamp simulation is: + + click the "Run" button on the control form + +** Changing Extracellular Concentrations + You can alter the extracellular concentrations of the ions through + the "Channels" panel. Any changes in concentration will cause the + reversal potentials to be recalculated. To reset the values back + to the initial ones, just click on the "Restore defaults" button + in the top tool bar. + +** Controlling Graphs + The graph of the clamp current (lower left panel) has gone off + scale. In order to rescale the graph: + + click on the button with green tick mark in the navigation toolbar + at the bottom of the plots. + + A dialog containing drop-down to select the subplot should appear. + Select the "Injection current" and click OK. Another dialog box + will appear with text boxes for `Min` and `Max` values for X-Axis + and Y-Axis. Adjust for Y axis to bring the graph into range and + press "Apply". + + + The top toolbar has an "Overlay plots" button. When it is + checked, any existing plots in the graph will be held and new + simulation results will be overlayed. Try this now. + + Click "Overlay plots" and run the simulation at several values of + the clamp voltage. Do the first run with "Overlay plots" button + unchecked so that all previous graphs are cleared at this + run. Then click this button to checked state and do the subsequent + runs. + +** State Plots + One can learn a great deal by studying plots in which one of the + Hodgkin-Huxley channel activation parameters (the K activation + "n", the Na activation "m", or the Na inactivation "h") is plotted + as a function of the membrane potential, V. (See, for example, + Chapter 5 of "Methods in Neuronal Modeling", by Koch and Segev.) + + In order to view such a plot, click the left mouse button on the + button labeled "State plot" in the top toolbar. The label will + change to "State Plot Visible", and a state plot graph will + appear. Clicking the button again will hide the graph. The + default plot is to show the K channel "n" parameter on the y-axis + and the membrane potential on the x-axis. The drop-down menus at + the top of the window allow you to change these defaults. + +** Channel Blocking + In order to explore the effects of blocking one of the channels, + you may click on one of the check boxes in the "Channels" panel + for blocking and unblocking a channel. When a channel is blocked, + its conductance is set to zero. Activation parameters for a + blocked channel are still calculated and may be plotted, but are + relatively meaningless because they will have no effect on the + membrane potential. + +** Saving Graphs + You can save a graph to file by clicking the save button in the + navigation toolbar. In the file dialog you can select from several + formats including PDF, JPEG, PNG and SVG. + +** Units used in the simulation + Units: + | quantity | unit | + |-------------------------------+--------------| + | time | msec | + | length | um (microns) | + | potential | mV | + | conductance | mS (mmho) | + | resistance | kohm | + | capacitance | uF | + | specific axial resistance | kohm-cm | + | specific membrane conductance | mS/cm^2 | + | specific membrane capacitance | uF/cm^2 | + diff --git a/examples/squid/images/navigationtoolbar.jpg b/examples/squid/images/navigationtoolbar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7ba52a5f5481ce63c8a7eda502fb8c6710755dc GIT binary patch literal 11973 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 0: + gate = moose.HHGate(self.path + '/gateX') + elif gate == 'Y' and self.Ypower > 0: + gate = moose.HHGate(self.path + '/gateY') + else: + return False + gate.setupAlpha([params['A_A'], + params['A_B'], + params['A_C'], + params['A_D'], + params['A_F'], + params['B_A'], + params['B_B'], + params['B_C'], + params['B_D'], + params['B_F'], + vdivs, vmin, vmax]) + return True + + @property + def alpha_m(self): + if self.Xpower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableA) + @property + def beta_m(self): + if self.Xpower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableB) - numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableA) + @property + def alpha_h(self): + if self.Ypower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableA) + @property + def beta_h(self): + if self.Ypower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableB) - numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableA) + +class SquidAxon(moose.Compartment): + EREST_ACT = 0.0 # can be -70 mV if not following original HH convention + VMIN = -30.0 + VMAX = 120.0 + VDIVS = 150 + defaults = { + 'temperature': CELSIUS_TO_KELVIN + 6.3, + 'K_out': 10.0, + 'Na_out': 460.0, + 'K_in': 301.4, + 'Na_in': 70.96, + 'Cl_out': 540.0, + 'Cl_in': 100.0, + 'length': 500, # um + 'diameter': 500, # um + 'Em': EREST_ACT + 10.613, + 'initVm': EREST_ACT, + 'specific_cm': 1.0, # uF/cm^2 + 'specific_gl': 0.3, # mmho/cm^2 + 'specific_ra': 0.030, # kohm-cm + 'specific_gNa': 120.0, # mmho/cm^2 + 'specific_gK': 36.0 # mmho/cm^2 + } + + Na_m_params = {'A_A':0.1 * (25.0 + EREST_ACT), + 'A_B': -0.1, + 'A_C': -1.0, + 'A_D': -25.0 - EREST_ACT, + 'A_F':-10.0, + 'B_A': 4.0, + 'B_B': 0.0, + 'B_C': 0.0, + 'B_D': 0.0 - EREST_ACT, + 'B_F': 18.0} + Na_h_params = {'A_A': 0.07, + 'A_B': 0.0, + 'A_C': 0.0, + 'A_D': 0.0 - EREST_ACT, + 'A_F': 20.0, + 'B_A': 1.0, + 'B_B': 0.0, + 'B_C': 1.0, + 'B_D': -30.0 - EREST_ACT, + 'B_F': -10.0} + K_n_params = {'A_A': 0.01*(10.0 + EREST_ACT), + 'A_B': -0.01, + 'A_C': -1.0, + 'A_D': -10.0 - EREST_ACT, + 'A_F': -10.0, + 'B_A': 0.125, + 'B_B': 0.0, + 'B_C': 0.0, + 'B_D': 0.0 - EREST_ACT, + 'B_F': 80.0} + """Compartment class enhanced with specific values of passive + electrical properties set and calculated using dimensions.""" + def __init__(self, path): + moose.Compartment.__init__(self, path) + self.temperature = SquidAxon.defaults['temperature'] + self.K_out = SquidAxon.defaults['K_out'] + self.Na_out = SquidAxon.defaults['Na_out'] + # Modified internal concentrations used to give HH values of + # equilibrium constants from the Nernst equation at 6.3 deg C. + # HH 1952a, p. 455 + self.K_in = SquidAxon.defaults['K_in'] + self.Na_in = SquidAxon.defaults['Na_in'] + self.Cl_out = SquidAxon.defaults['Cl_out'] + self.Cl_in = SquidAxon.defaults['Cl_in'] + + self.length = SquidAxon.defaults['length'] + self.diameter = SquidAxon.defaults['diameter'] + self.Em = SquidAxon.defaults['Em'] + self.initVm = SquidAxon.defaults['initVm'] + self.specific_cm = SquidAxon.defaults['specific_cm'] + self.specific_gl = SquidAxon.defaults['specific_gl'] + self.specific_ra = SquidAxon.defaults['specific_ra'] + + self.Na_channel = IonChannel('Na', self, + 0.0, + self.VNa, + Xpower=3.0, + Ypower=1.0) + self.Na_channel.setupAlpha('X', SquidAxon.Na_m_params, + SquidAxon.VDIVS, + SquidAxon.VMIN, + SquidAxon.VMAX) + self.Na_channel.setupAlpha('Y', SquidAxon.Na_h_params, + SquidAxon.VDIVS, + SquidAxon.VMIN, + SquidAxon.VMAX) + self.K_channel = IonChannel('K', self, + 0.0, + self.VK, + Xpower=4.0) + self.K_channel.setupAlpha('X', SquidAxon.K_n_params, + SquidAxon.VDIVS, + SquidAxon.VMIN, + SquidAxon.VMAX) + self.specific_gNa = SquidAxon.defaults['specific_gNa'] + self.specific_gK = SquidAxon.defaults['specific_gK'] + + @classmethod + def reversal_potential(cls, temp, c_out, c_in): + """Compute the reversal potential based on Nernst equation.""" + # NOTE the 70 mV added for compatibility with original HH + return (GAS_CONSTANT * temp / FARADAY) * 1000.0 * numpy.log(c_out/c_in) + 70.0 + cls.EREST_ACT + + + @property + def xarea(self): + """Area of cross section in cm^2 when length and diameter are in um""" + return 1e-8 * numpy.pi * self.diameter * self.diameter / 4.0 # cm^2 + + @property + def area(self): + """Area in cm^2 when length and diameter are in um""" + return 1e-8 * self.length * numpy.pi * self.diameter # cm^2 + + @property + def specific_ra(self): + return self.Ra * self.xarea / self.length + @specific_ra.setter + def specific_ra(self, value): + self.Ra = value * self.length / self.xarea + + @property + def specific_cm(self): + return self.Cm / self.area + @specific_cm.setter + def specific_cm(self, value): + self.Cm = value * self.area + + @property + def specific_gl(self): + return 1.0/(self.Rm * self.area) + @specific_gl.setter + def specific_gl(self, value): + self.Rm = 1.0/(value * self.area) + + @property + def specific_rm(self): + return self.Rm * self.area + @specific_rm.setter + def specific_rm(self, value): + self.Rm = value / self.area + + @property + def specific_gNa(self): + return self.Na_channel.Gbar / self.area + + @specific_gNa.setter + def specific_gNa(self, value): + self.Na_channel.Gbar = value * self.area + + @property + def specific_gK(self): + return self.K_channel.Gbar / self.area + + @specific_gK.setter + def specific_gK(self, value): + self.K_channel.Gbar = value * self.area + + @property + def VK(self): + """Reversal potential of K+ channels""" + return SquidAxon.reversal_potential(self.temperature, self.K_out, self.K_in) + + @property + def VNa(self): + """Reversal potential of Na+ channels""" + return SquidAxon.reversal_potential(self.temperature, self.Na_out, self.Na_in) + + def updateEk(self): + """Update the channels' Ek""" + self.Na_channel.Ek = self.VNa + self.K_channel.Ek = self.VK + + + @property + def celsius(self): + return self.temperature - CELSIUS_TO_KELVIN + + @celsius.setter + def celsius(self, celsius): + self.temperature = celsius + CELSIUS_TO_KELVIN + + def use_defaults(self): + for field, value in SquidAxon.defaults.items(): + setattr(self, field, value) + +class SquidModel(moose.Neutral): + """Container for squid demo.""" + def __init__(self, path): + moose.Neutral.__init__(self, path) + self.squid_axon = SquidAxon(path+'/squid_axon') + print self.squid_axon.Na_channel.Gbar, self.squid_axon.K_channel.Gbar + self.current_clamp = moose.PulseGen(path+'/pulsegen') + self.current_clamp.firstDelay = 5.0 # ms + self.current_clamp.firstWidth = 40 # ms + self.current_clamp.firstLevel = 0.1 # uA + self.current_clamp.secondDelay = 1e9 + print 'Current clamp connected:', moose.connect(self.current_clamp, 'output', self.squid_axon, 'injectMsg') + + self.Vm_table = moose.Table('%s/Vm' % (self.path)) + moose.connect(self.Vm_table, 'requestOut', self.squid_axon, 'getVm') + self.gK_table = moose.Table('%s/gK' % (self.path)) + moose.connect(self.gK_table, 'requestOut', self.squid_axon.K_channel, 'getGk') + self.gNa_table = moose.Table('%s/gNa' % (self.path)) + moose.connect(self.gNa_table, 'requestOut', self.squid_axon.Na_channel, 'getGk') + self.clocks_assigned = False + + def run(self, runtime, simdt=1e-6): + self.squid_axon.updateEk() + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.setClock(3, simdt) + if not self.clocks_assigned: + moose.useClock(0, '%s/#[TYPE=Compartment]' % (self.path), 'init') + moose.useClock(0, '%s/#[TYPE=PulseGen]' % (self.path), 'process') + moose.useClock(1, '%s/#[TYPE=Compartment]' % (self.path), 'process') + moose.useClock(2, '%s/#[TYPE=HHChannel]' % (self.squid_axon.path), 'process') + moose.useClock(3, '%s/#[TYPE=Table]' % (self.path), 'process') + self.clocks_assigned = True + moose.reinit() + moose.start(runtime) + + def save_data(self): + self.Vm_table.xplot('Vm.dat', 'Vm') + print 'Vm saved to Vm.dat' + if hasattr(self, 'gK_table'): + self.gK_table.xplot('gK.dat', 'gK') + numpy.savetxt('K_alpha_n.dat', self.squid_axon.K_channel.alpha_m) + numpy.savetxt('K_beta_n.dat', self.squid_axon.K_channel.beta_m) + print 'K conductance saved to gK.dat' + if hasattr(self, 'gNa_table'): + self.gNa_table.xplot('gNa.dat', 'gNa') + numpy.savetxt('Na_alpha_m.dat', self.squid_axon.Na_channel.alpha_m) + numpy.savetxt('Na_beta_m.dat', self.squid_axon.Na_channel.beta_m) + numpy.savetxt('Na_alpha_h.dat', self.squid_axon.Na_channel.alpha_h) + numpy.savetxt('Na_beta_h.dat', self.squid_axon.Na_channel.beta_h) + print 'Na conductance saved to gNa.dat' + + + +def test(runtime=100.0, simdt=1e-2): + model = SquidModel('model') + model.run(runtime, simdt) + model.save_data() + +if __name__ == '__main__': + # unittest.main() + test() + + + +# +# squid.py ends here diff --git a/examples/squid/squid_demo.py b/examples/squid/squid_demo.py new file mode 100644 index 0000000..85a3518 --- /dev/null +++ b/examples/squid/squid_demo.py @@ -0,0 +1,899 @@ + + # -*- coding: utf-8 -*- +# squidgui.py --- +# +# Filename: squidgui.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 9 18:23:55 2012 (+0530) +# Version: +# Last-Updated: Tue May 3 00:18:47 2016 (-0400) +# By: subha +# Update #: 1078 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' + +from collections import defaultdict +import time + +from PyQt4 import QtGui +from PyQt4 import QtCore +import numpy +from matplotlib.figure import Figure +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar + +import moose + +from squid import * +from squid_setup import SquidSetup +from electronics import ClampCircuit + + +tooltip_Nernst = """

Ionic equilibrium potential

+

+The equilibrium potential for ion C is given by Nernst equation: +

+EC = (RT/zF) * ln([C]out / [C]in) +

+where R is the ideal gas constant (8.3145 J/mol K),
+ T is absolute temperature,
+ z is the valence of the ion,
+ F is Faraday's constant 96480 C/mol,
+ [C]out is concentration of C outside the membrane,
+ [C]in is concentration of C inside the membrane.""" + +tooltip_Erest = """

Resting membrane potential

+

+The resting membrane potential is determined by the ionic +concentrations inside and outside the cell membrane and is given by +the Goldman-Hodgkin-Katz equation: +

+ +V = (RT/F) * ln((PK[K+]out + PNa[Na+]out + PCl[Cl-]in) / (PK[K+]in + PNa[Na+]in + PCl[Cl-]out)) + +

+where PC is the permeability of the membrane to ion C. + +""" + +tooltip_NaChan = u"""

Na+ channel conductance

+

+The Na+ channel conductance in squid giant axon is given by: + +

GNa = ḠNa * m3 * h

+ +and the current through this channel is: +

+INa = GNa * (V - ENa) = ḠNa * m3 * h * (V - ENa) +

+ +where ḠNa is the peak conductance of Na+ channel, m is +the fraction of activation gates open and h is the fraction of +deactivation gates open. The transition from open to closed state has +first order kinetics: +

dm/dt = αm * ( 1 - m) - βm * m

+and similarly for h. + +The steady state values are: +

m = αm/(αm + βm)

+and time constant for steady state is: +

τm = 1/ (αm + βm)

+and similarly for h. +""" + +tooltip_KChan = u"""

K+ channel conductance

+

The K+ channel conductance in squid giant axon is given by: + +

GK = ḠK * n4

+ +and the current through this channel is: +

+IK = GK * (V - EK) = ḠK * n4 * (V - EK) +

+where ḠK is the peak conductance of K+ channel, +n is the fraction of activation gates open. The transition from open +to closed state has first order kinetics:

dn/dt = αn * +( 1 - n) - βn * n

. + +The steady state values are: +

+n = αn/(αn + βn) +

+and time constant for steady state is: +

n = 1/ (αn + βn) + +

+and similarly for h. +""" + +tooltip_Im = """

Membrane current

+

+The current through the membrane is given by: +

+Im = Cm dV/dt + IK + INa + IL +

+ = Cm dV/dt + GK(V, t) * (V - EK) + GNa * (V - ENa) + GL * (V - EL) +

+where GL is the leak current and EL is the leak reversal potential. + +""" + +default_line_edit_size = QtCore.QSize(80, 25) +def set_default_line_edit_size(widget): + widget.setMinimumSize(default_line_edit_size) + widget.setMaximumSize(default_line_edit_size) + + +class SquidGui(QtGui.QMainWindow): + defaults = {} + defaults.update(SquidAxon.defaults) + defaults.update(ClampCircuit.defaults) + defaults.update({'runtime': 50.0, + 'simdt': 0.01, + 'plotdt': 0.1, + 'vclamp.holdingV': 0.0, + 'vclamp.holdingT': 10.0, + 'vclamp.prepulseV': 0.0, + 'vclamp.prepulseT': 0.0, + 'vclamp.clampV': 50.0, + 'vclamp.clampT': 20.0, + 'iclamp.baseI': 0.0, + 'iclamp.firstI': 0.1, + 'iclamp.firstT': 40.0, + 'iclamp.firstD': 5.0, + 'iclamp.secondI': 0.0, + 'iclamp.secondT': 0.0, + 'iclamp.secondD': 0.0 + }) + def __init__(self, *args): + QtGui.QMainWindow.__init__(self, *args) + self.squid_setup = SquidSetup() + self._plotdt = SquidGui.defaults['plotdt'] + self._plot_dict = defaultdict(list) + self.setWindowTitle('Squid Axon simulation') + self.setDockNestingEnabled(True) + self._createRunControl() + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._runControlDock) + self._runControlDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) + self._createChannelControl() + self._channelCtrlBox.setWindowTitle('Channel properties') + self._channelControlDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._channelControlDock) + self._createElectronicsControl() + self._electronicsDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) + self._electronicsDock.setWindowTitle('Electronics') + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._electronicsDock) + self._createPlotWidget() + self.setCentralWidget(self._plotWidget) + self._createStatePlotWidget() + self._createHelpMessage() + self._helpWindow.setVisible(False) + self._statePlotWidget.setWindowFlags(QtCore.Qt.Window) + self._statePlotWidget.setWindowTitle('State plot') + self._initActions() + self._createRunToolBar() + self._createPlotToolBar() + + def getFloatInput(self, widget, name): + try: + return float(str(widget.text())) + except ValueError: + QtGui.QMessageBox.critical(self, 'Invalid input', 'Please enter a valid number for {}'.format(name)) + raise + + + def _createPlotWidget(self): + self._plotWidget = QtGui.QWidget() + self._plotFigure = Figure() + self._plotCanvas = FigureCanvas(self._plotFigure) + self._plotCanvas.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._plotCanvas.updateGeometry() + self._plotCanvas.setParent(self._plotWidget) + self._plotCanvas.mpl_connect('scroll_event', self._onScroll) + self._plotFigure.set_canvas(self._plotCanvas) + # Vm and command voltage go in the same subplot + self._vm_axes = self._plotFigure.add_subplot(2,2,1, title='Membrane potential') + self._vm_axes.set_ylim(-20.0, 120.0) + # Channel conductances go to the same subplot + self._g_axes = self._plotFigure.add_subplot(2,2,2, title='Channel conductance') + self._g_axes.set_ylim(0.0, 0.5) + # Injection current for Vclamp/Iclamp go to the same subplot + self._im_axes = self._plotFigure.add_subplot(2,2,3, title='Injection current') + self._im_axes.set_ylim(-0.5, 0.5) + # Channel currents go to the same subplot + self._i_axes = self._plotFigure.add_subplot(2,2,4, title='Channel current') + self._i_axes.set_ylim(-10, 10) + for axis in self._plotFigure.axes: + axis.set_autoscale_on(False) + layout = QtGui.QVBoxLayout() + layout.addWidget(self._plotCanvas) + self._plotNavigator = NavigationToolbar(self._plotCanvas, self._plotWidget) + layout.addWidget(self._plotNavigator) + self._plotWidget.setLayout(layout) + + def _createStatePlotWidget(self): + self._statePlotWidget = QtGui.QWidget() + self._statePlotFigure = Figure() + self._statePlotCanvas = FigureCanvas(self._statePlotFigure) + self._statePlotCanvas.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._statePlotCanvas.updateGeometry() + self._statePlotCanvas.setParent(self._statePlotWidget) + self._statePlotFigure.set_canvas(self._statePlotCanvas) + self._statePlotFigure.subplots_adjust(hspace=0.5) + self._statePlotAxes = self._statePlotFigure.add_subplot(2,1,1, title='State plot') + self._state_plot, = self._statePlotAxes.plot([], [], label='state') + self._activationParamAxes = self._statePlotFigure.add_subplot(2,1,2, title='H-H activation parameters vs time') + self._activationParamAxes.set_xlabel('Time (ms)') + #for axis in self._plotFigure.axes: + # axis.autoscale(False) + self._stateplot_xvar_label = QtGui.QLabel('Variable on X-axis') + self._stateplot_xvar_combo = QtGui.QComboBox() + self._stateplot_xvar_combo.addItems(['V', 'm', 'n', 'h']) + self._stateplot_xvar_combo.setCurrentIndex(0) + self._stateplot_xvar_combo.setEditable(False) + self.connect(self._stateplot_xvar_combo, + QtCore.SIGNAL('currentIndexChanged(const QString&)'), + self._statePlotXSlot) + self._stateplot_yvar_label = QtGui.QLabel('Variable on Y-axis') + self._stateplot_yvar_combo = QtGui.QComboBox() + self._stateplot_yvar_combo.addItems(['V', 'm', 'n', 'h']) + self._stateplot_yvar_combo.setCurrentIndex(2) + self._stateplot_yvar_combo.setEditable(False) + self.connect(self._stateplot_yvar_combo, + QtCore.SIGNAL('currentIndexChanged(const QString&)'), + self._statePlotYSlot) + self._statePlotNavigator = NavigationToolbar(self._statePlotCanvas, self._statePlotWidget) + frame = QtGui.QFrame() + frame.setFrameStyle(QtGui.QFrame.StyledPanel + QtGui.QFrame.Raised) + layout = QtGui.QHBoxLayout() + layout.addWidget(self._stateplot_xvar_label) + layout.addWidget(self._stateplot_xvar_combo) + layout.addWidget(self._stateplot_yvar_label) + layout.addWidget(self._stateplot_yvar_combo) + frame.setLayout(layout) + self._closeStatePlotAction = QtGui.QAction('Close', self) + self.connect(self._closeStatePlotAction, QtCore.SIGNAL('triggered()'), self._statePlotWidget.close) + self._closeStatePlotButton = QtGui.QToolButton() + self._closeStatePlotButton.setDefaultAction(self._closeStatePlotAction) + layout = QtGui.QVBoxLayout() + layout.addWidget(frame) + layout.addWidget(self._statePlotCanvas) + layout.addWidget(self._statePlotNavigator) + layout.addWidget(self._closeStatePlotButton) + self._statePlotWidget.setLayout(layout) + # Setting the close event so that when the help window is + # closed the ``State plot`` button becomes unchecked + self._statePlotWidget.closeEvent = lambda event: self._showStatePlotAction.setChecked(False) + + def _createRunControl(self): + self._runControlBox = QtGui.QGroupBox(self) + self._runControlBox.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + self._runTimeLabel = QtGui.QLabel("Run time (ms)", self._runControlBox) + self._simTimeStepLabel = QtGui.QLabel("Simulation time step (ms)", self._runControlBox) + self._runTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['runtime']), self._runControlBox) + set_default_line_edit_size(self._runTimeEdit) + self._simTimeStepEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['simdt']), self._runControlBox) + set_default_line_edit_size(self._simTimeStepEdit) + layout = QtGui.QGridLayout() + layout.addWidget(self._runTimeLabel, 0, 0) + layout.addWidget(self._runTimeEdit, 0, 1) + layout.addWidget(self._simTimeStepLabel, 1, 0) + layout.addWidget(self._simTimeStepEdit, 1, 1) + layout.setColumnStretch(2, 1.0) + layout.setRowStretch(2, 1.0) + self._runControlBox.setLayout(layout) + self._runControlDock = QtGui.QDockWidget('Simulation', self) + self._runControlDock.setWidget(self._runControlBox) + + def _createChannelControl(self): + self._channelControlDock = QtGui.QDockWidget('Channels', self) + self._channelCtrlBox = QtGui.QGroupBox(self) + self._naConductanceToggle = QtGui.QCheckBox('Block Na+ channel', self._channelCtrlBox) + self._naConductanceToggle.setToolTip('%s' % (tooltip_NaChan)) + self._kConductanceToggle = QtGui.QCheckBox('Block K+ channel', self._channelCtrlBox) + self._kConductanceToggle.setToolTip('%s' % (tooltip_KChan)) + self._kOutLabel = QtGui.QLabel('[K+]out (mM)', self._channelCtrlBox) + self._kOutEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.K_out), + self._channelCtrlBox) + self._kOutLabel.setToolTip('%s' % (tooltip_Nernst)) + self._kOutEdit.setToolTip('%s' % (tooltip_Nernst)) + set_default_line_edit_size(self._kOutEdit) + self._naOutLabel = QtGui.QLabel('[Na+]out (mM)', self._channelCtrlBox) + self._naOutEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.Na_out), + self._channelCtrlBox) + self._naOutLabel.setToolTip('%s' % (tooltip_Nernst)) + self._naOutEdit.setToolTip('%s' % (tooltip_Nernst)) + set_default_line_edit_size(self._naOutEdit) + self._kInLabel = QtGui.QLabel('[K+]in (mM)', self._channelCtrlBox) + self._kInEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.K_in), + self._channelCtrlBox) + self._kInEdit.setToolTip(tooltip_Nernst) + self._naInLabel = QtGui.QLabel('[Na+]in (mM)', self._channelCtrlBox) + self._naInEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.Na_in), + self._channelCtrlBox) + self._naInEdit.setToolTip('%s' % (tooltip_Nernst)) + self._temperatureLabel = QtGui.QLabel('Temperature (C)', self._channelCtrlBox) + self._temperatureEdit = QtGui.QLineEdit('%g' % (self.defaults['temperature'] - CELSIUS_TO_KELVIN), + self._channelCtrlBox) + self._temperatureEdit.setToolTip('%s' % (tooltip_Nernst)) + set_default_line_edit_size(self._temperatureEdit) + for child in self._channelCtrlBox.children(): + if isinstance(child, QtGui.QLineEdit): + set_default_line_edit_size(child) + layout = QtGui.QGridLayout(self._channelCtrlBox) + layout.addWidget(self._naConductanceToggle, 0, 0) + layout.addWidget(self._kConductanceToggle, 1, 0) + layout.addWidget(self._naOutLabel, 2, 0) + layout.addWidget(self._naOutEdit, 2, 1) + layout.addWidget(self._naInLabel, 3, 0) + layout.addWidget(self._naInEdit, 3, 1) + layout.addWidget(self._kOutLabel, 4, 0) + layout.addWidget(self._kOutEdit, 4, 1) + layout.addWidget(self._kInLabel, 5, 0) + layout.addWidget(self._kInEdit, 5, 1) + layout.addWidget(self._temperatureLabel, 6, 0) + layout.addWidget(self._temperatureEdit, 6, 1) + layout.setRowStretch(7, 1.0) + self._channelCtrlBox.setLayout(layout) + self._channelControlDock.setWidget(self._channelCtrlBox) + return self._channelCtrlBox + + def __get_stateplot_data(self, name): + data = [] + if name == 'V': + data = self.squid_setup.vm_table.vector + elif name == 'm': + data = self.squid_setup.m_table.vector + elif name == 'h': + data = self.squid_setup.h_table.vector + elif name == 'n': + data = self.squid_setup.n_table.vector + else: + raise ValueError('Unrecognized selection: %s' % (name)) + return numpy.asarray(data) + + def _statePlotYSlot(self, selectedItem): + ydata = self.__get_stateplot_data(str(selectedItem)) + self._state_plot.set_ydata(ydata) + self._statePlotAxes.set_ylabel(selectedItem) + if str(selectedItem) == 'V': + self._statePlotAxes.set_ylim(-20, 120) + else: + self._statePlotAxes.set_ylim(0, 1) + self._statePlotCanvas.draw() + + def _statePlotXSlot(self, selectedItem): + xdata = self.__get_stateplot_data(str(selectedItem)) + self._state_plot.set_xdata(xdata) + self._statePlotAxes.set_xlabel(selectedItem) + if str(selectedItem) == 'V': + self._statePlotAxes.set_xlim(-20, 120) + else: + self._statePlotAxes.set_xlim(0, 1) + self._statePlotCanvas.draw() + + def _createElectronicsControl(self): + """Creates a tabbed widget of voltage clamp and current clamp controls""" + self._electronicsTab = QtGui.QTabWidget(self) + self._electronicsTab.addTab(self._getIClampCtrlBox(), 'Current clamp') + self._electronicsTab.addTab(self._getVClampCtrlBox(), 'Voltage clamp') + self._electronicsDock = QtGui.QDockWidget(self) + self._electronicsDock.setWidget(self._electronicsTab) + + def _getVClampCtrlBox(self): + vClampPanel = QtGui.QGroupBox(self) + self._vClampCtrlBox = vClampPanel + self._holdingVLabel = QtGui.QLabel("Holding Voltage (mV)", vClampPanel) + self._holdingVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.holdingV']), vClampPanel) + self._holdingTimeLabel = QtGui.QLabel("Holding Time (ms)", vClampPanel) + self._holdingTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.holdingT']), vClampPanel) + self._prePulseVLabel = QtGui.QLabel("Pre-pulse Voltage (mV)", vClampPanel) + self._prePulseVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.prepulseV']), vClampPanel) + self._prePulseTimeLabel = QtGui.QLabel("Pre-pulse Time (ms)", vClampPanel) + self._prePulseTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.prepulseT']), vClampPanel) + self._clampVLabel = QtGui.QLabel("Clamp Voltage (mV)", vClampPanel) + self._clampVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.clampV']), vClampPanel) + self._clampTimeLabel = QtGui.QLabel("Clamp Time (ms)", vClampPanel) + self._clampTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.clampT']), vClampPanel) + for child in vClampPanel.children(): + if isinstance(child, QtGui.QLineEdit): + set_default_line_edit_size(child) + layout = QtGui.QGridLayout(vClampPanel) + layout.addWidget(self._holdingVLabel, 0, 0) + layout.addWidget(self._holdingVEdit, 0, 1) + layout.addWidget(self._holdingTimeLabel, 1, 0) + layout.addWidget(self._holdingTimeEdit, 1, 1) + layout.addWidget(self._prePulseVLabel, 2, 0) + layout.addWidget(self._prePulseVEdit, 2, 1) + layout.addWidget(self._prePulseTimeLabel,3,0) + layout.addWidget(self._prePulseTimeEdit, 3, 1) + layout.addWidget(self._clampVLabel, 4, 0) + layout.addWidget(self._clampVEdit, 4, 1) + layout.addWidget(self._clampTimeLabel, 5, 0) + layout.addWidget(self._clampTimeEdit, 5, 1) + layout.setRowStretch(6, 1.0) + vClampPanel.setLayout(layout) + return self._vClampCtrlBox + + def _getIClampCtrlBox(self): + iClampPanel = QtGui.QGroupBox(self) + self._iClampCtrlBox = iClampPanel + self._baseCurrentLabel = QtGui.QLabel("Base Current Level (uA)",iClampPanel) + self._baseCurrentEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.baseI']),iClampPanel) + self._firstPulseLabel = QtGui.QLabel("First Pulse Current (uA)", iClampPanel) + self._firstPulseEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstI']), iClampPanel) + self._firstDelayLabel = QtGui.QLabel("First Onset Delay (ms)", iClampPanel) + self._firstDelayEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstD']),iClampPanel) + self._firstPulseWidthLabel = QtGui.QLabel("First Pulse Width (ms)", iClampPanel) + self._firstPulseWidthEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstT']), iClampPanel) + self._secondPulseLabel = QtGui.QLabel("Second Pulse Current (uA)", iClampPanel) + self._secondPulseEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondI']), iClampPanel) + self._secondDelayLabel = QtGui.QLabel("Second Onset Delay (ms)", iClampPanel) + self._secondDelayEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondD']),iClampPanel) + self._secondPulseWidthLabel = QtGui.QLabel("Second Pulse Width (ms)", iClampPanel) + self._secondPulseWidthEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondT']), iClampPanel) + self._pulseMode = QtGui.QComboBox(iClampPanel) + self._pulseMode.addItem("Single Pulse") + self._pulseMode.addItem("Pulse Train") + for child in iClampPanel.children(): + if isinstance(child, QtGui.QLineEdit): + set_default_line_edit_size(child) + layout = QtGui.QGridLayout(iClampPanel) + layout.addWidget(self._baseCurrentLabel, 0, 0) + layout.addWidget(self._baseCurrentEdit, 0, 1) + layout.addWidget(self._firstPulseLabel, 1, 0) + layout.addWidget(self._firstPulseEdit, 1, 1) + layout.addWidget(self._firstDelayLabel, 2, 0) + layout.addWidget(self._firstDelayEdit, 2, 1) + layout.addWidget(self._firstPulseWidthLabel, 3, 0) + layout.addWidget(self._firstPulseWidthEdit, 3, 1) + layout.addWidget(self._secondPulseLabel, 4, 0) + layout.addWidget(self._secondPulseEdit, 4, 1) + layout.addWidget(self._secondDelayLabel, 5, 0) + layout.addWidget(self._secondDelayEdit, 5, 1) + layout.addWidget(self._secondPulseWidthLabel, 6, 0) + layout.addWidget(self._secondPulseWidthEdit, 6, 1) + layout.addWidget(self._pulseMode, 7, 0, 1, 2) + layout.setRowStretch(8, 1.0) + # layout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + iClampPanel.setLayout(layout) + return self._iClampCtrlBox + + def _overlayPlots(self, overlay): + if not overlay: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + title = axis.get_title() + axis.clear() + axis.set_title(title) + suffix = '' + else: + suffix = '_%d' % (len(self._plot_dict['vm'])) + self._vm_axes.set_xlim(0.0, self._runtime) + self._g_axes.set_xlim(0.0, self._runtime) + self._im_axes.set_xlim(0.0, self._runtime) + self._i_axes.set_xlim(0.0, self._runtime) + self._vm_plot, = self._vm_axes.plot([], [], label='Vm%s'%(suffix)) + self._plot_dict['vm'].append(self._vm_plot) + self._command_plot, = self._vm_axes.plot([], [], label='command%s'%(suffix)) + self._plot_dict['command'].append(self._command_plot) + # Channel conductances go to the same subplot + self._gna_plot, = self._g_axes.plot([], [], label='Na%s'%(suffix)) + self._plot_dict['gna'].append(self._gna_plot) + self._gk_plot, = self._g_axes.plot([], [], label='K%s'%(suffix)) + self._plot_dict['gk'].append(self._gk_plot) + # Injection current for Vclamp/Iclamp go to the same subplot + self._iclamp_plot, = self._im_axes.plot([], [], label='Iclamp%s'%(suffix)) + self._vclamp_plot, = self._im_axes.plot([], [], label='Vclamp%s'%(suffix)) + self._plot_dict['iclamp'].append(self._iclamp_plot) + self._plot_dict['vclamp'].append(self._vclamp_plot) + # Channel currents go to the same subplot + self._ina_plot, = self._i_axes.plot([], [], label='Na%s'%(suffix)) + self._plot_dict['ina'].append(self._ina_plot) + self._ik_plot, = self._i_axes.plot([], [], label='K%s'%(suffix)) + self._plot_dict['ik'].append(self._ik_plot) + # self._i_axes.legend() + # State plots + self._state_plot, = self._statePlotAxes.plot([], [], label='state%s'%(suffix)) + self._plot_dict['state'].append(self._state_plot) + self._m_plot, = self._activationParamAxes.plot([],[], label='m%s'%(suffix)) + self._h_plot, = self._activationParamAxes.plot([], [], label='h%s'%(suffix)) + self._n_plot, = self._activationParamAxes.plot([], [], label='n%s'%(suffix)) + self._plot_dict['m'].append(self._m_plot) + self._plot_dict['h'].append(self._h_plot) + self._plot_dict['n'].append(self._n_plot) + if self._showLegendAction.isChecked(): + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.legend() + + def _updateAllPlots(self): + self._updatePlots() + self._updateStatePlot() + + def _updatePlots(self): + if len(self.squid_setup.vm_table.vector) <= 0: + return + vm = numpy.asarray(self.squid_setup.vm_table.vector) + cmd = numpy.asarray(self.squid_setup.cmd_table.vector) + ik = numpy.asarray(self.squid_setup.ik_table.vector) + ina = numpy.asarray(self.squid_setup.ina_table.vector) + iclamp = numpy.asarray(self.squid_setup.iclamp_table.vector) + vclamp = numpy.asarray(self.squid_setup.vclamp_table.vector) + gk = numpy.asarray(self.squid_setup.gk_table.vector) + gna = numpy.asarray(self.squid_setup.gna_table.vector) + time_series = numpy.linspace(0, self._plotdt * len(vm), len(vm)) + self._vm_plot.set_data(time_series, vm) + time_series = numpy.linspace(0, self._plotdt * len(cmd), len(cmd)) + self._command_plot.set_data(time_series, cmd) + time_series = numpy.linspace(0, self._plotdt * len(ik), len(ik)) + self._ik_plot.set_data(time_series, ik) + time_series = numpy.linspace(0, self._plotdt * len(ina), len(ina)) + self._ina_plot.set_data(time_series, ina) + time_series = numpy.linspace(0, self._plotdt * len(iclamp), len(iclamp)) + self._iclamp_plot.set_data(time_series, iclamp) + time_series = numpy.linspace(0, self._plotdt * len(vclamp), len(vclamp)) + self._vclamp_plot.set_data(time_series, vclamp) + time_series = numpy.linspace(0, self._plotdt * len(gk), len(gk)) + self._gk_plot.set_data(time_series, gk) + time_series = numpy.linspace(0, self._plotdt * len(gna), len(gna)) + self._gna_plot.set_data(time_series, gna) + # self._vm_axes.margins(y=0.1) + # self._g_axes.margin(y=0.1) + # self._im_axes.margins(y=0.1) + # self._i_axes.margins(y=0.1) + if self._autoscaleAction.isChecked(): + for axis in self._plotFigure.axes: + axis.relim() + axis.margins(0.1, 0.1) + axis.autoscale_view(tight=True) + else: + self._vm_axes.set_ylim(-20.0, 120.0) + self._g_axes.set_ylim(0.0, 0.5) + self._im_axes.set_ylim(-0.5, 0.5) + self._i_axes.set_ylim(-10, 10) + self._vm_axes.set_xlim(0.0, time_series[-1]) + self._g_axes.set_xlim(0.0, time_series[-1]) + self._im_axes.set_xlim(0.0, time_series[-1]) + self._i_axes.set_xlim(0.0, time_series[-1]) + self._plotCanvas.draw() + + def _updateStatePlot(self): + if len(self.squid_setup.vm_table.vector) <= 0: + return + sx = str(self._stateplot_xvar_combo.currentText()) + sy = str(self._stateplot_yvar_combo.currentText()) + xdata = self.__get_stateplot_data(sx) + ydata = self.__get_stateplot_data(sy) + minlen = min(len(xdata), len(ydata)) + self._state_plot.set_data(xdata[:minlen], ydata[:minlen]) + self._statePlotAxes.set_xlabel(sx) + self._statePlotAxes.set_ylabel(sy) + if sx == 'V': + self._statePlotAxes.set_xlim(-20, 120) + else: + self._statePlotAxes.set_xlim(0, 1) + if sy == 'V': + self._statePlotAxes.set_ylim(-20, 120) + else: + self._statePlotAxes.set_ylim(0, 1) + self._activationParamAxes.set_xlim(0, self._runtime) + m = self.__get_stateplot_data('m') + n = self.__get_stateplot_data('n') + h = self.__get_stateplot_data('h') + time_series = numpy.linspace(0, self._plotdt*len(m), len(m)) + self._m_plot.set_data(time_series, m) + time_series = numpy.linspace(0, self._plotdt*len(h), len(h)) + self._h_plot.set_data(time_series, h) + time_series = numpy.linspace(0, self._plotdt*len(n), len(n)) + self._n_plot.set_data(time_series, n) + if self._autoscaleAction.isChecked(): + for axis in self._statePlotFigure.axes: + axis.relim() + axis.set_autoscale_on(True) + axis.autoscale_view(True) + self._statePlotCanvas.draw() + + def _runSlot(self): + if moose.isRunning(): + print 'Stopping simulation in progress ...' + moose.stop() + self._runtime = self.getFloatInput(self._runTimeEdit, self._runTimeLabel.text()) + self._overlayPlots(self._overlayAction.isChecked()) + self._simdt = self.getFloatInput(self._simTimeStepEdit, self._simTimeStepLabel.text()) + clampMode = None + singlePulse = True + if self._electronicsTab.currentWidget() == self._vClampCtrlBox: + clampMode = 'vclamp' + baseLevel = self.getFloatInput(self._holdingVEdit, self._holdingVLabel.text()) + firstDelay = self.getFloatInput(self._holdingTimeEdit, self._holdingTimeLabel.text()) + firstWidth = self.getFloatInput(self._prePulseTimeEdit, self._prePulseTimeLabel.text()) + firstLevel = self.getFloatInput(self._prePulseVEdit, self._prePulseVLabel.text()) + secondDelay = firstWidth + secondWidth = self.getFloatInput(self._clampTimeEdit, self._clampTimeLabel.text()) + secondLevel = self.getFloatInput(self._clampVEdit, self._clampVLabel.text()) + if not self._autoscaleAction.isChecked(): + self._im_axes.set_ylim(-10.0, 10.0) + else: + clampMode = 'iclamp' + baseLevel = self.getFloatInput(self._baseCurrentEdit, self._baseCurrentLabel.text()) + firstDelay = self.getFloatInput(self._firstDelayEdit, self._firstDelayLabel.text()) + firstWidth = self.getFloatInput(self._firstPulseWidthEdit, self._firstPulseWidthLabel.text()) + firstLevel = self.getFloatInput(self._firstPulseEdit, self._firstPulseLabel.text()) + secondDelay = self.getFloatInput(self._secondDelayEdit, self._secondDelayLabel.text()) + secondLevel = self.getFloatInput(self._secondPulseEdit, self._secondPulseLabel.text()) + secondWidth = self.getFloatInput(self._secondPulseWidthEdit, self._secondPulseWidthLabel.text()) + singlePulse = (self._pulseMode.currentIndex() == 0) + if not self._autoscaleAction.isChecked(): + self._im_axes.set_ylim(-0.4, 0.4) + self.squid_setup.clamp_ckt.configure_pulses(baseLevel=baseLevel, + firstDelay=firstDelay, + firstWidth=firstWidth, + firstLevel=firstLevel, + secondDelay=secondDelay, + secondWidth=secondWidth, + secondLevel=secondLevel, + singlePulse=singlePulse) + if self._kConductanceToggle.isChecked(): + self.squid_setup.squid_axon.specific_gK = 0.0 + else: + self.squid_setup.squid_axon.specific_gK = SquidAxon.defaults['specific_gK'] + if self._naConductanceToggle.isChecked(): + self.squid_setup.squid_axon.specific_gNa = 0.0 + else: + self.squid_setup.squid_axon.specific_gNa = SquidAxon.defaults['specific_gNa'] + self.squid_setup.squid_axon.celsius = self.getFloatInput(self._temperatureEdit, self._temperatureLabel.text()) + self.squid_setup.squid_axon.K_out = self.getFloatInput(self._kOutEdit, self._kOutLabel.text()) + self.squid_setup.squid_axon.Na_out = self.getFloatInput(self._naOutEdit, self._naOutLabel.text()) + self.squid_setup.squid_axon.K_in = self.getFloatInput(self._kInEdit, self._kInLabel.text()) + self.squid_setup.squid_axon.Na_in = self.getFloatInput(self._naInEdit, self._naInLabel.text()) + self.squid_setup.squid_axon.updateEk() + self.squid_setup.schedule(self._simdt, self._plotdt, clampMode) + # The following line is for use with Qthread + self.squid_setup.run(self._runtime) + self._updateAllPlots() + + def _toggleDocking(self, on): + self._channelControlDock.setFloating(on) + self._electronicsDock.setFloating(on) + self._runControlDock.setFloating(on) + + def _restoreDocks(self): + self._channelControlDock.setVisible(True) + self._electronicsDock.setVisible(True) + self._runControlDock.setVisible(True) + + def _initActions(self): + self._runAction = QtGui.QAction(self.tr('Run'), self) + self._runAction.setShortcut(self.tr('F5')) + self._runAction.setToolTip('Run simulation (F5)') + self.connect(self._runAction, QtCore.SIGNAL('triggered()'), self._runSlot) + self._resetToDefaultsAction = QtGui.QAction(self.tr('Restore defaults'), self) + self._resetToDefaultsAction.setToolTip('Reset all settings to their default values') + self.connect(self._resetToDefaultsAction, QtCore.SIGNAL('triggered()'), self._useDefaults) + self._showLegendAction = QtGui.QAction(self.tr('Display legend'), self) + self._showLegendAction.setCheckable(True) + self.connect(self._showLegendAction, QtCore.SIGNAL('toggled(bool)'), self._showLegend) + self._showStatePlotAction = QtGui.QAction(self.tr('State plot'), self) + self._showStatePlotAction.setCheckable(True) + self._showStatePlotAction.setChecked(False) + self.connect(self._showStatePlotAction, QtCore.SIGNAL('toggled(bool)'), self._statePlotWidget.setVisible) + self._autoscaleAction = QtGui.QAction(self.tr('Auto-scale plots'), self) + self._autoscaleAction.setCheckable(True) + self._autoscaleAction.setChecked(False) + self.connect(self._autoscaleAction, QtCore.SIGNAL('toggled(bool)'), self._autoscale) + self._overlayAction = QtGui.QAction('Overlay plots', self) + self._overlayAction.setCheckable(True) + self._overlayAction.setChecked(False) + self._dockAction = QtGui.QAction('Undock all', self) + self._dockAction.setCheckable(True) + self._dockAction.setChecked(False) + self.connect(self._dockAction, QtCore.SIGNAL('toggled(bool)'), self._toggleDocking) + self._restoreDocksAction = QtGui.QAction('Show all', self) + self.connect(self._restoreDocksAction, QtCore.SIGNAL('triggered()'), self._restoreDocks) + self._quitAction = QtGui.QAction(self.tr('&Quit'), self) + self._quitAction.setShortcut(self.tr('Ctrl+Q')) + self.connect(self._quitAction, QtCore.SIGNAL('triggered()'), QtGui.qApp.closeAllWindows) + + + + def _createRunToolBar(self): + self._simToolBar = self.addToolBar(self.tr('Simulation control')) + self._simToolBar.addAction(self._quitAction) + self._simToolBar.addAction(self._runAction) + self._simToolBar.addAction(self._resetToDefaultsAction) + self._simToolBar.addAction(self._dockAction) + self._simToolBar.addAction(self._restoreDocksAction) + + def _createPlotToolBar(self): + self._plotToolBar = self.addToolBar(self.tr('Plotting control')) + self._plotToolBar.addAction(self._showLegendAction) + self._plotToolBar.addAction(self._autoscaleAction) + self._plotToolBar.addAction(self._overlayAction) + self._plotToolBar.addAction(self._showStatePlotAction) + self._plotToolBar.addAction(self._helpAction) + self._plotToolBar.addAction(self._helpBiophysicsAction) + + def _showLegend(self, on): + if on: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.legend().set_visible(True) + else: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.legend().set_visible(False) + self._plotCanvas.draw() + self._statePlotCanvas.draw() + + def _autoscale(self, on): + if on: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.relim() + axis.set_autoscale_on(True) + axis.autoscale_view(True) + else: + for axis in self._plotFigure.axes: + axis.set_autoscale_on(False) + self._vm_axes.set_ylim(-20.0, 120.0) + self._g_axes.set_ylim(0.0, 0.5) + self._im_axes.set_ylim(-0.5, 0.5) + self._i_axes.set_ylim(-10, 10) + self._plotCanvas.draw() + self._statePlotCanvas.draw() + + def _useDefaults(self): + self._runTimeEdit.setText('%g' % (self.defaults['runtime'])) + self._simTimeStepEdit.setText('%g' % (self.defaults['simdt'])) + self._overlayAction.setChecked(False) + self._naConductanceToggle.setChecked(False) + self._kConductanceToggle.setChecked(False) + self._kOutEdit.setText('%g' % (SquidGui.defaults['K_out'])) + self._naOutEdit.setText('%g' % (SquidGui.defaults['Na_out'])) + self._kInEdit.setText('%g' % (SquidGui.defaults['K_in'])) + self._naInEdit.setText('%g' % (SquidGui.defaults['Na_in'])) + self._temperatureEdit.setText('%g' % (SquidGui.defaults['temperature'] - CELSIUS_TO_KELVIN)) + self._holdingVEdit.setText('%g' % (SquidGui.defaults['vclamp.holdingV'])) + self._holdingTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.holdingT'])) + self._prePulseVEdit.setText('%g' % (SquidGui.defaults['vclamp.prepulseV'])) + self._prePulseTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.prepulseT'])) + self._clampVEdit.setText('%g' % (SquidGui.defaults['vclamp.clampV'])) + self._clampTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.clampT'])) + self._baseCurrentEdit.setText('%g' % (SquidGui.defaults['iclamp.baseI'])) + self._firstPulseEdit.setText('%g' % (SquidGui.defaults['iclamp.firstI'])) + self._firstDelayEdit.setText('%g' % (SquidGui.defaults['iclamp.firstD'])) + self._firstPulseWidthEdit.setText('%g' % (SquidGui.defaults['iclamp.firstT'])) + self._secondPulseEdit.setText('%g' % (SquidGui.defaults['iclamp.secondI'])) + self._secondDelayEdit.setText('%g' % (SquidGui.defaults['iclamp.secondD'])) + self._secondPulseWidthEdit.setText('%g' % (SquidGui.defaults['iclamp.secondT'])) + self._pulseMode.setCurrentIndex(0) + + def _onScroll(self, event): + if event.inaxes is None: + return + axes = event.inaxes + zoom = 0.0 + if event.button == 'up': + zoom = -1.0 + elif event.button == 'down': + zoom = 1.0 + if zoom != 0.0: + self._plotNavigator.push_current() + axes.get_xaxis().zoom(zoom) + axes.get_yaxis().zoom(zoom) + self._plotCanvas.draw() + + def closeEvent(self, event): + QtGui.qApp.closeAllWindows() + + def _showBioPhysicsHelp(self): + self._createHelpMessage() + self._helpMessageText.setText('

%s

%s

%s

%s

%s

' % + (tooltip_Nernst, + tooltip_Erest, + tooltip_KChan, + tooltip_NaChan, + tooltip_Im)) + self._helpWindow.setVisible(True) + + def _showRunningHelp(self): + self._createHelpMessage() + self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) + self._helpWindow.setVisible(True) + + def _createHelpMessage(self): + if hasattr(self, '_helpWindow'): + return + self._helpWindow = QtGui.QWidget() + self._helpWindow.setWindowFlags(QtCore.Qt.Window) + layout = QtGui.QVBoxLayout() + self._helpWindow.setLayout(layout) + self._helpMessageArea = QtGui.QScrollArea() + self._helpMessageText = QtGui.QTextBrowser() + self._helpMessageText.setOpenExternalLinks(True) + self._helpMessageArea.setWidget(self._helpMessageText) + layout.addWidget(self._helpMessageText) + self._squidGuiPath = os.path.dirname(os.path.abspath(__file__)) + self._helpBaseURL = os.path.join(self._squidGuiPath,'help.html') + self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) + self._helpMessageText.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._helpMessageArea.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._helpMessageText.setMinimumSize(800, 600) + self._closeHelpAction = QtGui.QAction('Close', self) + self.connect(self._closeHelpAction, QtCore.SIGNAL('triggered()'), self._helpWindow.close) + # Setting the close event so that the ``Help`` button is + # unchecked when the help window is closed + self._helpWindow.closeEvent = lambda event: self._helpAction.setChecked(False) + self._helpTOCAction = QtGui.QAction('Help running demo', self) + self.connect(self._helpTOCAction, QtCore.SIGNAL('triggered()'), self._jumpToHelpTOC) + # This panel is for putting two buttons using horizontal + # layout + panel = QtGui.QFrame() + panel.setFrameStyle(QtGui.QFrame.StyledPanel + QtGui.QFrame.Raised) + layout.addWidget(panel) + layout = QtGui.QHBoxLayout() + panel.setLayout(layout) + self._helpAction = QtGui.QAction('Help running', self) + self.connect(self._helpAction, QtCore.SIGNAL('triggered()'), self._showRunningHelp) + self._helpBiophysicsAction = QtGui.QAction('Help biophysics', self) + self.connect(self._helpBiophysicsAction, QtCore.SIGNAL('triggered()'), self._showBioPhysicsHelp) + self._helpTOCButton = QtGui.QToolButton() + self._helpTOCButton.setDefaultAction(self._helpTOCAction) + self._helpBiophysicsButton = QtGui.QToolButton() + self._helpBiophysicsButton.setDefaultAction(self._helpBiophysicsAction) + layout.addWidget(self._helpTOCButton) + layout.addWidget(self._helpBiophysicsButton) + self._closeHelpButton = QtGui.QToolButton() + self._closeHelpButton.setDefaultAction(self._closeHelpAction) + layout.addWidget(self._closeHelpButton) + + def _jumpToHelpTOC(self): + self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) + +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + app.connect(app, QtCore.SIGNAL('lastWindowClosed()'), app, QtCore.SLOT('quit()')) + QtGui.qApp = app + squid_gui = SquidGui() + squid_gui.show() + print squid_gui.size() + sys.exit(app.exec_()) + +# +# squidgui.py ends here diff --git a/examples/squid/squid_setup.py b/examples/squid/squid_setup.py new file mode 100644 index 0000000..6f24e46 --- /dev/null +++ b/examples/squid/squid_setup.py @@ -0,0 +1,118 @@ +# squid_demo.py --- +# +# Filename: squid_demo.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Feb 22 23:24:21 2012 (+0530) +# Version: +# Last-Updated: Tue Mar 6 23:25:50 2012 (+0530) +# By: Subhasis Ray +# Update #: 162 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: + +import moose + +from squid import SquidAxon +from electronics import ClampCircuit + +class SquidSetup(object): + def __init__(self): + self.scheduled = False + self.model_container = moose.Neutral('/model') + self.data_container = moose.Neutral('/data') + self.squid_axon = SquidAxon('/model/squid_axon') + self.clamp_ckt = ClampCircuit('/model/electronics', self.squid_axon) + self.simdt = 0.0 + self.plotdt = 0.0 + self.setup_recording() + + def setup_recording(self): + # Setup data collection + self.vm_table = moose.Table('/data/Vm') + moose.connect(self.vm_table, 'requestOut', self.squid_axon, 'getVm') + self.cmd_table = moose.Table('/data/command') + moose.connect(self.cmd_table, 'requestOut', self.clamp_ckt.vclamp, 'getOutputValue') + self.iclamp_table = moose.Table('/data/Iclamp') + moose.connect(self.iclamp_table, 'requestOut', self.clamp_ckt.iclamp, 'getOutputValue') + self.vclamp_table = moose.Table('/data/Vclamp') + moose.connect(self.vclamp_table, 'requestOut', self.clamp_ckt.pid, 'getOutputValue') + self.m_table = moose.Table('/data/m') + moose.connect(self.m_table, 'requestOut', self.squid_axon.Na_channel, 'getX') + self.h_table = moose.Table('/data/h') + moose.connect(self.h_table, 'requestOut', self.squid_axon.Na_channel, 'getY') + self.n_table = moose.Table('/data/n') + moose.connect(self.n_table, 'requestOut', self.squid_axon.K_channel, 'getX') + self.ina_table = moose.Table('/data/INa') + moose.connect(self.ina_table, 'requestOut', self.squid_axon.Na_channel, 'getIk') + self.ik_table = moose.Table('/data/IK') + moose.connect(self.ik_table, 'requestOut', self.squid_axon.K_channel, 'getIk') + self.gna_table = moose.Table('/data/GNa') + moose.connect(self.gna_table, 'requestOut', self.squid_axon.Na_channel, 'getGk') + self.gk_table = moose.Table('/data/GK') + moose.connect(self.gk_table, 'requestOut', self.squid_axon.K_channel, 'getGk') + + def schedule(self, simdt, plotdt, clampmode): + self.simdt = simdt + self.plotdt = plotdt + if clampmode == 'vclamp': + self.clamp_ckt.do_voltage_clamp() + else: + self.clamp_ckt.do_current_clamp() + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.setClock(3, plotdt) + # Ensure we do not create multiple scheduling + if not self.scheduled: + moose.useClock(0, '%s/#[TYPE=Compartment]' % (self.model_container.path), 'init') + moose.useClock(0, '%s/##' % (self.clamp_ckt.path), 'process') + moose.useClock(1, '%s/#[TYPE=Compartment]' % (self.model_container.path), 'process') + moose.useClock(2, '%s/#[TYPE=HHChannel]' % (self.squid_axon.path), 'process') + moose.useClock(3, '%s/#[TYPE=Table]' % (self.data_container.path), 'process') + self.scheduled = True + moose.reinit() + + def run(self, runtime): + moose.start(runtime) + + def save_data(self): + for child in self.data_container.children: + tab = moose.Table(child) + tab.xplot('%s.dat' % (tab.name), tab.name) + +import sys +clamp_mode = 'vclamp' +if __name__ == '__main__': + demo = SquidSetup() + if len(sys.argv) > 1: + clamp_mode = sys.argv[1] + # The pulsegen object needs different values for different clamp modes + if clamp_mode == 'iclamp': + demo.clamp_ckt.configure_pulses() + else: + demo.clamp_ckt.configure_pulses(baseLevel=0.0, firstDelay=10.0, firstLevel=SquidAxon.EREST_ACT, firstWidth=0.0, secondDelay=0.0, secondLevel=50.0+SquidAxon.EREST_ACT, secondWidth=20.0) + demo.schedule(1e-2, 0.01, clamp_mode) + + demo.run(50.0) + demo.save_data() + +# +# squid_demo.py ends here diff --git a/examples/squid/test_squid.py b/examples/squid/test_squid.py new file mode 100644 index 0000000..005cb16 --- /dev/null +++ b/examples/squid/test_squid.py @@ -0,0 +1,117 @@ +# test_squid.py --- +# +# Filename: test_squid.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Feb 22 00:41:36 2012 (+0530) +# Version: +# Last-Updated: Wed Feb 22 00:41:51 2012 (+0530) +# By: Subhasis Ray +# Update #: 2 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: + +import unittest +import pylab +from squid import SquidModel + +class SquidAxonTest(unittest.TestCase): + def setUp(self): + self.vrange = numpy.linspace(SquidModel.VMIN, SquidModel.VMAX, SquidModel.VDIVS+1) + self.model = SquidModel('testSquidAxon') + + def calc_alpha_beta(self, params, table='A'): + denominator = params[table+'_C'] + numpy.exp((self.vrange+params[table+'_D'])/params[table+'_F']) + numerator = params[table+'_A'] + params[table+'_B'] * self.vrange + y = numpy.zeros(len(self.vrange)) + singularities = numpy.nonzero(denominator == 0.0)[0] + self.assertLessEqual(len(singularities), 1) + if len(singularities) == 1: + y[:singularities[0]] = numerator[:singularities[0]]/denominator[:singularities[0]] + y[singularities[0]] = params[table+'_B'] * params[table+'_F'] + y[singularities[0]+1:] = numerator[singularities[0]+1:]/denominator[singularities[0]+1:] + elif len(singularities) == 0: + y[:] = numerator[:]/denominator[:] + return y + + def test_Na_alpha_m(self): + alpha_m = self.calc_alpha_beta(SquidModel.Na_m_params, 'A') + difference = numpy.sqrt(numpy.mean((alpha_m - self.model.Na_channel.alpha_m)**2)) + pylab.title('Na_alpha_m') + pylab.plot(alpha_m, label='python') + pylab.plot(self.model.Na_channel.alpha_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(alpha_m)*1e-6) + + def test_Na_beta_m(self): + beta_m = self.calc_alpha_beta(SquidModel.Na_m_params, 'B') + difference = numpy.sqrt(numpy.mean((beta_m - self.model.Na_channel.beta_m)**2)) + pylab.title('Na_beta_m') + pylab.plot(beta_m, label='python') + pylab.plot(self.model.Na_channel.beta_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(beta_m)*1e-6) + + def test_Na_alpha_h(self): + alpha_h = self.calc_alpha_beta(SquidModel.Na_h_params, 'A') + difference = numpy.sqrt(numpy.mean((alpha_h - self.model.Na_channel.alpha_h)**2)) + pylab.title('Na_alpha_h') + pylab.plot(alpha_h, label='python') + pylab.plot(self.model.Na_channel.alpha_h, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(alpha_h)*1e-6) + + def test_Na_beta_h(self): + beta_h = self.calc_alpha_beta(SquidModel.Na_h_params, 'B') + difference = numpy.sqrt(numpy.mean((beta_h - self.model.Na_channel.beta_h)**2)) + pylab.title('Na_beta_h') + pylab.plot(beta_h, label='python') + pylab.plot(self.model.Na_channel.beta_h, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(beta_h)*1e-6) + + def test_K_alpha_m(self): + alpha_m = self.calc_alpha_beta(SquidModel.K_n_params, 'A') + difference = numpy.sqrt(numpy.mean((alpha_m - self.model.K_channel.alpha_m)**2)) + pylab.title('K_alpha_n') + pylab.plot(alpha_m, label='python') + pylab.plot(self.model.K_channel.alpha_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(alpha_m)*1e-6) + + def test_K_beta_m(self): + beta_m = self.calc_alpha_beta(SquidModel.K_n_params, 'B') + difference = numpy.sqrt(numpy.mean((beta_m - self.model.K_channel.beta_m)**2)) + pylab.title('K_beta_n') + pylab.plot(beta_m, label='python') + pylab.plot(self.model.K_channel.beta_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(beta_m)*1e-6) + + + +# +# test_squid.py ends here diff --git a/examples/symcomp/compare_genesis.py b/examples/symcomp/compare_genesis.py new file mode 100644 index 0000000..aa9ab64 --- /dev/null +++ b/examples/symcomp/compare_genesis.py @@ -0,0 +1,78 @@ +# compare_genesis.py --- +# +# Filename: compare_genesis.py +# Description: +# Author: +# Maintainer: +# Created: Fri Jun 21 15:31:01 2013 (+0530) +# Version: +# Last-Updated: Wed Jun 26 14:38:58 2013 (+0530) +# By: subha +# Update #: 30 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +from pylab import * + +moose_soma = loadtxt('symcompartment.txt') +plot(moose_soma[:,0], moose_soma[:,1], color='#114477', ls='', marker='o', label='moose-soma', alpha=0.5) +plot(moose_soma[:,0], moose_soma[:,2], color='#4477AA', ls='', marker='o', label='moose-d1', alpha=0.5) +plot(moose_soma[:,0], moose_soma[:,3], color='#77AADD', ls='', marker='o', label='moose-d2', alpha=0.5) + +moose_soma = loadtxt('symcompartment_readcell.txt') +plot(moose_soma[:,0], moose_soma[:,1], color='#117744', ls='', marker='x', label='moose-readcell-soma', alpha=0.5) +plot(moose_soma[:,0], moose_soma[:,2], color='#44AAAA', ls='', marker='x', label='moose-readcell-d1', alpha=0.5) +plot(moose_soma[:,0], moose_soma[:,3], color='#77CCCC', ls='', marker='x', label='moose-readcell-d2', alpha=0.5) + +gen_d1 = loadtxt('genesis_d1_Vm.txt') +gen_soma = loadtxt('genesis_soma_Vm.txt') +gen_d2 = loadtxt('genesis_d2_Vm.txt') +plot(gen_soma[:, 0], gen_soma[:, 1], color='#771122', ls='', marker='x', label='gen-soma', alpha=0.5) +plot(gen_d1[:,0], gen_d1[:,1], color='#AA4455', ls='', marker='x', label='gen-d1', alpha=0.5) +plot(gen_d2[:,0], gen_d2[:,1], color='#771155', ls='', marker='x', label='gen-d2', alpha=0.5) + +gen_d1 = loadtxt('genesis_readcell_d1_Vm.txt') +gen_soma = loadtxt('genesis_readcell_soma_Vm.txt') +gen_d2 = loadtxt('genesis_readcell_d2_Vm.txt') +plot(gen_soma[:, 0], gen_soma[:, 1], color='#774411', ls='--', label='gen-readcell-soma', alpha=0.5) +plot(gen_d1[:,0], gen_d1[:,1], color='#AA7744', ls='--', label='gen-readcell-d1', alpha=0.5) +plot(gen_d2[:,0], gen_d2[:,1], color='#DDAA77', ls='--', label='gen-readcell-d2', alpha=0.5) + +legend() +show() + +# +# compare_genesis.py ends here diff --git a/examples/symcomp/compartments.g b/examples/symcomp/compartments.g new file mode 100644 index 0000000..6b7ac84 --- /dev/null +++ b/examples/symcomp/compartments.g @@ -0,0 +1,116 @@ +//genesis + +/*********************************************************************** +** ** +** Compartments.g : compartment definition file, neuron builder kit ** +** ** +** By E. De Schutter, Nov 1990 ** +** Modified June 1990 ** +** ** +** Modified by D. Beeman for GENESIS 2.0, April 1995 ** +************************************************************************/ + +/* FUNCTIONS TO MAKE DEFAULT LIBRARY COMPARTMENTS */ + +// NOTE: Previous (GENESIS 1.*) versions assumed that global variables +// for RM, CN, RA and EREST_ACT had been previously declared and set +// This is no longer necessary + +function make_cylind_compartment + // These default compartment parameters can be overridden by readcell + float RM = 0.33333 // specific membrane resistance (ohms m^2) + float CM = 0.01 // specific membrane capacitance (farads/m^2) + float RA = 0.3 // specific axial resistance (ohms m) + float EREST_ACT = -0.07 // resting membrane potential (volts) + float len = 100.0e-6 + float dia = 2.0e-6 + float PI = 3.14159 + float surface = len * dia * PI + + if (!{exists compartment}) + create compartment compartment + end + setfield compartment \ + Cm {CM * surface} \ // F + Ra {4.0*RA*len / (dia*dia*PI)} \ // ohm + Em {EREST_ACT} \ // V + Rm {RM / surface} \ // ohm + dia {dia} \ + len {len} \ + inject 0.0 +end + +function make_cylind_symcompartment + // These default compartment parameters can be overridden by readcell + float RM = 0.33333 // specific membrane resistance (ohms m^2) + float CM = 0.01 // specific membrane capacitance (farads/m^2) + float RA = 0.3 // specific axial resistance (ohms m) + float EREST_ACT = -0.07 // resting membrane potential (volts) + float len = 100.0e-6 + float dia = 2.0e-6 + float PI = 3.14159 + float surface = len * dia * PI + + if (!{exists symcompartment}) + create symcompartment symcompartment + end + setfield symcompartment \ + Cm {CM * surface} \ // F + Ra {4.0*RA*len / (dia*dia*PI)} \ // ohm + Em {EREST_ACT} \ // V + Rm {RM / surface} \ // ohm + dia {dia} \ + len {len} \ + inject 0.0 + +end + +/******************************************************************************/ +/* These functions are included for compatibility with older neurokit +** versions, one does not need to call them anymore though! */ + +function make_sphere_compartment + // These default compartment parameters can be overridden by readcell + float RM = 0.33333 // specific membrane resistance (ohms m^2) + float CM = 0.01 // specific membrane capacitance (farads/m^2) + float RA = 0.3 // specific axial resistance (ohms m) + float EREST_ACT = -0.07 // resting membrane potential (volts) + float dia = 20.0e-6 + float PI = 3.14159 + float surface = dia * dia * PI + + if (!{exists compartment_sphere}) + create compartment compartment_sphere + end + setfield compartment_sphere \ + Cm {CM * surface} \ // F + Ra {8.0*RA / (dia*PI)} \ // ohm + Em {EREST_ACT} \ // V + Rm {RM / surface} \ // ohm + dia {dia} \ + len 0.0 \ + inject 0.0 +end + +function make_sphere_symcompartment + // These default compartment parameters can be overridden by readcell + float RM = 0.33333 // specific membrane resistance (ohms m^2) + float CM = 0.01 // specific membrane capacitance (farads/m^2) + float RA = 0.3 // specific axial resistance (ohms m) + float EREST_ACT = -0.07 // resting membrane potential (volts) + float dia = 20.0e-6 + float PI = 3.14159 + float surface = dia * dia * PI + + if (!{exists symcompartment_sphere}) + create symcompartment symcompartment_sphere + end + setfield symcompartment_sphere \ + Cm {CM * surface} \ // F + Ra {8.0*RA / (dia*PI)} \ // ohm + Em {EREST_ACT} \ // V + Rm {RM / surface} \ // ohm + dia {dia} \ + len 0.0 \ + inject 0.0 +end diff --git a/examples/symcomp/symcomp.g b/examples/symcomp/symcomp.g new file mode 100644 index 0000000..06ab947 --- /dev/null +++ b/examples/symcomp/symcomp.g @@ -0,0 +1,46 @@ +float SIMTIME = 100e-3 +float SIMDT = 1e-6 +float NSTEPS = {SIMTIME/SIMDT} + +create symcompartment soma +setfield soma Em -60e-3 Rm 1e9 Cm 1e-11 Ra 1e6 +create symcompartment d1 +setfield d1 Em -60e-3 Rm 1e8 Cm 1e-10 Ra 1e7 +create symcompartment d2 +setfield d2 Em -60e-3 Rm 1e8 Cm 1e-10 Ra 2e7 +addmsg d1 soma CONNECTTAIL Ra Vm +addmsg d2 soma CONNECTTAIL Ra Vm +addmsg soma d1 CONNECTHEAD Ra Vm +addmsg soma d2 CONNECTHEAD Ra Vm +addmsg d1 d2 CONNECTCROSS Ra Vm +addmsg d2 d1 CONNECTCROSS Ra Vm + +create pulsegen pg +setfield pg level1 1e-6 delay1 10e-3 width1 20e-3 delay2 1e9 +addmsg pg d1 INJECT output + +create table soma_tab +setfield soma_tab step_mode 3 +call soma_tab TABCREATE {NSTEPS} 0 {SIMTIME} +addmsg soma soma_tab INPUT Vm + +create table d1_tab +setfield d1_tab step_mode 3 +call d1_tab TABCREATE {NSTEPS} 0 {SIMTIME} +addmsg d1 d1_tab INPUT Vm + +create table d2_tab +setfield d2_tab step_mode 3 +call d2_tab TABCREATE {NSTEPS} 0 {SIMTIME} +addmsg d2 d2_tab INPUT Vm + +setclock 0 {SIMDT} +useclock 0 /## +reset +step {SIMTIME} -t + +tab2file genesis_soma_Vm.txt soma_tab table -mode xy -nentries {NSTEPS} -overwrite +tab2file genesis_d1_Vm.txt d1_tab table -mode xy -nentries {NSTEPS} -overwrite +tab2file genesis_d2_Vm.txt d2_tab table -mode xy -nentries {NSTEPS} -overwrite + +// quit diff --git a/examples/symcomp/symcomp.p b/examples/symcomp/symcomp.p new file mode 100644 index 0000000..8fc79a0 --- /dev/null +++ b/examples/symcomp/symcomp.p @@ -0,0 +1,20 @@ +*cartesian +*relative +*symmetric +*set_global EREST_ACT -0.06 +*set_compt_param ELEAK -0.06 +*set_compt_param RM 2.513274122871835 +*set_compt_param CM 0.003978873577297383 +*set_compt_param RA 7.853981633974484 +soma none 40 0 0 20 +*set_compt_param ELEAK -0.06 +*set_compt_param RM 0.15707963267948968 +*set_compt_param CM 0.06366197723675814 +*set_compt_param RA 15.707963267948967 +d1 soma 50 0 0 10 +*set_compt_param ELEAK -0.06 +*set_compt_param RM 0.025132741228718343 +*set_compt_param CM 0.3978873577297384 +*set_compt_param RA 12.56637061435917 +d2 soma 20 0 0 4 + diff --git a/examples/symcomp/symcomp.py b/examples/symcomp/symcomp.py new file mode 100644 index 0000000..0876627 --- /dev/null +++ b/examples/symcomp/symcomp.py @@ -0,0 +1,109 @@ +# symcompartment.py --- +# +# Filename: symcompartment.py +# Description: +# Author: +# Maintainer: +# Created: Thu Jun 20 17:47:10 2013 (+0530) +# Version: +# Last-Updated: Wed Jun 26 11:43:47 2013 (+0530) +# By: subha +# Update #: 90 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import numpy as np +import pylab + +import moose + +simdt = 1e-6 +simtime = 100e-3 + +def test_symcompartment(): + model = moose.Neutral('model') + soma = moose.SymCompartment('%s/soma' % (model.path)) + soma.Em = -60e-3 + soma.Rm = 1e9 + soma.Cm = 1e-11 + soma.Ra = 1e6 + d1 = moose.SymCompartment('%s/d1' % (model.path)) + d1.Rm = 1e8 + d1.Cm = 1e-10 + d1.Ra = 1e7 + d2 = moose.SymCompartment('%s/d2' % (model.path)) + d2.Rm = 1e8 + d2.Cm = 1e-10 + d2.Ra = 2e7 + moose.connect(d1, 'proximal', soma, 'distal') + moose.connect(d2, 'proximal', soma, 'distal') + moose.connect(d1, 'sibling', d2, 'sibling') + pg = moose.PulseGen('/model/pulse') + pg.delay[0] = 10e-3 + pg.width[0] = 20e-3 + pg.level[0] = 1e-6 + pg.delay[1] = 1e9 + moose.connect(pg, 'output', d1, 'injectMsg') + data = moose.Neutral('/data') + tab_soma = moose.Table('%s/soma_Vm' % (data.path)) + tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) + tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) + moose.connect(tab_soma, 'requestOut', soma, 'getVm') + moose.connect(tab_d1, 'requestOut', d1, 'getVm') + moose.connect(tab_d2, 'requestOut', d2, 'getVm') + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.useClock(0, '/model/##[ISA=Compartment]', 'init') # This is allowed because SymCompartment is a subclass of Compartment + moose.useClock(1, '/model/##', 'process') + moose.useClock(2, '/data/##[ISA=Table]', 'process') + moose.reinit() + moose.start(simtime) + t = np.linspace(0, simtime, len(tab_soma.vector)) + data_matrix = np.vstack((t, tab_soma.vector, tab_d1.vector, tab_d2.vector)) + np.savetxt('symcompartment.txt', data_matrix.transpose()) + pylab.plot(t, tab_soma.vector, label='Vm_soma') + pylab.plot(t, tab_d1.vector, label='Vm_d1') + pylab.plot(t, tab_d2.vector, label='Vm_d2') + pylab.show() + +if __name__ == '__main__': + test_symcompartment() + + + +# +# symcompartment.py ends here diff --git a/examples/symcomp/symcomp_readcell.g b/examples/symcomp/symcomp_readcell.g new file mode 100644 index 0000000..8c5e295 --- /dev/null +++ b/examples/symcomp/symcomp_readcell.g @@ -0,0 +1,44 @@ +include compartments + +float EREST_ACT = -0.06 +float SIMTIME = 100e-3 +float SIMDT = 1e-6 +float NSTEPS = {SIMTIME/SIMDT} + + +create neutral /library +disable /library +pushe /library +make_cylind_symcompartment +pope + +readcell symcomp.p /cell + +create pulsegen pg +setfield pg level1 1e-6 delay1 10e-3 width1 20e-3 delay2 1e9 +addmsg pg /cell/d1 INJECT output + +create table soma_tab +setfield soma_tab step_mode 3 +call soma_tab TABCREATE {NSTEPS} 0 {SIMTIME} +addmsg /cell/soma soma_tab INPUT Vm + +create table d1_tab +setfield d1_tab step_mode 3 +call d1_tab TABCREATE {NSTEPS} 0 {SIMTIME} +addmsg /cell/d1 d1_tab INPUT Vm + +create table d2_tab +setfield d2_tab step_mode 3 +call d2_tab TABCREATE {NSTEPS} 0 {SIMTIME} +addmsg /cell/d2 d2_tab INPUT Vm + +setclock 0 {SIMDT} +useclock 0 /## +reset +step {SIMTIME} -t + +tab2file genesis_readcell_soma_Vm.txt soma_tab table -mode xy -nentries {NSTEPS} -overwrite +tab2file genesis_readcell_d1_Vm.txt d1_tab table -mode xy -nentries {NSTEPS} -overwrite +tab2file genesis_readcell_d2_Vm.txt d2_tab table -mode xy -nentries {NSTEPS} -overwrite + diff --git a/examples/symcomp/symcomp_readcell.py b/examples/symcomp/symcomp_readcell.py new file mode 100644 index 0000000..de063e6 --- /dev/null +++ b/examples/symcomp/symcomp_readcell.py @@ -0,0 +1,92 @@ +# symcomp_readcell.py --- +# +# Filename: symcomp_readcell.py +# Description: +# Author: +# Maintainer: +# Created: Fri Jun 21 16:38:36 2013 (+0530) +# Version: +# Last-Updated: Fri Jun 21 20:33:11 2013 (+0530) +# By: subha +# Update #: 20 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import moose +import pylab +import numpy as np + +simdt = 1e-6 +simtime = 100e-3 + +def test_symcomp_readcell(): + model = moose.Neutral('/model') + cell = moose.loadModel('symcomp.p', '%s/cell' % (model.path)) + pg = moose.PulseGen('/model/pulse') + pg.delay[0] = 10e-3 + pg.width[0] = 20e-3 + pg.level[0] = 1e-6 + pg.delay[1] = 1e9 + moose.connect(pg, 'output', moose.element('/model/cell/d1'), 'injectMsg') + data = moose.Neutral('/data') + tab_soma = moose.Table('%s/soma_Vm' % (data.path)) + tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) + tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) + moose.connect(tab_soma, 'requestOut', moose.element('/model/cell/soma'), 'getVm') + moose.connect(tab_d1, 'requestOut', moose.element('/model/cell/d1'), 'getVm') + moose.connect(tab_d2, 'requestOut', moose.element('/model/cell/d2'), 'getVm') + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.useClock(0, '/model/##[ISA=Compartment]', 'init') # This is allowed because SymCompartment is a subclass of Compartment + moose.useClock(1, '/model/##', 'process') + moose.useClock(2, '/data/##[ISA=Table]', 'process') + moose.reinit() + moose.start(simtime) + t = np.linspace(0, simtime, len(tab_soma.vector)) + data_matrix = np.vstack((t, tab_soma.vector, tab_d1.vector, tab_d2.vector)) + np.savetxt('symcompartment_readcell.txt', data_matrix.transpose()) + pylab.plot(t, tab_soma.vector, label='Vm_soma') + pylab.plot(t, tab_d1.vector, label='Vm_d1') + pylab.plot(t, tab_d2.vector, label='Vm_d2') + pylab.show() + +if __name__ == '__main__': + test_symcomp_readcell() + + +# +# symcomp_readcell.py ends here diff --git a/examples/traub_2005/.ignore_on_travis b/examples/traub_2005/.ignore_on_travis new file mode 100644 index 0000000..e69de29 diff --git a/examples/traub_2005/README b/examples/traub_2005/README new file mode 100644 index 0000000..b582688 --- /dev/null +++ b/examples/traub_2005/README @@ -0,0 +1,54 @@ +-*- mode: org -*- + +This directory contains port of Single column thalamocortical model by +Traub et al (2005). The subdirectory `py` contains pymoose version of +the model. Subdirectory `nrn` contains scripts to simulate individual +components of the model to generate data for comparison. To run any +script in the `nrn` directory you need to download the NEURON model +from [[http://senselab.med.yale.edu/modeldb/showmodel.asp?model=82894]] +and unzip the contents and copy all the contents of the `nrntraub` +directory (generated by unzipping) into the `nrn` subdirectory and +finally build the mechanisms by running `nrnivmodl mod/` (this is +described in detail in the readme of the NEURON model). + + +* Unit tests + For each ion channel `chan`, there is a hoc file called + `test_chan.hoc`. Running this file will create Channel_Vm.dat and + Channel_Gk.dat wehere `Channel` is the camelcased name of the channel + (used in MOOSE). + + For [Ca2+ ] object we have test_cad.hoc in nrn directory and + test_capool.py in py directory. + + The channel names in MOOSE do not always match the NEURON names, but + the data files generated are consistent between the two + versions. Already the reference data is provided in gzipped form in + nrn/data directory. If you want to update this data by rerunning the + NEURON tests, run `gzip *.dat` to compress them as MOOSE tests expect + the reference data to be in this form (with extension .gz). + + To run all the MOOSE tests, do: `python -m unittest -v test_nachans + test_kchans test_cachans test_archan test_capool` from the + commandline. + + The standard test is apply 1 pA current injection from 50 to 150 ms, + then apply a -1 pA current injection from 200 to 300 ms. + + The test_{celltype} files have step current injection test for each + celltype. + +* Using single cell models + The single cell classes can be used to create new copies of the + prototype cell. The signature is: + + cellclass(targetpath) + + for example, to create a DeepBasket cell with path '/model/db', you + will call: + + db = DeepBasket('/model/db') + + Look at cell_test_utils.py:setup_current_step_model function to see + how a single step current injection is setup for any specified cell + class. diff --git a/examples/traub_2005/nrn/hoc/utility.hoc b/examples/traub_2005/nrn/hoc/utility.hoc new file mode 100644 index 0000000..ad29f92 --- /dev/null +++ b/examples/traub_2005/nrn/hoc/utility.hoc @@ -0,0 +1,167 @@ +strdef tstr, parent_str, compname, comp_index, cellname, dump_file_name + +proc print_cell(){ localobj cell, dump_file, strfn, secref + print "###### Printcell" + if (numarg() < 2){ + print "Must pass a cell object and a file name" + return + } + strfn = new StringFunctions() + print "Refering to cell" + cell = $o1 + dump_file_name = $s2 + dump_file = new File() + print "Dump file created" + print "arg ", numarg() + strfn.head(secname(), "\\[", tstr) + dump_file.wopen(dump_file_name) + print "Opened dump file :", dump_file_name + dump_file.printf("comp,len,dia,sarea,xarea,Em,Cm,Rm,Ra") + dump_file.printf(",e_ar,gbar_ar") + dump_file.printf(",tau_cad,beta_cad") + dump_file.printf(",e_cal,gbar_cal") + dump_file.printf(",e_cat,gbar_cat") + dump_file.printf(",e_k2,gbar_k2") + dump_file.printf(",e_ka,gbar_ka") + dump_file.printf(",e_kahp,gbar_kahp") + dump_file.printf(",e_kc,gbar_kc") + dump_file.printf(",e_kdr,gbar_kdr") + dump_file.printf(",e_km,gbar_km") + dump_file.printf(",e_naf,gbar_naf") + dump_file.printf(",e_naf2,gbar_naf2") + dump_file.printf(",e_nap,gbar_nap") + dump_file.printf(",e_napf,gbar_napf") + dump_file.printf("\n") + print "###### about to start traversing" + + forsec cell.all { + sarea = PI * L * diam * 1e-8 // um^2 to cm^2 + xarea = PI * diam * diam * 1e-8 / 4.0 + secref = new SectionRef() + dump_file.printf("%s,%g,%g,%g,%g,%g,%g,%g,%g", secname(), L * 1e-6, diam * 1e-6, sarea * 1e-4, xarea*1e-4, e_pas*1e-3, cm * 1e-6 * sarea, 1.0 /(g_pas * sarea), Ra * L * 1e-4 / xarea ) // all multipliers for unit conversion + if (ismembrane("ar")) dump_file.printf(",%g,%g", 1e-3 * erev_ar, gbar_ar * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("cad")) dump_file.printf(",%g,%g", 1e-3 / beta_cad, 1e6 * phi_cad/sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("cal")) dump_file.printf(",%g,%g", 1e-3 * 125, gbar_cal * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("cat")) dump_file.printf(",%g,%g", 1e-3 * 125, gbar_cat * sarea) else if (ismembrane("cat_a")) dump_file.printf(",%g,%g", 1e-3 * 125, gbar_cat_a * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("k2")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_k2 * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("ka")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_ka * sarea) else if (ismembrane("ka_ib")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_ka_ib * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("kahp")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kahp * sarea) else if (ismembrane("kahp_deeppyr")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kahp_deeppyr * sarea) else if (ismembrane("kahp_slower")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kahp_slower * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("kc")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kc * sarea) else if (ismembrane("kc_fast")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kc_fast * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("kdr")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kdr * sarea) else if (ismembrane("kdr_fs")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kdr_fs * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("km")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_km * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("naf")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_naf * sarea) else if (ismembrane("naf_tcr")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_naf_tcr * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("naf2")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_naf2 * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("nap")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_nap * sarea) else dump_file.printf(",0.0,0.0") + if (ismembrane("napf")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_napf * sarea) else if (ismembrane("napf_spinstell")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_napf_spinstell * sarea) else if (ismembrane("napf_tcr")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_napf_tcr * sarea) else dump_file.printf(",0.0,0.0") + dump_file.printf("\n") + } + dump_file.close() + } + + +proc print_readcell(){ localobj cell,dump_file, strfn, secref, seclist + print "###### Print Readcell - print the data in a .p file for MOOSE readcell" + if (numarg() < 2){ + print "Must pass a cell object and a file name" + return + } + strfn = new StringFunctions() + print "Refering to cell" + cell = $o1 + dump_file = new File() + print "Dump file created" + print "arg ", numarg() + // strfn.head(secname(), "\\[", tstr) + // sprint(cellname, "%s", tstr) + // sprint(tstr, "%s.p", tstr) + dump_file.wopen($s2) + print "Opened dump file :", $s2 + seclist = new SectionList() + seclist.allroots() + forsec seclist { + seclist.wholetree() + } + seclist.unique() + // forsec seclist { + // print secname() + // } + + + print "###### about to start traversing" + dump_file.printf("/***********************************************************************\n") + dump_file.printf(" * This code was generated from a NEURON model using stub hoc code\n") + dump_file.printf(" * by Subhasis Ray, NCBS, Bangalore.\n") + dump_file.printf(" * It corresponds to %s cell in the model by Traub, et al. 2005\n", cellname) + dump_file.printf(" * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539\n\n") + dump_file.printf(" * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and \n") + dump_file.printf(" * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in \n") + dump_file.printf(" * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance\n") + dump_file.printf(" * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003\n") + dump_file.printf(" * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract\n\n") + dump_file.printf(" * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham,\n") + dump_file.printf(" * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, \n") + dump_file.printf(" * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington\n") + dump_file.printf(" * Single-column thalamocortical network model exhibiting \n") + dump_file.printf(" * gamma oscillations, sleep spindles, and epileptogenic bursts.\n") + dump_file.printf(" * J. Neurophysiol. 93, 2194-2232, 2005\n") + dump_file.printf(" * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract\n") + dump_file.printf(" ***********************************************************************/\n") + + dump_file.printf("*cartesian\n*relative\n*asymmetric\n") + dump_file.printf("*set_global EREST_ACT %g\n", cell.comp[1].e_pas*1e-3) + forsec seclist { + sarea = PI * L * diam * 1e-8 // um^2 to cm^2 + xarea = PI * diam * diam * 1e-8 / 4.0 + secref = new SectionRef() + if (!secref.has_parent){ + sprint(parent_str, "none") + } else { + secref.parent { + strfn.tail(secname(), "\\.", parent_str) + strfn.head(parent_str, "\\]", comp_index) + strfn.tail(comp_index, "\\[", comp_index) + strfn.head(parent_str, "\\[", parent_str) + sprint(parent_str, "%s_%s", parent_str, comp_index) + } + } + sprint(compname, "%s", secname()) + strfn.tail(secname(), "\\.", compname) + strfn.head(compname, "\\]", comp_index) + strfn.tail(comp_index, "\\[", comp_index) + strfn.head(compname, "\\[", compname) + sprint(compname, "%s_%s", compname, comp_index) + // print "secname: ", compname, " index: ", comp_index, " parent: ", parent_str + dump_file.printf("*set_compt_param ELEAK %g\n", e_pas * 1e-3) + dump_file.printf("*set_compt_param RM %g\n", 1e-4/g_pas) + dump_file.printf("*set_compt_param CM %g\n", cm * 1e-2) + dump_file.printf("*set_compt_param RA %g\n", Ra * 1e-2) + dump_file.printf("%s %s %g %g %g %g", compname, parent_str, L, 0.0, 0.0, diam) + if (ismembrane("ar")) if (gbar_ar != 0.0) dump_file.printf(" AR %g", gbar_ar * 1e4) + if (ismembrane("cad")) dump_file.printf(" CaPool %g", -phi_cad * 1e6 / sarea) + if (ismembrane("cal")) if (gbar_cal != 0.0) dump_file.printf(" CaL %g", gbar_cal * 1e4) + if (ismembrane("cat")) if (gbar_cat != 0.0) dump_file.printf(" CaT %g", gbar_cat * 1e4) + if (ismembrane("cat_a")) if (gbar_cat_a != 0.0) dump_file.printf(" CaT_A %g", gbar_cat_a * 1e4) + if (ismembrane("k2")) if (gbar_k2 != 0.0) dump_file.printf(" K2 %g", gbar_k2 * 1e4) + if (ismembrane("ka")) if (gbar_ka != 0.0) dump_file.printf(" KA %g", gbar_ka * 1e4) + if (ismembrane("ka_ib")) if (gbar_ka_ib != 0.0) dump_file.printf(" KA_IB %g", gbar_ka_ib * 1e4) + if (ismembrane("kahp")) if (gbar_kahp != 0.0) dump_file.printf(" KAHP %g", gbar_kahp * 1e4) + if (ismembrane("kahp_deeppyr")) if (gbar_kahp_deeppyr != 0.0) dump_file.printf(" KAHP_DP %g", gbar_kahp_deeppyr * 1e4) + if (ismembrane("kahp_slower")) if (gbar_kahp_slower != 0.0) dump_file.printf(" KAHP_SLOWER %g", gbar_kahp_slower * 1e4 ) + if (ismembrane("kc")) if (gbar_kc != 0.0) dump_file.printf(" KC %g", gbar_kc * 1e4) + if (ismembrane("kc_fast")) if (gbar_kc_fast != 0.0) dump_file.printf(" KC_FAST %g", gbar_kc_fast * 1e4) + if (ismembrane("kdr")) if (gbar_kdr != 0.0) dump_file.printf(" KDR %g", gbar_kdr * 1e4) + if (ismembrane("kdr_fs")) if (gbar_kdr_fs != 0.0) dump_file.printf(" KDR_FS %g", gbar_kdr_fs * 1e4) + if (ismembrane("km")) if (gbar_km != 0.0) dump_file.printf(" KM %g", gbar_km * 1e4) + if (ismembrane("naf")) if (gbar_naf != 0.0) dump_file.printf(" NaF %g", gbar_naf * 1e4) + if (ismembrane("naf2")) if (gbar_naf2 != 0.0) dump_file.printf(" NaF2 %g", gbar_naf2 * 1e4) + if (ismembrane("naf_tcr")) if (gbar_naf_tcr != 0.0) dump_file.printf(" NaF_TCR %g", gbar_naf_tcr * 1e4) + if (ismembrane("nap")) if (gbar_nap != 0.0) dump_file.printf(" NaP %g", gbar_nap * 1e4) + if (ismembrane("napf")) if (gbar_napf != 0.0) dump_file.printf(" NaPF %g", gbar_napf * 1e4) + if (ismembrane("napf_spinstell")) if (gbar_napf_spinstell != 0.0) dump_file.printf(" NaPF_SS %g", gbar_napf_spinstell * 1e4) + if (ismembrane("napf_tcr")) if (gbar_napf_tcr != 0.0) dump_file.printf(" NaPF_TCR %g", gbar_napf_tcr * 1e4) + dump_file.printf("\n") + } + dump_file.close() + } + + diff --git a/examples/traub_2005/nrn/test_ar.hoc b/examples/traub_2005/nrn/test_ar.hoc new file mode 100644 index 0000000..105397f --- /dev/null +++ b/examples/traub_2005/nrn/test_ar.hoc @@ -0,0 +1,31 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("ar", 1e-9) +testcomp.soma { + fastNa_shift_ar = -3.5 +} + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("ar", Dt) +run() +testcomp.save_data("AR", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_cad.hoc b/examples/traub_2005/nrn/test_cad.hoc new file mode 100644 index 0000000..c0bd94d --- /dev/null +++ b/examples/traub_2005/nrn/test_cad.hoc @@ -0,0 +1,40 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, cadvec, cafile + +testcomp = new singlecomp() + +testcomp.setup_channel("cal", 1e-9) +testcomp.soma { + insert cad + beta_cad = 0.02 + phi_cad = 52000.0 + ceiling_cad = 1e6 +} + +testcomp.setup_recording("cal", Dt) + +cadvec = new Vector() +cadvec.record(&testcomp.soma.cai(0.5), Dt) +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +run() +testcomp.save_data("CaPool", Dt) +cafile = new File() +cafile.wopen("data/CaPool_Ca.dat") +for ii =0, cadvec.size() - 1 { + cafile.printf("%g %g\n", ii * Dt * 1e-3, cadvec.x[ii]) +} +cafile.close() +quit() diff --git a/examples/traub_2005/nrn/test_cal.hoc b/examples/traub_2005/nrn/test_cal.hoc new file mode 100644 index 0000000..db0b66e --- /dev/null +++ b/examples/traub_2005/nrn/test_cal.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("cal", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("cal", Dt) +run() +testcomp.save_data("CaL", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_cat.hoc b/examples/traub_2005/nrn/test_cat.hoc new file mode 100644 index 0000000..f3cfc2c --- /dev/null +++ b/examples/traub_2005/nrn/test_cat.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("cat", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("cat", Dt) +run() +testcomp.save_data("CaT", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_cat_a.hoc b/examples/traub_2005/nrn/test_cat_a.hoc new file mode 100644 index 0000000..6c0287b --- /dev/null +++ b/examples/traub_2005/nrn/test_cat_a.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("cat_a", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("cat_a", Dt) +run() +testcomp.save_data("CaT_A", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_deepaxoaxonic.hoc b/examples/traub_2005/nrn/test_deepaxoaxonic.hoc new file mode 100644 index 0000000..776e5ba --- /dev/null +++ b/examples/traub_2005/nrn/test_deepaxoaxonic.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/deepaxax_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new deepaxax() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/DeepAxoaxonic_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/DeepAxoaxonic_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/DeepAxoaxonic.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_deepbasket.hoc b/examples/traub_2005/nrn/test_deepbasket.hoc new file mode 100644 index 0000000..53c2412 --- /dev/null +++ b/examples/traub_2005/nrn/test_deepbasket.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/deepbask_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new deepbask() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/DeepBasket_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/DeepBasket_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/DeepBasket.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_deeplts.hoc b/examples/traub_2005/nrn/test_deeplts.hoc new file mode 100644 index 0000000..66d9fde --- /dev/null +++ b/examples/traub_2005/nrn/test_deeplts.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/deepLTS_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new deepLTS() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/DeepLTS_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/DeepLTS_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/DeepLTS.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_k2.hoc b/examples/traub_2005/nrn/test_k2.hoc new file mode 100644 index 0000000..2b25d5f --- /dev/null +++ b/examples/traub_2005/nrn/test_k2.hoc @@ -0,0 +1,29 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 +secondorder=0 +celsius=30 +dt = 1e-3 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("k2", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("k2", Dt) +run() +testcomp.save_data("K2", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_ka.hoc b/examples/traub_2005/nrn/test_ka.hoc new file mode 100644 index 0000000..f816d5d --- /dev/null +++ b/examples/traub_2005/nrn/test_ka.hoc @@ -0,0 +1,27 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("ka", 1e-9) +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("ka", Dt) +run() +testcomp.save_data("KA", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_ka_ib.hoc b/examples/traub_2005/nrn/test_ka_ib.hoc new file mode 100644 index 0000000..038997d --- /dev/null +++ b/examples/traub_2005/nrn/test_ka_ib.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("ka_ib", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("ka_ib", Dt) +run() +testcomp.save_data("KA_IB", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_kahp.hoc b/examples/traub_2005/nrn/test_kahp.hoc new file mode 100644 index 0000000..a46a97e --- /dev/null +++ b/examples/traub_2005/nrn/test_kahp.hoc @@ -0,0 +1,50 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +dt = Dt +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile + + +testcomp = new singlecomp() + +testcomp.setup_channel("kahp", 1e-9) + +// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and +// loop afterwards +ca_vec_size = tstop / Dt + 1 +ca_vec = new Vector(ca_vec_size) +tvec = new Vector(ca_vec_size) +for ii=0, ca_vec_size - 1 { + ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) + tvec.x[ii] = ii * Dt +} + +// Vector.play(target_variable, vector_t, continuous) +ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kahp", Dt) +ca_recvec = new Vector() +ca_recvec.record(&testcomp.soma.cai(0.5), Dt) +run() +testcomp.save_data("KAHP", Dt) +cafile = new File() +cafile.wopen("data/KAHP_Ca.dat") +for ii = 0, ca_recvec.size() - 1 { + cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) +} +cafile.close() +quit() + + diff --git a/examples/traub_2005/nrn/test_kahp_deeppyr.hoc b/examples/traub_2005/nrn/test_kahp_deeppyr.hoc new file mode 100644 index 0000000..3f3343b --- /dev/null +++ b/examples/traub_2005/nrn/test_kahp_deeppyr.hoc @@ -0,0 +1,50 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +dt = Dt +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile + + +testcomp = new singlecomp() + +testcomp.setup_channel("kahp_deeppyr", 1e-9) + +// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and +// loop afterwards +ca_vec_size = tstop / Dt + 1 +ca_vec = new Vector(ca_vec_size) +tvec = new Vector(ca_vec_size) +for ii=0, ca_vec_size - 1 { + ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) + tvec.x[ii] = ii * Dt +} + +// Vector.play(target_variable, vector_t, continuous) +ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kahp_deeppyr", Dt) +ca_recvec = new Vector() +ca_recvec.record(&testcomp.soma.cai(0.5), Dt) +run() +testcomp.save_data("KAHP_DP", Dt) +cafile = new File() +cafile.wopen("data/KAHP_DP.dat") +for ii = 0, ca_recvec.size() - 1 { + cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) +} +cafile.close() +quit() + + diff --git a/examples/traub_2005/nrn/test_kahp_slower.hoc b/examples/traub_2005/nrn/test_kahp_slower.hoc new file mode 100644 index 0000000..4cda856 --- /dev/null +++ b/examples/traub_2005/nrn/test_kahp_slower.hoc @@ -0,0 +1,50 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +dt = Dt +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile + + +testcomp = new singlecomp() + +testcomp.setup_channel("kahp_slower", 1e-9) + +// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and +// loop afterwards +ca_vec_size = tstop / Dt + 1 +ca_vec = new Vector(ca_vec_size) +tvec = new Vector(ca_vec_size) +for ii=0, ca_vec_size - 1 { + ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) + tvec.x[ii] = ii * Dt +} + +// Vector.play(target_variable, vector_t, continuous) +ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kahp_slower", Dt) +ca_recvec = new Vector() +ca_recvec.record(&testcomp.soma.cai(0.5), Dt) +run() +testcomp.save_data("KAHP_SLOWER", Dt) +cafile = new File() +cafile.wopen("data/KAHP_SLOWER_Ca.dat") +for ii = 0, ca_recvec.size() - 1 { + cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) +} +cafile.close() +quit() + + diff --git a/examples/traub_2005/nrn/test_kc.hoc b/examples/traub_2005/nrn/test_kc.hoc new file mode 100644 index 0000000..0263b9d --- /dev/null +++ b/examples/traub_2005/nrn/test_kc.hoc @@ -0,0 +1,50 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +dt = Dt +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile + + +testcomp = new singlecomp() + +testcomp.setup_channel("kc", 1e-9) + +// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and +// loop afterwards +ca_vec_size = tstop / Dt + 1 +ca_vec = new Vector(ca_vec_size) +tvec = new Vector(ca_vec_size) +for ii=0, ca_vec_size - 1 { + ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) + tvec.x[ii] = ii * Dt +} + +// Vector.play(target_variable, vector_t, continuous) +ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kc", Dt) +ca_recvec = new Vector() +ca_recvec.record(&testcomp.soma.cai(0.5), Dt) +run() +testcomp.save_data("KC", Dt) +cafile = new File() +cafile.wopen("data/KC_Ca.dat") +for ii = 0, ca_recvec.size() - 1 { + cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) +} +cafile.close() +quit() + + diff --git a/examples/traub_2005/nrn/test_kc_fast.hoc b/examples/traub_2005/nrn/test_kc_fast.hoc new file mode 100644 index 0000000..780259d --- /dev/null +++ b/examples/traub_2005/nrn/test_kc_fast.hoc @@ -0,0 +1,50 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +dt = Dt +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile + + +testcomp = new singlecomp() + +testcomp.setup_channel("kc_fast", 1e-9) + +// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and +// loop afterwards +ca_vec_size = tstop / Dt + 1 +ca_vec = new Vector(ca_vec_size) +tvec = new Vector(ca_vec_size) +for ii=0, ca_vec_size - 1 { + ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) + tvec.x[ii] = ii * Dt +} + +// Vector.play(target_variable, vector_t, continuous) +ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kc_fast", Dt) +ca_recvec = new Vector() +ca_recvec.record(&testcomp.soma.cai(0.5), Dt) +run() +testcomp.save_data("KC_FAST", Dt) +cafile = new File() +cafile.wopen("data/KC_FAST_Ca.dat") +for ii = 0, ca_recvec.size() - 1 { + cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) +} +cafile.close() +quit() + + diff --git a/examples/traub_2005/nrn/test_kdr.hoc b/examples/traub_2005/nrn/test_kdr.hoc new file mode 100644 index 0000000..6e2768c --- /dev/null +++ b/examples/traub_2005/nrn/test_kdr.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("kdr", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kdr", Dt) +run() +testcomp.save_data("KDR", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_kdr_fs.hoc b/examples/traub_2005/nrn/test_kdr_fs.hoc new file mode 100644 index 0000000..928d6e1 --- /dev/null +++ b/examples/traub_2005/nrn/test_kdr_fs.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("kdr_fs", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("kdr_fs", Dt) +run() +testcomp.save_data("KDR_FS", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_km.hoc b/examples/traub_2005/nrn/test_km.hoc new file mode 100644 index 0000000..280f49b --- /dev/null +++ b/examples/traub_2005/nrn/test_km.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("km", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("km", Dt) +run() +testcomp.save_data("KM", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_naf.hoc b/examples/traub_2005/nrn/test_naf.hoc new file mode 100644 index 0000000..82c9365 --- /dev/null +++ b/examples/traub_2005/nrn/test_naf.hoc @@ -0,0 +1,31 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("naf", 1e-9) +testcomp.soma { + fastNa_shift_naf = -3.5 +} + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("naf", Dt) +run() +testcomp.save_data("NaF", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_naf2.hoc b/examples/traub_2005/nrn/test_naf2.hoc new file mode 100644 index 0000000..16b812b --- /dev/null +++ b/examples/traub_2005/nrn/test_naf2.hoc @@ -0,0 +1,31 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("naf2", 1e-9) +testcomp.soma { + fastNa_shift_naf2 = -2.5 +} + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("naf2", Dt) +run() +testcomp.save_data("NaF2", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_naf2_nRT.hoc b/examples/traub_2005/nrn/test_naf2_nRT.hoc new file mode 100644 index 0000000..d26a95e --- /dev/null +++ b/examples/traub_2005/nrn/test_naf2_nRT.hoc @@ -0,0 +1,29 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("naf2", 1e-9) +// here no Na_shift is applied + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("naf2", Dt) +run() +testcomp.save_data("NaF2_nRT", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_naf_tcr.hoc b/examples/traub_2005/nrn/test_naf_tcr.hoc new file mode 100644 index 0000000..c8951e9 --- /dev/null +++ b/examples/traub_2005/nrn/test_naf_tcr.hoc @@ -0,0 +1,31 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("naf_tcr", 1e-9) +testcomp.soma { + fastNa_shift_naf_tcr = 7 +} + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("naf_tcr", Dt) +run() +testcomp.save_data("NaF_TCR", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_nap.hoc b/examples/traub_2005/nrn/test_nap.hoc new file mode 100644 index 0000000..393ab8e --- /dev/null +++ b/examples/traub_2005/nrn/test_nap.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("nap", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("nap", Dt) +run() +testcomp.save_data("NaP", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_napf.hoc b/examples/traub_2005/nrn/test_napf.hoc new file mode 100644 index 0000000..833bdcb --- /dev/null +++ b/examples/traub_2005/nrn/test_napf.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("napf", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("napf", Dt) +run() +testcomp.save_data("NaPF", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_napf_ss.hoc b/examples/traub_2005/nrn/test_napf_ss.hoc new file mode 100644 index 0000000..637281c --- /dev/null +++ b/examples/traub_2005/nrn/test_napf_ss.hoc @@ -0,0 +1,31 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("napf_spinstell", 1e-9) +testcomp.soma { + fastNa_shift_napf_spinstell=-2.5 +} + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("napf_spinstell", Dt) +run() +testcomp.save_data("NaPF_SS", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_napf_tcr.hoc b/examples/traub_2005/nrn/test_napf_tcr.hoc new file mode 100644 index 0000000..bfaeb05 --- /dev/null +++ b/examples/traub_2005/nrn/test_napf_tcr.hoc @@ -0,0 +1,28 @@ +load_file("nrngui.hoc") +// PI=3.141592 +FARADAY=96485 + +celsius=30 +v_init = -65.0 +Dt = 1e-2 +tstop = 350 // ms + +load_file("testutils.hoc") + +objref testcomp, vvec, gvec, tvec, vfile, gfile + +testcomp = new singlecomp() + +testcomp.setup_channel("napf_tcr", 1e-9) + +// (50 ms start positive current, 150 ms stop positive current, 200 +// ms start negative current, 300 ms stop negative current 350 ms stop +// simulation) + +testcomp.setup_recording("napf_tcr", Dt) +run() +testcomp.save_data("NaPF_TCR", Dt) + +quit() + + diff --git a/examples/traub_2005/nrn/test_nontuftedrs.hoc b/examples/traub_2005/nrn/test_nontuftedrs.hoc new file mode 100644 index 0000000..3722378 --- /dev/null +++ b/examples/traub_2005/nrn/test_nontuftedrs.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/nontuftRS_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -70 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new nontuftRS() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/NontuftedRS_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/NontuftedRS_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/NontuftedRS.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_nrt.hoc b/examples/traub_2005/nrn/test_nrt.hoc new file mode 100644 index 0000000..acd9c53 --- /dev/null +++ b/examples/traub_2005/nrn/test_nrt.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/nRT_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -75 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new nRT() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/nRT_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/nRT_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/nRT.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_singlecomp.hoc b/examples/traub_2005/nrn/test_singlecomp.hoc new file mode 100644 index 0000000..2a1872a --- /dev/null +++ b/examples/traub_2005/nrn/test_singlecomp.hoc @@ -0,0 +1,92 @@ +objectvar stim1, outfile, vec_v, vec_t, vec_naf2, vec_napf_ss, vec_kdr_fs, vec_ar, vec_cad +FARADAY=96485 +PI=3.141592 +secondorder=2 +// dt=1e-3 +celsius=30 +v_init = -65.0 + +create soma +soma{ + nseg = 1 + diam = 2 * 7.5 + L = 20 + v = -65.0 + insert naf2 + gbar_naf2 = 0.15 + insert napf_spinstell + gbar_napf_spinstell = 0.00015 + insert kdr_fs + gbar_kdr_fs = 0.1 + insert kc_fast + gbar_kc_fast = 0.01 + insert ka + gbar_ka = 0.03 + insert km + gbar_km = 0.00375 + insert k2 + gbar_k2 = 0.0001 + insert kahp_slower + gbar_kahp_slower = 0.0001 + insert cal + gbar_cal = 0.0005 + insert cat_a + gbar_cat_a = 0.0001 + insert ar + gbar_ar = 0.00025 + insert cad + // *** ca diffusion: beta=1/tau + beta_cad = 0.02 + // cafor(I) (FORTRAN) converted to phi (NEURON) + phi_cad = 260000. + insert pas + e_pas = -65.0 + g_pas = 2e-5 + Ra = 100.0 + cm = 0.9 + ek = -100.0 + ena = 50.0 + vca = 125.0 + erev_ar = -40.0 + + m0_ar = 0 + fastNa_shift_naf2=-2.5 + fastNa_shift_napf_spinstell=-2.5 +} + +stim1 = new IClamp(0.5) +stim1.del = 100.0 +stim1.amp = 0.3 +stim1.dur = 50.0 +ceiling_cad = 1e6 + +outfile = new File() +vec_naf2 = new Vector() +vec_napf_ss = new Vector() +vec_kdr_fs = new Vector() +vec_v = new Vector() +vec_t = new Vector() +vec_cad = new Vector() + +vec_naf2.record(&soma.ina_naf2(0.5)) +// vec_napf_ss.record(&soma.ina_napf_spinstell(0.5)) +// vec_kdr_fs.record(&soma.ik_kdr_fs(0.5)) +vec_cad.record(&soma.cai(0.5)) +vec_v.record(&soma.v(0.5)) +vec_t.record(&t) + +tstop = 350 +run() +outfile.wopen("data/singlecomp_Vm.dat") +for ii = 0, vec_v.size() - 1 { + outfile.printf("%g %g", vec_t.x(ii), vec_v.x(ii)) + // delv_na = vec_v.x(ii) - soma.ena + // outfile.printf(" %g", vec_naf2.x(ii)/delv_na ) + // outfile.printf(" %g", vec_napf_ss.x(ii)/delv_na ) + // delv_k = vec_v.x(ii) - soma.ek + // outfile.printf(" %g", vec_kdr_fs.x(ii)/delv_k ) + outfile.printf(" %g", vec_cad.x(ii)) + outfile.printf("\n") +} +outfile.close() +quit() diff --git a/examples/traub_2005/nrn/test_spinystellate.hoc b/examples/traub_2005/nrn/test_spinystellate.hoc new file mode 100644 index 0000000..2f33347 --- /dev/null +++ b/examples/traub_2005/nrn/test_spinystellate.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/spinstell_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new spinstell() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/SpinyStellate_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/SpinyStellate_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/SpinyStellate.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_supaxoaxonic.hoc b/examples/traub_2005/nrn/test_supaxoaxonic.hoc new file mode 100644 index 0000000..2ced852 --- /dev/null +++ b/examples/traub_2005/nrn/test_supaxoaxonic.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/supaxax_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new supaxax() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/SupAxoaxonic_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/SupAxoaxonic_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/SupAxoaxonic.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_supbasket.hoc b/examples/traub_2005/nrn/test_supbasket.hoc new file mode 100644 index 0000000..71f01a7 --- /dev/null +++ b/examples/traub_2005/nrn/test_supbasket.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/supbask_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new supbask() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/SupBasket_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/SupBasket_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/SupBasket.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_suplts.hoc b/examples/traub_2005/nrn/test_suplts.hoc new file mode 100644 index 0000000..add9315 --- /dev/null +++ b/examples/traub_2005/nrn/test_suplts.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/supLTS_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new supLTS() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/SupLTS_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/SupLTS_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/SupLTS.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_suppyrfrb.hoc b/examples/traub_2005/nrn/test_suppyrfrb.hoc new file mode 100644 index 0000000..9d7e176 --- /dev/null +++ b/examples/traub_2005/nrn/test_suppyrfrb.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/suppyrFRB_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new suppyrFRB() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/SupPyrFRB_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/SupPyrFRB_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/SupPyrFRB.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_suppyrrs.hoc b/examples/traub_2005/nrn/test_suppyrrs.hoc new file mode 100644 index 0000000..8b5eb92 --- /dev/null +++ b/examples/traub_2005/nrn/test_suppyrrs.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/suppyrRS_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -65 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new suppyrRS() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/SupPyrRS_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/SupPyrRS_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/SupPyrRS.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_tcr.hoc b/examples/traub_2005/nrn/test_tcr.hoc new file mode 100644 index 0000000..9ac64a6 --- /dev/null +++ b/examples/traub_2005/nrn/test_tcr.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/TCR_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -70 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new TCR() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/TCR_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/TCR_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/TCR.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_tcr.old.hoc b/examples/traub_2005/nrn/test_tcr.old.hoc new file mode 100644 index 0000000..e96ebad --- /dev/null +++ b/examples/traub_2005/nrn/test_tcr.old.hoc @@ -0,0 +1,73 @@ +//////////////////////////////////////////////////////////////// +// This script tests a single thalamocortical relay cell +// from the NEURON port of Traub et al, 2005. +// It simulates 200 ms of real time and applies a 0.3 nA +// current injection for 50 ms from the start of simulation. +// The Vm and [Ca2+] respectively of the presynaptic and +// the soma compartment are stored in the data directory. +// Please see README file for references. +// +// Author: Subhasis Ray / NCBS, Bangalore/ October 2009 +//////////////////////////////////////////////////////////////// +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") + +load_file("cells/TCR_template.hoc") +strdef tstr +PI=3.141592 +FARADAY=96485 +secondorder=2 + +celsius=30 +v_init = -70 + +define_shape() +objref cell, stim1, stim2 + +proc runcell(){ local i, t1, a1, t2, a2 localobj vvec, tvec, f, g, caconc, ikvec + print "--------------------------------------------------------------" + print "| NEURON Simulation of TCR cell |" + print "--------------------------------------------------------------" + tstop = $1 + t1 = $2 + t2 = $3 + cell = new TCR() + access cell.comp[1] + f = new File() + tvec = new Vector() + vvec = new Vector() + caconc = new Vector() + tvec.record(&t) + vvec.record(&cell.comp[cell.presyn_comp].v(0.5)) + caconc.record(&cell.comp[1].cai(0.5)) + stim1 = new IClamp(0.5) + stim1.amp = 0.3 + stim1.del = t1 + stim1.dur = t2 + printf("Run for: %g ms, inject %g nA current at %g ms for %g ms\n", tstop, stim1.amp, stim1.del, stim1.dur) + system("date '+%s.0 + %Ne-9'") + run() + system("date '+%s.0 + %Ne-9'") + f.wopen("data/Vm_TCR.plot") + for ii = 0, vvec.size() - 1{ + f.printf("%g %g\n", tvec.x(ii), vvec.x(ii)) + } + f.close() + + f.wopen("data/Ca_TCR.plot") + for ii = 0, caconc.size() - 1{ + f.printf("%g %g\n", tvec.x(ii), caconc.x(ii)) + } + f.close() + print "--------------------------------------------------------------" + print "| NEURON Simulation of TCR cell finished |" + print "--------------------------------------------------------------" +} + +proc finit0(){ + print "finit0" + forsec cell.all { v = -65 } +} + +runcell(200., 50., 50.) +quit() diff --git a/examples/traub_2005/nrn/test_tuftedib.hoc b/examples/traub_2005/nrn/test_tuftedib.hoc new file mode 100644 index 0000000..a546edc --- /dev/null +++ b/examples/traub_2005/nrn/test_tuftedib.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/tuftIB_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -70 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new tuftIB() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/TuftedIB_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/TuftedIB_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/TuftedIB.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/test_tuftedrs.hoc b/examples/traub_2005/nrn/test_tuftedrs.hoc new file mode 100644 index 0000000..4306a00 --- /dev/null +++ b/examples/traub_2005/nrn/test_tuftedrs.hoc @@ -0,0 +1,58 @@ +load_file("nrngui.hoc") +load_file("hoc/traubcon.hoc") +load_file("cells/tuftRS_template.hoc") +load_file("hoc/utility.hoc") +objref vm_vec, stim, dump_file, input, cell +PI=3.141592 +FARADAY=96485 +secondorder=2 +dt = 0.025 +// plotdt = 1e-2 +celsius=30 +v_init = -70 +// cvode.active() +define_shape() +/* runcell(runtime, delay) */ +proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g + tstop = $1 + t1 = $2 + printf("Run for: %g ms, stim at: %g\n", tstop, t1) + t2 = 1e9 a2 = 0 + cell = new tuftRS() + // soma + cell.comp[1] { + input = new IClamp(0.5) + input.amp = 1 // nA + input.del = t1 + input.dur = 100 // ms + printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) + } + f_presyn = new File() + tvec = new Vector() + presyn_vvec = new Vector() + soma_vvec = new Vector() + cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) + cell.comp[1] soma_vvec.record(&v(0.5)) + // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) + // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) + tvec.record(&t) + // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) + // print_cell(cell, "tcr") + run() + f_presyn.wopen("data/TuftedRS_presynaptic_Vm.dat") + for ii = 0, presyn_vvec.size() - 1{ + f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) + } + f_presyn.close() + f_soma = new File() + f_soma.wopen("data/TuftedRS_soma_Vm.dat") + for ii = 0, presyn_vvec.size() - 1 { + f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) + } + f_soma.close() + cell.comp[1] {printf("Soma e_pas: %g", e_pas)} + print_cell(cell, "data/TuftedRS.csv") +} + +runcell(1000.0, 100.0) +quit() diff --git a/examples/traub_2005/nrn/testutils.hoc b/examples/traub_2005/nrn/testutils.hoc new file mode 100644 index 0000000..f597317 --- /dev/null +++ b/examples/traub_2005/nrn/testutils.hoc @@ -0,0 +1,107 @@ +begintemplate singlecomp +public soma, stim1, stim2, vvec, gvec, setup_recording, save_data, setup_channel + +objectvar stim1, stim2, vvec, gvec +strdef tstr1, iontype +objref this +create soma + +e_value = 0.0 + +proc init(){ + create soma + soma { + nseg = 1 + diam = 1.0 // um + L = 1.0 // um + v = -65 + // The test compartment should have total axial resistance of 1e5 Ohm + Ra = 1e5 * (PI * diam * 1e-4 * diam * 1e-4) / (4 * L * 1e-4) // Ohm-cm + cm = 1e6 * 1e-12 * 1e8 / area(0.5) // uF/cm^2 + insert pas + // Test compartment's Rm = 1e9 Ohm + g_pas = (1.0 / 1e9) * 1e8 / area(0.5) // S/cm^2 + e_pas = -65.0 // mV + stim1 = new IClamp(0.5) + stim1.del = 50 // ms + stim1.dur = 100 // ms + stim1.amp = 1e-3 // nA + stim2 = new IClamp(0.5) + stim2.del = 200 // ms + stim2.dur = 100 // ms + stim2.amp = -1e-3 // nA + } +} + +// setup_channel(channelname, Gbar) +proc setup_channel(){ localobj strfn + sprint(tstr1, "~insert %s", $s1) + print tstr1 + soma execute(tstr1) + sprint(tstr1, "~gbar_%s = %g * 1e8 / area(0.5)", $s1, $2) + print tstr1 + soma execute(tstr1) + strfn = new StringFunctions() + if (strfn.substr($s1, "na") == 0){ + sprint(tstr1, "~ena = 50.0") + } else if (strfn.substr($s1, "k") == 0){ + sprint(tstr1, "~ek = -95.0") + } else if (strfn.substr($s1, "ar") == 0){ + sprint(tstr1, "~erev_ar = -35.0") + } else if (strfn.substr($s1, "cal") == 0){ + // do nothing + // sprint(tstr1, "~vca = -125.0") + } + print tstr1 + soma execute(tstr1) + +} + +// setup_recording(channelname, Dt) +proc setup_recording(){ localobj strfn + strfn = new StringFunctions() + vvec = new Vector() + vvec.record(&soma.v(0.5), $2) + gvec = new Vector() + if ( strfn.substr($s1, "na") == 0 ){ + sprint(tstr1, "~gvec.record( &soma.ina_%s(0.5), %g)", $s1, $2) + e_value = ena + } else if ( strfn.substr($s1, "k") == 0 ){ + sprint(tstr1, "~gvec.record( &soma.ik_%s(0.5), %g)", $s1, $2) + e_value = ek + } else if (strfn.substr($s1, "ar") == 0){ + sprint(tstr1, "~gvec.record( &soma.i_%s(0.5), %g)", $s1, $2) + e_value = erev_ar + } else if (strfn.substr($s1, "cal") == 0){ + sprint(tstr1, "~gvec.record( &soma.ica_%s(0.5), %g)", $s1, $2) + e_value = 125.0 + } else if (strfn.substr($s1, "cat") == 0){ + sprint(tstr1, "~gvec.record( &soma.i_%s(0.5), %g)", $s1, $2) + e_value = 125.0 + } + execute(tstr1, this) +} + +// save_data(channelname, Dt) +proc save_data(){ localobj vfile, gfile + print vvec.size(), gvec.size() + sprint(tstr1, "data/%s_Vm.dat", $s1) + print "Saving Vm in ", tstr1 + vfile = new File() + vfile.wopen(tstr1) + sprint(tstr1, "data/%s_Gk.dat", $s1) + gfile = new File() + gfile.wopen(tstr1) + print vvec.size(), gvec.size() + for ii = 0, vvec.size() - 1 { + vfile.printf("%g %g\n", ii * $2 * 1e-3, vvec.x[ii] * 1e-3) + soma { + gfile.printf("%g %g\n", ii * $2 * 1e-3, gvec.x(ii) * 1e-3 * area(0.5) * 1e-8 / ((vvec.x(ii) - e_value) * 1e-3)) + } + } + vfile.close() + gfile.close() +} + +endtemplate singlecomp + diff --git a/examples/traub_2005/py/archan.py b/examples/traub_2005/py/archan.py new file mode 100644 index 0000000..b1192ab --- /dev/null +++ b/examples/traub_2005/py/archan.py @@ -0,0 +1,57 @@ +# archan.py --- +# +# Filename: archan.py +# Description: +# Author: subhasis ray +# Maintainer: +# Created: Mon Apr 27 15:34:07 2009 (+0530) +# Version: +# Last-Updated: Sat Dec 8 15:44:58 2012 (+0530) +# By: subha +# Update #: 50 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# +# + +# Code: + +from numpy import exp +import moose +from channelbase import * + +class AR(ChannelBase): + """Combined cation current.""" + annotation = {'cno': 'cno:cno_0000105'} + abstract = False + Xpower = 1 + inf_x = 1 / ( 1 + exp( ( v_array * 1e3 + 75 ) / 5.5 ) ) + tau_x = 1e-3 / ( exp( -14.6 - 0.086 * v_array * 1e3) + exp( -1.87 + 0.07 * v_array * 1e3)) + X = 0.25 + Ek = -35e-3 + + def __init__(self, path, Ek=-35e-3): + ChannelBase.__init__(self, path) + + +def initARChannelPrototypes(libpath='/library'): + return {'AR': AR(prototypes['AR'])} + + +# +# archan.py ends here diff --git a/examples/traub_2005/py/benchmark.sh b/examples/traub_2005/py/benchmark.sh new file mode 100755 index 0000000..81f3287 --- /dev/null +++ b/examples/traub_2005/py/benchmark.sh @@ -0,0 +1,17 @@ +#!/bin/bash +if [[ $# < 3 ]]; then + echo "Usage: $0 scriptpath loopcount outfile" + echo "Run script specified by `scriptpath` for `loopcount` repeats and time it. The output is written in " + exit 1 +fi +scriptfile=$1 +loopcount=$2 +outfile=$3 + +echo "Benchmarking Python script: $1 with $2 repeats" +echo -e "Real\tUser\tSystem\tMem(K)" > "$outfile" +for ((ii=1; ii <= loopcount; ++ii)); do + /usr/bin/time -a -o "$outfile" -f "%E\t%U\t%S\t%K" python "$scriptfile" +done +# Command to extract the timings from the log files: +# grep 'Simulation time with solver' /data/`date '%Y_%m_%d'`/*.log | sed 's/^.*Simulation time with solver [a-z:]+//' diff --git a/examples/traub_2005/py/cachans.py b/examples/traub_2005/py/cachans.py new file mode 100644 index 0000000..f0cf7c2 --- /dev/null +++ b/examples/traub_2005/py/cachans.py @@ -0,0 +1,94 @@ +# cachans.py --- +# +# Filename: cachans.py +# Description: +# Author: subhasis ray +# Maintainer: +# Created: Sat Apr 18 00:18:24 2009 (+0530) +# Version: +# Last-Updated: Sat Dec 8 15:48:17 2012 (+0530) +# By: subha +# Update #: 296 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +from numpy import where, exp, array +import moose +from channelbase import * + +class CaChannel(ChannelBase): + """Base class for Ca channels.""" + annotation = {'cno': 'cno:cno_0000105'} + abstract = True + Ek = 125e-3 + Xpower = 2 + X = 0.0 + """This is just a place holder to maintain type information""" + def __init__(self, path): + ChannelBase.__init__(self, path) + + +class CaL(CaChannel): + """Low threshold calcium channel""" + abstract = False + alpha_x = 1.6e3 / (1.0 + exp(-0.072 * (v_array * 1e3 - 5))) + v = v_array + 8.9e-3 + beta_x = where( abs(v) * 1e3 < 1e-6, + 1e3 * 0.1 * exp(-v / 5e-3), + 1e3 * 0.02 * v * 1e3 / (exp(v / 5e-3) - 1)) + mstring = ('addmsg1', '. IkOut ../CaPool current') + def __init__(self, path): + CaChannel.__init__(self, path) + + +class CaT(CaChannel): + abstract = False + Ypower = 1 + inf_x = 1 / (1 + exp( (- v_array - 56e-3) / 6.2e-3)) + tau_x = 1e-3 * (0.204 + 0.333 / ( exp(( v_array + 15.8e-3) / 18.2e-3 ) + + exp((- v_array - 131e-3) / 16.7e-3))) + inf_y = 1 / (1 + exp(( v_array + 80e-3 ) / 4e-3)) + tau_y = where( v_array < -81e-3, + 1e-3 * 0.333 * exp( ( v_array + 466e-3 ) / 66.6e-3 ), + 1e-3 * (9.32 + 0.333 * exp( ( -v_array - 21e-3 ) / 10.5e-3 ))) + + def __init__(self, path): + CaChannel.__init__(self, path) + + +class CaT_A(CaT): + inf_x = 1.0 / ( 1 + exp( ( - v_array * 1e3 - 52 ) / 7.4 ) ) + tau_x = 1e-3 * (1 + .33 / ( exp( ( v_array * 1e3 + 27.0 ) / 10.0 ) + exp( ( - v_array * 1e3 - 102 ) / 15.0 ))) + + inf_y = 1 / ( 1 + exp( ( v_array * 1e3 + 80 ) / 5 ) ) + tau_y = 1e-3 * (28.30 + 0.33 / (exp(( v_array * 1e3 + 48.0)/ 4.0) + exp( ( -v_array * 1e3 - 407.0) / 50.0 ) )) + + def __init__(self, path): + CaChannel.__init__(self, path) + + +def initCaChannelPrototypes(libpath='/library'): + channel_names = ['CaL', 'CaT', 'CaT_A'] + return dict([(key, eval('%s("%s")' % (key, prototypes[key].path))) for key in channel_names]) + + + +# +# cachans.py ends here diff --git a/examples/traub_2005/py/capool.py b/examples/traub_2005/py/capool.py new file mode 100644 index 0000000..7cf3f4f --- /dev/null +++ b/examples/traub_2005/py/capool.py @@ -0,0 +1,55 @@ +# CaPool.py --- +# +# Filename: capool.py +# Description: +# Author: subhasis ray +# Maintainer: +# Created: Wed Apr 22 22:21:11 2009 (+0530) +# Version: +# Last-Updated: Sat Dec 8 15:46:00 2012 (+0530) +# By: subha +# Update #: 189 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Implements the Ca2+ pool +# +# + +# Change log: +# +# +# +# + +# Code: + +import config +import moose + +class CaPool(moose.CaConc): + annotation = {'cno': 'cno_0000056'} + prototype = moose.CaConc(config.modelSettings.libpath + '/CaPool') + prototype.CaBasal = 0.0 + prototype.ceiling = 1e6 + prototype.floor = 0.0 + prototypes = {} + def __init__(self, path): + moose.CaConc.__init__(self, path) + + +def initCaPoolPrototypes(libpath='/library'): + if CaPool.prototypes: + return CaPool.prototypes + path = '%s/CaPool' % (libpath) + CaPool.prototypes['CaPool'] = CaPool(path) + return CaPool.prototypes + + +# +# capool.py ends here diff --git a/examples/traub_2005/py/cell_test_util.py b/examples/traub_2005/py/cell_test_util.py new file mode 100644 index 0000000..d0ba68e --- /dev/null +++ b/examples/traub_2005/py/cell_test_util.py @@ -0,0 +1,230 @@ +# cell_test_util.py --- +# +# Filename: cell_test_util.py +# Description: Utility functions for testing single cells +# Author: +# Maintainer: +# Created: Mon Oct 15 15:03:09 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:33:12 2016 (-0400) +# By: subha +# Update #: 303 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: +from __future__ import print_function + +from datetime import datetime +import time +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import uuid +import unittest +import numpy as np +from matplotlib import pyplot as plt +import pylab +import moose +from moose import utils as mutils +import config +import cells +import testutils +from testutils import compare_cell_dump, setup_clocks, assign_clocks, step_run + + +def setup_current_step_model(model_container, + data_container, + celltype, + pulsearray): + """Setup a single cell simulation. + + model_container: element to hold the model + + data_container: element to hold data + + + celltype: str - cell type + + pulsearray: nx3 array - with row[i] = (delay[i], width[i], + level[i]) of current injection. + + simdt: float - simulation time step + + plotdt: float - sampling interval for plotting + + solver: str - numerical method to use, can be `hsolve` or `ee` + """ + classname = 'cells.%s' % (celltype) + print('mc=', model_container, 'dc=', data_container, 'ct=', celltype, 'pa=', pulsearray, 'classname=', classname) + cell_class = eval(classname) + cell = cell_class('%s/%s' % (model_container.path, celltype)) + pulsegen = moose.PulseGen('%s/pulse' % (model_container.path)) + pulsegen.count = len(pulsearray) + for ii in range(len(pulsearray)): + pulsegen.delay[ii] = pulsearray[ii][0] + pulsegen.width[ii] = pulsearray[ii][1] + pulsegen.level[ii] = pulsearray[ii][2] + moose.connect(pulsegen, 'output', cell.soma, 'injectMsg') + presyn_vm = moose.Table('%s/presynVm' % (data_container.path)) + soma_vm = moose.Table('%s/somaVm' % (data_container.path)) + moose.connect(presyn_vm, 'requestOut', cell.presynaptic, 'getVm') + moose.connect(soma_vm, 'requestOut', cell.soma, 'getVm') + pulse_table = moose.Table('%s/injectCurrent' % (data_container.path)) + moose.connect(pulse_table, 'requestOut', pulsegen, 'getOutputValue') + return {'cell': cell, + 'stimulus': pulsegen, + 'presynVm': presyn_vm, + 'somaVm': soma_vm, + 'injectionCurrent': pulse_table, } + + +class SingleCellCurrentStepTest(unittest.TestCase): + """Base class for simulating a single cell with step current + injection""" + def __init__(self, *args, **kwargs): + unittest.TestCase.__init__(self, *args, **kwargs) + self.pulse_array = [[100e-3, 100e-3, 1e-9], + [1e9, 0, 0]] + self.solver = config.simulationSettings.method + self.simdt = None + self.plotdt = None + self.tseries = [] + + def setUp(self): + self.test_id = uuid.uuid4().int + self.test_container = moose.Neutral('test%d' % (self.test_id)) + self.model_container = moose.Neutral('%s/model' % (self.test_container.path)) + self.data_container = moose.Neutral('%s/data' % (self.test_container.path)) + params = setup_current_step_model( + self.model_container, + self.data_container, + self.celltype, + self.pulse_array) + self.cell = params['cell'] + for ch in moose.wildcardFind(self.cell.soma.path + '/##[ISA=ChanBase]'): + config.logger.debug('%s Ek = %g' % (ch.path, ch.Ek)) + for ch in moose.wildcardFind(self.cell.soma.path + '/##[ISA=CaConc]'): + config.logger.debug('%s tau = %g' % (ch.path, ch.tau)) + + self.somaVmTab = params['somaVm'] + self.presynVmTab = params['presynVm'] + self.injectionTab = params['injectionCurrent'] + self.pulsegen = params['stimulus'] + # setup_clocks(self.simdt, self.plotdt) + # assign_clocks(self.model_container, self.data_container, self.solver) + + def tweak_stimulus(self, pulsearray): + """Update the pulsegen for this model with new (delay, width, + level) values specified in `pulsearray` list.""" + for ii in range(len(pulsearray)): + self.pulsegen.delay[ii] = pulsearray[ii][0] + self.pulsegen.width[ii] = pulsearray[ii][1] + self.pulsegen.level[ii] = pulsearray[ii][2] + + def schedule(self, simdt, plotdt, solver): + config.logger.info('Scheduling: simdt=%g, plotdt=%g, solver=%s' % (simdt, plotdt, solver)) + self.simdt = simdt + self.plotdt = plotdt + self.solver = solver + if self.solver == 'hsolve': + self.hsolve = moose.HSolve('%s/solver' % (self.cell.path)) + self.hsolve.dt = simdt + self.hsolve.target = self.cell.path + mutils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + mutils.assignDefaultTicks(modelRoot=self.model_container.path, + dataRoot=self.data_container.path, + solver=self.solver) + + def runsim(self, simtime, stepsize=0.1, pulsearray=None): + """Run the simulation for `simtime`. Save the data at the + end.""" + config.logger.info('running: simtime=%g, stepsize=%g, pulsearray=%s' % (simtime, stepsize, str(pulsearray))) + self.simtime = simtime + if pulsearray is not None: + self.tweak_stimulus(pulsearray) + for ii in range(self.pulsegen.count): + config.logger.info('pulse[%d]: delay=%g, width=%g, level=%g' % (ii, self.pulsegen.delay[ii], self.pulsegen.width[ii], self.pulsegen.level[ii])) + config.logger.info('Start reinit') + self.schedule(self.simdt, self.plotdt, self.solver) + moose.reinit() + config.logger.info('Finished reinit') + ts = datetime.now() + mutils.stepRun(simtime, simtime/10.0, verbose=True, logger=config.logger) + # The sleep is required to get all threads to end + while moose.isRunning(): + time.sleep(0.1) + te = datetime.now() + td = te - ts + config.logger.info('Simulation time of %g s at simdt=%g with solver %s: %g s' % \ + (simtime, self.simdt, self.solver, + td.seconds + td.microseconds * 1e-6)) + + def savedata(self): + # Now save the data + for table_id in self.data_container.children: + ts = np.linspace(0, self.simtime, len(table_id[0].vector)) + data = np.vstack((ts, table_id[0].vector)) + fname = os.path.join(config.data_dir, + '%s_%s_%s_%s.dat' % (self.celltype, + table_id[0].name, + self.solver, + config.filename_suffix)) + np.savetxt(fname, np.transpose(data)) + config.logger.info('Saved %s in %s' % (table_id[0].name, fname)) + + def plot_vm(self): + """Plot Vm for presynaptic compartment and soma - along with + the same in NEURON simulation if possible.""" + pylab.subplot(211) + pylab.title('Soma Vm') + self.tseries = np.linspace(0, self.simtime, len(self.somaVmTab.vector)) + pylab.plot(self.tseries*1e3, self.somaVmTab.vector * 1e3, + label='Vm (mV) - moose') + pylab.plot(self.tseries*1e3, self.injectionTab.vector * 1e9, + label='Stimulus (nA)') + try: + nrn_data = np.loadtxt('../nrn/data/%s_soma_Vm.dat' % \ + (self.celltype)) + nrn_indices = np.nonzero(nrn_data[:, 0] <= self.tseries[-1]*1e3)[0] + pylab.plot(nrn_data[nrn_indices,0], nrn_data[nrn_indices,1], + label='Vm (mV) - neuron') + except IOError: + print('No neuron data found.') + pylab.legend() + pylab.subplot(212) + pylab.title('Presynaptic Vm') + pylab.plot(self.tseries*1e3, self.presynVmTab.vector * 1e3, + label='Vm (mV) - moose') + pylab.plot(self.tseries*1e3, self.injectionTab.vector * 1e9, + label='Stimulus (nA)') + try: + nrn_data = np.loadtxt('../nrn/data/%s_presynaptic_Vm.dat' % \ + (self.celltype)) + nrn_indices = np.nonzero(nrn_data[:, 0] <= self.tseries[-1]*1e3)[0] + pylab.plot(nrn_data[nrn_indices,0], nrn_data[nrn_indices,1], + label='Vm (mV) - neuron') + except IOError: + print('No neuron data found.') + pylab.legend() + pylab.show() + + +# +# cell_test_util.py ends here diff --git a/examples/traub_2005/py/cells.py b/examples/traub_2005/py/cells.py new file mode 100644 index 0000000..530029c --- /dev/null +++ b/examples/traub_2005/py/cells.py @@ -0,0 +1,530 @@ +# cell.py --- +# +# Filename: cell.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri Mar 9 23:17:17 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:25:57 2016 (-0400) +# By: subha +# Update #: 694 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# 2012-03-09 23:17:24 (+0530) Subha started porting the cell.py file +# from old moose to dh_branch. +# + +# Code: +from __future__ import print_function +import csv +import numpy as np +from collections import defaultdict +import moose +import config +from config import logger +import nachans +import kchans +import archan +import cachans +import capool +from channelinit import init_chanlib + +channel_types = ['ar', + 'cad', + 'cal', + 'cat', + 'k2', + 'ka', + 'kahp', + 'kc', + 'kdr', + 'km', + 'naf', + 'naf2', + 'nap', + 'napf'] + +channel_type_dict = { + 'cad': ['CaPool'], + 'km': ['KM'], + 'ar': ['AR'], + 'cal': ['CaL'], + 'cat':['CaT', 'CaT_A'], + 'k2': ['K2'], + 'ka': ['KA', 'KA_IB'], + 'kahp': ['KAHP', 'KAHP_DP','KAHP_SLOWER'], + 'kc': ['KC', 'KC_FAST'], + 'kdr': ['KDR', 'KDR_FS'], + 'nap':['NaP'], + 'naf': ['NaF', 'NaF_TCR'], + 'napf': ['NaPF', 'NaPF_SS','NaPF_TCR'], + 'naf2': ['NaF2', 'NaF2_nRT']} + + +def read_keyvals(filename): + """Read the mapping between key value pairs from file. + + The file filename should have two columns: + + key value + + """ + ret = defaultdict(set) + try: + with(open(filename, 'r')) as level_file: + for line in level_file: + tokens = line.split() + if not tokens: + continue + if len(tokens) != 2: + print(filename, ' - Tokens: ', tokens, len(tokens)) + return None + ret[tokens[1]].add(tokens[0]) + except IOError: + config.logger.info('No such file %s' % (filename)) + return ret + +def adjust_chanlib(cdict): + """Update the revarsal potentials for channels. Set the initial X + value for AR channel. Set the tau for Ca pool.""" + channel_dict = init_chanlib() + for ch in channel_dict.values(): + config.logger.info('adjusting properties of %s' % (ch.path)) + if isinstance(ch, kchans.KChannel): + ch.Ek = cdict['EK'] + elif isinstance(ch, nachans.NaChannel): + ch.Ek = cdict['ENa'] + elif isinstance(ch, cachans.CaChannel): + ch.Ek = cdict['ECa'] + elif isinstance(ch, archan.AR): + ch.Ek = cdict['EAR'] + if 'X_AR' in cdict: + ch.X = cdict['X_AR'] + elif isinstance(ch, moose.CaConc): + ch.tau = cdict['TauCa'] + if isinstance(ch, moose.HHChannel): + config.logger.debug('%s.Ek = %g' % (ch.path, ch.Ek)) + +def read_prototype(celltype, cdict): + """Read the cell prototype file for the specified class. The + channel properties are updated using values in cdict.""" + filename = '%s/%s.p' % (config.modelSettings.protodir, celltype) + logger.debug('Reading prototype file %s' % (filename)) + adjust_chanlib(cdict) + cellpath = '%s/%s' % (config.modelSettings.libpath, celltype) + if moose.exists(cellpath): + return moose.element(cellpath) + for handler in logger.handlers: + handler.flush() + proto = moose.loadModel(filename, cellpath) + # If prototype files do not have absolute compartment positions, + # set the compartment postions to origin. This will avoid + # incorrect assignemnt of position when the x/y/z values in + # prototype file is just to for setting the compartment length. + if not config.modelSettings.morph_has_postion: + for comp in moose.wildcardFind('%s/#[TYPE=Compartment]' % (proto.path)): + comp.x = 0.0 + comp.y = 0.0 + comp.z = 0.0 + leveldict = read_keyvals('%s/%s.levels' % (config.modelSettings.protodir, celltype)) + depths = read_keyvals('%s/%s.depths' % (config.modelSettings.protodir, celltype)) + depthdict = {} + for level, depthset in depths.items(): + if len(depthset) != 1: + raise Exception('Depth set must have only one entry.') + depthdict[level] = depthset.pop() + assign_depths(proto, depthdict, leveldict) + config.logger.debug('Read %s with %d compartments' % (celltype, len(moose.wildcardFind('%s/#[TYPE=Compartment]' % (proto.path))))) + return proto + +def assign_depths(cell, depthdict, leveldict): + """Assign depths to the compartments in the cell. The original + model assigns sets of compartments to particular levels and a + depth is specified for each level. This should not be required if + we have the z value in prototype file. + + cell : (prototype) cell instance + + depth : dict mapping level no. to physical depth + + level : dict mapping level no. to compartment nos. belonging to + that level. + """ + if not depthdict: + return + for level, depth in depthdict.items(): + z = float(depth) + complist = leveldict[level] + for comp_number in complist: + comp = moose.element('%s/comp_%s' % (cell.path, comp_number)) + comp.z = z + + +class CellMeta(type): + def __new__(cls, name, bases, cdict): + if name != 'CellBase': + proto = read_prototype(name, cdict) + annotation = None + if 'annotation' in cdict: + annotation = cdict['annotation'] + else: + for base in bases: + if hasattr(base, 'annotation'): + annotation = base.annotation + break + if annotation is not None: + info = moose.Annotator('%s/info' % (proto.path)) + info.notes = '\n'.join('"%s": "%s"' % kv for kv in annotation.items()) + if 'soma_tauCa' in cdict: + moose.element(proto.path + '/comp_1/CaPool').tau = cdict['soma_tauCa'] + cdict['prototype'] = proto + return type.__new__(cls, name, bases, cdict) + + +class CellBase(moose.Neuron): + __metaclass__ = CellMeta + annotation = {'cno': 'cno_0000020'} + def __init__(self, path): + if not moose.exists(path): + path_tokens = path.rpartition('/') + moose.copy(self.prototype, path_tokens[0], path_tokens[-1]) + moose.Neutral.__init__(self, path) + self.solver = moose.HSolve('{}/solver'.format(path, 'solver')) + self.solver.target = path + self.solver.dt = config.simulationSettings.simulationDt + + def comp(self, number): + path = '%s/comp_%d' % (self.path, number) + return moose.element(path) + + @property + def soma(self): + return self.comp(1) + + @property + def presynaptic(self): + """Presynaptic compartment. Each subclass should define + _presynaptic as the index of this compartment.""" + return self.comp(self.__class__._presynaptic) + + def dump_cell(self, file_path): + """Dump the cell information compartment by compartment for + comparison with NEURON in csv format. All parameters are + converted to SI units.""" + with open(file_path, 'w') as dump_file: + fieldnames = ["comp", "len", "dia", "sarea", "xarea", "Em", "Cm","Rm","Ra"] + for chtype in channel_types: + if chtype != 'cad': + fieldnames += ['e_' + chtype, 'gbar_' + chtype] + else: + fieldnames += ['tau_' + chtype, 'beta_' + chtype] + # print fieldnames + writer = csv.DictWriter(dump_file, fieldnames=fieldnames, delimiter=',') + writer.writeheader() + comps = moose.wildcardFind('%s/##[TYPE=Compartment]' % (self.path)) + comps = sorted(comps, key=lambda x: int(x.name[0].rpartition('_')[-1])) + for comp_e in comps: + comp = moose.element(comp_e) + row = {} + row['comp'] = comp.name + row['len'] = comp.length + row['dia'] = comp.diameter + row['sarea'] = comp.length * comp.diameter * np.pi + row['xarea'] = comp.diameter * comp.diameter * np.pi/4 + row['Em'] = comp.Em + row['Cm'] = comp.Cm + row['Rm'] = comp.Rm + row['Ra'] = comp.Ra + if moose.exists(comp.path + '/CaPool'): + ca_pool = moose.CaConc(comp.path + '/CaPool') + for chtype in channel_types: + found = False + for chname in channel_type_dict[chtype]: + chpath = comp.path + '/' + chname + if moose.exists(chpath): + found = True + channel = moose.element(chpath) + if channel.className == 'HHChannel': + row['e_'+chtype] = channel.Ek + row['gbar_'+chtype] = channel.Gbar + elif channel.className == 'CaConc': + row['tau_cad'] = channel.tau + row['beta_cad'] = channel.B + break + if not found: + if chtype != 'cad': + row['e_'+chtype] = 0.0 + row['gbar_'+chtype] = 0.0 + else: + row['tau_cad'] = 0.0 + row['beta_cad'] = 0.0 + writer.writerow(row) + + +class SupPyrRS(CellBase): + _presynaptic = 72 + ENa = 50e-3 + EK = -95e-3 + ECa = 125e-3 + EAR = -35e-3 + EGABA = -81e-3 + TauCa = 20e-3 + soma_tauCa = 100e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class SupPyrFRB(CellBase): + _presynaptic = 72 + ENa = 50e-3 + EK = -95e-3 + EAR = -35e-3 + ECa = 125e-3 + EGABA = -81e-3 + TauCa = 20e-3 + soma_tauCa = 100e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class SupLTS(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + ECa = 125e-3 + EAR = -40e-3 # dummy to set things back to original + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 20e-3 + X_AR = 0.25 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class SupAxoaxonic(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + ECa = 125e-3 + EAR = -40e-3 + EGABA = -75e-3 + X_AR = 0.0 + TauCa = 20e-3 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class SupBasket(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + EAR = -40e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 20e-3 + X_AR = 0.0 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class SpinyStellate(CellBase): + """Spiny-stellate cells of layer 4.""" + _presynaptic = 57 + ENa = 50e-3 + EK = -100e-3 + EAR = -40e-3 + ECa = 125e-3 + EGABA = -75e-3 + TauCa = 20e-3 + X_AR = 0.0 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class NontuftedRS(CellBase): + _presynaptic = 48 + ENa = 50e-3 + EK = -95e-3 + EAR = -35e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 20e-3 + X_AR = 0.25 + soma_tauCa = 100e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class TuftedIB(CellBase): + _presynaptic = 60 + ENa = 50e-3 + EK = -95e-3 + EAR = -35e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 1e-3/0.075 + X_AR = 0.25 + soma_tauCa = 100e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + # for compartments in level 2, i.e. comp_2, 5, 6 have tauCa = 1e-3/0.02 + @classmethod + def post_init(cls): + moose.element(cls.prototype.path + '/comp_2/CaPool').tau = 1e-3/0.02 + moose.element(cls.prototype.path + '/comp_5/CaPool').tau = 1e-3/0.02 + moose.element(cls.prototype.path + '/comp_6/CaPool').tau = 1e-3/0.02 + + +TuftedIB.post_init() + + +class TuftedRS(CellBase): + _presynaptic = 60 + ENa = 50e-3 + EK = -95e-3 + EAR = -35e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 1e-3/0.075 + X_AR = 0.25 + soma_tauCa = 100e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + @classmethod + def post_init(cls): + moose.element(cls.prototype.path + '/comp_2/CaPool').tau = 1e-3/0.02 + moose.element(cls.prototype.path + '/comp_5/CaPool').tau = 1e-3/0.02 + moose.element(cls.prototype.path + '/comp_6/CaPool').tau = 1e-3/0.02 + +TuftedRS.post_init() + + +class DeepLTS(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + EAR = -40e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 20e-3 + X_AR = 0.25 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class DeepAxoaxonic(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + ECa = 125e-3 + EAR = -40e-3 + EGABA = -75e-3 + X_AR = 0.0 + TauCa = 20e-3 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class DeepBasket(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + EAR = -40e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 20e-3 + X_AR = 0.25 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class TCR(CellBase): + _presynaptic = 135 + ENa = 50e-3 + EK = -95e-3 + EAR = -35e-3 + ECa = 125e-3 + EGABA = -81e-3 + TauCa = 20e-3 + X_AR = 0.25 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +class nRT(CellBase): + _presynaptic = 59 + ENa = 50e-3 + EK = -100e-3 + EAR = -40e-3 + ECa = 125e-3 + EGABA = -75e-3 # Sanchez-Vives et al. 1997 + TauCa = 20e-3 + X_AR = 0.0 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + + +_cellprototypes = {} + +def init_prototypes(): + global _cellprototypes + if _cellprototypes: + return _cellprototypes + _cellprototypes = { + 'SupPyrRS': SupPyrRS(SupPyrRS.prototype.path), + 'SupPyrFRB': SupPyrFRB(SupPyrFRB.prototype.path), + 'SupLTS': SupLTS(SupLTS.prototype.path), + 'SupAxoaxonic': SupAxoaxonic(SupAxoaxonic.prototype.path), + 'SupBasket': SupBasket(SupBasket.prototype.path), + 'SpinyStellate': SpinyStellate(SpinyStellate.prototype.path), + 'NontuftedRS': NontuftedRS(NontuftedRS.prototype.path), + 'TuftedIB': TuftedIB(TuftedIB.prototype.path), + 'TuftedRS': TuftedRS(TuftedRS.prototype.path), + 'DeepLTS': DeepLTS(DeepLTS.prototype.path), + 'DeepAxoaxonic': DeepAxoaxonic(DeepAxoaxonic.prototype.path), + 'DeepBasket': DeepBasket(DeepBasket.prototype.path), + 'TCR': TCR(TCR.prototype.path), + 'nRT': nRT(nRT.prototype.path), + } + return _cellprototypes + + +# +# cells.py ends here diff --git a/examples/traub_2005/py/channel_test_util.py b/examples/traub_2005/py/channel_test_util.py new file mode 100644 index 0000000..29f70c3 --- /dev/null +++ b/examples/traub_2005/py/channel_test_util.py @@ -0,0 +1,96 @@ +# channel_test_util.py +# +# Filename: channel_test_util.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed May 30 23:51:58 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:26:45 2016 (-0400) +# By: subha +# Update #: 125 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Utility functions for testing single channel models +# +# + +# Change log: +# +# +# + +# Code: +from __future__ import print_function + +import uuid +import unittest +import numpy as np +import moose +import channelbase +import testutils + +def run_single_channel(channelname, Gbar, simtime, simdt=testutils.SIMDT, plotdt=testutils.PLOTDT): + testId = uuid.uuid4().int + container = moose.Neutral('test%d' % (testId)) + model_container = moose.Neutral('%s/model' % (container.path)) + data_container = moose.Neutral('%s/data' % (container.path)) + params = testutils.setup_single_compartment( + model_container, data_container, + channelbase.prototypes[channelname], + Gbar) + vm_data = params['Vm'] + gk_data = params['Gk'] + ik_data = params['Ik'] + testutils.setup_clocks(simdt, plotdt) + testutils.assign_clocks(model_container, data_container) + moose.reinit() + print('Starting simulation', testId, 'for', simtime, 's') + moose.start(simtime) + print('Finished simulation') + vm_file = 'data/%s_Vm.dat' % (channelname) + gk_file = 'data/%s_Gk.dat' % (channelname) + ik_file = 'data/%s_Ik.dat' % (channelname) + tseries = np.array(range(len(vm_data.vector))) * simdt + print('Vm:', len(vm_data.vector), 'Gk', len(gk_data.vector), 'Ik', len(ik_data.vector)) + data = np.c_[tseries, vm_data.vector] + np.savetxt(vm_file, data) + print('Saved Vm in', vm_file) + print(len(gk_data.vector), len(vm_data.vector)) + data = np.c_[tseries, gk_data.vector] + np.savetxt(gk_file, data) + print('Saved Gk in', gk_file) + data = np.c_[tseries, ik_data.vector] + np.savetxt(ik_file, data) + print('Saved Gk in', ik_file) + return params + +def compare_channel_data(series, channelname, param, simulator, x_range=None, plot=False): + if simulator == 'moose': + ref_file = 'testdata/%s_%s.dat.gz' % (channelname, param) + elif simulator == 'neuron': + ref_file = '../nrn/data/%s_%s.dat.gz' % (channelname, param) + else: + raise ValueError('Unrecognised simulator: %s' % (simulator)) + try: + ref_series = np.loadtxt(ref_file) + except IOError, e: + print(e) + return -1.0 + if plot: + plt.figure() + plt.title(channelname) + return testutils.compare_data_arrays(ref_series, series, relative='meany', x_range=x_range, plot=plot) + +class ChannelTestBase(unittest.TestCase): + def __init__(self, *args, **kwargs): + unittest.TestCase.__init__(self, *args, **kwargs) + +# +# channel_test_util.py ends here diff --git a/examples/traub_2005/py/channelbase.py b/examples/traub_2005/py/channelbase.py new file mode 100644 index 0000000..a013558 --- /dev/null +++ b/examples/traub_2005/py/channelbase.py @@ -0,0 +1,174 @@ +# trbchan.py --- +# +# Filename: trbchan.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri May 4 14:55:52 2012 (+0530) +# Version: +# Last-Updated: Fri May 3 11:45:07 2013 (+0530) +# By: subha +# Update #: 337 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Base class for channels in Traub model. +# +# + +# Change log: +# +# 2012-05-04 14:55:56 (+0530) subha started porting code from +# channel.py in old moose version to dh_branch. +# + +# Code: + +from warnings import warn +import numpy as np +import moose +import config + +vmin = -120e-3 +vmax = 40e-3 +vdivs = 640 +v_array = np.linspace(vmin, vmax, vdivs+1) + +ca_min = 0.0 +ca_max = 1000.0 +ca_divs = 1000 +ca_conc = np.linspace(ca_min, ca_max, ca_divs + 1) + +prototypes = {} + +def setup_gate_tables(gate, param_dict, bases): + suffix = None + if gate.name == 'gateX': + suffix = 'x' + elif gate.name == 'gateY': + suffix = 'y' + elif gate.name == 'gateZ': + suffix = 'z' + else: + raise NameError('Gate in a channel must have names in [`gateX`, `gateY`, `gateZ`]') + if suffix in ['x', 'y']: + gate.min = vmin + gate.max = vmax + gate.divs = vdivs + else: + gate.min = ca_min + gate.max = ca_max + gate.divs = ca_divs + gate.useInterpolation = True + keys = ['%s_%s' % (key, suffix) for key in ['tau', 'inf', 'alpha', 'beta', 'tableA', 'tableB']] + msg = '' + if keys[0] in param_dict: + msg = 'Using tau/inf tables' + gate.tableA = param_dict[keys[1]] / param_dict[keys[0]] + gate.tableB = 1 / param_dict[keys[0]] + elif keys[2] in param_dict: + msg = 'Using alpha/beta tables' + gate.tableA = param_dict[keys[2]] + gate.tableB = param_dict[keys[2]] + param_dict[keys[3]] + elif keys[4] in param_dict: + msg = 'Using A/B tables' + gate.tableA = param_dict[keys[4]] + gate.tableB = param_dict[keys[5]] + else: + for base in bases: + new_bases = base.mro() + new_param_dict = base.__dict__ + if new_bases: + new_bases = new_bases[1:] + if setup_gate_tables(gate, new_param_dict, new_bases): + msg = 'Gate setup in baseclass: '+base.__class__.__name__ + break + if msg: + config.logger.debug('%s: %s' % (gate.path, msg)) + return True + else: + config.logger.debug('%s: nothing was setup for this gate' % (gate.path)) + return False + +def get_class_field(name, cdict, bases, fieldname, default=None): + if fieldname in cdict: + config.logger.debug('%s: %s=%s' % (name, fieldname, str(cdict[fieldname]))) + return cdict[fieldname] + else: + for base in bases: + if hasattr(base, fieldname): + return getattr(base, fieldname) + # warn('field %s not in the hierarchy of %s class. Returning default value.' % (fieldname, name)) + return default + + +class ChannelMeta(type): + def __new__(cls, name, bases, cdict): + global prototypes + # classes that set absract=True will be + # abstract classes. Others will have the prototype insatntiated. + if 'abstract' in cdict and cdict['abstract'] == True: + return type.__new__(cls, name, bases, cdict) + proto = moose.HHChannel('%s/%s' % (config.library.path, name)) + xpower = get_class_field(name, cdict, bases, 'Xpower', default=0.0) + if xpower > 0: + proto.Xpower = xpower + gate = moose.HHGate('%s/gateX' % (proto.path)) + setup_gate_tables(gate, cdict, bases) + cdict['xGate'] = gate + ypower = get_class_field(name, cdict, bases, 'Ypower', default=0.0) + if ypower > 0: + proto.Ypower = ypower + gate = moose.HHGate('%s/gateY' % (proto.path)) + setup_gate_tables(gate, cdict, bases) + cdict['yGate'] = gate + zpower = get_class_field(name, cdict, bases, 'Zpower', default=0.0) + if zpower > 0: + proto.Zpower = zpower + gate = moose.HHGate('%s/gateZ' % (proto.path)) + setup_gate_tables(gate, cdict, bases) + cdict['zGate'] = gate + ca_msg_field = moose.Mstring('%s/addmsg1' % (proto.path)) + ca_msg_field.value = '../CaPool concOut . concen' + proto.instant = get_class_field(name, cdict, bases, 'instant', default=0) + proto.useConcentration = True + proto.Ek = get_class_field(name, cdict, bases, 'Ek', default=0.0) + X = get_class_field(name, cdict, bases, 'X') + if X is not None: + proto.X = X + Y = get_class_field(name, cdict, bases, 'Y') + if Y is not None: + proto.Y = Y + Z = get_class_field(name, cdict, bases, 'Z') + if Z is not None: + proto.Z = Z + mstring_field = get_class_field(name, cdict, bases, 'mstring') + if mstring_field is not None: + # print 'mstring_field:', mstring_field + mstring = moose.Mstring('%s/%s' % (proto.path, mstring_field[0])) + mstring.value = mstring_field[1] + if 'annotation' in cdict: + info = moose.Annotator('%s/info' % (proto.path)) + info.notes = '\n'.join('%s: %s' % kv for kv in cdict['annotation'].items()) + # print proto.path, info.notes + cdict['prototype'] = proto + prototypes[name] = proto + config.logger.info('Created prototype: %s of class %s' % (proto.path, name)) + return type.__new__(cls, name, bases, cdict) + + +class ChannelBase(moose.HHChannel): + annotation = {'cno': 'cno_0000047'} + abstract = True + __metaclass__ = ChannelMeta + def __init__(self, path, xpower=1, ypower=0, Ek=0.0): + moose.HHChannel.__init__(self, path) + + +# +# trbchan.py ends here diff --git a/examples/traub_2005/py/channelinit.py b/examples/traub_2005/py/channelinit.py new file mode 100644 index 0000000..1b9b34b --- /dev/null +++ b/examples/traub_2005/py/channelinit.py @@ -0,0 +1,62 @@ +# init.py --- +# +# Filename: init.py +# Description: +# Author: +# Maintainer: +# Created: Wed May 23 21:24:11 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 14:35:20 2016 (-0400) +# By: subha +# Update #: 75 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Initialize model prototypes +# +# + +# Change log: +# +# +# +# +# Code: + +import moose +import config +import nachans +import kchans +import archan +import cachans +import capool + + +_channels = {} + +def init_chanlib(): + """Return a dict of channel name, channel prototype pairs. If the + channel prototypes have not been initialized, this functions + initializes the same.""" + global _channels + if _channels: + return _channels + if not moose.exists(config.modelSettings.libpath): + moose.Neutral(config.modelSettings.libpath) + _channels.update(nachans.initNaChannelPrototypes()) + _channels.update(kchans.initKChannelPrototypes()) + _channels.update(archan.initARChannelPrototypes()) + _channels.update(cachans.initCaChannelPrototypes()) + _channels.update(capool.initCaPoolPrototypes()) + _channels['spike'] = moose.SpikeGen('{}/spike'.format(config.modelSettings.libpath)) + return _channels + +init_chanlib() + +# +# init.py ends here diff --git a/examples/traub_2005/py/config.py b/examples/traub_2005/py/config.py new file mode 100644 index 0000000..7569af2 --- /dev/null +++ b/examples/traub_2005/py/config.py @@ -0,0 +1,161 @@ +# config.py --- +# +# Filename: config.py +# Description: +# Author: +# Maintainer: +# Created: Wed May 23 11:31:40 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:25:16 2016 (-0400) +# By: subha +# Update #: 130 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +from __future__ import print_function +import settings +import os + +# These settings are to imitate sedml entities for configuring simulation +simulationSettings = settings.SimulationSettings() +modelSettings = settings.ModelSettings() +analogSignalRecordingSettings = settings.DataSettings() +spikeRecordingSettings = settings.DataSettings() +changeSettings = settings.ChangeSettings() + +simulationSettings.endTime = 10.0 + +modelSettings.container = '/network' +modelSettings.libpath = '/library' +modelSettings.protodir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'proto') + +modelSettings.morph_has_postion = False +modelSettings.populationSize['SupPyrRS'] = 1000 +modelSettings.populationSize['SupPyrFRB'] = 50 +modelSettings.populationSize['SupBasket'] = 90 +modelSettings.populationSize['SupAxoaxonic'] = 90 +modelSettings.populationSize['SupLTS'] = 90 +modelSettings.populationSize['SpinyStellate'] = 240 +modelSettings.populationSize['TuftedIB'] = 800 +modelSettings.populationSize['TuftedRS'] = 200 +modelSettings.populationSize['DeepBasket'] = 100 +modelSettings.populationSize['DeepAxoaxonic'] = 100 +modelSettings.populationSize['DeepLTS'] = 100 +modelSettings.populationSize['NontuftedRS'] = 500 +modelSettings.populationSize['TCR'] = 100 +modelSettings.populationSize['nRT'] = 100 + +analogSignalRecordingSettings.targets = [ + '/network/SupPyrRS/#[NAME=comp_0]', + '/network/SupPyrFRB/#[NAME=comp_0]', + '/network/SupBasket/#[NAME=comp_0]', + '/network/SupAxoaxonic/#[NAME=comp_0]', + '/network/SupLTS/#[NAME=comp_0]', + '/network/SpinyStellate/#[NAME=comp_0]', + '/network/TuftedIB/#[NAME=comp_0]', + '/network/TuftedRS/#[NAME=comp_0]', + '/network/DeepBasket/#[NAME=comp_0]', + '/network/DeepAxoaxonic/#[NAME=comp_0]', + '/network/DeepLTS/#[NAME=comp_0]', + '/network/NontuftedRS/#[NAME=comp_0]', + '/network/TCR/#[NAME=comp_0]', + '/network/nRT/#[NAME=comp_0]', + ] + +analogSignalRecordingSettings.fractions = 0.1 +analogSignalRecordingSettings.fields = { + 'Vm': 'AnalogSignal', + 'CaPool/conc': 'AnalogSignal', + } + +spikeRecordingSettings.targets = [ + '/network/SupPyrRS/#[NAME=comp_0]', + '/network/SupPyrFRB/#[NAME=comp_0]', + '/network/SupBasket/#[NAME=comp_0]', + '/network/SupAxoaxonic/#[NAME=comp_0]', + '/network/SupLTS/#[NAME=comp_0]', + '/network/SpinyStellate/#[NAME=comp_0]', + '/network/TuftedIB/#[NAME=comp_0]', + '/network/TuftedRS/#[NAME=comp_0]', + '/network/DeepBasket/#[NAME=comp_0]', + '/network/DeepAxoaxonic/#[NAME=comp_0]', + '/network/DeepLTS/#[NAME=comp_0]', + '/network/NontuftedRS/#[NAME=comp_0]', + '/network/TCR/#[NAME=comp_0]', + '/network/nRT/#[NAME=comp_0]', + ] + +spikeRecordingSettings.fractions = 1.0 +spikeRecordingSettings.fields = { + 'Vm': 'Event', + } + +#--------------------------------------------------------------------- +# Logging +#--------------------------------------------------------------------- +from datetime import datetime +import logging + +timestamp = datetime.now() +mypid = os.getpid() +data_dir_prefix = 'data' +if not os.access(data_dir_prefix, os.W_OK): + data_dir_prefix = '/tmp/traub2005_data' +if not os.access(data_dir_prefix, os.F_OK): + os.mkdir(data_dir_prefix) +data_dir = os.path.join(data_dir_prefix, timestamp.strftime('%Y_%m_%d')) +if not os.access(data_dir, os.F_OK): + os.mkdir(data_dir) +print('data_dir =', data_dir) +filename_suffix = '_%s_%d' % (timestamp.strftime('%Y%m%d_%H%M%S'), mypid) + +def handleError(self, record): + raise + +LOG_FILENAME = os.path.join(data_dir, 'traub2005%s.log' % (filename_suffix)) +LOG_LEVEL = logging.DEBUG +logging.Handler.handleError = handleError +logging.basicConfig(filename=LOG_FILENAME, level=LOG_LEVEL, format='%(asctime)s %(levelname)s %(name)s %(filename)s %(funcName)s: %(message)s', filemode='w') +# logging.basicConfig(level=LOG_LEVEL, format='%(asctime)s %(levelname)s %(name)s %(filename)s %(funcName)s: %(message)s', filemode='w') + +logger = logging.getLogger('traub2005') + +# Add a logging handler to print messages to stderr +ch = logging.StreamHandler() +ch.setLevel(logging.ERROR) +# create formatter and add it to the handlers +formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(filename)s %(funcName)s: %(message)s') +ch.setFormatter(formatter) +# add the handlers to logger +logger.addHandler(ch) + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import moose +############################################################ +# Initialize library and other containers. +############################################################ +library = moose.Neutral(modelSettings.libpath) + + +# +# config.py ends here diff --git a/examples/traub_2005/py/custom.ini b/examples/traub_2005/py/custom.ini new file mode 100644 index 0000000..7785c37 --- /dev/null +++ b/examples/traub_2005/py/custom.ini @@ -0,0 +1,202 @@ +############################################################# +# File: custom.ini +# Author: Subhasis Ray +# +# Customization for simulation settings. Comment out the entries in +# any section to use the values set in defaults.ini. See dafaults.ini +# for description of each section and entries under them. +[numeric] +rngseed = 1 +reseed = no +stochastic = no +solver = hsolve + +# Keep the rngseed fixed to make deterministic simulations. And +# verification purposes. Will make it 0 (set from system time and +# hostname) for stochastic simulation +moose_rngseed = 0 + +# Scheduling settings +[scheduling] +autoschedule = yes +simdt = 25e-6 +plotdt = 0.25e-3 +gldt = 1e9 +simtime = 5.0 + +################################################################ +# Some properties of synapses to be modified from simulation to +# simulation +[synapse] +# Default value of initial release probability. +releasep = 0.8 +[NMDA] +# initPr = 1.0 +# deltaF = 0.917 +# d1 = 0.416 +# d2 = 0.975 +# tauF = 0.094 +# tauD1 = 0.38 +# tauD2 = 9.2 +# conductance_scale = 1.0 +# Default properties for AMPA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] +[AMPA] +# initPr = 1.0 +# deltaF = 0.917 +# d1 = 0.416 +# d2 = 0.975 +# tauF = 0.094 +# tauD1 = 0.38 +# tauD2 = 9.2 +# conductance_scale = 1.0 +# Default properties for GABA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] +[GABA] +# initPr = 1.0 +# deltaF = 0.917 +# d1 = 0.416 +# d2 = 0.975 +# tauF = 0.094 +# tauD1 = 0.38 +# tauD2 = 9.2 +conductance_scale = 1.25 + +# Number of cells of each kind +[cellcount] +SupPyrRS = 20 +SupPyrFRB = 20 +SupBasket = 20 +SupAxoaxonic = 20 +SupLTS = 20 +SpinyStellate = 20 +TuftedIB = 20 +TuftedRS = 20 +DeepBasket = 20 +DeepAxoaxonic = 20 +DeepLTS = 20 +NontuftedRS = 20 +TCR = 20 +nRT = 20 + +################################################################ +# How many cells from each cell class to record from. +# All these cells' [Ca2+] is also recorded. +# Uncomment and modify to override defaults + +[vm_record] +SupPyrRS = 100 +SupPyrFRB = 5 +SupBasket = 9 +SupAxoaxonic = 9 +SupLTS = 9 +SpinyStellate = 24 +TuftedIB = 80 +TuftedRS = 20 +DeepBasket = 10 +DeepAxoaxonic = 10 +DeepLTS = 10 +NontuftedRS = 50 +TCR = 10 +nRT = 10 + +################################################################ +# The following are used for computing randomized compartment +# properties using the preset values as mean and specified sd as +# standard deviatino as a fraction of mean. Note: there will be a +# problem if mean is 0.0. But it is more convenient for avoiding +# absurd sd's in general. All the parameters are positive except +# Em/initVm. +# Uncomment and modify to override defaults + +# [sd_passive] +# initVm = 0.10 +# Rm = 0.10 +# Cm = 0.10 +# Ra = 0.10 + +# These are the standard deviations as fraction of mean for active +# conductances. +[sd_active] +# KDR = 0.10 +# KDR_FS = 0.10 +# KA = 0.10 +# KA_IB = 0.10 +# K2 = 0.10 +# KM = 0.10 +# KAHP = 0.10 +# KAHP_SLOWER = 0.10 +# KAHP_DP = 0.10 +# KC = 0.10 +# KC_FAST = 0.10 +# NaF = 0.10 +# NaF2 = 0.10 +# NaF2_nRT = 0.10 +# NaP = 0.10 +# NaPF = 0.10 +# NaPF_SS = 0.10 +# NaPF_TCR = 0.10 +# NaF_TCR = 0.10 +# CaL = 0.10 +# CaT = 0.10 +# CaT_A = 0.10 +# AR = 0.10 + +[bias_current] +SupPyrRS_level_0 = 0.05e-9 +SupPyrRS_delay_0 = 0.0 +SupPyrRS_width_0 = 1e9 +SupPyrFRB_level_0 = 0.3e-9 +SupPyrFRB_delay_0 = 0.0 +SupPyrFRB_width_0 = 1e9 +SupBasket_level_0 = +SupBasket_delay_0 = +SupBasket_width_0 = +SupAxoaxonic_level_0 = +SupAxoaxonic_delay_0 = +SupAxoaxonic_width_0 = +SupLTS_level_0 = +SupLTS_delay_0 = +SupLTS_width_0 = +SpinyStellate_level_0 = 0.05e-9 +SpinyStellate_delay_0 = 0.0 +SpinyStellate_width_0 = 1e9 +TuftedIB_level_0 = 0.05e-9 +TuftedIB_delay_0 = 0.0 +TuftedIB_width_0 = 1e9 +TuftedRS_level_0 = 0.05e-9 +TuftedRS_delay_0 = 0.0 +TuftedRS_width_0 = 1e9 +DeepBasket_level_0 = +DeepBasket_delay_0 = +DeepBasket_width_0 = +DeepAxoaxonic_level_0 = +DeepAxoaxonic_delay_0 = +DeepAxoaxonic_width_0 = +DeepLTS_level_0 = +DeepLTS_delay_0 = +DeepLTS_width_0 = +NontuftedRS_level_0 = 0.05e-9 +NontuftedRS_delay_0 = 0.0 +NontuftedRS_width_0 = 1e9 +TCR_level_0 = +TCR_delay_0 = +TCR_width_0 = +nRT_level_0 = +nRT_delay_0 = +nRT_width_0 = + +# The settings for stimulus protocol +[stimulus] +background = TCR +probe = SpinyStellate +bg_count = 10 +probe_count = 2 +onset = 1.0 +bg_interval = 0.5 +pulse_width = 60e-6 +isi = 10e-3 +amplitude = 5e-12 + + + + + diff --git a/examples/traub_2005/py/deadlock_bug.py b/examples/traub_2005/py/deadlock_bug.py new file mode 100644 index 0000000..d876cd7 --- /dev/null +++ b/examples/traub_2005/py/deadlock_bug.py @@ -0,0 +1,266 @@ +# deadlock_bug.py --- +# +# Filename: deadlock_bug.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Mon Jul 16 22:34:26 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:32:49 2016 (-0400) +# By: subha +# Update #: 22 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# This isolates a single celltype for testing. In some runs, the +# control never returns from ReadCell and I suspected it to be a +# thread deadlock. Hence this file to isolate the issue. +# + +# Change log: +# +# +# + +# Code: +from __future__ import print_function + +from collections import defaultdict +import moose +import config +from config import logger +import nachans +import kchans +import archan +import cachans +import capool +from channelinit import init_chanlib + +def read_keyvals(filename): + """Read the mapping between key value pairs from file. + + The file filename should have two columns: + + key value + + """ + ret = defaultdict(set) + try: + with(open(filename, 'r')) as level_file: + for line in level_file: + tokens = line.split() + if not tokens: + continue + if len(tokens) != 2: + print(filename, ' - Tokens: ', tokens, len(tokens)) + return None + ret[tokens[1]].add(tokens[0]) + except IOError: + config.logger.info('No such file %s' % (filename)) + return ret + +def adjust_chanlib(cdict): + """Update the revarsal potentials for channels. Set the initial X + value for AR channel. Set the tau for Ca pool.""" + channel_dict = init_chanlib() + for ch in channel_dict.values(): + if isinstance(ch, kchans.KChannel): + ch.Ek = cdict['EK'] + elif isinstance(ch, nachans.NaChannel): + ch.Ek = cdict['ENa'] + elif isinstance(ch, cachans.CaChannel): + ch.Ek = cdict['ECa'] + elif isinstance(ch, archan.AR): + ch.Ek = cdict['EAR'] + if 'X_AR' in cdict: + ch.X = cdict['X_AR'] + elif isinstance(ch, capool.CaPool): + ch.tau = cdict['TauCa'] + +def read_prototype(celltype, cdict): + """Read the cell prototype file for the specified class. The + channel properties are updated using values in cdict.""" + filename = '%s/%s.p' % (config.modelSettings.protodir, celltype) + logger.debug('Reading prototype file %s' % (filename)) + adjust_chanlib(cdict) + cellpath = '%s/%s' % (config.modelSettings.libpath, celltype) + if moose.exists(cellpath): + return moose.element(cellpath) + for handler in logger.handlers: + handler.flush() + proto = moose.loadModel(filename, cellpath) + # If prototype files do not have absolute compartment positions, + # set the compartment postions to origin. This will avoid + # incorrect assignemnt of position when the x/y/z values in + # prototype file is just for setting the compartment length. + if not config.modelSettings.morph_has_postion: + for comp in moose.wildcardFind('%s/#[ISA=Compartment]' % (proto.path)): + comp.x = 0.0 + comp.y = 0.0 + comp.z = 0.0 + leveldict = read_keyvals('%s/%s.levels' % (config.modelSettings.protodir, celltype)) + depths = read_keyvals('%s/%s.depths' % (config.modelSettings.protodir, celltype)) + depthdict = {} + for level, depthset in depths.items(): + if len(depthset) != 1: + raise Exception('Depth set must have only one entry.') + depthdict[level] = depthset.pop() + assign_depths(proto, depthdict, leveldict) + return proto + +def assign_depths(cell, depthdict, leveldict): + """Assign depths to the compartments in the cell. The original + model assigns sets of compartments to particular levels and a + depth is specified for each level. This should not be required if + we have the z value in prototype file. + + cell : (prototype) cell instance + + depth : dict mapping level no. to physical depth + + level : dict mapping level no. to compartment nos. belonging to + that level. + """ + if not depthdict: + return + for level, depth in depthdict.items(): + z = float(depth) + complist = leveldict[level] + for comp_number in complist: + comp = moose.element('%s/comp_%s' % (cell.path, comp_number)) + comp.z = z + + +class CellMeta(type): + def __new__(cls, name, bases, cdict): + if name != 'CellBase': + proto = read_prototype(name, cdict) + if 'soma_tauCa' in cdict: + moose.element(proto.path + '/comp_1/CaPool').tau = cdict['soma_tauCa'] + cdict['prototype'] = proto + return type.__new__(cls, name, bases, cdict) + + +class CellBase(moose.Neutral): + __metaclass__ = CellMeta + def __init__(self, path): + if not moose.exists(path): + path_tokens = path.rpartition('/') + moose.copy(self.prototype, path_tokens[0], path_tokens[-1]) + moose.Neutral.__init__(self, path) + + def comp(self, number): + return moose.element('%s/comp_%d' % (self.path, number)) + + @property + def soma(self): + return self.comp(1) + + @property + def presynaptic(self): + """Presynaptic compartment. Each subclass should define + _presynaptic as the index of this compartment.""" + return self.comp[self.__class__._presynaptic] + +class TCR(CellBase): + _presynaptic = 135 + ENa = 50e-3 + EK = -95e-3 + EAR = -35e-3 + ECa = 125e-3 + EGABA = -81e-3 + TauCa = 20e-3 + X_AR = 0.25 + soma_tauCa = 50e-3 + + def __init__(self, path): + CellBase.__init__(self, path) + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import time +import unittest +import uuid + +import moose + +def setupClocks(dt): + print('Setting up clocks') + for ii in range(10): + moose.setClock(ii, dt) + +def setupCurrentStepModel(testId, celltype, pulsearray, dt): + """Setup a single cell simulation. + + simid - integer identifying the model + + celltype - str cell type + + pulsearray - an nx3 array with row[i] = (delay[i], width[i], level[i]) of current injection. + """ + modelContainer = moose.Neutral('/test%d' % (testId)) + dataContainer = moose.Neutral('/data%d' % (testId)) + cell = TCR('%s/TCR' % (modelContainer.path)) # moose.copy(cells.TCR.prototype, modelContainer.path)# + pulsegen = moose.PulseGen('%s/pulse' % (modelContainer.path)) + pulsegen.count = len(pulsearray) + for ii in range(len(pulsearray)): + pulsegen.delay[ii] = pulsearray[ii][0] + pulsegen.width[ii] = pulsearray[ii][1] + pulsegen.level[ii] = pulsearray[ii][2] + moose.connect(pulsegen, 'output', cell.soma, 'injectMsg') + somaVm = moose.Table('%s/vm' % (dataContainer.path)) + moose.connect(somaVm, 'requestOut', cell.soma, 'getVm') + pulseTable = moose.Table('%s/pulse' % (dataContainer.path)) + moose.connect(pulseTable, 'requestOut', pulsegen, 'getOutputValue') + setupClocks(dt) + moose.useClock(0, '%s/##[ISA=Compartment]' % (cell.path), 'init') + moose.useClock(1, '%s/##[ISA=Compartment]' % (cell.path), 'process') + moose.useClock(7, pulsegen.path, 'process') + moose.useClock(8, '%s/##' % (dataContainer.path), 'process') + return {'cell': cell, + 'stimulus': pulsegen, + 'vmTable': somaVm, + 'stimTable': pulseTable + } + +def runsim(simtime, steplength=0.01): + moose.reinit() + clock = moose.element('/clock') + while clock.currentTime < simtime: + moose.start(steplength) + print('Current simulation time:', clock.currentTime) + time.sleep(0.05) + +pulsearray = [[.05, 100e-3, 0.9e-9], + [1e9, 10e-3, 0.3e-9], # This will block stimulation after the first one + [0.05, 10e-3, 0.1e-9], + [0.05, 10e-3, -0.1e-9], + [0.05, 10e-3, -0.3e-9]] + +simdt = 0.25e-4 +simtime = 0.1 + +class TestTCR(unittest.TestCase): + def setUp(self): + self.testId = uuid.uuid4().int + params = setupCurrentStepModel(self.testId, 'TCR', pulsearray, simdt) + print('Starting simulation') + runsim(simtime) + + def testDefault(self): + pass + +if __name__ == '__main__': + unittest.main() + + + +# +# deadlock_bug.py ends here diff --git a/examples/traub_2005/py/defaults.ini b/examples/traub_2005/py/defaults.ini new file mode 100644 index 0000000..2e8ee27 --- /dev/null +++ b/examples/traub_2005/py/defaults.ini @@ -0,0 +1,212 @@ +# default numeric settings. +[numeric] +# rngseed is the seed for numpy random number generator. If left numpy RNG is seeded with PID of the python process. +rngseed = +# If reseed is set to yes, numpy RNG is reseeded with rngseed or PID of python. +reseed = yes +# stochastic = yes makes the simulation use stochastic and plastic synaptic channels. +# stochastic = no makes the simulation use deterministic and non-plastic synaptic channels. +stochastic = yes +# If solver = hsolve, hines method is used for calculating neuronal dynamics. If solver = ee, then exponential euler method is used. +solver = ee +# setting moose rngseed to 0 causes a scramble of hostname, and current time to be used as seed. +moose_rngseed = 0 +# Scheduling settings +[scheduling] +# In moose-beta objects are scheduled by default. +autoschedule = yes +# simdt is Integration time step for the simulation +simdt = 50e-6 +# plotdt is Data recording interval +plotdt = 0.25e-3 +# gldt was used as update interval for MOOSE OpenGL display by Karan Vasudevan. +gldt = 1e9 +# Total simulation runtime in seconds +simtime = 1.0 + + +# Some properties of synapses to be modified from simulation to +# simulation +[synapse] +# Default value of initial release probability. +# Default properties for NMDA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] +[NMDA] +initPr = 1.0 +deltaF = 0.917 +d1 = 0.416 +d2 = 0.975 +tauF = 0.094 +tauD1 = 0.38 +tauD2 = 9.2 +conductance_scale = 1.0 +# Default properties for AMPA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] +[AMPA] +initPr = 1.0 +deltaF = 0.917 +d1 = 0.416 +d2 = 0.975 +tauF = 0.094 +tauD1 = 0.38 +tauD2 = 9.2 +conductance_scale = 1.0 +# Default properties for GABA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] +[GABA] +initPr = 1.0 +deltaF = 0.917 +d1 = 0.416 +d2 = 0.975 +tauF = 0.094 +tauD1 = 0.38 +tauD2 = 9.2 +conductance_scale = 1.0 +# Number of cells of each kind +[cellcount] +SupPyrRS = 1000 +SupPyrFRB = 50 +SupBasket = 90 +SupAxoaxonic = 90 +SupLTS = 90 +SpinyStellate = 240 +TuftedIB = 800 +TuftedRS = 200 +DeepBasket = 100 +DeepAxoaxonic = 100 +DeepLTS = 100 +NontuftedRS = 500 +TCR = 100 +nRT = 100 + +# How many cells from each cell class to record from. +# All these cells' [Ca2+] is also recorded. +[vm_record] +SupPyrRS = 1000 +SupPyrFRB = 50 +SupBasket = 90 +SupAxoaxonic = 90 +SupLTS = 90 +SpinyStellate = 240 +TuftedIB = 800 +TuftedRS = 200 +DeepBasket = 100 +DeepAxoaxonic = 100 +DeepLTS = 100 +NontuftedRS = 500 +TCR = 100 +nRT = 100 + +# Current injection to be applied +[current_injection] +delay0 = 5.0 +width0 = 5.0 +level0 = -0.9e-9 +delay1 = 6.0 +width1 = 5.0 +level1 = -0.3e-9 +delay2 = 10.0 +width2 = 5.0 +level2 = 0.1e-9 +delay3 = 10.0 +width3 = 5.0 +level3 = 0.3e-9 +delay4 = 1e9 + +[bias_current] +SupPyrRS_level_0 = +SupPyrRS_delay_0 = +SupPyrRS_width_0 = +SupPyrFRB_level_0 = +SupPyrFRB_delay_0 = +SupPyrFRB_width_0 = +SupBasket_level_0 = +SupBasket_delay_0 = +SupBasket_width_0 = +SupAxoaxonic_level_0 = +SupAxoaxonic_delay_0 = +SupAxoaxonic_width_0 = +SupLTS_level_0 = +SupLTS_delay_0 = +SupLTS_width_0 = +SpinyStellate_level_0 = +SpinyStellate_delay_0 = +SpinyStellate_width_0 = +TuftedIB_level_0 = +TuftedIB_delay_0 = +TuftedIB_width_0 = +TuftedRS_level_0 = +TuftedRS_delay_0 = +TuftedRS_width_0 = +DeepBasket_level_0 = +DeepBasket_delay_0 = +DeepBasket_width_0 = +DeepAxoaxonic_level_0 = +DeepAxoaxonic_delay_0 = +DeepAxoaxonic_width_0 = +DeepLTS_level_0 = +DeepLTS_delay_0 = +DeepLTS_width_0 = +NontuftedRS_level_0 = +NontuftedRS_delay_0 = +NontuftedRS_width_0 = +TCR_level_0 = +TCR_delay_0 = +TCR_width_0 = +nRT_level_0 = +nRT_delay_0 = +nRT_width_0 = + + +# The following are used for computing randomized compartment +# properties using the preset values as mean and specified sd as +# standard deviatino as a fraction of mean. Note: there will be a +# problem if mean is 0.0. But it is more convenient for avoiding +# absurd sd's in general. All the parameters are positive except +# Em/initVm. +[sd_passive] +#initVm = 0.10 +#Rm = 0.10 +#Cm = 0.10 +#Ra = 0.10 + +# These are the standard deviations as fraction of mean for active +# conductances. If the model has maximum conductance Gbar for a +# channel, we compute the randomized Gbar as normal(mean=Gbar, +# sd=sd_active*Gbar) +[sd_active] +KDR = 0.10 +KDR_FS = 0.10 +KA = 0.10 +KA_IB = 0.10 +K2 = 0.10 +KM = 0.10 +KAHP = 0.10 +KAHP_SLOWER = 0.10 +KAHP_DP = 0.10 +KC = 0.10 +KC_FAST = 0.10 +NaF = 0.10 +NaF2 = 0.10 +NaF2_nRT = 0.10 +NaP = 0.10 +NaPF = 0.10 +NaPF_SS = 0.10 +NaPF_TCR = 0.10 +NaF_TCR = 0.10 +CaL = 0.10 +CaT = 0.10 +CaT_A = 0.10 +AR = 0.10 + + +# The settings for stimulus protocol +[stimulus] +background = TCR +probe = SpinyStellate +bg_count = 100 +probe_count = 10 +onset = 1.0 +bg_interval = 0.5 +pulse_width = 60e-6 +isi = 10e-3 +amplitude = 5e-12 + + diff --git a/examples/traub_2005/py/display_morphology.py b/examples/traub_2005/py/display_morphology.py new file mode 100644 index 0000000..7722b23 --- /dev/null +++ b/examples/traub_2005/py/display_morphology.py @@ -0,0 +1,181 @@ +# display_morphology.py --- +# +# Filename: display_morphology.py +# Description: +# Author: +# Maintainer: +# Created: Fri Mar 8 11:26:13 2013 (+0530) +# Version: +# Last-Updated: Thu Aug 11 11:29:36 2016 (-0400) +# By: Subhasis Ray +# Update #: 389 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Draw the schematic diagram of cells using networkx +# +# + +# Change log: +# +# +# +# + +# Code: +from __future__ import print_function + +""" +Display/save the topology of one or all cells in traub_2005 demo. + +command line options (all are optional): +-c celltype : display topology of cell type 'celltype'. If unspecified, all cell types are displayed +-p filename : save output to fiel specified by 'filename' +-l : show labels of the compartments +-h,--help : show this help +""" +import sys +sys.path.append('../../../python') +import os +import numpy as np +import matplotlib.pyplot as plt +import networkx as nx +import moose +import cells + +def node_sizes(g): + """Calculate the 2D projection area of each compartment. + + g: graph whose nodes are moose Compartment objects. + + return a numpy array with compartment areas in 2D projection + normalized by the maximum. + + """ + sizes = [] + comps = [moose.Compartment(n) for n in g.nodes()] + sizes = np.array([c.length * c.diameter for c in comps]) + soma_i = [ii for ii in range(len(comps)) if comps[ii].path.endswith('comp_1')] + sizes[soma_i] *= np.pi/4 # for soma, length=diameter. So area is dimater^2 * pi / 4 + return sizes / max(sizes) + +def cell_to_graph(cell, label=False): + """Convert a MOOSE compartmental neuron into a graph describing + the topology of the compartments + + """ + soma = moose.element('%s/comp_1' % (cell.path)) + if len(soma.neighbors['axialOut']) > 0: + msg = 'raxialOut' + elif len(soma.neighbors['distalOut']) > 0: + msg = 'distalOut' + else: + raise Exception('No neighbors on raxial or distal') + es = [(c1.path, c2[0].path, {'weight': 2/ (c1.Ra + c2[0].Ra)}) \ + for c1 in moose.wildcardFind('%s/##[ISA=CompartmentBase]' % (cell.path)) \ + for c2 in moose.Compartment(c1).neighbors[msg]] + g = nx.Graph() + g.add_edges_from(es) + if label: + for v in g.nodes(): + g.node[v]['label'] = v.rpartition('/')[-1] + return g + +def axon_dendrites(g): + """Get a 2-tuple with list of nodes representing axon and list of + nodes representing dendrites. + + g: graph whose nodes are compartments + + """ + axon = [] + soma_dendrites = [] + for n in g.nodes(): + if moose.exists('%s/CaPool' % (n)): + soma_dendrites.append(n) + else: + axon.append(n) + return (axon, soma_dendrites) + +def plot_cell_topology(cell, label=False): + g = cell_to_graph(cell, label=label) + axon, sd = axon_dendrites(g) + node_size = node_sizes(g) + weights = np.array([g.edge[e[0]][e[1]]['weight'] for e in g.edges()]) + try: + pos = nx.graphviz_layout(g,prog='twopi',root=cell.path + '/comp_1') + except (NameError, AttributeError) as e: + # this is the best networkx can do by itself. Its Furchtman + # Reingold layout ends up with overlapping edges even for a + # tree. igraph does much better. + pos = nx.spectral_layout(g) + nx.draw_networkx_edges(g, pos, width=10*weights/max(weights), edge_color='gray', alpha=0.8) + nx.draw_networkx_nodes(g, pos, with_labels=False, + nnode_size=node_size * 500, + node_color=map(lambda x: 'k' if x in axon else 'gray', g.nodes()), + linewidths=[1 if n.endswith('comp_1') else 0 for n in g.nodes()], + alpha=0.8) + if label: + labels = dict([(n, g.node[n]['label']) for n in g.nodes()]) + nx.draw_networkx_labels(g, pos, labels=labels) + plt.title(cell.__class__.__name__) + +from matplotlib.backends.backend_pdf import PdfPages + +import sys +from getopt import getopt + +if __name__ == '__main__': + optlist, args = getopt(sys.argv[1:], 'lhp:c:', ['help']) + celltype = '' + pdf = '' + label = False + for arg in optlist: + if arg[0] == '-c': + celltype = arg[1] + elif arg[0] == '-p': + pdf = arg[1] + elif arg[0] == '-l': + label = True + elif arg[0] == '-h' or arg[0] == '--help': + print('Usage: %s [-c CellType [-p filename]]' % (sys.argv[0])) + print('Display/save the morphology of cell type "CellType".') + print('Options:') + print('-c celltype (optional) display only an instance of the specified cell type. If CellType is empty or not specified, all prototype cells are displayed.') + print('-l label the compartments') + print('-p filename (optional) save outputin a pdf file named "filename".') + print('-h,--help print this help') + sys.exit(0) + figures = [] + if len(celltype) > 0: + try: + fig = plt.figure() + figures.append(fig) + cell = cells.init_prototypes()[celltype] + # print 'Label', label + plot_cell_topology(cell, label=label) + except KeyError: + print( '%s: no such cell type. Available are:' % (celltype)) + for ii in cells.init_prototypes().keys(): + print( ii) + sys.exit(1) + else: + for cell, proto in cells.init_prototypes().items(): + figures.append(plt.figure()) + plot_cell_topology(proto, label=label) + plt.axis('off') + if len(pdf) > 0: + pdfout = PdfPages(pdf) + for fig in figures: + pdfout.savefig(fig) + pdfout.close() + else: + plt.show() + +# +# display_morphology.py ends here diff --git a/examples/traub_2005/py/dump_f_i_curves.py b/examples/traub_2005/py/dump_f_i_curves.py new file mode 100644 index 0000000..18e0dfb --- /dev/null +++ b/examples/traub_2005/py/dump_f_i_curves.py @@ -0,0 +1,112 @@ +# dump_f_i_curves.py --- +# +# Filename: dump_f_i_curves.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Tue Dec 8 13:11:01 2015 (-0500) +# Version: +# Package-Requires: () +# Last-Updated: Wed Dec 9 12:28:06 2015 (-0500) +# By: Subhasis Ray +# Update #: 79 +# URL: +# Doc URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change Log: +# +# +# +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . +# +# + +# Code: + +"""Do a series of current steps on each celltype""" +from __future__ import print_function +import numpy as np +import h5py as h5 +from collections import defaultdict + +import moose +from moose import utils as mutils + +from cells import SpinyStellate +from cells import DeepBasket +from cells import DeepLTS + + +simdt = 2.5e-6 +plotdt = 1e-4 + +amps = np.array([-0.1, 0.1, 0.5, 1.0, 1.5])*1e-9 + +def run_current_pulse(amps, delay=100e-3, dur=100e-3, trail=100e-3, outfile='f_i_curves_data.h5'): + models = [] + model = moose.Neutral('/model') + data = moose.Neutral('/data') + ddict = defaultdict(list) + for ii, amp in enumerate(amps): + mc = moose.Neutral('{}/mc_{}'.format(model.path, ii)) + models.append(mc) + stim = moose.PulseGen('{}/stim_{}'.format(mc.path, ii)) + stim.delay[0] = delay + stim.width[0] = dur + stim.level[0] = amp + stim.delay[1] = 1e9 # make delay so large that it does not activate again + for celltype in [SpinyStellate, DeepBasket, DeepLTS]: + cell = celltype('{}/{}_{}'.format(mc.path, celltype.__name__, ii)) + solver = moose.HSolve('{}/solver'.format(cell.path)) + solver.dt = simdt + solver.target = cell.path + stim.connect('output', cell.soma, 'injectMsg') + tab = moose.Table('/data/Vm_{}'.format(cell.name)) + ddict[ii].append(tab) + tab.connect('requestOut', cell.soma, 'getVm') + mutils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + mutils.assignDefaultTicks(modelRoot='/model', dataRoot='/data', solver='hsolve') + moose.reinit() + print('Finished scheduling') + moose.start(delay + dur + trail) + print('Finished simulation') + # Save data + fd = h5.File(outfile, 'w') + for ii, tabs in ddict.items(): + for tab in tabs: + print('Table', tab.name) + node = fd.create_dataset(tab.name, data=tab.vector) + node.attrs['current'] = amps[ii] + node.attrs['delay'] = delay + node.attrs['width'] = dur + fd.close() + print('Finished saving data in file', outfile) + + +if __name__ == '__main__': + run_current_pulse(amps) + +# +# dump_f_i_curves.py ends here diff --git a/examples/traub_2005/py/fig_a2_fs.py b/examples/traub_2005/py/fig_a2_fs.py new file mode 100644 index 0000000..625a622 --- /dev/null +++ b/examples/traub_2005/py/fig_a2_fs.py @@ -0,0 +1,126 @@ +# fig)a2.py --- +# +# Filename: fig)a2.py +# Description: +# Author: +# Maintainer: +# Created: Thu Jun 27 12:06:52 2013 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:28:07 2016 (-0400) +# By: subha +# Update #: 30 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +""" +Reproduce the experiment for Fig A2 in Traub et al 2005. + +FS (deep basket cell) with 0.5 nA current pusle simulated for 1 s +""" +from __future__ import print_function + +import numpy as np +import pylab + +import moose +from moose import utils +from cells import DeepBasket +import config + +simtime = 200e-3 +simdt = 2e-5 +plotdt=1e-4 + +def setup_model(root='/', hsolve=True): + moose.ce(root) + model = moose.Neutral('model') + data = moose.Neutral('data') + cell = DeepBasket('%s/deepbasket' % (model.path)) + soma = moose.Compartment('%s/comp_1' % (cell.path)) + if hsolve: + solver = moose.HSolve('%s/solve' % (cell.path)) + solver.dt = simdt + solver.target = cell.path + pulse = moose.PulseGen('%s/stimulus' % (model.path)) + moose.connect(pulse, 'output', soma, 'injectMsg') + tab_vm = moose.Table('%s/spinystellate_soma_Vm' % (data.path)) + moose.connect(tab_vm, 'requestOut', soma, 'getVm') + tab_stim = moose.Table('%s/spinystellate_soma_inject' % (data.path)) + moose.connect(tab_stim, 'requestOut', pulse, 'getOutputValue') + utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + utils.assignDefaultTicks(model, data) + return {'stimulus': pulse, + 'tab_vm': tab_vm, + 'tab_stim': tab_stim} + +def do_sim(pulsegen, amp): + pulsegen.level[0] = amp + pulsegen.delay[0] = 50e-3 + pulsegen.width[0] = 100e-3 + moose.reinit() + utils.stepRun(simtime, 10000*simdt, logger=config.logger) + + +def main(): + amp = 0.4e-9 + model_dict = setup_model() + do_sim(model_dict['stimulus'], amp) + config.logger.info('##### %d' % (model_dict['tab_vm'].size)) + vm = model_dict['tab_vm'].vector * 1e3 + inject = model_dict['tab_stim'].vector.copy() + t = np.linspace(0, simtime, len(vm)) + fname = 'data_fig_a2_FS.txt' + np.savetxt(fname, + np.vstack((t, inject, vm)).transpose()) + msg = 'Saved data for %g A current pulse in %s' % (amp, fname) + config.logger.info(msg) + print(msg) + pylab.title('%g nA' % (amp*1e9)) + pylab.plot(t, vm, label='soma-Vm (mV)') + stim_boundary = np.flatnonzero(np.diff(inject)) + pylab.plot((t[stim_boundary[0]]), (vm.min()), 'r^', label='stimulus start') + pylab.plot((t[stim_boundary[-1]]), (vm.min()), 'gv', label='stimulus end') + pylab.legend() + pylab.savefig('fig_a2_fs.png') + pylab.show() + +if __name__ == '__main__': + main() + + + + +# +# fig)a2.py ends here diff --git a/examples/traub_2005/py/fig_a3.py b/examples/traub_2005/py/fig_a3.py new file mode 100644 index 0000000..393ecaf --- /dev/null +++ b/examples/traub_2005/py/fig_a3.py @@ -0,0 +1,123 @@ +# fig_a3.py --- +# +# Filename: fig_a3.py +# Description: +# Author: +# Maintainer: +# Created: Wed Jun 26 17:07:59 2013 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:46:14 2016 (-0400) +# By: subha +# Update #: 161 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +"""This script is intended for reproducing figure A3 of the Traub et +al 2005 paper. This is a test for spiny stellate cell.""" + +import numpy as np +import pylab + +import moose +from moose import utils +from cells import SpinyStellate +import config + +simtime = 500e-3 +simdt = 2e-5 +plotdt=1e-4 + +def setup_model(root='/', hsolve=True): + moose.ce(root) + model = moose.Neutral('model') + data = moose.Neutral('data') + cell = SpinyStellate('%s/spinystellate' % (model.path)) + soma = moose.Compartment('%s/comp_1' % (cell.path)) + if hsolve: + solver = moose.HSolve('%s/solve' % (cell.path)) + solver.dt = simdt + solver.target = cell.path + pulse = moose.PulseGen('%s/stimulus' % (model.path)) + moose.connect(pulse, 'output', soma, 'injectMsg') + tab_vm = moose.Table('%s/spinystellate_soma_Vm' % (data.path)) + moose.connect(tab_vm, 'requestOut', soma, 'getVm') + tab_stim = moose.Table('%s/spinystellate_soma_inject' % (data.path)) + moose.connect(tab_stim, 'requestOut', pulse, 'getOutputValue') + utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + utils.assignDefaultTicks(model, data) + return {'stimulus': pulse, + 'tab_vm': tab_vm, + 'tab_stim': tab_stim} + +def do_sim(pulsegen, amp): + pulsegen.level[0] = amp + pulsegen.delay[0] = 50e-3 + pulsegen.width[0] = 400e-3 + moose.reinit() + utils.stepRun(simtime, 10000*simdt, logger=config.logger) + + +def main(): + amps = [0.167e-9, + 0.25e-9, + 0.333e-9] + model_dict = setup_model() + for ii, a in enumerate(amps): + do_sim(model_dict['stimulus'], a) + config.logger.info('##### %d' % (model_dict['tab_vm'].size)) + vm = model_dict['tab_vm'].vector + inject = model_dict['tab_stim'].vector.copy() + t = np.linspace(0, simtime, len(vm)) + fname = 'data_fig_a3_%s.txt' % (chr(ord('A')+ii)) + np.savetxt(fname, + np.vstack((t, inject, vm)).transpose()) + msg = 'Saved data for %g A current pulse in %s' % (a, fname) + config.logger.info(msg) + print( msg) + pylab.subplot(3,1,ii+1) + pylab.title('%g nA' % (a*1e9)) + pylab.plot(t, vm, label='soma-Vm (mV)') + stim_boundary = np.flatnonzero(np.diff(inject)) + pylab.plot((t[stim_boundary[0]]), (vm.min()), 'r^', label='stimulus start') + pylab.plot((t[stim_boundary[-1]]), (vm.min()), 'gv', label='stimulus end') + pylab.legend() + pylab.savefig('fig_a3.png') + pylab.show() + +if __name__ == '__main__': + main() + +# +# fig_a3.py ends here diff --git a/examples/traub_2005/py/fig_a4c.py b/examples/traub_2005/py/fig_a4c.py new file mode 100644 index 0000000..ae087fb --- /dev/null +++ b/examples/traub_2005/py/fig_a4c.py @@ -0,0 +1,172 @@ +# fig_a4c.py --- +# +# Filename: fig_a4c.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jun 24 18:43:47 2013 (+0530) +# Version: +# Last-Updated: Fri Jun 28 12:12:51 2013 (+0530) +# By: subha +# Update #: 256 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +"""Experiment to reproduce figure A4C from Traub et al 2005""" + +import numpy as np +from scipy.optimize import curve_fit +import pylab + +import moose +from moose import utils +from cells import TuftedIB +import config + +simtime = 100e-3 +simdt = 2e-5 +plotdt=1e-4 + +d1 = 'comp_44' +d2 = 'comp_40' + +scale_x = 20e-3/150.0 # 150 pixels = 20 ms scalebar +scale_y = 0.5e-9 / 40 # 40 pixels = 0.5 nA scalebar + +# These are the computed parameters for the stimulus current in fig A4C +params = np.array([ -2.95506969e-01, 1.88994285e-01, -1.00969140e-02, + 2.22528805e-04, -1.82993456e-06]) + +def poly4(x, a, b, c, d, e): + return a + x * (b + x * ( c + x * (d + x * e))) + +def alpha(x, peak, tpeak): + return peak * x * np.exp(1 - x/tpeak)/tpeak + +def get_stimulus_fit(filename='a4c_stim_data.txt', scale_x=1.0, scale_y=1.0): + data = np.loadtxt(filename) + # popt, pcov = curve_fit(poly4, data[:, 0]*scale_x, data[:, 1]*scale_y) + popt, pcov = curve_fit(alpha, data[:, 0]*scale_x, data[:, 1]*scale_y) + return popt + +def get_stimulus(path, start=10e-3, end=40e-3, dt=simdt): + x = np.arange(start, end, dt) + y = alpha(x, *get_stimulus_fit()) + stim = moose.StimulusTable(path) + stim.startTime = start + stim.stopTime = end + stim.stepSize = dt + stim.vector = y + return stim + +def create_stim(stimpath, starttime, stoptime, dt, filename=None): + """if filename is specified, load stimulus data from file.""" + stim = moose.StimulusTable(stimpath) + # stim_data = np.loadtxt(filepath) + # y = stim_data[:, 1]*1e-9 + y = alpha(np.arange(0, stoptime-starttime, dt), *params) + # The paper says the soma was held at -0.2 nA, assume that means a -0.2 nA current was being injected beforehand + y = y - y.min() + # y[0] = -0.2e-9 + # y[-1] = -0.2e-9 + # The data columns are in ms and nA units respectively. + stim.vector = y + stim.startTime = starttime + # stim.stopTime = starttime + (stim_data[:,0][-1] - stim_data[:,0][0])*1e-3 + stim.stopTime = stoptime + stim.stepSize = dt + return stim + +def alpha_stimulus(stimpath, peak, peaktime, starttime, simtime, dt): + """Creates a stimulus in the alpha-function form with peak at + peaktime""" + t = np.arange(0, simtime, dt) + y = peak * t * np.exp(1 - t/peaktime) / peaktime + y1 = np.zeros(len(t)) + indices = np.flatnonzero(t>starttime) + y1[indices[0]:] = y[:len(t)-indices[0]] + # pylab.plot(t, y1) + # pylab.show() + stim = moose.StimulusTable(stimpath) + stim.vector = y1 + stim.startTime = starttime + stim.stopTime = simtime + stim.stepSize = dt + return stim + +def run_model(): + model = moose.Neutral('/model') + data = moose.Neutral('/data') + cell = TuftedIB('/model/TuftedIB') + stim = alpha_stimulus('/model/stim', 1.0e-9, 15e-3, 20e-3, simtime, simdt) + stim.startTime = 1e9 + comp_d1 = moose.element('%s/%s' % (cell.path, d1)) + comp_d2 = moose.element('%s/%s' % (cell.path, d2)) + comp_soma = moose.element('%s/%s' % (cell.path, 'comp_1')) + comp_soma.inject = -0.2e-9 + moose.connect(stim, 'output', comp_d1, 'injectMsg') + tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) + tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) + tab_soma = moose.Table('%s/soma_Vm' % (data.path)) + tab_stim = moose.Table('%s/stim' % (data.path)) + moose.connect(tab_d1, 'requestOut', comp_d1, 'getVm') + moose.connect(tab_d2, 'requestOut', comp_d2, 'getVm') + moose.connect(tab_soma, 'requestOut', comp_soma, 'getVm') + moose.connect(stim, 'output', tab_stim, 'input') + solver = moose.HSolve('%s/solver' % (cell.path)) + solver.dt = simdt + solver.target = cell.path + utils.setDefaultDt(elecdt=simdt,plotdt2=plotdt) + utils.assignDefaultTicks() + moose.reinit() + utils.stepRun(simtime, 1e5*simdt, logger=config.logger) + pylab.subplot(211) + pylab.plot(np.linspace(0, simtime, len(tab_d1.vector)), tab_d1.vector * 1e3, label='D1 Vm (mV)') + pylab.plot(np.linspace(0, simtime, len(tab_d2.vector)), tab_d2.vector * 1e3, label='D2 Vm (mV)') + pylab.plot(np.linspace(0, simtime, len(tab_soma.vector)), tab_soma.vector * 1e3, label='SOMA Vm (mV)') + pylab.legend() + pylab.subplot(212) + pylab.plot(np.linspace(0, simtime, len(tab_stim.vector)), tab_stim.vector * 1e9, label='Stimulus (nA)') + pylab.legend() + pylab.savefig('fig_a4c.png') + pylab.show() + +if __name__ == '__main__': + run_model() + + +# +# fig_a4c.py ends here diff --git a/examples/traub_2005/py/gui.py b/examples/traub_2005/py/gui.py new file mode 100644 index 0000000..c77e680 --- /dev/null +++ b/examples/traub_2005/py/gui.py @@ -0,0 +1,424 @@ +# gui.py --- +# +# Filename: gui.py +# Description: +# Author: +# Maintainer: +# Created: Fri Jul 12 11:53:50 2013 (+0530) +# Version: +# Last-Updated: Thu Aug 11 17:21:24 2016 (-0400) +# By: Subhasis Ray +# Update #: 781 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +""" +Display channel properties graphically +""" +from __future__ import print_function +from datetime import datetime +from PyQt4 import QtCore, QtGui +from matplotlib import mlab +# in stead of "from matplotlib.figure import Figure" do - +# from matplotlib.pyplot import figure as Figure +# see: https://groups.google.com/forum/#!msg/networkx-discuss/lTVyrmFoURQ/SZNnTY1bSf8J +# but does not help after the first instance when displaying cell +from matplotlib.figure import Figure +from matplotlib import patches +from pylab import cm + +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar + +import networkx as nx +import numpy as np +import sys +from cells import * +from cell_test_util import setup_current_step_model +import matplotlib.gridspec as gridspec +import moose +from moose import utils as mutils + +cmap = cm.jet + +simdt = 0.025e-3 +plotdt = 1e-4 + +class HHChanView(QtGui.QWidget): + def __init__(self, *args, **kwargs): + QtGui.QWidget.__init__(self, *args, **kwargs) + self.channels = {} + self.setLayout(QtGui.QHBoxLayout()) + self.layout().addWidget(self.getControlPanel()) + self.layout().addWidget(self.plotActInact()) + + def getControlPanel(self): + try: + return self.controlPanel + except AttributeError: + self.controlPanel = QtGui.QWidget() + layout = QtGui.QVBoxLayout() + self.controlPanel.setLayout(layout) + self.rootEdit = QtGui.QLineEdit('/library') + self.rootEdit.returnPressed.connect(self.getUpdatedChannelListWidget) + self.plotButton = QtGui.QPushButton('Plot selected channels') + self.plotButton.clicked.connect(self.plotActInact) + layout.addWidget(self.getUpdatedChannelListWidget()) + layout.addWidget(self.rootEdit) + layout.addWidget(self.plotButton) + return self.controlPanel + + def getChannels(self, root='/library'): + root = moose.element(root) + for channel in moose.wildcardFind('%s/#[ISA=HHChannel]' % (root.path)): + self.channels[channel.name] = channel + return self.channels + + def getUpdatedChannelListWidget(self): + try: + self.channelListWidget.clear() + self.channels = {} + except AttributeError: + self.channelListWidget = QtGui.QListWidget(self) + self.channelListWidget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) + root = str(self.rootEdit.text()) + for chan in self.getChannels(root).values(): + self.channelListWidget.addItem(chan.name) + self.update() + return self.channelListWidget + + def getChannelListWidget(self): + try: + return self.channelListWidget + except AttributeError: + return self.getUpdatedChannelListWidget() + + def __plotGate(self, gate, mlabel='', taulabel=''): + gate = moose.element(gate) + a = np.asarray(gate.tableA) + b = np.asarray(gate.tableB) + m = a/(a+b) + tau = 1/(a+b) + v = np.linspace(gate.min, gate.max, len(m)) + self.mhaxes.plot(v, m, label='%s %s' % (gate.path, mlabel)) + self.tauaxes.plot(v, tau, label='%s %s' % (gate.path, taulabel)) + print('Plotted', gate.path, 'vmin=', gate.min, 'vmax=', gate.max, 'm[0]=', m[0], 'm[last]=', m[-1], 'tau[0]=', tau[0], 'tau[last]=', tau[-1]) + + def plotActInact(self): + """Plot the activation and inactivation variables of the selected channels""" + try: + self.figure.clear() + except AttributeError: + self.figure = Figure() + self.canvas = FigureCanvas(self.figure) + self.nav = NavigationToolbar(self.canvas, self) + self.plotWidget = QtGui.QWidget() + layout = QtGui.QVBoxLayout() + self.plotWidget.setLayout(layout) + layout.addWidget(self.canvas) + layout.addWidget(self.nav) + self.mhaxes = self.figure.add_subplot(2, 1, 1) + self.mhaxes.set_title('Activation/Inactivation') + self.tauaxes = self.figure.add_subplot(2, 1, 2) + self.tauaxes.set_title('Tau') + for item in self.getChannelListWidget().selectedItems(): + chan = self.channels[str(item.text())] + if chan.Xpower > 0: + path = '{}/gateX'.format(chan.path) + self.__plotGate(path) + if chan.Ypower > 0: + path = '{}/gateY'.format(chan.path) + self.__plotGate(path) + # if chan.Zpower > 0: + # self.__plotGate(chan.gateZ.path, mlabel='z', taulabel='tau-z') + self.mhaxes.legend() + self.tauaxes.legend() + self.canvas.draw() + return self.plotWidget + + +from display_morphology import * + +class NetworkXWidget(QtGui.QWidget): + def __init__(self, *args, **kwargs): + QtGui.QWidget.__init__(self, *args, **kwargs) + layout = QtGui.QVBoxLayout() + self.setLayout(layout) + self.figure = Figure() + self.canvas = FigureCanvas(self.figure) + self.nav = NavigationToolbar(self.canvas, self) + layout.addWidget(self.canvas) + layout.addWidget(self.nav) + self.axes = self.figure.add_subplot(1, 1, 1) + self.axes.set_frame_on(False) + self.axes.get_xaxis().set_visible(False) + self.axes.get_yaxis().set_visible(False) + + # TODO: bypass networkx draw as it uses pylab directly. + def displayGraph(self, g, label=False): + axon, sd = axon_dendrites(g) + sizes = node_sizes(g) * 50 + if len(sizes) == 0: + print('Empty graph for cell. Make sure proto file has `*asymmetric` on top. I cannot handle symmetric compartmental connections') + return + node_colors = ['k' if x in axon else 'gray' for x in g.nodes()] + lw = [1 if n.endswith('comp_1') else 0 for n in g.nodes()] + self.axes.clear() + try: + nx.draw_graphviz(g, ax=self.axes, prog='twopi', node_color=node_colors, lw=lw) + except (NameError, AttributeError) as e: + nx.draw_spectral(g, ax=self.axes, node_color=node_colors, lw=lw, with_labels=False, ) + + +class CellView(QtGui.QWidget): + def __init__(self, *args, **kwargs): + QtGui.QWidget.__init__(self, *args, **kwargs) + self.cells = {} + layout = QtGui.QGridLayout() + self.setLayout(layout) + layout.addWidget(self.getControlPanel(), 0, 0, 2, 1) + layout.addWidget(self.getCellMorphologyWidget(), 0, 1, 1, 1) + layout.addWidget(self.getPlotWidget(), 1, 1, 1, 1) + + def getControlPanel(self): + try: + return self.controlPanel + except AttributeError: + self.controlPanel = QtGui.QWidget() + layout = QtGui.QGridLayout() + self.controlPanel.setLayout(layout) + self.simtimeLabel = QtGui.QLabel('Simulate for (ms)') + self.simtimeEdit = QtGui.QLineEdit('100') + self.plotButton = QtGui.QPushButton('Simulate selected cell model') + self.plotButton.clicked.connect(self.simulateSelected) + layout.addWidget(self.getCellListWidget(), 0, 0, 1, 2) + layout.addWidget(self.getCurrentClampWidget(), 1, 0, 1, 2) + layout.addWidget(self.simtimeLabel, 2, 0, 1, 1) + layout.addWidget(self.simtimeEdit, 2, 1, 1, 1) + layout.addWidget(self.plotButton, 3, 0, 1, 1) + return self.controlPanel + + def getCells(self, root='/library'): + if isinstance(root, str): + root = moose.element(root) + cells = [] + for cell in moose.wildcardFind('%s/#[ISA=Neuron]' % (root.path)): + cells.append(cell.name) + return cells + + def getUpdatedCellListWidget(self): + try: + self.cellListWidget.clear() + self.cells = {} + except AttributeError: + self.cellListWidget = QtGui.QListWidget(self) + self.cellListWidget.itemSelectionChanged.connect(self.displaySelected) + # self.cellListWidget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) + # root = str(self.rootEdit.text()) + for cell in self.getCells(): + self.cellListWidget.addItem(cell) + self.cellListWidget.setCurrentItem(self.cellListWidget.item(0)) + self.update() + return self.cellListWidget + + def getCellListWidget(self): + try: + return self.cellListWidget + except AttributeError: + return self.getUpdatedCellListWidget() + + def getCurrentClampWidget(self): + try: + return self.currentClampWidget + except AttributeError: + self.currentClampWidget = QtGui.QWidget() + self.delayLabel = QtGui.QLabel('Delay (ms)') + self.delayText = QtGui.QLineEdit('20') + self.widthLabel = QtGui.QLabel('Duration (ms)') + self.widthText = QtGui.QLineEdit('50') + self.ampMinLabel = QtGui.QLabel('Starting amplitude (pA)') + self.ampMinText = QtGui.QLineEdit('0') + self.ampMaxLabel = QtGui.QLabel('Maximum amplitude (pA)') + self.ampMaxText = QtGui.QLineEdit('100') + self.ampStepLabel = QtGui.QLabel('Amplitude steps (pA)') + self.ampStepText = QtGui.QLineEdit('10') + title = QtGui.QLabel('Current pulse') + layout = QtGui.QGridLayout() + layout.addWidget(title, 0, 0, 1, 2) + layout.addWidget(self.delayLabel, 1, 0, 1, 1) + layout.addWidget(self.delayText, 1, 1, 1, 1) + layout.addWidget(self.widthLabel, 2, 0, 1, 1) + layout.addWidget(self.widthText, 2, 1, 1, 1) + layout.addWidget(self.ampMinLabel, 3, 0, 1, 1) + layout.addWidget(self.ampMinText, 3, 1, 1, 1) + layout.addWidget(self.ampMaxLabel, 4, 0, 1, 1) + layout.addWidget(self.ampMaxText, 4, 1, 1, 1) + layout.addWidget(self.ampStepLabel, 5, 0, 1, 1) + layout.addWidget(self.ampStepText, 5, 1, 1, 1) + self.currentClampWidget.setLayout(layout) + return self.currentClampWidget + + def getCellMorphologyWidget(self): + try: + return self.cellMorphologyWidget + except AttributeError: + self.cellMorphologyWidget = NetworkXWidget() + return self.cellMorphologyWidget + + def displayCellMorphology(self, cellpath): + cell = moose.element(cellpath) + graph = cell_to_graph(cell) + self.getCellMorphologyWidget().displayGraph(graph) + + def createCell(self, name): + model_container = moose.Neutral('/model') + data_container = moose.Neutral('/data') + # moose.le(model_container) + # moose.le(data_container) + for ch in model_container.children: + moose.delete(ch) + for ch in data_container.children: + moose.delete(ch) + params = setup_current_step_model(model_container, + data_container, + name, + [[0, 0, 0], + [1e9, 0, 0]]) + # moose.le(model_container) + # moose.le(data_container) + params['modelRoot'] = model_container.path + params['dataRoot'] = data_container.path + return params + + def displaySelected(self): + cellnames = [str(c.text()) for c in self.cellListWidget.selectedItems()] + assert(len(cellnames) == 1) + name = cellnames[0] + # params = self.createCell(name) + # cell = params['cell'] + protopath = '/library/%s' % (name) + self.displayCellMorphology(protopath) + + def simulateSelected(self): + cellnames = [str(c.text()) for c in self.cellListWidget.selectedItems()] + assert(len(cellnames) == 1) + name = cellnames[0] + params = self.createCell(name) + # hsolve = moose.HSolve('%s/solver' % (params['cell'].path)) + # hsolve.dt = simdt + # hsolve.target = params['cell'].path + mutils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) + mutils.assignDefaultTicks(modelRoot=params['modelRoot'], + dataRoot=params['dataRoot'], + solver='hsolve') + delay = float(str(self.delayText.text())) * 1e-3 + width = float(str(self.widthText.text())) * 1e-3 + levelMin = float(str(self.ampMinText.text())) * 1e-12 + levelMax = float(str(self.ampMaxText.text())) * 1e-12 + levelStep = float(str(self.ampStepText.text())) * 1e-12 + params['stimulus'].delay[0] = delay + params['stimulus'].width[0] = width + params['stimulus'].level[0] = levelMin + simtime = float(str(self.simtimeEdit.text()))*1e-3 + tdlist = [] + self.vmAxes.clear() + self.vmAxes.set_title('membrane potential at soma') + self.vmAxes.set_ylabel('mV') + self.vmAxes.get_xaxis().set_visible(False) + self.stimAxes.clear() + self.stimAxes.set_title('current injected at soma') + self.stimAxes.set_ylabel('pA') + self.stimAxes.set_xlabel('ms') + styles = ['-', '--', '-.', ':'] + cnt = int((levelMax - levelMin)/levelStep) + ii = 0 + while params['stimulus'].level[0] < levelMax: + tstart = datetime.now() + moose.reinit() + moose.start(simtime) + tend = datetime.now() + td = tend - tstart + tdlist.append(td.days * 86400 + td.seconds + td.microseconds * 1e-6) + ts = np.linspace(0, simtime, len(params['somaVm'].vector)) + vm = params['somaVm'].vector + stim = params['injectionCurrent'].vector + alpha = 0.1 + 0.9 * params['stimulus'].level[0] / levelMax + color = cmap(ii*1.0/cnt, cnt) + self.vmAxes.plot(ts * 1e3, vm * 1e3, color=color, label='%g pA' % (params['stimulus'].level[0]*1e12), alpha=0.8) + self.stimAxes.plot(ts * 1e3, stim * 1e12, color=color, label='Current (pA)') + self.plotCanvas.draw() + params['stimulus'].level[0] += levelStep + ii += 1 + self.gs.tight_layout(self.plotFigure) + self.vmAxes.legend() + self.plotCanvas.draw() + td = np.mean(tdlist) + print('Simulating %g s took %g s of computer time' % (simtime, td)) + # self.plotFigure.tight_layout() + + def getPlotWidget(self): + try: + return self.plotWidget + except AttributeError: + self.plotWidget = QtGui.QWidget() + layout = QtGui.QVBoxLayout() + self.plotFigure = Figure() + self.plotCanvas = FigureCanvas(self.plotFigure) + self.nav = NavigationToolbar(self.plotCanvas, self) + self.gs = gridspec.GridSpec(3, 1) + self.vmAxes = self.plotFigure.add_subplot(self.gs[:-1]) + self.vmAxes.set_frame_on(False) + self.stimAxes = self.plotFigure.add_subplot(self.gs[-1], sharex=self.vmAxes) + self.stimAxes.set_frame_on(False) + self.gs.tight_layout(self.plotFigure) + layout.addWidget(self.plotCanvas) + layout.addWidget(self.nav) + self.plotWidget.setLayout(layout) + return self.plotWidget + + + +if __name__ == '__main__': + app = QtGui.QApplication([]) + win1 = HHChanView() + win = CellView() + win1.show() + win.show() + sys.exit(app.exec_()) + + +# +# gui.py ends here diff --git a/examples/traub_2005/py/kchans.py b/examples/traub_2005/py/kchans.py new file mode 100644 index 0000000..69f6386 --- /dev/null +++ b/examples/traub_2005/py/kchans.py @@ -0,0 +1,255 @@ +# kchans.py --- +# +# Filename: kchans.py +# Description: +# Author: subhasis ray +# Maintainer: +# Created: Fri Apr 17 23:58:49 2009 (+0530) +# Version: +# Last-Updated: Wed Dec 9 12:29:24 2015 (-0500) +# By: Subhasis Ray +# Update #: 1062 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# + +# Code: + +import moose +from channelbase import * +from numpy import where, linspace, exp, arange, ones, zeros, array +import numpy as np + + +class KChannel(ChannelBase): + """This is a dummy base class to keep type information.""" + annotation = {'cno': 'cno_0000047'} + abstract = True + Ek = -95e-3 + X = 0.0 + def __init__(self, path): + ChannelBase.__init__(self, path) + + +class KDR(KChannel): + """Delayed rectifier current + + `In hippocampal pyramidal neurons, however, it has been reported + have relatively slow activation, with a time to peak of some + 50-100 msec and even slower inactivation. Such a slow activation + would make it ill suited to participate in the repolarization of + the AP.... An equation that can describe IK(DR) in cortical + neurons is + + IK(DR) = m^3 * h * gbar_K(DR) * (Vm - EK) + + where m and h depend on voltage and time.` + - Johnston & Wu, Foundations of Cellular Neurophysiology (1995). + + But in Traub 2005, the equation used is: + + IK(DR) = m^4 * gbar_K(DR) * (Vm - EK) + """ + annotation = {'cno': 'cno_0000105'} + abstract = False + + Xpower = 4 + tau_x = where(v_array < -10e-3, \ + 1e-3 * (0.25 + 4.35 * exp((v_array + 10.0e-3) / 10.0e-3)), \ + 1e-3 * (0.25 + 4.35 * exp((- v_array - 10.0e-3) / 10.0e-3))) + inf_x = 1.0 / (1.0 + exp((- v_array - 29.5e-3) / 10e-3)) + + def __init__(self, path): + KChannel.__init__(self, path) + + +class KDR_FS(KDR): + """KDR for fast spiking neurons""" + annotation = {'cno': 'cno_0000105'} + abstract = False + + Ek = -100e-3 + inf_x = 1.0 / (1.0 + exp((- v_array - 27e-3) / 11.5e-3)) + tau_x = where(v_array < -10e-3, \ + 1e-3 * (0.25 + 4.35 * exp((v_array + 10.0e-3) / 10.0e-3)), \ + 1e-3 * (0.25 + 4.35 * exp((- v_array - 10.0e-3) / 10.0e-3))) + + def __init__(self, path): + KChannel.__init__(self, path) + + +class KA(KChannel): + """A type K+ channel""" + annotation = {'cno': 'cno_0000105'} + abstract = False + + Xpower = 4 + Ypower = 1 + inf_x = 1 / ( 1 + exp( ( - v_array - 60e-3 ) / 8.5e-3 ) ) + tau_x = 1e-3 * (0.185 + 0.5 / ( exp( ( v_array + 35.8e-3 ) / 19.7e-3 ) + exp( ( - v_array - 79.7e-3 ) / 12.7e-3 ) )) + inf_y = 1 / ( 1 + exp( ( v_array + 78e-3 ) / 6e-3 ) ) + tau_y = where( v_array <= -63e-3,\ + 1e-3 * 0.5 / ( exp( ( v_array + 46e-3 ) / 5e-3 ) + exp( ( - v_array - 238e-3 ) / 37.5e-3 ) ), \ + 9.5e-3) + + def __init__(self, path): + KChannel.__init__(self, path) + + +class KA_IB(KA): + """A type K+ channel for tufted intrinsically bursting cells - + multiplies tau_h of KA by 2.6""" + + annotation = {'cno': 'cno_0000105'} + abstract = False + + inf_y = 1 / ( 1 + exp( ( v_array + 78e-3 ) / 6e-3 ) ) + tau_y = 2.6 * KA.tau_y + + def __init__(self, path): + KChannel.__init__(self, path) + + +class K2(KChannel): + annotation = {'cno': 'cno_0000105'} + Xpower = 1 + Ypower = 1 + inf_x = 1 / ( 1 + exp( ( - v_array *1e3 - 10 ) / 17 ) ) + tau_x = 1e-3 * (4.95 + 0.5 / ( exp( ( v_array * 1e3 - 81 ) / 25.6 ) + exp( ( - v_array * 1e3 - 132 ) / 18 ) )) + inf_y = 1 / ( 1 + exp( ( v_array*1e3 + 58 ) / 10.6 ) ) + tau_y = 1e-3 * (60 + 0.5 / ( exp( ( v_array*1e3 - 1.33 ) / 200 ) + exp( ( - v_array*1e3 - 130 ) / 7.1 ) )) + + def __init__(self, path): + KChannel.__init__(self, path) + + +class KM(KChannel): + """Mascarinic sensitive K channel""" + annotation = {'cno': 'cno_0000105'} + abstract = False + Xpower = 1 + alpha_x = 1e3 * 0.02 / ( 1 + exp((-v_array - 20e-3 ) / 5e-3)) + beta_x = 1e3 * 0.01 * exp((-v_array - 43e-3) / 18e-3) + + def __init__(self, path): + KChannel.__init__(self, path) + + +class KCaChannel(KChannel): + """[Ca+2] dependent K+ channel base class.""" + annotation = {'cno': 'cno_0000047'} + abstract = True + Zpower = 1 + mstring = ('addmsg1', '../CaPool concOut . concen') + def __init__(self, path): + KChannel.__init__(self, path) + + +class KAHPBase(KCaChannel): + annotation = {'cno': 'cno_0000108'} + abstract = True + Z = 0.0 + + def __init__(self, path): + KCaChannel.__init__(self, path) + + +class KAHP(KAHPBase): + """AHP type K+ current""" + annotation = {'cno': 'cno_0000108'} + abstract = False + alpha_z = where(ca_conc < 100.0, 0.1 * ca_conc, 10.0) + beta_z = ones(ca_divs + 1) * 10.0 + + def __init__(self, path): + KAHPBase.__init__(self, path) + + +class KAHP_SLOWER(KAHPBase): + annotation = {'cno': 'cno_0000108'} + abstract = False + alpha_z = where(ca_conc < 500.0, 1e3 * ca_conc / 50000, 10.0) + beta_z = ones(ca_divs + 1) * 1.0 + + def __init__(self, path): + KAHPBase.__init__(self, path) + + +class KAHP_DP(KAHPBase): + """KAHP for deep pyramidal cell""" + annotation = {'cno': 'cno_0000108'} + abstract = False + alpha_z = where(ca_conc < 100.0, 1e-1 * ca_conc, 10.0) + beta_z = ones(ca_divs + 1) + + def __init__(self, path): + KAHPBase.__init__(self, path) + + +class KC(KCaChannel): + """C type K+ channel + """ + annotation = {'cno': 'cno_0000106'} + abstract = False + + Xpower = 1 + Zpower = 1 + tableA_z = where(ca_conc < 250.0, ca_conc / 250.0, 1.0) + tableB_z = ones(ca_divs + 1) + alpha_x = where(v_array < -10e-3, + 2e3 / 37.95 * ( exp( ( v_array * 1e3 + 50 ) / 11 - ( v_array * 1e3 + 53.5 ) / 27 ) ), + 2e3 * exp(( - v_array * 1e3 - 53.5) / 27)) + beta_x = where(v_array < -10e-3, + 2e3 * exp(( - v_array * 1e3 - 53.5) / 27 - alpha_x), + 0.0) + instant = 4 + + def __init__(self, path): + KCaChannel.__init__(self, path) + + +class KC_FAST(KC): + """Fast KC channel + """ + annotation = {'cno': 'cno_0000106'} + abstract = False + + alpha_x = KC.alpha_x * 2 + beta_x = KC.beta_x * 2 + + def __init__(self, path): + KC.__init__(self, path) + + +def initKChannelPrototypes(libpath='/library'): + channel_names = ['KDR', + 'KDR_FS', + 'KA', + 'KA_IB', + 'K2', + 'KM', + 'KAHP', + 'KAHP_SLOWER', + 'KAHP_DP', + 'KC', + 'KC_FAST'] + return dict([(key, eval('%s("%s")' % (key, prototypes[key].path))) for key in channel_names]) + + +# +# kchans.py ends here diff --git a/examples/traub_2005/py/nachans.py b/examples/traub_2005/py/nachans.py new file mode 100644 index 0000000..3eb8a58 --- /dev/null +++ b/examples/traub_2005/py/nachans.py @@ -0,0 +1,187 @@ +# nachans.py --- +# +# Filename: nachans.py +# Description: +# Author: subhasis ray +# Maintainer: +# Created: Fri Apr 17 23:58:13 2009 (+0530) +# Version: +# Last-Updated: Sat Dec 8 15:51:51 2012 (+0530) +# By: subha +# Update #: 402 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +from numpy import where, linspace, exp +#import pylab +import moose + +import config +from channelbase import * + +class NaChannel(ChannelBase): + """Dummy base class for all Na+ channels""" + annotation = {'cno': 'cno:cno_0000105'} + abstract = True + Ek = 50e-3 + def __init__(self, path): + ChannelBase.__init__(self, path) + + +class NaF(NaChannel): + """Fast Na channel. + """ + abstract = False + Xpower = 3 + Ypower = 1 + X = 0.0 + # Y = 0.54876953 + shift = -3.5e-3 + tau_x = where((v_array + shift) < -30e-3, \ + 1.0e-3 * (0.025 + 0.14 * exp((v_array + shift + 30.0e-3) / 10.0e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp(( - v_array - shift - 30.0e-3) / 10.0e-3))) + inf_x = 1.0 / (1.0 + exp(( - v_array - shift - 38e-3) / 10e-3)) + tau_y = 1.0e-3 * (0.15 + 1.15 / ( 1.0 + exp(( v_array + 37.0e-3) / 15.0e-3))) + inf_y = 1.0 / (1.0 + exp((v_array + 62.9e-3) / 10.7e-3)) + + def __init__(self, path, shift=-3.5e-3, Ek=50e-3): + NaChannel.__init__(self, path ) + + +class NaF_TCR(NaF): + """Fast Na+ channel for TCR cells. This is almost identical to + NaF, but there is a nasty voltage shift in the tables.""" + abstract = False + shift_x = -5.5e-3 + shift_y = -7e-3 + tau_y = 1.0e-3 * (0.15 + 1.15 / ( 1.0 + exp(( v_array + 37.0e-3) / 15.0e-3))) + inf_y = 1.0 / (1.0 + exp((v_array + shift_y + 62.9e-3) / 10.7e-3)) + tau_x = where((v_array + shift_x) < -30e-3, \ + 1.0e-3 * (0.025 + 0.14 * exp((v_array + shift_x + 30.0e-3) / 10.0e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp(( - v_array - shift_x - 30.0e-3) / 10.0e-3))) + inf_x = 1.0 / (1.0 + exp(( - v_array - shift_x - 38e-3) / 10e-3)) + + def __init__(self, path): + NaChannel.__init__(self, path) + + +class NaF2(NaF): + abstract = False + # shift=-2.5 for all cortical interneurons including spiny stellates + # In neuron cell templates fastNa_shift_naf2=-2.5 + shift = -2.5e-3 + tau_x = where((v_array + shift) < -30e-3, \ + 1.0e-3 * (0.0125 + 0.1525 * exp ((v_array + shift + 30e-3) / 10e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp((- v_array - shift - 30e-3) / 10e-3))) + inf_x = 1.0 / (1.0 + exp(( - v_array - shift - 38e-3) / 10e-3)) + tau_y = 1e-3 * (0.225 + 1.125 / ( 1 + exp( ( v_array + 37e-3 ) / 15e-3 ) )) + inf_y = 1.0 / (1.0 + exp((v_array + 58.3e-3) / 6.7e-3)) + + def __init__(self, path): + NaChannel.__init__(self, path) + +class NaF2_nRT(NaF2): + """This is a version of NaF2 without the fastNa_shift - applicable to nRT cell.""" + # for nRT cells, fastNa_shift_naf2 is not set in the cell + # template. In naf2.mod it is set to 0 in PARAMETERS section. + abstract = False + tau_x = where(v_array < -30e-3, \ + 1.0e-3 * (0.0125 + 0.1525 * exp ((v_array + 30e-3) / 10e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp((-v_array - 30e-3) / 10e-3))) + inf_x = 1.0 / (1.0 + exp(( - v_array - 38e-3) / 10e-3)) + tau_y = 1e-3 * (0.225 + 1.125 / ( 1 + exp( ( v_array + 37e-3 ) / 15e-3 ) )) + inf_y = 1.0 / (1.0 + exp((v_array + 58.3e-3) / 6.7e-3)) + def __init__(self, path): + NaF2.__init__(self, path) + + +class NaP(NaChannel): + abstract = False + Xpower = 1.0 + Ypower = 0.0 + tau_x = where(v_array < -40e-3, \ + 1.0e-3 * (0.025 + 0.14 * exp((v_array + 40e-3) / 10e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp((-v_array - 40e-3) / 10e-3))) + inf_x = 1.0 / (1.0 + exp((-v_array - 48e-3) / 10e-3)) + + def __init__(self, path, Ek=50e-3): + NaChannel.__init__(self, path) + + +class NaPF(NaChannel): + """Persistent Na+ current, fast""" + abstract = False + Xpower = 3 + tau_x = where(v_array < -30e-3, \ + 1.0e-3 * (0.025 + 0.14 * exp((v_array + 30.0e-3) / 10.0e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp((- v_array - 30.0e-3) / 10.0e-3))) + inf_x = 1.0 / (1.0 + exp((-v_array - 38e-3) / 10e-3)) + + def __init__(self, path): + NaChannel.__init__(self, path) + + +class NaPF_SS(NaPF): + abstract = False + shift = -2.5e-3 + v = v_array + shift + tau_x = where((v_array + shift) < -30e-3, \ + 1.0e-3 * (0.025 + 0.14 * exp(((v_array + shift) + 30.0e-3) / 10.0e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp((- (v_array + shift) - 30.0e-3) / 10.0e-3))) + inf_x = 1.0 / (1.0 + exp((- (v_array + shift) - 38e-3) / 10e-3)) + + def __init__(self, path): + NaChannel.__init__(self, path) + + +class NaPF_TCR(NaPF): + """Persistent Na+ channel specific to TCR cells. Only difference + with NaPF is power of m is 1 as opposed 3.""" + abstract = False + shift = 7e-3 + Xpower = 1 + tau_x = where((v_array + shift) < -30e-3, \ + 1.0e-3 * (0.025 + 0.14 * exp(((v_array + shift) + 30.0e-3) / 10.0e-3)), \ + 1.0e-3 * (0.02 + 0.145 * exp((- (v_array + shift) - 30.0e-3) / 10.0e-3))) + inf_x = 1.0 / (1.0 + exp((-(v_array + shift) - 38e-3) / 10e-3)) + def __init__(self, path): + NaChannel.__init__(self, path) + + +def initNaChannelPrototypes(): + channel_names = [ + 'NaF', + 'NaF2', + 'NaF2_nRT', + 'NaP', + 'NaPF', + 'NaPF_SS', + 'NaPF_TCR', + 'NaF_TCR', + ] + _proto = {} + for name in channel_names: + chanclass = eval(name) + _proto[name] = chanclass(prototypes[name]) + return _proto + + +# +# nachans.py ends here diff --git a/examples/traub_2005/py/proto/DeepAxoaxonic.levels b/examples/traub_2005/py/proto/DeepAxoaxonic.levels new file mode 100644 index 0000000..7b54de6 --- /dev/null +++ b/examples/traub_2005/py/proto/DeepAxoaxonic.levels @@ -0,0 +1,60 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 + diff --git a/examples/traub_2005/py/proto/DeepAxoaxonic.p b/examples/traub_2005/py/proto/DeepAxoaxonic.p new file mode 100644 index 0000000..14ec9ed --- /dev/null +++ b/examples/traub_2005/py/proto/DeepAxoaxonic.p @@ -0,0 +1,319 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to deepaxax cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.065 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/DeepBasket.levels b/examples/traub_2005/py/proto/DeepBasket.levels new file mode 100644 index 0000000..7b54de6 --- /dev/null +++ b/examples/traub_2005/py/proto/DeepBasket.levels @@ -0,0 +1,60 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 + diff --git a/examples/traub_2005/py/proto/DeepBasket.p b/examples/traub_2005/py/proto/DeepBasket.p new file mode 100644 index 0000000..6c2327f --- /dev/null +++ b/examples/traub_2005/py/proto/DeepBasket.p @@ -0,0 +1,319 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to deepbask cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.065 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/DeepLTS.levels b/examples/traub_2005/py/proto/DeepLTS.levels new file mode 100644 index 0000000..7b54de6 --- /dev/null +++ b/examples/traub_2005/py/proto/DeepLTS.levels @@ -0,0 +1,60 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 + diff --git a/examples/traub_2005/py/proto/DeepLTS.p b/examples/traub_2005/py/proto/DeepLTS.p new file mode 100644 index 0000000..25291e7 --- /dev/null +++ b/examples/traub_2005/py/proto/DeepLTS.p @@ -0,0 +1,319 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.065 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 diff --git a/examples/traub_2005/py/proto/NontuftedRS.depths b/examples/traub_2005/py/proto/NontuftedRS.depths new file mode 100644 index 0000000..5f10eb1 --- /dev/null +++ b/examples/traub_2005/py/proto/NontuftedRS.depths @@ -0,0 +1,14 @@ +1 2200e-6 +2 2245e-6 +3 2290e-6 +4 2335e-6 +5 2175e-6 +6 2125e-6 +7 2075e-6 +8 2025e-6 +9 1975e-6 +10 1925e-6 +11 1875e-6 +12 1825e-6 +13 1775e-6 +14 1725e-6 diff --git a/examples/traub_2005/py/proto/NontuftedRS.levels b/examples/traub_2005/py/proto/NontuftedRS.levels new file mode 100644 index 0000000..2ac4490 --- /dev/null +++ b/examples/traub_2005/py/proto/NontuftedRS.levels @@ -0,0 +1,52 @@ +1 1 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 3 +14 3 +15 3 +16 3 +17 3 +18 3 +19 3 +20 3 +21 3 +22 3 +23 3 +24 4 +25 4 +26 4 +27 4 +28 4 +29 4 +30 4 +31 4 +32 4 +33 4 +34 4 +35 5 +36 6 +37 7 +38 8 +39 9 +40 10 +41 11 +42 12 +43 13 +44 14 +45 0 +46 0 +47 0 +48 0 +49 0 +50 0 + + diff --git a/examples/traub_2005/py/proto/NontuftedRS.p b/examples/traub_2005/py/proto/NontuftedRS.p new file mode 100644 index 0000000..5e228c1 --- /dev/null +++ b/examples/traub_2005/py/proto/NontuftedRS.p @@ -0,0 +1,274 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to nontuftRS cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.07 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 5 +*set_compt_param CM 0.009 +*set_compt_param RA 2.5 +comp_1 none 20 0 0 16 AR 2.5 CaPool -1.29313e+15 CaL 2 CaT 1 K2 1 KA 1190 KAHP_DP 2 KC 150 KDR 1700 KM 42 NaF 2000 NaP 0.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_45 comp_1 25 0 0 1.8 K2 1 KA 40 KDR 4500 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_35 comp_1 50 0 0 3 AR 5 CaPool -1.37934e+16 CaL 4 CaT 2 K2 2 KA 2380 KAHP_DP 4 KC 300 KDR 2400 KM 84 NaF 3000 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_6 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_5 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_4 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_3 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_2 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_46 comp_45 50 0 0 1.4 K2 1 KA 40 KDR 4500 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_36 comp_35 50 0 0 2.8 AR 5 CaPool -1.47787e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_12 comp_35 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_7 comp_35 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_17 comp_6 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_16 comp_5 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_15 comp_4 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_14 comp_3 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_13 comp_2 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_49 comp_46 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_47 comp_46 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_11 comp_36 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_8 comp_36 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_37 comp_36 50 0 0 2.6 AR 5 CaPool -1.59155e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_23 comp_12 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_18 comp_7 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_28 comp_17 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_27 comp_16 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_26 comp_15 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_25 comp_14 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_24 comp_13 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_50 comp_49 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_48 comp_47 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 spike 0.0 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_22 comp_11 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_19 comp_8 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_10 comp_37 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_9 comp_37 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_38 comp_37 50 0 0 2.4 AR 5 CaPool -1.72418e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_34 comp_23 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_29 comp_18 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_33 comp_22 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_30 comp_19 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_21 comp_10 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_20 comp_9 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_39 comp_38 50 0 0 2.2 AR 5 CaPool -1.88092e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_32 comp_21 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_31 comp_20 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_40 comp_39 50 0 0 2 AR 5 CaPool -2.06901e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_41 comp_40 50 0 0 1.8 AR 5 CaPool -2.2989e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_42 comp_41 50 0 0 1.6 AR 5 CaPool -2.58627e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_43 comp_42 50 0 0 1.4 AR 5 CaPool -2.95573e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_44 comp_43 50 0 0 1.2 AR 5 CaPool -3.44836e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 diff --git a/examples/traub_2005/py/proto/SpinyStellate.levels b/examples/traub_2005/py/proto/SpinyStellate.levels new file mode 100644 index 0000000..1aec85f --- /dev/null +++ b/examples/traub_2005/py/proto/SpinyStellate.levels @@ -0,0 +1,59 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 diff --git a/examples/traub_2005/py/proto/SpinyStellate.p b/examples/traub_2005/py/proto/SpinyStellate.p new file mode 100644 index 0000000..8eaf08b --- /dev/null +++ b/examples/traub_2005/py/proto/SpinyStellate.p @@ -0,0 +1,319 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.065 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 5 +*set_compt_param CM 0.009 +*set_compt_param RA 2.5 +comp_1 none 20 0 0 15 AR 2.5 CaPool -2.75869e+16 CaL 5 CaT_A 1 K2 1 KA 300 KAHP_SLOWER 1 KC_FAST 100 KDR_FS 1000 KM 37.5 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 K2 1 KA 20 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_41 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_28 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_15 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_2 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 K2 1 KA 20 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_43 comp_41 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_42 comp_41 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_30 comp_28 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_29 comp_28 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_17 comp_15 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_16 comp_15 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_4 comp_2 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_3 comp_2 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_46 comp_43 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_45 comp_42 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_44 comp_42 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_33 comp_30 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_32 comp_29 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_31 comp_29 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_20 comp_17 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_19 comp_16 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_18 comp_16 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_7 comp_4 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_6 comp_3 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_5 comp_3 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_49 comp_46 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_48 comp_45 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_47 comp_44 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_36 comp_33 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_35 comp_32 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_34 comp_31 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_23 comp_20 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_22 comp_19 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_21 comp_18 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_10 comp_7 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_9 comp_6 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_8 comp_5 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_50 comp_47 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_37 comp_34 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_24 comp_21 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_11 comp_8 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_51 comp_50 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_38 comp_37 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_25 comp_24 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_12 comp_11 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_52 comp_51 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_39 comp_38 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_26 comp_25 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_13 comp_12 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_53 comp_52 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_40 comp_39 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_27 comp_26 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_14 comp_13 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 diff --git a/examples/traub_2005/py/proto/SupAxoaxonic.levels b/examples/traub_2005/py/proto/SupAxoaxonic.levels new file mode 100644 index 0000000..a6f29ca --- /dev/null +++ b/examples/traub_2005/py/proto/SupAxoaxonic.levels @@ -0,0 +1,59 @@ + 1 1 + 2 2 + 3 3 + 4 3 + 5 4 + 6 4 + 7 4 + 8 5 + 9 5 + 10 5 + 11 6 + 12 7 + 13 8 + 14 9 + 15 2 + 16 3 + 17 3 + 18 4 + 19 4 + 20 4 + 21 5 + 22 5 + 23 5 + 24 6 + 25 7 + 26 8 + 27 9 + 28 2 + 29 3 + 30 3 + 31 4 + 32 4 + 33 4 + 34 5 + 35 5 + 36 5 + 37 6 + 38 7 + 39 8 + 40 9 + 41 2 + 42 3 + 43 3 + 44 4 + 45 4 + 46 4 + 47 5 + 48 5 + 49 5 + 50 6 + 51 7 + 52 8 + 53 9 + 54 0 + 55 0 + 56 0 + 57 0 + 58 0 + 59 0 diff --git a/examples/traub_2005/py/proto/SupAxoaxonic.p b/examples/traub_2005/py/proto/SupAxoaxonic.p new file mode 100644 index 0000000..d86f0b4 --- /dev/null +++ b/examples/traub_2005/py/proto/SupAxoaxonic.p @@ -0,0 +1,303 @@ +*relative + +*cartesian + +*asymmetric + +*set_global EREST_ACT -0.065 + +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/SupBasket.levels b/examples/traub_2005/py/proto/SupBasket.levels new file mode 100644 index 0000000..7b54de6 --- /dev/null +++ b/examples/traub_2005/py/proto/SupBasket.levels @@ -0,0 +1,60 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 + diff --git a/examples/traub_2005/py/proto/SupBasket.p b/examples/traub_2005/py/proto/SupBasket.p new file mode 100644 index 0000000..a8c1097 --- /dev/null +++ b/examples/traub_2005/py/proto/SupBasket.p @@ -0,0 +1,301 @@ +*relative + +*cartesian + +*asymmetric +*set_global EREST_ACT -0.065 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/SupLTS.levels b/examples/traub_2005/py/proto/SupLTS.levels new file mode 100644 index 0000000..7b54de6 --- /dev/null +++ b/examples/traub_2005/py/proto/SupLTS.levels @@ -0,0 +1,60 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 + diff --git a/examples/traub_2005/py/proto/SupLTS.p b/examples/traub_2005/py/proto/SupLTS.p new file mode 100644 index 0000000..403d22d --- /dev/null +++ b/examples/traub_2005/py/proto/SupLTS.p @@ -0,0 +1,319 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to supLTS cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.065 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.4 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.2 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 +*set_compt_param ELEAK -0.065 +*set_compt_param RM 2.5 +*set_compt_param CM 0.01 +*set_compt_param RA 2 +comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 diff --git a/examples/traub_2005/py/proto/SupPyrFRB.depths b/examples/traub_2005/py/proto/SupPyrFRB.depths new file mode 100644 index 0000000..c22ed85 --- /dev/null +++ b/examples/traub_2005/py/proto/SupPyrFRB.depths @@ -0,0 +1,12 @@ +1 850e-6 +2 885e-6 +3 920e-6 +4 955e-6 +5 825e-6 +6 775e-6 +7 725e-6 +8 690e-6 +9 655e-6 +10 620e-6 +11 585e-6 +12 550e-6 diff --git a/examples/traub_2005/py/proto/SupPyrFRB.levels b/examples/traub_2005/py/proto/SupPyrFRB.levels new file mode 100644 index 0000000..e1b710c --- /dev/null +++ b/examples/traub_2005/py/proto/SupPyrFRB.levels @@ -0,0 +1,74 @@ +1 1 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 2 +14 3 +15 3 +16 3 +17 3 +18 3 +19 3 +20 3 +21 3 +22 3 +23 3 +24 3 +25 3 +26 4 +27 4 +28 4 +29 4 +30 4 +31 4 +32 4 +33 4 +34 4 +35 4 +36 4 +37 4 +38 5 +39 6 +40 7 +41 8 +42 8 +43 9 +44 9 +45 10 +46 10 +47 10 +48 10 +49 10 +50 10 +51 10 +52 10 +53 11 +54 11 +55 11 +56 11 +57 11 +58 11 +59 11 +60 11 +61 12 +62 12 +63 12 +64 12 +65 12 +66 12 +67 12 +68 12 +69 0 +70 0 +71 0 +72 0 +73 0 +74 0 diff --git a/examples/traub_2005/py/proto/SupPyrFRB.p b/examples/traub_2005/py/proto/SupPyrFRB.p new file mode 100644 index 0000000..f97f1b2 --- /dev/null +++ b/examples/traub_2005/py/proto/SupPyrFRB.p @@ -0,0 +1,378 @@ +*relative + +*cartesian + +*asymmetric + +*set_global EREST_ACT -70e-3 + +*set_compt_param ELEAK -0.07 +*set_compt_param RM 5 +*set_compt_param CM 0.009 +*set_compt_param RA 2.5 +comp_1 none 15 0 0 16 AR 2.5 CaPool -3.44836e+15 CaL 10 CaT 1 K2 1 KA 300 KAHP 1 KC 45 KDR 1250 KM 75 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_69 comp_1 25 0 0 1.8 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_38 comp_1 50 0 0 8 AR 5 CaPool -4.13803e+15 CaL 20 CaT 2 K2 2 KA 600 KAHP 2 KC 90 KDR 2500 KM 150 NaF 2500 NaP 6.4 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_9 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_8 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_7 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_6 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_5 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_4 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_3 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_2 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_70 comp_69 50 0 0 1.4 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_39 comp_38 50 0 0 7.2 AR 5 CaPool -4.59781e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_13 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_12 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_11 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_10 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_21 comp_9 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_20 comp_8 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_19 comp_7 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_18 comp_6 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_17 comp_5 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_16 comp_4 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_15 comp_3 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_14 comp_2 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_73 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_71 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_40 comp_39 50 0 0 6.4 AR 5 CaPool -5.17254e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_25 comp_13 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_24 comp_12 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_23 comp_11 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_22 comp_10 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_33 comp_21 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_32 comp_20 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_31 comp_19 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_30 comp_18 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_29 comp_17 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_28 comp_16 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_27 comp_15 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_26 comp_14 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_74 comp_73 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_72 comp_71 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 spike 0.0 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_42 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_41 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_37 comp_25 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_36 comp_24 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_35 comp_23 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_34 comp_22 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_44 comp_42 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_43 comp_41 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_52 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_51 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_50 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_49 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_48 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_47 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_46 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_45 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_60 comp_52 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_59 comp_51 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_58 comp_50 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_57 comp_49 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_56 comp_48 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_55 comp_47 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_54 comp_46 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_53 comp_45 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_68 comp_60 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_67 comp_59 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_66 comp_58 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_65 comp_57 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_64 comp_56 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_63 comp_55 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_62 comp_54 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_61 comp_53 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 diff --git a/examples/traub_2005/py/proto/SupPyrRS.depths b/examples/traub_2005/py/proto/SupPyrRS.depths new file mode 100644 index 0000000..c22ed85 --- /dev/null +++ b/examples/traub_2005/py/proto/SupPyrRS.depths @@ -0,0 +1,12 @@ +1 850e-6 +2 885e-6 +3 920e-6 +4 955e-6 +5 825e-6 +6 775e-6 +7 725e-6 +8 690e-6 +9 655e-6 +10 620e-6 +11 585e-6 +12 550e-6 diff --git a/examples/traub_2005/py/proto/SupPyrRS.levels b/examples/traub_2005/py/proto/SupPyrRS.levels new file mode 100644 index 0000000..e1b710c --- /dev/null +++ b/examples/traub_2005/py/proto/SupPyrRS.levels @@ -0,0 +1,74 @@ +1 1 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 2 +14 3 +15 3 +16 3 +17 3 +18 3 +19 3 +20 3 +21 3 +22 3 +23 3 +24 3 +25 3 +26 4 +27 4 +28 4 +29 4 +30 4 +31 4 +32 4 +33 4 +34 4 +35 4 +36 4 +37 4 +38 5 +39 6 +40 7 +41 8 +42 8 +43 9 +44 9 +45 10 +46 10 +47 10 +48 10 +49 10 +50 10 +51 10 +52 10 +53 11 +54 11 +55 11 +56 11 +57 11 +58 11 +59 11 +60 11 +61 12 +62 12 +63 12 +64 12 +65 12 +66 12 +67 12 +68 12 +69 0 +70 0 +71 0 +72 0 +73 0 +74 0 diff --git a/examples/traub_2005/py/proto/SupPyrRS.p b/examples/traub_2005/py/proto/SupPyrRS.p new file mode 100644 index 0000000..a3491fd --- /dev/null +++ b/examples/traub_2005/py/proto/SupPyrRS.p @@ -0,0 +1,394 @@ +// +// This code was generated from a NEURON model using stub hoc code +// by Subhasis Ray, NCBS, Bangalore. +// It corresponds to suppyrRS cell in the model by Traub, et al. 2005 +// Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// Single-column thalamocortical network model exhibiting +// gamma oscillations, sleep spindles, and epileptogenic bursts. +// J. Neurophysiol. 93, 2194-2232, 2005 +// Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.07 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 5 +*set_compt_param CM 0.009 +*set_compt_param RA 2.5 +comp_1 none 15 0 0 16 AR 2.5 CaPool -3.44836e+15 CaL 10 CaT 1 K2 1 KA 300 KAHP 0.4 KC 120 KDR 1250 KM 75 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_69 comp_1 25 0 0 1.8 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_38 comp_1 50 0 0 8 AR 5 CaPool -4.13803e+15 CaL 20 CaT 2 K2 2 KA 600 KAHP 0.8 KC 240 KDR 2500 KM 150 NaF 2500 NaP 1.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_9 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_8 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_7 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_6 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_5 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_4 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_3 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_2 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_70 comp_69 50 0 0 1.4 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_39 comp_38 50 0 0 7.2 AR 5 CaPool -4.59781e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_13 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_12 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_11 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_10 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_21 comp_9 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_20 comp_8 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_19 comp_7 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_18 comp_6 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_17 comp_5 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_16 comp_4 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_15 comp_3 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_14 comp_2 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_73 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_71 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_40 comp_39 50 0 0 6.4 AR 5 CaPool -5.17254e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_25 comp_13 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_24 comp_12 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_23 comp_11 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_22 comp_10 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_33 comp_21 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_32 comp_20 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_31 comp_19 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_30 comp_18 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_29 comp_17 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_28 comp_16 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_27 comp_15 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_26 comp_14 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_74 comp_73 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_72 comp_71 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 spike 0.0 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_42 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_41 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_37 comp_25 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_36 comp_24 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_35 comp_23 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_34 comp_22 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_44 comp_42 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_43 comp_41 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_52 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_51 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_50 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_49 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_48 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_47 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_46 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_45 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_60 comp_52 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_59 comp_51 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_58 comp_50 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_57 comp_49 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_56 comp_48 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_55 comp_47 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_54 comp_46 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_53 comp_45 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_68 comp_60 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_67 comp_59 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_66 comp_58 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_65 comp_57 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_64 comp_56 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_63 comp_55 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_62 comp_54 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_61 comp_53 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 diff --git a/examples/traub_2005/py/proto/TCR.levels b/examples/traub_2005/py/proto/TCR.levels new file mode 100644 index 0000000..83725c4 --- /dev/null +++ b/examples/traub_2005/py/proto/TCR.levels @@ -0,0 +1,138 @@ +1 1 +2 2 +3 3 +4 3 +5 3 +6 4 +7 4 +8 4 +9 4 +10 4 +11 4 +12 4 +13 4 +14 4 +15 2 +16 3 +17 3 +18 3 +19 4 +20 4 +21 4 +22 4 +23 4 +24 4 +25 4 +26 4 +27 4 +28 2 +29 3 +30 3 +31 3 +32 4 +33 4 +34 4 +35 4 +36 4 +37 4 +38 4 +39 4 +40 4 +41 2 +42 3 +43 3 +44 3 +45 4 +46 4 +47 4 +48 4 +49 4 +50 4 +51 4 +52 4 +53 4 +54 2 +55 3 +56 3 +57 3 +58 4 +59 4 +60 4 +61 4 +62 4 +63 4 +64 4 +65 4 +66 4 +67 2 +68 3 +69 3 +70 3 +71 4 +72 4 +73 4 +74 4 +75 4 +76 4 +77 4 +78 4 +79 4 +80 2 +81 3 +82 3 +83 3 +84 4 +85 4 +86 4 +87 4 +88 4 +89 4 +90 4 +91 4 +92 4 +93 2 +94 3 +95 3 +96 3 +97 4 +98 4 +99 4 +100 4 +101 4 +102 4 +103 4 +104 4 +105 4 +106 2 +107 3 +108 3 +109 3 +110 4 +111 4 +112 4 +113 4 +114 4 +115 4 +116 4 +117 4 +118 4 +119 2 +120 3 +121 3 +122 3 +123 4 +124 4 +125 4 +126 4 +127 4 +128 4 +129 4 +130 4 +131 4 +132 0 +133 0 +134 0 +135 0 +136 0 +137 0 + diff --git a/examples/traub_2005/py/proto/TCR.p b/examples/traub_2005/py/proto/TCR.p new file mode 100644 index 0000000..2b672ee --- /dev/null +++ b/examples/traub_2005/py/proto/TCR.p @@ -0,0 +1,709 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.07 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_1 none 42 0 0 20 AR 2.5 CaPool -1.97049e+15 CaL 5 CaT 5 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 337.5 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_132 comp_1 50 0 0 1.6 K2 5 KA 10 KDR 1800 NaF_TCR 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_119 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_106 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_93 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_80 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_67 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_54 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_41 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_28 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_15 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_2 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_133 comp_132 50 0 0 1.4 K2 5 KA 10 KDR 1800 NaF_TCR 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_122 comp_119 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_121 comp_119 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_120 comp_119 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_109 comp_106 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_108 comp_106 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_107 comp_106 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_96 comp_93 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_95 comp_93 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_94 comp_93 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_83 comp_80 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_82 comp_80 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_81 comp_80 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_70 comp_67 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_69 comp_67 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_68 comp_67 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_57 comp_54 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_56 comp_54 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_55 comp_54 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_44 comp_41 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_43 comp_41 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_42 comp_41 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_31 comp_28 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_30 comp_28 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_29 comp_28 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_18 comp_15 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_17 comp_15 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_16 comp_15 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_5 comp_2 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_4 comp_2 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_3 comp_2 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_136 comp_133 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_134 comp_133 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_131 comp_122 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_130 comp_122 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_129 comp_122 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_128 comp_121 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_127 comp_121 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_126 comp_121 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_125 comp_120 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_124 comp_120 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_123 comp_120 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_118 comp_109 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_117 comp_109 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_116 comp_109 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_115 comp_108 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_114 comp_108 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_113 comp_108 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_112 comp_107 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_111 comp_107 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_110 comp_107 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_105 comp_96 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_104 comp_96 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_103 comp_96 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_102 comp_95 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_101 comp_95 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_100 comp_95 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_99 comp_94 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_98 comp_94 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_97 comp_94 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_92 comp_83 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_91 comp_83 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_90 comp_83 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_89 comp_82 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_88 comp_82 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_87 comp_82 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_86 comp_81 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_85 comp_81 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_84 comp_81 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_79 comp_70 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_78 comp_70 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_77 comp_70 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_76 comp_69 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_75 comp_69 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_74 comp_69 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_73 comp_68 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_72 comp_68 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_71 comp_68 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_66 comp_57 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_65 comp_57 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_64 comp_57 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_63 comp_56 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_62 comp_56 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_61 comp_56 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_60 comp_55 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_59 comp_55 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_58 comp_55 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_53 comp_44 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_52 comp_44 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_51 comp_44 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_50 comp_43 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_49 comp_43 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_48 comp_43 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_47 comp_42 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_46 comp_42 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_45 comp_42 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_40 comp_31 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_39 comp_31 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_38 comp_31 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_37 comp_30 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_36 comp_30 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_35 comp_30 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_34 comp_29 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_33 comp_29 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_32 comp_29 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_27 comp_18 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_26 comp_18 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_25 comp_18 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_24 comp_17 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_23 comp_17 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_22 comp_17 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_21 comp_16 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_20 comp_16 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_19 comp_16 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_14 comp_5 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_13 comp_5 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_12 comp_5 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_11 comp_4 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_10 comp_4 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_9 comp_4 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_8 comp_3 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_7 comp_3 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.64 +*set_compt_param CM 0.009 +*set_compt_param RA 1.75 +comp_6 comp_3 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_137 comp_136 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_135 comp_134 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 spike 0.0 diff --git a/examples/traub_2005/py/proto/TuftedIB.levels b/examples/traub_2005/py/proto/TuftedIB.levels new file mode 100644 index 0000000..4777aa4 --- /dev/null +++ b/examples/traub_2005/py/proto/TuftedIB.levels @@ -0,0 +1,62 @@ +1 1 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 3 +14 3 +15 3 +16 3 +17 3 +18 3 +19 3 +20 3 +21 3 +22 3 +23 3 +24 4 +25 4 +26 4 +27 4 +28 4 +29 4 +30 4 +31 4 +32 4 +33 4 +34 4 +35 5 +36 6 +37 7 +38 8 +39 9 +40 10 +41 11 +42 12 +43 13 +44 14 +45 15 +46 16 +47 17 +48 18 +49 18 +50 18 +51 18 +52 18 +53 18 +54 18 +55 18 +56 0 +57 0 +58 0 +59 0 +60 0 +61 0 + diff --git a/examples/traub_2005/py/proto/TuftedIB.p b/examples/traub_2005/py/proto/TuftedIB.p new file mode 100644 index 0000000..233a9dd --- /dev/null +++ b/examples/traub_2005/py/proto/TuftedIB.p @@ -0,0 +1,330 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to tuftIB cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ + +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.07 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 5 +*set_compt_param CM 0.009 +*set_compt_param RA 2.5 +comp_1 none 25 0 0 18 AR 1 CaPool -3.06521e+14 CaL 40 CaT 1 K2 5 KA_IB 200 KAHP_DP 2 KC 160 KDR 1700 KM 119 NaF 2000 NaP 1.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_56 comp_1 25 0 0 1.8 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_35 comp_1 75 0 0 4 AR 2 CaPool -9.19562e+15 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 2400 KM 380.8 NaF 3000 NaP 2.4 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_6 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_5 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_4 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_3 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_2 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1.4 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_36 comp_35 75 0 0 3.8 AR 2 CaPool -9.6796e+15 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_12 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_7 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_17 comp_6 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_16 comp_5 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_15 comp_4 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_14 comp_3 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_13 comp_2 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_59 comp_57 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_58 comp_57 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_11 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_8 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_37 comp_36 75 0 0 3.6 AR 2 CaPool -1.02174e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_23 comp_12 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_18 comp_7 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_28 comp_17 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_27 comp_16 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_26 comp_15 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_25 comp_14 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_24 comp_13 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_61 comp_59 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_60 comp_58 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 spike 0.0 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_22 comp_11 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_19 comp_8 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_10 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_9 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_38 comp_37 75 0 0 3.4 AR 2 CaPool -1.08184e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_34 comp_23 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_29 comp_18 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_33 comp_22 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_30 comp_19 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_21 comp_10 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_20 comp_9 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_39 comp_38 75 0 0 3.2 AR 2 CaPool -1.14945e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_32 comp_21 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_31 comp_20 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_40 comp_39 75 0 0 3 AR 2 CaPool -1.22608e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_41 comp_40 75 0 0 2.8 AR 2 CaPool -1.31366e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_42 comp_41 75 0 0 2.6 AR 2 CaPool -1.41471e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_43 comp_42 75 0 0 2.4 AR 2 CaPool -1.5326e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_44 comp_43 75 0 0 2 AR 2 CaPool -1.83912e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_45 comp_44 75 0 0 1.6 AR 2 CaPool -2.2989e+16 CaL 20 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_46 comp_45 75 0 0 1.4 AR 2 CaPool -2.62732e+16 CaL 20 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_47 comp_46 75 0 0 1.2 AR 2 CaPool -3.06521e+16 CaL 20 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_49 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 54 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_48 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 54 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_51 comp_49 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_50 comp_48 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_53 comp_51 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_52 comp_50 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_55 comp_53 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_54 comp_52 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 diff --git a/examples/traub_2005/py/proto/TuftedRS.levels b/examples/traub_2005/py/proto/TuftedRS.levels new file mode 100644 index 0000000..4777aa4 --- /dev/null +++ b/examples/traub_2005/py/proto/TuftedRS.levels @@ -0,0 +1,62 @@ +1 1 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 3 +14 3 +15 3 +16 3 +17 3 +18 3 +19 3 +20 3 +21 3 +22 3 +23 3 +24 4 +25 4 +26 4 +27 4 +28 4 +29 4 +30 4 +31 4 +32 4 +33 4 +34 4 +35 5 +36 6 +37 7 +38 8 +39 9 +40 10 +41 11 +42 12 +43 13 +44 14 +45 15 +46 16 +47 17 +48 18 +49 18 +50 18 +51 18 +52 18 +53 18 +54 18 +55 18 +56 0 +57 0 +58 0 +59 0 +60 0 +61 0 + diff --git a/examples/traub_2005/py/proto/TuftedRS.p b/examples/traub_2005/py/proto/TuftedRS.p new file mode 100644 index 0000000..f4984f1 --- /dev/null +++ b/examples/traub_2005/py/proto/TuftedRS.p @@ -0,0 +1,329 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to tuftRS cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting +// * gamma oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// ***********************************************************************/ +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.07 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 5 +*set_compt_param CM 0.009 +*set_compt_param RA 2.5 +comp_1 none 25 0 0 18 AR 1 CaPool -3.06521e+14 CaL 16 CaT 1 K2 5 KA 200 KAHP_DP 2 KC 288 KDR 1700 KM 85 NaF 2000 NaP 1.6 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_56 comp_1 25 0 0 1.8 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_35 comp_1 75 0 0 4 AR 2 CaPool -9.19562e+15 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 2400 KM 272 NaF 3000 NaP 2.4 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_6 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_5 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_4 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_3 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_2 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1.4 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_36 comp_35 75 0 0 3.8 AR 2 CaPool -9.6796e+15 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_12 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_7 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_17 comp_6 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_16 comp_5 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_15 comp_4 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_14 comp_3 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_13 comp_2 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_59 comp_57 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_58 comp_57 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_11 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_8 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_37 comp_36 75 0 0 3.6 AR 2 CaPool -1.02174e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_23 comp_12 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_18 comp_7 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_28 comp_17 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_27 comp_16 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_26 comp_15 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_25 comp_14 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_24 comp_13 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_61 comp_59 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 0.1 +*set_compt_param CM 0.009 +*set_compt_param RA 1 +comp_60 comp_58 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 spike 0.0 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_22 comp_11 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_19 comp_8 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_10 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_9 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_38 comp_37 75 0 0 3.4 AR 2 CaPool -1.08184e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_34 comp_23 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_29 comp_18 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_33 comp_22 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_30 comp_19 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_21 comp_10 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_20 comp_9 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_39 comp_38 75 0 0 3.2 AR 2 CaPool -1.14945e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_32 comp_21 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_31 comp_20 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_40 comp_39 75 0 0 3 AR 2 CaPool -1.22608e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_41 comp_40 75 0 0 2.8 AR 2 CaPool -1.31366e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_42 comp_41 75 0 0 2.6 AR 2 CaPool -1.41471e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_43 comp_42 75 0 0 2.4 AR 2 CaPool -1.5326e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_44 comp_43 75 0 0 2 AR 2 CaPool -1.83912e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_45 comp_44 75 0 0 1.6 AR 2 CaPool -2.2989e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_46 comp_45 75 0 0 1.4 AR 2 CaPool -2.62732e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_47 comp_46 75 0 0 1.2 AR 2 CaPool -3.06521e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_49 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 21.6 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_48 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 21.6 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_51 comp_49 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_50 comp_48 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_53 comp_51 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_52 comp_50 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_55 comp_53 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 +*set_compt_param ELEAK -0.07 +*set_compt_param RM 2.5 +*set_compt_param CM 0.018 +*set_compt_param RA 2.5 +comp_54 comp_52 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 diff --git a/examples/traub_2005/py/proto/nRT.levels b/examples/traub_2005/py/proto/nRT.levels new file mode 100644 index 0000000..7b54de6 --- /dev/null +++ b/examples/traub_2005/py/proto/nRT.levels @@ -0,0 +1,60 @@ +1 1 +2 2 +3 3 +4 3 +5 4 +6 4 +7 4 +8 5 +9 5 +10 5 +11 6 +12 7 +13 8 +14 9 +15 2 +16 3 +17 3 +18 4 +19 4 +20 4 +21 5 +22 5 +23 5 +24 6 +25 7 +26 8 +27 9 +28 2 +29 3 +30 3 +31 4 +32 4 +33 4 +34 5 +35 5 +36 5 +37 6 +38 7 +39 8 +40 9 +41 2 +42 3 +43 3 +44 4 +45 4 +46 4 +47 5 +48 5 +49 5 +50 6 +51 7 +52 8 +53 9 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 + diff --git a/examples/traub_2005/py/proto/nRT.p b/examples/traub_2005/py/proto/nRT.p new file mode 100644 index 0000000..223be4b --- /dev/null +++ b/examples/traub_2005/py/proto/nRT.p @@ -0,0 +1,324 @@ +///*********************************************************************** +// * This code was generated from a NEURON model using stub hoc code +// * by Subhasis Ray, NCBS, Bangalore. +// * It corresponds to nRT cell in the model by Traub, et al. 2005 +// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 +// +// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and +// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in +// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance +// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 +// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract +// +// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, +// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, +// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +// * Single-column thalamocortical network model exhibiting gamma +// * oscillations, sleep spindles, and epileptogenic bursts. +// * J. Neurophysiol. 93, 2194-2232, 2005 Pubmed: +// * http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract +// * **********************************************************************/ + +// 2010-04-12 11:39:27 (+0530) CaT_A renamed to CaT to conform with +// addmsg1 field in CaPool +// 2010-05-07 12:16:11 (+0530) reverted it back to CaT_A to avoid copying CaT from library. CaT does not influence CaPool after all. It was CaL. +*cartesian +*relative +*asymmetric +*set_global EREST_ACT -0.075 + +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_1 none 30 0 0 18.68 AR 0.25 CaPool -5.90725e+14 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_54 comp_1 50 0 0 1.6 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_41 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_28 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_15 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_2 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_55 comp_54 50 0 0 1.4 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_43 comp_41 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_42 comp_41 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_30 comp_28 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_29 comp_28 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_17 comp_15 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_16 comp_15 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_4 comp_2 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_3 comp_2 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_58 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_56 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_46 comp_43 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_45 comp_42 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_44 comp_42 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_33 comp_30 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_32 comp_29 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_31 comp_29 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_20 comp_17 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_19 comp_16 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_18 comp_16 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_7 comp_4 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_6 comp_3 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_5 comp_3 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_59 comp_58 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 spike 0.0 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 0.1 +*set_compt_param CM 0.01 +*set_compt_param RA 1 +comp_57 comp_56 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_49 comp_46 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_48 comp_45 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_47 comp_44 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_36 comp_33 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_35 comp_32 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_34 comp_31 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_23 comp_20 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_22 comp_19 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_21 comp_18 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_10 comp_7 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_9 comp_6 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_8 comp_5 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_50 comp_47 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_37 comp_34 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_24 comp_21 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_11 comp_8 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_51 comp_50 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_38 comp_37 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_25 comp_24 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_12 comp_11 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_52 comp_51 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_39 comp_38 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_26 comp_25 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_13 comp_12 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_53 comp_52 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_40 comp_39 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_27 comp_26 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 +*set_compt_param ELEAK -0.075 +*set_compt_param RM 2 +*set_compt_param CM 0.01 +*set_compt_param RA 2.5 +comp_14 comp_13 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 diff --git a/examples/traub_2005/py/settings.py b/examples/traub_2005/py/settings.py new file mode 100644 index 0000000..d13b161 --- /dev/null +++ b/examples/traub_2005/py/settings.py @@ -0,0 +1,100 @@ +# settings.py --- +# +# Filename: settings.py +# Description: +# Author: +# Maintainer: +# Created: Wed May 23 12:04:34 2012 (+0530) +# Version: +# Last-Updated: Thu May 24 15:18:06 2012 (+0530) +# By: subha +# Update #: 167 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: +import exceptions + +class ReinitializationWarning(exceptions.Warning): + def __init__(self, *args, **kwargs): + exceptions.Warning.__init__(self, *args, **kwargs) + + +class Settings(object): + pass + + +class SimulationSettings(Settings): + """Class for storing simulation settings. + + initialTime: initial value of simulation time (default 0) + + endTime: end of simulation time. + + simulationDt: integration time step for the main simulation. + + outputDt: time interval between recording output points. + + method: what algorithm to use. + + """ + def __init__(self): + self.initialTime = 0.0 + self.endTime = 1.0 + self.simulationDt = 25e-6 + self.outputDt = 0.25e-3 + self.method = 'ee' + self.moose_seed = 0 + + +class ModelSettings(Settings): + """Class for storing model settings.""" + def __init__(self): + self.container = '/' + self.libpath = '/library' + self.protodir = 'proto' + self.populationSize = {} + self.numpy_seed = None + + +class DataSettings(Settings): + """Settings for specifying data to be recorded. + + + targets: path to objects to record from, fraction to record from). + + fractions: list of single number for fraction of targets to record from when each target is a wild card + + fields: (field-name, dtype) dict for recording + dtype is `Event` or `AnalogSignal` as per neo library. + + """ + def __init__(self): + self.random = True + self.fractions = [] + self.targets = [] + self.fields = {} + + +class ChangeSettings(Settings): + def __init__(self): + self.changes = [] + + +# +# settings.py ends here diff --git a/examples/traub_2005/py/test_archan.py b/examples/traub_2005/py/test_archan.py new file mode 100644 index 0000000..56719ed --- /dev/null +++ b/examples/traub_2005/py/test_archan.py @@ -0,0 +1,63 @@ +# test_archan.py --- +# +# Filename: test_archan.py +# Description: +# Author: +# Maintainer: +# Created: Sat Jun 2 11:05:22 2012 (+0530) +# Version: +# Last-Updated: Sat Jun 2 11:06:52 2012 (+0530) +# By: subha +# Update #: 5 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: + + +import numpy as np +import testutils +from testutils import * +from archan import * +from channel_test_util import compare_channel_data, run_single_channel, ChannelTestBase + +simtime = 350e-3 +simdt = testutils.SIMDT +plotdt = testutils.PLOTDT + +class TestAR(ChannelTestBase): + channelname = 'AR' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testAR_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testAR_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + +if __name__ == '__main__': + unittest.main() + +# +# test_archan.py ends here diff --git a/examples/traub_2005/py/test_cachans.py b/examples/traub_2005/py/test_cachans.py new file mode 100644 index 0000000..8da8d25 --- /dev/null +++ b/examples/traub_2005/py/test_cachans.py @@ -0,0 +1,102 @@ +# test_cachans.py --- +# +# Filename: test_cachans.py +# Description: +# Author: +# Maintainer: +# Created: Sat Jun 2 11:07:05 2012 (+0530) +# Version: +# Last-Updated: Sat Jun 2 15:27:15 2012 (+0530) +# By: subha +# Update #: 9 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import numpy as np +import testutils +from testutils import * +from cachans import * +from channel_test_util import ChannelTestBase, run_single_channel, compare_channel_data + +simtime = 350e-3 +simdt = testutils.SIMDT +plotdt = testutils.PLOTDT + +class TestCaL(ChannelTestBase): + channelname = 'CaL' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testCAL_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testCAL_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestCaT(ChannelTestBase): + channelname = 'CaT' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testCaT_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testCaT_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestCaT_A(ChannelTestBase): + channelname = 'CaT_A' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testCaT_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testCaT_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + + +if __name__ == '__main__': + unittest.main() + + +# +# test_cachans.py ends here diff --git a/examples/traub_2005/py/test_capool.py b/examples/traub_2005/py/test_capool.py new file mode 100644 index 0000000..eee8ce6 --- /dev/null +++ b/examples/traub_2005/py/test_capool.py @@ -0,0 +1,129 @@ +# test_capool.py --- +# +# Filename: test_capool.py +# Description: +# Author: +# Maintainer: +# Created: Sun Jun 3 20:31:03 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:27:45 2016 (-0400) +# By: subha +# Update #: 70 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: +from __future__ import print_function + +import uuid +import numpy as np +import testutils +from testutils import * +from cachans import * +from capool import * +from channel_test_util import compare_channel_data, run_single_channel, ChannelTestBase + + +simtime = 350e-3 +simdt = testutils.SIMDT +plotdt = testutils.PLOTDT + + +def run_capool(poolname, Gbar, simtime): + testId = uuid.uuid4().int + container = moose.Neutral('test%d' % (testId)) + model = moose.Neutral('%s/model' % (container.path)) + data = moose.Neutral('%s/data' % (container.path)) + params = setup_single_compartment( + model, data, + channelbase.prototypes['CaL'], + Gbar) + channelname = 'CaL' + capool = moose.copy(CaPool.prototype, params['compartment'], 'CaPool')[0] + moose.connect(params['channel'], 'IkOut', capool, 'current') + # The B is obtained from phi in NEURON by dividing it with + # compartment area in cm2 and multiplying by 1e3 for /mA->/A and + # by 1e3 for /ms->/S + capool.B = 52000 * 1e6 / (3.141592 * 1e-4 * 1e-4) + # beta = 1/tau (ms) = 0.02 => tau = 50 ms + capool.tau = 50e-3 + ca_data = moose.Table('%s/Ca' % (data.path)) + moose.connect(ca_data, 'requestOut', capool, 'getCa') + setup_clocks(simdt, plotdt) + assign_clocks(model, data) + vm_data = params['Vm'] + gk_data = params['Gk'] + ik_data = params['Ik'] + params['Ca'] = ca_data + moose.reinit() + print('Starting simulation', testId, 'for', simtime, 's') + moose.start(simtime) + print('Finished simulation') + vm_file = 'data/%s_Vm.dat' % (poolname) + gk_file = 'data/%s_Gk.dat' % (poolname) + ik_file = 'data/%s_Ik.dat' % (poolname) + ca_file = 'data/%s_Ca.dat' % (poolname) + tseries = np.array(range(len(vm_data.vector))) * simdt + print('Vm:', len(vm_data.vector), 'Gk', len(gk_data.vector), 'Ik', len(ik_data.vector)) + data = np.c_[tseries, vm_data.vector] + np.savetxt(vm_file, data) + print('Saved Vm in', vm_file) + data = np.c_[tseries, gk_data.vector] + np.savetxt(gk_file, data) + print('Saved Gk in', gk_file) + data = np.c_[tseries, ik_data.vector] + np.savetxt(ik_file, data) + print('Saved Ik in', ik_file) + print('>>', len(ca_data.vector)) + data = np.c_[tseries, ca_data.vector] + np.savetxt(ca_file, data) + print('Saved [Ca2+] in', ca_file) + return params + + +class TestCaPool(ChannelTestBase): + channelname = 'CaL' + poolname = 'CaPool' + params = run_capool(poolname, 1e-9, 350e-3) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + ca = np.array(params['Ca'].vector) + print(len(ca)) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testCaPool_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testCaPool_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + def testCaPool_Ca_Neuron(self): + print(self.ca.shape) + data = np.c_[self.tseries, self.ca] + err = compare_channel_data(data, self.poolname, 'Ca', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + +if __name__ == '__main__': + unittest.main() + +# +# test_capool.py ends here diff --git a/examples/traub_2005/py/test_deepaxoaxonic.py b/examples/traub_2005/py/test_deepaxoaxonic.py new file mode 100644 index 0000000..88cdf91 --- /dev/null +++ b/examples/traub_2005/py/test_deepaxoaxonic.py @@ -0,0 +1,80 @@ +# test_deepaxoaxonic.py --- +# +# Filename: test_deepaxoaxonic.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 17:51:49 2012 (+0530) +# By: subha +# Update #: 494 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestDeepAxoaxonic(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'DeepAxoaxonic' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'ee' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_deepaxoaxonic.py ends here diff --git a/examples/traub_2005/py/test_deepbasket.py b/examples/traub_2005/py/test_deepbasket.py new file mode 100644 index 0000000..a0a9b24 --- /dev/null +++ b/examples/traub_2005/py/test_deepbasket.py @@ -0,0 +1,80 @@ +# test_deepbasket.py --- +# +# Filename: test_deepbasket.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 17:55:59 2012 (+0530) +# By: subha +# Update #: 497 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestDeepBasket(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'DeepBasket' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'ee' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_deepbasket.py ends here diff --git a/examples/traub_2005/py/test_deeplts.py b/examples/traub_2005/py/test_deeplts.py new file mode 100644 index 0000000..0d571b6 --- /dev/null +++ b/examples/traub_2005/py/test_deeplts.py @@ -0,0 +1,80 @@ +# test_deeplts.py --- +# +# Filename: test_deeplts.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:00:47 2012 (+0530) +# By: subha +# Update #: 501 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestDeepLTS(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'DeepLTS' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'ee' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_deeplts.py ends here diff --git a/examples/traub_2005/py/test_hsolve_tcr.py b/examples/traub_2005/py/test_hsolve_tcr.py new file mode 100644 index 0000000..c048903 --- /dev/null +++ b/examples/traub_2005/py/test_hsolve_tcr.py @@ -0,0 +1,96 @@ +# test_hsolve_tcr.py --- +# +# Filename: test_hsolve_tcr.py +# Description: +# Author: +# Maintainer: +# Created: Wed Jun 12 11:10:44 2013 (+0530) +# Version: +# Last-Updated: Tue Jul 9 18:34:01 2013 (+0530) +# By: subha +# Update #: 195 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: +import sys +import os +from datetime import datetime +import unittest +import numpy as np +import pylab + +import moose +import config + +from cell_test_util import setup_current_step_model, SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 1e-6 +plotdt = 0.25e-3 +simtime = 100e-3 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + +pulsearray = [[50e-3, 20e-3, 1e-9], + [1e9, 0, 0]] + +class TestHSolveEETCR(SingleCellCurrentStepTest): + """Run HSolve and Exponential solver simulation of the same cell.""" + celltype = 'TCR' + def testHSolve(self): + self.schedule(simdt, plotdt, 'hsolve') + self.runsim(simtime, pulsearray=pulsearray) + self.savedata() + + def testEE(self): + self.schedule(simdt, plotdt, 'ee') + self.runsim(simtime, pulsearray=pulsearray) + self.savedata() + +if __name__ == '__main__': + unittest.main() + + + + +# +# test_hsolve_tcr.py ends here diff --git a/examples/traub_2005/py/test_kchans.py b/examples/traub_2005/py/test_kchans.py new file mode 100644 index 0000000..0eb5edd --- /dev/null +++ b/examples/traub_2005/py/test_kchans.py @@ -0,0 +1,309 @@ +# test_kchans.py --- +# +# Filename: test_kchans.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed May 30 23:51:58 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:30:28 2016 (-0400) +# By: subha +# Update #: 120 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: +from __future__ import print_function + +import uuid +import unittest +import numpy as np +import testutils +import channelbase +from testutils import setup_single_compartment +from channel_test_util import compare_channel_data, run_single_channel, ChannelTestBase +from kchans import * + +simtime = 350e-3 +simdt = testutils.SIMDT +plotdt = testutils.PLOTDT + + +class TestKDR(ChannelTestBase): + channelname = 'KDR' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKDR_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKDR_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestKDR_FS(ChannelTestBase): + channelname = 'KDR_FS' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKDR_FS_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKDR_FS_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + + +class TestKA(ChannelTestBase): + channelname = 'KA' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKA_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKA_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', plot=True) + self.assertLess(err, 0.01) + + +class TestKA_IB(ChannelTestBase): + channelname = 'KA_IB' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKA_IB_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + + def testKA_IB_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', plot=True) + self.assertLess(err, 0.01) + + +class TestK2(ChannelTestBase): + channelname = 'K2' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testK2_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testK2_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', plot=True) + self.assertLess(err, 0.01) + + +class TestKM(ChannelTestBase): + channelname = 'KM' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKM_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKM_Gk_Neuron(self): + + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +def setup_cadep_channel(model_container, data_container, channel_proto, Gbar, ca_start, ca_stop): + """Setup a test compartment with [Ca2+] dependent channel.""" + params = setup_single_compartment(model_container, data_container, channel_proto, Gbar) + ca_table = moose.StimulusTable(model_container.path + '/CaStim') + ca_table.vector = np.linspace(ca_start, ca_stop, 1000) + ca_table.doLoop = True + ca_recorder = moose.Table(data_container.path + '/Ca') + moose.connect(ca_table, 'output', ca_recorder, 'input') + moose.connect(ca_table, 'output', params['channel'], 'concen') + params['Ca'] = ca_recorder + params['CaStim'] = ca_table + testutils.setup_clocks(simdt, plotdt) + testutils.assign_clocks(model_container, data_container) + moose.useClock(1, '%s,%s' % (ca_recorder.path, ca_table.path), 'process') + return params + +def run_cadep_channel(channelname, Gbar, simtime): + testId = uuid.uuid4().int + container = moose.Neutral('test%d' % (testId)) + model_container = moose.Neutral('%s/model' % (container.path)) + data_container = moose.Neutral('%s/data' % (container.path)) + params = setup_cadep_channel( + model_container, data_container, + channelbase.prototypes[channelname], + Gbar, + 0, + 500.0) + ca_table = params['CaStim'] + ca_table.startTime = 0.0 + ca_table.stopTime = 175e-3 + vm_data = params['Vm'] + gk_data = params['Gk'] + ik_data = params['Ik'] + ca_data = params['Ca'] + moose.reinit() + print('Starting simulation', testId, 'for', simtime, 's') + moose.start(simtime) + print('Finished simulation') + vm_file = 'data/%s_Vm.dat' % (channelname) + gk_file = 'data/%s_Gk.dat' % (channelname) + ik_file = 'data/%s_Ik.dat' % (channelname) + ca_file = 'data/%s_Ca.dat' % (channelname) + tseries = np.array(range(len(vm_data.vector))) * simdt + print('Vm:', len(vm_data.vector), 'Gk', len(gk_data.vector), 'Ik', len(ik_data.vector)) + data = np.c_[tseries, vm_data.vector] + np.savetxt(vm_file, data) + print('Saved Vm in', vm_file) + data = np.c_[tseries, gk_data.vector] + np.savetxt(gk_file, data) + print('Saved Gk in', gk_file) + data = np.c_[tseries, ik_data.vector] + np.savetxt(ik_file, data) + print('Saved Ik in', ik_file) + np.savetxt(ca_file, data) + print('Saved [Ca2+] in', ca_file) + return params + + +class TestKAHP(ChannelTestBase): + channelname = 'KAHP' + params = run_cadep_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKAHP_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKAHP_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestKAHP_SLOWER(ChannelTestBase): + channelname = 'KAHP_SLOWER' + params = run_cadep_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKAHP_SLOWER_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKAHP_SLOWER_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestKAHP_DP(ChannelTestBase): + channelname = 'KAHP_DP' + params = run_cadep_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKAHP_DP_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKAHP_DP_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestKC(ChannelTestBase): + channelname = 'KC' + params = run_cadep_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKC_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKC_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +class TestKC_FAST(ChannelTestBase): + channelname = 'KC_FAST' + params = run_cadep_channel(channelname, 1e-9, simtime) + vm = np.array(params['Vm'].vector) + gk = np.array(params['Gk'].vector) + tseries = np.arange(0, len(vm), 1.0) * simdt + + def testKC_FAST_Vm_Neuron(self): + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + + def testKC_FAST_Gk_Neuron(self): + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.01) + + +if __name__ == '__main__': + unittest.main() + +# +# test_kchans.py ends here diff --git a/examples/traub_2005/py/test_nachans.py b/examples/traub_2005/py/test_nachans.py new file mode 100644 index 0000000..b96eb1b --- /dev/null +++ b/examples/traub_2005/py/test_nachans.py @@ -0,0 +1,317 @@ +# test_nachans.py --- +# +# Filename: test_nachans.py +# Description: +# Author: +# Maintainer: +# Created: Sat May 26 10:29:41 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:46:06 2016 (-0400) +# By: subha +# Update #: 417 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Unit tests for single Na channels +# +# + +# Change log: +# +# +# +# + +# Code: +from __future__ import print_function + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import numpy as np +import testutils +from testutils import * +from channel_test_util import ChannelTestBase, run_single_channel, compare_channel_data +import nachans + +simtime = 350e-3 +simdt = testutils.SIMDT +plotdt = testutils.PLOTDT + + +class TestNaF(ChannelTestBase): + channelname = 'NaF' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + + def testNaF_Vm_Moose(self): + print('Testing MOOSE Vm ...',) + err = compare_channel_data(self.vm, TestNaF.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF_Gk_Moose(self): + print('Testing MOOSE Gk ...',) + err = compare_channel_data(self.gk, TestNaF.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaF_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + +class TestNaF_TCR(ChannelTestBase): + channelname = 'NaF_TCR' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaF_TCR_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaF_TCR.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF_TCR_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaF_TCR.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaF_TCR_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF_TCR_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + + +class TestNaF2(ChannelTestBase): + channelname = 'NaF2' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaF2_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaF2.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK', end='') + + def testNaF2_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaF2.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaF2_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF2_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + + +class TestNaF2_nRT(ChannelTestBase): + channelname = 'NaF2_nRT' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaF2_nRT_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaF2_nRT.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF2_nRT_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaF2_nRT.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaF2_nRT_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaF2_nRT_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + +class TestNaP(ChannelTestBase): + channelname = 'NaP' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaP_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaP.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaP_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaP.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaP_Vm_Neuron(self): + print( 'Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaP_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + + +class TestNaPF(ChannelTestBase): + channelname = 'NaPF' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaPF_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaPF.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaPF_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaPF.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaPF_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaPF_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + + +class TestNaPF_SS(ChannelTestBase): + channelname = 'NaPF_SS' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaPF_SS_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaPF_SS.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaPF_SS_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaPF_SS.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaPF_SS_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaPF_SS_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + + +class TestNaPF_TCR(ChannelTestBase): + channelname = 'NaPF_TCR' + params = run_single_channel(channelname, 1e-9, simtime) + vm = np.asarray(params['Vm'].vector) + gk = np.asarray(params['Gk'].vector) + tseries = np.array(range(0, len(params['Vm'].vector))) * simdt + def testNaPF_TCR_Vm_Moose(self): + print('Testing MOOSE Vm ...', end='') + err = compare_channel_data(self.vm, TestNaPF_TCR.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaPF_TCR_Gk_Moose(self): + print('Testing MOOSE Gk ...', end='') + err = compare_channel_data(self.gk, TestNaPF_TCR.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.05) + print('OK') + + def testNaPF_TCR_Vm_Neuron(self): + print('Testing NEURON Vm ...', end='') + data = np.c_[self.tseries, self.vm] + err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) + self.assertLess(err, 0.01) + print('OK') + + def testNaPF_TCR_Gk_Neuron(self): + print('Testing NEURON Gk ...', end='') + data = np.c_[self.tseries, self.gk] + err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) + self.assertLess(err, 0.05) + print('OK') + + +if __name__ == '__main__': + unittest.main() + # suite = unittest.TestLoader().loadTestsFromTestCase(TestNaPF) + # unittest.TextTestRunner(verbosity=2).run(suite) + +# +# test_nachans.py ends here diff --git a/examples/traub_2005/py/test_nontuftedrs.py b/examples/traub_2005/py/test_nontuftedrs.py new file mode 100644 index 0000000..7bb332c --- /dev/null +++ b/examples/traub_2005/py/test_nontuftedrs.py @@ -0,0 +1,80 @@ +# test_nontuftedrs.py --- +# +# Filename: test_nontuftedrs.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:05:45 2012 (+0530) +# By: subha +# Update #: 504 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestNontuftedRS(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'NontuftedRS' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_nontuftedrs.py ends here diff --git a/examples/traub_2005/py/test_nrt.py b/examples/traub_2005/py/test_nrt.py new file mode 100644 index 0000000..ae6722c --- /dev/null +++ b/examples/traub_2005/py/test_nrt.py @@ -0,0 +1,80 @@ +# test_nrt.py --- +# +# Filename: test_nrt.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:12:17 2012 (+0530) +# By: subha +# Update #: 507 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestnRT(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'nRT' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_nrt.py ends here diff --git a/examples/traub_2005/py/test_singlecomp.py b/examples/traub_2005/py/test_singlecomp.py new file mode 100644 index 0000000..decd56d --- /dev/null +++ b/examples/traub_2005/py/test_singlecomp.py @@ -0,0 +1,223 @@ +# test_singlecomp.py --- +# +# Filename: test_singlecomp.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Tue Jul 17 21:01:14 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:46:37 2016 (-0400) +# By: subha +# Update #: 317 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Test the ion channels with a single compartment. +# +# + +# Change log: +# +# 2012-07-17 22:22:23 (+0530) Tested NaF2 and NaPF_SS against neuron +# test case. +# +# + +# Code: +from __future__ import print_function + +import os +os.environ['NUMPTHREADS'] = '1' +import uuid +import unittest +from datetime import datetime +import sys +sys.path.append('../../../python') + +import numpy as np +from matplotlib import pyplot as plt + + +import moose +from testutils import * +from nachans import * +from kchans import * +from archan import * +from cachans import * +from capool import * + +simdt = 0.25e-4 +plotdt = 0.25e-4 +simtime = 350e-3 + +erev = { + 'K': -100e-3, + 'Na': 50e-3, + 'Ca': 125e-3, + 'AR': -40e-3 + } + +channel_density = { + 'NaF2': 1500.0, + 'NaPF_SS': 1.5, + 'KDR_FS': 1000.0, + 'KC_FAST': 100.0, + 'KA': 300.0, + 'KM': 37.5, + 'K2': 1.0, + 'KAHP_SLOWER': 1.0, + 'CaL': 5.0, + 'CaT_A': 1.0, + 'AR': 2.5 +} + +compartment_propeties = { + 'length': 20e-6, + 'diameter': 2e-6 * 7.5, + 'initVm': -65e-3, + 'Em': -65e-3, + 'Rm': 5.0, + 'Cm': 9e-3, + 'Ra': 1.0, + 'specific': True} + +stimulus = [[100e-3, 50e-3, 3e-10], # delay[0], width[0], level[0] + [1e9, 0, 0]] + +def create_compartment(path, length, diameter, initVm, Em, Rm, Cm, Ra, specific=False): + comp = moose.Compartment(path) + comp.length = length + comp.diameter = diameter + comp.initVm = initVm + comp.Em = Em + if not specific: + comp.Rm = Rm + comp.Cm = Cm + comp.Ra = Ra + else: + sarea = np.pi * length * diameter + comp.Rm = Rm / sarea + comp.Cm = Cm * sarea + comp.Ra = 4.0 * Ra * length / (np.pi * diameter * diameter) + return comp + +def insert_channel(compartment, channeclass, gbar, density=False): + channel = moose.copy(channeclass.prototype, compartment)[0] + if not density: + channel.Gbar = gbar + else: + channel.Gbar = gbar * np.pi * compartment.length * compartment.diameter + moose.connect(channel, 'channel', compartment, 'channel') + return channel + +def insert_ca(compartment, phi, tau): + ca = moose.copy(CaPool.prototype, compartment)[0] + ca.B = phi / (np.pi * compartment.length * compartment.diameter) + ca.tau = tau + print( ca.path, ca.B, ca.tau) + for chan in moose.wildcardFind('%s/#[TYPE=HHChannel]' % (compartment.path)): + if chan.name.startswith('KC') or chan.name.startswith('KAHP'): + moose.connect(ca, 'concOut', chan, 'concen') + elif chan.name.startswith('CaL'): + moose.connect(chan, 'IkOut', ca, 'current') + else: + continue + moose.showfield(chan) + return ca + +class TestSingleComp(unittest.TestCase): + def setUp(self): + self.testId = uuid.uuid4().int + self.container = moose.Neutral('test%d' % (self.testId)) + self.model = moose.Neutral('%s/model' % (self.container.path)) + self.data = moose.Neutral('%s/data' % (self.container.path)) + self.soma = create_compartment('%s/soma' % (self.model.path), + **compartment_propeties) + self.tables = {} + tab = moose.Table('%s/Vm' % (self.data.path)) + self.tables['Vm'] = tab + moose.connect(tab, 'requestOut', self.soma, 'getVm') + for channelname, conductance in channel_density.items(): + chanclass = eval(channelname) + channel = insert_channel(self.soma, chanclass, conductance, density=True) + if issubclass(chanclass, KChannel): + channel.Ek = erev['K'] + elif issubclass(chanclass, NaChannel): + channel.Ek = erev['Na'] + elif issubclass(chanclass, CaChannel): + channel.Ek = erev['Ca'] + elif issubclass(chanclass, AR): + channel.Ek = erev['AR'] + tab = moose.Table('%s/%s' % (self.data.path, channelname)) + moose.connect(tab, 'requestOut', channel, 'getGk') + self.tables['Gk_'+channel.name] = tab + archan = moose.HHChannel(self.soma.path + '/AR') + archan.X = 0.0 + ca = insert_ca(self.soma, 2.6e7, 50e-3) + tab = moose.Table('%s/Ca' % (self.data.path)) + self.tables['Ca'] = tab + moose.connect(tab, 'requestOut', ca, 'getCa') + self.pulsegen = moose.PulseGen('%s/inject' % (self.model.path)) + moose.connect(self.pulsegen, 'output', self.soma, 'injectMsg') + tab = moose.Table('%s/injection' % (self.data.path)) + moose.connect(tab, 'requestOut', self.pulsegen, 'getOutputValue') + self.tables['pulsegen'] = tab + self.pulsegen.count = len(stimulus) + for ii in range(len(stimulus)): + self.pulsegen.delay[ii] = stimulus[ii][0] + self.pulsegen.width[ii] = stimulus[ii][1] + self.pulsegen.level[ii] = stimulus[ii][2] + setup_clocks(simdt, plotdt) + assign_clocks(self.model, self.data) + moose.reinit() + start = datetime.now() + moose.start(simtime) + end = datetime.now() + delta = end - start + print( 'Simulation of %g s finished in %g s' % (simtime, delta.seconds + delta.microseconds*1e-6)) + + + def testDefault(self): + vm_axis = plt.subplot(2,1,1) + ca_axis = plt.subplot(2,1,2) + try: + nrndata = np.loadtxt('../nrn/data/singlecomp_Vm.dat') + vm_axis.plot(nrndata[:,0], nrndata[:,1], label='Vm (mV) - nrn') + ca_axis.plot(nrndata[:,0], nrndata[:,2], label='Ca (mM) - nrn') + except IOError, e: + print( e) + tseries = np.linspace(0, simtime, len(self.tables['Vm'].vector)) * 1e3 + # plotcount = len(channel_density) + 1 + # rows = int(np.sqrt(plotcount) + 0.5) + # columns = int(plotcount * 1.0/rows + 0.5) + # print plotcount, rows, columns + # plt.subplot(rows, columns, 1) + vm_axis.plot(tseries, self.tables['Vm'].vector * 1e3, label='Vm (mV) - moose') + vm_axis.plot(tseries, self.tables['pulsegen'].vector * 1e12, label='inject (pA)') + ca_axis.plot(tseries, self.tables['Ca'].vector, label='Ca (mM) - moose') + vm_axis.legend() + ca_axis.legend() + # ii = 2 + # for key, value in self.tables.items(): + # if key.startswith('Gk'): + # plt.subplot(rows, columns, ii) + # plt.plot(tseries, value.vector, label=key) + # ii += 1 + # plt.legend() + plt.show() + data = np.vstack((tseries*1e-3, + self.tables['Vm'].vector, + self.tables['Ca'].vector)) + np.savetxt('data/singlecomp_Vm.dat', + np.transpose(data)) + +if __name__ == '__main__': + unittest.main() + +# +# test_singlecomp.py ends here diff --git a/examples/traub_2005/py/test_spinystellate.py b/examples/traub_2005/py/test_spinystellate.py new file mode 100644 index 0000000..694faaa --- /dev/null +++ b/examples/traub_2005/py/test_spinystellate.py @@ -0,0 +1,80 @@ +# test_spinystellate.py --- +# +# Filename: test_spinystellate.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 17:39:06 2012 (+0530) +# By: subha +# Update #: 492 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestSpinyStellate(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'SpinyStellate' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'ee' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_spinystellate.py ends here diff --git a/examples/traub_2005/py/test_supaxoaxonic.py b/examples/traub_2005/py/test_supaxoaxonic.py new file mode 100644 index 0000000..1365453 --- /dev/null +++ b/examples/traub_2005/py/test_supaxoaxonic.py @@ -0,0 +1,80 @@ +# test_supaxoaxonic.py --- +# +# Filename: test_supaxoaxonic.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:22:52 2012 (+0530) +# By: subha +# Update #: 510 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestSupAxoaxonic(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'SupAxoaxonic' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_supaxoaxonic.py ends here diff --git a/examples/traub_2005/py/test_supbasket.py b/examples/traub_2005/py/test_supbasket.py new file mode 100644 index 0000000..c200c0f --- /dev/null +++ b/examples/traub_2005/py/test_supbasket.py @@ -0,0 +1,80 @@ +# test_supbasket.py --- +# +# Filename: test_supbasket.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:26:43 2012 (+0530) +# By: subha +# Update #: 513 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestSupBasket(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'SupBasket' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_supbasket.py ends here diff --git a/examples/traub_2005/py/test_suplts.py b/examples/traub_2005/py/test_suplts.py new file mode 100644 index 0000000..a3f4975 --- /dev/null +++ b/examples/traub_2005/py/test_suplts.py @@ -0,0 +1,80 @@ +# test_suplts.py --- +# +# Filename: test_suplts.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:31:15 2012 (+0530) +# By: subha +# Update #: 502 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestSupLTS(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'SupLTS' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_suplts.py ends here diff --git a/examples/traub_2005/py/test_suppyrfrb.py b/examples/traub_2005/py/test_suppyrfrb.py new file mode 100644 index 0000000..2d214ca --- /dev/null +++ b/examples/traub_2005/py/test_suppyrfrb.py @@ -0,0 +1,80 @@ +# test_suppyrfrb.py --- +# +# Filename: test_suppyrfrb.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:33:56 2012 (+0530) +# By: subha +# Update #: 516 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestSupPyrFRB(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'SupPyrFRB' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_suppyrfrb.py ends here diff --git a/examples/traub_2005/py/test_suppyrrs.py b/examples/traub_2005/py/test_suppyrrs.py new file mode 100644 index 0000000..e40e56c --- /dev/null +++ b/examples/traub_2005/py/test_suppyrrs.py @@ -0,0 +1,80 @@ +# test_suppyrrs.py --- +# +# Filename: test_suppyrrs.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:40:34 2012 (+0530) +# By: subha +# Update #: 517 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 0.05 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestSupPyrRS(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'SupPyrRS' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_suppyrrs.py ends here diff --git a/examples/traub_2005/py/test_tcr.py b/examples/traub_2005/py/test_tcr.py new file mode 100644 index 0000000..b148bf6 --- /dev/null +++ b/examples/traub_2005/py/test_tcr.py @@ -0,0 +1,101 @@ +# test_tcr.py --- +# +# Filename: test_tcr.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:29:42 2016 (-0400) +# By: subha +# Update #: 530 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: +from __future__ import print_function +import unittest +from cell_test_util import setup_current_step_model, SingleCellCurrentStepTest +import testutils +import cells +import moose +from moose import utils +import pylab + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 300e-3 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestTCR(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'TCR' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + # def testVmSeriesPlot(self): + # self.runsim(simtime, pulsearray=self.pulse_array) + # self.plot_vm() + + def testVClamp(self): + clamp = moose.VClamp('%s/vclamp' % (self.model_container.path)) + moose.connect(clamp, 'currentOut', self.cell.soma, 'injectMsg') + moose.connect(self.cell.soma, 'VmOut', clamp, 'sensedIn') + self.pulsegen.delay[0] = 1e9 # disable current clamp + self.pulsegen = moose.PulseGen('%s/vclampCommand' % (self.model_container.path)) + self.pulsegen.delay[0] = 100e-3 + self.pulsegen.width[0] = 100e-3 + self.pulsegen.level[0] = -10e-3 + moose.connect(self.pulsegen, 'output', clamp, 'setCommand') + tab = moose.Table('%s/command' % (self.data_container.path)) + moose.connect(tab, 'requestOut', clamp, 'getCommand') + for ii in moose.wildcardFind('/##[TYPE=VClamp]'): + print(ii.path) + self.runsim(simtime) + print(tab, len(tab.vector)) + pylab.plot(pylab.linspace(0, simtime, len(tab.vector)), tab.vector, 'kx') + self.plot_vm() + + # def testChannelDensities(self): + # pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_tcr.py ends here diff --git a/examples/traub_2005/py/test_tuftedib.py b/examples/traub_2005/py/test_tuftedib.py new file mode 100644 index 0000000..53196b6 --- /dev/null +++ b/examples/traub_2005/py/test_tuftedib.py @@ -0,0 +1,80 @@ +# test_tuftedib.py --- +# +# Filename: test_tuftedib.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Wed Jun 26 09:58:42 2013 (+0530) +# By: subha +# Update #: 522 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestTuftedIB(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'TuftedIB' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, 1000*plotdt, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_tuftedib.py ends here diff --git a/examples/traub_2005/py/test_tuftedrs.py b/examples/traub_2005/py/test_tuftedrs.py new file mode 100644 index 0000000..51815ec --- /dev/null +++ b/examples/traub_2005/py/test_tuftedrs.py @@ -0,0 +1,80 @@ +# test_tuftedrs.py --- +# +# Filename: test_tuftedrs.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 16 16:12:55 2012 (+0530) +# Version: +# Last-Updated: Thu Nov 8 18:49:03 2012 (+0530) +# By: subha +# Update #: 519 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: + +import unittest +from cell_test_util import SingleCellCurrentStepTest +import testutils +import cells +from moose import utils + +simdt = 5e-6 +plotdt = 0.25e-3 +simtime = 1.0 + + +# pulsearray = [[1.0, 100e-3, 1e-9], +# [0.5, 100e-3, 0.3e-9], +# [0.5, 100e-3, 0.1e-9], +# [0.5, 100e-3, -0.1e-9], +# [0.5, 100e-3, -0.3e-9]] + + + +class TestTuftedRS(SingleCellCurrentStepTest): + def __init__(self, *args, **kwargs): + self.celltype = 'TuftedRS' + SingleCellCurrentStepTest.__init__(self, *args, **kwargs) + self.pulse_array = [(100e-3, 100e-3, 1e-9), + (1e9, 0, 0)] + # self.solver = 'hsolve' + self.simdt = simdt + self.plotdt = plotdt + + def setUp(self): + SingleCellCurrentStepTest.setUp(self) + + def testVmSeriesPlot(self): + self.runsim(simtime, pulsearray=self.pulse_array) + self.plot_vm() + + def testChannelDensities(self): + pass + # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) + # self.assertTrue(equal) + + +if __name__ == '__main__': + unittest.main() + + + +# +# test_tuftedrs.py ends here diff --git a/examples/traub_2005/py/testutils.py b/examples/traub_2005/py/testutils.py new file mode 100644 index 0000000..b3d6b68 --- /dev/null +++ b/examples/traub_2005/py/testutils.py @@ -0,0 +1,375 @@ +# test_utils.py --- +# +# Filename: test_utils.py +# Description: +# Author: +# Maintainer: +# Created: Sat May 26 10:41:37 2012 (+0530) +# Version: +# Last-Updated: Sat Aug 6 15:45:51 2016 (-0400) +# By: subha +# Update #: 414 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# + +# Code: +from __future__ import print_function + +import os +os.environ['NUMPTHREADS'] = '1' +import sys +sys.path.append('../../../python') +import uuid +import numpy as np +from matplotlib import pyplot as plt +import unittest + +import moose +from moose import utils as mutils +import config +import channelbase + +INITCLOCK = 0 +ELECCLOCK = 1 +CHANCLOCK = 2 +POOLCLOCK = 3 +LOOKUPCLOCK = 6 +STIMCLOCK = 7 +PLOTCLOCK = 8 + +SIMDT = 5e-6 +PLOTDT = 0.25e-3 + +lib = moose.Neutral(config.modelSettings.libpath) + +def setup_clocks(simdt, plotdt): + print( 'Setting up clocks: simdt', simdt, 'plotdt', plotdt) + moose.setClock(INITCLOCK, simdt) + moose.setClock(ELECCLOCK, simdt) + moose.setClock(CHANCLOCK, simdt) + moose.setClock(POOLCLOCK, simdt) + moose.setClock(LOOKUPCLOCK, simdt) + moose.setClock(STIMCLOCK, simdt) + moose.setClock(PLOTCLOCK, plotdt) + moose.le('/clock') + + +def assign_clocks(model_container, data_container, solver='euler'): + """Assign clockticks to elements. + + Parameters + ---------- + model_container: element + + All model components are under this element. The model elements + are assigned clocks as required to maintain the right update + sequence. + + INITCLOCK = 0 calls `init` method in Compartments + + ELECCLOCK = 1 calls `process` method of Compartments + + CHANCLOCK = 2 calls `process` method for HHChannels + + POOLCLOCK = 3 is not used in electrical simulation + + LOOKUPCLOCK = 6 is not used in these simulations. + + STIMCLOCK = 7 calls `process` method in stimulus objects like + PulseGen. + + data_container: element + All data recording tables are under this element. They are + assigned PLOTCLOCK, the clock whose update interval is plotdt. + + PLOTCLOCK = 8 calls `process` method of Table elements under + data_container + + """ + moose.useClock(STIMCLOCK, + model_container.path+'/##[TYPE=PulseGen]', + 'process') + moose.useClock(PLOTCLOCK, + data_container.path+'/##[TYPE=Table]', + 'process') + if solver == 'hsolve': + for neuron in moose.wildcardFind('%s/##[TYPE=Neuron]'): + solver = moose.HSolve(neuron.path+'/solve') + solver.dt = moose.element('/clock/tick[0]').dt + solver.target = neuron.path + moose.useClock(INITCLOCK, + model_container.path+'/##[TYPE=HSolve]', + 'process') + else: + moose.useClock(INITCLOCK, + model_container.path+'/##[TYPE=Compartment]', + 'init') + moose.useClock(ELECCLOCK, + model_container.path+'/##[TYPE=Compartment]', + 'process') + moose.useClock(CHANCLOCK, + model_container.path+'/##[TYPE=HHChannel]', + 'process') + moose.useClock(POOLCLOCK, + model_container.path+'/##[TYPE=CaConc]', + 'process') + +def step_run(simtime, steptime, verbose=True): + """Run the simulation in steps of `steptime` for `simtime`.""" + clock = moose.Clock('/clock') + if verbose: + print( 'Starting simulation for', simtime) + while clock.currentTime < simtime - steptime: + moose.start(steptime) + if verbose: + print( 'Simulated till', clock.currentTime, 's') + remaining = simtime - clock.currentTime + if remaining > 0: + if verbose: + print( 'Running the remaining', remaining, 's') + moose.start(remaining) + if verbose: + print( 'Finished simulation') + + +def make_testcomp(containerpath): + comp = moose.Compartment('%s/testcomp' % (containerpath)) + comp.Em = -65e-3 + comp.initVm = -65e-3 + comp.Cm = 1e-12 + comp.Rm = 1e9 + comp.Ra = 1e5 + return comp + +def make_pulsegen(containerpath): + pulsegen = moose.PulseGen('%s/testpulse' % (containerpath)) + pulsegen.firstLevel = 1e-12 + pulsegen.firstDelay = 50e-3 + pulsegen.firstWidth = 100e-3 + pulsegen.secondLevel = -1e-12 + pulsegen.secondDelay = 150e-3 + pulsegen.secondWidth = 100e-3 + pulsegen.count = 3 + pulsegen.delay[2] = 1e9 + return pulsegen + + +def setup_single_compartment(model_container, data_container, channel_proto, Gbar): + """Setup a single compartment with a channel + + Parameters + ---------- + model_container: element + The model compartment is created under this element + + data_container: element + The tables to record data are created under this + + channel_proto: element + Channel prototype in library + + Gbar: float + Maximum conductance density of the channel + + """ + comp = make_testcomp(model_container.path) + channel = moose.copy(channel_proto, comp, channel_proto.name)[0] + moose.connect(channel, 'channel', comp, 'channel') + channel.Gbar = Gbar + pulsegen = make_pulsegen(model_container.path) + moose.connect(pulsegen, 'output', comp, 'injectMsg') + vm_table = moose.Table('%s/Vm' % (data_container.path)) + moose.connect(vm_table, 'requestOut', comp, 'getVm') + gk_table = moose.Table('%s/Gk' % (data_container.path)) + moose.connect(gk_table, 'requestOut', channel, 'getGk') + ik_table = moose.Table('%s/Ik' % (data_container.path)) + moose.connect(ik_table, 'requestOut', channel, 'getIk') + return {'compartment': comp, + 'stimulus': pulsegen, + 'channel': channel, + 'Vm': vm_table, + 'Gk': gk_table, + 'Ik': ik_table} + +def insert_hhchannel(compartment, channelclass, gbar): + channel = moose.copy(channelclass.prototype, compartment) + channel[0].Gbar = gbar + moose.connect(channel, 'channel', compartment, 'channel') + return channel[0] + +def compare_data_arrays(left, right, relative='maxw', plot=False, x_range=None): + """Compare two data arrays and return some measure of the + error. + + The arrays must have the same number of dimensions (1 or 2) and + represent the same range of x values. In case they are 1 + dimensional, we take x values as relative position of that data + point in the total x-range. + + We interpolate the y values for the x-values of the series with + lower resolution using the heigher resolution series as the + interpolation table. + + The error is calculated as the maximum difference between the + interpolated values and the actual values in the lower resolution + array divided by the difference between the maximum and minimum y + values of both the series. + + If plot is True, left, right and their difference at common points + are plotted. + + relative: `rms` - return root mean square of the error values + `taxicab` - mean of the absolute error values + `maxw` - max(abs(error))/(max(y) - min(y)) + `meany` - rms(error)/mean(y) + + x_range : (minx, maxx) range of X values to consider for comparison + + """ + if len(left.shape) != len(right.shape): + print( left.shape, right.shape) + raise ValueError('Arrays to be compared must have same dimensions.') + # y is the intrepolation result for x array using xp and fp when xp and x do not match. + # xp and fp are interpolation table's independent and dependent variables + # yp is a view of the original y values + x = None + y = None + xp = None + fp = None + yp = None + # arbitrarily keep series with more datapoint as left + if left.shape[0] < right.shape[0]: + tmp = left + left = right + right = tmp + if len(right.shape) == 1: + x = np.arange(right.shape[0]) * 1.0 / right.shape[0] + yp = right + xp = np.arange(left.shape[0]) * 1.0 / left.shape[0] + fp = left + elif len(right.shape) == 2: + x = right[:,0] + yp = right[:,1] + xp = left[:,0] + fp = left[:,1] + else: + raise ValueError('Cannot handle more than 2 dimensional arrays.') + if left.shape[0] != right.shape[0]: + print( 'Array sizes not matching: (%d <> %d) - interpolating' % (left.shape[0], right.shape[0])) + y = np.interp(x, xp, fp) + else: # assume we have the same X values when sizes are the same + y = np.array(fp) + if x_range: + indices = np.nonzero((x > x_range[0]) & (x <= x_range[1]))[0] + y = np.array(y[indices]) + yp = np.array(yp[indices]) + x = np.array(x[indices]) + # We update xp and fp to have the same plotting x-range + indices = np.nonzero((xp > x_range[0]) & (xp <= x_range[1]))[0] + xp = xp[indices] + fp = fp[indices] + err = y - yp + print( min(err), max(err), min(y), max(y), min(yp), max(yp)) + # I measure a conservative relative error as maximum of all the + # errors between pairs of points with + all_y = np.r_[y, yp] + if plot: + plt.plot(x, yp, 'b-.', label='right') + plt.plot(xp, fp, 'g--', label='left') + plt.plot(x, err, 'r:', label='error') + plt.legend() + plt.show() + if relative == 'rms': + return np.sqrt(np.mean(err**2)) + elif relative == 'taxicab': + return np.mean(np.abs(err)) + elif relative == 'maxw': + return max(np.abs(err))/(max(all_y) - min(all_y)) + elif relative == 'meany': + return np.sqrt(np.mean(err**2)) / np.mean(all_y) + else: + return err + +import csv + +def compare_cell_dump(left, right, rtol=1e-3, atol=1e-8, row_header=True, col_header=True): + """This is a utility function to compare various compartment + parameters for a single cell model dumped in csv format using + NEURON and MOOSE.""" + print( 'Comparing:', left, 'with', right) + ret = True + left_file = open(left, 'rb') + right_file = open(right, 'rb') + left_reader = csv.DictReader(left_file, delimiter=',') + right_reader = csv.DictReader(right_file, delimiter=',') + lheader = list(left_reader.fieldnames) + lheader.remove('comp') + lheader = sorted(lheader) + rheader = list(right_reader.fieldnames) + rheader.remove('comp') + rheader = sorted(rheader) + if len(lheader) != len(rheader): + print( 'Column number mismatch: left %d <-> right %d' % (len(lheader), len(rheader))) + return False + for ii in range(len(lheader)): + if lheader[ii] != rheader[ii]: + print( ii, '-th column name mismatch:', lheader[ii], '<->', rheader[ii]) + return False + index = 2 + left_end = False + right_end = False + while True: + try: + left_row = left_reader.next() + except StopIteration: + left_end = True + try: + right_row = right_reader.next() + except StopIteration: + right_end = True + if left_end and not right_end: + print( left, 'run out of line after', index, 'rows') + return False + if right_end and not left_end: + print( right, 'run out of line after', index, 'rows') + return False + if left_end and right_end: + return ret + if len(left_row) != len(right_row): + print( 'No. of columns differ: left - ', len(left_row), 'right -', len(right_row)) + ret = False + break + for key in lheader: + try: + left = float(left_row[key]) + right = float(right_row[key]) + if not np.allclose(float(left), float(right), rtol=rtol, atol=atol): + print( 'Mismatch in row:%s, column:%s. Values: %g <> %g' % (index, key, left, right)) + ret = False + except ValueError, e: + print( e) + print( 'Row:', index, 'Key:', key, left_row[key], right_row[key]) + index = index + 1 + return ret + + + + + +# +# test_utils.py ends here diff --git a/examples/traub_2005/py/trbconfig.py b/examples/traub_2005/py/trbconfig.py new file mode 100644 index 0000000..63814c3 --- /dev/null +++ b/examples/traub_2005/py/trbconfig.py @@ -0,0 +1,150 @@ +# config.py --- +# +# Filename: config.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Fri May 4 14:46:29 2012 (+0530) +# Version: +# Last-Updated: Fri May 4 21:05:04 2012 (+0530) +# By: Subhasis Ray +# Update #: 140 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: + +from datetime import datetime +import ConfigParser as configparser +import logging +import numpy +import os + +# runtime info +timestamp = datetime.now() +mypid = os.getpid() +# Unit Conversion Factors +uS = 1e-6 # micro Siemens to Siemens +ms = 1e-3 # milli second to second +mV = 1e-3 # milli Volt to Volt + +# limits on HH-gate tables +vmin = -120 * mV +vmax = 40 * mV +ndivs = 640 +dv = (vmax - vmin)/ndivs + +# element to contain prototypes +libpath = '/library' + +# defined channels to be initialized in prototypes +channel_names = ['AR', + 'CaPool', + 'CaL', + 'CaT', + 'CaT_A', + 'K2', + 'KA', + 'KA_IB', + 'KAHP', + 'KAHP_DP', + 'KAHP_SLOWER', + 'KC', + 'KC_FAST', + 'KDR', + 'KDR_FS', + 'KM', + 'NaF', + 'NaF2', + 'NaF_TCR', + 'NaP', + 'NaPF', + 'NaPF_SS', + 'NaPF_TCR', + 'NaF2_nRT'] + +############################################ +# Parse configuration file +############################################ +_parser = configparser.SafeConfigParser() +_parser.optionxform = str +_parser.read(['defaults.ini', 'custom.ini']) + +# seed for random number generator in MOOSE +moose_rngseed = _parser.get('numeric', 'moose_rngseed') + +# seed for random number generator in numpy +numpy_rngseed = _parser.get('numeric', 'numpy_rngseed') +# flag if the simulation uses stochastic synchans +stochastic = _parser.get('numeric', 'stochastic') in ['Yes', 'yes', 'True', 'true', '1'] +reseed = _parser.get('numeric', 'reseed') in ['Yes', 'yes', 'True', 'true', '1'] +solver = _parser.get('numeric', 'solver') +simtime = float(_parser.get('scheduling', 'simtime')) +simdt = float(_parser.get('scheduling', 'simdt')) +plotdt = float(_parser.get('scheduling', 'plotdt')) + +###################################################################### +# configuration for saving simulation data +###################################################################### +datadir = os.path.join(_parser.get('directories', 'data'), + timestamp.strftime('%Y_%m_%d')) +if not os.access(datadir, os.F_OK): + os.mkdirs(datadir) +protodir = _parser.get('directories', 'proto') +datafileprefix = 'data' +netfileprefix = 'network' +filesuffix = '_%s_%d' % (timestamp.strftime('%Y%m%d_%H%M%S'), mypid) +datafilepath = os.path.join(datadir, datafileprefix + filesuffix + '.h5') +netfilepath = os.path.join(datadir, netfileprefix + filesuffix + '.h5') + +##################################################################### +# Logging +##################################################################### +logfileprefix = 'traub2005' +logfilename = os.path.join(datadir, logfileprefix + filesuffix + '.log') +loglevel = int(_parser.get('logging', 'level')) +logger = logging.getLogger(logfileprefix) +logging.basicConfig(filename=logfilename, + level=loglevel, + format='%(asctime)s \ + %(levelname)s \ + %(name)s \ + %(filename)s \ + %(funcName)s: \ + %(message)s', + filemode='w') +benchmark = int(_parser.get('logging', 'benchmark')) +benchmarker = logging.getLogger(logfileprefix + '.benchmark') +benchmarker.setLevel(logging.DEBUG) + +_inited = False +def init(): + if _inited: + return + _inited = True + if reseed: + if moose_rngseed: + moose.seed(int(moose_rngseed)) + else: + moose.seed(0) + if numpy_rngseed: + numpy.random.seed(int(numpy_rngseed)) + +init() + +# +# config.py ends here diff --git a/examples/traub_2005/py/vclamptest.py b/examples/traub_2005/py/vclamptest.py new file mode 100644 index 0000000..1fabd7e --- /dev/null +++ b/examples/traub_2005/py/vclamptest.py @@ -0,0 +1,157 @@ +# vclamptest.py --- +# +# Filename: vclamptest.py +# Description: +# Author: +# Maintainer: +# Created: Wed Feb 6 16:25:52 2013 (+0530) +# Version: +# Last-Updated: Tue Jun 11 17:30:34 2013 (+0530) +# By: subha +# Update #: 148 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# Set up a voltage clamp experiment with specified series of clamping +# voltage values +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import numpy as np +import sys +sys.path.append('../../../python') +import moose +from moose import utils +# import cells + +def vclamptest(compartment, vclamp, duration=50e-3, delay=150e-3, solver='ee', vhold=None, mc=None, dc=None, simdt=1e-5, plotdt=0.25e-3): + """Do a series of voltage clamp experiemnts on compartment. + + parameters: + + compartment: Compartment object to be voltage clamped + + vclamp: array of clamping voltage values. + + duration: duration of each clamp + + delay: delay between successive application of clamping voltages + + vhold: holding voltage, If None, the Em of the + compartment is used. + + mc: model container, the vclamp object will be created inside + mc/electronics. If None, we use compartment.parent.parent + + dc: data container, the data recording tables will be created + inside it. If None, we use compartment.parent.parent + """ + if vhold is None: + vhold = compartment.Em + if mc is None: + mc = compartment.parent.parent + if dc is None: + dc = compartment.parent.parent + electronics = moose.Neutral('%s/electronics' % (mc.path)) + command = moose.PulseGen('%s/command_source' % (electronics.path)) + clamp = moose.VClamp('%s/vclamp' % (electronics.path)) + moose.connect(command, 'output', clamp, 'commandIn') + moose.connect(compartment, 'VmOut', clamp, 'sensedIn') + moose.connect(clamp, 'currentOut', compartment, 'injectMsg') + simtime = 0 + command.count = len(vclamp) + command.baseLevel = vhold + for ii, clamping_voltage in enumerate(vclamp): + simtime += delay + duration + command.delay[ii] = delay + command.width[ii] = duration + command.level[ii] = clamping_voltage + injected = moose.Table('%s/Iinject' % (dc.path)) + moose.connect(injected, 'requestData', clamp, 'getCurrent') + voltage = moose.Table('%s/Vcommand' % (dc.path)) + moose.connect(voltage, 'requestData', command, 'getOutputValue') + vm = moose.Table('%s/Vm' % (dc.path)) + moose.connect(vm, 'requestData', compartment, 'getVm') + utils.resetSim([mc.path, dc.path], simdt, plotdt, simmethod=solver) + moose.start(simtime) + ivec = np.asarray(injected.vector) + vvec = np.asarray(voltage.vector) + vmvec = np.asarray(vm.vector) + ts = np.linspace(0, simtime, len(vvec)) + sidx = np.nonzero(np.diff(vvec) > 0)[0] + eidx = np.nonzero(np.diff(vvec) < 0)[0] + iarrays = [] + for ii in range(len(vclamp)): + iarrays.append(ivec[sidx[ii]: eidx[ii]].copy()) + return { + "Vm": vmvec, + "commandVoltage": vvec, + "inject": ivec, + "ts": ts, + "injectArrays": iarrays} + + +from matplotlib import pyplot as plt +sys.path.append('../../squid') +from squid import SquidAxon + + +def test(): + mc = moose.Neutral('model') + dc = moose.Neutral('data') + nrn = moose.Neuron('%s/nrn' % (mc.path)) + x = SquidAxon('%s/squid' % (nrn.path)) + clampv = [10.0, 20.0, 30.0, 40.0, 50.0] + data = vclamptest(x, clampv, duration=20.0, delay=100.0, vhold=0.0, mc=mc, dc=dc, simdt=1e-2, plotdt=1e-2, solver='hsolve') + plt.subplot(311) + plt.title('Membrane potential throughout experiment') + plt.plot(data['ts'], data['Vm'], label='Vm') + plt.legend() + plt.subplot(312) + plt.title('Injection current throughout experiment') + plt.plot(data['ts'], data['inject'], label='Inject') + plt.legend() + plt.subplot(313) + plt.title('Injection currents for different clamp volatge values') + for ii, inject in enumerate(data['injectArrays']): + plt.plot(inject, label='V = %g' % (clampv[ii])) + plt.legend() + plt.show() + +if __name__ == '__main__': + test() + + + + +# +# vclamptest.py ends here diff --git a/examples/tutorials/ChemicalBistables/19085.cspace b/examples/tutorials/ChemicalBistables/19085.cspace new file mode 100644 index 0000000..1d2cf35 --- /dev/null +++ b/examples/tutorials/ChemicalBistables/19085.cspace @@ -0,0 +1 @@ +M101: |DabX|Jbca| 5.59269 0.0157641 0.172865 0.361005 4.72728 1.08558 0.0982933 \ No newline at end of file diff --git a/examples/tutorials/ChemicalBistables/doseResponse.py b/examples/tutorials/ChemicalBistables/doseResponse.py new file mode 100644 index 0000000..30828fa --- /dev/null +++ b/examples/tutorials/ChemicalBistables/doseResponse.py @@ -0,0 +1,122 @@ +## Makes and plots the dose response curve for bistable models +## Author: Sahil Moza +## June 26, 2014 + +import moose +import pylab +import numpy as np +from matplotlib import pyplot as plt + +def setupSteadyState(simdt,plotDt): + + ksolve = moose.Ksolve( '/model/kinetics/ksolve' ) + stoich = moose.Stoich( '/model/kinetics/stoich' ) + stoich.compartment = moose.element('/model/kinetics') + + stoich.ksolve = ksolve + #ksolve.stoich = stoich + stoich.path = "/model/kinetics/##" + state = moose.SteadyState( '/model/kinetics/state' ) + + #### Set clocks here + moose.useClock(4, "/model/kinetics/##[]", "process") + moose.setClock(4, float(simdt)) + moose.setClock(5, float(simdt)) + moose.useClock(5, '/model/kinetics/ksolve', 'process' ) + moose.useClock(8, '/model/graphs/#', 'process' ) + moose.setClock(8, float(plotDt)) + + moose.reinit() + + state.stoich = stoich + state.showMatrices() + state.convergenceCriterion = 1e-8 + + return ksolve, state + +def parseModelName(fileName): + pos1=fileName.rfind('/') + pos2=fileName.rfind('.') + directory=fileName[:pos1] + prefix=fileName[pos1+1:pos2] + suffix=fileName[pos2+1:len(fileName)] + return directory, prefix, suffix + +# Solve for the steady state +def getState( ksolve, state, vol): + scale = 1.0 / ( vol * 6.022e23 ) + state.randomInit() # Removing random initial condition to systematically make Dose reponse curves. + moose.start( 2.0 ) # Run the model for 2 seconds. + state.settle() + + vector = [] + for x in ksolve.nVec[0]: + vector.append( x * scale) + moose.start( 10.0 ) # Run model for 10 seconds, just for display + failedSteadyState = any([np.isnan(x) for x in vector]) + + if not (failedSteadyState): + return state.stateType, state.solutionStatus, vector + + +def main(): + # Setup parameters for simulation and plotting + simdt= 1e-2 + plotDt= 1 + + # Factors to change in the dose concentration in log scale + factorExponent = 10 ## Base: ten raised to some power. + factorBegin = -20 + factorEnd = 21 + factorStepsize = 1 + factorScale = 10.0 ## To scale up or down the factors + + # Load Model and set up the steady state solver. + # model = sys.argv[1] # To load model from a file. + model = './19085.cspace' + modelPath, modelName, modelType = parseModelName(model) + outputDir = modelPath + + modelId = moose.loadModel(model, 'model', 'ee') + dosePath = '/model/kinetics/b/DabX' # The dose entity + + ksolve, state = setupSteadyState( simdt, plotDt) + vol = moose.element( '/model/kinetics' ).volume + iterInit = 1000 + solutionVector = [] + factorArr = [] + + enz = moose.element(dosePath) + init = enz.kcat # Dose parameter + + # Change Dose here to . + for factor in range(factorBegin, factorEnd, factorStepsize ): + scale = factorExponent ** (factor/factorScale) + enz.kcat = init * scale + print(factor) + for num in range(iterInit): + stateType, solStatus, vector = getState( ksolve, state, vol) + if solStatus == 0: + solutionVector.append(vector[0]/sum(vector)) + factorArr.append(scale) + + joint = np.array([factorArr, solutionVector]) + joint = joint[:,joint[1,:].argsort()] + + # Plot dose response. + fig0 = plt.figure() + pylab.semilogx(joint[0,:],joint[1,:],marker="o",label = 'concA') + pylab.xlabel('Dose') + pylab.ylabel('Response') + pylab.suptitle('Dose-Reponse Curve for a bistable system') + + pylab.legend(loc=3) + #plt.savefig(outputDir + "/" + modelName +"_doseResponse" + ".png") + plt.show() + #plt.close(fig0) + quit() + + + +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalBistables/findSteadyState.py b/examples/tutorials/ChemicalBistables/findSteadyState.py new file mode 100644 index 0000000..b53c94b --- /dev/null +++ b/examples/tutorials/ChemicalBistables/findSteadyState.py @@ -0,0 +1,123 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2013 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +# This example sets up the kinetic solver and steady-state finder, on +# a bistable model. +# It looks for the fixed points 100 times, as follows: +# - Set up the random initial condition that fits the conservation laws +# - Run for 2 seconds. This should not be mathematically necessary, but +# for obscure numerical reasons it makes it much more likely that the +# steady state solver will succeed in finding a state. +# - Find the fixed point +# - Print out the fixed point vector and various diagnostics. +# - Run for 10 seconds. This is completely unnecessary, and is done here +# just so that the resultant graph will show what kind of state has been +# found. +# After it does all this, the program runs for 100 more seconds on the last +# found fixed point (which turns out to be a saddle node), then +# is hard-switched in the script to the first attractor basin from which +# it runs for another 100 seconds till it settles there, and then +# is hard-switched yet again to the second attractor and runs for 100 +# seconds. +# Looking at the output you will see many features of note: +# - the first attractor (stable point) and the saddle point +# (unstable fixed point) are both found quite often. But the second +# attractor is found just once. Has a very small basin of attraction. +# - The values found for each of the fixed points match well with the +# values found by running the system to steady-state at the end. +# - There are a large number of failures to find a fixed point. These are +# found and reported in the diagnostics. They show up on the plot +# as cases where the 10-second runs are not flat. +# +# If you wanted to find fixed points in a production model, you would +# not need to do the 10-second runs, and you would need to eliminate the +# cases where the state-finder failed. Then you could identify the good +# points and keep track of how many of each were found. +# There is no way to guarantee that all fixed points have been found using +# this algorithm! +# You may wish to sample concentration space logarithmically rather than +# linearly. + +import math +import pylab +import numpy +import moose + +def displayPlots(): + for x in moose.wildcardFind( '/model/graphs/conc#/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) #sec + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +def getState( ksolve, state ): + state.randomInit() + moose.start( 0.1 ) # Run the model for 2 seconds. + state.settle() + ''' + scale = 1.0 / ( 1e-15 * 6.022e23 ) + for x in ksolve.nVec[0]: + print x * scale, + # print ksolve.nVec[0] + print state.nIter, state.status, state.stateType, state.nNegEigenvalues, state.nPosEigenvalues, state.solutionStatus + ''' + moose.start( 20.0 ) # Run model for 10 seconds, just for display + + +def main(): + # Schedule the whole lot + moose.setClock( 4, 0.1 ) # for the computational objects + moose.setClock( 5, 0.2 ) # clock for the solver + moose.setClock( 8, 1.0 ) # for the plots + # The wildcard uses # for single level, and ## for recursive. + #compartment = makeModel() + moose.loadModel( '../../genesis/M1719.g', '/model', 'ee' ) + compartment = moose.element( 'model/kinetics' ) + compartment.name = 'compartment' + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + #ksolve.stoich = stoich + stoich.path = "/model/compartment/##" + state = moose.SteadyState( '/model/compartment/state' ) + moose.useClock( 5, '/model/compartment/ksolve', 'process' ) + moose.useClock( 8, '/model/graphs/#', 'process' ) + + moose.reinit() + state.stoich = stoich + #state.showMatrices() + state.convergenceCriterion = 1e-7 + + for i in range( 0, 50 ): + getState( ksolve, state ) + + moose.start( 100.0 ) # Run the model for 100 seconds. + + b = moose.element( '/model/compartment/b' ) + c = moose.element( '/model/compartment/c' ) + + # move most molecules over to b + b.conc = b.conc + c.conc * 0.95 + c.conc = c.conc * 0.05 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # move most molecules back to a + c.conc = c.conc + b.conc * 0.95 + b.conc = b.conc * 0.05 + moose.start( 100.0 ) # Run the model for 100 seconds. + + # Iterate through all plots, dump their contents to data.plot. + displayPlots() + + quit() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalBistables/mapkFB.png b/examples/tutorials/ChemicalBistables/mapkFB.png new file mode 100644 index 0000000000000000000000000000000000000000..62a1d730e828df26443ac4ed16ae2cf77d14c359 GIT binary patch literal 155914 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⁢6Xb*2sjAn?6e-F2Y*_MuRA*0AdGTg0!lx&N&c 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 Q$p8QV07*qoM6N<$f{K)+djJ3c literal 0 HcmV?d00001 diff --git a/examples/tutorials/ChemicalBistables/mapkFB.py b/examples/tutorials/ChemicalBistables/mapkFB.py new file mode 100644 index 0000000..7770f40 --- /dev/null +++ b/examples/tutorials/ChemicalBistables/mapkFB.py @@ -0,0 +1,80 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + +import moose +import matplotlib.pyplot as plt +import matplotlib.image as mpimg +import pylab +import numpy +import sys + +def main(): + """ + This example illustrates loading, and running a kinetic model + for a bistable positive feedback system, defined in kkit format. + This is based on Bhalla, Ram and Iyengar, Science 2002. + + The core of this model is a positive feedback loop comprising of + the MAPK cascade, PLA2, and PKC. It receives PDGF and Ca2+ as + inputs. + + This model is quite a large one and due to some stiffness in its + equations, it runs somewhat slowly. + + The simulation illustrated here shows how the model starts out in + a state of low activity. It is induced to 'turn on' when a + a PDGF stimulus is given for 400 seconds. + After it has settled to the new 'on' state, model is made to + 'turn off' + by setting the system calcium levels to zero for a while. This + is a somewhat unphysiological manipulation! + """ + solver = "gsl" # Pick any of gsl, gssa, ee.. + #solver = "gssa" # Pick any of gsl, gssa, ee.. + mfile = '../../genesis/acc35.g' + runtime = 2000.0 + if ( len( sys.argv ) == 2 ): + solver = sys.argv[1] + modelId = moose.loadModel( mfile, 'model', solver ) + # Increase volume so that the stochastic solver gssa + # gives an interesting output + compt = moose.element( '/model/kinetics' ) + compt.volume = 5e-19 + + moose.reinit() + moose.start( 500 ) + moose.element( '/model/kinetics/PDGFR/PDGF' ).concInit = 0.0001 + moose.start( 400 ) + moose.element( '/model/kinetics/PDGFR/PDGF' ).concInit = 0.0 + moose.start( 2000 ) + moose.element( '/model/kinetics/Ca' ).concInit = 0.0 + moose.start( 500 ) + moose.element( '/model/kinetics/Ca' ).concInit = 0.00008 + moose.start( 2000 ) + + # Display all plots. + img = mpimg.imread( 'mapkFB.png' ) + fig = plt.figure( figsize=(12, 10 ) ) + png = fig.add_subplot( 211 ) + imgplot = plt.imshow( img ) + ax = fig.add_subplot( 212 ) + x = moose.wildcardFind( '/model/#graphs/conc#/#' ) + t = numpy.arange( 0, x[0].vector.size, 1 ) * x[0].dt + ax.plot( t, x[0].vector, 'b-', label=x[0].name ) + ax.plot( t, x[1].vector, 'c-', label=x[1].name ) + ax.plot( t, x[2].vector, 'r-', label=x[2].name ) + ax.plot( t, x[3].vector, 'm-', label=x[3].name ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Time (seconds)' ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalBistables/propBis.png b/examples/tutorials/ChemicalBistables/propBis.png new file mode 100644 index 0000000000000000000000000000000000000000..27ac875c33b02dc27db9b8a6ac505cbf98c936c5 GIT binary patch literal 32574 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 J0OEiXAOTRL5?0L!>g-XyI3tdXD5A-4|w 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 HB= 2 ): + solver = sys.argv[1] + modelId = moose.loadModel( mfile, 'model', solver ) + # Increase volume so that the stochastic solver gssa + # gives an interesting output + compt = moose.element( '/model/kinetics' ) + compt.volume = 0.2e-19 + r = moose.element( '/model/kinetics/equil' ) + + moose.reinit() + moose.start( runtime ) + r.Kf *= 1.1 # small tap to break symmetry + moose.start( runtime/10 ) + r.Kf = r.Kb + moose.start( runtime ) + + r.Kb *= 2.0 # Moderate push does not tip it back. + moose.start( runtime/10 ) + r.Kb = r.Kf + moose.start( runtime ) + + r.Kb *= 5.0 # Strong push does tip it over + moose.start( runtime/10 ) + r.Kb = r.Kf + moose.start( runtime ) + r.Kf *= 5.0 # Strong push tips it back. + moose.start( runtime/10 ) + r.Kf = r.Kb + moose.start( runtime ) + + + # Display all plots. + img = mpimg.imread( 'strongBis.png' ) + fig = plt.figure( figsize=(12, 10 ) ) + png = fig.add_subplot( 211 ) + imgplot = plt.imshow( img ) + ax = fig.add_subplot( 212 ) + x = moose.wildcardFind( '/model/#graphs/conc#/#' ) + dt = moose.element( '/clock' ).tickDt[18] + t = numpy.arange( 0, x[0].vector.size, 1 ) * dt + ax.plot( t, x[0].vector, 'r-', label=x[0].name ) + ax.plot( t, x[1].vector, 'g-', label=x[1].name ) + ax.plot( t, x[2].vector, 'b-', label=x[2].name ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Time (seconds)' ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalOscillators/Kholodenko_tut.png b/examples/tutorials/ChemicalOscillators/Kholodenko_tut.png new file mode 100644 index 0000000000000000000000000000000000000000..590fada9e83bb999380aa4412e98fc90e24ed9d6 GIT binary patch literal 6257 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 Z&7UBSi%gjT!cPN$o|d6zg}PnD{{T0Hf{OqE literal 0 HcmV?d00001 diff --git a/examples/tutorials/ChemicalOscillators/TuringOneDim.py b/examples/tutorials/ChemicalOscillators/TuringOneDim.py new file mode 100644 index 0000000..1860cee --- /dev/null +++ b/examples/tutorials/ChemicalOscillators/TuringOneDim.py @@ -0,0 +1,169 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import math +import numpy +import matplotlib.pyplot as plt +import matplotlib.image as mpimg +import moose + +def makeModel(): + """ + This example illustrates how to set up a oscillatory Turing pattern + in 1-D using reaction diffusion calculations. + Reaction system is:: + + s ---a---> a // s goes to a, catalyzed by a. + s ---a---> b // s goes to b, catalyzed by a. + a ---b---> s // a goes to s, catalyzed by b. + b -------> s // b is degraded irreversibly to s. + + in sum, **a** has a positive feedback onto itself and also forms **b**. + **b** has a negative feedback onto **a**. + Finally, the diffusion constant for **a** is 1/10 that of **b**. + + This chemical system is present in a 1-dimensional (cylindrical) + compartment. The entire reaction-diffusion system is set up + within the script. + """ + # create container for model + r0 = 1e-6 # m + r1 = 1e-6 # m + num = 100 + diffLength = 1e-6 # m + len = num * diffLength # m + diffConst = 5e-12 # m^2/sec + motorRate = 1e-6 # m/sec + concA = 1 # millimolar + dt4 = 0.02 # for the diffusion + dt5 = 0.2 # for the reaction + + model = moose.Neutral( 'model' ) + compartment = moose.CylMesh( '/model/compartment' ) + compartment.r0 = r0 + compartment.r1 = r1 + compartment.x0 = 0 + compartment.x1 = len + compartment.diffLength = diffLength + + assert( compartment.numDiffCompts == num ) + + # create molecules and reactions + a = moose.Pool( '/model/compartment/a' ) + b = moose.Pool( '/model/compartment/b' ) + s = moose.Pool( '/model/compartment/s' ) + e1 = moose.MMenz( '/model/compartment/e1' ) + e2 = moose.MMenz( '/model/compartment/e2' ) + e3 = moose.MMenz( '/model/compartment/e3' ) + r1 = moose.Reac( '/model/compartment/r1' ) + moose.connect( e1, 'sub', s, 'reac' ) + moose.connect( e1, 'prd', a, 'reac' ) + moose.connect( a, 'nOut', e1, 'enzDest' ) + e1.Km = 1 + e1.kcat = 1 + + moose.connect( e2, 'sub', s, 'reac' ) + moose.connect( e2, 'prd', b, 'reac' ) + moose.connect( a, 'nOut', e2, 'enzDest' ) + e2.Km = 1 + e2.kcat = 0.5 + + moose.connect( e3, 'sub', a, 'reac' ) + moose.connect( e3, 'prd', s, 'reac' ) + moose.connect( b, 'nOut', e3, 'enzDest' ) + e3.Km = 0.1 + e3.kcat = 1 + + moose.connect( r1, 'sub', b, 'reac' ) + moose.connect( r1, 'prd', s, 'reac' ) + r1.Kf = 0.3 # 1/sec + r1.Kb = 0 # 1/sec + + # Assign parameters + a.diffConst = diffConst/10 + b.diffConst = diffConst + s.diffConst = 0 + + # Make solvers + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + dsolve = moose.Dsolve( '/model/dsolve' ) + # Set up clocks. The dsolver to know before assigning stoich + moose.setClock( 4, dt4 ) + moose.setClock( 5, dt5 ) + moose.useClock( 4, '/model/dsolve', 'process' ) + # Ksolve must be scheduled after dsolve. + moose.useClock( 5, '/model/compartment/ksolve', 'process' ) + + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.dsolve = dsolve + stoich.path = "/model/compartment/##" + assert( dsolve.numPools == 3 ) + a.vec.concInit = [0.1]*num + a.vec[0].concInit *= 1.2 # slight perturbation at one end. + b.vec.concInit = [0.1]*num + s.vec.concInit = [1]*num + +def displayPlots(): + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + pos = numpy.arange( 0, a.vec.conc.size, 1 ) + pylab.plot( pos, a.vec.conc, label='a' ) + pylab.plot( pos, b.vec.conc, label='b' ) + pylab.legend() + pylab.show() + +def main(): + runtime = 400 + displayInterval = 2 + makeModel() + dsolve = moose.element( '/model/dsolve' ) + moose.reinit() + #moose.start( runtime ) # Run the model for 10 seconds. + + a = moose.element( '/model/compartment/a' ) + b = moose.element( '/model/compartment/b' ) + s = moose.element( '/model/compartment/s' ) + + img = mpimg.imread( 'turingPatternTut.png' ) + #imgplot = plt.imshow( img ) + #plt.show() + + plt.ion() + fig = plt.figure( figsize=(12,10) ) + png = fig.add_subplot(211) + imgplot = plt.imshow( img ) + ax = fig.add_subplot(212) + ax.set_ylim( 0, 0.5 ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Position along cylinder (microns)' ) + pos = numpy.arange( 0, a.vec.conc.size, 1 ) + line1, = ax.plot( pos, a.vec.conc, label='a' ) + line2, = ax.plot( pos, b.vec.conc, label='b' ) + timeLabel = plt.text(60, 0.4, 'time = 0') + plt.legend() + fig.canvas.draw() + + for t in range( displayInterval, runtime, displayInterval ): + moose.start( displayInterval ) + line1.set_ydata( a.vec.conc ) + line2.set_ydata( b.vec.conc ) + timeLabel.set_text( "time = %d" % t ) + fig.canvas.draw() + + print( "Hit 'enter' to exit" ) + raw_input() + + + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalOscillators/relaxOsc_tut.png b/examples/tutorials/ChemicalOscillators/relaxOsc_tut.png new file mode 100644 index 0000000000000000000000000000000000000000..154cd222592e52ff854f2160cac1a932382d745d GIT binary patch literal 49157 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 2 ): + solver = sys.argv[1] + modelId = moose.loadModel( mfile, 'model', solver ) + # Increase volume so that the stochastic solver gssa + # gives an interesting output + compt = moose.element( '/model/kinetics' ) + compt.volume = 1e-19 + dt = moose.element( '/clock' ).tickDt[18] # 18 is the plot clock. + + moose.reinit() + moose.start( runtime ) + + # Display all plots. + img = mpimg.imread( 'relaxOsc_tut.png' ) + fig = plt.figure( figsize=(12, 10 ) ) + png = fig.add_subplot( 211 ) + imgplot = plt.imshow( img ) + ax = fig.add_subplot( 212 ) + x = moose.wildcardFind( '/model/#graphs/conc#/#' ) + t = numpy.arange( 0, x[0].vector.size, 1 ) * dt + ax.plot( t, x[0].vector, 'b-', label=x[0].name ) + ax.plot( t, x[1].vector, 'c-', label=x[1].name ) + ax.plot( t, x[2].vector, 'r-', label=x[2].name ) + ax.plot( t, x[3].vector, 'm-', label=x[3].name ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Time (seconds)' ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalOscillators/repressillator.py b/examples/tutorials/ChemicalOscillators/repressillator.py new file mode 100644 index 0000000..5e754e7 --- /dev/null +++ b/examples/tutorials/ChemicalOscillators/repressillator.py @@ -0,0 +1,89 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2014 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### + + +import moose +import matplotlib.pyplot as plt +import matplotlib.image as mpimg +import pylab +import numpy +import sys + +def main(): + """ + This example illustrates the classic **Repressilator** model, based on + Elowitz and Liebler, Nature 2000. The model has the basic architecture:: + + A ---| B---| C + T | + | | + |____________| + + where **A**, **B**, and **C** are genes whose products repress + eachother. The plunger symbol indicates inhibition. The model + uses the Gillespie (stochastic) method by default but you can run it + using a deterministic method by saying ``python repressillator.py gsl`` + + Good things to do with this model include: + + * Ask what it would take to change period of repressillator: + + * Change inhibitor rates:: + + inhib = moose.element( '/model/kinetics/TetR_gene/inhib_reac' ) + moose.showfields( inhib ) + inhib.Kf *= 0.1 + + * Change degradation rates:: + + degrade = moose.element( '/model/kinetics/TetR_gene/TetR_degradation' ) + degrade.Kf *= 10.0 + * Run in stochastic mode: + + * Change volumes, figure out how many molecules are present:: + + lac = moose.element( '/model/kinetics/lac_gene/lac' ) + print lac.n`` + + * Find when it becomes hopelessly unreliable with small volumes. + """ + #solver = "gsl" # Pick any of gsl, gssa, ee.. + solver = "gssa" # Pick any of gsl, gssa, ee.. + mfile = '../../genesis/Repressillator.g' + runtime = 6000.0 + if ( len( sys.argv ) >= 2 ): + solver = sys.argv[1] + modelId = moose.loadModel( mfile, 'model', solver ) + # Increase volume so that the stochastic solver gssa + # gives an interesting output + compt = moose.element( '/model/kinetics' ) + compt.volume = 1e-19 + dt = moose.element( '/clock' ).tickDt[18] + + moose.reinit() + moose.start( runtime ) + + # Display all plots. + img = mpimg.imread( 'repressillatorOsc.png' ) + fig = plt.figure( figsize=(12, 10 ) ) + png = fig.add_subplot( 211 ) + imgplot = plt.imshow( img ) + ax = fig.add_subplot( 212 ) + x = moose.wildcardFind( '/model/#graphs/conc#/#' ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Time (seconds)' ) + for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): + t = numpy.arange( 0, x.vector.size, 1 ) * dt + pylab.plot( t, x.vector, label=x.name ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalOscillators/repressillatorOsc.png b/examples/tutorials/ChemicalOscillators/repressillatorOsc.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9824fc920a31d5ed16c5b71adb3a682c257271 GIT binary patch literal 12364 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 2 ): + solver = sys.argv[1] + modelId = moose.loadModel( mfile, 'model', solver ) + dt = moose.element( '/clock' ).tickDt[18] + moose.reinit() + moose.start( runtime ) + + # Display all plots. + img = mpimg.imread( 'Kholodenko_tut.png' ) + fig = plt.figure( figsize=( 12, 10 ) ) + png = fig.add_subplot( 211 ) + imgplot = plt.imshow( img ) + ax = fig.add_subplot( 212 ) + x = moose.wildcardFind( '/model/#graphs/conc#/#' ) + t = numpy.arange( 0, x[0].vector.size, 1 ) * dt + ax.plot( t, x[0].vector * 100, 'b-', label='Ras-MKKK * 100' ) + ax.plot( t, x[1].vector, 'y-', label='MKKK-P' ) + ax.plot( t, x[2].vector, 'm-', label='MKK-PP' ) + ax.plot( t, x[3].vector, 'r-', label='MAPK-PP' ) + plt.ylabel( 'Conc (mM)' ) + plt.xlabel( 'Time (seconds)' ) + pylab.legend() + pylab.show() + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/tutorials/ChemicalOscillators/turingPatternTut.png b/examples/tutorials/ChemicalOscillators/turingPatternTut.png new file mode 100644 index 0000000000000000000000000000000000000000..e45d84d15424f447af4259208a6a7aab50f5e9cb GIT binary patch literal 107356 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 z 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 literal 0 HcmV?d00001 diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py new file mode 100644 index 0000000..aa35d46 --- /dev/null +++ b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py @@ -0,0 +1,395 @@ + +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network is based on: +Ostojic, S. (2014). +Two types of asynchronous activity in networks of +excitatory and inhibitory spiking neurons. +Nat Neurosci 17, 594-600. + +Key parameter to change is synaptic coupling J (mV). +Critical J is ~ 0.45e-3 V in paper for C/N = 0.1 +See what happens for J = 0.2e-3 V versus J = 0.8e-3 V + +Author: Aditya Gilra, NCBS, Bangalore, October, 2014. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import time +import moose + +import random + +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +el = -65e-3 #V # Resting potential +vt = -45e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms in Ostojic 2014. +vr = -55e-3 #V # Reset potential +inp = 20.1e-3/taum #V/s # inp = Iinject/Cm to each neuron + # same as setting el=-41 mV and inp=0 +Iinject = inp*Cm # LIF neuron has injection current as param + +############################################# +# Network parameters: numbers +############################################# + +N = 1000 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 10.0 #s # Simulation time +dt = 1e-5 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.8e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 5.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = 0.5e-3 + dt # s # synaptic delay: + # 0 ms gives similar result contrary to Ostojic?! +refrT = 0.5e-3 # s # absolute refractory time -- 0 ms gives similar result + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + self.network.vec.inject = self.Iinject + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime+dt,dt) + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + # moose simulation + # moose auto-schedules + #moose.useClock( 0, '/network/syns', 'process' ) + #moose.useClock( 1, '/network', 'process' ) + #moose.useClock( 2, '/plotSpikes', 'process' ) + #moose.useClock( 3, '/plotVms', 'process' ) + #moose.useClock( 3, '/plotWeights', 'process' ) + for i in range(10): + moose.setClock( i, dt ) + + t1 = time.time() + print('reinit MOOSE') + moose.reinit() + print('reinit time t = ', time.time() - t1) + t1 = time.time() + print('starting') + moose.start(self.simtime) + print('runtime, t = ', time.time() - t1) + + if plotif: + self._plot() + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + # not using random.sample() here since Brian version isn't + #nrnIdxs = random.sample(range(self.N),numVms) + nrnIdxs = list(range(self.N)) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self): + """ plots the spike raster for the simulated net""" + + plt.figure() + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + plt.plot(spikes,[i]*len(spikes),\ + 'b.',marker=',',label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + plt.plot(spikes,[i]*len(spikes),\ + 'r.',marker=',',label=label) + plt.xlabel('Time [ms]') + plt.ylabel('Neuron number [#]') + plt.xlim([0,self.simtime]) + plt.title("%s" % self, fontsize=14,fontweight='bold') + plt.legend(loc='upper left') + +############################################# +# Exc-Inh network class with connections (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each LIF neuron has one incoming synapse SimpleSynHandler, + ## which collects the activation from all presynaptic neurons + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + self.syns = moose.SimpleSynHandler( '/network/syns', self.N ); + moose.connect( self.syns, 'activationOut', self.network, \ + 'activation', 'OneToOne' ) + + random.seed(100) # set seed for reproducibility of simulations + ## Connections from some Exc/Inh neurons to each neuron + for i in range(0,self.N): + ## each neuron has incC number of synapses + self.syns.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.syns.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.syns.vec[i].synapse[self.excC+synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.J*self.scaleI + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + ## individual neuron Vm-s + plt.figure() + tlen = len(net.plots.vec[0].vector) + plt.plot(net.trange[:tlen],net.plots.vec[0].vector) + plt.plot(net.trange[:tlen],net.plots.vec[1].vector) + plt.plot(net.trange[:tlen],net.plots.vec[2].vector) + plt.xlabel('time (s)') + plt.ylabel('Vm (V)') + plt.title("Vm-s of 3 LIF neurons (spike = reset).") + + timeseries = net.trange + ## individual neuron firing rates + fig = plt.figure() + plt.subplot(221) + num_to_plot = 10 + #rates = [] + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[nrni].vector,simtime,dt) + plt.plot(timeseries[:len(rate)],rate) + plt.title("Rates of "+str(num_to_plot)+" exc nrns") + plt.ylabel("Hz") + #plt.ylim(0,100) + plt.subplot(222) + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt) + plt.plot(timeseries[:len(rate)],rate) + plt.title("Rates of "+str(num_to_plot)+" inh nrns") + #plt.ylim(0,100) + + ## population firing rates + plt.subplot(223) + allspikes = [] + for nrni in range(net.NmaxExc): + allspikes.extend(net.spikes.vec[nrni].vector) + #rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ + # /float(net.NmaxExc) # per neuron + rate = rate_from_spiketrain(allspikes,simtime,dt)\ + /float(net.NmaxExc) # per neuron + plt.plot(timeseries[:len(rate)],rate) + #plt.ylim(0,100) + plt.title("Exc population rate") + plt.ylabel("Hz") + plt.xlabel("Time (s)") + plt.subplot(224) + rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ + /float(net.N-net.NmaxExc) # per neuron + plt.plot(timeseries[:len(rate)],rate) + #plt.ylim(0,100) + plt.title("Inh population rate") + plt.xlabel("Time (s)") + + fig.tight_layout() + +if __name__=='__main__': + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print(net) + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + ## not distributing Vm-s randomly to ensure match with Brian data + #net.simulate(simtime,plotif=True,\ + # v0=np.random.uniform(el-20e-3,vt,size=N)) + net.simulate(simtime,plotif=True,\ + v0=np.linspace(el-20e-3,vt,N)) + + extra_plots(net) + plt.show() + diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py new file mode 100644 index 0000000..2c9859b --- /dev/null +++ b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py @@ -0,0 +1,253 @@ + +''' +The LIF network is based on: +Ostojic, S. (2014). + Two types of asynchronous activity in networks of + excitatory and inhibitory spiking neurons. + Nat Neurosci 17, 594-600. + +Key parameter to change is synaptic coupling J (mV). +Tested with Brian 1.4.1 + +Written by Aditya Gilra, CAMP 2014, Bangalore, 20 June, 2014. +Updated to match MOOSE implementation by Aditya Gilra, Jan, 2015. +Currently, simtime and dt are modified to compare across MOOSE, Brian1 and Brian2. +''' + +#import modules and functions to be used +from brian import * # importing brian also does: + # 'from pylab import *' which imports: + # matplot like commands into the namespace, further + # also can use np. for numpy and mpl. for matplotlib +import random +import time + +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations + +# ########################################### +# Simulation parameters +# ########################################### + +simdt = 0.01*ms +simtime = 10.0*second # Simulation time +defaultclock.dt = simdt # Brian's default sim time step +dt = defaultclock.dt/second # convert to value in seconds + +clocknrn = Clock(dt=simdt,order=0) +clocksyn = Clock(dt=simdt,order=1) + +# ########################################### +# Neuron model +# ########################################### + +# equation: dv/dt=(1/taum)*(-(v-el)) +# with spike when v>vt, reset to vr + +el = -65.*mV # Resting potential +vt = -45.*mV # Spiking threshold +taum = 20.*ms # Membrane time constant +vr = -55.*mV # Reset potential +inp = 20.1*mV/taum # input I/C to each neuron + # same as setting el=-41 mV and inp=0 +taur = 0.5*ms # Refractory period +taudelay = 0.5*ms + dt*second # synaptic delay + +eqs_neurons=''' +dv/dt=(1/taum)*(-(v-el))+inp : volt +''' + +# ########################################### +# Network parameters: numbers +# ########################################### + +N = 1000 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +# ########################################### +# Network parameters: synapses +# ########################################### + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +excC = int(fC*C) # number of exc incoming connections +J = 0.8*mV # exc strength is J (in mV as we add to voltage) + # Critical J is ~ 0.45 mV in paper for N = 1000, C = 1000 +g = 5.0 # -gJ is the inh strength. For exc-inh balance g>~f(1-f)=4 + +# ########################################### +# Initialize neuron (sub)groups +# ########################################### + +neurons=NeuronGroup(N,model=eqs_neurons,\ + threshold='v>=vt',reset=vr,refractory=taur,clock=clocknrn) +Pe=neurons.subgroup(NE) +Pi=neurons.subgroup(NI) +# not distributing uniformly to ensure match with MOOSE +#Pe.v = uniform(el,vt+10*mV,NE) +#Pi.v = uniform(el,vt+10*mV,NI) +neurons.v = linspace(el/mV-20,vt/mV,N)*mV + +# ########################################### +# Connecting the network +# ########################################### + +sparseness_e = fC*C/float(NE) +sparseness_i = (1-fC)*C/float(NI) +# Follow Dale's law -- exc (inh) neurons only have +ve (-ve) synapses. +con_e = Synapses(Pe,neurons,'',pre='v_post+=J',clock=clocksyn) +con_i = Synapses(Pi,neurons,'',pre='v_post+=-g*J',clock=clocksyn) +# I don't use Brian's connect_random, +# instead I use the same algorithm and seed as in the MOOSE version +#con_e.connect_random(sparseness=sparseness_e) +#con_i.connect_random(sparseness=sparseness_i) +## Connections from some Exc/Inh neurons to each neuron +random.seed(100) # set seed for reproducibility of simulations +for i in range(0,N): + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(NE),excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + con_e[preIdx,i]=True + ## draw inhC=C-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(N-NE),C-excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + con_i[preIdx,i]=True +con_e.delay = taudelay +con_i.delay = taudelay + +# ########################################### +# Setting up monitors +# ########################################### + +Nmon = N +Nmon_exc = int(fexc*Nmon) +Pe_mon = Pe.subgroup(Nmon_exc) +sm_e = SpikeMonitor(Pe_mon) +Pi_mon = Pi.subgroup(Nmon-Nmon_exc) +sm_i = SpikeMonitor(Pi_mon) + +# Population monitor +popm_e = PopulationRateMonitor(Pe,bin=1.*ms) +popm_i = PopulationRateMonitor(Pi,bin=1.*ms) + +# voltage monitor +sm_e_vm = StateMonitor(Pe,'v',record=range(10),clock=clocknrn) + +# ########################################### +# Simulate +# ########################################### + +print "Setup complete, running for",simtime,"at dt =",dt,"s." +t1 = time.time() +run(simtime,report='text') +print 'inittime + runtime, t = ', time.time() - t1 + +print "For g,J =",g,J,"mean exc rate =",\ + sm_e.nspikes/float(Nmon_exc)/(simtime/second),'Hz.' +print "For g,J =",g,J,"mean inh rate =",\ + sm_i.nspikes/float(Nmon-Nmon_exc)/(simtime/second),'Hz.' + +# ########################################### +# Analysis functions +# ########################################### + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units, + remember to divide fulltime and dt by second + """ + sigma = tau/2. + # normalized Gaussian kernel, integral with dt is normed to 1 + # to count as 1 spike smeared over a finite interval + norm_factor = 1./(sqrt(2.*pi)*sigma) + gauss_kernel = array([norm_factor*exp(-x**2/(2.*sigma**2))\ + for x in arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + # need to accommodate half kernel_len on either side of fulltime + rate_full = zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + # only the middle fulltime part of the rate series + # This is already in Hz, + # since should have multiplied by dt for above convolution + # and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +# ########################################### +# Make plots +# ########################################### + +fig = figure() +# Vm plots +timeseries = arange(0,simtime/second+dt,dt) +for i in range(3): + plot(timeseries[:len(sm_e_vm[i])],sm_e_vm[i]) + +fig = figure() +# raster plots +subplot(231) +raster_plot(sm_e,ms=1.) +title(str(Nmon_exc)+" exc neurons") +xlabel("") +xlim([0,simtime/ms]) +subplot(234) +raster_plot(sm_i,ms=1.) +title(str(Nmon-Nmon_exc)+" inh neurons") +subplot(232) + +# firing rates +timeseries = arange(0,simtime/second+dt,dt) +num_to_plot = 10 +#rates = [] +for nrni in range(num_to_plot): + rate = rate_from_spiketrain(sm_e[nrni],simtime/second,dt) + plot(timeseries[:len(rate)],rate) + #print mean(rate),len(sm_e[nrni]) + #rates.append(rate) +title(str(num_to_plot)+" exc rates") +ylabel("Hz") +ylim(0,300) +subplot(235) +for nrni in range(num_to_plot): + rate = rate_from_spiketrain(sm_i[nrni],simtime/second,dt) + plot(timeseries[:len(rate)],rate) + #print mean(rate),len(sm_i[nrni]) + #rates.append(rate) +title(str(num_to_plot)+" inh rates") +ylim(0,300) +#print "Mean rate = ",mean(rates) +xlabel("Time (s)") +ylabel("Hz") + +# Population firing rates +subplot(233) +timeseries = arange(0,simtime/second,dt) +allspikes = [] +for nrni in range(NE): + allspikes.extend(sm_e[nrni]) +#plot(timeseries,popm_e.smooth_rate(width=50.*ms,filter="gaussian"),color='grey') +rate = rate_from_spiketrain(allspikes,simtime/second,dt)/float(NE) +plot(timeseries[:len(rate)],rate) +title("Exc population rate") +ylabel("Hz") +subplot(236) +timeseries = arange(0,simtime/second,dt) +allspikes = [] +for nrni in range(NI): + allspikes.extend(sm_i[nrni]) +#plot(timeseries,popm_i.smooth_rate(width=50.*ms,filter="gaussian"),color='grey') +rate = rate_from_spiketrain(allspikes,simtime/second,dt)/float(NI) +plot(timeseries[:len(rate)],rate) +title("Inh population rate") +xlabel("Time (s)") +ylabel("Hz") + +fig.tight_layout() + +show() diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py new file mode 100644 index 0000000..c4c7770 --- /dev/null +++ b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py @@ -0,0 +1,243 @@ + +''' +The LIF network is based on: +Ostojic, S. (2014). + Two types of asynchronous activity in networks of + excitatory and inhibitory spiking neurons. + Nat Neurosci 17, 594-600. + +Key parameter to change is synaptic coupling J (mV). +Tested with Brian 1.4.1 + +Written by Aditya Gilra, CAMP 2014, Bangalore, 20 June, 2014. +Updated to match MOOSE implementation by Aditya Gilra, Jan, 2015. +Currently, simtime and dt are modified to compare across MOOSE, Brian1 and Brian2. +''' + +#import modules and functions to be used +from brian2 import * # importing brian also does: + # 'from pylab import *' which imports: + # matplot like commands into the namespace, further + # also can use np. for numpy and mpl. for matplotlib +#prefs.codegen.target='numpy' +#prefs.codegen.target='weave' +set_device('cpp_standalone') +import random +import time + +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations + +# ########################################### +# Simulation parameters +# ########################################### + +simdt = 0.01*ms +simtime = 10.0*second # Simulation time +defaultclock.dt = simdt # Brian's default sim time step +dt = defaultclock.dt/second # convert to value in seconds + +# ########################################### +# Neuron model +# ########################################### + +# equation: dv/dt=(1/taum)*(-(v-el)) +# with spike when v>vt, reset to vr + +el = -65.*mV # Resting potential +vt = -45.*mV # Spiking threshold +taum = 20.*ms # Membrane time constant +vr = -55.*mV # Reset potential +inp = 20.1*mV/taum # input I/C to each neuron + # same as setting el=-41 mV and inp=0 +taur = 0.5*ms # Refractory period +taudelay = 0.5*ms + dt*second # synaptic delay + +eqs_neurons=''' +dv/dt=(1/taum)*(-(v-el))+inp : volt +''' + +# ########################################### +# Network parameters: numbers +# ########################################### + +N = 1000 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +# ########################################### +# Network parameters: synapses +# ########################################### + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +excC = int(fC*C) # number of exc incoming connections +J = 0.8*mV # exc strength is J (in mV as we add to voltage) + # Critical J is ~ 0.45 mV in paper for N = 1000, C = 1000 +g = 5.0 # -gJ is the inh strength. For exc-inh balance g>~f(1-f)=4 + +# ########################################### +# Initialize neuron (sub)groups +# ########################################### + +P=NeuronGroup(N,model=eqs_neurons,\ + threshold='v>=vt',reset='v=vr',refractory=taur,method='euler') +# not distributing uniformly to ensure match with MOOSE +#Pe.v = uniform(el,vt+10*mV,NE) +#Pi.v = uniform(el,vt+10*mV,NI) +P.v = linspace(el/mV-20,vt/mV,N)*mV + +# ########################################### +# Connecting the network +# ########################################### + +sparseness_e = fC*C/float(NE) +sparseness_i = (1-fC)*C/float(NI) +# Follow Dale's law -- exc (inh) neurons only have +ve (-ve) synapses +# hence need to set w correctly (always set after creating connections +con = Synapses(P,P,'w:volt',pre='v_post+=w',method='euler') +# I don't use Brian's connect_random, +# instead I use the same algorithm and seed as in the MOOSE version +#con_e.connect_random(sparseness=sparseness_e) +#con_i.connect_random(sparseness=sparseness_i) +## Connections from some Exc/Inh neurons to each neuron +random.seed(100) # set seed for reproducibility of simulations +conn_i = [] +conn_j = [] +for j in range(0,N): + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxsE = random.sample(range(NE),excC) + ## draw inhC=C-excC number of neuron indices out of inhibitory neurons + preIdxsI = random.sample(range(NE,N),C-excC) + ## connect these presynaptically to i-th post-synaptic neuron + ## choose the synapses object based on whether post-syn nrn is exc or inh + conn_i += preIdxsE + conn_j += [j]*excC + conn_i += preIdxsI + conn_j += [j]*(C-excC) +con.connect(conn_i,conn_j) +con.delay = taudelay +con.w['i=NE'] = -g*J + +# ########################################### +# Setting up monitors +# ########################################### + +Nmon = N +sm = SpikeMonitor(P) + +# Population monitor +popm = PopulationRateMonitor(P) + +# voltage monitor +sm_vm = StateMonitor(P,'v',record=range(10)+range(NE,NE+10)) + +# ########################################### +# Simulate +# ########################################### + +print "Setup complete, running for",simtime,"at dt =",dt,"s." +t1 = time.time() +run(simtime,report='text') +device.build(directory='output', compile=True, run=True, debug=False) +print 'inittime + runtime, t = ', time.time() - t1 + +#print "For g,J =",g,J,"mean exc rate =",\ +# sm_e.num_spikes/float(NE)/(simtime/second),'Hz.' +#print "For g,J =",g,J,"mean inh rate =",\ +# sm_i.num_spikes/float(NI)/(simtime/second),'Hz.' + +# ########################################### +# Analysis functions +# ########################################### + +tau=50e-3 +sigma = tau/2. +# normalized Gaussian kernel, integral with dt is normed to 1 +# to count as 1 spike smeared over a finite interval +norm_factor = 1./(sqrt(2.*pi)*sigma) +gauss_kernel = array([norm_factor*exp(-x**2/(2.*sigma**2))\ + for x in arange(-5.*sigma,5.*sigma+dt,dt)]) +def rate_from_spiketrain(spikemon,fulltime,nrnidx=None): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units, + remember to divide fulltime and dt by second + """ + if nrnidx is None: + spiketimes = spikemon.t # take spiketimes of all neurons + else: + # take spiketimes of only neuron index nrnidx + spiketimes = spikemon.t[where(spikemon.i==nrnidx)[0]] + kernel_len = len(gauss_kernel) + # need to accommodate half kernel_len on either side of fulltime + rate_full = zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + # only the middle fulltime part of the rate series + # This is already in Hz, + # since should have multiplied by dt for above convolution + # and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +# ########################################### +# Make plots +# ########################################### + +fig = figure() +# Vm plots +timeseries = arange(0,simtime/second+dt,dt) +for i in range(3): + plot(timeseries[:len(sm_vm.t)],sm_vm[i].v) + +fig = figure() +# raster plots +subplot(231) +plot(sm.t,sm.i,',') +title(str(N)+" exc & inh neurons") +xlim([0,simtime/second]) +xlabel("") + +print "plotting firing rates" +subplot(232) +# firing rates +timeseries = arange(0,simtime/second+dt,dt) +num_to_plot = 10 +#rates = [] +for nrni in range(num_to_plot): + rate = rate_from_spiketrain(sm,simtime/second,nrni) + plot(timeseries[:len(rate)],rate) + #print mean(rate),len(sm_e[nrni]) + #rates.append(rate) +title(str(num_to_plot)+" exc rates") +ylabel("Hz") +ylim(0,300) +subplot(235) +for nrni in range(NE,NE+num_to_plot): + rate = rate_from_spiketrain(sm,simtime/second,nrni) + plot(timeseries[:len(rate)],rate) + #print mean(rate),len(sm_i[nrni]) + #rates.append(rate) +title(str(num_to_plot)+" inh rates") +ylim(0,300) +#print "Mean rate = ",mean(rates) +xlabel("Time (s)") +ylabel("Hz") + +print "plotting pop firing rates" +# Population firing rates +subplot(233) +timeseries = arange(0,simtime/second,dt) +#plot(timeseries,popm_e.smooth_rate(width=50.*ms,filter="gaussian"),color='grey') +rate = rate_from_spiketrain(sm,simtime/second)/float(N) +plot(timeseries[:len(rate)],rate) +title("population rate") +ylabel("Hz") +xlabel("Time (s)") + +fig.tight_layout() + +show() diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py new file mode 100644 index 0000000..92b8f12 --- /dev/null +++ b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py @@ -0,0 +1,262 @@ + +''' +The LIF network is based on: +Ostojic, S. (2014). + Two types of asynchronous activity in networks of + excitatory and inhibitory spiking neurons. + Nat Neurosci 17, 594-600. + +Key parameter to change is synaptic coupling J (mV). +Tested with Brian 1.4.1 + +Written by Aditya Gilra, CAMP 2014, Bangalore, 20 June, 2014. +Updated to match MOOSE implementation by Aditya Gilra, Jan, 2015. +Currently, simtime and dt are modified to compare across MOOSE, Brian1 and Brian2. +''' + +#import modules and functions to be used +from brian2 import * # importing brian also does: + # 'from pylab import *' which imports: + # matplot like commands into the namespace, further + # also can use np. for numpy and mpl. for matplotlib +#prefs.codegen.target='numpy' +prefs.codegen.target='weave' +import random +import time + +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations + +# ########################################### +# Simulation parameters +# ########################################### + +simdt = 0.001*ms +simtime = 0.2*second # Simulation time +defaultclock.dt = simdt # Brian's default sim time step +dt = defaultclock.dt/second # convert to value in seconds + +# ########################################### +# Neuron model +# ########################################### + +# equation: dv/dt=(1/taum)*(-(v-el)) +# with spike when v>vt, reset to vr + +el = -65.*mV # Resting potential +vt = -45.*mV # Spiking threshold +taum = 20.*ms # Membrane time constant +vr = -55.*mV # Reset potential +inp = 20.1*mV/taum # input I/C to each neuron + # same as setting el=-41 mV and inp=0 +taur = 0.5*ms # Refractory period +taudelay = 0.5*ms + dt*second # synaptic delay + +eqs_neurons=''' +dv/dt=(1/taum)*(-(v-el))+inp : volt +''' + +# ########################################### +# Network parameters: numbers +# ########################################### + +N = 1000 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +# ########################################### +# Network parameters: synapses +# ########################################### + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +excC = int(fC*C) # number of exc incoming connections +J = 0.8*mV # exc strength is J (in mV as we add to voltage) + # Critical J is ~ 0.45 mV in paper for N = 1000, C = 1000 +g = 5.0 # -gJ is the inh strength. For exc-inh balance g>~f(1-f)=4 + +# ########################################### +# Initialize neuron (sub)groups +# ########################################### + +Pe=NeuronGroup(NE,model=eqs_neurons,\ + threshold='v>=vt',reset='v=vr',refractory=taur) +Pi=NeuronGroup(NI,model=eqs_neurons,\ + threshold='v>=vt',reset='v=vr',refractory=taur) +# not distributing uniformly to ensure match with MOOSE +#Pe.v = uniform(el,vt+10*mV,NE) +#Pi.v = uniform(el,vt+10*mV,NI) +vrange = linspace(el/mV-20,vt/mV,N)*mV +Pe.v = vrange[:NE] +Pi.v = vrange[NE:N] + +# ########################################### +# Connecting the network +# ########################################### + +sparseness_e = fC*C/float(NE) +sparseness_i = (1-fC)*C/float(NI) +# Follow Dale's law -- exc (inh) neurons only have +ve (-ve) synapses. +con_ee = Synapses(Pe,Pe,'',pre='v_post+=J') +con_ie = Synapses(Pe,Pi,'',pre='v_post+=J') +con_ei = Synapses(Pi,Pe,'',pre='v_post+=-g*J') +con_ii = Synapses(Pi,Pi,'',pre='v_post+=-g*J') +# I don't use Brian's connect_random, +# instead I use the same algorithm and seed as in the MOOSE version +#con_e.connect_random(sparseness=sparseness_e) +#con_i.connect_random(sparseness=sparseness_i) +## Connections from some Exc/Inh neurons to each neuron +random.seed(100) # set seed for reproducibility of simulations +print "Creating connections (very slow, use the optimized script)" +for i in range(0,N): + if i%100==0: print "Connecting post syn nrn",i + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxsE = random.sample(range(NE),excC) + ## draw inhC=C-excC number of neuron indices out of inhibitory neurons + preIdxsI = random.sample(range(N-NE),C-excC) + ## connect these presynaptically to i-th post-synaptic neuron + ## choose the synapses object based on whether post-syn nrn is exc or inh + if ivt, reset to vr + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 11.5e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +red_fact = 10 # reduction factor for N,C,J +N = 10000/red_fact # Total number of neurons # 10000 in paper +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30.0 #s # Simulation time +dt = 1e-3 #s # time step # 1e-5 in paper + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 500/red_fact # Number of incoming connections on each neuron (exc or inh) + # 5% conn prob between any two neurons + # Since we reduced N from 10000 to 1000, C = 50 instead of 500 + # but we need to increase J by 10 to maintain total input per neuron +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.1e-3 #V # exc strength is J (in V as we add to voltage) # 0.1 in paper + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +J *= red_fact # Multiply J by red_fact to compensate C/red_fact. +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay is same as time step +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +### accelerated values compared to Higgins et al 2014, faster plasticity +#CaPre = 1.2 # mM +#CaPost = 2.0 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +#eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears +eqWeight = 0.15 # from Fig 5 of Higgins et al, simulated, in vitro params + +bistable = False # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + print("Noise injections being set ...") + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = self.Iinject + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=self.T ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + self.noiseTables.vec[i].stopTime = self.simtime + + print("init membrane potentials being set ... ") + self._init_network(**kwargs) + print("initializing plots ... ") + if plotif: + self._init_plots() + + ## MOOSE simulation + + ## MOOSE assigns clocks by default, no need to set manually + #print "setting clocks ... " + #moose.useClock( 1, '/network', 'process' ) + #moose.useClock( 2, '/plotSpikes', 'process' ) + #moose.useClock( 3, '/plotVms', 'process' ) + #if CaPlasticity: + # moose.useClock( 3, '/plotWeights', 'process' ) + # moose.useClock( 3, '/plotCa', 'process' ) + ## Do need to set the dt for MOOSE clocks + for i in range(10): + moose.setClock( i, dt ) + + t1 = time.time() + print('reinit MOOSE -- takes a while ~20s.') + moose.reinit() + print('reinit time t = ', time.time() - t1) + t1 = time.time() + print('starting run ...') + moose.start(self.simtime) + print('runtime, t = ', time.time() - t1) + + if plotif: + self._plot() + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(list(range(self.N)),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self): + """ plots the spike raster for the simulated net""" + + plt.figure() + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + plt.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.',label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + plt.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.',label=label) + plt.xlabel('Time (s)') + plt.ylabel('Neuron number [#]') + plt.xlim([0,self.simtime]) + plt.title("%s" % self, fontsize=14,fontweight='bold') + plt.legend(loc='upper left') + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + if CaPlasticity: + self.recNCa = 5 # number of synapses for which to record Ca + # as range(self.N) is too large + self.recNwt = 20 # number of synapses for which to record weights + + ## make tables to store weights of recN exc synapses + self.weightsEq = moose.Table( '/plotWeightsEq', self.recNwt ) + wtidx = 0 + for i in range(self.N): + for j in range(self.excC): + if self.excC*i+j not in self.potSyns: + moose.connect( self.weightsEq.vec[wtidx], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + wtidx += 1 + if wtidx >= self.recNwt: break + ## break only breaks out of one loop, hence repeated here! + if wtidx >= self.recNwt: break + + self.weightsUp = moose.Table( '/plotWeightsUp', self.recNwt ) + for i in range(self.recNwt): # range(self.N) is too large + moose.connect( self.weightsUp.vec[i], 'requestOut', + self.synsEE.vec[self.potSyns[i]].synapse[0], 'getWeight') + + self.CaTables = moose.Table( '/plotCa', self.recNCa ) + for i in range(self.recNCa): # range(self.N) is too large + moose.connect( self.CaTables.vec[i], 'requestOut', + self.synsEE.vec[i*self.excC], 'getCa') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + #moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + self.potSyns = [] # list of potentiated synapses + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + prelist = list(range(self.NmaxExc)) + prelist.remove(i) # disallow autapse + preIdxs = random.sample(prelist,self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + ## for Fig 5 of paper + if np.random.uniform()<0.05: + synij.weight = 1.0 + self.potSyns.append(synidx) + else: + synij.weight = self.J # no weightScale if not plastic, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + prelist = list(range(self.NmaxExc,self.N)) + prelist.remove(i+self.NmaxExc) # disallow autapse + preIdxs = random.sample(prelist,self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + #moose.useClock( 0, '/network/synsIE', 'process' ) + #moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=200e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots, save data +############################################# + +def save_data(net): + f = open("fig5_data.pickle", "wb") + timeseries = net.trange + pickle.dump((timeseries,simtime,dt),f) + pickle.dump((net.N,net.NmaxExc),f) + for nrni in range(net.N): + pickle.dump(net.spikes.vec[nrni].vector,f) + pickle.dump(net.spikesExc.vector,f) + pickle.dump(net.spikesInh.vector,f) + if CaPlasticity: + pickle.dump(net.recNCa,f) + for i in range(net.recNCa): + pickle.dump(net.CaTables.vec[i].vector[:len(timeseries)],f) + pickle.dump(net.recNwt,f) + for i,wtarray in enumerate(net.weightsEq.vec): + pickle.dump(wtarray.vector[:len(timeseries)],f) + for i,wtarray in enumerate(net.weightsUp.vec): + pickle.dump(wtarray.vector[:len(timeseries)],f) + ## all EE weights are used for a histogram + weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ + for i in range(net.NmaxExc) for j in range(net.excC) ] + pickle.dump(weights,f) + f.close() + +####### figure defaults +label_fontsize = 8 # pt +plot_linewidth = 0.5 # pt +linewidth = 1.0#0.5 +axes_linewidth = 0.5 +marker_size = 3.0 # markersize=<...> +cap_size = 2.0 # for errorbar caps, capsize=<...> +columnwidth = 85/25.4 # inches +twocolumnwidth = 174/25.4 # inches +linfig_height = columnwidth*2.0/3.0 +fig_dpi = 300 + +def set_tick_widths(ax,tick_width): + for tick in ax.xaxis.get_major_ticks(): + tick.tick1line.set_markeredgewidth(tick_width) + tick.tick2line.set_markeredgewidth(tick_width) + for tick in ax.xaxis.get_minor_ticks(): + tick.tick1line.set_markeredgewidth(tick_width) + tick.tick2line.set_markeredgewidth(tick_width) + for tick in ax.yaxis.get_major_ticks(): + tick.tick1line.set_markeredgewidth(tick_width) + tick.tick2line.set_markeredgewidth(tick_width) + for tick in ax.yaxis.get_minor_ticks(): + tick.tick1line.set_markeredgewidth(tick_width) + tick.tick2line.set_markeredgewidth(tick_width) + +def axes_labels(ax,xtext,ytext,adjustpos=False,\ + fontsize=label_fontsize,xpad=None,ypad=None): + ax.set_xlabel(xtext,fontsize=fontsize,labelpad=xpad) + # increase xticks text sizes + for label in ax.get_xticklabels(): + label.set_fontsize(fontsize) + ax.set_ylabel(ytext,fontsize=fontsize,labelpad=ypad) + # increase yticks text sizes + for label in ax.get_yticklabels(): + label.set_fontsize(fontsize) + if adjustpos: + ## [left,bottom,width,height] + ax.set_position([0.135,0.125,0.84,0.75]) + set_tick_widths(ax,axes_linewidth) + +def biglegend(legendlocation='upper right',ax=None,\ + fontsize=label_fontsize, **kwargs): + if ax is not None: + leg=ax.legend(loc=legendlocation, **kwargs) + else: + leg=plt.legend(loc=legendlocation, **kwargs) + # increase legend text sizes + for t in leg.get_texts(): + t.set_fontsize(fontsize) + +def load_plot_Fig5(): + if os.path.isfile("fig5_data.pickle"): + f = open("fig5_data.pickle", "rb") + else: + print("You need to simulate first before loading data file.") + print("re-run with sim as a command line argument.") + sys.exit() + fig = plt.figure(facecolor="w",\ + figsize=(columnwidth,linfig_height),dpi=fig_dpi) + timeseries,simtime,dt = pickle.load(f) + + ## population firing rates + N,NmaxExc = pickle.load(f) + ax = plt.subplot(211) + for nrni in range(N): + strain = pickle.load(f) + #plt.plot(strain,[nrni]*len(strain),'.') + strainExc = pickle.load(f) + rate = rate_from_spiketrain(np.array(strainExc),simtime,dt)\ + /float(NmaxExc) # per neuron + plt.plot(timeseries/60,rate,label="exc",linewidth=plot_linewidth) + strainInh = pickle.load(f) + rate = rate_from_spiketrain(np.array(strainInh),simtime,dt)\ + /float(N-NmaxExc) # per neuron + plt.plot(timeseries/60,rate,label="inh",linewidth=plot_linewidth) + #biglegend() + plt.ylim(0,2) + plt.xticks([]) + axes_labels(ax,"","mean rate (Hz)") + + if CaPlasticity: + NCa = pickle.load(f) + #plt.subplot(312) + caconcs = [] + for i in range(NCa): + caconcs.append(pickle.load(f)) + #plt.plot(timeseries/60,np.mean(caconcs,axis=0)) + + ax = plt.subplot(212) + Nwt = pickle.load(f) + wtarrayseq = [] + for i in range(Nwt): + wtarray = pickle.load(f) + wtarrayseq.append(wtarray) + plt.plot(timeseries/60,wtarray,color='#ffaaaa',\ + linewidth=plot_linewidth) + + wtarraysup = [] + for i in range(Nwt): + wtarray = pickle.load(f) + wtarraysup.append(wtarray) + plt.plot(timeseries/60,wtarray,color='#aaaaff',\ + linewidth=plot_linewidth) + plt.plot(timeseries/60,np.mean(wtarrayseq,axis=0),color='r',\ + linewidth=plot_linewidth) + plt.plot(timeseries/60,np.mean(wtarraysup,axis=0),color='b',\ + linewidth=plot_linewidth) + #plt.title("Evolution of efficacies",fontsize=label_fontsize) + axes_labels(ax,"Time (min)","Efficacy") + + #plt.subplot(133) + ### all EE weights are used for a histogram + weights = pickle.load(f) + #plt.hist(weights, bins=100) + #plt.title("Histogram of efficacies") + #plt.xlabel("Efficacy (arb)") + #plt.ylabel("# per bin") + + fig.tight_layout() + # plt.show( ) + # f.close() + # fig.savefig("HGB2014_Fig5ab_MOOSE.tif",dpi=fig_dpi) + +def extra_plots(net): + ## extra plots apart from the spike rasters + ## individual neuron Vm-s + plt.figure() + plt.plot(net.trange,net.plots.vec[0].vector[0:len(net.trange)]) + plt.plot(net.trange,net.plots.vec[1].vector[0:len(net.trange)]) + plt.plot(net.trange,net.plots.vec[2].vector[0:len(net.trange)]) + plt.xlabel('time (s)') + plt.ylabel('Vm (V)') + plt.title("Vm-s of 3 LIF neurons (spike = reset).") + + timeseries = net.trange + ## individual neuron firing rates + fig = plt.figure() + plt.subplot(221) + num_to_plot = 10 + #rates = [] + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[nrni].vector,simtime,dt) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" exc nrns") + plt.ylabel("Hz") + plt.ylim(0,100) + plt.subplot(222) + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" inh nrns") + plt.ylim(0,100) + + ## population firing rates + plt.subplot(223) + rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ + /float(net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Exc population rate") + plt.ylabel("Hz") + plt.xlabel("Time (s)") + plt.subplot(224) + rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ + /float(net.N-net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Inh population rate") + plt.xlabel("Time (s)") + + fig.tight_layout() + + ## Ca plasticity: weight vs time plots + if CaPlasticity: + ## Ca versus time in post-synaptic neurons + plt.figure() + for i in range(net.recNCa): # range(net.N) is too large + plt.plot(timeseries,\ + net.CaTables.vec[i].vector[:len(timeseries)]) + plt.title("Evolution of Ca in some neurons") + plt.xlabel("Time (s)") + plt.ylabel("Ca (mM)") + + plt.figure() + wtarrays = np.zeros((len(timeseries),net.recNwt)) + for i,wtarray in enumerate(net.weightsEq.vec): + wtarrays[:,i] = wtarray.vector[:len(timeseries)] + plt.plot(timeseries,wtarrays[:,i],color='r',alpha=0.2) + plt.plot(timeseries,np.mean(wtarrays,axis=1),color='r') + for i,wtarray in enumerate(net.weightsUp.vec): + wtarrays[:,i] = wtarray.vector[:len(timeseries)] + plt.plot(timeseries,wtarrays[:,i],color='b',alpha=0.2) + plt.plot(timeseries,np.mean(wtarrays,axis=1),color='b') + plt.title("Evolution of some efficacies") + plt.xlabel("Time (s)") + plt.ylabel("Efficacy") + + ## all EE weights are used for a histogram + weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ + for i in range(net.NmaxExc) for j in range(net.excC) ] + plt.figure() + plt.hist(weights, bins=100) + plt.title("Histogram of efficacies") + plt.xlabel("Efficacy (arb)") + plt.ylabel("# per bin") + +if __name__=='__main__': + if 'sim' in sys.argv: + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print(net) + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + print("Preparing to simulate ... ") + net.simulate(simtime,plotif=True,\ + v0=np.random.uniform(el-10e-3,vt+1e-3,size=N)) + + save_data(net) + #extra_plots(net) + else: + print("just plotting old results for Fig 5.") + print("To simulate and save, give sim as commandline argument.") + load_plot_Fig5() + plt.show() diff --git a/examples/tutorials/Rdesigneur/cells/970529c.CNG.swc b/examples/tutorials/Rdesigneur/cells/970529c.CNG.swc new file mode 100644 index 0000000..6b8748e --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/970529c.CNG.swc @@ -0,0 +1,2493 @@ +# Original file 970529c.out.swc edited by Duncan Donohue using StdSwc version 1.21 on 8/16/05. +# Irregularities and fixes documented in 970529c.out.swc.std. See StdSwc1.21.doc for more information. +# +# Claiborne to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu +# Original fileName:C:\Documents and Settings\Admin\Desktop\Jaffe\970529c.out +# +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0 0 0 42.789 -1 + 2 3 -3.25 -3.95 -1.35 2.485 1 + 3 3 -4.34 -5.37 -1.38 1.955 2 + 4 3 -5.86 -5.37 -1.38 1.955 3 + 5 3 -5.64 -8.92 -1.38 1.955 4 + 6 3 -6.73 -11.41 -1.38 1.955 5 + 7 3 -8.03 -13.01 -1.38 1.955 6 + 8 3 -8.9 -14.61 -1.38 1.775 7 + 9 3 -9.55 -16.74 -1.38 1.775 8 + 10 3 -10.42 -17.27 0.67 1.955 9 + 11 3 -10.42 -17.8 0.67 1.955 10 + 12 3 -12.16 -18.87 0.67 0.89 11 + 13 3 -13.46 -20.65 -1.74 0.89 12 + 14 3 -15.42 -22.25 -1.74 0.89 13 + 15 3 -16.28 -23.84 -4.51 0.71 14 + 16 3 -18.46 -25.8 -4.51 0.71 15 + 17 3 -20.63 -27.93 -4.51 0.71 16 + 18 3 -21.71 -29.35 -6.68 0.71 17 + 19 3 -23.67 -32.02 -6.68 0.71 18 + 20 3 -25.19 -33.26 -6.68 0.71 19 + 21 3 -26.87 -35.31 -6.68 0.71 20 + 22 3 -28.39 -37.45 -6.68 0.71 21 + 23 3 -30.13 -38.69 -6.68 0.71 22 + 24 3 -31.43 -38.36 -7.26 0.71 23 + 25 3 -31.65 -41.2 -7.26 0.71 24 + 26 3 -33.61 -43.33 -7.26 0.71 25 + 27 3 -34.69 -45.46 -7.7 0.71 26 + 28 3 -36.21 -47.95 -7.7 0.71 27 + 29 3 -36.99 -50.85 -7.7 0.71 28 + 30 3 -38.29 -52.8 -7.7 0.71 29 + 31 3 -38.94 -54.58 -7.7 0.71 30 + 32 3 -39.59 -56.71 -7.7 0.71 31 + 33 3 -40.24 -58.84 -7.7 0.71 32 + 34 3 -41.11 -61.15 -7.7 0.71 33 + 35 3 -41.98 -63.46 -7.7 0.71 34 + 36 3 -43.02 -65.34 -7.7 0.71 35 + 37 3 -44.98 -66.94 -7.05 0.71 36 + 38 3 -46.06 -68.38 -7.34 0.71 37 + 39 3 -48.45 -71.04 -7.34 0.71 38 + 40 3 -49.54 -72.82 -7.34 0.71 39 + 41 3 -51.27 -74.6 -7.14 0.71 40 + 42 3 -53.01 -76.55 -7.14 0.71 41 + 43 3 -54.31 -78.68 -7.14 0.71 42 + 44 3 -55.86 -81.29 -7.14 0.71 43 + 45 3 -57.59 -83.07 -7.14 0.71 44 + 46 3 -59.33 -85.56 -7.14 0.71 45 + 47 3 -60.85 -88.22 -7.14 0.71 46 + 48 3 -61.8 -88.72 -7.14 0.71 47 + 49 3 -63.11 -89.43 -9.1 0.71 48 + 50 3 -64.84 -90.67 -12.48 0.71 49 + 51 3 -67.02 -91.38 -14.43 0.71 50 + 52 3 -68.54 -92.45 -15.53 0.71 51 + 53 3 -70.71 -93.87 -15.53 0.71 52 + 54 3 -72.45 -95.47 -15.53 0.71 53 + 55 3 -73.31 -97.42 -15.53 0.71 54 + 56 3 -74.18 -100.08 -17.04 0.71 55 + 57 3 -74.83 -102.75 -17.04 0.71 56 + 58 3 -74.5 -104.76 -17.04 0.71 57 + 59 3 -74.72 -106.18 -15.7 0.71 58 + 60 3 -75.15 -108.84 -15.7 0.71 59 + 61 3 -76.02 -111.15 -15.7 0.71 60 + 62 3 -77.11 -113.29 -15.7 0.71 61 + 63 3 -78.63 -115.77 -17.44 0.71 62 + 64 3 -80.15 -117.55 -17.44 0.71 63 + 65 3 -80.79 -120.07 -17.44 0.71 64 + 66 3 -80.79 -121.14 -20.1 0.71 65 + 67 3 -82.26 -123.16 -20.1 0.71 66 + 68 3 -83.78 -125.29 -20.1 0.71 67 + 69 3 -84.43 -127.24 -20.1 0.71 68 + 70 3 -85.51 -129.02 -20.1 0.71 69 + 71 3 -87.9 -130.26 -20.1 0.71 70 + 72 3 -88.77 -132.04 -20.1 0.71 71 + 73 3 -89.64 -134 -20.1 0.71 72 + 74 3 -92.03 -136.84 -20.1 0.71 73 + 75 3 -93.67 -138.89 -20.1 0.71 74 + 76 3 -94.82 -140.58 -20.1 0.71 75 + 77 3 -96.34 -141.65 -20.1 0.71 76 + 78 3 -98.3 -142.18 -20.1 0.71 77 + 79 3 -99.82 -143.6 -20.1 0.71 78 + 80 3 -100.47 -145.02 -20.1 0.71 79 + 81 3 -101.55 -146.09 -20.1 0.71 80 + 82 3 -80.79 -123.27 -20.1 0.71 66 + 83 3 -81 -125.4 -20.1 0.71 82 + 84 3 -82.09 -128.06 -20.1 0.71 83 + 85 3 -82.09 -130.2 -20.1 0.71 84 + 86 3 -82.31 -130.91 -20.1 0.71 85 + 87 3 -82.31 -131.26 -19.08 0.71 86 + 88 3 -82.74 -133.04 -19.08 0.71 87 + 89 3 -82.95 -134.31 -19.08 0.71 88 + 90 3 -82.74 -135.74 -19.08 0.71 89 + 91 3 -61.15 -89.6 -5.21 0.71 47 + 92 3 -62.46 -92.82 -5.21 0.71 91 + 93 3 -63.54 -95.67 -5.21 0.71 92 + 94 3 -64.41 -97.8 -5.21 0.71 93 + 95 3 -65.06 -100.28 -5.21 0.71 94 + 96 3 -65.28 -101.88 -5.21 0.71 95 + 97 3 -65.71 -104.55 -5.21 0.71 96 + 98 3 -65.95 -107.94 -5.21 0.71 97 + 99 3 -66.19 -110.6 -5.21 0.71 98 + 100 3 -66.62 -113.09 -5.21 0.71 99 + 101 3 -66.62 -114.86 -5.46 0.71 100 + 102 3 -67.27 -116.28 -5.46 0.71 101 + 103 3 -68.14 -117.88 -5.46 0.71 102 + 104 3 -67.92 -119.66 -3.45 0.71 103 + 105 3 -67.72 -121.38 -3.45 0.71 104 + 106 3 -67.07 -124.05 -3.45 0.71 105 + 107 3 -67.72 -126.36 -3.45 0.71 106 + 108 3 -67.72 -128.49 -3.45 0.71 107 + 109 3 -68.37 -130.09 0.1 0.71 108 + 110 3 -68.37 -132.75 0.1 0.71 109 + 111 3 -69.67 -133.99 0.1 0.71 110 + 112 3 -70.11 -135.77 0.1 0.71 111 + 113 3 -69.48 -139.14 0.1 0.71 112 + 114 3 -69.27 -140.73 0.26 0.71 113 + 115 3 -69.48 -142.69 0.26 0.71 114 + 116 3 -69.7 -144.46 0.26 0.71 115 + 117 3 -69.48 -146.24 2.1 0.71 116 + 118 3 -68.62 -148.91 2.1 0.71 117 + 119 3 -70.14 -150.68 2.1 0.71 118 + 120 3 -70.14 -151.52 1.9 0.89 119 + 121 3 -10.6 -19.79 0.67 1.245 11 + 122 3 -10.82 -20.86 0.67 1.065 121 + 123 3 -11.25 -22.63 3.11 1.065 122 + 124 3 -11.69 -23.34 3.11 1.065 123 + 125 3 -11.91 -24.05 3.1 1.065 124 + 126 3 -12.77 -25.12 3.1 0.89 125 + 127 3 -13.86 -26.72 3.1 0.89 126 + 128 3 -15.16 -28.5 2.5 0.89 127 + 129 3 -16.68 -30.45 2.5 0.89 128 + 130 3 -17.34 -32.05 4.34 0.89 129 + 131 3 -18.2 -33.65 4.34 0.89 130 + 132 3 -19.29 -34.18 6.59 0.89 131 + 133 3 -19.72 -35.07 6.06 0.89 132 + 134 3 -20.94 -35.93 6.06 0.71 133 + 135 3 -22.24 -37.71 6.06 0.71 134 + 136 3 -23.54 -38.95 8.27 0.71 135 + 137 3 -25.5 -40.02 9.75 0.71 136 + 138 3 -26.58 -40.73 12.12 0.71 137 + 139 3 -28.1 -40.91 14.37 0.71 138 + 140 3 -29.84 -40.73 15.93 0.71 139 + 141 3 -31.36 -40.91 17.94 0.71 140 + 142 3 -33.1 -41.26 20.75 0.71 141 + 143 3 -34.83 -42.15 22.3 0.71 142 + 144 3 -36.35 -43.04 24.67 0.71 143 + 145 3 -39.18 -44.46 26.14 0.71 144 + 146 3 -42.72 -46.04 26.14 0.71 145 + 147 3 -45.11 -46.22 28.64 0.71 146 + 148 3 -47.5 -46.75 31.14 0.71 147 + 149 3 -49.67 -47.82 30.56 0.71 148 + 150 3 -52.5 -48 30.56 0.71 149 + 151 3 -54.89 -48.89 30.56 0.71 150 + 152 3 -57.06 -49.24 30.56 0.71 151 + 153 3 -59.66 -49.96 30.56 0.71 152 + 154 3 -62.04 -50.13 33.3 0.71 153 + 155 3 -65.3 -51.02 33.3 0.71 154 + 156 3 -68.13 -51.73 33.3 0.71 155 + 157 3 -71.17 -53.15 32.83 0.71 156 + 158 3 -73.99 -54.4 32.83 0.71 157 + 159 3 -76.59 -55.64 32.83 0.71 158 + 160 3 -78.39 -56.69 32.83 0.71 159 + 161 3 -80.34 -57.6 32.83 0.71 160 + 162 3 -82.51 -58.13 32.83 0.71 161 + 163 3 -84.03 -59.02 32.83 0.71 162 + 164 3 -85.55 -59.73 34.9 0.71 163 + 165 3 -87.29 -59.91 34.9 0.71 164 + 166 3 -89.25 -59.91 34.9 0.71 165 + 167 3 -92.07 -61.15 36.86 0.71 166 + 168 3 -94.24 -63.28 36.86 0.71 167 + 169 3 -95.34 -65.4 36.86 0.71 168 + 170 3 -96.86 -67 36.86 0.71 169 + 171 3 -98.16 -68.24 36.86 0.71 170 + 172 3 -99.03 -69.13 36.86 0.71 171 + 173 3 -100.55 -70.02 36.86 0.71 172 + 174 3 -102.28 -71.08 36.86 0.71 173 + 175 3 -103.15 -71.79 36.42 0.71 174 + 176 3 -103.59 -72.86 32.87 0.71 175 + 177 3 -104.67 -74.99 32.87 0.71 176 + 178 3 -105.33 -77.12 32.87 0.71 177 + 179 3 -106.41 -78.9 32.87 0.71 178 + 180 3 -107.12 -80.29 32.87 0.71 179 + 181 3 -19.94 -36.85 3.29 0.71 133 + 182 3 -20.81 -37.73 3.29 0.71 181 + 183 3 -21.68 -39.51 4.88 0.71 182 + 184 3 -21.56 -41.92 1.67 0.71 183 + 185 3 -22.64 -43.87 2.73 0.71 184 + 186 3 -23.08 -46.18 0.45 0.71 185 + 187 3 -24.38 -48.32 0.45 0.71 186 + 188 3 -25.03 -50.45 0.45 0.71 187 + 189 3 -26.34 -52.58 0.45 0.71 188 + 190 3 -26.55 -54.71 0.45 0.71 189 + 191 3 -27.44 -56.21 -1.87 0.71 190 + 192 3 -28.03 -59.1 -2.98 0.71 191 + 193 3 -29.11 -61.94 -2.98 0.71 192 + 194 3 -29.55 -64.6 -2.98 0.71 193 + 195 3 -30.2 -67.09 -5.04 0.71 194 + 196 3 -30.63 -69.22 -6.86 0.71 195 + 197 3 -31.07 -71.36 -6.86 0.71 196 + 198 3 -31.59 -74.5 -6.86 0.71 197 + 199 3 -32.24 -76.45 -6.86 0.71 198 + 200 3 -33.11 -78.41 -6.42 0.71 199 + 201 3 -33.11 -81.25 -6.42 0.71 200 + 202 3 -33.33 -83.56 -6.42 0.71 201 + 203 3 -33.55 -84.8 -6.42 0.71 202 + 204 3 -33.55 -86.04 -6.86 0.89 203 + 205 3 -34.72 -86.76 -6.86 0.71 204 + 206 3 -35.59 -88.71 -6.86 0.71 205 + 207 3 -36.24 -89.98 -7.02 0.71 206 + 208 3 -36.89 -92.28 -7.78 0.71 207 + 209 3 -37.54 -94.42 -10.3 0.71 208 + 210 3 -37.98 -96.19 -10.3 0.71 209 + 211 3 -38.63 -98.15 -10.3 0.71 210 + 212 3 -39.28 -99.57 -10.62 0.71 211 + 213 3 -39.28 -100.81 -12.82 0.71 212 + 214 3 -39.9 -103.35 -12.82 0.71 213 + 215 3 -40.55 -105.13 -12.54 0.71 214 + 216 3 -41.2 -106.2 -13.25 0.71 215 + 217 3 -42.34 -107.47 -13.25 0.71 216 + 218 3 -43.86 -109.06 -13.25 0.71 217 + 219 3 -45.38 -110.13 -13.25 0.71 218 + 220 3 -46.03 -111.73 -13.25 0.71 219 + 221 3 -46.46 -113.15 -16.46 0.71 220 + 222 3 -47.98 -115.3 -16.46 0.71 221 + 223 3 -49.07 -117.44 -18.34 0.71 222 + 224 3 -51.02 -118.15 -18.34 0.71 223 + 225 3 -53.19 -119.57 -20.06 0.71 224 + 226 3 -55.37 -120.81 -20.06 0.71 225 + 227 3 -57.4 -122.11 -21.44 0.71 226 + 228 3 -59.36 -123 -24.04 0.71 227 + 229 3 -61.1 -124.95 -24.04 0.71 228 + 230 3 -63.48 -126.55 -24.04 0.71 229 + 231 3 -65.87 -128.51 -24.04 0.71 230 + 232 3 -67.18 -130.46 -27.01 0.71 231 + 233 3 -69.57 -131.35 -27.01 0.71 232 + 234 3 -71.74 -134.55 -27.01 0.71 233 + 235 3 -73.91 -135.61 -27.8 0.71 234 + 236 3 -76.22 -136.53 -30.56 0.71 235 + 237 3 -77.96 -137.07 -30.56 0.71 236 + 238 3 -80.35 -138.13 -30.56 0.71 237 + 239 3 -81.65 -139.2 -30.56 0.71 238 + 240 3 -83.17 -139.73 -30.56 0.71 239 + 241 3 -84.69 -141.15 -30.56 0.71 240 + 242 3 -86.43 -142.57 -30.56 0.71 241 + 243 3 -87.32 -144.27 -30.56 0.71 242 + 244 3 -89.49 -145.33 -30.56 0.71 243 + 245 3 -91.44 -146.22 -30.56 0.71 244 + 246 3 -41.42 -108.68 -15.42 0.71 216 + 247 3 -41.86 -111.88 -15.42 0.71 246 + 248 3 -41.86 -114.01 -15.34 0.71 247 + 249 3 -42.07 -116.15 -15.34 0.71 248 + 250 3 -41.38 -119.46 -16.16 0.71 249 + 251 3 -41.18 -121.77 -19.07 0.71 250 + 252 3 -41.83 -123.91 -18.58 0.71 251 + 253 3 -41.62 -125.86 -18.58 0.71 252 + 254 3 -41.62 -127.99 -20.79 0.71 253 + 255 3 -40.96 -130.48 -20.79 0.71 254 + 256 3 -40.96 -132.97 -22.38 0.71 255 + 257 3 -40.18 -135.18 -22.38 0.71 256 + 258 3 -40.4 -137.31 -24.36 0.71 257 + 259 3 -41.27 -139.08 -24.36 0.71 258 + 260 3 -41.7 -140.51 -26.77 0.71 259 + 261 3 -44.09 -142.64 -29.73 0.71 260 + 262 3 -44.96 -144.41 -29.73 0.71 261 + 263 3 -45.18 -146.01 -29.73 0.71 262 + 264 3 -45.18 -148.5 -29.73 0.71 263 + 265 3 -44.38 -151.06 -29.73 0.71 264 + 266 3 -43.36 -153.55 -29.73 0.71 265 + 267 3 -43.36 -155.15 -29.73 0.71 266 + 268 3 -33.55 -87.82 -5.68 0.71 204 + 269 3 -34.2 -90.66 -5.68 0.71 268 + 270 3 -34.42 -92.62 -5.68 0.71 269 + 271 3 -35.07 -95.1 -5.68 0.71 270 + 272 3 -35.5 -97.24 -5.68 0.71 271 + 273 3 -35.5 -99.72 -5.68 0.71 272 + 274 3 -34.63 -101.32 -5.68 0.71 273 + 275 3 -34.67 -103.04 -5.68 0.71 274 + 276 3 -35.1 -104.82 -6.99 0.71 275 + 277 3 -35.32 -106.42 -6.99 0.71 276 + 278 3 -35.54 -108.37 -6.99 0.71 277 + 279 3 -35.97 -109.79 -8.37 0.71 278 + 280 3 -35.97 -110.86 -8.37 0.71 279 + 281 3 -35.97 -111.22 -8.37 0.71 280 + 282 3 -37.35 -112.89 -8.37 0.71 281 + 283 3 -38.66 -115.02 -8.37 0.71 282 + 284 3 -39.31 -116.8 -8.37 0.71 283 + 285 3 -40.39 -117.68 -8.37 0.71 284 + 286 3 -41.26 -119.46 -8.37 0.71 285 + 287 3 -41.7 -120.7 -8.37 0.71 286 + 288 3 -43.43 -122.84 -8.37 0.71 287 + 289 3 -44.95 -124.08 -8.37 0.71 288 + 290 3 -46.26 -125.86 -8.37 0.71 289 + 291 3 -47.13 -127.63 -10.46 0.71 290 + 292 3 -48.14 -130.42 -10.46 0.71 291 + 293 3 -48.48 -132.24 -7.5 0.71 292 + 294 3 -49.79 -134.55 -7.5 0.71 293 + 295 3 -49.57 -136.86 -6.16 0.71 294 + 296 3 -50.66 -138.46 -7.18 0.71 295 + 297 3 -53.04 -140.24 -7.18 0.71 296 + 298 3 -55 -141.84 -4.03 0.71 297 + 299 3 -57.17 -142.37 -4.03 0.71 298 + 300 3 -58.91 -144.5 -4.03 0.71 299 + 301 3 -61.51 -145.75 -4.03 0.71 300 + 302 3 -63.6 -148.18 -3.6 0.71 301 + 303 3 -65.56 -149.78 -3.6 0.71 302 + 304 3 -66.86 -151.73 -3.6 0.71 303 + 305 3 -68.16 -152.44 -0.13 0.71 304 + 306 3 -68.62 -152.44 -0.76 0.71 305 + 307 3 -69.48 -152.97 -0.76 0.71 306 + 308 3 -35.32 -113.17 -10.42 0.71 281 + 309 3 -35.32 -117.08 -10.42 0.71 308 + 310 3 -35.25 -119.15 -10.42 0.71 309 + 311 3 -35.03 -121.29 -11.3 0.71 310 + 312 3 -34.82 -123.06 -11.3 0.71 311 + 313 3 -34.38 -124.48 -11.42 0.71 312 + 314 3 -33.73 -124.66 -11.42 0.71 313 + 315 3 -33.73 -126.79 -11.42 0.71 314 + 316 3 -33.51 -128.57 -11.42 0.71 315 + 317 3 -32.64 -129.99 -11.42 0.71 316 + 318 3 -31.56 -132.48 -11.42 0.71 317 + 319 3 -31.2 -135.26 -11.42 0.71 318 + 320 3 -30.55 -136.86 -11.42 0.71 319 + 321 3 -29.69 -139.17 -11.42 0.71 320 + 322 3 -29.04 -140.59 -11.42 0.71 321 + 323 3 -27.96 -141.84 -11.42 0.71 322 + 324 3 -28.61 -143.44 -11.42 0.71 323 + 325 3 -27.52 -143.97 -14.1 0.71 324 + 326 3 -27.31 -146.99 -14.1 0.71 325 + 327 3 -26.58 -148.51 -14.1 0.71 326 + 328 3 -25.8 -150.07 -14.1 0.71 327 + 329 3 -24.93 -151.49 -14.1 0.71 328 + 330 3 -23.41 -152.91 -14.1 0.71 329 + 331 3 -22.11 -153.62 -14.1 0.71 330 + 332 3 -20.8 -154.68 -14.1 0.71 331 + 333 3 -21.24 -157.17 -17.15 0.71 332 + 334 3 -20.59 -159.3 -17.15 0.71 333 + 335 3 -20.15 -160.72 -17.15 0.71 334 + 336 3 -19.28 -162.32 -17.15 0.71 335 + 337 3 -17.76 -162.15 -17.15 0.71 336 + 338 3 -17.11 -164.46 -17.15 0.71 337 + 339 3 -15.76 -166.02 -17.15 0.71 338 + 340 3 -14.68 -167.8 -17.15 0.71 339 + 341 3 -14.03 -168.51 -19.01 0.71 340 + 342 3 -12.75 -169.71 -19.01 0.71 341 + 343 3 -10.39 -25.65 6.52 0.71 125 + 344 3 -10.17 -27.43 7.42 0.71 343 + 345 3 -8.65 -28.32 7.42 0.71 344 + 346 3 -8.87 -30.1 7.42 0.71 345 + 347 3 -8.65 -32.4 10.22 0.71 346 + 348 3 -7.52 -34.06 13.02 0.71 347 + 349 3 -6.43 -35.66 15.02 0.71 348 + 350 3 -5.13 -37.08 14.17 0.71 349 + 351 3 -4.69 -39.21 14.17 0.71 350 + 352 3 -4.26 -40.63 16.77 0.71 351 + 353 3 -3.39 -42.41 16.22 0.71 352 + 354 3 -2.31 -43.65 16.22 0.71 353 + 355 3 -1.22 -45.61 18.72 0.71 354 + 356 3 -0.13 -47.03 19.02 0.71 355 + 357 3 1.1 -48.66 19.02 0.71 356 + 358 3 2.19 -49.37 21.17 0.71 357 + 359 3 3.92 -50.97 22.74 0.71 358 + 360 3 5.88 -52.39 22.74 0.71 359 + 361 3 7.83 -54.34 22.74 0.71 360 + 362 3 8.92 -55.76 24.71 0.71 361 + 363 3 9.79 -57.36 22.82 0.71 362 + 364 3 10.66 -59.32 22.82 0.71 363 + 365 3 11.31 -61.27 22.82 0.71 364 + 366 3 12.61 -62.87 22.82 0.71 365 + 367 3 13.67 -65.35 22.82 0.71 366 + 368 3 13.45 -67.66 24.69 0.71 367 + 369 3 13.23 -69.79 26.55 0.71 368 + 370 3 13.23 -72.28 26.55 0.71 369 + 371 3 12.36 -75.12 26.55 0.71 370 + 372 3 12.15 -77.96 26.55 0.71 371 + 373 3 13.27 -80.17 26.55 0.71 372 + 374 3 14.57 -83.01 26.55 0.71 373 + 375 3 16.31 -84.61 26.55 0.71 374 + 376 3 17.61 -86.03 25.15 0.71 375 + 377 3 18.91 -87.28 25.15 0.71 376 + 378 3 20.65 -89.58 25.15 0.71 377 + 379 3 21.52 -91.54 25.15 0.71 378 + 380 3 22.6 -93.14 25.15 0.71 379 + 381 3 23.88 -95.39 25.15 0.71 380 + 382 3 24.53 -96.99 25.15 0.71 381 + 383 3 24.75 -97.52 23.02 0.71 382 + 384 3 25.19 -98.59 23.02 0.71 383 + 385 3 24.55 -99.53 23.02 0.71 384 + 386 3 24.11 -102.72 23.02 0.71 385 + 387 3 24.11 -105.21 23.02 0.71 386 + 388 3 24.55 -106.63 23.02 0.71 387 + 389 3 23.03 -108.94 23.02 0.71 388 + 390 3 23.24 -112.14 23.02 0.71 389 + 391 3 23.24 -114.09 23.02 0.71 390 + 392 3 23.4 -116.15 23.28 0.71 391 + 393 3 23.18 -118.46 23.28 0.71 392 + 394 3 22.96 -120.41 23.28 0.71 393 + 395 3 22.75 -122.19 23.28 0.71 394 + 396 3 22.09 -124.5 23.28 0.71 395 + 397 3 20.79 -126.45 23.28 0.71 396 + 398 3 19.92 -128.4 23.28 0.71 397 + 399 3 18.93 -130.24 23.28 0.71 398 + 400 3 17.49 -131.68 23.28 0.71 399 + 401 3 26.71 -99.48 23.02 0.71 384 + 402 3 28.88 -101.61 23.02 0.71 401 + 403 3 29.96 -103.39 23.02 0.71 402 + 404 3 30.62 -104.1 25.22 0.71 403 + 405 3 32.14 -104.98 25.22 0.71 404 + 406 3 33.22 -106.94 25.22 0.71 405 + 407 3 34.09 -108.54 25.22 0.71 406 + 408 3 35.52 -110.44 23.38 0.71 407 + 409 3 36.6 -112.21 22.04 0.71 408 + 410 3 36.6 -114.88 20.78 0.71 409 + 411 3 37.25 -116.83 20.78 0.71 410 + 412 3 37.91 -119.14 20.78 0.71 411 + 413 3 37.47 -121.1 20.78 0.71 412 + 414 3 38.56 -122.52 20.78 0.71 413 + 415 3 38.34 -125.36 20.78 0.71 414 + 416 3 38.63 -127.72 20.78 0.71 415 + 417 3 39.93 -130.03 20.78 0.71 416 + 418 3 41.67 -133.05 20.78 0.71 417 + 419 3 42.76 -133.94 20.34 0.71 418 + 420 3 43.84 -136.07 18.02 0.71 419 + 421 3 44.93 -138.21 18.02 0.71 420 + 422 3 47.1 -140.16 18.02 0.71 421 + 423 3 48.97 -141.7 18.02 0.71 422 + 424 3 -3.44 -3.24 -7.45 1.42 1 + 425 3 -5.39 -5.04 -7.45 1.065 424 + 426 3 -6.26 -6.81 -9 1.065 425 + 427 3 -7.56 -9.3 -11.45 1.065 426 + 428 3 -8.87 -12.14 -11.15 1.065 427 + 429 3 -9.74 -13.74 -11.15 1.065 428 + 430 3 -9.95 -14.63 -11.15 1.065 429 + 431 3 -10.82 -15.87 -11.15 1.065 430 + 432 3 -11.04 -17.65 -10.71 0.89 431 + 433 3 -11.47 -19.96 -10.71 0.89 432 + 434 3 -11.39 -21.59 -12.99 0.89 433 + 435 3 -12.04 -24.61 -15.49 0.89 434 + 436 3 -11.39 -27.28 -15.49 0.89 435 + 437 3 -10.3 -29.41 -15.78 0.89 436 + 438 3 -9 -32.25 -15.78 0.71 437 + 439 3 -5.96 -34.92 -15.78 0.71 438 + 440 3 -4.25 -37.17 -15.78 0.71 439 + 441 3 -2.95 -40.01 -15.78 0.71 440 + 442 3 -1.86 -42.32 -17.46 0.71 441 + 443 3 -0.12 -44.45 -17.46 0.71 442 + 444 3 0.96 -46.58 -17.46 0.71 443 + 445 3 2.92 -47.3 -17.46 0.71 444 + 446 3 5.31 -49.96 -17.46 0.71 445 + 447 3 7.15 -50.93 -17.46 0.71 446 + 448 3 8.45 -51.99 -17.37 0.71 447 + 449 3 10.63 -53.26 -15.32 0.71 448 + 450 3 13.23 -54.32 -15.32 0.71 449 + 451 3 14.97 -56.1 -15.32 0.71 450 + 452 3 16.73 -57.99 -11.07 0.71 451 + 453 3 19.99 -60.3 -11.07 0.71 452 + 454 3 22.16 -62.61 -11.07 0.71 453 + 455 3 24.55 -64.56 -11.07 0.71 454 + 456 3 26.51 -65.28 -9.06 0.71 455 + 457 3 29.33 -66.52 -7.1 0.71 456 + 458 3 31.94 -68.83 -7.5 0.71 457 + 459 3 34.98 -70.6 -6.11 0.71 458 + 460 3 37.4 -72.08 -6.09 0.71 459 + 461 3 40.66 -73.68 -6.09 0.71 460 + 462 3 43.48 -75.46 -6.09 0.71 461 + 463 3 45.44 -75.99 -6.09 0.71 462 + 464 3 47.39 -77.05 -6.09 0.71 463 + 465 3 48.91 -77.23 -7.27 0.71 464 + 466 3 50.65 -78.3 -7.27 0.71 465 + 467 3 53.91 -77.77 -7.27 0.71 466 + 468 3 55.32 -79.97 -9.21 0.71 467 + 469 3 58.14 -81.03 -7.62 0.71 468 + 470 3 60.09 -82.28 -10.16 0.71 469 + 471 3 62.05 -84.05 -10.16 0.71 470 + 472 3 62.27 -85.83 -8.19 0.71 471 + 473 3 62.85 -87.26 -8.19 0.71 472 + 474 3 64.8 -88.5 -8.19 0.71 473 + 475 3 66.11 -88.86 -8.19 0.71 474 + 476 3 67.41 -90.28 -8.19 0.71 475 + 477 3 68.28 -90.63 -8.19 0.71 476 + 478 3 69.58 -90.81 -8.19 0.71 477 + 479 3 70.23 -91.17 -8.19 0.71 478 + 480 3 71.32 -91.88 -8.19 0.71 479 + 481 3 72.19 -93.12 -8.19 0.71 480 + 482 3 73.27 -93.12 -8.19 0.71 481 + 483 3 -4.72 8.96 0.48 0.89 1 + 484 3 -5.59 9.67 -1.32 0.89 483 + 485 3 -6.68 9.67 -2.98 0.89 484 + 486 3 -8.42 9.5 -2.98 0.89 485 + 487 3 -9.94 9.67 -5.41 0.89 486 + 488 3 -12.11 10.21 -3.33 0.89 487 + 489 3 -13.84 10.21 -5.28 0.89 488 + 490 3 -15.15 10.03 -5.28 0.89 489 + 491 3 -16.02 10.38 -5.26 0.89 490 + 492 3 -17.54 10.21 -7.5 0.89 491 + 493 3 -19.06 10.03 -7.5 0.89 492 + 494 3 -20.58 9.85 -7.5 0.89 493 + 495 3 -22.52 9.05 -7.5 0.89 494 + 496 3 -22.54 9.39 -8.39 1.065 495 + 497 3 -24.56 9.52 -6.46 0.71 496 + 498 3 -27.6 9.16 -6.46 0.71 497 + 499 3 -29.12 9.52 -6.46 0.71 498 + 500 3 -30.42 9.87 -6.46 0.71 499 + 501 3 -31.72 9.52 -6.46 0.71 500 + 502 3 -33.9 9.16 -6.46 0.71 501 + 503 3 -35.42 9.16 -5.93 0.71 502 + 504 3 -36.72 9.52 -5.93 0.71 503 + 505 3 -38.46 10.23 -5.93 0.71 504 + 506 3 -39.54 9.87 -3.47 0.71 505 + 507 3 -41.06 9.87 -3.47 0.71 506 + 508 3 -42.31 9.79 -3.34 0.71 507 + 509 3 -44.26 9.43 -3.34 0.71 508 + 510 3 -45.78 8.7 -3.32 0.71 509 + 511 3 -46 7.81 -3.5 0.71 510 + 512 3 -48.6 7.81 -3.5 0.71 511 + 513 3 -51.64 7.28 -3.5 0.71 512 + 514 3 -54.03 7.28 -7.03 0.71 513 + 515 3 -57.07 7.28 -8.9 0.71 514 + 516 3 -59.68 7.45 -8.9 0.71 515 + 517 3 -61.31 7.01 -9.79 0.71 516 + 518 3 -62.61 7.19 -9.79 0.71 517 + 519 3 -63.48 6.65 -8.6 0.71 518 + 520 3 -65 5.94 -11.2 0.71 519 + 521 3 -67.17 5.76 -11.2 0.71 520 + 522 3 -69.56 6.12 -13.28 0.71 521 + 523 3 -69.78 6.83 -15.9 0.71 522 + 524 3 -73.03 5.41 -18.18 0.71 523 + 525 3 -74.99 4.88 -18.18 0.71 524 + 526 3 -75.64 4.7 -16.49 0.71 525 + 527 3 -77.38 4.17 -16.49 0.71 526 + 528 3 -78.05 3.79 -16.49 0.71 527 + 529 3 -22.76 9.92 -8.69 0.71 496 + 530 3 -25.17 7.83 -13.5 0.71 529 + 531 3 -26.69 6.94 -16 0.71 530 + 532 3 -28 6.23 -17.93 0.71 531 + 533 3 -29.95 5.52 -17.93 0.71 532 + 534 3 -31.47 5.17 -17.49 0.71 533 + 535 3 -32.99 4.63 -19.25 0.71 534 + 536 3 -33.88 3.75 -21.23 0.71 535 + 537 3 -34.75 2.48 -23.63 0.71 536 + 538 3 -35.83 1.06 -21.14 0.71 537 + 539 3 -36.92 -0.36 -21.14 0.71 538 + 540 3 -37.57 -1.25 -23.59 0.71 539 + 541 3 -38.87 -2.67 -26.42 0.71 540 + 542 3 -39.53 -4.27 -25.9 0.71 541 + 543 3 -40.61 -5.52 -27.79 0.71 542 + 544 3 -41.65 -7.41 -27.57 0.71 543 + 545 3 -42.74 -8.48 -27.36 0.71 544 + 546 3 -43.83 -10.43 -29.26 0.71 545 + 547 3 -44.91 -12.39 -30.73 0.71 546 + 548 3 -46 -14.16 -32.63 0.71 547 + 549 3 -46.65 -16.12 -32.63 0.71 548 + 550 3 -46.87 -15.94 -33.9 0.71 549 + 551 3 -48.82 -18.25 -36.08 0.71 550 + 552 3 -50.34 -20.56 -35.03 0.71 551 + 553 3 -51.91 -23.32 -36.91 0.71 552 + 554 3 -53.21 -25.28 -36.91 0.71 553 + 555 3 -54.95 -26.88 -38.65 0.71 554 + 556 3 -54.95 -26.88 -39.05 0.71 555 + 557 3 -56.31 -27.93 -39.05 0.71 556 + 558 3 -57.83 -28.81 -39.05 0.71 557 + 559 3 -59.56 -30.41 -40.08 0.71 558 + 560 3 -61.52 -32.37 -40.08 0.71 559 + 561 3 -62.6 -33.61 -42.58 0.71 560 + 562 3 -63.69 -35.21 -42.58 0.71 561 + 563 3 -65.43 -36.1 -42.58 0.71 562 + 564 3 -67.38 -37.34 -44.58 0.71 563 + 565 3 -69.55 -38.41 -47.55 0.71 564 + 566 3 -70.86 -39.3 -47.55 0.71 565 + 567 3 -72.16 -40.18 -49.9 0.71 566 + 568 3 -73.71 -41.5 -51.42 0.71 567 + 569 3 -75.23 -43.63 -51.42 0.71 568 + 570 3 -76.09 -45.06 -51.42 0.71 569 + 571 3 -77.4 -46.65 -51.42 0.71 570 + 572 3 -79.14 -48.43 -51.42 0.71 571 + 573 3 -80.66 -50.56 -51.42 0.71 572 + 574 3 -81.74 -52.52 -51.12 0.71 573 + 575 3 -82.18 -54.65 -51.12 0.71 574 + 576 3 -83.04 -56.6 -51.12 0.71 575 + 577 3 -81.48 -58.19 -51.12 0.71 576 + 578 3 -83.44 -61.74 -51.12 0.71 577 + 579 3 -84.09 -64.05 -53.42 0.71 578 + 580 3 -85.17 -66.01 -53.42 0.71 579 + 581 3 -85.39 -67.96 -53.42 0.71 580 + 582 3 -85.17 -70.27 -53.42 0.71 581 + 583 3 -85.39 -72.58 -53.42 0.71 582 + 584 3 -85.19 -74.57 -53.42 0.71 583 + 585 3 -86.49 -76.88 -53.42 0.71 584 + 586 3 -87.79 -78.65 -53.42 0.71 585 + 587 3 -88.88 -80.43 -53.42 0.71 586 + 588 3 -89.31 -82.03 -53.42 0.71 587 + 589 3 -90.18 -83.81 -53.42 0.71 588 + 590 3 -92.35 -85.23 -53.42 0.71 589 + 591 3 -94.09 -86.83 -53.42 0.71 590 + 592 3 -95.07 -88.99 -55.52 0.71 591 + 593 3 -97.24 -91.12 -55.52 0.71 592 + 594 3 -99.2 -91.3 -59.18 0.71 593 + 595 3 -101.8 -91.83 -59.18 0.71 594 + 596 3 -103.54 -92.37 -57.78 0.71 595 + 597 3 -105.06 -92.54 -60.13 0.71 596 + 598 3 -106.8 -93.97 -60.13 0.71 597 + 599 3 -107.23 -94.14 -58.8 0.71 598 + 600 3 -108.97 -96.99 -60.87 0.71 599 + 601 3 -110.93 -99.3 -64.3 0.71 600 + 602 3 -112.88 -101.25 -64.3 0.71 601 + 603 3 -114.07 -103.95 -64.3 0.71 602 + 604 3 -115.16 -106.08 -64.3 0.71 603 + 605 3 -116.46 -108.03 -64.3 0.71 604 + 606 3 -118.42 -108.57 -64.3 0.71 605 + 607 3 -120.8 -109.45 -64.3 0.71 606 + 608 3 -123.19 -110.16 -64.3 0.71 607 + 609 3 -125.58 -109.28 -63.32 0.71 608 + 610 3 -127.32 -109.99 -63.32 0.71 609 + 611 3 -129.27 -110.34 -63.32 0.71 610 + 612 3 -130.79 -110.34 -63.32 0.71 611 + 613 3 -132.54 -110.46 -61.53 0.71 612 + 614 3 -135.8 -111.88 -61.53 0.71 613 + 615 3 -136.67 -113.3 -61.53 0.71 614 + 616 3 -137.75 -114.9 -61.53 0.71 615 + 617 3 -138.19 -116.32 -61.53 0.71 616 + 618 3 -138.4 -118.28 -61.53 0.71 617 + 619 3 -54.95 -29.54 -40.82 0.71 556 + 620 3 -56.03 -31.5 -40.82 0.71 619 + 621 3 -56.68 -33.1 -40.82 0.71 620 + 622 3 -57.55 -35.58 -41.45 0.71 621 + 623 3 -58.04 -38.86 -41.45 0.71 622 + 624 3 -58.91 -40.63 -43.09 0.71 623 + 625 3 -59.77 -42.94 -43.87 0.71 624 + 626 3 -60.22 -44.48 -43.87 0.71 625 + 627 3 -60.65 -46.08 -43.07 0.71 626 + 628 3 -61.24 -47.99 -43.07 0.71 627 + 629 3 -61.89 -49.59 -43.07 0.71 628 + 630 3 -62.32 -50.83 -43.07 0.71 629 + 631 3 8.75 -0.81 1.12 1.065 1 + 632 3 9.61 -2.79 -0.82 0.89 631 + 633 3 11.13 -4.57 -0.82 0.89 632 + 634 3 12 -6.7 -3.23 0.89 633 + 635 3 12.87 -8.3 -3.23 0.89 634 + 636 3 14.17 -9.9 -3.23 0.89 635 + 637 3 15.69 -12.21 -3.23 0.89 636 + 638 3 17.35 -13.53 -3.23 0.71 637 + 639 3 19.09 -17.26 -3.23 0.71 638 + 640 3 20.39 -19.39 -3.23 0.71 639 + 641 3 21.48 -20.45 -3.23 0.71 640 + 642 3 22.13 -23.65 -3.23 0.71 641 + 643 3 22.56 -25.43 -4.4 0.71 642 + 644 3 24.3 -27.56 -4.4 0.71 643 + 645 3 25.08 -29.28 -4.4 0.71 644 + 646 3 25.65 -30.5 -4.4 0.71 645 + 647 3 27.17 -31.92 -4.4 0.71 646 + 648 3 27.8 -32.81 -4.4 0.89 647 + 649 3 26.95 -34.99 -4.4 0.71 648 + 650 3 26.29 -37.3 -4.4 0.71 649 + 651 3 25.86 -39.08 -4.4 0.71 650 + 652 3 25.64 -40.5 -6.3 0.71 651 + 653 3 26.29 -41.74 -6.3 0.71 652 + 654 3 26.73 -43.7 -6.3 0.71 653 + 655 3 26.51 -45.65 -6.3 0.71 654 + 656 3 26.95 -47.25 -6.3 0.71 655 + 657 3 27.6 -49.2 -7.94 0.71 656 + 658 3 28.05 -51.3 -7.94 0.71 657 + 659 3 28.7 -53.63 -7.83 0.71 658 + 660 3 29.35 -55.23 -7.38 0.71 659 + 661 3 30 -57.01 -10.33 0.71 660 + 662 3 30.44 -59.14 -10.35 0.71 661 + 663 3 30.61 -59.41 -10.35 0.71 662 + 664 3 29.51 -60.88 -12.27 0.71 663 + 665 3 28.43 -64.26 -12.27 0.71 664 + 666 3 28.21 -66.21 -12.27 0.71 665 + 667 3 27.56 -67.81 -12.9 0.71 666 + 668 3 27.56 -69.76 -12.9 0.71 667 + 669 3 26.91 -72.07 -14.77 0.71 668 + 670 3 27.12 -74.2 -14.77 0.71 669 + 671 3 27.21 -76.04 -16.82 0.71 670 + 672 3 27.21 -79.06 -16.82 0.71 671 + 673 3 27.21 -81.54 -16.82 0.71 672 + 674 3 27.65 -83.5 -16.82 0.71 673 + 675 3 27.43 -86.16 -16.82 0.71 674 + 676 3 27.43 -88.83 -16.82 0.71 675 + 677 3 27.4 -91.52 -19.22 0.71 676 + 678 3 28.05 -94.37 -19.22 0.71 677 + 679 3 28.05 -97.21 -19.22 0.71 678 + 680 3 28.05 -100.41 -19.22 0.71 679 + 681 3 27.83 -102.72 -19.22 0.71 680 + 682 3 27.6 -104.61 -19.22 0.71 681 + 683 3 27.38 -106.21 -19.22 0.71 682 + 684 3 32.35 -61.19 -11.72 0.71 663 + 685 3 33.44 -63.15 -11.72 0.71 684 + 686 3 34.74 -64.92 -11.72 0.71 685 + 687 3 35.83 -66.52 -11.72 0.71 686 + 688 3 36.91 -68.3 -11.72 0.71 687 + 689 3 37.56 -69.72 -12.58 0.71 688 + 690 3 38.43 -70.78 -14.82 0.71 689 + 691 3 39.08 -73.63 -16.77 0.71 690 + 692 3 39.9 -74.37 -15.78 0.71 691 + 693 3 40.99 -77.57 -15.78 0.71 692 + 694 3 41.88 -79.41 -18.03 0.71 693 + 695 3 43.4 -81.9 -18.03 0.71 694 + 696 3 44.27 -83.85 -18.03 0.71 695 + 697 3 45.36 -85.63 -18.03 0.71 696 + 698 3 46.01 -87.76 -18.03 0.71 697 + 699 3 47.51 -89.18 -20.03 0.71 698 + 700 3 48.6 -90.61 -21.13 0.71 699 + 701 3 49.25 -92.38 -20.53 0.71 700 + 702 3 50.73 -94.57 -20.53 0.71 701 + 703 3 51.8 -96.55 -20.53 0.71 702 + 704 3 53.11 -97.61 -21.27 0.71 703 + 705 3 53.97 -99.03 -21.27 0.71 704 + 706 3 55.28 -101.34 -21.27 0.71 705 + 707 3 57.23 -102.23 -21.27 0.71 706 + 708 3 59.84 -104.01 -23.21 0.71 707 + 709 3 61.58 -105.25 -23.21 0.71 708 + 710 3 63.75 -105.07 -23.21 0.71 709 + 711 3 65.7 -105.78 -21.2 0.71 710 + 712 3 67.01 -106.14 -22.98 0.71 711 + 713 3 69.39 -107.38 -22.98 0.71 712 + 714 3 72.24 -108.7 -22.98 0.71 713 + 715 3 74.41 -109.24 -22.98 0.71 714 + 716 3 75.93 -110.3 -23.78 0.71 715 + 717 3 77.23 -111.9 -23.78 0.71 716 + 718 3 78.54 -113.5 -23.78 0.71 717 + 719 3 79.62 -115.1 -23.78 0.71 718 + 720 3 81.14 -117.23 -23.78 0.71 719 + 721 3 82.88 -119.01 -23.78 0.71 720 + 722 3 83.96 -120.25 -24.59 0.71 721 + 723 3 85.27 -121.49 -24.59 0.71 722 + 724 3 86.35 -122.92 -24.59 0.71 723 + 725 3 87.92 -124.28 -24.59 0.71 724 + 726 3 29.76 -33.88 -2.3 0.71 648 + 727 3 31.71 -36.37 -2.3 0.71 726 + 728 3 33.23 -37.79 -2.3 0.71 727 + 729 3 33.67 -37.96 3.37 0.71 728 + 730 3 35.19 -40.63 3.37 0.71 729 + 731 3 36.49 -41.52 5.54 0.71 730 + 732 3 37.58 -42.94 5.54 0.71 731 + 733 3 38.88 -43.83 7.86 0.71 732 + 734 3 41.19 -45.86 7.86 0.71 733 + 735 3 42.49 -47.28 7.86 0.71 734 + 736 3 43.57 -48.7 10.42 0.71 735 + 737 3 44.66 -51.37 10.42 0.71 736 + 738 3 46.18 -52.25 12.98 0.71 737 + 739 3 47.48 -53.32 14.64 0.71 738 + 740 3 48.79 -54.56 14.64 0.71 739 + 741 3 49.87 -55.81 16.12 0.71 740 + 742 3 50.52 -57.94 17.84 0.71 741 + 743 3 51.18 -59.72 20.06 0.71 742 + 744 3 50.33 -63.95 20.06 0.71 743 + 745 3 50.11 -66.63 22.44 0.71 744 + 746 3 50.33 -68.23 21.22 0.71 745 + 747 3 50.55 -70.36 22.63 0.71 746 + 748 3 50.98 -72.32 22.82 0.71 747 + 749 3 50.76 -74.98 25.59 0.71 748 + 750 3 51.67 -77.75 25.59 0.71 749 + 751 3 52.1 -80.59 25.59 0.71 750 + 752 3 52.97 -82.37 25.59 0.71 751 + 753 3 53.19 -84.85 25.51 0.71 752 + 754 3 53.62 -86.98 25.51 0.71 753 + 755 3 54.05 -89.12 25.51 0.71 754 + 756 3 54.71 -91.43 25.51 0.71 755 + 757 3 55.48 -94.1 25.51 0.71 756 + 758 3 55.47 -95.52 26.67 0.71 757 + 759 3 56.77 -96.06 26.67 0.71 758 + 760 3 56.33 -99.79 28.31 0.71 759 + 761 3 56.4 -101.81 28.31 0.71 760 + 762 3 55.96 -104.12 28.31 0.71 761 + 763 3 57.05 -106.61 28.31 0.71 762 + 764 3 57.47 -108.39 28.98 0.71 763 + 765 3 58.33 -110.52 28.98 0.71 764 + 766 3 58.33 -112.12 28.98 0.71 765 + 767 3 58.55 -114.07 28.98 0.71 766 + 768 3 59.85 -115.49 28.98 0.71 767 + 769 3 59.8 -117.52 28.98 0.71 768 + 770 3 59.58 -119.3 28.98 0.71 769 + 771 3 59.15 -121.43 28.98 0.71 770 + 772 3 59.8 -122.85 28.98 0.71 771 + 773 3 60.45 -124.45 28.98 0.71 772 + 774 3 61.53 -125.7 28.98 0.71 773 + 775 3 61.75 -128.18 28.98 0.71 774 + 776 3 61.32 -129.96 28.98 0.71 775 + 777 4 11.43 16.93 -0.7 2.485 1 + 778 4 13.17 18.71 -0.7 2.485 777 + 779 4 14.69 19.95 -0.6 2.31 778 + 780 4 16.43 21.55 -0.6 2.31 779 + 781 4 18.38 23.15 -3.24 2.31 780 + 782 4 20.34 25.64 -2.86 2.31 781 + 783 4 23.6 29.01 -2.86 2.13 782 + 784 4 25.07 30.07 -0.58 2.13 783 + 785 4 27.24 32.2 -0.58 2.13 784 + 786 4 28.11 34.33 -0.58 2.13 785 + 787 4 28.98 36.46 1.38 2.13 786 + 788 4 30.28 38.42 1.38 2.13 787 + 789 4 31.8 40.01 3.08 2.13 788 + 790 4 33.54 42.15 1.32 1.955 789 + 791 4 35.28 44.28 1.96 1.6 790 + 792 4 38.42 47.91 1.96 1.775 791 + 793 4 39.51 49.15 -0.19 1.775 792 + 794 4 39.73 51.11 0.88 1.775 793 + 795 4 41.03 53.24 0.88 1.775 794 + 796 4 41.9 54.66 -1.98 1.775 795 + 797 4 43.42 56.97 -1.98 1.775 796 + 798 4 45.81 58.57 -2.04 1.775 797 + 799 4 46.43 59.84 -4.69 1.775 798 + 800 4 48.17 61.98 -4.32 1.775 799 + 801 4 50.13 64.64 -4.32 1.775 800 + 802 4 50.78 66.77 -6.38 1.775 801 + 803 4 52.08 68.19 -8.52 1.775 802 + 804 4 54.25 70.32 -9.89 1.775 803 + 805 4 55.99 72.63 -10.66 1.775 804 + 806 4 58.38 75.3 -10.66 1.775 805 + 807 4 60.54 78.02 -8.25 1.6 806 + 808 4 62.27 79.97 -8.25 1.6 807 + 809 4 64.01 82.46 -5.63 1.6 808 + 810 4 65.97 85.3 -5.63 1.6 809 + 811 4 67.27 87.61 -4 1.6 810 + 812 4 69.44 90.1 -4 1.6 811 + 813 4 70.69 93.58 -4 1.775 812 + 814 4 71.55 95.53 -7.28 1.955 813 + 815 4 72.62 97.84 -7.28 1.955 814 + 816 4 73.71 99.97 -7.28 2.13 815 + 817 4 74.79 101.75 -7.28 2.13 816 + 818 4 76.1 104.95 -7.28 2.13 817 + 819 4 78.57 108.91 -6 2.13 818 + 820 4 79.87 111.22 -6 2.13 819 + 821 4 81.39 113.53 -4.77 2.13 820 + 822 4 82.05 115.84 -4.77 2.13 821 + 823 4 82.92 116.72 -4.77 2.13 822 + 824 4 83.13 119.39 -4.77 2.13 823 + 825 4 84.47 121.53 -4.77 1.955 824 + 826 4 85.99 123.31 -4.77 1.955 825 + 827 4 87.73 125.62 -4.77 1.955 826 + 828 4 89.25 127.39 -6.71 1.955 827 + 829 4 90.98 129.53 -6.71 1.955 828 + 830 4 92.5 130.59 -11.6 2.13 829 + 831 4 94.02 131.3 -11.6 2.13 830 + 832 4 95.54 132.01 -11.6 2.485 831 + 833 4 95.76 132.37 -11.6 3.02 832 + 834 4 94.89 134.15 -10.74 1.775 833 + 835 4 95.11 136.1 -10.74 1.775 834 + 836 4 95.11 137.34 -12.26 1.775 835 + 837 4 95.11 139.3 -12.26 1.775 836 + 838 4 95.11 139.47 -11.68 1.6 837 + 839 4 95.11 140.9 -11.68 1.6 838 + 840 4 95.33 142.14 -11.68 1.42 839 + 841 4 95.76 143.92 -13.98 1.42 840 + 842 4 96.16 145.86 -13.98 1.42 841 + 843 4 96.38 147.81 -12.71 1.42 842 + 844 4 96.6 149.94 -12.71 1.42 843 + 845 4 97.68 151.37 -12.71 1.42 844 + 846 4 99.2 153.32 -12.71 1.42 845 + 847 4 100.51 155.27 -12.71 1.42 846 + 848 4 101.16 156.52 -12.71 1.42 847 + 849 4 101.81 157.58 -14.33 1.42 848 + 850 4 102.68 158.83 -14.33 1.6 849 + 851 4 102.94 158.9 -14.33 1.775 850 + 852 4 102.35 159.83 -13.14 1.6 851 + 853 4 102.35 161.79 -13.14 1.6 852 + 854 4 102.56 163.56 -13.07 1.42 853 + 855 4 103 166.05 -13.07 1.42 854 + 856 4 103.21 168.36 -13.07 1.42 855 + 857 4 103.65 170.14 -13.07 1.42 856 + 858 4 104.08 171.91 -13.07 1.42 857 + 859 4 104.3 172.62 -13.23 1.42 858 + 860 4 105.27 174.66 -13.23 1.42 859 + 861 4 105.48 176.23 -13.23 1.42 860 + 862 4 105.27 178.01 -13.23 1.42 861 + 863 4 105.7 179.07 -13.23 1.42 862 + 864 4 106.13 180.32 -13.23 1.42 863 + 865 4 106.13 181.21 -13.23 1.42 864 + 866 4 106.35 181.92 -13.23 1.42 865 + 867 4 105.48 183.16 -13.23 1.065 866 + 868 4 105.7 184.76 -13.23 1.065 867 + 869 4 106.35 186 -11.38 0.89 868 + 870 4 106.79 188.31 -11.38 0.89 869 + 871 4 106.35 190.09 -8.14 0.89 870 + 872 4 105.7 191.51 -8.14 0.89 871 + 873 4 106.35 193.11 -8.14 1.065 872 + 874 4 105.7 194.71 -8.14 1.065 873 + 875 4 105.83 196.52 -5.66 1.065 874 + 876 4 106.05 198.83 -5.66 1.065 875 + 877 4 106.48 200.25 -5.66 1.065 876 + 878 4 106.7 201.49 -5.66 1.065 877 + 879 4 106.27 203.09 -7.68 1.065 878 + 880 4 106.27 204.16 -6.5 0.89 879 + 881 4 106.27 206.47 -6.5 0.89 880 + 882 4 106.27 208.6 -6.5 0.89 881 + 883 4 105.83 210.55 -6.5 0.89 882 + 884 4 105.81 211.61 -4.37 1.065 883 + 885 4 106.03 214.09 -4.37 1.065 884 + 886 4 106.25 215.69 -4.37 1.065 885 + 887 4 105.81 216.94 -2.22 1.065 886 + 888 4 105.81 218.53 -2.22 0.89 887 + 889 4 105.38 220.84 -2.22 0.89 888 + 890 4 105.16 222.8 -2.22 0.89 889 + 891 4 105.16 224.4 -2.22 0.89 890 + 892 4 104.29 226.35 -0.57 0.89 891 + 893 4 104.85 227.41 -0.57 0.89 892 + 894 4 105.07 229.54 -0.57 0.89 893 + 895 4 105.07 231.49 -0.57 0.89 894 + 896 4 105.28 233.62 -0.57 0.89 895 + 897 4 105.72 235.76 -0.57 0.89 896 + 898 4 106.15 237 -0.57 0.89 897 + 899 4 106.59 238.42 -0.57 0.89 898 + 900 4 106.8 239.84 0.98 0.89 899 + 901 4 107.24 241.97 0.98 0.89 900 + 902 4 107.67 244.78 0.98 0.89 901 + 903 4 107.67 246.91 0.98 0.89 902 + 904 4 107.67 248.87 0.98 0.89 903 + 905 4 108.1 250.47 0.98 0.89 904 + 906 4 108.53 251.89 0.98 0.89 905 + 907 4 109.62 253.67 0.98 0.89 906 + 908 4 109.84 255.09 0.98 0.89 907 + 909 4 110.71 256.15 0.98 0.89 908 + 910 4 111.05 257.54 2.28 0.89 909 + 911 4 111.48 259.32 2.28 1.065 910 + 912 4 111.05 260.91 2.28 1.065 911 + 913 4 111.27 262.34 3.51 1.065 912 + 914 4 111.27 264.47 3.51 1.065 913 + 915 4 111.27 265.71 3.51 1.065 914 + 916 4 111.48 267.31 5.26 0.89 915 + 917 4 111.7 269.09 5.26 0.89 916 + 918 4 111.92 270.69 5.26 1.065 917 + 919 4 112.47 272.01 5.26 1.065 918 + 920 4 113.1 273.94 7.2 1.065 919 + 921 4 113.53 276.43 7.2 1.065 920 + 922 4 113.75 278.2 7.2 1.065 921 + 923 4 113.97 280.33 8.1 1.065 922 + 924 4 114.19 282.29 8.1 1.065 923 + 925 4 114.19 284.42 8.1 1.065 924 + 926 4 114.62 286.37 9.94 1.065 925 + 927 4 114.63 288.12 9.94 1.065 926 + 928 4 114.2 290.25 9.94 1.065 927 + 929 4 113.98 292.2 9.94 1.065 928 + 930 4 113.98 294.69 9.94 1.065 929 + 931 4 113.33 296.11 9.94 1.065 930 + 932 4 113.11 297.35 11.25 1.065 931 + 933 4 113.55 299.31 11.25 1.065 932 + 934 4 113.76 301.26 13.19 1.065 933 + 935 4 113.6 303.12 13.19 1.065 934 + 936 4 113.38 306.31 13.19 1.065 935 + 937 4 112.73 308.27 13.19 1.065 936 + 938 4 112.73 310.05 15.53 1.065 937 + 939 4 112.51 311.64 15.53 1.065 938 + 940 4 112.95 313.42 15.53 1.065 939 + 941 4 113.6 314.84 15.53 1.065 940 + 942 4 113.38 316.8 15.53 1.065 941 + 943 4 113.2 319.23 16.7 1.065 942 + 944 4 112.98 322.07 16.57 0.89 943 + 945 4 112.98 325.09 16.57 0.89 944 + 946 4 112.98 327.22 18.62 0.89 945 + 947 4 112.33 330.06 18.62 0.89 946 + 948 4 111.46 332.2 19.22 0.89 947 + 949 4 111.2 333.92 19.22 0.89 948 + 950 4 110.98 336.05 20.91 0.89 949 + 951 4 111.63 338 20.91 0.89 950 + 952 4 111.41 340.31 20.91 0.89 951 + 953 4 111.41 342.44 22.79 0.89 952 + 954 4 111.63 344.58 22.79 0.89 953 + 955 4 112.28 347.6 22.79 0.89 954 + 956 4 112.87 348.78 22.79 0.89 955 + 957 4 113.52 350.92 24.5 0.89 956 + 958 4 114.48 352.03 24.5 0.71 957 + 959 4 114.92 353.61 24.5 0.71 958 + 960 4 116 356.09 26.17 0.71 959 + 961 4 116.44 358.4 26.17 0.71 960 + 962 4 117.09 360 28.04 0.71 961 + 963 4 117.96 361.42 28.04 0.71 962 + 964 4 118.17 363.2 27.9 0.71 963 + 965 4 118.61 364.8 27.9 0.71 964 + 966 4 119.48 366.04 27.9 0.71 965 + 967 4 119.85 367.36 30.1 0.71 966 + 968 4 120.07 369.32 31.49 0.71 967 + 969 4 120.93 370.91 31.49 0.71 968 + 970 4 121.59 373.05 31.49 0.71 969 + 971 4 122.24 374.47 31.49 0.71 970 + 972 4 124.41 376.6 31.49 0.71 971 + 973 4 123.54 378.02 31.49 0.71 972 + 974 4 124.63 379.8 31.49 0.71 973 + 975 4 125.93 381.04 32.14 0.71 974 + 976 4 127.12 382.89 32.14 0.71 975 + 977 4 128.42 385.03 32.14 0.71 976 + 978 4 129.29 386.63 32.14 0.71 977 + 979 4 130.16 389.11 32.14 0.71 978 + 980 4 130.81 389.82 32.14 0.71 979 + 981 4 131.46 391.6 32.47 0.71 980 + 982 4 132.11 393.2 32.47 0.71 981 + 983 4 133.63 395.33 32.78 0.71 982 + 984 4 134.05 397.47 35.28 0.71 983 + 985 4 134.27 399.6 35.28 0.71 984 + 986 4 135.35 401.74 35.28 0.71 985 + 987 4 135.79 403.51 35.28 0.89 986 + 988 4 136.44 405.11 35.28 0.89 987 + 989 4 136.85 405.32 35.28 0.89 988 + 990 4 108.09 183.34 -16.39 1.065 866 + 991 4 108.52 185.47 -16.39 0.89 990 + 992 4 108.96 187.07 -17.9 0.89 991 + 993 4 109.39 188.13 -15.86 0.89 992 + 994 4 109.83 189.73 -18.03 0.89 993 + 995 4 110.04 191.15 -20.49 0.89 994 + 996 4 110.69 192.58 -21.47 0.89 995 + 997 4 111.56 193.29 -21.47 0.89 996 + 998 4 112.43 194.53 -22.15 0.89 997 + 999 4 113.08 195.6 -23.38 0.89 998 + 1000 4 113.74 196.66 -24.36 0.89 999 + 1001 4 113.74 198.08 -25.89 0.89 1000 + 1002 4 114.17 199.15 -27.94 0.89 1001 + 1003 4 114.6 200.75 -30.08 0.89 1002 + 1004 4 115.69 203.06 -30.08 0.89 1003 + 1005 4 115.64 204.31 -31.51 0.89 1004 + 1006 4 116.08 205.56 -31.51 0.89 1005 + 1007 4 116.73 206.98 -31.51 0.71 1006 + 1008 4 117.16 208.75 -31.51 0.71 1007 + 1009 4 117.6 210.53 -32.74 0.71 1008 + 1010 4 117.6 212.13 -32.74 0.71 1009 + 1011 4 117.6 214.62 -34.55 0.89 1010 + 1012 4 117.82 216.75 -34.55 0.89 1011 + 1013 4 118.03 218.7 -34.55 0.89 1012 + 1014 4 118.24 220.22 -33.58 0.89 1013 + 1015 4 118.03 223.6 -33.58 0.89 1014 + 1016 4 117.37 225.2 -34.98 0.89 1015 + 1017 4 117.16 226.97 -34.98 0.89 1016 + 1018 4 116.72 228.75 -34.98 0.89 1017 + 1019 4 116.51 230.17 -36.51 0.89 1018 + 1020 4 116.29 231.95 -36.51 0.89 1019 + 1021 4 116.29 233.72 -38.15 0.89 1020 + 1022 4 116.01 235.6 -38.15 0.89 1021 + 1023 4 116.01 237.38 -39.9 0.89 1022 + 1024 4 117.08 239.33 -39.9 0.89 1023 + 1025 4 117.73 241.11 -41.34 0.89 1024 + 1026 4 118.82 242.88 -41.34 0.89 1025 + 1027 4 119.9 244.66 -41.34 0.89 1026 + 1028 4 121.42 248.57 -41.34 0.71 1027 + 1029 4 122.73 249.89 -43.37 0.71 1028 + 1030 4 123.58 251.13 -43.37 0.71 1029 + 1031 4 124.67 252.73 -45.26 0.71 1030 + 1032 4 125.75 254.15 -45.26 0.71 1031 + 1033 4 126.84 255.93 -46.82 0.71 1032 + 1034 4 127.92 257.88 -46.82 0.71 1033 + 1035 4 128.58 259.48 -47.64 0.71 1034 + 1036 4 129.44 261.26 -48.99 0.71 1035 + 1037 4 130.53 262.86 -50.41 0.71 1036 + 1038 4 131.62 264.64 -50.32 0.71 1037 + 1039 4 133.14 266.59 -50.32 0.71 1038 + 1040 4 135.09 268.19 -50.32 0.71 1039 + 1041 4 136.39 270.32 -50.32 0.71 1040 + 1042 4 137.7 271.92 -50.32 0.71 1041 + 1043 4 139.22 273.52 -50.32 0.71 1042 + 1044 4 140.3 275.12 -49.5 0.71 1043 + 1045 4 141.61 277.07 -49.5 0.71 1044 + 1046 4 143.45 279.1 -49.5 0.71 1045 + 1047 4 144.32 280.88 -49.5 0.71 1046 + 1048 4 144.97 282.12 -49.77 0.71 1047 + 1049 4 146.06 284.08 -49.77 0.71 1048 + 1050 4 146.71 285.5 -49.77 0.71 1049 + 1051 4 147.36 287.45 -49.77 0.71 1050 + 1052 4 148.45 289.23 -49.77 0.71 1051 + 1053 4 149.31 291 -49.77 0.71 1052 + 1054 4 150.4 292.43 -49.77 0.71 1053 + 1055 4 151.49 293.65 -49.77 0.71 1054 + 1056 4 151.7 295.42 -51.57 0.71 1055 + 1057 4 152.57 297.38 -51.57 0.71 1056 + 1058 4 153.22 298.98 -51.57 0.71 1057 + 1059 4 153.87 300.93 -51.45 0.71 1058 + 1060 4 153.87 302.88 -51.45 0.71 1059 + 1061 4 154.09 305.02 -51.45 0.71 1060 + 1062 4 154.31 306.62 -51.45 0.71 1061 + 1063 4 154.67 308.27 -51.45 0.71 1062 + 1064 4 154.45 310.05 -53.14 0.71 1063 + 1065 4 155.1 312 -53.14 0.71 1064 + 1066 4 155.32 314.31 -53.14 0.71 1065 + 1067 4 155.32 316.09 -53.55 0.89 1066 + 1068 4 155.97 317.86 -53.55 0.89 1067 + 1069 4 155.75 320.17 -53.55 0.89 1068 + 1070 4 155.97 321.59 -52.72 0.89 1069 + 1071 4 155.82 324 -52.72 0.89 1070 + 1072 4 155.8 325.96 -55.36 0.89 1071 + 1073 4 155.58 327.38 -55.36 0.89 1072 + 1074 4 156.23 328.98 -55.14 0.89 1073 + 1075 4 156.23 331.29 -55.14 0.89 1074 + 1076 4 156.45 333.95 -55.14 0.89 1075 + 1077 4 157.1 336.08 -57.1 0.89 1076 + 1078 4 157.47 337.14 -59.1 0.89 1077 + 1079 4 157.9 338.2 -59.1 0.89 1078 + 1080 4 158.12 338.91 -59.1 1.065 1079 + 1081 4 157.6 341.05 -59.34 0.71 1080 + 1082 4 158.03 343.36 -59.34 0.71 1081 + 1083 4 158.03 344.42 -59.79 0.71 1082 + 1084 4 157.6 346.91 -59.79 0.71 1083 + 1085 4 157.38 348.15 -59.85 0.71 1084 + 1086 4 157.38 350.28 -61.52 0.71 1085 + 1087 4 157.17 352.77 -61.52 0.71 1086 + 1088 4 157.17 354.55 -61.52 0.71 1087 + 1089 4 157.23 357.49 -62.28 0.71 1088 + 1090 4 157.23 359.62 -62.28 0.71 1089 + 1091 4 157.23 362.11 -62.28 0.71 1090 + 1092 4 157.23 363.89 -64.82 0.71 1091 + 1093 4 157.45 366.02 -64.82 0.71 1092 + 1094 4 157.89 367.97 -64.82 0.71 1093 + 1095 4 158.54 369.57 -64.82 0.71 1094 + 1096 4 160.17 371.42 -64.82 0.71 1095 + 1097 4 160.82 373.2 -64.82 0.71 1096 + 1098 4 162.13 374.98 -66.88 0.71 1097 + 1099 4 162.56 376.22 -66.88 0.71 1098 + 1100 4 164.3 378.53 -68.36 0.71 1099 + 1101 4 165.17 380.31 -68.36 0.71 1100 + 1102 4 166.04 382.26 -70.17 0.71 1101 + 1103 4 167.12 384.57 -68.43 0.71 1102 + 1104 4 167.47 386.6 -71.03 0.71 1103 + 1105 4 168.34 388.73 -71.34 0.71 1104 + 1106 4 168.55 390.69 -73.47 0.71 1105 + 1107 4 168.55 392.29 -73.47 0.71 1106 + 1108 4 168.99 393.35 -73.47 0.71 1107 + 1109 4 168.4 394.54 -72.38 0.71 1108 + 1110 4 169.05 396.49 -72.38 0.71 1109 + 1111 4 169.27 398.27 -72.38 0.71 1110 + 1112 4 168.83 400.04 -72.38 0.71 1111 + 1113 4 168.4 401.46 -72.38 0.71 1112 + 1114 4 167.75 402.53 -72.38 0.71 1113 + 1115 4 167.53 403.95 -72.3 0.71 1114 + 1116 4 167.53 405.37 -71.58 0.71 1115 + 1117 4 167.31 408.04 -69.38 0.71 1116 + 1118 4 167.45 410.2 -69.38 0.71 1117 + 1119 4 166.8 411.62 -67.06 0.71 1118 + 1120 4 166.37 413.04 -67.06 0.71 1119 + 1121 4 166.37 415.53 -67.06 0.71 1120 + 1122 4 165.93 417.49 -67.06 0.71 1121 + 1123 4 165.28 419.08 -66.7 0.71 1122 + 1124 4 163.54 420.33 -66.7 0.71 1123 + 1125 4 162.02 421.57 -63.24 0.71 1124 + 1126 4 160.72 424.24 -63.24 0.71 1125 + 1127 4 159.77 425.71 -63.24 0.71 1126 + 1128 4 159.11 427.67 -62.42 0.71 1127 + 1129 4 158.25 429.27 -62.42 0.71 1128 + 1130 4 158.03 431.04 -62.42 0.71 1129 + 1131 4 157.38 432.46 -62.42 0.71 1130 + 1132 4 156.73 434.77 -62.42 0.71 1131 + 1133 4 155.64 436.55 -61.43 0.71 1132 + 1134 4 155.21 439.04 -61.93 0.71 1133 + 1135 4 153.71 441.2 -60.51 0.71 1134 + 1136 4 152.41 443.16 -60.51 0.71 1135 + 1137 4 151.54 445.29 -60.51 0.71 1136 + 1138 4 150.46 447.42 -60.97 0.71 1137 + 1139 4 148.94 449.91 -60.97 0.71 1138 + 1140 4 147.63 451.86 -59.15 0.71 1139 + 1141 4 146.98 453.97 -60.79 0.71 1140 + 1142 4 147.23 456 -60.79 0.71 1141 + 1143 4 146.15 458.49 -59.41 0.71 1142 + 1144 4 145.5 460.8 -59.41 0.71 1143 + 1145 4 144.85 462.75 -59.41 0.71 1144 + 1146 4 144.41 464.88 -59.41 0.71 1145 + 1147 4 143.76 467.37 -59.41 0.71 1146 + 1148 4 144.41 467.91 -59.41 0.71 1147 + 1149 4 143.33 471.1 -59.41 0.71 1148 + 1150 4 143.43 473.2 -59.26 0.71 1149 + 1151 4 143.22 475.51 -59.26 0.71 1150 + 1152 4 143.65 478 -59.26 0.71 1151 + 1153 4 143.43 480.13 -59.26 0.71 1152 + 1154 4 143.43 481.91 -59.26 0.71 1153 + 1155 4 144.3 483.86 -60.06 0.71 1154 + 1156 4 144.74 486.53 -60.06 0.71 1155 + 1157 4 146.14 488.42 -60.06 0.71 1156 + 1158 4 147.22 490.73 -60.06 0.71 1157 + 1159 4 148.53 492.33 -60.06 0.71 1158 + 1160 4 149.18 493.93 -60.06 0.71 1159 + 1161 4 148.96 496.42 -60.06 0.71 1160 + 1162 4 149.83 498.55 -60.06 0.71 1161 + 1163 4 151.13 501.04 -60.06 0.71 1162 + 1164 4 151.92 503.74 -60.06 0.71 1163 + 1165 4 153.01 505.69 -60.54 0.71 1164 + 1166 4 154.31 507.82 -60.54 0.71 1165 + 1167 4 154.96 510.66 -60.54 0.71 1166 + 1168 4 156.48 513.51 -60.54 0.71 1167 + 1169 4 158 515.82 -59.02 0.71 1168 + 1170 4 158.7 517.29 -61.86 0.71 1169 + 1171 4 160.01 519.25 -61.86 0.71 1170 + 1172 4 161.96 520.49 -61.86 0.71 1171 + 1173 4 163.92 521.91 -61.86 0.71 1172 + 1174 4 164.35 523.69 -61.86 0.71 1173 + 1175 4 165.65 524.93 -61.86 0.71 1174 + 1176 4 167.17 526.17 -61.86 0.71 1175 + 1177 4 169.34 527.06 -61.64 0.71 1176 + 1178 4 171.3 528.13 -61.64 0.71 1177 + 1179 4 172.17 529.73 -60.11 0.71 1178 + 1180 4 173.25 531.5 -59.06 0.71 1179 + 1181 4 175.41 532.91 -59.06 0.71 1180 + 1182 4 176.71 534.34 -59.06 0.71 1181 + 1183 4 178.23 536.29 -59.06 0.71 1182 + 1184 4 179.32 537.51 -59.06 0.71 1183 + 1185 4 181.92 539.29 -59.06 0.71 1184 + 1186 4 183.44 539.64 -59.06 0.71 1185 + 1187 4 185.18 540.71 -62.56 0.71 1186 + 1188 4 186.26 542.31 -62.56 0.71 1187 + 1189 4 188 543.91 -62.56 0.71 1188 + 1190 4 190.17 545.86 -62.56 0.71 1189 + 1191 4 192.01 547.82 -61.79 0.71 1190 + 1192 4 193.73 549.78 -63.96 0.71 1191 + 1193 4 195.68 551.2 -66.18 0.71 1192 + 1194 4 198.29 552.8 -66.18 0.71 1193 + 1195 4 199.59 553.86 -66.18 0.71 1194 + 1196 4 200.89 556 -66.18 0.71 1195 + 1197 4 202.85 557.6 -66.18 0.71 1196 + 1198 4 204.37 559.73 -66.18 0.71 1197 + 1199 4 205.89 562.57 -66.18 0.71 1198 + 1200 4 206.72 564.09 -67.75 0.71 1199 + 1201 4 208.01 566.05 -67.21 0.71 1200 + 1202 4 208.87 568.36 -69.38 0.71 1201 + 1203 4 209.96 570.49 -69.38 0.71 1202 + 1204 4 210.61 572.62 -69.38 0.71 1203 + 1205 4 211.7 574.04 -69.38 0.71 1204 + 1206 4 212.78 575.64 -69.38 0.71 1205 + 1207 4 214.3 576.88 -69.38 0.71 1206 + 1208 4 215.97 578.29 -69.38 0.71 1207 + 1209 4 170.51 394.6 -73.47 0.71 1108 + 1210 4 172.9 395.31 -73.47 0.71 1209 + 1211 4 174.42 397.26 -73.47 0.71 1210 + 1212 4 175.07 398.15 -74.9 0.71 1211 + 1213 4 176.16 399.57 -74.9 0.71 1212 + 1214 4 177.75 400.36 -74.9 0.71 1213 + 1215 4 177.97 401.6 -73.17 0.71 1214 + 1216 4 178.19 403.02 -75.59 0.71 1215 + 1217 4 178.41 404.27 -75.59 0.71 1216 + 1218 4 179.27 406.04 -75.34 0.71 1217 + 1219 4 178.84 408.18 -75.34 0.71 1218 + 1220 4 178.84 410.13 -77.88 0.71 1219 + 1221 4 179.27 412.08 -77.88 0.71 1220 + 1222 4 179.49 413.86 -77.88 0.71 1221 + 1223 4 180.3 416.54 -77.88 0.71 1222 + 1224 4 180.3 418.49 -77.88 0.71 1223 + 1225 4 180.52 420.27 -78.7 0.71 1224 + 1226 4 180.74 422.4 -78.7 0.71 1225 + 1227 4 180.52 424.35 -78.7 0.71 1226 + 1228 4 179.65 426.84 -78.7 0.71 1227 + 1229 4 180.09 429.15 -80.71 0.71 1228 + 1230 4 179.82 430.67 -80.71 0.71 1229 + 1231 4 179.6 432.8 -80.71 0.71 1230 + 1232 4 179.6 435.11 -79.88 0.71 1231 + 1233 4 179.38 437.24 -79.88 0.71 1232 + 1234 4 179.82 438.84 -79.88 0.71 1233 + 1235 4 180.25 440.44 -79.88 0.71 1234 + 1236 4 180.25 441.68 -81.52 0.71 1235 + 1237 4 180.69 442.93 -83.26 0.71 1236 + 1238 4 181.99 444.35 -83.26 0.71 1237 + 1239 4 183.55 445.71 -82.04 0.71 1238 + 1240 4 185.29 447.49 -82.04 0.71 1239 + 1241 4 186.59 449.09 -81.54 0.71 1240 + 1242 4 187.46 450.69 -81.54 0.71 1241 + 1243 4 188.98 452.11 -83.78 0.71 1242 + 1244 4 190.29 453.89 -85.06 0.71 1243 + 1245 4 191.81 455.66 -83.98 0.71 1244 + 1246 4 193.33 457.44 -83.98 0.71 1245 + 1247 4 193.98 458.86 -83.98 0.71 1246 + 1248 4 194.9 461 -84.02 0.71 1247 + 1249 4 195.77 463.31 -84.02 0.71 1248 + 1250 4 197.29 464.56 -87.18 0.71 1249 + 1251 4 198.81 466.69 -87.18 0.71 1250 + 1252 4 200.33 468.64 -87.18 0.71 1251 + 1253 4 201.42 470.42 -88.28 0.71 1252 + 1254 4 201.85 471.66 -87.12 0.71 1253 + 1255 4 202.94 473.97 -85.42 0.71 1254 + 1256 4 204.79 476.71 -85.42 0.71 1255 + 1257 4 205.64 478.31 -85.42 0.71 1256 + 1258 4 206.94 480.8 -85.42 0.71 1257 + 1259 4 208.25 483.29 -85.42 0.71 1258 + 1260 4 209.55 485.06 -83.62 0.71 1259 + 1261 4 210.85 487.37 -83.62 0.71 1260 + 1262 4 213.02 489.5 -83.62 0.71 1261 + 1263 4 213.7 491.96 -83.62 0.71 1262 + 1264 4 214.77 493.73 -85.06 0.71 1263 + 1265 4 216.07 496.4 -87.32 0.71 1264 + 1266 4 217.81 498.35 -88.84 0.71 1265 + 1267 4 219.55 500.48 -88.84 0.71 1266 + 1268 4 220.2 502.44 -88.84 0.71 1267 + 1269 4 221.29 504.04 -88.84 0.71 1268 + 1270 4 222.75 505.71 -88.84 0.71 1269 + 1271 4 224.06 507.67 -88.84 0.71 1270 + 1272 4 225.36 509.07 -88.84 0.71 1271 + 1273 4 226.23 510.13 -88.84 0.71 1272 + 1274 4 226.88 511.91 -88.84 0.71 1273 + 1275 4 227.97 514.22 -90.92 0.71 1274 + 1276 4 228.18 516 -90.92 0.71 1275 + 1277 4 229.27 517.42 -89.16 0.71 1276 + 1278 4 230.14 519.02 -89.16 0.71 1277 + 1279 4 232.01 520.67 -89.16 0.71 1278 + 1280 4 233.53 522.25 -89.16 0.71 1279 + 1281 4 234.61 524.38 -89.16 0.71 1280 + 1282 4 236.35 525.8 -89.16 0.71 1281 + 1283 4 237.22 527.04 -89.16 0.71 1282 + 1284 4 238.3 528.64 -90.46 0.71 1283 + 1285 4 240.04 530.06 -90.46 0.71 1284 + 1286 4 240.69 531.84 -89.98 0.71 1285 + 1287 4 241.56 534.15 -89.98 0.71 1286 + 1288 4 242.72 535.67 -89.98 0.71 1287 + 1289 4 243.81 537.27 -89.98 0.71 1288 + 1290 4 245.33 538.16 -89.54 0.71 1289 + 1291 4 246.41 539.58 -89.54 0.71 1290 + 1292 4 247.93 541 -89.54 0.71 1291 + 1293 4 249.45 542.42 -89.54 0.71 1292 + 1294 4 250.76 543.49 -89.54 0.71 1293 + 1295 4 252.71 544.37 -86.81 0.71 1294 + 1296 4 254.23 544.91 -85.04 0.71 1295 + 1297 4 255.53 545.62 -86.74 0.71 1296 + 1298 4 257.49 546.51 -86.26 0.71 1297 + 1299 4 258.57 546.51 -86.66 0.71 1298 + 1300 4 260.31 547.22 -85.52 0.71 1299 + 1301 4 261.75 548.34 -85.52 0.71 1300 + 1302 4 262.84 548.69 -85.52 0.71 1301 + 1303 4 158.99 339.8 -60.21 0.71 1080 + 1304 4 160.51 341.04 -60.21 0.71 1303 + 1305 4 162.45 342.11 -62.85 0.71 1304 + 1306 4 164.18 343.71 -62.85 0.71 1305 + 1307 4 165.27 343.71 -63.99 0.71 1306 + 1308 4 167.01 344.06 -66.1 0.71 1307 + 1309 4 168.74 345.84 -68.3 0.71 1308 + 1310 4 170.26 346.91 -70.45 0.71 1309 + 1311 4 172.22 348.51 -70.45 0.71 1310 + 1312 4 174.39 350.11 -71.54 0.71 1311 + 1313 4 176.13 351.53 -73.3 0.71 1312 + 1314 4 178.41 353.42 -76.18 0.71 1313 + 1315 4 180.36 355.2 -77.5 0.71 1314 + 1316 4 182.1 356.44 -78.82 0.71 1315 + 1317 4 183.18 357.33 -77.79 0.71 1316 + 1318 4 184.92 359.29 -79.28 0.71 1317 + 1319 4 187.09 361.06 -81.11 0.71 1318 + 1320 4 188.83 363.02 -82.41 0.71 1319 + 1321 4 190.78 364.97 -83.39 0.71 1320 + 1322 4 191.44 365.68 -84.27 0.71 1321 + 1323 4 192.32 366.58 -82.58 0.71 1322 + 1324 4 194.04 367.29 -82.58 0.71 1323 + 1325 4 195.78 368.54 -82.58 0.71 1324 + 1326 4 197.73 370.84 -82.58 0.71 1325 + 1327 4 199.69 372.62 -81.69 0.71 1326 + 1328 4 200.56 373.86 -81.69 0.71 1327 + 1329 4 202.08 374.22 -81.69 0.71 1328 + 1330 4 203.6 375.82 -81.69 0.71 1329 + 1331 4 205.33 377.24 -84.2 0.71 1330 + 1332 4 206.85 379.37 -84.2 0.71 1331 + 1333 4 209.24 380.62 -82.27 0.71 1332 + 1334 4 210.99 381.38 -82.27 0.71 1333 + 1335 4 212.29 382.45 -83.34 0.71 1334 + 1336 4 214.03 383.51 -83.34 0.71 1335 + 1337 4 215.77 384.76 -83.34 0.71 1336 + 1338 4 217.29 384.93 -83.34 0.71 1337 + 1339 4 218.59 385.64 -83.34 0.71 1338 + 1340 4 220.11 385.82 -83.34 0.71 1339 + 1341 4 221.63 386.71 -83.34 0.71 1340 + 1342 4 223.15 387.6 -83.34 0.71 1341 + 1343 4 225.1 388.13 -83.34 0.71 1342 + 1344 4 227.28 389.2 -84.61 0.71 1343 + 1345 4 229.86 389.27 -84.61 0.71 1344 + 1346 4 231.81 389.8 -83.78 0.71 1345 + 1347 4 235.5 391.05 -85.85 0.71 1346 + 1348 4 236.37 392.65 -85.85 0.71 1347 + 1349 4 238.11 394.42 -87.34 0.71 1348 + 1350 4 240.28 395.84 -89.05 0.71 1349 + 1351 4 242.45 397.44 -89.05 0.71 1350 + 1352 4 243.1 399.4 -89.05 0.71 1351 + 1353 4 244.63 400.82 -91.1 0.71 1352 + 1354 4 246.36 402.42 -92.89 0.71 1353 + 1355 4 248.62 404.09 -92.35 0.71 1354 + 1356 4 251.01 405.87 -92.35 0.71 1355 + 1357 4 252.53 407.47 -92.35 0.71 1356 + 1358 4 254.05 408.71 -94.54 0.71 1357 + 1359 4 255.57 410.13 -94.65 0.71 1358 + 1360 4 259.26 412.09 -97.34 0.71 1359 + 1361 4 259.92 413.86 -97.34 0.71 1360 + 1362 4 261.65 415.64 -97.34 0.71 1361 + 1363 4 262.3 416.35 -97.92 0.71 1362 + 1364 4 262.74 417.77 -98.9 0.71 1363 + 1365 4 264.37 418.74 -98.9 0.71 1364 + 1366 4 266.11 419.98 -98.9 0.71 1365 + 1367 4 268.26 421.22 -97.77 0.71 1366 + 1368 4 270.44 422.82 -97.77 0.71 1367 + 1369 4 272.39 424.95 -97.58 0.71 1368 + 1370 4 274.13 425.84 -97.58 0.71 1369 + 1371 4 275.21 427.44 -97.58 0.71 1370 + 1372 4 276.08 429.22 -97.58 0.71 1371 + 1373 4 276.73 429.93 -97.58 0.71 1372 + 1374 4 278.69 432.24 -99.62 0.71 1373 + 1375 4 279.72 434.22 -96.31 0.71 1374 + 1376 4 281.02 435.82 -96.31 0.71 1375 + 1377 4 282.33 437.6 -96.31 0.71 1376 + 1378 4 283.85 439.02 -96.31 0.71 1377 + 1379 4 285.37 440.09 -96.31 0.71 1378 + 1380 4 287.1 441.15 -96.31 0.71 1379 + 1381 4 287.97 443.11 -96.31 0.71 1380 + 1382 4 289.28 445.06 -96.31 0.71 1381 + 1383 4 291.66 447.55 -95.6 0.71 1382 + 1384 4 291.42 449.07 -95.6 0.71 1383 + 1385 4 292.07 451.38 -94.46 0.71 1384 + 1386 4 292.94 453.16 -94.46 0.71 1385 + 1387 4 293.59 455.11 -93.38 0.71 1386 + 1388 4 294.89 457.42 -93.38 0.71 1387 + 1389 4 296.19 459.73 -95.56 0.71 1388 + 1390 4 299.45 461.86 -95.56 0.71 1389 + 1391 4 299.87 464.02 -95.56 0.71 1390 + 1392 4 300.09 465.45 -93.33 0.71 1391 + 1393 4 300.09 467.04 -93.33 0.71 1392 + 1394 4 299.87 468.64 -93.33 0.71 1393 + 1395 4 300.3 470.78 -92.41 0.71 1394 + 1396 4 300.52 473.26 -92.41 0.71 1395 + 1397 4 300.95 475.04 -90.96 0.71 1396 + 1398 4 300.52 477.17 -92.18 0.71 1397 + 1399 4 301.07 479.2 -92.18 0.71 1398 + 1400 4 301.94 481.33 -89.05 0.71 1399 + 1401 4 303.46 483.47 -89.05 0.71 1400 + 1402 4 305.19 485.42 -87.02 0.71 1401 + 1403 4 307.58 488.08 -87.02 0.71 1402 + 1404 4 309.1 490.04 -87.33 0.71 1403 + 1405 4 310.41 491.99 -87.33 0.71 1404 + 1406 4 312.41 493.87 -85.52 0.71 1405 + 1407 4 313.71 496 -82.5 0.71 1406 + 1408 4 315.45 497.24 -82.5 0.71 1407 + 1409 4 317.18 498.67 -80.96 0.71 1408 + 1410 4 319.36 499.91 -78.21 0.71 1409 + 1411 4 320.52 500.76 -78.21 0.71 1410 + 1412 4 321.17 501.65 -78.21 0.71 1411 + 1413 4 321.61 502.71 -78.21 0.71 1412 + 1414 4 321.82 504.13 -78.21 0.71 1413 + 1415 4 322.04 505.2 -78.21 0.71 1414 + 1416 4 193.82 366.2 -86.77 0.71 1322 + 1417 4 195.13 367.62 -89.76 0.71 1416 + 1418 4 196.65 368.51 -92.06 0.71 1417 + 1419 4 198.38 369.58 -93.94 0.71 1418 + 1420 4 200.56 370.64 -95.34 0.71 1419 + 1421 4 202.29 371.71 -95.34 0.71 1420 + 1422 4 203.81 372.24 -97.05 0.71 1421 + 1423 4 205.77 371.71 -99.43 0.71 1422 + 1424 4 207.72 371 -100.82 0.71 1423 + 1425 4 210.76 371 -102.69 0.71 1424 + 1426 4 213.24 370.38 -104.76 0.71 1425 + 1427 4 215.63 369.67 -104.76 0.71 1426 + 1428 4 217.8 370.2 -104.76 0.71 1427 + 1429 4 219.1 370.38 -106.96 0.71 1428 + 1430 4 221.49 370.92 -109.06 0.71 1429 + 1431 4 223.37 371.25 -109.06 0.71 1430 + 1432 4 104.68 159.61 -14.07 1.065 851 + 1433 4 106.64 160.68 -14.07 1.065 1432 + 1434 4 108.16 161.75 -16.66 1.065 1433 + 1435 4 109.68 162.46 -15.8 1.065 1434 + 1436 4 111.41 163.35 -15.85 0.89 1435 + 1437 4 112.93 164.06 -15.85 0.89 1436 + 1438 4 114.67 164.77 -15.85 0.89 1437 + 1439 4 116.19 165.65 -17.62 0.89 1438 + 1440 4 117.71 166.9 -18.6 0.89 1439 + 1441 4 119.45 168.32 -18.6 0.89 1440 + 1442 4 121.84 169.74 -20.68 0.89 1441 + 1443 4 122.85 170.59 -19.88 1.065 1442 + 1444 4 123.65 171.72 -23.29 1.065 1443 + 1445 4 124.52 172.79 -22.74 0.89 1444 + 1446 4 125.17 174.21 -25.44 0.71 1445 + 1447 4 126.04 175.45 -25.16 0.71 1446 + 1448 4 126.91 177.76 -28.48 0.71 1447 + 1449 4 128.21 179.72 -28.48 0.71 1448 + 1450 4 129.29 181.67 -30.55 0.71 1449 + 1451 4 130.38 183.63 -33.03 0.71 1450 + 1452 4 132.55 186.82 -35.06 0.71 1451 + 1453 4 131.96 189.37 -36.48 0.71 1452 + 1454 4 132.38 191.5 -36.71 0.71 1453 + 1455 4 132.81 193.63 -40.1 0.71 1454 + 1456 4 132.81 195.76 -40.1 0.71 1455 + 1457 4 133.68 197.54 -40.1 0.71 1456 + 1458 4 133.68 200.2 -41.74 0.71 1457 + 1459 4 133.9 203.05 -41.74 0.71 1458 + 1460 4 133.8 205.94 -42.17 0.71 1459 + 1461 4 134.65 208.25 -44.11 0.71 1460 + 1462 4 134.21 209.85 -44.11 0.71 1461 + 1463 4 134.43 212.16 -46.74 0.71 1462 + 1464 4 134.87 214.83 -48.19 0.71 1463 + 1465 4 134.65 217.14 -48.19 0.71 1464 + 1466 4 136.17 219.62 -50 0.71 1465 + 1467 4 137.5 221.61 -52.58 0.71 1466 + 1468 4 139.24 223.39 -52.18 0.71 1467 + 1469 4 140.76 225.34 -53.82 0.71 1468 + 1470 4 142.71 226.94 -53.82 0.71 1469 + 1471 4 143.8 229.07 -55.17 0.71 1470 + 1472 4 144.88 231.03 -56.26 0.71 1471 + 1473 4 145.97 233.34 -58 0.71 1472 + 1474 4 146.84 235.47 -59.86 0.71 1473 + 1475 4 147.25 237.08 -59.86 0.71 1474 + 1476 4 148.33 239.03 -57.89 0.71 1475 + 1477 4 149.4 240.45 -59.65 0.71 1476 + 1478 4 150.71 241.87 -62.14 0.71 1477 + 1479 4 152.01 244.18 -62.14 0.71 1478 + 1480 4 152.88 245.61 -64 0.71 1479 + 1481 4 153.96 247.56 -66.18 0.71 1480 + 1482 4 155.27 248.98 -66.18 0.71 1481 + 1483 4 156.79 250.4 -67.97 0.71 1482 + 1484 4 158.1 253.68 -67.97 0.71 1483 + 1485 4 158.32 255.63 -69.63 0.71 1484 + 1486 4 159.19 257.41 -69.63 0.71 1485 + 1487 4 160.71 259.54 -71.56 0.71 1486 + 1488 4 161.14 261.67 -73.5 0.71 1487 + 1489 4 162.23 262.91 -73.5 0.71 1488 + 1490 4 163.53 263.8 -75.31 0.71 1489 + 1491 4 163.96 265.76 -77.27 0.71 1490 + 1492 4 164.63 267.63 -77.26 0.71 1491 + 1493 4 165.72 268.88 -79.4 0.71 1492 + 1494 4 166.37 271.01 -81.16 0.71 1493 + 1495 4 168.11 273.14 -82.99 0.71 1494 + 1496 4 169.84 275.45 -85.39 0.71 1495 + 1497 4 171.15 277.05 -88.18 0.71 1496 + 1498 4 172.23 279.54 -89.27 0.71 1497 + 1499 4 174.4 280.96 -92.58 0.71 1498 + 1500 4 176.59 281.59 -92.58 0.71 1499 + 1501 4 178.09 283.19 -95.35 0.71 1500 + 1502 4 179.83 283.9 -95.35 0.71 1501 + 1503 4 182.22 286.21 -97.55 0.71 1502 + 1504 4 183.95 287.99 -99.36 0.71 1503 + 1505 4 185.04 289.76 -101.12 0.71 1504 + 1506 4 186.12 291.89 -102.69 0.71 1505 + 1507 4 186.34 294.2 -102.69 0.71 1506 + 1508 4 187.86 295.8 -104.69 0.71 1507 + 1509 4 189.53 297.66 -106.06 0.71 1508 + 1510 4 191.27 299.61 -106.06 0.71 1509 + 1511 4 193.01 301.39 -109.05 0.71 1510 + 1512 4 194.09 302.63 -109.05 0.71 1511 + 1513 4 195.83 303.52 -110.88 0.71 1512 + 1514 4 196.48 305.29 -112.76 0.71 1513 + 1515 4 197.79 306.54 -114.91 0.71 1514 + 1516 4 198.22 308.49 -116.84 0.71 1515 + 1517 4 198.87 310.62 -118.38 0.71 1516 + 1518 4 200.3 312.46 -120.46 0.71 1517 + 1519 4 200.95 314.94 -123.82 0.71 1518 + 1520 4 202.25 317.25 -125.7 0.71 1519 + 1521 4 203.99 319.03 -125.7 0.71 1520 + 1522 4 204.86 320.45 -127.08 0.71 1521 + 1523 4 206.16 323.11 -127.08 0.71 1522 + 1524 4 206.82 325.07 -131.26 0.71 1523 + 1525 4 207.23 327.06 -131.26 0.71 1524 + 1526 4 208.1 328.12 -133.51 0.71 1525 + 1527 4 209.19 329.9 -136.01 0.71 1526 + 1528 4 209.84 331.85 -137.86 0.71 1527 + 1529 4 210.49 333.45 -140.03 0.71 1528 + 1530 4 210.92 335.58 -142.07 0.71 1529 + 1531 4 211.14 337 -144.91 0.71 1530 + 1532 4 211.79 338.6 -146.06 0.71 1531 + 1533 4 212.88 340.56 -146.84 0.71 1532 + 1534 4 214.53 342.08 -146.84 0.71 1533 + 1535 4 215.4 344.39 -148.82 0.71 1534 + 1536 4 217.14 346.52 -150.9 0.71 1535 + 1537 4 218.01 348.3 -153.4 0.71 1536 + 1538 4 218.66 350.43 -154.82 0.71 1537 + 1539 4 219.96 352.2 -154.82 0.71 1538 + 1540 4 221.27 353.98 -156.14 0.71 1539 + 1541 4 222.79 355.4 -158.7 0.71 1540 + 1542 4 223.87 356.72 -158.7 0.71 1541 + 1543 4 225.17 358.14 -161.48 0.71 1542 + 1544 4 226.69 359.21 -163.85 0.71 1543 + 1545 4 228.21 361.16 -163.85 0.71 1544 + 1546 4 228.64 361.52 -166.42 0.71 1545 + 1547 4 230.16 362.94 -166.42 0.71 1546 + 1548 4 231.47 365.07 -166.42 0.71 1547 + 1549 4 232.77 367.56 -166.42 0.71 1548 + 1550 4 234.29 368.63 -168.77 0.71 1549 + 1551 4 235.38 370.22 -170.48 0.71 1550 + 1552 4 236.68 372.06 -173.12 0.71 1551 + 1553 4 237.99 374.19 -171.79 0.71 1552 + 1554 4 239.51 376.32 -171.79 0.71 1553 + 1555 4 240.59 377.92 -174.18 0.71 1554 + 1556 4 242.11 379.87 -176.73 0.71 1555 + 1557 4 243.85 381.47 -176.73 0.71 1556 + 1558 4 245.59 383.07 -178.46 0.71 1557 + 1559 4 247.32 384.85 -177.55 0.71 1558 + 1560 4 249.12 386.86 -179.96 0.71 1559 + 1561 4 250.2 388.45 -179.96 0.71 1560 + 1562 4 252.16 389.88 -179.96 0.71 1561 + 1563 4 253.03 391.3 -182.7 0.71 1562 + 1564 4 254.55 392.72 -182.7 0.71 1563 + 1565 4 255.85 394.49 -182.7 0.71 1564 + 1566 4 256.28 396.27 -182.7 0.71 1565 + 1567 4 256.85 397.88 -182.7 0.71 1566 + 1568 4 257.28 398.59 -185.53 0.71 1567 + 1569 4 257.5 400.54 -187.73 0.71 1568 + 1570 4 257.5 402.5 -189.17 0.71 1569 + 1571 4 256.85 404.45 -190.48 0.71 1570 + 1572 4 256.63 406.58 -190.48 0.71 1571 + 1573 4 256.41 408.18 -189 0.71 1572 + 1574 4 256.41 409.96 -191.3 0.71 1573 + 1575 4 257.72 411.38 -191.3 0.71 1574 + 1576 4 258 413.97 -191.3 0.71 1575 + 1577 4 258.21 416.25 -192.57 0.71 1576 + 1578 4 258 418.92 -192.57 0.71 1577 + 1579 4 258.65 420.69 -195.35 0.71 1578 + 1580 4 258.87 422.65 -195.35 0.71 1579 + 1581 4 259.73 425.31 -195.42 0.71 1580 + 1582 4 260.17 427.8 -195.42 0.71 1581 + 1583 4 260.85 429.1 -197.68 0.71 1582 + 1584 4 261.07 431.94 -197.68 0.71 1583 + 1585 4 261.65 433.83 -197.68 0.71 1584 + 1586 4 261.65 436.5 -197.68 0.71 1585 + 1587 4 261.87 438.1 -197.91 0.71 1586 + 1588 4 262.08 440.41 -199.85 0.71 1587 + 1589 4 261.87 443.07 -197.82 0.71 1588 + 1590 4 261.87 444.85 -200.63 0.71 1589 + 1591 4 262.08 446.98 -200.63 0.71 1590 + 1592 4 262.65 449.54 -200.63 0.71 1591 + 1593 4 263.25 451.43 -200.63 0.71 1592 + 1594 4 263.9 453.57 -198.22 0.71 1593 + 1595 4 264.33 455.7 -198.22 0.71 1594 + 1596 4 265.27 457.63 -198.22 0.71 1595 + 1597 4 265.7 459.59 -198.22 0.71 1596 + 1598 4 265.92 460.65 -198.22 0.71 1597 + 1599 4 266.57 462.61 -198.22 0.71 1598 + 1600 4 265.92 464.38 -198.22 0.71 1599 + 1601 4 265.48 465.63 -198.22 0.71 1600 + 1602 4 124.37 171.12 -19.88 1.065 1443 + 1603 4 126.11 171.66 -22.04 0.89 1602 + 1604 4 127.84 172.9 -22.04 0.71 1603 + 1605 4 129.15 173.97 -20.95 0.71 1604 + 1606 4 131.1 174.86 -23.14 0.71 1605 + 1607 4 133.49 176.1 -23.14 0.71 1606 + 1608 4 135.66 177.52 -25.39 0.71 1607 + 1609 4 137.18 179.3 -25.39 0.71 1608 + 1610 4 139.14 181.07 -26.37 0.71 1609 + 1611 4 141.31 182.32 -27.28 0.71 1610 + 1612 4 142.86 183.55 -26.5 0.71 1611 + 1613 4 144.38 184.61 -27.97 0.71 1612 + 1614 4 146.12 186.57 -30.14 0.71 1613 + 1615 4 148.08 187.81 -30.14 0.71 1614 + 1616 4 149.16 189.23 -32.23 0.71 1615 + 1617 4 150.25 191.36 -35.3 0.71 1616 + 1618 4 151.12 193.14 -35.3 0.71 1617 + 1619 4 152.85 195.45 -38.03 0.71 1618 + 1620 4 154.16 197.76 -39.54 0.71 1619 + 1621 4 155.43 199.66 -39.54 0.71 1620 + 1622 4 156.52 201.43 -41.39 0.71 1621 + 1623 4 157.6 203.39 -43.26 0.71 1622 + 1624 4 159.34 204.99 -43.26 0.71 1623 + 1625 4 160.64 207.12 -45.29 0.71 1624 + 1626 4 161.95 209.25 -45.29 0.71 1625 + 1627 4 163.25 210.49 -46.8 0.71 1626 + 1628 4 164.33 212.09 -46.8 0.71 1627 + 1629 4 164.98 213.52 -49.34 0.71 1628 + 1630 4 166.72 216.01 -50.76 0.71 1629 + 1631 4 168.67 219.21 -53.36 0.71 1630 + 1632 4 170.84 222.05 -55.05 0.71 1631 + 1633 4 172.58 224.18 -55.05 0.71 1632 + 1634 4 174.1 225.78 -56.75 0.71 1633 + 1635 4 175.62 227.91 -57.33 0.71 1634 + 1636 4 176.2 229.68 -57.33 0.71 1635 + 1637 4 176.41 231.1 -55.85 0.71 1636 + 1638 4 177.5 233.59 -55.85 0.71 1637 + 1639 4 178.8 235.37 -57.51 0.71 1638 + 1640 4 180.54 237.32 -59.19 0.71 1639 + 1641 4 181.84 239.1 -59.19 0.71 1640 + 1642 4 184.01 241.23 -59.39 0.71 1641 + 1643 4 185.32 243 -61.45 0.71 1642 + 1644 4 186.85 244.17 -60.1 0.71 1643 + 1645 4 188.58 245.59 -60.1 0.71 1644 + 1646 4 190.54 247.55 -60.1 0.71 1645 + 1647 4 191.84 248.97 -58.18 0.71 1646 + 1648 4 193.8 250.21 -59.54 0.71 1647 + 1649 4 194.67 251.99 -59.62 0.71 1648 + 1650 4 196.4 252.87 -60.71 0.71 1649 + 1651 4 197.71 253.94 -62.62 0.71 1650 + 1652 4 199.44 254.65 -64.31 0.71 1651 + 1653 4 200.96 255.54 -64.31 0.71 1652 + 1654 4 203.14 256.61 -66.01 0.71 1653 + 1655 4 205.31 258.38 -66.01 0.71 1654 + 1656 4 207.06 259.37 -66.01 0.71 1655 + 1657 4 208.37 260.61 -67.36 0.71 1656 + 1658 4 210.32 261.15 -67.36 0.71 1657 + 1659 4 212.28 262.03 -66.45 0.71 1658 + 1660 4 213.8 262.39 -66.45 0.71 1659 + 1661 4 215.32 263.46 -68.96 0.71 1660 + 1662 4 217.71 264.52 -68.96 0.71 1661 + 1663 4 220.53 266.3 -68.96 0.71 1662 + 1664 4 222.7 267.72 -71.01 0.71 1663 + 1665 4 224.66 268.96 -71.01 0.71 1664 + 1666 4 226.18 270.03 -71.01 0.71 1665 + 1667 4 228.13 271.98 -72.57 0.71 1666 + 1668 4 229.43 273.94 -74.75 0.71 1667 + 1669 4 231.17 276.25 -74.75 0.71 1668 + 1670 4 231.65 278.23 -74.16 0.71 1669 + 1671 4 232.52 280.72 -75.14 0.71 1670 + 1672 4 233.82 282.85 -78.13 0.71 1671 + 1673 4 235.12 284.63 -75.94 0.71 1672 + 1674 4 236.43 286.76 -75.94 0.71 1673 + 1675 4 237.95 288.71 -75.94 0.71 1674 + 1676 4 239.68 291.56 -78.56 0.71 1675 + 1677 4 240.9 294.7 -78.56 0.71 1676 + 1678 4 241.75 297.34 -78.34 0.71 1677 + 1679 4 243.05 299.47 -80.03 0.71 1678 + 1680 4 243.49 301.07 -80.82 0.71 1679 + 1681 4 244.79 303.03 -80.82 0.71 1680 + 1682 4 246.09 304.09 -80.82 0.71 1681 + 1683 4 248.05 305.51 -80.82 0.71 1682 + 1684 4 248.92 307.29 -80.26 0.71 1683 + 1685 4 249.01 308.88 -82.98 0.71 1684 + 1686 4 250.97 311.37 -82.98 0.71 1685 + 1687 4 251.62 313.32 -82.98 0.71 1686 + 1688 4 252.71 314.74 -84.96 0.71 1687 + 1689 4 253.14 316.52 -84.38 0.71 1688 + 1690 4 253.57 318.65 -86.87 0.71 1689 + 1691 4 253.57 320.6 -88.82 0.71 1690 + 1692 4 253.79 322.2 -86.19 0.71 1691 + 1693 4 253.8 324.59 -86.19 0.71 1692 + 1694 4 254.01 325.83 -88.11 0.71 1693 + 1695 4 254.23 329.03 -88.11 0.71 1694 + 1696 4 255.1 330.27 -89.68 0.71 1695 + 1697 4 255.75 332.41 -90.22 0.71 1696 + 1698 4 256.19 334.54 -90.22 0.71 1697 + 1699 4 256.84 336.67 -90.22 0.71 1698 + 1700 4 257.67 338.99 -90.22 0.71 1699 + 1701 4 257.88 341.12 -90.22 0.71 1700 + 1702 4 258.1 343.07 -91.56 0.71 1701 + 1703 4 259.19 345.74 -91.56 0.71 1702 + 1704 4 258.97 348.05 -92.98 0.71 1703 + 1705 4 259.4 350.89 -92.43 0.71 1704 + 1706 4 259.61 353.19 -92.43 0.71 1705 + 1707 4 260.03 355.85 -92.43 0.71 1706 + 1708 4 259.81 357.99 -92.43 0.71 1707 + 1709 4 261.12 359.58 -94.19 0.71 1708 + 1710 4 261.77 361.54 -93.5 0.71 1709 + 1711 4 263.07 364.74 -93.5 0.71 1710 + 1712 4 264.16 367.05 -96.28 0.71 1711 + 1713 4 265.5 368.68 -94.7 0.71 1712 + 1714 4 266.15 370.1 -96.42 0.71 1713 + 1715 4 267.02 372.23 -96.42 0.71 1714 + 1716 4 268.32 374.36 -96.42 0.71 1715 + 1717 4 269.63 377.74 -99.59 0.71 1716 + 1718 4 269.84 379.69 -99.59 0.71 1717 + 1719 4 269.63 381.47 -99.49 0.71 1718 + 1720 4 269.83 383.43 -99.49 0.71 1719 + 1721 4 269.83 385.92 -99.49 0.71 1720 + 1722 4 270.48 388.41 -99.49 0.71 1721 + 1723 4 270.92 390.36 -99.49 0.71 1722 + 1724 4 270.78 392.23 -99.49 0.71 1723 + 1725 4 271.21 395.08 -99.49 0.71 1724 + 1726 4 272.3 397.21 -100.18 0.71 1725 + 1727 4 274.04 399.52 -100.18 0.71 1726 + 1728 4 274.69 400.76 -96.18 0.71 1727 + 1729 4 275.12 403.07 -96.18 0.71 1728 + 1730 4 275.99 405.2 -96.18 0.71 1729 + 1731 4 278.15 407.77 -96.18 0.71 1730 + 1732 4 279.67 409.72 -96.18 0.71 1731 + 1733 4 281.19 411.5 -96.18 0.71 1732 + 1734 4 281.84 413.98 -96.18 0.71 1733 + 1735 4 283.15 415.94 -96.18 0.71 1734 + 1736 4 283.8 418.25 -96.18 0.71 1735 + 1737 4 284.88 419.67 -93.06 0.71 1736 + 1738 4 285.25 421.99 -93.06 0.71 1737 + 1739 4 286.12 424.65 -93.06 0.71 1738 + 1740 4 287.2 426.41 -93.06 0.71 1739 + 1741 4 287.87 427.72 -93.06 0.71 1740 + 1742 4 98.15 132.37 -11.6 1.6 833 + 1743 4 99.89 133.61 -11.6 1.6 1742 + 1744 4 101.63 135.03 -10.04 1.42 1743 + 1745 4 102.89 136.4 -10.04 1.42 1744 + 1746 4 104.84 137.29 -10.04 1.245 1745 + 1747 4 107.01 137.29 -10.04 1.245 1746 + 1748 4 108.32 138.35 -10.04 1.245 1747 + 1749 4 110.7 139.24 -8.42 1.245 1748 + 1750 4 113.09 140.31 -8.42 1.245 1749 + 1751 4 114.4 141.55 -8.42 1.245 1750 + 1752 4 115.92 143.5 -8.42 1.245 1751 + 1753 4 117.44 144.93 -8.42 1.245 1752 + 1754 4 119.17 146.7 -8.42 1.245 1753 + 1755 4 120.91 147.41 -10.38 1.245 1754 + 1756 4 124.01 149.35 -10.38 1.245 1755 + 1757 4 125.09 150.42 -10.38 1.245 1756 + 1758 4 127.03 151.49 -10.38 1.245 1757 + 1759 4 127.9 152.2 -12.32 1.42 1758 + 1760 4 128.12 153.26 -12.32 1.6 1759 + 1761 4 127.66 154.48 -11.34 1.42 1760 + 1762 4 127.01 157.15 -11.34 1.245 1761 + 1763 4 127.23 158.57 -11.34 1.245 1762 + 1764 4 126.14 159.99 -11.34 1.065 1763 + 1765 4 125.93 161.59 -11.34 1.065 1764 + 1766 4 126.14 163.72 -11.34 1.065 1765 + 1767 4 125.71 166.39 -10.09 0.89 1766 + 1768 4 124.99 167.6 -10.74 1.065 1767 + 1769 4 123.69 170.44 -10.74 1.065 1768 + 1770 4 122.61 173.1 -10.74 1.065 1769 + 1771 4 122.39 174.88 -10.74 1.065 1770 + 1772 4 120.43 176.3 -10.74 0.89 1771 + 1773 4 119.57 179.14 -13.15 0.89 1772 + 1774 4 118.48 181.1 -13.15 0.89 1773 + 1775 4 111.53 199.88 -15.63 0.89 1774 + 1776 4 111.09 202.19 -17.74 0.89 1775 + 1777 4 109.57 204.15 -16.32 0.89 1776 + 1778 4 108.05 206.81 -16.32 0.89 1777 + 1779 4 107.4 208.59 -19 0.89 1778 + 1780 4 106.97 210.01 -18.81 0.89 1779 + 1781 4 106.75 212.14 -19.57 0.89 1780 + 1782 4 107.08 214.82 -19.57 0.89 1781 + 1783 4 107.73 217.13 -21.53 0.89 1782 + 1784 4 107.95 219.08 -21.53 0.89 1783 + 1785 4 108.17 220.68 -20.49 0.89 1784 + 1786 4 108.17 222.28 -20.49 0.89 1785 + 1787 4 109.04 224.06 -22.98 0.89 1786 + 1788 4 109.47 225.48 -22.98 0.89 1787 + 1789 4 109.69 227.61 -22.98 0.89 1788 + 1790 4 110.12 229.92 -21.8 0.89 1789 + 1791 4 110.99 232.23 -23.58 0.89 1790 + 1792 4 111.86 233.83 -23.58 0.89 1791 + 1793 4 112.73 235.96 -22.74 0.71 1792 + 1794 4 113.16 238.62 -22.74 0.71 1793 + 1795 4 113.81 240.58 -24.97 0.71 1794 + 1796 4 114.46 241.82 -26.93 0.71 1795 + 1797 4 114.46 245.02 -27.81 0.71 1796 + 1798 4 115.62 246.41 -29.34 0.71 1797 + 1799 4 116.06 248.36 -29.34 0.71 1798 + 1800 4 116.28 249.96 -31.06 0.71 1799 + 1801 4 116.71 253.34 -29.5 0.71 1800 + 1802 4 117.36 256 -29.5 0.71 1801 + 1803 4 118.66 259.91 -29.5 0.71 1802 + 1804 4 119.61 262.45 -31.09 0.71 1803 + 1805 4 120.48 264.76 -31.09 0.71 1804 + 1806 4 121.13 266.71 -31.09 0.71 1805 + 1807 4 121.78 269.02 -31.24 0.71 1806 + 1808 4 122.43 271.16 -31.24 0.71 1807 + 1809 4 123.08 273.47 -31.24 0.71 1808 + 1810 4 123.3 275.77 -31.24 0.71 1809 + 1811 4 124.84 277.36 -31.24 0.71 1810 + 1812 4 124.41 279.85 -31.24 0.71 1811 + 1813 4 124.62 282.16 -31.19 0.71 1812 + 1814 4 124.62 284.65 -31.19 0.89 1813 + 1815 4 123.76 287.84 -31.19 0.89 1814 + 1816 4 123.32 290.15 -29.84 0.89 1815 + 1817 4 122.45 291.76 -29.84 0.89 1816 + 1818 4 122.02 294.07 -29.84 0.89 1817 + 1819 4 121.37 295.85 -27.79 0.89 1818 + 1820 4 120.28 299.4 -27.79 0.89 1819 + 1821 4 119.63 301 -27.79 0.89 1820 + 1822 4 119.41 303.31 -27.79 0.89 1821 + 1823 4 118.76 305.44 -27.79 0.89 1822 + 1824 4 118.3 308.23 -29.7 0.89 1823 + 1825 4 118.3 310.36 -29.7 0.89 1824 + 1826 4 117.87 312.31 -29.35 0.71 1825 + 1827 4 117.65 314.27 -29.35 0.71 1826 + 1828 4 117.22 316.22 -29.35 0.71 1827 + 1829 4 116.78 318.53 -29.44 0.71 1828 + 1830 4 117 320.84 -29.44 0.71 1829 + 1831 4 117.16 323.58 -26.38 0.71 1830 + 1832 4 117.37 326.43 -25.88 0.71 1831 + 1833 4 117.37 328.74 -26.61 0.71 1832 + 1834 4 117.59 331.93 -26.61 0.71 1833 + 1835 4 118.02 333.89 -24.66 0.71 1834 + 1836 4 118.24 336.55 -24.66 0.71 1835 + 1837 4 117.7 339.05 -24.66 0.71 1836 + 1838 4 117.49 341.18 -24.46 0.71 1837 + 1839 4 116.84 343.67 -24.46 0.71 1838 + 1840 4 116.18 345.27 -23.34 0.71 1839 + 1841 4 115.32 347.4 -23.08 0.71 1840 + 1842 4 114.66 349.53 -23.08 0.71 1841 + 1843 4 113.36 351.49 -23.08 0.71 1842 + 1844 4 113.12 352.99 -22.22 0.71 1843 + 1845 4 112.25 354.58 -22.22 0.71 1844 + 1846 4 110.73 355.83 -20.5 0.71 1845 + 1847 4 108.99 357.07 -20.5 0.71 1846 + 1848 4 107.69 359.03 -20.5 0.71 1847 + 1849 4 106.61 361.16 -20.86 0.71 1848 + 1850 4 105.74 362.93 -20.86 0.71 1849 + 1851 4 105.3 365.24 -18.22 0.71 1850 + 1852 4 105.52 367.55 -18.22 0.71 1851 + 1853 4 105.76 369.36 -18.22 0.71 1852 + 1854 4 105.54 370.96 -18.22 0.71 1853 + 1855 4 104.89 372.56 -17.36 0.71 1854 + 1856 4 104.89 375.76 -17.36 0.71 1855 + 1857 4 104.24 377.36 -17.36 0.71 1856 + 1858 4 104.45 378.96 -19.62 0.71 1857 + 1859 4 103.58 380.91 -19.62 0.71 1858 + 1860 4 103.15 382.69 -19.62 0.71 1859 + 1861 4 102.05 384.01 -18.9 0.71 1860 + 1862 4 101.18 385.61 -18.9 0.71 1861 + 1863 4 100.75 387.38 -19.01 0.71 1862 + 1864 4 100.1 389.69 -19.08 0.71 1863 + 1865 4 99.45 391.47 -19.08 0.71 1864 + 1866 4 99.23 393.25 -17.48 0.71 1865 + 1867 4 98.58 395.02 -17.48 0.71 1866 + 1868 4 97.06 397.69 -16.22 0.71 1867 + 1869 4 96.07 399.54 -16.22 0.71 1868 + 1870 4 95.64 401.85 -16.22 0.71 1869 + 1871 4 94.98 403.8 -15.14 0.71 1870 + 1872 4 94.77 406.29 -15.14 0.71 1871 + 1873 4 94.55 408.96 -16.16 0.71 1872 + 1874 4 94.33 411.09 -16.16 0.71 1873 + 1875 4 94.12 412.51 -16.16 0.71 1874 + 1876 4 93.92 414.7 -15.18 0.71 1875 + 1877 4 93.49 416.12 -15.18 0.71 1876 + 1878 4 93.7 418.07 -16.14 0.71 1877 + 1879 4 94.57 420.03 -16.14 0.71 1878 + 1880 4 95.22 422.87 -16.14 0.71 1879 + 1881 4 96.09 424.29 -16.14 0.71 1880 + 1882 4 97.4 426.24 -16.14 0.71 1881 + 1883 4 99.13 428.55 -16.14 0.71 1882 + 1884 4 100.24 429.81 -16.26 0.71 1883 + 1885 4 101.09 431.23 -17.58 0.71 1884 + 1886 4 101.96 433.54 -17.58 0.71 1885 + 1887 4 102.83 435.49 -17.58 0.71 1886 + 1888 4 103.48 437.8 -19.68 0.71 1887 + 1889 4 104.13 439.93 -19.68 0.71 1888 + 1890 4 104.57 441.71 -18.02 0.71 1889 + 1891 4 105.65 444.02 -19.78 0.71 1890 + 1892 4 107.08 445.94 -19.78 0.71 1891 + 1893 4 108.58 449.32 -19.78 0.71 1892 + 1894 4 108.58 451.45 -19.78 0.71 1893 + 1895 4 108.36 453.76 -18.92 0.71 1894 + 1896 4 108.58 455.87 -18.92 0.71 1895 + 1897 4 107.93 457.64 -18.92 0.71 1896 + 1898 4 108.14 459.6 -20.96 0.71 1897 + 1899 4 108.16 462.05 -20.78 0.71 1898 + 1900 4 108.81 464.36 -19.81 0.71 1899 + 1901 4 109.46 466.67 -22.46 0.71 1900 + 1902 4 109.68 469.33 -22.46 0.71 1901 + 1903 4 110.11 471.29 -22.46 0.71 1902 + 1904 4 110.76 473.24 -22.1 0.71 1903 + 1905 4 111.41 475.73 -22.1 0.71 1904 + 1906 4 111.56 477.72 -22.1 0.71 1905 + 1907 4 112.21 480.38 -22.1 0.71 1906 + 1908 4 112.21 482.51 -21.55 0.71 1907 + 1909 4 113.29 483.76 -23.06 0.71 1908 + 1910 4 114.81 485.36 -23.06 0.71 1909 + 1911 4 116.98 487.31 -23.06 0.71 1910 + 1912 4 118.29 488.55 -24.53 0.71 1911 + 1913 4 120.46 489.98 -24.53 0.71 1912 + 1914 4 123.14 491.74 -23.77 0.71 1913 + 1915 4 124.88 493.34 -23.77 0.71 1914 + 1916 4 126.18 494.58 -24.12 0.71 1915 + 1917 4 128.36 495.65 -25.64 0.71 1916 + 1918 4 129.23 496.71 -27.22 0.71 1917 + 1919 4 130.31 499.02 -29.28 0.71 1918 + 1920 4 131.61 501.16 -29.28 0.71 1919 + 1921 4 133.35 503.64 -29.28 0.71 1920 + 1922 4 135.09 505.95 -29.28 0.71 1921 + 1923 4 138.18 507.25 -26.71 0.71 1922 + 1924 4 139.92 507.59 -28.54 0.71 1923 + 1925 4 141.87 508.12 -27.29 0.71 1924 + 1926 4 144.04 509.54 -27.29 0.71 1925 + 1927 4 146.87 510.61 -27.29 0.71 1926 + 1928 4 149.25 512.03 -28.7 0.71 1927 + 1929 4 151.86 512.74 -28.7 0.71 1928 + 1930 4 154.11 513.83 -28.7 0.71 1929 + 1931 4 156.28 514.9 -28.7 0.71 1930 + 1932 4 157.8 515.78 -28.05 0.71 1931 + 1933 4 160.19 515.96 -28.05 0.71 1932 + 1934 4 161.71 517.38 -28.05 0.71 1933 + 1935 4 163.88 518.63 -29.96 0.71 1934 + 1936 4 165.84 518.98 -29.96 0.71 1935 + 1937 4 167.36 519.51 -30.54 0.71 1936 + 1938 4 169.75 520.4 -30.54 0.71 1937 + 1939 4 171.71 521.07 -30.54 0.71 1938 + 1940 4 174.75 522.83 -30.54 0.71 1939 + 1941 4 177.36 523.54 -30.54 0.71 1940 + 1942 4 178.42 525.19 -30.54 0.71 1941 + 1943 4 180.6 526.07 -29.19 0.71 1942 + 1944 4 182.77 527.49 -29.19 0.71 1943 + 1945 4 184.48 528.45 -30.65 0.71 1944 + 1946 4 186.65 529.52 -32.37 0.71 1945 + 1947 4 189.04 531.29 -30.94 0.71 1946 + 1948 4 190.99 532.54 -30.94 0.71 1947 + 1949 4 192.73 534.14 -33.76 0.71 1948 + 1950 4 195.33 536.09 -33.76 0.71 1949 + 1951 4 197.07 537.16 -33.76 0.71 1950 + 1952 4 198.37 539.29 -31.19 0.71 1951 + 1953 4 200.55 541.78 -33.38 0.71 1952 + 1954 4 202.94 543.74 -33.38 0.71 1953 + 1955 4 205.55 545.16 -32.87 0.71 1954 + 1956 4 207.51 546.58 -36.15 0.71 1955 + 1957 4 209.89 547.12 -36.15 0.71 1956 + 1958 4 211.85 547.83 -36.15 0.71 1957 + 1959 4 214.24 549.07 -36.28 0.71 1958 + 1960 4 215.97 550.31 -38.06 0.71 1959 + 1961 4 218.15 551.2 -38.06 0.71 1960 + 1962 4 220.11 552.41 -38.06 0.71 1961 + 1963 4 222.5 553.83 -38.06 0.71 1962 + 1964 4 224.02 555.43 -38.06 0.71 1963 + 1965 4 225.76 556.85 -39.22 0.71 1964 + 1966 4 227.28 558.8 -39.22 0.71 1965 + 1967 4 229.23 560.22 -38.27 0.71 1966 + 1968 4 231.4 562.36 -40.79 0.71 1967 + 1969 4 233.57 564.31 -40.79 0.71 1968 + 1970 4 235.31 565.73 -38.98 0.71 1969 + 1971 4 236.66 567.43 -41.87 0.71 1970 + 1972 4 238.04 568.45 -41.87 0.71 1971 + 1973 4 130.29 153.62 -12.32 1.42 1760 + 1974 4 132.46 154.33 -12.32 1.42 1973 + 1975 4 134.2 155.93 -13 1.42 1974 + 1976 4 135.28 157.35 -13 1.42 1975 + 1977 4 136.8 158.77 -13 1.42 1976 + 1978 4 138.97 160.01 -14.96 1.42 1977 + 1979 4 140.93 160.55 -14.96 1.42 1978 + 1980 4 143.34 162.18 -14.96 1.245 1979 + 1981 4 144.42 163.42 -14.96 1.245 1980 + 1982 4 146.38 165.02 -17.78 1.245 1981 + 1983 4 148.77 166.97 -17.78 1.245 1982 + 1984 4 150.94 168.75 -20.4 1.245 1983 + 1985 4 153.54 170.7 -20.4 1.245 1984 + 1986 4 155.5 171.95 -20.4 1.245 1985 + 1987 4 157.67 173.37 -20.4 1.245 1986 + 1988 4 159.84 174.79 -22.43 1.245 1987 + 1989 4 161.09 176.91 -22.43 1.245 1988 + 1990 4 162.61 179.04 -22.43 1.245 1989 + 1991 4 163.91 181.71 -23.53 1.245 1990 + 1992 4 165.86 184.02 -23.53 1.245 1991 + 1993 4 167.6 186.32 -25.49 1.245 1992 + 1994 4 168.47 187.57 -25.49 1.245 1993 + 1995 4 169.56 189.17 -26.96 1.245 1994 + 1996 4 170.42 190.77 -26.96 1.245 1995 + 1997 4 170.86 192.54 -26.96 1.245 1996 + 1998 4 171.29 193.25 -26.96 1.245 1997 + 1999 4 171.69 196.41 -29.56 1.065 1998 + 2000 4 172.35 200.67 -30.86 0.89 1999 + 2001 4 173 201.91 -32.81 0.89 2000 + 2002 4 172.78 203.16 -30.36 0.71 2001 + 2003 4 173.21 204.56 -33.54 0.71 2002 + 2004 4 173.87 206.51 -33.54 0.71 2003 + 2005 4 173.61 207.99 -36.85 0.71 2004 + 2006 4 174.48 210.47 -39.62 0.71 2005 + 2007 4 176.21 212.6 -41.46 0.71 2006 + 2008 4 176.43 214.2 -44.14 0.71 2007 + 2009 4 178.17 216.34 -44.14 0.71 2008 + 2010 4 179.69 218.64 -44.53 0.71 2009 + 2011 4 181.21 220.95 -46.7 0.71 2010 + 2012 4 184.28 224.14 -48.52 0.71 2011 + 2013 4 186.02 226.09 -50.26 0.71 2012 + 2014 4 187.76 228.76 -50.26 0.71 2013 + 2015 4 189.93 231.07 -49.74 0.71 2014 + 2016 4 191.02 232.84 -49.74 0.71 2015 + 2017 4 192.95 234.8 -53.27 0.71 2016 + 2018 4 193.39 236.4 -52.7 0.71 2017 + 2019 4 193.88 238.3 -56.21 0.71 2018 + 2020 4 195.61 240.25 -56.21 0.71 2019 + 2021 4 196.7 242.03 -55.74 0.71 2020 + 2022 4 198.44 244.16 -55.74 0.71 2021 + 2023 4 200.39 246.47 -60.65 0.71 2022 + 2024 4 202.13 249.13 -60.65 0.71 2023 + 2025 4 203.65 250.55 -62.71 0.71 2024 + 2026 4 204.28 251.96 -63.17 0.71 2025 + 2027 4 205.36 255.16 -63.17 0.71 2026 + 2028 4 205.8 257.29 -65.22 0.71 2027 + 2029 4 206.67 259.78 -68.57 0.71 2028 + 2030 4 207.32 262.09 -68.57 0.71 2029 + 2031 4 208.62 264.4 -70.42 0.71 2030 + 2032 4 208.84 266.89 -70.42 0.71 2031 + 2033 4 209.73 269.1 -70.22 0.71 2032 + 2034 4 210.81 270.7 -73.11 0.71 2033 + 2035 4 211.9 272.83 -73.11 0.71 2034 + 2036 4 213.85 274.96 -76.22 0.71 2035 + 2037 4 215.16 277.45 -76.22 0.71 2036 + 2038 4 216.89 280.47 -79.48 0.71 2037 + 2039 4 218.63 283.31 -79.48 0.71 2038 + 2040 4 220.38 284.94 -80.12 0.71 2039 + 2041 4 221.25 286.54 -82.98 0.71 2040 + 2042 4 224.07 289.92 -82.98 0.71 2041 + 2043 4 222.99 292.22 -84.88 0.71 2042 + 2044 4 224.29 294.89 -84.88 0.71 2043 + 2045 4 226.03 297.2 -87.38 0.71 2044 + 2046 4 227.33 299.15 -87.38 0.71 2045 + 2047 4 228.76 301.1 -89.58 0.71 2046 + 2048 4 230.72 303.76 -89.58 0.71 2047 + 2049 4 232.24 305.72 -88.9 0.71 2048 + 2050 4 233.32 307.14 -91.44 0.71 2049 + 2051 4 234.63 308.74 -91.44 0.71 2050 + 2052 4 235.49 311.04 -92.26 0.71 2051 + 2053 4 237.23 312.82 -92.26 0.71 2052 + 2054 4 239.4 314.42 -94.47 0.71 2053 + 2055 4 241.18 316.12 -94.47 0.71 2054 + 2056 4 242.05 317.72 -94.5 0.71 2055 + 2057 4 243.57 318.78 -94.5 0.71 2056 + 2058 4 245.74 320.03 -94.5 0.71 2057 + 2059 4 247.69 321.45 -94.5 0.71 2058 + 2060 4 249.18 322.23 -94.5 0.71 2059 + 2061 4 249.83 323.3 -94.5 0.71 2060 + 2062 4 250.48 324.18 -94.5 0.89 2061 + 2063 4 250.24 325.41 -92.05 0.71 2062 + 2064 4 251.11 327.16 -92.05 0.71 2063 + 2065 4 252.41 329.12 -92.05 0.71 2064 + 2066 4 254.15 330.72 -91.42 0.71 2065 + 2067 4 255.02 332.67 -88.13 0.71 2066 + 2068 4 256.76 335.69 -88.13 0.71 2067 + 2069 4 258.71 338.89 -88.13 0.71 2068 + 2070 4 260.16 341.07 -86.93 0.71 2069 + 2071 4 261.25 343.03 -86.93 0.71 2070 + 2072 4 261.68 344.8 -86.93 0.71 2071 + 2073 4 262.77 346.94 -89.26 0.71 2072 + 2074 4 265.37 349.6 -89.26 0.71 2073 + 2075 4 265.81 351.91 -88.25 0.71 2074 + 2076 4 267.55 354.93 -88.25 0.71 2075 + 2077 4 269.41 357.07 -87.89 0.71 2076 + 2078 4 270.5 359.56 -90.03 0.71 2077 + 2079 4 272.24 361.16 -90.03 0.71 2078 + 2080 4 273.97 362.76 -91.48 0.71 2079 + 2081 4 275.49 364.71 -91.48 0.71 2080 + 2082 4 277.88 366.13 -91.48 0.71 2081 + 2083 4 280.92 367.73 -91.48 0.71 2082 + 2084 4 282.44 370.04 -93.86 0.71 2083 + 2085 4 283.75 372.07 -93.86 0.71 2084 + 2086 4 286.13 374.38 -93.86 0.71 2085 + 2087 4 288.96 376.52 -93.86 0.71 2086 + 2088 4 290.48 378.47 -93.86 0.71 2087 + 2089 4 291.78 380.25 -95.68 0.71 2088 + 2090 4 294.17 383.62 -95.68 0.71 2089 + 2091 4 296.56 385.75 -95.68 0.71 2090 + 2092 4 297.95 387.52 -93.94 0.71 2091 + 2093 4 299.03 389.65 -93.94 0.71 2092 + 2094 4 300.33 391.78 -93.94 0.71 2093 + 2095 4 300.77 394.45 -91.73 0.71 2094 + 2096 4 301.2 397.29 -91.73 0.71 2095 + 2097 4 301.42 400.31 -91.73 0.71 2096 + 2098 4 300.81 403.01 -91.73 0.71 2097 + 2099 4 300.63 404.39 -91.73 0.71 2098 + 2100 4 299.32 406.87 -91.73 0.71 2099 + 2101 4 299.54 408.63 -87.99 0.71 2100 + 2102 4 299.76 411.47 -87.99 0.71 2101 + 2103 4 299.11 413.6 -84.5 0.71 2102 + 2104 4 299.32 416.27 -84.5 0.71 2103 + 2105 4 299.97 418.93 -84.5 0.71 2104 + 2106 4 298.96 421.78 -84.5 0.71 2105 + 2107 4 298.96 424.09 -84.14 0.71 2106 + 2108 4 299.39 426.23 -84.14 0.71 2107 + 2109 4 300.48 428.89 -84.14 0.71 2108 + 2110 4 301.35 433.33 -80.07 0.71 2109 + 2111 4 302.75 436.18 -80.07 0.71 2110 + 2112 4 304.7 439.92 -80.07 0.71 2111 + 2113 4 306.44 442.4 -80.07 0.71 2112 + 2114 4 307.31 444.71 -77.86 0.71 2113 + 2115 4 308.17 446.67 -77.86 0.71 2114 + 2116 4 309.48 449.86 -74.91 0.71 2115 + 2117 4 310.75 452.41 -74.91 0.71 2116 + 2118 4 312.48 454.89 -74.91 0.71 2117 + 2119 4 314.22 457.03 -74.91 0.71 2118 + 2120 4 315.31 459.34 -73.53 0.71 2119 + 2121 4 316.17 461.11 -73.53 0.71 2120 + 2122 4 317.48 463.78 -73.53 0.71 2121 + 2123 4 318.56 466.97 -75.58 0.71 2122 + 2124 4 319.51 468.92 -75.58 0.71 2123 + 2125 4 319.95 470.87 -74.23 0.71 2124 + 2126 4 321.03 473 -74.23 0.71 2125 + 2127 4 320.38 475.67 -71.43 0.71 2126 + 2128 4 320.16 477.62 -71.43 0.71 2127 + 2129 4 320.81 479.93 -71.43 0.71 2128 + 2130 4 319.95 482.78 -71.67 0.71 2129 + 2131 4 319.61 484.54 -69.26 0.71 2130 + 2132 4 319.83 486.67 -67.86 0.71 2131 + 2133 4 319.83 488.8 -70.26 0.71 2132 + 2134 4 319.83 490.94 -70.26 0.71 2133 + 2135 4 320.26 493.6 -70.57 0.71 2134 + 2136 4 320.26 495.91 -70.57 0.71 2135 + 2137 4 318.96 497.69 -67.66 0.71 2136 + 2138 4 317.76 499.54 -67.66 0.71 2137 + 2139 4 316.67 502.74 -67.66 0.71 2138 + 2140 4 315.8 505.23 -67.66 0.71 2139 + 2141 4 316.28 507.32 -67.66 0.71 2140 + 2142 4 316.28 509.98 -67.66 0.71 2141 + 2143 4 316.49 512.83 -67.66 0.71 2142 + 2144 4 316.66 514.16 -67.66 0.71 2143 + 2145 4 252.41 324.14 -94.5 0.71 2062 + 2146 4 255.89 324.12 -96.7 0.71 2145 + 2147 4 260.23 324.65 -96.7 0.71 2146 + 2148 4 262.84 325.36 -96.7 0.71 2147 + 2149 4 265.01 326.25 -101.5 0.71 2148 + 2150 4 267.83 327.14 -101.63 0.71 2149 + 2151 4 271.31 327.85 -103.7 0.71 2150 + 2152 4 274.32 330.05 -106.5 0.71 2151 + 2153 4 277.57 331.12 -106.5 0.71 2152 + 2154 4 279.51 332.01 -106.5 0.71 2153 + 2155 4 281.85 332.65 -106.5 0.71 2154 + 2156 4 285.74 333.01 -106.5 0.71 2155 + 2157 4 290.74 333.72 -106.5 0.71 2156 + 2158 4 293.56 335.14 -106.5 0.71 2157 + 2159 4 294.43 336.38 -106.5 0.71 2158 + 2160 4 172.38 195.39 -25.17 1.065 1998 + 2161 4 173.03 196.98 -25.17 1.065 2160 + 2162 4 173.46 198.58 -25.17 1.065 2161 + 2163 4 174.77 200.54 -21.96 0.89 2162 + 2164 4 175.2 202.49 -21.96 0.89 2163 + 2165 4 176.07 204.45 -21.96 0.89 2164 + 2166 4 177.74 206.48 -20.91 0.89 2165 + 2167 4 178.61 208.43 -20.91 0.89 2166 + 2168 4 181 210.92 -18.71 0.89 2167 + 2169 4 180.35 212.69 -18.71 0.89 2168 + 2170 4 180.78 214.47 -17.41 0.89 2169 + 2171 4 182.09 216.6 -17.41 0.89 2170 + 2172 4 183.61 218.2 -16.01 0.89 2171 + 2173 4 185.56 219.98 -16.01 0.89 2172 + 2174 4 187.28 221.04 -17.66 0.89 2173 + 2175 4 189.67 222.11 -17.66 0.89 2174 + 2176 4 191.63 223.18 -17.66 0.89 2175 + 2177 4 193.58 224.6 -17.66 0.89 2176 + 2178 4 195.32 225.49 -17.66 0.89 2177 + 2179 4 196.84 227.26 -17.66 0.89 2178 + 2180 4 198.14 228.51 -18.38 0.89 2179 + 2181 4 200.31 230.28 -18.38 0.89 2180 + 2182 4 202.05 231.7 -18.38 0.89 2181 + 2183 4 203.57 233.12 -16.53 0.89 2182 + 2184 4 205.31 234.55 -18.31 0.89 2183 + 2185 4 206.7 236 -18.31 0.89 2184 + 2186 4 208.87 238.13 -17.34 0.89 2185 + 2187 4 210.83 240.44 -19.08 0.89 2186 + 2188 4 212.56 242.39 -19.08 0.89 2187 + 2189 4 214.08 244.35 -19.08 0.89 2188 + 2190 4 215.82 245.77 -17.5 0.89 2189 + 2191 4 217.34 247.19 -19.88 0.89 2190 + 2192 4 218.86 248.61 -19.88 0.89 2191 + 2193 4 220.6 250.03 -20.38 0.71 2192 + 2194 4 222.1 252.31 -20.38 0.89 2193 + 2195 4 222.97 253.91 -20.38 0.89 2194 + 2196 4 224.27 256.04 -20.38 0.89 2195 + 2197 4 224.92 257.64 -20.38 0.89 2196 + 2198 4 225.57 259.95 -22.62 0.89 2197 + 2199 4 226.44 261.9 -22.62 0.89 2198 + 2200 4 226.88 264.04 -22.62 0.89 2199 + 2201 4 227.96 266.34 -22.62 0.89 2200 + 2202 4 229.33 269.27 -22.62 0.89 2201 + 2203 4 229.77 270.69 -22.22 0.89 2202 + 2204 4 230.42 271.75 -22.22 1.065 2203 + 2205 4 230.85 272.64 -22.22 1.065 2204 + 2206 4 230.85 273 -22.22 1.245 2205 + 2207 4 230.2 274.24 -22.22 0.89 2206 + 2208 4 230.2 275.48 -24.66 0.89 2207 + 2209 4 229.55 277.44 -27.06 0.89 2208 + 2210 4 228.9 279.04 -27.06 0.89 2209 + 2211 4 228.68 280.46 -26.86 0.71 2210 + 2212 4 228.68 282.59 -26.86 0.71 2211 + 2213 4 227.16 284.37 -26.86 0.71 2212 + 2214 4 226.51 286.68 -28.33 0.71 2213 + 2215 4 225.86 288.45 -28.37 0.71 2214 + 2216 4 225.43 289.7 -28.37 0.71 2215 + 2217 4 224.99 291.83 -28.37 0.71 2216 + 2218 4 224.77 294.31 -28.37 0.71 2217 + 2219 4 224.56 295.91 -29.94 0.71 2218 + 2220 4 223.91 298.93 -29.94 0.71 2219 + 2221 4 223.25 301.06 -31.99 0.71 2220 + 2222 4 223.03 303.27 -33.33 0.71 2221 + 2223 4 222.16 306.12 -33.33 0.71 2222 + 2224 4 221.94 309.14 -35.13 0.71 2223 + 2225 4 222.16 312.51 -35.13 0.71 2224 + 2226 4 221.51 314.64 -36.4 0.71 2225 + 2227 4 221.29 316.78 -35.34 0.71 2226 + 2228 4 221.03 318.52 -35.34 0.71 2227 + 2229 4 221.03 320.65 -37.2 0.71 2228 + 2230 4 221.24 323.32 -37.2 0.71 2229 + 2231 4 220.81 326.51 -37.2 0.71 2230 + 2232 4 220.59 329.89 -37.2 0.71 2231 + 2233 4 220.81 333.09 -37.3 0.71 2232 + 2234 4 221.06 336.16 -37.3 0.71 2233 + 2235 4 220.84 337.58 -38.95 0.71 2234 + 2236 4 221.71 339.89 -38.95 0.71 2235 + 2237 4 222.36 342.38 -37.04 0.71 2236 + 2238 4 223.01 343.8 -37.04 0.71 2237 + 2239 4 223.67 345.76 -37.04 0.71 2238 + 2240 4 224.1 348.42 -37.04 0.71 2239 + 2241 4 224.91 350.14 -37.04 0.71 2240 + 2242 4 224.91 352.27 -37.04 0.71 2241 + 2243 4 225.78 355.12 -35.97 0.71 2242 + 2244 4 226.87 357.42 -37.05 0.71 2243 + 2245 4 228.39 360.27 -37.05 0.71 2244 + 2246 4 229.69 362.75 -37.05 0.71 2245 + 2247 4 230.53 365.23 -37.05 0.71 2246 + 2248 4 232.7 368.6 -37.05 0.71 2247 + 2249 4 234.87 370.18 -37.82 0.71 2248 + 2250 4 236.83 371.96 -37.82 0.71 2249 + 2251 4 239 374.09 -37.82 0.71 2250 + 2252 4 240.52 376.58 -37.82 0.71 2251 + 2253 4 242.26 378.53 -38.21 0.71 2252 + 2254 4 244.18 379.96 -38.21 0.71 2253 + 2255 4 245.92 381.38 -38.21 0.71 2254 + 2256 4 248.31 382.81 -38.21 0.71 2255 + 2257 4 249.17 384.05 -37.32 0.71 2256 + 2258 4 251.56 385.83 -36.91 0.71 2257 + 2259 4 253.95 387.25 -36.91 0.71 2258 + 2260 4 256.12 388.67 -39.64 0.71 2259 + 2261 4 258.51 390.09 -39.64 0.71 2260 + 2262 4 261.12 392.22 -39.64 0.71 2261 + 2263 4 262.35 393.74 -39.64 0.71 2262 + 2264 4 264.3 394.98 -41.7 0.71 2263 + 2265 4 266.04 396.23 -40.45 0.71 2264 + 2266 4 268.21 398.18 -40.45 0.71 2265 + 2267 4 269.51 399.6 -42.02 0.71 2266 + 2268 4 271.03 400.85 -45.7 0.71 2267 + 2269 4 273.2 402.62 -45.7 0.71 2268 + 2270 4 275.38 404.93 -47.35 0.71 2269 + 2271 4 277.33 406 -47.35 0.71 2270 + 2272 4 279.28 407.24 -47.12 0.71 2271 + 2273 4 281.87 408.21 -47.12 0.71 2272 + 2274 4 283.39 409.45 -47.3 0.71 2273 + 2275 4 285.12 411.05 -48.96 0.71 2274 + 2276 4 285.99 413 -51.37 0.71 2275 + 2277 4 287.29 415.14 -51.37 0.71 2276 + 2278 4 288.82 418.16 -51.37 0.71 2277 + 2279 4 290.34 420.11 -50.91 0.71 2278 + 2280 4 292.07 422.42 -50.91 0.71 2279 + 2281 4 292.93 424.1 -52.87 0.71 2280 + 2282 4 294.23 425.7 -52.86 0.71 2281 + 2283 4 294.91 427.52 -52.86 0.71 2282 + 2284 4 296.21 430.01 -52.86 0.71 2283 + 2285 4 296.21 432.14 -55.55 0.71 2284 + 2286 4 297.95 434.09 -55.55 0.71 2285 + 2287 4 299.04 436.05 -55.6 0.71 2286 + 2288 4 300.12 438 -55.6 0.71 2287 + 2289 4 301.43 439.42 -58.14 0.71 2288 + 2290 4 302.55 440.23 -58.14 0.535 2289 + 2291 4 304.07 442.9 -58.14 0.535 2290 + 2292 4 306.02 444.67 -58.14 0.535 2291 + 2293 4 306.45 446.98 -58.14 0.535 2292 + 2294 4 307.11 448.76 -58.14 0.535 2293 + 2295 4 308.19 450.18 -58.14 0.535 2294 + 2296 4 232.81 274.06 -24.65 0.89 2206 + 2297 4 234.33 275.13 -24.22 0.89 2296 + 2298 4 235.63 276.37 -24.22 0.89 2297 + 2299 4 236.5 277.79 -26.18 0.89 2298 + 2300 4 237.59 279.04 -24.21 0.89 2299 + 2301 4 238.89 280.64 -24.21 0.89 2300 + 2302 4 239.98 281.7 -24.77 0.89 2301 + 2303 4 240.45 283.2 -24.77 0.89 2302 + 2304 4 241.27 284.44 -24.77 0.89 2303 + 2305 4 241.27 285.87 -24.77 0.89 2304 + 2306 4 242.13 287.29 -24.77 0.89 2305 + 2307 4 242.35 288 -24.77 0.89 2306 + 2308 4 243.46 291.06 -21.93 0.89 2307 + 2309 4 244.33 292.3 -23.02 0.71 2308 + 2310 4 245.85 293.54 -21.62 0.71 2309 + 2311 4 247.15 295.5 -19.23 0.71 2310 + 2312 4 248.46 297.1 -19.23 0.71 2311 + 2313 4 249.98 298.87 -19.23 0.71 2312 + 2314 4 251.71 300.83 -19.23 0.71 2313 + 2315 4 253.02 302.78 -16.84 0.71 2314 + 2316 4 255.16 304.41 -17.58 0.71 2315 + 2317 4 256.25 306.01 -17.58 0.71 2316 + 2318 4 257.55 307.43 -15.7 0.71 2317 + 2319 4 258.42 309.03 -16.48 0.71 2318 + 2320 4 259.94 310.28 -13 0.71 2319 + 2321 4 261.68 311.7 -13 0.71 2320 + 2322 4 264.07 313.83 -13 0.71 2321 + 2323 4 266.02 314.69 -11.39 0.71 2322 + 2324 4 267.76 316.12 -11.39 0.71 2323 + 2325 4 269.5 316.83 -11.39 0.71 2324 + 2326 4 270.91 317.52 -9.86 0.71 2325 + 2327 4 273.52 318.95 -9.86 0.71 2326 + 2328 4 274.61 320.19 -10.13 0.71 2327 + 2329 4 276.13 321.08 -8.43 0.71 2328 + 2330 4 277.21 323.21 -7.66 0.71 2329 + 2331 4 277.65 325.87 -7.66 0.71 2330 + 2332 4 278.95 328.01 -7.66 0.71 2331 + 2333 4 281.12 329.78 -9.3 0.71 2332 + 2334 4 282.86 331.2 -9.3 0.71 2333 + 2335 4 284.51 332.46 -9.3 0.71 2334 + 2336 4 285.16 334.23 -7.48 0.71 2335 + 2337 4 286.68 335.48 -7.48 0.71 2336 + 2338 4 287.77 337.08 -7.48 0.71 2337 + 2339 4 289.07 339.56 -6.02 0.71 2338 + 2340 4 290.81 341.52 -7.11 0.71 2339 + 2341 4 292.77 343.12 -4.54 0.71 2340 + 2342 4 295.37 345.43 -4.54 0.71 2341 + 2343 4 297.33 346.84 -3.45 0.71 2342 + 2344 4 300.37 348.61 -2.7 0.71 2343 + 2345 4 302.98 350.57 -2.7 0.71 2344 + 2346 4 304.71 352.16 -0.7 0.71 2345 + 2347 4 306.89 355.01 -0.7 0.71 2346 + 2348 4 308.19 356.96 -0.7 0.71 2347 + 2349 4 309.93 358.2 -0.06 0.71 2348 + 2350 4 311.66 359.98 -2.46 0.71 2349 + 2351 4 313.13 361.97 -2.46 0.71 2350 + 2352 4 314.65 364.1 -2.46 0.71 2351 + 2353 4 315.95 366.05 -0.24 0.71 2352 + 2354 4 318.34 366.94 -0.24 0.71 2353 + 2355 4 320.95 369.07 -0.79 0.71 2354 + 2356 4 322.9 371.21 -0.79 0.71 2355 + 2357 4 324.21 373.34 -1.72 0.71 2356 + 2358 4 324.86 374.94 -3.03 0.71 2357 + 2359 4 325.64 376.44 -0.34 0.71 2358 + 2360 4 326.95 378.21 -0.34 0.71 2359 + 2361 4 327.38 380.7 2.91 0.71 2360 + 2362 4 327.82 383.01 2.91 0.71 2361 + 2363 4 327.38 385.14 3.42 0.71 2362 + 2364 4 326.3 386.74 3.42 0.71 2363 + 2365 4 326.3 388.52 5.5 0.71 2364 + 2366 4 324.34 391.18 4.82 0.71 2365 + 2367 4 322.86 394.94 6.1 0.71 2366 + 2368 4 321.55 397.79 6.1 0.71 2367 + 2369 4 321.34 400.27 9.19 0.71 2368 + 2370 4 321.34 402.41 9.19 0.71 2369 + 2371 4 320.68 404.54 9.31 0.71 2370 + 2372 4 320.9 407.02 9.31 0.71 2371 + 2373 4 320.11 408.84 9.31 0.71 2372 + 2374 4 319.24 410.61 11.2 0.71 2373 + 2375 4 318.8 412.57 11.2 0.71 2374 + 2376 4 318.59 414.7 13.74 0.71 2375 + 2377 4 318.59 417.01 13.74 0.71 2376 + 2378 4 318.37 420.56 16.29 0.71 2377 + 2379 4 317.94 423.76 17.03 0.71 2378 + 2380 4 317.54 426.3 18.78 0.71 2379 + 2381 4 317.54 428.79 17.7 0.71 2380 + 2382 4 317.11 432.16 18.41 0.71 2381 + 2383 4 316.67 435.01 18.41 0.71 2382 + 2384 4 316.24 436.78 20.42 0.71 2383 + 2385 4 316.24 439.27 23.22 0.71 2384 + 2386 4 315.74 441.9 23.22 0.71 2385 + 2387 4 315.52 444.03 23.22 0.71 2386 + 2388 4 316.39 446.16 23.31 0.71 2387 + 2389 4 317.7 448.83 25.14 0.71 2388 + 2390 4 317.7 452.2 25.14 0.71 2389 + 2391 4 318.56 454.34 27.66 0.71 2390 + 2392 4 319.88 455.86 27.66 0.71 2391 + 2393 4 319.88 457.99 30.31 0.71 2392 + 2394 4 320.21 459.64 30.31 0.71 2393 + 2395 4 320.86 462.3 33.11 0.535 2394 + 2396 4 322.16 464.79 33.11 0.535 2395 + 2397 4 323.68 466.92 33.11 0.535 2396 + 2398 4 324.55 469.41 33.11 0.535 2397 + 2399 4 325.42 471.72 33.11 0.535 2398 + 2400 4 324.77 473.14 35.75 0.71 2399 + 2401 4 325.66 475.19 35.75 0.71 2400 + 2402 4 243.87 288.89 -24.82 0.71 2307 + 2403 4 246.04 290.84 -24.82 0.71 2402 + 2404 4 247.56 292.62 -27.58 0.71 2403 + 2405 4 249.52 294.93 -27.58 0.71 2404 + 2406 4 251.91 296.35 -27.14 0.71 2405 + 2407 4 253.21 297.41 -27.14 0.71 2406 + 2408 4 254.73 298.66 -24.03 0.71 2407 + 2409 4 256.25 299.9 -24.03 0.71 2408 + 2410 4 256.9 301.32 -24.03 0.71 2409 + 2411 4 258.21 302.39 -24.03 0.71 2410 + 2412 4 259.29 303.45 -22.58 0.71 2411 + 2413 4 260.59 305.23 -24.06 0.71 2412 + 2414 4 261.68 307.01 -22.05 0.71 2413 + 2415 4 262.98 308.6 -19.55 0.71 2414 + 2416 4 265.15 310.38 -19.55 0.71 2415 + 2417 4 268.02 311.66 -19.55 0.71 2416 + 2418 4 270.61 311.48 -19.55 0.71 2417 + 2419 4 272.34 311.12 -21.46 0.71 2418 + 2420 4 273.43 311.48 -24.34 0.71 2419 + 2421 4 274.73 313.43 -24.9 0.71 2420 + 2422 4 276.47 315.03 -23.42 0.71 2421 + 2423 4 279.07 316.63 -25.15 0.71 2422 + 2424 4 281.9 319.12 -25.15 0.71 2423 + 2425 4 285.59 321.61 -22.04 0.71 2424 + 2426 4 287.55 323.04 -19.46 0.71 2425 + 2427 4 289.5 325.17 -19.46 0.71 2426 + 2428 4 290.37 326.23 -20.76 0.71 2427 + 2429 4 291.89 328.19 -20.76 0.71 2428 + 2430 4 293.19 329.61 -20.76 0.71 2429 + 2431 4 295.15 331.74 -19.03 0.71 2430 + 2432 4 297.1 333.34 -17.14 0.71 2431 + 2433 4 300.58 335.65 -18 0.71 2432 + 2434 4 303.4 336.54 -18 0.71 2433 + 2435 4 304.44 338.06 -15.97 0.71 2434 + 2436 4 306.83 339.12 -14.74 0.71 2435 + 2437 4 309.44 340.19 -14.29 0.71 2436 + 2438 4 310.96 340.72 -13.74 0.71 2437 + 2439 4 313.78 341.97 -12.42 0.71 2438 + 2440 4 316.61 343.03 -12.42 0.71 2439 + 2441 4 318.56 343.56 -9.78 0.71 2440 + 2442 4 321.6 344.1 -9.78 0.71 2441 + 2443 4 323.11 345.44 -9.78 0.71 2442 + 2444 4 326.15 346.15 -9.78 0.71 2443 + 2445 4 328.31 347.03 -5.91 0.71 2444 + 2446 4 331.35 347.57 -5.91 0.71 2445 + 2447 4 333.95 348.81 -5.91 0.71 2446 + 2448 4 336.13 349.88 -5.91 0.71 2447 + 2449 4 338.52 350.23 -6.59 0.71 2448 + 2450 4 340.9 352.01 -3.68 0.71 2449 + 2451 4 342.5 353.26 -3.56 0.71 2450 + 2452 4 345.32 354.86 -3.56 0.71 2451 + 2453 4 347.49 354.86 -4.33 0.71 2452 + 2454 4 350.31 356.63 -2.45 0.71 2453 + 2455 4 351.83 359.12 -2.45 0.71 2454 + 2456 4 353.14 361.43 -2.17 0.71 2455 + 2457 4 353.35 363.38 -2.17 0.71 2456 + 2458 4 353.79 365.16 -1.03 0.71 2457 + 2459 4 354.22 366.94 2.1 0.71 2458 + 2460 4 353.98 368.1 2.1 0.71 2459 + 2461 4 354.19 369.7 2.34 0.71 2460 + 2462 4 355.93 372.01 2.34 0.71 2461 + 2463 4 357.45 374.32 3.12 0.71 2462 + 2464 4 358.75 376.1 5.85 0.71 2463 + 2465 4 360.49 378.23 9.16 0.71 2464 + 2466 4 362.01 380.89 11.15 0.71 2465 + 2467 4 363.1 383.02 11.15 0.71 2466 + 2468 4 365.58 386.39 10.92 0.71 2467 + 2469 4 367.1 388.88 10.92 0.71 2468 + 2470 4 367.97 391.54 10.8 0.71 2469 + 2471 4 369.49 393.14 10.8 0.71 2470 + 2472 4 370.91 395.52 12.87 0.71 2471 diff --git a/examples/tutorials/Rdesigneur/cells/CA1.morph.xml b/examples/tutorials/Rdesigneur/cells/CA1.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/CA1.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc b/examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc new file mode 100644 index 0000000..6ca8c78 --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc @@ -0,0 +1,6764 @@ +# Original file DHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in DHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\DHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +# NEUROMANTIC V1.6.3 (2/28/2013 12:43:57 PM): Saved to DHC-neuron.swc +1 1 0.0 0.0 0.0 8.5214 -1 +2 1 -0.05 -8.47 -0.87 8.5214 1 +3 1 0.05 8.47 0.87 8.5214 1 +4 3 4.36 -6.98 -4.24 2.275 1 +5 3 5.55 -8.63 -4.38 1.625 4 +6 3 6.29 -9.84 -4.79 1.3 5 +7 3 7.21 -11.46 -3.28 1.085 6 +8 3 7.88 -11.55 -3.27 1.085 7 +9 3 8.14 -12.19 -3.18 0.435 8 +10 3 8.15 -12.41 -3.2 0.435 9 +11 3 8.2 -12.48 -4.57 0.435 10 +12 3 8.45 -12.85 -5.05 0.435 11 +13 3 8.5 -13.21 -5.84 0.435 12 +14 3 8.52 -13.12 -6.74 0.435 13 +15 3 7.83 -13.33 -5.11 0.435 14 +16 3 7.81 -13.11 -5.09 0.435 15 +17 3 8.03 -13.11 -5.01 0.76 16 +18 3 8.07 -13.74 -5.07 0.975 17 +19 3 8.38 -15.02 -5.2 0.975 18 +20 3 8.84 -15.53 -5.24 0.975 19 +21 3 9.53 -16.4 -4.87 0.435 20 +22 3 10.63 -16.55 -4.86 0.435 21 +23 3 11.07 -16.51 -4.99 0.435 22 +24 3 11.52 -16.63 -5.59 0.435 23 +25 3 12.19 -16.76 -5.97 0.435 24 +26 3 12.66 -17.12 -6.45 0.435 25 +27 3 13.12 -17.29 -6.68 0.435 26 +28 3 13.14 -17.22 -7.35 0.435 27 +29 3 13.74 -17.39 -5.39 0.435 28 +30 3 14.63 -17.69 -6.08 0.435 29 +31 3 15.99 -18.22 -6.4 0.435 30 +32 3 17.12 -18.77 -6.73 0.435 31 +33 3 18.71 -19.93 -7.12 0.435 32 +34 3 20.11 -21.34 -7.31 0.435 33 +35 3 22.14 -22.5 -7.38 0.435 34 +36 3 23.28 -23.3 -7.44 0.435 35 +37 3 24.85 -24.28 -7.5 0.435 36 +38 3 25.78 -25.09 -7.57 0.435 37 +39 3 26.27 -25.9 -7.71 0.435 38 +40 3 27.19 -26.95 -7.49 0.435 39 +41 3 28.59 -28.63 -7.33 0.435 40 +42 3 29.96 -29.62 -7.33 0.435 41 +43 3 31.09 -30.41 -7.39 0.435 42 +44 3 33.97 -31.32 -7.41 0.435 43 +45 3 35.74 -31.85 -7.43 0.435 44 +46 3 36.9 -33.07 -7.44 0.435 45 +47 3 38.05 -34.08 -7.52 0.435 46 +48 3 39.23 -35.52 -7.64 0.435 47 +49 3 39.91 -36.13 -7.62 0.435 48 +50 3 40.4 -36.75 -7.67 0.435 49 +51 3 41.32 -37.76 -7.76 0.435 50 +52 3 42.03 -38.57 -7.89 0.435 51 +53 3 43.66 -40.19 -8.02 0.435 52 +54 3 44.56 -41.0 -8.08 0.435 53 +55 3 46.4 -42.39 -8.18 0.435 54 +56 3 47.96 -43.15 -8.23 0.435 55 +57 3 49.11 -44.17 -8.3 0.435 56 +58 3 50.04 -45.18 -8.39 0.435 57 +59 3 50.3 -45.82 -8.45 0.435 58 +60 3 50.6 -47.08 -8.57 0.435 59 +61 3 51.33 -48.33 -8.68 0.435 60 +62 3 51.57 -48.74 -8.72 0.435 61 +63 3 51.64 -49.82 -8.83 0.435 62 +64 3 51.88 -50.23 -8.87 0.435 63 +65 3 52.6 -50.99 -9.46 0.435 64 +66 3 53.31 -51.52 -10.25 0.435 65 +67 3 54.03 -52.51 -10.71 0.435 66 +68 3 54.98 -53.25 -11.45 0.435 67 +69 3 55.45 -53.84 -11.72 0.435 68 +70 3 55.93 -54.45 -11.92 0.435 69 +71 3 56.4 -54.8 -12.4 0.435 70 +72 3 56.85 -55.2 -12.43 0.435 71 +73 3 57.55 -55.81 -12.48 0.435 72 +74 3 58.34 -57.88 -12.9 0.435 73 +75 3 60.6 -58.97 -13.57 0.435 74 +76 3 61.73 -59.75 -13.69 0.435 75 +77 3 62.66 -60.25 -14.7 0.435 76 +78 3 63.34 -60.38 -15.15 0.435 77 +79 3 64.47 -61.16 -15.28 0.435 78 +80 3 64.93 -61.28 -15.96 0.435 79 +81 3 65.87 -62.29 -16.12 0.435 80 +82 3 66.34 -62.63 -16.67 0.435 81 +83 3 68.15 -63.33 -17.3 0.435 82 +84 3 69.71 -63.8 -18.06 0.435 83 +85 3 70.82 -63.89 -18.65 0.435 84 +86 3 71.91 -63.81 -18.7 0.435 85 +87 3 72.57 -64.2 -18.72 0.435 86 +88 3 74.39 -65.36 -19.02 0.435 87 +89 3 75.52 -65.91 -19.2 0.435 88 +90 3 76.46 -66.92 -19.43 0.435 89 +91 3 77.38 -67.42 -20.37 0.435 90 +92 3 78.31 -67.94 -21.16 0.435 91 +93 3 79.92 -69.31 -21.56 0.435 92 +94 3 80.83 -69.62 -22.25 0.435 93 +95 3 81.76 -70.4 -22.45 0.435 94 +96 3 82.22 -70.48 -23.51 0.435 95 +97 3 83.16 -71.24 -24.02 0.435 96 +98 3 84.75 -72.15 -24.76 0.435 97 +99 3 85.43 -72.52 -25.0 0.435 98 +100 3 85.9 -72.64 -25.69 0.435 99 +101 3 86.57 -72.79 -25.91 0.435 100 +102 3 87.47 -73.12 -26.37 0.435 101 +103 3 88.61 -73.89 -26.65 0.435 102 +104 3 89.93 -74.21 -26.95 0.435 103 +105 3 93.09 -75.67 -27.63 0.435 104 +106 3 94.85 -75.94 -28.15 0.435 105 +107 3 96.18 -76.28 -28.22 0.435 106 +108 3 97.7 -76.16 -28.41 0.435 107 +109 3 100.33 -76.4 -28.67 0.435 108 +110 3 101.47 -77.19 -28.8 0.435 109 +111 3 103.49 -78.36 -28.87 0.435 110 +112 3 104.84 -78.87 -29.42 0.435 111 +113 3 106.17 -79.21 -29.5 0.435 112 +114 3 107.69 -79.12 -29.45 0.435 113 +115 3 109.24 -79.64 -29.77 0.435 114 +116 3 111.67 -80.12 -29.84 0.435 115 +117 3 112.82 -81.12 -29.99 0.435 116 +118 3 114.22 -82.51 -30.48 0.435 117 +119 3 114.92 -83.33 -30.55 0.435 118 +120 3 115.64 -84.35 -30.71 0.435 119 +121 3 116.36 -85.37 -30.8 0.435 120 +122 3 116.85 -86.2 -30.95 0.435 121 +123 3 117.37 -87.46 -31.07 0.435 122 +124 3 118.05 -88.06 -31.12 0.435 123 +125 3 118.54 -88.87 -31.41 0.435 124 +126 3 119.26 -89.66 -31.78 0.435 125 +127 3 119.51 -90.03 -32.26 0.435 126 +128 3 120.21 -90.61 -32.61 0.435 127 +129 3 120.45 -91.23 -32.66 0.435 128 +130 3 120.92 -91.62 -32.76 0.435 129 +131 3 121.41 -92.46 -32.84 0.435 130 +132 3 121.66 -92.85 -33.03 0.435 131 +133 3 122.36 -93.45 -33.22 0.435 132 +134 3 123.27 -94.21 -33.58 0.435 133 +135 3 123.52 -94.63 -33.7 0.435 134 +136 3 124.69 -95.56 -34.44 0.435 135 +137 3 125.16 -95.96 -34.47 0.435 136 +138 3 125.6 -96.36 -34.58 0.435 137 +139 3 126.29 -96.74 -34.76 0.435 138 +140 3 126.74 -96.91 -34.83 0.435 139 +141 3 127.21 -97.3 -35.01 0.435 140 +142 3 127.66 -97.66 -35.42 0.435 141 +143 3 128.13 -98.03 -35.82 0.435 142 +144 3 128.6 -98.41 -36.0 0.435 143 +145 3 128.84 -98.55 -36.61 0.435 144 +146 3 129.53 -99.14 -36.74 0.435 145 +147 3 130.42 -99.29 -36.95 0.435 146 +148 3 130.45 -99.43 -37.57 0.435 147 +149 3 7.37 -16.37 -5.36 0.54 20 +150 3 7.01 -17.48 -5.48 0.54 149 +151 3 6.43 -18.58 -5.61 0.54 150 +152 3 5.65 -19.92 -5.77 0.54 151 +153 3 4.59 -20.41 -5.84 0.54 152 +154 3 4.39 -20.67 -5.65 0.65 153 +155 3 3.35 -21.35 -5.9 0.65 154 +156 3 2.97 -21.68 -7.22 0.65 155 +157 3 3.24 -21.69 -9.02 0.435 156 +158 3 3.3 -22.56 -9.11 0.435 157 +159 3 3.35 -23.42 -9.13 0.435 158 +160 3 2.55 -24.33 -9.24 0.435 159 +161 3 1.72 -25.03 -9.34 0.435 160 +162 3 0.89 -25.5 -9.4 0.435 161 +163 3 1.32 -25.86 -8.79 0.435 162 +164 3 1.76 -26.22 -8.17 0.435 163 +165 3 2.7 -27.25 -8.25 0.435 164 +166 3 3.62 -28.27 -8.34 0.435 165 +167 3 4.79 -29.48 -8.44 0.435 166 +168 3 5.98 -31.13 -8.58 0.435 167 +169 3 6.73 -32.59 -8.71 0.435 168 +170 3 7.49 -34.48 -8.89 0.435 169 +171 3 8.25 -36.16 -9.05 0.435 170 +172 3 8.84 -38.48 -9.27 0.435 171 +173 3 9.36 -39.74 -9.39 0.435 172 +174 3 9.88 -41.22 -9.53 0.435 173 +175 3 10.22 -43.14 -9.72 0.435 174 +176 3 10.15 -45.29 -9.95 0.435 175 +177 3 10.26 -47.0 -10.12 0.435 176 +178 3 10.79 -48.69 -10.28 0.435 177 +179 3 10.9 -50.39 -10.46 0.435 178 +180 3 11.63 -51.65 -10.57 0.435 179 +181 3 12.82 -53.08 -10.69 0.435 180 +182 3 13.38 -54.92 -11.4 0.435 181 +183 3 13.71 -56.38 -11.84 0.435 182 +184 3 14.0 -57.37 -12.69 0.435 183 +185 3 14.11 -58.82 -13.21 0.435 184 +186 3 14.45 -60.73 -13.48 0.435 185 +187 3 14.96 -62.0 -13.6 0.435 186 +188 3 15.07 -63.71 -13.78 0.435 187 +189 3 15.17 -65.21 -13.93 0.435 188 +190 3 15.86 -66.02 -14.0 0.435 189 +191 3 16.38 -67.28 -14.11 0.435 190 +192 3 17.11 -68.31 -14.2 0.435 191 +193 3 17.59 -69.15 -14.28 0.435 192 +194 3 17.6 -69.32 -14.3 0.435 193 +195 3 17.43 -69.37 -15.89 0.435 194 +196 3 17.24 -69.83 -15.94 0.435 195 +197 3 16.82 -70.07 -15.9 0.435 196 +198 3 16.39 -70.1 -15.91 0.435 197 +199 3 16.23 -70.96 -16.01 0.435 198 +200 3 16.26 -71.39 -16.12 0.435 199 +201 3 16.31 -72.24 -16.28 0.435 200 +202 3 16.41 -73.74 -16.43 0.435 201 +203 3 16.7 -74.8 -16.54 0.435 202 +204 3 16.97 -75.64 -16.62 0.435 203 +205 3 17.24 -76.49 -16.7 0.435 204 +206 3 17.26 -76.91 -16.82 0.435 205 +207 3 17.31 -77.54 -16.95 0.435 206 +208 3 17.34 -77.97 -17.08 0.435 207 +209 3 17.38 -78.6 -17.14 0.435 208 +210 3 17.43 -79.23 -17.28 0.435 209 +211 3 17.06 -80.33 -17.4 0.435 210 +212 3 16.68 -81.22 -17.5 0.435 211 +213 3 16.28 -81.67 -17.56 0.435 212 +214 3 16.34 -82.75 -17.67 0.435 213 +215 3 16.39 -83.39 -17.73 0.435 214 +216 3 16.45 -84.46 -17.84 0.435 215 +217 3 16.51 -85.31 -17.93 0.435 216 +218 3 16.8 -86.37 -18.03 0.435 217 +219 3 16.84 -87.02 -18.1 0.435 218 +220 3 16.88 -87.66 -18.16 0.435 219 +221 3 16.7 -88.31 -18.23 0.435 220 +222 3 16.98 -88.89 -18.82 0.435 221 +223 3 17.2 -88.88 -18.73 0.435 222 +224 3 17.23 -89.3 -18.93 0.435 223 +225 3 17.69 -89.67 -19.26 0.435 224 +226 3 17.94 -90.08 -19.37 0.435 225 +227 3 17.98 -90.47 -19.79 0.435 226 +228 3 18.43 -90.61 -20.24 0.435 227 +229 3 18.93 -91.37 -21.06 0.435 228 +230 3 19.19 -91.95 -21.5 0.435 229 +231 3 19.45 -92.34 -21.9 0.435 230 +232 3 20.13 -92.44 -22.5 0.435 231 +233 3 20.38 -92.81 -22.99 0.435 232 +234 3 20.64 -93.13 -23.92 0.435 233 +235 3 21.11 -93.49 -24.47 0.435 234 +236 3 21.36 -93.9 -24.51 0.435 235 +237 3 21.61 -94.26 -24.99 0.435 236 +238 3 22.1 -94.85 -25.34 0.435 237 +239 3 22.13 -95.48 -25.49 0.435 238 +240 3 22.6 -95.86 -25.89 0.435 239 +241 3 23.1 -96.41 -26.46 0.435 240 +242 3 23.35 -97.04 -26.59 0.435 241 +243 3 23.61 -97.62 -27.1 0.435 242 +244 3 23.88 -98.25 -27.24 0.435 243 +245 3 24.13 -98.85 -27.45 0.435 244 +246 3 24.18 -99.49 -27.58 0.435 245 +247 3 24.67 -100.04 -28.31 0.435 246 +248 3 24.92 -100.4 -28.86 0.435 247 +249 3 25.22 -101.44 -29.12 0.435 248 +250 3 25.51 -102.23 -29.79 0.435 249 +251 3 25.97 -102.62 -29.9 0.435 250 +252 3 26.21 -102.75 -30.59 0.435 251 +253 3 26.71 -103.54 -31.11 0.435 252 +254 3 27.2 -104.3 -31.78 0.435 253 +255 3 27.46 -104.93 -31.84 0.435 254 +256 3 27.73 -105.52 -32.26 0.435 255 +257 3 28.61 -105.68 -32.34 0.435 256 +258 3 29.09 -106.03 -32.89 0.435 257 +259 3 29.78 -106.59 -33.23 0.435 258 +260 3 30.24 -106.74 -33.69 0.435 259 +261 3 31.18 -107.46 -34.58 0.435 260 +262 3 31.42 -107.59 -35.26 0.435 261 +263 3 32.77 -108.1 -35.81 0.435 262 +264 3 33.22 -108.29 -35.82 0.435 263 +265 3 33.91 -108.34 -36.94 0.435 264 +266 3 34.15 -108.47 -37.7 0.435 265 +267 3 34.38 -108.39 -38.29 0.435 266 +268 3 35.06 -108.76 -38.61 0.435 267 +269 3 35.74 -109.15 -38.63 0.435 268 +270 3 37.1 -109.63 -39.41 0.435 269 +271 3 37.99 -109.77 -39.62 0.435 270 +272 3 38.45 -110.11 -40.25 0.435 271 +273 3 38.9 -110.3 -40.34 0.435 272 +274 3 39.15 -110.7 -40.37 0.435 273 +275 3 39.4 -111.33 -40.43 0.435 274 +276 3 39.46 -112.19 -40.52 0.435 275 +277 3 39.54 -112.71 -41.85 0.435 276 +278 3 39.78 -113.09 -42.11 0.435 277 +279 3 39.83 -113.4 -43.27 0.435 278 +280 3 39.85 -113.57 -43.81 0.435 279 +281 3 39.04 -114.25 -43.98 0.435 280 +282 3 38.86 -114.41 -44.76 0.435 281 +283 3 38.45 -114.58 -45.54 0.435 282 +284 3 38.5 -114.9 -46.55 0.435 283 +285 3 38.53 -114.78 -47.67 0.435 284 +286 3 38.12 -115.21 -47.94 0.435 285 +287 3 37.73 -115.62 -48.45 0.435 286 +288 3 37.76 -116.04 -48.56 0.435 287 +289 3 38.01 -116.2 -49.11 0.435 288 +290 3 38.03 -116.35 -49.64 0.435 289 +291 3 37.63 -116.75 -50.15 0.435 290 +292 3 38.12 -117.35 -50.43 0.435 291 +293 3 38.15 -117.77 -50.54 0.435 292 +294 3 38.62 -118.36 -50.89 0.435 293 +295 3 40.77 -117.78 -50.93 0.435 294 +296 3 41.66 -118.16 -50.95 0.435 295 +297 3 42.34 -118.76 -51.0 0.435 296 +298 3 43.03 -119.38 -51.05 0.435 297 +299 3 43.52 -120.2 -51.12 0.435 298 +300 3 44.0 -120.82 -51.17 0.435 299 +301 3 44.47 -121.43 -51.22 0.435 300 +302 3 44.91 -121.4 -51.21 0.435 301 +303 3 46.2 -121.32 -51.17 0.435 302 +304 3 46.85 -121.28 -51.15 0.435 303 +305 3 47.28 -121.25 -51.14 0.435 304 +306 3 48.32 -120.55 -51.04 0.435 305 +307 3 49.37 -120.05 -50.96 0.435 306 +308 3 50.2 -119.37 -50.87 0.435 307 +309 3 50.85 -119.28 -51.23 0.435 308 +310 3 51.28 -119.25 -51.29 0.435 309 +311 3 52.18 -119.37 -51.66 0.435 310 +312 3 53.04 -119.32 -51.64 0.435 311 +313 3 53.92 -119.48 -51.7 0.435 312 +314 3 55.44 -119.59 -51.68 0.435 313 +315 3 56.53 -119.75 -51.67 0.435 314 +316 3 56.98 -119.93 -51.68 0.435 315 +317 3 57.67 -120.29 -52.0 0.435 316 +318 3 58.36 -120.61 -52.62 0.435 317 +319 3 59.04 -121.22 -52.67 0.435 318 +320 3 59.75 -121.78 -53.09 0.435 319 +321 3 60.44 -122.38 -53.14 0.435 320 +322 3 60.89 -122.78 -53.24 0.435 321 +323 3 61.14 -123.19 -53.27 0.435 322 +324 3 61.63 -124.03 -53.35 0.435 323 +325 3 61.88 -124.44 -53.47 0.435 324 +326 3 62.12 -124.84 -53.57 0.435 325 +327 3 62.37 -125.23 -53.83 0.435 326 +328 3 62.83 -125.62 -53.94 0.435 327 +329 3 63.49 -125.8 -54.01 0.435 328 +330 3 63.95 -126.19 -54.04 0.435 329 +331 3 64.4 -126.12 -54.48 0.435 330 +332 3 64.83 -126.07 -54.69 0.435 331 +333 3 65.28 -126.01 -54.98 0.435 332 +334 3 16.54 -88.97 -18.31 0.435 221 +335 3 16.16 -90.07 -18.43 0.435 334 +336 3 16.21 -90.92 -18.52 0.435 335 +337 3 15.45 -92.27 -18.67 0.435 336 +338 3 15.98 -93.94 -18.83 0.435 337 +339 3 16.27 -95.01 -18.94 0.435 338 +340 3 16.3 -95.45 -18.98 0.435 339 +341 3 16.59 -96.44 -19.61 0.435 340 +342 3 15.61 -97.73 -20.37 0.435 341 +343 3 15.72 -97.83 -20.38 0.435 342 +344 3 16.49 -97.63 -20.86 0.325 343 +345 3 16.73 -98.26 -20.85 0.325 344 +346 3 16.76 -98.43 -21.24 0.325 345 +347 3 16.78 -98.35 -22.07 0.325 346 +348 3 17.03 -98.46 -23.05 0.325 347 +349 3 17.29 -98.53 -24.26 0.325 348 +350 3 17.34 -99.17 -24.4 0.325 349 +351 3 17.38 -99.52 -25.11 0.325 350 +352 3 17.44 -100.09 -25.92 0.325 351 +353 3 17.73 -100.78 -27.49 0.325 352 +354 3 17.99 -101.13 -28.05 0.325 353 +355 3 18.03 -101.53 -28.47 0.325 354 +356 3 18.27 -101.19 -29.56 0.325 355 +357 3 18.31 -101.57 -30.05 0.325 356 +358 3 18.35 -102.17 -30.56 0.325 357 +359 3 17.62 -103.88 -31.36 0.325 358 +360 3 17.67 -104.72 -31.51 0.325 359 +361 3 17.74 -105.78 -31.85 0.325 360 +362 3 17.82 -106.54 -32.84 0.325 361 +363 3 18.1 -107.1 -33.56 0.325 362 +364 3 18.15 -107.68 -34.22 0.325 363 +365 3 18.63 -108.29 -34.35 0.325 364 +366 3 18.88 -108.69 -34.54 0.325 365 +367 3 19.12 -109.31 -34.6 0.325 366 +368 3 19.38 -109.94 -34.73 0.325 367 +369 3 19.63 -110.33 -34.99 0.325 368 +370 3 19.72 -111.62 -35.13 0.325 369 +371 3 19.8 -112.89 -35.33 0.325 370 +372 3 19.87 -113.96 -35.44 0.325 371 +373 3 20.12 -114.59 -35.49 0.325 372 +374 3 20.17 -115.45 -35.58 0.325 373 +375 3 20.42 -115.87 -35.62 0.325 374 +376 3 20.49 -116.93 -35.73 0.325 375 +377 3 20.53 -117.58 -35.79 0.325 376 +378 3 20.78 -117.99 -35.91 0.325 377 +379 3 20.81 -118.39 -36.1 0.325 378 +380 3 20.86 -119.02 -36.39 0.325 379 +381 3 20.04 -119.7 -36.63 0.325 380 +382 3 20.13 -120.95 -37.06 0.325 381 +383 3 20.28 -123.02 -37.95 0.325 382 +384 3 20.76 -123.6 -38.44 0.325 383 +385 3 20.82 -124.41 -38.98 0.325 384 +386 3 21.32 -125.22 -39.28 0.325 385 +387 3 21.48 -127.57 -39.59 0.325 386 +388 3 21.13 -129.1 -39.76 0.325 387 +389 3 21.41 -129.93 -39.92 0.325 388 +390 3 21.92 -130.95 -40.23 0.325 389 +391 3 21.98 -131.76 -40.77 0.325 390 +392 3 22.02 -132.37 -41.06 0.325 391 +393 3 22.08 -132.99 -41.43 0.325 392 +394 3 22.11 -133.63 -41.49 0.325 393 +395 3 22.17 -134.24 -41.85 0.325 394 +396 3 22.21 -134.86 -42.22 0.325 395 +397 3 22.28 -135.66 -42.82 0.325 396 +398 3 22.34 -136.47 -43.36 0.325 397 +399 3 22.4 -137.32 -43.52 0.325 398 +400 3 22.04 -138.12 -44.37 0.325 399 +401 3 22.17 -140.04 -44.64 0.325 400 +402 3 22.25 -141.04 -45.41 0.325 401 +403 3 22.3 -141.68 -45.56 0.325 402 +404 3 22.36 -142.74 -45.82 0.325 403 +405 3 22.03 -144.05 -46.03 0.325 404 +406 3 22.08 -144.9 -46.12 0.325 405 +407 3 22.34 -145.24 -46.9 0.325 406 +408 3 22.38 -145.62 -47.47 0.325 407 +409 3 22.41 -146.25 -47.61 0.325 408 +410 3 22.66 -146.67 -47.64 0.325 409 +411 3 22.72 -147.51 -47.88 0.325 410 +412 3 22.75 -147.92 -48.07 0.325 411 +413 3 23.02 -148.53 -48.28 0.325 412 +414 3 23.09 -149.33 -48.96 0.325 413 +415 3 22.74 -150.6 -49.49 0.325 414 +416 3 23.5 -152.26 -49.79 0.325 415 +417 3 23.56 -153.09 -50.1 0.325 416 +418 3 24.1 -154.54 -50.54 0.325 417 +419 3 24.82 -155.53 -51.0 0.325 418 +420 3 25.76 -156.24 -51.96 0.325 419 +421 3 26.72 -156.9 -53.43 0.325 420 +422 3 27.19 -157.23 -54.13 0.325 421 +423 3 27.66 -157.62 -54.31 0.325 422 +424 3 27.91 -157.68 -55.67 0.325 423 +425 3 28.4 -158.01 -56.52 0.325 424 +426 3 29.27 -157.89 -57.1 0.325 425 +427 3 29.94 -157.77 -57.82 0.325 426 +428 3 30.87 -158.02 -59.02 0.325 427 +429 3 31.76 -158.35 -59.49 0.325 428 +430 3 15.84 -97.92 -20.39 0.435 343 +431 3 15.47 -99.02 -20.58 0.435 430 +432 3 15.74 -99.62 -21.02 0.435 431 +433 3 15.79 -100.21 -21.53 0.435 432 +434 3 15.87 -101.24 -22.09 0.435 433 +435 3 15.93 -102.07 -22.39 0.435 434 +436 3 16.17 -102.48 -22.43 0.435 435 +437 3 16.23 -103.34 -22.6 0.435 436 +438 3 16.26 -103.77 -22.64 0.435 437 +439 3 16.74 -104.59 -22.78 0.435 438 +440 3 16.41 -106.11 -22.95 0.435 439 +441 3 15.87 -107.87 -23.14 0.435 440 +442 3 15.91 -108.27 -23.42 0.435 441 +443 3 15.97 -108.84 -24.15 0.435 442 +444 3 16.04 -109.64 -24.83 0.435 443 +445 3 16.08 -110.01 -25.4 0.435 444 +446 3 16.13 -110.6 -26.06 0.435 445 +447 3 16.2 -111.39 -26.74 0.435 446 +448 3 16.25 -112.22 -26.97 0.435 447 +449 3 16.75 -112.77 -27.7 0.435 448 +450 3 16.79 -113.14 -28.34 0.435 449 +451 3 16.81 -113.58 -28.39 0.435 450 +452 3 17.31 -114.61 -28.55 0.435 451 +453 3 17.34 -115.04 -28.68 0.435 452 +454 3 17.41 -115.8 -29.58 0.435 453 +455 3 18.15 -117.04 -29.84 0.435 454 +456 3 18.2 -117.61 -30.5 0.435 455 +457 3 18.48 -118.41 -31.03 0.435 456 +458 3 19.64 -119.41 -31.19 0.435 457 +459 3 19.69 -120.27 -31.28 0.435 458 +460 3 19.75 -120.6 -32.35 0.435 459 +461 3 19.38 -121.68 -32.55 0.435 460 +462 3 19.42 -122.06 -33.05 0.435 461 +463 3 19.05 -122.91 -33.44 0.435 462 +464 3 19.13 -123.95 -33.85 0.435 463 +465 3 19.2 -124.75 -34.54 0.435 464 +466 3 19.48 -125.77 -35.01 0.435 465 +467 3 19.55 -126.6 -35.39 0.435 466 +468 3 19.84 -127.64 -35.57 0.435 467 +469 3 20.17 -129.33 -35.89 0.435 468 +470 3 20.44 -130.14 -36.19 0.435 469 +471 3 20.49 -130.75 -36.71 0.435 470 +472 3 20.99 -131.58 -36.86 0.435 471 +473 3 21.01 -131.78 -36.95 0.435 472 +474 3 21.06 -132.62 -37.04 0.435 473 +475 3 21.11 -132.95 -38.13 0.435 474 +476 3 21.17 -133.49 -39.16 0.435 475 +477 3 21.21 -133.86 -39.8 0.435 476 +478 3 21.51 -134.33 -41.43 0.435 477 +479 3 21.57 -135.14 -42.03 0.435 478 +480 3 21.63 -135.7 -42.84 0.435 479 +481 3 21.68 -136.33 -43.06 0.435 480 +482 3 21.72 -136.69 -43.78 0.435 481 +483 3 21.13 -137.56 -44.03 0.435 482 +484 3 21.39 -138.2 -44.09 0.435 483 +485 3 21.48 -139.48 -44.22 0.435 484 +486 3 21.51 -139.89 -44.49 0.435 485 +487 3 21.55 -140.24 -45.27 0.435 486 +488 3 21.23 -141.71 -46.04 0.435 487 +489 3 20.47 -143.47 -46.24 0.435 488 +490 3 19.27 -145.04 -46.5 0.435 489 +491 3 18.52 -146.8 -46.78 0.435 490 +492 3 16.95 -149.26 -47.07 0.435 491 +493 3 16.61 -150.79 -47.24 0.435 492 +494 3 15.85 -152.55 -47.44 0.435 493 +495 3 15.49 -153.65 -47.56 0.435 494 +496 3 15.13 -154.97 -47.71 0.435 495 +497 3 15.21 -156.25 -47.84 0.435 496 +498 3 14.41 -157.16 -47.95 0.435 497 +499 3 13.66 -158.92 -48.15 0.435 498 +500 3 11.6 -160.56 -48.37 0.435 499 +501 3 9.96 -162.16 -48.57 0.435 500 +502 3 8.77 -163.96 -48.79 0.435 501 +503 3 8.22 -165.49 -48.96 0.435 502 +504 3 7.1 -168.37 -49.28 0.435 503 +505 3 5.65 -172.47 -50.49 0.435 504 +506 3 4.45 -173.98 -51.2 0.435 505 +507 3 2.96 -177.21 -52.48 0.435 506 +508 3 1.37 -179.44 -52.9 0.435 507 +509 3 0.17 -180.72 -53.96 0.435 508 +510 3 -1.46 -182.09 -54.29 0.435 509 +511 3 -2.47 -183.23 -54.43 0.435 510 +512 3 -3.95 -183.96 -54.55 0.435 511 +513 3 -5.18 -184.89 -54.75 0.435 512 +514 3 -6.45 -185.39 -54.83 0.435 513 +515 3 17.85 -69.54 -14.54 0.435 194 +516 3 18.1 -70.12 -15.04 0.435 515 +517 3 18.36 -70.75 -15.1 0.435 516 +518 3 17.99 -71.63 -15.28 0.435 517 +519 3 17.21 -72.96 -15.44 0.435 518 +520 3 17.26 -73.81 -15.52 0.435 519 +521 3 17.3 -74.46 -15.59 0.435 520 +522 3 17.75 -74.86 -15.62 0.435 521 +523 3 18.21 -75.06 -15.63 0.435 522 +524 3 18.65 -75.24 -15.64 0.435 523 +525 3 19.33 -75.63 -15.66 0.435 524 +526 3 19.83 -76.65 -15.98 0.435 525 +527 3 20.35 -77.91 -16.18 0.435 526 +528 3 20.86 -78.94 -16.34 0.435 527 +529 3 20.94 -80.22 -16.47 0.435 528 +530 3 21.02 -81.52 -16.6 0.435 529 +531 3 21.28 -82.15 -16.66 0.435 530 +532 3 21.59 -83.63 -16.81 0.435 531 +533 3 22.11 -84.89 -16.93 0.435 532 +534 3 23.54 -86.95 -17.11 0.435 533 +535 3 24.47 -87.97 -17.19 0.435 534 +536 3 25.18 -89.0 -17.28 0.435 535 +537 3 25.29 -90.5 -17.51 0.435 536 +538 3 25.4 -92.2 -17.69 0.435 537 +539 3 25.45 -93.07 -17.78 0.435 538 +540 3 25.79 -94.98 -17.97 0.435 539 +541 3 25.9 -96.69 -18.14 0.435 540 +542 3 26.39 -97.73 -18.24 0.435 541 +543 3 27.1 -97.72 -19.72 0.435 542 +544 3 27.98 -98.1 -19.73 0.435 543 +545 3 28.66 -98.48 -19.76 0.435 544 +546 3 29.13 -99.12 -19.66 0.435 545 +547 3 29.41 -99.95 -19.74 0.435 546 +548 3 29.9 -101.0 -19.84 0.435 547 +549 3 30.37 -101.4 -19.87 0.435 548 +550 3 30.64 -102.46 -19.97 0.435 549 +551 3 30.91 -103.07 -20.26 0.435 550 +552 3 31.41 -104.1 -20.51 0.435 551 +553 3 31.72 -105.34 -20.85 0.435 552 +554 3 32.0 -106.18 -21.08 0.435 553 +555 3 32.29 -107.2 -21.48 0.435 554 +556 3 32.31 -107.63 -21.52 0.435 555 +557 3 33.25 -108.64 -21.61 0.435 556 +558 3 33.71 -109.26 -21.66 0.435 557 +559 3 34.2 -109.59 -22.44 0.435 558 +560 3 35.38 -111.01 -22.64 0.435 559 +561 3 35.44 -112.09 -22.75 0.435 560 +562 3 35.47 -112.51 -22.86 0.435 561 +563 3 35.97 -113.55 -22.95 0.435 562 +564 3 36.06 -114.84 -23.09 0.435 563 +565 3 36.54 -115.67 -23.16 0.435 564 +566 3 37.22 -116.05 -23.18 0.435 565 +567 3 37.92 -116.67 -23.23 0.435 566 +568 3 39.1 -118.32 -23.37 0.435 567 +569 3 39.39 -119.36 -23.48 0.435 568 +570 3 39.91 -120.84 -23.62 0.435 569 +571 3 39.96 -121.48 -23.68 0.435 570 +572 3 40.69 -122.7 -24.02 0.435 571 +573 3 40.79 -124.2 -24.24 0.435 572 +574 3 41.3 -125.45 -24.44 0.435 573 +575 3 41.8 -126.29 -24.52 0.435 574 +576 3 42.09 -127.54 -24.79 0.435 575 +577 3 42.35 -128.17 -24.85 0.435 576 +578 3 42.42 -129.24 -25.03 0.435 577 +579 3 42.45 -129.66 -25.07 0.435 578 +580 3 43.15 -130.48 -25.14 0.435 579 +581 3 43.61 -130.88 -25.17 0.435 580 +582 3 43.87 -131.51 -25.23 0.435 581 +583 3 44.12 -131.92 -25.27 0.435 582 +584 3 44.85 -133.18 -25.38 0.435 583 +585 3 45.31 -133.78 -25.43 0.435 584 +586 3 45.82 -134.83 -25.53 0.435 585 +587 3 45.84 -135.26 -25.57 0.435 586 +588 3 46.1 -135.88 -25.63 0.435 587 +589 3 46.35 -136.3 -25.67 0.435 588 +590 3 46.64 -137.58 -25.79 0.435 589 +591 3 46.91 -138.42 -25.87 0.435 590 +592 3 47.02 -139.91 -26.1 0.435 591 +593 3 47.7 -140.51 -26.15 0.435 592 +594 3 48.42 -141.54 -26.24 0.435 593 +595 3 48.9 -142.37 -26.32 0.435 594 +596 3 49.19 -143.43 -26.42 0.435 595 +597 3 49.45 -144.07 -26.48 0.435 596 +598 3 49.71 -144.7 -26.54 0.435 597 +599 3 49.74 -145.33 -26.6 0.435 598 +600 3 50.02 -146.18 -26.68 0.435 599 +601 3 50.28 -146.81 -26.74 0.435 600 +602 3 50.55 -147.66 -26.82 0.435 601 +603 3 50.85 -148.93 -26.95 0.435 602 +604 3 50.89 -149.57 -27.01 0.435 603 +605 3 50.94 -150.43 -27.1 0.435 604 +606 3 51.22 -151.28 -27.18 0.435 605 +607 3 51.96 -152.73 -27.31 0.435 606 +608 3 52.44 -153.56 -27.39 0.435 607 +609 3 52.7 -154.19 -27.45 0.435 608 +610 3 52.96 -154.53 -28.3 0.435 609 +611 3 53.44 -155.08 -28.95 0.435 610 +612 3 53.93 -155.42 -29.58 0.435 611 +613 3 54.39 -155.8 -29.83 0.435 612 +614 3 54.64 -156.21 -29.86 0.435 613 +615 3 55.73 -156.35 -30.0 0.435 614 +616 3 56.48 -157.81 -30.14 0.435 615 +617 3 57.44 -159.26 -30.26 0.435 616 +618 3 57.91 -159.86 -30.31 0.435 617 +619 3 58.41 -160.6 -31.36 0.435 618 +620 3 59.36 -161.6 -31.67 0.435 619 +621 3 59.84 -162.17 -32.1 0.435 620 +622 3 60.09 -162.79 -32.23 0.435 621 +623 3 60.84 -163.75 -33.06 0.435 622 +624 3 61.29 -164.14 -33.17 0.435 623 +625 3 61.54 -164.55 -33.21 0.435 624 +626 3 61.77 -164.49 -33.72 0.435 625 +627 3 62.25 -165.08 -34.07 0.435 626 +628 3 62.49 -165.21 -34.76 0.435 627 +629 3 62.98 -165.78 -35.18 0.435 628 +630 3 63.0 -165.68 -36.15 0.435 629 +631 3 63.47 -166.04 -36.71 0.435 630 +632 3 64.15 -166.41 -36.88 0.435 631 +633 3 64.82 -166.8 -36.9 0.435 632 +634 3 65.28 -166.98 -36.98 0.435 633 +635 3 65.96 -167.37 -37.01 0.435 634 +636 3 66.39 -167.55 -37.01 0.435 635 +637 3 27.14 -99.2 -18.37 0.435 542 +638 3 27.21 -100.26 -18.55 0.435 637 +639 3 28.24 -101.99 -20.21 0.435 638 +640 3 27.9 -103.51 -20.38 0.435 639 +641 3 27.98 -104.79 -20.51 0.435 640 +642 3 28.07 -106.08 -20.71 0.435 641 +643 3 27.29 -107.42 -20.87 0.435 642 +644 3 26.91 -108.29 -20.97 0.435 643 +645 3 26.94 -108.73 -21.01 0.435 644 +646 3 27.19 -109.35 -21.07 0.435 645 +647 3 27.49 -110.36 -21.62 0.435 646 +648 3 27.75 -110.71 -22.25 0.435 647 +649 3 28.02 -111.56 -22.33 0.435 648 +650 3 28.3 -112.62 -22.52 0.435 649 +651 3 28.04 -115.2 -22.79 0.435 650 +652 3 28.11 -116.0 -23.55 0.435 651 +653 3 28.21 -117.48 -23.78 0.435 652 +654 3 28.51 -118.98 -23.92 0.435 653 +655 3 28.81 -120.25 -24.05 0.435 654 +656 3 28.91 -121.69 -24.27 0.435 655 +657 3 28.98 -122.77 -24.38 0.435 656 +658 3 29.26 -123.57 -24.75 0.435 657 +659 3 29.33 -124.38 -25.37 0.435 658 +660 3 28.99 -125.9 -25.68 0.435 659 +661 3 29.28 -126.92 -26.16 0.435 660 +662 3 28.94 -127.97 -26.65 0.435 661 +663 3 28.56 -129.07 -26.78 0.435 662 +664 3 27.79 -130.41 -26.93 0.435 663 +665 3 27.44 -131.93 -27.17 0.435 664 +666 3 27.53 -133.2 -27.38 0.435 665 +667 3 27.18 -134.51 -27.52 0.435 666 +668 3 27.25 -135.59 -27.63 0.435 667 +669 3 27.01 -138.39 -27.93 0.435 668 +670 3 27.07 -139.45 -28.19 0.435 669 +671 3 27.18 -140.92 -28.71 0.435 670 +672 3 27.26 -142.21 -28.84 0.435 671 +673 3 26.88 -143.08 -28.94 0.435 672 +674 3 26.51 -144.17 -29.13 0.435 673 +675 3 26.59 -145.25 -29.24 0.435 674 +676 3 26.21 -146.13 -29.34 0.435 675 +677 3 26.47 -146.72 -29.78 0.435 676 +678 3 26.72 -147.12 -29.97 0.435 677 +679 3 26.98 -147.75 -30.03 0.435 678 +680 3 27.23 -148.38 -30.08 0.435 679 +681 3 27.73 -149.21 -30.23 0.435 680 +682 3 28.21 -150.04 -30.3 0.435 681 +683 3 28.51 -151.08 -30.55 0.435 682 +684 3 28.14 -152.15 -30.91 0.435 683 +685 3 28.21 -152.93 -31.66 0.435 684 +686 3 28.97 -154.57 -32.19 0.435 685 +687 3 29.28 -155.61 -32.59 0.435 686 +688 3 29.34 -156.41 -33.13 0.435 687 +689 3 29.42 -157.69 -33.33 0.435 688 +690 3 29.71 -158.74 -33.51 0.435 689 +691 3 29.77 -159.3 -34.32 0.435 690 +692 3 29.84 -160.11 -34.93 0.435 691 +693 3 29.45 -160.72 -35.53 0.435 692 +694 3 29.52 -161.79 -35.71 0.435 693 +695 3 29.58 -162.64 -35.88 0.435 694 +696 3 29.84 -163.27 -35.94 0.435 695 +697 3 29.49 -164.57 -36.15 0.435 696 +698 3 29.52 -165.0 -36.19 0.435 697 +699 3 29.19 -166.49 -36.74 0.435 698 +700 3 29.29 -167.98 -36.96 0.435 699 +701 3 29.34 -168.57 -37.54 0.435 700 +702 3 29.39 -169.41 -37.71 0.435 701 +703 3 29.47 -170.49 -37.82 0.435 702 +704 3 29.13 -171.75 -38.41 0.435 703 +705 3 29.2 -172.79 -38.74 0.435 704 +706 3 29.93 -174.05 -38.85 0.435 705 +707 3 30.43 -174.58 -39.73 0.435 706 +708 3 30.94 -175.59 -40.12 0.435 707 +709 3 31.18 -176.0 -40.23 0.435 708 +710 3 31.7 -176.7 -41.58 0.435 709 +711 3 31.75 -177.3 -42.09 0.435 710 +712 3 31.99 -177.7 -42.2 0.435 711 +713 3 32.23 -178.12 -42.23 0.435 712 +714 3 32.71 -178.72 -42.52 0.435 713 +715 3 32.76 -179.33 -42.8 0.435 714 +716 3 33.22 -179.51 -42.89 0.435 715 +717 3 33.52 -180.76 -43.31 0.435 716 +718 3 33.99 -181.08 -44.01 0.435 717 +719 3 34.43 -180.99 -44.66 0.435 718 +720 3 35.13 -181.58 -44.86 0.435 719 +721 3 35.6 -181.97 -45.04 0.435 720 +722 3 36.07 -182.57 -45.09 0.435 721 +723 3 37.41 -183.12 -45.34 0.435 722 +724 3 38.31 -183.22 -45.94 0.435 723 +725 3 40.08 -183.75 -46.02 0.435 724 +726 3 41.89 -184.9 -46.48 0.435 725 +727 3 42.37 -185.21 -47.25 0.435 726 +728 3 42.86 -185.8 -47.61 0.435 727 +729 3 43.1 -186.2 -47.86 0.435 728 +730 3 43.58 -186.81 -47.91 0.435 729 +731 3 43.85 -187.35 -48.87 0.435 730 +732 3 44.12 -187.97 -49.01 0.435 731 +733 3 1.19 -26.21 -10.83 0.435 163 +734 3 1.24 -27.08 -10.84 0.435 733 +735 3 1.32 -28.35 -10.97 0.435 734 +736 3 1.4 -29.65 -11.1 0.435 735 +737 3 1.71 -30.91 -11.22 0.435 736 +738 3 1.81 -32.63 -11.4 0.435 737 +739 3 1.92 -34.13 -11.55 0.435 738 +740 3 2.02 -35.84 -11.72 0.435 739 +741 3 2.14 -37.77 -11.92 0.435 740 +742 3 2.24 -39.27 -12.07 0.435 741 +743 3 2.76 -40.53 -12.19 0.435 742 +744 3 3.28 -41.79 -12.31 0.435 743 +745 3 3.62 -43.91 -12.52 0.435 744 +746 3 3.88 -44.56 -12.51 0.435 745 +747 3 4.35 -45.15 -12.78 0.435 746 +748 3 4.64 -45.7 -13.67 0.435 747 +749 3 4.9 -46.25 -14.39 0.435 748 +750 3 5.19 -47.3 -14.56 0.435 749 +751 3 5.25 -48.16 -14.65 0.435 750 +752 3 5.3 -49.01 -14.82 0.435 751 +753 3 4.96 -50.32 -14.96 0.435 752 +754 3 5.0 -50.96 -15.1 0.435 753 +755 3 5.51 -51.96 -15.57 0.435 754 +756 3 5.76 -52.6 -15.63 0.435 755 +757 3 6.23 -52.94 -16.18 0.435 756 +758 3 6.77 -54.62 -16.42 0.435 757 +759 3 7.04 -55.24 -16.55 0.435 758 +760 3 7.32 -56.09 -16.71 0.435 759 +761 3 7.56 -56.47 -16.97 0.435 760 +762 3 8.09 -57.95 -17.11 0.435 761 +763 3 8.14 -58.59 -17.17 0.435 762 +764 3 8.17 -59.22 -17.32 0.435 763 +765 3 7.79 -60.11 -17.42 0.435 764 +766 3 7.82 -60.54 -17.46 0.435 765 +767 3 8.1 -61.34 -17.84 0.435 766 +768 3 8.67 -63.46 -18.12 0.435 767 +769 3 9.0 -65.16 -18.28 0.435 768 +770 3 8.68 -66.89 -18.47 0.435 769 +771 3 8.71 -67.3 -18.74 0.435 770 +772 3 9.19 -67.89 -19.09 0.435 771 +773 3 9.45 -68.23 -19.73 0.435 772 +774 3 9.7 -68.85 -20.01 0.435 773 +775 3 9.97 -69.47 -20.14 0.435 774 +776 3 10.21 -69.89 -20.18 0.435 775 +777 3 10.47 -70.5 -20.39 0.435 776 +778 3 10.77 -71.48 -21.24 0.435 777 +779 3 11.56 -73.57 -21.51 0.435 778 +780 3 11.39 -74.44 -21.68 0.435 779 +781 3 11.94 -76.12 -21.84 0.435 780 +782 3 12.29 -78.01 -22.33 0.435 781 +783 3 12.38 -79.26 -22.83 0.435 782 +784 3 12.45 -80.29 -23.24 0.435 783 +785 3 13.21 -81.96 -23.54 0.435 784 +786 3 13.51 -83.01 -23.64 0.435 785 +787 3 13.78 -83.85 -23.8 0.435 786 +788 3 13.81 -84.28 -23.84 0.435 787 +789 3 14.08 -85.11 -24.0 0.435 788 +790 3 14.35 -85.95 -24.15 0.435 789 +791 3 14.39 -86.34 -24.57 0.435 790 +792 3 14.47 -87.1 -25.55 0.435 791 +793 3 14.49 -87.27 -26.09 0.435 792 +794 3 14.53 -87.91 -26.16 0.435 793 +795 3 14.78 -88.01 -27.15 0.435 794 +796 3 15.04 -88.65 -27.21 0.435 795 +797 3 15.54 -89.68 -27.3 0.435 796 +798 3 16.0 -90.09 -27.26 0.435 797 +799 3 17.33 -90.44 -27.26 0.435 798 +800 3 18.92 -91.08 -28.49 0.435 799 +801 3 19.13 -91.08 -28.42 0.435 800 +802 3 19.37 -91.28 -28.43 0.435 801 +803 3 19.81 -91.46 -28.51 0.435 802 +804 3 20.65 -90.97 -28.52 0.435 803 +805 3 21.09 -90.89 -29.03 0.435 804 +806 3 22.36 -90.13 -29.22 0.435 805 +807 3 23.24 -90.25 -29.66 0.435 806 +808 3 23.94 -90.56 -30.5 0.435 807 +809 3 24.38 -90.74 -30.59 0.435 808 +810 3 24.87 -91.04 -31.52 0.435 809 +811 3 25.55 -91.42 -31.76 0.435 810 +812 3 26.45 -92.0 -31.88 0.435 811 +813 3 26.7 -92.14 -32.41 0.435 812 +814 3 28.04 -92.71 -32.44 0.435 813 +815 3 28.72 -93.09 -32.46 0.435 814 +816 3 29.85 -93.61 -33.09 0.435 815 +817 3 30.55 -94.19 -33.44 0.435 816 +818 3 31.43 -94.34 -33.51 0.435 817 +819 3 31.89 -94.7 -33.84 0.435 818 +820 3 32.12 -94.9 -33.93 0.435 819 +821 3 32.36 -94.84 -34.37 0.435 820 +822 3 32.6 -94.99 -34.98 0.435 821 +823 3 33.06 -95.11 -35.59 0.435 822 +824 3 33.53 -95.45 -36.21 0.435 823 +825 3 34.25 -95.93 -37.45 0.435 824 +826 3 35.62 -96.88 -37.97 0.435 825 +827 3 36.73 -97.22 -38.13 0.435 826 +828 3 37.66 -97.74 -38.92 0.435 827 +829 3 38.37 -98.27 -39.63 0.435 828 +830 3 39.27 -98.33 -40.59 0.435 829 +831 3 39.95 -98.72 -40.54 0.435 830 +832 3 40.17 -98.66 -41.05 0.435 831 +833 3 40.19 -98.55 -42.1 0.435 832 +834 3 40.89 -98.84 -43.1 0.435 833 +835 3 41.56 -98.99 -43.4 0.435 834 +836 3 42.03 -99.13 -43.86 0.435 835 +837 3 42.48 -99.52 -43.95 0.435 836 +838 3 43.15 -99.69 -43.96 0.435 837 +839 3 43.58 -99.88 -43.97 0.435 838 +840 3 44.52 -100.65 -44.41 0.435 839 +841 3 45.17 -100.6 -44.39 0.435 840 +842 3 45.64 -101.22 -44.51 0.435 841 +843 3 46.34 -102.03 -44.58 0.435 842 +844 3 46.82 -102.4 -44.99 0.435 843 +845 3 47.94 -102.94 -45.32 0.435 844 +846 3 48.39 -103.12 -45.4 0.435 845 +847 3 49.28 -103.5 -45.41 0.435 846 +848 3 49.71 -103.47 -45.4 0.435 847 +849 3 50.37 -103.37 -45.91 0.435 848 +850 3 50.8 -103.35 -45.89 0.435 849 +851 3 51.26 -103.25 -46.55 0.435 850 +852 3 51.96 -103.25 -48.34 0.435 851 +853 3 52.4 -103.19 -48.7 0.435 852 +854 3 52.84 -103.11 -49.21 0.435 853 +855 3 53.5 -103.03 -49.49 0.435 854 +856 3 53.96 -102.91 -50.37 0.435 855 +857 3 54.84 -103.02 -50.88 0.435 856 +858 3 55.29 -102.93 -51.47 0.435 857 +859 3 55.96 -102.83 -52.11 0.435 858 +860 3 56.41 -102.96 -52.65 0.435 859 +861 3 57.08 -103.12 -52.72 0.435 860 +862 3 57.3 -103.1 -52.79 0.435 861 +863 3 58.16 -103.01 -53.14 0.435 862 +864 3 59.06 -103.11 -53.73 0.435 863 +865 3 59.5 -103.04 -54.16 0.435 864 +866 3 60.15 -103.0 -54.22 0.435 865 +867 3 60.8 -102.94 -54.35 0.435 866 +868 3 60.83 -102.78 -55.85 0.435 867 +869 3 61.08 -102.65 -57.03 0.435 868 +870 3 61.53 -102.56 -57.61 0.435 869 +871 3 62.21 -102.94 -57.71 0.435 870 +872 3 63.12 -103.5 -58.12 0.435 871 +873 3 64.02 -103.55 -59.09 0.435 872 +874 3 64.91 -103.7 -59.23 0.435 873 +875 3 65.36 -103.87 -59.46 0.435 874 +876 3 66.04 -104.26 -59.49 0.435 875 +877 3 66.71 -104.37 -60.01 0.435 876 +878 3 67.4 -104.7 -60.64 0.435 877 +879 3 68.3 -105.05 -61.02 0.435 878 +880 3 68.53 -105.23 -61.12 0.435 879 +881 3 68.77 -105.43 -61.13 0.435 880 +882 3 0.29 -26.4 -9.51 0.435 162 +883 3 -0.93 -27.34 -9.64 0.435 882 +884 3 -1.38 -27.94 -8.27 0.435 883 +885 3 -1.79 -28.43 -7.88 0.435 884 +886 3 -2.19 -28.86 -8.17 0.435 885 +887 3 -2.59 -29.26 -8.82 0.435 886 +888 3 -2.53 -29.84 -9.48 0.435 887 +889 3 -2.92 -30.23 -10.13 0.435 888 +890 3 -3.32 -30.68 -10.26 0.435 889 +891 3 -3.67 -31.43 -11.7 0.435 890 +892 3 -3.13 -32.61 -12.5 0.435 891 +893 3 -3.1 -33.26 -12.56 0.435 892 +894 3 -3.04 -34.11 -12.72 0.435 893 +895 3 -3.41 -35.0 -12.82 0.435 894 +896 3 -4.65 -36.14 -12.97 0.435 895 +897 3 -5.8 -38.58 -13.25 0.435 896 +898 3 -6.98 -40.36 -13.53 0.435 897 +899 3 -8.19 -41.44 -14.43 0.435 898 +900 3 -9.82 -43.0 -15.01 0.435 899 +901 3 -12.12 -44.19 -15.49 0.435 900 +902 3 -13.3 -45.69 -16.34 0.435 901 +903 3 -14.53 -46.62 -16.62 0.435 902 +904 3 -15.3 -47.89 -17.45 0.435 903 +905 3 -16.54 -48.53 -18.37 0.435 904 +906 3 -18.31 -51.16 -19.29 0.435 905 +907 3 -19.43 -53.77 -19.89 0.435 906 +908 3 -20.98 -56.14 -21.08 0.435 907 +909 3 -22.19 -57.71 -21.34 0.435 908 +910 3 -23.77 -59.88 -22.35 0.435 909 +911 3 -25.82 -61.73 -22.67 0.435 910 +912 3 -27.89 -63.13 -22.87 0.435 911 +913 3 -28.48 -63.75 -23.7 0.435 912 +914 3 -29.05 -65.07 -23.77 0.435 913 +915 3 -29.42 -66.17 -23.89 0.435 914 +916 3 -30.22 -67.06 -24.31 0.435 915 +917 3 -30.58 -67.91 -24.63 0.435 916 +918 3 -31.39 -68.78 -25.11 0.435 917 +919 3 -31.81 -68.74 -25.8 0.435 918 +920 3 -32.15 -69.73 -26.97 0.435 919 +921 3 -33.77 -71.56 -27.2 0.435 920 +922 3 -34.1 -72.55 -28.21 0.435 921 +923 3 -35.7 -74.58 -28.53 0.435 922 +924 3 -36.05 -75.31 -30.12 0.435 923 +925 3 -37.0 -77.52 -30.38 0.435 924 +926 3 -38.2 -79.1 -30.57 0.435 925 +927 3 -40.22 -81.37 -30.85 0.435 926 +928 3 -41.35 -83.44 -32.67 0.435 927 +929 3 -42.99 -84.82 -32.93 0.435 928 +930 3 -42.66 -85.7 -34.74 0.435 929 +931 3 -43.7 -86.41 -34.84 0.435 930 +932 3 -44.9 -87.99 -35.03 0.435 931 +933 3 -45.93 -88.91 -35.08 0.435 932 +934 3 -45.88 -89.77 -35.17 0.435 933 +935 3 -47.05 -91.47 -36.28 0.435 934 +936 3 -48.65 -93.25 -36.87 0.435 935 +937 3 -49.03 -93.83 -37.77 0.435 936 +938 3 -49.36 -95.35 -38.01 0.435 937 +939 3 -50.16 -96.19 -38.87 0.435 938 +940 3 -50.49 -97.43 -39.61 0.435 939 +941 3 -50.44 -97.76 -40.62 0.435 940 +942 3 -50.82 -98.39 -41.08 0.435 941 +943 3 -50.75 -98.91 -42.41 0.435 942 +944 3 -51.12 -99.7 -43.4 0.435 943 +945 3 -51.46 -100.75 -43.89 0.435 944 +946 3 -51.15 -101.45 -45.4 0.435 945 +947 3 1.92 -21.67 -8.0 0.54 156 +948 3 1.3 -21.83 -8.86 0.54 947 +949 3 0.89 -21.74 -10.07 0.54 948 +950 3 -0.54 -22.67 -10.35 0.54 949 +951 3 -1.97 -24.01 -10.9 0.435 950 +952 3 -3.24 -24.51 -11.06 0.435 951 +953 3 -4.44 -25.28 -12.75 0.435 952 +954 3 -6.7 -27.13 -13.06 0.435 953 +955 3 -7.53 -27.79 -13.53 0.435 954 +956 3 -8.55 -28.47 -14.0 0.435 955 +957 3 -9.18 -28.93 -14.06 0.435 956 +958 3 -9.63 -28.48 -14.48 0.435 957 +959 3 -10.24 -28.65 -15.41 0.435 958 +960 3 -10.2 -28.69 -17.08 0.435 959 +961 3 -10.58 -29.36 -17.08 0.435 960 +962 3 -11.2 -29.81 -17.45 0.435 961 +963 3 -12.0 -30.67 -18.01 0.435 962 +964 3 -12.74 -32.12 -19.07 0.435 963 +965 3 -13.54 -32.94 -20.01 0.435 964 +966 3 -13.65 -34.57 -20.18 0.435 965 +967 3 -13.84 -35.31 -19.58 0.325 966 +968 3 -13.6 -35.72 -19.61 0.325 967 +969 3 -13.35 -35.6 -20.73 0.435 968 +970 3 -13.31 -36.24 -20.8 0.435 969 +971 3 -13.28 -36.66 -20.84 0.435 970 +972 3 -13.22 -37.74 -20.95 0.435 971 +973 3 -13.19 -38.15 -21.14 0.435 972 +974 3 -13.16 -38.31 -21.61 0.435 973 +975 3 -13.07 -39.6 -21.74 0.435 974 +976 3 -13.42 -40.89 -22.04 0.435 975 +977 3 -13.34 -41.96 -22.21 0.435 976 +978 3 -13.29 -42.81 -22.38 0.435 977 +979 3 -13.67 -43.69 -22.55 0.435 978 +980 3 -13.6 -44.75 -22.81 0.435 979 +981 3 -13.51 -45.73 -23.74 0.435 980 +982 3 -13.44 -46.79 -24.0 0.435 981 +983 3 -13.38 -47.36 -24.67 0.435 982 +984 3 -13.35 -47.76 -25.01 0.435 983 +985 3 -13.3 -48.35 -25.66 0.435 984 +986 3 -13.03 -48.96 -25.87 0.435 985 +987 3 -12.95 -50.24 -26.0 0.435 986 +988 3 -12.88 -51.04 -26.61 0.435 987 +989 3 -12.82 -52.11 -26.79 0.435 988 +990 3 -12.77 -52.45 -27.66 0.435 989 +991 3 -12.72 -53.09 -27.8 0.435 990 +992 3 -12.64 -53.85 -28.86 0.435 991 +993 3 -12.61 -54.26 -28.97 0.435 992 +994 3 -12.55 -55.09 -29.36 0.435 993 +995 3 -12.3 -55.51 -29.47 0.435 994 +996 3 -12.27 -56.13 -29.61 0.435 995 +997 3 -12.16 -57.63 -29.76 0.435 996 +998 3 -12.51 -58.89 -30.5 0.435 997 +999 3 -12.45 -59.46 -31.25 0.435 998 +1000 3 -12.37 -60.47 -31.87 0.435 999 +1001 3 -12.31 -61.32 -32.04 0.435 1000 +1002 3 -11.96 -62.93 -33.09 0.435 1001 +1003 3 -12.28 -64.64 -33.58 0.435 1002 +1004 3 -12.19 -65.64 -34.43 0.435 1003 +1005 3 -11.93 -65.98 -35.15 0.435 1004 +1006 3 -11.88 -66.83 -35.3 0.435 1005 +1007 3 -11.6 -67.65 -35.68 0.435 1006 +1008 3 -11.56 -68.06 -35.87 0.435 1007 +1009 3 -11.03 -69.24 -36.74 0.435 1008 +1010 3 -11.0 -69.89 -36.8 0.435 1009 +1011 3 -10.93 -70.42 -37.91 0.435 1010 +1012 3 -10.87 -71.27 -38.0 0.435 1011 +1013 3 -11.22 -72.58 -38.23 0.435 1012 +1014 3 -11.59 -73.13 -39.42 0.435 1013 +1015 3 -11.54 -73.78 -39.48 0.435 1014 +1016 3 -11.48 -74.32 -40.44 0.435 1015 +1017 3 -11.43 -74.95 -40.66 0.435 1016 +1018 3 -11.41 -75.38 -40.7 0.435 1017 +1019 3 -11.78 -76.22 -41.25 0.435 1018 +1020 3 -11.5 -77.27 -41.42 0.435 1019 +1021 3 -11.44 -78.09 -41.81 0.435 1020 +1022 3 -11.4 -78.47 -42.38 0.435 1021 +1023 3 -11.34 -78.82 -43.24 0.435 1022 +1024 3 -11.29 -79.42 -43.68 0.435 1023 +1025 3 -11.25 -79.74 -44.62 0.435 1024 +1026 3 -11.21 -80.16 -44.81 0.435 1025 +1027 3 -11.18 -80.55 -45.3 0.435 1026 +1028 3 -11.1 -81.07 -46.55 0.435 1027 +1029 3 -10.85 -81.69 -46.61 0.435 1028 +1030 3 -10.58 -82.24 -47.57 0.435 1029 +1031 3 -10.33 -82.63 -47.75 0.435 1030 +1032 3 -10.06 -82.96 -48.61 0.435 1031 +1033 3 -10.02 -83.33 -49.17 0.435 1032 +1034 3 -9.54 -83.94 -49.31 0.435 1033 +1035 3 -9.26 -84.22 -50.69 0.435 1034 +1036 3 -9.02 -84.63 -50.87 0.435 1035 +1037 3 -7.86 -85.83 -51.12 0.435 1036 +1038 3 -6.91 -86.76 -52.02 0.435 1037 +1039 3 -6.65 -87.16 -52.21 0.435 1038 +1040 3 -5.51 -87.86 -53.16 0.435 1039 +1041 3 -5.04 -88.02 -53.38 0.435 1040 +1042 3 -4.78 -88.32 -54.54 0.435 1041 +1043 3 -3.87 -88.91 -54.65 0.435 1042 +1044 3 -2.92 -89.61 -55.69 0.435 1043 +1045 3 -1.81 -90.18 -55.87 0.435 1044 +1046 3 -1.36 -90.36 -55.88 0.435 1045 +1047 3 -0.47 -90.73 -55.97 0.435 1046 +1048 3 -0.04 -90.7 -55.96 0.435 1047 +1049 3 -14.34 -33.86 -20.12 0.435 966 +1050 3 -15.59 -34.79 -20.32 0.435 1049 +1051 3 -17.03 -35.45 -21.18 0.435 1050 +1052 3 -17.43 -36.09 -21.4 0.435 1051 +1053 3 -19.06 -37.71 -21.61 0.435 1052 +1054 3 -19.44 -38.37 -21.77 0.435 1053 +1055 3 -18.95 -39.16 -22.29 0.435 1054 +1056 3 -18.89 -39.68 -23.47 0.435 1055 +1057 3 -19.69 -40.57 -23.73 0.435 1056 +1058 3 -20.74 -41.07 -23.81 0.435 1057 +1059 3 -22.16 -42.12 -25.08 0.435 1058 +1060 3 -23.17 -42.97 -25.79 0.435 1059 +1061 3 -23.96 -43.76 -27.03 0.435 1060 +1062 3 -24.35 -44.14 -27.83 0.435 1061 +1063 3 -25.12 -44.94 -29.14 0.435 1062 +1064 3 -25.92 -45.78 -29.85 0.435 1063 +1065 3 -26.67 -47.29 -30.47 0.435 1064 +1066 3 -27.48 -47.59 -32.17 0.435 1065 +1067 3 -28.26 -48.4 -33.33 0.435 1066 +1068 3 -30.44 -50.98 -35.01 0.435 1067 +1069 3 -31.67 -51.85 -35.81 0.435 1068 +1070 3 -33.3 -53.45 -36.08 0.435 1069 +1071 3 -34.3 -54.0 -37.67 0.435 1070 +1072 3 -35.92 -55.57 -38.25 0.435 1071 +1073 3 -36.72 -56.69 -38.46 0.435 1072 +1074 3 -37.27 -57.67 -39.85 0.435 1073 +1075 3 -38.9 -59.01 -40.48 0.435 1074 +1076 3 -39.67 -60.25 -41.53 0.435 1075 +1077 3 -40.46 -61.34 -41.97 0.435 1076 +1078 3 -41.65 -62.59 -43.26 0.435 1077 +1079 3 -41.78 -63.34 -44.54 0.435 1078 +1080 3 -42.79 -64.47 -44.76 0.435 1079 +1081 3 -43.48 -66.53 -46.35 0.435 1080 +1082 3 -44.25 -68.08 -46.53 0.435 1081 +1083 3 -45.19 -69.45 -46.69 0.435 1082 +1084 3 -46.21 -69.76 -48.41 0.11 1083 +1085 3 -46.16 -70.05 -49.79 0.435 1084 +1086 3 -46.52 -70.41 -50.81 0.435 1085 +1087 3 -47.32 -71.5 -51.32 0.435 1086 +1088 3 -48.1 -72.31 -52.32 0.435 1087 +1089 3 -48.87 -73.56 -53.31 0.435 1088 +1090 3 -49.65 -74.65 -53.81 0.435 1089 +1091 3 -50.69 -75.31 -54.35 0.435 1090 +1092 3 -51.51 -75.99 -54.68 0.435 1091 +1093 3 -53.16 -76.87 -55.56 0.435 1092 +1094 3 -54.83 -77.55 -56.34 0.435 1093 +1095 3 -56.47 -78.89 -57.05 0.435 1094 +1096 3 -56.41 -79.43 -58.15 0.435 1095 +1097 3 -57.64 -80.35 -58.36 0.435 1096 +1098 3 -58.43 -81.42 -59.01 0.435 1097 +1099 3 -58.77 -82.73 -59.24 0.435 1098 +1100 3 -59.17 -83.39 -59.31 0.435 1099 +1101 3 -59.11 -84.02 -59.6 0.435 1100 +1102 3 -59.49 -84.35 -60.78 0.435 1101 +1103 3 -59.87 -85.44 -60.97 0.435 1102 +1104 3 -59.79 -85.95 -62.31 0.435 1103 +1105 3 -45.01 -69.81 -47.02 0.435 1083 +1106 3 -45.76 -71.04 -48.22 0.435 1105 +1107 3 -46.57 -71.93 -48.56 0.435 1106 +1108 3 -46.9 -73.45 -48.8 0.435 1107 +1109 3 -46.61 -73.94 -50.2 0.435 1108 +1110 3 -47.8 -75.72 -50.57 0.435 1109 +1111 3 -48.97 -77.73 -50.72 0.435 1110 +1112 3 -49.89 -80.15 -50.99 0.435 1111 +1113 3 -51.1 -81.45 -51.84 0.435 1112 +1114 3 -51.44 -82.51 -52.4 0.435 1113 +1115 3 -52.65 -84.08 -52.59 0.435 1114 +1116 3 -52.6 -84.93 -52.76 0.435 1115 +1117 3 -53.8 -86.26 -53.3 0.435 1116 +1118 3 -54.76 -87.72 -54.46 0.435 1117 +1119 3 -55.72 -89.71 -54.69 0.435 1118 +1120 3 -56.13 -89.89 -54.87 0.435 1119 +1121 3 -56.75 -90.58 -54.95 0.435 1120 +1122 3 -56.64 -91.74 -56.2 0.435 1121 +1123 3 -57.01 -92.61 -56.53 0.435 1122 +1124 3 -56.95 -93.45 -56.76 0.435 1123 +1125 3 -56.89 -94.29 -57.07 0.435 1124 +1126 3 -56.82 -95.07 -57.83 0.435 1125 +1127 3 -57.44 -95.54 -57.96 0.435 1126 +1128 3 -58.24 -96.66 -58.1 0.435 1127 +1129 3 -59.06 -97.34 -58.27 0.435 1128 +1130 3 -60.27 -98.7 -58.51 0.435 1129 +1131 3 -60.64 -99.57 -58.69 0.435 1130 +1132 3 -61.42 -100.9 -59.07 0.435 1131 +1133 3 -61.78 -101.7 -59.91 0.435 1132 +1134 3 -62.57 -102.81 -60.12 0.435 1133 +1135 3 -63.38 -103.94 -60.25 0.435 1134 +1136 3 -63.29 -105.17 -60.91 0.435 1135 +1137 3 -63.2 -106.17 -61.69 0.435 1136 +1138 3 -63.16 -106.55 -62.18 0.435 1137 +1139 3 -63.11 -107.19 -62.32 0.435 1138 +1140 3 -62.85 -107.82 -62.45 0.435 1139 +1141 3 -63.59 -109.78 -62.75 0.435 1140 +1142 3 -63.96 -110.63 -63.15 0.435 1141 +1143 3 -63.9 -111.46 -63.61 0.435 1142 +1144 3 -63.85 -112.04 -64.27 0.435 1143 +1145 3 -63.82 -112.46 -64.31 0.435 1144 +1146 3 -63.79 -112.88 -64.44 0.435 1145 +1147 3 -63.51 -113.44 -65.16 0.435 1146 +1148 3 -63.43 -114.71 -65.44 0.435 1147 +1149 3 -64.59 -116.93 -65.78 0.435 1148 +1150 3 -64.94 -118.24 -65.92 0.435 1149 +1151 3 -64.89 -119.09 -66.08 0.435 1150 +1152 3 -64.81 -120.12 -66.57 0.435 1151 +1153 3 -64.75 -120.98 -66.65 0.435 1152 +1154 3 -64.7 -121.56 -67.32 0.435 1153 +1155 3 -64.4 -122.83 -67.51 0.435 1154 +1156 3 -64.37 -123.23 -67.77 0.435 1155 +1157 3 -64.09 -124.05 -68.0 0.435 1156 +1158 3 -63.83 -124.69 -68.06 0.435 1157 +1159 3 -63.54 -125.73 -68.31 0.435 1158 +1160 3 -62.83 -126.51 -68.76 0.435 1159 +1161 3 -62.31 -127.49 -69.52 0.435 1160 +1162 3 -62.06 -127.88 -69.71 0.435 1161 +1163 3 -61.59 -128.49 -69.91 0.435 1162 +1164 3 -61.56 -128.88 -70.25 0.435 1163 +1165 3 -61.53 -129.3 -70.37 0.435 1164 +1166 3 -61.26 -129.65 -71.08 0.435 1165 +1167 3 -60.79 -129.98 -71.85 0.435 1166 +1168 3 -60.97 -130.41 -71.9 0.435 1167 +1169 3 -60.92 -130.76 -72.77 0.435 1168 +1170 3 -61.77 -131.24 -72.84 0.435 1169 +1171 3 -61.75 -131.45 -72.93 0.435 1170 +1172 3 -62.09 -131.96 -73.08 0.435 1171 +1173 3 -61.83 -132.58 -73.2 0.435 1172 +1174 3 -61.78 -132.89 -74.36 0.435 1173 +1175 3 -61.51 -133.23 -75.07 0.435 1174 +1176 3 -61.46 -133.78 -76.04 0.435 1175 +1177 3 -61.38 -134.56 -76.87 0.435 1176 +1178 3 -61.11 -134.86 -77.95 0.435 1177 +1179 3 -60.64 -135.46 -78.22 0.435 1178 +1180 3 -60.37 -136.08 -78.36 0.435 1179 +1181 3 -60.14 -136.5 -78.4 0.435 1180 +1182 3 -60.1 -136.91 -78.66 0.435 1181 +1183 3 -59.84 -137.53 -78.8 0.435 1182 +1184 3 8.32 -12.11 -2.64 1.085 8 +1185 3 8.51 -12.22 -1.51 1.085 1184 +1186 3 9.85 -13.04 -1.04 0.65 1185 +1187 3 10.53 -13.65 -1.09 0.65 1186 +1188 3 11.44 -14.25 -0.98 0.65 1187 +1189 3 11.86 -14.57 0.27 0.65 1188 +1190 3 12.51 -14.78 0.57 0.65 1189 +1191 3 12.93 -15.07 1.52 0.65 1190 +1192 3 13.59 -15.27 1.89 0.65 1191 +1193 3 14.04 -15.97 2.58 0.65 1192 +1194 3 14.75 -16.78 2.52 0.65 1193 +1195 3 14.77 -17.22 2.55 0.65 1194 +1196 3 14.87 -17.58 2.52 0.65 1195 +1197 3 14.42 -16.6 1.17 0.65 1196 +1198 3 13.99 -16.86 1.28 0.65 1197 +1199 3 14.06 -17.12 -0.31 0.65 1198 +1200 3 14.3 -17.32 -0.4 0.54 1199 +1201 3 14.16 -18.62 -0.53 0.54 1200 +1202 3 14.22 -19.47 -0.62 0.54 1201 +1203 3 14.25 -20.12 -0.69 0.54 1202 +1204 3 13.88 -21.0 -0.79 0.54 1203 +1205 3 13.07 -21.92 -0.83 0.54 1204 +1206 3 12.23 -22.61 -0.92 0.54 1205 +1207 3 11.87 -23.19 -1.9 0.54 1206 +1208 3 11.94 -23.7 -3.22 0.54 1207 +1209 3 11.56 -24.09 -3.96 0.54 1208 +1210 3 11.64 -24.84 -5.01 0.54 1209 +1211 3 11.7 -25.65 -5.54 0.54 1210 +1212 3 11.34 -26.71 -6.11 0.54 1211 +1213 3 10.13 -28.06 -6.35 0.54 1212 +1214 3 10.21 -29.06 -7.21 0.54 1213 +1215 3 9.41 -29.7 -7.83 0.54 1214 +1216 3 9.03 -30.28 -8.72 0.54 1215 +1217 3 9.07 -30.62 -9.59 0.54 1216 +1218 3 9.11 -31.01 -10.08 0.54 1217 +1219 3 7.78 -33.11 -11.61 0.54 1218 +1220 3 7.79 -33.32 -11.63 0.54 1219 +1221 3 7.81 -34.05 -10.88 0.54 1220 +1222 3 7.39 -34.0 -11.64 0.54 1221 +1223 3 6.59 -34.35 -12.97 0.54 1222 +1224 3 6.2 -34.68 -14.22 0.54 1223 +1225 3 6.28 -35.45 -15.2 0.54 1224 +1226 3 6.78 -35.32 -24.67 0.54 1225 +1227 3 7.25 -35.94 -24.72 0.54 1226 +1228 3 7.55 -37.21 -24.85 0.54 1227 +1229 3 7.16 -37.88 -24.93 0.54 1228 +1230 3 7.22 -37.9 -26.74 0.54 1229 +1231 3 7.25 -38.03 -27.66 0.54 1230 +1232 3 7.08 -38.69 -27.73 0.54 1231 +1233 3 6.89 -39.1 -28.08 0.435 1232 +1234 3 6.09 -40.0 -28.19 0.435 1233 +1235 3 5.95 -41.32 -28.25 0.435 1234 +1236 3 5.55 -41.72 -28.68 0.435 1235 +1237 3 5.18 -42.83 -28.8 0.435 1236 +1238 3 4.82 -43.41 -29.7 0.435 1237 +1239 3 4.46 -44.23 -30.4 0.435 1238 +1240 3 4.51 -44.55 -31.55 0.435 1239 +1241 3 4.56 -44.87 -32.64 0.435 1240 +1242 3 4.62 -45.42 -33.6 0.435 1241 +1243 3 4.24 -46.27 -33.93 0.435 1242 +1244 3 4.28 -46.64 -34.57 0.435 1243 +1245 3 3.95 -47.64 -35.66 0.435 1244 +1246 3 4.01 -48.7 -35.85 0.435 1245 +1247 3 4.06 -49.04 -36.77 0.435 1246 +1248 3 4.12 -49.62 -37.44 0.435 1247 +1249 3 4.19 -50.43 -37.9 0.435 1248 +1250 3 4.24 -51.06 -38.12 0.54 1249 +1251 3 4.29 -51.93 -38.12 0.54 1250 +1252 3 4.3 -52.12 -38.44 0.54 1251 +1253 3 3.94 -52.18 -40.27 0.54 1252 +1254 3 3.99 -52.71 -41.31 0.54 1253 +1255 3 4.07 -53.48 -42.28 0.54 1254 +1256 3 3.73 -54.17 -44.17 0.54 1255 +1257 3 3.41 -55.12 -45.79 0.54 1256 +1258 3 3.08 -56.09 -47.18 0.54 1257 +1259 3 3.13 -56.43 -48.04 0.54 1258 +1260 3 3.21 -56.88 -49.96 0.54 1259 +1261 3 3.27 -56.89 -51.93 0.54 1260 +1262 3 3.32 -57.2 -53.09 0.54 1261 +1263 3 2.93 -57.81 -53.77 0.54 1262 +1264 3 2.57 -58.38 -54.88 0.54 1263 +1265 3 2.23 -59.39 -55.83 0.54 1264 +1266 3 2.28 -60.24 -55.99 0.54 1265 +1267 3 2.37 -60.94 -57.49 0.54 1266 +1268 3 2.65 -61.23 -58.88 0.54 1267 +1269 3 2.71 -61.48 -60.63 0.54 1268 +1270 3 2.81 -62.14 -62.66 0.54 1269 +1271 3 2.44 -62.46 -63.83 0.54 1270 +1272 3 2.5 -63.31 -64.14 0.54 1271 +1273 3 2.53 -63.73 -64.19 0.54 1272 +1274 3 2.18 -64.23 -65.89 0.54 1273 +1275 3 2.23 -65.09 -65.98 0.54 1274 +1276 3 2.71 -65.71 -66.03 0.54 1275 +1277 3 2.98 -66.26 -66.77 0.54 1276 +1278 3 3.05 -66.78 -68.1 0.54 1277 +1279 3 3.09 -67.43 -68.16 0.54 1278 +1280 3 3.14 -68.02 -68.53 0.54 1279 +1281 3 3.21 -68.84 -69.06 0.54 1280 +1282 3 2.8 -69.29 -69.2 0.54 1281 +1283 3 2.41 -69.69 -69.77 0.54 1282 +1284 3 2.04 -70.31 -70.38 0.54 1283 +1285 3 2.09 -70.87 -71.26 0.54 1284 +1286 3 2.14 -71.19 -72.35 0.54 1285 +1287 3 2.21 -71.98 -72.95 0.54 1286 +1288 3 1.44 -73.0 -74.13 0.54 1287 +1289 3 1.5 -73.26 -75.82 0.54 1288 +1290 3 1.59 -74.0 -77.03 0.54 1289 +1291 3 1.22 -74.57 -78.14 0.54 1290 +1292 3 1.26 -75.21 -78.21 0.54 1291 +1293 3 0.89 -75.54 -79.38 0.54 1292 +1294 3 0.95 -76.11 -80.2 0.54 1293 +1295 3 0.54 -76.56 -80.32 0.54 1294 +1296 3 0.61 -77.6 -80.73 0.54 1295 +1297 3 0.67 -78.19 -81.39 0.54 1296 +1298 3 0.71 -78.8 -81.69 0.54 1297 +1299 3 0.76 -79.44 -81.82 0.54 1298 +1300 3 1.02 -80.06 -81.96 0.54 1299 +1301 3 1.5 -80.63 -82.53 0.54 1300 +1302 3 1.78 -81.47 -82.61 0.54 1301 +1303 3 1.87 -82.96 -82.84 0.54 1302 +1304 3 2.12 -83.37 -82.88 0.54 1303 +1305 3 2.61 -84.17 -83.25 0.54 1304 +1306 3 3.32 -84.96 -83.62 0.54 1305 +1307 3 4.04 -85.73 -84.13 0.54 1306 +1308 3 4.73 -86.33 -84.25 0.54 1307 +1309 3 6.52 -87.29 -84.31 0.54 1308 +1310 3 7.42 -87.67 -84.33 0.54 1309 +1311 3 8.31 -88.03 -84.42 0.54 1310 +1312 3 9.43 -88.61 -84.46 0.54 1311 +1313 3 10.76 -88.96 -84.46 0.54 1312 +1314 3 11.42 -89.13 -84.46 0.54 1313 +1315 3 12.28 -89.07 -84.44 0.54 1314 +1316 3 12.9 -88.61 -84.37 0.54 1315 +1317 3 13.54 -88.58 -84.36 0.54 1316 +1318 3 7.3 -38.67 -27.79 0.54 1232 +1319 3 8.0 -39.48 -27.86 0.54 1318 +1320 3 9.16 -40.13 -29.26 0.54 1319 +1321 3 9.84 -40.51 -29.36 0.54 1320 +1322 3 10.54 -40.82 -30.27 0.54 1321 +1323 3 11.03 -41.62 -30.57 0.54 1322 +1324 3 11.98 -42.31 -31.68 0.54 1323 +1325 3 12.23 -42.17 -32.93 0.54 1324 +1326 3 12.91 -42.52 -33.41 0.54 1325 +1327 3 13.55 -42.48 -33.39 0.54 1326 +1328 3 14.65 -42.34 -34.1 0.54 1327 +1329 3 15.58 -43.13 -34.24 0.54 1328 +1330 3 16.28 -43.39 -35.45 0.54 1329 +1331 3 16.74 -43.79 -35.48 0.54 1330 +1332 3 17.21 -44.14 -36.04 0.54 1331 +1333 3 17.9 -44.42 -37.11 0.54 1332 +1334 3 18.62 -45.2 -37.62 0.54 1333 +1335 3 18.89 -45.26 -38.9 0.54 1334 +1336 3 19.39 -46.04 -39.57 0.54 1335 +1337 3 20.11 -46.46 -41.26 0.54 1336 +1338 3 21.29 -47.68 -41.43 0.54 1337 +1339 3 21.78 -47.92 -43.03 0.54 1338 +1340 3 22.25 -48.52 -43.23 0.54 1339 +1341 3 22.99 -49.5 -43.84 0.54 1340 +1342 3 23.7 -50.24 -44.58 0.54 1341 +1343 3 24.4 -50.84 -44.78 0.54 1342 +1344 3 25.1 -51.65 -44.91 0.54 1343 +1345 3 26.05 -52.61 -45.59 0.54 1344 +1346 3 27.18 -53.39 -45.65 0.54 1345 +1347 3 27.89 -54.21 -45.72 0.54 1346 +1348 3 28.39 -54.96 -46.62 0.54 1347 +1349 3 29.33 -55.97 -46.77 0.54 1348 +1350 3 30.26 -56.99 -46.85 0.54 1349 +1351 3 31.22 -57.92 -47.83 0.54 1350 +1352 3 31.7 -58.74 -47.97 0.54 1351 +1353 3 31.97 -59.37 -48.03 0.54 1352 +1354 3 32.25 -60.15 -48.64 0.54 1353 +1355 3 32.5 -60.52 -49.13 0.54 1354 +1356 3 32.99 -61.35 -49.27 0.54 1355 +1357 3 33.25 -61.74 -49.61 0.54 1356 +1358 3 33.49 -62.11 -50.02 0.54 1357 +1359 3 33.52 -62.53 -50.13 0.54 1358 +1360 3 33.79 -63.37 -50.3 0.54 1359 +1361 3 33.81 -63.54 -50.68 0.54 1360 +1362 3 15.23 -17.86 2.72 0.65 1196 +1363 3 15.26 -18.31 2.82 0.65 1362 +1364 3 15.74 -18.94 2.92 0.65 1363 +1365 3 16.41 -19.35 3.12 0.65 1364 +1366 3 16.84 -19.57 3.41 0.65 1365 +1367 3 18.16 -20.22 4.13 0.65 1366 +1368 3 18.83 -20.39 4.13 0.65 1367 +1369 3 19.7 -20.81 4.56 0.65 1368 +1370 3 21.0 -21.01 5.17 0.65 1369 +1371 3 22.34 -21.59 5.21 0.65 1370 +1372 3 23.65 -21.71 5.23 0.65 1371 +1373 3 24.79 -22.51 5.18 0.65 1372 +1374 3 25.71 -23.3 5.12 0.65 1373 +1375 3 26.39 -23.92 5.07 0.65 1374 +1376 3 27.29 -24.3 5.13 0.65 1375 +1377 3 28.58 -24.22 5.17 0.65 1376 +1378 3 29.47 -24.37 5.18 0.65 1377 +1379 3 30.55 -24.53 5.19 0.65 1378 +1380 3 31.88 -24.88 5.18 0.65 1379 +1381 3 32.55 -25.26 5.16 0.65 1380 +1382 3 33.22 -25.66 5.28 0.65 1381 +1383 3 33.86 -25.94 7.07 0.435 1382 +1384 3 34.52 -26.12 7.15 0.435 1383 +1385 3 36.08 -26.67 7.13 0.435 1384 +1386 3 36.29 -26.78 7.12 0.435 1385 +1387 3 37.03 -27.74 6.43 0.11 1386 +1388 3 38.98 -27.86 6.69 0.435 1387 +1389 3 41.2 -28.59 6.67 0.435 1388 +1390 3 43.79 -28.43 6.74 0.435 1389 +1391 3 45.55 -28.75 6.75 0.435 1390 +1392 3 47.55 -29.5 6.72 0.435 1391 +1393 3 49.35 -30.68 6.64 0.435 1392 +1394 3 50.06 -31.49 6.58 0.435 1393 +1395 3 51.41 -32.28 6.53 0.435 1394 +1396 3 53.25 -33.34 5.4 0.435 1395 +1397 3 55.69 -34.04 5.32 0.435 1396 +1398 3 56.61 -34.3 4.11 0.435 1397 +1399 3 58.36 -34.38 3.92 0.435 1398 +1400 3 59.27 -34.97 3.8 0.435 1399 +1401 3 59.67 -35.31 5.2 0.435 1400 +1402 3 60.55 -35.51 5.65 0.435 1401 +1403 3 60.99 -35.99 6.37 0.435 1402 +1404 3 62.29 -36.17 6.91 0.435 1403 +1405 3 62.7 -36.22 7.67 0.435 1404 +1406 3 63.38 -36.86 7.84 0.435 1405 +1407 3 65.15 -37.18 7.85 0.435 1406 +1408 3 66.24 -37.56 8.07 0.435 1407 +1409 3 68.62 -37.67 8.57 0.435 1408 +1410 3 71.21 -37.53 8.79 0.435 1409 +1411 3 73.12 -37.0 8.96 0.435 1410 +1412 3 74.0 -37.17 9.05 0.435 1411 +1413 3 75.1 -37.57 9.41 0.435 1412 +1414 3 76.23 -38.4 9.8 0.435 1413 +1415 3 76.9 -39.1 10.73 0.435 1414 +1416 3 77.35 -39.53 10.98 0.435 1415 +1417 3 78.68 -40.13 11.26 0.435 1416 +1418 3 80.02 -40.73 11.53 0.435 1417 +1419 3 81.14 -41.53 11.55 0.435 1418 +1420 3 81.83 -42.14 11.66 0.435 1419 +1421 3 83.41 -43.14 11.66 0.435 1420 +1422 3 84.99 -44.12 11.6 0.435 1421 +1423 3 85.89 -44.71 11.64 0.435 1422 +1424 3 86.81 -45.55 11.94 0.435 1423 +1425 3 87.91 -45.93 12.01 0.435 1424 +1426 3 88.35 -46.11 12.0 0.435 1425 +1427 3 90.36 -46.86 12.04 0.435 1426 +1428 3 91.23 -46.81 12.07 0.435 1427 +1429 3 92.09 -46.76 12.09 0.435 1428 +1430 3 92.71 -46.29 12.16 0.435 1429 +1431 3 93.33 -45.81 12.22 0.435 1430 +1432 3 94.6 -45.31 12.3 0.435 1431 +1433 3 97.19 -45.15 12.38 0.435 1432 +1434 3 98.73 -45.48 12.38 0.435 1433 +1435 3 99.88 -46.28 12.33 0.435 1434 +1436 3 101.02 -47.31 12.4 0.435 1435 +1437 3 101.92 -47.88 12.36 0.435 1436 +1438 3 102.84 -48.7 12.38 0.435 1437 +1439 3 103.49 -48.88 12.38 0.435 1438 +1440 3 104.82 -49.22 12.37 0.435 1439 +1441 3 105.45 -49.28 13.29 0.435 1440 +1442 3 106.54 -49.46 13.59 0.435 1441 +1443 3 106.97 -49.69 13.95 0.435 1442 +1444 3 108.06 -49.88 14.41 0.435 1443 +1445 3 108.76 -50.45 14.0 0.435 1444 +1446 3 109.22 -50.33 13.12 0.435 1445 +1447 3 110.35 -50.57 11.98 0.435 1446 +1448 3 110.39 -50.38 10.2 0.435 1447 +1449 3 111.7 -50.24 9.64 0.435 1448 +1450 3 114.97 -50.22 9.27 0.435 1449 +1451 3 116.93 -50.28 9.01 0.435 1450 +1452 3 118.26 -50.1 8.07 0.435 1451 +1453 3 119.16 -50.45 7.84 0.435 1452 +1454 3 120.53 -51.12 6.66 0.435 1453 +1455 3 121.21 -51.49 6.42 0.435 1454 +1456 3 36.99 -27.48 7.06 0.435 1386 +1457 3 39.19 -28.0 7.13 0.435 1456 +1458 3 40.11 -28.02 5.79 0.435 1457 +1459 3 41.83 -27.92 5.93 0.435 1458 +1460 3 43.56 -27.82 5.98 0.435 1459 +1461 3 45.3 -27.94 6.08 0.435 1460 +1462 3 46.2 -28.3 6.06 0.435 1461 +1463 3 47.24 -27.81 6.07 0.435 1462 +1464 3 48.79 -28.14 6.07 0.435 1463 +1465 3 50.79 -28.87 6.04 0.435 1464 +1466 3 51.7 -29.47 6.0 0.435 1465 +1467 3 52.63 -30.48 5.84 0.435 1466 +1468 3 53.59 -31.93 5.71 0.435 1467 +1469 3 54.56 -33.37 5.58 0.435 1468 +1470 3 55.27 -34.4 5.49 0.435 1469 +1471 3 56.68 -36.05 5.36 0.435 1470 +1472 3 56.93 -36.67 5.3 0.435 1471 +1473 3 57.61 -37.03 4.83 0.11 1472 +1474 3 58.07 -37.48 5.39 0.435 1473 +1475 3 58.71 -37.46 5.56 0.435 1474 +1476 3 59.14 -37.43 5.57 0.435 1475 +1477 3 59.6 -37.83 5.47 0.435 1476 +1478 3 60.07 -38.23 5.44 0.435 1477 +1479 3 60.75 -38.3 4.47 0.435 1478 +1480 3 61.01 -38.64 3.76 0.435 1479 +1481 3 61.69 -38.7 2.57 0.435 1480 +1482 3 62.17 -39.07 2.17 0.435 1481 +1483 3 62.41 -39.2 1.55 0.435 1482 +1484 3 63.11 -39.73 0.83 0.435 1483 +1485 3 63.59 -40.08 0.28 0.435 1484 +1486 3 64.51 -40.57 -0.79 0.435 1485 +1487 3 65.22 -41.38 -0.86 0.435 1486 +1488 3 65.7 -41.71 -1.55 0.435 1487 +1489 3 65.1 -42.41 -1.57 0.435 1488 +1490 3 65.75 -42.58 -1.57 0.435 1489 +1491 3 66.87 -43.16 -1.52 0.435 1490 +1492 3 68.43 -43.72 -1.55 0.435 1491 +1493 3 69.09 -43.89 -1.55 0.435 1492 +1494 3 69.53 -44.07 -1.64 0.435 1493 +1495 3 70.44 -44.4 -2.1 0.435 1494 +1496 3 70.68 -44.27 -3.14 0.435 1495 +1497 3 71.39 -44.77 -4.3 0.435 1496 +1498 3 72.08 -44.86 -5.13 0.435 1497 +1499 3 72.74 -44.74 -5.92 0.435 1498 +1500 3 73.22 -44.81 -6.9 0.435 1499 +1501 3 73.93 -45.61 -7.34 0.435 1500 +1502 3 74.66 -46.32 -8.31 0.435 1501 +1503 3 75.14 -47.14 -8.53 0.435 1502 +1504 3 75.62 -47.72 -8.95 0.435 1503 +1505 3 76.31 -48.32 -9.0 0.435 1504 +1506 3 76.83 -48.8 -10.39 0.435 1505 +1507 3 77.29 -49.4 -10.52 0.435 1506 +1508 3 77.76 -50.02 -10.58 0.435 1507 +1509 3 78.48 -50.78 -11.24 0.435 1508 +1510 3 78.76 -51.05 -12.61 0.435 1509 +1511 3 79.23 -51.67 -12.66 0.435 1510 +1512 3 79.93 -51.94 -13.81 0.435 1511 +1513 3 80.39 -52.13 -13.89 0.435 1512 +1514 3 81.11 -52.88 -14.55 0.435 1513 +1515 3 81.8 -53.47 -14.75 0.435 1514 +1516 3 82.89 -53.59 -14.97 0.435 1515 +1517 3 83.35 -53.98 -15.22 0.435 1516 +1518 3 84.06 -54.24 -16.43 0.435 1517 +1519 3 84.98 -54.79 -16.92 0.435 1518 +1520 3 85.42 -54.7 -17.44 0.435 1519 +1521 3 85.9 -54.75 -18.78 0.435 1520 +1522 3 86.41 -55.49 -19.75 0.435 1521 +1523 3 86.91 -56.0 -20.84 0.435 1522 +1524 3 86.98 -56.5 -22.18 0.435 1523 +1525 3 87.23 -56.89 -22.52 0.435 1524 +1526 3 87.26 -57.06 -23.06 0.435 1525 +1527 3 87.75 -57.85 -23.51 0.435 1526 +1528 3 88.01 -58.19 -24.21 0.435 1527 +1529 3 88.48 -58.57 -24.46 0.435 1528 +1530 3 88.5 -58.7 -25.31 0.435 1529 +1531 3 88.77 -59.33 -25.37 0.435 1530 +1532 3 89.26 -59.61 -26.59 0.435 1531 +1533 3 89.75 -59.87 -27.96 0.435 1532 +1534 3 90.42 -60.23 -28.21 0.435 1533 +1535 3 91.17 -61.15 -29.42 0.435 1534 +1536 3 91.68 -62.15 -29.96 0.435 1535 +1537 3 92.39 -62.96 -30.03 0.435 1536 +1538 3 92.39 -62.95 -30.17 0.435 1537 +1539 3 92.4 -62.89 -30.77 0.435 1538 +1540 3 92.44 -63.28 -31.19 0.435 1539 +1541 3 92.48 -63.67 -31.6 0.435 1540 +1542 3 92.71 -63.56 -32.57 0.435 1541 +1543 3 92.94 -63.74 -32.73 0.435 1542 +1544 3 93.2 -63.88 -33.5 0.435 1543 +1545 3 93.43 -64.01 -34.11 0.435 1544 +1546 3 93.9 -64.14 -34.71 0.435 1545 +1547 3 94.13 -64.27 -35.24 0.435 1546 +1548 3 94.6 -64.44 -35.55 0.435 1547 +1549 3 94.81 -64.42 -35.63 0.435 1548 +1550 3 95.05 -64.57 -36.16 0.435 1549 +1551 3 95.95 -64.93 -36.33 0.435 1550 +1552 3 96.39 -65.11 -36.33 0.435 1551 +1553 3 96.86 -65.23 -37.09 0.435 1552 +1554 3 97.54 -65.56 -37.56 0.435 1553 +1555 3 98.22 -65.7 -38.01 0.435 1554 +1556 3 98.68 -65.8 -38.83 0.435 1555 +1557 3 99.39 -66.07 -39.98 0.435 1556 +1558 3 100.51 -66.64 -40.08 0.435 1557 +1559 3 100.73 -66.62 -40.16 0.435 1558 +1560 3 100.97 -66.75 -40.84 0.435 1559 +1561 3 101.22 -66.64 -41.88 0.435 1560 +1562 3 101.88 -66.51 -42.67 0.435 1561 +1563 3 102.11 -66.42 -43.41 0.435 1562 +1564 3 102.98 -66.35 -43.54 0.435 1563 +1565 3 103.64 -66.26 -44.04 0.435 1564 +1566 3 104.3 -66.18 -44.47 0.435 1565 +1567 3 105.4 -66.07 -44.81 0.435 1566 +1568 3 106.04 -66.02 -44.79 0.435 1567 +1569 3 106.7 -65.93 -45.3 0.435 1568 +1570 3 107.35 -65.88 -45.35 0.435 1569 +1571 3 108.21 -65.31 -46.02 0.435 1570 +1572 3 108.86 -65.26 -46.23 0.435 1571 +1573 3 57.45 -37.93 5.18 0.435 1472 +1574 3 58.41 -39.38 5.05 0.435 1573 +1575 3 60.03 -41.0 4.92 0.435 1574 +1576 3 61.15 -41.56 4.74 0.435 1575 +1577 3 62.73 -42.29 4.33 0.435 1576 +1578 3 64.53 -43.26 4.27 0.435 1577 +1579 3 65.45 -43.49 2.91 0.435 1578 +1580 3 66.15 -43.82 2.29 0.435 1579 +1581 3 66.59 -43.97 1.91 0.435 1580 +1582 3 67.75 -44.47 1.14 0.435 1581 +1583 3 68.43 -44.78 0.44 0.435 1582 +1584 3 69.98 -45.06 -0.15 0.435 1583 +1585 3 70.49 -45.56 -1.39 0.435 1584 +1586 3 71.18 -46.16 -1.43 0.435 1585 +1587 3 71.43 -46.25 -2.57 0.435 1586 +1588 3 71.94 -46.75 -3.67 0.435 1587 +1589 3 72.45 -48.01 -3.86 0.435 1588 +1590 3 72.46 -48.21 -3.96 0.435 1589 +1591 3 73.2 -49.67 -4.09 0.435 1590 +1592 3 73.29 -50.15 -5.72 0.435 1591 +1593 3 73.79 -51.15 -6.19 0.435 1592 +1594 3 74.07 -51.95 -6.72 0.435 1593 +1595 3 74.61 -53.11 -7.8 0.435 1594 +1596 3 74.89 -53.91 -8.33 0.435 1595 +1597 3 75.4 -54.95 -8.5 0.435 1596 +1598 3 75.71 -56.18 -9.15 0.435 1597 +1599 3 75.77 -57.02 -9.3 0.435 1598 +1600 3 76.27 -58.05 -9.55 0.435 1599 +1601 3 76.8 -59.28 -9.97 0.435 1600 +1602 3 77.35 -60.91 -10.66 0.435 1601 +1603 3 77.43 -62.18 -10.86 0.435 1602 +1604 3 77.03 -62.62 -11.06 0.435 1603 +1605 3 77.09 -62.94 -12.23 0.435 1604 +1606 3 77.37 -63.69 -13.21 0.435 1605 +1607 3 77.43 -64.54 -13.29 0.435 1606 +1608 3 77.99 -66.44 -13.48 0.435 1607 +1609 3 78.69 -67.26 -13.61 0.435 1608 +1610 3 79.22 -68.19 -14.75 0.435 1609 +1611 3 79.5 -69.25 -14.86 0.435 1610 +1612 3 33.53 -26.95 5.16 0.435 1382 +1613 3 33.0 -28.91 4.94 0.435 1612 +1614 3 33.95 -30.35 4.81 0.435 1613 +1615 3 34.47 -31.4 4.72 0.435 1614 +1616 3 35.16 -31.81 4.69 0.435 1615 +1617 3 35.41 -31.89 3.4 0.435 1616 +1618 3 36.91 -31.37 3.49 0.435 1617 +1619 3 37.35 -31.51 3.11 0.435 1618 +1620 3 38.63 -31.0 3.12 0.435 1619 +1621 3 39.75 -31.35 3.04 0.435 1620 +1622 3 41.08 -31.37 1.86 0.435 1621 +1623 3 42.41 -31.44 1.28 0.435 1622 +1624 3 44.82 -31.65 0.56 0.435 1623 +1625 3 46.34 -31.51 0.16 0.435 1624 +1626 3 47.45 -31.38 -0.39 0.435 1625 +1627 3 48.32 -31.53 -0.46 0.435 1626 +1628 3 49.9 -31.99 -1.45 0.435 1627 +1629 3 51.03 -32.55 -1.64 0.435 1628 +1630 3 52.16 -33.1 -1.82 0.435 1629 +1631 3 52.62 -33.49 -2.0 0.435 1630 +1632 3 52.66 -33.84 -2.86 0.435 1631 +1633 3 53.13 -34.45 -2.91 0.435 1632 +1634 3 53.41 -35.28 -3.22 0.435 1633 +1635 3 53.66 -35.67 -3.48 0.435 1634 +1636 3 54.13 -36.29 -3.53 0.435 1635 +1637 3 54.61 -36.89 -3.66 0.435 1636 +1638 3 56.82 -37.37 -4.03 0.435 1637 +1639 3 57.92 -37.2 -4.97 0.435 1638 +1640 3 58.82 -37.28 -5.78 0.435 1639 +1641 3 60.17 -37.78 -6.33 0.435 1640 +1642 3 61.29 -37.82 -7.44 0.435 1641 +1643 3 62.84 -37.83 -8.53 0.435 1642 +1644 3 63.31 -37.95 -9.14 0.435 1643 +1645 3 63.99 -38.31 -9.39 0.435 1644 +1646 3 64.7 -38.82 -10.33 0.435 1645 +1647 3 65.4 -39.36 -11.12 0.435 1646 +1648 3 66.36 -40.3 -11.94 0.435 1647 +1649 3 68.16 -41.26 -12.08 0.435 1648 +1650 3 35.47 -33.7 4.5 0.435 1616 +1651 3 35.98 -34.75 4.41 0.435 1650 +1652 3 36.08 -36.25 4.25 0.435 1651 +1653 3 36.6 -37.72 4.11 0.435 1652 +1654 3 36.73 -39.87 3.9 0.435 1653 +1655 3 36.49 -42.68 3.6 0.435 1654 +1656 3 36.15 -44.21 3.43 0.435 1655 +1657 3 36.21 -45.28 3.32 0.435 1656 +1658 3 36.71 -46.1 3.25 0.435 1657 +1659 3 37.21 -47.15 3.15 0.435 1658 +1660 3 37.7 -48.2 3.06 0.435 1659 +1661 3 37.32 -48.87 2.98 0.435 1660 +1662 3 36.54 -50.42 2.8 0.435 1661 +1663 3 36.67 -52.56 2.65 0.435 1662 +1664 3 36.39 -54.73 2.42 0.435 1663 +1665 3 36.73 -56.64 2.23 0.435 1664 +1666 3 36.95 -57.17 3.09 0.435 1665 +1667 3 37.01 -58.52 3.77 0.435 1666 +1668 3 37.3 -59.02 2.3 0.435 1667 +1669 3 37.0 -60.16 0.6 0.435 1668 +1670 3 37.08 -61.43 0.23 0.435 1669 +1671 3 37.42 -63.04 -0.67 0.435 1670 +1672 3 38.13 -63.82 -1.18 0.435 1671 +1673 3 38.39 -64.14 -2.12 0.435 1672 +1674 3 38.67 -64.98 -2.27 0.435 1673 +1675 3 39.16 -65.8 -2.42 0.435 1674 +1676 3 39.19 -66.23 -2.47 0.435 1675 +1677 3 39.27 -67.51 -2.6 0.435 1676 +1678 3 39.32 -68.36 -2.68 0.435 1677 +1679 3 39.38 -68.96 -3.27 0.435 1678 +1680 3 40.09 -69.76 -3.41 0.435 1679 +1681 3 41.05 -71.22 -3.54 0.435 1680 +1682 3 41.35 -71.91 -5.03 0.435 1681 +1683 3 41.62 -72.74 -5.26 0.435 1682 +1684 3 41.69 -73.81 -5.37 0.435 1683 +1685 3 41.79 -74.76 -6.75 0.435 1684 +1686 3 41.85 -75.61 -6.83 0.435 1685 +1687 3 42.38 -77.3 -6.99 0.435 1686 +1688 3 42.66 -78.13 -7.07 0.435 1687 +1689 3 42.93 -78.99 -7.16 0.435 1688 +1690 3 43.39 -79.39 -7.27 0.435 1689 +1691 3 43.45 -79.68 -8.65 0.435 1690 +1692 3 43.56 -81.09 -9.55 0.435 1691 +1693 3 43.91 -83.0 -9.74 0.435 1692 +1694 3 44.16 -83.62 -10.02 0.435 1693 +1695 3 44.45 -84.39 -10.78 0.435 1694 +1696 3 44.53 -85.13 -12.05 0.435 1695 +1697 3 44.61 -86.18 -12.24 0.435 1696 +1698 3 44.67 -86.73 -13.2 0.435 1697 +1699 3 44.79 -88.14 -14.31 0.435 1698 +1700 3 44.89 -89.37 -15.04 0.435 1699 +1701 3 45.42 -90.54 -15.91 0.435 1700 +1702 3 45.47 -91.39 -15.99 0.435 1701 +1703 3 45.57 -92.86 -16.59 0.435 1702 +1704 3 46.01 -92.83 -16.66 0.435 1703 +1705 3 46.53 -94.07 -16.78 0.435 1704 +1706 3 46.87 -95.99 -16.97 0.435 1705 +1707 3 46.12 -97.97 -17.19 0.435 1706 +1708 3 46.2 -99.25 -17.32 0.435 1707 +1709 3 47.16 -100.23 -17.85 0.435 1708 +1710 3 48.5 -100.77 -18.18 0.435 1709 +1711 3 49.42 -101.57 -18.24 0.435 1710 +1712 3 49.94 -102.28 -19.35 0.435 1711 +1713 3 49.98 -102.64 -20.07 0.435 1712 +1714 3 49.19 -103.97 -20.37 0.435 1713 +1715 3 49.26 -105.04 -20.55 0.435 1714 +1716 3 49.12 -105.91 -20.73 0.435 1715 +1717 3 49.18 -106.2 -22.11 0.435 1716 +1718 3 48.81 -106.52 -23.51 0.435 1717 +1719 3 48.86 -107.11 -24.1 0.435 1718 +1720 3 48.9 -106.93 -25.89 0.435 1719 +1721 3 48.95 -107.26 -26.89 0.435 1720 +1722 3 48.57 -107.9 -27.05 0.435 1721 +1723 3 48.61 -108.28 -27.69 0.435 1722 +1724 3 48.22 -108.89 -28.29 0.435 1723 +1725 3 48.26 -109.26 -28.86 0.435 1724 +1726 3 48.75 -109.87 -28.98 0.435 1725 +1727 3 48.85 -111.32 -29.66 0.435 1726 +1728 3 48.94 -112.04 -31.08 0.435 1727 +1729 3 49.19 -112.14 -32.07 0.435 1728 +1730 3 49.25 -112.99 -32.23 0.435 1729 +1731 3 49.3 -113.84 -32.39 0.435 1730 +1732 3 49.33 -114.26 -32.44 0.435 1731 +1733 3 49.24 -115.37 -34.36 0.435 1732 +1734 3 48.47 -116.65 -35.19 0.435 1733 +1735 3 48.53 -117.24 -35.78 0.435 1734 +1736 3 47.52 -118.09 -36.57 0.435 1735 +1737 3 47.76 -118.21 -37.4 0.435 1736 +1738 3 47.83 -118.75 -38.44 0.435 1737 +1739 3 47.84 -118.68 -39.1 0.435 1738 +1740 3 47.91 -119.48 -39.79 0.435 1739 +1741 3 47.56 -120.27 -40.78 0.435 1740 +1742 3 47.43 -121.51 -41.37 0.435 1741 +1743 3 47.06 -122.39 -41.62 0.435 1742 +1744 3 47.13 -122.92 -42.66 0.435 1743 +1745 3 47.18 -123.5 -43.39 0.435 1744 +1746 3 46.82 -124.33 -44.16 0.435 1745 +1747 3 46.26 -125.64 -44.39 0.435 1746 +1748 3 45.92 -126.9 -44.98 0.435 1747 +1749 3 45.56 -127.41 -46.62 0.435 1748 +1750 3 45.21 -127.94 -47.97 0.435 1749 +1751 3 45.26 -128.27 -48.98 0.435 1750 +1752 3 44.88 -129.1 -49.59 0.435 1751 +1753 3 44.96 -129.86 -50.73 0.435 1752 +1754 3 45.01 -129.96 -51.79 0.435 1753 +1755 3 45.29 -130.78 -52.1 0.435 1754 +1756 3 45.55 -131.13 -52.73 0.435 1755 +1757 3 45.8 -131.97 -52.89 0.435 1756 +1758 3 45.87 -132.55 -53.63 0.435 1757 +1759 3 45.92 -133.39 -53.78 0.435 1758 +1760 3 45.99 -133.95 -54.68 0.435 1759 +1761 3 46.02 -134.06 -55.58 0.435 1760 +1762 3 46.07 -134.7 -55.8 0.435 1761 +1763 3 46.13 -135.21 -57.14 0.435 1762 +1764 3 46.18 -135.55 -57.99 0.435 1763 +1765 3 46.47 -136.09 -58.95 0.435 1764 +1766 3 46.52 -136.94 -59.12 0.435 1765 +1767 3 46.33 -137.37 -59.16 0.435 1766 +1768 3 46.15 -138.07 -58.94 0.435 1767 +1769 3 46.2 -138.71 -59.0 0.435 1768 +1770 3 45.82 -139.02 -60.47 0.435 1769 +1771 3 45.48 -140.08 -61.5 0.435 1770 +1772 3 45.18 -141.44 -63.3 0.435 1771 +1773 3 45.31 -142.81 -64.72 0.435 1772 +1774 3 44.53 -144.1 -65.32 0.435 1773 +1775 3 43.31 -145.24 -65.55 0.435 1774 +1776 3 42.27 -145.43 -66.5 0.435 1775 +1777 3 41.27 -146.17 -68.4 0.435 1776 +1778 3 40.0 -146.41 -68.91 0.435 1777 +1779 3 39.34 -145.95 -69.48 0.435 1778 +1780 3 39.12 -145.47 -70.19 0.435 1779 +1781 3 38.27 -145.19 -71.39 0.435 1780 +1782 3 37.66 -145.04 -73.27 0.435 1781 +1783 3 36.18 -145.51 -73.8 0.435 1782 +1784 3 35.38 -145.9 -74.77 0.435 1783 +1785 3 34.75 -146.09 -75.4 0.435 1784 +1786 3 34.36 -146.47 -76.14 0.435 1785 +1787 3 -1.87 -7.91 -3.58 1.95 1 +1788 3 -1.88 -7.93 -3.36 1.95 1787 +1789 3 -2.04 -8.83 -3.3 1.41 1788 +1790 3 -2.46 -9.07 -3.26 1.41 1789 +1791 3 -3.08 -9.83 -2.6 1.41 1790 +1792 3 -3.06 -9.74 -3.49 1.41 1791 +1793 3 -3.22 -10.82 -3.61 1.085 1792 +1794 3 -3.62 -11.28 -3.6 1.085 1793 +1795 3 -3.6 -11.71 -3.64 1.085 1794 +1796 3 -3.75 -12.58 -3.73 1.085 1795 +1797 3 -4.61 -13.19 -2.61 0.65 1796 +1798 3 -5.76 -12.39 -2.55 0.65 1797 +1799 3 -6.84 -12.46 -2.59 0.65 1798 +1800 3 -7.88 -12.95 -2.73 0.54 1799 +1801 3 -9.8 -13.5 -2.83 0.54 1800 +1802 3 -11.46 -15.43 -1.95 0.54 1801 +1803 3 -12.71 -16.16 -1.97 0.54 1802 +1804 3 -14.18 -16.92 -1.86 0.54 1803 +1805 3 -14.62 -17.46 -1.1 0.54 1804 +1806 3 -15.03 -17.97 -0.55 0.54 1805 +1807 3 -16.51 -18.73 -0.52 0.54 1806 +1808 3 -18.18 -19.97 -0.09 0.54 1807 +1809 3 -19.0 -20.9 0.01 0.54 1808 +1810 3 -21.24 -23.21 -0.12 0.54 1809 +1811 3 -22.87 -24.8 -0.32 0.54 1810 +1812 3 -23.72 -25.31 -0.17 0.54 1811 +1813 3 -25.62 -26.08 -0.22 0.54 1812 +1814 3 -27.32 -26.62 -0.31 0.54 1813 +1815 3 -27.56 -26.2 -0.27 0.54 1814 +1816 3 -27.89 -26.6 -2.96 0.325 1815 +1817 3 -28.28 -26.66 -4.71 0.435 1816 +1818 3 -29.08 -27.58 -4.68 0.435 1817 +1819 3 -29.71 -28.06 -4.66 0.435 1818 +1820 3 -30.73 -28.96 -5.08 0.435 1819 +1821 3 -31.54 -29.34 -6.12 0.435 1820 +1822 3 -32.36 -30.03 -6.22 0.435 1821 +1823 3 -33.65 -30.31 -6.35 0.435 1822 +1824 3 -34.95 -30.13 -6.89 0.435 1823 +1825 3 -36.89 -29.95 -7.66 0.435 1824 +1826 3 -38.44 -29.16 -7.92 0.435 1825 +1827 3 -39.74 -29.23 -8.04 0.435 1826 +1828 3 -41.47 -29.29 -8.46 0.435 1827 +1829 3 -42.54 -29.1 -8.91 0.435 1828 +1830 3 -43.6 -29.37 -9.05 0.435 1829 +1831 3 -44.43 -29.53 -10.14 0.435 1830 +1832 3 -45.26 -29.94 -10.88 0.435 1831 +1833 3 -46.06 -30.84 -11.07 0.435 1832 +1834 3 -46.88 -31.53 -11.31 0.435 1833 +1835 3 -48.15 -32.0 -11.76 0.435 1834 +1836 3 -50.03 -32.69 -12.56 0.435 1835 +1837 3 -51.76 -32.78 -12.68 0.435 1836 +1838 3 -53.27 -32.29 -14.17 0.435 1837 +1839 3 -54.79 -32.14 -14.57 0.435 1838 +1840 3 -56.09 -32.22 -14.6 0.435 1839 +1841 3 -57.58 -32.51 -14.67 0.435 1840 +1842 3 -59.07 -32.49 -15.84 0.435 1841 +1843 3 -60.63 -31.7 -16.1 0.435 1842 +1844 3 -62.14 -31.78 -16.21 0.435 1843 +1845 3 -62.1 -31.63 -17.63 0.435 1844 +1846 3 -63.39 -31.94 -17.61 0.435 1845 +1847 3 -64.26 -32.01 -17.49 0.435 1846 +1848 3 -65.77 -31.8 -18.34 0.435 1847 +1849 3 -66.64 -31.33 -19.22 0.435 1848 +1850 3 -67.73 -31.4 -19.25 0.435 1849 +1851 3 -68.99 -31.91 -19.33 0.435 1850 +1852 3 -69.81 -32.58 -19.57 0.435 1851 +1853 3 -70.85 -33.03 -20.09 0.435 1852 +1854 3 -72.31 -33.43 -21.3 0.435 1853 +1855 3 -73.8 -33.95 -21.46 0.435 1854 +1856 3 -75.25 -35.11 -21.61 0.435 1855 +1857 3 -75.62 -36.0 -21.79 0.435 1856 +1858 3 -76.68 -36.26 -21.92 0.435 1857 +1859 3 -77.28 -36.92 -22.23 0.435 1858 +1860 3 -78.33 -37.41 -22.31 0.435 1859 +1861 3 -79.2 -37.47 -22.33 0.435 1860 +1862 3 -80.76 -36.91 -22.31 0.435 1861 +1863 3 -82.03 -37.17 -22.74 0.435 1862 +1864 3 -82.64 -37.57 -23.4 0.435 1863 +1865 3 -82.59 -37.89 -24.57 0.435 1864 +1866 3 -83.61 -38.56 -25.11 0.435 1865 +1867 3 -84.89 -38.85 -25.24 0.435 1866 +1868 3 -86.38 -39.1 -25.69 0.435 1867 +1869 3 -88.12 -38.99 -25.79 0.435 1868 +1870 3 -88.91 -39.37 -25.85 0.435 1869 +1871 3 -88.62 -39.85 -27.32 0.435 1870 +1872 3 -88.58 -40.5 -27.31 0.435 1871 +1873 3 -88.48 -41.47 -28.47 0.435 1872 +1874 3 -88.86 -42.07 -29.21 0.435 1873 +1875 3 -89.02 -42.39 -30.38 0.435 1874 +1876 3 -89.41 -43.06 -30.46 0.435 1875 +1877 3 -89.78 -44.43 -30.08 0.435 1876 +1878 3 -89.73 -45.33 -29.87 0.435 1877 +1879 3 -89.9 -45.14 -31.75 0.435 1878 +1880 3 -90.28 -45.47 -32.99 0.435 1879 +1881 3 -90.64 -46.28 -33.76 0.435 1880 +1882 3 -91.0 -46.55 -35.61 0.435 1881 +1883 3 -90.93 -47.32 -36.44 0.435 1882 +1884 3 -91.75 -48.01 -36.6 0.435 1883 +1885 3 -91.71 -47.84 -38.24 0.435 1884 +1886 3 -92.08 -48.68 -38.86 0.435 1885 +1887 3 -92.45 -49.24 -39.91 0.435 1886 +1888 3 -92.85 -49.41 -40.7 0.435 1887 +1889 3 -92.81 -49.77 -41.4 0.435 1888 +1890 3 -92.77 -50.14 -42.05 0.435 1889 +1891 3 -92.49 -50.74 -42.33 0.435 1890 +1892 3 -92.24 -51.08 -43.12 0.435 1891 +1893 3 -92.2 -51.72 -43.25 0.435 1892 +1894 3 -92.15 -52.33 -43.62 0.54 1893 +1895 3 -92.09 -53.16 -44.0 0.54 1894 +1896 3 -91.57 -53.91 -44.82 0.54 1895 +1897 3 -91.29 -54.68 -45.57 0.54 1896 +1898 3 -90.78 -55.44 -46.39 0.54 1897 +1899 3 -90.56 -55.61 -46.63 0.54 1898 +1900 3 -90.5 -56.2 -47.21 0.54 1899 +1901 3 -90.46 -56.6 -47.56 0.54 1900 +1902 3 -90.41 -57.16 -48.45 0.54 1901 +1903 3 -90.37 -57.53 -49.09 0.54 1902 +1904 3 -90.3 -57.8 -50.61 0.54 1903 +1905 3 -90.24 -58.61 -51.15 0.54 1904 +1906 3 -90.16 -59.68 -51.34 0.54 1905 +1907 3 -90.07 -60.91 -51.99 0.54 1906 +1908 3 -89.99 -61.66 -53.12 0.54 1907 +1909 3 -89.92 -62.45 -53.8 0.54 1908 +1910 3 -90.68 -63.45 -55.21 0.54 1909 +1911 3 -91.25 -64.48 -55.93 0.54 1910 +1912 3 -91.35 -65.92 -56.98 0.54 1911 +1913 3 -91.27 -66.66 -58.11 0.54 1912 +1914 3 -91.63 -67.47 -58.89 0.54 1913 +1915 3 -91.53 -68.39 -60.49 0.54 1914 +1916 3 -91.41 -69.8 -61.54 0.54 1915 +1917 3 -91.8 -70.16 -62.41 0.54 1916 +1918 3 -92.15 -70.67 -64.13 0.54 1917 +1919 3 -92.09 -70.98 -65.28 0.54 1918 +1920 3 -92.02 -71.76 -66.05 0.54 1919 +1921 3 -92.4 -72.14 -67.0 0.54 1920 +1922 3 -92.79 -72.7 -68.04 0.54 1921 +1923 3 -93.58 -73.06 -69.38 0.54 1922 +1924 3 -93.97 -73.66 -70.05 0.54 1923 +1925 3 -93.89 -74.42 -71.03 0.54 1924 +1926 3 -93.85 -75.06 -71.1 0.54 1925 +1927 3 -94.65 -75.98 -71.21 0.54 1926 +1928 3 -95.45 -76.79 -72.22 0.54 1927 +1929 3 -95.4 -77.13 -73.16 0.54 1928 +1930 3 -96.18 -78.18 -74.04 0.54 1929 +1931 3 -96.97 -79.02 -74.68 0.54 1930 +1932 3 -97.36 -79.39 -75.7 0.54 1931 +1933 3 -97.69 -80.37 -76.87 0.54 1932 +1934 3 -98.46 -81.62 -77.99 0.54 1933 +1935 3 -98.36 -82.84 -78.65 0.54 1934 +1936 3 -98.72 -83.66 -79.41 0.54 1935 +1937 3 -99.08 -84.75 -79.62 0.54 1936 +1938 3 -99.65 -86.07 -79.77 0.54 1937 +1939 3 -99.39 -86.71 -79.83 0.54 1938 +1940 3 -100.16 -87.71 -81.07 0.54 1939 +1941 3 -99.83 -88.59 -83.04 0.54 1940 +1942 3 -99.76 -89.35 -83.87 0.54 1941 +1943 3 -100.11 -90.41 -84.44 0.54 1942 +1944 3 -100.04 -91.23 -84.82 0.54 1943 +1945 3 -99.95 -92.47 -85.48 0.54 1944 +1946 3 -100.27 -93.91 -86.39 0.54 1945 +1947 3 -101.05 -95.23 -86.77 0.54 1946 +1948 3 -101.36 -96.67 -87.76 0.54 1947 +1949 3 -102.33 -98.39 -88.56 0.54 1948 +1950 3 -103.48 -100.29 -89.76 0.54 1949 +1951 3 -103.38 -101.25 -90.99 0.54 1950 +1952 3 -104.15 -102.8 -91.25 0.54 1951 +1953 3 -104.07 -103.86 -91.35 0.54 1952 +1954 3 -104.45 -104.47 -92.03 0.54 1953 +1955 3 -104.81 -105.51 -92.75 0.54 1954 +1956 3 -104.92 -106.98 -93.36 0.54 1955 +1957 3 -105.29 -107.85 -93.61 0.54 1956 +1958 3 -105.24 -108.19 -94.46 0.54 1957 +1959 3 -105.18 -108.49 -95.77 0.54 1958 +1960 3 -105.15 -108.87 -96.19 0.54 1959 +1961 3 -89.59 -39.42 -26.77 0.435 1870 +1962 3 -89.56 -39.53 -27.76 0.435 1961 +1963 3 -90.37 -39.98 -28.13 0.435 1962 +1964 3 -90.98 -40.36 -29.08 0.435 1963 +1965 3 -91.79 -40.73 -30.2 0.435 1964 +1966 3 -92.64 -41.21 -30.27 0.435 1965 +1967 3 -93.68 -41.67 -30.79 0.435 1966 +1968 3 -95.95 -43.02 -31.74 0.435 1967 +1969 3 -97.62 -43.97 -31.96 0.435 1968 +1970 3 -99.09 -44.69 -32.29 0.435 1969 +1971 3 -99.72 -44.91 -32.63 0.435 1970 +1972 3 -99.82 -45.64 -33.01 0.435 1971 +1973 3 -100.84 -46.57 -33.13 0.435 1972 +1974 3 -102.96 -47.34 -33.33 0.435 1973 +1975 3 -102.94 -47.24 -34.3 0.435 1974 +1976 3 -104.01 -47.24 -34.93 0.435 1975 +1977 3 -105.07 -47.5 -35.13 0.435 1976 +1978 3 -106.13 -47.47 -36.06 0.435 1977 +1979 3 -107.51 -46.27 -35.97 0.435 1978 +1980 3 -108.82 -45.89 -36.33 0.435 1979 +1981 3 -110.63 -44.67 -36.55 0.435 1980 +1982 3 -112.17 -44.29 -36.93 0.435 1981 +1983 3 -113.02 -44.03 -37.9 0.435 1982 +1984 3 -113.93 -43.17 -38.37 0.435 1983 +1985 3 -115.29 -41.94 -38.64 0.435 1984 +1986 3 -117.25 -41.52 -39.55 0.435 1985 +1987 3 -118.36 -41.16 -39.54 0.435 1986 +1988 3 -119.26 -40.03 -40.5 0.435 1987 +1989 3 -120.39 -39.46 -40.54 0.435 1988 +1990 3 -120.86 -38.55 -41.06 0.435 1989 +1991 3 -121.96 -37.94 -41.47 0.435 1990 +1992 3 -121.97 -37.43 -42.18 0.435 1991 +1993 3 -122.65 -37.31 -41.73 0.435 1992 +1994 3 -123.55 -36.94 -41.64 0.435 1993 +1995 3 -124.24 -36.35 -41.51 0.435 1994 +1996 3 -124.91 -35.66 -42.21 0.435 1995 +1997 3 -125.56 -35.17 -43.16 0.435 1996 +1998 3 -28.4 -26.9 -0.37 0.54 1815 +1999 3 -29.67 -27.43 -0.15 0.54 1998 +2000 3 -31.37 -27.97 -0.25 0.54 1999 +2001 3 -33.05 -28.72 -0.36 0.54 2000 +2002 3 -34.27 -30.09 -0.46 0.54 2001 +2003 3 -34.25 -30.55 -0.13 0.54 2002 +2004 3 -34.16 -31.84 -0.19 0.54 2003 +2005 3 -34.76 -33.54 1.05 0.54 2004 +2006 3 -34.73 -34.24 1.65 0.54 2005 +2007 3 -35.5 -35.53 0.98 0.54 2006 +2008 3 -36.74 -36.18 0.13 0.54 2007 +2009 3 -38.38 -37.28 -0.77 0.54 2008 +2010 3 -39.59 -38.59 -1.39 0.54 2009 +2011 3 -40.41 -39.27 -1.56 0.54 2010 +2012 3 -41.17 -40.83 -1.74 0.54 2011 +2013 3 -41.78 -41.48 -2.12 0.54 2012 +2014 3 -42.79 -42.63 -2.26 0.54 2013 +2015 3 -44.67 -43.8 -2.43 0.54 2014 +2016 3 -45.9 -44.67 -3.3 0.54 2015 +2017 3 -46.01 -45.92 -3.89 0.54 2016 +2018 3 -45.96 -46.55 -4.09 0.54 2017 +2019 3 -46.75 -47.88 -4.25 0.54 2018 +2020 3 -47.39 -48.98 -2.5 0.54 2019 +2021 3 -48.17 -50.31 -2.65 0.54 2020 +2022 3 -49.0 -51.33 -1.8 0.54 2021 +2023 3 -50.02 -52.49 -1.65 0.54 2022 +2024 3 -50.81 -53.86 -1.57 0.54 2023 +2025 3 -51.17 -55.43 -1.22 0.54 2024 +2026 3 -51.56 -56.12 -1.15 0.54 2025 +2027 3 -52.39 -56.84 -0.95 0.54 2026 +2028 3 -52.8 -57.34 -0.62 0.54 2027 +2029 3 -53.21 -57.83 -0.31 0.54 2028 +2030 3 -53.62 -58.58 0.34 0.54 2029 +2031 3 -53.63 -59.16 1.71 0.54 2030 +2032 3 -54.47 -59.7 2.24 0.54 2031 +2033 3 -54.47 -60.22 3.17 0.54 2032 +2034 3 -54.46 -60.71 3.72 0.54 2033 +2035 3 -54.87 -61.71 4.67 0.54 2034 +2036 3 -55.65 -62.83 4.53 0.54 2035 +2037 3 -56.45 -64.19 4.59 0.54 2036 +2038 3 -56.83 -65.1 4.79 0.54 2037 +2039 3 -57.6 -66.92 5.11 0.54 2038 +2040 3 -58.63 -68.15 5.79 0.54 2039 +2041 3 -59.27 -69.24 7.54 0.54 2040 +2042 3 -3.66 -14.09 -3.89 0.76 1796 +2043 3 -2.93 -15.33 -4.0 0.76 2042 +2044 3 -2.9 -15.76 -3.96 0.76 2043 +2045 3 -2.63 -16.31 -4.77 0.76 2044 +2046 3 -2.41 -16.85 -3.69 0.76 2045 +2047 3 -2.19 -17.34 -2.9 0.76 2046 +2048 3 -1.95 -17.78 -2.79 0.76 2047 +2049 3 -1.73 -18.35 -1.34 0.76 2048 +2050 3 -1.26 -19.25 -0.74 0.76 2049 +2051 3 -0.57 -20.09 -0.51 0.76 2050 +2052 3 -0.09 -20.96 -0.36 0.76 2051 +2053 3 0.37 -21.37 -0.32 0.76 2052 +2054 3 0.6 -21.79 -0.21 0.76 2053 +2055 3 1.29 -22.4 -0.18 0.76 2054 +2056 3 2.21 -23.23 -0.02 0.76 2055 +2057 3 2.66 -23.65 0.09 0.76 2056 +2058 3 3.35 -24.25 0.05 0.76 2057 +2059 3 3.58 -24.72 0.46 0.76 2058 +2060 3 4.04 -25.12 0.49 0.76 2059 +2061 3 4.28 -26.09 1.61 0.65 2060 +2062 3 4.53 -26.49 1.42 0.65 2061 +2063 3 4.76 -26.95 1.76 0.65 2062 +2064 3 5.2 -27.72 3.12 0.65 2063 +2065 3 5.42 -28.21 3.91 0.65 2064 +2066 3 5.43 -28.5 4.62 0.65 2065 +2067 3 5.45 -29.19 5.0 0.65 2066 +2068 3 5.71 -29.85 5.24 0.65 2067 +2069 3 5.93 -30.33 5.88 0.65 2068 +2070 3 5.95 -31.06 6.63 0.65 2069 +2071 3 5.95 -31.32 7.14 0.65 2070 +2072 3 6.19 -31.79 7.55 0.65 2071 +2073 3 6.47 -32.85 7.45 0.65 2072 +2074 3 6.77 -34.12 7.32 0.65 2073 +2075 3 6.81 -34.79 7.47 0.65 2074 +2076 3 7.27 -35.46 7.95 0.65 2075 +2077 3 7.73 -36.08 8.05 0.65 2076 +2078 3 8.43 -36.94 8.28 0.65 2077 +2079 3 8.9 -37.58 8.44 0.65 2078 +2080 3 9.81 -38.7 9.4 0.65 2079 +2081 3 10.05 -39.16 9.73 0.65 2080 +2082 3 10.58 -40.88 9.95 0.65 2081 +2083 3 11.04 -41.53 10.2 0.65 2082 +2084 3 11.3 -42.42 10.56 0.65 2083 +2085 3 11.36 -43.28 10.47 0.65 2084 +2086 3 11.6 -43.72 10.74 0.65 2085 +2087 3 11.83 -44.15 10.85 0.65 2086 +2088 3 12.08 -44.57 10.81 0.65 2087 +2089 4 -1.69 6.41 -3.07 2.06 1 +2090 4 -3.12 8.26 -2.91 1.085 2089 +2091 4 -4.24 9.64 -4.3 0.975 2090 +2092 4 -4.45 10.02 -4.27 0.975 2091 +2093 4 -4.03 10.53 -4.74 0.54 2092 +2094 4 -3.64 11.2 -4.66 0.54 2093 +2095 4 -3.02 11.88 -4.57 0.54 2094 +2096 4 -2.19 12.41 -5.02 0.54 2095 +2097 4 -1.95 13.03 -6.76 0.54 2096 +2098 4 -1.74 13.57 -7.53 0.54 2097 +2099 4 -1.69 13.77 -9.46 0.54 2098 +2100 4 -1.03 13.86 -10.04 0.54 2099 +2101 4 -0.87 14.73 -10.03 0.54 2100 +2102 4 -0.44 15.3 -10.94 0.54 2101 +2103 4 -0.26 16.28 -11.89 0.54 2102 +2104 4 -0.07 17.24 -12.69 0.54 2103 +2105 4 0.13 17.5 -13.03 0.54 2104 +2106 4 0.32 18.25 -13.78 0.54 2105 +2107 4 0.49 19.43 -14.71 0.435 2106 +2108 4 1.33 20.22 -15.43 0.435 2107 +2109 4 1.51 20.86 -15.29 0.435 2108 +2110 4 1.72 21.38 -15.91 0.435 2109 +2111 4 1.92 22.2 -17.41 0.435 2110 +2112 4 2.93 23.86 -18.19 0.435 2111 +2113 4 3.37 24.46 -19.54 0.435 2112 +2114 4 3.97 25.62 -19.94 0.435 2113 +2115 4 4.36 26.61 -20.8 0.435 2114 +2116 4 4.34 27.64 -22.36 0.435 2115 +2117 4 4.66 29.6 -22.15 0.435 2116 +2118 4 4.84 30.31 -22.59 0.435 2117 +2119 4 5.26 31.06 -23.41 0.435 2118 +2120 4 5.46 32.12 -25.1 0.435 2119 +2121 4 6.02 33.71 -25.46 0.435 2120 +2122 4 7.29 34.76 -26.45 0.435 2121 +2123 4 7.92 35.26 -26.76 0.435 2122 +2124 4 9.72 38.56 -28.11 0.435 2123 +2125 4 9.48 38.99 -28.22 0.435 2124 +2126 4 9.67 39.21 -28.04 0.435 2125 +2127 4 10.08 39.67 -28.06 0.435 2126 +2128 4 10.28 40.69 -29.53 0.435 2127 +2129 4 11.11 41.45 -29.96 0.435 2128 +2130 4 11.35 41.81 -31.12 0.435 2129 +2131 4 11.54 42.82 -32.44 0.435 2130 +2132 4 11.49 43.69 -32.5 0.435 2131 +2133 4 12.1 44.39 -32.57 0.435 2132 +2134 4 12.45 46.23 -33.27 0.435 2133 +2135 4 12.45 46.79 -34.5 0.435 2134 +2136 4 12.84 47.74 -35.15 0.435 2135 +2137 4 13.4 49.33 -35.42 0.435 2136 +2138 4 13.62 50.11 -36.55 0.435 2137 +2139 4 14.22 51.07 -37.11 0.435 2138 +2140 4 14.57 52.39 -37.03 0.435 2139 +2141 4 15.12 54.43 -37.49 0.435 2140 +2142 4 15.45 56.3 -38.5 0.435 2141 +2143 4 16.46 58.17 -39.25 0.435 2142 +2144 4 16.78 60.21 -39.87 0.435 2143 +2145 4 17.59 61.64 -40.61 0.435 2144 +2146 4 17.76 62.81 -41.31 0.435 2145 +2147 4 18.54 64.43 -41.73 0.435 2146 +2148 4 19.25 67.35 -42.23 0.435 2147 +2149 4 19.83 68.75 -42.76 0.435 2148 +2150 4 20.79 70.78 -42.9 0.435 2149 +2151 4 22.01 72.14 -42.73 0.435 2150 +2152 4 23.83 74.2 -42.55 0.435 2151 +2153 4 25.66 76.04 -42.32 0.435 2152 +2154 4 27.1 77.41 -42.14 0.435 2153 +2155 4 28.6 77.76 -42.52 0.435 2154 +2156 4 31.63 77.95 -42.43 0.435 2155 +2157 4 32.99 77.17 -42.55 0.435 2156 +2158 4 34.55 76.12 -41.87 0.435 2157 +2159 4 35.47 75.29 -41.71 0.435 2158 +2160 4 36.13 74.29 -39.99 0.435 2159 +2161 4 37.28 73.02 -39.64 0.435 2160 +2162 4 38.45 71.58 -39.76 0.435 2161 +2163 4 38.89 71.08 -38.75 0.435 2162 +2164 4 39.09 70.48 -36.99 0.435 2163 +2165 4 38.69 70.59 -38.35 0.435 2164 +2166 4 39.12 70.33 -37.76 0.435 2165 +2167 4 39.12 70.36 -37.99 0.435 2166 +2168 4 39.37 70.24 -38.67 0.435 2167 +2169 4 39.66 69.99 -40.35 0.435 2168 +2170 4 39.7 70.15 -41.91 0.435 2169 +2171 4 40.18 69.31 -41.91 0.435 2170 +2172 4 40.41 69.1 -41.85 0.435 2171 +2173 4 40.69 68.87 -43.61 0.435 2172 +2174 4 40.98 68.42 -45.45 0.435 2173 +2175 4 41.04 68.35 -46.89 0.435 2174 +2176 4 41.93 68.49 -47.68 0.435 2175 +2177 4 42.42 68.0 -49.01 0.435 2176 +2178 4 42.69 67.68 -50.01 0.435 2177 +2179 4 43.18 67.16 -50.89 0.435 2178 +2180 4 43.65 67.09 -52.08 0.435 2179 +2181 4 43.95 66.87 -54.05 0.435 2180 +2182 4 44.21 66.26 -54.26 0.435 2181 +2183 4 44.69 66.21 -55.54 0.435 2182 +2184 4 45.15 66.37 -56.79 0.435 2183 +2185 4 46.09 65.95 -58.54 0.435 2184 +2186 4 46.76 66.07 -59.27 0.435 2185 +2187 4 48.03 65.53 -57.42 0.435 2186 +2188 4 48.67 66.29 -58.23 0.435 2187 +2189 4 48.86 67.31 -59.39 0.435 2188 +2190 4 49.29 68.12 -60.89 0.435 2189 +2191 4 49.29 68.95 -62.6 0.435 2190 +2192 4 -5.37 10.72 -5.05 0.975 2092 +2193 4 -5.84 11.44 -4.99 0.975 2192 +2194 4 -6.11 13.03 -5.88 0.54 2193 +2195 4 -7.05 14.04 -5.8 0.54 2194 +2196 4 -7.34 15.32 -5.68 0.435 2195 +2197 4 -8.06 16.35 -5.59 0.435 2196 +2198 4 -7.86 17.13 -6.63 0.435 2197 +2199 4 -7.65 17.64 -7.25 0.435 2198 +2200 4 -7.69 18.29 -7.41 0.435 2199 +2201 4 -8.14 18.99 -8.1 0.435 2200 +2202 4 -8.58 19.52 -9.26 0.435 2201 +2203 4 -8.62 20.18 -9.35 0.435 2202 +2204 4 -8.65 20.59 -9.22 0.435 2203 +2205 4 -8.68 21.01 -9.11 0.435 2204 +2206 4 -8.7 21.51 -9.66 0.435 2205 +2207 4 -8.72 22.51 -10.99 0.435 2206 +2208 4 -8.73 23.0 -11.54 0.435 2207 +2209 4 -9.21 23.86 -11.7 0.435 2208 +2210 4 -9.23 24.56 -12.23 0.435 2209 +2211 4 -9.71 25.73 -13.39 0.435 2210 +2212 4 -9.74 26.39 -13.4 0.435 2211 +2213 4 -10.23 27.26 -13.7 0.435 2212 +2214 4 -10.28 28.11 -13.61 0.435 2213 +2215 4 -10.32 28.76 -13.62 0.435 2214 +2216 4 -10.38 29.61 -13.53 0.435 2215 +2217 4 -10.19 30.83 -14.61 0.435 2216 +2218 4 -10.23 31.5 -14.84 0.435 2217 +2219 4 -10.06 32.4 -15.04 0.435 2218 +2220 4 -9.89 33.32 -15.4 0.435 2219 +2221 4 -9.69 34.04 -16.0 0.435 2220 +2222 4 -9.76 35.16 -16.34 0.435 2221 +2223 4 -9.59 36.02 -16.17 0.435 2222 +2224 4 -9.59 36.06 -16.54 0.435 2223 +2225 4 -9.59 36.6 -17.54 0.435 2224 +2226 4 -9.58 36.9 -18.41 0.435 2225 +2227 4 -9.6 37.64 -19.24 0.435 2226 +2228 4 -9.38 38.24 -20.76 0.435 2227 +2229 4 -9.44 39.1 -20.67 0.435 2228 +2230 4 -9.49 39.96 -20.58 0.435 2229 +2231 4 -10.47 41.04 -18.99 0.435 2230 +2232 4 -10.99 42.29 -18.87 0.435 2231 +2233 4 -11.03 43.2 -19.3 0.435 2232 +2234 4 -11.06 44.17 -20.19 0.435 2233 +2235 4 -11.58 45.65 -20.11 0.435 2234 +2236 4 -11.65 46.73 -20.16 0.435 2235 +2237 4 -12.62 48.44 -20.45 0.435 2236 +2238 4 -13.54 49.73 -20.95 0.435 2237 +2239 4 -14.61 52.93 -21.01 0.435 2238 +2240 4 -14.67 54.01 -21.05 0.435 2239 +2241 4 -15.63 55.77 -21.73 0.435 2240 +2242 4 -16.62 58.14 -22.26 0.435 2241 +2243 4 -16.95 60.11 -22.59 0.435 2242 +2244 4 -17.9 61.63 -23.14 0.435 2243 +2245 4 -18.37 62.52 -23.51 0.435 2244 +2246 4 -18.84 63.41 -24.1 0.435 2245 +2247 4 -18.53 65.66 -24.62 0.435 2246 +2248 4 -18.59 66.8 -25.17 0.435 2247 +2249 4 -18.64 67.66 -25.17 0.435 2248 +2250 4 -18.68 68.6 -25.89 0.435 2249 +2251 4 -18.76 69.91 -25.91 0.435 2250 +2252 4 -18.81 70.78 -25.97 0.435 2251 +2253 4 -19.31 72.07 -26.23 0.435 2252 +2254 4 -19.8 72.92 -26.31 0.435 2253 +2255 4 -19.86 73.78 -26.22 0.435 2254 +2256 4 -19.91 74.65 -26.2 0.435 2255 +2257 4 -20.85 76.67 -27.52 0.435 2256 +2258 4 -20.88 77.64 -28.56 0.435 2257 +2259 4 -20.66 77.98 -29.57 0.435 2258 +2260 4 -20.68 78.7 -30.25 0.435 2259 +2261 4 -21.2 80.23 -30.63 0.435 2260 +2262 4 -21.68 81.32 -30.98 0.435 2261 +2263 4 -23.31 83.19 -31.13 0.435 2262 +2264 4 -23.81 84.49 -31.53 0.435 2263 +2265 4 -24.84 87.05 -31.59 0.435 2264 +2266 4 -25.64 89.35 -31.37 0.435 2265 +2267 4 -26.13 90.18 -31.15 0.435 2266 +2268 4 -26.85 91.2 -30.99 0.435 2267 +2269 4 -27.35 92.51 -31.39 0.435 2268 +2270 4 -27.8 93.24 -32.38 0.435 2269 +2271 4 -28.95 94.5 -32.66 0.435 2270 +2272 4 -30.19 97.06 -33.01 0.435 2271 +2273 4 -31.12 98.33 -33.14 0.435 2272 +2274 4 -32.78 100.63 -33.39 0.435 2273 +2275 4 -33.34 102.76 -33.25 0.435 2274 +2276 4 -34.31 104.46 -33.55 0.435 2275 +2277 4 -34.41 106.22 -33.83 0.435 2276 +2278 4 -36.15 109.81 -33.88 0.435 2277 +2279 4 -36.75 112.63 -34.12 0.435 2278 +2280 4 -36.89 115.02 -34.26 0.435 2279 +2281 4 -38.78 117.5 -34.12 0.435 2280 +2282 4 -40.66 119.53 -33.95 0.435 2281 +2283 4 -41.7 122.48 -33.67 0.435 2282 +2284 4 -42.3 125.02 -33.43 0.435 2283 +2285 4 -42.41 126.73 -33.25 0.435 2284 +2286 4 -44.52 129.19 -33.05 0.435 2285 +2287 4 -45.04 130.45 -32.93 0.435 2286 +2288 4 -45.01 130.82 -34.55 0.435 2287 +2289 4 -45.71 131.42 -34.35 0.435 2288 +2290 4 -45.73 131.85 -34.31 0.435 2289 +2291 4 -46.86 132.67 -34.55 0.435 2290 +2292 4 -7.72 38.87 -19.52 0.435 2227 +2293 4 -7.35 40.26 -20.05 0.435 2292 +2294 4 -6.26 40.67 -21.26 0.435 2293 +2295 4 -6.06 41.37 -21.63 0.435 2294 +2296 4 -5.92 42.75 -22.31 0.435 2295 +2297 4 -5.94 43.48 -23.07 0.435 2296 +2298 4 -6.57 43.52 -23.91 0.435 2297 +2299 4 -6.39 44.47 -24.49 0.435 2298 +2300 4 -5.99 45.22 -25.16 0.435 2299 +2301 4 -5.79 45.93 -25.6 0.435 2300 +2302 4 -5.61 46.89 -26.48 0.435 2301 +2303 4 -5.42 47.65 -27.3 0.435 2302 +2304 4 -5.03 48.82 -27.92 0.435 2303 +2305 4 -4.88 49.94 -28.1 0.435 2304 +2306 4 -5.11 50.64 -28.79 0.435 2305 +2307 4 -5.83 51.67 -28.78 0.435 2306 +2308 4 -5.85 52.14 -29.1 0.435 2307 +2309 4 -5.65 52.9 -30.01 0.435 2308 +2310 4 -5.62 53.06 -31.57 0.435 2309 +2311 4 -6.06 53.52 -32.13 0.435 2310 +2312 4 -6.68 53.61 -33.34 0.435 2311 +2313 4 -7.13 54.29 -33.89 0.435 2312 +2314 4 -7.13 54.6 -34.76 0.435 2313 +2315 4 -7.75 54.39 -35.25 0.435 2314 +2316 4 -7.37 55.59 -36.09 0.435 2315 +2317 4 -7.55 55.22 -36.89 0.435 2316 +2318 4 -7.53 55.85 -38.78 0.435 2317 +2319 4 -7.4 57.36 -38.63 0.435 2318 +2320 4 -7.41 57.84 -39.1 0.435 2319 +2321 4 -8.06 58.1 -39.09 0.435 2320 +2322 4 -8.96 58.49 -39.07 0.435 2321 +2323 4 -9.89 59.28 -39.01 0.435 2322 +2324 4 -9.96 60.04 -37.96 0.435 2323 +2325 4 -10.89 60.48 -36.42 0.435 2324 +2326 4 -10.9 60.77 -37.07 0.435 2325 +2327 4 -11.34 60.74 -37.01 0.435 2326 +2328 4 -11.57 61.42 -37.62 0.435 2327 +2329 4 -11.57 61.73 -38.49 0.435 2328 +2330 4 -11.55 62.08 -39.74 0.435 2329 +2331 4 -11.58 62.78 -40.2 0.435 2330 +2332 4 -11.55 63.15 -41.66 0.435 2331 +2333 4 -11.99 63.69 -42.98 0.435 2332 +2334 4 -11.79 64.14 -43.08 0.435 2333 +2335 4 -11.61 65.09 -43.73 0.435 2334 +2336 4 -11.41 65.59 -44.19 0.435 2335 +2337 4 -11.19 66.17 -45.49 0.435 2336 +2338 4 -10.56 66.71 -46.1 0.435 2337 +2339 4 -10.39 67.6 -46.3 0.435 2338 +2340 4 -10.36 67.74 -47.64 0.435 2339 +2341 4 -10.15 68.52 -48.76 0.435 2340 +2342 4 -10.16 68.8 -49.41 0.435 2341 +2343 4 -10.18 69.8 -50.67 0.435 2342 +2344 4 -10.01 70.93 -51.0 0.435 2343 +2345 4 -10.07 71.79 -50.91 0.435 2344 +2346 4 -10.53 72.49 -51.6 0.435 2345 +2347 4 -10.6 74.04 -51.97 0.435 2346 +2348 4 -10.66 75.45 -53.1 0.435 2347 +2349 4 -10.14 77.66 -53.09 0.435 2348 +2350 4 -10.15 78.17 -53.86 0.435 2349 +2351 4 -10.18 78.85 -54.1 0.435 2350 +2352 4 -9.36 79.85 -54.88 0.435 2351 +2353 4 -9.34 79.92 -55.62 0.435 2352 +2354 4 -9.15 80.63 -56.08 0.435 2353 +2355 4 -9.17 81.35 -56.68 0.435 2354 +2356 4 -9.21 82.27 -57.26 0.435 2355 +2357 4 -9.01 82.76 -57.74 0.435 2356 +2358 4 -9.33 84.48 -57.72 0.435 2357 +2359 4 -8.69 84.81 -58.34 0.435 2358 +2360 4 -8.73 85.73 -58.85 0.435 2359 +2361 4 -8.74 86.25 -59.63 0.435 2360 +2362 4 -7.96 87.81 -59.67 0.435 2361 +2363 4 -10.09 19.69 -9.8 0.435 2202 +2364 4 -11.18 19.93 -10.64 0.435 2363 +2365 4 -12.26 20.12 -11.1 0.435 2364 +2366 4 -13.38 20.97 -11.64 0.435 2365 +2367 4 -14.08 22.3 -12.34 0.435 2366 +2368 4 -14.76 22.99 -12.96 0.435 2367 +2369 4 -14.53 23.1 -14.0 0.435 2368 +2370 4 -14.51 23.15 -14.45 0.435 2369 +2371 4 -14.93 23.71 -15.99 0.435 2370 +2372 4 -14.93 24.54 -17.71 0.435 2371 +2373 4 -16.27 25.38 -18.18 0.435 2372 +2374 4 -16.25 25.48 -19.15 0.435 2373 +2375 4 -17.13 25.93 -19.95 0.435 2374 +2376 4 -17.34 26.47 -21.11 0.435 2375 +2377 4 -17.78 27.24 -22.47 0.435 2376 +2378 4 -17.77 27.55 -23.41 0.435 2377 +2379 4 -18.66 28.17 -23.75 0.435 2378 +2380 4 -18.67 28.39 -23.73 0.435 2379 +2381 4 -18.83 28.11 -25.34 0.435 2380 +2382 4 -19.26 28.09 -25.35 0.435 2381 +2383 4 -19.68 27.86 -25.54 0.435 2382 +2384 4 -19.67 27.9 -25.98 0.435 2383 +2385 4 -20.08 27.96 -26.82 0.435 2384 +2386 4 -20.05 28.1 -28.17 0.435 2385 +2387 4 -20.46 28.13 -28.69 0.435 2386 +2388 4 -20.92 28.86 -29.69 0.435 2387 +2389 4 -21.75 28.63 -30.1 0.435 2388 +2390 4 -22.38 28.67 -30.95 0.435 2389 +2391 4 -22.86 29.58 -31.54 0.435 2390 +2392 4 -23.71 29.59 -32.24 0.435 2391 +2393 4 -25.0 30.04 -33.2 0.435 2392 +2394 4 -25.22 30.02 -33.21 0.435 2393 +2395 4 -26.1 30.49 -34.01 0.435 2394 +2396 4 -26.52 30.5 -34.4 0.435 2395 +2397 4 -26.71 30.32 -34.87 0.435 2396 +2398 4 -28.25 31.19 -35.87 0.435 2397 +2399 4 -28.67 31.53 -37.36 0.435 2398 +2400 4 -28.69 31.98 -37.53 0.435 2399 +2401 4 -28.67 32.07 -38.36 0.435 2400 +2402 4 -29.1 32.31 -38.86 0.435 2401 +2403 4 -29.1 32.58 -39.29 0.435 2402 +2404 4 -29.99 32.98 -39.64 0.435 2403 +2405 4 -29.98 33.02 -40.02 0.435 2404 +2406 4 -30.19 33.59 -41.39 0.435 2405 +2407 4 -30.84 33.78 -41.69 0.435 2406 +2408 4 -30.85 34.33 -42.69 0.435 2407 +2409 4 -31.32 34.97 -42.94 0.435 2408 +2410 4 -31.97 35.18 -43.23 0.435 2409 +2411 4 -32.64 35.6 -43.51 0.435 2410 +2412 4 -33.09 36.03 -43.7 0.435 2411 +2413 4 -33.08 36.08 -44.22 0.435 2412 +2414 4 -33.1 36.54 -44.56 0.435 2413 +2415 4 -33.52 36.8 -45.21 0.435 2414 +2416 4 -34.19 37.24 -45.64 0.435 2415 +2417 4 -34.83 37.23 -46.02 0.435 2416 +2418 4 -35.24 37.11 -47.18 0.435 2417 +2419 4 -35.43 36.89 -47.28 0.435 2418 +2420 4 -36.32 37.28 -47.34 0.435 2419 +2421 4 -36.97 37.24 -47.43 0.435 2420 +2422 4 -37.17 37.57 -48.69 0.435 2421 +2423 4 -36.98 38.0 -48.41 0.435 2422 +2424 4 -38.03 37.75 -48.91 0.435 2423 +2425 4 -38.05 38.22 -49.25 0.435 2424 +2426 4 -38.48 38.54 -50.42 0.435 2425 +2427 4 -38.51 39.49 -51.31 0.435 2426 +2428 4 -38.49 39.61 -52.42 0.435 2427 +2429 4 -38.93 40.33 -53.34 0.435 2428 +2430 4 -38.91 40.41 -54.16 0.435 2429 +2431 4 -38.94 41.15 -54.99 0.435 2430 +2432 4 -39.0 42.49 -55.45 0.435 2431 +2433 4 -39.47 43.12 -55.55 0.435 2432 +2434 4 -40.35 43.8 -56.25 0.435 2433 +2435 4 -40.39 44.49 -56.71 0.435 2434 +2436 4 -41.96 45.27 -56.81 0.435 2435 +2437 4 -42.16 45.32 -57.35 0.435 2436 +2438 4 -43.02 45.77 -58.15 0.435 2437 +2439 4 -43.24 45.8 -58.53 0.435 2438 +2440 4 -44.14 46.63 -58.77 0.435 2439 +2441 4 -44.78 46.64 -59.23 0.435 2440 +2442 4 -6.88 11.21 -6.39 0.76 2193 +2443 4 -9.07 12.29 -7.91 0.76 2442 +2444 4 -10.02 13.21 -6.78 0.65 2443 +2445 4 -10.7 13.6 -6.76 0.65 2444 +2446 4 -11.62 14.4 -6.7 0.65 2445 +2447 4 -12.57 15.9 -7.02 0.65 2446 +2448 4 -13.29 16.96 -7.23 0.65 2447 +2449 4 -13.52 17.65 -7.76 0.65 2448 +2450 4 -14.46 18.7 -7.98 0.65 2449 +2451 4 -14.93 19.59 -8.42 0.65 2450 +2452 4 -14.95 20.33 -9.33 0.65 2451 +2453 4 -15.46 21.6 -9.36 0.65 2452 +2454 4 -15.95 22.69 -9.63 0.65 2453 +2455 4 -16.89 23.72 -9.63 0.65 2454 +2456 4 -18.03 24.74 -9.7 0.65 2455 +2457 4 -19.38 25.78 -10.15 0.65 2456 +2458 4 -20.76 27.01 -10.28 0.65 2457 +2459 4 -21.3 28.7 -10.12 0.65 2458 +2460 4 -21.9 31.26 -10.02 0.65 2459 +2461 4 -22.63 32.52 -10.13 0.54 2460 +2462 4 -22.8 35.31 -9.85 0.54 2461 +2463 4 -23.63 38.3 -9.79 0.54 2462 +2464 4 -23.86 38.8 -9.74 0.54 2463 +2465 4 -24.5 39.31 -10.91 0.435 2464 +2466 4 -25.42 39.9 -10.79 0.435 2465 +2467 4 -25.43 40.1 -10.62 0.435 2466 +2468 4 -26.1 40.52 -10.89 0.435 2467 +2469 4 -26.31 40.52 -10.98 0.435 2468 +2470 4 -26.76 40.99 -11.77 0.435 2469 +2471 4 -27.45 41.88 -12.36 0.435 2470 +2472 4 -27.42 41.98 -13.34 0.435 2471 +2473 4 -27.63 42.25 -13.92 0.435 2472 +2474 4 -28.12 43.36 -14.49 0.435 2473 +2475 4 -29.69 44.4 -14.95 0.435 2474 +2476 4 -30.19 45.74 -15.65 0.325 2475 +2477 4 -31.06 46.18 -16.3 0.325 2476 +2478 4 -31.53 46.83 -16.54 0.325 2477 +2479 4 -32.21 47.73 -17.3 0.325 2478 +2480 4 -33.11 48.61 -17.91 0.325 2479 +2481 4 -33.59 49.51 -18.58 0.325 2480 +2482 4 -35.38 50.74 -18.87 0.325 2481 +2483 4 -36.05 51.17 -19.3 0.325 2482 +2484 4 -37.89 52.78 -19.25 0.325 2483 +2485 4 -39.26 54.53 -20.15 0.325 2484 +2486 4 -39.95 55.4 -20.68 0.325 2485 +2487 4 -41.54 56.92 -21.54 0.325 2486 +2488 4 -42.64 57.34 -22.05 0.325 2487 +2489 4 -43.55 58.2 -22.51 0.325 2488 +2490 4 -45.35 59.42 -22.96 0.325 2489 +2491 4 -48.0 60.65 -23.8 0.325 2490 +2492 4 -49.56 61.5 -24.65 0.325 2491 +2493 4 -50.24 62.11 -24.68 0.325 2492 +2494 4 -52.9 63.27 -24.92 0.325 2493 +2495 4 -55.35 64.75 -26.03 0.325 2494 +2496 4 -56.93 66.04 -26.84 0.325 2495 +2497 4 -58.95 67.22 -26.99 0.325 2496 +2498 4 -60.52 68.5 -27.73 0.325 2497 +2499 4 -61.86 69.33 -28.13 0.325 2498 +2500 4 -63.86 70.59 -28.95 0.325 2499 +2501 4 -65.17 71.02 -29.69 0.325 2500 +2502 4 -66.26 70.98 -30.09 0.325 2501 +2503 4 -66.67 71.03 -30.78 0.325 2502 +2504 4 -67.51 71.1 -31.99 0.325 2503 +2505 4 -68.56 70.89 -32.72 0.325 2504 +2506 4 -68.96 70.7 -33.2 0.325 2505 +2507 4 -69.15 70.81 -34.47 0.325 2506 +2508 4 -24.69 41.48 -9.79 0.54 2464 +2509 4 -25.39 45.75 -9.43 0.54 2508 +2510 4 -26.04 48.94 -9.12 0.54 2509 +2511 4 -27.54 52.08 -8.91 0.54 2510 +2512 4 -28.85 55.65 -8.57 0.54 2511 +2513 4 -30.58 59.0 -8.26 0.54 2512 +2514 4 -30.75 61.56 -8.0 0.54 2513 +2515 4 -31.61 64.74 -7.69 0.54 2514 +2516 4 -32.05 65.78 -8.72 0.435 2515 +2517 4 -33.21 67.0 -8.62 0.435 2516 +2518 4 -33.25 67.61 -8.26 0.435 2517 +2519 4 -34.6 68.69 -9.08 0.435 2518 +2520 4 -34.64 69.87 -9.94 0.435 2519 +2521 4 -34.68 70.79 -10.53 0.435 2520 +2522 4 -34.71 71.75 -11.41 0.435 2521 +2523 4 -35.45 73.27 -11.8 0.435 2522 +2524 4 -36.43 75.46 -12.65 0.435 2523 +2525 4 -37.63 77.87 -13.56 0.435 2524 +2526 4 -38.42 80.0 -13.58 0.435 2525 +2527 4 -39.58 81.52 -14.28 0.435 2526 +2528 4 -39.79 82.04 -15.36 0.435 2527 +2529 4 -40.75 83.24 -14.95 0.435 2528 +2530 4 -41.24 84.3 -14.94 0.435 2529 +2531 4 -41.75 85.59 -15.12 0.435 2530 +2532 4 -42.22 86.49 -15.71 0.435 2531 +2533 4 -43.15 87.84 -16.73 0.435 2532 +2534 4 -42.99 89.21 -17.26 0.435 2533 +2535 4 -45.58 92.8 -17.85 0.435 2534 +2536 4 -47.01 95.38 -18.52 0.435 2535 +2537 4 -48.22 97.31 -18.96 0.435 2536 +2538 4 -49.12 98.41 -19.62 0.435 2537 +2539 4 -49.67 100.34 -19.8 0.435 2538 +2540 4 -50.17 101.65 -20.21 0.435 2539 +2541 4 -50.9 103.21 -20.97 0.435 2540 +2542 4 -51.84 104.74 -21.66 0.435 2541 +2543 4 -51.94 106.51 -22.08 0.435 2542 +2544 4 -52.98 109.5 -22.25 0.435 2543 +2545 4 -54.16 111.44 -22.75 0.435 2544 +2546 4 -54.87 112.8 -23.83 0.435 2545 +2547 4 -56.75 115.06 -23.65 0.435 2546 +2548 4 -57.75 117.16 -23.6 0.435 2547 +2549 4 -58.29 118.89 -23.82 0.435 2548 +2550 4 -59.25 120.58 -23.97 0.435 2549 +2551 4 -60.47 122.69 -24.08 0.435 2550 +2552 4 -62.55 124.71 -23.92 0.435 2551 +2553 4 -64.6 126.32 -23.87 0.435 2552 +2554 4 -65.99 127.74 -23.76 0.435 2553 +2555 4 -10.59 12.43 -8.01 0.54 2443 +2556 4 -12.47 11.52 -8.75 0.54 2555 +2557 4 -14.18 10.98 -8.84 0.54 2556 +2558 4 -16.11 10.66 -9.0 0.54 2557 +2559 4 -17.64 11.29 -9.8 0.54 2558 +2560 4 -20.23 11.14 -9.87 0.54 2559 +2561 4 -21.95 10.81 -9.95 0.54 2560 +2562 4 -24.78 11.07 -9.99 0.54 2561 +2563 4 -30.29 12.82 -11.29 0.54 2562 +2564 4 -31.62 13.39 -11.42 0.54 2563 +2565 4 -32.79 14.82 -11.3 0.54 2564 +2566 4 -34.55 15.14 -11.31 0.54 2565 +2567 4 -37.17 15.42 -11.34 0.54 2566 +2568 4 -38.72 15.97 -11.32 0.435 2567 +2569 4 -40.34 17.37 -11.21 0.435 2568 +2570 4 -40.87 19.06 -11.05 0.435 2569 +2571 4 -42.04 20.28 -10.95 0.435 2570 +2572 4 -44.05 21.22 -10.9 0.435 2571 +2573 4 -46.75 22.79 -10.8 0.435 2572 +2574 4 -48.18 24.63 -10.65 0.435 2573 +2575 4 -49.51 26.02 -12.19 0.435 2574 +2576 4 -51.34 27.41 -12.09 0.435 2575 +2577 4 -52.5 27.85 -10.72 0.435 2576 +2578 4 -53.43 28.87 -10.63 0.435 2577 +2579 4 -54.38 30.32 -10.51 0.435 2578 +2580 4 -54.76 32.11 -9.2 0.435 2579 +2581 4 -56.21 34.39 -8.92 0.435 2580 +2582 4 -57.23 36.41 -8.13 0.435 2581 +2583 4 -58.2 38.07 -7.91 0.435 2582 +2584 4 -60.1 39.69 -5.83 0.435 2583 +2585 4 -61.27 40.31 -4.21 0.435 2584 +2586 4 -61.99 41.34 -4.13 0.435 2585 +2587 4 -62.47 42.19 -4.2 0.435 2586 +2588 4 -62.97 43.24 -4.1 0.435 2587 +2589 4 -63.86 43.6 -4.01 0.435 2588 +2590 4 -64.93 43.28 -3.61 0.435 2589 +2591 4 -65.77 42.56 -3.49 0.435 2590 +2592 4 -66.63 42.26 -3.24 0.435 2591 +2593 4 -67.18 42.89 -3.18 0.435 2592 +2594 4 -68.05 42.83 -3.13 0.435 2593 +2595 4 -68.52 43.45 -3.16 0.435 2594 +2596 4 -70.61 42.79 -4.48 0.435 2595 +2597 4 -71.47 42.55 -4.68 0.435 2596 +2598 4 -72.13 42.47 -4.32 0.435 2597 +2599 4 -73.17 41.71 -3.9 0.435 2598 +2600 4 -74.92 42.02 -3.91 0.435 2599 +2601 4 -75.85 42.81 -3.7 0.435 2600 +2602 4 -76.78 43.62 -3.56 0.435 2601 +2603 4 -77.69 44.12 -2.62 0.435 2602 +2604 4 -79.0 44.03 -2.51 0.435 2603 +2605 4 -79.27 44.03 -0.72 0.435 2604 +2606 4 -80.38 44.39 -0.7 0.435 2605 +2607 4 -80.59 44.4 -0.93 0.435 2606 +2608 4 -80.79 44.49 -1.98 0.435 2607 +2609 4 -81.02 44.91 -1.94 0.435 2608 +2610 4 -81.51 44.93 -0.22 0.435 2609 +2611 4 -81.76 44.77 1.18 0.435 2610 +2612 4 -82.24 45.04 2.41 0.435 2611 +2613 4 -82.5 45.16 3.24 0.435 2612 +2614 4 -82.56 45.71 4.13 0.435 2613 +2615 4 -83.1 47.14 4.85 0.435 2614 +2616 4 -83.58 47.72 5.21 0.435 2615 +2617 4 -84.26 48.09 5.31 0.435 2616 +2618 4 -85.57 47.97 5.72 0.435 2617 +2619 4 -87.37 48.93 5.84 0.435 2618 +2620 4 -88.9 49.05 5.82 0.435 2619 +2621 4 -90.44 49.35 6.2 0.435 2620 +2622 4 -91.98 49.68 6.27 0.435 2621 +2623 4 -93.13 50.66 6.57 0.435 2622 +2624 4 -94.31 51.87 6.82 0.435 2623 +2625 4 -94.99 52.24 6.99 0.435 2624 +2626 4 -95.45 52.6 7.39 0.435 2625 +2627 4 3.0 7.07 -2.66 3.035 1 +2628 4 2.98 7.28 -2.64 3.035 2627 +2629 4 3.48 9.68 -2.38 2.6 2628 +2630 4 4.2 11.88 -2.14 2.385 2629 +2631 4 4.5 14.03 -1.84 2.165 2630 +2632 4 5.01 16.22 -1.6 2.275 2631 +2633 4 4.91 18.79 -1.34 2.275 2632 +2634 4 5.35 19.38 -2.54 0.325 2633 +2635 4 6.38 20.08 -2.36 0.325 2634 +2636 4 6.81 20.1 -2.28 0.325 2635 +2637 4 7.24 20.62 -2.89 0.325 2636 +2638 4 7.47 20.74 -3.86 0.325 2637 +2639 4 7.88 21.71 -4.57 0.325 2638 +2640 4 8.29 22.21 -5.05 0.325 2639 +2641 4 8.72 22.29 -5.48 0.325 2640 +2642 4 9.13 22.97 -5.47 0.325 2641 +2643 4 9.73 23.65 -5.39 0.435 2642 +2644 4 10.73 24.99 -5.22 0.435 2643 +2645 4 11.24 27.18 -4.98 0.435 2644 +2646 4 11.42 27.83 -4.91 0.435 2645 +2647 4 11.81 28.81 -5.79 0.435 2646 +2648 4 12.47 29.42 -6.99 0.435 2647 +2649 4 13.07 30.91 -8.4 0.435 2648 +2650 4 13.46 31.59 -8.47 0.435 2649 +2651 4 13.72 31.76 -10.1 0.435 2650 +2652 4 14.88 34.0 -9.92 0.435 2651 +2653 4 16.1 35.4 -10.05 0.435 2652 +2654 4 16.73 36.17 -10.85 0.435 2653 +2655 4 17.16 36.23 -11.22 0.435 2654 +2656 4 17.37 37.27 -12.69 0.435 2655 +2657 4 17.75 38.19 -12.96 0.435 2656 +2658 4 18.17 38.67 -13.2 0.435 2657 +2659 4 18.35 39.89 -14.43 0.435 2658 +2660 4 18.52 40.81 -14.78 0.435 2659 +2661 4 18.5 41.57 -15.83 0.435 2660 +2662 4 18.49 42.34 -16.96 0.435 2661 +2663 4 18.68 43.06 -17.48 0.435 2662 +2664 4 19.01 45.1 -18.17 0.435 2663 +2665 4 19.33 46.85 -18.05 0.435 2664 +2666 4 19.8 47.26 -19.66 0.435 2665 +2667 4 20.15 48.07 -18.96 0.435 2666 +2668 4 20.74 49.19 -18.76 0.435 2667 +2669 4 21.11 50.08 -18.66 0.435 2668 +2670 4 21.73 51.13 -20.12 0.435 2669 +2671 4 21.96 51.95 -21.69 0.435 2670 +2672 4 22.08 53.47 -21.6 0.435 2671 +2673 4 22.66 54.59 -21.47 0.435 2672 +2674 4 22.99 56.11 -21.3 0.435 2673 +2675 4 23.38 57.02 -21.5 0.435 2674 +2676 4 23.55 57.93 -21.78 0.435 2675 +2677 4 23.74 58.91 -22.65 0.435 2676 +2678 4 24.33 60.07 -23.12 0.435 2677 +2679 4 24.5 60.77 -23.43 0.435 2678 +2680 4 5.64 19.91 -1.2 2.275 2633 +2681 4 5.48 22.49 -0.94 2.275 2680 +2682 4 5.36 24.41 -0.74 2.275 2681 +2683 4 5.46 26.14 -0.56 2.275 2682 +2684 4 5.78 27.88 -0.38 2.275 2683 +2685 4 5.94 28.84 -0.27 2.275 2684 +2686 4 5.28 28.75 0.23 0.54 2685 +2687 4 4.63 28.71 0.21 0.54 2686 +2688 4 4.42 28.71 0.12 0.54 2687 +2689 4 4.16 29.07 0.61 0.54 2688 +2690 4 2.59 29.3 1.73 0.54 2689 +2691 4 2.12 29.65 2.21 0.54 2690 +2692 4 1.04 29.55 2.54 0.54 2691 +2693 4 0.08 29.95 4.37 0.435 2692 +2694 4 -0.79 30.33 4.39 0.435 2693 +2695 4 -0.8 30.56 4.19 0.435 2694 +2696 4 -1.48 30.95 4.29 0.435 2695 +2697 4 -2.2 31.69 5.1 0.435 2696 +2698 4 -3.14 32.4 6.06 0.435 2697 +2699 4 -3.86 33.15 6.79 0.435 2698 +2700 4 -3.89 33.56 6.98 0.435 2699 +2701 4 -3.94 34.19 7.2 0.435 2700 +2702 4 -4.86 34.74 7.69 0.435 2701 +2703 4 -5.96 35.11 7.55 0.435 2702 +2704 4 -6.0 35.49 8.12 0.435 2703 +2705 4 -6.51 35.91 10.11 0.435 2704 +2706 4 -7.45 36.38 11.18 0.435 2705 +2707 4 -8.38 36.89 11.97 0.435 2706 +2708 4 -9.56 38.04 12.81 0.435 2707 +2709 4 -10.75 39.63 13.4 0.435 2708 +2710 4 -11.26 40.38 14.37 0.435 2709 +2711 4 -12.21 41.36 14.9 0.435 2710 +2712 4 -12.71 42.11 15.65 0.435 2711 +2713 4 -13.44 42.8 16.98 0.435 2712 +2714 4 -13.96 43.76 17.9 0.435 2713 +2715 4 -15.11 44.23 18.97 0.435 2714 +2716 4 -16.25 44.45 20.26 0.435 2715 +2717 4 -17.65 46.1 20.39 0.435 2716 +2718 4 -17.68 46.53 20.44 0.435 2717 +2719 4 -18.21 47.43 21.8 0.435 2718 +2720 4 -19.14 47.96 22.51 0.435 2719 +2721 4 -19.41 48.52 23.24 0.435 2720 +2722 4 -19.95 49.4 24.83 0.435 2721 +2723 4 -20.88 50.36 25.51 0.435 2722 +2724 4 -22.09 51.74 26.14 0.435 2723 +2725 4 -23.0 52.52 26.5 0.435 2724 +2726 4 -23.95 53.73 26.76 0.435 2725 +2727 4 -25.35 54.88 27.45 0.435 2726 +2728 4 -25.88 56.08 28.16 0.435 2727 +2729 4 -27.31 57.85 29.06 0.435 2728 +2730 4 -29.43 59.99 30.14 0.435 2729 +2731 4 -31.52 62.0 30.45 0.435 2730 +2732 4 -33.11 62.97 30.58 0.435 2731 +2733 4 -34.12 65.28 30.8 0.435 2732 +2734 4 -36.02 67.96 31.03 0.435 2733 +2735 4 -37.7 70.21 31.22 0.435 2734 +2736 4 -39.61 73.12 31.48 0.435 2735 +2737 4 -41.94 75.56 31.68 0.435 2736 +2738 4 -42.55 78.31 31.95 0.435 2737 +2739 4 -44.88 80.98 32.17 0.435 2738 +2740 4 -47.95 84.66 32.48 0.435 2739 +2741 4 -49.78 86.26 32.6 0.435 2740 +2742 4 -50.31 87.47 33.24 0.435 2741 +2743 4 -50.89 89.29 34.17 0.435 2742 +2744 4 -52.06 90.42 35.24 0.435 2743 +2745 4 -53.98 92.83 35.97 0.435 2744 +2746 4 -55.83 94.64 36.12 0.435 2745 +2747 4 -57.89 96.23 36.31 0.435 2746 +2748 4 -59.06 97.68 36.43 0.435 2747 +2749 4 -60.07 99.75 36.62 0.435 2748 +2750 4 -61.49 101.57 37.15 0.435 2749 +2751 4 -63.0 104.69 37.59 0.435 2750 +2752 4 -63.54 106.1 38.25 0.435 2751 +2753 4 -64.52 107.47 39.12 0.435 2752 +2754 4 -65.05 108.64 40.13 0.435 2753 +2755 4 -65.13 109.67 40.69 0.435 2754 +2756 4 -65.66 110.64 41.53 0.435 2755 +2757 4 -66.17 111.89 41.72 0.435 2756 +2758 4 -66.25 112.88 42.58 0.435 2757 +2759 4 -66.75 113.66 43.1 0.435 2758 +2760 4 -66.82 114.72 43.36 0.435 2759 +2761 4 -67.77 115.69 43.89 0.435 2760 +2762 4 -68.89 116.26 44.07 0.435 2761 +2763 4 -69.21 117.44 45.02 0.435 2762 +2764 4 -69.94 118.45 45.26 0.435 2763 +2765 4 -69.81 119.72 45.69 0.435 2764 +2766 4 -15.97 43.66 19.73 0.435 2715 +2767 4 -16.79 42.96 19.64 0.435 2766 +2768 4 -17.44 42.62 20.49 0.435 2767 +2769 4 -18.28 42.12 20.64 0.435 2768 +2770 4 -19.6 41.98 21.13 0.435 2769 +2771 4 -20.29 42.3 21.82 0.435 2770 +2772 4 -20.98 42.08 23.51 0.435 2771 +2773 4 -22.1 42.38 24.2 0.435 2772 +2774 4 -22.98 42.01 25.11 0.435 2773 +2775 4 -23.41 41.7 25.76 0.435 2774 +2776 4 -24.25 40.89 26.78 0.435 2775 +2777 4 -25.71 39.72 26.77 0.435 2776 +2778 4 -26.52 38.57 26.87 0.435 2777 +2779 4 -26.89 37.39 27.48 0.435 2778 +2780 4 -28.8 36.6 27.65 0.435 2779 +2781 4 -29.2 35.64 28.3 0.435 2780 +2782 4 -30.48 35.08 28.75 0.435 2781 +2783 4 -30.93 34.72 29.82 0.435 2782 +2784 4 -31.32 34.29 29.47 0.435 2783 +2785 4 -31.35 34.2 30.36 0.435 2784 +2786 4 -31.78 33.59 31.8 0.435 2785 +2787 4 -32.43 33.01 32.93 0.435 2786 +2788 4 -33.27 32.26 33.29 0.435 2787 +2789 4 -33.52 32.37 34.2 0.435 2788 +2790 4 6.3 30.1 -0.5 2.06 2685 +2791 4 6.21 32.13 -1.27 2.06 2790 +2792 4 6.31 33.86 -1.09 1.95 2791 +2793 4 6.23 35.76 -2.71 1.95 2792 +2794 4 6.32 37.92 -2.48 1.95 2793 +2795 4 6.01 39.27 -2.35 1.95 2794 +2796 4 5.11 39.05 -0.73 0.435 2795 +2797 4 4.71 38.83 -0.92 0.435 2796 +2798 4 4.27 38.81 -1.01 0.435 2797 +2799 4 3.83 38.75 -0.72 0.435 2798 +2800 4 2.99 38.26 -0.64 0.54 2799 +2801 4 1.74 37.32 -0.77 0.54 2800 +2802 4 0.47 36.55 -0.28 0.54 2801 +2803 4 0.01 36.37 1.11 0.54 2802 +2804 4 -0.41 36.04 1.9 0.54 2803 +2805 4 -1.24 35.32 2.03 0.54 2804 +2806 4 -2.32 35.03 2.12 0.54 2805 +2807 4 -3.16 34.49 2.58 0.54 2806 +2808 4 -3.56 33.53 3.23 0.54 2807 +2809 4 -3.97 33.05 3.47 0.54 2808 +2810 4 -4.65 33.43 3.49 0.54 2809 +2811 4 -4.56 34.54 5.49 0.435 2810 +2812 4 -4.38 35.2 5.56 0.435 2811 +2813 4 -4.41 35.35 6.18 0.435 2812 +2814 4 -4.49 36.09 7.31 0.435 2813 +2815 4 -4.53 36.44 8.1 0.435 2814 +2816 4 -5.02 36.78 8.88 0.435 2815 +2817 4 -5.07 37.4 9.09 0.435 2816 +2818 4 -4.3 38.92 9.64 0.435 2817 +2819 4 -4.98 39.28 9.96 0.435 2818 +2820 4 -5.46 40.11 10.04 0.435 2819 +2821 4 -5.95 40.72 10.09 0.435 2820 +2822 4 -6.91 42.38 10.24 0.435 2821 +2823 4 -8.51 43.58 10.32 0.435 2822 +2824 4 -9.87 44.35 10.37 0.435 2823 +2825 4 -11.2 44.64 10.97 0.435 2824 +2826 4 -11.68 45.26 11.03 0.435 2825 +2827 4 -11.93 45.89 11.09 0.435 2826 +2828 4 -11.95 46.35 10.83 0.435 2827 +2829 4 -12.36 46.7 9.2 0.435 2828 +2830 4 -12.19 46.79 10.57 0.435 2829 +2831 4 -12.65 46.94 10.96 0.435 2830 +2832 4 -12.9 47.07 11.72 0.435 2831 +2833 4 -12.74 47.88 12.4 0.435 2832 +2834 4 -13.17 47.86 12.39 0.435 2833 +2835 4 -13.23 48.17 13.55 0.435 2834 +2836 4 -13.71 48.52 14.1 0.435 2835 +2837 4 -14.04 50.15 14.8 0.435 2836 +2838 4 -14.72 50.53 15.04 0.435 2837 +2839 4 -15.23 51.29 15.71 0.435 2838 +2840 4 -4.82 32.52 3.85 0.54 2810 +2841 4 -6.34 32.12 4.59 0.54 2840 +2842 4 -6.8 31.97 5.84 0.54 2841 +2843 4 -7.67 31.93 5.67 0.435 2842 +2844 4 -8.73 31.66 5.62 0.435 2843 +2845 4 -9.17 31.08 6.75 0.435 2844 +2846 4 -10.06 31.46 6.77 0.435 2845 +2847 4 -10.96 32.03 6.81 0.435 2846 +2848 4 -11.67 32.86 6.88 0.435 2847 +2849 4 -12.09 32.85 6.72 0.435 2848 +2850 4 -12.54 32.51 7.65 0.435 2849 +2851 4 -12.78 32.65 8.19 0.435 2850 +2852 4 -13.2 32.42 8.08 0.435 2851 +2853 4 -13.59 31.99 7.73 0.435 2852 +2854 4 -14.01 31.2 8.84 0.435 2853 +2855 4 -14.4 30.29 8.96 0.435 2854 +2856 4 -14.8 29.54 9.71 0.435 2855 +2857 4 -15.42 28.54 10.64 0.435 2856 +2858 4 -16.03 27.56 11.35 0.435 2857 +2859 4 -16.47 27.25 11.92 0.325 2858 +2860 4 -16.87 26.82 11.63 0.325 2859 +2861 4 -16.87 26.81 11.78 0.325 2860 +2862 4 -17.31 26.51 12.27 0.325 2861 +2863 4 -17.3 26.0 13.04 0.325 2862 +2864 4 -17.73 25.68 13.75 0.325 2863 +2865 4 -17.71 25.2 14.16 0.325 2864 +2866 4 -18.15 24.93 14.42 0.325 2865 +2867 4 6.01 39.73 -3.51 1.95 2795 +2868 4 6.01 39.83 -3.5 1.95 2867 +2869 4 5.88 41.88 -3.29 1.735 2868 +2870 4 5.82 42.74 -3.2 1.735 2869 +2871 4 5.94 45.07 -4.62 1.735 2870 +2872 4 5.85 46.56 -4.46 1.735 2871 +2873 4 6.01 48.21 -5.65 1.735 2872 +2874 4 6.35 49.75 -5.55 1.735 2873 +2875 4 6.51 51.43 -7.11 1.735 2874 +2876 4 6.85 52.75 -6.97 1.735 2875 +2877 4 7.21 54.39 -7.92 1.735 2876 +2878 4 7.81 56.14 -9.68 1.735 2877 +2879 4 8.84 57.58 -10.48 1.735 2878 +2880 4 9.61 59.18 -10.75 1.735 2879 +2881 4 10.39 60.51 -10.6 1.735 2880 +2882 4 9.14 60.71 -12.41 0.54 2881 +2883 4 8.27 60.66 -12.44 0.54 2882 +2884 4 7.18 60.81 -12.38 0.54 2883 +2885 4 5.84 61.37 -12.35 0.54 2884 +2886 4 5.33 62.63 -12.24 0.54 2885 +2887 4 4.58 64.09 -12.1 0.54 2886 +2888 4 2.54 65.47 -12.01 0.54 2887 +2889 4 0.95 66.98 -12.95 0.54 2888 +2890 4 0.43 68.46 -12.8 0.54 2889 +2891 4 -0.12 70.35 -12.62 0.54 2890 +2892 4 -1.77 72.41 -12.45 0.54 2891 +2893 4 -3.09 72.76 -12.44 0.54 2892 +2894 4 -4.42 72.82 -11.71 0.54 2893 +2895 4 -6.0 73.57 -11.59 0.435 2894 +2896 4 -6.65 73.54 -11.61 0.435 2895 +2897 4 -7.79 74.85 -12.34 0.435 2896 +2898 4 -7.95 74.5 -13.35 0.435 2897 +2899 4 -7.94 75.08 -14.8 0.435 2898 +2900 4 -8.59 75.36 -15.84 0.435 2899 +2901 4 -9.19 75.51 -17.72 0.435 2900 +2902 4 -9.63 75.71 -17.71 0.435 2901 +2903 4 -9.87 75.92 -17.78 0.435 2902 +2904 4 -9.82 76.11 -19.56 0.435 2903 +2905 4 -9.81 76.19 -20.38 0.435 2904 +2906 4 -9.98 76.31 -21.65 0.435 2905 +2907 4 -9.94 76.47 -23.22 0.435 2906 +2908 4 -9.91 76.6 -24.49 0.435 2907 +2909 4 -10.31 75.93 -24.56 0.435 2908 +2910 4 -10.12 77.17 -26.01 0.435 2909 +2911 4 -11.26 77.95 -25.81 0.435 2910 +2912 4 -11.7 78.47 -26.97 0.435 2911 +2913 4 -11.66 78.61 -28.31 0.435 2912 +2914 4 -11.65 79.21 -29.98 0.435 2913 +2915 4 -11.65 79.51 -30.7 0.435 2914 +2916 4 -11.64 79.8 -31.43 0.435 2915 +2917 4 -11.42 80.12 -32.22 0.435 2916 +2918 4 -11.45 81.1 -33.33 0.435 2917 +2919 4 -11.45 81.65 -34.47 0.435 2918 +2920 4 -11.44 81.92 -35.04 0.435 2919 +2921 4 -12.33 82.57 -35.6 0.435 2920 +2922 4 -12.38 83.78 -36.76 0.435 2921 +2923 4 -12.38 84.32 -37.83 0.435 2922 +2924 4 -13.08 85.41 -38.27 0.435 2923 +2925 4 -13.08 85.94 -39.19 0.435 2924 +2926 4 -13.11 86.69 -40.17 0.435 2925 +2927 4 -12.9 87.2 -40.87 0.435 2926 +2928 4 -11.38 87.59 -41.55 0.435 2927 +2929 4 -11.34 87.74 -43.04 0.435 2928 +2930 4 -11.86 89.01 -42.99 0.435 2929 +2931 4 -11.88 89.72 -43.6 0.435 2930 +2932 4 -11.92 90.66 -44.26 0.435 2931 +2933 4 -12.17 91.55 -44.76 0.435 2932 +2934 4 -12.38 91.87 -45.79 0.435 2933 +2935 4 -12.84 92.56 -46.33 0.435 2934 +2936 4 -12.89 93.41 -46.33 0.435 2935 +2937 4 -13.78 94.34 -47.53 0.435 2936 +2938 4 -13.79 95.14 -48.89 0.435 2937 +2939 4 -13.59 95.6 -49.13 0.435 2938 +2940 4 -13.38 95.66 -49.5 0.435 2939 +2941 4 -12.95 96.19 -50.18 0.435 2940 +2942 4 -12.99 97.1 -50.54 0.435 2941 +2943 4 -13.01 97.58 -51.02 0.435 2942 +2944 4 -13.48 98.48 -51.62 0.435 2943 +2945 4 -14.09 98.57 -52.9 0.435 2944 +2946 4 -14.75 99.04 -53.7 0.435 2945 +2947 4 -15.41 99.52 -54.57 0.435 2946 +2948 4 -16.08 100.2 -55.19 0.435 2947 +2949 4 -16.27 100.26 -55.95 0.435 2948 +2950 4 -17.17 100.95 -56.87 0.435 2949 +2951 4 -18.99 102.35 -56.77 0.435 2950 +2952 4 -19.92 103.9 -57.69 0.435 2951 +2953 4 -20.8 104.63 -58.92 0.435 2952 +2954 4 -21.61 107.17 -58.75 0.435 2953 +2955 4 -22.15 108.84 -58.59 0.435 2954 +2956 4 -21.92 109.48 -60.25 0.435 2955 +2957 4 -22.48 111.38 -60.14 0.435 2956 +2958 4 -22.5 111.85 -60.55 0.435 2957 +2959 4 -20.93 115.05 -61.0 0.435 2958 +2960 4 -20.98 115.94 -61.36 0.435 2959 +2961 4 -20.8 116.64 -61.59 0.435 2960 +2962 4 -10.54 76.41 -25.12 0.435 2909 +2963 4 -10.72 76.53 -26.47 0.435 2962 +2964 4 -11.15 77.06 -27.64 0.435 2963 +2965 4 -11.13 77.16 -28.68 0.435 2964 +2966 4 -11.11 77.5 -29.77 0.435 2965 +2967 4 -11.12 77.77 -30.35 0.435 2966 +2968 4 -11.75 78.28 -31.59 0.435 2967 +2969 4 -12.86 78.67 -31.8 0.435 2968 +2970 4 -12.87 78.65 -31.57 0.435 2969 +2971 4 -13.28 78.72 -32.56 0.435 2970 +2972 4 -13.3 79.18 -32.82 0.435 2971 +2973 4 -14.16 79.43 -33.72 0.435 2972 +2974 4 -15.04 80.13 -34.64 0.435 2973 +2975 4 -15.94 80.48 -34.39 0.435 2974 +2976 4 -16.38 80.66 -34.25 0.435 2975 +2977 4 -16.4 80.85 -34.07 0.435 2976 +2978 4 -17.06 81.3 -34.57 0.435 2977 +2979 4 -17.71 81.26 -34.59 0.435 2978 +2980 4 -18.57 81.83 -36.36 0.435 2979 +2981 4 -19.22 81.99 -36.36 0.435 2980 +2982 4 -19.66 81.94 -36.14 0.435 2981 +2983 4 -20.54 82.39 -36.8 0.435 2982 +2984 4 -21.8 82.49 -38.63 0.435 2983 +2985 4 -23.06 82.52 -39.71 0.435 2984 +2986 4 -23.5 82.46 -39.43 0.435 2985 +2987 4 -23.49 82.51 -39.87 0.435 2986 +2988 4 -24.11 82.36 -40.88 0.435 2987 +2989 4 -24.95 82.12 -41.23 0.435 2988 +2990 4 -25.98 81.99 -42.69 0.435 2989 +2991 4 -27.03 81.83 -43.94 0.435 2990 +2992 4 -27.65 81.66 -44.73 0.435 2991 +2993 4 -29.6 81.8 -45.29 0.435 2992 +2994 4 -31.12 82.69 -46.51 0.435 2993 +2995 4 -32.18 82.76 -47.81 0.435 2994 +2996 4 -33.91 83.23 -49.16 0.435 2995 +2997 4 -35.18 83.24 -50.09 0.435 2996 +2998 4 -36.51 84.11 -50.94 0.435 2997 +2999 4 -37.97 83.93 -52.2 0.435 2998 +3000 4 -39.06 83.87 -52.38 0.435 2999 +3001 4 -40.72 83.47 -53.74 0.435 3000 +3002 4 -42.01 83.19 -53.88 0.435 3001 +3003 4 -43.69 82.48 -54.36 0.435 3002 +3004 4 -45.64 82.59 -54.55 0.435 3003 +3005 4 -46.48 82.12 -54.7 0.435 3004 +3006 4 -47.97 82.11 -55.64 0.435 3005 +3007 4 -48.84 82.56 -56.29 0.435 3006 +3008 4 -50.16 82.99 -56.96 0.435 3007 +3009 4 -51.19 83.1 -58.77 0.435 3008 +3010 4 -4.78 75.24 -12.23 0.54 2893 +3011 4 -6.22 77.52 -12.02 0.54 3010 +3012 4 -7.69 80.02 -11.8 0.54 3011 +3013 4 -7.97 81.89 -13.34 0.54 3012 +3014 4 -8.26 83.44 -13.86 0.54 3013 +3015 4 -8.3 84.39 -14.6 0.54 3014 +3016 4 -8.67 86.73 -14.44 0.54 3015 +3017 4 -9.65 88.88 -14.77 0.54 3016 +3018 4 -10.54 89.56 -15.55 0.54 3017 +3019 4 -10.6 90.92 -16.24 0.54 3018 +3020 4 -11.49 91.9 -17.89 0.54 3019 +3021 4 -11.49 92.43 -18.74 0.54 3020 +3022 4 -11.95 93.37 -19.71 0.54 3021 +3023 4 -13.83 95.86 -19.72 0.54 3022 +3024 4 -15.05 98.0 -20.13 0.54 3023 +3025 4 -16.44 99.95 -21.02 0.54 3024 +3026 4 -17.68 102.49 -21.16 0.54 3025 +3027 4 -18.65 104.16 -21.09 0.54 3026 +3028 4 -20.59 107.5 -20.86 0.54 3027 +3029 4 -21.64 110.5 -21.17 0.54 3028 +3030 4 -23.5 112.56 -21.09 0.54 3029 +3031 4 -25.02 116.15 -21.12 0.54 3030 +3032 4 -26.44 118.01 -21.04 0.54 3031 +3033 4 -27.85 119.64 -20.91 0.54 3032 +3034 4 -27.98 121.57 -20.71 0.54 3033 +3035 4 -27.92 124.16 -20.44 0.54 3034 +3036 4 -28.67 125.92 -20.65 0.435 3035 +3037 4 -29.2 127.4 -20.51 0.435 3036 +3038 4 -29.34 129.58 -20.67 0.435 3037 +3039 4 -29.5 132.15 -20.41 0.435 3038 +3040 4 -29.58 133.45 -20.5 0.435 3039 +3041 4 -30.37 135.78 -20.42 0.435 3040 +3042 4 -30.98 138.84 -20.88 0.435 3041 +3043 4 -31.67 139.92 -21.38 0.435 3042 +3044 4 -32.43 141.61 -21.23 0.435 3043 +3045 4 -33.45 143.91 -21.01 0.435 3044 +3046 4 -34.64 145.56 -20.87 0.435 3045 +3047 4 -36.27 147.18 -20.74 0.435 3046 +3048 4 -36.78 148.69 -20.9 0.435 3047 +3049 4 -37.45 152.32 -20.62 0.435 3048 +3050 4 -37.63 155.33 -20.53 0.435 3049 +3051 4 -38.17 157.06 -20.82 0.435 3050 +3052 4 -38.28 159.07 -21.29 0.435 3051 +3053 4 -39.1 161.85 -21.4 0.435 3052 +3054 4 -39.2 163.61 -21.75 0.435 3053 +3055 4 -39.68 164.7 -22.03 0.435 3054 +3056 4 -39.76 166.29 -22.69 0.435 3055 +3057 4 -39.83 167.62 -23.16 0.435 3056 +3058 4 -39.91 168.93 -23.17 0.435 3057 +3059 4 -39.99 170.24 -23.27 0.435 3058 +3060 4 -40.07 171.78 -23.57 0.435 3059 +3061 4 -40.11 172.44 -23.65 0.435 3060 +3062 4 -40.59 173.28 -23.64 0.435 3061 +3063 4 -41.06 174.22 -24.54 0.435 3062 +3064 4 -41.52 174.62 -24.51 0.435 3063 +3065 4 10.83 61.1 -11.73 1.735 2881 +3066 4 11.81 62.66 -11.55 1.735 3065 +3067 4 11.57 63.18 -11.5 1.735 3066 +3068 4 10.69 64.17 -13.38 0.54 3067 +3069 4 10.23 64.56 -13.2 0.54 3068 +3070 4 10.2 64.99 -13.15 0.54 3069 +3071 4 9.3 65.36 -13.14 0.54 3070 +3072 4 8.17 66.16 -13.08 0.54 3071 +3073 4 7.72 66.57 -13.2 0.54 3072 +3074 4 7.25 67.24 -13.59 0.54 3073 +3075 4 6.55 68.1 -13.97 0.54 3074 +3076 4 5.86 68.94 -14.12 0.54 3075 +3077 4 4.95 70.06 -15.02 0.54 3076 +3078 4 4.44 71.34 -15.05 0.54 3077 +3079 4 4.42 72.08 -15.95 0.54 3078 +3080 4 4.38 73.0 -16.38 0.54 3079 +3081 4 4.08 74.52 -16.61 0.54 3080 +3082 4 4.25 75.45 -17.11 0.54 3081 +3083 4 4.22 76.14 -17.49 0.54 3082 +3084 4 4.63 76.89 -18.16 0.54 3083 +3085 4 5.19 78.71 -18.71 0.435 3084 +3086 4 5.14 79.9 -19.65 0.435 3085 +3087 4 5.11 80.55 -19.73 0.435 3086 +3088 4 5.1 81.05 -20.43 0.435 3087 +3089 4 4.6 82.4 -21.21 0.435 3088 +3090 4 4.55 83.56 -21.91 0.435 3089 +3091 4 4.73 84.51 -22.49 0.435 3090 +3092 4 4.87 86.06 -22.77 0.435 3091 +3093 4 4.4 87.0 -23.74 0.435 3092 +3094 4 4.08 88.73 -23.8 0.435 3093 +3095 4 3.98 90.77 -24.72 0.435 3094 +3096 4 3.62 93.14 -24.79 0.435 3095 +3097 4 3.53 94.92 -25.21 0.435 3096 +3098 4 3.48 95.81 -25.42 0.435 3097 +3099 4 2.53 97.34 -26.19 0.435 3098 +3100 4 2.46 98.91 -26.7 0.435 3099 +3101 4 1.51 100.37 -26.65 0.435 3100 +3102 4 1.42 101.69 -26.89 0.435 3101 +3103 4 0.4 104.51 -27.46 0.435 3102 +3104 4 0.34 105.61 -27.65 0.435 3103 +3105 4 -0.74 109.23 -27.6 0.435 3104 +3106 4 -0.83 111.04 -28.24 0.435 3105 +3107 4 -0.92 112.82 -28.81 0.435 3106 +3108 4 -0.82 114.8 -28.84 0.435 3107 +3109 4 -0.86 115.69 -29.2 0.435 3108 +3110 4 -0.94 116.77 -29.16 0.435 3109 +3111 4 -0.77 117.95 -29.94 0.435 3110 +3112 4 -0.38 118.88 -30.28 0.435 3111 +3113 4 -0.82 119.6 -31.27 0.435 3112 +3114 4 -0.38 119.68 -31.78 0.435 3113 +3115 4 11.52 63.81 -11.43 1.735 3067 +3116 4 11.74 63.82 -11.43 1.735 3115 +3117 4 13.25 63.84 -11.47 1.735 3116 +3118 4 12.89 65.33 -9.36 0.435 3117 +3119 4 12.86 66.0 -9.52 0.435 3118 +3120 4 12.38 66.35 -9.04 0.435 3119 +3121 4 12.12 66.36 -7.24 0.435 3120 +3122 4 11.63 67.21 -7.24 0.435 3121 +3123 4 11.6 67.66 -7.41 0.435 3122 +3124 4 11.58 67.57 -6.53 0.435 3123 +3125 4 11.55 67.71 -5.76 0.435 3124 +3126 4 11.53 67.65 -5.16 0.435 3125 +3127 4 11.48 67.98 -4.3 0.435 3126 +3128 4 11.47 68.15 -3.91 0.435 3127 +3129 4 11.6 68.9 -2.54 0.435 3128 +3130 4 11.97 69.51 -1.86 0.435 3129 +3131 4 12.27 71.11 -0.41 0.435 3130 +3132 4 12.4 72.17 0.0 0.435 3131 +3133 4 12.9 74.54 0.4 0.435 3132 +3134 4 12.73 77.06 1.26 0.435 3133 +3135 4 12.81 78.97 1.76 0.435 3134 +3136 4 13.33 80.92 2.19 0.435 3135 +3137 4 13.03 81.37 3.89 0.435 3136 +3138 4 13.37 82.9 3.99 0.435 3137 +3139 4 13.94 84.23 4.21 0.435 3138 +3140 4 14.28 85.23 5.23 0.435 3139 +3141 4 14.23 85.58 6.09 0.435 3140 +3142 4 13.48 86.72 7.09 0.435 3141 +3143 4 13.17 88.21 7.24 0.435 3142 +3144 4 13.06 89.92 7.41 0.435 3143 +3145 4 12.95 91.64 7.59 0.435 3144 +3146 4 11.87 95.01 7.91 0.435 3145 +3147 4 12.01 95.28 9.68 0.435 3146 +3148 4 11.52 96.32 9.78 0.435 3147 +3149 4 11.44 97.4 9.81 0.435 3148 +3150 4 11.38 98.23 10.19 0.435 3149 +3151 4 11.35 98.63 10.54 0.435 3150 +3152 4 10.65 98.92 11.54 0.435 3151 +3153 4 10.17 99.46 12.25 0.435 3152 +3154 4 9.61 100.87 13.06 0.435 3153 +3155 4 9.55 101.71 13.3 0.435 3154 +3156 4 9.19 104.04 13.61 0.435 3155 +3157 4 9.07 105.97 13.81 0.435 3156 +3158 4 8.93 107.55 15.24 0.435 3157 +3159 4 8.79 109.7 15.46 0.435 3158 +3160 4 7.78 111.79 15.66 0.435 3159 +3161 4 7.23 113.42 16.41 0.435 3160 +3162 4 7.14 114.69 16.7 0.435 3161 +3163 4 7.26 116.18 17.08 0.435 3162 +3164 4 5.78 118.62 17.75 0.435 3163 +3165 4 5.29 119.67 17.92 0.435 3164 +3166 4 5.44 120.49 18.39 0.435 3165 +3167 4 5.72 122.61 19.07 0.435 3166 +3168 4 6.0 124.99 19.39 0.435 3167 +3169 4 6.73 127.18 19.64 0.435 3168 +3170 4 7.67 129.38 19.97 0.435 3169 +3171 4 9.27 131.62 20.31 0.435 3170 +3172 4 9.84 132.7 20.66 0.435 3171 +3173 4 10.56 134.66 21.26 0.435 3172 +3174 4 11.08 136.57 21.99 0.435 3173 +3175 4 11.64 137.83 22.67 0.435 3174 +3176 4 11.94 139.56 23.61 0.435 3175 +3177 4 12.46 141.23 24.62 0.435 3176 +3178 4 12.83 142.07 25.09 0.435 3177 +3179 4 13.15 143.55 25.71 0.435 3178 +3180 4 13.25 145.0 26.46 0.435 3179 +3181 4 14.59 147.82 27.31 0.435 3180 +3182 4 14.89 149.25 28.45 0.435 3181 +3183 4 15.2 150.4 30.22 0.435 3182 +3184 4 16.2 151.74 30.39 0.435 3183 +3185 4 16.82 152.18 30.75 0.435 3184 +3186 4 17.37 153.69 31.22 0.435 3185 +3187 4 17.9 154.62 33.14 0.435 3186 +3188 4 18.71 155.53 33.25 0.435 3187 +3189 4 19.64 157.39 34.75 0.435 3188 +3190 4 19.77 158.42 35.39 0.435 3189 +3191 4 20.74 160.19 35.66 0.435 3190 +3192 4 21.26 162.15 36.03 0.435 3191 +3193 4 22.91 163.28 36.57 0.435 3192 +3194 4 23.68 164.78 37.26 0.435 3193 +3195 4 24.03 165.84 37.68 0.435 3194 +3196 4 24.79 167.34 38.39 0.435 3195 +3197 4 24.84 169.66 39.23 0.435 3196 +3198 4 25.09 172.44 39.68 0.435 3197 +3199 4 24.97 174.12 40.3 0.435 3198 +3200 4 24.8 176.66 40.86 0.435 3199 +3201 4 24.7 177.86 41.74 0.435 3200 +3202 4 24.82 178.89 42.37 0.435 3201 +3203 4 24.01 181.41 42.76 0.435 3202 +3204 4 23.5 182.66 43.03 0.435 3203 +3205 4 23.39 184.36 43.28 0.435 3204 +3206 4 23.26 186.28 43.63 0.435 3205 +3207 4 22.7 187.88 44.53 0.435 3206 +3208 4 22.96 190.22 45.31 0.435 3207 +3209 4 23.5 191.94 45.8 0.435 3208 +3210 4 22.95 193.82 46.05 0.435 3209 +3211 4 23.02 195.76 46.41 0.435 3210 +3212 4 22.95 196.76 47.19 0.435 3211 +3213 4 22.88 197.31 48.15 0.435 3212 +3214 4 21.95 198.07 48.73 0.435 3213 +3215 4 22.29 199.59 48.9 0.435 3214 +3216 4 22.45 200.44 49.22 0.435 3215 +3217 4 22.37 201.19 50.27 0.435 3216 +3218 4 22.3 202.24 50.53 0.435 3217 +3219 4 21.82 202.86 50.58 0.435 3218 +3220 4 21.1 203.62 51.17 0.435 3219 +3221 4 20.21 203.99 51.26 0.435 3220 +3222 4 19.9 205.44 51.71 0.435 3221 +3223 4 20.42 207.19 51.97 0.435 3222 +3224 4 21.61 208.97 52.42 0.435 3223 +3225 4 22.34 211.16 52.73 0.435 3224 +3226 4 24.35 213.47 53.1 0.435 3225 +3227 4 24.84 215.84 53.66 0.435 3226 +3228 4 25.98 218.24 54.3 0.435 3227 +3229 4 26.73 219.72 55.16 0.435 3228 +3230 4 27.48 221.44 55.81 0.435 3229 +3231 4 27.98 223.81 56.37 0.435 3230 +3232 4 28.33 224.65 56.91 0.435 3231 +3233 4 29.14 225.76 57.12 0.435 3232 +3234 4 29.24 227.22 57.8 0.435 3233 +3235 4 29.79 228.5 58.4 0.435 3234 +3236 4 30.33 230.21 58.96 0.435 3235 +3237 4 30.69 231.3 59.24 0.435 3236 +3238 4 30.8 232.52 60.19 0.435 3237 +3239 4 30.71 233.79 60.4 0.435 3238 +3240 4 14.76 86.98 7.6 0.435 3141 +3241 4 15.26 88.6 9.07 0.435 3240 +3242 4 15.39 89.85 9.57 0.435 3241 +3243 4 15.1 90.35 10.91 0.435 3242 +3244 4 15.22 91.87 11.07 0.435 3243 +3245 4 15.79 93.19 11.22 0.435 3244 +3246 4 15.76 94.42 9.83 0.325 3245 +3247 4 15.0 96.1 9.99 0.325 3246 +3248 4 14.21 98.2 10.19 0.325 3247 +3249 4 13.43 100.31 10.39 0.325 3248 +3250 4 12.58 103.47 10.69 0.325 3249 +3251 4 12.58 106.7 11.03 0.325 3250 +3252 4 14.55 64.69 -12.56 1.735 3117 +3253 4 15.81 65.98 -13.89 1.735 3252 +3254 4 16.36 67.52 -13.72 1.735 3253 +3255 4 16.59 67.59 -14.31 0.435 3254 +3256 4 17.05 67.18 -14.27 0.435 3255 +3257 4 17.53 66.85 -14.97 0.435 3256 +3258 4 17.97 66.91 -15.26 0.435 3257 +3259 4 17.76 66.94 -15.71 0.435 3258 +3260 4 18.22 67.07 -16.67 0.435 3259 +3261 4 18.67 67.16 -17.25 0.435 3260 +3262 4 19.12 66.8 -17.65 0.435 3261 +3263 4 19.58 66.61 -17.74 0.435 3262 +3264 4 20.04 66.21 -17.77 0.435 3263 +3265 4 20.92 66.3 -18.11 0.435 3264 +3266 4 21.74 67.02 -18.25 0.435 3265 +3267 4 22.55 67.93 -18.14 0.435 3266 +3268 4 22.96 68.41 -18.37 0.435 3267 +3269 4 23.5 70.22 -18.62 0.435 3268 +3270 4 24.35 70.71 -18.7 0.435 3269 +3271 4 24.6 71.08 -20.17 0.435 3270 +3272 4 24.77 71.55 -20.2 0.435 3271 +3273 4 25.42 72.35 -21.37 0.435 3272 +3274 4 25.44 72.44 -22.27 0.435 3273 +3275 4 26.1 72.54 -22.78 0.435 3274 +3276 4 26.91 73.47 -22.81 0.435 3275 +3277 4 26.93 73.57 -23.7 0.435 3276 +3278 4 27.56 74.06 -23.93 0.435 3277 +3279 4 27.76 74.79 -24.61 0.435 3278 +3280 4 27.99 74.91 -25.57 0.435 3279 +3281 4 28.64 74.96 -25.7 0.435 3280 +3282 4 29.24 75.88 -25.82 0.435 3281 +3283 4 29.46 75.91 -26.04 0.435 3282 +3284 4 29.7 76.01 -26.78 0.435 3283 +3285 4 30.58 76.15 -27.65 0.435 3284 +3286 4 30.82 75.97 -27.96 0.435 3285 +3287 4 31.27 76.09 -28.76 0.435 3286 +3288 4 31.28 76.14 -29.28 0.435 3287 +3289 4 32.19 75.82 -29.9 0.435 3288 +3290 4 32.43 75.94 -30.78 0.435 3289 +3291 4 33.12 75.59 -31.18 0.435 3290 +3292 4 33.35 75.45 -31.87 0.435 3291 +3293 4 33.84 75.15 -32.87 0.435 3292 +3294 4 34.33 74.57 -33.29 0.435 3293 +3295 4 35.03 74.06 -34.15 0.435 3294 +3296 4 35.52 73.23 -34.31 0.435 3295 +3297 4 36.01 72.94 -35.38 0.435 3296 +3298 4 36.49 72.37 -35.8 0.435 3297 +3299 4 36.58 71.36 -36.59 0.435 3298 +3300 4 37.28 70.55 -36.73 0.435 3299 +3301 4 37.57 69.76 -37.33 0.435 3300 +3302 4 37.84 69.24 -38.44 0.435 3301 +3303 4 38.1 68.89 -39.14 0.435 3302 +3304 4 38.35 68.49 -39.33 0.435 3303 +3305 4 38.57 69.09 -40.77 0.435 3304 +3306 4 39.04 68.68 -40.72 0.435 3305 +3307 4 39.46 68.69 -40.56 0.435 3306 +3308 4 39.71 68.28 -40.67 0.435 3307 +3309 4 39.96 67.9 -41.01 0.435 3308 +3310 4 40.45 67.35 -41.73 0.435 3309 +3311 4 40.72 66.78 -42.38 0.435 3310 +3312 4 40.73 66.8 -42.61 0.435 3311 +3313 4 40.78 66.79 -44.49 0.435 3312 +3314 4 41.04 66.72 -45.77 0.435 3313 +3315 4 41.07 66.56 -46.39 0.435 3314 +3316 4 41.32 66.69 -47.51 0.435 3315 +3317 4 41.6 65.92 -48.34 0.435 3316 +3318 4 41.64 65.87 -49.85 0.435 3317 +3319 4 41.67 66.0 -51.11 0.435 3318 +3320 4 41.94 65.66 -52.05 0.435 3319 +3321 4 41.98 65.53 -52.73 0.435 3320 +3322 4 42.21 65.35 -53.05 0.435 3321 +3323 4 42.24 65.49 -54.32 0.435 3322 +3324 4 42.47 65.6 -55.28 0.435 3323 +3325 4 42.51 65.46 -55.89 0.435 3324 +3326 4 42.54 65.59 -57.24 0.435 3325 +3327 4 42.79 65.5 -58.37 0.435 3326 +3328 4 43.28 65.21 -59.52 0.435 3327 +3329 4 43.54 65.11 -60.43 0.435 3328 +3330 4 43.98 64.94 -60.66 0.435 3329 +3331 4 44.43 64.77 -60.82 0.435 3330 +3332 4 44.91 64.44 -61.59 0.435 3331 +3333 4 45.37 64.05 -61.7 0.435 3332 +3334 4 45.82 63.87 -61.86 0.435 3333 +3335 4 46.48 63.71 -61.93 0.435 3334 +3336 4 47.57 63.79 -61.98 0.435 3335 +3337 4 48.37 64.69 -61.87 0.435 3336 +3338 4 48.83 64.82 -62.82 0.435 3337 +3339 4 48.86 64.93 -63.86 0.435 3338 +3340 4 49.29 64.96 -63.92 0.435 3339 +3341 4 49.53 65.08 -64.89 0.435 3340 +3342 4 50.82 65.65 -65.4 0.435 3341 +3343 4 52.12 65.5 -65.24 0.435 3342 +3344 4 53.39 65.98 -64.92 0.435 3343 +3345 4 54.04 66.02 -64.91 0.435 3344 +3346 4 55.14 65.66 -64.92 0.435 3345 +3347 4 56.66 65.75 -64.8 0.435 3346 +3348 4 57.54 65.36 -64.82 0.435 3347 +3349 4 58.62 65.42 -64.79 0.435 3348 +3350 4 59.07 65.22 -64.65 0.435 3349 +3351 4 60.58 65.58 -65.03 0.435 3350 +3352 4 61.44 65.63 -65.0 0.435 3351 +3353 4 61.67 65.66 -65.14 0.435 3352 +3354 4 62.15 65.15 -66.16 0.435 3353 +3355 4 62.63 65.04 -67.0 0.435 3354 +3356 4 62.87 64.66 -67.4 0.435 3355 +3357 4 63.35 64.32 -67.95 0.435 3356 +3358 4 64.03 63.95 -68.12 0.435 3357 +3359 4 65.16 63.42 -68.6 0.435 3358 +3360 4 65.86 63.12 -69.6 0.435 3359 +3361 4 66.29 63.16 -69.74 0.435 3360 +3362 4 67.0 62.64 -70.53 0.435 3361 +3363 4 67.91 62.34 -71.29 0.435 3362 +3364 4 68.61 61.75 -71.49 0.435 3363 +3365 4 68.63 61.58 -71.88 0.435 3364 +3366 4 69.09 61.2 -72.21 0.435 3365 +3367 4 69.59 60.93 -73.5 0.435 3366 +3368 4 70.06 60.58 -74.06 0.435 3367 +3369 4 70.3 60.72 -75.17 0.435 3368 +3370 4 70.78 60.38 -75.87 0.435 3369 +3371 4 71.04 60.33 -77.3 0.435 3370 +3372 4 71.5 59.94 -77.41 0.435 3371 +3373 4 71.99 59.13 -77.7 0.435 3372 +3374 4 72.18 59.27 -76.93 0.435 3373 +3375 4 72.39 59.29 -76.92 0.435 3374 +3376 4 72.63 58.86 -76.81 0.435 3375 +3377 4 72.63 58.9 -77.19 0.435 3376 +3378 4 72.87 58.99 -78.0 0.435 3377 +3379 4 73.1 59.57 -79.21 0.435 3378 +3380 4 74.62 59.45 -79.19 0.435 3379 +3381 4 74.86 59.55 -80.01 0.435 3380 +3382 4 74.89 59.7 -81.42 0.435 3381 +3383 4 75.78 59.55 -81.64 0.435 3382 +3384 4 76.0 59.59 -81.94 0.435 3383 +3385 4 76.47 59.49 -82.69 0.435 3384 +3386 4 76.92 59.63 -83.79 0.435 3385 +3387 4 77.38 59.5 -84.4 0.435 3386 +3388 4 77.66 59.49 -86.27 0.435 3387 +3389 4 78.1 59.31 -86.36 0.435 3388 +3390 4 78.36 59.22 -87.42 0.435 3389 +3391 4 78.59 59.27 -87.78 0.435 3390 +3392 4 79.03 59.39 -88.66 0.435 3391 +3393 4 79.72 59.04 -89.06 0.435 3392 +3394 4 80.0 58.79 -90.73 0.435 3393 +3395 4 81.14 58.24 -90.99 0.435 3394 +3396 4 82.05 57.71 -91.55 0.435 3395 +3397 4 82.73 57.31 -91.58 0.435 3396 +3398 4 83.82 57.18 -91.64 0.435 3397 +3399 4 16.39 67.89 -15.27 1.735 3254 +3400 4 16.95 69.7 -16.05 1.515 3399 +3401 4 17.06 71.43 -15.87 1.515 3400 +3402 4 17.17 72.62 -14.76 1.41 3401 +3403 4 17.53 73.74 -14.79 1.515 3402 +3404 4 17.48 74.59 -14.7 1.515 3403 +3405 4 17.45 75.02 -14.66 1.515 3404 +3406 4 16.45 73.5 -14.24 0.435 3405 +3407 4 15.36 73.43 -14.27 0.435 3406 +3408 4 13.39 73.76 -14.35 0.435 3407 +3409 4 11.64 74.09 -14.44 0.435 3408 +3410 4 10.05 74.79 -13.8 0.435 3409 +3411 4 9.35 75.57 -13.44 0.435 3410 +3412 4 7.4 75.18 -12.92 0.435 3411 +3413 4 4.82 74.81 -13.02 0.435 3412 +3414 4 2.25 74.44 -13.12 0.435 3413 +3415 4 0.35 73.55 -13.25 0.435 3414 +3416 4 -1.0 74.06 -12.63 0.435 3415 +3417 4 -1.47 74.68 -12.58 0.435 3416 +3418 4 -2.36 75.29 -12.76 0.435 3417 +3419 4 -3.73 75.48 -11.19 0.435 3418 +3420 4 -4.63 76.06 -11.15 0.435 3419 +3421 4 -5.51 76.84 -11.09 0.435 3420 +3422 4 -6.02 77.84 -10.48 0.435 3421 +3423 4 -6.09 78.91 -10.37 0.435 3422 +3424 4 -6.59 79.95 -10.27 0.435 3423 +3425 4 -6.67 81.03 -10.16 0.435 3424 +3426 4 -6.5 82.16 -10.5 0.435 3425 +3427 4 -6.63 84.09 -10.3 0.435 3426 +3428 4 -7.17 85.98 -10.12 0.435 3427 +3429 4 -8.66 88.7 -9.87 0.435 3428 +3430 4 -10.18 92.25 -9.54 0.435 3429 +3431 4 -11.29 95.29 -7.96 0.435 3430 +3432 4 -12.28 97.37 -7.77 0.435 3431 +3433 4 -13.72 99.44 -7.52 0.435 3432 +3434 4 -14.51 101.54 -7.32 0.435 3433 +3435 4 -15.74 103.54 -6.46 0.435 3434 +3436 4 -17.2 105.51 -5.39 0.435 3435 +3437 4 -18.65 107.78 -5.11 0.435 3436 +3438 4 -20.35 110.44 -4.58 0.435 3437 +3439 4 -20.51 113.02 -4.31 0.435 3438 +3440 4 -20.41 114.73 -3.9 0.435 3439 +3441 4 -22.87 119.29 -3.49 0.435 3440 +3442 4 -24.08 121.16 -3.33 0.435 3441 +3443 4 -25.03 122.33 -2.62 0.435 3442 +3444 4 -25.14 123.81 -2.18 0.435 3443 +3445 4 -25.19 123.83 -0.22 0.435 3444 +3446 4 -26.19 124.85 1.74 0.435 3445 +3447 4 -27.85 127.13 1.94 0.435 3446 +3448 4 -28.31 127.53 1.97 0.435 3447 +3449 4 -28.82 128.79 2.09 0.435 3448 +3450 4 -29.33 129.3 3.03 0.435 3449 +3451 4 -30.29 130.73 3.38 0.435 3450 +3452 4 -30.4 132.44 3.71 0.435 3451 +3453 4 -31.42 134.48 4.26 0.435 3452 +3454 4 -32.49 137.39 4.92 0.435 3453 +3455 4 -33.02 138.81 5.58 0.435 3454 +3456 4 -32.92 140.5 6.14 0.435 3455 +3457 4 -32.85 142.62 6.66 0.435 3456 +3458 4 -33.39 144.08 7.02 0.435 3457 +3459 4 -33.95 145.92 7.73 0.435 3458 +3460 4 -34.52 147.79 8.28 0.435 3459 +3461 4 -35.1 150.11 8.59 0.435 3460 +3462 4 -35.18 151.11 9.37 0.435 3461 +3463 4 -36.59 152.73 9.58 0.435 3462 +3464 4 -37.54 153.97 9.69 0.435 3463 +3465 4 -37.63 155.25 9.89 0.435 3464 +3466 4 -37.46 156.05 10.05 0.435 3465 +3467 4 -37.53 156.86 10.66 0.435 3466 +3468 4 -37.4 157.55 12.39 0.435 3467 +3469 4 -37.01 158.22 12.47 0.435 3468 +3470 4 -37.06 158.85 12.76 0.435 3469 +3471 4 -36.67 159.26 13.26 0.435 3470 +3472 4 -24.84 124.92 -0.1 0.435 3445 +3473 4 -24.92 126.2 0.02 0.435 3472 +3474 4 -24.99 127.3 -0.08 0.435 3473 +3475 4 -24.46 129.01 0.55 0.435 3474 +3476 4 -24.35 130.72 0.8 0.435 3475 +3477 4 -24.97 133.45 1.37 0.435 3476 +3478 4 -25.4 136.85 1.87 0.435 3477 +3479 4 -25.47 137.64 2.63 0.435 3478 +3480 4 -26.48 139.71 2.97 0.435 3479 +3481 4 -27.47 141.56 3.36 0.435 3480 +3482 4 -5.99 76.83 -10.88 0.435 3421 +3483 4 -7.05 76.32 -10.88 0.435 3482 +3484 4 -9.26 76.79 -10.58 0.435 3483 +3485 4 -9.91 76.17 -9.08 0.435 3484 +3486 4 -12.01 74.73 -9.05 0.435 3485 +3487 4 -14.12 73.95 -9.11 0.435 3486 +3488 4 -15.62 73.64 -9.18 0.435 3487 +3489 4 -19.31 73.63 -9.19 0.435 3488 +3490 4 -21.22 72.86 -9.31 0.435 3489 +3491 4 -22.9 71.89 -9.38 0.435 3490 +3492 4 -24.41 71.79 -9.35 0.435 3491 +3493 4 -26.13 71.45 -9.2 0.435 3492 +3494 4 -30.21 70.75 -9.22 0.435 3493 +3495 4 -33.67 70.54 -9.32 0.435 3494 +3496 4 -36.46 69.95 -9.45 0.435 3495 +3497 4 -38.34 68.95 -9.45 0.435 3496 +3498 4 -40.88 67.93 -9.61 0.435 3497 +3499 4 -44.5 66.64 -9.83 0.435 3498 +3500 4 -47.67 65.37 -10.04 0.435 3499 +3501 4 -50.67 64.75 -10.17 0.435 3500 +3502 4 -54.34 64.54 -10.28 0.435 3501 +3503 4 -58.4 63.64 -10.47 0.435 3502 +3504 4 -60.7 62.21 -10.67 0.435 3503 +3505 4 -63.37 59.9 -10.98 0.435 3504 +3506 4 -64.95 57.43 -11.27 0.435 3505 +3507 4 -67.84 55.11 -11.58 0.435 3506 +3508 4 -69.04 53.53 -11.77 0.435 3507 +3509 4 -69.82 52.19 -11.93 0.435 3508 +3510 4 -0.14 74.49 -13.09 0.435 3415 +3511 4 -2.29 74.13 -12.96 0.435 3510 +3512 4 -4.92 74.34 -12.39 0.435 3511 +3513 4 -7.74 74.17 -12.48 0.435 3512 +3514 4 -9.88 73.6 -12.52 0.435 3513 +3515 4 -11.39 73.5 -12.56 0.435 3514 +3516 4 -13.11 73.17 -12.56 0.435 3515 +3517 4 -13.92 72.47 -12.65 0.435 3516 +3518 4 -14.71 71.15 -12.8 0.435 3517 +3519 4 -15.47 69.1 -12.43 0.435 3518 +3520 4 -16.66 67.3 -12.57 0.435 3519 +3521 4 -17.45 65.89 -12.06 0.435 3520 +3522 4 -18.2 63.9 -12.21 0.435 3521 +3523 4 -18.15 63.47 -12.86 0.435 3522 +3524 4 -18.55 62.79 -12.63 0.435 3523 +3525 4 -18.95 62.39 -13.21 0.435 3524 +3526 4 -19.88 60.72 -14.61 0.435 3525 +3527 4 -21.28 58.7 -14.85 0.435 3526 +3528 4 -22.06 57.89 -15.86 0.435 3527 +3529 4 -22.41 56.6 -16.22 0.435 3528 +3530 4 -23.38 54.82 -16.51 0.435 3529 +3531 4 -24.54 52.88 -17.41 0.435 3530 +3532 4 -26.19 51.72 -17.72 0.435 3531 +3533 4 -26.54 50.68 -18.44 0.435 3532 +3534 4 -27.04 48.57 -19.42 0.435 3533 +3535 4 -27.38 47.06 -19.59 0.435 3534 +3536 4 -28.17 45.94 -19.8 0.435 3535 +3537 4 -28.93 44.39 -20.05 0.435 3536 +3538 4 -29.72 43.86 -21.56 0.435 3537 +3539 4 -30.65 41.7 -22.33 0.435 3538 +3540 4 -30.36 40.42 -22.53 0.435 3539 +3541 4 -30.27 39.45 -23.46 0.435 3540 +3542 4 -31.39 36.61 -24.08 0.435 3541 +3543 4 -31.96 35.79 -24.86 0.435 3542 +3544 4 -32.3 34.47 -25.08 0.435 3543 +3545 4 -33.54 33.32 -25.23 0.435 3544 +3546 4 -33.44 32.35 -26.23 0.435 3545 +3547 4 -33.76 30.65 -26.79 0.435 3546 +3548 4 -34.11 29.86 -27.86 0.435 3547 +3549 4 -34.46 28.81 -28.43 0.435 3548 +3550 4 -35.04 28.29 -30.08 0.435 3549 +3551 4 -35.8 26.74 -30.26 0.435 3550 +3552 4 -36.6 25.61 -30.24 0.435 3551 +3553 4 -36.34 25.0 -30.67 0.435 3552 +3554 4 -36.7 24.46 -32.02 0.435 3553 +3555 4 -36.98 22.37 -32.85 0.435 3554 +3556 4 17.35 77.3 -15.78 1.515 3404 +3557 4 17.49 78.38 -15.67 1.515 3556 +3558 4 18.01 80.57 -15.5 1.41 3557 +3559 4 18.55 82.33 -15.31 1.41 3558 +3560 4 19.09 84.08 -15.11 1.41 3559 +3561 4 20.1 85.76 -16.05 1.41 3560 +3562 4 20.64 87.52 -15.85 1.41 3561 +3563 4 21.46 88.75 -16.75 1.41 3562 +3564 4 22.34 88.42 -16.77 1.41 3563 +3565 4 23.52 87.51 -17.74 0.54 3564 +3566 4 23.95 87.53 -17.73 0.54 3565 +3567 4 24.17 87.53 -17.5 0.54 3566 +3568 4 24.41 87.16 -17.99 0.54 3567 +3569 4 25.11 86.91 -19.35 0.54 3568 +3570 4 25.6 86.31 -19.62 0.54 3569 +3571 4 26.32 85.31 -19.94 0.54 3570 +3572 4 26.79 84.93 -20.27 0.54 3571 +3573 4 27.28 84.13 -20.56 0.54 3572 +3574 4 27.74 84.02 -21.32 0.54 3573 +3575 4 28.44 83.42 -21.51 0.54 3574 +3576 4 29.36 82.93 -22.45 0.54 3575 +3577 4 30.08 82.47 -23.84 0.54 3576 +3578 4 30.53 82.53 -24.12 0.54 3577 +3579 4 31.02 82.28 -25.64 0.54 3578 +3580 4 31.51 81.73 -26.44 0.54 3579 +3581 4 31.98 81.4 -26.99 0.54 3580 +3582 4 32.48 80.89 -28.16 0.54 3581 +3583 4 32.74 80.26 -28.3 0.54 3582 +3584 4 33.21 79.91 -28.77 0.54 3583 +3585 4 33.27 79.1 -29.23 0.54 3584 +3586 4 33.53 78.73 -29.79 0.54 3585 +3587 4 34.01 78.41 -30.57 0.54 3586 +3588 4 34.69 78.04 -30.81 0.54 3587 +3589 4 35.37 77.67 -30.99 0.54 3588 +3590 4 36.26 77.57 -31.51 0.54 3589 +3591 4 36.73 77.44 -32.18 0.54 3590 +3592 4 36.96 77.25 -32.35 0.54 3591 +3593 4 37.4 77.09 -32.51 0.54 3592 +3594 4 37.87 76.73 -32.92 0.54 3593 +3595 4 38.35 76.38 -33.46 0.54 3594 +3596 4 38.82 76.03 -34.09 0.54 3595 +3597 4 39.54 75.27 -34.68 0.54 3596 +3598 4 40.68 74.26 -34.83 0.54 3597 +3599 4 40.93 73.87 -35.02 0.54 3598 +3600 4 41.0 73.31 -35.98 0.54 3599 +3601 4 41.73 72.6 -37.01 0.54 3600 +3602 4 42.19 72.5 -37.85 0.54 3601 +3603 4 42.9 71.71 -38.21 0.54 3602 +3604 4 42.92 71.53 -38.6 0.54 3603 +3605 4 43.41 70.98 -39.18 0.54 3604 +3606 4 43.88 70.63 -39.73 0.54 3605 +3607 4 44.39 69.88 -40.7 0.54 3606 +3608 4 45.08 69.07 -40.77 0.54 3607 +3609 4 45.56 68.45 -40.82 0.54 3608 +3610 4 46.27 67.65 -41.04 0.54 3609 +3611 4 47.36 67.79 -41.67 0.54 3610 +3612 4 48.06 67.46 -42.29 0.54 3611 +3613 4 48.49 67.5 -42.43 0.54 3612 +3614 4 48.75 66.85 -42.27 0.54 3613 +3615 4 48.75 66.87 -42.42 0.54 3614 +3616 4 49.47 66.68 -44.38 0.54 3615 +3617 4 49.47 66.7 -44.53 0.54 3616 +3618 4 49.96 66.14 -45.18 0.54 3617 +3619 4 50.22 65.76 -45.58 0.54 3618 +3620 4 50.92 65.22 -46.3 0.54 3619 +3621 4 51.38 64.82 -46.33 0.54 3620 +3622 4 51.84 64.46 -46.74 0.54 3621 +3623 4 52.52 64.08 -46.83 0.54 3622 +3624 4 52.99 63.99 -47.81 0.54 3623 +3625 4 53.23 63.85 -48.28 0.54 3624 +3626 4 53.26 63.73 -49.26 0.54 3625 +3627 4 53.3 63.87 -50.6 0.54 3626 +3628 4 53.77 63.47 -50.71 0.54 3627 +3629 4 53.84 62.68 -51.47 0.435 3628 +3630 4 53.87 62.53 -52.16 0.435 3629 +3631 4 53.66 62.32 -52.33 0.435 3630 +3632 4 54.12 61.92 -52.37 0.435 3631 +3633 4 54.8 61.29 -52.26 0.435 3632 +3634 4 55.48 60.92 -52.37 0.435 3633 +3635 4 55.94 60.74 -52.44 0.435 3634 +3636 4 56.67 60.01 -53.34 0.435 3635 +3637 4 57.14 59.18 -53.41 0.435 3636 +3638 4 57.41 58.55 -53.54 0.435 3637 +3639 4 57.9 57.73 -53.69 0.435 3638 +3640 4 58.36 57.36 -54.02 0.435 3639 +3641 4 58.83 56.99 -54.35 0.435 3640 +3642 4 59.52 56.71 -55.34 0.435 3641 +3643 4 59.99 56.59 -56.1 0.435 3642 +3644 4 60.7 56.1 -57.19 0.435 3643 +3645 4 61.18 55.79 -58.11 0.435 3644 +3646 4 61.65 55.4 -58.29 0.435 3645 +3647 4 62.14 55.15 -59.74 0.435 3646 +3648 4 62.63 54.63 -60.76 0.435 3647 +3649 4 62.91 54.35 -62.06 0.435 3648 +3650 4 63.18 53.75 -62.5 0.435 3649 +3651 4 63.68 53.28 -63.96 0.435 3650 +3652 4 63.73 52.95 -64.97 0.435 3651 +3653 4 64.24 52.46 -66.3 0.435 3652 +3654 4 64.48 52.33 -66.98 0.435 3653 +3655 4 64.97 51.83 -68.08 0.435 3654 +3656 4 65.23 51.43 -68.26 0.435 3655 +3657 4 65.5 50.85 -68.84 0.435 3656 +3658 4 65.54 50.75 -69.9 0.435 3657 +3659 4 65.79 50.96 -71.84 0.435 3658 +3660 4 66.29 50.71 -73.21 0.435 3659 +3661 4 66.34 50.61 -74.43 0.435 3660 +3662 4 67.5 49.67 -75.25 0.435 3661 +3663 4 67.99 49.17 -76.35 0.435 3662 +3664 4 68.93 48.42 -76.92 0.435 3663 +3665 4 69.39 48.27 -77.31 0.435 3664 +3666 4 70.3 47.72 -77.72 0.435 3665 +3667 4 71.01 47.23 -78.89 0.435 3666 +3668 4 71.95 46.73 -79.82 0.435 3667 +3669 4 72.83 46.36 -79.84 0.435 3668 +3670 4 74.2 45.88 -80.75 0.435 3669 +3671 4 74.86 45.72 -80.83 0.435 3670 +3672 4 75.51 45.76 -80.88 0.435 3671 +3673 4 76.62 45.43 -81.12 0.435 3672 +3674 4 77.75 44.88 -81.38 0.435 3673 +3675 4 79.75 44.4 -81.83 0.435 3674 +3676 4 81.09 43.62 -81.88 0.435 3675 +3677 4 82.23 42.83 -82.01 0.435 3676 +3678 4 83.38 42.08 -82.44 0.435 3677 +3679 4 84.96 41.1 -82.58 0.435 3678 +3680 4 86.52 40.56 -82.6 0.435 3679 +3681 4 87.63 40.0 -82.7 0.435 3680 +3682 4 22.05 89.61 -16.28 1.41 3564 +3683 4 22.63 90.56 -16.17 1.41 3682 +3684 4 23.48 90.8 -15.89 0.54 3683 +3685 4 23.92 90.6 -15.83 0.54 3684 +3686 4 24.11 91.04 -15.78 0.54 3685 +3687 4 24.13 91.15 -16.82 0.54 3686 +3688 4 24.37 90.97 -17.06 0.54 3687 +3689 4 24.6 91.05 -17.65 0.54 3688 +3690 4 24.62 91.13 -18.39 0.54 3689 +3691 4 24.84 91.18 -18.84 0.54 3690 +3692 4 24.86 91.27 -19.66 0.54 3691 +3693 4 25.32 91.39 -20.61 0.54 3692 +3694 4 25.75 91.42 -20.6 0.54 3693 +3695 4 25.94 91.87 -20.55 0.54 3694 +3696 4 26.37 92.41 -21.39 0.54 3695 +3697 4 27.03 92.81 -22.76 0.435 3696 +3698 4 27.66 93.85 -23.99 0.435 3697 +3699 4 28.49 94.58 -24.28 0.435 3698 +3700 4 28.91 95.1 -24.89 0.435 3699 +3701 4 29.15 95.19 -25.56 0.435 3700 +3702 4 29.93 96.56 -25.77 0.435 3701 +3703 4 30.4 96.71 -26.95 0.435 3702 +3704 4 31.07 96.82 -27.53 0.435 3703 +3705 4 31.49 97.39 -28.59 0.435 3704 +3706 4 32.3 98.84 -29.55 0.435 3705 +3707 4 32.94 99.39 -30.23 0.435 3706 +3708 4 33.54 100.29 -30.2 0.435 3707 +3709 4 34.15 101.26 -30.77 0.435 3708 +3710 4 34.78 102.04 -31.65 0.435 3709 +3711 4 35.39 103.01 -32.36 0.435 3710 +3712 4 37.08 104.04 -32.74 0.435 3711 +3713 4 38.73 105.72 -33.28 0.435 3712 +3714 4 39.8 106.32 -34.25 0.435 3713 +3715 4 41.01 108.18 -34.63 0.435 3714 +3716 4 41.37 109.55 -35.01 0.435 3715 +3717 4 41.76 110.78 -36.23 0.435 3716 +3718 4 42.13 112.44 -37.33 0.435 3717 +3719 4 42.54 113.2 -38.14 0.435 3718 +3720 4 43.07 115.21 -38.3 0.435 3719 +3721 4 44.26 117.53 -39.09 0.435 3720 +3722 4 45.69 119.45 -39.91 0.435 3721 +3723 4 46.5 120.95 -41.32 0.435 3722 +3724 4 47.11 121.9 -41.73 0.435 3723 +3725 4 47.49 122.82 -42.08 0.435 3724 +3726 4 48.02 125.07 -42.52 0.435 3725 +3727 4 48.78 127.36 -43.09 0.435 3726 +3728 4 48.86 130.11 -44.46 0.435 3727 +3729 4 48.83 131.08 -45.48 0.435 3728 +3730 4 49.19 132.67 -46.0 0.435 3729 +3731 4 49.12 134.04 -46.61 0.435 3730 +3732 4 48.66 135.25 -48.0 0.435 3731 +3733 4 48.19 136.18 -48.98 0.435 3732 +3734 4 48.36 137.33 -49.45 0.435 3733 +3735 4 47.87 138.43 -49.95 0.435 3734 +3736 4 47.83 138.83 -49.68 0.435 3735 +3737 4 47.82 139.59 -50.66 0.435 3736 +3738 4 47.78 140.48 -50.94 0.435 3737 +3739 4 47.73 141.12 -50.73 0.435 3738 +3740 4 47.74 141.7 -52.18 0.435 3739 +3741 4 47.65 143.5 -52.9 0.435 3740 +3742 4 47.79 144.59 -52.71 0.435 3741 +3743 4 48.04 144.99 -54.46 0.435 3742 +3744 4 48.02 146.01 -55.95 0.435 3743 +3745 4 48.34 148.3 -56.98 0.435 3744 +3746 4 48.51 149.47 -57.61 0.435 3745 +3747 4 49.52 150.91 -58.19 0.435 3746 +3748 4 50.63 154.51 -58.77 0.435 3747 +3749 4 50.52 156.52 -59.47 0.435 3748 +3750 4 51.36 157.53 -60.33 0.435 3749 +3751 4 52.3 159.75 -60.15 0.435 3750 +3752 4 53.1 161.19 -60.96 0.435 3751 +3753 4 22.85 90.51 -16.09 1.515 3683 +3754 4 22.57 92.13 -17.13 1.515 3753 +3755 4 22.02 93.8 -16.97 1.515 3754 +3756 4 21.93 95.3 -16.82 1.515 3755 +3757 4 21.88 96.76 -18.26 1.515 3756 +3758 4 21.34 98.44 -18.1 1.515 3757 +3759 4 20.58 100.67 -19.09 1.515 3758 +3760 4 20.06 102.74 -20.54 1.515 3759 +3761 4 19.98 104.02 -20.41 1.515 3760 +3762 4 19.9 105.31 -20.28 1.515 3761 +3763 4 20.05 106.96 -21.54 1.515 3762 +3764 4 20.46 107.53 -21.47 1.515 3763 +3765 4 21.29 107.75 -20.98 0.435 3764 +3766 4 21.91 108.22 -20.91 0.435 3765 +3767 4 22.1 108.63 -20.56 0.435 3766 +3768 4 22.25 109.21 -19.75 0.435 3767 +3769 4 22.42 109.82 -19.23 0.435 3768 +3770 4 22.57 110.63 -18.54 0.435 3769 +3771 4 22.96 111.03 -17.96 0.435 3770 +3772 4 23.12 111.62 -17.29 0.435 3771 +3773 4 23.24 112.86 -16.56 0.435 3772 +3774 4 23.4 113.5 -16.34 0.435 3773 +3775 4 23.93 115.19 -15.47 0.435 3774 +3776 4 24.5 116.24 -14.82 0.435 3775 +3777 4 24.86 117.31 -14.32 0.435 3776 +3778 4 25.26 117.74 -14.05 0.435 3777 +3779 4 25.63 118.35 -13.52 0.435 3778 +3780 4 26.03 118.74 -12.8 0.435 3779 +3781 4 26.65 119.21 -12.74 0.435 3780 +3782 4 26.82 119.6 -12.24 0.435 3781 +3783 4 27.21 120.26 -12.01 0.435 3782 +3784 4 27.36 121.12 -11.84 0.435 3783 +3785 4 28.04 121.27 -12.93 0.435 3784 +3786 4 29.51 122.22 -12.8 0.435 3785 +3787 4 31.01 125.77 -12.4 0.435 3786 +3788 4 32.36 128.42 -12.09 0.435 3787 +3789 4 33.15 129.2 -10.71 0.435 3788 +3790 4 34.13 130.76 -10.46 0.435 3789 +3791 4 35.32 132.3 -9.97 0.435 3790 +3792 4 36.59 132.81 -9.89 0.435 3791 +3793 4 36.94 133.62 -9.04 0.435 3792 +3794 4 37.74 134.69 -8.38 0.435 3793 +3795 4 38.48 136.41 -7.73 0.435 3794 +3796 4 39.86 138.15 -6.76 0.435 3795 +3797 4 41.33 138.85 -6.5 0.435 3796 +3798 4 43.14 140.85 -5.65 0.435 3797 +3799 4 44.74 142.57 -4.53 0.435 3798 +3800 4 45.93 144.1 -3.9 0.435 3799 +3801 4 48.45 145.31 -3.57 0.435 3800 +3802 4 49.44 146.67 -3.4 0.435 3801 +3803 4 49.96 148.61 -2.89 0.435 3802 +3804 4 51.36 150.41 -2.59 0.435 3803 +3805 4 52.91 153.29 -2.18 0.435 3804 +3806 4 54.07 155.51 -1.92 0.435 3805 +3807 4 54.9 155.69 -0.98 0.435 3806 +3808 4 55.92 156.81 -0.76 0.435 3807 +3809 4 57.57 157.67 0.41 0.435 3808 +3810 4 57.69 158.39 1.92 0.435 3809 +3811 4 58.75 158.89 1.99 0.435 3810 +3812 4 59.16 158.81 3.05 0.435 3811 +3813 4 59.29 159.6 3.89 0.435 3812 +3814 4 59.69 159.73 4.97 0.435 3813 +3815 4 60.56 159.54 5.27 0.435 3814 +3816 4 61.21 159.58 5.29 0.435 3815 +3817 4 61.15 160.41 5.6 0.435 3816 +3818 4 61.32 161.07 5.75 0.435 3817 +3819 4 61.25 161.86 6.35 0.435 3818 +3820 4 61.2 162.45 6.95 0.435 3819 +3821 4 60.73 163.05 7.15 0.435 3820 +3822 4 60.67 163.62 7.88 0.435 3821 +3823 4 60.6 164.69 8.07 0.435 3822 +3824 4 60.96 165.52 8.62 0.435 3823 +3825 4 61.32 166.55 9.41 0.435 3824 +3826 4 62.1 167.65 9.76 0.435 3825 +3827 4 63.67 170.32 10.15 0.435 3826 +3828 4 64.03 170.62 11.7 0.435 3827 +3829 4 64.64 171.04 12.21 0.435 3828 +3830 4 64.59 171.36 13.45 0.435 3829 +3831 4 64.55 171.99 13.58 0.435 3830 +3832 4 65.14 172.28 15.29 0.435 3831 +3833 4 65.47 173.28 16.37 0.435 3832 +3834 4 65.67 173.21 17.13 0.435 3833 +3835 4 66.47 174.04 18.07 0.435 3834 +3836 4 66.8 175.29 18.81 0.435 3835 +3837 4 68.03 175.92 19.88 0.435 3836 +3838 4 68.55 177.62 20.6 0.435 3837 +3839 4 69.3 179.31 21.39 0.435 3838 +3840 4 70.3 180.15 22.33 0.435 3839 +3841 4 70.45 180.94 23.32 0.435 3840 +3842 4 71.67 181.79 24.26 0.435 3841 +3843 4 72.27 182.19 24.92 0.435 3842 +3844 4 73.02 183.94 25.35 0.435 3843 +3845 4 73.59 185.01 25.84 0.435 3844 +3846 4 74.2 185.45 26.21 0.435 3845 +3847 4 75.35 187.62 26.91 0.435 3846 +3848 4 75.7 188.68 27.41 0.435 3847 +3849 4 76.07 189.76 27.75 0.435 3848 +3850 4 76.68 190.17 28.34 0.435 3849 +3851 4 77.96 190.2 28.83 0.435 3850 +3852 4 78.35 190.59 29.55 0.435 3851 +3853 4 79.91 193.22 30.23 0.435 3852 +3854 4 80.0 194.85 31.39 0.435 3853 +3855 4 80.81 194.94 33.15 0.435 3854 +3856 4 81.56 196.18 34.2 0.435 3855 +3857 4 82.14 197.04 34.75 0.435 3856 +3858 4 82.52 197.37 36.0 0.435 3857 +3859 4 83.57 197.54 37.1 0.435 3858 +3860 4 83.9 198.53 38.27 0.435 3859 +3861 4 85.0 200.99 40.36 0.435 3860 +3862 4 85.41 200.94 41.12 0.435 3861 +3863 4 85.78 201.53 41.93 0.435 3862 +3864 4 86.56 202.58 42.81 0.435 3863 +3865 4 87.13 203.33 44.26 0.435 3864 +3866 4 87.48 204.13 45.26 0.435 3865 +3867 4 88.09 204.53 45.92 0.435 3866 +3868 4 88.65 205.58 46.79 0.435 3867 +3869 4 26.62 122.57 -11.63 0.435 3784 +3870 4 26.15 123.19 -11.58 0.435 3869 +3871 4 26.08 123.99 -10.97 0.435 3870 +3872 4 26.02 124.54 -9.94 0.435 3871 +3873 4 25.95 125.33 -9.25 0.435 3872 +3874 4 25.86 126.34 -8.55 0.435 3873 +3875 4 25.32 128.01 -8.24 0.435 3874 +3876 4 25.66 129.53 -7.99 0.435 3875 +3877 4 25.56 131.03 -7.84 0.435 3876 +3878 4 25.48 132.31 -7.71 0.435 3877 +3879 4 24.9 134.64 -7.48 0.435 3878 +3880 4 24.82 135.93 -7.35 0.435 3879 +3881 4 25.11 138.1 -7.05 0.435 3880 +3882 4 24.95 140.66 -6.78 0.435 3881 +3883 4 25.02 142.82 -6.56 0.435 3882 +3884 4 25.06 145.62 -6.27 0.435 3883 +3885 4 24.89 148.18 -6.01 0.435 3884 +3886 4 25.54 151.67 -5.63 0.435 3885 +3887 4 25.69 152.73 -5.29 0.435 3886 +3888 4 25.78 154.41 -4.66 0.435 3887 +3889 4 26.29 156.35 -4.14 0.435 3888 +3890 4 26.58 158.48 -3.55 0.435 3889 +3891 4 26.54 159.62 -4.1 0.435 3890 +3892 4 26.48 160.77 -4.74 0.435 3891 +3893 4 26.82 162.34 -5.02 0.435 3892 +3894 4 27.01 163.3 -5.75 0.435 3893 +3895 4 27.37 164.93 -6.7 0.435 3894 +3896 4 27.71 165.68 -5.19 0.435 3895 +3897 4 27.21 166.71 -4.94 0.435 3896 +3898 4 27.41 167.2 -5.41 0.435 3897 +3899 4 27.58 167.57 -4.61 0.435 3898 +3900 4 27.72 168.65 -4.5 0.435 3899 +3901 4 27.67 168.98 -3.49 0.435 3900 +3902 4 27.8 170.46 -3.03 0.435 3901 +3903 4 27.72 171.53 -2.84 0.435 3902 +3904 4 27.65 172.54 -2.29 0.435 3903 +3905 4 27.97 174.27 -2.03 0.435 3904 +3906 4 27.44 175.5 -1.46 0.435 3905 +3907 4 27.57 176.54 -0.98 0.435 3906 +3908 4 19.98 108.04 -21.43 1.515 3764 +3909 4 19.66 109.74 -21.26 1.515 3908 +3910 4 19.6 110.82 -21.15 1.515 3909 +3911 4 19.52 111.88 -21.04 1.515 3910 +3912 4 19.03 112.76 -20.96 1.515 3911 +3913 4 18.38 112.89 -21.57 0.65 3912 +3914 4 18.17 113.1 -21.62 0.975 3913 +3915 4 17.74 112.85 -21.59 0.975 3914 +3916 4 17.58 113.02 -23.39 0.975 3915 +3917 4 17.38 113.1 -24.29 0.975 3916 +3918 4 17.18 113.2 -25.48 0.975 3917 +3919 4 16.99 113.28 -26.31 0.975 3918 +3920 4 16.58 113.36 -27.37 0.975 3919 +3921 4 16.36 113.85 -28.07 0.975 3920 +3922 4 15.72 114.12 -28.97 0.975 3921 +3923 4 15.09 114.7 -30.8 0.975 3922 +3924 4 13.8 114.94 -31.78 0.975 3923 +3925 4 12.88 116.07 -32.74 0.76 3924 +3926 4 12.91 116.18 -33.79 0.76 3925 +3927 4 12.0 117.03 -34.25 0.65 3926 +3928 4 11.56 117.48 -34.74 0.65 3927 +3929 4 11.33 118.52 -36.52 0.65 3928 +3930 4 11.32 118.5 -36.3 0.65 3929 +3931 4 10.87 118.9 -36.27 0.65 3930 +3932 4 11.3 119.47 -37.33 0.54 3931 +3933 4 11.49 119.94 -37.5 0.54 3932 +3934 4 11.46 120.89 -38.31 0.54 3933 +3935 4 10.95 122.16 -38.26 0.54 3934 +3936 4 10.95 122.13 -38.05 0.54 3935 +3937 4 10.97 122.24 -39.09 0.54 3936 +3938 4 11.0 122.36 -40.28 0.54 3937 +3939 4 10.32 123.3 -41.33 0.54 3938 +3940 4 10.28 123.11 -39.47 0.54 3939 +3941 4 10.46 122.99 -38.19 0.54 3940 +3942 4 10.46 123.55 -39.49 0.54 3941 +3943 4 10.5 123.72 -41.13 0.54 3942 +3944 4 10.25 124.37 -41.29 0.54 3943 +3945 4 10.23 124.84 -41.62 0.54 3944 +3946 4 10.24 125.12 -42.2 0.54 3945 +3947 4 10.2 125.79 -42.43 0.54 3946 +3948 4 9.76 126.05 -43.09 0.54 3947 +3949 4 9.77 126.64 -44.62 0.54 3948 +3950 4 9.77 126.91 -45.11 0.54 3949 +3951 4 9.76 127.45 -46.11 0.54 3950 +3952 4 9.37 127.59 -47.69 0.54 3951 +3953 4 9.39 127.67 -48.51 0.54 3952 +3954 4 9.17 128.21 -49.74 0.54 3953 +3955 4 8.77 128.25 -50.35 0.54 3954 +3956 4 8.32 128.98 -51.34 0.54 3955 +3957 4 7.86 129.7 -52.33 0.54 3956 +3958 4 7.84 130.44 -53.31 0.54 3957 +3959 4 8.0 131.85 -54.13 0.54 3958 +3960 4 8.02 132.17 -55.16 0.54 3959 +3961 4 8.02 132.72 -56.38 0.54 3960 +3962 4 8.01 133.2 -56.78 0.54 3961 +3963 4 8.21 133.97 -57.83 0.54 3962 +3964 4 8.4 134.48 -58.38 0.54 3963 +3965 4 8.42 134.83 -59.7 0.54 3964 +3966 4 8.39 135.51 -60.0 0.54 3965 +3967 4 8.79 137.01 -61.65 0.54 3966 +3968 4 8.22 139.44 -62.38 0.54 3967 +3969 4 7.52 140.56 -63.19 0.54 3968 +3970 4 7.46 141.4 -62.88 0.54 3969 +3971 4 6.8 142.09 -63.73 0.54 3970 +3972 4 6.63 142.25 -65.38 0.54 3971 +3973 4 6.41 142.81 -66.75 0.54 3972 +3974 4 6.23 142.96 -68.25 0.54 3973 +3975 4 5.81 143.5 -69.63 0.54 3974 +3976 4 5.31 144.6 -70.07 0.54 3975 +3977 4 4.64 144.97 -69.81 0.54 3976 +3978 4 3.74 146.15 -71.37 0.54 3977 +3979 4 3.7 146.79 -71.23 0.54 3978 +3980 4 3.22 147.39 -71.03 0.54 3979 +3981 4 2.73 148.49 -71.45 0.54 3980 +3982 4 2.69 149.18 -71.84 0.54 3981 +3983 4 2.24 149.85 -72.3 0.54 3982 +3984 4 2.46 150.42 -73.52 0.54 3983 +3985 4 2.65 151.18 -74.42 0.54 3984 +3986 4 2.64 151.67 -74.97 0.54 3985 +3987 4 2.61 152.38 -75.5 0.54 3986 +3988 4 3.2 153.76 -76.03 0.54 3987 +3989 4 3.17 154.21 -76.12 0.54 3988 +3990 4 2.06 154.84 -76.68 0.54 3989 +3991 4 1.84 155.35 -77.47 0.54 3990 +3992 4 1.63 155.64 -78.27 0.54 3991 +3993 4 0.76 156.34 -79.36 0.54 3992 +3994 4 0.08 156.48 -79.06 0.54 3993 +3995 4 -0.38 157.08 -78.77 0.54 3994 +3996 4 -1.29 157.94 -79.24 0.54 3995 +3997 4 -1.26 158.07 -80.5 0.54 3996 +3998 4 -1.69 158.61 -81.88 0.54 3997 +3999 4 -1.5 159.58 -82.68 0.54 3998 +4000 4 -1.51 160.62 -84.39 0.54 3999 +4001 4 -2.2 161.21 -84.19 0.435 4000 +4002 4 -2.7 162.04 -84.12 0.435 4001 +4003 4 -2.72 162.26 -84.18 0.435 4002 +4004 4 10.87 119.2 -37.06 0.65 3931 +4005 4 10.41 119.58 -36.88 0.65 4004 +4006 4 10.44 119.74 -38.38 0.65 4005 +4007 4 9.99 120.2 -38.94 0.65 4006 +4008 4 9.81 120.32 -40.22 0.65 4007 +4009 4 9.58 120.81 -40.85 0.65 4008 +4010 4 8.93 121.28 -41.64 0.65 4009 +4011 4 8.8 120.58 -43.38 0.65 4010 +4012 4 8.16 120.31 -43.2 0.65 4011 +4013 4 7.76 120.43 -44.62 0.65 4012 +4014 4 7.39 120.36 -46.37 0.65 4013 +4015 4 6.36 120.02 -47.94 0.65 4014 +4016 4 5.35 119.43 -49.16 0.54 4015 +4017 4 5.45 118.99 -51.16 0.54 4016 +4018 4 4.67 117.68 -51.69 0.54 4017 +4019 4 4.72 117.13 -52.65 0.54 4018 +4020 4 3.51 116.3 -53.67 0.54 4019 +4021 4 2.68 116.14 -54.76 0.54 4020 +4022 4 1.92 115.15 -56.16 0.54 4021 +4023 4 1.13 114.59 -57.59 0.54 4022 +4024 4 0.09 114.42 -58.84 0.54 4023 +4025 4 -1.18 114.2 -59.57 0.54 4024 +4026 4 -1.34 114.33 -60.92 0.54 4025 +4027 4 -1.96 114.42 -62.21 0.54 4026 +4028 4 -3.06 114.9 -63.24 0.54 4027 +4029 4 -4.1 114.97 -64.69 0.54 4028 +4030 4 -5.15 115.07 -66.28 0.54 4029 +4031 4 -6.21 114.81 -66.56 0.54 4030 +4032 4 -6.22 114.79 -66.41 0.54 4031 +4033 4 -6.84 114.89 -67.69 0.54 4032 +4034 4 -7.87 114.74 -69.02 0.54 4033 +4035 4 -7.83 114.89 -70.43 0.54 4034 +4036 4 -9.67 113.88 -72.31 0.54 4035 +4037 4 -10.51 113.98 -73.83 0.54 4036 +4038 4 -11.54 113.8 -74.93 0.54 4037 +4039 4 -13.68 113.5 -75.46 0.54 4038 +4040 4 -14.51 113.32 -76.33 0.54 4039 +4041 4 -15.3 112.51 -77.41 0.54 4040 +4042 4 -16.59 112.47 -77.82 0.54 4041 +4043 4 -18.43 111.46 -79.71 0.54 4042 +4044 4 -19.48 111.46 -80.41 0.54 4043 +4045 4 -21.17 110.72 -80.6 0.54 4044 +4046 4 -22.67 110.43 -80.74 0.54 4045 +4047 4 -23.5 109.98 -81.19 0.54 4046 +4048 4 -25.47 110.32 -81.49 0.54 4047 +4049 4 19.18 113.86 -20.92 1.515 3912 +4050 4 19.09 115.37 -20.76 1.515 4049 +4051 4 18.99 116.87 -20.61 1.515 4050 +4052 4 19.52 118.83 -20.39 1.515 4051 +4053 4 20.31 120.49 -21.26 1.515 4052 +4054 4 20.66 121.8 -21.12 1.515 4053 +4055 4 21.2 123.55 -20.92 1.515 4054 +4056 4 21.27 125.71 -20.7 1.515 4055 +4057 4 21.21 126.84 -20.58 1.515 4056 +4058 4 21.88 126.7 -21.11 0.54 4057 +4059 4 23.14 127.43 -21.01 0.54 4058 +4060 4 24.0 127.48 -20.98 0.65 4059 +4061 4 25.46 128.43 -20.85 0.65 4060 +4062 4 26.96 128.74 -20.78 0.65 4061 +4063 4 28.05 128.59 -20.77 0.65 4062 +4064 4 29.35 128.67 -20.73 0.65 4063 +4065 4 29.86 127.99 -22.22 0.435 4064 +4066 4 30.13 127.36 -22.28 0.435 4065 +4067 4 31.32 125.72 -22.42 0.435 4066 +4068 4 32.5 124.28 -22.54 0.435 4067 +4069 4 34.04 123.72 -22.56 0.435 4068 +4070 4 35.99 123.85 -22.5 0.435 4069 +4071 4 39.06 123.39 -22.56 0.435 4070 +4072 4 40.87 122.43 -22.61 0.435 4071 +4073 4 43.74 121.05 -22.16 0.435 4072 +4074 4 45.94 120.75 -22.14 0.435 4073 +4075 4 48.53 120.9 -21.99 0.435 4074 +4076 4 50.45 121.45 -21.89 0.435 4075 +4077 4 53.72 121.21 -21.83 0.435 4076 +4078 4 57.2 121.21 -21.75 0.435 4077 +4079 4 59.79 121.38 -21.67 0.435 4078 +4080 4 62.48 123.26 -21.41 0.435 4079 +4081 4 65.65 124.77 -21.48 0.435 4080 +4082 4 69.23 126.7 -21.2 0.435 4081 +4083 4 72.44 127.33 -21.06 0.435 4082 +4084 4 75.21 127.93 -20.93 0.435 4083 +4085 4 78.27 127.92 -20.93 0.435 4084 +4086 4 81.82 127.24 -22.8 0.435 4085 +4087 4 85.38 126.18 -22.82 0.435 4086 +4088 4 89.98 125.38 -22.8 0.435 4087 +4089 4 93.42 125.8 -22.67 0.435 4088 +4090 4 96.63 126.43 -22.53 0.435 4089 +4091 4 99.06 125.93 -22.52 0.435 4090 +4092 4 101.28 124.99 -22.57 0.435 4091 +4093 4 103.3 124.04 -22.62 0.435 4092 +4094 4 105.73 123.33 -22.64 0.435 4093 +4095 4 107.68 123.45 -22.58 0.435 4094 +4096 4 110.7 123.63 -22.49 0.435 4095 +4097 4 112.38 124.59 -22.35 0.435 4096 +4098 4 30.61 129.4 -20.63 0.54 4064 +4099 4 32.57 129.3 -20.59 0.54 4098 +4100 4 34.3 129.19 -20.48 0.54 4099 +4101 4 36.24 129.3 -20.42 0.54 4100 +4102 4 38.42 129.21 -20.38 0.54 4101 +4103 4 39.99 129.51 -22.28 0.54 4102 +4104 4 42.14 129.64 -22.21 0.54 4103 +4105 4 42.55 130.4 -23.03 0.54 4104 +4106 4 43.57 131.54 -22.89 0.54 4105 +4107 4 44.52 133.53 -22.66 0.54 4106 +4108 4 45.05 135.51 -22.44 0.54 4107 +4109 4 45.7 138.99 -22.06 0.54 4108 +4110 4 47.59 143.19 -21.58 0.54 4109 +4111 4 47.5 144.13 -20.21 0.54 4110 +4112 4 48.89 146.15 -19.97 0.54 4111 +4113 4 50.97 147.57 -19.85 0.54 4112 +4114 4 52.95 149.97 -18.64 0.54 4113 +4115 4 54.56 152.22 -18.37 0.54 4114 +4116 4 56.0 153.17 -18.24 0.54 4115 +4117 4 58.05 154.7 -17.13 0.54 4116 +4118 4 59.17 157.04 -15.89 0.54 4117 +4119 4 59.91 158.98 -15.13 0.54 4118 +4120 4 60.44 160.44 -14.22 0.54 4119 +4121 4 61.28 160.68 -13.95 0.54 4120 +4122 4 62.74 161.62 -13.74 0.54 4121 +4123 4 63.74 162.96 -13.58 0.54 4122 +4124 4 64.53 163.79 -12.65 0.54 4123 +4125 4 65.91 165.75 -11.81 0.54 4124 +4126 4 66.85 167.66 -10.76 0.54 4125 +4127 4 67.14 169.3 -9.6 0.54 4126 +4128 4 67.89 170.74 -8.31 0.54 4127 +4129 4 68.43 172.22 -7.61 0.54 4128 +4130 4 69.63 173.51 -6.69 0.54 4129 +4131 4 70.22 173.89 -5.81 0.54 4130 +4132 4 72.11 175.13 -6.16 0.54 4131 +4133 4 72.49 175.5 -5.29 0.54 4132 +4134 4 74.4 175.45 -3.52 0.54 4133 +4135 4 76.56 175.57 -3.38 0.54 4134 +4136 4 77.63 175.59 -2.9 0.54 4135 +4137 4 78.68 175.53 -1.67 0.54 4136 +4138 4 79.31 176.0 -1.61 0.54 4137 +4139 4 80.18 176.05 -1.59 0.54 4138 +4140 4 82.28 177.04 -1.43 0.54 4139 +4141 4 84.52 179.32 -1.14 0.54 4140 +4142 4 85.3 180.11 0.22 0.54 4141 +4143 4 86.27 181.07 2.08 0.54 4142 +4144 4 86.59 182.81 2.26 0.54 4143 +4145 4 87.32 184.75 3.01 0.54 4144 +4146 4 87.26 185.26 4.12 0.54 4145 +4147 4 87.4 185.81 5.31 0.54 4146 +4148 4 87.54 186.83 6.1 0.54 4147 +4149 4 87.67 188.11 6.31 0.54 4148 +4150 4 88.24 189.19 6.81 0.54 4149 +4151 4 88.58 190.21 7.6 0.54 4150 +4152 4 88.99 190.65 7.88 0.54 4151 +4153 4 44.5 130.01 -22.12 0.54 4104 +4154 4 47.27 130.82 -21.97 0.54 4153 +4155 4 50.0 132.49 -21.81 0.54 4154 +4156 4 51.7 133.59 -22.93 0.54 4155 +4157 4 54.21 135.04 -22.72 0.54 4156 +4158 4 56.75 136.07 -22.71 0.54 4157 +4159 4 58.21 137.27 -23.0 0.54 4158 +4160 4 59.53 137.44 -23.78 0.54 4159 +4161 4 62.07 138.47 -23.84 0.54 4160 +4162 4 63.74 139.44 -23.7 0.54 4161 +4163 4 65.09 138.93 -24.25 0.54 4162 +4164 4 66.86 138.66 -24.77 0.54 4163 +4165 4 70.11 138.64 -24.69 0.54 4164 +4166 4 73.04 140.55 -24.49 0.54 4165 +4167 4 74.89 142.17 -24.28 0.54 4166 +4168 4 76.12 143.61 -24.86 0.54 4167 +4169 4 78.29 143.81 -25.47 0.54 4168 +4170 4 81.27 144.9 -25.73 0.54 4169 +4171 4 84.64 146.62 -25.55 0.54 4170 +4172 4 86.97 147.9 -26.12 0.54 4171 +4173 4 88.24 148.46 -26.4 0.54 4172 +4174 4 90.65 148.72 -27.38 0.54 4173 +4175 4 94.09 149.39 -27.61 0.54 4174 +4176 4 97.55 150.17 -28.87 0.54 4175 +4177 4 100.52 151.21 -28.69 0.54 4176 +4178 4 102.0 152.24 -29.24 0.54 4177 +4179 4 103.54 152.45 -30.3 0.54 4178 +4180 4 105.05 152.54 -30.33 0.54 4179 +4181 4 105.93 152.66 -30.9 0.54 4180 +4182 4 108.04 153.67 -30.98 0.54 4181 +4183 4 109.51 154.65 -31.21 0.54 4182 +4184 4 110.77 155.68 -31.91 0.54 4183 +4185 4 112.3 155.85 -32.61 0.54 4184 +4186 4 114.43 156.62 -32.55 0.54 4185 +4187 4 117.2 157.5 -33.0 0.54 4186 +4188 4 118.68 158.49 -33.24 0.54 4187 +4189 4 119.98 158.63 -33.8 0.54 4188 +4190 4 120.89 158.59 -34.91 0.54 4189 +4191 4 121.76 158.67 -35.18 0.54 4190 +4192 4 122.88 158.63 -36.29 0.54 4191 +4193 4 124.61 158.76 -36.38 0.54 4192 +4194 4 125.69 158.82 -36.35 0.54 4193 +4195 4 126.6 158.78 -37.47 0.54 4194 +4196 4 127.05 158.88 -38.2 0.54 4195 +4197 4 127.71 158.75 -38.57 0.54 4196 +4198 4 21.84 127.26 -20.67 1.515 4057 +4199 4 21.95 128.77 -20.52 1.515 4198 +4200 4 22.31 130.93 -22.24 1.41 4199 +4201 4 22.62 132.68 -22.06 1.41 4200 +4202 4 22.95 134.41 -21.87 1.41 4201 +4203 4 23.48 136.38 -21.65 1.41 4202 +4204 4 23.84 138.32 -23.4 1.41 4203 +4205 4 23.99 139.4 -23.29 1.41 4204 +4206 4 24.13 140.72 -23.3 1.41 4205 +4207 4 24.27 142.02 -23.16 1.41 4206 +4208 4 24.16 143.74 -22.99 1.41 4207 +4209 4 24.27 145.25 -22.83 1.41 4208 +4210 4 24.38 146.97 -22.65 1.41 4209 +4211 4 24.55 147.85 -22.55 1.515 4210 +4212 4 24.3 148.31 -22.51 1.515 4211 +4213 4 23.55 148.94 -20.58 0.435 4212 +4214 4 23.09 149.35 -20.62 0.54 4213 +4215 4 22.13 150.8 -20.49 0.54 4214 +4216 4 21.35 153.48 -21.66 0.54 4215 +4217 4 21.38 156.48 -21.35 0.54 4216 +4218 4 21.85 159.3 -21.05 0.54 4217 +4219 4 23.2 161.76 -20.76 0.54 4218 +4220 4 23.82 162.73 -21.4 0.54 4219 +4221 4 23.71 164.44 -21.16 0.435 4220 +4222 4 23.43 166.07 -22.42 0.435 4221 +4223 4 22.66 168.51 -23.4 0.435 4222 +4224 4 22.01 171.71 -23.16 0.435 4223 +4225 4 21.61 174.69 -22.86 0.435 4224 +4226 4 21.57 175.4 -22.86 0.435 4225 +4227 4 21.51 176.26 -22.77 0.54 4226 +4228 4 21.38 178.39 -22.55 0.54 4227 +4229 4 20.61 180.29 -22.38 0.54 4228 +4230 4 20.35 181.2 -23.04 0.54 4229 +4231 4 19.39 182.65 -22.91 0.54 4230 +4232 4 18.88 184.2 -23.44 0.54 4231 +4233 4 17.42 186.69 -23.22 0.54 4232 +4234 4 16.97 187.42 -24.21 0.54 4233 +4235 4 16.93 188.35 -24.87 0.54 4234 +4236 4 16.43 189.71 -25.72 0.54 4235 +4237 4 15.73 191.35 -27.3 0.54 4236 +4238 4 24.85 149.8 -22.34 1.515 4212 +4239 4 24.98 151.31 -22.18 1.515 4238 +4240 4 25.43 152.54 -22.05 1.515 4239 +4241 4 25.86 153.16 -23.48 0.54 4240 +4242 4 26.28 153.61 -23.42 0.54 4241 +4243 4 26.62 154.33 -21.9 0.54 4242 +4244 4 26.8 154.18 -20.19 0.54 4243 +4245 4 27.47 154.32 -21.21 0.54 4244 +4246 4 27.88 155.1 -22.18 0.54 4245 +4247 4 28.73 155.59 -22.18 0.54 4246 +4248 4 29.15 156.15 -23.16 0.54 4247 +4249 4 29.78 156.41 -23.12 0.54 4248 +4250 4 29.99 157.21 -24.54 0.54 4249 +4251 4 30.77 158.56 -24.38 0.54 4250 +4252 4 30.98 158.5 -23.71 0.54 4251 +4253 4 31.35 159.1 -22.96 0.54 4252 +4254 4 31.95 160.04 -23.3 0.54 4253 +4255 4 32.79 161.05 -24.16 0.54 4254 +4256 4 33.39 161.99 -24.42 0.54 4255 +4257 4 33.97 163.34 -24.57 0.54 4256 +4258 4 34.8 164.09 -24.92 0.54 4257 +4259 4 35.59 165.47 -25.29 0.54 4258 +4260 4 36.79 167.06 -25.17 0.54 4259 +4261 4 37.59 168.18 -25.04 0.54 4260 +4262 4 38.86 168.7 -25.02 0.54 4261 +4263 4 39.86 170.05 -24.86 0.54 4262 +4264 4 41.04 171.85 -24.65 0.54 4263 +4265 4 42.05 173.21 -24.63 0.54 4264 +4266 4 42.8 175.23 -24.86 0.54 4265 +4267 4 43.37 176.83 -25.21 0.54 4266 +4268 4 44.34 178.66 -25.45 0.54 4267 +4269 4 44.71 180.0 -25.68 0.54 4268 +4270 4 45.06 181.59 -26.11 0.54 4269 +4271 4 45.44 182.8 -27.03 0.54 4270 +4272 4 45.38 184.16 -27.49 0.54 4271 +4273 4 45.31 185.27 -27.83 0.54 4272 +4274 4 45.48 186.4 -28.08 0.54 4273 +4275 4 46.04 188.0 -28.51 0.54 4274 +4276 4 46.64 188.89 -28.48 0.54 4275 +4277 4 46.79 189.98 -28.44 0.54 4276 +4278 4 47.2 190.75 -29.25 0.54 4277 +4279 4 47.6 191.2 -29.2 0.54 4278 +4280 4 47.57 191.89 -29.51 0.54 4279 +4281 4 47.93 193.21 -29.43 0.54 4280 +4282 4 48.68 195.26 -29.96 0.54 4281 +4283 4 49.29 196.25 -30.75 0.54 4282 +4284 4 50.06 198.02 -30.62 0.54 4283 +4285 4 51.53 199.04 -31.16 0.54 4284 +4286 4 52.58 200.08 -32.08 0.54 4285 +4287 4 53.6 201.81 -33.54 0.54 4286 +4288 4 55.02 203.4 -33.34 0.54 4287 +4289 4 55.57 205.23 -33.81 0.54 4288 +4290 4 56.15 206.83 -34.24 0.54 4289 +4291 4 56.65 209.01 -34.08 0.54 4290 +4292 4 57.16 211.19 -33.84 0.54 4291 +4293 4 57.31 212.78 -34.35 0.54 4292 +4294 4 57.67 213.88 -34.3 0.54 4293 +4295 4 58.03 215.28 -34.91 0.54 4294 +4296 4 59.03 216.86 -34.87 0.54 4295 +4297 4 60.61 219.11 -34.6 0.54 4296 +4298 4 62.89 220.99 -34.64 0.54 4297 +4299 4 64.75 222.42 -34.68 0.54 4298 +4300 4 65.32 224.0 -34.88 0.54 4299 +4301 4 65.71 224.89 -34.86 0.54 4300 +4302 4 66.67 226.68 -34.72 0.54 4301 +4303 4 66.58 228.19 -34.64 0.54 4302 +4304 4 66.62 231.25 -34.85 0.54 4303 +4305 4 67.17 233.02 -34.88 0.54 4304 +4306 4 68.56 234.86 -34.96 0.54 4305 +4307 4 70.2 236.69 -34.74 0.54 4306 +4308 4 71.38 238.74 -34.95 0.54 4307 +4309 4 72.16 240.37 -35.52 0.54 4308 +4310 4 72.54 241.53 -35.99 0.54 4309 +4311 4 73.78 243.24 -37.14 0.54 4310 +4312 4 74.13 244.6 -37.51 0.54 4311 +4313 4 74.5 246.02 -38.33 0.54 4312 +4314 4 74.45 246.92 -38.62 0.54 4313 +4315 4 74.84 247.86 -39.12 0.54 4314 +4316 4 75.2 249.48 -39.77 0.54 4315 +4317 4 75.12 251.03 -40.14 0.54 4316 +4318 4 75.45 252.78 -40.11 0.54 4317 +4319 4 75.94 255.18 -39.85 0.54 4318 +4320 4 76.86 257.82 -39.55 0.54 4319 +4321 4 77.19 259.56 -39.36 0.54 4320 +4322 4 77.26 261.72 -39.21 0.54 4321 +4323 4 76.78 262.86 -40.01 0.54 4322 +4324 4 76.58 266.08 -39.68 0.54 4323 +4325 4 77.28 268.7 -39.39 0.54 4324 +4326 4 78.82 271.59 -39.06 0.54 4325 +4327 4 79.58 272.88 -39.05 0.54 4326 +4328 4 80.77 273.9 -37.64 0.54 4327 +4329 4 80.79 273.99 -38.46 0.54 4328 +4330 4 81.35 275.58 -38.81 0.54 4329 +4331 4 81.76 276.3 -39.25 0.54 4330 +4332 4 82.28 278.51 -39.31 0.54 4331 +4333 4 82.62 280.04 -39.22 0.54 4332 +4334 4 82.72 281.99 -39.09 0.54 4333 +4335 4 83.04 283.73 -38.91 0.54 4334 +4336 4 83.93 286.81 -38.72 0.54 4335 +4337 4 84.59 290.09 -38.43 0.54 4336 +4338 4 84.62 293.1 -38.12 0.54 4337 +4339 4 84.46 295.45 -37.88 0.54 4338 +4340 4 84.52 297.84 -37.71 0.54 4339 +4341 4 84.74 301.29 -37.35 0.54 4340 +4342 4 85.27 303.26 -37.13 0.54 4341 +4343 4 85.74 306.08 -36.83 0.54 4342 +4344 4 85.82 308.29 -37.05 0.54 4343 +4345 4 86.03 311.96 -36.74 0.54 4344 +4346 4 86.21 315.85 -36.33 0.54 4345 +4347 4 86.03 318.63 -36.05 0.54 4346 +4348 4 86.48 321.88 -35.7 0.54 4347 +4349 4 86.75 324.48 -35.43 0.54 4348 +4350 4 87.27 326.47 -35.44 0.54 4349 +4351 4 87.41 328.04 -35.88 0.54 4350 +4352 4 87.95 329.82 -35.9 0.54 4351 +4353 4 88.08 331.34 -35.89 0.54 4352 +4354 4 30.68 156.34 -24.01 0.54 4249 +4355 4 31.78 156.2 -24.08 0.54 4354 +4356 4 32.45 156.03 -24.15 0.54 4355 +4357 4 33.5 156.53 -24.16 0.54 4356 +4358 4 34.12 157.02 -24.31 0.54 4357 +4359 4 34.99 157.07 -24.22 0.54 4358 +4360 4 35.6 157.51 -23.93 0.54 4359 +4361 4 36.01 157.44 -23.02 0.54 4360 +4362 4 36.19 157.83 -22.3 0.54 4361 +4363 4 36.58 158.22 -21.65 0.54 4362 +4364 4 37.16 159.05 -20.94 0.54 4363 +4365 4 37.58 159.0 -20.26 0.54 4364 +4366 4 37.94 159.86 -19.94 0.54 4365 +4367 4 38.3 160.91 -19.44 0.54 4366 +4368 4 38.68 161.56 -19.14 0.54 4367 +4369 4 39.29 161.99 -18.63 0.54 4368 +4370 4 39.88 162.85 -18.15 0.54 4369 +4371 4 40.67 163.95 -17.87 0.54 4370 +4372 4 41.04 164.57 -17.19 0.54 4371 +4373 4 41.22 164.93 -16.47 0.54 4372 +4374 4 42.24 165.84 -16.2 0.54 4373 +4375 4 42.65 166.29 -16.07 0.54 4374 +4376 4 43.05 166.7 -15.64 0.54 4375 +4377 4 43.6 167.99 -15.12 0.54 4376 +4378 4 43.81 167.93 -14.44 0.54 4377 +4379 4 44.23 167.91 -13.98 0.54 4378 +4380 4 44.63 167.88 -13.37 0.54 4379 +4381 4 45.69 168.35 -12.99 0.54 4380 +4382 4 46.32 168.3 -12.16 0.54 4381 +4383 4 46.72 168.74 -11.88 0.54 4382 +4384 4 47.31 169.59 -11.48 0.54 4383 +4385 4 47.7 170.02 -11.12 0.54 4384 +4386 4 48.25 171.54 -10.8 0.54 4385 +4387 4 48.65 171.95 -10.3 0.54 4386 +4388 4 49.04 172.34 -9.56 0.54 4387 +4389 4 49.43 172.73 -8.91 0.54 4388 +4390 4 49.82 173.16 -8.56 0.54 4389 +4391 4 50.59 173.93 -7.1 0.54 4390 +4392 4 51.44 173.88 -6.11 0.54 4391 +4393 4 52.07 173.8 -4.98 0.54 4392 +4394 4 52.47 173.73 -4.07 0.54 4393 +4395 4 53.11 173.71 -3.45 0.54 4394 +4396 4 54.2 173.53 -2.99 0.54 4395 +4397 4 55.47 173.5 -1.91 0.54 4396 +4398 4 56.74 174.01 -1.83 0.54 4397 +4399 4 57.54 174.9 -1.64 0.54 4398 +4400 4 58.08 175.86 -0.03 0.54 4399 +4401 4 59.09 177.21 0.21 0.54 4400 +4402 4 59.84 178.43 1.48 0.54 4401 +4403 4 60.4 179.72 1.93 0.54 4402 +4404 4 60.97 180.52 2.93 0.54 4403 +4405 4 61.54 181.33 3.86 0.54 4404 +4406 4 62.77 182.18 4.8 0.54 4405 +4407 4 63.79 183.07 5.37 0.54 4406 +4408 4 64.97 184.82 5.81 0.54 4407 +4409 4 65.96 186.18 6.05 0.54 4408 +4410 4 66.77 187.04 6.53 0.54 4409 +4411 4 67.73 188.8 7.03 0.54 4410 +4412 4 68.26 190.76 7.33 0.54 4411 +4413 4 68.63 191.4 7.62 0.54 4412 +4414 4 69.22 192.25 8.18 0.54 4413 +4415 4 70.67 193.15 8.76 0.54 4414 +4416 4 71.47 193.73 10.04 0.54 4415 +4417 4 71.88 193.99 9.93 0.54 4416 +4418 4 72.67 195.33 10.02 0.54 4417 +4419 4 72.86 195.76 10.14 0.54 4418 +4420 4 73.46 196.14 11.18 0.54 4419 +4421 4 73.58 197.11 12.25 0.54 4420 +4422 4 74.18 197.72 13.09 0.54 4421 +4423 4 74.96 198.55 13.94 0.54 4422 +4424 4 75.31 199.56 14.96 0.54 4423 +4425 4 75.86 200.55 16.2 0.54 4424 +4426 4 76.39 202.0 17.2 0.54 4425 +4427 4 76.93 203.47 18.04 0.54 4426 +4428 4 77.44 205.12 19.28 0.54 4427 +4429 4 78.16 206.99 20.55 0.54 4428 +4430 4 78.31 207.56 21.43 0.54 4429 +4431 4 78.83 209.24 22.37 0.54 4430 +4432 4 79.39 210.5 23.2 0.54 4431 +4433 4 80.18 211.32 24.13 0.54 4432 +4434 4 80.52 212.09 25.35 0.54 4433 +4435 4 80.9 212.42 26.59 0.54 4434 +4436 4 81.46 213.45 27.47 0.54 4435 +4437 4 82.5 213.86 28.44 0.54 4436 +4438 4 83.34 213.86 28.99 0.54 4437 +4439 4 83.95 214.25 29.72 0.54 4438 +4440 4 84.56 214.67 30.31 0.54 4439 +4441 4 85.34 215.99 30.69 0.54 4440 +4442 4 85.69 216.79 31.53 0.54 4441 +4443 4 86.27 217.33 33.03 0.54 4442 +4444 4 86.69 217.28 33.79 0.54 4443 +4445 4 87.75 217.29 34.35 0.54 4444 +4446 4 88.59 217.76 34.49 0.54 4445 +4447 4 25.53 152.84 -22.01 1.515 4240 +4448 4 25.68 153.72 -21.92 1.515 4447 +4449 4 25.09 153.81 -20.72 0.435 4448 +4450 4 24.57 154.5 -19.3 0.435 4449 +4451 4 24.13 154.39 -18.5 0.435 4450 +4452 4 24.11 154.3 -17.6 0.435 4451 +4453 4 23.85 154.13 -16.19 0.435 4452 +4454 4 23.82 153.98 -14.71 0.435 4453 +4455 4 23.54 154.26 -13.4 0.435 4454 +4456 4 23.52 154.16 -12.43 0.435 4455 +4457 4 23.48 153.96 -10.56 0.435 4456 +4458 4 23.45 153.87 -9.67 0.435 4457 +4459 4 23.2 153.69 -7.96 0.435 4458 +4460 4 22.23 154.8 -6.74 0.435 4459 +4461 4 21.46 156.15 -5.49 0.435 4460 +4462 4 20.67 157.71 -4.22 0.435 4461 +4463 4 19.49 159.14 -4.1 0.435 4462 +4464 4 18.97 160.4 -3.9 0.435 4463 +4465 4 18.61 162.2 -2.59 0.435 4464 +4466 4 18.77 163.06 -2.5 0.435 4465 +4467 4 18.89 164.57 -2.34 0.435 4466 +4468 4 19.07 165.22 -2.2 0.435 4467 +4469 4 19.01 165.83 -1.76 0.435 4468 +4470 4 19.16 166.89 -1.49 0.435 4469 +4471 4 18.41 168.09 -0.86 0.435 4470 +4472 4 17.68 169.09 -0.48 0.435 4471 +4473 4 16.3 170.25 0.05 0.435 4472 +4474 4 16.27 170.65 0.33 0.435 4473 +4475 4 15.31 171.84 0.88 0.435 4474 +4476 4 15.23 172.88 1.29 0.435 4475 +4477 4 15.35 174.14 1.87 0.435 4476 +4478 4 15.45 176.05 2.37 0.435 4477 +4479 4 15.37 176.83 3.21 0.435 4478 +4480 4 15.52 177.6 4.12 0.435 4479 +4481 4 15.46 178.44 4.5 0.435 4480 +4482 4 15.4 179.26 4.89 0.435 4481 +4483 4 14.39 181.1 5.36 0.435 4482 +4484 4 12.69 184.0 5.69 0.435 4483 +4485 4 12.18 185.04 5.78 0.435 4484 +4486 4 11.69 185.84 6.24 0.435 4485 +4487 4 11.13 187.47 6.99 0.435 4486 +4488 4 11.31 188.12 7.14 0.435 4487 +4489 4 11.23 189.16 7.54 0.435 4488 +4490 4 11.35 190.36 8.57 0.435 4489 +4491 4 10.82 191.62 8.77 0.435 4490 +4492 4 9.88 192.84 8.88 0.435 4491 +4493 4 9.38 193.88 9.04 0.435 4492 +4494 4 8.89 194.71 9.12 0.435 4493 +4495 4 8.85 195.35 9.26 0.435 4494 +4496 4 8.73 195.63 9.29 0.435 4495 +4497 4 8.52 196.19 7.83 0.435 4496 +4498 4 7.89 196.53 6.27 0.435 4497 +4499 4 7.25 196.48 6.33 0.435 4498 +4500 4 6.8 196.94 5.84 0.65 4499 +4501 4 6.11 197.54 5.89 0.865 4500 +4502 4 5.01 198.52 4.22 0.325 4501 +4503 4 3.65 199.5 4.29 0.325 4502 +4504 4 2.74 200.63 3.26 0.325 4503 +4505 4 2.19 201.74 4.94 0.325 4504 +4506 4 1.28 202.3 5.36 0.325 4505 +4507 4 0.33 202.98 6.45 0.325 4506 +4508 4 -0.56 203.3 7.07 0.325 4507 +4509 4 -1.51 203.98 8.25 0.325 4508 +4510 4 -1.78 204.34 8.89 0.325 4509 +4511 4 -1.83 204.37 10.7 0.325 4510 +4512 4 -1.66 205.26 10.56 0.325 4511 +4513 4 -1.47 205.41 11.42 0.325 4512 +4514 4 -1.29 205.31 12.46 0.325 4513 +4515 4 -1.13 205.62 13.78 0.325 4514 +4516 4 -0.79 206.89 14.44 0.325 4515 +4517 4 -0.22 208.2 14.67 0.325 4516 +4518 4 0.1 209.93 14.93 0.325 4517 +4519 4 -0.49 212.25 15.24 0.325 4518 +4520 4 -1.12 215.44 15.55 0.325 4519 +4521 4 -1.5 217.78 15.78 0.325 4520 +4522 4 -1.57 218.79 16.49 0.325 4521 +4523 4 -1.23 220.07 17.0 0.325 4522 +4524 4 -1.23 222.99 18.14 0.325 4523 +4525 4 -1.84 225.72 18.63 0.325 4524 +4526 4 -2.02 228.51 18.99 0.325 4525 +4527 4 -2.18 230.85 19.3 0.325 4526 +4528 4 -2.67 231.68 19.98 0.325 4527 +4529 4 -2.84 234.25 20.24 0.325 4528 +4530 4 -2.18 237.31 20.57 0.325 4529 +4531 4 -2.54 239.66 20.81 0.325 4530 +4532 4 -3.11 241.76 21.01 0.325 4531 +4533 4 -5.12 246.16 21.42 0.325 4532 +4534 4 -6.67 249.93 21.85 0.325 4533 +4535 4 -7.64 251.07 22.77 0.325 4534 +4536 4 -7.77 252.99 23.12 0.325 4535 +4537 4 -8.6 255.73 23.39 0.325 4536 +4538 4 -10.02 257.8 23.56 0.325 4537 +4539 4 -12.59 259.6 25.65 0.325 4538 +4540 4 -13.58 261.41 26.49 0.325 4539 +4541 4 -14.1 262.12 27.54 0.325 4540 +4542 4 -14.17 262.65 28.79 0.325 4541 +4543 4 -15.12 263.87 29.12 0.325 4542 +4544 4 9.2 196.39 9.83 0.435 4496 +4545 4 8.68 197.86 10.04 0.435 4544 +4546 4 7.68 199.46 10.87 0.435 4545 +4547 4 6.97 200.26 11.08 0.435 4546 +4548 4 6.0 201.63 11.95 0.435 4547 +4549 4 4.99 203.44 12.71 0.435 4548 +4550 4 3.58 205.02 13.45 0.435 4549 +4551 4 2.17 206.41 13.79 0.435 4550 +4552 4 1.2 207.83 14.29 0.435 4551 +4553 4 0.7 208.8 14.98 0.435 4552 +4554 4 -0.3 210.36 16.17 0.435 4553 +4555 4 -0.41 211.84 16.62 0.435 4554 +4556 4 -1.64 213.54 18.28 0.435 4555 +4557 4 -1.72 214.82 18.41 0.435 4556 +4558 4 -2.52 217.11 18.93 0.435 4557 +4559 4 -3.58 219.28 20.34 0.435 4558 +4560 4 -4.14 221.14 20.97 0.435 4559 +4561 4 -4.68 222.02 22.7 0.435 4560 +4562 4 -5.31 224.99 23.0 0.435 4561 +4563 4 -5.42 226.71 23.17 0.435 4562 +4564 4 -5.52 228.15 23.84 0.435 4563 +4565 4 -6.07 229.83 24.15 0.435 4564 +4566 4 -6.63 231.7 24.57 0.435 4565 +4567 4 -7.18 233.37 25.03 0.435 4566 +4568 4 -7.29 234.82 25.55 0.435 4567 +4569 4 -7.4 236.5 26.02 0.435 4568 +4570 4 -7.93 237.39 27.68 0.435 4569 +4571 4 -8.01 238.46 27.79 0.435 4570 +4572 4 -9.48 240.35 29.69 0.435 4571 +4573 4 -10.93 242.62 29.89 0.435 4572 +4574 4 -10.79 243.92 30.02 0.435 4573 +4575 4 -10.9 245.1 31.2 0.435 4574 +4576 4 -11.36 245.49 31.3 0.435 4575 +4577 4 -11.94 247.82 31.53 0.435 4576 +4578 4 -12.47 249.3 31.67 0.435 4577 +4579 4 -13.08 251.8 32.36 0.435 4578 +4580 4 -12.95 253.1 32.5 0.435 4579 +4581 4 -12.65 255.26 32.81 0.435 4580 +4582 4 -12.81 257.64 33.36 0.435 4581 +4583 4 -13.91 261.23 33.7 0.435 4582 +4584 4 -14.88 265.57 35.33 0.435 4583 +4585 4 -15.0 267.49 35.52 0.435 4584 +4586 4 -16.25 269.42 37.13 0.435 4585 +4587 4 -17.2 270.66 37.24 0.435 4586 +4588 4 -17.12 272.81 37.46 0.435 4587 +4589 4 -18.0 276.37 38.26 0.435 4588 +4590 4 -18.67 279.49 39.24 0.435 4589 +4591 4 -19.97 282.53 40.58 0.435 4590 +4592 4 -20.8 284.47 42.27 0.435 4591 +4593 4 -20.66 285.78 42.41 0.435 4592 +4594 4 -20.31 286.29 43.98 0.435 4593 +4595 4 -20.37 287.35 44.09 0.435 4594 +4596 4 -21.31 288.37 44.17 0.435 4595 +4597 4 -22.54 290.37 45.17 0.435 4596 +4598 4 -23.08 291.83 45.39 0.435 4597 +4599 4 -23.18 293.28 46.06 0.435 4598 +4600 4 -23.28 294.77 46.29 0.435 4599 +4601 4 -23.37 296.08 46.58 0.435 4600 +4602 4 -24.18 298.61 46.82 0.435 4601 +4603 4 -24.24 299.45 47.13 0.435 4602 +4604 4 -25.23 301.07 47.72 0.435 4603 +4605 4 -26.2 302.22 48.5 0.435 4604 +4606 4 -27.16 303.88 48.72 0.435 4605 +4607 4 -27.66 304.67 49.18 0.435 4606 +4608 4 -28.19 305.88 49.81 0.435 4607 +4609 4 -28.74 307.26 50.85 0.435 4608 +4610 4 -29.27 308.71 51.14 0.435 4609 +4611 4 -29.36 309.97 51.56 0.435 4610 +4612 4 -29.85 310.78 51.86 0.435 4611 +4613 4 -30.35 311.81 52.18 0.435 4612 +4614 4 -30.44 313.08 52.38 0.435 4613 +4615 4 -30.98 314.55 52.6 0.435 4614 +4616 4 -32.33 315.32 52.72 0.435 4615 +4617 4 -33.49 316.54 52.82 0.435 4616 +4618 4 -35.11 317.94 53.01 0.435 4617 +4619 4 -36.21 318.26 53.32 0.435 4618 +4620 4 -36.92 318.84 53.58 0.435 4619 +4621 4 -37.84 319.6 54.09 0.435 4620 +4622 4 -38.52 319.98 54.19 0.435 4621 +4623 4 -39.94 321.82 54.42 0.435 4622 +4624 4 -40.45 322.86 54.6 0.435 4623 +4625 4 -40.5 323.7 54.83 0.435 4624 +4626 4 -41.44 324.71 55.07 0.435 4625 +4627 4 -41.9 325.09 55.32 0.435 4626 +4628 4 -42.38 325.68 55.52 0.435 4627 +4629 4 -43.75 326.67 55.74 0.435 4628 +4630 4 -45.3 327.22 55.69 0.435 4629 +4631 4 -46.31 329.3 55.95 0.435 4630 +4632 4 -47.31 331.39 56.22 0.435 4631 +4633 4 -48.0 331.96 56.49 0.435 4632 +4634 4 -49.15 332.73 56.77 0.435 4633 +4635 4 -49.62 333.35 56.89 0.435 4634 +4636 4 -50.11 334.15 57.2 0.435 4635 +4637 4 -50.62 335.19 57.44 0.435 4636 +4638 4 -50.7 336.21 57.92 0.435 4637 +4639 4 -51.45 337.65 58.27 0.435 4638 +4640 4 -52.15 338.46 58.42 0.435 4639 +4641 4 -52.85 339.04 58.68 0.435 4640 +4642 4 -53.54 339.64 58.73 0.435 4641 +4643 4 -54.48 340.88 58.83 0.435 4642 +4644 4 -54.78 342.14 58.96 0.435 4643 +4645 4 -55.3 343.62 59.1 0.435 4644 +4646 4 -55.8 344.65 59.27 0.435 4645 +4647 4 -56.53 345.68 59.51 0.435 4646 +4648 4 -56.54 345.87 59.76 0.435 4647 +4649 4 -57.5 347.09 59.94 0.435 4648 +4650 4 -57.95 347.49 59.97 0.435 4649 +4651 4 -58.49 348.97 60.11 0.435 4650 +4652 4 -58.96 349.59 60.16 0.435 4651 +4653 4 -58.99 350.0 60.21 0.435 4652 +4654 4 -59.01 350.44 60.25 0.435 4653 +4655 4 25.8 155.24 -21.76 1.515 4448 +4656 4 25.68 157.16 -21.56 1.515 4655 +4657 4 25.82 158.46 -21.42 1.515 4656 +4658 4 25.95 159.76 -21.29 1.515 4657 +4659 4 26.34 160.65 -21.19 1.515 4658 +4660 4 26.62 162.81 -20.96 1.515 4659 +4661 4 27.01 163.49 -20.88 1.515 4660 +4662 4 26.91 164.99 -20.72 1.515 4661 +4663 4 27.05 166.28 -20.59 1.515 4662 +4664 4 26.95 167.93 -20.42 1.3 4663 +4665 4 26.87 169.75 -21.29 1.3 4664 +4666 4 26.34 170.96 -20.57 1.41 4665 +4667 4 25.77 172.85 -20.39 1.41 4666 +4668 4 25.25 174.33 -20.25 1.41 4667 +4669 4 25.22 174.66 -20.22 1.41 4668 +4670 4 24.34 175.06 -20.5 0.76 4669 +4671 4 23.19 176.07 -20.42 0.76 4670 +4672 4 22.52 176.45 -20.4 0.865 4671 +4673 4 21.37 177.46 -20.32 0.76 4672 +4674 4 20.68 178.36 -21.0 0.76 4673 +4675 4 19.39 178.29 -21.18 0.54 4674 +4676 4 18.28 179.45 -22.6 0.435 4675 +4677 4 16.93 180.81 -23.99 0.435 4676 +4678 4 15.12 182.54 -25.06 0.435 4677 +4679 4 13.01 185.53 -25.94 0.435 4678 +4680 4 11.36 188.14 -26.91 0.435 4679 +4681 4 11.12 188.84 -27.52 0.435 4680 +4682 4 9.47 190.9 -27.42 0.435 4681 +4683 4 7.4 192.7 -27.29 0.435 4682 +4684 4 6.91 194.39 -28.55 0.435 4683 +4685 4 5.46 196.65 -28.27 0.435 4684 +4686 4 25.17 175.61 -20.12 1.41 4669 +4687 4 25.09 176.91 -20.14 1.41 4686 +4688 4 25.21 178.42 -19.98 1.41 4687 +4689 4 25.33 179.93 -19.82 1.41 4688 +4690 4 25.51 180.38 -19.77 1.41 4689 +4691 4 25.89 180.97 -19.01 0.54 4690 +4692 4 26.29 181.68 -19.23 0.54 4691 +4693 4 26.72 181.7 -19.15 0.54 4692 +4694 4 27.33 182.38 -19.06 0.54 4693 +4695 4 27.48 183.46 -18.95 0.54 4694 +4696 4 27.41 184.54 -18.84 0.435 4695 +4697 4 27.75 186.06 -18.67 0.435 4696 +4698 4 28.3 187.33 -18.0 0.435 4697 +4699 4 28.65 188.38 -17.36 0.435 4698 +4700 4 29.21 189.13 -15.91 0.435 4699 +4701 4 29.64 189.1 -15.38 0.435 4700 +4702 4 29.74 190.57 -14.77 0.435 4701 +4703 4 29.88 191.61 -14.28 0.435 4702 +4704 4 29.78 192.84 -13.55 0.435 4703 +4705 4 29.9 194.34 -13.32 0.435 4704 +4706 4 30.03 195.37 -12.61 0.435 4705 +4707 4 30.38 196.65 -12.24 0.435 4706 +4708 4 30.77 197.07 -11.73 0.435 4707 +4709 4 31.08 198.75 -10.95 0.435 4708 +4710 4 31.44 199.8 -10.46 0.435 4709 +4711 4 31.76 201.27 -9.76 0.435 4710 +4712 4 31.68 202.31 -9.29 0.435 4711 +4713 4 32.05 203.18 -9.04 0.435 4712 +4714 4 32.18 204.67 -8.73 0.435 4713 +4715 4 32.25 206.81 -8.35 0.435 4714 +4716 4 32.38 208.12 -8.22 0.435 4715 +4717 4 32.49 209.57 -7.46 0.435 4716 +4718 4 31.99 210.3 -6.49 0.435 4717 +4719 4 32.14 211.45 -6.97 0.435 4718 +4720 4 32.11 212.4 -7.86 0.435 4719 +4721 4 32.22 214.42 -8.39 0.435 4720 +4722 4 32.58 215.79 -8.78 0.435 4721 +4723 4 32.5 217.07 -8.72 0.435 4722 +4724 4 33.1 218.01 -8.84 0.435 4723 +4725 4 33.04 219.11 -9.1 0.435 4724 +4726 4 33.61 220.44 -8.94 0.435 4725 +4727 4 34.14 222.2 -8.75 0.435 4726 +4728 4 34.24 224.14 -8.63 0.435 4727 +4729 4 34.63 225.37 -9.85 0.435 4728 +4730 4 35.17 227.13 -9.65 0.435 4729 +4731 4 35.12 227.43 -8.42 0.435 4730 +4732 4 35.72 228.09 -8.1 0.435 4731 +4733 4 36.08 228.92 -7.4 0.435 4732 +4734 4 36.48 229.32 -6.83 0.435 4733 +4735 4 36.63 229.93 -6.31 0.435 4734 +4736 4 36.79 230.76 -5.92 0.435 4735 +4737 4 36.97 231.15 -5.27 0.435 4736 +4738 4 37.13 231.51 -4.56 0.435 4737 +4739 4 37.31 231.9 -3.98 0.435 4738 +4740 4 37.73 231.86 -3.37 0.435 4739 +4741 4 25.23 181.44 -19.73 1.41 4690 +4742 4 25.15 182.74 -19.6 1.41 4741 +4743 4 24.84 184.22 -19.46 1.41 4742 +4744 4 24.33 185.27 -19.36 1.41 4743 +4745 4 23.6 186.51 -19.25 1.41 4744 +4746 4 22.68 187.52 -19.17 1.41 4745 +4747 4 21.94 188.99 -19.03 1.41 4746 +4748 4 21.86 190.06 -18.92 1.41 4747 +4749 4 21.75 191.78 -18.75 1.41 4748 +4750 4 22.08 193.31 -18.58 1.41 4749 +4751 4 22.45 194.4 -18.46 1.41 4750 +4752 4 23.94 195.52 -19.97 1.41 4751 +4753 4 24.28 196.77 -19.31 1.41 4752 +4754 4 24.86 198.17 -19.75 1.41 4753 +4755 4 24.77 198.43 -21.0 0.54 4754 +4756 4 25.39 198.07 -19.3 0.54 4755 +4757 4 26.05 197.88 -19.07 0.54 4756 +4758 4 26.29 197.44 -18.89 0.54 4757 +4759 4 26.71 197.42 -18.35 0.54 4758 +4760 4 26.91 197.35 -17.6 0.54 4759 +4761 4 27.32 197.57 -17.41 0.54 4760 +4762 4 27.74 197.51 -16.58 0.54 4761 +4763 4 28.55 198.41 -16.32 0.54 4762 +4764 4 29.09 199.94 -16.07 0.54 4763 +4765 4 29.52 199.95 -15.84 0.54 4764 +4766 4 29.9 200.31 -14.89 0.54 4765 +4767 4 30.31 200.74 -14.61 0.54 4766 +4768 4 30.3 200.71 -14.31 0.54 4767 +4769 4 30.91 201.13 -13.87 0.54 4768 +4770 4 31.28 201.7 -12.83 0.54 4769 +4771 4 31.42 203.01 -12.84 0.54 4770 +4772 4 31.58 203.68 -12.84 0.54 4771 +4773 4 31.76 204.29 -12.25 0.54 4772 +4774 4 32.08 205.56 -11.73 0.54 4773 +4775 4 32.62 207.3 -11.38 0.54 4774 +4776 4 33.79 209.52 -11.13 0.54 4775 +4777 4 35.13 212.16 -10.67 0.54 4776 +4778 4 36.26 214.8 -10.22 0.54 4777 +4779 4 36.96 217.19 -9.8 0.54 4778 +4780 4 37.5 218.94 -9.54 0.54 4779 +4781 4 38.23 221.13 -9.3 0.54 4780 +4782 4 38.59 222.21 -8.95 0.54 4781 +4783 4 39.57 223.73 -8.31 0.54 4782 +4784 4 40.12 225.23 -7.84 0.54 4783 +4785 4 40.69 226.88 -8.71 0.54 4784 +4786 4 40.88 227.37 -9.04 0.54 4785 +4787 4 41.24 228.98 -9.69 0.54 4786 +4788 4 42.02 230.57 -9.89 0.54 4787 +4789 4 42.56 232.33 -9.84 0.54 4788 +4790 4 43.29 234.53 -9.67 0.54 4789 +4791 4 43.89 235.71 -10.14 0.54 4790 +4792 4 44.72 236.74 -11.15 0.54 4791 +4793 4 45.28 238.27 -10.98 0.54 4792 +4794 4 45.65 239.42 -11.44 0.54 4793 +4795 4 45.59 240.79 -11.99 0.54 4794 +4796 4 45.77 241.48 -12.21 0.54 4795 +4797 4 45.3 242.39 -12.95 0.54 4796 +4798 4 45.66 244.01 -13.68 0.54 4797 +4799 4 45.82 244.63 -13.24 0.54 4798 +4800 4 46.46 244.88 -13.2 0.54 4799 +4801 4 46.91 244.97 -13.85 0.54 4800 +4802 4 47.11 245.47 -14.33 0.54 4801 +4803 4 48.19 246.1 -15.45 0.54 4802 +4804 4 49.24 246.59 -15.37 0.54 4803 +4805 4 49.7 246.72 -16.39 0.54 4804 +4806 4 50.14 247.3 -17.61 0.54 4805 +4807 4 50.76 248.29 -18.47 0.54 4806 +4808 4 51.82 249.12 -19.41 0.54 4807 +4809 4 52.89 249.97 -20.74 0.54 4808 +4810 4 53.31 251.01 -22.12 0.54 4809 +4811 4 54.2 250.94 -23.01 0.54 4810 +4812 4 54.21 251.0 -23.61 0.54 4811 +4813 4 55.25 251.68 -23.29 0.54 4812 +4814 4 55.26 251.98 -24.01 0.54 4813 +4815 4 55.3 252.17 -25.87 0.54 4814 +4816 4 56.6 252.8 -26.98 0.54 4815 +4817 4 57.24 253.37 -27.82 0.54 4816 +4818 4 58.1 253.97 -28.94 0.54 4817 +4819 4 58.34 254.06 -29.75 0.54 4818 +4820 4 58.94 255.02 -30.09 0.54 4819 +4821 4 59.83 255.14 -30.74 0.54 4820 +4822 4 60.68 255.99 -32.28 0.54 4821 +4823 4 61.08 256.93 -32.71 0.54 4822 +4824 4 62.16 257.53 -33.59 0.54 4823 +4825 4 62.38 258.1 -34.82 0.54 4824 +4826 4 62.78 258.87 -35.63 0.54 4825 +4827 4 62.8 258.94 -36.37 0.54 4826 +4828 4 63.03 259.52 -37.66 0.54 4827 +4829 4 63.26 259.91 -39.27 0.54 4828 +4830 4 63.43 261.09 -40.05 0.54 4829 +4831 4 63.66 260.9 -40.07 0.54 4830 +4832 4 63.62 262.36 -41.73 0.54 4831 +4833 4 63.59 262.78 -41.6 0.54 4832 +4834 4 63.77 263.74 -42.26 0.54 4833 +4835 4 63.74 264.18 -42.44 0.54 4834 +4836 4 63.77 264.56 -44.06 0.54 4835 +4837 4 63.81 264.71 -45.55 0.54 4836 +4838 4 64.01 265.49 -46.59 0.54 4837 +4839 4 64.21 266.5 -47.91 0.54 4838 +4840 4 64.2 267.3 -49.27 0.54 4839 +4841 4 64.2 267.85 -50.42 0.54 4840 +4842 4 64.37 269.05 -51.42 0.54 4841 +4843 4 64.34 270.02 -52.37 0.54 4842 +4844 4 64.49 271.38 -52.83 0.54 4843 +4845 4 64.61 272.89 -52.67 0.54 4844 +4846 4 64.58 273.3 -52.48 0.54 4845 +4847 4 64.08 274.12 -52.26 0.54 4846 +4848 4 64.08 274.67 -53.33 0.54 4847 +4849 4 64.07 275.42 -54.38 0.54 4848 +4850 4 63.85 276.22 -55.97 0.54 4849 +4851 4 32.19 201.41 -13.59 0.54 4769 +4852 4 33.04 201.46 -13.57 0.54 4851 +4853 4 34.92 202.37 -12.74 0.54 4852 +4854 4 35.13 202.33 -12.29 0.54 4853 +4855 4 36.77 203.71 -12.04 0.54 4854 +4856 4 38.03 204.18 -11.51 0.54 4855 +4857 4 39.28 204.57 -10.3 0.54 4856 +4858 4 40.91 205.94 -9.9 0.54 4857 +4859 4 41.71 206.78 -9.19 0.54 4858 +4860 4 42.55 207.25 -9.04 0.54 4859 +4861 4 44.01 207.94 -8.49 0.54 4860 +4862 4 44.83 208.36 -7.68 0.54 4861 +4863 4 46.12 208.41 -7.41 0.54 4862 +4864 4 46.89 209.41 -6.01 0.54 4863 +4865 4 47.54 209.42 -5.76 0.54 4864 +4866 4 48.14 209.84 -5.18 0.54 4865 +4867 4 48.89 211.33 -4.48 0.54 4866 +4868 4 49.94 211.78 -3.95 0.54 4867 +4869 4 51.14 213.33 -3.61 0.54 4868 +4870 4 51.92 214.44 -3.26 0.54 4869 +4871 4 53.38 215.38 -2.98 0.54 4870 +4872 4 54.59 216.74 -2.81 0.54 4871 +4873 4 55.84 217.66 -2.53 0.54 4872 +4874 4 57.03 219.23 -2.26 0.54 4873 +4875 4 58.09 219.72 -2.18 0.54 4874 +4876 4 59.76 220.69 -2.04 0.54 4875 +4877 4 61.46 221.22 -1.95 0.54 4876 +4878 4 63.72 223.07 -1.63 0.54 4877 +4879 4 65.35 224.89 -1.41 0.54 4878 +4880 4 66.72 227.13 -1.14 0.54 4879 +4881 4 68.18 228.07 -1.01 0.54 4880 +4882 4 69.11 230.48 -0.66 0.54 4881 +4883 4 70.69 232.95 -0.37 0.54 4882 +4884 4 71.91 234.32 -0.2 0.54 4883 +4885 4 72.52 234.74 0.22 0.54 4884 +4886 4 73.16 234.75 0.54 0.54 4885 +4887 4 75.06 235.55 0.3 0.54 4886 +4888 4 77.23 235.68 0.36 0.54 4887 +4889 4 78.5 236.19 0.45 0.54 4888 +4890 4 79.12 236.65 0.51 0.54 4889 +4891 4 80.16 237.12 0.95 0.54 4890 +4892 4 81.67 237.19 1.22 0.54 4891 +4893 4 83.17 237.24 1.71 0.54 4892 +4894 4 84.22 237.68 2.16 0.54 4893 +4895 4 85.72 237.7 2.95 0.54 4894 +4896 4 87.43 237.77 3.37 0.54 4895 +4897 4 88.09 237.53 3.97 0.54 4896 +4898 4 89.16 237.33 4.51 0.54 4897 +4899 4 90.24 237.11 5.26 0.54 4898 +4900 4 91.09 237.11 5.74 0.54 4899 +4901 4 91.96 237.14 5.98 0.54 4900 +4902 4 92.82 236.91 6.58 0.54 4901 +4903 4 93.69 236.75 6.65 0.54 4902 +4904 4 94.33 236.76 6.97 0.54 4903 +4905 4 94.97 236.75 7.44 0.54 4904 +4906 4 95.84 236.54 7.82 0.54 4905 +4907 4 96.28 236.33 8.11 0.54 4906 +4908 4 97.05 236.71 7.72 0.54 4907 +4909 4 97.3 236.87 6.23 0.54 4908 +4910 4 97.71 236.29 7.91 0.54 4909 +4911 4 97.9 236.96 7.91 0.54 4910 +4912 4 98.32 236.97 8.07 0.54 4911 +4913 4 98.53 236.91 8.75 0.54 4912 +4914 4 98.93 236.85 9.65 0.54 4913 +4915 4 99.55 237.02 10.44 0.54 4914 +4916 4 100.19 237.03 10.69 0.54 4915 +4917 4 100.64 236.59 11.11 0.54 4916 +4918 4 101.7 236.55 12.18 0.54 4917 +4919 4 102.55 236.59 12.28 0.54 4918 +4920 4 102.75 236.5 13.25 0.54 4919 +4921 4 103.16 236.44 14.16 0.54 4920 +4922 4 103.37 236.41 14.61 0.54 4921 +4923 4 104.0 236.37 15.46 0.54 4922 +4924 4 104.2 236.06 16.49 0.54 4923 +4925 4 104.39 235.98 17.46 0.54 4924 +4926 4 104.83 235.69 18.34 0.54 4925 +4927 4 105.02 235.37 19.37 0.54 4926 +4928 4 105.23 235.32 20.04 0.54 4927 +4929 4 106.11 234.88 20.62 0.54 4928 +4930 4 106.55 234.42 21.19 0.54 4929 +4931 4 107.21 234.23 21.42 0.54 4930 +4932 4 107.43 233.94 22.22 0.54 4931 +4933 4 108.07 233.45 23.16 0.54 4932 +4934 4 108.73 233.23 23.53 0.54 4933 +4935 4 108.92 232.91 24.71 0.54 4934 +4936 4 109.55 232.86 25.62 0.54 4935 +4937 4 109.75 232.8 26.3 0.54 4936 +4938 4 110.38 233.02 26.63 0.54 4937 +4939 4 110.59 232.99 27.09 0.54 4938 +4940 4 110.78 232.9 27.99 0.54 4939 +4941 4 25.17 200.33 -19.52 1.41 4754 +4942 4 25.25 202.27 -19.32 1.41 4941 +4943 4 25.33 204.43 -19.09 1.41 4942 +4944 4 25.43 204.52 -19.08 1.41 4943 +4945 4 24.91 204.95 -17.16 0.435 4944 +4946 4 23.76 206.25 -17.96 0.435 4945 +4947 4 23.23 207.43 -17.02 0.435 4946 +4948 4 22.52 207.95 -16.08 0.435 4947 +4949 4 21.58 208.38 -14.63 0.435 4948 +4950 4 20.89 208.7 -13.93 0.435 4949 +4951 4 20.18 209.19 -12.77 0.435 4950 +4952 4 19.27 209.47 -11.86 0.435 4951 +4953 4 18.56 210.28 -11.64 0.435 4952 +4954 4 18.24 211.23 -10.49 0.435 4953 +4955 4 16.82 213.07 -10.25 0.435 4954 +4956 4 15.8 215.09 -9.4 0.435 4955 +4957 4 14.64 216.26 -8.85 0.435 4956 +4958 4 13.68 217.23 -8.32 0.435 4957 +4959 4 12.72 218.64 -7.82 0.435 4958 +4960 4 12.38 220.34 -7.12 0.435 4959 +4961 4 11.33 223.08 -6.87 0.435 4960 +4962 4 11.09 223.49 -6.76 0.435 4961 +4963 4 10.15 224.71 -6.65 0.435 4962 +4964 4 9.59 226.63 -6.47 0.435 4963 +4965 4 9.33 227.24 -6.41 0.435 4964 +4966 4 9.28 228.11 -6.32 0.435 4965 +4967 4 8.34 228.87 -5.81 0.435 4966 +4968 4 7.2 229.86 -5.66 0.435 4967 +4969 4 6.67 231.33 -5.52 0.435 4968 +4970 4 6.14 232.59 -5.4 0.435 4969 +4971 4 5.9 233.21 -5.27 0.435 4970 +4972 4 5.41 233.83 -5.22 0.435 4971 +4973 4 4.92 234.88 -5.12 0.435 4972 +4974 4 4.2 235.91 -5.03 0.435 4973 +4975 4 3.07 236.7 -4.98 0.435 4974 +4976 4 2.56 237.74 -4.88 0.435 4975 +4977 4 2.23 239.44 -4.63 0.435 4976 +4978 4 1.75 240.27 -4.56 0.435 4977 +4979 4 0.98 241.9 -3.96 0.435 4978 +4980 4 0.46 242.86 -3.11 0.435 4979 +4981 4 -0.05 244.09 -2.7 0.435 4980 +4982 4 -0.97 244.89 -2.64 0.435 4981 +4983 4 -1.48 245.9 -2.09 0.435 4982 +4984 4 -2.17 246.21 -1.4 0.435 4983 +4985 4 -3.26 246.95 -2.93 0.435 4984 +4986 4 -3.7 247.44 -3.73 0.435 4985 +4987 4 -4.37 247.87 -4.07 0.435 4986 +4988 4 -5.49 248.44 -4.04 0.435 4987 +4989 4 -6.81 248.79 -4.03 0.435 4988 +4990 4 -7.94 249.59 -3.97 0.435 4989 +4991 4 -8.49 251.27 -3.81 0.435 4990 +4992 4 -9.9 252.91 -3.68 0.435 4991 +4993 4 -10.38 254.27 -4.6 0.435 4992 +4994 4 -11.32 255.57 -5.16 0.435 4993 +4995 4 -12.9 257.31 -6.16 0.435 4994 +4996 4 -13.38 258.21 -6.68 0.435 4995 +4997 4 -13.47 259.79 -7.27 0.435 4996 +4998 4 -14.64 261.23 -7.22 0.435 4997 +4999 4 -15.82 262.91 -7.38 0.435 4998 +5000 4 -16.71 263.56 -7.94 0.435 4999 +5001 4 -16.85 266.0 -8.52 0.435 5000 +5002 4 -16.96 267.93 -8.32 0.435 5001 +5003 4 -17.07 269.42 -8.17 0.435 5002 +5004 4 -18.23 270.88 -8.27 0.435 5003 +5005 4 -19.17 272.18 -8.84 0.435 5004 +5006 4 -19.69 273.66 -8.77 0.435 5005 +5007 4 -20.61 274.48 -8.86 0.435 5006 +5008 4 -20.67 275.6 -9.2 0.435 5007 +5009 4 -20.73 276.7 -9.31 0.435 5008 +5010 4 -20.56 277.87 -10.09 0.435 5009 +5011 4 -20.59 278.83 -10.89 0.435 5010 +5012 4 -20.66 279.9 -10.78 0.435 5011 +5013 4 -20.75 281.69 -11.43 0.435 5012 +5014 4 -21.44 282.59 -12.03 0.435 5013 +5015 4 -22.55 283.51 -13.32 0.435 5014 +5016 4 -23.45 284.36 -13.71 0.435 5015 +5017 4 -24.11 284.83 -14.5 0.435 5016 +5018 4 -25.64 285.23 -15.1 0.435 5017 +5019 4 -26.92 285.2 -15.58 0.435 5018 +5020 4 -27.79 285.17 -15.84 0.435 5019 +5021 4 -29.05 284.69 -16.22 0.435 5020 +5022 4 -30.6 285.25 -16.27 0.435 5021 +5023 4 -32.61 286.22 -16.3 0.435 5022 +5024 4 -36.18 287.73 -16.29 0.435 5023 +5025 4 -39.26 288.93 -17.23 0.435 5024 +5026 4 -40.9 291.3 -18.15 0.435 5025 +5027 4 -42.33 292.61 -16.84 0.435 5026 +5028 4 -43.32 294.68 -16.65 0.435 5027 +5029 4 -43.79 294.82 -16.12 0.435 5028 +5030 4 -45.41 296.18 -15.57 0.435 5029 +5031 4 -45.51 297.63 -14.89 0.435 5030 +5032 4 -46.48 299.06 -14.54 0.435 5031 +5033 4 -47.18 299.6 -13.9 0.435 5032 +5034 4 -47.71 300.56 -12.98 0.435 5033 +5035 4 -48.41 301.36 -12.76 0.435 5034 +5036 4 -48.67 301.94 -12.25 0.435 5035 +5037 4 -48.75 302.97 -11.7 0.435 5036 +5038 4 -48.91 305.3 -11.24 0.435 5037 +5039 4 25.5 205.85 -20.22 1.41 4944 +5040 4 24.79 206.88 -20.13 1.41 5039 +5041 4 25.11 206.91 -20.16 1.41 5040 +5042 4 25.27 206.92 -20.17 1.41 5041 +5043 4 24.04 207.49 -18.58 0.11 5042 +5044 4 23.5 209.18 -18.49 0.11 5043 +5045 4 22.71 211.23 -17.77 0.435 5044 +5046 4 21.92 213.08 -17.29 0.435 5045 +5047 4 21.35 214.89 -16.06 0.435 5046 +5048 4 20.8 216.26 -15.03 0.435 5047 +5049 4 20.27 217.2 -13.89 0.435 5048 +5050 4 19.56 217.43 -12.38 0.435 5049 +5051 4 18.45 217.81 -12.44 0.435 5050 +5052 4 16.79 220.07 -12.25 0.435 5051 +5053 4 15.97 222.59 -12.0 0.435 5052 +5054 4 15.88 224.1 -11.85 0.435 5053 +5055 4 16.25 224.93 -11.15 0.435 5054 +5056 4 16.43 225.36 -11.1 0.435 5055 +5057 4 16.79 226.68 -11.04 0.435 5056 +5058 4 16.74 227.28 -10.53 0.435 5057 +5059 4 16.85 228.53 -9.86 0.435 5058 +5060 4 15.6 230.76 -9.06 0.435 5059 +5061 4 15.09 231.72 -8.14 0.435 5060 +5062 4 13.63 234.2 -7.84 0.435 5061 +5063 4 12.41 236.27 -7.59 0.435 5062 +5064 4 12.33 237.31 -7.18 0.435 5063 +5065 4 11.36 238.69 -6.46 0.435 5064 +5066 4 11.01 240.07 -5.2 0.435 5065 +5067 4 10.49 240.98 -3.91 0.435 5066 +5068 4 8.18 242.98 -3.6 0.435 5067 +5069 4 6.48 245.65 -3.14 0.435 5068 +5070 4 4.52 249.17 -2.67 0.435 5069 +5071 4 2.66 251.21 -2.5 0.435 5070 +5072 4 0.25 254.68 -1.83 0.435 5071 +5073 4 -1.47 257.75 -1.02 0.435 5072 +5074 4 -2.04 259.34 0.18 0.435 5073 +5075 4 -3.67 260.9 0.83 0.435 5074 +5076 4 -4.19 261.88 1.59 0.435 5075 +5077 4 -4.7 262.85 2.28 0.435 5076 +5078 4 -5.65 263.83 2.81 0.435 5077 +5079 4 -8.18 266.03 3.06 0.435 5078 +5080 4 -10.04 268.06 3.3 0.435 5079 +5081 4 -11.68 269.63 3.95 0.435 5080 +5082 4 -13.1 270.93 5.26 0.435 5081 +5083 4 -14.12 272.97 5.97 0.435 5082 +5084 4 -14.27 275.05 6.72 0.435 5083 +5085 4 -14.29 275.74 6.25 0.435 5084 +5086 4 -14.76 276.37 6.24 0.435 5085 +5087 4 -14.57 276.28 7.29 0.435 5086 +5088 4 -15.09 276.72 9.12 0.435 5087 +5089 4 -15.13 277.05 10.06 0.435 5088 +5090 4 -15.87 277.49 11.6 0.435 5089 +5091 4 -16.77 278.03 12.16 0.435 5090 +5092 4 25.36 208.22 -20.06 1.41 5041 +5093 4 25.75 208.68 -20.0 1.41 5092 +5094 4 26.09 210.2 -19.84 1.41 5093 +5095 4 25.77 211.9 -19.67 1.41 5094 +5096 4 25.17 214.24 -19.44 1.41 5095 +5097 4 24.36 216.77 -19.2 1.41 5096 +5098 4 23.37 218.86 -19.0 1.41 5097 +5099 4 23.07 220.44 -19.74 1.41 5098 +5100 4 23.38 220.59 -19.72 1.41 5099 +5101 4 24.2 221.0 -18.9 0.435 5100 +5102 4 24.15 221.65 -18.92 0.435 5101 +5103 4 24.33 222.02 -18.2 0.435 5102 +5104 4 24.46 223.29 -17.77 0.435 5103 +5105 4 24.65 223.19 -16.72 0.435 5104 +5106 4 24.62 223.6 -16.52 0.435 5105 +5107 4 24.82 223.54 -15.69 0.435 5106 +5108 4 24.77 224.14 -15.33 0.435 5107 +5109 4 24.95 224.52 -14.61 0.435 5108 +5110 4 25.08 225.32 -13.84 0.435 5109 +5111 4 25.45 226.14 -13.07 0.435 5110 +5112 4 25.82 227.0 -12.82 0.435 5111 +5113 4 25.97 228.07 -12.56 0.435 5112 +5114 4 26.35 228.7 -12.11 0.435 5113 +5115 4 26.52 229.33 -11.74 0.435 5114 +5116 4 26.89 230.21 -11.64 0.435 5115 +5117 4 27.48 231.31 -11.43 0.435 5116 +5118 4 27.77 233.48 -11.13 0.435 5117 +5119 4 28.12 234.79 -10.99 0.435 5118 +5120 4 28.22 236.24 -10.23 0.435 5119 +5121 4 28.37 237.31 -10.04 0.435 5120 +5122 4 28.52 238.37 -9.7 0.435 5121 +5123 4 28.87 239.44 -9.2 0.435 5122 +5124 4 29.21 240.48 -8.48 0.435 5123 +5125 4 29.39 241.1 -8.19 0.435 5124 +5126 4 29.74 242.18 -7.84 0.435 5125 +5127 4 29.94 242.89 -8.37 0.435 5126 +5128 4 30.15 243.45 -9.36 0.435 5127 +5129 4 30.55 244.16 -9.73 0.435 5128 +5130 4 30.73 245.09 -10.23 0.435 5129 +5131 4 31.11 245.99 -10.21 0.435 5130 +5132 4 31.25 247.32 -10.44 0.435 5131 +5133 4 31.18 248.39 -10.4 0.435 5132 +5134 4 31.55 249.5 -10.36 0.435 5133 +5135 4 31.52 250.23 -11.04 0.435 5134 +5136 4 31.69 251.11 -11.1 0.435 5135 +5137 4 32.76 251.67 -11.62 0.435 5136 +5138 4 33.71 253.66 -11.39 0.435 5137 +5139 4 34.25 255.41 -11.19 0.435 5138 +5140 4 34.44 256.14 -11.79 0.435 5139 +5141 4 34.59 257.25 -11.82 0.435 5140 +5142 4 34.56 257.39 -11.28 0.435 5141 +5143 4 34.75 258.1 -11.58 0.435 5142 +5144 4 34.72 258.79 -11.96 0.435 5143 +5145 4 34.69 259.48 -12.42 0.435 5144 +5146 4 34.85 260.61 -12.75 0.435 5145 +5147 4 35.01 261.49 -12.73 0.435 5146 +5148 4 36.04 262.67 -13.11 0.435 5147 +5149 4 36.14 264.4 -12.93 0.435 5148 +5150 4 35.79 266.54 -12.79 0.435 5149 +5151 4 35.71 267.82 -12.66 0.435 5150 +5152 4 35.69 268.04 -12.64 0.435 5151 +5153 4 35.63 269.41 -13.33 0.435 5152 +5154 4 35.1 271.14 -13.61 0.435 5153 +5155 4 34.33 273.34 -14.3 0.435 5154 +5156 4 33.58 275.36 -15.4 0.435 5155 +5157 4 33.7 277.1 -15.37 0.435 5156 +5158 4 33.35 279.26 -15.37 0.435 5157 +5159 4 32.99 282.12 -15.99 0.435 5158 +5160 4 32.62 284.52 -16.35 0.435 5159 +5161 4 32.53 286.02 -16.2 0.435 5160 +5162 4 32.46 287.66 -17.32 0.435 5161 +5163 4 31.64 290.4 -17.06 0.435 5162 +5164 4 31.79 292.04 -18.08 0.435 5163 +5165 4 31.73 293.12 -18.05 0.435 5164 +5166 4 31.78 295.75 -18.23 0.435 5165 +5167 4 33.4 297.78 -18.05 0.435 5166 +5168 4 34.36 299.85 -18.42 0.435 5167 +5169 4 34.49 301.4 -18.64 0.435 5168 +5170 4 35.25 303.21 -18.88 0.435 5169 +5171 4 35.57 305.17 -18.74 0.435 5170 +5172 4 36.5 307.32 -17.9 0.435 5171 +5173 4 36.73 310.34 -17.58 0.435 5172 +5174 4 36.45 311.38 -17.33 0.435 5173 +5175 4 36.33 313.31 -17.13 0.435 5174 +5176 4 36.4 315.47 -16.9 0.435 5175 +5177 4 36.68 318.06 -16.63 0.435 5176 +5178 4 36.99 319.86 -16.52 0.435 5177 +5179 4 37.58 321.0 -16.69 0.435 5178 +5180 4 37.96 322.18 -17.31 0.435 5179 +5181 4 37.91 323.61 -18.59 0.435 5180 +5182 4 38.08 324.77 -19.22 0.435 5181 +5183 4 38.05 325.76 -20.48 0.435 5182 +5184 4 37.32 327.26 -20.71 0.435 5183 +5185 4 37.04 328.64 -21.56 0.435 5184 +5186 4 36.36 329.55 -22.46 0.435 5185 +5187 4 36.31 330.19 -22.32 0.435 5186 +5188 4 35.84 331.32 -23.04 0.435 5187 +5189 4 36.15 333.84 -24.2 0.435 5188 +5190 4 36.3 335.24 -24.96 0.435 5189 +5191 4 36.86 337.06 -25.51 0.435 5190 +5192 4 37.23 338.46 -26.11 0.435 5191 +5193 4 38.13 341.55 -26.0 0.435 5192 +5194 4 38.46 343.32 -26.11 0.435 5193 +5195 4 39.61 345.76 -25.9 0.435 5194 +5196 4 40.68 349.53 -25.94 0.435 5195 +5197 4 41.48 350.65 -25.8 0.435 5196 +5198 4 42.65 352.66 -25.57 0.435 5197 +5199 4 42.56 354.16 -25.42 0.435 5198 +5200 4 42.46 355.67 -25.34 0.435 5199 +5201 4 42.15 357.69 -26.2 0.435 5200 +5202 4 41.01 359.3 -27.79 0.435 5201 +5203 4 22.75 222.16 -19.87 1.41 5100 +5204 4 22.65 224.49 -21.37 1.41 5203 +5205 4 23.01 225.8 -21.3 1.41 5204 +5206 4 23.11 227.53 -21.12 1.41 5205 +5207 4 23.26 229.17 -22.15 1.41 5206 +5208 4 23.43 230.84 -23.49 1.41 5207 +5209 4 23.32 232.56 -23.46 1.41 5208 +5210 4 23.49 234.07 -25.26 1.41 5209 +5211 4 23.54 234.89 -25.17 1.41 5210 +5212 4 22.83 235.39 -24.08 0.435 5211 +5213 4 22.78 236.02 -23.94 0.435 5212 +5214 4 22.3 236.57 -23.22 0.435 5213 +5215 4 21.58 237.07 -22.21 0.435 5214 +5216 4 20.88 237.39 -21.44 0.435 5215 +5217 4 20.16 238.63 -21.25 0.435 5216 +5218 4 19.69 238.98 -20.7 0.435 5217 +5219 4 19.19 239.55 -20.2 0.435 5218 +5220 4 19.12 240.32 -19.37 0.435 5219 +5221 4 18.38 241.76 -19.09 0.435 5220 +5222 4 17.89 242.59 -19.01 0.435 5221 +5223 4 17.38 243.85 -18.81 0.435 5222 +5224 4 16.67 244.66 -18.68 0.435 5223 +5225 4 15.93 245.88 -18.33 0.435 5224 +5226 4 15.43 246.92 -18.17 0.435 5225 +5227 4 14.98 247.09 -18.01 0.435 5226 +5228 4 14.51 247.71 -17.96 0.435 5227 +5229 4 14.65 248.79 -17.84 0.435 5228 +5230 4 14.54 250.5 -17.59 0.435 5229 +5231 4 13.77 252.39 -17.41 0.435 5230 +5232 4 12.98 254.48 -17.21 0.435 5231 +5233 4 12.44 256.16 -16.9 0.435 5232 +5234 4 11.94 256.92 -16.16 0.435 5233 +5235 4 11.42 258.18 -16.04 0.435 5234 +5236 4 10.97 258.88 -16.74 0.435 5235 +5237 4 10.48 259.71 -16.66 0.435 5236 +5238 4 9.56 260.78 -17.02 0.435 5237 +5239 4 8.9 261.52 -18.32 0.435 5238 +5240 4 8.24 261.93 -18.6 0.435 5239 +5241 4 7.57 262.11 -18.59 0.435 5240 +5242 4 6.85 263.14 -18.57 0.435 5241 +5243 4 6.82 264.1 -19.31 0.435 5242 +5244 4 7.0 264.79 -19.69 0.435 5243 +5245 4 6.98 265.47 -19.99 0.435 5244 +5246 4 6.92 266.62 -20.55 0.435 5245 +5247 4 6.9 267.32 -21.01 0.435 5246 +5248 4 6.83 268.43 -21.35 0.435 5247 +5249 4 6.34 269.26 -21.27 0.435 5248 +5250 4 5.84 270.81 -21.88 0.435 5249 +5251 4 4.9 271.83 -21.79 0.435 5250 +5252 4 4.18 273.41 -22.77 0.435 5251 +5253 4 3.18 275.49 -22.51 0.435 5252 +5254 4 2.65 276.73 -22.24 0.435 5253 +5255 4 1.75 277.84 -23.13 0.435 5254 +5256 4 1.73 279.1 -24.73 0.435 5255 +5257 4 1.68 280.29 -25.74 0.435 5256 +5258 4 1.6 281.8 -25.74 0.435 5257 +5259 4 1.0 284.13 -25.51 0.435 5258 +5260 4 -0.66 286.61 -25.29 0.435 5259 +5261 4 -1.83 288.37 -26.19 0.435 5260 +5262 4 -2.36 289.84 -26.06 0.435 5261 +5263 4 -3.3 291.13 -26.55 0.435 5262 +5264 4 -4.21 292.46 -27.34 0.435 5263 +5265 4 -4.7 293.29 -27.33 0.435 5264 +5266 4 -5.87 295.04 -28.16 0.435 5265 +5267 4 -6.74 295.55 -29.41 0.435 5266 +5268 4 -8.07 296.12 -29.45 0.435 5267 +5269 4 -9.19 296.97 -29.99 0.435 5268 +5270 4 -9.92 298.24 -30.03 0.435 5269 +5271 4 -11.31 299.66 -29.92 0.435 5270 +5272 4 -13.35 301.85 -31.4 0.435 5271 +5273 4 -14.71 303.16 -32.2 0.435 5272 +5274 4 -15.39 303.83 -32.83 0.435 5273 +5275 4 -15.85 304.72 -33.34 0.435 5274 +5276 4 -16.78 306.05 -34.28 0.435 5275 +5277 4 -17.7 307.36 -34.85 0.435 5276 +5278 4 -18.83 308.5 -36.12 0.435 5277 +5279 4 -20.42 310.21 -36.88 0.435 5278 +5280 4 -21.37 311.49 -37.15 0.435 5279 +5281 4 -22.28 312.58 -37.81 0.435 5280 +5282 4 -23.39 313.49 -38.87 0.435 5281 +5283 4 -23.87 314.36 -39.24 0.435 5282 +5284 4 -23.91 315.8 -40.53 0.435 5283 +5285 4 -24.63 317.11 -41.09 0.435 5284 +5286 4 -25.3 318.08 -42.36 0.435 5285 +5287 4 -25.97 319.0 -43.41 0.435 5286 +5288 4 -28.19 319.76 -43.76 0.435 5287 +5289 4 -29.1 320.62 -44.15 0.435 5288 +5290 4 -29.79 321.5 -44.75 0.435 5289 +5291 4 -31.42 323.58 -44.87 0.435 5290 +5292 4 -32.36 324.61 -44.87 0.435 5291 +5293 4 -32.78 325.16 -46.18 0.435 5292 +5294 4 -33.89 326.08 -47.47 0.435 5293 +5295 4 23.42 235.13 -25.15 1.41 5211 +5296 4 23.56 236.43 -25.01 1.41 5295 +5297 4 24.14 237.55 -24.89 1.41 5296 +5298 4 24.54 238.83 -26.55 1.41 5297 +5299 4 24.89 240.4 -26.76 1.515 5298 +5300 4 25.23 242.5 -27.96 1.515 5299 +5301 4 25.6 243.61 -27.99 1.515 5300 +5302 4 25.31 244.88 -27.86 1.625 5301 +5303 4 25.0 246.65 -28.89 1.625 5302 +5304 4 24.94 248.26 -29.93 1.625 5303 +5305 4 25.08 249.34 -29.6 1.625 5304 +5306 4 24.51 249.71 -29.57 1.625 5305 +5307 4 23.36 250.4 -29.08 0.65 5306 +5308 4 22.83 251.57 -28.13 0.54 5307 +5309 4 22.6 251.78 -28.2 0.54 5308 +5310 4 22.58 251.68 -27.22 0.54 5309 +5311 4 22.56 251.59 -26.34 0.54 5310 +5312 4 22.54 251.5 -25.51 0.54 5311 +5313 4 22.49 251.84 -24.57 0.54 5312 +5314 4 22.48 251.81 -24.27 0.54 5313 +5315 4 22.46 252.0 -24.03 0.54 5314 +5316 4 22.44 251.94 -23.44 0.54 5315 +5317 4 22.41 252.04 -22.37 0.54 5316 +5318 4 22.4 251.99 -21.92 0.54 5317 +5319 4 22.38 251.89 -20.88 0.54 5318 +5320 4 22.37 252.16 -21.37 0.54 5319 +5321 4 22.36 252.36 -21.28 0.54 5320 +5322 4 22.33 252.78 -21.02 0.54 5321 +5323 4 22.31 252.68 -20.12 0.54 5322 +5324 4 21.83 253.01 -19.42 0.54 5323 +5325 4 21.34 253.82 -19.2 0.76 5324 +5326 4 20.56 255.93 -19.0 0.65 5325 +5327 4 20.46 257.43 -18.84 0.65 5326 +5328 4 19.04 259.27 -18.69 0.65 5327 +5329 4 18.3 260.51 -18.5 0.65 5328 +5330 4 17.54 262.4 -18.33 0.65 5329 +5331 4 16.79 263.84 -17.96 0.65 5330 +5332 4 16.0 265.68 -17.27 0.65 5331 +5333 4 15.42 267.46 -16.04 0.54 5332 +5334 4 14.89 268.65 -15.18 0.54 5333 +5335 4 14.36 269.59 -14.11 0.54 5334 +5336 4 14.31 270.15 -13.23 0.54 5335 +5337 4 14.21 271.11 -12.07 0.54 5336 +5338 4 13.4 273.38 -11.34 0.54 5337 +5339 4 12.61 275.47 -11.06 0.54 5338 +5340 4 12.33 276.85 -11.98 0.435 5339 +5341 4 11.57 278.53 -11.82 0.435 5340 +5342 4 11.52 279.4 -11.88 0.435 5341 +5343 4 11.32 282.9 -12.28 0.435 5342 +5344 4 10.65 286.74 -11.9 0.435 5343 +5345 4 10.75 288.46 -11.72 0.435 5344 +5346 4 9.78 290.13 -11.57 0.435 5345 +5347 4 8.54 292.42 -11.36 0.435 5346 +5348 4 7.73 294.95 -11.2 0.435 5347 +5349 4 7.38 296.75 -9.96 0.435 5348 +5350 4 6.84 298.5 -10.32 0.435 5349 +5351 4 6.77 299.84 -10.72 0.435 5350 +5352 4 6.85 302.01 -10.56 0.435 5351 +5353 4 6.76 303.77 -10.9 0.435 5352 +5354 4 5.1 305.83 -10.81 0.435 5353 +5355 4 3.96 306.84 -10.73 0.435 5354 +5356 4 2.12 308.45 -10.61 0.435 5355 +5357 4 -0.11 309.63 -10.84 0.435 5356 +5358 4 -1.79 312.11 -10.62 0.435 5357 +5359 4 -1.95 314.69 -10.36 0.435 5358 +5360 4 -2.92 316.34 -10.28 0.435 5359 +5361 4 -4.14 318.47 -10.54 0.435 5360 +5362 4 -4.68 320.41 -10.66 0.435 5361 +5363 4 -5.42 321.63 -10.33 0.435 5362 +5364 4 -6.12 322.44 -10.26 0.435 5363 +5365 4 -7.54 324.29 -10.1 0.435 5364 +5366 4 -7.82 324.88 -9.6 0.435 5365 +5367 4 -8.26 324.73 -8.42 0.435 5366 +5368 4 -8.35 325.44 -6.99 0.435 5367 +5369 4 -9.28 325.67 -5.56 0.435 5368 +5370 4 -9.76 326.01 -4.85 0.435 5369 +5371 4 -10.23 326.33 -4.0 0.435 5370 +5372 4 -11.15 326.62 -3.24 0.435 5371 +5373 4 -11.62 327.2 -2.74 0.435 5372 +5374 4 -13.21 327.89 -2.03 0.435 5373 +5375 4 -13.07 328.41 -0.69 0.435 5374 +5376 4 -13.85 330.49 -0.19 0.435 5375 +5377 4 -13.88 330.39 0.77 0.435 5376 +5378 4 -15.05 331.32 1.52 0.435 5377 +5379 4 -16.19 332.06 2.09 0.435 5378 +5380 4 -17.59 333.2 2.71 0.435 5379 +5381 4 -18.96 334.16 3.15 0.435 5380 +5382 4 -19.52 335.76 4.28 0.435 5381 +5383 4 -20.73 337.1 5.29 0.435 5382 +5384 4 -20.82 338.32 5.95 0.435 5383 +5385 4 -21.76 339.33 6.18 0.435 5384 +5386 4 -22.96 340.62 7.64 0.435 5385 +5387 4 -24.08 340.44 8.81 0.435 5386 +5388 4 -24.8 341.18 9.61 0.435 5387 +5389 4 -25.96 342.11 10.28 0.435 5388 +5390 4 -26.74 343.94 11.14 0.435 5389 +5391 4 -27.77 346.22 11.5 0.435 5390 +5392 4 -28.76 348.06 12.04 0.435 5391 +5393 4 -29.82 350.7 13.19 0.435 5392 +5394 4 -30.86 352.41 15.0 0.435 5393 +5395 4 -30.94 353.4 15.86 0.435 5394 +5396 4 -31.03 354.39 16.78 0.435 5395 +5397 4 -32.45 355.93 17.81 0.435 5396 +5398 4 -31.91 357.2 18.49 0.435 5397 +5399 4 -31.56 358.73 18.66 0.435 5398 +5400 4 -31.4 359.6 18.75 0.435 5399 +5401 4 -31.48 360.67 18.86 0.435 5400 +5402 4 -32.2 361.64 19.55 0.435 5401 +5403 4 -32.92 362.42 19.98 0.435 5402 +5404 4 -34.33 364.03 20.35 0.435 5403 +5405 4 -36.16 365.41 20.6 0.435 5404 +5406 4 -36.49 366.99 21.36 0.435 5405 +5407 4 -36.56 367.79 21.96 0.435 5406 +5408 4 -37.48 368.57 22.32 0.435 5407 +5409 4 -38.01 369.8 22.67 0.435 5408 +5410 4 -38.95 370.79 23.04 0.435 5409 +5411 4 -39.04 372.28 23.34 0.435 5410 +5412 4 -39.79 373.69 23.92 0.435 5411 +5413 4 -39.72 375.36 24.7 0.435 5412 +5414 4 -40.3 377.65 25.22 0.435 5413 +5415 4 -40.82 378.86 25.79 0.435 5414 +5416 4 -41.99 379.56 26.82 0.435 5415 +5417 4 -42.9 379.8 28.1 0.435 5416 +5418 4 -43.81 380.12 28.65 0.435 5417 +5419 4 -45.2 381.29 29.26 0.435 5418 +5420 4 -46.14 382.28 29.41 0.435 5419 +5421 4 -46.22 383.56 29.69 0.435 5420 +5422 4 -46.34 385.24 30.16 0.435 5421 +5423 4 -46.88 386.68 30.68 0.435 5422 +5424 4 -48.33 389.16 30.97 0.435 5423 +5425 4 -49.85 392.51 31.36 0.435 5424 +5426 4 -51.48 394.12 31.49 0.435 5425 +5427 4 -52.44 395.57 31.69 0.435 5426 +5428 4 -54.07 397.17 31.9 0.435 5427 +5429 4 -55.67 398.37 31.98 0.435 5428 +5430 4 -57.42 401.86 32.83 0.435 5429 +5431 4 -59.31 404.32 33.12 0.435 5430 +5432 4 -60.72 405.95 33.4 0.435 5431 +5433 4 -61.9 407.12 34.02 0.435 5432 +5434 4 -63.33 408.94 34.32 0.435 5433 +5435 4 -63.43 410.15 35.2 0.435 5434 +5436 4 -63.37 412.46 36.04 0.435 5435 +5437 4 -63.43 413.03 36.79 0.435 5436 +5438 4 -63.31 414.52 37.16 0.435 5437 +5439 4 -63.4 415.48 38.39 0.435 5438 +5440 4 -64.82 417.09 38.75 0.435 5439 +5441 4 -64.9 418.37 38.95 0.435 5440 +5442 4 -65.46 420.27 39.14 0.435 5441 +5443 4 -65.57 421.98 39.31 0.435 5442 +5444 4 -66.5 423.0 39.39 0.435 5443 +5445 4 -67.03 424.46 39.61 0.435 5444 +5446 4 -67.09 425.09 39.9 0.435 5445 +5447 4 -67.15 425.62 41.09 0.435 5446 +5448 4 -67.24 426.87 41.52 0.435 5447 +5449 4 -67.91 427.06 41.89 0.435 5448 +5450 4 -68.38 427.69 41.88 0.435 5449 +5451 4 -68.67 427.89 43.85 0.435 5450 +5452 4 -69.34 427.76 44.8 0.435 5451 +5453 4 -69.82 428.09 45.42 0.435 5452 +5454 4 -70.53 428.32 47.09 0.435 5453 +5455 4 -70.4 428.79 48.87 0.435 5454 +5456 4 -70.69 429.56 49.78 0.435 5455 +5457 4 -71.19 430.83 49.75 0.435 5456 +5458 4 -70.83 431.4 50.79 0.435 5457 +5459 4 -70.69 432.44 51.35 0.435 5458 +5460 4 -71.64 432.86 53.1 0.435 5459 +5461 4 -72.13 433.68 53.26 0.435 5460 +5462 4 -72.86 434.38 54.37 0.435 5461 +5463 4 -73.55 434.95 54.71 0.435 5462 +5464 4 -74.52 436.37 55.14 0.435 5463 +5465 4 -74.8 437.18 55.52 0.435 5464 +5466 4 -74.42 437.8 56.11 0.435 5465 +5467 4 -74.29 438.86 56.46 0.435 5466 +5468 4 -74.34 439.71 56.61 0.435 5467 +5469 4 -74.81 440.33 56.67 0.435 5468 +5470 4 -75.98 441.75 56.87 0.435 5469 +5471 4 -77.58 442.95 56.95 0.435 5470 +5472 4 -79.51 445.84 57.21 0.435 5471 +5473 4 -80.99 448.77 57.48 0.435 5472 +5474 4 -81.53 449.95 58.26 0.435 5473 +5475 4 -83.24 452.79 59.19 0.435 5474 +5476 4 -83.16 454.71 59.62 0.435 5475 +5477 4 -83.05 456.16 60.37 0.435 5476 +5478 4 -82.78 458.54 60.7 0.435 5477 +5479 4 -82.69 460.44 61.28 0.435 5478 +5480 4 -82.56 461.44 62.21 0.435 5479 +5481 4 -82.16 461.87 62.49 0.435 5480 +5482 4 -82.28 463.52 63.26 0.435 5481 +5483 4 -82.79 464.27 64.09 0.435 5482 +5484 4 -83.96 465.19 64.98 0.435 5483 +5485 4 -84.45 465.43 66.57 0.435 5484 +5486 4 -85.19 466.12 67.91 0.435 5485 +5487 4 -86.14 466.82 68.94 0.435 5486 +5488 4 -86.39 467.15 69.87 0.435 5487 +5489 4 -87.75 467.87 70.36 0.435 5488 +5490 4 -89.09 468.16 71.04 0.435 5489 +5491 4 24.48 250.15 -29.53 1.625 5306 +5492 4 25.04 250.78 -31.11 1.735 5491 +5493 4 25.2 251.66 -31.01 1.735 5492 +5494 4 24.94 253.32 -32.58 1.735 5493 +5495 4 24.84 255.39 -33.79 1.735 5494 +5496 4 24.75 257.17 -34.21 1.735 5495 +5497 4 24.22 258.42 -34.03 1.735 5496 +5498 4 24.4 259.13 -33.95 1.735 5497 +5499 4 24.81 259.89 -34.69 0.65 5498 +5500 4 25.2 260.54 -34.54 0.865 5499 +5501 4 26.04 260.81 -34.41 0.865 5500 +5502 4 26.62 262.18 -34.71 0.865 5501 +5503 4 27.38 263.94 -34.59 0.65 5502 +5504 4 28.18 265.31 -34.65 0.65 5503 +5505 4 28.52 266.63 -34.58 0.65 5504 +5506 4 29.08 268.17 -34.48 0.65 5505 +5507 4 30.07 269.54 -34.4 0.65 5506 +5508 4 31.02 271.74 -34.15 0.65 5507 +5509 4 31.97 273.96 -34.05 0.65 5508 +5510 4 32.68 276.4 -33.93 0.65 5509 +5511 4 33.63 278.6 -33.68 0.65 5510 +5512 4 34.55 281.24 -33.45 0.65 5511 +5513 4 35.7 283.46 -33.2 0.65 5512 +5514 4 36.96 287.63 -32.73 0.65 5513 +5515 4 37.71 289.39 -32.53 0.65 5514 +5516 4 38.64 291.81 -32.26 0.65 5515 +5517 4 39.53 294.88 -31.92 0.65 5516 +5518 4 40.45 297.31 -31.65 0.65 5517 +5519 4 41.41 299.51 -31.4 0.65 5518 +5520 4 42.53 302.38 -31.08 0.65 5519 +5521 4 43.47 304.59 -30.83 0.65 5520 +5522 4 43.84 305.22 -30.38 0.65 5521 +5523 4 44.85 306.57 -30.22 0.65 5522 +5524 4 47.13 308.21 -29.99 0.65 5523 +5525 4 47.49 309.32 -29.87 0.65 5524 +5526 4 47.83 310.83 -29.62 0.65 5525 +5527 4 48.14 312.78 -29.41 0.65 5526 +5528 4 48.48 314.1 -29.27 0.65 5527 +5529 4 48.44 314.73 -29.21 0.65 5528 +5530 4 49.23 316.37 -29.7 0.65 5529 +5531 4 49.64 316.85 -29.94 0.65 5530 +5532 4 49.99 317.91 -29.44 0.65 5531 +5533 4 23.96 259.81 -35.1 1.735 5498 +5534 4 23.69 260.96 -35.81 1.735 5533 +5535 4 23.35 261.23 -35.79 1.735 5534 +5536 4 22.02 261.6 -36.08 0.76 5535 +5537 4 21.26 263.26 -35.78 0.54 5536 +5538 4 20.31 264.49 -35.67 0.54 5537 +5539 4 19.56 266.17 -35.52 0.54 5538 +5540 4 18.81 267.63 -35.38 0.54 5539 +5541 4 18.32 268.68 -35.29 0.54 5540 +5542 4 17.79 269.93 -35.17 0.54 5541 +5543 4 17.69 271.43 -35.02 0.54 5542 +5544 4 17.64 272.29 -34.93 0.54 5543 +5545 4 17.8 273.16 -34.84 0.54 5544 +5546 4 17.71 274.66 -34.68 0.54 5545 +5547 4 17.82 276.39 -34.5 0.54 5546 +5548 4 17.75 277.45 -34.39 0.54 5547 +5549 4 16.37 278.66 -34.3 0.54 5548 +5550 4 15.86 279.71 -34.2 0.54 5549 +5551 4 14.91 281.16 -34.08 0.54 5550 +5552 4 13.53 282.35 -33.99 0.54 5551 +5553 4 13.23 282.82 -32.22 0.54 5552 +5554 4 12.87 283.44 -32.08 0.65 5553 +5555 4 12.99 284.95 -31.92 0.65 5554 +5556 4 12.9 286.45 -31.77 0.865 5555 +5557 4 13.01 288.18 -31.58 0.865 5556 +5558 4 13.31 290.14 -31.38 0.865 5557 +5559 4 13.44 291.65 -31.22 0.865 5558 +5560 4 13.55 293.16 -31.06 0.865 5559 +5561 4 13.52 293.6 -31.01 0.865 5560 +5562 4 12.83 294.19 -30.97 0.865 5561 +5563 4 11.9 295.21 -30.88 0.54 5562 +5564 4 11.62 296.27 -30.78 0.76 5563 +5565 4 10.47 297.28 -30.7 0.76 5564 +5566 4 9.96 298.32 -30.61 0.76 5565 +5567 4 9.23 299.56 -30.5 0.65 5566 +5568 4 7.86 300.78 -30.4 0.65 5567 +5569 4 7.34 302.03 -30.29 0.65 5568 +5570 4 6.36 303.7 -30.14 0.65 5569 +5571 4 6.28 304.98 -30.01 0.65 5570 +5572 4 4.84 306.46 -28.38 0.65 5571 +5573 4 3.46 307.67 -28.29 0.65 5572 +5574 4 2.76 308.22 -27.79 0.65 5573 +5575 4 2.71 308.55 -26.78 0.65 5574 +5576 4 2.2 309.51 -25.87 0.65 5575 +5577 4 2.08 311.2 -25.47 0.65 5576 +5578 4 1.07 313.3 -25.28 0.65 5577 +5579 4 0.53 314.97 -25.05 0.65 5578 +5580 4 0.44 315.97 -24.26 0.65 5579 +5581 4 -0.94 317.37 -23.85 0.65 5580 +5582 4 -2.36 318.97 -23.41 0.65 5581 +5583 4 -2.91 320.61 -22.73 0.65 5582 +5584 4 -3.02 322.03 -21.84 0.65 5583 +5585 4 -4.45 323.85 -21.38 0.65 5584 +5586 4 -5.83 325.02 -21.06 0.65 5585 +5587 4 -6.99 326.03 -20.91 0.65 5586 +5588 4 -7.04 326.65 -20.7 0.65 5587 +5589 4 -7.98 327.89 -20.59 0.65 5588 +5590 4 -8.05 328.91 -20.04 0.65 5589 +5591 4 -8.15 330.13 -19.24 0.65 5590 +5592 4 -8.02 331.23 -18.82 0.65 5591 +5593 4 -8.08 331.81 -18.16 0.65 5592 +5594 4 -8.15 332.61 -17.62 0.65 5593 +5595 4 -8.23 333.62 -16.92 0.65 5594 +5596 4 -8.79 335.49 -16.35 0.65 5595 +5597 4 -9.29 336.5 -15.96 0.65 5596 +5598 4 -10.29 338.34 -15.49 0.65 5597 +5599 4 -10.35 339.15 -14.96 0.65 5598 +5600 4 -10.87 340.4 -14.69 0.65 5599 +5601 4 -12.29 342.24 -14.46 0.65 5600 +5602 4 -13.48 343.64 -14.04 0.65 5601 +5603 4 -14.39 344.2 -13.63 0.65 5602 +5604 4 -14.69 345.19 -12.93 0.65 5603 +5605 4 -15.23 346.86 -12.55 0.65 5604 +5606 4 -15.13 348.58 -12.28 0.65 5605 +5607 4 -15.69 350.22 -11.69 0.65 5606 +5608 4 -16.9 352.03 -11.07 0.65 5607 +5609 4 -17.39 352.56 -10.13 0.65 5608 +5610 4 -18.55 353.54 -9.82 0.65 5609 +5611 4 -19.71 354.75 -9.65 0.65 5610 +5612 4 -19.78 355.32 -8.84 0.65 5611 +5613 4 -20.29 356.3 -8.07 0.65 5612 +5614 4 -20.38 357.3 -7.29 0.65 5613 +5615 4 -20.9 358.51 -6.8 0.65 5614 +5616 4 -21.63 359.5 -6.34 0.65 5615 +5617 4 -22.57 360.46 -5.66 0.65 5616 +5618 4 -23.53 361.65 -5.11 0.65 5617 +5619 4 -24.03 362.65 -4.64 0.65 5618 +5620 4 -24.1 363.46 -4.03 0.65 5619 +5621 4 -24.87 365.08 -3.36 0.65 5620 +5622 4 -25.42 366.51 -2.84 0.65 5621 +5623 4 -26.14 366.97 -1.38 0.65 5622 +5624 4 -26.65 368.24 -1.26 0.65 5623 +5625 4 -27.14 368.73 -0.09 0.65 5624 +5626 4 -27.24 369.72 0.76 0.65 5625 +5627 4 -27.36 371.37 1.67 0.65 5626 +5628 4 -27.45 372.63 1.95 0.65 5627 +5629 4 -28.21 373.99 3.06 0.65 5628 +5630 4 -28.73 375.25 3.18 0.65 5629 +5631 4 -30.1 375.97 3.74 0.65 5630 +5632 4 -31.5 376.83 5.16 0.65 5631 +5633 4 -32.39 377.2 5.25 0.65 5632 +5634 4 -33.59 379.06 5.42 0.65 5633 +5635 4 -33.05 380.82 5.61 0.65 5634 +5636 4 -32.69 381.85 5.8 0.54 5635 +5637 4 -32.09 382.23 6.69 0.54 5636 +5638 4 -31.98 383.44 7.71 0.54 5637 +5639 4 -31.83 384.22 8.55 0.54 5638 +5640 4 -32.82 385.83 9.29 0.54 5639 +5641 4 -33.32 386.84 9.69 0.54 5640 +5642 4 -33.43 388.04 10.64 0.54 5641 +5643 4 -33.51 389.07 11.2 0.54 5642 +5644 4 -33.84 390.75 11.44 0.54 5643 +5645 4 -33.91 391.81 11.7 0.54 5644 +5646 4 -33.78 392.52 13.36 0.54 5645 +5647 4 -34.06 393.33 13.81 0.54 5646 +5648 4 -35.05 394.9 14.85 0.54 5647 +5649 4 -35.81 396.05 15.86 0.54 5648 +5650 4 -36.56 397.22 16.72 0.54 5649 +5651 4 -37.24 397.82 16.83 0.54 5650 +5652 4 -37.95 398.37 17.33 0.54 5651 +5653 4 -38.22 399.17 17.79 0.54 5652 +5654 4 -38.72 399.95 18.46 0.54 5653 +5655 4 -38.78 400.55 18.82 0.54 5654 +5656 4 -38.89 401.98 19.79 0.54 5655 +5657 4 -39.18 402.49 20.89 0.54 5656 +5658 4 -39.72 403.64 22.21 0.54 5657 +5659 4 -40.72 404.91 23.97 0.54 5658 +5660 4 -41.89 406.33 24.24 0.54 5659 +5661 4 -42.64 407.24 25.45 0.54 5660 +5662 4 -43.11 407.62 25.7 0.54 5661 +5663 4 -43.59 407.96 26.33 0.54 5662 +5664 4 -44.26 408.32 26.72 0.54 5663 +5665 4 -44.95 408.67 27.05 0.54 5664 +5666 4 -45.66 409.44 27.63 0.54 5665 +5667 4 -46.57 409.76 28.18 0.54 5666 +5668 4 -47.26 410.12 28.42 0.54 5667 +5669 4 -47.94 410.72 28.55 0.54 5668 +5670 4 -49.04 410.85 28.68 0.54 5669 +5671 4 23.1 261.64 -35.75 1.735 5535 +5672 4 23.43 262.39 -37.18 1.735 5671 +5673 4 23.38 263.57 -38.11 1.735 5672 +5674 4 23.64 264.48 -38.01 1.735 5673 +5675 4 24.05 264.17 -36.74 0.65 5674 +5676 4 24.7 263.88 -35.71 0.65 5675 +5677 4 25.3 264.57 -35.7 0.65 5676 +5678 4 25.72 264.48 -34.57 0.65 5677 +5679 4 26.13 264.46 -34.03 0.65 5678 +5680 4 27.13 265.27 -32.95 0.65 5679 +5681 4 27.31 265.69 -32.6 0.65 5680 +5682 4 27.73 265.65 -31.99 0.65 5681 +5683 4 27.91 266.03 -31.34 0.65 5682 +5684 4 27.89 265.96 -30.68 0.65 5683 +5685 4 28.3 265.91 -29.99 0.65 5684 +5686 4 28.26 266.28 -29.28 0.65 5685 +5687 4 29.29 267.16 -28.78 0.65 5686 +5688 4 29.68 267.55 -28.06 0.65 5687 +5689 4 30.02 268.82 -27.61 0.65 5688 +5690 4 30.38 269.67 -27.07 0.65 5689 +5691 4 30.75 270.52 -26.67 0.65 5690 +5692 4 31.13 271.14 -26.14 0.65 5691 +5693 4 31.52 271.78 -25.76 0.65 5692 +5694 4 31.7 272.2 -25.42 0.65 5693 +5695 4 32.28 273.05 -24.93 0.65 5694 +5696 4 33.06 274.35 -24.33 0.65 5695 +5697 4 33.64 275.21 -23.93 0.65 5696 +5698 4 34.17 276.94 -23.51 0.65 5697 +5699 4 34.76 278.02 -23.23 0.65 5698 +5700 4 35.08 279.53 -22.85 0.65 5699 +5701 4 36.24 281.75 -22.51 0.65 5700 +5702 4 37.42 283.54 -22.3 0.65 5701 +5703 4 39.89 285.62 -21.95 0.65 5702 +5704 4 41.54 287.02 -21.77 0.65 5703 +5705 4 42.13 287.9 -21.58 0.65 5704 +5706 4 42.53 288.57 -21.43 0.65 5705 +5707 4 44.27 291.68 -20.99 0.65 5706 +5708 4 45.89 293.48 -20.7 0.65 5707 +5709 4 46.89 295.09 -21.03 0.65 5708 +5710 4 47.87 296.67 -20.84 0.65 5709 +5711 4 48.65 297.67 -19.59 0.65 5710 +5712 4 49.63 298.65 -17.88 0.65 5711 +5713 4 50.8 300.66 -17.64 0.65 5712 +5714 4 52.16 302.88 -17.31 0.65 5713 +5715 4 53.49 305.69 -16.31 0.65 5714 +5716 4 55.72 307.97 -15.95 0.65 5715 +5717 4 56.91 309.76 -15.73 0.65 5716 +5718 4 58.53 311.8 -15.48 0.65 5717 +5719 4 60.98 314.1 -15.19 0.65 5718 +5720 4 61.76 314.65 -13.68 0.65 5719 +5721 4 62.58 315.56 -13.57 0.65 5720 +5722 4 64.04 316.51 -13.44 0.65 5721 +5723 4 64.8 317.81 -12.9 0.65 5722 +5724 4 65.38 318.91 -12.71 0.65 5723 +5725 4 66.61 320.06 -12.56 0.65 5724 +5726 4 68.26 321.45 -12.37 0.65 5725 +5727 4 69.25 323.01 -12.19 0.65 5726 +5728 4 70.18 325.22 -11.94 0.65 5727 +5729 4 71.18 326.58 -11.77 0.65 5728 +5730 4 72.81 328.39 -11.47 0.65 5729 +5731 4 74.19 330.4 -11.08 0.65 5730 +5732 4 75.33 332.55 -10.22 0.65 5731 +5733 4 75.43 334.5 -10.02 0.65 5732 +5734 4 76.29 337.72 -9.21 0.65 5733 +5735 4 76.35 340.09 -8.9 0.65 5734 +5736 4 77.43 343.6 -8.51 0.65 5735 +5737 4 78.93 346.81 -7.08 0.65 5736 +5738 4 79.42 349.21 -6.82 0.65 5737 +5739 4 79.93 351.59 -6.49 0.65 5738 +5740 4 80.73 352.51 -6.37 0.65 5739 +5741 4 81.71 354.07 -6.19 0.65 5740 +5742 4 82.85 356.72 -5.89 0.65 5741 +5743 4 83.26 360.41 -5.49 0.65 5742 +5744 4 84.34 363.91 -5.11 0.65 5743 +5745 4 85.32 365.95 -5.4 0.65 5744 +5746 4 86.98 367.17 -5.54 0.65 5745 +5747 4 87.81 368.14 -6.09 0.65 5746 +5748 4 87.98 369.09 -6.75 0.65 5747 +5749 4 88.17 369.78 -7.12 0.65 5748 +5750 4 89.0 371.3 -8.61 0.65 5749 +5751 4 23.56 265.03 -39.61 1.735 5674 +5752 4 23.87 267.3 -40.43 1.41 5751 +5753 4 24.22 269.42 -41.78 1.19 5752 +5754 4 24.58 271.04 -42.51 1.19 5753 +5755 4 24.74 272.44 -43.26 1.19 5754 +5756 4 24.99 273.38 -43.16 1.19 5755 +5757 4 25.4 273.84 -43.1 1.19 5756 +5758 4 25.55 274.68 -42.78 0.54 5757 +5759 4 25.53 275.13 -42.89 0.54 5758 +5760 4 25.71 274.98 -41.32 0.54 5759 +5761 4 26.32 275.7 -41.68 0.54 5760 +5762 4 26.52 276.14 -41.63 0.54 5761 +5763 4 26.9 276.82 -41.62 0.54 5762 +5764 4 27.05 277.63 -40.93 0.54 5763 +5765 4 27.01 277.98 -40.15 0.54 5764 +5766 4 27.2 278.18 -39.83 0.54 5765 +5767 4 27.37 278.52 -38.88 0.54 5766 +5768 4 27.56 278.94 -38.45 0.54 5767 +5769 4 27.7 279.75 -37.84 0.54 5768 +5770 4 27.85 280.55 -37.15 0.54 5769 +5771 4 27.78 281.61 -36.89 0.76 5770 +5772 4 27.9 282.61 -35.95 0.65 5771 +5773 4 27.85 282.92 -34.72 0.65 5772 +5774 4 27.84 282.88 -34.35 0.65 5773 +5775 4 27.79 283.23 -33.56 0.65 5774 +5776 4 27.72 284.02 -32.72 0.65 5775 +5777 4 27.36 286.11 -32.21 0.76 5776 +5778 4 27.25 287.29 -31.12 0.76 5777 +5779 4 26.75 288.28 -30.43 0.76 5778 +5780 4 26.66 289.31 -29.94 0.76 5779 +5781 4 26.8 290.36 -29.45 0.76 5780 +5782 4 26.9 292.02 -28.68 0.76 5781 +5783 4 26.78 293.72 -28.35 0.76 5782 +5784 4 27.11 295.46 -28.16 0.76 5783 +5785 4 27.46 296.51 -27.6 0.76 5784 +5786 4 28.64 298.26 -26.93 0.76 5785 +5787 4 29.17 299.99 -26.44 0.76 5786 +5788 4 29.29 301.25 -26.09 0.76 5787 +5789 4 29.59 303.41 -25.62 0.76 5788 +5790 4 28.98 305.94 -25.31 0.76 5789 +5791 4 28.41 308.06 -25.1 0.76 5790 +5792 4 28.7 310.21 -24.79 0.76 5791 +5793 4 29.24 312.18 -24.5 0.76 5792 +5794 4 30.0 313.67 -24.25 0.65 5793 +5795 4 31.77 316.57 -23.91 0.65 5794 +5796 4 32.93 318.79 -23.65 0.65 5795 +5797 4 34.26 321.67 -23.32 0.65 5796 +5798 4 35.05 323.0 -23.17 0.65 5797 +5799 4 35.16 324.73 -22.98 0.65 5798 +5800 4 34.62 326.2 -22.85 0.65 5799 +5801 4 33.58 328.93 -22.52 0.65 5800 +5802 4 32.2 333.37 -22.09 0.65 5801 +5803 4 31.87 335.49 -21.88 0.65 5802 +5804 4 31.97 337.0 -21.72 0.65 5803 +5805 4 32.06 339.16 -21.49 0.65 5804 +5806 4 32.39 340.69 -21.33 0.65 5805 +5807 4 32.46 343.06 -21.08 0.65 5806 +5808 4 32.28 345.84 -20.8 0.65 5807 +5809 4 31.76 347.32 -20.66 0.65 5808 +5810 4 31.24 348.57 -20.54 0.65 5809 +5811 4 31.18 349.43 -20.45 0.65 5810 +5812 4 30.84 351.02 -19.24 0.54 5811 +5813 4 31.16 352.76 -19.05 0.54 5812 +5814 4 31.91 354.53 -18.85 0.54 5813 +5815 4 32.28 355.64 -18.8 0.54 5814 +5816 4 32.42 356.93 -18.66 0.54 5815 +5817 4 32.34 358.0 -18.55 0.54 5816 +5818 4 32.29 358.86 -18.47 0.54 5817 +5819 4 31.76 360.33 -18.33 0.54 5818 +5820 4 32.45 362.96 -18.04 0.54 5819 +5821 4 33.01 364.49 -17.87 0.54 5820 +5822 4 33.75 366.49 -17.64 0.54 5821 +5823 4 34.9 368.91 -17.36 0.54 5822 +5824 4 35.9 370.26 -17.2 0.54 5823 +5825 4 36.27 371.15 -17.1 0.54 5824 +5826 4 36.23 371.79 -17.03 0.54 5825 +5827 4 36.28 374.37 -16.77 0.54 5826 +5828 4 35.69 376.91 -16.52 0.54 5827 +5829 4 36.2 379.1 -16.28 0.54 5828 +5830 4 37.1 381.95 -15.96 0.54 5829 +5831 4 38.04 384.15 -15.71 0.54 5830 +5832 4 38.75 386.26 -14.57 0.54 5831 +5833 4 39.93 388.27 -14.34 0.54 5832 +5834 4 40.65 390.46 -14.02 0.435 5833 +5835 4 41.41 391.98 -13.62 0.435 5834 +5836 4 41.94 393.7 -13.05 0.435 5835 +5837 4 41.83 395.15 -12.45 0.435 5836 +5838 4 42.49 398.41 -12.02 0.435 5837 +5839 4 43.63 400.84 -11.67 0.435 5838 +5840 4 44.36 403.24 -11.4 0.435 5839 +5841 4 44.69 404.78 -11.24 0.435 5840 +5842 4 44.98 406.94 -11.01 0.435 5841 +5843 4 44.87 408.65 -10.75 0.435 5842 +5844 4 45.18 410.61 -10.54 0.435 5843 +5845 4 45.88 413.23 -10.26 0.435 5844 +5846 4 47.67 415.71 -9.96 0.435 5845 +5847 4 48.69 416.84 -9.82 0.435 5846 +5848 4 48.63 417.91 -9.71 0.435 5847 +5849 4 48.71 419.63 -9.38 0.435 5848 +5850 4 49.03 421.58 -9.1 0.435 5849 +5851 4 50.44 423.16 -8.82 0.435 5850 +5852 4 53.74 425.93 -8.45 0.435 5851 +5853 4 54.83 429.24 -8.09 0.435 5852 +5854 4 55.38 430.77 -7.91 0.435 5853 +5855 4 55.72 432.04 -7.33 0.435 5854 +5856 4 55.86 433.08 -6.77 0.435 5855 +5857 4 55.78 434.11 -6.28 0.435 5856 +5858 4 55.09 435.55 -7.96 0.435 5857 +5859 4 54.63 436.16 -7.98 0.435 5858 +5860 4 53.7 437.53 -9.21 0.435 5859 +5861 4 53.28 437.76 -9.65 0.435 5860 +5862 4 52.38 438.71 -10.86 0.435 5861 +5863 4 51.26 440.11 -12.55 0.435 5862 +5864 4 50.59 441.31 -14.18 0.435 5863 +5865 4 49.21 443.34 -15.73 0.435 5864 +5866 4 47.62 444.86 -16.67 0.435 5865 +5867 4 47.54 445.89 -16.26 0.435 5866 +5868 4 46.84 446.99 -16.69 0.435 5867 +5869 4 46.54 448.01 -16.29 0.435 5868 +5870 4 46.73 448.43 -16.1 0.435 5869 +5871 4 46.72 449.17 -16.84 0.435 5870 +5872 4 46.45 450.35 -17.94 0.435 5871 +5873 4 46.4 451.22 -18.07 0.435 5872 +5874 4 45.74 451.94 -19.14 0.435 5873 +5875 4 45.25 453.3 -19.99 0.435 5874 +5876 4 45.25 453.85 -20.99 0.435 5875 +5877 4 43.92 454.97 -22.26 0.435 5876 +5878 4 44.24 456.76 -22.52 0.435 5877 +5879 4 42.85 458.73 -23.56 0.435 5878 +5880 4 42.56 460.57 -24.65 0.435 5879 +5881 4 42.88 462.31 -24.54 0.435 5880 +5882 4 43.59 465.49 -25.33 0.435 5881 +5883 4 44.93 468.16 -25.1 0.435 5882 +5884 4 45.62 470.99 -24.79 0.435 5883 +5885 4 46.91 474.68 -24.53 0.435 5884 +5886 4 47.97 478.4 -24.12 0.435 5885 +5887 4 50.13 481.98 -23.7 0.435 5886 +5888 4 52.83 487.3 -23.08 0.435 5887 +5889 4 55.67 490.27 -22.71 0.435 5888 +5890 4 57.08 491.86 -22.51 0.435 5889 +5891 4 59.46 495.96 -22.85 0.435 5890 +5892 4 61.33 497.44 -23.26 0.435 5891 +5893 4 62.37 498.44 -24.04 0.435 5892 +5894 4 64.34 501.8 -23.79 0.435 5893 +5895 4 65.3 502.99 -21.99 0.435 5894 +5896 4 65.63 504.45 -21.31 0.435 5895 +5897 4 66.65 505.4 -21.25 0.435 5896 +5898 4 67.2 506.94 -21.16 0.435 5897 +5899 4 67.75 508.48 -20.99 0.435 5898 +5900 4 68.32 509.8 -20.84 0.435 5899 +5901 4 68.65 511.06 -20.1 0.435 5900 +5902 4 68.8 512.08 -19.54 0.435 5901 +5903 4 68.76 512.5 -19.26 0.435 5902 +5904 4 68.74 513.22 -20.02 0.435 5903 +5905 4 68.72 513.99 -21.14 0.435 5904 +5906 4 68.29 514.99 -22.86 0.435 5905 +5907 4 68.3 515.31 -23.81 0.435 5906 +5908 4 68.27 516.04 -24.49 0.435 5907 +5909 4 68.2 517.37 -24.81 0.435 5908 +5910 4 68.14 518.5 -25.21 0.435 5909 +5911 4 67.33 521.04 -25.12 0.435 5910 +5912 4 67.04 522.62 -25.87 0.435 5911 +5913 4 67.62 524.04 -26.61 0.435 5912 +5914 4 68.19 525.07 -25.66 0.435 5913 +5915 4 68.57 526.53 -26.94 0.435 5914 +5916 4 68.76 527.5 -27.89 0.435 5915 +5917 4 69.37 528.5 -28.75 0.435 5916 +5918 4 69.77 529.73 -29.9 0.435 5917 +5919 4 70.22 530.08 -30.97 0.435 5918 +5920 4 70.75 532.12 -31.5 0.435 5919 +5921 4 70.64 534.61 -32.38 0.435 5920 +5922 4 71.39 536.69 -33.2 0.435 5921 +5923 4 71.73 538.48 -33.46 0.435 5922 +5924 4 72.67 541.21 -34.06 0.435 5923 +5925 4 72.8 542.77 -34.35 0.435 5924 +5926 4 71.81 545.17 -35.18 0.435 5925 +5927 4 71.71 546.68 -35.09 0.435 5926 +5928 4 71.83 548.68 -35.42 0.435 5927 +5929 4 71.94 550.45 -35.68 0.435 5928 +5930 4 64.14 504.21 -21.89 0.435 5895 +5931 4 64.08 505.07 -21.95 0.435 5930 +5932 4 63.6 505.68 -21.75 0.435 5931 +5933 4 64.15 506.63 -19.98 0.435 5932 +5934 4 64.05 507.57 -18.76 0.435 5933 +5935 4 63.68 509.33 -17.0 0.435 5934 +5936 4 62.73 510.02 -15.82 0.435 5935 +5937 4 62.51 509.99 -15.68 0.435 5936 +5938 4 61.42 509.6 -14.77 0.435 5937 +5939 4 60.34 509.57 -15.02 0.435 5938 +5940 4 59.91 509.53 -14.88 0.435 5939 +5941 4 29.75 351.27 -20.3 0.54 5811 +5942 4 29.28 352.11 -20.22 0.54 5941 +5943 4 29.22 352.68 -19.48 0.54 5942 +5944 4 29.16 352.99 -18.32 0.54 5943 +5945 4 29.09 353.79 -17.56 0.54 5944 +5946 4 29.4 355.21 -16.43 0.54 5945 +5947 4 29.58 355.84 -16.06 0.54 5946 +5948 4 29.47 357.04 -15.11 0.54 5947 +5949 4 29.84 357.87 -14.63 0.54 5948 +5950 4 29.76 358.9 -14.01 0.54 5949 +5951 4 29.71 359.26 -13.37 0.54 5950 +5952 4 28.75 360.4 -12.29 0.54 5951 +5953 4 28.7 360.99 -11.77 0.54 5952 +5954 4 27.98 361.47 -10.53 0.54 5953 +5955 4 27.5 361.81 -9.84 0.54 5954 +5956 4 27.02 362.11 -8.84 0.54 5955 +5957 4 26.49 363.26 -7.68 0.54 5956 +5958 4 26.2 364.02 -6.85 0.54 5957 +5959 4 26.12 364.52 -5.37 0.54 5958 +5960 4 26.28 365.11 -4.63 0.54 5959 +5961 4 26.2 365.58 -2.92 0.54 5960 +5962 4 25.47 366.54 -2.01 0.54 5961 +5963 4 25.61 367.34 -1.32 0.54 5962 +5964 4 25.52 368.34 -0.47 0.54 5963 +5965 4 25.47 368.92 0.18 0.54 5964 +5966 4 24.03 370.93 0.81 0.54 5965 +5967 4 23.55 371.52 1.16 0.54 5966 +5968 4 22.6 372.48 1.84 0.54 5967 +5969 4 21.68 373.0 2.48 0.54 5968 +5970 4 21.24 372.96 2.61 0.54 5969 +5971 4 19.84 374.27 3.24 0.54 5970 +5972 4 18.95 374.15 3.89 0.54 5971 +5973 4 18.7 374.48 4.67 0.54 5972 +5974 4 17.53 375.13 6.07 0.54 5973 +5975 4 17.49 375.25 7.06 0.54 5974 +5976 4 17.43 376.06 7.52 0.54 5975 +5977 4 17.62 376.23 8.22 0.54 5976 +5978 4 17.56 376.82 8.88 0.54 5977 +5979 4 17.51 377.66 8.97 0.54 5978 +5980 4 17.63 378.93 9.32 0.54 5979 +5981 4 17.78 380.0 9.67 0.54 5980 +5982 4 17.1 380.35 9.99 0.54 5981 +5983 4 16.64 380.75 10.17 0.54 5982 +5984 4 15.92 381.27 10.96 0.54 5983 +5985 4 15.23 381.86 11.23 0.54 5984 +5986 4 14.3 382.63 11.51 0.54 5985 +5987 4 13.98 384.06 12.11 0.54 5986 +5988 4 12.77 385.63 13.15 0.54 5987 +5989 4 12.73 385.99 13.79 0.54 5988 +5990 4 12.2 387.19 14.5 0.54 5989 +5991 4 11.27 387.95 15.0 0.54 5990 +5992 4 11.22 388.55 15.59 0.54 5991 +5993 4 10.51 389.08 16.24 0.54 5992 +5994 4 10.01 389.86 16.83 0.54 5993 +5995 4 9.52 390.67 17.05 0.54 5994 +5996 4 9.04 391.25 17.48 0.54 5995 +5997 4 8.57 391.6 17.96 0.54 5996 +5998 4 7.88 391.95 18.43 0.54 5997 +5999 4 7.39 392.76 18.65 0.54 5998 +6000 4 6.87 393.74 19.42 0.54 5999 +6001 4 6.34 394.9 20.58 0.54 6000 +6002 4 6.27 395.69 21.26 0.54 6001 +6003 4 6.43 396.3 21.78 0.54 6002 +6004 4 6.57 397.58 22.07 0.54 6003 +6005 4 6.48 398.57 22.93 0.54 6004 +6006 4 6.43 399.2 23.21 0.54 6005 +6007 4 5.04 400.33 23.98 0.54 6006 +6008 4 3.43 401.74 24.09 0.54 6007 +6009 4 3.35 402.8 24.19 0.54 6008 +6010 4 2.87 403.36 24.84 0.54 6009 +6011 4 3.0 404.6 25.58 0.54 6010 +6012 4 3.15 405.46 25.74 0.54 6011 +6013 4 3.08 406.27 26.28 0.54 6012 +6014 4 2.59 407.07 26.73 0.54 6013 +6015 4 2.05 408.49 27.39 0.54 6014 +6016 4 1.98 409.29 27.92 0.54 6015 +6017 4 1.93 409.89 28.5 0.54 6016 +6018 4 2.91 410.88 29.99 0.54 6017 +6019 4 3.43 412.3 31.43 0.54 6018 +6020 4 3.58 413.37 31.7 0.54 6019 +6021 4 3.68 414.82 32.37 0.54 6020 +6022 4 2.95 415.81 32.91 0.54 6021 +6023 4 1.76 417.17 33.71 0.54 6022 +6024 4 1.25 418.16 34.32 0.54 6023 +6025 4 0.73 419.13 35.08 0.54 6024 +6026 4 0.64 420.39 35.51 0.54 6025 +6027 4 0.55 421.35 36.67 0.54 6026 +6028 4 0.08 421.72 37.08 0.54 6027 +6029 4 0.2 422.94 37.88 0.54 6028 +6030 4 0.98 424.27 38.19 0.54 6029 +6031 4 1.17 424.16 39.38 0.54 6030 +6032 4 1.72 425.18 40.41 0.54 6031 +6033 4 2.03 426.31 42.26 0.54 6032 +6034 4 2.55 427.98 43.35 0.54 6033 +6035 4 2.95 428.35 44.08 0.54 6034 +6036 4 3.28 429.66 44.38 0.54 6035 +6037 4 3.67 430.28 44.82 0.54 6036 +6038 4 4.72 430.74 45.28 0.54 6037 +6039 4 5.06 431.83 46.0 0.54 6038 +6040 4 5.04 431.74 46.89 0.54 6039 +6041 4 5.43 431.63 48.17 0.54 6040 +6042 4 5.59 432.47 48.64 0.54 6041 +6043 4 5.98 432.84 49.37 0.54 6042 +6044 4 6.11 433.6 50.73 0.54 6043 +6045 4 6.7 434.17 51.85 0.54 6044 +6046 4 25.07 273.97 -43.1 1.19 5757 +6047 4 25.06 274.47 -43.87 1.19 6046 +6048 4 24.98 275.75 -43.74 1.19 6047 +6049 4 24.47 277.02 -43.62 1.19 6048 +6050 4 24.18 278.89 -45.02 1.19 6049 +6051 4 23.72 279.38 -44.98 1.19 6050 +6052 4 23.54 279.55 -46.77 0.54 6051 +6053 4 22.14 280.97 -46.66 0.54 6052 +6054 4 21.71 280.93 -46.52 0.76 6053 +6055 4 20.77 282.16 -46.41 0.76 6054 +6056 4 21.32 283.49 -46.26 0.76 6055 +6057 4 21.69 284.59 -46.22 0.76 6056 +6058 4 22.05 285.9 -46.08 0.76 6057 +6059 4 21.67 287.7 -44.69 0.435 6058 +6060 4 20.96 288.73 -44.6 0.435 6059 +6061 4 20.88 289.49 -43.62 0.435 6060 +6062 4 19.97 290.04 -43.13 0.435 6061 +6063 4 20.11 291.12 -42.95 0.435 6062 +6064 4 20.25 292.16 -42.61 0.435 6063 +6065 4 20.15 293.62 -42.01 0.435 6064 +6066 4 20.09 294.45 -41.55 0.435 6065 +6067 4 19.1 296.31 -41.3 0.435 6066 +6068 4 18.6 297.08 -40.63 0.435 6067 +6069 4 18.08 298.1 -40.23 0.435 6068 +6070 4 17.71 300.38 -39.4 0.435 6069 +6071 4 17.6 301.85 -39.03 0.435 6070 +6072 4 17.04 303.73 -38.55 0.435 6071 +6073 4 16.52 304.94 -38.06 0.435 6072 +6074 4 16.0 305.92 -37.37 0.435 6073 +6075 4 15.94 306.77 -37.05 0.435 6074 +6076 4 16.04 307.95 -35.87 0.435 6075 +6077 4 16.18 309.25 -35.74 0.435 6076 +6078 4 16.07 310.96 -35.49 0.435 6077 +6079 4 15.99 312.25 -35.36 0.435 6078 +6080 4 15.08 312.83 -35.32 0.435 6079 +6081 4 14.15 313.82 -34.94 0.435 6080 +6082 4 13.44 314.33 -34.07 0.435 6081 +6083 4 12.93 315.37 -33.82 0.435 6082 +6084 4 12.82 316.81 -33.07 0.435 6083 +6085 4 12.97 317.64 -32.68 0.435 6084 +6086 4 12.9 318.66 -32.05 0.435 6085 +6087 4 12.36 320.08 -31.47 0.435 6086 +6088 4 12.3 320.94 -31.3 0.435 6087 +6089 4 12.88 322.03 -30.95 0.435 6088 +6090 4 13.02 323.1 -30.76 0.435 6089 +6091 4 13.18 323.98 -30.66 0.435 6090 +6092 4 13.34 324.8 -30.13 0.435 6091 +6093 4 13.27 325.61 -29.67 0.435 6092 +6094 4 12.95 327.09 -29.45 0.435 6093 +6095 4 12.63 328.3 -28.73 0.435 6094 +6096 4 12.55 329.29 -27.79 0.435 6095 +6097 4 12.93 330.14 -27.33 0.435 6096 +6098 4 13.03 331.6 -26.72 0.435 6097 +6099 4 12.97 332.43 -26.4 0.435 6098 +6100 4 12.94 332.86 -26.21 0.435 6099 +6101 4 13.08 333.88 -25.65 0.435 6100 +6102 4 13.23 334.95 -25.38 0.435 6101 +6103 4 13.22 334.92 -25.08 0.435 6102 +6104 4 13.18 335.3 -24.52 0.435 6103 +6105 4 13.11 336.11 -23.99 0.435 6104 +6106 4 13.49 336.45 -22.82 0.435 6105 +6107 4 13.67 336.84 -22.32 0.435 6106 +6108 4 13.81 337.65 -21.55 0.435 6107 +6109 4 13.96 338.45 -20.79 0.435 6108 +6110 4 14.12 339.31 -20.62 0.435 6109 +6111 4 13.15 340.74 -20.34 0.435 6110 +6112 4 13.31 341.59 -19.95 0.435 6111 +6113 4 12.79 342.32 -18.98 0.435 6112 +6114 4 12.08 343.34 -18.74 0.435 6113 +6115 4 12.02 343.94 -18.38 0.435 6114 +6116 4 12.4 344.81 -18.06 0.435 6115 +6117 4 12.53 346.1 -17.84 0.435 6116 +6118 4 12.49 346.49 -17.43 0.435 6117 +6119 4 12.68 346.93 -17.3 0.435 6118 +6120 4 23.88 280.73 -46.27 1.19 6051 +6121 4 23.8 282.02 -46.14 1.19 6120 +6122 4 24.18 283.73 -47.76 1.19 6121 +6123 4 23.93 284.24 -47.71 1.19 6122 +6124 4 24.54 285.07 -47.92 1.19 6123 +6125 4 24.75 285.61 -48.91 1.19 6124 +6126 4 24.73 286.62 -50.23 1.19 6125 +6127 4 24.24 288.08 -51.45 0.76 6126 +6128 4 23.77 289.26 -52.62 0.975 6127 +6129 4 22.84 291.08 -54.11 0.975 6128 +6130 4 22.32 292.88 -54.92 0.975 6129 +6131 4 22.28 294.06 -56.0 0.975 6130 +6132 4 22.27 294.85 -57.27 0.975 6131 +6133 4 22.43 295.98 -57.61 0.975 6132 +6134 4 23.01 297.66 -58.78 0.975 6133 +6135 4 23.58 299.53 -59.78 0.975 6134 +6136 4 24.17 300.95 -60.52 0.975 6135 +6137 4 24.3 302.04 -60.4 0.975 6136 +6138 4 24.05 303.4 -61.24 0.975 6137 +6139 4 23.55 304.79 -62.25 0.975 6138 +6140 4 23.07 306.17 -63.39 0.975 6139 +6141 4 22.15 307.54 -64.56 0.975 6140 +6142 4 21.22 309.11 -65.62 0.975 6141 +6143 4 20.31 310.26 -66.81 0.975 6142 +6144 4 19.35 312.0 -67.48 0.975 6143 +6145 4 18.4 313.99 -68.43 0.975 6144 +6146 4 18.14 315.18 -69.59 0.975 6145 +6147 4 17.65 316.26 -69.79 0.865 6146 +6148 4 17.4 317.49 -71.33 0.865 6147 +6149 4 17.34 318.61 -71.67 0.865 6148 +6150 4 17.65 320.56 -71.53 0.865 6149 +6151 4 18.23 322.23 -72.63 0.865 6150 +6152 4 18.59 323.55 -72.48 0.865 6151 +6153 4 19.17 324.66 -72.35 0.865 6152 +6154 4 19.57 325.67 -73.52 0.865 6153 +6155 4 19.49 326.96 -73.39 0.865 6154 +6156 4 19.0 328.54 -74.36 0.865 6155 +6157 4 18.04 329.78 -74.25 0.865 6156 +6158 4 17.54 331.38 -75.31 0.865 6157 +6159 4 17.01 333.39 -76.25 0.865 6158 +6160 4 17.18 334.26 -76.15 0.865 6159 +6161 4 17.7 336.24 -76.01 0.865 6160 +6162 4 17.68 337.23 -77.26 0.865 6161 +6163 4 18.05 338.95 -78.89 0.865 6162 +6164 4 18.21 340.34 -79.64 0.865 6163 +6165 4 18.14 341.68 -80.03 0.865 6164 +6166 4 17.88 342.83 -80.82 0.865 6165 +6167 4 17.86 343.85 -82.31 0.865 6166 +6168 4 17.82 345.06 -83.54 0.865 6167 +6169 4 17.55 346.43 -84.3 0.865 6168 +6170 4 17.5 347.57 -85.02 0.865 6169 +6171 4 16.56 348.85 -85.28 0.865 6170 +6172 4 16.07 350.2 -86.06 0.865 6171 +6173 4 15.34 352.02 -87.24 0.865 6172 +6174 4 14.82 353.82 -88.2 0.865 6173 +6175 4 14.52 355.6 -88.92 0.865 6174 +6176 4 14.69 356.56 -89.5 0.865 6175 +6177 4 14.85 358.18 -90.46 0.865 6176 +6178 4 15.41 358.73 -90.84 1.085 6177 +6179 4 16.01 359.36 -90.24 1.085 6178 +6180 4 16.63 360.66 -91.82 1.085 6179 +6181 4 17.24 361.91 -93.1 1.085 6180 +6182 4 17.68 362.51 -94.47 1.085 6181 +6183 4 18.09 363.26 -95.21 1.085 6182 +6184 4 18.3 363.8 -96.05 1.085 6183 +6185 4 18.57 363.98 -96.71 0.975 6184 +6186 4 18.89 364.43 -97.11 1.085 6185 +6187 4 20.61 365.32 -98.4 0.865 6186 +6188 4 21.66 366.12 -99.2 0.76 6187 +6189 4 22.49 367.37 -100.18 0.76 6188 +6190 4 23.14 367.67 -100.58 0.65 6189 +6191 4 23.59 367.52 -100.97 0.65 6190 +6192 4 24.48 367.15 -100.99 0.65 6191 +6193 4 25.35 367.2 -100.96 0.65 6192 +6194 4 26.06 366.9 -102.03 0.65 6193 +6195 4 27.52 367.65 -101.92 0.65 6194 +6196 4 28.62 368.09 -103.43 0.65 6195 +6197 4 29.49 368.42 -104.05 0.65 6196 +6198 4 31.18 369.75 -105.38 0.65 6197 +6199 4 32.48 370.4 -106.64 0.65 6198 +6200 4 34.19 370.94 -106.54 0.65 6199 +6201 4 36.2 370.49 -107.29 0.65 6200 +6202 4 37.67 371.01 -107.2 0.65 6201 +6203 4 39.8 372.33 -108.14 0.65 6202 +6204 4 42.52 374.0 -107.91 0.65 6203 +6205 4 44.19 375.52 -109.07 0.65 6204 +6206 4 47.21 376.51 -110.4 0.65 6205 +6207 4 49.54 377.51 -110.24 0.65 6206 +6208 4 51.91 378.44 -111.53 0.65 6207 +6209 4 53.85 379.36 -112.89 0.65 6208 +6210 4 55.73 380.56 -112.72 0.65 6209 +6211 4 56.29 381.92 -113.02 0.65 6210 +6212 4 56.51 382.16 -113.07 0.65 6211 +6213 4 56.69 382.91 -113.89 0.65 6212 +6214 4 56.91 383.44 -114.73 0.65 6213 +6215 4 57.12 384.21 -115.71 0.65 6214 +6216 4 57.12 384.8 -117.15 0.65 6215 +6217 4 57.14 384.88 -117.97 0.65 6216 +6218 4 57.14 385.14 -118.55 0.65 6217 +6219 4 57.13 385.64 -119.17 0.65 6218 +6220 4 57.31 386.34 -119.47 0.65 6219 +6221 4 57.29 387.11 -120.6 0.65 6220 +6222 4 57.48 387.85 -121.27 0.65 6221 +6223 4 57.7 388.4 -122.34 0.65 6222 +6224 4 58.07 389.78 -122.86 0.65 6223 +6225 4 58.52 389.9 -123.82 0.65 6224 +6226 4 58.95 390.42 -124.36 0.65 6225 +6227 4 59.54 391.6 -124.98 0.65 6226 +6228 4 59.93 392.56 -125.48 0.65 6227 +6229 4 60.59 392.63 -125.75 0.65 6228 +6230 4 61.26 392.78 -126.78 0.65 6229 +6231 4 61.71 392.87 -127.43 0.65 6230 +6232 4 62.38 393.01 -128.31 0.65 6231 +6233 4 62.8 393.51 -128.7 0.65 6232 +6234 4 62.99 394.27 -129.67 0.65 6233 +6235 4 63.18 395.23 -130.47 0.65 6234 +6236 4 62.7 396.08 -130.62 0.65 6235 +6237 4 62.67 396.82 -131.45 0.65 6236 +6238 4 62.85 397.77 -132.18 0.65 6237 +6239 4 63.43 399.16 -132.61 0.65 6238 +6240 4 63.42 399.66 -133.25 0.65 6239 +6241 4 64.45 400.85 -133.62 0.65 6240 +6242 4 64.87 401.65 -134.82 0.65 6241 +6243 4 65.71 402.42 -135.47 0.65 6242 +6244 4 66.81 403.1 -137.18 0.65 6243 +6245 4 67.66 403.67 -137.93 0.65 6244 +6246 4 68.96 404.04 -138.61 0.65 6245 +6247 4 69.74 405.63 -138.88 0.65 6246 +6248 4 70.81 406.19 -139.4 0.65 6247 +6249 4 71.86 407.23 -140.4 0.65 6248 +6250 4 72.65 408.33 -139.96 0.65 6249 +6251 4 73.03 409.19 -139.71 0.65 6250 +6252 4 73.64 409.66 -139.65 0.65 6251 +6253 4 17.2 365.25 -97.28 0.865 6185 +6254 4 16.5 366.08 -97.29 0.865 6253 +6255 4 16.03 366.97 -97.82 0.865 6254 +6256 4 15.58 367.94 -99.07 0.865 6255 +6257 4 15.3 369.59 -100.57 0.865 6256 +6258 4 14.84 370.27 -101.04 0.865 6257 +6259 4 14.38 371.26 -102.53 0.865 6258 +6260 4 14.78 372.76 -104.18 0.865 6259 +6261 4 15.14 373.55 -103.25 0.865 6260 +6262 4 15.73 374.75 -103.87 0.65 6261 +6263 4 15.25 375.54 -103.57 0.65 6262 +6264 4 15.25 375.85 -104.37 0.65 6263 +6265 4 15.25 376.1 -104.72 0.65 6264 +6266 4 15.02 376.57 -105.2 0.65 6265 +6267 4 15.2 377.28 -105.66 0.65 6266 +6268 4 14.76 377.77 -106.44 0.65 6267 +6269 4 14.76 378.6 -108.17 0.65 6268 +6270 4 14.75 379.09 -108.79 0.65 6269 +6271 4 14.74 379.58 -109.27 0.65 6270 +6272 4 14.73 379.83 -109.62 0.65 6271 +6273 4 14.95 380.39 -110.76 0.65 6272 +6274 4 15.37 380.92 -111.45 0.65 6273 +6275 4 15.56 381.37 -111.48 0.65 6274 +6276 4 16.18 382.37 -112.27 0.65 6275 +6277 4 16.39 382.88 -112.97 0.65 6276 +6278 4 16.57 383.62 -113.71 0.65 6277 +6279 4 16.55 384.62 -114.96 0.65 6278 +6280 4 16.55 385.18 -116.18 0.65 6279 +6281 4 16.56 385.76 -117.63 0.65 6280 +6282 4 16.59 386.14 -119.17 0.65 6281 +6283 4 16.6 386.74 -120.77 0.65 6282 +6284 4 16.61 387.1 -122.09 0.65 6283 +6285 4 16.6 387.83 -122.92 0.65 6284 +6286 4 16.63 387.96 -124.26 0.65 6285 +6287 4 16.21 388.54 -125.94 0.65 6286 +6288 4 16.22 389.13 -127.47 0.65 6287 +6289 4 16.23 389.73 -129.05 0.65 6288 +6290 4 16.22 390.53 -130.48 0.65 6289 +6291 4 16.2 391.22 -130.94 0.65 6290 +6292 4 15.75 391.96 -132.0 0.65 6291 +6293 4 15.77 392.32 -133.32 0.65 6292 +6294 4 15.76 393.08 -134.45 0.65 6293 +6295 4 15.31 393.82 -135.66 0.65 6294 +6296 4 14.8 395.38 -136.35 0.65 6295 +6297 4 14.06 396.62 -136.16 0.65 6296 +6298 4 13.1 398.29 -136.09 0.65 6297 +6299 4 11.94 399.82 -136.86 0.65 6298 +6300 4 11.41 401.81 -137.57 0.65 6299 +6301 4 10.48 403.39 -138.64 0.65 6300 +6302 4 9.92 405.82 -139.45 0.65 6301 +6303 4 8.96 407.61 -140.49 0.65 6302 +6304 4 8.04 410.54 -140.44 0.65 6303 +6305 4 7.22 413.91 -141.99 0.54 6304 +6306 4 6.69 415.63 -142.13 0.54 6305 +6307 4 6.49 418.84 -141.88 0.54 6306 +6308 4 5.33 423.29 -141.45 0.54 6307 +6309 4 5.45 425.3 -141.91 0.54 6308 +6310 4 4.76 429.13 -141.53 0.54 6309 +6311 4 3.92 432.09 -141.24 0.54 6310 +6312 4 3.52 435.08 -140.94 0.54 6311 +6313 4 2.56 439.97 -140.46 0.54 6312 +6314 4 1.01 444.29 -141.26 0.54 6313 +6315 4 0.41 446.84 -141.01 0.54 6314 +6316 4 -0.88 450.78 -141.99 0.54 6315 +6317 4 -0.83 453.86 -142.42 0.54 6316 +6318 4 -1.95 457.88 -142.1 0.54 6317 +6319 4 -3.85 460.35 -141.89 0.54 6318 +6320 4 -5.45 462.07 -142.74 0.54 6319 +6321 4 -6.5 464.81 -142.48 0.54 6320 +6322 4 -6.65 467.43 -142.73 0.54 6321 +6323 4 -6.75 469.37 -143.22 0.54 6322 +6324 4 -7.34 471.69 -142.91 0.54 6323 +6325 4 -7.7 474.33 -143.4 0.54 6324 +6326 4 -7.43 476.94 -143.2 0.54 6325 +6327 4 -7.16 479.52 -142.92 0.54 6326 +6328 4 -7.23 484.58 -143.54 0.54 6327 +6329 4 -8.41 489.46 -143.06 0.54 6328 +6330 4 -10.77 492.32 -142.82 0.54 6329 +6331 4 13.94 358.71 -90.57 0.65 6177 +6332 4 13.27 359.66 -91.85 0.65 6331 +6333 4 11.72 360.49 -92.33 0.65 6332 +6334 4 9.96 361.66 -94.21 0.435 6333 +6335 4 7.77 362.75 -95.8 0.435 6334 +6336 4 6.24 363.68 -97.18 0.435 6335 +6337 4 4.2 365.32 -97.58 0.435 6336 +6338 4 2.62 366.31 -97.67 0.435 6337 +6339 4 0.86 367.46 -99.32 0.435 6338 +6340 4 -1.39 368.83 -99.31 0.435 6339 +6341 4 -2.3 370.21 -100.55 0.435 6340 +6342 4 -2.78 371.63 -102.07 0.435 6341 +6343 4 -4.64 373.96 -102.48 0.435 6342 +6344 4 -6.0 375.27 -103.57 0.435 6343 +6345 4 -7.09 375.98 -104.66 0.435 6344 +6346 4 -8.41 377.16 -106.45 0.435 6345 +6347 4 -10.18 378.25 -107.59 0.435 6346 +6348 4 -11.29 379.14 -108.58 0.435 6347 +6349 4 -12.83 380.01 -109.58 0.435 6348 +6350 4 -14.42 381.25 -109.79 0.435 6349 +6351 4 -15.52 381.92 -110.8 0.435 6350 +6352 4 -16.7 383.36 -110.68 0.435 6351 +6353 4 -18.53 384.97 -110.63 0.435 6352 +6354 4 -19.95 386.82 -110.47 0.435 6353 +6355 4 -21.35 388.24 -110.36 0.435 6354 +6356 4 -22.49 389.25 -110.28 0.435 6355 +6357 4 -23.84 390.03 -110.23 0.435 6356 +6358 4 -25.45 391.44 -110.12 0.435 6357 +6359 4 -27.06 392.62 -110.04 0.435 6358 +6360 4 -28.23 394.06 -109.92 0.435 6359 +6361 4 -29.65 395.91 -109.76 0.435 6360 +6362 4 -30.41 396.78 -108.11 0.435 6361 +6363 4 -31.37 397.92 -107.03 0.435 6362 +6364 4 -32.33 399.06 -106.04 0.435 6363 +6365 4 -33.7 400.04 -105.89 0.435 6364 +6366 4 -36.03 402.2 -104.97 0.435 6365 +6367 4 -37.92 404.15 -104.14 0.435 6366 +6368 4 -39.35 405.95 -103.45 0.435 6367 +6369 4 -42.34 408.03 -102.33 0.435 6368 +6370 4 -45.07 410.03 -102.19 0.435 6369 +6371 4 -47.13 411.35 -101.5 0.435 6370 +6372 4 -48.08 412.27 -100.52 0.435 6371 +6373 4 -49.68 413.44 -100.35 0.435 6372 +6374 4 -50.84 414.68 -100.25 0.435 6373 +6375 4 -51.84 416.18 -98.69 0.435 6374 +6376 4 -53.02 417.61 -98.57 0.435 6375 +6377 4 -53.85 417.53 -97.63 0.435 6376 +6378 4 -55.21 418.03 -97.0 0.435 6377 +6379 4 -58.36 419.78 -96.9 0.435 6378 +6380 4 -60.0 421.83 -96.72 0.435 6379 +6381 4 -61.59 422.76 -96.21 0.435 6380 +6382 4 -63.43 424.36 -96.09 0.435 6381 +6383 4 -66.58 426.11 -95.99 0.435 6382 +6384 4 -69.33 428.31 -95.82 0.435 6383 +6385 4 -70.26 429.87 -96.81 0.435 6384 +6386 4 -72.98 431.63 -96.62 0.435 6385 +6387 4 -74.8 433.03 -96.52 0.435 6386 +6388 4 -76.41 434.23 -96.43 0.435 6387 +6389 4 -77.77 434.91 -95.56 0.435 6388 +6390 4 -80.09 437.14 -95.38 0.435 6389 +6391 4 -81.29 438.48 -94.37 0.435 6390 +6392 4 -82.9 439.88 -94.26 0.435 6391 +6393 4 -84.33 441.12 -92.44 0.435 6392 +6394 4 -86.39 442.72 -92.32 0.435 6393 +6395 4 -88.22 444.34 -92.2 0.435 6394 +6396 4 -89.6 445.53 -92.11 0.435 6395 +6397 4 -92.32 446.75 -90.84 0.435 6396 +6398 4 -94.61 448.54 -90.64 0.435 6397 +6399 4 -96.24 450.38 -90.48 0.435 6398 +6400 4 -98.24 451.7 -91.9 0.435 6399 +6401 4 -100.52 453.5 -91.77 0.435 6400 +6402 4 -103.5 456.13 -91.64 0.435 6401 +6403 4 -108.48 459.26 -91.43 0.435 6402 +6404 4 -112.75 461.59 -91.44 0.435 6403 +6405 4 -114.79 462.97 -91.35 0.435 6404 +6406 4 -117.01 463.92 -91.3 0.435 6405 +6407 4 -119.5 465.25 -91.07 0.435 6406 +6408 4 -122.39 466.37 -91.03 0.435 6407 +6409 4 -125.71 467.46 -90.99 0.435 6408 +6410 4 -128.61 468.54 -90.58 0.435 6409 +6411 4 -131.06 469.45 -90.54 0.435 6410 +6412 4 -132.12 469.84 -90.6 0.435 6411 +6413 4 -134.14 470.78 -90.48 0.435 6412 +6414 4 -137.65 471.43 -90.49 0.435 6413 +6415 4 -139.86 471.94 -90.49 0.435 6414 +6416 4 -142.97 473.04 -90.45 0.435 6415 +6417 4 -146.94 474.08 -90.44 0.435 6416 +6418 4 -149.59 474.79 -90.5 0.435 6417 +6419 4 -153.5 474.99 -90.65 0.435 6418 +6420 4 -157.9 475.8 -90.67 0.435 6419 +6421 4 -161.81 475.99 -90.74 0.435 6420 +6422 4 -165.49 475.98 -90.83 0.435 6421 +6423 4 -168.73 475.79 -90.93 0.435 6422 +6424 4 -170.88 475.23 -91.04 0.435 6423 +6425 4 -172.18 475.15 -91.08 0.435 6424 +6426 4 -53.98 419.96 -98.13 0.435 6376 +6427 4 -54.47 421.11 -99.08 0.435 6426 +6428 4 -54.55 422.4 -98.95 0.435 6427 +6429 4 -54.7 424.75 -98.63 0.435 6428 +6430 4 -55.05 426.87 -98.35 0.435 6429 +6431 4 -55.62 429.0 -98.29 0.435 6430 +6432 4 -55.78 431.36 -98.05 0.435 6431 +6433 4 -56.79 433.88 -97.82 0.435 6432 +6434 4 -57.51 435.75 -99.52 0.435 6433 +6435 4 -58.62 436.66 -100.66 0.435 6434 +6436 4 -60.23 438.34 -101.13 0.435 6435 +6437 4 -61.38 439.91 -102.27 0.435 6436 +6438 4 -62.59 442.28 -102.89 0.435 6437 +6439 4 -62.74 444.64 -102.65 0.435 6438 +6440 4 -62.39 446.48 -103.42 0.435 6439 +6441 4 -62.91 448.53 -104.65 0.435 6440 +6442 4 -63.36 449.54 -106.22 0.435 6441 +6443 4 -63.59 450.54 -107.78 0.435 6442 +6444 4 -64.07 451.4 -107.92 0.435 6443 +6445 4 -64.54 452.3 -108.67 0.435 6444 +6446 4 -64.54 453.15 -110.55 0.435 6445 +6447 4 -65.01 453.47 -109.77 0.435 6446 +6448 4 -65.72 454.6 -110.57 0.435 6447 +6449 4 -65.74 455.6 -111.83 0.435 6448 +6450 4 -65.98 456.55 -112.86 0.435 6449 +6451 4 -66.5 458.6 -114.02 0.435 6450 +6452 4 -66.98 460.04 -115.54 0.435 6451 +6453 4 -68.17 461.96 -116.13 0.435 6452 +6454 4 -68.23 463.29 -116.44 0.435 6453 +6455 4 -68.76 464.81 -116.67 0.435 6454 +6456 4 -68.82 465.88 -116.64 0.435 6455 +6457 4 -69.3 467.29 -117.85 0.435 6456 +6458 4 -69.86 469.19 -117.67 0.435 6457 +6459 4 -71.22 470.75 -118.98 0.435 6458 +6460 4 -72.16 472.05 -119.54 0.435 6459 +6461 4 -73.14 473.99 -119.51 0.435 6460 +6462 4 -74.33 476.17 -120.3 0.435 6461 +6463 4 -75.36 478.48 -120.16 0.435 6462 +6464 4 -76.78 480.54 -119.98 0.435 6463 +6465 4 -77.95 481.76 -119.88 0.435 6464 +6466 4 25.33 288.32 -51.62 0.975 6126 +6467 4 26.34 290.03 -52.71 0.865 6466 +6468 4 27.32 292.17 -53.97 0.54 6467 +6469 4 28.34 293.86 -54.98 0.54 6468 +6470 4 28.5 294.74 -55.04 0.54 6469 +6471 4 29.05 296.28 -54.86 0.54 6470 +6472 4 29.4 298.1 -55.41 0.54 6471 +6473 4 29.46 300.47 -55.17 0.54 6472 +6474 4 29.8 302.0 -55.0 0.54 6473 +6475 4 31.12 305.09 -54.65 0.54 6474 +6476 4 31.67 306.63 -54.48 0.54 6475 +6477 4 32.83 308.84 -54.15 0.54 6476 +6478 4 33.98 311.27 -53.87 0.54 6477 +6479 4 34.72 313.2 -53.65 0.54 6478 +6480 4 35.26 314.95 -53.46 0.54 6479 +6481 4 35.57 316.91 -53.25 0.54 6480 +6482 4 35.66 318.85 -53.05 0.54 6481 +6483 4 35.54 320.77 -52.85 0.54 6482 +6484 4 35.46 322.1 -53.09 0.54 6483 +6485 4 35.59 324.19 -54.38 0.54 6484 +6486 4 36.11 326.39 -54.22 0.54 6485 +6487 4 36.61 328.57 -53.98 0.54 6486 +6488 4 37.33 330.97 -53.71 0.54 6487 +6489 4 38.08 332.95 -53.49 0.54 6488 +6490 4 38.65 334.06 -53.36 0.54 6489 +6491 4 39.0 335.63 -53.56 0.54 6490 +6492 4 39.52 337.6 -53.35 0.54 6491 +6493 4 39.48 337.95 -52.49 0.54 6492 +6494 4 39.65 338.6 -52.49 0.54 6493 +6495 4 39.41 339.59 -53.75 0.54 6494 +6496 4 40.0 341.01 -54.49 0.54 6495 +6497 4 40.37 341.85 -54.09 0.54 6496 +6498 4 40.94 343.76 -55.24 0.54 6497 +6499 4 41.13 344.72 -56.11 0.54 6498 +6500 4 41.5 346.44 -57.67 0.54 6499 +6501 4 41.87 347.52 -57.55 0.54 6500 +6502 4 42.46 349.24 -59.08 0.54 6501 +6503 4 43.68 351.44 -60.64 0.54 6502 +6504 4 44.45 353.3 -61.4 0.54 6503 +6505 4 45.24 355.23 -62.84 0.54 6504 +6506 4 46.44 357.87 -64.5 0.54 6505 +6507 4 47.47 359.41 -66.13 0.54 6506 +6508 4 47.84 360.77 -66.5 0.54 6507 +6509 4 47.97 362.08 -66.36 0.54 6508 +6510 4 47.26 363.12 -66.35 0.54 6509 +6511 4 47.47 363.58 -67.05 0.435 6510 +6512 4 48.02 365.12 -66.88 0.435 6511 +6513 4 48.8 366.44 -66.65 0.435 6512 +6514 4 49.75 368.44 -66.35 0.435 6513 +6515 4 50.52 370.19 -66.15 0.435 6514 +6516 4 50.64 371.19 -65.21 0.435 6515 +6517 4 50.96 372.38 -63.8 0.435 6516 +6518 4 50.37 374.71 -63.57 0.435 6517 +6519 4 49.19 376.38 -63.58 0.435 6518 +6520 4 47.53 378.96 -64.41 0.435 6519 +6521 4 46.11 381.06 -64.59 0.435 6520 +6522 4 45.62 382.4 -65.3 0.435 6521 +6523 4 44.67 384.19 -66.34 0.435 6522 +6524 4 44.18 385.82 -67.7 0.435 6523 +6525 4 43.68 387.4 -68.59 0.435 6524 +6526 4 43.36 388.88 -68.44 0.435 6525 +6527 4 43.47 391.11 -68.97 0.435 6526 +6528 4 43.54 393.27 -68.82 0.435 6527 +6529 4 43.76 396.8 -68.6 0.435 6528 +6530 4 44.6 400.51 -68.2 0.435 6529 +6531 4 45.02 404.49 -68.6 0.435 6530 +6532 4 45.92 407.35 -68.28 0.435 6531 +6533 4 46.95 411.5 -67.83 0.435 6532 +6534 4 48.16 416.51 -67.28 0.435 6533 +6535 4 48.99 420.44 -66.86 0.435 6534 +6536 4 49.54 422.24 -67.11 0.435 6535 +6537 4 49.69 423.06 -66.5 0.435 6536 +6538 4 49.83 424.08 -65.86 0.435 6537 +6539 4 49.72 425.54 -65.26 0.435 6538 +6540 4 50.11 426.18 -64.96 0.435 6539 +6541 4 50.89 427.52 -64.72 0.435 6540 +6542 4 51.24 428.04 -63.3 0.435 6541 +6543 4 51.42 428.65 -62.79 0.435 6542 +6544 4 51.54 429.67 -62.0 0.435 6543 +6545 4 51.84 431.56 -61.19 0.435 6544 +6546 4 51.98 432.38 -60.58 0.435 6545 +6547 4 52.35 433.2 -59.89 0.435 6546 +6548 4 52.47 434.22 -59.09 0.435 6547 +6549 4 53.17 436.8 -58.44 0.435 6548 +6550 4 53.21 439.02 -56.85 0.435 6549 +6551 4 53.69 441.63 -56.49 0.435 6550 +6552 4 53.57 443.04 -55.45 0.435 6551 +6553 4 53.9 444.78 -55.26 0.435 6552 +6554 4 54.8 447.42 -54.97 0.435 6553 +6555 4 55.34 449.16 -54.69 0.435 6554 +6556 4 55.83 451.48 -53.69 0.435 6555 +6557 4 56.18 452.79 -53.54 0.435 6556 +6558 4 56.06 454.72 -53.28 0.435 6557 +6559 4 55.49 456.62 -53.09 0.435 6558 +6560 4 54.94 458.52 -52.91 0.435 6559 +6561 4 55.05 460.25 -52.73 0.435 6560 +6562 4 55.07 462.73 -51.42 0.435 6561 +6563 4 56.13 466.45 -51.01 0.435 6562 +6564 4 56.83 469.1 -50.63 0.435 6563 +6565 4 59.16 473.33 -50.14 0.435 6564 +6566 4 60.09 475.75 -49.87 0.435 6565 +6567 4 61.0 478.38 -49.5 0.435 6566 +6568 4 62.09 481.12 -48.06 0.435 6567 +6569 4 62.84 485.72 -45.77 0.435 6568 +6570 4 62.89 487.54 -44.37 0.435 6569 +6571 4 63.63 489.73 -44.13 0.435 6570 +6572 4 64.43 493.53 -42.43 0.435 6571 +6573 4 65.12 495.81 -40.9 0.435 6572 +6574 4 66.22 498.33 -39.4 0.435 6573 +6575 4 66.92 500.4 -37.97 0.435 6574 +6576 4 67.17 502.41 -36.09 0.435 6575 +6577 4 67.07 503.61 -35.15 0.325 6576 +6578 4 67.29 506.85 -34.81 0.325 6577 +6579 4 67.4 508.79 -34.6 0.325 6578 +6580 4 67.66 511.38 -34.33 0.325 6579 +6581 4 67.25 513.79 -32.58 0.325 6580 +6582 4 67.3 516.14 -32.18 0.325 6581 +6583 4 67.8 518.54 -31.92 0.325 6582 +6584 4 67.84 521.06 -30.99 0.325 6583 +6585 4 68.53 523.88 -30.6 0.325 6584 +6586 4 69.43 525.93 -28.86 0.325 6585 +6587 4 69.7 528.54 -28.58 0.325 6586 +6588 4 70.4 531.15 -28.22 0.325 6587 +6589 4 70.49 533.31 -28.0 0.325 6588 +6590 4 70.59 534.82 -27.84 0.325 6589 +6591 4 71.12 536.79 -27.62 0.325 6590 +6592 4 71.92 537.9 -27.41 0.325 6591 +6593 4 72.07 538.99 -27.29 0.325 6592 +6594 4 72.4 540.52 -27.13 0.325 6593 +6595 4 72.5 542.45 -26.93 0.325 6594 +6596 4 72.43 543.53 -26.82 0.325 6595 +6597 4 72.34 545.02 -26.66 0.325 6596 +6598 4 71.81 546.28 -26.55 0.325 6597 +6599 4 71.76 547.15 -26.46 0.325 6598 +6600 4 71.29 547.75 -26.34 0.325 6599 +6601 4 46.3 364.57 -66.23 0.54 6510 +6602 4 45.33 366.22 -66.08 0.54 6601 +6603 4 45.04 367.56 -66.62 0.435 6602 +6604 4 44.56 368.95 -67.77 0.435 6603 +6605 4 44.09 369.87 -68.51 0.435 6604 +6606 4 43.19 371.03 -69.84 0.435 6605 +6607 4 42.95 372.02 -71.1 0.435 6606 +6608 4 42.67 373.11 -71.3 0.435 6607 +6609 4 42.44 374.02 -72.5 0.435 6608 +6610 4 42.21 374.83 -74.15 0.435 6609 +6611 4 41.98 375.79 -75.26 0.435 6610 +6612 4 41.73 376.73 -76.15 0.435 6611 +6613 4 40.8 377.78 -76.36 0.435 6612 +6614 4 39.98 378.15 -78.3 0.435 6613 +6615 4 24.1 207.46 -20.24 0.435 5040 +6616 4 23.59 208.52 -20.21 0.435 6615 +6617 4 23.58 208.74 -20.27 0.435 6616 +6618 4 23.52 209.54 -19.66 0.435 6617 +6619 4 22.8 210.05 -18.64 0.435 6618 +6620 4 22.31 211.11 -18.77 0.435 6619 +6621 4 22.24 211.91 -18.16 0.435 6620 +6622 4 21.69 213.25 -16.68 0.435 6621 +6623 4 20.7 214.86 -16.08 0.435 6622 +6624 4 19.73 216.03 -15.38 0.435 6623 +6625 4 18.27 218.52 -15.16 0.435 6624 +6626 4 18.18 220.03 -15.0 0.435 6625 +6627 4 17.53 223.42 -14.67 0.435 6626 +6628 4 16.27 226.15 -14.42 0.435 6627 +6629 4 14.17 228.39 -14.23 0.435 6628 +6630 4 12.99 229.82 -14.11 0.435 6629 +6631 4 11.49 232.96 -13.82 0.435 6630 +6632 4 9.96 237.06 -14.57 0.435 6631 +6633 4 8.24 240.19 -14.36 0.435 6632 +6634 4 7.72 241.99 -15.32 0.435 6633 +6635 4 6.74 243.87 -15.22 0.435 6634 +6636 4 6.18 246.59 -16.61 0.435 6635 +6637 4 5.23 248.03 -16.49 0.435 6636 +6638 4 4.69 249.52 -16.34 0.435 6637 +6639 4 4.6 251.02 -16.19 0.435 6638 +6640 4 4.72 252.53 -16.03 0.435 6639 +6641 4 4.43 253.75 -16.06 0.435 6640 +6642 4 4.37 254.91 -16.77 0.435 6641 +6643 4 4.32 256.02 -17.11 0.435 6642 +6644 4 2.9 257.88 -17.03 0.435 6643 +6645 4 1.5 259.3 -16.92 0.435 6644 +6646 4 0.6 260.18 -17.52 0.435 6645 +6647 4 0.32 261.24 -17.57 0.435 6646 +6648 4 0.24 262.54 -17.51 0.435 6647 +6649 4 0.18 263.67 -17.92 0.435 6648 +6650 4 -0.38 265.99 -17.7 0.435 6649 +6651 4 -0.96 268.12 -17.49 0.435 6650 +6652 4 -3.07 271.38 -18.86 0.435 6651 +6653 4 -3.81 272.84 -18.73 0.435 6652 +6654 4 -5.45 274.92 -18.78 0.435 6653 +6655 4 -6.01 276.82 -18.6 0.435 6654 +6656 4 -6.17 279.18 -18.43 0.435 6655 +6657 4 -5.97 283.06 -18.02 0.435 6656 +6658 4 -6.37 285.85 -17.89 0.435 6657 +6659 4 -7.39 288.98 -19.47 0.435 6658 +6660 4 -8.22 291.94 -19.19 0.435 6659 +6661 4 -8.3 293.77 -20.06 0.435 6660 +6662 4 -8.93 297.01 -20.19 0.435 6661 +6663 4 -10.6 299.52 -20.27 0.435 6662 +6664 4 -11.6 302.14 -21.08 0.435 6663 +6665 4 -12.66 305.41 -21.82 0.435 6664 +6666 4 -14.57 308.3 -21.57 0.435 6665 +6667 4 -15.9 312.63 -22.13 0.435 6666 +6668 4 -15.82 315.09 -22.86 0.435 6667 +6669 4 -15.83 318.75 -22.55 0.435 6668 +6670 4 -15.55 321.68 -23.29 0.435 6669 +6671 4 -15.48 324.35 -23.85 0.435 6670 +6672 4 -15.2 326.74 -23.67 0.435 6671 +6673 4 -15.06 328.24 -24.04 0.435 6672 +6674 4 -14.28 329.57 -23.73 0.435 6673 +6675 4 -13.73 331.1 -23.48 0.435 6674 +6676 4 -13.31 331.64 -24.25 0.435 6675 +6677 4 -12.95 333.3 -25.35 0.435 6676 +6678 4 -12.51 334.09 -26.53 0.435 6677 +6679 4 -12.15 335.46 -26.92 0.435 6678 +6680 4 17.94 73.8 -14.09 0.435 3403 +6681 4 19.39 74.96 -13.94 0.435 6680 +6682 4 19.82 75.01 -14.07 0.435 6681 +6683 4 20.41 75.32 -12.6 0.435 6682 +6684 4 21.21 75.62 -10.74 0.435 6683 +6685 4 21.97 76.89 -9.83 0.435 6684 +6686 4 23.57 78.87 -9.14 0.435 6685 +6687 4 24.55 80.17 -8.53 0.435 6686 +6688 4 25.68 82.56 -7.73 0.435 6687 +6689 4 26.63 84.46 -6.61 0.435 6688 +6690 4 27.17 85.96 -6.06 0.435 6689 +6691 4 28.36 87.5 -5.5 0.435 6690 +6692 4 30.0 88.86 -4.94 0.435 6691 +6693 4 31.2 90.19 -4.48 0.435 6692 +6694 4 31.43 90.14 -4.48 0.435 6693 +6695 4 31.8 91.02 -4.3 0.435 6694 +6696 4 32.39 91.92 -4.19 0.435 6695 +6697 4 33.18 93.25 -4.03 0.435 6696 +6698 4 33.75 94.57 -3.88 0.435 6697 +6699 4 33.68 95.65 -3.77 0.435 6698 +6700 4 33.82 97.0 -4.23 0.435 6699 +6701 4 33.59 98.01 -5.56 0.435 6700 +6702 4 33.54 98.61 -5.13 0.435 6701 +6703 4 33.5 98.96 -4.34 0.435 6702 +6704 4 33.85 100.02 -3.99 0.435 6703 +6705 4 33.32 101.45 -3.33 0.435 6704 +6706 4 33.4 102.86 -2.13 0.435 6705 +6707 4 33.49 104.76 -1.56 0.435 6706 +6708 4 33.8 105.95 -0.29 0.435 6707 +6709 4 34.35 107.18 0.81 0.435 6708 +6710 4 35.3 109.1 1.72 0.435 6709 +6711 4 35.83 110.81 2.36 0.435 6710 +6712 4 37.04 112.17 2.6 0.435 6711 +6713 4 37.33 114.33 2.91 0.435 6712 +6714 4 37.7 115.16 3.46 0.435 6713 +6715 4 38.24 116.65 4.15 0.435 6714 +6716 4 39.49 117.08 4.98 0.435 6715 +6717 4 40.44 119.07 5.28 0.435 6716 +6718 4 41.22 120.37 5.73 0.435 6717 +6719 4 41.79 121.19 6.51 0.435 6718 +6720 4 42.38 122.61 5.92 0.435 6719 +6721 4 43.11 123.96 7.96 0.435 6720 +6722 4 43.91 124.89 7.92 0.435 6721 +6723 4 33.33 90.68 -3.77 0.435 6694 +6724 4 35.91 91.05 -3.59 0.435 6723 +6725 4 37.85 91.18 -3.54 0.435 6724 +6726 4 40.24 91.1 -3.49 0.435 6725 +6727 4 43.02 91.7 -3.36 0.435 6726 +6728 4 46.0 92.75 -3.18 0.435 6727 +6729 4 49.06 92.28 -3.16 0.435 6728 +6730 4 53.19 92.32 -3.05 0.435 6729 +6731 4 55.53 92.88 -2.94 0.435 6730 +6732 4 57.69 92.96 -2.36 0.435 6731 +6733 4 60.19 94.37 -1.7 0.435 6732 +6734 4 61.4 95.15 -0.15 0.435 6733 +6735 4 63.65 97.22 0.1 0.435 6734 +6736 4 64.84 98.51 1.09 0.435 6735 +6737 4 65.38 99.99 1.86 0.435 6736 +6738 4 68.32 101.44 2.16 0.435 6737 +6739 4 71.07 102.68 2.42 0.435 6738 +6740 4 72.46 104.7 2.67 0.435 6739 +6741 4 75.61 109.62 3.25 0.435 6740 +6742 4 78.25 112.36 3.6 0.435 6741 +6743 4 80.84 115.97 4.03 0.435 6742 +6744 4 83.49 118.72 4.38 0.435 6743 +6745 4 85.54 120.56 4.62 0.435 6744 +6746 4 87.68 120.9 4.78 0.435 6745 +6747 4 90.67 121.69 5.24 0.435 6746 +6748 4 93.01 121.97 6.06 0.435 6747 +6749 4 95.6 122.13 6.22 0.435 6748 +6750 4 98.95 124.04 6.57 0.435 6749 +6751 4 102.37 124.68 6.72 0.435 6750 +6752 4 105.55 125.96 6.92 0.435 6751 +6753 4 106.75 127.24 7.77 0.435 6752 +6754 4 109.25 128.64 8.43 0.435 6753 +6755 4 110.47 129.77 8.79 0.435 6754 +6756 4 111.34 129.82 8.9 0.435 6755 +6757 4 112.41 129.85 9.3 0.435 6756 diff --git a/examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc b/examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc new file mode 100644 index 0000000..3a7b77c --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc @@ -0,0 +1,3022 @@ +# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +1 1 0.0 0.0 0.0 8.88119 -1 +2 1 0.35 -8.83 -0.87 8.88119 1 +3 1 -0.35 8.83 0.87 8.88119 1 +4 3 0.67 -4.33 -2.18 2.165 1 +5 3 -0.09 -6.62 -2.34 1.84 4 +6 3 -1.76 -8.01 -2.31 1.405 5 +7 3 -2.97 -8.02 -2.2 1.405 6 +8 3 -3.39 -8.37 -2.2 1.405 7 +9 3 -3.48 -8.5 -2.2 1.405 8 +10 3 -3.53 -8.81 -3.1 1.19 9 +11 3 -3.61 -9.04 -3.55 1.19 10 +12 3 -4.27 -8.08 -3.52 0.11 11 +13 3 -5.31 -7.95 -3.18 0.11 12 +14 3 -5.47 -8.42 -3.21 0.54 13 +15 3 -6.69 -8.42 -3.11 0.54 14 +16 3 -7.0 -7.52 -2.98 0.54 15 +17 3 -8.21 -7.23 -2.84 0.54 16 +18 3 -8.66 -7.68 -2.85 0.54 17 +19 3 -9.28 -8.31 -2.85 0.54 18 +20 3 -9.73 -9.06 -2.88 0.54 19 +21 3 -10.03 -10.29 -2.97 0.54 20 +22 3 -10.03 -10.88 -3.03 0.54 21 +23 3 -10.18 -11.95 -3.12 0.54 22 +24 3 -10.63 -12.42 -3.13 0.54 23 +25 3 -10.94 -13.64 -3.22 0.54 24 +26 3 -11.39 -14.1 -3.22 0.54 25 +27 3 -11.68 -15.01 -3.28 0.54 26 +28 3 -12.22 -15.99 -4.24 0.65 27 +29 3 -12.53 -16.61 -4.26 0.65 28 +30 3 -12.98 -17.36 -4.31 0.65 29 +31 3 -13.66 -18.21 -5.16 0.54 30 +32 3 -14.88 -18.82 -5.11 0.54 31 +33 3 -16.85 -19.3 -4.97 0.54 32 +34 3 -17.61 -20.37 -5.0 0.54 33 +35 3 -17.76 -22.05 -5.16 0.54 34 +36 3 -17.6 -22.81 -5.25 0.54 35 +37 3 -17.44 -24.17 -5.39 0.54 36 +38 3 -17.74 -25.1 -5.45 0.54 37 +39 3 -19.12 -25.86 -5.4 0.54 38 +40 3 -20.94 -25.87 -5.24 0.54 39 +41 3 -22.15 -25.9 -5.05 0.54 40 +42 3 -22.3 -26.96 -5.14 0.54 41 +43 3 -22.29 -27.57 -5.19 0.54 42 +44 3 -22.44 -28.04 -5.22 0.54 43 +45 3 -22.94 -27.75 -6.06 0.435 44 +46 3 -23.25 -28.36 -6.09 0.435 45 +47 3 -23.56 -29.27 -6.23 0.435 46 +48 3 -24.05 -29.99 -6.72 0.435 47 +49 3 -24.86 -30.7 -7.31 0.435 48 +50 3 -26.08 -31.33 -7.26 0.435 49 +51 3 -27.75 -31.18 -7.09 0.435 50 +52 3 -29.32 -31.45 -7.5 0.435 51 +53 3 -30.27 -31.72 -7.89 0.435 52 +54 3 -31.81 -31.43 -7.79 0.435 53 +55 3 -33.73 -30.72 -8.68 0.435 54 +56 3 -34.98 -30.41 -8.84 0.435 55 +57 3 -35.25 -30.43 -10.1 0.54 56 +58 3 -36.17 -31.34 -10.26 0.54 57 +59 3 -37.55 -32.11 -10.29 0.54 58 +60 3 -38.19 -32.68 -10.73 0.54 59 +61 3 -38.5 -33.59 -10.86 0.54 60 +62 3 -39.6 -34.93 -11.27 0.54 61 +63 3 -40.35 -36.61 -11.37 0.54 62 +64 3 -41.27 -37.83 -11.48 0.54 63 +65 3 -41.72 -38.58 -11.59 0.54 64 +66 3 -42.19 -39.04 -11.66 0.54 65 +67 3 -42.37 -39.46 -11.98 0.54 66 +68 3 -42.4 -39.43 -12.36 0.54 67 +69 3 -43.94 -40.64 -12.57 0.54 68 +70 3 -45.25 -41.77 -13.61 0.54 69 +71 3 -46.49 -43.28 -13.86 0.54 70 +72 3 -47.71 -44.49 -13.96 0.54 71 +73 3 -48.47 -45.27 -13.96 0.54 72 +74 3 -49.24 -46.32 -14.14 0.54 73 +75 3 -50.18 -47.81 -14.57 0.54 74 +76 3 -52.32 -49.34 -14.68 0.54 75 +77 3 -53.07 -50.1 -14.68 0.54 76 +78 3 -53.41 -50.69 -15.09 0.54 77 +79 3 -53.87 -51.44 -15.19 0.54 78 +80 3 -54.81 -52.33 -15.5 0.54 79 +81 3 -56.05 -53.53 -15.8 0.54 80 +82 3 -57.73 -54.0 -15.77 0.54 81 +83 3 -59.85 -54.92 -15.66 0.54 82 +84 3 -61.23 -56.61 -15.78 0.54 83 +85 3 -62.89 -58.3 -15.79 0.54 84 +86 3 -66.39 -60.61 -15.69 0.54 85 +87 3 -67.76 -61.99 -15.7 0.54 86 +88 3 -68.97 -63.22 -15.7 0.54 87 +89 3 -71.85 -64.3 -15.55 0.54 88 +90 3 -73.99 -64.64 -15.38 0.54 89 +91 3 -75.81 -64.35 -15.19 0.54 90 +92 3 -79.65 -65.1 -15.35 0.54 91 +93 3 -82.24 -64.37 -15.04 0.54 92 +94 3 -84.53 -64.23 -14.82 0.54 93 +95 3 -86.41 -64.78 -15.39 0.54 94 +96 3 -88.69 -65.57 -15.26 0.54 95 +97 3 -90.98 -66.66 -15.15 0.54 96 +98 3 -92.87 -67.8 -16.07 0.54 97 +99 3 -93.53 -69.89 -16.73 0.54 98 +100 3 -95.82 -71.88 -16.79 0.54 99 +101 3 -96.87 -73.56 -16.87 0.54 100 +102 3 -97.85 -75.31 -17.77 0.54 101 +103 3 -98.47 -76.52 -17.99 0.54 102 +104 3 -98.16 -77.74 -18.06 0.54 103 +105 3 -98.09 -78.42 -17.38 0.54 104 +106 3 -97.89 -79.23 -16.87 0.54 105 +107 3 -98.75 -80.5 -16.54 0.54 106 +108 3 -99.36 -81.41 -16.57 0.54 107 +109 3 -99.32 -83.28 -16.31 0.54 108 +110 3 -100.2 -86.04 -16.34 0.54 109 +111 3 -99.59 -88.77 -16.67 0.54 110 +112 3 -99.27 -90.91 -16.82 0.54 111 +113 3 -98.62 -92.16 -16.55 0.54 112 +114 3 -98.46 -93.83 -16.73 0.54 113 +115 3 -98.58 -94.93 -16.45 0.54 114 +116 3 -98.4 -96.01 -16.42 0.54 115 +117 3 -98.69 -96.93 -16.4 0.54 116 +118 3 -22.3 -29.09 -5.42 0.54 44 +119 3 -21.83 -31.67 -5.72 0.54 118 +120 3 -20.61 -34.99 -6.22 0.54 119 +121 3 -19.89 -36.61 -6.91 0.54 120 +122 3 -19.46 -38.24 -7.56 0.54 121 +123 3 -19.16 -39.45 -7.78 0.54 122 +124 3 -18.65 -40.57 -7.25 0.54 123 +125 3 -17.05 -42.46 -6.82 0.54 124 +126 3 -16.58 -44.14 -6.97 0.54 125 +127 3 -16.87 -45.37 -6.98 0.54 126 +128 3 -16.66 -45.58 -6.26 0.54 127 +129 3 -17.25 -47.1 -6.35 0.54 128 +130 3 -18.32 -47.57 -6.3 0.54 129 +131 3 -19.05 -48.38 -6.01 0.54 130 +132 3 -20.1 -49.46 -5.87 0.54 131 +133 3 -20.55 -51.43 -6.02 0.54 132 +134 3 -21.15 -53.57 -6.17 0.54 133 +135 3 -22.35 -55.72 -6.2 0.54 134 +136 3 -23.41 -57.41 -6.27 0.54 135 +137 3 -24.16 -59.09 -6.36 0.54 136 +138 3 -25.52 -59.88 -6.16 0.54 137 +139 3 -26.42 -60.8 -6.08 0.54 138 +140 3 -27.46 -61.9 -5.8 0.54 139 +141 3 -28.2 -64.21 -5.88 0.54 140 +142 3 -28.5 -66.33 -6.07 0.54 141 +143 3 -29.72 -67.87 -6.1 0.54 142 +144 3 -31.08 -68.64 -6.05 0.54 143 +145 3 -32.76 -70.63 -6.09 0.54 144 +146 3 -33.19 -72.63 -6.16 0.54 145 +147 3 -33.8 -75.05 -6.34 0.54 146 +148 3 -33.71 -76.04 -5.62 0.54 147 +149 3 -35.03 -77.17 -6.74 0.54 148 +150 3 -36.24 -79.02 -6.8 0.54 149 +151 3 -37.19 -80.5 -7.25 0.54 150 +152 3 -37.41 -81.78 -8.26 0.54 151 +153 3 -37.85 -84.68 -8.5 0.54 152 +154 3 -38.77 -88.03 -8.81 0.54 153 +155 3 -38.91 -90.01 -9.0 0.54 154 +156 3 -39.06 -91.68 -9.15 0.54 155 +157 3 -38.76 -93.18 -9.47 0.54 156 +158 3 -38.8 -94.06 -9.93 0.54 157 +159 3 -39.48 -94.59 -10.83 0.54 158 +160 3 -41.17 -96.26 -10.99 0.54 159 +161 3 -41.54 -97.09 -11.87 0.54 160 +162 3 -41.81 -97.74 -13.11 0.54 161 +163 3 -41.84 -99.24 -11.97 0.54 162 +164 3 -42.03 -99.98 -10.67 0.54 163 +165 3 -41.98 -100.61 -10.44 0.54 164 +166 3 -42.73 -102.6 -10.48 0.54 165 +167 3 -42.57 -105.2 -10.68 0.54 166 +168 3 -42.71 -106.56 -10.8 0.54 167 +169 3 -43.6 -108.43 -10.59 0.54 168 +170 3 -44.18 -109.97 -10.46 0.54 169 +171 3 -44.24 -110.81 -9.71 0.54 170 +172 3 -44.24 -112.04 -9.68 0.54 171 +173 3 -44.52 -113.29 -9.54 0.54 172 +174 3 -44.93 -114.69 -9.33 0.54 173 +175 3 -44.89 -116.26 -9.04 0.54 174 +176 3 -44.68 -117.66 -8.75 0.54 175 +177 3 -44.39 -119.19 -8.84 0.54 176 +178 3 -43.91 -120.55 -9.02 0.54 177 +179 3 -43.89 -120.9 -8.69 0.54 178 +180 3 -42.63 -122.13 -8.62 0.54 179 +181 3 -41.35 -123.71 -8.14 0.54 180 +182 3 -40.56 -125.39 -8.29 0.54 181 +183 3 -39.95 -126.59 -8.46 0.54 182 +184 3 -39.34 -128.42 -8.63 0.54 183 +185 3 -38.71 -130.56 -8.81 0.54 184 +186 3 -38.07 -131.8 -8.62 0.54 185 +187 3 -37.6 -132.87 -8.68 0.54 186 +188 3 -37.59 -134.08 -8.74 0.54 187 +189 3 -37.59 -135.0 -8.83 0.54 188 +190 3 -37.43 -135.76 -8.92 0.54 189 +191 3 -36.82 -136.67 -9.06 0.54 190 +192 3 -36.05 -138.64 -9.32 0.54 191 +193 3 -35.9 -140.01 -9.47 0.54 192 +194 3 -36.34 -141.07 -9.54 0.54 193 +195 3 -37.05 -141.51 -9.36 0.435 194 +196 3 -37.96 -142.43 -9.36 0.435 195 +197 3 -39.64 -142.9 -9.25 0.435 196 +198 3 -41.44 -143.55 -9.01 0.435 197 +199 3 -42.34 -144.48 -8.86 0.435 198 +200 3 -43.11 -144.62 -8.95 0.435 199 +201 3 -43.6 -145.36 -9.28 0.435 200 +202 3 -43.94 -145.63 -9.65 0.435 201 +203 3 -44.28 -146.19 -10.13 0.435 202 +204 3 -44.99 -146.71 -11.25 0.435 203 +205 3 -45.66 -147.56 -11.88 0.435 204 +206 3 -45.84 -148.59 -12.34 0.435 205 +207 3 -46.13 -150.11 -12.46 0.435 206 +208 3 -46.59 -151.48 -12.62 0.435 207 +209 3 -46.59 -152.7 -12.74 0.435 208 +210 3 -46.42 -154.06 -12.89 0.435 209 +211 3 -46.6 -154.8 -13.25 0.435 210 +212 3 -46.15 -155.85 -13.47 0.435 211 +213 3 -45.85 -157.07 -13.61 0.435 212 +214 3 -46.02 -157.81 -13.9 0.435 213 +215 3 -46.02 -158.71 -14.14 0.435 214 +216 3 -46.22 -159.72 -14.67 0.435 215 +217 3 -46.53 -160.34 -14.78 0.435 216 +218 3 -46.83 -160.94 -14.81 0.435 217 +219 3 -46.99 -161.4 -14.84 0.435 218 +220 3 -47.04 -161.94 -15.64 0.435 219 +221 3 -47.65 -162.54 -15.73 0.435 220 +222 3 -48.11 -163.01 -15.73 0.435 221 +223 3 -48.42 -163.32 -15.73 0.435 222 +224 3 -48.62 -163.71 -16.28 0.435 223 +225 3 -48.31 -165.22 -16.53 0.435 224 +226 3 -47.25 -165.67 -16.67 0.435 225 +227 3 -3.29 -10.26 -4.74 1.19 10 +228 3 -2.54 -10.99 -5.1 1.08 227 +229 3 -1.93 -11.9 -5.24 0.865 228 +230 3 -1.81 -12.92 -5.81 0.65 229 +231 3 -1.21 -13.83 -5.95 0.65 230 +232 3 -1.2 -14.74 -6.04 0.65 231 +233 3 -1.8 -15.96 -6.11 0.65 232 +234 3 -2.26 -16.71 -6.22 0.65 233 +235 3 -3.79 -17.95 -6.19 0.65 234 +236 3 -4.84 -19.93 -6.3 0.65 235 +237 3 -5.14 -20.55 -6.33 0.435 236 +238 3 -6.2 -22.22 -6.39 0.435 237 +239 3 -6.34 -23.59 -6.51 0.435 238 +240 3 -5.58 -24.95 -6.72 0.435 239 +241 3 -4.67 -27.09 -7.01 0.435 240 +242 3 -4.2 -29.67 -7.3 0.435 241 +243 3 -4.2 -30.88 -7.42 0.435 242 +244 3 -3.89 -32.39 -7.6 0.435 243 +245 3 -2.46 -33.18 -8.94 0.435 244 +246 3 -1.39 -33.63 -9.08 0.435 245 +247 3 -0.03 -34.37 -9.35 0.435 246 +248 3 1.17 -35.88 -9.61 0.435 247 +249 3 2.25 -38.15 -9.94 0.435 248 +250 3 3.18 -40.28 -10.23 0.435 249 +251 3 3.48 -41.49 -10.37 0.435 250 +252 3 4.85 -42.85 -10.63 0.435 251 +253 3 6.49 -42.62 -11.29 0.435 252 +254 3 8.21 -43.42 -12.58 0.435 253 +255 3 9.59 -44.79 -11.18 0.435 254 +256 3 10.7 -45.29 -10.8 0.435 255 +257 3 11.5 -46.08 -10.51 0.435 256 +258 3 11.97 -47.16 -10.5 0.435 257 +259 3 13.08 -48.25 -10.26 0.435 258 +260 3 13.0 -48.78 -9.54 0.435 259 +261 3 12.87 -49.57 -9.46 0.435 260 +262 3 12.76 -50.06 -9.04 0.435 261 +263 3 12.82 -51.04 -8.45 0.435 262 +264 3 13.34 -52.46 -7.97 0.435 263 +265 3 13.53 -52.95 -7.73 0.435 264 +266 3 13.55 -53.89 -7.6 0.435 265 +267 3 13.56 -54.5 -7.58 0.435 266 +268 3 -4.18 -10.16 -2.3 0.755 9 +269 3 -5.4 -11.08 -2.28 0.65 268 +270 3 -6.46 -12.15 -2.28 0.65 269 +271 3 -7.06 -13.68 -2.38 0.65 270 +272 3 -7.51 -15.67 -2.45 0.65 271 +273 3 -7.34 -17.65 -2.66 0.65 272 +274 3 -6.43 -19.76 -2.95 0.65 273 +275 3 -5.66 -21.74 -3.21 0.65 274 +276 3 -5.04 -24.47 -3.53 0.65 275 +277 3 -4.42 -25.98 -3.75 0.65 276 +278 3 -4.72 -27.19 -3.83 0.65 277 +279 3 -5.34 -27.81 -3.84 0.65 278 +280 3 -6.55 -27.83 -3.72 0.65 279 +281 3 -7.47 -29.36 -3.79 0.65 280 +282 3 -7.71 -30.46 -3.88 0.65 281 +283 3 -7.85 -30.94 -2.1 0.435 282 +284 3 -8.31 -31.4 -2.1 0.435 283 +285 3 -8.76 -31.87 -2.1 0.435 284 +286 3 -9.26 -32.27 -2.63 0.435 285 +287 3 -9.8 -32.65 -3.44 0.435 286 +288 3 -10.28 -33.09 -3.67 0.435 287 +289 3 -10.55 -33.42 -3.44 0.435 288 +290 3 -10.84 -33.75 -3.23 0.435 289 +291 3 -10.83 -34.36 -3.22 0.435 290 +292 3 -10.5 -34.69 -3.06 0.435 291 +293 3 -9.99 -35.2 -2.47 0.435 292 +294 3 -9.77 -35.72 -1.86 0.435 293 +295 3 -8.83 -36.34 -1.86 0.435 294 +296 3 -8.98 -37.42 -1.86 0.435 295 +297 3 -9.13 -38.17 -1.92 0.435 296 +298 3 -9.44 -38.79 -1.95 0.435 297 +299 3 -10.19 -39.56 -1.89 0.435 298 +300 3 -10.33 -40.33 -1.88 0.435 299 +301 3 -10.62 -41.25 -1.87 0.435 300 +302 3 -10.93 -41.86 -1.9 0.435 301 +303 3 -11.04 -42.96 -1.61 0.435 302 +304 3 -10.29 -43.39 -3.53 0.435 303 +305 3 -10.28 -44.0 -3.52 0.435 304 +306 3 -7.61 -30.42 -3.89 0.54 282 +307 3 -6.54 -31.79 -4.11 0.54 306 +308 3 -5.85 -33.07 -3.47 0.54 307 +309 3 -6.0 -34.45 -3.59 0.54 308 +310 3 -7.37 -35.22 -3.55 0.54 309 +311 3 -7.21 -37.19 -3.75 0.54 310 +312 3 -6.22 -38.47 -4.87 0.54 311 +313 3 -5.61 -39.97 -5.07 0.54 312 +314 3 -6.21 -41.81 -5.21 0.54 313 +315 3 -5.85 -42.47 -4.77 0.435 314 +316 3 -5.24 -43.37 -4.91 0.435 315 +317 3 -4.62 -45.49 -5.17 0.435 316 +318 3 -4.17 -46.86 -5.35 0.435 317 +319 3 -3.56 -47.46 -5.47 0.435 318 +320 3 -2.5 -47.3 -5.55 0.435 319 +321 3 -1.73 -47.43 -5.72 0.435 320 +322 3 -1.12 -48.96 -5.92 0.435 321 +323 3 -1.58 -50.03 -5.98 0.435 322 +324 3 -1.42 -51.69 -6.15 0.435 323 +325 3 -0.66 -53.05 -6.36 0.435 324 +326 3 0.4 -54.4 -6.66 0.435 325 +327 3 1.17 -55.16 -6.81 0.435 326 +328 3 0.71 -56.23 -6.87 0.435 327 +329 3 0.33 -56.76 -7.79 0.435 328 +330 3 -0.32 -58.22 -8.39 0.435 329 +331 3 -1.38 -59.61 -8.44 0.435 330 +332 3 -1.83 -60.98 -8.53 0.435 331 +333 3 -1.82 -62.5 -8.67 0.435 332 +334 3 -1.82 -64.32 -8.86 0.435 333 +335 3 -1.2 -65.54 -9.03 0.435 334 +336 3 0.0 -66.74 -9.26 0.435 335 +337 3 0.47 -68.12 -9.43 0.435 336 +338 3 0.32 -68.57 -9.46 0.435 337 +339 3 0.01 -69.48 -9.53 0.435 338 +340 3 0.02 -70.4 -9.62 0.435 339 +341 3 0.78 -71.76 -9.82 0.435 340 +342 3 1.7 -72.97 -10.02 0.435 341 +343 3 2.45 -74.0 -10.42 0.435 342 +344 3 1.99 -75.37 -10.59 0.435 343 +345 3 1.98 -75.98 -10.65 0.435 344 +346 3 2.75 -77.03 -10.82 0.435 345 +347 3 3.06 -78.25 -10.97 0.435 346 +348 3 2.76 -78.86 -11.0 0.435 347 +349 3 2.15 -79.78 -11.03 0.435 348 +350 3 2.61 -81.14 -11.21 0.435 349 +351 3 3.98 -81.27 -11.35 0.435 350 +352 3 4.44 -81.73 -11.44 0.435 351 +353 3 4.9 -82.79 -11.58 0.435 352 +354 3 5.05 -84.17 -11.73 0.435 353 +355 3 5.11 -85.41 -13.06 0.435 354 +356 3 4.51 -86.03 -13.07 0.435 355 +357 3 4.05 -87.08 -13.13 0.435 356 +358 3 5.87 -87.99 -13.39 0.435 357 +359 3 6.94 -89.34 -13.62 0.435 358 +360 3 7.26 -89.66 -15.19 0.435 359 +361 3 7.41 -90.71 -15.31 0.435 360 +362 3 7.27 -91.78 -15.4 0.435 361 +363 3 6.96 -92.39 -15.43 0.435 362 +364 3 6.97 -93.61 -15.55 0.435 363 +365 3 7.89 -94.51 -15.72 0.435 364 +366 3 8.9 -95.81 -16.63 0.435 365 +367 3 9.5 -97.01 -16.87 0.435 366 +368 3 9.78 -97.89 -17.28 0.435 367 +369 3 10.05 -99.68 -17.87 0.435 368 +370 3 10.22 -101.04 -18.02 0.435 369 +371 3 11.12 -101.33 -18.2 0.435 370 +372 3 12.8 -101.77 -18.4 0.435 371 +373 3 13.56 -102.83 -18.57 0.435 372 +374 3 13.72 -104.5 -18.75 0.435 373 +375 3 14.47 -105.55 -19.0 0.435 374 +376 3 15.39 -106.77 -19.2 0.435 375 +377 3 16.61 -108.57 -19.48 0.435 376 +378 3 17.38 -110.24 -19.72 0.435 377 +379 3 18.45 -112.52 -20.04 0.435 378 +380 3 19.52 -114.78 -20.36 0.435 379 +381 3 21.03 -116.57 -20.9 0.435 380 +382 3 21.89 -118.02 -21.88 0.435 381 +383 3 22.81 -119.53 -22.12 0.435 382 +384 3 24.02 -120.73 -22.34 0.435 383 +385 3 25.54 -121.63 -22.57 0.435 384 +386 3 27.84 -123.58 -22.97 0.435 385 +387 3 29.06 -125.1 -23.23 0.435 386 +388 3 28.92 -127.99 -23.5 0.435 387 +389 3 29.37 -129.34 -23.68 0.435 388 +390 3 29.07 -130.27 -23.81 0.435 389 +391 3 30.9 -131.15 -24.06 0.435 390 +392 3 31.66 -132.83 -24.3 0.435 391 +393 3 32.58 -134.34 -24.53 0.435 392 +394 3 33.65 -135.38 -24.73 0.435 393 +395 3 33.96 -136.6 -24.88 0.435 394 +396 3 35.33 -138.86 -25.23 0.435 395 +397 3 35.84 -140.11 -25.48 0.435 396 +398 3 36.6 -141.17 -25.65 0.435 397 +399 3 37.52 -142.08 -25.82 0.435 398 +400 3 39.34 -142.96 -26.08 0.435 399 +401 3 40.03 -144.86 -27.15 0.435 400 +402 3 40.8 -146.82 -27.42 0.435 401 +403 3 42.11 -148.41 -28.45 0.435 402 +404 3 42.11 -149.32 -28.54 0.435 403 +405 3 42.07 -149.87 -29.12 0.435 404 +406 3 42.82 -151.24 -29.39 0.435 405 +407 3 44.05 -151.83 -29.57 0.435 406 +408 3 45.05 -152.2 -30.46 0.435 407 +409 3 45.07 -152.83 -31.95 0.435 408 +410 3 44.94 -153.0 -33.4 0.435 409 +411 3 45.09 -154.36 -33.54 0.435 410 +412 3 46.16 -156.02 -33.87 0.435 411 +413 3 47.23 -157.98 -34.17 0.435 412 +414 3 49.06 -160.71 -34.6 0.435 413 +415 3 49.67 -162.22 -34.8 0.435 414 +416 3 50.75 -162.66 -34.94 0.435 415 +417 3 51.97 -163.86 -35.17 0.435 416 +418 3 52.73 -165.53 -35.49 0.435 417 +419 3 53.95 -166.73 -35.79 0.435 418 +420 3 56.12 -167.07 -37.08 0.435 419 +421 3 57.77 -167.77 -37.76 0.435 420 +422 3 59.29 -169.59 -38.07 0.435 421 +423 3 60.21 -170.79 -38.27 0.435 422 +424 3 61.11 -171.07 -38.53 0.435 423 +425 3 61.46 -172.32 -39.9 0.435 424 +426 3 61.73 -172.88 -40.37 0.435 425 +427 3 61.98 -174.03 -41.25 0.435 426 +428 3 62.36 -175.0 -42.21 0.435 427 +429 3 62.89 -176.75 -43.26 0.435 428 +430 3 63.65 -178.11 -43.54 0.435 429 +431 3 64.27 -179.61 -43.75 0.435 430 +432 3 64.73 -180.38 -43.87 0.435 431 +433 3 65.79 -181.11 -44.04 0.435 432 +434 3 66.86 -181.57 -44.18 0.435 433 +435 3 68.38 -180.94 -44.26 0.435 434 +436 3 68.69 -180.64 -44.26 0.435 435 +437 3 68.53 -180.47 -46.04 0.435 436 +438 3 68.0 -179.64 -46.59 0.435 437 +439 3 -7.29 -42.58 -5.25 0.435 314 +440 3 -8.04 -43.04 -5.22 0.435 439 +441 3 -9.1 -45.63 -5.38 0.435 440 +442 3 -7.72 -48.2 -5.76 0.435 441 +443 3 -7.1 -50.64 -6.05 0.435 442 +444 3 -7.7 -51.86 -6.05 0.435 443 +445 3 -9.02 -52.67 -5.62 0.435 444 +446 3 -9.47 -53.15 -5.47 0.435 445 +447 3 -10.07 -53.77 -5.41 0.435 446 +448 3 -9.61 -54.83 -5.55 0.435 447 +449 3 -9.46 -55.59 -5.64 0.435 448 +450 3 -10.07 -56.21 -5.65 0.435 449 +451 3 -11.44 -56.36 -5.54 0.435 450 +452 3 -12.35 -57.28 -5.54 0.435 451 +453 3 -12.49 -57.74 -5.57 0.435 452 +454 3 -12.6 -58.26 -5.08 0.435 453 +455 3 -12.59 -59.47 -5.19 0.435 454 +456 3 -12.13 -61.45 -5.36 0.435 455 +457 3 -12.12 -62.66 -5.48 0.435 456 +458 3 -13.18 -63.13 -5.43 0.435 457 +459 3 -13.79 -64.05 -5.46 0.435 458 +460 3 -14.7 -65.88 -5.56 0.435 459 +461 3 -14.54 -67.86 -5.76 0.435 460 +462 3 -14.05 -69.56 -5.67 0.435 461 +463 3 -13.28 -70.32 -5.73 0.435 462 +464 3 -12.67 -71.52 -5.92 0.435 463 +465 3 -12.66 -72.75 -6.03 0.435 464 +466 3 -12.95 -73.97 -6.05 0.435 465 +467 3 -12.96 -75.19 -6.17 0.435 466 +468 3 -13.05 -75.7 -5.67 0.435 467 +469 3 -13.36 -76.3 -5.71 0.435 468 +470 3 -13.35 -76.61 -5.67 0.435 469 +471 3 -13.8 -77.68 -5.73 0.435 470 +472 3 -4.13 -8.82 -3.75 0.11 8 +473 3 -5.04 -9.14 -3.56 0.11 472 +474 3 -5.17 -9.91 -3.62 0.11 473 +475 3 -5.4 -9.38 -4.23 0.65 474 +476 3 -6.03 -9.39 -4.32 0.65 475 +477 3 -7.57 -9.66 -4.59 0.65 476 +478 3 -9.11 -9.96 -4.69 0.65 477 +479 3 -11.24 -10.59 -4.56 0.65 478 +480 3 -13.07 -11.2 -4.52 0.65 479 +481 3 -14.78 -12.25 -4.85 0.65 480 +482 3 -15.69 -13.17 -4.93 0.54 481 +483 3 -16.79 -14.8 -5.44 0.54 482 +484 3 -17.3 -15.82 -6.03 0.54 483 +485 3 -17.49 -16.53 -6.61 0.54 484 +486 3 -18.03 -16.92 -7.43 0.54 485 +487 3 -18.49 -17.35 -7.58 0.54 486 +488 3 -20.18 -16.91 -7.45 0.54 487 +489 3 -22.02 -17.51 -7.64 0.54 488 +490 3 -23.12 -17.93 -7.96 0.54 489 +491 3 -24.34 -18.55 -7.9 0.54 490 +492 3 -25.12 -18.67 -9.82 0.54 491 +493 3 -25.19 -19.23 -10.54 0.54 492 +494 3 -25.88 -18.84 -11.35 0.54 493 +495 3 -27.71 -17.94 -11.09 0.54 494 +496 3 -28.76 -18.42 -10.97 0.54 495 +497 3 -29.45 -18.34 -11.73 0.54 496 +498 3 -31.51 -17.81 -12.39 0.54 497 +499 3 -33.03 -18.12 -12.35 0.54 498 +500 3 -35.21 -17.8 -12.65 0.54 499 +501 3 -37.66 -17.18 -12.52 0.54 500 +502 3 -40.65 -16.07 -13.04 0.54 501 +503 3 -41.66 -16.27 -14.1 0.54 502 +504 3 -43.19 -16.58 -14.07 0.54 503 +505 3 -46.23 -17.82 -13.91 0.54 504 +506 3 -49.43 -18.6 -13.84 0.54 505 +507 3 -52.13 -18.96 -14.91 0.54 506 +508 3 -54.57 -19.28 -14.71 0.54 507 +509 3 -57.24 -18.15 -15.33 0.54 508 +510 3 -60.0 -18.47 -15.2 0.54 509 +511 3 -60.98 -18.7 -15.96 0.54 510 +512 3 -61.98 -18.92 -16.94 0.54 511 +513 3 -63.16 -19.26 -18.08 0.54 512 +514 3 -63.47 -19.57 -18.16 0.54 513 +515 3 -64.11 -20.15 -18.53 0.54 514 +516 3 -64.76 -20.11 -18.92 0.54 515 +517 3 -65.52 -20.87 -18.92 0.54 516 +518 3 -65.65 -21.05 -20.29 0.54 517 +519 3 -65.8 -21.49 -20.48 0.54 518 +520 3 -66.24 -21.66 -21.89 0.54 519 +521 3 -66.09 -21.81 -21.84 0.54 520 +522 3 -65.97 -21.94 -22.24 0.54 521 +523 3 -66.03 -21.87 -22.91 0.54 522 +524 3 -65.79 -22.1 -23.72 0.54 523 +525 3 -65.66 -22.21 -24.11 0.54 524 +526 3 -65.56 -22.92 -24.72 0.54 525 +527 3 -65.5 -23.29 -25.67 0.54 526 +528 3 -65.7 -23.68 -26.37 0.54 527 +529 3 -65.88 -24.11 -26.69 0.54 528 +530 3 -65.95 -24.34 -27.47 0.54 529 +531 3 -66.0 -24.89 -28.04 0.54 530 +532 3 -66.14 -24.75 -29.53 0.54 531 +533 3 -66.17 -25.01 -30.08 0.54 532 +534 3 -66.41 -25.36 -31.07 0.54 533 +535 3 -66.47 -25.93 -31.66 0.54 534 +536 3 -67.13 -26.47 -32.33 0.54 535 +537 3 -67.32 -26.9 -32.73 0.54 536 +538 3 -67.71 -27.11 -33.62 0.54 537 +539 3 -68.11 -27.31 -34.74 0.54 538 +540 3 -68.29 -27.74 -35.07 0.54 539 +541 3 -68.48 -28.16 -35.55 0.54 540 +542 3 -68.82 -29.04 -35.97 0.54 541 +543 3 -65.85 -20.54 -20.83 0.54 517 +544 3 -66.61 -20.69 -20.77 0.54 543 +545 3 -68.01 -20.83 -20.97 0.54 544 +546 3 -69.3 -20.45 -21.72 0.54 545 +547 3 -71.02 -20.27 -21.99 0.54 546 +548 3 -71.91 -20.3 -23.28 0.54 547 +549 3 -73.47 -20.56 -23.68 0.54 548 +550 3 -75.26 -20.3 -24.77 0.54 549 +551 3 -77.1 -20.02 -24.66 0.54 550 +552 3 -78.96 -19.68 -24.82 0.54 551 +553 3 -80.73 -19.46 -25.63 0.54 552 +554 3 -82.71 -20.23 -25.59 0.54 553 +555 3 -84.53 -20.25 -25.42 0.54 554 +556 3 -86.26 -19.76 -25.75 0.54 555 +557 3 -87.79 -18.56 -25.49 0.54 556 +558 3 -89.16 -17.5 -25.26 0.54 557 +559 3 -90.21 -17.06 -25.04 0.54 558 +560 3 -92.19 -16.62 -24.81 0.54 559 +561 3 -93.6 -16.14 -25.02 0.54 560 +562 3 -94.25 -15.81 -25.3 0.54 561 +563 3 -96.38 -14.92 -25.02 0.54 562 +564 3 -24.5 -18.09 -7.92 0.54 491 +565 3 -26.66 -18.39 -8.06 0.54 564 +566 3 -28.03 -19.16 -8.08 0.54 565 +567 3 -29.48 -19.84 -8.99 0.54 566 +568 3 -29.94 -20.9 -9.13 0.54 567 +569 3 -30.25 -21.2 -9.13 0.54 568 +570 3 -31.18 -21.5 -7.63 0.54 569 +571 3 -32.1 -21.52 -7.55 0.54 570 +572 3 -34.69 -21.09 -7.28 0.54 571 +573 3 -38.04 -20.2 -6.96 0.54 572 +574 3 -40.66 -19.74 -6.9 0.54 573 +575 3 -41.28 -20.34 -7.05 0.54 574 +576 3 -43.0 -20.75 -7.53 0.54 575 +577 3 -43.16 -20.9 -7.68 0.54 576 +578 3 -43.07 -21.29 -6.75 0.54 577 +579 3 -43.92 -21.67 -5.95 0.54 578 +580 3 -45.55 -22.49 -5.42 0.54 579 +581 3 -47.53 -23.89 -5.38 0.54 580 +582 3 -49.35 -23.9 -5.14 0.54 581 +583 3 -52.08 -25.15 -5.0 0.54 582 +584 3 -53.9 -26.08 -4.92 0.54 583 +585 3 -55.41 -27.31 -4.77 0.54 584 +586 3 -57.2 -27.98 -4.36 0.54 585 +587 3 -59.45 -28.48 -3.9 0.54 586 +588 3 -61.09 -28.99 -3.41 0.54 587 +589 3 -63.5 -29.65 -2.96 0.54 588 +590 3 -65.78 -29.51 -2.73 0.54 589 +591 3 -69.56 -29.72 -2.18 0.54 590 +592 3 -71.53 -29.6 -1.84 0.54 591 +593 3 -73.15 -29.53 -0.99 0.54 592 +594 3 -73.43 -30.78 -0.87 0.54 593 +595 3 -74.0 -31.43 -0.5 0.54 594 +596 3 -76.57 -30.69 -0.12 0.54 595 +597 3 -79.45 -31.49 0.14 0.54 596 +598 3 -81.74 -31.97 0.31 0.54 597 +599 3 -84.31 -32.46 0.65 0.54 598 +600 3 -85.67 -33.25 0.84 0.54 599 +601 3 -87.01 -33.45 1.25 0.54 600 +602 3 -89.27 -33.94 1.64 0.54 601 +603 3 -90.76 -34.9 1.98 0.54 602 +604 3 -92.58 -36.14 2.12 0.54 603 +605 3 -93.74 -36.8 2.6 0.54 604 +606 3 -96.02 -37.9 2.78 0.54 605 +607 3 -96.78 -38.67 2.78 0.54 606 +608 3 -30.41 -22.58 -9.26 0.54 569 +609 3 -31.31 -24.71 -9.38 0.54 608 +610 3 -32.21 -26.85 -9.5 0.54 609 +611 3 -32.21 -28.06 -9.63 0.54 610 +612 3 -32.23 -28.94 -10.01 0.54 611 +613 3 -32.43 -29.97 -10.55 0.54 612 +614 3 -33.03 -31.18 -10.68 0.54 613 +615 3 -33.72 -32.01 -11.69 0.54 614 +616 3 -34.8 -32.47 -11.71 0.54 615 +617 3 -35.85 -33.55 -11.71 0.54 616 +618 3 -36.47 -34.77 -11.77 0.54 617 +619 3 -36.15 -36.29 -11.95 0.54 618 +620 3 -36.42 -36.55 -11.96 0.54 619 +621 3 -36.57 -37.32 -10.35 0.65 620 +622 3 -36.91 -37.59 -10.73 0.65 621 +623 3 -37.01 -37.49 -11.77 0.65 622 +624 3 -37.15 -37.96 -10.06 0.65 623 +625 3 -37.58 -38.45 -9.76 0.65 624 +626 3 -38.43 -38.82 -9.11 0.65 625 +627 3 -38.88 -39.29 -9.04 0.65 626 +628 3 -39.78 -39.01 -8.85 0.65 627 +629 3 -40.55 -38.86 -8.77 0.54 628 +630 3 -41.77 -38.87 -8.65 0.54 629 +631 3 -42.51 -39.64 -8.51 0.54 630 +632 3 -43.42 -40.58 -8.45 0.54 631 +633 3 -43.39 -42.11 -8.45 0.54 632 +634 3 -43.69 -42.74 -8.4 0.54 633 +635 3 -44.43 -43.52 -8.19 0.54 634 +636 3 -45.94 -43.85 -8.0 0.54 635 +637 3 -47.62 -43.72 -7.76 0.54 636 +638 3 -48.63 -44.23 -7.27 0.54 637 +639 3 -49.35 -45.04 -6.76 0.54 638 +640 3 -50.21 -45.4 -6.26 0.54 639 +641 3 -50.79 -46.05 -5.96 0.54 640 +642 3 -51.85 -47.74 -5.94 0.54 641 +643 3 -53.06 -48.36 -5.9 0.54 642 +644 3 -54.11 -49.45 -5.69 0.54 643 +645 3 -55.62 -50.38 -5.63 0.54 644 +646 3 -56.5 -51.33 -5.34 0.54 645 +647 3 -57.4 -51.64 -5.21 0.54 646 +648 3 -59.23 -50.75 -4.95 0.54 647 +649 3 -59.97 -51.54 -4.75 0.54 648 +650 3 -61.03 -52.62 -4.67 0.54 649 +651 3 -62.84 -53.27 -4.34 0.54 650 +652 3 -63.74 -54.5 -4.3 0.54 651 +653 3 -64.65 -55.42 -4.31 0.54 652 +654 3 -65.71 -55.88 -4.26 0.54 653 +655 3 -67.38 -55.75 -4.09 0.54 654 +656 3 -69.97 -56.54 -3.92 0.54 655 +657 3 -71.02 -58.52 -4.02 0.54 656 +658 3 -71.77 -59.29 -3.96 0.54 657 +659 3 -71.92 -60.98 -4.11 0.54 658 +660 3 -72.07 -62.04 -4.19 0.54 659 +661 3 -72.51 -62.82 -4.0 0.54 660 +662 3 -74.79 -62.7 -3.7 0.54 661 +663 3 -76.29 -63.03 -3.52 0.54 662 +664 3 -76.89 -63.65 -3.38 0.54 663 +665 3 -77.75 -64.63 -2.87 0.54 664 +666 3 -78.35 -65.25 -2.79 0.54 665 +667 3 -79.26 -66.17 -2.79 0.54 666 +668 3 -80.78 -66.49 -2.61 0.54 667 +669 3 -81.84 -67.57 -2.63 0.54 668 +670 3 -82.9 -68.64 -2.63 0.54 669 +671 3 -85.03 -68.97 -2.46 0.54 670 +672 3 -86.1 -70.04 -2.47 0.54 671 +673 3 -87.15 -70.52 -2.34 0.54 672 +674 3 -87.87 -71.62 -2.08 0.54 673 +675 3 -88.17 -71.94 -1.93 0.54 674 +676 3 -88.62 -72.4 -1.93 0.54 675 +677 3 -89.21 -73.02 -1.87 0.54 676 +678 3 -90.59 -73.18 -1.75 0.54 677 +679 3 -92.27 -73.35 -1.62 0.54 678 +680 3 -93.03 -74.13 -1.63 0.54 679 +681 3 -93.63 -74.73 -1.63 0.54 680 +682 3 -94.37 -75.52 -1.49 0.54 681 +683 3 -94.98 -76.74 -1.47 0.54 682 +684 3 -95.28 -77.66 -1.53 0.54 683 +685 3 -95.57 -78.28 -1.49 0.54 684 +686 3 -96.18 -79.2 -1.53 0.54 685 +687 3 -96.63 -79.96 -1.56 0.54 686 +688 3 -98.31 -79.81 -1.39 0.54 687 +689 3 -99.52 -79.83 -1.28 0.54 688 +690 3 -100.5 -80.4 -0.26 0.65 689 +691 3 -101.37 -81.06 0.2 0.65 690 +692 3 -101.93 -81.71 0.64 0.65 691 +693 3 -104.5 -82.22 1.12 0.65 692 +694 3 -107.38 -82.71 1.34 0.65 693 +695 3 -108.58 -83.33 1.48 0.65 694 +696 3 -110.26 -84.42 1.53 0.435 695 +697 3 -112.24 -84.59 1.69 0.435 696 +698 3 -113.74 -84.92 1.94 0.435 697 +699 3 -115.1 -86.3 2.09 0.435 698 +700 3 -115.4 -86.62 2.09 0.65 699 +701 3 -116.47 -87.09 2.14 0.65 700 +702 3 -117.67 -88.32 2.2 0.65 701 +703 3 -118.11 -89.99 2.08 0.65 702 +704 3 -117.51 -90.91 1.93 0.65 703 +705 3 -116.44 -91.96 1.81 0.65 704 +706 3 -116.38 -93.84 2.08 0.65 705 +707 3 -116.38 -94.75 2.06 0.65 706 +708 3 -116.66 -95.39 2.17 0.65 707 +709 3 -116.82 -95.84 2.22 0.65 708 +710 3 -117.38 -95.88 2.65 0.65 709 +711 3 -117.21 -97.57 2.55 0.65 710 +712 3 -117.31 -98.69 3.06 0.65 711 +713 3 -117.87 -99.35 3.56 0.65 712 +714 3 -118.31 -99.82 3.64 0.65 713 +715 3 -119.48 -99.89 4.34 0.65 714 +716 3 -119.79 -100.19 4.34 0.65 715 +717 3 -120.37 -100.84 4.64 0.65 716 +718 3 -121.26 -101.77 4.78 0.65 717 +719 3 -121.57 -102.09 4.78 0.65 718 +720 3 -122.02 -102.54 4.78 0.65 719 +721 3 -123.54 -102.26 5.02 0.65 720 +722 3 -124.3 -102.42 5.07 0.65 721 +723 3 -124.59 -102.74 5.14 0.65 722 +724 3 -124.74 -103.2 5.11 0.65 723 +725 3 -36.35 -37.31 -10.9 0.54 620 +726 3 -35.82 -37.83 -10.25 0.54 725 +727 3 -35.54 -38.11 -10.45 0.54 726 +728 3 -35.25 -38.41 -9.06 0.54 727 +729 3 -34.88 -38.78 -8.38 0.54 728 +730 3 -34.45 -39.82 -7.17 0.54 729 +731 3 -34.43 -40.75 -7.11 0.54 730 +732 3 -34.99 -42.63 -6.71 0.54 731 +733 3 -35.37 -44.07 -6.05 0.54 732 +734 3 -35.66 -44.7 -5.94 0.54 733 +735 3 -35.61 -45.35 -5.55 0.54 734 +736 3 -35.72 -46.45 -5.27 0.54 735 +737 3 -36.02 -47.07 -5.22 0.54 736 +738 3 -36.42 -47.6 -4.63 0.54 737 +739 3 -36.87 -48.68 -4.55 0.54 738 +740 3 -37.46 -49.3 -4.4 0.54 739 +741 3 -37.74 -49.94 -4.22 0.54 740 +742 3 -38.08 -51.13 -3.09 0.54 741 +743 3 -37.89 -52.21 -2.84 0.54 742 +744 3 -38.14 -53.2 -2.31 0.54 743 +745 3 -38.38 -54.17 -1.7 0.54 744 +746 3 -38.36 -55.11 -1.64 0.54 745 +747 3 -38.5 -55.57 -1.52 0.54 746 +748 3 -38.49 -55.89 -1.4 0.54 747 +749 3 -38.75 -56.54 -1.06 0.54 748 +750 3 -39.46 -57.36 -0.54 0.54 749 +751 3 -40.96 -57.7 -0.14 0.54 750 +752 3 -42.01 -57.87 0.0 0.54 751 +753 3 -42.45 -58.35 0.23 0.54 752 +754 3 -43.05 -58.98 0.29 0.54 753 +755 3 6.7 -3.75 -5.33 0.865 1 +756 3 7.16 -4.21 -5.41 0.865 755 +757 3 8.22 -4.04 -5.49 0.865 756 +758 3 9.44 -4.63 -5.66 0.865 757 +759 3 10.51 -5.08 -5.81 0.865 758 +760 3 11.58 -6.45 -6.04 0.865 759 +761 3 12.35 -7.2 -6.18 0.54 760 +762 3 14.62 -7.02 -6.37 0.54 761 +763 3 16.16 -7.01 -6.52 0.54 762 +764 3 16.73 -7.29 -5.23 0.54 763 +765 3 17.34 -7.28 -5.29 0.54 764 +766 3 18.42 -6.85 -3.46 0.54 765 +767 3 19.63 -5.01 -3.39 0.54 766 +768 3 20.89 -4.13 -4.55 0.54 767 +769 3 22.56 -3.66 -4.66 0.54 768 +770 3 23.48 -3.35 -4.72 0.54 769 +771 3 24.39 -2.42 -4.71 0.54 770 +772 3 25.0 -1.82 -4.71 0.54 771 +773 3 27.48 -1.23 -6.0 0.54 772 +774 3 29.0 -1.51 -6.17 0.54 773 +775 3 29.91 -0.59 -6.17 0.54 774 +776 3 31.13 0.63 -6.16 0.54 775 +777 3 32.73 1.79 -6.95 0.54 776 +778 3 34.85 3.33 -7.0 0.54 777 +779 3 36.38 4.25 -7.05 0.54 778 +780 3 39.25 5.95 -7.15 0.54 779 +781 3 41.7 6.88 -7.28 0.54 780 +782 3 44.17 7.47 -8.52 0.54 781 +783 3 45.54 7.95 -8.75 0.54 782 +784 3 46.67 8.34 -7.98 0.54 783 +785 3 48.22 8.32 -7.82 0.54 784 +786 3 49.47 8.61 -7.53 0.54 785 +787 3 50.45 8.24 -6.98 0.54 786 +788 3 52.97 7.87 -6.34 0.54 787 +789 3 54.85 8.43 -5.78 0.54 788 +790 3 56.74 8.68 -5.18 0.54 789 +791 3 58.14 9.43 -5.0 0.54 790 +792 3 59.39 9.7 -4.63 0.54 791 +793 3 60.79 10.44 -4.32 0.54 792 +794 3 62.66 10.41 -4.04 0.54 793 +795 3 65.9 10.85 -3.76 0.54 794 +796 3 18.25 -7.88 -5.43 0.54 765 +797 3 19.2 -8.81 -5.31 0.54 796 +798 3 19.5 -10.04 -5.37 0.54 797 +799 3 19.68 -10.81 -5.32 0.54 798 +800 3 21.72 -13.13 -5.06 0.54 799 +801 3 23.56 -14.94 -5.4 0.54 800 +802 3 24.81 -16.17 -5.41 0.54 801 +803 3 26.03 -18.3 -5.59 0.54 802 +804 3 26.38 -18.96 -5.23 0.54 803 +805 3 26.56 -19.43 -5.06 0.54 804 +806 3 26.58 -20.67 -5.03 0.54 805 +807 3 26.88 -21.57 -5.14 0.54 806 +808 3 27.2 -22.79 -5.22 0.54 807 +809 3 27.99 -23.57 -5.13 0.54 808 +810 3 29.55 -24.49 -4.99 0.54 809 +811 3 31.08 -24.2 -5.03 0.54 810 +812 3 33.23 -23.6 -4.79 0.54 811 +813 3 34.92 -24.35 -4.94 0.54 812 +814 3 36.3 -25.12 -4.99 0.54 813 +815 3 37.35 -25.55 -5.28 0.54 814 +816 3 38.39 -25.36 -5.66 0.54 815 +817 3 39.69 -25.1 -6.6 0.54 816 +818 3 41.21 -25.7 -6.8 0.54 817 +819 3 41.11 -26.5 -8.07 0.435 818 +820 3 41.28 -26.98 -7.9 0.435 819 +821 3 41.37 -27.36 -8.7 0.435 820 +822 3 41.43 -27.72 -9.65 0.435 821 +823 3 41.51 -28.11 -10.53 0.435 822 +824 3 41.7 -28.58 -11.96 0.435 823 +825 3 43.52 -30.38 -12.38 0.435 824 +826 3 44.59 -31.74 -12.61 0.435 825 +827 3 45.81 -34.47 -13.0 0.435 826 +828 3 48.56 -36.26 -13.42 0.435 827 +829 3 49.79 -38.08 -13.71 0.435 828 +830 3 50.69 -39.29 -13.91 0.435 829 +831 3 50.1 -40.51 -13.97 0.435 830 +832 3 47.97 -41.44 -13.87 0.435 831 +833 3 47.06 -42.66 -13.91 0.435 832 +834 3 47.67 -44.48 -14.14 0.435 833 +835 3 49.35 -44.92 -14.33 0.435 834 +836 3 50.37 -45.02 -14.96 0.435 835 +837 3 50.05 -46.22 -15.28 0.435 836 +838 3 49.9 -47.27 -15.45 0.435 837 +839 3 49.75 -49.25 -15.62 0.435 838 +840 3 49.75 -50.47 -15.74 0.435 839 +841 3 49.59 -51.52 -15.98 0.435 840 +842 3 49.53 -52.98 -16.73 0.435 841 +843 3 49.98 -54.33 -17.05 0.435 842 +844 3 50.87 -55.81 -17.58 0.435 843 +845 3 51.79 -57.63 -17.85 0.435 844 +846 3 52.1 -59.75 -18.15 0.435 845 +847 3 52.26 -62.03 -18.38 0.435 846 +848 3 52.85 -62.92 -18.67 0.435 847 +849 3 53.77 -63.52 -18.91 0.435 848 +850 3 54.58 -65.83 -20.41 0.435 849 +851 3 54.57 -67.64 -20.66 0.435 850 +852 3 54.7 -69.58 -21.25 0.435 851 +853 3 54.93 -71.32 -22.26 0.435 852 +854 3 56.08 -72.45 -23.31 0.435 853 +855 3 57.4 -74.07 -24.12 0.435 854 +856 3 58.83 -75.75 -25.63 0.435 855 +857 3 61.87 -78.15 -26.21 0.435 856 +858 3 63.91 -79.24 -27.57 0.435 857 +859 3 66.44 -81.15 -28.52 0.435 858 +860 3 67.97 -82.65 -28.87 0.435 859 +861 3 68.9 -84.76 -29.17 0.435 860 +862 3 70.27 -86.12 -29.43 0.435 861 +863 3 72.7 -86.41 -29.68 0.435 862 +864 3 74.37 -87.44 -30.09 0.435 863 +865 3 76.32 -89.68 -30.79 0.435 864 +866 3 77.64 -91.58 -31.71 0.435 865 +867 3 77.81 -92.34 -33.31 0.435 866 +868 3 78.38 -93.21 -33.98 0.435 867 +869 3 79.18 -94.29 -35.44 0.435 868 +870 3 80.02 -95.42 -36.38 0.435 869 +871 3 79.7 -97.22 -36.84 0.435 870 +872 3 79.68 -100.23 -37.49 0.435 871 +873 3 81.27 -104.22 -39.09 0.435 872 +874 3 82.94 -106.47 -39.54 0.435 873 +875 3 84.3 -108.12 -39.98 0.435 874 +876 3 84.22 -110.15 -41.09 0.435 875 +877 3 83.92 -111.99 -41.3 0.435 876 +878 3 83.01 -114.72 -41.57 0.435 877 +879 3 83.16 -115.79 -41.69 0.435 878 +880 3 84.18 -117.08 -42.58 0.435 879 +881 3 85.78 -118.66 -43.64 0.435 880 +882 3 86.0 -120.08 -44.85 0.435 881 +883 3 86.26 -120.62 -45.54 0.435 882 +884 3 87.14 -121.81 -45.96 0.435 883 +885 3 88.82 -122.26 -46.16 0.435 884 +886 3 89.68 -124.0 -47.16 0.435 885 +887 3 89.84 -126.28 -47.4 0.435 886 +888 3 91.66 -128.08 -47.83 0.435 887 +889 3 93.26 -128.44 -48.84 0.435 888 +890 3 94.76 -128.1 -49.18 0.435 889 +891 3 95.21 -128.56 -49.26 0.435 890 +892 3 41.61 -25.79 -7.52 0.54 818 +893 3 44.26 -26.59 -8.82 0.54 892 +894 3 46.54 -26.4 -9.01 0.54 893 +895 3 48.66 -26.67 -9.47 0.54 894 +896 3 50.33 -27.72 -9.72 0.54 895 +897 3 52.09 -28.24 -10.61 0.54 896 +898 3 54.16 -29.07 -11.64 0.54 897 +899 3 55.53 -29.2 -11.78 0.54 898 +900 3 56.54 -30.2 -10.99 0.54 899 +901 3 58.49 -30.93 -9.81 0.54 900 +902 3 60.79 -32.89 -10.21 0.54 901 +903 3 63.02 -34.5 -9.37 0.54 902 +904 3 65.02 -35.86 -9.6 0.54 903 +905 3 66.69 -37.83 -9.95 0.54 904 +906 3 67.76 -39.18 -10.18 0.54 905 +907 3 69.76 -41.14 -10.55 0.54 906 +908 3 71.64 -42.09 -10.14 0.54 907 +909 3 72.86 -43.0 -10.35 0.54 908 +910 3 73.48 -43.9 -10.49 0.54 909 +911 4 -2.36 9.28 -0.57 4.11 1 +912 4 -2.99 13.54 -0.1 3.14 911 +913 4 -3.77 16.72 0.27 2.49 912 +914 4 -4.07 19.45 0.57 1.73 913 +915 4 -4.39 21.59 0.8 1.515 914 +916 4 -5.0 23.4 1.12 1.405 915 +917 4 -5.16 25.07 1.3 1.405 916 +918 4 -5.16 26.28 1.42 1.405 917 +919 4 -5.46 27.8 1.66 1.405 918 +920 4 -5.05 29.49 3.08 1.73 919 +921 4 -4.75 31.94 3.29 1.73 920 +922 4 -5.06 34.06 3.52 1.73 921 +923 4 -5.52 36.34 3.79 1.73 922 +924 4 -5.87 38.81 3.61 1.405 923 +925 4 -5.8 40.87 2.97 1.405 924 +926 4 -5.82 42.7 3.08 1.19 925 +927 4 -5.37 44.38 3.2 1.19 926 +928 4 -5.22 46.05 3.35 1.19 927 +929 4 -4.31 47.89 3.45 1.19 928 +930 4 -3.71 50.02 3.6 1.19 929 +931 4 -2.65 51.7 3.67 1.19 930 +932 4 -1.75 54.45 3.84 1.19 931 +933 4 -1.45 55.98 3.97 1.19 932 +934 4 -1.43 57.49 2.68 1.19 933 +935 4 -1.34 58.92 3.72 1.19 934 +936 4 -1.66 60.43 3.97 1.19 935 +937 4 -1.36 61.35 3.97 1.19 936 +938 4 -2.03 62.01 3.48 1.19 937 +939 4 -2.42 63.01 2.71 1.19 938 +940 4 -2.68 62.9 3.33 0.54 939 +941 4 -3.28 62.89 3.38 0.54 940 +942 4 -3.26 62.88 3.53 0.54 941 +943 4 -3.2 62.81 4.27 0.54 942 +944 4 -3.18 62.79 4.49 0.54 943 +945 4 -3.56 62.84 5.44 0.54 944 +946 4 -3.5 62.49 6.01 0.54 945 +947 4 -3.44 62.43 6.67 0.54 946 +948 4 -3.33 62.31 7.86 0.54 947 +949 4 -3.13 62.11 8.28 0.54 948 +950 4 -3.12 61.49 8.37 0.54 949 +951 4 -3.11 60.57 8.28 0.54 950 +952 4 -3.24 59.47 8.56 0.54 951 +953 4 -3.23 58.56 8.47 0.54 952 +954 4 -3.22 57.95 8.48 0.54 953 +955 4 -3.81 57.02 8.53 0.54 954 +956 4 -4.11 56.71 8.6 0.54 955 +957 4 -5.02 57.0 8.79 0.54 956 +958 4 -5.55 57.5 9.87 0.54 957 +959 4 -6.0 58.57 10.01 0.65 958 +960 4 -6.76 59.01 10.12 0.65 959 +961 4 -7.3 58.93 10.92 0.65 960 +962 4 -8.11 58.83 10.45 0.65 961 +963 4 -8.11 60.05 8.99 0.65 962 +964 4 -7.92 60.48 7.8 0.65 963 +965 4 -9.09 61.64 6.89 0.65 964 +966 4 -9.86 62.4 6.89 0.65 965 +967 4 -11.04 63.28 5.79 0.65 966 +968 4 -12.6 63.9 5.7 0.65 967 +969 4 -14.08 64.45 4.69 0.65 968 +970 4 -14.86 65.22 4.75 0.65 969 +971 4 -16.53 66.26 5.01 0.65 970 +972 4 -17.44 67.16 5.18 0.65 971 +973 4 -17.75 67.47 5.24 0.65 972 +974 4 -18.66 67.76 5.35 0.65 973 +975 4 -19.88 68.37 5.52 0.65 974 +976 4 -21.15 69.63 5.15 0.65 975 +977 4 -21.96 71.62 5.12 0.65 976 +978 4 -22.38 72.05 3.84 0.65 977 +979 4 -22.04 73.24 2.8 0.65 978 +980 4 -22.69 73.88 2.38 0.435 979 +981 4 -23.76 74.94 2.66 0.435 980 +982 4 -23.91 76.0 2.78 0.54 981 +983 4 -24.22 77.83 2.98 0.54 982 +984 4 -24.36 79.48 3.24 0.54 983 +985 4 -24.22 80.86 3.28 0.54 984 +986 4 -24.13 81.98 2.78 0.54 985 +987 4 -24.25 83.31 1.79 0.54 986 +988 4 -23.93 84.83 0.32 0.54 987 +989 4 -24.03 85.56 -0.72 0.54 988 +990 4 -23.99 87.04 -1.8 0.54 989 +991 4 -24.53 88.18 -2.39 0.54 990 +992 4 -25.3 89.55 -4.0 0.54 991 +993 4 -25.85 91.31 -4.69 0.54 992 +994 4 -26.54 93.82 -5.29 0.54 993 +995 4 -26.94 96.94 -5.77 0.54 994 +996 4 -26.5 99.86 -5.68 0.54 995 +997 4 -25.4 101.2 -6.86 0.54 996 +998 4 -24.5 102.74 -6.87 0.54 997 +999 4 -24.36 105.01 -6.66 0.54 998 +1000 4 -23.75 105.63 -6.73 0.54 999 +1001 4 -22.53 105.95 -6.81 0.54 1000 +1002 4 -21.96 106.6 -7.18 0.54 1001 +1003 4 -21.07 107.54 -7.4 0.54 1002 +1004 4 -20.88 107.97 -8.66 0.54 1003 +1005 4 -20.98 108.68 -9.57 0.54 1004 +1006 4 -21.55 110.15 -10.59 0.54 1005 +1007 4 -22.0 110.61 -12.0 0.54 1006 +1008 4 -22.54 110.53 -12.87 0.54 1007 +1009 4 -23.53 110.0 -13.74 0.54 1008 +1010 4 -24.05 109.62 -14.48 0.54 1009 +1011 4 -24.55 108.9 -15.04 0.54 1010 +1012 4 -24.91 108.66 -15.7 0.54 1011 +1013 4 -25.63 108.16 -16.9 0.54 1012 +1014 4 -27.38 107.78 -17.6 0.54 1013 +1015 4 -29.09 107.35 -18.02 0.54 1014 +1016 4 -30.38 106.79 -18.63 0.54 1015 +1017 4 -31.99 105.66 -19.65 0.54 1016 +1018 4 -33.92 105.15 -20.66 0.54 1017 +1019 4 -35.31 105.02 -20.85 0.54 1018 +1020 4 -36.26 104.14 -21.23 0.54 1019 +1021 4 -37.38 103.73 -21.84 0.54 1020 +1022 4 -38.82 103.03 -22.53 0.54 1021 +1023 4 -39.89 102.56 -22.55 0.54 1022 +1024 4 -21.12 73.85 2.77 0.435 979 +1025 4 -20.74 75.31 2.04 0.435 1024 +1026 4 -21.43 75.38 1.21 0.54 1025 +1027 4 -22.5 76.74 1.44 0.54 1026 +1028 4 -24.34 77.95 1.72 0.54 1027 +1029 4 -25.85 78.23 1.89 0.54 1028 +1030 4 -27.46 79.21 1.31 0.54 1029 +1031 4 -29.09 80.52 0.37 0.54 1030 +1032 4 -30.73 81.25 -0.68 0.54 1031 +1033 4 -31.11 81.93 -1.33 0.54 1032 +1034 4 -32.04 82.54 -1.34 0.54 1033 +1035 4 -32.62 83.11 -2.51 0.54 1034 +1036 4 -33.03 83.23 -3.67 0.54 1035 +1037 4 -33.66 83.85 -3.79 0.54 1036 +1038 4 -34.42 84.31 -5.41 0.54 1037 +1039 4 -34.98 84.86 -4.7 0.54 1038 +1040 4 -35.5 85.38 -5.28 0.54 1039 +1041 4 -36.26 86.44 -6.7 0.54 1040 +1042 4 -36.87 87.35 -6.55 0.54 1041 +1043 4 -38.48 88.04 -7.4 0.54 1042 +1044 4 -40.59 88.91 -8.48 0.54 1043 +1045 4 -42.74 89.84 -8.4 0.54 1044 +1046 4 -44.31 90.47 -8.73 0.54 1045 +1047 4 -45.65 92.4 -9.63 0.54 1046 +1048 4 -46.08 93.44 -10.85 0.54 1047 +1049 4 -2.27 64.69 2.78 1.19 939 +1050 4 -1.98 65.92 2.81 1.19 1049 +1051 4 -1.53 66.99 2.87 1.19 1050 +1052 4 -0.62 69.11 3.05 1.19 1051 +1053 4 -0.92 70.01 3.25 1.19 1052 +1054 4 -1.19 71.49 3.88 1.19 1053 +1055 4 -2.26 72.5 4.08 1.19 1054 +1056 4 -1.69 72.84 5.34 0.54 1055 +1057 4 -1.53 73.28 5.59 0.54 1056 +1058 4 -1.03 73.39 5.93 0.54 1057 +1059 4 -0.89 74.16 5.91 0.54 1058 +1060 4 -0.13 75.84 6.01 0.54 1059 +1061 4 0.46 77.68 6.13 0.54 1060 +1062 4 0.91 78.75 6.19 0.54 1061 +1063 4 0.02 79.93 6.69 0.54 1062 +1064 4 -0.87 80.82 6.94 0.54 1063 +1065 4 -1.18 83.25 7.21 0.54 1064 +1066 4 -1.14 84.41 7.93 0.54 1065 +1067 4 -1.51 85.09 7.27 0.54 1066 +1068 4 -1.52 85.99 7.43 0.54 1067 +1069 4 -1.73 86.82 6.85 0.54 1068 +1070 4 -1.93 87.64 6.35 0.54 1069 +1071 4 -2.29 88.0 5.81 0.54 1070 +1072 4 -2.37 88.68 5.06 0.54 1071 +1073 4 -2.92 89.83 4.23 0.54 1072 +1074 4 -2.86 90.69 3.33 0.54 1073 +1075 4 -3.25 91.68 2.62 0.54 1074 +1076 4 -3.31 92.36 2.02 0.54 1075 +1077 4 -4.27 94.22 1.77 0.54 1076 +1078 4 -4.28 95.44 1.89 0.54 1077 +1079 4 -4.44 96.5 1.92 0.54 1078 +1080 4 -4.95 97.32 1.45 0.54 1079 +1081 4 -4.83 98.72 1.35 0.54 1080 +1082 4 -5.2 99.99 0.83 0.54 1081 +1083 4 -5.57 101.57 0.34 0.54 1082 +1084 4 -5.51 102.44 -0.64 0.54 1083 +1085 4 -6.15 102.16 -2.57 0.54 1084 +1086 4 -6.45 102.17 -2.54 0.54 1085 +1087 4 -7.51 102.61 -2.4 0.54 1086 +1088 4 -7.83 103.82 -2.26 0.54 1087 +1089 4 -7.82 104.73 -2.09 0.54 1088 +1090 4 -7.83 105.65 -1.99 0.54 1089 +1091 4 -8.17 106.6 -2.4 0.54 1090 +1092 4 -8.11 107.45 -3.15 0.54 1091 +1093 4 -8.11 108.07 -4.84 0.54 1092 +1094 4 -8.42 108.38 -6.45 0.54 1093 +1095 4 -9.37 109.01 -6.67 0.54 1094 +1096 4 -9.37 110.83 -6.43 0.54 1095 +1097 4 -9.28 112.27 -6.96 0.54 1096 +1098 4 -9.84 112.83 -7.99 0.54 1097 +1099 4 -10.31 113.3 -8.13 0.54 1098 +1100 4 -11.46 115.96 -8.6 0.54 1099 +1101 4 -11.75 118.36 -9.69 0.54 1100 +1102 4 -11.68 120.11 -10.37 0.54 1101 +1103 4 -11.17 122.05 -11.21 0.54 1102 +1104 4 -12.02 123.2 -12.0 0.54 1103 +1105 4 -13.35 125.12 -12.89 0.54 1104 +1106 4 -12.85 126.46 -13.87 0.54 1105 +1107 4 -12.1 127.24 -14.02 0.54 1106 +1108 4 -10.88 129.37 -13.91 0.54 1107 +1109 4 -10.66 131.88 -14.45 0.54 1108 +1110 4 -10.24 134.8 -14.5 0.54 1109 +1111 4 -9.71 136.09 -15.19 0.54 1110 +1112 4 -9.21 137.74 -16.28 0.54 1111 +1113 4 -8.85 139.52 -17.12 0.54 1112 +1114 4 -8.37 140.88 -18.47 0.54 1113 +1115 4 -8.15 142.17 -19.2 0.54 1114 +1116 4 -7.47 143.03 -20.17 0.54 1115 +1117 4 -6.98 143.76 -21.34 0.54 1116 +1118 4 -6.3 144.62 -22.15 0.54 1117 +1119 4 -5.65 145.49 -23.34 0.54 1118 +1120 4 -4.55 146.83 -24.52 0.54 1119 +1121 4 -4.03 147.56 -25.56 0.54 1120 +1122 4 -3.49 148.24 -26.29 0.54 1121 +1123 4 -2.86 149.13 -27.56 0.54 1122 +1124 4 -1.65 150.97 -27.55 0.54 1123 +1125 4 -1.2 152.35 -29.06 0.54 1124 +1126 4 0.46 154.05 -29.11 0.54 1125 +1127 4 -2.56 72.54 4.11 1.19 1055 +1128 4 -4.2 74.16 4.79 1.08 1127 +1129 4 -5.12 75.06 5.04 1.08 1128 +1130 4 -5.32 75.9 5.51 0.54 1129 +1131 4 -4.55 76.67 5.52 0.54 1130 +1132 4 -2.73 76.99 5.39 0.54 1131 +1133 4 0.29 77.02 5.11 0.54 1132 +1134 4 2.09 76.76 4.54 0.54 1133 +1135 4 4.1 76.3 4.61 0.54 1134 +1136 4 6.44 75.81 4.88 0.54 1135 +1137 4 9.03 74.46 4.59 0.54 1136 +1138 4 11.15 73.57 4.3 0.54 1137 +1139 4 12.56 73.4 4.45 0.54 1138 +1140 4 14.72 72.48 4.46 0.54 1139 +1141 4 16.24 71.58 4.24 0.54 1140 +1142 4 17.65 70.18 4.35 0.54 1141 +1143 4 20.1 68.37 4.02 0.54 1142 +1144 4 21.94 68.38 4.0 0.54 1143 +1145 4 23.51 68.34 4.38 0.54 1144 +1146 4 24.77 68.32 4.65 0.54 1145 +1147 4 26.58 68.03 4.45 0.54 1146 +1148 4 28.73 66.83 4.21 0.54 1147 +1149 4 31.16 67.15 4.02 0.54 1148 +1150 4 34.23 66.84 4.01 0.54 1149 +1151 4 37.46 65.47 3.95 0.54 1150 +1152 4 39.76 65.63 3.9 0.54 1151 +1153 4 42.35 65.8 3.76 0.54 1152 +1154 4 45.1 66.44 3.64 0.54 1153 +1155 4 46.65 66.11 3.77 0.54 1154 +1156 4 49.09 64.29 3.45 0.54 1155 +1157 4 51.69 62.65 3.05 0.54 1156 +1158 4 53.37 63.12 2.94 0.54 1157 +1159 4 55.18 64.05 2.86 0.54 1158 +1160 4 62.55 62.92 2.23 0.54 1159 +1161 4 66.81 62.05 1.75 0.54 1160 +1162 4 69.42 61.89 1.79 0.54 1161 +1163 4 70.71 61.85 2.34 0.54 1162 +1164 4 71.95 60.62 2.34 0.54 1163 +1165 4 74.38 60.03 2.06 0.54 1164 +1166 4 76.51 60.05 1.87 0.54 1165 +1167 4 76.74 59.83 2.57 0.54 1166 +1168 4 78.33 59.47 3.22 0.54 1167 +1169 4 79.02 58.79 3.85 0.54 1168 +1170 4 79.24 58.56 4.57 0.54 1169 +1171 4 79.18 57.1 5.41 0.54 1170 +1172 4 78.9 56.15 5.64 0.54 1171 +1173 4 78.68 55.45 6.5 0.54 1172 +1174 4 78.42 55.1 6.94 0.54 1173 +1175 4 78.14 54.47 7.21 0.54 1174 +1176 4 -6.09 76.33 6.23 1.08 1129 +1177 4 -6.97 77.79 6.92 1.08 1176 +1178 4 -6.79 78.22 7.24 1.08 1177 +1179 4 -6.31 79.27 7.52 1.08 1178 +1180 4 -5.77 79.63 8.49 1.08 1179 +1181 4 -5.31 80.69 8.77 1.08 1180 +1182 4 -4.24 82.37 8.85 1.08 1181 +1183 4 -3.78 82.82 8.93 1.08 1182 +1184 4 -3.8 83.87 9.55 1.08 1183 +1185 4 -3.8 86.0 9.76 1.08 1184 +1186 4 -4.21 87.32 8.86 1.08 1185 +1187 4 -4.67 88.38 9.02 1.08 1186 +1188 4 -5.57 89.89 7.73 1.405 1187 +1189 4 -6.18 91.4 7.93 1.405 1188 +1190 4 -6.29 92.12 8.47 1.3 1189 +1191 4 -6.35 92.48 8.73 1.3 1190 +1192 4 -5.43 91.69 7.22 0.11 1191 +1193 4 -4.97 92.16 7.3 0.435 1192 +1194 4 -4.52 93.52 7.4 0.435 1193 +1195 4 -3.75 95.19 7.49 0.435 1194 +1196 4 -2.85 96.11 7.56 0.435 1195 +1197 4 -1.34 96.74 7.48 0.435 1196 +1198 4 -0.13 96.77 7.22 0.435 1197 +1199 4 1.04 97.42 6.81 0.435 1198 +1200 4 2.99 98.23 6.32 0.435 1199 +1201 4 4.03 99.03 6.08 0.435 1200 +1202 4 5.07 100.41 5.96 0.435 1201 +1203 4 6.42 101.2 5.77 0.435 1202 +1204 4 8.85 102.46 5.52 0.435 1203 +1205 4 9.2 103.02 4.48 0.435 1204 +1206 4 10.99 103.99 3.95 0.435 1205 +1207 4 12.96 105.69 3.94 0.435 1206 +1208 4 15.08 107.22 3.81 0.435 1207 +1209 4 16.37 108.09 2.95 0.435 1208 +1210 4 18.6 109.22 2.32 0.435 1209 +1211 4 21.77 110.34 1.91 0.435 1210 +1212 4 23.85 111.03 1.18 0.435 1211 +1213 4 26.71 111.84 0.7 0.435 1212 +1214 4 29.14 113.08 0.59 0.435 1213 +1215 4 31.56 113.73 0.21 0.435 1214 +1216 4 33.64 114.71 -0.4 0.435 1215 +1217 4 35.75 115.65 -0.58 0.435 1216 +1218 4 39.1 117.21 -0.74 0.435 1217 +1219 4 41.37 119.2 -0.75 0.435 1218 +1220 4 43.96 120.89 -0.83 0.435 1219 +1221 4 47.91 123.37 -0.95 0.435 1220 +1222 4 50.77 124.17 -1.29 0.435 1221 +1223 4 52.39 123.8 -2.23 0.435 1222 +1224 4 55.57 123.99 -2.59 0.435 1223 +1225 4 58.26 124.68 -3.29 0.435 1224 +1226 4 61.6 125.33 -3.62 0.435 1225 +1227 4 65.79 126.35 -4.59 0.435 1226 +1228 4 69.02 127.72 -6.04 0.435 1227 +1229 4 72.83 127.0 -6.53 0.435 1228 +1230 4 77.43 127.39 -7.0 0.435 1229 +1231 4 81.36 128.35 -7.33 0.435 1230 +1232 4 84.07 129.01 -7.82 0.435 1231 +1233 4 86.66 128.58 -8.11 0.435 1232 +1234 4 88.95 128.75 -8.3 0.435 1233 +1235 4 90.32 128.61 -8.44 0.435 1234 +1236 4 -6.92 93.64 8.6 1.3 1190 +1237 4 -6.7 94.03 9.3 1.3 1236 +1238 4 -7.6 95.22 9.65 1.3 1237 +1239 4 -8.01 95.74 9.74 1.3 1238 +1240 4 -6.77 95.72 9.93 0.435 1239 +1241 4 -6.3 95.85 10.13 0.435 1240 +1242 4 -5.99 96.17 10.13 0.435 1241 +1243 4 -5.56 96.37 9.72 0.435 1242 +1244 4 -5.11 96.52 9.7 0.435 1243 +1245 4 -3.65 97.2 9.02 0.435 1244 +1246 4 -3.22 96.78 8.64 0.435 1245 +1247 4 -1.59 96.69 7.95 0.435 1246 +1248 4 0.06 96.27 7.54 0.435 1247 +1249 4 0.75 95.59 6.65 0.435 1248 +1250 4 1.95 94.41 6.19 0.435 1249 +1251 4 3.43 93.55 5.52 0.435 1250 +1252 4 4.94 93.58 5.16 0.435 1251 +1253 4 6.69 93.67 4.25 0.435 1252 +1254 4 7.39 93.9 3.52 0.435 1253 +1255 4 7.55 94.05 1.94 0.435 1254 +1256 4 7.86 93.75 1.95 0.435 1255 +1257 4 8.62 93.6 1.87 0.435 1256 +1258 4 8.47 93.76 0.24 0.435 1257 +1259 4 8.55 93.69 -0.6 0.435 1258 +1260 4 8.65 93.28 -1.17 0.435 1259 +1261 4 8.86 93.09 -2.27 0.435 1260 +1262 4 9.6 92.98 -2.73 0.435 1261 +1263 4 10.35 92.85 -2.97 0.435 1262 +1264 4 11.04 93.07 -3.62 0.435 1263 +1265 4 12.22 92.49 0.75 0.435 1264 +1266 4 12.37 91.72 0.66 0.435 1265 +1267 4 12.64 91.46 0.24 0.435 1266 +1268 4 12.07 91.13 -1.02 0.435 1267 +1269 4 12.68 90.22 -1.24 0.435 1268 +1270 4 13.27 89.64 -1.58 0.435 1269 +1271 4 13.77 88.24 -2.98 0.435 1270 +1272 4 14.83 87.19 -3.25 0.435 1271 +1273 4 15.9 86.75 -3.39 0.435 1272 +1274 4 16.34 85.41 -3.71 0.435 1273 +1275 4 16.74 84.41 -4.6 0.435 1274 +1276 4 17.49 83.36 -4.85 0.435 1275 +1277 4 17.74 82.52 -5.71 0.435 1276 +1278 4 17.35 81.99 -6.48 0.435 1277 +1279 4 16.73 81.39 -6.71 0.435 1278 +1280 4 16.61 80.62 -8.14 0.435 1279 +1281 4 16.89 79.13 -8.68 0.435 1280 +1282 4 17.51 77.92 -8.85 0.435 1281 +1283 4 17.9 76.92 -9.67 0.435 1282 +1284 4 18.34 75.89 -10.12 0.435 1283 +1285 4 18.93 75.3 -10.39 0.435 1284 +1286 4 19.68 75.17 -10.54 0.435 1285 +1287 4 20.75 75.34 -10.7 0.435 1286 +1288 4 21.77 74.33 -11.35 0.435 1287 +1289 4 22.35 73.44 -11.79 0.435 1288 +1290 4 22.45 73.35 -12.41 0.435 1289 +1291 4 22.72 71.88 -13.03 0.435 1290 +1292 4 23.1 69.68 -14.19 0.435 1291 +1293 4 24.33 68.48 -14.42 0.435 1292 +1294 4 24.92 67.6 -14.79 0.435 1293 +1295 4 26.7 66.45 -15.59 0.435 1294 +1296 4 27.74 64.82 -16.14 0.435 1295 +1297 4 30.33 61.95 -16.75 0.435 1296 +1298 4 32.47 60.45 -17.09 0.435 1297 +1299 4 33.38 59.54 -17.26 0.435 1298 +1300 4 35.28 56.77 -18.68 0.435 1299 +1301 4 35.84 55.31 -19.42 0.435 1300 +1302 4 36.6 54.26 -19.66 0.435 1301 +1303 4 37.2 53.36 -19.88 0.435 1302 +1304 4 37.67 52.92 -19.97 0.435 1303 +1305 4 38.06 52.53 -20.8 0.435 1304 +1306 4 38.49 52.1 -21.18 0.435 1305 +1307 4 -8.0 96.22 10.54 1.3 1239 +1308 4 -8.91 97.42 10.82 1.3 1307 +1309 4 -10.54 98.52 11.08 1.3 1308 +1310 4 -11.37 99.05 12.03 0.54 1309 +1311 4 -12.45 99.8 12.2 0.54 1310 +1312 4 -13.21 100.55 12.35 0.54 1311 +1313 4 -14.17 100.6 11.92 0.54 1312 +1314 4 -15.54 101.05 12.01 0.54 1313 +1315 4 -16.17 102.27 12.04 0.54 1314 +1316 4 -17.05 103.14 12.59 0.54 1315 +1317 4 -19.02 105.37 13.29 0.54 1316 +1318 4 -19.32 106.29 13.4 0.54 1317 +1319 4 -19.78 107.34 13.55 0.54 1318 +1320 4 -20.55 109.01 13.79 0.54 1319 +1321 4 -20.8 108.95 14.41 0.54 1320 +1322 4 -21.56 109.39 14.52 0.54 1321 +1323 4 -22.61 109.53 14.7 0.54 1322 +1324 4 -23.57 109.86 14.45 0.54 1323 +1325 4 -24.08 110.37 13.94 0.54 1324 +1326 4 -23.72 112.15 13.02 0.54 1325 +1327 4 -24.34 112.46 13.03 0.54 1326 +1328 4 -25.41 113.81 13.26 0.54 1327 +1329 4 -26.93 116.54 13.67 0.54 1328 +1330 4 -27.6 119.31 13.54 0.54 1329 +1331 4 -27.31 120.86 13.51 0.54 1330 +1332 4 -26.83 122.22 12.17 0.54 1331 +1333 4 -27.15 123.13 12.22 0.54 1332 +1334 4 -28.01 125.51 11.47 0.54 1333 +1335 4 -27.85 127.77 10.24 0.54 1334 +1336 4 -28.01 129.17 8.65 0.54 1335 +1337 4 -28.25 130.01 7.85 0.54 1336 +1338 4 -29.16 130.9 8.1 0.54 1337 +1339 4 -30.38 132.72 8.38 0.54 1338 +1340 4 -30.99 133.33 6.83 0.54 1339 +1341 4 -32.18 136.02 6.0 0.54 1340 +1342 4 -33.32 138.37 5.49 0.54 1341 +1343 4 -33.63 140.51 5.67 0.54 1342 +1344 4 -35.17 143.23 6.07 0.54 1343 +1345 4 -35.5 145.38 6.08 0.54 1344 +1346 4 -35.76 148.97 5.47 0.54 1345 +1347 4 -35.49 152.03 5.45 0.54 1346 +1348 4 -35.46 155.97 4.54 0.54 1347 +1349 4 -36.39 158.7 4.9 0.54 1348 +1350 4 -37.16 162.49 5.33 0.54 1349 +1351 4 -38.67 165.51 4.26 0.54 1350 +1352 4 -40.46 167.59 3.49 0.54 1351 +1353 4 -40.73 169.07 2.37 0.54 1352 +1354 4 -41.1 170.05 1.83 0.54 1353 +1355 4 -42.23 171.76 1.5 0.54 1354 +1356 4 -43.65 173.48 1.26 0.54 1355 +1357 4 -44.41 174.23 1.4 0.54 1356 +1358 4 -44.59 175.64 -0.4 0.54 1357 +1359 4 -44.76 177.91 -0.16 0.54 1358 +1360 4 -44.15 180.04 -0.01 0.54 1359 +1361 4 -43.85 182.49 0.19 0.54 1360 +1362 4 -44.5 184.95 0.18 0.54 1361 +1363 4 -45.07 187.94 -0.59 0.54 1362 +1364 4 -44.92 190.53 -1.94 0.54 1363 +1365 4 -44.75 191.57 -0.05 0.54 1364 +1366 4 -45.06 191.87 -0.06 0.54 1365 +1367 4 -44.43 192.47 0.09 0.54 1366 +1368 4 -46.08 176.81 1.81 0.54 1357 +1369 4 -49.45 181.64 1.0 0.54 1368 +1370 4 -50.39 182.55 2.54 0.54 1369 +1371 4 -52.84 184.97 3.01 0.54 1370 +1372 4 -54.24 188.18 3.14 0.54 1371 +1373 4 -10.13 99.23 11.11 1.19 1309 +1374 4 -10.86 100.86 11.71 1.08 1373 +1375 4 -10.7 100.97 11.71 1.08 1374 +1376 4 -11.55 100.89 12.54 0.54 1375 +1377 4 -12.46 101.19 12.65 0.54 1376 +1378 4 -13.07 101.79 12.77 0.54 1377 +1379 4 -13.83 102.54 12.91 0.54 1378 +1380 4 -14.44 103.15 13.02 0.54 1379 +1381 4 -15.2 104.51 13.22 0.54 1380 +1382 4 -15.97 106.78 13.51 0.54 1381 +1383 4 -15.22 108.15 13.58 0.54 1382 +1384 4 -15.22 109.07 13.67 0.54 1383 +1385 4 -15.45 110.22 12.9 0.54 1384 +1386 4 -16.38 111.13 13.0 0.54 1385 +1387 4 -17.15 112.5 13.2 0.54 1386 +1388 4 -18.07 114.61 13.5 0.54 1387 +1389 4 -18.84 116.58 13.76 0.54 1388 +1390 4 -19.91 119.16 14.11 0.54 1389 +1391 4 -20.09 122.07 14.18 0.54 1390 +1392 4 -20.92 123.8 13.74 0.54 1391 +1393 4 -21.25 125.64 13.81 0.54 1392 +1394 4 -22.16 128.37 14.07 0.54 1393 +1395 4 -23.4 130.48 14.39 0.54 1394 +1396 4 -24.92 133.22 14.8 0.54 1395 +1397 4 -26.92 135.79 15.17 0.54 1396 +1398 4 -29.09 138.84 15.37 0.54 1397 +1399 4 -29.71 140.97 15.55 0.54 1398 +1400 4 -31.13 144.79 15.68 0.54 1399 +1401 4 -31.29 147.39 15.86 0.54 1400 +1402 4 -32.47 150.38 15.14 0.54 1401 +1403 4 -33.09 152.81 15.43 0.54 1402 +1404 4 -32.94 154.79 15.61 0.54 1403 +1405 4 -34.16 155.99 15.84 0.54 1404 +1406 4 -35.44 156.94 15.45 0.54 1405 +1407 4 -36.97 157.54 15.58 0.54 1406 +1408 4 -38.05 158.61 15.78 0.54 1407 +1409 4 -38.2 160.89 16.01 0.54 1408 +1410 4 -39.55 162.96 16.26 0.54 1409 +1411 4 -39.86 165.09 16.5 0.54 1410 +1412 4 -40.93 167.05 16.78 0.54 1411 +1413 4 -42.35 169.06 16.59 0.54 1412 +1414 4 -43.42 171.33 16.91 0.54 1413 +1415 4 -44.51 173.92 17.18 0.54 1414 +1416 4 -44.51 175.75 17.36 0.54 1415 +1417 4 -45.66 179.31 16.98 0.54 1416 +1418 4 -46.89 181.43 17.31 0.54 1417 +1419 4 -48.12 185.38 17.72 0.54 1418 +1420 4 -48.44 189.33 18.14 0.54 1419 +1421 4 -49.21 191.61 18.43 0.54 1420 +1422 4 -49.37 193.89 18.67 0.54 1421 +1423 4 -48.8 196.05 18.52 0.54 1422 +1424 4 -48.59 197.98 17.64 0.54 1423 +1425 4 -49.06 199.95 17.8 0.54 1424 +1426 4 -49.67 201.17 17.98 0.54 1425 +1427 4 -49.29 205.94 17.8 0.54 1426 +1428 4 -50.12 208.29 17.43 0.54 1427 +1429 4 -50.05 209.74 16.66 0.54 1428 +1430 4 -50.52 211.72 16.81 0.54 1429 +1431 4 -51.59 214.3 17.16 0.54 1430 +1432 4 -51.95 216.77 16.99 0.54 1431 +1433 4 -51.85 218.19 16.59 0.54 1432 +1434 4 -51.41 220.79 16.73 0.54 1433 +1435 4 -51.44 221.73 16.52 0.54 1434 +1436 4 -51.19 223.31 16.04 0.54 1435 +1437 4 -10.4 102.22 11.88 1.08 1375 +1438 4 -9.64 102.99 11.89 1.08 1437 +1439 4 -8.89 104.97 12.08 1.08 1438 +1440 4 -8.74 106.95 12.26 1.08 1439 +1441 4 -8.24 109.18 12.96 0.975 1440 +1442 4 -7.33 111.62 13.19 0.975 1441 +1443 4 -7.03 112.84 13.28 0.975 1442 +1444 4 -6.11 112.65 14.32 0.65 1443 +1445 4 -5.35 112.5 14.23 0.65 1444 +1446 4 -4.89 112.05 14.15 0.65 1445 +1447 4 -5.04 110.98 14.06 0.65 1446 +1448 4 -4.58 109.62 13.89 0.435 1447 +1449 4 -3.51 108.26 13.65 0.435 1448 +1450 4 -2.19 106.34 12.81 0.435 1449 +1451 4 -1.4 105.26 12.86 0.435 1450 +1452 4 -0.76 104.63 13.11 0.54 1451 +1453 4 0.21 103.36 13.59 0.54 1452 +1454 4 0.57 102.09 13.96 0.54 1453 +1455 4 1.41 100.65 14.64 0.54 1454 +1456 4 1.88 99.27 14.47 0.54 1455 +1457 4 2.21 98.33 14.65 0.54 1456 +1458 4 2.57 97.38 15.13 0.54 1457 +1459 4 2.89 96.46 15.08 0.54 1458 +1460 4 3.2 95.23 15.0 0.54 1459 +1461 4 3.81 94.63 14.89 0.54 1460 +1462 4 5.05 92.81 14.75 0.54 1461 +1463 4 5.54 92.32 14.96 0.54 1462 +1464 4 6.32 90.95 14.91 0.54 1463 +1465 4 6.78 89.56 14.89 0.54 1464 +1466 4 7.3 88.75 15.36 0.54 1465 +1467 4 7.46 88.3 15.37 0.54 1466 +1468 4 -7.18 114.81 13.56 0.975 1443 +1469 4 -8.4 116.92 13.89 0.975 1468 +1470 4 -9.63 119.35 14.24 0.975 1469 +1471 4 -11.16 122.06 14.65 0.975 1470 +1472 4 -11.68 123.48 15.96 0.975 1471 +1473 4 -12.43 124.23 16.1 0.975 1472 +1474 4 -12.83 124.88 16.2 0.975 1473 +1475 4 -12.98 124.12 14.48 0.54 1474 +1476 4 -13.43 123.36 14.45 0.54 1475 +1477 4 -13.12 122.14 14.29 0.54 1476 +1478 4 -12.82 121.54 14.21 0.435 1477 +1479 4 -13.12 120.02 14.09 0.435 1478 +1480 4 -13.12 119.41 14.03 0.435 1479 +1481 4 -13.11 118.19 13.92 0.435 1480 +1482 4 -13.12 116.97 13.79 0.435 1481 +1483 4 -12.96 116.52 13.73 0.435 1482 +1484 4 -12.65 115.62 13.62 0.435 1483 +1485 4 -12.49 115.15 13.56 0.435 1484 +1486 4 -13.5 126.51 16.42 0.975 1474 +1487 4 -14.27 128.76 16.8 0.975 1486 +1488 4 -14.12 131.35 17.03 0.975 1487 +1489 4 -13.67 132.73 17.12 0.975 1488 +1490 4 -12.92 135.01 17.28 0.975 1489 +1491 4 -13.22 136.23 17.43 1.08 1490 +1492 4 -13.7 139.11 17.76 1.08 1491 +1493 4 -13.55 141.09 17.93 1.08 1492 +1494 4 -14.31 142.46 18.13 1.08 1493 +1495 4 -15.08 144.43 18.4 1.08 1494 +1496 4 -15.85 146.39 18.66 1.08 1495 +1497 4 -16.31 147.77 18.84 1.08 1496 +1498 4 -16.16 150.04 19.05 1.08 1497 +1499 4 -14.95 150.66 19.0 1.08 1498 +1500 4 -13.58 151.74 18.97 1.08 1499 +1501 4 -13.12 152.8 19.03 1.08 1500 +1502 4 -12.97 154.78 19.29 1.08 1501 +1503 4 -11.31 158.28 19.47 1.08 1502 +1504 4 -11.32 162.24 19.86 1.08 1503 +1505 4 -10.83 162.78 19.87 1.08 1504 +1506 4 -11.36 162.68 20.73 0.65 1505 +1507 4 -11.81 163.75 20.88 0.65 1506 +1508 4 -12.24 164.17 21.34 0.65 1507 +1509 4 -12.68 164.59 21.64 0.65 1508 +1510 4 -13.29 164.59 21.63 0.65 1509 +1511 4 -13.7 165.61 22.23 0.65 1510 +1512 4 -14.28 166.17 22.79 0.65 1511 +1513 4 -14.49 166.37 23.89 0.65 1512 +1514 4 -14.78 168.17 24.39 0.65 1513 +1515 4 -15.17 169.17 23.53 0.435 1514 +1516 4 -15.63 170.83 23.82 0.435 1515 +1517 4 -15.93 172.06 22.23 0.435 1516 +1518 4 -16.16 172.88 21.58 0.435 1517 +1519 4 -16.22 174.47 21.2 0.435 1518 +1520 4 -16.27 176.03 20.83 0.54 1519 +1521 4 -16.43 178.01 21.05 0.54 1520 +1522 4 -16.93 179.72 20.8 0.54 1521 +1523 4 -17.55 181.55 20.96 0.54 1522 +1524 4 -18.77 183.36 21.25 0.54 1523 +1525 4 -18.47 185.5 21.43 0.54 1524 +1526 4 -17.72 187.48 21.55 0.54 1525 +1527 4 -18.03 189.0 21.73 0.54 1526 +1528 4 -19.3 191.46 21.63 0.54 1527 +1529 4 -18.91 193.2 21.09 0.54 1528 +1530 4 -18.65 195.37 20.9 0.54 1529 +1531 4 -18.39 198.45 20.79 0.54 1530 +1532 4 -19.05 201.54 20.63 0.54 1531 +1533 4 -19.92 203.6 19.93 0.54 1532 +1534 4 -20.71 205.91 19.86 0.54 1533 +1535 4 -21.75 208.16 18.88 0.54 1534 +1536 4 -21.61 209.84 18.95 0.54 1535 +1537 4 -22.45 211.58 18.37 0.54 1536 +1538 4 -24.56 213.98 17.36 0.54 1537 +1539 4 -26.24 215.33 17.65 0.54 1538 +1540 4 -27.77 216.85 17.94 0.54 1539 +1541 4 -29.3 218.97 18.28 0.54 1540 +1542 4 -31.19 220.23 17.83 0.54 1541 +1543 4 -33.94 222.94 18.35 0.54 1542 +1544 4 -35.63 224.61 18.58 0.54 1543 +1545 4 -36.53 226.41 17.41 0.54 1544 +1546 4 -37.71 229.4 16.6 0.54 1545 +1547 4 -38.66 230.29 16.7 0.54 1546 +1548 4 -39.74 231.03 16.87 0.54 1547 +1549 4 -40.73 232.02 16.22 0.54 1548 +1550 4 -40.98 234.4 15.51 0.54 1549 +1551 4 -41.28 237.74 14.26 0.54 1550 +1552 4 -42.13 239.8 13.65 0.54 1551 +1553 4 -41.6 241.71 12.87 0.54 1552 +1554 4 -41.19 243.74 12.65 0.54 1553 +1555 4 -41.33 245.7 11.34 0.54 1554 +1556 4 -42.81 248.37 10.68 0.54 1555 +1557 4 -43.38 251.37 9.9 0.54 1556 +1558 4 -44.94 256.24 10.29 0.54 1557 +1559 4 -45.75 259.78 10.26 0.54 1558 +1560 4 -46.31 261.56 9.27 0.54 1559 +1561 4 -46.66 264.63 9.37 0.54 1560 +1562 4 -46.86 266.34 9.03 0.54 1561 +1563 4 -47.79 269.09 9.24 0.54 1562 +1564 4 -48.3 273.22 9.38 0.54 1563 +1565 4 -48.53 275.89 8.76 0.54 1564 +1566 4 -49.27 277.53 8.83 0.54 1565 +1567 4 -11.65 164.37 20.09 1.08 1505 +1568 4 -11.89 164.43 20.12 1.08 1567 +1569 4 -11.64 167.11 20.37 1.08 1568 +1570 4 -11.65 169.85 20.63 0.865 1569 +1571 4 -11.81 173.65 21.02 0.865 1570 +1572 4 -11.53 177.92 21.41 0.865 1571 +1573 4 -11.39 180.56 21.73 0.975 1572 +1574 4 -10.79 183.0 21.92 0.975 1573 +1575 4 -10.02 185.58 22.09 0.975 1574 +1576 4 -9.42 188.02 22.28 0.975 1575 +1577 4 -11.12 192.11 22.84 0.975 1576 +1578 4 -11.1 193.92 23.23 0.975 1577 +1579 4 -12.33 196.94 23.64 0.975 1578 +1580 4 -13.26 199.97 24.02 0.975 1579 +1581 4 -13.87 202.4 24.39 1.08 1580 +1582 4 -13.72 205.59 24.7 1.08 1581 +1583 4 -13.93 207.02 24.32 1.08 1582 +1584 4 -12.94 206.93 25.95 0.54 1583 +1585 4 -12.18 207.4 25.86 0.54 1584 +1586 4 -11.91 207.12 27.17 0.54 1585 +1587 4 -10.96 207.38 27.57 0.54 1586 +1588 4 -9.48 207.43 28.64 0.65 1587 +1589 4 -8.25 208.04 28.81 0.65 1588 +1590 4 -6.69 208.91 29.13 0.65 1589 +1591 4 -4.35 209.96 29.62 0.65 1590 +1592 4 -1.76 211.63 29.7 0.65 1591 +1593 4 1.57 213.79 29.6 0.65 1592 +1594 4 5.23 215.65 29.52 0.65 1593 +1595 4 8.0 217.15 29.86 0.65 1594 +1596 4 9.85 218.04 30.15 0.65 1595 +1597 4 10.79 218.33 30.33 0.65 1596 +1598 4 12.77 219.72 30.28 0.65 1597 +1599 4 14.44 221.11 30.33 0.65 1598 +1600 4 15.07 222.0 29.01 0.65 1599 +1601 4 15.08 221.98 29.16 0.65 1600 +1602 4 15.85 222.44 29.13 0.65 1601 +1603 4 15.8 222.5 28.61 0.65 1602 +1604 4 16.63 222.9 27.66 0.65 1603 +1605 4 16.85 223.59 26.8 0.65 1604 +1606 4 17.56 224.1 26.26 0.65 1605 +1607 4 17.52 224.53 26.3 0.65 1606 +1608 4 18.05 224.3 27.14 0.54 1607 +1609 4 18.36 224.0 27.0 0.54 1608 +1610 4 18.75 223.6 27.91 0.54 1609 +1611 4 19.28 223.68 28.78 0.54 1610 +1612 4 19.95 223.62 29.31 0.54 1611 +1613 4 20.91 223.89 29.78 0.54 1612 +1614 4 21.74 224.28 30.42 0.54 1613 +1615 4 22.2 224.73 30.51 0.54 1614 +1616 4 22.58 224.35 31.34 0.54 1615 +1617 4 22.5 225.33 32.27 0.54 1616 +1618 4 22.65 226.7 32.39 0.54 1617 +1619 4 22.5 227.76 32.58 0.54 1618 +1620 4 22.13 228.12 33.63 0.54 1619 +1621 4 21.74 228.49 34.46 0.54 1620 +1622 4 22.51 230.77 34.77 0.435 1621 +1623 4 23.87 233.07 34.86 0.435 1622 +1624 4 24.09 234.37 35.65 0.435 1623 +1625 4 23.78 237.4 36.05 0.435 1624 +1626 4 23.93 239.37 36.31 0.435 1625 +1627 4 24.38 241.05 36.42 0.435 1626 +1628 4 24.35 243.21 36.34 0.435 1627 +1629 4 24.32 245.05 36.3 0.435 1628 +1630 4 24.27 248.13 36.29 0.435 1629 +1631 4 24.72 251.63 36.53 0.435 1630 +1632 4 25.42 255.5 36.24 0.435 1631 +1633 4 25.34 256.48 35.58 0.435 1632 +1634 4 24.67 258.68 35.17 0.435 1633 +1635 4 25.39 260.99 35.03 0.435 1634 +1636 4 26.22 264.73 34.48 0.435 1635 +1637 4 27.38 266.0 34.05 0.435 1636 +1638 4 28.74 268.61 34.1 0.435 1637 +1639 4 27.51 271.35 34.41 0.435 1638 +1640 4 26.51 273.54 33.88 0.54 1639 +1641 4 25.68 274.37 33.29 0.54 1640 +1642 4 25.67 275.29 33.3 0.54 1641 +1643 4 24.52 224.25 32.36 0.54 1616 +1644 4 25.58 225.03 32.34 0.54 1643 +1645 4 26.86 225.88 32.98 0.54 1644 +1646 4 27.65 227.83 33.4 0.54 1645 +1647 4 27.64 230.27 33.72 0.54 1646 +1648 4 27.35 231.76 34.04 0.54 1647 +1649 4 28.88 232.96 34.32 0.54 1648 +1650 4 29.8 233.58 34.3 0.54 1649 +1651 4 30.74 234.17 34.64 0.54 1650 +1652 4 31.12 234.08 35.5 0.54 1651 +1653 4 32.67 234.68 35.64 0.54 1652 +1654 4 35.62 235.72 36.07 0.54 1653 +1655 4 36.39 236.46 36.23 0.54 1654 +1656 4 36.88 238.11 36.8 0.54 1655 +1657 4 37.07 240.02 37.57 0.54 1656 +1658 4 38.75 242.32 37.72 0.54 1657 +1659 4 40.57 244.76 37.86 0.54 1658 +1660 4 42.41 245.96 38.05 0.54 1659 +1661 4 46.98 248.44 37.87 0.54 1660 +1662 4 50.48 250.76 37.84 0.54 1661 +1663 4 53.24 252.27 38.04 0.54 1662 +1664 4 55.08 252.88 38.08 0.54 1663 +1665 4 56.44 253.65 38.02 0.54 1664 +1666 4 58.12 254.42 38.02 0.54 1665 +1667 4 59.18 255.19 38.0 0.54 1666 +1668 4 19.34 225.08 25.73 0.435 1607 +1669 4 21.17 226.01 25.66 0.435 1668 +1670 4 22.34 226.98 25.19 0.435 1669 +1671 4 23.82 227.94 24.69 0.54 1670 +1672 4 26.39 231.16 24.77 0.54 1671 +1673 4 28.48 232.75 24.27 0.54 1672 +1674 4 30.77 232.92 24.09 0.54 1673 +1675 4 32.74 232.18 23.83 0.54 1674 +1676 4 36.09 232.51 23.55 0.54 1675 +1677 4 38.92 233.14 23.2 0.435 1676 +1678 4 43.64 234.84 22.93 0.435 1677 +1679 4 47.43 237.48 22.84 0.435 1678 +1680 4 49.28 238.68 21.43 0.54 1679 +1681 4 51.85 241.3 21.44 0.54 1680 +1682 4 53.21 245.11 21.69 0.54 1681 +1683 4 53.26 248.1 20.92 0.54 1682 +1684 4 53.55 250.24 21.03 0.54 1683 +1685 4 55.83 253.76 21.16 0.54 1684 +1686 4 57.48 256.67 21.29 0.54 1685 +1687 4 57.79 257.58 21.36 0.54 1686 +1688 4 57.93 261.07 21.68 0.54 1687 +1689 4 59.6 263.37 21.75 0.54 1688 +1690 4 60.48 264.32 21.46 0.54 1689 +1691 4 62.1 265.14 20.85 0.54 1690 +1692 4 63.89 264.6 20.18 0.54 1691 +1693 4 65.71 264.63 20.01 0.54 1692 +1694 4 -14.08 209.9 24.62 1.08 1583 +1695 4 -13.95 213.4 24.94 1.08 1694 +1696 4 -13.35 216.14 25.16 1.08 1695 +1697 4 -13.66 218.28 25.39 1.08 1696 +1698 4 -15.03 220.84 25.77 1.08 1697 +1699 4 -16.41 222.8 26.09 1.08 1698 +1700 4 -17.17 224.47 26.32 1.08 1699 +1701 4 -17.34 227.36 26.62 1.08 1700 +1702 4 -17.19 231.16 26.98 1.08 1701 +1703 4 -16.75 234.36 27.25 1.08 1702 +1704 4 -17.18 237.23 26.29 1.08 1703 +1705 4 -17.48 239.02 26.71 1.08 1704 +1706 4 -18.11 240.86 26.64 1.08 1705 +1707 4 -18.39 242.66 25.57 1.08 1706 +1708 4 -19.02 243.14 26.35 0.65 1707 +1709 4 -20.33 243.83 25.56 0.65 1708 +1710 4 -21.29 244.15 26.89 0.65 1709 +1711 4 -21.74 243.98 28.65 0.65 1710 +1712 4 -23.19 244.51 29.59 0.65 1711 +1713 4 -26.02 245.48 30.62 0.65 1712 +1714 4 -27.69 246.81 31.06 0.65 1713 +1715 4 -30.05 248.52 32.35 0.65 1714 +1716 4 -31.28 249.74 32.58 0.65 1715 +1717 4 -32.6 251.04 33.28 0.65 1716 +1718 4 -34.58 253.61 33.8 0.65 1717 +1719 4 -36.41 254.2 34.03 0.65 1718 +1720 4 -39.15 255.38 34.46 0.65 1719 +1721 4 -41.74 257.03 34.86 0.65 1720 +1722 4 -44.48 258.52 35.26 0.65 1721 +1723 4 -46.01 260.03 35.63 0.54 1722 +1724 4 -47.21 260.01 35.74 0.54 1723 +1725 4 -49.35 261.21 36.12 0.54 1724 +1726 4 -51.02 263.16 36.47 0.54 1725 +1727 4 -53.63 266.04 36.99 0.54 1726 +1728 4 -56.67 268.74 37.53 0.54 1727 +1729 4 -58.05 271.32 37.92 0.54 1728 +1730 4 -59.43 274.2 38.32 0.54 1729 +1731 4 -60.5 276.46 38.65 0.54 1730 +1732 4 -61.58 279.35 39.02 0.54 1731 +1733 4 -63.56 280.08 39.28 0.54 1732 +1734 4 -65.24 281.44 39.56 0.54 1733 +1735 4 -67.53 283.39 39.97 0.54 1734 +1736 4 -68.7 284.54 40.79 0.54 1735 +1737 4 -70.06 287.11 41.25 0.54 1736 +1738 4 -70.49 288.73 41.9 0.54 1737 +1739 4 -70.46 290.23 42.35 0.54 1738 +1740 4 -69.8 290.77 43.02 0.54 1739 +1741 4 -69.26 291.15 43.84 0.54 1740 +1742 4 -70.31 292.18 44.26 0.54 1741 +1743 4 -71.52 293.38 44.64 0.54 1742 +1744 4 -71.68 295.35 44.85 0.54 1743 +1745 4 -71.81 296.69 45.29 0.54 1744 +1746 4 -73.02 297.58 45.64 0.54 1745 +1747 4 -74.21 297.85 46.0 0.54 1746 +1748 4 -75.86 299.17 46.58 0.54 1747 +1749 4 -76.45 299.76 46.92 0.54 1748 +1750 4 -77.45 300.75 47.79 0.54 1749 +1751 4 -77.62 301.18 49.51 0.54 1750 +1752 4 -78.53 301.79 49.65 0.54 1751 +1753 4 -78.86 302.11 51.08 0.54 1752 +1754 4 -79.29 302.22 51.51 0.54 1753 +1755 4 -17.79 245.71 25.81 1.08 1707 +1756 4 -17.95 247.99 26.05 1.08 1755 +1757 4 -17.21 249.38 25.88 1.08 1756 +1758 4 -16.46 251.67 26.03 1.08 1757 +1759 4 -16.93 253.35 26.17 1.08 1758 +1760 4 -18.15 255.17 26.46 1.08 1759 +1761 4 -19.82 258.34 25.41 1.08 1760 +1762 4 -20.59 260.91 25.73 1.08 1761 +1763 4 -20.91 263.96 26.06 1.08 1762 +1764 4 -20.63 268.83 26.42 1.08 1763 +1765 4 -20.07 271.27 26.55 1.19 1764 +1766 4 -19.33 274.16 26.75 1.19 1765 +1767 4 -19.33 275.38 26.88 1.19 1766 +1768 4 -19.12 276.58 28.11 0.865 1767 +1769 4 -19.42 278.11 28.28 0.865 1768 +1770 4 -19.72 279.01 28.47 0.865 1769 +1771 4 -20.34 279.62 28.51 0.865 1770 +1772 4 -20.67 280.85 30.11 0.865 1771 +1773 4 -21.56 281.73 30.43 0.865 1772 +1774 4 -21.99 283.36 31.15 0.865 1773 +1775 4 -23.18 284.53 31.67 0.865 1774 +1776 4 -23.79 286.34 31.99 0.865 1775 +1777 4 -25.13 287.66 32.62 0.865 1776 +1778 4 -26.51 289.01 32.88 0.865 1777 +1779 4 -27.87 291.27 33.3 0.865 1778 +1780 4 -28.64 293.86 33.63 0.865 1779 +1781 4 -28.65 296.29 33.86 0.865 1780 +1782 4 -28.8 298.55 34.24 0.865 1781 +1783 4 -28.79 300.07 34.47 0.865 1782 +1784 4 -30.47 303.85 35.07 0.865 1783 +1785 4 -31.85 307.03 35.51 0.865 1784 +1786 4 -32.63 310.21 35.89 0.865 1785 +1787 4 -34.3 312.78 36.3 0.865 1786 +1788 4 -36.6 315.05 36.73 0.865 1787 +1789 4 -37.54 315.89 37.05 0.865 1788 +1790 4 -38.92 318.77 37.46 0.865 1789 +1791 4 -40.3 321.64 37.86 0.865 1790 +1792 4 -42.89 323.29 38.26 0.865 1791 +1793 4 -44.42 326.01 38.68 0.865 1792 +1794 4 -46.11 329.51 39.17 0.865 1793 +1795 4 -47.21 332.39 40.99 0.865 1794 +1796 4 -47.72 334.12 40.59 0.865 1795 +1797 4 -48.34 335.36 38.88 0.865 1796 +1798 4 -49.4 337.62 37.77 0.865 1797 +1799 4 -50.47 338.68 37.9 0.865 1798 +1800 4 -52.63 341.41 38.28 0.865 1799 +1801 4 -54.76 344.73 38.8 0.865 1800 +1802 4 -55.43 349.03 38.75 0.865 1801 +1803 4 -55.94 352.55 38.84 0.865 1802 +1804 4 -55.08 356.27 38.6 0.865 1803 +1805 4 -54.71 359.25 37.95 0.865 1804 +1806 4 -55.34 362.0 38.2 0.865 1805 +1807 4 -54.82 365.14 37.47 0.865 1806 +1808 4 -53.38 368.86 36.95 0.865 1807 +1809 4 -52.37 372.41 36.67 0.865 1808 +1810 4 -51.94 375.04 35.07 0.865 1809 +1811 4 -50.47 378.74 34.92 0.865 1810 +1812 4 -49.98 381.91 33.91 0.865 1811 +1813 4 -50.57 382.78 32.75 0.865 1812 +1814 4 -51.17 383.99 32.93 0.865 1813 +1815 4 -51.52 384.33 32.99 0.435 1814 +1816 4 -51.82 384.93 33.08 0.865 1815 +1817 4 -51.5 387.06 31.89 0.865 1816 +1818 4 -51.65 388.73 32.07 0.865 1817 +1819 4 -52.87 389.93 32.3 0.865 1818 +1820 4 -54.06 390.8 31.21 0.865 1819 +1821 4 -55.81 392.23 30.67 0.865 1820 +1822 4 -55.97 393.0 30.69 0.865 1821 +1823 4 -56.94 395.16 30.47 0.865 1822 +1824 4 -57.4 396.54 30.57 0.865 1823 +1825 4 -57.73 398.37 30.7 1.3 1824 +1826 4 -57.88 400.03 30.89 0.975 1825 +1827 4 -58.48 403.06 29.79 0.975 1826 +1828 4 -58.77 404.3 29.93 0.975 1827 +1829 4 -59.79 404.09 30.46 0.54 1828 +1830 4 -61.01 403.47 30.52 0.54 1829 +1831 4 -62.07 403.92 30.66 0.54 1830 +1832 4 -63.75 404.36 30.86 0.54 1831 +1833 4 -65.44 405.12 31.02 0.54 1832 +1834 4 -66.97 405.74 29.4 0.54 1833 +1835 4 -68.34 407.08 29.66 0.54 1834 +1836 4 -69.56 408.3 29.89 0.54 1835 +1837 4 -70.93 408.73 30.06 0.54 1836 +1838 4 -72.2 409.67 29.88 0.54 1837 +1839 4 -72.78 409.97 28.45 0.54 1838 +1840 4 -73.63 409.59 27.59 0.54 1839 +1841 4 -74.09 409.46 25.81 0.54 1840 +1842 4 -74.35 409.11 24.59 0.54 1841 +1843 4 -74.54 408.99 24.21 0.54 1842 +1844 4 -74.69 408.54 24.18 0.54 1843 +1845 4 -58.94 404.74 29.92 0.975 1828 +1846 4 -58.5 407.04 30.03 0.975 1845 +1847 4 -58.83 408.88 28.42 0.975 1846 +1848 4 -59.16 410.74 26.67 0.975 1847 +1849 4 -60.12 411.68 26.4 0.975 1848 +1850 4 -62.36 413.31 25.56 0.975 1849 +1851 4 -63.03 415.56 24.85 0.975 1850 +1852 4 -63.49 417.54 25.08 0.865 1851 +1853 4 -64.8 419.45 24.42 0.865 1852 +1854 4 -64.81 420.98 22.83 0.865 1853 +1855 4 -64.64 422.34 21.5 0.865 1854 +1856 4 -64.51 423.12 21.34 0.865 1855 +1857 4 -64.07 423.6 21.2 0.865 1856 +1858 4 -64.23 425.88 19.85 0.865 1857 +1859 4 -64.97 427.53 18.64 0.865 1858 +1860 4 -64.91 430.2 17.92 0.865 1859 +1861 4 -65.28 432.71 15.85 0.865 1860 +1862 4 -65.7 433.72 16.59 0.865 1861 +1863 4 -66.37 435.91 16.1 0.865 1862 +1864 4 -66.93 437.69 15.27 0.865 1863 +1865 4 -67.17 439.14 14.53 0.865 1864 +1866 4 -68.16 439.81 13.86 0.865 1865 +1867 4 -69.28 441.53 13.6 0.865 1866 +1868 4 -70.9 442.84 12.82 0.865 1867 +1869 4 -71.75 444.29 12.06 0.865 1868 +1870 4 -72.49 445.63 10.97 0.865 1869 +1871 4 -73.83 446.97 9.79 0.865 1870 +1872 4 -74.39 448.11 9.04 0.865 1871 +1873 4 -75.42 449.76 7.94 0.865 1872 +1874 4 -75.89 450.83 8.01 0.865 1873 +1875 4 -77.1 451.73 8.21 0.865 1874 +1876 4 -78.48 453.7 8.46 0.865 1875 +1877 4 -79.04 456.07 7.75 0.865 1876 +1878 4 -77.54 459.43 7.94 0.865 1877 +1879 4 -75.96 462.44 7.03 0.865 1878 +1880 4 -75.44 465.57 6.45 0.865 1879 +1881 4 -75.68 468.54 5.86 0.865 1880 +1882 4 -75.19 470.47 4.87 0.865 1881 +1883 4 -74.8 472.53 4.29 0.865 1882 +1884 4 -74.42 474.28 3.66 0.865 1883 +1885 4 -74.74 475.39 3.8 0.865 1884 +1886 4 -75.42 475.77 3.06 0.435 1885 +1887 4 -75.88 476.23 3.15 0.435 1886 +1888 4 -76.82 476.55 2.96 0.435 1887 +1889 4 -77.28 476.1 2.81 0.435 1888 +1890 4 -77.61 476.43 2.65 0.54 1889 +1891 4 -79.59 477.17 2.91 0.54 1890 +1892 4 -79.9 478.69 3.08 0.54 1891 +1893 4 -80.67 479.16 1.38 0.54 1892 +1894 4 -81.7 479.26 0.28 0.54 1893 +1895 4 -82.29 479.55 -1.07 0.54 1894 +1896 4 -82.72 479.38 -2.55 0.54 1895 +1897 4 -83.65 479.7 -2.52 0.54 1896 +1898 4 -85.11 480.23 -3.31 0.54 1897 +1899 4 -85.96 480.46 -4.12 0.54 1898 +1900 4 -86.59 481.1 -4.37 0.54 1899 +1901 4 -87.51 481.41 -5.92 0.54 1900 +1902 4 -87.66 481.58 -7.71 0.54 1901 +1903 4 -88.41 482.0 -8.96 0.54 1902 +1904 4 -89.13 482.72 -10.02 0.54 1903 +1905 4 -89.85 483.45 -11.17 0.54 1904 +1906 4 -73.88 475.57 3.05 0.865 1885 +1907 4 -73.79 477.62 2.57 0.865 1906 +1908 4 -73.62 479.27 1.28 0.865 1907 +1909 4 -74.82 481.66 0.33 0.865 1908 +1910 4 -74.93 483.61 -0.73 0.865 1909 +1911 4 -74.02 485.14 -0.67 0.865 1910 +1912 4 -72.32 487.12 -1.93 0.865 1911 +1913 4 -71.11 490.18 -3.4 0.865 1912 +1914 4 -71.5 492.69 -4.03 0.865 1913 +1915 4 -71.93 494.64 -5.08 0.865 1914 +1916 4 -71.81 496.33 -5.15 0.865 1915 +1917 4 -72.31 498.87 -6.06 0.865 1916 +1918 4 -71.64 499.73 -7.03 0.865 1917 +1919 4 -70.64 503.6 -7.28 0.865 1918 +1920 4 -69.15 505.47 -7.6 0.865 1919 +1921 4 -69.42 508.16 -8.46 0.865 1920 +1922 4 -70.29 509.94 -9.33 0.865 1921 +1923 4 -70.46 511.32 -9.41 0.865 1922 +1924 4 -70.53 513.51 -9.87 0.865 1923 +1925 4 -70.27 516.0 -10.1 0.865 1924 +1926 4 -71.33 518.26 -11.23 0.865 1925 +1927 4 -71.95 520.08 -11.07 0.865 1926 +1928 4 -72.93 522.29 -11.58 0.865 1927 +1929 4 -73.88 523.83 -13.25 0.865 1928 +1930 4 -73.89 525.66 -13.14 0.865 1929 +1931 4 -73.9 529.32 -14.44 0.865 1930 +1932 4 -73.97 529.39 -15.19 0.865 1931 +1933 4 -73.61 531.16 -16.03 0.865 1932 +1934 4 -73.7 533.69 -16.76 0.865 1933 +1935 4 -73.7 535.51 -18.1 0.865 1934 +1936 4 -73.96 537.29 -19.03 0.865 1935 +1937 4 -74.53 539.99 -19.92 0.865 1936 +1938 4 -74.15 542.65 -20.53 0.865 1937 +1939 4 -72.95 545.1 -20.4 0.865 1938 +1940 4 -72.42 548.52 -20.86 0.865 1939 +1941 4 -71.81 551.27 -22.32 0.865 1940 +1942 4 -70.81 554.24 -22.81 0.865 1941 +1943 4 -70.18 556.94 -23.82 0.865 1942 +1944 4 -68.51 558.96 -25.51 0.865 1943 +1945 4 -67.91 560.48 -25.41 0.865 1944 +1946 4 -66.61 561.93 -26.07 0.865 1945 +1947 4 -65.91 563.36 -26.6 0.865 1946 +1948 4 -65.22 566.04 -27.24 0.865 1947 +1949 4 -65.31 567.95 -27.88 0.865 1948 +1950 4 -65.54 570.59 -28.28 0.865 1949 +1951 4 -66.56 574.04 -28.98 0.865 1950 +1952 4 -67.53 578.34 -29.0 0.865 1951 +1953 4 -68.36 581.65 -28.75 0.865 1952 +1954 4 -68.66 585.6 -28.34 0.865 1953 +1955 4 -68.84 588.5 -28.19 0.865 1954 +1956 4 -69.31 591.09 -27.98 0.865 1955 +1957 4 -70.14 594.33 -28.18 0.865 1956 +1958 4 -70.38 596.7 -28.84 0.865 1957 +1959 4 -70.16 598.92 -29.55 0.865 1958 +1960 4 -69.48 600.67 -30.2 0.865 1959 +1961 4 -68.03 601.97 -30.88 0.865 1960 +1962 4 -67.78 602.91 -30.89 0.54 1961 +1963 4 -66.57 605.06 -30.8 0.54 1962 +1964 4 -66.17 605.58 -31.46 0.54 1963 +1965 4 -65.24 606.49 -32.89 0.54 1964 +1966 4 -63.43 608.04 -33.05 0.54 1965 +1967 4 -62.07 608.82 -33.11 0.54 1966 +1968 4 -59.79 609.9 -33.21 0.54 1967 +1969 4 -58.44 610.39 -33.51 0.54 1968 +1970 4 -56.47 611.48 -33.66 0.54 1969 +1971 4 -54.88 612.34 -34.57 0.54 1970 +1972 4 -54.03 612.73 -35.37 0.54 1971 +1973 4 -53.88 612.57 -35.39 0.54 1972 +1974 4 -54.3 613.0 -36.6 0.435 1973 +1975 4 -54.77 613.47 -36.66 0.435 1974 +1976 4 -55.42 613.78 -36.87 0.435 1975 +1977 4 -54.82 614.42 -37.02 0.435 1976 +1978 4 -55.23 614.83 -38.06 0.435 1977 +1979 4 -54.75 615.58 -39.47 0.435 1978 +1980 4 -54.58 616.63 -40.82 0.435 1979 +1981 4 -54.26 617.24 -42.31 0.435 1980 +1982 4 -54.19 617.48 -43.27 0.435 1981 +1983 4 -54.01 617.91 -44.46 0.435 1982 +1984 4 -53.71 618.53 -46.17 0.435 1983 +1985 4 -53.72 619.75 -46.12 0.435 1984 +1986 4 -53.51 621.68 -47.01 0.435 1985 +1987 4 -53.61 623.29 -47.75 0.435 1986 +1988 4 -53.55 625.07 -48.56 0.435 1987 +1989 4 -54.08 626.8 -49.1 0.435 1988 +1990 4 -54.38 628.63 -50.49 0.435 1989 +1991 4 -54.53 630.0 -51.93 0.435 1990 +1992 4 -54.96 632.25 -52.94 0.435 1991 +1993 4 -56.33 633.9 -52.66 0.435 1992 +1994 4 -56.39 634.89 -53.24 0.435 1993 +1995 4 -56.05 635.78 -54.47 0.435 1994 +1996 4 -55.39 636.34 -55.54 0.435 1995 +1997 4 -52.58 613.43 -36.26 0.54 1973 +1998 4 -51.09 614.37 -36.53 0.54 1997 +1999 4 -50.09 615.5 -37.11 0.54 1998 +2000 4 -47.89 617.89 -37.98 0.54 1999 +2001 4 -46.31 618.77 -39.1 0.54 2000 +2002 4 -43.9 620.02 -39.29 0.54 2001 +2003 4 -41.36 621.45 -39.9 0.54 2002 +2004 4 -39.1 623.18 -40.18 0.54 2003 +2005 4 -36.98 625.03 -40.27 0.54 2004 +2006 4 -36.05 626.84 -41.62 0.54 2005 +2007 4 -32.96 629.26 -42.65 0.54 2006 +2008 4 -31.82 631.17 -43.39 0.54 2007 +2009 4 -30.72 634.63 -44.3 0.54 2008 +2010 4 -29.79 636.45 -45.57 0.54 2009 +2011 4 -28.27 637.99 -45.63 0.54 2010 +2012 4 -26.39 639.78 -46.68 0.54 2011 +2013 4 -24.2 640.96 -47.76 0.54 2012 +2014 4 -22.17 641.99 -48.83 0.54 2013 +2015 4 -21.01 642.38 -49.66 0.54 2014 +2016 4 -20.54 642.82 -51.09 0.54 2015 +2017 4 -19.07 644.42 -51.67 0.54 2016 +2018 4 -18.46 645.94 -53.09 0.54 2017 +2019 4 -16.92 649.28 -54.34 0.54 2018 +2020 4 -15.61 651.63 -54.77 0.54 2019 +2021 4 -14.71 653.18 -56.51 0.54 2020 +2022 4 -13.13 656.16 -57.13 0.54 2021 +2023 4 -11.23 657.33 -58.09 0.54 2022 +2024 4 -9.11 658.88 -58.21 0.54 2023 +2025 4 -7.68 660.51 -59.17 0.54 2024 +2026 4 -6.55 662.44 -59.99 0.54 2025 +2027 4 -5.71 664.02 -60.6 0.54 2026 +2028 4 -5.26 665.1 -60.61 0.54 2027 +2029 4 -3.83 667.32 -61.35 0.54 2028 +2030 4 -3.0 668.95 -62.25 0.54 2029 +2031 4 -1.86 672.08 -62.89 0.54 2030 +2032 4 -1.23 674.79 -63.89 0.54 2031 +2033 4 1.18 677.26 -64.02 0.54 2032 +2034 4 4.06 679.87 -64.02 0.54 2033 +2035 4 5.35 680.42 -65.0 0.54 2034 +2036 4 7.82 681.93 -66.22 0.54 2035 +2037 4 10.21 684.13 -66.68 0.54 2036 +2038 4 10.36 684.6 -68.46 0.54 2037 +2039 4 -68.53 604.57 -30.88 0.865 1961 +2040 4 -69.08 609.08 -31.45 0.865 2039 +2041 4 -69.0 614.17 -31.57 0.865 2040 +2042 4 -68.42 616.32 -31.57 0.865 2041 +2043 4 -67.21 619.67 -31.35 0.865 2042 +2044 4 -66.84 625.07 -31.61 0.865 2043 +2045 4 -67.06 630.75 -31.56 0.865 2044 +2046 4 -66.61 633.94 -31.3 0.865 2045 +2047 4 -66.46 637.44 -30.97 0.865 2046 +2048 4 -65.59 640.58 -30.89 0.54 2047 +2049 4 -65.91 644.53 -30.47 0.54 2048 +2050 4 -64.24 649.25 -30.18 0.54 2049 +2051 4 -62.58 652.77 -29.98 0.54 2050 +2052 4 -61.12 655.25 -28.66 0.54 2051 +2053 4 -59.15 659.67 -28.34 0.54 2052 +2054 4 -56.11 663.66 -28.23 0.54 2053 +2055 4 -53.24 668.4 -28.03 0.54 2054 +2056 4 -51.27 673.13 -27.75 0.54 2055 +2057 4 -50.07 679.22 -27.27 0.54 2056 +2058 4 -49.03 684.55 -26.77 0.54 2057 +2059 4 -48.58 689.26 -26.35 0.54 2058 +2060 4 -47.95 693.21 -25.72 0.54 2059 +2061 4 -47.12 696.32 -26.25 0.54 2060 +2062 4 -45.22 698.92 -28.14 0.54 2061 +2063 4 -43.1 701.08 -28.13 0.54 2062 +2064 4 -42.34 703.36 -27.97 0.54 2063 +2065 4 -40.37 706.27 -27.87 0.54 2064 +2066 4 -38.4 709.47 -27.74 0.54 2065 +2067 4 -36.9 713.44 -27.49 0.54 2066 +2068 4 -35.53 717.56 -27.21 0.54 2067 +2069 4 -34.18 720.16 -27.09 0.54 2068 +2070 4 -30.1 723.41 -25.71 0.54 2069 +2071 4 -26.09 725.2 -25.22 0.54 2070 +2072 4 -22.39 726.69 -24.74 0.54 2071 +2073 4 -19.04 728.84 -24.76 0.54 2072 +2074 4 -17.81 729.46 -24.74 0.54 2073 +2075 4 -15.69 732.52 -24.64 0.54 2074 +2076 4 -14.33 735.11 -24.51 0.54 2075 +2077 4 -13.19 736.11 -23.68 0.54 2076 +2078 4 -11.21 738.41 -23.57 0.54 2077 +2079 4 -9.54 739.49 -23.62 0.54 2078 +2080 4 -7.73 740.42 -23.69 0.54 2079 +2081 4 -17.36 277.69 26.92 1.19 1767 +2082 4 -15.39 280.28 26.99 1.19 2081 +2083 4 -13.39 282.85 25.84 1.19 2082 +2084 4 -11.82 284.96 24.78 1.19 2083 +2085 4 -10.56 287.07 23.65 1.19 2084 +2086 4 -8.93 289.09 23.25 1.19 2085 +2087 4 -8.11 290.11 22.28 1.19 2086 +2088 4 -6.9 291.04 22.26 1.19 2087 +2089 4 -5.65 291.83 23.13 0.755 2088 +2090 4 -4.02 293.26 22.67 0.755 2089 +2091 4 -3.27 294.64 22.73 0.755 2090 +2092 4 -2.78 296.0 21.38 1.08 2091 +2093 4 -1.73 298.6 21.55 1.08 2092 +2094 4 -1.02 300.03 21.09 1.08 2093 +2095 4 -0.04 301.18 20.27 1.08 2094 +2096 4 0.25 302.69 20.4 1.08 2095 +2097 4 0.7 304.37 20.52 1.08 2096 +2098 4 1.14 306.06 20.49 1.08 2097 +2099 4 1.18 307.56 19.43 1.08 2098 +2100 4 1.39 309.18 18.43 1.08 2099 +2101 4 1.89 310.03 17.56 0.755 2100 +2102 4 2.2 310.34 17.63 0.755 2101 +2103 4 3.12 311.24 17.78 0.755 2102 +2104 4 4.06 312.43 18.12 1.08 2103 +2105 4 4.95 313.69 17.94 1.08 2104 +2106 4 5.14 314.72 16.74 1.08 2105 +2107 4 4.92 316.75 16.35 1.08 2106 +2108 4 4.92 318.58 16.53 1.08 2107 +2109 4 4.84 319.58 15.73 1.08 2108 +2110 4 5.23 322.22 15.42 1.08 2109 +2111 4 5.35 324.83 15.36 1.08 2110 +2112 4 5.76 326.25 15.0 1.08 2111 +2113 4 6.0 327.82 14.61 1.08 2112 +2114 4 6.98 329.6 13.71 1.08 2113 +2115 4 7.27 332.96 13.94 1.08 2114 +2116 4 7.1 335.85 14.23 1.08 2115 +2117 4 7.55 338.44 14.45 1.08 2116 +2118 4 7.7 341.33 14.71 0.975 2117 +2119 4 7.32 344.13 14.27 0.975 2118 +2120 4 7.16 346.12 14.47 0.975 2119 +2121 4 5.72 348.74 14.18 0.975 2120 +2122 4 4.94 351.03 14.4 0.865 2121 +2123 4 4.62 354.67 14.78 0.865 2122 +2124 4 5.08 357.26 15.0 0.865 2123 +2125 4 6.28 359.11 14.99 0.865 2124 +2126 4 8.1 360.65 14.98 0.865 2125 +2127 4 9.61 362.79 14.96 0.865 2126 +2128 4 10.51 365.85 15.18 0.865 2127 +2129 4 10.8 370.41 15.6 0.865 2128 +2130 4 11.28 374.18 14.71 0.865 2129 +2131 4 12.49 378.15 14.98 0.865 2130 +2132 4 13.09 380.89 15.2 0.865 2131 +2133 4 14.89 386.39 15.5 0.865 2132 +2134 4 16.25 389.6 15.69 0.865 2133 +2135 4 16.25 392.64 15.98 0.865 2134 +2136 4 17.15 395.08 16.21 0.865 2135 +2137 4 18.52 397.07 16.28 0.865 2136 +2138 4 19.73 399.51 16.41 0.865 2137 +2139 4 20.78 402.41 16.59 0.865 2138 +2140 4 20.61 407.73 17.12 0.865 2139 +2141 4 20.7 411.29 16.79 0.865 2140 +2142 4 20.14 414.87 16.27 0.755 2141 +2143 4 19.98 419.9 16.78 0.755 2142 +2144 4 19.66 422.93 17.11 0.755 2143 +2145 4 18.58 425.81 17.49 0.755 2144 +2146 4 18.43 427.18 17.64 0.755 2145 +2147 4 18.88 429.77 17.85 0.755 2146 +2148 4 17.97 431.28 18.08 0.755 2147 +2149 4 16.43 432.48 18.34 0.755 2148 +2150 4 15.96 433.55 18.34 0.755 2149 +2151 4 16.2 436.36 17.98 0.755 2150 +2152 4 17.27 438.02 18.2 0.755 2151 +2153 4 18.34 440.93 18.45 0.755 2152 +2154 4 18.82 442.56 18.88 0.755 2153 +2155 4 18.97 443.93 19.07 0.755 2154 +2156 4 19.27 447.27 19.44 0.755 2155 +2157 4 19.56 450.62 19.74 0.755 2156 +2158 4 20.19 453.33 20.25 0.755 2157 +2159 4 20.94 455.3 20.45 0.755 2158 +2160 4 21.4 457.6 20.64 0.755 2159 +2161 4 22.46 458.97 20.67 0.755 2160 +2162 4 25.04 462.1 21.2 0.755 2161 +2163 4 26.55 466.07 21.44 0.755 2162 +2164 4 27.91 470.5 21.74 0.755 2163 +2165 4 27.89 473.84 22.08 0.755 2164 +2166 4 27.73 475.52 22.25 0.755 2165 +2167 4 28.04 477.66 23.95 0.54 2166 +2168 4 28.02 479.2 24.02 0.54 2167 +2169 4 29.08 480.27 24.02 0.54 2168 +2170 4 29.8 481.69 23.72 0.54 2169 +2171 4 29.64 483.05 23.79 0.54 2170 +2172 4 29.79 484.42 23.99 0.54 2171 +2173 4 29.53 485.89 24.61 0.54 2172 +2174 4 28.98 486.44 25.39 0.54 2173 +2175 4 29.01 488.22 26.02 0.54 2174 +2176 4 28.58 489.55 26.49 0.54 2175 +2177 4 28.94 490.01 26.5 0.54 2176 +2178 4 28.57 490.08 27.45 0.54 2177 +2179 4 27.96 490.68 27.56 0.54 2178 +2180 4 28.41 492.04 27.65 0.54 2179 +2181 4 28.56 494.01 27.91 0.54 2180 +2182 4 29.32 496.3 28.06 0.54 2181 +2183 4 29.76 496.79 27.91 0.54 2182 +2184 4 30.51 498.77 28.04 0.54 2183 +2185 4 30.47 500.33 27.82 0.54 2184 +2186 4 30.32 501.09 27.91 0.54 2185 +2187 4 30.97 501.65 28.36 0.54 2186 +2188 4 31.5 502.03 29.25 0.54 2187 +2189 4 32.59 503.08 29.56 0.54 2188 +2190 4 33.5 503.69 29.54 0.54 2189 +2191 4 34.15 504.26 29.9 0.54 2190 +2192 4 33.99 506.54 30.22 0.54 2191 +2193 4 33.84 508.21 30.4 0.54 2192 +2194 4 33.53 509.12 30.59 0.54 2193 +2195 4 35.06 509.43 30.48 0.435 2194 +2196 4 35.97 511.57 30.68 0.435 2195 +2197 4 37.18 513.69 30.85 0.435 2196 +2198 4 37.04 514.75 31.04 0.435 2197 +2199 4 37.19 516.41 31.26 0.435 2198 +2200 4 38.28 518.06 31.71 0.435 2199 +2201 4 39.65 519.14 31.68 0.435 2200 +2202 4 41.49 521.57 31.98 0.435 2201 +2203 4 41.85 521.81 32.65 0.435 2202 +2204 4 43.07 522.74 32.63 0.435 2203 +2205 4 44.13 523.8 32.7 0.435 2204 +2206 4 45.06 524.72 32.86 0.435 2205 +2207 4 45.85 526.67 33.28 0.435 2206 +2208 4 47.11 528.13 33.91 0.54 2207 +2209 4 48.02 529.06 33.99 0.54 2208 +2210 4 48.39 529.9 34.73 0.54 2209 +2211 4 48.13 531.37 35.42 0.54 2210 +2212 4 48.64 533.6 36.19 0.54 2211 +2213 4 49.72 534.64 36.58 0.54 2212 +2214 4 50.83 536.28 37.09 0.54 2213 +2215 4 51.47 537.45 37.59 0.54 2214 +2216 4 51.81 539.24 38.2 0.54 2215 +2217 4 51.83 540.13 38.5 0.54 2216 +2218 4 51.84 541.34 38.7 0.54 2217 +2219 4 52.15 542.24 38.83 0.54 2218 +2220 4 52.33 543.59 39.32 0.54 2219 +2221 4 53.6 545.36 39.99 0.54 2220 +2222 4 54.28 545.89 40.81 0.54 2221 +2223 4 55.34 546.35 40.83 0.54 2222 +2224 4 56.13 546.78 41.09 0.54 2223 +2225 4 56.77 547.36 41.39 0.54 2224 +2226 4 57.57 548.09 41.93 0.54 2225 +2227 4 57.56 550.21 42.21 0.54 2226 +2228 4 57.72 551.28 42.29 0.54 2227 +2229 4 57.57 552.32 42.56 0.54 2228 +2230 4 58.03 553.09 42.6 0.54 2229 +2231 4 58.34 553.99 42.74 0.54 2230 +2232 4 59.13 554.73 43.11 0.54 2231 +2233 4 59.45 555.63 43.32 0.54 2232 +2234 4 59.32 556.35 43.7 0.54 2233 +2235 4 59.47 558.03 43.94 0.54 2234 +2236 4 58.88 558.3 44.17 0.54 2235 +2237 4 29.04 490.61 26.63 0.54 2177 +2238 4 29.72 492.36 27.64 0.54 2237 +2239 4 30.65 494.47 27.99 0.54 2238 +2240 4 32.98 497.63 28.69 0.54 2239 +2241 4 34.1 499.26 29.35 0.54 2240 +2242 4 34.53 499.43 29.09 0.54 2241 +2243 4 35.37 501.32 28.6 0.54 2242 +2244 4 36.74 502.7 28.61 0.54 2243 +2245 4 37.77 504.43 28.3 0.54 2244 +2246 4 38.65 506.3 28.03 0.54 2245 +2247 4 39.81 507.26 27.49 0.54 2246 +2248 4 41.92 509.73 27.45 0.54 2247 +2249 4 42.23 511.56 27.6 0.54 2248 +2250 4 43.71 512.51 27.26 0.54 2249 +2251 4 44.78 513.28 27.24 0.54 2250 +2252 4 46.29 515.73 27.34 0.54 2251 +2253 4 47.49 518.78 27.44 0.54 2252 +2254 4 48.37 519.74 27.16 0.54 2253 +2255 4 49.59 521.58 27.15 0.54 2254 +2256 4 51.09 522.81 27.13 0.54 2255 +2257 4 51.84 523.29 27.02 0.54 2256 +2258 4 52.76 524.21 26.97 0.54 2257 +2259 4 53.56 524.62 27.46 0.54 2258 +2260 4 54.52 525.19 28.03 0.54 2259 +2261 4 56.24 527.44 28.55 0.54 2260 +2262 4 57.33 528.46 29.0 0.54 2261 +2263 4 58.44 530.41 29.61 0.54 2262 +2264 4 59.99 533.42 30.14 0.54 2263 +2265 4 60.91 535.55 30.41 0.54 2264 +2266 4 61.08 536.92 29.03 0.54 2265 +2267 4 59.7 537.66 29.22 0.54 2266 +2268 4 59.23 538.12 29.16 0.54 2267 +2269 4 59.76 538.5 29.98 0.54 2268 +2270 4 59.88 539.59 29.85 0.54 2269 +2271 4 59.98 539.81 29.25 0.54 2270 +2272 4 59.62 540.17 28.64 0.54 2271 +2273 4 59.29 540.5 28.4 0.54 2272 +2274 4 59.24 541.17 27.94 0.54 2273 +2275 4 59.32 541.68 27.3 0.54 2274 +2276 4 58.81 542.19 26.79 0.54 2275 +2277 4 58.14 543.48 26.23 0.54 2276 +2278 4 58.07 544.76 25.76 0.54 2277 +2279 4 58.32 546.03 25.25 0.54 2278 +2280 4 58.55 547.32 24.67 0.54 2279 +2281 4 58.82 547.67 24.22 0.54 2280 +2282 4 59.4 548.3 24.01 0.54 2281 +2283 4 60.73 549.42 23.54 0.54 2282 +2284 4 61.76 549.92 23.19 0.54 2283 +2285 4 63.43 551.0 23.07 0.54 2284 +2286 4 64.13 552.74 22.58 0.54 2285 +2287 4 64.24 553.84 22.29 0.54 2286 +2288 4 65.11 554.8 21.85 0.54 2287 +2289 4 65.65 555.19 21.08 0.54 2288 +2290 4 66.55 555.81 20.98 0.54 2289 +2291 4 67.24 556.66 20.24 0.54 2290 +2292 4 67.35 556.86 19.72 0.54 2291 +2293 4 68.34 558.0 18.99 0.54 2292 +2294 4 69.21 559.57 18.62 0.54 2293 +2295 4 70.23 560.4 18.14 0.54 2294 +2296 4 70.45 560.79 17.17 0.54 2295 +2297 4 70.86 561.29 16.81 0.54 2296 +2298 4 71.45 561.94 16.52 0.54 2297 +2299 4 72.6 563.83 15.99 0.54 2298 +2300 4 72.7 565.56 15.61 0.54 2299 +2301 4 73.54 568.06 15.03 0.54 2300 +2302 4 74.38 568.75 14.34 0.54 2301 +2303 4 74.67 569.39 12.56 0.54 2302 +2304 4 75.73 570.17 12.39 0.54 2303 +2305 4 76.89 571.45 11.81 0.54 2304 +2306 4 77.94 573.13 11.87 0.54 2305 +2307 4 78.76 575.36 11.1 0.54 2306 +2308 4 79.3 576.06 10.3 0.54 2307 +2309 4 80.31 577.19 9.71 0.54 2308 +2310 4 81.31 578.93 9.17 0.54 2309 +2311 4 82.86 579.76 8.13 0.54 2310 +2312 4 83.76 583.11 8.38 0.54 2311 +2313 4 83.89 585.4 8.52 0.54 2312 +2314 4 83.09 588.03 8.39 0.54 2313 +2315 4 82.89 591.55 8.53 0.54 2314 +2316 4 82.42 594.13 8.74 0.54 2315 +2317 4 82.09 597.81 8.83 0.54 2316 +2318 4 80.69 599.8 8.85 0.54 2317 +2319 4 79.69 600.78 8.21 0.54 2318 +2320 4 26.36 477.48 22.58 0.755 2166 +2321 4 24.42 479.08 23.43 0.755 2320 +2322 4 23.06 481.64 23.96 0.755 2321 +2323 4 21.95 482.74 23.71 0.755 2322 +2324 4 21.76 484.24 25.7 0.755 2323 +2325 4 21.44 485.15 25.82 0.755 2324 +2326 4 21.44 488.19 26.11 0.755 2325 +2327 4 22.34 490.02 26.21 0.54 2326 +2328 4 23.55 491.86 26.27 0.54 2327 +2329 4 24.7 492.57 25.41 0.54 2328 +2330 4 26.64 493.37 25.0 0.54 2329 +2331 4 28.16 494.6 24.99 0.54 2330 +2332 4 29.82 496.6 25.02 0.54 2331 +2333 4 31.5 499.79 25.33 0.54 2332 +2334 4 35.02 503.9 25.71 0.54 2333 +2335 4 36.39 505.89 25.78 0.54 2334 +2336 4 37.44 507.57 25.85 0.54 2335 +2337 4 39.27 508.79 25.87 0.54 2336 +2338 4 41.55 511.1 25.89 0.54 2337 +2339 4 43.37 512.94 25.89 0.54 2338 +2340 4 45.21 515.97 26.41 0.54 2339 +2341 4 46.45 518.1 26.65 0.54 2340 +2342 4 47.53 519.74 27.02 0.54 2341 +2343 4 48.62 522.01 27.43 0.54 2342 +2344 4 50.17 523.2 27.78 0.54 2343 +2345 4 50.85 523.74 28.6 0.54 2344 +2346 4 51.93 524.48 28.81 0.54 2345 +2347 4 53.46 526.01 28.88 0.54 2346 +2348 4 56.05 529.52 29.14 0.54 2347 +2349 4 57.74 531.78 29.58 0.54 2348 +2350 4 58.99 534.18 30.08 0.54 2349 +2351 4 59.92 536.9 30.63 0.54 2350 +2352 4 60.03 537.4 31.74 0.54 2351 +2353 4 59.3 538.72 32.39 0.54 2352 +2354 4 58.51 539.21 30.61 0.54 2353 +2355 4 58.69 540.25 29.33 0.54 2354 +2356 4 58.29 541.25 28.49 0.54 2355 +2357 4 58.14 542.0 28.57 0.54 2356 +2358 4 57.79 542.95 28.32 0.54 2357 +2359 4 57.57 544.41 27.59 0.54 2358 +2360 4 57.43 545.47 26.19 0.54 2359 +2361 4 57.68 547.64 25.92 0.54 2360 +2362 4 58.55 549.2 25.61 0.54 2361 +2363 4 60.81 550.32 25.21 0.54 2362 +2364 4 62.55 551.33 24.39 0.54 2363 +2365 4 64.07 552.86 24.33 0.54 2364 +2366 4 64.52 555.77 24.57 0.54 2365 +2367 4 66.41 556.93 23.6 0.54 2366 +2368 4 67.27 557.6 23.06 0.54 2367 +2369 4 69.63 560.75 22.39 0.54 2368 +2370 4 70.56 562.25 21.01 0.54 2369 +2371 4 71.46 562.88 19.26 0.54 2370 +2372 4 71.6 564.27 19.3 0.54 2371 +2373 4 72.57 565.75 18.3 0.54 2372 +2374 4 72.91 568.45 17.39 0.54 2373 +2375 4 73.87 569.02 16.15 0.54 2374 +2376 4 74.26 569.56 15.34 0.54 2375 +2377 4 74.92 571.33 14.54 0.54 2376 +2378 4 76.82 573.71 13.77 0.54 2377 +2379 4 77.18 574.27 12.73 0.54 2378 +2380 4 78.21 575.39 12.36 0.54 2379 +2381 4 79.55 577.99 12.43 0.54 2380 +2382 4 80.96 580.25 11.3 0.54 2381 +2383 4 81.84 581.2 11.02 0.54 2382 +2384 4 82.74 582.73 11.0 0.54 2383 +2385 4 82.67 584.93 10.54 0.54 2384 +2386 4 82.51 588.13 10.79 0.54 2385 +2387 4 81.97 591.69 10.44 0.54 2386 +2388 4 81.88 593.0 9.67 0.54 2387 +2389 4 81.54 596.06 9.69 0.54 2388 +2390 4 81.34 597.5 9.25 0.54 2389 +2391 4 80.58 599.45 8.0 0.54 2390 +2392 4 79.34 601.89 8.2 0.54 2391 +2393 4 78.44 602.79 6.85 0.54 2392 +2394 4 20.72 483.94 23.94 0.755 2323 +2395 4 19.2 485.14 24.21 0.755 2394 +2396 4 16.73 486.68 24.28 0.755 2395 +2397 4 15.18 489.43 24.38 0.755 2396 +2398 4 14.35 490.85 23.92 0.755 2397 +2399 4 12.92 492.26 23.58 0.755 2398 +2400 4 11.82 493.95 23.63 0.755 2399 +2401 4 9.92 496.43 23.29 0.755 2400 +2402 4 7.41 498.92 23.01 0.755 2401 +2403 4 5.5 501.41 22.6 0.755 2402 +2404 4 4.59 502.93 22.83 0.755 2403 +2405 4 3.9 503.93 22.08 0.755 2404 +2406 4 3.28 506.96 22.44 0.755 2405 +2407 4 1.99 508.53 22.03 0.755 2406 +2408 4 -0.01 509.91 22.05 0.755 2407 +2409 4 -1.77 511.36 21.36 0.755 2408 +2410 4 -4.16 512.8 20.74 0.755 2409 +2411 4 -6.66 514.37 20.37 0.755 2410 +2412 4 -9.32 516.4 20.06 0.755 2411 +2413 4 -11.82 518.26 19.87 0.755 2412 +2414 4 -14.28 520.09 20.05 0.755 2413 +2415 4 -16.46 522.25 20.0 0.755 2414 +2416 4 -18.6 524.05 20.3 0.755 2415 +2417 4 -20.89 525.7 20.67 0.755 2416 +2418 4 -23.94 527.8 21.16 0.755 2417 +2419 4 -26.93 529.84 20.72 0.755 2418 +2420 4 -29.22 531.8 21.05 0.755 2419 +2421 4 -29.98 534.08 21.35 0.755 2420 +2422 4 -30.75 534.84 20.96 0.755 2421 +2423 4 -31.21 536.5 21.16 0.755 2422 +2424 4 -30.76 540.01 21.46 0.755 2423 +2425 4 -30.25 542.53 20.68 0.755 2424 +2426 4 -30.3 545.32 20.51 0.755 2425 +2427 4 -30.29 546.84 19.14 0.755 2426 +2428 4 -30.31 549.89 19.29 0.755 2427 +2429 4 -29.75 552.96 19.23 0.755 2428 +2430 4 -30.09 554.54 18.9 0.755 2429 +2431 4 -31.06 556.7 18.74 0.755 2430 +2432 4 -32.64 557.96 18.4 0.755 2431 +2433 4 -32.86 561.2 18.21 0.755 2432 +2434 4 -33.38 564.45 17.96 0.755 2433 +2435 4 -34.04 566.93 17.68 0.755 2434 +2436 4 -33.96 570.49 17.41 0.755 2435 +2437 4 -33.17 573.98 16.38 0.755 2436 +2438 4 -32.45 577.82 16.32 0.755 2437 +2439 4 -32.12 579.92 15.2 0.755 2438 +2440 4 -32.25 582.78 14.22 0.755 2439 +2441 4 -32.01 584.97 13.8 0.755 2440 +2442 4 -31.58 586.68 13.62 0.755 2441 +2443 4 -30.45 589.2 12.94 0.755 2442 +2444 4 -29.95 590.83 11.99 0.755 2443 +2445 4 -29.68 592.4 11.66 0.755 2444 +2446 4 -29.88 595.32 11.58 0.755 2445 +2447 4 -29.65 597.51 11.17 0.755 2446 +2448 4 -28.28 599.5 11.17 0.755 2447 +2449 4 -26.84 601.72 10.49 0.755 2448 +2450 4 -27.0 604.61 10.79 0.755 2449 +2451 4 -26.27 606.94 10.56 0.755 2450 +2452 4 -25.77 609.69 10.64 0.755 2451 +2453 4 -26.39 612.12 10.93 0.755 2452 +2454 4 -27.3 614.54 11.26 0.755 2453 +2455 4 -28.75 616.58 10.76 0.755 2454 +2456 4 -29.58 619.82 10.55 0.755 2455 +2457 4 -29.82 622.48 10.07 0.755 2456 +2458 4 -30.14 625.24 10.14 0.755 2457 +2459 4 -31.18 628.09 9.23 0.755 2458 +2460 4 -31.97 631.59 9.5 0.755 2459 +2461 4 -33.21 634.65 9.68 0.755 2460 +2462 4 -34.46 637.08 9.95 0.755 2461 +2463 4 -34.52 640.79 9.65 0.755 2462 +2464 4 -35.78 643.25 9.62 0.755 2463 +2465 4 -36.33 645.32 8.9 0.755 2464 +2466 4 -37.28 647.47 8.89 0.755 2465 +2467 4 -38.71 650.71 8.74 0.755 2466 +2468 4 -39.06 654.69 8.85 0.755 2467 +2469 4 -38.94 658.81 9.09 0.755 2468 +2470 4 -38.69 661.92 8.7 0.755 2469 +2471 4 -38.58 665.73 8.9 0.755 2470 +2472 4 -38.48 669.28 8.79 0.755 2471 +2473 4 -36.45 674.25 8.18 0.755 2472 +2474 4 -35.23 677.91 8.42 0.755 2473 +2475 4 -35.36 680.69 7.11 0.755 2474 +2476 4 -35.11 684.39 6.85 0.755 2475 +2477 4 -35.23 686.32 7.57 0.755 2476 +2478 4 -35.07 688.29 7.83 0.755 2477 +2479 4 -35.04 690.69 6.85 0.755 2478 +2480 4 -34.86 693.24 5.88 0.755 2479 +2481 4 -34.95 696.08 5.1 0.755 2480 +2482 4 -35.02 698.27 4.64 0.755 2481 +2483 4 -34.65 700.63 4.07 0.755 2482 +2484 4 -34.07 703.1 3.9 0.755 2483 +2485 4 -32.44 705.74 2.11 0.755 2484 +2486 4 -30.6 706.97 2.06 0.755 2485 +2487 4 -28.65 708.68 1.9 0.755 2486 +2488 4 -27.71 709.59 0.45 0.755 2487 +2489 4 -25.75 710.99 0.26 0.755 2488 +2490 4 -24.15 712.43 -0.41 0.755 2489 +2491 4 -21.64 713.91 -1.26 0.755 2490 +2492 4 -20.49 715.5 -1.96 0.755 2491 +2493 4 -19.15 716.91 -2.25 0.755 2492 +2494 4 -17.57 718.38 -3.09 0.755 2493 +2495 4 -15.77 719.65 -3.57 0.755 2494 +2496 4 -14.31 720.93 -4.04 0.755 2495 +2497 4 -13.02 722.09 -4.96 0.755 2496 +2498 4 -12.3 722.91 -5.48 0.755 2497 +2499 4 0.45 311.01 18.62 0.975 2100 +2500 4 -0.41 312.78 17.74 0.975 2499 +2501 4 -1.24 313.6 17.23 0.975 2500 +2502 4 -1.75 314.11 16.64 0.975 2501 +2503 4 -1.81 316.3 16.33 0.975 2502 +2504 4 -1.73 318.05 15.65 0.975 2503 +2505 4 -2.05 319.58 15.76 0.975 2504 +2506 4 -2.58 321.63 15.25 0.975 2505 +2507 4 -3.23 322.86 15.13 0.975 2506 +2508 4 -4.25 324.19 14.06 0.865 2507 +2509 4 -5.18 325.71 14.3 0.865 2508 +2510 4 -5.49 328.14 14.56 0.865 2509 +2511 4 -4.58 331.49 14.81 0.865 2510 +2512 4 -3.58 333.83 14.42 0.865 2511 +2513 4 -3.49 335.87 13.94 0.865 2512 +2514 4 -3.81 338.62 14.08 0.865 2513 +2515 4 -5.36 341.96 14.47 0.865 2514 +2516 4 -6.25 344.68 13.45 0.865 2515 +2517 4 -7.41 347.64 12.94 0.865 2516 +2518 4 -8.21 349.66 12.76 0.865 2517 +2519 4 -9.21 351.85 12.23 0.865 2518 +2520 4 -9.95 353.8 11.13 0.865 2519 +2521 4 -10.57 356.85 11.42 0.865 2520 +2522 4 -11.34 358.81 11.68 0.865 2521 +2523 4 -12.0 361.28 11.53 0.865 2522 +2524 4 -14.22 363.19 11.01 0.865 2523 +2525 4 -15.83 365.69 10.49 0.865 2524 +2526 4 -18.06 369.41 10.07 0.865 2525 +2527 4 -19.29 373.04 10.54 0.865 2526 +2528 4 -22.14 377.07 10.14 0.865 2527 +2529 4 -23.1 379.24 9.98 0.865 2528 +2530 4 -23.53 380.89 8.84 0.865 2529 +2531 4 -23.88 383.35 8.72 0.865 2530 +2532 4 -24.53 387.03 8.77 0.865 2531 +2533 4 -24.08 389.32 8.95 0.865 2532 +2534 4 -24.09 391.45 9.16 0.865 2533 +2535 4 -24.86 394.03 9.48 0.865 2534 +2536 4 -25.48 395.85 8.05 0.865 2535 +2537 4 -26.13 397.42 7.81 0.865 2536 +2538 4 -26.68 399.8 7.1 0.865 2537 +2539 4 -26.49 400.51 6.33 0.865 2538 +2540 4 -25.58 402.04 6.39 0.865 2539 +2541 4 -24.74 402.73 7.22 0.865 2540 +2542 4 -24.29 404.69 7.51 0.865 2541 +2543 4 -23.23 406.69 7.6 0.755 2542 +2544 4 -22.88 408.46 8.29 0.755 2543 +2545 4 -22.43 409.53 8.35 0.755 2544 +2546 4 -21.7 410.33 8.05 0.755 2545 +2547 4 -20.98 411.14 7.53 0.755 2546 +2548 4 -20.3 412.0 6.66 0.755 2547 +2549 4 -19.27 412.5 6.31 0.755 2548 +2550 4 -18.52 412.96 6.2 0.865 2549 +2551 4 -17.16 414.95 6.27 0.865 2550 +2552 4 -15.9 417.06 5.15 0.865 2551 +2553 4 -14.49 419.23 4.55 0.865 2552 +2554 4 -14.04 422.43 4.83 0.865 2553 +2555 4 -13.9 425.02 3.32 0.865 2554 +2556 4 -14.02 426.97 2.32 0.865 2555 +2557 4 -14.02 429.4 1.04 0.865 2556 +2558 4 -13.44 431.27 0.72 0.865 2557 +2559 4 -12.65 432.3 -0.38 0.865 2558 +2560 4 -11.8 433.29 -1.12 0.865 2559 +2561 4 -10.33 434.26 -1.62 0.865 2560 +2562 4 -9.34 435.12 -2.54 0.865 2561 +2563 4 -7.91 435.84 -3.57 0.865 2562 +2564 4 -6.58 436.96 -3.96 0.865 2563 +2565 4 -5.57 439.61 -4.4 0.865 2564 +2566 4 -5.38 440.92 -5.34 0.865 2565 +2567 4 -4.84 441.91 -6.06 0.865 2566 +2568 4 -4.81 443.41 -7.21 0.865 2567 +2569 4 -4.87 444.69 -7.75 0.865 2568 +2570 4 -5.13 445.57 -8.86 0.865 2569 +2571 4 -5.01 446.65 -8.98 0.865 2570 +2572 4 -4.96 447.81 -9.93 0.865 2571 +2573 4 -5.06 449.15 -10.93 0.865 2572 +2574 4 -4.75 449.29 -11.62 0.54 2573 +2575 4 -3.29 449.98 -12.38 0.54 2574 +2576 4 -2.58 450.49 -13.0 0.54 2575 +2577 4 -2.33 450.54 -13.46 0.54 2576 +2578 4 -1.64 451.07 -14.22 0.54 2577 +2579 4 -0.5 452.39 -15.11 0.54 2578 +2580 4 -0.14 453.85 -15.99 0.54 2579 +2581 4 -0.05 454.99 -16.57 0.54 2580 +2582 4 0.18 455.67 -17.28 0.54 2581 +2583 4 0.48 455.98 -17.35 0.54 2582 +2584 4 0.13 456.62 -17.63 0.54 2583 +2585 4 0.62 457.37 -18.97 0.54 2584 +2586 4 -0.14 458.15 -20.56 0.54 2585 +2587 4 -0.75 459.36 -22.05 0.54 2586 +2588 4 -1.78 460.98 -22.94 0.54 2587 +2589 4 -1.54 462.27 -23.57 0.54 2588 +2590 4 -0.84 464.32 -24.05 0.54 2589 +2591 4 -1.11 464.9 -25.33 0.54 2590 +2592 4 -0.49 465.5 -25.11 0.54 2591 +2593 4 -0.34 466.55 -24.94 0.54 2592 +2594 4 -0.49 467.31 -26.45 0.54 2593 +2595 4 -0.39 468.13 -26.97 0.54 2594 +2596 4 -0.74 470.01 -27.28 0.54 2595 +2597 4 -0.97 470.83 -27.87 0.54 2596 +2598 4 -1.67 472.13 -28.58 0.54 2597 +2599 4 -0.75 473.06 -28.65 0.54 2598 +2600 4 0.2 473.93 -29.71 0.54 2599 +2601 4 0.79 474.26 -29.96 0.54 2600 +2602 4 2.11 475.08 -30.54 0.54 2601 +2603 4 2.81 475.31 -31.25 0.54 2602 +2604 4 3.67 475.98 -31.81 0.54 2603 +2605 4 5.03 477.05 -31.82 0.54 2604 +2606 4 5.69 477.93 -32.93 0.54 2605 +2607 4 6.67 479.09 -33.81 0.54 2606 +2608 4 7.67 481.74 -34.25 0.54 2607 +2609 4 8.44 482.82 -35.8 0.54 2608 +2610 4 9.07 484.33 -37.16 0.54 2609 +2611 4 9.71 485.22 -38.41 0.54 2610 +2612 4 10.16 485.67 -38.41 0.54 2611 +2613 4 11.12 486.86 -39.51 0.54 2612 +2614 4 11.62 487.59 -40.69 0.54 2613 +2615 4 12.5 488.85 -40.96 0.54 2614 +2616 4 13.86 490.84 -40.89 0.54 2615 +2617 4 14.78 491.76 -40.88 0.54 2616 +2618 4 15.2 492.24 -41.18 0.54 2617 +2619 4 15.27 493.08 -41.94 0.54 2618 +2620 4 16.1 493.79 -42.86 0.54 2619 +2621 4 16.49 494.33 -43.6 0.54 2620 +2622 4 16.5 494.62 -45.07 0.54 2621 +2623 4 17.73 495.24 -45.13 0.54 2622 +2624 4 18.31 495.88 -45.34 0.54 2623 +2625 4 18.85 496.56 -46.09 0.54 2624 +2626 4 19.69 497.56 -46.82 0.54 2625 +2627 4 20.38 498.39 -47.49 0.54 2626 +2628 4 21.06 499.85 -48.25 0.54 2627 +2629 4 21.6 501.14 -48.84 0.54 2628 +2630 4 22.39 502.73 -48.76 0.54 2629 +2631 4 22.61 503.49 -49.38 0.54 2630 +2632 4 23.96 504.88 -49.45 0.54 2631 +2633 4 25.57 508.45 -49.93 0.54 2632 +2634 4 26.97 511.91 -50.78 0.54 2633 +2635 4 27.71 513.93 -50.89 0.54 2634 +2636 4 28.54 515.53 -51.56 0.54 2635 +2637 4 28.97 516.64 -51.94 0.54 2636 +2638 4 29.65 518.08 -52.54 0.54 2637 +2639 4 30.79 519.69 -53.39 0.54 2638 +2640 4 32.95 523.04 -54.55 0.54 2639 +2641 4 33.78 525.84 -55.04 0.54 2640 +2642 4 34.99 529.21 -56.49 0.54 2641 +2643 4 35.75 531.81 -57.97 0.54 2642 +2644 4 36.13 533.87 -58.56 0.54 2643 +2645 4 35.91 537.95 -58.37 0.54 2644 +2646 4 36.37 539.31 -59.71 0.54 2645 +2647 4 37.22 541.51 -60.26 0.54 2646 +2648 4 37.72 543.15 -61.28 0.54 2647 +2649 4 38.29 543.73 -61.27 0.54 2648 +2650 4 38.41 544.21 -61.54 0.11 2649 +2651 4 37.6 545.31 -61.8 0.435 2650 +2652 4 36.83 548.18 -61.46 0.435 2651 +2653 4 36.22 550.02 -61.31 0.435 2652 +2654 4 35.87 550.37 -61.69 0.435 2653 +2655 4 35.35 553.01 -61.99 0.435 2654 +2656 4 34.88 554.08 -61.91 0.435 2655 +2657 4 35.14 556.25 -62.18 0.435 2656 +2658 4 35.21 557.09 -63.01 0.435 2657 +2659 4 35.17 557.73 -63.25 0.435 2658 +2660 4 35.41 559.32 -63.79 0.435 2659 +2661 4 35.81 559.85 -64.46 0.435 2660 +2662 4 35.76 560.51 -64.85 0.435 2661 +2663 4 36.27 561.21 -65.89 0.435 2662 +2664 4 36.21 562.19 -66.39 0.435 2663 +2665 4 36.15 562.25 -67.05 0.435 2664 +2666 4 36.99 563.24 -67.71 0.435 2665 +2667 4 38.29 565.32 -68.54 0.435 2666 +2668 4 38.96 565.85 -67.72 0.435 2667 +2669 4 39.41 566.93 -67.72 0.435 2668 +2670 4 39.67 567.27 -68.17 0.435 2669 +2671 4 39.73 567.54 -69.29 0.435 2670 +2672 4 40.12 568.06 -69.95 0.435 2671 +2673 4 40.64 568.76 -70.84 0.435 2672 +2674 4 40.89 569.12 -71.43 0.435 2673 +2675 4 41.23 569.41 -72.72 0.435 2674 +2676 4 42.55 570.23 -73.3 0.435 2675 +2677 4 43.04 570.96 -74.47 0.435 2676 +2678 4 44.59 571.87 -75.89 0.435 2677 +2679 4 46.21 572.71 -76.57 0.435 2678 +2680 4 47.96 574.0 -77.28 0.435 2679 +2681 4 48.98 574.52 -77.86 0.435 2680 +2682 4 49.68 575.06 -78.69 0.435 2681 +2683 4 51.18 576.3 -78.86 0.435 2682 +2684 4 52.38 576.63 -79.02 0.435 2683 +2685 4 53.07 576.56 -79.84 0.435 2684 +2686 4 53.63 576.92 -80.4 0.435 2685 +2687 4 54.5 577.58 -80.94 0.435 2686 +2688 4 38.92 545.0 -61.35 0.54 2649 +2689 4 39.59 545.86 -62.32 0.54 2688 +2690 4 39.83 547.44 -62.8 0.54 2689 +2691 4 40.2 548.91 -63.59 0.54 2690 +2692 4 39.93 549.79 -64.76 0.54 2691 +2693 4 40.73 551.11 -64.25 0.54 2692 +2694 4 42.55 552.96 -64.25 0.54 2693 +2695 4 44.21 554.65 -64.3 0.54 2694 +2696 4 44.58 555.52 -65.24 0.54 2695 +2697 4 45.64 557.2 -65.18 0.54 2696 +2698 4 46.81 559.99 -66.97 0.54 2697 +2699 4 48.13 562.04 -67.51 0.54 2698 +2700 4 49.0 564.21 -67.81 0.54 2699 +2701 4 50.03 565.33 -68.19 0.54 2700 +2702 4 50.9 566.28 -68.55 0.54 2701 +2703 4 52.68 567.85 -68.94 0.54 2702 +2704 4 56.02 571.54 -68.89 0.54 2703 +2705 4 58.84 573.92 -69.67 0.54 2704 +2706 4 60.43 575.37 -70.44 0.54 2705 +2707 4 61.6 576.65 -70.87 0.54 2706 +2708 4 63.19 579.03 -71.7 0.54 2707 +2709 4 63.94 579.81 -71.76 0.54 2708 +2710 4 65.4 581.1 -72.45 0.54 2709 +2711 4 66.7 581.94 -73.17 0.54 2710 +2712 4 69.07 583.76 -73.37 0.54 2711 +2713 4 70.55 584.43 -73.95 0.54 2712 +2714 4 72.2 585.53 -74.23 0.54 2713 +2715 4 73.5 586.37 -74.95 0.54 2714 +2716 4 74.67 587.34 -75.5 0.54 2715 +2717 4 76.08 588.98 -76.59 0.54 2716 +2718 4 78.19 590.26 -76.9 0.54 2717 +2719 4 79.84 591.64 -76.99 0.54 2718 +2720 4 80.71 592.31 -77.6 0.54 2719 +2721 4 82.15 593.33 -78.55 0.54 2720 +2722 4 82.64 594.06 -79.73 0.54 2721 +2723 4 84.0 594.84 -79.86 0.54 2722 +2724 4 84.73 595.34 -80.26 0.54 2723 +2725 4 85.78 596.12 -80.35 0.54 2724 +2726 4 86.62 596.81 -81.11 0.54 2725 +2727 4 -5.68 450.37 -10.83 0.755 2573 +2728 4 -7.62 451.97 -11.56 0.755 2727 +2729 4 -8.69 452.12 -11.59 0.755 2728 +2730 4 -10.72 453.23 -11.83 0.755 2729 +2731 4 -11.21 454.92 -11.91 0.755 2730 +2732 4 -12.07 457.6 -12.63 0.755 2731 +2733 4 -12.78 459.52 -13.43 0.755 2732 +2734 4 -13.79 461.13 -14.09 0.755 2733 +2735 4 -14.92 462.85 -14.51 0.755 2734 +2736 4 -16.0 466.65 -14.1 0.755 2735 +2737 4 -17.08 471.05 -13.58 0.65 2736 +2738 4 -17.55 473.64 -13.28 0.65 2737 +2739 4 -18.17 476.06 -12.99 0.65 2738 +2740 4 -18.93 477.41 -12.79 0.65 2739 +2741 4 -18.92 478.03 -12.72 0.65 2740 +2742 4 -19.99 479.08 -12.52 0.65 2741 +2743 4 -20.0 481.22 -12.32 0.65 2742 +2744 4 -20.47 484.1 -11.99 0.65 2743 +2745 4 -21.39 487.12 -11.61 0.65 2744 +2746 4 -22.53 489.47 -12.03 0.65 2745 +2747 4 -23.69 491.23 -12.66 0.65 2746 +2748 4 -25.08 494.72 -12.35 0.65 2747 +2749 4 -26.47 498.82 -11.82 0.65 2748 +2750 4 -27.38 501.55 -11.47 0.65 2749 +2751 4 -28.46 503.51 -11.17 0.65 2750 +2752 4 -29.07 504.49 -11.02 0.65 2751 +2753 4 -28.35 504.98 -11.42 0.54 2752 +2754 4 -27.59 505.75 -11.41 0.54 2753 +2755 4 -26.52 506.52 -11.44 0.54 2754 +2756 4 -25.61 507.43 -11.43 0.54 2755 +2757 4 -25.62 508.66 -11.31 0.54 2756 +2758 4 -25.5 509.45 -11.63 0.54 2757 +2759 4 -24.78 510.86 -11.86 0.54 2758 +2760 4 -24.04 512.26 -12.01 0.54 2759 +2761 4 -22.72 514.91 -12.41 0.54 2760 +2762 4 -21.39 515.71 -12.76 0.54 2761 +2763 4 -20.04 517.11 -12.96 0.54 2762 +2764 4 -18.72 518.54 -13.41 0.54 2763 +2765 4 -17.36 519.63 -13.58 0.54 2764 +2766 4 -16.54 521.23 -14.33 0.54 2765 +2767 4 -15.85 523.9 -14.89 0.54 2766 +2768 4 -15.57 526.04 -14.86 0.54 2767 +2769 4 -14.71 528.24 -15.25 0.54 2768 +2770 4 -14.13 529.49 -15.49 0.54 2769 +2771 4 -11.55 531.19 -15.62 0.54 2770 +2772 4 -9.73 533.95 -15.53 0.54 2771 +2773 4 -8.89 536.13 -15.92 0.54 2772 +2774 4 -8.8 538.78 -16.35 0.54 2773 +2775 4 -7.45 543.52 -16.1 0.54 2774 +2776 4 -7.16 546.86 -15.79 0.54 2775 +2777 4 -6.71 550.38 -15.49 0.54 2776 +2778 4 -6.26 552.04 -15.37 0.54 2777 +2779 4 -6.58 554.78 -15.08 0.54 2778 +2780 4 -6.43 557.07 -14.86 0.54 2779 +2781 4 -5.68 559.05 -14.74 0.54 2780 +2782 4 -4.0 560.12 -14.79 0.54 2781 +2783 4 -3.71 562.26 -14.61 0.54 2782 +2784 4 -3.24 565.75 -14.08 0.54 2783 +2785 4 -3.1 568.93 -13.79 0.54 2784 +2786 4 -2.49 570.47 -13.69 0.54 2785 +2787 4 -2.65 573.04 -13.35 0.54 2786 +2788 4 -3.35 576.46 -12.2 0.54 2787 +2789 4 -3.06 579.81 -11.9 0.54 2788 +2790 4 -1.85 581.94 -11.8 0.54 2789 +2791 4 -0.34 585.61 -11.58 0.54 2790 +2792 4 1.06 590.57 -10.55 0.54 2791 +2793 4 1.36 592.1 -10.43 0.54 2792 +2794 4 2.42 593.18 -10.43 0.54 2793 +2795 4 3.33 594.09 -10.42 0.54 2794 +2796 4 4.09 596.99 -10.21 0.54 2795 +2797 4 5.18 601.67 -9.4 0.54 2796 +2798 4 6.39 605.03 -9.1 0.54 2797 +2799 4 8.17 608.71 -7.63 0.54 2798 +2800 4 8.66 611.57 -6.94 0.54 2799 +2801 4 8.85 612.9 -6.37 0.54 2800 +2802 4 8.73 614.22 -5.85 0.54 2801 +2803 4 8.63 615.53 -5.1 0.54 2802 +2804 4 8.21 617.15 -4.3 0.54 2803 +2805 4 7.77 618.49 -3.91 0.54 2804 +2806 4 -29.22 505.49 -10.91 0.65 2752 +2807 4 -30.38 510.28 -11.25 0.65 2806 +2808 4 -30.54 512.56 -11.01 0.65 2807 +2809 4 -31.88 517.53 -11.53 0.65 2808 +2810 4 -32.81 520.25 -11.18 0.65 2809 +2811 4 -34.59 524.5 -10.76 0.65 2810 +2812 4 -35.11 527.47 -11.17 0.65 2811 +2813 4 -36.54 531.0 -11.15 0.65 2812 +2814 4 -37.46 534.04 -12.51 0.65 2813 +2815 4 -38.11 536.8 -12.49 0.65 2814 +2816 4 -39.15 539.05 -13.45 0.65 2815 +2817 4 -39.8 541.51 -13.53 0.65 2816 +2818 4 -41.08 544.31 -13.82 0.65 2817 +2819 4 -43.01 547.42 -14.25 0.65 2818 +2820 4 -43.05 550.19 -14.34 0.65 2819 +2821 4 -43.57 552.83 -14.65 0.65 2820 +2822 4 -44.35 554.81 -14.47 0.65 2821 +2823 4 -45.33 556.4 -14.97 0.65 2822 +2824 4 -45.18 558.68 -14.83 0.65 2823 +2825 4 -45.56 560.87 -15.27 0.65 2824 +2826 4 -46.54 563.05 -15.64 0.65 2825 +2827 4 -47.8 564.91 -15.72 0.65 2826 +2828 4 -48.62 566.93 -15.99 0.65 2827 +2829 4 -49.69 569.52 -15.7 0.65 2828 +2830 4 -51.23 572.23 -15.3 0.65 2829 +2831 4 -52.47 575.28 -15.03 0.65 2830 +2832 4 -52.71 577.04 -15.75 0.65 2831 +2833 4 -52.46 581.04 -15.91 0.65 2832 +2834 4 -52.79 585.91 -15.41 0.65 2833 +2835 4 -53.43 588.98 -15.36 0.65 2834 +2836 4 -54.13 591.48 -15.95 0.65 2835 +2837 4 -54.63 593.8 -16.06 0.65 2836 +2838 4 -55.34 595.72 -16.87 0.65 2837 +2839 4 -56.04 597.02 -17.65 0.65 2838 +2840 4 -56.59 599.4 -18.27 0.65 2839 +2841 4 -58.6 603.8 -17.89 0.65 2840 +2842 4 -59.74 607.65 -17.79 0.65 2841 +2843 4 -61.44 612.95 -17.11 0.65 2842 +2844 4 -62.51 614.61 -16.85 0.65 2843 +2845 4 -64.65 617.03 -16.41 0.65 2844 +2846 4 -66.74 620.92 -16.99 0.65 2845 +2847 4 -68.28 626.39 -16.31 0.65 2846 +2848 4 -69.9 630.41 -16.74 0.65 2847 +2849 4 -70.57 634.1 -16.78 0.65 2848 +2850 4 -72.15 636.28 -17.02 0.65 2849 +2851 4 -74.14 639.76 -16.5 0.65 2850 +2852 4 -76.29 642.78 -16.08 0.65 2851 +2853 4 -80.28 645.82 -15.8 0.65 2852 +2854 4 -83.81 648.7 -15.27 0.65 2853 +2855 4 -86.4 652.46 -14.66 0.65 2854 +2856 4 -86.7 653.63 -16.33 0.65 2855 +2857 4 -88.69 656.8 -15.83 0.65 2856 +2858 4 -90.16 660.37 -16.26 0.65 2857 +2859 4 -90.83 664.69 -16.31 0.65 2858 +2860 4 -92.21 668.77 -15.78 0.65 2859 +2861 4 -92.89 672.19 -16.15 0.65 2860 +2862 4 -94.32 674.81 -16.28 0.65 2861 +2863 4 -95.39 676.78 -15.99 0.65 2862 +2864 4 -96.13 678.12 -17.23 0.65 2863 +2865 4 -97.23 680.42 -17.13 0.65 2864 +2866 4 -98.4 681.58 -18.04 0.65 2865 +2867 4 -99.66 684.65 -18.01 0.65 2866 +2868 4 -100.65 686.24 -18.59 0.65 2867 +2869 4 -101.65 687.22 -19.15 0.65 2868 +2870 4 -101.87 688.35 -19.78 0.65 2869 +2871 4 -102.17 690.47 -19.47 0.65 2870 +2872 4 -102.02 693.06 -19.23 0.65 2871 +2873 4 -102.79 694.41 -19.03 0.65 2872 +2874 4 -103.4 696.84 -18.74 0.65 2873 +2875 4 -103.41 699.89 -18.43 0.65 2874 +2876 4 -103.28 701.26 -18.4 0.65 2875 +2877 4 -102.84 703.86 -18.25 0.65 2876 +2878 4 -102.62 706.68 -18.84 0.65 2877 +2879 4 -102.17 708.97 -18.65 0.65 2878 +2880 4 -101.57 712.62 -18.36 0.65 2879 +2881 4 -101.12 716.13 -18.05 0.65 2880 +2882 4 -101.59 719.31 -17.7 0.65 2881 +2883 4 -101.45 723.13 -17.34 0.65 2882 +2884 4 -100.55 727.08 -17.04 0.65 2883 +2885 4 -99.54 730.7 -16.84 0.65 2884 +2886 4 -99.0 736.53 -16.86 0.65 2885 +2887 4 -98.71 738.97 -16.65 0.65 2886 +2888 4 -97.84 739.93 -17.09 0.65 2887 +2889 4 -96.18 741.32 -17.26 0.65 2888 +2890 4 -94.52 743.93 -17.16 0.65 2889 +2891 4 -93.56 748.14 -17.82 0.65 2890 +2892 4 -93.31 750.02 -18.19 0.65 2891 +2893 4 -92.56 752.01 -18.14 0.65 2892 +2894 4 -91.61 753.82 -19.26 0.65 2893 +2895 4 -90.7 754.74 -19.33 0.65 2894 +2896 4 -103.71 688.65 -19.73 0.65 2869 +2897 4 -105.4 690.34 -19.64 0.65 2896 +2898 4 -107.22 692.14 -20.81 0.65 2897 +2899 4 -108.98 692.97 -21.48 0.65 2898 +2900 4 -110.42 694.08 -21.92 0.65 2899 +2901 4 -112.79 695.52 -22.47 0.65 2900 +2902 4 -114.23 696.65 -22.99 0.65 2901 +2903 4 -115.02 697.43 -23.2 0.65 2902 +2904 4 -116.57 700.18 -23.02 0.65 2903 +2905 4 -117.92 701.51 -24.12 0.65 2904 +2906 4 -118.68 703.48 -23.87 0.65 2905 +2907 4 -119.14 706.06 -23.57 0.65 2906 +2908 4 -118.3 710.09 -23.85 0.65 2907 +2909 4 -117.2 712.04 -24.91 0.65 2908 +2910 4 -116.16 715.54 -24.73 0.65 2909 +2911 4 -115.67 719.32 -25.62 0.65 2910 +2912 4 -115.32 721.72 -26.63 0.65 2911 +2913 4 -114.96 723.78 -27.29 0.65 2912 +2914 4 -114.38 725.05 -27.67 0.65 2913 +2915 4 -113.51 726.6 -27.98 0.65 2914 +2916 4 -113.22 728.44 -27.91 0.65 2915 +2917 4 -112.84 730.5 -28.49 0.65 2916 +2918 4 -27.98 401.37 6.92 0.65 2538 +2919 4 -29.04 402.74 7.15 0.65 2918 +2920 4 -31.79 405.45 7.68 0.65 2919 +2921 4 -34.06 407.7 6.67 0.65 2920 +2922 4 -35.9 409.5 7.01 0.65 2921 +2923 4 -38.35 411.92 7.41 0.65 2922 +2924 4 -41.44 414.68 7.43 0.65 2923 +2925 4 -46.14 419.63 7.14 0.65 2924 +2926 4 -48.43 422.49 7.62 0.65 2925 +2927 4 -48.54 425.34 6.78 0.65 2926 +2928 4 -48.64 428.77 6.22 0.65 2927 +2929 4 -48.07 430.64 5.89 0.65 2928 +2930 4 -47.63 433.53 6.06 0.54 2929 +2931 4 -47.99 435.73 5.77 0.54 2930 +2932 4 -48.6 437.55 4.35 0.54 2931 +2933 4 -49.3 438.85 3.63 0.54 2932 +2934 4 -49.29 439.74 5.46 0.54 2933 +2935 4 -50.1 440.54 5.16 0.54 2934 +2936 4 -50.96 441.39 4.26 0.54 2935 +2937 4 -51.52 442.86 3.39 0.54 2936 +2938 4 -52.49 444.74 3.07 0.54 2937 +2939 4 -53.85 447.31 1.86 0.54 2938 +2940 4 -54.82 448.87 1.56 0.54 2939 +2941 4 -54.78 450.35 0.58 0.54 2940 +2942 4 -55.02 452.7 0.0 0.54 2941 +2943 4 -55.12 454.94 -0.91 0.54 2942 +2944 4 -55.78 456.2 -1.17 0.54 2943 +2945 4 -57.93 457.42 -1.09 0.54 2944 +2946 4 -60.72 460.18 -1.02 0.54 2945 +2947 4 -61.87 463.13 -1.44 0.54 2946 +2948 4 -62.44 464.91 -2.35 0.54 2947 +2949 4 -62.81 466.19 -2.88 0.54 2948 +2950 4 -62.67 466.98 -3.04 0.54 2949 +2951 4 -5.99 292.26 22.29 0.865 2088 +2952 4 -5.25 294.24 22.42 0.865 2951 +2953 4 -4.94 296.38 22.6 0.865 2952 +2954 4 -3.89 299.58 22.82 0.865 2953 +2955 4 -1.99 302.56 22.11 0.865 2954 +2956 4 -0.94 304.26 22.18 0.865 2955 +2957 4 -0.79 306.85 22.41 0.865 2956 +2958 4 -1.4 310.18 22.8 0.865 2957 +2959 4 -2.07 313.26 24.29 0.865 2958 +2960 4 -1.92 315.84 24.61 0.865 2959 +2961 4 -2.08 318.11 24.91 0.865 2960 +2962 4 -2.39 321.15 25.24 0.865 2961 +2963 4 -3.31 324.17 25.7 0.865 2962 +2964 4 -4.07 326.74 26.09 0.65 2963 +2965 4 -6.04 328.69 26.61 0.65 2964 +2966 4 -7.57 332.02 27.16 0.65 2965 +2967 4 -8.07 332.51 28.39 0.65 2966 +2968 4 -9.45 333.87 28.64 0.65 2967 +2969 4 -11.59 335.97 29.04 0.65 2968 +2970 4 -12.81 339.01 29.46 0.65 2969 +2971 4 -14.35 342.33 29.92 0.65 2970 +2972 4 -16.34 344.9 30.36 0.65 2971 +2973 4 -18.01 346.25 30.64 0.65 2972 +2974 4 -19.26 348.09 32.3 0.65 2973 +2975 4 -19.83 349.85 33.05 0.65 2974 +2976 4 -20.38 351.0 33.9 0.65 2975 +2977 4 -21.41 352.01 34.62 0.65 2976 +2978 4 -21.71 352.9 34.81 0.65 2977 +2979 4 -21.97 353.78 35.37 0.65 2978 +2980 4 -21.82 356.05 35.65 0.65 2979 +2981 4 -21.83 358.78 35.92 0.65 2980 +2982 4 -21.29 360.38 36.93 0.65 2981 +2983 4 -20.75 362.49 38.54 0.65 2982 +2984 4 -19.8 363.97 39.11 0.65 2983 +2985 4 -19.08 364.47 40.23 0.65 2984 +2986 4 -18.66 364.64 41.56 0.65 2985 +2987 4 -18.04 365.84 41.93 0.65 2986 +2988 4 -17.67 365.79 42.5 0.65 2987 +2989 4 -17.2 365.91 44.37 0.65 2988 +2990 4 -6.61 91.18 9.77 0.435 1189 +2991 4 -7.98 91.62 9.94 0.435 2990 +2992 4 -8.7 91.42 10.44 0.435 2991 +2993 4 -8.69 91.11 10.56 0.65 2992 +2994 4 -8.95 90.75 11.08 0.65 2993 +2995 4 -8.89 90.09 11.62 0.65 2994 +2996 4 -9.16 89.43 11.96 0.65 2995 +2997 4 -9.56 88.31 12.41 0.65 2996 +2998 4 -9.55 87.99 12.53 0.65 2997 +2999 4 -9.83 87.06 12.69 0.65 2998 +3000 4 -9.81 86.44 12.78 0.65 2999 +3001 4 -9.77 86.09 13.2 0.65 3000 +3002 4 -9.87 85.27 13.65 0.65 3001 +3003 4 -9.68 84.79 13.89 0.65 3002 +3004 4 -9.21 84.32 13.95 0.65 3003 +3005 4 -8.85 83.96 14.57 0.65 3004 +3006 4 -8.62 83.72 15.35 0.65 3005 +3007 4 -8.21 83.31 16.42 0.65 3006 +3008 4 -7.9 82.7 16.39 0.65 3007 +3009 4 -7.85 82.04 16.93 0.65 3008 +3010 4 -7.79 81.68 17.42 0.65 3009 +3011 4 -7.91 80.57 17.78 0.435 3010 +3012 4 -7.99 80.05 18.49 0.435 3011 +3013 4 -7.97 79.73 18.53 0.435 3012 +3014 4 -8.26 79.11 18.65 0.435 3013 +3015 4 -8.4 78.63 18.84 0.435 3014 +3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc b/examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc new file mode 100644 index 0000000..1a48b8f --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc @@ -0,0 +1,2267 @@ +# Original file cell1zr.txt.swc edited by Duncan Donohue using StdSwc version 1.21 on 5/25/05. +# Irregularities and fixes documented in cell1zr.txt.swc.std. See StdSwc1.21.doc for more information. +# +# Amaral to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu +# Original fileName:H:\\cells\\ca3\\henze\\cell1zr.txt +# +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 -1.135 21 1.692 6.603 -1 + 2 2 0 0 0 0.9 1 + 3 2 -1.5 0 -2 0.9 2 + 4 2 -2.5 -6.5 -2 0.9 3 + 5 2 -7.5 -10.5 0 0.9 4 + 6 2 -10 -14 -7 0.9 5 + 7 2 -10 -18.5 -13.5 0.9 6 + 8 2 -10.5 -22 -17 0.9 7 + 9 2 -9 -26 -18 0.9 8 + 10 2 -7.5 -29.5 -19 0.3 9 + 11 2 -6.5 -36.5 -13.5 0.3 10 + 12 2 -5.5 -44.5 -14.5 0.3 11 + 13 2 -8 -50.5 -14.5 0.3 12 + 14 2 -9.5 -54 -17 0.3 13 + 15 2 -8.5 -60 -18 0.3 14 + 16 2 -9.5 -67 -18 0.3 15 + 17 2 -9 -77.5 -19 0.3 16 + 18 2 -8 -86.5 -20 0.3 17 + 19 2 -5.5 -93 -20 0.3 18 + 20 2 -6.5 -100 -19 0.3 19 + 21 2 -6 -106 -19 0.3 20 + 22 2 -7.5 -110.5 -19 0.3 21 + 23 2 -7.5 -116 -19 0.3 22 + 24 2 -8 -118.5 -19 0.3 23 + 25 2 -9.5 -125 -22 0.3 24 + 26 2 -11.5 -129.5 -22 0.3 25 + 27 2 -16.5 -133.5 -22 0.3 26 + 28 2 -20 -138 -30.5 0.3 27 + 29 2 -21 -142 -30.5 0.3 28 + 30 2 -20 -144 -30.5 0.3 29 + 31 2 -21 -148.5 -29.5 0.3 30 + 32 2 -22 -151 -29.5 0.2 31 + 33 2 -21 -155.5 -29.5 0.2 32 + 34 2 -19.5 -160 -28.5 0.2 33 + 35 2 -5.5 -124.5 -19 0.3 24 + 36 2 -4 -130 -19 0.3 35 + 37 2 -2.5 -135 -20 0.3 36 + 38 2 -4 -140 -20 0.3 37 + 39 2 -4 -143.5 -20 0.3 38 + 40 2 3 -151 -15.5 0.3 39 + 41 2 8.5 -157 -10.5 0.3 40 + 42 2 11.5 -162 -10.5 0.3 41 + 43 2 15.5 -165 -10.5 0.3 42 + 44 2 20 -164.5 -9.5 0.2 43 + 45 2 -4 -36 -10.5 0.55 9 + 46 2 -2.5 -41 -10.5 0.55 45 + 47 2 3.5 -44 -10.5 0.55 46 + 48 2 6.5 -47.5 -10.5 0.55 47 + 49 2 10.5 -49.5 -9.5 0.55 48 + 50 2 13 -55 -15.5 0.55 49 + 51 2 16 -60 -15.5 0.4 50 + 52 2 22 -63 -19 0.4 51 + 53 2 28 -67.5 -19 0.4 52 + 54 2 40 -69.5 -18 0.4 53 + 55 2 48 -69 -18 0.4 54 + 56 2 57 -69.5 -17 0.4 55 + 57 2 68 -69.5 -12.5 0.4 56 + 58 2 73 -71 -12.5 0.4 57 + 59 2 79.5 -74.5 -12.5 0.4 58 + 60 2 84.5 -76 -12.5 0.4 59 + 61 2 86.5 -77 -12.5 0.4 60 + 62 2 87.5 -80.5 -11.5 0.4 61 + 63 2 91 -82.5 -11.5 0.4 62 + 64 2 94.5 -85 -6 0.4 63 + 65 2 99.5 -90 -5 0.4 64 + 66 2 104 -93 0 0.4 65 + 67 2 105.5 -96.5 3.5 0.3 66 + 68 2 106.5 -102 6.5 0.3 67 + 69 2 108.5 -107.5 13 0.3 68 + 70 2 108.5 -113 18 0.3 69 + 71 2 111.5 -115.5 22.5 0.3 70 + 72 2 115.5 -123 28.5 0.3 71 + 73 2 122 -128 36 0.3 72 + 74 2 123.5 -132.5 38.5 0.3 73 + 75 2 134.5 -139 38.5 0.3 74 + 76 2 138 -141.5 46.5 0.3 75 + 77 2 142 -143 46.5 0.3 76 + 78 2 148.5 -148 52 0.3 77 + 79 2 153.5 -148.5 50 0.3 78 + 80 2 158 -150 56.5 0.3 79 + 81 2 162 -151 59.5 0.3 80 + 82 2 167 -152 61.5 0.3 81 + 83 2 171 -151.5 61.5 0.3 82 + 84 2 176 -153 63.5 0.3 83 + 85 2 182 -155 64.5 0.3 84 + 86 2 184.5 -154 66 0.3 85 + 87 2 192.5 -156.5 64.5 0.3 86 + 88 2 193 -157 63.5 0.3 87 + 89 2 197 -155 62.5 0.3 88 + 90 2 205.5 -156 69 0.3 89 + 91 2 211 -157.5 70 0.3 90 + 92 2 213.5 -156.5 70 0.3 91 + 93 2 218 -158 75.5 0.3 92 + 94 2 223.5 -159.5 74 0.3 93 + 95 2 229.5 -161 73 0.3 94 + 96 2 236 -161 74 0.3 95 + 97 2 244 -160 75.5 0.3 96 + 98 2 254 -159 79.5 0.3 97 + 99 2 262.5 -158.5 79.5 0.3 98 + 100 2 271.5 -160.5 82.5 0.3 99 + 101 2 278 -159.5 85 0.3 100 + 102 2 285 -157 89 0.3 101 + 103 2 290.5 -154 89 0.3 102 + 104 2 298.5 -153 90 0.3 103 + 105 2 303 -151.5 90 0.3 104 + 106 2 309.5 -149 90 0.3 105 + 107 2 318.5 -151.5 95.5 0.3 106 + 108 2 323 -150.5 97.5 0.3 107 + 109 2 329 -146 100.5 0.3 108 + 110 2 334 -147.5 104 0.3 109 + 111 2 340.5 -147.5 108 0.3 110 + 112 2 346 -146.5 111.5 0.3 111 + 113 2 351.5 -145.5 114.5 0.3 112 + 114 2 356 -147.5 116.5 0.3 113 + 115 2 356 -147.5 115.5 0.3 114 + 116 2 89.5 -77.5 -23 0.2 61 + 117 2 93 -75 -33.5 0.2 116 + 118 2 97.5 -69.5 -39 0.2 117 + 119 2 98.5 -67 -49.5 0.2 118 + 120 2 102 -62 -49.5 0.2 119 + 121 2 104.5 -56 -57 0.2 120 + 122 2 109 -53 -61 0.2 121 + 123 2 115 -52 -70.5 0.2 122 + 124 2 114.5 -46 -82.5 0.2 123 + 125 2 116 -43 -100.5 0.2 124 + 126 2 120 -37 -112 0.2 125 + 127 2 127 -33 -129 0.2 126 + 128 2 138.5 -32.5 -131 0.2 127 + 129 2 148 -29.5 -148 0.2 128 + 130 2 157.5 -26.5 -156.5 0.2 129 + 131 2 166 -22.5 -160.5 0.2 130 + 132 2 173 -17 -163 0.2 131 + 133 2 181 -18 -174.5 0.2 132 + 134 2 189 -20.5 -178.5 0.2 133 + 135 2 202 -20 -183 0.2 134 + 136 2 205.5 -15.5 -191.5 0.2 135 + 137 2 211 -11 -194.5 0.2 136 + 138 2 223 -8 -196.5 0.2 137 + 139 2 229.5 -4 -209.5 0.2 138 + 140 2 234 4 -206 0.2 139 + 141 2 238 8.5 -207 0.2 140 + 142 2 237.5 13 -209.5 0.2 141 + 143 2 242.5 16 -212.5 0.2 142 + 144 2 246.5 17 -220 0.2 143 + 145 2 249.5 21.5 -212.5 0.2 144 + 146 2 253.5 27.5 -219 0.2 145 + 147 2 256 31 -223 0.2 146 + 148 2 263 37.5 -217 0.2 147 + 149 2 268 42 -215.5 0.2 148 + 150 2 273.5 45.5 -214.5 0.2 149 + 151 2 276.5 49.5 -224 0.2 150 + 152 2 280.5 51.5 -229.5 0.2 151 + 153 2 288 58 -233.5 0.2 152 + 154 2 289.5 61 -238 0.2 153 + 155 2 294 62.5 -237 0.2 154 + 156 2 298.5 64 -241 0.2 155 + 157 2 305.5 69 -248.5 0.2 156 + 158 2 306.5 71.5 -246.5 0.2 157 + 159 2 310 73.5 -246.5 0.2 158 + 160 2 317 82 -247.5 0.2 159 + 161 2 322 85 -247.5 0.2 160 + 162 2 331 88 -263.5 0.2 161 + 163 2 332 92 -263.5 0.2 162 + 164 2 338 95 -263.5 0.2 163 + 165 2 342.5 98 -263.5 0.2 164 + 166 2 346 96 -256 0.2 165 + 167 2 349.5 99.5 -256 0.2 166 + 168 2 353.5 102 -269.5 0.2 167 + 169 2 360 104 -275 0.2 168 + 170 2 361.5 108.5 -275 0.2 169 + 171 2 367 109.5 -275 0.2 170 + 172 2 367.5 112.5 -275 0.2 171 + 173 2 375.5 110.5 -279 0.2 172 + 174 2 380 111.5 -279 0.2 173 + 175 2 382.5 115 -280 0.2 174 + 176 2 386.5 114.5 -280 0.2 175 + 177 2 340 103.5 -259 0.2 165 + 178 2 338 106.5 -262.5 0.2 177 + 179 2 337 109.5 -264.5 0.2 178 + 180 2 334.5 113.5 -266.5 0.2 179 + 181 2 333.5 118.5 -259 0.2 180 + 182 2 333.5 123.5 -255 0.2 181 + 183 2 332 130 -255 0.2 182 + 184 2 333 138 -254 0.2 183 + 185 2 334 149 -248.5 0.2 184 + 186 2 338 160.5 -240 0.2 185 + 187 2 340.5 168 -237 0.2 186 + 188 2 345 174.5 -229.5 0.2 187 + 189 2 346 181 -223 0.2 188 + 190 2 346 188.5 -218 0.2 189 + 191 2 347 192 -213.5 0.2 190 + 192 2 353.5 199.5 -209.5 0.2 191 + 193 2 355 206 -207 0.2 192 + 194 2 357 211.5 -205 0.2 193 + 195 2 359 217 -195.5 0.2 194 + 196 2 359.5 218 -195.5 0.2 195 + 197 2 361 225 -195.5 0.2 196 + 198 2 364 234 -195.5 0.2 197 + 199 2 369.5 248 -185 0.2 198 + 200 2 370.5 258 -174.5 0.2 199 + 201 2 372.5 265.5 -171.5 0.2 200 + 202 2 374.5 274.5 -164 0.2 201 + 203 2 375.5 286 -143.5 0.2 202 + 204 2 374.5 295 -130 0.2 203 + 205 2 377.5 303 -129 0.2 204 + 206 2 384.5 314 -128 0.2 205 + 207 2 392 327 -123.5 0.2 206 + 208 2 395 336 -118.5 0.2 207 + 209 2 396 341 -114 0.2 208 + 210 2 399 349 -113 0.2 209 + 211 2 403.5 358 -111 0.2 210 + 212 2 408.5 367 -108 0.2 211 + 213 2 414 372 -111 0.2 212 + 214 2 427 387 -127 0.2 213 + 215 2 429 389 -126 0.2 214 + 216 2 341.5 110.5 -261 0.2 179 + 217 2 345 117 -260 0.2 216 + 218 2 347.5 126.5 -257 0.2 217 + 219 2 349 133 -257 0.2 218 + 220 2 351 145 -265.5 0.2 219 + 221 2 353 150 -267.5 0.2 220 + 222 2 350.5 150.5 -272 0.2 221 + 223 2 359 158 -273 0.2 222 + 224 2 362 167.5 -278 0.2 223 + 225 2 363 175.5 -279 0.2 224 + 226 2 363.5 180 -275 0.2 225 + 227 2 366.5 188.5 -274 0.2 226 + 228 2 366 197.5 -274 0.2 227 + 229 2 376 196 -278 0.2 228 + 230 2 389.5 199 -260 0.2 229 + 231 2 405 208.5 -260 0.2 230 + 232 2 420.5 210 -255 0.2 231 + 233 2 427.5 204 -229.5 0.2 232 + 234 2 430.5 202 -232.5 0.2 233 + 235 2 345.5 157 -267.5 0.2 222 + 236 4 -0.5 41.5 -9.5 3.9 1 + 237 4 -0.5 49.5 -8.5 3.6 236 + 238 4 -1.5 55 -6 3.65 237 + 239 4 -0.5 59.5 -11.5 3.65 238 + 240 4 -2 65.5 -11.5 2.45 239 + 241 4 -4 69.5 -11.5 3.2 240 + 242 4 -8.5 71.5 -10.5 1.8 241 + 243 4 -12 75 -8.5 1.6 242 + 244 4 -14.5 76.5 -8.5 1.6 243 + 245 4 -15 80 -8.5 1.6 244 + 246 4 -17 84.5 -8.5 1.3 245 + 247 4 -19 86.5 -8.5 1.3 246 + 248 4 -21 89.5 -4 1.3 247 + 249 4 -22.5 93.5 -3 1.3 248 + 250 4 -24.5 98.5 -4 1.3 249 + 251 4 -25.5 102.5 0 1.3 250 + 252 4 -26.5 105.5 3.5 1.3 251 + 253 4 -27 109 4.5 1.3 252 + 254 4 -27.5 112 5.5 1.2 253 + 255 4 -29.5 116 5.5 1.2 254 + 256 4 -29.5 117 5.5 1.2 255 + 257 4 -33 118 2.5 0.65 256 + 258 4 -37 119.5 6.5 0.6 257 + 259 4 -39.5 120 6.5 0.6 258 + 260 4 -42 122 4.5 0.6 259 + 261 4 -45 123.5 5.5 0.6 260 + 262 4 -47 125.5 5.5 0.6 261 + 263 4 -49.5 125.5 7.5 0.45 262 + 264 4 -54 127 8.5 0.45 263 + 265 4 -57.5 128.5 8.5 0.45 264 + 266 4 -60 129 12 0.45 265 + 267 4 -63 131 14 0.45 266 + 268 4 -63.5 132 15 0.45 267 + 269 4 -66.5 131.5 21.5 0.4 268 + 270 4 -68.5 130 23.5 0.4 269 + 271 4 -71 129 28.5 0.4 270 + 272 4 -72 130 28.5 0.3 271 + 273 4 -73.5 130.5 28.5 0.3 272 + 274 4 -73.5 132 27.5 0.3 273 + 275 4 -75.5 131.5 33 0.3 274 + 276 4 -77 132 34 0.3 275 + 277 4 -78 132.5 36 0.3 276 + 278 4 -79.5 132.5 39.5 0.3 277 + 279 4 -81.5 133.5 43.5 0.3 278 + 280 4 -84.5 133.5 40.5 0.3 279 + 281 4 -86.5 134 43.5 0.3 280 + 282 4 -88.5 134.5 41.5 0.3 281 + 283 4 -91 132.5 40.5 0.2 282 + 284 4 -91 132.5 41.5 0.2 283 + 285 4 -66 133.5 17 0.4 268 + 286 4 -68.5 134.5 17 0.4 285 + 287 4 -70.5 137 15 0.4 286 + 288 4 -71 139.5 14 0.4 287 + 289 4 -72.5 141 13 0.4 288 + 290 4 -73.5 144.5 12 0.4 289 + 291 4 -74 147 14 0.3 290 + 292 4 -76 151 15 0.3 291 + 293 4 -75 153 16 0.3 292 + 294 4 -77 156.5 17 0.3 293 + 295 4 -78.5 160 15 0.3 294 + 296 4 -79 162.5 14 0.3 295 + 297 4 -81 164.5 14 0.3 296 + 298 4 -82.5 166.5 19 0.3 297 + 299 4 -84 171 17 0.2 298 + 300 4 -86 174 20.5 0.2 299 + 301 4 -90 177 20.5 0.2 300 + 302 4 -89.5 180 20.5 0.2 301 + 303 4 -91 182 20.5 0.2 302 + 304 4 -92.5 185 18 0.2 303 + 305 4 -93.5 187.5 18 0.2 304 + 306 4 -95 193 21.5 0.2 305 + 307 4 -95 193 22.5 0.2 306 + 308 4 -29.5 118 8.5 0.85 256 + 309 4 -31.5 120.5 7.5 0.85 308 + 310 4 -33 124 18 0.85 309 + 311 4 -35 129.5 20.5 0.85 310 + 312 4 -36.5 134 20.5 0.85 311 + 313 4 -36.5 134 21.5 0.85 312 + 314 4 -38 135 21.5 0.55 313 + 315 4 -41 137 30 0.55 314 + 316 4 -42.5 139 28.5 0.55 315 + 317 4 -44 139.5 34 0.55 316 + 318 4 -45 140.5 36 0.45 317 + 319 4 -44.5 142.5 36 0.45 318 + 320 4 -43.5 145 36 0.45 319 + 321 4 -43.5 146 37 0.4 320 + 322 4 -42 150.5 39.5 0.4 321 + 323 4 -40.5 152.5 39.5 0.4 322 + 324 4 -41 156 43.5 0.4 323 + 325 4 -40.5 157 43.5 0.4 324 + 326 4 -38.5 160 48 0.4 325 + 327 4 -38 162.5 54 0.4 326 + 328 4 -41 163.5 54 0.4 327 + 329 4 -44.5 164.5 60.5 0.4 328 + 330 4 -45.5 167 60.5 0.3 329 + 331 4 -48 166.5 59.5 0.3 330 + 332 4 -50 165 61.5 0.3 331 + 333 4 -49.5 167.5 68 0.3 332 + 334 4 -52 170 67 0.3 333 + 335 4 -53.5 171.5 70 0.3 334 + 336 4 -54 176.5 73 0.3 335 + 337 4 -56 177.5 75.5 0.3 336 + 338 4 -58 178.5 79.5 0.3 337 + 339 4 -57.5 181.5 81.5 0.3 338 + 340 4 -57 182.5 80.5 0.3 339 + 341 4 -59.5 183.5 86 0.3 340 + 342 4 -58.5 186 88 0.3 341 + 343 4 -58 188 88 0.3 342 + 344 4 -58.5 188.5 86 0.2 343 + 345 4 -60 190 90 0.2 344 + 346 4 -58.5 192.5 91 0.15 345 + 347 4 -38 165 50 0.3 327 + 348 4 -37.5 167 55 0.3 347 + 349 4 -39.5 172 59.5 0.3 348 + 350 4 -38 174 63.5 0.3 349 + 351 4 -38 176 64.5 0.3 350 + 352 4 -38 177.5 68 0.3 351 + 353 4 -37 181 68 0.3 352 + 354 4 -38.5 181.5 69 0.3 353 + 355 4 -40 183 73 0.3 354 + 356 4 -40 185 76.5 0.3 355 + 357 4 -40.5 187.5 80.5 0.3 356 + 358 4 -40 189 85 0.3 357 + 359 4 -38 191 89 0.3 358 + 360 4 -37 192.5 89 0.3 359 + 361 4 -39 140 20.5 0.65 313 + 362 4 -39 143.5 19 0.65 361 + 363 4 -39.5 146.5 18 0.65 362 + 364 4 -41 151 18 0.65 363 + 365 4 -42 155.5 17 0.65 364 + 366 4 -42.5 158 22.5 0.65 365 + 367 4 -43.5 161.5 22.5 0.65 366 + 368 4 -44 164 23.5 0.65 367 + 369 4 -43.5 167.5 23.5 0.65 368 + 370 4 -44.5 169.5 22.5 0.65 369 + 371 4 -46 171.5 21.5 0.65 370 + 372 4 -48 174 21.5 0.65 371 + 373 4 -49 176.5 26.5 0.65 372 + 374 4 -50.5 178.5 26.5 0.65 373 + 375 4 -52.5 181 27.5 0.65 374 + 376 4 -53.5 184 27.5 0.65 375 + 377 4 -54.5 187 28.5 0.65 376 + 378 4 -54 189 30 0.65 377 + 379 4 -54 192 31 0.65 378 + 380 4 -54.5 194 30 0.65 379 + 381 4 -58 201 33 0.65 380 + 382 4 -59.5 205 35 0.65 381 + 383 4 -59.5 207.5 36 0.65 382 + 384 4 -60.5 209.5 34 0.65 383 + 385 4 -63.5 212 33 0.65 384 + 386 4 -65.5 215.5 41.5 0.65 385 + 387 4 -66.5 218 44.5 0.65 386 + 388 4 -68 221.5 45.5 0.65 387 + 389 4 -68 223 50 0.65 388 + 390 4 -70 223.5 50 0.65 389 + 391 4 -70.5 226.5 51 0.65 390 + 392 4 -71 231 51 0.65 391 + 393 4 -71 233 54 0.65 392 + 394 4 -73 235.5 58.5 0.65 393 + 395 4 -73.5 235.5 56.5 0.65 394 + 396 4 -75.5 237.5 60.5 0.65 395 + 397 4 -78.5 242 52 0.65 396 + 398 4 -80.5 244.5 51 0.65 397 + 399 4 -82 247 50 0.6 398 + 400 4 -82.5 250.5 58.5 0.6 399 + 401 4 -82.5 253.5 57.5 0.6 400 + 402 4 -83.5 256.5 59.5 0.6 401 + 403 4 -85 259.5 61.5 0.6 402 + 404 4 -87 262.5 64.5 0.6 403 + 405 4 -88 263.5 64.5 0.6 404 + 406 4 -88.5 267.5 62.5 0.6 405 + 407 4 -87.5 270.5 62.5 0.6 406 + 408 4 -88.5 274 62.5 0.6 407 + 409 4 -90 278 60.5 0.6 408 + 410 4 -92 278.5 59.5 0.6 409 + 411 4 -94 283.5 59.5 0.6 410 + 412 4 -93.5 286 59.5 0.6 411 + 413 4 -93 289 68 0.6 412 + 414 4 -94.5 293.5 66 0.6 413 + 415 4 -99 295 64.5 0.2 414 + 416 4 -101.5 297.5 72 0.2 415 + 417 4 -104 298 74 0.2 416 + 418 4 -105.5 301.5 74 0.2 417 + 419 4 -111 303.5 70 0.2 418 + 420 4 -112.5 306.5 71 0.2 419 + 421 4 -115 307 70 0.2 420 + 422 4 -116.5 308.5 71 0.2 421 + 423 4 -118.5 310 73 0.2 422 + 424 4 -121.5 311.5 75.5 0.2 423 + 425 4 -127 314 74 0.2 424 + 426 4 -127 314 75.5 0.2 425 + 427 4 -96 297.5 69 0.45 414 + 428 4 -95.5 299.5 67 0.45 427 + 429 4 -97 302 70 0.45 428 + 430 4 -99 304 70 0.45 429 + 431 4 -101.5 305 72 0.45 430 + 432 4 -103.5 306 72 0.45 431 + 433 4 -104 309 71 0.45 432 + 434 4 -106.5 310 77.5 0.45 433 + 435 4 -110.5 311 79.5 0.4 434 + 436 4 -109.5 312.5 77.5 0.4 435 + 437 4 -113.5 315.5 78.5 0.4 436 + 438 4 -115.5 318.5 81.5 0.4 437 + 439 4 -118.5 321.5 80.5 0.4 438 + 440 4 -121 323.5 81.5 0.4 439 + 441 4 -123 326 82.5 0.4 440 + 442 4 -126 327.5 88 0.4 441 + 443 4 -129.5 330.5 87 0.4 442 + 444 4 -131 333 88 0.4 443 + 445 4 -134.5 334 89 0.4 444 + 446 4 -137 338 88 0.4 445 + 447 4 -139 342 91 0.4 446 + 448 4 -138.5 343.5 91 0.4 447 + 449 4 -142 347 94.5 0.4 448 + 450 4 -141.5 352.5 93.5 0.3 449 + 451 4 -140.5 356 93.5 0.3 450 + 452 4 -141 358 98.5 0.3 451 + 453 4 -142 360.5 97.5 0.3 452 + 454 4 -144 362.5 96.5 0.3 453 + 455 4 -144.5 364 96.5 0.3 454 + 456 4 -144.5 364 93.5 0.3 455 + 457 4 -146.5 367.5 96.5 0.2 456 + 458 4 -147 372.5 100.5 0.2 457 + 459 4 -149 375 100.5 0.2 458 + 460 4 -151 376.5 100.5 0.2 459 + 461 4 -150.5 377 100.5 0.2 460 + 462 4 -152.5 379.5 104 0.2 461 + 463 4 -154 379.5 103 0.2 462 + 464 4 -154.5 378.5 106 0.2 463 + 465 4 -156 378 105 0.2 464 + 466 4 -158 379.5 105 0.2 465 + 467 4 -157.5 380.5 104 0.2 466 + 468 4 -156 381 102 0.2 463 + 469 4 -157 382.5 104 0.2 468 + 470 4 -158 384 103 0.2 469 + 471 4 -159 384 102 0.2 470 + 472 4 -143.5 368 99.5 0.2 456 + 473 4 -143 370.5 99.5 0.2 472 + 474 4 -142 373 99.5 0.2 473 + 475 4 -143.5 375 99.5 0.2 474 + 476 4 -143 377.5 106 0.2 475 + 477 4 -142.5 379 104 0.2 476 + 478 4 -143.5 381.5 104 0.2 477 + 479 4 -145 384 102 0.2 478 + 480 4 -104 311.5 68 0.3 433 + 481 4 -104.5 314.5 67 0.3 480 + 482 4 -105.5 318.5 69 0.3 481 + 483 4 -105 321 69 0.3 482 + 484 4 -105.5 325.5 69 0.3 483 + 485 4 -107.5 329 66 0.3 484 + 486 4 -107.5 332 66 0.3 485 + 487 4 -108.5 336.5 69 0.3 486 + 488 4 -108.5 342.5 68 0.2 487 + 489 4 -69.5 235 58.5 0.3 395 + 490 4 -69.5 238 63.5 0.3 489 + 491 4 -69.5 241 67 0.3 490 + 492 4 -67.5 243 70 0.3 491 + 493 4 -65.5 245 69 0.3 492 + 494 4 -65.5 251 74 0.3 493 + 495 4 -64 252 75.5 0.3 494 + 496 4 -60.5 253.5 77.5 0.3 495 + 497 4 -61 256 77.5 0.3 496 + 498 4 -60 258.5 79.5 0.3 497 + 499 4 -59.5 260 81.5 0.3 498 + 500 4 -60 262 84 0.3 499 + 501 4 -60.5 262.5 85 0.3 500 + 502 4 -60 265.5 85 0.3 501 + 503 4 -59 267.5 87 0.3 502 + 504 4 -58 270 82.5 0.3 503 + 505 4 -57.5 271.5 82.5 0.3 504 + 506 4 -57 274.5 86 0.3 505 + 507 4 -57 276.5 86 0.3 506 + 508 4 -55.5 279.5 84 0.3 507 + 509 4 -53 280.5 80.5 0.2 508 + 510 4 -53.5 282 84 0.2 509 + 511 4 -56 283 82.5 0.2 510 + 512 4 -56 283 84 0.2 511 + 513 4 -53.5 197.5 31 0.3 380 + 514 4 -54.5 202 31 0.3 513 + 515 4 -53 208 23.5 0.3 514 + 516 4 -54 210 23.5 0.3 515 + 517 4 -53 214 22.5 0.3 516 + 518 4 -52.5 218 21.5 0.3 517 + 519 4 -51 221.5 21.5 0.3 518 + 520 4 -52 225.5 22.5 0.3 519 + 521 4 -52.5 229 21.5 0.3 520 + 522 4 -52 231.5 21.5 0.3 521 + 523 4 -53 235 20.5 0.3 522 + 524 4 -54 238 21.5 0.3 523 + 525 4 -53.5 240 21.5 0.2 524 + 526 4 -54 246.5 21.5 0.2 525 + 527 4 -53 250 17 0.2 526 + 528 4 -53.5 254 14 0.2 527 + 529 4 -52 258 12 0.2 528 + 530 4 -51.5 267 12 0.2 529 + 531 4 -50.5 270.5 12 0.2 530 + 532 4 -49.5 276.5 13 0.2 531 + 533 4 -47.5 283.5 14 0.2 532 + 534 4 -47 286.5 13 0.15 533 + 535 4 -45.5 292.5 6.5 0.15 534 + 536 4 -2.5 70.5 -11.5 1.8 241 + 537 4 -3 76 -9.5 1.8 536 + 538 4 -4.5 79 -10.5 1.8 537 + 539 4 -6.5 83.5 -7 0.9 538 + 540 4 -8 88 0 0.9 539 + 541 4 -7 91 0 0.9 540 + 542 4 -8 96.5 -1 0.9 541 + 543 4 -9 99.5 -2 0.9 542 + 544 4 -10.5 101.5 6.5 0.9 543 + 545 4 -11 103.5 9.5 0.9 544 + 546 4 -10.5 108.5 11 0.9 545 + 547 4 -11.5 111 7.5 0.9 546 + 548 4 -11.5 115 6.5 0.9 547 + 549 4 -11.5 118.5 14 0.9 548 + 550 4 -13 128 14 0.85 549 + 551 4 -14.5 136 15 0.65 550 + 552 4 -16 141.5 16 0.65 551 + 553 4 -15 144 16 0.65 552 + 554 4 -15.5 148 16 0.65 553 + 555 4 -16.5 155 16 0.65 554 + 556 4 -16.5 158.5 15 0.65 555 + 557 4 -17.5 163 15 0.65 556 + 558 4 -19 167 18 0.65 557 + 559 4 -18 170.5 18 0.65 558 + 560 4 -18 173 18 0.65 559 + 561 4 -19 176.5 18 0.65 560 + 562 4 -20.5 181.5 24.5 0.65 561 + 563 4 -21 183.5 24.5 0.65 562 + 564 4 -21.5 188 24.5 0.65 563 + 565 4 -21.5 190.5 24.5 0.65 564 + 566 4 -23 194.5 24.5 0.65 565 + 567 4 -24 198.5 24.5 0.65 566 + 568 4 -25 200.5 27.5 0.65 567 + 569 4 -27.5 206.5 25.5 0.65 568 + 570 4 -28.5 209 25.5 0.65 569 + 571 4 -29 214 25.5 0.65 570 + 572 4 -29.5 215.5 31 0.65 571 + 573 4 -30 220 31 0.65 572 + 574 4 -31.5 222.5 31 0.65 573 + 575 4 -32 225.5 31 0.65 574 + 576 4 -31 229.5 34 0.65 575 + 577 4 -32 231 34 0.65 576 + 578 4 -33 235.5 32 0.65 577 + 579 4 -32.5 238 34 0.65 578 + 580 4 -31.5 242.5 33 0.65 579 + 581 4 -31.5 247 39.5 0.6 580 + 582 4 -32 252.5 37 0.6 581 + 583 4 -30.5 256 38.5 0.6 582 + 584 4 -31 263.5 39.5 0.6 583 + 585 4 -32.5 266 46.5 0.6 584 + 586 4 -35 266.5 45.5 0.6 585 + 587 4 -36 268.5 49 0.6 586 + 588 4 -36.5 271.5 49 0.6 587 + 589 4 -36.5 275.5 53 0.6 588 + 590 4 -39 286 55 0.6 589 + 591 4 -40 294 58.5 0.6 590 + 592 4 -39.5 296.5 58.5 0.6 591 + 593 4 -37 300.5 58.5 0.6 592 + 594 4 -36.5 301.5 60.5 0.55 593 + 595 4 -35.5 304.5 60.5 0.55 594 + 596 4 -36 306 59.5 0.55 595 + 597 4 -37.5 309.5 58.5 0.55 596 + 598 4 -38.5 313.5 58.5 0.55 597 + 599 4 -40 317.5 62.5 0.45 598 + 600 4 -41.5 320.5 63.5 0.45 599 + 601 4 -42 324 63.5 0.4 600 + 602 4 -43 326.5 63.5 0.4 601 + 603 4 -45 328 63.5 0.4 602 + 604 4 -47.5 329.5 63.5 0.4 603 + 605 4 -51 333.5 63.5 0.4 604 + 606 4 -49.5 336.5 63.5 0.4 605 + 607 4 -52 341.5 63.5 0.4 606 + 608 4 -56 343.5 63.5 0.4 607 + 609 4 -61 346.5 64.5 0.4 608 + 610 4 -65 350 60.5 0.4 609 + 611 4 -69 353.5 72 0.3 610 + 612 4 -72.5 357 73 0.3 611 + 613 4 -75.5 362 75.5 0.3 612 + 614 4 -78.5 367.5 76.5 0.3 613 + 615 4 -86 377.5 75.5 0.3 614 + 616 4 -89.5 383 78.5 0.3 615 + 617 4 -89 390 79.5 0.3 616 + 618 4 -92 398 79.5 0.3 617 + 619 4 -96.5 405 80.5 0.3 618 + 620 4 -101 409.5 79.5 0.3 619 + 621 4 -103.5 412.5 79.5 0.3 620 + 622 4 -105.5 419 79.5 0.3 621 + 623 4 -109.5 424.5 79.5 0.3 622 + 624 4 -110.5 428.5 79.5 0.3 623 + 625 4 -111.5 432.5 79.5 0.3 624 + 626 4 -118.5 436.5 85 0.3 625 + 627 4 -121 439 85 0.3 626 + 628 4 -121.5 444.5 85 0.3 627 + 629 4 -125 447.5 81.5 0.3 628 + 630 4 -126.5 448.5 81.5 0.3 629 + 631 4 -128.5 452.5 80.5 0.3 630 + 632 4 -130 454 80.5 0.3 631 + 633 4 -132.5 456.5 80.5 0.2 632 + 634 4 -137 460 80.5 0.2 633 + 635 4 -138 463 76.5 0.2 634 + 636 4 -139 467 76.5 0.2 635 + 637 4 -140 474 76.5 0.2 636 + 638 4 -141.5 478.5 75.5 0.2 637 + 639 4 -140 482.5 75.5 0.2 638 + 640 4 -143 486.5 75.5 0.2 639 + 641 4 -144.5 490.5 78.5 0.2 640 + 642 4 -143 494.5 78.5 0.2 641 + 643 4 -143 500.5 78.5 0.2 642 + 644 4 -144 503 84 0.2 643 + 645 4 -143.5 507 84 0.2 644 + 646 4 -142.5 509 84 0.2 645 + 647 4 -142 515 90 0.2 646 + 648 4 -146 522.5 89 0.2 647 + 649 4 -148.5 523.5 89 0.2 648 + 650 4 -149.5 527 92 0.2 649 + 651 4 -153 528.5 92 0.2 650 + 652 4 -156 530 93.5 0.2 651 + 653 4 -156 530 92 0.2 652 + 654 4 -33 317 57.5 0.4 598 + 655 4 -33 319 57.5 0.4 654 + 656 4 -31.5 321 61.5 0.4 655 + 657 4 -31 324.5 60.5 0.4 656 + 658 4 -31 328.5 59.5 0.4 657 + 659 4 -31.5 331 59.5 0.4 658 + 660 4 -31 336 61.5 0.3 659 + 661 4 -33 339 62.5 0.3 660 + 662 4 -32 344 62.5 0.3 661 + 663 4 -35.5 349 61.5 0.3 662 + 664 4 -35.5 354 70 0.3 663 + 665 4 -31 381 68 0.3 664 + 666 4 -31 392 69 0.3 665 + 667 4 -32 403 69 0.3 666 + 668 4 -35.5 417 69 0.3 667 + 669 4 -35 419.5 73 0.3 668 + 670 4 -37.5 430.5 70 0.3 669 + 671 4 -39 437 68 0.3 670 + 672 4 -44 444.5 71 0.3 671 + 673 4 -48 459.5 67 0.3 672 + 674 4 -49 466 66 0.3 673 + 675 4 -50.5 476 63.5 0.2 674 + 676 4 -50.5 489 62.5 0.2 675 + 677 4 -50 497 64.5 0.2 676 + 678 4 -51 503.5 64.5 0.2 677 + 679 4 -53 505.5 63.5 0.2 678 + 680 4 -52.5 513.5 64.5 0.2 679 + 681 4 -53 515.5 66 0.2 680 + 682 4 -55.5 524 64.5 0.15 681 + 683 4 -55.5 524 67 0.15 682 + 684 4 -51.5 520.5 64.5 0.2 681 + 685 4 -53 523.5 63.5 0.2 684 + 686 4 -54.5 525.5 66 0.2 685 + 687 4 -56.5 528.5 63.5 0.2 686 + 688 4 -58 532.5 61.5 0.2 687 + 689 4 -56 537.5 61.5 0.2 688 + 690 4 -57 540.5 63.5 0.2 689 + 691 4 -28.5 205 36 0.3 568 + 692 4 -31.5 206 36 0.3 691 + 693 4 -30.5 207.5 43.5 0.3 692 + 694 4 -33 209.5 43.5 0.3 693 + 695 4 -34 210 44.5 0.3 694 + 696 4 -34.5 212.5 46.5 0.3 695 + 697 4 -36.5 213 49 0.3 696 + 698 4 -39 215.5 51 0.3 697 + 699 4 -41 219 56.5 0.3 698 + 700 4 -45 220 55 0.3 699 + 701 4 -46.5 223 55 0.3 700 + 702 4 -47.5 225 53 0.3 701 + 703 4 -49.5 226.5 50 0.3 702 + 704 4 -51.5 227.5 55 0.3 703 + 705 4 -54 230 55 0.3 704 + 706 4 -55.5 232.5 59.5 0.3 705 + 707 4 -58.5 238 59.5 0.3 706 + 708 4 -59.5 240.5 59.5 0.3 707 + 709 4 -60.5 243.5 58.5 0.3 708 + 710 4 -62 247.5 61.5 0.3 709 + 711 4 -64 251.5 61.5 0.3 710 + 712 4 -66 254 68 0.3 711 + 713 4 -67.5 254.5 67 0.2 712 + 714 4 -68.5 256 68 0.2 713 + 715 4 -71.5 259 68 0.2 714 + 716 4 -8 121.5 15 0.3 549 + 717 4 -7.5 123.5 17 0.3 716 + 718 4 -9 124.5 20.5 0.3 717 + 719 4 -7.5 128 25.5 0.4 718 + 720 4 -9 130 28.5 0.4 719 + 721 4 -8.5 131 28.5 0.4 720 + 722 4 -7.5 131.5 30 0.4 721 + 723 4 -6 136 39.5 0.4 722 + 724 4 -3 137.5 44.5 0.4 723 + 725 4 -2 142 51 0.4 724 + 726 4 -3.5 144.5 50 0.4 725 + 727 4 -4 147 59.5 0.4 726 + 728 4 -4 148 60.5 0.4 727 + 729 4 -5 151.5 59.5 0.3 728 + 730 4 -7.5 154 64.5 0.3 729 + 731 4 -7.5 156 63.5 0.2 730 + 732 4 -7.5 157.5 67 0.2 731 + 733 4 -8.5 159 71 0.2 732 + 734 4 -12.5 159.5 77.5 0.2 733 + 735 4 -11 161 77.5 0.2 734 + 736 4 -13.5 160.5 79.5 0.2 735 + 737 4 -14.5 162 81.5 0.2 736 + 738 4 -14 163.5 85 0.2 737 + 739 4 -14 165.5 88 0.2 738 + 740 4 -13.5 167.5 92 0.2 739 + 741 4 -12.5 170.5 95.5 0.2 740 + 742 4 -14 172 98.5 0.2 741 + 743 4 -12.5 175 94.5 0.2 742 + 744 4 -17 176.5 96.5 0.2 743 + 745 4 -16.5 177 99.5 0.2 744 + 746 4 -17.5 180.5 98.5 0.15 745 + 747 4 -1 150.5 61.5 0.3 728 + 748 4 0 152 63.5 0.3 747 + 749 4 -1.5 153 63.5 0.2 748 + 750 4 0.5 154.5 64.5 0.3 749 + 751 4 3 155.5 64.5 0.3 750 + 752 4 0 157.5 72 0.3 751 + 753 4 3 159.5 75.5 0.3 752 + 754 4 1 161.5 75.5 0.3 753 + 755 4 2 163 78.5 0.2 754 + 756 4 2 166.5 81.5 0.2 755 + 757 4 0.5 166.5 80.5 0.2 756 + 758 4 1 169.5 85 0.2 757 + 759 4 -0.5 173 87 0.2 758 + 760 4 -0.5 175.5 91 0.2 759 + 761 4 -2 178 94.5 0.2 760 + 762 4 0 179.5 97.5 0.2 761 + 763 4 0.5 184 102 0.2 762 + 764 4 1 186.5 97.5 0.2 763 + 765 4 2 189 99.5 0.2 764 + 766 4 4.5 191 98.5 0.2 765 + 767 4 3 192 98.5 0.2 766 + 768 4 2 193.5 107 0.2 767 + 769 4 3 195 109 0.2 768 + 770 4 2.5 196.5 111.5 0.2 769 + 771 4 3.5 199 104 0.2 770 + 772 4 4 200.5 103 0.2 771 + 773 4 -2 82 -13.5 0.6 538 + 774 4 -1 85.5 -7 0.55 773 + 775 4 -0.5 89 -10.5 0.55 774 + 776 4 -1.5 89.5 -13.5 0.55 775 + 777 4 -3 94 -3 0.3 776 + 778 4 -3.5 99.5 -5 0.3 777 + 779 4 -5.5 103.5 -13.5 0.3 778 + 780 4 -8 110 -15.5 0.3 779 + 781 4 -7 113.5 -14.5 0.3 780 + 782 4 -7 119 -13.5 0.3 781 + 783 4 -8 122.5 -18 0.3 782 + 784 4 -10.5 125 -22 0.3 783 + 785 4 -13.5 130 -25 0.3 784 + 786 4 -17 136.5 -28.5 0.3 785 + 787 4 -17 143 -29.5 0.3 786 + 788 4 -17.5 148 -31.5 0.3 787 + 789 4 -18 156.5 -31.5 0.3 788 + 790 4 -20 163 -31.5 0.3 789 + 791 4 -19.5 164.5 -37 0.3 790 + 792 4 -24.5 167 -39 0.3 791 + 793 4 -26.5 171 -45.5 0.3 792 + 794 4 -27 174.5 -47.5 0.3 793 + 795 4 -28.5 180.5 -54 0.3 794 + 796 4 -31 182.5 -60 0.2 795 + 797 4 -33.5 186 -66.5 0.2 796 + 798 4 -37.5 187 -63.5 0.2 797 + 799 4 -40.5 191 -59 0.2 798 + 800 4 -42.5 194 -59 0.2 799 + 801 4 -45.5 196 -75 0.2 800 + 802 4 -50 198 -78 0.2 801 + 803 4 -52 199 -83.5 0.2 802 + 804 4 -54 199.5 -90 0.2 803 + 805 4 -20 169 -30.5 0.3 791 + 806 4 -23 176.5 -28.5 0.3 805 + 807 4 -25 185.5 -34.5 0.3 806 + 808 4 -25 190 -37 0.3 807 + 809 4 -27 195 -37 0.3 808 + 810 4 -28 200 -40 0.3 809 + 811 4 -29.5 202.5 -43 0.3 810 + 812 4 -30.5 207.5 -43 0.3 811 + 813 4 -32 215 -40 0.3 812 + 814 4 -32 221.5 -39 0.3 813 + 815 4 -33 227 -40 0.3 814 + 816 4 -34 232.5 -42 0.3 815 + 817 4 -35 239.5 -48.5 0.3 816 + 818 4 -37 247 -50.5 0.3 817 + 819 4 -39 252 -52.5 0.3 818 + 820 4 -37.5 256.5 -48.5 0.3 819 + 821 4 -37.5 262 -52.5 0.3 820 + 822 4 -37 266.5 -56 0.3 821 + 823 4 -39.5 273 -57 0.3 822 + 824 4 -40.5 281 -58 0.3 823 + 825 4 -41.5 287.5 -56 0.3 824 + 826 4 -42.5 293.5 -52.5 0.3 825 + 827 4 -44.5 297.5 -58 0.3 826 + 828 4 -45.5 303 -60 0.3 827 + 829 4 -47 306.5 -60 0.3 828 + 830 4 -47.5 311 -59 0.3 829 + 831 4 -49.5 321.5 -63.5 0.3 830 + 832 4 -50 329.5 -68.5 0.3 831 + 833 4 -51.5 334 -64.5 0.3 832 + 834 4 -53.5 342 -61 0.3 833 + 835 4 -57.5 351 -64.5 0.3 834 + 836 4 -58 358.5 -64.5 0.3 835 + 837 4 -58.5 364.5 -59 0.3 836 + 838 4 -57.5 374 -69.5 0.3 837 + 839 4 -55.5 380.5 -74 0.3 838 + 840 4 -53 389 -76 0.2 839 + 841 4 -52 392 -83.5 0.2 840 + 842 4 -53 404.5 -86.5 0.2 841 + 843 4 -54 420 -85.5 0.2 842 + 844 4 -53.5 433 -93 0.2 843 + 845 4 -54 443 -100.5 0.2 844 + 846 4 -54.5 452.5 -99.5 0.2 845 + 847 4 -55.5 462 -110 0.2 846 + 848 4 -59.5 471.5 -109 0.2 847 + 849 4 -59.5 482 -110 0.2 848 + 850 4 -60.5 492 -113 0.2 849 + 851 4 -60 502 -113 0.2 850 + 852 4 -62.5 508.5 -115 0.15 851 + 853 4 -63.5 513 -121.5 0.15 852 + 854 4 -66 517.5 -127 0.15 853 + 855 4 -65.5 519 -121.5 0.15 854 + 856 4 -58 508 -111 0.15 851 + 857 4 -60.5 514.5 -119.5 0.15 856 + 858 4 -59 517.5 -122.5 0.15 857 + 859 4 -59 517.5 -120.5 0.15 858 + 860 4 -0.5 98 -7 0.85 776 + 861 4 0 101.5 -6 0.85 860 + 862 4 1 106 -7 0.65 861 + 863 4 1 111 -10.5 0.65 862 + 864 4 2.5 114.5 -11.5 0.65 863 + 865 4 0.5 120.5 -1 0.4 864 + 866 4 0 124.5 -1 0.3 865 + 867 4 -0.5 127.5 -1 0.3 866 + 868 4 -1 132 -3 0.3 867 + 869 4 0 137 -4 0.3 868 + 870 4 -0.5 140.5 -6 0.3 869 + 871 4 -1 145 -3 0.3 870 + 872 4 0 148.5 -2 0.3 871 + 873 4 4 174 -4 0.3 872 + 874 4 5 187 -5 0.3 873 + 875 4 9 201.5 0 0.3 874 + 876 4 13 214.5 -1 0.3 875 + 877 4 15 221 -2 0.3 876 + 878 4 15 228 3.5 0.3 877 + 879 4 18 236.5 2.5 0.3 878 + 880 4 21.5 248.5 2.5 0.3 879 + 881 4 24 258 4.5 0.3 880 + 882 4 24.5 265.5 4.5 0.3 881 + 883 4 25 271.5 3.5 0.3 882 + 884 4 27 279 3.5 0.3 883 + 885 4 28.5 282.5 2.5 0.3 884 + 886 4 29.5 287.5 2.5 0.3 885 + 887 4 30.5 295.5 2.5 0.3 886 + 888 4 31 302 2.5 0.3 887 + 889 4 33 307 2.5 0.3 888 + 890 4 39.5 312 2.5 0.3 889 + 891 4 43 316.5 1 0.3 890 + 892 4 48 323.5 1 0.3 891 + 893 4 49.5 327 1 0.3 892 + 894 4 52.5 333 1 0.3 893 + 895 4 54.5 339 1 0.2 894 + 896 4 56.5 348.5 2.5 0.2 895 + 897 4 56 355 1 0.2 896 + 898 4 56 360 0 0.2 897 + 899 4 56 370.5 2.5 0.2 898 + 900 4 57.5 381 -2 0.2 899 + 901 4 59 386 -4 0.2 900 + 902 4 62 393.5 -5 0.2 901 + 903 4 66 401 -6 0.2 902 + 904 4 68 409 -8.5 0.2 903 + 905 4 69.5 415 -8.5 0.2 904 + 906 4 71.5 419.5 -8.5 0.2 905 + 907 4 71.5 433.5 -5 0.2 906 + 908 4 71.5 442 0 0.2 907 + 909 4 71 451.5 -1 0.2 908 + 910 4 71.5 459.5 -8.5 0.2 909 + 911 4 73 467.5 -10.5 0.2 910 + 912 4 72 476 -12.5 0.2 911 + 913 4 68.5 487.5 -4 0.2 912 + 914 4 67 497 -3 0.2 913 + 915 4 67.5 504.5 -2 0.2 914 + 916 4 67.5 511.5 -6 0.2 915 + 917 4 68.5 521.5 -3 0.2 916 + 918 4 70.5 527.5 2.5 0.2 917 + 919 4 70 533.5 0 0.2 918 + 920 4 69.5 536 1 0.2 919 + 921 4 3.5 122.5 -3 0.45 864 + 922 4 4 127.5 -4 0.45 921 + 923 4 4.5 131.5 -3 0.45 922 + 924 4 5.5 137.5 -2 0.45 923 + 925 4 6.5 142.5 -2 0.45 924 + 926 4 5.5 144 2.5 0.45 925 + 927 4 6.5 151 -7 0.45 926 + 928 4 7 156 -9.5 0.45 927 + 929 4 8.5 160 -13.5 0.45 928 + 930 4 10 165 -15.5 0.45 929 + 931 4 11.5 170.5 -12.5 0.45 930 + 932 4 12.5 173.5 -14.5 0.45 931 + 933 4 13.5 176.5 -14.5 0.45 932 + 934 4 15 181 -18 0.45 933 + 935 4 16.5 186 -14.5 0.45 934 + 936 4 17 189.5 -15.5 0.45 935 + 937 4 18.5 194.5 -18 0.45 936 + 938 4 18.5 195.5 -17 0.45 937 + 939 4 18.5 201.5 -17 0.45 938 + 940 4 20 207 -15.5 0.45 939 + 941 4 22 213.5 -20 0.45 940 + 942 4 25 220.5 -25 0.45 941 + 943 4 23.5 227 -23 0.45 942 + 944 4 26 237.5 -28.5 0.45 943 + 945 4 28 243.5 -37 0.45 944 + 946 4 29 249.5 -33.5 0.3 945 + 947 4 31 259.5 -30.5 0.3 946 + 948 4 32.5 264.5 -40 0.3 947 + 949 4 33.5 267.5 -43 0.3 948 + 950 4 35 278 -45.5 0.3 949 + 951 4 38.5 283.5 -34.5 0.3 950 + 952 4 41 286.5 -36 0.3 951 + 953 4 43.5 296.5 -41 0.3 952 + 954 4 42 303.5 -34.5 0.3 953 + 955 4 43.5 309 -39 0.3 954 + 956 4 45 313 -40 0.3 955 + 957 4 48 319 -33.5 0.3 956 + 958 4 52.5 328.5 -41 0.3 957 + 959 4 54.5 332.5 -40 0.3 958 + 960 4 54 339.5 -40 0.3 959 + 961 4 53.5 345.5 -39 0.3 960 + 962 4 53 349.5 -44.5 0.3 961 + 963 4 54 356 -44.5 0.3 962 + 964 4 54.5 362 -55 0.3 963 + 965 4 57 374 -58 0.3 964 + 966 4 60 383 -59 0.3 965 + 967 4 62.5 391 -60 0.3 966 + 968 4 68 407 -61 0.3 967 + 969 4 64.5 416.5 -62.5 0.3 968 + 970 4 61 425 -61 0.3 969 + 971 4 60.5 431 -61 0.3 970 + 972 4 57.5 437.5 -69.5 0.3 971 + 973 4 55.5 443.5 -73 0.3 972 + 974 4 52.5 449 -76 0.3 973 + 975 4 49 455 -65.5 0.3 974 + 976 4 40.5 461.5 -64.5 0.3 975 + 977 4 35.5 466.5 -64.5 0.3 976 + 978 4 33.5 474 -66.5 0.3 977 + 979 4 31.5 478.5 -68.5 0.2 978 + 980 4 27 488.5 -68.5 0.2 979 + 981 4 25.5 494.5 -68.5 0.2 980 + 982 4 25 502 -72 0.2 981 + 983 4 21.5 516 -72 0.2 982 + 984 4 20.5 531.5 -76 0.15 983 + 985 4 21.5 534.5 -79 0.15 984 + 986 4 35 478.5 -65.5 0.2 978 + 987 4 33.5 485 -56 0.2 986 + 988 4 33.5 494.5 -54 0.2 987 + 989 4 35 509 -49.5 0.2 988 + 990 4 38 518.5 -46.5 0.2 989 + 991 4 40.5 529 -45.5 0.2 990 + 992 4 42 533.5 -56 0.2 991 + 993 4 44.5 541 -58 0.2 992 + 994 4 48.5 551 -58 0.2 993 + 995 4 51.5 559.5 -55 0.2 994 + 996 4 52 571 -57 0.15 995 + 997 4 24 198.5 -23 0.2 938 + 998 4 29.5 203 -23 0.2 997 + 999 4 31 206 -26.5 0.2 998 + 1000 4 35 210.5 -22 0.2 999 + 1001 4 39 214.5 -21 0.2 1000 + 1002 4 43.5 216 -25 0.2 1001 + 1003 4 47 218 -25 0.2 1002 + 1004 4 50.5 220 -22 0.2 1003 + 1005 4 56 224 -21 0.2 1004 + 1006 4 61 224 -22 0.2 1005 + 1007 4 66.5 225 -24 0.2 1006 + 1008 4 13.5 148 -1 0.3 926 + 1009 4 18.5 155.5 -1 0.3 1008 + 1010 4 20 159.5 0 0.3 1009 + 1011 4 26 167 0 0.3 1010 + 1012 4 32.5 171.5 -1 0.3 1011 + 1013 4 35.5 173.5 0 0.2 1012 + 1014 4 36 177 4.5 0.2 1013 + 1015 4 40.5 184.5 2.5 0.2 1014 + 1016 4 42 188 1 0.2 1015 + 1017 4 43 192 3.5 0.2 1016 + 1018 4 45 197 -4 0.2 1017 + 1019 4 48.5 200.5 -3 0.2 1018 + 1020 4 53 205.5 1 0.2 1019 + 1021 4 54.5 209 5.5 0.2 1020 + 1022 4 59 215 7.5 0.2 1021 + 1023 4 59.5 216.5 2.5 0.2 1022 + 1024 4 3.5 67 -13.5 1.55 239 + 1025 4 4 72.5 -14.5 1.55 1024 + 1026 4 3.5 76.5 -13.5 1.55 1025 + 1027 4 5 83 -12.5 1.55 1026 + 1028 4 4.5 89 -21 1.2 1027 + 1029 4 4 96 -17 1.2 1028 + 1030 4 5.5 101 -17 1.2 1029 + 1031 4 5 105.5 -25 1.2 1030 + 1032 4 4 111 -26.5 1.2 1031 + 1033 4 -2 124 -33.5 0.3 1032 + 1034 4 -3.5 129.5 -34.5 0.3 1033 + 1035 4 -6 133 -36 0.3 1034 + 1036 4 -7.5 136.5 -37 0.3 1035 + 1037 4 -7.5 136.5 -41 0.3 1036 + 1038 4 -11.5 140 -41 0.3 1037 + 1039 4 -11.5 150 -45.5 0.3 1038 + 1040 4 7.5 121 -26.5 0.45 1032 + 1041 4 10 129.5 -26.5 0.45 1040 + 1042 4 12 134 -25 0.45 1041 + 1043 4 13.5 137.5 -27.5 0.45 1042 + 1044 4 14.5 141.5 -31.5 0.45 1043 + 1045 4 16 146.5 -37 0.45 1044 + 1046 4 18 151.5 -37 0.45 1045 + 1047 4 19 155.5 -34.5 0.45 1046 + 1048 4 22 160 -33.5 0.45 1047 + 1049 4 24.5 167.5 -31.5 0.45 1048 + 1050 4 26 172 -32.5 0.45 1049 + 1051 4 30.5 177 -38 0.45 1050 + 1052 4 31.5 180.5 -37 0.45 1051 + 1053 4 33 185.5 -33.5 0.45 1052 + 1054 4 36.5 189.5 -44.5 0.45 1053 + 1055 4 39.5 193.5 -45.5 0.45 1054 + 1056 4 41.5 199 -44.5 0.45 1055 + 1057 4 43 202 -44.5 0.45 1056 + 1058 4 43.5 203.5 -42 0.45 1057 + 1059 4 47.5 207 -48.5 0.45 1058 + 1060 4 50.5 211 -52.5 0.45 1059 + 1061 4 52 215.5 -55 0.45 1060 + 1062 4 56.5 221.5 -57 0.45 1061 + 1063 4 58 226.5 -57 0.45 1062 + 1064 4 62 234.5 -56 0.45 1063 + 1065 4 63 237 -58 0.45 1064 + 1066 4 67.5 240 -43 0.2 1065 + 1067 4 76.5 243.5 -49.5 0.2 1066 + 1068 4 83 248 -38 0.2 1067 + 1069 4 89 250.5 -27.5 0.2 1068 + 1070 4 94.5 254.5 -18 0.2 1069 + 1071 4 99 255.5 -27.5 0.2 1070 + 1072 4 101.5 258.5 -26.5 0.2 1071 + 1073 4 67.5 245 -61 0.45 1065 + 1074 4 69 250.5 -62.5 0.45 1073 + 1075 4 69 256.5 -61 0.3 1074 + 1076 4 67.5 265 -63.5 0.3 1075 + 1077 4 59.5 269.5 -69.5 0.3 1076 + 1078 4 55 272.5 -73 0.3 1077 + 1079 4 53 277 -79 0.3 1078 + 1080 4 51 283.5 -75 0.3 1079 + 1081 4 51 287.5 -74 0.3 1080 + 1082 4 50.5 294.5 -82.5 0.3 1081 + 1083 4 51.5 297.5 -83.5 0.3 1082 + 1084 4 50.5 305 -83.5 0.3 1083 + 1085 4 51.5 311.5 -87.5 0.3 1084 + 1086 4 51.5 315 -93 0.3 1085 + 1087 4 49.5 318 -96 0.3 1086 + 1088 4 49.5 323 -92 0.3 1087 + 1089 4 49.5 331 -93 0.3 1088 + 1090 4 48.5 334.5 -93 0.3 1089 + 1091 4 49.5 340 -92 0.3 1090 + 1092 4 49.5 346 -92 0.3 1091 + 1093 4 51 350 -91 0.3 1092 + 1094 4 52 355 -87.5 0.3 1093 + 1095 4 51 360 -83.5 0.3 1094 + 1096 4 49.5 366 -92 0.3 1095 + 1097 4 53 372 -92 0.15 1096 + 1098 4 54 379 -92 0.15 1097 + 1099 4 53.5 386.5 -90 0.15 1098 + 1100 4 56 389.5 -90 0.15 1099 + 1101 4 44 376.5 -70.5 0.3 1096 + 1102 4 43.5 383.5 -74 0.2 1101 + 1103 4 42 390.5 -68.5 0.2 1102 + 1104 4 40 398.5 -67.5 0.2 1103 + 1105 4 37 404 -69.5 0.2 1104 + 1106 4 33.5 410.5 -62.5 0.2 1105 + 1107 4 26 417.5 -54 0.2 1106 + 1108 4 21 423.5 -65.5 0.2 1107 + 1109 4 17 428 -58 0.2 1108 + 1110 4 16 434.5 -59 0.2 1109 + 1111 4 13 441.5 -60 0.2 1110 + 1112 4 9.5 446 -52.5 0.2 1111 + 1113 4 7.5 452.5 -52.5 0.2 1112 + 1114 4 7.5 459 -59 0.2 1113 + 1115 4 6 463.5 -59 0.2 1114 + 1116 4 2.5 468.5 -60 0.2 1115 + 1117 4 0 477.5 -61 0.2 1116 + 1118 4 -2.5 485.5 -49.5 0.2 1117 + 1119 4 -6.5 493.5 -46.5 0.2 1118 + 1120 4 -6 503 -41 0.2 1119 + 1121 4 -9.5 511.5 -37 0.2 1120 + 1122 4 -12.5 512.5 -33.5 0.2 1121 + 1123 4 -17.5 506.5 -32.5 0.2 1122 + 1124 4 -17.5 506.5 -31.5 0.2 1123 + 1125 4 42 408 -74 0.2 1104 + 1126 4 38.5 417.5 -72 0.2 1125 + 1127 4 37 429 -80 0.2 1126 + 1128 4 34.5 431.5 -88.5 0.2 1127 + 1129 4 31 439.5 -93 0.2 1128 + 1130 4 29 448 -93 0.2 1129 + 1131 4 28.5 455 -96 0.2 1130 + 1132 4 26 467 -102.5 0.2 1131 + 1133 4 25 476 -110 0.2 1132 + 1134 4 22.5 482.5 -120.5 0.2 1133 + 1135 4 22 492 -121.5 0.2 1134 + 1136 4 20.5 495 -124.5 0.2 1135 + 1137 4 21 509 -123.5 0.2 1136 + 1138 4 20 515 -132 0.2 1137 + 1139 4 16 523 -133 0.2 1138 + 1140 4 14.5 529 -137.5 0.2 1139 + 1141 4 11 535 -132 0.2 1140 + 1142 4 75.5 259 -62.5 0.3 1074 + 1143 4 76 262 -61 0.3 1142 + 1144 4 78 267 -61 0.3 1143 + 1145 4 80 271.5 -62.5 0.3 1144 + 1146 4 84.5 276.5 -64.5 0.3 1145 + 1147 4 86 281.5 -63.5 0.3 1146 + 1148 4 88.5 283 -62.5 0.3 1147 + 1149 4 89.5 289.5 -55 0.2 1148 + 1150 4 90.5 300 -58 0.2 1149 + 1151 4 92 306 -58 0.2 1150 + 1152 4 93.5 314.5 -57 0.2 1151 + 1153 4 95.5 319.5 -47.5 0.2 1152 + 1154 4 98 326 -51.5 0.2 1153 + 1155 4 100 332 -51.5 0.2 1154 + 1156 4 105 343 -48.5 0.2 1155 + 1157 4 110 352 -44.5 0.2 1156 + 1158 4 116.5 365 -38 0.2 1157 + 1159 4 119.5 370.5 -32.5 0.2 1158 + 1160 4 124 378 -41 0.2 1159 + 1161 4 126 387 -40 0.2 1160 + 1162 4 124 392 -45.5 0.2 1161 + 1163 4 123.5 401 -49.5 0.2 1162 + 1164 4 122 410 -49.5 0.2 1163 + 1165 4 122 419 -56 0.2 1164 + 1166 4 121 429 -60 0.2 1165 + 1167 4 122 441.5 -59 0.2 1166 + 1168 4 122 450.5 -67.5 0.2 1167 + 1169 4 120.5 457 -66.5 0.2 1168 + 1170 4 121.5 466.5 -67.5 0.2 1169 + 1171 4 125 471.5 -66.5 0.2 1170 + 1172 4 126.5 476.5 -67.5 0.2 1171 + 1173 4 129.5 483 -75 0.2 1172 + 1174 4 129.5 488.5 -78 0.2 1173 + 1175 4 131.5 494 -77 0.2 1174 + 1176 4 133.5 501 -79 0.2 1175 + 1177 4 132.5 504.5 -80 0.2 1176 + 1178 4 133.5 513 -81.5 0.2 1177 + 1179 4 133 519 -83.5 0.2 1178 + 1180 4 133 527.5 -83.5 0.2 1179 + 1181 4 133.5 535.5 -90 0.2 1180 + 1182 4 136 546 -88.5 0.2 1181 + 1183 4 137 550 -91 0.2 1182 + 1184 4 135.5 557 -92 0.2 1183 + 1185 4 135.5 566 -95 0.2 1184 + 1186 4 135.5 566 -92 0.2 1185 + 1187 4 130.5 389.5 -37 0.2 1161 + 1188 4 132 392.5 -37 0.2 1187 + 1189 4 137.5 400 -33.5 0.2 1188 + 1190 4 142.5 407 -30.5 0.2 1189 + 1191 4 145.5 411.5 -22 0.2 1190 + 1192 4 149 417 -21 0.2 1191 + 1193 4 152.5 420.5 -26.5 0.2 1192 + 1194 4 155.5 424 -26.5 0.2 1193 + 1195 4 158.5 426 -22 0.2 1194 + 1196 4 95.5 290 -66.5 0.2 1148 + 1197 4 100.5 295 -64.5 0.2 1196 + 1198 4 105.5 298.5 -68.5 0.2 1197 + 1199 4 109.5 302 -76 0.2 1198 + 1200 4 115 306.5 -81.5 0.2 1199 + 1201 4 124 307.5 -85.5 0.2 1200 + 1202 4 126 308.5 -94 0.2 1201 + 1203 4 8.5 87.5 -12.5 0.8 1027 + 1204 4 15 95 -9.5 0.8 1203 + 1205 4 16 99 -9.5 0.8 1204 + 1206 4 19.5 104.5 -9.5 0.8 1205 + 1207 4 20.5 108 -9.5 0.8 1206 + 1208 4 23 112 -9.5 0.8 1207 + 1209 4 25.5 116.5 -5 0.8 1208 + 1210 4 29 121.5 -5 0.8 1209 + 1211 4 31.5 122.5 -5 0.8 1210 + 1212 4 34 126 -6 0.8 1211 + 1213 4 35.5 130.5 -4 0.8 1212 + 1214 4 39.5 132 5.5 0.45 1213 + 1215 4 42 135 6.5 0.45 1214 + 1216 4 49 136.5 6.5 0.4 1215 + 1217 4 57 139 5.5 0.4 1216 + 1218 4 65 141.5 3.5 0.4 1217 + 1219 4 74 144 3.5 0.4 1218 + 1220 4 82.5 144.5 3.5 0.4 1219 + 1221 4 91 146.5 3.5 0.3 1220 + 1222 4 95 145 2.5 0.3 1221 + 1223 4 100.5 144.5 2.5 0.3 1222 + 1224 4 104.5 143.5 0 0.2 1223 + 1225 4 111.5 144 1 0.2 1224 + 1226 4 112.5 144 3.5 0.2 1225 + 1227 4 36.5 137.5 -2 0.6 1213 + 1228 4 38 142 -2 0.6 1227 + 1229 4 39 144.5 1 0.6 1228 + 1230 4 40 149 1 0.6 1229 + 1231 4 43 149.5 -4 0.2 1230 + 1232 4 47.5 150.5 -4 0.2 1231 + 1233 4 50.5 150 -4 0.2 1232 + 1234 4 56.5 153.5 -9.5 0.2 1233 + 1235 4 61 155.5 -13.5 0.2 1234 + 1236 4 66.5 161.5 -15.5 0.2 1235 + 1237 4 71.5 164 -15.5 0.2 1236 + 1238 4 75 167.5 -7 0.2 1237 + 1239 4 79 170.5 -3 0.2 1238 + 1240 4 83.5 171.5 2.5 0.2 1239 + 1241 4 93 173.5 2.5 0.2 1240 + 1242 4 97.5 177 8.5 0.2 1241 + 1243 4 106 179 9.5 0.2 1242 + 1244 4 111.5 182.5 12 0.2 1243 + 1245 4 119 184 7.5 0.2 1244 + 1246 4 123 185 12 0.2 1245 + 1247 4 41.5 154 0 0.55 1230 + 1248 4 41.5 155.5 0 0.55 1247 + 1249 4 41.5 158.5 -6 0.2 1248 + 1250 4 39.5 166.5 -3 0.2 1249 + 1251 4 38 170 -4 0.2 1250 + 1252 4 39 175 -3 0.2 1251 + 1253 4 40 178.5 -7 0.2 1252 + 1254 4 38.5 184 -8.5 0.2 1253 + 1255 4 39 189.5 -10.5 0.2 1254 + 1256 4 41 194.5 -10.5 0.2 1255 + 1257 4 43 204.5 -13.5 0.2 1256 + 1258 4 44 207.5 -15.5 0.2 1257 + 1259 4 44.5 212.5 -19 0.2 1258 + 1260 4 46.5 217.5 -25 0.2 1259 + 1261 4 48 224.5 -18 0.2 1260 + 1262 4 48 232 -18 0.15 1261 + 1263 4 48 235 -19 0.15 1262 + 1264 4 48 235 -20 0.15 1263 + 1265 4 47.5 169 -4 0.55 1248 + 1266 4 49 174 -5 0.55 1265 + 1267 4 53.5 181 -5 0.55 1266 + 1268 4 56 184 -13.5 0.55 1267 + 1269 4 57.5 188 -14.5 0.55 1268 + 1270 4 59 191 -13.5 0.55 1269 + 1271 4 60.5 195.5 -10.5 0.55 1270 + 1272 4 62.5 202 -10.5 0.2 1271 + 1273 4 65 209 -15.5 0.2 1272 + 1274 4 64.5 214 -18 0.2 1273 + 1275 4 65 221 -18 0.2 1274 + 1276 4 65.5 227.5 -18 0.2 1275 + 1277 4 65 235 -22 0.2 1276 + 1278 4 65 244.5 -14.5 0.2 1277 + 1279 4 62 248 -13.5 0.2 1278 + 1280 4 67.5 204.5 -19 0.6 1271 + 1281 4 73.5 209.5 -18 0.45 1280 + 1282 4 76 213 -19 0.45 1281 + 1283 4 79 218.5 -19 0.45 1282 + 1284 4 80.5 223.5 -30.5 0.2 1283 + 1285 4 82.5 231 -36 0.2 1284 + 1286 4 84 238 -37 0.2 1285 + 1287 4 85.5 243.5 -37 0.2 1286 + 1288 4 86.5 247.5 -33.5 0.2 1287 + 1289 4 88.5 254 -42 0.2 1288 + 1290 4 90 257 -48.5 0.2 1289 + 1291 4 89 261.5 -56 0.2 1290 + 1292 4 91 267 -58 0.2 1291 + 1293 4 92 271 -62.5 0.2 1292 + 1294 4 94.5 273 -62.5 0.2 1293 + 1295 4 100 279 -62.5 0.2 1294 + 1296 4 103.5 283 -61 0.2 1295 + 1297 4 103 288.5 -64.5 0.2 1296 + 1298 4 103.5 290.5 -64.5 0.2 1297 + 1299 4 104.5 295.5 -66.5 0.2 1298 + 1300 4 106.5 303.5 -63.5 0.2 1299 + 1301 4 106.5 323 -61 0.2 1300 + 1302 4 106 333.5 -63.5 0.2 1301 + 1303 4 108.5 288 -61 0.3 1296 + 1304 4 112 291.5 -59 0.3 1303 + 1305 4 113 295 -62.5 0.3 1304 + 1306 4 119 298.5 -59 0.2 1305 + 1307 4 123 303 -64.5 0.2 1306 + 1308 4 128.5 308.5 -64.5 0.2 1307 + 1309 4 131 315 -59 0.2 1308 + 1310 4 135.5 321 -63.5 0.2 1309 + 1311 4 140.5 324.5 -74 0.2 1310 + 1312 4 144.5 329 -78 0.2 1311 + 1313 4 146 333.5 -79 0.2 1312 + 1314 4 149.5 338.5 -80 0.2 1313 + 1315 4 153.5 343 -78 0.2 1314 + 1316 4 149 351 -84.5 0.2 1315 + 1317 4 148 356 -82.5 0.2 1316 + 1318 4 145 365 -81.5 0.2 1317 + 1319 4 141 369 -83.5 0.2 1318 + 1320 4 135 378 -86.5 0.2 1319 + 1321 4 133 384.5 -88.5 0.2 1320 + 1322 4 130.5 389.5 -91 0.2 1321 + 1323 4 129.5 394 -93 0.2 1322 + 1324 4 127 406.5 -98 0.2 1323 + 1325 4 124 413 -92 0.2 1324 + 1326 4 125.5 422 -91 0.2 1325 + 1327 4 127.5 429 -86.5 0.2 1326 + 1328 4 128 431 -91 0.2 1327 + 1329 4 135 454 -91 0.2 1328 + 1330 4 138.5 464.5 -83.5 0.2 1329 + 1331 4 142 474 -82.5 0.2 1330 + 1332 4 144 480.5 -72 0.2 1331 + 1333 4 146 488 -81.5 0.2 1332 + 1334 4 142.5 494.5 -70.5 0.2 1333 + 1335 4 145 506 -73 0.2 1334 + 1336 4 147.5 519.5 -69.5 0.2 1335 + 1337 4 148.5 531 -66.5 0.2 1336 + 1338 4 147 540.5 -73 0.2 1337 + 1339 4 144 550.5 -66.5 0.2 1338 + 1340 4 138.5 552 -65.5 0.15 1339 + 1341 4 131.5 557.5 -66.5 0.15 1340 + 1342 4 131 438 -101.5 0.2 1328 + 1343 4 130.5 447.5 -101.5 0.2 1342 + 1344 4 130 454 -114 0.2 1343 + 1345 4 127 464.5 -113 0.2 1344 + 1346 4 128.5 469.5 -119.5 0.2 1345 + 1347 4 128.5 477 -118.5 0.2 1346 + 1348 4 126.5 482.5 -128 0.2 1347 + 1349 4 121.5 491.5 -131 0.2 1348 + 1350 4 117 495 -133 0.2 1349 + 1351 4 115.5 501.5 -135.5 0.2 1350 + 1352 4 112 510.5 -138.5 0.2 1351 + 1353 4 108 518.5 -142.5 0.2 1352 + 1354 4 105.5 521 -140.5 0.2 1353 + 1355 4 101.5 525.5 -140.5 0.2 1354 + 1356 4 97.5 536 -145 0.2 1355 + 1357 4 93 539 -146 0.2 1356 + 1358 4 90.5 542 -146 0.2 1357 + 1359 4 81 220 -18 0.3 1283 + 1360 4 86.5 225 -15.5 0.3 1359 + 1361 4 91.5 231 -17 0.3 1360 + 1362 4 96 236.5 -18 0.3 1361 + 1363 4 97 239.5 -20 0.3 1362 + 1364 4 102 243 -19 0.3 1363 + 1365 4 106 247 -19 0.3 1364 + 1366 4 111.5 253.5 -19 0.3 1365 + 1367 4 115.5 256 -19 0.3 1366 + 1368 4 118 259.5 -20 0.3 1367 + 1369 4 120.5 263 -19 0.3 1368 + 1370 4 121.5 265 -18 0.3 1369 + 1371 4 126 270 -17 0.3 1370 + 1372 4 127.5 274.5 -14.5 0.3 1371 + 1373 4 130.5 280 -14.5 0.3 1372 + 1374 4 132.5 285 -15.5 0.3 1373 + 1375 4 134.5 288 -15.5 0.2 1374 + 1376 4 135.5 294 -17 0.2 1375 + 1377 4 135 298 -18 0.2 1376 + 1378 4 135.5 305 -18 0.2 1377 + 1379 4 136 311 -15.5 0.2 1378 + 1380 4 138 316.5 -12.5 0.2 1379 + 1381 4 140 321 -22 0.2 1380 + 1382 4 139 327.5 -20 0.2 1381 + 1383 4 141.5 334.5 -25 0.2 1382 + 1384 4 143 339 -27.5 0.2 1383 + 1385 4 144.5 344.5 -20 0.2 1384 + 1386 4 144 349 -29.5 0.2 1385 + 1387 4 145.5 357.5 -29.5 0.2 1386 + 1388 4 145.5 368 -40 0.2 1387 + 1389 4 143.5 372 -43 0.2 1388 + 1390 4 142.5 378.5 -46.5 0.2 1389 + 1391 4 142.5 384.5 -46.5 0.2 1390 + 1392 4 143 389 -48.5 0.2 1391 + 1393 4 142.5 396 -47.5 0.2 1392 + 1394 4 143 415.5 -42 0.2 1393 + 1395 4 144 426.5 -44.5 0.2 1394 + 1396 4 143.5 433.5 -44.5 0.2 1395 + 1397 4 143.5 441.5 -46.5 0.2 1396 + 1398 4 140.5 459 -32.5 0.2 1397 + 1399 4 142 464 -27.5 0.2 1398 + 1400 4 141 475 -32.5 0.2 1399 + 1401 4 143 482.5 -33.5 0.2 1400 + 1402 4 143.5 492.5 -28.5 0.2 1401 + 1403 4 145 501 -21 0.2 1402 + 1404 4 145 507 -27.5 0.2 1403 + 1405 4 142 513.5 -20 0.2 1404 + 1406 4 143.5 522 -17 0.2 1405 + 1407 4 145.5 532.5 -9.5 0.2 1406 + 1408 4 147.5 541 -9.5 0.2 1407 + 1409 4 147.5 541 2.5 0.2 1408 + 1410 3 2 1 3.5 1.8 1 + 1411 3 5.5 -2.5 3.5 1.45 1410 + 1412 3 6.5 -6 2.5 1.45 1411 + 1413 3 6.5 -8 5.5 1.45 1412 + 1414 3 7 -9 0 0.55 1413 + 1415 3 7 -18.5 -1 0.55 1414 + 1416 3 6 -25.5 -6 0.55 1415 + 1417 3 4.5 -30.5 -6 0.55 1416 + 1418 3 3.5 -33 -6 0.45 1417 + 1419 3 4 -40.5 -6 0.45 1418 + 1420 3 4 -49 -10.5 0.45 1419 + 1421 3 5.5 -57.5 -8.5 0.45 1420 + 1422 3 5.5 -61 -8.5 0.45 1421 + 1423 3 6 -64.5 -8.5 0.45 1422 + 1424 3 3.5 -69 -8.5 0.45 1423 + 1425 3 5.5 -75 -7 0.45 1424 + 1426 3 5 -86 -6 0.45 1425 + 1427 3 6 -96 -6 0.45 1426 + 1428 3 5.5 -105 -5 0.45 1427 + 1429 3 4 -113.5 -9.5 0.45 1428 + 1430 3 5 -119 -9.5 0.4 1429 + 1431 3 6.5 -125.5 -9.5 0.4 1430 + 1432 3 5.5 -127.5 -9.5 0.4 1431 + 1433 3 5.5 -137.5 -9.5 0.4 1432 + 1434 3 3.5 -142.5 -7 0.4 1433 + 1435 3 4.5 -149.5 -6 0.4 1434 + 1436 3 4 -155 -12.5 0.4 1435 + 1437 3 4 -162 -12.5 0.4 1436 + 1438 3 2.5 -165.5 -12.5 0.4 1437 + 1439 3 2 -169.5 -12.5 0.3 1438 + 1440 3 4 -172 -12.5 0.3 1439 + 1441 3 2 -176.5 -11.5 0.3 1440 + 1442 3 3.5 -179 -20 0.3 1441 + 1443 3 3.5 -184 -19 0.3 1442 + 1444 3 0.5 -186.5 -19 0.3 1443 + 1445 3 -0.5 -189.5 -17 0.3 1444 + 1446 3 -1 -192 -15.5 0.3 1445 + 1447 3 -1.5 -193.5 -23 0.2 1446 + 1448 3 -2.5 -197 -21 0.2 1447 + 1449 3 -3 -200.5 -26.5 0.2 1448 + 1450 3 -4 -204 -26.5 0.2 1449 + 1451 3 7.5 -13 5.5 0.2 1414 + 1452 3 6 -16.5 9.5 0.3 1451 + 1453 3 8 -19 13 0.3 1452 + 1454 3 9 -29 17 0.3 1453 + 1455 3 9 -33 20.5 0.3 1454 + 1456 3 4.5 -38 20.5 0.3 1455 + 1457 3 3.5 -41.5 20.5 0.3 1456 + 1458 3 2 -46 19 0.3 1457 + 1459 3 1 -50 18 0.3 1458 + 1460 3 -0.5 -53 18 0.3 1459 + 1461 3 -4 -57.5 24.5 0.3 1460 + 1462 3 -3.5 -59 25.5 0.3 1461 + 1463 3 -3.5 -64 26.5 0.3 1462 + 1464 3 -2.5 -73.5 31 0.3 1463 + 1465 3 -2.5 -82.5 43.5 0.3 1464 + 1466 3 -1 -88.5 37 0.3 1465 + 1467 3 -1.5 -94 38.5 0.3 1466 + 1468 3 -2.5 -97.5 42.5 0.3 1467 + 1469 3 0 -99.5 48 0.3 1468 + 1470 3 1.5 -107 53 0.3 1469 + 1471 3 2.5 -110.5 56.5 0.3 1470 + 1472 3 3.5 -114 56.5 0.3 1471 + 1473 3 3 -116.5 60.5 0.3 1472 + 1474 3 2.5 -121.5 68 0.2 1473 + 1475 3 1.5 -125 69 0.2 1474 + 1476 3 2 -127 67 0.2 1475 + 1477 3 1.5 -130 67 0.2 1476 + 1478 3 -7 -65.5 25.5 0.3 1462 + 1479 3 -8 -69.5 25.5 0.3 1478 + 1480 3 -10 -74 30 0.3 1479 + 1481 3 -11.5 -79 28.5 0.3 1480 + 1482 3 -13 -83.5 28.5 0.3 1481 + 1483 3 -16.5 -88.5 35 0.3 1482 + 1484 3 -18.5 -94 36 0.3 1483 + 1485 3 -21.5 -100 36 0.3 1484 + 1486 3 -22.5 -107 37 0.3 1485 + 1487 3 -24 -114 37 0.3 1486 + 1488 3 -25 -123 36 0.3 1487 + 1489 3 -26.5 -128 38.5 0.3 1488 + 1490 3 -27.5 -132 39.5 0.3 1489 + 1491 3 -30 -138 38.5 0.3 1490 + 1492 3 -31 -142 39.5 0.3 1491 + 1493 3 -32.5 -146 39.5 0.3 1492 + 1494 3 -33 -149 39.5 0.3 1493 + 1495 3 -34.5 -152.5 39.5 0.3 1494 + 1496 3 -35 -155 39.5 0.3 1495 + 1497 3 -34.5 -158.5 38.5 0.3 1496 + 1498 3 -33 -163.5 38.5 0.2 1497 + 1499 3 -34 -167 38.5 0.2 1498 + 1500 3 -35 -169 38.5 0.2 1499 + 1501 3 -33 -170.5 38.5 0.2 1500 + 1502 3 -34.5 -173.5 36 0.2 1501 + 1503 3 -33.5 -174.5 37 0.2 1502 + 1504 3 7.5 -10 -9.5 0.3 1451 + 1505 3 12.5 -16 -17 0.3 1504 + 1506 3 14.5 -19 -17 0.3 1505 + 1507 3 15 -21 -17 0.3 1506 + 1508 3 16.5 -27.5 -15.5 0.3 1507 + 1509 3 16 -32 -24 0.3 1508 + 1510 3 19 -37.5 -23 0.3 1509 + 1511 3 16.5 -42.5 -27.5 0.3 1510 + 1512 3 17 -45.5 -26.5 0.3 1511 + 1513 3 18.5 -49.5 -25 0.3 1512 + 1514 3 20 -55.5 -24 0.3 1513 + 1515 3 23 -60.5 -23 0.3 1514 + 1516 3 22 -64 -29.5 0.3 1515 + 1517 3 23.5 -67 -33.5 0.3 1516 + 1518 3 25 -72 -38 0.3 1517 + 1519 3 25 -76 -42 0.3 1518 + 1520 3 26.5 -81 -47.5 0.3 1519 + 1521 3 29 -86.5 -47.5 0.3 1520 + 1522 3 28 -89 -51.5 0.3 1521 + 1523 3 30 -96 -56 0.3 1522 + 1524 3 30 -101.5 -61 0.3 1523 + 1525 3 30 -107.5 -65.5 0.3 1524 + 1526 3 32 -112.5 -64.5 0.3 1525 + 1527 3 35 -119 -67.5 0.3 1526 + 1528 3 36 -123.5 -74 0.3 1527 + 1529 3 37.5 -129 -77 0.3 1528 + 1530 3 38.5 -132 -81.5 0.3 1529 + 1531 3 41.5 -136.5 -83.5 0.3 1530 + 1532 3 42.5 -141.5 -87.5 0.3 1531 + 1533 3 41 -146.5 -87.5 0.2 1532 + 1534 3 42 -152 -95 0.2 1533 + 1535 3 43 -157 -91 0.2 1534 + 1536 3 43.5 -162 -96 0.2 1535 + 1537 3 44 -164.5 -98 0.2 1536 + 1538 3 43.5 -167 -104.5 0.2 1537 + 1539 3 41 -170.5 -99.5 0.2 1538 + 1540 3 39.5 -173 -100.5 0.15 1539 + 1541 3 18 -21 -15.5 0.3 1507 + 1542 3 22.5 -26.5 -23 0.3 1541 + 1543 3 25 -29 -25 0.3 1542 + 1544 3 29 -35 -26.5 0.3 1543 + 1545 3 33 -42 -30.5 0.3 1544 + 1546 3 36 -45 -36 0.3 1545 + 1547 3 39.5 -48 -37 0.3 1546 + 1548 3 38.5 -54 -37 0.3 1547 + 1549 3 40.5 -60 -37 0.3 1548 + 1550 3 41.5 -66 -37 0.3 1549 + 1551 3 40 -72 -37 0.3 1550 + 1552 3 41.5 -81 -34.5 0.3 1551 + 1553 3 44 -90.5 -34.5 0.3 1552 + 1554 3 46 -97 -34.5 0.3 1553 + 1555 3 46.5 -106 -34.5 0.3 1554 + 1556 3 48 -118 -41 0.3 1555 + 1557 3 46 -128.5 -42 0.3 1556 + 1558 3 48 -135 -49.5 0.3 1557 + 1559 3 47.5 -143 -49.5 0.3 1558 + 1560 3 49.5 -145.5 -49.5 0.3 1559 + 1561 3 47.5 -152.5 -48.5 0.3 1560 + 1562 3 48.5 -161.5 -46.5 0.3 1561 + 1563 3 47 -165.5 -46.5 0.3 1562 + 1564 3 46.5 -169.5 -50.5 0.3 1563 + 1565 3 48.5 -172 -49.5 0.3 1564 + 1566 3 46.5 -176.5 -49.5 0.3 1565 + 1567 3 48 -181.5 -55 0.3 1566 + 1568 3 47 -186 -54 0.2 1567 + 1569 3 46 -189 -55 0.2 1568 + 1570 3 43 -51 -31.5 0.3 1547 + 1571 3 46.5 -55 -32.5 0.3 1570 + 1572 3 49 -58.5 -39 0.3 1571 + 1573 3 53.5 -59.5 -39 0.3 1572 + 1574 3 54.5 -62.5 -41 0.3 1573 + 1575 3 59 -63.5 -45.5 0.3 1574 + 1576 3 62.5 -64.5 -47.5 0.3 1575 + 1577 3 64 -69.5 -45.5 0.3 1576 + 1578 3 64 -73 -44.5 0.3 1577 + 1579 3 63.5 -74.5 -50.5 0.3 1578 + 1580 3 6.5 -12.5 -1 0.3 1504 + 1581 3 10.5 -20.5 -2 0.3 1580 + 1582 3 14 -29.5 -2 0.3 1581 + 1583 3 17 -34.5 0 0.3 1582 + 1584 3 20 -40.5 0 0.3 1583 + 1585 3 22 -46 1 0.3 1584 + 1586 3 27.5 -51.5 0 0.3 1585 + 1587 3 28 -55 0 0.3 1586 + 1588 3 30 -58 1 0.3 1587 + 1589 3 33 -62 1 0.3 1588 + 1590 3 35 -63.5 3.5 0.3 1589 + 1591 3 35.5 -68.5 3.5 0.3 1590 + 1592 3 38 -72.5 2.5 0.2 1591 + 1593 3 39.5 -81.5 5.5 0.2 1592 + 1594 3 42.5 -86 5.5 0.2 1593 + 1595 3 44 -87.5 12 0.2 1594 + 1596 3 46.5 -90.5 14 0.2 1595 + 1597 3 49.5 -93 16 0.2 1596 + 1598 3 52 -97.5 18 0.2 1597 + 1599 3 55 -98.5 19 0.2 1598 + 1600 3 57.5 -100 19 0.2 1599 + 1601 3 40 -69 -3 0.3 1590 + 1602 3 42.5 -72 -5 0.3 1601 + 1603 3 47 -77 -10.5 0.3 1602 + 1604 3 49 -80.5 -5 0.3 1603 + 1605 3 53.5 -83 -13.5 0.3 1604 + 1606 3 56 -87 -12.5 0.3 1605 + 1607 3 58 -93 -14.5 0.3 1606 + 1608 3 59.5 -97 -19 0.3 1607 + 1609 3 63 -103.5 -21 0.3 1608 + 1610 3 66 -105.5 -21 0.3 1609 + 1611 3 67.5 -114.5 -26.5 0.3 1610 + 1612 3 70 -122 -24 0.3 1611 + 1613 3 71.5 -130.5 -27.5 0.3 1612 + 1614 3 71 -132.5 -27.5 0.2 1613 + 1615 3 71.5 -135 -28.5 0.2 1614 + 1616 3 71.5 -140 -27.5 0.15 1615 + 1617 3 71.5 -140 -28.5 0.15 1616 + 1618 3 8 -12.5 -5 0.4 1580 + 1619 3 13.5 -13 -3 0.4 1618 + 1620 3 15 -17.5 2.5 0.4 1619 + 1621 3 21 -20.5 3.5 0.4 1620 + 1622 3 27 -23.5 5.5 0.4 1621 + 1623 3 31 -27 2.5 0.3 1622 + 1624 3 34.5 -32.5 6.5 0.3 1623 + 1625 3 39 -38 7.5 0.3 1624 + 1626 3 41.5 -42 14 0.3 1625 + 1627 3 43 -45.5 12 0.3 1626 + 1628 3 46 -50.5 12 0.3 1627 + 1629 3 49.5 -53.5 12 0.3 1628 + 1630 3 51 -56 13 0.3 1629 + 1631 3 55.5 -54.5 21.5 0.3 1630 + 1632 3 58 -55 26.5 0.3 1631 + 1633 3 62.5 -55.5 32 0.3 1632 + 1634 3 64.5 -59 37 0.3 1633 + 1635 3 67.5 -63 33 0.3 1634 + 1636 3 70 -66.5 34 0.3 1635 + 1637 3 76.5 -68.5 34 0.3 1636 + 1638 3 81 -73.5 36 0.3 1637 + 1639 3 82.5 -76 36 0.3 1638 + 1640 3 84.5 -80 35 0.15 1639 + 1641 3 9.5 -18 19 0.3 1618 + 1642 3 11 -19.5 20.5 0.3 1641 + 1643 3 13.5 -20.5 19 0.3 1642 + 1644 3 19 -25.5 20.5 0.3 1643 + 1645 3 22 -27 24.5 0.3 1644 + 1646 3 22 -29 22.5 0.3 1645 + 1647 3 24.5 -32 32 0.3 1646 + 1648 3 24.5 -31.5 39.5 0.3 1647 + 1649 3 26 -34.5 40.5 0.3 1648 + 1650 3 27 -35.5 39.5 0.3 1649 + 1651 3 28 -39 42.5 0.3 1650 + 1652 3 30 -41 48 0.3 1651 + 1653 3 30 -43.5 48 0.3 1652 + 1654 3 29 -46 49 0.3 1653 + 1655 3 31.5 -46.5 50 0.3 1654 + 1656 3 31.5 -49 53 0.3 1655 + 1657 3 31.5 -50.5 54 0.3 1656 + 1658 3 34 -52.5 56.5 0.3 1657 + 1659 3 33 -54.5 61.5 0.3 1658 + 1660 3 32 -57.5 62.5 0.3 1659 + 1661 3 33 -59.5 62.5 0.3 1660 + 1662 3 32.5 -62 67 0.3 1661 + 1663 3 34.5 -65 64.5 0.3 1662 + 1664 3 34 -66.5 64.5 0.3 1663 + 1665 3 33.5 -69.5 68 0.3 1664 + 1666 3 33.5 -71 71 0.3 1665 + 1667 3 35 -75 75.5 0.3 1666 + 1668 3 34 -78 80.5 0.3 1667 + 1669 3 36.5 -80.5 87 0.3 1668 + 1670 3 37 -83.5 91 0.3 1669 + 1671 3 37 -86 86 0.2 1670 + 1672 3 35 -87 85 0.2 1671 + 1673 3 35 -87 86 0.2 1672 + 1674 3 31 -32 32 0.3 1648 + 1675 3 33 -35 36 0.3 1674 + 1676 3 38 -38.5 36 0.3 1675 + 1677 3 41.5 -41.5 39.5 0.3 1676 + 1678 3 45 -44 41.5 0.3 1677 + 1679 3 49.5 -47 48 0.3 1678 + 1680 3 51 -49 50 0.3 1679 + 1681 3 53 -51.5 50 0.3 1680 + 1682 3 56 -52.5 49 0.3 1681 + 1683 3 58 -55 54 0.3 1682 + 1684 3 60 -58 58.5 0.3 1683 + 1685 3 61.5 -58 58.5 0.3 1684 + 1686 3 64 -63 59.5 0.2 1685 + 1687 3 66 -65 58.5 0.2 1686 + 1688 3 67.5 -66.5 58.5 0.2 1687 + 1689 3 69 -68 57.5 0.2 1688 + 1690 3 74 -72.5 58.5 0.2 1689 + 1691 3 0 0 -4 0.65 1 + 1692 3 0.5 -5 -4 0.65 1691 + 1693 3 0 -10.5 -3 0.65 1692 + 1694 3 -0.5 -14 -3 0.65 1693 + 1695 3 -1 -17.5 -3 0.65 1694 + 1696 3 -2.5 -21.5 -1 0.65 1695 + 1697 3 -2.5 -22.5 -1 0.65 1696 + 1698 3 -4.5 -27 -1 0.45 1697 + 1699 3 -5 -30 -2 0.45 1698 + 1700 3 -6 -32 -2 0.45 1699 + 1701 3 -4 -35.5 -2 0.45 1700 + 1702 3 -5.5 -39 -2 0.45 1701 + 1703 3 -5.5 -41.5 -2 0.4 1702 + 1704 3 -3 -46 -2 0.4 1703 + 1705 3 -4.5 -51 3.5 0.4 1704 + 1706 3 -4.5 -50.5 2.5 0.4 1705 + 1707 3 -6.5 -56.5 0 0.4 1706 + 1708 3 -6.5 -63.5 1 0.4 1707 + 1709 3 -6 -69 1 0.4 1708 + 1710 3 -7 -71 1 0.4 1709 + 1711 3 -7.5 -73.5 2.5 0.4 1710 + 1712 3 -9 -77 0 0.4 1711 + 1713 3 -8 -80 1 0.4 1712 + 1714 3 -10 -84 -4 0.4 1713 + 1715 3 -11.5 -88 -4 0.4 1714 + 1716 3 -10 -94.5 -5 0.4 1715 + 1717 3 -11 -98.5 -5 0.4 1716 + 1718 3 -13.5 -104.5 -4 0.4 1717 + 1719 3 -13.5 -111 -8.5 0.4 1718 + 1720 3 -15 -115.5 -7 0.4 1719 + 1721 3 -16.5 -120.5 -7 0.4 1720 + 1722 3 -18.5 -126 -8.5 0.4 1721 + 1723 3 -19.5 -129 -6 0.4 1722 + 1724 3 -20 -133 -9.5 0.3 1723 + 1725 3 -20.5 -137.5 -9.5 0.3 1724 + 1726 3 -20 -142.5 -8.5 0.3 1725 + 1727 3 -20 -144.5 -8.5 0.3 1726 + 1728 3 -19 -148 -11.5 0.3 1727 + 1729 3 -19 -149.5 -15.5 0.3 1728 + 1730 3 -18.5 -154.5 -12.5 0.3 1729 + 1731 3 -20.5 -157 -12.5 0.3 1730 + 1732 3 -22 -160.5 -12.5 0.3 1731 + 1733 3 -20.5 -165 -12.5 0.2 1732 + 1734 3 -18.5 -166 -20 0.2 1733 + 1735 3 -2.5 -58.5 2.5 0.3 1706 + 1736 3 0 -67 8.5 0.3 1735 + 1737 3 0 -76.5 9.5 0.3 1736 + 1738 3 0.5 -87 9.5 0.3 1737 + 1739 3 0.5 -93.5 16 0.3 1738 + 1740 3 0 -97 15 0.3 1739 + 1741 3 0 -102.5 18 0.3 1740 + 1742 3 -0.5 -107.5 23.5 0.3 1741 + 1743 3 0.5 -113 26.5 0.3 1742 + 1744 3 2.5 -119 23.5 0.3 1743 + 1745 3 5 -127.5 23.5 0.3 1744 + 1746 3 2.5 -135.5 24.5 0.3 1745 + 1747 3 1 -136.5 25.5 0.3 1746 + 1748 3 2 -151.5 30 0.3 1747 + 1749 3 3.5 -158 31 0.3 1748 + 1750 3 3 -161.5 31 0.2 1749 + 1751 3 4.5 -163.5 31 0.3 1750 + 1752 3 3.5 -168.5 31 0.3 1751 + 1753 3 3.5 -172.5 32 0.3 1752 + 1754 3 5 -178 31 0.3 1753 + 1755 3 5.5 -184 31 0.2 1754 + 1756 3 5.5 -187.5 25.5 0.2 1755 + 1757 3 10 -191 27.5 0.2 1756 + 1758 3 9 -194.5 26.5 0.2 1757 + 1759 3 0.5 -28.5 -4 0.4 1697 + 1760 3 2.5 -32 -5 0.4 1759 + 1761 3 4 -35 -6 0.4 1760 + 1762 3 6.5 -41 -6 0.4 1761 + 1763 3 9 -46 -6 0.4 1762 + 1764 3 11.5 -51 -5 0.4 1763 + 1765 3 14 -57 -3 0.4 1764 + 1766 3 16 -63.5 -3 0.4 1765 + 1767 3 19 -67.5 -6 0.4 1766 + 1768 3 19 -67.5 -5 0.4 1767 + 1769 3 21 -74.5 -3 0.3 1768 + 1770 3 22.5 -79 -6 0.3 1769 + 1771 3 23.5 -85 -11.5 0.3 1770 + 1772 3 25 -90 -13.5 0.3 1771 + 1773 3 26.5 -97.5 -8.5 0.3 1772 + 1774 3 27 -106 -6 0.3 1773 + 1775 3 28 -112 -8.5 0.3 1774 + 1776 3 26.5 -117 -6 0.3 1775 + 1777 3 28 -121.5 -7 0.3 1776 + 1778 3 29 -125 -10.5 0.3 1777 + 1779 3 31.5 -134 -11.5 0.3 1778 + 1780 3 33 -137 -9.5 0.3 1779 + 1781 3 34 -148 -9.5 0.3 1780 + 1782 3 36.5 -150.5 -9.5 0.3 1781 + 1783 3 38 -155.5 -12.5 0.3 1782 + 1784 3 38.5 -160 -12.5 0.2 1783 + 1785 3 37.5 -164.5 -8.5 0.2 1784 + 1786 3 35.5 -166 -8.5 0.2 1785 + 1787 3 34.5 -166.5 -7 0.2 1786 + 1788 3 24 -76 -12.5 0.3 1768 + 1789 3 25.5 -78.5 -13.5 0.3 1788 + 1790 3 28 -83.5 -10.5 0.3 1789 + 1791 3 29.5 -88 -10.5 0.3 1790 + 1792 3 30.5 -91 -14.5 0.3 1791 + 1793 3 32.5 -96 -14.5 0.3 1792 + 1794 3 35 -99 -14.5 0.3 1793 + 1795 3 36 -101 -14.5 0.3 1794 + 1796 3 39 -104 -18 0.3 1795 + 1797 3 40.5 -111 -18 0.3 1796 + 1798 3 45.5 -116 -20 0.3 1797 + 1799 3 46.5 -121 -20 0.3 1798 + 1800 3 50.5 -126 -21 0.3 1799 + 1801 3 50.5 -130 -26.5 0.3 1800 + 1802 3 54 -138 -26.5 0.3 1801 + 1803 3 56.5 -143.5 -29.5 0.3 1802 + 1804 3 57.5 -149 -29.5 0.3 1803 + 1805 3 59.5 -154.5 -32.5 0.3 1804 + 1806 3 62.5 -160.5 -32.5 0.3 1805 + 1807 3 62 -166 -34.5 0.3 1806 + 1808 3 64.5 -169 -34.5 0.3 1807 + 1809 3 66 -173 -39 0.3 1808 + 1810 3 66 -176.5 -41 0.3 1809 + 1811 3 67 -179.5 -45.5 0.2 1810 + 1812 3 3 -17 -5 0.3 1694 + 1813 3 6 -21.5 -5 0.3 1812 + 1814 3 9 -24 -5 0.3 1813 + 1815 3 12 -29 -4 0.3 1814 + 1816 3 13 -32.5 -3 0.3 1815 + 1817 3 16 -34.5 -3 0.3 1816 + 1818 3 18.5 -38.5 -3 0.3 1817 + 1819 3 23 -41.5 -3 0.3 1818 + 1820 3 26 -44 -5 0.3 1819 + 1821 3 28.5 -48.5 -5 0.3 1820 + 1822 3 33 -52.5 -5 0.3 1821 + 1823 3 35.5 -53.5 -5 0.3 1822 + 1824 3 35 -57.5 -6 0.3 1823 + 1825 3 35 -64 -6 0.3 1824 + 1826 3 36 -70.5 -8.5 0.3 1825 + 1827 3 34.5 -75.5 -8.5 0.3 1826 + 1828 3 34 -81.5 -5 0.3 1827 + 1829 3 34.5 -90.5 -5 0.3 1828 + 1830 3 33 -95.5 -6 0.3 1829 + 1831 3 35.5 -99 -6 0.3 1830 + 1832 3 34 -101.5 -3 0.3 1831 + 1833 3 34 -105.5 -3 0.3 1832 + 1834 3 36 -110.5 -3 0.3 1833 + 1835 3 37 -114 -1 0.3 1834 + 1836 3 37.5 -121.5 -3 0.3 1835 + 1837 3 38 -127.5 3.5 0.3 1836 + 1838 3 38.5 -134.5 3.5 0.3 1837 + 1839 3 38 -136 2.5 0.3 1838 + 1840 3 41 -138.5 2.5 0.3 1839 + 1841 3 40.5 -141.5 2.5 0.3 1840 + 1842 3 43.5 -148.5 2.5 0.3 1841 + 1843 3 46.5 -155 -4 0.3 1842 + 1844 3 47.5 -158.5 -3 0.2 1843 + 1845 3 50 -164.5 -8.5 0.2 1844 + 1846 3 50 -169.5 -6 0.2 1845 + 1847 3 38 -63.5 -6 0.3 1824 + 1848 3 41.5 -73.5 -6 0.3 1847 + 1849 3 46.5 -83 -6 0.3 1848 + 1850 3 48 -87 -5 0.3 1849 + 1851 3 54 -90.5 -5 0.3 1850 + 1852 3 57.5 -95.5 -5 0.3 1851 + 1853 3 66 -102 -5 0.3 1852 + 1854 3 73 -104.5 -4 0.3 1853 + 1855 3 76.5 -110 -3 0.3 1854 + 1856 3 82 -114.5 -2 0.3 1855 + 1857 3 88.5 -117 -2 0.3 1856 + 1858 3 -3.5 0 16 0.85 1 + 1859 3 -7 -5.5 15 0.85 1858 + 1860 3 -8.5 -10 21.5 0.85 1859 + 1861 3 -12.5 -16 21.5 0.85 1860 + 1862 3 -16.5 -22 18 0.85 1861 + 1863 3 -17 -25 21.5 0.85 1862 + 1864 3 -20 -29.5 22.5 0.85 1863 + 1865 3 -22 -34 28.5 0.65 1864 + 1866 3 -25 -40.5 17 0.4 1865 + 1867 3 -28.5 -42 15 0.4 1866 + 1868 3 -31.5 -46 20.5 0.4 1867 + 1869 3 -33.5 -50 21.5 0.4 1868 + 1870 3 -35.5 -50 21.5 0.4 1869 + 1871 3 -37 -52.5 21.5 0.4 1870 + 1872 3 -40 -55 18 0.4 1871 + 1873 3 -44.5 -56.5 18 0.4 1872 + 1874 3 -47 -65 18 0.4 1873 + 1875 3 -49.5 -70.5 13 0.4 1874 + 1876 3 -50.5 -74 13 0.4 1875 + 1877 3 -51 -75.5 13 0.4 1876 + 1878 3 -53 -78 12 0.4 1877 + 1879 3 -54.5 -82 12 0.4 1878 + 1880 3 -56.5 -86.5 12 0.4 1879 + 1881 3 -59 -91 12 0.4 1880 + 1882 3 -60 -94 12 0.4 1881 + 1883 3 -61.5 -99.5 12 0.4 1882 + 1884 3 -64.5 -101 12 0.4 1883 + 1885 3 -68 -110 11 0.4 1884 + 1886 3 -70.5 -114 11 0.4 1885 + 1887 3 -74 -117.5 11 0.4 1886 + 1888 3 -73.5 -120 12 0.3 1887 + 1889 3 -76 -127.5 12 0.3 1888 + 1890 3 -79.5 -133 12 0.3 1889 + 1891 3 -82 -138.5 13 0.3 1890 + 1892 3 -82.5 -145 12 0.3 1891 + 1893 3 -84.5 -150.5 11 0.3 1892 + 1894 3 -87.5 -154 11 0.3 1893 + 1895 3 -21.5 -42 26.5 0.3 1865 + 1896 3 -22 -47.5 25.5 0.3 1895 + 1897 3 -23.5 -51.5 26.5 0.3 1896 + 1898 3 -25 -56.5 23.5 0.3 1897 + 1899 3 -24.5 -63.5 23.5 0.3 1898 + 1900 3 -25.5 -73 23.5 0.3 1899 + 1901 3 -28.5 -78 22.5 0.3 1900 + 1902 3 -28 -82.5 22.5 0.3 1901 + 1903 3 -30 -89 22.5 0.3 1902 + 1904 3 -31.5 -93 22.5 0.3 1903 + 1905 3 -31.5 -95 22.5 0.3 1904 + 1906 3 -31 -100.5 22.5 0.3 1905 + 1907 3 -32.5 -106 23.5 0.3 1906 + 1908 3 -33.5 -112.5 23.5 0.3 1907 + 1909 3 -35 -116 22.5 0.3 1908 + 1910 3 -36.5 -122.5 22.5 0.3 1909 + 1911 3 -38.5 -125 22.5 0.3 1910 + 1912 3 -37 -128 22.5 0.3 1911 + 1913 3 -38 -132 22.5 0.3 1912 + 1914 3 -39 -137 27.5 0.3 1913 + 1915 3 -40.5 -144.5 26.5 0.3 1914 + 1916 3 -40 -149.5 26.5 0.3 1915 + 1917 3 -41 -153.5 27.5 0.3 1916 + 1918 3 -41 -159.5 27.5 0.3 1917 + 1919 3 -40.5 -164 27.5 0.3 1918 + 1920 3 -40 -168.5 27.5 0.2 1919 + 1921 3 -23.5 -33.5 31 0.45 1864 + 1922 3 -25 -39 32 0.45 1921 + 1923 3 -26 -43 31 0.45 1922 + 1924 3 -25.5 -48 32 0.45 1923 + 1925 3 -27.5 -49 36 0.3 1924 + 1926 3 -29 -52 35 0.3 1925 + 1927 3 -33.5 -55 35 0.3 1926 + 1928 3 -36.5 -57 41.5 0.3 1927 + 1929 3 -38.5 -59.5 41.5 0.3 1928 + 1930 3 -39 -61.5 48 0.3 1929 + 1931 3 -44.5 -64 46.5 0.3 1930 + 1932 3 -47 -69.5 46.5 0.3 1931 + 1933 3 -48.5 -74.5 46.5 0.3 1932 + 1934 3 -48 -79.5 46.5 0.3 1933 + 1935 3 -46.5 -84 46.5 0.3 1934 + 1936 3 -44.5 -89.5 46.5 0.3 1935 + 1937 3 -45.5 -95.5 48 0.3 1936 + 1938 3 -47.5 -101.5 48 0.3 1937 + 1939 3 -48.5 -105 46.5 0.3 1938 + 1940 3 -47 -112.5 54 0.3 1939 + 1941 3 -48.5 -117.5 55 0.3 1940 + 1942 3 -49.5 -126 55 0.3 1941 + 1943 3 -51 -131.5 60.5 0.3 1942 + 1944 3 -53.5 -135 60.5 0.3 1943 + 1945 3 -54.5 -138 60.5 0.3 1944 + 1946 3 -54.5 -146 61.5 0.3 1945 + 1947 3 -58.5 -148.5 61.5 0.3 1946 + 1948 3 -59.5 -152 61.5 0.3 1947 + 1949 3 -60.5 -159.5 60.5 0.3 1948 + 1950 3 -59.5 -166 60.5 0.3 1949 + 1951 3 -61.5 -170.5 61.5 0.3 1950 + 1952 3 -62.5 -171.5 54 0.3 1951 + 1953 3 -63.5 -173.5 52 0.2 1952 + 1954 3 -65.5 -175.5 52 0.2 1953 + 1955 3 -66.5 -179 52 0.2 1954 + 1956 3 -68 -181.5 53 0.2 1955 + 1957 3 -71 -182.5 53 0.2 1956 + 1958 3 -72 -184 52 0.15 1957 + 1959 3 -73 -187.5 51 0.15 1958 + 1960 3 -73 -187.5 50 0.15 1959 + 1961 3 -26.5 -54.5 32 0.3 1924 + 1962 3 -24.5 -59.5 39.5 0.3 1961 + 1963 3 -24.5 -65 40.5 0.3 1962 + 1964 3 -24.5 -72.5 41.5 0.3 1963 + 1965 3 -22 -79 42.5 0.3 1964 + 1966 3 -23.5 -82 44.5 0.3 1965 + 1967 3 -23.5 -89 45.5 0.3 1966 + 1968 3 -23.5 -94.5 45.5 0.3 1967 + 1969 3 -25 -99.5 45.5 0.3 1968 + 1970 3 -26.5 -104.5 46.5 0.3 1969 + 1971 3 -28 -109.5 53 0.3 1970 + 1972 3 -27.5 -114.5 52 0.3 1971 + 1973 3 -27.5 -121 55 0.3 1972 + 1974 3 -26.5 -127 60.5 0.3 1973 + 1975 3 -30 -132.5 61.5 0.3 1974 + 1976 3 -29.5 -137 67 0.3 1975 + 1977 3 -28 -141 66 0.3 1976 + 1978 3 -31.5 -151.5 64.5 0.3 1977 + 1979 3 -31.5 -155 64.5 0.3 1978 + 1980 3 -32.5 -157.5 66 0.3 1979 + 1981 3 -32 -162 63.5 0.2 1980 + 1982 3 -30.5 -165.5 63.5 0.2 1981 + 1983 3 -33.5 -170 63.5 0.2 1982 + 1984 3 -34.5 -174.5 63.5 0.2 1983 + 1985 3 -36.5 -178.5 62.5 0.2 1984 + 1986 3 -35.5 -181.5 62.5 0.2 1985 + 1987 3 -37.5 -184.5 62.5 0.2 1986 + 1988 3 -37 -187.5 62.5 0.2 1987 + 1989 3 -4.5 1 -10.5 0.9 1 + 1990 3 -8.5 -3 -10.5 0.9 1989 + 1991 3 -10.5 -8 -11.5 0.9 1990 + 1992 3 -12.5 -11 -11.5 0.9 1991 + 1993 3 -13 -11 -11.5 0.9 1992 + 1994 3 -9 -16 -3 0.3 1993 + 1995 3 -10.5 -19 -3 0.3 1994 + 1996 3 -9.5 -27.5 -12.5 0.3 1995 + 1997 3 -8.5 -36.5 -14.5 0.3 1996 + 1998 3 -8 -45 -14.5 0.3 1997 + 1999 3 -5 -52.5 -19 0.3 1998 + 2000 3 -4 -59.5 -25 0.3 1999 + 2001 3 -2 -67 -33.5 0.3 2000 + 2002 3 -1 -72.5 -36 0.3 2001 + 2003 3 1 -80 -38 0.3 2002 + 2004 3 1 -85 -47.5 0.3 2003 + 2005 3 3.5 -90.5 -46.5 0.3 2004 + 2006 3 2.5 -94 -46.5 0.3 2005 + 2007 3 5.5 -101 -49.5 0.3 2006 + 2008 3 8 -110 -56 0.3 2007 + 2009 3 9.5 -116 -56 0.3 2008 + 2010 3 12.5 -120 -56 0.3 2009 + 2011 3 13.5 -129.5 -61 0.3 2010 + 2012 3 15 -138.5 -69.5 0.3 2011 + 2013 3 14.5 -142.5 -67.5 0.3 2012 + 2014 3 15 -146.5 -74 0.3 2013 + 2015 3 16 -154 -78 0.3 2014 + 2016 3 16 -155.5 -85.5 0.3 2015 + 2017 3 16.5 -159 -84.5 0.3 2016 + 2018 3 14 -163 -88.5 0.3 2017 + 2019 3 13.5 -167 -91 0.3 2018 + 2020 3 13 -173.5 -94 0.3 2019 + 2021 3 -18.5 -12.5 -11.5 0.55 1993 + 2022 3 -21 -16 -11.5 0.55 2021 + 2023 3 -24 -19 -6 0.55 2022 + 2024 3 -27 -23 -1 0.55 2023 + 2025 3 -29.5 -26.5 1 0.55 2024 + 2026 3 -34.5 -28.5 1 0.4 2025 + 2027 3 -40.5 -32 1 0.4 2026 + 2028 3 -45 -37 1 0.4 2027 + 2029 3 -50 -41 1 0.4 2028 + 2030 3 -55.5 -44.5 1 0.4 2029 + 2031 3 -60 -49 1 0.4 2030 + 2032 3 -65.5 -51 1 0.4 2031 + 2033 3 -69 -53 1 0.4 2032 + 2034 3 -71.5 -57 1 0.4 2033 + 2035 3 -77.5 -59 1 0.4 2034 + 2036 3 -81.5 -64 1 0.4 2035 + 2037 3 -85 -69 1 0.4 2036 + 2038 3 -89.5 -72.5 1 0.4 2037 + 2039 3 -94.5 -76 1 0.4 2038 + 2040 3 -95.5 -79 6.5 0.4 2039 + 2041 3 -99.5 -80.5 6.5 0.4 2040 + 2042 3 -103 -87.5 6.5 0.4 2041 + 2043 3 -108 -91 6.5 0.4 2042 + 2044 3 -115 -95.5 6.5 0.4 2043 + 2045 3 -119.5 -98.5 6.5 0.4 2044 + 2046 3 -123 -97 6.5 0.4 2045 + 2047 3 -125.5 -101 6.5 0.4 2046 + 2048 3 -129.5 -105.5 6.5 0.4 2047 + 2049 3 -132.5 -109.5 6.5 0.4 2048 + 2050 3 -136.5 -109.5 13 0.4 2049 + 2051 3 -140 -110.5 13 0.3 2050 + 2052 3 -142.5 -114 13 0.3 2051 + 2053 3 -146.5 -119 13 0.3 2052 + 2054 3 -149.5 -121 13 0.3 2053 + 2055 3 -154.5 -122 13 0.3 2054 + 2056 3 -15 -15.5 -14.5 0.4 1992 + 2057 3 -18.5 -19 -14.5 0.4 2056 + 2058 3 -22 -25 -13.5 0.4 2057 + 2059 3 -24.5 -30.5 -22 0.4 2058 + 2060 3 -26 -34 -27.5 0.4 2059 + 2061 3 -28.5 -37 -28.5 0.4 2060 + 2062 3 -29.5 -39.5 -28.5 0.4 2061 + 2063 3 -32.5 -45 -30.5 0.4 2062 + 2064 3 -36 -49.5 -31.5 0.4 2063 + 2065 3 -37 -52 -28.5 0.4 2064 + 2066 3 -38 -55.5 -27.5 0.4 2065 + 2067 3 -41.5 -59.5 -39 0.3 2066 + 2068 3 -43.5 -64.5 -38 0.3 2067 + 2069 3 -46.5 -69 -45.5 0.3 2068 + 2070 3 -50.5 -72 -45.5 0.3 2069 + 2071 3 -53 -77 -49.5 0.3 2070 + 2072 3 -54.5 -81 -49.5 0.3 2071 + 2073 3 -57.5 -84.5 -55 0.3 2072 + 2074 3 -59.5 -89 -61 0.3 2073 + 2075 3 -62.5 -94 -61 0.3 2074 + 2076 3 -63.5 -99 -61 0.3 2075 + 2077 3 -67.5 -104.5 -61 0.3 2076 + 2078 3 -69.5 -108.5 -61 0.3 2077 + 2079 3 -71.5 -115 -64.5 0.3 2078 + 2080 3 -71.5 -121 -64.5 0.3 2079 + 2081 3 -73 -125.5 -67.5 0.3 2080 + 2082 3 -77 -130.5 -69.5 0.3 2081 + 2083 3 -78.5 -136 -69.5 0.3 2082 + 2084 3 -82 -141.5 -70.5 0.3 2083 + 2085 3 -85 -146 -75 0.2 2084 + 2086 3 -87.5 -147.5 -73 0.2 2085 + 2087 3 -88.5 -151 -73 0.2 2086 + 2088 3 -91.5 -152 -72 0.2 2087 + 2089 3 -93 -153.5 -79 0.2 2088 + 2090 3 -95 -155.5 -79 0.2 2089 + 2091 3 -98 -156.5 -76 0.15 2090 + 2092 3 -39.5 -59 -22 0.3 2066 + 2093 3 -40.5 -63 -22 0.3 2092 + 2094 3 -43 -66.5 -23 0.3 2093 + 2095 3 -44.5 -72 -22 0.3 2094 + 2096 3 -46.5 -72.5 -22 0.3 2095 + 2097 3 -47.5 -75.5 -21 0.3 2096 + 2098 3 -50.5 -80 -21 0.3 2097 + 2099 3 -55.5 -86 -22 0.3 2098 + 2100 3 -59.5 -93 -22 0.3 2099 + 2101 3 -61 -97.5 -22 0.3 2100 + 2102 3 -65.5 -101 -22 0.3 2101 + 2103 3 -67.5 -106.5 -22 0.3 2102 + 2104 3 -71 -110 -22 0.3 2103 + 2105 3 -76 -113.5 -22 0.3 2104 + 2106 3 -79 -117.5 -17 0.3 2105 + 2107 3 -81.5 -122 -18 0.2 2106 + 2108 3 -83 -127 -17 0.2 2107 + 2109 3 -85.5 -131 -17 0.2 2108 + 2110 3 -86 -133.5 -10.5 0.2 2109 + 2111 3 -88.5 -134 -18 0.2 2110 + 2112 3 -27.5 -42.5 -31.5 0.3 2062 + 2113 3 -25 -48.5 -36 0.3 2112 + 2114 3 -24 -52.5 -36 0.3 2113 + 2115 3 -22 -58 -42 0.3 2114 + 2116 3 -20.5 -61 -44.5 0.3 2115 + 2117 3 -19.5 -66.5 -47.5 0.3 2116 + 2118 3 -20 -72 -50.5 0.3 2117 + 2119 3 -20 -79.5 -50.5 0.3 2118 + 2120 3 -21 -82.5 -56 0.3 2119 + 2121 3 -21 -87 -59 0.3 2120 + 2122 3 -21.5 -95 -57 0.3 2121 + 2123 3 -22.5 -99 -61 0.3 2122 + 2124 3 -22.5 -104 -67.5 0.3 2123 + 2125 3 -23.5 -108 -72 0.3 2124 + 2126 3 -23 -112.5 -76 0.3 2125 + 2127 3 -24.5 -117 -81.5 0.3 2126 + 2128 3 -24 -123.5 -81.5 0.3 2127 + 2129 3 -25.5 -129 -86.5 0.3 2128 + 2130 3 -24.5 -132.5 -91 0.3 2129 + 2131 3 -23 -135 -79 0.3 2130 + 2132 3 -21 -140 -79 0.3 2131 + 2133 3 -5.5 2.5 12 0.55 1 + 2134 3 -8 1.5 13 0.55 2133 + 2135 3 -4 0 13 0.45 2134 + 2136 3 -3.5 -2 19 0.45 2135 + 2137 3 -3 -6 24.5 0.45 2136 + 2138 3 -4.5 -7 31 0.45 2137 + 2139 3 -5.5 -8 34 0.45 2138 + 2140 3 -7.5 -8.5 35 0.45 2139 + 2141 3 -9.5 -8 35 0.45 2140 + 2142 3 -11 -10.5 41.5 0.45 2141 + 2143 3 -14 -13 42.5 0.45 2142 + 2144 3 -16.5 -14 46.5 0.45 2143 + 2145 3 -19 -18.5 49 0.45 2144 + 2146 3 -19 -20.5 48 0.45 2145 + 2147 3 -22 -22.5 51 0.4 2146 + 2148 3 -25 -22 46.5 0.4 2147 + 2149 3 -26 -23.5 51 0.4 2148 + 2150 3 -29 -25.5 51 0.4 2149 + 2151 3 -29.5 -26.5 57.5 0.4 2150 + 2152 3 -30.5 -28 54 0.4 2151 + 2153 3 -31.5 -27 55 0.4 2152 + 2154 3 -32.5 -29 66 0.4 2153 + 2155 3 -33 -30.5 66 0.4 2154 + 2156 3 -38.5 -33 67 0.4 2155 + 2157 3 -36.5 -36.5 72 0.4 2156 + 2158 3 -38 -40.5 74 0.4 2157 + 2159 3 -40.5 -44 77.5 0.4 2158 + 2160 3 -40.5 -47 77.5 0.3 2159 + 2161 3 -43 -50 73 0.3 2160 + 2162 3 -45.5 -52.5 82.5 0.3 2161 + 2163 3 -46.5 -55 88 0.3 2162 + 2164 3 -49 -57.5 91 0.3 2163 + 2165 3 -49 -61.5 93.5 0.3 2164 + 2166 3 -50.5 -64.5 95.5 0.3 2165 + 2167 3 -51.5 -68 95.5 0.3 2166 + 2168 3 -52.5 -72 102 0.3 2167 + 2169 3 -52 -75.5 109 0.3 2168 + 2170 3 -52.5 -78.5 113.5 0.3 2169 + 2171 3 -50.5 -80.5 120 0.3 2170 + 2172 3 -5 5 1 0.45 1 + 2173 3 -8.5 1.5 5.5 0.45 2172 + 2174 3 -12 0 1 0.45 2173 + 2175 3 -15 -3 1 0.45 2174 + 2176 3 -15.5 -6 1 0.45 2175 + 2177 3 -17 -7.5 5.5 0.4 2176 + 2178 3 -19.5 -11 4.5 0.4 2177 + 2179 3 -22.5 -13 5.5 0.4 2178 + 2180 3 -25 -18 5.5 0.4 2179 + 2181 3 -29.5 -21 4.5 0.4 2180 + 2182 3 -33.5 -24 4.5 0.4 2181 + 2183 3 -37.5 -25 7.5 0.4 2182 + 2184 3 -42 -30 6.5 0.4 2183 + 2185 3 -45.5 -36.5 6.5 0.4 2184 + 2186 3 -48 -42 7.5 0.4 2185 + 2187 3 -51 -45 7.5 0.4 2186 + 2188 3 -56.5 -49.5 13 0.4 2187 + 2189 3 -57 -52 13 0.4 2188 + 2190 3 -60 -53 12 0.4 2189 + 2191 3 -63 -55 12 0.4 2190 + 2192 3 -65 -60.5 18 0.4 2191 + 2193 3 -65.5 -62 18 0.4 2192 + 2194 3 -69 -63 18 0.3 2193 + 2195 3 -73 -66 18 0.3 2194 + 2196 3 -73.5 -67.5 18 0.3 2195 + 2197 3 -77 -68 19 0.3 2196 + 2198 3 -78 -72.5 18 0.3 2197 + 2199 3 -82.5 -77 23.5 0.3 2198 + 2200 3 -86.5 -82 26.5 0.3 2199 + 2201 3 -91 -83 30 0.3 2200 + 2202 3 -93 -86 30 0.3 2201 + 2203 3 -97.5 -90 33 0.3 2202 + 2204 3 -99.5 -92 33 0.3 2203 + 2205 3 -102.5 -95.5 35 0.3 2204 + 2206 3 -104 -100.5 38.5 0.3 2205 + 2207 3 -106.5 -102 38.5 0.3 2206 + 2208 3 -111 -104.5 38.5 0.3 2207 + 2209 3 -113 -107 44.5 0.3 2208 + 2210 3 -116 -109.5 43.5 0.3 2209 + 2211 3 -118 -113.5 43.5 0.3 2210 + 2212 3 -121.5 -116.5 43.5 0.3 2211 + 2213 3 -123.5 -117.5 43.5 0.3 2212 + 2214 3 -126.5 -119 43.5 0.3 2213 + 2215 3 -127 -122.5 44.5 0.3 2214 + 2216 3 -129.5 -126 44.5 0.3 2215 + 2217 3 -132 -129 48 0.3 2216 + 2218 3 -134 -130.5 48 0.3 2217 + 2219 3 -136.5 -133 48 0.3 2218 + 2220 3 -138 -134.5 48 0.3 2219 + 2221 3 -141 -136 48 0.3 2220 + 2222 3 -143.5 -136.5 48 0.3 2221 + 2223 3 -145.5 -136 51 0.3 2222 + 2224 3 -148 -136.5 50 0.3 2223 + 2225 3 -150.5 -136.5 50 0.3 2224 + 2226 3 -67.5 -66 18 0.3 2193 + 2227 3 -68.5 -70.5 18 0.3 2226 + 2228 3 -69.5 -72 18 0.3 2227 + 2229 3 -70.5 -75 17 0.3 2228 + 2230 3 -71.5 -80 18 0.3 2229 + 2231 3 -73.5 -85 18 0.3 2230 + 2232 3 -75.5 -88.5 18 0.3 2231 + 2233 3 -77 -93.5 18 0.3 2232 + 2234 3 -75 -96 18 0.3 2233 + 2235 3 -76.5 -101 27.5 0.3 2234 + 2236 3 -76.5 -106.5 28.5 0.3 2235 + 2237 3 -78.5 -112 27.5 0.3 2236 + 2238 3 -79.5 -118 30 0.3 2237 + 2239 3 -80.5 -120 30 0.3 2238 + 2240 3 -80.5 -122 30 0.3 2239 + 2241 3 -84 -128 28.5 0.3 2240 + 2242 3 -83 -132.5 33 0.3 2241 + 2243 3 -84 -137 33 0.3 2242 + 2244 3 -86 -136 36 0.3 2243 + 2245 3 -85.5 -139.5 37 0.2 2244 + 2246 3 -87.5 -139.5 37 0.2 2245 diff --git a/examples/tutorials/Rdesigneur/cells/ca1_minimal.p b/examples/tutorials/Rdesigneur/cells/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/tutorials/Rdesigneur/cells/h10.CNG.swc b/examples/tutorials/Rdesigneur/cells/h10.CNG.swc new file mode 100644 index 0000000..554dbe2 --- /dev/null +++ b/examples/tutorials/Rdesigneur/cells/h10.CNG.swc @@ -0,0 +1,226 @@ +# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. +# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. +# +#---------------------------------------------------------------------- +# This file was obtained using ban2swc.pl on file h10.txt +# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 +#---------------------------------------------------------------------- +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0. 23. 0. 3.35 -1 + 2 1 0. 18. 0. 2.5 1 + 3 1 0. 0. 0. 1.058 2 + 4 3 -4.157 -2.778 0. 0.6 3 + 5 3 -5.925 -3.510 -4.62 0.55 4 + 6 3 -15.47 -7.464 -29.560 0.4 5 + 7 3 -23.89 -9.139 -72.72 0.4 6 + 8 3 -24.39 -13.43 -83.51 0.350 6 + 9 3 -9.814 -5.121 -14.780 0.5 5 + 10 3 -15.81 -6.313 -23.93 0.5 9 + 11 3 -65.94 -16.29 -100.4 0.4 10 + 12 3 -54.5 -14.01 -82.960 0.4 10 + 13 3 -17.2 -10.06 -28.09 0.4 9 + 14 3 -78.64 -51.11 -138.70 0.4 13 + 15 3 -41.69 -26.42 -72.15 0.350 13 + 16 3 -10.11 -8.731 -20.330 0.45 4 + 17 3 -14.44 -13.06 -35.11 0.350 16 + 18 3 -26.61 -21.19 -108.7 0.3 17 + 19 3 -24.2 -27.66 -123.4 0.3 17 + 20 3 -32.3 -30.92 -96.08 0.350 16 + 21 3 -45.7 -39.87 -120.2 0.3 20 + 22 3 -56.99 -67.88 -162.60 0.350 20 + 23 3 -8.889 -13.3 0. 0.65 3 + 24 3 -11.39 -15.8 -3.54 0.55 23 + 25 3 -19.39 -23.8 -14.85 0.5 24 + 26 3 -21.7 -25.35 -19.01 0.45 25 + 27 3 -33.25 -33.06 -39.79 0.4 26 + 28 3 -64.36 -45.95 -121.10 0.350 27 + 29 3 -53.54 -53.36 -109.10 0.350 27 + 30 3 -26.32 -28.43 -27.32 0.4 26 + 31 3 -68.78 -46.02 -73.28 0.3 30 + 32 3 -71.820 -73.93 -91.67 0.350 30 + 33 3 -59.82 -84.320 -123.80 0.350 25 + 34 3 -84.52 -121.30 -190.3 0.25 33 + 35 3 -34.39 -38.80 -36.06 0.350 24 + 36 3 -96.61 -80.38 -86.06 0.3 35 + 37 3 -93.98 -128. -107.7 0.3 35 + 38 3 -15.65 -29.64 -17.68 0.5 23 + 39 3 -17.01 -32.9 -21.21 0.5 38 + 40 3 -21.95 -40.29 -34.52 0.4 39 + 41 3 -50.03 -82.33 -110.2 0.3 40 + 42 3 -49.730 -81.87 -109.30 0.350 40 + 43 3 -22.75 -61.78 -65.28 0.3 39 + 44 3 -37.30 -81.9 -74.25 0.3 38 + 45 3 -2.146 -10.790 0. 0.75 3 + 46 3 -24.77 -65.42 -24.490 0.350 45 + 47 3 -54.47 -137.1 -56.64 0.350 46 + 48 3 -55.18 -138.8 -57.4 0.350 46 + 49 3 -2.146 -20.95 -4.21 0.6 45 + 50 3 -2.146 -35.730 -10.33 0.45 49 + 51 3 -22.75 -139.3 -80.89 0.3 50 + 52 3 29. -192.3 -117. 0.350 50 + 53 3 -2.146 -25.57 -6.12 0.55 49 + 54 3 -3.103 -30.38 -7.10 0.5 53 + 55 3 -49.410 -263.2 -54.31 0.350 54 + 56 3 -22.05 -125.60 -26.41 0.3 54 + 57 3 16.990 -121.80 -25.63 0.3 53 + 58 3 2.146 -10.790 0. 0.65 3 + 59 3 2.146 -20.79 0. 0.4 58 + 60 3 2.146 -235.8 0. 0.350 59 + 61 3 2.146 -250.8 0. 0.25 60 + 62 3 4.059 -15.41 0. 0.4 58 + 63 3 8.269 -25.57 0. 0.350 62 + 64 3 35.63 -163.10 -27.90 0.4 63 + 65 3 45.32 -81.02 -13.27 0.3 63 + 66 3 20.13 -54.21 0. 0.350 62 + 67 3 35.25 -130.20 15.41 0.3 66 + 68 3 78.98 -142.3 21.07 0.350 66 + 69 3 8.889 -13.3 0. 0.6 3 + 70 3 16.67 -32.08 8.42 0.5 69 + 71 3 24.45 -50.86 16.84 0.45 70 + 72 3 49.32 -175.9 42.2 0.350 71 + 73 3 84.38 -140.6 38.30 0.350 71 + 74 3 42.45 -141.4 78.51 0.4 70 + 75 3 48.94 -174. 100.7 0.3 74 + 76 3 16.080 -20.490 4.21 0.4 69 + 77 3 99.04 -103.5 52.81 0.3 76 + 78 3 41.550 -45.97 19.13 0.3 76 + 79 3 63.71 -109.60 64.06 0.3 78 + 80 3 75.26 -126.9 77.95 0.2 79 + 81 3 18.29 -12.22 0. 0.6 3 + 82 3 20.79 -14.72 3.54 0.55 81 + 83 3 26.29 -20.22 11.31 0.5 82 + 84 3 101.10 -132.20 101.30 0.350 83 + 85 3 97.5 -67.8 68.54 0.3 83 + 86 3 47.29 -41.22 41.01 0.25 82 + 87 3 21.56 -13.58 3.54 0.5 81 + 88 3 28.09 -16.28 10.61 0.45 87 + 89 3 122.10 -79.11 86.16 0.3 88 + 90 3 85.99 -27.8 50.050 0.3 88 + 91 3 43.12 -22.51 26.87 0.4 87 + 92 3 75.45 -44.11 85.070 0.350 91 + 93 3 97.61 -33.34 110. 0.350 91 + 94 4 0. 41. 0. 2.550 1 + 95 4 0. 127. 0. 0.3 94 + 96 4 5.932 70.820 -6.05 2.25 94 + 97 4 18.37 133.3 -18.73 1.25 96 + 98 4 26.63 153.3 -23.02 0.6 97 + 99 4 56.65 225.8 -38.63 0.3 98 + 100 4 29.63 160.5 -24.580 0.6 98 + 101 4 91.850 253.70 -24.580 0.350 100 + 102 4 63.97 333.1 -24.580 0.350 100 + 103 4 18.37 142.20 -20.48 1.25 97 + 104 4 18.37 145.1 -21.07 1.25 103 + 105 4 28.28 195. -42.12 0.45 104 + 106 4 33.69 222.10 -53.6 0.350 105 + 107 4 39.1 249.3 -65.08 0.25 106 + 108 4 17.47 149.6 -22.98 1.25 104 + 109 4 4.851 213.10 -49.77 0.5 108 + 110 4 -10.07 288.1 -100.9 0.350 109 + 111 4 15.85 157.8 -26.43 1.25 108 + 112 4 15.85 182.3 -31.3 0.5 111 + 113 4 15.85 235.3 -41.84 0.350 112 + 114 4 15.85 272.2 -57.15 0.3 113 + 115 4 15.85 195.10 -33.84 0.350 112 + 116 4 30.09 266.7 -33.84 0.3 115 + 117 4 0.2380 273.5 -33.84 0.3 115 + 118 4 11.72 167.8 -28.57 1.25 111 + 119 4 3.46 187.70 -32.87 1.25 118 + 120 4 -0.506 207.60 -41.28 1.25 119 + 121 4 -3.39 222.10 -47.410 1.25 120 + 122 4 -3.39 223.8 -48.52 1.25 121 + 123 4 -3.39 247.10 -64.070 0.45 122 + 124 4 1.439 271.40 -88.820 0.3 123 + 125 4 -16.080 310.90 -129.1 0.350 123 + 126 4 -3.39 248.70 -65.19 1.25 122 + 127 4 -3.209 249.70 -65.570 1.25 126 + 128 4 1.297 272.3 -75.14 0.5 127 + 129 4 12. 326.1 -111.80 0.350 128 + 130 4 -0.506 263.2 -71.31 1.25 127 + 131 4 0.2450 265.1 -71.7 0.6 130 + 132 4 3.623 273.2 -73.45 0.55 131 + 133 4 46.230 337. -105.2 0.3 132 + 134 4 22.55 368.40 -113.60 0.350 132 + 135 4 19.01 310.40 -81.45 0.45 131 + 136 4 42.74 367.6 -81.45 0.350 135 + 137 4 -0.506 280.90 -74.820 1.25 130 + 138 4 -0.506 284.8 -75.60 0.850 137 + 139 4 14.450 360. -107.4 0.4 138 + 140 4 18.06 378.1 -115. 0.3 139 + 141 4 -14.02 352.8 -104.30 0.850 138 + 142 4 -20.330 384.5 -117.7 0.70 141 + 143 4 -20.330 441.8 -141.4 0.70 142 + 144 4 -20.330 494.40 -163.20 0.45 143 + 145 4 -20.330 544.30 -196.60 0.350 144 + 146 4 -20.330 582.6 -222.10 0.3 145 + 147 4 -20.330 622.5 -248.8 0.3 145 + 148 4 -20.330 462.1 -149.8 0.6 143 + 149 4 -7.321 527.5 -163.10 0.45 148 + 150 4 -1.389 557.30 -169.20 0.350 149 + 151 4 21.51 612.6 -181.10 0.3 150 + 152 4 -1.389 630.90 -183.8 0.25 150 + 153 4 -36.6 543.9 -166.4 0.6 148 + 154 4 -46.36 592.9 -176.4 0.350 153 + 155 4 -46.36 669.6 -208.10 0.25 154 + 156 4 -74.99 662.1 -207.4 0.25 154 + 157 4 -44.44 583.30 -174.4 0.5 153 + 158 4 -44.44 665.30 -174.4 0.350 157 + 159 4 -44.44 705.30 -174.4 0.25 158 + 160 4 -87.3 686.80 -174.4 0.350 157 + 161 4 -121.7 769.90 -174.4 0.25 160 + 162 4 -32.71 414.40 -131.1 0.45 142 + 163 4 -85.74 542.4 -188.5 0.350 162 + 164 4 -120. 625.2 -225.60 0.3 163 + 165 4 -137.4 667. -244.4 0.25 164 + 166 4 -132.4 655.1 -239. 0.2 164 + 167 4 -0.506 290.7 -76.77 0.9 137 + 168 4 6.713 327. -76.77 0.8 167 + 169 4 8.664 336.8 -76.77 0.6 168 + 170 4 12.49 356. -80.67 0.5 169 + 171 4 21.48 401.3 -89.84 0.350 170 + 172 4 13.74 362.3 -76.77 0.5 168 + 173 4 23.12 385. -71.89 0.25 172 + 174 4 13.74 396.6 -69.94 0.350 172 + 175 4 -20.6 391.70 -76.77 0.350 167 + 176 4 -15.83 311.3 -91.59 0.4 126 + 177 4 -28.44 374.70 -118.4 0.3 176 + 178 4 -14.84 249.8 -67.41 0.45 121 + 179 4 -37.12 303.6 -106.30 0.350 178 + 180 4 -55.25 347.3 -138. 0.3 178 + 181 4 -3.209 221.20 -47.02 0.45 120 + 182 4 -3.209 356.6 -73.95 0.350 181 + 183 4 -31.36 289.2 -61.660 0.350 181 + 184 4 -11.94 210.70 -44.35 0.6 119 + 185 4 -36.06 246.9 -62.33 0.5 184 + 186 4 -67.18 322. -96.01 0.3 185 + 187 4 -81.14 291.90 -88.74 0.3 185 + 188 4 1.208 193.10 -34.04 0.4 118 + 189 4 -21.42 306.90 -34.04 0.3 188 + 190 4 -77.13 310.40 -34.04 0.350 188 + 191 4 18.37 165.70 -25.17 0.5 103 + 192 4 25.78 203. -25.17 0.350 191 + 193 4 56.22 356. -25.17 0.3 192 + 194 4 50.36 326.6 -25.17 0.3 192 + 195 4 16.22 176.5 -25.17 0.350 191 + 196 4 -10.31 309.90 -25.17 0.350 195 + 197 4 2.957 243.20 -25.17 0.3 195 + 198 4 -2.105 51.58 -2.15 0.350 94 + 199 4 -20.09 142. -20.48 0.350 198 + 200 4 -3.061 56.39 -3.12 0.3 198 + 201 4 -3.061 76.39 -3.12 0.3 200 + 202 4 -3.061 142.4 -3.12 0.3 201 + 203 4 -3.061 167.4 -3.12 0.3 201 + 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/tutorials/Rdesigneur/chans/CA1.morph.xml b/examples/tutorials/Rdesigneur/chans/CA1.morph.xml new file mode 100644 index 0000000..2a3815b --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/CA1.morph.xml @@ -0,0 +1,12673 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + soma_group + + + + soma_group + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + axon_group + soma_group + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + all + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/Ca.xml b/examples/tutorials/Rdesigneur/chans/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/tutorials/Rdesigneur/chans/CaConc.xml b/examples/tutorials/Rdesigneur/chans/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml b/examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml new file mode 100644 index 0000000..58cc74e --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml @@ -0,0 +1,32 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + diff --git a/examples/tutorials/Rdesigneur/chans/Generated.net.xml b/examples/tutorials/Rdesigneur/chans/Generated.net.xml new file mode 100644 index 0000000..d2f3f34 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/Generated.net.xml @@ -0,0 +1,59 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 + +Cell Group: CA1_CG contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/Glu.xml b/examples/tutorials/Rdesigneur/chans/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/tutorials/Rdesigneur/chans/HChannel.xml b/examples/tutorials/Rdesigneur/chans/HChannel.xml new file mode 100644 index 0000000..c1c91b4 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/HChannel.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/tutorials/Rdesigneur/chans/NMDA.xml b/examples/tutorials/Rdesigneur/chans/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/tutorials/Rdesigneur/chans/hd.xml b/examples/tutorials/Rdesigneur/chans/hd.xml new file mode 100644 index 0000000..a882baa --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/kad.xml b/examples/tutorials/Rdesigneur/chans/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/kap.xml b/examples/tutorials/Rdesigneur/chans/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/kdr.xml b/examples/tutorials/Rdesigneur/chans/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/na3.xml b/examples/tutorials/Rdesigneur/chans/na3.xml new file mode 100644 index 0000000..94e9713 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/nax.xml b/examples/tutorials/Rdesigneur/chans/nax.xml new file mode 100644 index 0000000..1225d6a --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/tutorials/Rdesigneur/chans/pas.xml b/examples/tutorials/Rdesigneur/chans/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/tutorials/Rdesigneur/chans/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chem/psd52.g b/examples/tutorials/Rdesigneur/chem/psd52.g new file mode 100644 index 0000000..9b4197e --- /dev/null +++ b/examples/tutorials/Rdesigneur/chem/psd52.g @@ -0,0 +1,488 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Dec 7 15:51:46 2014 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_PSD 0 0 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca_PSD/notes 0 "" +call /kinetics/PSD/Ca_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca_Spine 0 0 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca_Spine/notes 0 "" +call /kinetics/Bulk/Ca_Spine/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/Ca_to_dend 0 10 1 "" white black -16 -22 0 +simundump text /kinetics/Bulk/Ca_to_dend/notes 0 "" +call /kinetics/Bulk/Ca_to_dend/notes LOAD \ +"" +simundump kreac /kinetics/Ca_to_bulk 0 10 100 "" white black -15 -3 0 +simundump text /kinetics/Ca_to_bulk/notes 0 "" +call /kinetics/Ca_to_bulk/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend 0 0 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ + 1 black -19 -25 0 +simundump text /kinetics/Ca_dend/notes 0 "" +call /kinetics/Ca_dend/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B +addmsg /kinetics/Ca_to_bulk /kinetics/PSD/Ca_PSD REAC B A +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_PSD REAC B A +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Ca_to_bulk /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/Ca_to_dend /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/Ca_to_dend SUBSTRATE n +addmsg /kinetics/Ca_dend /kinetics/Bulk/Ca_to_dend PRODUCT n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Ca_to_bulk SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/Ca_to_bulk PRODUCT n +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend REAC B A +addmsg /kinetics/Bulk/Ca_to_dend /kinetics/Ca_dend REAC B A +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca_dend /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/PSD/Ca_PSD /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca_Spine /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca_dend /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/tutorials/Rdesigneur/chem/psd53.g b/examples/tutorials/Rdesigneur/chem/psd53.g new file mode 100644 index 0000000..e120a6a --- /dev/null +++ b/examples/tutorials/Rdesigneur/chem/psd53.g @@ -0,0 +1,477 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Jun 5 09:12:59 2015 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca/notes 0 "" +call /kinetics/Bulk/Ca/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ + 1 black -19 -25 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." \ +"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ +"psd. Will use diffusion instead." \ +"05 June 2015. psd53.g updated further to use the same name (Ca)" \ +"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ +"" +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A +addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/tutorials/Rdesigneur/chem/psd53_old.g b/examples/tutorials/Rdesigneur/chem/psd53_old.g new file mode 100644 index 0000000..7546933 --- /dev/null +++ b/examples/tutorials/Rdesigneur/chem/psd53_old.g @@ -0,0 +1,474 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Thu Jun 4 22:45:34 2015 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_PSD 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca_PSD/notes 0 "" +call /kinetics/PSD/Ca_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca_Spine 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca_Spine/notes 0 "" +call /kinetics/Bulk/Ca_Spine/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend 0 1e-11 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 1 black -19 -25 0 +simundump text /kinetics/Ca_dend/notes 0 "" +call /kinetics/Ca_dend/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." \ +"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ +"psd. Will use diffusion instead." +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_PSD REAC B A +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend REAC B A +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca_dend /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/PSD/Ca_PSD /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca_Spine /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca_dend /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/tutorials/Rdesigneur/rdes_ex1.py b/examples/tutorials/Rdesigneur/rdes_ex1.py new file mode 100644 index 0000000..6f83868 --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex1.py @@ -0,0 +1,5 @@ +import moose +import rdesigneur as rd +rdes = rd.rdesigneur() +rdes.buildModel() +moose.showfields( rdes.soma ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex10.py b/examples/tutorials/Rdesigneur/rdes_ex10.py new file mode 100644 index 0000000..634fdaa --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex10.py @@ -0,0 +1,41 @@ +import moose +import rdesigneur as rd + +library = moose.Neutral( '/library' ) +compt = rd.makeChemOscillator( 'osc' ) +compt.volume = 1e-18 +moose.copy( compt, '/library/osc', 'spine' ) +moose.element( '/library/osc/spine' ).volume = 1e-19 +moose.copy( compt, '/library/osc', 'psd' ) +moose.element( '/library/osc/psd' ).volume = 1e-20 + +rdes = rd.rdesigneur( + turnOffElec = True, + useGssa = False, + cellProto = [[ './cells/h10.CNG.swc', 'elec']], + spineProto = [[ 'makePassiveSpine()', 'spine' ] ], + spineDistrib = [ ["spine", '#apical#,#dend#', '10e-6', '1e-6' ]], + chemProto = [['/library/osc', 'osc']], + chemDistrib =[[ 'osc', '#apical#,#dend#', 'install', 'H(p - 5e-4)' ]], + plotList = [ + ['#', '1', 'psd/a', 'conc', 'conc of a in PSD'], + ['#', '1', 'spine/a', 'conc', 'conc of a in spine'], + ['#', '1', 'dend/a', 'conc', 'conc of a in Dend'] + ] +) + +rdes.buildModel() + +av = moose.vec( '/model/chem/psd/a' ) +av[0].concInit *= 10 + +''' +dv = moose.vec( '/model/chem/dend/a' ) +print len( dv ) +dv[0].concInit *= 2 +''' + +moose.reinit() +moose.start( 100 ) + +rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex2.py b/examples/tutorials/Rdesigneur/rdes_ex2.py new file mode 100644 index 0000000..76901ae --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex2.py @@ -0,0 +1,12 @@ +import moose +import rdesigneur as rd +rdes = rd.rdesigneur( + stimList = [['soma', '1', '.', 'inject', '(t>0.1 && t<0.2) * 2e-8' ]], + plotList = [['soma', '1', '.', 'Vm', 'Soma membrane potential']] +) +rdes.buildModel() +moose.reinit() +moose.start( 0.3 ) + +rdes.display() + diff --git a/examples/tutorials/Rdesigneur/rdes_ex3.1.py b/examples/tutorials/Rdesigneur/rdes_ex3.1.py new file mode 100644 index 0000000..9729a0d --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex3.1.py @@ -0,0 +1,54 @@ +#################################################################### +# Rdesigneur example 3.1 +# Making an axon with a propagating action potential. +#################################################################### +import numpy as np +import moose +import pylab +import rdesigneur as rd + +numAxonSegments = 200 +comptLen = 10e-6 +comptDia = 1e-6 +RM = 1.0 +RA = 10.0 +CM = 0.01 + +def makeAxonProto(): + axon = moose.Neuron( '/library/axon' ) + prev = rd.buildCompt( axon, 'soma', RM = RM, RA = RA, CM = CM, dia = 10e-6, x=0, dx=comptLen) + theta = 0 + x = comptLen + y = 0.0 + + for i in range( numAxonSegments ): + dx = comptLen * np.cos( theta ) + dy = comptLen * np.sin( theta ) + r = np.sqrt( x * x + y * y ) + theta += comptLen / r + compt = rd.buildCompt( axon, 'axon' + str(i), RM = RM, RA = RA, CM = CM, x = x, y = y, dx = dx, dy = dy, dia = comptDia ) + moose.connect( prev, 'axial', compt, 'raxial' ) + prev = compt + x += dx + y += dy + + return axon + +moose.Neutral( '/library' ) +makeAxonProto() + +rdes = rd.rdesigneur( + chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], + cellProto = [['elec','axon']], + chanDistrib = [ + ['Na', '#', 'Gbar', '1200' ], + ['K', '#', 'Gbar', '360' ]], + stimList = [['soma', '1', '.', 'inject', '(t>0.01 && t<0.2) * 2e-11' ]], + plotList = [['soma', '1', '.', 'Vm', 'Membrane potential']], + moogList = [['#', '1', '.', 'Vm', 'Vm (mV)']] +) + +rdes.buildModel() +moose.reinit() + +rdes.displayMoogli( 0.00005, 0.05, 0.0 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex3.2.py b/examples/tutorials/Rdesigneur/rdes_ex3.2.py new file mode 100644 index 0000000..fc453eb --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex3.2.py @@ -0,0 +1,69 @@ +#################################################################### +# Rdesigneur example 3.2 +# Making a myelinated axon with a propagating action potential. +#################################################################### +import numpy as np +import moose +import pylab +import rdesigneur as rd + +numAxonSegments = 405 +nodeSpacing = 100 +comptLen = 10e-6 +comptDia = 2e-6 # 2x usual +RM = 100.0 # 10x usual +RA = 5.0 +CM = 0.001 # 0.1x usual + +nodeDia = 1e-6 +nodeRM = 1.0 +nodeCM = 0.01 + +def makeAxonProto(): + axon = moose.Neuron( '/library/axon' ) + x = 0.0 + y = 0.0 + prev = rd.buildCompt( axon, 'soma', RM = RM, RA = RA, CM = CM, dia = 10e-6, x=0, dx=comptLen) + theta = 0 + x = comptLen + + for i in range( numAxonSegments ): + r = comptLen + dx = comptLen * np.cos( theta ) + dy = comptLen * np.sin( theta ) + r = np.sqrt( x * x + y * y ) + theta += comptLen / r + if i % nodeSpacing == 0: + compt = rd.buildCompt( axon, 'axon' + str(i), RM = nodeRM, RA = RA, CM = nodeCM, x = x, y = y, dx = dx, dy = dy, dia = nodeDia ) + else: + compt = rd.buildCompt( axon, 'axon' + str(i), RM = RM, RA = RA, CM = CM, x = x, y = y, dx = dx, dy = dy, dia = comptDia ) + moose.connect( prev, 'axial', compt, 'raxial' ) + prev = compt + x += dx + y += dy + + return axon + +moose.Neutral( '/library' ) +makeAxonProto() + +rdes = rd.rdesigneur( + chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], + cellProto = [['elec','axon']], + chanDistrib = [ + ['Na', '#', 'Gbar', '12000 * (dia < 1.5e-6)' ], + ['K', '#', 'Gbar', '3600 * (dia < 1.5e-6)' ]], + stimList = [['soma', '1', '.', 'inject', '(t>0.01 && t<0.2) * 1e-10' ]], + plotList = [['soma,axon100,axon200,axon300,axon400', '1', '.', 'Vm', 'Membrane potential']], + moogList = [['#', '1', '.', 'Vm', 'Vm (mV)']] +) + + +rdes.buildModel() + +for i in moose.wildcardFind( "/model/elec/#/Na" ): + print i.parent.name, i.Gbar + +moose.reinit() + +rdes.displayMoogli( 0.00005, 0.05, 0.0 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex3.py b/examples/tutorials/Rdesigneur/rdes_ex3.py new file mode 100644 index 0000000..dbf6e2c --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex3.py @@ -0,0 +1,17 @@ +import moose +import pylab +import rdesigneur as rd +rdes = rd.rdesigneur( + chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], + chanDistrib = [ + ['Na', 'soma', 'Gbar', '1200' ], + ['K', 'soma', 'Gbar', '360' ]], + stimList = [['soma', '1', '.', 'inject', '(t>0.1 && t<0.2) * 1e-8' ]], + plotList = [['soma', '1', '.', 'Vm', 'Membrane potential']] +) + +rdes.buildModel() +moose.reinit() +moose.start( 0.3 ) + +rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex4.py b/examples/tutorials/Rdesigneur/rdes_ex4.py new file mode 100644 index 0000000..790d66e --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex4.py @@ -0,0 +1,19 @@ +import moose +import pylab +import rdesigneur as rd +rdes = rd.rdesigneur( + turnOffElec = True, + diffusionLength = 1e-3, # Default diffusion length is 2 microns + chemProto = [['makeChemOscillator()', 'osc']], + chemDistrib = [['osc', 'soma', 'install', '1' ]], + plotList = [['soma', '1', 'dend/a', 'conc', 'a Conc'], + ['soma', '1', 'dend/b', 'conc', 'b Conc']] +) + +rdes.buildModel() +b = moose.element( '/model/chem/dend/b' ) +b.concInit *= 5 +moose.reinit() +moose.start( 200 ) + +rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex5.py b/examples/tutorials/Rdesigneur/rdes_ex5.py new file mode 100644 index 0000000..92a3fb7 --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex5.py @@ -0,0 +1,19 @@ +import moose +import pylab +import rdesigneur as rd +rdes = rd.rdesigneur( + turnOffElec = True, + chemProto = [['makeChemOscillator()', 'osc']], + chemDistrib = [['osc', 'soma', 'install', '1' ]], + plotList = [['soma', '1', 'dend/a', 'conc', 'Concentration of a'], + ['soma', '1', 'dend/b', 'conc', 'Concentration of b']], + moogList = [['soma', '1', 'dend/a', 'conc', 'a Conc', 0, 360 ]] +) + +rdes.buildModel() +bv = moose.vec( '/model/chem/dend/b' ) +bv[0].concInit *= 2 +bv[-1].concInit *= 2 +moose.reinit() + +rdes.displayMoogli( 1, 400, 0.001 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex6.py b/examples/tutorials/Rdesigneur/rdes_ex6.py new file mode 100644 index 0000000..7bd2dcd --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex6.py @@ -0,0 +1,34 @@ +import moose +import pylab +import rdesigneur as rd +rdes = rd.rdesigneur( + # We want just one compartment so we set diffusion length to be + # bigger than the 0.5 mm HH axon compartment default. + diffusionLength = 1e-3, + chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], + chanDistrib = [ + ['Na', 'soma', 'Gbar', '1200' ], + ['K', 'soma', 'Gbar', '360' ]], + chemProto = [['makeChemOscillator()', 'osc']], + chemDistrib = [['osc', 'soma', 'install', '1' ]], + # These adaptor parameters give interesting-looking but not + # particularly physiological behaviour. + adaptorList = [ + [ 'dend/a', 'conc', 'Na', 'modulation', 1, -5.0 ], + [ 'dend/b', 'conc', 'K', 'modulation', 1, -0.2], + [ 'dend/b', 'conc', '.', 'inject', -1.0e-7, 4e-7 ], + [ '.', 'Vm', 'dend/s', 'conc', 2.5, 20.0 ] + ], + plotList = [['soma', '1', 'dend/a', 'conc', 'a Conc'], + ['soma', '1', 'dend/b', 'conc', 'b Conc'], + ['soma', '1', 'dend/s', 'conc', 's Conc'], + ['soma', '1', 'Na', 'Gk', 'Na Gk'], + ['soma', '1', '.', 'Vm', 'Membrane potential'] + ] +) + +rdes.buildModel() +moose.reinit() +moose.start( 250 ) # Takes a few seconds to run this. + +rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex7.py b/examples/tutorials/Rdesigneur/rdes_ex7.py new file mode 100644 index 0000000..e798dfb --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex7.py @@ -0,0 +1,14 @@ +import moose +import rdesigneur as rd +rdes = rd.rdesigneur( + cellProto = [['./cells/h10.CNG.swc', 'elec']], + stimList = [['soma', '1', '.', 'inject', 't * 25e-9' ]], + plotList = [['#', '1', '.', 'Vm', 'Membrane potential'], + ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']], + moogList = [['#', '1', '.', 'Vm', 'Soma potential']] +) + +rdes.buildModel() + +moose.reinit() +rdes.displayMoogli( 0.0002, 0.1 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex8.py b/examples/tutorials/Rdesigneur/rdes_ex8.py new file mode 100644 index 0000000..105d6a5 --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex8.py @@ -0,0 +1,37 @@ +import moose +import rdesigneur as rd +rdes = rd.rdesigneur( + chanProto = [ + ['./chans/hd.xml'], + ['./chans/kap.xml'], + ['./chans/kad.xml'], + ['./chans/kdr.xml'], + ['./chans/na3.xml'], + ['./chans/nax.xml'], + ['./chans/CaConc.xml'], + ['./chans/Ca.xml'] + ], + cellProto = [['./cells/h10.CNG.swc', 'elec']], + chanDistrib = [ \ + ["hd", "#dend#,#apical#", "Gbar", "50e-2*(1+(p*3e4))" ], + ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], + ["na3", "#soma#,#dend#,#apical#", "Gbar", "850" ], + ["nax", "#soma#,#axon#", "Gbar", "1250" ], + ["kap", "#axon#,#soma#", "Gbar", "300" ], + ["kap", "#dend#,#apical#", "Gbar", + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], + ["Ca_conc", "#", "tau", "0.0133" ], + ["kad", "#soma#,#dend#,#apical#", "Gbar", "50" ], + ["Ca", "#", "Gbar", "50" ] + ], + stimList = [['soma', '1', '.', 'inject', '(t>0.02) * 1e-9' ]], + plotList = [['#', '1', '.', 'Vm', 'Membrane potential'], + ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']], + moogList = [['#', '1', 'Ca_conc', 'Ca', 'Calcium conc (uM)', 0, 120], + ['#', '1', '.', 'Vm', 'Soma potential']] +) + +rdes.buildModel() + +moose.reinit() +rdes.displayMoogli( 0.0002, 0.052 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex9.py b/examples/tutorials/Rdesigneur/rdes_ex9.py new file mode 100644 index 0000000..ed2ad04 --- /dev/null +++ b/examples/tutorials/Rdesigneur/rdes_ex9.py @@ -0,0 +1,40 @@ +import moose +import pylab +import rdesigneur as rd +rdes = rd.rdesigneur( + chanProto = [ + ['./chans/hd.xml'], + ['./chans/kap.xml'], + ['./chans/kad.xml'], + ['./chans/kdr.xml'], + ['./chans/na3.xml'], + ['./chans/nax.xml'], + ['./chans/CaConc.xml'], + ['./chans/Ca.xml'] + ], + cellProto = [['./cells/h10.CNG.swc', 'elec']], + spineProto = [['makeActiveSpine()', 'spine']], + chanDistrib = [ + ["hd", "#dend#,#apical#", "Gbar", "50e-2*(1+(p*3e4))" ], + ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], + ["na3", "#soma#,#dend#,#apical#", "Gbar", "850" ], + ["nax", "#soma#,#axon#", "Gbar", "1250" ], + ["kap", "#axon#,#soma#", "Gbar", "300" ], + ["kap", "#dend#,#apical#", "Gbar", + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], + ["Ca_conc", "#", "tau", "0.0133" ], + ["kad", "#soma#,#dend#,#apical#", "Gbar", "50" ], + ["Ca", "#", "Gbar", "50" ] + ], + spineDistrib = [['spine', '#dend#,#apical#', '20e-6', '1e-6']], + stimList = [['soma', '1', '.', 'inject', '(t>0.02) * 1e-9' ]], + plotList = [['#', '1', '.', 'Vm', 'Membrane potential'], + ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']], + moogList = [['#', '1', 'Ca_conc', 'Ca', 'Calcium conc (uM)', 0, 120], + ['#', '1', '.', 'Vm', 'Soma potential']] +) + +rdes.buildModel() + +moose.reinit() +rdes.displayMoogli( 0.0002, 0.0255 ) diff --git a/examples/unsorted/ksolve_with_heavy_load.py b/examples/unsorted/ksolve_with_heavy_load.py new file mode 100644 index 0000000..f7bbd62 --- /dev/null +++ b/examples/unsorted/ksolve_with_heavy_load.py @@ -0,0 +1,106 @@ +import math +import pylab +import numpy +import moose +import moose.utils as mu + +try: + from collections import OrderedDict + records_ = OrderedDict() +except: + records_ = {} + +def main(): + compartment = makeModel() + ksolve = moose.Ksolve( '/model/compartment/ksolve' ) + stoich = moose.Stoich( '/model/compartment/stoich' ) + stoich.compartment = compartment + stoich.ksolve = ksolve + stoich.path = "/model/compartment/##" + state = moose.SteadyState( '/model/compartment/state' ) + + moose.reinit() + state.stoich = stoich + state.convergenceCriterion = 1e-6 + moose.seed( 111 ) # Used when generating the samples in state space + moose.reinit() + moose.start(10) + plot( 10) + +def add_table(elem): + global records_ + tab = moose.Table2('%s/tab' % elem.path) + moose.connect(tab, 'requestOut', elem, 'getConc') + records_[elem.name] = tab + +def plot( numPlots ): + global records_ + toPlots = records_.keys()[0:numPlots] + newPlots = {} + for i in toPlots: + newPlots[i] = records_[i] + mu.plotRecords(newPlots, subplot = True) + +def makeModel(): + """ This function creates a bistable reaction system using explicit + MOOSE calls rather than load from a file. + The reaction is:: + + a ---b---> 2b # b catalyzes a to form more of b. + 2b ---c---> a # c catalyzes b to form a. + a <======> 2b # a interconverts to b. + + """ + # create container for model + model = moose.Neutral( 'model' ) + compartment = moose.CubeMesh( '/model/compartment' ) + compartment.volume = 1e-15 + # the mesh is created automatically by the compartment + mesh = moose.element( '/model/compartment/mesh' ) + + # create molecules and reactions + size = 100 + for i in range(size): + a = moose.Pool( '/model/compartment/a%s' % i ) + b = moose.Pool( '/model/compartment/b%s' % i ) + c = moose.Pool( '/model/compartment/c%s' % i ) + enz1 = moose.Enz( '%s/enz1' % a.path ) + enz2 = moose.Enz( '%s/enz2' % c.path ) + cplx1 = moose.Pool( '%s/cplx' % enz1.path ) + cplx2 = moose.Pool( '%s/cplx' % enz2.path ) + reac = moose.Reac( '/model/compartment/reac%s' % i) + + # connect them up for reactions + moose.connect( enz1, 'sub', a, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) + moose.connect( enz1, 'prd', b, 'reac' ) # Note 2 molecules of b. + moose.connect( enz1, 'enz', b, 'reac' ) + moose.connect( enz1, 'cplx', cplx1, 'reac' ) + + moose.connect( enz2, 'sub', b, 'reac' ) + moose.connect( enz2, 'sub', b, 'reac' ) # Note 2 molecules of b. + moose.connect( enz2, 'prd', a, 'reac' ) + moose.connect( enz2, 'enz', c, 'reac' ) + moose.connect( enz2, 'cplx', cplx2, 'reac' ) + + moose.connect( reac, 'sub', a, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) + moose.connect( reac, 'prd', b, 'reac' ) # Note 2 order in b. + add_table(a) + add_table(b) + add_table(c) + # Assign parameters + a.concInit = 1 + b.concInit = 0 + c.concInit = 0.01 + enz1.kcat = 0.4 + enz1.Km = 4 + enz2.kcat = 0.6 + enz2.Km = 0.01 + reac.Kf = 0.001 + reac.Kb = 0.01 + return compartment + +# Run the 'main' if this script is executed standalone. +if __name__ == '__main__': + main() diff --git a/examples/unsorted/test_function.py b/examples/unsorted/test_function.py new file mode 100644 index 0000000..5b7937f --- /dev/null +++ b/examples/unsorted/test_function.py @@ -0,0 +1,26 @@ +import moose + +a = moose.CubeMesh('/cube') +a.volume = 1 + +ca = moose.BufPool('/cube/ca') +ca.concInit = 1.0 + +f = moose.Function('/cube/ca/func') +f.expr = 'sin(0.1*3.14*t) > 0.81 ? 25e-3 : 0' +moose.connect(f, 'valueOut', ca, 'setConc') + +# create a table. +tab = moose.Table2('/cube/ca/table') +moose.connect( tab, 'requestOut', ca, 'getConc' ) + +# refine clock +for i in range(10, 16): + moose.setClock(i, 0.001) + +moose.reinit() +moose.start(100) + +import pylab +pylab.plot( tab.vector ) +pylab.savefig('output.png') diff --git a/examples/unsorted/test_gsolve.py b/examples/unsorted/test_gsolve.py new file mode 100644 index 0000000..bc88757 --- /dev/null +++ b/examples/unsorted/test_gsolve.py @@ -0,0 +1,53 @@ +import moose +import sys + +compt = moose.CubeMesh('/compt') +compt.volume = 1e-20 + +a = moose.Pool('/compt/a') +b = moose.Pool('/compt/b') + +a.nInit, b.nInit = 100, 10 + +atab = moose.Table2('/tableA') +btab = moose.Table2('/tableB') +moose.connect(atab, 'requestOut', a, 'getN') +moose.connect(btab, 'requestOut', b, 'getN') + +# Add a function which set conc of a + +## NOTE: This cause seg-fault. +func = moose.Function('/compt/a/function') + +# This does not. +#func = moose.Function('/func') + +func.expr = '100*(1 + sin(0.1*t) + cos(x0) )' +func.mode = 1 +moose.connect( a, 'nOut', func.x[0], 'input' ) +moose.connect(func, 'valueOut', a, 'setN') + +reac = moose.Reac('/compt/reac') +moose.connect(reac, 'sub', a, 'reac') +moose.connect(reac, 'prd', b, 'reac') +reac.Kf = 2 +reac.Kb = 1 + +gsolve = moose.Gsolve('/compt/gsolve') +stoich = moose.Stoich('/compt/stoich') +stoich.compartment = compt +stoich.ksolve = gsolve +stoich.path = '/compt/##' + +print("Reinit") +moose.reinit() +moose.start(100) +print("Done simulation") + +# plots +import pylab +pylab.plot(atab.vector, label = 'a') +pylab.plot(btab.vector, label = 'b' ) +pylab.legend( framealpha=0.4) +pylab.savefig( '%s.png' % sys.argv[0] ) +pylab.show() diff --git a/examples/util/moogli_viewer.py b/examples/util/moogli_viewer.py new file mode 100644 index 0000000..f48330c --- /dev/null +++ b/examples/util/moogli_viewer.py @@ -0,0 +1,301 @@ + +# -*- coding: utf-8 -*- + +""" +Moogli Visualizer. +""" + +# http://stackoverflow.com/questions/28104362/how-to-rotate-camera-in-openscenegraphwalk-through-in-model +from PyQt4 import QtGui +from PyQt4 import QtCore +from PyQt4 import Qt +from PyQt4.QtGui import QPushButton +from PyQt4.QtGui import QWidget +from PyQt4.QtGui import QVBoxLayout +from PyQt4.QtGui import QGridLayout +from PyQt4.QtGui import QDialog +from PyQt4.QtGui import QTableWidget +from PyQt4.QtGui import QTableWidgetItem +from PyQt4.QtGui import QCheckBox +from PyQt4.QtGui import QComboBox +import time +import moose +from moose import neuroml +import moogli +import pprint +import numpy as np +import os +import sys + + +class MorphologyEditor(moogli.MorphologyViewer): + + def __init__(self, morphology, width, height): + super(MorphologyEditor, self).__init__( morphology + , width + , height + ) + self._timer = QtCore.QTimer(self) + + def start(self): + self._timer.timeout.connect(self.next) + self._timer.start(0) + + @QtCore.pyqtSlot() + def show(self): + self._timer.timeout.connect(self.next) + super(MorphologyEditor, self).show() + self._timer.start(0) + + @QtCore.pyqtSlot() + def hide(self): + self._timer.stop() + super(MorphologyEditor, self).hide() + + def next(self): + self.frame() + info_id = self.select_info.get_id() + info_event = self.select_info.get_event_type() + if info_event == 1: + self.select_info.set_event_type(0) + + +def model(element): + """Given model root element, extracts morphology + information about all neurons and compartments belonging + to that model + """ + return morphology(moose.element(element)) + # if element.path.endswith("/") : + # return morphology(moose.element(element.path + "cells")) + # else: + # return morphology(moose.element(element.path + "/cells")) + +def morphology(element): + """Given the element containing all neurons, extracts + morphology information from all child elements. + """ + return { "name" : element.name + , "id" : element.path + , "type" : etype(element) + , "neurons" : neurons(element) + } + +def neurons(element): + """Given a neuron element, extracts morphology + information from all child compartment elements. + """ + retval = {} + neurons = list(moose.wildcardFind(element.path + "/##[TYPE=Neutral]")) + neurons.extend(list(moose.wildcardFind(element.path + "/##[TYPE=Neuron]"))) + for element in neurons: + retval[element.path] = { "name" : element.name + , "id" : element.path + , "object" : element + , "type" : etype(element) + , "compartments" : compartments(element) + } + return retval + +def compartments(element): + retval = {} + compartments = moose.wildcardFind(element.path + "/##[ISA=CompartmentBase]") + for element in compartments: + retval[element.path] = { "name" : element.name + , "object" : element + , "id" : element.path + , "type" : etype(element) + , "proximal" : { "x" : element.x0 + , "y" : element.y0 + , "z" : element.z0 + } + , "distal" : { "x" : element.x + , "y" : element.y + , "z" : element.z + } + , "diameter" : element.diameter + } + return retval + +def etype(element): + element_type = element.name.rpartition("_")[0] + if element_type == '': return element.name + return element_type + +def recurse(element, func, classType): + return dict( [ func(child[0]) for child in element.children + if isinstance(child[0], classType) + ] + ) + +class MoogliViewer(QWidget): + + """ + NeuroKitEditor + """ + + def __init__(self, modelPath): + super(MoogliViewer, self).__init__() + self._centralWidget = None + self.modelRoot = moose.element(modelPath) + self.setLayout(QVBoxLayout()) + self.createCentralWidget() + + + def setBaseColor(self, color): + self.morphology.set_initial_color( color[0] / 255.0 + , color[1] / 255.0 + , color[2] / 255.0 + , color[3] / 255.0 + ) + + def setPeakColor(self, color): + self.morphology.set_final_color( color[0] / 255.0 + , color[1] / 255.0 + , color[2] / 255.0 + , color[3] / 255.0 + ) + + def setBackgroundColor(self, color): + self.visualizer.set_background_color( color[0] / 255.0 + , color[1] / 255.0 + , color[2] / 255.0 + , color[3] / 255.0 + ) + + def setBaseVm(self, vm): + self.morphology.set_base_membrane_voltage(vm) + + def setPeakVm(self, vm): + self.morphology.set_peak_membrane_voltage(vm) + + + def createCentralWidget(self): + self.geometry = model(moose.element(self.modelRoot.path)) + self.morphology = self.createMorphology(self.geometry) + + self.morphology.set_compartment_order( + map(lambda x : x.path, self.compartmentOrder) + ) + + self.vms = np.empty(len(self.compartmentOrder), dtype=np.float, order='C') + self.ims = np.empty(len(self.compartmentOrder), dtype=np.float, order='C') + # self.visualizer.insertPlainText(pprint.pformat(self.geometry, indent = 4)) + # self.visualizer = QTextEdit()#NeuroKitVisualizer(self.modelRoot) + desktop = QtGui.QApplication.desktop() + # print("**********************") + # print(desktop.screenGeometry()) + # print("***********************") + + self.visualizer = MorphologyEditor( self.morphology + , desktop.screenGeometry().width() + , desktop.screenGeometry().height() + ) + # self.scheduler = self.getSchedulingDockWidget().widget() + # self._centralWidget.setChildWidget(self.scheduler, False, 0,0,1,-1) + # self.visualizer.setGeometry( 0, 0, desktop.screenGeometry().width(), desktop.screenGeometry().height() ) + self.visualizer.showMaximized() + self.visualizer.show() + # self.visualizer.start() + self.layout().addWidget(self.visualizer) + + def update(self, time): + # print("Update called => ", time) + # print("Update called") + # for neuron_id in self.geometry["neurons"]: + # neuron = self.geometry["neurons"][neuron_id] + # for compartment_id in neuron["compartments"]: + # voltage = neuron["compartments"][compartment_id]["object"].Vm + # print(compartment_id + " => " + str(voltage)) + + # self.visualizer. + self.updateVms() + # self.updateIms() + # self.visualizer.next() + # print(self.vms) + + def updateVms(self): + for i in range(0, len(self.compartmentOrder)): + self.vms[i] = self.compartmentOrder[i].Vm + self.morphology.set_membrane_voltages(self.vms) + + def updateIms(self): + for i in range(0, len(self.compartmentOrder)): + self.ims[i] = self.compartmentOrder[i].Im + + def getCompartmentOrder(self): + return self.compartmentOrder + + def createMorphology(self, geometry): + # import json + # f = open("/home/aviral/purkinje.json", "w") + # f.write(json.dumps(geometry, indent=4)) + # f.close() + # morphology = moogli.Morphology("morph") + # morphology.add_compartment( "a" + # , "b", 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0) + # morphology.add_compartment( "c" + # , "b" + # , 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0) + morphology = moogli.Morphology("morph", 1) + self.compartmentOrder = [] + for neuron_id in geometry["neurons"]: + neuron = geometry["neurons"][neuron_id] + for compartment_id in neuron["compartments"]: + compartment = neuron["compartments"][compartment_id] + print( compartment_id) + # , neuron_id + # , compartment["proximal"]["x"] + # , compartment["proximal"]["y"] + # , compartment["proximal"]["z"] + # , compartment["diameter"] + # , compartment["distal"]["x"] + # , compartment["distal"]["y"] + # , compartment["distal"]["z"] + # , compartment["diameter"] + # ) + self.compartmentOrder.append(compartment["object"]) + morphology.add_compartment( compartment_id + , neuron_id + , compartment["proximal"]["x"] * 10000000 + , compartment["proximal"]["y"] * 10000000 + , compartment["proximal"]["z"] * 10000000 + , compartment["diameter"] * 10000000 + , compartment["distal"]["x"] * 10000000 + , compartment["distal"]["y"] * 10000000 + , compartment["distal"]["z"] * 10000000 + , compartment["diameter"] * 10000000 + ) + return morphology + + + +def main(): + filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + , "../neuroml/CA1/CA1.morph.pop.xml") + + + # filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + # , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml") + # filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] + # , "../neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml") + + popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) + modelRoot = moose.Neutral("/" + os.path.splitext(os.path.basename(filename))[0]) + element = moose.Neutral(modelRoot.path + "/model") + if(moose.exists("/cells")) : moose.move("/cells" , element.path) + if(moose.exists("/elec")) : moose.move("/elec" , modelRoot.path) + if(moose.exists("/library")): moose.move("/library", modelRoot.path) + show_morphology(modelRoot.path) + +def show_morphology(modelpath): + app = QtGui.QApplication(sys.argv) + widget = MoogliViewer(modelpath) + # widget.setBaseVm() + widget.showMaximized() + # widget.setStyleSheet("background-color: black;") + widget.show() + return app.exec_() + +if __name__ == "__main__": + main() diff --git a/examples/util/pymoose.py b/examples/util/pymoose.py new file mode 100644 index 0000000..bea5251 --- /dev/null +++ b/examples/util/pymoose.py @@ -0,0 +1,45 @@ +# pymoose.py --- +# +# Filename: pymoose.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Copyright (C) 2010 Subhasis Ray, all rights reserved. +# Created: Wed Apr 20 11:51:24 2011 (+0530) +# Version: +# Last-Updated: Fri Apr 22 15:09:53 2011 (+0530) +# By: Subhasis Ray +# Update #: 13 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# This provides ports of the code in pymoose.py in earlier moose. +# +# + +# Change log: +# +# +# + +# Code: + +from moose import * +def listmsg(pymoose_object): + """Print a list of the messages on this object. + + """ + print 'Incoming messages:' + for msg in pymoose_object.inMessages(): + print msg + print 'Outgoing messages:' + for msg in pymoose_object.outMessages(): + print msg + +# +# pymoose.py ends here diff --git a/mgui/MWindow.py b/mgui/MWindow.py new file mode 100644 index 0000000..3902bad --- /dev/null +++ b/mgui/MWindow.py @@ -0,0 +1,1099 @@ +"""MWindow.py: + +Moose Main Window Class. + +""" + +__copyright__ = "Copyright 2016, Me" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Me" +__email__ = "" +__status__ = "Development" + +import sys +import os +import code +import imp +import inspect +import traceback +import re +from collections import defaultdict, OrderedDict + +from PyQt4 import QtGui, QtCore, Qt +from PyQt4 import Qt, QtCore, QtGui +from PyQt4.QtGui import * + +import moose +from moose import utils + +from . import config +from . import mplugin +from . import mexception +from . import mload +from .loaderdialog import LoaderDialog +from .shell import get_shell_class +from .objectedit import ObjectEditDockWidget +from .newmodeldialog import DialogWidget +from .biomodelsclient import BioModelsClientWidget +from .MdiArea import MdiArea +from .plugins.setsolver import * +from .plugins.defines import * + +# Logger +_logger = config._logger + + +# This maps model subtypes to corresponding plugin names. Should be +# moved to a separate property file perhaps +subtype_plugin_map = { + 'genesis/kkit': 'kkit' + , 'cspace/': 'kkit' + , 'xml/sbml': 'kkit' + , 'xml/neuroml': 'NeuroKit' + } + +def busyCursor(): + app = QtGui.qApp + app.setOverrideCursor(QtGui.QCursor(Qt.Qt.BusyCursor)) + #shows a hourglass - or a busy/working arrow + +def freeCursor(): + app = QtGui.qApp + app.restoreOverrideCursor() + +class MWindow(QtGui.QMainWindow): + """The main window for MOOSE GUI. + + This is the driver class that uses the mplugin API. mplugin based + classes will provide the toolbar, plugin specific menu items and a + set of panes to be displayed on the docks. + + 1. Setting a plugin + + When a plugin is set as the current plugin, the view and the + menus are updated. + + 1.a) Updating menus: + + the plugin can provide its own list of menus by implementing the + function getMenus(). + + the view of the plugin can also provide its own list of + menus by implementing the function getMenus(). + + the currentView provides a set of toolbars that are added to the + main window. + + 1.b) Updating views + + central widget is set to the currentView (a ViewBase instance) of + the plugin. + + the currentView provides a set of panes that are inserted in the + right dock area one by one. + + """ + def __init__(self, *args): + QtGui.QMainWindow.__init__(self, *args) + self.setWindowTitle('MOOSE') + self.pluginNames = None + self.plugin = None + self.fileMenu = None + self.editMenu = None + self.helpMenu = None + self.helpActions = None + self.viewActions = None + self.editActions = None + self.connectMenu = None + + self.toolBars = [] + self._loadedPlugins = {} + self._plugins = {} + self._loadedModels = [] + self.setUnifiedTitleAndToolBarOnMac(True) + self.setDockOptions(self.AnimatedDocks and self.AllowNestedDocks and self.AllowTabbedDocks) + self.mdiArea = MdiArea() + + self.quitAction = QtGui.QAction('&Quit', self) + self.connect(self.quitAction, QtCore.SIGNAL('triggered()'), self.quit) + self.quitAction.setShortcut( + QtGui.QApplication.translate( + "MainWindow", "Ctrl+Q" , None , QtGui.QApplication.UnicodeUTF8 + ) + ) + self.getMyDockWidgets() + self.setCentralWidget(self.mdiArea) + + self.mdiArea.setViewMode(QtGui.QMdiArea.TabbedView) + self.mdiArea.subWindowActivated.connect(self.switchSubwindowSlot) + self.setPlugin('default', '/') + self.plugin.getEditorView().getCentralWidget().parent().close() + self.popup = None + self.createPopup() + + def createPopup(self): + self.popup = dialog = QDialog(self) + #dialog.setWindowFlags(Qt.Qt.Dialog | Qt.Qt.FramelessWindowHint) + dialog.setWindowFlags(Qt.Qt.Dialog | Qt.Qt.CustomizeWindowHint) + #dialog.setStyleSheet("border:1px solid rgb(0, 0, 0); ") + qapp = QApplication.desktop().screenGeometry(); + dialog.setGeometry((qapp.bottomLeft().x()+100),(qapp.bottomLeft().y()-250),100,100) + #dialog.move(qapp.bottomLeft().x()+10,qapp.bottomLeft().y()-10) + layout = QGridLayout() + self.setStyleSheet( + "QPushButton{border-radius: 5px; border-color: rgb(0,0,0); " + "border-width: 2px; border-style: outset;" + "padding-top: 2px; padding-bottom: 5px;" + "padding-left: 5px; padding-right: 5px}" + ) + createKineticModelButton = QPushButton("Create Kinetic Model") + loadKineticModelButton = QPushButton("Load Model") + loadNeuronalModelButton = QPushButton("Load Neuronal Model") + layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) + + self.menuitems = OrderedDict([ + ("Fig2C" , "examples/paper-2015/Fig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "examples/paper-2015/Fig2_elecModels/Fig2D.py"), + ("Fig2E", "examples/paper-2015/Fig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3D", "examples/paper-2015/Fig3_chemModels/Fig3D.py"), + ("Fig4B", "examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)", "examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), + ("Reduced6 (200s)", "examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Squid" , "examples/squid/squid_demo.py") + ]) + layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) + layout1 = QHBoxLayout() + layout1.addWidget(createKineticModelButton) + layout1.addWidget(loadKineticModelButton) + layout2 = QHBoxLayout() + layout3 = QHBoxLayout() + layout4 = QHBoxLayout() + layout5 = QHBoxLayout() + layout6 = QHBoxLayout() + layout7 = QHBoxLayout() + listofButtons = {} + for i in range(0,len(self.menuitems)): + k = self.menuitems.popitem(0) + t = k[0] + button = QPushButton(k[0]) + if k[0] == "Fig2E": + button.setToolTip("Illustrates loading a model from an SWC file, inserting channels, and running it") + elif k[0] == "Fig2D (35s)": + button.setToolTip("Illustrates loading a model from an SWC file, inserting spines, and running it") + elif k[0] == "Fig2C": + button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") + elif k[0] == "Fig3B_Gssa": + button.setToolTip("Loades Repressilator model into Gui with Gssa solver and runs the model") + elif k[0] == "Fig3C_Gsl": + button.setToolTip("Loades Repressilator model into Gui with Gsl solver and runs the model") + elif k[0] == "Fig3D": + button.setToolTip("This example implements a reaction-diffusion like system which is bistable and propagates losslessly") + elif k[0] == "Fig4B": + button.setToolTip("This program builds a multiscale model with a few spines inserted into a simplified cellular morphology. Each spine has a signaling model in it too. The program doesn't run the model, it just displays it in 3D") + elif k[0] == "Fig4K": + button.setToolTip("Builds a cell with spines and a propagating reaction wave") + elif k[0] == "Fig5A (20s)": + button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") + elif k[0] == "Fig5BCD (240s)": + button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") + elif k[0] == "Fig6A (60s)": + button.setToolTip("This LIF network with Ca plasticity is based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") + elif k[0] == "Reduced6 (200s)": + button.setToolTip("This is the Reduced version of LIF network with Ca plasticity model based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") + elif k[0] == "Squid": + button.setToolTip("squid Demo") + if k[0] in ["Fig2E","Fig2D (35s)","Fig2C"]: + layout2.addWidget(button) + elif k[0] in ["Fig3B_Gssa","Fig3C_Gsl","Fig3D"]: + layout3.addWidget(button) + elif k[0] in ["Fig4B","Fig4K"]: + layout4.addWidget(button) + elif k[0] in ["Fig5A (20s)","Fig5BCD (240s)"]: + layout5.addWidget(button) + elif k[0] in ["Fig6A (60s)","Reduced6 (200s)"]: + layout6.addWidget(button) + elif k[0] in ["Squid"]: + layout7.addWidget(button) + + if k[0] == "Fig3C_Gsl": + button.clicked.connect(lambda x, script = k[1]: self.run_genesis_script(script,"gsl")) + elif k[0] == "Fig3B_Gssa": + button.clicked.connect(lambda x, script = k[1]: self.run_genesis_script(script,"gssa")) + else: + button.clicked.connect(lambda x, script = k[1]: self.run_python_script(script)) + + layout.addLayout(layout1,0,0) + layout.addLayout(layout2,1,0) + layout.addLayout(layout3,2,0) + layout.addLayout(layout4,3,0) + layout.addLayout(layout5,4,0) + layout.addLayout(layout6,5,0) + layout.addLayout(layout7,6,0) + dialog.setStyleSheet("border:1px solid rgb(0, 0, 0); ") + dialog.setLayout(layout) + + createKineticModelButton.clicked.connect(self.newModelDialogSlot) + loadKineticModelButton.clicked.connect(self.loadModelDialogSlot) + loadNeuronalModelButton.clicked.connect(self.loadModelDialogSlot) + + dialog.show() + freeCursor() + return dialog + + def run_genesis_script(self,filepath,solver): + self.popup.hide() + abspath = os.path.abspath(filepath) + directory, modulename = os.path.split(abspath) + modelName = os.path.splitext(modulename)[0] + ret = mload.loadFile(str(abspath),'%s' %(modelName),solver,merge=False) + self.setPlugin("kkit", ret["model"].path) + self.setCurrentView("run") + widget = self.plugin.view.getSchedulingDockWidget().widget() + widget.runSimulation() + + def run_python_script(self, filepath): + busyCursor() + import subprocess, shlex + t = os.path.abspath(filepath) + directory, filename = os.path.split(t) + p = subprocess.Popen(["python", filename], cwd=directory) + p.wait() + freeCursor() + + def quit(self): + QtGui.qApp.closeAllWindows() + + def handleException(self, t, v, s): + """This handler will show warning messages for error exceptions. Show + info at status bar for non-error exceptions. It will replace + sys.excepthook and has the same signature (except being bound + to this object). + + t : exception type + + v : exception value + + s: traceback object. + + """ + traceback.print_exception(t, v, s) + title = ''.join(traceback.format_exception_only(t, v)) + trace = ''.join(traceback.format_exception(t, v, s)) + if isinstance(v, mexception.MooseInfo): + self.statusBar().showMessage(title, 5000) + elif isinstance(v, mexception.MooseWarning): + QtGui.QMessageBox.warning(self, title, '\n'.join((title, trace))) + else: + QtGui.QMessageBox.critical(self, title, '\n'.join((title, trace))) + + def getPluginNames(self): + """Return pluginNames attribute or create it by retrieving + available plugin names from plugin/list.txt file. + + """ + if self.pluginNames is None: + pluginF = os.path.join( config.MOOSE_GUI_DIR, 'plugins', 'list.txt' ) + with open( pluginF, 'r' ) as lfile: + self.pluginNames = [line.strip() for line in lfile] + self.pluginNames = [name for name in self.pluginNames if name] + return self.pluginNames + + def loadPluginModule(self, name, re=False): + """Load a plugin module by name. + + First check if the plugin is already loaded. If so return the + existing one. Otherwise, search load the plugin as a python + module from {MOOSE_GUI_DIRECTORY}/plugins directory. + + If re is True, the plugin is reloaded. + """ + if (not re) and name in sys.modules: + return sys.modules[name] + fp, pathname, description = imp.find_module(name, [config.MOOSE_PLUGIN_DIR]) + try: + module = imp.load_module(name, fp, pathname, description) + finally: + if fp: + fp.close() + return module + + def getMyDockWidgets(self): + """Return a list of dockwidgets that belong to the top + level. This is needed to keep them separate from those + provided by the plugins. + + Currently we only have shell for this.""" + if not hasattr(self, 'dockWidgets') or self.dockWidgets is None: + self.dockWidgets = {} + dockWidget = QtGui.QDockWidget('Python') + dockWidget.setWidget(self.getShellWidget()) + self.dockWidgets[dockWidget] = True + self.addDockWidget(Qt.Qt.BottomDockWidgetArea, dockWidget) + dockWidget.setVisible(False) + dockWidget = ObjectEditDockWidget('/') + self.dockWidgets[dockWidget] = True + self.objectEditDockWidget = dockWidget + self.addDockWidget(Qt.Qt.RightDockWidgetArea, dockWidget) + dockWidget.setVisible(False) + return list(self.dockWidgets.keys()) + + def getShellWidget(self): + """Create an instance of shell widget. This can be either a + QSciQScintialla widget or a PyCute widget (extends QTextArea) + if the first is not available""" + if not hasattr(self, 'shellWidget') or self.shellWidget is None: + self.shellWidget = get_shell_class()( + code.InteractiveInterpreter() + , message='MOOSE version %s' % (moose._moose.__version__) + ) + self.shellWidget.interpreter.runsource('from moose import *') + self.shellWidget.setVisible(False) + return self.shellWidget + + def loadPluginClass(self, name, re=False): + """Load the plugin class from a plugin module. + + A plugin module should have only one subclass of + MoosePluginBase. Otherwise the first such class found will be + loaded. + """ + try: + return self._loadedPlugins[name] + except KeyError: + pluginModule = self.loadPluginModule(name, re=re) + for classname, classobj in inspect.getmembers(pluginModule, inspect.isclass): + if issubclass(classobj, mplugin.MoosePluginBase): + self._loadedPlugins[name] = classobj + # classobj.getEditorView().getCentralWidget().editObject.connect(self.objectEditSlot) + return self._loadedPlugins[name] + raise Exception('No plugin with name: %s' % (name)) + + def setPlugin(self, name, root='/'): + """Set the current plugin to use. + + This - + + 1. sets the `plugin` attribute. + + 2. updates menus by clearing and reinstating menus including + anything provided by the plugin. + + 3. sets the current view to the plugins editor view. + + """ + busyCursor() + for model in self._loadedModels: + if model[0] != root: + self.disableModel(model[0]) + for i in range(0, len(self._loadedModels)): + if self._loadedModels[i][0]== root: + c = moose.Clock('/clock') + compts = moose.wildcardFind(root+'/##[ISA=ChemCompt]') + for simdt in CHEMICAL_SIMULATION_DT_CLOCKS: + c.tickDt[simdt] = self._loadedModels[i][3] + for plotdt in CHEMICAL_PLOT_UPDATE_INTERVAL_CLOCKS: + c.tickDt[plotdt] = self._loadedModels[i][4] + + if compts: + #setCompartmentSolver(self._loadedModels[i][0],"gsl") + addSolver(self._loadedModels[i][0],"gsl") + else: + c.tickDt[7] = self._loadedModels[i][3] + c.tickDt[8] = self._loadedModels[i][4] + neurons = moose.wildcardFind(root + "/model/cells/##[ISA=Neuron]") + for neuron in neurons: + solver = moose.element(neuron.path + "/hsolve") + solver.tick = 7 + for x in moose.wildcardFind( root+'/data/graph#/#' ): + x.tick = 8 + break + + self.plugin = self.loadPluginClass(str(name))(str(root), self) + moose.reinit() + + self.updateMenus() + for action in self.pluginsMenu.actions(): + if str(action.text()) == str(name): + action.setChecked(True) + elif action.isChecked(): + action.setChecked(False) + for subwin in self.mdiArea.subWindowList(): + subwin.close() + + if name != "default" : + self.setCurrentView('editor') + self.setCurrentView('run') + + if name == 'kkit': + self.objectEditDockWidget.objectNameChanged.connect(self.plugin.getEditorView().getCentralWidget().updateItemSlot) + self.objectEditDockWidget.colorChanged.connect(self.plugin.getEditorView().getCentralWidget().updateColorSlot) + + self.setCurrentView('editor') + freeCursor() + return self.plugin + + def updateExistingMenu(self, menu): + """Check if a menu with same title + already exists. If so, update the same and return + True. Otherwise return False. + """ + if not isinstance(menu, QtGui.QMenu): + return False + for action in self.menuBar().actions(): + if menu.title() == action.text(): + # if not action.menu().isEmpty(): + # action.menu().addSeparator() + action.menu().addActions(menu.actions()) + return True + return False + + def updateMenus(self): + """Clear the menubar and reinstate the basic menus. Go + through the menus provided by current plugin and add those to + menubar. + + If a menu provided by a plugin has same name as one of the + core menus, the menu items provided by the plugin are appended + to the existing menu after a separator. + + """ + self.menuBar().clear() + self.getPluginsMenu() + menus = [self.getFileMenu(), + self.getEditMenu(), + self.getViewMenu(), + #self.getRunMenu(), + #self.getConnectMenu(), + self.getHelpMenu()] + for menu in menus: + self.menuBar().addMenu(menu) + + for menu in self.plugin.getMenus(): + if not self.updateExistingMenu(menu): + if not self.menuBar().isEmpty(): + action.menu().addSeparator() + self.menuBar().addMenu(menu) + menus[0].addSeparator() + menus[0].addAction(self.quitAction) + + def updateToolbars(self): + _logger.info( "Updating toolbar" ) + for toolbar in self.toolBars: + self.removeToolBar(toolbar) + self.toolBars = [] + self.toolBars.extend(self.getMyToolBars()) + self.toolBars.extend(self.plugin.getToolBars()) + self.toolBars.extend(self.plugin.getCurrentView().getToolBars()) + if len(self.toolBars): + for toolbar in self.toolBars: + self.addToolBar(toolbar) + toolbar.setVisible(True) + + def switchSubwindowSlot(self, window): + """Change view based on what subwindow `window` is activated.""" + if not window: + return + view = str(window.windowTitle()).partition(':')[0] + self.setCurrentView(view) + + def setCurrentView(self, view): + """Set current view to a particular one: options are 'editor', + 'plot', 'run'. A plugin can provide more views if necessary. + """ + self.plugin.setCurrentView(view) + if view =='run': + #Harsha: This will clear out object editor's objectpath and make it invisible + self.objectEditSlot('/',False) + + targetView = None + newSubWindow = True + widget = self.plugin.getCurrentView().getCentralWidget() + current = self.mdiArea.activeSubWindow() + subwin = None + for subwin in self.mdiArea.subWindowList(): + if subwin.widget() == widget: + newSubWindow = False + break + if newSubWindow: + subwin = self.mdiArea.addSubWindow(widget) + title = widget.modelRoot+'/model' + #subwin.setWindowTitle('%s: %s' % (view, widget.modelRoot)) + subwin.setWindowTitle('%s: %s' % (view, title)) + subwin.setSizePolicy(QtGui.QSizePolicy.Minimum | + QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Minimum | + QtGui.QSizePolicy.Expanding) + subwin.resize(600, 400) + # Make dockwidgets from other views invisible and make those + # from current view visible or add them if not already part of + # main window. + dockWidgets = set([dockWidget for dockWidget in self.findChildren(QtGui.QDockWidget)]) + for dockWidget in dockWidgets: + if dockWidget not in self.dockWidgets: + dockWidget.setVisible(False) + for dockWidget in self.plugin.getCurrentView().getToolPanes(): + if dockWidget not in dockWidgets: + if view == "run": + if dockWidget.windowTitle() == "Scheduling": + self.addDockWidget(Qt.Qt.TopDockWidgetArea, dockWidget) + else: + self.addDockWidget(Qt.Qt.RightDockWidgetArea, dockWidget) + dockWidget.setVisible(True) + subwin.setVisible(True) + self.mdiArea.setActiveSubWindow(subwin) + self.updateMenus() + for menu in self.plugin.getCurrentView().getMenus(): + if not self.updateExistingMenu(menu): + self.menuBar().addMenu(menu) + self.updateToolbars() + return subwin + + def getMyToolBars(self): + self._toolBars = [] + ''' + #Harsha: removing the toolbars (plot,run,edit) from the Gui + if not hasattr(self, 'viewToolBar'): + self.viewToolBar = QtGui.QToolBar('View') + #Harsha:removing plotView from the ToolBar + for t in self.getViewActions(): + if t.text() != "&Plot view": + self.viewToolBar.addAction(t) + #self.viewToolBar.addActions(self.getViewActions()) + #return [self.viewToolBar] + ''' + return self._toolBars + + def getFileMenu(self): + if self.fileMenu is None: + self.fileMenu = QtGui.QMenu('&File') + else: + self.fileMenu.clear() + + if not hasattr(self, 'newModelAction'): + self.newModelAction = QtGui.QAction('New', self) + self.newModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+N", None, QtGui.QApplication.UnicodeUTF8)) + self.connect(self.newModelAction, QtCore.SIGNAL('triggered()'), self.newModelDialogSlot) + self.fileMenu.addAction(self.newModelAction) + if not hasattr(self, 'loadModelAction'): + self.loadModelAction = QtGui.QAction('L&oad model', self) + self.loadModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) + self.connect(self.loadModelAction, QtCore.SIGNAL('triggered()'), self.loadModelDialogSlot) + self.fileMenu.addAction(self.loadModelAction) + + if not hasattr(self, 'Paper_2015'): + self.menuitems = OrderedDict([ + ("Fig2C (6s)" , "examples/paper-2015/Fig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "examples/paper-2015/Fig2_elecModels/Fig2D.py"), + ("Fig2E (5s)" , "examples/paper-2015/Fig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa (2s)", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl (2s)", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3D (1s)", "examples/paper-2015/Fig3_chemModels/Fig3D.py"), + ("Fig4B (10s)", "examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)" , "examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), + ("Reduced6 (200s)", "examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Squid" , "examples/squid/squid_demo.py") + ]) + self.subMenu = QtGui.QMenu('Paper_2015_Demos') + for i in range(0,len(self.menuitems)): + k = self.menuitems.popitem(0) + t = "self."+k[0]+"Action" + t = QtGui.QAction(k[0],self) + self.subMenu.addAction(t) + if k[0] == "Fig3C_Gsl (2s)": + t.connect(t,QtCore.SIGNAL('triggered()'),lambda script = k[1]: self.run_genesis_script(script,"gsl")) + elif k[0] == "Fig3B_Gssa (2s)": + t.connect(t,QtCore.SIGNAL('triggered()'),lambda script = k[1]: self.run_genesis_script(script,"gssa")) + else: + t.connect(t,QtCore.SIGNAL('triggered()'),lambda : self.run_python_script(k[1])) + self.subMenu.addAction(t) + self.fileMenu.addMenu(self.subMenu) + + if not hasattr(self,'loadedModels'): + self.loadedModelAction = QtGui.QAction('Recently Loaded Models',self) + self.loadedModelAction.setCheckable(False) + #self.fileMenu.addAction(QtGui.QAction(self.loadedModelAction,checkable=True)) + if bool(self._loadedModels): + self.fileMenu.addSeparator() + self.fileMenu.addAction(self.loadedModelAction) + self.loadedModelAction.setEnabled(False) + for (model, modeltype, action,simdt,plotdt) in reversed(self._loadedModels): + self.fileMenu.addAction(action) + self.fileMenu.addSeparator() + + if not hasattr(self,'connectBioModelAction'): + self.connectBioModelAction = QtGui.QAction('&Connect BioModels', self) + self.connectBioModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+B", None, QtGui.QApplication.UnicodeUTF8)) + self.connect(self.connectBioModelAction, QtCore.SIGNAL('triggered()'), self.connectBioModel) + self.fileMenu.addAction(self.connectBioModelAction) + return self.fileMenu + + def getEditMenu(self): + if self.editMenu is None: + self.editMenu = QtGui.QMenu('&Edit') + else: + self.editMenu.clear() + #self.editMenu.addActions(self.getEditActions()) + return self.editMenu + + def getPluginsMenu(self): + """Populate plugins menu if it does not exist already.""" + if (not hasattr(self, 'pluginsMenu')) or (self.pluginsMenu is None): + self.pluginsMenu = QtGui.QMenu('&Plugins') + mapper = QtCore.QSignalMapper(self) + pluginsGroup = QtGui.QActionGroup(self) + pluginsGroup.setExclusive(True) + for pluginName in self.getPluginNames(): + action = QtGui.QAction(pluginName, self) + action.setObjectName(pluginName) + action.setCheckable(True) + mapper.setMapping(action, QtCore.QString(pluginName)) + self.connect(action, QtCore.SIGNAL('triggered()'), mapper, QtCore.SLOT('map()')) + self.pluginsMenu.addAction(action) + pluginsGroup.addAction(action) + self.connect(mapper, QtCore.SIGNAL('mapped(const QString &)'), self.setPlugin) + #self.pluginsMenu.addMenu(self.defaultPluginMenu) + #self.pluginsMenu.addMenu(self.kkitPluginMenu) + #self.pluginsMenu.addMenu(self.neurokitPluginMenu) + #openRootAction = self.defaultPluginMenu.addAction("/") + #openRootAction.triggered.connect(lambda : self.setPlugin("default", "/") ) + # if (not hasattr(self, 'loadedModelAction')) or (self.loadedModelAction is None) : + # self.loadedModelAction = QtGui.QAction("kkit",self) + # self.loadedModelAction.addMenu('test') + # self.pluginsMenu.addAction(self.loadedModelAction) + # self.pluginsMenu.addMenu(self.insertkkitMenu) + # self.insertMapperkkit = QtCore.QSignalMapper(self) + #insertMapperkkit,actions = self.getInsertkkitActions(self.loadedModels) + # ignored_bases = ['ZPool', 'Msg', 'Panel', 'SolverBase', 'none'] + # ignored_classes = ['ZPool','ZReac','ZMMenz','ZEnz','CplxEnzBase'] + # classlist = [ch[0].name for ch in moose.element('/classes').children + # if (ch[0].baseClass not in ignored_bases) + # and (ch[0].name not in (ignored_bases + ignored_classes)) + # and not ch[0].name.startswith('Zombie') + # and not ch[0].name.endswith('Base') + # ] + # insertMapper, actions = self.getInsertActions(classlist) + # for action in actions: + # self.insertMenu.addAction(action) + # self.connect(insertMapper, QtCore.SIGNAL('mapped(const QString&)'), self.tree.insertElementSlot) + # self.editAction = QtGui.QAction('Edit', self.treeMenu) + # self.editAction.triggered.connect(self.editCurrentObjectSlot) + # self.tree.elementInserted.connect(self.elementInsertedSlot) + # self.treeMenu.addAction(self.editAction) + return self.pluginsMenu + + def getHelpMenu(self): + if self.helpMenu is None: + self.helpMenu = QtGui.QMenu('&Help') + else: + self.helpMenu.clear() + self.helpMenu.addActions(self.getHelpActions()) + return self.helpMenu + ''' + def getConnectMenu(self): + if self.connectMenu is None: + self.connectMenu = QtGui.QMenu('&Connect') + else: + self.connectMenu.clear() + self.connectMenu.addActions(self.getConnectActions()) + return self.connectMenu + ''' + def getViewMenu(self): + if (not hasattr(self, 'viewMenu')) or (self.viewMenu is None): + self.viewMenu = QtGui.QMenu('&View') + else: + self.viewMenu.clear() + self.viewMenu.addActions(self.getViewActions()) + self.docksMenu = self.viewMenu.addMenu('&Dock widgets') + self.docksMenu.addActions(self.getDockWidgetsToggleActions()) + self.subWindowMenu = self.viewMenu.addMenu('&Subwindows') + self.subWindowMenu.addActions(self.getSubWindowActions()) + return self.viewMenu + + + def getEditActions(self): + return None + + def showSetModelRootDialog(self): + root, ok = QtGui.QInputDialog.getText(self, 'Model Root', 'Enter the model root path:', text=moose.element(self.plugin.modelRoot).path) + if not ok: + return + root = str(root) #convert from QString to python str + self.plugin.setModelRoot(root) + for subwin in self.mdiArea.subWindowList(): + if hasattr(subwin.widget(), 'modelRoot'): + subwin.setWindowTitle(root) + + def showSetDataRootDialog(self): + root, ok = QtGui.QInputDialog.getText( + self, 'Data Root', 'Enter the data root path:' + , text=moose.element(self.plugin.dataRoot).path + ) + if not ok: + return + root = str(root) #convert from QString to python str + self.plugin.setDataRoot(root) + for subwin in self.mdiArea.subWindowList(): + if hasattr(subwin.widget(), 'dataRoot'): + subwin.setWindowTitle(root) + return + + def getViewActions(self): + if (not hasattr(self, 'viewActions')) or (self.viewActions is None): + self.editorViewAction = QtGui.QAction('&Editor view', self) + self.editorViewAction.triggered.connect(self.openEditorView) + #self.plotViewAction = QtGui.QAction('&Plot view', self) + #self.plotViewAction.triggered.connect(self.openPlotView) + self.runViewAction = QtGui.QAction('&Run view', self) + self.runViewAction.triggered.connect(self.openRunView) + #self.viewActions = [self.editorViewAction, self.plotViewAction, self.runViewAction] + self.viewActions = [self.editorViewAction, self.runViewAction] + return self.viewActions + + def setTabbedView(self): + self.mdiArea.setViewMode(QtGui.QMdiArea.TabbedView) + + def setSubWindowView(self): + self.mdiArea.setViewMode(QtGui.QMdiArea.SubWindowView) + + def getSubWindowActions(self): + if not hasattr(self, 'subWindowActions') or self.subWindowActions is None: + self.tabbedViewAction = QtGui.QAction('&Tabbed view', self) + self.tabbedViewAction.triggered.connect(self.setTabbedView) + self.subWindowViewAction = QtGui.QAction('&SubWindow view', self) + self.subWindowViewAction.triggered.connect(self.setSubWindowView) + self.tileSubWindowsAction = QtGui.QAction('Ti&le subwindows', self) + self.tileSubWindowsAction.triggered.connect(self.mdiArea.tileSubWindows) + self.cascadeSubWindowsAction = QtGui.QAction('&Cascade subwindows', self) + self.cascadeSubWindowsAction.triggered.connect(self.mdiArea.cascadeSubWindows) + self.subWindowActions = [self.tabbedViewAction, + self.subWindowViewAction, + self.tileSubWindowsAction, + self.cascadeSubWindowsAction] + return self.subWindowActions + + def getDockWidgetsToggleActions(self): + """Get a list of actions for toggling visibility of dock + widgets + + """ + return [widget.toggleViewAction() for widget in self.findChildren(QtGui.QDockWidget)] + + def getHelpActions(self): + if (not hasattr(self, 'helpActions')) or (self.helpActions is None): + self.actionAbout = QtGui.QAction('About MOOSE', self) + self.connect(self.actionAbout, QtCore.SIGNAL('triggered()'), self.showAboutMoose) + self.actionBuiltInDocumentation = QtGui.QAction('Built-in documentation', self) + self.connect(self.actionBuiltInDocumentation, QtCore.SIGNAL('triggered()'), self.showBuiltInDocumentation) + self.actionGuiBug = QtGui.QAction('Report gui bug', self) + self.connect(self.actionGuiBug, QtCore.SIGNAL('triggered()'), self.reportGuiBug) + self.actionCoreBug = QtGui.QAction('Report core bug', self) + self.connect(self.actionCoreBug, QtCore.SIGNAL('triggered()'), self.reportCoreBug) + self.helpActions = [self.actionAbout, self.actionBuiltInDocumentation, self.actionCoreBug,self.actionGuiBug] + return self.helpActions + + + def connectBioModel(self): + connecttoBioModel = BioModelsClientWidget() + if connecttoBioModel.exec_(): + pass + filepath = connecttoBioModel.filePath + if filepath: + head, fileName = os.path.split(filepath) + modelName = os.path.splitext(fileName)[0] + pwe = moose.getCwe() + ret = mload.loadFile(str(filepath), '/model/%s' % (modelName), merge=False) + self.objectEditSlot('/',False) + pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) + try: + pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] + except KeyError: + pluginName = 'default' + self._loadedModels.append([ret['model'].path,pluginName]) + if len(self._loadedModels)>5: + self._loadedModels.pop(0) + + if not moose.exists(ret['model'].path+'/info'): + moose.Annotator(ret['model'].path+'/info') + + modelAnno = moose.Annotator(ret['model'].path+'/info') + if ret['subtype']: + modelAnno.modeltype = ret['subtype'] + else: + modelAnno.modeltype = ret['modeltype'] + modelAnno.dirpath = str(dialog.directory().absolutePath()) + self.loadedModelsAction(ret['model'].path,pluginName) + self.setPlugin(pluginName, ret['model'].path) + + + def showAboutMoose(self): + about = "

MOOSE simulator

" + about += '
MOOSE Website' + about += "

VERSION " + moose.__version__ + "

" + QtGui.QMessageBox.about(self, 'About MOOSE', about ) + + def showDocumentation(self): + QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_DOC_URL)) + + def reportGuiBug(self): + QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_GUI_BUG_URL)) + + def reportCoreBug(self): + QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_CORE_BUG_URL)) + + def showBuiltInDocumentation(self): + self.showDocumentation( ) + + # openEditorView, openPlotView and openRunView are identical + # except the view they ask from the plugin. Consider using a + # mapper. + def openEditorView(self): + """Switch to the editor view of current plugin. If there is + already a subwindow for this, make that the active + one. Otherwise create a new one. + + """ + self.setCurrentView('editor') + + def openPlotView(self): + self.setCurrentView('plot') + + def openRunView(self): + self.setCurrentView('run') + + def resetAndStartSimulation(self): + """TODO this should provide a clean scheduling through all kinds + of simulation or default scheduling should be implemented in MOOSE + itself. We need to define a policy for handling scheduling. It can + be pushed to the plugin-developers who should have knowledge of + the scheduling criteria for their domain.""" + settings = config.MooseSetting() + try: + simdt_kinetics = float(settings[config.KEY_KINETICS_SIMDT]) + except ValueError: + simdt_kinetics = 0.1 + try: + simdt_electrical = float(settings[config.KEY_ELECTRICAL_SIMDT]) + except ValueError: + simdt_electrical = 0.25e-4 + try: + plotdt_kinetics = float(settings[config.KEY_KINETICS_PLOTDT]) + except ValueError: + plotdt_kinetics = 0.1 + try: + plotdt_electrical = float(settings[config.KEY_ELECTRICAL_PLOTDT]) + except ValueError: + plotdt_electrical = 0.25e-3 + try: + simtime = float(settings[config.KEY_SIMTIME]) + except ValueError: + simtime = 1.0 + moose.reinit() + view = self.plugin.getRunView() + moose.start(simtime) + + if view.getCentralWidget().plotAll: + view.getCentralWidget().plotAllData() + self.setCurrentView('run') + + def pauseSimulation(self): + moose.stop() + ''' + def continueSimulation(self): + """TODO implement this somewhere else""" + try: + simtime = float(config.MooseSetting()[config.KEY_SIMTIME]) + except ValueError: + simtime = 1.0 + moose.start(simtime) + ''' + #Harsha: added visible=True so that loadModelDialogSlot and NewModelDialogSlot call this function + # to clear out object path + def objectEditSlot(self, mobj, visible=True): + """Slot for switching the current object in object editor.""" + self.objectEditDockWidget.setObject(mobj) + self.objectEditDockWidget.setVisible(visible) + + def loadedModelsAction(self,modelPath,pluginName): + #Harsha: added under file Menu, Recently Loaded Models + #All the previously loaded chemical models, solver's and table's ticks are made -1 + for model in self._loadedModels: + self.disableModel(model[0]) + + action = QAction(modelPath[1:],self) + action.triggered.connect(lambda : self.setPlugin(pluginName, modelPath)) + compt = moose.wildcardFind(modelPath + '/##[ISA=ChemCompt]') + c = moose.Clock('/clock') + self.simulationdt = c.tickDt[7] + self.plotdt = c.tickDt[8] + if compt: + self.simulationdt = c.tickDt[11] + self.plotdt = c.tickDt[16] + #index = [(ind, self._loadedModels[ind].index(modelPath)) for ind in xrange(len(self.loadedModels)) if item in self._loadedModels[ind]] + # for i,j in enumerate(self._loadedModels): + # if j[0] == modelPath: + # #del(self._loadedModels[i]) + # pass + # break + + self._loadedModels.append([modelPath,pluginName,action,self.simulationdt,self.plotdt]) + if len(self._loadedModels)>5: + self._loadedModels.pop(0) + + def disableModel(self, modelPath): + compt = moose.wildcardFind(modelPath + '/##[ISA=ChemCompt]') + if compt: + if moose.exists(compt[0].path+'/ksolve'): + ksolve = moose.Ksolve( compt[0].path+'/ksolve' ) + ksolve.tick = -1 + if moose.exists(compt[0].path+'/gsolve'): + gsolve = moose.Gsolve( compt[0].path+'/gsolve' ) + gsolve.tick = -1 + if moose.exists(compt[0].path+'/stoich'): + stoich = moose.Stoich( compt[0].path+'/stoich' ) + stoich.tick = -1 + + else : + neurons = moose.wildcardFind(modelPath + "/model/cells/##[ISA=Neuron]") + for neuron in neurons: + solver = moose.element(neuron.path + "/hsolve") + solver.tick = -1 + for table in moose.wildcardFind( modelPath+'/data/graph#/#' ): + table.tick = -1 + + def loadModelDialogSlot(self): + """Start a file dialog to choose a model file. + + Once the dialog succeeds, we should hand-over the duty of + actual model loading to something else. Then refresh the + views. Things to check from the user: + + 1) The file type + + 2) Target element + + 3) Whether we should update the current window or start a new + window. + + 4) Plugin to use for displaying this model (can be automated + by looking into the model file for a regular expression) + + """ + self.popup.close() + activeWindow = None # This to be used later to refresh the current widget with newly loaded model + dialog = LoaderDialog(self, + self.tr('Load model from file')) + + if dialog.exec_(): + valid = False + ret = [] + ret,pluginName = self.checkPlugin(dialog) + if pluginName == 'kkit': + compt = moose.wildcardFind(ret['model'].path+'/##[ISA=ChemCompt]') + if not len(compt): + reply = QtGui.QMessageBox.question(self, "Model is empty","Model has no compartment, atleast one compartment should exist to display the widget\n Do you want another file", + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) + if reply == QtGui.QMessageBox.Yes: + dialog = LoaderDialog(self,self.tr('Load model from file')) + if dialog.exec_(): + ret,pluginName = self.checkPlugin(dialog) + ret,valid = self.dialog_check(ret) + else: + QtGui.QApplication.restoreOverrideCursor() + return + else: + valid = True + if valid == True: + modelAnno = moose.Annotator(ret['model'].path+'/info') + if ret['subtype']: + modelAnno.modeltype = ret['subtype'] + else: + modelAnno.modeltype = ret['modeltype'] + modelAnno.dirpath = str(dialog.directory().absolutePath()) + self.loadedModelsAction(ret['model'].path,pluginName) + self.setPlugin(pluginName, ret['model'].path) + if pluginName == 'kkit': + QtCore.QCoreApplication.sendEvent(self.plugin.getEditorView().getCentralWidget().view, QtGui.QKeyEvent(QtCore.QEvent.KeyPress, Qt.Qt.Key_A, Qt.Qt.NoModifier)) + + def checkPlugin(self,dialog): + fileNames = dialog.selectedFiles() + for fileName in fileNames: + modelName = dialog.getTargetPath() + if '/' in modelName: + raise mexception.ElementNameError('Model name cannot contain `/`') + ret = mload.loadFile(str(fileName),'%s' %(modelName),merge=False) + #ret = mload.loadFile(str(fileName), '/model/%s' % (modelName), merge=False) + #This will clear out object editor's objectpath and make it invisible + self.objectEditSlot('/',False) + #if subtype is None, in case of cspace then pluginLookup = /cspace/None + # which will not call kkit plugin so cleaning to /cspace + pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) + try: + pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] + except KeyError: + pluginName = 'default' + print(('Loaded model', ret['model'].path)) + return ret,pluginName + + def dialog_check(self,ret): + pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) + try: + pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] + except KeyError: + pluginName = 'default' + if pluginName == 'kkit': + compt = moose.wildcardFind(ret['model'].path+'/##[ISA=ChemCompt]') + if not len(compt): + reply = QtGui.QMessageBox.question(self, "Model is empty","Model has no compartment, atleast one compartment should exist to display the widget\n Do you want another file", + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) + if reply == QtGui.QMessageBox.Yes: + dialog = LoaderDialog(self,self.tr('Load model from file')) + if dialog.exec_(): + ret,pluginName = self.checkPlugin(dialog) + else: + QtGui.QApplication.restoreOverrideCursor() + return + else: + return ret,True + def newModelDialogSlot(self): + #Harsha: Create a new dialog widget for model building + self.popup.close() + newModelDialog = DialogWidget() + if newModelDialog.exec_(): + modelPath = str(newModelDialog.modelPathEdit.text()).strip() + if len(modelPath) == 0: + raise mexception.ElementNameError('Model path cannot be empty') + if re.search('[ /]',modelPath) is not None: + raise mexception.ElementNameError('Model path should not containe / or whitespace') + #plugin = str(newModelDialog.submenu.currentText()) + plugin = str(newModelDialog.getcurrentRadioButton()) + #Harsha: All model will be forced to load/build under /model, + #2014 sep 10: All the model will be forced to load/build model under /modelName/model + ''' + modelContainer = moose.Neutral('/model') + modelRoot = moose.Neutral('%s/%s' % (modelContainer.path, modelPath)) + ''' + if moose.exists(modelPath+'/model'): + moose.delete(modelPath) + + modelContainer = moose.Neutral('%s' %(modelPath)) + modelRoot = moose.Neutral('%s/%s' %(modelContainer.path,"model")) + if not moose.exists(modelRoot.path+'/info'): + moose.Annotator(modelRoot.path+'/info') + + modelAnno = moose.element(modelRoot.path+'/info') + modelAnno.modeltype = "new_kkit" + modelAnno.dirpath = " " + self.loadedModelsAction(modelRoot.path,plugin) + self.setPlugin(plugin, modelRoot.path) + #Harsha: This will clear out object editor's objectpath and make it invisible + self.objectEditSlot('/', False) diff --git a/mgui/RunWidget.py b/mgui/RunWidget.py index a0a5b0f..d531688 100644 --- a/mgui/RunWidget.py +++ b/mgui/RunWidget.py @@ -1,9 +1,7 @@ - -# -*- coding: utf-8 -*- - - -"""Sidebar for plugins. The sidebar comprises of actions. +""" +Sidebar for plugins. The sidebar comprises of actions. Currently mode, connect and settings are defined. + """ __author__ = "Aviral Goel" @@ -32,6 +30,7 @@ def __init__(self, modelRoot, *args, **kwargs): layout = QGridLayout() self.setLayout(layout) self.plotWidgetContainer = None + def setChildWidget(self, widget, wrap, row, col, rowspan = 1, colspan = 1): if wrap: scrollArea = QScrollArea() diff --git a/mgui/config.py b/mgui/config.py index 0ff01bd..16be823 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -242,5 +242,20 @@ def init_dirs(): BENCHMARK_LOGGER = logging.getLogger('moose.benchmark') BENCHMARK_LOGGER.setLevel(logging.INFO) +# Logger +import logging +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', + datefmt='%m-%d %H:%M', + filename='moose-gui.log', + filemode='w' + ) +console = logging.StreamHandler() +console.setLevel(logging.INFO) +formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +console.setFormatter(formatter) +_logger = logging.getLogger('') +_logger.addHandler(console) + # # config.py ends here diff --git a/icons/QMdiBackground.png b/mgui/icons/QMdiBackground.png similarity index 100% rename from icons/QMdiBackground.png rename to mgui/icons/QMdiBackground.png diff --git a/icons/add.png b/mgui/icons/add.png similarity index 100% rename from icons/add.png rename to mgui/icons/add.png diff --git a/icons/add_graph.png b/mgui/icons/add_graph.png similarity index 100% rename from icons/add_graph.png rename to mgui/icons/add_graph.png diff --git a/icons/arrow.png b/mgui/icons/arrow.png similarity index 100% rename from icons/arrow.png rename to mgui/icons/arrow.png diff --git a/icons/arrow_undo.png b/mgui/icons/arrow_undo.png similarity index 100% rename from icons/arrow_undo.png rename to mgui/icons/arrow_undo.png diff --git a/icons/classIcon/BufPool.png b/mgui/icons/classIcon/BufPool.png similarity index 100% rename from icons/classIcon/BufPool.png rename to mgui/icons/classIcon/BufPool.png diff --git a/icons/classIcon/CubeMesh.png b/mgui/icons/classIcon/CubeMesh.png similarity index 100% rename from icons/classIcon/CubeMesh.png rename to mgui/icons/classIcon/CubeMesh.png diff --git a/icons/classIcon/CylMesh.png b/mgui/icons/classIcon/CylMesh.png similarity index 100% rename from icons/classIcon/CylMesh.png rename to mgui/icons/classIcon/CylMesh.png diff --git a/icons/classIcon/Enz.png b/mgui/icons/classIcon/Enz.png similarity index 100% rename from icons/classIcon/Enz.png rename to mgui/icons/classIcon/Enz.png diff --git a/icons/classIcon/FuncPool.png b/mgui/icons/classIcon/FuncPool.png similarity index 100% rename from icons/classIcon/FuncPool.png rename to mgui/icons/classIcon/FuncPool.png diff --git a/icons/classIcon/Function.png b/mgui/icons/classIcon/Function.png similarity index 100% rename from icons/classIcon/Function.png rename to mgui/icons/classIcon/Function.png diff --git a/icons/classIcon/MMenz.png b/mgui/icons/classIcon/MMenz.png similarity index 100% rename from icons/classIcon/MMenz.png rename to mgui/icons/classIcon/MMenz.png diff --git a/icons/classIcon/Pool.png b/mgui/icons/classIcon/Pool.png similarity index 100% rename from icons/classIcon/Pool.png rename to mgui/icons/classIcon/Pool.png diff --git a/icons/classIcon/Reac.png b/mgui/icons/classIcon/Reac.png similarity index 100% rename from icons/classIcon/Reac.png rename to mgui/icons/classIcon/Reac.png diff --git a/icons/classIcon/StimulusTable.png b/mgui/icons/classIcon/StimulusTable.png similarity index 100% rename from icons/classIcon/StimulusTable.png rename to mgui/icons/classIcon/StimulusTable.png diff --git a/icons/classIcon/SumFunc.png b/mgui/icons/classIcon/SumFunc.png similarity index 100% rename from icons/classIcon/SumFunc.png rename to mgui/icons/classIcon/SumFunc.png diff --git a/icons/clone.svg b/mgui/icons/clone.svg similarity index 98% rename from icons/clone.svg rename to mgui/icons/clone.svg index bb18fd9..7d7e374 100644 --- a/icons/clone.svg +++ b/mgui/icons/clone.svg @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/icons/connection.png b/mgui/icons/connection.png similarity index 100% rename from icons/connection.png rename to mgui/icons/connection.png diff --git a/icons/continue.png b/mgui/icons/continue.png similarity index 100% rename from icons/continue.png rename to mgui/icons/continue.png diff --git a/icons/delete.svg b/mgui/icons/delete.svg similarity index 100% rename from icons/delete.svg rename to mgui/icons/delete.svg diff --git a/icons/delete_graph.png b/mgui/icons/delete_graph.png similarity index 100% rename from icons/delete_graph.png rename to mgui/icons/delete_graph.png diff --git a/icons/grid.png b/mgui/icons/grid.png similarity index 100% rename from icons/grid.png rename to mgui/icons/grid.png diff --git a/icons/hand.png b/mgui/icons/hand.png similarity index 100% rename from icons/hand.png rename to mgui/icons/hand.png diff --git a/icons/help.png b/mgui/icons/help.png similarity index 100% rename from icons/help.png rename to mgui/icons/help.png diff --git a/icons/hopfield.png b/mgui/icons/hopfield.png similarity index 100% rename from icons/hopfield.png rename to mgui/icons/hopfield.png diff --git a/icons/list.png b/mgui/icons/list.png similarity index 100% rename from icons/list.png rename to mgui/icons/list.png diff --git a/icons/moose_icon.png b/mgui/icons/moose_icon.png similarity index 100% rename from icons/moose_icon.png rename to mgui/icons/moose_icon.png diff --git a/icons/moose_icon_64x64.png b/mgui/icons/moose_icon_64x64.png similarity index 100% rename from icons/moose_icon_64x64.png rename to mgui/icons/moose_icon_64x64.png diff --git a/icons/moose_icon_large.png b/mgui/icons/moose_icon_large.png similarity index 100% rename from icons/moose_icon_large.png rename to mgui/icons/moose_icon_large.png diff --git a/icons/move.svg b/mgui/icons/move.svg similarity index 96% rename from icons/move.svg rename to mgui/icons/move.svg index 5dd4d9a..25d2706 100644 --- a/icons/move.svg +++ b/mgui/icons/move.svg @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/plot.svg b/mgui/icons/plot.svg similarity index 100% rename from icons/plot.svg rename to mgui/icons/plot.svg diff --git a/icons/reset.png b/mgui/icons/reset.png similarity index 100% rename from icons/reset.png rename to mgui/icons/reset.png diff --git a/icons/run.png b/mgui/icons/run.png similarity index 100% rename from icons/run.png rename to mgui/icons/run.png diff --git a/icons/runtime.png b/mgui/icons/runtime.png similarity index 100% rename from icons/runtime.png rename to mgui/icons/runtime.png diff --git a/icons/squid.png b/mgui/icons/squid.png similarity index 100% rename from icons/squid.png rename to mgui/icons/squid.png diff --git a/icons/stop.png b/mgui/icons/stop.png similarity index 100% rename from icons/stop.png rename to mgui/icons/stop.png diff --git a/icons/straight_connector_with_filled_circles.png b/mgui/icons/straight_connector_with_filled_circles.png similarity index 100% rename from icons/straight_connector_with_filled_circles.png rename to mgui/icons/straight_connector_with_filled_circles.png diff --git a/icons/wrench.png b/mgui/icons/wrench.png similarity index 100% rename from icons/wrench.png rename to mgui/icons/wrench.png diff --git a/mgui/mgui.py b/mgui/mgui.py index aeac47a..0a881a6 100644 --- a/mgui/mgui.py +++ b/mgui/mgui.py @@ -1,1233 +1,31 @@ -# mgui.py --- -# # Filename: mgui.py -# Description: -# Author: +# Description: Graphical user interface of MOOSE simulator. +# Author: Subhasis Ray, Harsha Rani, Dilawar Singh # Maintainer: # Created: Mon Nov 12 09:38:09 2012 (+0530) -# Version: -# Last-Updated: Fri Oct 30 11:54:33 2015 (+0530) -# By: Harsha -# Update #: 1338 -# URL: -# Keywords: -# Compatibility: -# -# -# Commentary: -# -# The gui driver -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# +__author__ = 'Subhasis Ray , HarshaRani, Aviral Goel, NCBS Bangalore' -# Code: -import imp -import inspect -import code -import traceback import sys -import os -import re -import posixpath # We use this to create MOOSE paths -from collections import defaultdict, OrderedDict from PyQt4 import QtGui, QtCore, Qt from PyQt4 import Qt, QtCore, QtGui -from PyQt4.QtGui import * - -import moose -from moose import utils - -from . import config - -from . import mplugin -from . import mexception -from . import mload -from .loaderdialog import LoaderDialog -from .shell import get_shell_class -from .objectedit import ObjectEditDockWidget -from .newmodeldialog import DialogWidget -from .biomodelsclient import BioModelsClientWidget -from .MdiArea import MdiArea -from .plugins.setsolver import * -from .plugins.defines import * - -__author__ = 'Subhasis Ray , HarshaRani, Aviral Goel, NCBS' - -# This maps model subtypes to corresponding plugin names. Should be -# moved to a separate property file perhaps -subtype_plugin_map = { 'genesis/kkit': 'kkit' - , 'cspace/': 'kkit' - , 'xml/sbml': 'kkit' - , 'xml/neuroml': 'NeuroKit' - } - -#APPLICATION_ICON_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)) -# , "icons/moose_icon.png" -# ) - - -def busyCursor(): - app = QtGui.qApp - app.setOverrideCursor(QtGui.QCursor(Qt.Qt.BusyCursor)) #shows a hourglass - or a busy/working arrow - -def freeCursor(): - app = QtGui.qApp - app.restoreOverrideCursor() - - - -class MWindow(QtGui.QMainWindow): - """The main window for MOOSE GUI. - - This is the driver class that uses the mplugin API. mplugin based - classes will provide the toolbar, plugin specific menu items and a - set of panes to be displayed on the docks. - - 1. Setting a plugin - - When a plugin is set as the current plugin, the view and the - menus are updated. - - 1.a) Updating menus: - - the plugin can provide its own list of menus by implementing the - function getMenus(). - - the view of the plugin can also provide its own list of - menus by implementing the function getMenus(). - - the currentView provides a set of toolbars that are added to the - main window. - - 1.b) Updating views - - central widget is set to the currentView (a ViewBase instance) of - the plugin. - - the currentView provides a set of panes that are inserted in the - right dock area one by one. - - """ - def __init__(self, *args): - QtGui.QMainWindow.__init__(self, *args) - self.setWindowTitle('MOOSE') - self.pluginNames = None - self.plugin = None - self.fileMenu = None - self.editMenu = None - self.helpMenu = None - self.helpActions = None - self.viewActions = None - self.editActions = None - self.connectMenu = None - - self.toolBars = [] - self._loadedPlugins = {} - self._plugins = {} - self._loadedModels = [] - self.setUnifiedTitleAndToolBarOnMac(True) - self.setDockOptions(self.AnimatedDocks and self.AllowNestedDocks and self.AllowTabbedDocks) - self.mdiArea = MdiArea() - - self.quitAction = QtGui.QAction('&Quit', self) - self.connect(self.quitAction, QtCore.SIGNAL('triggered()'), self.quit) - self.quitAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8)) - self.getMyDockWidgets() - self.setCentralWidget(self.mdiArea) - #self.setWindowIcon(QIcon(APPLICATION_ICON_PATH)) - - # pixmap = QPixmap("icons/moose_icon.png") - - # pixmap = pixmap.scaled(self.mdiArea.size()) - # self.mdiArea.setStyleSheet("QMdiArea { background-image: url(icons/moose_icon_large.png); }") - # palette = QPalette() - # palette.setBrush(QPalette.Background, QBrush(pixmap)) - # self.setPalette(palette) - - - # self.mdiArea.setStyleSheet("border-image: url(icons/moose_icon_large.png)") - # self.mdiArea.setBackground(QBrush(pixmap)) - - self.mdiArea.setViewMode(QtGui.QMdiArea.TabbedView) - self.mdiArea.subWindowActivated.connect(self.switchSubwindowSlot) - self.setPlugin('default', '/') - self.plugin.getEditorView().getCentralWidget().parent().close() - self.popup = None - self.createPopup() - - def createPopup(self): - self.popup = dialog = QDialog(self) - #dialog.setWindowFlags(Qt.Qt.Dialog | Qt.Qt.FramelessWindowHint) - dialog.setWindowFlags(Qt.Qt.Dialog | Qt.Qt.CustomizeWindowHint) - #dialog.setStyleSheet("border:1px solid rgb(0, 0, 0); ") - qapp = QApplication.desktop().screenGeometry(); - dialog.setGeometry((qapp.bottomLeft().x()+100),(qapp.bottomLeft().y()-250),100,100) - #dialog.move(qapp.bottomLeft().x()+10,qapp.bottomLeft().y()-10) - layout = QGridLayout() - self.setStyleSheet("QPushButton{border-radius: 5px; border-color: rgb(0,0,0); border-width: 2px; border-style: outset; padding-top: 2px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px}") - #self.setStyleSheet("QToolTip{border-radius: 5px; border-width: 2px; border-style: outset; padding-top: 2px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: black}") - createKineticModelButton = QPushButton("Create Kinetic Model") - loadKineticModelButton = QPushButton("Load Model") - loadNeuronalModelButton = QPushButton("Load Neuronal Model") - layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) - - self.menuitems = OrderedDict([("Fig2C" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "../moose-examples/squid/squid_demo.py") - ]) - layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) - layout1 = QHBoxLayout() - layout1.addWidget(createKineticModelButton) - layout1.addWidget(loadKineticModelButton) - layout2 = QHBoxLayout() - layout3 = QHBoxLayout() - layout4 = QHBoxLayout() - layout5 = QHBoxLayout() - layout6 = QHBoxLayout() - layout7 = QHBoxLayout() - listofButtons = {} - for i in range(0,len(self.menuitems)): - k = self.menuitems.popitem(0) - t = k[0] - button = QPushButton(k[0]) - if k[0] == "Fig2E": - button.setToolTip("Illustrates loading a model from an SWC file, inserting channels, and running it") - elif k[0] == "Fig2D (35s)": - button.setToolTip("Illustrates loading a model from an SWC file, inserting spines, and running it") - elif k[0] == "Fig2C": - button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") - elif k[0] == "Fig3B_Gssa": - button.setToolTip("Loades Repressilator model into Gui with Gssa solver and runs the model") - elif k[0] == "Fig3C_Gsl": - button.setToolTip("Loades Repressilator model into Gui with Gsl solver and runs the model") - elif k[0] == "Fig3D": - button.setToolTip("This example implements a reaction-diffusion like system which is bistable and propagates losslessly") - elif k[0] == "Fig4B": - button.setToolTip("This program builds a multiscale model with a few spines inserted into a simplified cellular morphology. Each spine has a signaling model in it too. The program doesn't run the model, it just displays it in 3D") - elif k[0] == "Fig4K": - button.setToolTip("Builds a cell with spines and a propagating reaction wave") - elif k[0] == "Fig5A (20s)": - button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") - elif k[0] == "Fig5BCD (240s)": - button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") - elif k[0] == "Fig6A (60s)": - button.setToolTip("This LIF network with Ca plasticity is based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") - elif k[0] == "Reduced6 (200s)": - button.setToolTip("This is the Reduced version of LIF network with Ca plasticity model based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") - elif k[0] == "Squid": - button.setToolTip("squid Demo") - if k[0] in ["Fig2E","Fig2D (35s)","Fig2C"]: - layout2.addWidget(button) - elif k[0] in ["Fig3B_Gssa","Fig3C_Gsl","Fig3D"]: - layout3.addWidget(button) - elif k[0] in ["Fig4B","Fig4K"]: - layout4.addWidget(button) - elif k[0] in ["Fig5A (20s)","Fig5BCD (240s)"]: - layout5.addWidget(button) - elif k[0] in ["Fig6A (60s)","Reduced6 (200s)"]: - layout6.addWidget(button) - elif k[0] in ["Squid"]: - layout7.addWidget(button) - - if k[0] == "Fig3C_Gsl": - button.clicked.connect(lambda x, script = k[1]: self.run_genesis_script(script,"gsl")) - elif k[0] == "Fig3B_Gssa": - button.clicked.connect(lambda x, script = k[1]: self.run_genesis_script(script,"gssa")) - else: - button.clicked.connect(lambda x, script = k[1]: self.run_python_script(script)) - - layout.addLayout(layout1,0,0) - layout.addLayout(layout2,1,0) - layout.addLayout(layout3,2,0) - layout.addLayout(layout4,3,0) - layout.addLayout(layout5,4,0) - layout.addLayout(layout6,5,0) - layout.addLayout(layout7,6,0) - dialog.setStyleSheet("border:1px solid rgb(0, 0, 0); ") - dialog.setLayout(layout) - - createKineticModelButton.clicked.connect(self.newModelDialogSlot) - loadKineticModelButton.clicked.connect(self.loadModelDialogSlot) - loadNeuronalModelButton.clicked.connect(self.loadModelDialogSlot) - - dialog.show() - freeCursor() - return dialog - - def run_genesis_script(self,filepath,solver): - self.popup.hide() - abspath = os.path.abspath(filepath) - directory, modulename = os.path.split(abspath) - modelName = os.path.splitext(modulename)[0] - ret = mload.loadFile(str(abspath),'%s' %(modelName),solver,merge=False) - self.setPlugin("kkit", ret["model"].path) - self.setCurrentView("run") - widget = self.plugin.view.getSchedulingDockWidget().widget() - widget.runSimulation() - - def run_python_script(self, filepath): - busyCursor() - import subprocess, shlex - t = os.path.abspath(filepath) - directory, filename = os.path.split(t) - p = subprocess.Popen(["python", filename], cwd=directory) - p.wait() - freeCursor() - - def quit(self): - QtGui.qApp.closeAllWindows() - - def handleException(self, t, v, s): - """This handler will show warning messages for error exceptions. Show - info at status bar for non-error exceptions. It will replace - sys.excepthook and has the same signature (except being bound - to this object). - - t : exception type - - v : exception value - - s: traceback object. - - """ - traceback.print_exception(t, v, s) - title = ''.join(traceback.format_exception_only(t, v)) - trace = ''.join(traceback.format_exception(t, v, s)) - if isinstance(v, mexception.MooseInfo): - self.statusBar().showMessage(title, 5000) - elif isinstance(v, mexception.MooseWarning): - QtGui.QMessageBox.warning(self, title, '\n'.join((title, trace))) - else: - QtGui.QMessageBox.critical(self, title, '\n'.join((title, trace))) - - def getPluginNames(self): - """Return pluginNames attribute or create it by retrieving - available plugin names from plugin/list.txt file. - - """ - if self.pluginNames is None: - with open(os.path.join(config.MOOSE_GUI_DIR, - 'plugins', - 'list.txt')) as lfile: - self.pluginNames = [line.strip() for line in lfile] - self.pluginNames = [name for name in self.pluginNames if name] - - return self.pluginNames - - def loadPluginModule(self, name, re=False): - """Load a plugin module by name. - - First check if the plugin is already loaded. If so return the - existing one. Otherwise, search load the plugin as a python - module from {MOOSE_GUI_DIRECTORY}/plugins directory. - - If re is True, the plugin is reloaded. - """ - if (not re) and name in sys.modules: - return sys.modules[name] - fp, pathname, description = imp.find_module(name, [config.MOOSE_PLUGIN_DIR]) - try: - module = imp.load_module(name, fp, pathname, description) - finally: - if fp: - fp.close() - return module - - def getMyDockWidgets(self): - """Return a list of dockwidgets that belong to the top - level. This is needed to keep them separate from those - provided by the plugins. - - Currently we only have shell for this.""" - if not hasattr(self, 'dockWidgets') or self.dockWidgets is None: - self.dockWidgets = {} - dockWidget = QtGui.QDockWidget('Python') - dockWidget.setWidget(self.getShellWidget()) - self.dockWidgets[dockWidget] = True - self.addDockWidget(Qt.Qt.BottomDockWidgetArea, dockWidget) - dockWidget.setVisible(False) - dockWidget = ObjectEditDockWidget('/') - self.dockWidgets[dockWidget] = True - self.objectEditDockWidget = dockWidget - self.addDockWidget(Qt.Qt.RightDockWidgetArea, dockWidget) - dockWidget.setVisible(False) - return list(self.dockWidgets.keys()) - - def getShellWidget(self): - """Create an instance of shell widget. This can be either a - QSciQScintialla widget or a PyCute widget (extends QTextArea) - if the first is not available""" - if not hasattr(self, 'shellWidget') or self.shellWidget is None: - self.shellWidget = get_shell_class()( code.InteractiveInterpreter() - , message='MOOSE version %s' % (moose._moose.__version__) - ) - self.shellWidget.interpreter.runsource('from moose import *') - self.shellWidget.setVisible(False) - return self.shellWidget - - def loadPluginClass(self, name, re=False): - """Load the plugin class from a plugin module. - - A plugin module should have only one subclass of - MoosePluginBase. Otherwise the first such class found will be - loaded. - """ - try: - return self._loadedPlugins[name] - except KeyError: - pluginModule = self.loadPluginModule(name, re=re) - for classname, classobj in inspect.getmembers(pluginModule, inspect.isclass): - if issubclass(classobj, mplugin.MoosePluginBase): - self._loadedPlugins[name] = classobj - # classobj.getEditorView().getCentralWidget().editObject.connect(self.objectEditSlot) - return self._loadedPlugins[name] - raise Exception('No plugin with name: %s' % (name)) - - def setPlugin(self, name, root='/'): - """Set the current plugin to use. +import posixpath - This - - - 1. sets the `plugin` attribute. - - 2. updates menus by clearing and reinstating menus including - anything provided by the plugin. - - 3. sets the current view to the plugins editor view. - - """ - busyCursor() - for model in self._loadedModels: - if model[0] != root: - self.disableModel(model[0]) - for i in range(0, len(self._loadedModels)): - if self._loadedModels[i][0]== root: - c = moose.Clock('/clock') - compts = moose.wildcardFind(root+'/##[ISA=ChemCompt]') - for simdt in CHEMICAL_SIMULATION_DT_CLOCKS: - c.tickDt[simdt] = self._loadedModels[i][3] - for plotdt in CHEMICAL_PLOT_UPDATE_INTERVAL_CLOCKS: - c.tickDt[plotdt] = self._loadedModels[i][4] - - if compts: - #setCompartmentSolver(self._loadedModels[i][0],"gsl") - addSolver(self._loadedModels[i][0],"gsl") - else: - c.tickDt[7] = self._loadedModels[i][3] - c.tickDt[8] = self._loadedModels[i][4] - neurons = moose.wildcardFind(root + "/model/cells/##[ISA=Neuron]") - for neuron in neurons: - solver = moose.element(neuron.path + "/hsolve") - solver.tick = 7 - for x in moose.wildcardFind( root+'/data/graph#/#' ): - x.tick = 8 - break - - self.plugin = self.loadPluginClass(str(name))(str(root), self) - moose.reinit() - - self.updateMenus() - for action in self.pluginsMenu.actions(): - if str(action.text()) == str(name): - action.setChecked(True) - elif action.isChecked(): - action.setChecked(False) - for subwin in self.mdiArea.subWindowList(): - subwin.close() - - if name != "default" : - self.setCurrentView('editor') - self.setCurrentView('run') - - if name == 'kkit': - self.objectEditDockWidget.objectNameChanged.connect(self.plugin.getEditorView().getCentralWidget().updateItemSlot) - self.objectEditDockWidget.colorChanged.connect(self.plugin.getEditorView().getCentralWidget().updateColorSlot) - - self.setCurrentView('editor') - freeCursor() - return self.plugin - - def updateExistingMenu(self, menu): - """Check if a menu with same title - already exists. If so, update the same and return - True. Otherwise return False. - """ - if not isinstance(menu, QtGui.QMenu): - return False - for action in self.menuBar().actions(): - if menu.title() == action.text(): - # if not action.menu().isEmpty(): - # action.menu().addSeparator() - action.menu().addActions(menu.actions()) - return True - return False - - def updateMenus(self): - """Clear the menubar and reinstate the basic menus. Go - through the menus provided by current plugin and add those to - menubar. - - If a menu provided by a plugin has same name as one of the - core menus, the menu items provided by the plugin are appended - to the existing menu after a separator. - - """ - self.menuBar().clear() - self.getPluginsMenu() - menus = [self.getFileMenu(), - self.getEditMenu(), - self.getViewMenu(), - #self.getRunMenu(), - #self.getConnectMenu(), - self.getHelpMenu()] - for menu in menus: - self.menuBar().addMenu(menu) - - for menu in self.plugin.getMenus(): - if not self.updateExistingMenu(menu): - if not self.menuBar().isEmpty(): - action.menu().addSeparator() - self.menuBar().addMenu(menu) - menus[0].addSeparator() - menus[0].addAction(self.quitAction) - - def updateToolbars(self): - for toolbar in self.toolBars: - self.removeToolBar(toolbar) - self.toolBars = [] - self.toolBars.extend(self.getMyToolBars()) - self.toolBars.extend(self.plugin.getToolBars()) - self.toolBars.extend(self.plugin.getCurrentView().getToolBars()) - if len(self.toolBars): - for toolbar in self.toolBars: - self.addToolBar(toolbar) - toolbar.setVisible(True) - - def switchSubwindowSlot(self, window): - """Change view based on what subwindow `window` is activated.""" - if not window: - return - view = str(window.windowTitle()).partition(':')[0] - self.setCurrentView(view) - - def setCurrentView(self, view): - """Set current view to a particular one: options are 'editor', - 'plot', 'run'. A plugin can provide more views if necessary. - """ - self.plugin.setCurrentView(view) - if view =='run': - #Harsha: This will clear out object editor's objectpath and make it invisible - self.objectEditSlot('/',False) - - targetView = None - newSubWindow = True - widget = self.plugin.getCurrentView().getCentralWidget() - current = self.mdiArea.activeSubWindow() - subwin = None - for subwin in self.mdiArea.subWindowList(): - if subwin.widget() == widget: - newSubWindow = False - break - if newSubWindow: - subwin = self.mdiArea.addSubWindow(widget) - title = widget.modelRoot+'/model' - #subwin.setWindowTitle('%s: %s' % (view, widget.modelRoot)) - subwin.setWindowTitle('%s: %s' % (view, title)) - subwin.setSizePolicy(QtGui.QSizePolicy.Minimum | - QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Minimum | - QtGui.QSizePolicy.Expanding) - subwin.resize(600, 400) - # Make dockwidgets from other views invisible and make those - # from current view visible or add them if not already part of - # main window. - dockWidgets = set([dockWidget for dockWidget in self.findChildren(QtGui.QDockWidget)]) - for dockWidget in dockWidgets: - if dockWidget not in self.dockWidgets: - dockWidget.setVisible(False) - for dockWidget in self.plugin.getCurrentView().getToolPanes(): - if dockWidget not in dockWidgets: - if view == "run": - if dockWidget.windowTitle() == "Scheduling": - self.addDockWidget(Qt.Qt.TopDockWidgetArea, dockWidget) - else: - self.addDockWidget(Qt.Qt.RightDockWidgetArea, dockWidget) - dockWidget.setVisible(True) - subwin.setVisible(True) - self.mdiArea.setActiveSubWindow(subwin) - self.updateMenus() - for menu in self.plugin.getCurrentView().getMenus(): - if not self.updateExistingMenu(menu): - self.menuBar().addMenu(menu) - self.updateToolbars() - return subwin - - def getMyToolBars(self): - self._toolBars = [] - ''' - #Harsha: removing the toolbars (plot,run,edit) from the Gui - if not hasattr(self, 'viewToolBar'): - self.viewToolBar = QtGui.QToolBar('View') - #Harsha:removing plotView from the ToolBar - for t in self.getViewActions(): - if t.text() != "&Plot view": - self.viewToolBar.addAction(t) - #self.viewToolBar.addActions(self.getViewActions()) - #return [self.viewToolBar] - ''' - return self._toolBars - - def getFileMenu(self): - if self.fileMenu is None: - self.fileMenu = QtGui.QMenu('&File') - else: - self.fileMenu.clear() - - if not hasattr(self, 'newModelAction'): - self.newModelAction = QtGui.QAction('New', self) - self.newModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+N", None, QtGui.QApplication.UnicodeUTF8)) - self.connect(self.newModelAction, QtCore.SIGNAL('triggered()'), self.newModelDialogSlot) - self.fileMenu.addAction(self.newModelAction) - if not hasattr(self, 'loadModelAction'): - self.loadModelAction = QtGui.QAction('L&oad model', self) - self.loadModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) - self.connect(self.loadModelAction, QtCore.SIGNAL('triggered()'), self.loadModelDialogSlot) - self.fileMenu.addAction(self.loadModelAction) - - if not hasattr(self, 'Paper_2015'): - self.menuitems = OrderedDict([ - ("Fig2C (6s)" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E (5s)" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa (2s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl (2s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D (1s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B (10s)", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "../moose-examples/squid/squid_demo.py") - ]) - self.subMenu = QtGui.QMenu('Paper_2015_Demos') - for i in range(0,len(self.menuitems)): - k = self.menuitems.popitem(0) - t = "self."+k[0]+"Action" - t = QtGui.QAction(k[0],self) - self.subMenu.addAction(t) - if k[0] == "Fig3C_Gsl (2s)": - t.connect(t,QtCore.SIGNAL('triggered()'),lambda script = k[1]: self.run_genesis_script(script,"gsl")) - elif k[0] == "Fig3B_Gssa (2s)": - t.connect(t,QtCore.SIGNAL('triggered()'),lambda script = k[1]: self.run_genesis_script(script,"gssa")) - else: - t.connect(t,QtCore.SIGNAL('triggered()'),lambda : self.run_python_script(k[1])) - self.subMenu.addAction(t) - self.fileMenu.addMenu(self.subMenu) - - if not hasattr(self,'loadedModels'): - self.loadedModelAction = QtGui.QAction('Recently Loaded Models',self) - self.loadedModelAction.setCheckable(False) - #self.fileMenu.addAction(QtGui.QAction(self.loadedModelAction,checkable=True)) - if bool(self._loadedModels): - self.fileMenu.addSeparator() - self.fileMenu.addAction(self.loadedModelAction) - self.loadedModelAction.setEnabled(False) - for (model, modeltype, action,simdt,plotdt) in reversed(self._loadedModels): - self.fileMenu.addAction(action) - self.fileMenu.addSeparator() - - if not hasattr(self,'connectBioModelAction'): - self.connectBioModelAction = QtGui.QAction('&Connect BioModels', self) - self.connectBioModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+B", None, QtGui.QApplication.UnicodeUTF8)) - self.connect(self.connectBioModelAction, QtCore.SIGNAL('triggered()'), self.connectBioModel) - self.fileMenu.addAction(self.connectBioModelAction) - return self.fileMenu - - def getEditMenu(self): - if self.editMenu is None: - self.editMenu = QtGui.QMenu('&Edit') - else: - self.editMenu.clear() - #self.editMenu.addActions(self.getEditActions()) - return self.editMenu - - def getPluginsMenu(self): - """Populate plugins menu if it does not exist already.""" - if (not hasattr(self, 'pluginsMenu')) or (self.pluginsMenu is None): - self.pluginsMenu = QtGui.QMenu('&Plugins') - mapper = QtCore.QSignalMapper(self) - pluginsGroup = QtGui.QActionGroup(self) - pluginsGroup.setExclusive(True) - for pluginName in self.getPluginNames(): - action = QtGui.QAction(pluginName, self) - action.setObjectName(pluginName) - action.setCheckable(True) - mapper.setMapping(action, QtCore.QString(pluginName)) - self.connect(action, QtCore.SIGNAL('triggered()'), mapper, QtCore.SLOT('map()')) - self.pluginsMenu.addAction(action) - pluginsGroup.addAction(action) - self.connect(mapper, QtCore.SIGNAL('mapped(const QString &)'), self.setPlugin) - #self.pluginsMenu.addMenu(self.defaultPluginMenu) - #self.pluginsMenu.addMenu(self.kkitPluginMenu) - #self.pluginsMenu.addMenu(self.neurokitPluginMenu) - #openRootAction = self.defaultPluginMenu.addAction("/") - #openRootAction.triggered.connect(lambda : self.setPlugin("default", "/") ) - # if (not hasattr(self, 'loadedModelAction')) or (self.loadedModelAction is None) : - # self.loadedModelAction = QtGui.QAction("kkit",self) - # self.loadedModelAction.addMenu('test') - # self.pluginsMenu.addAction(self.loadedModelAction) - # self.pluginsMenu.addMenu(self.insertkkitMenu) - # self.insertMapperkkit = QtCore.QSignalMapper(self) - #insertMapperkkit,actions = self.getInsertkkitActions(self.loadedModels) - # ignored_bases = ['ZPool', 'Msg', 'Panel', 'SolverBase', 'none'] - # ignored_classes = ['ZPool','ZReac','ZMMenz','ZEnz','CplxEnzBase'] - # classlist = [ch[0].name for ch in moose.element('/classes').children - # if (ch[0].baseClass not in ignored_bases) - # and (ch[0].name not in (ignored_bases + ignored_classes)) - # and not ch[0].name.startswith('Zombie') - # and not ch[0].name.endswith('Base') - # ] - # insertMapper, actions = self.getInsertActions(classlist) - # for action in actions: - # self.insertMenu.addAction(action) - # self.connect(insertMapper, QtCore.SIGNAL('mapped(const QString&)'), self.tree.insertElementSlot) - # self.editAction = QtGui.QAction('Edit', self.treeMenu) - # self.editAction.triggered.connect(self.editCurrentObjectSlot) - # self.tree.elementInserted.connect(self.elementInsertedSlot) - # self.treeMenu.addAction(self.editAction) - return self.pluginsMenu - - def getHelpMenu(self): - if self.helpMenu is None: - self.helpMenu = QtGui.QMenu('&Help') - else: - self.helpMenu.clear() - self.helpMenu.addActions(self.getHelpActions()) - return self.helpMenu - ''' - def getConnectMenu(self): - if self.connectMenu is None: - self.connectMenu = QtGui.QMenu('&Connect') - else: - self.connectMenu.clear() - self.connectMenu.addActions(self.getConnectActions()) - return self.connectMenu - ''' - def getViewMenu(self): - if (not hasattr(self, 'viewMenu')) or (self.viewMenu is None): - self.viewMenu = QtGui.QMenu('&View') - else: - self.viewMenu.clear() - self.viewMenu.addActions(self.getViewActions()) - self.docksMenu = self.viewMenu.addMenu('&Dock widgets') - self.docksMenu.addActions(self.getDockWidgetsToggleActions()) - self.subWindowMenu = self.viewMenu.addMenu('&Subwindows') - self.subWindowMenu.addActions(self.getSubWindowActions()) - return self.viewMenu - - # def getSubWindowVisibilityActions(self): - # if not hasattr(self, 'subwindowToToggles'): - # self.subWindowToToggle = QtGui.QSignalMapper() - # self.toggleToSubWindow = QtGui.QSignalMapper() - # for subwindow in self.mdiArea.subWindowList(): - # if self.subWindowToToggle.mapping(subwindow) is None: - # action = QtGui.QAction('Show: %s' % (subwindow.windowTitle), self) - # self.toggleToSubWindow.setMapping(action, subwindow) - # self.connect(action, QtCore.SIGNAL('triggered()'), - # self.toggleToSubWindow, - # QtCore.SLOT('mapped(QWidget*)')) - # self.subWindowToToggle.setMapping(subwindow, action) - # self.connect(subwindow, QtCore.SIGNAL('closed()') - - # self.subWindowVisibilityMenu = QtGui.Q - # for subwin in self.mdiArea.subWindowList(): - - # Removed from the menu - # def getRunMenu(self): - # if (not hasattr(self, 'runMenu')) or (self.runMenu is None): - # self.runMenu = QtGui.QMenu('&Run') - # else: - # self.runMenu.clear() - # self.runMenu.addActions(self.getRunActions()) - # return self.runMenu - - def getEditActions(self): - - # self.editActions = [] - # if (not hasattr(self, 'editActions')) or (self.editActions is None): - # self.setModelRootAction = QtGui.QAction('&Set model root', self) - # self.setModelRootAction.triggered.connect(self.showSetModelRootDialog) - # self.setDataRootAction = QtGui.QAction('Set &data root', self) - # self.setDataRootAction.triggered.connect(self.showSetDataRootDialog) - # self.editActions = [self.setModelRootAction, self.setDataRootAction] - # return self.editActions - return None - - def showSetModelRootDialog(self): - root, ok = QtGui.QInputDialog.getText(self, 'Model Root', 'Enter the model root path:', text=moose.element(self.plugin.modelRoot).path) - if not ok: - return - root = str(root) #convert from QString to python str - self.plugin.setModelRoot(root) - for subwin in self.mdiArea.subWindowList(): - if hasattr(subwin.widget(), 'modelRoot'): - subwin.setWindowTitle(root) - - def showSetDataRootDialog(self): - root, ok = QtGui.QInputDialog.getText(self, 'Data Root', 'Enter the data root path:', text=moose.element(self.plugin.dataRoot).path) - if not ok: - return - root = str(root) #convert from QString to python str - self.plugin.setDataRoot(root) - for subwin in self.mdiArea.subWindowList(): - if hasattr(subwin.widget(), 'dataRoot'): - subwin.setWindowTitle(root) - - def getViewActions(self): - if (not hasattr(self, 'viewActions')) or (self.viewActions is None): - self.editorViewAction = QtGui.QAction('&Editor view', self) - self.editorViewAction.triggered.connect(self.openEditorView) - #self.plotViewAction = QtGui.QAction('&Plot view', self) - #self.plotViewAction.triggered.connect(self.openPlotView) - self.runViewAction = QtGui.QAction('&Run view', self) - self.runViewAction.triggered.connect(self.openRunView) - #self.viewActions = [self.editorViewAction, self.plotViewAction, self.runViewAction] - self.viewActions = [self.editorViewAction, self.runViewAction] - return self.viewActions - - def setTabbedView(self): - self.mdiArea.setViewMode(QtGui.QMdiArea.TabbedView) - - def setSubWindowView(self): - self.mdiArea.setViewMode(QtGui.QMdiArea.SubWindowView) - - def getSubWindowActions(self): - if not hasattr(self, 'subWindowActions') or self.subWindowActions is None: - self.tabbedViewAction = QtGui.QAction('&Tabbed view', self) - self.tabbedViewAction.triggered.connect(self.setTabbedView) - self.subWindowViewAction = QtGui.QAction('&SubWindow view', self) - self.subWindowViewAction.triggered.connect(self.setSubWindowView) - self.tileSubWindowsAction = QtGui.QAction('Ti&le subwindows', self) - self.tileSubWindowsAction.triggered.connect(self.mdiArea.tileSubWindows) - self.cascadeSubWindowsAction = QtGui.QAction('&Cascade subwindows', self) - self.cascadeSubWindowsAction.triggered.connect(self.mdiArea.cascadeSubWindows) - self.subWindowActions = [self.tabbedViewAction, - self.subWindowViewAction, - self.tileSubWindowsAction, - self.cascadeSubWindowsAction] - return self.subWindowActions - - def getDockWidgetsToggleActions(self): - """Get a list of actions for toggling visibility of dock - widgets - - """ - return [widget.toggleViewAction() for widget in self.findChildren(QtGui.QDockWidget)] - # Removed form the menu item - # def getRunActions(self): - # if (not hasattr(self, 'runActions')) or \ - # (self.runActions is None): - # self.startAction = QtGui.QAction('Start', self) - # self.startAction.triggered.connect(self.resetAndStartSimulation) - # self.pauseAction = QtGui.QAction('Pause', self) - # self.pauseAction.triggered.connect(self.pauseSimulation) - # self.continueAction = QtGui.QAction('Continue', self) - # self.continueAction.triggered.connect(self.continueSimulation) - # self.runActions = [self.startAction, self.pauseAction, self.continueAction] - # return self.runActions - - def getHelpActions(self): - if (not hasattr(self, 'helpActions')) or (self.helpActions is None): - self.actionAbout = QtGui.QAction('About MOOSE', self) - self.connect(self.actionAbout, QtCore.SIGNAL('triggered()'), self.showAboutMoose) - self.actionBuiltInDocumentation = QtGui.QAction('Built-in documentation', self) - self.connect(self.actionBuiltInDocumentation, QtCore.SIGNAL('triggered()'), self.showBuiltInDocumentation) - self.actionGuiBug = QtGui.QAction('Report gui bug', self) - self.connect(self.actionGuiBug, QtCore.SIGNAL('triggered()'), self.reportGuiBug) - self.actionCoreBug = QtGui.QAction('Report core bug', self) - self.connect(self.actionCoreBug, QtCore.SIGNAL('triggered()'), self.reportCoreBug) - self.helpActions = [self.actionAbout, self.actionBuiltInDocumentation, self.actionCoreBug,self.actionGuiBug] - return self.helpActions - # Removed from the main menu item replace with File menu - # def getConnectActions(self): - # if(not hasattr(self,'connectActions')) or(self.connectActions is None): - # self.actionBioModel = QtGui.QAction('BioModels',self) - # self.connect(self.actionBioModel, QtCore.SIGNAL('triggered()'), self.connectBioModel) - # self.connectActions = [self.actionBioModel] - # return self.connectActions - - def connectBioModel(self): - connecttoBioModel = BioModelsClientWidget() - if connecttoBioModel.exec_(): - pass - filepath = connecttoBioModel.filePath - if filepath: - head, fileName = os.path.split(filepath) - modelName = os.path.splitext(fileName)[0] - pwe = moose.getCwe() - ret = mload.loadFile(str(filepath), '/model/%s' % (modelName), merge=False) - self.objectEditSlot('/',False) - pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) - try: - pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] - except KeyError: - pluginName = 'default' - self._loadedModels.append([ret['model'].path,pluginName]) - if len(self._loadedModels)>5: - self._loadedModels.pop(0) - - if not moose.exists(ret['model'].path+'/info'): - moose.Annotator(ret['model'].path+'/info') - - modelAnno = moose.Annotator(ret['model'].path+'/info') - if ret['subtype']: - modelAnno.modeltype = ret['subtype'] - else: - modelAnno.modeltype = ret['modeltype'] - modelAnno.dirpath = str(dialog.directory().absolutePath()) - self.loadedModelsAction(ret['model'].path,pluginName) - self.setPlugin(pluginName, ret['model'].path) - - - def showAboutMoose(self): - with open(config.MOOSE_ABOUT_FILE, 'r') as aboutfile: - QtGui.QMessageBox.about(self, 'About MOOSE', ''.join(aboutfile.readlines())) - - def showDocumentation(self, source): - QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_DOC_URL)) - ''' - if not hasattr(self, 'documentationViewer'): - self.documentationViewer = QtGui.QTextBrowser() - self.documentationViewer.setOpenLinks(True) - self.documentationViewer.setOpenExternalLinks(True) - #print " path ",config.settings[config.KEY_DOCS_DIR], os.path.join(config.settings[config.KEY_DOCS_DIR], 'html'), os.path.join(config.settings[config.KEY_DOCS_DIR], 'images') - self.documentationViewer.setSearchPaths([config.settings[config.KEY_DOCS_DIR], - os.path.join(config.settings[config.KEY_DOCS_DIR], 'html'), - os.path.join(config.settings[config.KEY_DOCS_DIR], 'images')]) - self.documentationViewer.setMinimumSize(800, 480) - self.documentationViewer.setSource(QtCore.QUrl(source)) - result = self.documentationViewer.loadResource(QtGui.QTextDocument.HtmlResource, self.documentationViewer.source()) - if not result.isValid(): - QtGui.QMessageBox.warning(self, 'Could not access documentation', 'The link %s could not be accessed' % (source)) - return - self.documentationViewer.setWindowTitle(source) - self.documentationViewer.reload() - self.documentationViewer.setVisible(True) - ''' - def reportGuiBug(self): - QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_GUI_BUG_URL)) - def reportCoreBug(self): - QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_CORE_BUG_URL)) - ''' - def reportBug(self): - QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_REPORT_BUG_URL)) - ''' - def showBuiltInDocumentation(self): - self.showDocumentation('moose_builtins.html') - - # openEditorView, openPlotView and openRunView are identical - # except the view they ask from the plugin. Consider using a - # mapper. - def openEditorView(self): - """Switch to the editor view of current plugin. If there is - already a subwindow for this, make that the active - one. Otherwise create a new one. - - """ - self.setCurrentView('editor') - - def openPlotView(self): - self.setCurrentView('plot') - - def openRunView(self): - self.setCurrentView('run') - - def resetAndStartSimulation(self): - """TODO this should provide a clean scheduling through all kinds - of simulation or default scheduling should be implemented in MOOSE - itself. We need to define a policy for handling scheduling. It can - be pushed to the plugin-developers who should have knowledge of - the scheduling criteria for their domain.""" - settings = config.MooseSetting() - try: - simdt_kinetics = float(settings[config.KEY_KINETICS_SIMDT]) - except ValueError: - simdt_kinetics = 0.1 - try: - simdt_electrical = float(settings[config.KEY_ELECTRICAL_SIMDT]) - except ValueError: - simdt_electrical = 0.25e-4 - try: - plotdt_kinetics = float(settings[config.KEY_KINETICS_PLOTDT]) - except ValueError: - plotdt_kinetics = 0.1 - try: - plotdt_electrical = float(settings[config.KEY_ELECTRICAL_PLOTDT]) - except ValueError: - plotdt_electrical = 0.25e-3 - try: - simtime = float(settings[config.KEY_SIMTIME]) - except ValueError: - simtime = 1.0 - moose.reinit() - view = self.plugin.getRunView() - moose.start(simtime) - - if view.getCentralWidget().plotAll: - view.getCentralWidget().plotAllData() - self.setCurrentView('run') - - def pauseSimulation(self): - moose.stop() - ''' - def continueSimulation(self): - """TODO implement this somewhere else""" - try: - simtime = float(config.MooseSetting()[config.KEY_SIMTIME]) - except ValueError: - simtime = 1.0 - moose.start(simtime) - ''' - #Harsha: added visible=True so that loadModelDialogSlot and NewModelDialogSlot call this function - # to clear out object path - def objectEditSlot(self, mobj, visible=True): - """Slot for switching the current object in object editor.""" - self.objectEditDockWidget.setObject(mobj) - self.objectEditDockWidget.setVisible(visible) - - def loadedModelsAction(self,modelPath,pluginName): - #Harsha: added under file Menu, Recently Loaded Models - #All the previously loaded chemical models, solver's and table's ticks are made -1 - for model in self._loadedModels: - self.disableModel(model[0]) - - action = QAction(modelPath[1:],self) - action.triggered.connect(lambda : self.setPlugin(pluginName, modelPath)) - compt = moose.wildcardFind(modelPath + '/##[ISA=ChemCompt]') - c = moose.Clock('/clock') - self.simulationdt = c.tickDt[7] - self.plotdt = c.tickDt[8] - if compt: - self.simulationdt = c.tickDt[11] - self.plotdt = c.tickDt[16] - #index = [(ind, self._loadedModels[ind].index(modelPath)) for ind in xrange(len(self.loadedModels)) if item in self._loadedModels[ind]] - # for i,j in enumerate(self._loadedModels): - # if j[0] == modelPath: - # #del(self._loadedModels[i]) - # pass - # break - - self._loadedModels.append([modelPath,pluginName,action,self.simulationdt,self.plotdt]) - if len(self._loadedModels)>5: - self._loadedModels.pop(0) - - def disableModel(self, modelPath): - compt = moose.wildcardFind(modelPath + '/##[ISA=ChemCompt]') - if compt: - if moose.exists(compt[0].path+'/ksolve'): - ksolve = moose.Ksolve( compt[0].path+'/ksolve' ) - ksolve.tick = -1 - if moose.exists(compt[0].path+'/gsolve'): - gsolve = moose.Gsolve( compt[0].path+'/gsolve' ) - gsolve.tick = -1 - if moose.exists(compt[0].path+'/stoich'): - stoich = moose.Stoich( compt[0].path+'/stoich' ) - stoich.tick = -1 - - else : - neurons = moose.wildcardFind(modelPath + "/model/cells/##[ISA=Neuron]") - for neuron in neurons: - solver = moose.element(neuron.path + "/hsolve") - solver.tick = -1 - for table in moose.wildcardFind( modelPath+'/data/graph#/#' ): - table.tick = -1 - - def loadModelDialogSlot(self): - """Start a file dialog to choose a model file. - - Once the dialog succeeds, we should hand-over the duty of - actual model loading to something else. Then refresh the - views. Things to check from the user: - - 1) The file type - - 2) Target element - - 3) Whether we should update the current window or start a new - window. - - 4) Plugin to use for displaying this model (can be automated - by looking into the model file for a regular expression) - - """ - self.popup.close() - activeWindow = None # This to be used later to refresh the current widget with newly loaded model - dialog = LoaderDialog(self, - self.tr('Load model from file')) - - if dialog.exec_(): - valid = False - ret = [] - ret,pluginName = self.checkPlugin(dialog) - if pluginName == 'kkit': - compt = moose.wildcardFind(ret['model'].path+'/##[ISA=ChemCompt]') - if not len(compt): - reply = QtGui.QMessageBox.question(self, "Model is empty","Model has no compartment, atleast one compartment should exist to display the widget\n Do you want another file", - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: - dialog = LoaderDialog(self,self.tr('Load model from file')) - if dialog.exec_(): - ret,pluginName = self.checkPlugin(dialog) - ret,valid = self.dialog_check(ret) - else: - QtGui.QApplication.restoreOverrideCursor() - return - else: - valid = True - if valid == True: - modelAnno = moose.Annotator(ret['model'].path+'/info') - if ret['subtype']: - modelAnno.modeltype = ret['subtype'] - else: - modelAnno.modeltype = ret['modeltype'] - modelAnno.dirpath = str(dialog.directory().absolutePath()) - self.loadedModelsAction(ret['model'].path,pluginName) - self.setPlugin(pluginName, ret['model'].path) - if pluginName == 'kkit': - QtCore.QCoreApplication.sendEvent(self.plugin.getEditorView().getCentralWidget().view, QtGui.QKeyEvent(QtCore.QEvent.KeyPress, Qt.Qt.Key_A, Qt.Qt.NoModifier)) - - def checkPlugin(self,dialog): - fileNames = dialog.selectedFiles() - for fileName in fileNames: - modelName = dialog.getTargetPath() - if '/' in modelName: - raise mexception.ElementNameError('Model name cannot contain `/`') - ret = mload.loadFile(str(fileName),'%s' %(modelName),merge=False) - #ret = mload.loadFile(str(fileName), '/model/%s' % (modelName), merge=False) - #This will clear out object editor's objectpath and make it invisible - self.objectEditSlot('/',False) - #if subtype is None, in case of cspace then pluginLookup = /cspace/None - # which will not call kkit plugin so cleaning to /cspace - pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) - try: - pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] - except KeyError: - pluginName = 'default' - print(('Loaded model', ret['model'].path)) - return ret,pluginName - - def dialog_check(self,ret): - pluginLookup = '%s/%s' % (ret['modeltype'], ret['subtype']) - try: - pluginName = subtype_plugin_map['%s/%s' % (ret['modeltype'], ret['subtype'])] - except KeyError: - pluginName = 'default' - if pluginName == 'kkit': - compt = moose.wildcardFind(ret['model'].path+'/##[ISA=ChemCompt]') - if not len(compt): - reply = QtGui.QMessageBox.question(self, "Model is empty","Model has no compartment, atleast one compartment should exist to display the widget\n Do you want another file", - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: - dialog = LoaderDialog(self,self.tr('Load model from file')) - if dialog.exec_(): - ret,pluginName = self.checkPlugin(dialog) - else: - QtGui.QApplication.restoreOverrideCursor() - return - else: - return ret,True - def newModelDialogSlot(self): - #Harsha: Create a new dialog widget for model building - self.popup.close() - newModelDialog = DialogWidget() - if newModelDialog.exec_(): - modelPath = str(newModelDialog.modelPathEdit.text()).strip() - if len(modelPath) == 0: - raise mexception.ElementNameError('Model path cannot be empty') - if re.search('[ /]',modelPath) is not None: - raise mexception.ElementNameError('Model path should not containe / or whitespace') - #plugin = str(newModelDialog.submenu.currentText()) - plugin = str(newModelDialog.getcurrentRadioButton()) - #Harsha: All model will be forced to load/build under /model, - #2014 sep 10: All the model will be forced to load/build model under /modelName/model - ''' - modelContainer = moose.Neutral('/model') - modelRoot = moose.Neutral('%s/%s' % (modelContainer.path, modelPath)) - ''' - if moose.exists(modelPath+'/model'): - moose.delete(modelPath) - - modelContainer = moose.Neutral('%s' %(modelPath)) - modelRoot = moose.Neutral('%s/%s' %(modelContainer.path,"model")) - if not moose.exists(modelRoot.path+'/info'): - moose.Annotator(modelRoot.path+'/info') - - modelAnno = moose.element(modelRoot.path+'/info') - modelAnno.modeltype = "new_kkit" - modelAnno.dirpath = " " - self.loadedModelsAction(modelRoot.path,plugin) - self.setPlugin(plugin, modelRoot.path) - #Harsha: This will clear out object editor's objectpath and make it invisible - self.objectEditSlot('/', False) +from . import config +from . import MWindow as MWindow def main(): # create the GUI application app = QtGui.QApplication(sys.argv) QtGui.qApp = app - #icon = QtGui.QIcon(os.path.join(config.KEY_ICON_DIR,'moose_icon.png')) - #app.setWindowIcon(icon) - # instantiate the main window - #moose.loadModel('../Demos/Genesis_files/Kholodenko.g','/kho') - mWindow = MWindow() + mWindow = MWindow.MWindow() mWindow.setWindowState(QtCore.Qt.WindowMaximized) sys.excepthook = mWindow.handleException - # show it mWindow.show() - # start the Qt main loop execution, exiting from this script - #http://code.google.com/p/subplot/source/browse/branches/mzViewer/PyMZViewer/mpl_custom_widget.py - #http://eli.thegreenplace.net/files/prog_code/qt_mpl_bars.py.txt - #http://lionel.textmalaysia.com/a-simple-tutorial-on-gui-programming-using-qt-designer-with-pyqt4.html - #http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg13241.html - # with the same return code of Qt application config.settings[config.KEY_FIRSTTIME] = 'False' # string not boolean sys.exit(app.exec_()) - if __name__ == '__main__': main() diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index 0c967e7..51fbdaf 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -1,24 +1,28 @@ import sys -from PyQt4 import QtGui, QtCore, Qt -from .default import * -from moose import * -from moose.genesis import write -from moose import SBML -#sys.path.append('plugins') -from mplugin import * -from .kkitUtil import * -from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem -from .kkitViewcontrol import * -from .kkitCalcArrow import * -from .kkitOrdinateUtil import * import posixpath -from mtoolbutton import MToolButton +from os.path import expanduser + +from PyQt4 import QtGui, QtCore, Qt from PyQt4.QtGui import QWidget from PyQt4.QtGui import QGridLayout from PyQt4.QtGui import QColor -import RunWidget -from os.path import expanduser -from .setsolver import * + +from moose import * +from moose.genesis import write +from moose import SBML + +from mgui.mplugin import * +from mgui.mtoolbutton import MToolButton +import mgui.RunWidget as RunWidget + +from mgui.plugins.default import * +from mgui.plugins.kkitUtil import * +from mgui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from mgui.plugins.kkitViewcontrol import * +from mgui.plugins.kkitCalcArrow import * +from mgui.plugins.kkitOrdinateUtil import * +from mgui.plugins.setsolver import * + class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" @@ -26,15 +30,8 @@ def __init__(self, *args): #print args MoosePlugin.__init__(self, *args) self.view = None - #self.plotView = PlotView(self) - #self.getRunView() - #self.plotView.dataTable = self.view._centralWidget.dataTable - #self.plotView.updateCallback = self.view._centralWidget.legendUpdate - #self.view._centralWidget.legendUpdate() - #self.dataTable = DataTable(self.dataRoot) self.fileinsertMenu = QtGui.QMenu('&File') if not hasattr(self,'SaveModelAction'): - #self.fileinsertMenu.addSeparator() self.saveModelAction = QtGui.QAction('Save', self) self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) diff --git a/moose b/moose index f274d24..2268b6e 100755 --- a/moose +++ b/moose @@ -2,5 +2,4 @@ import mgui print( mgui.__file__ ) -print( dir(mgui) ) mgui.main( ) diff --git a/setup.py b/setup.py index d08eda3..2ffff4a 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ , 'mgui.plugins' : 'mgui/plugins' , 'mgui.colormaps' : 'mgui/colormaps' }, - package_data = { 'mgui' : [ 'colormaps/*' ] }, + package_data = { 'mgui' : [ 'icons/*', 'colormaps/*', '../examples/*' ] }, author = "Harsha Rani", author_email = "hrani@ncbs.res.in", maintainer = 'Dilawar Singh', From f70c44c879fe17068c22f6a2ac4ff437162a09df Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 17:51:39 +0530 Subject: [PATCH 06/66] ready of a first pull request. --- mgui/MWindow.py | 27 ++++++++++++++------------- mgui/mgui.py | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 3902bad..a0ce5a1 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -44,7 +44,6 @@ # Logger _logger = config._logger - # This maps model subtypes to corresponding plugin names. Should be # moved to a separate property file perhaps subtype_plugin_map = { @@ -57,7 +56,6 @@ def busyCursor(): app = QtGui.qApp app.setOverrideCursor(QtGui.QCursor(Qt.Qt.BusyCursor)) - #shows a hourglass - or a busy/working arrow def freeCursor(): app = QtGui.qApp @@ -271,16 +269,15 @@ def quit(self): QtGui.qApp.closeAllWindows() def handleException(self, t, v, s): - """This handler will show warning messages for error exceptions. Show + """ + This handler will show warning messages for error exceptions. Show info at status bar for non-error exceptions. It will replace sys.excepthook and has the same signature (except being bound to this object). - t : exception type - - v : exception value - - s: traceback object. + t : exception type + v : exception value + s: traceback object. """ traceback.print_exception(t, v, s) @@ -294,9 +291,9 @@ def handleException(self, t, v, s): QtGui.QMessageBox.critical(self, title, '\n'.join((title, trace))) def getPluginNames(self): - """Return pluginNames attribute or create it by retrieving + """ + Return pluginNames attribute or create it by retrieving available plugin names from plugin/list.txt file. - """ if self.pluginNames is None: pluginF = os.path.join( config.MOOSE_GUI_DIR, 'plugins', 'list.txt' ) @@ -317,13 +314,17 @@ def loadPluginModule(self, name, re=False): if (not re) and name in sys.modules: return sys.modules[name] fp, pathname, description = imp.find_module(name, [config.MOOSE_PLUGIN_DIR]) + try: module = imp.load_module(name, fp, pathname, description) - finally: - if fp: - fp.close() + except Exception as e: + _logger.warn( "Could not load module %s' % fp" ) + _logger.debug( "Error was %s" % e ) + + if fp: fp.close() return module + def getMyDockWidgets(self): """Return a list of dockwidgets that belong to the top level. This is needed to keep them separate from those diff --git a/mgui/mgui.py b/mgui/mgui.py index 0a881a6..45af2d6 100644 --- a/mgui/mgui.py +++ b/mgui/mgui.py @@ -23,7 +23,7 @@ def main(): mWindow.setWindowState(QtCore.Qt.WindowMaximized) sys.excepthook = mWindow.handleException mWindow.show() - config.settings[config.KEY_FIRSTTIME] = 'False' # string not boolean + config.settings[config.KEY_FIRSTTIME] = 'False' sys.exit(app.exec_()) if __name__ == '__main__': From 42954b2e354e86cb42cefc239e9f6c4c70ad4ab4 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 18:21:45 +0530 Subject: [PATCH 07/66] Needs to fix few bugs on drag and connect. --- mgui/MWindow.py | 1 + mgui/config.py | 33 ++++++++++++------------ mgui/mgui.py | 16 +++++++++--- mgui/plugins/NeuroKitVisualizer.py | 10 ++++---- mgui/plugins/kkit.py | 41 +++++++++++++++++++----------- 5 files changed, 61 insertions(+), 40 deletions(-) diff --git a/mgui/MWindow.py b/mgui/MWindow.py index a0ce5a1..844d965 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -13,6 +13,7 @@ __status__ = "Development" import sys +import signal import os import code import imp diff --git a/mgui/config.py b/mgui/config.py index 16be823..596feec 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -56,6 +56,21 @@ from PyQt4.Qt import Qt from PyQt4 import QtGui, QtCore +# Logger +import logging +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', + datefmt='%m-%d %H:%M', + filename='moose-gui.log', + filemode='w' + ) +console = logging.StreamHandler() +console.setLevel(logging.INFO) +formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +console.setFormatter(formatter) +_logger = logging.getLogger('') +_logger.addHandler(console) + TEMPDIR = tempfile.gettempdir() KEY_FIRSTTIME = 'firsttime' # KEY_STATE_FILE = 'statefile' @@ -148,6 +163,7 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_COLORMAP_DIR, os.path.join(MOOSE_GUI_DIR, 'colormaps')) cls._instance.qsettings.setValue(KEY_BIOMODEL_DIR, os.path.join(MOOSE_GUI_DIR, 'bioModels')) cls._instance.qsettings.setValue(KEY_ICON_DIR, os.path.join(MOOSE_GUI_DIR, 'icons')) + _logger.info( "Icon directory is %s" % KEY_ICON_DIR ) cls._instance.qsettings.setValue(KEY_NUMPTHREADS, '1') cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, unicode(MOOSE_UNDO_LENGTH)) # These are to be checked at every run @@ -242,20 +258,3 @@ def init_dirs(): BENCHMARK_LOGGER = logging.getLogger('moose.benchmark') BENCHMARK_LOGGER.setLevel(logging.INFO) -# Logger -import logging -logging.basicConfig(level=logging.DEBUG, - format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', - datefmt='%m-%d %H:%M', - filename='moose-gui.log', - filemode='w' - ) -console = logging.StreamHandler() -console.setLevel(logging.INFO) -formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') -console.setFormatter(formatter) -_logger = logging.getLogger('') -_logger.addHandler(console) - -# -# config.py ends here diff --git a/mgui/mgui.py b/mgui/mgui.py index 45af2d6..7308d79 100644 --- a/mgui/mgui.py +++ b/mgui/mgui.py @@ -7,6 +7,7 @@ __author__ = 'Subhasis Ray , HarshaRani, Aviral Goel, NCBS Bangalore' import sys +import signal from PyQt4 import QtGui, QtCore, Qt from PyQt4 import Qt, QtCore, QtGui @@ -15,16 +16,25 @@ from . import config from . import MWindow as MWindow +app_ = None + +def signal_handler( *args ): + global app_ + sys.stderr.write( '\r' ) + sys.exit( app_.exec_() ) + def main(): # create the GUI application - app = QtGui.QApplication(sys.argv) - QtGui.qApp = app + global app_ + app_ = QtGui.QApplication(sys.argv) + signal.signal( signal.SIGINT, signal_handler ) + QtGui.qApp = app_ mWindow = MWindow.MWindow() mWindow.setWindowState(QtCore.Qt.WindowMaximized) sys.excepthook = mWindow.handleException mWindow.show() config.settings[config.KEY_FIRSTTIME] = 'False' - sys.exit(app.exec_()) + sys.exit(app_.exec_()) if __name__ == '__main__': main() diff --git a/mgui/plugins/NeuroKitVisualizer.py b/mgui/plugins/NeuroKitVisualizer.py index eb90ffa..19a433b 100644 --- a/mgui/plugins/NeuroKitVisualizer.py +++ b/mgui/plugins/NeuroKitVisualizer.py @@ -11,10 +11,13 @@ from PyQt4.QtGui import QPainter from PyQt4.QtGui import QFont from PyQt4.QtCore import QPoint + import moose -from . import default import moogli +from mgui.config import _logger +from mgui.plugins import default + class MorphologyEditor(moogli.MorphologyViewer): def __init__(self, morphology, width, height, plugin): @@ -74,10 +77,7 @@ def hide(self): super(MorphologySimulator, self).hide() def start_drag(self, info_id): - # pixmap = QPixmap() - # painter = QPainter( pixmap ) - # painter.setFont( QFont("Arial") ); - # painter.drawText( QPoint(100, 100), info_id ); + _logger.info( "started dragging" ) mimeData = QMimeData() mimeData.data =("/" + info_id.partition("/")[2].partition("/")[0], moose.element(info_id)) mimeData.setText(info_id) diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index 51fbdaf..6608a28 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -23,6 +23,8 @@ from mgui.plugins.kkitOrdinateUtil import * from mgui.plugins.setsolver import * +from mgui.config import _logger + class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" @@ -164,12 +166,6 @@ def getRunView(self): graphView.layout().addWidget(self.currentRunView,0,0,2,1) return self.view -# class AnotherKkitRunViewsCentralWidget(QWidget): - -# def __init__(): -# QWidget.__init__() - -# def class AnotherKkitRunView(RunView): @@ -393,8 +389,15 @@ def updateModelView(self): #self.drawLine_arrow() if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): self.layout().removeWidget(self.view) - self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) - if isinstance(self,kineticEditorWidget): + self.view = GraphicalView( + self.modelRoot + , self.sceneContainer + , self.border + , self + , self.createdItem + , minmaxratiodict + ) + if isinstance(self, kineticEditorWidget): #self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow() @@ -404,12 +407,18 @@ def updateModelView(self): hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - elif isinstance(self,kineticRunWidget): + elif isinstance(self, kineticRunWidget): self.view.setRefWidget("runView") hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10,self.sceneContainer.itemsBoundingRect().y()-10,self.sceneContainer.itemsBoundingRect().width()+20,self.sceneContainer.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) + self.view.fitInView( + self.sceneContainer.itemsBoundingRect().x()-10 + , self.sceneContainer.itemsBoundingRect().y()-10 + , self.sceneContainer.itemsBoundingRect().width()+20 + , self.sceneContainer.itemsBoundingRect().height()+20 + , Qt.Qt.IgnoreAspectRatio + ) def getMooseObj(self): #This fun call 2 more function @@ -855,6 +864,7 @@ def positionChange1(self,mooseObject): v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) class kineticEditorWidget(KineticsWidget): + def __init__(self, plugin,*args): KineticsWidget.__init__(self, plugin, *args) @@ -863,9 +873,10 @@ def __init__(self, plugin,*args): self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] - self.toolTipinfo = { "CubeMesh":"", - "CylMesh" : "", - "Pool":"A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", + self.toolTipinfo = { + "CubeMesh":"" + , "CylMesh" : "" + , "Pool": "A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", @@ -884,9 +895,9 @@ def __init__(self, plugin,*args): doc = doc.split('Description:')[-1].split('Name:')[0].strip() action.setToolTip(doc) - def GrViewresize(self,event): + def GrViewresize(self, event): #when Gui resize and event is sent which inturn call resizeEvent of qgraphicsview - pass + _logger.debug( "Resizing on event %s" % event ) #self.view.resizeEvent1(event) def makePoolItem(self, poolObj, qGraCompt): From 3d1c1faae2f2a4da4c85511062fae8b2f8911b36 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 19:56:28 +0530 Subject: [PATCH 08/66] Various typos in buidkkit plugin are fixed. --- mgui/MWindow.py | 31 ++++++-------------- mgui/mgui.py | 2 +- mgui/plugins/buildkkit.py | 29 ++++++++++--------- mgui/plugins/kkit.py | 59 ++------------------------------------- 4 files changed, 26 insertions(+), 95 deletions(-) diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 844d965..19a2de9 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -721,7 +721,6 @@ def getViewMenu(self): self.subWindowMenu.addActions(self.getSubWindowActions()) return self.viewMenu - def getEditActions(self): return None @@ -909,6 +908,7 @@ def resetAndStartSimulation(self): def pauseSimulation(self): moose.stop() + ''' def continueSimulation(self): """TODO implement this somewhere else""" @@ -918,16 +918,13 @@ def continueSimulation(self): simtime = 1.0 moose.start(simtime) ''' - #Harsha: added visible=True so that loadModelDialogSlot and NewModelDialogSlot call this function - # to clear out object path + def objectEditSlot(self, mobj, visible=True): """Slot for switching the current object in object editor.""" self.objectEditDockWidget.setObject(mobj) self.objectEditDockWidget.setVisible(visible) def loadedModelsAction(self,modelPath,pluginName): - #Harsha: added under file Menu, Recently Loaded Models - #All the previously loaded chemical models, solver's and table's ticks are made -1 for model in self._loadedModels: self.disableModel(model[0]) @@ -940,16 +937,12 @@ def loadedModelsAction(self,modelPath,pluginName): if compt: self.simulationdt = c.tickDt[11] self.plotdt = c.tickDt[16] - #index = [(ind, self._loadedModels[ind].index(modelPath)) for ind in xrange(len(self.loadedModels)) if item in self._loadedModels[ind]] - # for i,j in enumerate(self._loadedModels): - # if j[0] == modelPath: - # #del(self._loadedModels[i]) - # pass - # break - self._loadedModels.append([modelPath,pluginName,action,self.simulationdt,self.plotdt]) - if len(self._loadedModels)>5: - self._loadedModels.pop(0) + self._loadedModels.append( + [ modelPath,pluginName,action,self.simulationdt,self.plotdt ] + ) + if len(self._loadedModels) > 5: + self._loadedModels.pop( 0 ) def disableModel(self, modelPath): compt = moose.wildcardFind(modelPath + '/##[ISA=ChemCompt]') @@ -1066,8 +1059,8 @@ def dialog_check(self,ret): return else: return ret,True + def newModelDialogSlot(self): - #Harsha: Create a new dialog widget for model building self.popup.close() newModelDialog = DialogWidget() if newModelDialog.exec_(): @@ -1076,14 +1069,7 @@ def newModelDialogSlot(self): raise mexception.ElementNameError('Model path cannot be empty') if re.search('[ /]',modelPath) is not None: raise mexception.ElementNameError('Model path should not containe / or whitespace') - #plugin = str(newModelDialog.submenu.currentText()) plugin = str(newModelDialog.getcurrentRadioButton()) - #Harsha: All model will be forced to load/build under /model, - #2014 sep 10: All the model will be forced to load/build model under /modelName/model - ''' - modelContainer = moose.Neutral('/model') - modelRoot = moose.Neutral('%s/%s' % (modelContainer.path, modelPath)) - ''' if moose.exists(modelPath+'/model'): moose.delete(modelPath) @@ -1097,5 +1083,4 @@ def newModelDialogSlot(self): modelAnno.dirpath = " " self.loadedModelsAction(modelRoot.path,plugin) self.setPlugin(plugin, modelRoot.path) - #Harsha: This will clear out object editor's objectpath and make it invisible self.objectEditSlot('/', False) diff --git a/mgui/mgui.py b/mgui/mgui.py index 7308d79..792c897 100644 --- a/mgui/mgui.py +++ b/mgui/mgui.py @@ -34,7 +34,7 @@ def main(): sys.excepthook = mWindow.handleException mWindow.show() config.settings[config.KEY_FIRSTTIME] = 'False' - sys.exit(app_.exec_()) + sys.exit( app_.exec_() ) if __name__ == '__main__': main() diff --git a/mgui/plugins/buildkkit.py b/mgui/plugins/buildkkit.py index b23e794..86d8e76 100644 --- a/mgui/plugins/buildkkit.py +++ b/mgui/plugins/buildkkit.py @@ -2,24 +2,23 @@ import os import math import re -from PyQt4 import QtGui, QtCore, Qt -#import pygraphviz as pgv -import networkx as nx -#sys.path.insert(0, '/home/harsha/BuildQ/gui') -import numpy as np import config import pickle -from .default import * -from moose import * -sys.path.append('plugins') -from mplugin import * -from .kkitUtil import * -from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem -from .kkitViewcontrol import * -from .kkitCalcArrow import * -from .kkitOrdinateUtil import * import posixpath -from mtoolbutton import MToolButton + +from PyQt4 import QtGui, QtCore, Qt + +from moose import * +import networkx as nx +import numpy as np + +from mgui.plugins.default import * +from mgui.plugins.kkitUtil import * +from mgui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from mgui.plugins.kkitViewcontrol import * +from mgui.plugins.kkitCalcArrow import * +from mgui.plugins.kkitOrdinateUtil import * +from mgui.mtoolbutton import MToolButton class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index 6608a28..ef55982 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -970,66 +970,11 @@ def resetColor(self): if isinstance(item,PoolItemCircle): item.returnEllispeSize() - # def addSolver(self,solver): - # print "\t addSolver--------" - # compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - # comptinfo = moose.Annotator(moose.element(compt[0]).path+'/info') - # print " $$$$$$$$$$$$$$ ",moose.element(compt[0].path) - # previousSolver = comptinfo.solver - - # print "pre solver from kkit ",previousSolver, solver - # currentSolver = previousSolver - # if solver == "Gillespie": - # currentSolver = "Gillespie" - # elif solver == "Runge Kutta": - # currentSolver = "Runge Kutta" - # elif solver == " Exponential Euler": - # currentSolver == "Exponential Euler" - - # if previousSolver != currentSolver: - # if ( moose.exists( compt[0].path+'/stoich' ) ): - # print "1" - # self.deleteSolver() - # self.setCompartmentSolver(compt,currentSolver) - # elif ( moose.exists( compt[0].path+'/stoich' ) ): - # print "2" - # self.setCompartmentSolver(compt, currentSolver) - # comptinfo.solver = currentSolver - # else: - # print "3", moose.exists(compt[0].path+'/stoich') - # if not ( moose.exists( compt[0].path+'/stoich' ) ): - # self.setCompartmentSolver(compt,currentSolver) - # for x in moose.wildcardFind( self.modelRoot+'/data/graph#/#' ): - # x.tick = 18 - # #self.solverStatus() - # def setCompartmentSolver(self,compt,solver): - # if solver == 'GSL' or solver == "Runge Kutta": - # solver = 'gsl' - # elif solver == 'Gillespie': - # solver = 'gssa' - # elif solver == "Exponential Euler": - # solver = 'ee' - # print "setCompartmentSolver ",solver - # if ( solver == 'gsl' ): - # ksolve = moose.Ksolve( compt[0].path+'/ksolve' ) - # if ( solver == 'gssa' ): - # ksolve = moose.Gsolve( compt[0].path+'/gsolve' ) - # if (solver!= 'ee'): - # stoich = moose.Stoich( compt[0].path+'/stoich' ) - # stoich.compartment = compt[0] - # stoich.ksolve = ksolve - # stoich.path = compt[0].path+'/##' - # moose.reinit() - +''' if __name__ == "__main__": app = QtGui.QApplication(sys.argv) size = QtCore.QSize(1024 ,768) - #modelPath = 'Kholodenko' modelPath = 'acc27' - #modelPath = 'acc8' - #modelPath = '3ARECB' - #modelPath = '3AreacB' - #modelPath = '5AreacB' itemignoreZooming = False try: filepath = '../../Demos/Genesis_files/'+modelPath+'.g' @@ -1053,3 +998,5 @@ def resetColor(self): print("Error number",errno,"(%s)" %strerror) sys.exit(0) sys.exit(app.exec_()) + +''' From 5538bb465131517aa72c01bcaf0f7bc4c4dff41e Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Mon, 21 Nov 2016 20:01:34 +0530 Subject: [PATCH 09/66] Fixed a commet error in kkit.py file, --- mgui/plugins/kkit.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index ef55982..2ab58ce 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -970,7 +970,6 @@ def resetColor(self): if isinstance(item,PoolItemCircle): item.returnEllispeSize() -''' if __name__ == "__main__": app = QtGui.QApplication(sys.argv) size = QtCore.QSize(1024 ,768) @@ -999,4 +998,3 @@ def resetColor(self): sys.exit(0) sys.exit(app.exec_()) -''' From 0bd51ab5a7962b8831a56d73198fdcefdce5fd72 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 09:39:51 +0530 Subject: [PATCH 10/66] For python3. --- mgui/__init__.py | 17 ++++++++++++++++- mgui/config.py | 9 ++++----- mgui/objectedit.py | 10 +++++----- mgui/shell.py | 6 ++++++ suds/sax/text.py | 2 +- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/mgui/__init__.py b/mgui/__init__.py index a2ce17e..2603063 100644 --- a/mgui/__init__.py +++ b/mgui/__init__.py @@ -1 +1,16 @@ -from mgui import main +from .mgui import main + +# Hack. In python3, Qt4 does not have QString object. +from PyQt4 import QtCore +try: + from PyQt4.QtCore import QString +except ImportError: + # we are using Python3 so QString is not defined + QtCore.QString = type("") + +# QtCore is a mapped type i.e. +try: + from PyQt4.QtCore import QVariant +except Exception as e: + QtCore.QVariant = type( "" ) + diff --git a/mgui/config.py b/mgui/config.py index 596feec..0c91f28 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -100,7 +100,7 @@ KEY_ELECTRICAL_PLOTDT = 'electrical/plotdt' KEY_SIMTIME = 'main/simtime' -QT_VERSION = unicode(QtCore.QT_VERSION_STR).split('.') +QT_VERSION = ('%s' % QtCore.QT_VERSION_STR).split('.') QT_MAJOR_VERSION = int(QT_VERSION[0]) QT_MINOR_VERSION = int(QT_VERSION[1]) @@ -131,7 +131,7 @@ def qvalue( qsetting, key ): try: val = qval.toString( ) except Exception as e: - val = unicode( qval ) + val = '%s' % qval return u'%s' % val @@ -165,7 +165,7 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_ICON_DIR, os.path.join(MOOSE_GUI_DIR, 'icons')) _logger.info( "Icon directory is %s" % KEY_ICON_DIR ) cls._instance.qsettings.setValue(KEY_NUMPTHREADS, '1') - cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, unicode(MOOSE_UNDO_LENGTH)) + cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, ('%s' % MOOSE_UNDO_LENGTH)) # These are to be checked at every run cls._instance.qsettings.setValue(KEY_HOME_DIR, os.environ['HOME']) cls._instance.qsettings.setValue(KEY_DEMOS_DIR, MOOSE_DEMOS_DIR) @@ -180,7 +180,7 @@ def __init__(self, *args, **kwargs): super(MooseSetting, self).__init__(self, *args, **kwargs) def __iter__(self): - return (unicode(key) for key in self.qsettings.allKeys()) + return ('%s' % key for key in self.qsettings.allKeys()) def __setitem__(self, key, value): if isinstance(key, str): @@ -190,7 +190,6 @@ def __setitem__(self, key, value): def __getitem__(self, key): val = qvalue( self.qsettings, key ) - assert isinstance( val, unicode ), "Expected string, got %s" % type(val) return val def keys(self): diff --git a/mgui/objectedit.py b/mgui/objectedit.py index 74638c6..178cd34 100644 --- a/mgui/objectedit.py +++ b/mgui/objectedit.py @@ -73,12 +73,12 @@ from collections import deque import traceback -sys.path.append('../python') import moose -from . import defaults -from . import config -from .plugins.kkitUtil import getColor -#these fields will be ignored + +from mgui import defaults +from mgui import config +from mgui.plugins.kkitUtil import getColor + extra_fields = ['this', 'me', 'parent', diff --git a/mgui/shell.py b/mgui/shell.py index 6268666..4fecc71 100644 --- a/mgui/shell.py +++ b/mgui/shell.py @@ -31,6 +31,12 @@ from PyQt4.QtGui import QTextEdit, QTextCursor from PyQt4.QtCore import Qt +# In python3, QString is just python strings. +try: + from PyQt4.QtCore import QString +except ImportError as e: + # we are using Python3 so QString is not defined + QtCore.QString = type("") class History: """ Backup and restore history between sessions diff --git a/suds/sax/text.py b/suds/sax/text.py index 5945222..4d74ca5 100644 --- a/suds/sax/text.py +++ b/suds/sax/text.py @@ -22,7 +22,7 @@ from suds.sax import * -class Text( unicode ): +class Text( str ): """ An XML text object used to represent text content. @ivar lang: The (optional) language flag. From 2e8969f4823446b1fd64507a5886aef3764def54 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 09:46:08 +0530 Subject: [PATCH 11/66] Launch is fine with python3. --- mgui/__init__.py | 9 ++------- mgui/objectedit.py | 48 +++++++--------------------------------------- 2 files changed, 9 insertions(+), 48 deletions(-) diff --git a/mgui/__init__.py b/mgui/__init__.py index 2603063..8df7fe7 100644 --- a/mgui/__init__.py +++ b/mgui/__init__.py @@ -5,12 +5,7 @@ try: from PyQt4.QtCore import QString except ImportError: - # we are using Python3 so QString is not defined + # we are using Python3 so QString is not defined. Also QVariant is a mapped + # type. QtCore.QString = type("") -# QtCore is a mapped type i.e. -try: - from PyQt4.QtCore import QVariant -except Exception as e: - QtCore.QVariant = type( "" ) - diff --git a/mgui/objectedit.py b/mgui/objectedit.py index 178cd34..15a55c2 100644 --- a/mgui/objectedit.py +++ b/mgui/objectedit.py @@ -26,39 +26,6 @@ # # -# Change log: -# -# Wed Jun 30 11:18:34 2010 (+0530) - Originally created by Subhasis -# Ray, the model and the view -# -# Modified/adapted to dh_branch by Chaitanya/Harsharani -# -# Thu Apr 18 18:37:31 IST 2013 - Reintroduced into multiscale GUI by -# Subhasis -# -# Fri Apr 19 15:05:53 IST 2013 - Subhasis added undo redo -# feature. Create ObjectEditModel as part of ObjectEditView. -# - -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import PyQt4 from PyQt4 import QtCore from PyQt4 import QtGui @@ -308,9 +275,9 @@ def data(self, index, role): field = self.fields[index.row()] if index.column() == 0 and role == QtCore.Qt.DisplayRole: try: - ret = QtCore.QVariant(QtCore.QString(field)+' ('+defaults.FIELD_UNITS[field]+')') + ret = '%s (%s)' % (QtCore.QString(field), defaults.FIELD_UNITS[field]) except KeyError: - ret = QtCore.QVariant(QtCore.QString(field)) + ret = QtCore.QString(field) elif index.column() == 1: if role==QtCore.Qt.CheckStateRole: if ((str(field) == "plot Conc") or (str(field) == "plot n") ): @@ -322,25 +289,25 @@ def data(self, index, role): return QtGui.QPushButton("Press Me!") if ( (str(field) != "Notes") and (str(field) != "className")): ret = self.mooseObject.getField(str(field)) - ret = QtCore.QVariant(QtCore.QString(str(ret))) + ret = QtCore.QString(str(ret)) elif(str(field) == "className"): ret = self.mooseObject.getField(str(field)) if 'Zombie' in ret: ret = ret.split('Zombie')[1] - ret = QtCore.QVariant(QtCore.QString(str(ret))) + ret = QtCore.QString(str(ret)) elif(str(field) == "Notes"): astr = self.mooseObject.path+'/info' mastr = moose.Annotator(astr) ret = (mastr).getField(str('notes')) - ret = QtCore.QVariant(QtCore.QString(str(ret))) + ret = (QtCore.QString(str(ret))) except ValueError: ret = None return ret def headerData(self, col, orientation, role): if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole: - return QtCore.QVariant(self.headerdata[col]) - return QtCore.QVariant() + return (self.headerdata[col]) + return "" class ObjectEditView(QtGui.QTableView): """View class for object editor. @@ -515,4 +482,3 @@ def main(): if __name__ == "__main__": main() -# ojectedit.py ends here From 7ec0fcdcdd0bff69d1c2982e3e408eab84db5498 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 10:02:12 +0530 Subject: [PATCH 12/66] I just need paper-2015 examples --- examples/LICENSE | 340 - .../bidirectional_plastic_switch.py | 93 - examples/MemoryNetworks/stargazin_synapse.g | 413 - examples/_travis/.ignore_on_travis | 0 examples/_travis/colors.sh | 45 - examples/_travis/find_scripts_to_run.sh | 89 - examples/_travis/matplotlibrc | 11 - examples/_travis/run_scripts.sh | 70 - examples/genesis/00001-sbml-l3v1.xml | 52 - examples/genesis/EGFR_MAPK_58.g | 750 - examples/genesis/EGFR_MAPK_58.png | Bin 313988 -> 0 bytes examples/genesis/Kholodenko.g | 528 - examples/genesis/Kholodenko.png | Bin 46401 -> 0 bytes examples/genesis/M1719.cspace | 1 - examples/genesis/M1719.g | 151 - examples/genesis/OSC_Cspace.g | 260 - examples/genesis/OSC_diff_vols.g | 219 - examples/genesis/Osc_cspace_ref_model.png | Bin 45319 -> 0 bytes examples/genesis/Repressillator.g | 832 - examples/genesis/acc35.g | 1373 - examples/genesis/acc68.g | 597 - examples/genesis/acc68.png | Bin 152172 -> 0 bytes examples/genesis/chanPhosphByCaMKII.g | 162 - examples/genesis/enz_classical_explicit.g | 138 - examples/genesis/enz_rea.g | 88 - examples/genesis/kkit_objects_example.g | 195 - examples/genesis/reaction.g | 76 - examples/genesis/spineCa_CaM_diffn.g | 696 - examples/genesis/spineCa_diffn.g | 151 - examples/genesis/traff_nn_diff_BIS.g | 262 - examples/genesis/traff_nn_diff_TRI.g | 261 - examples/genesis/traff_nn_diff_TRI.png | Bin 39569 -> 0 bytes examples/hopfield/guiHopfield.py | 214 - examples/hopfield/hopfield.py | 193 - examples/hopfield/hopfield1.py | 132 - examples/hopfield/hopfield_ui.py | 1318 - examples/hopfield/hopfield_ui.ui | 2672 -- examples/hopfield/input.csv | 10 - examples/hopfield/memory1.csv | 10 - examples/hopfield/memory2.csv | 10 - examples/hopfield/test.py | 68 - examples/izhikevich/Izhikevich.py | 537 - examples/izhikevich/demogui_qt.py | 169 - examples/kinetics/test_ksolve.py | 488 - examples/moogli/color_update.py | 108 - examples/moogli/purkinje_simulation.py | 115 - .../moogli/purkinje_simulation_with_rm.py | 187 - .../purkinje_simulation_with_rm_and_graph.py | 219 - examples/moogli/simple_viewing.py | 28 - examples/neuroml/CA1PyramidalCell/CA1.net.xml | 48 - examples/neuroml/CA1PyramidalCell/CA1.py | 51 - .../neuroml/CA1PyramidalCell/CA1_hsolve.py | 57 - .../CA1PyramidalCell/CA1inhomog.net.xml | 48 - .../neuroml/CA1PyramidalCell/CA1soma.net.xml | 48 - examples/neuroml/CA1PyramidalCell/FvsI_CA1.py | 76 - examples/neuroml/CA1PyramidalCell/README | 18 - .../cells_channels/CA1.morph.bad.xml | 12609 --------- .../cells_channels/CA1.morph.original.xml | 12670 --------- .../cells_channels/CA1.morph.xml | 12628 --------- .../cells_channels/CA1_original.morph.xml | 12670 --------- .../cells_channels/CA1inhomog.morph.xml | 12670 --------- .../cells_channels/CA1soma.morph.xml | 126 - .../cells_channels/Gran_KDr_98.xml | 79 - .../cells_channels/Gran_NaF_98.xml | 92 - .../cells_channels/Purkinje_KA.xml | 141 - .../CA1PyramidalCell/cells_channels/README | 14 - .../CA1PyramidalCell/cells_channels/hd.xml | 73 - .../cells_channels/hd_minus73.xml | 73 - .../CA1PyramidalCell/cells_channels/kad.xml | 84 - .../CA1PyramidalCell/cells_channels/kap.xml | 86 - .../CA1PyramidalCell/cells_channels/kdr.xml | 75 - .../CA1PyramidalCell/cells_channels/na3.xml | 107 - .../CA1PyramidalCell/cells_channels/nax.xml | 88 - .../CA1PyramidalCell/cells_channels/pas.xml | 17 - .../neuroml/GranuleCell/FvsI_Granule98.py | 69 - examples/neuroml/GranuleCell/Granule98.py | 62 - .../neuroml/GranuleCell/Granule98_hsolve.py | 67 - .../neuroml/GranuleCell/GranuleCell.net.xml | 51 - examples/neuroml/GranuleCell/README | 10 - .../cells_channels/GranPassiveCond.xml | 33 - .../cells_channels/Gran_CaHVA_98.xml | 82 - .../cells_channels/Gran_CaPool_98.xml | 44 - .../GranuleCell/cells_channels/Gran_H_98.xml | 64 - .../GranuleCell/cells_channels/Gran_KA_98.xml | 78 - .../cells_channels/Gran_KCa_98.xml | 70 - .../cells_channels/Gran_KDr_98.xml | 79 - .../cells_channels/Gran_NaF_98.xml | 92 - .../cells_channels/Granule_98.morph.xml | 160 - examples/neuroml/LIF/FvsI_LIF.py | 59 - examples/neuroml/LIF/LIFinject.net.xml | 43 - examples/neuroml/LIF/LIFxml_firing.py | 66 - examples/neuroml/LIF/LIFxml_firing_hsolve.py | 67 - examples/neuroml/LIF/cells_channels/IaF.xml | 24 - .../neuroml/LIF/cells_channels/LIF.morph.xml | 72 - .../neuroml/LIF/cells_channels/exc_syn.xml | 40 - examples/neuroml/LIF/twoLIFs.net.xml | 51 - examples/neuroml/LIF/twoLIFxml_firing.py | 85 - ...Bpassive_numgloms2_seed100.0_decimated.xml | 688 - .../OBpassive_numgloms3_seed750.0.xml | 8107 ------ .../OBpassive_slice_numgloms2_seed100.0.xml | 3555 --- examples/neuroml/OlfactoryBulbPassive/README | 9 - .../neuroml/OlfactoryBulbPassive/cells/PG.xml | 172 - .../OlfactoryBulbPassive/cells/granule.xml | 89 - .../OlfactoryBulbPassive/cells/mitral.xml | 3386 --- .../PurkinjePassive.net.xml | 55 - .../PurkinjeCellPassivePulseInput/README | 9 - .../cells/purk2.morph.xml | 21570 ---------------- .../PurkinjeCellPassivePulseInput/p.nml | 55 - examples/neuroml/allChannelsCell/README | 11 - .../allChannelsCell/allChannelsCell.net.xml | 52 - .../allChannelsCell/allChannelsCell.py | 68 - .../cells_channels/Golgi_CaHVA.xml | 134 - .../cells_channels/Golgi_CaLVA.xml | 154 - .../cells_channels/GranPassiveCond.xml | 33 - .../cells_channels/Gran_CaHVA_98.xml | 82 - .../cells_channels/Gran_CaPool_98.xml | 44 - .../cells_channels/Gran_H_98.xml | 64 - .../cells_channels/Gran_KA_98.xml | 78 - .../cells_channels/Gran_KCa_98.xml | 70 - .../cells_channels/Gran_KDr_98.xml | 79 - .../cells_channels/Gran_NaF_98.xml | 92 - .../cells_channels/Granule_98.morph.xml | 207 - .../cells_channels/Pyramidal_KM.xml | 92 - .../SolinasEtAl_Golgi/CaHVA_CML.xml | 134 - .../SolinasEtAl_Golgi/CaLVA_CML.xml | 154 - .../SolinasEtAl_Golgi/Golgi_CALC_CML.xml | 73 - .../SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml | 73 - .../SolinasEtAl_Golgi/KAHP_CML.xml | 125 - .../SolinasEtAl_Golgi/KA_CML.xml | 161 - .../SolinasEtAl_Golgi/KC_CML.xml | 112 - .../SolinasEtAl_Golgi/KV_CML.xml | 114 - .../SolinasEtAl_Golgi/Kslow_CML.xml | 121 - .../SolinasEtAl_Golgi/NaP_CML.xml | 127 - .../SolinasEtAl_Golgi/NaR_CML.xml | 130 - .../SolinasEtAl_Golgi/NaT_CML.xml | 151 - .../SolinasEtAl_Golgi/Simple_CML.morph.xml | 159 - .../SolinasEtAl_Golgi/hcn1f_CML.xml | 126 - .../SolinasEtAl_Golgi/hcn1s_CML.xml | 127 - .../SolinasEtAl_Golgi/hcn2f_CML.xml | 137 - .../SolinasEtAl_Golgi/hcn2s_CML.xml | 131 - .../cells_channels/Traub_KA.xml | 109 - .../cells_channels/Traub_KCaAHP.xml | 105 - .../cells_channels/Traub_NaP.xml | 91 - .../lobster_pyloric/Generated.net.3syn.xml | 133 - .../Generated.net.halfcenter.xml | 135 - .../lobster_pyloric/Generated.net.reverse.xml | 133 - .../neuroml/lobster_pyloric/Generated.net.xml | 137 - examples/neuroml/lobster_pyloric/README | 30 - examples/neuroml/lobster_pyloric/STG.png | Bin 14983 -> 0 bytes examples/neuroml/lobster_pyloric/STG_net.py | 156 - .../lobster_pyloric/cells/AB_PD.morph.xml | 143 - .../lobster_pyloric/cells/LP.morph.xml | 146 - .../lobster_pyloric/cells/LP_highH.morph.xml | 146 - .../lobster_pyloric/cells/LP_highH2.morph.xml | 149 - .../lobster_pyloric/cells/PY.morph.xml | 146 - .../lobster_pyloric/channels/CaPool_STG.xml | 56 - .../lobster_pyloric/channels/CaS_STG.xml | 56 - .../lobster_pyloric/channels/CaT_STG.xml | 56 - .../lobster_pyloric/channels/ChannelTest.py | 62 - .../lobster_pyloric/channels/H_STG.xml | 48 - .../lobster_pyloric/channels/KA_STG.xml | 55 - .../lobster_pyloric/channels/KCa_STG.xml | 54 - .../lobster_pyloric/channels/Kd_STG.xml | 48 - .../channels/LeakConductance.xml | 17 - .../lobster_pyloric/channels/Na_STG.xml | 55 - .../lobster_pyloric/synapses/AchSyn_STG.py | 63 - .../synapses/DoubExpSyn_Ach.xml | 28 - .../synapses/DoubExpSyn_Glu.xml | 28 - .../lobster_pyloric/synapses/GluSyn_STG.py | 63 - .../lobster_pyloric/synapses/load_synapses.py | 9 - examples/paper-2015/Fig2_elecModels/Fig2A.py | 527 - .../Fig2_elecModels/Fig2A_analysis.py | 62 - examples/paper-2015/Fig2_elecModels/Fig2C.py | 356 - examples/paper-2015/Fig2_elecModels/Fig2D.py | 104 - examples/paper-2015/Fig2_elecModels/Fig2E.py | 125 - .../Fig2_elecModels/cells/CA1.morph.xml | 12535 --------- .../Fig2_elecModels/cells/K-18.CNG.swc | 1193 - .../Fig2_elecModels/cells/VHC-neuron.CNG.swc | 3022 --- .../Fig2_elecModels/cells/ca1_minimal.p | 58 - .../Fig2_elecModels/cells/h10.CNG.swc | 226 - .../Fig2_elecModels/cells/ko20x-07.CNG.swc | 165 - .../Fig2_elecModels/chans/CA1.morph.xml | 12673 --------- .../paper-2015/Fig2_elecModels/chans/Ca.xml | 62 - .../Fig2_elecModels/chans/CaConc.xml | 36 - .../Fig2_elecModels/chans/DoubExpSyn.xml | 32 - .../Fig2_elecModels/chans/Generated.net.xml | 59 - .../paper-2015/Fig2_elecModels/chans/Glu.xml | 16 - .../Fig2_elecModels/chans/HChannel.xml | 73 - .../Fig2_elecModels/chans/KChannel_HH.xml | 49 - .../Fig2_elecModels/chans/LeakConductance.xml | 17 - .../paper-2015/Fig2_elecModels/chans/NMDA.xml | 16 - .../Fig2_elecModels/chans/NaChannel_HH.xml | 58 - .../paper-2015/Fig2_elecModels/chans/hd.xml | 73 - .../paper-2015/Fig2_elecModels/chans/kad.xml | 84 - .../paper-2015/Fig2_elecModels/chans/kap.xml | 86 - .../paper-2015/Fig2_elecModels/chans/kdr.xml | 75 - .../paper-2015/Fig2_elecModels/chans/na3.xml | 107 - .../paper-2015/Fig2_elecModels/chans/nax.xml | 88 - .../paper-2015/Fig2_elecModels/chans/pas.xml | 17 - examples/paper-2015/Fig3_chemModels/Fig3ABC.g | 832 - examples/paper-2015/Fig3_chemModels/Fig3D.py | 67 - .../paper-2015/Fig3_chemModels/Fig3_NEURON.py | 44 - .../Fig4_ReacDiff/CaMKII_merged77.g | 2076 -- examples/paper-2015/Fig4_ReacDiff/Fig4B.py | 185 - examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py | 242 - examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py | 242 - .../paper-2015/Fig4_ReacDiff/ca1_minimal.p | 58 - .../paper-2015/Fig4_ReacDiff/rxdSpineSize.py | 293 - .../paper-2015/Fig5_CellMultiscale/Fig5A.py | 157 - .../paper-2015/Fig5_CellMultiscale/Fig5BCD.py | 281 - .../Fig5_CellMultiscale/cells/970529c.CNG.swc | 2493 -- .../Fig5_CellMultiscale/cells/CA1.morph.xml | 12535 --------- .../cells/DHC-neuron.CNG.swc | 6764 ----- .../cells/VHC-neuron.CNG.swc | 3022 --- .../Fig5_CellMultiscale/cells/ca1_minimal.p | 58 - .../Fig5_CellMultiscale/cells/h10.CNG.swc | 226 - .../Fig5_CellMultiscale/chans/CA1.morph.xml | 12673 --------- .../Fig5_CellMultiscale/chans/Ca.xml | 62 - .../Fig5_CellMultiscale/chans/CaConc.xml | 36 - .../Fig5_CellMultiscale/chans/DoubExpSyn.xml | 32 - .../chans/Generated.net.xml | 59 - .../Fig5_CellMultiscale/chans/Glu.xml | 16 - .../Fig5_CellMultiscale/chans/HChannel.xml | 73 - .../Fig5_CellMultiscale/chans/NMDA.xml | 16 - .../Fig5_CellMultiscale/chans/hd.xml | 73 - .../Fig5_CellMultiscale/chans/kad.xml | 84 - .../Fig5_CellMultiscale/chans/kap.xml | 86 - .../Fig5_CellMultiscale/chans/kdr.xml | 75 - .../Fig5_CellMultiscale/chans/na3.xml | 107 - .../Fig5_CellMultiscale/chans/nax.xml | 88 - .../Fig5_CellMultiscale/chans/pas.xml | 17 - .../Fig5_CellMultiscale/chem/psd53.g | 477 - .../paper-2015/Fig6_NetMultiscale/Fig6A.py | 503 - .../paper-2015/Fig6_NetMultiscale/Fig6BCDE.py | 939 - .../Fig6_NetMultiscale/ReducedModel.py | 887 - .../cells_channels/CA1.morph.spines.xml | 12658 --------- .../cells_channels/CA1.morph.xml | 12628 --------- .../cells_channels/CA1_nochans.morph.xml | 12535 --------- .../cells_channels/CA1spiny.morph.xml | 13066 ---------- .../cells_channels/CA1spiny7_0.morph.xml | 13118 ---------- .../Fig6_NetMultiscale/cells_channels/Ca.xml | 62 - .../cells_channels/CaConc.xml | 36 - .../cells_channels/Ca_conc.xml | 31 - .../cells_channels/GABA.xml | 16 - .../Fig6_NetMultiscale/cells_channels/Glu.xml | 16 - .../cells_channels/NMDA.xml | 16 - .../cells_channels/Pyramidal_KM.xml | 92 - .../cells_channels/Traub_KA.xml | 109 - .../cells_channels/Traub_KCaAHP.xml | 105 - .../cells_channels/ca1_minimal.p | 58 - .../Fig6_NetMultiscale/cells_channels/hd.xml | 73 - .../cells_channels/hd_minus73.xml | 73 - .../Fig6_NetMultiscale/cells_channels/kad.xml | 84 - .../Fig6_NetMultiscale/cells_channels/kap.xml | 86 - .../Fig6_NetMultiscale/cells_channels/kdr.xml | 75 - .../Fig6_NetMultiscale/cells_channels/na3.xml | 107 - .../Fig6_NetMultiscale/cells_channels/nax.xml | 88 - .../Fig6_NetMultiscale/cells_channels/pas.xml | 17 - .../paper-2015/Fig6_NetMultiscale/psd53.g | 477 - examples/paper-2015/README | 33 - examples/paper-2015/rxdSpineSize.py | 293 - examples/parallelSolver/Fig2_v4.py | 229 - examples/parallelSolver/README | 14 - examples/parallelSolver/abstrModelEqns2.py | 219 - examples/passive/passive_soma.py | 63 - examples/rall_1964/rall64.py | 285 - examples/rall_1964/rall64_graphic.py | 144 - ...GraupnerBrunel2012_STDPfromCaPlasticity.py | 314 - ...GraupnerBrunel2014_LifetimeCaPlasticity.py | 169 - examples/snippets/HsolveInstability.py | 289 - examples/snippets/IntegrateFireZoo.py | 228 - examples/snippets/Izhikevich_with_synapse.py | 157 - examples/snippets/MULTI/TuringInNeuron.py | 203 - examples/snippets/MULTI/ca1_asym.p | 100 - examples/snippets/MULTI/diffonly.g | 160 - examples/snippets/MULTI/diffusionOnly.py | 437 - examples/snippets/MULTI/loadMulti.py | 373 - examples/snippets/MULTI/midchan.py | 345 - examples/snippets/MULTI/mincell.p | 36 - examples/snippets/MULTI/mincell2.p | 37 - examples/snippets/MULTI/minchan.py | 333 - examples/snippets/MULTI/minimal.g | 150 - examples/snippets/MULTI/minimal.py | 310 - examples/snippets/MULTI/multi1.py | 364 - examples/snippets/MULTI/multi1_ee.py | 366 - examples/snippets/MULTI/multi2.py | 379 - examples/snippets/MULTI/multi3.py | 385 - examples/snippets/MULTI/proto18.py | 497 - examples/snippets/MULTI/psd_merged30.g | 1452 -- examples/snippets/MULTI/psd_merged30b.g | 1452 -- examples/snippets/MULTI/psd_merged31d.g | 1488 -- examples/snippets/MULTI/runcell18.py | 71 - examples/snippets/MULTI/x_compt.g | 222 - examples/snippets/MULTI/x_compt.py | 376 - examples/snippets/Osc.cspace | 1 - examples/snippets/RandSpikeStats.py | 105 - examples/snippets/STDP.py | 230 - examples/snippets/analogStimTable.py | 92 - examples/snippets/barrionuevo_cell1zr.CNG.swc | 2267 -- examples/snippets/bidirectionalPlasticity.py | 66 - examples/snippets/branching.p | 34 - examples/snippets/changeFuncExpression.py | 130 - examples/snippets/chemDoseResponse.py | 186 - examples/snippets/compartment_net.py | 174 - examples/snippets/compartment_net_no_array.py | 408 - examples/snippets/compartmental_neuron.py | 128 - examples/snippets/convert_Genesis2Sbml.py | 64 - examples/snippets/crossComptNeuroMesh.py | 241 - examples/snippets/crossComptOscillator.py | 88 - examples/snippets/crossComptSimpleReac.py | 154 - examples/snippets/crossComptSimpleReacGSSA.py | 153 - examples/snippets/cspaceSteadyState.py | 122 - examples/snippets/cubeMeshSigNeur.py | 307 - examples/snippets/cylinderDiffusion.py | 194 - examples/snippets/cylinderMotor.py | 154 - examples/snippets/diffEqSolution.py | 126 - examples/snippets/diffSpinyNeuron.py | 282 - examples/snippets/dotp.p | 100 - examples/snippets/fieldelement.py | 151 - examples/snippets/findChemSteadyState.py | 190 - examples/snippets/func.py | 147 - examples/snippets/funcInputToPools.py | 123 - examples/snippets/funcRateHarmonicOsc.py | 116 - examples/snippets/funcReacLotkaVolterra.py | 141 - examples/snippets/function.py | 195 - examples/snippets/gapjunction.py | 107 - examples/snippets/gssaCylinderDiffusion.py | 199 - examples/snippets/gssaRDspiny.py | 296 - examples/snippets/h10.CNG.swc | 226 - examples/snippets/hdfdemo.py | 99 - examples/snippets/helloMoose.py | 39 - examples/snippets/hhcomp.py | 262 - examples/snippets/insertSpines.py | 84 - .../snippets/insertSpinesWithoutRdesigneur.py | 109 - examples/snippets/interpol.py | 93 - examples/snippets/interpol2d.py | 80 - examples/snippets/intfire.py | 94 - examples/snippets/ionchannel.py | 266 - examples/snippets/lif.py | 135 - examples/snippets/lifcomp.py | 188 - examples/snippets/loadCspaceModel.py | 74 - examples/snippets/loadKineticModel.py | 97 - examples/snippets/loadMorphology.py | 52 - examples/snippets/loadSbmlmodel.py | 110 - examples/snippets/mgblock.py | 153 - examples/snippets/multiComptSigNeur.py | 520 - examples/snippets/multicomp_lif.py | 193 - examples/snippets/multiscaleOneCompt.py | 180 - examples/snippets/neuronFromDotp.py | 157 - examples/snippets/nsdf.py | 175 - examples/snippets/nsdf_vec.py | 182 - examples/snippets/onetoonemsg.py | 74 - examples/snippets/proto18.py | 510 - examples/snippets/pulsegen.py | 78 - examples/snippets/pulsegen2.py | 170 - examples/snippets/pyrun.py | 219 - examples/snippets/pyrun1.py | 219 - examples/snippets/randomspike.py | 131 - examples/snippets/reacDiffBranchingNeuron.py | 235 - examples/snippets/reacDiffConcGradient.py | 161 - examples/snippets/reacDiffSpinyNeuron.py | 297 - examples/snippets/recurrentIntFire.py | 110 - examples/snippets/recurrentLIF.py | 111 - examples/snippets/rxdFuncDiffusion.py | 69 - examples/snippets/rxdFuncDiffusionStoch.py | 71 - examples/snippets/rxdReacDiffusion.py | 79 - examples/snippets/rxdSpineSize.py | 293 - examples/snippets/savemodel.py | 61 - examples/snippets/scaleVolumes.py | 159 - examples/snippets/scriptGssaSolver.py | 123 - examples/snippets/scriptKineticModel.py | 120 - examples/snippets/scriptKineticSolver.py | 124 - examples/snippets/showclocks.py | 72 - examples/snippets/showmsg.py | 22 - examples/snippets/singlemsgcross.py | 95 - examples/snippets/soma.p | 16 - examples/snippets/spinyNeuron.p | 100 - examples/snippets/stargazin_synapse.g | 413 - examples/snippets/startstop.py | 117 - examples/snippets/stimtable.py | 108 - examples/snippets/stochasticLotkaVolterra.py | 151 - examples/snippets/switchKineticSolvers.py | 137 - examples/snippets/symcompartment.py | 109 - examples/snippets/synapse.py | 84 - examples/snippets/synapse_tutorial.py | 188 - examples/snippets/synapse_tutorial_2.ipynb | 309 - examples/snippets/tabledemo.py | 94 - examples/snippets/testHsolve.py | 314 - examples/snippets/testRdesigneur.py | 205 - examples/snippets/testSigNeur.py | 537 - examples/snippets/testWigglySpines.py | 223 - examples/snippets/threading_demo.py | 105 - examples/snippets/timetable.py | 161 - examples/snippets/transportBranchingNeuron.py | 217 - examples/snippets/traub_naf.py | 325 - examples/snippets/tweakingParameters.py | 75 - examples/snippets/twocells.py | 159 - examples/snippets/vclamp.py | 132 - examples/snippets/vectors.py | 62 - examples/snippets/wildcard.py | 162 - examples/squid/.gitignore | 1 - examples/squid/README.txt | 14 - examples/squid/channeleditor.py | 147 - examples/squid/electronics.py | 116 - examples/squid/help.html | 587 - examples/squid/help.org | 242 - examples/squid/images/navigationtoolbar.jpg | Bin 11973 -> 0 bytes examples/squid/squid.py | 376 - examples/squid/squid_demo.py | 899 - examples/squid/squid_setup.py | 118 - examples/squid/test_squid.py | 117 - examples/symcomp/compare_genesis.py | 78 - examples/symcomp/compartments.g | 116 - examples/symcomp/symcomp.g | 46 - examples/symcomp/symcomp.p | 20 - examples/symcomp/symcomp.py | 109 - examples/symcomp/symcomp_readcell.g | 44 - examples/symcomp/symcomp_readcell.py | 92 - examples/traub_2005/.ignore_on_travis | 0 examples/traub_2005/README | 54 - examples/traub_2005/nrn/hoc/utility.hoc | 167 - examples/traub_2005/nrn/test_ar.hoc | 31 - examples/traub_2005/nrn/test_cad.hoc | 40 - examples/traub_2005/nrn/test_cal.hoc | 28 - examples/traub_2005/nrn/test_cat.hoc | 28 - examples/traub_2005/nrn/test_cat_a.hoc | 28 - .../traub_2005/nrn/test_deepaxoaxonic.hoc | 58 - examples/traub_2005/nrn/test_deepbasket.hoc | 58 - examples/traub_2005/nrn/test_deeplts.hoc | 58 - examples/traub_2005/nrn/test_k2.hoc | 29 - examples/traub_2005/nrn/test_ka.hoc | 27 - examples/traub_2005/nrn/test_ka_ib.hoc | 28 - examples/traub_2005/nrn/test_kahp.hoc | 50 - examples/traub_2005/nrn/test_kahp_deeppyr.hoc | 50 - examples/traub_2005/nrn/test_kahp_slower.hoc | 50 - examples/traub_2005/nrn/test_kc.hoc | 50 - examples/traub_2005/nrn/test_kc_fast.hoc | 50 - examples/traub_2005/nrn/test_kdr.hoc | 28 - examples/traub_2005/nrn/test_kdr_fs.hoc | 28 - examples/traub_2005/nrn/test_km.hoc | 28 - examples/traub_2005/nrn/test_naf.hoc | 31 - examples/traub_2005/nrn/test_naf2.hoc | 31 - examples/traub_2005/nrn/test_naf2_nRT.hoc | 29 - examples/traub_2005/nrn/test_naf_tcr.hoc | 31 - examples/traub_2005/nrn/test_nap.hoc | 28 - examples/traub_2005/nrn/test_napf.hoc | 28 - examples/traub_2005/nrn/test_napf_ss.hoc | 31 - examples/traub_2005/nrn/test_napf_tcr.hoc | 28 - examples/traub_2005/nrn/test_nontuftedrs.hoc | 58 - examples/traub_2005/nrn/test_nrt.hoc | 58 - examples/traub_2005/nrn/test_singlecomp.hoc | 92 - .../traub_2005/nrn/test_spinystellate.hoc | 58 - examples/traub_2005/nrn/test_supaxoaxonic.hoc | 58 - examples/traub_2005/nrn/test_supbasket.hoc | 58 - examples/traub_2005/nrn/test_suplts.hoc | 58 - examples/traub_2005/nrn/test_suppyrfrb.hoc | 58 - examples/traub_2005/nrn/test_suppyrrs.hoc | 58 - examples/traub_2005/nrn/test_tcr.hoc | 58 - examples/traub_2005/nrn/test_tcr.old.hoc | 73 - examples/traub_2005/nrn/test_tuftedib.hoc | 58 - examples/traub_2005/nrn/test_tuftedrs.hoc | 58 - examples/traub_2005/nrn/testutils.hoc | 107 - examples/traub_2005/py/archan.py | 57 - examples/traub_2005/py/benchmark.sh | 17 - examples/traub_2005/py/cachans.py | 94 - examples/traub_2005/py/capool.py | 55 - examples/traub_2005/py/cell_test_util.py | 230 - examples/traub_2005/py/cells.py | 530 - examples/traub_2005/py/channel_test_util.py | 96 - examples/traub_2005/py/channelbase.py | 174 - examples/traub_2005/py/channelinit.py | 62 - examples/traub_2005/py/config.py | 161 - examples/traub_2005/py/custom.ini | 202 - examples/traub_2005/py/deadlock_bug.py | 266 - examples/traub_2005/py/defaults.ini | 212 - examples/traub_2005/py/display_morphology.py | 181 - examples/traub_2005/py/dump_f_i_curves.py | 112 - examples/traub_2005/py/fig_a2_fs.py | 126 - examples/traub_2005/py/fig_a3.py | 123 - examples/traub_2005/py/fig_a4c.py | 172 - examples/traub_2005/py/gui.py | 424 - examples/traub_2005/py/kchans.py | 255 - examples/traub_2005/py/nachans.py | 187 - .../traub_2005/py/proto/DeepAxoaxonic.levels | 60 - examples/traub_2005/py/proto/DeepAxoaxonic.p | 319 - .../traub_2005/py/proto/DeepBasket.levels | 60 - examples/traub_2005/py/proto/DeepBasket.p | 319 - examples/traub_2005/py/proto/DeepLTS.levels | 60 - examples/traub_2005/py/proto/DeepLTS.p | 319 - .../traub_2005/py/proto/NontuftedRS.depths | 14 - .../traub_2005/py/proto/NontuftedRS.levels | 52 - examples/traub_2005/py/proto/NontuftedRS.p | 274 - .../traub_2005/py/proto/SpinyStellate.levels | 59 - examples/traub_2005/py/proto/SpinyStellate.p | 319 - .../traub_2005/py/proto/SupAxoaxonic.levels | 59 - examples/traub_2005/py/proto/SupAxoaxonic.p | 303 - examples/traub_2005/py/proto/SupBasket.levels | 60 - examples/traub_2005/py/proto/SupBasket.p | 301 - examples/traub_2005/py/proto/SupLTS.levels | 60 - examples/traub_2005/py/proto/SupLTS.p | 319 - examples/traub_2005/py/proto/SupPyrFRB.depths | 12 - examples/traub_2005/py/proto/SupPyrFRB.levels | 74 - examples/traub_2005/py/proto/SupPyrFRB.p | 378 - examples/traub_2005/py/proto/SupPyrRS.depths | 12 - examples/traub_2005/py/proto/SupPyrRS.levels | 74 - examples/traub_2005/py/proto/SupPyrRS.p | 394 - examples/traub_2005/py/proto/TCR.levels | 138 - examples/traub_2005/py/proto/TCR.p | 709 - examples/traub_2005/py/proto/TuftedIB.levels | 62 - examples/traub_2005/py/proto/TuftedIB.p | 330 - examples/traub_2005/py/proto/TuftedRS.levels | 62 - examples/traub_2005/py/proto/TuftedRS.p | 329 - examples/traub_2005/py/proto/nRT.levels | 60 - examples/traub_2005/py/proto/nRT.p | 324 - examples/traub_2005/py/settings.py | 100 - examples/traub_2005/py/test_archan.py | 63 - examples/traub_2005/py/test_cachans.py | 102 - examples/traub_2005/py/test_capool.py | 129 - examples/traub_2005/py/test_deepaxoaxonic.py | 80 - examples/traub_2005/py/test_deepbasket.py | 80 - examples/traub_2005/py/test_deeplts.py | 80 - examples/traub_2005/py/test_hsolve_tcr.py | 96 - examples/traub_2005/py/test_kchans.py | 309 - examples/traub_2005/py/test_nachans.py | 317 - examples/traub_2005/py/test_nontuftedrs.py | 80 - examples/traub_2005/py/test_nrt.py | 80 - examples/traub_2005/py/test_singlecomp.py | 223 - examples/traub_2005/py/test_spinystellate.py | 80 - examples/traub_2005/py/test_supaxoaxonic.py | 80 - examples/traub_2005/py/test_supbasket.py | 80 - examples/traub_2005/py/test_suplts.py | 80 - examples/traub_2005/py/test_suppyrfrb.py | 80 - examples/traub_2005/py/test_suppyrrs.py | 80 - examples/traub_2005/py/test_tcr.py | 101 - examples/traub_2005/py/test_tuftedib.py | 80 - examples/traub_2005/py/test_tuftedrs.py | 80 - examples/traub_2005/py/testutils.py | 375 - examples/traub_2005/py/trbconfig.py | 150 - examples/traub_2005/py/vclamptest.py | 157 - .../tutorials/ChemicalBistables/19085.cspace | 1 - .../ChemicalBistables/doseResponse.py | 122 - .../ChemicalBistables/findSteadyState.py | 123 - .../tutorials/ChemicalBistables/mapkFB.png | Bin 155914 -> 0 bytes .../tutorials/ChemicalBistables/mapkFB.py | 80 - .../tutorials/ChemicalBistables/propBis.png | Bin 32574 -> 0 bytes .../ChemicalBistables/propagationBis.py | 168 - .../ChemicalBistables/scaleVolumes.py | 157 - .../tutorials/ChemicalBistables/simpleBis.py | 140 - .../tutorials/ChemicalBistables/strongBis.png | Bin 28131 -> 0 bytes .../tutorials/ChemicalBistables/strongBis.py | 90 - .../ChemicalOscillators/Kholodenko_tut.png | Bin 6257 -> 0 bytes .../ChemicalOscillators/TuringOneDim.py | 169 - .../ChemicalOscillators/relaxOsc_tut.png | Bin 49157 -> 0 bytes .../ChemicalOscillators/relaxationOsc.py | 89 - .../ChemicalOscillators/repressillator.py | 89 - .../ChemicalOscillators/repressillatorOsc.png | Bin 12364 -> 0 bytes .../ChemicalOscillators/slowFbOsc.py | 91 - .../ChemicalOscillators/turingPatternTut.png | Bin 107356 -> 0 bytes .../ExcInhNet_Ostojic2014_Brunel2000.py | 395 - .../ExcInhNet_Ostojic2014_Brunel2000_brian.py | 253 - ...ExcInhNet_Ostojic2014_Brunel2000_brian2.py | 243 - ...2014_Brunel2000_brian2_slow_2pops_4syns.py | 262 - .../ExcInhNet_HigginsGraupnerBrunel2014.py | 784 - .../Rdesigneur/cells/970529c.CNG.swc | 2493 -- .../tutorials/Rdesigneur/cells/CA1.morph.xml | 12535 --------- .../Rdesigneur/cells/DHC-neuron.CNG.swc | 6764 ----- .../Rdesigneur/cells/VHC-neuron.CNG.swc | 3022 --- .../cells/barrionuevo_cell1zr.CNG.swc | 2267 -- .../tutorials/Rdesigneur/cells/ca1_minimal.p | 58 - .../tutorials/Rdesigneur/cells/h10.CNG.swc | 226 - .../tutorials/Rdesigneur/chans/CA1.morph.xml | 12673 --------- examples/tutorials/Rdesigneur/chans/Ca.xml | 62 - .../tutorials/Rdesigneur/chans/CaConc.xml | 36 - .../tutorials/Rdesigneur/chans/DoubExpSyn.xml | 32 - .../Rdesigneur/chans/Generated.net.xml | 59 - examples/tutorials/Rdesigneur/chans/Glu.xml | 16 - .../tutorials/Rdesigneur/chans/HChannel.xml | 73 - examples/tutorials/Rdesigneur/chans/NMDA.xml | 16 - examples/tutorials/Rdesigneur/chans/hd.xml | 73 - examples/tutorials/Rdesigneur/chans/kad.xml | 84 - examples/tutorials/Rdesigneur/chans/kap.xml | 86 - examples/tutorials/Rdesigneur/chans/kdr.xml | 75 - examples/tutorials/Rdesigneur/chans/na3.xml | 107 - examples/tutorials/Rdesigneur/chans/nax.xml | 88 - examples/tutorials/Rdesigneur/chans/pas.xml | 17 - examples/tutorials/Rdesigneur/chem/psd52.g | 488 - examples/tutorials/Rdesigneur/chem/psd53.g | 477 - .../tutorials/Rdesigneur/chem/psd53_old.g | 474 - examples/tutorials/Rdesigneur/rdes_ex1.py | 5 - examples/tutorials/Rdesigneur/rdes_ex10.py | 41 - examples/tutorials/Rdesigneur/rdes_ex2.py | 12 - examples/tutorials/Rdesigneur/rdes_ex3.1.py | 54 - examples/tutorials/Rdesigneur/rdes_ex3.2.py | 69 - examples/tutorials/Rdesigneur/rdes_ex3.py | 17 - examples/tutorials/Rdesigneur/rdes_ex4.py | 19 - examples/tutorials/Rdesigneur/rdes_ex5.py | 19 - examples/tutorials/Rdesigneur/rdes_ex6.py | 34 - examples/tutorials/Rdesigneur/rdes_ex7.py | 14 - examples/tutorials/Rdesigneur/rdes_ex8.py | 37 - examples/tutorials/Rdesigneur/rdes_ex9.py | 40 - examples/unsorted/ksolve_with_heavy_load.py | 106 - examples/unsorted/test_function.py | 26 - examples/unsorted/test_gsolve.py | 53 - examples/util/moogli_viewer.py | 301 - examples/util/pymoose.py | 45 - mgui/MWindow.py | 3 +- 606 files changed, 2 insertions(+), 363130 deletions(-) delete mode 100644 examples/LICENSE delete mode 100644 examples/MemoryNetworks/bidirectional_plastic_switch.py delete mode 100644 examples/MemoryNetworks/stargazin_synapse.g delete mode 100644 examples/_travis/.ignore_on_travis delete mode 100644 examples/_travis/colors.sh delete mode 100755 examples/_travis/find_scripts_to_run.sh delete mode 100644 examples/_travis/matplotlibrc delete mode 100755 examples/_travis/run_scripts.sh delete mode 100644 examples/genesis/00001-sbml-l3v1.xml delete mode 100644 examples/genesis/EGFR_MAPK_58.g delete mode 100644 examples/genesis/EGFR_MAPK_58.png delete mode 100644 examples/genesis/Kholodenko.g delete mode 100644 examples/genesis/Kholodenko.png delete mode 100644 examples/genesis/M1719.cspace delete mode 100644 examples/genesis/M1719.g delete mode 100644 examples/genesis/OSC_Cspace.g delete mode 100644 examples/genesis/OSC_diff_vols.g delete mode 100644 examples/genesis/Osc_cspace_ref_model.png delete mode 100644 examples/genesis/Repressillator.g delete mode 100644 examples/genesis/acc35.g delete mode 100644 examples/genesis/acc68.g delete mode 100644 examples/genesis/acc68.png delete mode 100644 examples/genesis/chanPhosphByCaMKII.g delete mode 100644 examples/genesis/enz_classical_explicit.g delete mode 100644 examples/genesis/enz_rea.g delete mode 100644 examples/genesis/kkit_objects_example.g delete mode 100644 examples/genesis/reaction.g delete mode 100644 examples/genesis/spineCa_CaM_diffn.g delete mode 100644 examples/genesis/spineCa_diffn.g delete mode 100755 examples/genesis/traff_nn_diff_BIS.g delete mode 100644 examples/genesis/traff_nn_diff_TRI.g delete mode 100644 examples/genesis/traff_nn_diff_TRI.png delete mode 100644 examples/hopfield/guiHopfield.py delete mode 100644 examples/hopfield/hopfield.py delete mode 100644 examples/hopfield/hopfield1.py delete mode 100644 examples/hopfield/hopfield_ui.py delete mode 100644 examples/hopfield/hopfield_ui.ui delete mode 100644 examples/hopfield/input.csv delete mode 100644 examples/hopfield/memory1.csv delete mode 100644 examples/hopfield/memory2.csv delete mode 100644 examples/hopfield/test.py delete mode 100644 examples/izhikevich/Izhikevich.py delete mode 100644 examples/izhikevich/demogui_qt.py delete mode 100644 examples/kinetics/test_ksolve.py delete mode 100644 examples/moogli/color_update.py delete mode 100644 examples/moogli/purkinje_simulation.py delete mode 100644 examples/moogli/purkinje_simulation_with_rm.py delete mode 100644 examples/moogli/purkinje_simulation_with_rm_and_graph.py delete mode 100644 examples/moogli/simple_viewing.py delete mode 100644 examples/neuroml/CA1PyramidalCell/CA1.net.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/CA1.py delete mode 100644 examples/neuroml/CA1PyramidalCell/CA1_hsolve.py delete mode 100644 examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/CA1soma.net.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/FvsI_CA1.py delete mode 100644 examples/neuroml/CA1PyramidalCell/README delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/README delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml delete mode 100644 examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml delete mode 100644 examples/neuroml/GranuleCell/FvsI_Granule98.py delete mode 100644 examples/neuroml/GranuleCell/Granule98.py delete mode 100644 examples/neuroml/GranuleCell/Granule98_hsolve.py delete mode 100644 examples/neuroml/GranuleCell/GranuleCell.net.xml delete mode 100644 examples/neuroml/GranuleCell/README delete mode 100644 examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml delete mode 100644 examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml delete mode 100644 examples/neuroml/LIF/FvsI_LIF.py delete mode 100644 examples/neuroml/LIF/LIFinject.net.xml delete mode 100644 examples/neuroml/LIF/LIFxml_firing.py delete mode 100644 examples/neuroml/LIF/LIFxml_firing_hsolve.py delete mode 100644 examples/neuroml/LIF/cells_channels/IaF.xml delete mode 100644 examples/neuroml/LIF/cells_channels/LIF.morph.xml delete mode 100644 examples/neuroml/LIF/cells_channels/exc_syn.xml delete mode 100644 examples/neuroml/LIF/twoLIFs.net.xml delete mode 100644 examples/neuroml/LIF/twoLIFxml_firing.py delete mode 100644 examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml delete mode 100644 examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml delete mode 100644 examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml delete mode 100644 examples/neuroml/OlfactoryBulbPassive/README delete mode 100644 examples/neuroml/OlfactoryBulbPassive/cells/PG.xml delete mode 100755 examples/neuroml/OlfactoryBulbPassive/cells/granule.xml delete mode 100644 examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml delete mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml delete mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/README delete mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml delete mode 100644 examples/neuroml/PurkinjeCellPassivePulseInput/p.nml delete mode 100644 examples/neuroml/allChannelsCell/README delete mode 100644 examples/neuroml/allChannelsCell/allChannelsCell.net.xml delete mode 100644 examples/neuroml/allChannelsCell/allChannelsCell.py delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml delete mode 100644 examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml delete mode 100644 examples/neuroml/lobster_pyloric/Generated.net.3syn.xml delete mode 100644 examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml delete mode 100644 examples/neuroml/lobster_pyloric/Generated.net.reverse.xml delete mode 100644 examples/neuroml/lobster_pyloric/Generated.net.xml delete mode 100644 examples/neuroml/lobster_pyloric/README delete mode 100644 examples/neuroml/lobster_pyloric/STG.png delete mode 100644 examples/neuroml/lobster_pyloric/STG_net.py delete mode 100644 examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml delete mode 100644 examples/neuroml/lobster_pyloric/cells/LP.morph.xml delete mode 100644 examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml delete mode 100644 examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml delete mode 100644 examples/neuroml/lobster_pyloric/cells/PY.morph.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/CaS_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/CaT_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/ChannelTest.py delete mode 100644 examples/neuroml/lobster_pyloric/channels/H_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/KA_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/KCa_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/Kd_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/LeakConductance.xml delete mode 100644 examples/neuroml/lobster_pyloric/channels/Na_STG.xml delete mode 100644 examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py delete mode 100644 examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml delete mode 100644 examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml delete mode 100644 examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py delete mode 100644 examples/neuroml/lobster_pyloric/synapses/load_synapses.py delete mode 100644 examples/paper-2015/Fig2_elecModels/Fig2A.py delete mode 100644 examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py delete mode 100644 examples/paper-2015/Fig2_elecModels/Fig2C.py delete mode 100644 examples/paper-2015/Fig2_elecModels/Fig2D.py delete mode 100644 examples/paper-2015/Fig2_elecModels/Fig2E.py delete mode 100644 examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc delete mode 100644 examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc delete mode 100644 examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p delete mode 100644 examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc delete mode 100644 examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/Ca.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/CaConc.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/Glu.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/HChannel.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/NMDA.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/hd.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/kad.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/kap.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/kdr.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/na3.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/nax.xml delete mode 100644 examples/paper-2015/Fig2_elecModels/chans/pas.xml delete mode 100644 examples/paper-2015/Fig3_chemModels/Fig3ABC.g delete mode 100644 examples/paper-2015/Fig3_chemModels/Fig3D.py delete mode 100644 examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py delete mode 100644 examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g delete mode 100644 examples/paper-2015/Fig4_ReacDiff/Fig4B.py delete mode 100644 examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py delete mode 100644 examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py delete mode 100644 examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p delete mode 100644 examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/Fig5A.py delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml delete mode 100644 examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/Fig6A.py delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml delete mode 100644 examples/paper-2015/Fig6_NetMultiscale/psd53.g delete mode 100644 examples/paper-2015/README delete mode 100644 examples/paper-2015/rxdSpineSize.py delete mode 100644 examples/parallelSolver/Fig2_v4.py delete mode 100644 examples/parallelSolver/README delete mode 100644 examples/parallelSolver/abstrModelEqns2.py delete mode 100644 examples/passive/passive_soma.py delete mode 100755 examples/rall_1964/rall64.py delete mode 100755 examples/rall_1964/rall64_graphic.py delete mode 100644 examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py delete mode 100644 examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py delete mode 100644 examples/snippets/HsolveInstability.py delete mode 100644 examples/snippets/IntegrateFireZoo.py delete mode 100644 examples/snippets/Izhikevich_with_synapse.py delete mode 100644 examples/snippets/MULTI/TuringInNeuron.py delete mode 100644 examples/snippets/MULTI/ca1_asym.p delete mode 100644 examples/snippets/MULTI/diffonly.g delete mode 100644 examples/snippets/MULTI/diffusionOnly.py delete mode 100644 examples/snippets/MULTI/loadMulti.py delete mode 100644 examples/snippets/MULTI/midchan.py delete mode 100644 examples/snippets/MULTI/mincell.p delete mode 100644 examples/snippets/MULTI/mincell2.p delete mode 100644 examples/snippets/MULTI/minchan.py delete mode 100644 examples/snippets/MULTI/minimal.g delete mode 100644 examples/snippets/MULTI/minimal.py delete mode 100644 examples/snippets/MULTI/multi1.py delete mode 100644 examples/snippets/MULTI/multi1_ee.py delete mode 100644 examples/snippets/MULTI/multi2.py delete mode 100644 examples/snippets/MULTI/multi3.py delete mode 100644 examples/snippets/MULTI/proto18.py delete mode 100644 examples/snippets/MULTI/psd_merged30.g delete mode 100644 examples/snippets/MULTI/psd_merged30b.g delete mode 100644 examples/snippets/MULTI/psd_merged31d.g delete mode 100644 examples/snippets/MULTI/runcell18.py delete mode 100644 examples/snippets/MULTI/x_compt.g delete mode 100644 examples/snippets/MULTI/x_compt.py delete mode 100644 examples/snippets/Osc.cspace delete mode 100644 examples/snippets/RandSpikeStats.py delete mode 100644 examples/snippets/STDP.py delete mode 100644 examples/snippets/analogStimTable.py delete mode 100644 examples/snippets/barrionuevo_cell1zr.CNG.swc delete mode 100644 examples/snippets/bidirectionalPlasticity.py delete mode 100644 examples/snippets/branching.p delete mode 100644 examples/snippets/changeFuncExpression.py delete mode 100644 examples/snippets/chemDoseResponse.py delete mode 100644 examples/snippets/compartment_net.py delete mode 100644 examples/snippets/compartment_net_no_array.py delete mode 100644 examples/snippets/compartmental_neuron.py delete mode 100644 examples/snippets/convert_Genesis2Sbml.py delete mode 100644 examples/snippets/crossComptNeuroMesh.py delete mode 100644 examples/snippets/crossComptOscillator.py delete mode 100644 examples/snippets/crossComptSimpleReac.py delete mode 100644 examples/snippets/crossComptSimpleReacGSSA.py delete mode 100644 examples/snippets/cspaceSteadyState.py delete mode 100644 examples/snippets/cubeMeshSigNeur.py delete mode 100644 examples/snippets/cylinderDiffusion.py delete mode 100644 examples/snippets/cylinderMotor.py delete mode 100644 examples/snippets/diffEqSolution.py delete mode 100644 examples/snippets/diffSpinyNeuron.py delete mode 100644 examples/snippets/dotp.p delete mode 100644 examples/snippets/fieldelement.py delete mode 100644 examples/snippets/findChemSteadyState.py delete mode 100644 examples/snippets/func.py delete mode 100644 examples/snippets/funcInputToPools.py delete mode 100644 examples/snippets/funcRateHarmonicOsc.py delete mode 100644 examples/snippets/funcReacLotkaVolterra.py delete mode 100644 examples/snippets/function.py delete mode 100644 examples/snippets/gapjunction.py delete mode 100644 examples/snippets/gssaCylinderDiffusion.py delete mode 100644 examples/snippets/gssaRDspiny.py delete mode 100644 examples/snippets/h10.CNG.swc delete mode 100644 examples/snippets/hdfdemo.py delete mode 100644 examples/snippets/helloMoose.py delete mode 100644 examples/snippets/hhcomp.py delete mode 100644 examples/snippets/insertSpines.py delete mode 100644 examples/snippets/insertSpinesWithoutRdesigneur.py delete mode 100644 examples/snippets/interpol.py delete mode 100644 examples/snippets/interpol2d.py delete mode 100644 examples/snippets/intfire.py delete mode 100644 examples/snippets/ionchannel.py delete mode 100644 examples/snippets/lif.py delete mode 100644 examples/snippets/lifcomp.py delete mode 100644 examples/snippets/loadCspaceModel.py delete mode 100644 examples/snippets/loadKineticModel.py delete mode 100644 examples/snippets/loadMorphology.py delete mode 100644 examples/snippets/loadSbmlmodel.py delete mode 100644 examples/snippets/mgblock.py delete mode 100644 examples/snippets/multiComptSigNeur.py delete mode 100644 examples/snippets/multicomp_lif.py delete mode 100644 examples/snippets/multiscaleOneCompt.py delete mode 100644 examples/snippets/neuronFromDotp.py delete mode 100644 examples/snippets/nsdf.py delete mode 100644 examples/snippets/nsdf_vec.py delete mode 100644 examples/snippets/onetoonemsg.py delete mode 100644 examples/snippets/proto18.py delete mode 100644 examples/snippets/pulsegen.py delete mode 100644 examples/snippets/pulsegen2.py delete mode 100644 examples/snippets/pyrun.py delete mode 100644 examples/snippets/pyrun1.py delete mode 100644 examples/snippets/randomspike.py delete mode 100644 examples/snippets/reacDiffBranchingNeuron.py delete mode 100644 examples/snippets/reacDiffConcGradient.py delete mode 100644 examples/snippets/reacDiffSpinyNeuron.py delete mode 100644 examples/snippets/recurrentIntFire.py delete mode 100644 examples/snippets/recurrentLIF.py delete mode 100644 examples/snippets/rxdFuncDiffusion.py delete mode 100644 examples/snippets/rxdFuncDiffusionStoch.py delete mode 100644 examples/snippets/rxdReacDiffusion.py delete mode 100644 examples/snippets/rxdSpineSize.py delete mode 100644 examples/snippets/savemodel.py delete mode 100644 examples/snippets/scaleVolumes.py delete mode 100644 examples/snippets/scriptGssaSolver.py delete mode 100644 examples/snippets/scriptKineticModel.py delete mode 100644 examples/snippets/scriptKineticSolver.py delete mode 100644 examples/snippets/showclocks.py delete mode 100644 examples/snippets/showmsg.py delete mode 100644 examples/snippets/singlemsgcross.py delete mode 100644 examples/snippets/soma.p delete mode 100644 examples/snippets/spinyNeuron.p delete mode 100644 examples/snippets/stargazin_synapse.g delete mode 100644 examples/snippets/startstop.py delete mode 100644 examples/snippets/stimtable.py delete mode 100644 examples/snippets/stochasticLotkaVolterra.py delete mode 100644 examples/snippets/switchKineticSolvers.py delete mode 100644 examples/snippets/symcompartment.py delete mode 100644 examples/snippets/synapse.py delete mode 100644 examples/snippets/synapse_tutorial.py delete mode 100644 examples/snippets/synapse_tutorial_2.ipynb delete mode 100644 examples/snippets/tabledemo.py delete mode 100644 examples/snippets/testHsolve.py delete mode 100644 examples/snippets/testRdesigneur.py delete mode 100644 examples/snippets/testSigNeur.py delete mode 100644 examples/snippets/testWigglySpines.py delete mode 100644 examples/snippets/threading_demo.py delete mode 100644 examples/snippets/timetable.py delete mode 100644 examples/snippets/transportBranchingNeuron.py delete mode 100644 examples/snippets/traub_naf.py delete mode 100644 examples/snippets/tweakingParameters.py delete mode 100644 examples/snippets/twocells.py delete mode 100644 examples/snippets/vclamp.py delete mode 100644 examples/snippets/vectors.py delete mode 100644 examples/snippets/wildcard.py delete mode 100644 examples/squid/.gitignore delete mode 100644 examples/squid/README.txt delete mode 100644 examples/squid/channeleditor.py delete mode 100644 examples/squid/electronics.py delete mode 100644 examples/squid/help.html delete mode 100644 examples/squid/help.org delete mode 100644 examples/squid/images/navigationtoolbar.jpg delete mode 100644 examples/squid/squid.py delete mode 100644 examples/squid/squid_demo.py delete mode 100644 examples/squid/squid_setup.py delete mode 100644 examples/squid/test_squid.py delete mode 100644 examples/symcomp/compare_genesis.py delete mode 100644 examples/symcomp/compartments.g delete mode 100644 examples/symcomp/symcomp.g delete mode 100644 examples/symcomp/symcomp.p delete mode 100644 examples/symcomp/symcomp.py delete mode 100644 examples/symcomp/symcomp_readcell.g delete mode 100644 examples/symcomp/symcomp_readcell.py delete mode 100644 examples/traub_2005/.ignore_on_travis delete mode 100644 examples/traub_2005/README delete mode 100644 examples/traub_2005/nrn/hoc/utility.hoc delete mode 100644 examples/traub_2005/nrn/test_ar.hoc delete mode 100644 examples/traub_2005/nrn/test_cad.hoc delete mode 100644 examples/traub_2005/nrn/test_cal.hoc delete mode 100644 examples/traub_2005/nrn/test_cat.hoc delete mode 100644 examples/traub_2005/nrn/test_cat_a.hoc delete mode 100644 examples/traub_2005/nrn/test_deepaxoaxonic.hoc delete mode 100644 examples/traub_2005/nrn/test_deepbasket.hoc delete mode 100644 examples/traub_2005/nrn/test_deeplts.hoc delete mode 100644 examples/traub_2005/nrn/test_k2.hoc delete mode 100644 examples/traub_2005/nrn/test_ka.hoc delete mode 100644 examples/traub_2005/nrn/test_ka_ib.hoc delete mode 100644 examples/traub_2005/nrn/test_kahp.hoc delete mode 100644 examples/traub_2005/nrn/test_kahp_deeppyr.hoc delete mode 100644 examples/traub_2005/nrn/test_kahp_slower.hoc delete mode 100644 examples/traub_2005/nrn/test_kc.hoc delete mode 100644 examples/traub_2005/nrn/test_kc_fast.hoc delete mode 100644 examples/traub_2005/nrn/test_kdr.hoc delete mode 100644 examples/traub_2005/nrn/test_kdr_fs.hoc delete mode 100644 examples/traub_2005/nrn/test_km.hoc delete mode 100644 examples/traub_2005/nrn/test_naf.hoc delete mode 100644 examples/traub_2005/nrn/test_naf2.hoc delete mode 100644 examples/traub_2005/nrn/test_naf2_nRT.hoc delete mode 100644 examples/traub_2005/nrn/test_naf_tcr.hoc delete mode 100644 examples/traub_2005/nrn/test_nap.hoc delete mode 100644 examples/traub_2005/nrn/test_napf.hoc delete mode 100644 examples/traub_2005/nrn/test_napf_ss.hoc delete mode 100644 examples/traub_2005/nrn/test_napf_tcr.hoc delete mode 100644 examples/traub_2005/nrn/test_nontuftedrs.hoc delete mode 100644 examples/traub_2005/nrn/test_nrt.hoc delete mode 100644 examples/traub_2005/nrn/test_singlecomp.hoc delete mode 100644 examples/traub_2005/nrn/test_spinystellate.hoc delete mode 100644 examples/traub_2005/nrn/test_supaxoaxonic.hoc delete mode 100644 examples/traub_2005/nrn/test_supbasket.hoc delete mode 100644 examples/traub_2005/nrn/test_suplts.hoc delete mode 100644 examples/traub_2005/nrn/test_suppyrfrb.hoc delete mode 100644 examples/traub_2005/nrn/test_suppyrrs.hoc delete mode 100644 examples/traub_2005/nrn/test_tcr.hoc delete mode 100644 examples/traub_2005/nrn/test_tcr.old.hoc delete mode 100644 examples/traub_2005/nrn/test_tuftedib.hoc delete mode 100644 examples/traub_2005/nrn/test_tuftedrs.hoc delete mode 100644 examples/traub_2005/nrn/testutils.hoc delete mode 100644 examples/traub_2005/py/archan.py delete mode 100755 examples/traub_2005/py/benchmark.sh delete mode 100644 examples/traub_2005/py/cachans.py delete mode 100644 examples/traub_2005/py/capool.py delete mode 100644 examples/traub_2005/py/cell_test_util.py delete mode 100644 examples/traub_2005/py/cells.py delete mode 100644 examples/traub_2005/py/channel_test_util.py delete mode 100644 examples/traub_2005/py/channelbase.py delete mode 100644 examples/traub_2005/py/channelinit.py delete mode 100644 examples/traub_2005/py/config.py delete mode 100644 examples/traub_2005/py/custom.ini delete mode 100644 examples/traub_2005/py/deadlock_bug.py delete mode 100644 examples/traub_2005/py/defaults.ini delete mode 100644 examples/traub_2005/py/display_morphology.py delete mode 100644 examples/traub_2005/py/dump_f_i_curves.py delete mode 100644 examples/traub_2005/py/fig_a2_fs.py delete mode 100644 examples/traub_2005/py/fig_a3.py delete mode 100644 examples/traub_2005/py/fig_a4c.py delete mode 100644 examples/traub_2005/py/gui.py delete mode 100644 examples/traub_2005/py/kchans.py delete mode 100644 examples/traub_2005/py/nachans.py delete mode 100644 examples/traub_2005/py/proto/DeepAxoaxonic.levels delete mode 100644 examples/traub_2005/py/proto/DeepAxoaxonic.p delete mode 100644 examples/traub_2005/py/proto/DeepBasket.levels delete mode 100644 examples/traub_2005/py/proto/DeepBasket.p delete mode 100644 examples/traub_2005/py/proto/DeepLTS.levels delete mode 100644 examples/traub_2005/py/proto/DeepLTS.p delete mode 100644 examples/traub_2005/py/proto/NontuftedRS.depths delete mode 100644 examples/traub_2005/py/proto/NontuftedRS.levels delete mode 100644 examples/traub_2005/py/proto/NontuftedRS.p delete mode 100644 examples/traub_2005/py/proto/SpinyStellate.levels delete mode 100644 examples/traub_2005/py/proto/SpinyStellate.p delete mode 100644 examples/traub_2005/py/proto/SupAxoaxonic.levels delete mode 100644 examples/traub_2005/py/proto/SupAxoaxonic.p delete mode 100644 examples/traub_2005/py/proto/SupBasket.levels delete mode 100644 examples/traub_2005/py/proto/SupBasket.p delete mode 100644 examples/traub_2005/py/proto/SupLTS.levels delete mode 100644 examples/traub_2005/py/proto/SupLTS.p delete mode 100644 examples/traub_2005/py/proto/SupPyrFRB.depths delete mode 100644 examples/traub_2005/py/proto/SupPyrFRB.levels delete mode 100644 examples/traub_2005/py/proto/SupPyrFRB.p delete mode 100644 examples/traub_2005/py/proto/SupPyrRS.depths delete mode 100644 examples/traub_2005/py/proto/SupPyrRS.levels delete mode 100644 examples/traub_2005/py/proto/SupPyrRS.p delete mode 100644 examples/traub_2005/py/proto/TCR.levels delete mode 100644 examples/traub_2005/py/proto/TCR.p delete mode 100644 examples/traub_2005/py/proto/TuftedIB.levels delete mode 100644 examples/traub_2005/py/proto/TuftedIB.p delete mode 100644 examples/traub_2005/py/proto/TuftedRS.levels delete mode 100644 examples/traub_2005/py/proto/TuftedRS.p delete mode 100644 examples/traub_2005/py/proto/nRT.levels delete mode 100644 examples/traub_2005/py/proto/nRT.p delete mode 100644 examples/traub_2005/py/settings.py delete mode 100644 examples/traub_2005/py/test_archan.py delete mode 100644 examples/traub_2005/py/test_cachans.py delete mode 100644 examples/traub_2005/py/test_capool.py delete mode 100644 examples/traub_2005/py/test_deepaxoaxonic.py delete mode 100644 examples/traub_2005/py/test_deepbasket.py delete mode 100644 examples/traub_2005/py/test_deeplts.py delete mode 100644 examples/traub_2005/py/test_hsolve_tcr.py delete mode 100644 examples/traub_2005/py/test_kchans.py delete mode 100644 examples/traub_2005/py/test_nachans.py delete mode 100644 examples/traub_2005/py/test_nontuftedrs.py delete mode 100644 examples/traub_2005/py/test_nrt.py delete mode 100644 examples/traub_2005/py/test_singlecomp.py delete mode 100644 examples/traub_2005/py/test_spinystellate.py delete mode 100644 examples/traub_2005/py/test_supaxoaxonic.py delete mode 100644 examples/traub_2005/py/test_supbasket.py delete mode 100644 examples/traub_2005/py/test_suplts.py delete mode 100644 examples/traub_2005/py/test_suppyrfrb.py delete mode 100644 examples/traub_2005/py/test_suppyrrs.py delete mode 100644 examples/traub_2005/py/test_tcr.py delete mode 100644 examples/traub_2005/py/test_tuftedib.py delete mode 100644 examples/traub_2005/py/test_tuftedrs.py delete mode 100644 examples/traub_2005/py/testutils.py delete mode 100644 examples/traub_2005/py/trbconfig.py delete mode 100644 examples/traub_2005/py/vclamptest.py delete mode 100644 examples/tutorials/ChemicalBistables/19085.cspace delete mode 100644 examples/tutorials/ChemicalBistables/doseResponse.py delete mode 100644 examples/tutorials/ChemicalBistables/findSteadyState.py delete mode 100644 examples/tutorials/ChemicalBistables/mapkFB.png delete mode 100644 examples/tutorials/ChemicalBistables/mapkFB.py delete mode 100644 examples/tutorials/ChemicalBistables/propBis.png delete mode 100644 examples/tutorials/ChemicalBistables/propagationBis.py delete mode 100644 examples/tutorials/ChemicalBistables/scaleVolumes.py delete mode 100644 examples/tutorials/ChemicalBistables/simpleBis.py delete mode 100644 examples/tutorials/ChemicalBistables/strongBis.png delete mode 100644 examples/tutorials/ChemicalBistables/strongBis.py delete mode 100644 examples/tutorials/ChemicalOscillators/Kholodenko_tut.png delete mode 100644 examples/tutorials/ChemicalOscillators/TuringOneDim.py delete mode 100644 examples/tutorials/ChemicalOscillators/relaxOsc_tut.png delete mode 100644 examples/tutorials/ChemicalOscillators/relaxationOsc.py delete mode 100644 examples/tutorials/ChemicalOscillators/repressillator.py delete mode 100644 examples/tutorials/ChemicalOscillators/repressillatorOsc.png delete mode 100644 examples/tutorials/ChemicalOscillators/slowFbOsc.py delete mode 100644 examples/tutorials/ChemicalOscillators/turingPatternTut.png delete mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py delete mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py delete mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py delete mode 100644 examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py delete mode 100644 examples/tutorials/ExcInhNetCaPlasticity/ExcInhNet_HigginsGraupnerBrunel2014.py delete mode 100644 examples/tutorials/Rdesigneur/cells/970529c.CNG.swc delete mode 100644 examples/tutorials/Rdesigneur/cells/CA1.morph.xml delete mode 100644 examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc delete mode 100644 examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc delete mode 100644 examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc delete mode 100644 examples/tutorials/Rdesigneur/cells/ca1_minimal.p delete mode 100644 examples/tutorials/Rdesigneur/cells/h10.CNG.swc delete mode 100644 examples/tutorials/Rdesigneur/chans/CA1.morph.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/Ca.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/CaConc.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/Generated.net.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/Glu.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/HChannel.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/NMDA.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/hd.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/kad.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/kap.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/kdr.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/na3.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/nax.xml delete mode 100644 examples/tutorials/Rdesigneur/chans/pas.xml delete mode 100644 examples/tutorials/Rdesigneur/chem/psd52.g delete mode 100644 examples/tutorials/Rdesigneur/chem/psd53.g delete mode 100644 examples/tutorials/Rdesigneur/chem/psd53_old.g delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex1.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex10.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex2.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex3.1.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex3.2.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex3.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex4.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex5.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex6.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex7.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex8.py delete mode 100644 examples/tutorials/Rdesigneur/rdes_ex9.py delete mode 100644 examples/unsorted/ksolve_with_heavy_load.py delete mode 100644 examples/unsorted/test_function.py delete mode 100644 examples/unsorted/test_gsolve.py delete mode 100644 examples/util/moogli_viewer.py delete mode 100644 examples/util/pymoose.py diff --git a/examples/LICENSE b/examples/LICENSE deleted file mode 100644 index 8cdb845..0000000 --- a/examples/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. - diff --git a/examples/MemoryNetworks/bidirectional_plastic_switch.py b/examples/MemoryNetworks/bidirectional_plastic_switch.py deleted file mode 100644 index 94521ff..0000000 --- a/examples/MemoryNetworks/bidirectional_plastic_switch.py +++ /dev/null @@ -1,93 +0,0 @@ -"""bidirectional_plastic_switch.py: - -Apply sequences of random input to this switch and plot the correlation between output -sequences. - -""" - -__author__ = "Dilawar Singh" -__copyright__ = "Copyright 2015, Dilawar Singh and NCBS Bangalore" -__credits__ = ["NCBS Bangalore"] -__license__ = "GNU GPL" -__version__ = "1.0.0" -__maintainer__ = "Dilawar Singh" -__email__ = "dilawars@ncbs.res.in" -__status__ = "Development" - -import moose -import os -import sys -import pylab - - -def applyInputPulseTrain(mooseElem, fieldName, pulseTrain): - """ - Apply a train of pulse: a list of (time, value) tuples, to fieldName of - mooseElem. - - time is incremental. - """ - for (t, v) in pulseTrain: - moose.start(t) - mooseElem.setField(fieldName, v) - -def dumpPlots(): - fname = 'bidirectionalPlasticity.plot' - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/model/graphs/conc#/#,/model/moregraphs/conc#/#' ): - moose.element( x[0] ).xplot( fname, x[0].name ) - -def getPlotData(): - totR = moose.element('/model/graphs/conc1/tot_PSD_R.Co') - PP1 = moose.element('/model/moregraphs/conc4/PP1_dash_active.Co') - Ca = moose.element('/model/graphs/conc1/Ca.Co') - return totR.vector, PP1.vector, Ca.vector - -def displayPlots(): - clock = moose.Clock( '/clock' ) # look up global clock - totR = moose.element( '/model/graphs/conc1/tot_PSD_R.Co' ) - PP1 = moose.element( '/model/moregraphs/conc4/PP1_dash_active.Co' ) - Ca = moose.element( '/model/graphs/conc1/Ca.Co' ) - pylab.plot( pylab.linspace( 0, clock.currentTime, len( totR.vector )), totR.vector, label='membrane Receptor' ) - pylab.plot( pylab.linspace( 0, clock.currentTime, len( PP1.vector ) ), PP1.vector, label='active PP1' ) - pylab.plot( pylab.linspace( 0, clock.currentTime, len( Ca.vector ) ), Ca.vector, label='Ca' ) - pylab.legend() - pylab.show() - -def main(): - """ - This is a toy model of synaptic bidirectional plasticity. The model has - a small a bistable chemical switch, and a small set of reactions that - decode calcium input. One can turn the switch on with short high - calcium pulses (over 2 uM for about 10 sec). One can turn it back off - again using a long, lower calcium pulse (0.2 uM, 2000 sec). - """ - method = 'old_gssa' # This is the Gillespie Stoichastic Systems Algorithm - if ( len( sys.argv ) >= 2 ): - method = sys.argv[1] - if ( method == "gsl" ): - method = "old_gsl" - if ( method == "gssa" ): - method = "old_gssa" - # Load in the model and set up to use the specified method - modelId = moose.loadModel( './stargazin_synapse.g', 'model', method ) - moose.start( 1000.0 ) # Run the model for 1000 seconds. - Ca = moose.element( '/model/kinetics/BULK/Ca' ) - - applyInputPulseTrain(Ca, 'concInit' - , [ (1000.0, 1.0e-3) - , (10.0, 0.08e-3) - , (50.0, 1.0e-3) - , (10.0, 0.08e-3) - , (1000.0, 0.2e-3) - , (2000.0, 0.08e-3) - ] - ) - moose.start(2000.0) - displayPlots() - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/MemoryNetworks/stargazin_synapse.g b/examples/MemoryNetworks/stargazin_synapse.g deleted file mode 100644 index b6241c2..0000000 --- a/examples/MemoryNetworks/stargazin_synapse.g +++ /dev/null @@ -1,413 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Mon Jul 8 15:42:18 2013 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 1000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 9e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/actCaMKII 0 0 0 0.83333 5 0 0 0 6 0 \ - /kinetics/geometry 35 0 0 7 0 -simundump text /kinetics/PSD/actCaMKII/notes 0 "" -call /kinetics/PSD/actCaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -6 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -2 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ -"" -simundump group /kinetics/PSD/PP1_PSD 0 yellow 0 x 0 0 "" PP1_PSD \ - defaultfile.g 0 0 0 7 10 0 -simundump text /kinetics/PSD/PP1_PSD/notes 0 "" -call /kinetics/PSD/PP1_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue yellow -4 -5 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -2 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -6 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/move_to_PSD 0 0.5 15 "" white 0 -8 -5 0 -simundump text /kinetics/PSD/move_to_PSD/notes 0 "" -call /kinetics/PSD/move_to_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R_S2/notes 0 "" -call /kinetics/PSD/R_S2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/R_SpS/notes 0 "" -call /kinetics/PSD/R_SpS/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 28 0 0 1 0 -simundump text /kinetics/PSD/R_SpSp/notes 0 "" -call /kinetics/PSD/R_SpSp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 61 0 -4 -2 0 -simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ - "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/inact_CaMKII 0 0 8 8 48 48 0 0 6 0 \ - /kinetics/geometry[1] blue 0 5 11 0 -simundump text /kinetics/PSD/inact_CaMKII/notes 0 "" -call /kinetics/PSD/inact_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_bind_CaM 0 0.1 0.1 "" white 0 3 9 0 -simundump text /kinetics/PSD/CaMKII_bind_CaM/notes 0 "" -call /kinetics/PSD/CaMKII_bind_CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM.CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue 0 0 11 0 -simundump text /kinetics/PSD/CaM.CaMKII/notes 0 "" -call /kinetics/PSD/CaM.CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Basal_CaMKII 0 0 0.83333 0.83333 5 5 0 0 6 0 \ - /kinetics/geometry[2] blue 0 -5 9 0 -simundump text /kinetics/PSD/Basal_CaMKII/notes 0 "" -call /kinetics/PSD/Basal_CaMKII/notes LOAD \ -"" -simundump group /kinetics/BULK 0 yellow black x 0 0 "" BULK defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/BULK/notes 0 "" -call /kinetics/BULK/notes LOAD \ -"" -simundump kpool /kinetics/BULK/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ - /kinetics/geometry 0 yellow -8 -10 0 -simundump text /kinetics/BULK/iR/notes 0 "Same as Fus3\n" -call /kinetics/BULK/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/BULK/PP1-inactive 0 0 0.66667 0.66667 36 36 0 0 54 \ - 0 /kinetics/geometry[1] blue yellow -4 -10 0 -simundump text /kinetics/BULK/PP1-inactive/notes 0 "" -call /kinetics/BULK/PP1-inactive/notes LOAD \ -"" -simundump kpool /kinetics/BULK/Ca 0 0 0.08 0.08 4.32 4.32 0 0 54 4 \ - /kinetics/geometry[1] 54 yellow 8 0 0 -simundump text /kinetics/BULK/Ca/notes 0 "" -call /kinetics/BULK/Ca/notes LOAD \ -"" -simundump kpool /kinetics/BULK/CaN 0 0 0.037037 0.037037 2 2 0 0 54 0 \ - /kinetics/geometry[1] 9 yellow 8 -5 0 -simundump text /kinetics/BULK/CaN/notes 0 "" -call /kinetics/BULK/CaN/notes LOAD \ -"" -simundump kpool /kinetics/BULK/Ca4.CaN 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] 7 yellow 1 -5 0 -simundump text /kinetics/BULK/Ca4.CaN/notes 0 "" -call /kinetics/BULK/Ca4.CaN/notes LOAD \ -"" -simundump kenz /kinetics/BULK/Ca4.CaN/CaN_enz 0 0 0 0 0 54 0.92593 4 1 0 0 "" \ - red 7 "" 1 -7 0 -simundump text /kinetics/BULK/Ca4.CaN/CaN_enz/notes 0 "" -call /kinetics/BULK/Ca4.CaN/CaN_enz/notes LOAD \ -"" -simundump kreac /kinetics/BULK/CaN_bind_Ca 0 4e-06 0.1 "" white yellow 4 -7 0 -simundump text /kinetics/BULK/CaN_bind_Ca/notes 0 "" -call /kinetics/BULK/CaN_bind_Ca/notes LOAD \ -"" -simundump kreac /kinetics/BULK/CaM_bind_Ca 0 1e-08 1 "" white yellow 4 3 0 -simundump text /kinetics/BULK/CaM_bind_Ca/notes 0 "" -call /kinetics/BULK/CaM_bind_Ca/notes LOAD \ -"" -simundump kpool /kinetics/BULK/CaM 0 0 0.88889 0.88889 48 48 0 0 54 0 \ - /kinetics/geometry[1] 25 yellow 8 5 0 -simundump text /kinetics/BULK/CaM/notes 0 "" -call /kinetics/BULK/CaM/notes LOAD \ -"" -simundump kpool /kinetics/BULK/Ca4.CaM 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] 26 yellow 1 5 0 -simundump text /kinetics/BULK/Ca4.CaM/notes 0 "" -call /kinetics/BULK/Ca4.CaM/notes LOAD \ -"" -simundump kreac /kinetics/BULK/inactivate_PP1 0 0.05 0.002 "" white yellow -6 \ - -7 0 -simundump text /kinetics/BULK/inactivate_PP1/notes 0 "" -call /kinetics/BULK/inactivate_PP1/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 3523.1 -2.2424 40 0 -simundump xgraph /graphs/conc2 0 0 3523.1 0 40 0 -simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 4 0 0 1 -simundump xplot /graphs/conc1/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 54 0 0 1 -simundump xplot /graphs/conc2/iR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 0 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 3523.1 1.8672e-07 0.093991 0 -simundump xgraph /moregraphs/conc4 0 0 3523.1 0 11.572 0 -simundump xplot /moregraphs/conc3/Ca4.CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 7 0 0 1 -simundump xplot /moregraphs/conc3/Ca4.CaM.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 26 0 0 1 -simundump xplot /moregraphs/conc4/PP1-active.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /moregraphs/conc4/actCaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 35 0 0 1 -simundump xcoredraw /edit/draw 0 -12 10 -18 13 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"" \ -"" \ -"16 Dec 2011. Completely new PSD version, where the R, Rp and Rpp" \ -"all refer to AMPAR bound to two stargazins, and each p is on one" \ -"of the stargazins. " \ -"" \ -"stargazin_psd2.g: tweaked traffic parameters to get bistability." \ -"Very bistable." \ -"" \ -"17 Dec 2011. stargazin_psd3.g: Minor change: reduced kcat for" \ -"CaN from 10 to 2." \ -"" \ -"stargazin_psd4.g: Changed some rates around so that it responds" \ -"in a more relevant range for CaMKII activation in the full model." \ -"Also renamed the Receptor-Stargazin pools to clarify that the" \ -"phospho steps are on the stargazin." \ -"" \ -"stargazin_psd5.g: Incorporated traffic rates from the " \ -"traffillator analysis." \ -"" \ -"stargazin_psd6.g: Raised CaN Km from 5 to 10 uM." \ -"" \ -"stargazin_psd8.g: Increased level of PP2A by 3x so we have at least" \ -"2 molecules of it in the PSD. Lowered kcat to match." \ -"" \ -"stargazin_psd9.g: Fine-tuning trafficking parameters to see if we" \ -"can improve Kramer time for off-to-on transition." \ -"" \ -"stargazin_psd11.g: first pass at revised stargazin using PP1-active" \ -"instead of CaN." \ -"" \ -"stargazin_psd12.g: Fine-tuned version of 11, with the traffic" \ -"rates estimated from traffillator analysis." \ -"" \ -"stargazin_psd12a.g: Minor naming change." \ -"" \ -"stargazin_psd12b.g: More naming change: PP2A becomes " \ -"basal_phosphatase." \ -"" \ -"07 July 2013: Adding in toy regulation by Ca." \ -"stargazin_snapse2.g: turnon happens but not turnoff." \ -"Did doser for PP1-active. Halfmax is only 0.08. Hence problem." \ -"" \ -"stargazin_synapse4.g: Scaled up doser for PP1-active so halfmax" \ -"is now up to 0.2 uM." \ -"stargazin_synapse5.g: A big of fine-tuning on the levels of PP1 " \ -"and CaMKII so that the bidirectional flip is possible." \ -"stargazin_synapse6.g: OK, now a set of parameters that do" \ -"bidirectional state flips with reasonable Ca levels." \ -"0.08 is bistable" \ -"2.0 turns on" \ -"0.2 turns off." \ -"" \ -"08 July 2013. Stargazin_synapse7.g: Raised CaM to match CaMKII" \ -"levels, so that the " \ -"turnon is faster." \ -"stargazin_synapse8.g: Further raise of CaM and CaMKII, now" \ -"turnon happens within 20 sec." \ -"stargazin_synapse9.g: Added Ca plot." \ -"" -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/Basal_CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/PSD/PP1_PSD/PP1-active MM_PRD pA -addmsg /kinetics/BULK/inactivate_PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n -addmsg /kinetics/BULK/iR /kinetics/PSD/move_to_PSD SUBSTRATE n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/inact_CaMKII REAC A B -addmsg /kinetics/BULK/Ca4.CaM /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n -addmsg /kinetics/PSD/inact_CaMKII /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n -addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/CaMKII_bind_CaM PRODUCT n -addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/CaM.CaMKII REAC B A -addmsg /kinetics/PSD/move_to_PSD /kinetics/BULK/iR REAC A B -addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/PP1-inactive REAC sA B -addmsg /kinetics/BULK/inactivate_PP1 /kinetics/BULK/PP1-inactive REAC B A -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/CaN REAC A B -addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/Ca4.CaN REAC eA B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca4.CaN REAC B A -addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/Ca4.CaN/CaN_enz ENZYME n -addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/Ca4.CaN/CaN_enz SUBSTRATE n -addmsg /kinetics/BULK/CaN /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/CaN_bind_Ca PRODUCT n -addmsg /kinetics/BULK/CaM /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca4.CaM /kinetics/BULK/CaM_bind_Ca PRODUCT n -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/CaM REAC A B -addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/BULK/Ca4.CaM REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca4.CaM REAC B A -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/BULK/inactivate_PP1 SUBSTRATE n -addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/inactivate_PP1 PRODUCT n -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 -addmsg /kinetics/BULK/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *54 -addmsg /kinetics/BULK/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 -addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -addmsg /kinetics/BULK/Ca4.CaN /moregraphs/conc3/Ca4.CaN.Co PLOT Co *Ca4.CaN.Co *7 -addmsg /kinetics/BULK/Ca4.CaM /moregraphs/conc3/Ca4.CaM.Co PLOT Co *Ca4.CaM.Co *26 -addmsg /kinetics/PSD/PP1_PSD/PP1-active /moregraphs/conc4/PP1-active.Co PLOT Co *PP1-active.Co *blue -addmsg /kinetics/PSD/actCaMKII /moregraphs/conc4/actCaMKII.Co PLOT Co *actCaMKII.Co *35 -enddump -// End of dump - -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -call /kinetics/BULK/iR/notes LOAD \ -"Same as Fus3" \ -"" -complete_loading diff --git a/examples/_travis/.ignore_on_travis b/examples/_travis/.ignore_on_travis deleted file mode 100644 index e69de29..0000000 diff --git a/examples/_travis/colors.sh b/examples/_travis/colors.sh deleted file mode 100644 index 79c561c..0000000 --- a/examples/_travis/colors.sh +++ /dev/null @@ -1,45 +0,0 @@ -# Definitions of colors in bash -RESTORE='\033[0m' - -RED='\033[00;31m' -GREEN='\033[00;32m' -YELLOW='\033[00;33m' -BLUE='\033[00;34m' -PURPLE='\033[00;35m' -CYAN='\033[00;36m' -LIGHTGRAY='\033[00;37m' - -LRED='\033[01;31m' -LGREEN='\033[01;32m' -LYELLOW='\033[01;33m' -LBLUE='\033[01;34m' -LPURPLE='\033[01;35m' -LCYAN='\033[01;36m' -WHITE='\033[01;37m' - -function coloredPrint -{ - case $1 in - "WARN") - echo -e "[WARN] ${LRED} $2 ${RESTORE} $3" - ;; - "INFO") - echo -e "[INFO] ${LGREEN} $2 ${RESTORE} $3" - ;; - "ERROR") - echo -e "[ERROR] ${RED} $2 ${RESTORE} $3" - ;; - "DEBUG") - echo -e "[DEBUG] ${YELLOW} $2 ${RESTORE} $3" - ;; - "STEP") - echo -e "[STEP] ${BLUE} $2 ${RESTORE} $3" - ;; - "TODO") - echo -e "[TODO] ${CYAN} $2 ${RESTORE} $3" - ;; - *) - echo -e "[$1] $2 $3" - ;; - esac -} diff --git a/examples/_travis/find_scripts_to_run.sh b/examples/_travis/find_scripts_to_run.sh deleted file mode 100755 index a4f674c..0000000 --- a/examples/_travis/find_scripts_to_run.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -#set -x -set -e -source ./colors.sh - -# matplotlibrc file. -MATPLOTRC=./matplotlibrc - -PWD=$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd) - -# All scripts are here. -SRCDIR=./.. - -MAINLESS=$PWD/MAINLESS -BLACKLISTED=$PWD/BLACKLISTED -GUI=$PWD/GUISCRIPTS -INTERACTIVE=$PWD/INTERACTIVE -TORUN=$PWD/TORUN -BROKEN=$PWD/BROKEN - -for f in $MAINLESS $BLACKLISTED $GUI $INTERACTIVE $TORUN; do - # Remove already existing files - if [ -f $f ]; then - rm -f $f - fi -done - -declare -i a -PYC=`which python` - -function check_file -{ - filepath="$1" - - # These files were not tested on travis. Check issue #2 - if [[ $filepath == *"Fig2A.py" ]]; then - echo "$filepath is disabled by developer" - return - elif [[ $filepath == *"nsdf_vec.py" ]]; then - echo "$filepath is disabled by developer" - return - fi - - if grep -q "__BROKEN__" $filepath - then - coloredPrint "INFO" "This script is marked as broken by developer" - echo $filepath >> $BROKEN - elif grep -q "input(" $filepath - then - coloredPrint WARN "File contains input() call. Interactive script. \ - WONT RUN" - echo $filepath >> $INTERACTIVE - elif grep -q "QtGui" $filepath - then - coloredPrint WARN "File seems to be a GUI. WONT RUN" - echo $filepath >> $GUI - elif grep -q "__main__\|main(" $filepath - then - coloredPrint "INFO" "Script with main() or __main__" - echo $filepath >> $TORUN - fi -} - -function find_files -{ - echo "|| searching for files in $1" - PYFILES=`find "$1" \( -name "*.py" ! -iname "test_all*" \)` - for pyf in $PYFILES; do - let a=a+1 - dn=`dirname $pyf` - fn=`basename $pyf` - # copy matplotlibrc file to working directory - check_file $pyf - done -} - -# Search files to run. One can ignore directories which has .dont_run_on_travis -# file in them. - -DIRS_TO_SEARCH="" -while read -r dir; do - echo $dir - if [ -f $dir/.ignore_on_travis ]; then - echo "Ignoring this directory on travis" - else - echo "Find script from this directory to run" - find_files $dir - fi -done < <(find $SRCDIR -mindepth 1 -maxdepth 1 -type d) diff --git a/examples/_travis/matplotlibrc b/examples/_travis/matplotlibrc deleted file mode 100644 index 066b1bc..0000000 --- a/examples/_travis/matplotlibrc +++ /dev/null @@ -1,11 +0,0 @@ -# This is configuration file for matplotlib used in examples. -# We use this configuration file to test the examples. Copy this configuration -# file in the current working directory and run the snippet. - -# This configuration file does the followings: -# - plt.show() function become non-blocking. - -backend : agg - -# This makes all plots non-blocking. -interactive : True diff --git a/examples/_travis/run_scripts.sh b/examples/_travis/run_scripts.sh deleted file mode 100755 index c0140b9..0000000 --- a/examples/_travis/run_scripts.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash - -PWD=$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd) - -BLACKLISTED=$PWD/BLACKLISTED -SUCCEEDED=$PWD/SUCCEEDED -FAILED=$PWD/FAILED -TEMP=$PWD/__temp__ - -rm -f $BLACKLISTED $SUCCEEDED $FAILED $TEMP TORUN -$PWD/find_scripts_to_run.sh - -PYC=`which python` -MATPLOTRC=$PWD/matplotlibrc -if [ ! -f $MATPLOTRC ]; then - echo "$MATPLOTRC not found" - exit -fi - -TIMEOUT=5m -for f in `cat ./TORUN`; do - d=`dirname $f` - fn=`basename $f` - ( - cp $MATPLOTRC $d/ - cd $d - echo "++ Executing script $f" - # Do not run more than 2 minutes. - timeout $TIMEOUT $PYC $fn &> $TEMP - status=$? - if [ "$status" -eq "0" ]; then # success - echo "|| Success. Written to $SUCCEEDED" - echo "- [x] $f" >> $SUCCEEDED - elif [ "$status" -gt "128" ]; then # timeout - # If there is timeout then add to BLACKLISTED - echo "|| Killed by signal status: $status" - echo "- [ ] $f" >> $BLACKLISTED - sed -i 's/^/\ \ /' $TEMP - printf "\n\`i\`\`\n" >> $BLACKLISTED - cat $TEMP >> $BLACKLISTED - printf "\`\`\`\n" >> $BLACKLISTED - else # Failed - echo "|| Failed with status "$status" " - echo "- [ ] $f" >> $FAILED - sed -i 's/^/\ \ /' $TEMP - printf "\n\`\`\`\n" >> $FAILED - cat $TEMP >> $FAILED - printf "\`\`\`\n" >> $FAILED - cat $TEMP - echo "|| Failed. Error written to $FAILED" - fi - ) -done - -echo "Following scripts were successful" -cat $SUCCEEDED - -if [ -f $BLACKLISTED ]; then - echo "Following scripts were blacklisted due to timeout or singal interrupt" - cat $BLACKLISTED -fi - -if [ -f $FAILED ]; then - echo "==========================================" - echo "Following scripts failed." - cat $FAILED - exit 1 -fi - -## If less than 84 files passed, raise and error. diff --git a/examples/genesis/00001-sbml-l3v1.xml b/examples/genesis/00001-sbml-l3v1.xml deleted file mode 100644 index 135d833..0000000 --- a/examples/genesis/00001-sbml-l3v1.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - compartment - k1 - S1 - - - - - - - diff --git a/examples/genesis/EGFR_MAPK_58.g b/examples/genesis/EGFR_MAPK_58.g deleted file mode 100644 index 9995eac..0000000 --- a/examples/genesis/EGFR_MAPK_58.g +++ /dev/null @@ -1,750 +0,0 @@ -//genesis -// kkit Version 9 flat dumpfile - -// Saved on Mon Dec 22 14:54:02 2003 - -include kkit {argv 1} - -FASTDT = 0.001 -SIMDT = 0.005 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 2000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-15 -VERSION = 9.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump kpool CoTotal CoInit Co n nInit nTotal nMin vol slave_enable notes \ - xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump linkinfo xtree_fg_req xtree_textfg_req uplink downlink x y z -simobjdump uplink xtree_fg_req xtree_textfg_req x y z -simobjdump downlink xtree_fg_req xtree_textfg_req x y z -simobjdump mirror notes xtree_fg_req x y z -simundump kpool /kinetics/PKC-active 1 0.15 0.09 0.09 54000 54000 90000 0 \ - 6e+05 6 "" red black 7 22 0 -simundump kenz /kinetics/PKC-active/PKC-act-raf 1 0 0 0 0 6e+05 5e-07 16 4 0 \ - 0 "" red yellow "" 8 7 0 -simundump kenz /kinetics/PKC-active/PKC-inact-GAP 1 0 0 0 0 1 1e-05 16 4 0 0 \ - "" red yellow "" 3 13 0 -simundump kenz /kinetics/PKC-active/PKC-act-GEF 1 0 0 0 0 1 1e-05 16 4 0 0 "" \ - red yellow "" 7.2909 20.733 0 -simundump kpool /kinetics/MAPK* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" orange \ - yellow 12 1 0 -simundump kenz /kinetics/MAPK*/MAPK*-feedback 1 0 0 0 0 6e+05 3.25e-06 40 10 \ - 0 0 "" red orange "" 4.934 23.653 0 -simundump kenz /kinetics/MAPK*/phosph_Sos 1 0 0 0 0 6e+05 3.25e-05 40 10 0 0 \ - "" red orange "" 18 40 0 -simundump kpool /kinetics/BetaGamma 1 1.6 0.0094 0.0094 5640 5640 9.6e+05 0 \ - 6e+05 4 "" yellow black 18 16 0 -simundump group /kinetics/MAPK 0 brown black x 0 0 "" defaultfile \ - defaultfile.g 0 0 0 14.616 11.191 0 -simundump kpool /kinetics/MAPK/craf-1 0 0.2 0.2 0.2 1.2e+05 1.2e+05 1.2e+05 0 \ - 6e+05 0 "" pink brown 6.326 8.1168 0 -simundump kpool /kinetics/MAPK/craf-1* 0 0.2 0 0 0 0 1.2e+05 0 6e+05 0 "" \ - pink brown 9.2401 7.7115 0 -simundump kpool /kinetics/MAPK/MAPKK 0 0.18 0.18 0.18 1.08e+05 1.08e+05 \ - 1.08e+05 0 6e+05 0 "" pink brown 6.3315 3.9894 0 -simundump kpool /kinetics/MAPK/MAPK 0 0.36 0.36 0.36 2.16e+05 2.16e+05 \ - 2.16e+05 0 6e+05 0 "" pink brown 6.0656 1.0863 0 -simundump kpool /kinetics/MAPK/craf-1** 1 0.2 0 0 0 0 1.2e+05 0 6e+05 0 "" \ - hotpink brown 12.464 7.9022 0 -simundump kpool /kinetics/MAPK/MAPK-tyr 1 0.36 0 0 0 0 2.16e+05 0 6e+05 0 "" \ - orange brown 8.4147 0.82034 0 -simundump kpool /kinetics/MAPK/MAPKK* 0 0.18 0 0 0 0 1.08e+05 0 6e+05 0 "" \ - pink brown 12.548 4.0256 0 -simundump kenz /kinetics/MAPK/MAPKK*/MAPKKtyr 0 0 0 0 0 6e+05 2.7e-05 0.6 \ - 0.15 0 0 "" red pink "" 8.8914 3.5531 0 -simundump kenz /kinetics/MAPK/MAPKK*/MAPKKthr 1 0 0 0 0 6e+05 2.7e-05 0.6 \ - 0.15 0 0 "" red pink "" 12.961 3.0363 0 -simundump kpool /kinetics/MAPK/MAPKK-ser 1 0.18 0 0 0 0 1.08e+05 0 6e+05 0 "" \ - pink brown 9.2652 4.1657 0 -simundump kpool /kinetics/MAPK/Raf-GTP-Ras* 1 0.0104 0 0 0 0 6240 0 6e+05 0 \ - "" red brown 4.9054 6.7814 0 -simundump kenz /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 1 0 0 0 0 1 5.5e-06 \ - 0.42 0.105 0 0 "" red red "" 7.6179 6.2189 0 -simundump kenz /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 1 0 0 0 0 1 5.5e-06 \ - 0.42 0.105 0 0 "" red red "" 10.698 6.0688 0 -simundump kpool /kinetics/MKP-1 1 0.008 0.0024 0.0024 1440 1440 4800 0 6e+05 \ - 0 "" hotpink black 5.0816 2.4407 0 -simundump kenz /kinetics/MKP-1/MKP1-tyr-deph 1 0 0 0 0 6e+05 0.000125 4 1 0 0 \ - "" red hotpink "" 6.2781 3.0684 0 -simundump kenz /kinetics/MKP-1/MKP1-thr-deph 1 0 0 0 0 6e+05 0.000125 4 1 0 0 \ - "" red hotpink "" 10.789 2.9311 0 -simundump kreac /kinetics/Ras-act-craf 1 4e-05 0.5 "" white black 3.5614 \ - 10.091 0 -simundump kpool /kinetics/PPhosphatase2A 1 0.224 0.224 0.224 1.344e+05 \ - 1.344e+05 1.344e+05 0 6e+05 0 "" hotpink yellow 9.3898 9.1309 0 -simundump kenz /kinetics/PPhosphatase2A/craf-deph 1 0 0 0 0 6e+05 3.3e-06 25 \ - 6 0 0 "" red hotpink "" 7.8013 10.215 0 -simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph 1 0 0 0 0 6e+05 3.3e-06 25 \ - 6 0 0 "" red hotpink "" 13.159 6.0736 0 -simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph-ser 1 0 0 0 0 6e+05 \ - 3.3e-06 25 6 0 0 "" red hotpink "" 4.8651 5.9208 0 -simundump kenz /kinetics/PPhosphatase2A/craf**-deph 1 0 0 0 0 1 3.3e-06 25 6 \ - 0 0 "" red hotpink "" 12.446 9.9054 0 -simundump group /kinetics/Ras 1 blue black x 0 0 "" defaultfile defaultfile.g \ - 0 0 0 14.513 16.351 0 -simundump kreac /kinetics/Ras/bg-act-GEF 1 1e-05 1 "" white blue 13.468 \ - 14.838 0 -simundump kpool /kinetics/Ras/GEF-Gprot-bg 1 0.1 0 0 0 0 60000 0 6e+05 0 "" \ - hotpink blue 10.373 17.271 0 -simundump kenz /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras 1 0 0 0 0 6e+05 \ - 3.3e-07 0.08 0.02 0 0 "" red hotpink "" 10.402 16.523 0 -simundump kreac /kinetics/Ras/dephosph-GEF 1 1 0 "" white blue 9.0702 17.881 \ - 0 -simundump kpool /kinetics/Ras/inact-GEF 1 0.1 0.1 0.1 60000 60000 60000 0 \ - 6e+05 0 "" hotpink blue 12 20 0 -simundump kpool /kinetics/Ras/GEF* 1 0.1 0 0 0 0 60000 0 6e+05 0 "" hotpink \ - blue 6.4483 17.246 0 -simundump kenz /kinetics/Ras/GEF*/GEF*-act-ras 1 0 0 0 0 6e+05 3.3e-07 0.08 \ - 0.02 0 0 "" red hotpink "" 7.0855 16.086 0 -simundump kpool /kinetics/Ras/GTP-Ras 1 0.2 0 0 0 0 1.2e+05 0 6e+05 0 "" \ - orange blue 12.564 13.084 0 -simundump kpool /kinetics/Ras/GDP-Ras 1 0.2 0.2 0.2 1.2e+05 1.2e+05 1.2e+05 0 \ - 6e+05 0 "" pink blue 6.1309 14.165 0 -simundump kreac /kinetics/Ras/Ras-intrinsic-GTPase 1 1e-04 0 "" white blue \ - 9.0979 13.5 0 -simundump kreac /kinetics/Ras/dephosph-GAP 1 0.1 0 "" white blue 4.0234 \ - 15.524 0 -simundump kpool /kinetics/Ras/GAP* 1 0.05 0 0 0 0 30000 0 6e+05 0 "" red blue \ - 1.3498 14.349 0 -simundump kpool /kinetics/Ras/GAP 1 0.002 0.002 0.002 1200 1200 1200 0 6e+05 \ - 0 "" red blue 6.6549 12.338 0 -simundump kenz /kinetics/Ras/GAP/GAP-inact-ras 1 0 0 0 0 6e+05 8.2476e-05 40 \ - 10 0 0 "" red red "" 9.0121 12.403 0 -simundump kpool /kinetics/Ras/inact-GEF* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - hotpink blue 15 20 0 -simundump kreac /kinetics/Ras/CaM-bind-GEF 1 1e-04 1 "" white blue 2.4861 \ - 21.679 0 -simundump kpool /kinetics/Ras/CaM-GEF 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - pink blue 5.3451 19.58 0 -simundump kenz /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras 1 0 0 0 0 6e+05 3.3e-07 \ - 0.08 0.02 0 0 "" red pink "" 5.0223 18.657 0 -simundump kreac /kinetics/Ras/dephosph-inact-GEF* 1 1 0 "" white blue 14.431 \ - 21.995 0 -simundump kpool /kinetics/PKA-active 1 0.015 0.015 0.015 9000 9000 9000 0 \ - 6e+05 4 "" yellow black 18 18 0 -simundump kenz /kinetics/PKA-active/PKA-phosph-GEF 1 0 0 0 0 6e+05 1e-05 36 9 \ - 0 0 "" red yellow "" 14 18 0 -simundump kpool /kinetics/CaM-Ca4 1 5 0 0 0 0 3e+06 0 6e+05 4 "" blue yellow \ - 0 19 0 -simundump kpool /kinetics/Shc*.Sos.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - brown yellow 11.263 27.112 0 -simundump kenz /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF 1 0 0 0 0 6e+05 3.3e-07 \ - 0.08 0.02 0 0 "" red brown "" 11.266 24.47 0 -simundump group /kinetics/EGFR 1 yellow black x 0 0 "" defaultfile \ - defaultfile.g 0 0 0 7.0249 39.57 0 -simundump kpool /kinetics/EGFR/EGFR 1 0.16667 0.16667 0.16667 1e+05 1e+05 \ - 1e+05 0 6e+05 0 "" red yellow 1.9551 39.853 0 -simundump kreac /kinetics/EGFR/act_EGFR 1 7e-06 0.25 "" white yellow 4.4894 \ - 38.493 0 -simundump kpool /kinetics/EGFR/L.EGFR 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" red \ - yellow 6.2195 36.599 0 -simundump kenz /kinetics/EGFR/L.EGFR/phosph_Shc 1 0 0 0 0 6e+05 2e-06 0.8 0.2 \ - 0 0 "" red red "" 9.0331 36.49 0 -simundump kpool /kinetics/EGFR/EGF 1 1 0 0 0 0 6e+05 0 6e+05 4 "" red yellow \ - 2.2719 36.309 0 -simundump kpool /kinetics/EGFR/SHC 1 1 0.5 0.5 3e+05 3e+05 6e+05 0 6e+05 0 "" \ - orange yellow 8.3857 33.936 0 -simundump kpool /kinetics/EGFR/SHC* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - orange yellow 12.832 33.029 0 -simundump kreac /kinetics/EGFR/dephosph_Shc 1 0.0016667 0 "" white yellow \ - 9.7373 31.442 0 -simundump kpool /kinetics/EGFR/Internal_L.EGFR 1 1.6667e-06 0 0 0 0 1 0 6e+05 \ - 0 "" red yellow 6.3061 41.93 0 -simundump kreac /kinetics/EGFR/Internalize 1 0.002 0.00033 "" white yellow \ - 4.5213 39.863 0 -simundump group /kinetics/Sos 1 blue black x 0 0 "" defaultfile defaultfile.g \ - 0 0 0 19.547 34.811 0 -simundump kreac /kinetics/Sos/Shc_bind_Sos.Grb2 1 8.333e-07 0.1 "" white blue \ - 10.23 29.891 0 -simundump kpool /kinetics/Sos/Sos*.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - orange blue 12.274 41.661 0 -simundump kreac /kinetics/Sos/Grb2_bind_Sos* 1 4.1667e-08 0.0168 "" white \ - blue 10.533 38.235 0 -simundump kpool /kinetics/Sos/Grb2 1 1 1 1 6e+05 6e+05 6e+05 0 6e+05 0 "" \ - orange blue 14.742 35.301 0 -simundump kpool /kinetics/Sos/Sos.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - orange blue 13.988 30.097 0 -simundump kpool /kinetics/Sos/Sos* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" red \ - blue 15.421 40.215 0 -simundump kreac /kinetics/Sos/dephosph_Sos 1 0.001 0 "" white blue 13.185 \ - 37.153 0 -simundump kreac /kinetics/Sos/Grb2_bind_Sos 1 4.1667e-08 0.0168 "" white blue \ - 16.422 33.133 0 -simundump kpool /kinetics/Sos/Sos 1 0.1 0.1 0.1 60000 60000 60000 0 6e+05 0 \ - "" red blue 17.381 36.794 0 -simundump xgraph /graphs/conc1 0 0 2000 0 0.01146 0 -simundump xgraph /graphs/conc2 0 360.16 2000 0.015494 0.49511 0 -simundump xplot /graphs/conc1/MAPK*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " orange 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2000 -1.1176e-08 1 0 -simundump xgraph /moregraphs/conc4 0 0 2000 0 1 0 -simundump xcoredraw /edit/draw 0 -4.5315 19.369 -1.5185 44.269 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"1 Sep 2003: Based on nonscaf_syn1c.g, which in turn is just " \ -"like nonscaf_syn1b.g" \ -"with all plots but MAPK* stripped out." \ -"The current version provides the Ca input through a fast" \ -"(10 msec) time-course reaction step so that the Ca can undergo" \ -"fluctuations." \ -"1 Oct 2003: Identical to nonscaf_syn1e.g, added a few plots." \ -"9 Dec 2003: Identical to nonscaf_syn1f.g, added a plot for Ca" \ -"22 Dec 2003: Based on nonscaf_syn1g.g, eliminated all except the" \ -"core MAPK pathway and its inputs. Cleared out plots too." \ -"Set basic values for PKC, PKA, CaM-Ca4 and Betagamma." -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/PKC-active REAC eA B -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/PKC-active REAC eA B -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/PKC-active REAC eA B -addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-raf ENZYME n -addmsg /kinetics/MAPK/craf-1 /kinetics/PKC-active/PKC-act-raf SUBSTRATE n -addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-inact-GAP ENZYME n -addmsg /kinetics/Ras/GAP /kinetics/PKC-active/PKC-inact-GAP SUBSTRATE n -addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-GEF ENZYME n -addmsg /kinetics/Ras/inact-GEF /kinetics/PKC-active/PKC-act-GEF SUBSTRATE n -addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK* REAC eA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK* MM_PRD pA -addmsg /kinetics/MKP-1/MKP1-thr-deph /kinetics/MAPK* REAC sA B -addmsg /kinetics/MAPK*/phosph_Sos /kinetics/MAPK* REAC eA B -addmsg /kinetics/MAPK* /kinetics/MAPK*/MAPK*-feedback ENZYME n -addmsg /kinetics/MAPK/craf-1* /kinetics/MAPK*/MAPK*-feedback SUBSTRATE n -addmsg /kinetics/MAPK* /kinetics/MAPK*/phosph_Sos ENZYME n -addmsg /kinetics/Sos/Sos /kinetics/MAPK*/phosph_Sos SUBSTRATE n -addmsg /kinetics/Ras/bg-act-GEF /kinetics/BetaGamma REAC A B -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1 REAC sA B -addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1 MM_PRD pA -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1* MM_PRD pA -addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1* REAC sA B -addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1* REAC sA B -addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1* MM_PRD pA -addmsg /kinetics/Ras-act-craf /kinetics/MAPK/craf-1* REAC A B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK MM_PRD pA -addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 /kinetics/MAPK/MAPKK REAC sA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK REAC sA B -addmsg /kinetics/MKP-1/MKP1-tyr-deph /kinetics/MAPK/MAPK MM_PRD pA -addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1** MM_PRD pA -addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1** REAC sA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK-tyr MM_PRD pA -addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPK-tyr REAC sA B -addmsg /kinetics/MKP-1/MKP1-tyr-deph /kinetics/MAPK/MAPK-tyr REAC sA B -addmsg /kinetics/MKP-1/MKP1-thr-deph /kinetics/MAPK/MAPK-tyr MM_PRD pA -addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPKK* REAC eA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPKK* REAC eA B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK* REAC sA B -addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 /kinetics/MAPK/MAPKK* MM_PRD pA -addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKtyr ENZYME n -addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MAPKK*/MAPKKtyr SUBSTRATE n -addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKthr ENZYME n -addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MAPK/MAPKK*/MAPKKthr SUBSTRATE n -addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK-ser MM_PRD pA -addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK-ser REAC sA B -addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 /kinetics/MAPK/MAPKK-ser MM_PRD pA -addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 /kinetics/MAPK/MAPKK-ser REAC sA B -addmsg /kinetics/Ras-act-craf /kinetics/MAPK/Raf-GTP-Ras* REAC B A -addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 /kinetics/MAPK/Raf-GTP-Ras* REAC eA B -addmsg /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 /kinetics/MAPK/Raf-GTP-Ras* REAC eA B -addmsg /kinetics/MAPK/Raf-GTP-Ras* /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 ENZYME n -addmsg /kinetics/MAPK/MAPKK /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1 SUBSTRATE n -addmsg /kinetics/MAPK/Raf-GTP-Ras* /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 ENZYME n -addmsg /kinetics/MAPK/MAPKK-ser /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2 SUBSTRATE n -addmsg /kinetics/MKP-1/MKP1-tyr-deph /kinetics/MKP-1 REAC eA B -addmsg /kinetics/MKP-1/MKP1-thr-deph /kinetics/MKP-1 REAC eA B -addmsg /kinetics/MKP-1 /kinetics/MKP-1/MKP1-tyr-deph ENZYME n -addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MKP-1/MKP1-tyr-deph SUBSTRATE n -addmsg /kinetics/MKP-1 /kinetics/MKP-1/MKP1-thr-deph ENZYME n -addmsg /kinetics/MAPK* /kinetics/MKP-1/MKP1-thr-deph SUBSTRATE n -addmsg /kinetics/MAPK/Raf-GTP-Ras* /kinetics/Ras-act-craf PRODUCT n -addmsg /kinetics/MAPK/craf-1* /kinetics/Ras-act-craf SUBSTRATE n -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras-act-craf SUBSTRATE n -addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf-deph ENZYME n -addmsg /kinetics/MAPK/craf-1* /kinetics/PPhosphatase2A/craf-deph SUBSTRATE n -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph ENZYME n -addmsg /kinetics/MAPK/MAPKK* /kinetics/PPhosphatase2A/MAPKK-deph SUBSTRATE n -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph-ser ENZYME n -addmsg /kinetics/MAPK/MAPKK-ser /kinetics/PPhosphatase2A/MAPKK-deph-ser SUBSTRATE n -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf**-deph ENZYME n -addmsg /kinetics/MAPK/craf-1** /kinetics/PPhosphatase2A/craf**-deph SUBSTRATE n -addmsg /kinetics/BetaGamma /kinetics/Ras/bg-act-GEF SUBSTRATE n -addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/bg-act-GEF SUBSTRATE n -addmsg /kinetics/Ras/GEF-Gprot-bg /kinetics/Ras/bg-act-GEF PRODUCT n -addmsg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras /kinetics/Ras/GEF-Gprot-bg REAC eA B -addmsg /kinetics/Ras/bg-act-GEF /kinetics/Ras/GEF-Gprot-bg REAC B A -addmsg /kinetics/Ras/GEF-Gprot-bg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras ENZYME n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras SUBSTRATE n -addmsg /kinetics/Ras/GEF* /kinetics/Ras/dephosph-GEF SUBSTRATE n -addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/dephosph-GEF PRODUCT n -addmsg /kinetics/Ras/bg-act-GEF /kinetics/Ras/inact-GEF REAC A B -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/inact-GEF REAC sA B -addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/inact-GEF REAC B A -addmsg /kinetics/PKA-active/PKA-phosph-GEF /kinetics/Ras/inact-GEF REAC sA B -addmsg /kinetics/Ras/CaM-bind-GEF /kinetics/Ras/inact-GEF REAC A B -addmsg /kinetics/Ras/dephosph-inact-GEF* /kinetics/Ras/inact-GEF REAC B A -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/GEF* MM_PRD pA -addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/GEF* REAC A B -addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GEF* REAC eA B -addmsg /kinetics/Ras/GEF* /kinetics/Ras/GEF*/GEF*-act-ras ENZYME n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/GEF*/GEF*-act-ras SUBSTRATE n -addmsg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras /kinetics/Ras/GTP-Ras MM_PRD pA -addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GTP-Ras REAC sA B -addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GTP-Ras REAC A B -addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GTP-Ras MM_PRD pA -addmsg /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras /kinetics/Ras/GTP-Ras MM_PRD pA -addmsg /kinetics/Ras-act-craf /kinetics/Ras/GTP-Ras REAC A B -addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GTP-Ras MM_PRD pA -addmsg /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras /kinetics/Ras/GDP-Ras REAC sA B -addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GDP-Ras MM_PRD pA -addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GDP-Ras REAC B A -addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GDP-Ras REAC sA B -addmsg /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras /kinetics/Ras/GDP-Ras REAC sA B -addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GDP-Ras REAC sA B -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/Ras-intrinsic-GTPase SUBSTRATE n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/Ras-intrinsic-GTPase PRODUCT n -addmsg /kinetics/Ras/GAP* /kinetics/Ras/dephosph-GAP SUBSTRATE n -addmsg /kinetics/Ras/GAP /kinetics/Ras/dephosph-GAP PRODUCT n -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP* MM_PRD pA -addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP* REAC A B -addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GAP REAC eA B -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP REAC sA B -addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP REAC B A -addmsg /kinetics/Ras/GAP /kinetics/Ras/GAP/GAP-inact-ras ENZYME n -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/GAP/GAP-inact-ras SUBSTRATE n -addmsg /kinetics/PKA-active/PKA-phosph-GEF /kinetics/Ras/inact-GEF* MM_PRD pA -addmsg /kinetics/Ras/dephosph-inact-GEF* /kinetics/Ras/inact-GEF* REAC A B -addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/CaM-bind-GEF SUBSTRATE n -addmsg /kinetics/Ras/CaM-GEF /kinetics/Ras/CaM-bind-GEF PRODUCT n -addmsg /kinetics/CaM-Ca4 /kinetics/Ras/CaM-bind-GEF SUBSTRATE n -addmsg /kinetics/Ras/CaM-bind-GEF /kinetics/Ras/CaM-GEF REAC B A -addmsg /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras /kinetics/Ras/CaM-GEF REAC eA B -addmsg /kinetics/Ras/CaM-GEF /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras ENZYME n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras SUBSTRATE n -addmsg /kinetics/Ras/inact-GEF* /kinetics/Ras/dephosph-inact-GEF* SUBSTRATE n -addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/dephosph-inact-GEF* PRODUCT n -addmsg /kinetics/PKA-active/PKA-phosph-GEF /kinetics/PKA-active REAC eA B -addmsg /kinetics/PKA-active /kinetics/PKA-active/PKA-phosph-GEF ENZYME n -addmsg /kinetics/Ras/inact-GEF /kinetics/PKA-active/PKA-phosph-GEF SUBSTRATE n -addmsg /kinetics/Ras/CaM-bind-GEF /kinetics/CaM-Ca4 REAC A B -addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Shc*.Sos.Grb2 REAC B A -addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Shc*.Sos.Grb2 REAC eA B -addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF ENZYME n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF SUBSTRATE n -addmsg /kinetics/EGFR/act_EGFR /kinetics/EGFR/EGFR REAC A B -addmsg /kinetics/EGFR/EGFR /kinetics/EGFR/act_EGFR SUBSTRATE n -addmsg /kinetics/EGFR/EGF /kinetics/EGFR/act_EGFR SUBSTRATE n -addmsg /kinetics/EGFR/L.EGFR /kinetics/EGFR/act_EGFR PRODUCT n -addmsg /kinetics/EGFR/act_EGFR /kinetics/EGFR/L.EGFR REAC B A -addmsg /kinetics/EGFR/L.EGFR/phosph_Shc /kinetics/EGFR/L.EGFR REAC eA B -addmsg /kinetics/EGFR/Internalize /kinetics/EGFR/L.EGFR REAC A B -addmsg /kinetics/EGFR/L.EGFR /kinetics/EGFR/L.EGFR/phosph_Shc ENZYME n -addmsg /kinetics/EGFR/SHC /kinetics/EGFR/L.EGFR/phosph_Shc SUBSTRATE n -addmsg /kinetics/EGFR/act_EGFR /kinetics/EGFR/EGF REAC A B -addmsg /kinetics/EGFR/dephosph_Shc /kinetics/EGFR/SHC REAC B A -addmsg /kinetics/EGFR/L.EGFR/phosph_Shc /kinetics/EGFR/SHC REAC sA B -addmsg /kinetics/EGFR/dephosph_Shc /kinetics/EGFR/SHC* REAC A B -addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/EGFR/SHC* REAC A B -addmsg /kinetics/EGFR/L.EGFR/phosph_Shc /kinetics/EGFR/SHC* MM_PRD pA -addmsg /kinetics/EGFR/SHC* /kinetics/EGFR/dephosph_Shc SUBSTRATE n -addmsg /kinetics/EGFR/SHC /kinetics/EGFR/dephosph_Shc PRODUCT n -addmsg /kinetics/EGFR/Internalize /kinetics/EGFR/Internal_L.EGFR REAC B A -addmsg /kinetics/EGFR/L.EGFR /kinetics/EGFR/Internalize SUBSTRATE n -addmsg /kinetics/EGFR/Internal_L.EGFR /kinetics/EGFR/Internalize PRODUCT n -addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n -addmsg /kinetics/EGFR/SHC* /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n -addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 PRODUCT n -addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos*.Grb2 REAC B A -addmsg /kinetics/Sos/Sos* /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n -addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n -addmsg /kinetics/Sos/Sos*.Grb2 /kinetics/Sos/Grb2_bind_Sos* PRODUCT n -addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Grb2 REAC A B -addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Grb2 REAC A B -addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos.Grb2 REAC B A -addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Sos/Sos.Grb2 REAC A B -addmsg /kinetics/MAPK*/phosph_Sos /kinetics/Sos/Sos* MM_PRD pA -addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos* REAC A B -addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos* REAC A B -addmsg /kinetics/Sos/Sos* /kinetics/Sos/dephosph_Sos SUBSTRATE n -addmsg /kinetics/Sos/Sos /kinetics/Sos/dephosph_Sos PRODUCT n -addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n -addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Grb2_bind_Sos PRODUCT n -addmsg /kinetics/Sos/Sos /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n -addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos REAC A B -addmsg /kinetics/MAPK*/phosph_Sos /kinetics/Sos/Sos REAC sA B -addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos REAC B A -addmsg /kinetics/MAPK* /graphs/conc1/MAPK*.Co PLOT Co *MAPK*.Co *orange -enddump -// End of dump - -call /kinetics/PKC-active/PKC-act-raf/notes LOAD \ -"Rate consts from Chen et al Biochem 32, 1032 (1993)" \ -"k3 = k2 = 4" \ -"k1 = 9e-5" \ -"recalculated gives 1.666e-5, which is not very different." \ -"Looks like k3 is rate-limiting in this case: there is a huge amount" \ -"of craf locked up in the enz complex. Let us assume a 10x" \ -"higher Km, ie, lower affinity. k1 drops by 10x." \ -"Also changed k2 to 4x k3." \ -"Lowerd k1 to 1e-6 to balance 10X DAG sensitivity of PKC" -call /kinetics/PKC-active/PKC-inact-GAP/notes LOAD \ -"Rate consts copied from PCK-act-raf" \ -"This reaction inactivates GAP. The idea is from the " \ -"Boguski and McCormick review." -call /kinetics/PKC-active/PKC-act-GEF/notes LOAD \ -"Rate consts from PKC-act-raf." \ -"This reaction activates GEF. It can lead to at least 2X stim of ras, and" \ -"a 2X stim of MAPK over and above that obtained via direct phosph of" \ -"c-raf. Note that it is a push-pull reaction, and there is also a contribution" \ -"through the phosphorylation and inactivation of GAPs." \ -"The original PKC-act-raf rate consts are too fast. We lower K1 by 10 X" -call /kinetics/MAPK*/MAPK*-feedback/notes LOAD \ -"Ueki et al JBC 269(22):15756-15761 show the presence of" \ -"this step, but not the rate consts, which are derived from" \ -"Sanghera et al JBC 265(1):52-57, 1990, see the deriv in the" \ -"MAPK* notes." -call /kinetics/MAPK*/phosph_Sos/notes LOAD \ -"See Porfiri and McCormick JBC 271:10 pp5871 1996 for the" \ -"existence of this step. We'll take the rates from the ones" \ -"used for the phosph of Raf by MAPK." \ -"Sep 17 1997: The transient activation curve matches better" \ -"with k1 up by 10 x." -call /kinetics/BetaGamma/notes LOAD \ -"These exist in a nebulous sense in this model, basically only to balance" \ -"the conservation equations. The details of their reassociation with G-GDP" \ -"are not modeled" \ -"Resting level =0.0094, stim level =.0236 from all42.g ish." -call /kinetics/MAPK/craf-1/notes LOAD \ -"Couldn't find any ref to the actual conc of craf-1 but I" \ -"should try Strom et al Oncogene 5 pp 345" \ -"In line with the other kinases in the cascade, I estimate the conc to be" \ -"0.2 uM. To init we use 0.15, which is close to equil" -call /kinetics/MAPK/MAPKK/notes LOAD \ -"Conc is from Seger et al JBC 267:20 pp14373 (1992)" \ -"mwt is 45/46 Kd" \ -"We assume that phosphorylation on both ser and thr is needed for" \ -"activiation. See Kyriakis et al Nature 358 417 1992" \ -"Init conc of total is 0.18" \ -"" -call /kinetics/MAPK/MAPK/notes LOAD \ -"conc is from Sanghera et al JBC 265 pp 52 (1990)" \ -"A second calculation gives 3.1 uM, from same paper." \ -"They est MAPK is 1e-4x total protein, and protein is 15% of cell wt," \ -"so MAPK is 1.5e-5g/ml = 0.36uM. which is closer to our first estimate." \ -"Lets use this." -call /kinetics/MAPK/craf-1**/notes LOAD \ -"Negative feedback by MAPK* by hyperphosphorylating craf-1* gives" \ -"rise to this pool." \ -"Ueki et al JBC 269(22):15756-15761, 1994" \ -"" -call /kinetics/MAPK/MAPK-tyr/notes LOAD \ -"Haystead et al FEBS Lett. 306(1) pp 17-22 show that phosphorylation" \ -"is strictly sequential, first tyr185 then thr183." -call /kinetics/MAPK/MAPKK*/notes LOAD \ -"MAPKK phosphorylates MAPK on both the tyr and thr residues, first" \ -"tyr then thr. Refs: Seger et al JBC267:20 pp 14373 1992" \ -"The MAPKK itself is phosphorylated on ser as well as thr residues." \ -"Let us assume that the ser goes first, and that the sequential phosphorylation" \ -"is needed. See Kyriakis et al Nature 358 417-421 1992" -call /kinetics/MAPK/MAPKK*/MAPKKtyr/notes LOAD \ -"The actual MAPKK is 2 forms from Seger et al JBC 267:20 14373(1992)" \ -"Vmax = 150nmol/min/mg" \ -"From Haystead et al FEBS 306(1):17-22 we get Km=46.6nM for at least one" \ -"of the phosphs." \ -"Putting these together:" \ -"k3=0.15/sec, scale to get k2=0.6." \ -"k1=0.75/46.6nM=2.7e-5" -call /kinetics/MAPK/MAPKK*/MAPKKthr/notes LOAD \ -"Rate consts same as for MAPKKtyr." -call /kinetics/MAPK/MAPKK-ser/notes LOAD \ -"Intermediately phophorylated, assumed inactive, form of MAPKK" -call /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.1/notes LOAD \ -"Kinetics are the same as for the craf-1* activity, ie.," \ -"k1=1.1e-6, k2=.42, k3 =0.105" \ -"These are based on Force et al PNAS USA 91 1270-1274 1994." \ -"These parms cannot reach the observed 4X stim of MAPK. So lets" \ -"increase the affinity, ie, raise k1 10X to 1.1e-5" \ -"Lets take it back down to where it was." \ -"Back up to 5X: 5.5e-6" -call /kinetics/MAPK/Raf-GTP-Ras*/Raf-GTP-Ras*.2/notes LOAD \ -"Same kinetics as other c-raf activated forms. See " \ -"Force et al PNAS 91 1270-1274 1994." \ -"k1 = 1.1e-6, k2 = .42, k3 = 1.05" \ -"raise k1 to 5.5e-6" \ -"" -call /kinetics/MKP-1/notes LOAD \ -"MKP-1 dephosphoryates and inactivates MAPK in vivo: Sun et al Cell 75 " \ -"487-493 1993. Levels of MKP-1" \ -"are regulated, and rise in 1 hour. " \ -"Kinetics from Charles et al PNAS 90:5292-5296 1993. They refer" \ -"to Charles et al Oncogene 7 187-190 who show that half-life of MKP1/3CH134" \ -"is 40 min. 80% deph of MAPK in 20 min" \ -"Sep 17 1997: CoInit now 0.4x to 0.0032. See parm searches" \ -"from jun96 on." -call /kinetics/MKP-1/MKP1-tyr-deph/notes LOAD \ -"The original kinetics have been modified to obey the k2 = 4 * k3 rule," \ -"while keeping kcat and Km fixed. As noted in the NOTES, the only constraining" \ -"data point is the time course of MAPK dephosphorylation, which this" \ -"model satisfies. It would be nice to have more accurate estimates of" \ -"rate consts and MKP-1 levels from the literature. " \ -"Effective Km : 67 nM" \ -"kcat = 1.43 umol/min/mg" -call /kinetics/MKP-1/MKP1-thr-deph/notes LOAD \ -"See MKP1-tyr-deph" -call /kinetics/Ras-act-craf/notes LOAD \ -"Assume the binding is fast and limited only by the amount of " \ -"Ras* available. So kf=kb/[craf-1]" \ -"If kb is 1/sec, then kf = 1/0.2 uM = 1/(0.2 * 6e5) = 8.3e-6" \ -"Later: Raise it by 10 X to 4e-5" \ -"From Hallberg et al JBC 269:6 3913-3916 1994, 3% of cellular Raf is" \ -"complexed with Ras. So we raise kb 4x to 4" \ -"This step needed to memb-anchor and activate Raf: Leevers et al Nature" \ -"369 411-414" \ -"(I don't...." -call /kinetics/PPhosphatase2A/notes LOAD \ -"Refs: Pato et al Biochem J 293:35-41(93);" \ -"Takai&Mieskes Biochem J 275:233-239" \ -"k1=1.46e-4, k2=1000,k3=250. these use" \ -"kcat values for calponin. Also, units of kcat may be in min!" \ -"revert to Vmax base:" \ -"k3=6, k2=25,k1=3.3e-6 or 6,6,1e-6" \ -"CoInit assumed 0.1 uM." \ -"See NOTES for MAPK_Ras50.g. CoInit now 0.08" \ -"Sep 17 1997: Raise CoInt 1.4x to 0.224, see parm" \ -"searches from jun 96 on." \ -"" -call /kinetics/PPhosphatase2A/craf-deph/notes LOAD \ -"See parent PPhosphatase2A for parms" \ -"" -call /kinetics/PPhosphatase2A/MAPKK-deph/notes LOAD \ -"See: Kyriakis et al Nature 358 pp 417-421 1992" \ -"Ahn et al Curr Op Cell Biol 4:992-999 1992 for this pathway." \ -"See parent PPhosphatase2A for parms." -call /kinetics/PPhosphatase2A/craf**-deph/notes LOAD \ -"Ueki et al JBC 269(22) pp 15756-15761 1994 show hyperphosphorylation of" \ -"craf, so this is there to dephosphorylate it. Identity of phosphatase is not" \ -"known to me, but it may be PP2A like the rest, so I have made it so." -call /kinetics/Ras/notes LOAD \ -"Ras has now gotten to be a big enough component of the model to" \ -"deserve its own group. The main refs are" \ -"Boguski and McCormick Nature 366 643-654 '93 Major review" \ -"Eccleston et al JBC 268:36 pp 27012-19" \ -"Orita et al JBC 268:34 2554246" -call /kinetics/Ras/bg-act-GEF/notes LOAD \ -"SoS/GEF is present at 50 nM ie 3e4/cell. BetaGamma maxes out at 9e4." \ -"Assume we have 1/3 of the GEF active when the BetaGamma is 1.5e4." \ -"so 1e4 * kb = 2e4 * 1.5e4 * kf, so kf/kb = 3e-5. The rate of this equil should" \ -"be reasonably fast, say 1/sec" \ -"" -call /kinetics/Ras/GEF-Gprot-bg/notes LOAD \ -"Guanine nucleotide exchange factor. This activates raf by exchanging bound" \ -"GDP with GTP. I have left the GDP/GTP out of this reaction, it would be" \ -"trivial to put them in. See Boguski & McCormick." \ -"Possible candidate molecules: RasGRF, smgGDS, Vav (in dispute). " \ -"rasGRF: Kcat= 1.2/min Km = 680 nM" \ -"smgGDS: Kcat: 0.37 /min, Km = 220 nM." \ -"vav: Turnover up over baseline by 10X, " \ -"" -call /kinetics/Ras/GEF-Gprot-bg/GEF-bg_act-ras/notes LOAD \ -"Kinetics based on the activation of Gq by the receptor complex in the" \ -"Gq model (in turn based on the Mahama and Linderman model)" \ -"k1 = 2e-5, k2 = 1e-10, k3 = 10 (I do not know why they even bother with k2)." \ -"Lets put k1 at 2e-6 to get a reasonable equilibrium" \ -"More specific values from, eg.g: Orita et al JBC 268(34) 25542-25546" \ -"from rasGRF and smgGDS: k1=3.3e-7; k2 = 0.08, k3 = 0.02" \ -"" -call /kinetics/Ras/inact-GEF/notes LOAD \ -"Assume that SoS is present only at 50 nM." \ -"Revised to 100 nM to get equil to experimentally known levels." -call /kinetics/Ras/GEF*/notes LOAD \ -"phosphorylated and thereby activated form of GEF. See, e.g." \ -"Orita et al JBC 268:34 25542-25546 1993, Gulbins et al." \ -"It is not clear whether there is major specificity for tyr or ser/thr." -call /kinetics/Ras/GEF*/GEF*-act-ras/notes LOAD \ -"Kinetics same as GEF-bg-act-ras" \ -"" -call /kinetics/Ras/GTP-Ras/notes LOAD \ -"Only a very small fraction (7% unstim, 15% stim) of ras is GTP-bound." \ -"Gibbs et al JBC 265(33) 20437" \ -"" -call /kinetics/Ras/GDP-Ras/notes LOAD \ -"GDP bound form. See Rosen et al Neuron 12 1207-1221 June 1994." \ -"the activation loop is based on Boguski and McCormick Nature 366 643-654 93" \ -"Assume Ras is present at about the same level as craf-1, 0.2 uM." \ -"Hallberg et al JBC 269:6 3913-3916 1994 estimate upto 5-10% of cellular" \ -"Raf is assoc with Ras. Given that only 5-10% of Ras is GTP-bound, we" \ -"need similar amounts of Ras as Raf." -call /kinetics/Ras/Ras-intrinsic-GTPase/notes LOAD \ -"This is extremely slow (1e-4), but it is significant as so little GAP actually" \ -"gets complexed with it that the total GTP turnover rises only by" \ -"2-3 X (see Gibbs et al, JBC 265(33) 20437-20422) and " \ -"Eccleston et al JBC 268(36) 27012-27019" \ -"kf = 1e-4" \ -"" -call /kinetics/Ras/dephosph-GAP/notes LOAD \ -"Assume a reasonably good rate for dephosphorylating it, 1/sec" -call /kinetics/Ras/GAP/notes LOAD \ -"GTPase-activating proteins. See Boguski and McCormick." \ -"Turn off Ras by helping to hydrolyze bound GTP. " \ -"This one is probably NF1, ie., Neurofibromin as it is inhibited by AA and lipids," \ -"and expressed in neural cells. p120-GAP is also a possible candidate, but" \ -"is less regulated. Both may exist at similar levels." \ -"See Eccleston et al JBC 268(36) pp27012-19" \ -"Level=.002" -call /kinetics/Ras/GAP/GAP-inact-ras/notes LOAD \ -"From Eccleston et al JBC 268(36)pp27012-19 get Kd < 2uM, kcat - 10/sec" \ -"From Martin et al Cell 63 843-849 1990 get Kd ~ 250 nM, kcat = 20/min" \ -"I will go with the Eccleston figures as there are good error bars (10%). In general" \ -"the values are reasonably close." \ -"k1 = 1.666e-3/sec, k2 = 1000/sec, k3 = 10/sec (note k3 is rate-limiting)" \ -"5 Nov 2002: Changed ratio term to 4 from 100. Now we have" \ -"k1=8.25e-5; k2=40, k3=10. k3 is still rate-limiting." -call /kinetics/Ras/inact-GEF*/notes LOAD \ -"Phosphorylation-inactivated form of GEF. See" \ -"Hordijk et al JBC 269:5 3534-3538 1994" \ -"and " \ -"Buregering et al EMBO J 12:11 4211-4220 1993" \ -"" -call /kinetics/Ras/CaM-bind-GEF/notes LOAD \ -"We have no numbers for this. It is probably between" \ -"the two extremes represented by the CaMKII phosph states," \ -"and I have used guesses based on this." \ -"kf=1e-4" \ -"kb=1" \ -"The reaction is based on Farnsworth et al Nature 376 524-527" \ -"1995" -call /kinetics/Ras/CaM-GEF/notes LOAD \ -"See Farnsworth et al Nature 376 524-527 1995" -call /kinetics/Ras/CaM-GEF/CaM-GEF-act-ras/notes LOAD \ -"Kinetics same as GEF-bg_act-ras" \ -"" -call /kinetics/PKA-active/PKA-phosph-GEF/notes LOAD \ -"This pathway inhibits Ras when cAMP is elevated. See:" \ -"Hordijk et al JBC 269:5 3534-3538 1994" \ -"Burgering et al EMBO J 12:11 4211-4220 1993" \ -"The rates are the same as used in PKA-phosph-I1" -call /kinetics/CaM-Ca4/notes LOAD \ -"Resting level is ~1e-5 uM, small enough to ignore." -call /kinetics/EGFR/EGFR/notes LOAD \ -"Berkers et al JBC 266 say 22K hi aff recs." \ -"Sherrill and Kyte Biochemistry 35 use range 4-200 nM." \ -"These match, lets use them." -call /kinetics/EGFR/act_EGFR/notes LOAD \ -"Affinity of EGFR for EGF is complex: depends on [EGFR]." \ -"We'll assume fixed [EGFR] and use exptal" \ -"affinity ~20 nM (see Sherrill and Kyte" \ -"Biochem 1996 35 5705-5718, Berkers et al JBC 266:2 922-927" \ -"1991, Sorokin et al JBC 269:13 9752-9759 1994). " \ -"Tau =~2 min (Davis et al JBC 263:11 5373-5379 1988)" \ -"or Berkers Kass = 6.2e5/M/sec, Kdiss=3.5e-4/sec." \ -"Sherrill and Kyte have Hill Coeff=1.7" \ -"" -call /kinetics/EGFR/L.EGFR/notes LOAD \ -"This is terribly simplified: there are many interesting" \ -"intermediate stages, including dimerization and assoc" \ -"with adapter molecules like Shc, that contribute to the" \ -"activation of the EGFR." -call /kinetics/EGFR/L.EGFR/phosph_Shc/notes LOAD \ -"Rates from Okada et al JBC 270:35 pp 20737 1995" \ -"Km = 0.70 to 0.85 uM, Vmax = 4.4 to 5.0 pmol/min. Unfortunately" \ -"the amount of enzyme is not known, the prep is only" \ -"partially purified." \ -"Time course of phosph is max within 30 sec, falls back within" \ -"20 min. Ref: Sasaoka et al JBC 269:51 32621 1994." \ -"Use k3 = 0.1 based on this tau." \ -"" -call /kinetics/EGFR/SHC/notes LOAD \ -"There are 2 isoforms: 52 KDa and 46 KDa (See Okada et al" \ -"JBC 270:35 pp 20737 1995). They are acted up on by the EGFR" \ -"in very similar ways, and apparently both bind Grb2 similarly," \ -"so we'll bundle them together here." \ -"Sasaoka et al JBC 269:51 pp 32621 1994 show immunoprecs where" \ -"it looks like there is at least as much Shc as Grb2. So" \ -"we'll tentatively say there is 1 uM of Shc." -call /kinetics/EGFR/dephosph_Shc/notes LOAD \ -"Time course of decline of phosph is 20 min. Part of this is" \ -"the turnoff time of the EGFR itself. Lets assume a tau of" \ -"10 min for this dephosph. It may be wildly off." -call /kinetics/EGFR/Internalize/notes LOAD \ -"See Helin and Beguinot JBC 266:13 1991 pg 8363-8368." \ -"In Fig 3 they have internalization tau about 10 min, " \ -"equil at about 20% EGF available. So kf = 4x kb, and" \ -"1/(kf + kb) = 600 sec so kb = 1/3K = 3.3e-4," \ -"and kf = 1.33e-3. This doesn't take into account the" \ -"unbound receptor, so we need to push the kf up a bit, to" \ -"0.002" -call /kinetics/Sos/Shc_bind_Sos.Grb2/notes LOAD \ -"Sasaoka et al JBC 269:51 pp 32621 1994, table on pg" \ -"32623 indicates that this pathway accounts for about " \ -"50% of the GEF activation. (88% - 39%). Error is large," \ -"about 20%. Fig 1 is most useful in constraining rates." \ -"" \ -"Chook et al JBC 271:48 pp 30472, 1996 say that the Kd is" \ -"0.2 uM for Shc binding to EGFR. The Kd for Grb direct binding" \ -"is 0.7, so we'll ignore it." -call /kinetics/Sos/Grb2_bind_Sos*/notes LOAD \ -"Same rates as Grb2_bind_Sos: Porfiri and McCormick JBC" \ -"271:10 pp 5871 1996 show that the binding is not affected" \ -"by the phosph." -call /kinetics/Sos/Grb2/notes LOAD \ -"There is probably a lot of it in the cell: it is also known" \ -"as Ash (abundant src homology protein I think). Also " \ -"Waters et al JBC 271:30 18224 1996 say that only a small" \ -"fraction of cellular Grb is precipitated out when SoS is" \ -"precipitated. As most of the Sos seems to be associated" \ -"with Grb2, it would seem like there is a lot of the latter." \ -"Say 1 uM. I haven't been able to find a decent...." -call /kinetics/Sos/dephosph_Sos/notes LOAD \ -"The only clue I have to these rates is from the time" \ -"courses of the EGF activation, which is around 1 to 5 min." \ -"The dephosph would be expected to be of the same order," \ -"perhaps a bit longer. Lets use 0.002 which is about 8 min." \ -"Sep 17: The transient activation curve matches better with" \ -"kf = 0.001" -call /kinetics/Sos/Grb2_bind_Sos/notes LOAD \ -"As there are 2 SH3 domains, this reaction could be 2nd order." \ -"I have a Kd of 22 uM from peptide binding (Lemmon et al " \ -"JBC 269:50 pg 31653). However, Chook et al JBC 271:48 pg30472" \ -"say it is 0.4uM with purified proteins, so we believe them." \ -"They say it is 1:1 binding." -call /kinetics/Sos/Sos/notes LOAD \ -"I have tried using low (0.02 uM) initial concs, but these" \ -"give a very flat response to EGF stim although the overall" \ -"activation of Ras is not too bad. I am reverting to 0.1 " \ -"because we expect a sharp initial response, followed by" \ -"a decline." \ -"Sep 17 1997: The transient activation curve looks better with" \ -"[Sos] = 0.05." \ -"Apr 26 1998: Some error there, it is better where it was" \ -"at 0.1" -complete_loading diff --git a/examples/genesis/EGFR_MAPK_58.png b/examples/genesis/EGFR_MAPK_58.png deleted file mode 100644 index c9c5792e514198b446a525fb69b7b1f3235f6ee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313988 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

S*9ioZsCe60D+yQ~9z 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ξI3cFFX>ot5ap4HPz1{?3vf<$%AL&bO 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 z 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

mq4I}2UEB8=eOtCN-ylW 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%0AXhwtkyv|vj(ojP6P-v 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

%3+~$00>DU$A(4-d?}G}?z##l1 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 T{xQ2EHbP&=_(aZe`y2lT(l@YX diff --git a/examples/genesis/Kholodenko.g b/examples/genesis/Kholodenko.g deleted file mode 100644 index f6d4c5a..0000000 --- a/examples/genesis/Kholodenko.g +++ /dev/null @@ -1,528 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun May 18 16:25:59 2014 - -include kkit {argv 1} - -FASTDT = 5e-05 -SIMDT = 0.005 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 6000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1.6667e-21 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ - 0 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump group /kinetics/MAPK 0 yellow black x 0 0 "" MAPK \ - /home2/bhalla/scripts/modules/MAPK_0.g 0 0 0 1 10 0 -simundump text /kinetics/MAPK/notes 0 \ - "This is the oscillatory MAPK model from Kholodenko 2000\nEur J. Biochem 267:1583-1588\nThe original model is formulated in terms of idealized\nMichaelis-Menten enzymes and the enzyme-substrate complex\nconcentrations are therefore assumed negligible. The\ncurrent implementation of the model uses explicit enzyme\nreactions involving substrates and is therefore an\napproximation to the Kholodenko...." -call /kinetics/MAPK/notes LOAD \ -"This is the oscillatory MAPK model from Kholodenko 2000" \ -"Eur J. Biochem 267:1583-1588" \ -"The original model is formulated in terms of idealized" \ -"Michaelis-Menten enzymes and the enzyme-substrate complex" \ -"concentrations are therefore assumed negligible. The" \ -"current implementation of the model uses explicit enzyme" \ -"reactions involving substrates and is therefore an" \ -"approximation to the Kholodenko model. The approximation is" \ -"greatly improved if the enzyme is flagged as Available" \ -"which is an option in Kinetikit. This flag means that the" \ -"enzyme protein concentration is not reduced even when it" \ -"is involved in a complex. However, the substrate protein" \ -"continues to participate in enzyme-substrate complexes" \ -"and its concentration is therefore affected. Overall," \ -"this model works almost the same as the Kholodenko model" \ -"but the peak MAPK-PP amplitudes are a little reduced and" \ -"the period of oscillations is about 10% longer." \ -"If the enzymes are not flagged as Available then the" \ -"oscillations commence only when the Km for enzyme 1" \ -"is set to 0.1 uM." -simundump kpool /kinetics/MAPK/MAPK 0 0 0.3 0.3 0.3 0.3 0 0 1 0 \ - /kinetics/geometry 35 yellow -8 -7 0 -simundump text /kinetics/MAPK/MAPK/notes 0 \ - "The total concn. of MAPK is 300nM \nfrom\nKholodenko, 2000." -call /kinetics/MAPK/MAPK/notes LOAD \ -"The total concn. of MAPK is 300nM " \ -"from" \ -"Kholodenko, 2000." -simundump kpool /kinetics/MAPK/MKKK 0 0 0.1 0.1 0.1 0.1 0 0 1 0 \ - /kinetics/geometry 16 yellow -8 5 0 -simundump text /kinetics/MAPK/MKKK/notes 0 \ - "The total concn. of MKKK is 100nM \nfrom\nKholodenko, 2000" -call /kinetics/MAPK/MKKK/notes LOAD \ -"The total concn. of MKKK is 100nM " \ -"from" \ -"Kholodenko, 2000" -simundump kpool /kinetics/MAPK/MKK 0 0 0.3 0.3 0.3 0.3 0 0 1 0 \ - /kinetics/geometry 60 yellow -8 -1 0 -simundump text /kinetics/MAPK/MKK/notes 0 \ - "The total concn. of MKK is 300nM \nfrom\nKholodenko,2000" -call /kinetics/MAPK/MKK/notes LOAD \ -"The total concn. of MKK is 300nM " \ -"from" \ -"Kholodenko,2000" -simundump kpool /kinetics/MAPK/int1 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ - /kinetics/geometry 30 yellow -4 4 0 -simundump text /kinetics/MAPK/int1/notes 0 \ - "This is the intermediate enzyme which catalyses the \ndephosphorylation of MKKK-P to MKKK. The concentration\nis set to 1 nM based on\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int1/notes LOAD \ -"This is the intermediate enzyme which catalyses the " \ -"dephosphorylation of MKKK-P to MKKK. The concentration" \ -"is set to 1 nM based on" \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/int1/2 0 0 0 0 0 0.001 156.25 1 0.25 0 1 "" red \ - 30 "" -4 5 0 -simundump text /kinetics/MAPK/int1/2/notes 0 \ - "Km is 8nM and Vmax is 0.25nM.s-1 \nfrom\nKholodenko, 2000." -call /kinetics/MAPK/int1/2/notes LOAD \ -"Km is 8nM and Vmax is 0.25nM.s-1 " \ -"from" \ -"Kholodenko, 2000." -simundump kpool /kinetics/MAPK/MKKK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ - 51 yellow 0 5 0 -simundump text /kinetics/MAPK/MKKK-P/notes 0 \ - "This is the phosphorylated form of MKKK which converts MKK\nto MKK-P and then to MKK-PP\nfrom\nKholodenko, 2000." -call /kinetics/MAPK/MKKK-P/notes LOAD \ -"This is the phosphorylated form of MKKK which converts MKK" \ -"to MKK-P and then to MKK-PP" \ -"from" \ -"Kholodenko, 2000." -simundump kenz /kinetics/MAPK/MKKK-P/3 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ - "" red 51 "" -4 2 0 -simundump text /kinetics/MAPK/MKKK-P/3/notes 0 \ - "Km is 15 nM and Vmax is 0.025s-1\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/MKKK-P/3/notes LOAD \ -"Km is 15 nM and Vmax is 0.025s-1" \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/MKKK-P/4 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ - "" red 51 "" 4 2 0 -simundump text /kinetics/MAPK/MKKK-P/4/notes 0 \ - "Km is 15nM and Vmax is 0.025s-1\nfrom \nKholodenko, 2000." -call /kinetics/MAPK/MKKK-P/4/notes LOAD \ -"Km is 15nM and Vmax is 0.025s-1" \ -"from " \ -"Kholodenko, 2000." -simundump kpool /kinetics/MAPK/int3 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ - /kinetics/geometry blue yellow -4 -2 0 -simundump text /kinetics/MAPK/int3/notes 0 \ - "This intermediate enzyme catalyses the dephosphorylation of\nMKK-P to MKK. The concentration is 1nM\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int3/notes LOAD \ -"This intermediate enzyme catalyses the dephosphorylation of" \ -"MKK-P to MKK. The concentration is 1nM" \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/int3/6 0 0 0 0 0 0.001 250 3 0.75 0 1 "" red \ - blue "" -4 -1 0 -simundump text /kinetics/MAPK/int3/6/notes 0 \ - "The Km is 15nM and the Vmax is 0.75nM.s-1\nfrom\nKholodenko 2000." -call /kinetics/MAPK/int3/6/notes LOAD \ -"The Km is 15nM and the Vmax is 0.75nM.s-1" \ -"from" \ -"Kholodenko 2000." -simundump kpool /kinetics/MAPK/int5 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ - /kinetics/geometry 1 yellow -4 -8 0 -simundump text /kinetics/MAPK/int5/notes 0 \ - "This catalyses the conversion of MAPK-P to MAPK. The \nconcenration is 1nM.\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int5/notes LOAD \ -"This catalyses the conversion of MAPK-P to MAPK. The " \ -"concenration is 1nM." \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/int5/10 0 0 0 0 0 0.001 166.67 2 0.5 0 1 "" red \ - 1 "" -4 -7 0 -simundump text /kinetics/MAPK/int5/10/notes 0 \ - "The Km is 15nM and Vmax is 0.5nM.s-1\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int5/10/notes LOAD \ -"The Km is 15nM and Vmax is 0.5nM.s-1" \ -"from" \ -"Kholodenko, 2000" -simundump kpool /kinetics/MAPK/MKK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 5 \ - yellow 0 -1 0 -simundump text /kinetics/MAPK/MKK-P/notes 0 \ - "This is the single phoshorylated form of MKK.\nfrom\nKholodenko, 2000." -call /kinetics/MAPK/MKK-P/notes LOAD \ -"This is the single phoshorylated form of MKK." \ -"from" \ -"Kholodenko, 2000." -simundump kpool /kinetics/MAPK/MAPK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ - 55 yellow 0 -7 0 -simundump text /kinetics/MAPK/MAPK-P/notes 0 \ - "This is the single phopshorylated form of MAPK\nfrom\nKholodenko, 2000." -call /kinetics/MAPK/MAPK-P/notes LOAD \ -"This is the single phopshorylated form of MAPK" \ -"from" \ -"Kholodenko, 2000." -simundump kpool /kinetics/MAPK/int2 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ - /kinetics/geometry 2 yellow 4 -2 0 -simundump text /kinetics/MAPK/int2/notes 0 \ - "This intermediate enzyme which catalyses the dephosphorylation of\nMKK-PP to MKK-P. The concentration is 1nM.\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int2/notes LOAD \ -"This intermediate enzyme which catalyses the dephosphorylation of" \ -"MKK-PP to MKK-P. The concentration is 1nM." \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/int2/5 0 0 0 0 0 0.001 250 3 0.75 0 1 "" red 2 \ - "" 4 -1 0 -simundump text /kinetics/MAPK/int2/5/notes 0 \ - "The Km is 15nM and Vmax is 0.75nM.s-1 \nfrom\nKholodenko, 2000\n" -call /kinetics/MAPK/int2/5/notes LOAD \ -"The Km is 15nM and Vmax is 0.75nM.s-1 " \ -"from" \ -"Kholodenko, 2000" \ -"" -simundump kpool /kinetics/MAPK/int4 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ - /kinetics/geometry 17 yellow 4 -8 0 -simundump text /kinetics/MAPK/int4/notes 0 \ - "This intermediate enzyme catalyses the dephosphorylation of\nMAPK-PP to MAPK-P. The concentration is 1nM.\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int4/notes LOAD \ -"This intermediate enzyme catalyses the dephosphorylation of" \ -"MAPK-PP to MAPK-P. The concentration is 1nM." \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/int4/9 0 0 0 0 0 0.001 166.67 2 0.5 0 1 "" red \ - 17 "" 4 -7 0 -simundump text /kinetics/MAPK/int4/9/notes 0 \ - "The Km is 15nM and Vmax is 0.5nM.s-1 \nfrom\nKholodenko, 2000" -call /kinetics/MAPK/int4/9/notes LOAD \ -"The Km is 15nM and Vmax is 0.5nM.s-1 " \ -"from" \ -"Kholodenko, 2000" -simundump kpool /kinetics/MAPK/Ras-MKKKK 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ - /kinetics/geometry 11 yellow 6 8 0 -simundump text /kinetics/MAPK/Ras-MKKKK/notes 0 \ - "The concn. of Ras-MKKKK* is set to 1 nM implicitly\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/Ras-MKKKK/notes LOAD \ -"The concn. of Ras-MKKKK* is set to 1 nM implicitly" \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/Ras-MKKKK/1 0 0 0 0 0 0.001 1250 10 2.5 0 1 "" \ - red 11 "" -4 8 0 -simundump text /kinetics/MAPK/Ras-MKKKK/1/notes 0 \ - "The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that\nthere is 1 nM of the Ras-MKKKK.\nFrom Kholodenko, 2000.\n\nIf the enzymes are not flagged as Available, then this\nKm should be set to 0.1 to obtain oscillations." -call /kinetics/MAPK/Ras-MKKKK/1/notes LOAD \ -"The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that" \ -"there is 1 nM of the Ras-MKKKK." \ -"From Kholodenko, 2000." \ -"" \ -"If the enzymes are not flagged as Available, then this" \ -"Km should be set to 0.1 to obtain oscillations." -simundump kpool /kinetics/MAPK/inactiveRas-MKKK 0 0 0 0 0 0 0 0 1 0 \ - /kinetics/geometry 30 yellow 11 8 0 -simundump text /kinetics/MAPK/inactiveRas-MKKK/notes 0 \ - "This is the inactive form of Ras-MKKK. Based on the\nreaction scheme from Kholodenko 2000, this is equivalent\nto a binding of the MAPK-PP to the Ras. The amount of\nRas in the model is small enough that negligible amounts\nof MAPK are involved in this reaction. So it is a fair\napproximation to the negative feedback mechanism from\nKholodenko, 2000." -call /kinetics/MAPK/inactiveRas-MKKK/notes LOAD \ -"This is the inactive form of Ras-MKKK. Based on the" \ -"reaction scheme from Kholodenko 2000, this is equivalent" \ -"to a binding of the MAPK-PP to the Ras. The amount of" \ -"Ras in the model is small enough that negligible amounts" \ -"of MAPK are involved in this reaction. So it is a fair" \ -"approximation to the negative feedback mechanism from" \ -"Kholodenko, 2000." -simundump kreac /kinetics/MAPK/Neg_feedback 0 1 0.009 "" white yellow 11 2 0 -simundump text /kinetics/MAPK/Neg_feedback/notes 0 \ - "From Kholodenko, 2000 Eur J Biochem 267\nthe Kd is 9 nM. We use a rather fast Kf of 1/sec/uM\nso that equilibrium is maintained.\n" -call /kinetics/MAPK/Neg_feedback/notes LOAD \ -"From Kholodenko, 2000 Eur J Biochem 267" \ -"the Kd is 9 nM. We use a rather fast Kf of 1/sec/uM" \ -"so that equilibrium is maintained." \ -"" -simundump kpool /kinetics/MAPK/MKK-PP 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ - 0 yellow 8 -1 0 -simundump text /kinetics/MAPK/MKK-PP/notes 0 \ - "This is the double phosphorylated and active form of MKK\nfrom\nKholodenko, 2000" -call /kinetics/MAPK/MKK-PP/notes LOAD \ -"This is the double phosphorylated and active form of MKK" \ -"from" \ -"Kholodenko, 2000" -simundump kenz /kinetics/MAPK/MKK-PP/7 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ - "" red 0 "" -4 -4 0 -simundump text /kinetics/MAPK/MKK-PP/7/notes 0 \ - "The Km is 15nM which is 0.015uM Vmax is 0.025s-1\nfrom\nKholodenko, 2000.\n" -call /kinetics/MAPK/MKK-PP/7/notes LOAD \ -"The Km is 15nM which is 0.015uM Vmax is 0.025s-1" \ -"from" \ -"Kholodenko, 2000." \ -"" -simundump kenz /kinetics/MAPK/MKK-PP/8 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ - "" red 0 "" 4 -4 0 -simundump text /kinetics/MAPK/MKK-PP/8/notes 0 \ - "The Km is 15nM which is 0.015uM and Vmax is 0.025s-1\nfrom\nKholodenko, 2000\n" -call /kinetics/MAPK/MKK-PP/8/notes LOAD \ -"The Km is 15nM which is 0.015uM and Vmax is 0.025s-1" \ -"from" \ -"Kholodenko, 2000" \ -"" -simundump kpool /kinetics/MAPK/MAPK-PP 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ - 58 yellow 8 -7 0 -simundump text /kinetics/MAPK/MAPK-PP/notes 0 \ - "This is the double phosphorylated and active form of MAPK.\nfrom\nKholodenko, 2000." -call /kinetics/MAPK/MAPK-PP/notes LOAD \ -"This is the double phosphorylated and active form of MAPK." \ -"from" \ -"Kholodenko, 2000." -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 6000 0 0.3 0 -simundump xgraph /graphs/conc2 0 0 6000 4.5157e-05 0.3 0 -simundump xplot /graphs/conc1/Ras-MKKKK.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 11 0 0 1 -simundump xplot /graphs/conc1/MKKK-P.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 51 0 0 1 -simundump xplot /graphs/conc1/MKK-PP.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 0 0 0 1 -simundump xplot /graphs/conc1/MAPK-PP.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 58 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 6000 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 6000 0 1 0 -simundump xcoredraw /edit/draw 0 -10 13 -10 12 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"22 Jan 2002" \ -" " \ -" This model is based on Kholodenko, B.N." \ -" Eur. J. Biochem. 267, 1583-1588(2000)" \ -"" -addmsg /kinetics/MAPK/MKK-PP/7 /kinetics/MAPK/MAPK REAC sA B -addmsg /kinetics/MAPK/int5/10 /kinetics/MAPK/MAPK MM_PRD pA -addmsg /kinetics/MAPK/Ras-MKKKK/1 /kinetics/MAPK/MKKK REAC sA B -addmsg /kinetics/MAPK/int1/2 /kinetics/MAPK/MKKK MM_PRD pA -addmsg /kinetics/MAPK/MKKK-P/3 /kinetics/MAPK/MKK REAC sA B -addmsg /kinetics/MAPK/int3/6 /kinetics/MAPK/MKK MM_PRD pA -addmsg /kinetics/MAPK/int1 /kinetics/MAPK/int1/2 ENZYME n -addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/int1/2 SUBSTRATE n -addmsg /kinetics/MAPK/Ras-MKKKK/1 /kinetics/MAPK/MKKK-P MM_PRD pA -addmsg /kinetics/MAPK/int1/2 /kinetics/MAPK/MKKK-P REAC sA B -addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/MKKK-P/3 ENZYME n -addmsg /kinetics/MAPK/MKK /kinetics/MAPK/MKKK-P/3 SUBSTRATE n -addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/MKKK-P/4 ENZYME n -addmsg /kinetics/MAPK/MKK-P /kinetics/MAPK/MKKK-P/4 SUBSTRATE n -addmsg /kinetics/MAPK/int3 /kinetics/MAPK/int3/6 ENZYME n -addmsg /kinetics/MAPK/MKK-P /kinetics/MAPK/int3/6 SUBSTRATE n -addmsg /kinetics/MAPK/int5 /kinetics/MAPK/int5/10 ENZYME n -addmsg /kinetics/MAPK/MAPK-P /kinetics/MAPK/int5/10 SUBSTRATE n -addmsg /kinetics/MAPK/MKKK-P/4 /kinetics/MAPK/MKK-P REAC sA B -addmsg /kinetics/MAPK/MKKK-P/3 /kinetics/MAPK/MKK-P MM_PRD pA -addmsg /kinetics/MAPK/int3/6 /kinetics/MAPK/MKK-P REAC sA B -addmsg /kinetics/MAPK/int2/5 /kinetics/MAPK/MKK-P MM_PRD pA -addmsg /kinetics/MAPK/MKK-PP/8 /kinetics/MAPK/MAPK-P REAC sA B -addmsg /kinetics/MAPK/MKK-PP/7 /kinetics/MAPK/MAPK-P MM_PRD pA -addmsg /kinetics/MAPK/int5/10 /kinetics/MAPK/MAPK-P REAC sA B -addmsg /kinetics/MAPK/int4/9 /kinetics/MAPK/MAPK-P MM_PRD pA -addmsg /kinetics/MAPK/int2 /kinetics/MAPK/int2/5 ENZYME n -addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/int2/5 SUBSTRATE n -addmsg /kinetics/MAPK/int4 /kinetics/MAPK/int4/9 ENZYME n -addmsg /kinetics/MAPK/MAPK-PP /kinetics/MAPK/int4/9 SUBSTRATE n -addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/Ras-MKKKK REAC A B -addmsg /kinetics/MAPK/Ras-MKKKK /kinetics/MAPK/Ras-MKKKK/1 ENZYME n -addmsg /kinetics/MAPK/MKKK /kinetics/MAPK/Ras-MKKKK/1 SUBSTRATE n -addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/inactiveRas-MKKK REAC B A -addmsg /kinetics/MAPK/MAPK-PP /kinetics/MAPK/Neg_feedback SUBSTRATE n -addmsg /kinetics/MAPK/Ras-MKKKK /kinetics/MAPK/Neg_feedback SUBSTRATE n -addmsg /kinetics/MAPK/inactiveRas-MKKK /kinetics/MAPK/Neg_feedback PRODUCT n -addmsg /kinetics/MAPK/MKKK-P/4 /kinetics/MAPK/MKK-PP MM_PRD pA -addmsg /kinetics/MAPK/int2/5 /kinetics/MAPK/MKK-PP REAC sA B -addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/MKK-PP/7 ENZYME n -addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MKK-PP/7 SUBSTRATE n -addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/MKK-PP/8 ENZYME n -addmsg /kinetics/MAPK/MAPK-P /kinetics/MAPK/MKK-PP/8 SUBSTRATE n -addmsg /kinetics/MAPK/MKK-PP/8 /kinetics/MAPK/MAPK-PP MM_PRD pA -addmsg /kinetics/MAPK/int4/9 /kinetics/MAPK/MAPK-PP REAC sA B -addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/MAPK-PP REAC A B -addmsg /kinetics/MAPK/Ras-MKKKK /graphs/conc1/Ras-MKKKK.Co PLOT Co *Ras-MKKKK.Co *11 -addmsg /kinetics/MAPK/MKKK-P /graphs/conc1/MKKK-P.Co PLOT Co *MKKK-P.Co *51 -addmsg /kinetics/MAPK/MKK-PP /graphs/conc1/MKK-PP.Co PLOT Co *MKK-PP.Co *0 -addmsg /kinetics/MAPK/MAPK-PP /graphs/conc1/MAPK-PP.Co PLOT Co *MAPK-PP.Co *58 -enddump -// End of dump - -call /kinetics/MAPK/notes LOAD \ -"This is the oscillatory MAPK model from Kholodenko 2000" \ -"Eur J. Biochem 267:1583-1588" \ -"The original model is formulated in terms of idealized" \ -"Michaelis-Menten enzymes and the enzyme-substrate complex" \ -"concentrations are therefore assumed negligible. The" \ -"current implementation of the model uses explicit enzyme" \ -"reactions involving substrates and is therefore an" \ -"approximation to the Kholodenko model. The approximation is" \ -"greatly improved if the enzyme is flagged as Available" \ -"which is an option in Kinetikit. This flag means that the" \ -"enzyme protein concentration is not reduced even when it" \ -"is involved in a complex. However, the substrate protein" \ -"continues to participate in enzyme-substrate complexes" \ -"and its concentration is therefore affected. Overall," \ -"this model works almost the same as the Kholodenko model" \ -"but the peak MAPK-PP amplitudes are a little reduced and" \ -"the period of oscillations is about 10% longer." \ -"If the enzymes are not flagged as Available then the" \ -"oscillations commence only when the Km for enzyme 1" \ -"is set to 0.1 uM." -call /kinetics/MAPK/MAPK/notes LOAD \ -"The total concn. of MAPK is 300nM " \ -"from" \ -"Kholodenko, 2000." -call /kinetics/MAPK/MKKK/notes LOAD \ -"The total concn. of MKKK is 100nM " \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/MKK/notes LOAD \ -"The total concn. of MKK is 300nM " \ -"from" \ -"Kholodenko,2000" -call /kinetics/MAPK/int1/notes LOAD \ -"This is the intermediate enzyme which catalyses the " \ -"dephosphorylation of MKKK-P to MKKK. The concentration" \ -"is set to 1 nM based on" \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/int1/2/notes LOAD \ -"Km is 8nM and Vmax is 0.25nM.s-1 " \ -"from" \ -"Kholodenko, 2000." -call /kinetics/MAPK/MKKK-P/notes LOAD \ -"This is the phosphorylated form of MKKK which converts MKK" \ -"to MKK-P and then to MKK-PP" \ -"from" \ -"Kholodenko, 2000." -call /kinetics/MAPK/MKKK-P/3/notes LOAD \ -"Km is 15 nM and Vmax is 0.025s-1" \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/MKKK-P/4/notes LOAD \ -"Km is 15nM and Vmax is 0.025s-1" \ -"from " \ -"Kholodenko, 2000." -call /kinetics/MAPK/int3/notes LOAD \ -"This intermediate enzyme catalyses the dephosphorylation of" \ -"MKK-P to MKK. The concentration is 1nM" \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/int3/6/notes LOAD \ -"The Km is 15nM and the Vmax is 0.75nM.s-1" \ -"from" \ -"Kholodenko 2000." -call /kinetics/MAPK/int5/notes LOAD \ -"This catalyses the conversion of MAPK-P to MAPK. The " \ -"concenration is 1nM." \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/int5/10/notes LOAD \ -"The Km is 15nM and Vmax is 0.5nM.s-1" \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/MKK-P/notes LOAD \ -"This is the single phoshorylated form of MKK." \ -"from" \ -"Kholodenko, 2000." -call /kinetics/MAPK/MAPK-P/notes LOAD \ -"This is the single phopshorylated form of MAPK" \ -"from" \ -"Kholodenko, 2000." -call /kinetics/MAPK/int2/notes LOAD \ -"This intermediate enzyme which catalyses the dephosphorylation of" \ -"MKK-PP to MKK-P. The concentration is 1nM." \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/int2/5/notes LOAD \ -"The Km is 15nM and Vmax is 0.75nM.s-1 " \ -"from" \ -"Kholodenko, 2000" \ -"" -call /kinetics/MAPK/int4/notes LOAD \ -"This intermediate enzyme catalyses the dephosphorylation of" \ -"MAPK-PP to MAPK-P. The concentration is 1nM." \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/int4/9/notes LOAD \ -"The Km is 15nM and Vmax is 0.5nM.s-1 " \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/Ras-MKKKK/notes LOAD \ -"The concn. of Ras-MKKKK* is set to 1 nM implicitly" \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/Ras-MKKKK/1/notes LOAD \ -"The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that" \ -"there is 1 nM of the Ras-MKKKK." \ -"From Kholodenko, 2000." \ -"" \ -"If the enzymes are not flagged as Available, then this" \ -"Km should be set to 0.1 to obtain oscillations." -call /kinetics/MAPK/inactiveRas-MKKK/notes LOAD \ -"This is the inactive form of Ras-MKKK. Based on the" \ -"reaction scheme from Kholodenko 2000, this is equivalent" \ -"to a binding of the MAPK-PP to the Ras. The amount of" \ -"Ras in the model is small enough that negligible amounts" \ -"of MAPK are involved in this reaction. So it is a fair" \ -"approximation to the negative feedback mechanism from" \ -"Kholodenko, 2000." -call /kinetics/MAPK/Neg_feedback/notes LOAD \ -"From Kholodenko, 2000 Eur J Biochem 267" \ -"the Kd is 9 nM. We use a rather fast Kf of 1/sec/uM" \ -"so that equilibrium is maintained." \ -"" -call /kinetics/MAPK/MKK-PP/notes LOAD \ -"This is the double phosphorylated and active form of MKK" \ -"from" \ -"Kholodenko, 2000" -call /kinetics/MAPK/MKK-PP/7/notes LOAD \ -"The Km is 15nM which is 0.015uM Vmax is 0.025s-1" \ -"from" \ -"Kholodenko, 2000." \ -"" -call /kinetics/MAPK/MKK-PP/8/notes LOAD \ -"The Km is 15nM which is 0.015uM and Vmax is 0.025s-1" \ -"from" \ -"Kholodenko, 2000" \ -"" -call /kinetics/MAPK/MAPK-PP/notes LOAD \ -"This is the double phosphorylated and active form of MAPK." \ -"from" \ -"Kholodenko, 2000." -complete_loading diff --git a/examples/genesis/Kholodenko.png b/examples/genesis/Kholodenko.png deleted file mode 100644 index 370e04c6707db3ff09add9c33b3b34f1c3516b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46401 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 ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/b.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/c.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2500 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 2500 0 1 0 -simundump xcoredraw /edit/draw 0 -9 6 -5 24 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"19 May 2014. M1719.g, implemented by hand." \ -"This is the version start version." -addmsg /kinetics/b /kinetics/b/autocat ENZYME n -addmsg /kinetics/b/autocat /kinetics/b REAC eA B -addmsg /kinetics/a /kinetics/b/autocat SUBSTRATE n -addmsg /kinetics/b/autocat /kinetics/a REAC sA B -addmsg /kinetics/b/autocat /kinetics/b MM_PRD pA - -addmsg /kinetics/b /kinetics/b/inhib ENZYME n -addmsg /kinetics/b/inhib /kinetics/b REAC eA B -addmsg /kinetics/c /kinetics/b/inhib SUBSTRATE n -addmsg /kinetics/b/inhib /kinetics/c REAC sA B -addmsg /kinetics/b/inhib /kinetics/a MM_PRD pA - -addmsg /kinetics/c /kinetics/c/autocat ENZYME n -addmsg /kinetics/c/autocat /kinetics/c REAC eA B -addmsg /kinetics/a /kinetics/c/autocat SUBSTRATE n -addmsg /kinetics/c/autocat /kinetics/a REAC sA B -addmsg /kinetics/c/autocat /kinetics/c MM_PRD pA - -addmsg /kinetics/c /kinetics/c/inhib ENZYME n -addmsg /kinetics/c/inhib /kinetics/c REAC eA B -addmsg /kinetics/b /kinetics/c/inhib SUBSTRATE n -addmsg /kinetics/c/inhib /kinetics/b REAC sA B -addmsg /kinetics/c/inhib /kinetics/a MM_PRD pA - -addmsg /kinetics/b /kinetics/equil SUBSTRATE n -addmsg /kinetics/c /kinetics/equil PRODUCT n -addmsg /kinetics/equil /kinetics/b REAC A B -addmsg /kinetics/equil /kinetics/c REAC B A - -addmsg /kinetics/a /graphs/conc1/a.Co PLOT Co *a.Co *red -addmsg /kinetics/b /graphs/conc1/b.Co PLOT Co *b.Co *darkgreen -addmsg /kinetics/c /graphs/conc2/c.Co PLOT Co *c.Co *blue -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/OSC_Cspace.g b/examples/genesis/OSC_Cspace.g deleted file mode 100644 index 6172a1d..0000000 --- a/examples/genesis/OSC_Cspace.g +++ /dev/null @@ -1,260 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Fri Sep 7 14:04:57 2012 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.005 -CONTROLDT = 5 -PLOTDT = 10 -MAXTIME = 2500 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 9.9998e-20 3 sphere "" white black 0 \ - 0 0 -simundump geometry /kinetics/geometry[1] 0 9.9998e-21 3 sphere "" white black \ - 0 0 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump kreac /kinetics/exo 0 0.005 0 "" white black 3 9 0 -simundump text /kinetics/exo/notes 0 "" -call /kinetics/exo/notes LOAD \ -"" -simundump kreac /kinetics/endo 0 0.01 0 "" white black -6 11 0 -simundump text /kinetics/endo/notes 0 "" -call /kinetics/endo/notes LOAD \ -"" -simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ - -7 6 0 -simundump text /kinetics/B/notes 0 "" -call /kinetics/B/notes LOAD \ -"" -simundump kpool /kinetics/B/P 0 0 0.1 0.1 0.6 0.6 0 0 6 0 /kinetics/geometry \ - 4 yellow -2 2 0 -simundump text /kinetics/B/P/notes 0 "" -call /kinetics/B/P/notes LOAD \ -"" -simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 16.667 4 1 0 0 "" red 4 "" -2 0 \ - 0 -simundump text /kinetics/B/P/kenz/notes 0 "" -call /kinetics/B/P/kenz/notes LOAD \ -"" -simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -4 -4 0 -simundump text /kinetics/B/basal/notes 0 "" -call /kinetics/B/basal/notes LOAD \ -"" -simundump kpool /kinetics/B/M 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 62 \ - yellow -5 7 0 -simundump text /kinetics/B/M/notes 0 "" -call /kinetics/B/M/notes LOAD \ -"" -simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ - yellow 2 2 0 -simundump text /kinetics/B/M*/notes 0 "" -call /kinetics/B/M*/notes LOAD \ -"" -simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.41667 2 0.5 0 0 "" red \ - 28 "" 1 6 0 -simundump text /kinetics/B/M*/kenz/notes 0 "" -call /kinetics/B/M*/kenz/notes LOAD \ -"" -simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 16 \ - 0 -simundump text /kinetics/A/notes 0 "" -call /kinetics/A/notes LOAD \ -"" -simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 -1 8 0 -simundump text /kinetics/A/basal/notes 0 "" -call /kinetics/A/basal/notes LOAD \ -"" -simundump kpool /kinetics/A/Stot 0 0 0 3.5 21 0 0 0 6 0 /kinetics/geometry[2] \ - 41 16 0 24 0 -simundump text /kinetics/A/Stot/notes 0 "" -call /kinetics/A/Stot/notes LOAD \ -"" -simundump kpool /kinetics/A/P 0 0 0.1 0.1 0.59999 0.59999 0 0 5.9999 0 \ - /kinetics/geometry[1] 3 16 -1 11 0 -simundump text /kinetics/A/P/notes 0 "" -call /kinetics/A/P/notes LOAD \ -"" -simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 16.667 4 1 0 0 "" red 3 "" \ - -1 13 0 -simundump text /kinetics/A/P/kenz/notes 0 "" -call /kinetics/A/P/kenz/notes LOAD \ -"" -simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 47 \ - 16 4 19 0 -simundump text /kinetics/A/M*/notes 0 "" -call /kinetics/A/M*/notes LOAD \ -"" -simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.41667 2 0.5 0 0 "" red \ - 57 "" -1 18 0 -simundump text /kinetics/A/M*/kenz/notes 0 "" -call /kinetics/A/M*/kenz/notes LOAD \ -"" -simundump kpool /kinetics/A/M 0 0 3.5001 3.5001 21 21 0 0 5.9999 0 \ - /kinetics/geometry 53 16 -4 17 0 -simundump text /kinetics/A/M/notes 0 "" -call /kinetics/A/M/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2500 0.001 3 0 -simundump xgraph /graphs/conc2 0 0 2500 0 5 0 -simundump xplot /graphs/conc1/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc2/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2500 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 2500 0 1 0 -simundump xcoredraw /edit/draw 0 -9 6 -5 24 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"12 July 2009. cyc_dup_bis_BIS.g" \ -"cyc_dup_bis_OSC.g: this has a stable point and an oscillatory" \ -"domain. This saved version will oscillate. It has all initial" \ -"M molecules in A/M*. If they start out in B/M then it settles to" \ -"a stable point." \ -"cyc_dup_bis_OSC_ref.g: Same as above only this is a reference" \ -"version with all molecules in B/M." \ -"" \ -"31 May 2009. cyc_dup_bis.g Based on diff_dup_bis5.g. Converted" \ -"to duplicated cyclic form. Matched with cyc_dup.xls:bisslope3," \ -"but the match is poor." \ -"cyc_dup_bis2.g: matches cyc_dup.xls:bisslope2. Good match." \ -"" \ -"26 May 2009. diff_dup_bis5.g: Supposedly pentstable." \ -"" \ -"15 May 2009. diff_dup_bis2.g. Based on diff_dup_bis.g, altered" \ -"rates toward quad stable prediction." \ -"fix_bis1.g: Testing bistability. This variant has range of " \ -"about 30%, from 1.25 to 1.65." \ -"fix_bis2.g: Using the above rates for both bulk and PSD." \ -"fix_bis3.g: Reconnected the diffusion reacs." \ -"" \ -"13 May 2009. diff_dup_bis.g Based on diff_eq_bis3.g, set up" \ -"duplicate reaction set in the bulk." \ -"" \ -"10 May 2009. diff_eq_bis2.g. Based on diff_eq_bis.g, here I fixed" \ -"up the nasty sumtotal operation and now the C_psd* molecule " \ -"handles its own enzyme site rather than setting up a slave" \ -"pool and using that to do the enzyme." \ -"diff_eq_bis3.g: Based on diff_eq_bis2.g, restored original" \ -"cycling parameters as diff_eq_bis.g" \ -"" \ -"" \ -"9 May 2009. diff_eq_bis.g. Based on min6.g. Implement" \ -"diffusive exchange of equil reaction with bistable." \ -"" \ -"11 Apr 2009: min5.g: Eliminated the anchor protein from min4.g" \ -"min6.g: Replace the entire bulk bistable system" \ -"with a single dephosphorylation reaction." \ -"" \ -"min4.g: Includes trafficking too." \ -"" \ -"min3.g: Includes both bulk and PSD reactions" \ -"" \ -"min2psd.g: Same as min2.g, moved to PSD." \ -"" \ -"min2.g: This version is bistable." -addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/exo PRODUCT n -addmsg /kinetics/A/M /kinetics/endo SUBSTRATE n -addmsg /kinetics/B/M /kinetics/endo PRODUCT n -addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B -addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n -addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n -addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n -addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n -addmsg /kinetics/B/basal /kinetics/B/M REAC A B -addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA -addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B -addmsg /kinetics/endo /kinetics/B/M REAC B A -addmsg /kinetics/B/basal /kinetics/B/M* REAC B A -addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA -addmsg /kinetics/exo /kinetics/B/M* REAC A B -addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n -addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n -addmsg /kinetics/A/M /kinetics/A/Stot SUMTOTAL n nInit -addmsg /kinetics/A/M* /kinetics/A/Stot SUMTOTAL n nInit -addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/P/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B -addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n -addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n -addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA -addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B -addmsg /kinetics/A/basal /kinetics/A/M* REAC B A -addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B -addmsg /kinetics/exo /kinetics/A/M* REAC B A -addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n -addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B -addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA -addmsg /kinetics/A/basal /kinetics/A/M REAC A B -addmsg /kinetics/endo /kinetics/A/M REAC A B -addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 -addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 -addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 -addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/OSC_diff_vols.g b/examples/genesis/OSC_diff_vols.g deleted file mode 100644 index 35f4a0b..0000000 --- a/examples/genesis/OSC_diff_vols.g +++ /dev/null @@ -1,219 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Tue Jan 21 14:05:52 2014 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.005 -CONTROLDT = 5 -PLOTDT = 10 -MAXTIME = 2500 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 9.9998e-20 3 sphere "" white black 0 \ - 0 0 -simundump geometry /kinetics/geometry[1] 0 9.9998e-21 3 sphere "" white black \ - 0 0 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump kreac /kinetics/exo 0 0.005 0 "" white black 3 9 0 -simundump text /kinetics/exo/notes 0 "" -call /kinetics/exo/notes LOAD \ -"" -simundump kreac /kinetics/endo 0 0.01 0 "" white black -6 11 0 -simundump text /kinetics/endo/notes 0 "" -call /kinetics/endo/notes LOAD \ -"" -simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ - -7 6 0 -simundump text /kinetics/B/notes 0 "" -call /kinetics/B/notes LOAD \ -"" -simundump kpool /kinetics/B/P 0 0 0.1 0.1 0.6 0.6 0 0 6 0 /kinetics/geometry \ - 4 yellow -2 2 0 -simundump text /kinetics/B/P/notes 0 "" -call /kinetics/B/P/notes LOAD \ -"" -simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 16.667 4 1 0 0 "" red 4 "" -2 0 \ - 0 -simundump text /kinetics/B/P/kenz/notes 0 "" -call /kinetics/B/P/kenz/notes LOAD \ -"" -simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -4 -4 0 -simundump text /kinetics/B/basal/notes 0 "" -call /kinetics/B/basal/notes LOAD \ -"" -simundump kpool /kinetics/B/M 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 62 \ - yellow -5 7 0 -simundump text /kinetics/B/M/notes 0 "" -call /kinetics/B/M/notes LOAD \ -"" -simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ - yellow 2 2 0 -simundump text /kinetics/B/M*/notes 0 "" -call /kinetics/B/M*/notes LOAD \ -"" -simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.41667 2 0.5 0 0 "" red \ - 28 "" 1 6 0 -simundump text /kinetics/B/M*/kenz/notes 0 "" -call /kinetics/B/M*/kenz/notes LOAD \ -"" -simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 16 \ - 0 -simundump text /kinetics/A/notes 0 "" -call /kinetics/A/notes LOAD \ -"" -simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 -1 8 0 -simundump text /kinetics/A/basal/notes 0 "" -call /kinetics/A/basal/notes LOAD \ -"" -simundump kpool /kinetics/A/Stot 0 0 0 1.75 21 0 0 0 12 0 \ - /kinetics/geometry[2] 41 16 0 24 0 -simundump text /kinetics/A/Stot/notes 0 "" -call /kinetics/A/Stot/notes LOAD \ -"" -simundump kpool /kinetics/A/P 0 0 0.049999 0.049999 0.59999 0.59999 0 0 12 0 \ - /kinetics/geometry[1] 3 16 -1 11 0 -simundump text /kinetics/A/P/notes 0 "" -call /kinetics/A/P/notes LOAD \ -"" -simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 16.667 4 1 0 0 "" red 3 "" \ - -1 13 0 -simundump text /kinetics/A/P/kenz/notes 0 "" -call /kinetics/A/P/kenz/notes LOAD \ -"" -simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 12 0 /kinetics/geometry 47 16 \ - 4 19 0 -simundump text /kinetics/A/M*/notes 0 "" -call /kinetics/A/M*/notes LOAD \ -"" -simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.41667 2 0.5 0 0 "" red \ - 57 "" -1 18 0 -simundump text /kinetics/A/M*/kenz/notes 0 "" -call /kinetics/A/M*/kenz/notes LOAD \ -"" -simundump kpool /kinetics/A/M 0 0 1.75 1.75 21 21 0 0 12 0 /kinetics/geometry \ - 53 16 -4 17 0 -simundump text /kinetics/A/M/notes 0 "" -call /kinetics/A/M/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2500 0.001 3 0 -simundump xgraph /graphs/conc2 0 0 2500 0 5 0 -simundump xplot /graphs/conc1/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc2/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2500 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 2500 0 1 0 -simundump xcoredraw /edit/draw 0 -9 6 -6 26 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"21 Jan 2014." \ -"Using " \ -"different volumes for the two compartments, based on OSC_Cspace.g" -addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/exo PRODUCT n -addmsg /kinetics/A/M /kinetics/endo SUBSTRATE n -addmsg /kinetics/B/M /kinetics/endo PRODUCT n -addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B -addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n -addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n -addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n -addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n -addmsg /kinetics/B/basal /kinetics/B/M REAC A B -addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA -addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B -addmsg /kinetics/endo /kinetics/B/M REAC B A -addmsg /kinetics/B/basal /kinetics/B/M* REAC B A -addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA -addmsg /kinetics/exo /kinetics/B/M* REAC A B -addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n -addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n -addmsg /kinetics/A/M /kinetics/A/Stot SUMTOTAL n nInit -addmsg /kinetics/A/M* /kinetics/A/Stot SUMTOTAL n nInit -addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/P/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/M*/kenz /kinetics/A/Stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B -addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n -addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n -addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA -addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B -addmsg /kinetics/A/basal /kinetics/A/M* REAC B A -addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B -addmsg /kinetics/exo /kinetics/A/M* REAC B A -addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n -addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B -addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA -addmsg /kinetics/A/basal /kinetics/A/M REAC A B -addmsg /kinetics/endo /kinetics/A/M REAC A B -addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 -addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 -addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 -addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/Osc_cspace_ref_model.png b/examples/genesis/Osc_cspace_ref_model.png deleted file mode 100644 index aaf7f4d3e37a6779f868a816961b6caa5cfac872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45319 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 diff --git a/examples/genesis/Repressillator.g b/examples/genesis/Repressillator.g deleted file mode 100644 index d784b24..0000000 --- a/examples/genesis/Repressillator.g +++ /dev/null @@ -1,832 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun May 18 16:56:17 2014 - -include kkit {argv 1} - -FASTDT = 5e-05 -SIMDT = 0.01 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 10000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 3e-18 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 0 0 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump group /kinetics/lac_gene 0 yellow black x 0 0 "" lac_gene \ - /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 27 0 0 -simundump text /kinetics/lac_gene/notes 0 \ - "This is a group of reactions resulting in the production\nof Lac" -call /kinetics/lac_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lac" -simundump kpool /kinetics/lac_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 52 yellow 26 -12 0 -simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/notes 0 \ - "it represents the promotor with both of its sites\n bound by the inhibitor" -call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 0 0 0 \ - 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 26 -11 0 -simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes 0 \ - "Rates from\nBox 1 Elowitz et al Nature (2000)\n403: 335-338" -call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -simundump kreac /kinetics/lac_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ - yellow 30 -13 0 -simundump text /kinetics/lac_gene/inhib_reac[1]/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -simundump kpool /kinetics/lac_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 yellow 33 -12 0 -simundump text /kinetics/lac_gene/l_op_1rst_bound/notes 0 \ - "it represents the promotor with one of its sites\n bound by the inhibitor" -call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/lac_gene/l_op_1rst_bound/lac_transcription 0 0 0 0 0 \ - 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 33 -10 0 -simundump text /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes 0 \ - "Rates from\nBox 1 Elowitz et al Nature 2000\n403: 335-338" -call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature 2000" \ -"403: 335-338" -simundump kreac /kinetics/lac_gene/inhib_reac 0 0.0055556 2.24 "" white \ - yellow 36 -13 0 -simundump text /kinetics/lac_gene/inhib_reac/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 224 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -simundump kpool /kinetics/lac_gene/lac_operator 0 0 0.022222 0.022222 40 40 0 \ - 0 1800 0 /kinetics/geometry 36 yellow 40 -12 0 -simundump text /kinetics/lac_gene/lac_operator/notes 0 \ - "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/lac_gene/lac_operator/lac_transcription2 0 0 0 0 0 \ - 1800 2.4998 2 0.5 0 1 "" red 36 "" 40 -11 0 -simundump text /kinetics/lac_gene/lac_operator/lac_transcription2/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\n403:335-338" -call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"403:335-338" -simundump kpool /kinetics/lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 12 yellow 26 -8 0 -simundump text /kinetics/lac_gene/lac_mRNA/notes 0 \ - "The m-RNA transcribed by the lac operator\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ - 0.83494 0.668 0.167 0 1 "" red 12 "" 20 -10 0 -simundump text /kinetics/lac_gene/lac_mRNA/lac_translation/notes 0 \ - "Rates from \nBox 1 Elowitz et al Nature (2000)\n403: 335-338" -call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -simundump kpool /kinetics/lac_gene/lac 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 62 yellow 20 -15 0 -simundump text /kinetics/lac_gene/lac/notes 0 \ - "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kpool /kinetics/lac_gene/degraded_lac 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 yellow 20 -19 0 -simundump text /kinetics/lac_gene/degraded_lac/notes 0 \ - "Degradation product of lac protein" -call /kinetics/lac_gene/degraded_lac/notes LOAD \ -"Degradation product of lac protein" -simundump kpool /kinetics/lac_gene/degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 yellow 33 -8 0 -simundump text /kinetics/lac_gene/degraded_lac_mRNA/notes 0 \ - "Degradation product of lac m-RNA" -call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -simundump kreac /kinetics/lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ - yellow 29 -7 0 -simundump text /kinetics/lac_gene/lac_mRNA_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" -call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -simundump kreac /kinetics/lac_gene/lac_degradation 0 0.016666 0 "" white \ - yellow 20 -17 0 -simundump text /kinetics/lac_gene/lac_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to scaled by approx 1.4 to get desired levels\n\nElowitz et al Nature 2000. Vol403 335-338" -call /kinetics/lac_gene/lac_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to scaled by approx 1.4 to get desired levels" \ -"" \ -"Elowitz et al Nature 2000. Vol403 335-338" -simundump kpool /kinetics/lac_gene/AminoAcids 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 20 -8 0 -simundump text /kinetics/lac_gene/AminoAcids/notes 0 "" -call /kinetics/lac_gene/AminoAcids/notes LOAD \ -"" -simundump kpool /kinetics/lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 40 -8 0 -simundump text /kinetics/lac_gene/Nucleotides/notes 0 "" -call /kinetics/lac_gene/Nucleotides/notes LOAD \ -"" -simundump group /kinetics/TetR_gene 0 61 black x 0 0 "" TetR_gene \ - /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 -2 0 0 -simundump text /kinetics/TetR_gene/notes 0 \ - "This is a group of reactions resulting in the production\nof Tet R" -call /kinetics/TetR_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Tet R" -simundump kpool /kinetics/TetR_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 46 61 -3 -12 0 -simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/notes 0 \ - "it represents the promotor with both of its sites\n bound by the inhibitor" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 0 0 \ - 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" -3 -11 0 -simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes 0 \ - "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/TetR_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ - 61 1 -13 0 -simundump text /kinetics/TetR_gene/inhib_reac[1]/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -simundump kpool /kinetics/TetR_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 61 4 -12 0 -simundump text /kinetics/TetR_gene/l_op_1rst_bound/notes 0 \ - "it represents the promotor with one of its sites\n bound by the inhibitor" -call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription 0 0 0 0 \ - 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 4 -10 0 -simundump text /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes 0 \ - "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/TetR_gene/inhib_reac 0 0.0055556 2.24 "" white 61 7 \ - -13 0 -simundump text /kinetics/TetR_gene/inhib_reac/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 11 61 -9 -15 0 -simundump text /kinetics/TetR_gene/TetR/notes 0 \ - "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kpool /kinetics/TetR_gene/degraded_TetR 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 61 -9 -19 0 -simundump text /kinetics/TetR_gene/degraded_TetR/notes 0 \ - "Degradation product of lac protein" -call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ -"Degradation product of lac protein" -simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ - -9 -17 0 -simundump text /kinetics/TetR_gene/TetR_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get appropriate levels\n\nElowitz etal Nature 2000. Vol403 335-338" -call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -simundump kpool /kinetics/TetR_gene/TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 12 61 -3 -8 0 -simundump text /kinetics/TetR_gene/TetR_mRNA/notes 0 \ - "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/TetR_gene/TetR_mRNA/TetR_translation 0 0 0 0 0 1800 \ - 0.83494 0.668 0.167 0 1 "" red 12 "" -9 -10 0 -simundump text /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/TetR_gene/TetR_mRNA_degradation 0 0.005775 0 "" \ - white 61 1 -7 0 -simundump text /kinetics/TetR_gene/TetR_mRNA_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" -call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -simundump kpool /kinetics/TetR_gene/degraded_TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 61 4 -8 0 -simundump text /kinetics/TetR_gene/degraded_TetR_mRNA/notes 0 \ - "Degradation product of lac m-RNA" -call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ - 0 0 1800 0 /kinetics/geometry 36 61 11 -12 0 -simundump text /kinetics/TetR_gene/TetR_operator/notes 0 \ - "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_transcription2 0 0 0 0 \ - 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 11 -11 0 -simundump text /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 11 -8 0 -simundump text /kinetics/TetR_gene/Nucleotides/notes 0 "" -call /kinetics/TetR_gene/Nucleotides/notes LOAD \ -"" -simundump kpool /kinetics/TetR_gene/AminoAcids 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 -9 -8 0 -simundump text /kinetics/TetR_gene/AminoAcids/notes 0 "" -call /kinetics/TetR_gene/AminoAcids/notes LOAD \ -"" -simundump group /kinetics/Lcl 0 15 black x 0 0 "" yellow \ - /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 56 0 0 -simundump text /kinetics/Lcl/notes 0 \ - "This is a group of reactions resulting in the production\nof Lambda cl" -call /kinetics/Lcl/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lambda cl" -simundump kpool /kinetics/Lcl/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 52 15 55 -12 0 -simundump text /kinetics/Lcl/l_op_2nd_bound[1]/notes 0 \ - "it represents the promotor with both of its sites\n bound by the inhibitor" -call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 0 0 0 0 0 \ - 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 55 -11 0 -simundump text /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes 0 "" -call /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes LOAD \ -"" -simundump kreac /kinetics/Lcl/inhib_reac[1] 0 0.0055556 0.09 "" white 15 59 \ - -13 0 -simundump text /kinetics/Lcl/inhib_reac[1]/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -simundump kpool /kinetics/Lcl/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 15 62 -12 0 -simundump text /kinetics/Lcl/l_op_1rst_bound/notes 0 \ - "it represents the promotor with one of its sites\n bound by the inhibitor" -call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription 0 0 0 0 0 1800 \ - 0.0024998 0.002 0.0005 0 1 "" red 2 "" 62 -10 0 -simundump text /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/Lcl/inhib_reac 0 0.0055556 2.24 "" white 15 65 -13 \ - 0 -simundump text /kinetics/Lcl/inhib_reac/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -simundump kpool /kinetics/Lcl/AminoAcids 0 0 0.00055555 0.00055555 0.99999 \ - 0.99999 0 0 1800 4 /kinetics/geometry 52 15 48 -8 0 -simundump text /kinetics/Lcl/AminoAcids/notes 0 "" -call /kinetics/Lcl/AminoAcids/notes LOAD \ -"" -simundump kpool /kinetics/Lcl/Nucleotides 0 0 0.00055555 0.00055555 0.99999 \ - 0.99999 0 0 1800 4 /kinetics/geometry 6 15 69 -8 0 -simundump text /kinetics/Lcl/Nucleotides/notes 0 "" -call /kinetics/Lcl/Nucleotides/notes LOAD \ -"" -simundump kreac /kinetics/Lcl/Lcl_mRNA_degradation 0 0.005775 0 "" white 15 \ - 58 -7 0 -simundump text /kinetics/Lcl/Lcl_mRNA_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" -call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -simundump kpool /kinetics/Lcl/Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 5 15 55 -8 0 -simundump text /kinetics/Lcl/Lcl_mRNA/notes 0 \ - "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/Lcl/Lcl_mRNA/Lcl_translation 0 0 0 0 0 1800 0.83494 \ - 0.668 0.167 0 1 "" red 5 "" 48 -10 0 -simundump text /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" -call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -simundump kpool /kinetics/Lcl/Lcl 0 0 0.055555 0.055555 99.999 99.999 0 0 \ - 1800 0 /kinetics/geometry 24 15 48 -15 0 -simundump text /kinetics/Lcl/Lcl/notes 0 \ - "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kreac /kinetics/Lcl/Lcl_degradation 0 0.016666 0 "" white 15 48 -17 \ - 0 -simundump text /kinetics/Lcl/Lcl_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get the desired levels\n\nElowitz etal Nature 2000. Vol403 335-338" -call /kinetics/Lcl/Lcl_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get the desired levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -simundump kpool /kinetics/Lcl/degraded_Lcl 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 15 48 -19 0 -simundump text /kinetics/Lcl/degraded_Lcl/notes 0 \ - "Degradation product of lac protein" -call /kinetics/Lcl/degraded_Lcl/notes LOAD \ -"Degradation product of lac protein" -simundump kpool /kinetics/Lcl/degraded_Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 15 62 -8 0 -simundump text /kinetics/Lcl/degraded_Lcl_mRNA/notes 0 \ - "Degradation product of lac m-RNA" -call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -simundump kpool /kinetics/Lcl/Lcl_operator 0 0 0.022222 0.022222 40 40 0 0 \ - 1800 0 /kinetics/geometry 36 15 69 -12 0 -simundump text /kinetics/Lcl/Lcl_operator/notes 0 \ - "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/Lcl/Lcl_operator/Lcl_transcription2 0 0 0 0 0 1800 \ - 2.4998 2 0.5 0 1 "" red 36 "" 69 -11 0 -simundump text /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" -call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 10000 0 2.0691 0 -simundump xgraph /graphs/conc2 0 0 10000 0 3.33 0 -simundump xplot /graphs/conc1/TetR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 11 0 0 1 -simundump xplot /graphs/conc1/lac.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc1/Lcl.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 24 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 10000 0 95.756 0 -simundump xgraph /moregraphs/conc4 0 0 10000 0 1 0 -simundump xcoredraw /edit/draw 0 -11 71 -21 2 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"Repressilator model: A synthetic oscillatory network" \ -"of transcriptional regulators designed by Michael B. Elowitz and" \ -"Stanislas Leibler 2000 Nature 403(6767):335-338" -addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_2nd_bound[1] REAC B A -addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 ENZYME n -addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 SUBSTRATE n -addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/inhib_reac[1] PRODUCT n -addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/l_op_1rst_bound REAC B A -addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_1rst_bound REAC A B -addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/l_op_1rst_bound/lac_transcription ENZYME n -addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_1rst_bound/lac_transcription SUBSTRATE n -addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac PRODUCT n -addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/lac_operator REAC A B -addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/lac_operator/lac_transcription2 ENZYME n -addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/lac_operator/lac_transcription2 SUBSTRATE n -addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/lac_mRNA REAC A B -addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA/lac_translation ENZYME n -addmsg /kinetics/lac_gene/AminoAcids /kinetics/lac_gene/lac_mRNA/lac_translation SUBSTRATE n -addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/lac REAC A B -addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/lac MM_PRD pA -addmsg /kinetics/TetR_gene/inhib_reac /kinetics/lac_gene/lac REAC A B -addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/lac_gene/lac REAC A B -addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/degraded_lac REAC B A -addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/degraded_lac_mRNA REAC B A -addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation SUBSTRATE n -addmsg /kinetics/lac_gene/degraded_lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation PRODUCT n -addmsg /kinetics/lac_gene/degraded_lac /kinetics/lac_gene/lac_degradation PRODUCT n -addmsg /kinetics/lac_gene/lac /kinetics/lac_gene/lac_degradation SUBSTRATE n -addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/AminoAcids REAC sA B -addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/Nucleotides REAC sA B -addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/Nucleotides REAC sA B -addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_2nd_bound[1] REAC B A -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 SUBSTRATE n -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/inhib_reac[1] PRODUCT n -addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_1rst_bound REAC A B -addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/l_op_1rst_bound REAC B A -addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription SUBSTRATE n -addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac PRODUCT n -addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/TetR MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/Lcl/inhib_reac /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/degraded_TetR REAC B A -addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n -addmsg /kinetics/TetR_gene/degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/TetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/TetR_mRNA REAC A B -addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA/TetR_translation ENZYME n -addmsg /kinetics/TetR_gene/AminoAcids /kinetics/TetR_gene/TetR_mRNA/TetR_translation SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation SUBSTRATE n -addmsg /kinetics/TetR_gene/degraded_TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation PRODUCT n -addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/degraded_TetR_mRNA REAC B A -addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/TetR_operator REAC A B -addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_transcription2 ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_transcription2 SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/AminoAcids REAC sA B -addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_2nd_bound[1] REAC B A -addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 ENZYME n -addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 SUBSTRATE n -addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/inhib_reac[1] PRODUCT n -addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_1rst_bound REAC A B -addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/l_op_1rst_bound REAC B A -addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription ENZYME n -addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription SUBSTRATE n -addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac PRODUCT n -addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/inhib_reac SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac SUBSTRATE n -addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/AminoAcids REAC sA B -addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Nucleotides REAC sA B -addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Nucleotides REAC sA B -addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Nucleotides REAC sA B -addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation SUBSTRATE n -addmsg /kinetics/Lcl/degraded_Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation PRODUCT n -addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Lcl_mRNA MM_PRD pA -addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Lcl_mRNA MM_PRD pA -addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Lcl_mRNA MM_PRD pA -addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/Lcl_mRNA REAC A B -addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA/Lcl_translation ENZYME n -addmsg /kinetics/Lcl/AminoAcids /kinetics/Lcl/Lcl_mRNA/Lcl_translation SUBSTRATE n -addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/Lcl MM_PRD pA -addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/Lcl REAC A B -addmsg /kinetics/lac_gene/inhib_reac /kinetics/Lcl/Lcl REAC A B -addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/Lcl/Lcl REAC A B -addmsg /kinetics/Lcl/Lcl /kinetics/Lcl/Lcl_degradation SUBSTRATE n -addmsg /kinetics/Lcl/degraded_Lcl /kinetics/Lcl/Lcl_degradation PRODUCT n -addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/degraded_Lcl REAC B A -addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/degraded_Lcl_mRNA REAC B A -addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/Lcl_operator REAC A B -addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/Lcl_operator/Lcl_transcription2 ENZYME n -addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/Lcl_operator/Lcl_transcription2 SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *11 -addmsg /kinetics/lac_gene/lac /graphs/conc1/lac.Co PLOT Co *lac.Co *62 -addmsg /kinetics/Lcl/Lcl /graphs/conc1/Lcl.Co PLOT Co *Lcl.Co *24 -enddump -// End of dump - -call /kinetics/lac_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lac" -call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature 2000" \ -"403: 335-338" -call /kinetics/lac_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/lac_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"403:335-338" -call /kinetics/lac_gene/lac_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -call /kinetics/lac_gene/lac/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/degraded_lac/notes LOAD \ -"Degradation product of lac protein" -call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -call /kinetics/lac_gene/lac_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to scaled by approx 1.4 to get desired levels" \ -"" \ -"Elowitz et al Nature 2000. Vol403 335-338" -call /kinetics/TetR_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Tet R" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/TetR/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ -"Degradation product of lac protein" -call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/TetR_gene/TetR_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/Lcl/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lambda cl" -call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/Lcl/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -call /kinetics/Lcl/Lcl/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get the desired levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -call /kinetics/Lcl/degraded_Lcl/notes LOAD \ -"Degradation product of lac protein" -call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/Lcl/Lcl_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -complete_loading diff --git a/examples/genesis/acc35.g b/examples/genesis/acc35.g deleted file mode 100644 index 338c942..0000000 --- a/examples/genesis/acc35.g +++ /dev/null @@ -1,1373 +0,0 @@ -//genesis -// kkit Version 8 flat dumpfile - -// Saved on Fri Feb 1 12:54:24 2002 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.005 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 2000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1.6667e-21 -VERSION = 8.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump kpool CoTotal CoInit Co n nInit nTotal nMin vol slave_enable notes \ - xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump proto x y z -simobjdump linkinfo xtree_fg_req xtree_textfg_req uplink downlink x y z -simobjdump uplink xtree_fg_req xtree_textfg_req x y z -simobjdump downlink xtree_fg_req xtree_textfg_req x y z -simobjdump mirror notes xtree_fg_req x y z -simundump kpool /kinetics/Shc*.Sos.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - brown yellow 68 105 0 -simundump kenz /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF 1 0 0 0 0 6e+05 3.3e-07 \ - 0.08 0.02 0 0 "" red brown "" 65 94 0 -simundump group /kinetics/Sos 1 blue black x 0 1 "" defaultfile \ - /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 74 113 0 -simundump kreac /kinetics/Sos/Shc_bind_Sos.Grb2 1 8.333e-07 0.1 "" white blue \ - 69 107 0 -simundump kpool /kinetics/Sos/Sos*.Grb2 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - orange blue 76 109 0 -simundump kreac /kinetics/Sos/Grb2_bind_Sos* 1 4.1667e-08 0.0168 "" white \ - blue 75 107 0 -simundump kpool /kinetics/Sos/Grb2 1 1 1 0.94164 5.6499e+05 6e+05 6e+05 0 \ - 6e+05 0 "" orange blue 73 105 0 -simundump kpool /kinetics/Sos/Sos.Grb2 1 1.6667e-06 0 0.058356 35014 0 1 0 \ - 6e+05 0 "" orange blue 70 105 0 -simundump kpool /kinetics/Sos/Sos* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" red \ - blue 74 109 0 -simundump kreac /kinetics/Sos/dephosph_Sos 1 0.001 0 "" white blue 73 107 0 -simundump kreac /kinetics/Sos/Grb2_bind_Sos 1 4.1667e-08 0.0168 "" white blue \ - 71 107 0 -simundump kpool /kinetics/Sos/Sos 1 0.1 0.1 0.041645 24987 60000 60000 0 \ - 6e+05 0 "" red blue 72 109 0 -simundump group /kinetics/PKC 0 blue black x 0 0 "" defaultfile \ - /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 47 80 0 -simundump kpool /kinetics/PKC/PKC-Ca 0 0.28282 3.7208e-17 0.075998 45599 \ - 2.2325e-11 1.6969e+05 0 6e+05 0 "" red black 48 74 0 -simundump kreac /kinetics/PKC/PKC-act-by-Ca 0 1e-06 0.5 "" white blue 48 72 0 -simundump kreac /kinetics/PKC/PKC-act-by-DAG 0 1.3333e-08 8.6348 "" white \ - blue 56 72 0 -simundump kreac /kinetics/PKC/PKC-Ca-to-memb 0 1.2705 3.5026 "" white blue 48 \ - 76 0 -simundump kreac /kinetics/PKC/PKC-DAG-to-memb 0 1 0.1 "" white blue 56 76 0 -simundump kreac /kinetics/PKC/PKC-act-by-Ca-AA 0 2e-09 0.1 "" white blue 50 \ - 76 0 -simundump kreac /kinetics/PKC/PKC-act-by-DAG-AA 0 2 0.2 "" white blue 54 76 0 -simundump kpool /kinetics/PKC/PKC-DAG-AA* 0 0.12061 4.9137e-18 0.030483 18290 \ - 2.9482e-12 72366 0 6e+05 0 "" cyan blue 54 78 0 -simundump kpool /kinetics/PKC/PKC-Ca-AA* 0 0.16962 1.75e-16 0.0055768 3346.1 \ - 1.05e-10 1.0177e+05 0 6e+05 0 "" orange blue 50 78 0 -simundump kpool /kinetics/PKC/PKC-Ca-memb* 0 0.10258 1.3896e-17 0.027567 \ - 16540 8.3376e-12 61549 0 6e+05 0 "" pink blue 48 78 0 -simundump kpool /kinetics/PKC/PKC-DAG-memb* 0 0.023753 9.4352e-21 0.0082104 \ - 4926.3 5.6611e-15 14252 0 6e+05 0 "" yellow blue 56 78 0 -simundump kpool /kinetics/PKC/PKC-basal* 0 0.0432 0.02 0.015833 9499.8 12000 \ - 25920 0 6e+05 0 "" pink blue 46 78 0 -simundump kreac /kinetics/PKC/PKC-basal-act 0 1 50 "" white blue 46 72 0 -simundump kpool /kinetics/PKC/PKC-AA* 0 1 1.8133e-17 0.0058092 3485.5 \ - 1.088e-11 6e+05 0 6e+05 0 "" cyan blue 52 78 0 -simundump kreac /kinetics/PKC/PKC-act-by-AA 0 2e-10 0.1 "" white blue 50 72 0 -simundump kpool /kinetics/PKC/PKC-Ca-DAG 0 0.0017993 8.4632e-23 0.00082104 \ - 492.63 5.0779e-17 1079.6 0 6e+05 0 "" white blue 56 74 0 -simundump kreac /kinetics/PKC/PKC-n-DAG 0 1e-09 0.1 "" white blue 52 72 0 -simundump kpool /kinetics/PKC/PKC-DAG 0 0.08533 0 0.055389 33233 0 51198 0 \ - 6e+05 0 "" white blue 52 74 0 -simundump kreac /kinetics/PKC/PKC-n-DAG-AA 0 3e-08 2 "" white blue 54 72 0 -simundump kpool /kinetics/PKC/PKC-DAG-AA 0 0.012093 2.5188e-19 0.0030483 1829 \ - 1.5113e-13 7255.5 0 6e+05 0 "" white blue 54 74 0 -simundump kpool /kinetics/PKC/PKC-cytosolic 0 1.5489 1 0.79165 4.7499e+05 \ - 6e+05 9.2935e+05 0 6e+05 0 "" white blue 50 70 0 -simundump kpool /kinetics/DAG 1 100 11.661 11.661 6.9966e+06 6.9966e+06 6e+07 \ - 0 6e+05 6 "" green black 54 60 0 -simundump kpool /kinetics/Ca 1 1 0.08 0.08 48000 48000 6e+05 0 6e+05 6 "" red \ - black 52 60 0 -simundump kpool /kinetics/AA 0 6.12 6.12 6.1151 3.669e+06 3.672e+06 3.672e+06 \ - 0 6e+05 0 "" darkgreen black 50 68 0 -simundump kpool /kinetics/PKC-active 0 0.02 2.1222e-16 0.093103 55862 12000 \ - 56088 0 6e+05 2 "" yellow black 52 80 0 -simundump kenz /kinetics/PKC-active/PKC-act-raf 1 0 0.00024472 0 146.83 6e+05 \ - 5e-07 16 4 0 0 "" red yellow "" 64 88 0 -simundump kenz /kinetics/PKC-active/PKC-inact-GAP 1 0 2.0482e-06 0 1.2289 \ - 6e+05 3.125e-06 100 25 0 0 "" red yellow "" 60 98 0 -simundump kenz /kinetics/PKC-active/PKC-act-GEF 1 0 0.0001296 0 77.762 6e+05 \ - 5e-07 16 4 0 0 "" red yellow "" 68 98 0 -simundump group /kinetics/MAPK 0 brown black x 0 0 "" defaultfile \ - /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 69 88 0 -simundump kpool /kinetics/MAPK/craf-1 0 0.2 0.2 0.17523 1.0514e+05 1.2e+05 \ - 1.2e+05 0 6e+05 0 "" pink brown 63 86 0 -simundump kpool /kinetics/MAPK/craf-1* 0 0.2 0 0.011418 6851 0 1.2e+05 0 \ - 6e+05 0 "" pink brown 65 86 0 -simundump kpool /kinetics/MAPK/MAPKK 0 0.18 0.18 0.16222 97335 1.08e+05 \ - 1.08e+05 0 6e+05 0 "" pink brown 64 82 0 -simundump kpool /kinetics/MAPK/MAPK 0 0.36 0.36 0.34219 2.0531e+05 2.16e+05 \ - 2.16e+05 0 6e+05 0 "" pink brown 67 78 0 -simundump kpool /kinetics/MAPK/craf-1** 1 0.2 0 2.951e-05 17.706 0 1.2e+05 0 \ - 6e+05 0 "" hotpink brown 67 86 0 -simundump kpool /kinetics/MAPK/MAPK-tyr 1 0.36 0 0.013943 8365.6 0 2.16e+05 0 \ - 6e+05 0 "" orange brown 67 76 0 -simundump kpool /kinetics/MAPK/MAPKK* 0 0.18 0 0.00037106 222.64 0 1.08e+05 0 \ - 6e+05 0 "" pink brown 64 78 0 -simundump kenz /kinetics/MAPK/MAPKK*/MAPKKtyr 0 0 0.0027426 0 1645.6 6e+05 \ - 2.7e-05 0.6 0.15 0 0 "" red pink "" 64 77 0 -simundump kenz /kinetics/MAPK/MAPKK*/MAPKKthr 1 0 0.00011175 0 67.049 6e+05 \ - 2.7e-05 0.6 0.15 0 0 "" red pink "" 64 75 0 -simundump kpool /kinetics/MAPK/MAPKK-ser 1 0.18 0 0.0077587 4655.2 0 1.08e+05 \ - 0 6e+05 0 "" pink brown 64 80 0 -simundump kpool /kinetics/MAPK/RGR 1 0.0104 0 0.0026971 1618.3 0 6240 0 6e+05 \ - 0 "" red brown 62 82 0 -simundump kenz /kinetics/MAPK/RGR/RGR.1 1 0 0.0027503 0 1650.2 6e+05 5.5e-06 \ - 0.42 0.105 0 0 "" red red "" 62 81 0 -simundump kenz /kinetics/MAPK/RGR/RGR.2 1 0 0.00013154 0 78.921 6e+05 5.5e-06 \ - 0.42 0.105 0 0 "" red red "" 62 79 0 -simundump kpool /kinetics/MAPK/Raf*-GTP-Ras 1 0.0104 0 0.003515 2109 0 6240 0 \ - 6e+05 0 "" red brown 66 82 0 -simundump kenz /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 1 0 0.0035843 0 \ - 2150.6 6e+05 5.5e-06 0.42 0.105 0 0 "" red red "" 65 81 0 -simundump kenz /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 1 0 0.00017142 0 \ - 102.85 6e+05 5.5e-06 0.42 0.105 0 0 "" red red "" 65 79 0 -simundump kpool /kinetics/MAPK* 0 1 0 0.00056809 340.86 0 6e+05 0 6e+05 0 "" \ - orange yellow 67 74 0 -simundump kenz /kinetics/MAPK*/MAPK*-feedback 1 0 2.5298e-07 0 0.15179 6e+05 \ - 3.25e-06 40 10 0 0 "" red orange "" 66 84 0 -simundump kenz /kinetics/MAPK*/MAPK* 0 0 2.4171e-06 0 1.4503 6e+05 6.5e-06 80 \ - 20 0 0 "" red orange "" 52 57 0 -simundump kreac /kinetics/Ras-act-craf 1 1e-04 0.5 "" white black 68 84 0 -simundump kpool /kinetics/PPhosphatase2A 1 0.224 0.224 0.2237 1.3422e+05 \ - 1.344e+05 1.344e+05 0 6e+05 0 "" hotpink yellow 68 80 0 -simundump kenz /kinetics/PPhosphatase2A/craf-deph 1 0 0.00016314 0 97.886 \ - 6e+05 3.3e-06 25 6 0 0 "" red hotpink "" 64 84 0 -simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph 1 0 5.3016e-06 0 3.181 \ - 6e+05 3.3e-06 25 6 0 0 "" red hotpink "" 68 79 0 -simundump kenz /kinetics/PPhosphatase2A/MAPKK-deph-ser 1 0 0.00011085 0 \ - 66.513 6e+05 3.3e-06 25 6 0 0 "" red hotpink "" 68 81 0 -simundump kenz /kinetics/PPhosphatase2A/craf**-deph 1 0 0.25298 0 0.25298 1 \ - 3.3e-06 25 6 0 0 "" red hotpink "" 66 88 0 -simundump group /kinetics/PLA2 0 darkgreen black x 0 1 "" defaultfile \ - /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 56 58 0 -simundump kpool /kinetics/PLA2/PLA2-cytosolic 0 0.4 0.4 0.1091 65459 2.4e+05 \ - 2.4e+05 0 6e+05 0 "" yellow darkgreen 48 57 0 -simundump kreac /kinetics/PLA2/PLA2-Ca-act 0 1.6667e-06 0.1 "" white \ - darkgreen 51 62 0 -simundump kpool /kinetics/PLA2/PLA2-Ca* 0 1 0 0.08728 52368 0 6e+05 0 6e+05 0 \ - "" yellow darkgreen 52 64 0 -simundump kenz /kinetics/PLA2/PLA2-Ca*/kenz 0 0 0.13092 0 78552 6e+05 \ - 2.25e-06 21.6 5.4 0 0 "" red yellow "" 52 66 0 -simundump kreac /kinetics/PLA2/PIP2-PLA2-act 0 2e-09 0.5 "" white darkgreen \ - 47 62 0 -simundump kpool /kinetics/PLA2/PIP2-PLA2* 0 1 0 0.00065459 392.75 0 6e+05 0 \ - 6e+05 0 "" cyan darkgreen 46 64 0 -simundump kenz /kinetics/PLA2/PIP2-PLA2*/kenz 0 0 0.00098188 0 589.13 6e+05 \ - 4.6e-06 44.16 11.04 0 0 "" red cyan "" 46 66 0 -simundump kreac /kinetics/PLA2/PIP2-Ca-PLA2-act 0 2e-08 0.1 "" white \ - darkgreen 49 62 0 -simundump kpool /kinetics/PLA2/PIP2-Ca-PLA2* 0 1 0 0.026184 15710 0 6e+05 0 \ - 6e+05 0 "" cyan darkgreen 48 64 0 -simundump kenz /kinetics/PLA2/PIP2-Ca-PLA2*/kenz 0 0 0.039276 0 23566 6e+05 \ - 1.5e-05 144 36 0 0 "" red cyan "" 48 66 0 -simundump kreac /kinetics/PLA2/DAG-Ca-PLA2-act 0 5e-09 4 "" white darkgreen \ - 53 62 0 -simundump kpool /kinetics/PLA2/DAG-Ca-PLA2* 0 1 0 0.00076333 458 0 6e+05 0 \ - 6e+05 0 "" pink darkgreen 54 64 0 -simundump kenz /kinetics/PLA2/DAG-Ca-PLA2*/kenz 0 0 0.001145 0 687 6e+05 \ - 2.5e-05 240 60 0 0 "" red pink "" 54 66 0 -simundump kpool /kinetics/PLA2/APC 0 30 30 30 1.8e+07 1.8e+07 1.8e+07 0 6e+05 \ - 5 "" yellow darkgreen 50 64 0 -simundump kreac /kinetics/PLA2/Degrade-AA 1 0.4 0 "" white darkgreen 50 66 0 -simundump kpool /kinetics/PLA2/PLA2*-Ca 0 1 0 0.0013643 818.59 0 6e+05 0 \ - 6e+05 1 "" orange darkgreen 56 64 0 -simundump kenz /kinetics/PLA2/PLA2*-Ca/kenz 0 0 0.0020465 0 1227.9 6e+05 \ - 5e-05 480 120 0 0 "" red orange "" 56 66 0 -simundump kpool /kinetics/PLA2/PLA2* 1 1.6667e-06 0 0.00028427 170.56 0 1 0 \ - 6e+05 0 "" orange darkgreen 56 60 0 -simundump kreac /kinetics/PLA2/PLA2*-Ca-act 1 1e-05 0.1 "" white darkgreen 55 \ - 62 0 -simundump kreac /kinetics/PLA2/dephosphorylate-PLA2* 1 0.17 0 "" white \ - darkgreen 52 59 0 -simundump kpool /kinetics/temp-PIP2 1 25 2.5 2.5 1.5e+06 1.5e+06 1.5e+07 0 \ - 6e+05 6 "" green black 48 60 0 -simundump group /kinetics/Ras 1 blue black x 0 0 "" defaultfile \ - /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 64 100 0 -simundump kreac /kinetics/Ras/dephosph-GEF 1 0.1 0 "" white blue 66 98 0 -simundump kpool /kinetics/Ras/inact-GEF 1 0.1 0.1 0.092803 55682 60000 60000 \ - 0 6e+05 0 "" hotpink blue 67 100 0 -simundump kpool /kinetics/Ras/GEF* 1 0.1 0 0.0051842 3110.5 0 60000 0 6e+05 0 \ - "" hotpink blue 67 96 0 -simundump kenz /kinetics/Ras/GEF*/GEF*-act-ras 1 0 0.0018747 0 1124.8 6e+05 \ - 3.3e-07 0.08 0.02 0 0 "" red hotpink "" 67 94 0 -simundump kpool /kinetics/Ras/GTP-Ras 1 0.2 0 0.0025653 1539.2 0 1.2e+05 0 \ - 6e+05 0 "" orange blue 64 92 0 -simundump kpool /kinetics/Ras/GDP-Ras 1 0.2 0.2 0.18264 1.0958e+05 1.2e+05 \ - 1.2e+05 0 6e+05 0 "" pink blue 64 96 0 -simundump kreac /kinetics/Ras/Ras-intrinsic-GTPase 1 1e-04 0 "" white blue 63 \ - 94 0 -simundump kreac /kinetics/Ras/dephosph-GAP 1 0.1 0 "" white blue 62 98 0 -simundump kpool /kinetics/Ras/GAP* 1 0.05 0 0.00051205 307.23 0 30000 0 6e+05 \ - 0 "" red blue 61 100 0 -simundump kpool /kinetics/Ras/GAP 1 0.002 0.002 0.0014666 879.97 1200 1200 0 \ - 6e+05 0 "" red blue 61 96 0 -simundump kenz /kinetics/Ras/GAP/GAP-inact-ras 1 0 3.7236e-06 0 2.2342 6e+05 \ - 0.001666 1000 10 0 0 "" red red "" 61 94 0 -simundump kreac /kinetics/Ras-act-unphosph-raf 1 1e-05 1 "" white black 62 84 \ - 0 -simundump group /kinetics/PDGFR 1 yellow black x 0 1 "" defaultfile \ - /home2/bhalla/scripts/modules/defaultfile_0.g 0 0 0 64 113 0 -simundump kpool /kinetics/PDGFR/PDGFR 1 0.16667 0.10833 0.10833 65000 65000 \ - 1e+05 0 6e+05 0 "" red yellow 59 113 0 -simundump kreac /kinetics/PDGFR/act_PDGFR 1 0.00033333 0.1 "" white yellow 60 \ - 111 0 -simundump kpool /kinetics/PDGFR/L.PDGFR 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - red yellow 61 109 0 -simundump kenz /kinetics/PDGFR/L.PDGFR/phosph_Shc 1 0 0 0 0 6e+05 5e-07 0.2 \ - 0.05 0 0 "" red red "" 64 111 0 -simundump kpool /kinetics/PDGFR/PDGF 1 1 0 0 0 0 6e+05 0 6e+05 4 "" red \ - yellow 59 109 0 -simundump kpool /kinetics/PDGFR/SHC 1 1 0.5 0.5 3e+05 3e+05 6e+05 0 6e+05 0 \ - "" orange yellow 63 109 0 -simundump kpool /kinetics/PDGFR/SHC* 1 1.6667e-06 0 0 0 0 1 0 6e+05 0 "" \ - orange yellow 65 109 0 -simundump kreac /kinetics/PDGFR/dephosph_Shc 1 0.01 0 "" white yellow 64 107 \ - 0 -simundump kpool /kinetics/PDGFR/Internal_L.PDGFR 1 1.6667e-06 0 0 0 0 1 0 \ - 6e+05 0 "" red yellow 61 113 0 -simundump kreac /kinetics/PDGFR/Internalize 1 0.001 0.00066 "" white yellow \ - 62 111 0 -simundump kpool /kinetics/MKP-2 0 0.0024 0.0024 0.001967 1180.2 1440 1440 0 \ - 6e+05 0 "" 4 black 70 76 0 -simundump kenz /kinetics/MKP-2/MKP2-tyr-deph 0 0 0.00041138 0 246.83 6e+05 \ - 0.000125 4 1 0 0 "" red 4 "" 70 77 0 -simundump kenz /kinetics/MKP-2/MKP2-thr-deph 0 0 1.6762e-05 0 10.057 6e+05 \ - 0.000125 4 1 0 0 "" red 4 "" 70 75 0 -simundump xgraph /graphs/conc1 0 0 8000 0 0.12896 0 -simundump xgraph /graphs/conc2 0 0 8000 0 0.00053347 0 -simundump xplot /graphs/conc1/MAPK*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " orange 0 0 1 -simundump xplot /graphs/conc1/PKC-active.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " yellow 0 0 1 -simundump xplot /graphs/conc2/PDGFR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc2/PDGF.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 8000 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 8000 0 1 0 -simundump xcoredraw /edit/draw 0 51.546 73.854 68.317 107.68 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"Based on fb29.g, cleaned up the dangling phosph_PLC-gamma" \ -"enzyme activity on PDGFR." -addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Shc*.Sos.Grb2 REAC B A -addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Shc*.Sos.Grb2 REAC eA B -addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF ENZYME n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF SUBSTRATE n -addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n -addmsg /kinetics/Shc*.Sos.Grb2 /kinetics/Sos/Shc_bind_Sos.Grb2 PRODUCT n -addmsg /kinetics/PDGFR/SHC* /kinetics/Sos/Shc_bind_Sos.Grb2 SUBSTRATE n -addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos*.Grb2 REAC B A -addmsg /kinetics/Sos/Sos* /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n -addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos* SUBSTRATE n -addmsg /kinetics/Sos/Sos*.Grb2 /kinetics/Sos/Grb2_bind_Sos* PRODUCT n -addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Grb2 REAC A B -addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Grb2 REAC A B -addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos.Grb2 REAC B A -addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/Sos/Sos.Grb2 REAC A B -addmsg /kinetics/Sos/Grb2_bind_Sos* /kinetics/Sos/Sos* REAC A B -addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos* REAC A B -addmsg /kinetics/Sos/Sos* /kinetics/Sos/dephosph_Sos SUBSTRATE n -addmsg /kinetics/Sos/Sos /kinetics/Sos/dephosph_Sos PRODUCT n -addmsg /kinetics/Sos/Grb2 /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n -addmsg /kinetics/Sos/Sos.Grb2 /kinetics/Sos/Grb2_bind_Sos PRODUCT n -addmsg /kinetics/Sos/Sos /kinetics/Sos/Grb2_bind_Sos SUBSTRATE n -addmsg /kinetics/Sos/Grb2_bind_Sos /kinetics/Sos/Sos REAC A B -addmsg /kinetics/Sos/dephosph_Sos /kinetics/Sos/Sos REAC B A -addmsg /kinetics/PKC/PKC-act-by-Ca /kinetics/PKC/PKC-Ca REAC B A -addmsg /kinetics/PKC/PKC-act-by-DAG /kinetics/PKC/PKC-Ca REAC A B -addmsg /kinetics/PKC/PKC-Ca-to-memb /kinetics/PKC/PKC-Ca REAC A B -addmsg /kinetics/PKC/PKC-act-by-Ca-AA /kinetics/PKC/PKC-Ca REAC A B -addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-act-by-Ca SUBSTRATE n -addmsg /kinetics/Ca /kinetics/PKC/PKC-act-by-Ca SUBSTRATE n -addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-act-by-Ca PRODUCT n -addmsg /kinetics/DAG /kinetics/PKC/PKC-act-by-DAG SUBSTRATE n -addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-act-by-DAG SUBSTRATE n -addmsg /kinetics/PKC/PKC-Ca-DAG /kinetics/PKC/PKC-act-by-DAG PRODUCT n -addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-Ca-to-memb SUBSTRATE n -addmsg /kinetics/PKC/PKC-Ca-memb* /kinetics/PKC/PKC-Ca-to-memb PRODUCT n -addmsg /kinetics/PKC/PKC-Ca-DAG /kinetics/PKC/PKC-DAG-to-memb SUBSTRATE n -addmsg /kinetics/PKC/PKC-DAG-memb* /kinetics/PKC/PKC-DAG-to-memb PRODUCT n -addmsg /kinetics/PKC/PKC-Ca /kinetics/PKC/PKC-act-by-Ca-AA SUBSTRATE n -addmsg /kinetics/AA /kinetics/PKC/PKC-act-by-Ca-AA SUBSTRATE n -addmsg /kinetics/PKC/PKC-Ca-AA* /kinetics/PKC/PKC-act-by-Ca-AA PRODUCT n -addmsg /kinetics/PKC/PKC-DAG-AA* /kinetics/PKC/PKC-act-by-DAG-AA PRODUCT n -addmsg /kinetics/PKC/PKC-DAG-AA /kinetics/PKC/PKC-act-by-DAG-AA SUBSTRATE n -addmsg /kinetics/PKC/PKC-act-by-DAG-AA /kinetics/PKC/PKC-DAG-AA* REAC B A -addmsg /kinetics/PKC/PKC-act-by-Ca-AA /kinetics/PKC/PKC-Ca-AA* REAC B A -addmsg /kinetics/PKC/PKC-Ca-to-memb /kinetics/PKC/PKC-Ca-memb* REAC B A -addmsg /kinetics/PKC/PKC-DAG-to-memb /kinetics/PKC/PKC-DAG-memb* REAC B A -addmsg /kinetics/PKC/PKC-basal-act /kinetics/PKC/PKC-basal* REAC B A -addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-basal-act SUBSTRATE n -addmsg /kinetics/PKC/PKC-basal* /kinetics/PKC/PKC-basal-act PRODUCT n -addmsg /kinetics/PKC/PKC-act-by-AA /kinetics/PKC/PKC-AA* REAC B A -addmsg /kinetics/AA /kinetics/PKC/PKC-act-by-AA SUBSTRATE n -addmsg /kinetics/PKC/PKC-AA* /kinetics/PKC/PKC-act-by-AA PRODUCT n -addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-act-by-AA SUBSTRATE n -addmsg /kinetics/PKC/PKC-act-by-DAG /kinetics/PKC/PKC-Ca-DAG REAC B A -addmsg /kinetics/PKC/PKC-DAG-to-memb /kinetics/PKC/PKC-Ca-DAG REAC A B -addmsg /kinetics/PKC/PKC-cytosolic /kinetics/PKC/PKC-n-DAG SUBSTRATE n -addmsg /kinetics/DAG /kinetics/PKC/PKC-n-DAG SUBSTRATE n -addmsg /kinetics/PKC/PKC-DAG /kinetics/PKC/PKC-n-DAG PRODUCT n -addmsg /kinetics/PKC/PKC-n-DAG /kinetics/PKC/PKC-DAG REAC B A -addmsg /kinetics/PKC/PKC-n-DAG-AA /kinetics/PKC/PKC-DAG REAC A B -addmsg /kinetics/PKC/PKC-DAG /kinetics/PKC/PKC-n-DAG-AA SUBSTRATE n -addmsg /kinetics/AA /kinetics/PKC/PKC-n-DAG-AA SUBSTRATE n -addmsg /kinetics/PKC/PKC-DAG-AA /kinetics/PKC/PKC-n-DAG-AA PRODUCT n -addmsg /kinetics/PKC/PKC-n-DAG-AA /kinetics/PKC/PKC-DAG-AA REAC B A -addmsg /kinetics/PKC/PKC-act-by-DAG-AA /kinetics/PKC/PKC-DAG-AA REAC A B -addmsg /kinetics/PKC/PKC-act-by-Ca /kinetics/PKC/PKC-cytosolic REAC A B -addmsg /kinetics/PKC/PKC-basal-act /kinetics/PKC/PKC-cytosolic REAC A B -addmsg /kinetics/PKC/PKC-act-by-AA /kinetics/PKC/PKC-cytosolic REAC A B -addmsg /kinetics/PKC/PKC-n-DAG /kinetics/PKC/PKC-cytosolic REAC A B -addmsg /kinetics/PKC/PKC-act-by-DAG /kinetics/DAG REAC A B -addmsg /kinetics/PKC/PKC-n-DAG /kinetics/DAG REAC A B -addmsg /kinetics/PLA2/DAG-Ca-PLA2-act /kinetics/DAG REAC A B -addmsg /kinetics/PKC/PKC-act-by-Ca /kinetics/Ca REAC A B -addmsg /kinetics/PLA2/PLA2-Ca-act /kinetics/Ca REAC A B -addmsg /kinetics/PLA2/PLA2*-Ca-act /kinetics/Ca REAC A B -addmsg /kinetics/PKC/PKC-act-by-Ca-AA /kinetics/AA REAC A B -addmsg /kinetics/PKC/PKC-act-by-AA /kinetics/AA REAC A B -addmsg /kinetics/PKC/PKC-n-DAG-AA /kinetics/AA REAC A B -addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/AA MM_PRD pA -addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/AA MM_PRD pA -addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/AA MM_PRD pA -addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/AA MM_PRD pA -addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/AA MM_PRD pA -addmsg /kinetics/PLA2/Degrade-AA /kinetics/AA REAC A B -addmsg /kinetics/PKC/PKC-DAG-AA* /kinetics/PKC-active SUMTOTAL n nInit -addmsg /kinetics/PKC/PKC-Ca-memb* /kinetics/PKC-active SUMTOTAL n nInit -addmsg /kinetics/PKC/PKC-Ca-AA* /kinetics/PKC-active SUMTOTAL n nInit -addmsg /kinetics/PKC/PKC-DAG-memb* /kinetics/PKC-active SUMTOTAL n nInit -addmsg /kinetics/PKC/PKC-basal* /kinetics/PKC-active SUMTOTAL n nInit -addmsg /kinetics/PKC/PKC-AA* /kinetics/PKC-active SUMTOTAL n nInit -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/PKC-active CONSERVE nComplex nComplexInit -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/PKC-active REAC eA B -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/PKC-active CONSERVE nComplex nComplexInit -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/PKC-active REAC eA B -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/PKC-active CONSERVE nComplex nComplexInit -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/PKC-active REAC eA B -addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-raf ENZYME n -addmsg /kinetics/MAPK/craf-1 /kinetics/PKC-active/PKC-act-raf SUBSTRATE n -addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-inact-GAP ENZYME n -addmsg /kinetics/Ras/GAP /kinetics/PKC-active/PKC-inact-GAP SUBSTRATE n -addmsg /kinetics/PKC-active /kinetics/PKC-active/PKC-act-GEF ENZYME n -addmsg /kinetics/Ras/inact-GEF /kinetics/PKC-active/PKC-act-GEF SUBSTRATE n -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1 REAC sA B -addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1 MM_PRD pA -addmsg /kinetics/Ras-act-unphosph-raf /kinetics/MAPK/craf-1 REAC A B -addmsg /kinetics/PKC-active/PKC-act-raf /kinetics/MAPK/craf-1* MM_PRD pA -addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1* REAC sA B -addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/MAPK/craf-1* REAC sA B -addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1* MM_PRD pA -addmsg /kinetics/Ras-act-craf /kinetics/MAPK/craf-1* REAC A B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK MM_PRD pA -addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 /kinetics/MAPK/MAPKK REAC sA B -addmsg /kinetics/MAPK/RGR/RGR.1 /kinetics/MAPK/MAPKK REAC sA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK REAC sA B -addmsg /kinetics/MKP-2/MKP2-tyr-deph /kinetics/MAPK/MAPK MM_PRD pA -addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK/craf-1** MM_PRD pA -addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/MAPK/craf-1** REAC sA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPK-tyr MM_PRD pA -addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPK-tyr REAC sA B -addmsg /kinetics/MKP-2/MKP2-tyr-deph /kinetics/MAPK/MAPK-tyr REAC sA B -addmsg /kinetics/MKP-2/MKP2-thr-deph /kinetics/MAPK/MAPK-tyr MM_PRD pA -addmsg /kinetics/MAPK/MAPKK*/MAPKKtyr /kinetics/MAPK/MAPKK* REAC eA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK/MAPKK* REAC eA B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK* REAC sA B -addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 /kinetics/MAPK/MAPKK* MM_PRD pA -addmsg /kinetics/MAPK/RGR/RGR.2 /kinetics/MAPK/MAPKK* MM_PRD pA -addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKtyr ENZYME n -addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MAPKK*/MAPKKtyr SUBSTRATE n -addmsg /kinetics/MAPK/MAPKK* /kinetics/MAPK/MAPKK*/MAPKKthr ENZYME n -addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MAPK/MAPKK*/MAPKKthr SUBSTRATE n -addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/MAPK/MAPKK-ser MM_PRD pA -addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/MAPK/MAPKK-ser REAC sA B -addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 /kinetics/MAPK/MAPKK-ser MM_PRD pA -addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 /kinetics/MAPK/MAPKK-ser REAC sA B -addmsg /kinetics/MAPK/RGR/RGR.1 /kinetics/MAPK/MAPKK-ser MM_PRD pA -addmsg /kinetics/MAPK/RGR/RGR.2 /kinetics/MAPK/MAPKK-ser REAC sA B -addmsg /kinetics/MAPK/RGR/RGR.1 /kinetics/MAPK/RGR REAC eA B -addmsg /kinetics/MAPK/RGR/RGR.2 /kinetics/MAPK/RGR REAC eA B -addmsg /kinetics/Ras-act-unphosph-raf /kinetics/MAPK/RGR REAC B A -addmsg /kinetics/MAPK/RGR /kinetics/MAPK/RGR/RGR.1 ENZYME n -addmsg /kinetics/MAPK/MAPKK /kinetics/MAPK/RGR/RGR.1 SUBSTRATE n -addmsg /kinetics/MAPK/RGR /kinetics/MAPK/RGR/RGR.2 ENZYME n -addmsg /kinetics/MAPK/MAPKK-ser /kinetics/MAPK/RGR/RGR.2 SUBSTRATE n -addmsg /kinetics/Ras-act-craf /kinetics/MAPK/Raf*-GTP-Ras REAC B A -addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 /kinetics/MAPK/Raf*-GTP-Ras REAC eA B -addmsg /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 /kinetics/MAPK/Raf*-GTP-Ras REAC eA B -addmsg /kinetics/MAPK/Raf*-GTP-Ras /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 ENZYME n -addmsg /kinetics/MAPK/MAPKK /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1 SUBSTRATE n -addmsg /kinetics/MAPK/Raf*-GTP-Ras /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 ENZYME n -addmsg /kinetics/MAPK/MAPKK-ser /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2 SUBSTRATE n -addmsg /kinetics/MAPK*/MAPK*-feedback /kinetics/MAPK* REAC eA B -addmsg /kinetics/MAPK/MAPKK*/MAPKKthr /kinetics/MAPK* MM_PRD pA -addmsg /kinetics/MAPK*/MAPK* /kinetics/MAPK* REAC eA B -addmsg /kinetics/MKP-2/MKP2-thr-deph /kinetics/MAPK* REAC sA B -addmsg /kinetics/MAPK* /kinetics/MAPK*/MAPK*-feedback ENZYME n -addmsg /kinetics/MAPK/craf-1* /kinetics/MAPK*/MAPK*-feedback SUBSTRATE n -addmsg /kinetics/MAPK* /kinetics/MAPK*/MAPK* ENZYME n -addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/MAPK*/MAPK* SUBSTRATE n -addmsg /kinetics/MAPK/Raf*-GTP-Ras /kinetics/Ras-act-craf PRODUCT n -addmsg /kinetics/MAPK/craf-1* /kinetics/Ras-act-craf SUBSTRATE n -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras-act-craf SUBSTRATE n -addmsg /kinetics/PPhosphatase2A/craf-deph /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A/MAPKK-deph-ser /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A/craf**-deph /kinetics/PPhosphatase2A REAC eA B -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf-deph ENZYME n -addmsg /kinetics/MAPK/craf-1* /kinetics/PPhosphatase2A/craf-deph SUBSTRATE n -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph ENZYME n -addmsg /kinetics/MAPK/MAPKK* /kinetics/PPhosphatase2A/MAPKK-deph SUBSTRATE n -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/MAPKK-deph-ser ENZYME n -addmsg /kinetics/MAPK/MAPKK-ser /kinetics/PPhosphatase2A/MAPKK-deph-ser SUBSTRATE n -addmsg /kinetics/PPhosphatase2A /kinetics/PPhosphatase2A/craf**-deph ENZYME n -addmsg /kinetics/MAPK/craf-1** /kinetics/PPhosphatase2A/craf**-deph SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-Ca-act /kinetics/PLA2/PLA2-cytosolic REAC A B -addmsg /kinetics/PLA2/PIP2-PLA2-act /kinetics/PLA2/PLA2-cytosolic REAC A B -addmsg /kinetics/PLA2/PIP2-PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit -addmsg /kinetics/PLA2/PIP2-Ca-PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit -addmsg /kinetics/PLA2/DAG-Ca-PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit -addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit -addmsg /kinetics/PLA2/PLA2*-Ca /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit -addmsg /kinetics/MAPK*/MAPK* /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit -addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit -addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit -addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit -addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit -addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/PLA2/PLA2-cytosolic CONSERVE nComplex nComplexInit -addmsg /kinetics/MAPK*/MAPK* /kinetics/PLA2/PLA2-cytosolic REAC sA B -addmsg /kinetics/PLA2/PLA2* /kinetics/PLA2/PLA2-cytosolic CONSERVE n nInit -addmsg /kinetics/PLA2/dephosphorylate-PLA2* /kinetics/PLA2/PLA2-cytosolic REAC B A -addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/PLA2/PLA2-Ca-act SUBSTRATE n -addmsg /kinetics/Ca /kinetics/PLA2/PLA2-Ca-act SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PLA2-Ca-act PRODUCT n -addmsg /kinetics/PLA2/PLA2-Ca-act /kinetics/PLA2/PLA2-Ca* REAC B A -addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/PLA2/PLA2-Ca* REAC eA B -addmsg /kinetics/PLA2/PIP2-Ca-PLA2-act /kinetics/PLA2/PLA2-Ca* REAC A B -addmsg /kinetics/PLA2/DAG-Ca-PLA2-act /kinetics/PLA2/PLA2-Ca* REAC A B -addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PLA2-Ca*/kenz ENZYME n -addmsg /kinetics/PLA2/APC /kinetics/PLA2/PLA2-Ca*/kenz SUBSTRATE n -addmsg /kinetics/temp-PIP2 /kinetics/PLA2/PIP2-PLA2-act SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/PLA2/PIP2-PLA2-act SUBSTRATE n -addmsg /kinetics/PLA2/PIP2-PLA2* /kinetics/PLA2/PIP2-PLA2-act PRODUCT n -addmsg /kinetics/PLA2/PIP2-PLA2-act /kinetics/PLA2/PIP2-PLA2* REAC B A -addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/PLA2/PIP2-PLA2* REAC eA B -addmsg /kinetics/PLA2/PIP2-PLA2* /kinetics/PLA2/PIP2-PLA2*/kenz ENZYME n -addmsg /kinetics/PLA2/APC /kinetics/PLA2/PIP2-PLA2*/kenz SUBSTRATE n -addmsg /kinetics/temp-PIP2 /kinetics/PLA2/PIP2-Ca-PLA2-act SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/PIP2-Ca-PLA2-act SUBSTRATE n -addmsg /kinetics/PLA2/PIP2-Ca-PLA2* /kinetics/PLA2/PIP2-Ca-PLA2-act PRODUCT n -addmsg /kinetics/PLA2/PIP2-Ca-PLA2-act /kinetics/PLA2/PIP2-Ca-PLA2* REAC B A -addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/PLA2/PIP2-Ca-PLA2* REAC eA B -addmsg /kinetics/PLA2/PIP2-Ca-PLA2* /kinetics/PLA2/PIP2-Ca-PLA2*/kenz ENZYME n -addmsg /kinetics/PLA2/APC /kinetics/PLA2/PIP2-Ca-PLA2*/kenz SUBSTRATE n -addmsg /kinetics/DAG /kinetics/PLA2/DAG-Ca-PLA2-act SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-Ca* /kinetics/PLA2/DAG-Ca-PLA2-act SUBSTRATE n -addmsg /kinetics/PLA2/DAG-Ca-PLA2* /kinetics/PLA2/DAG-Ca-PLA2-act PRODUCT n -addmsg /kinetics/PLA2/DAG-Ca-PLA2-act /kinetics/PLA2/DAG-Ca-PLA2* REAC B A -addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/PLA2/DAG-Ca-PLA2* REAC eA B -addmsg /kinetics/PLA2/DAG-Ca-PLA2* /kinetics/PLA2/DAG-Ca-PLA2*/kenz ENZYME n -addmsg /kinetics/PLA2/APC /kinetics/PLA2/DAG-Ca-PLA2*/kenz SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-Ca*/kenz /kinetics/PLA2/APC REAC sA B -addmsg /kinetics/PLA2/PIP2-PLA2*/kenz /kinetics/PLA2/APC REAC sA B -addmsg /kinetics/PLA2/PIP2-Ca-PLA2*/kenz /kinetics/PLA2/APC REAC sA B -addmsg /kinetics/PLA2/DAG-Ca-PLA2*/kenz /kinetics/PLA2/APC REAC sA B -addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/PLA2/APC REAC sA B -addmsg /kinetics/PLA2/Degrade-AA /kinetics/PLA2/APC REAC B A -addmsg /kinetics/AA /kinetics/PLA2/Degrade-AA SUBSTRATE n -addmsg /kinetics/PLA2/APC /kinetics/PLA2/Degrade-AA PRODUCT n -addmsg /kinetics/PLA2/PLA2*-Ca/kenz /kinetics/PLA2/PLA2*-Ca REAC eA B -addmsg /kinetics/PLA2/PLA2*-Ca-act /kinetics/PLA2/PLA2*-Ca REAC B A -addmsg /kinetics/PLA2/PLA2*-Ca /kinetics/PLA2/PLA2*-Ca/kenz ENZYME n -addmsg /kinetics/PLA2/APC /kinetics/PLA2/PLA2*-Ca/kenz SUBSTRATE n -addmsg /kinetics/MAPK*/MAPK* /kinetics/PLA2/PLA2* MM_PRD pA -addmsg /kinetics/PLA2/PLA2*-Ca-act /kinetics/PLA2/PLA2* REAC A B -addmsg /kinetics/PLA2/dephosphorylate-PLA2* /kinetics/PLA2/PLA2* REAC A B -addmsg /kinetics/PLA2/PLA2* /kinetics/PLA2/PLA2*-Ca-act SUBSTRATE n -addmsg /kinetics/PLA2/PLA2*-Ca /kinetics/PLA2/PLA2*-Ca-act PRODUCT n -addmsg /kinetics/Ca /kinetics/PLA2/PLA2*-Ca-act SUBSTRATE n -addmsg /kinetics/PLA2/PLA2* /kinetics/PLA2/dephosphorylate-PLA2* SUBSTRATE n -addmsg /kinetics/PLA2/PLA2-cytosolic /kinetics/PLA2/dephosphorylate-PLA2* PRODUCT n -addmsg /kinetics/PLA2/PIP2-PLA2-act /kinetics/temp-PIP2 REAC A B -addmsg /kinetics/PLA2/PIP2-Ca-PLA2-act /kinetics/temp-PIP2 REAC A B -addmsg /kinetics/Ras/GEF* /kinetics/Ras/dephosph-GEF SUBSTRATE n -addmsg /kinetics/Ras/inact-GEF /kinetics/Ras/dephosph-GEF PRODUCT n -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/inact-GEF REAC sA B -addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/inact-GEF REAC B A -addmsg /kinetics/PKC-active/PKC-act-GEF /kinetics/Ras/GEF* MM_PRD pA -addmsg /kinetics/Ras/dephosph-GEF /kinetics/Ras/GEF* REAC A B -addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GEF* REAC eA B -addmsg /kinetics/Ras/GEF* /kinetics/Ras/GEF*/GEF*-act-ras ENZYME n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/GEF*/GEF*-act-ras SUBSTRATE n -addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GTP-Ras REAC sA B -addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GTP-Ras REAC A B -addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GTP-Ras MM_PRD pA -addmsg /kinetics/Ras-act-craf /kinetics/Ras/GTP-Ras REAC A B -addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GTP-Ras MM_PRD pA -addmsg /kinetics/Ras-act-unphosph-raf /kinetics/Ras/GTP-Ras REAC A B -addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GDP-Ras MM_PRD pA -addmsg /kinetics/Ras/Ras-intrinsic-GTPase /kinetics/Ras/GDP-Ras REAC B A -addmsg /kinetics/Ras/GEF*/GEF*-act-ras /kinetics/Ras/GDP-Ras REAC sA B -addmsg /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF /kinetics/Ras/GDP-Ras REAC sA B -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/Ras-intrinsic-GTPase SUBSTRATE n -addmsg /kinetics/Ras/GDP-Ras /kinetics/Ras/Ras-intrinsic-GTPase PRODUCT n -addmsg /kinetics/Ras/GAP* /kinetics/Ras/dephosph-GAP SUBSTRATE n -addmsg /kinetics/Ras/GAP /kinetics/Ras/dephosph-GAP PRODUCT n -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP* MM_PRD pA -addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP* REAC A B -addmsg /kinetics/Ras/GAP/GAP-inact-ras /kinetics/Ras/GAP REAC eA B -addmsg /kinetics/PKC-active/PKC-inact-GAP /kinetics/Ras/GAP REAC sA B -addmsg /kinetics/Ras/dephosph-GAP /kinetics/Ras/GAP REAC B A -addmsg /kinetics/Ras/GAP /kinetics/Ras/GAP/GAP-inact-ras ENZYME n -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras/GAP/GAP-inact-ras SUBSTRATE n -addmsg /kinetics/MAPK/craf-1 /kinetics/Ras-act-unphosph-raf SUBSTRATE n -addmsg /kinetics/MAPK/RGR /kinetics/Ras-act-unphosph-raf PRODUCT n -addmsg /kinetics/Ras/GTP-Ras /kinetics/Ras-act-unphosph-raf SUBSTRATE n -addmsg /kinetics/PDGFR/act_PDGFR /kinetics/PDGFR/PDGFR REAC A B -addmsg /kinetics/PDGFR/PDGFR /kinetics/PDGFR/act_PDGFR SUBSTRATE n -addmsg /kinetics/PDGFR/PDGF /kinetics/PDGFR/act_PDGFR SUBSTRATE n -addmsg /kinetics/PDGFR/L.PDGFR /kinetics/PDGFR/act_PDGFR PRODUCT n -addmsg /kinetics/PDGFR/act_PDGFR /kinetics/PDGFR/L.PDGFR REAC B A -addmsg /kinetics/PDGFR/L.PDGFR/phosph_Shc /kinetics/PDGFR/L.PDGFR REAC eA B -addmsg /kinetics/PDGFR/Internalize /kinetics/PDGFR/L.PDGFR REAC A B -addmsg /kinetics/PDGFR/L.PDGFR /kinetics/PDGFR/L.PDGFR/phosph_Shc ENZYME n -addmsg /kinetics/PDGFR/SHC /kinetics/PDGFR/L.PDGFR/phosph_Shc SUBSTRATE n -addmsg /kinetics/PDGFR/act_PDGFR /kinetics/PDGFR/PDGF REAC A B -addmsg /kinetics/PDGFR/dephosph_Shc /kinetics/PDGFR/SHC REAC B A -addmsg /kinetics/PDGFR/L.PDGFR/phosph_Shc /kinetics/PDGFR/SHC REAC sA B -addmsg /kinetics/PDGFR/dephosph_Shc /kinetics/PDGFR/SHC* REAC A B -addmsg /kinetics/Sos/Shc_bind_Sos.Grb2 /kinetics/PDGFR/SHC* REAC A B -addmsg /kinetics/PDGFR/L.PDGFR/phosph_Shc /kinetics/PDGFR/SHC* MM_PRD pA -addmsg /kinetics/PDGFR/SHC* /kinetics/PDGFR/dephosph_Shc SUBSTRATE n -addmsg /kinetics/PDGFR/SHC /kinetics/PDGFR/dephosph_Shc PRODUCT n -addmsg /kinetics/PDGFR/Internalize /kinetics/PDGFR/Internal_L.PDGFR REAC B A -addmsg /kinetics/PDGFR/L.PDGFR /kinetics/PDGFR/Internalize SUBSTRATE n -addmsg /kinetics/PDGFR/Internal_L.PDGFR /kinetics/PDGFR/Internalize PRODUCT n -addmsg /kinetics/MKP-2/MKP2-tyr-deph /kinetics/MKP-2 REAC eA B -addmsg /kinetics/MKP-2/MKP2-thr-deph /kinetics/MKP-2 REAC eA B -addmsg /kinetics/MKP-2 /kinetics/MKP-2/MKP2-tyr-deph ENZYME n -addmsg /kinetics/MAPK/MAPK-tyr /kinetics/MKP-2/MKP2-tyr-deph SUBSTRATE n -addmsg /kinetics/MKP-2 /kinetics/MKP-2/MKP2-thr-deph ENZYME n -addmsg /kinetics/MAPK* /kinetics/MKP-2/MKP2-thr-deph SUBSTRATE n -addmsg /kinetics/MAPK* /graphs/conc1/MAPK*.Co PLOT Co *MAPK*.Co *orange -addmsg /kinetics/PKC-active /graphs/conc1/PKC-active.Co PLOT Co *PKC-active.Co *yellow -addmsg /kinetics/PDGFR/PDGFR /graphs/conc2/PDGFR.Co PLOT Co *PDGFR.Co *red -addmsg /kinetics/PDGFR/PDGF /graphs/conc2/PDGF.Co PLOT Co *PDGF.Co *red -enddump -// End of dump - -call /kinetics/Shc*.Sos.Grb2/notes LOAD \ -"This three-way complex is one of the main GEFs for activating Ras." -call /kinetics/Shc*.Sos.Grb2/Sos.Ras_GEF/notes LOAD \ -"Rates from Orita et al JBC 268(34):25542-25546" -call /kinetics/Sos/notes LOAD \ -"This represents the mSos protein and the Grb2 adapter protein" \ -"involved in Ras activation. This module provides for input from" \ -"RTKs as well as feedback inhibition from MAPK, although the" \ -"latter is not implemented in this specific model." -call /kinetics/Sos/Shc_bind_Sos.Grb2/notes LOAD \ -"Sasaoka et al JBC 269:51 pp 32621 1994, table on pg" \ -"32623 indicates that this pathway accounts for about " \ -"50% of the GEF activation. (88% - 39%). Error is large," \ -"about 20%. Fig 1 is most useful in constraining rates." \ -"" \ -"Chook et al JBC 271:48 pp 30472, 1996 say that the Kd is" \ -"0.2 uM for Shc binding to EGFR. The Kd for Grb direct binding" \ -"is 0.7, so we'll ignore it." -call /kinetics/Sos/Sos*.Grb2/notes LOAD \ -"Inactive complex of Sos* with Grb2 due to phosphorylation of the Sos." \ -"See Porfiri and McCormick 1996 JBC 271(10):5871." -call /kinetics/Sos/Grb2_bind_Sos*/notes LOAD \ -"Same rates as Grb2_bind_Sos: Porfiri and McCormick JBC" \ -"271:10 pp 5871 1996 show that the binding is not affected" \ -"by the phosphorylation." -call /kinetics/Sos/Grb2/notes LOAD \ -"There is probably a lot of it in the cell: it is also known" \ -"as Ash (abundant src homology protein). Also " \ -"Waters et al JBC 271:30 18224 1996 say that only a small" \ -"fraction of cellular Grb is precipitated out when SoS is" \ -"precipitated. As most of the Sos seems to be associated" \ -"with Grb2, it would seem like there is a lot of the latter." \ -"Say 1 uM. This would comfortably saturate the SoS." -call /kinetics/Sos/Sos.Grb2/notes LOAD \ -"For simplicity I treat the activation of Sos as involving a" \ -"single complex comprising Sos, Grb2 and Shc*. This is" \ -"reasonably documented:" \ -"Sasaoka et al 1994 JBC 269(51):32621-5" \ -"Chook et al JBC 1996 271(48):30472" \ -"" -call /kinetics/Sos/Sos*/notes LOAD \ -"Phosphorylated form of SoS. Nominally this is an inactivation step" \ -"mediated by MAPK, see Profiri and McCormick 1996 JBC 271(10):5871." \ -"I have not put this inactivation in this pathway so this molecule " \ -"currently only represents a potential interaction point." -call /kinetics/Sos/dephosph_Sos/notes LOAD \ -"The best clue I have to these rates is from the time" \ -"courses of the EGF activation, which is around 1 to 5 min." \ -"The dephosph would be expected to be of the same order," \ -"perhaps a bit longer. Lets use 0.002 which is about 8 min." \ -"Sep 17: The transient activation curve matches better with" \ -"kf = 0.001" -call /kinetics/Sos/Grb2_bind_Sos/notes LOAD \ -"As there are 2 SH3 domains, this reaction could be 2nd order." \ -"I have a Kd of 22 uM from peptide binding (Lemmon et al " \ -"JBC 269:50 pg 31653). However, Chook et al JBC 271:48 pg30472" \ -"say it is 0.4uM with purified proteins, so we believe them." \ -"They say it is 1:1 binding." \ -"Porfiri and McCormick JBC 271 also have related data." \ -"After comparing with the time-course of 1 min and the efficacy" \ -"of activation of Ras, settle on Kd of 0.672 which is close" \ -"to the Chook et al value." -call /kinetics/Sos/Sos/notes LOAD \ -"I have tried using low (0.02 uM) initial concs, but these" \ -"give a very flat response to EGF stim although the overall" \ -"activation of Ras is not too bad. I am reverting to 0.1 " \ -"because we expect a sharp initial response, followed by" \ -"a decline." \ -"" -call /kinetics/PKC/notes LOAD \ -"Protein Kinase C. This module represents a weighted average of" \ -"the alpha, beta and gamma isoforms. It takes inputs from" \ -"Ca, DAG (Diacyl Glycerol) and AA (arachidonic acid)." \ -"Regulation parameters are largely from Schaechter and Benowitz" \ -"1993 J Neurosci 13(10):4361 who use synaptosomes from" \ -"mammalian brain and in one paper look at all three inputs." \ -"Shinomura et al 1991 PNAS 88:5149-5153 is also a useful source" \ -"of data and helps to tighten the DAG inputs. " \ -"General reviews include Azzi et al 1992 Eur J Bioch 208:541" \ -"and Nishizuka 1988, Nature 334:661" \ -"Concentration info from Kikkawa et al 1982 JBC 257(22):13341" \ -"The process of parameterization is described in detail" \ -"in several places. See Supplementary notes to " \ -"Bhalla and Iyengar 1999 Science 284:92-96, available at the site" \ -"http://www.ncbs.res.in/~bhalla/ltploop/pkc_example.html" \ -"The parameterization is also described in a book chapter:" \ -"Bhalla, 2000: Simulations of Biochemical Signaling in" \ -"Computational Neuroscience: Realistic Modeling for Experimentalists." \ -"Ed. E. De Schutter. CRC Press." \ -"" -call /kinetics/PKC/PKC-Ca/notes LOAD \ -"This intermediate is strongly indicated by the synergistic" \ -"activation of PKC by combinations of DAG and Ca, as well" \ -"as AA and Ca. PKC by definition also has a direct Ca-activation," \ -"to which this also contributes." -call /kinetics/PKC/PKC-act-by-Ca/notes LOAD \ -"This Kd is a straightforward result from the Schaechter and Benowitz" \ -"1993 J Neurosci 13(10):4361 curves. The time-course is based on the" \ -"known rapid activation of PKC and also the fact that Ca association" \ -"with proteins is typically quite fast. My guess is that this tau of" \ -"2 sec is quite conservative and the actualy rate may be much faster." \ -"The parameter is quite insensitive for most stimuli." \ -"" \ -"" -call /kinetics/PKC/PKC-act-by-DAG/notes LOAD \ -"Ca.PKC interaction with DAG is modeled by this reaction." \ -"Kf based on Shinomura et al PNAS 88 5149-5153 1991 and" \ -"Schaechter and Benowitz 1993 J Neurosci 13(10):4361 and uses" \ -"the constraining procedure referred to in the general" \ -"notes for PKC." -call /kinetics/PKC/PKC-Ca-to-memb/notes LOAD \ -"Membrane translocation is a standard step in PKC activation." \ -"It also turns out to be necessary to replicate the curves" \ -"from Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ -"and Shonomura et al 1991 PNAS 88:5149-5153. These rates" \ -"are constrained by matching the curves in the above papers and" \ -"by fixing a rather fast (sub-second) tau for PKC activation." -call /kinetics/PKC/PKC-DAG-to-memb/notes LOAD \ -"membrane translocation step for Ca.DAG.PKC complex." \ -"Rates constrained from Shinomura et al 1991 PNAS 88:5149-5153" \ -" and Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ -"as derived in the references cited in PKC general notes." -call /kinetics/PKC/PKC-act-by-Ca-AA/notes LOAD \ -"Ca-dependent AA activation of PKC." \ -"Note that this step combines the AA activation and also the " \ -"membrane translocation." \ -"From Schaechter and Benowitz 1993 J Neurosci 13(10):4361" -call /kinetics/PKC/PKC-act-by-DAG-AA/notes LOAD \ -"Membrane translocation step for PKC-DAG-AA complex." \ -"Rates from matching concentration-effect data in our" \ -"two main references:" \ -"Schaechter and Benowitz 1993 J Neurosci 13(10):4361 and" \ -"Shinomura et al 1988 PNAS 88: 5149-5153" -call /kinetics/PKC/PKC-DAG-AA*/notes LOAD \ -"Membrane translocated form of PKC-DAG-AA complex." -call /kinetics/PKC/PKC-Ca-AA*/notes LOAD \ -"Membrane bound and active complex of PKC, Ca and AA." -call /kinetics/PKC/PKC-Ca-memb*/notes LOAD \ -"This is the direct Ca-stimulated activity of PKC." -call /kinetics/PKC/PKC-DAG-memb*/notes LOAD \ -"Active, membrane attached form of Ca.DAG.PKC complex." -call /kinetics/PKC/PKC-basal*/notes LOAD \ -"This is the basal PKC activity which contributes about" \ -"2% to the maximum." -call /kinetics/PKC/PKC-basal-act/notes LOAD \ -"Basal activity of PKC is quite high, about 10% of max." \ -"See Schaechter and Benowitz 1993 J Neurosci 13(10):4361 and" \ -"Shinomura et al 1991 PNAS 88:5149-5153. This is partly due to" \ -"basal levels of DAG, AA and Ca, but even when these are taken" \ -"into account (see the derivations as per the PKC general notes)" \ -"there is a small basal activity still to be accounted for. This" \ -"reaction handles it by giving a 2% activity at baseline." -call /kinetics/PKC/PKC-AA*/notes LOAD \ -"This is the membrane-bound and active form of the PKC-AA complex." \ -"" -call /kinetics/PKC/PKC-act-by-AA/notes LOAD \ -"AA stimulates PKC activity even at rather low Ca." \ -"Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ -"Note that this one reaction combines the initial interaction" \ -"and also membrane translocation." -call /kinetics/PKC/PKC-Ca-DAG/notes LOAD \ -"This is the active PKC form involving Ca and DAG." \ -"It has to translocate to the membrane." -call /kinetics/PKC/PKC-n-DAG/notes LOAD \ -"Binding of PKC to DAG, non-Ca dependent." \ -"" \ -"Kf based on Shinomura et al PNAS 88 5149-5153 1991" \ -"Tau estimated as fast and here it is about the same time-course" \ -"as the formation of DAG so it will not be rate-limiting." -call /kinetics/PKC/PKC-DAG/notes LOAD \ -"This is a DAG-bound intermediate used in synergistic activation" \ -"of PKC by DAG and AA." -call /kinetics/PKC/PKC-n-DAG-AA/notes LOAD \ -"This is one of the more interesting steps. Mechanistically" \ -"it does not seem necessary at first glance. Turns out that" \ -"one needs this step to quantitatively match the curves" \ -"in Schaechter and Benowitz 1993 J Neurosci 13(10):4361" \ -"and Shinomura et al 1991 PNAS 88:5149-5153. There is" \ -"a synergy between DAG and AA activation even at low" \ -"Ca levels, which is most simply represented by this reaction." \ -"Tau is assumed to be fast." \ -"Kd comes from matching the experimental curves." -call /kinetics/PKC/PKC-DAG-AA/notes LOAD \ -"Complex of PKC, DAG and AA giving rise to synergistic" \ -"activation of PKC by DAG and AA at resting Ca." \ -"" -call /kinetics/PKC/PKC-cytosolic/notes LOAD \ -"Marquez et al J. Immun 149,2560(92) est 1e6/cell for chromaffin cells" \ -"" \ -"Kikkawa et al 1982 JBC 257(22):13341 have PKC levels in brain at " \ -"about 1 uM." \ -"" \ -"The cytosolic form is the inactive PKC. This is really a composite" \ -"of three isoforms: alpha, beta and gamma which have slightly" \ -"different properties and respond to different combinations of" \ -"Ca, AA and DAG." -call /kinetics/DAG/notes LOAD \ -"Baseline in model is 11.661 uM." \ -"DAG is pretty nasty to estimate. In this model we just hold" \ -"it fixed at this baseline level. Data sources are many and" \ -"varied and sometimes difficult to reconcile. " \ -"Welsh and Cabot 1987 JCB 35:231-245: DAG degradation" \ -"Bocckino et al JBC 260(26):14201-14207: " \ -" hepatocytes stim with vasopressin: 190 uM." \ -"Bocckino et al 1987 JBC 262(31):15309-15315:" \ -" DAG rises from 70 to 200 ng/mg wet weight, approx 150 to 450 uM." \ -"Prescott and Majerus 1983 JBC 258:764-769: Platelets: 6 uM." \ -" Also see Rittenhouse-Simmons 1979 J Clin Invest 63." \ -"Sano et al JBC 258(3):2010-2013: Report a nearly 10 fold rise." \ -"Habenicht et al 1981 JBC 256(23)12329-12335: " \ -" 3T3 cells with PDGF stim: 27 uM" \ -"Cornell and Vance 1987 BBA 919:23-36: 10x rise from 10 to 100 uM." \ -"" \ -"Summary: I see much lower rises in my PLC models," \ -"but the baseline could be anywhere from" \ -"5 to 100 uM. I have chosen about 11 uM based on the stimulus -response" \ -"characteristics from the Schaechter and Benowitz paper and the" \ -"Shinomura et al papers." \ -"" \ -"" \ -"" -call /kinetics/Ca/notes LOAD \ -"This calcium pool is treated as being buffered to a" \ -"steady 0.08 uM, which is the resting level. " -call /kinetics/AA/notes LOAD \ -"Arachidonic Acid. This messenger diffuses through membranes" \ -"as well as cytosolically, has been suggested as a possible" \ -"retrograde messenger at synapses. " -call /kinetics/PKC-active/notes LOAD \ -"This is the total active PKC. It is the sum of the respective" \ -"activities of " \ -"PKC-basal*" \ -"PKC-Ca-memb*" \ -"PKC-DAG-memb*" \ -"PKC-Ca-AA*" \ -"PKC-DAG-AA*" \ -"PKC-AA*" \ -"I treat PKC here in a two-state manner: Either it is in an active" \ -"state (any one of the above list) or it is inactive. No matter what " \ -"combination of stimuli activate the PKC, I treat it as having the same" \ -"activity. The scaling comes in through the relative amounts of PKC" \ -"which bind to the respecive stimuli." \ -"The justification for this is the mode of action of PKC, which like" \ -"most Ser/Thr kinases has a kinase domain normally bound to and blocked" \ -"by a regulatory domain. I assume that all the activators simply free" \ -"up the kinase domain." \ -"A more general model would incorporate a different enzyme activity for" \ -"each combination of activating inputs, as well as for each substrate." \ -"The current model seems to be a decent and much simpler approximation" \ -"for the available data." \ -"One caveat of this way of representing PKC is that the summation" \ -"procedure assumes that PKC does not saturate with its substrates. " \ -"If this assumption fails, then the contributing PKC complexes would" \ -"experience changes in availability which would affect their " \ -"balance. Given the relatively low percentage of PKC usually activated," \ -"and its high throughput as an enzyme, this is a safe assumption under" \ -"physiological conditions." \ -"" -call /kinetics/PKC-active/PKC-act-raf/notes LOAD \ -"Rate consts from Chen et al Biochem 32, 1032 (1993)" \ -"k3 = 4" \ -"Km for this substrate is trickier. Specific substrates are in the" \ -"uM range, so we use a higher Km here. This may be too conservative" \ -"in which case PKC would have a still higher effect on raf." \ -"The presence of this phosphorylation and activation step is from" \ -"Kolch et al 1993 Nature 364:249" \ -"" \ -"" -call /kinetics/PKC-active/PKC-inact-GAP/notes LOAD \ -"Rate consts are PKC generic rates." \ -"This reaction inactivates GAP. The reaction is from the " \ -"Boguski and McCormick 1993 review in Nature 366:643-654" \ -"The phosphorylation Vmax is 6x higher to account for" \ -"balance of GDP-Ras:GDP-Ras." -call /kinetics/PKC-active/PKC-act-GEF/notes LOAD \ -"Rate constants are generic PKC rates." \ -"See Chen et al 1993 Biochem 32:1032" \ -"This reaction activates GEF. Gives >= 2X stim of ras, and" \ -"a 2X stim of MAPK over amount from direct phosph of" \ -"c-raf. Note that it is a push-pull reaction, and also get" \ -"effect through phosph and inact of GAPs." \ -"" -call /kinetics/MAPK/notes LOAD \ -"The Mitogen Activated Protein Kinase (MAPK) cascade model " \ -"here includes both the MAPK cascade and" \ -"its regulation by two forms of MKP. MKP-1 is induced upon MAPK" \ -"activation, whereas MKP-2 is treated as a steady level of" \ -"protein. The phosphatase Protein phosphatase 2 A (PP2A) " \ -"is also included in this model to balance the activity of" \ -"the kinases." -call /kinetics/MAPK/craf-1/notes LOAD \ -"Strom et al 1990 Oncogene 5 pp 345-51 report high general expression" \ -"in all tissues." \ -"Huang and Ferrell 1996 PNAS 93(19):10078 use a value of 3 nM for oocytes." \ -"Here we stick with a much higher expression based on the Strom report." \ -"" -call /kinetics/MAPK/craf-1*/notes LOAD \ -"Singly phosphorylated form of c-raf-1. This is the form that gets" \ -"best activated by GTP.Ras." -call /kinetics/MAPK/MAPKK/notes LOAD \ -"Conc is from Seger et al JBC 267:20 pp14373 (1992)" \ -"mwt is 45/46 Kd" \ -"We assume that phosphorylation on both ser and thr is needed for" \ -"activiation. See Kyriakis et al Nature 358 417 1992" \ -"Init conc of total is 0.18" \ -"" -call /kinetics/MAPK/MAPK/notes LOAD \ -"Mol wt is 42 KDa." \ -"conc is from Sanghera et al JBC 265 pp 52 (1990)" \ -"They estimate MAPK is 1e-4x total protein, and protein is 15% of cell wt," \ -"so MAPK is 1.5e-5g/ml = 0.36uM." \ -"Lets use this." \ -"Note though that Huang and Ferrell 1996 PNAS 93(19):10078" \ -"report 1.2 uM in oocytes." \ -"Also note that brain concs may be high." \ -"Ortiz et al 1995 J. Neurosci 15(2):1285-1297 report " \ -"0.3 ng/ug protein in Cingulate Gyrus and 1.2 ng/ug protein" \ -"in nucleus accumbens. In hippocampus 270 ng/mg protein for ERK1 and" \ -"820 ng/mg protein for ERK 2. " \ -"If 15% of cell weight is protein, that means that about 300 * 0.15 ng/ul" \ -"is ERK 1. ie, 45e-9g/1e-6 litre = 45 mg/litre or about 1 uM. " \ -"For non-neuronal tissues a lower value may be better." -call /kinetics/MAPK/craf-1**/notes LOAD \ -"Negative feedback by MAPK* by hyperphosphorylating craf-1* gives" \ -"rise to this pool." \ -"Ueki et al JBC 269(22):15756-15761, 1994" \ -"" -call /kinetics/MAPK/MAPK-tyr/notes LOAD \ -"Haystead et al FEBS Lett. 306(1) pp 17-22 show that phosphorylation" \ -"is strictly sequential, first tyr185 then thr183." -call /kinetics/MAPK/MAPKK*/notes LOAD \ -"MAPKK phosphorylates MAPK on both the tyr and thr residues, first" \ -"tyr then thr. Refs: Seger et al JBC267:20 pp 14373 1992" \ -"The MAPKK itself is phosphorylated on ser as well as thr residues." \ -"Let us assume that the ser goes first, and that the sequential phosphorylation" \ -"is needed. See Kyriakis et al Nature 358 417-421 1992" -call /kinetics/MAPK/MAPKK*/MAPKKtyr/notes LOAD \ -"The actual MAPKK is 2 forms from Seger et al JBC 267:20 14373(1992)" \ -"Vmax = 150nmol/min/mg" \ -"From Haystead et al FEBS 306(1):17-22 we get Km=46.6nM for at least one" \ -"of the phosphs." \ -"Putting these together:" \ -"k3=0.15/sec, ratio of 4 to get k2=0.6." \ -"k1=0.75/46.6nM=2.7e-5" \ -"In terms of Michaelis-Menten rates, " \ -"Km = 0.046, Vmax = 0.15, ratio = 4." -call /kinetics/MAPK/MAPKK*/MAPKKthr/notes LOAD \ -"Rate consts same as for MAPKKtyr." -call /kinetics/MAPK/MAPKK-ser/notes LOAD \ -"Intermediately phophorylated, assumed inactive, form of MAPKK" -call /kinetics/MAPK/RGR/notes LOAD \ -"Shorthand name for Raf.GTP.Ras. This refers to the complex between" \ -"GTP.Ras and the unphosphorylated Raf. I treat this as having the " \ -"same enzyme activity as the Raf*.GTP.Ras form." -call /kinetics/MAPK/RGR/RGR.1/notes LOAD \ -"Kinetics are the same as for the craf-1* activity, ie.," \ -"k1=5.5e-6, k2=.42, k3 =0.105" \ -"These are based on Force et al PNAS USA 91 1270-1274 1994." \ -"" -call /kinetics/MAPK/RGR/RGR.2/notes LOAD \ -"Same kinetics as other c-raf activated forms. See " \ -"Force et al PNAS 91 1270-1274 1994." \ -"k1 = 5.5e-6, k2 = .42, k3 = 0.105" \ -"" -call /kinetics/MAPK/Raf*-GTP-Ras/notes LOAD \ -"This is the main activated form of craf. It requires binding to ras for" \ -"activation, but the presence of the phosphorylation increases this" \ -"binding. See Leevers 1994 Nature 369:411-414 and" \ -"Hallberg et al 1994 JBC 269(6):3913-3916" -call /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.1/notes LOAD \ -"Kinetics are the same as for the craf-1* activity, ie.," \ -"k1=1.1e-6, k2=.42, k3 =0.105" \ -"These are based on Force et al PNAS USA 91 1270-1274 1994." \ -"They report Km for MAPKK of 0.8 uM. and a Vmax of ~500 fm/min/ug." \ -"These parms cannot reach the observed 4X stimulation of MAPK." \ -"So we increase the affinity, ie, raise k1 5x to 5.5e-6" \ -"which is equivalent to 5-fold reduction in Km to about 0.16." \ -"This is, of course, dependent on the amount of MAPKK present." \ -"" \ -"" -call /kinetics/MAPK/Raf*-GTP-Ras/Raf*-GTP-Ras.2/notes LOAD \ -"Same kinetics as other c-raf activated forms. See " \ -"Force et al PNAS 91 1270-1274 1994." \ -"" -call /kinetics/MAPK*/notes LOAD \ -"This molecule is phosphorylated on both the tyr and thr residues and" \ -"is active: Seger et al 1992 JBC 267(20):14373" \ -"The rate consts are from two sources: Combine Sanghera et al" \ -"JBC 265(1) :52-57 with Nemenoff et al JBC 93 pp 1960 to get" \ -" k3 = 10, k2 = 40, k1 = 3.25e-6" -call /kinetics/MAPK*/MAPK*-feedback/notes LOAD \ -"Ueki et al JBC 269(22):15756-15761 show the presence of" \ -"this step, but not the rate consts, which are derived from" \ -"Sanghera et al JBC 265(1):52-57, 1990, see the deriv in the" \ -"MAPK* notes." -call /kinetics/MAPK*/MAPK*/notes LOAD \ -"Km = 25uM @ 50 uM ATP and 1mg/ml MBP (huge XS of substrate)" \ -"Vmax = 4124 pmol/min/ml at a conc of 125 pmol/ml of enz." \ -"Numbers are from Sanghera et al JBC 265 pp 52 , 1990. " \ -"From Nemenoff et al 1993 JBC 268(3):1960-1964 - using Sanghera's 1e-4 ratio" \ -"of MAPK to protein, we get k3 = 7/sec from 1000 pmol/min/mg total " \ -"protein in fig 5" \ -"I take the Vmax to be higher for PLA2 given the fold activation of PLA2" \ -"by MAPK. This is actually a balance term between MAPK and the dephosphorylation" \ -"step." \ -"" -call /kinetics/Ras-act-craf/notes LOAD \ -"Assume binding is fast and limited only by available" \ -"Ras*. So kf = kb/[craf-1] " \ -"If kb is 1/sec, then kf = 1/0.2 uM = 1/(0.2 * 6e5) = 8.3e-6" \ -"Later: Raise it by 10 X to about 1e-4, giving a Kf of 60 for Kb of 0.5" \ -"and a tau of approx 2 sec." \ -"Based on:" \ -"Hallberg et al JBC 269:6 3913-3916 1994, 3% of cellular Raf is" \ -"complexed with Ras." \ -"This step needed to memb-anchor and activate Raf:" \ -"Leevers et al Nature 369 411-414." \ -"Also see Koide et al 1993 PNAS USA 90(18):8683-8686" -call /kinetics/PPhosphatase2A/notes LOAD \ -"Refs: Pato et al Biochem J 293:35-41(93);" \ -"CoInit values span a range depending on source." \ -"Pato et al 1993 Biochem J 293:35-41 and" \ -"Cohen et al 1988 Meth Enz 159:390-408 estimate 80 nM from muscle" \ -"" \ -"Zolneierowicz et al 1994 Biochem 33:11858-11867 report" \ -"levels of 0.4 uM again from muscle, but expression" \ -"is also strong in brain." \ -"Our estimate of 0.224 is between these two." \ -"" \ -"There are many substrates for PP2A in this model, so I put" \ -"the enzyme rate calculations here:" \ -"Takai&Mieskes Biochem J 275:233-239 have mol wt 36 KDa. They" \ -"report Vmax of 119 umol/min/mg i.e. 125/sec for k3 for pNPP substrate," \ -"Km of 16 mM. This is obviously unreasonable for protein substrates." \ -"For chicken gizzard myosin light chan, we have Vmax = 13 umol/min/mg" \ -"or about k3 = 14/sec." \ -"" \ -"Pato et al 1993 Biochem J 293:35-41 report" \ -"caldesmon: Km = 2.2 uM, Vmax = 0.24 umol/min/mg. They do not think " \ -"caldesmon is a good substrate. " \ -"Calponin: Km = 14.3, Vmax = 5." \ -"Our values approximate these." \ -"" \ -"" -call /kinetics/PPhosphatase2A/craf-deph/notes LOAD \ -"See parent PPhosphatase2A for parms" \ -"" -call /kinetics/PPhosphatase2A/MAPKK-deph/notes LOAD \ -"See: Kyriakis et al Nature 358 pp 417-421 1992" \ -"Ahn et al Curr Op Cell Biol 4:992-999 1992 for this pathway." \ -"See parent PPhosphatase2A for parms." -call /kinetics/PPhosphatase2A/MAPKK-deph-ser/notes LOAD \ -"See parent PPhostphatase2A description for rate details" -call /kinetics/PPhosphatase2A/craf**-deph/notes LOAD \ -"Ueki et al JBC 269(22) pp 15756-15761 1994 show hyperphosphorylation of" \ -"craf, so this is there to dephosphorylate it. Identity of phosphatase is" \ -"assumed to be PP2A." -call /kinetics/PLA2/notes LOAD \ -"Main source of data: Leslie and Channon BBA 1045 (1990) pp 261-270." \ -"Fig 6 is Ca curve. Fig 4a is PIP2 curve. Fig 4b is DAG curve. Also see" \ -"Wijkander and Sundler JBC 202 (1991) pp873-880;" \ -"Diez and Mong JBC 265(24) p14654;" \ -"Leslie JBC 266(17) (1991) pp11366-11371" \ -"Many inputs activate PLA2. In this model I simply take" \ -"each combination of stimuli as binding to PLA2 to give a" \ -"unique enzymatic activity. The Km and Vmax of these" \ -"active complexes is scaled according to the" \ -"relative activation reported in the papers above." -call /kinetics/PLA2/PLA2-cytosolic/notes LOAD \ -"cPLA2 IV form has mol wt of 85 Kd." \ -"Glaser et al 1993 TIPS 14:92-98." \ -"" \ -"Calculated cytosolic concentration is ~300 nM from Wijkander and Sundler" \ -"1991 Eur J Biochem 202:873" \ -"Leslie and Channon 1990 BBA 1045:261 use about 400 nM. " \ -"Decent match. Use 400 nM." \ -"" -call /kinetics/PLA2/PLA2-Ca-act/notes LOAD \ -"Direct activation of PLA2 by Ca." \ -"From Leslie and Channon BBA 1045 (1990) 261-270 fig6 pp267." -call /kinetics/PLA2/PLA2-Ca*/notes LOAD \ -"The generic Ca-activated form ofPLA2." \ -"Leslie and Channon 1990 BBA 1045:261." -call /kinetics/PLA2/PLA2-Ca*/kenz/notes LOAD \ -"Based on Leslie and Channon 1990 BBA 1045:261, in relation to the" \ -"other PLA2 inputs (not including MAPK). Ca alone is rather a " \ -"weak input." -call /kinetics/PLA2/PIP2-PLA2-act/notes LOAD \ -"Activation of PLA2 by PIP2. From" \ -"Leslie and Channon 1990 BBA 1045:261 the stimulation of PLA2" \ -"activity by high PIP2 is 7x." \ -"In this model we don't really expect any PIP2 stimulus." \ -"" -call /kinetics/PLA2/PIP2-PLA2*/kenz/notes LOAD \ -"Based on Leslie and Channon 1990 BBA 1045:261." -call /kinetics/PLA2/PIP2-Ca-PLA2-act/notes LOAD \ -"Synergistic activation of PLA2 by Ca and PIP2. Again from " \ -"Leslie and Channon 1990 BBA 1045:261" -call /kinetics/PLA2/PIP2-Ca-PLA2*/kenz/notes LOAD \ -"Based on AA generation by different stimuli according to" \ -"Leslie and Channon 1990 BBA 1045:261" -call /kinetics/PLA2/DAG-Ca-PLA2-act/notes LOAD \ -"Synergistic activation of PLA2 by Ca and DAG. " \ -"Based on Leslie and Channon 1990 BBA 1045:261" \ -"The Kd is rather large and may reflect the complications" \ -"in measuring DAG. For this model it is not critical " \ -"since DAG is held fixed." -call /kinetics/PLA2/DAG-Ca-PLA2*/kenz/notes LOAD \ -"Based on Leslie and Channon 1990 BBA 1045:261." -call /kinetics/PLA2/APC/notes LOAD \ -"arachodonylphosphatidylcholine is the favoured substrate" \ -"from Wijkander and Sundler, JBC 202 pp 873-880, 1991." \ -"Their assay used 30 uM substrate, which is what the kinetics in" \ -"this model are based on. For the later model we should locate" \ -"a more realistic value for APC. For now it is treated as" \ -"a buffered metabolite." -call /kinetics/PLA2/Degrade-AA/notes LOAD \ -"Degradation pathway for AA." \ -"APC is a convenient buffered pool to dump it back into, though the" \ -"actual metabolism is probably far more complex." \ -"For the purposes of the full model we use a rate of degradation of" \ -"0.4/sec to give a dynamic range of AA comparable to what is seen" \ -"experimentally." \ -"Wijkander and Sundler 1991 Eur J Biochem 202:873" \ -"Leslie and Channon 1990 BBA 1045:261" -call /kinetics/PLA2/PLA2*-Ca/notes LOAD \ -"Phosphorylated and active form of PLA2. Several kinases act on it:" \ -"PKA: Wightman et al JBC 257 pp6650 1982" \ -"PKC: Many refs, eg Gronich et al JBC 263 pp 16645, 1988 but see Lin etal" \ -"MAPK: Lin et al, Cell 72 pp 269, 1993. Show 3x with MAPK but not PKC alone" \ -"The Nemenoff assays are conducted in rather high Ca so I have" \ -"assumed a Ca binding step." -call /kinetics/PLA2/PLA2*-Ca/kenz/notes LOAD \ -"This form should be 3 to 6 times as fast as the Ca-only form, from" \ -"Lin et al 1993 Cell 269-278" \ -"Nemenoff et al 1993 JBC 268:1960" \ -"Several forms contribute to the Ca-stimulated form, so this rate has" \ -"to be a factor larger than their total contribution. " \ -"I assign Vmax as the scale factor here because there is lots of APC" \ -"substrate, so all the PLA2 complex enzymes are limited primarily by Vmax." -call /kinetics/PLA2/PLA2*/notes LOAD \ -"Phosphorylated PLA2. The site differs from the site" \ -"phosphorylated by PKC. See" \ -"Nemenoff et al 1993 JBC 268(3):1960-1964" -call /kinetics/PLA2/PLA2*-Ca-act/notes LOAD \ -"Nemenoff et al 1993 JBC 268:1960 report a 2X to 4x activation of PLA2" \ -"by MAPK, which seems dependent on Ca as well. This reaction " \ -"represents this activation. Rates are scaled to give appropriate" \ -"fold activation." -call /kinetics/PLA2/dephosphorylate-PLA2*/notes LOAD \ -"Dephosphorylation reaction to balance MAPK phosphorylation of PLA2." \ -"This is probably mediated by PP2A. " \ -"Rates determined to keep the balance of phosphorylated and" \ -"non-phosphorylated PLA2 reasonable. The constraining factor" \ -"is the fold activation of PLA2 by MAPK." -call /kinetics/temp-PIP2/notes LOAD \ -"This is a steady PIP2 input to PLA2. The sensitivity" \ -"of PLA2 to PIP2 discussed below" \ -"does not match with the reported free levels which are" \ -"used by the phosphlipase Cs. My understanding is that" \ -"there may be different pools of PIP2 available for stimulating" \ -"PLA2 as opposed to being substrates for PLCs. For that reason" \ -"I have given this PIP2 pool a separate identity. As it is" \ -"a steady input this is not a problem in this model." \ -"" \ -"Majerus et al Cell 37:701-703 report a brain concentration of" \ -"0.1 - 0.2 mole %" \ -"Majerus et al Science 234:1519-1526 report a huge range of " \ -"concentrations: from 1 to 10% of PI content, which is in turn" \ -"2-8% of cell lipid. This gives 2e-4 to 8e-3 of cell lipid." \ -"In concentrations in total volume of cell (a somewhat strange" \ -"number given the compartmental considerations) this comes to" \ -"anywhere from 4 uM to 200 uM." \ -"" \ -"PLA2 is stim 7x by PIP2 (Leslie and Channon BBA 1045:261(1990) " \ -"Leslie and Channon say PIP2 is present at 0.1 - 0.2mol% range in membs," \ -"so I'll use a value at the lower end of the scale for basal PIP2." -call /kinetics/Ras/notes LOAD \ -" The main refs for Ras are" \ -"Boguski and McCormick Nature 366 643-654 '93 Major review" \ -"Eccleston et al JBC 268:36 pp 27012-19" \ -"Orita et al JBC 268:34 25542-25546" -call /kinetics/Ras/dephosph-GEF/notes LOAD \ -"This rate is based on the known ratio of GDP-Ras to GTP-Ras." \ -"Basal: Ras.GTP = 7%" \ -"Stimulated 15%" \ -"Time course is within 10 min, probably much faster as not" \ -"all early data points are there." \ -"See Gibbs et al JBC 265(33):20437-20422" -call /kinetics/Ras/inact-GEF/notes LOAD \ -"This is the amount of inactive GEF available to the system." \ -"The value is the same as the estimated amount of SoS, though" \ -"I treat it here as a different pool. Probably several molecules" \ -"can function as GEFs and this is a simplification." \ -"Orita et al JBC 268(34):25542-25546" \ -"Gulbins et al 1994 Mol Cell Biol 14(2):906-913" \ -"" -call /kinetics/Ras/GEF*/notes LOAD \ -"Phosphorylated and thereby activated form of GEF. See, e.g." \ -"Orita et al JBC 268:34 25542-25546 1993, Gulbins et al." \ -"It is not clear whether there is major specificity for tyr or ser/thr." -call /kinetics/Ras/GEF*/GEF*-act-ras/notes LOAD \ -"Kinetics from Orita et al JBC 268(34):25542-25546." \ -"Note that the Vmax is slow, but it does match" \ -"the slow GTP hydrolysis rates." \ -"" -call /kinetics/Ras/GTP-Ras/notes LOAD \ -"Only a very small fraction (7% unstim, 15% stim) of ras is GTP-bound." \ -"Gibbs et al JBC 265(33) 20437" \ -"" -call /kinetics/Ras/GDP-Ras/notes LOAD \ -"GDP bound form. See Rosen et al Neuron 12 1207-1221 June 1994." \ -"the activation loop is based on Boguski and McCormick Nature 366 643-654 93" \ -"Assume Ras is present at about the same level as craf-1, 0.2 uM." \ -"Hallberg et al JBC 269:6 3913-3916 1994 estimate upto 5-10% of cellular" \ -"Raf is assoc with Ras. Given that only 5-10% of Ras is GTP-bound, we" \ -"need similar amounts of Ras as Raf." -call /kinetics/Ras/Ras-intrinsic-GTPase/notes LOAD \ -"This is extremely slow (kf = 1e-4), but it is significant as so little GAP actually" \ -"gets complexed with it that the total GTP turnover rises only by" \ -"2-3 X (see Gibbs et al, JBC 265(33) 20437-20422) and " \ -"Eccleston et al JBC 268(36) 27012-27019" \ -"There is no back reaction as we assume this to be a regular" \ -"irreversible Michaelis-Menten zeroth order hydrolysis." \ -"" -call /kinetics/Ras/dephosph-GAP/notes LOAD \ -"Assume a reasonably good rate for dephosphorylating it, 0.1/sec." \ -"This fits well with resting levels of active kinase and the" \ -"degree of activation as well as time-course of turnoff of Ras activation," \ -"but data is quite indirect." -call /kinetics/Ras/GAP*/notes LOAD \ -"Phosphorylated and inactive GAP." \ -"See Boguski and McCormick 1993 Nature 366:643-654 for a review." -call /kinetics/Ras/GAP/notes LOAD \ -"GTPase-activating proteins. See Boguski and McCormick 1993 Nature 366:643-654" \ -"Turn off Ras by helping to hydrolyze bound GTP. " \ -"This one is probably NF1, ie., Neurofibromin as it is inhibited by AA and lipids," \ -"and expressed in neural cells. p120-GAP is also a possible candidate, but" \ -"is less regulated. Both may exist at similar levels." \ -"See Eccleston et al JBC 268(36) pp27012-19" \ -"Level=.002" -call /kinetics/Ras/GAP/GAP-inact-ras/notes LOAD \ -"From Eccleston et al JBC 268(36)pp27012-19 get Kd < 2uM, kcat - 10/sec" \ -"From Martin et al Cell 63 843-849 1990 get Kd ~ 250 nM, kcat = 20/min" \ -"I will go with the Eccleston figures as there are good error bars (10%)." \ -"The two sets of values are reasonably close." \ -"k1 = 1.666e-3/sec, k2 = 1000/sec, k3 = 10/sec (note k3 is rate-limiting)" \ -"This is one of the rare cases where we have direct info on the" \ -"k3 being rate-limiting. Hence the ratio I use for the k2:k3 rates is" \ -"100 rather than the usual 4." -call /kinetics/Ras-act-unphosph-raf/notes LOAD \ -"Based on rates of Ras-act-craf which has Kf=60, Kb= 0.5." \ -"This reaction was introduced to account for the PKC-independent" \ -"activation of MAPK." \ -"This reac should have less affinity" \ -"but similar tau as compared to the Ras-cat-craf," \ -" since the phosphorylated Raf form has" \ -"a greater effect on MAPK." \ -"" \ -"" -call /kinetics/PDGFR/notes LOAD \ -"Platelet Derived Growth Factor Receptor pathway." \ -"Possible outputs include phosphorylation of Shc (which " \ -"couples ot Sos and Grb2 to activate Ras) and" \ -"phosphorylation of PLC-gamma. The latter is not" \ -"implemented in this specific model." -call /kinetics/PDGFR/PDGFR/notes LOAD \ -"Berkers et al JBC 266 say 22K high affinity receptors per cell." \ -"Sherrill and Kyte Biochemistry 35 use range 4-200 nM." \ -"These values match reasonably." \ -"Heidaran et al 1993 JBC 268(13):9287-9295" \ -"use NIH3T3 cells and have 6.5e4 receptors/cell. This is" \ -"also in the same general range. We use this last" \ -"value because the cell type matches." -call /kinetics/PDGFR/act_PDGFR/notes LOAD \ -"From Heidaran et al JBC268(13):9287 Fig 5." \ -"Kd is ~0.5 nM" -call /kinetics/PDGFR/L.PDGFR/notes LOAD \ -"This is terribly simplified: there are many interesting" \ -"intermediate stages, including dimerization and assoc" \ -"with adapter molecules like Shc, that contribute to the" \ -"activation of the EGFR." -call /kinetics/PDGFR/L.PDGFR/phosph_Shc/notes LOAD \ -"Rates from Okada et al JBC 270:35 pp 20737 1995" \ -"Km = 0.70 to 0.85 uM, Vmax = 4.4 to 5.0 pmol/min. Unfortunately" \ -"the amount of enzyme is not known, the prep is only" \ -"partially purified." \ -"Tau phosph is max within 30 sec, falls back within" \ -"20 min. Ref: Sasaoka et al JBC 269:51 32621 1994." \ -"Use k3 = 0.1 based on this tau." \ -"27 Apr 2001: Lowered k3 to 0.05 to fix conc-effect of SHC phosph" \ -"by PDGF. This gives results for downstream effects in" \ -"agreement with other papers, e.g., the Brondello papers." -call /kinetics/PDGFR/PDGF/notes LOAD \ -"Platelet-derived growth factor. Heterodimer Mol wt. is approx 30 KDa" \ -"Deuel et al 1985 Cancer Surv. 4(4):633-53" \ -"Conc of 50 ng/ml is close to saturating, and is used by P. Ram (personal" \ -"communication). Other refs use 65 ng/ml" \ -"Weise RJ et al 1995 JBC 270(7):3442-3446" \ -"A stimulus of 5 min is commonly used." \ -"Conversion factor: " \ -"1ng/ml = (1e-9/30K)* 1000 Moles/litre = 3e-11M = 3e-5 uM" \ -"So 50 ng/ml ~ 1.5 nM." -call /kinetics/PDGFR/SHC/notes LOAD \ -"There are 2 isoforms: 52 KDa and 46 KDa (See Okada et al" \ -"JBC 270:35 pp 20737 1995). They are acted up on by the EGFR" \ -"in very similar ways, and apparently both bind Grb2 similarly," \ -"so we'll bundle them together here." \ -"Sasaoka et al JBC 269:51 pp 32621 1994 show immunoprecs where" \ -"it looks like there is at least as much Shc as Grb2. So" \ -"we'll tentatively say there is 1 uM of Shc." -call /kinetics/PDGFR/SHC*/notes LOAD \ -"Phosphorylated form of SHC. Binds to the SoS.Grb2 " \ -"complex to give the activated GEF form upstream" \ -"of Ras." -call /kinetics/PDGFR/dephosph_Shc/notes LOAD \ -"Time course of decline of phosph is 20 min from Sasaoka" \ -"et al 1994 JBC 269(51):32621. Part of this is" \ -"the turnoff time of the EGFR itself. Lets assume a tau of" \ -"10 min for this dephosphorylation as a first pass." \ -"27 Apr 2001: Dephosph too slow, shifts SHC balance over to" \ -"phosphorylated form. Increase Kf to 0.01. This gives a reasonable" \ -"overall time-course." -call /kinetics/PDGFR/Internal_L.PDGFR/notes LOAD \ -"The internalized PDGFR is treated as a generic pool in equilibrium with" \ -"the surface receptor. This simplifies the turnover processes but" \ -"fits reasonably well with data." -call /kinetics/PDGFR/Internalize/notes LOAD \ -"Original model derived from EGFR model." \ -"See Helin and Beguinot JBC 266:13 1991 pg 8363-8368." \ -"In Fig 3 they have internalization tau about 10 min, " \ -"equil at about 20% EGF available. So kf = 4x kb, and" \ -"1/(kf + kb) = 600 sec so kb = 1/3K = 3.3e-4," \ -"and kf = 1.33e-3. This doesn't take into account the" \ -"unbound receptor, so we need to push the kf up a bit, to" \ -"0.002" \ -"26 apr 2001: Keq too low for the PDGF model." \ -"Now Kf=0.001,Kb=0.00066" \ -"The previously calculated internalization equilibrium" \ -"led to very high internalization which shifted the effective" \ -"dependence of the receptor on PDGF so it looked like the" \ -"receptor binding was higher affinity than experimentally" \ -"determined. Used two constraining factors: " \ -"1. Time course of " \ -"SHC phosphorylation/dephosphorylation which is fast on, but" \ -"10-20 minutes off." \ -"2. Conc dependence of MAPK on PDGF has a halfmax around 3ng/ml." \ -"See Brondello et al 1997 JBC 272(2):1368-1376 and " \ -"Brondello et al 1999 Science 286:2514-1517." \ -"" \ -"" \ -"" -call /kinetics/MKP-2/notes LOAD \ -"MKP2 is modeled to act as a relatively steady," \ -"unregulated phosphatase for controlling MAPK activity." \ -"From Brondello et al JBC 272(2):1368-1376 (1997), the" \ -"blockage of MKP-1 induction increases MAPK activity by" \ -"no more than 2x. So this phosphatase will play the steady" \ -"role and the fully stimulated MKP-1 can come up to the" \ -"level of this steady level." \ -"From Chu et al 1995 JBC 271(11):6497-6501 it looks like" \ -"both MKP-1 and MKP-2 have similar activities in dephosphorylating" \ -"ERK2. So I use the same enzymatic rates for both." \ -"" \ -"31 Jan 2002: For the purposes of making a bistable model without the" \ -"complications of MKP-1 induction, I simply set the initial" \ -"conc of MKP-2 up by 0.0004 uM which was the starting level of MKP-1." -call /kinetics/MKP-2/MKP2-tyr-deph/notes LOAD \ -"22 Apr 2001: Based on MKP1 parms." \ -"The original kinetics have been modified to obey the k2 = 4 * k3 rule," \ -"while keeping kcat and Km fixed. The only constraining" \ -"data point is the time course of MAPK dephosphorylation, which this" \ -"model satisfies." \ -"" \ -"The rates are treated as the same as for MKP-1, based on" \ -"Chu et al 1995 JBC 271(11):6497-6501" -call /kinetics/MKP-2/MKP2-thr-deph/notes LOAD \ -"See MKP2-tyr-deph" -complete_loading diff --git a/examples/genesis/acc68.g b/examples/genesis/acc68.g deleted file mode 100644 index 5531f0f..0000000 --- a/examples/genesis/acc68.g +++ /dev/null @@ -1,597 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Mon Feb 13 16:21:21 2006 - -include kkit {argv 1} - -FASTDT = 5e-05 -SIMDT = 0.01 -CONTROLDT = 0.1 -PLOTDT = 20 -MAXTIME = 20000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 3e-18 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 394 4 0 -simundump group /kinetics/Lambda-cl_gene 0 15 yellow x 0 0 "" Lambda-cl_gene \ - /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 386 1 0 -simundump kpool /kinetics/Lambda-cl_gene/Nucleotides 0 0 0.00055555 \ - 0.00055555 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 15 400 -4 0 -simundump kpool /kinetics/Lambda-cl_gene/Amino_Acids 0 0 0.00055555 \ - 0.00055555 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 15 379 -4 0 -simundump kpool /kinetics/Lambda-cl_gene/lambda-cl_mRNA 0 0 0 0 0 0 0 0 1800 \ - 0 /kinetics/geometry 5 15 386 -4 0 -simundump kenz /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation 0 \ - 0 0 0 0 1800 0.83494 0.668 0.167 0 1 "" red 5 "" 379 -6 0 -simundump kpool /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA 0 0 0 0 0 0 \ - 0 0 1800 4 /kinetics/geometry 1 15 393 -4 0 -simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl_operator 0 0 0.022222 \ - 0.022222 40 40 0 0 1800 0 /kinetics/geometry 36 15 400 -8 0 -simundump kenz /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription 0 \ - 0 0 0 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 400 -7 0 -simundump kreac /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction 0 \ - 0.55556 224 "" white 15 396 -9 0 -simundump kreac /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] 0 \ - 0.55556 9 "" white 15 390 -9 0 -simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound 0 0 0 0 \ - 0 0 0 0 1800 0 /kinetics/geometry 2 15 393 -8 0 -simundump kenz /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription 0 \ - 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 393 -6 0 -simundump kpool /kinetics/Lambda-cl_gene/Degraded_Lambda-cl 0 0 0 0 0 0 0 0 \ - 1800 4 /kinetics/geometry 2 15 379 -15 0 -simundump kreac /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation 0 \ - 0.005775 0 "" white 15 389 -3 0 -simundump kreac /kinetics/Lambda-cl_gene/Lambda-cl_degradation 0 0.016666 0 \ - "" white 15 379 -13 0 -simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound 0 0 0 0 \ - 0 0 0 0 1800 0 /kinetics/geometry 52 15 386 -8 0 -simundump kenz /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 0 \ - 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 386 -7 0 -simundump kpool /kinetics/Lambda-cl_gene/Lambda-cl 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 27 15 379 -11 0 -simundump group /kinetics/Lac_gene 0 yellow yellow x 0 0 "" Lac_gene \ - /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 345 1 0 -simundump kpool /kinetics/Lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 12 yellow 344 -4 0 -simundump kenz /kinetics/Lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ - 0.83494 0.668 0.167 0 1 "" red 12 "" 338 -6 0 -simundump kpool /kinetics/Lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 358 -4 0 -simundump kreac /kinetics/Lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ - yellow 347 -3 0 -simundump kpool /kinetics/Lac_gene/Degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 4 \ - /kinetics/geometry 1 yellow 351 -4 0 -simundump kpool /kinetics/Lac_gene/Lac_operator 0 0 0.022222 0.022222 40 40 0 \ - 0 1800 0 /kinetics/geometry 36 yellow 358 -8 0 -simundump kenz /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription 0 0 0 \ - 0 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 358 -7 0 -simundump kpool /kinetics/Lac_gene/Lac_operator_1st_bound 0 0 0 0 0 0 0 0 \ - 1800 0 /kinetics/geometry 2 yellow 351 -8 0 -simundump kenz /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription 0 \ - 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 351 -6 0 -simundump kpool /kinetics/Lac_gene/Lac_operator_2nd_bound 0 0 0 0 0 0 0 0 \ - 1800 0 /kinetics/geometry 52 yellow 344 -8 0 -simundump kenz /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 0 \ - 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 344 -7 0 -simundump kreac /kinetics/Lac_gene/Lac_degradation 0 0.016666 0 "" white \ - yellow 338 -13 0 -simundump kpool /kinetics/Lac_gene/Degraded_lac 0 0 0 0 0 0 0 0 1800 4 \ - /kinetics/geometry 2 yellow 338 -15 0 -simundump kpool /kinetics/Lac_gene/Amino_Acids 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 338 -4 0 -simundump kreac /kinetics/Lac_gene/Lac_operator_inhibition_reaction 0 0.55556 \ - 224 "" white yellow 354 -9 0 -simundump kreac /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] 0 \ - 0.55556 9 "" white yellow 348 -9 0 -simundump kpool /kinetics/Lac_gene/Lac 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 yellow 338 -11 0 -simundump group /kinetics/TetR_gene 0 61 yellow x 0 0 "" TetR_gene \ - /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 311 1 0 -simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ - 303 -13 0 -simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ - 0 0 1800 0 /kinetics/geometry 36 61 323 -8 0 -simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription 0 0 \ - 0 0 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 323 -7 0 -simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 323 -4 0 -simundump kpool /kinetics/TetR_gene/TetR_operator_1st_bound 0 0 0 0 0 0 0 0 \ - 1800 0 /kinetics/geometry 2 61 316 -8 0 -simundump kenz /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription 0 \ - 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 316 -6 0 -simundump kpool /kinetics/TetR_gene/TetR_operator_2nd_bound 0 0 0 0 0 0 0 0 \ - 1800 0 /kinetics/geometry 46 61 309 -8 0 -simundump kenz /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 0 \ - 0 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" 309 -7 0 -simundump kpool /kinetics/TetR_gene/Amino_Acids 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 303 -4 0 -simundump kpool /kinetics/TetR_gene/tetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 12 61 309 -4 0 -simundump kenz /kinetics/TetR_gene/tetR_mRNA/tetR_translation 0 0 0 0 0 1800 \ - 0.83494 0.668 0.167 0 1 "" red 12 "" 303 -6 0 -simundump kreac /kinetics/TetR_gene/tetR_mRNA_degradation 0 0.005775 0 "" \ - white 61 313 -3 0 -simundump kpool /kinetics/TetR_gene/Degraded_tetR_mRNA 0 0 0 0 0 0 0 0 1800 4 \ - /kinetics/geometry 1 61 316 -4 0 -simundump kpool /kinetics/TetR_gene/Degraded_TetR 0 0 0 0 0 0 0 0 1800 4 \ - /kinetics/geometry 2 61 303 -15 0 -simundump kreac /kinetics/TetR_gene/TetR_operator_inhibition_reaction 0 \ - 0.55556 224 "" white 61 319 -9 0 -simundump kreac /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] 0 \ - 0.55556 9 "" white 61 313 -9 0 -simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 16 61 303 -11 0 -simundump doqcsinfo /kinetics/doqcsinfo 0 /home/harsha/Repressilator.g \ - Repressilator network "Amrita Sekhar and Sharat J. Vayttaden, NCBS" \ - "Michael B. Elowitz, Stanislas Lelbler" "" "E. Coli" \ - "E.coli Expression, Transposon, Lambda phage" Cytosol Qualitative \ - "Elowitz MB, Leibler S., Nature. 2000 Jan 20;403(6767):335-8 ( Peer-reviewed publication )" \ - "Exact GENESIS implementation" "Approximates original data " 374 4 0 -simundump xgraph /graphs/conc1 0 9500 14500 0 1.65 0 -simundump xgraph /graphs/conc2 0 0 1e+05 0 1.2 0 -simundump xplot /graphs/conc1/TetR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 16 0 0 1 -simundump xplot /graphs/conc1/Lambda-cl.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 27 0 0 1 -simundump xplot /graphs/conc1/Lac.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 1e+05 0 1.8 0 -simundump xgraph /moregraphs/conc4 0 0 1e+05 0 0.115 0 -simundump xcoredraw /edit/draw 0 301 402 -17 6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"Repressilator model: A synthetic oscillatory network" \ -"of transcriptional regulators designed by Michael B. Elowitz and" \ -"Stanislas Leibler 2000 Nature 403(6767):335-338" -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 /kinetics/Lambda-cl_gene/Nucleotides REAC sA B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription /kinetics/Lambda-cl_gene/Nucleotides REAC sA B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription /kinetics/Lambda-cl_gene/Nucleotides REAC sA B -addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation /kinetics/Lambda-cl_gene/Amino_Acids REAC sA B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 /kinetics/Lambda-cl_gene/lambda-cl_mRNA MM_PRD pA -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription /kinetics/Lambda-cl_gene/lambda-cl_mRNA MM_PRD pA -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription /kinetics/Lambda-cl_gene/lambda-cl_mRNA MM_PRD pA -addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation /kinetics/Lambda-cl_gene/lambda-cl_mRNA REAC A B -addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation ENZYME n -addmsg /kinetics/Lambda-cl_gene/Amino_Acids /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA REAC B A -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction /kinetics/Lambda-cl_gene/Lambda-cl_operator REAC A B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription ENZYME n -addmsg /kinetics/Lambda-cl_gene/Nucleotides /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction PRODUCT n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] PRODUCT n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound REAC A B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound REAC B A -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription ENZYME n -addmsg /kinetics/Lambda-cl_gene/Nucleotides /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_degradation /kinetics/Lambda-cl_gene/Degraded_Lambda-cl REAC B A -addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation PRODUCT n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl /kinetics/Lambda-cl_gene/Lambda-cl_degradation SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/Degraded_Lambda-cl /kinetics/Lambda-cl_gene/Lambda-cl_degradation PRODUCT n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound REAC B A -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 ENZYME n -addmsg /kinetics/Lambda-cl_gene/Nucleotides /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1 SUBSTRATE n -addmsg /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation /kinetics/Lambda-cl_gene/Lambda-cl MM_PRD pA -addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction /kinetics/Lambda-cl_gene/Lambda-cl REAC A B -addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] /kinetics/Lambda-cl_gene/Lambda-cl REAC A B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_degradation /kinetics/Lambda-cl_gene/Lambda-cl REAC A B -addmsg /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription /kinetics/Lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 /kinetics/Lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription /kinetics/Lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/Lac_gene/lac_mRNA_degradation /kinetics/Lac_gene/lac_mRNA REAC A B -addmsg /kinetics/Lac_gene/lac_mRNA /kinetics/Lac_gene/lac_mRNA/lac_translation ENZYME n -addmsg /kinetics/Lac_gene/Amino_Acids /kinetics/Lac_gene/lac_mRNA/lac_translation SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription /kinetics/Lac_gene/Nucleotides REAC sA B -addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 /kinetics/Lac_gene/Nucleotides REAC sA B -addmsg /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription /kinetics/Lac_gene/Nucleotides REAC sA B -addmsg /kinetics/Lac_gene/lac_mRNA /kinetics/Lac_gene/lac_mRNA_degradation SUBSTRATE n -addmsg /kinetics/Lac_gene/Degraded_lac_mRNA /kinetics/Lac_gene/lac_mRNA_degradation PRODUCT n -addmsg /kinetics/Lac_gene/lac_mRNA_degradation /kinetics/Lac_gene/Degraded_lac_mRNA REAC B A -addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction /kinetics/Lac_gene/Lac_operator REAC A B -addmsg /kinetics/Lac_gene/Lac_operator /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription ENZYME n -addmsg /kinetics/Lac_gene/Nucleotides /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction /kinetics/Lac_gene/Lac_operator_1st_bound REAC B A -addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] /kinetics/Lac_gene/Lac_operator_1st_bound REAC A B -addmsg /kinetics/Lac_gene/Lac_operator_1st_bound /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription ENZYME n -addmsg /kinetics/Lac_gene/Nucleotides /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] /kinetics/Lac_gene/Lac_operator_2nd_bound REAC B A -addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 ENZYME n -addmsg /kinetics/Lac_gene/Nucleotides /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1 SUBSTRATE n -addmsg /kinetics/Lac_gene/Degraded_lac /kinetics/Lac_gene/Lac_degradation PRODUCT n -addmsg /kinetics/Lac_gene/Lac /kinetics/Lac_gene/Lac_degradation SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_degradation /kinetics/Lac_gene/Degraded_lac REAC B A -addmsg /kinetics/Lac_gene/lac_mRNA/lac_translation /kinetics/Lac_gene/Amino_Acids REAC sA B -addmsg /kinetics/Lac_gene/Lac_operator /kinetics/Lac_gene/Lac_operator_inhibition_reaction SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_operator_1st_bound /kinetics/Lac_gene/Lac_operator_inhibition_reaction PRODUCT n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl /kinetics/Lac_gene/Lac_operator_inhibition_reaction SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_operator_1st_bound /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_operator_2nd_bound /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] PRODUCT n -addmsg /kinetics/Lambda-cl_gene/Lambda-cl /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1] SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac_degradation /kinetics/Lac_gene/Lac REAC A B -addmsg /kinetics/Lac_gene/lac_mRNA/lac_translation /kinetics/Lac_gene/Lac MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction /kinetics/Lac_gene/Lac REAC A B -addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] /kinetics/Lac_gene/Lac REAC A B -addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n -addmsg /kinetics/TetR_gene/Degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n -addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction /kinetics/TetR_gene/TetR_operator REAC A B -addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] /kinetics/TetR_gene/TetR_operator_1st_bound REAC A B -addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction /kinetics/TetR_gene/TetR_operator_1st_bound REAC B A -addmsg /kinetics/TetR_gene/TetR_operator_1st_bound /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] /kinetics/TetR_gene/TetR_operator_2nd_bound REAC B A -addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 SUBSTRATE n -addmsg /kinetics/TetR_gene/tetR_mRNA/tetR_translation /kinetics/TetR_gene/Amino_Acids REAC sA B -addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1 /kinetics/TetR_gene/tetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription /kinetics/TetR_gene/tetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription /kinetics/TetR_gene/tetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/tetR_mRNA_degradation /kinetics/TetR_gene/tetR_mRNA REAC A B -addmsg /kinetics/TetR_gene/tetR_mRNA /kinetics/TetR_gene/tetR_mRNA/tetR_translation ENZYME n -addmsg /kinetics/TetR_gene/Amino_Acids /kinetics/TetR_gene/tetR_mRNA/tetR_translation SUBSTRATE n -addmsg /kinetics/TetR_gene/tetR_mRNA /kinetics/TetR_gene/tetR_mRNA_degradation SUBSTRATE n -addmsg /kinetics/TetR_gene/Degraded_tetR_mRNA /kinetics/TetR_gene/tetR_mRNA_degradation PRODUCT n -addmsg /kinetics/TetR_gene/tetR_mRNA_degradation /kinetics/TetR_gene/Degraded_tetR_mRNA REAC B A -addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/Degraded_TetR REAC B A -addmsg /kinetics/TetR_gene/TetR_operator_1st_bound /kinetics/TetR_gene/TetR_operator_inhibition_reaction PRODUCT n -addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator_inhibition_reaction SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac /kinetics/TetR_gene/TetR_operator_inhibition_reaction SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_operator_2nd_bound /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] PRODUCT n -addmsg /kinetics/TetR_gene/TetR_operator_1st_bound /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] SUBSTRATE n -addmsg /kinetics/Lac_gene/Lac /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1] SUBSTRATE n -addmsg /kinetics/TetR_gene/tetR_mRNA/tetR_translation /kinetics/TetR_gene/TetR MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1] /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *16 -addmsg /kinetics/Lambda-cl_gene/Lambda-cl /graphs/conc1/Lambda-cl.Co PLOT Co *Lambda-cl.Co *27 -addmsg /kinetics/Lac_gene/Lac /graphs/conc1/Lac.Co PLOT Co *Lac.Co *1 -enddump -// End of dump - -call /kinetics/Lambda-cl_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lambda cl" -call /kinetics/Lambda-cl_gene/lambda-cl_mRNA/notes LOAD \ -"The m-RNA transcribed by the Lcl operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lambda-cl_gene/lambda-cl_mRNA/lambda-cl_translation/notes LOAD \ -"Translation the lambda cl mRNA." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al (2000)" \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Degraded_lambda-cl_mRNA/notes LOAD \ -"Degradation product of lambda cl m-RNA" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator/notes LOAD \ -"The lambda cl operator under normal conditions" \ -"drives transcription of lambda cl" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator/Lambda-cl_basal_transcription/notes LOAD \ -"Basal transcription of the Lambda cl gene." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction/notes LOAD \ -"It signifies the first binding of the repressor" \ -"with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 " \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator_inhibition_reaction[1]/notes LOAD \ -"It signifies the second binding of the repressor" \ -"with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 " \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/notes LOAD \ -"This represents the promoter " \ -"with one of its sites bound by the inhibitor." \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator_1st_bound/Lambda-cl_transcription/notes LOAD \ -"Transcription of the Lambda cl gene " \ -"with only one of its promoter sites activated." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Degraded_Lambda-cl/notes LOAD \ -"Degradation product of Lambda-cl protein" -call /kinetics/Lambda-cl_gene/lambda-cl_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the lambda cl m-RNA," \ -"the half life of which is two minutes." \ -"" \ -"t1/2 = 0.693/k where k denotes kf" -call /kinetics/Lambda-cl_gene/Lambda-cl_degradation/notes LOAD \ -"This reaction denotes the degradation of Lambda cl" \ -"the half life of which is ten minutes." \ -"t1/2 = 0.693/k where k denotes kf" \ -"" \ -"Note: Rates had to scaled by approx 1.4 to get desired levels" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/notes LOAD \ -"This represents the promoter " \ -"with both of its sites bound by the inhibitor." \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl_operator_2nd_bound/Lambda-cl_transcription1/notes LOAD \ -"Transcription of the Lambda cl gene" \ -"with both its promoter sites activated." \ -"" \ -"Rates from Box 1" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lambda-cl_gene/Lambda-cl/notes LOAD \ -"Lambda-cl translated from lcl m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lac_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lac." \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lac_gene/lac_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lac_gene/lac_mRNA/lac_translation/notes LOAD \ -"Translation of the lac mRNA." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al (2000)" \ -"Nature 403: 335-338" -call /kinetics/Lac_gene/lac_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the lac m-RNA," \ -"the half life of which is two minutes." \ -"t1/2 = 0.693/k where k denotes kf" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Degraded_lac_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/Lac_gene/Lac_operator/notes LOAD \ -"The Lac operator under normal conditions" \ -"drives transcription of Lac" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Lac_operator/Lac_basal_transcription/notes LOAD \ -"Basal transcription of the Lac gene." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Lac_operator_1st_bound/notes LOAD \ -"This represents the promoter " \ -"with one of its sites bound by the inhibitor." \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Lac_operator_1st_bound/Lac_transcription/notes LOAD \ -"Transcription of the lac gene " \ -"with only one of its promoter sites activated." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000) N" \ -"Nature 403: 335-338" -call /kinetics/Lac_gene/Lac_operator_2nd_bound/notes LOAD \ -"This represents the promoter " \ -"with both of its sites bound by the inhibitor." \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Lac_operator_2nd_bound/Lac_transcription1/notes LOAD \ -"Transcription of the Lac gene " \ -"with both its promoter sites activated." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000) " \ -"Nature 403: 335-338" -call /kinetics/Lac_gene/Lac_degradation/notes LOAD \ -"This reaction denotes the degradation of Lac" \ -"the half life of which is ten minutes." \ -"t1/2 = 0.693/k where k denotes kf" \ -"" \ -"Note: Rates had to scaled by approx 1.4 to get desired levels" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Degraded_lac/notes LOAD \ -"Degradation product of Lac protein" -call /kinetics/Lac_gene/Lac_operator_inhibition_reaction/notes LOAD \ -"It signifies the first binding of the repressor" \ -"with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 " \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Lac_operator_inhibition_reaction[1]/notes LOAD \ -"It signifies the second binding of the repressor" \ -"with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 " \ -"Elowitz, M. et al (2000)" \ -"Nature 403:335-338" -call /kinetics/Lac_gene/Lac/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/TetR_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Tet R" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ -"This reaction denotes the degradation of Tet R" \ -"the half life of which is ten minutes." \ -"t1/2 = 0.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator/notes LOAD \ -"The TetR operator under normal conditions" \ -"drives transcription of TetR" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator/TetR_basal_transcription/notes LOAD \ -"Basal transcription of the Tet R gene." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator_1st_bound/notes LOAD \ -"This represents the promoter " \ -"with one of its sites bound by the inhibitor" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator_1st_bound/TetR_transcription/notes LOAD \ -"Transcription of the TetR gene " \ -"with only one of its promoter sites activated." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator_2nd_bound/notes LOAD \ -"This represents the promoter " \ -"with both of its sites bound by the inhibitor." \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator_2nd_bound/TetR_transcription1/notes LOAD \ -"Transcription of the TetR gene " \ -"with both its promoter sites activated." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/tetR_mRNA/notes LOAD \ -"The mRNA transcribed by the TetR operator" \ -"" \ -"Elowitz, M, et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/TetR_gene/tetR_mRNA/tetR_translation/notes LOAD \ -"Translation of the tetR mRNA." \ -"" \ -"Rates from Box 1 " \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/tetR_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the tetR m-RNA," \ -"the half life of which is two minutes." \ -"t1/2 = 0.693/k where k denotes kf" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/Degraded_tetR_mRNA/notes LOAD \ -"Degradation product of tetR m-RNA" -call /kinetics/TetR_gene/Degraded_TetR/notes LOAD \ -"Degradation product of TetR protein" -call /kinetics/TetR_gene/TetR_operator_inhibition_reaction/notes LOAD \ -"It signifies the first binding of the repressor " \ -"with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 " \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_operator_inhibition_reaction[1]/notes LOAD \ -"It signifies the second binding of the repressor" \ -"with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 " \ -"Elowitz, M. et al. (2000) " \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR/notes LOAD \ -"TetR translated from tetR m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz, M. et al. (2000)" \ -"Nature 403:335-338" -call /kinetics/doqcsinfo/notes LOAD \ -"This is a network model termed as Repressilator in which LacI inhibit transcription of tetR which in turn inhibit transcription of Lambda phage. This model simulates the result as per the Fig 1c of the paper : Elowitz MB, Leibler S., Nature. 2000 Jan 20;403(6767):335-8." -complete_loading diff --git a/examples/genesis/acc68.png b/examples/genesis/acc68.png deleted file mode 100644 index 5107e0b6e065c9cfe631ed2695b4f94130b1db79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152172 zcmd43byQVd*EdY4q#)g(ba%H%bELbwJETFRTR3z|OLwP~(k0#9EnV+Ea^2Vcd}Dmi zzwdarj^S~iz1Et0&fknR=UgXLURL5YB0eG%6x3@eNl`^8s2AN(Pzb5;Fu-l9DpY^=!N@;H<2wAA6^*Jy}Of z*@L10irA9KQ3`=h8CC7c4G9S$7_}&i^<-zMnCXL+%OMMaroT0LM@qVetqckSz6P$v z{}(>ZnL&9WCCq2?qrf^Y9Gs@r>Kj?{MANQG4tz|I;oI8~8%X^0Tf?@>xHaQ}Zl2=! zlRUsd^76u@nt4@qGv}b1x=xiGwvdoJp4x9ZiXtok3xJDFk;S6EpBae}muMYjxpOvk zU{(IdFM857LC*S2-wS)J|M8d^R0znas`#Ax1tnx6$mOX73`ZY@=IjbWR+aSbTO*pL z*3^IL1(U^$c$rt<_)@it>Vz}mb8TUf>i$-j!5gnv1WFh1UXD)hTt2rlBZ?T{g8XIb zT%2E!>N5v)HfXnID3RA|FKF5gOgKHBMC$E&-yD0^-``D~(=ah`X$+THH*OX-vY5#J zRs z9&|(4sr2g`p8fNwa2}@PM$ZY~gzh+g9M9!m-vSq@#oZXY$L6}DOBFH39!^c)gP+7S zd<_f6jVG?)p~LNRPyLUSd?u}m&NhpOQ-KkNxi%2FoWWv&XUAUbb&Pz~-wvWPU}5)X zl*eofBD0v%fGd6r?;)adjquoTGw!GkfAsrvLCLaqQd9 zps3hY0&1A_EH=!~g`bY{C3R)mG|jun1{jaaRLJNDeZ{w9hm7i6(_`JrjQbHibxCyE zl#Kmf9=6buEdKs9R;Kn-#nV&NzsCk~n!94ZeL1(J?j}@kphid8OnO=|ntpz4-_y#) znKAz+NOb@yLC8T))UJIst8W^~*2gO=^1*cDWM>++MX2ViczqA#R;Yi2L7>SXH}kvW z@aOf zHjao()IpK_jV+*Sw%*d7KksM6P#v>1|`(NVSb+ zb&o2)w~8e}>Y>M{*(luSG=){verIqK#pajNwWKw@aU3+Dg=N(MeR5}f(nRT7P^08D z;~D>j3T87S&Fl=s`==*$lW&-xdBb1&2gd&W=tPq&FxWLPLg?&}4nU${IL#6G$5n)9 zZ70%%Uloz5okji1TK=mZeCsL;JBED!t`Am`yGn(3R^${f zVMcO4kS*1pvfB;w3O9_?EDBZ6}zTm@p&@#(2BM&`d_~OQRRasS$d496>Wh} z{H9y9{h;((Gk>4?e*4l4MiC2)=c0^G{F&(+_Vs%s_`w<+w4ZeHd)ATfNYd`sv#u-4 zbrycF98^ghsb~Fa)ha>C=t2K%cx3~6U>0k z25VfVmhBhx>+-1<4jRdnqJAXqyTB2&-7o9Bz}Uo)i)V1HHihjMY#U9XN^jj^zPpYq zo7x=Uvnp@&l-tWkROQe3L`UG-Uxo`HB$niR(qLPD1+l5fNW^qwh9wVPg@I+-m(h_r zUtA?sFqFG#F&Rb+)S*7?fgi;vaz@R&=nyiSW6m29YyBJ9n9a;|6+o25boZ&ZDicKY zfi%<8%QPzPL*q8B50vL{3kfjM&|>a|r$MHf2pPe}%v3`%G#nd`%5vDSb~E1RSuX|s zzq8M)eyNs6qZN6n{&LFcEKCG#Cc$#3RGw!dpsnKa((JJ^D`$WiHcS}F4dIJ{OMYtz z_Y%OKXgTl7v9Mq(6z}#L9$FJ!JkNBHOW$(nEK%6xGBRefU5-l#t5|;t=j{G;@!Ba& z-bmU*Y3)T8#Vi>oGw0E|t2Hu&QWz7tbZL$x_q}PVuq8r|m$JilzE(_I{OMqKfF&6l04ewkK@t(Emh(Q*s>3McRym2-sHo1$DvWwDqtw_>pJBpt^0E8_VO;1_MCS6!Qq9aDJWsj zztgpy^YZpIZ0T`+xYXL+ynFs?*qwLtqSY?C;Zutt+LMi$ua&o(a=YiYpow=|KY^a@ zF>7h>=oQj5x4q-1U?XtTw4BPP{9j%LpbV*k#Cxh6#TdiLr#}8?Cel(m6}_}>c%UTF zSusn3n#|fhWGktAg;DbPTpmGJ*3SG?cL%Dy3-3FWfRYZ?4ZK??iT$ho5B5cg#6f{8 z(3!cGMU;O6_1>YkWTCVmXPQjLz_lPd>9e|ZEb7mfqKck%A5BXvpMvPZ`zG!j7Ymt= z9@`N{+FfmVbSt*5u=^T$VQl&f8?NOyj!9iZVu0%=lmnthNyc9WeTl6@t;chBD~~BWyK0bNYu-7fI3%Q) z6|2Q|I^Y9jibl!5Ato^I%*X#bpEgopLU9^ACU-C)>yxg*(^67Q|K>lz!=fE+aUpH!Axe!Bm4*rEh_qkWaPWT!L0u*=x{C|&|&9m%uV-=x+EvB2xq)N zX9o_=r`})41^NXs4`!KCPx}D54oH+TKE$kHp;>xDoHp5VBtghoAiNw{lOl74-iUYH zGdqNrTJ=#<;3U>Sr){?lG!c=VQ9qcM5m6MeItU0g=I<5Ji`A4`8Wd=-s~d<8I}v=t z>m&N#0{pqr@OkjyW&~cwd^VO;OuacFhAh1`*4Y9YI)YHji+`d3*7*o@u@?|jWtTbD zCwh>W2CBF1{>f&S;TKOn8pKI*ek%NG*sRTu1%iO(e%~HrMf4nThh=Yit=#Uy4w&06NvWcJX3#7Gn>!|JOgqcKvSn?QVyh^S8CSC_fl z;Vlh;41Z-6<3*K;1)i@vJ?Uz>z}9K5vchTgT#p%9f;N+H=Ijb~+Ib`NAiCQ5=O8p1 zwbirQAqOC{iq!-$)2owfd9=R_+cXjhQzbknRT4O@3UHM|=e{K1b&S zm_Z9yAZ0u+ayYKt-F>W*?0nnl(&1wTgF!~1rrw`6;#@zLbK|Cx!zYqGYYoS7Ka=W@H=1ML=I45R zPkf(oEVMZh3SxhLWt`z_HHEU9O&okq<4tMPLH%)ZT4iS5uQT5iDQ>UK&P@Sik9{%d z`mPuVK{ln(a<4dY9IN;K{Y|gza!O;Fvv=gQ?&hRR3ET68NVb}w3|_GUS^hhEQ?~iK zu|n{eU$@VHA-)*?FT}_C$TRU+1N3}dVt2LJuCVkLM;=Db4y4#Kn1Hu+A0`U#>j?)G zi^EF2E+Q1e1y*WWwTk@RyAmx4YkHe`Ru6U#D??5;C(6)J@nEo*{+_bn?XSXoyCKo{ zh_WVoCX8?xX`rex2LOZJLyc-I?w9oGykm6?BLY98h-xfNoZt2d{C^N#YxxhNyS*PS zaG2Ub?LIAkV#gG$RRU>+&Ydt7Rs#sqA?9u&jQ|Twr#f2kZXn@wfGL77w7!1Kj~o?~ z5%e=kRIJjQZ?T!p0H)T`fRoJvJ&}okNOmC{Lk?gVcFlEI`O@Yhb@sDNj|LgS`ij+d zmop`ZvwXbkZ1X(UXJfNy4B^3~Kwv*$$*F9IuZf)-T)&Yi?_{B>!JSlC$uAoXE0aLce$ADlb zMOW!J^Pu$pU=rX}YRnCsDKZ z7LQpF=KX8^7)=&=d!x>$20+xR&CdvJJgN60lRQMP#)tG&ji|P7bVrG!=o0c&=Grm^?h7zyNf^}XUsMR zh*7VPno*ytGx=kFe-9Wv9&op4PFJW?gIi2NMz*yEPI?;$1_cdIAdOQppC7`rf2v>O zh1gN=TV^+Ae>gUyR}|8?M3UO_!cb%q=p-Y5cA?VwluGflvJU3WoLO1oTyCd61SbhC zGx*lC=V(x8m7m`-e)>nW!Qt9$?yE2(LL+CJpyXIzJF-G6N~gu)bWl=9074pnUrzLR zDFG4R+M$gzy+gyh54eJ9JLX(T&QxTfK?d}n9b-kzjnJZ@h{&|>)#*vWFN1Z*NPO1-hO@6PRIp(^u(6bRo!+(kUF}2F@rJ$gA0h;Uf{=m2Q2a7Vw zm_9y#4#T5S7n?DNY@Av92xunieQxr`6bLt5bbaF_nnyPg)t=RqaYQ3rDm<`)xyf~V zGclPh*suo>X=)`>A zZGht20ryN*;&xn5ZjVU24>D0d9LdSW^v(7$zXM}D?O3}|Di;QUOgJ_&fp|Qv^PZ?P zJ0putym6g|``215r|p72_=X4E!!^xyl%`5Pkdha|ry} zIvz(@t0zlpp-yTA^V(X3EamLQ4>)@DjuMUEB^J(@umNujdl&qP6C16cr!tUL1?jd8 zD#@`}VJj%KoO}VMQl!y{{rYCAl#DZ>&IV5aUr1=s)O47fWo*aZFnV_ak2kK;$YOSU zhq{;90KY4#i*RZXhz&_&F@}{vx-F8yC?%RbUtS&wNVGT9eTEW`A{Wfqoq*8++w4iEj4}b+((+ zdW}y$ITPG@*PQMO69T|7NpaiXKNTqP*dAc^abj{E2sK;h>1q09Ga~Ll1 z>qMl3&OY!fhlmVl*mfE_6GBX-z%UCdfPYiAX4mtdBt_&sJ-^F_PF4wdyVH2CuTSQz zuCGU%xd^!M(?PbbyW^3&S_N`y6bNoBEI};A8UpFN|A=zqMUSxvjLm$Nuh2k(LU97X zwW^+h@XN!{h>ex^A|EuG;(}fyARFJip`%BjP;nL5MTQ$KwcK-hTT#NmUo$;o5}&lP4;p8o}|RrfYK@>?TjQ}p-u5m9T}f?Gy%{L7m< zIsOpF?X%P*fn+JUlag?;8L|yNkby%s7*SEbd;=d5v0BP3)XS#gE*dF631xg1%In2n+vUi0=tc+`YW7l1UK!uCYK13 zk>7>nlxG{@fPm2^4$2{q*sH0sJQX@!k5CpPfT~=2bbheQ}A+$~89Ey>#%>w!49 ztleWe;oPa6fx9y?->K{D3OrpYLElsvQn<|S-5B*adDFrPI3swRLLz>%k8u`>#810> z<95k9^gjaupHK^wAvnY~B42=lhL++Xx{)wfizk={m~%Eb5)xg{*CZq!SElRYIpD_p zOdnGEi1Id4>R&t5WyZ|@0;l%@auFziB9fN<@ar*lWL<1>I3;!3S~)yy@DbAvOvE{y z$H43R;SWSR&NQzH&~blVpOTZ~5)HeQ=*Wy@wA|8q-{KPW^u*Y&(Y+k3+-Ci{}K#r{VAEK7yR=T2*xtn{*(#_t|D{sLV(!-C4mL5 zHf8bRMnhw_-1tT;rk(!38qoqsq&b+J(#GN0a^jKb+P>ZlOZXhDbMpmbf`d^``{`c5 zO_ZjRHDNfg{r?+K?C`PGH1YmFrRQ4~w^M05?@{%vgR{0Iko4NkcA;uy zWr~9?xfu*hNXT2k427JTW}NEexmpAyGFi2T9}*-iW+-f?^38Q)3ffxl5mAg+uDnR( zTE;XWvM=29X1O{2S)vE%114kIws+_T9EA)zdS{bMckg%|LypAycJS=rU@|!+KGE=7 zHq(>GJFgoG)9NvWh4*qE2?Z^$sDQYV+=)^qBZIQumIzg#`((A{R9w86Ua!q-x=hDC z>4#3u&Fwxzw4le#^777G#&2dL8800_^=WHsFRb;1JJHEyoHcpf9MxLwcX!8yhx6%` zE!_SjS)MIP9?K#;JXOeHOrUSfmO#z%Z-`Yb)m#Lhe&m*5v3%oySv3tuB9V^{*hQS! z#GZ|KI(AFZT1$G}v_2gQe}8}9`_rE-{cmr^d%|(TF==AK*x2;yqix=I3;pZ3ky$v_ zL3R@XGLrx@tj5%{;`l@WRz%Ze%do+oS7)U8kwEX+j%{3Xe=UW0eOZHuBFyp zfhdQ6T{>ywUpM^p=)B+i0d-T>9{@c2?dUe)c0S9{GyX*#3zLvhw>w`7KCruLVxXa! zDJJ)ioZlyUS^O}34h*mx6@b{Try!Hn7#@pmOT-G8#p^NpX}-74Jo_Kck#dFg)h}hs z65U=71?B?^K{Hw4L#OH8mnaSg2nfwAX5G;7)DW9~rFw)~{w>!TUYb)j1 z?LOt16V1(deVeVV(y^ZX(Xua4+Tz)DuFPr3x1CX!qhn(kZJhgTo@q8plI~aGJ{^+s z^CxynPHB#n!S_VS8gSu6GB6f-@$u`N*gHMWP=cN|+m(_W6RMwG&HCoIq!#DU3g$2V zjoTRu17sT4K{xT=4V}ZZ@RjbNnya)KT&xMW(E92=-(Y^qmP1hJX*BM7m&scfnaZsz z=i#w-11p64S7s53{)UbR>ceTP{-};j5e*qKC}*hn%o!kpNP+9XS!L!lWsk^3`>4v3u3J?Ovq8u=E<2qdT-##>!1x;wOCzk%7uVoq=5* zYjep7Va>snkqdHq6IZ0U+!Bq{S743GsB@&5Gi0V@W{pfckpY^Lh)r!w&tSGnOcR@3 zE(}W0;?5P_{FH+aZ840w?Olc@)3o-lPy3xH^cNOqug}Rez?*mSnUs30Mhpcxvsc{d zO1e$Kx64)L3WFgbFr4x?n17(dtO>S=D+!X&{ zNNL}ybLrbTuc4rcw1aeh$q8c)4%%$$Co1k+hVV|@DDruMRGnVzHBbTI|-3 z(;W17A;+aEAEAb*D({i0f=2J0M3Cg|`H^f6xX5(eTS-0?u-P&*rEhhUCrs!2Me@z3 z^$V+MYT|r;7a`DhDiu+)>3to({K1VhL1h(mmQTGBx_w2@Gf?>M{>odV%z+_IN@EMO z%Wl(odfybZ3A=mAMJLXjhjlm}nNFI-b;oASiE%f<5|pQR0(Jp|Sesu&i!8K9kk-y% z^ac&5g=YQ0M9k&o-HX~%C*PlQxS;k6|IQWlKo(-twF&zh5Fz>r9TiSxAzeYD!qXjr zis-cxqepZgK6&V{%`#LEC*|!P%EkiU!EQt0a~{36e(gbm7h$* zr?Ao|6D#<>X>(>8iRQ0{8YZ7P80_ew9*r73(qPGKZe4jU`1Uha{?P8pbyl03DzN!3 zEAoE4YUOQB`?$#6`sFTPzD?)0Qt7uFShFi6^H)$*ns&dp(Bcd^c+kC{Dt_k~>;*3nD((y0OQ#;6Od>zNpgf!ZS+9rB9(Oub%6iO2MhRje^!|cVf+}!= zJJLzDo6?73dM0?#amJZBcP;ow|FcUYb&ry6k!U=T`cZb-Mc#OvXP7NSG;!=?;KJqJ zA6`7kSi8M-jH%2IJ$(hc8C89$UaW!f$!2vufNyqkQy!O>wN&r#V8&>5lY$ zjTqNrGsKBayU0yTgC|LVM1j9_`8D-}dfSisxsp39)JKHT4X(XqpC6j7r(AXYEz8Ks zZX49`dJQ+f{67a?I}cgIDGiWYQo19m0h(jTg(A?>zdFINuT$X=HNnSO=zacqsOl6S z*0xQVfB$=OyIrlFxAYNVGU!2f@+S69Etll3w<>gs>a_KOW;H|3P2U7Nxq4%Fm&c$p zz}i?*7@_bUD(O za&9T21?GZs8zhx&OBvnN3y{|IW`H(-e=tgRp~x; zFJ16)AkrgWlx)q8kCumbXv$||Qzbzpp4)w0k3fcXpLjbYUBaYEfvwN!0{#@kyeXmA zsgUOls$CRl_>plYiD95uZkc;c67<&?onIX;N3=&tK8&|l(orgxwXX<)ZuCRXMj#Rp6WFzig`&HErQ#DbIg{|xi;|W}nxq(_ z2uYZ?L$as@YPEgjdfWJ4B@HP{O_uDM_-UZX!Nvpqb=*S;1n1gYhI2z;DWBjB(<9xF z%HApW{ha&Xjkb7{TvI}gV@nTb7?X`rZC@)Dq|U0aCk?hPD}6`*XhWaP6yzKzR&uoFRYmdPppr!X6BO>H4{Pe*G8*C zl$k*SIqBn&0cy*w<9Uu$K??O)yE>z0V?}T2@sYG?M8yg?0iTuNns#!CZ+xm~Pr5(i ziv_zM*7C!HiA<=MGjN*EPNqspr;I!ybK@*;k0;Qn9 z36~TMGoB0P=mP$UFe=vNZWXuqpW9+n{DVhVJXm6%qNQnbo7l??;TWx7HB_9|os+Ll zku%QjU+p=RWo8XV`r3eq`7y&Y{}I1Z1^Y#>(*wJMUUe4PKA+;@cR;;AuurH#L zF#(X66ZCXvbZq00!_L|fF~!V2ss6Lj-;}mN_$$Owd7-N=zvf81ecFu{JcCWYj4l{Z zX;RpbXyaFN&@=DtHh1aTg%|fad*)EBkSOzmB8*gG!<|5sY=OOsB}#X!XyILB%kk9L zbcQ41FKS|pN8ha9Oy0hkf2Du*hBzWi7$Hh5HchezC9csy*|c5{=}yA_*bPx-ZJe04 zUAXf0p1^wf?yK!@&>49~!5SEox_=DM4KrU_Zn$*d2jfEJ2dTI_)C@6h-}wUa)JQW- zj`?G)Lp01H$xhDxx_l3zM|awZ8SKlzbs_BXFzp5L-Gtv>slI6|N{asYri068Hh0Q; z?|^!s{th;9ehv-2Aw4}hCHmkw)5N(+y$d6L_=xa4h6swmouBwG;`TI zP+Fy)s`sPJvHlo*E2t&csVQ5q*xh@z8WntXy5g*=HBUIi6klkmHq1x4(wNv`(S6?) z=x!~Y+)f3aA$EIl-dk=x-_bK$;u~Q$@!I0<&S>)&g4_6`x{6myf+w@y%HuN482nRZ z64Q##dao)?b*{RZu~f|2Xp?*i@f8yl5Os0NpH3;bpHICtb9WQEAf-mrS87jYc3gUNON_N~g2VnzC00l#blc(UZsn z5ikibrwP}Db!5PXow47z@qDc`LW7>&TGIa&D8qW6k`o>UC4<#OT2b*xr-DNKBxhKp zZn|%=8ohcS*cXe1VfINOAz{;-FYB%|#14c_W%Yc*=KE35Juz|KeB6eFf-)>cHr=ol zeyr7kC2h{Q3E2m$8IEv(6%?$O20Q%RvBiPiRS=G@&JL>|LLJDO5+LO0XNDCe8L8W~ z!QS*pHM6auM6a*fEUSGYP!AuUq+D;mw85huSlwzIo;};pVmd#g7B4k*ahf-+fmCW- z4V_rr|4^TAu~;bT2038x(BEj+7)BV`Sy|$zi?GIZp%2W`vYQPU<;ZwytmTJ=RiYjF zuU~}DftC`$FLh^GQ&T3=uZ~kReHyy^J3dUQh3L>ZA7~Ab^fCIt!sE#~l&X{^vIJQ? z@pq^!OLsSh-ShT7tt70kTNImdqmPOR9U_Zy41R?GQm16A|9-Dh%3cKCWcXD9x z9Ia9#S|oPmuYU&P;ehWh9X8+@G`Zgf^cXq_165JOc-M9plJ!dJ?6dC<0H+*ifu~ql zFc}A7QMuoWIyzRtdN>fc{%F=`EGXKhW*!MRDx2pTcr%0_;;Z z749GjFn$o8j}Q@hXPr%VH#cYWjQ*xHu}{*qo0nHalws<}RGCfoIP*b{Ec3Ob~Qd0jSH)+yx5llE zj7D8rDpLk&V$q8Jt*Sav=`=AL!1(wi4GpGA8D@{Iijq&)*?Psx88OpqoGt$PvhjdIs@4(>ySL4oUKg}G?z}4kDfBk!y3>>HvKR^W^$l5b z{uRhZDRNjJgVxE(H(Q;bL1?LqE{RAuVAYHaNQDx}m;N~(8BAVqLLEwF^Wjfq#3Paw zttuD17?7uYrQ--lXKjm>k@Df5TCuy*pxe~P=ZGz8d%X)NHZ2XsQe5A#=tH%&{W%&6 zdJPl~V-A=NJU+vz0@X}NCNj33l^RI=P4bk<9+ovP6eQK0odAshQebY!fD`+vk}L(X zzeO)39H5FodTAj&A#~mKx1HsAq}?ouzoSKOz61!C%dlB<}x~w9uZJ!a%O0m!@=eg$!9vb$4|w4m*ET3q^N6 zmQ}{osz3X!ONGdCWey}4<; zUwmJcCI6216FF^II^XVOxW&ZDd6%{67N|^*i#IJ~!I9+3#yDq;1^@~2 z5CxU&(%xU|#-uRzBv&6{Wro*|ar374U}fgpE5 z-J@q?cOs5q|AgGIAcdpRC%vmFQi~Q+GiR|tmxwyqEx5nHi6p?l{q-v*P0+@fJI1R3 z`ZZ@Y&|3sSl^SaUhve=!WaT0S*o6mG@T_VP=DT;+3zF9K(9kV+jBRaASs@|*lLe0` zpK#Mf0Op*9g-Io<6ru+rIjwvi<4M!{r%2;SE)k{AsZ`Inx_W#1$vjFp>0uk`n!lyr zu5$l;&iuKP`p5LKnh<7)9;oHKfdgC({7n$m%0?U6CW|rfi&C`7nSN(uSEMdJ zi-JEUKdHqrkWP)Abr;|Aw>(xHQ6M7FsH328u+TTa#AbuNLphQTORc+bs?co~H(N54V)`2nS|o^bJC3q7~! zEYM)oQ1D0ANvtO~{JVmGx9FlJ>-60!y-*bRs2rKqNtEWS+Z|;Qd!xm7U+AJLdFFb{Qcby-o%C$Bbj2 z1q3W1N8m|CaR2wVQa<#xJx%)4kvC_|w*#JToM*i{v+Xr=K?Up7r-g ziDh@qxmYUrzv4zA!exQcTLx5Nj8Kvk@1zH3G#OGBwx#*V;(mxPoFx(!O*)&^?9ZLi zF4Pr_@t@9xR$icUVLC3J)U^s5eA-R$H)-mqmtr{X!IC7Avfaa@QeKANi~C<8)0Hy= zLSBxX9n6*DIw~h4U5Rw1ktUMZ4uG&bi(Smfk@a)m#x->;(UjIlT>u7AUM2ri(z>lD z7kNNqjSVYra)=VOL?bwjoi`8w^M+s~sHp*;LsELYlrnOAR|?W#Maci_+j~(7r)6(Q z{}(?30>E_^MV|h2k@`u9FaCgs3C2%$#+odKB^(#{kscI{>i??JlS@GXfU|x_q+fp$ zZVosUH;3Lt1#*g}fdUK6SY{~J(h?HR#v8ma+~xo6E#*g2!3;FA>wPB8ns2%SK!vvO z{DIt;Mn)rj3kXrx5|lwr+^DEt-YOv8^6@+b1cP;Pph;^f4OJ*t8jIJ3l=rsR>|^($ zh4C|FxuBzIrKS~2Q)Hc7p#N>dBINn<+=jIq4&~taY->~iPItkEiy2Xt0li~sk{Q$=k|)wQpPALh-jiEEwb1fDq~QgCykES?*liw_2*b~Rt7;3taj9vwTH21)F7fTJg#X%XpdV_-9G{b%`RnPr zlq56oQk)v$eJ`AmA>aY}yUIp1L34Az^9OW)eVX3w$`MEkcF zDTXX*=wIK+svJPtA;$PzWpYdoldAt_$g1~Wy~NSmXg>a*F7a1-%L%JNQzzE5Dl^jA zZ$oU2!emj2u8lK%AKeqkyA8oXDL!0Yrr~ODTao+&%+p_+C&DfK4}#`$|kiTMlsM!GY`9a_~TI zYZN9yZprWtP3kBER$Ngu4Gc%jI|M|?-48qLYObs6UCC_PZPv~xXfb@xYR+I`Jg#$n z4TYbEiAJ>%TJZN&;8jkHlxr4beEjoU#!{|0;9$|M?G{3Ae*ODUeHFS0|8F_te|L6PIJ5kZ2T&ur~f=ofyG-)h|jof%4)~NtLoEm?Kp62P< zJ(O1Hd;3FFQsBXX*$W}z4<~5f_YE?g6H}Ha&@sL?2;*UQYHO6-kgImdd1Y%f>;7H# zNL+eg>1%TCocs4ER|1(PrqGZX8H|$#G(9~mFlq9R>v;iFjbAPE-6a-hXC`M22I{Fi z{Npe<$rflJ=PtE@+qdCUFE?KeZ!bA8cTPZV6qQ8l%LJkUaauK17Mj@5UM^plRfiqq zeOtXOM3A48Ms4-0Fk#ObL&O z-t*@?Y?vtJY2hZuLaHyr>1pR{q6PK4CKdwKdZ2xO}qZX}l-jJU5_4c=JG)^5GKexV!q^rJ|*XHxbWS2wVJ zwRt|g5(K1)US_WlxnT*u@@$u^_l_RteHm}-n~&-2=gTVKd+~kn`_>(87DNZf3?QVu_=*;$;Pd=?rI zNVm5eS(GuF&n-!Cbjfxl7--V@*yO{X13bF_>iEuGY&&i$mVsDrgm{$O*s8GrBjr+u z%X8AH5q;c{B{F%wT;W$8BGGWYkJTiJR%*dVtm;OS(Wlaq>p`BU#LKp`o9^F6sahz% zefJi{;xqYlPLrJumo)Z1hYN{y59QKOLZhMrZkU{eMA#pEv*3b@@^jU~?e&o#d_$aN zAPsOv4S`}6=^BkVxc(a<2vj?VGYTd0jqx6;66)Z~syyMBEDZ8a9L}rM81tmp(ZWpB zuew&hrZ-!!6GKbbJ$83_Bte%>)J!4ob&>zt(Msl!M=$ZUUqqb;vJ$U>!>vv!ja5!P z<3BYy)lv8-?zc_$wK9427%vd*qKF=>2Y$_dm{*~7`cvqNb3q_*G!#X)<^4O~qX)J; z`j&E$a~YSfNu_If8`(2^wzb$JGRgT=T4Db@$F%k4N3OvlaVqzPFOfe?!l%29ftw;W-dZ;3Ck!c> zbMHKdZXa6zOsKv-nu9|2w6L%C+09HG-CfPp_2Gv(DX%oKbiV4MDw-;5>H^>ug8Wb< zmx<#~3H@YI1%GY0)$x-={VVt@cDO~ioWDftqh*2WgdbJvkk8h`ORY<;?|M#3(nwvD zzN16@ENepi^;+bQ9fj}$zNV4OTUjy)FkmpiUojpA1G0fYirPzA+9r2 z|4_7l|BHQJWV1@5Nr*E`?5UQhYs-hlX=Sr`Nk>y|m^C&;(h_hCWRw{3w1r7=r}j`O z!f*Lu%a?9eQ-%|;0V{P^sk_E;kTWd$-~&SYC{EJ2EcEBe^Yc zM_tZXG+tu~O9G%islMbV*&$wILq+HgUi0J_n2beK5_;H8{~gJGGSBU9VZUc)O22QY z!<{PMH1g{-FFe!dqOZK*p?v-Klgs_(w3<^(IcaQrE*C3JnT#u3-xcEfcS%U7ofg+v z{Q4wu_2(0UIKv-IW?qe*_(C~(`LtD{hry46u|lZ)nZq7ecX+GpNyyWc z7+dA0-Qiwf@G~`OcEd`!c7=8a$AaQGJAERvOr_388JmfI#dg&)2E~Lx3yTyP)s=)4 z)8u%(+^qyF&HVVhnsdI$vw36(h&%x5}nsI?xF{F07SzO@Feuu-M|W(y4AXjTb;_k3O2Wuw3Od ztHd3-48db}IBWk&J6YJoX5hJxaGsIMSGA871Z0%Vvh{oq4hx?Mi?yr!Ga8GJ7Awmi z@BBT@bf0?QB4QvKlRzE*H=E>6Q%y0hTX+N@A8=<-zzO9m5 z-~Tg|6tV#Xf+LEJtbDFpZ7FVyBs-`MU*S1c4Afteh}gjQyR3sUzM!tMeTS0EcjeTD z>(YlF3{aFueU&fgsI>Bl&mX7c^Sb=Y4C&*St%&^_bt2>?BhIz4F7oJ%ynTHzk*hM1 z&R7m~=k3k&?Hhe{k!{0X1wDofKI?0tNSVX@iwfki^Cc`Jq zPU+rMOz+^XLQbn@mT&$P`ah`@YT5k!GNxcKS?%mr2mfHuW5pGnaxsoksnnk!h>h1~ zcof2?CD;gE;gL5)Fzd4Oo695mZe~7Vq3K6apPYbVg9HO9@ra=|Z}#L!v=n$}aXx_C zF;G03Qc(9IH&|mjRcK4!oDp<|v*0&1Foa?dwDd=?GbT^X4!#=GZr;O5-j_XGeZ!)J zM{b&dw5Jnm*y|l*zM#e1o!#JVP;I zG94fvCMufyy)fwyJr?cfe}4Fa#*vm%Kt})V($e3Z*nb|tM#7@~4vC|IG+}nW;rKd0 z$*M@(?76INELm$I7+4SMol02|95Gz|Yq>BG6H;`_Kmvd~2Eo&MBS&>frIx zMo5VAW45au#+qbSNEj*e*V*c!;dg=L43W`-q?AF6&5g%`z(Gr0foe9as%NF3=im#O zmzFV_W(2q-0weSkVep19jRn6>gU!opP`Y4RjhyOsfr8XlMgW{aO)c4_Eg))1OX4LA zLiWA?;eEwoN1T;qYKER@T#Jq^uAWpq!AcW)u`eYF$Qw8V=JZNP2%p0dCB$Yv;oIA4 z49H$`9>}_d!obe9&L6ySG$AzEXmB`Kmdg}GCMu$vlM#IJ;tigZF}biMZL=$%C%sx3 zIVbj8^6pt9Jhb=gy>2=;P}+dtX+8mh&+ZV8BIe)=(Dn;>0c3e134jA(J>i9V%Ll@1 z!`7T;1t#r2P;jVK2L9D`Xtou8`t z>fE|6<3k^5UOoU644gm!AWo0zZL}zv#=C(C5>TrW%3kI`+n=0FC>r$WKa*z68+{Wf zOxCnO9LQ?D>h4bA651Fx5Q*dw6<-`x3Jj&-NT}iX<*1|?k&q>hm6;V72G8N1)SsLR zX_ZcDTmLg|Hc}AF$XoaeTF)HB3#hfrx(8CK3mhWqs(8!>ApMw1n!yam8)0e9(18*i z=K2~Wij#hQ?+tUhYk#UtNy%i6=fK_EjGLvM%+fqIw%rDp#ikMn0>PD@M+Dp*m19YS zLS@wsv~ci0-MK*+EP?Sc0)UO&m4w8{hogks=8*hz6$e6F!zrFf_~MR~H~aumFPr&y z#s2LY=vb`Z!C2TXl6;e}DOq61V^JynGmAB&ac^!8x0I>3XfGDGOG5&_S?ku<_en#G_@3nH z3=3??MboW}P^WpOInGh=q&&wr8XwwzM=CUEVC$fIx`ptY^Nw8tp3Ah?`G~_2#nTgn z2T=k-1FXUZL54Q^830M(34B3<9adoA@lLO%CnyTwIl*MR85S#5$b2j-JCHF$O>H)_ znL@-y7nXoisAw`akU+%7qJZ56B^mciwXF=`RsDLjhRYdsu(UDkOW!zx8BZ!bJL}_* zLA0yJW7RaFTWd{ra6nE43IQRx055U0tdwfNPr?ci{P7K?RD8s{5{(p&_i6+)b;+s1 zZN8uKKiIMS`2&+DQ|??22>-w2B2%vab0lW&V!%5b(2rMo4$kHb{9hMGMdLDlWuN_K zYnUsUAxBXT7g&SJ&%b6b0{uw9gfqx)!*4EC>dm<;2ZqN3YV|0$a zIV0wEJsef4KPSDrO3yXJqE=P>arBEUOu9Fl{BH>r$(J@kKh(88-0N$jkuJ_xRpy_+ ze!VAz#V^N^V*rab*BpKs8z&`xtfn<BSxzi({z2gwyF zbS~?!8o!l)#l&kGbfMY92G?ZHYh`8z1i^}m0pIxA@lR{(wl=LwxjKiAD*{+{zJ$tWV-ZJtWrw`yrk4Mso#Ah272!nkEUSXiUU zkqO<2GKw7WL_Bb4wv9r`L%$a`$vf|RUsAi*qY4utH=dPVKwpB-fVcnuDaFi`6DF*I z98(Jm5<|s8gRxrlnc(CJ(`ImC(d`(@Lye}C&Gec0BACqpdN`GEGZ~>Z&He^N-6ohT z)oMY-!J*4y7EO76nUtywmf;5IE2f&ALfq;w8w?|1!-UG;*GYV|n#^+&Ghr;4-R0v0 zSi63=t2^3kVvzt1AEUKY_kTHTr9gzcJr1bWD|;n6Wehi0^p4Zb#p-SczDLgLW_lQpT|dn>CBqj7`&{R2iQPP#q;k!72oKqGi{`lpteO6G8< zn#DxV0S}!qaCEbNHz4c3JvK2(fK-=g*VCS;3PmCO{_%_b)_1vfKwgVXu&@Ckb||0z zl~=KE14Ex6KD9no78V?;VbsuAUBvdpuq9`A`u`& zEw+DkyJC9`bsnm#S^bSWTD9IKxV>dDng=_AzEJN4JuSHbtJRJ$JFmonq99a@THkXg z@i-Rl(14oo|43BIH1~41oBbYyWvnFb_^Z9O+p9#j=gA)Og4y5de?LW~;+d{>n)d?I ze@S?8NlcpZl~=A*DsLR^XSsryd?-O2iW5gdK|nxFB5X15PiSsMWwv@{*^o~JhfXc| zsQ`^o%8sRJ17bG2okHX=OfDSWVUVR*6tbb++R_&WDpjIr!2){c(ltF8xqV!dcoM17 z=0Uw1a|h7d7yn#er;HKevLI^hX#ibFhZK^lU5#42YvIG?vG%@} zj!s_~psnP_#&U?w`p4nn@ycExs% zan^&p$avY}a)N5X|9=D|S_-sKK!Sbodkth2O1eC zp2Lc`j_#um9{?$XA~%bW`1o39A;C8JhqWJB%<*Mr8AJRW=SHWCNEfC58!Zd&e%sOn zpxdSrHKGs|ZBHsi7eN(yev`sV8kw~HJ; zwm{K?#kDmcJ-)pM`9fee3=BZkb*c07A%A{KCCzV{LhTf5At>_&b*H%Batiprz?Yb+ zG7tfEQJ+K+Nk|5^!v0nC85s$<{i@lY;{m~H*^pT9sUJ$V#lSdPv%!ou985}WrP!Hh zg+m=GrwZq{Z~!)<(&B$QfI9rnLPkmI6aT||MtuvetDPZ3`+MRkdKjVL(mIfVJC*G7#idqtoDP7{0_iodiH zJCjyrF*DiddG{lBiqLGzzyVh2PpK{_xFod@gu>q!Z?&5;!Kv04MFF~|AYseZRRPOX za60ZkO0M@>-zEavd2#%-9Uh~1BS87zq}^cY8fY~&QQim}Q}Lj6g{cyh6PzOcqY#6V zKx7Nh*Rn3oBT~#95aYFRjyHvTpGhWYK@l;yvLofhv9JK+z|DWxm&AI#4`=$9!4Spo z{b&KZLWu^^Ei-q1K!6&M<3u1w!2pAD|K_YvbB`xk0qE>W@$o=2Xhnr1;O$9bEmT>$ zX~z~b5Wzr?d<(QpFr`t#56EgiD5vVBmoG_!LLT(PW@UXkaUgZ9(kOBh2Ln*bF3nWp z-!_bx*BNPIUd)CycOF1U8>TUGKeWB{|2UW}0%1_{*KXyo3&48&QyD6Nz;BTRSW_%m z(M@BTM+4k#?biLQQ2GSF0|LC&%|8mzwkYX*c3Z;XME^c`4M;j^Ad!Iat9)Jp$DeJ2 z`;pRwfrY5bxRpiS3`+^JKy7ZwKPx#l$i^JxR%&*GZt;4t`FrPQdiZ zp%pCU0trAao$ly%zbLnTct#2KtG^eiZe|@4b~!`_<|^_^KEF^R~+6nbAL z!R)oZYxyE3nd7zPZW`KIdu~7L#OL%_8sSkd4Wt`~MRQ-jgZN(A1k_}4guEG{j#2-V zAx$8>yS3uE;zr#@_6GAw*OH0G}EbG|g*{T&~GSe}L0G%b_LpWbIU z51~ouOu#NL{ON|9-q-EU&+Yir7Qw@VCPhh5Ouc1Ig44bSxSw>Y@M~t`hYj+&=1rUh z+w6hdGitX=*vb~WK0+<|ZQy`n9kjW5y)hZuEa1Gt`qDE=-}k2rGErNGr_IFRwG%8X z4pWMyqRnw*X0K_Ph3xfB{L$$`w3=q`2n(rB6p5Q+m}#GMB#CX>>^bo=wk=4f-TDY! z_vgXoNU{*Z-li{VOCRnKBn(0==NrjXc5(06{FS_p1 z6mle%avFz77j*`#d%khFSD-}_Y-9zAytP=93?mFKp>Orqyoqz%{U)OH;WoS}%4bYh zL#;!Af|k6H@)G51@1J_~t-lfHyyh0<-&szI4coDCO)aLxuhMYm8}3 z4Xih5J_^7aETP%EH=VF)#o2`0&G%&BDT=!+3hQ6-tuQiI00H+s#xr&reBzLE~m%BkH zpvJpT78lpf7N)&vn$Fso#2pZ(ul_`@sHt^<7|H&O%BL>AqP4r;)gMfSV0Bvapi zd}8rC(fsp~W0x}zsn!|Y+Tb9!$}gV`BWS>=ZF3M!Fh7}s&mLz zN{$UTmy5goy*&&0aD0iabr{aOo^731{AWGG*Zi$KWehw7cesx0*?TPz z_=MZVc^F^ktu<rA5^n7B{(WIY6j^;Z&+FE}vh*h}eRRXB+u5lddFey^@^#eOQokcasQThS>X&@=(Rb*Gb)BV+~jXxFg* z_6;G*(G^*}qjse>%~jya-hLBG!_J_c$br0n0D2);^TOH29b>DR6YA0tPgQd2lv5dk zZo}ftnbSJCzsS#mH_s29e!?Nb3;&t4hFkAlCP$%N+o|V4lx@FkP5VF)6Qc4!ukDq!*%%64;p;jY&Baf+kS3k&>=wPXK1z(e9*X- zQf=#Wi*#L}ep)qSp+Iffml#`GjqQh9Jsndz+4gi`ib{Iermro3Egt} zAYX5M^LIGx5XQ!xi0dF` z$wBOzo<||fbdljU{8yO&_0wO02=pee$9OeeroOJYhgIaR`Hr6*ZoXDrBcN0w9}Wb>!#uS#B%S)oYOm%G~(`wa>>NLXtou*5w?F1bxe-_{8W5tVf9XE(8+F-u3hB^E zut}x$!nR{zw$XTYaj{s!-}J{}&lXKW@1id@e}ysJ)hQG8UuXBopIcr$p?3X%!8~T9 z#_e(AX#?G(c^hE~Zo<70)?*H4xT@{@%A%3zu9W&a@9BHg8~NUtIZktQQqQAS>1ot!Vc-gFhtt@ND2*D| zC#fVVNh~k%RJp3;P;18Zd{$XdX89SO1vy*Rp4~JvlMGKaO;dNRv<6AQ?ezsOu||dVqp*?mXSXqPf*lNj{cg9OKC1-6f;=H0GNR}f)E%#xt1a-$ zf%V4?A1c!~djH!DQ}%}1WlX_fioEvT!^4&-gqpr~CeZ)Swk|$4>6upLs`1J;=6nFn z%dbBeoL<*?G+aM(zxtC)3rD;({)gslFqrB)Y_j7aWN;we(7$vu*{rioBjQM2sSMMU zU4Q#1FI}bd*>HM#pQ#25lJrO4kf{mYJKx&^_2o?GBnji~1WdT_BW=&z_?$zomm&3F zC1hLrB%wTN6vItv;!F|3oBBk3pX=iF+u_HlD<(!{A`XCzsN;?<{y7;bQLa(RCLLvOub~_2PeW8<&%W&m1H!$?);9Mx z;=7NfFPauSk!sQh;|=T#X>Vg(P9EX0EVm|3k5KAXo`;uwp9zY6jo($R38}>QnvoV{ z{x#bk@q@`yw)T*K$LhkL=H+avaP%dzGv$(WUFs9tz+c{6_RPC(->{cDOV8ymPkZx= zz(MuY-67LE2r5`{>slT`@;Fltk6p^X-=O!>0J_;cW-lRTGBimh_8o4pvW-qk@=~C z5?-5g@;lank&VfO0qkD^LfHwRENOSIpFLmJyG|;ZdZ2_QNBm$@*=4#{^U8UNwNR1m zS~L{R&F!!>JznH!kHlnjVJfzsJ&-~Zrk*3o0UdZv&xpp&Xl`SCMwLd2+gq3i50v?D zFZ`3n7|$>q%$9BvpYUJ1QL8ZJiJ1B@IDpJ1gXyCs)!Rv#c<%B-#UE^}CAtgsYC+v# z+vY)Cv^z0b$HyYBVE&b?37T`{CLQhZBV?BlfjczC^h$oTy90d}yzYYw`u!gUm4~D8 zDZBz%_)K_Z%1#ciy@{6Q1V)}xXtQEy8181KgsHc+rYwy(57;fW3-VD9R;uIZQ0;If z-SldR?CB8M>*~S8-Wn*mlUgnvD6PZv=`I^lK%_{TNE@$xEb|;%{W#CsuLzKhw zkU^&#^j!Fl7ig}kHkO|@8KQ<2Y4XeQ8J-JNx~nEm#V5dWRgR^gyX%>37tDrub&i>?^RQ_n;tKnF`Dc6 zK5xllYDA-vP&#=w2Mz;0g=Y*VO6){?hGvryrO^bF{qI$i7(G(Z9a3eBWBwH6AB@Jw zb7t}oIXQ^fZ3v(k4uI0U;g^u%5C?SJEo34ig?;vc)H)}A0R;S<`jFPU)fcS(c>@d~ ziI7k~`w*L)5d79qA*3?B0Cxytk@2-=#K90;2m9MllURCU4*z?FW2jl!nLo>BzTKRY zl(oP#=B+-9sh%4b|J2$?jQxPmU3-st-pT)J=ub;baf`GpfYi`O8`_k?j?%04GyWOy z<%L357txdY|woa^+LRCQ^K4_%Fb!}~b zsaKuU6LWyn$+j8g5Q!4Z-L=kavE$v;_&H~5;RG>;J?xv zpM38m0MK)D+Xv;#J8v_7ijoV6qtkw;>9DtWY}{}aS4y@q+PN(WHQ|ay)+B?tgTvRZ zorzrgwh8F+^iJi`Q~TY+THnrGn*g7Y`t{ z9wPNExjJ&wkVIy;a}rcuA0aYd5I7bTl>7$$-xl8#&Q<}`#8d(3|79o00hzNAEn_s7 z))V`Wy(%XOQfJxi79YP=vN@XpGeWIz>IRU?hktn}vF%{dIP;H*-5wt#W-XBJF5DaU zs~&pYML<9xc&$!MN`HbWGqdl({*@~P<2go0H2ul4+c9wfowz^*O$W3ru1VJK{r)L< zs~GGB^jpzV=)(JzG(or136L!denG(hzo-}$H4gf~STOzbnspv{t!J`wd zoS?I)3cg$=`_#+yvDjJ4>Y7%sa8<4@l9vRm` z-*}(OLCrE+aBwo#*1=?e%s$gr(wGDt0;nj~7@$t_wjP=h64|0xI#fcuH5MK9AxpUa zhAqiRN$^k-Y;oY6Cqm6GSF|p`ms8r%$G?TzZHQ^EVJL*4)B=Rs0$jl^A_??Hc#6Wt?E^;2J37&y=1?p#fKYCZLLD<;zAZq(7QihD4Q)UQu#(xV zI|-+)5qMo~K$HbQj|Dc69h$x^xNP!9-j7=T{MuHrIQu=EVi6N}L_iGzATUaBNCNUl z0qz>PKD+I%I9e79$vOv6rwE+f2rtmFGXcT1{mDw|fo6|C#(MM9isaw`G_Zr@nvH8g zQH}*DODcuqOJn0b;RgL!H)68{6`uH(dgBaoa!_Da1VyS$!M+|hpz!Mjh0!$VK)4Mo*T4W{=qpxzqQy{< z+OT|lKusuUry77>VbO2d2qlL;0PXab`^27jopR937@y7Rl7)S`X(S&C36oTO(ER>|79NXP97H_?De(QR=4QeP~ z(lCI%Q{x3t6K3Z;8aKO_5|O>N2f|fm3$w0)VYwox(1Zx^()0V5a$%K=9$qqwdDA{+ zS?E=)&`7g`=bw_7y@dRcdg{;~t^xwS$B(nSzh4&uJwl|{Oq zxRq8^P#4n-i^rmMVgmL}R8|)3?K>c&LCHz{x>1!S6-@|ewaF52wAK%x@dY_HHQpl% z_4UBdcrTQk6>FI!;`VpzK)*(*q@T{^fK;+00I4`?;S@moVoZlaJBymlh}YV%SPp!b z9rzTo*>1#2KL`JZT+0I}gK2LK^c)a?zY`y_M> zsPIMsuK-a|FCMF05s=7yv5Wy2{l*1~HM;-$T2AtKySvI5+d7G=;+YAHgZ(8tOQ97 zp-K8x;eF*XcI2XM+r`4-*NQBKpAI&(91ssazCC{xs!%TPl>2!@m)0O1qDVM%*_$~1 zi@vPsLO?uA$T|@8lC;z#_#-q2!r7&;TBu-kmNr!C>ZjE7E7Zm=!yz;WHeNJ!xR>A+g zMdGy$7LC7Y|G=xXw(3@!-dj><8I@DbttoA1S>W3ja`Yng9WZc!iLAFyPwW1JhWzfu zwpXysR>K#Wh2rVcBcyBCoO#=tI?<>g(MPQQMOJ^e zaY#v(pp1cGG0gl_@Lm7$)E_H;JMR^%y2Ok&$!Y_28l+NCd^gGP%;M`a&Rs+5m@l{c zlmz}|zC;Rw&rC3ny>ARU(a>vqSo%Iq`&=DMYAm~~C+Ay=XY&#Cx(tfKq&4dOG&O*y z@eQ*=$Zp0K!nx0FkA%Dre;Jo**6UcZN z#A-d}LFz5rYre%jZBed)-)vp8lJNi;CAlU;NG4zS34CPc>yG_thMsTDiUm4S8@-G@VmFM2fyr_J*FC@j8t^N(S+ z7A#()mNYSl`ua2NkksYc&c30y30P)$!PScV9r5>q^EztzJf0ID#02&I=L8t`mWbnU zBhI$o%9-sxpQrmU^(ZUzMCY98{wbYgupSb37g!Bnl`_^ST({uO=Y=?uq-@jQKQVgr z&QP>I+f}}8$4LPBTJti!fso-Wehl)bNM`&jkJ$@88=JdiA1 zt+(|kQ}eZwsFmJyXsEi{a6Hdbnaocf6Zp4t=Kety}t3x zN9_|Mx-H-}^LOk+lh$;SS>U}Wt@!&xz9WRChw#K%yYQ@yYB+O^s`2`(>_&v6S%+sW zAAMLUyGlCGF{^7U?JP!G8KoeM26u~_U%kO&@*LzKshy)o`HJb-ovWq5&l+!ckanYG zvX(>bJ;wqY<(B5!Uq(MxT^nEu0*EzFlS85Eg|!gP277KR%Xj#u{s`FMg-0;6UrL8) zZ%DM{a(Sl_TR~k4Zw9Z=qagymudN^9Dc?Cd@w!J#@AIFNSKnh`K%cmKq5F8y(3|Ah z;wwzA3>EGd>At%#6$o$ZQB!R~;(7{Npd`AKCfu5n$2%3n$?uI>-Bo zhVSQv_Coqg-=;8WiB1-2LTv&!*>5O%=wl0T656!ekF@aZzS>yf(O9w9!~K8}^HL{jrPko_MGU>@36EiOJCC0**B{jv%6bf?KfAPYUc1THW!!h~$S~nD0~ddEqARUaJB9vKF$BKH@u-0ngHR9Krv%CHGhePNUD<^3g|lk3PFWm-Pr^ zYxUfzz#+PuQ`Y_Wf7SJOPaA)JLNP`n5O@|Zdug|ML+rd$XsYf~H#Uo>@tMvec6-#r zu~_AhKnryu-kDLiauv5kPW6XiddVbQ951W<-r!+8chOFDm=4pJ1AVW}@SF|JkcYtK z)U*zHc>jqx-J%URjgzg`bPi3w$L1RjW3PVMqxiuo{j^f=*IK6b`U=yG2VPan&d?+H z*5?~%nwM`=o&6_RQ;!s#W7M;IcNyrfs8(L&Na`;-doeNi+3N9!;l}gy z*w6J}D^0&VVn9X_U{!{#TL^U{viYJu$(*9{3FlcB(@Z%oN{hLQ64IB=edkLbVp6(d zMz!dZG*+vZ1FgS*K6~?yWjy00fsaB0DjW$KN>l$wxY@qar*Nyy7-)!|@7&i>beW3w z8Df0-Gtj3WWkL4tF#U36vSyxHbYCJly&o{%K|`U?lCfaS{^(?G(RWL;mtPTQ8WLql zZ9RK>@Y|TZq>Lb6D-}O9e#X?XsAArG{E(5PekbdSwi9k=Y`5CN!c6@|?DZkiyG?If zH~8>1Nov=vQRN*C{)*#C#lcdKM^lwJ#($2?Em4=1zsat6*^l;XT$yAe4_y4iFqmbL z8|-ecFyY_d73#uFwjw6LB7CE)kKf?wp4DnH<9Nj0`gWp^a1Y6{wf83sUXv*r0@*iC z9|4|vl-3O73coXEb#u~xg^Zol?q|aU6#5py@6YyHq-xvWTGhcdA@O+$Sn*2wPhNC8 zQ+&1goIyq7eXBPEqrbFKZQ-h7tY??@lmN)Z2QGDtg#h8Vo0eR?|7VcT=V;oMc=&ZKq zNL20aR)X%vu+kn+kjFYH;7HlX*2eZD-f{aKAWhfv+!%CS_q32F&!#O*!fTbct7Pg_ zZ{J#$oQfQ-M+%?J9bG8|B=qXw#D^dq9qA5}yPUC+gkcuX{^qpt$&u(Eki}7(SC&3r zohAs$a2OXQ~WtteVi|PxPRknq;Pak=&{5={~ai8V7oTA=n947~h%64T0 z&+Kp!<#6opMC`bpPGh?a22lYEaPdP=D-FjJs*EVp5Q6iWZI~ygb@|W_UXSPPc@NcD z*#<02MJk2l4EU&QjpTXYXrFw?7FJf@jC+@*v9bv~7K=9G0>};fQ(0RDh`Q)@aI%M|4L`3Rz~ z)KK}x+-%P^hlQF=cMlAnoAE3`M9Z~*h>s%q>T@jEf7fj{vGA~#|L04dQ1)5u*!WJ) zhSVMI@lx>5#Kj|Gf>j2zckght!y-$cgKLre^r=lv9IWyG{YF!zM;P2M(dO%VyE2Eg zvV!8!r*H8>?45l9d$u+i9;Zn!+J`;~TBxfJY8Z-ID?|qE7>$KFVDEBvFm`s0hnl5y z*2gls$o`C?jIh1;(>d?;*zOf`)_Tuvqdb<#i))Ai|7R8*1C zXpmx9dnLw{;);yy$=Ko1^(?e%X+WkV^rw^iOkrJeZNScf zhBC4u?c^yrc@&Psw#opPK|tuMOst}$Ka#0&bijEl%7^1O@f5iGaf1m3AhwwJ@R#9= zFtCULwDoLK|24`VFFBt-J`<&#WYlrex)pc}Ogxa*(2BW}y- zQVu%bS#eELnk=7Jd9n9q*ulo}g@?b3kwrwNe&eB~dC67m@{4PgN`}RRj8nRS`1$Zn z9G4Q#*jzjA$;vE3t6EtCYO0jb-Irw0xT79{t#OjCnSKd}14FPp|3=Zh z)A1#YH^XbgASd!gesWYxo(_ zLL}aZQv?F&+JJjn-bh9$V@3MK$7O_>dmy$z`o!{l)qU18DG$5ciIUk=ws-rZMHBHI zQl1LY;*g`;8R1-!&M3hujJ8i@hScXtaM8f4F9!Z61P=}yY-U$BGGPYe7pdIIgcQLI z$L?Wkm&0fH4UF8u9Ol{*NUF-E#rj1E3Q;I8X>Qi5zdX;+X3LaCW^|C6iXe{tKH^Oj zolxOTc(*UZb6{>%9#?s0CG+GBOV-2@&mHYt+FJdD*bJyyg>EB->EEG7esB0cCFv8g zbh-pfzaYFx>oePI+`&JSM$L^~3CD_bK4BFk5avaU=Io+gGekuKe#Ec7=}rebDS?%b zBX!JOU;gDe701C7&5EpX=+Rj3i{;adE}m2ptEx>Ia#i){(|L?ZK`7YkxJ_ zK%|xjDQ-iuL~2Lc?lRu9KTN)`9o_M5^=wbkTV;^`f^9zT$7BbGf4kIpIg;L^P>xYs z9TgKoZbPud_HzNvpKo=^s)c`b>9m4gr1rEToWy_(-###@9(Z>F2No}!TW4k>KGj~8 zq$%dsH4zi1(+-uN{@AuyW`Ac$kmw6>X^N z?!vOzOZr?rv2w^VX}~vdtWa^g4$G(FC?yhJy@G$PJN}rmeqgJ8S)6v(DO^W^G_di= zm3On>plTwJ#~;g-Iq7#3(%iv}Y#5z(xB2ubmZtsN93|6#a{+Q~(ca4nN@@3aoF)@O zgdUuN*bI7zKa>D*ewtqDtL7R}Y0IRb!EHt?FUKTX<8WkmZ0vL`PhbsrZ_rsgnFMje zNWO&Jkq~XZ4<{pFqWI-JvBM-nOA9$3nl60auvzNq%FfIpO+HWSIIoxXvRNLtj75 ziS1i6qVTrC+1~XnrDfWho9AVGww`U0XNRHZLHtHY2N08ht!%>xv(&lqSQmroB}K$C zz_z|s=l)|%#VuvnT}BGDp3clb6e^xx9!aKHxBaJNW)yEdR}DR{gBV;y2j&V**o{dSxVrwEn7uLGjKuPeNs*d{Qi zUxe>>y{t-*UjC)?qv!Xwdgrgx3eBdkek_IJqv7YTgL%v3?lm^OLenv)P3i(A!)XqP z?65K%o}_kxe~0*R?_V%bZLIa>W03(-SQ%jfJ! z13TfuJDuGqnZvEOb@^^X=kSKU;f;1MtiobT=9Pmcc0j+(Zamonb;BhM;Mz`zER(dc zIKA$K%=Ph`lB9vf`VOWl?ip8z>&xu526fRIxG|yMeXNlUrDOU984D$4e;|*JJLBg%{a9Y7_hcxy=Q};R?p6?e0hW0G1pQA8O`}OCWvTc>Oul z1S3Iu?K0SItX6l-QLklqxShpDnG42{+74C-D4+rAyy)cx@b;bP&c92lyJUuIT<*Ob*?WhOs*H2R(EWRR zw3WQS=Y1G@$as_A&31|S=!PVFs%X^5GuVh{Sm#i!CZArDH;uvDW5 zCe8Y@L0B<4wz7UhkN3~2ax0_f(iqiu^eqMOW|s{(7F-gtnZJwtCfr5@sS)#ZcAWjj zkU;XMzOPwQ7Ouw6cm`#(#VOtZ1p%~QeEQHzWVkZ~7sS{xsG^wjHeO4Uu-C?y9U~j2 zE#`loW+LqLvTE6qZ{%oaFOx-$wj-K#^6ZZPp?t#3f3;K+?8@x>0rS!e6~*@a?!1xy zqKrmggmDv|or%Nmo~FeRK>2G6((#^5t6y#wM`Tot+Q8v+vvm=Ehzipr&uZm2A?Bna zgG%~_+@-GHs>3$eb%3W(?AAZT+omvs4FS9&8gtUxHOho#8b%3oeNc+|C*cyDg!TiN1mNC=hFMZRaiw;c=Tde+-T2 zBvWNwu1JnH>^ann{Z|OwLmBk$#ETioSKAMWQ~lhKg3FA_<}t^y?rfn@v;Ju z6p$ap_2a$07L`kC16XXP;cXtv|$WxT$$4PD%BaOw06(gX* z=#1h0t@!4;vP0!!R9lluLkL?FCP!um8~}UZPC`7`>+1d#K?UH| zGo|4I!<*00o4t(}I-YBIfU3Lv&trBmlB*;{Nxjqgl7!8O5EVI7z9Trq?=m-g7aFM1 zeLD9dAA$QYA`ivhkC}%o-SBmOO!9OV?r%TVAIhI%3-BirC}$oth6)A)bh*K0F*lLKb4$O`L%>|Ww^;#GWKc_0 z|I8s+N&2&m-yr7h{~*ssrBmi-9Gx%pXB?^8KRk8+g6#rv#YmPk6k|g&MHGN%n1|y# zPbxWK=q~KX7;HwK?fIKL?UvvVOdA{>N&gojSUKxwZom}weR0V|pLe)l_Q1lGsQhic z!DAZCsbscSDTBmo2d5QtgB}o-D3Vj{sPv-?a!TN%095e)`e3dPT$703GbGHy)$|BT zw!1Z+eVvd*B4OoMU$AQ;f{LMzHMym9&jf}qpofN|1vn?z9j6VM$_Z8`A-4o;lAYFF zLUdIb{iH98w1i|_l7QX&27dycnImPNIVJynDE-B73lpI@!3m2@iJ|*r^ykJ-LGsjF zpllR+#0_xoeJmsY?V3CgiRH9V86c!oJNX5Ly+)f$`UPpAneB2?7If%(EAxK`N{!XddcliuCVeG(kO*(CFR0{m_dD>N)|qN6z=aNP zRdC-6B9aWar5F-lZOWa!h(Bf!>;6Za3lJQ3dctBz0{)8q)`ohGCLk%HD*PgGy8l7l zdgFGCzS8q2%YTDFMI5W3&*0Q;71&O><>Y2$_`nZ|CR|TZXw75nw~KS7)m4#D z{hO6WL`i+N-*F|;pw?c1NNOTy`v?gv&L1;p9e4;(?|8bSyMHzQctCbOD&MycPkz}0 zWSeeE?R`Ne7<9_xny@Fs=l+vVMu`3M6&0scC%WNC6!1>{4G@+&T&8l<;R@r(#>`n| za(r$&JO8}1`cSg*9bliRSa3OgxxvBQ-R4id%Zrr365E;Q?2z}n1p=uIEgulA3ltX3 zp2=D99Rd8qvq~DGi?C+O;%I}bqL5TMoFr%op?M{dm>{Dm2zzZKPin2JhiBiaD$6s? ziLbXD+=Yxjv!M}NkSj0BIyk&lzoVHpO|!* zK?Pap0~!uPiKKR?U8=G{?<)Ba9r}Y|QDKcmxu}00GpW}!jhBKh%GK2yuK_3>;2M!F zwe+@Z^3M-EtarJJucL#*F$B8XqKmmcp*}|*^g)l)lXyT2fvhaZh$uPQ`=UG7MZ;-4kmJ z>43u3jRyO|PMG4^~IMK&s{iYiZ@fo=`Iz+8mI= zA>>ZMSo~z4;TkL;aD!~K)Rmji{}0aII;!em3m65F77!#v1f;vAO9Z7sKqRHRQyQcj z1f->;q*J=PLAtwJkghl9p!eSQt@Yk|>-m@KFuy&sWA@D6vtyFmg}a2Pv?Du)-2irR zt)t;jd{0BYBe$!wOX)Kz$sWo$cc)?9%|BO<74mU^R+Ro1CMY9P&E|^|KM;|_;NP3Y zmXT~g64}x4aX_DHp4e33irHV*hPC;A1#N})JLfkJ2pAkmWM!y6WX97=6hFR@@K17- zCB4~(i;HA8AW;#?eihcS7oN>1H{X5Qx&0pTQyK4nzGu-j8v2~8D82E;WmV#Y*arRd zi*ng0q7{OQE^g$T)gIs4sJ-wv)RD1uSCg@es#K^Tk(*RztqT*E$)E|w7WtDfA~k}> zB1W0{2bDvd_nxyuk6Q>g84%tIDR#mC)N-FanhZw3ctzI*$F5~??b#u$f9U70g`#Yo zH>-vE@HJtru`biM+~;ScB~Q;BjQsc7-AmN$;Weq@Y?mwf(9KDhzIx#Y{(%vBrQ3ye z%S?0o{EYG?>P&ysH#wcD-M)cSx8h?=atDm=E)}j|!A~QZaQZEDea`XYk?h$dUwurDF#kOH zw%BZ*5}ND%wJ;5f>k3~P&zJd8Z5i^1AKJp?%Z~Q&DkdO(b`7vGlrmp2Zjb9k^xr-u z$PrZvI+w40bUfnZK`&Z;vny)_Vr+qHL0nz=sW0kCNqX9nocQGD4tBC3)D2lc-pqN=EPf_RwrO7PZ26oS87;^}%^2HgbPU z%nkljw}JoO)t5=pFJAoQ-iF%qp#t4qikeNrV66EQ2z=3KanKyoI$rGA5TzR%PZJ@x#koYe3g>H+Z$3srb;k3~7 z6-t9yqj{IajY}47EO?aRQe@t!>+UdJDhy^*9?furp`AVrvEI(DnZ&z}8)^@>WKPYM zEiKByR2>Sh+V-7O-&<_jzGJ58#P>b(L5<;X*TuJ|sA`&S1H8gcls@>!M!zC~U7(hD z^Lx$nrE$kH&Zwo>fmUJ0#;vj^ipP;*%TE54lZ#puB}K71Yf>_Q0l4S-i;<}qGmfq{9rOVmJ0_yjBBxL0+h=3Pa5kLOQampV&^-s#%T9#3}r;W+_Kw_hfI z;`CLH1*-&0Ljy>N?k)&CX2U3`yG%!vu<#=OjhI1=si-PHqw<$CFWlK6o-ar$w z5&l^LuPZA5?&&9#fmghV6y}Q#KCx%Y$&7ABT7zbF1q&dH0ty(vI-#kGw(HEYFtlH_@n46|VD0EnycUY6j*= zcz!EZE^D~7a!l$TpF~ObdZA}Xe+cmkaH-4G$Y|Cop+| zG;E0>9;L$Nt1&oK$r(YlITZNwY%k8j;^O|Y7<#zO5zQl z#=O~l$AQbfyW8E!oRGQNye;0h2OPY*I#CkGmCHo?`yw;D;q&-af*(>_7%Xo37tV_A z-yxBweg=mUgc8L(lxcpXjCk<+b3eb*=aw%R<85vPa6gxXYwK}*t`7_PBXJfjkM~#; zCxXpCDEg+qL#7pa^At@XGM+<)MXID;zzXxdtz+w>I5{0+p=bLfGFR0Z<68=S$<5pL zbvKOtaQpK%l+|WTlWL_%cP21nrp)Fxbq2P}`yZoAtx<6(Ed|^|u4Z*~ekdi%?%wIm z6h|TckdICm%~1{vivIB~qDYj@4dqqy>s6+v9vla?>3OHF7$C2EYI3PB8ZK1y%LEJ6 zg%pLabm3`XkTp1*G~pS5d_IthdsS`o@S)zQqhMQO8TAmXjVEUv;@qO<`9r=%C2F`S z?Z-YX$kd2sT2xXMygmev{B9p3D{AqF__TANA+#5$!f7@~R;@7!J2>J=G?T_XYuv4C zbyvkWM=xw?6>n!=BMk77ID`xFeR!8pkYi@Z2=rYtTsk89F=^xN&`zP@he{T7n(n!^3s^S7=_4T{z#?@QCB_F%p# zcv;yPdQ#V$y;B;3iT+R}gkOSRpHNY&g;keL)<;=V@;(~|V!YVvW4E#AK%){w5gf-7 z4c}{l!Lur@u`9cZoclrdm~y>OYEdlx2C}yg54BDl)N3WA6K{S2c!M>)Zr4=e41bch*Rs89Jf;8%VrmeC@-#b%ERFZ%2{3-QxsX%2u$mlRv zVP`OfTp)Od%u4bvW1@RYbEjsjD8@y4bM;i_V-$N!aoc1qTvkwdjqe6aZB#!9)Uxa! z428Ar2S<4+mW(XutAsN2c9xnbkGF_$lqC7?*>r-cqze`*Rha&ip{$nP3fQ^i@t#=(*8dtHbZ7{5D{+a%8JeWs)a6%gRn;l; zHd8iaw=}{T&{d?@M??BqVQz1v&ig&RKvq;)u~(&G{=aUFFvxUaKeC4i~Fs zYlL1i*-mmJHhLYDKzWVC-M_WAxxuLr&mO#}b$f#+C9QxW0A>4Zj*M%qczHZA-?Ebu}(^@xFz=ON7XL zBM8I<=Er0)eU=QUFj1<{Mo2-X?=7DNf^4(}1VEx4`qJ0yL*D+a#M!>Lb((0jHNZ@0 z>*xpt?Z58rf`Bq=DQ(mp?CgCNXo{7HSzp4NpC<2%EFcC67pma(=c|L}d*|fxY+d(k zwcWw}pCTr8j&6G??+v(bV|m;zP*33GQFA9M=qe7n4v_{XvIk$D(8#qw%ol4$r!L!w z;4}L7P$x2sdTqyWCdiP4&Xc6RTGN*4f(te0FkwCvEFbA7yADIY;}JMlUq9kUh0cTo z18tS%i<$^YY?7hEtG+*ZUVs0t-0%&ZPzsX2X}Ibg4jOL&bJYiA8u_9=gpY@e9uO0S z!~~IJ2IDEDBY<*=|NA3JO#5;>PbWynz)FX9ZHfFs$jkL9r0EsJaBCCa>VlA(95lnB zmiO@|=75-r-`>mEY(syaH9Rp%U~ld3hpt#24&43X0~GWupluc_NN52}!&(>=eDXxt z8zIY9>}{`5*oX3A(1>gKg~P0FK(!_4`W8@?-=9dM;P=`W5F5@5=`t{7z-AmY)dXFT zAnl_>mai@hx5wBBU-u!A55a}&)3ZUK!$P6!fD(9`?r9buN4VP_5xatr7{i*N05T{O z148*-svPA&J26z!O_zqo7Mu|wk+!Mo6$@<@<==RaxE#~zQg|k&Tt&7d@L2fDKXF#Q zTLL<${qc%lB7sH4y_8ht67n9Nb&ibKp|fPcz;7#Pf?32OzX$ZZt@tZs){2;zqd&BH ze4gTp46(+1+^7L8Sst~pVdI_p#|p*0$uwK_%qK~VwoVMD(ukOt*|=}MLd_W1#Z9?^ z8r zjSC)B@q0F~jQ{y8z~AsBN3@<4TcztYggN*h7hhZ0{M!yY z+|FNh+NJy-Z!CwoxJ>Vqierj@34=V-Ai;Eo$(8@udc17sg*4q!(Rkhqq{^BHulfgc zM}k}@tnm^u^iY)JdfRXAZcw*Q6zx(FoN8DE*Ju)@k=`Da(^*uK*VZw;B#V|)m z+VBB4B0@X4Eg;;$M3v00hRg_*&{P??!6Tczp<}9xDIJAONUBur9ISSa^?Y{}jJrF) zi0!DO7N-ExdUmp=>&+|Z=T&uOhOj8uU}JxK|5yk-2!z=})>Rh3Kxq$cq_)>E&S&)vV`&`}Psm#6y_xiZ4 z{TsjJd|lO!C5$+jBTw1hmku(ALIC+NA~91PP}`cI4J;|+`Ybo-Mtcf+)S_9qb~^kW zQ~KCZ ziCMjOq;IqSlJGUF=L;{~GOh$8h%hii)xd+zt_-eRGD5Pz*)~eZ&l%L;2dqI-J6H(x zPbiACa^hgqR#ho{D=ogCNxd3K!1K|FFjN&IZHTt(5Wzy;8sYlW3ismtsD7IGbwLi*7wrMA2(>bPwKoKG0T+JVlowBq%)W3!q^vC>rCyEbQHy*lz&+x*GP>@SAx z9%V0c(wGNz3qLoJy?Us$1=R;iHY*6JkS(H;m?)ZHufNfi0p)-amWv)VY=LX>ks+fs z=uHMDYa@&wh4d<0{@i#$AhwIZcQ5FH&@I@CZrueJj`dZ{s^A_1pg8b=o^pENWg2mm zQdHf)_R$3f!dgub!vJ4wdE-SbImHvTyafutheD|9pUVudmR63YKh;j{1zTbUk&i=@ zT?6Pqk17B^Zf>{mH4ZP@pIUJEK(i+?F*|p4Vv|rQp>EV=Rp86N4Wcd4-GCO)w(oe;o-p>u$EqeKFyL@JL28g6(#+kO850{`LBB{A(E|Nrjly-o6LA7TdgAT0wHYR_hu0S zTU9F05OzY#6XvG|O$UeGTkn^zIZ8_ePWCGQ`{|?Z8LIqiij>!y^;$dud331!TDeh~GTAGsgVMeWOc=y@xkKx+9n8t5;tCl}qlfMzya-GW8@2;U^-xVrepgKwH{fMZ& zlA7^6IwjO}mR&khh za>ZM|GTaj8Z)$l{J3a7lzTAX2xXA3|e!e9D8|1OTdP+X&!ZvyG>LdVb=UHrHT!tqf}OX+#u`YS3Uq@t!ziIT9UEf$Wj&M;PwHT+Au}aXKPDd#x1k+5GU)sPC&uqmd)oO|+A=C-m0z z1xeO>#afhhK9`5|X0l_W3d@iEWo$|r?e{oG{)sWC(%fe%w<>13!WS4VGnjWKY!(XU60+;&l~SoZCVJQ#mvqs&jPdFaO8)zk5P z5B8X#y_CA`YFLr=k$FMu5|Pt{Qw9#j#lR3R|0dpSm&cqzT>mTgp?G8@*Cj;Qf* zX4hy2XM*D;JuCYp{{~J|o{%HJV3tSmP$Z>TLHKQzeyz&&3`f|Xb+e!rdoF^rJ(M`K z`bD-M7_Cb({rnhjg?P`ABwD|m-?+kDEExxQ-8Bgg;R*QpFG^QEZ2EMLvFcm7_@)Ye zaOTgK$)VFq30PiaUAIRJ+K;e5!ydx&p{}Gpt+O04dok*dv55JU$f2S*sa!lPF;3-> z-OkT}g!mfqR%(v-i@M;k?WfX-?=d$9$@o#AJG{s@uP~`BD$XL)jn0$Cy7HS7a|}48 z33gD|uCJ`?_YYJjt1?&3JL=Mf2|Po4I7S8(+J?G0xG^#dk@vE7yuA)x0bQ`VOfqN) zh52S^=MAUbYioNt6Dc>FC#X@vpL-=|p6o608tLukx-y0G47+djd+U4B~jm?Mj%B>1{;k6-5gD2;U$Da{kq{_FJ zFdgwfOAg^AyrO_HX?Ep86F6iq_jg$4K>mEDB_uCAvp@@PL7vP!Zu=Of31$=h&Nm3A z4rb2$5+7y{*60BdGtPtEENPqBhbqjN^FE!hMkq{8?mxa9alV)W$|+&APYC_0AF7@q zDfC-3>#p-72ak?(D`_n6tTEn)A6i_lBq{ma)x_l^BtvB z>nL2P-&Ta0Z`nAhEGA9F;=-@(v+$qVp9Wp^Jf}9C87t^&IkVKKG7r+tXe!Ws!zATg zv04-kk<{sqOTfxnuD$rxPgn;9%9AXzU3#LCGuGz9t&?~xvHQ1EcTK`GgLPLG=4HWb zwT2x!M^9HjyIL<0h0)<19KtU?_~!MNqnDtKiISkR{?JpP7;e4EeNtz{0OL>Kf|F@t zDRW8Mo@MldPgota1ZOR%#WXW@%bccW$2Iu$(zNE0z#;qK+tNOA);@Db3EIez0mnqT zM&v(oB&{b51cCCpqI(6g>z}IYQb)GZ4x)Kgs6SOFZZI?jor)&Q;pxBiIk=gi1NRYfYhy!yPYF1L8J zDg8T~OBhDT3|cTRL)F|pO0;LRbs%z}k0lwWbr<$%gD7^yUG-{(lA5Q`L!r>d9+CGp z{7$ko^HvvfMv|L5V)H>{{*FV#;d0NRC?CDbh2UuwjtbYMdc(K=iP_tE{;bvU>5GN) zAsI`clHR6tr;Mz_7z|Xd&tpS-Xm40$m7bqHl{|))Z%E{SH5_`lwWCV>_YcUZDUdG zocND_rk3P?p17{_k>*4^JoldISwQkGS z9;bV4cR%?-gE#cD6_D|209SCf8qX-dH<-6geE`RHjQ4KnjB#Ll{bI54Li5VUDExW& zt@Cja>xcKJwq%Gn$&a^}9G2HTZ3N~F_}`gt1fEBC*V9*)5o0j&6*d|!brE>H|7}q| z?=aMrPKdjpqG`4IBD^I+4)SXQGe)fX<+4@4Js~7GXdb0Cq z7SyBro!_S7a$xRi8)(3p@Cb=tc(xm6jiXE((UP_`HEUJL*%Nn#ceoCN7>SQgdAkL7 z2_X}>&^c9}lPr8L5hc=u7q9c=#E7Lo?>03QML+t(8&O#)?C~Ro=u{@~5MjTXNh4v# zS1q~P3)hKLHRX>%*3APCI4jK4=GQ;q7|fpi`8<&(i0up7nl(IVLQD3>SbFr;o3I!Q zi?3oIo?GhyA3Bv5t78)*HTunqhm68>hd%7Z{hnZ>tu4A97@2TtbNIU;bhP4A!#6fP ze;WIK`fKP8!e9%p6^cZY1Q*N!1(hMKxq+=V3JBtkWPo~=0?5_Ue!(56ln(Zn7CI4n zIKNGk)$E_M?Kxoxe}2Hva$viFO~ku6efgI2j?sR7rTIgMOGE5iCtQBqpS9b+n)Jnq z7I?3w?o=xIjs?y_4ZB-8@A9qkcb?BAc0M<*FCF?3OXRq7ljtu&?BU#zw1dFJWbSd4 zDc9ir);Z>!%0zZeHwl;Au^0c!creU4rwP$gRc;F7JozUv+0XC%VfM=Ehh=wktYx)0 z(Kq0zmudUxYn0gRPAm!+i}Q^4#hu#0!gXHXFRBeq6+)|8|F)=<&6CC!T}14pyVVoT z?dN;tsePLIky6g)3iTcd*Y6K+Dz95EMN)bl)~;eiy>X*wRYCEZK_s$e4L$#$$0#Jf z2W8A2cx$0N_a8p2?zfMeTTVu|LEdgvJAC_EcolR8v{gn?)aIi12~Wix{e0J=>`3gI z%IFF^7x`@Z_5=FBS=hoJCH=N?Wk~~QeMdlzo?>%F67p#{%W?Lxl{dZ>N>7W@y8(-< z@}CJ~{l@!ZlAOIY2Uey7-$Do_#l#XiBSY@}ybhbVlLL%&{cqaZeIDB+jP(8jaVx;l z*96=Q%`-E0*oJma+@cEhobit$>xbuuU1$#^SKHoO%d8bGCVvwAgkM%v_&MPn{r-$T z^Am&2tKvw6Sw8A(%_ARjmsV5tfo6TnsyM@K%q_i5@#wYOO!CTyYeWi6Ps^zeH@nqG6qK(QobQDUshoMm&@wO_ZemuYRhQhE?3ieu|RF!iq`vY}}@ zpi{v=9}4>4t%DI%QXT)&>PYjo-k7S^@~V^HdsTr2V1IWw_?APU`AL{1)UX5JwT(&Z zCNMRGEx6sg|A4^;0);ftO0OUeEmA!32QW zC#~)3QDW$&5?FLk-@88n0y_z98D@H@B;?fu|5=LMFOhIVSI(M?#i&{H`%MTui$9E| zuKYbTHcqh3?jsZdOq{vp@vFMKm$G2LqHridy~n`n3(8_%WA;a6e4Ix*H^h29ry!$?FzC-dQ8rlS;WxjDa;6|eAJKVHirZa z@q^d$U!S#nfy8i1wB`6>ZHHYsc4U_lLk(2Y$m;49BB?|7)5iW8ZJ+4O-A-56P}3~i zK(6%oKJ~Wm)*-!;^Y1_XrF-cE%Q{51^B0IIE7cB;*$;3inU`=Yr8cmvNfEh*Qf_ZH zL4s+{!QY%yJ;H|bFs-(f>nT5un=Q>yljAtUv>ntpRc)D{%Jbg-lnarFLciyT*awAg z%i2DBdWP(|_L-*q+XcEwTklBye6gH8QIF$5l(+G4+C4eD6KEBj7;QOAwqS{jUPr+^ z_*C3#M~%tWf|S@hd-ogIy2H7$f02vk@6Z+eJ!0}9WqGufZ`PO5pG%MDtC*i^|MrHH z`_op{5gxSK`&e^Q6-`uCGu;_81515V3fhyjL2;P`bc#q!(tu5oY>hw8iIpQ2hWBun zv1Y9gq&Dhz3HvwO=@})bNFG(UQH)fJ49k&6>>1x7g@~5b}+low!(~!3Rd^Vuk+{MGvfRVdwafv3}itB z6SzWQ(Or8heW||^3EziYVd5!<=m3K0DB0&aWSSCg=j#^$f*CL3R`UEZ=AD@+tzeBF zF~JTT|b~tdytz~7ttw*%EO9j6A)S@#gpE^5(m%YC#jwC zF^oEL1k-v=0sjU^hnl7NfYhFMe(wDf`ZQN8#0!glTk539!KArV{2=*}(H6v|hTy-y zU$>7uMVRloSxv z#KAcWP59|#Ho))gQE*2RX0&RyW9+`9&&Rl6_W9EAC#kdU+v>~c``Fk3F_d-zAw9t> ze^xub6pojk}7Cm@MKUK&eSj*ZVby)+ zZ_Adk7uvG?9lPwFL+c9yt>!23jx?kgi8NRKC+f#-IZHSKDgVg6Jp@h!)(a z&->fpMvjs#1p)h91vT@(@Vk-b9XkPB?qnB#2Z(S6s{zgWgu699+o=Y_4ZLVYYwo=3 zv?Fza8m0jOde1doMVXgnZ_R`g0YTsXbm}WB2I{qyKA%PkB%IjigT&)*sR3c4k+jJB z=t>dtbewF*r`o(zDxoGHw^Ua-alT97{wX!IW~SN!AmJzZVe9V-Q|SFk`^xLZ?P2mxJLZ zV>4_=EzU&6jW2Z=#ix=uJu^ilRZL)!B}|ccFH4x&i(xK?JO}y*MsJx6tW|o@wYw-7 z;|C~=w`i3F7rkx1f`ltydiB0#M5iIUAJ~6+zARE2#s784`?+gyWd}?>+n- zk~c2ko+DAbB$$%&mjKPgz-bI#e{-L#z=?hPgJuTGs0QdRgD?^?{^k|KLLPlv( zWuJBYf2d&_`^FGYsGxF~Z1l+U#Nf*$Ze@R9fY4-mcpdP+O@r0e9 zRA)11zf2i#-l><`kxSRJ6xH##H%EUJdbdbStNsYSylk0RJdccG>ED}Zx5$Gfv4l^K z$h3N57#00yh7p%AS$eDV7A;2S?EL;>9I_*@ko&brTdF$#n6OU2JaH3##twZ8a6?8U z3upM;oALp4lW2sgPaQo4`zloQo0Z1&(jilJv&!U~&&jbBOAR3=LW$#|!Bi`|Gp+@gH3KOifLm*6=s$3jRt z^s!omytfwNCXJu((JNgf@0Blz^yf$oeikqfg?Ix#ZwH9a|0? z^Xs0L_lrdGvoq1xNMg9v-PPSr{KRg24V-7QwgXq_*Xv1x8@7xY53G1#9E2K^Fsd*S z;D(5?v{nbC&zg6J&_6d66DIrie%iOEorP~2^vyO$c!l+nPAKFWE~e)|`zeh7YXnye zLI;Z)bVk@kYR6~p)WtceY7QQkXHB2yh~FKmV87pGqa{_tL}@_xt%tulM6NE@NqIwG z3Laa@b9zi+Jp3`1w9m2T>57ff==~RVuUUxZ>GzHDw4^;PV7|eILY(vao`lv{9aTM=hErf4~joxZ$-2+!;Fk;j*%_}6ehtev%mJ@zC@AAHg zQbxZp&(R^rxor9l2pPQp#RUh0{gmeI?LK_UFM)?zXA@}wm8sVPByvu;C0*T4oL(hb+wKq6h@L zwl@^(D^02uTc&(TO@5PK4A_QE86&RfrgXQRj5O+HxOCU-vGmmOIgu}28e+LG=3|Vr zX4xTlR!QctKOXPUhc#Lt-itk ztQ0z+n*qRyj)(r=TJQfev^WSfImkp%agvc4;wBf5PKJUJ7lY}|$gqhJU#F|XvO`gP z4qa5F8f96T_W(%_igP5D=5l7L!jEMrI#K72KptrE5+~pL^9W_XYrn@=#y0xB1xMKw zD?aT#ei7p0YX(meO%!-Hv2(fp`&)-`p|&n`A$2g}88&6{{b5pmLH7tHjr z(=EGNf|gU`GnLsr?Et5u!|6-GGqQ1E+C3`Y)@gHG%?#KUyYzni_Z#BGNgsVyz5n@Y zHbOkR`hO-lTI$k6Qh_oDG6``^_hX1^!ln!Zm=Vj^qLDypu-uiA@jpYEn#jOxItmYv z1IZBxMQ}PHe2U}hSCqe)>@(P?@(cYB7Dpw4(lOn|_oM+`kK4IfX=t`NO1j~r?vdBS z!UF62Zo!tw@b8!972s~8+5Wcv>@|d1ud`IyOG~}bNpf&ehL;KO%%IDze9OME(EoAIYLf^dQX91H0orx;h*F-?cc~0~z^Y zn_zlRws?~TT8d{Ih@H=rh#cKjn^2t`R&07Z>@ z3FGY&O#f#@B3abZe`dutkLk98a)T9cBM1UL3PRU==-jOMGEnMt0Qvd_vTC6vr|cdp zQvVnJ43rsP{`--+PL%#%3PR}f-TXtRP7w9wBTf9Q+B0R%rgmZSf$4f4Gv>q_-jH24gy(!(9q_bfS;&)cv%gLtLE2RD!ws%gpJQ!2O3n~h= zoRY~Eu{SHENlaIRO_n?#ORG<-Q;4UuhdhqeOx0Znv?t~r<|jTfPAQ)`q!79dRqGxN zB0aj!QrHjmf=xJ!8}^V051yD1^bo35NO|^c(otGmW^}W-XuxsjPqQh($GV2w_$MAu z+E2dGYT7S}alt#ciVwM-6_~%kcWx;eDt;&$?9E|?^~dW;>ej%OE#CT=pT*DyNKwPeAI?GQQxR+ADMOjfGJENjoY)(~o}pjdGp65SB2+K&#Bmsj z!aS#$i4B^0xE|&1%}ygsx5~$%%`83rp)?CS)6{(U#1+f}XjBbT|B6LPX7=J(`ciF>ujZu-D%fe4Uox~lx7 zb0U2AHl-K0j>~H9+W^HBMal1k>He5I=HHyvf^Th>7x-5CH3jpVNsb3n78(}$)jqt0 zH=!tyFsn1@u5!OPV{$tV3FA#%(%AD@-AI``s`NVR^Vs*gW>uLCISX@}X!bO=85fqQqfj@7D>QnKP~6q?5jJPkMWM^waG8Akj~oLp+$+KlNmwT2d5_LnPE7jcgp;=m&rW$tPN$RQ5yuhAZQSTC^7 zZi$KWG!9~)99)bLsU7j^jXV+PX|z2K%9zxPQ@dbmfx_i6A!AMmG<4gXJ+;bQC z5j79hOQ>?EtUiYS60R&Te|goMM~UX>H2gW1SM&A&tNsPb2Q(w}lqOf@va2lfVz_4q z*DUBVpS^?lraw)VTm>~`%w@N8Ox=9C%?f?@gk$eob7!vTl|p2BW{})#!ZaS&@=8jT zIL%Lu&W{^w2Hs(!AXq%8)`V5twe3Fmg4QFb9lh8Ex%wz5W>v3G7ayi>ab6#1Toutc zZZJtsKlhk8R3R%W8Z&e1lq6dCNrJ^`x_ZL@7NcOy?85J2Zzko=b)~f-q0VIruA%0v zCVBAV;nsr1g}(I++@RA>VUv#YuYI#~ja9ZHXZ}S$#_ZZ_xRccW#MzvmkWqc(=Qx<0 zLN2(J`tiZ#cspKnjd**cal!SpeD&Ftx$@z#Q$)UrIRN7nPSc)jbmez5ed zBz;UfuV=-W&xF*@>zc;Vc{$nrIGAlWZX{Fb`urJ&uvM`q-@p51OjayN-sHEe^Hqee z{Ig=MCO^)3T37vgtMxmy7~zKrF}qk*)zb%NqoHYvp5pCq_+lA`U~z>*UvE3uJ^6rq ze`q_~FE8hIyqr+i6tvT?J=UN-ryxGSa3Z}(qjL%8c3AtfLV3IIfk!{f4)doyi42Ij z|3??iBwWFQtD0Uln)pT{RrPDRi_KL+~#tPjtZ z-jtqa4~y%m&Egz{mJ9*@S()@vf~{0m%yyoH#RvlaPb5Bd#1A2(doeKQH4T|!4(fB* z`H?LeoJh5RXte?L8;x{sj|+D*>Iy#SNd=*3o9OlTS_ej}Blf$Xsi+NWy6AB)laPNDHZsqvdwU|qDn#moZg0*blP*pn#Hs#fzL98`-mOJz zmz)0m&2)VBAY$NIQC2Nq%*`{J{(3w>#uk;IZzJ*j@dc*FgNcop4;i#|dShPbFT^8h z)uqCuDz-X{sc$oHV>LGyQn+n-q^iQmzB^2o5>$s^lF2w`Fve=Arfn3cM194UmshTh zVbSgCO7-vn6U^Fz7GCLLxkJn)^f|HVH@A?QjLPP9AOJepH(PGFZ%U%f@?hp|!G>-f9*R@%25n< zm``&$P94GCC%)6#e8*T5z&Ve^CGN`C-OYD|M5hFbkdaf`bW@ZY37OEw$Lkp)K9?;S zWX0FHm&aTg+na5=8i#Cs$$6J>N@*_{g^VgLBIkf$Mx7>@c@M$OmoVg%tXeSf@$?^i z7%G_!(QmFsDj1B7`x0>MxZ0U}^#Y(0mGX?etA{k3R$bC6c58(DLJyrcB=Cvx(2LEN z6refb=C40HqIb8hm&QZJC`R+&%3m7vX`PxeR{Kn7tOSr9;VKrY;{$lf1!@dYY5I_R z2G}_;xuc7#<;H)uTDz&D;>DAI*N3LW=V7vwUzE)9pOK5poz#(QiCD&r>@q9u`R_e5 z7U^$->)u2sasu&W(VgMIdg6_qrUf+*Q)ab&Xv@rOS{`2hNs}ekaLzdj{WAKaIgZ6{ ztHn5*#ZqI)_%v(rd(TD+6-xw(u+c9smwniPbB1SW8!smw-|s<1W4$AfyL1na0l}1w z7U(w8H#kyX9nGofDwfs3cwO1W2}z*o#c4!m;DIN_iIyIX}Ex){})P@ zl)wo#9HPxyG~Xp?5C*XFzB$#scHACIcQ}wZ)DLG+i;U^`AqNA8a5$=9xB05l0@T#W zRTT19@GX<_i-Rbg!<=U$>IaP}B*IlUpZ2T$tEy5*zE0g>QC+}#m+PjcrIQZjF_IsX_{Sm=Y&e(buF%vsX5a{6P2|A8~ryNbqX)r!V<&D`pb zNJud~{d1-M476q|8_?Mq2dk66xy;C7HO7*R0m>qZYNVbwi6 zsr>1RR`+Y2E{z#$={H}lr3)icN-Z7_;&XvSQ7@S?S}pQR=Lts&1< zy|Q+KS#yulT{>L2zbytjdno__a zY234TuY26JAi78E+zOrRg{7Q6#a{O%`+wwn*79kQI^N<`iMQajr;^6fn3A|SGLQ5H z@6tmJw`dmK^A%#co6^>2>|)|enX$?xUZO-(wsM)kU88n<8}X8$uZoE+Z9?{L9 z#&u=Z5pH9_BH=6njWZR1#d)5Fnuq#rZZeL*BzwDeff zyhGuU;GWc#TT@i}m4UpGBx*pZq5}BUtxPGLfA6MxjP-=BxocHc@K-ITS|vCv5Q(1J zB`m62!|zP6xpJNC*luM4DMDm7jf{LPfnquVx`X25gVKn>xZhkDy%DTO<%BjAA^_Lc zA@|j^_hkn8vE2ua8|5QiJ#P1Jg02~U31!)snI0R-Vn;|(`k^dKk znLpLG;^JCN^BVBulC_}%%<2F0JKXU1}*SbNA=M@s#9I3FO*%@rt(CzPG@DlqWT z(^m$RlCd_u41Mv!cemx{lB&d zLlPwyJf5P!-L*w9?Sgxv82P5_|Ha!|hh^D4`=d%KsWj43($WnA(k0zp(%mT`($Zbh zA)V4)58d57ba$Tn!T0_C_H~`T&-v%<^Otx%_sW?yGi&BEYe;_Hu~Ugsbo4{)uMb@l zEYpcWwMl>`)H;M1p5?MEOdEJdR)aoP){8opY6Nas=0kCHkEht`)$hpz;&qJgE;BlmNC5xxvj&hT|2TN@9j|T^ zi_k0KEh&_Yd_lFK?)iLFdhlsKO(?;DD;V}o1_Jk^OLzEY7&{;) zQ(M&B}*7>QpZ$nx?oJLJm6E0Lm?nu-Pbn~x@BjEvj(2;ZOSRd@~f&)EQe zPWNc%J{rjq4M^is9O4QA*s2Y_{$?v9OOYD+-3DEuX4Q|?4%aI!z!0)G85>ut`mk-o z2#WldT$q{^Dy3Uh=E3QCaJ%~vYLv5F|C(Cbp+E=XE*KjnJBMF_5x8_lYAo%;%@b}^V1Tesfqwr+?Xul& z!Nl)@7%H~D7Yj~!(^@?l0*1zL1UaYX6F)MA64}D6n*nPVmpwcyB3BX{DC@d8;D>^p z0oqOR($y240wRqlvm<9{{G|UrUQ=)&E;~0WQLWiKH;C##2e00! zBBiA5>~jA6aIn0GNe}8`FMfbZ(eCwYo(Gn^G>H~3k4M)L)54U_&u~b@%+WcL^_y5* zg$Kr~|6&0^K;7WE8gjZYwMt(Ul}Fm>)xWE@^M0aZIC?vc+MQ(_A_9)V$uMeS=Cq$+zrGC_C25O z*m0I=Kys{n0&Goeo%15FzT|K9#z!v8dEjOM5umvedt(8BVL%VkP;{NQZ1_hOfBipu z=PG6Ix%L`pKR~}8L@6frV=EF9^X{NW!&P|ghLBk>^48SY}SL7Yt1lYp=(mOuR`Urw$8Ut z1i(W)w_g>*aS^{G;mZG3PxR6Wt{&D~458oUx7!HC176$hL?5tAnbPr^#ZGfs3o0(; zfFXFe;w3j~Sr6a)=;?M>yEJ#SlQ+$3%~vFwZY|4^SuEh^w1LV$5fqWm=H@UW(62Jf zkE*1kxiRgHU7!#cNT`3j@?!17A2?Lw3$yMpL@rSl#T@Ya0FW*m@TfTl)b$m&)k0lN zOiVDpbvw9{4-y+{3gB|m%S?Ne=~2@ zf8-hA7rpX60TwlW6Q=N!(G!oN5}O5Zf&TzMC4Aw-U8o;jT-d)v_HD52a>= z@k^EjyNbxwqL$O_FfSI>e@6LL$dfoW6G*9Tq+QhO!c~L7_4&=^YEa;1b+GNT!lo`D zdhO_kBIg#%;pm|1^2j6c{dgz8a?7N^0#;e*cBAby$m2nj;IGs^Pgm-`Nc zZu(Vv;Uev@qT#g}p?){~%_1y^7r?Ig?1y2Nhv*L)OFYmYcF+e?;nga3(!1k0!DZ3s z8DCToioycHY;pO_U8mLj@|0WBmRZ45i=?OK)*6mEO`%hKH_Mf}0v0Ly(U*IUn=@BC z)!#N|s~U0Eg8Ai|I<_ydc&EqAd3&T5sy~3@Tt6GcV)j7$@fMQHL+_y*GEaa z>m}9B2CK_xi=BPz5~bU(o?FkpK_s@Hj-RrUt$ls2J}h4O)k`3={A?HvTXx=D{4r?> zkMo2%DOKYaC|1z@4^QU|6#!DCTTk$$XjqEiSfgJ{Vox~3#Y;2V9mO~kNRfnbiMF=0 z29ew0^xOx6;uEybgY1Z085q3U=W5kl;2N|$QSdK6SbMh5;TC)Q2Hh0lA`aB_h@WA9 zBK+J_|5<(f(UtQ=cfMr~NSe$Uj?OmB&E=j`PX zM_0;x_twk%v_#t0R?{BKUZiqWDR)WQE?yr66BqS(Fw2$w{W@nZbRs*mry?U|zvo7X zxA6fE7GGB@R5FVBfJSY(6VjfJ-WoxJaTr#dWkmEAgU|jb4VWpq4UdAV(f@0jhF7VdcE!H6sGuJ2d0; z{xNm%{BCw}R#Q`-(S|KVsUD}9xmAg z6}8!DsnVnP)vfyPR8Ty2`K2d{_xEfs_lVTegLIB-WiO9l2Dmb}_kk@xYbD<%(geJl z0If8!;olSQOfw!c=Pq_JU-Y{3({JpW*KN8!dXi$78Y#g=qh{u#>N5>~L)?jUhrZ@U zEj1Q~%L?XuYlDvJ0csH9w1-nTBFn;Z^npPmG-)3$zTu942+N$G^`gY>G9KXHDMb(8 z3fqw)91>1HeH2UM4DfOfOSS&!EwMhO;z}L%ay-EWm0{yh{`1xhfagA1>}sPE_x}FP z`Qw3k8m_=Y>TK!ZFkQj@9Ws4$veI56PgDs!mSfcx82bF$+m+oXuvEWmIP{$cD98uC zWMz?okd}q?<8=@#WetZJJp1jcGvD@!V`^AFAXq zfBmunV)jFMORlt2FGj-rfoU5g_VLM!nVDJg^a%m6;r-VOxGGtbmaJ2+V&#@r(sd5U z*%BSwwKdLLX?0E22{k*>d3BT}N7=kPj>jy0nHZNBfNVR6sV(S!tg6eevmkHo-XUzj zw^MnY#&I4taygfpyo*Ux{bRatMf_&6*RXB6aJ>ot?h%-J3n{P4IFsWvJ;7s}twM00 zCR#F^Wnsdwo}S8w#Rxc+$fd-_E8xB9Ga_8k1s338zoig7+54|c`?8Tlor|(8@x2!d zO8da+D@`iHB?>9lC)2JPQk$tW}FfW)pIny-5D(wwMF_-9D?tEK9lCA~&| zyQA_moo|y2k#pwL^iOpOR8Q0t_IjlvuVWw1z9>D%zMAGwn9rGvC;ucYEJ>c}MRx(RCfMQ|2nlw)&v~{T0KF@ot^-yxIqE9sr{6ST{u|FkiA*s7qVcv`UG4g49+v&LM|DDpHfhjqm>Q?mG;h&T_GC_%VF?D?@tM$q z2N|VyD`w!x1&31;5%SkY{y{$Cqpm>`lMm!~#8}6KiCt+QrjbsyJEiyC-m09A)9~Cd zr2~hD`DO(<%{weFWH8Qq?EUEr>oc>_#k#lR$Y1XX0SQOd=nDC#$vE7T-+E)qgtMGk zi5LjYYg?jpt;^ zyf6`u`}k7&kaiZD%|5+z|?PoIlI<@|uiGXb;zR=3PC!lcZO?u`yIJ6F;#M z=UEVSR`0u^B5=!<(Cu#ugGj)`NITMZs0j`@J&kQC3vxZbDj{9j^@@MkoP2NJ8^mzj zeZ*>?b9{cm<3%v|?xe+(?8$WcVG`{{g?+!nvC>`$zg&s5##M#8j6ccMh}WxVV>>DM zt(Gd14ra{z{5bNNwLe-2)Yn9XjbZq5ZC52$pdE$mVR zYw=9$pY=X>+x4I)BIfUMzSy-fl+^8BER6x9dun&IsJV>9VK2e!5Y4f2@pYmj-j3_%rHB(-kc$t0 z{OPR*Ij7v)cT+|V@65ed+oo}CxS_4Ur_2K}bUCfTJ(aSCmr=h68_jsl*=)KQ8xA?o zX7rupZXm%Jah5~j#l>m)-#C(&A{Ff8kEOKkX`RaW94TUK$l*on#}F!e5+)SC_Iq_k^&Gv%!eqQA*X z?Fu%m^d>?xtJK@Fx;mO~Lky8HB+@Ao5|OW@!UK=gQCgPhZK(-&hnF48aPdop#6f5&t~QuQgcH>r6G6( z{MBsQaO-{%fc|_Am@P|u>`|bM#9pQ>hZDLzp7rn%Gt{YgNy?C8DzrtL1AYq_J0^>o ziu+>z+&XKkMQ2VswjZWZSN4;y+;n5PA)apsFWq7H?w-h|0EVYllBZvr#8ck=`;r_h z@?89#b5s^;pkLf1fi=_em9Tg%#>Nss-EDl5nP);(4MB8>H*17oE=* zP-G#&2$dZZdcy2T_3Ne8yBipUrecLqc6A4d&>4|@W?Ml9R`xkqb{Ay z^JbNL&yVw!UmXsut|0tk2)4N#T;PoXTj{!EMYn8>-JP->2(hi4C)Ziyu%{0H!n|J{ z(gNO43h}&p>g``0YpycwujT)E9KIO$rSN^1@cT&KqoV)YT~8_ZDI2ShnireO5RTb} zwWtU7WN)#~c3oaxKG-`&Un(`+;pzK{TxvtZFq`F^VuRB`1%BJG-fM!-J?uBR1`d># zM>NYDjC-EKG7VvwyDBnn$#3Hk zk*<3M|LMIJWbb;cOQ&XlaFHCkIWpbUY0StLY@@d>fX}Ryn8S&$$e?UKxyz4Y>xLcR zu=z4Vq6i0x--?%$S7c$tzm<=T>V@es9SaIqkYLfXpP!oH;r1c~a1P{s z*`d?wUw-mht{h&Pt{|V*8U9H^Mgf;JL5R5uu8 z^|)t@*Q&X_oG;L6!5=2aY>xyq3xsO2l9&URns%1c(PeZGHOI#CwRyLt&>-tn8X!qX*bN#^6srP(WXd$LED?_j%q)>nAb^pWE%>}Q zoAL7`dD2;WLV$~vG@O{!4}kO<1o)9g%awa_J1>d%giEFNo0l?r@epvsrHWHSoU~+0 zn3SoXjVW|I+ExRZ4POP~w{MRc8o?4271|FP&V~^IF6adhW+2|2C?p{<@+}+fnfQe{ z<|<4~3G5MRy!E@(bG0TDA8IUKb16^8#&p(LTFkt02=6x?eJ?N1@!$~78)w}@&YP-U z?K?yk8}mG<@WI?kFDXzb76?&K@m8he986t zf-@1o_qzoGCQ+9G&tp1DCjr3|Usz37a#WsA$!ys<<$wdOyfAnnQhdPhwdW0aURwW8 zlKVqvP;$>mrXt`Lp)e(S-dPS7D=9ZFAf~+cyYZe0p0Kw}&*RB+q@22?^YiW`0FFOV zE~Q|NC5<4X36bT~oA~gK6@e>S5y+eY&KQN`9uQ6bCA{FxZ`~w(cL~H`fnawzHD?P! z_Se~2U^yg##{dNL7)l|}4v58>MEz=ounz>S@*Tyf4T{h+MwTzr-UMJgPUdaZ*f^t# zR|bQ*8SP+JcT?NfP20|K=;`;ArX}10l3UShzfX;_q`TRSK8v#*RYE(ep^ z$N+==cIJXR0}%7W))^^M0r=+>0$LHLCax8dNfzn&p5llliZ37nH#;lP6Kq+M2)ekK zKHu$X{g&eL-X0tkCvve1Y)C%@cuuyXBEuB~l4`#8?Lal@eS^a3KbqCokHDo|Tp?AW zBMY2g!oFN-sdO0;xWQy#e$>v8{m&M3IFJy5JKGwqq*T%FYlCMt!_cUKA)vV=BQLka z!()RSK6AsV-5D)M~HXue|RO%m)Q47SLc@>l{`}DZrLJChP=H@0AqM(<= z^0M6pIW2;3t!};U)(j3=e~Cw4A?T{sJm3eBGcYdN*YWRiS*nc*fcJOF-E=zq++pfB zBA2p-m;_Wi>$qbVg1iFf4%y{$Iz!7w`ct-mAHe3A&k9IU|Nrpn)w1k=c-1#fgF=Xj zsos-&XQ#?~xXQHg5~#og@DEI?_;bvKtRM#H?^&`=X#gd;P*B9OvahY4($g>FjJ60x<*#jEc-OeWFNI9e^6yK0P#EU>(dwCiT}Y!x7LB zD?R#_AYud2;}$P`XMB4wlRiwf8NhG|5F`W{04JI<-2SpP3?3B)DkgC`0wK3VX1{Qy z)g+dJ3c#VEBPN-pKp98Bx#-;2n_)BnERzv}k^)dxtY$zYIE51kQvu=Y-*{A1Qt5;a z#RxGmim=mCBJTk~T!22z+XIbyJZq9-Cjl@k&NKf6M?pku0;Auww!tKIIDguP;gT2k zwkqbYU1|GN)({05z1}xoSKI(ZVf#xV5V48I(0~YYak;<3)f@CIT#uH>Aix$fG>3{) z#n{~X5_MrSYEc4Vvi7`mCNqq%caT#h{LDqCk^e=wMv(m#uCWn?jDxJ)$#Pj78*hL( zOSwTJQvhiM5-?oD^KhFx+0nhAjSzM`G&ae*+ z5U@9fTn+$~XKcJci+fv2o*V)a7BBqpuYi5HvtJLZvK&Ztt}s;?DgQ-6^*Y~UfTGq4 zkjO)+YE?gKm$!1_zfRKwZF3+|GVwxH%Xwh&03Xa6E!e_a&PSyU{c#lNp-%2srC?^- z9{J{ev>DEQeQ)n}iNy6&5r859PIcdrDynC5AXdfh>ES=-fVmE8d!=4 zV_y1Dqic4KT$39>%zj8FRTM_b!xbfOD!F9cg)&g}&JUG>E{w?Q6_@hPWU+XYTdc03 z-GkfM7{{qtjfLK=1EH(G@gSf|l$4)$Dr52=t{vuWJVp2q*A~U--xpEXw_E~sinTo= zdx*e(sM}L?z$%}Cf#Si)tmaG(9}uyQx3d6|ktdVlOlZFaLr~Ni6{TM*<#kQcLpX4} zdVdlDN|iLDwzY)_1YU^1lcz0^^P5m?zWH8mpjPH1gi1~xAj=0Rzt?2sU292wn*-v~ zp_47k%JEp`$z!apMPfmE3=&_Cr zpuL`LrJF50d3nHAQWALHn}qljP_{VG=&zt96#pw|=d?nL6Ysb1+^#6d1J)zJ$=1LL z6$t~*rIJE*2DBJ(rVXQ_#bu1AXb+o{0ff_DN!LT*u$iX-86SmLmU&HChrpfVqm4rb zu5ptW$N+3@HE~;1w5&dxgKE7$=P*H4RdQOXIW1#sZ`AP0CTHC4l`Z2513lKYAkeoG zbs!NSqNlY72%K43?vnK8?<_OqMiT8V{JfA5nc5!l$3y13X{_OOE4YNh(1J4^&jvWyDt@brYLsm!e+!kf` z^g=+Zd8wj6X80w837?lZCq>EWuAo-$_uONl5j_M2D#2%18=3f~RsT#S;$xkc^g4-m zQ?+iQCdb{#o=A=-Q^8fz=3p>~%!;cfdXIac6H5AG`Qi|CZ>O~OCNqrWqdbVHUOONo~ zowg$AmY3!CW@iI0A0H5JlGoPWgSG6R&g{8bD)m~Pqz=4XPOJ1I03sazAXGSXJ17n^ z$20Pc(B`iEFtOIWcX(iXIgB~Kuw?g(@~3_&hI_DRk35gxUT^Vs&%PF=?)ICc z_02rZQ}caINcz32(pX2dtm*Q_fPTb{H>&2tkR{if?lt~+Ob^54aC`eFXI(Jo;$4f^q*lk%)iI_!{=wiAN)lh@@Ds0#l3%uxJFgZ% zsS>p%i>(a>pR4W^cd23Lcl&&e1yN=w^SX2|1~T7H%sjkI)#U{FTiUQVeD6BOwfHs^ zfM1DT9FSOsg5u|&dR6<)ZIYN~bhCq~#$%M4yxz@bDC{>`o7C~cmsw&Tgb=tEwqPFww$4XFsMCM30CvpO^W$<>miidHY7r?TD`L{!tZ;?UNvsI7RY9qt1_Wg@~q0|=I55zhHRNHR?~uXRSIrKyslz&ISxZq7IxQL26Kav-eYl^DjpdgZ z7AuLbJc<2y7qRTF;)_)kpK?f`-?1du_rNYm9GwmJP%g7o>BPP(`jvjPU@(!iSVU7V#26BAmI5i8y_SUc@u$XZew87YybNbD%5sa5JuYarwwPtI_Mfue8~c>0vDG zH>^vp7;rg~t-Bfv0k=VTt*Gh#oWI#ax<~fOYxqG&dK=AibV5mTuS7?yX|aGvgph*5 zxaniPWhwtt^>ur(mRhCq11}L0g0DY(>8+^x=EcL4ll@S1P>>pgXJ$3PL+P{o@oLhf z{720*G>lZ0(bEoeF);b?1G)wi!-8TyTwP`LmSwzG;!)N1s3MECKQ;8YCqmU9UA`u` zlka7E9h#u@rhR~?)8(f1q524mvJ{^RNlgIeYO(aibRf5C0O0H&==?{gfht7aN1?@_ z?5!RTrIPy^VlkYXV@v4qJ584Z=AN|2$JD3BUvfo66wRJ8Cjqm6I9b!{5y7nZTsAf# z22b&4QX%V)8duIOUbkB}qak$HC&$ZMEKb?xtBL^_s&RLHVP&SW@sf0C{6frMUsPwj z#z)}C7Vff+LRcMp8a$(>O0aNY0u zx|B1LkdDF}_j-ZOy;2#M5x`_KC;X69>*vn~ zg7vfa2nPc>ZQkI&u3ou=()7$DCIOu6t8X~asM~AHNUqw=S7<(<(yiF^`X5!8z#bE1 zx4#|1XIc$>Sm@)3eFM`FMp2>~X_A)deDr25|Leu!U@&GV5s_2)uPnB$#)NZKfTMvx9B~Pq=}!XFOM2iBR{ZD2Ct^@7Z@LQ3M54ypQRLKJfIJuo z80PB|M7D{$Um7i`nDFwEJkgj+xZAreRW32qW6Tjj3`eqq#4x$8-fo;b{4MHdbBP6_ zh5);8u$E(k6B@(rkmwkl{<9{>Qgom&ig->_MuaK|Z%Jlpw-xk@DK20VNgN zWlxr`tv^XDX3?BzskR{gq$mt{;L3cg>va<_z+f^$jKZIC?!d&<9!?G3Ii|Fd`oH3-AxA=rHO*(Wn3(y~PG*cPF6ZF-Wo%z)`vOCcu?RMQ8Kw$aE_7a50ga z9n$pqIv;gOM)D0vdD)Tzu>967Icm(emqw$%$_&JFo_%-X{Tljf;Sx9J#Gf!O3B-`)WB5=osp6$JdUBplO}6 zDUJJE8o()Xb$EZS01))yFUcf63qmdaIXS3pyrovi9r*G5^?IT%pPhB$)B-_4 znhtNr^Ufl?k8i*%mJ-X&wA%Q)6YY?cVzaaGuV zr;m}Z81xc4fjhpaWbN_Jbi{{52uRTb`cL~y)&d|R;0Mp_&8MOXke9_2$g9J}h0Ooi z`$`teRBg`e^0Csyek&0;gMkDhZd{3p!0&c{htC1bx}Gw<`*ZZXR1v^2W(#A`{RRg3 z-3gMH4uB9<{onwi0?B4y1tJKmtOgSp0kZtWz1Ad zf7t`-7|M2e z77S7PU+ykFZmG~IfI`~Dh{}IQDq6_<3s$f)dIUAos@^p3;fim6h&Ravs+|g@) zPgt(>Cen2nEjivYhoz-hG%h}gg(Gx~eTf<1$RxT!bCWzUAVfv^NXOEo~A#TxzH z>*5b8;e4JzJRmP^?V#3lA>kXeS`*j4Ds}STy`GhC<^hhN2?~(4;l>378Ct(RAHi7G zzwK!YRU=5@&6II>LJ#;mNK3WeS~pz2Z1ILB+d znWn^x2LkD#Wa5mpR0SD5-@Lz*biEU{?f%D;@V}+`0JzJ4uUv)cUm6Fz)5Rj&cr1YT z)bpHRdTql7oVVAx|!m18CB%omGNtJif(sg%yFJtaZ*iA|OoKvQ-uQ+!a;|ifscExVv zembJ=3mzEjE$s~Q^FVTUjo}aZ2;SdOb&YHTkagIv>D=9TSza?shH|9XZgPIu$KVzQ z-z4=XClXktF+KZXFet-)G3(P^p`hxFYuidjp>SZa+sS{{YY@;CQQtV*6%QCf8wRBQ z3O$Pl-oz+Sl@2^x`6Lz)cWgFM{36YN>kF)muQ;r#29yUJSP+>5t=T`whDXu2W2MPM zr@=={mZS(ZqD>Vi^{S{jaMp&A#iu3!cjp$@!KZNKl^d8Z8@JVd1ZgY-xe;g57#atG zE(1>UMf5KjXDOf3OgwzVjl1rx%AH1S%vp)b{h)1oipmw+uPEnq`}&V+Kg)&SVPy_nFJFO=2y-1dWo+(;3O1;k&t)G9uL&W5!z_*(isX4080Lf}JpM*4PnxOf z`v%h>DT%12UDQ>BoEdzh<+qwidLvH>UL~-$a2oFm1cUb?mR2`@FoQ zCyI-S^RZz{4Tt-Ye3|`La-fP`9WKwO1wOs;h`-b81QF}jrmG7akEaPfqQS)aWw=iu z+8e?ObP(5(+^wb%6Tcd}`tu}UBk@Kv?Jlt>Ysy3M4Jatd(f&=>EJ2H8;N~yNExcJReTe^KH zeWDpWWBz+l;WXJ_W)rIo{#k08<|gj47X1y?byYs*;Zj5(p~xK%c7WI5Z454p`#CH7 z?MG~33RniT#eb`7Dko^ou*wdVR2vCfx@~pxCBSPOt3B!==&yH&k>A_Kvk^kfH)_7g z73~=$p;cKMsfps)G8mZwuY^}e6}2skFTW=8zO6Si+FL-)f}Q18D|-_@e=uUy*>?Of z^gFv#GAr&@TlDM|wkZ;ZMfRTa2+b99{AcN>S7BLJ8mH{nuYF?6e&h>@*ccziIt--s zg2M()fK34K8+t~EVkT{&`GJ&1vWoPrbAoYgNy~K%krRK;xnscUCrU%bhGubDOYa_| zA3jgf4yns!gghKpCE29Rz+RAOm%2+hUqU8NTGe2@D=8w{XK}bE~0KfzA)Y@|3t)r zd)rpHFdX4K_YvCI_zB5B;*=0QnUr&R#`M^7g3F|x^3$a|TGIx-ckxts($HSmp!c|I zQ{f643G=RAC~}YmND|q#ndd_J-Fz$JUVF!o3@E(demfW3xKCOy;)Dka5hquL>R$NJ za=>|^dehf@WYv=+tVCNO8bPoMcVj{n>8LkE<%Y??M*7a4Dcd}6hTM^9Fu`2F)$a?uSsS+@suk!iO7LG6+{|H{0C|pFr{?>0Fy`V{o1gSp=hvp@eB#{Q z0L=}JAt|e@PAD~^eA1_BR`0??yfGiO`asmD$e%#MZ-0Q6rrkb1$+7;in|9^$LG#Qh z&ZMkDed61cnZqKeO7JMw>DfT0=8GjpCiDSZQ7*5dR%pJy+FWJZhL+4=yhrr%S?$85 zU|p_9*88~d<^trss=~p4r5`9{fKyq^@rJ6RCcl^{EHfWR|4M zSRO*IJsK*h_GkrlQF1}q6I;Py9t!zdy`-{bKS%TwoSW(9zV7<1-Q2ef7&k+3r z+-^|DbCof!mGUCJRci#hu*3A2qG~YB9fb!4wFBxaT&ZYkj0-f(F;Z~=v#u&3ICAR@ zqO9)u!|_&SKD5lME^83uKBBaILdS`{!{}Fy>e}MGKhY&D5H1b#;EkZ!vvGt@Q|mF& zNNo8@@=^_u6t270`nR-yEa&D|8_0RQK6>}*&l{Ry04x4YM|>ta#O*JNx*khg^Lsto zRZ|OCGtKaOLge23j!8@oL*`2FUp>2;@f(wT60dw059Kt<-w*Q$9W9Y`%8l+WCS%gz z=umhm^^Y}++2*o0sg&tAKF!A|5|gfe=3u#74LQb;LSdHMnQCx8iX;^^Ha?uL51(Vl zW4Dq5q&K&40`Nv8a0(aa^*aYtqI+9v?mF!_S0;Yl@Tyf0W4Yd>yT z&Oyx^vhOtERSxzF6=A{$?y~N!zm<>`S3q78iBc?#sp(FLSo@(4zvOpO28ZH+qqS`j z+8_9QdCZYE%Exzt6L(+bzXXC)|D)0Mzv%M7=!m;dFZ?%q_H{nuw43-IPj8x!vOvmA_S*G&w4PCf!2A}y2Z=6LQp`{U>S zjW{|z@Ce`EyEB5HD1|}F^G?a*$ji4f;dcDfd?m6E=dV`)18%@D^she%K}a4=Ts*FC z=C4NpBMJeNHoE-p&4r3Au21!EW)=pJ-bVXR3-JI1h->840qNfv{LBU}GfYm;CJ$La zr(Q|(a=~U4@VZ#dNTyVc=bOHnz4;$Zuipr z?+=KH%Wro#*p`(VubS-$_%!T?<_#$V2!4aq?H`l5bEBA|@rK3mK9bF({CVu|vB%0E zxk!zX6t!~QskonxUeI^53)yMw4yM8mo4vn}?ZQ?KCV}j9JIim&lE7tx;ZkJ8+c|;h z5pb&JfVZnz3G9^0`dVgAlhh$(4mGG;CLpsv>uref)?SCQtbF{8o9)vzp}TL*N-8Y& zX3m^sgr@qFFps>5{{UQIu67gjI8Wiwr!LQsevy5SgIWCh&q?My&7!xg{$Q*cjX9RV zS1J(>kP`3~levt2VF?Pi|7jd!)=hVhl|;klXqjJUWTl~|EWitQr7It$^wx6@K)avJ#lEvxCZpWgN7K3jaSmQ-u zyrq}z(0dj#zd3&!^%H3i&T8JEq$@oY3#C>onGaej8o3<#C($^I^tq4UG!^Qe27MO% z>C_R;YQj=lSt1b@L>X(&Z(3?zghv*0bgWigJM_D$P-KuwG>-dm;FMCj_+<0MkxjAi zVq9-?*o7f|nu4%V7u=@zq5^AD$9voWa|kba%+n$5M#DRO!tgTATPuaLrR}oMQi1+m z<&~%MON;|-A#%tyU%tSppJNEOFQ1R+m@Ha$Ew_Qg9HW&S{iPLNy}|o6=QF2!e4hAq zzP0{9TyODjHK%v0=N`VV!DsP3HjDh;XF0DPo27Wa2L>Jsaa%Qbf{Pm~gf*S{ z&CO1yjAG`ye`@1%q(@GltSl#ZvD7ZhbX~a5gxni!6qnKV-ERK$uaXXOj29uy)#PG2 zxXokZbLmN1ZYjTLVlL$IHZoh*i&QJ{b}JbZsxrO<_`_Yb9?JL()myvm(TCu#kEjgE?N-mYjW=WI*6s{kAC-NA_i()#pLhc}2VZ)9?NQ4DvVy~6 z?GL)NpXu=Wy(o5N1Y_>v^>vc{(oo9$tC`Cs+}E46IgclsgToK6^Btz2ez#mE4l-Oq z)jZxwWvrz?B~_+b5~Vk;UIzO3o0+qr9@JhO*w=WwW0W0?hZlGTk`t717+6k9TrD=Z zy4ZZAs{9uVaO9|R&wLt1XFy*VwM2Qb+X8Ocxz|x5E=WEL{w(ueujS|kh4 zvwO4kVHrMsvu;S7ezW_j!F(Vg#0S}#|I7NGlR39%6yv6tZU+JC)HT<1eDfAav*)l< zd1CI;v`0$?o2+;*TH9WIpkG#}wgw2&gDGIB7DcUb7kTYcv*}8;R85at5x_0=H%BVi zYtkc!!K)#eXn$o6_qNHSt6PbQGT3u9g4yISLF^Tpdp#v-7(VU%Dv)qMOK6PdCkKK9;zsUlLnSJD+iHWN& zmf6rdUFDxj8s~8PR-EJbtuu)ReUD*|>v2B?T>E$j(loNutnK|=mOJ%N+&l(?q8PF9nq z25|L89OLiJ@L2177( zg`!)b006hYIyGg&MtcrfHh1yZa3~s3Fy&H*d284D`Th_UPCZ$ZYqvLGQS_xw1@?7u zaYsT?-TId2>{n&Mv|4^7G_n2Bv2q#r5!dM{2b)iGD>ca*i+%iU6Fa zgefL)uVERL<)k?JY|5WKyFT2qvlkSfluM#xE8?by5=(B!jQT7otqB%A2llWn>h8YH z%}U3HE^Rf@^tGRNYbO&L zAur2b>p;69F|G)@ZS!fRtgVVBhMF3WxUG{Tr)4pu%z)JtH^Bhf``c5p!fXwHXY}%p_Fx`!%BOonl!U9>mU$2pV&*6 z*tvNB6X1!dVD-(0=IBbp03LegXkcFbL^|4wC*#Oh3oVv{@!PfB>vvOBO@X2eDRzA{ z?u-9W-H7gYa`hj#8wGxlHcL_WM$M?GW{754g|YsFuq#MX)p?R1jk>h-zBb?6PaIS@ z;(0z*J2aRuYtfU;T(lF1?d~c){h(6Vj5Eg$aV`}ox>sUDTN!mC)AIgAr?lDCKyq{H zDJ~`pPx~A|$2}yxuvilVW%*uA7o-FT`AL;iNm6y`t#)s_r*UrVx?R1(--ZID;r9&S z=1$MyeO`^KK~oFBGnwfz7CR?dw@qY7KDq&q^%NdzSAY5b3CHNu%@7e8Ybq?6vQDbU zM$AOfQ}cn}kcM`{N0V>T5sQi!v65^H_TF3fa8%%y#4-EMB&+oozW!m}^_Bf2Ug8&V z7EhTRk;)GpD5?(Oy^PUGqfmnW=6PN}0f{3pPidtQ6I< z#T8Zq+lK-ocKtWjaeK$J+U%)MMF{WH#oB64lL?!DOSq+nUBnrJOjGPmTB0-_%IKY) z>D1c}1GTdZhs^8rR#y6Dmwui})vrG$pEu~#HoJPA>*Mkhrg7%k_6r-Zf zvGey#m4jmo8NOdWKff=3(2{q&K%jXoyGyGtK>B#pmx`V3T1nYNNSTF?y=jZ3&u5}? zxOOqnC$$A)oKWj+hvT`fP1SgLC;^s5wL7V#<^2&zxa4}M&o}$aQc|y%RP*6YY7bKb zX2e4PbC1ozgOvHe7_|L?@FQct51_h;5?|FQ_a@kFbl)A#UXL7%LMzucdk)>=5y>_j ztY-UR8-grqwtS}nFv`OD1~M6p=`>%ovg1L`)sX76v+87I{9$vDuKn&Df3xOIq=tff zQ{4j~cS}9^4t85qT({<8(;a6XyIvP@d&-|Y9TqYbTTkuo&Oh4E&7Cb5GuHoKw0(6{ zl-<|pV4*0WA}FoWEe%77NSAbjbm!2mh)8!g49(EplF~7BOAjsG+-Ju3{jG1^Z+&;& z`^R;$SUAr!=j`6+?7h#~mN)a;W&ba zrHFWQg}Tsz+GoNNp>jVjdS>`}*(W{-wgS>BU5{WEt;73-Bx7$?r>s_Eub1qt` zuUKM&amDCL`(a!CG2!<*&gF76!FHGHR7N-MCM&vT#V-|#z08zmx;tvbcbdubuY5-5 zb-Sn=V9RQ7hV7>v*#jcaC3Xd{4dd65NyH9sjP(Ys)pNSY!~u!ino_`2t2FG*Gu$@3 z-ToA@l+XtBFbQ~kYZbFzsLH$l%5Plf)PC$4ADNT%6OJrP*NeLT+Zx(gF^9vZ@0%kH zMddF}5-4y{EiPmRyi{x(*o{Z`j;ole8SLwCYykcLl5Bn{r*WOB_RcdEco9P2;ITATBI z{jm@i;>~Zw`Q&}pY)*C~p<3K@+pi73An6$abuRT~KtQXrEZwG=^oGSm26P8N58A~e z@7;LJPg>y)04*ku3$b}5`~F5S3>QA&VHteBOK_BPJ50nE-yIoe|LkRSj{D@W#3*~{ z{6Q)VXMX*fk_~_GtYo>J0~L%=jPdA>okPrreJ8_r!Qt#TzIpeZxPMr89iu-lJ_l&# zxDMQ{lmw4$BAk5cn4yXcr{ul5?~EJh{0!I>b3RJDez45_=b&2ef)K5mCuLsMMT^Z9=zc;V;Z-of>8M=`|YP@%2`J z(ZRnPptC#AhW?+bF8o(y545+*NKJpUd=&xD-j z)fr0*bK!!Uqf@&;c|n6P=I_iqrV9z<3h@at7uHuCKLjtw$tAUgY3~qDy;An}JW6bh zTBWxZ?{#vfDtyI^I*?FiIoFe~G+In*6+p(N_dF8l$mjK^IGc_5=MS4hv8*WxWf74I z?N$m*Q?B@Kg}9N(6x`gWjujuo$bvuhk`F~?-!6MKub<9sjHliJO$PPiR8a>jrtp|3 zAAVqpe1GQ=AA&nj%^2cn?V8#@C2$CtOoxsb62M(Y4qs!rCgc>aZR(sE-XqgHB7lXH zMJ7(ZunJO?hl`UA?612t@$Fm>4xn;^@>LyyU!MBa?q)n-|IWOvz@I#Lg;xRa5EgZG z%nco(jO_dMV_dl+p*2ePNnnr(O!n;dNyXp?(lr7Y6(1FgEpCC#;y0ja=QdXsDyCwn zQSqa_eMEthOlAqXceX1?;vOZcF}!(~{~=HKi;%HGlGZRvw%WMBEd{T)I5{kpRD23z zk9ekUXffL~Gb_{kIo%<5sFDT{p@+_swi2ilx;<4U&)Ci7i!>*>9hE}tt`P!(YN9sn zrb*+GDZQ$Aj?{T8eV;{iE=c-*V*eQu)?`bZ%EX^bIniCGWyyn5M!dRsH({cbdjKvL z=*g_M=_NfA%Ii^fMd~#Yf62B-kuKa}cXgI4tDU!4`OPKZRL*aE-FWh)9zO)yF+SE( zA31>Vdqs(Q{f_w|j8UmEfWh0I63m2Jw{lKGt0yo!&x66%3BATK+ z4i|qI9QX63%};uxU?Y2DFjW{JO-s=t>NG%rZ#W`G=g>hR!7cw4Zi{by?y`SCSCyjo-WnjA}q8L!^Z{69m?@RKLEIJ_|M~06XEVp zeX2?swm*%`_Zxe9U6B6z;$*jupTr!fw)|=$e!$=MoXXXdWQ}0Q$cm(QvdiU)g>h!! zq-6OUJxOyOa3BpkhW^b%J(IXCM)1&^3&*H=GtDgJ_xot1_L&-F1daVOr?v}k@%Vn? z08K<4E8ayP=oSqRtZknZhLxtbY^OnjAI)tY#x<79HBN%2vJWu>47d~d@`Z|DZG!qASDg0)QM)I zQG(3!oevc&cVJ;AR}TOdxup>Vj1aX|d|CHVq~fM;5Wq7!UsseaOV2#cJj93F`7I8e z{2y|ei}=*G5Cv4}+oK<)iBfo)=IUMp>)|tU9GO$EI=>~08O|18fy2IFn%IzWR%Omr zyKns%|N5g=w}{(JZi|dRU-lY@OBb&kkhY8~8OaFpv?nBh+(USJitGVNw6eeS)oI1b zV%dQ3@5!8YvU&QdSgoy{_mOs%a8x|vQL*^Z0SuM@Y1Lz1;G0n0kRc-k0LTtSdFpaN zWdX?toLvKPR=^Nm6*O`_rV3ErAHrn#+xu?al)4$PWMC-G|4vRA-Tn}J zR!aih8V?Ys#6(Vwj|CrKEYMTE`0Dr>3HMhr{-w+k9GdS82D%0x%>hB}AC8RY^%s9> zE9cVVN6c{2zQG+i45*U86;=ESoZADp06^|J3L@Z0+VN(YhXIS|zz#LxNC|6lBXQQr zPp@-pr#epPZ!wYicIohEFj0v8WUZd6Fs+rYBxSrV`V^Bx?jbX&wZSq?QrUNQ!0BFsK@wz*4qm$d{xSYmF+AXXVW@quiFmJV&}Cex^-^|8`3sa42L=-REA!vd z-r@os*a@4uUuR-kUckNX5(4a$H=tE;L%FZ-#ur2DFFo;pJ`}CMt1VNc{DQ;vn_Zi* zXXwq7M?8|usKgR*ELOdeT7_|&C>`kB%yhQolHwH~n>cdBuKk!N{6maj=c~?&91nAK zSwk~0qWRAZ0PTCC;0H|N;Xp>n%_(foA!{p>*A?BVp|4lhm`x=Nbf&SY7TJ#0C7dJF%ZwifJI#t>^XRPYBTusdqw8lOZR7vZ*eoFSjYftJ#2=d z@ST~SC8Lu6Mm{R3jI)pZZT!lFiw7AY(@JZZldTGhc^!d#EVY4lQG_ktrcwp6*C!Qw z;)A$_4|$>jCe4(wb;WQJH2XRLT9vNyn&wmM2C>S$jW;uAX9RwF{TW@BA3Ip$H3;FpH;; zY$+wWRJpkTekgRlCudP3Lo@+yGgYOom4+;&a~mgj1vGoIt~VyaL*Vfwj&FA|y+0Ez z*9~P+FbJ$4in<&DQqZ^fo$U!vLatZ`63H%x*^y-6M(w5mC4g2eNLnq;ml@s@be}gU zTg;a~ev}f|w_<5==onRM@;~_5Y~m3yx&nZ6-&xrFp#`xgD1j(%wlH$htU^`nJ{xdG9)hwt;7a&&9XJ2Ti5SWiJ5}CQ^N$9-!RGYvYgR zkJa5fjj<2+@8CT#ve75-BbIhk4i7NA{6%g|L%3;=l^w+3u08wQ9D1d0)D09(e zHcoPewWwNW5&Tu)8f&w_HTFsiPwnB8fw+!B+n_C}^^dn3!S@Y4d?NfmIafB^54=wx!5i=W=xUbmto)DZ z>ec_j$i=`;fIVZ_t>F~U+M};)KBSD?QcnSlurz@X2fGnlz|ILr~KZBLh$$YOB zQOvo>KBs+}Y^TL4>SzECN=7XGs#ES@11QE~s>b;h2kTmh)m z#0Ad4Z}ze$E>T{KUYf&Sx8yyZ*yK7r5F>yr#Ya$cs=a>G_|JGDnV4mk3Tz z!e1>9*lNNFXNGq*njAiw$G=c%(HPF zI9$(mQAiv-X-()=grLY|x?cCX`+V|lu*nfd@oZoJVZ1<)F3=|4kr6kLiB?Qfn(iCSHuf*JushFqcK(UA$G<8>>R83c3zg6kdv*yGX~w= zTx@oYGW_E>VDOQQKfyimHBZ=xna#m%54`ln7Vm|Z$OVU4{ zo$smZlIVG)iG z{Qz4R`bTwA5Q71=?Wa-fjgc$B^S`;YdnEq)w?xqs9^pJkJm5+ZHQk&riP4?ed0@E} zH{{C**qVE{gKxy;-47`vBVJUku?fUSrml3C_`EGL~~H=9S_=_bGZA`tZX<9}Y&DE+El*^2c>JcDO$ zoy7@5p%qL16UxLPPk2fA;c%t%A20k)24+Q;dO*2i!ha?p3!rH+pNnmLh&^=?*nWK< zxz(o$foY0A1#CuM6jyxYZPzVF88h$*S$GdTQbj{O0hH0w;xc3pnB_HU7G%Z0M5GXR z1$azWfqBNQ=PdRvHr34}t;m8%#w#F*3 z{oz4={l=yGmuVXjl2&zyL>7yU%UJ#BUrQDaUoE3MVtC0$WP|eCjTyZ1WPv{7yqK5 z4BYJV3xC@2*YW<@0GoyS(1bQT*vV*3{buygj^PuGQizm#$I$MyaZ+}nkct9EKK`^( z^+OydqyNn9UGw{z zLfV1R!DMcR`b>(SfG=ow)zK;<$=NQl3K-yyx0F2wPxm(=_Ld@vYy;M9lP@3L`P^0O zu9djzB)_n9|32SRY;?zuF7EpKqDo6&GhJ>gi3dex2sGdM70BdhDGiwSpQ)UrFg)M$ zE3VBZua= zidd#>Yn70^&OFRlrw1t$pewHEUhqg2#+>>==i}NF=CVmfw`bP}jk|K%QwLM^8>eql zLthu4@*d>JrmSqQRlr)asQ&arBjy7~^uS5z=pSe+zU5Z`_%CJJGsZ(``5(wOFzF!0 zJKQD@Ootw5e|v2<{>cQ5eeq7*3x_)WJMNfsi<6C6Kt-raBW+o<(G71;8~J)r?n<_qWGt!h_rc_?`Aw2$Sp| zIB9j~>Vj}y-VM64==#{+pvL35Hn5mk?Q-VGh)_v`J-H>6o$Wtwba8(|mD0)JwHWz_ zXZ>WShdKGx!Sfv;SewOTj7)Lfc#anK8eUITMQc;B-cl72wl9d-+PhgbM;)7=mb^Ug z`lY6uezkB+O!A%@H)-(X0lCHjp!cOu8O3#QkmgdeMm33*pa zpO(s6zWg({EBdzw3z_a^t7I1*zqZJJt@ELa@OLPj?)#aaZ9P^jmM)gL;;Mw6zIE65 zZE*JJ!B1)v?AQ+{8twn37xUT4)b!_LrtRM@9ZA6TTSZ!JSaKi#R`aP06__vXSpx@Kf4O??b2tgqV(QE8q}pM)kHuji^fyT_gCz;AjuWzS!XaS%6v@ijpZ5LEQP zCER5KyPvh@_jWwF`M9oo7JJ_6SlaFoDg4BeRQyg}9hqJe(yu z47w{JIi}`=#fSNDsKE&{sI@`WG~p=gsIWpV|4QHGy+kw?>D&8aR@mX>9!%1(iyrE{ zD{9N|d`~F}-iFLM`7Hf{K&U7!AH!|o9MqxQoYQ>FpxHjn3>rv>`ElfTsD|{h?QPM* z;1Irah3#O5)E&@gl_q)0w&oa|fPZTNS}TtrzTd{I8T^D`>RT5y7c;-UZ;w8Et%6y- z=5#L?3YD1xE-2+qv8(i)PJ1kBGPGK^BbYpv|Av{?x@33uh43kHS+o>0S)iYqAImphbv7#%_zR7N4mdbPYSgga{^wiW+vH1RM?C4ny_u3=> zfDpI}DY2`%dOqES$voMZMZ=VcZl|Yd-ccT#7J(`vge&5C78hdwjeOo{&gQq@!!lub z${txGu>4UCiSURlgFHVrN!m+kQ;N#4`Mipi%VXIsqY10=d~r#d^i8R49{EF$S%EE} zogYc@a-wBu@XtPS5Xdn)CcB2~zVo%0TGLwb#U=F|hn6MSYzL#UQ5Ax%Qs464n^T`gex|Le|&oWQ|urYYkd%RXwd_ zxCBMUq@#-kQFRJ~0!1zFug@x{9h5)WM9bBL>h>g|+kY+wQ*0GDxEhAwDW0x-R;CKW z(5wC+C6@H?kCWNvy{xQ!50%Ele9vpSP)0WH0Ltp35tu~pljyfuHV8okt!d6t%?oM| z28WohSv*;ffc}F@u1Xhwa$6n0p+lSGW7s~}Nzg$DX&Wz9OrzMeHmPA@c#?+AG*}4I z5po(Ou*`+LYu5MgOO&ugt$I@Zw4*OkR7y9bPyN`06UcX>UBy$yS+mwIYdFpHzrC#^ zaZxU*&R+vdShXy3ULmsCZ`kl!jB3zAPhB_O6u3FT-{j{b)+nqSK5HdeB)_uK@(eis zorqgJSknfkX$3P3lwmES=Fabl}c27BFX&vAo;jOdb~S)yl5emNLZSAmMAH6%w8wy zL4y*<)q-bP5q}q$qKClsYvl=SQzef#pr?4krWZU`#-D4t z742@OW~`wcWav;)_$a0_eI$gw*Y#&v1Owe{nM`S+1Zm`ISs@jDL7-t}Ng;Dg{k zEk&{WyMHXloUYol7+j~(rk=OQ706MC%V<4jMMVy-Fr6tiB4x{E4!1cHL)yR>9|M0p z?2pg1U4Ejd;XGbrDEPTAGbjB7 zv*k-o{2*QnfBTqG#6Dbjgx=Jr`=bcvXbaZnenSc;F;u4ErVkGU8u~Z_$9-uGz6VOw zpa_oTkgOe{8ev0#;o(801|9|0vdWn2J8q;!@%KP2Mcc}hZeTO_-gQcnYg2mB!@c42 zssw=q@Z3zcdU;l*Ddf7XANJ~E1aKhxN9i5v%#RJSr#-xX8MOXRLx`6GTa`k%0(zUs^gd#Z}G}F zY}%fU_|CqYoO~4G$r=EgTfVU>yUs5}mW9?e8mNT5haBXLvrzY09yMPe%OlYIir2-0 zIJnzBz%>nN%p@r&db-o4?s&&e7BpT~F8DFVy)b+Z0wwnR3Nw_WL~D_}%FrP{mS=(s zZhis2@6C{vBMHFZ9eXC+Oiukq&Oh5{^e*xn8puyMr=Ze&*d7bngMUW{=G~`Etmv*D zu*F3UDV6%?wJ34!Qze~OgO5H34+Wl~0X4_C{X>v9IWWXi z--=I<|MQ5M^$|#$OxpC3gw3z6BK;f`{zwQ35E7v(4Tu-VB1opjP)C9m*@0i67N<{? zwyG%yBqKr^m1Fi#-_KN7em8niFlisQ7Ly)iBAh5AXN@GSg+Ggb+Xq~*&Y{j|V73ov z8Y=CyWknd%eFyg&O&>t(OypbwSy?>;%0R0%qJ0cBj2a0QhOrU(=!AhglZsz3KH!>x zg&P5igGy3oHKSu_r%z?_KH%WPhIuNMAs$xXho2RYQ!SE}l~d5r_Sj=N2QE8Y{Q-OW z$HZaXnM85z>_;KJc%M{888g9Qo%Wzg6XLZuF>*}r(9cHCMS;O;dptzFq$+2Dep8QX5$-1l&r&0r** zuMG@o*c1f?vmq_@nnk@nFDf*9rP0wWsNSPBoz3wgA>F3pNi-EFVvvxF-IO1&zn_pQ zge4jCFO@y1BXfVg3O<+DxyfFTLPy*7jYnaJ{P=#|YdQboO(kGfH(jHD;51u|fam+&>)K_JeEw9;Xgg&o=C!7MeKEo*vO&t@{(XS*900{E8-0N6DEnj>j!)#5W9G%6-J zuHo8i|Fi`UC0e5ISpBElX?FFr`r?b;A0pKSr1R-hTEz1nax-@I%n9>rnH@Ibd;4C@ z0p0TdA)67veK|_Gf;R-ub81wM^8p6m2Fe97X=g|wW!I>zjNFz}Wt3L+XYAI2u(|>G z;o_|xZeseAe;L;w)h{I?k}!Zq`c6I5YnVx3104WWpbP2t_wT#7M7$ue0;9XPOo8ho z!M21XX?Y#ARiAwMov=xeNODA`GKr_B18hg`CYQs*6b| zBp_ZN3!xA>IK+LP0lIncUMqMwj`K*Q$PN&%E9I}xiR_T(!rO_CdXY$Fw3j-VR`EA2 zj0K>Sh9E|O@(~*GJ7OpxT_Dh;lqbL8^WzZ-*aNfI|IG0YDK-rnp8PMRGMYrpkNhrd zicb;%=wNtesHM-o6~M)t@20A8tudzY0C^WAKHXtO8iRV*jY+fWp9 z1>P0}#^Jm$D(6T9#-Tzw29S0ri~j@sG&IXmqr4d8@HzJ={!UHExhUv!k9tu;>%2_6 z${>E=&eA);d-PmQ>r@)B@P; zg;VS-j_xq@Uq=oe60y9fBv?C>o&S{hfp=`+r;lM@QQ{kD zdzXZ5zy=draWT;q4oGz|*UArN`)n4#I-{cm1)vWBmHMy{+c#D%w9r6B1Av1$x#&3v z5D1j!V%u*p_hRqU?q#-+bAcp}_Hl6}$$WkO>-LVp2&xWEDnGv)-a(Dx3?07mytNn8 z`NFpf=myQCswNAcdi2+t(K?l8qd+2HT--E}mxxs5o|e*4NEY)49% z{qKm|Za)Hn$oM|>+&*AAb?vjA^ zC3q?o1Fu|bdLb|o;WOJxzBb3~BW_+~Hnu^OAk~6>;I{86n;C7~Y zFEuNx$^JNMf|jRMgF}O3)(z&W8gkI3tSk2Olxnq*$aO!}E4Fv?R^lF&^=?JpI-clt zh$`{KrY^VVUTvNU#E$F^M|AQuK5+3#M*^1oKe(|VxGzryp1*P~*|tsOXgk?SR?-|% zj!+_y->M4_H$OPIh>cO6tzxDy6rQ^4rz!YTV|m$FRe7?hQI=iMCY0OtMaoF}GQ!P~ ziIz71n&~FH_cQ6GRkBh;0Swwwa}*ZYWX-(uW#2P(r_Mh5C%>s|eMLd=G(cMc6hFTa z?mNqPYB%@DLLlg)Syxe}aK~SJGn`7={8VlxtM@gFzJ2?K-q;{T!WYm9;R?{#PkoGe zJ^lGXeYX~8nqKy9mN{!meQ8_sU_jkc@U|gY@LE~2^z^7kBcKw0my$AZ@kh^m?^B^a z$c~p8p4HP|ci18sqy57H7qozF#A>6bUYTDJ-?9+5J9-XbcWpTX1|7BH0l1Z7WZ2Qk zKamF++~sTKapa|;GzvEm-wfXl8wEZqLm#tyu#g zV+Yt5Y9MN}KVG%NxG~O`t)GLFk*Sl%uA$a2G-N$pL5!qZ#D@=_R&Ym?*doii(}!D= zh{@cIiJq4Q;DAkiqDDc^vT~-&!%$4GtDEIvYu|5IlT~xVTJ;@HTO{zRxwOT_{xL%v zDslt;%ae8cEt0uXcqub8Q*`Kr$3Yo!H0dDOgR#2)Uqy3EJWdEA+{VHySjqn2boJf@ z%uQ;YQ7a+@|K%&^v~i1hO5?GtpN(G1=f{3nbSItbV9U)ZKBk7{Q@~`D=k{nsrtBO+ z_KMJ#HJV*qR2P_fm|C}Wxj)EWXZLTuA--{|gNDruRI71UNJ=E`p6e2OfjKsNCVHG+ zj_;M9q#kd@;KN-sVxhjvcW`KlOB0-StYCGvIO14zyH&>E>yZKtW&6v)L9DGyVGmAi zo!Xwcd>B$b7CYkNEkuTyC6|_rh`DTJdy1;eJWt3Nfqer|DmysAp#n0IJUHmsw+3 zAGlSJQYp@FNNzW#sy(617T}wDCO^3w3Gu1Fj&Z!bt`}wOz0I)RqR_vi$3o$I ze4TN9aYJ#bku8%{eY@L5B-mlO0OQhQ-i0j<$6u8iYn*WZ=Sn`l~@UMK_J zf74}cvGKbwGW8geCm}oZNV@K2=&}HEHBJ@PZS>;h>1dHwK|o-=SWkcB&~NI15VeGG zTYVteO|Bx|TZV2JQj=cLJN8y!FA2Qe9w6&%u{Y1H7OzjSx~5G|!+-N9DM_+tp5J*f zrLWI6!p@E{8ut~cK>0Q-p)48}9qY7v;}I%}@v!fgSZY)x#8mKScf`TLfPZlEy8SK< zZ9pD4KwU4&xk6)+cN^a!l5mmQ81BB9BYR;(2%Kau1 zW`hg2=~!7PC1~k+IlxAx@Y?cR>RRDm)A;yh`O^l~Dk;a4eJJ!1bLnFOusv&G*;Gdx zB*?Z}pmJ+Osbi*2tjFW_gQ$(%(MA^j;2bs0?|HwIIbJHrFnfgELcN%L>n)#rQ*wjs zz?|2_a>N}yR+g0HsPfH`uX{2vQKty*Qk-?}&?$u|eE8BA)A+|-S=vr#KNv_;*t|aU zVLqPSL-FEaZ!t{-k@6K^=x(E_)p&u5c#k%7;ZB0&hmZx;n$kx(m|jEJ!vVWc8R_c4 z?7xnv22GX~18aVyR&t`JI4X*Kyuv1{IHUw1jK4Sz4vzI~EhPC;>)wN1>?gco8hPg{ zE83d1bt@}RXuOh=S?R$>;#y_V#Y&q2(vpdIcqfJyv*mBz5Vo}mn7Ri&pr$cRj(4&2 z3&~ksO^!|VQdS;UQj1raa3WK}5Gd~G_FNKNzZw|DvRZW24LDAQ?UAZ=`S(wLuD7>gd9 zBo5DUEw(f=1(VxT|Ev~QK!6jTH;#frhb=^{J1-88LpoUI}6QpG7*QgX1@&a6ha4WN%d3L3{G>7td1k$jFb)ae<3sbJ7Czh__5? z3PA3ruJs4Cj_>l&!qMl<^pz??$bbmO{4b!+TUd zhzP@|>3L-w#I)z%2(>lk_iAH2miZB)rg|QoOMA+9fcCS|)Bkb?2mRJT^qkID;1tU& zQoe$_7BE`FF(kIt0|B*0;m`;Vn5HSi+Xu}GO$P10dn)z)EispwqD*rx1HgS@IqOBl zs0c6VmazA=o+CHmGIO%pceH|@}nBypqcX`v+Ya?`L+OufD zvQCTb8FFI)O89v3vzY|$s;EAFw6qi=7fzRa#`k;u1frrKNez$zu*}lY5GDsVDf8 z#&4l;RV+r*O#SB%bFhK=KmMwc$+d(vTF^C<(}0 z$-`EhUAK2zV+Bb&j+C> zZ#WzU^_Ke2U9N#Ql}UUrUj^gU@E98QDmxLufl843>+8p|bJdIc`{vvctMZO8t7vD) zhgPAEj${S-`Ct9S&d!h7DP;l8*Bj}F&1lMndAUmTBqrC}7qOdo-o*1b7Ftg&%|oI7 zj4GN|yJ=BTxWwQS)Aq?k%>uRR7`_q=A&grmz3HPobkgR6gGUA21&nh}mkNKJ2JEXA zebp0)!oQRl=7UTXnI%kXfvzxZj`W z*4g~jt?g?&H|M(7IMZz}tJ9Ir!a=%Q4JQMz2rp_DkY=M*8oDF^CW&M2 zpvC-Ae@$b&H76`^DuZ8Ew@($?UqQNq<6##wfFUOa-^uXjqTkAesX5fz*7G}TNP8UL}MvsYpi{QZfXRZ(l3wCEp4Zu6*--1^Q}ctj1g z3hOD+yIXfjhZt1QNG`^th;#ZV@(~wmvi>CH*Iy)ROIDA zM;i8nrm7A2y&9*)_{^GMTX=q)H{|s2G6RZKXrvUnDG=5J0lPhO)t9u4yJa3TdnDL! zG3kjdlOU0r6CmO8`w~rV3au2Mg2poB%0 zH3F7SUYC|v0B$dkxPd@ysc&)lir0(b4nHwClC$Lgnb%#}Y}Iq8 zS&lOSYeW^fHV1)B_#y14ceI9(kz-SOtCqXS5BpbGJ*u>~ZZmJ=u$ItJyJpaPRu@(5 z)SN?^2}HJ!GYA><0ellt(})V`W?QAYIrxV$Dux4mTlc$BQabAc6K}-p6jay<0H`*2 zx<;Zv*~Ay|ngkUb0xgEp!_l_e^V^0!6+=l1^qI!8q)Bt)ksEr@B6IphQKbl%q6zp1 zIp6i7#{`VH2GM>SkEJJ;hX7T{&kWBO_FHcR*W1Smg%~{=CF1JG1*k|69-E7f!-H93 zRQ;Vkv_~t~1}+Xo1DhttVBX%0nmg<$N?R6GW#h1?LVYFFO~ChPYlWPWa&bh>D*#yA zkwGia72L4SqMV~SLxq2sDtXK$gK~G=3ZDL1)V%UUtMO9y8lIX>Aq+$YK;EQ}KegCk z-U>JOjc>E7!=>ja%@6o@Sd$-f=ylhroTd~X4i0l?mpi{giVVn;QA`kr?KkK3$qy12 z>0$@D*m?)2m@=vLuMG4f8GA=_IIgYsPX|%VZ^3KD|J=*$ zlDq^!)FM$~)D}ne+zx%$ZIx@+aK<_{PSOJXm*%!KI@xHU7u7e7?;n$lWy%GxBxi}E zIPqCwXVfZX?HZaY12>)6oW`+lwPWBU#_)VA%B`}sDd~V1tDClu$^L*M2<-S%Xovch zkLN~S3K`pyRC2BMmbBm3!NhD+{GPZ>Za^{Kpa4$Oci7%?y_WRA&j^D!?7qjml39qy zy023yNSHFr8oD{GZy$u9m;Qka=zxgqz7L#zOf4Ln_5n|ddWe{`7hjCoQ=i3Yu7(W9 z9Xj0HlYW<+Ws1@yZ`ubYEe|YJvkh0*n{J90kh9l_a~jef8a8f+wE>W#SO*GO3Dd9n zZatDcaWwtFQcU^aqqLM#K0!hI2lv7*)uxl=^Sri*6C(YVvT)*t0kb4Js=w(4u->~TTnHhbGc@!{n8;m9sj(C zGx_m6g%E!1Mg%}ai+(^a{|dYJv@o?^K(+;X|x##fHbySIv| zj1vbRDG~-o+)*ar{dI+0V$Sgqo@MR(mr^58AV*@yPz}Uc@3Y33pSQW5nett~yza1% zG5Sj-f(##UAG{%WdQziN)NBPGysYnG0e+D%BYS}WYjJ8XQ<-HT==+gL4?xE?nT}nx zioLRm-{QJ74Up!3S=bW7M03lN)#q=qx^~**-Te!QesU3f!gNj@)~~o`3bssp zaFa$V<@W&&#H&AH_R9^J!LStK5L^#XLI@gsm4>FXwN(+ORRLv16;ba_PV`LoO8kO?*9 zdNb@RrAe!@WpaMrA$zkAcotS)9%TrANnluIBs*~wdo&_k_sbry?Jt@*7%FEkq|X(+ zZiH^*3Tm}R4S^I{Zi_u5Tf2tqmi5JqqBJpV7#Lmj@93IQ8QCU19F~N|e}LIZHkow} zB^C9+FE@WC&IyI6Vk&AU$5T1zSNyQqpi@%xe*!Y>Z3sbPCL^$6&Gu8b6}! zW#`8zssH@GEJ9~uOJKv#fFgA0N7LqIJU=Tj#+Yhh#{{B|CgA{@0u@(AhEqYHAa0qi z#-fSlp_ek;fYH0lzVGH?4Sqoz#ok@-aN6cNX^&To%w2#$!0`lQ*aXn`+3h{L%rFgL zCOEH+z%Pyxv;m~6H^LCP7mZ*a)})nfcniOEEjR^~R4xGV>4aUQT-5xC zq0YBl!~CxvH24aI{3f_5_e_CJ?QJ9vZ1T$CoSGFQG*9I7N4gVu)gn_zBV{+m;kFGg zQMB7<6vRkKdo)w&5o6Q{s|Lh#u8v0`J{vOip){a)m>t6I6plBSJtNii$Lz155ZvHty!I2XQS5tm_*Ja$ijxSRFiwa*Aiv$cx_FoMR@?2ZsR15|9pjp6(y3tW~^4 zI&^n#%%f>7Hn-iLQ6Q@5NYcK0{ldLc8G8r>w{-{og~{=egtJuWb-oVMcn82wt4$7_ zLoK`bfmMMjlU_hg$~lTBE^aoh!6DXvIogyCn;w8S0P6o5GXW}2wef9L-3lBfpqi!R zF`84UZavzG3IHUB08cxk}LWec5`;3wF|GuD4lanHrp z$n`~VHGTX0e#-pjb)ELDgpM!GHg7WLr@KI^9e6)Z4|gGr@J9Cbl<9hlqVYw>Q@FqT zlfO79c@69Ek9V0@a%drPHb>tOl*tiF`yF6T^^oMJ7jHzX9B&#(a}ak?{ayJiZ~(eG z%xS%~Lp*I8Aw!VO-WLUVuuMvzbRLJ19*6ZudKj)cOIQ zOAlc|Dd%SArNeE#E2rS2Y@Blrl;kg}e8uGz#Hljd@~E>;Sp!@(enNN-FTD22Otz&l zqL5v^T)iO2BtQrYz?+{xHfkwmqE0;e+iK1d z>?@v*;qfsvPUg2YGA#l8`>zA1}30O!-*|M7XGx~h|NETS6 zP6y=WHN-J6@;v5_&F$5_d_|QTSll|&(HUbMEylj$V_?GhWL-GQ{D}E5blRy2j8+h? z_TgYE&Ww-;%kb>&`j^jaHa{=x*V5a zo=79NL3LG*jo+K5pF1Ezukj>_!*kBw?Jol`$F>Zza^kUuw+RGFmAe>5E8>a=Wn)Z7 zMD0#WczQ?72Tg5clV23+Qkky4Rf~ZNO&nnEB6c&H_;@zK%PQ*m z9kPgsc`&zpY-$GfJlB!yl&}v^)#k-xd$XYLDQWD*qbV@@`Ot-p>^B51b>x=UYSmB1 zxGnAV;=U6VIO!Cq79LQW1=t=vn9Fr9)tOTFBFuv?vzL_5YbYCb14WOvB{G3y=fst+ zrpFp#6^5Bb{GuKi>?^8`$MVt4F$|9F)U?IgTR+Tt){N|Z{=yFZyw(2?~RK;{ni-0{(#!c<)TS}8`TPGrK6>J{1TO+?Uq1eC!fVWkQ&$KlP zv7d+ws5a|SHo73EAm7~VrllQaU*8N}uK+$}+ae`xnPZI_+mZ_{XjkmU5yWBdj8-XM3aER- zKLx5a`-6MB(z8Qb`k7-Z3}TF=#{h>H9{XZKe&T2%Cb%CQa2B)aSXf7_k@JTm&Y@!8 zW-BW;--VceJ;A*2rw@<`edco?(v+HAm0u_yj=tOfc`c-V~Z4gE8bQR*) zOD3MF3y66Kyz9m&cvqwUV1`4j8+@>U&rm4fRp8N_l{K#Oyf8YDR{MNnZhWJhj^lD% z64#o~uAV(xC%LS@;c#fV(B6EUZEM{cTcAHTqT#AE@s+5>P$L;f(?+*YD5NaJ-TV*S zk7RvSku)#iw``TjP1Xf5`{$4Bh7f_ee=%fYsJx(5GuP%mis?0!uKDG9xoSi#y!w08 z{QP1u0lAl(oY~W`7o4CiCMO@S+0Smv;Zlz|*&D9#PjJlCR#)j|#M)KqL_2PVE=5Ba z#}Dq~$_^6C|8ZV?2h*0%u~;=1?$}&2y||HVyeO=)81)kP^FFAKXLVZ$`)x*u`_@W1 z7T?1_n`&R$wq_|hym5z#%8*~uRp7Ne1epz_j}?oWLCF{se8l$p{oy?OyMS!eipCp= zwV5N=dXybv5axhiNKKIOyY4SUc?mc2p}`eC3C+@f{<0HnkD1 zRkF$|yf-F>9U2aOjyBE8Ok=&Nn^g!fvNRL=x@kw*G%*O)_x(JMJ=(l3en zDPg%ATpq{6={Z?hbs3>+e0p{-q zHg!0u+I&!1%^CWk?ReXVz&%>tY4f}b_f;-wvvU0a21XGJ#woK@{Gm72wo;CPN2N@0 z-|*Md0=4Yv!Hn^{GtTTD_jW_i&v@7!zK+O`H5JUeC^g^YioQ%B5{4tqAdu$~Uo=_Q z%6Cf{31qEw^Q$`=Wwln;Y~(m`IR_?tw9$%J6{TQrzt%%=VUr8a; zgaB)6?kj`pYMMWR2mu0wV8PujxI=;lcXxNcxF&?)?jC}>y9Rf6_lvvh9^iT2{qNRR z?S9$Xn^7wCo z3lSo{x0jeP^5GdsnQRRJPtw^2CQ@H`_w-(r?An_rCPFy00sxU9UBl7;`XSKrnPD$2 z0lWa9+D~EwWc#V3KZEy)rP^dko3Jh9hNSmT5`f@b0n&*=^o-k5FH!+=T0xXlk^du^ z|D6UPIo3ihX?OmA@M0Ubb!#9S)`IeHSBWt1GXQP@Fh0*`?i)fu0U0YV3ZSp&A+fB1 z@-o^1WG2ghXl4BRm6DbP2g*w#I$8vH&vR-a5fHW)d(!643&{Ye38Ehu#Xm0v6hu2j zjMf($a{NPcOZGbeZ1zM&(#L4)ko=`*g=7RY{&N=zI=JQr{)v|?PsupDf7xaJ3$S9F zpa12ExHORL{2z#X!UM^X|HJC%mt+6Sk^iafGif^i$_N7}*2J~_D~4wxeE-9Xf5-;L z`1VOG|En=l$N&JL|4Q+H#PYv=Gs3@`G4T2gu;hqq1*ll@1~lH#ZJ%ihhx69JApEbZF+=EnnK+bP-%`Cgtaz4lZ2}xyx zt|1VA76(PsKSc;MnXZh;pl&o`^QD8E_~h$&#`bI$43i|665<8cRARPYKXm*h@$`De zomI6xMVC_lkqQLYv*tfB72@die`M2w{H&Z$?EF9e^0V9^hMk^ffO+S(yh*M)?GvcD z=^330@Ige^_9Mjbw|_p5YUc)W)xl2*juyjbBlDbIc#;FeGR(`Dq>M-l^}70h(B}~InXvFZn{P6)lPSx{(JDU`<-Q?f zX^@gh&666E76I24VYx;kG{_lTx1LgQ$B62o9v4){_5dAyOUp-bFFx_5v}%BIq_nL< z$(cXKo#Vj_dUhfhkIC^#4VNaq1-1UHI5uVZm)#V>)EmWgOnf4AZ!!Qp`(A5o&X%|V z_n%g~Xja9UOY%MYv3Pv{CtJUNb=bdt5HabwaJfF56HW9d|52>`gd|W{J$)<8UTvPS z8FUam!F_XzU~~z8ySg=jQ)U_DZVA+5oVi<@51mGt=>vP!%)CUcLOplDl8ttC!X9(S zQB(kwX(>HJBH1;DI|uu>)|F9e<6dcw45BY>s^<#8lVz2H^a*~ z#5wqr=TNv*J4L0_JA4OjxagpJL-X`W;$D z!-xot>JB=Z%LpAB#fsUKIyrn(Ppcly;n09akz*o~o?3;{>YNRBQ~N(3f03Up1a#yD z{rUAt*lIW#AN740!edk2EV;I4ba4Bf1dWtZ;CEQ}V%^MT_yDYQ#q7Kee8D9mVWEYP z#P#_d@zv(}%HAs9d97UueQuU$>` z?Lo2owy0%rB6H)$cO z$CmQ~sL5IV7?d0e^o|M*PxvR9F@=QR4fz}7vh&Qacl_+tcJJaLmje8>P`$+nlk16l=pXY&+Z9Z!@*; zT)MY?vbS;?Njm?bzU4k7#O8p#vlhHk;b{)wg|^e@Pw4{Oq>h+Z0;7%#)b~kpx6IiC zP^*NlmGUZlh@(4!buOunb+orb>YF?}A*)E6)h|X{m_TR3)89{zI^&^uuQn zN-il_=_@$j#XJhN_&;OOr;Z}F`c#jUs43a2ni2A#yw(^B>t@kEc_DwQK5bwXq_=Pf zxJZA+vOkIrK!OqBfy^9e7A~dfq$zJ0sN7{*8?;dVysxQ9Jx0mg{92?70 z^w@|lklDx|2hMdNDb(t1xY!NJc29C#Y(5=w0mNlhZ%?z+dR?!oF1-;w`V$j<5!i-F zBnEkl$}KT67WE)YQ~!=F$Ll@nd9hRGRuZLP=Fz-pC^RL=KDi7PN3$ z&)?Xqb2n6gt(DH+mTV^|j*U8?H;+gX^QH4c3mq!ZD=ptQ6aMEsd1h z1rdXk+ZiP!uo@~;_JzuC_VV3JN1dWODX+!?l=yfQL@q_8cypbwZ)Bbp%V^fpY5CC) zWww@bBk_6L7d@4oIq5lF>)qpjtMg1Em?^f?hEWwXb8S-zswuT#FzODZmsPuD7YV!{ zrq*E^p`YTJ>7eG+O;tlz8*u$4?}hlPMYPskc}?3I&0&J`(IBAJS8?dQTGi`uz+V9I z5lOjffpwaw_d7NOydiVtM}8JO&PTImH)0DOts2xwxmRS@`cP*xD07V=|PSL?3o_n@bGo7uWXdR#LVn5A}>98}1+q$qUl ziTqCf2;CM1yAJKxSkZXlVnurKJRqgW>y@p&%n1)&ulq2yn(8N&*cJK15C3YtUBtqZE` z)s!9;P`2{c;RRoOisXh_?HBagvEN`zi;%tX%sf(x(sa0~o#WpzE$oi(#VKxK@@bUG zZe$`&yL<^Vzkao4ySrtYVz3*v!bQ4w*`T|wu^bAti?H-aA3%K^;JrVIVy$+}y$bQc zfX<4dT)wEuR^@bjR3CQ*n97Ta%U)SS2_Buh1Q}6U zu12sbhD-Ipjy_-(@qz5@H;`dPsm_M$=51~ce)93=lRvzRw``v2jstA z(9iFORoLW3J+En1%)4SU;3+uT07Uf4ece>f0Pv0Dg4zMtKCmik%?v7T5u@l-s}zD# zawZjkzuh$NsMp9;?^G9*P-<7NouybaK}~kvvS-!naZ#2*q;x0?2vzE2G^H=Oc;>dX z@}$hzC=yZvqwrcMhTp3pOjbz~6V)|uxlQ5I>{198M#;6&s4Ahm2baiUX&U9<`R;3r zG-i{=-5@I`(aVQnAD;4XOdnrbz2$=N5_;L(2dujxjG3Mc`9&MBc>mx2 z+mzA9C%3nUJ{iiZ`FZ8eo3v@lxaM)|`w^MhG)l2}GaY)F;+XXC%LJKjwb{5!%*cmdhGcj8(9LkdiAYz+6cBW+_$#!oKC4jpL_5S@LA;DK<(yc(c zv)jW2CJ{W3oJc9f!^OHs4~r#Bj-=}Hc6D0(XT}iK4~kbw&thss6bxi}%j*Tj+$l)0 zjC8)5zw4Mv^Ue|<$&$F)CWFT-5)2$KOuV_67?U!4d?4*zyA_pyKGIo{IuDBu`4&x$*x63O{%dPS>4|la~q^8(1gs=wo#h)n%;E`jo7S-gT0`i z7NcJG(?@T)Qa$pj3VZ4kZR5eXurGwVk3ZR8G?i8Oaba zoe02cfns}3Pu-TznG_W_{DGq#{{2<8Uh()iYixXP(baxRqwZLUM$M2T0L6A3UYo97 zTtozuQ*n3F=9MzU(?%d|VIKPgGra}R=FXsz{p#HbCDf0)91<3|?(zWFck<5%IkVES z6+K=}kIQr4Q#Z5Mpo3!iE=&)%m zkNS}}q#5CNjrCz8L;o*!N+nZK(*vy#^>2d}?+dZd2mVlx^^cFr_9Gq07#_rX+h&-= z1Q=v(Dq8>O)p&Ec&}svYgY6=>lStSk;K`YO;zBywvq_+o#i zVFr{?Pht*nyOUp_!hgPF3PH8nD=!}4=U0~0= znV5qQ2KQ#hbNR~+_m-?UBu-XiNFJ|!2NH8NlS6s_INAI{gsyQI0I?zUSW}V;3J9o6 z%@=wPy3DPo@sHD3;7&vjsfqUaBqV?as^mCybv75WK#H5%$BC(w=L*e z?W|rjvI6khf=STks>#aUamg31A1sY=Cp|Zv@eCKOb8ZqhU+}zmgIzgCf zpabkB2#4{Udd!xCMGKC2zYHwYNJ2uwqAm(LyJWWT!Q}0kND{H`_%TqznOq6J+0;iI ziAd6)KJk)z>Fw~^X5%$>*_nQ9Z2z?CQ6$yVJHG5%N-fokXM%Bb9Q!`1=Krxkt;+|F z$?6~{*y1CLm&Hs(u3WBiI3{!4=kMi4628dcw;8&!0s`&lY;yF@_Z&DJA3k;ec!O|( zgwFz8FrMnMy5woHkbuQ1p6v{wkoVaXkEL82;jk~B-J=~%S!xLHdNEv@-d6psF&omnRQK#qYNfTpyyuVL;Acib zb?+CpAv+Fb@Y7jC`Xb8ZqmfB{#1?P+l{KaxK$fE20n1{!z7gvm45$rvJF^!&?CQEm zmN?|reEc85C%F;iyvS{)?7KJX@=Rl*%XxQl;{IH&YzHVoTs|L7EC$fRMi+L4!e}zY zrlw04FB%O@PtPAfwG25t;~%NpbY!d*iPLIH-rvaQcWw@#P#JPaWSPy!U7yA?2Y&Sy z7w&<8!D?x`z%-kbF4lB=HQna>)V}_o-Vrp!B~!!`S%5pCM>E%Z4LE`cEM`CJz18yQ z@k7c=*N=0>YW=H^$i;gjoN30@10XLy5%IQBhgXEvIy zdA;%SYL9VDhCx~V)ig5MfhmMqHSPEBPcMjhW?O6&O`>-pu)7zyOFvidtY>3|7iD#FR zSv3!o=$!3#-CYCZ#t>t*piz8WY9=G?1o0rDug*^S`T-NXza@9rKZiItU zR8Q(o+ap73w@?lg(5xMeZXFaNdN4WBw6tccjmAjFWW>KsLpZc}UA-*{<>LDS;rVF6 zk>tlHM^8aWxEjI5jiYT~dv2QI9wQn(UE%+c1fW3=4Gy^Lyo{t!^?0{9Yb-9Z1kyZT z@%3BTTv?>UR}SV~i!MD*cbfjtV3|P_?ZD}f z-C52ylf#oO&amW;kMHkmk{pLAZtX8sYLUvq;3jK7My|05H|LvUhik8@=(8Yt*8#h6@}a zxS0}IoG!)timh);g0W6#jH1ZX-j)zj{3FsmFvFDdsqyGfaH`P)#|fA9;L>6-iJ>#SOW&fVegyt2Si@LWn7$@01{<*aWt{|d2w7I zKh??_C*Zbur%jAkkm@Q^MaLcMar9Z~Y(9Xs3Blm+i8#J@<>LqJRL}c=6fwL{-P=1? zBk_;mOjR%}DuXKs^5%T)bO?hZs^!a=Oj5`G+Y&OVPF62>Fpg*xU^HyrytI_vWL;LN z`GAMFGp@6*3X9S`o<@@P{gpEq=jL2*kqc-l28h7hLn4Cb-v0Y5=nznUfY|h(@Y=jrU*NSn{Qps-loSDBqfThV&d$}t z&}Lq}E(Vj22L~8De=<7a=s|~)^$rCpdK>|#b%1obku*J%C-MPZwcYr{62$Kda99NT zADXMozx<+;)NGdYMR@(TO#3?zRC|*$wRnp7T-DvuBNDbbM{qfnT1*;nhPNN@<9cT7 zJJ{AaPGHvO$^o-}p7%x46h(3U!?;}Nw8J?_SS%&BB>S@l%U^6g=NACi@C)8#_=FOKR zqbUI!pAow^bA2of%=j+fbYZ|U(2D@>O@r%$7=&T#JY>hfu2^cfZYpESP3Q9D@`P08Yg@Uh4vGy9RJtue$9H z)P=7+4(8!9MKjlQ0`E?x`i6KPFMG&XD~*vD9W6OH9M%voezCSpWfv@B9)v6Ws zI`>>|_nS?pJi^wZ7ORUX#8Y{=Im{-{dJR(AN6MBMn^(l^IdvFOHCH(;TcP(1)O2r*N@ScR{IsV26o$(AQ}3q^}Tg( zbkxz&5jMLmS2xn0o5$uaDnz$1Y-yAS`%(5VY0`dZ)*LvEW&9w|u<-T@!-0fC_1aNT zz*%R`xOFJ{MuhC5qzkSj4qqkem*oM9iaEl)*{r)>~9tr0dMv6 z!}4t8{@*_pZER~Ns77A790XZ(^=v1%Bjt(zZKEo@H4Mp8v~@8WRo>p>(dFD?Z0u71 z!Cyl9aDy>NYV6zq++M(+wN4C=JpS-gn?tW5v)t3g{RKjL$kSuZrs z8I-@tv1`n$WI0#|207D-X{Af znEa(nd?$6}(%`lmwQ(Rh6Y&01Z}9GWsWu9#<1}o(w;h_5-jECI*b#%i_5x4VqrLK{ zMeS~C+AfULDc?sg20}3seuA}&32)TCY9D{llhLp`(6!X z5Y}#J*rcNYL!ahv+t&RlyQ$ZW0>+-dvNPkv-N?)HR_wjUmll4Oj@1O-&v{%@nDx0} znZ~K~<)~d3?JF&~_tt&t#cCUq7boS3QbBE~N%>XHsdv zm$o;1t@J63IeyC3gmwrSsiyYh-(J(;A+Ucv)GHn7nIvQEZd&R-3}amNK*Pdwb04jy z!;`?z2Ycgo#c!nmiX2|ALVgZ=j{-uag{`UJXGUo>l`^SuFF&GEuAk2JY6rr`gadlTP+Fuk0kwDiJRXHkW zQ(1S6N{0;FqZ*og+TSvt&O@aO^mb%Qr8n(&aDN}8rYwp!)j8tqT>P%K@(QYNW)c=O zEl4{y*twG|9qj3B;tuEtE_;<*kC$pTz9=!`VA8wyfm&H}H98u5UabA&MMYZu8@LZY zP?dZB)d?*N&v18~%D|?mmEn4KR#3!=Z&Yj(p1)TYllSgR4hI(3L z+9jl+B^kZ?W2l6|gk-COjWdUt)zX0R-_hVHC2MU~rOlE`4tr$We@R2HU_#9%+_P*=h6(306xJynzDNCmXv_5D+;wXhC-BX35Gwwa z_MJCzG<9-TN2e=-eW&O|LceNf9u5SelFlaL9(PaauK7bG3*ADc-bBJ{+GXiaoT0-U zfAiI@={Jj3r9XLU8UCH+bYxVeK66Pfgl2Q|$y9T$JJ9g07NSUq{wy{ee`ckzA?q;6c&l3D0Cjc9-e%=F{ z(^lbdS*22L{IL;j*t{BXYCrX_l^=J%(zeObaOd4#>a{eac8_BD4eLdZXLmPpIy zlvtkK`!T`)%uin=hus8*!v>^ndd$*_7X;+^>3OHB7iQD7ww@8zsPU7@b zaLE7{eIg%CM2NfE46BpzYcivrh_RotV#ivuzxQ+~#!?4UL$7P8}pUhe^1SK0KXxGx(OCfGXwdo%}Cf(vP40Lh4~2 zqGmMb<3AjpY&fu7q+Qcig^-eSvO_w~XP0h%OglX7bv^SZwq-g-{zLUj6Wr$PcF#iR zYs2Fwfp~hw?M*8AsXGA29FwnFYliFB47_ppJk^J;P}Vz)(x34U6^MrW;Qr7#5}$sA z3=Jh0gyle~tz*x-iUganqkXs|Cwi~Rp-x^uxe?BX{81t%la3>)`0!tHimUv=4*{n} z@f_a^QrsSqH}F==A#OnW!k;4zBRT(4=&r}Uw#pE*tFkiC{lIPuRa4LC36IW?aR+O4 zPCyyqUoDBm4gGnY-_T>AB^HKz=rYl1{n!;+!u$f(W2W6~VY(__r2N<wxk609jS7~6F>&P%(InNGtKjuo_#Gir`%&Q6)QsBrL7as_gCmo%30S|Z0qmk6SNqI-T8M_;m~%qD^MuDZ}LHGcm* zOxB=uZyi%RFptsStayirIMja~ug^PrIHQrki3}pw1D7x#U-;M8{?cCPydKTa`LXB@ zSPgG~Pb=HVOJ*os0uMf?aBvDu{ZbtPBbjEkr+icdfil$xUV;;u66OU6xEO6oRx%I1 zniaI}UPVx&k@Uwx@v4r)i_k^Gd1@9i49GY6)S^3oxG(Cm+DxVYx_;YdrrUW z--H*2&y~2> znQx_$81QCDmy5%PGV;38CgCkd?D9}|`BK-Em`p6&9ptsCTph1wXk_zBvV~>J>iT=r zePR$1y65H@m*jw`LF}yqr&=B~V*R<1+1bQ+x*?61kqm7?@KQf!-vN5WCng`RmRgeI zb0ga_G(s`RL7L{%W9+y3qTe%+{UoZUgy;Q`Mi;lseH~9N63z(?P!V)%Y#3^F_gc`J^DO%$YYQ! z^$?|SHc8Q^oA!;qQ+#Etr=r?fsAO}J)B5_O9`A2Mi@TfC?zM3dP{6du?$o~O52edJ zip?SIbIBj9Wv50l{dyzRUT$y5)uSW;VU?DGB&`FKBkw45Eq>q?s(;k-B+dRpaDu9B z@k6ftCK@DR9RT!BED~D_WKZWwNPlSM0dYohF%JA_Nn&(jHXFmuply;wL20{CC$EPa zTBu}OIk{1jp726_)pa^_B9*NU4&ZDLTaq&y)*WiC!oi1JlGn@hDn6A5QCg^Ynjt|lLhQc<BF@Qa&OCyvcKzy95 z#L5!$o!cpkFmdWwU!n@vPs{%72*OWd69p+@Q|@PdaP~VhYD*YNBoV_H;^&1>ZC~ZR zQw%=W&!Z2mh%$x{Bz4*LOF7b9f!X$JtuU4&6r(Zuo)G#p0>`v_IYUc_NOcF2O1Su9 zJbAA_qIMqp?^z6`Ttpqj_R=CAJRqc~k0%=W*L`~sI!;spP7@0}In3~AX{9;jq8H%8;e^h&j^Q`FN%HU5cQoP&WX7^5aycX# zb+V6ei?=@ZF%=Si^Xs=^Eqy-+bpG(}-5|bUx7a~z8$6?$Sx?64&WIM`u&AK zbB{0a#_a|-ajN6;K|~?N%?+(P^K+I|hLWpGb+#+7*QrshTeu6Lg_f2D3qGEhl1M{j zY=TS{k-ZkdY2eyVqHC|S{W=Hi$=2OR4T^x(i6c8l2-&9X6?YL{rnQ>rRoU%iD#hd{ zSeC!s&`KU+E=zH{Ebrxy-OJDjxPC$fQ`}S5CqT8U6OsN1Xk+INHP0kxeQoyMId%00 z=})nA22fdLZ-l5ekJ|gYv5>oG>sraE(8FDM%jsk*Q+jgv2^YS-oE*uQV$xqd)Mk+G z+zB!CZ~40^1nJ*M2AbgNNs7)YTYaWbH^E85pLqC7ug^}k5Nx+D|2voATbDVACe$CX`5q zn3JHjcGORiy}LHzO^Uv2IPUEXymF~WTO87Bv_D()2-UykNN}-YmOZ-H-|L8f4Zz;~ zLW60)cK%QyNl=BlD=*YMr1XaT1QFWw$Xx1eb3nQHyEulBV(`hf>z!kip~d#HShZSq zLEI-y76Mm<29>s(s?>*=6(`w5?c9s-T zJY=k%Uw0yhiLDFK{`;0aM3Fg1v{Rua)i`Op5V}R>#c+t8LjDKp57E4?vSqBH;)LdK zQ=unnSPfk#?drNjFmvsxjdDvQ!4a;emyXtE;-fO(J%#zH4WL(5lFV+e3k?z`-#fCl zxpJW{lB{ZZ9NL1>de?RFZ~~bVA{u)%e;qYX&m9jYZf&ugtbKcXp>J&?`q=gtvY}>s za>46s5MFzii~x_|C^C~zJ=J0Oe43^8Jx$&FmGUakqqo*lrje^lb61AejBP}E4-U<* zxQ7ai&gs(rU_x8y#9vEw2FF-JYX19!Ev+bziTB0B3^ZoH8ci+`)^3jvU><-Y*sHD5 z#Az?ycXobQNLeHyKc(}8|FcG#WWd*wfQP{orUWhbhshH!0~}aTf4&aYb$ZbyAb4WU zkX?XsP}Cr7>sx1&{Gj3V$jAXQIxKD&iKK13*8ezHb+k01ABu+Tt%U{Ed2+7)hw$1N z*=mtPP#jyroZ9`ZYz3R|#n>}%IGOd@o!&O~9eZvsZ4A;x^>n0g#l#ucU1aHFJX{Ah z;T$#?>mmnEBy6P{*>38O65rjuZx27)00TuGYR3RA1S1z(LfTHmW;k`_6cx`p8m*=V zgT9ztD>4MaY}RuGQe%+5ypxkt2sS(J`n!Zw#2l_gD)z19CUm5;@`Z%0hH znZhiI#3I$o-lyb->r?Rz_-Qw+>sJsEAm(S10BsLh2u;rH(S*jK@|7XCN>1JrM<$Cr zpy)jAdgul`WtYR>>sX;CG;WBb`*}{Q4}#tqt^Y<{vw1N2NhoI;#*gg0C|J@VuD|bkD38S#vNVuk7KeF_? zE#Bym@A-buiu5a-pHC{^JNbWLA7$>>(@ueU6FHD20QX6o6I=f zpP>^|aX3oscd42mC0AO3v?m$XX4?=iquyIM^p99#w-;-gt`_R&I~Yll#P)+Kgn>Zn zM59FcYWY=_h29WuL!(OlBnV%m+^QL;xr4b;VhiPsh! zuXpLtXvYbaH`yISM$&U-eO%6`LjxC}|HT3{r%Lf|j8kNZr&($!MCcANaRO>djI2=9 zAA$qg=G&dTy0tsa+Wul&ZNK}8GiHc4TUQXE;|qu>5N)K4BvX{$ftp6G%#-);-?MH0 z6fPi>n<4p}a@Q}~n~DGYT`(|?IdHZTpkwU&dJLn{)@(Ea&elX92*v2~atYw+_9*B; z{9+F%>v%rWo1%nr=>lb1_~(4K9}HbncM7+Yi)#5 z2GQp*Oy(SU|HG!XrBuBx<(jY<8he>iHbUlQfT2kIy-_-SXgoLXczGua*YbYq#w^kAo@ZZJ&(s^ z+l?HBKp5l_RS9TYdL$%ZpoOXpmnqxigM^d;f`LcJX>QJ>QdtsM2)OzS9B%GC$#WpK za8P=mIv|C11Qgo-JO#JoH{Q_YHbi6Da=*Q{#cB11@dr~3_Ep_s1v#$n9h+_fIs$85 zqFF4I8xwxP+c>h~h!OK|MG*i&#>HRVzfZ-fhb!+qg_*hu5dKt&Hsts3K%uTIW1BpL znmPyuIY;K{!>ZuR#lXXYv6@m!5gXlSv(TQxb&leCAzjY`kM;4x7vN~^FOvJy^qS5- zDcsJ-fEHj!PW0ZKgSNi-e|(Q8dA_qZ+tK8Hbt_j82Piehixy1Bb2%%Qcx{hiF#hTc zW_KP1;gg{v^H*B}75|?wz|8!eE{wqv#9-j`;7qGYOzu~1G@&A_9{kM3Qn99{z4;y= zIQhcf092r|lpaoWeXfK?OKc%LE9o?-Q{YraXaa%)HR0O}{UHE5^Ud%j z4SbO&it2Cx6hu_3+Luy+qtU-7br12LuJ{IF_vnSjhpggz+y*zfQ^@?#Z0wE=Wj4FI z)PjP_k?#R9AnCp6AWmOOG7K`HTEFp4r#6ptfLHJ-e@f;Usi1fToe-jX3FO1ijPvBv zTiD#sc?*^gNpAGQ>6KSRlD6w_~_9t}oM2g4#9^@c=De)jdhm*iTLKbKa%vO%) z{9SC!dd2=b?8Dpl+QaxMo{Jz9PGnq3ZG8J(pkPj|+~Ng^&55?8LZ-$7lvMVjo&{k; z&ck!}z?ms3lOMw~*2)qd4%h~u9*Jqd5x}j|jH{&;fNr$>r8m}SU-jYIH;tb{p%>tw zD_Doa3oxyI!2u{b6O=+h%LA-475*k;-Kk3;QsJXP&bxco=6j(S>a6r>04WjA9vROF z1Cyr8+!>U{5B+4z#oEJ-4FKqb0CreCCnTi#bW4$je4(gy$@Uiqs}5M6$E4%6T;&lE zO8TEa$`$YM@I<4Q%ZH2?5_li=FD-A*WJoAVX?g3**&k^XFy8k>}WC_@UqK*rE+ z1k!!th@w%8<4#=dkT5D^RHX9o_{S*ewoc^tCkkuh*E`BJaXmbM_C@_aX6gB}y()ad z?D%R7*`QD7h2i3U%hB-$g(Q%0x zhh$Aqs0>8${k!@6x9?DATi=W6p6qgrALH0#%9CXUukQ90X$T0*6=I%l0$7=GEGz3{ z!mnQ?n+U5N>D+H+E69^MBkAyX?>;Q42uEjpduzAD_~d14vV8FjZyoOLfC{pf7H~Ki zG=t8AThsNgmM@|)OgJQZKYuakKrx#htw);AcMqpwb9T1+RG5oQ766{5=Jh`V=pKuN zL3TP|ce%(gl-L{sA9qO@^$G}wjuzuJx}JJI8gYoa1p4c2h#C&8cH#9z_zWh;Gx+RG zNOXO)5qz=k;E6hBz_^v*OYsf>hG%qd_yhsRkR(gi7-#f!0 zQgT0wIdXZx{oLIhU9jMY2~;pVm8m3$7LvUnCX0=_5b_i^z^M|@z26d9j#qr$PGCZL zOgVaA!69T>0dopmIYq9S#B9dq93hh~FA^{f^P&Wpm`vJ-nz*h(Z{gp)!w0Tp`2GF^ znozYRlhxpEabm~`#9*q?vrW?EuCfAqBeHoU`M{aXe**AID+22XFI=Qe*Zvwqvj%80 z!_Q@H!+}4_^kea(3aLEp?Vl|$pR7|=V2EMQ#~(kG>(Qj7IP3|@zg_YNOf$ZyGF9n6 zs_YO1sB+^h==T|;1*TZc(S9`wr9MYMFan<8^yl8FG(BO1H!DKlj9HiUqry4DQ z8av;)yTIb%X*hyuQY;{&EfFzeAVJr2phKfc{*ivZA1M=L%)AArat>xl+51C3y3n<|hKm`K9SrWT`k1mI3 z0N`oQj472myL@>cwEI5|Ciy>m`F6bd7Z%kfz#?6* z!coe9#v#Fwk)c-o8Hz|E`q}WkL_&!fIsnkh4n6hU%=VLe@ldpMYAmGUK($`6;J2Z~ z!&MvTHxs9O0xtK~I1DfEm`udU?IGY(>zHsjp`MM>i)kPH`W$4vgRqz_F+#jPIX)W` zkJILmz*H{0x(=s8*K#-D=v`=S1rTUJgrpj6(D#WgOs{KPMY#Ps2Qm~Gc{fd_Sh)!@ zptV?5CH7QHZv2Z4S&SrB^K2eB{;8g%Qn+I>UTVqqP_I;~-m|i5y2&Kl3nV3aR6ng- zJ{}$6<9pffPFDp#1rGzD-}-=~F41YY#AP;12!Rp~?evt+2t|CnYx@ZU6yc@AIClNm zSYI?JQjI5h%UI3Ph4yxrGf(O;q4>e>ua#w;^1*h{y9<2Eq6OIo&_LlEUzJykdNncJ z)>3yyYv;Svs_g|TfI)h=JKGbfwv^9}SVs!MGdkZ13fbPlWcn>jGDgrI{o*poST_|2 zt>(KtNEW7te_&7vDTIn#if=C$Qor}xi52neW8Qahq`#iC5|3|f^-*sWEjR2>mC9Fi za>=s(>3+L4$C|EJSBJqUFE0ABx+feQbV-#-VDFM ze@fL9+e0M<`@HF*s6rtbW=gQ=EXm&l_Fe)>B#|Blm#U?4S~K_hT|Qz$!{@9VQg{@0 z8|NefkEejZUT_fz{mCXHAtkDKTcce@&mfpwWGXEh$G znbsf7$07cRY}xbaa}6{!r;=h_VHhhzwxOzxG~9=**%NcC$;`y=L?ni0-6*ooM)0Mi z=N|t5A|M3%^CQi!t&rf0x;D$~%hSkW+qtdDvh*k07EVH&Oa^!!_O8x?V|U2yZ3~SP zj4tx}7G!xOormr>xG%Lr2WGm>M#{vv$5{0_@>Xk`1HcbQ(@Fb{XcFa9NeD=?#QZO; zSt*a8(c-W@QqHI@Oth$-C0%(Ns|R~V{+Vzgut#2)-S%|ktIxgTuiKwO=n^Yz!3}8Y zfdh=3pl_*shZ{DCjo5Pd?si$RA)0WsU7OcTpl)BEMXF_7OjB3M;^rcu_RVfT^XdiR zZt-s<5%Hk-d|;k^t78YHtKwe5#q;*olp|9s`=V?+4s{g4sFbh_HZEsV?N4fM?+J;! z7n5KlpFSv;IP^DaA4fab6@whevi99K8qgA{Sco2n8=J#0l0}IlO<0~BX?|dRwYA4} zuMHx#^4w-JSF_uO1S0qy=LV0nL%N6JWtE{a!p>Q-p0?hjg*GBjiAZqNzHu_ zN8a9FEasF`)u@=H_(Om5W~JVnsfPUI5TWP=`*fk(dOJYMLz~lOKsP16Cxv zwQ!$Z9E3VQl;+8o1HEe%MHyM-f*DsfrNVF1UmT7`U|aTgkFM%=Za{k+Zr!vzux>6& zke96BtZtfhx#!lCBb>_F0QGKnk3Qv+rke^aM#Vf?$b2xtz8oNY#iG7_wCTT*Hqy}< zZOT&ft(jfN8~VQb1|&a|Ca5J+W1uRe;#_+haztu{=1fz3drjAsF+-azllZa}JF8dHWYC(cT;`l#lxIsEYy>5cDD!`{@x`k%^` zp&`0s*+BI^Jg#*wV2H|Fjm2~quGeQlrz1Wr(I!VV;HIDTQvbuM&z*LL(ktxN~7YE>xemKhyXW

W96FiY^(@oB20!@`^GR_dGnNW#-_avYhs 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 ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/chan_p.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 7 0 0 1 -simundump xplot /graphs/conc2/Ca_CaM_CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 -simundump xcoredraw /edit/draw 0 -4 7 -7 6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"Very simplified calcium-to-kinase model for a test multiscale" \ -"model." -addmsg /kinetics/Ca_bind_CaM /kinetics/CaM REAC A B -addmsg /kinetics/Ca_bind_CaM /kinetics/Ca_CaM REAC B A -addmsg /kinetics/CaM_bind_CaMKII /kinetics/Ca_CaM REAC A B -addmsg /kinetics/Ca_bind_CaM /kinetics/Ca REAC A B -addmsg /kinetics/Ca_bind_CaM /kinetics/Ca REAC A B -addmsg /kinetics/Ca_CaM /kinetics/CaM_bind_CaMKII SUBSTRATE n -addmsg /kinetics/CaMKII /kinetics/CaM_bind_CaMKII SUBSTRATE n -addmsg /kinetics/Ca_CaM_CaMKII /kinetics/CaM_bind_CaMKII PRODUCT n -addmsg /kinetics/CaM_bind_CaMKII /kinetics/CaMKII REAC A B -addmsg /kinetics/CaM_bind_CaMKII /kinetics/Ca_CaM_CaMKII REAC B A -addmsg /kinetics/Ca_CaM_CaMKII/kinase /kinetics/Ca_CaM_CaMKII REAC eA B -addmsg /kinetics/Ca_CaM_CaMKII /kinetics/Ca_CaM_CaMKII/kinase ENZYME n -addmsg /kinetics/chan /kinetics/Ca_CaM_CaMKII/kinase SUBSTRATE n -addmsg /kinetics/Ca_CaM_CaMKII/kinase /kinetics/chan REAC sA B -addmsg /kinetics/dephosph /kinetics/chan REAC B A -addmsg /kinetics/Ca_CaM_CaMKII/kinase /kinetics/chan_p MM_PRD pA -addmsg /kinetics/dephosph /kinetics/chan_p REAC A B -addmsg /kinetics/Ca /kinetics/Ca_bind_CaM SUBSTRATE n -addmsg /kinetics/Ca /kinetics/Ca_bind_CaM SUBSTRATE n -addmsg /kinetics/CaM /kinetics/Ca_bind_CaM SUBSTRATE n -addmsg /kinetics/Ca_CaM /kinetics/Ca_bind_CaM PRODUCT n -addmsg /kinetics/chan_p /kinetics/dephosph SUBSTRATE n -addmsg /kinetics/chan /kinetics/dephosph PRODUCT n -addmsg /kinetics/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *blue -addmsg /kinetics/chan_p /graphs/conc2/chan_p.Co PLOT Co *chan_p.Co *7 -addmsg /kinetics/Ca_CaM_CaMKII /graphs/conc2/Ca_CaM_CaMKII.Co PLOT Co *Ca_CaM_CaMKII.Co *blue -enddump -// End of dump - -call /kinetics/Ca_bind_CaM/notes LOAD \ -"This should actually be 4th order in Ca. Using 2nd order here" \ -"for simplicity and to lessen numerical stiffness." -complete_loading diff --git a/examples/genesis/enz_classical_explicit.g b/examples/genesis/enz_classical_explicit.g deleted file mode 100644 index f04e9c3..0000000 --- a/examples/genesis/enz_classical_explicit.g +++ /dev/null @@ -1,138 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Jul 15 11:23:30 2012 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.01 -CONTROLDT = 5 -PLOTDT = 1 -MAXTIME = 100 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 0 -DEFAULT_VOL = 1.6667e-21 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ - 0 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump kpool /kinetics/S1 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry blue \ - black -5 1 0 -simundump text /kinetics/S1/notes 0 "" -call /kinetics/S1/notes LOAD \ -"" -simundump kpool /kinetics/P1 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 25 black \ - 4 2 0 -simundump text /kinetics/P1/notes 0 "" -call /kinetics/P1/notes LOAD \ -"" -simundump kpool /kinetics/S2 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 3 black \ - -5 -2 0 -simundump text /kinetics/S2/notes 0 "" -call /kinetics/S2/notes LOAD \ -"" -simundump kpool /kinetics/P2 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 62 black \ - 5 -2 0 -simundump text /kinetics/P2/notes 0 "" -call /kinetics/P2/notes LOAD \ -"" -simundump kpool /kinetics/E1_explicit 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry \ - 48 black 0 8 0 -simundump text /kinetics/E1_explicit/notes 0 "" -call /kinetics/E1_explicit/notes LOAD \ -"" -simundump kenz /kinetics/E1_explicit/explicit 0 0 0 0 0 1 0.2 0.8 0.2 0 0 "" \ - red 48 "" 0 6 0 -simundump text /kinetics/E1_explicit/explicit/notes 0 "" -call /kinetics/E1_explicit/explicit/notes LOAD \ -"" -simundump kpool /kinetics/E2_class 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 33 \ - black 0 -7 0 -simundump text /kinetics/E2_class/notes 0 "" -call /kinetics/E2_class/notes LOAD \ -"" -simundump kenz /kinetics/E2_class/classical 0 0 0 0 0 1 0.2 0.8 0.2 0 1 "" \ - red 33 "" 0 -5 0 -simundump text /kinetics/E2_class/classical/notes 0 "" -call /kinetics/E2_class/classical/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 100 0 1 0 -simundump xgraph /graphs/conc2 0 0 100 0 1 0 -simundump xplot /graphs/conc1/S1.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/S2.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 3 0 0 1 -simundump xplot /graphs/conc1/E1_explicit.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 48 0 0 1 -simundump xplot /graphs/conc1/E2_class.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 33 0 0 1 -simundump xplot /graphs/conc2/P2.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc2/P1.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 25 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 -simundump xcoredraw /edit/draw 0 -7 7 -9 10 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -addmsg /kinetics/E1_explicit/explicit /kinetics/S1 REAC sA B -addmsg /kinetics/E1_explicit/explicit /kinetics/P1 MM_PRD pA -addmsg /kinetics/E2_class/classical /kinetics/S2 REAC sA B -addmsg /kinetics/E2_class/classical /kinetics/P2 MM_PRD pA -addmsg /kinetics/E1_explicit/explicit /kinetics/E1_explicit REAC eA B -addmsg /kinetics/E1_explicit /kinetics/E1_explicit/explicit ENZYME n -addmsg /kinetics/S1 /kinetics/E1_explicit/explicit SUBSTRATE n -addmsg /kinetics/E2_class /kinetics/E2_class/classical ENZYME n -addmsg /kinetics/S2 /kinetics/E2_class/classical SUBSTRATE n -addmsg /kinetics/S1 /graphs/conc1/S1.Co PLOT Co *S1.Co *blue -addmsg /kinetics/S2 /graphs/conc1/S2.Co PLOT Co *S2.Co *3 -addmsg /kinetics/E1_explicit /graphs/conc1/E1_explicit.Co PLOT Co *E1_explicit.Co *48 -addmsg /kinetics/E2_class /graphs/conc1/E2_class.Co PLOT Co *E2_class.Co *33 -addmsg /kinetics/P2 /graphs/conc2/P2.Co PLOT Co *P2.Co *62 -addmsg /kinetics/P1 /graphs/conc2/P1.Co PLOT Co *P1.Co *25 -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/enz_rea.g b/examples/genesis/enz_rea.g deleted file mode 100644 index 9f5dcda..0000000 --- a/examples/genesis/enz_rea.g +++ /dev/null @@ -1,88 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Mon Jul 9 11:42:22 2012 - -include kkit {argv 1} - -FASTDT = 1e-06 -SIMDT = 0.0001 -CONTROLDT = 0.01 -PLOTDT = 0.01 -MAXTIME = 1 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1.6667e-21 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ - 0 0 -simundump kpool /kinetics/a 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry blue black \ - -2 1 0 -simundump kpool /kinetics/b 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 60 black 2 \ - 1 0 -simundump kpool /kinetics/c 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 47 black 0 \ - -2 0 -simundump kenz /kinetics/c/kenz 0 0 0 0 0 1 0.5 0.4 0.1 0 0 "" red 47 "" 0 -1 \ - 0 -simundump kreac /kinetics/kreac 0 0.01 0.1 "" white black 0 2 0 -simundump xgraph /graphs/conc1 0 0 1 0 1 0 -simundump xgraph /graphs/conc2 0 0 1 0 1 0 -simundump xplot /graphs/conc1/a.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/b.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 60 0 0 1 -simundump xplot /graphs/conc2/c.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 1 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 1 0 1 0 -simundump xcoredraw /edit/draw 0 -4 4 -4 4 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -addmsg /kinetics/kreac /kinetics/a REAC A B -addmsg /kinetics/c/kenz /kinetics/a REAC sA B -addmsg /kinetics/kreac /kinetics/b REAC B A -addmsg /kinetics/c/kenz /kinetics/b MM_PRD pA -addmsg /kinetics/c/kenz /kinetics/c REAC eA B -addmsg /kinetics/c /kinetics/c/kenz ENZYME n -addmsg /kinetics/a /kinetics/c/kenz SUBSTRATE n -addmsg /kinetics/a /kinetics/kreac SUBSTRATE n -addmsg /kinetics/b /kinetics/kreac PRODUCT n -addmsg /kinetics/a /graphs/conc1/a.Co PLOT Co *a.Co *blue -addmsg /kinetics/b /graphs/conc2/b.Co PLOT Co *b.Co *60 -addmsg /kinetics/c /graphs/conc2/c.Co PLOT Co *c.Co *47 -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/kkit_objects_example.g b/examples/genesis/kkit_objects_example.g deleted file mode 100644 index de66fc9..0000000 --- a/examples/genesis/kkit_objects_example.g +++ /dev/null @@ -1,195 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Wed Mar 19 11:08:42 2014 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.01 -CONTROLDT = 5 -PLOTDT = 0.1 -MAXTIME = 20 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 0 -DEFAULT_VOL = 1.6667e-21 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 3 \ - -7 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump kpool /kinetics/B 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 62 black 1 \ - 1 0 -simundump text /kinetics/B/notes 0 "" -call /kinetics/B/notes LOAD \ -"" -simundump kpool /kinetics/A 0 0 2 2 2 2 0 0 1 0 /kinetics/geometry blue black \ - -3 1 0 -simundump text /kinetics/A/notes 0 "" -call /kinetics/A/notes LOAD \ -"" -simundump kpool /kinetics/tot1 0 0 0 2 2 0 0 0 1 0 /kinetics/geometry 47 \ - black -1 -2 0 -simundump text /kinetics/tot1/notes 0 "" -call /kinetics/tot1/notes LOAD \ -"" -simundump kpool /kinetics/C 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 56 black 5 \ - 1 0 -simundump text /kinetics/C/notes 0 "" -call /kinetics/C/notes LOAD \ -"" -simundump xtab /kinetics/xtab 0 0 0 1 1 0 "" edit_xtab "" red 0 0 0 1 -1 7 0 -loadtab /kinetics/xtab table 1 100 0 10 \ - 1 1.0628 1.1253 1.1874 1.2487 1.309 1.3681 1.4258 1.4817 1.5358 1.5878 \ - 1.6374 1.6845 1.729 1.7705 1.809 1.8443 1.8763 1.9048 1.9298 1.951 1.9686 \ - 1.9823 1.9921 1.998 2 1.998 1.9921 1.9823 1.9686 1.951 1.9298 1.9048 1.8763 \ - 1.8443 1.809 1.7705 1.729 1.6846 1.6375 1.5878 1.5358 1.4818 1.4258 1.3681 \ - 1.309 1.2487 1.1874 1.1254 1.0628 0.99999 0.93723 0.87462 0.81261 0.75133 \ - 0.69103 0.63186 0.57423 0.51829 0.46416 0.41222 0.36261 0.31543 0.27104 \ - 0.22951 0.19097 0.15567 0.12371 0.095158 0.070223 0.048953 0.031407 0.017712 \ - 0.0078885 0.0019706 0 0.001972 0.0078787 0.017716 0.031413 0.048929 0.070231 \ - 0.095168 0.12367 0.15569 0.19098 0.22946 0.27105 0.31545 0.36255 0.41224 \ - 0.46417 0.51822 0.57425 0.63188 0.69096 0.75135 0.81263 0.87465 0.93716 1 -simundump text /kinetics/xtab/notes 0 "" -call /kinetics/xtab/notes LOAD \ -"" -simundump kpool /kinetics/D 0 0 0 0 0 0 0 0 1 2 /kinetics/geometry 25 black \ - -3 5 0 -simundump text /kinetics/D/notes 0 "" -call /kinetics/D/notes LOAD \ -"" -simundump kreac /kinetics/Reac1 0 0.2 0.1 "" white black -1 3 0 -simundump text /kinetics/Reac1/notes 0 "" -call /kinetics/Reac1/notes LOAD \ -"" -simundump kreac /kinetics/Reac2 0 0.1 0 "" white black 3 3 0 -simundump text /kinetics/Reac2/notes 0 "" -call /kinetics/Reac2/notes LOAD \ -"" -simundump kpool /kinetics/E 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 1 black 9 \ - 1 0 -simundump text /kinetics/E/notes 0 "" -call /kinetics/E/notes LOAD \ -"" -simundump kpool /kinetics/MassActionEnz 0 0 1 1 1 1 0 0 1 0 \ - /kinetics/geometry 28 black 7 5 0 -simundump text /kinetics/MassActionEnz/notes 0 "" -call /kinetics/MassActionEnz/notes LOAD \ -"" -simundump kenz /kinetics/MassActionEnz/e1 0 0 0 0 0 1 1 4 1 0 0 "" red 28 "" \ - 7 3 0 -simundump text /kinetics/MassActionEnz/e1/notes 0 "" -call /kinetics/MassActionEnz/e1/notes LOAD \ -"" -simundump kpool /kinetics/MM_Enz 0 0 1 1 1 1 0 0 1 0 /kinetics/geometry 22 \ - black 6 -1 0 -simundump text /kinetics/MM_Enz/notes 0 "" -call /kinetics/MM_Enz/notes LOAD \ -"" -simundump kenz /kinetics/MM_Enz/e2 0 0 0 0 0 1 1 4 1 0 1 "" red 22 "" 7 -1 0 -simundump text /kinetics/MM_Enz/e2/notes 0 "" -call /kinetics/MM_Enz/e2/notes LOAD \ -"" -simundump kpool /kinetics/F 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry blue black \ - 9 -3 0 -simundump text /kinetics/F/notes 0 "" -call /kinetics/F/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 20 0 2 0 -simundump xgraph /graphs/conc2 0 0 20 0 2 0 -simundump xplot /graphs/conc1/A.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/B.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc2/tot1.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/C.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 56 0 0 1 -simundump xplot /graphs/conc2/D.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 25 0 0 1 -simundump xplot /graphs/conc2/E.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/F.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 20 0 1.2 0 -simundump xgraph /moregraphs/conc4 0 0 20 0 1.2 0 -simundump xcoredraw /edit/draw 0 -5 11 -9 9 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -addmsg /kinetics/Reac1 /kinetics/B REAC B A -addmsg /kinetics/Reac2 /kinetics/B REAC A B -addmsg /kinetics/Reac2 /kinetics/B REAC A B -addmsg /kinetics/Reac1 /kinetics/A REAC A B -addmsg /kinetics/A /kinetics/tot1 SUMTOTAL n nInit -addmsg /kinetics/B /kinetics/tot1 SUMTOTAL n nInit -addmsg /kinetics/Reac2 /kinetics/C REAC B A -addmsg /kinetics/MassActionEnz/e1 /kinetics/C REAC sA B -addmsg /kinetics/xtab /kinetics/D SLAVE output -addmsg /kinetics/Reac1 /kinetics/D REAC A B -addmsg /kinetics/A /kinetics/Reac1 SUBSTRATE n -addmsg /kinetics/B /kinetics/Reac1 PRODUCT n -addmsg /kinetics/D /kinetics/Reac1 SUBSTRATE n -addmsg /kinetics/C /kinetics/Reac2 PRODUCT n -addmsg /kinetics/B /kinetics/Reac2 SUBSTRATE n -addmsg /kinetics/B /kinetics/Reac2 SUBSTRATE n -addmsg /kinetics/MassActionEnz/e1 /kinetics/E MM_PRD pA -addmsg /kinetics/MM_Enz/e2 /kinetics/E REAC sA B -addmsg /kinetics/MassActionEnz/e1 /kinetics/MassActionEnz REAC eA B -addmsg /kinetics/MassActionEnz /kinetics/MassActionEnz/e1 ENZYME n -addmsg /kinetics/C /kinetics/MassActionEnz/e1 SUBSTRATE n -addmsg /kinetics/MM_Enz /kinetics/MM_Enz/e2 ENZYME n -addmsg /kinetics/E /kinetics/MM_Enz/e2 SUBSTRATE n -addmsg /kinetics/MM_Enz/e2 /kinetics/F MM_PRD pA -addmsg /kinetics/A /graphs/conc1/A.Co PLOT Co *A.Co *blue -addmsg /kinetics/B /graphs/conc1/B.Co PLOT Co *B.Co *62 -addmsg /kinetics/tot1 /graphs/conc2/tot1.Co PLOT Co *tot1.Co *47 -addmsg /kinetics/C /graphs/conc2/C.Co PLOT Co *C.Co *56 -addmsg /kinetics/D /graphs/conc2/D.Co PLOT Co *D.Co *25 -addmsg /kinetics/E /graphs/conc2/E.Co PLOT Co *E.Co *1 -addmsg /kinetics/F /graphs/conc2/F.Co PLOT Co *F.Co *blue -enddump -// End of dump - -setfield /kinetics/xtab table->dx 0.1 -setfield /kinetics/xtab table->invdx 10 -complete_loading diff --git a/examples/genesis/reaction.g b/examples/genesis/reaction.g deleted file mode 100644 index 1f93a52..0000000 --- a/examples/genesis/reaction.g +++ /dev/null @@ -1,76 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sat Jul 14 05:01:10 2012 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.01 -CONTROLDT = 5 -PLOTDT = 1 -MAXTIME = 100 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 0 -DEFAULT_VOL = 1.6667e-21 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simundump geometry /kinetics/geometry 0 1.6667e-19 3 sphere "" white black 0 \ - 0 0 -simundump kreac /kinetics/kreac 0 0.1 0.1 "" 45 black -1 4 0 -simundump kpool /kinetics/Sub 0 0 1 1 100 100 0 0 100 0 /kinetics/geometry \ - blue black -6 1 0 -simundump kpool /kinetics/Prd 0 0 0 0 0 0 0 0 100 0 /kinetics/geometry 60 \ - black 4 0 0 -simundump xgraph /graphs/conc1 0 0 99 0.001 0.999 0 -simundump xgraph /graphs/conc2 0 0 100 0 1 0 -simundump xplot /graphs/conc1/Sub.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/Prd.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 60 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 -simundump xcoredraw /edit/draw 0 -6 4 -2 6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -addmsg /kinetics/Sub /kinetics/kreac SUBSTRATE n -addmsg /kinetics/Prd /kinetics/kreac PRODUCT n -addmsg /kinetics/kreac /kinetics/Sub REAC A B -addmsg /kinetics/kreac /kinetics/Prd REAC B A -addmsg /kinetics/Sub /graphs/conc1/Sub.Co PLOT Co *Sub.Co *blue -addmsg /kinetics/Prd /graphs/conc1/Prd.Co PLOT Co *Prd.Co *60 -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/spineCa_CaM_diffn.g b/examples/genesis/spineCa_CaM_diffn.g deleted file mode 100644 index 7b2badb..0000000 --- a/examples/genesis/spineCa_CaM_diffn.g +++ /dev/null @@ -1,696 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Aug 21 08:50:42 2016 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 1000 -TRANSIENT_TIME = 10 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ - 12 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 2e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry 53 0 -16 6 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ - /kinetics/geometry 55 black -10 2 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_stim 0 50 1 "" white black -13 4 0 -simundump text /kinetics/PSD/Ca_stim/notes 0 "" -call /kinetics/PSD/Ca_stim/notes LOAD \ -"" -simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 -28 11 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM 1 5e-13 40 40 240 240 0 0 6 0 \ - /kinetics/geometry pink blue -24 13 0 -simundump text /kinetics/PSD/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.3 10 "" white blue -10 \ - 10 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10\n24 Sep 2015\nThis is a bit too low affinity. Changing to match K2 at \nKd = 2.8." -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ -"24 Sep 2015" \ -"This is a bit too low affinity. Changing to match K2 at " \ -"Kd = 2.8." -simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry hotpink blue -12 13 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ - -22 10 0 -simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue -16 13 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ - -14 10 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ - blue -18 10 0 -simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue -20 13 0 -simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue blue -7 13 0 -simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ -"" -simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ - 11 -30 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 2e-11 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry 54 40 -8 -20 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ - /kinetics/geometry 55 40 -2 -20 0 -simundump text /kinetics/DEND/Ca_input/notes 0 "" -call /kinetics/DEND/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/DEND/Ca_stim 0 50 1 "" white 40 -5 -19 0 -simundump text /kinetics/DEND/Ca_stim/notes 0 "" -call /kinetics/DEND/Ca_stim/notes LOAD \ -"" -simundump group /kinetics/DEND/CaM 1 blue 13 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 -21 -15 0 -simundump text /kinetics/DEND/CaM/notes 0 "" -call /kinetics/DEND/CaM/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaM/CaM 1 5e-13 2 2 1200 1200 0 0 600 0 \ - /kinetics/geometry pink blue -17 -13 0 -simundump text /kinetics/DEND/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/DEND/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/DEND/CaM/CaM-Ca3-bind-Ca 1 0.003 10 "" white blue \ - -3 -16 0 -simundump text /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/DEND/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry hotpink blue -5 -13 0 -simundump text /kinetics/DEND/CaM/CaM-Ca3/notes 0 "" -call /kinetics/DEND/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/DEND/CaM/CaM-bind-Ca 1 0.014141 8.4853 "" white \ - blue -15 -16 0 -simundump text /kinetics/DEND/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/DEND/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry pink blue -9 -13 0 -simundump text /kinetics/DEND/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/DEND/CaM/CaM-Ca2-bind-Ca 1 0.006 10 "" white blue \ - -7 -16 0 -simundump text /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/DEND/CaM/CaM-Ca-bind-Ca 1 0.014141 8.4853 "" white \ - blue -11 -16 0 -simundump text /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/DEND/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry pink blue -13 -13 0 -simundump text /kinetics/DEND/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/DEND/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry blue blue 0 -13 0 -simundump text /kinetics/DEND/CaM/CaM-Ca4/notes 0 "" -call /kinetics/DEND/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kreac /kinetics/DEND/CaM/CaM_x2 0 10 10 "" white black -27 -13 0 -simundump text /kinetics/DEND/CaM/CaM_x2/notes 0 "" -call /kinetics/DEND/CaM/CaM_x2/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[1] blue blue -36 -15 0 -simundump text /kinetics/DEND/CaM/CaM_xchange/notes 0 "" -call /kinetics/DEND/CaM/CaM_xchange/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 29 -23 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca 0 2e-11 0.11111 0.11111 6 6 0 0 54 0 \ - /kinetics/geometry[1] 50 yellow -12 -11 0 -simundump text /kinetics/SPINE/Ca/notes 0 "" -call /kinetics/SPINE/Ca/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 -24 -7 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM 1 5e-13 40 40 2160 2160 0 0 54 0 \ - /kinetics/geometry pink blue -20 -5 0 -simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.033333 10 "" white \ - blue -6 -8 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry hotpink blue -8 -5 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ - blue -18 -8 0 -simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue -12 -5 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ - blue -10 -8 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ - blue -14 -8 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue -16 -5 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry blue blue -3 -5 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM_x2 0 1 100 "" white black -23 1 0 -simundump text /kinetics/SPINE/CaM/CaM_x2/notes 0 "" -call /kinetics/SPINE/CaM/CaM_x2/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[2] blue black -28 -2 0 -simundump text /kinetics/SPINE/CaM/CaM_xchange/notes 0 "" -call /kinetics/SPINE/CaM/CaM_xchange/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2923 0 38.53 0 -simundump xgraph /graphs/conc2 0 0 2923 0 16.804 0 -simundump xgraph /moregraphs/conc3 0 0 2923 0 4 0 -simundump xgraph /moregraphs/conc4 0 0 2923 0 4 0 -simundump xcoredraw /edit/draw 0 -38 31 -32 15 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"" \ -"4 Aug 2016: CaM_3compt.g: Based on CaMKII_merged91.g, just have" \ -"the CaM part in all 3 compartments, for merging." \ -"CaM_3compt1.g: Eliminated Ca and Ca input too." \ -"" \ -"4 Aug 2016: Merged CaM_3compt1.g into NN_mapk6.g, some " \ -"elimination of Ca buffer pools. All now handled by CaM." \ -"" \ -"15 Aug 2016: Doubled CaM levels throughout, use as a surrogate" \ -"for other Ca buffers." \ -"" \ -"21 Aug 2016: Ca and CaM in spine and dendrite for diffusive" \ -"calculations with CaM acting as buffer." \ -"" -addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca REAC B A -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_stim SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_stim PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/PSD/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca REAC B A -addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/Ca REAC A B -addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B -addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n -addmsg /kinetics/DEND/Ca /kinetics/DEND/Ca_stim PRODUCT n -addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM REAC A B -addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/DEND/Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC B A -addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM_x2 SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM_xchange /kinetics/DEND/CaM/CaM_x2 PRODUCT n -addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM_xchange REAC B A -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM_x2 SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM_xchange /kinetics/SPINE/CaM/CaM_x2 PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM_xchange REAC B A -enddump -// End of dump - -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ -"24 Sep 2015" \ -"This is a bit too low affinity. Changing to match K2 at " \ -"Kd = 2.8." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -complete_loading diff --git a/examples/genesis/spineCa_diffn.g b/examples/genesis/spineCa_diffn.g deleted file mode 100644 index 8895c87..0000000 --- a/examples/genesis/spineCa_diffn.g +++ /dev/null @@ -1,151 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Aug 21 08:51:57 2016 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 1000 -TRANSIENT_TIME = 10 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ - 12 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 2e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry 53 0 -16 6 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ - /kinetics/geometry 55 black -10 2 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_stim 0 50 1 "" white black -13 4 0 -simundump text /kinetics/PSD/Ca_stim/notes 0 "" -call /kinetics/PSD/Ca_stim/notes LOAD \ -"" -simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ - 11 -30 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 2e-11 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry 54 40 -8 -20 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ - /kinetics/geometry 55 40 -2 -20 0 -simundump text /kinetics/DEND/Ca_input/notes 0 "" -call /kinetics/DEND/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/DEND/Ca_stim 0 50 1 "" white 40 -5 -19 0 -simundump text /kinetics/DEND/Ca_stim/notes 0 "" -call /kinetics/DEND/Ca_stim/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 29 -23 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca 0 2e-11 0.11111 0.11111 6 6 0 0 54 0 \ - /kinetics/geometry[1] 50 yellow -12 -11 0 -simundump text /kinetics/SPINE/Ca/notes 0 "" -call /kinetics/SPINE/Ca/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2923 0 38.53 0 -simundump xgraph /graphs/conc2 0 0 2923 0 16.804 0 -simundump xgraph /moregraphs/conc3 0 0 2923 0 4 0 -simundump xgraph /moregraphs/conc4 0 0 2923 0 4 0 -simundump xcoredraw /edit/draw 0 -18 31 -32 14 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"" \ -"4 Aug 2016: CaM_3compt.g: Based on CaMKII_merged91.g, just have" \ -"the CaM part in all 3 compartments, for merging." \ -"CaM_3compt1.g: Eliminated Ca and Ca input too." \ -"" \ -"4 Aug 2016: Merged CaM_3compt1.g into NN_mapk6.g, some " \ -"elimination of Ca buffer pools. All now handled by CaM." \ -"" \ -"15 Aug 2016: Doubled CaM levels throughout, use as a surrogate" \ -"for other Ca buffers." \ -"" \ -"21 Aug 2016: Ca in spine and dendrite for diffusive" \ -"calculations." \ -"" -addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca REAC B A -addmsg /kinetics/PSD/Ca_stim /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_stim SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_stim PRODUCT n -addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca REAC B A -addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B -addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n -addmsg /kinetics/DEND/Ca /kinetics/DEND/Ca_stim PRODUCT n -enddump -// End of dump - -complete_loading diff --git a/examples/genesis/traff_nn_diff_BIS.g b/examples/genesis/traff_nn_diff_BIS.g deleted file mode 100755 index 2e91bf6..0000000 --- a/examples/genesis/traff_nn_diff_BIS.g +++ /dev/null @@ -1,262 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Jul 15 11:46:45 2012 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.002 -CONTROLDT = 5 -PLOTDT = 5 -MAXTIME = 1000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump kreac /kinetics/exo 0 0.0002 0.0002 "" white black 2 7 0 -simundump text /kinetics/exo/notes 0 "" -call /kinetics/exo/notes LOAD \ -"" -simundump kreac /kinetics/endo 0 0.002 0.002 "" white black -6 8 0 -simundump text /kinetics/endo/notes 0 "" -call /kinetics/endo/notes LOAD \ -"" -simundump kpool /kinetics/stot 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry blue \ - black 6 12 0 -simundump text /kinetics/stot/notes 0 "" -call /kinetics/stot/notes LOAD \ -"" -simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ - -8 1 0 -simundump text /kinetics/B/notes 0 "" -call /kinetics/B/notes LOAD \ -"" -simundump kpool /kinetics/B/P 0 0 0.2 0.2 1.2 1.2 0 0 6 0 /kinetics/geometry \ - 4 yellow -2 -2 0 -simundump text /kinetics/B/P/notes 0 "" -call /kinetics/B/P/notes LOAD \ -"" -simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 4.1667 4 1 0 0 "" red 4 "" -2 \ - -1 0 -simundump text /kinetics/B/P/kenz/notes 0 "" -call /kinetics/B/P/kenz/notes LOAD \ -"" -simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -2 -6 0 -simundump text /kinetics/B/basal/notes 0 "" -call /kinetics/B/basal/notes LOAD \ -"" -simundump kpool /kinetics/B/M 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry 62 \ - yellow -6 1 0 -simundump text /kinetics/B/M/notes 0 "" -call /kinetics/B/M/notes LOAD \ -"" -simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ - yellow 2 1 0 -simundump text /kinetics/B/M*/notes 0 "" -call /kinetics/B/M*/notes LOAD \ -"" -simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.83333 4 1 0 0 "" red 28 \ - "" -2 4 0 -simundump text /kinetics/B/M*/kenz/notes 0 "" -call /kinetics/B/M*/kenz/notes LOAD \ -"" -simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 16 \ - 0 -simundump text /kinetics/A/notes 0 "" -call /kinetics/A/notes LOAD \ -"" -simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 0 23 0 -simundump text /kinetics/A/basal/notes 0 "" -call /kinetics/A/basal/notes LOAD \ -"" -simundump kpool /kinetics/A/P 0 0 0.2 0.2 1.2 1.2 0 0 5.9999 0 \ - /kinetics/geometry 3 16 -1 11 0 -simundump text /kinetics/A/P/notes 0 "" -call /kinetics/A/P/notes LOAD \ -"" -simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 4.1667 4 1 0 0 "" red 3 "" \ - -1 12 0 -simundump text /kinetics/A/P/kenz/notes 0 "" -call /kinetics/A/P/kenz/notes LOAD \ -"" -simundump kpool /kinetics/A/M 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 53 \ - 16 -4 18 0 -simundump text /kinetics/A/M/notes 0 "2.235\n" -call /kinetics/A/M/notes LOAD \ -"2.235" \ -"" -simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 47 \ - 16 3 18 0 -simundump text /kinetics/A/M*/notes 0 "" -call /kinetics/A/M*/notes LOAD \ -"" -simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.83335 4 1 0 0 "" red 57 \ - "" 0 20 0 -simundump text /kinetics/A/M*/kenz/notes 0 "" -call /kinetics/A/M*/kenz/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 1000 0.001 3 0 -simundump xgraph /graphs/conc2 0 0 1000 0 3 0 -simundump xplot /graphs/conc1/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc2/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 1000 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 1000 0 1 0 -simundump xcoredraw /edit/draw 0 -11.317 7.317 -4.078 23.873 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"8 Jul 2009. diff_dup_neg_TRI.g. Renamed mols, and a bit of fine-tuning" \ -"of diff_dup_neg_tristable.g" \ -"diff_dup_neg_BIS.g: different parms." \ -"" \ -"26 May 2009. diff_dup_neg_tristable.g" \ -"This is the tristable model with the parameters as predicted by" \ -"diff_dup_noanch.xls." \ -"" \ -"25 May 2009. diff_dup_neg4.g Based on neg4.g, so that both" \ -"parts are neg slope but not bistable." \ -"diff_dup_neg5.g: Based on diff_dup_neg4.g, this one fixes up" \ -"some parameters and is nicely bistable." \ -"" \ -"" \ -"20 May 2009. neg4.g. Based on diff_dup_neg2.g, which turned out" \ -"to be bistable. This one really is not bistable." \ -"" \ -"" \ -"16 May 2009. diff_dup_neg2.g. Based on diff_dup_neg.g, filled" \ -"in rates and diffusion reacs." \ -"" \ -"15 May 2009. diff_dup_bis2.g. Based on diff_dup_bis.g, altered" \ -"rates toward quad stable prediction." \ -"fix_bis1.g: Testing bistability. This variant has range of " \ -"about 30%, from 1.25 to 1.65." \ -"" \ -"diff_dup_neg.g: Based on fix_bis1.g, working out whether it is " \ -"clearly neg slope." \ -"" \ -"13 May 2009. diff_dup_bis.g Based on diff_eq_bis3.g, set up" \ -"duplicate reaction set in the bulk." \ -"" \ -"10 May 2009. diff_eq_bis2.g. Based on diff_eq_bis.g, here I fixed" \ -"up the nasty sumtotal operation and now the C_psd* molecule " \ -"handles its own enzyme site rather than setting up a slave" \ -"pool and using that to do the enzyme." \ -"diff_eq_bis3.g: Based on diff_eq_bis2.g, restored original" \ -"cycling parameters as diff_eq_bis.g" \ -"" \ -"" \ -"9 May 2009. diff_eq_bis.g. Based on min6.g. Implement" \ -"diffusive exchange of equil reaction with bistable." \ -"" \ -"11 Apr 2009: min5.g: Eliminated the anchor protein from min4.g" \ -"min6.g: Replace the entire bulk bistable system" \ -"with a single dephosphorylation reaction." \ -"" \ -"min4.g: Includes trafficking too." \ -"" \ -"min3.g: Includes both bulk and PSD reactions" \ -"" \ -"min2psd.g: Same as min2.g, moved to PSD." \ -"" \ -"min2.g: This version is bistable." -addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/exo PRODUCT n -addmsg /kinetics/B/M /kinetics/endo SUBSTRATE n -addmsg /kinetics/A/M /kinetics/endo PRODUCT n -addmsg /kinetics/A/M /kinetics/stot SUMTOTAL n nInit -addmsg /kinetics/A/M* /kinetics/stot SUMTOTAL n nInit -addmsg /kinetics/A/M*/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/P/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B -addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n -addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n -addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n -addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n -addmsg /kinetics/B/basal /kinetics/B/M REAC A B -addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA -addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B -addmsg /kinetics/endo /kinetics/B/M REAC A B -addmsg /kinetics/B/basal /kinetics/B/M* REAC B A -addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA -addmsg /kinetics/exo /kinetics/B/M* REAC A B -addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n -addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n -addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B -addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n -addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n -addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B -addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA -addmsg /kinetics/A/basal /kinetics/A/M REAC A B -addmsg /kinetics/endo /kinetics/A/M REAC B A -addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA -addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B -addmsg /kinetics/A/basal /kinetics/A/M* REAC B A -addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B -addmsg /kinetics/exo /kinetics/A/M* REAC B A -addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n -addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 -addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 -addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 -addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 -enddump -// End of dump - -call /kinetics/A/M/notes LOAD \ -"2.235" \ -"" -complete_loading diff --git a/examples/genesis/traff_nn_diff_TRI.g b/examples/genesis/traff_nn_diff_TRI.g deleted file mode 100644 index 403f566..0000000 --- a/examples/genesis/traff_nn_diff_TRI.g +++ /dev/null @@ -1,261 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Jul 15 11:47:11 2012 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.002 -CONTROLDT = 5 -PLOTDT = 5 -MAXTIME = 1000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump kreac /kinetics/exo 0 0.00028 0.00028 "" white black 3 11 0 -simundump text /kinetics/exo/notes 0 "" -call /kinetics/exo/notes LOAD \ -"" -simundump kreac /kinetics/endo 0 0.001 0.001 "" white black -6 11 0 -simundump text /kinetics/endo/notes 0 "" -call /kinetics/endo/notes LOAD \ -"" -simundump kpool /kinetics/stot 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry blue \ - black 6 15 0 -simundump text /kinetics/stot/notes 0 "" -call /kinetics/stot/notes LOAD \ -"" -simundump group /kinetics/B 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 0 \ - -7 2 0 -simundump text /kinetics/B/notes 0 "" -call /kinetics/B/notes LOAD \ -"" -simundump kpool /kinetics/B/P 0 0 0.2 0.2 1.2 1.2 0 0 6 0 /kinetics/geometry \ - 4 yellow -2 -2 0 -simundump text /kinetics/B/P/notes 0 "" -call /kinetics/B/P/notes LOAD \ -"" -simundump kenz /kinetics/B/P/kenz 0 0 0 0 0 6 4.1667 4 1 0 0 "" red 4 "" -2 \ - -1 0 -simundump text /kinetics/B/P/kenz/notes 0 "" -call /kinetics/B/P/kenz/notes LOAD \ -"" -simundump kreac /kinetics/B/basal 0 0.01 0 "" white yellow -2 -5 0 -simundump text /kinetics/B/basal/notes 0 "" -call /kinetics/B/basal/notes LOAD \ -"" -simundump kpool /kinetics/B/M 0 0 2.8 2.8 16.8 16.8 0 0 6 0 \ - /kinetics/geometry 62 yellow -4 2 0 -simundump text /kinetics/B/M/notes 0 "" -call /kinetics/B/M/notes LOAD \ -"" -simundump kpool /kinetics/B/M* 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 28 \ - yellow 3 2 0 -simundump text /kinetics/B/M*/notes 0 "" -call /kinetics/B/M*/notes LOAD \ -"" -simundump kenz /kinetics/B/M*/kenz 0 0 0 0 0 59.999 0.83333 4 1 0 0 "" red 28 \ - "" 1 5 0 -simundump text /kinetics/B/M*/kenz/notes 0 "" -call /kinetics/B/M*/kenz/notes LOAD \ -"" -simundump group /kinetics/A 0 16 black x 0 0 "" PSD defaultfile.g 0 0 0 -5 20 \ - 0 -simundump text /kinetics/A/notes 0 "" -call /kinetics/A/notes LOAD \ -"" -simundump kreac /kinetics/A/basal 0 0.01 0 "" white 16 1 27 0 -simundump text /kinetics/A/basal/notes 0 "" -call /kinetics/A/basal/notes LOAD \ -"" -simundump kpool /kinetics/A/P 0 0 0.2 0.2 1.2 1.2 0 0 5.9999 0 \ - /kinetics/geometry 3 16 0 15 0 -simundump text /kinetics/A/P/notes 0 "" -call /kinetics/A/P/notes LOAD \ -"" -simundump kenz /kinetics/A/P/kenz 0 0 0 0 0 5.9999 4.1667 4 1 0 0 "" red 3 "" \ - 0 16 0 -simundump text /kinetics/A/P/kenz/notes 0 "" -call /kinetics/A/P/kenz/notes LOAD \ -"" -simundump kpool /kinetics/A/M 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 53 \ - 16 -3 20 0 -simundump text /kinetics/A/M/notes 0 "2.235\n" -call /kinetics/A/M/notes LOAD \ -"2.235" \ -"" -simundump kpool /kinetics/A/M* 0 0 0 0 0 0 0 0 5.9999 0 /kinetics/geometry 47 \ - 16 5 20 0 -simundump text /kinetics/A/M*/notes 0 "" -call /kinetics/A/M*/notes LOAD \ -"" -simundump kenz /kinetics/A/M*/kenz 0 0 0 0 0 5.9999 0.83335 4 1 0 0 "" red 57 \ - "" 1 23 0 -simundump text /kinetics/A/M*/kenz/notes 0 "" -call /kinetics/A/M*/kenz/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 1000 0.001 3 0 -simundump xgraph /graphs/conc2 0 0 1000 0 3 0 -simundump xplot /graphs/conc1/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/M.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc2/M*.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 1000 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 1000 0 1 0 -simundump xcoredraw /edit/draw 0 -9 8 -7 29 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"8 Jul 2009. diff_dup_neg_TRI.g. Renamed mols, and a bit of fine-tuning" \ -"of diff_dup_neg_tristable.g" \ -"" \ -"26 May 2009. diff_dup_neg_tristable.g" \ -"This is the tristable model with the parameters as predicted by" \ -"diff_dup_noanch.xls." \ -"" \ -"25 May 2009. diff_dup_neg4.g Based on neg4.g, so that both" \ -"parts are neg slope but not bistable." \ -"diff_dup_neg5.g: Based on diff_dup_neg4.g, this one fixes up" \ -"some parameters and is nicely bistable." \ -"" \ -"" \ -"20 May 2009. neg4.g. Based on diff_dup_neg2.g, which turned out" \ -"to be bistable. This one really is not bistable." \ -"" \ -"" \ -"16 May 2009. diff_dup_neg2.g. Based on diff_dup_neg.g, filled" \ -"in rates and diffusion reacs." \ -"" \ -"15 May 2009. diff_dup_bis2.g. Based on diff_dup_bis.g, altered" \ -"rates toward quad stable prediction." \ -"fix_bis1.g: Testing bistability. This variant has range of " \ -"about 30%, from 1.25 to 1.65." \ -"" \ -"diff_dup_neg.g: Based on fix_bis1.g, working out whether it is " \ -"clearly neg slope." \ -"" \ -"13 May 2009. diff_dup_bis.g Based on diff_eq_bis3.g, set up" \ -"duplicate reaction set in the bulk." \ -"" \ -"10 May 2009. diff_eq_bis2.g. Based on diff_eq_bis.g, here I fixed" \ -"up the nasty sumtotal operation and now the C_psd* molecule " \ -"handles its own enzyme site rather than setting up a slave" \ -"pool and using that to do the enzyme." \ -"diff_eq_bis3.g: Based on diff_eq_bis2.g, restored original" \ -"cycling parameters as diff_eq_bis.g" \ -"" \ -"" \ -"9 May 2009. diff_eq_bis.g. Based on min6.g. Implement" \ -"diffusive exchange of equil reaction with bistable." \ -"" \ -"11 Apr 2009: min5.g: Eliminated the anchor protein from min4.g" \ -"min6.g: Replace the entire bulk bistable system" \ -"with a single dephosphorylation reaction." \ -"" \ -"min4.g: Includes trafficking too." \ -"" \ -"min3.g: Includes both bulk and PSD reactions" \ -"" \ -"min2psd.g: Same as min2.g, moved to PSD." \ -"" \ -"min2.g: This version is bistable." -addmsg /kinetics/B/M* /kinetics/exo SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/exo PRODUCT n -addmsg /kinetics/B/M /kinetics/endo SUBSTRATE n -addmsg /kinetics/A/M /kinetics/endo PRODUCT n -addmsg /kinetics/A/M /kinetics/stot SUMTOTAL n nInit -addmsg /kinetics/A/M* /kinetics/stot SUMTOTAL n nInit -addmsg /kinetics/A/M*/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/A/P/kenz /kinetics/stot SUMTOTAL nComplex nComplexInit -addmsg /kinetics/B/P/kenz /kinetics/B/P REAC eA B -addmsg /kinetics/B/P /kinetics/B/P/kenz ENZYME n -addmsg /kinetics/B/M* /kinetics/B/P/kenz SUBSTRATE n -addmsg /kinetics/B/M /kinetics/B/basal SUBSTRATE n -addmsg /kinetics/B/M* /kinetics/B/basal PRODUCT n -addmsg /kinetics/B/basal /kinetics/B/M REAC A B -addmsg /kinetics/B/P/kenz /kinetics/B/M MM_PRD pA -addmsg /kinetics/B/M*/kenz /kinetics/B/M REAC sA B -addmsg /kinetics/endo /kinetics/B/M REAC A B -addmsg /kinetics/B/basal /kinetics/B/M* REAC B A -addmsg /kinetics/B/P/kenz /kinetics/B/M* REAC sA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* REAC eA B -addmsg /kinetics/B/M*/kenz /kinetics/B/M* MM_PRD pA -addmsg /kinetics/exo /kinetics/B/M* REAC A B -addmsg /kinetics/B/M* /kinetics/B/M*/kenz ENZYME n -addmsg /kinetics/B/M /kinetics/B/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M /kinetics/A/basal SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/basal PRODUCT n -addmsg /kinetics/A/P/kenz /kinetics/A/P REAC eA B -addmsg /kinetics/A/P /kinetics/A/P/kenz ENZYME n -addmsg /kinetics/A/M* /kinetics/A/P/kenz SUBSTRATE n -addmsg /kinetics/A/M*/kenz /kinetics/A/M REAC sA B -addmsg /kinetics/A/P/kenz /kinetics/A/M MM_PRD pA -addmsg /kinetics/A/basal /kinetics/A/M REAC A B -addmsg /kinetics/endo /kinetics/A/M REAC B A -addmsg /kinetics/A/M*/kenz /kinetics/A/M* MM_PRD pA -addmsg /kinetics/A/P/kenz /kinetics/A/M* REAC sA B -addmsg /kinetics/A/basal /kinetics/A/M* REAC B A -addmsg /kinetics/A/M*/kenz /kinetics/A/M* REAC eA B -addmsg /kinetics/exo /kinetics/A/M* REAC B A -addmsg /kinetics/A/M /kinetics/A/M*/kenz SUBSTRATE n -addmsg /kinetics/A/M* /kinetics/A/M*/kenz ENZYME n -addmsg /kinetics/A/M /graphs/conc1/M.Co PLOT Co *M.Co *53 -addmsg /kinetics/A/M* /graphs/conc1/M*.Co PLOT Co *M*.Co *47 -addmsg /kinetics/B/M /graphs/conc2/M.Co PLOT Co *M.Co *62 -addmsg /kinetics/B/M* /graphs/conc2/M*.Co PLOT Co *M*.Co *28 -enddump -// End of dump - -call /kinetics/A/M/notes LOAD \ -"2.235" \ -"" -complete_loading diff --git a/examples/genesis/traff_nn_diff_TRI.png b/examples/genesis/traff_nn_diff_TRI.png deleted file mode 100644 index 9a074a89a036b811c96af3d55629babf88bfa0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39569 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 g zb>YJ%vgqPOK7Xnz{$t=<*UIiApn^sK0;A`BN(EV2v3JA-Qxu+2b8QD>feme(c`x_z zfCsjCEiln!ssr7C_kT4LpCD3xE!$Vw7vlsgCUv>Sk!556+RSPkk|AcJQ2;JHnvz%^ zlmozE3T#QrNjd8JP!NW4L8dgWRN+$KK(s6rXwncS(cLY+oGk<{D!=N9Pb&MGj6D}= z5bZOre&Xf8qoJ|n$b40!ubSgdlwnE*(aJd>5HZ?A?k$zc#1!G`G|rjn7O8{T#(eJ< zrAb9b5HOTY+MEWjt0mEYVdtIXp;7cfKq?yN+N^DO)WL1n5a2fiimTTE8LpXtx|CGW z3Hh$X(Ddpf2zrkOG6{)9%)t-D;>sg{f=MPSb)~hRKd?mMdt;~G*U0#C=>&~iuwqQi zHyvkTfYZ_BI8}*^N!`2X^FSZ;6Jy0>;KvF0KQAc6rl|4)`aXgj`d8mEwMd{>EmZ%? zP&X{Qc1=PCtoxc!-Op2QOnWrJq(n_!|L$ka?SBbmjpG@Vq>@$$QqPz98d5h-H9brV zk+c6YsHpsbIv#9U`Hzk#y%)G{BhgB!=AfdXoh^2{SV4?ReHfE<<$QpA_PC?!pydp? z?H@dBv$udR9FP1DCKh``!u}bNhB87m?PUPnq3K|1ca0`9Bog^Q&tObwt?&|!0K0Kq0{EIRbA4I+na_DQK zH;J?tsj{5O(#w~Tk;cI`VEd=J6#6gBcvL6#WWfA?_89+ricBdXO1I<-J;1}qOf&+C zE{tfi@^||HT~-Yja7w+bCQzWmgE1K>^NWs(a8ynPe1R$QHHrZx$B-EUi)i0H+9z)e z)VfS608w#_nr`Coj!Wl&sA7d09o5CS2%%RmOVKyVENcXxLuxI+RYxVsbF3GNVr z4jSAcxV!spp7;BH+^So*DpeU~&gs+Lr)BrvYppFOwBmk{A-~?sPI#zHr||2drXMO> z+xvX}<&m{fRJ^VfrFe9E*xk|X*LQqtpI^N}hwGmu7P#Z73HcR@o>suCx@?Hg7xKJF z!HNHtUON~pWjzIOg(9p^Yaq|?G+(b>_|j%;ZZR5Mdn3TqZs*KB2$K3j5_=2asHM#r zn=dMcM<>8arX4DQO4Nud*eM6pGt>d{HLzVt0JYN4%2z3OM<0bU#%ja@4p5XRpkmB0 zw$`VsC;*nXPksn%ig&NVjMW#ShGU2U5IH+a5#*Cu|0`1(H50qWxuV}b7d*mAN;2|2 zVM9ngk`AgrrIc7?f*WU=BU8B)sy{L)mRbVqXCOxu8XTz~ph*I6`x{EJ|6yBB0!@DY zA8d=DTyoh|Hc!jpqPHBR|F(_QfHT$L7drCD{$43qi#MLO%*QxSVd{cScDusg3qoSe;3k$zO zfw?M8qubh?lA<|Lqzv}A^oosQnf$pH50}lMw3e0@aJ~dPG&BAPZ_htFa&dfqZ%?pY z^YHNe>FB7lp6ecao~)QJ!)iS{J~mb*5k~_8sNUX7^qRFCoSfFP)#8sQbGB{t3OT(K z#i|aEW2n`I;$7!DHgyKh&V8ZM#G9 z%3E(NB8Yk88FkZ*ml~aRQHZ$C!q^wyW?n8nIHCu{)4N`WQ)GL?+0KYQ>z&OD9IMBYH*nW4FU}Zump2+ z^Chp#w02vSU(Uct zjau8KR>Pz_a6G`v*yv9<6fOnWE04dK0wFkzD6e0Ca5cM649U*U zZl?!TIwRm`1P|uq1V(*-oz2Wy_9NUgLdR`w%dUa&eLC^RHUn&~V_VmzP&d zb2FRObf!;Idb&=wNLXlDCphvk*J?Gp+I3Sam;hTdG&J-{ zY7E158Ms|8Ej@;ncQt6ck5E+l*X&R;QJlJ&C--u3S?t$(g+s94;(pMBMU!)-+5CUl z;~yV++r)%~g!X4^J_`z>knp7*o7DPTyMwC%KFjOotigU=LQd{4IHH1q&jM!Mef|?x zMM|nf?&qH$Zwb01NZO2G(R59c(c^WtOA5IXUS}hsL|l%qfd$NLECFC*>zl zGE9f|Y)uAy;15~g5LsL_~7B`-{; zd`n!@L+snBqCBC29z9(-IKM>lIaz`^DQUi;f546JMl@!gbF<^f`5?(*C=IM689onB z&^mx^F-q?muo_P1{nS0|^1Of5_wlyv(ZRtXh0|eU$>&kK#$p1zV5MS}!Dcfr@G?3A z-aP^{Hr?mp8kE7gS{*pE(iH;Um*>tnwTsIoSoowS#Fj)Zn6D%sf79y2XD07a-;rX^n~ z23VTh7&(0B&sF(cIc3v%hIubjpVW5x_M{?LFv}$-7WU%n@C8uMx`v)eDR=DNG3Dss z&z=W3bCD`Bvelr3il?8+RS^yTRKLq#V1{!1)T|41_|qYwY~rdm%~;wV1-louse7`hol1e3UgqX>>Vj!p&1dMM;U8>?{d9o{L4I^G9GW7juk%7n ze=K$L(F@yF@#~YlIZ-9d_VzW{M26ck^~GL^WC9=7Xi&aOETXT4fk7gZpK<@uk=|d( zqFcZltno6K`8rKRi2MMF4-*!dS=UU}*=~;{V};#&!|pG~WHFQ>S6>RW!UVqNu`KlK zs7s*1-KKGM`6HHShqUpB;EYvKx}6kg$4K_>^XemMq^=pgK&(`H|C$ZyUA~>6#pK$J zQ?2!TnqXC3tmB`F^Auv18j@m7)8vw@zIuLd3C!jbGa=0_Gj$Q41I#8Q_LH?_Y%p>l zuPo&yf$c@*;OuxH^;2+fu4gEX#iqnrnnB`+Y^}zK1?A8+4}*Y%_ib1_{q{T_JA19I z4{xOa{^JO9Le4%9ZafvM-L)J5{-u!(A!v%C)yc=d4I5H))`H zKdzzzliuQf-RX)FKp#cI$0xnEY4bdC5*wzjJa>)>g&!sUaZdb_(bjC`4y`IO)_aa8vCc!`RH zYtx4I&D%n>VbK1G%zrco^ZLE0z^ne?MMehP!lStprBvVi7thKh7Z|Vpq)#oi$tpw> zAsT%6;LWo;X?K*#yHF%p3ui7lC(45!K>UVHOvYrMqc7gL1K#`k`+L#X$VyEVUtL@` z`7Tu}M>|?e^D8Qzbp_8HkFr?P?}>j`^H!yALn&Sf7shb`Tc66z|IyWwAL zp8b0c&=>hA>FI?0L+nd(1(CC?yv|==k{q>fdM>7JT+~H30rjRFOI4AGZllUJxUSwL zh_$)LkBb42V;ZBK?he`z-2tC+tvqqy(;&=FYi&Wqc^!Tp*V`H_jvYv5bbRw0TuwW>X3S$5H^ZGS}CU}1iXzWCjPcUqm z$0Sx~-0S;ekxkVpHOQdq-MQM#>$UsNPp+6TXJ{_O*K$usi6jHIK9}<;#X{5RPI2=M zO}>n|!{>eH+6cpWRZpxyLK1jb6l9pM|M8&*NB8L8H)Jf%@Bzfp($!UgwjwrQEwJkBiUKrHRDRdA+AUw7S6?C%06>+fH`v0y8OcQU zDKW@ipO+*6K>@H~1e9sJU25N)uWrfjOei*GmgGi``Vj;1F5ad7$pS*dC!v`iZw+r8 z(OEo^EAC{MwgnTMN@7~n1!UQ*vqav?r0U%|w?67DoNvc_4fMzhl^W$To?zh-SnlQ} z?s*9>L|K7Hk26F}|4dM!Sg8z8Ha_IWk0S)&>(a8-x9WzOP?t zZJcN}pQ9X}<(8-JCrfp9!QvplJr0+be=f|RUSo8=jHs<%_zgd!iOpjD;EB)rXE>rG zV0+~AzJ>i!pywzB-$ z*AMj7k9Vez-ZUyoO_`~04X2&T<{TX5!tEN02G|MNsduHDHi}a5qXDEYhkesUJcQAZ@6_{=KL}>F0=r+m zMMTOLc-a>VM5XeiC(62MqJ$nI9=(1e5N&Toq7X(x%v_(I^PFqc4kM*=MJeBy$ze1Cp{|0 zBi}2bZp5xmxh6IyCZG?MA2B;I{ZF%1yCXT{dgcM#xcm!_S}E{y5saLJ1qY#1XL}`I zz~ZJt@0{@u82d$oWC3nZ_7=cO^S^PbP%(-cJtNDJX|M3%RbQNsjy zrw6_vl40j_y%S%l8pdVzm(NyfR=Y443}DuOLoxj_0@QIZ%I69@af zJ?DA^2oFDky9#B<=)=CfOkxQl@zxuK&J#W+$f@X_7;`Mss*!e#2uw!WYHG(z!~F<9o%!hf&3KJgP-xuAbsX=Rlt4Px9sTE`ee zVZQRgrH2B*d8e`$O&m|QkVvz4r_5)ffgshpd>JA@d{w6@HCv!;5)+)EN6N}Eq zfWu`CKHX$Jmck2I8oS8s;hN0Ny#AQ~J=A7C)5$Va1cflOsKnHiY8``*vx_<@0;Mm? zFuvMUrG_Sr`=eWB_AM+4{mJ)a4L@sn3yUmOr;t=MFPJP11d9 zj8n>?2YQn4Ch#S~berzCGCDg~-`G4yqMZ``uxxJhHM@H*dW}eS#wKU#Q+5I8w$s~` z=4&?Fw!UJCOCo}h6oT(aw11WLAkxW46RK| z8oPQX@?nKW73^gMwpfiWccKk=P6tx!eFLe5Y60qUWCDGPt?;a!VWD{oO`=WCIXS;P z*oXOwomrjVke?xVtNn?7qa>IA!Wg4dPw(oB;O7Rr&lP+bd4F&I0O5%ad<^`nJB?mo zLWC1FIEYRi+r?Lr`iB}BQF0Zk_*WvnK*s&_Q*c23=;dxcRRV;)o-`b3ge*I1u_Y)- zzXwGkPN4~(n>>0t%%-M*6;GLeS&0Xrm;vO&woQ3|Iq?m7Ape7M0hx_aH5JrfyJ`BD z01hS8)D-d(L)>u>3`RK~fv=IM(J|`HYRfhxiZ%&K?2Y$-7}28*c;9fQaK*hsdi^%H zOkqxh@E>=p=HQMo9j&-{oTU7Ffj2mLK0YSHDyC6Q_K2ft2R=tVh%!`@*^z#_KE`Ke zd9wK)E;W)BOQa}adYz`88%JPP{}l0kcG%L>6|zHT&n^~i@8=t=v?t7nKx|K|c6en6 zWbil=8yqGWy1XkoC-Z9gA5x}sI%i1YdENaZ-Vw0<9bwA}0W zkC#4uPDS6ELTszwZCTTt+7m(lxPxq(>Nw?4GSa;7nk#5?oT^BPGz1sZyISb^XxE=Rpu zUj%|cIJ>vU$Nv6+Wp6!OpdEbL=%slM_gqkLx-Nn$m+uG@aRt9Stix!fACM+H3eEM9 zUsRia?h5WJ#Q;CO01BHA9uzV;kz^5C_Uf}@sD9rb?<2@1#iW$7xT7Ep|L!l{w#gUW zCHJ{f)7Zeu{Nd{p?oKs}F$ywdvnt}er`L^)ta0;i>{=`u&|$^U8eLSkrb(k9GW7Ie z^4VLX-zlWW8M@nq(6<>Hgo2$VfR zXyC`$*0f%+?oj#4;l$Hu(sDsjL);UJp46%72DW5%|th0>3`+^_nYS< zZye1?SsJ(#x8@yHmEP}X&W9U)SOF|$a=v2GEG`H0;BmlQwtGZLQu6TkiQKrIe+*Ra5QjYB;VlhQtbMz7RN&;H9 zotVtmuD?vKkpmkx7?`aC>J{+}PExzkWbt(BD~C_cs7B-d_>pYUrlzLhq>nv!+2C^m zttta4DJj4pjEy+}ZsEqEYzo`p)RfE4cwq{=EnAxr;9B)56&vdM&|}d+d0jI-hewzw znqwqX#UAW6W*gsjlfGAY>lUL@#v~CP8witzR5QtAfYvD2-?pYjsT?4P8#dBr;TZm`W_IW`PY#Yt%^Wb5*i>)+<$H z8QK3nOcF#?0R1JIz>w?13EWrRVFW3U{G6N(fWp?^-p*<~DEbDcsFQz#Ziw(&D~ zW@{ung~dEes>a=zMFNXP?64(YVsisdy&6h?&)vZ%R=UI@9G%m2JUWe7*dxpLa7sY( zXbY!x+wbo(+OXBb-$-PsapI7?o*;%V6{%SVjdVU#X$rSW8L0zL2Afo-Gdu}Ih=OP$jvk2i?+#crGX=-ghe z&$I}Q>iMQ}Q+~t5%5^4+A1@$nxv#w&q;ag%jNa z;Bjf=Okdy7fEOkLkY43(r)IOUeQ^_It4!?dJf}Q-v1>K#ic9Y7``yxox3o659j8Xk z8$E8s2}AC+Hrvi;i7BgRuCruun+;@%$A~vIa_1c0O4;5Tm6AVrfqgUL2R4(NFJV?3?G$Z zpHp0;W7)^WuF$&=HS7J<(a?oP>p$Gv-Ge>ZKT_(Xw*3ORU27~ z@w#N@Uyv(J!i+wMZMPvyH@YeI#fWM&Ds7lxNklsBPOcAU_y89@zV&C70M-UfIv~dcgm#6X= zyFU%?pYIhHJfmw5StO#*j()Bwa!?z&?mYN)uhWJ-KaXBGCI8MKEh!T}I+}xS9HUDV zS!v_PWK~mPogZsbstEcGytIK7N-VkpXEaXBDVd$W0vl{t5~$+QAT*)YU~f!9k}+Fj zS*~8yeK+{TkL&5#1m408Mi5>(*xmKGJ~0-L4i#CQ()F=^cvcTaJU~FHlqhMRTqZnR z@?+hyQ}!lR<$-6N;7At9vtK7Tb)RLFY1@|k%h=OoDHNWI#fZv#Y)RPBWZCW`p%9No zA!1{*N{=oVQ}`JzuI-VVBl}&=HE09fXho>dK)5EPcSe?9oS1lYFvY%>Iz43kJNCOmuhX*n~rR)jveOXvW z1`5$@q?jt{D9Fv_78?KK-IWlH02UVrQ@hw+>@D9o&ER7qX8G(+o&NhKhRSO0WN2eT z#J#c`5~?XAwt*weWC-QK@P7utNd39+8*d?sX!zo?R+ zez+(kbksv~QcVGV@_tAX{O-DrRkQm=9|oH@3^m*RzgU2#{DdalOl!?ISU?lkO#{FI z9V8P*vk}tMEvA9*oW8=Y+KAs(xI}?>j+X8Ce6Z~1L9`ad{ zOyJC_>kVL;$-f5=vF4JB#HOcG@YnT;`$-)IX(Sgf(GtHrz(ux5SeZ32JU+_Q6R6q! z^(_D)jl0UZ6d72?Bc-c74ffyDd4UzMzR)VY{KtZb*1V2Eo5S88P#vwgxo(Y-9yMx$ zH`6g_XD0G9UKQfin15buwwjKda|V4AbB&!R`pyn1yS1K!h#p=%ft|5bqryhpW)2N8 zOI9@Eq=#e$TLj~b6aIOlqy7}b!2%FO0`-P@B4OYbfarfXMvjANs7S3f_?`i14%Aop zlT%dRzmDD$L)X_o+oQJ8XA!7FRLFV#7JuzRq+1vRntD{{TFiI;Bs!pB<+ApAsw_wo zx3u0%lW}f`d3W@C7=gHSP1`FR=}1+#bLIqE#RjG@&9NK8&GE8c>|z!9pT70qN8T)i z3w%}8A>~W=y4|yF7si02lAIx@n;AS%Gq6-}!0lKGQf;E5&0&OMRR3G#jgC3LQV&)C z{zj=dzL)@SN*c9lgN1+S_!XTRtnZCdVpj>v=r}`PRsmI+Hi#P4>_!e^=5?ZGJ7Zmp zE=OPFJMJYGE0dO`L%tH&w8H__A-NynCXP-;wkB1x!p4VFx@migi6fzWgXT5GzY-oW za=bjsv`D)bk#P`D)c8)q4Cmd35YVT;p_H0?#aCJ2#KoQOZcoeallfDgWkBBI%Vj>( zted^IkAgf#+1W$CJ{yz{2jaMtGJgwWW}RNkc6P7qhn1JlI!zCE_{G!DRCEj_guuZB zZ`MGNV>X#^=GV8oYv82a=K=*fbXUGA)jXZEg;LI)YD7WQKgxz{ZB*7$h_YFMQENw* z^rN$jQ^2>{yrUz)nePMeCzFFR8eAfdzJQ@X@2-O!T_*U7M(Nk7hzL|{XdveOvVRJt zC_EEYyc*WdbSqJI6bg~jmPT)QnT&Z|rZhnm1ZC0}djl5bR8lNNjzu9lS)Q-|`3;Ur zwPHJSKCa)hQcZ^yxH{XpJHaRjo1B9^ls+tspo>0qV{21gG5*!70>tcb zmUTHe32Vw)7Z-}uNLxiWL=>w6=(h8|k&Q|(`8}igaDfi5r{{E4PpxVYTvPyKD`;ba zYvFq$<8;EA>Yx{|%tnQ3;a{n9sQRwKJ})#9{yOfZkAm3u@o?G`%<+@-Tg|cg`W_uc z{-hQV8H$5^$`&CLV1cZzi5b(#>Px(#zF<#C9VpYTwx-qn<|_qe`Kd#mG<+ETQ{5td zq9d-L;!%orGhdMFRQlMj{eDi&lj-H5j)b}PkFFm!%4*@?#2tV#bA%4wfKfUj&?!EH zMSV=IXo$0(1MDD2a|BGPweT_Wzzh=Q;#p^~=5;RHb8}WY(K5E}{o3)@`qBvZ9G}(T z(VL(Q2QdrvbgfqqJ6SbcjhoZ{o=aZd09`0M)mT$o1k~sR`i?}yqeTpLJx4aYxyJ)^ zMVQsVGV5F|kT#W0p;5@xdv8kU2RKC*G@{{ZPgmv|rxI=p>z~IW)Im(aHTv zt^)RQffi?9Y{fDdUx8dD$%NvPhCL|Y1!)g)0Pcn|DVe}{Y{yz})cg4s+B|ty8rC>} zxO}Nd__u+9pQ1||)u4fW>B)qJGUso3+#ZH&t(6LXhcFgtWJZQft3hGZ7|;)qSFQ}Y zwL1nNPevpkr-C0opl>8k$_rH(B9v+rY9~j&J&ktGzomnB-6o%32nwx!x)eX!&OS$2 zkbW#Guv5ipfY9f~^;B*j=YS~BLWS$+M$6x4?fx%)_w5idBLgv3%65BA3Bjd__Np!OZ!iVDw5?AHZYHzUq401lgzk&;F!flzW z>8CGn0#lgLoj08jjpdIxe;;eHdd%)r14vy!E9`4FdcG?pihAChuOdM(lk&4p>1II~bp=Mz(+ z;$jNP1gbYj$;-6+83YD&{=EV}F`Le-B*+gYr}AfJV^^YoamniKEVgaz3+3oiVS#{#w|dj^t(S~ zYm1Np?4wK+7|YAmR_0?NZxp^T$7BZsc??qQ=4EIkmv(@C|CqB83rU7XBNJK*MJsMTQTUl5tv9A zm2qk_FbJ+OFtD!&W3YQ~QF<(|VcuFFOrqgy0c7-;_b6xtA^DWv-e6Bxi=(kSCKJid zwFKz?ppo8m-fA;aNkduba5yw5g{aZ$9!Y0n%M}?6c6Xle-$k(PF(~wJNm8hEo@{t0 zIxV;e184IMqQcJ?ksbQRpjV9!b%HT}x;xDfV8^^?Zt|MLLI;^8JiQw1yG8*IyxM4( z7@yVtZxjaTPnj}1oR_h*0H?_)MRBngb%{;!k%^P+U4nSz$-09WYB4t7EWJJ@tc|-G zVZt>o|7&wTB!jyrjXPWh^=U!nSbmR-_URM>7Af8FMPBUYgpCn;Dy1@{%|lYyvj-zlkV`sBsRcU3`Ieu-$jOgxWGYK9N#1zS0ph z8_+OWvI9QOBQZk41cKu#5FuRBg$F076tcb?=e3QF>wOjOHMvNg+MyKx91jaT%lfavn50B5*Vsv-P8p|je|A~W$n3LBi z<{L}%9o88}Frx!O7b0NL`q%xo2EDU{Yr^H1A<=G`-CzZKo%<$GHyn_N1C*;nD@H)H zc0d*H`axh z|7f+P@4o__-+oLh05l-Gfe~3(H|s>TmSkG*_Hix)OqQ?wk89;^%zSeKe_0aLWlU76 zw^rp<|4P<3^`-dt~RYe|E^8%VddYw!ktfUhNT=u)l#j9!go; z1`?hb#z@##!%Tw5h_CwN?>~}vecX=no^)v(t>yY?Duep(UMXS)_bW@i!H3eL4|%v( zACxKE%I)+5Nt+p};iQs$<@)=lM?L?Bg4C=yC*Enkf z>&Hg$?-ky{qRc67LbPd1)4J%IS&$ofU_0=kpr}@ftOft#llA&&Wqg>-N~T=c<6TjK zi_E}!y1)AJ=tzH(f5OX`CpR8O|JH`!NgTo#+AyS1x#;!B`?mBtjDUQs&EeL$VxdX% zY^Oz`t7s2IPTGALYC>l3ETyFfZ}NxYAqfjo@Kn(4W!>}B&7d%+sCNb$ulDJbjt+_@ zc*ojK`xzJRPAF^N%$h%(0EWn-TMUD4+24w>?iF&ISChQSZUb3}3=ZA)T$HkryYSmZ z0*w}t3_Dy0YN%~z$MZoE#?0VpY>k8P3(P9r1AnDis~47H^w`Ld`j?nht8^0jFI6k4jq zyK7;Sb1eqOD39B)i#iTHdW-qI7ruaZiba^l z{YBaVSr*NXJ6$+HsMpbXrqXA!)B}3@D!WIj)vZ`4u5YBt$MSf=g|t}pT&}g3uzt~$ zDL#lPPy&S{&qli@L@v1T*$7xXLU=-j5?s-%+aL9 zBtSr3wJD@RYRND%5W3(UiH6o5Nos-fGct5ehY$bbb~aPYXj_TWwr6+7WSNtviz||F zNLA3TbucUn*RNo?ysh4QVFIL&`6d=ACFEPMe5B9A^Awv$X$PhuGdOnr=mtEnlqxF<5>Pc5fH%`Xo3UY3HxqE@6wA6Mv0+z2@8QEhjMk@>gV35|0+Ut zaHRj@r5#4wDHjwSigCQDX2(!VK2=!1*ga1e1Sdba(3Hv#*6MOCC(SglM8-O;y^esxp@npR#Lr_~n3Q8_K-^Bx5ww0aGK<^;(eRa?*h&UM;aI@+J!NG#X zP+w^`0#hBBm*qmfM&L?c6q4@#eqrLnfBpuBuoTt30MDnZi1?%ilgmzB5lr7>`~7!a zXS|lSLyM`jI>6B@5c2}RGgDZRp#hVaiWa#*bHf>(EI+BVJf$pfOkcv;&55V0wvQU> zlsK(lo{;)&EVO8D@h`EiJiPr8qf!?gdb^3s&?hH5)R~u9!f}zaj#GWAckzcq%N;5 zrCgaN%W8_^cqrJ|^>n?R4+e~RIYYw8A-|Vfw!(@-1bLj6+L?pJX zHiY*#OeVQf8)?_a|oo<2*sOZQ_4rN zZEgo%m&aDR@5YkzT}EAT=s7+4+=U{D>9l%xCj9+-r@z!b z0Za_wB;${U`6p{xjo(BNA9vxLC?^0bD2*EoSchD=AX*m*~)oIwb|d!G47NSA}pQt@=!}{GN#2ZS0MI0{Cn>O4KOCYYm%(1smd}%Q@KrmHxLJek%@}GDR$BrXu-t`i@)GTlgl{!KjWZ%DVIA z$EHH97wK-3nUG3|{GK`O9G&!s5?N{@jOC#bNt+cA)fh`d#n`l11-`m08Bfpz*v4?W zDKw20fWUS=6Ar^KAAWibsu>3@Aoz|+XSOhbL4k_a9#7Ba2=evVwshrZ^s(tOq_f7o z#gU2hzVA(l_>M$02hzXcr-|_Tq<4pjOB+9WBb4G*LD=GbUzLIckNdNZd%gJ?vqwLX z0s0E40XXDozcL}?3xWMWq6~CP8EAG3U!ceyG*=Ry3|0SfSr%p~&G(p!K{;JN@*@F| z)o%|!8V4hH48&rhV+i{i!M=l_KC^$@L*@Q(ZfQ8l)I9yb#vlmk-QR@kd^8d8<+K7#$~p^e1+8a%XF$aM;lBZtSOnuU@XKp_WvqAAmBYsI%mYf9F`m_G@L$=Fqr;{MRdq^;dtoOwawm~rPNdGo}pv%5;F9^=9Qd;EVyf7$eM>e~t&SZeuV?$t| zNI6@Ugzr9>uIp<^u#3|9C9zc@GY+CLiAC}4^K9W@=olVRo z)bS&h4%Y6c;W03gEefUF1Uf!m@jpLb-#MV8Te(gkG5)P%H0+sWb7jH+QBg|tHN=@Z zSOG^^qcKvcreYlfx3k$7c2Q3ry+fWr5VcB_l1j6fE9ScmrBzj{__J})iTm{2^sT9P zy1JZouv9ML!Q{#slNJ&m;Jfc>g{ScLq@CoykF}gqtL&WJ?TU5|5%RrL z6?@I?()UYxW1PB3#p%qgD}tP2^yf=%=U?U+3r(~mh6kNJtDBTP5SZS-;&PxbzdvW~ zs@!1T{J^!^6BBJPac*E(CQK&qP;4mbRtpmnp1@`v-YO{i)= zj5&oZ%wbclar{R@EPX$L?NJww%G=Lit2l{X&Fkj`hSXY`i02;w$@bzoGVPc8cFM6UVkW*Z^#1G#z>k?V}K?SHg2y8z%Sqzc%0SBxYR7_<+ zHm2fMD5zJgFTv$sy~_+U5WkniaT>;}(iD8*?Oj=`R!f)R)eYdW#{qB4Z>|i>bcfx7 zip2hVZm#}ki>ca2L+yYvkul?l1 z){^c}{KUUVrofp2zz34^>t;ieEvcAr5Kv(Yy;O=JFa=GlGfbX=efXyEqK}jzS4Fq;N9X?N@c9Yc{#rswF z3k*uINcp}3nDUeLb#q1Q2x5H}E@lB9-Xz`>ELva#%qBP<4xJ90-uo}i)d|p<*9k!b zg+ZSIOSVABKNl4~u9d|k-NptcvoLZW=-;4Y*8(D4c6$2|p z5O~q^3wRuVe^@hb4#%X@efFi(l}TU#*Ec$$Jj~^>kfXyTa>gwAY|h!1wmb~7AD{NG zgeyPYDiTrAmz&1z@&LqdD_PcKC}k;a4~fR|7O0hJdO~Q4IY;L^R(tMmrP0uwFV(oX z8W;9vn8FASZD*AIAf5Y7}M#IZ*ei1S48L66Zcg!-PT12ez$Xuh6L990P!Y(vz1GW0d`^#a0gT>*)R4Vja;ISR(nolQH>o-PMx;}|qRU!~zx zAMpD>m5?d|Um1ww>8K6YRM6S=y!@cI)!n2o1R%NSGR}Hmzx714g?~Ds{6ePBU4M$y zR+r`C{vJ(C_C9}zQRL<5=m-3XwvfWB7YXIZtI<6OM0m)}rwsX74Y!dUl-vCOmI9I~ z#m5ni%yA#*NjF^FA8yN{p}hAQmguI!#=CBJZN^j2*(4VVi^y=6k`wa znf%0Y^U*K6zPY?Mc^{(kp^Ek}+!*$pjc?`o--w+JB%Y&Gv1z9@P9dF$frw5O7i5L5 zjMAp*=BP-4L@AJ0_@gV8V%ypUeKL#TqTtDf@x!W19NrRYW1y`G^N}_-gZ^oEkL*Li z{grmtSWK?Imfeht^32B!tmu@g*};r1rOX=@8!r)%d_rG?swX2?@Ft-nkuSn)<1ymX zPREzi$JB>D6L9et^D@Z1FyEBn*0mW^-wv@ zr?SC=UkV6Ud{}acqaH)_xdXkxbavb%@o)zfS8~76Hr}X9<&pfR)l!_f-xjn|;+*0& zY=fwXr_*~iSgEAZ;geqGPT4WD7bQEoMtaH2KK*Sd!aeTUp8fD~m)z;|ZcU%2VDGTSxqkB9u6=rUK7&(<8pk<`e4^^oKHAoC( zq#kztMTsXyIaebM_JJjv`=@Sv^(zKorXI*?>!ujo(%?o2EY|z3%>IBbH+|g`dDF1| zOM3g~?TphViHemHwT@q?C=I`xb~Y|thp0kGs5OIz2G(QX4nkMBPfZ#6lbF(ty>J&p zRr!qVT;Me^-o&Wkb+v~Gsbp&0_=J~hhg5%vc@ui;-{g{bzOXv1WikwL#QPjDc8!Hi zXM!5Da{TNWKDM}!fYM*RVnO{G2^69=N2qe~{cT1SGj3$%^)K=HF13@u+Za5S7<&5c zhLE^hHGaS4dpu>|N*`3-dSJSod&W^YPSpE5hI8xQs9DHC~(JkvkC3==MZ21I;MQUZ&JeRK>gW^+lK(pM*tDKHapB~mF32ppLC zau5pTgQX-H(hcDvM;H1F#{@q@%@jjpCMW?sH`?fips3MNViF{Zt&pc;M@PT7s5ZTB zcYb=>2mCHvp@jc#KQM5V7|3~(40-wx3VuU%VftTzb~xDpBk_N}*!aI6x*@(4AbJKW zv4VPV_(aC<&H z&YYYoHlZv;LR*OJ)H1({q5jqbaKhIc`Sc-h72k)@g+c|MF~QqmGQn3wJ#5SavDAMX z6q9}&f(B&7#7`K-0Gq8t1`+6M&{yHniB#~AT6DxLQ3K*mCL!Nxu>=>UjTwe1iUR|} z_e}Dhv6dK5Eni{iW&+DT=&m!d`7VwhVyFb$C!mnP`Vc!z5Jewd*BUOwHxwfJU!W02jwzTzq#& z0H`_zHa3MhNIy{D1UlhMJup-}$SKIg4Ui2m?!yF-;VXU-iAj^orkD6Y(K~evEZg?a z*x?1}XkNM=LFVYUKuKUTbG{+)d*B3BEBv&JvC8%mzqOBg$~~+BBUW zNEz?D=vaRk6kW&}5u_bu)@*3n{erx55cW7sVP~3+JVi(TS2OTEwcPJ6Q-#%)XTg}T zoBXHR)n3dEEu>Ym0QrEp{-v(Y?r47g^mO${C1_wvCr{vhbF&yoAoE(Y;f~4J&TaeigzLXc(BJG`9}R?qCXZ ztL^`evDW=oB7WfFzvp&CYR7i9kr}*{cH(GxF12d;u@DUaG8cR+MZ>@g-{2l+zg~G? zD2CdU_>Kx_jJ($l7tp#*tejRO=EFoJYx214d~WOve0jLYWzBTw5&S@Sq!L5(c0a2h zu00ngPP-*Ig}}Ja$OE9Ini4lBz$g=Omqx`|{O5B{LoR931OYaOGde=-OxGAjj5wXu zR18SStuZkQ%*j16^iGBipT0A8WV>a!px~9<1UhZdMuwmu@M5@K-9VZ5AMiOn;&&$K zpUh^44a$w3J-lB#rx!mcO?9?|iizXgx6vbrgW&A^{o#%ULWu_a*zU;#i-&U3`N9GM z5)tg+>^>!FpCv=e8i}Da!8kguo`*?9pi02Yx1TiyXE)&%34EUN?*o8UKMmZoFJ6o@ z2>O5#HDwjsOkvx-}bx zK1JtW2ZKqBG&0iJJz8%!q#FF6c_xJ8eIFN1UZ~Ceze`Szmq*^$grM42dh-%-{WB5f z`Ol2&hRj|L^8uaVw zI4W@kT$2+KMk@OgW~u_tcdcE6aDgETmS}p-O8;nbw`*ep9S~KJQ~LH|zAXZl<4hz- zL4on}=hymM`2fJ$d$<1zU zOP@H{34qjTqydePpZ87BY>fjS>KZlZQ{kkDdK^Vk4ToDcTGf+DO|~|IHfCX~-H;Wpx;Z}t&r2dd`1K>bfD&;T zQZ6nKD&z#YI{+_n$@|tid&KNvB${0E?*9Js=g)OOND5R5aIyiFJJAPj9Edv{%r_vs zBSuC+xi~v(_IYf*7L}JJkR1h!N>1-$Zw4SS4`yqMo0@JxGM0hw zEmtcc0Qsr`K;9r@L8m#Bo+{~JOb*7n>Tq-Hu>a5-TiU%Z@`l#J<1NLY05A4=d>_Qj-D z$N?1sXUX{Ff^>9 zqg%ba+?!FXHXEVy;PJR9Nk~uyocZYJ=#u-mUAgtX(anthu~^q7hrC)!ooPIj@7u}k0S3#j3eY6uXDe41$L(grFn0Aoz z>SxGFt~qT2TcTGkLvLB~KS-io8>n{r3!?_`*^0UmTS_ULOUbHq3^ff@7j8nH@=`Kz z0f3V-cf}U4CLmSL1~vzLF;LxtMK4rk?Nq=JgqaY#BmPO|X8Pq~_vvOB+kgtRpgzeq z1)M}?X8TK}kTwE4aCF1NzYrR7@;K1i7qb`o?W8tfEE?ut2aX2393X3Gjo6#A;j4XZ zBET3khRk}|x|?<5pR+p1n=BSHk7@Z3Ux0e@sJvWaEd}N+um>yR;`9LwF;t35e3%xd zg7AqR0)6t&kBJwNrN3alv#~j4nOtG@0m(JY+wGklBp$64_)W|JN!~O1+*|xQ|0^LM&PtftQw}{uA`)uT> zx7@SMNnZq?M7&X<%h;#vG~=EEx_1Tz;oZ{3Aza^H|M-bu5$ke=9+!)?O<3OZgX;ct zpvC*f{j?(>RZE(-Cwvnl^i>Kiu9TSdx%9!sn5NRdoO!lUv{gu!YR zyH>y4u-{eZwYOIZs@(^SYR>)rKnC8aI(a}r=cA3t#h4zY{D^rK+mqq$n3?0D8FjR^ z9Xi^$orR0{#sNrss4?afdTqe_{d=oji9FbQ#T$OMFbEr}XB~$(zRudAHu&Bol0cub zzS;pN$<*AP-*QqB%q9jUOhE^)eNL5us7L)8s?O-Mep4%(hC!2bFLd-UtkZY+Bc@xN zN0XMuXI+p`elr77bfUzR^QyXCL3a-vQ|25^;Gx5=hsP=N$;q)2$d!jgC|KpgVz_%> zTLi3z?TJMZ*wmQFYOb zOtw`fKhjC&91MeXkP5s%+fYH&#xr(3pZ%)OH5>-pnE_tqSdXef92{ki6S%PSQLxG_ zK&5T~2yajRz}+vUX|@WmXkT4^f4;ZrAC9eV>CsUR>4%Cb;!p?&>@Oeqt%u_qd=70) zRc%iEZs?tj^ZanCUybu9AZ7tOaNyERgcX5J;W>noF2;XMm+8*@^rf)Eb-D%^Y;S7` z(pcHEvgH9+j~vNRc;%x;Z(Nq~T+Kgfg!wH?* zdwWH1p2g-92&XmI^P>oLGfKwVGnEgl?l+k zAOD9>K$8^m6IsUDIEcdx9jSCQEr|l6t*B^Tr9I!2q|F$(vSGjNIrrJV z{p78hxjEhH6VFOpJP>M- zDbJ}0sl9cZGf|jWHU5bCuk+&;Tf3n{cw%L5suWn&Onw39_cO$fLKF~QuhQXWT1c6` zZ?Q>4!@=BsptnB*1MxTNYBn|}GMol_AuHC`V@+OBcr?dfLYy{!b;#8H-8s{CD85kh ziHOM6VTN2<9@Vf31)rZyl;G&ey<4}pePLta6kF$Lbu9sB9Lg5@>seFd!C!6#Ur(}x z_oC-c)hN}->^5tPryS(KLK4Y=l*EL9Zc-uaXXv$hgojqobwcsuS7Xd1Ix@s67WGRY7B0_tNB_kbh=Uz?@Pm|{>RWbqanKLLA^@2Hc*Q*e&1Lr2T8{DebZzF{SdOBxz?laN%i1XKJ{eEaO5jiLJs8rjM& z6Vcg_o;nONqZ`<1Dv)-WiTiJwJdlQrKzc;H7jd{k^Q+_G)Pu-h_LlE;&@Vhh^u))& zZ^*m3&GkC2-hr`bdU1bSD^qG=@JBcMw!YOjvPeb40np9B7yIM7D=DQCp3D&*xl~GO zNT+~oSE3#>U6C0>e!`gxKcR-y)m7>DTts39crL|;)7+{-5;(9x!#)SnZlLOXi%z+X zw2_|h>NTt==*Fqf^_&lSC|1UI17R~PFESqfR2wlpEa?~yy#*Q+<~u}NiI}}aNjvly6@6_~Ewf5=6uA<} zJOV3sU%IG~F}rMZmeTzAi`qb0N+ zYwv_1>bbt=+x@`+rh;j87IB9O#Y1+Zw(?AIiaNcl+g$Y!yyQ%Aocn&kI~&EOQP4GZ zRUnNe9=aer2a@h8`2HEa`|}fo5)G6T`p9^mv1R0?CXJn8N93wsc4~}djwRuojoI6I zh@anh;{*?1q@8`aAeE^1=TupGeE2SH;;`>3_Z8>m1#(7?T0wzaN&ZXStG=-oHJ*b2 zQ~|fhQ+laEJN!6db<44huDO}KVMfPfPy& zDK~4}*91WZHG##H@nOmFYM~Iv&htpx5zsQ#I!qwcEms>V<5a$>Ll+$EG9enYOGO89 z%e$K+lOYe7QSRjdG9$l+B^L&4HZaZ2=7i^`1x#=n?65N)Gbw4EZn;0N-VqypPVC@~ zYF!$gp)WH^hb~|1Yt9j75xIlD^H3`^IXqZX-naJLbO{Nm^|>Lfn-m$a)S|dP7V@=T!Tjw7DkASf>DZY`K+n`c# zYuSq|QR$GN(l9FH{7BA5o6*zya)tGg?EN6@*4k-JHfrm=rWhs7U_Ol?)x22&NxY2% z+jXt;G&)V!_>ZY$-RqyKJuYXXov>BVHb3R}XVimN@jh*{K;FCc#V>I!73H%$8}?~| zEkrL4hYys?^ERpWM5_W^lup?E{NIhcpC&}Zt5Pt@o@tp}UG{Tx&vs`}9V14<7O&ff z*^G^&qs!}ci|v%9$S3*iiw4=wy~M}$=w8=Ss84^4ViX?xBPA`(M3;%y8WjysvT=_e z8POA;37Wz(B0N|$j54Sam>kvk+fe`iqrg2%>IoV2jc}nT#+l;FW;%gT973PeEIVZkNF=vFaN>J47FO~VY?Y$1N zQ%eeolQ=Q%PFZ3Q2A9vqp8Pc)B{&MPUX_LX4(UGhcRykUM zT6#AdinmkrrH(QG-n>wwe0PhzP_whSEBYPn34_NB5)9PV%;*+Lzu`Z(3cPP_drVrk zk$MBY2D`R+p3R7c7s&nlpV5x2{4YMP-T3ruCgAx0c^cov4bL~5F4#Vur+`0%rk+Nb Ix^>9^0L-DUPyhe` diff --git a/examples/hopfield/guiHopfield.py b/examples/hopfield/guiHopfield.py deleted file mode 100644 index 1df12e5..0000000 --- a/examples/hopfield/guiHopfield.py +++ /dev/null @@ -1,214 +0,0 @@ -import os -import sys -from PyQt4 import QtCore,QtGui -from PyQt4.QtCore import QEvent, Qt -import numpy as np -from hopfield_ui import Ui_MainWindow -from hopfield import HopfieldNetwork - -class DesignerMainWindow(QtGui.QMainWindow, Ui_MainWindow): - """Customization for Qt Designer created window""" - def __init__(self, interpreter=None,parent = None): - # initialization of the superclass - super(DesignerMainWindow, self).__init__(parent) - # setup the GUI --> function generated by pyuic4 - self.setupUi(self) - self.hop = HopfieldNetwork(100) - self.hop.setClocksHopfield() - self.defaultButtonState() - self.mem1 = [] - self.mem2 = [] - self.mem3 = [] - self.mem4 = [] - self.input = [] - self.connectElements() - self.runCount = 0 - self.runPushButton.setEnabled(False) - self.statusbar.showMessage('Hopfield Network Demo') - self.inputChanged = False - - def defaultButtonState(self): - self.mem1PushButton.setEnabled(False) - self.mem2PushButton.setEnabled(False) - self.mem3PushButton.setEnabled(False) - self.mem4PushButton.setEnabled(False) - self.inputPushButton.setEnabled(False) - - def connectElements(self): - self.connect(self.clearDisplayPushButton,QtCore.SIGNAL('clicked()'), self.clearDisplay) - self.connect(self.memorizePushButton,QtCore.SIGNAL('clicked()'),self.memorizePattern) - self.connect(self.randomizePushButton,QtCore.SIGNAL('clicked()'),self.randomizePattern) - self.connect(self.clearMemPushButton,QtCore.SIGNAL('clicked()'),self.clearMemory) - self.connect(self.runPushButton,QtCore.SIGNAL('clicked()'),self.runStep) - self.connect(self.mem1PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem1) - self.connect(self.mem2PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem2) - self.connect(self.mem3PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem3) - self.connect(self.mem4PushButton,QtCore.SIGNAL('clicked()'),self.retriveMem4) - self.connect(self.inputPushButton,QtCore.SIGNAL('clicked()'),self.retriveInput) - self.connect(self.saveInputPushButton,QtCore.SIGNAL('clicked()'),self.saveInput) - self.connect(self.aPushButton,QtCore.SIGNAL('clicked()'),self.retriveA) - self.connect(self.bPushButton,QtCore.SIGNAL('clicked()'),self.retriveB) - self.connect(self.cPushButton,QtCore.SIGNAL('clicked()'),self.retriveC) - self.connect(self.dPushButton,QtCore.SIGNAL('clicked()'),self.retriveD) - self.connect(self.computeSynWeightsPushButton,QtCore.SIGNAL('clicked()'),self.computeAllWeights) - - def saveInput(self): - print 'saving current pattern as input' - inpList = [] - for i in range(100): - exec(('inpList.append(int(self.pushButton_%s.isChecked()))' %i)) - self.input = inpList - self.inputPushButton.setEnabled(True) - self.inputChanged = True - self.runCount = 0 - - def computeAllWeights(self): - self.statusbar.showMessage('Computing synaptic weights') - self.hop.assignAllSynapticWeights() #weights are assigned - self.runPushButton.setEnabled(True) - - def runStep(self): - self.statusbar.showMessage('Running') - - if self.inputChanged: - inputPattern = self.input - self.hop.updateInputs(inputPattern) #input updating - self.hop.mooseReinit() - self.hop.runMooseHopfield(0.0310) - - if self.runCount == 0: - for i in range(100): - if np.any((self.hop.allSpikes[i].vector>0.0)&(self.hop.allSpikes[i].vector<0.0310)): - exec(('self.pushButton_%s.setChecked(True)' %i)) - else: - exec(('self.pushButton_%s.setChecked(False)' %i)) - - else: - self.hop.runMooseHopfield(0.02) - #print 0.0310+(0.02*(self.runCount-1)),(0.0310+(0.02*self.runCount)) - for i in range(100): - if np.any((self.hop.allSpikes[i].vector>(0.0301+(0.02*(self.runCount-1))))&(self.hop.allSpikes[i].vector<(0.0301+(0.02*self.runCount)))): - exec(('self.pushButton_%s.setChecked(True)' %i)) - else: - exec(('self.pushButton_%s.setChecked(False)' %i)) - - self.runCount += 1 - self.statusbar.showMessage('Done Running') - - def retriveMem1(self): - for i in range(100): - exec(('self.pushButton_%s.setChecked(self.mem1[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Mem1') - - def retriveMem2(self): - for i in range(100): - exec(('self.pushButton_%s.setChecked(self.mem2[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Mem2') - - def retriveMem3(self): - for i in range(100): - exec(('self.pushButton_%s.setChecked(self.mem3[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Mem3') - - def retriveMem4(self): - for i in range(100): - exec(('self.pushButton_%s.setChecked(self.mem4[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Mem4') - - def retriveInput(self): - for i in range(100): - exec(('self.pushButton_%s.setChecked(self.input[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Input') - - def retriveA(self): - a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - for i in range(100): - exec(('self.pushButton_%s.setChecked(a[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Sample A') - - def retriveB(self): - b = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - for i in range(100): - exec(('self.pushButton_%s.setChecked(b[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Sample B') - - def retriveC(self): - c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - for i in range(100): - exec(('self.pushButton_%s.setChecked(c[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Sample C') - - def retriveD(self): - d = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - for i in range(100): - exec(('self.pushButton_%s.setChecked(d[int(%s)])' %(i,i))) - self.statusbar.showMessage('Showing Sample D') - - def clearMemory(self): - self.hop.clearAllMemory() - self.clearDisplay() - self.defaultButtonState() - self.mem1 = [] - self.mem2 = [] - self.mem3 = [] - self.input = [] - self.statusbar.showMessage('Cleared all Memory') - self.runPushButton.setEnabled(False) - self.inputPushButton.setEnabled(False) - self.runCount = 0 - - def randomizePattern(self): - r = np.random.randint(2,size=100) - for i in range(100): - exec(('self.pushButton_%s.setChecked(r[int(%s)])' %(i,i))) - - def memorizePattern(self): - pattern = [] - for i in range(100): - exec(('pattern.append(int(self.pushButton_%s.isChecked()))' %i)) - - self.hop.updateWeights(pattern) - - for k in range(100): #very weird that I have to do this! - if pattern[k] == -1: - pattern[k] = 0 - - savedAlready = self.hop.numMemories - if savedAlready == 1: - self.mem1 = pattern - self.mem1PushButton.setEnabled(True) - #print pattern - elif savedAlready == 2: - self.mem2 = pattern - self.mem2PushButton.setEnabled(True) - #print pattern - elif savedAlready == 3: - self.mem3 = pattern - self.mem3PushButton.setEnabled(True) - elif savedAlready == 4: - self.mem4 = pattern - self.mem4PushButton.setEnabled(True) - - self.runPushButton.setEnabled(False) - - self.statusbar.showMessage('New Pattern Memorised') - - def clearDisplay(self): - for i in range(100): - exec(('self.pushButton_%s.setChecked(False)' %i)) - self.statusbar.showMessage('Cleared display') - - -app = QtGui.QApplication(sys.argv) -# instantiate the main window -dmw = DesignerMainWindow() -# show it -dmw.show() -# start the Qt main loop execution, exiting from this script -#http://code.google.com/p/subplot/source/browse/branches/mzViewer/PyMZViewer/mpl_custom_widget.py -#http://eli.thegreenplace.net/files/prog_code/qt_mpl_bars.py.txt -#http://lionel.textmalaysia.com/a-simple-tutorial-on-gui-programming-using-qt-designer-with-pyqt4.html -#http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg13241.html -# with the same return code of Qt application -sys.exit(app.exec_()) - diff --git a/examples/hopfield/hopfield.py b/examples/hopfield/hopfield.py deleted file mode 100644 index 870c9b3..0000000 --- a/examples/hopfield/hopfield.py +++ /dev/null @@ -1,193 +0,0 @@ -# __BROKEN__ -# -# A demo of a simple hopfield network using leaky integrate and fire neurons -# memory1.csv and memory2.csv have the memory being saved, the synaptic weights -# are set at start according to this memory memory must be a square matrix of -# 0's and 1's only input.csv has partial input given as input to the cells. - -# By C.H.Chaitanya This code is available under GPL3 or greater GNU license - -import moose -import math -import csv -import numpy as np -import matplotlib.pyplot as plt - -class HopfieldNetwork(): - def __init__(self,numberOfNeurons): - self.cells = [] - #self.Vms = [] - self.allSpikes = [] - #self.inTables = [] - self.inSpike = [] - self.numNeurons = numberOfNeurons - self.synWeights = [0]*self.numNeurons*self.numNeurons - self.numMemories = 0 - self.createNetwork() - - def mooseReinit(self): - moose.reinit() - - def clearAllMemory(self): - self.synWeights = [0]*self.numNeurons*self.numNeurons - self.numMemories = 0 - self.clearAllSynapticWeights() - - def readMemoryFile(self, memoryFile): - '''read a memory pattern to save from a file''' - f = open(memoryFile,'r') - testLine = f.readline() - dialect = csv.Sniffer().sniff(testLine) #to get the format of the csv - f.close() - f = open(memoryFile, 'r') - reader = csv.reader(f,dialect) - memory = [] - for row in reader: - for i in row[0:]: - memory.append(int(i)) - f.close() - - return memory - - def updateWeights(self, memory): - for i in range(self.numNeurons): - for j in range(self.numNeurons): - if i != j: - if memory[i] == 0: - memory[i] = -1 - if memory[j] == 0: - memory[j] = -1 - self.synWeights[i*len(memory)+j] += memory[i]*memory[j] - - print self.synWeights[0:100] - self.numMemories += 1 - print self.numMemories, '#number Of saved memories' - - def createNetwork(self): - '''setting up of the cells and their connections''' - hopfield = moose.Neutral('/hopfield') - pg = moose.PulseGen('/hopfield/inPulGen') - - pgTable = moose.Table('/hopfield/inPulGen/pgTable') - moose.connect(pgTable, 'requestOut', pg, 'getOutputValue') - - pg.firstDelay = 10e-3 - pg.firstWidth = 2e-03 - pg.firstLevel = 3.0 - pg.secondDelay = 1.0 - - for i in range(self.numNeurons): - cellPath = '/hopfield/cell_'+str(i) - cell = moose.IntFire(cellPath) - cell.setField('tau',10e-3) - cell.setField('refractoryPeriod', 5e-3) - cell.setField('thresh', 0.99) - cell.synapse.num = self.numNeurons - #definite firing everytime ip is given - cell.synapse[i].weight = 1.00 #synapse i = input synapse - cell.synapse[i].delay = 0.0 #1e-3 #instantaneous - - #VmVals = moose.Table(cellPath+'/Vm_cell_'+str(i)) - #moose.connect(VmVals, 'requestOut', cell, 'getVm') - spikeVals = moose.Table(cellPath+'/spike_cell_'+str(i)) - moose.connect(cell, 'spike', spikeVals, 'input') - - inSpkGen = moose.SpikeGen(cellPath+'/inSpkGen') - inSpkGen.setField('edgeTriggered', True) - inSpkGen.setField('threshold', 2.0) - moose.connect(pg, 'output', inSpkGen, 'Vm') - #inTable = moose.Table(cellPath+'/inSpkGen/inTable') - #moose.connect(inTable, 'requestOut', inSpkGen, 'getHasFired') - moose.connect(inSpkGen, 'spikeOut', cell.synapse[i] ,'addSpike') #self connection is the input - self.inSpike.append(inSpkGen) - #self.inTables.append(inTable) - #self.Vms.append(VmVals) - self.cells.append(cell) - self.allSpikes.append(spikeVals) - - for ii in range(self.numNeurons): - for jj in range(self.numNeurons): - if ii == jj: - continue - self.cells[jj].synapse[ii].weight = 0 - self.cells[jj].synapse[ii].delay = 20e-3 - moose.connect(self.cells[ii], 'spike', self.cells[jj].synapse[ii], 'addSpike') - - def updateInputs(self,inputGiven): - '''assign inputs here''' - for i in range(self.numNeurons): - if inputGiven[i] == 1: - self.inSpike[i].setField('threshold',2.0) - else: - self.inSpike[i].setField('threshold',4.0) - - def clearAllSynapticWeights(self): - for ii in range(self.numNeurons): - for jj in range(self.numNeurons): - self.cells[jj].synapse[ii].weight = 0.0 - - def assignAllSynapticWeights(self): - '''always call before runnning model''' - for ii in range(self.numNeurons): - for jj in range(self.numNeurons): - if (ii <= jj): - continue - self.cells[jj].synapse[ii].weight = float(self.synWeights[(jj*self.numNeurons)+ii]/self.numMemories) - self.cells[ii].synapse[jj].weight = float(self.synWeights[(ii*self.numNeurons)+jj]/self.numMemories) - - - def setClocksHopfield(self): - moose.setClock(0, 1e-4) - moose.useClock(0, '/hopfield/##', 'process') - - def runMooseHopfield(self,runtime): - moose.start(runtime) - -def test(runtime=0.2): - hopF = HopfieldNetwork(100) - - pattern1 = hopF.readMemoryFile('memory1.csv') - hopF.updateWeights(pattern1) - pattern2 = hopF.readMemoryFile('memory2.csv') - hopF.updateWeights(pattern2) - - #hopF.createNetwork() - hopF.assignAllSynapticWeights() - - initialInputs = hopF.readMemoryFile('input.csv') - hopF.updateInputs(initialInputs) - hopF.setClocksHopfield() - - moose.reinit() - moose.start(runtime) - - for ySet,Vm in enumerate(hopF.allSpikes): - ySpike = ySet - plt.subplot(211) - if pattern1[ySet] == 1: - plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='blue') - else: - plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='red') - plt.subplot(212) - if pattern2[ySet] == 1: - plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='blue') - else: - plt.scatter(Vm.vector[1:],ySpike*np.ones(len(Vm.vector[1:])),color='red') - - plt.subplot(211) - plt.xlim(0,0.25) - plt.ylim(0,100) - plt.xlabel('time') - plt.ylabel('neuron#') - plt.title('spikes:pattern1- red:misfire & blue:correct') - plt.subplot(212) - plt.xlim(0,0.25) - plt.ylim(0,100) - plt.xlabel('time') - plt.ylabel('neuron#') - plt.title('spikes:pattern2- red:misfire & blue:correct') - - plt.show() - -if __name__ == '__main__': - test() - diff --git a/examples/hopfield/hopfield1.py b/examples/hopfield/hopfield1.py deleted file mode 100644 index 0f50393..0000000 --- a/examples/hopfield/hopfield1.py +++ /dev/null @@ -1,132 +0,0 @@ -# __BROKEN__ -# PARTIAL DEMO -# demo of a simple hopfield network using leaky integrate and fire neurons -# memory.csv has the memory being saved, the synaptic weights are set at start according to this memory -# memory must be a square matrix of 0's and 1's only -# input.csv has partial input given as input to the cells. -# - By C.H.Chaitanya -# This code is available under GPL3 or greater GNU license -import sys -sys.path.append('../../python') - -import moose -import math -from moose.utils import * -import csv -import numpy as np -#import matplotlib.pyplot as plt -from pylab import * -#from datetime import datetime - -cell = [] -spikegen = [] -vmtable = [] -intable = {} - -def updateWeights(old_weights, training_data): - new_weights = np.array( - [x * y for x in training_data[:,0] for y in training_data[:,1] ] - ) - new_weights = new_weights.reshape(old_weights.shape) - old_weights += new_weights - return old_weights - -def createNetwork(synWeights,inputGiven): - """synWeights : 2D array. synWeights[ii][jj] is the weight of - connection from cell [ii] to cell [jj].""" - global cell - global vmtable - global spikegen - global intable -# start = datetime.now() - numberOfCells = synWeights.shape[0] - hopfield = moose.Neutral('/hopfield') - data = moose.Neutral('/data') - pg = moose.PulseGen('/hopfield/inPulGen') - pgTable = moose.Table('/hopfield/inPulGen/pgTable') - moose.connect(pgTable, 'requestOut', pg, 'getOutputValue') -# pg.firstDelay = 10e-3 -# pg.firstWidth = 2e-03 -# pg.firstLevel = 3 -# pg.secondDelay = 1.0 - pg.count = 1 - pg.level[0] = 3 - pg.width[0] = 2e-03 - pg.delay[0] = 50e-03 #every 50ms -# start1 = datetime.now() - for ii in range(numberOfCells): - cell.append(moose.IntFire('/hopfield/cell_%d' % (ii))) - cell[ii].tau = 10e-3 - cell[ii].Vm = -0.07 - cell[ii].synapse.num = numberOfCells - cell[ii].synapse[ii].delay = 1e-3 - cell[ii].synapse[ii].weight = 1.0 - cell[ii].setField('thresh', 0.98) - vmtable.append(moose.Table('/data/Vm_%d' % (ii))) - moose.connect(vmtable[ii], 'requestOut', cell[ii], 'getVm') - spikegen.append(moose.SpikeGen('/hopfield/inSpkGen_%d' % (ii))) - if inputGiven[ii] == 0: - spikegen[ii].threshold = 4.0 - else: - spikegen[ii].threshold = 2.0 - spikegen[ii].edgeTriggered = True # Redundant - intable[ii] = moose.Table('/data/inTable_%d' % (ii)) - moose.connect(pg, 'output', spikegen[ii], 'Vm') - # No self connection - so we can use the synapse [ii] for input delivery - moose.connect(spikegen[ii], 'spikeOut', cell[ii].synapse[ii], 'addSpike') - moose.connect(intable[ii], 'requestOut', spikegen[ii], 'getHasFired') -# end1 = datetime.now() - for ii in range(numberOfCells): - for jj in range(numberOfCells): - if ii == jj: - continue - cell[jj].synapse[ii].weight = float(synWeights[ii,jj]/2.0) - cell[jj].synapse[ii].delay = 20e-3 - moose.connect(cell[ii], 'spike', cell[jj].synapse[ii], 'addSpike') -# end2 = datetime.now() -# delta = end2 - start -# print 'createNetwork: Total time:', delta.seconds + delta.microseconds * 1e-6 -# delta = end1 - start1 -# print 'createNetwork: create cells:', delta.seconds + delta.microseconds * 1e-6 -# delta = end2 - end1 -# print 'createNetwork: connect cells:', delta.seconds + delta.microseconds * 1e-6 - return (cell,vmtable,pgTable, spikegen, intable) - -def update_conn(inputFileName): - inputdata = np.loadtxt(inputFileName) - for ii in range(len(spikegen)): - if inputGiven[ii] == 0: - spikegen[ii].threshold = 4.0 - else: - spiksegen[ii].threshold = 2.0 - -if __name__ == '__main__': - memoryFile1 = "memory1.csv" - memory = np.loadtxt(memoryFile1) - synWeights = np.zeros((len(memory), len(memory))) - synWeights = updateWeights(synWeights, memory) - - memoryFile2 = "memory2.csv" - memory2 = np.loadtxt(memoryFile2) - synWeights = updateWeights(synWeights, memory2) - - inputFile = "input.csv" - inputData = np.loadtxt(inputFile) - #cells,Vms,pgTable,inTables = - cell,vmtable,pgTable,spikegen,intable = createNetwork(synWeights,inputData) - moose.setClock(0, 1e-4) - moose.useClock(0, '/hopfield/##,/data/##','process') - moose.reinit() - moose.start(0.2) - ii = 0 - for vm in vmtable: - plot(np.linspace(0, 0.2, len(vm.vector)), vm.vector + ii*1.5e-7, label=vm.name) - ii += 1 - show() -# #plot(pgTable.vector[1:]) -# #for yset,inTable in enumerate(inTables): -# # plot(float(yset)+inTable.vector[1:]) -# for ySet,Vm in enumerate(Vms): -# plot(float(2*ySet)/(1e+7)+Vm.vector[1:]) -# #plot(Vms[0].vector[1:]) -# show() diff --git a/examples/hopfield/hopfield_ui.py b/examples/hopfield/hopfield_ui.py deleted file mode 100644 index 7e6b273..0000000 --- a/examples/hopfield/hopfield_ui.py +++ /dev/null @@ -1,1318 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'hopfield_ui.ui' -# -# Created: Sun Jul 8 14:11:37 2012 -# by: PyQt4 UI code generator 4.9.1 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - _fromUtf8 = lambda s: s - -class Ui_MainWindow(object): - def setupUi(self, MainWindow): - MainWindow.setObjectName(_fromUtf8("MainWindow")) - MainWindow.resize(389, 492) - MainWindow.setTabShape(QtGui.QTabWidget.Rounded) - self.centralwidget = QtGui.QWidget(MainWindow) - self.centralwidget.setObjectName(_fromUtf8("centralwidget")) - self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget) - self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) - self.gridLayout = QtGui.QGridLayout() - self.gridLayout.setObjectName(_fromUtf8("gridLayout")) - self.pushButton_16 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_16.sizePolicy().hasHeightForWidth()) - self.pushButton_16.setSizePolicy(sizePolicy) - self.pushButton_16.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_16.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_16.setText(_fromUtf8("")) - self.pushButton_16.setCheckable(True) - self.pushButton_16.setObjectName(_fromUtf8("pushButton_16")) - self.gridLayout.addWidget(self.pushButton_16, 1, 6, 1, 1) - self.pushButton_44 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_44.sizePolicy().hasHeightForWidth()) - self.pushButton_44.setSizePolicy(sizePolicy) - self.pushButton_44.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_44.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_44.setText(_fromUtf8("")) - self.pushButton_44.setCheckable(True) - self.pushButton_44.setObjectName(_fromUtf8("pushButton_44")) - self.gridLayout.addWidget(self.pushButton_44, 4, 4, 1, 1) - self.pushButton_45 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_45.sizePolicy().hasHeightForWidth()) - self.pushButton_45.setSizePolicy(sizePolicy) - self.pushButton_45.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_45.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_45.setText(_fromUtf8("")) - self.pushButton_45.setCheckable(True) - self.pushButton_45.setObjectName(_fromUtf8("pushButton_45")) - self.gridLayout.addWidget(self.pushButton_45, 4, 5, 1, 1) - self.pushButton_31 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_31.sizePolicy().hasHeightForWidth()) - self.pushButton_31.setSizePolicy(sizePolicy) - self.pushButton_31.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_31.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_31.setText(_fromUtf8("")) - self.pushButton_31.setCheckable(True) - self.pushButton_31.setObjectName(_fromUtf8("pushButton_31")) - self.gridLayout.addWidget(self.pushButton_31, 3, 1, 1, 1) - self.pushButton_82 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_82.sizePolicy().hasHeightForWidth()) - self.pushButton_82.setSizePolicy(sizePolicy) - self.pushButton_82.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_82.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_82.setText(_fromUtf8("")) - self.pushButton_82.setCheckable(True) - self.pushButton_82.setObjectName(_fromUtf8("pushButton_82")) - self.gridLayout.addWidget(self.pushButton_82, 8, 2, 1, 1) - self.pushButton_98 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_98.sizePolicy().hasHeightForWidth()) - self.pushButton_98.setSizePolicy(sizePolicy) - self.pushButton_98.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_98.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_98.setText(_fromUtf8("")) - self.pushButton_98.setCheckable(True) - self.pushButton_98.setObjectName(_fromUtf8("pushButton_98")) - self.gridLayout.addWidget(self.pushButton_98, 9, 8, 1, 1) - self.pushButton_20 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_20.sizePolicy().hasHeightForWidth()) - self.pushButton_20.setSizePolicy(sizePolicy) - self.pushButton_20.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_20.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_20.setText(_fromUtf8("")) - self.pushButton_20.setCheckable(True) - self.pushButton_20.setObjectName(_fromUtf8("pushButton_20")) - self.gridLayout.addWidget(self.pushButton_20, 2, 0, 1, 1) - self.pushButton_96 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_96.sizePolicy().hasHeightForWidth()) - self.pushButton_96.setSizePolicy(sizePolicy) - self.pushButton_96.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_96.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_96.setText(_fromUtf8("")) - self.pushButton_96.setCheckable(True) - self.pushButton_96.setObjectName(_fromUtf8("pushButton_96")) - self.gridLayout.addWidget(self.pushButton_96, 9, 6, 1, 1) - self.pushButton_65 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_65.sizePolicy().hasHeightForWidth()) - self.pushButton_65.setSizePolicy(sizePolicy) - self.pushButton_65.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_65.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_65.setText(_fromUtf8("")) - self.pushButton_65.setCheckable(True) - self.pushButton_65.setObjectName(_fromUtf8("pushButton_65")) - self.gridLayout.addWidget(self.pushButton_65, 6, 5, 1, 1) - self.pushButton_72 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_72.sizePolicy().hasHeightForWidth()) - self.pushButton_72.setSizePolicy(sizePolicy) - self.pushButton_72.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_72.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_72.setText(_fromUtf8("")) - self.pushButton_72.setCheckable(True) - self.pushButton_72.setObjectName(_fromUtf8("pushButton_72")) - self.gridLayout.addWidget(self.pushButton_72, 7, 2, 1, 1) - self.pushButton_91 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_91.sizePolicy().hasHeightForWidth()) - self.pushButton_91.setSizePolicy(sizePolicy) - self.pushButton_91.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_91.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_91.setText(_fromUtf8("")) - self.pushButton_91.setCheckable(True) - self.pushButton_91.setObjectName(_fromUtf8("pushButton_91")) - self.gridLayout.addWidget(self.pushButton_91, 9, 1, 1, 1) - self.pushButton_41 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_41.sizePolicy().hasHeightForWidth()) - self.pushButton_41.setSizePolicy(sizePolicy) - self.pushButton_41.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_41.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_41.setText(_fromUtf8("")) - self.pushButton_41.setCheckable(True) - self.pushButton_41.setObjectName(_fromUtf8("pushButton_41")) - self.gridLayout.addWidget(self.pushButton_41, 4, 1, 1, 1) - self.pushButton_83 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_83.sizePolicy().hasHeightForWidth()) - self.pushButton_83.setSizePolicy(sizePolicy) - self.pushButton_83.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_83.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_83.setText(_fromUtf8("")) - self.pushButton_83.setCheckable(True) - self.pushButton_83.setObjectName(_fromUtf8("pushButton_83")) - self.gridLayout.addWidget(self.pushButton_83, 8, 3, 1, 1) - self.pushButton_3 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_3.sizePolicy().hasHeightForWidth()) - self.pushButton_3.setSizePolicy(sizePolicy) - self.pushButton_3.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_3.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_3.setText(_fromUtf8("")) - self.pushButton_3.setCheckable(True) - self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) - self.gridLayout.addWidget(self.pushButton_3, 0, 3, 1, 1) - self.pushButton_22 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_22.sizePolicy().hasHeightForWidth()) - self.pushButton_22.setSizePolicy(sizePolicy) - self.pushButton_22.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_22.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_22.setText(_fromUtf8("")) - self.pushButton_22.setCheckable(True) - self.pushButton_22.setObjectName(_fromUtf8("pushButton_22")) - self.gridLayout.addWidget(self.pushButton_22, 2, 2, 1, 1) - self.pushButton_8 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_8.sizePolicy().hasHeightForWidth()) - self.pushButton_8.setSizePolicy(sizePolicy) - self.pushButton_8.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_8.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_8.setText(_fromUtf8("")) - self.pushButton_8.setCheckable(True) - self.pushButton_8.setObjectName(_fromUtf8("pushButton_8")) - self.gridLayout.addWidget(self.pushButton_8, 0, 8, 1, 1) - self.pushButton_59 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_59.sizePolicy().hasHeightForWidth()) - self.pushButton_59.setSizePolicy(sizePolicy) - self.pushButton_59.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_59.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_59.setText(_fromUtf8("")) - self.pushButton_59.setCheckable(True) - self.pushButton_59.setObjectName(_fromUtf8("pushButton_59")) - self.gridLayout.addWidget(self.pushButton_59, 5, 9, 1, 1) - self.pushButton_17 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_17.sizePolicy().hasHeightForWidth()) - self.pushButton_17.setSizePolicy(sizePolicy) - self.pushButton_17.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_17.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_17.setText(_fromUtf8("")) - self.pushButton_17.setCheckable(True) - self.pushButton_17.setObjectName(_fromUtf8("pushButton_17")) - self.gridLayout.addWidget(self.pushButton_17, 1, 7, 1, 1) - self.pushButton_9 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_9.sizePolicy().hasHeightForWidth()) - self.pushButton_9.setSizePolicy(sizePolicy) - self.pushButton_9.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_9.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_9.setText(_fromUtf8("")) - self.pushButton_9.setCheckable(True) - self.pushButton_9.setObjectName(_fromUtf8("pushButton_9")) - self.gridLayout.addWidget(self.pushButton_9, 0, 9, 1, 1) - self.pushButton_15 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_15.sizePolicy().hasHeightForWidth()) - self.pushButton_15.setSizePolicy(sizePolicy) - self.pushButton_15.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_15.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_15.setText(_fromUtf8("")) - self.pushButton_15.setCheckable(True) - self.pushButton_15.setObjectName(_fromUtf8("pushButton_15")) - self.gridLayout.addWidget(self.pushButton_15, 1, 5, 1, 1) - self.pushButton_4 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_4.sizePolicy().hasHeightForWidth()) - self.pushButton_4.setSizePolicy(sizePolicy) - self.pushButton_4.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_4.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_4.setText(_fromUtf8("")) - self.pushButton_4.setCheckable(True) - self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) - self.gridLayout.addWidget(self.pushButton_4, 0, 4, 1, 1) - self.pushButton_80 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_80.sizePolicy().hasHeightForWidth()) - self.pushButton_80.setSizePolicy(sizePolicy) - self.pushButton_80.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_80.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_80.setText(_fromUtf8("")) - self.pushButton_80.setCheckable(True) - self.pushButton_80.setObjectName(_fromUtf8("pushButton_80")) - self.gridLayout.addWidget(self.pushButton_80, 8, 0, 1, 1) - self.pushButton_30 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_30.sizePolicy().hasHeightForWidth()) - self.pushButton_30.setSizePolicy(sizePolicy) - self.pushButton_30.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_30.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_30.setText(_fromUtf8("")) - self.pushButton_30.setCheckable(True) - self.pushButton_30.setObjectName(_fromUtf8("pushButton_30")) - self.gridLayout.addWidget(self.pushButton_30, 3, 0, 1, 1) - self.pushButton_0 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_0.sizePolicy().hasHeightForWidth()) - self.pushButton_0.setSizePolicy(sizePolicy) - self.pushButton_0.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_0.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_0.setText(_fromUtf8("")) - self.pushButton_0.setCheckable(True) - self.pushButton_0.setObjectName(_fromUtf8("pushButton_0")) - self.gridLayout.addWidget(self.pushButton_0, 0, 0, 1, 1) - self.pushButton_97 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_97.sizePolicy().hasHeightForWidth()) - self.pushButton_97.setSizePolicy(sizePolicy) - self.pushButton_97.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_97.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_97.setText(_fromUtf8("")) - self.pushButton_97.setCheckable(True) - self.pushButton_97.setObjectName(_fromUtf8("pushButton_97")) - self.gridLayout.addWidget(self.pushButton_97, 9, 7, 1, 1) - self.pushButton_63 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_63.sizePolicy().hasHeightForWidth()) - self.pushButton_63.setSizePolicy(sizePolicy) - self.pushButton_63.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_63.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_63.setText(_fromUtf8("")) - self.pushButton_63.setCheckable(True) - self.pushButton_63.setObjectName(_fromUtf8("pushButton_63")) - self.gridLayout.addWidget(self.pushButton_63, 6, 3, 1, 1) - self.pushButton_71 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_71.sizePolicy().hasHeightForWidth()) - self.pushButton_71.setSizePolicy(sizePolicy) - self.pushButton_71.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_71.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_71.setText(_fromUtf8("")) - self.pushButton_71.setCheckable(True) - self.pushButton_71.setObjectName(_fromUtf8("pushButton_71")) - self.gridLayout.addWidget(self.pushButton_71, 7, 1, 1, 1) - self.pushButton_26 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_26.sizePolicy().hasHeightForWidth()) - self.pushButton_26.setSizePolicy(sizePolicy) - self.pushButton_26.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_26.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_26.setText(_fromUtf8("")) - self.pushButton_26.setCheckable(True) - self.pushButton_26.setObjectName(_fromUtf8("pushButton_26")) - self.gridLayout.addWidget(self.pushButton_26, 2, 6, 1, 1) - self.pushButton_35 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_35.sizePolicy().hasHeightForWidth()) - self.pushButton_35.setSizePolicy(sizePolicy) - self.pushButton_35.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_35.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_35.setText(_fromUtf8("")) - self.pushButton_35.setCheckable(True) - self.pushButton_35.setObjectName(_fromUtf8("pushButton_35")) - self.gridLayout.addWidget(self.pushButton_35, 3, 5, 1, 1) - self.pushButton_32 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_32.sizePolicy().hasHeightForWidth()) - self.pushButton_32.setSizePolicy(sizePolicy) - self.pushButton_32.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_32.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_32.setText(_fromUtf8("")) - self.pushButton_32.setCheckable(True) - self.pushButton_32.setObjectName(_fromUtf8("pushButton_32")) - self.gridLayout.addWidget(self.pushButton_32, 3, 2, 1, 1) - self.pushButton_81 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_81.sizePolicy().hasHeightForWidth()) - self.pushButton_81.setSizePolicy(sizePolicy) - self.pushButton_81.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_81.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_81.setText(_fromUtf8("")) - self.pushButton_81.setCheckable(True) - self.pushButton_81.setObjectName(_fromUtf8("pushButton_81")) - self.gridLayout.addWidget(self.pushButton_81, 8, 1, 1, 1) - self.pushButton_25 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_25.sizePolicy().hasHeightForWidth()) - self.pushButton_25.setSizePolicy(sizePolicy) - self.pushButton_25.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_25.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_25.setText(_fromUtf8("")) - self.pushButton_25.setCheckable(True) - self.pushButton_25.setObjectName(_fromUtf8("pushButton_25")) - self.gridLayout.addWidget(self.pushButton_25, 2, 5, 1, 1) - self.pushButton_79 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_79.sizePolicy().hasHeightForWidth()) - self.pushButton_79.setSizePolicy(sizePolicy) - self.pushButton_79.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_79.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_79.setText(_fromUtf8("")) - self.pushButton_79.setCheckable(True) - self.pushButton_79.setObjectName(_fromUtf8("pushButton_79")) - self.gridLayout.addWidget(self.pushButton_79, 7, 9, 1, 1) - self.pushButton_24 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_24.sizePolicy().hasHeightForWidth()) - self.pushButton_24.setSizePolicy(sizePolicy) - self.pushButton_24.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_24.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_24.setText(_fromUtf8("")) - self.pushButton_24.setCheckable(True) - self.pushButton_24.setObjectName(_fromUtf8("pushButton_24")) - self.gridLayout.addWidget(self.pushButton_24, 2, 4, 1, 1) - self.pushButton_28 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_28.sizePolicy().hasHeightForWidth()) - self.pushButton_28.setSizePolicy(sizePolicy) - self.pushButton_28.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_28.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_28.setText(_fromUtf8("")) - self.pushButton_28.setCheckable(True) - self.pushButton_28.setObjectName(_fromUtf8("pushButton_28")) - self.gridLayout.addWidget(self.pushButton_28, 2, 8, 1, 1) - self.pushButton_33 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_33.sizePolicy().hasHeightForWidth()) - self.pushButton_33.setSizePolicy(sizePolicy) - self.pushButton_33.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_33.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_33.setText(_fromUtf8("")) - self.pushButton_33.setCheckable(True) - self.pushButton_33.setObjectName(_fromUtf8("pushButton_33")) - self.gridLayout.addWidget(self.pushButton_33, 3, 3, 1, 1) - self.pushButton_76 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_76.sizePolicy().hasHeightForWidth()) - self.pushButton_76.setSizePolicy(sizePolicy) - self.pushButton_76.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_76.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_76.setText(_fromUtf8("")) - self.pushButton_76.setCheckable(True) - self.pushButton_76.setObjectName(_fromUtf8("pushButton_76")) - self.gridLayout.addWidget(self.pushButton_76, 7, 6, 1, 1) - self.pushButton_51 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_51.sizePolicy().hasHeightForWidth()) - self.pushButton_51.setSizePolicy(sizePolicy) - self.pushButton_51.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_51.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_51.setText(_fromUtf8("")) - self.pushButton_51.setCheckable(True) - self.pushButton_51.setObjectName(_fromUtf8("pushButton_51")) - self.gridLayout.addWidget(self.pushButton_51, 5, 1, 1, 1) - self.pushButton_55 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_55.sizePolicy().hasHeightForWidth()) - self.pushButton_55.setSizePolicy(sizePolicy) - self.pushButton_55.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_55.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_55.setText(_fromUtf8("")) - self.pushButton_55.setCheckable(True) - self.pushButton_55.setObjectName(_fromUtf8("pushButton_55")) - self.gridLayout.addWidget(self.pushButton_55, 5, 5, 1, 1) - self.pushButton_93 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_93.sizePolicy().hasHeightForWidth()) - self.pushButton_93.setSizePolicy(sizePolicy) - self.pushButton_93.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_93.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_93.setText(_fromUtf8("")) - self.pushButton_93.setCheckable(True) - self.pushButton_93.setObjectName(_fromUtf8("pushButton_93")) - self.gridLayout.addWidget(self.pushButton_93, 9, 3, 1, 1) - self.pushButton_5 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_5.sizePolicy().hasHeightForWidth()) - self.pushButton_5.setSizePolicy(sizePolicy) - self.pushButton_5.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_5.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_5.setText(_fromUtf8("")) - self.pushButton_5.setCheckable(True) - self.pushButton_5.setObjectName(_fromUtf8("pushButton_5")) - self.gridLayout.addWidget(self.pushButton_5, 0, 5, 1, 1) - self.pushButton_12 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_12.sizePolicy().hasHeightForWidth()) - self.pushButton_12.setSizePolicy(sizePolicy) - self.pushButton_12.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_12.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_12.setText(_fromUtf8("")) - self.pushButton_12.setCheckable(True) - self.pushButton_12.setObjectName(_fromUtf8("pushButton_12")) - self.gridLayout.addWidget(self.pushButton_12, 1, 2, 1, 1) - self.pushButton_60 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_60.sizePolicy().hasHeightForWidth()) - self.pushButton_60.setSizePolicy(sizePolicy) - self.pushButton_60.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_60.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_60.setText(_fromUtf8("")) - self.pushButton_60.setCheckable(True) - self.pushButton_60.setObjectName(_fromUtf8("pushButton_60")) - self.gridLayout.addWidget(self.pushButton_60, 6, 0, 1, 1) - self.pushButton_64 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_64.sizePolicy().hasHeightForWidth()) - self.pushButton_64.setSizePolicy(sizePolicy) - self.pushButton_64.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_64.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_64.setText(_fromUtf8("")) - self.pushButton_64.setCheckable(True) - self.pushButton_64.setObjectName(_fromUtf8("pushButton_64")) - self.gridLayout.addWidget(self.pushButton_64, 6, 4, 1, 1) - self.pushButton_68 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_68.sizePolicy().hasHeightForWidth()) - self.pushButton_68.setSizePolicy(sizePolicy) - self.pushButton_68.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_68.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_68.setText(_fromUtf8("")) - self.pushButton_68.setCheckable(True) - self.pushButton_68.setObjectName(_fromUtf8("pushButton_68")) - self.gridLayout.addWidget(self.pushButton_68, 6, 8, 1, 1) - self.pushButton_46 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_46.sizePolicy().hasHeightForWidth()) - self.pushButton_46.setSizePolicy(sizePolicy) - self.pushButton_46.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_46.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_46.setText(_fromUtf8("")) - self.pushButton_46.setCheckable(True) - self.pushButton_46.setObjectName(_fromUtf8("pushButton_46")) - self.gridLayout.addWidget(self.pushButton_46, 4, 6, 1, 1) - self.pushButton_1 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_1.sizePolicy().hasHeightForWidth()) - self.pushButton_1.setSizePolicy(sizePolicy) - self.pushButton_1.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_1.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_1.setText(_fromUtf8("")) - self.pushButton_1.setCheckable(True) - self.pushButton_1.setObjectName(_fromUtf8("pushButton_1")) - self.gridLayout.addWidget(self.pushButton_1, 0, 1, 1, 1) - self.pushButton_58 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_58.sizePolicy().hasHeightForWidth()) - self.pushButton_58.setSizePolicy(sizePolicy) - self.pushButton_58.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_58.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_58.setText(_fromUtf8("")) - self.pushButton_58.setCheckable(True) - self.pushButton_58.setObjectName(_fromUtf8("pushButton_58")) - self.gridLayout.addWidget(self.pushButton_58, 5, 8, 1, 1) - self.pushButton_48 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_48.sizePolicy().hasHeightForWidth()) - self.pushButton_48.setSizePolicy(sizePolicy) - self.pushButton_48.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_48.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_48.setText(_fromUtf8("")) - self.pushButton_48.setCheckable(True) - self.pushButton_48.setObjectName(_fromUtf8("pushButton_48")) - self.gridLayout.addWidget(self.pushButton_48, 4, 8, 1, 1) - self.pushButton_47 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_47.sizePolicy().hasHeightForWidth()) - self.pushButton_47.setSizePolicy(sizePolicy) - self.pushButton_47.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_47.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_47.setText(_fromUtf8("")) - self.pushButton_47.setCheckable(True) - self.pushButton_47.setObjectName(_fromUtf8("pushButton_47")) - self.gridLayout.addWidget(self.pushButton_47, 4, 7, 1, 1) - self.pushButton_29 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_29.sizePolicy().hasHeightForWidth()) - self.pushButton_29.setSizePolicy(sizePolicy) - self.pushButton_29.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_29.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_29.setText(_fromUtf8("")) - self.pushButton_29.setCheckable(True) - self.pushButton_29.setObjectName(_fromUtf8("pushButton_29")) - self.gridLayout.addWidget(self.pushButton_29, 2, 9, 1, 1) - self.pushButton_73 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_73.sizePolicy().hasHeightForWidth()) - self.pushButton_73.setSizePolicy(sizePolicy) - self.pushButton_73.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_73.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_73.setText(_fromUtf8("")) - self.pushButton_73.setCheckable(True) - self.pushButton_73.setObjectName(_fromUtf8("pushButton_73")) - self.gridLayout.addWidget(self.pushButton_73, 7, 3, 1, 1) - self.pushButton_99 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_99.sizePolicy().hasHeightForWidth()) - self.pushButton_99.setSizePolicy(sizePolicy) - self.pushButton_99.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_99.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_99.setText(_fromUtf8("")) - self.pushButton_99.setCheckable(True) - self.pushButton_99.setObjectName(_fromUtf8("pushButton_99")) - self.gridLayout.addWidget(self.pushButton_99, 9, 9, 1, 1) - self.pushButton_57 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_57.sizePolicy().hasHeightForWidth()) - self.pushButton_57.setSizePolicy(sizePolicy) - self.pushButton_57.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_57.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_57.setText(_fromUtf8("")) - self.pushButton_57.setCheckable(True) - self.pushButton_57.setObjectName(_fromUtf8("pushButton_57")) - self.gridLayout.addWidget(self.pushButton_57, 5, 7, 1, 1) - self.pushButton_85 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_85.sizePolicy().hasHeightForWidth()) - self.pushButton_85.setSizePolicy(sizePolicy) - self.pushButton_85.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_85.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_85.setText(_fromUtf8("")) - self.pushButton_85.setCheckable(True) - self.pushButton_85.setObjectName(_fromUtf8("pushButton_85")) - self.gridLayout.addWidget(self.pushButton_85, 8, 5, 1, 1) - self.pushButton_74 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_74.sizePolicy().hasHeightForWidth()) - self.pushButton_74.setSizePolicy(sizePolicy) - self.pushButton_74.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_74.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_74.setText(_fromUtf8("")) - self.pushButton_74.setCheckable(True) - self.pushButton_74.setObjectName(_fromUtf8("pushButton_74")) - self.gridLayout.addWidget(self.pushButton_74, 7, 4, 1, 1) - self.pushButton_10 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_10.sizePolicy().hasHeightForWidth()) - self.pushButton_10.setSizePolicy(sizePolicy) - self.pushButton_10.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_10.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_10.setText(_fromUtf8("")) - self.pushButton_10.setCheckable(True) - self.pushButton_10.setObjectName(_fromUtf8("pushButton_10")) - self.gridLayout.addWidget(self.pushButton_10, 1, 0, 1, 1) - self.pushButton_37 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_37.sizePolicy().hasHeightForWidth()) - self.pushButton_37.setSizePolicy(sizePolicy) - self.pushButton_37.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_37.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_37.setText(_fromUtf8("")) - self.pushButton_37.setCheckable(True) - self.pushButton_37.setObjectName(_fromUtf8("pushButton_37")) - self.gridLayout.addWidget(self.pushButton_37, 3, 7, 1, 1) - self.pushButton_13 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_13.sizePolicy().hasHeightForWidth()) - self.pushButton_13.setSizePolicy(sizePolicy) - self.pushButton_13.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_13.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_13.setText(_fromUtf8("")) - self.pushButton_13.setCheckable(True) - self.pushButton_13.setObjectName(_fromUtf8("pushButton_13")) - self.gridLayout.addWidget(self.pushButton_13, 1, 3, 1, 1) - self.pushButton_43 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_43.sizePolicy().hasHeightForWidth()) - self.pushButton_43.setSizePolicy(sizePolicy) - self.pushButton_43.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_43.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_43.setText(_fromUtf8("")) - self.pushButton_43.setCheckable(True) - self.pushButton_43.setObjectName(_fromUtf8("pushButton_43")) - self.gridLayout.addWidget(self.pushButton_43, 4, 3, 1, 1) - self.pushButton_36 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_36.sizePolicy().hasHeightForWidth()) - self.pushButton_36.setSizePolicy(sizePolicy) - self.pushButton_36.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_36.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_36.setText(_fromUtf8("")) - self.pushButton_36.setCheckable(True) - self.pushButton_36.setObjectName(_fromUtf8("pushButton_36")) - self.gridLayout.addWidget(self.pushButton_36, 3, 6, 1, 1) - self.pushButton_61 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_61.sizePolicy().hasHeightForWidth()) - self.pushButton_61.setSizePolicy(sizePolicy) - self.pushButton_61.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_61.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_61.setText(_fromUtf8("")) - self.pushButton_61.setCheckable(True) - self.pushButton_61.setObjectName(_fromUtf8("pushButton_61")) - self.gridLayout.addWidget(self.pushButton_61, 6, 1, 1, 1) - self.pushButton_84 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_84.sizePolicy().hasHeightForWidth()) - self.pushButton_84.setSizePolicy(sizePolicy) - self.pushButton_84.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_84.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_84.setText(_fromUtf8("")) - self.pushButton_84.setCheckable(True) - self.pushButton_84.setObjectName(_fromUtf8("pushButton_84")) - self.gridLayout.addWidget(self.pushButton_84, 8, 4, 1, 1) - self.pushButton_87 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_87.sizePolicy().hasHeightForWidth()) - self.pushButton_87.setSizePolicy(sizePolicy) - self.pushButton_87.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_87.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_87.setText(_fromUtf8("")) - self.pushButton_87.setCheckable(True) - self.pushButton_87.setObjectName(_fromUtf8("pushButton_87")) - self.gridLayout.addWidget(self.pushButton_87, 8, 7, 1, 1) - self.pushButton_6 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_6.sizePolicy().hasHeightForWidth()) - self.pushButton_6.setSizePolicy(sizePolicy) - self.pushButton_6.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_6.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_6.setText(_fromUtf8("")) - self.pushButton_6.setCheckable(True) - self.pushButton_6.setObjectName(_fromUtf8("pushButton_6")) - self.gridLayout.addWidget(self.pushButton_6, 0, 6, 1, 1) - self.pushButton_78 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_78.sizePolicy().hasHeightForWidth()) - self.pushButton_78.setSizePolicy(sizePolicy) - self.pushButton_78.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_78.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_78.setText(_fromUtf8("")) - self.pushButton_78.setCheckable(True) - self.pushButton_78.setObjectName(_fromUtf8("pushButton_78")) - self.gridLayout.addWidget(self.pushButton_78, 7, 8, 1, 1) - self.pushButton_94 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_94.sizePolicy().hasHeightForWidth()) - self.pushButton_94.setSizePolicy(sizePolicy) - self.pushButton_94.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_94.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_94.setText(_fromUtf8("")) - self.pushButton_94.setCheckable(True) - self.pushButton_94.setObjectName(_fromUtf8("pushButton_94")) - self.gridLayout.addWidget(self.pushButton_94, 9, 4, 1, 1) - self.pushButton_39 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_39.sizePolicy().hasHeightForWidth()) - self.pushButton_39.setSizePolicy(sizePolicy) - self.pushButton_39.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_39.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_39.setText(_fromUtf8("")) - self.pushButton_39.setCheckable(True) - self.pushButton_39.setObjectName(_fromUtf8("pushButton_39")) - self.gridLayout.addWidget(self.pushButton_39, 3, 9, 1, 1) - self.pushButton_90 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_90.sizePolicy().hasHeightForWidth()) - self.pushButton_90.setSizePolicy(sizePolicy) - self.pushButton_90.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_90.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_90.setText(_fromUtf8("")) - self.pushButton_90.setCheckable(True) - self.pushButton_90.setObjectName(_fromUtf8("pushButton_90")) - self.gridLayout.addWidget(self.pushButton_90, 9, 0, 1, 1) - self.pushButton_23 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_23.sizePolicy().hasHeightForWidth()) - self.pushButton_23.setSizePolicy(sizePolicy) - self.pushButton_23.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_23.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_23.setText(_fromUtf8("")) - self.pushButton_23.setCheckable(True) - self.pushButton_23.setObjectName(_fromUtf8("pushButton_23")) - self.gridLayout.addWidget(self.pushButton_23, 2, 3, 1, 1) - self.pushButton_42 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_42.sizePolicy().hasHeightForWidth()) - self.pushButton_42.setSizePolicy(sizePolicy) - self.pushButton_42.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_42.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_42.setText(_fromUtf8("")) - self.pushButton_42.setCheckable(True) - self.pushButton_42.setObjectName(_fromUtf8("pushButton_42")) - self.gridLayout.addWidget(self.pushButton_42, 4, 2, 1, 1) - self.pushButton_70 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_70.sizePolicy().hasHeightForWidth()) - self.pushButton_70.setSizePolicy(sizePolicy) - self.pushButton_70.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_70.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_70.setText(_fromUtf8("")) - self.pushButton_70.setCheckable(True) - self.pushButton_70.setObjectName(_fromUtf8("pushButton_70")) - self.gridLayout.addWidget(self.pushButton_70, 7, 0, 1, 1) - self.pushButton_19 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_19.sizePolicy().hasHeightForWidth()) - self.pushButton_19.setSizePolicy(sizePolicy) - self.pushButton_19.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_19.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_19.setText(_fromUtf8("")) - self.pushButton_19.setCheckable(True) - self.pushButton_19.setObjectName(_fromUtf8("pushButton_19")) - self.gridLayout.addWidget(self.pushButton_19, 1, 9, 1, 1) - self.pushButton_34 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_34.sizePolicy().hasHeightForWidth()) - self.pushButton_34.setSizePolicy(sizePolicy) - self.pushButton_34.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_34.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_34.setText(_fromUtf8("")) - self.pushButton_34.setCheckable(True) - self.pushButton_34.setObjectName(_fromUtf8("pushButton_34")) - self.gridLayout.addWidget(self.pushButton_34, 3, 4, 1, 1) - self.pushButton_62 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_62.sizePolicy().hasHeightForWidth()) - self.pushButton_62.setSizePolicy(sizePolicy) - self.pushButton_62.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_62.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_62.setText(_fromUtf8("")) - self.pushButton_62.setCheckable(True) - self.pushButton_62.setObjectName(_fromUtf8("pushButton_62")) - self.gridLayout.addWidget(self.pushButton_62, 6, 2, 1, 1) - self.pushButton_18 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_18.sizePolicy().hasHeightForWidth()) - self.pushButton_18.setSizePolicy(sizePolicy) - self.pushButton_18.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_18.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_18.setText(_fromUtf8("")) - self.pushButton_18.setCheckable(True) - self.pushButton_18.setObjectName(_fromUtf8("pushButton_18")) - self.gridLayout.addWidget(self.pushButton_18, 1, 8, 1, 1) - self.pushButton_49 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_49.sizePolicy().hasHeightForWidth()) - self.pushButton_49.setSizePolicy(sizePolicy) - self.pushButton_49.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_49.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_49.setText(_fromUtf8("")) - self.pushButton_49.setCheckable(True) - self.pushButton_49.setObjectName(_fromUtf8("pushButton_49")) - self.gridLayout.addWidget(self.pushButton_49, 4, 9, 1, 1) - self.pushButton_14 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_14.sizePolicy().hasHeightForWidth()) - self.pushButton_14.setSizePolicy(sizePolicy) - self.pushButton_14.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_14.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_14.setText(_fromUtf8("")) - self.pushButton_14.setCheckable(True) - self.pushButton_14.setObjectName(_fromUtf8("pushButton_14")) - self.gridLayout.addWidget(self.pushButton_14, 1, 4, 1, 1) - self.pushButton_27 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_27.sizePolicy().hasHeightForWidth()) - self.pushButton_27.setSizePolicy(sizePolicy) - self.pushButton_27.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_27.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_27.setText(_fromUtf8("")) - self.pushButton_27.setCheckable(True) - self.pushButton_27.setObjectName(_fromUtf8("pushButton_27")) - self.gridLayout.addWidget(self.pushButton_27, 2, 7, 1, 1) - self.pushButton_56 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_56.sizePolicy().hasHeightForWidth()) - self.pushButton_56.setSizePolicy(sizePolicy) - self.pushButton_56.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_56.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_56.setText(_fromUtf8("")) - self.pushButton_56.setCheckable(True) - self.pushButton_56.setObjectName(_fromUtf8("pushButton_56")) - self.gridLayout.addWidget(self.pushButton_56, 5, 6, 1, 1) - self.pushButton_75 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_75.sizePolicy().hasHeightForWidth()) - self.pushButton_75.setSizePolicy(sizePolicy) - self.pushButton_75.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_75.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_75.setText(_fromUtf8("")) - self.pushButton_75.setCheckable(True) - self.pushButton_75.setObjectName(_fromUtf8("pushButton_75")) - self.gridLayout.addWidget(self.pushButton_75, 7, 5, 1, 1) - self.pushButton_50 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_50.sizePolicy().hasHeightForWidth()) - self.pushButton_50.setSizePolicy(sizePolicy) - self.pushButton_50.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_50.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_50.setText(_fromUtf8("")) - self.pushButton_50.setCheckable(True) - self.pushButton_50.setObjectName(_fromUtf8("pushButton_50")) - self.gridLayout.addWidget(self.pushButton_50, 5, 0, 1, 1) - self.pushButton_53 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_53.sizePolicy().hasHeightForWidth()) - self.pushButton_53.setSizePolicy(sizePolicy) - self.pushButton_53.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_53.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_53.setText(_fromUtf8("")) - self.pushButton_53.setCheckable(True) - self.pushButton_53.setObjectName(_fromUtf8("pushButton_53")) - self.gridLayout.addWidget(self.pushButton_53, 5, 3, 1, 1) - self.pushButton_67 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_67.sizePolicy().hasHeightForWidth()) - self.pushButton_67.setSizePolicy(sizePolicy) - self.pushButton_67.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_67.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_67.setText(_fromUtf8("")) - self.pushButton_67.setCheckable(True) - self.pushButton_67.setObjectName(_fromUtf8("pushButton_67")) - self.gridLayout.addWidget(self.pushButton_67, 6, 7, 1, 1) - self.pushButton_52 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_52.sizePolicy().hasHeightForWidth()) - self.pushButton_52.setSizePolicy(sizePolicy) - self.pushButton_52.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_52.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_52.setText(_fromUtf8("")) - self.pushButton_52.setCheckable(True) - self.pushButton_52.setObjectName(_fromUtf8("pushButton_52")) - self.gridLayout.addWidget(self.pushButton_52, 5, 2, 1, 1) - self.pushButton_7 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_7.sizePolicy().hasHeightForWidth()) - self.pushButton_7.setSizePolicy(sizePolicy) - self.pushButton_7.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_7.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_7.setText(_fromUtf8("")) - self.pushButton_7.setCheckable(True) - self.pushButton_7.setObjectName(_fromUtf8("pushButton_7")) - self.gridLayout.addWidget(self.pushButton_7, 0, 7, 1, 1) - self.pushButton_54 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_54.sizePolicy().hasHeightForWidth()) - self.pushButton_54.setSizePolicy(sizePolicy) - self.pushButton_54.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_54.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_54.setText(_fromUtf8("")) - self.pushButton_54.setCheckable(True) - self.pushButton_54.setObjectName(_fromUtf8("pushButton_54")) - self.gridLayout.addWidget(self.pushButton_54, 5, 4, 1, 1) - self.pushButton_92 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_92.sizePolicy().hasHeightForWidth()) - self.pushButton_92.setSizePolicy(sizePolicy) - self.pushButton_92.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_92.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_92.setText(_fromUtf8("")) - self.pushButton_92.setCheckable(True) - self.pushButton_92.setObjectName(_fromUtf8("pushButton_92")) - self.gridLayout.addWidget(self.pushButton_92, 9, 2, 1, 1) - self.pushButton_69 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_69.sizePolicy().hasHeightForWidth()) - self.pushButton_69.setSizePolicy(sizePolicy) - self.pushButton_69.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_69.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_69.setText(_fromUtf8("")) - self.pushButton_69.setCheckable(True) - self.pushButton_69.setObjectName(_fromUtf8("pushButton_69")) - self.gridLayout.addWidget(self.pushButton_69, 6, 9, 1, 1) - self.pushButton_89 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_89.sizePolicy().hasHeightForWidth()) - self.pushButton_89.setSizePolicy(sizePolicy) - self.pushButton_89.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_89.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_89.setText(_fromUtf8("")) - self.pushButton_89.setCheckable(True) - self.pushButton_89.setObjectName(_fromUtf8("pushButton_89")) - self.gridLayout.addWidget(self.pushButton_89, 8, 9, 1, 1) - self.pushButton_66 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_66.sizePolicy().hasHeightForWidth()) - self.pushButton_66.setSizePolicy(sizePolicy) - self.pushButton_66.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_66.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_66.setText(_fromUtf8("")) - self.pushButton_66.setCheckable(True) - self.pushButton_66.setObjectName(_fromUtf8("pushButton_66")) - self.gridLayout.addWidget(self.pushButton_66, 6, 6, 1, 1) - self.pushButton_88 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_88.sizePolicy().hasHeightForWidth()) - self.pushButton_88.setSizePolicy(sizePolicy) - self.pushButton_88.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_88.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_88.setText(_fromUtf8("")) - self.pushButton_88.setCheckable(True) - self.pushButton_88.setObjectName(_fromUtf8("pushButton_88")) - self.gridLayout.addWidget(self.pushButton_88, 8, 8, 1, 1) - self.pushButton_38 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_38.sizePolicy().hasHeightForWidth()) - self.pushButton_38.setSizePolicy(sizePolicy) - self.pushButton_38.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_38.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_38.setText(_fromUtf8("")) - self.pushButton_38.setCheckable(True) - self.pushButton_38.setObjectName(_fromUtf8("pushButton_38")) - self.gridLayout.addWidget(self.pushButton_38, 3, 8, 1, 1) - self.pushButton_95 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_95.sizePolicy().hasHeightForWidth()) - self.pushButton_95.setSizePolicy(sizePolicy) - self.pushButton_95.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_95.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_95.setText(_fromUtf8("")) - self.pushButton_95.setCheckable(True) - self.pushButton_95.setObjectName(_fromUtf8("pushButton_95")) - self.gridLayout.addWidget(self.pushButton_95, 9, 5, 1, 1) - self.pushButton_11 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_11.sizePolicy().hasHeightForWidth()) - self.pushButton_11.setSizePolicy(sizePolicy) - self.pushButton_11.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_11.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_11.setText(_fromUtf8("")) - self.pushButton_11.setCheckable(True) - self.pushButton_11.setObjectName(_fromUtf8("pushButton_11")) - self.gridLayout.addWidget(self.pushButton_11, 1, 1, 1, 1) - self.pushButton_40 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_40.sizePolicy().hasHeightForWidth()) - self.pushButton_40.setSizePolicy(sizePolicy) - self.pushButton_40.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_40.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_40.setText(_fromUtf8("")) - self.pushButton_40.setCheckable(True) - self.pushButton_40.setObjectName(_fromUtf8("pushButton_40")) - self.gridLayout.addWidget(self.pushButton_40, 4, 0, 1, 1) - self.pushButton_77 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_77.sizePolicy().hasHeightForWidth()) - self.pushButton_77.setSizePolicy(sizePolicy) - self.pushButton_77.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_77.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_77.setText(_fromUtf8("")) - self.pushButton_77.setCheckable(True) - self.pushButton_77.setObjectName(_fromUtf8("pushButton_77")) - self.gridLayout.addWidget(self.pushButton_77, 7, 7, 1, 1) - self.pushButton_21 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_21.sizePolicy().hasHeightForWidth()) - self.pushButton_21.setSizePolicy(sizePolicy) - self.pushButton_21.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_21.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_21.setText(_fromUtf8("")) - self.pushButton_21.setCheckable(True) - self.pushButton_21.setObjectName(_fromUtf8("pushButton_21")) - self.gridLayout.addWidget(self.pushButton_21, 2, 1, 1, 1) - self.pushButton_86 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_86.sizePolicy().hasHeightForWidth()) - self.pushButton_86.setSizePolicy(sizePolicy) - self.pushButton_86.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_86.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_86.setText(_fromUtf8("")) - self.pushButton_86.setCheckable(True) - self.pushButton_86.setObjectName(_fromUtf8("pushButton_86")) - self.gridLayout.addWidget(self.pushButton_86, 8, 6, 1, 1) - self.pushButton_2 = QtGui.QPushButton(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth()) - self.pushButton_2.setSizePolicy(sizePolicy) - self.pushButton_2.setMaximumSize(QtCore.QSize(27, 27)) - self.pushButton_2.setStyleSheet(_fromUtf8("background-color: rgb(0, 0, 0);")) - self.pushButton_2.setText(_fromUtf8("")) - self.pushButton_2.setCheckable(True) - self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) - self.gridLayout.addWidget(self.pushButton_2, 0, 2, 1, 1) - self.verticalLayout.addLayout(self.gridLayout) - self.gridLayout_2 = QtGui.QGridLayout() - self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) - self.clearDisplayPushButton = QtGui.QPushButton(self.centralwidget) - self.clearDisplayPushButton.setObjectName(_fromUtf8("clearDisplayPushButton")) - self.gridLayout_2.addWidget(self.clearDisplayPushButton, 0, 0, 1, 1) - self.randomizePushButton = QtGui.QPushButton(self.centralwidget) - self.randomizePushButton.setObjectName(_fromUtf8("randomizePushButton")) - self.gridLayout_2.addWidget(self.randomizePushButton, 0, 2, 1, 1) - self.clearMemPushButton = QtGui.QPushButton(self.centralwidget) - self.clearMemPushButton.setObjectName(_fromUtf8("clearMemPushButton")) - self.gridLayout_2.addWidget(self.clearMemPushButton, 0, 3, 1, 1) - self.memorizePushButton = QtGui.QPushButton(self.centralwidget) - self.memorizePushButton.setObjectName(_fromUtf8("memorizePushButton")) - self.gridLayout_2.addWidget(self.memorizePushButton, 0, 1, 1, 1) - self.mem1PushButton = QtGui.QPushButton(self.centralwidget) - self.mem1PushButton.setObjectName(_fromUtf8("mem1PushButton")) - self.gridLayout_2.addWidget(self.mem1PushButton, 1, 0, 1, 1) - self.runPushButton = QtGui.QPushButton(self.centralwidget) - self.runPushButton.setObjectName(_fromUtf8("runPushButton")) - self.gridLayout_2.addWidget(self.runPushButton, 2, 0, 1, 1) - self.mem2PushButton = QtGui.QPushButton(self.centralwidget) - self.mem2PushButton.setObjectName(_fromUtf8("mem2PushButton")) - self.gridLayout_2.addWidget(self.mem2PushButton, 1, 1, 1, 1) - self.mem3PushButton = QtGui.QPushButton(self.centralwidget) - self.mem3PushButton.setObjectName(_fromUtf8("mem3PushButton")) - self.gridLayout_2.addWidget(self.mem3PushButton, 1, 2, 1, 1) - self.computeSynWeightsPushButton = QtGui.QPushButton(self.centralwidget) - self.computeSynWeightsPushButton.setObjectName(_fromUtf8("computeSynWeightsPushButton")) - self.gridLayout_2.addWidget(self.computeSynWeightsPushButton, 2, 1, 1, 1) - self.mem4PushButton = QtGui.QPushButton(self.centralwidget) - self.mem4PushButton.setObjectName(_fromUtf8("mem4PushButton")) - self.gridLayout_2.addWidget(self.mem4PushButton, 1, 3, 1, 1) - self.inputPushButton = QtGui.QPushButton(self.centralwidget) - self.inputPushButton.setObjectName(_fromUtf8("inputPushButton")) - self.gridLayout_2.addWidget(self.inputPushButton, 2, 2, 1, 1) - self.saveInputPushButton = QtGui.QPushButton(self.centralwidget) - self.saveInputPushButton.setObjectName(_fromUtf8("saveInputPushButton")) - self.gridLayout_2.addWidget(self.saveInputPushButton, 2, 3, 1, 1) - self.aPushButton = QtGui.QPushButton(self.centralwidget) - self.aPushButton.setObjectName(_fromUtf8("aPushButton")) - self.gridLayout_2.addWidget(self.aPushButton, 3, 0, 1, 1) - self.bPushButton = QtGui.QPushButton(self.centralwidget) - self.bPushButton.setObjectName(_fromUtf8("bPushButton")) - self.gridLayout_2.addWidget(self.bPushButton, 3, 1, 1, 1) - self.cPushButton = QtGui.QPushButton(self.centralwidget) - self.cPushButton.setObjectName(_fromUtf8("cPushButton")) - self.gridLayout_2.addWidget(self.cPushButton, 3, 2, 1, 1) - self.dPushButton = QtGui.QPushButton(self.centralwidget) - self.dPushButton.setObjectName(_fromUtf8("dPushButton")) - self.gridLayout_2.addWidget(self.dPushButton, 3, 3, 1, 1) - self.verticalLayout.addLayout(self.gridLayout_2) - MainWindow.setCentralWidget(self.centralwidget) - self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 389, 25)) - self.menubar.setObjectName(_fromUtf8("menubar")) - self.menuQuit = QtGui.QMenu(self.menubar) - self.menuQuit.setObjectName(_fromUtf8("menuQuit")) - MainWindow.setMenuBar(self.menubar) - self.statusbar = QtGui.QStatusBar(MainWindow) - self.statusbar.setObjectName(_fromUtf8("statusbar")) - MainWindow.setStatusBar(self.statusbar) - self.actionQuit = QtGui.QAction(MainWindow) - self.actionQuit.setObjectName(_fromUtf8("actionQuit")) - self.menuQuit.addAction(self.actionQuit) - self.menubar.addAction(self.menuQuit.menuAction()) - - self.retranslateUi(MainWindow) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Hopfield Demo (MOOSE)", None, QtGui.QApplication.UnicodeUTF8)) - self.clearDisplayPushButton.setText(QtGui.QApplication.translate("MainWindow", "Clear", None, QtGui.QApplication.UnicodeUTF8)) - self.randomizePushButton.setText(QtGui.QApplication.translate("MainWindow", "Randomize", None, QtGui.QApplication.UnicodeUTF8)) - self.clearMemPushButton.setText(QtGui.QApplication.translate("MainWindow", "ClearMem", None, QtGui.QApplication.UnicodeUTF8)) - self.memorizePushButton.setText(QtGui.QApplication.translate("MainWindow", "Memorize", None, QtGui.QApplication.UnicodeUTF8)) - self.mem1PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem1", None, QtGui.QApplication.UnicodeUTF8)) - self.runPushButton.setText(QtGui.QApplication.translate("MainWindow", "Run", None, QtGui.QApplication.UnicodeUTF8)) - self.mem2PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem2", None, QtGui.QApplication.UnicodeUTF8)) - self.mem3PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem3", None, QtGui.QApplication.UnicodeUTF8)) - self.computeSynWeightsPushButton.setText(QtGui.QApplication.translate("MainWindow", "Compute", None, QtGui.QApplication.UnicodeUTF8)) - self.mem4PushButton.setText(QtGui.QApplication.translate("MainWindow", "Mem4", None, QtGui.QApplication.UnicodeUTF8)) - self.inputPushButton.setText(QtGui.QApplication.translate("MainWindow", "Input", None, QtGui.QApplication.UnicodeUTF8)) - self.saveInputPushButton.setText(QtGui.QApplication.translate("MainWindow", "Save ip", None, QtGui.QApplication.UnicodeUTF8)) - self.aPushButton.setText(QtGui.QApplication.translate("MainWindow", "A", None, QtGui.QApplication.UnicodeUTF8)) - self.bPushButton.setText(QtGui.QApplication.translate("MainWindow", "B", None, QtGui.QApplication.UnicodeUTF8)) - self.cPushButton.setText(QtGui.QApplication.translate("MainWindow", "C", None, QtGui.QApplication.UnicodeUTF8)) - self.dPushButton.setText(QtGui.QApplication.translate("MainWindow", "D", None, QtGui.QApplication.UnicodeUTF8)) - self.menuQuit.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8)) - self.actionQuit.setText(QtGui.QApplication.translate("MainWindow", "Quit", None, QtGui.QApplication.UnicodeUTF8)) - diff --git a/examples/hopfield/hopfield_ui.ui b/examples/hopfield/hopfield_ui.ui deleted file mode 100644 index a09b9ac..0000000 --- a/examples/hopfield/hopfield_ui.ui +++ /dev/null @@ -1,2672 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 389 - 492 - - - - Hopfield Demo (MOOSE) - - - QTabWidget::Rounded - - - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - 0 - 0 - - - - - 27 - 27 - - - - background-color: rgb(0, 0, 0); - - - - - - true - - - - - - - - - - - Clear - - - - - - - Randomize - - - - - - - ClearMem - - - - - - - Memorize - - - - - - - Mem1 - - - - - - - Run - - - - - - - Mem2 - - - - - - - Mem3 - - - - - - - Compute - - - - - - - Mem4 - - - - - - - Input - - - - - - - Save ip - - - - - - - A - - - - - - - B - - - - - - - C - - - - - - - D - - - - - - - - - - - 0 - 0 - 389 - 25 - - - - - File - - - - - - - - - Quit - - - - - - - signal1() - - diff --git a/examples/hopfield/input.csv b/examples/hopfield/input.csv deleted file mode 100644 index 10f7834..0000000 --- a/examples/hopfield/input.csv +++ /dev/null @@ -1,10 +0,0 @@ -1 0 0 0 0 1 1 0 1 1 -1 0 1 0 1 0 0 1 0 1 -1 1 0 1 0 0 1 0 1 0 -1 0 1 0 1 0 0 1 0 1 -0 1 0 1 0 1 1 1 1 0 -0 1 1 0 0 0 0 0 1 1 -0 0 1 1 1 1 0 1 0 1 -0 1 1 1 0 0 1 0 0 0 -0 1 1 0 1 1 0 1 0 1 -0 1 1 1 0 1 1 0 1 1 \ No newline at end of file diff --git a/examples/hopfield/memory1.csv b/examples/hopfield/memory1.csv deleted file mode 100644 index bbe00d7..0000000 --- a/examples/hopfield/memory1.csv +++ /dev/null @@ -1,10 +0,0 @@ -1 1 0 1 1 1 1 0 1 1 -1 0 1 0 1 1 0 1 0 1 -0 1 0 1 0 0 1 0 1 0 -1 0 1 0 1 1 0 1 0 1 -1 1 0 1 0 1 1 0 1 0 -1 1 0 1 1 1 1 0 1 1 -1 0 1 0 1 1 0 1 0 1 -0 1 0 1 0 0 1 0 1 0 -1 0 1 0 1 1 0 1 0 1 -1 1 0 1 0 1 1 0 1 0 \ No newline at end of file diff --git a/examples/hopfield/memory2.csv b/examples/hopfield/memory2.csv deleted file mode 100644 index c55d998..0000000 --- a/examples/hopfield/memory2.csv +++ /dev/null @@ -1,10 +0,0 @@ -0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 -0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 -0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 -0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 -0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 \ No newline at end of file diff --git a/examples/hopfield/test.py b/examples/hopfield/test.py deleted file mode 100644 index 8ff674c..0000000 --- a/examples/hopfield/test.py +++ /dev/null @@ -1,68 +0,0 @@ -import moose -from pylab import * -from moose.utils import * -import numpy as np - -inputGiven = 1 -moose.Neutral('/elec') -pg = moose.PulseGen('/elec/inPulGen') -pgTable = moose.Table('/elec/inPulGen/pgTable') -moose.connect(pgTable, 'requestOut', pg, 'getOutputValue') - -pg.firstDelay = 10e-3 -pg.firstWidth = 2e-03 -pg.firstLevel = 3 -pg.secondDelay = 1.0 - -cellPath = '/cell' - -# cell = moose.LeakyIaF(cellPath) -# cell.setField('Cm',1e-6) -# cell.setField('Rm',1e4) -# cell.setField('Em',-0.07) -# cell.setField('initVm',-0.05) -# cell.setField('Vreset',-0.07) -# cell.setField('Vthreshold',0.0) -# cell.setField('refractoryPeriod',0.01) - -cell = moose.IntFire(cellPath) -cell.setField('tau',10e-3) -#cell.setField('Vm', 1.0) -cell.setField('refractoryPeriod', 5e-3) -cell.setField('thresh', 0.9) -cell.synapse.num = 1 -cell.synapse[0].weight = 0.91 -cell.synapse[0].delay = 10e-3 -#this cell fires only when synaptic weight reaching it exceeds threshold - resets to neg and resets to 0 in refractoryPeriod time -#else, goes back to 0 in tau time - -VmVal = moose.Table(cellPath+'/Vm_cell') -print 'table>cellVm:', moose.connect(VmVal, 'requestOut', cell, 'getVm') -spikeTime = moose.Table(cellPath+'/spikeTimes') -print 'table>cellSpike:', moose.connect(cell, 'spike', spikeTime, 'input') - -inSpkGen = moose.SpikeGen(cellPath+'/inSpkGen') -inSpkGen.setField('threshold', 2.0) -inSpkGen.setField('edgeTriggered', True) - -if inputGiven == 1: - print 'pulse>spike:', moose.connect(pg, 'output', moose.element(cellPath+'/inSpkGen'), 'Vm') - inTable = moose.Table(cellPath+'/inSpkGen/inTable') - print 'table>spike:',moose.connect(inTable, 'requestOut', inSpkGen, 'getHasFired') - -print 'spike>cell:', moose.connect(inSpkGen, 'spikeOut', cell.synapse[0] ,'addSpike') -#print 'spike>cell:', moose.connect(pg, 'output', cell ,'injectDest') - -moose.setClock(0, 1e-4) -moose.useClock(0, '/cell,/cell/##,/elec/##','process') -moose.reinit() -moose.start(0.2) - -subplot(311) -plot(np.arange(0,0.2,0.2/len(pgTable.vector[1:])),pgTable.vector[1:]) -subplot(312) -#plot(inTable.vector[1:]) -scatter(spikeTime.vector,np.ones(len(spikeTime.vector))) -subplot(313) -plot(np.arange(0,0.2,0.2/len(pgTable.vector[1:])),VmVal.vector[1:]) -show() diff --git a/examples/izhikevich/Izhikevich.py b/examples/izhikevich/Izhikevich.py deleted file mode 100644 index f6cf12e..0000000 --- a/examples/izhikevich/Izhikevich.py +++ /dev/null @@ -1,537 +0,0 @@ -# Izhikevich.py --- -# -# Filename: Izhikevich.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri May 28 14:42:33 2010 (+0530) -# Version: -# Last-Updated: Tue Sep 11 14:27:18 2012 (+0530) -# By: subha -# Update #: 1212 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# threhold variablity to be checked. -# Bistability not working. -# DAP working with increased parameter value 'a' -# inhibition induced spiking kind of working but not matching with the paper figure -# inhibition induced bursting kind of working but not matching with the paper figure -# Accommodation cannot work with the current implementation: because the equation for u is not what is mentioned in the paper -# it is: u = u + tau*a*(b*(V+65)); [It is nowhere in the paper and you face it only if you look at the matlab code for figure 1]. -# It is not possible to tune a, b, c, d in any way to produce this from: u = u + tau*a*(b*V - u) -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import time -from numpy import * -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../python') - -import moose - -class IzhikevichDemo: - """Class to setup and simulate the various kind of neuronal behaviour using Izhikevich model. - - Fields: - """ - # Paramteres for different kinds of behaviour described by Izhikevich - # (1. IEEE TRANSACTIONS ON NEURAL NETWORKS, VOL. 14, NO. 6, NOVEMBER 2003 - # and 2. IEEE TRANSACTIONS ON NEURAL NETWORKS, VOL. 15, NO. 5, SEPTEMBER - # 2004) - # Modified and enhanced using: http://www.izhikevich.org/publications/figure1.m - # The entries in the tuple are as follows: - # fig. no. in paper (2), parameter a, parameter b, parameter c (reset value of v in mV), parameter d (after-spike reset value of u), injection current I (uA), initial value of Vm, duration of simulation (ms) - # - # They are all in whatever unit they were in the paper. Just before use we convert them to SI. - parameters = { - "tonic_spiking": ['A', 0.02 , 0.2 , -65.0, 6.0 , 14.0, -70.0, 100.0], # Fig. 1.A - "phasic_spiking": ['B', 0.02 , 0.25 , -65.0, 6.0 , 0.5, -64.0, 200.0], # Fig. 1.B - "tonic_bursting": ['C', 0.02 , 0.2 , -50.0, 2.0 , 15.0, -70.0, 220.0], # Fig. 1.C - "phasic_bursting": ['D', 0.02 , 0.25 , -55.0, 0.05 , 0.6, -64.0, 200.0], # Fig. 1.D - "mixed_mode": ['E', 0.02 , 0.2 , -55.0, 4.0 , 10.0, -70.0, 160.0], # Fig. 1.E - "spike_freq_adapt": ['F', 0.01 , 0.2 , -65.0, 8.0 , 30.0, -70.0, 85.0 ], # Fig. 1.F # spike frequency adaptation - "Class_1": ['G', 0.02 , -0.1 , -55.0, 6.0 , 0, -60.0, 300.0], # Fig. 1.G # Spikining Frequency increases with input strength - "Class_2": ['H', 0.2 , 0.26 , -65.0, 0.0 , 0, -64.0, 300.0], # Fig. 1.H # Produces high frequency spikes - "spike_latency": ['I', 0.02 , 0.2 , -65.0, 6.0 , 7.0, -70.0, 100.0], # Fig. 1.I - "subthresh_osc": ['J', 0.05 , 0.26 , -60.0, 0.0 , 0, -62.0, 200.0], # Fig. 1.J # subthreshold oscillations - "resonator": ['K', 0.1 , 0.26 , -60.0, -1.0 , 0, -62.0, 400.0], # Fig. 1.K - "integrator": ['L', 0.02 , -0.1 , -55.0, 6.0 , 0, -60.0, 100.0], # Fig. 1.L - "rebound_spike": ['M', 0.03 , 0.25 , -60.0, 4.0 , -15, -64.0, 200.0], # Fig. 1.M - "rebound_burst": ['N', 0.03 , 0.25 , -52.0, 0.0 , -15, -64.0, 200.0], # Fig. 1.N - "thresh_var": ['O', 0.03 , 0.25 , -60.0, 4.0 , 0, -64.0, 100.0], # Fig. 1.O # threshold variability - "bistable": ['P', 0.1 , 0.26 , -60.0, 0.0 , 1.24, -61.0, 300.0], # Fig. 1.P - "DAP": ['Q', 1.15 , 0.2 , -60.0, -21.0 , 20, -70.0, 50.0], # Fig. 1.Q # Depolarizing after-potential - a had to be increased in order to reproduce the figure - "accommodation": ['R', 0.02 , 1.0 , -55.0, 4.0 , 0, -65.0, 400.0], # Fig. 1.R - "iispike": ['S', -0.02 , -1.0 , -60.0, 8.0 , 75.0, -63.8, 350.0], # Fig. 1.S # inhibition-induced spiking - "iiburst": ['T', -0.026, -1.0 , -45.0, 0.0 , 75.0, -63.8, 350.0] # Fig. 1.T # inhibition-induced bursting - } - - documentation = { - "tonic_spiking": """ -Neuron is normally silent but spikes when stimulated with a current injection.""", - - "phasic_spiking": """ -Neuron fires a single spike only at the start of a current pulse.""", - - "tonic_bursting": """ -Neuron is normally silent but produces bursts of spikes when -stimulated with current injection.""", - - "phasic_bursting": """ -Neuron is normally silent but produces a burst of spikes at the -beginning of an input current pulse.""", - - "mixed_mode": """ -Neuron fires a burst at the beginning of input current pulse, but then -switches to tonic spiking.""", - - "spike_freq_adapt": """ -Neuron fires spikes when a current injection is applied, but at a -gradually reducing rate.""", - - "Class_1": """ -Neuron fires low frequency spikes with weak input current injection.""", - - "Class_2": """ -Neuron fires high frequency (40-200 Hz) spikes when stimulated with -current injection.""", - - "spike_latency": """ -The spike starts after a delay from the onset of current -injection. The delay is dependent on strength of input.""", - - "subthresh_osc": """ -Even at subthreshold inputs a neuron exhibits oscillatory membrane potential.""", - - "resonator": """ -Neuron fires spike only when an input pulsetrain of a frequency - similar to that of the neuron's subthreshold oscillatory frequency is - applied.""", - - "integrator": """ -The chances of the neuron firing increases with increase in the frequency -of input pulse train.""", - - "rebound_spike": """ -When the neuron is released from an inhibitory input, it fires a spike.""", - - "rebound_burst": """ -When the neuron is released from an inhibitory input, it fires a burst - of action potentials.""", - - "thresh_var": """ -Depending on the previous input, the firing threshold of a neuron may -change. In this example, the first input pulse does not produce -spike, but when the same input is applied after an inhibitory input, -it fires.""", - - "bistable": """ -These neurons switch between two stable modes (resting and tonic spiking). -The switch happens via an excitatory or inhibitory input.""", - - "DAP": """ -After firing a spike, the membrane potential shows a prolonged depolarized -after-potential.""", - - "accommodation": """ -These neurons do not respond to slowly rising input, but a sharp increase -in input may cause firing.""", - - "iispike": """ -These neurons fire in response to inhibitory input.""", - - "iiburst": """ -These neurons show bursting in response to inhibitory input.""" - } - - def __init__(self): - """Initialize the object.""" - self.model_container = moose.Neutral('/model') - self.data_container = moose.Neutral('/data') - self.neurons = {} - self.Vm_tables = {} - self.u_tables = {} - self.inject_tables = {} - self.inputs = {} - self.simtime = 100e-3 - self.dt = 0.25e-3 - self.steps = int(self.simtime/self.dt) - moose.setClock(0, self.dt) - moose.setClock(1, self.dt) - moose.setClock(2, self.dt) - self.scheduled = {} # this is to bypass multiple clock issue - self.neuron = None - - def setup(self, key): - neuron = self._get_neuron(key) - pulsegen = self._make_pulse_input(key) - if pulsegen is None: - print key, 'Not implemented.' - - def simulate(self, key): - self.setup(key) - return self.run(key) - - def run(self, key): - try: - Vm = self.Vm_tables[key] - u = self.u_tables[key] - except KeyError, e: - Vm = moose.Table(self.data_container.path + '/' + key + '_Vm') - nrn = self.neurons[key] - moose.connect(Vm, 'requestOut', nrn, 'getVm') - utable = moose.Table(self.data_container.path + '/' + key + '_u') - utable.connect('requestOut', self.neurons[key], 'getU') - self.Vm_tables[key] = Vm - self.u_tables[key] = utable - try: - Im = self.inject_tables[key] - except KeyError, e: - Im = moose.Table(self.data_container.path + '/' + key + '_inject') # May be different for non-pulsegen sources. - Im.connect('requestOut', self._get_neuron(key), 'getIm') - self.inject_tables[key] = Im - self.simtime = IzhikevichDemo.parameters[key][7] * 1e-3 - for obj in moose.wildcardFind('%s/##' % (self.model_container.path)): - if obj not in self.scheduled: - moose.useClock(0, obj.path, 'process') - self.scheduled[obj] = True - for obj in moose.wildcardFind('%s/##' % (self.data_container.path)): - if obj not in self.scheduled: - moose.useClock(2, obj.path, 'process') - self.scheduled[obj] = True - moose.reinit() - moose.start(self.simtime) - while moose.isRunning(): - time.sleep(100) - time = linspace(0, IzhikevichDemo.parameters[key][7], len(Vm.vector)) - # DEBUG - nrn = self._get_neuron(key) - print 'a = %g, b = %g, c = %g, d = %g, initVm = %g, initU = %g' % (nrn.a,nrn.b, nrn.c, nrn.d, nrn.initVm, nrn.initU) - #! DEBUG - return (time, Vm, Im) - - - def _get_neuron(self, key): - try: - params = IzhikevichDemo.parameters[key] - except KeyError as e: - print ' %s : Invalid neuron type. The valid types are:' % (key) - for key in IzhikevichDemo.parameters: - print key - raise e - try: - neuron = self.neurons[key] - return neuron - except KeyError, e: - neuron = moose.IzhikevichNrn(self.model_container.path + '/' + key) - - if key == 'integrator' or key == 'Class_1': # Integrator has different constants - neuron.beta = 4.1e3 - neuron.gamma = 108.0 - if key == 'accommodation': - neuron.accommodating = True - neuron.u0 = -0.065 - self.neuron = neuron - neuron.a = params[1] * 1e3 # ms^-1 -> s^-1 - neuron.b = params[2] * 1e3 # ms^-1 -> s^-1 - neuron.c = params[3] * 1e-3 # mV -> V - neuron.d = params[4] # d is in mV/ms = V/s - neuron.initVm = params[6] * 1e-3 # mV -> V - neuron.Vmax = 0.03 # mV -> V - if key != 'accommodation': - neuron.initU = neuron.initVm * neuron.b - else: - neuron.initU = -16.0 # u is in mV/ms = V/s - moose.showfield(neuron) - self.neurons[key] = neuron - return neuron - - def _make_pulse_input(self, key): - """This is for creating a pulse generator for use as a current - source for all cases except Class_1, Class_2, resonator, - integrator, thresh_var and accommodation.""" - try: - return self.inputs[key] - except KeyError: - pass # continue to the reset of the function - baseLevel = 0.0 - firstWidth = 1e6 - firstDelay = 0.0 - firstLevel = IzhikevichDemo.parameters[key][5] * 1e-6 - secondDelay = 1e6 - secondWidth = 0.0 - secondLevel = 0.0 - if key == 'tonic_spiking': - firstDelay = 10e-3 - elif key == 'phasic_spiking': - firstDelay = 20e-3 - elif key == 'tonic_bursting': - firstDelay = 22e-3 - elif key == 'phasic_bursting': - firstDelay = 20e-3 - elif key == 'mixed_mode': - firstDelay = 16e-3 - elif key == 'spike_freq_adapt': - firstDelay = 8.5e-3 - elif key == 'spike_latency': - firstDelay = 10e-3 - firstWidth = 3e-3 - elif key == 'subthresh_osc': - firstDelay = 20e-3 - firstWidth = 5e-3 - firstLevel = 2e-9 - elif key == 'rebound_spike': - firstDelay = 20e-3 - firstWidth = 5e-3 - elif key == 'rebound_burst': - firstDelay = 20e-3 - firstWidth = 5e-3 - elif key == 'bistable': - input_table = self._make_bistable_input() - self.inputs[key] = input_table - return input_table - elif key == 'DAP': - firstDelay = 9e-3 - firstWidth = 2e-3 - elif (key == 'iispike') or (key == 'iiburst'): - baseLevel = 80e-9 - firstDelay = 50e-3 - firstWidth = 200e-3 - fisrtLevel = 75e-9 - elif key == 'Class_1': - input_table = self._make_Class_1_input() - self.inputs[key] = input_table - return input_table - elif key == 'Class_2': - input_table = self._make_Class_2_input() - self.inputs[key] = input_table - return input_table - elif key == 'resonator': - input_table = self._make_resonator_input() - self.inputs[key] = input_table - return input_table - elif key == 'integrator': - input_table = self._make_integrator_input() - self.inputs[key] = input_table - return input_table - elif key == 'accommodation': - input_table = self._make_accommodation_input() - self.inputs[key] = input_table - return input_table - elif key == 'thresh_var': - input_table = self._make_thresh_var_input() - self.inputs[key] = input_table - return input_table - else: - print key, ': Stimulus is not based on pulse generator.' - raise - pulsegen = self._make_pulsegen(key, - firstLevel, - firstDelay, - firstWidth, - secondLevel, - secondDelay, - secondWidth, baseLevel) - self.inputs[key] = pulsegen - return pulsegen - - - def _make_pulsegen(self, key, firstLevel, firstDelay, firstWidth=1e6, secondLevel=0, secondDelay=1e6, secondWidth=0, baseLevel=0): - pulsegen = moose.PulseGen(self.model_container.path + '/' + key + '_input') - pulsegen.firstLevel = firstLevel - pulsegen.firstDelay = firstDelay - pulsegen.firstWidth = firstWidth - pulsegen.secondLevel = secondLevel - pulsegen.secondDelay = secondDelay - pulsegen.secondWidth = secondWidth - pulsegen.baseLevel = baseLevel - nrn = self._get_neuron(key) - moose.connect(pulsegen, 'output', nrn, 'injectMsg') - # self.stimulus_table = moose.Table(self.data_container.path + '/stimulus') - # self.stimulus_table.connect('requestOut', pulsegen, 'getOutputValue') - return pulsegen - - def _make_Class_1_input(self): - input_table = moose.StimulusTable(self.model_container.path + '/' + 'Class_1_input') - input_table.stepSize = self.dt - input_table.startTime = 30e-3 # The ramp starts at 30 ms - input_table.stopTime = IzhikevichDemo.parameters['Class_1'][7] * 1e-3 - # matlab code: if (t>T1) I=(0.075*(t-T1)); else I=0; - input_vec = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1.0) * 0.075 * self.dt * 1e3 * 1e-9 - input_table.vector = input_vec - input_table.connect('output', self._get_neuron('Class_1'), 'injectMsg') - self.stimulus_table = moose.Table(self.data_container.path + '/stimulus') - moose.connect(input_table, 'output', self.stimulus_table, 'input') - return input_table - - def _make_Class_2_input(self): - key = 'Class_2' - input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') - input_table.stepSize = self.dt - input_table.startTime = 30e-3 # The ramp starts at 30 ms - input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 - # The matlab code is: if (t>T1) I=-0.5+(0.015*(t-T1)); else I=-0.5 - # convert dt from s to ms, and convert total current from nA to A. - input_vec = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1.0) * 0.015 * self.dt * 1e3 * 1e-9 - 0.05*1e-9 - input_table.vector = input_vec - input_table.connect('output', self._get_neuron(key), 'injectMsg') - return input_table - - def _make_bistable_input(self): - key = 'bistable' - input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') - input_table.stepSize = self.dt - input_table.startTime = 0 - input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 - t1 = IzhikevichDemo.parameters[key][7] * 1e-3/8 - t2 = 216e-3 - t = np.arange(0, - int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize))) * self.dt - input_vec = np.where(np.logical_or(np.logical_and(t > t1, t < t1+5e-3), - np.logical_and(t > t2, t < t2+5e-3)), - 1.24e-9, - 0.24e-9) - input_table.vector = input_vec - input_table.connect('output', self._get_neuron(key), 'injectMsg') - return input_table - - def _make_resonator_input(self): - key = 'resonator' - input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') - input_table.stepSize = self.dt - input_table.startTime = 0 - input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 - t1 = IzhikevichDemo.parameters[key][7] * 1e-3/10 - t2 = t1 + 20e-3 - t3 = 0.7 * IzhikevichDemo.parameters[key][7] * 1e-3 - t4 = t3 + 40e-3 - t = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1) * self.dt - input_vec = np.zeros(t.shape) - idx = np.nonzero(((t > t1) & (t < t1 + 4e-3)) | - ((t > t2) & (t < t2 + 4e-3)) | - ((t > t3) & (t < t3 + 4e-3)) | - ((t > t4) & (t < t4 + 4e-3)))[0] - input_vec[idx] = 0.65e-9 - input_table.vector = input_vec - input_table.connect('output', self._get_neuron(key), 'injectMsg') - return input_table - - def _make_integrator_input(self): - key = 'integrator' - input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') - input_table.stepSize = self.dt - input_table.startTime = 0 - input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 - t1 = IzhikevichDemo.parameters[key][7] * 1e-3/11 - t2 = t1 + 5e-3 - t3 = 0.7 * IzhikevichDemo.parameters[key][7] * 1e-3 - t4 = t3 + 10e-3 - t = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize))) * self.dt - input_vec = np.where(((t > t1) & (t < t1 + 2e-3)) | - ((t > t2) & (t < t2 + 2e-3)) | - ((t > t3) & (t < t3 + 2e-3)) | - ((t > t4) & (t < t4 + 2e-3)), - 9e-9, - 0.0) - input_table.vector = input_vec - input_table.connect('output', self._get_neuron(key), 'injectMsg') - return input_table - - def _make_accommodation_input(self): - key = 'accommodation' - input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') - input_table.stepSize = self.dt - input_table.startTime = 0 - input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 - input_vec = np.zeros(int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize))) - t = 0.0 - for ii in range(len(input_vec)): - if t < 200e-3: - input_vec[ii] = t * 1e-6/25 - elif t < 300e-3: - input_vec[ii] = 0.0 - elif t < 312.5e-3: - input_vec[ii] = 4e-6 * (t-300e-3)/12.5 - else: - input_vec[ii] = 0.0 - t = t + self.dt - input_table.vector = input_vec - input_table.connect('output', self._get_neuron(key), 'injectMsg') - return input_table - - def _make_thresh_var_input(self): - key = 'thresh_var' - input_table = moose.StimulusTable(self.model_container.path + '/' + key + '_input') - input_table.stepSize = self.dt - input_table.startTime = 0 - input_table.stopTime = IzhikevichDemo.parameters[key][7] * 1e-3 - t = np.arange(0, int(ceil((input_table.stopTime - input_table.startTime) / input_table.stepSize)), 1) * self.dt - input_vec = np.zeros(t.shape) - input_vec[((t > 10e-3) & (t < 15e-3)) | ((t > 80e-3) & (t < 85e-3))] = 1e-9 - input_vec[(t > 70e-3) & (t < 75e-3)] = -6e-9 - input_table.vector = input_vec - nrn = self._get_neuron(key) - input_table.connect('output', nrn, 'injectMsg') - return input_table - - def getEquation(self, key): - params = IzhikevichDemo.parameters[key] - if key != 'accommodation': - equationText = "v' = 0.04v^2 + 5v + 140 - u + I
u' = a(bv - u)

If v >= 30 mV, v = c and u = u + d
where a = %g, b = %g, c = %g and d = %g." % (params[1], params[2], params[3], params[4]) - else: - equationText = "v' = 0.04v^2 + 5v + 140 - u + I
u' = ab(v + 65)

If v >= 30 mV, v = c and u = u + d
where a = %g, b = %g, c = %g and d = %g." % (params[1], params[2], params[3], params[4]) - return equationText - -import sys -try: - from pylab import * - if __name__ == '__main__': - key = 'thresh_var' - if len(sys.argv) > 1: - key = sys.argv[1] - demo = IzhikevichDemo() - (time, Vm, Im) = demo.simulate(key) - title(IzhikevichDemo.parameters[key][0] + '. ' + key) - subplot(3,1,1) - plot(time, Vm.vector) - subplot(3,1,2) - plot(time, Im.vector) - subplot(3,1,3) - show() - print 'Finished simulation.' -except ImportError: - print 'Matplotlib not installed.' - -# -# Izhikevich.py ends here diff --git a/examples/izhikevich/demogui_qt.py b/examples/izhikevich/demogui_qt.py deleted file mode 100644 index 753e98f..0000000 --- a/examples/izhikevich/demogui_qt.py +++ /dev/null @@ -1,169 +0,0 @@ -# demo_gui.py --- -# -# Filename: demo_gui.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Jun 16 05:41:58 2010 (+0530) -# Version: -# Last-Updated: Tue Sep 11 14:26:13 2012 (+0530) -# By: subha -# Update #: 318 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt -import PyQt4.Qwt5 as Qwt -import numpy -from Izhikevich import IzhikevichDemo - - -class IzhikevichGui(QtGui.QMainWindow): - """This is a Qt version of the GUI""" - def __init__(self, *args): - QtGui.QMainWindow.__init__(self, *args) - self.demo = IzhikevichDemo() - self.signalMapper = QtCore.QSignalMapper(self) - self.demoFrame = QtGui.QFrame(self) - self.controlPanel = QtGui.QFrame(self.demoFrame) - self.figureNo = {} - self.buttons = {} - for key, value in IzhikevichDemo.parameters.items(): - button = QtGui.QPushButton(key, self.controlPanel) - self.figureNo[value[0]] = key - self.buttons[key] = button - keys = self.figureNo.keys() - keys.sort() - length = len(keys) - rows = int(numpy.rint(numpy.sqrt(length))) - cols = int(numpy.ceil(length * 1.0 / rows)) - layout = QtGui.QGridLayout() - for ii in range(rows): - for jj in range(cols): - index = ii * cols + jj - if index < length: - key = self.figureNo[keys[index]] - button = self.buttons[key] - button.setToolTip(self.tr(IzhikevichDemo.documentation[key])) - layout.addWidget(button, ii, jj) - self.connect(button, QtCore.SIGNAL('clicked()'), self.signalMapper, QtCore.SLOT('map()')) - self.signalMapper.setMapping(button, key) - - self.connect(self.signalMapper, QtCore.SIGNAL('mapped(const QString &)'), self._simulateAndPlot) - self.controlPanel.setLayout(layout) - self.plotPanel = QtGui.QFrame(self.demoFrame) - self.VmPlot = Qwt.QwtPlot(self.plotPanel) - self.VmPlot.setAxisTitle(Qwt.QwtPlot.xBottom, 'time (ms)') - self.VmPlot.setAxisTitle(Qwt.QwtPlot.yLeft, 'Vm (mV)') - self.VmPlot.replot() - self.ImPlot = Qwt.QwtPlot(self.plotPanel) - self.ImPlot.setAxisTitle(Qwt.QwtPlot.xBottom, 'time (ms)') - self.ImPlot.setAxisTitle(Qwt.QwtPlot.yLeft, 'Im (nA)') - self.vmPlotZoomer = self._make_zoomer(self.VmPlot) - self.imPlotZoomer = self._make_zoomer(self.ImPlot) - self.descriptionWidget = QtGui.QLabel('Click any of the buttons to simulate and plot the corresponding neuron.') - self.descriptionWidget.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Sunken) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - self.descriptionWidget.setSizePolicy(sizePolicy) - self.VmPlot.setSizePolicy(sizePolicy) - self.ImPlot.setSizePolicy(sizePolicy) - layout = QtGui.QVBoxLayout() - layout.addWidget(self.VmPlot) - layout.addWidget(self.ImPlot) - layout.addWidget(self.descriptionWidget) - self.plotPanel.setLayout(layout) - layout = QtGui.QVBoxLayout() - layout.addWidget(self.plotPanel) - layout.addWidget(self.controlPanel) - self.demoFrame.setLayout(layout) - self.setCentralWidget(self.demoFrame) - - def _simulateAndPlot(self, key): - key = str(key) - equationText = self.demo.getEquation(key).replace('\n', '
') - doc = IzhikevichDemo.documentation[key].replace('\n', '
') - text = '%s: %s

Equation:
%s' % (key, doc, equationText) - self.descriptionWidget.setText(self.tr(text)) -# if key == 'accommodation': -# mbox = QtGui.QMessageBox(self) -# mbox.setText(self.tr('Accommodation cannot be shown with regular Izhikevich model.')) -# mbox.setDetailedText(self.tr('\ -# Equation for u for the accommodating neuron is: \ -# u\' = a * b * (V + 65)\n Which is different from \ -# the regular equation u\' = a * (b*V - u) and cannot \ -# be obtained from the latter by any choice of a and b.')) -# mbox.show() -# return - (time, Vm, Im) = self.demo.simulate(key) - Vm = numpy.array(Vm.vector) * 1e3 - Im = numpy.array(Im.vector) * 1e9 - self.VmPlot.clear() - self.ImPlot.clear() - curve = Qwt.QwtPlotCurve(self.tr(key + '_Vm')) - curve.setPen(QtCore.Qt.red) - curve.setData(time, numpy.array(Vm)) - curve.attach(self.VmPlot) - curve = Qwt.QwtPlotCurve(self.tr(key + '_Im')) - curve.setPen(QtCore.Qt.blue) - curve.setData(time, Im) - curve.attach(self.ImPlot) - self.imPlotZoomer.setZoomBase() - self.vmPlotZoomer.setZoomBase() - self.ImPlot.replot() - self.VmPlot.replot() - - - def _make_zoomer(self, plot): - zoomer = Qwt.QwtPlotZoomer(Qwt.QwtPlot.xBottom, - Qwt.QwtPlot.yLeft, - Qwt.QwtPicker.DragSelection, - Qwt.QwtPicker.AlwaysOn, - plot.canvas()) - zoomer.setRubberBandPen(QtGui.QPen(QtCore.Qt.white)) - zoomer.setTrackerPen(QtGui.QPen(QtCore.Qt.cyan)) - return zoomer - - -import sys -if __name__ == '__main__': - app = QtGui.QApplication(sys.argv) - mainWin = IzhikevichGui() - mainWin.show() - sys.exit(app.exec_()) - -# -# demo_gui.py ends here diff --git a/examples/kinetics/test_ksolve.py b/examples/kinetics/test_ksolve.py deleted file mode 100644 index 84ab080..0000000 --- a/examples/kinetics/test_ksolve.py +++ /dev/null @@ -1,488 +0,0 @@ -# test_ksolve.py --- -# modified by Dilawar Singh Wed Aug 5 19:21:19 2015 - -import sys -import moose -import moose.utils as mu -import math -import os -import time - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def createSquid(): - """Create a single compartment squid model.""" - parent = moose.Neutral ('/n' ) - compt = moose.SymCompartment( '/n/compt' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 * 0.5 - compt.Rm = 4.2e5 * 5.0 - compt.Ra = 7639.44e3 - nachan = moose.HHChannel( '/n/compt/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) - yGate.useInterpolation = 1 - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') - - kchan = moose.HHChannel( '/n/compt/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') - return compt - -def createSpine( parentCompt, parentObj, index, frac, length, dia, theta ): - """Create spine of specified dimensions and index""" - RA = 1.0 - RM = 1.0 - CM = 0.01 - shaftDia = dia / 5.0 - sname = 'shaft' + str(index) - hname = 'head' + str(index) - shaft = moose.SymCompartment( parentObj.path + '/' + sname ) - moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single' ) - x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) - y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) - z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) - shaft.x0 = x - shaft.y0 = y - shaft.z0 = z - sy = y + length * math.cos( theta * math.pi / 180.0 ) - sz = z + length * math.sin( theta * math.pi / 180.0 ) - shaft.x = x - shaft.y = sy - shaft.z = sz - shaft.diameter = dia / 2.0 - shaft.length = length - xa = math.pi * shaftDia * shaftDia / 4 - circumference = math.pi * shaftDia - shaft.Ra = RA * length / xa - shaft.Rm = RM / ( length * circumference ) - shaft.Cm = CM * length * circumference - shaft.Em = EREST_ACT - shaft.initVm = EREST_ACT - - head = moose.SymCompartment( parentObj.path + '/' + hname ) - moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) - head.x0 = x - head.y0 = sy - head.z0 = sz - hy = sy + length * math.cos ( theta * math.pi / 180.0 ) - hz = sz + length * math.sin ( theta * math.pi / 180.0 ) - head.x = x - head.y = hy - head.z = hz - head.diameter = dia - head.length = length - xa = math.pi * dia * dia / 4.0 - circumference = math.pi * dia - head.Ra = RA * length / xa - head.Rm = RM / ( length * circumference ) - head.Cm = CM * length * circumference - head.Em = EREST_ACT - head.initVm = EREST_ACT - #print head.Rm, head.Ra, head.Cm, head.diameter, head.length - #print shaft.Rm, shaft.Ra, shaft.Cm, shaft.diameter, shaft.length - return head - -def createSpineWithReceptor( compt, cell, index, frac ): - FaradayConst = 96485.3415 # s A / mol - spineLength = 5.0e-6 - spineDia = 4.0e-6 - head = createSpine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) - gluR = moose.SynChan( head.path + '/gluR' ) - gluR.tau1 = 4e-3 - gluR.tau2 = 4e-3 - gluR.Gbar = 1e-6 - gluR.Ek= 10.0e-3 - moose.connect( head, 'channel', gluR, 'channel', 'Single' ) - synh = moose.SimpleSynHandler( gluR.path + '/synh' ) - moose.connect( synh, 'activationOut', gluR, 'activation' ) - - caPool = moose.CaConc( head.path + '/ca' ) - caPool.CaBasal = 1e-4 # 0.1 micromolar - caPool.tau = 0.01 - B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) - B = B / 20.0 # scaling factor for Ca buffering - caPool.B = B - moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) - - return synh - -def addPlot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table2( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/compt', 'getVm', 'elec/dendVm' ) - #addPlot( '/n/compt/Na', 'getGbar', 'elec/NaGbar' ) - addPlot( '/model/elec/compt/K', 'getGbar', 'elec/KGbar' ) - #addPlot( '/n/compt/Na', 'getIk', 'elec/NaIk' ) - #addPlot( '/n/compt/K', 'getIk', 'elec/KIk' ) - #addPlot( '/n/compt/Na', 'getEk', 'elec/NaEk' ) - #addPlot( '/n/compt/K', 'getEk', 'elec/KEk' ) - addPlot( '/model/elec/head0', 'getVm', 'elec/head0Vm' ) - addPlot( '/model/elec/head2', 'getVm', 'elec/head2Vm' ) - #addPlot( '/n/head2', 'getIm', 'elec/head2Im' ) - addPlot( '/model/elec/head0/ca', 'getCa', 'elec/head0Ca' ) - addPlot( '/model/elec/head1/ca', 'getCa', 'elec/head1Ca' ) - addPlot( '/model/elec/head2/ca', 'getCa', 'elec/head2Ca' ) - addPlot( '/model/elec/head0/gluR', 'getIk', 'elec/head0Ik' ) - addPlot( '/model/elec/head1/gluR', 'getIk', 'elec/head1Ik' ) - addPlot( '/model/elec/head2/gluR', 'getIk', 'elec/head2Ik' ) - addPlot( '/model/elec/head1/gluR', 'getGbar', 'elec/head1Gbar' ) - addPlot( '/model/elec/head2/gluR', 'getGbar', 'elec/head2Gbar' ) - #addPlot( '/n/head0/gluR', 'getGk', 'elec/head0Gk' ) - #addPlot( '/n/head2/gluR', 'getGk', 'elec/head2Gk' ) - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - records = {} - for x in moose.wildcardFind( '/graphs/##[TYPE=Table2]' ): - records[x.name] = x - mu.plotRecords(records, subplot=True, outfile='%s.png' % fname) - -def makeSpinyCompt(): - comptLength = 30e-6 - comptDia = 6e-6 - numSpines = 5 - compt = createSquid() - compt.inject = 0 - compt.x0 = 0 - compt.y0 = 0 - compt.z0 = 0 - compt.x = comptLength - compt.y = 0 - compt.z = 0 - compt.length = comptLength - compt.diameter = comptDia - #kchan = moose.element( '/n/compt/K' ) - #kchan.Gbar = 0.2e-3 - synInput = moose.SpikeGen( '/n/compt/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - cell = moose.element( '/n' ) - for i in range( numSpines ): - r = createSpineWithReceptor( compt, cell, i, i/float(numSpines) ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 * i * ( 4 - i ) - syn.delay = i * 1.0e-3 - -def createPool( compt, name, concInit ): - meshEntries = moose.element( compt.path + '/mesh' ) - pool = moose.Pool( compt.path + '/' + name ) - pool.concInit = concInit - pool.diffConst = 1e-11 - return pool - - -def createChemModel( neuroCompt, spineCompt, psdCompt ): - # Stuff in spine + psd - #psdCa = createPool( psdCompt, 'Ca', 0.0001 ) - psdGluR = createPool( psdCompt, 'psdGluR', 1 ) - headCa = createPool( spineCompt, 'Ca', 1e-4 ) - headGluR = createPool( spineCompt, 'headGluR', 2 ) - toPsd = createPool( spineCompt, 'toPsd', 0 ) - toPsdInact = createPool( spineCompt, 'toPsdInact', 1e-3 ) - turnOnPsd = moose.Reac( spineCompt.path + '/turnOnPsd' ) - moose.connect( turnOnPsd, 'sub', headCa, 'reac', 'OneToOne' ) - moose.connect( turnOnPsd, 'sub', toPsdInact, 'reac', 'OneToOne' ) - moose.connect( turnOnPsd, 'prd', toPsd, 'reac', 'OneToOne' ) - turnOnPsd.Kf = 1e3 - turnOnPsd.Kb = 1 - toPsdEnz = moose.Enz( toPsd.path + '/enz' ) - toPsdEnzCplx = moose.Pool( toPsdEnz.path + '/cplx' ) - toPsdEnzCplx.concInit = 0 - moose.connect( toPsdEnz, 'enz', toPsd, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'sub', headGluR, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'prd', psdGluR, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'cplx', toPsdEnzCplx, 'reac', 'OneToOne' ) - toPsdEnz.Km = 1.0e-3 - toPsdEnz.kcat = 10.0 - fromPsd = moose.Reac( psdCompt.path + '/fromPsd' ) - moose.connect( fromPsd, 'sub', psdGluR, 'reac', 'OneToOne' ) - moose.connect( fromPsd, 'prd', headGluR, 'reac', 'OneToOne' ) - fromPsd.Kf = 0.5 - fromPsd.Kb = 0.0 - # Stuff in dendrite - dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) - bufCa = moose.Pool( neuroCompt.path + '/bufCa' ) - bufCa.concInit = 1e-4 - pumpCa = moose.Reac( neuroCompt.path + '/pumpCa' ) - moose.connect( pumpCa, 'sub', dendCa, 'reac', 'OneToOne' ) - moose.connect( pumpCa, 'prd', bufCa, 'reac', 'OneToOne' ) - pumpCa.Kf = 1 - pumpCa.Kb = 1 - dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) - dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) - dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) - moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) - moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) - moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) - dendTurnOnKinase.Kf = 50000 - dendTurnOnKinase.Kb = 1 - dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) - dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) - kChan = createPool( neuroCompt, 'kChan', 1e-3 ) - kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) - moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) - dendKinaseEnz.Km = 1e-4 - dendKinaseEnz.kcat = 20 - dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) - moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) - moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) - dendPhosphatase.Kf = 1 - dendPhosphatase.Kb = 0.0 - - -# Just for printf debugging -def printMolVecs( title ): - print title - """ - nCa = moose.vec( '/model/chem/neuroMesh/Ca' ) - sCa = moose.vec( '/model/chem/spineMesh/Ca' ) - sR = moose.vec( '/model/chem/spineMesh/headGluR' ) - pR = moose.vec( '/model/chem/psdMesh/psdGluR' ) - print 'sizes: nCa, sCa, sR, pR = ', len(nCa), len(sCa), len(sR), len(pR) - #print 'nCa=', nCa.conc, ', sCa=', sCa.conc, ', sR=', sR.n, ', pR=', pR.n - print 'nCaConcInit=', nCa.concInit, ', sCa=', sCa.concInit - #print 'sRnInit=', sR.nInit, ', pR=', pR.nInit - print 'sRconcInit=', sR.concInit, ', pR=', pR.concInit - - #print 'nCaSize=', nCa.volume, ', sCa=', sCa.volume, ', sR=', sR.n, ', pR=', pR.n - """ - -def makeChemInCubeMesh(): - dendSide = 10.8e-6 - spineSide = 6.8e-6 - psdSide = 8.565e-7 - parent = moose.Neutral ('/model/chem' ) - neuroMesh = moose.CubeMesh( '/model/chem/neuroMesh' ) - spineMesh = moose.CubeMesh( '/model/chem/spineMesh' ) - psdMesh = moose.CubeMesh( '/model/chem/psdMesh' ) - coords = [dendSide] * 9 - coords[0] = 0 - coords[1] = 0 - coords[2] = 0 - neuroMesh.coords = coords - neuroMesh.preserveNumEntries = 1 - - coords = [spineSide] * 9 - coords[0] = dendSide - coords[1] = 0 - coords[2] = 0 - coords[3] = spineSide + dendSide - spineMesh.coords = coords - spineMesh.preserveNumEntries = 1 - - coords = [psdSide] * 9 - coords[0] = dendSide + spineSide - coords[1] = 0 - coords[2] = 0 - coords[3] = psdSide + spineSide + dendSide - psdMesh.coords = coords - psdMesh.preserveNumEntries = 1 - - createChemModel( neuroMesh, spineMesh, psdMesh ) - dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) - assert dendCa.volume == dendSide * dendSide * dendSide - spineCa = moose.element( '/model/chem/spineMesh/Ca' ) - assert spineCa.volume == spineSide * spineSide * spineSide - psdGluR = moose.element( '/model/chem/psdMesh/psdGluR' ) - assert psdGluR.volume == psdSide * psdSide * psdSide - dendKinaseEnzCplx = moose.element( '/model/chem/neuroMesh/Ca.kinase/enz/cplx' ) - assert dendKinaseEnzCplx.volume == dendSide * dendSide * dendSide - -def makeSolvers( elecDt ): - # Put in the solvers, see how they fare. - # Here we kludge in a single chem solver for the whole system. - ksolve = moose.Ksolve( '/model/ksolve' ) - stoich = moose.Stoich( '/model/stoich' ) - stoich.compartment = moose.element( '/model/chem/neuroMesh' ) - stoich.ksolve = ksolve - stoich.path = '/model/chem/##' - moose.useClock( 5, '/model/ksolve', 'init' ) - moose.useClock( 6, '/model/ksolve', 'process' ) - # Here is the elec solver - hsolve = moose.HSolve( '/model/hsolve' ) - moose.useClock( 1, '/model/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - -def makeCubeMultiscale(): - makeSpinyCompt() - model = moose.Neutral( '/model' ) - elec = moose.element( '/n' ) - elec.name = 'elec' - moose.move( elec, model ) - synInput = moose.element( '/model/elec/compt/synInput' ) - synInput.refractT = 47e-3 - makeChemInCubeMesh() - # set up a reaction to fake diffusion between compts. - headCa = moose.element( '/model/chem/spineMesh/Ca' ) - dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) - diffReac = moose.Reac( '/model/chem/spineMesh/diff' ) - moose.connect( diffReac, 'sub', headCa, 'reac' ) - moose.connect( diffReac, 'prd', dendCa, 'reac' ) - diffReac.Kf = 1 - diffReac.Kb = headCa.volume / dendCa.volume - - # set up adaptors - headCa = moose.element( '/model/chem/spineMesh/Ca' ) - dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) - adaptCa = moose.Adaptor( '/model/chem/adaptCa' ) - elecCa = moose.element( '/model/elec/head2/ca' ) - # There are 5 spine heads in the electrical model. Average their input. - for i in range( 5 ): - path = '/model/elec/head' + str( i ) + '/ca' - elecCa = moose.element( path ) - moose.connect( elecCa, 'concOut', adaptCa, 'input', 'Single' ) - moose.connect( adaptCa, 'output', headCa, 'setConc' ) - adaptCa.outputOffset = 0.0001 # 100 nM offset in chem. - adaptCa.scale = 0.05 # 0.06 to 0.003 mM - - adaptGluR = moose.Adaptor( '/model/chem/psdMesh/adaptGluR' ) - chemR = moose.element( '/model/chem/psdMesh/psdGluR' ) - # Here we connect up the chem adaptors to only 3 of the spine - # heads in the elec model, just to make it interesting. - elec1R = moose.element( '/model/elec/head1/gluR' ) - elec2R = moose.element( '/model/elec/head2/gluR' ) - elec3R = moose.element( '/model/elec/head3/gluR' ) - moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToAll' ) - moose.connect( adaptGluR, 'output', elec1R, 'setGbar', 'OneToAll' ) - moose.connect( adaptGluR, 'output', elec2R, 'setGbar', 'OneToAll' ) - moose.connect( adaptGluR, 'output', elec3R, 'setGbar', 'OneToAll' ) - adaptGluR.outputOffset = 1e-9 # pS - adaptGluR.scale = 1e-8 / 100 # from n to pS - - adaptK = moose.Adaptor( '/model/chem/neuroMesh/adaptK' ) - chemK = moose.element( '/model/chem/neuroMesh/kChan' ) - elecK = moose.element( '/model/elec/compt/K' ) - moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) - moose.connect( adaptK, 'output', elecK, 'setGbar', 'OneToAll' ) - adaptK.scale = 0.3 # from mM to Siemens - - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/chem/psdMesh/psdGluR', 'getN', 'psd0R' ) - addPlot( '/model/chem/spineMesh/Ca', 'getConc', 'spine0Ca' ) - addPlot( '/model/chem/neuroMesh/Ca', 'getConc', 'dend0Ca' ) - addPlot( '/model/chem/neuroMesh/kChan_p', 'getConc', 'kChan_p' ) - addPlot( '/model/chem/neuroMesh/kChan', 'getConc', 'kChan' ) - addPlot( '/model/chem/neuroMesh/Ca.kinase', 'getConc', 'dendKinase' ) - addPlot( '/model/chem/spineMesh/toPsd', 'getConc', 'toPsd0' ) - #addPlot( '/n/neuroMesh/Ca', 'getConc', 'dendCa' ) - #addPlot( '/n/neuroMesh/inact_kinase', 'getConc', 'inactDendKinase' ) - #addPlot( '/n/psdMesh/psdGluR', 'getN', 'psdGluR' ) - -def testCubeMultiscale( useSolver ): - elecDt = 10e-6 - chemDt = 1e-4 - plotDt = 5e-4 - plotName = 'mc.plot' - if ( useSolver ): - elecDt = 50e-6 - chemDt = 2e-3 - plotName = 'mcs.plot' - makeCubeMultiscale() - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment],/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=SynBase],/model/elec/##[ISA=ChanBase],/model/elec/##[ISA=CaConc]','process') - moose.useClock( 5, '/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - moose.useClock( 6, '/model/##[ISA=PoolBase],/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - if ( useSolver ): - makeSolvers( elecDt ) - moose.reinit() - t = time.time() - moose.start( 1.0 ) - print("Total time taken: %s sec for 1.0 sec of simulation" % (time.time() - t)) - dumpPlots( plotName ) - -def main(): - testCubeMultiscale( 1 ) - -if __name__ == '__main__': - main() - diff --git a/examples/moogli/color_update.py b/examples/moogli/color_update.py deleted file mode 100644 index 01e3be1..0000000 --- a/examples/moogli/color_update.py +++ /dev/null @@ -1,108 +0,0 @@ -import moogli -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -import random -import numpy as np - -app = QtGui.QApplication(sys.argv) -filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" - ) -moose.neuroml.loadNeuroML_L123(filename) -morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") -morphology.create_group( "group-1" - , [ "/cells[0]/BigCellCML_0[0]/Seg0_dend_1043_1044[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1033_1034[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1019_1020[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1018_1019[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1016_1017[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1539_1540[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1579_1580[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1573_1574[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1572_1573[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1569_1570[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1559_1560[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1045_1046[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1021_1022[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1020_1021[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1581_1582[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1580_1581[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1046_1047[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1022_1023[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1027_1028[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1023_1024[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1028_1029[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1025_1026[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1024_1025[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1026_1027[0]" - ] - , 10.0 - , 200.0 - , [1.0, 0.0, 0.0, 1.0] - , [0.0, 1.0, 0.0, 1.0] - ) -morphology.create_group( "group-2" - , [ "/cells[0]/BigCellCML_0[0]/Seg0_dend_1076_1077[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1072_1073[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1099_1100[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1096_1097[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1108_1109[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1135_1136[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_35_36[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_655_656[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_535_536[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_716_717[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_14_15[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_87_88[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_236_237[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_218_219[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_172_173[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_152_153[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_363_364[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_362_363[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_344_345[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_341_342[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_320_321[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_312_313[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_453_454[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_449_450[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_437_438[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_426_427[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_418_419[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_409_410[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_407_408[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_396_397[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_394_395[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_390_391[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_389_390[0]" - , "/cells[0]/BigCellCML_0[0]/Seg0_dend_1079_1080[0]" - ] - , 0.0 - , 1.0 - , [0.0, 1.0, 0.0, 1.0] - , [0.0, 0.0, 1.0, 1.0] - ) -def callback(morphology, viewer): - morphology.set_color( "group-1" - , np.random.random_sample((24,)) * (100.0 - 20.0) + 20.0 - ) - morphology.set_color( "group-2" - , np.random.random_sample((34,)) - ) - viewer.roll(0.05, 0) - viewer.pitch(0.05, 1) - viewer.yaw(0.05, 2) - return True - -viewer = moogli.DynamicMorphologyViewerWidget(morphology) -viewer.showMaximized() -viewer.split_horizontally(0) -viewer.split_vertically(1) -viewer.zoom(0.5, 0) -viewer.zoom(0.5, 1) -viewer.zoom(0.5, 2) -viewer.set_callback(callback) -app.exec_() diff --git a/examples/moogli/purkinje_simulation.py b/examples/moogli/purkinje_simulation.py deleted file mode 100644 index 02df05d..0000000 --- a/examples/moogli/purkinje_simulation.py +++ /dev/null @@ -1,115 +0,0 @@ -""" -This script demonstrates how to use moogli to carry out a simulation and -simultaneously update the visualizer. -The visualizer remains active while the simulation is running. -""" - -import moogli -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -import random -import numpy as np -import math - -# The QApplication class manages the GUI application's -# control flow and main settings -app = QtGui.QApplication(sys.argv) - - -# Load model from the neuroml file into moose -filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" - ) -popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) - -# setting up hsolve object for each neuron -for popinfo in popdict.values(): - for cell in popinfo[1].values(): - solver = moose.HSolve(cell.path + "/hsolve") - solver.target = cell.path - -# reinit moose to bring to a reliable initial state. -moose.reinit() - -SIMULATION_DELTA = 0.001 -SIMULATION_TIME = 0.03 - -ALL_COMPARTMENTS = map( lambda x : x.path - , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") - ) -BASE_VM_VALUE = -0.065 -PEAK_VM_VALUE = -0.060 -BASE_VM_COLOR = [1.0, 0.0, 0.0, 0.1] -PEAK_VM_COLOR = [0.0, 0.0, 1.0, 1.0] - -# Moogli requires a morphology object. Create a morphology object -# by reading the geometry details from all objects of type CompartmentBase -# inside /cells[0] -morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") - - -# Create a named group of compartments called 'group-all' -# which will contain all the compartments of the model. -# Each group has a strict upper and lower limit for the -# variable which is being visualized. -# Both limits map to colors provided to the api. -# The value of the variable is linearly mapped to a color value -# lying between the upper and lower color values. - -morphology.create_group( "group-all" # group name - , ALL_COMPARTMENTS # sequence of compartments belonging to this group - , BASE_VM_VALUE # base value of variable - , PEAK_VM_VALUE # peak value of variable - , BASE_VM_COLOR # color corresponding to base value - , PEAK_VM_COLOR # color corresponding to peak value - ) - -# set initial color of all compartments in accordance with their vm -morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Vm - , ALL_COMPARTMENTS - ) - ) - -# instantiate the visualizer with the morphology object created earlier -viewer = moogli.DynamicMorphologyViewerWidget(morphology) - -# by default the visualizer is shown maximized. -viewer.showMaximized() - -# Callback function will be called by the visualizer at regular intervals. -# The callback can modify both the morphology and viewer object's properties -# since they are passed as arguments. -def callback(morphology, viewer): - # run simulation for 1 ms - moose.start(SIMULATION_DELTA) - # change color of all the compartments according to their vm values. - # a value higher than peak value will be clamped to peak value - # a value lower than base value will be clamped to base value. - morphology.set_color( "group-all" - , map( lambda x : x.Vm - , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") - ) - ) - # if the callback returns true, it will be called again. - # if it returns false it will not be called ever again. - # the condition below ensures that simulation runs for 1 sec - if moose.element("/clock").currentTime < SIMULATION_TIME : return True - else : return False - -# set the callback function to be called after every idletime milliseconds -viewer.set_callback(callback, idletime = 0) - -# make sure that entire model is visible -viewer.pitch(math.pi / 2) -viewer.zoom(0.25) - -# Enter the main event loop and wait until exit() is called. -# It is necessary to call this function to start event handling. -# The main event loop receives events from the window system and -# dispatches these to the application widgets. - -app.exec_() diff --git a/examples/moogli/purkinje_simulation_with_rm.py b/examples/moogli/purkinje_simulation_with_rm.py deleted file mode 100644 index 4957c69..0000000 --- a/examples/moogli/purkinje_simulation_with_rm.py +++ /dev/null @@ -1,187 +0,0 @@ -""" -This script demonstrates how to use moogli to carry out a simulation and -simultaneously update the visualizer. Also another viewer shows the compartment -rm values. The visualizers remain active while the simulation is running. -""" - - -import moogli -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -import random -import numpy as np -import math -from PyQt4.QtCore import * -from PyQt4.QtGui import * - -# The QApplication class manages the GUI application's -# control flow and main settings -app = QtGui.QApplication(sys.argv) - -# Load model from the neuroml file into moose -filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" - ) -popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) - -# setting up hsolve object for each neuron -for popinfo in popdict.values(): - for cell in popinfo[1].values(): - solver = moose.HSolve(cell.path + "/hsolve") - solver.target = cell.path - -# reinit moose to bring to a reliable initial state. -moose.reinit() - -SIMULATION_DELTA = 0.001 -SIMULATION_TIME = 0.03 - -ALL_COMPARTMENTS = map( lambda x : x.path - , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") - ) - -BASE_RM_VALUE = min( map( lambda x : moose.element(x).Rm - , ALL_COMPARTMENTS - ) - ) -PEAK_RM_VALUE = max( map( lambda x : moose.element(x).Rm - , ALL_COMPARTMENTS - ) - ) -BASE_RM_COLOR = [0.0, 1.0, 0.0, 0.1] -PEAK_RM_COLOR = [1.0, 0.0, 0.0, 1.0] - -BASE_VM_VALUE = -0.065 -PEAK_VM_VALUE = -0.060 -BASE_VM_COLOR = [1.0, 0.0, 0.0, 0.1] -PEAK_VM_COLOR = [0.0, 0.0, 1.0, 1.0] - - -def create_vm_visualizer(): - # Moogli requires a morphology object. Create a morphology object - # by reading the geometry details from all objects of type CompartmentBase - # inside /cells[0] - vm_morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") - - - # Create a named group of compartments called 'group-all' - # which will contain all the compartments of the model. - # Each group has a strict upper and lower limit for the - # variable which is being visualized. - # Both limits map to colors provided to the api. - # The value of the variable is linearly mapped to a color value - # lying between the upper and lower color values. - - vm_morphology.create_group( "group-all" # group name - , ALL_COMPARTMENTS # sequence of compartments belonging to this group - , BASE_VM_VALUE # base value of variable - , PEAK_VM_VALUE # peak value of variable - , BASE_VM_COLOR # color corresponding to base value - , PEAK_VM_COLOR # color corresponding to peak value - ) - - - # set initial color of all compartments in accordance with their vm - vm_morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Vm - , ALL_COMPARTMENTS - ) - ) - - # instantiate the visualizer with the morphology object created earlier - vm_viewer = moogli.DynamicMorphologyViewerWidget(vm_morphology) - - # Callback function will be called by the visualizer at regular intervals. - # The callback can modify both the morphology and viewer object's properties - # since they are passed as arguments. - def callback(morphology, viewer): - # run simulation for 1 ms - moose.start(SIMULATION_DELTA) - - # change color of all the compartments according to their vm values. - # a value higher than peak value will be clamped to peak value - # a value lower than base value will be clamped to base value. - morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Vm - , ALL_COMPARTMENTS - ) - ) - # if the callback returns true, it will be called again. - # if it returns false it will not be called again. - # the condition below ensures that simulation runs for 1 sec - if moose.element("/clock").currentTime < SIMULATION_TIME : return True - else : return False - - - # set the callback function to be called after every idletime milliseconds - vm_viewer.set_callback(callback, idletime = 0) - - # make sure that entire model is visible - vm_viewer.pitch(math.pi / 2) - vm_viewer.zoom(0.25) - vm_viewer.setWindowTitle("Vm Visualization") - return vm_viewer - -def create_rm_visualizer(): - # Moogli requires a morphology object. Create a morphology object - # by reading the geometry details from all objects of type CompartmentBase - # inside /cells[0] - morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") - - # Create a named group of compartments called 'group-all' - # which will contain all the compartments of the model. - # Each group has a strict upper and lower limit for the - # variable which is being visualized. - # Both limits map to colors provided to the api. - # The value of the variable is linearly mapped to a color value - # lying between the upper and lower color values. - morphology.create_group( "group-all" # group name - , ALL_COMPARTMENTS # sequence of compartments belonging to this group - , BASE_RM_VALUE # base value of variable - , PEAK_RM_VALUE # peak value of variable - , BASE_RM_COLOR # color corresponding to base value - , PEAK_RM_COLOR # color corresponding to peak value - ) - - # set initial color of all compartments in accordance with their rm - morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Rm - , ALL_COMPARTMENTS - ) - ) - - # instantiate the visualizer with the morphology object created earlier - rm_viewer = moogli.MorphologyViewerWidget(morphology) - - # make sure that entire model is visible - rm_viewer.pitch(math.pi / 2) - rm_viewer.zoom(0.25) - rm_viewer.setWindowTitle("Rm") - return rm_viewer - -vm_visualizer = create_vm_visualizer() -rm_visualizer = create_rm_visualizer() -vm_visualizer.show() -rm_visualizer.show() - - - -# http://stackoverflow.com/questions/15861839/error-upon-app-shutdown-qglcontextmakecurrent-cannot-make-invalid-context-cu -def delete_gl_widget(): - global vm_visualizer - global rm_visualizer - vm_visualizer.setParent(None) - del vm_visualizer - rm_visualizer.setParent(None) - del rm_visualizer - -QApplication.instance().aboutToQuit.connect( delete_gl_widget ) - -# Enter the main event loop and wait until exit() is called. -# It is necessary to call this function to start event handling. -# The main event loop receives events from the window system and -# dispatches these to the application widgets. -app.exec_() diff --git a/examples/moogli/purkinje_simulation_with_rm_and_graph.py b/examples/moogli/purkinje_simulation_with_rm_and_graph.py deleted file mode 100644 index ec886b2..0000000 --- a/examples/moogli/purkinje_simulation_with_rm_and_graph.py +++ /dev/null @@ -1,219 +0,0 @@ -""" -This script demonstrates how to use moogli to carry out a simulation and -simultaneously update the visualizer. Also another viewer shows the compartment -rm values. The visualizers remain active while the simulation is running. -Once the simulation finishes, a graph comes up, showing the soma vm values. -""" - -import moogli -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -import random -import numpy as np -import math -from PyQt4.QtCore import * -from PyQt4.QtGui import * -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.figure import Figure - -# The QApplication class manages the GUI application's -# control flow and main settings -app = QtGui.QApplication(sys.argv) - -# Load model from the neuroml file into moose -filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" - ) -popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) - -# setting up hsolve object for each neuron -for popinfo in popdict.values(): - for cell in popinfo[1].values(): - solver = moose.HSolve(cell.path + "/hsolve") - solver.target = cell.path - -# create a table to store vm values -table = moose.Table("/soma_table") -moose.connect( table - , 'requestOut' - , moose.element("/cells[0]/BigCellCML_0[0]/Seg0_soma_0[0]") - , "getVm" - ) - -# reinit moose to bring to a reliable initial state. -moose.reinit() - -SIMULATION_DELTA = 0.001 -SIMULATION_TIME = 0.03 - -ALL_COMPARTMENTS = map( lambda x : x.path - , moose.wildcardFind("/cells[0]/##[ISA=CompartmentBase]") - ) - -BASE_RM_VALUE = min( map( lambda x : moose.element(x).Rm - , ALL_COMPARTMENTS - ) - ) -PEAK_RM_VALUE = max( map( lambda x : moose.element(x).Rm - , ALL_COMPARTMENTS - ) - ) -BASE_RM_COLOR = [0.0, 1.0, 0.0, 0.1] -PEAK_RM_COLOR = [1.0, 0.0, 0.0, 1.0] - -BASE_VM_VALUE = -0.065 -PEAK_VM_VALUE = -0.060 -BASE_VM_COLOR = [1.0, 0.0, 0.0, 0.1] -PEAK_VM_COLOR = [0.0, 0.0, 1.0, 1.0] - -"""Create a class for plotting vm""" -class PlotWidget(FigureCanvas): - """Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.).""" - def __init__(self, parent=None, width=5, height=4, dpi=100): - fig = Figure(figsize=(width, height), dpi=dpi) - self.axes = fig.add_subplot(111) - # We want the axes cleared every time plot() is called - self.axes.hold(False) - FigureCanvas.__init__(self, fig) - self.setParent(parent) - - FigureCanvas.setSizePolicy(self, - QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Expanding) - FigureCanvas.updateGeometry(self) - -def create_vm_visualizer(): - # Moogli requires a morphology object. Create a morphology object - # by reading the geometry details from all objects of type CompartmentBase - # inside /cells[0] - vm_morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") - - - # Create a named group of compartments called 'group-all' - # which will contain all the compartments of the model. - # Each group has a strict upper and lower limit for the - # variable which is being visualized. - # Both limits map to colors provided to the api. - # The value of the variable is linearly mapped to a color value - # lying between the upper and lower color values. - - vm_morphology.create_group( "group-all" # group name - , ALL_COMPARTMENTS # sequence of compartments belonging to this group - , BASE_VM_VALUE # base value of variable - , PEAK_VM_VALUE # peak value of variable - , BASE_VM_COLOR # color corresponding to base value - , PEAK_VM_COLOR # color corresponding to peak value - ) - - - # set initial color of all compartments in accordance with their vm - vm_morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Vm - , ALL_COMPARTMENTS - ) - ) - - # instantiate the visualizer with the morphology object created earlier - vm_viewer = moogli.DynamicMorphologyViewerWidget(vm_morphology) - - # Callback function will be called by the visualizer at regular intervals. - # The callback can modify both the morphology and viewer object's properties - # since they are passed as arguments. - def callback(morphology, viewer): - # run simulation for 1 ms - moose.start(SIMULATION_DELTA) - - # change color of all the compartments according to their vm values. - # a value higher than peak value will be clamped to peak value - # a value lower than base value will be clamped to base value. - morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Vm - , ALL_COMPARTMENTS - ) - ) - # if the callback returns true, it will be called again. - # if it returns false it will not be called again. - # the condition below ensures that simulation runs for 1 sec - if moose.element("/clock").currentTime < SIMULATION_TIME : return True - else: - plot_widget = PlotWidget() - xs = np.linspace(0, moose.element("/clock").runTime, len(table.vector)) - ys = table.vector.copy() - plot_widget.axes.plot(xs, ys) - plot_widget.draw() - plot_widget.show() - plot_widget.setWindowTitle("Soma Vm") - return False - - - # set the callback function to be called after every idletime milliseconds - vm_viewer.set_callback(callback, idletime = 0) - - # make sure that entire model is visible - vm_viewer.pitch(math.pi / 2) - vm_viewer.zoom(0.25) - vm_viewer.setWindowTitle("Vm Visualization") - return vm_viewer - -def create_rm_visualizer(): - # Moogli requires a morphology object. Create a morphology object - # by reading the geometry details from all objects of type CompartmentBase - # inside /cells[0] - morphology = moogli.read_morphology_from_moose(name = "", path = "/cells[0]") - - # Create a named group of compartments called 'group-all' - # which will contain all the compartments of the model. - # Each group has a strict upper and lower limit for the - # variable which is being visualized. - # Both limits map to colors provided to the api. - # The value of the variable is linearly mapped to a color value - # lying between the upper and lower color values. - morphology.create_group( "group-all" # group name - , ALL_COMPARTMENTS # sequence of compartments belonging to this group - , BASE_RM_VALUE # base value of variable - , PEAK_RM_VALUE # peak value of variable - , BASE_RM_COLOR # color corresponding to base value - , PEAK_RM_COLOR # color corresponding to peak value - ) - - # set initial color of all compartments in accordance with their rm - morphology.set_color( "group-all" - , map( lambda x : moose.element(x).Rm - , ALL_COMPARTMENTS - ) - ) - - # instantiate the visualizer with the morphology object created earlier - rm_viewer = moogli.MorphologyViewerWidget(morphology) - - # make sure that entire model is visible - rm_viewer.pitch(math.pi / 2) - rm_viewer.zoom(0.25) - rm_viewer.setWindowTitle("Rm") - return rm_viewer - -vm_visualizer = create_vm_visualizer() -rm_visualizer = create_rm_visualizer() -vm_visualizer.show() -rm_visualizer.show() - -# http://stackoverflow.com/questions/15861839/error-upon-app-shutdown-qglcontextmakecurrent-cannot-make-invalid-context-cu -def delete_gl_widget(): - global vm_visualizer - global rm_visualizer - vm_visualizer.setParent(None) - del vm_visualizer - rm_visualizer.setParent(None) - del rm_visualizer - -QApplication.instance().aboutToQuit.connect( delete_gl_widget ) - - -# Enter the main event loop and wait until exit() is called. -# It is necessary to call this function to start event handling. -# The main event loop receives events from the window system and -# dispatches these to the application widgets. -app.exec_() diff --git a/examples/moogli/simple_viewing.py b/examples/moogli/simple_viewing.py deleted file mode 100644 index 71d399e..0000000 --- a/examples/moogli/simple_viewing.py +++ /dev/null @@ -1,28 +0,0 @@ -import moogli -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import sys -import os - -app = QtGui.QApplication(sys.argv) -filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml" - ) -moose.neuroml.loadNeuroML_L123(filename) -morphology_distal = moogli.read_morphology_from_moose(name = "", path = "/cells[0]", radius = moogli.DISTAL) -viewer_distal = moogli.MorphologyViewerWidget(morphology_distal) -viewer_distal.setWindowTitle("Distal Radius") - -morphology_averaged = moogli.read_morphology_from_moose(name = "", path = "/cells[0]", radius = moogli.AVERAGED) -viewer_averaged = moogli.MorphologyViewerWidget(morphology_averaged) -viewer_averaged.setWindowTitle("Averaged Radius") - -morphology_proximal_distal = moogli.read_morphology_from_moose(name = "", path = "/cells[0]", radius = moogli.PROXIMAL_DISTAL) -viewer_proximal_distal = moogli.MorphologyViewerWidget(morphology_proximal_distal) -viewer_proximal_distal.setWindowTitle("Continous Variation in Radius") - -viewer_distal.show() -viewer_averaged.show() -viewer_proximal_distal.show() -app.exec_() diff --git a/examples/neuroml/CA1PyramidalCell/CA1.net.xml b/examples/neuroml/CA1PyramidalCell/CA1.net.xml deleted file mode 100644 index 2f8a936..0000000 --- a/examples/neuroml/CA1PyramidalCell/CA1.net.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: CA1PyramidalCell - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/CA1.py b/examples/neuroml/CA1PyramidalCell/CA1.py deleted file mode 100644 index c8b8e74..0000000 --- a/examples/neuroml/CA1PyramidalCell/CA1.py +++ /dev/null @@ -1,51 +0,0 @@ -## Aditya Gilra, NCBS, Bangalore, 2012 - -""" -Inside the .../moose-examples/CA1PyramidalCell/ directory supplied with MOOSE, run -python CA1.py -(if no filename is specified, the single compartment CA1 cell is used.) -(supporting channels and different morph xml files are already present in this same directory). -The soma name below is hard coded for CA1, else any other file can be used by modifying this script. -""" - -import os -os.environ['NUMPTHREADS'] = '1' -import moose -from moose.utils import * - -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -simdt = 10e-6 # s -plotdt = 10e-6 # s -runtime = 0.2 # s - -def loadGran98NeuroML_L123(filename): - neuromlR = NeuroML() - populationDict, projectionDict = \ - neuromlR.readNeuroMLFromFile(filename) - soma_path = populationDict['CA1group'][1][0].path+'/Seg0_soma_0_0' - somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') - #somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') - #somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') - #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') - soma = moose.Compartment(soma_path) - print "Reinit MOOSE ... " - resetSim(['/elec','/cells'],simdt,plotdt,simmethod='ee') # from moose.utils - print "Running ... " - moose.start(runtime) - tvec = arange(0.0,runtime,simdt) - plot(tvec,somaVm.vector[1:]) - title('Soma Vm') - xlabel('time (s)') - ylabel('Voltage (V)') - print "Showing plots ..." - show() - -if __name__ == "__main__": - if len(sys.argv)<2: - filename = "CA1soma.net.xml" - else: - filename = sys.argv[1] - loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/CA1PyramidalCell/CA1_hsolve.py b/examples/neuroml/CA1PyramidalCell/CA1_hsolve.py deleted file mode 100644 index 06f437e..0000000 --- a/examples/neuroml/CA1PyramidalCell/CA1_hsolve.py +++ /dev/null @@ -1,57 +0,0 @@ -## Aditya Gilra, NCBS, Bangalore, 201 - -""" -Inside the .../moose-examples/CA1PyramidalCell/ directory supplied with MOOSE, run -python testNeuroML_CA1.py -(other channels and morph xml files are already present in this same directory). -The soma name below is hard coded for CA1, else any other file can be used by modifying this script. -""" - -import moose -from moose.utils import * - -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -simdt = 10e-6 # s -plotdt = 10e-6 # s -runtime = 0.2 # s -cells_path = '/cells' # neuromlR.readNeuroMLFromFile creates cells in '/cells' - -def loadGran98NeuroML_L123(filename,params): - neuromlR = NeuroML() - populationDict, projectionDict = \ - neuromlR.readNeuroMLFromFile(filename,params=params) - print "Number of compartments =",\ - len(moose.Neuron(populationDict['CA1group'][1][0].path).children) - soma_path = populationDict['CA1group'][1][0].path+'/Seg0_soma_0_0' - somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') - #somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') - #somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') - #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') - soma = moose.Compartment(soma_path) - - print "Reinit MOOSE ... " - resetSim(['/elec','/cells'],simdt,plotdt,simmethod='hsolve') # from moose.utils - print "Running ... " - moose.start(runtime) - tvec = arange(0.0,runtime,simdt) - plot(tvec,somaVm.vector[1:]) - title('Soma Vm') - xlabel('time (s)') - ylabel('Voltage (V)') - print "Showing plots ..." - show() - -if __name__ == "__main__": - if len(sys.argv)<2: - filename = "CA1soma.net.xml" - params = {} - else: - filename = sys.argv[1] - params = {} - if len(sys.argv)>2: - params = {'combineSegments':bool(sys.argv[2])} - # sys.argv[2] should be True or False - loadGran98NeuroML_L123(filename,params) diff --git a/examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml b/examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml deleted file mode 100644 index 13c40ec..0000000 --- a/examples/neuroml/CA1PyramidalCell/CA1inhomog.net.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: CA1PyramidalCell - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/CA1soma.net.xml b/examples/neuroml/CA1PyramidalCell/CA1soma.net.xml deleted file mode 100644 index b5ab7ba..0000000 --- a/examples/neuroml/CA1PyramidalCell/CA1soma.net.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: CA1PyramidalCell - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/FvsI_CA1.py b/examples/neuroml/CA1PyramidalCell/FvsI_CA1.py deleted file mode 100644 index dc2fc94..0000000 --- a/examples/neuroml/CA1PyramidalCell/FvsI_CA1.py +++ /dev/null @@ -1,76 +0,0 @@ - -# -*- coding: utf-8 -*- -## all SI units -######################################################################################## -## Plot the firing rate vs current injection curve for a Cerebellar Granule Cell neuron -## Author: Aditya Gilra -## Creation Date: 2012-07-12 -## Modification Date: 2012-07-12 -######################################################################################## - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('.') -import moose -from moose.utils import * - -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -SIMDT = 25e-6 # s -PLOTDT = 25e-6 # s -RUNTIME = 1.0 # s - -injectmax = 2e-12 # Amperes - -neuromlR = NeuroML() -neuromlR.readNeuroMLFromFile('cells_channels/CA1soma.morph.xml') -libcell = moose.Neuron('/library/CA1soma') -CA1Cellid = moose.copy(libcell,moose.Neutral('/cells'),'CA1') -CA1Cell = moose.Neuron(CA1Cellid) -#printCellTree(CA1Cell) - -## edge-detect the spikes using spike-gen (table does not have edge detect) -spikeGen = moose.SpikeGen(CA1Cell.path+'/spikeGen') -spikeGen.threshold = -30e-3 # V -CA1CellSoma = moose.Compartment(CA1Cell.path+'/Seg0_soma_0_0') -CA1CellSoma.inject = 0 # by default the cell has a current injection -moose.connect(CA1CellSoma,'VmOut',spikeGen,'Vm') -## save spikes in table -table_path = moose.Neutral(CA1Cell.path+'/data').path -CA1CellSpikesTable = moose.Table(table_path+'/spikesTable') -moose.connect(spikeGen,'spikeOut',CA1CellSpikesTable,'input') - -#CA1CellVmTable = moose.Table(table_path+'/vmTable') -#moose.connect(CA1CellSoma,'VmOut',CA1CellVmTable,'input') - -cells_path = '/cells' - -## from moose_utils.py sets clocks and resets/reinits -resetSim(['/cells'],SIMDT,PLOTDT,simmethod='hsolve') # from moose.utils - -## Loop through different current injections -freqList = [] -currentvec = arange(0, injectmax, injectmax/50.0) -for currenti in currentvec: - moose.reinit() - CA1CellSoma.inject = currenti - moose.start(RUNTIME) - spikesList = array(CA1CellSpikesTable.vector) - if len(spikesList)>0: - spikesList = spikesList[where(spikesList>0.0)[0]] - spikesNow = len(spikesList) - else: spikesNow = 0.0 - print "For injected current =",currenti,\ - "number of spikes in",RUNTIME,"seconds =",spikesNow - freqList.append( spikesNow/float(RUNTIME) ) - -## plot the F vs I curve of the neuron -figure(facecolor='w') -plot(currentvec, freqList,'o-') -xlabel('time (s)') -ylabel('frequency (Hz)') -title('HH single-compartment Cell') -show() diff --git a/examples/neuroml/CA1PyramidalCell/README b/examples/neuroml/CA1PyramidalCell/README deleted file mode 100644 index 17ae8a5..0000000 --- a/examples/neuroml/CA1PyramidalCell/README +++ /dev/null @@ -1,18 +0,0 @@ -This is the directory for the NeuroML files generated by neuroConstruct 1.5.3 (neuroConstruct.org) for CA1 cell model. -These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). - -Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. -Select and open the CA1.net.xml or CA1soma.net.xml file. -[ -CA1soma.net.xml instantiates a CA1 cell having only the soma. -CA1.net.xml instantiates a detailed CA1 model, however it has been modified from that exported from neuroConstruct. -Some inhomogeneous channels in the dendrites, and some negative conductance (!) channels were removed, hence it fires spontaneously. -] -Select the soma (graphical viewer or element tree) and click 'add field' on the right 'plot configuration' pane to plot Vm. -Run the simulation and see the soma Vm. - -To test on the terminal, just run (hsolve is much faster): -python CA1_hsolve.py -python CA1.py - can be one of CA1soma.net.xml, CA1.net.xml, or CA1inhomog.net.xml -(pops up soma Vm) (if no filename is specified, the simgle compartment CA1 is used). diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml deleted file mode 100644 index b7ea967..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.bad.xml +++ /dev/null @@ -1,12609 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - soma_group - - - - - - - soma_group - - - - - - - - all - - - all - - - soma_group - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml deleted file mode 100644 index 68f982a..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.original.xml +++ /dev/null @@ -1,12670 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - - - - axon_group - soma_group - - - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_5 - - - - - - all - - - all - - - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_7 - - - - - - soma_group - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - ModelViewParmSubset_2 - - - - ModelViewParmSubset_2 - - - - - - - dendrite_group - - - - - - - - - dendrite_group - - - - - - - - - dendrite_group - - - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml deleted file mode 100644 index 074524a..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1.morph.xml +++ /dev/null @@ -1,12628 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. - All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - - - - axon_group - soma_group - - - - - - - - all - - - all - - - - - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - ModelViewParmSubset_2 - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml deleted file mode 100644 index 68f982a..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1_original.morph.xml +++ /dev/null @@ -1,12670 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - - - - axon_group - soma_group - - - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_5 - - - - - - all - - - all - - - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_7 - - - - - - soma_group - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - ModelViewParmSubset_2 - - - - ModelViewParmSubset_2 - - - - - - - dendrite_group - - - - - - - - - dendrite_group - - - - - - - - - dendrite_group - - - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml deleted file mode 100644 index c4700d0..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1inhomog.morph.xml +++ /dev/null @@ -1,12670 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - - - - axon_group - soma_group - - - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_5 - - - - - - all - - - all - - - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_7 - - - - - - soma_group - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - ModelViewParmSubset_2 - - - - ModelViewParmSubset_2 - - - - - - - dendrite_group - - - - - - - - - dendrite_group - - - - - - - - - dendrite_group - - - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml deleted file mode 100644 index f95579a..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/CA1soma.morph.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - Only soma of more detailed cell - MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. - All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. - - - - - - - - - - - - - - - all - soma_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_9 - OneSecGrp_SectionRef_1 - - - - - - - - - - - - - - - all - - - - - - all - - - - - - all - - - - - - soma_group - - - - - - all - - - all - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml deleted file mode 100644 index 49fc297..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_KDr_98.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. - Updated to post v1.7.3 new ChannelML format - There is a discontinuity in the expression for alpha in h gate - - Padraig Gleeson - - - - Delayed rectifyer K channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml deleted file mode 100644 index 39a24bf..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/Gran_NaF_98.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - Quite a small dt (~0.001 ms) is needed to give matching NEURON/GENESIS results for a compartment with just - this channel (and a leak current) - - Padraig Gleeson - - - - Fast inactivating Na+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml deleted file mode 100644 index 0ff356a..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/Purkinje_KA.xml +++ /dev/null @@ -1,141 +0,0 @@ - - - - ChannelML file containing a single Channel from De Schutter and Bower 1998 - - - - - - - - Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse (but 0.002 is better) - Needs a large value of table_divisions for equivalence with orig NEURON mod impl - - Padraig Gleeson - - - - A type K current. Based on Roth et al's reimplementation of original GENESIS model in NEURON - - - - De Schutter, E. - - - Bower, J. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Jenny Davie - UCL - Conversion of GENESIS model to NEURON - - - Arnd Roth - UCL - Conversion of GENESIS model to NEURON - - - Volker Steuber - UCL - Conversion of GENESIS model to NEURON - - - Michael Hausser - UCL - Conversion of GENESIS model to NEURON - - - - - De Schutter, E., and Bower, J. M. (1994). An active membrane model of the cerebellar Purkinje cell. I. Simulation of current clamps in slice. J Neurophysiol 71, 375-400. - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&cmd=Retrieve&dopt=AbstractPlus&list_uids=7512629 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Settings from the original mod file - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/README b/examples/neuroml/CA1PyramidalCell/cells_channels/README deleted file mode 100644 index c461327..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/README +++ /dev/null @@ -1,14 +0,0 @@ -CA1.morph.original.xml is the original file exported from neuroConstruct. -It does not work with MOOSE as it has inhomogeneous_value tags, - and negative conductances for hd channel (!), - and channels whose parameters change in the morphml after loading in the channelml. - -CA1.morph.bad.xml is the CA1 cell morphology with channels from the cerebellar granule cell! -It shows spikes that are a few tens of microsecond wide using 10microsec time step in ee, - but hsolve just oscillates for 10microsec, with 1 microsec time step, hsolve works. - -CA1.morph.xml is the original file from neuroConstruct, but the inhomogeneous_value tags have been removed, - and hd channels with negative conductances have been removed, - and some new channels with the parameter changes hard coded have been used. -This works in MOOSE, but fires uniformly spontaneously at a low rate. - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml deleted file mode 100644 index a882baa..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/hd.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml deleted file mode 100644 index 38815ff..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/hd_minus73.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml deleted file mode 100644 index bb7c5af..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/kad.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml deleted file mode 100644 index 58fdea0..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/kap.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, - modified to account for Dax A Current --- M.Migliore Jun 1997, - modified to be used with cvode M.Migliore 2001 - - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml deleted file mode 100644 index 180c563..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/kdr.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, - modified to account for Dax et al., M.Migliore 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml deleted file mode 100644 index 5684d19..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/na3.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! - - Padraig Gleeson - - - - Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml deleted file mode 100644 index 3ca589c..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/nax.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - - - diff --git a/examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml b/examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml deleted file mode 100644 index 9abffeb..0000000 --- a/examples/neuroml/CA1PyramidalCell/cells_channels/pas.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/neuroml/GranuleCell/FvsI_Granule98.py b/examples/neuroml/GranuleCell/FvsI_Granule98.py deleted file mode 100644 index c9e403d..0000000 --- a/examples/neuroml/GranuleCell/FvsI_Granule98.py +++ /dev/null @@ -1,69 +0,0 @@ - -# -*- coding: utf-8 -*- -## all SI units -######################################################################################## -## Plot the firing rate vs current injection curve for a Cerebellar Granule Cell neuron -## Author: Aditya Gilra -## Creation Date: 2012-07-12 -## Modification Date: 2012-07-12 -######################################################################################## - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('.') -import moose -from moose.utils import * - -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -SIMDT = 25e-6 # s -PLOTDT = 25e-6 # s -RUNTIME = 2.0 # s - -injectmax = 20e-12 # Amperes - -neuromlR = NeuroML() -neuromlR.readNeuroMLFromFile('cells_channels/Granule_98.morph.xml') -libcell = moose.Neuron('/library/Granule_98') -granCellid = moose.copy(libcell,moose.Neutral('/cells'),'granCell') -granCell = moose.Neuron(granCellid) - -## edge-detect the spikes using spike-gen (table does not have edge detect) -spikeGen = moose.SpikeGen(granCell.path+'/spikeGen') -spikeGen.threshold = 0e-3 # V -granCellSoma = moose.Compartment(granCell.path+'/Soma_0') -moose.connect(granCellSoma,'VmOut',spikeGen,'Vm') -## save spikes in table -table_path = moose.Neutral(granCell.path+'/data').path -granCellSpikesTable = moose.Table(table_path+'/spikesTable') -moose.connect(spikeGen,'spikeOut',granCellSpikesTable,'input') - -## from moose_utils.py sets clocks and resets/reinits -resetSim(['/cells'], SIMDT, PLOTDT, simmethod='hsolve') - -## Loop through different current injections -freqList = [] -currentvec = arange(0.0, injectmax, injectmax/50.0) -for currenti in currentvec: - moose.reinit() - granCellSoma.inject = currenti - moose.start(RUNTIME) - spikesList = array(granCellSpikesTable.vector) - if len(spikesList)>0: - spikesList = spikesList[where(spikesList>0.0)[0]] - spikesNow = len(spikesList) - else: spikesNow = 0.0 - print "For injected current =",currenti,\ - "number of spikes in",RUNTIME,"seconds =",spikesNow - freqList.append( spikesNow/float(RUNTIME) ) - -## plot the F vs I curve of the neuron -figure(facecolor='w') -plot(currentvec, freqList,'o-',linewidth=2) -xlabel('time (s)',fontsize=24) -ylabel('frequency (Hz)',fontsize=24) -title('HH single-compartment Cell',fontsize=24) -show() diff --git a/examples/neuroml/GranuleCell/Granule98.py b/examples/neuroml/GranuleCell/Granule98.py deleted file mode 100644 index cde13f6..0000000 --- a/examples/neuroml/GranuleCell/Granule98.py +++ /dev/null @@ -1,62 +0,0 @@ -## Aditya Gilra, NCBS, Bangalore, 2012 - -""" -Inside the .../moose-examples/GranuleCell/ directory supplied with MOOSE, run -python testNeuroML_Gran98.py -(other channels and morph xml files are already present in this same directory). -The soma name below is hard coded for gran98, else any other file can be used by modifying this script. -""" -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import moose -from moose.utils import * - -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -simdt = 1e-6 # s -plotdt = 10e-6 # s -runtime = 0.7 # s - -def loadGran98NeuroML_L123(filename): - neuromlR = NeuroML() - populationDict, projectionDict = \ - neuromlR.readNeuroMLFromFile(filename) - soma_path = populationDict['Gran'][1][0].path+'/Soma_0' - somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') - somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') - somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') - #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') - soma = moose.Compartment(soma_path) - print "Reinit MOOSE ... " - resetSim(['/elec','/cells'],simdt,plotdt,simmethod='ee') # from moose.utils - print "Running ... " - moose.start(runtime) - tvec = arange(0.0,runtime,plotdt) - plot(tvec,somaVm.vector[1:]) - title('Soma Vm') - xlabel('time (s)') - ylabel('Voltage (V)') - figure() - plot(tvec,somaCa.vector[1:]) - title('Soma Ca') - xlabel('time (s)') - ylabel('Ca conc (mol/m^3)') - figure() - plot(tvec,somaIKCa.vector[1:]) - title('KCa current (A)') - xlabel('time (s)') - ylabel('') - print "Showing plots ..." - show() - -filename = "GranuleCell.net.xml" -if __name__ == "__main__": - if len(sys.argv)<2: - filename = "GranuleCell.net.xml" - else: - filename = sys.argv[1] - loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/GranuleCell/Granule98_hsolve.py b/examples/neuroml/GranuleCell/Granule98_hsolve.py deleted file mode 100644 index 52a3f81..0000000 --- a/examples/neuroml/GranuleCell/Granule98_hsolve.py +++ /dev/null @@ -1,67 +0,0 @@ -## Aditya Gilra, NCBS, Bangalore, 2012 - -""" -Inside the .../moose-examples/GranuleCell/ directory supplied with MOOSE, run -python testNeuroML_Gran98.py -(other channels and morph xml files are already present in this same directory). -The soma name below is hard coded for gran98, else any other file can be used by modifying this script. -""" - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') - -import moose -from moose.utils import * -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -simdt = 10e-6 # s -plotdt = 10e-6 # s -runtime = 0.7 # s -cells_path = '/cells' # neuromlR.readNeuroMLFromFile creates cells in '/cells' - -def loadGran98NeuroML_L123(filename): - neuromlR = NeuroML() - populationDict, projectionDict = \ - neuromlR.readNeuroMLFromFile(filename) - soma_path = populationDict['Gran'][1][0].path+'/Soma_0' - somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') - somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') - somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') - ## Am not able to plot KDr gating variable X when running under hsolve - #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') - - print "Reinit MOOSE ... " - resetSim(['/elec',cells_path], simdt, plotdt, simmethod='hsolve') - - print "Running ... " - moose.start(runtime) - tvec = arange(0.0,runtime*2.0,plotdt) - tvec = tvec[ : somaVm.vector.size ] - plot(tvec,somaVm.vector) - title('Soma Vm') - xlabel('time (s)') - ylabel('Voltage (V)') - figure() - plot(tvec,somaCa.vector) - title('Soma Ca') - xlabel('time (s)') - ylabel('Ca conc (mol/m^3)') - figure() - plot(tvec,somaIKCa.vector) - title('soma KCa current') - xlabel('time (s)') - ylabel('KCa current (A)') - print "Showing plots ..." - show() - -filename = "GranuleCell.net.xml" -if __name__ == "__main__": - if len(sys.argv)<2: - filename = "GranuleCell.net.xml" - else: - filename = sys.argv[1] - loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/GranuleCell/GranuleCell.net.xml b/examples/neuroml/GranuleCell/GranuleCell.net.xml deleted file mode 100644 index 14a879d..0000000 --- a/examples/neuroml/GranuleCell/GranuleCell.net.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: GranuleCell saved with neuroConstruct v1.5.1 on: 14:34:18, 15-Nov-11 - -Cell Group: Gran contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/README b/examples/neuroml/GranuleCell/README deleted file mode 100644 index dfba684..0000000 --- a/examples/neuroml/GranuleCell/README +++ /dev/null @@ -1,10 +0,0 @@ -This is the directory for the NeuroML files generated by neuroConstruct 1.5.1 (neuroConstruct.org) for the Cerebellar Granule cell model -(Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, J Neurophysiol, Nov 1998; 80: 2521 - 2537). -These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). - -Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. -Select and open the GranuleCell.net.xml file. -Select the soma (graphical viewer or element tree) and click 'add field' on the right 'plot configuration' pane to plot Vm. -Run the simulation and see the soma Vm. - -To test on the terminal, just run python Granule98.py (uses exponential euler) or python Granule98_hsolve.py (uses hines solver). diff --git a/examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml b/examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml deleted file mode 100644 index 6a00e70..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/GranPassiveCond.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - ChannelML file containing a single Channel description - - - - - - - Padraig Gleeson - - - - Simple leak conductance for Granule cell - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml deleted file mode 100644 index bd83930..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_CaHVA_98.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. - Updated to post v1.7.3 new ChannelML format - - Padraig Gleeson - - - - A High Voltage Activated Ca2+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - Calcium channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml deleted file mode 100644 index c091b34..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_CaPool_98.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - This ChannelML file has been updated to reflect the preferred form of elements/attributes which will be required from v2.0. - See info on Version 2 Requirements. - - Padraig Gleeson - - - - An expontially decaying pool of calcium - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml deleted file mode 100644 index 54029c8..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_H_98.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - A values don't match table 1 in M and DeS 98 - - Padraig Gleeson - - - - Anomalous inward rectifying H conductance - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml deleted file mode 100644 index 3a8578c..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_KA_98.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - - Padraig Gleeson - - - - A-type K channel, with rate equations expressed in tau and inf form - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml deleted file mode 100644 index c865b56..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_KCa_98.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - This ChannelML file is intended ONLY to replicate the original GENESIS functionality. A new Granule cell model is being developed based on - D'Angelo et al 2001 and Berends, Maex and De Schutter 2005, and the ChannelML files will be updated - - Padraig Gleeson - - - - Calcium dependent K+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml deleted file mode 100644 index 49fc297..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_KDr_98.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. - Updated to post v1.7.3 new ChannelML format - There is a discontinuity in the expression for alpha in h gate - - Padraig Gleeson - - - - Delayed rectifyer K channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml b/examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml deleted file mode 100644 index 39a24bf..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Gran_NaF_98.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - Quite a small dt (~0.001 ms) is needed to give matching NEURON/GENESIS results for a compartment with just - this channel (and a leak current) - - Padraig Gleeson - - - - Fast inactivating Na+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml b/examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml deleted file mode 100644 index c56403e..0000000 --- a/examples/neuroml/GranuleCell/cells_channels/Granule_98.morph.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - An implementation using ChannelML of the Granule cell mode from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, 1998 - - - - - - - - - - - - - - - all - soma_group - - - - - - - - - - - - - - - all - - - - - - all - - - all - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - - all - - - - - - - all - - - - all - - - - - - - all - - - - - - - all - - - - all - - - - all - - - - all - - - - - - diff --git a/examples/neuroml/LIF/FvsI_LIF.py b/examples/neuroml/LIF/FvsI_LIF.py deleted file mode 100644 index 0d2d975..0000000 --- a/examples/neuroml/LIF/FvsI_LIF.py +++ /dev/null @@ -1,59 +0,0 @@ - -# -*- coding: utf-8 -*- -## all SI units -######################################################################################## -## Plot the firing rate vs current injection curve for a leaky integrate and fire neuron -## Author: Aditya Gilra -## Creation Date: 2012-06-08 -## Modification Date: 2012-06-08 -######################################################################################## - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('.') - -from LIFxml_firing import * -injectmax = 1e-7 # Amperes - -IF1 = create_LIF() - -## edge-detect the spikes using spike-gen (table does not have edge detect) -## save spikes in table -table_path = moose.Neutral(IF1.path+'/data').path -IF1spikesTable = moose.Table(table_path+'/spikesTable') -IF1soma = moose.element(IF1.path+'/soma_0') -moose.connect(IF1soma,'spikeOut',IF1spikesTable,'input') - -## from moose_utils.py sets clocks and resets/reinits -## simmethod='hsolve' doesn't work -- check resetSim -resetSim(['/cells'], SIMDT, PLOTDT, simmethod='ee') - -## Loop through different current injections -freqList = [] -currentvec = arange(0.4e-12, injectmax, injectmax/30.0) -### log scale for x-axis -#dlogI = log(2.5) -#logcurrentvec = arange(log(injectmax)-30*dlogI,log(injectmax),dlogI) -#currentvec = [0.0] -#currentvec.extend( [exp(I) for I in logcurrentvec] ) -for currenti in currentvec: - moose.reinit() - IF1soma.inject = currenti - moose.start(RUNTIME) - spikesList = IF1spikesTable.vector - if len(spikesList)>0: - spikesList = spikesList[where(spikesList>0.0)[0]] - spikesNow = len(spikesList) - else: spikesNow = 0.0 - print "For injected current =",currenti,\ - "number of spikes in",RUNTIME,"seconds =",spikesNow - freqList.append( spikesNow/float(RUNTIME) ) - -## plot the F vs I curve of the neuron -figure(facecolor='w') -plot(currentvec, freqList,'o-',linewidth=2) -xlabel('current (A)',fontsize=24) -ylabel('frequency (Hz)',fontsize=24) -title('Leaky Integrate and Fire',fontsize=24) -show() diff --git a/examples/neuroml/LIF/LIFinject.net.xml b/examples/neuroml/LIF/LIFinject.net.xml deleted file mode 100644 index 3f4e1a0..0000000 --- a/examples/neuroml/LIF/LIFinject.net.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -LIF cell with current injection: written by Aditya Gilra - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/LIF/LIFxml_firing.py b/examples/neuroml/LIF/LIFxml_firing.py deleted file mode 100644 index 293c286..0000000 --- a/examples/neuroml/LIF/LIFxml_firing.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -## all SI units -######################################################################################## -## Plot the membrane potential for a leaky integrate and fire neuron with current injection -## Author: Aditya Gilra -## Creation Date: 2012-06-08 -## Modification Date: 2012-06-08 -######################################################################################## - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') - -## simulation parameters -SIMDT = 5e-5 # seconds -PLOTDT = 5e-5 # seconds -RUNTIME = 2.0 # seconds -injectI = 1e-8#2.5e-12 # Amperes - -## moose imports -import moose -from moose.neuroml import * -from moose.utils import * # has setupTable(), resetSim() etc -import math - -## import numpy and matplotlib in matlab style commands -from pylab import * - -def create_LIF(): - neuromlR = NeuroML() - neuromlR.readNeuroMLFromFile('cells_channels/LIF.morph.xml') - libcell = moose.Neuron('/library/LIF') - LIFCellid = moose.copy(libcell,moose.Neutral('/cells'),'IF1') - LIFCell = moose.Neuron(LIFCellid) - return LIFCell - -def run_LIF(): - ## reset and run the simulation - print("Reinit MOOSE.") - ## from moose_utils.py sets clocks and resets - resetSim(['/cells[0]'], SIMDT, PLOTDT, simmethod='ee') - print("Running now...") - moose.start(RUNTIME) - -if __name__ == '__main__': - IF1 = create_LIF() - # FIXME: Following call does not work anymore. - #printCellTree(IF1) - IF1Soma = moose.element(IF1.path+'/soma_0') # moose.LIF instance - IF1Soma.inject = injectI - IF1vmTable = setupTable("vmTableIF1",IF1Soma,'Vm') - - table_path = moose.Neutral(IF1Soma.path+'/data').path - IF1spikesTable = moose.Table(table_path+'/spikesTable') - moose.connect(IF1Soma,'spikeOut',IF1spikesTable,'input') ## spikeGen gives spiketimes - - run_LIF() - print(("Spiketimes :",IF1spikesTable.vector)) - ## plot the membrane potential of the neuron - timevec = arange(0.0,RUNTIME+PLOTDT/2.0,PLOTDT) - ## Something is crazy! Why twice the number of table entries compared to time!!?? - figure(facecolor='w') - print(IF1vmTable) - plot(timevec, IF1vmTable.vector) - show() diff --git a/examples/neuroml/LIF/LIFxml_firing_hsolve.py b/examples/neuroml/LIF/LIFxml_firing_hsolve.py deleted file mode 100644 index 0e0e35f..0000000 --- a/examples/neuroml/LIF/LIFxml_firing_hsolve.py +++ /dev/null @@ -1,67 +0,0 @@ -## __BROKEN__ -## all SI units -######################################################################################## -## Plot the membrane potential for a leaky integrate and fire neuron with current injection -## Author: Aditya Gilra -## Creation Date: 2012-06-08 -## Modification Date: 2012-06-08 -######################################################################################## - -import os - -SIMDT = 5e-5 # seconds -PLOTDT = 5e-5 # seconds -RUNTIME = 2.0 # seconds -injectI = 2.5e-12 # Amperes - -## moose imports -import moose -print( '[DBEUG] Using moose from %s' % moose.__file__ ) - -from moose.neuroml import * -from moose.utils import * # has setupTable(), resetSim() etc -import math - -## import numpy and matplotlib in matlab style commands -from pylab import * - -def create_LIF(): - neuromlR = NeuroML() - neuromlR.readNeuroMLFromFile('cells_channels/LIF.morph.xml') - libcell = moose.Neuron('/library/LIF') - LIFCellid = moose.copy(libcell,moose.Neutral('/cells'),'IF1') - # FIXME: No LeakyIaF is found in MOOSE. - LIFCell = moose.LeakyIaF(LIFCellid) - return LIFCell - -def run_LIF(): - cells_path = '/cells' - - ## reset and run the simulation - print("Reinit MOOSE.") - ## from moose_utils.py sets clocks and resets - resetSim(['/cells'], SIMDT, PLOTDT, simmethod='hsolve') - print("Running now...") - moose.start(RUNTIME) - -if __name__ == '__main__': - IF1 = create_LIF() - IF1.inject = injectI - IF1vmTable = setupTable("vmTableIF1",IF1,'Vm') - - ## edge-detect the spikes using spike-gen (table does not have edge detect) - spikeGen = moose.SpikeGen(IF1.path+'/spikeGen') - spikeGen.threshold = IF1.Vthreshold - moose.connect(IF1,'VmOut',spikeGen,'Vm') - ## save spikes in table - table_path = moose.Neutral(IF1.path+'/data').path - IF1spikesTable = moose.Table(table_path+'/spikesTable') - moose.connect(spikeGen,'event',IF1spikesTable,'input') - - run_LIF() - print("Spiketimes :",IF1spikesTable.vector) - ## plot the membrane potential of the neuron - timevec = arange(0.0,RUNTIME+PLOTDT/2.0,PLOTDT) - figure(facecolor='w') - plot(timevec, IF1vmTable.vector) - show() diff --git a/examples/neuroml/LIF/cells_channels/IaF.xml b/examples/neuroml/LIF/cells_channels/IaF.xml deleted file mode 100644 index 58deece..0000000 --- a/examples/neuroml/LIF/cells_channels/IaF.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - A cell mechanism for creating a simple integrate and fire cell - - - - A simple integrate and fire mechanism, for MOOSE where g_refrac is not implemented yet - - - - - - - - - - - diff --git a/examples/neuroml/LIF/cells_channels/LIF.morph.xml b/examples/neuroml/LIF/cells_channels/LIF.morph.xml deleted file mode 100644 index 4cf6a21..0000000 --- a/examples/neuroml/LIF/cells_channels/LIF.morph.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - Aditya Gilra: sample leaky integrate-and-fire neuron. - - - - - - - - - - - - - - - - - all - - - all - - - - - - - - all - - - all - - - all - - - - - - - - - all - - - - - all - - - - - all - - - - - - - - diff --git a/examples/neuroml/LIF/cells_channels/exc_syn.xml b/examples/neuroml/LIF/cells_channels/exc_syn.xml deleted file mode 100644 index b43d333..0000000 --- a/examples/neuroml/LIF/cells_channels/exc_syn.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Excitatory synpase - - - - - - Aditya Gilra - - - - Dual exponential excitatory synapse - - - - Aditya Gilra - - - Aditya Gilra - NCBS, India - adityag@ncbs.res.in - - - - - - - - - - - - diff --git a/examples/neuroml/LIF/twoLIFs.net.xml b/examples/neuroml/LIF/twoLIFs.net.xml deleted file mode 100644 index 1ac659b..0000000 --- a/examples/neuroml/LIF/twoLIFs.net.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - -LIF cell with current injection: written by Aditya Gilra - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/LIF/twoLIFxml_firing.py b/examples/neuroml/LIF/twoLIFxml_firing.py deleted file mode 100644 index aed0ef2..0000000 --- a/examples/neuroml/LIF/twoLIFxml_firing.py +++ /dev/null @@ -1,85 +0,0 @@ -# -*- coding: utf-8 -*- -## all SI units -######################################################################################## -## Plot the membrane potential for a leaky integrate and fire neuron with current injection -## Author: Aditya Gilra -## Creation Date: 2012-06-08 -## Modification Date: 2012-06-08 -######################################################################################## - -#import os -#os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') - -## simulation parameters -SIMDT = 5e-5 # seconds -PLOTDT = 5e-5 # seconds -RUNTIME = 2.0 # seconds -injectI = 1e-8#2.5e-12 # Amperes - -## moose imports -import moose -from moose.neuroml import * -from moose.utils import * # has setupTable(), resetSim() etc -import math - -## import numpy and matplotlib in matlab style commands -from pylab import * - -def create_twoLIFs(): - NML = NetworkML({'temperature':37.0,'model_dir':'.'}) - ## Below returns populationDict = { 'populationname1':(cellname,{instanceid1:moosecell, ... }) , ... } - ## and projectionDict = { 'projectionname1':(source,target,[(syn_name1,pre_seg_path,post_seg_path),...]) , ... } - (populationDict,projectionDict) = \ - NML.readNetworkMLFromFile('twoLIFs.net.xml', {}, params={}) - return populationDict,projectionDict - -def run_twoLIFs(): - ## reset and run the simulation - print "Reinit MOOSE." - ## from moose_utils.py sets clocks and resets - resetSim(['/cells[0]'], SIMDT, PLOTDT, simmethod='ee') - print "Running now..." - moose.start(RUNTIME) - -if __name__ == '__main__': - populationDict,projectionDict = create_twoLIFs() - ## element returns the right element and error if not present - IF1Soma = moose.element(populationDict['LIFs'][1][0].path+'/soma_0') - IF1Soma.inject = injectI - IF2Soma = moose.element(populationDict['LIFs'][1][1].path+'/soma_0') - IF2Soma.inject = 0.0#injectI*2.0 - #IF2Soma.inject = injectI - IF1vmTable = setupTable("vmTableIF1",IF1Soma,'Vm') - IF2vmTable = setupTable("vmTableIF2",IF2Soma,'Vm') - - table_path = moose.Neutral(IF1Soma.path+'/data').path - IF1spikesTable = moose.Table(table_path+'/spikesTable') - moose.connect(IF1Soma,'spikeOut',IF1spikesTable,'input') ## spikeGen gives spiketimes - - ## record Gk of the synapse on IF2 - #print IF2Soma.children - IF2SynChanTable = moose.Table(table_path+'/synChanTable') - moose.connect(IF2SynChanTable,'requestOut',IF2Soma.path+'/exc_syn','getIk') - - run_twoLIFs() - print "Spiketimes :",IF1spikesTable.vector - ## plot the membrane potential of the neuron - timevec = arange(0.0,RUNTIME+PLOTDT/2.0,PLOTDT) - figure(facecolor='w') - plot(timevec, IF1vmTable.vector*1000,'r-') - xlabel('time(s)') - ylabel('Vm (mV)') - title('Vm of presynaptic IntFire') - figure(facecolor='w') - plot(timevec, IF2vmTable.vector*1000,'b-') - xlabel('time(s)') - ylabel('Vm (mV)') - title('Vm of postsynaptic IntFire') - figure(facecolor='w') - plot(timevec, IF2SynChanTable.vector*1e12,'b-') - xlabel('time(s)') - ylabel('Ik (pA)') - title('Ik entering postsynaptic IntFire') - show() diff --git a/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml b/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml deleted file mode 100644 index 877a0ed..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms2_seed100.0_decimated.xml +++ /dev/null @@ -1,688 +0,0 @@ - - - - Fully instantiated network model of Olfactory Bulb by Aditya Gilra, NCBS, Bangalore, India, 2010. - - - - - - - - zrotation=4.45555739853 - - - - - - zrotation=1.67580256963 - - - - - - zrotation=0.107490103564 - - - - - - zrotation=5.37465229285 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml b/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml deleted file mode 100644 index e955cba..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml +++ /dev/null @@ -1,8107 +0,0 @@ - - - - Fully instantiated network model of Olfactory Bulb by Aditya Gilra, NCBS, Bangalore, India, 2010. - - - - - - - - zrotation=1.51838909902 - - - - - - zrotation=0.639183861167 - - - - - - zrotation=0.107620598277 - - - - - - zrotation=6.01790595229 - - - - - - zrotation=4.80939357636 - - - - - - zrotation=3.77129156808 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml b/examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml deleted file mode 100644 index 01f96c4..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/OBpassive_slice_numgloms2_seed100.0.xml +++ /dev/null @@ -1,3555 +0,0 @@ - - - Fully instantiated network model of Olfactory Bulb by Aditya Gilra, NCBS, Bangalore, India, 2010. - - - - - - zrotation=0.915266923378 - - - - zrotation=4.43287034149 - - - - zrotation=1.88732185889 - - - - zrotation=4.26996423639 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/OlfactoryBulbPassive/README b/examples/neuroml/OlfactoryBulbPassive/README deleted file mode 100644 index 27e201b..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/README +++ /dev/null @@ -1,9 +0,0 @@ -This is the directory for the NeuroML files used by Aditya Gilra in his rodent olfactory bulb model. - -Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. Load any of these models: -OBpassive_numgloms3_seed750.0.xml : 3 glomeruli (2 mitral cells in each) with lots of granule and PG cells. -OBpassive_slice_numgloms2_seed100.0_fewcells.xml : 2 glomeruli with very few granule and PG cells (good for testing). -OBpassive_slice_numgloms2_seed100.0.xml : 2 glomeruli with granules and PGs present only in a slice of 300 microns thickness. - -Presently all cells have only passive properties, no active channels, and no synapses and connections, - as not all channels have been converted to ChannelML, and it saves loading time. diff --git a/examples/neuroml/OlfactoryBulbPassive/cells/PG.xml b/examples/neuroml/OlfactoryBulbPassive/cells/PG.xml deleted file mode 100644 index da39803..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/cells/PG.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - -author: Aditya Gilra adapted from Cleland and Sethupathy 2006. - - - - Cell: periglomerular morphml written by hand by Aditya Gilra, NCBS, Bangalore, India. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - all - - - - - - all - - - - - all - - - - - all - - - - - - - dendrites - - - - - dendrites - - - - dendrites - - - dendrites - - - - - diff --git a/examples/neuroml/OlfactoryBulbPassive/cells/granule.xml b/examples/neuroml/OlfactoryBulbPassive/cells/granule.xml deleted file mode 100755 index 6defe1a..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/cells/granule.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - -author: Aditya Gilra adapted from Migliore and Shepherd 2008. - - - - Cell: granule morphml written by hand by Aditya. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - all - - - - - all - - - - - all - - - - - all - - - - - - - periphery - - - periphery - - - - - diff --git a/examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml b/examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml deleted file mode 100644 index 958bcb1..0000000 --- a/examples/neuroml/OlfactoryBulbPassive/cells/mitral.xml +++ /dev/null @@ -1,3386 +0,0 @@ - - - - -NeuroML Level 2 file generated from ModelView by: NEURON -- Release 7.1 (359:7f113b76a94b) 2009-10-26 -Authors: Michael Hines, Sushil Kambampati and Padraig Gleeson, Yale University and UCL. -Aditya Gilra added Level 3 connectivity information and modifed the cell: -changed RM throughout to 5 Ohm-m^2 to halve tau_m, -added Na+K to primary dendrite and tuft, -removed electrode leak (RM changed) in soma, -halved Na to get f-vs-i shape in Arevian et al 2008 (still not enough). - - - - - - Cell: soma exported from NEURON ModelView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ModelViewParmSubset_4 - - - - - - OneSecGrp_SectionRef_1 - - - all - - - - - - all - - - - - all - - - - - all - - - - - - - - - - ModelViewParmSubset_32 - - - - - ModelViewParmSubset_32 - - - ModelViewParmSubset_26 - ModelViewParmSubset_27 - ModelViewParmSubset_24 - OneSecGrp_SectionRef_1 - - - - - diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml b/examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml deleted file mode 100644 index d28cdc3..0000000 --- a/examples/neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: PurkinjeCell saved with neuroConstruct v1.5.3 on: 14:20:09, 07-Sep-12 - -Cell Group: BigCellCML contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/README b/examples/neuroml/PurkinjeCellPassivePulseInput/README deleted file mode 100644 index 974a81f..0000000 --- a/examples/neuroml/PurkinjeCellPassivePulseInput/README +++ /dev/null @@ -1,9 +0,0 @@ -This is the directory for the NeuroML files generated by neuroConstruct 1.5.3 (neuroConstruct.org) for Purkinje cell model. -These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). - -Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. -Open the PurkinjePassive.net.xml file. -Presently this cell has only passive properties, no active channels, - as all the channels exported by neuroConstruct were in old deprecated ChannelML format which current importer does not support. -You can set the inject field in the soma or any other compartment and see how the voltage passive decays. - diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml b/examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml deleted file mode 100644 index a2c7b64..0000000 --- a/examples/neuroml/PurkinjeCellPassivePulseInput/cells/purk2.morph.xml +++ /dev/null @@ -1,21570 +0,0 @@ - - - - - - - Cell: soma exported from NEURON ModelView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - soma_group - ModelViewParmSubset_1 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - OneSecGrp_SectionRef_1 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_2 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_3 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_77 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_5 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_83 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_8 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_49 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_11 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_84 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_21 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_22 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_57 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_80 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_33 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_12 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_54 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_3 - ModelViewParmSubset_4 - ModelViewParmSubset_84 - ModelViewParmSubset_85 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_65 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_66 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_81 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_78 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_86 - OneSecGrp_SectionRef_98 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_22 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_56 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_77 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_74 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_54 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_78 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_59 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_71 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_52 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_173 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_80 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_5 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_64 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_52 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_53 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_13 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_59 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_80 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_9 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_61 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_8 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_64 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_83 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_5 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_57 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_61 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_48 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_48 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_74 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_80 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_73 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_48 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_50 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_76 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_11 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_75 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_82 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_67 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_76 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_70 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_12 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_53 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_385 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_76 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_62 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_419 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_53 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_22 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_10 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_55 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_57 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_66 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_65 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_83 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_56 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_11 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_22 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_51 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_65 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_77 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_79 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_73 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_51 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_55 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_56 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_58 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_61 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_61 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_81 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_72 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_54 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_79 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_69 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_69 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_66 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_793 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_65 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_66 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_64 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_77 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_55 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_68 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_912 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_67 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_66 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_59 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_10 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_60 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_70 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_9 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_51 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_5 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_49 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_70 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_47 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_51 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_79 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_10 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_10 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_72 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_78 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_18 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_8 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_70 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_46 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_68 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_1130 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_50 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_54 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_71 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_11 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_5 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_63 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_54 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_12 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_11 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_1223 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_17 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_13 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_75 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_6 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_50 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_9 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_12 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - OneSecGrp_SectionRef_1313 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_82 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_10 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_11 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_51 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_58 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_60 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_62 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_22 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_14 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_15 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_51 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_13 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_28 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_20 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_58 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_7 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_45 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_24 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_19 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_4 - ModelViewParmSubset_54 - ModelViewParmSubset_86 - ModelViewParmSubset_87 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_8 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_21 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_44 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_36 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_16 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_26 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_25 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_10 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_29 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_13 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_5 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_32 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_27 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_34 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_23 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_33 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_30 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_31 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_37 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_35 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_39 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_40 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_38 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_41 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_42 - ModelViewParmSubset_86 - - - - all - dendrite_group - ModelViewParmSubset_2 - ModelViewParmSubset_43 - ModelViewParmSubset_86 - - - - - - - - - - - ModelViewParmSubset_28 - - - - - - ModelViewParmSubset_20 - - - - - - ModelViewParmSubset_10 - - - - - - ModelViewParmSubset_87 - - - - - - ModelViewParmSubset_47 - - - - - - ModelViewParmSubset_37 - - - - - - ModelViewParmSubset_36 - - - - - - ModelViewParmSubset_27 - - - - - - ModelViewParmSubset_32 - - - - - - ModelViewParmSubset_30 - - - - - - ModelViewParmSubset_13 - - - - - - ModelViewParmSubset_41 - - - - - - ModelViewParmSubset_19 - - - - - - ModelViewParmSubset_39 - - - - - - ModelViewParmSubset_44 - - - - - - ModelViewParmSubset_17 - - - - - - ModelViewParmSubset_35 - - - - - - ModelViewParmSubset_45 - - - - - - ModelViewParmSubset_24 - - - - - - ModelViewParmSubset_29 - - - - - - OneSecGrp_SectionRef_1 - - - - - - ModelViewParmSubset_38 - - - - - - ModelViewParmSubset_12 - - - - - - ModelViewParmSubset_23 - - - - - - ModelViewParmSubset_15 - - - - - - ModelViewParmSubset_33 - - - - - - ModelViewParmSubset_40 - - - - - - ModelViewParmSubset_46 - - - - - - ModelViewParmSubset_14 - - - - - - ModelViewParmSubset_25 - - - - - - ModelViewParmSubset_42 - - - - - - ModelViewParmSubset_8 - - - - - - ModelViewParmSubset_18 - - - - - - ModelViewParmSubset_31 - - - - - - ModelViewParmSubset_26 - - - - - - ModelViewParmSubset_5 - - - - - - ModelViewParmSubset_11 - - - - - - ModelViewParmSubset_16 - - - - - - ModelViewParmSubset_21 - - - - - - ModelViewParmSubset_6 - - - - - - ModelViewParmSubset_7 - - - - - - ModelViewParmSubset_48 - - - - - - OneSecGrp_SectionRef_98 - - - - - - ModelViewParmSubset_43 - - - - - - ModelViewParmSubset_22 - - - - - - ModelViewParmSubset_9 - - - - - - ModelViewParmSubset_34 - - - - - - ModelViewParmSubset_21 - - - - ModelViewParmSubset_46 - - - - ModelViewParmSubset_15 - - - - ModelViewParmSubset_42 - - - - ModelViewParmSubset_12 - - - - ModelViewParmSubset_39 - - - - ModelViewParmSubset_23 - - - - ModelViewParmSubset_14 - - - - ModelViewParmSubset_48 - - - - ModelViewParmSubset_40 - - - - ModelViewParmSubset_8 - - - - ModelViewParmSubset_6 - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_19 - - - - ModelViewParmSubset_20 - - - - ModelViewParmSubset_43 - - - - ModelViewParmSubset_9 - - - - ModelViewParmSubset_22 - - - - ModelViewParmSubset_31 - - - - ModelViewParmSubset_4 - - - - ModelViewParmSubset_17 - - - - ModelViewParmSubset_29 - - - - ModelViewParmSubset_32 - - - - ModelViewParmSubset_47 - - - - ModelViewParmSubset_27 - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_36 - - - - ModelViewParmSubset_33 - - - - ModelViewParmSubset_10 - - - - ModelViewParmSubset_25 - - - - ModelViewParmSubset_38 - - - - ModelViewParmSubset_18 - - - - OneSecGrp_SectionRef_98 - - - - ModelViewParmSubset_44 - - - - ModelViewParmSubset_41 - - - - ModelViewParmSubset_35 - - - - ModelViewParmSubset_28 - - - - ModelViewParmSubset_11 - - - - ModelViewParmSubset_26 - - - - ModelViewParmSubset_45 - - - - ModelViewParmSubset_37 - - - - ModelViewParmSubset_24 - - - - ModelViewParmSubset_16 - - - - ModelViewParmSubset_30 - - - - ModelViewParmSubset_34 - - - - ModelViewParmSubset_13 - - - - - - all - - - - - - all - - - - - - - - diff --git a/examples/neuroml/PurkinjeCellPassivePulseInput/p.nml b/examples/neuroml/PurkinjeCellPassivePulseInput/p.nml deleted file mode 100644 index d28cdc3..0000000 --- a/examples/neuroml/PurkinjeCellPassivePulseInput/p.nml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: PurkinjeCell saved with neuroConstruct v1.5.3 on: 14:20:09, 07-Sep-12 - -Cell Group: BigCellCML contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/README b/examples/neuroml/allChannelsCell/README deleted file mode 100644 index 18daeb4..0000000 --- a/examples/neuroml/allChannelsCell/README +++ /dev/null @@ -1,11 +0,0 @@ -This is the directory for the NeuroML files generated by neuroConstruct 1.5.1 (neuroConstruct.org) for the Cerebellar Granule cell model -(Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, J Neurophysiol, Nov 1998; 80: 2521 - 2537). -These files were exported from neuroConstruct as Level 3 NeuroML v 1.x files (not a single NeuroML Level 3 file). -However, further NeuroML channels have been added to the single compartment, so that their effect can be studied. - -Fire up moose GUI. File->Load Model or Ctrl+L. Navigate to this directory. -Select and open the allChannelsCell.net.xml file. -Select the soma (graphical viewer or element tree) and click 'add field' on the right 'plot configuration' pane to plot Vm. -Run the simulation and see the soma Vm. - -Select channels from the element tree and change Gmax to observe different behaviours. Setting Gmax to zero is equivalent to removing the channel. diff --git a/examples/neuroml/allChannelsCell/allChannelsCell.net.xml b/examples/neuroml/allChannelsCell/allChannelsCell.net.xml deleted file mode 100644 index 90a9186..0000000 --- a/examples/neuroml/allChannelsCell/allChannelsCell.net.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: GranuleCell saved with neuroConstruct v1.5.1 on: 14:34:18, 15-Nov-11 - -Cell Group: Gran contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/allChannelsCell.py b/examples/neuroml/allChannelsCell/allChannelsCell.py deleted file mode 100644 index 99ae428..0000000 --- a/examples/neuroml/allChannelsCell/allChannelsCell.py +++ /dev/null @@ -1,68 +0,0 @@ -## Aditya Gilra, NCBS, Bangalore, 2012 - -""" -Inside the .../moose-examples/GranuleCell/ directory supplied with MOOSE, run -python testNeuroML_Gran98.py -(other channels and morph xml files are already present in this same directory). -The soma name below is hard coded for gran98, else any other file can be used by modifying this script. -""" -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import moose -from moose.utils import * - -from moose.neuroml.NeuroML import NeuroML - -from pylab import * - -simdt = 25e-6 # s -plotdt = 25e-6 # s -runtime = 0.7 # s - -def loadGran98NeuroML_L123(filename): - neuromlR = NeuroML() - populationDict, projectionDict = \ - neuromlR.readNeuroMLFromFile(filename) - soma_path = populationDict['Gran'][1][0].path+'/Soma_0' - somaVm = setupTable('somaVm',moose.Compartment(soma_path),'Vm') - somaCa = setupTable('somaCa',moose.CaConc(soma_path+'/Gran_CaPool_98'),'Ca') - somaIKC = setupTable('somaIKC',moose.HHChannel(soma_path+'/KC_CML'),'Gk') - somaIKCa = setupTable('somaIKCa',moose.HHChannel(soma_path+'/Gran_KCa_98'),'Gk') - #KDrX = setupTable('ChanX',moose.HHChannel(soma_path+'/Gran_KDr_98'),'X') - soma = moose.Compartment(soma_path) - print "Reinit MOOSE ... " - resetSim(['/elec','/cells'],simdt,plotdt) # from moose.utils - print "Running ... " - moose.start(runtime) - tvec = arange(0.0,runtime,simdt) - plot(tvec,somaVm.vector[1:]) - title('Soma Vm') - xlabel('time (s)') - ylabel('Voltage (V)') - figure() - plot(tvec,somaCa.vector[1:]) - title('Soma Ca') - xlabel('time (s)') - ylabel('Ca conc (mol/m^3)') - figure() - plot(tvec,somaIKCa.vector[1:]) - title('KCa current (A)') - xlabel('time (s)') - ylabel('') - figure() - plot(tvec,somaIKC.vector[1:]) - title('KC current (A)') - xlabel('time (s)') - ylabel('') - print "Showing plots ..." - show() - -filename = "allChannelsCell.net.xml" -if __name__ == "__main__": - if len(sys.argv)<2: - filename = "allChannelsCell.net.xml" - else: - filename = sys.argv[1] - loadGran98NeuroML_L123(filename) diff --git a/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml b/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml deleted file mode 100644 index 82ad468..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaHVA.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - High voltage Activated Ca2+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) - - - - E.DAngelo - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - T.Nieus - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Ca channels - http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml b/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml deleted file mode 100644 index a5b60db..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Golgi_CaLVA.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - Low voltage Activated Ca2+ channel. Uses name ca2 for calcium ion - - - - Alain Destexhe - Cited implementer according to the original .mod file. Comments from that file: -: -: Ca++ current responsible for low threshold spikes (LTS) -: RETICULAR THALAMUS -: Differential equations -: -: Model of Huguenard and McCormick, J Neurophysiol 68: 1373-1383, 1992. -: The kinetics is described by standard equations (NOT GHK) -: using a m2h format, according to the voltage-clamp data -: (whole cell patch clamp) of Huguenard and Prince, J Neurosci. -: 12: 3804-3817, 1992. The model was introduced in Destexhe et al. -: J. Neurophysiology 72: 803-818, 1994. -: See http://www.cnl.salk.edu/~alain , http://cns.fmed.ulaval.ca -: -: - Kinetics adapted to fit the T-channel of reticular neuron -: - Q10 changed to 5 and 3 -: - Time constant tau_h fitted from experimental data -: - shift parameter for screening charge -: -: ACTIVATION FUNCTIONS FROM EXPERIMENTS (NO CORRECTION) -: -: Reversal potential taken from Nernst Equation -: -: Written by Alain Destexhe, Salk Institute, Sept 18, 1992 -: - - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Ca channels - http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml b/examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml deleted file mode 100644 index 6a00e70..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/GranPassiveCond.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - ChannelML file containing a single Channel description - - - - - - - Padraig Gleeson - - - - Simple leak conductance for Granule cell - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml deleted file mode 100644 index bd83930..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_CaHVA_98.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. - Updated to post v1.7.3 new ChannelML format - - Padraig Gleeson - - - - A High Voltage Activated Ca2+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - Calcium channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml deleted file mode 100644 index ee408ba..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_CaPool_98.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - This ChannelML file has been updated to reflect the preferred form of elements/attributes which will be required from v2.0. - See info on Version 2 Requirements. - - Padraig Gleeson - - - - An expontially decaying pool of calcium - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml deleted file mode 100644 index 54029c8..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_H_98.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - A values don't match table 1 in M and DeS 98 - - Padraig Gleeson - - - - Anomalous inward rectifying H conductance - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml deleted file mode 100644 index 3a8578c..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_KA_98.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - - Padraig Gleeson - - - - A-type K channel, with rate equations expressed in tau and inf form - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml deleted file mode 100644 index c865b56..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_KCa_98.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - This ChannelML file is intended ONLY to replicate the original GENESIS functionality. A new Granule cell model is being developed based on - D'Angelo et al 2001 and Berends, Maex and De Schutter 2005, and the ChannelML files will be updated - - Padraig Gleeson - - - - Calcium dependent K+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml deleted file mode 100644 index 49fc297..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_KDr_98.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be. - Updated to post v1.7.3 new ChannelML format - There is a discontinuity in the expression for alpha in h gate - - Padraig Gleeson - - - - Delayed rectifyer K channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml b/examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml deleted file mode 100644 index 39a24bf..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Gran_NaF_98.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - Verified equivalence of NEURON and GENESIS mapping to orig GENESIS impl from www.tnb.ua.ac.be - Updated to post v1.7.3 new ChannelML format - Quite a small dt (~0.001 ms) is needed to give matching NEURON/GENESIS results for a compartment with just - this channel (and a leak current) - - Padraig Gleeson - - - - Fast inactivating Na+ channel - - - - Maex, R. - - - De Schutter, E. - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Maex, R and De Schutter, E. - Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the - cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract - - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml b/examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml deleted file mode 100644 index 6dde282..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Granule_98.morph.xml +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - An implementation using ChannelML of the Granule cell mode from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer, 1998 - - - - - - - - - - - - - - - all - soma_group - - - - - - - - - - - - - - - all - - - - - - all - - - all - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - - all - - - - - - - all - - - - all - - - - - - - all - - - - - - - all - - - - all - - - - all - - - - all - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml b/examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml deleted file mode 100644 index 09239c3..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Pyramidal_KM.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Voltage-gated K channel - - - - - - Matteo Farinella - - - - Channel translated from the original .mod file used in Kole MH, Ilschner SU, Kampa BM, Williams SR, Ruben PC, Stuart GJ, Action potential generation requires a high sodium channel density in the axon initial segment. Nat Neurosci. 2008 Feb;11(2):178-86. - Based on I-M (muscarinic K channel) Slow, noninactivating - - - - - Zach Mainen - Salk Institute - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - - - - Rothman JS, Cathala L, Steuber V, Silver RA, Synaptic depression enables neuronal gain control. Nature. 2009 Jan 14 - http://www.ncbi.nlm.nih.gov/pubmed/19145233?ordinalpos=1&itool=EntrezSystem2.PEntrez.Pubmed.Pubmed_ResultsPanel.Pubmed_DefaultReportPanel.Pubmed_RVDocSum - - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml deleted file mode 100644 index a3b8f15..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaHVA_CML.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - High voltage Activated Ca2+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) - - - - E.DAngelo - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - T.Nieus - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Ca channels - http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml deleted file mode 100644 index 90a0e60..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/CaLVA_CML.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - Low voltage Activated Ca2+ channel. Uses name ca2 for calcium ion - - - - Alain Destexhe - Cited implementer according to the original .mod file. Comments from that file: -: -: Ca++ current responsible for low threshold spikes (LTS) -: RETICULAR THALAMUS -: Differential equations -: -: Model of Huguenard and McCormick, J Neurophysiol 68: 1373-1383, 1992. -: The kinetics is described by standard equations (NOT GHK) -: using a m2h format, according to the voltage-clamp data -: (whole cell patch clamp) of Huguenard and Prince, J Neurosci. -: 12: 3804-3817, 1992. The model was introduced in Destexhe et al. -: J. Neurophysiology 72: 803-818, 1994. -: See http://www.cnl.salk.edu/~alain , http://cns.fmed.ulaval.ca -: -: - Kinetics adapted to fit the T-channel of reticular neuron -: - Q10 changed to 5 and 3 -: - Time constant tau_h fitted from experimental data -: - shift parameter for screening charge -: -: ACTIVATION FUNCTIONS FROM EXPERIMENTS (NO CORRECTION) -: -: Reversal potential taken from Nernst Equation -: -: Written by Alain Destexhe, Salk Institute, Sept 18, 1992 -: - - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Ca channels - http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml deleted file mode 100644 index 4118c34..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_CML.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Internal calcium concentration due to calcium currents and pump from Solinas et al 2007 - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - Note: a slightly different method was used for calculating submembrane shell volume in the original paper. - This calculated the volume of the shell as the surface area of the section times the thickness of the shell, which is approximately correct if the thickness is - quite small. The NEURON mapping of this file calculates the volume exactly from the inner and outer volumes, hence the slight difference in the thickness here - from the thickness in the original paper (0.2 um). - - Matteo Farinella - - - Padraig Gleeson - - - - Calcium first order kinetics - - - - - A.Fontana - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml deleted file mode 100644 index 6bf7089..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Golgi_CALC_ca2_CML.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Internal calcium concentration due to calcium currents and pump from Solinas et al 2007 - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - Note: a slightly different method was used for calculating submembrane shell volume in the original paper. - This calculated the volume of the shell as the surface area of the section times the thickness of the shell, which is approximately correct if the thickness is - quite small. The NEURON mapping of this file calculates the volume exactly from the inner and outer volumes, hence the slight difference in the thickness here - from the thickness in the original paper (0.2 um). - - Matteo Farinella - - - Padraig Gleeson - - - - Calcium first order kinetics - - - - A.Fontana - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml deleted file mode 100644 index e70006d..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KAHP_CML.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - Note: only mapping available is to NEURON mod file. - - Padraig Gleeson - - - - SK type Ca2+ dependent K+ channel (After HyperPolarizing), based on mod file supplied with Solinas et al 2007 (ModelDB 112685) - - - - - Sergio Solinas - Cited implementer according to the original .mod file. Note from original mod file: Based on data from: Hirschberg, Maylie, Adelman, Marrion J Gen Physiol 1998 -Last revised: May 2007 - - - - Lia Forti - Cited implementer according to the original .mod file. Note from original mod file: Based on data from: Hirschberg, Maylie, Adelman, Marrion J Gen Physiol 1998 -Last revised: May 2007 - - - - Egidio D'Angelo - Cited implementer according to the original .mod file. Note from original mod file: Based on data from: Hirschberg, Maylie, Adelman, Marrion J Gen Physiol 1998 -Last revised: May 2007 - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml deleted file mode 100644 index 48c63ee..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KA_CML.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - A type K+ channel - - - - - E.DAngelo - Cited implementer according to the original .mod file. Comment from original mod file: Last revised: Egidio 3.12.2003 - - - - T.Nieus - Cited implementer according to the original .mod file - - - - A. Fontana - Cited implementer according to the original .mod file - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Ca channels - http://senselab.med.yale.edu/NeuronDB/ChannelGene2.htm#table1 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml deleted file mode 100644 index cdfa6db..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KC_CML.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - - Padraig Gleeson - - - - BK type voltage and [Ca2+] dependent K+ channel - - - - - - Egidio D'Angelo - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - T. Nieus - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml deleted file mode 100644 index 8970bc8..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/KV_CML.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - Delayed rectifier K+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) - - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod: Last revised: 12.12.98 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml deleted file mode 100644 index ffe02cd..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Kslow_CML.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - A slow M-like K+ channel, based on mod file supplied with Solinas et al 2007 (ModelDB 112685) - - - - E.DAngelo - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - T.Nieus - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml deleted file mode 100644 index 29646dd..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaP_CML.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). - - Matteo Farinella - - - Padraig Gleeson - - - - Persistent Na+ channel - - - - E.DAngelo - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - T.Nieus - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml deleted file mode 100644 index 395fcce..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaR_CML.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - Does not include check in beta_s for x1=(v+V0beta_s)/Kbeta_s (when v > ~-22mV), but this shouldn't matter as beta_s ~ 0 for these values. - 30mV for table may be too low an upper limit (peak of AP can go above this) - - Matteo Farinella - - - Padraig Gleeson - - - - Resurgent Na+ channel - - - - - T.Nieus - Cited implementer according to the original .mod file. Notes from original mod file: - Last revised: 30.6.2003 - Critical value gNa - Inserted a control in bet_s to avoid huge values of x1 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml deleted file mode 100644 index 0b12ad8..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/NaT_CML.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this) - - Matteo Farinella - - - Padraig Gleeson - - - - Transient Na+ channel - - - - - E.DAngelo - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - T.Nieus - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - A. Fontana - Cited implementer according to the original .mod file. Note from original mod file: Last revised: 8.5.2000 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml deleted file mode 100644 index 8e002d2..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/Simple_CML.morph.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - A single segment/compartment cell - - - - - - - - - - - - - - - all - soma_group - - - - - - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - all - - - - - - soma_group - - - - - - - - - - all - - - - - - all - - - - - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - all - - - - - - all - - - all - - - - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml deleted file mode 100644 index a7c46a1..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1f_CML.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). -Note: no q10 temperature dependence in channel - - Matteo Farinella - - - Padraig Gleeson - - - - hcn1 channel - fast component - - - - - S.Solinas - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - L.Forti - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - E.DAngelo - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml deleted file mode 100644 index 866f355..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn1s_CML.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). -Note: no q10 temperature dependence in channel - - Matteo Farinella - - - Padraig Gleeson - - - - hcn1 channel - slow component - - - - - S.Solinas - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - L.Forti - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - E.DAngelo - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml deleted file mode 100644 index aee3a38..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2f_CML.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). -Note: no q10 temperature dependence in channel. -Does not contain correction in original mod file for inf below -108.70. - - Matteo Farinella - - - Padraig Gleeson - - - - hcn2 channel - fast component - - - - - S.Solinas - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - L.Forti - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - E.DAngelo - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml b/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml deleted file mode 100644 index 24883bc..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/SolinasEtAl_Golgi/hcn2s_CML.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - ChannelML file containing a single Channel description from Solinas et al 2007 - - - - - 30mV for table may be too low an upper limit (peak of AP can go above this). -Note: no q10 temperature dependence in channel. -Does not contain correction in original mod file for inf below -108.70. - - Matteo Farinella - - - Padraig Gleeson - - - - hcn2 channel - slow component - - - - - S.Solinas - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - L.Forti - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - E.DAngelo - Cited implementer according to the original .mod file. Comment from original mod file: -Data from: Santoro et al. J Neurosci. 2000 -Last revised: May 2007 - - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - - Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E. (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci. 2007;1:2. - http://www.ncbi.nlm.nih.gov/pubmed/18946520 - - - - Cerebellar Golgi cell (Solinas et al. 2007a, 2007b) - http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=112685 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml b/examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml deleted file mode 100644 index 9e507d0..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Traub_KA.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - ChannelML file based on Traub et al. 2003 - - - - - Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse - In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this - - Yoana Dimitrova - - - Padraig Gleeson - - - - Potasium A-type conductance (transient, inactivating). Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 - - - - Maciej Lazarewicz - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Roger D Traub - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Yoana Dimitrova - UCL - - - - - Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington -Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels -J Neurophysiol 89: 909-921, 2003 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 - - - - Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. -J. Neurophysiol. 93, 2194-2232, 2005 - http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 - - - - A single column thalamocortical network model (Traub et al 2005) - http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Using broad range of voltages for sufficient coverage - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml b/examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml deleted file mode 100644 index bc5e1b5..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Traub_KCaAHP.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - ChannelML file based on Traub et al. 2003 - - - - - Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse on single comp incl CaD - In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this - - - Padraig Gleeson - - - Yoana Dimitrova - - - - [Ca2+] dependent K AHP (afterhyperpolarization) conductance. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 - - - - Maciej Lazarewicz - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Roger D Traub - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Yoana Dimitrova - UCL - - - - - Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington -Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels -J Neurophysiol 89: 909-921, 2003 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 - - - - Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. -J. Neurophysiol. 93, 2194-2232, 2005 - http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 - - - - A single column thalamocortical network model (Traub et al 2005) - http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 - - - - - - - - - - - - - - - - - - - - - - - - - This will ensure more points in calcium dependence table - - - - - - - - diff --git a/examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml b/examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml deleted file mode 100644 index cd4f2ba..0000000 --- a/examples/neuroml/allChannelsCell/cells_channels/Traub_NaP.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - ChannelML file based on Traub et al. 2003 - - - - - Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse - In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this - - Padraig Gleeson - - - - Persistent (non inactivating) Sodium channel. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 - - - - Maciej Lazarewicz - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Roger D Traub - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington -Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels -J Neurophysiol 89: 909-921, 2003 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 - - - - Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. -J. Neurophysiol. 93, 2194-2232, 2005 - http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 - - - - A single column thalamocortical network model (Traub et al 2005) - http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 - - - - - - - - - - - - - - - - - - - - - - Using broad range of voltages for sufficient coverage - - - - - diff --git a/examples/neuroml/lobster_pyloric/Generated.net.3syn.xml b/examples/neuroml/lobster_pyloric/Generated.net.3syn.xml deleted file mode 100644 index 1d641d2..0000000 --- a/examples/neuroml/lobster_pyloric/Generated.net.3syn.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 - -Cell Group: AB_PD contains 1 cells -Cell Group: PY contains 1 cells -Cell Group: LP contains 1 cells - -Network connection: PD_LP contains 1 individual synaptic connections -Network connection: PY_LP contains 1 individual synaptic connections -Network connection: AB_PY contains 1 individual synaptic connections -Network connection: AB_LP contains 1 individual synaptic connections -Network connection: LP_PY contains 1 individual synaptic connections -Network connection: LP_ABPD contains 1 individual synaptic connections -Network connection: PD_PY contains 1 individual synaptic connections - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml b/examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml deleted file mode 100644 index 2c17370..0000000 --- a/examples/neuroml/lobster_pyloric/Generated.net.halfcenter.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 - -Cell Group: AB_PD contains 1 cells -Cell Group: PY contains 1 cells -Cell Group: LP contains 1 cells - -Network connection: PD_LP contains 1 individual synaptic connections -Network connection: PY_LP contains 1 individual synaptic connections -Network connection: AB_PY contains 1 individual synaptic connections -Network connection: AB_LP contains 1 individual synaptic connections -Network connection: LP_PY contains 1 individual synaptic connections -Network connection: LP_ABPD contains 1 individual synaptic connections -Network connection: PD_PY contains 1 individual synaptic connections - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/Generated.net.reverse.xml b/examples/neuroml/lobster_pyloric/Generated.net.reverse.xml deleted file mode 100644 index ded501e..0000000 --- a/examples/neuroml/lobster_pyloric/Generated.net.reverse.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 - -Cell Group: AB_PD contains 1 cells -Cell Group: PY contains 1 cells -Cell Group: LP contains 1 cells - -Network connection: PD_LP contains 1 individual synaptic connections -Network connection: PY_LP contains 1 individual synaptic connections -Network connection: AB_PY contains 1 individual synaptic connections -Network connection: AB_LP contains 1 individual synaptic connections -Network connection: LP_PY contains 1 individual synaptic connections -Network connection: LP_ABPD contains 1 individual synaptic connections -Network connection: PD_PY contains 1 individual synaptic connections - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/Generated.net.xml b/examples/neuroml/lobster_pyloric/Generated.net.xml deleted file mode 100644 index fa80c36..0000000 --- a/examples/neuroml/lobster_pyloric/Generated.net.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: lobster_stomatogastric_neuron saved with neuroConstruct v1.6.1 on: 07:08:37, 06-Jul-13 - -Cell Group: AB_PD contains 1 cells -Cell Group: PY contains 1 cells -Cell Group: LP contains 1 cells - -Network connection: PD_LP contains 1 individual synaptic connections -Network connection: PY_LP contains 1 individual synaptic connections -Network connection: AB_PY contains 1 individual synaptic connections -Network connection: AB_LP contains 1 individual synaptic connections -Network connection: LP_PY contains 1 individual synaptic connections -Network connection: LP_ABPD contains 1 individual synaptic connections -Network connection: PD_PY contains 1 individual synaptic connections - -Close to Fig 3e of Prinz et al 2004, Nat Neuro. -Model converted by Aditya Gilra, 2013, from model of Prinz et al, 2003 and Prinz et al, 2004. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/README b/examples/neuroml/lobster_pyloric/README deleted file mode 100644 index b61d594..0000000 --- a/examples/neuroml/lobster_pyloric/README +++ /dev/null @@ -1,30 +0,0 @@ -Stomatogastric ganglion Central Pattern Generator: - generates pyloric rhythm of the lobster - -Network model translated from: -Prinz, Bucher, Marder, Nature Neuroscience, 2004; -STG neuron models translated from: -Prinz, Billimoria, Marder, J.Neurophys., 2003. - -Translated into MOOSE by Aditya Gilra, Bangalore, 2013, revised 2014. - -On a terminal, cd to the lobster_pyloric path and then execute: -python STG_net.py - -You can switch between graded (default) versus spiking synapses by setting the graded_syn variable inside STG_net.py. - -The model is fully specified in NeuroML 1.8.1 except the graded synapses which are in pyMOOSE as NeuroML 1.8.1 doesn't support graded synapses. - -You can change the model by setting filename in STG_net.py to one of: -Generated.net.xml (default) -Generated.net.reverse.xml (reverse pyloric rhythm) -Generated.net.halfcenter.xml (2 neurons half-center oscillator) -Generated.net.3syn.xml (3 synapses version of pyloric rhythm) - -Currently the default network model Generated.net.xml file with default graded synapses (as in the lobster and in the Prinz et al 2004 paper) gives the correct pyloric rhythm. -With default network with spiking synapses (graded_syn=False, un-lobster-like), one of the cells doesn't spike. -For the reversed network: Generated.net.reverse.xml, both the graded and the spiking synapses give the reverse sequence of spiking. - -However, one of the synaptic parameters (LP to PY) had to be changed from the original Fig 3e of the Prinz et al 2004 paper. -I think basal Ca and resting potential (to confirm, it's been a while since I coded this) are not specified in the original paper, so that could be the reason of the discrepancy, or could be a bug in my implementation. - diff --git a/examples/neuroml/lobster_pyloric/STG.png b/examples/neuroml/lobster_pyloric/STG.png deleted file mode 100644 index f63d7af0d280c67930f95073bdf2b25ab9cee464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14983 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 diff --git a/examples/neuroml/lobster_pyloric/STG_net.py b/examples/neuroml/lobster_pyloric/STG_net.py deleted file mode 100644 index 9122636..0000000 --- a/examples/neuroml/lobster_pyloric/STG_net.py +++ /dev/null @@ -1,156 +0,0 @@ -## Aditya Gilra, NCBS, Bangalore, 2013 - -""" -Stomatogastric ganglion Central Pattern Generator: - generates pyloric rhythm of the lobster - -Network model translated from: -Prinz, Bucher, Marder, Nature Neuroscience, 2004; -STG neuron models translated from: -Prinz, Billimoria, Marder, J.Neurophys., 2003. - -Translated into MOOSE by Aditya Gilra, Bangalore, 2013, revised 2014. -""" - -#import os -#os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.extend(['../../../python','synapses']) - -import moose -from moose.utils import * -from moose.neuroml.NeuroML import NeuroML - -import matplotlib.pyplot as plt -import numpy as np - -simdt = 25e-6 # s -plotdt = 25e-6 # s -runtime = 10.0 # s -cells_path = '/cells' # neuromlR.readNeuroMLFromFile creates cells in '/cells' - -def loadRunSTGNeuroML_L123(filename): - 'Loads and runs the pyloric rhythm generator from NeuroML files.' - # for graded synapses, else NeuroML event-based are used - from load_synapses import load_synapses - moose.Neutral('/library') - # set graded to False to use event based synapses - # if False, neuroml event-based synapses get searched for and loaded - # True to load graded synapses - graded_syn = True - #graded_syn = False - if graded_syn: - load_synapses() - - neuromlR = NeuroML() - ## readNeuroMLFromFile below returns: - # This returns - # populationDict = { - # 'populationname1':('cellName',{('instanceid1'):moosecell, ... }) - # , ... - # } - # (cellName and instanceid are strings, mooosecell is a moose.Neuron object instance) - # and - # projectionDict = { - # 'projName1':('source','target',[('syn_name1','pre_seg_path','post_seg_path') - # ,...]) - # , ... - # } - populationDict, projectionDict = \ - neuromlR.readNeuroMLFromFile(filename) - soma1_path = populationDict['AB_PD'][1][0].path+'/Soma_0' - soma1Vm = setupTable('somaVm',moose.Compartment(soma1_path),'Vm') - soma2_path = populationDict['LP'][1][0].path+'/Soma_0' - soma2Vm = setupTable('somaVm',moose.Compartment(soma2_path),'Vm') - soma3_path = populationDict['PY'][1][0].path+'/Soma_0' - soma3Vm = setupTable('somaVm',moose.Compartment(soma3_path),'Vm') - - # monitor channel current - channel_path = soma1_path + '/KCa_STG' - channel_Ik = setupTable('KCa_Ik',moose.element(channel_path),'Ik') - # monitor Ca - capool_path = soma1_path + '/CaPool_STG' - capool_Ca = setupTable('CaPool_Ca',moose.element(capool_path),'Ca') - - # monitor synaptic current - soma2 = moose.element(soma2_path) - print "Children of",soma2_path,"are:" - for child in soma2.children: - print child.className, child.path - if graded_syn: - syn_path = soma2_path+'/DoubExpSyn_Ach__cells-0-_AB_PD_0-0-_Soma_0' - syn = moose.element(syn_path) - else: - syn_path = soma2_path+'/DoubExpSyn_Ach' - syn = moose.element(syn_path) - syn_Ik = setupTable('DoubExpSyn_Ach_Ik',syn,'Ik') - - print "Reinit MOOSE ... " - resetSim(['/elec',cells_path], simdt, plotdt, simmethod='hsolve') - - print "Using graded synapses? = ", graded_syn - print "Running model filename = ",filename," ... " - moose.start(runtime) - tvec = np.arange(0.0,runtime+2*plotdt,plotdt) - tvec = tvec[ : soma1Vm.vector.size ] - - fig = plt.figure(facecolor='w',figsize=(10,6)) - axA = plt.subplot2grid((3,2),(0,0),rowspan=3,colspan=1,frameon=False) - img = plt.imread( 'STG.png' ) - imgplot = axA.imshow( img ) - for tick in axA.get_xticklines(): - tick.set_visible(False) - for tick in axA.get_yticklines(): - tick.set_visible(False) - axA.set_xticklabels([]) - axA.set_yticklabels([]) - ax = plt.subplot2grid((3,2),(0,1),rowspan=1,colspan=1) - ax.plot(tvec,soma1Vm.vector*1000,label='AB_PD',color='g',linestyle='solid') - ax.set_xticklabels([]) - ax.set_ylabel('AB_PD (mV)') - ax = plt.subplot2grid((3,2),(1,1),rowspan=1,colspan=1) - ax.plot(tvec,soma2Vm.vector*1000,label='LP',color='r',linestyle='solid') - ax.set_xticklabels([]) - ax.set_ylabel('LP (mV)') - ax = plt.subplot2grid((3,2),(2,1),rowspan=1,colspan=1) - ax.plot(tvec,soma3Vm.vector*1000,label='PY',color='b',linestyle='solid') - ax.set_ylabel('PY (mV)') - ax.set_xlabel('time (s)') - fig.tight_layout() - - fig = plt.figure(facecolor='w') - plt.plot(tvec,soma2Vm.vector*1000,label='LP',color='r',linestyle='solid') - plt.plot(tvec,soma3Vm.vector*1000,label='PY',color='b',linestyle='solid') - plt.legend() - plt.xlabel('time (s)') - plt.ylabel('Soma Vm (mV)') - - plt.figure(facecolor='w') - plt.plot(tvec,channel_Ik.vector,color='b',linestyle='solid') - plt.title('KCa current; Ca conc') - plt.xlabel('time (s)') - plt.ylabel('Ik (Amp)') - plt.twinx() - plt.plot(tvec,capool_Ca.vector,color='r',linestyle='solid') - plt.ylabel('Ca (mol/m^3)') - - plt.figure(facecolor='w') - plt.plot(tvec,syn_Ik.vector,color='b',linestyle='solid') - plt.title('Ach syn current in '+soma2_path) - plt.xlabel('time (s)') - plt.ylabel('Isyn (S)') - print "Showing plots ..." - - plt.show() - -filename = "Generated.net.xml" -if __name__ == "__main__": - ''' - Inside the moose-examples/neuroml/lobster_ploric/ directory supplied with MOOSE, run - ``python STG_net.py`` - (other channels and morph xml files are already present in this same directory). - read the pdf documentation for a tutorial by Aditya Gilra. - ''' - if len(sys.argv)>=2: - filename = sys.argv[1] - loadRunSTGNeuroML_L123(filename) diff --git a/examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml b/examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml deleted file mode 100644 index d0f5453..0000000 --- a/examples/neuroml/lobster_pyloric/cells/AB_PD.morph.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - Stomatogastric Ganglion (STG) neuron -From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons -Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, -J Neurophysiol 90: 3998–4015, 2003. - -The AB_PD cell is an STG neuron with channel densities corresponding to AB/PD neuron #2 from Table 2 of: -Similar network activity from disparate circuit parameters -Astrid A Prinz, Dirk Bucher and Eve Marder -Nature Neuroscience, 2004. - -Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - soma_group - - - - soma_group - - - - - - diff --git a/examples/neuroml/lobster_pyloric/cells/LP.morph.xml b/examples/neuroml/lobster_pyloric/cells/LP.morph.xml deleted file mode 100644 index a138523..0000000 --- a/examples/neuroml/lobster_pyloric/cells/LP.morph.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - Stomatogastric Ganglion (STG) neuron -From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons -Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, -J Neurophysiol 90: 3998–4015, 2003. - -The LP cell is an STG neuron with channel densities corresponding to LP neuron #5 from Table 2 of: -Similar network activity from disparate circuit parameters -Astrid A Prinz, Dirk Bucher and Eve Marder -Nature Neuroscience, 2004. - -Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - soma_group - - - - soma_group - - - - - - diff --git a/examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml b/examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml deleted file mode 100644 index 8659b0e..0000000 --- a/examples/neuroml/lobster_pyloric/cells/LP_highH.morph.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - Stomatogastric Ganglion (STG) neuron -From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons -Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, -J Neurophysiol 90: 3998–4015, 2003. - -The LP cell is an STG neuron with channel densities corresponding to LP neuron #5 from Table 2 of: -Similar network activity from disparate circuit parameters -Astrid A Prinz, Dirk Bucher and Eve Marder -Nature Neuroscience, 2004. - -Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - soma_group - - - - soma_group - - - - - - diff --git a/examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml b/examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml deleted file mode 100644 index 1e60f1d..0000000 --- a/examples/neuroml/lobster_pyloric/cells/LP_highH2.morph.xml +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - Stomatogastric Ganglion (STG) neuron -From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons -Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, -J Neurophysiol 90: 3998–4015, 2003. - -The LP cell is an STG neuron with channel densities corresponding to LP neuron #5 from Table 2 of: -Similar network activity from disparate circuit parameters -Astrid A Prinz, Dirk Bucher and Eve Marder -Nature Neuroscience, 2004. - -Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - all - - - - - - all - - - - - - - - - all - - - - - - soma_group - - - - soma_group - - - - - - diff --git a/examples/neuroml/lobster_pyloric/cells/PY.morph.xml b/examples/neuroml/lobster_pyloric/cells/PY.morph.xml deleted file mode 100644 index 5323aa8..0000000 --- a/examples/neuroml/lobster_pyloric/cells/PY.morph.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - Stomatogastric Ganglion (STG) neuron -From: Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons -Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, -J Neurophysiol 90: 3998–4015, 2003. - -The PY cell is an STG neuron with channel densities corresponding to PY neuron #1 from Table 2 of: -Similar network activity from disparate circuit parameters -Astrid A Prinz, Dirk Bucher and Eve Marder -Nature Neuroscience, 2004. - -Converted to neuroConstruct from details in above two papers by Aditya Gilra, NCBS, Bangalore, India. - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - soma_group - - - - - - all - - - - - - all - - - - - - all - - - - - - soma_group - - - - soma_group - - - - - - diff --git a/examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml b/examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml deleted file mode 100644 index c71ebd5..0000000 --- a/examples/neuroml/lobster_pyloric/channels/CaPool_STG.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - Ca pool - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - An expontially decaying pool of calcium - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at - ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - Ca Pool Ion Concentration - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/channels/CaS_STG.xml b/examples/neuroml/lobster_pyloric/channels/CaS_STG.xml deleted file mode 100644 index a1210cf..0000000 --- a/examples/neuroml/lobster_pyloric/channels/CaS_STG.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - CaS conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at -- ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - CaS channel - - - - - Nernst,Cout=3e-6,z=2 - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/channels/CaT_STG.xml b/examples/neuroml/lobster_pyloric/channels/CaT_STG.xml deleted file mode 100644 index c12911e..0000000 --- a/examples/neuroml/lobster_pyloric/channels/CaT_STG.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - Ca T-type (low threshold) conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at - ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - Na channel - - - - - Nernst,Cout=3e-6,z=2 - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/channels/ChannelTest.py b/examples/neuroml/lobster_pyloric/channels/ChannelTest.py deleted file mode 100644 index 1928c50..0000000 --- a/examples/neuroml/lobster_pyloric/channels/ChannelTest.py +++ /dev/null @@ -1,62 +0,0 @@ -import random -import sys -import math -import moose -from moose.neuroml import * - -# This program plots a channel's state variables / hinf, htau etc. as a function -# of voltage. - -mechanisms = { - 'H_STG': ['minf','mtau'], - 'CaS_STG': ['minf','mtau','hinf','htau'], - 'CaT_STG': ['minf','mtau','hinf','htau'], - 'KA_STG': ['minf','mtau','hinf','htau'], - 'Kd_STG': ['ninf','ntau'], - 'Na_STG': ['minf','mtau','hinf','htau'] - } - -import sys -if len(sys.argv)<2: - print("Selecting a channel randomly form %s" % list(mechanisms.keys())) - channel_name = random.choice( mechanisms.keys() ) - print("Selected %s" % channel_name ) -else: - channel_name = sys.argv[1] - -if channel_name in mechanisms: - mechanism_vars = mechanisms[channel_name] -else: - print("Undefined channel, please use one of", list(mechanisms.keys())) - sys.exit(1) - -CELSIUS = 35 # degrees Centigrade -CML = ChannelML({'temperature':CELSIUS}) -CML.readChannelMLFromFile('../channels/'+channel_name+'.xml') - -from pylab import * - -if __name__ == "__main__": - - for varidx in range(len(mechanism_vars)/2): # loop over each inf and tau - print( "Running for %s" % varidx ) - var = ['X','Y','Z'][varidx] - gate = moose.element('/library/'+channel_name+'/gate'+var) - VMIN = gate.min - VMAX = gate.max - NDIVS = gate.divs - dv = (VMAX-VMIN)/NDIVS - # will use same VMIN, VMAX and dv for A and B tables. - vrange = array([VMIN+i*dv for i in range(NDIVS+1)]) - figure() - plot(vrange*1000,gate.tableA/gate.tableB,'b-,') # Assume A and B have corresponding number of entries - xlabel('Voltage (mV)') - ylabel('steady state value') - title('state variable '+mechanism_vars[2*varidx]+' of '+channel_name+' vs Voltage (mV)') - figure() - plot(vrange*1000,1./gate.tableB*1000.,'b-,') - xlabel('Voltage (mV)') - ylabel('tau (ms)') - title('state variable '+mechanism_vars[2*varidx+1]+' of '+channel_name+' vs Voltage (mV)') - show() - diff --git a/examples/neuroml/lobster_pyloric/channels/H_STG.xml b/examples/neuroml/lobster_pyloric/channels/H_STG.xml deleted file mode 100644 index aa45ed0..0000000 --- a/examples/neuroml/lobster_pyloric/channels/H_STG.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - H conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at -- ncbs.res.in - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - H channel - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/channels/KA_STG.xml b/examples/neuroml/lobster_pyloric/channels/KA_STG.xml deleted file mode 100644 index 73830df..0000000 --- a/examples/neuroml/lobster_pyloric/channels/KA_STG.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - K Anomalous conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at -- ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - KA channel - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/channels/KCa_STG.xml b/examples/neuroml/lobster_pyloric/channels/KCa_STG.xml deleted file mode 100644 index 8c8e4c5..0000000 --- a/examples/neuroml/lobster_pyloric/channels/KCa_STG.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - KCa conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at -- ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - KCa channel - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/channels/Kd_STG.xml b/examples/neuroml/lobster_pyloric/channels/Kd_STG.xml deleted file mode 100644 index bb50f9e..0000000 --- a/examples/neuroml/lobster_pyloric/channels/Kd_STG.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - Kd conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at - ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - Kd channel - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/channels/LeakConductance.xml b/examples/neuroml/lobster_pyloric/channels/LeakConductance.xml deleted file mode 100644 index c5f4586..0000000 --- a/examples/neuroml/lobster_pyloric/channels/LeakConductance.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/channels/Na_STG.xml b/examples/neuroml/lobster_pyloric/channels/Na_STG.xml deleted file mode 100644 index 6bfa57a..0000000 --- a/examples/neuroml/lobster_pyloric/channels/Na_STG.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations from Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - Aditya Gilra - - - - Na conductance - - - - Aditya Gilra - National Centre for Biological Sciences, Bangalore, India. - adityag - at -- ncbs.res.in - - - - - Alternative to Hand-Tuning Conductance-Based Models: Construction and Analysis of Databases of Model Neurons, Astrid A. Prinz, Cyrus P. Billimoria, and Eve Marder, J Neurophysiol 90: 3998–4015, 2003. - - - - - Na channel - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py b/examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py deleted file mode 100644 index 65c6a88..0000000 --- a/examples/neuroml/lobster_pyloric/synapses/AchSyn_STG.py +++ /dev/null @@ -1,63 +0,0 @@ - -# -*- coding: utf-8 -*- -import sys -import math - -from pylab import * - -try: - import moose -except ImportError: - print "ERROR: Could not import moose. Please add the directory containing moose.py in your PYTHONPATH" - import sys - sys.exit(1) - -from moose.utils import * # for BSplineFill - -class AchSyn_STG(moose.SynChan): - """Acetylcholine graded synapse""" - def __init__(self, *args): - moose.SynChan.__init__(self,*args) - self.Ek = -80e-3 # V - # For event based synapses, I had a strength of 5e-6 S - # to compensate for event-based, - # but for the original graded synapses, 5e-9 S is correct. - self.Gbar = 5e-9 # S # set weight on connecting the network - self.tau1 = 100e-3 # s # this is Vpre dependent (see below) - self.tau2 = 0.0 # single first order equation - - Vth = -35e-3 # V - Delta = 5e-3 # V - ######## Graded synapse activation - inhsyntable = moose.Interpol(self.path+"/graded_table") - graded = moose.Mstring(self.path+'/graded') - graded.value = 'True' - mgblock = moose.Mstring(self.path+'/mgblockStr') - mgblock.value = 'False' - # also needs a synhandler - moosesynhandler = moose.SimpleSynHandler(self.path+'/handler') - # connect the SimpleSynHandler or the STDPSynHandler to the SynChan (double exp) - moose.connect( moosesynhandler, 'activationOut', self, 'activation' ) - - # ds/dt = s_inf/tau - s/tau = A - Bs - # where A=s_inf/tau is activation, B is 1/tau - # Fill up the activation and tau tables - # Graded synapse tau - inhtautable = moose.Interpol(self.path+"/tau_table") - inhtautable.xmin = -70e-3 # V - inhtautable.xmax = 0e-3 # V - tau = [self.tau1] # at -70 mV - tau.extend( [self.tau1*(1. - 1./(1+math.exp((Vth-vm)/Delta))) \ - for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) - inhtautable.vector = array(tau) - inhtautable.connect("lookupOut",self,"setTau1") - - # Graded synapse activation - inhsyntable.xmin = -70e-3 # V - inhsyntable.xmax = 0e-3 # V - act = [0.0] # at -70 mV - act.extend( [1/(1+math.exp((Vth-vm)/Delta)) \ - for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) - act = array(act) / array(tau) # element-wise division # NOTE: A = s_inf/tau - inhsyntable.vector = array(act) - inhsyntable.connect("lookupOut",self,"activation") diff --git a/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml b/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml deleted file mode 100644 index 2882ec9..0000000 --- a/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Ach.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - ChannelML file describing a single synaptic mechanism - - - - - - - Padraig Gleeson - - - - Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as - double exponential function of time. Mappings exist for NEURON and GENESIS. - - - Receptor properties - http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml b/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml deleted file mode 100644 index 00d6151..0000000 --- a/examples/neuroml/lobster_pyloric/synapses/DoubExpSyn_Glu.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - ChannelML file describing a single synaptic mechanism - - - - - - - Padraig Gleeson - - - - Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as - double exponential function of time. Mappings exist for NEURON and GENESIS. - - - Receptor properties - http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp - - - - - - - - \ No newline at end of file diff --git a/examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py b/examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py deleted file mode 100644 index c8cdbec..0000000 --- a/examples/neuroml/lobster_pyloric/synapses/GluSyn_STG.py +++ /dev/null @@ -1,63 +0,0 @@ - -# -*- coding: utf-8 -*- -import sys -import math - -from pylab import * - -try: - import moose -except ImportError: - print "ERROR: Could not import moose. Please add the directory containing moose.py in your PYTHONPATH" - import sys - sys.exit(1) - -from moose.utils import * # for BSplineFill - -class GluSyn_STG(moose.SynChan): - """Glutamate graded synapse""" - def __init__(self, *args): - moose.SynChan.__init__(self,*args) - self.Ek = -70e-3 # V - # For event based synapses, I had a strength of 5e-6 S - # to compensate for event-based, - # but for the original graded synapses, 5e-9 S is correct. - self.Gbar = 5e-9 # S # set weight on connecting the network - self.tau1 = 40e-3 # s # this is Vpre dependent (see below) - self.tau2 = 0.0 # single first order equation - - Vth = -35e-3 # V - Delta = 5e-3 # V - ######## Graded synapse activation - inhsyntable = moose.Interpol(self.path+"/graded_table") - graded = moose.Mstring(self.path+'/graded') - graded.value = 'True' - mgblock = moose.Mstring(self.path+'/mgblockStr') - mgblock.value = 'False' - # also needs a synhandler - moosesynhandler = moose.SimpleSynHandler(self.path+'/handler') - # connect the SimpleSynHandler to the SynChan (double exp) - moose.connect( moosesynhandler, 'activationOut', self, 'activation' ) - - # ds/dt = s_inf/tau - s/tau = A - Bs - # where A=s_inf/tau is activation, B is 1/tau - # Fill up the activation and tau tables - # Graded synapse tau - inhtautable = moose.Interpol(self.path+"/tau_table") - inhtautable.xmin = -70e-3 # V - inhtautable.xmax = 0e-3 # V - tau = [self.tau1] # at -70 mV - tau.extend( [self.tau1*(1. - 1./(1+math.exp((Vth-vm)/Delta))) \ - for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) - inhtautable.vector = array(tau) - inhtautable.connect("lookupOut",self,"setTau1") - - # Graded synapse activation - inhsyntable.xmin = -70e-3 # V - inhsyntable.xmax = 0e-3 # V - act = [0.0] # at -70 mV - act.extend( [1/(1+math.exp((Vth-vm)/Delta)) \ - for vm in arange(-70e-3,0.00001e-3,70e-3/1000.)] ) - act = array(act) / array(tau) # element-wise division # NOTE: A = s_inf/tau - inhsyntable.vector = array(act) - inhsyntable.connect("lookupOut",self,"activation") diff --git a/examples/neuroml/lobster_pyloric/synapses/load_synapses.py b/examples/neuroml/lobster_pyloric/synapses/load_synapses.py deleted file mode 100644 index fe8b50e..0000000 --- a/examples/neuroml/lobster_pyloric/synapses/load_synapses.py +++ /dev/null @@ -1,9 +0,0 @@ - -# -*- coding: utf-8 -*- - -from GluSyn_STG import GluSyn_STG -from AchSyn_STG import AchSyn_STG - -def load_synapses(): - GluSyn_STG("/library/DoubExpSyn_Glu") - AchSyn_STG("/library/DoubExpSyn_Ach") diff --git a/examples/paper-2015/Fig2_elecModels/Fig2A.py b/examples/paper-2015/Fig2_elecModels/Fig2A.py deleted file mode 100644 index 560167d..0000000 --- a/examples/paper-2015/Fig2_elecModels/Fig2A.py +++ /dev/null @@ -1,527 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -This LIF network with Ca plasticity is based on: -David Higgins, Michael Graupner, Nicolas Brunel - Memory Maintenance in Synapses with Calcium-Based - Plasticity in the Presence of Background Activity - PLOS Computational Biology, 2014. - -Author: Aditya Gilra, NCBS, Bangalore, October, 2014. -''' - -## import modules and functions to be used -import numpy as np -import matplotlib.pyplot as plt -import random -import time -import moose - -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations -moose.seed(100) # set seed for reproducibility of simulations - -############################################# -# All parameters as per: -# David Higgins, Michael Graupner, Nicolas Brunel -# Memory Maintenance in Synapses with Calcium-Based -# Plasticity in the Presence of Background Activity -# PLOS Computational Biology, 2014. -############################################# - -############################################# -# Neuron model -############################################# - -# equation: dv/dt = (1/taum)*(-(v-el)) + inp -# with spike when v>vt, reset to vr - -el = -70e-3 #V # Resting potential -vt = -50e-3 #V # Spiking threshold -Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts -Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm -taum = Rm*Cm #s # Membrane time constant is 20 ms -vr = -60e-3 #V # Reset potential -Iinject = 11.5e-3/Rm # constant current injection into LIF neuron - # same as setting el=-70+15=-55 mV and inp=0 -noiseInj = True # inject noisy current into each cell: boolean -noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' - # SD*sqrt(taum) is used as noise current SD - -############################################# -# Network parameters: numbers -############################################# - -red_fact = 10 # reduction factor for N,C,J -N = 10000/red_fact # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -############################################# -# Simulation parameters -############################################# - -simtime = 1200.0 #s # Simulation time -dt = 1e-3 #s # time step -plotDt = 1.0 #s # Time step for storing output. - -############################################# -# Network parameters: synapses (not for ExcInhNetBase) -############################################# - -## With each presynaptic spike in exc / inh neuron, -## J / -g*J is added to post-synaptic Vm -- delta-fn synapse -## Since LIF neuron used below is derived from Compartment class, -## conductance-based synapses (SynChan class) can also be used. - -C = 500/red_fact # Number of incoming connections on each neuron (exc or inh) - # 5% conn prob between any two neurons - # Since we reduced N from 10000 to 1000, C = 50 instead of 500 - # but we need to increase J by 10 to maintain total input per neuron -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) - # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 - # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V -J *= red_fact # Multiply J by red_fact to compensate C/red_fact. -g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 -syndelay = dt # synaptic delay: -refrT = 0.0 # s # absolute refractory time - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -CaPlasticity = True # set it True or False to turn on/off plasticity -tauCa = 22.6936e-3 # s # Ca decay time scale -tauSyn = 346.3615 # s # synaptic plasticity time scale -## in vitro values in Higgins et al 2014, faster plasticity -CaPre = 0.56175 # mM -CaPost = 1.2964 # mM -## in vivo values in Higgins et al 2014, slower plasticity -#CaPre = 0.33705 # mM -#CaPost = 0.74378 # mM -delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 331.909 # factor for depression term -gammaP = 725.085 # factor for potentiation term - -eqWeight = 0.16 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # but see eqn (22), noiseSD also appears - -bistable = True # if bistable is True, use bistable potential for weights -noisy = True # use noisy weight updates given by noiseSD -noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) -#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 - -############################################# -# Exc-Inh network base class without connections -############################################# - -class ExcInhNetBase: - """Simulates and plots LIF neurons (exc and inh separate). - Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 - """ - - def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ - refrT=refrT,Iinject=Iinject): - """ Constructor of the class """ - - self.N = N # Total number of neurons - self.fexc = fexc # Fraction of exc neurons - self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh - - self.el = el # Resting potential - self.vt = vt # Spiking threshold - self.taum = taum # Membrane time constant - self.vr = vr # Reset potential - self.refrT = refrT # Absolute refractory period - self.Rm = Rm # Membrane resistance - self.Cm = Cm # Membrane capacitance - self.Iinject = Iinject # constant input current - self.noiseInjSD = noiseInjSD # SD of injected noise - - self.simif = False # whether the simulation is complete - - self._setup_network() - - def __str__(self): - return "LIF network of %d neurons "\ - "having %d exc." % (self.N,self.NmaxExc) - - def _setup_network(self): - """Sets up the network (_init_network is enough)""" - self.network = moose.LIF( 'network', self.N ); - moose.le( '/network' ) - self.network.vec.Em = self.el - self.network.vec.thresh = self.vt - self.network.vec.refractoryPeriod = self.refrT - self.network.vec.Rm = self.Rm - self.network.vec.vReset = self.vr - self.network.vec.Cm = self.Cm - if not noiseInj: - self.network.vec.inject = self.Iinject - else: - ## inject a constant + noisy current - ## values are set in self.simulate() - self.noiseTables = moose.StimulusTable('noiseTables',self.N) - moose.connect( self.noiseTables, 'output', \ - self.network, 'setInject', 'OneToOne') - - def _init_network(self,v0=el): - """Initialises the network variables before simulation""" - self.network.vec.initVm = v0 - - def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): - - self.dt = dt - self.simtime = simtime - self.T = np.ceil(simtime/dt) - self.trange = np.arange(0,self.simtime,dt) - - for i in range(self.N): - if noiseInj: - ## Gaussian white noise SD added every dt interval should be - ## divided by sqrt(dt), as the later numerical integration - ## will multiply it by dt. - ## See the Euler-Maruyama method, numerical integration in - ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems - self.noiseTables.vec[i].vector = self.Iinject + \ - np.random.normal( \ - scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ - size=int(self.T) - ) # scale = SD - self.noiseTables.vec[i].stepSize = 0 # use current time - # as x value for interpolation - self.noiseTables.vec[i].stopTime = self.simtime - - self._init_network(**kwargs) - if plotif: - self._init_plots() - - # moose simulation - #moose.useClock( 1, '/network', 'process' ) - #moose.setClock( 0, dt ) - #moose.setClock( 1, dt ) - #moose.setClock( 2, dt ) - #moose.setClock( 3, dt ) - #moose.setClock( 9, dt ) - ## Do need to set the dt for MOOSE clocks - for i in range(10): - moose.setClock( i, dt ) - moose.setClock( 18, plotDt ) - t1 = time.time() - print('reinit MOOSE -- takes a while ~20s.') - moose.reinit() - print('reinit time t = ', time.time() - t1) - t1 = time.time() - print('starting') - simadvance = self.simtime / 50.0 - for i in range( 50 ): - moose.start( simadvance ) - print('at t = ', i * simadvance, 'realtime = ', time.time() - t1) - #moose.start(self.simtime) - print('runtime for ', self.simtime, 'sec, is t = ', time.time() - t1) - - if plotif: - self._plot() - - def _init_plots(self): - ## make a few tables to store a few Vm-s - numVms = 10 - self.plots = moose.Table2( '/plotVms', numVms ) - ## draw numVms out of N neurons - nrnIdxs = random.sample(list(range(self.N)),numVms) - for i in range( numVms ): - moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ - self.plots.vec[i], 'input') - - ## make self.N tables to store spikes of all neurons - self.spikes = moose.Table2( '/plotSpikes', self.N ) - moose.connect( self.network, 'spikeOut', \ - self.spikes, 'input', 'OneToOne' ) - - ## make 2 tables to store spikes of all exc and all inh neurons - self.spikesExc = moose.Table2( '/plotSpikesAllExc' ) - for i in range(self.NmaxExc): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesExc, 'input' ) - self.spikesInh = moose.Table2( '/plotSpikesAllInh' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesInh, 'input' ) - - def _plot(self): - """ plots the spike raster for the simulated net""" - -############################################# -# Exc-Inh network class with Ca plasticity based connections -# (inherits from ExcInhNetBase) -############################################# - -class ExcInhNet(ExcInhNetBase): - """ Recurrent network simulation """ - - def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): - """Overloads base (parent) class""" - self.J = J # exc connection weight - self.incC = incC # number of incoming connections per neuron - self.fC = fC # fraction of exc incoming connections - self.excC = int(fC*incC)# number of exc incoming connections - self.scaleI = scaleI # inh weight is scaleI*J - self.syndelay = syndelay# synaptic delay - - # call the parent class constructor - ExcInhNetBase.__init__(self,**kwargs) - - def __str__(self): - return "LIF network of %d neurons "\ - "of which %d are exc." % (self.N,self.NmaxExc) - - def _init_network(self,**args): - ExcInhNetBase._init_network(self,**args) - - def _init_plots(self): - ExcInhNetBase._init_plots(self) - self.recN = 50 # number of neurons for which to record weights and Ca - if CaPlasticity: - ## make tables to store weights of recN exc synapses - ## for each post-synaptic exc neuron - self.weights = moose.Table2( '/plotWeights', self.excC*self.recN ) - for i in range(self.recN): # range(self.N) is too large - for j in range(self.excC): - moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', - self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') - self.CaTables = moose.Table2( '/plotCa', self.recN ) - for i in range(self.recN): # range(self.N) is too large - moose.connect( self.CaTables.vec[i], 'requestOut', - self.synsEE.vec[i*self.excC+j], 'getCa') - - def _setup_network(self): - ## Set up the neurons without connections - ExcInhNetBase._setup_network(self) - - ## Now, add in the connections... - ## Each pre-synaptic spike cause Vm of post-neuron to rise by - ## synaptic weight in one time step i.e. delta-fn synapse. - ## Since LIF neuron is derived from Compartment class, - ## conductance-based synapses (SynChan class) can also be used. - - ## E to E synapses can be plastic - ## Two ways to do this: - ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, - ## which collects the activation from all presynaptic neurons, - ## but then a common Ca pool is used. - ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, - ## one for each pre-synaptic neuron, i.e. one per synapse, - ## then each synapse has a different Ca pool. - ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) - ## separate SynHandler per EE synapse, thus NmaxExc*excC - if CaPlasticity: - self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - else: - self.synsEE = moose.SimpleSynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - moose.useClock( 0, '/network/synsEE', 'process' ) - - ## I to E synapses are not plastic - self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) - ## all synapses to I neurons are not plastic - self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) - ## connect all SynHandlers to their respective neurons - for i in range(self.NmaxExc): - moose.connect( self.synsIE.vec[i], 'activationOut', \ - self.network.vec[i], 'activation' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ - self.network.vec[i], 'activation' ) - - ## Connections from some Exc/Inh neurons to each Exc neuron - for i in range(0,self.NmaxExc): - self.synsIE.vec[i].numSynapses = self.incC-self.excC - - ## Connections from some Exc neurons to each Exc neuron - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synidx = i*self.excC+synnum - synHand = self.synsEE.vec[synidx] - - ## connect each synhandler to the post-synaptic neuron - moose.connect( synHand, 'activationOut', \ - self.network.vec[i], 'activation' ) - ## important to set numSynapses = 1 for each synHandler, - ## doesn't create synapses if you set the full array of SynHandlers - synHand.numSynapses = 1 - - synij = synHand.synapse[0] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - if CaPlasticity: - ## set parameters for the Ca Plasticity SynHandler - ## have to be set for each SynHandler - ## doesn't set for full array at a time - synHand.CaInit = 0.0 - synHand.tauCa = tauCa - synHand.tauSyn = tauSyn - synHand.CaPre = CaPre - synHand.CaPost = CaPost - synHand.delayD = delayD - synHand.thetaD = thetaD - synHand.thetaP = thetaP - synHand.gammaD = gammaD - synHand.gammaP = gammaP - synHand.weightMax = 1.0 # bounds on the weight - synHand.weightMin = 0.0 - synHand.weightScale = \ - self.J*2.0 # 0.2 mV, weight*weightScale is activation - # typically weight <~ 0.5, so activation <~ J - synHand.noisy = noisy - synHand.noiseSD = noiseSD - synHand.bistable = bistable - - moose.connect( self.network.vec[i], \ - 'spikeOut', synHand, 'addPostSpike') - synij.weight = eqWeight # activation = weight*weightScale - # weightScale = 2*J - # weight <~ 0.5 - ## Randomly set 5% of them to be 1.0 - if np.random.uniform()<0.05: - synij.weight = 1.0 - else: - synij.weight = self.J # no weightScale here, activation = weight - - ## Connections from some Inh neurons to each Exc neuron - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsIE.vec[i].synapse[synnum] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - ## Connections from some Exc/Inh neurons to each Inh neuron - for i in range(self.N-self.NmaxExc): - ## each neuron has incC number of synapses - self.synsI.vec[i].numSynapses = self.incC - - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[synnum] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = self.J # activation = weight - - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[ self.excC + synnum ] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - moose.useClock( 0, '/network/synsIE', 'process' ) - moose.useClock( 0, '/network/synsI', 'process' ) - -############################################# -# Analysis functions -############################################# - -def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units. - """ - sigma = tau/2. - ## normalized Gaussian kernel, integral with dt is normed to 1 - ## to count as 1 spike smeared over a finite interval - norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) - gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ - for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) - kernel_len = len(gauss_kernel) - ## need to accommodate half kernel_len on either side of fulltime - rate_full = np.zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - ## only the middle fulltime part of the rate series - ## This is already in Hz, - ## since should have multiplied by dt for above convolution - ## and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -############################################# -# Make plots -############################################# - -def extra_plots(net): - ## extra plots apart from the spike rasters - ## individual neuron Vm-s - - timeseries = net.trange - ## individual neuron firing rates - - ## population firing rates - - ## Ca plasticity: weight vs time plots - if CaPlasticity: - ## Ca versus time in post-synaptic neurons - for i in range(net.recN): # range(net.N) is too large - net.CaTables.vec[i].xplot( 'ca.xplot', 'Ca_' + str(i) ) - - for i in range(net.recN): # range(net.N) is too large - for j in range(net.excC): - k = net.excC*i+j - net.weights.vec[k].xplot( 'wt.xplot', 'w_' + str(k) ) - - ## all EE weights are used for a histogram - weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ - for i in range(net.NmaxExc) for j in range(net.excC) ] - histo, edges = np.histogram( weights, bins=100 ) - print() - print(histo) - print() - print(edges) - print() - - plt.figure() - plt.hist(weights, bins=100) - plt.title("Histogram of efficacies") - plt.xlabel("Efficacy (arb)") - plt.ylabel("# per bin") - -if __name__=='__main__': - ## ExcInhNetBase has unconnected neurons, - ## ExcInhNet connects them - ## Instantiate either ExcInhNetBase or ExcInhNet below - #net = ExcInhNetBase(N=N) - net = ExcInhNet(N=N) - print(net) - ## Important to distribute the initial Vm-s - ## else weak coupling gives periodic synchronous firing - net.simulate(simtime,plotif=True, v0=np.random.uniform(el-20e-3,vt,size=N)) - plt.figure() - extra_plots(net) - plt.show() - diff --git a/examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py b/examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py deleted file mode 100644 index 8caeccb..0000000 --- a/examples/paper-2015/Fig2_elecModels/Fig2A_analysis.py +++ /dev/null @@ -1,62 +0,0 @@ -import os -import numpy as np -from pylab import * -from itertools import islice - -if not os.path.isfile('wx.xplot'): - print("Please run ./Fig2A.py to generate the data") - quit() - -fh = open('wt.xplot',mode='r') - -fulltime = 1200 #s -plotdt = 1 #s -numpts = int(fulltime/plotdt)+1 - -print 'reading' -wts = [] -while True: - next_line = '' - while 'plotname' not in next_line: - next_line = fh.readline() - if next_line == '': break - if next_line == '': break - next_wt = [float(fh.readline()) for i in range(numpts)] - wts.append(next_wt) - print 'weight',len(wts) - - -hiAve = np.zeros( len( wts[0] ) ) -loAve = np.zeros( len( wts[0] ) ) -numHi = 0 -for i in wts: - if i[0] > 0.5: - hiAve += np.array( i ) - numHi += 1 - else: - loAve += np.array( i ) - - -hiAve /= numHi -loAve /= ( len( wts ) - numHi ) - -def dumpVec( f, name, vec ): - f.write( '/newplot\n' ) - f.write( '/plotname ' + name + '\n' ) - for i in vec: - f.write( str( i ) + '\n' ) - -f = open( 'averageOfxplots', 'w' ) -dumpVec( f, 'highAverage', hiAve ) -dumpVec( f, 'lowAverage', loAve ) -dumpVec( f, 'highExample', wts[4] ) -dumpVec( f, 'lowExample', wts[5] ) -f.close() - - -print 'numHi = ', numHi, ' plotting...' -figure() -plot(transpose(wts)) -plot( hiAve, linewidth=4 ) -plot( loAve, linewidth=4 ) -show() diff --git a/examples/paper-2015/Fig2_elecModels/Fig2C.py b/examples/paper-2015/Fig2_elecModels/Fig2C.py deleted file mode 100644 index 5314c3a..0000000 --- a/examples/paper-2015/Fig2_elecModels/Fig2C.py +++ /dev/null @@ -1,356 +0,0 @@ -######################################################################## -# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. -# It is licenced under the GPL 2.1 or higher. -# There is no warranty of any kind. You are welcome to make copies under -# the provisions of the GPL. -# This programme illustrates building a panel of multiscale models to -# test neuronal plasticity in different contexts. -######################################################################## -import numpy -import time -import pylab -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import matplotlib.pyplot as plt -import sys -import os -from moose.neuroml.ChannelML import ChannelML -sys.path.append('../../../Demos/util') -import rdesigneur as rd -import moogli - -PI = 3.14159265359 -useGssa = True -combineSegments = True -# Pick your favourite cell here. -#elecFileName = "ca1_minimal.p" -## Cell morphology from Bannister and Larkman J Neurophys 2015/NeuroMorpho -elecFileName = "h10.CNG.swc" -#elecFileName = "CA1.morph.xml" -#elecFileName = "VHC-neuron.CNG.swc" -synSpineList = [] -synDendList = [] -probeInterval = 0.1 -probeAmplitude = 1.0 -tetanusFrequency = 100.0 -tetanusAmplitude = 1000 -tetanusAmplitudeForSpines = 1000 -frameRunTime = 1e-3 # 1 ms -baselineTime = 0.05 -tetTime = 0.01 -postTetTime = 0.01 -runtime = baselineTime + tetTime + postTetTime - -def buildRdesigneur(): - ''' - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - ''' - cellProto = [ [ "./cells/" + elecFileName, "elec" ] ] - chanProto = [ - ['./chans/hd.xml'], \ - ['./chans/kap.xml'], \ - ['./chans/kad.xml'], \ - ['./chans/kdr.xml'], \ - ['./chans/na3.xml'], \ - ['./chans/nax.xml'], \ - ['./chans/CaConc.xml'], \ - ['./chans/Ca.xml'], \ - ['./chans/NMDA.xml'], \ - ['./chans/Glu.xml'] \ - ] - spineProto = [ \ - ['makeSpineProto()', 'spine' ] - ] - chemProto = [] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are: - # p, g, L, len, dia, maxP, maxG, maxL. - # where - # p = path distance from soma, threaded along dendrite - # g = geometrical distance from soma (shortest distance) - # L = electrotonic distance from soma: number of length constants - # len = length of dendritic compartment - # dia = diameter of dendritic compartment - # maxP = maximal value of 'p' for the cell - # maxG = maximal value of 'g' for the cell - # maxL = maximal value of 'L' for the cell - # - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - passiveDistrib = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ - "Em", "-58e-3", "initVm", "-65e-3" ], \ - [ ".", "#axon#", "RA", "0.5" ] \ - ] - chanDistrib = [ \ - ["hd", "#dend#,#apical#", "Gbar", "5e-2*(1+(p*3e4))" ], \ - ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], \ - ["na3", "#soma#,#dend#,#apical#", "Gbar", "250" ], \ - ["nax", "#soma#,#axon#", "Gbar", "1250" ], \ - ["kap", "#axon#,#soma#", "Gbar", "300" ], \ - ["kap", "#dend#,#apical#", "Gbar", \ - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ - ["Ca_conc", "#soma#,#dend#,#apical#", "tau", "0.0133" ], \ - ["kad", "#soma#,#dend#,#apical#", "Gbar", \ - "300*H(p - 100e-6)*(1+p*1e4)" ], \ - ["Ca", "#dend#,#apical#", "Gbar", "p<160e-6? 10+ p*0.25e-6 : 50" ], \ - ["Ca", "#soma#", "Gbar", "10" ], \ - ["glu", "#dend#,#apical#", "Gbar", "200*H(p-200e-6)" ], \ - ["NMDA", "#dend#,#apical#", "Gbar", "2*H(p-200e-6)" ] \ - ] - spineDistrib = [ \ - ["spine", '#apical#', "spineSpacing", "20e-6", \ - "spineSpacingDistrib", "2e-6", \ - "angle", "0", \ - "angleDistrib", str( 2*PI ), \ - "size", "1", \ - "sizeDistrib", "0.5" ] \ - ] - chemDistrib = [] - - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField offset scale - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - rd.addSpineProto() # This adds a version with an LCa channel by default. - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - passiveDistrib = passiveDistrib, \ - spineDistrib = spineDistrib, \ - chanDistrib = chanDistrib, \ - chemDistrib = chemDistrib, \ - cellProto = cellProto, \ - chanProto = chanProto, \ - chemProto = chemProto, \ - adaptorList = adaptorList - ) - #spineProto = spineProto, \ - - return rdes - -def buildPlots( rdes ): - graphs = moose.Neutral( '/graphs' ) - vtab = moose.Table( '/graphs/VmTab' ) - moose.connect( vtab, 'requestOut', rdes.soma, 'getVm' ) - -def displayPlots(): - pylab.figure(1, figsize = (8,10 ) ) - pylab.subplot( 1,1,1) - for i in moose.wildcardFind( "/graphs/#VmTab" ): - t = numpy.arange( 0, i.vector.size, 1 ) * i.dt - pylab.plot( t, i.vector, label = i.name ) - pylab.xlabel( "Time (s)" ) - pylab.legend() - pylab.title( 'Vm' ) - - pylab.figure(2, figsize= (8,10)) - ax = pylab.subplot( 1,1,1 ) - neuron = moose.element( '/model/elec' ) - comptDistance = dict( zip( neuron.compartments, neuron.pathDistanceFromSoma ) ) - for i in moose.wildcardFind( '/library/#[ISA=ChanBase]' ): - chans = moose.wildcardFind( '/model/elec/#/' + i.name ) - print i.name, len( chans ) - p = [ 1e6*comptDistance.get( j.parent, 0) for j in chans ] - Gbar = [ j.Gbar/(j.parent.length * j.parent.diameter * PI) for j in chans ] - if len( p ) > 2: - pylab.plot( p, Gbar, linestyle = 'None', marker = ".", label = i.name ) - sortedGbar = sorted(zip(p, Gbar), key=lambda x: x[0]) - ax.set_yscale( 'log' ) - pylab.xlabel( "Distance from soma (microns)" ) - pylab.ylabel( "Channel density (Seimens/sq mtr)" ) - pylab.legend() - pylab.title( 'Channel distribution' ) - pylab.show() - -def create_vm_viewer(rdes): - network = moogli.extensions.moose.read(rdes.elecid.path) - normalizer = moogli.utilities.normalizer(-0.08, - 0.02, - clipleft=True, - clipright=True) - colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, - 0.0, - 1.0, - 1.0), - moogli.colors.Color(1.0, - 1.0, - 0.0, - 0.1)]) - mapper = moogli.utilities.mapper(colormap, normalizer) - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - - def prelude(view): - view.pitch(PI/2) - view.zoom(0.4) - - def interlude(view): - moose.start(frameRunTime) - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - view.yaw(0.01) - currTime = moose.element('/clock').currentTime - if currTime < runtime: - deliverStim(currTime) - else: - view.stop() - - def postlude(view): - displayPlots() - - viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) - view = moogli.View("vm-view", - prelude=prelude, - interlude=interlude, - postlude=postlude) - viewer.attach_view(view) - return viewer - - -def create_ca_viewer(rdes): - network = moogli.extensions.moose.read(rdes.elecid.path) - ca_elements = [] - for compartment_path in network.shapes.keys(): - if moose.exists(compartment_path + '/Ca_conc'): - ca_elements.append(moose.element(compartment_path + '/Ca_conc')) - else: - ca_elements.append(moose.element('/library/Ca_conc')) - - normalizer = moogli.utilities.normalizer(0.0, - 0.002, - clipleft=True, - clipright=True) - colormap = moogli.colors.UniformColorMap([moogli.colors.Color(1.0, - 0.0, - 0.0, - 1.0), - moogli.colors.Color(0.0, - 1.0, - 1.0, - 0.1)]) - mapper = moogli.utilities.mapper(colormap, normalizer) - - cas = [element.Ca for element in ca_elements] - network.set("color", cas, mapper) - - def prelude(view): - view.pitch(PI/2) - view.zoom(0.4) - - def interlude(view): - moose.start(frameRunTime) - cas = [element.Ca for element in ca_elements] - network.set("color", cas, mapper) - view.yaw(0.01) - currTime = moose.element('/clock').currentTime - if currTime < runtime: - deliverStim(currTime) - else: - view.stop() - - viewer = moogli.Viewer("ca-viewer") - viewer.attach_shapes(network.shapes.values()) - view = moogli.View("ca-view", - prelude=prelude, - interlude=interlude) - viewer.attach_view(view) - return viewer - -def build3dDisplay(rdes): - print "building 3d Display" - app = QtGui.QApplication(sys.argv) - - vm_viewer = create_vm_viewer(rdes) - vm_viewer.resize(700, 900) - vm_viewer.show() - vm_viewer.start() - - ca_viewer = create_ca_viewer(rdes) - ca_viewer.resize(700, 900) - ca_viewer.show() - ca_viewer.start() - - return app.exec_() - - -def deliverStim( currTime ): - if currTime > baselineTime and currTime < baselineTime + tetTime: - # deliver tet stim - step = int ( (currTime - baselineTime) / frameRunTime ) - tetStep = int( 1.0 / (tetanusFrequency * frameRunTime ) ) - if step % tetStep == 0: - for i in synDendList: - i.activation( tetanusAmplitude ) - for i in synSpineList: - i.activation( tetanusAmplitudeForSpines ) - else: - # deliver probe stim - step = int (currTime / frameRunTime ) - probeStep = int( probeInterval / frameRunTime ) - if step % probeStep == 0: - print "Doing probe Stim at ", currTime - for i in synSpineList: - i.activation( probeAmplitude ) - - -def main(): - global synSpineList - global synDendList - numpy.random.seed( 1234 ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - assert( moose.exists( '/model' ) ) - synSpineList = moose.wildcardFind( "/model/elec/#head#/glu,/model/elec/#head#/NMDA" ) - temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) - - synDendList = list( temp - set( synSpineList ) ) - print "num spine, dend syns = ", len( synSpineList ), len( synDendList ) - moose.reinit() - #for i in moose.wildcardFind( '/model/elec/#apical#/#[ISA=CaConcBase]' ): - #print i.path, i.length, i.diameter, i.parent.length, i.parent.diameter - - buildPlots(rdes) - # Run for baseline, tetanus, and post-tetanic settling time - t1 = time.time() - build3dDisplay(rdes) - print 'real time = ', time.time() - t1 - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig2_elecModels/Fig2D.py b/examples/paper-2015/Fig2_elecModels/Fig2D.py deleted file mode 100644 index ef8a05e..0000000 --- a/examples/paper-2015/Fig2_elecModels/Fig2D.py +++ /dev/null @@ -1,104 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### -# This example illustrates loading a model from an SWC file, inserting -# spines, and viewing it. - -import moogli -import moose -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -import rdesigneur as rd - -PI = 3.14159265358979 -frameRunTime = 0.0001 -runtime = 0.1 -inject = 15e-10 -simdt = 5e-5 -RM = 1.0 -RA = 1.0 -CM = 0.01 -# This is the expression used to set spine spacing: -spineSpacing = "dia * 2" -minSpacing = 0.1e-6 -spineSize = 1.0 -spineSizeDistrib = 0.5 -spineAngle = 0 -spineAngleDistrib = 2*PI - - -def create_vm_viewer(rdes): - network = moogli.extensions.moose.read(rdes.elecid.path, - vertices=10) - normalizer = moogli.utilities.normalizer(-0.08, - 0.02, - clipleft=True, - clipright=True) - colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, - 0.5, - 1.0, - 1.0), - moogli.colors.Color(1.0, - 0.0, - 0.0, - 0.9)]) - mapper = moogli.utilities.mapper(colormap, normalizer) - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - - def interlude(view): - moose.start(frameRunTime) - #vms = [moose.element(x).Vm for x in network.shapes.keys()] - #network.set("color", vms, mapper) - view.pitch(0.01) - currTime = moose.element('/clock').currentTime - if currTime >= runtime: - view.stop() - - viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) - view = moogli.View("vm-view", - interlude=interlude) - viewer.attach_view(view) - return viewer - - -def main(): - ######## Put your favourite cell model here ###### - ##This one is from PMID 19146814: Peng et al Neuron 2009 - filename = 'cells/K-18.CNG.swc' - moose.Neutral( '/library' ) - rdes = rd.rdesigneur( \ - cellProto = [[ filename, 'elec' ] ],\ - spineProto = [['makeSpineProto()', 'spine' ]] ,\ - spineDistrib = [ \ - ['spine', '#', \ - 'spacing', spineSpacing, \ - 'spacingDistrib', str( minSpacing ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ] \ - ) - rdes.buildModel('/model') - moose.reinit() - compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) - compts[0].inject = inject - - ################## Now we set up the display ######################## - print "Setting Up 3D Display" - app = QtGui.QApplication(sys.argv) - vm_viewer = create_vm_viewer(rdes) - vm_viewer.showMaximized() - vm_viewer.start() - return app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig2_elecModels/Fig2E.py b/examples/paper-2015/Fig2_elecModels/Fig2E.py deleted file mode 100644 index 1a02727..0000000 --- a/examples/paper-2015/Fig2_elecModels/Fig2E.py +++ /dev/null @@ -1,125 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### -# This example illustrates loading a model from an SWC file, inserting -# channels, and running it. - -import moogli -import moose -from PyQt4 import Qt, QtCore, QtGui -import numpy -import pylab -import sys -import os -import rdesigneur as rd - -PI = 3.14159265358979 -frameRunTime = 0.0005 -runtime = 0.1 -inject = 1e-9 -chanProto_ = [ - ['./chans/KChannel_HH.xml'], - ['./chans/NaChannel_HH.xml'], - ['./chans/LeakConductance.xml'], - [ './chans/kdr.xml' ] - ] - -passiveDistrib_ = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", - "Em", "-58e-3", "initVm", "-65e-3" ] - , [ ".", "#axon#", "RA", "0.5" ] - ] - -chanDistrib_ = [ - [ "NaConductance", "#", "Gbar", "1200" ] - , [ "KConductance", "#", "Gbar", "360" ] - , [ "LeakConductance", "#", "Gbar", "3" ] - , [ "kdr", "#", "Gbar", "10" ] - ] - - -def create_vm_viewer(rdes, somaVm): - network = moogli.extensions.moose.read(rdes.elecid.path) - normalizer = moogli.utilities.normalizer(-0.08, - 0.02, - clipleft=True, - clipright=True) - colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, - 0.5, - 1.0, - 1.0), - moogli.colors.Color(1.0, - 0.0, - 0.0, - 0.9)]) - mapper = moogli.utilities.mapper(colormap, normalizer) - - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - - def prelude(view): - view.pitch(PI/2.0) - - def interlude(view): - moose.start(frameRunTime) - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - view.yaw(0.01) - currTime = moose.element('/clock').currentTime - if currTime >= runtime: - view.stop() - - def postlude(view): - pylab.plot(numpy.linspace(0, - runtime, - len(somaVm.vector)), - somaVm.vector * 1000) - pylab.xlabel("Time (s)") - pylab.ylabel("Vm (mV)") - pylab.show() - - viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) - view = moogli.View("vm-view", - prelude=prelude, - interlude=interlude, - postlude=postlude) - viewer.attach_view(view) - return viewer - - -def main(): - ######## Put your favourite cell model here ###### - ##This one is from PMID 22730554: Suo et al J. Mol Cell Biol 2012 - filename = 'cells/ko20x-07.CNG.swc' - moose.Neutral( '/library' ) - rdes = rd.rdesigneur( \ - cellProto = [[ filename, 'elec' ] ],\ - passiveDistrib = passiveDistrib_, - chanProto = chanProto_, - chanDistrib = chanDistrib_ - ) - rdes.buildModel( '/model' ) - moose.reinit() - - ################## Now we store plots ######################## - somaVm = moose.Table( '/somaVm' ) - moose.connect( somaVm, 'requestOut', rdes.soma, 'getVm' ) - ################## Now we set up the display ######################## - compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) - compts[0].inject = inject - - print "Setting Up 3D Display" - app = QtGui.QApplication(sys.argv) - vm_viewer = create_vm_viewer(rdes, somaVm) - vm_viewer.show() - vm_viewer.start() - return app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml b/examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml deleted file mode 100644 index dcae7ae..0000000 --- a/examples/paper-2015/Fig2_elecModels/cells/CA1.morph.xml +++ /dev/null @@ -1,12535 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc deleted file mode 100644 index c8c64e8..0000000 --- a/examples/paper-2015/Fig2_elecModels/cells/K-18.CNG.swc +++ /dev/null @@ -1,1193 +0,0 @@ -# Original file K-18.swc edited using StdSwc version 1.31 on 1/26/12. -# Irregularities and fixes documented in K-18.swc.std. See StdSwc1.31.doc for more information. -# -# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\Master File Processing\Original\K-18.asc -# -# NEUROMANTIC V1.6.3 (1/26/2012 12:52:03 PM): Saved to K-18.swc.CNG.swc -1 1 2.67 1.55 -7.84 9.3275 -1 -2 1 2.67 10.87 -7.84 9.3275 1 -3 1 2.67 -7.77 -7.84 9.3275 1 -4 3 -4.16 8.32 -5.88 1.91 1 -5 3 -5.85 11.02 -5.88 1.575 4 -6 3 -8.89 16.3 -5.88 1.405 5 -7 3 -12.37 21.82 -5.88 1.405 6 -8 3 -14.4 25.42 -5.88 1.405 7 -9 3 -15.63 27.67 -4.9 1.405 8 -10 3 -16.76 29.13 -4.9 1.405 9 -11 3 -21.37 31.15 -4.9 0.845 10 -12 3 -23.96 32.72 -4.9 0.845 11 -13 3 -26.54 34.08 -4.9 0.845 12 -14 3 -26.77 34.19 -4.9 0.845 13 -15 3 -30.25 32.72 -4.9 0.675 14 -16 3 -32.28 31.49 -4.9 0.675 15 -17 3 -33.07 32.61 -3.92 0.225 16 -18 3 -35.88 27.78 -3.92 0.675 17 -19 3 -37.68 25.64 -3.92 0.675 18 -20 3 -41.95 24.29 -3.92 0.505 19 -21 3 -44.99 23.06 -3.92 0.505 20 -22 3 -46.45 23.39 -3.92 0.225 21 -23 3 -48.7 20.13 -3.92 0.45 22 -24 3 -51.4 16.98 -3.92 0.45 23 -25 3 -53.87 14.85 -3.92 0.45 24 -26 3 -54.32 14.28 -3.92 0.45 25 -27 3 -55.34 12.93 -4.9 0.395 26 -28 3 -58.71 12.15 -4.9 0.395 27 -29 3 -60.4 12.03 -4.9 0.28 28 -30 3 -62.65 11.81 -4.9 0.225 29 -31 3 -64.56 11.47 -4.9 0.225 30 -32 3 -37.56 19.12 -4.9 0.62 19 -33 3 -38.24 15.97 -4.9 0.56 32 -34 3 -38.58 14.51 -4.9 0.56 33 -35 3 -39.59 15.52 -4.9 0.395 34 -36 3 -39.81 10.91 -4.9 0.56 35 -37 3 -40.83 8.32 -4.9 0.56 36 -38 3 -42.29 6.19 -4.9 0.56 37 -39 3 -42.85 3.49 -4.9 0.56 38 -40 3 -42.96 1.12 -4.9 0.56 39 -41 3 -43.19 -0.11 -4.9 0.56 40 -42 3 -46.56 -2.81 -4.9 0.56 41 -43 3 -49.94 -5.96 -4.9 0.56 42 -44 3 -53.31 -7.31 -4.9 0.56 43 -45 3 -57.02 -8.77 -4.9 0.56 44 -46 3 -59.27 -9.56 -4.9 0.56 45 -47 3 -61.52 -12.03 -4.9 0.56 46 -48 3 -63.32 -14.06 -4.9 0.56 47 -49 3 -66.36 -14.85 -4.9 0.56 48 -50 3 -69.28 -15.3 -4.9 0.56 49 -51 3 -73.22 -15.75 -4.9 0.56 50 -52 3 -76.37 -18.22 -4.9 0.56 51 -53 3 -78.39 -19.12 -4.9 0.56 52 -54 3 -82.22 -18.55 -4.9 0.56 53 -55 3 -85.14 -18.89 -4.9 0.56 54 -56 3 -86.38 -18.89 -4.9 0.56 55 -57 3 -88.06 -20.47 -4.9 0.335 56 -58 3 -90.2 -22.72 -4.9 0.335 57 -59 3 -91.78 -23.84 -4.9 0.335 58 -60 3 -93.69 -25.42 -4.9 0.335 59 -61 3 -94.59 -26.21 -4.9 0.335 60 -62 3 -88.4 -16.07 -4.9 0.395 56 -63 3 -88.63 -13.72 -4.9 0.395 62 -64 3 -89.08 -12.15 -4.9 0.395 63 -65 3 -90.54 -11.58 -4.9 0.395 64 -66 3 -93.24 -12.82 -4.9 0.395 65 -67 3 -96.16 -13.05 -4.9 0.395 66 -68 3 -97.96 -11.58 -4.9 0.395 67 -69 3 -99.76 -10.57 -4.9 0.395 68 -70 3 -100.77 -11.47 -4.9 0.28 69 -71 3 -100.55 -10.11 -4.9 0.395 70 -72 3 -103.47 -9.67 -4.9 0.395 71 -73 3 -106.28 -9.67 -4.9 0.395 72 -74 3 -107.86 -10.01 -4.9 0.395 73 -75 3 -109.32 -11.02 -4.9 0.395 74 -76 3 -110.45 -11.47 -4.9 0.395 75 -77 3 -111.46 -11.92 -4.9 0.395 76 -78 3 -113.03 -11.92 -4.9 0.395 77 -79 3 -29.02 36.44 -4.9 0.73 14 -80 3 -30.59 36.22 -4.9 0.28 79 -81 3 -31.27 36.33 -4.9 0.28 80 -82 3 -31.72 36.33 -4.9 0.28 81 -83 3 -31.15 38.58 -4.9 0.73 79 -84 3 -32.28 39.59 -4.9 0.73 83 -85 3 -33.29 40.15 -4.9 0.73 84 -86 3 -33.29 40.26 -4.9 0.73 85 -87 3 -37.22 43.3 -4.9 0.62 86 -88 3 -39.47 44.88 -4.9 0.62 87 -89 3 -41.28 45.89 -4.9 0.62 88 -90 3 -44.2 47.91 -4.9 0.62 89 -91 3 -45.89 49.71 -4.9 0.62 90 -92 3 -49.04 52.75 -4.9 0.62 91 -93 3 -52.41 55.34 -4.9 0.62 92 -94 3 -58.26 59.16 -4.9 0.62 93 -95 3 -59.72 60.4 -4.9 0.62 94 -96 3 -60.96 61.52 -4.9 0.62 95 -97 3 -61.07 61.52 -4.9 0.62 96 -98 3 -59.95 62.53 -4.9 0.335 97 -99 3 -63.66 63.55 -4.9 0.62 98 -100 3 -65.01 64.9 -4.9 0.62 99 -101 3 -66.13 65.91 -4.9 0.62 100 -102 3 -66.23 66.02 -4.9 0.62 101 -103 3 -65.12 67.37 -4.9 0.335 102 -104 3 -68.38 67.81 -4.9 0.62 103 -105 3 -68.94 68.72 -4.9 0.62 104 -106 3 -72.88 69.06 -3.92 0.56 105 -107 3 -77.83 70.41 -3.92 0.56 106 -108 3 -81.77 71.64 -3.92 0.56 107 -109 3 -84.8 74.12 -4.9 0.56 108 -110 3 -87.39 76.37 -4.9 0.56 109 -111 3 -89.19 77.27 -4.9 0.56 110 -112 3 -89.64 77.48 -4.9 0.56 111 -113 3 -93.24 77.83 -4.9 0.56 112 -114 3 -97.06 77.94 -4.9 0.56 113 -115 3 -100.66 78.05 -4.9 0.56 114 -116 3 -103.25 78.05 -4.9 0.56 115 -117 3 -106.17 77.48 -4.9 0.56 116 -118 3 -106.96 77.04 -4.9 0.56 117 -119 3 -108.98 76.59 -4.9 0.56 118 -120 3 -110.78 76.7 -4.9 0.56 119 -121 3 -112.69 76.25 -4.9 0.56 120 -122 3 -90.54 82.33 -4.9 0.335 112 -123 3 -90.88 84.69 -4.9 0.335 122 -124 3 -90.09 89.64 -4.9 0.335 123 -125 3 -89.08 95.37 -4.9 0.335 124 -126 3 -88.74 99.2 -4.9 0.335 125 -127 3 -88.63 101.22 -4.9 0.335 126 -128 3 -88.4 104.82 -4.9 0.335 127 -129 3 -87.95 106.4 -4.9 0.335 128 -130 3 -87.95 108.08 -4.9 0.335 129 -131 3 -87.84 108.87 -4.9 0.335 130 -132 3 -87.84 109.21 -4.9 0.335 131 -133 3 -69.62 71.42 -4.9 0.62 105 -134 3 -70.41 74.34 -4.9 0.62 133 -135 3 -71.08 77.48 -3.92 0.62 134 -136 3 -70.86 79.84 -3.92 0.62 135 -137 3 -70.63 82.44 -4.9 0.62 136 -138 3 -71.08 85.36 -3.92 0.62 137 -139 3 -71.87 86.94 -3.92 0.62 138 -140 3 -72.77 90.65 -3.92 0.62 139 -141 3 -73.11 92.11 -3.92 0.62 140 -142 3 -75.69 91.89 -3.92 0.45 141 -143 3 -78.5 90.54 -3.92 0.45 142 -144 3 -79.84 90.31 -3.92 0.45 143 -145 3 -81.88 91.44 -3.92 0.45 144 -146 3 -83.34 92.56 -3.92 0.45 145 -147 3 -84.35 92.9 -3.92 0.45 146 -148 3 -84.69 92.9 -3.92 0.45 147 -149 3 -73.89 94.47 -3.92 0.45 141 -150 3 -74.23 96.5 -3.92 0.45 149 -151 3 -75.69 98.19 -3.92 0.45 150 -152 3 -76.25 98.41 -3.92 0.45 151 -153 3 -78.17 97.17 -3.92 0.28 152 -154 3 -78.84 96.16 -3.92 0.28 153 -155 3 -79.06 95.71 -3.92 0.28 154 -156 3 -78.5 102.01 -3.92 0.62 152 -157 3 -79.52 104.26 -3.92 0.62 156 -158 3 -79.4 108.08 -3.92 0.62 157 -159 3 -81.65 113.93 -3.92 0.62 158 -160 3 -82.44 115.28 -3.92 0.62 159 -161 3 -84.46 114.94 -3.92 0.505 160 -162 3 -86.49 114.94 -3.92 0.45 161 -163 3 -87.95 115.28 -3.92 0.45 162 -164 3 -89.08 115.39 -3.92 0.45 163 -165 3 -34.29 43.41 -4.9 0.45 86 -166 3 -35.09 45.33 -4.9 0.395 165 -167 3 -37.34 47.46 -4.9 0.395 166 -168 3 -39.14 50.16 -4.9 0.395 167 -169 3 -40.94 52.52 -4.9 0.395 168 -170 3 -41.39 53.76 -4.9 0.395 169 -171 3 -42.06 54.44 -4.9 0.395 170 -172 3 -47.01 56.01 -4.9 0.395 171 -173 3 -53.31 59.5 -4.9 0.395 172 -174 3 -56.12 62.65 -4.9 0.395 173 -175 3 -56.35 60.06 -4.9 0.28 174 -176 3 -58.48 55.56 -4.9 0.225 175 -177 3 -59.38 53.31 -4.9 0.225 176 -178 3 -60.51 51.51 -4.9 0.225 177 -179 3 -61.63 49.26 -4.9 0.225 178 -180 3 -58.37 66.58 -4.9 0.335 174 -181 3 -60.4 71.08 -4.9 0.335 180 -182 3 -63.21 75.34 -4.9 0.28 181 -183 3 -65.56 78.05 -4.9 0.28 182 -184 3 -70.41 83.23 -4.9 0.28 183 -185 3 -75.58 84.69 -4.9 0.28 184 -186 3 -80.3 85.93 -4.9 0.28 185 -187 3 -84.02 85.59 -5.88 0.28 186 -188 3 -88.96 85.7 -5.88 0.28 187 -189 3 -94.02 85.7 -5.88 0.28 188 -190 3 -96.61 86.38 -5.88 0.28 189 -191 3 -102.57 87.16 -5.88 0.28 190 -192 3 -106.73 88.29 -5.88 0.28 191 -193 3 -109.21 89.75 -5.88 0.28 192 -194 3 -110.78 91.66 -4.9 0.28 193 -195 3 -111.8 93.35 -4.9 0.28 194 -196 3 -111.91 94.25 -4.9 0.28 195 -197 3 -108.76 85.36 -5.88 0.28 191 -198 3 -111.8 84.02 -5.88 0.28 197 -199 3 -40.15 58.71 -4.9 0.335 171 -200 3 -38.35 62.53 -4.9 0.335 199 -201 3 -37.22 67.26 -4.9 0.335 200 -202 3 -37.45 71.42 -4.9 0.335 201 -203 3 -38.69 76.59 -4.9 0.335 202 -204 3 -40.38 79.63 -4.9 0.335 203 -205 3 -42.4 82.55 -4.9 0.335 204 -206 3 -42.85 84.13 -4.9 0.335 205 -207 3 -42.96 88.18 -4.9 0.335 206 -208 3 -42.63 91.44 -4.9 0.335 207 -209 3 -42.51 92.11 -4.9 0.335 208 -210 3 -42.74 97.62 -4.9 0.335 209 -211 3 -40.6 104.93 -3.92 0.335 210 -212 3 -39.03 110.56 -3.92 0.335 211 -213 3 -39.14 113.26 -3.92 0.335 212 -214 3 -38.35 114.94 -3.92 0.335 213 -215 3 -15.41 32.84 -4.9 0.955 10 -216 3 -15.07 34.08 -4.9 0.955 215 -217 3 -11.81 35.77 -3.92 0.395 216 -218 3 -8.32 39.81 -3.92 0.395 217 -219 3 -3.37 44.43 -3.92 0.395 218 -220 3 0.34 47.8 -3.92 0.395 219 -221 3 5.05 54.41 -4.9 0.335 220 -222 3 11.92 60.03 -4.9 0.335 221 -223 3 16.42 62.28 -4.9 0.335 222 -224 3 21.26 64.31 -4.9 0.335 223 -225 3 28.01 71.17 -4.9 0.335 224 -226 3 31.15 74.88 -4.9 0.335 225 -227 3 33.74 77.58 -3.92 0.335 226 -228 3 38.58 81.96 -3.92 0.335 227 -229 3 41.61 86.35 -3.92 0.335 228 -230 3 43.53 90.17 -3.92 0.335 229 -231 3 44.09 93.21 -3.92 0.335 230 -232 3 45.33 96.36 -3.92 0.335 231 -233 3 44.31 100.63 -3.92 0.335 232 -234 3 42.85 105.47 -3.92 0.335 233 -235 3 42.85 107.72 -3.92 0.335 234 -236 3 41.16 113.12 -3.92 0.335 235 -237 3 40.94 114.13 -3.92 0.335 236 -238 3 40.83 114.47 -3.92 0.335 237 -239 3 -14.51 39.7 -4.9 0.9 216 -240 3 -14.62 41.84 -4.9 0.9 239 -241 3 -16.3 43.3 -4.9 0.675 240 -242 3 -16.87 43.98 -4.9 0.675 241 -243 3 -18.45 43.08 -4.9 0.335 242 -244 3 -19.68 42.51 -4.9 0.335 243 -245 3 -20.02 48.02 -4.9 0.73 242 -246 3 -21.59 50.16 -4.9 0.73 245 -247 3 -23.62 51.96 -4.9 0.73 246 -248 3 -24.52 53.09 -4.9 0.73 247 -249 3 -28.12 53.87 -4.9 0.56 248 -250 3 -29.58 54.21 -4.9 0.56 249 -251 3 -30.93 56.12 -4.9 0.28 250 -252 3 -31.04 57.13 -4.9 0.28 251 -253 3 -31.27 57.92 -4.9 0.28 252 -254 3 -33.18 54.89 -4.9 0.395 250 -255 3 -36.33 54.77 -4.9 0.395 254 -256 3 -39.81 53.65 -4.9 0.395 255 -257 3 -44.65 54.32 -4.9 0.395 256 -258 3 -48.7 55.45 -4.9 0.395 257 -259 3 -52.3 56.12 -4.9 0.395 258 -260 3 -55.56 57.02 -4.9 0.395 259 -261 3 -57.7 56.91 -4.9 0.395 260 -262 3 -27.67 56.01 -4.9 0.675 248 -263 3 -31.27 58.93 -4.9 0.675 262 -264 3 -33.85 61.18 -4.9 0.675 263 -265 3 -34.42 62.31 -4.9 0.675 264 -266 3 -32.84 63.97 -3.92 0.395 265 -267 3 -31.94 64.42 -3.92 0.395 266 -268 3 -31.49 64.98 -3.92 0.395 267 -269 3 -37.34 65.31 -4.9 0.62 265 -270 3 -40.94 68.13 -4.9 0.62 269 -271 3 -42.85 69.93 -4.9 0.62 270 -272 3 -43.98 71.62 -4.9 0.62 271 -273 3 -44.2 72.29 -4.9 0.62 272 -274 3 -43.3 72.63 -3.92 0.395 273 -275 3 -46.68 74.88 -3.92 0.62 274 -276 3 -48.81 77.23 -3.92 0.62 275 -277 3 -50.95 78.93 -3.92 0.62 276 -278 3 -51.74 79.48 -4.9 0.62 277 -279 3 -53.31 77.23 -4.9 0.225 278 -280 3 -53.76 76.12 -4.9 0.225 279 -281 3 -54.32 75.89 -4.9 0.225 280 -282 3 -53.2 80.5 -4.9 0.62 278 -283 3 -57.36 79.26 -4.9 0.335 282 -284 3 -60.4 79.48 -4.9 0.335 283 -285 3 -63.88 78.7 -4.9 0.335 284 -286 3 -68.27 78.81 -4.9 0.335 285 -287 3 -73.22 79.04 -4.9 0.335 286 -288 3 -76.37 80.05 -4.9 0.335 287 -289 3 -80.64 79.83 -4.9 0.335 288 -290 3 -81.99 79.83 -4.9 0.335 289 -291 3 -84.35 79.38 -4.9 0.335 290 -292 3 -86.6 79.38 -4.9 0.335 291 -293 3 -90.76 81.96 -4.9 0.335 292 -294 3 -92.11 83.09 -4.9 0.335 293 -295 3 -93.13 83.88 -4.9 0.335 294 -296 3 -54.89 82.75 -4.9 0.62 282 -297 3 -55.67 83.88 -4.9 0.62 296 -298 3 -54.44 84.44 -4.9 0.335 297 -299 3 -58.6 86.24 -4.9 0.62 298 -300 3 -61.63 88.82 -4.9 0.62 299 -301 3 -63.21 89.61 -4.9 0.62 300 -302 3 -69.06 89.05 -4.9 0.62 301 -303 3 -73.22 88.94 -4.9 0.62 302 -304 3 -77.59 90.96 -4.9 0.62 303 -305 3 -82.1 93.55 -4.9 0.62 304 -306 3 -84.91 95.46 -4.9 0.62 305 -307 3 -90.76 96.58 -4.9 0.62 306 -308 3 -94.47 95.24 -4.9 0.62 307 -309 3 -95.37 95.01 -4.9 0.62 308 -310 3 -96.72 93.55 -4.9 0.335 309 -311 3 -99.2 93.55 -4.9 0.335 310 -312 3 -101.67 93.32 -4.9 0.335 311 -313 3 -99.65 95.12 -4.9 0.675 309 -314 3 -103.13 95.35 -4.9 0.675 313 -315 3 -105.83 95.12 -4.9 0.62 314 -316 3 -107.63 95.8 -4.9 0.62 315 -317 3 -110.11 94.34 -4.9 0.62 316 -318 3 -111.8 93.1 -4.9 0.62 317 -319 3 -112.69 93.21 -4.9 0.62 318 -320 3 -11.36 46.56 -4.9 0.845 240 -321 3 -10.01 49.15 -4.9 0.845 320 -322 3 -9.34 50.27 -4.9 0.845 321 -323 3 -8.1 56.35 -4.9 0.845 322 -324 3 -7.87 59.5 -4.9 0.73 323 -325 3 -7.99 62.53 -4.9 0.73 324 -326 3 -7.54 64.33 -4.9 0.73 325 -327 3 -9.44 65.34 -4.9 0.45 326 -328 3 -9.9 65.68 -4.9 0.45 327 -329 3 -10.91 66.13 -4.9 0.45 328 -330 3 -11.58 66.23 -4.9 0.45 329 -331 3 -5.4 69.39 -4.9 0.73 326 -332 3 -3.94 69.06 -4.9 0.335 331 -333 3 -4.61 72.2 -4.9 0.73 332 -334 3 -3.6 74.45 -5.88 0.73 333 -335 3 -4.61 75.47 -5.88 0.335 334 -336 3 -5.4 76.14 -5.88 0.335 335 -337 3 -6.3 76.59 -5.88 0.335 336 -338 3 -1.46 79.63 -4.9 0.845 334 -339 3 1.57 80.42 -4.9 0.45 338 -340 3 4.16 81.77 -4.9 0.45 339 -341 3 5.96 83.12 -4.9 0.335 340 -342 3 7.31 84.35 -3.92 0.335 341 -343 3 7.76 84.69 -3.92 0.335 342 -344 3 -0.11 83.23 -4.9 0.785 338 -345 3 0.73 85.7 -4.9 0.785 344 -346 3 1.14 86.94 -4.9 0.785 345 -347 3 1.57 88.18 -4.9 0.785 346 -348 3 9.97 87.5 -4.9 0.335 346 -349 3 2.36 89.98 -4.9 0.785 345 -350 3 2.59 89.98 -4.9 0.785 349 -351 3 -1.01 94.14 -4.9 0.62 350 -352 3 -3.15 96.39 -4.9 0.62 351 -353 3 -7.09 99.99 -3.92 0.62 352 -354 3 -8.32 101 -3.92 0.62 353 -355 3 -9.22 103.81 -3.92 0.56 354 -356 3 -10.11 106.62 -3.92 0.56 355 -357 3 -10.8 108.53 -3.92 0.56 356 -358 3 -13.05 110.56 -3.92 0.56 357 -359 3 -14.85 111.23 -3.92 0.56 358 -360 3 -16.07 111.8 -3.92 0.56 359 -361 3 -16.76 113.37 -3.92 0.505 360 -362 3 -17.77 114.61 -3.92 0.505 361 -363 3 -18.55 115.39 -3.92 0.505 362 -364 3 -18.89 110.33 -3.92 0.395 360 -365 3 -21.48 109.55 -3.92 0.395 364 -366 3 -22.72 109.55 -3.92 0.395 365 -367 3 -24.63 110.22 -3.92 0.335 366 -368 3 -26.21 110.56 -3.92 0.335 367 -369 3 -28.01 110.11 -3.92 0.335 368 -370 3 -30.14 108.76 -3.92 0.335 369 -371 3 -34.64 108.53 -3.92 0.335 370 -372 3 -36.22 107.41 -3.92 0.335 371 -373 3 -38.46 104.93 -3.92 0.28 372 -374 3 -39.14 104.48 -3.92 0.28 373 -375 3 -25.31 106.4 -3.92 0.28 366 -376 3 -26.88 105.27 -3.92 0.28 375 -377 3 -28.79 105.38 -3.92 0.28 376 -378 3 -29.35 105.72 -3.92 0.28 377 -379 3 -30.14 105.72 -3.92 0.28 378 -380 3 9 94.36 -4.9 0.73 350 -381 3 10.23 95.26 -4.9 0.73 380 -382 3 10.68 95.82 -4.9 0.73 381 -383 3 12.37 94.59 -4.9 0.28 382 -384 3 14.62 93.35 -4.9 0.28 383 -385 3 16.2 93.13 -4.9 0.28 384 -386 3 18.78 92.56 -4.9 0.28 385 -387 3 20.36 91.44 -4.9 0.28 386 -388 3 13.05 99.09 -3.92 0.73 382 -389 3 14.4 102.46 -3.92 0.62 388 -390 3 12.03 103.13 -3.92 0.45 389 -391 3 10.23 103.36 -3.92 0.45 390 -392 3 7.2 104.03 -3.92 0.45 391 -393 3 6.3 104.03 -3.92 0.45 392 -394 3 15.18 104.26 -3.92 0.73 389 -395 3 14.4 107.86 -3.92 0.45 394 -396 3 14.28 110.33 -3.92 0.45 395 -397 3 14.17 111.12 -3.92 0.45 396 -398 3 13.95 112.25 -3.92 0.45 397 -399 3 13.5 113.37 -3.92 0.45 398 -400 3 13.05 114.49 -3.92 0.45 399 -401 3 12.6 115.28 -3.92 0.45 400 -402 3 17.43 111.8 -3.92 0.395 397 -403 3 20.36 113.26 -3.92 0.395 402 -404 3 22.49 114.16 -3.92 0.395 403 -405 3 23.96 114.61 -3.92 0.395 404 -406 3 24.86 114.94 -3.92 0.395 405 -407 3 18.11 106.28 -3.92 0.62 394 -408 3 20.13 108.08 -3.92 0.62 407 -409 3 22.16 109.88 -3.92 0.62 408 -410 3 23.62 111.46 -3.92 0.62 409 -411 3 23.73 112.69 -3.92 0.62 410 -412 3 24.86 114.16 -3.92 0.62 411 -413 3 25.64 115.06 -3.92 0.62 412 -414 3 26.09 115.51 -3.92 0.62 413 -415 3 2.81 82.1 -4.9 0.335 344 -416 3 4.84 80.75 -4.9 0.335 415 -417 3 5.62 80.19 -4.9 0.335 416 -418 3 -3.07 51.53 -4.9 0.845 322 -419 3 -9.6 56.25 -4.9 0.335 418 -420 3 -15.67 60.75 -4.9 0.335 419 -421 3 -20.17 62.33 -4.9 0.335 420 -422 3 1.01 53.2 -4.9 0.62 418 -423 3 5.17 54.1 -4.9 0.62 422 -424 3 12.26 58.93 -4.9 0.62 423 -425 3 15.97 61.3 -4.9 0.62 424 -426 3 23.84 66.58 -4.9 0.62 425 -427 3 28.57 70.18 -4.9 0.62 426 -428 3 32.84 72.31 -4.9 0.62 427 -429 3 35.99 72.98 -4.9 0.62 428 -430 3 40.38 74.01 -4.9 0.62 429 -431 3 46 77.04 -3.92 0.62 430 -432 3 48.25 79.84 -3.92 0.56 431 -433 3 49.82 82.1 -3.92 0.56 432 -434 3 51.4 86.71 -3.92 0.56 433 -435 3 53.42 90.09 -3.92 0.505 434 -436 3 55.56 93.57 -3.92 0.505 435 -437 3 59.61 96.84 -2.94 0.505 436 -438 3 63.55 100.32 -2.94 0.505 437 -439 3 66.92 103.25 -2.94 0.505 438 -440 3 69.28 105.27 -2.94 0.505 439 -441 3 70.97 107.97 -2.94 0.505 440 -442 3 71.08 107.94 -2.94 0.505 441 -443 3 71.64 109.32 -2.94 0.505 442 -444 3 71.87 110 -2.94 0.505 443 -445 3 73.67 112.33 -2.94 0.335 444 -446 3 74.9 114.8 -2.94 0.335 445 -447 3 75.23 115.25 -2.94 0.335 446 -448 3 75.23 108.28 -2.94 0.335 442 -449 3 79.52 110.08 -2.94 0.335 448 -450 3 83.57 113.12 -2.94 0.335 449 -451 3 84.24 113.91 -2.94 0.335 450 -452 3 11.7 -3.15 -4.9 0.675 1 -453 3 12.71 -6.97 -4.9 0.73 452 -454 3 12.26 -11.02 -3.92 0.73 453 -455 3 12.48 -13.72 -3.92 0.62 454 -456 3 12.37 -16.42 -3.92 0.62 455 -457 3 11.81 -19.23 -3.92 0.62 456 -458 3 9.34 -24.07 -3.92 0.62 457 -459 3 6.41 -31.49 -3.92 0.62 458 -460 3 4.26 -30.93 -3.92 0.45 459 -461 3 0.79 -31.49 -3.92 0.45 460 -462 3 -3.94 -33.74 -3.92 0.45 461 -463 3 -5.17 -34.64 -3.92 0.45 462 -464 3 -6.64 -35.09 -3.92 0.45 463 -465 3 2.02 -41.84 -3.92 0.45 459 -466 3 2.02 -42.4 -3.92 0.45 465 -467 3 3.15 -43.53 -3.92 0.45 466 -468 3 4.05 -44.2 -3.92 0.45 467 -469 3 5.05 -44.43 -3.92 0.45 468 -470 3 0.11 -46.68 -3.92 0.45 466 -471 3 0 -48.92 -3.92 0.45 470 -472 3 -0.22 -50.72 -3.92 0.45 471 -473 3 -1.69 -52.64 -3.92 0.45 472 -474 3 -5.74 -58.03 -3.92 0.45 473 -475 3 -10.01 -65.91 -3.92 0.45 474 -476 3 -11.02 -70.29 -3.92 0.45 475 -477 3 -12.03 -74.9 -3.92 0.45 476 -478 3 -11.92 -77.38 -3.92 0.45 477 -479 3 -11.02 -78.84 -3.92 0.45 478 -480 3 -11.92 -80.53 -4.9 0.395 479 -481 3 -11.7 -82.89 -4.9 0.395 480 -482 3 -12.48 -85.7 -4.9 0.28 481 -483 3 -13.95 -89.64 -4.9 0.28 482 -484 3 -14.73 -92 -4.9 0.28 483 -485 3 -15.41 -93.35 -4.9 0.28 484 -486 3 11.25 5.17 -4.9 0.73 1 -487 3 13.83 8.44 -4.9 0.73 486 -488 3 15.97 11.81 -4.9 0.73 487 -489 3 16.3 13.72 -4.9 0.62 488 -490 3 12.82 17.66 -4.9 0.505 489 -491 3 9.56 19.91 -4.9 0.45 490 -492 3 6.86 22.49 -4.9 0.45 491 -493 3 4.61 25.64 -4.9 0.45 492 -494 3 2.14 28.57 -4.9 0.45 493 -495 3 -0.56 30.37 -4.9 0.45 494 -496 3 -3.26 32.17 -4.9 0.45 495 -497 3 -6.52 34.86 -4.9 0.45 496 -498 3 -10.23 37.68 -4.9 0.45 497 -499 3 -12.03 37.68 -4.9 0.45 498 -500 3 -13.61 39.14 -4.9 0.395 499 -501 3 18.45 18.55 -4.9 0.62 489 -502 3 20.47 25.76 -4.9 0.62 501 -503 3 20.81 29.24 -4.9 0.62 502 -504 3 20.23 33.29 -4.9 0.56 503 -505 3 18.78 37.9 -4.9 0.56 504 -506 3 18.11 42.18 -3.92 0.45 505 -507 3 18.11 45.21 -3.92 0.45 506 -508 3 19.57 49.26 -3.92 0.45 507 -509 3 21.37 51.17 -3.92 0.45 508 -510 3 23.51 52.86 -3.92 0.45 509 -511 3 28.45 53.31 -4.9 0.45 510 -512 3 32.61 54.89 -4.9 0.45 511 -513 3 34.97 55.56 -5.88 0.45 512 -514 3 40.6 55.79 -6.86 0.45 513 -515 3 44.2 57.13 -6.86 0.45 514 -516 3 46.45 60.73 -4.9 0.45 515 -517 3 46.23 63.43 -4.9 0.45 516 -518 3 45.66 68.61 -4.9 0.45 517 -519 3 46.23 73.33 -4.9 0.45 518 -520 3 47.91 76.59 -4.9 0.45 519 -521 3 49.04 80.42 -4.9 0.45 520 -522 3 49.71 83.99 -3.92 0.45 521 -523 3 -8.55 1.57 -4.9 1.63 1 -524 3 -11.02 0.22 -4.9 1.63 523 -525 3 -16.07 -8.21 -4.9 0.73 524 -526 3 -16.64 -9 -4.9 0.73 525 -527 3 -34.9 -18.63 -4.9 0.73 526 -528 3 -35.55 -18.97 -4.9 0.73 527 -529 3 -36.19 -19.31 -4.9 0.73 528 -530 3 -37.49 -20 -4.9 0.73 529 -531 3 -17.88 -13.16 -4.9 0.675 529 -532 3 -18.67 -16.42 -4.9 0.675 531 -533 3 -20.02 -18.89 -4.9 0.62 532 -534 3 -22.61 -22.72 -4.9 0.62 533 -535 3 -26.32 -28.57 -4.9 0.62 534 -536 3 -28.01 -30.93 -4.9 0.62 535 -537 3 -28.9 -37.34 -4.9 0.505 536 -538 3 -26.66 -38.69 -4.9 0.28 537 -539 3 -23.39 -41.39 -4.9 0.28 538 -540 3 -19.91 -44.31 -4.9 0.28 539 -541 3 -32.5 -47.01 -4.9 0.505 537 -542 3 -34.29 -50.5 -4.9 0.505 541 -543 3 -35.99 -52.75 -4.9 0.505 542 -544 3 -37.22 -58.6 -4.9 0.505 543 -545 3 -37.56 -61.18 -5.88 0.505 544 -546 3 -38.9 -68.38 -5.88 0.505 545 -547 3 -39.03 -71.64 -5.88 0.45 546 -548 3 -39.59 -75.92 -4.9 0.395 547 -549 3 -38.79 -80.53 -4.9 0.395 548 -550 3 -37.45 -84.8 -4.9 0.395 549 -551 3 -35.43 -90.88 -4.9 0.395 550 -552 3 -34.08 -99.65 -4.9 0.395 551 -553 3 -33.63 -100.44 -4.9 0.395 552 -554 3 -44.31 -72.2 -4.9 0.395 546 -555 3 -46.11 -75.23 -4.9 0.395 554 -556 3 -49.6 -74.68 -4.9 0.225 555 -557 3 -51.4 -74.79 -4.9 0.225 556 -558 3 -53.65 -74.9 -4.9 0.225 557 -559 3 -48.92 -80.53 -4.9 0.45 555 -560 3 -50.61 -83.9 -4.9 0.45 559 -561 3 -52.75 -88.63 -4.9 0.45 560 -562 3 -53.09 -92.68 -4.9 0.45 561 -563 3 -52.52 -97.74 -4.9 0.45 562 -564 3 -53.54 -102.57 -4.9 0.45 563 -565 3 -53.65 -103.92 -4.9 0.45 564 -566 3 -54.32 -107.52 -4.9 0.395 565 -567 3 -34.42 -33.52 -4.9 0.395 536 -568 3 -36.33 -35.2 -4.9 0.395 567 -569 3 -37.11 -35.54 -4.9 0.395 568 -570 3 -37.79 -38.24 -4.9 0.28 569 -571 3 -38.01 -39.14 -4.9 0.28 570 -572 3 -44.31 -38.9 -4.9 0.395 569 -573 3 -48.02 -40.26 -4.9 0.395 572 -574 3 -50.16 -41.39 -4.9 0.395 573 -575 3 -50.84 -41.73 -4.9 0.395 574 -576 3 -50.27 -44.31 -4.9 0.225 575 -577 3 -49.71 -46.56 -4.9 0.225 576 -578 3 -49.94 -47.69 -4.9 0.225 577 -579 3 -58.15 -43.64 -4.9 0.395 575 -580 3 -59.95 -44.54 -4.9 0.395 579 -581 3 -62.76 -44.88 -4.9 0.395 580 -582 3 -65.56 -44.76 -4.9 0.395 581 -583 3 -68.04 -44.43 -4.9 0.395 582 -584 3 -71.08 -46.23 -4.9 0.395 583 -585 3 -75.02 -48.92 -4.9 0.395 584 -586 3 -77.15 -49.71 -4.9 0.395 585 -587 3 -79.84 -51.17 -4.9 0.395 586 -588 3 -81.43 -51.51 -4.9 0.395 587 -589 3 -81.99 -52.07 -4.9 0.395 588 -590 3 -82.22 -52.75 -4.9 0.395 589 -591 3 -82.67 -54.44 -4.9 0.395 590 -592 3 -83 -55.22 -4.9 0.395 591 -593 3 -32.09 -24.5 -4.9 0.335 528 -594 3 -38.46 -20.27 -4.9 0.505 527 -595 3 -43.64 -23.42 -4.9 0.505 594 -596 3 -47.24 -26.01 -4.9 0.505 595 -597 3 -48.02 -29.61 -4.9 0.505 596 -598 3 -50.61 -32.19 -4.9 0.505 597 -599 3 -51.4 -32.97 -4.9 0.505 598 -600 3 -50.27 -33.99 -4.9 0.335 599 -601 3 -59.16 -41.19 -4.9 0.505 600 -602 3 -61.52 -44.23 -4.9 0.45 601 -603 3 -64.9 -48.05 -4.9 0.45 602 -604 3 -67.7 -50.75 -4.9 0.45 603 -605 3 -71.53 -49.18 -3.92 0.335 604 -606 3 -76.37 -44.9 -3.92 0.335 605 -607 3 -80.64 -42.43 -3.92 0.335 606 -608 3 -83.9 -40.18 -3.92 0.335 607 -609 3 -91.21 -41.53 -3.92 0.335 608 -610 3 -93.91 -42.09 -4.9 0.335 609 -611 3 -99.2 -41.3 -4.9 0.335 610 -612 3 -102.91 -38.15 -4.9 0.335 611 -613 3 -105.61 -36.79 -5.88 0.335 612 -614 3 -108.53 -36.13 -4.9 0.335 613 -615 3 -111.12 -35.34 -4.9 0.335 614 -616 3 -112.36 -35.22 -4.9 0.335 615 -617 3 -74.34 -57.16 -4.9 0.335 604 -618 3 -76.14 -59.97 -4.9 0.335 617 -619 3 -75.13 -63.01 -4.9 0.225 618 -620 3 -74.91 -68.41 -4.9 0.225 619 -621 3 -73.44 -72.23 -4.9 0.225 620 -622 3 -72.31 -77.06 -4.9 0.225 621 -623 3 -69.17 -82.36 -4.9 0.225 622 -624 3 -63.55 -87.19 -4.9 0.225 623 -625 3 -62.53 -87.53 -4.9 0.225 624 -626 3 -61.86 -87.87 -4.9 0.225 625 -627 3 -79.63 -66.38 -4.9 0.395 618 -628 3 -79.97 -67.28 -4.9 0.395 627 -629 3 -80.19 -70.2 -4.9 0.225 628 -630 3 -81.54 -72.23 -4.9 0.225 629 -631 3 -84.58 -75.83 -4.9 0.225 630 -632 3 -86.15 -77.18 -4.9 0.225 631 -633 3 -87.61 -77.86 -4.9 0.225 632 -634 3 -87.95 -78.08 -4.9 0.225 633 -635 3 -87.16 -70.2 -4.9 0.225 628 -636 3 -91.44 -72.8 -4.9 0.225 635 -637 3 -99.2 -78.76 -4.9 0.225 636 -638 3 -102.8 -82.8 -4.9 0.225 637 -639 3 -106.62 -89.22 -4.9 0.225 638 -640 3 -106.4 -92.93 -4.9 0.225 639 -641 3 -106.73 -97.99 -4.9 0.225 640 -642 3 -104.71 -102.37 -4.9 0.225 641 -643 3 -103.7 -103.5 -4.9 0.225 642 -644 3 -19.68 -9.22 -4.9 0.45 526 -645 3 -21.59 -11.13 -4.9 0.45 644 -646 3 -24.86 -16.87 -4.9 0.45 645 -647 3 -27.33 -21.26 -4.9 0.45 646 -648 3 -30.37 -23.84 -4.9 0.45 647 -649 3 -33.74 -26.77 -3.92 0.45 648 -650 3 -36.54 -28.34 -3.92 0.45 649 -651 3 -38.46 -27.44 -3.92 0.335 650 -652 3 -39.59 -26.66 -3.92 0.335 651 -653 3 -40.15 -26.32 -3.92 0.335 652 -654 3 -38.01 -31.27 -3.92 0.335 650 -655 3 -38.79 -34.75 -3.92 0.335 654 -656 3 -41.39 -38.35 -3.92 0.335 655 -657 3 -45.89 -41.95 -3.92 0.335 656 -658 3 -49.26 -44.99 -3.92 0.335 657 -659 3 -52.19 -47.57 -4.9 0.335 658 -660 3 14.17 0.34 -4.9 1.575 1 -661 3 16.76 0.22 -4.9 1.575 660 -662 3 19.37 -0.72 -4.61 1.01 661 -663 3 21.98 -1.67 -4.33 1.01 662 -664 3 25.76 -3.04 -3.92 1.01 663 -665 3 25.42 -5.29 -3.92 0.225 664 -666 3 32.04 -4.5 -3.92 1.01 665 -667 3 37.68 -7.09 -3.92 1.01 666 -668 3 42.06 -9 -3.92 1.01 667 -669 3 44.31 -12.71 -3.92 0.62 668 -670 3 46 -13.83 -3.92 0.62 669 -671 3 50.05 -19.12 -3.92 0.62 670 -672 3 50.95 -20.92 -3.92 0.62 671 -673 3 52.52 -26.54 -3.92 0.62 672 -674 3 55.79 -31.83 -3.92 0.73 673 -675 3 56.35 -32.61 -3.92 0.73 674 -676 3 63.43 -37.68 -3.92 0.62 675 -677 3 66.02 -39.36 -3.92 0.62 676 -678 3 73.22 -39.47 -3.92 0.56 677 -679 3 79.52 -39.14 -3.92 0.56 678 -680 3 80.53 -39.03 -3.92 0.56 679 -681 3 84.02 -34.86 -3.92 0.56 680 -682 3 86.26 -32.5 -3.92 0.56 681 -683 3 89.86 -26.88 -3.92 0.505 682 -684 3 91.78 -23.06 -3.92 0.505 683 -685 3 95.94 -18.32 -3.92 0.505 684 -686 3 98.07 -16.42 -3.92 0.505 685 -687 3 100.1 -14.85 -3.92 0.505 686 -688 3 100.55 -13.95 -3.92 0.505 687 -689 3 100.89 -13.61 -3.92 0.505 688 -690 3 88.85 -32.72 -3.92 0.335 682 -691 3 91.21 -32.72 -3.92 0.335 690 -692 3 83.45 -39.36 -3.92 0.56 680 -693 3 83.57 -40.94 -3.92 0.28 692 -694 3 85.93 -39.59 -3.92 0.56 693 -695 3 89.64 -41.05 -3.92 0.56 694 -696 3 96.72 -44.43 -3.92 0.56 695 -697 3 99.87 -46.9 -4.9 0.56 696 -698 3 102.57 -48.81 -4.9 0.56 697 -699 3 105.16 -50.61 -4.9 0.56 698 -700 3 109.66 -52.19 -4.9 0.56 699 -701 3 112.69 -54.1 -4.9 0.56 700 -702 3 115.96 -55.22 -4.9 0.56 701 -703 3 116.97 -55.56 -4.9 0.56 702 -704 3 66.02 -42.63 -3.92 0.45 677 -705 3 65.34 -44.54 -3.92 0.45 704 -706 3 67.37 -46.45 -3.92 0.45 705 -707 3 68.16 -46.79 -3.92 0.45 706 -708 3 70.97 -51.51 -3.92 0.395 707 -709 3 73.44 -54.89 -3.92 0.395 708 -710 3 76.59 -61.3 -3.92 0.395 709 -711 3 77.72 -60.73 -3.92 0.395 710 -712 3 76.7 -64.22 -3.92 0.395 711 -713 3 76.25 -67.7 -3.92 0.395 712 -714 3 76.37 -68.72 -3.92 0.395 713 -715 3 80.19 -71.08 -2.94 0.505 714 -716 3 82.89 -71.08 -2.94 0.505 715 -717 3 85.93 -72.31 -2.94 0.505 716 -718 3 90.31 -74.12 -2.94 0.505 717 -719 3 94.02 -75.23 -2.94 0.505 718 -720 3 97.06 -74.45 -2.94 0.505 719 -721 3 101.67 -74.01 -2.94 0.395 720 -722 3 104.82 -74.12 -2.94 0.395 721 -723 3 108.2 -75.34 -2.94 0.395 722 -724 3 110.78 -76.37 -2.94 0.395 723 -725 3 113.03 -77.27 -2.94 0.395 724 -726 3 114.38 -77.83 -2.94 0.395 725 -727 3 115.39 -78.28 -2.94 0.395 726 -728 3 98.07 -72.66 -2.94 0.335 720 -729 3 98.3 -71.53 -2.94 0.335 728 -730 3 73.56 -70.06 -2.94 0.395 714 -731 3 69.84 -73.11 -2.94 0.395 730 -732 3 68.04 -73.56 -2.94 0.395 731 -733 3 66.13 -73.78 -2.94 0.395 732 -734 3 69.06 -44.65 -2.94 0.28 707 -735 3 69.06 -43.53 -2.94 0.225 734 -736 3 69.06 -42.51 -2.94 0.225 735 -737 3 54.55 -36.54 -3.92 0.56 675 -738 3 53.76 -41.5 -3.92 0.56 737 -739 3 53.87 -46.68 -3.92 0.56 738 -740 3 53.76 -48.47 -3.92 0.56 739 -741 3 52.75 -53.76 -3.92 0.395 740 -742 3 53.65 -55.9 -3.92 0.395 741 -743 3 53.87 -58.48 -3.92 0.395 742 -744 3 53.42 -59.95 -3.92 0.395 743 -745 3 53.09 -62.98 -3.92 0.395 744 -746 3 53.09 -64.56 -3.92 0.395 745 -747 3 51.4 -50.72 -3.92 0.395 740 -748 3 50.84 -52.64 -3.92 0.395 747 -749 3 50.39 -53.76 -3.92 0.395 748 -750 3 51.85 -66.36 -3.92 0.395 749 -751 3 53.09 -68.38 -3.92 0.335 750 -752 3 53.87 -72.31 -4.9 0.335 751 -753 3 55.22 -74.68 -4.9 0.335 752 -754 3 55.34 -78.5 -4.9 0.335 753 -755 3 56.46 -81.77 -4.9 0.335 754 -756 3 56.46 -82.55 -4.9 0.335 755 -757 3 51.17 -29.58 -3.92 0.45 673 -758 3 50.16 -32.28 -3.92 0.45 757 -759 3 48.92 -35.54 -3.92 0.45 758 -760 3 49.37 -41.16 -3.92 0.45 759 -761 3 48.36 -45.89 -3.92 0.45 760 -762 3 46.45 -48.7 -3.92 0.395 761 -763 3 43.41 -51.96 -3.92 0.395 762 -764 3 39.7 -53.42 -3.92 0.395 763 -765 3 36.67 -54.89 -3.92 0.395 764 -766 3 33.74 -56.68 -3.92 0.395 765 -767 3 32.28 -58.03 -3.92 0.395 766 -768 3 31.72 -58.48 -3.92 0.395 767 -769 3 43.98 -46.34 -2.94 0.335 761 -770 3 40.94 -47.91 -2.94 0.335 769 -771 3 40.15 -48.47 -2.94 0.335 770 -772 3 54.1 -20.23 -3.92 0.45 672 -773 3 56.8 -19.01 -3.92 0.45 772 -774 3 60.73 -17.21 -3.92 0.45 773 -775 3 61.52 -14.06 -3.92 0.45 774 -776 3 62.2 -12.15 -3.92 0.45 775 -777 3 62.2 -11.36 -3.92 0.45 776 -778 3 46.79 -12.6 -3.92 0.335 670 -779 3 47.69 -12.03 -3.92 0.335 778 -780 3 50.5 -6.52 -3.92 0.73 668 -781 3 52.3 -6.19 -4.9 0.73 780 -782 3 52.64 -7.2 -3.92 0.395 781 -783 3 56.57 -4.38 -3.92 0.73 782 -784 3 61.07 -8.66 -3.92 0.505 783 -785 3 62.76 -12.15 -3.92 0.505 784 -786 3 63.43 -14.85 -3.92 0.505 785 -787 3 63.43 -16.42 -3.92 0.395 786 -788 3 66.81 -19.46 -3.92 0.395 787 -789 3 70.86 -25.64 -3.92 0.395 788 -790 3 72.43 -29.02 -3.92 0.395 789 -791 3 74.68 -32.04 -2.94 0.395 790 -792 3 75.8 -36.44 -2.94 0.395 791 -793 3 76.03 -41.16 -2.94 0.395 792 -794 3 76.25 -49.04 -2.94 0.395 793 -795 3 75.13 -52.41 -2.94 0.395 794 -796 3 74.12 -55.9 -2.94 0.395 795 -797 3 73.22 -57.25 -2.94 0.395 796 -798 3 73.33 -27.67 -3.92 0.395 790 -799 3 74.01 -26.66 -3.92 0.395 798 -800 3 74.23 -25.42 -3.92 0.395 799 -801 3 67.59 -13.61 -3.92 0.335 786 -802 3 69.62 -16.3 -3.92 0.335 801 -803 3 69.17 -19.68 -3.92 0.28 802 -804 3 68.61 -24.97 -3.92 0.28 803 -805 3 68.38 -28.23 -3.92 0.28 804 -806 3 69.28 -32.28 -3.92 0.28 805 -807 3 69.39 -34.08 -3.92 0.28 806 -808 3 69.39 -35.99 -3.92 0.28 807 -809 3 69.39 -37.45 -3.92 0.28 808 -810 3 68.94 -38.35 -3.92 0.28 809 -811 3 60.17 -1.35 -3.92 0.62 783 -812 3 63.77 1.35 -3.92 0.62 811 -813 3 69.17 5.74 -3.92 0.62 812 -814 3 72.98 6.97 -3.92 0.62 813 -815 3 78.73 9.11 -3.92 0.56 814 -816 3 84.46 11.36 -3.92 0.56 815 -817 3 85.93 12.03 -3.92 0.56 816 -818 3 89.64 15.63 -3.92 0.62 817 -819 3 90.88 16.3 -3.92 0.62 818 -820 3 95.37 16.42 -3.92 0.62 819 -821 3 99.42 21.03 -4.9 0.395 820 -822 3 103.7 24.86 -4.9 0.395 821 -823 3 109.43 30.37 -4.9 0.395 822 -824 3 112.92 33.97 -3.92 0.395 823 -825 3 115.73 36.22 -3.92 0.395 824 -826 3 115.96 36.89 -3.92 0.395 825 -827 3 116.18 38.13 -3.92 0.395 826 -828 3 116.18 39.25 -3.92 0.395 827 -829 3 116.82 42.98 -2.94 0.335 828 -830 3 130.54 45.23 -2.94 0.335 829 -831 3 99.76 16.2 -2.94 0.395 820 -832 3 103.02 16.98 -2.94 0.395 831 -833 3 106.4 18.32 -2.94 0.395 832 -834 3 110.22 19.12 -2.94 0.395 833 -835 3 112.81 19.23 -2.94 0.395 834 -836 3 114.61 18.11 -2.94 0.395 835 -837 3 115.06 17.32 -2.94 0.395 836 -838 3 89.86 22.38 -4.9 0.56 819 -839 3 88.74 25.87 -2.94 0.505 838 -840 3 88.29 29.92 -2.94 0.505 839 -841 3 90.31 33.97 -2.94 0.505 840 -842 3 91.44 38.35 -2.94 0.505 841 -843 3 91.89 43.3 -3.92 0.505 842 -844 3 91.1 45.55 -3.92 0.505 843 -845 3 90.54 49.37 -2.94 0.56 844 -846 3 88.74 53.31 -2.94 0.56 845 -847 3 88.06 58.15 -2.94 0.56 846 -848 3 88.85 62.42 -2.94 0.56 847 -849 3 88.63 67.26 -2.94 0.505 848 -850 3 88.74 69.51 -2.94 0.45 849 -851 3 89.64 73.11 -2.94 0.45 850 -852 3 90.2 77.15 -1.96 0.45 851 -853 3 90.54 80.64 -1.96 0.45 852 -854 3 90.99 84.91 -2.94 0.45 853 -855 3 91.89 89.3 -2.94 0.395 854 -856 3 93.01 93.24 -2.94 0.335 855 -857 3 95.15 96.16 -2.94 0.335 856 -858 3 95.94 97.51 -2.94 0.335 857 -859 3 89.41 44.76 -2.94 0.335 844 -860 3 87.39 42.51 -2.94 0.335 859 -861 3 86.49 41.84 -2.94 0.335 860 -862 3 88.18 8.44 -2.94 0.395 817 -863 3 89.64 6.19 -2.94 0.395 862 -864 3 88.74 2.36 -1.96 0.395 863 -865 3 88.96 0.67 -2.94 0.395 864 -866 3 88.63 -1.24 -2.94 0.395 865 -867 3 89.53 -4.61 -2.94 0.395 866 -868 3 66.47 6.19 -3.92 0.395 812 -869 3 67.81 6.3 -3.92 0.395 868 -870 3 69.95 12.48 -3.92 0.395 869 -871 3 72.43 16.98 -3.92 0.395 870 -872 3 74.23 15.86 -3.92 0.395 871 -873 3 74.34 23.39 -3.92 0.395 872 -874 3 75.69 27.67 -3.92 0.395 873 -875 3 76.48 29.69 -3.92 0.395 874 -876 3 76.7 31.04 -3.92 0.395 875 -877 3 77.04 32.04 -3.92 0.395 876 -878 3 39.7 -5.51 -3.92 0.335 667 -879 3 40.83 -3.37 -3.92 0.335 878 -880 3 40.71 -1.8 -3.92 0.225 879 -881 3 39.7 -0.67 -3.92 0.225 880 -882 3 41.84 -2.92 -3.92 0.225 879 -883 3 43.08 -3.49 -3.92 0.225 882 -884 3 43.64 -3.6 -3.92 0.225 883 -885 3 33.18 -2.14 -3.92 0.56 666 -886 3 33.4 -1.35 -3.92 0.56 885 -887 3 37.11 -0.22 -3.92 0.395 886 -888 3 39.93 2.14 -3.92 0.395 887 -889 3 41.95 3.94 -3.92 0.395 888 -890 3 43.3 4.95 -3.92 0.395 889 -891 3 31.15 1.01 -2.94 0.45 886 -892 3 29.58 2.47 -2.94 0.335 891 -893 3 28.12 3.94 -2.94 0.335 892 -894 3 27.78 4.95 -2.94 0.335 893 -895 3 28.68 -0.67 -3.92 0.45 663 -896 3 34.64 0.34 -4.9 0.45 895 -897 3 39.7 0.79 -3.92 0.45 896 -898 3 40.83 0.67 -3.92 0.45 897 -899 3 43.08 5.29 -3.92 0.45 898 -900 3 45.78 9.22 -2.94 0.45 899 -901 3 48.59 14.28 -2.94 0.395 900 -902 3 49.04 15.86 -2.94 0.395 901 -903 3 48.59 18.32 -2.94 0.395 902 -904 3 48.81 18.89 -2.94 0.395 903 -905 3 47.35 18.89 -1.96 0.28 904 -906 3 51.06 23.17 -2.94 0.45 905 -907 3 57.36 29.24 -2.94 0.45 906 -908 3 64.9 40.85 -3.92 0.45 907 -909 3 64.78 42.2 -3.92 0.45 908 -910 3 43.98 -0.79 -4.9 0.395 898 -911 3 46.11 -1.91 -4.9 0.395 910 -912 3 50.84 -3.15 -4.9 0.395 911 -913 3 58.37 -1.57 -4.9 0.395 912 -914 3 60.73 0.11 -4.9 0.395 913 -915 3 65.68 1.01 -4.9 0.395 914 -916 3 69.17 0.45 -4.9 0.395 915 -917 3 72.31 0.22 -4.9 0.335 916 -918 3 73.22 -0.11 -4.9 0.335 917 -919 3 22.04 -7.99 -4.9 0.73 662 -920 3 23.39 -11.7 -4.9 0.675 919 -921 3 25.42 -14.96 -4.9 0.62 920 -922 3 26.54 -17.43 -4.9 0.62 921 -923 3 25.64 -21.03 -4.9 0.62 922 -924 3 24.18 -25.53 -4.9 0.62 923 -925 3 22.94 -29.13 -4.9 0.62 924 -926 3 25.76 -34.08 -4.9 0.62 925 -927 3 29.13 -37.11 -4.9 0.62 926 -928 3 30.59 -36.67 -3.92 0.395 927 -929 3 31.38 -40.04 -3.92 0.62 928 -930 3 35.99 -43.75 -3.92 0.62 929 -931 3 41.5 -46.9 -3.92 0.62 930 -932 3 46.56 -50.95 -3.92 0.62 931 -933 3 50.72 -54.66 -3.92 0.62 932 -934 3 51.29 -64.02 -3.92 0.62 933 -935 3 49.94 -67.73 -3.92 0.56 934 -936 3 48.59 -70.31 -3.92 0.505 935 -937 3 49.71 -74.59 -3.92 0.505 936 -938 3 51.29 -80.44 -3.92 0.505 937 -939 3 56.24 -83.36 -3.92 0.505 938 -940 3 61.52 -84.6 -3.92 0.505 939 -941 3 66.36 -85.27 -3.92 0.505 940 -942 3 69.84 -85.72 -3.92 0.335 941 -943 3 71.53 -85.72 -3.92 0.335 942 -944 3 73.22 -85.72 -3.92 0.335 943 -945 3 75.47 -86.29 -2.94 0.335 944 -946 3 67.93 -83.48 -3.92 0.335 941 -947 3 68.27 -82.24 -3.92 0.335 946 -948 3 21.37 4.84 -4.9 0.955 661 -949 3 26.43 10.23 -4.9 0.955 948 -950 3 31.49 14.96 -4.9 0.955 949 -951 3 33.29 16.98 -4.9 0.955 950 -952 3 34.64 15.63 -4.9 0.225 951 -953 3 36.44 19.91 -4.9 0.955 952 -954 3 35.77 21.82 -4.9 0.45 953 -955 3 39.93 23.28 -3.92 0.9 954 -956 3 37.34 26.32 -3.92 0.45 955 -957 3 33.97 29.35 -3.92 0.45 956 -958 3 33.07 30.93 -3.92 0.45 957 -959 3 32.5 31.49 -4.9 0.45 958 -960 3 30.48 31.6 -3.92 0.28 959 -961 3 29.13 31.38 -3.92 0.28 960 -962 3 29.8 35.2 -4.9 0.45 959 -963 3 27.11 37.34 -4.9 0.45 962 -964 3 20.92 39.14 -4.9 0.45 963 -965 3 17.55 39.36 -4.9 0.45 964 -966 3 16.07 39.81 -4.9 0.45 965 -967 3 15.3 42.51 -4.9 0.395 966 -968 3 14.85 44.65 -4.9 0.395 967 -969 3 15.3 45.21 -4.9 0.395 968 -970 3 12.03 39.03 -4.9 0.395 966 -971 3 7.54 38.35 -4.9 0.395 970 -972 3 3.15 38.69 -4.9 0.395 971 -973 3 0.67 39.14 -4.9 0.395 972 -974 3 -1.24 39.7 -4.9 0.395 973 -975 3 -2.47 40.26 -4.9 0.395 974 -976 3 43.75 26.54 -3.92 0.73 955 -977 3 49.37 26.21 -3.92 0.56 976 -978 3 52.86 26.21 -3.92 0.56 977 -979 3 58.26 26.09 -3.92 0.56 978 -980 3 63.1 26.77 -3.92 0.56 979 -981 3 67.37 26.88 -3.92 0.56 980 -982 3 71.64 28.34 -3.92 0.56 981 -983 3 75.47 31.6 -3.92 0.56 982 -984 3 77.83 32.95 -3.92 0.56 983 -985 3 86.26 33.4 -3.92 0.56 984 -986 3 89.98 33.52 -3.92 0.56 985 -987 3 94.14 32.95 -3.92 0.505 986 -988 3 98.86 31.6 -3.92 0.45 987 -989 3 100.77 30.93 -3.92 0.45 988 -990 3 101.45 30.37 -3.92 0.45 989 -991 3 44.43 28.01 -3.92 0.73 976 -992 3 38.9 28.79 -3.92 0.45 991 -993 3 37.68 28.34 -3.92 0.45 992 -994 3 37.11 26.99 -3.92 0.335 993 -995 3 36.89 26.21 -3.92 0.335 994 -996 3 33.74 28.23 -3.92 0.395 993 -997 3 32.28 28.01 -3.92 0.395 996 -998 3 33.29 26.99 -3.92 0.335 997 -999 3 33.74 25.98 -3.92 0.335 998 -1000 3 28.34 26.32 -2.94 0.45 997 -1001 3 24.86 25.08 -2.94 0.45 1000 -1002 3 22.72 23.28 -2.94 0.45 1001 -1003 3 20.81 21.48 -2.94 0.45 1002 -1004 3 15.97 19.12 -3.92 0.45 1003 -1005 3 13.61 18.32 -3.92 0.45 1004 -1006 3 12.48 18.32 -3.92 0.45 1005 -1007 3 8.44 17.88 -3.92 0.335 1006 -1008 3 6.19 17.88 -3.92 0.335 1007 -1009 3 4.95 17.77 -3.92 0.335 1008 -1010 3 7.87 15.18 -3.92 0.335 1006 -1011 3 4.26 14.28 -3.92 0.335 1010 -1012 3 1.35 12.37 -3.92 0.335 1011 -1013 3 0.11 11.47 -3.92 0.335 1012 -1014 3 -1.35 10.91 -3.92 0.335 1013 -1015 3 -2.25 10.35 -3.92 0.335 1014 -1016 3 49.37 34.15 -3.92 0.675 991 -1017 3 47.18 36.28 -3.92 0.45 1016 -1018 3 45.89 37.54 -3.92 0.45 1017 -1019 3 41.28 42.15 -3.92 0.45 1018 -1020 3 39.14 43.95 -3.92 0.45 1019 -1021 3 36.89 45.41 -3.92 0.45 1020 -1022 3 36.33 45.75 -3.92 0.45 1021 -1023 3 35.43 44.74 -2.94 0.28 1022 -1024 3 34.19 48.11 -3.92 0.45 1023 -1025 3 30.93 51.48 -3.92 0.45 1024 -1026 3 28.34 52.95 -3.92 0.45 1025 -1027 3 22.49 53.62 -3.92 0.45 1026 -1028 3 20.36 54.97 -3.92 0.45 1027 -1029 3 18.32 55.65 -3.92 0.45 1028 -1030 3 16.2 57.45 -3.92 0.45 1029 -1031 3 16.2 60.48 -3.92 0.45 1030 -1032 3 16.3 63.97 -3.92 0.395 1031 -1033 3 14.96 66.56 -2.94 0.395 1032 -1034 3 12.93 68.02 -2.94 0.395 1033 -1035 3 10.46 69.48 -2.94 0.395 1034 -1036 3 7.65 70.04 -2.94 0.395 1035 -1037 3 5.51 72.18 -2.94 0.395 1036 -1038 3 4.16 80.39 -2.94 0.395 1037 -1039 3 3.82 83.54 -2.94 0.335 1038 -1040 3 3.82 84.21 -3.92 0.335 1039 -1041 3 3.71 84.66 -3.92 0.335 1040 -1042 3 49.94 34.95 -3.92 0.73 1017 -1043 3 49.71 31.01 -3.92 0.505 1042 -1044 3 50.05 27.64 -3.92 0.45 1043 -1045 3 51.74 24.38 -3.92 0.45 1044 -1046 3 55.45 21.68 -3.92 0.45 1045 -1047 3 58.6 18.42 -3.92 0.45 1046 -1048 3 62.08 15.72 -3.92 0.45 1047 -1049 3 64.11 13.24 -3.92 0.45 1048 -1050 3 64.9 10.55 -3.92 0.45 1049 -1051 3 62.98 7.62 -3.92 0.45 1050 -1052 3 61.63 4.01 -4.9 0.45 1051 -1053 3 61.75 1.1 -4.9 0.45 1052 -1054 3 61.52 -0.7 -4.9 0.45 1053 -1055 3 61.52 -1.6 -4.9 0.45 1054 -1056 3 52.3 38.76 -3.92 0.73 1016 -1057 3 52.75 39.65 -3.92 0.73 1056 -1058 3 52.75 41.23 -3.92 0.675 1057 -1059 3 52.75 42.81 -3.92 0.675 1058 -1060 3 53.42 46.63 -3.92 0.675 1059 -1061 3 53.99 50 -3.92 0.675 1060 -1062 3 54.32 51.24 -3.92 0.675 1061 -1063 3 49.6 55.18 -3.92 0.505 1062 -1064 3 46.45 57.31 -3.92 0.505 1063 -1065 3 42.51 59.45 -3.92 0.505 1064 -1066 3 40.04 60.69 -3.92 0.505 1065 -1067 3 39.47 60.91 -3.92 0.505 1066 -1068 3 38.58 64.84 -3.92 0.395 1067 -1069 3 37.34 69.45 -3.92 0.395 1068 -1070 3 36.44 71.37 -2.94 0.395 1069 -1071 3 33.63 73.73 -3.92 0.395 1070 -1072 3 32.28 74.75 -3.92 0.395 1071 -1073 3 31.94 75.08 -3.92 0.395 1072 -1074 3 33.4 80.5 -3.92 0.335 1073 -1075 3 37.45 84.33 -3.92 0.335 1074 -1076 3 42.18 88.04 -2.94 0.28 1075 -1077 3 45.21 90.17 -2.94 0.28 1076 -1078 3 45.89 90.29 -2.94 0.28 1077 -1079 3 46.11 90.51 -2.94 0.28 1078 -1080 3 50.16 88.49 -2.94 0.28 1079 -1081 3 54.89 85.23 -2.94 0.28 1080 -1082 3 60.62 83.54 -2.94 0.28 1081 -1083 3 73.78 86.24 -2.94 0.28 1082 -1084 3 81.43 89.39 -2.94 0.28 1083 -1085 3 85.03 90.51 -2.94 0.28 1084 -1086 3 92.56 93.77 -2.94 0.28 1085 -1087 3 105.72 97.82 -2.94 0.28 1086 -1088 3 110 98.27 -2.94 0.28 1087 -1089 3 113.59 98.83 -2.94 0.28 1088 -1090 3 115.06 98.95 -2.94 0.28 1089 -1091 3 49.6 101.87 -2.94 0.28 1079 -1092 3 49.82 103.33 -2.94 0.28 1091 -1093 3 49.82 104.79 -2.94 0.28 1092 -1094 3 49.82 105.69 -2.94 0.28 1093 -1095 3 36.33 57.76 -3.92 0.45 1067 -1096 3 34.42 55.18 -3.92 0.45 1095 -1097 3 33.18 53.27 -3.92 0.45 1096 -1098 3 33.52 52.14 -3.92 0.45 1097 -1099 3 60.17 58.44 -3.92 0.62 1062 -1100 3 62.2 61.48 -3.92 0.62 1099 -1101 3 67.26 65.3 -3.92 0.62 1100 -1102 3 71.53 70.02 -3.92 0.62 1101 -1103 3 72.31 71.15 -3.92 0.62 1102 -1104 3 71.53 71.81 -3.92 0.395 1103 -1105 3 76.93 74.97 -3.92 0.62 1104 -1106 3 84.58 80.7 -3.92 0.62 1105 -1107 3 88.85 84.53 -2.94 0.62 1106 -1108 3 93.35 91.39 -2.94 0.62 1107 -1109 3 98.86 96.79 -2.94 0.62 1108 -1110 3 103.7 101.85 -2.94 0.62 1109 -1111 3 104.26 102.42 -2.94 0.62 1110 -1112 3 106.17 103.76 -2.94 0.395 1111 -1113 3 107.97 105.11 -2.94 0.395 1112 -1114 3 108.31 105.34 -2.94 0.395 1113 -1115 3 103.92 106.8 -2.94 0.505 1111 -1116 3 103.25 109.5 -2.94 0.505 1115 -1117 3 103.13 110.96 -2.94 0.505 1116 -1118 3 104.71 113.44 -3.92 0.505 1117 -1119 3 107.41 114.9 -3.92 0.505 1118 -1120 3 110.11 115.01 -3.92 0.505 1119 -1121 3 114.04 115.12 -3.92 0.505 1120 -1122 3 115.51 115.12 -3.92 0.505 1121 -1123 3 102.69 113.1 -2.94 0.45 1117 -1124 3 102.24 114.79 -2.94 0.335 1123 -1125 3 101.9 115.57 -2.94 0.335 1124 -1126 3 60.62 67.55 -3.92 0.56 1100 -1127 3 59.95 70.02 -3.92 0.56 1126 -1128 3 59.95 70.47 -3.92 0.56 1127 -1129 3 57.81 69.45 -3.92 0.335 1128 -1130 3 56.01 68.79 -3.92 0.335 1129 -1131 3 54.77 68.34 -3.92 0.335 1130 -1132 3 54.32 68.11 -3.92 0.335 1131 -1133 3 60.06 73.62 -2.94 0.505 1128 -1134 3 61.75 76.43 -2.94 0.505 1133 -1135 3 62.53 79.36 -2.94 0.505 1134 -1136 3 64.67 82.73 -2.94 0.505 1135 -1137 3 67.59 86.22 -2.94 0.505 1136 -1138 3 68.83 87.57 -2.94 0.505 1137 -1139 3 70.18 91.51 -2.94 0.505 1138 -1140 3 70.63 94.77 -2.94 0.505 1139 -1141 3 72.66 98.59 -2.94 0.505 1140 -1142 3 73.11 99.83 -2.94 0.505 1141 -1143 3 76.25 104.1 -2.94 0.505 1142 -1144 3 76.25 106.8 -2.94 0.505 1143 -1145 3 77.48 109.05 -3.92 0.505 1144 -1146 3 79.63 112.54 -3.92 0.505 1145 -1147 3 81.2 114.56 -3.92 0.505 1146 -1148 3 82.1 115.8 -3.92 0.505 1147 -1149 3 45.96 45.9 -3.92 0.335 1058 -1150 3 60.4 41.57 -3.92 0.62 1057 -1151 3 62.87 42.13 -3.92 0.62 1150 -1152 3 65.56 39.88 -3.92 0.45 1151 -1153 3 67.37 39.09 -3.92 0.45 1152 -1154 3 70.73 39.88 -3.92 0.45 1153 -1155 3 73.56 39.43 -3.92 0.45 1154 -1156 3 76.14 38.31 -3.92 0.45 1155 -1157 3 76.59 38.08 -3.92 0.45 1156 -1158 3 77.59 36.61 -3.92 0.28 1157 -1159 3 79.29 35.61 -3.92 0.28 1158 -1160 3 80.42 34.93 -3.92 0.28 1159 -1161 3 80.64 38.31 -3.92 0.505 1157 -1162 3 81.43 38.31 -3.92 0.505 1161 -1163 3 83.12 38.19 -3.92 0.395 1162 -1164 3 84.91 36.72 -3.92 0.395 1163 -1165 3 85.48 36.06 -3.92 0.395 1164 -1166 3 84.02 35.95 -3.92 0.395 1162 -1167 3 85.93 34.47 -3.92 0.395 1166 -1168 3 86.38 33.92 -3.92 0.395 1167 -1169 3 68.16 44.61 -3.92 0.675 1151 -1170 3 69.39 44.83 -3.92 0.675 1169 -1171 3 69.84 47.19 -3.92 0.335 1170 -1172 3 69.95 48.88 -3.92 0.335 1171 -1173 3 75.69 45.84 -3.92 0.73 1170 -1174 3 78.28 46.97 -3.92 0.675 1173 -1175 3 79.4 45.17 -2.94 0.335 1174 -1176 3 83.57 49.67 -3.92 0.675 1175 -1177 3 88.74 52.7 -3.92 0.675 1176 -1178 3 94.59 57.31 -3.92 0.62 1177 -1179 3 96.84 61.59 -3.92 0.62 1178 -1180 3 99.76 67.66 -2.94 0.56 1179 -1181 3 103.25 75.76 -2.94 0.56 1180 -1182 3 107.52 82.28 -3.92 0.56 1181 -1183 3 111.8 87.23 -3.92 0.56 1182 -1184 3 113.26 88.24 -3.92 0.56 1183 -1185 3 115.62 89.26 -3.92 0.56 1184 -1186 3 116.52 89.48 -3.92 0.56 1185 diff --git a/examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc deleted file mode 100644 index 3a7b77c..0000000 --- a/examples/paper-2015/Fig2_elecModels/cells/VHC-neuron.CNG.swc +++ /dev/null @@ -1,3022 +0,0 @@ -# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. -# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. -# -# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc -#The original file has a single soma contour that is averaged into 3 soma points -1 1 0.0 0.0 0.0 8.88119 -1 -2 1 0.35 -8.83 -0.87 8.88119 1 -3 1 -0.35 8.83 0.87 8.88119 1 -4 3 0.67 -4.33 -2.18 2.165 1 -5 3 -0.09 -6.62 -2.34 1.84 4 -6 3 -1.76 -8.01 -2.31 1.405 5 -7 3 -2.97 -8.02 -2.2 1.405 6 -8 3 -3.39 -8.37 -2.2 1.405 7 -9 3 -3.48 -8.5 -2.2 1.405 8 -10 3 -3.53 -8.81 -3.1 1.19 9 -11 3 -3.61 -9.04 -3.55 1.19 10 -12 3 -4.27 -8.08 -3.52 0.11 11 -13 3 -5.31 -7.95 -3.18 0.11 12 -14 3 -5.47 -8.42 -3.21 0.54 13 -15 3 -6.69 -8.42 -3.11 0.54 14 -16 3 -7.0 -7.52 -2.98 0.54 15 -17 3 -8.21 -7.23 -2.84 0.54 16 -18 3 -8.66 -7.68 -2.85 0.54 17 -19 3 -9.28 -8.31 -2.85 0.54 18 -20 3 -9.73 -9.06 -2.88 0.54 19 -21 3 -10.03 -10.29 -2.97 0.54 20 -22 3 -10.03 -10.88 -3.03 0.54 21 -23 3 -10.18 -11.95 -3.12 0.54 22 -24 3 -10.63 -12.42 -3.13 0.54 23 -25 3 -10.94 -13.64 -3.22 0.54 24 -26 3 -11.39 -14.1 -3.22 0.54 25 -27 3 -11.68 -15.01 -3.28 0.54 26 -28 3 -12.22 -15.99 -4.24 0.65 27 -29 3 -12.53 -16.61 -4.26 0.65 28 -30 3 -12.98 -17.36 -4.31 0.65 29 -31 3 -13.66 -18.21 -5.16 0.54 30 -32 3 -14.88 -18.82 -5.11 0.54 31 -33 3 -16.85 -19.3 -4.97 0.54 32 -34 3 -17.61 -20.37 -5.0 0.54 33 -35 3 -17.76 -22.05 -5.16 0.54 34 -36 3 -17.6 -22.81 -5.25 0.54 35 -37 3 -17.44 -24.17 -5.39 0.54 36 -38 3 -17.74 -25.1 -5.45 0.54 37 -39 3 -19.12 -25.86 -5.4 0.54 38 -40 3 -20.94 -25.87 -5.24 0.54 39 -41 3 -22.15 -25.9 -5.05 0.54 40 -42 3 -22.3 -26.96 -5.14 0.54 41 -43 3 -22.29 -27.57 -5.19 0.54 42 -44 3 -22.44 -28.04 -5.22 0.54 43 -45 3 -22.94 -27.75 -6.06 0.435 44 -46 3 -23.25 -28.36 -6.09 0.435 45 -47 3 -23.56 -29.27 -6.23 0.435 46 -48 3 -24.05 -29.99 -6.72 0.435 47 -49 3 -24.86 -30.7 -7.31 0.435 48 -50 3 -26.08 -31.33 -7.26 0.435 49 -51 3 -27.75 -31.18 -7.09 0.435 50 -52 3 -29.32 -31.45 -7.5 0.435 51 -53 3 -30.27 -31.72 -7.89 0.435 52 -54 3 -31.81 -31.43 -7.79 0.435 53 -55 3 -33.73 -30.72 -8.68 0.435 54 -56 3 -34.98 -30.41 -8.84 0.435 55 -57 3 -35.25 -30.43 -10.1 0.54 56 -58 3 -36.17 -31.34 -10.26 0.54 57 -59 3 -37.55 -32.11 -10.29 0.54 58 -60 3 -38.19 -32.68 -10.73 0.54 59 -61 3 -38.5 -33.59 -10.86 0.54 60 -62 3 -39.6 -34.93 -11.27 0.54 61 -63 3 -40.35 -36.61 -11.37 0.54 62 -64 3 -41.27 -37.83 -11.48 0.54 63 -65 3 -41.72 -38.58 -11.59 0.54 64 -66 3 -42.19 -39.04 -11.66 0.54 65 -67 3 -42.37 -39.46 -11.98 0.54 66 -68 3 -42.4 -39.43 -12.36 0.54 67 -69 3 -43.94 -40.64 -12.57 0.54 68 -70 3 -45.25 -41.77 -13.61 0.54 69 -71 3 -46.49 -43.28 -13.86 0.54 70 -72 3 -47.71 -44.49 -13.96 0.54 71 -73 3 -48.47 -45.27 -13.96 0.54 72 -74 3 -49.24 -46.32 -14.14 0.54 73 -75 3 -50.18 -47.81 -14.57 0.54 74 -76 3 -52.32 -49.34 -14.68 0.54 75 -77 3 -53.07 -50.1 -14.68 0.54 76 -78 3 -53.41 -50.69 -15.09 0.54 77 -79 3 -53.87 -51.44 -15.19 0.54 78 -80 3 -54.81 -52.33 -15.5 0.54 79 -81 3 -56.05 -53.53 -15.8 0.54 80 -82 3 -57.73 -54.0 -15.77 0.54 81 -83 3 -59.85 -54.92 -15.66 0.54 82 -84 3 -61.23 -56.61 -15.78 0.54 83 -85 3 -62.89 -58.3 -15.79 0.54 84 -86 3 -66.39 -60.61 -15.69 0.54 85 -87 3 -67.76 -61.99 -15.7 0.54 86 -88 3 -68.97 -63.22 -15.7 0.54 87 -89 3 -71.85 -64.3 -15.55 0.54 88 -90 3 -73.99 -64.64 -15.38 0.54 89 -91 3 -75.81 -64.35 -15.19 0.54 90 -92 3 -79.65 -65.1 -15.35 0.54 91 -93 3 -82.24 -64.37 -15.04 0.54 92 -94 3 -84.53 -64.23 -14.82 0.54 93 -95 3 -86.41 -64.78 -15.39 0.54 94 -96 3 -88.69 -65.57 -15.26 0.54 95 -97 3 -90.98 -66.66 -15.15 0.54 96 -98 3 -92.87 -67.8 -16.07 0.54 97 -99 3 -93.53 -69.89 -16.73 0.54 98 -100 3 -95.82 -71.88 -16.79 0.54 99 -101 3 -96.87 -73.56 -16.87 0.54 100 -102 3 -97.85 -75.31 -17.77 0.54 101 -103 3 -98.47 -76.52 -17.99 0.54 102 -104 3 -98.16 -77.74 -18.06 0.54 103 -105 3 -98.09 -78.42 -17.38 0.54 104 -106 3 -97.89 -79.23 -16.87 0.54 105 -107 3 -98.75 -80.5 -16.54 0.54 106 -108 3 -99.36 -81.41 -16.57 0.54 107 -109 3 -99.32 -83.28 -16.31 0.54 108 -110 3 -100.2 -86.04 -16.34 0.54 109 -111 3 -99.59 -88.77 -16.67 0.54 110 -112 3 -99.27 -90.91 -16.82 0.54 111 -113 3 -98.62 -92.16 -16.55 0.54 112 -114 3 -98.46 -93.83 -16.73 0.54 113 -115 3 -98.58 -94.93 -16.45 0.54 114 -116 3 -98.4 -96.01 -16.42 0.54 115 -117 3 -98.69 -96.93 -16.4 0.54 116 -118 3 -22.3 -29.09 -5.42 0.54 44 -119 3 -21.83 -31.67 -5.72 0.54 118 -120 3 -20.61 -34.99 -6.22 0.54 119 -121 3 -19.89 -36.61 -6.91 0.54 120 -122 3 -19.46 -38.24 -7.56 0.54 121 -123 3 -19.16 -39.45 -7.78 0.54 122 -124 3 -18.65 -40.57 -7.25 0.54 123 -125 3 -17.05 -42.46 -6.82 0.54 124 -126 3 -16.58 -44.14 -6.97 0.54 125 -127 3 -16.87 -45.37 -6.98 0.54 126 -128 3 -16.66 -45.58 -6.26 0.54 127 -129 3 -17.25 -47.1 -6.35 0.54 128 -130 3 -18.32 -47.57 -6.3 0.54 129 -131 3 -19.05 -48.38 -6.01 0.54 130 -132 3 -20.1 -49.46 -5.87 0.54 131 -133 3 -20.55 -51.43 -6.02 0.54 132 -134 3 -21.15 -53.57 -6.17 0.54 133 -135 3 -22.35 -55.72 -6.2 0.54 134 -136 3 -23.41 -57.41 -6.27 0.54 135 -137 3 -24.16 -59.09 -6.36 0.54 136 -138 3 -25.52 -59.88 -6.16 0.54 137 -139 3 -26.42 -60.8 -6.08 0.54 138 -140 3 -27.46 -61.9 -5.8 0.54 139 -141 3 -28.2 -64.21 -5.88 0.54 140 -142 3 -28.5 -66.33 -6.07 0.54 141 -143 3 -29.72 -67.87 -6.1 0.54 142 -144 3 -31.08 -68.64 -6.05 0.54 143 -145 3 -32.76 -70.63 -6.09 0.54 144 -146 3 -33.19 -72.63 -6.16 0.54 145 -147 3 -33.8 -75.05 -6.34 0.54 146 -148 3 -33.71 -76.04 -5.62 0.54 147 -149 3 -35.03 -77.17 -6.74 0.54 148 -150 3 -36.24 -79.02 -6.8 0.54 149 -151 3 -37.19 -80.5 -7.25 0.54 150 -152 3 -37.41 -81.78 -8.26 0.54 151 -153 3 -37.85 -84.68 -8.5 0.54 152 -154 3 -38.77 -88.03 -8.81 0.54 153 -155 3 -38.91 -90.01 -9.0 0.54 154 -156 3 -39.06 -91.68 -9.15 0.54 155 -157 3 -38.76 -93.18 -9.47 0.54 156 -158 3 -38.8 -94.06 -9.93 0.54 157 -159 3 -39.48 -94.59 -10.83 0.54 158 -160 3 -41.17 -96.26 -10.99 0.54 159 -161 3 -41.54 -97.09 -11.87 0.54 160 -162 3 -41.81 -97.74 -13.11 0.54 161 -163 3 -41.84 -99.24 -11.97 0.54 162 -164 3 -42.03 -99.98 -10.67 0.54 163 -165 3 -41.98 -100.61 -10.44 0.54 164 -166 3 -42.73 -102.6 -10.48 0.54 165 -167 3 -42.57 -105.2 -10.68 0.54 166 -168 3 -42.71 -106.56 -10.8 0.54 167 -169 3 -43.6 -108.43 -10.59 0.54 168 -170 3 -44.18 -109.97 -10.46 0.54 169 -171 3 -44.24 -110.81 -9.71 0.54 170 -172 3 -44.24 -112.04 -9.68 0.54 171 -173 3 -44.52 -113.29 -9.54 0.54 172 -174 3 -44.93 -114.69 -9.33 0.54 173 -175 3 -44.89 -116.26 -9.04 0.54 174 -176 3 -44.68 -117.66 -8.75 0.54 175 -177 3 -44.39 -119.19 -8.84 0.54 176 -178 3 -43.91 -120.55 -9.02 0.54 177 -179 3 -43.89 -120.9 -8.69 0.54 178 -180 3 -42.63 -122.13 -8.62 0.54 179 -181 3 -41.35 -123.71 -8.14 0.54 180 -182 3 -40.56 -125.39 -8.29 0.54 181 -183 3 -39.95 -126.59 -8.46 0.54 182 -184 3 -39.34 -128.42 -8.63 0.54 183 -185 3 -38.71 -130.56 -8.81 0.54 184 -186 3 -38.07 -131.8 -8.62 0.54 185 -187 3 -37.6 -132.87 -8.68 0.54 186 -188 3 -37.59 -134.08 -8.74 0.54 187 -189 3 -37.59 -135.0 -8.83 0.54 188 -190 3 -37.43 -135.76 -8.92 0.54 189 -191 3 -36.82 -136.67 -9.06 0.54 190 -192 3 -36.05 -138.64 -9.32 0.54 191 -193 3 -35.9 -140.01 -9.47 0.54 192 -194 3 -36.34 -141.07 -9.54 0.54 193 -195 3 -37.05 -141.51 -9.36 0.435 194 -196 3 -37.96 -142.43 -9.36 0.435 195 -197 3 -39.64 -142.9 -9.25 0.435 196 -198 3 -41.44 -143.55 -9.01 0.435 197 -199 3 -42.34 -144.48 -8.86 0.435 198 -200 3 -43.11 -144.62 -8.95 0.435 199 -201 3 -43.6 -145.36 -9.28 0.435 200 -202 3 -43.94 -145.63 -9.65 0.435 201 -203 3 -44.28 -146.19 -10.13 0.435 202 -204 3 -44.99 -146.71 -11.25 0.435 203 -205 3 -45.66 -147.56 -11.88 0.435 204 -206 3 -45.84 -148.59 -12.34 0.435 205 -207 3 -46.13 -150.11 -12.46 0.435 206 -208 3 -46.59 -151.48 -12.62 0.435 207 -209 3 -46.59 -152.7 -12.74 0.435 208 -210 3 -46.42 -154.06 -12.89 0.435 209 -211 3 -46.6 -154.8 -13.25 0.435 210 -212 3 -46.15 -155.85 -13.47 0.435 211 -213 3 -45.85 -157.07 -13.61 0.435 212 -214 3 -46.02 -157.81 -13.9 0.435 213 -215 3 -46.02 -158.71 -14.14 0.435 214 -216 3 -46.22 -159.72 -14.67 0.435 215 -217 3 -46.53 -160.34 -14.78 0.435 216 -218 3 -46.83 -160.94 -14.81 0.435 217 -219 3 -46.99 -161.4 -14.84 0.435 218 -220 3 -47.04 -161.94 -15.64 0.435 219 -221 3 -47.65 -162.54 -15.73 0.435 220 -222 3 -48.11 -163.01 -15.73 0.435 221 -223 3 -48.42 -163.32 -15.73 0.435 222 -224 3 -48.62 -163.71 -16.28 0.435 223 -225 3 -48.31 -165.22 -16.53 0.435 224 -226 3 -47.25 -165.67 -16.67 0.435 225 -227 3 -3.29 -10.26 -4.74 1.19 10 -228 3 -2.54 -10.99 -5.1 1.08 227 -229 3 -1.93 -11.9 -5.24 0.865 228 -230 3 -1.81 -12.92 -5.81 0.65 229 -231 3 -1.21 -13.83 -5.95 0.65 230 -232 3 -1.2 -14.74 -6.04 0.65 231 -233 3 -1.8 -15.96 -6.11 0.65 232 -234 3 -2.26 -16.71 -6.22 0.65 233 -235 3 -3.79 -17.95 -6.19 0.65 234 -236 3 -4.84 -19.93 -6.3 0.65 235 -237 3 -5.14 -20.55 -6.33 0.435 236 -238 3 -6.2 -22.22 -6.39 0.435 237 -239 3 -6.34 -23.59 -6.51 0.435 238 -240 3 -5.58 -24.95 -6.72 0.435 239 -241 3 -4.67 -27.09 -7.01 0.435 240 -242 3 -4.2 -29.67 -7.3 0.435 241 -243 3 -4.2 -30.88 -7.42 0.435 242 -244 3 -3.89 -32.39 -7.6 0.435 243 -245 3 -2.46 -33.18 -8.94 0.435 244 -246 3 -1.39 -33.63 -9.08 0.435 245 -247 3 -0.03 -34.37 -9.35 0.435 246 -248 3 1.17 -35.88 -9.61 0.435 247 -249 3 2.25 -38.15 -9.94 0.435 248 -250 3 3.18 -40.28 -10.23 0.435 249 -251 3 3.48 -41.49 -10.37 0.435 250 -252 3 4.85 -42.85 -10.63 0.435 251 -253 3 6.49 -42.62 -11.29 0.435 252 -254 3 8.21 -43.42 -12.58 0.435 253 -255 3 9.59 -44.79 -11.18 0.435 254 -256 3 10.7 -45.29 -10.8 0.435 255 -257 3 11.5 -46.08 -10.51 0.435 256 -258 3 11.97 -47.16 -10.5 0.435 257 -259 3 13.08 -48.25 -10.26 0.435 258 -260 3 13.0 -48.78 -9.54 0.435 259 -261 3 12.87 -49.57 -9.46 0.435 260 -262 3 12.76 -50.06 -9.04 0.435 261 -263 3 12.82 -51.04 -8.45 0.435 262 -264 3 13.34 -52.46 -7.97 0.435 263 -265 3 13.53 -52.95 -7.73 0.435 264 -266 3 13.55 -53.89 -7.6 0.435 265 -267 3 13.56 -54.5 -7.58 0.435 266 -268 3 -4.18 -10.16 -2.3 0.755 9 -269 3 -5.4 -11.08 -2.28 0.65 268 -270 3 -6.46 -12.15 -2.28 0.65 269 -271 3 -7.06 -13.68 -2.38 0.65 270 -272 3 -7.51 -15.67 -2.45 0.65 271 -273 3 -7.34 -17.65 -2.66 0.65 272 -274 3 -6.43 -19.76 -2.95 0.65 273 -275 3 -5.66 -21.74 -3.21 0.65 274 -276 3 -5.04 -24.47 -3.53 0.65 275 -277 3 -4.42 -25.98 -3.75 0.65 276 -278 3 -4.72 -27.19 -3.83 0.65 277 -279 3 -5.34 -27.81 -3.84 0.65 278 -280 3 -6.55 -27.83 -3.72 0.65 279 -281 3 -7.47 -29.36 -3.79 0.65 280 -282 3 -7.71 -30.46 -3.88 0.65 281 -283 3 -7.85 -30.94 -2.1 0.435 282 -284 3 -8.31 -31.4 -2.1 0.435 283 -285 3 -8.76 -31.87 -2.1 0.435 284 -286 3 -9.26 -32.27 -2.63 0.435 285 -287 3 -9.8 -32.65 -3.44 0.435 286 -288 3 -10.28 -33.09 -3.67 0.435 287 -289 3 -10.55 -33.42 -3.44 0.435 288 -290 3 -10.84 -33.75 -3.23 0.435 289 -291 3 -10.83 -34.36 -3.22 0.435 290 -292 3 -10.5 -34.69 -3.06 0.435 291 -293 3 -9.99 -35.2 -2.47 0.435 292 -294 3 -9.77 -35.72 -1.86 0.435 293 -295 3 -8.83 -36.34 -1.86 0.435 294 -296 3 -8.98 -37.42 -1.86 0.435 295 -297 3 -9.13 -38.17 -1.92 0.435 296 -298 3 -9.44 -38.79 -1.95 0.435 297 -299 3 -10.19 -39.56 -1.89 0.435 298 -300 3 -10.33 -40.33 -1.88 0.435 299 -301 3 -10.62 -41.25 -1.87 0.435 300 -302 3 -10.93 -41.86 -1.9 0.435 301 -303 3 -11.04 -42.96 -1.61 0.435 302 -304 3 -10.29 -43.39 -3.53 0.435 303 -305 3 -10.28 -44.0 -3.52 0.435 304 -306 3 -7.61 -30.42 -3.89 0.54 282 -307 3 -6.54 -31.79 -4.11 0.54 306 -308 3 -5.85 -33.07 -3.47 0.54 307 -309 3 -6.0 -34.45 -3.59 0.54 308 -310 3 -7.37 -35.22 -3.55 0.54 309 -311 3 -7.21 -37.19 -3.75 0.54 310 -312 3 -6.22 -38.47 -4.87 0.54 311 -313 3 -5.61 -39.97 -5.07 0.54 312 -314 3 -6.21 -41.81 -5.21 0.54 313 -315 3 -5.85 -42.47 -4.77 0.435 314 -316 3 -5.24 -43.37 -4.91 0.435 315 -317 3 -4.62 -45.49 -5.17 0.435 316 -318 3 -4.17 -46.86 -5.35 0.435 317 -319 3 -3.56 -47.46 -5.47 0.435 318 -320 3 -2.5 -47.3 -5.55 0.435 319 -321 3 -1.73 -47.43 -5.72 0.435 320 -322 3 -1.12 -48.96 -5.92 0.435 321 -323 3 -1.58 -50.03 -5.98 0.435 322 -324 3 -1.42 -51.69 -6.15 0.435 323 -325 3 -0.66 -53.05 -6.36 0.435 324 -326 3 0.4 -54.4 -6.66 0.435 325 -327 3 1.17 -55.16 -6.81 0.435 326 -328 3 0.71 -56.23 -6.87 0.435 327 -329 3 0.33 -56.76 -7.79 0.435 328 -330 3 -0.32 -58.22 -8.39 0.435 329 -331 3 -1.38 -59.61 -8.44 0.435 330 -332 3 -1.83 -60.98 -8.53 0.435 331 -333 3 -1.82 -62.5 -8.67 0.435 332 -334 3 -1.82 -64.32 -8.86 0.435 333 -335 3 -1.2 -65.54 -9.03 0.435 334 -336 3 0.0 -66.74 -9.26 0.435 335 -337 3 0.47 -68.12 -9.43 0.435 336 -338 3 0.32 -68.57 -9.46 0.435 337 -339 3 0.01 -69.48 -9.53 0.435 338 -340 3 0.02 -70.4 -9.62 0.435 339 -341 3 0.78 -71.76 -9.82 0.435 340 -342 3 1.7 -72.97 -10.02 0.435 341 -343 3 2.45 -74.0 -10.42 0.435 342 -344 3 1.99 -75.37 -10.59 0.435 343 -345 3 1.98 -75.98 -10.65 0.435 344 -346 3 2.75 -77.03 -10.82 0.435 345 -347 3 3.06 -78.25 -10.97 0.435 346 -348 3 2.76 -78.86 -11.0 0.435 347 -349 3 2.15 -79.78 -11.03 0.435 348 -350 3 2.61 -81.14 -11.21 0.435 349 -351 3 3.98 -81.27 -11.35 0.435 350 -352 3 4.44 -81.73 -11.44 0.435 351 -353 3 4.9 -82.79 -11.58 0.435 352 -354 3 5.05 -84.17 -11.73 0.435 353 -355 3 5.11 -85.41 -13.06 0.435 354 -356 3 4.51 -86.03 -13.07 0.435 355 -357 3 4.05 -87.08 -13.13 0.435 356 -358 3 5.87 -87.99 -13.39 0.435 357 -359 3 6.94 -89.34 -13.62 0.435 358 -360 3 7.26 -89.66 -15.19 0.435 359 -361 3 7.41 -90.71 -15.31 0.435 360 -362 3 7.27 -91.78 -15.4 0.435 361 -363 3 6.96 -92.39 -15.43 0.435 362 -364 3 6.97 -93.61 -15.55 0.435 363 -365 3 7.89 -94.51 -15.72 0.435 364 -366 3 8.9 -95.81 -16.63 0.435 365 -367 3 9.5 -97.01 -16.87 0.435 366 -368 3 9.78 -97.89 -17.28 0.435 367 -369 3 10.05 -99.68 -17.87 0.435 368 -370 3 10.22 -101.04 -18.02 0.435 369 -371 3 11.12 -101.33 -18.2 0.435 370 -372 3 12.8 -101.77 -18.4 0.435 371 -373 3 13.56 -102.83 -18.57 0.435 372 -374 3 13.72 -104.5 -18.75 0.435 373 -375 3 14.47 -105.55 -19.0 0.435 374 -376 3 15.39 -106.77 -19.2 0.435 375 -377 3 16.61 -108.57 -19.48 0.435 376 -378 3 17.38 -110.24 -19.72 0.435 377 -379 3 18.45 -112.52 -20.04 0.435 378 -380 3 19.52 -114.78 -20.36 0.435 379 -381 3 21.03 -116.57 -20.9 0.435 380 -382 3 21.89 -118.02 -21.88 0.435 381 -383 3 22.81 -119.53 -22.12 0.435 382 -384 3 24.02 -120.73 -22.34 0.435 383 -385 3 25.54 -121.63 -22.57 0.435 384 -386 3 27.84 -123.58 -22.97 0.435 385 -387 3 29.06 -125.1 -23.23 0.435 386 -388 3 28.92 -127.99 -23.5 0.435 387 -389 3 29.37 -129.34 -23.68 0.435 388 -390 3 29.07 -130.27 -23.81 0.435 389 -391 3 30.9 -131.15 -24.06 0.435 390 -392 3 31.66 -132.83 -24.3 0.435 391 -393 3 32.58 -134.34 -24.53 0.435 392 -394 3 33.65 -135.38 -24.73 0.435 393 -395 3 33.96 -136.6 -24.88 0.435 394 -396 3 35.33 -138.86 -25.23 0.435 395 -397 3 35.84 -140.11 -25.48 0.435 396 -398 3 36.6 -141.17 -25.65 0.435 397 -399 3 37.52 -142.08 -25.82 0.435 398 -400 3 39.34 -142.96 -26.08 0.435 399 -401 3 40.03 -144.86 -27.15 0.435 400 -402 3 40.8 -146.82 -27.42 0.435 401 -403 3 42.11 -148.41 -28.45 0.435 402 -404 3 42.11 -149.32 -28.54 0.435 403 -405 3 42.07 -149.87 -29.12 0.435 404 -406 3 42.82 -151.24 -29.39 0.435 405 -407 3 44.05 -151.83 -29.57 0.435 406 -408 3 45.05 -152.2 -30.46 0.435 407 -409 3 45.07 -152.83 -31.95 0.435 408 -410 3 44.94 -153.0 -33.4 0.435 409 -411 3 45.09 -154.36 -33.54 0.435 410 -412 3 46.16 -156.02 -33.87 0.435 411 -413 3 47.23 -157.98 -34.17 0.435 412 -414 3 49.06 -160.71 -34.6 0.435 413 -415 3 49.67 -162.22 -34.8 0.435 414 -416 3 50.75 -162.66 -34.94 0.435 415 -417 3 51.97 -163.86 -35.17 0.435 416 -418 3 52.73 -165.53 -35.49 0.435 417 -419 3 53.95 -166.73 -35.79 0.435 418 -420 3 56.12 -167.07 -37.08 0.435 419 -421 3 57.77 -167.77 -37.76 0.435 420 -422 3 59.29 -169.59 -38.07 0.435 421 -423 3 60.21 -170.79 -38.27 0.435 422 -424 3 61.11 -171.07 -38.53 0.435 423 -425 3 61.46 -172.32 -39.9 0.435 424 -426 3 61.73 -172.88 -40.37 0.435 425 -427 3 61.98 -174.03 -41.25 0.435 426 -428 3 62.36 -175.0 -42.21 0.435 427 -429 3 62.89 -176.75 -43.26 0.435 428 -430 3 63.65 -178.11 -43.54 0.435 429 -431 3 64.27 -179.61 -43.75 0.435 430 -432 3 64.73 -180.38 -43.87 0.435 431 -433 3 65.79 -181.11 -44.04 0.435 432 -434 3 66.86 -181.57 -44.18 0.435 433 -435 3 68.38 -180.94 -44.26 0.435 434 -436 3 68.69 -180.64 -44.26 0.435 435 -437 3 68.53 -180.47 -46.04 0.435 436 -438 3 68.0 -179.64 -46.59 0.435 437 -439 3 -7.29 -42.58 -5.25 0.435 314 -440 3 -8.04 -43.04 -5.22 0.435 439 -441 3 -9.1 -45.63 -5.38 0.435 440 -442 3 -7.72 -48.2 -5.76 0.435 441 -443 3 -7.1 -50.64 -6.05 0.435 442 -444 3 -7.7 -51.86 -6.05 0.435 443 -445 3 -9.02 -52.67 -5.62 0.435 444 -446 3 -9.47 -53.15 -5.47 0.435 445 -447 3 -10.07 -53.77 -5.41 0.435 446 -448 3 -9.61 -54.83 -5.55 0.435 447 -449 3 -9.46 -55.59 -5.64 0.435 448 -450 3 -10.07 -56.21 -5.65 0.435 449 -451 3 -11.44 -56.36 -5.54 0.435 450 -452 3 -12.35 -57.28 -5.54 0.435 451 -453 3 -12.49 -57.74 -5.57 0.435 452 -454 3 -12.6 -58.26 -5.08 0.435 453 -455 3 -12.59 -59.47 -5.19 0.435 454 -456 3 -12.13 -61.45 -5.36 0.435 455 -457 3 -12.12 -62.66 -5.48 0.435 456 -458 3 -13.18 -63.13 -5.43 0.435 457 -459 3 -13.79 -64.05 -5.46 0.435 458 -460 3 -14.7 -65.88 -5.56 0.435 459 -461 3 -14.54 -67.86 -5.76 0.435 460 -462 3 -14.05 -69.56 -5.67 0.435 461 -463 3 -13.28 -70.32 -5.73 0.435 462 -464 3 -12.67 -71.52 -5.92 0.435 463 -465 3 -12.66 -72.75 -6.03 0.435 464 -466 3 -12.95 -73.97 -6.05 0.435 465 -467 3 -12.96 -75.19 -6.17 0.435 466 -468 3 -13.05 -75.7 -5.67 0.435 467 -469 3 -13.36 -76.3 -5.71 0.435 468 -470 3 -13.35 -76.61 -5.67 0.435 469 -471 3 -13.8 -77.68 -5.73 0.435 470 -472 3 -4.13 -8.82 -3.75 0.11 8 -473 3 -5.04 -9.14 -3.56 0.11 472 -474 3 -5.17 -9.91 -3.62 0.11 473 -475 3 -5.4 -9.38 -4.23 0.65 474 -476 3 -6.03 -9.39 -4.32 0.65 475 -477 3 -7.57 -9.66 -4.59 0.65 476 -478 3 -9.11 -9.96 -4.69 0.65 477 -479 3 -11.24 -10.59 -4.56 0.65 478 -480 3 -13.07 -11.2 -4.52 0.65 479 -481 3 -14.78 -12.25 -4.85 0.65 480 -482 3 -15.69 -13.17 -4.93 0.54 481 -483 3 -16.79 -14.8 -5.44 0.54 482 -484 3 -17.3 -15.82 -6.03 0.54 483 -485 3 -17.49 -16.53 -6.61 0.54 484 -486 3 -18.03 -16.92 -7.43 0.54 485 -487 3 -18.49 -17.35 -7.58 0.54 486 -488 3 -20.18 -16.91 -7.45 0.54 487 -489 3 -22.02 -17.51 -7.64 0.54 488 -490 3 -23.12 -17.93 -7.96 0.54 489 -491 3 -24.34 -18.55 -7.9 0.54 490 -492 3 -25.12 -18.67 -9.82 0.54 491 -493 3 -25.19 -19.23 -10.54 0.54 492 -494 3 -25.88 -18.84 -11.35 0.54 493 -495 3 -27.71 -17.94 -11.09 0.54 494 -496 3 -28.76 -18.42 -10.97 0.54 495 -497 3 -29.45 -18.34 -11.73 0.54 496 -498 3 -31.51 -17.81 -12.39 0.54 497 -499 3 -33.03 -18.12 -12.35 0.54 498 -500 3 -35.21 -17.8 -12.65 0.54 499 -501 3 -37.66 -17.18 -12.52 0.54 500 -502 3 -40.65 -16.07 -13.04 0.54 501 -503 3 -41.66 -16.27 -14.1 0.54 502 -504 3 -43.19 -16.58 -14.07 0.54 503 -505 3 -46.23 -17.82 -13.91 0.54 504 -506 3 -49.43 -18.6 -13.84 0.54 505 -507 3 -52.13 -18.96 -14.91 0.54 506 -508 3 -54.57 -19.28 -14.71 0.54 507 -509 3 -57.24 -18.15 -15.33 0.54 508 -510 3 -60.0 -18.47 -15.2 0.54 509 -511 3 -60.98 -18.7 -15.96 0.54 510 -512 3 -61.98 -18.92 -16.94 0.54 511 -513 3 -63.16 -19.26 -18.08 0.54 512 -514 3 -63.47 -19.57 -18.16 0.54 513 -515 3 -64.11 -20.15 -18.53 0.54 514 -516 3 -64.76 -20.11 -18.92 0.54 515 -517 3 -65.52 -20.87 -18.92 0.54 516 -518 3 -65.65 -21.05 -20.29 0.54 517 -519 3 -65.8 -21.49 -20.48 0.54 518 -520 3 -66.24 -21.66 -21.89 0.54 519 -521 3 -66.09 -21.81 -21.84 0.54 520 -522 3 -65.97 -21.94 -22.24 0.54 521 -523 3 -66.03 -21.87 -22.91 0.54 522 -524 3 -65.79 -22.1 -23.72 0.54 523 -525 3 -65.66 -22.21 -24.11 0.54 524 -526 3 -65.56 -22.92 -24.72 0.54 525 -527 3 -65.5 -23.29 -25.67 0.54 526 -528 3 -65.7 -23.68 -26.37 0.54 527 -529 3 -65.88 -24.11 -26.69 0.54 528 -530 3 -65.95 -24.34 -27.47 0.54 529 -531 3 -66.0 -24.89 -28.04 0.54 530 -532 3 -66.14 -24.75 -29.53 0.54 531 -533 3 -66.17 -25.01 -30.08 0.54 532 -534 3 -66.41 -25.36 -31.07 0.54 533 -535 3 -66.47 -25.93 -31.66 0.54 534 -536 3 -67.13 -26.47 -32.33 0.54 535 -537 3 -67.32 -26.9 -32.73 0.54 536 -538 3 -67.71 -27.11 -33.62 0.54 537 -539 3 -68.11 -27.31 -34.74 0.54 538 -540 3 -68.29 -27.74 -35.07 0.54 539 -541 3 -68.48 -28.16 -35.55 0.54 540 -542 3 -68.82 -29.04 -35.97 0.54 541 -543 3 -65.85 -20.54 -20.83 0.54 517 -544 3 -66.61 -20.69 -20.77 0.54 543 -545 3 -68.01 -20.83 -20.97 0.54 544 -546 3 -69.3 -20.45 -21.72 0.54 545 -547 3 -71.02 -20.27 -21.99 0.54 546 -548 3 -71.91 -20.3 -23.28 0.54 547 -549 3 -73.47 -20.56 -23.68 0.54 548 -550 3 -75.26 -20.3 -24.77 0.54 549 -551 3 -77.1 -20.02 -24.66 0.54 550 -552 3 -78.96 -19.68 -24.82 0.54 551 -553 3 -80.73 -19.46 -25.63 0.54 552 -554 3 -82.71 -20.23 -25.59 0.54 553 -555 3 -84.53 -20.25 -25.42 0.54 554 -556 3 -86.26 -19.76 -25.75 0.54 555 -557 3 -87.79 -18.56 -25.49 0.54 556 -558 3 -89.16 -17.5 -25.26 0.54 557 -559 3 -90.21 -17.06 -25.04 0.54 558 -560 3 -92.19 -16.62 -24.81 0.54 559 -561 3 -93.6 -16.14 -25.02 0.54 560 -562 3 -94.25 -15.81 -25.3 0.54 561 -563 3 -96.38 -14.92 -25.02 0.54 562 -564 3 -24.5 -18.09 -7.92 0.54 491 -565 3 -26.66 -18.39 -8.06 0.54 564 -566 3 -28.03 -19.16 -8.08 0.54 565 -567 3 -29.48 -19.84 -8.99 0.54 566 -568 3 -29.94 -20.9 -9.13 0.54 567 -569 3 -30.25 -21.2 -9.13 0.54 568 -570 3 -31.18 -21.5 -7.63 0.54 569 -571 3 -32.1 -21.52 -7.55 0.54 570 -572 3 -34.69 -21.09 -7.28 0.54 571 -573 3 -38.04 -20.2 -6.96 0.54 572 -574 3 -40.66 -19.74 -6.9 0.54 573 -575 3 -41.28 -20.34 -7.05 0.54 574 -576 3 -43.0 -20.75 -7.53 0.54 575 -577 3 -43.16 -20.9 -7.68 0.54 576 -578 3 -43.07 -21.29 -6.75 0.54 577 -579 3 -43.92 -21.67 -5.95 0.54 578 -580 3 -45.55 -22.49 -5.42 0.54 579 -581 3 -47.53 -23.89 -5.38 0.54 580 -582 3 -49.35 -23.9 -5.14 0.54 581 -583 3 -52.08 -25.15 -5.0 0.54 582 -584 3 -53.9 -26.08 -4.92 0.54 583 -585 3 -55.41 -27.31 -4.77 0.54 584 -586 3 -57.2 -27.98 -4.36 0.54 585 -587 3 -59.45 -28.48 -3.9 0.54 586 -588 3 -61.09 -28.99 -3.41 0.54 587 -589 3 -63.5 -29.65 -2.96 0.54 588 -590 3 -65.78 -29.51 -2.73 0.54 589 -591 3 -69.56 -29.72 -2.18 0.54 590 -592 3 -71.53 -29.6 -1.84 0.54 591 -593 3 -73.15 -29.53 -0.99 0.54 592 -594 3 -73.43 -30.78 -0.87 0.54 593 -595 3 -74.0 -31.43 -0.5 0.54 594 -596 3 -76.57 -30.69 -0.12 0.54 595 -597 3 -79.45 -31.49 0.14 0.54 596 -598 3 -81.74 -31.97 0.31 0.54 597 -599 3 -84.31 -32.46 0.65 0.54 598 -600 3 -85.67 -33.25 0.84 0.54 599 -601 3 -87.01 -33.45 1.25 0.54 600 -602 3 -89.27 -33.94 1.64 0.54 601 -603 3 -90.76 -34.9 1.98 0.54 602 -604 3 -92.58 -36.14 2.12 0.54 603 -605 3 -93.74 -36.8 2.6 0.54 604 -606 3 -96.02 -37.9 2.78 0.54 605 -607 3 -96.78 -38.67 2.78 0.54 606 -608 3 -30.41 -22.58 -9.26 0.54 569 -609 3 -31.31 -24.71 -9.38 0.54 608 -610 3 -32.21 -26.85 -9.5 0.54 609 -611 3 -32.21 -28.06 -9.63 0.54 610 -612 3 -32.23 -28.94 -10.01 0.54 611 -613 3 -32.43 -29.97 -10.55 0.54 612 -614 3 -33.03 -31.18 -10.68 0.54 613 -615 3 -33.72 -32.01 -11.69 0.54 614 -616 3 -34.8 -32.47 -11.71 0.54 615 -617 3 -35.85 -33.55 -11.71 0.54 616 -618 3 -36.47 -34.77 -11.77 0.54 617 -619 3 -36.15 -36.29 -11.95 0.54 618 -620 3 -36.42 -36.55 -11.96 0.54 619 -621 3 -36.57 -37.32 -10.35 0.65 620 -622 3 -36.91 -37.59 -10.73 0.65 621 -623 3 -37.01 -37.49 -11.77 0.65 622 -624 3 -37.15 -37.96 -10.06 0.65 623 -625 3 -37.58 -38.45 -9.76 0.65 624 -626 3 -38.43 -38.82 -9.11 0.65 625 -627 3 -38.88 -39.29 -9.04 0.65 626 -628 3 -39.78 -39.01 -8.85 0.65 627 -629 3 -40.55 -38.86 -8.77 0.54 628 -630 3 -41.77 -38.87 -8.65 0.54 629 -631 3 -42.51 -39.64 -8.51 0.54 630 -632 3 -43.42 -40.58 -8.45 0.54 631 -633 3 -43.39 -42.11 -8.45 0.54 632 -634 3 -43.69 -42.74 -8.4 0.54 633 -635 3 -44.43 -43.52 -8.19 0.54 634 -636 3 -45.94 -43.85 -8.0 0.54 635 -637 3 -47.62 -43.72 -7.76 0.54 636 -638 3 -48.63 -44.23 -7.27 0.54 637 -639 3 -49.35 -45.04 -6.76 0.54 638 -640 3 -50.21 -45.4 -6.26 0.54 639 -641 3 -50.79 -46.05 -5.96 0.54 640 -642 3 -51.85 -47.74 -5.94 0.54 641 -643 3 -53.06 -48.36 -5.9 0.54 642 -644 3 -54.11 -49.45 -5.69 0.54 643 -645 3 -55.62 -50.38 -5.63 0.54 644 -646 3 -56.5 -51.33 -5.34 0.54 645 -647 3 -57.4 -51.64 -5.21 0.54 646 -648 3 -59.23 -50.75 -4.95 0.54 647 -649 3 -59.97 -51.54 -4.75 0.54 648 -650 3 -61.03 -52.62 -4.67 0.54 649 -651 3 -62.84 -53.27 -4.34 0.54 650 -652 3 -63.74 -54.5 -4.3 0.54 651 -653 3 -64.65 -55.42 -4.31 0.54 652 -654 3 -65.71 -55.88 -4.26 0.54 653 -655 3 -67.38 -55.75 -4.09 0.54 654 -656 3 -69.97 -56.54 -3.92 0.54 655 -657 3 -71.02 -58.52 -4.02 0.54 656 -658 3 -71.77 -59.29 -3.96 0.54 657 -659 3 -71.92 -60.98 -4.11 0.54 658 -660 3 -72.07 -62.04 -4.19 0.54 659 -661 3 -72.51 -62.82 -4.0 0.54 660 -662 3 -74.79 -62.7 -3.7 0.54 661 -663 3 -76.29 -63.03 -3.52 0.54 662 -664 3 -76.89 -63.65 -3.38 0.54 663 -665 3 -77.75 -64.63 -2.87 0.54 664 -666 3 -78.35 -65.25 -2.79 0.54 665 -667 3 -79.26 -66.17 -2.79 0.54 666 -668 3 -80.78 -66.49 -2.61 0.54 667 -669 3 -81.84 -67.57 -2.63 0.54 668 -670 3 -82.9 -68.64 -2.63 0.54 669 -671 3 -85.03 -68.97 -2.46 0.54 670 -672 3 -86.1 -70.04 -2.47 0.54 671 -673 3 -87.15 -70.52 -2.34 0.54 672 -674 3 -87.87 -71.62 -2.08 0.54 673 -675 3 -88.17 -71.94 -1.93 0.54 674 -676 3 -88.62 -72.4 -1.93 0.54 675 -677 3 -89.21 -73.02 -1.87 0.54 676 -678 3 -90.59 -73.18 -1.75 0.54 677 -679 3 -92.27 -73.35 -1.62 0.54 678 -680 3 -93.03 -74.13 -1.63 0.54 679 -681 3 -93.63 -74.73 -1.63 0.54 680 -682 3 -94.37 -75.52 -1.49 0.54 681 -683 3 -94.98 -76.74 -1.47 0.54 682 -684 3 -95.28 -77.66 -1.53 0.54 683 -685 3 -95.57 -78.28 -1.49 0.54 684 -686 3 -96.18 -79.2 -1.53 0.54 685 -687 3 -96.63 -79.96 -1.56 0.54 686 -688 3 -98.31 -79.81 -1.39 0.54 687 -689 3 -99.52 -79.83 -1.28 0.54 688 -690 3 -100.5 -80.4 -0.26 0.65 689 -691 3 -101.37 -81.06 0.2 0.65 690 -692 3 -101.93 -81.71 0.64 0.65 691 -693 3 -104.5 -82.22 1.12 0.65 692 -694 3 -107.38 -82.71 1.34 0.65 693 -695 3 -108.58 -83.33 1.48 0.65 694 -696 3 -110.26 -84.42 1.53 0.435 695 -697 3 -112.24 -84.59 1.69 0.435 696 -698 3 -113.74 -84.92 1.94 0.435 697 -699 3 -115.1 -86.3 2.09 0.435 698 -700 3 -115.4 -86.62 2.09 0.65 699 -701 3 -116.47 -87.09 2.14 0.65 700 -702 3 -117.67 -88.32 2.2 0.65 701 -703 3 -118.11 -89.99 2.08 0.65 702 -704 3 -117.51 -90.91 1.93 0.65 703 -705 3 -116.44 -91.96 1.81 0.65 704 -706 3 -116.38 -93.84 2.08 0.65 705 -707 3 -116.38 -94.75 2.06 0.65 706 -708 3 -116.66 -95.39 2.17 0.65 707 -709 3 -116.82 -95.84 2.22 0.65 708 -710 3 -117.38 -95.88 2.65 0.65 709 -711 3 -117.21 -97.57 2.55 0.65 710 -712 3 -117.31 -98.69 3.06 0.65 711 -713 3 -117.87 -99.35 3.56 0.65 712 -714 3 -118.31 -99.82 3.64 0.65 713 -715 3 -119.48 -99.89 4.34 0.65 714 -716 3 -119.79 -100.19 4.34 0.65 715 -717 3 -120.37 -100.84 4.64 0.65 716 -718 3 -121.26 -101.77 4.78 0.65 717 -719 3 -121.57 -102.09 4.78 0.65 718 -720 3 -122.02 -102.54 4.78 0.65 719 -721 3 -123.54 -102.26 5.02 0.65 720 -722 3 -124.3 -102.42 5.07 0.65 721 -723 3 -124.59 -102.74 5.14 0.65 722 -724 3 -124.74 -103.2 5.11 0.65 723 -725 3 -36.35 -37.31 -10.9 0.54 620 -726 3 -35.82 -37.83 -10.25 0.54 725 -727 3 -35.54 -38.11 -10.45 0.54 726 -728 3 -35.25 -38.41 -9.06 0.54 727 -729 3 -34.88 -38.78 -8.38 0.54 728 -730 3 -34.45 -39.82 -7.17 0.54 729 -731 3 -34.43 -40.75 -7.11 0.54 730 -732 3 -34.99 -42.63 -6.71 0.54 731 -733 3 -35.37 -44.07 -6.05 0.54 732 -734 3 -35.66 -44.7 -5.94 0.54 733 -735 3 -35.61 -45.35 -5.55 0.54 734 -736 3 -35.72 -46.45 -5.27 0.54 735 -737 3 -36.02 -47.07 -5.22 0.54 736 -738 3 -36.42 -47.6 -4.63 0.54 737 -739 3 -36.87 -48.68 -4.55 0.54 738 -740 3 -37.46 -49.3 -4.4 0.54 739 -741 3 -37.74 -49.94 -4.22 0.54 740 -742 3 -38.08 -51.13 -3.09 0.54 741 -743 3 -37.89 -52.21 -2.84 0.54 742 -744 3 -38.14 -53.2 -2.31 0.54 743 -745 3 -38.38 -54.17 -1.7 0.54 744 -746 3 -38.36 -55.11 -1.64 0.54 745 -747 3 -38.5 -55.57 -1.52 0.54 746 -748 3 -38.49 -55.89 -1.4 0.54 747 -749 3 -38.75 -56.54 -1.06 0.54 748 -750 3 -39.46 -57.36 -0.54 0.54 749 -751 3 -40.96 -57.7 -0.14 0.54 750 -752 3 -42.01 -57.87 0.0 0.54 751 -753 3 -42.45 -58.35 0.23 0.54 752 -754 3 -43.05 -58.98 0.29 0.54 753 -755 3 6.7 -3.75 -5.33 0.865 1 -756 3 7.16 -4.21 -5.41 0.865 755 -757 3 8.22 -4.04 -5.49 0.865 756 -758 3 9.44 -4.63 -5.66 0.865 757 -759 3 10.51 -5.08 -5.81 0.865 758 -760 3 11.58 -6.45 -6.04 0.865 759 -761 3 12.35 -7.2 -6.18 0.54 760 -762 3 14.62 -7.02 -6.37 0.54 761 -763 3 16.16 -7.01 -6.52 0.54 762 -764 3 16.73 -7.29 -5.23 0.54 763 -765 3 17.34 -7.28 -5.29 0.54 764 -766 3 18.42 -6.85 -3.46 0.54 765 -767 3 19.63 -5.01 -3.39 0.54 766 -768 3 20.89 -4.13 -4.55 0.54 767 -769 3 22.56 -3.66 -4.66 0.54 768 -770 3 23.48 -3.35 -4.72 0.54 769 -771 3 24.39 -2.42 -4.71 0.54 770 -772 3 25.0 -1.82 -4.71 0.54 771 -773 3 27.48 -1.23 -6.0 0.54 772 -774 3 29.0 -1.51 -6.17 0.54 773 -775 3 29.91 -0.59 -6.17 0.54 774 -776 3 31.13 0.63 -6.16 0.54 775 -777 3 32.73 1.79 -6.95 0.54 776 -778 3 34.85 3.33 -7.0 0.54 777 -779 3 36.38 4.25 -7.05 0.54 778 -780 3 39.25 5.95 -7.15 0.54 779 -781 3 41.7 6.88 -7.28 0.54 780 -782 3 44.17 7.47 -8.52 0.54 781 -783 3 45.54 7.95 -8.75 0.54 782 -784 3 46.67 8.34 -7.98 0.54 783 -785 3 48.22 8.32 -7.82 0.54 784 -786 3 49.47 8.61 -7.53 0.54 785 -787 3 50.45 8.24 -6.98 0.54 786 -788 3 52.97 7.87 -6.34 0.54 787 -789 3 54.85 8.43 -5.78 0.54 788 -790 3 56.74 8.68 -5.18 0.54 789 -791 3 58.14 9.43 -5.0 0.54 790 -792 3 59.39 9.7 -4.63 0.54 791 -793 3 60.79 10.44 -4.32 0.54 792 -794 3 62.66 10.41 -4.04 0.54 793 -795 3 65.9 10.85 -3.76 0.54 794 -796 3 18.25 -7.88 -5.43 0.54 765 -797 3 19.2 -8.81 -5.31 0.54 796 -798 3 19.5 -10.04 -5.37 0.54 797 -799 3 19.68 -10.81 -5.32 0.54 798 -800 3 21.72 -13.13 -5.06 0.54 799 -801 3 23.56 -14.94 -5.4 0.54 800 -802 3 24.81 -16.17 -5.41 0.54 801 -803 3 26.03 -18.3 -5.59 0.54 802 -804 3 26.38 -18.96 -5.23 0.54 803 -805 3 26.56 -19.43 -5.06 0.54 804 -806 3 26.58 -20.67 -5.03 0.54 805 -807 3 26.88 -21.57 -5.14 0.54 806 -808 3 27.2 -22.79 -5.22 0.54 807 -809 3 27.99 -23.57 -5.13 0.54 808 -810 3 29.55 -24.49 -4.99 0.54 809 -811 3 31.08 -24.2 -5.03 0.54 810 -812 3 33.23 -23.6 -4.79 0.54 811 -813 3 34.92 -24.35 -4.94 0.54 812 -814 3 36.3 -25.12 -4.99 0.54 813 -815 3 37.35 -25.55 -5.28 0.54 814 -816 3 38.39 -25.36 -5.66 0.54 815 -817 3 39.69 -25.1 -6.6 0.54 816 -818 3 41.21 -25.7 -6.8 0.54 817 -819 3 41.11 -26.5 -8.07 0.435 818 -820 3 41.28 -26.98 -7.9 0.435 819 -821 3 41.37 -27.36 -8.7 0.435 820 -822 3 41.43 -27.72 -9.65 0.435 821 -823 3 41.51 -28.11 -10.53 0.435 822 -824 3 41.7 -28.58 -11.96 0.435 823 -825 3 43.52 -30.38 -12.38 0.435 824 -826 3 44.59 -31.74 -12.61 0.435 825 -827 3 45.81 -34.47 -13.0 0.435 826 -828 3 48.56 -36.26 -13.42 0.435 827 -829 3 49.79 -38.08 -13.71 0.435 828 -830 3 50.69 -39.29 -13.91 0.435 829 -831 3 50.1 -40.51 -13.97 0.435 830 -832 3 47.97 -41.44 -13.87 0.435 831 -833 3 47.06 -42.66 -13.91 0.435 832 -834 3 47.67 -44.48 -14.14 0.435 833 -835 3 49.35 -44.92 -14.33 0.435 834 -836 3 50.37 -45.02 -14.96 0.435 835 -837 3 50.05 -46.22 -15.28 0.435 836 -838 3 49.9 -47.27 -15.45 0.435 837 -839 3 49.75 -49.25 -15.62 0.435 838 -840 3 49.75 -50.47 -15.74 0.435 839 -841 3 49.59 -51.52 -15.98 0.435 840 -842 3 49.53 -52.98 -16.73 0.435 841 -843 3 49.98 -54.33 -17.05 0.435 842 -844 3 50.87 -55.81 -17.58 0.435 843 -845 3 51.79 -57.63 -17.85 0.435 844 -846 3 52.1 -59.75 -18.15 0.435 845 -847 3 52.26 -62.03 -18.38 0.435 846 -848 3 52.85 -62.92 -18.67 0.435 847 -849 3 53.77 -63.52 -18.91 0.435 848 -850 3 54.58 -65.83 -20.41 0.435 849 -851 3 54.57 -67.64 -20.66 0.435 850 -852 3 54.7 -69.58 -21.25 0.435 851 -853 3 54.93 -71.32 -22.26 0.435 852 -854 3 56.08 -72.45 -23.31 0.435 853 -855 3 57.4 -74.07 -24.12 0.435 854 -856 3 58.83 -75.75 -25.63 0.435 855 -857 3 61.87 -78.15 -26.21 0.435 856 -858 3 63.91 -79.24 -27.57 0.435 857 -859 3 66.44 -81.15 -28.52 0.435 858 -860 3 67.97 -82.65 -28.87 0.435 859 -861 3 68.9 -84.76 -29.17 0.435 860 -862 3 70.27 -86.12 -29.43 0.435 861 -863 3 72.7 -86.41 -29.68 0.435 862 -864 3 74.37 -87.44 -30.09 0.435 863 -865 3 76.32 -89.68 -30.79 0.435 864 -866 3 77.64 -91.58 -31.71 0.435 865 -867 3 77.81 -92.34 -33.31 0.435 866 -868 3 78.38 -93.21 -33.98 0.435 867 -869 3 79.18 -94.29 -35.44 0.435 868 -870 3 80.02 -95.42 -36.38 0.435 869 -871 3 79.7 -97.22 -36.84 0.435 870 -872 3 79.68 -100.23 -37.49 0.435 871 -873 3 81.27 -104.22 -39.09 0.435 872 -874 3 82.94 -106.47 -39.54 0.435 873 -875 3 84.3 -108.12 -39.98 0.435 874 -876 3 84.22 -110.15 -41.09 0.435 875 -877 3 83.92 -111.99 -41.3 0.435 876 -878 3 83.01 -114.72 -41.57 0.435 877 -879 3 83.16 -115.79 -41.69 0.435 878 -880 3 84.18 -117.08 -42.58 0.435 879 -881 3 85.78 -118.66 -43.64 0.435 880 -882 3 86.0 -120.08 -44.85 0.435 881 -883 3 86.26 -120.62 -45.54 0.435 882 -884 3 87.14 -121.81 -45.96 0.435 883 -885 3 88.82 -122.26 -46.16 0.435 884 -886 3 89.68 -124.0 -47.16 0.435 885 -887 3 89.84 -126.28 -47.4 0.435 886 -888 3 91.66 -128.08 -47.83 0.435 887 -889 3 93.26 -128.44 -48.84 0.435 888 -890 3 94.76 -128.1 -49.18 0.435 889 -891 3 95.21 -128.56 -49.26 0.435 890 -892 3 41.61 -25.79 -7.52 0.54 818 -893 3 44.26 -26.59 -8.82 0.54 892 -894 3 46.54 -26.4 -9.01 0.54 893 -895 3 48.66 -26.67 -9.47 0.54 894 -896 3 50.33 -27.72 -9.72 0.54 895 -897 3 52.09 -28.24 -10.61 0.54 896 -898 3 54.16 -29.07 -11.64 0.54 897 -899 3 55.53 -29.2 -11.78 0.54 898 -900 3 56.54 -30.2 -10.99 0.54 899 -901 3 58.49 -30.93 -9.81 0.54 900 -902 3 60.79 -32.89 -10.21 0.54 901 -903 3 63.02 -34.5 -9.37 0.54 902 -904 3 65.02 -35.86 -9.6 0.54 903 -905 3 66.69 -37.83 -9.95 0.54 904 -906 3 67.76 -39.18 -10.18 0.54 905 -907 3 69.76 -41.14 -10.55 0.54 906 -908 3 71.64 -42.09 -10.14 0.54 907 -909 3 72.86 -43.0 -10.35 0.54 908 -910 3 73.48 -43.9 -10.49 0.54 909 -911 4 -2.36 9.28 -0.57 4.11 1 -912 4 -2.99 13.54 -0.1 3.14 911 -913 4 -3.77 16.72 0.27 2.49 912 -914 4 -4.07 19.45 0.57 1.73 913 -915 4 -4.39 21.59 0.8 1.515 914 -916 4 -5.0 23.4 1.12 1.405 915 -917 4 -5.16 25.07 1.3 1.405 916 -918 4 -5.16 26.28 1.42 1.405 917 -919 4 -5.46 27.8 1.66 1.405 918 -920 4 -5.05 29.49 3.08 1.73 919 -921 4 -4.75 31.94 3.29 1.73 920 -922 4 -5.06 34.06 3.52 1.73 921 -923 4 -5.52 36.34 3.79 1.73 922 -924 4 -5.87 38.81 3.61 1.405 923 -925 4 -5.8 40.87 2.97 1.405 924 -926 4 -5.82 42.7 3.08 1.19 925 -927 4 -5.37 44.38 3.2 1.19 926 -928 4 -5.22 46.05 3.35 1.19 927 -929 4 -4.31 47.89 3.45 1.19 928 -930 4 -3.71 50.02 3.6 1.19 929 -931 4 -2.65 51.7 3.67 1.19 930 -932 4 -1.75 54.45 3.84 1.19 931 -933 4 -1.45 55.98 3.97 1.19 932 -934 4 -1.43 57.49 2.68 1.19 933 -935 4 -1.34 58.92 3.72 1.19 934 -936 4 -1.66 60.43 3.97 1.19 935 -937 4 -1.36 61.35 3.97 1.19 936 -938 4 -2.03 62.01 3.48 1.19 937 -939 4 -2.42 63.01 2.71 1.19 938 -940 4 -2.68 62.9 3.33 0.54 939 -941 4 -3.28 62.89 3.38 0.54 940 -942 4 -3.26 62.88 3.53 0.54 941 -943 4 -3.2 62.81 4.27 0.54 942 -944 4 -3.18 62.79 4.49 0.54 943 -945 4 -3.56 62.84 5.44 0.54 944 -946 4 -3.5 62.49 6.01 0.54 945 -947 4 -3.44 62.43 6.67 0.54 946 -948 4 -3.33 62.31 7.86 0.54 947 -949 4 -3.13 62.11 8.28 0.54 948 -950 4 -3.12 61.49 8.37 0.54 949 -951 4 -3.11 60.57 8.28 0.54 950 -952 4 -3.24 59.47 8.56 0.54 951 -953 4 -3.23 58.56 8.47 0.54 952 -954 4 -3.22 57.95 8.48 0.54 953 -955 4 -3.81 57.02 8.53 0.54 954 -956 4 -4.11 56.71 8.6 0.54 955 -957 4 -5.02 57.0 8.79 0.54 956 -958 4 -5.55 57.5 9.87 0.54 957 -959 4 -6.0 58.57 10.01 0.65 958 -960 4 -6.76 59.01 10.12 0.65 959 -961 4 -7.3 58.93 10.92 0.65 960 -962 4 -8.11 58.83 10.45 0.65 961 -963 4 -8.11 60.05 8.99 0.65 962 -964 4 -7.92 60.48 7.8 0.65 963 -965 4 -9.09 61.64 6.89 0.65 964 -966 4 -9.86 62.4 6.89 0.65 965 -967 4 -11.04 63.28 5.79 0.65 966 -968 4 -12.6 63.9 5.7 0.65 967 -969 4 -14.08 64.45 4.69 0.65 968 -970 4 -14.86 65.22 4.75 0.65 969 -971 4 -16.53 66.26 5.01 0.65 970 -972 4 -17.44 67.16 5.18 0.65 971 -973 4 -17.75 67.47 5.24 0.65 972 -974 4 -18.66 67.76 5.35 0.65 973 -975 4 -19.88 68.37 5.52 0.65 974 -976 4 -21.15 69.63 5.15 0.65 975 -977 4 -21.96 71.62 5.12 0.65 976 -978 4 -22.38 72.05 3.84 0.65 977 -979 4 -22.04 73.24 2.8 0.65 978 -980 4 -22.69 73.88 2.38 0.435 979 -981 4 -23.76 74.94 2.66 0.435 980 -982 4 -23.91 76.0 2.78 0.54 981 -983 4 -24.22 77.83 2.98 0.54 982 -984 4 -24.36 79.48 3.24 0.54 983 -985 4 -24.22 80.86 3.28 0.54 984 -986 4 -24.13 81.98 2.78 0.54 985 -987 4 -24.25 83.31 1.79 0.54 986 -988 4 -23.93 84.83 0.32 0.54 987 -989 4 -24.03 85.56 -0.72 0.54 988 -990 4 -23.99 87.04 -1.8 0.54 989 -991 4 -24.53 88.18 -2.39 0.54 990 -992 4 -25.3 89.55 -4.0 0.54 991 -993 4 -25.85 91.31 -4.69 0.54 992 -994 4 -26.54 93.82 -5.29 0.54 993 -995 4 -26.94 96.94 -5.77 0.54 994 -996 4 -26.5 99.86 -5.68 0.54 995 -997 4 -25.4 101.2 -6.86 0.54 996 -998 4 -24.5 102.74 -6.87 0.54 997 -999 4 -24.36 105.01 -6.66 0.54 998 -1000 4 -23.75 105.63 -6.73 0.54 999 -1001 4 -22.53 105.95 -6.81 0.54 1000 -1002 4 -21.96 106.6 -7.18 0.54 1001 -1003 4 -21.07 107.54 -7.4 0.54 1002 -1004 4 -20.88 107.97 -8.66 0.54 1003 -1005 4 -20.98 108.68 -9.57 0.54 1004 -1006 4 -21.55 110.15 -10.59 0.54 1005 -1007 4 -22.0 110.61 -12.0 0.54 1006 -1008 4 -22.54 110.53 -12.87 0.54 1007 -1009 4 -23.53 110.0 -13.74 0.54 1008 -1010 4 -24.05 109.62 -14.48 0.54 1009 -1011 4 -24.55 108.9 -15.04 0.54 1010 -1012 4 -24.91 108.66 -15.7 0.54 1011 -1013 4 -25.63 108.16 -16.9 0.54 1012 -1014 4 -27.38 107.78 -17.6 0.54 1013 -1015 4 -29.09 107.35 -18.02 0.54 1014 -1016 4 -30.38 106.79 -18.63 0.54 1015 -1017 4 -31.99 105.66 -19.65 0.54 1016 -1018 4 -33.92 105.15 -20.66 0.54 1017 -1019 4 -35.31 105.02 -20.85 0.54 1018 -1020 4 -36.26 104.14 -21.23 0.54 1019 -1021 4 -37.38 103.73 -21.84 0.54 1020 -1022 4 -38.82 103.03 -22.53 0.54 1021 -1023 4 -39.89 102.56 -22.55 0.54 1022 -1024 4 -21.12 73.85 2.77 0.435 979 -1025 4 -20.74 75.31 2.04 0.435 1024 -1026 4 -21.43 75.38 1.21 0.54 1025 -1027 4 -22.5 76.74 1.44 0.54 1026 -1028 4 -24.34 77.95 1.72 0.54 1027 -1029 4 -25.85 78.23 1.89 0.54 1028 -1030 4 -27.46 79.21 1.31 0.54 1029 -1031 4 -29.09 80.52 0.37 0.54 1030 -1032 4 -30.73 81.25 -0.68 0.54 1031 -1033 4 -31.11 81.93 -1.33 0.54 1032 -1034 4 -32.04 82.54 -1.34 0.54 1033 -1035 4 -32.62 83.11 -2.51 0.54 1034 -1036 4 -33.03 83.23 -3.67 0.54 1035 -1037 4 -33.66 83.85 -3.79 0.54 1036 -1038 4 -34.42 84.31 -5.41 0.54 1037 -1039 4 -34.98 84.86 -4.7 0.54 1038 -1040 4 -35.5 85.38 -5.28 0.54 1039 -1041 4 -36.26 86.44 -6.7 0.54 1040 -1042 4 -36.87 87.35 -6.55 0.54 1041 -1043 4 -38.48 88.04 -7.4 0.54 1042 -1044 4 -40.59 88.91 -8.48 0.54 1043 -1045 4 -42.74 89.84 -8.4 0.54 1044 -1046 4 -44.31 90.47 -8.73 0.54 1045 -1047 4 -45.65 92.4 -9.63 0.54 1046 -1048 4 -46.08 93.44 -10.85 0.54 1047 -1049 4 -2.27 64.69 2.78 1.19 939 -1050 4 -1.98 65.92 2.81 1.19 1049 -1051 4 -1.53 66.99 2.87 1.19 1050 -1052 4 -0.62 69.11 3.05 1.19 1051 -1053 4 -0.92 70.01 3.25 1.19 1052 -1054 4 -1.19 71.49 3.88 1.19 1053 -1055 4 -2.26 72.5 4.08 1.19 1054 -1056 4 -1.69 72.84 5.34 0.54 1055 -1057 4 -1.53 73.28 5.59 0.54 1056 -1058 4 -1.03 73.39 5.93 0.54 1057 -1059 4 -0.89 74.16 5.91 0.54 1058 -1060 4 -0.13 75.84 6.01 0.54 1059 -1061 4 0.46 77.68 6.13 0.54 1060 -1062 4 0.91 78.75 6.19 0.54 1061 -1063 4 0.02 79.93 6.69 0.54 1062 -1064 4 -0.87 80.82 6.94 0.54 1063 -1065 4 -1.18 83.25 7.21 0.54 1064 -1066 4 -1.14 84.41 7.93 0.54 1065 -1067 4 -1.51 85.09 7.27 0.54 1066 -1068 4 -1.52 85.99 7.43 0.54 1067 -1069 4 -1.73 86.82 6.85 0.54 1068 -1070 4 -1.93 87.64 6.35 0.54 1069 -1071 4 -2.29 88.0 5.81 0.54 1070 -1072 4 -2.37 88.68 5.06 0.54 1071 -1073 4 -2.92 89.83 4.23 0.54 1072 -1074 4 -2.86 90.69 3.33 0.54 1073 -1075 4 -3.25 91.68 2.62 0.54 1074 -1076 4 -3.31 92.36 2.02 0.54 1075 -1077 4 -4.27 94.22 1.77 0.54 1076 -1078 4 -4.28 95.44 1.89 0.54 1077 -1079 4 -4.44 96.5 1.92 0.54 1078 -1080 4 -4.95 97.32 1.45 0.54 1079 -1081 4 -4.83 98.72 1.35 0.54 1080 -1082 4 -5.2 99.99 0.83 0.54 1081 -1083 4 -5.57 101.57 0.34 0.54 1082 -1084 4 -5.51 102.44 -0.64 0.54 1083 -1085 4 -6.15 102.16 -2.57 0.54 1084 -1086 4 -6.45 102.17 -2.54 0.54 1085 -1087 4 -7.51 102.61 -2.4 0.54 1086 -1088 4 -7.83 103.82 -2.26 0.54 1087 -1089 4 -7.82 104.73 -2.09 0.54 1088 -1090 4 -7.83 105.65 -1.99 0.54 1089 -1091 4 -8.17 106.6 -2.4 0.54 1090 -1092 4 -8.11 107.45 -3.15 0.54 1091 -1093 4 -8.11 108.07 -4.84 0.54 1092 -1094 4 -8.42 108.38 -6.45 0.54 1093 -1095 4 -9.37 109.01 -6.67 0.54 1094 -1096 4 -9.37 110.83 -6.43 0.54 1095 -1097 4 -9.28 112.27 -6.96 0.54 1096 -1098 4 -9.84 112.83 -7.99 0.54 1097 -1099 4 -10.31 113.3 -8.13 0.54 1098 -1100 4 -11.46 115.96 -8.6 0.54 1099 -1101 4 -11.75 118.36 -9.69 0.54 1100 -1102 4 -11.68 120.11 -10.37 0.54 1101 -1103 4 -11.17 122.05 -11.21 0.54 1102 -1104 4 -12.02 123.2 -12.0 0.54 1103 -1105 4 -13.35 125.12 -12.89 0.54 1104 -1106 4 -12.85 126.46 -13.87 0.54 1105 -1107 4 -12.1 127.24 -14.02 0.54 1106 -1108 4 -10.88 129.37 -13.91 0.54 1107 -1109 4 -10.66 131.88 -14.45 0.54 1108 -1110 4 -10.24 134.8 -14.5 0.54 1109 -1111 4 -9.71 136.09 -15.19 0.54 1110 -1112 4 -9.21 137.74 -16.28 0.54 1111 -1113 4 -8.85 139.52 -17.12 0.54 1112 -1114 4 -8.37 140.88 -18.47 0.54 1113 -1115 4 -8.15 142.17 -19.2 0.54 1114 -1116 4 -7.47 143.03 -20.17 0.54 1115 -1117 4 -6.98 143.76 -21.34 0.54 1116 -1118 4 -6.3 144.62 -22.15 0.54 1117 -1119 4 -5.65 145.49 -23.34 0.54 1118 -1120 4 -4.55 146.83 -24.52 0.54 1119 -1121 4 -4.03 147.56 -25.56 0.54 1120 -1122 4 -3.49 148.24 -26.29 0.54 1121 -1123 4 -2.86 149.13 -27.56 0.54 1122 -1124 4 -1.65 150.97 -27.55 0.54 1123 -1125 4 -1.2 152.35 -29.06 0.54 1124 -1126 4 0.46 154.05 -29.11 0.54 1125 -1127 4 -2.56 72.54 4.11 1.19 1055 -1128 4 -4.2 74.16 4.79 1.08 1127 -1129 4 -5.12 75.06 5.04 1.08 1128 -1130 4 -5.32 75.9 5.51 0.54 1129 -1131 4 -4.55 76.67 5.52 0.54 1130 -1132 4 -2.73 76.99 5.39 0.54 1131 -1133 4 0.29 77.02 5.11 0.54 1132 -1134 4 2.09 76.76 4.54 0.54 1133 -1135 4 4.1 76.3 4.61 0.54 1134 -1136 4 6.44 75.81 4.88 0.54 1135 -1137 4 9.03 74.46 4.59 0.54 1136 -1138 4 11.15 73.57 4.3 0.54 1137 -1139 4 12.56 73.4 4.45 0.54 1138 -1140 4 14.72 72.48 4.46 0.54 1139 -1141 4 16.24 71.58 4.24 0.54 1140 -1142 4 17.65 70.18 4.35 0.54 1141 -1143 4 20.1 68.37 4.02 0.54 1142 -1144 4 21.94 68.38 4.0 0.54 1143 -1145 4 23.51 68.34 4.38 0.54 1144 -1146 4 24.77 68.32 4.65 0.54 1145 -1147 4 26.58 68.03 4.45 0.54 1146 -1148 4 28.73 66.83 4.21 0.54 1147 -1149 4 31.16 67.15 4.02 0.54 1148 -1150 4 34.23 66.84 4.01 0.54 1149 -1151 4 37.46 65.47 3.95 0.54 1150 -1152 4 39.76 65.63 3.9 0.54 1151 -1153 4 42.35 65.8 3.76 0.54 1152 -1154 4 45.1 66.44 3.64 0.54 1153 -1155 4 46.65 66.11 3.77 0.54 1154 -1156 4 49.09 64.29 3.45 0.54 1155 -1157 4 51.69 62.65 3.05 0.54 1156 -1158 4 53.37 63.12 2.94 0.54 1157 -1159 4 55.18 64.05 2.86 0.54 1158 -1160 4 62.55 62.92 2.23 0.54 1159 -1161 4 66.81 62.05 1.75 0.54 1160 -1162 4 69.42 61.89 1.79 0.54 1161 -1163 4 70.71 61.85 2.34 0.54 1162 -1164 4 71.95 60.62 2.34 0.54 1163 -1165 4 74.38 60.03 2.06 0.54 1164 -1166 4 76.51 60.05 1.87 0.54 1165 -1167 4 76.74 59.83 2.57 0.54 1166 -1168 4 78.33 59.47 3.22 0.54 1167 -1169 4 79.02 58.79 3.85 0.54 1168 -1170 4 79.24 58.56 4.57 0.54 1169 -1171 4 79.18 57.1 5.41 0.54 1170 -1172 4 78.9 56.15 5.64 0.54 1171 -1173 4 78.68 55.45 6.5 0.54 1172 -1174 4 78.42 55.1 6.94 0.54 1173 -1175 4 78.14 54.47 7.21 0.54 1174 -1176 4 -6.09 76.33 6.23 1.08 1129 -1177 4 -6.97 77.79 6.92 1.08 1176 -1178 4 -6.79 78.22 7.24 1.08 1177 -1179 4 -6.31 79.27 7.52 1.08 1178 -1180 4 -5.77 79.63 8.49 1.08 1179 -1181 4 -5.31 80.69 8.77 1.08 1180 -1182 4 -4.24 82.37 8.85 1.08 1181 -1183 4 -3.78 82.82 8.93 1.08 1182 -1184 4 -3.8 83.87 9.55 1.08 1183 -1185 4 -3.8 86.0 9.76 1.08 1184 -1186 4 -4.21 87.32 8.86 1.08 1185 -1187 4 -4.67 88.38 9.02 1.08 1186 -1188 4 -5.57 89.89 7.73 1.405 1187 -1189 4 -6.18 91.4 7.93 1.405 1188 -1190 4 -6.29 92.12 8.47 1.3 1189 -1191 4 -6.35 92.48 8.73 1.3 1190 -1192 4 -5.43 91.69 7.22 0.11 1191 -1193 4 -4.97 92.16 7.3 0.435 1192 -1194 4 -4.52 93.52 7.4 0.435 1193 -1195 4 -3.75 95.19 7.49 0.435 1194 -1196 4 -2.85 96.11 7.56 0.435 1195 -1197 4 -1.34 96.74 7.48 0.435 1196 -1198 4 -0.13 96.77 7.22 0.435 1197 -1199 4 1.04 97.42 6.81 0.435 1198 -1200 4 2.99 98.23 6.32 0.435 1199 -1201 4 4.03 99.03 6.08 0.435 1200 -1202 4 5.07 100.41 5.96 0.435 1201 -1203 4 6.42 101.2 5.77 0.435 1202 -1204 4 8.85 102.46 5.52 0.435 1203 -1205 4 9.2 103.02 4.48 0.435 1204 -1206 4 10.99 103.99 3.95 0.435 1205 -1207 4 12.96 105.69 3.94 0.435 1206 -1208 4 15.08 107.22 3.81 0.435 1207 -1209 4 16.37 108.09 2.95 0.435 1208 -1210 4 18.6 109.22 2.32 0.435 1209 -1211 4 21.77 110.34 1.91 0.435 1210 -1212 4 23.85 111.03 1.18 0.435 1211 -1213 4 26.71 111.84 0.7 0.435 1212 -1214 4 29.14 113.08 0.59 0.435 1213 -1215 4 31.56 113.73 0.21 0.435 1214 -1216 4 33.64 114.71 -0.4 0.435 1215 -1217 4 35.75 115.65 -0.58 0.435 1216 -1218 4 39.1 117.21 -0.74 0.435 1217 -1219 4 41.37 119.2 -0.75 0.435 1218 -1220 4 43.96 120.89 -0.83 0.435 1219 -1221 4 47.91 123.37 -0.95 0.435 1220 -1222 4 50.77 124.17 -1.29 0.435 1221 -1223 4 52.39 123.8 -2.23 0.435 1222 -1224 4 55.57 123.99 -2.59 0.435 1223 -1225 4 58.26 124.68 -3.29 0.435 1224 -1226 4 61.6 125.33 -3.62 0.435 1225 -1227 4 65.79 126.35 -4.59 0.435 1226 -1228 4 69.02 127.72 -6.04 0.435 1227 -1229 4 72.83 127.0 -6.53 0.435 1228 -1230 4 77.43 127.39 -7.0 0.435 1229 -1231 4 81.36 128.35 -7.33 0.435 1230 -1232 4 84.07 129.01 -7.82 0.435 1231 -1233 4 86.66 128.58 -8.11 0.435 1232 -1234 4 88.95 128.75 -8.3 0.435 1233 -1235 4 90.32 128.61 -8.44 0.435 1234 -1236 4 -6.92 93.64 8.6 1.3 1190 -1237 4 -6.7 94.03 9.3 1.3 1236 -1238 4 -7.6 95.22 9.65 1.3 1237 -1239 4 -8.01 95.74 9.74 1.3 1238 -1240 4 -6.77 95.72 9.93 0.435 1239 -1241 4 -6.3 95.85 10.13 0.435 1240 -1242 4 -5.99 96.17 10.13 0.435 1241 -1243 4 -5.56 96.37 9.72 0.435 1242 -1244 4 -5.11 96.52 9.7 0.435 1243 -1245 4 -3.65 97.2 9.02 0.435 1244 -1246 4 -3.22 96.78 8.64 0.435 1245 -1247 4 -1.59 96.69 7.95 0.435 1246 -1248 4 0.06 96.27 7.54 0.435 1247 -1249 4 0.75 95.59 6.65 0.435 1248 -1250 4 1.95 94.41 6.19 0.435 1249 -1251 4 3.43 93.55 5.52 0.435 1250 -1252 4 4.94 93.58 5.16 0.435 1251 -1253 4 6.69 93.67 4.25 0.435 1252 -1254 4 7.39 93.9 3.52 0.435 1253 -1255 4 7.55 94.05 1.94 0.435 1254 -1256 4 7.86 93.75 1.95 0.435 1255 -1257 4 8.62 93.6 1.87 0.435 1256 -1258 4 8.47 93.76 0.24 0.435 1257 -1259 4 8.55 93.69 -0.6 0.435 1258 -1260 4 8.65 93.28 -1.17 0.435 1259 -1261 4 8.86 93.09 -2.27 0.435 1260 -1262 4 9.6 92.98 -2.73 0.435 1261 -1263 4 10.35 92.85 -2.97 0.435 1262 -1264 4 11.04 93.07 -3.62 0.435 1263 -1265 4 12.22 92.49 0.75 0.435 1264 -1266 4 12.37 91.72 0.66 0.435 1265 -1267 4 12.64 91.46 0.24 0.435 1266 -1268 4 12.07 91.13 -1.02 0.435 1267 -1269 4 12.68 90.22 -1.24 0.435 1268 -1270 4 13.27 89.64 -1.58 0.435 1269 -1271 4 13.77 88.24 -2.98 0.435 1270 -1272 4 14.83 87.19 -3.25 0.435 1271 -1273 4 15.9 86.75 -3.39 0.435 1272 -1274 4 16.34 85.41 -3.71 0.435 1273 -1275 4 16.74 84.41 -4.6 0.435 1274 -1276 4 17.49 83.36 -4.85 0.435 1275 -1277 4 17.74 82.52 -5.71 0.435 1276 -1278 4 17.35 81.99 -6.48 0.435 1277 -1279 4 16.73 81.39 -6.71 0.435 1278 -1280 4 16.61 80.62 -8.14 0.435 1279 -1281 4 16.89 79.13 -8.68 0.435 1280 -1282 4 17.51 77.92 -8.85 0.435 1281 -1283 4 17.9 76.92 -9.67 0.435 1282 -1284 4 18.34 75.89 -10.12 0.435 1283 -1285 4 18.93 75.3 -10.39 0.435 1284 -1286 4 19.68 75.17 -10.54 0.435 1285 -1287 4 20.75 75.34 -10.7 0.435 1286 -1288 4 21.77 74.33 -11.35 0.435 1287 -1289 4 22.35 73.44 -11.79 0.435 1288 -1290 4 22.45 73.35 -12.41 0.435 1289 -1291 4 22.72 71.88 -13.03 0.435 1290 -1292 4 23.1 69.68 -14.19 0.435 1291 -1293 4 24.33 68.48 -14.42 0.435 1292 -1294 4 24.92 67.6 -14.79 0.435 1293 -1295 4 26.7 66.45 -15.59 0.435 1294 -1296 4 27.74 64.82 -16.14 0.435 1295 -1297 4 30.33 61.95 -16.75 0.435 1296 -1298 4 32.47 60.45 -17.09 0.435 1297 -1299 4 33.38 59.54 -17.26 0.435 1298 -1300 4 35.28 56.77 -18.68 0.435 1299 -1301 4 35.84 55.31 -19.42 0.435 1300 -1302 4 36.6 54.26 -19.66 0.435 1301 -1303 4 37.2 53.36 -19.88 0.435 1302 -1304 4 37.67 52.92 -19.97 0.435 1303 -1305 4 38.06 52.53 -20.8 0.435 1304 -1306 4 38.49 52.1 -21.18 0.435 1305 -1307 4 -8.0 96.22 10.54 1.3 1239 -1308 4 -8.91 97.42 10.82 1.3 1307 -1309 4 -10.54 98.52 11.08 1.3 1308 -1310 4 -11.37 99.05 12.03 0.54 1309 -1311 4 -12.45 99.8 12.2 0.54 1310 -1312 4 -13.21 100.55 12.35 0.54 1311 -1313 4 -14.17 100.6 11.92 0.54 1312 -1314 4 -15.54 101.05 12.01 0.54 1313 -1315 4 -16.17 102.27 12.04 0.54 1314 -1316 4 -17.05 103.14 12.59 0.54 1315 -1317 4 -19.02 105.37 13.29 0.54 1316 -1318 4 -19.32 106.29 13.4 0.54 1317 -1319 4 -19.78 107.34 13.55 0.54 1318 -1320 4 -20.55 109.01 13.79 0.54 1319 -1321 4 -20.8 108.95 14.41 0.54 1320 -1322 4 -21.56 109.39 14.52 0.54 1321 -1323 4 -22.61 109.53 14.7 0.54 1322 -1324 4 -23.57 109.86 14.45 0.54 1323 -1325 4 -24.08 110.37 13.94 0.54 1324 -1326 4 -23.72 112.15 13.02 0.54 1325 -1327 4 -24.34 112.46 13.03 0.54 1326 -1328 4 -25.41 113.81 13.26 0.54 1327 -1329 4 -26.93 116.54 13.67 0.54 1328 -1330 4 -27.6 119.31 13.54 0.54 1329 -1331 4 -27.31 120.86 13.51 0.54 1330 -1332 4 -26.83 122.22 12.17 0.54 1331 -1333 4 -27.15 123.13 12.22 0.54 1332 -1334 4 -28.01 125.51 11.47 0.54 1333 -1335 4 -27.85 127.77 10.24 0.54 1334 -1336 4 -28.01 129.17 8.65 0.54 1335 -1337 4 -28.25 130.01 7.85 0.54 1336 -1338 4 -29.16 130.9 8.1 0.54 1337 -1339 4 -30.38 132.72 8.38 0.54 1338 -1340 4 -30.99 133.33 6.83 0.54 1339 -1341 4 -32.18 136.02 6.0 0.54 1340 -1342 4 -33.32 138.37 5.49 0.54 1341 -1343 4 -33.63 140.51 5.67 0.54 1342 -1344 4 -35.17 143.23 6.07 0.54 1343 -1345 4 -35.5 145.38 6.08 0.54 1344 -1346 4 -35.76 148.97 5.47 0.54 1345 -1347 4 -35.49 152.03 5.45 0.54 1346 -1348 4 -35.46 155.97 4.54 0.54 1347 -1349 4 -36.39 158.7 4.9 0.54 1348 -1350 4 -37.16 162.49 5.33 0.54 1349 -1351 4 -38.67 165.51 4.26 0.54 1350 -1352 4 -40.46 167.59 3.49 0.54 1351 -1353 4 -40.73 169.07 2.37 0.54 1352 -1354 4 -41.1 170.05 1.83 0.54 1353 -1355 4 -42.23 171.76 1.5 0.54 1354 -1356 4 -43.65 173.48 1.26 0.54 1355 -1357 4 -44.41 174.23 1.4 0.54 1356 -1358 4 -44.59 175.64 -0.4 0.54 1357 -1359 4 -44.76 177.91 -0.16 0.54 1358 -1360 4 -44.15 180.04 -0.01 0.54 1359 -1361 4 -43.85 182.49 0.19 0.54 1360 -1362 4 -44.5 184.95 0.18 0.54 1361 -1363 4 -45.07 187.94 -0.59 0.54 1362 -1364 4 -44.92 190.53 -1.94 0.54 1363 -1365 4 -44.75 191.57 -0.05 0.54 1364 -1366 4 -45.06 191.87 -0.06 0.54 1365 -1367 4 -44.43 192.47 0.09 0.54 1366 -1368 4 -46.08 176.81 1.81 0.54 1357 -1369 4 -49.45 181.64 1.0 0.54 1368 -1370 4 -50.39 182.55 2.54 0.54 1369 -1371 4 -52.84 184.97 3.01 0.54 1370 -1372 4 -54.24 188.18 3.14 0.54 1371 -1373 4 -10.13 99.23 11.11 1.19 1309 -1374 4 -10.86 100.86 11.71 1.08 1373 -1375 4 -10.7 100.97 11.71 1.08 1374 -1376 4 -11.55 100.89 12.54 0.54 1375 -1377 4 -12.46 101.19 12.65 0.54 1376 -1378 4 -13.07 101.79 12.77 0.54 1377 -1379 4 -13.83 102.54 12.91 0.54 1378 -1380 4 -14.44 103.15 13.02 0.54 1379 -1381 4 -15.2 104.51 13.22 0.54 1380 -1382 4 -15.97 106.78 13.51 0.54 1381 -1383 4 -15.22 108.15 13.58 0.54 1382 -1384 4 -15.22 109.07 13.67 0.54 1383 -1385 4 -15.45 110.22 12.9 0.54 1384 -1386 4 -16.38 111.13 13.0 0.54 1385 -1387 4 -17.15 112.5 13.2 0.54 1386 -1388 4 -18.07 114.61 13.5 0.54 1387 -1389 4 -18.84 116.58 13.76 0.54 1388 -1390 4 -19.91 119.16 14.11 0.54 1389 -1391 4 -20.09 122.07 14.18 0.54 1390 -1392 4 -20.92 123.8 13.74 0.54 1391 -1393 4 -21.25 125.64 13.81 0.54 1392 -1394 4 -22.16 128.37 14.07 0.54 1393 -1395 4 -23.4 130.48 14.39 0.54 1394 -1396 4 -24.92 133.22 14.8 0.54 1395 -1397 4 -26.92 135.79 15.17 0.54 1396 -1398 4 -29.09 138.84 15.37 0.54 1397 -1399 4 -29.71 140.97 15.55 0.54 1398 -1400 4 -31.13 144.79 15.68 0.54 1399 -1401 4 -31.29 147.39 15.86 0.54 1400 -1402 4 -32.47 150.38 15.14 0.54 1401 -1403 4 -33.09 152.81 15.43 0.54 1402 -1404 4 -32.94 154.79 15.61 0.54 1403 -1405 4 -34.16 155.99 15.84 0.54 1404 -1406 4 -35.44 156.94 15.45 0.54 1405 -1407 4 -36.97 157.54 15.58 0.54 1406 -1408 4 -38.05 158.61 15.78 0.54 1407 -1409 4 -38.2 160.89 16.01 0.54 1408 -1410 4 -39.55 162.96 16.26 0.54 1409 -1411 4 -39.86 165.09 16.5 0.54 1410 -1412 4 -40.93 167.05 16.78 0.54 1411 -1413 4 -42.35 169.06 16.59 0.54 1412 -1414 4 -43.42 171.33 16.91 0.54 1413 -1415 4 -44.51 173.92 17.18 0.54 1414 -1416 4 -44.51 175.75 17.36 0.54 1415 -1417 4 -45.66 179.31 16.98 0.54 1416 -1418 4 -46.89 181.43 17.31 0.54 1417 -1419 4 -48.12 185.38 17.72 0.54 1418 -1420 4 -48.44 189.33 18.14 0.54 1419 -1421 4 -49.21 191.61 18.43 0.54 1420 -1422 4 -49.37 193.89 18.67 0.54 1421 -1423 4 -48.8 196.05 18.52 0.54 1422 -1424 4 -48.59 197.98 17.64 0.54 1423 -1425 4 -49.06 199.95 17.8 0.54 1424 -1426 4 -49.67 201.17 17.98 0.54 1425 -1427 4 -49.29 205.94 17.8 0.54 1426 -1428 4 -50.12 208.29 17.43 0.54 1427 -1429 4 -50.05 209.74 16.66 0.54 1428 -1430 4 -50.52 211.72 16.81 0.54 1429 -1431 4 -51.59 214.3 17.16 0.54 1430 -1432 4 -51.95 216.77 16.99 0.54 1431 -1433 4 -51.85 218.19 16.59 0.54 1432 -1434 4 -51.41 220.79 16.73 0.54 1433 -1435 4 -51.44 221.73 16.52 0.54 1434 -1436 4 -51.19 223.31 16.04 0.54 1435 -1437 4 -10.4 102.22 11.88 1.08 1375 -1438 4 -9.64 102.99 11.89 1.08 1437 -1439 4 -8.89 104.97 12.08 1.08 1438 -1440 4 -8.74 106.95 12.26 1.08 1439 -1441 4 -8.24 109.18 12.96 0.975 1440 -1442 4 -7.33 111.62 13.19 0.975 1441 -1443 4 -7.03 112.84 13.28 0.975 1442 -1444 4 -6.11 112.65 14.32 0.65 1443 -1445 4 -5.35 112.5 14.23 0.65 1444 -1446 4 -4.89 112.05 14.15 0.65 1445 -1447 4 -5.04 110.98 14.06 0.65 1446 -1448 4 -4.58 109.62 13.89 0.435 1447 -1449 4 -3.51 108.26 13.65 0.435 1448 -1450 4 -2.19 106.34 12.81 0.435 1449 -1451 4 -1.4 105.26 12.86 0.435 1450 -1452 4 -0.76 104.63 13.11 0.54 1451 -1453 4 0.21 103.36 13.59 0.54 1452 -1454 4 0.57 102.09 13.96 0.54 1453 -1455 4 1.41 100.65 14.64 0.54 1454 -1456 4 1.88 99.27 14.47 0.54 1455 -1457 4 2.21 98.33 14.65 0.54 1456 -1458 4 2.57 97.38 15.13 0.54 1457 -1459 4 2.89 96.46 15.08 0.54 1458 -1460 4 3.2 95.23 15.0 0.54 1459 -1461 4 3.81 94.63 14.89 0.54 1460 -1462 4 5.05 92.81 14.75 0.54 1461 -1463 4 5.54 92.32 14.96 0.54 1462 -1464 4 6.32 90.95 14.91 0.54 1463 -1465 4 6.78 89.56 14.89 0.54 1464 -1466 4 7.3 88.75 15.36 0.54 1465 -1467 4 7.46 88.3 15.37 0.54 1466 -1468 4 -7.18 114.81 13.56 0.975 1443 -1469 4 -8.4 116.92 13.89 0.975 1468 -1470 4 -9.63 119.35 14.24 0.975 1469 -1471 4 -11.16 122.06 14.65 0.975 1470 -1472 4 -11.68 123.48 15.96 0.975 1471 -1473 4 -12.43 124.23 16.1 0.975 1472 -1474 4 -12.83 124.88 16.2 0.975 1473 -1475 4 -12.98 124.12 14.48 0.54 1474 -1476 4 -13.43 123.36 14.45 0.54 1475 -1477 4 -13.12 122.14 14.29 0.54 1476 -1478 4 -12.82 121.54 14.21 0.435 1477 -1479 4 -13.12 120.02 14.09 0.435 1478 -1480 4 -13.12 119.41 14.03 0.435 1479 -1481 4 -13.11 118.19 13.92 0.435 1480 -1482 4 -13.12 116.97 13.79 0.435 1481 -1483 4 -12.96 116.52 13.73 0.435 1482 -1484 4 -12.65 115.62 13.62 0.435 1483 -1485 4 -12.49 115.15 13.56 0.435 1484 -1486 4 -13.5 126.51 16.42 0.975 1474 -1487 4 -14.27 128.76 16.8 0.975 1486 -1488 4 -14.12 131.35 17.03 0.975 1487 -1489 4 -13.67 132.73 17.12 0.975 1488 -1490 4 -12.92 135.01 17.28 0.975 1489 -1491 4 -13.22 136.23 17.43 1.08 1490 -1492 4 -13.7 139.11 17.76 1.08 1491 -1493 4 -13.55 141.09 17.93 1.08 1492 -1494 4 -14.31 142.46 18.13 1.08 1493 -1495 4 -15.08 144.43 18.4 1.08 1494 -1496 4 -15.85 146.39 18.66 1.08 1495 -1497 4 -16.31 147.77 18.84 1.08 1496 -1498 4 -16.16 150.04 19.05 1.08 1497 -1499 4 -14.95 150.66 19.0 1.08 1498 -1500 4 -13.58 151.74 18.97 1.08 1499 -1501 4 -13.12 152.8 19.03 1.08 1500 -1502 4 -12.97 154.78 19.29 1.08 1501 -1503 4 -11.31 158.28 19.47 1.08 1502 -1504 4 -11.32 162.24 19.86 1.08 1503 -1505 4 -10.83 162.78 19.87 1.08 1504 -1506 4 -11.36 162.68 20.73 0.65 1505 -1507 4 -11.81 163.75 20.88 0.65 1506 -1508 4 -12.24 164.17 21.34 0.65 1507 -1509 4 -12.68 164.59 21.64 0.65 1508 -1510 4 -13.29 164.59 21.63 0.65 1509 -1511 4 -13.7 165.61 22.23 0.65 1510 -1512 4 -14.28 166.17 22.79 0.65 1511 -1513 4 -14.49 166.37 23.89 0.65 1512 -1514 4 -14.78 168.17 24.39 0.65 1513 -1515 4 -15.17 169.17 23.53 0.435 1514 -1516 4 -15.63 170.83 23.82 0.435 1515 -1517 4 -15.93 172.06 22.23 0.435 1516 -1518 4 -16.16 172.88 21.58 0.435 1517 -1519 4 -16.22 174.47 21.2 0.435 1518 -1520 4 -16.27 176.03 20.83 0.54 1519 -1521 4 -16.43 178.01 21.05 0.54 1520 -1522 4 -16.93 179.72 20.8 0.54 1521 -1523 4 -17.55 181.55 20.96 0.54 1522 -1524 4 -18.77 183.36 21.25 0.54 1523 -1525 4 -18.47 185.5 21.43 0.54 1524 -1526 4 -17.72 187.48 21.55 0.54 1525 -1527 4 -18.03 189.0 21.73 0.54 1526 -1528 4 -19.3 191.46 21.63 0.54 1527 -1529 4 -18.91 193.2 21.09 0.54 1528 -1530 4 -18.65 195.37 20.9 0.54 1529 -1531 4 -18.39 198.45 20.79 0.54 1530 -1532 4 -19.05 201.54 20.63 0.54 1531 -1533 4 -19.92 203.6 19.93 0.54 1532 -1534 4 -20.71 205.91 19.86 0.54 1533 -1535 4 -21.75 208.16 18.88 0.54 1534 -1536 4 -21.61 209.84 18.95 0.54 1535 -1537 4 -22.45 211.58 18.37 0.54 1536 -1538 4 -24.56 213.98 17.36 0.54 1537 -1539 4 -26.24 215.33 17.65 0.54 1538 -1540 4 -27.77 216.85 17.94 0.54 1539 -1541 4 -29.3 218.97 18.28 0.54 1540 -1542 4 -31.19 220.23 17.83 0.54 1541 -1543 4 -33.94 222.94 18.35 0.54 1542 -1544 4 -35.63 224.61 18.58 0.54 1543 -1545 4 -36.53 226.41 17.41 0.54 1544 -1546 4 -37.71 229.4 16.6 0.54 1545 -1547 4 -38.66 230.29 16.7 0.54 1546 -1548 4 -39.74 231.03 16.87 0.54 1547 -1549 4 -40.73 232.02 16.22 0.54 1548 -1550 4 -40.98 234.4 15.51 0.54 1549 -1551 4 -41.28 237.74 14.26 0.54 1550 -1552 4 -42.13 239.8 13.65 0.54 1551 -1553 4 -41.6 241.71 12.87 0.54 1552 -1554 4 -41.19 243.74 12.65 0.54 1553 -1555 4 -41.33 245.7 11.34 0.54 1554 -1556 4 -42.81 248.37 10.68 0.54 1555 -1557 4 -43.38 251.37 9.9 0.54 1556 -1558 4 -44.94 256.24 10.29 0.54 1557 -1559 4 -45.75 259.78 10.26 0.54 1558 -1560 4 -46.31 261.56 9.27 0.54 1559 -1561 4 -46.66 264.63 9.37 0.54 1560 -1562 4 -46.86 266.34 9.03 0.54 1561 -1563 4 -47.79 269.09 9.24 0.54 1562 -1564 4 -48.3 273.22 9.38 0.54 1563 -1565 4 -48.53 275.89 8.76 0.54 1564 -1566 4 -49.27 277.53 8.83 0.54 1565 -1567 4 -11.65 164.37 20.09 1.08 1505 -1568 4 -11.89 164.43 20.12 1.08 1567 -1569 4 -11.64 167.11 20.37 1.08 1568 -1570 4 -11.65 169.85 20.63 0.865 1569 -1571 4 -11.81 173.65 21.02 0.865 1570 -1572 4 -11.53 177.92 21.41 0.865 1571 -1573 4 -11.39 180.56 21.73 0.975 1572 -1574 4 -10.79 183.0 21.92 0.975 1573 -1575 4 -10.02 185.58 22.09 0.975 1574 -1576 4 -9.42 188.02 22.28 0.975 1575 -1577 4 -11.12 192.11 22.84 0.975 1576 -1578 4 -11.1 193.92 23.23 0.975 1577 -1579 4 -12.33 196.94 23.64 0.975 1578 -1580 4 -13.26 199.97 24.02 0.975 1579 -1581 4 -13.87 202.4 24.39 1.08 1580 -1582 4 -13.72 205.59 24.7 1.08 1581 -1583 4 -13.93 207.02 24.32 1.08 1582 -1584 4 -12.94 206.93 25.95 0.54 1583 -1585 4 -12.18 207.4 25.86 0.54 1584 -1586 4 -11.91 207.12 27.17 0.54 1585 -1587 4 -10.96 207.38 27.57 0.54 1586 -1588 4 -9.48 207.43 28.64 0.65 1587 -1589 4 -8.25 208.04 28.81 0.65 1588 -1590 4 -6.69 208.91 29.13 0.65 1589 -1591 4 -4.35 209.96 29.62 0.65 1590 -1592 4 -1.76 211.63 29.7 0.65 1591 -1593 4 1.57 213.79 29.6 0.65 1592 -1594 4 5.23 215.65 29.52 0.65 1593 -1595 4 8.0 217.15 29.86 0.65 1594 -1596 4 9.85 218.04 30.15 0.65 1595 -1597 4 10.79 218.33 30.33 0.65 1596 -1598 4 12.77 219.72 30.28 0.65 1597 -1599 4 14.44 221.11 30.33 0.65 1598 -1600 4 15.07 222.0 29.01 0.65 1599 -1601 4 15.08 221.98 29.16 0.65 1600 -1602 4 15.85 222.44 29.13 0.65 1601 -1603 4 15.8 222.5 28.61 0.65 1602 -1604 4 16.63 222.9 27.66 0.65 1603 -1605 4 16.85 223.59 26.8 0.65 1604 -1606 4 17.56 224.1 26.26 0.65 1605 -1607 4 17.52 224.53 26.3 0.65 1606 -1608 4 18.05 224.3 27.14 0.54 1607 -1609 4 18.36 224.0 27.0 0.54 1608 -1610 4 18.75 223.6 27.91 0.54 1609 -1611 4 19.28 223.68 28.78 0.54 1610 -1612 4 19.95 223.62 29.31 0.54 1611 -1613 4 20.91 223.89 29.78 0.54 1612 -1614 4 21.74 224.28 30.42 0.54 1613 -1615 4 22.2 224.73 30.51 0.54 1614 -1616 4 22.58 224.35 31.34 0.54 1615 -1617 4 22.5 225.33 32.27 0.54 1616 -1618 4 22.65 226.7 32.39 0.54 1617 -1619 4 22.5 227.76 32.58 0.54 1618 -1620 4 22.13 228.12 33.63 0.54 1619 -1621 4 21.74 228.49 34.46 0.54 1620 -1622 4 22.51 230.77 34.77 0.435 1621 -1623 4 23.87 233.07 34.86 0.435 1622 -1624 4 24.09 234.37 35.65 0.435 1623 -1625 4 23.78 237.4 36.05 0.435 1624 -1626 4 23.93 239.37 36.31 0.435 1625 -1627 4 24.38 241.05 36.42 0.435 1626 -1628 4 24.35 243.21 36.34 0.435 1627 -1629 4 24.32 245.05 36.3 0.435 1628 -1630 4 24.27 248.13 36.29 0.435 1629 -1631 4 24.72 251.63 36.53 0.435 1630 -1632 4 25.42 255.5 36.24 0.435 1631 -1633 4 25.34 256.48 35.58 0.435 1632 -1634 4 24.67 258.68 35.17 0.435 1633 -1635 4 25.39 260.99 35.03 0.435 1634 -1636 4 26.22 264.73 34.48 0.435 1635 -1637 4 27.38 266.0 34.05 0.435 1636 -1638 4 28.74 268.61 34.1 0.435 1637 -1639 4 27.51 271.35 34.41 0.435 1638 -1640 4 26.51 273.54 33.88 0.54 1639 -1641 4 25.68 274.37 33.29 0.54 1640 -1642 4 25.67 275.29 33.3 0.54 1641 -1643 4 24.52 224.25 32.36 0.54 1616 -1644 4 25.58 225.03 32.34 0.54 1643 -1645 4 26.86 225.88 32.98 0.54 1644 -1646 4 27.65 227.83 33.4 0.54 1645 -1647 4 27.64 230.27 33.72 0.54 1646 -1648 4 27.35 231.76 34.04 0.54 1647 -1649 4 28.88 232.96 34.32 0.54 1648 -1650 4 29.8 233.58 34.3 0.54 1649 -1651 4 30.74 234.17 34.64 0.54 1650 -1652 4 31.12 234.08 35.5 0.54 1651 -1653 4 32.67 234.68 35.64 0.54 1652 -1654 4 35.62 235.72 36.07 0.54 1653 -1655 4 36.39 236.46 36.23 0.54 1654 -1656 4 36.88 238.11 36.8 0.54 1655 -1657 4 37.07 240.02 37.57 0.54 1656 -1658 4 38.75 242.32 37.72 0.54 1657 -1659 4 40.57 244.76 37.86 0.54 1658 -1660 4 42.41 245.96 38.05 0.54 1659 -1661 4 46.98 248.44 37.87 0.54 1660 -1662 4 50.48 250.76 37.84 0.54 1661 -1663 4 53.24 252.27 38.04 0.54 1662 -1664 4 55.08 252.88 38.08 0.54 1663 -1665 4 56.44 253.65 38.02 0.54 1664 -1666 4 58.12 254.42 38.02 0.54 1665 -1667 4 59.18 255.19 38.0 0.54 1666 -1668 4 19.34 225.08 25.73 0.435 1607 -1669 4 21.17 226.01 25.66 0.435 1668 -1670 4 22.34 226.98 25.19 0.435 1669 -1671 4 23.82 227.94 24.69 0.54 1670 -1672 4 26.39 231.16 24.77 0.54 1671 -1673 4 28.48 232.75 24.27 0.54 1672 -1674 4 30.77 232.92 24.09 0.54 1673 -1675 4 32.74 232.18 23.83 0.54 1674 -1676 4 36.09 232.51 23.55 0.54 1675 -1677 4 38.92 233.14 23.2 0.435 1676 -1678 4 43.64 234.84 22.93 0.435 1677 -1679 4 47.43 237.48 22.84 0.435 1678 -1680 4 49.28 238.68 21.43 0.54 1679 -1681 4 51.85 241.3 21.44 0.54 1680 -1682 4 53.21 245.11 21.69 0.54 1681 -1683 4 53.26 248.1 20.92 0.54 1682 -1684 4 53.55 250.24 21.03 0.54 1683 -1685 4 55.83 253.76 21.16 0.54 1684 -1686 4 57.48 256.67 21.29 0.54 1685 -1687 4 57.79 257.58 21.36 0.54 1686 -1688 4 57.93 261.07 21.68 0.54 1687 -1689 4 59.6 263.37 21.75 0.54 1688 -1690 4 60.48 264.32 21.46 0.54 1689 -1691 4 62.1 265.14 20.85 0.54 1690 -1692 4 63.89 264.6 20.18 0.54 1691 -1693 4 65.71 264.63 20.01 0.54 1692 -1694 4 -14.08 209.9 24.62 1.08 1583 -1695 4 -13.95 213.4 24.94 1.08 1694 -1696 4 -13.35 216.14 25.16 1.08 1695 -1697 4 -13.66 218.28 25.39 1.08 1696 -1698 4 -15.03 220.84 25.77 1.08 1697 -1699 4 -16.41 222.8 26.09 1.08 1698 -1700 4 -17.17 224.47 26.32 1.08 1699 -1701 4 -17.34 227.36 26.62 1.08 1700 -1702 4 -17.19 231.16 26.98 1.08 1701 -1703 4 -16.75 234.36 27.25 1.08 1702 -1704 4 -17.18 237.23 26.29 1.08 1703 -1705 4 -17.48 239.02 26.71 1.08 1704 -1706 4 -18.11 240.86 26.64 1.08 1705 -1707 4 -18.39 242.66 25.57 1.08 1706 -1708 4 -19.02 243.14 26.35 0.65 1707 -1709 4 -20.33 243.83 25.56 0.65 1708 -1710 4 -21.29 244.15 26.89 0.65 1709 -1711 4 -21.74 243.98 28.65 0.65 1710 -1712 4 -23.19 244.51 29.59 0.65 1711 -1713 4 -26.02 245.48 30.62 0.65 1712 -1714 4 -27.69 246.81 31.06 0.65 1713 -1715 4 -30.05 248.52 32.35 0.65 1714 -1716 4 -31.28 249.74 32.58 0.65 1715 -1717 4 -32.6 251.04 33.28 0.65 1716 -1718 4 -34.58 253.61 33.8 0.65 1717 -1719 4 -36.41 254.2 34.03 0.65 1718 -1720 4 -39.15 255.38 34.46 0.65 1719 -1721 4 -41.74 257.03 34.86 0.65 1720 -1722 4 -44.48 258.52 35.26 0.65 1721 -1723 4 -46.01 260.03 35.63 0.54 1722 -1724 4 -47.21 260.01 35.74 0.54 1723 -1725 4 -49.35 261.21 36.12 0.54 1724 -1726 4 -51.02 263.16 36.47 0.54 1725 -1727 4 -53.63 266.04 36.99 0.54 1726 -1728 4 -56.67 268.74 37.53 0.54 1727 -1729 4 -58.05 271.32 37.92 0.54 1728 -1730 4 -59.43 274.2 38.32 0.54 1729 -1731 4 -60.5 276.46 38.65 0.54 1730 -1732 4 -61.58 279.35 39.02 0.54 1731 -1733 4 -63.56 280.08 39.28 0.54 1732 -1734 4 -65.24 281.44 39.56 0.54 1733 -1735 4 -67.53 283.39 39.97 0.54 1734 -1736 4 -68.7 284.54 40.79 0.54 1735 -1737 4 -70.06 287.11 41.25 0.54 1736 -1738 4 -70.49 288.73 41.9 0.54 1737 -1739 4 -70.46 290.23 42.35 0.54 1738 -1740 4 -69.8 290.77 43.02 0.54 1739 -1741 4 -69.26 291.15 43.84 0.54 1740 -1742 4 -70.31 292.18 44.26 0.54 1741 -1743 4 -71.52 293.38 44.64 0.54 1742 -1744 4 -71.68 295.35 44.85 0.54 1743 -1745 4 -71.81 296.69 45.29 0.54 1744 -1746 4 -73.02 297.58 45.64 0.54 1745 -1747 4 -74.21 297.85 46.0 0.54 1746 -1748 4 -75.86 299.17 46.58 0.54 1747 -1749 4 -76.45 299.76 46.92 0.54 1748 -1750 4 -77.45 300.75 47.79 0.54 1749 -1751 4 -77.62 301.18 49.51 0.54 1750 -1752 4 -78.53 301.79 49.65 0.54 1751 -1753 4 -78.86 302.11 51.08 0.54 1752 -1754 4 -79.29 302.22 51.51 0.54 1753 -1755 4 -17.79 245.71 25.81 1.08 1707 -1756 4 -17.95 247.99 26.05 1.08 1755 -1757 4 -17.21 249.38 25.88 1.08 1756 -1758 4 -16.46 251.67 26.03 1.08 1757 -1759 4 -16.93 253.35 26.17 1.08 1758 -1760 4 -18.15 255.17 26.46 1.08 1759 -1761 4 -19.82 258.34 25.41 1.08 1760 -1762 4 -20.59 260.91 25.73 1.08 1761 -1763 4 -20.91 263.96 26.06 1.08 1762 -1764 4 -20.63 268.83 26.42 1.08 1763 -1765 4 -20.07 271.27 26.55 1.19 1764 -1766 4 -19.33 274.16 26.75 1.19 1765 -1767 4 -19.33 275.38 26.88 1.19 1766 -1768 4 -19.12 276.58 28.11 0.865 1767 -1769 4 -19.42 278.11 28.28 0.865 1768 -1770 4 -19.72 279.01 28.47 0.865 1769 -1771 4 -20.34 279.62 28.51 0.865 1770 -1772 4 -20.67 280.85 30.11 0.865 1771 -1773 4 -21.56 281.73 30.43 0.865 1772 -1774 4 -21.99 283.36 31.15 0.865 1773 -1775 4 -23.18 284.53 31.67 0.865 1774 -1776 4 -23.79 286.34 31.99 0.865 1775 -1777 4 -25.13 287.66 32.62 0.865 1776 -1778 4 -26.51 289.01 32.88 0.865 1777 -1779 4 -27.87 291.27 33.3 0.865 1778 -1780 4 -28.64 293.86 33.63 0.865 1779 -1781 4 -28.65 296.29 33.86 0.865 1780 -1782 4 -28.8 298.55 34.24 0.865 1781 -1783 4 -28.79 300.07 34.47 0.865 1782 -1784 4 -30.47 303.85 35.07 0.865 1783 -1785 4 -31.85 307.03 35.51 0.865 1784 -1786 4 -32.63 310.21 35.89 0.865 1785 -1787 4 -34.3 312.78 36.3 0.865 1786 -1788 4 -36.6 315.05 36.73 0.865 1787 -1789 4 -37.54 315.89 37.05 0.865 1788 -1790 4 -38.92 318.77 37.46 0.865 1789 -1791 4 -40.3 321.64 37.86 0.865 1790 -1792 4 -42.89 323.29 38.26 0.865 1791 -1793 4 -44.42 326.01 38.68 0.865 1792 -1794 4 -46.11 329.51 39.17 0.865 1793 -1795 4 -47.21 332.39 40.99 0.865 1794 -1796 4 -47.72 334.12 40.59 0.865 1795 -1797 4 -48.34 335.36 38.88 0.865 1796 -1798 4 -49.4 337.62 37.77 0.865 1797 -1799 4 -50.47 338.68 37.9 0.865 1798 -1800 4 -52.63 341.41 38.28 0.865 1799 -1801 4 -54.76 344.73 38.8 0.865 1800 -1802 4 -55.43 349.03 38.75 0.865 1801 -1803 4 -55.94 352.55 38.84 0.865 1802 -1804 4 -55.08 356.27 38.6 0.865 1803 -1805 4 -54.71 359.25 37.95 0.865 1804 -1806 4 -55.34 362.0 38.2 0.865 1805 -1807 4 -54.82 365.14 37.47 0.865 1806 -1808 4 -53.38 368.86 36.95 0.865 1807 -1809 4 -52.37 372.41 36.67 0.865 1808 -1810 4 -51.94 375.04 35.07 0.865 1809 -1811 4 -50.47 378.74 34.92 0.865 1810 -1812 4 -49.98 381.91 33.91 0.865 1811 -1813 4 -50.57 382.78 32.75 0.865 1812 -1814 4 -51.17 383.99 32.93 0.865 1813 -1815 4 -51.52 384.33 32.99 0.435 1814 -1816 4 -51.82 384.93 33.08 0.865 1815 -1817 4 -51.5 387.06 31.89 0.865 1816 -1818 4 -51.65 388.73 32.07 0.865 1817 -1819 4 -52.87 389.93 32.3 0.865 1818 -1820 4 -54.06 390.8 31.21 0.865 1819 -1821 4 -55.81 392.23 30.67 0.865 1820 -1822 4 -55.97 393.0 30.69 0.865 1821 -1823 4 -56.94 395.16 30.47 0.865 1822 -1824 4 -57.4 396.54 30.57 0.865 1823 -1825 4 -57.73 398.37 30.7 1.3 1824 -1826 4 -57.88 400.03 30.89 0.975 1825 -1827 4 -58.48 403.06 29.79 0.975 1826 -1828 4 -58.77 404.3 29.93 0.975 1827 -1829 4 -59.79 404.09 30.46 0.54 1828 -1830 4 -61.01 403.47 30.52 0.54 1829 -1831 4 -62.07 403.92 30.66 0.54 1830 -1832 4 -63.75 404.36 30.86 0.54 1831 -1833 4 -65.44 405.12 31.02 0.54 1832 -1834 4 -66.97 405.74 29.4 0.54 1833 -1835 4 -68.34 407.08 29.66 0.54 1834 -1836 4 -69.56 408.3 29.89 0.54 1835 -1837 4 -70.93 408.73 30.06 0.54 1836 -1838 4 -72.2 409.67 29.88 0.54 1837 -1839 4 -72.78 409.97 28.45 0.54 1838 -1840 4 -73.63 409.59 27.59 0.54 1839 -1841 4 -74.09 409.46 25.81 0.54 1840 -1842 4 -74.35 409.11 24.59 0.54 1841 -1843 4 -74.54 408.99 24.21 0.54 1842 -1844 4 -74.69 408.54 24.18 0.54 1843 -1845 4 -58.94 404.74 29.92 0.975 1828 -1846 4 -58.5 407.04 30.03 0.975 1845 -1847 4 -58.83 408.88 28.42 0.975 1846 -1848 4 -59.16 410.74 26.67 0.975 1847 -1849 4 -60.12 411.68 26.4 0.975 1848 -1850 4 -62.36 413.31 25.56 0.975 1849 -1851 4 -63.03 415.56 24.85 0.975 1850 -1852 4 -63.49 417.54 25.08 0.865 1851 -1853 4 -64.8 419.45 24.42 0.865 1852 -1854 4 -64.81 420.98 22.83 0.865 1853 -1855 4 -64.64 422.34 21.5 0.865 1854 -1856 4 -64.51 423.12 21.34 0.865 1855 -1857 4 -64.07 423.6 21.2 0.865 1856 -1858 4 -64.23 425.88 19.85 0.865 1857 -1859 4 -64.97 427.53 18.64 0.865 1858 -1860 4 -64.91 430.2 17.92 0.865 1859 -1861 4 -65.28 432.71 15.85 0.865 1860 -1862 4 -65.7 433.72 16.59 0.865 1861 -1863 4 -66.37 435.91 16.1 0.865 1862 -1864 4 -66.93 437.69 15.27 0.865 1863 -1865 4 -67.17 439.14 14.53 0.865 1864 -1866 4 -68.16 439.81 13.86 0.865 1865 -1867 4 -69.28 441.53 13.6 0.865 1866 -1868 4 -70.9 442.84 12.82 0.865 1867 -1869 4 -71.75 444.29 12.06 0.865 1868 -1870 4 -72.49 445.63 10.97 0.865 1869 -1871 4 -73.83 446.97 9.79 0.865 1870 -1872 4 -74.39 448.11 9.04 0.865 1871 -1873 4 -75.42 449.76 7.94 0.865 1872 -1874 4 -75.89 450.83 8.01 0.865 1873 -1875 4 -77.1 451.73 8.21 0.865 1874 -1876 4 -78.48 453.7 8.46 0.865 1875 -1877 4 -79.04 456.07 7.75 0.865 1876 -1878 4 -77.54 459.43 7.94 0.865 1877 -1879 4 -75.96 462.44 7.03 0.865 1878 -1880 4 -75.44 465.57 6.45 0.865 1879 -1881 4 -75.68 468.54 5.86 0.865 1880 -1882 4 -75.19 470.47 4.87 0.865 1881 -1883 4 -74.8 472.53 4.29 0.865 1882 -1884 4 -74.42 474.28 3.66 0.865 1883 -1885 4 -74.74 475.39 3.8 0.865 1884 -1886 4 -75.42 475.77 3.06 0.435 1885 -1887 4 -75.88 476.23 3.15 0.435 1886 -1888 4 -76.82 476.55 2.96 0.435 1887 -1889 4 -77.28 476.1 2.81 0.435 1888 -1890 4 -77.61 476.43 2.65 0.54 1889 -1891 4 -79.59 477.17 2.91 0.54 1890 -1892 4 -79.9 478.69 3.08 0.54 1891 -1893 4 -80.67 479.16 1.38 0.54 1892 -1894 4 -81.7 479.26 0.28 0.54 1893 -1895 4 -82.29 479.55 -1.07 0.54 1894 -1896 4 -82.72 479.38 -2.55 0.54 1895 -1897 4 -83.65 479.7 -2.52 0.54 1896 -1898 4 -85.11 480.23 -3.31 0.54 1897 -1899 4 -85.96 480.46 -4.12 0.54 1898 -1900 4 -86.59 481.1 -4.37 0.54 1899 -1901 4 -87.51 481.41 -5.92 0.54 1900 -1902 4 -87.66 481.58 -7.71 0.54 1901 -1903 4 -88.41 482.0 -8.96 0.54 1902 -1904 4 -89.13 482.72 -10.02 0.54 1903 -1905 4 -89.85 483.45 -11.17 0.54 1904 -1906 4 -73.88 475.57 3.05 0.865 1885 -1907 4 -73.79 477.62 2.57 0.865 1906 -1908 4 -73.62 479.27 1.28 0.865 1907 -1909 4 -74.82 481.66 0.33 0.865 1908 -1910 4 -74.93 483.61 -0.73 0.865 1909 -1911 4 -74.02 485.14 -0.67 0.865 1910 -1912 4 -72.32 487.12 -1.93 0.865 1911 -1913 4 -71.11 490.18 -3.4 0.865 1912 -1914 4 -71.5 492.69 -4.03 0.865 1913 -1915 4 -71.93 494.64 -5.08 0.865 1914 -1916 4 -71.81 496.33 -5.15 0.865 1915 -1917 4 -72.31 498.87 -6.06 0.865 1916 -1918 4 -71.64 499.73 -7.03 0.865 1917 -1919 4 -70.64 503.6 -7.28 0.865 1918 -1920 4 -69.15 505.47 -7.6 0.865 1919 -1921 4 -69.42 508.16 -8.46 0.865 1920 -1922 4 -70.29 509.94 -9.33 0.865 1921 -1923 4 -70.46 511.32 -9.41 0.865 1922 -1924 4 -70.53 513.51 -9.87 0.865 1923 -1925 4 -70.27 516.0 -10.1 0.865 1924 -1926 4 -71.33 518.26 -11.23 0.865 1925 -1927 4 -71.95 520.08 -11.07 0.865 1926 -1928 4 -72.93 522.29 -11.58 0.865 1927 -1929 4 -73.88 523.83 -13.25 0.865 1928 -1930 4 -73.89 525.66 -13.14 0.865 1929 -1931 4 -73.9 529.32 -14.44 0.865 1930 -1932 4 -73.97 529.39 -15.19 0.865 1931 -1933 4 -73.61 531.16 -16.03 0.865 1932 -1934 4 -73.7 533.69 -16.76 0.865 1933 -1935 4 -73.7 535.51 -18.1 0.865 1934 -1936 4 -73.96 537.29 -19.03 0.865 1935 -1937 4 -74.53 539.99 -19.92 0.865 1936 -1938 4 -74.15 542.65 -20.53 0.865 1937 -1939 4 -72.95 545.1 -20.4 0.865 1938 -1940 4 -72.42 548.52 -20.86 0.865 1939 -1941 4 -71.81 551.27 -22.32 0.865 1940 -1942 4 -70.81 554.24 -22.81 0.865 1941 -1943 4 -70.18 556.94 -23.82 0.865 1942 -1944 4 -68.51 558.96 -25.51 0.865 1943 -1945 4 -67.91 560.48 -25.41 0.865 1944 -1946 4 -66.61 561.93 -26.07 0.865 1945 -1947 4 -65.91 563.36 -26.6 0.865 1946 -1948 4 -65.22 566.04 -27.24 0.865 1947 -1949 4 -65.31 567.95 -27.88 0.865 1948 -1950 4 -65.54 570.59 -28.28 0.865 1949 -1951 4 -66.56 574.04 -28.98 0.865 1950 -1952 4 -67.53 578.34 -29.0 0.865 1951 -1953 4 -68.36 581.65 -28.75 0.865 1952 -1954 4 -68.66 585.6 -28.34 0.865 1953 -1955 4 -68.84 588.5 -28.19 0.865 1954 -1956 4 -69.31 591.09 -27.98 0.865 1955 -1957 4 -70.14 594.33 -28.18 0.865 1956 -1958 4 -70.38 596.7 -28.84 0.865 1957 -1959 4 -70.16 598.92 -29.55 0.865 1958 -1960 4 -69.48 600.67 -30.2 0.865 1959 -1961 4 -68.03 601.97 -30.88 0.865 1960 -1962 4 -67.78 602.91 -30.89 0.54 1961 -1963 4 -66.57 605.06 -30.8 0.54 1962 -1964 4 -66.17 605.58 -31.46 0.54 1963 -1965 4 -65.24 606.49 -32.89 0.54 1964 -1966 4 -63.43 608.04 -33.05 0.54 1965 -1967 4 -62.07 608.82 -33.11 0.54 1966 -1968 4 -59.79 609.9 -33.21 0.54 1967 -1969 4 -58.44 610.39 -33.51 0.54 1968 -1970 4 -56.47 611.48 -33.66 0.54 1969 -1971 4 -54.88 612.34 -34.57 0.54 1970 -1972 4 -54.03 612.73 -35.37 0.54 1971 -1973 4 -53.88 612.57 -35.39 0.54 1972 -1974 4 -54.3 613.0 -36.6 0.435 1973 -1975 4 -54.77 613.47 -36.66 0.435 1974 -1976 4 -55.42 613.78 -36.87 0.435 1975 -1977 4 -54.82 614.42 -37.02 0.435 1976 -1978 4 -55.23 614.83 -38.06 0.435 1977 -1979 4 -54.75 615.58 -39.47 0.435 1978 -1980 4 -54.58 616.63 -40.82 0.435 1979 -1981 4 -54.26 617.24 -42.31 0.435 1980 -1982 4 -54.19 617.48 -43.27 0.435 1981 -1983 4 -54.01 617.91 -44.46 0.435 1982 -1984 4 -53.71 618.53 -46.17 0.435 1983 -1985 4 -53.72 619.75 -46.12 0.435 1984 -1986 4 -53.51 621.68 -47.01 0.435 1985 -1987 4 -53.61 623.29 -47.75 0.435 1986 -1988 4 -53.55 625.07 -48.56 0.435 1987 -1989 4 -54.08 626.8 -49.1 0.435 1988 -1990 4 -54.38 628.63 -50.49 0.435 1989 -1991 4 -54.53 630.0 -51.93 0.435 1990 -1992 4 -54.96 632.25 -52.94 0.435 1991 -1993 4 -56.33 633.9 -52.66 0.435 1992 -1994 4 -56.39 634.89 -53.24 0.435 1993 -1995 4 -56.05 635.78 -54.47 0.435 1994 -1996 4 -55.39 636.34 -55.54 0.435 1995 -1997 4 -52.58 613.43 -36.26 0.54 1973 -1998 4 -51.09 614.37 -36.53 0.54 1997 -1999 4 -50.09 615.5 -37.11 0.54 1998 -2000 4 -47.89 617.89 -37.98 0.54 1999 -2001 4 -46.31 618.77 -39.1 0.54 2000 -2002 4 -43.9 620.02 -39.29 0.54 2001 -2003 4 -41.36 621.45 -39.9 0.54 2002 -2004 4 -39.1 623.18 -40.18 0.54 2003 -2005 4 -36.98 625.03 -40.27 0.54 2004 -2006 4 -36.05 626.84 -41.62 0.54 2005 -2007 4 -32.96 629.26 -42.65 0.54 2006 -2008 4 -31.82 631.17 -43.39 0.54 2007 -2009 4 -30.72 634.63 -44.3 0.54 2008 -2010 4 -29.79 636.45 -45.57 0.54 2009 -2011 4 -28.27 637.99 -45.63 0.54 2010 -2012 4 -26.39 639.78 -46.68 0.54 2011 -2013 4 -24.2 640.96 -47.76 0.54 2012 -2014 4 -22.17 641.99 -48.83 0.54 2013 -2015 4 -21.01 642.38 -49.66 0.54 2014 -2016 4 -20.54 642.82 -51.09 0.54 2015 -2017 4 -19.07 644.42 -51.67 0.54 2016 -2018 4 -18.46 645.94 -53.09 0.54 2017 -2019 4 -16.92 649.28 -54.34 0.54 2018 -2020 4 -15.61 651.63 -54.77 0.54 2019 -2021 4 -14.71 653.18 -56.51 0.54 2020 -2022 4 -13.13 656.16 -57.13 0.54 2021 -2023 4 -11.23 657.33 -58.09 0.54 2022 -2024 4 -9.11 658.88 -58.21 0.54 2023 -2025 4 -7.68 660.51 -59.17 0.54 2024 -2026 4 -6.55 662.44 -59.99 0.54 2025 -2027 4 -5.71 664.02 -60.6 0.54 2026 -2028 4 -5.26 665.1 -60.61 0.54 2027 -2029 4 -3.83 667.32 -61.35 0.54 2028 -2030 4 -3.0 668.95 -62.25 0.54 2029 -2031 4 -1.86 672.08 -62.89 0.54 2030 -2032 4 -1.23 674.79 -63.89 0.54 2031 -2033 4 1.18 677.26 -64.02 0.54 2032 -2034 4 4.06 679.87 -64.02 0.54 2033 -2035 4 5.35 680.42 -65.0 0.54 2034 -2036 4 7.82 681.93 -66.22 0.54 2035 -2037 4 10.21 684.13 -66.68 0.54 2036 -2038 4 10.36 684.6 -68.46 0.54 2037 -2039 4 -68.53 604.57 -30.88 0.865 1961 -2040 4 -69.08 609.08 -31.45 0.865 2039 -2041 4 -69.0 614.17 -31.57 0.865 2040 -2042 4 -68.42 616.32 -31.57 0.865 2041 -2043 4 -67.21 619.67 -31.35 0.865 2042 -2044 4 -66.84 625.07 -31.61 0.865 2043 -2045 4 -67.06 630.75 -31.56 0.865 2044 -2046 4 -66.61 633.94 -31.3 0.865 2045 -2047 4 -66.46 637.44 -30.97 0.865 2046 -2048 4 -65.59 640.58 -30.89 0.54 2047 -2049 4 -65.91 644.53 -30.47 0.54 2048 -2050 4 -64.24 649.25 -30.18 0.54 2049 -2051 4 -62.58 652.77 -29.98 0.54 2050 -2052 4 -61.12 655.25 -28.66 0.54 2051 -2053 4 -59.15 659.67 -28.34 0.54 2052 -2054 4 -56.11 663.66 -28.23 0.54 2053 -2055 4 -53.24 668.4 -28.03 0.54 2054 -2056 4 -51.27 673.13 -27.75 0.54 2055 -2057 4 -50.07 679.22 -27.27 0.54 2056 -2058 4 -49.03 684.55 -26.77 0.54 2057 -2059 4 -48.58 689.26 -26.35 0.54 2058 -2060 4 -47.95 693.21 -25.72 0.54 2059 -2061 4 -47.12 696.32 -26.25 0.54 2060 -2062 4 -45.22 698.92 -28.14 0.54 2061 -2063 4 -43.1 701.08 -28.13 0.54 2062 -2064 4 -42.34 703.36 -27.97 0.54 2063 -2065 4 -40.37 706.27 -27.87 0.54 2064 -2066 4 -38.4 709.47 -27.74 0.54 2065 -2067 4 -36.9 713.44 -27.49 0.54 2066 -2068 4 -35.53 717.56 -27.21 0.54 2067 -2069 4 -34.18 720.16 -27.09 0.54 2068 -2070 4 -30.1 723.41 -25.71 0.54 2069 -2071 4 -26.09 725.2 -25.22 0.54 2070 -2072 4 -22.39 726.69 -24.74 0.54 2071 -2073 4 -19.04 728.84 -24.76 0.54 2072 -2074 4 -17.81 729.46 -24.74 0.54 2073 -2075 4 -15.69 732.52 -24.64 0.54 2074 -2076 4 -14.33 735.11 -24.51 0.54 2075 -2077 4 -13.19 736.11 -23.68 0.54 2076 -2078 4 -11.21 738.41 -23.57 0.54 2077 -2079 4 -9.54 739.49 -23.62 0.54 2078 -2080 4 -7.73 740.42 -23.69 0.54 2079 -2081 4 -17.36 277.69 26.92 1.19 1767 -2082 4 -15.39 280.28 26.99 1.19 2081 -2083 4 -13.39 282.85 25.84 1.19 2082 -2084 4 -11.82 284.96 24.78 1.19 2083 -2085 4 -10.56 287.07 23.65 1.19 2084 -2086 4 -8.93 289.09 23.25 1.19 2085 -2087 4 -8.11 290.11 22.28 1.19 2086 -2088 4 -6.9 291.04 22.26 1.19 2087 -2089 4 -5.65 291.83 23.13 0.755 2088 -2090 4 -4.02 293.26 22.67 0.755 2089 -2091 4 -3.27 294.64 22.73 0.755 2090 -2092 4 -2.78 296.0 21.38 1.08 2091 -2093 4 -1.73 298.6 21.55 1.08 2092 -2094 4 -1.02 300.03 21.09 1.08 2093 -2095 4 -0.04 301.18 20.27 1.08 2094 -2096 4 0.25 302.69 20.4 1.08 2095 -2097 4 0.7 304.37 20.52 1.08 2096 -2098 4 1.14 306.06 20.49 1.08 2097 -2099 4 1.18 307.56 19.43 1.08 2098 -2100 4 1.39 309.18 18.43 1.08 2099 -2101 4 1.89 310.03 17.56 0.755 2100 -2102 4 2.2 310.34 17.63 0.755 2101 -2103 4 3.12 311.24 17.78 0.755 2102 -2104 4 4.06 312.43 18.12 1.08 2103 -2105 4 4.95 313.69 17.94 1.08 2104 -2106 4 5.14 314.72 16.74 1.08 2105 -2107 4 4.92 316.75 16.35 1.08 2106 -2108 4 4.92 318.58 16.53 1.08 2107 -2109 4 4.84 319.58 15.73 1.08 2108 -2110 4 5.23 322.22 15.42 1.08 2109 -2111 4 5.35 324.83 15.36 1.08 2110 -2112 4 5.76 326.25 15.0 1.08 2111 -2113 4 6.0 327.82 14.61 1.08 2112 -2114 4 6.98 329.6 13.71 1.08 2113 -2115 4 7.27 332.96 13.94 1.08 2114 -2116 4 7.1 335.85 14.23 1.08 2115 -2117 4 7.55 338.44 14.45 1.08 2116 -2118 4 7.7 341.33 14.71 0.975 2117 -2119 4 7.32 344.13 14.27 0.975 2118 -2120 4 7.16 346.12 14.47 0.975 2119 -2121 4 5.72 348.74 14.18 0.975 2120 -2122 4 4.94 351.03 14.4 0.865 2121 -2123 4 4.62 354.67 14.78 0.865 2122 -2124 4 5.08 357.26 15.0 0.865 2123 -2125 4 6.28 359.11 14.99 0.865 2124 -2126 4 8.1 360.65 14.98 0.865 2125 -2127 4 9.61 362.79 14.96 0.865 2126 -2128 4 10.51 365.85 15.18 0.865 2127 -2129 4 10.8 370.41 15.6 0.865 2128 -2130 4 11.28 374.18 14.71 0.865 2129 -2131 4 12.49 378.15 14.98 0.865 2130 -2132 4 13.09 380.89 15.2 0.865 2131 -2133 4 14.89 386.39 15.5 0.865 2132 -2134 4 16.25 389.6 15.69 0.865 2133 -2135 4 16.25 392.64 15.98 0.865 2134 -2136 4 17.15 395.08 16.21 0.865 2135 -2137 4 18.52 397.07 16.28 0.865 2136 -2138 4 19.73 399.51 16.41 0.865 2137 -2139 4 20.78 402.41 16.59 0.865 2138 -2140 4 20.61 407.73 17.12 0.865 2139 -2141 4 20.7 411.29 16.79 0.865 2140 -2142 4 20.14 414.87 16.27 0.755 2141 -2143 4 19.98 419.9 16.78 0.755 2142 -2144 4 19.66 422.93 17.11 0.755 2143 -2145 4 18.58 425.81 17.49 0.755 2144 -2146 4 18.43 427.18 17.64 0.755 2145 -2147 4 18.88 429.77 17.85 0.755 2146 -2148 4 17.97 431.28 18.08 0.755 2147 -2149 4 16.43 432.48 18.34 0.755 2148 -2150 4 15.96 433.55 18.34 0.755 2149 -2151 4 16.2 436.36 17.98 0.755 2150 -2152 4 17.27 438.02 18.2 0.755 2151 -2153 4 18.34 440.93 18.45 0.755 2152 -2154 4 18.82 442.56 18.88 0.755 2153 -2155 4 18.97 443.93 19.07 0.755 2154 -2156 4 19.27 447.27 19.44 0.755 2155 -2157 4 19.56 450.62 19.74 0.755 2156 -2158 4 20.19 453.33 20.25 0.755 2157 -2159 4 20.94 455.3 20.45 0.755 2158 -2160 4 21.4 457.6 20.64 0.755 2159 -2161 4 22.46 458.97 20.67 0.755 2160 -2162 4 25.04 462.1 21.2 0.755 2161 -2163 4 26.55 466.07 21.44 0.755 2162 -2164 4 27.91 470.5 21.74 0.755 2163 -2165 4 27.89 473.84 22.08 0.755 2164 -2166 4 27.73 475.52 22.25 0.755 2165 -2167 4 28.04 477.66 23.95 0.54 2166 -2168 4 28.02 479.2 24.02 0.54 2167 -2169 4 29.08 480.27 24.02 0.54 2168 -2170 4 29.8 481.69 23.72 0.54 2169 -2171 4 29.64 483.05 23.79 0.54 2170 -2172 4 29.79 484.42 23.99 0.54 2171 -2173 4 29.53 485.89 24.61 0.54 2172 -2174 4 28.98 486.44 25.39 0.54 2173 -2175 4 29.01 488.22 26.02 0.54 2174 -2176 4 28.58 489.55 26.49 0.54 2175 -2177 4 28.94 490.01 26.5 0.54 2176 -2178 4 28.57 490.08 27.45 0.54 2177 -2179 4 27.96 490.68 27.56 0.54 2178 -2180 4 28.41 492.04 27.65 0.54 2179 -2181 4 28.56 494.01 27.91 0.54 2180 -2182 4 29.32 496.3 28.06 0.54 2181 -2183 4 29.76 496.79 27.91 0.54 2182 -2184 4 30.51 498.77 28.04 0.54 2183 -2185 4 30.47 500.33 27.82 0.54 2184 -2186 4 30.32 501.09 27.91 0.54 2185 -2187 4 30.97 501.65 28.36 0.54 2186 -2188 4 31.5 502.03 29.25 0.54 2187 -2189 4 32.59 503.08 29.56 0.54 2188 -2190 4 33.5 503.69 29.54 0.54 2189 -2191 4 34.15 504.26 29.9 0.54 2190 -2192 4 33.99 506.54 30.22 0.54 2191 -2193 4 33.84 508.21 30.4 0.54 2192 -2194 4 33.53 509.12 30.59 0.54 2193 -2195 4 35.06 509.43 30.48 0.435 2194 -2196 4 35.97 511.57 30.68 0.435 2195 -2197 4 37.18 513.69 30.85 0.435 2196 -2198 4 37.04 514.75 31.04 0.435 2197 -2199 4 37.19 516.41 31.26 0.435 2198 -2200 4 38.28 518.06 31.71 0.435 2199 -2201 4 39.65 519.14 31.68 0.435 2200 -2202 4 41.49 521.57 31.98 0.435 2201 -2203 4 41.85 521.81 32.65 0.435 2202 -2204 4 43.07 522.74 32.63 0.435 2203 -2205 4 44.13 523.8 32.7 0.435 2204 -2206 4 45.06 524.72 32.86 0.435 2205 -2207 4 45.85 526.67 33.28 0.435 2206 -2208 4 47.11 528.13 33.91 0.54 2207 -2209 4 48.02 529.06 33.99 0.54 2208 -2210 4 48.39 529.9 34.73 0.54 2209 -2211 4 48.13 531.37 35.42 0.54 2210 -2212 4 48.64 533.6 36.19 0.54 2211 -2213 4 49.72 534.64 36.58 0.54 2212 -2214 4 50.83 536.28 37.09 0.54 2213 -2215 4 51.47 537.45 37.59 0.54 2214 -2216 4 51.81 539.24 38.2 0.54 2215 -2217 4 51.83 540.13 38.5 0.54 2216 -2218 4 51.84 541.34 38.7 0.54 2217 -2219 4 52.15 542.24 38.83 0.54 2218 -2220 4 52.33 543.59 39.32 0.54 2219 -2221 4 53.6 545.36 39.99 0.54 2220 -2222 4 54.28 545.89 40.81 0.54 2221 -2223 4 55.34 546.35 40.83 0.54 2222 -2224 4 56.13 546.78 41.09 0.54 2223 -2225 4 56.77 547.36 41.39 0.54 2224 -2226 4 57.57 548.09 41.93 0.54 2225 -2227 4 57.56 550.21 42.21 0.54 2226 -2228 4 57.72 551.28 42.29 0.54 2227 -2229 4 57.57 552.32 42.56 0.54 2228 -2230 4 58.03 553.09 42.6 0.54 2229 -2231 4 58.34 553.99 42.74 0.54 2230 -2232 4 59.13 554.73 43.11 0.54 2231 -2233 4 59.45 555.63 43.32 0.54 2232 -2234 4 59.32 556.35 43.7 0.54 2233 -2235 4 59.47 558.03 43.94 0.54 2234 -2236 4 58.88 558.3 44.17 0.54 2235 -2237 4 29.04 490.61 26.63 0.54 2177 -2238 4 29.72 492.36 27.64 0.54 2237 -2239 4 30.65 494.47 27.99 0.54 2238 -2240 4 32.98 497.63 28.69 0.54 2239 -2241 4 34.1 499.26 29.35 0.54 2240 -2242 4 34.53 499.43 29.09 0.54 2241 -2243 4 35.37 501.32 28.6 0.54 2242 -2244 4 36.74 502.7 28.61 0.54 2243 -2245 4 37.77 504.43 28.3 0.54 2244 -2246 4 38.65 506.3 28.03 0.54 2245 -2247 4 39.81 507.26 27.49 0.54 2246 -2248 4 41.92 509.73 27.45 0.54 2247 -2249 4 42.23 511.56 27.6 0.54 2248 -2250 4 43.71 512.51 27.26 0.54 2249 -2251 4 44.78 513.28 27.24 0.54 2250 -2252 4 46.29 515.73 27.34 0.54 2251 -2253 4 47.49 518.78 27.44 0.54 2252 -2254 4 48.37 519.74 27.16 0.54 2253 -2255 4 49.59 521.58 27.15 0.54 2254 -2256 4 51.09 522.81 27.13 0.54 2255 -2257 4 51.84 523.29 27.02 0.54 2256 -2258 4 52.76 524.21 26.97 0.54 2257 -2259 4 53.56 524.62 27.46 0.54 2258 -2260 4 54.52 525.19 28.03 0.54 2259 -2261 4 56.24 527.44 28.55 0.54 2260 -2262 4 57.33 528.46 29.0 0.54 2261 -2263 4 58.44 530.41 29.61 0.54 2262 -2264 4 59.99 533.42 30.14 0.54 2263 -2265 4 60.91 535.55 30.41 0.54 2264 -2266 4 61.08 536.92 29.03 0.54 2265 -2267 4 59.7 537.66 29.22 0.54 2266 -2268 4 59.23 538.12 29.16 0.54 2267 -2269 4 59.76 538.5 29.98 0.54 2268 -2270 4 59.88 539.59 29.85 0.54 2269 -2271 4 59.98 539.81 29.25 0.54 2270 -2272 4 59.62 540.17 28.64 0.54 2271 -2273 4 59.29 540.5 28.4 0.54 2272 -2274 4 59.24 541.17 27.94 0.54 2273 -2275 4 59.32 541.68 27.3 0.54 2274 -2276 4 58.81 542.19 26.79 0.54 2275 -2277 4 58.14 543.48 26.23 0.54 2276 -2278 4 58.07 544.76 25.76 0.54 2277 -2279 4 58.32 546.03 25.25 0.54 2278 -2280 4 58.55 547.32 24.67 0.54 2279 -2281 4 58.82 547.67 24.22 0.54 2280 -2282 4 59.4 548.3 24.01 0.54 2281 -2283 4 60.73 549.42 23.54 0.54 2282 -2284 4 61.76 549.92 23.19 0.54 2283 -2285 4 63.43 551.0 23.07 0.54 2284 -2286 4 64.13 552.74 22.58 0.54 2285 -2287 4 64.24 553.84 22.29 0.54 2286 -2288 4 65.11 554.8 21.85 0.54 2287 -2289 4 65.65 555.19 21.08 0.54 2288 -2290 4 66.55 555.81 20.98 0.54 2289 -2291 4 67.24 556.66 20.24 0.54 2290 -2292 4 67.35 556.86 19.72 0.54 2291 -2293 4 68.34 558.0 18.99 0.54 2292 -2294 4 69.21 559.57 18.62 0.54 2293 -2295 4 70.23 560.4 18.14 0.54 2294 -2296 4 70.45 560.79 17.17 0.54 2295 -2297 4 70.86 561.29 16.81 0.54 2296 -2298 4 71.45 561.94 16.52 0.54 2297 -2299 4 72.6 563.83 15.99 0.54 2298 -2300 4 72.7 565.56 15.61 0.54 2299 -2301 4 73.54 568.06 15.03 0.54 2300 -2302 4 74.38 568.75 14.34 0.54 2301 -2303 4 74.67 569.39 12.56 0.54 2302 -2304 4 75.73 570.17 12.39 0.54 2303 -2305 4 76.89 571.45 11.81 0.54 2304 -2306 4 77.94 573.13 11.87 0.54 2305 -2307 4 78.76 575.36 11.1 0.54 2306 -2308 4 79.3 576.06 10.3 0.54 2307 -2309 4 80.31 577.19 9.71 0.54 2308 -2310 4 81.31 578.93 9.17 0.54 2309 -2311 4 82.86 579.76 8.13 0.54 2310 -2312 4 83.76 583.11 8.38 0.54 2311 -2313 4 83.89 585.4 8.52 0.54 2312 -2314 4 83.09 588.03 8.39 0.54 2313 -2315 4 82.89 591.55 8.53 0.54 2314 -2316 4 82.42 594.13 8.74 0.54 2315 -2317 4 82.09 597.81 8.83 0.54 2316 -2318 4 80.69 599.8 8.85 0.54 2317 -2319 4 79.69 600.78 8.21 0.54 2318 -2320 4 26.36 477.48 22.58 0.755 2166 -2321 4 24.42 479.08 23.43 0.755 2320 -2322 4 23.06 481.64 23.96 0.755 2321 -2323 4 21.95 482.74 23.71 0.755 2322 -2324 4 21.76 484.24 25.7 0.755 2323 -2325 4 21.44 485.15 25.82 0.755 2324 -2326 4 21.44 488.19 26.11 0.755 2325 -2327 4 22.34 490.02 26.21 0.54 2326 -2328 4 23.55 491.86 26.27 0.54 2327 -2329 4 24.7 492.57 25.41 0.54 2328 -2330 4 26.64 493.37 25.0 0.54 2329 -2331 4 28.16 494.6 24.99 0.54 2330 -2332 4 29.82 496.6 25.02 0.54 2331 -2333 4 31.5 499.79 25.33 0.54 2332 -2334 4 35.02 503.9 25.71 0.54 2333 -2335 4 36.39 505.89 25.78 0.54 2334 -2336 4 37.44 507.57 25.85 0.54 2335 -2337 4 39.27 508.79 25.87 0.54 2336 -2338 4 41.55 511.1 25.89 0.54 2337 -2339 4 43.37 512.94 25.89 0.54 2338 -2340 4 45.21 515.97 26.41 0.54 2339 -2341 4 46.45 518.1 26.65 0.54 2340 -2342 4 47.53 519.74 27.02 0.54 2341 -2343 4 48.62 522.01 27.43 0.54 2342 -2344 4 50.17 523.2 27.78 0.54 2343 -2345 4 50.85 523.74 28.6 0.54 2344 -2346 4 51.93 524.48 28.81 0.54 2345 -2347 4 53.46 526.01 28.88 0.54 2346 -2348 4 56.05 529.52 29.14 0.54 2347 -2349 4 57.74 531.78 29.58 0.54 2348 -2350 4 58.99 534.18 30.08 0.54 2349 -2351 4 59.92 536.9 30.63 0.54 2350 -2352 4 60.03 537.4 31.74 0.54 2351 -2353 4 59.3 538.72 32.39 0.54 2352 -2354 4 58.51 539.21 30.61 0.54 2353 -2355 4 58.69 540.25 29.33 0.54 2354 -2356 4 58.29 541.25 28.49 0.54 2355 -2357 4 58.14 542.0 28.57 0.54 2356 -2358 4 57.79 542.95 28.32 0.54 2357 -2359 4 57.57 544.41 27.59 0.54 2358 -2360 4 57.43 545.47 26.19 0.54 2359 -2361 4 57.68 547.64 25.92 0.54 2360 -2362 4 58.55 549.2 25.61 0.54 2361 -2363 4 60.81 550.32 25.21 0.54 2362 -2364 4 62.55 551.33 24.39 0.54 2363 -2365 4 64.07 552.86 24.33 0.54 2364 -2366 4 64.52 555.77 24.57 0.54 2365 -2367 4 66.41 556.93 23.6 0.54 2366 -2368 4 67.27 557.6 23.06 0.54 2367 -2369 4 69.63 560.75 22.39 0.54 2368 -2370 4 70.56 562.25 21.01 0.54 2369 -2371 4 71.46 562.88 19.26 0.54 2370 -2372 4 71.6 564.27 19.3 0.54 2371 -2373 4 72.57 565.75 18.3 0.54 2372 -2374 4 72.91 568.45 17.39 0.54 2373 -2375 4 73.87 569.02 16.15 0.54 2374 -2376 4 74.26 569.56 15.34 0.54 2375 -2377 4 74.92 571.33 14.54 0.54 2376 -2378 4 76.82 573.71 13.77 0.54 2377 -2379 4 77.18 574.27 12.73 0.54 2378 -2380 4 78.21 575.39 12.36 0.54 2379 -2381 4 79.55 577.99 12.43 0.54 2380 -2382 4 80.96 580.25 11.3 0.54 2381 -2383 4 81.84 581.2 11.02 0.54 2382 -2384 4 82.74 582.73 11.0 0.54 2383 -2385 4 82.67 584.93 10.54 0.54 2384 -2386 4 82.51 588.13 10.79 0.54 2385 -2387 4 81.97 591.69 10.44 0.54 2386 -2388 4 81.88 593.0 9.67 0.54 2387 -2389 4 81.54 596.06 9.69 0.54 2388 -2390 4 81.34 597.5 9.25 0.54 2389 -2391 4 80.58 599.45 8.0 0.54 2390 -2392 4 79.34 601.89 8.2 0.54 2391 -2393 4 78.44 602.79 6.85 0.54 2392 -2394 4 20.72 483.94 23.94 0.755 2323 -2395 4 19.2 485.14 24.21 0.755 2394 -2396 4 16.73 486.68 24.28 0.755 2395 -2397 4 15.18 489.43 24.38 0.755 2396 -2398 4 14.35 490.85 23.92 0.755 2397 -2399 4 12.92 492.26 23.58 0.755 2398 -2400 4 11.82 493.95 23.63 0.755 2399 -2401 4 9.92 496.43 23.29 0.755 2400 -2402 4 7.41 498.92 23.01 0.755 2401 -2403 4 5.5 501.41 22.6 0.755 2402 -2404 4 4.59 502.93 22.83 0.755 2403 -2405 4 3.9 503.93 22.08 0.755 2404 -2406 4 3.28 506.96 22.44 0.755 2405 -2407 4 1.99 508.53 22.03 0.755 2406 -2408 4 -0.01 509.91 22.05 0.755 2407 -2409 4 -1.77 511.36 21.36 0.755 2408 -2410 4 -4.16 512.8 20.74 0.755 2409 -2411 4 -6.66 514.37 20.37 0.755 2410 -2412 4 -9.32 516.4 20.06 0.755 2411 -2413 4 -11.82 518.26 19.87 0.755 2412 -2414 4 -14.28 520.09 20.05 0.755 2413 -2415 4 -16.46 522.25 20.0 0.755 2414 -2416 4 -18.6 524.05 20.3 0.755 2415 -2417 4 -20.89 525.7 20.67 0.755 2416 -2418 4 -23.94 527.8 21.16 0.755 2417 -2419 4 -26.93 529.84 20.72 0.755 2418 -2420 4 -29.22 531.8 21.05 0.755 2419 -2421 4 -29.98 534.08 21.35 0.755 2420 -2422 4 -30.75 534.84 20.96 0.755 2421 -2423 4 -31.21 536.5 21.16 0.755 2422 -2424 4 -30.76 540.01 21.46 0.755 2423 -2425 4 -30.25 542.53 20.68 0.755 2424 -2426 4 -30.3 545.32 20.51 0.755 2425 -2427 4 -30.29 546.84 19.14 0.755 2426 -2428 4 -30.31 549.89 19.29 0.755 2427 -2429 4 -29.75 552.96 19.23 0.755 2428 -2430 4 -30.09 554.54 18.9 0.755 2429 -2431 4 -31.06 556.7 18.74 0.755 2430 -2432 4 -32.64 557.96 18.4 0.755 2431 -2433 4 -32.86 561.2 18.21 0.755 2432 -2434 4 -33.38 564.45 17.96 0.755 2433 -2435 4 -34.04 566.93 17.68 0.755 2434 -2436 4 -33.96 570.49 17.41 0.755 2435 -2437 4 -33.17 573.98 16.38 0.755 2436 -2438 4 -32.45 577.82 16.32 0.755 2437 -2439 4 -32.12 579.92 15.2 0.755 2438 -2440 4 -32.25 582.78 14.22 0.755 2439 -2441 4 -32.01 584.97 13.8 0.755 2440 -2442 4 -31.58 586.68 13.62 0.755 2441 -2443 4 -30.45 589.2 12.94 0.755 2442 -2444 4 -29.95 590.83 11.99 0.755 2443 -2445 4 -29.68 592.4 11.66 0.755 2444 -2446 4 -29.88 595.32 11.58 0.755 2445 -2447 4 -29.65 597.51 11.17 0.755 2446 -2448 4 -28.28 599.5 11.17 0.755 2447 -2449 4 -26.84 601.72 10.49 0.755 2448 -2450 4 -27.0 604.61 10.79 0.755 2449 -2451 4 -26.27 606.94 10.56 0.755 2450 -2452 4 -25.77 609.69 10.64 0.755 2451 -2453 4 -26.39 612.12 10.93 0.755 2452 -2454 4 -27.3 614.54 11.26 0.755 2453 -2455 4 -28.75 616.58 10.76 0.755 2454 -2456 4 -29.58 619.82 10.55 0.755 2455 -2457 4 -29.82 622.48 10.07 0.755 2456 -2458 4 -30.14 625.24 10.14 0.755 2457 -2459 4 -31.18 628.09 9.23 0.755 2458 -2460 4 -31.97 631.59 9.5 0.755 2459 -2461 4 -33.21 634.65 9.68 0.755 2460 -2462 4 -34.46 637.08 9.95 0.755 2461 -2463 4 -34.52 640.79 9.65 0.755 2462 -2464 4 -35.78 643.25 9.62 0.755 2463 -2465 4 -36.33 645.32 8.9 0.755 2464 -2466 4 -37.28 647.47 8.89 0.755 2465 -2467 4 -38.71 650.71 8.74 0.755 2466 -2468 4 -39.06 654.69 8.85 0.755 2467 -2469 4 -38.94 658.81 9.09 0.755 2468 -2470 4 -38.69 661.92 8.7 0.755 2469 -2471 4 -38.58 665.73 8.9 0.755 2470 -2472 4 -38.48 669.28 8.79 0.755 2471 -2473 4 -36.45 674.25 8.18 0.755 2472 -2474 4 -35.23 677.91 8.42 0.755 2473 -2475 4 -35.36 680.69 7.11 0.755 2474 -2476 4 -35.11 684.39 6.85 0.755 2475 -2477 4 -35.23 686.32 7.57 0.755 2476 -2478 4 -35.07 688.29 7.83 0.755 2477 -2479 4 -35.04 690.69 6.85 0.755 2478 -2480 4 -34.86 693.24 5.88 0.755 2479 -2481 4 -34.95 696.08 5.1 0.755 2480 -2482 4 -35.02 698.27 4.64 0.755 2481 -2483 4 -34.65 700.63 4.07 0.755 2482 -2484 4 -34.07 703.1 3.9 0.755 2483 -2485 4 -32.44 705.74 2.11 0.755 2484 -2486 4 -30.6 706.97 2.06 0.755 2485 -2487 4 -28.65 708.68 1.9 0.755 2486 -2488 4 -27.71 709.59 0.45 0.755 2487 -2489 4 -25.75 710.99 0.26 0.755 2488 -2490 4 -24.15 712.43 -0.41 0.755 2489 -2491 4 -21.64 713.91 -1.26 0.755 2490 -2492 4 -20.49 715.5 -1.96 0.755 2491 -2493 4 -19.15 716.91 -2.25 0.755 2492 -2494 4 -17.57 718.38 -3.09 0.755 2493 -2495 4 -15.77 719.65 -3.57 0.755 2494 -2496 4 -14.31 720.93 -4.04 0.755 2495 -2497 4 -13.02 722.09 -4.96 0.755 2496 -2498 4 -12.3 722.91 -5.48 0.755 2497 -2499 4 0.45 311.01 18.62 0.975 2100 -2500 4 -0.41 312.78 17.74 0.975 2499 -2501 4 -1.24 313.6 17.23 0.975 2500 -2502 4 -1.75 314.11 16.64 0.975 2501 -2503 4 -1.81 316.3 16.33 0.975 2502 -2504 4 -1.73 318.05 15.65 0.975 2503 -2505 4 -2.05 319.58 15.76 0.975 2504 -2506 4 -2.58 321.63 15.25 0.975 2505 -2507 4 -3.23 322.86 15.13 0.975 2506 -2508 4 -4.25 324.19 14.06 0.865 2507 -2509 4 -5.18 325.71 14.3 0.865 2508 -2510 4 -5.49 328.14 14.56 0.865 2509 -2511 4 -4.58 331.49 14.81 0.865 2510 -2512 4 -3.58 333.83 14.42 0.865 2511 -2513 4 -3.49 335.87 13.94 0.865 2512 -2514 4 -3.81 338.62 14.08 0.865 2513 -2515 4 -5.36 341.96 14.47 0.865 2514 -2516 4 -6.25 344.68 13.45 0.865 2515 -2517 4 -7.41 347.64 12.94 0.865 2516 -2518 4 -8.21 349.66 12.76 0.865 2517 -2519 4 -9.21 351.85 12.23 0.865 2518 -2520 4 -9.95 353.8 11.13 0.865 2519 -2521 4 -10.57 356.85 11.42 0.865 2520 -2522 4 -11.34 358.81 11.68 0.865 2521 -2523 4 -12.0 361.28 11.53 0.865 2522 -2524 4 -14.22 363.19 11.01 0.865 2523 -2525 4 -15.83 365.69 10.49 0.865 2524 -2526 4 -18.06 369.41 10.07 0.865 2525 -2527 4 -19.29 373.04 10.54 0.865 2526 -2528 4 -22.14 377.07 10.14 0.865 2527 -2529 4 -23.1 379.24 9.98 0.865 2528 -2530 4 -23.53 380.89 8.84 0.865 2529 -2531 4 -23.88 383.35 8.72 0.865 2530 -2532 4 -24.53 387.03 8.77 0.865 2531 -2533 4 -24.08 389.32 8.95 0.865 2532 -2534 4 -24.09 391.45 9.16 0.865 2533 -2535 4 -24.86 394.03 9.48 0.865 2534 -2536 4 -25.48 395.85 8.05 0.865 2535 -2537 4 -26.13 397.42 7.81 0.865 2536 -2538 4 -26.68 399.8 7.1 0.865 2537 -2539 4 -26.49 400.51 6.33 0.865 2538 -2540 4 -25.58 402.04 6.39 0.865 2539 -2541 4 -24.74 402.73 7.22 0.865 2540 -2542 4 -24.29 404.69 7.51 0.865 2541 -2543 4 -23.23 406.69 7.6 0.755 2542 -2544 4 -22.88 408.46 8.29 0.755 2543 -2545 4 -22.43 409.53 8.35 0.755 2544 -2546 4 -21.7 410.33 8.05 0.755 2545 -2547 4 -20.98 411.14 7.53 0.755 2546 -2548 4 -20.3 412.0 6.66 0.755 2547 -2549 4 -19.27 412.5 6.31 0.755 2548 -2550 4 -18.52 412.96 6.2 0.865 2549 -2551 4 -17.16 414.95 6.27 0.865 2550 -2552 4 -15.9 417.06 5.15 0.865 2551 -2553 4 -14.49 419.23 4.55 0.865 2552 -2554 4 -14.04 422.43 4.83 0.865 2553 -2555 4 -13.9 425.02 3.32 0.865 2554 -2556 4 -14.02 426.97 2.32 0.865 2555 -2557 4 -14.02 429.4 1.04 0.865 2556 -2558 4 -13.44 431.27 0.72 0.865 2557 -2559 4 -12.65 432.3 -0.38 0.865 2558 -2560 4 -11.8 433.29 -1.12 0.865 2559 -2561 4 -10.33 434.26 -1.62 0.865 2560 -2562 4 -9.34 435.12 -2.54 0.865 2561 -2563 4 -7.91 435.84 -3.57 0.865 2562 -2564 4 -6.58 436.96 -3.96 0.865 2563 -2565 4 -5.57 439.61 -4.4 0.865 2564 -2566 4 -5.38 440.92 -5.34 0.865 2565 -2567 4 -4.84 441.91 -6.06 0.865 2566 -2568 4 -4.81 443.41 -7.21 0.865 2567 -2569 4 -4.87 444.69 -7.75 0.865 2568 -2570 4 -5.13 445.57 -8.86 0.865 2569 -2571 4 -5.01 446.65 -8.98 0.865 2570 -2572 4 -4.96 447.81 -9.93 0.865 2571 -2573 4 -5.06 449.15 -10.93 0.865 2572 -2574 4 -4.75 449.29 -11.62 0.54 2573 -2575 4 -3.29 449.98 -12.38 0.54 2574 -2576 4 -2.58 450.49 -13.0 0.54 2575 -2577 4 -2.33 450.54 -13.46 0.54 2576 -2578 4 -1.64 451.07 -14.22 0.54 2577 -2579 4 -0.5 452.39 -15.11 0.54 2578 -2580 4 -0.14 453.85 -15.99 0.54 2579 -2581 4 -0.05 454.99 -16.57 0.54 2580 -2582 4 0.18 455.67 -17.28 0.54 2581 -2583 4 0.48 455.98 -17.35 0.54 2582 -2584 4 0.13 456.62 -17.63 0.54 2583 -2585 4 0.62 457.37 -18.97 0.54 2584 -2586 4 -0.14 458.15 -20.56 0.54 2585 -2587 4 -0.75 459.36 -22.05 0.54 2586 -2588 4 -1.78 460.98 -22.94 0.54 2587 -2589 4 -1.54 462.27 -23.57 0.54 2588 -2590 4 -0.84 464.32 -24.05 0.54 2589 -2591 4 -1.11 464.9 -25.33 0.54 2590 -2592 4 -0.49 465.5 -25.11 0.54 2591 -2593 4 -0.34 466.55 -24.94 0.54 2592 -2594 4 -0.49 467.31 -26.45 0.54 2593 -2595 4 -0.39 468.13 -26.97 0.54 2594 -2596 4 -0.74 470.01 -27.28 0.54 2595 -2597 4 -0.97 470.83 -27.87 0.54 2596 -2598 4 -1.67 472.13 -28.58 0.54 2597 -2599 4 -0.75 473.06 -28.65 0.54 2598 -2600 4 0.2 473.93 -29.71 0.54 2599 -2601 4 0.79 474.26 -29.96 0.54 2600 -2602 4 2.11 475.08 -30.54 0.54 2601 -2603 4 2.81 475.31 -31.25 0.54 2602 -2604 4 3.67 475.98 -31.81 0.54 2603 -2605 4 5.03 477.05 -31.82 0.54 2604 -2606 4 5.69 477.93 -32.93 0.54 2605 -2607 4 6.67 479.09 -33.81 0.54 2606 -2608 4 7.67 481.74 -34.25 0.54 2607 -2609 4 8.44 482.82 -35.8 0.54 2608 -2610 4 9.07 484.33 -37.16 0.54 2609 -2611 4 9.71 485.22 -38.41 0.54 2610 -2612 4 10.16 485.67 -38.41 0.54 2611 -2613 4 11.12 486.86 -39.51 0.54 2612 -2614 4 11.62 487.59 -40.69 0.54 2613 -2615 4 12.5 488.85 -40.96 0.54 2614 -2616 4 13.86 490.84 -40.89 0.54 2615 -2617 4 14.78 491.76 -40.88 0.54 2616 -2618 4 15.2 492.24 -41.18 0.54 2617 -2619 4 15.27 493.08 -41.94 0.54 2618 -2620 4 16.1 493.79 -42.86 0.54 2619 -2621 4 16.49 494.33 -43.6 0.54 2620 -2622 4 16.5 494.62 -45.07 0.54 2621 -2623 4 17.73 495.24 -45.13 0.54 2622 -2624 4 18.31 495.88 -45.34 0.54 2623 -2625 4 18.85 496.56 -46.09 0.54 2624 -2626 4 19.69 497.56 -46.82 0.54 2625 -2627 4 20.38 498.39 -47.49 0.54 2626 -2628 4 21.06 499.85 -48.25 0.54 2627 -2629 4 21.6 501.14 -48.84 0.54 2628 -2630 4 22.39 502.73 -48.76 0.54 2629 -2631 4 22.61 503.49 -49.38 0.54 2630 -2632 4 23.96 504.88 -49.45 0.54 2631 -2633 4 25.57 508.45 -49.93 0.54 2632 -2634 4 26.97 511.91 -50.78 0.54 2633 -2635 4 27.71 513.93 -50.89 0.54 2634 -2636 4 28.54 515.53 -51.56 0.54 2635 -2637 4 28.97 516.64 -51.94 0.54 2636 -2638 4 29.65 518.08 -52.54 0.54 2637 -2639 4 30.79 519.69 -53.39 0.54 2638 -2640 4 32.95 523.04 -54.55 0.54 2639 -2641 4 33.78 525.84 -55.04 0.54 2640 -2642 4 34.99 529.21 -56.49 0.54 2641 -2643 4 35.75 531.81 -57.97 0.54 2642 -2644 4 36.13 533.87 -58.56 0.54 2643 -2645 4 35.91 537.95 -58.37 0.54 2644 -2646 4 36.37 539.31 -59.71 0.54 2645 -2647 4 37.22 541.51 -60.26 0.54 2646 -2648 4 37.72 543.15 -61.28 0.54 2647 -2649 4 38.29 543.73 -61.27 0.54 2648 -2650 4 38.41 544.21 -61.54 0.11 2649 -2651 4 37.6 545.31 -61.8 0.435 2650 -2652 4 36.83 548.18 -61.46 0.435 2651 -2653 4 36.22 550.02 -61.31 0.435 2652 -2654 4 35.87 550.37 -61.69 0.435 2653 -2655 4 35.35 553.01 -61.99 0.435 2654 -2656 4 34.88 554.08 -61.91 0.435 2655 -2657 4 35.14 556.25 -62.18 0.435 2656 -2658 4 35.21 557.09 -63.01 0.435 2657 -2659 4 35.17 557.73 -63.25 0.435 2658 -2660 4 35.41 559.32 -63.79 0.435 2659 -2661 4 35.81 559.85 -64.46 0.435 2660 -2662 4 35.76 560.51 -64.85 0.435 2661 -2663 4 36.27 561.21 -65.89 0.435 2662 -2664 4 36.21 562.19 -66.39 0.435 2663 -2665 4 36.15 562.25 -67.05 0.435 2664 -2666 4 36.99 563.24 -67.71 0.435 2665 -2667 4 38.29 565.32 -68.54 0.435 2666 -2668 4 38.96 565.85 -67.72 0.435 2667 -2669 4 39.41 566.93 -67.72 0.435 2668 -2670 4 39.67 567.27 -68.17 0.435 2669 -2671 4 39.73 567.54 -69.29 0.435 2670 -2672 4 40.12 568.06 -69.95 0.435 2671 -2673 4 40.64 568.76 -70.84 0.435 2672 -2674 4 40.89 569.12 -71.43 0.435 2673 -2675 4 41.23 569.41 -72.72 0.435 2674 -2676 4 42.55 570.23 -73.3 0.435 2675 -2677 4 43.04 570.96 -74.47 0.435 2676 -2678 4 44.59 571.87 -75.89 0.435 2677 -2679 4 46.21 572.71 -76.57 0.435 2678 -2680 4 47.96 574.0 -77.28 0.435 2679 -2681 4 48.98 574.52 -77.86 0.435 2680 -2682 4 49.68 575.06 -78.69 0.435 2681 -2683 4 51.18 576.3 -78.86 0.435 2682 -2684 4 52.38 576.63 -79.02 0.435 2683 -2685 4 53.07 576.56 -79.84 0.435 2684 -2686 4 53.63 576.92 -80.4 0.435 2685 -2687 4 54.5 577.58 -80.94 0.435 2686 -2688 4 38.92 545.0 -61.35 0.54 2649 -2689 4 39.59 545.86 -62.32 0.54 2688 -2690 4 39.83 547.44 -62.8 0.54 2689 -2691 4 40.2 548.91 -63.59 0.54 2690 -2692 4 39.93 549.79 -64.76 0.54 2691 -2693 4 40.73 551.11 -64.25 0.54 2692 -2694 4 42.55 552.96 -64.25 0.54 2693 -2695 4 44.21 554.65 -64.3 0.54 2694 -2696 4 44.58 555.52 -65.24 0.54 2695 -2697 4 45.64 557.2 -65.18 0.54 2696 -2698 4 46.81 559.99 -66.97 0.54 2697 -2699 4 48.13 562.04 -67.51 0.54 2698 -2700 4 49.0 564.21 -67.81 0.54 2699 -2701 4 50.03 565.33 -68.19 0.54 2700 -2702 4 50.9 566.28 -68.55 0.54 2701 -2703 4 52.68 567.85 -68.94 0.54 2702 -2704 4 56.02 571.54 -68.89 0.54 2703 -2705 4 58.84 573.92 -69.67 0.54 2704 -2706 4 60.43 575.37 -70.44 0.54 2705 -2707 4 61.6 576.65 -70.87 0.54 2706 -2708 4 63.19 579.03 -71.7 0.54 2707 -2709 4 63.94 579.81 -71.76 0.54 2708 -2710 4 65.4 581.1 -72.45 0.54 2709 -2711 4 66.7 581.94 -73.17 0.54 2710 -2712 4 69.07 583.76 -73.37 0.54 2711 -2713 4 70.55 584.43 -73.95 0.54 2712 -2714 4 72.2 585.53 -74.23 0.54 2713 -2715 4 73.5 586.37 -74.95 0.54 2714 -2716 4 74.67 587.34 -75.5 0.54 2715 -2717 4 76.08 588.98 -76.59 0.54 2716 -2718 4 78.19 590.26 -76.9 0.54 2717 -2719 4 79.84 591.64 -76.99 0.54 2718 -2720 4 80.71 592.31 -77.6 0.54 2719 -2721 4 82.15 593.33 -78.55 0.54 2720 -2722 4 82.64 594.06 -79.73 0.54 2721 -2723 4 84.0 594.84 -79.86 0.54 2722 -2724 4 84.73 595.34 -80.26 0.54 2723 -2725 4 85.78 596.12 -80.35 0.54 2724 -2726 4 86.62 596.81 -81.11 0.54 2725 -2727 4 -5.68 450.37 -10.83 0.755 2573 -2728 4 -7.62 451.97 -11.56 0.755 2727 -2729 4 -8.69 452.12 -11.59 0.755 2728 -2730 4 -10.72 453.23 -11.83 0.755 2729 -2731 4 -11.21 454.92 -11.91 0.755 2730 -2732 4 -12.07 457.6 -12.63 0.755 2731 -2733 4 -12.78 459.52 -13.43 0.755 2732 -2734 4 -13.79 461.13 -14.09 0.755 2733 -2735 4 -14.92 462.85 -14.51 0.755 2734 -2736 4 -16.0 466.65 -14.1 0.755 2735 -2737 4 -17.08 471.05 -13.58 0.65 2736 -2738 4 -17.55 473.64 -13.28 0.65 2737 -2739 4 -18.17 476.06 -12.99 0.65 2738 -2740 4 -18.93 477.41 -12.79 0.65 2739 -2741 4 -18.92 478.03 -12.72 0.65 2740 -2742 4 -19.99 479.08 -12.52 0.65 2741 -2743 4 -20.0 481.22 -12.32 0.65 2742 -2744 4 -20.47 484.1 -11.99 0.65 2743 -2745 4 -21.39 487.12 -11.61 0.65 2744 -2746 4 -22.53 489.47 -12.03 0.65 2745 -2747 4 -23.69 491.23 -12.66 0.65 2746 -2748 4 -25.08 494.72 -12.35 0.65 2747 -2749 4 -26.47 498.82 -11.82 0.65 2748 -2750 4 -27.38 501.55 -11.47 0.65 2749 -2751 4 -28.46 503.51 -11.17 0.65 2750 -2752 4 -29.07 504.49 -11.02 0.65 2751 -2753 4 -28.35 504.98 -11.42 0.54 2752 -2754 4 -27.59 505.75 -11.41 0.54 2753 -2755 4 -26.52 506.52 -11.44 0.54 2754 -2756 4 -25.61 507.43 -11.43 0.54 2755 -2757 4 -25.62 508.66 -11.31 0.54 2756 -2758 4 -25.5 509.45 -11.63 0.54 2757 -2759 4 -24.78 510.86 -11.86 0.54 2758 -2760 4 -24.04 512.26 -12.01 0.54 2759 -2761 4 -22.72 514.91 -12.41 0.54 2760 -2762 4 -21.39 515.71 -12.76 0.54 2761 -2763 4 -20.04 517.11 -12.96 0.54 2762 -2764 4 -18.72 518.54 -13.41 0.54 2763 -2765 4 -17.36 519.63 -13.58 0.54 2764 -2766 4 -16.54 521.23 -14.33 0.54 2765 -2767 4 -15.85 523.9 -14.89 0.54 2766 -2768 4 -15.57 526.04 -14.86 0.54 2767 -2769 4 -14.71 528.24 -15.25 0.54 2768 -2770 4 -14.13 529.49 -15.49 0.54 2769 -2771 4 -11.55 531.19 -15.62 0.54 2770 -2772 4 -9.73 533.95 -15.53 0.54 2771 -2773 4 -8.89 536.13 -15.92 0.54 2772 -2774 4 -8.8 538.78 -16.35 0.54 2773 -2775 4 -7.45 543.52 -16.1 0.54 2774 -2776 4 -7.16 546.86 -15.79 0.54 2775 -2777 4 -6.71 550.38 -15.49 0.54 2776 -2778 4 -6.26 552.04 -15.37 0.54 2777 -2779 4 -6.58 554.78 -15.08 0.54 2778 -2780 4 -6.43 557.07 -14.86 0.54 2779 -2781 4 -5.68 559.05 -14.74 0.54 2780 -2782 4 -4.0 560.12 -14.79 0.54 2781 -2783 4 -3.71 562.26 -14.61 0.54 2782 -2784 4 -3.24 565.75 -14.08 0.54 2783 -2785 4 -3.1 568.93 -13.79 0.54 2784 -2786 4 -2.49 570.47 -13.69 0.54 2785 -2787 4 -2.65 573.04 -13.35 0.54 2786 -2788 4 -3.35 576.46 -12.2 0.54 2787 -2789 4 -3.06 579.81 -11.9 0.54 2788 -2790 4 -1.85 581.94 -11.8 0.54 2789 -2791 4 -0.34 585.61 -11.58 0.54 2790 -2792 4 1.06 590.57 -10.55 0.54 2791 -2793 4 1.36 592.1 -10.43 0.54 2792 -2794 4 2.42 593.18 -10.43 0.54 2793 -2795 4 3.33 594.09 -10.42 0.54 2794 -2796 4 4.09 596.99 -10.21 0.54 2795 -2797 4 5.18 601.67 -9.4 0.54 2796 -2798 4 6.39 605.03 -9.1 0.54 2797 -2799 4 8.17 608.71 -7.63 0.54 2798 -2800 4 8.66 611.57 -6.94 0.54 2799 -2801 4 8.85 612.9 -6.37 0.54 2800 -2802 4 8.73 614.22 -5.85 0.54 2801 -2803 4 8.63 615.53 -5.1 0.54 2802 -2804 4 8.21 617.15 -4.3 0.54 2803 -2805 4 7.77 618.49 -3.91 0.54 2804 -2806 4 -29.22 505.49 -10.91 0.65 2752 -2807 4 -30.38 510.28 -11.25 0.65 2806 -2808 4 -30.54 512.56 -11.01 0.65 2807 -2809 4 -31.88 517.53 -11.53 0.65 2808 -2810 4 -32.81 520.25 -11.18 0.65 2809 -2811 4 -34.59 524.5 -10.76 0.65 2810 -2812 4 -35.11 527.47 -11.17 0.65 2811 -2813 4 -36.54 531.0 -11.15 0.65 2812 -2814 4 -37.46 534.04 -12.51 0.65 2813 -2815 4 -38.11 536.8 -12.49 0.65 2814 -2816 4 -39.15 539.05 -13.45 0.65 2815 -2817 4 -39.8 541.51 -13.53 0.65 2816 -2818 4 -41.08 544.31 -13.82 0.65 2817 -2819 4 -43.01 547.42 -14.25 0.65 2818 -2820 4 -43.05 550.19 -14.34 0.65 2819 -2821 4 -43.57 552.83 -14.65 0.65 2820 -2822 4 -44.35 554.81 -14.47 0.65 2821 -2823 4 -45.33 556.4 -14.97 0.65 2822 -2824 4 -45.18 558.68 -14.83 0.65 2823 -2825 4 -45.56 560.87 -15.27 0.65 2824 -2826 4 -46.54 563.05 -15.64 0.65 2825 -2827 4 -47.8 564.91 -15.72 0.65 2826 -2828 4 -48.62 566.93 -15.99 0.65 2827 -2829 4 -49.69 569.52 -15.7 0.65 2828 -2830 4 -51.23 572.23 -15.3 0.65 2829 -2831 4 -52.47 575.28 -15.03 0.65 2830 -2832 4 -52.71 577.04 -15.75 0.65 2831 -2833 4 -52.46 581.04 -15.91 0.65 2832 -2834 4 -52.79 585.91 -15.41 0.65 2833 -2835 4 -53.43 588.98 -15.36 0.65 2834 -2836 4 -54.13 591.48 -15.95 0.65 2835 -2837 4 -54.63 593.8 -16.06 0.65 2836 -2838 4 -55.34 595.72 -16.87 0.65 2837 -2839 4 -56.04 597.02 -17.65 0.65 2838 -2840 4 -56.59 599.4 -18.27 0.65 2839 -2841 4 -58.6 603.8 -17.89 0.65 2840 -2842 4 -59.74 607.65 -17.79 0.65 2841 -2843 4 -61.44 612.95 -17.11 0.65 2842 -2844 4 -62.51 614.61 -16.85 0.65 2843 -2845 4 -64.65 617.03 -16.41 0.65 2844 -2846 4 -66.74 620.92 -16.99 0.65 2845 -2847 4 -68.28 626.39 -16.31 0.65 2846 -2848 4 -69.9 630.41 -16.74 0.65 2847 -2849 4 -70.57 634.1 -16.78 0.65 2848 -2850 4 -72.15 636.28 -17.02 0.65 2849 -2851 4 -74.14 639.76 -16.5 0.65 2850 -2852 4 -76.29 642.78 -16.08 0.65 2851 -2853 4 -80.28 645.82 -15.8 0.65 2852 -2854 4 -83.81 648.7 -15.27 0.65 2853 -2855 4 -86.4 652.46 -14.66 0.65 2854 -2856 4 -86.7 653.63 -16.33 0.65 2855 -2857 4 -88.69 656.8 -15.83 0.65 2856 -2858 4 -90.16 660.37 -16.26 0.65 2857 -2859 4 -90.83 664.69 -16.31 0.65 2858 -2860 4 -92.21 668.77 -15.78 0.65 2859 -2861 4 -92.89 672.19 -16.15 0.65 2860 -2862 4 -94.32 674.81 -16.28 0.65 2861 -2863 4 -95.39 676.78 -15.99 0.65 2862 -2864 4 -96.13 678.12 -17.23 0.65 2863 -2865 4 -97.23 680.42 -17.13 0.65 2864 -2866 4 -98.4 681.58 -18.04 0.65 2865 -2867 4 -99.66 684.65 -18.01 0.65 2866 -2868 4 -100.65 686.24 -18.59 0.65 2867 -2869 4 -101.65 687.22 -19.15 0.65 2868 -2870 4 -101.87 688.35 -19.78 0.65 2869 -2871 4 -102.17 690.47 -19.47 0.65 2870 -2872 4 -102.02 693.06 -19.23 0.65 2871 -2873 4 -102.79 694.41 -19.03 0.65 2872 -2874 4 -103.4 696.84 -18.74 0.65 2873 -2875 4 -103.41 699.89 -18.43 0.65 2874 -2876 4 -103.28 701.26 -18.4 0.65 2875 -2877 4 -102.84 703.86 -18.25 0.65 2876 -2878 4 -102.62 706.68 -18.84 0.65 2877 -2879 4 -102.17 708.97 -18.65 0.65 2878 -2880 4 -101.57 712.62 -18.36 0.65 2879 -2881 4 -101.12 716.13 -18.05 0.65 2880 -2882 4 -101.59 719.31 -17.7 0.65 2881 -2883 4 -101.45 723.13 -17.34 0.65 2882 -2884 4 -100.55 727.08 -17.04 0.65 2883 -2885 4 -99.54 730.7 -16.84 0.65 2884 -2886 4 -99.0 736.53 -16.86 0.65 2885 -2887 4 -98.71 738.97 -16.65 0.65 2886 -2888 4 -97.84 739.93 -17.09 0.65 2887 -2889 4 -96.18 741.32 -17.26 0.65 2888 -2890 4 -94.52 743.93 -17.16 0.65 2889 -2891 4 -93.56 748.14 -17.82 0.65 2890 -2892 4 -93.31 750.02 -18.19 0.65 2891 -2893 4 -92.56 752.01 -18.14 0.65 2892 -2894 4 -91.61 753.82 -19.26 0.65 2893 -2895 4 -90.7 754.74 -19.33 0.65 2894 -2896 4 -103.71 688.65 -19.73 0.65 2869 -2897 4 -105.4 690.34 -19.64 0.65 2896 -2898 4 -107.22 692.14 -20.81 0.65 2897 -2899 4 -108.98 692.97 -21.48 0.65 2898 -2900 4 -110.42 694.08 -21.92 0.65 2899 -2901 4 -112.79 695.52 -22.47 0.65 2900 -2902 4 -114.23 696.65 -22.99 0.65 2901 -2903 4 -115.02 697.43 -23.2 0.65 2902 -2904 4 -116.57 700.18 -23.02 0.65 2903 -2905 4 -117.92 701.51 -24.12 0.65 2904 -2906 4 -118.68 703.48 -23.87 0.65 2905 -2907 4 -119.14 706.06 -23.57 0.65 2906 -2908 4 -118.3 710.09 -23.85 0.65 2907 -2909 4 -117.2 712.04 -24.91 0.65 2908 -2910 4 -116.16 715.54 -24.73 0.65 2909 -2911 4 -115.67 719.32 -25.62 0.65 2910 -2912 4 -115.32 721.72 -26.63 0.65 2911 -2913 4 -114.96 723.78 -27.29 0.65 2912 -2914 4 -114.38 725.05 -27.67 0.65 2913 -2915 4 -113.51 726.6 -27.98 0.65 2914 -2916 4 -113.22 728.44 -27.91 0.65 2915 -2917 4 -112.84 730.5 -28.49 0.65 2916 -2918 4 -27.98 401.37 6.92 0.65 2538 -2919 4 -29.04 402.74 7.15 0.65 2918 -2920 4 -31.79 405.45 7.68 0.65 2919 -2921 4 -34.06 407.7 6.67 0.65 2920 -2922 4 -35.9 409.5 7.01 0.65 2921 -2923 4 -38.35 411.92 7.41 0.65 2922 -2924 4 -41.44 414.68 7.43 0.65 2923 -2925 4 -46.14 419.63 7.14 0.65 2924 -2926 4 -48.43 422.49 7.62 0.65 2925 -2927 4 -48.54 425.34 6.78 0.65 2926 -2928 4 -48.64 428.77 6.22 0.65 2927 -2929 4 -48.07 430.64 5.89 0.65 2928 -2930 4 -47.63 433.53 6.06 0.54 2929 -2931 4 -47.99 435.73 5.77 0.54 2930 -2932 4 -48.6 437.55 4.35 0.54 2931 -2933 4 -49.3 438.85 3.63 0.54 2932 -2934 4 -49.29 439.74 5.46 0.54 2933 -2935 4 -50.1 440.54 5.16 0.54 2934 -2936 4 -50.96 441.39 4.26 0.54 2935 -2937 4 -51.52 442.86 3.39 0.54 2936 -2938 4 -52.49 444.74 3.07 0.54 2937 -2939 4 -53.85 447.31 1.86 0.54 2938 -2940 4 -54.82 448.87 1.56 0.54 2939 -2941 4 -54.78 450.35 0.58 0.54 2940 -2942 4 -55.02 452.7 0.0 0.54 2941 -2943 4 -55.12 454.94 -0.91 0.54 2942 -2944 4 -55.78 456.2 -1.17 0.54 2943 -2945 4 -57.93 457.42 -1.09 0.54 2944 -2946 4 -60.72 460.18 -1.02 0.54 2945 -2947 4 -61.87 463.13 -1.44 0.54 2946 -2948 4 -62.44 464.91 -2.35 0.54 2947 -2949 4 -62.81 466.19 -2.88 0.54 2948 -2950 4 -62.67 466.98 -3.04 0.54 2949 -2951 4 -5.99 292.26 22.29 0.865 2088 -2952 4 -5.25 294.24 22.42 0.865 2951 -2953 4 -4.94 296.38 22.6 0.865 2952 -2954 4 -3.89 299.58 22.82 0.865 2953 -2955 4 -1.99 302.56 22.11 0.865 2954 -2956 4 -0.94 304.26 22.18 0.865 2955 -2957 4 -0.79 306.85 22.41 0.865 2956 -2958 4 -1.4 310.18 22.8 0.865 2957 -2959 4 -2.07 313.26 24.29 0.865 2958 -2960 4 -1.92 315.84 24.61 0.865 2959 -2961 4 -2.08 318.11 24.91 0.865 2960 -2962 4 -2.39 321.15 25.24 0.865 2961 -2963 4 -3.31 324.17 25.7 0.865 2962 -2964 4 -4.07 326.74 26.09 0.65 2963 -2965 4 -6.04 328.69 26.61 0.65 2964 -2966 4 -7.57 332.02 27.16 0.65 2965 -2967 4 -8.07 332.51 28.39 0.65 2966 -2968 4 -9.45 333.87 28.64 0.65 2967 -2969 4 -11.59 335.97 29.04 0.65 2968 -2970 4 -12.81 339.01 29.46 0.65 2969 -2971 4 -14.35 342.33 29.92 0.65 2970 -2972 4 -16.34 344.9 30.36 0.65 2971 -2973 4 -18.01 346.25 30.64 0.65 2972 -2974 4 -19.26 348.09 32.3 0.65 2973 -2975 4 -19.83 349.85 33.05 0.65 2974 -2976 4 -20.38 351.0 33.9 0.65 2975 -2977 4 -21.41 352.01 34.62 0.65 2976 -2978 4 -21.71 352.9 34.81 0.65 2977 -2979 4 -21.97 353.78 35.37 0.65 2978 -2980 4 -21.82 356.05 35.65 0.65 2979 -2981 4 -21.83 358.78 35.92 0.65 2980 -2982 4 -21.29 360.38 36.93 0.65 2981 -2983 4 -20.75 362.49 38.54 0.65 2982 -2984 4 -19.8 363.97 39.11 0.65 2983 -2985 4 -19.08 364.47 40.23 0.65 2984 -2986 4 -18.66 364.64 41.56 0.65 2985 -2987 4 -18.04 365.84 41.93 0.65 2986 -2988 4 -17.67 365.79 42.5 0.65 2987 -2989 4 -17.2 365.91 44.37 0.65 2988 -2990 4 -6.61 91.18 9.77 0.435 1189 -2991 4 -7.98 91.62 9.94 0.435 2990 -2992 4 -8.7 91.42 10.44 0.435 2991 -2993 4 -8.69 91.11 10.56 0.65 2992 -2994 4 -8.95 90.75 11.08 0.65 2993 -2995 4 -8.89 90.09 11.62 0.65 2994 -2996 4 -9.16 89.43 11.96 0.65 2995 -2997 4 -9.56 88.31 12.41 0.65 2996 -2998 4 -9.55 87.99 12.53 0.65 2997 -2999 4 -9.83 87.06 12.69 0.65 2998 -3000 4 -9.81 86.44 12.78 0.65 2999 -3001 4 -9.77 86.09 13.2 0.65 3000 -3002 4 -9.87 85.27 13.65 0.65 3001 -3003 4 -9.68 84.79 13.89 0.65 3002 -3004 4 -9.21 84.32 13.95 0.65 3003 -3005 4 -8.85 83.96 14.57 0.65 3004 -3006 4 -8.62 83.72 15.35 0.65 3005 -3007 4 -8.21 83.31 16.42 0.65 3006 -3008 4 -7.9 82.7 16.39 0.65 3007 -3009 4 -7.85 82.04 16.93 0.65 3008 -3010 4 -7.79 81.68 17.42 0.65 3009 -3011 4 -7.91 80.57 17.78 0.435 3010 -3012 4 -7.99 80.05 18.49 0.435 3011 -3013 4 -7.97 79.73 18.53 0.435 3012 -3014 4 -8.26 79.11 18.65 0.435 3013 -3015 4 -8.4 78.63 18.84 0.435 3014 -3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p b/examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p deleted file mode 100644 index 4395d62..0000000 --- a/examples/paper-2015/Fig2_elecModels/cells/ca1_minimal.p +++ /dev/null @@ -1,58 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - - -dend_3 none 0 220 0 3.84 -dend_5 . 0 220 0 3.84 -dend_6 . 0 220 0 3.84 -dend_8 . 0 110 0 3.84 - -soma dend_8 0 125 0 8.46 - - -apical_10 soma 0 120 0 4.0 -apical_11 apical_10 0 120 0 3 -apical_12 apical_11 0 120 0 3 -apical_13 apical_12 0 120 0 2.6 -apical_14 apical_13 0 120 0 2.6 -apical_15 apical_14 0 120 0 2.6 -apical_16 apical_15 0 120 0 2.6 -apical_17 apical_16 0 120 0 2.6 -apical_18 apical_17 0 120 0 2.6 -apical_19 apical_18 0 120 0 2.6 - -apical_11_1 apical_10 -60 60 0 2 -apical_11_2 apical_11_1 -60 60 0 1.8 -apical_11_3 apical_11_2 0 80 0 1.5 -apical_11_4 apical_11_3 0 80 0 1.5 - -apical_13_1 apical_12 40 40 0 1.0 -apical_13_2 apical_13_1 40 40 0 1.0 - -apical_14_1 apical_13_2 0 10 0 1.0 -apical_14_2 . 0 10 0 1.0 -apical_14_3 . 0 10 0 1.0 -apical_14_4 . 0 10 0 1.0 -apical_14_5 . 0 10 0 1.0 -apical_14_6 . 0 10 0 1.0 -apical_14_7 . 0 10 0 1.0 -apical_14_8 . 0 10 0 1.0 -apical_14_9 . 0 10 0 1.0 -apical_14_10 . 0 10 0 1.0 -apical_14_11 . 0 10 0 1.0 -apical_14_12 . 0 10 0 1.0 -apical_14_13 . 0 10 0 1.0 -apical_15_1 . 0 30 0 1.0 -apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc deleted file mode 100644 index 554dbe2..0000000 --- a/examples/paper-2015/Fig2_elecModels/cells/h10.CNG.swc +++ /dev/null @@ -1,226 +0,0 @@ -# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. -# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. -# -#---------------------------------------------------------------------- -# This file was obtained using ban2swc.pl on file h10.txt -# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 -#---------------------------------------------------------------------- -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 0. 23. 0. 3.35 -1 - 2 1 0. 18. 0. 2.5 1 - 3 1 0. 0. 0. 1.058 2 - 4 3 -4.157 -2.778 0. 0.6 3 - 5 3 -5.925 -3.510 -4.62 0.55 4 - 6 3 -15.47 -7.464 -29.560 0.4 5 - 7 3 -23.89 -9.139 -72.72 0.4 6 - 8 3 -24.39 -13.43 -83.51 0.350 6 - 9 3 -9.814 -5.121 -14.780 0.5 5 - 10 3 -15.81 -6.313 -23.93 0.5 9 - 11 3 -65.94 -16.29 -100.4 0.4 10 - 12 3 -54.5 -14.01 -82.960 0.4 10 - 13 3 -17.2 -10.06 -28.09 0.4 9 - 14 3 -78.64 -51.11 -138.70 0.4 13 - 15 3 -41.69 -26.42 -72.15 0.350 13 - 16 3 -10.11 -8.731 -20.330 0.45 4 - 17 3 -14.44 -13.06 -35.11 0.350 16 - 18 3 -26.61 -21.19 -108.7 0.3 17 - 19 3 -24.2 -27.66 -123.4 0.3 17 - 20 3 -32.3 -30.92 -96.08 0.350 16 - 21 3 -45.7 -39.87 -120.2 0.3 20 - 22 3 -56.99 -67.88 -162.60 0.350 20 - 23 3 -8.889 -13.3 0. 0.65 3 - 24 3 -11.39 -15.8 -3.54 0.55 23 - 25 3 -19.39 -23.8 -14.85 0.5 24 - 26 3 -21.7 -25.35 -19.01 0.45 25 - 27 3 -33.25 -33.06 -39.79 0.4 26 - 28 3 -64.36 -45.95 -121.10 0.350 27 - 29 3 -53.54 -53.36 -109.10 0.350 27 - 30 3 -26.32 -28.43 -27.32 0.4 26 - 31 3 -68.78 -46.02 -73.28 0.3 30 - 32 3 -71.820 -73.93 -91.67 0.350 30 - 33 3 -59.82 -84.320 -123.80 0.350 25 - 34 3 -84.52 -121.30 -190.3 0.25 33 - 35 3 -34.39 -38.80 -36.06 0.350 24 - 36 3 -96.61 -80.38 -86.06 0.3 35 - 37 3 -93.98 -128. -107.7 0.3 35 - 38 3 -15.65 -29.64 -17.68 0.5 23 - 39 3 -17.01 -32.9 -21.21 0.5 38 - 40 3 -21.95 -40.29 -34.52 0.4 39 - 41 3 -50.03 -82.33 -110.2 0.3 40 - 42 3 -49.730 -81.87 -109.30 0.350 40 - 43 3 -22.75 -61.78 -65.28 0.3 39 - 44 3 -37.30 -81.9 -74.25 0.3 38 - 45 3 -2.146 -10.790 0. 0.75 3 - 46 3 -24.77 -65.42 -24.490 0.350 45 - 47 3 -54.47 -137.1 -56.64 0.350 46 - 48 3 -55.18 -138.8 -57.4 0.350 46 - 49 3 -2.146 -20.95 -4.21 0.6 45 - 50 3 -2.146 -35.730 -10.33 0.45 49 - 51 3 -22.75 -139.3 -80.89 0.3 50 - 52 3 29. -192.3 -117. 0.350 50 - 53 3 -2.146 -25.57 -6.12 0.55 49 - 54 3 -3.103 -30.38 -7.10 0.5 53 - 55 3 -49.410 -263.2 -54.31 0.350 54 - 56 3 -22.05 -125.60 -26.41 0.3 54 - 57 3 16.990 -121.80 -25.63 0.3 53 - 58 3 2.146 -10.790 0. 0.65 3 - 59 3 2.146 -20.79 0. 0.4 58 - 60 3 2.146 -235.8 0. 0.350 59 - 61 3 2.146 -250.8 0. 0.25 60 - 62 3 4.059 -15.41 0. 0.4 58 - 63 3 8.269 -25.57 0. 0.350 62 - 64 3 35.63 -163.10 -27.90 0.4 63 - 65 3 45.32 -81.02 -13.27 0.3 63 - 66 3 20.13 -54.21 0. 0.350 62 - 67 3 35.25 -130.20 15.41 0.3 66 - 68 3 78.98 -142.3 21.07 0.350 66 - 69 3 8.889 -13.3 0. 0.6 3 - 70 3 16.67 -32.08 8.42 0.5 69 - 71 3 24.45 -50.86 16.84 0.45 70 - 72 3 49.32 -175.9 42.2 0.350 71 - 73 3 84.38 -140.6 38.30 0.350 71 - 74 3 42.45 -141.4 78.51 0.4 70 - 75 3 48.94 -174. 100.7 0.3 74 - 76 3 16.080 -20.490 4.21 0.4 69 - 77 3 99.04 -103.5 52.81 0.3 76 - 78 3 41.550 -45.97 19.13 0.3 76 - 79 3 63.71 -109.60 64.06 0.3 78 - 80 3 75.26 -126.9 77.95 0.2 79 - 81 3 18.29 -12.22 0. 0.6 3 - 82 3 20.79 -14.72 3.54 0.55 81 - 83 3 26.29 -20.22 11.31 0.5 82 - 84 3 101.10 -132.20 101.30 0.350 83 - 85 3 97.5 -67.8 68.54 0.3 83 - 86 3 47.29 -41.22 41.01 0.25 82 - 87 3 21.56 -13.58 3.54 0.5 81 - 88 3 28.09 -16.28 10.61 0.45 87 - 89 3 122.10 -79.11 86.16 0.3 88 - 90 3 85.99 -27.8 50.050 0.3 88 - 91 3 43.12 -22.51 26.87 0.4 87 - 92 3 75.45 -44.11 85.070 0.350 91 - 93 3 97.61 -33.34 110. 0.350 91 - 94 4 0. 41. 0. 2.550 1 - 95 4 0. 127. 0. 0.3 94 - 96 4 5.932 70.820 -6.05 2.25 94 - 97 4 18.37 133.3 -18.73 1.25 96 - 98 4 26.63 153.3 -23.02 0.6 97 - 99 4 56.65 225.8 -38.63 0.3 98 - 100 4 29.63 160.5 -24.580 0.6 98 - 101 4 91.850 253.70 -24.580 0.350 100 - 102 4 63.97 333.1 -24.580 0.350 100 - 103 4 18.37 142.20 -20.48 1.25 97 - 104 4 18.37 145.1 -21.07 1.25 103 - 105 4 28.28 195. -42.12 0.45 104 - 106 4 33.69 222.10 -53.6 0.350 105 - 107 4 39.1 249.3 -65.08 0.25 106 - 108 4 17.47 149.6 -22.98 1.25 104 - 109 4 4.851 213.10 -49.77 0.5 108 - 110 4 -10.07 288.1 -100.9 0.350 109 - 111 4 15.85 157.8 -26.43 1.25 108 - 112 4 15.85 182.3 -31.3 0.5 111 - 113 4 15.85 235.3 -41.84 0.350 112 - 114 4 15.85 272.2 -57.15 0.3 113 - 115 4 15.85 195.10 -33.84 0.350 112 - 116 4 30.09 266.7 -33.84 0.3 115 - 117 4 0.2380 273.5 -33.84 0.3 115 - 118 4 11.72 167.8 -28.57 1.25 111 - 119 4 3.46 187.70 -32.87 1.25 118 - 120 4 -0.506 207.60 -41.28 1.25 119 - 121 4 -3.39 222.10 -47.410 1.25 120 - 122 4 -3.39 223.8 -48.52 1.25 121 - 123 4 -3.39 247.10 -64.070 0.45 122 - 124 4 1.439 271.40 -88.820 0.3 123 - 125 4 -16.080 310.90 -129.1 0.350 123 - 126 4 -3.39 248.70 -65.19 1.25 122 - 127 4 -3.209 249.70 -65.570 1.25 126 - 128 4 1.297 272.3 -75.14 0.5 127 - 129 4 12. 326.1 -111.80 0.350 128 - 130 4 -0.506 263.2 -71.31 1.25 127 - 131 4 0.2450 265.1 -71.7 0.6 130 - 132 4 3.623 273.2 -73.45 0.55 131 - 133 4 46.230 337. -105.2 0.3 132 - 134 4 22.55 368.40 -113.60 0.350 132 - 135 4 19.01 310.40 -81.45 0.45 131 - 136 4 42.74 367.6 -81.45 0.350 135 - 137 4 -0.506 280.90 -74.820 1.25 130 - 138 4 -0.506 284.8 -75.60 0.850 137 - 139 4 14.450 360. -107.4 0.4 138 - 140 4 18.06 378.1 -115. 0.3 139 - 141 4 -14.02 352.8 -104.30 0.850 138 - 142 4 -20.330 384.5 -117.7 0.70 141 - 143 4 -20.330 441.8 -141.4 0.70 142 - 144 4 -20.330 494.40 -163.20 0.45 143 - 145 4 -20.330 544.30 -196.60 0.350 144 - 146 4 -20.330 582.6 -222.10 0.3 145 - 147 4 -20.330 622.5 -248.8 0.3 145 - 148 4 -20.330 462.1 -149.8 0.6 143 - 149 4 -7.321 527.5 -163.10 0.45 148 - 150 4 -1.389 557.30 -169.20 0.350 149 - 151 4 21.51 612.6 -181.10 0.3 150 - 152 4 -1.389 630.90 -183.8 0.25 150 - 153 4 -36.6 543.9 -166.4 0.6 148 - 154 4 -46.36 592.9 -176.4 0.350 153 - 155 4 -46.36 669.6 -208.10 0.25 154 - 156 4 -74.99 662.1 -207.4 0.25 154 - 157 4 -44.44 583.30 -174.4 0.5 153 - 158 4 -44.44 665.30 -174.4 0.350 157 - 159 4 -44.44 705.30 -174.4 0.25 158 - 160 4 -87.3 686.80 -174.4 0.350 157 - 161 4 -121.7 769.90 -174.4 0.25 160 - 162 4 -32.71 414.40 -131.1 0.45 142 - 163 4 -85.74 542.4 -188.5 0.350 162 - 164 4 -120. 625.2 -225.60 0.3 163 - 165 4 -137.4 667. -244.4 0.25 164 - 166 4 -132.4 655.1 -239. 0.2 164 - 167 4 -0.506 290.7 -76.77 0.9 137 - 168 4 6.713 327. -76.77 0.8 167 - 169 4 8.664 336.8 -76.77 0.6 168 - 170 4 12.49 356. -80.67 0.5 169 - 171 4 21.48 401.3 -89.84 0.350 170 - 172 4 13.74 362.3 -76.77 0.5 168 - 173 4 23.12 385. -71.89 0.25 172 - 174 4 13.74 396.6 -69.94 0.350 172 - 175 4 -20.6 391.70 -76.77 0.350 167 - 176 4 -15.83 311.3 -91.59 0.4 126 - 177 4 -28.44 374.70 -118.4 0.3 176 - 178 4 -14.84 249.8 -67.41 0.45 121 - 179 4 -37.12 303.6 -106.30 0.350 178 - 180 4 -55.25 347.3 -138. 0.3 178 - 181 4 -3.209 221.20 -47.02 0.45 120 - 182 4 -3.209 356.6 -73.95 0.350 181 - 183 4 -31.36 289.2 -61.660 0.350 181 - 184 4 -11.94 210.70 -44.35 0.6 119 - 185 4 -36.06 246.9 -62.33 0.5 184 - 186 4 -67.18 322. -96.01 0.3 185 - 187 4 -81.14 291.90 -88.74 0.3 185 - 188 4 1.208 193.10 -34.04 0.4 118 - 189 4 -21.42 306.90 -34.04 0.3 188 - 190 4 -77.13 310.40 -34.04 0.350 188 - 191 4 18.37 165.70 -25.17 0.5 103 - 192 4 25.78 203. -25.17 0.350 191 - 193 4 56.22 356. -25.17 0.3 192 - 194 4 50.36 326.6 -25.17 0.3 192 - 195 4 16.22 176.5 -25.17 0.350 191 - 196 4 -10.31 309.90 -25.17 0.350 195 - 197 4 2.957 243.20 -25.17 0.3 195 - 198 4 -2.105 51.58 -2.15 0.350 94 - 199 4 -20.09 142. -20.48 0.350 198 - 200 4 -3.061 56.39 -3.12 0.3 198 - 201 4 -3.061 76.39 -3.12 0.3 200 - 202 4 -3.061 142.4 -3.12 0.3 201 - 203 4 -3.061 167.4 -3.12 0.3 201 - 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc b/examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc deleted file mode 100644 index 066eaf4..0000000 --- a/examples/paper-2015/Fig2_elecModels/cells/ko20x-07.CNG.swc +++ /dev/null @@ -1,165 +0,0 @@ -# Original file ko20x-07.swc edited using StdSwc version 1.31 on 7/9/13. -# Irregularities and fixes documented in ko20x-07.swc.std. See StdSwc1.31.doc for more information. -# -# SWC to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\Uzma\NewArchives\ToBeProcessed\WuOriginal\NeuroMorph files\Hippocampal CA1 Neuron\Wu test file\Before L measure\ko20x-07-T1.swc -# -# Original neuron tracing performed in Neuromantic -# which was programmed by Darren Myatt (d.r.myatt@reading.ac.uk) -# See homepage at http://www.rdg.ac.uk/Neuromantic -# -# NEUROMANTIC V1.6.3 (2012-4-11 10:34:10): Saved to 20x-7.swc -# NEUROMANTIC V1.6.3 (6/19/2013 5:45:09 PM): Saved to ko20x-07-T1.swc -# NEUROMANTIC V1.6.3 (7/9/2013 2:47:31 PM): Saved to ko20x-07-T1.swc -1 1 0.0 0.0 0.0 13.655 -1 -2 1 10.4 -8.84 0.0 13.655 1 -3 1 -10.4 8.84 0.0 13.655 1 -4 4 3.38 17.23 0.0 3.5795 1 -5 4 6.39 30.42 -6.0 1.5 4 -6 4 5.47 41.7 -10.0 1.0 5 -7 4 4.56 52.98 -10.0 1.0 6 -8 4 5.28 61.55 -13.0 1.0 7 -9 4 4.36 72.83 -15.0 1.5 8 -10 4 3.45 84.1 -16.0 1.5 9 -11 4 -0.93 94.39 -18.0 1.5 10 -12 4 -5.96 103.91 -19.0 1.5 11 -13 4 -4.4 119.65 -22.0 2.0 12 -14 4 -5.96 130.16 -23.0 1.5 13 -15 4 -6.88 141.44 -24.0 1.5 14 -16 4 -4.39 154.41 -27.0 1.5 15 -17 4 -4.35 154.43 -36.0 0.18199 16 -18 4 -4.94 169.97 -27.0 2.0 17 -19 4 -5.86 181.25 -28.0 2.0 18 -20 4 -8.83 191.65 -28.0 1.5 19 -21 4 -13.86 201.17 -29.0 1.5 20 -22 4 -14.78 212.45 -29.0 1.5 21 -23 4 -11.35 222.66 -30.0 1.5 22 -24 4 -9.34 232.75 -30.0 1.0 23 -25 4 -6.33 239.38 -30.0 1.5 24 -26 4 -10.71 249.67 -29.0 1.5 25 -27 4 -12.92 259.42 -28.0 1.5 26 -28 4 -15.9 269.82 -27.0 1.5 27 -29 4 -16.81 281.1 -27.0 1.5 28 -30 4 -14.15 291.96 -27.0 1.5 29 -31 4 -11.48 302.81 -27.0 2.0 30 -32 4 -10.11 312.15 -32.0 2.0 31 -33 4 -3.64 319.77 -35.0 2.0 32 -34 4 6.1 321.98 -36.0 2.0 33 -35 4 12.58 329.6 -37.0 2.0 34 -36 4 16.01 339.81 -38.0 2.0 35 -37 4 17.07 344.16 -44.0 1.5 36 -38 4 19.09 354.25 -45.0 1.5 37 -39 4 15.47 363.89 -45.0 1.5 38 -40 4 9.14 371.89 -44.0 1.5 39 -41 4 1.52 378.36 -42.0 1.5 40 -42 4 -5.44 385.6 -42.0 1.5 41 -43 4 -8.42 396.0 -42.0 1.5 42 -44 4 -13.45 405.52 -42.0 1.0 43 -45 4 -19.12 414.28 -42.0 1.5 44 -46 4 -19.13 414.43 -42.0 0.10175 45 -47 4 -25.45 422.28 -41.0 1.0 46 -48 4 -26.14 430.74 -40.0 1.0 47 -49 4 -27.05 442.02 -39.0 1.0 48 -50 4 -27.21 452.65 -39.0 1.5 49 -51 4 -24.41 464.05 -45.0 2.4622 50 -52 4 -13.72 417.56 -42.0 1.0 46 -53 4 -7.24 425.18 -41.0 1.0 52 -54 4 -2.29 434.1 -39.0 1.0 53 -55 4 -0.27 444.19 -39.0 1.0 54 -56 4 -38.44 416.26 -47.0 1.5 45 -57 4 -49.07 416.11 -48.0 1.5 56 -58 4 29.79 362.22 -51.0 2.0 38 -59 4 40.31 363.78 -51.0 2.0 58 -60 4 50.71 366.75 -51.0 3.0 59 -61 4 4.09 285.64 -25.0 1.5 30 -62 4 13.65 281.45 -25.0 1.5 61 -63 4 -25.07 234.31 -30.0 1.5 23 -64 4 -32.69 240.79 -29.0 1.5 63 -65 4 -39.66 248.03 -29.0 1.0 64 -66 4 -46.64 255.26 -29.0 1.0 65 -67 4 7.5 173.82 -30.0 1.0 17 -68 4 12.26 182.9 -29.0 2.25 67 -69 4 -13.4 169.28 -36.0 2.0 16 -70 4 -21.02 175.76 -33.0 2.0 69 -71 4 -28.64 182.23 -36.0 2.5 70 -72 4 11.85 146.51 -28.0 1.5 15 -73 4 20.73 150.78 -28.0 3.5 72 -74 4 -16.78 130.17 -30.0 1.5207 14 -75 4 -20.5 130.04 -30.0 2.0 74 -76 3 4.32 -18.33 0.0 2.5 1 -77 3 7.16 -22.71 1.0 1.5 76 -78 3 13.49 -30.71 1.0 2.0 77 -79 3 21.76 -36.42 -3.0 2.0 78 -80 3 32.61 -39.09 -5.0 1.5 79 -81 3 43.47 -41.75 -6.0 1.5 80 -82 3 51.93 -41.06 -6.0 1.0 81 -83 3 62.56 -40.91 -6.0 1.0 82 -84 3 72.65 -42.93 -7.0 1.0 83 -85 3 82.75 -44.94 -7.0 1.0 84 -86 3 93.61 -47.61 -8.0 1.5 85 -87 3 103.29 -53.21 -8.0 1.5 86 -88 3 113.38 -55.22 -9.0 1.5 87 -89 3 122.3 -60.18 -9.0 1.5 88 -90 3 23.43 -48.35 3.0 1.0 79 -91 3 31.7 -54.06 4.0 1.0 90 -92 3 42.56 -56.72 4.0 1.0 91 -93 3 -1.45 -17.03 -1.0 2.1506 1 -94 3 -6.05 -25.91 0.0 1.5 93 -95 3 -11.0 -34.83 -2.0 1.0 94 -96 3 -19.76 -40.51 -1.0 1.0 95 -97 3 -27.76 -46.83 1.0 1.0 96 -98 3 -35.0 -53.81 2.0 1.0 97 -99 3 -40.18 -59.9 4.0 1.0 98 -100 3 -45.13 -68.82 5.0 1.0 99 -101 3 -50.08 -77.73 8.0 1.0 100 -102 3 -54.38 -85.89 10.0 1.0 101 -103 3 -54.99 -95.87 10.0 1.0 102 -104 3 -57.0 -105.96 11.0 1.0 103 -105 3 -41.81 -51.52 2.0 1.2693 98 -106 3 -49.15 -54.25 2.0 1.3333 105 -107 3 -6.96 -40.89 -5.0 1.0 95 -108 3 -2.58 -51.17 -7.0 1.0 107 -109 3 -1.01 -61.69 -10.0 1.0 108 -110 3 1.84 -70.68 -11.0 1.0 109 -111 3 -0.82 -81.53 -13.0 1.5 110 -112 3 -0.66 -92.16 -14.0 1.5 111 -113 3 -4.09 -102.37 -15.0 1.5 112 -114 3 -8.28 -111.94 -16.0 1.5 113 -115 3 -7.7 -118.98 -19.0 1.0 114 -116 3 -6.79 -130.26 -21.0 1.5 115 -117 3 -6.63 -140.89 -23.0 1.5 116 -118 3 -10.06 -151.1 -24.0 1.5 117 -119 3 5.42 -71.09 -11.0 2.5 109 -120 3 9.04 -80.73 -13.0 1.5 119 -121 3 11.25 -90.48 -14.0 1.5 120 -122 3 15.29 -96.54 -18.0 1.5 121 -123 3 20.97 -105.3 -24.0 1.5 122 -124 3 22.84 -110.83 -26.0 1.5 123 -125 3 20.82 -120.92 -26.0 1.5 124 -126 3 -12.14 -14.17 3.0 2.3049 1 -127 3 -23.12 -16.66 6.0 1.0 126 -128 3 -32.87 -18.87 6.0 1.0 127 -129 3 -42.39 -23.9 8.0 1.0 128 -130 3 -55.74 -25.45 5.0 1.0541 129 -131 3 -67.32 -24.15 5.0 1.3017 130 -132 3 -76.81 -32.49 5.0 1.2134 131 -133 3 -85.84 -33.34 5.0 2.1213 132 -134 3 -22.46 -26.18 11.0 1.8333 126 -135 3 -32.88 -40.51 13.0 1.2133 134 -136 3 -43.11 -47.14 12.0 1.0 135 -137 3 -51.92 -60.86 12.0 1.5092 136 -138 3 -14.02 -6.34 3.0 2.5739 1 -139 3 -30.43 -5.19 5.0 1.0 138 -140 3 -41.06 -5.35 5.0 1.0 139 -141 3 -51.04 -4.74 3.0 1.0 140 -142 3 -61.67 -4.89 2.0 1.0 141 -143 3 -71.65 -4.29 1.0 1.0 142 -144 3 -82.93 -5.2 0.0 1.0 143 -145 3 -94.21 -6.12 0.0 1.0 144 -146 3 -38.36 -15.29 7.0 1.3333 139 -147 3 -45.07 -18.56 7.0 0.89754 146 -148 3 -50.51 -15.69 7.0 1.1667 147 -149 3 -58.94 -18.15 7.0 1.2693 148 -150 3 -26.71 -13.17 9.0 0.84984 138 -151 3 -41.67 -26.91 9.0 1.3333 150 -152 3 -48.31 -28.28 9.0 0.89753 151 diff --git a/examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml b/examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml deleted file mode 100644 index 2a3815b..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/CA1.morph.xml +++ /dev/null @@ -1,12673 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_5 - - - - - - soma_group - - - - soma_group - - - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_7 - - - - - - axon_group - soma_group - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - ModelViewParmSubset_2 - - - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - all - - - - - - - - dendrite_group - - - - - - - - - - dendrite_group - - - - - - - - - - dendrite_group - - - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/Ca.xml b/examples/paper-2015/Fig2_elecModels/chans/Ca.xml deleted file mode 100644 index 645161c..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/Ca.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - - - Voltage-gated Ca2+ channel, based on Traub - - - - Traub, R. - - - Upi Bhalla - NCBS - bhalla - at - ncbs.res.in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/CaConc.xml b/examples/paper-2015/Fig2_elecModels/chans/CaConc.xml deleted file mode 100644 index fe10a98..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/CaConc.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - Ca pool - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - - Upi Bhalla - - - - An expontially decaying pool of calcium - - - - Upi Bhalla - National Centre for Biological Sciences, Bangalore, India. - bhalla - at - ncbs.res.in - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml b/examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml deleted file mode 100644 index 58cc74e..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/DoubExpSyn.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - ChannelML file describing a single synaptic mechanism - - - - - - - Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as - double exponential function of time. Mappings exist for NEURON and GENESIS. - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Receptor properties - http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp - - - - - - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml b/examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml deleted file mode 100644 index d2f3f34..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/Generated.net.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 - -Cell Group: CA1_CG contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/Glu.xml b/examples/paper-2015/Fig2_elecModels/chans/Glu.xml deleted file mode 100644 index c1a7d7c..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/Glu.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Glutamate receptor synchan, 2 ms tau. - - - - Simple double exponential waveform glu synapse - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/HChannel.xml b/examples/paper-2015/Fig2_elecModels/chans/HChannel.xml deleted file mode 100644 index c1c91b4..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/HChannel.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml b/examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml deleted file mode 100644 index dfd1d3c..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/KChannel_HH.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations adapted from HH paper for modern convention of external potential being zero - - Padraig Gleeson - - - - Simple example of K conductance in squid giant axon. Based on channel from Hodgkin and Huxley 1952 - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - A. L. Hodgkin and A. F. Huxley, A quantitative description of membrane current and its application - to conduction and excitation in nerve, J. Physiol., vol. 117, pp. 500-544, 1952. - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12991237 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml b/examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml deleted file mode 100644 index c40270d..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/LeakConductance.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/NMDA.xml b/examples/paper-2015/Fig2_elecModels/chans/NMDA.xml deleted file mode 100644 index ce7e3dd..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/NMDA.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - NMDA receptor synchan, 20 ms tau. - - - - Simple double exponential waveform NMDA synapse - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml b/examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml deleted file mode 100644 index 5e52c69..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/NaChannel_HH.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Equations adapted from HH paper for modern convention of external potential being zero - - Padraig Gleeson - - - - Simple example of Na conductance in squid giant axon. Based on channel from Hodgkin and Huxley 1952 - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - A. L. Hodgkin and A. F. Huxley, A quantitative description of membrane current and - its application to conduction and excitation in nerve, J. Physiol., vol. 117, pp. 500-544, 1952. - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12991237 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/hd.xml b/examples/paper-2015/Fig2_elecModels/chans/hd.xml deleted file mode 100644 index a882baa..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/hd.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/kad.xml b/examples/paper-2015/Fig2_elecModels/chans/kad.xml deleted file mode 100644 index bb7c5af..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/kad.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/kap.xml b/examples/paper-2015/Fig2_elecModels/chans/kap.xml deleted file mode 100644 index 58fdea0..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/kap.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, - modified to account for Dax A Current --- M.Migliore Jun 1997, - modified to be used with cvode M.Migliore 2001 - - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/kdr.xml b/examples/paper-2015/Fig2_elecModels/chans/kdr.xml deleted file mode 100644 index 180c563..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/kdr.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, - modified to account for Dax et al., M.Migliore 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/na3.xml b/examples/paper-2015/Fig2_elecModels/chans/na3.xml deleted file mode 100644 index 94e9713..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/na3.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! - - Padraig Gleeson - - - - Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig2_elecModels/chans/nax.xml b/examples/paper-2015/Fig2_elecModels/chans/nax.xml deleted file mode 100644 index 1225d6a..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/nax.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - - - diff --git a/examples/paper-2015/Fig2_elecModels/chans/pas.xml b/examples/paper-2015/Fig2_elecModels/chans/pas.xml deleted file mode 100644 index 9abffeb..0000000 --- a/examples/paper-2015/Fig2_elecModels/chans/pas.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig3_chemModels/Fig3ABC.g b/examples/paper-2015/Fig3_chemModels/Fig3ABC.g deleted file mode 100644 index d784b24..0000000 --- a/examples/paper-2015/Fig3_chemModels/Fig3ABC.g +++ /dev/null @@ -1,832 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun May 18 16:56:17 2014 - -include kkit {argv 1} - -FASTDT = 5e-05 -SIMDT = 0.01 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 10000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 3e-18 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 0 0 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump group /kinetics/lac_gene 0 yellow black x 0 0 "" lac_gene \ - /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 27 0 0 -simundump text /kinetics/lac_gene/notes 0 \ - "This is a group of reactions resulting in the production\nof Lac" -call /kinetics/lac_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lac" -simundump kpool /kinetics/lac_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 52 yellow 26 -12 0 -simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/notes 0 \ - "it represents the promotor with both of its sites\n bound by the inhibitor" -call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 0 0 0 \ - 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 26 -11 0 -simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes 0 \ - "Rates from\nBox 1 Elowitz et al Nature (2000)\n403: 335-338" -call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -simundump kreac /kinetics/lac_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ - yellow 30 -13 0 -simundump text /kinetics/lac_gene/inhib_reac[1]/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -simundump kpool /kinetics/lac_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 yellow 33 -12 0 -simundump text /kinetics/lac_gene/l_op_1rst_bound/notes 0 \ - "it represents the promotor with one of its sites\n bound by the inhibitor" -call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/lac_gene/l_op_1rst_bound/lac_transcription 0 0 0 0 0 \ - 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 33 -10 0 -simundump text /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes 0 \ - "Rates from\nBox 1 Elowitz et al Nature 2000\n403: 335-338" -call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature 2000" \ -"403: 335-338" -simundump kreac /kinetics/lac_gene/inhib_reac 0 0.0055556 2.24 "" white \ - yellow 36 -13 0 -simundump text /kinetics/lac_gene/inhib_reac/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 224 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -simundump kpool /kinetics/lac_gene/lac_operator 0 0 0.022222 0.022222 40 40 0 \ - 0 1800 0 /kinetics/geometry 36 yellow 40 -12 0 -simundump text /kinetics/lac_gene/lac_operator/notes 0 \ - "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/lac_gene/lac_operator/lac_transcription2 0 0 0 0 0 \ - 1800 2.4998 2 0.5 0 1 "" red 36 "" 40 -11 0 -simundump text /kinetics/lac_gene/lac_operator/lac_transcription2/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\n403:335-338" -call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"403:335-338" -simundump kpool /kinetics/lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 12 yellow 26 -8 0 -simundump text /kinetics/lac_gene/lac_mRNA/notes 0 \ - "The m-RNA transcribed by the lac operator\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ - 0.83494 0.668 0.167 0 1 "" red 12 "" 20 -10 0 -simundump text /kinetics/lac_gene/lac_mRNA/lac_translation/notes 0 \ - "Rates from \nBox 1 Elowitz et al Nature (2000)\n403: 335-338" -call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -simundump kpool /kinetics/lac_gene/lac 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 62 yellow 20 -15 0 -simundump text /kinetics/lac_gene/lac/notes 0 \ - "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kpool /kinetics/lac_gene/degraded_lac 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 yellow 20 -19 0 -simundump text /kinetics/lac_gene/degraded_lac/notes 0 \ - "Degradation product of lac protein" -call /kinetics/lac_gene/degraded_lac/notes LOAD \ -"Degradation product of lac protein" -simundump kpool /kinetics/lac_gene/degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 yellow 33 -8 0 -simundump text /kinetics/lac_gene/degraded_lac_mRNA/notes 0 \ - "Degradation product of lac m-RNA" -call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -simundump kreac /kinetics/lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ - yellow 29 -7 0 -simundump text /kinetics/lac_gene/lac_mRNA_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" -call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -simundump kreac /kinetics/lac_gene/lac_degradation 0 0.016666 0 "" white \ - yellow 20 -17 0 -simundump text /kinetics/lac_gene/lac_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to scaled by approx 1.4 to get desired levels\n\nElowitz et al Nature 2000. Vol403 335-338" -call /kinetics/lac_gene/lac_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to scaled by approx 1.4 to get desired levels" \ -"" \ -"Elowitz et al Nature 2000. Vol403 335-338" -simundump kpool /kinetics/lac_gene/AminoAcids 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 20 -8 0 -simundump text /kinetics/lac_gene/AminoAcids/notes 0 "" -call /kinetics/lac_gene/AminoAcids/notes LOAD \ -"" -simundump kpool /kinetics/lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 40 -8 0 -simundump text /kinetics/lac_gene/Nucleotides/notes 0 "" -call /kinetics/lac_gene/Nucleotides/notes LOAD \ -"" -simundump group /kinetics/TetR_gene 0 61 black x 0 0 "" TetR_gene \ - /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 -2 0 0 -simundump text /kinetics/TetR_gene/notes 0 \ - "This is a group of reactions resulting in the production\nof Tet R" -call /kinetics/TetR_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Tet R" -simundump kpool /kinetics/TetR_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 46 61 -3 -12 0 -simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/notes 0 \ - "it represents the promotor with both of its sites\n bound by the inhibitor" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 0 0 \ - 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" -3 -11 0 -simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes 0 \ - "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/TetR_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ - 61 1 -13 0 -simundump text /kinetics/TetR_gene/inhib_reac[1]/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -simundump kpool /kinetics/TetR_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 61 4 -12 0 -simundump text /kinetics/TetR_gene/l_op_1rst_bound/notes 0 \ - "it represents the promotor with one of its sites\n bound by the inhibitor" -call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription 0 0 0 0 \ - 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 4 -10 0 -simundump text /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes 0 \ - "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/TetR_gene/inhib_reac 0 0.0055556 2.24 "" white 61 7 \ - -13 0 -simundump text /kinetics/TetR_gene/inhib_reac/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 11 61 -9 -15 0 -simundump text /kinetics/TetR_gene/TetR/notes 0 \ - "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kpool /kinetics/TetR_gene/degraded_TetR 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 61 -9 -19 0 -simundump text /kinetics/TetR_gene/degraded_TetR/notes 0 \ - "Degradation product of lac protein" -call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ -"Degradation product of lac protein" -simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ - -9 -17 0 -simundump text /kinetics/TetR_gene/TetR_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get appropriate levels\n\nElowitz etal Nature 2000. Vol403 335-338" -call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -simundump kpool /kinetics/TetR_gene/TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 12 61 -3 -8 0 -simundump text /kinetics/TetR_gene/TetR_mRNA/notes 0 \ - "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/TetR_gene/TetR_mRNA/TetR_translation 0 0 0 0 0 1800 \ - 0.83494 0.668 0.167 0 1 "" red 12 "" -9 -10 0 -simundump text /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/TetR_gene/TetR_mRNA_degradation 0 0.005775 0 "" \ - white 61 1 -7 0 -simundump text /kinetics/TetR_gene/TetR_mRNA_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" -call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -simundump kpool /kinetics/TetR_gene/degraded_TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 61 4 -8 0 -simundump text /kinetics/TetR_gene/degraded_TetR_mRNA/notes 0 \ - "Degradation product of lac m-RNA" -call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ - 0 0 1800 0 /kinetics/geometry 36 61 11 -12 0 -simundump text /kinetics/TetR_gene/TetR_operator/notes 0 \ - "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_transcription2 0 0 0 0 \ - 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 11 -11 0 -simundump text /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 11 -8 0 -simundump text /kinetics/TetR_gene/Nucleotides/notes 0 "" -call /kinetics/TetR_gene/Nucleotides/notes LOAD \ -"" -simundump kpool /kinetics/TetR_gene/AminoAcids 0 0 0.00055555 0.00055555 \ - 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 -9 -8 0 -simundump text /kinetics/TetR_gene/AminoAcids/notes 0 "" -call /kinetics/TetR_gene/AminoAcids/notes LOAD \ -"" -simundump group /kinetics/Lcl 0 15 black x 0 0 "" yellow \ - /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 56 0 0 -simundump text /kinetics/Lcl/notes 0 \ - "This is a group of reactions resulting in the production\nof Lambda cl" -call /kinetics/Lcl/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lambda cl" -simundump kpool /kinetics/Lcl/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 52 15 55 -12 0 -simundump text /kinetics/Lcl/l_op_2nd_bound[1]/notes 0 \ - "it represents the promotor with both of its sites\n bound by the inhibitor" -call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 0 0 0 0 0 \ - 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 55 -11 0 -simundump text /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes 0 "" -call /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes LOAD \ -"" -simundump kreac /kinetics/Lcl/inhib_reac[1] 0 0.0055556 0.09 "" white 15 59 \ - -13 0 -simundump text /kinetics/Lcl/inhib_reac[1]/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -simundump kpool /kinetics/Lcl/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 15 62 -12 0 -simundump text /kinetics/Lcl/l_op_1rst_bound/notes 0 \ - "it represents the promotor with one of its sites\n bound by the inhibitor" -call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -simundump kenz /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription 0 0 0 0 0 1800 \ - 0.0024998 0.002 0.0005 0 1 "" red 2 "" 62 -10 0 -simundump text /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" -call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -simundump kreac /kinetics/Lcl/inhib_reac 0 0.0055556 2.24 "" white 15 65 -13 \ - 0 -simundump text /kinetics/Lcl/inhib_reac/notes 0 \ - "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -simundump kpool /kinetics/Lcl/AminoAcids 0 0 0.00055555 0.00055555 0.99999 \ - 0.99999 0 0 1800 4 /kinetics/geometry 52 15 48 -8 0 -simundump text /kinetics/Lcl/AminoAcids/notes 0 "" -call /kinetics/Lcl/AminoAcids/notes LOAD \ -"" -simundump kpool /kinetics/Lcl/Nucleotides 0 0 0.00055555 0.00055555 0.99999 \ - 0.99999 0 0 1800 4 /kinetics/geometry 6 15 69 -8 0 -simundump text /kinetics/Lcl/Nucleotides/notes 0 "" -call /kinetics/Lcl/Nucleotides/notes LOAD \ -"" -simundump kreac /kinetics/Lcl/Lcl_mRNA_degradation 0 0.005775 0 "" white 15 \ - 58 -7 0 -simundump text /kinetics/Lcl/Lcl_mRNA_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" -call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -simundump kpool /kinetics/Lcl/Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 5 15 55 -8 0 -simundump text /kinetics/Lcl/Lcl_mRNA/notes 0 \ - "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/Lcl/Lcl_mRNA/Lcl_translation 0 0 0 0 0 1800 0.83494 \ - 0.668 0.167 0 1 "" red 5 "" 48 -10 0 -simundump text /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" -call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -simundump kpool /kinetics/Lcl/Lcl 0 0 0.055555 0.055555 99.999 99.999 0 0 \ - 1800 0 /kinetics/geometry 24 15 48 -15 0 -simundump text /kinetics/Lcl/Lcl/notes 0 \ - "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -simundump kreac /kinetics/Lcl/Lcl_degradation 0 0.016666 0 "" white 15 48 -17 \ - 0 -simundump text /kinetics/Lcl/Lcl_degradation/notes 0 \ - "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get the desired levels\n\nElowitz etal Nature 2000. Vol403 335-338" -call /kinetics/Lcl/Lcl_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get the desired levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -simundump kpool /kinetics/Lcl/degraded_Lcl 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 2 15 48 -19 0 -simundump text /kinetics/Lcl/degraded_Lcl/notes 0 \ - "Degradation product of lac protein" -call /kinetics/Lcl/degraded_Lcl/notes LOAD \ -"Degradation product of lac protein" -simundump kpool /kinetics/Lcl/degraded_Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ - /kinetics/geometry 1 15 62 -8 0 -simundump text /kinetics/Lcl/degraded_Lcl_mRNA/notes 0 \ - "Degradation product of lac m-RNA" -call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -simundump kpool /kinetics/Lcl/Lcl_operator 0 0 0.022222 0.022222 40 40 0 0 \ - 1800 0 /kinetics/geometry 36 15 69 -12 0 -simundump text /kinetics/Lcl/Lcl_operator/notes 0 \ - "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -simundump kenz /kinetics/Lcl/Lcl_operator/Lcl_transcription2 0 0 0 0 0 1800 \ - 2.4998 2 0.5 0 1 "" red 36 "" 69 -11 0 -simundump text /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes 0 \ - "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" -call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 10000 0 2.0691 0 -simundump xgraph /graphs/conc2 0 0 10000 0 3.33 0 -simundump xplot /graphs/conc1/TetR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 11 0 0 1 -simundump xplot /graphs/conc1/lac.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 62 0 0 1 -simundump xplot /graphs/conc1/Lcl.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 24 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 10000 0 95.756 0 -simundump xgraph /moregraphs/conc4 0 0 10000 0 1 0 -simundump xcoredraw /edit/draw 0 -11 71 -21 2 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"Repressilator model: A synthetic oscillatory network" \ -"of transcriptional regulators designed by Michael B. Elowitz and" \ -"Stanislas Leibler 2000 Nature 403(6767):335-338" -addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_2nd_bound[1] REAC B A -addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 ENZYME n -addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 SUBSTRATE n -addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/inhib_reac[1] PRODUCT n -addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/l_op_1rst_bound REAC B A -addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_1rst_bound REAC A B -addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/l_op_1rst_bound/lac_transcription ENZYME n -addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_1rst_bound/lac_transcription SUBSTRATE n -addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac PRODUCT n -addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/lac_operator REAC A B -addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/lac_operator/lac_transcription2 ENZYME n -addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/lac_operator/lac_transcription2 SUBSTRATE n -addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/lac_mRNA REAC A B -addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/lac_mRNA MM_PRD pA -addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA/lac_translation ENZYME n -addmsg /kinetics/lac_gene/AminoAcids /kinetics/lac_gene/lac_mRNA/lac_translation SUBSTRATE n -addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/lac REAC A B -addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/lac MM_PRD pA -addmsg /kinetics/TetR_gene/inhib_reac /kinetics/lac_gene/lac REAC A B -addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/lac_gene/lac REAC A B -addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/degraded_lac REAC B A -addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/degraded_lac_mRNA REAC B A -addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation SUBSTRATE n -addmsg /kinetics/lac_gene/degraded_lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation PRODUCT n -addmsg /kinetics/lac_gene/degraded_lac /kinetics/lac_gene/lac_degradation PRODUCT n -addmsg /kinetics/lac_gene/lac /kinetics/lac_gene/lac_degradation SUBSTRATE n -addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/AminoAcids REAC sA B -addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/Nucleotides REAC sA B -addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/Nucleotides REAC sA B -addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_2nd_bound[1] REAC B A -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 SUBSTRATE n -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/inhib_reac[1] PRODUCT n -addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_1rst_bound REAC A B -addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/l_op_1rst_bound REAC B A -addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription SUBSTRATE n -addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac PRODUCT n -addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/TetR MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/Lcl/inhib_reac /kinetics/TetR_gene/TetR REAC A B -addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/degraded_TetR REAC B A -addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n -addmsg /kinetics/TetR_gene/degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/TetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA -addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/TetR_mRNA REAC A B -addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA/TetR_translation ENZYME n -addmsg /kinetics/TetR_gene/AminoAcids /kinetics/TetR_gene/TetR_mRNA/TetR_translation SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation SUBSTRATE n -addmsg /kinetics/TetR_gene/degraded_TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation PRODUCT n -addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/degraded_TetR_mRNA REAC B A -addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/TetR_operator REAC A B -addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_transcription2 ENZYME n -addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_transcription2 SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B -addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/AminoAcids REAC sA B -addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_2nd_bound[1] REAC B A -addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 ENZYME n -addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 SUBSTRATE n -addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/inhib_reac[1] PRODUCT n -addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac[1] SUBSTRATE n -addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_1rst_bound REAC A B -addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/l_op_1rst_bound REAC B A -addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription ENZYME n -addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription SUBSTRATE n -addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac PRODUCT n -addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/inhib_reac SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac SUBSTRATE n -addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/AminoAcids REAC sA B -addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Nucleotides REAC sA B -addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Nucleotides REAC sA B -addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Nucleotides REAC sA B -addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation SUBSTRATE n -addmsg /kinetics/Lcl/degraded_Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation PRODUCT n -addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Lcl_mRNA MM_PRD pA -addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Lcl_mRNA MM_PRD pA -addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Lcl_mRNA MM_PRD pA -addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/Lcl_mRNA REAC A B -addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA/Lcl_translation ENZYME n -addmsg /kinetics/Lcl/AminoAcids /kinetics/Lcl/Lcl_mRNA/Lcl_translation SUBSTRATE n -addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/Lcl MM_PRD pA -addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/Lcl REAC A B -addmsg /kinetics/lac_gene/inhib_reac /kinetics/Lcl/Lcl REAC A B -addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/Lcl/Lcl REAC A B -addmsg /kinetics/Lcl/Lcl /kinetics/Lcl/Lcl_degradation SUBSTRATE n -addmsg /kinetics/Lcl/degraded_Lcl /kinetics/Lcl/Lcl_degradation PRODUCT n -addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/degraded_Lcl REAC B A -addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/degraded_Lcl_mRNA REAC B A -addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/Lcl_operator REAC A B -addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/Lcl_operator/Lcl_transcription2 ENZYME n -addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/Lcl_operator/Lcl_transcription2 SUBSTRATE n -addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *11 -addmsg /kinetics/lac_gene/lac /graphs/conc1/lac.Co PLOT Co *lac.Co *62 -addmsg /kinetics/Lcl/Lcl /graphs/conc1/Lcl.Co PLOT Co *Lcl.Co *24 -enddump -// End of dump - -call /kinetics/lac_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lac" -call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al Nature 2000" \ -"403: 335-338" -call /kinetics/lac_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 224 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/lac_gene/lac_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"403:335-338" -call /kinetics/lac_gene/lac_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al Nature (2000)" \ -"403: 335-338" -call /kinetics/lac_gene/lac/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/lac_gene/degraded_lac/notes LOAD \ -"Degradation product of lac protein" -call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -call /kinetics/lac_gene/lac_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to scaled by approx 1.4 to get desired levels" \ -"" \ -"Elowitz et al Nature 2000. Vol403 335-338" -call /kinetics/TetR_gene/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Tet R" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf = 1 /nM/sec" \ -"Kb = 9 /sec" \ -"" \ -"Box 1 Elowitz et al Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ -"Rates from " \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/TetR_gene/TetR/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ -"Degradation product of lac protein" -call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/TetR_gene/TetR_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/Lcl/notes LOAD \ -"This is a group of reactions resulting in the production" \ -"of Lambda cl" -call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ -"it represents the promotor with both of its sites" \ -" bound by the inhibitor" -call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=9 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ -"it represents the promotor with one of its sites" \ -" bound by the inhibitor" -call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2000)" \ -"Nature 403:335-338" -call /kinetics/Lcl/inhib_reac/notes LOAD \ -"It signifies the first binding of the repressor" \ -" with the operator" \ -"" \ -"Kf=1 /nM/sec" \ -"Kb=224 /sec" \ -"" \ -"Box1 Elowitz etal Nature 2000 vol 403:335-338" -call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac m-RNA," \ -" the half life of which is two minutes." \ -"t1/2=.693/k where k denotes kf" -call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ -"The m-RNA transcribed by the lac operator" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -call /kinetics/Lcl/Lcl/notes LOAD \ -"Lac translated from lac m-RNA" \ -"Derived from Figure 1(c) stochastic version" \ -"" \ -"Elowitz et al Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_degradation/notes LOAD \ -"This reaction denotes the degradation of the Lac" \ -" the half life of which is ten minutes." \ -"t1/2=.693/k where k denotes kf" \ -"" \ -"Note: Rates had to be scaled by 1.4 to get the desired levels" \ -"" \ -"Elowitz etal Nature 2000. Vol403 335-338" -call /kinetics/Lcl/degraded_Lcl/notes LOAD \ -"Degradation product of lac protein" -call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ -"Degradation product of lac m-RNA" -call /kinetics/Lcl/Lcl_operator/notes LOAD \ -"The lac operator under normal conditions" \ -" drives transcription of lac" \ -"" \ -"Elowitz etal Nature 2000 Vol 403:335-338" -call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ -"Rates from" \ -"Box 1 Elowitz et al (2003)" \ -"Nature 403:335-338" -complete_loading diff --git a/examples/paper-2015/Fig3_chemModels/Fig3D.py b/examples/paper-2015/Fig3_chemModels/Fig3D.py deleted file mode 100644 index b2117f2..0000000 --- a/examples/paper-2015/Fig3_chemModels/Fig3D.py +++ /dev/null @@ -1,67 +0,0 @@ -import numpy -import pylab -import moose -import time - -''' -This example implements a reaction-diffusion like system which is -bistable and propagates losslessly. It is based on the NEURON example -rxdrun.py, but incorporates more compartments and runs for a longer time. -The system is implemented in a function rather than as a proper system -of chemical reactions. Please see rxdReacDiffusion.py for a variant that -uses a reaction plus a function object to control its rates. -''' - -dt = 0.1 - -# define the geometry -compt = moose.CylMesh( '/cylinder' ) -compt.r0 = compt.r1 = 1 -compt.x1 = 100 -compt.diffLength = 0.2 -assert( compt.numDiffCompts == compt.x1/compt.diffLength ) - -#define the molecule. Its geometry is defined by its parent volume, cylinder -c = moose.Pool( '/cylinder/pool' ) -c.diffConst = 1 # define diffusion constant - -# Here we set up a function calculation -func = moose.Function( '/cylinder/pool/func' ) -func.expr = "-x0 * (0.3 - x0) * (1 - x0)" -func.x.num = 1 #specify number of input variables. - -#Connect the molecules to the func -moose.connect( c, 'nOut', func.x[0], 'input' ) -#Connect the function to the pool -moose.connect( func, 'valueOut', c, 'increment' ) - -#Set up solvers -ksolve = moose.Ksolve( '/cylinder/ksolve' ) -dsolve = moose.Dsolve( '/cylinder/dsolve' ) -stoich = moose.Stoich( '/cylinder/stoich' ) -stoich.compartment = compt -stoich.ksolve = ksolve -stoich.dsolve = dsolve -stoich.path = '/cylinder/##' -for i in range( 10, 18 ): - moose.setClock( i, dt ) - -#initialize -x = numpy.arange( 0, compt.x1, compt.diffLength ) -c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] - -# Run and plot it. -moose.reinit() -updateDt = 50 -runtime = updateDt * 4 -plt = pylab.plot( x, c.vec.n, label='t = 0 ') -t1 = time.time() -for t in range( 0, runtime-1, updateDt ): - moose.start( updateDt ) - plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) -print "Time = ", time.time() - t1 - -pylab.ylim( 0, 1.05 ) -pylab.legend() -pylab.show() - diff --git a/examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py b/examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py deleted file mode 100644 index ea4330c..0000000 --- a/examples/paper-2015/Fig3_chemModels/Fig3_NEURON.py +++ /dev/null @@ -1,44 +0,0 @@ -from neuron import h, rxd -import numpy -from matplotlib import pyplot -import time - -# needed for standard run system -h.load_file('stdrun.hoc') - -dend = h.Section() -dend.nseg = 501 - -# WHERE the dynamics will take place -where = rxd.Region(h.allsec()) - -# WHO the actors are -u = rxd.Species(where, d=1, initial=0) - -# HOW they act -bistable_reaction = rxd.Rate(u, -u * (1 - u) * (0.3 - u)) - -# initial conditions -h.finitialize() -for node in u.nodes: - if node.x < .2: node.concentration = 1 - -def plot_it(color='k'): - y = u.nodes.concentration - x = u.nodes.x - - # convert x from normalized position to microns - x = dend.L * numpy.array(x) - - pyplot.plot(x, y, color) - -plot_it('r') -interval = 50 - -t1 = time.time() -for i in xrange(1, 5): - h.continuerun(i * interval) - plot_it() -print "Time = ", time.time() - t1 - -pyplot.show() diff --git a/examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g b/examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g deleted file mode 100644 index 41b8311..0000000 --- a/examples/paper-2015/Fig4_ReacDiff/CaMKII_merged77.g +++ /dev/null @@ -1,2076 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Nov 15 09:10:36 2015 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 2000 -TRANSIENT_TIME = 10 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black -4 -26 \ - 0 -simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 1 \ - -24 0 -simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 4 \ - -20 0 -simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 3 -6 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-18 3 sphere "" white black -2 \ - -12 0 -simundump geometry /kinetics/geometry[5] 0 1e-18 3 sphere "" white black 9 \ - -11 0 -simundump geometry /kinetics/geometry[6] 0 9e-20 3 sphere "" white black 10 \ - -15 0 -simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump text /kinetics/geometry[7]/notes 0 "" -call /kinetics/geometry[7]/notes LOAD \ -"" -simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ - 12 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 12 20 70 33 0 -simundump text /kinetics/PSD/actCaMKII/notes 0 "" -call /kinetics/PSD/actCaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.083325 8 2 0 0 \ - "" red 35 "" -6 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.083325 8 2 0 0 \ - "" red 35 "" -2 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ -"" -simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 -simundump text /kinetics/PSD/PP1_PSD/notes 0 "" -call /kinetics/PSD/PP1_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry cyan yellow 44 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ - "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ - 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry orange yellow 35.35 21.88 0 -simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ - "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 36 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ - 26 0 -simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ - "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ - 17 26 0 -simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ - "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 22 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry orange yellow 21 22 0 -simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ - "Dephosph is mainly by PP2B" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 1 yellow -1 33 0 -simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.5 "" white \ - yellow 21 40 0 -simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue yellow 12 33 0 -simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.69444 1 "" white yellow \ - 7 40 0 -simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 -simundump text /kinetics/PSD/move_to_PSD/notes 0 "" -call /kinetics/PSD/move_to_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R_S2/notes 0 "" -call /kinetics/PSD/R_S2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/R_SpS/notes 0 "" -call /kinetics/PSD/R_SpS/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 28 0 0 1 0 -simundump text /kinetics/PSD/R_SpSp/notes 0 "" -call /kinetics/PSD/R_SpSp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 61 0 -4 -2 0 -simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ - "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.62499 \ - 0.59998 0.15 0 0 "" red 61 "" -6 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.62499 \ - 0.59998 0.15 0 0 "" red 61 "" -2 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PKA-active 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry yellow 20 14 17 0 -simundump text /kinetics/PSD/PKA-active/notes 0 "" -call /kinetics/PSD/PKA-active/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ - 0.012345 4 1 0 0 "" red 27 "" 27 19 0 -simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" -call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ -"" -simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ - defaultfile.g 0 0 0 39 32 0 -simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 0.5 3 12 0 0 6 0 \ - /kinetics/geometry 29 33 74 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ - 0.066667 8 2 0 0 "" red 29 "" 72 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ - 0.016667 2 0.5 0 0 "" red 29 "" 59 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ - 0.2 24 6 0 0 "" red 29 "" 78 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 23 33 84 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 59 33 52 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 47 33 61 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ - 0 7.732 0.10417 8 2 0 0 "" red 47 "" 72 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ - 54.001 0.3125 24 6 0 0 "" red 47 "" 78 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ - 7.732 0.026042 2 0.5 0 0 "" red 47 "" 60 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 0.5 0.5 3 3 0 0 6 0 \ - /kinetics/geometry blue 33 81 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ - 0.0022 "" white 33 54 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ - white 33 65 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ - /kinetics/geometry blue 33 67 8 0 -simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ - "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." -call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.002 0 "" white 33 56 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ - "Same as for transloc_1\n\n\n" -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.002 0 "" white 33 63 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ - 75 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ - "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ - 89 13 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ - 0 /kinetics/geometry 47 33 56 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 50 33 63 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 62 33 75 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/sCaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 0 33 81 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 30 33 88 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[7] 50 black 66 17 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[7] 2 black 84 17 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 0 \ - 0 6 0 /kinetics/geometry[7] 46 black 58 17 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 5e-13 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[7] 61 black 78 17 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 6 \ - 0 /kinetics/geometry[7] 36 black 91 17 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 57 33 69 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 6 \ - 0 /kinetics/geometry[7] 54 black 73 17 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ - 20 45 17 0 -simundump text /kinetics/PSD/PP2A/notes 0 "" -call /kinetics/PSD/PP2A/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0 0 0 0 54.001 \ - 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ - "k1 changed from 3.3e-6 to 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 0 0 0 0 54.001 0.0013289 \ - 0.92593 0.22222 0 0 "" red red "" 27 20 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ - "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM 1 5e-13 20 20 120 120 0 0 6 0 \ - /kinetics/geometry pink blue 35 39 0 -simundump text /kinetics/PSD/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.6 10 "" white blue 49 \ - 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10\n24 Sep 2015\nThis is a bit too low affinity. Changing to match K2 at \nKd = 2.8." -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ -"24 Sep 2015" \ -"This is a bit too low affinity. Changing to match K2 at " \ -"Kd = 2.8." -simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry hotpink blue 47 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ - 37 36 0 -simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 43 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ - 45 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ - blue 41 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 39 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 0 \ - /kinetics/geometry red blue 43 33 0 -simundump text /kinetics/PSD/CaM/Ca/notes 0 "" -call /kinetics/PSD/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue blue 52 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ - /kinetics/geometry[3] blue black 49 33 0 -simundump text /kinetics/PSD/CaM/Ca_input/notes 0 "" -call /kinetics/PSD/CaM/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaM/Ca_stim 0 50 50 "" white black 46 31 0 -simundump text /kinetics/PSD/CaM/Ca_stim/notes 0 "" -call /kinetics/PSD/CaM/Ca_stim/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM_CaN 1 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 1 20 30 33 0 -simundump text /kinetics/PSD/CaM_CaN/notes 0 "" -call /kinetics/PSD/CaM_CaN/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/CaN_1 0 0 0 0 0 6 0.033333 8 2 0 0 "" \ - red pink "" -6 -4 0 -simundump text /kinetics/PSD/CaM_CaN/CaN_1/notes 0 "" -call /kinetics/PSD/CaM_CaN/CaN_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/CaN_2 0 0 0 0 0 6 0.033333 8 2 0 0 "" \ - red pink "" -2 -4 0 -simundump text /kinetics/PSD/CaM_CaN/CaN_2/notes 0 "" -call /kinetics/PSD/CaM_CaN/CaN_2/notes LOAD \ -"" -simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ - 11 -30 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump group /kinetics/DEND/CaM 1 blue 13 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 34 -32 0 -simundump text /kinetics/DEND/CaM/notes 0 "" -call /kinetics/DEND/CaM/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaM/CaM 1 5e-13 1 1 600 600 0 0 600 0 \ - /kinetics/geometry pink blue 38 -30 0 -simundump text /kinetics/DEND/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/DEND/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/DEND/CaM/CaM-Ca3-bind-Ca 1 0.006 10 "" white blue \ - 52 -33 0 -simundump text /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/DEND/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry hotpink blue 50 -30 0 -simundump text /kinetics/DEND/CaM/CaM-Ca3/notes 0 "" -call /kinetics/DEND/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/DEND/CaM/CaM-bind-Ca 1 0.014141 8.4853 "" white \ - blue 40 -33 0 -simundump text /kinetics/DEND/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/DEND/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry pink blue 46 -30 0 -simundump text /kinetics/DEND/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/DEND/CaM/CaM-Ca2-bind-Ca 1 0.006 10 "" white blue \ - 48 -33 0 -simundump text /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/DEND/CaM/CaM-Ca-bind-Ca 1 0.014141 8.4853 "" white \ - blue 44 -33 0 -simundump text /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/DEND/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry pink blue 42 -30 0 -simundump text /kinetics/DEND/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/DEND/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 600 0 \ - /kinetics/geometry blue blue 55 -30 0 -simundump text /kinetics/DEND/CaM/CaM-Ca4/notes 0 "" -call /kinetics/DEND/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kreac /kinetics/DEND/CaM/CaM_x2 0 10 10 "" white black 28 -30 0 -simundump text /kinetics/DEND/CaM/CaM_x2/notes 0 "" -call /kinetics/DEND/CaM/CaM_x2/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[1] blue blue 19 -32 0 -simundump text /kinetics/DEND/CaM/CaM_xchange/notes 0 "" -call /kinetics/DEND/CaM/CaM_xchange/notes LOAD \ -"" -simundump group /kinetics/DEND/CaMKII_BULK 0 33 13 x 0 0 "" CaMKII_BULK \ - defaultfile.g 0 0 0 42 -37 0 -simundump text /kinetics/DEND/CaMKII_BULK/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/tot-auto 0 0 0.18 0.5 300 108 0 0 \ - 600 0 /kinetics/geometry 29 33 77 -33 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ - 69.588 0.00066667 8 2 0 0 "" red 29 "" 75 -46 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 69.588 \ - 0.00016667 2 0.5 0 0 "" red 29 "" 62 -46 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 486.01 \ - 0.002 24 6 0 0 "" red 29 "" 81 -46 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/tot_CaMKII 0 0 0.18 1.18 708 108 0 \ - 0 600 0 /kinetics/geometry 23 33 87 -33 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot_CaMKII/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 600 \ - 0 /kinetics/geometry 47 33 64 -36 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 \ - 0 0 69.588 0.0010417 8 2 0 0 "" red 47 "" 75 -49 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ - 0 486.01 0.003125 24 6 0 0 "" red 47 "" 81 -49 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ - "" -call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ - 0 69.588 0.00026042 2 0.5 0 0 "" red 47 "" 63 -49 0 -simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ - "" -call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/basal_CaMKII 0 0 0.5 0.5 300 300 0 \ - 0 600 0 /kinetics/geometry blue 33 84 -36 0 -simundump text /kinetics/DEND/CaMKII_BULK/basal_CaMKII/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 0.10945 \ - 0.0022 "" white 33 57 -41 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM 0 0.10945 2.2 "" \ - white 33 68 -41 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 \ - 0 0 600 0 /kinetics/geometry 47 33 59 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 600 \ - 0 /kinetics/geometry 50 33 66 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-CaM/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 \ - 600 0 /kinetics/geometry 57 33 72 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII 0 5e-13 1 1 600 600 0 0 600 \ - 0 /kinetics/geometry 62 33 78 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 \ - 600 0 /kinetics/geometry 30 33 91 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr305/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 \ - 600 0 /kinetics/geometry 0 33 84 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ -"" -simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII_x2 0 10 10 "" white black \ - 95 -49 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_x2/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII_x2/notes LOAD \ -"" -simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII_xchange 0 2e-11 0 0 0 0 0 0 \ - 600 0 /kinetics/geometry[5] blue black 99 -47 0 -simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_xchange/notes 0 "" -call /kinetics/DEND/CaMKII_BULK/CaMKII_xchange/notes LOAD \ -"" -simundump kpool /kinetics/DEND/actCaMKII 0 0 0.18 0.18 108 108 0 0 600 0 \ - /kinetics/geometry 12 5 73 -36 0 -simundump text /kinetics/DEND/actCaMKII/notes 0 "" -call /kinetics/DEND/actCaMKII/notes LOAD \ -"" -simundump kpool /kinetics/DEND/PP2A 1 0 1.2 1.2 720 720 0 0 600 0 \ - /kinetics/geometry 62 5 47 -44 0 -simundump text /kinetics/DEND/PP2A/notes 0 \ - "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." -call /kinetics/DEND/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -simundump kenz /kinetics/DEND/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0033334 8 2 \ - 0 0 "" red 62 "" 64 -44 0 -simundump text /kinetics/DEND/PP2A/Deph-thr286/notes 0 "" -call /kinetics/DEND/PP2A/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/DEND/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0033334 8 \ - 2 0 0 "" red 62 "" 74 -44 0 -simundump text /kinetics/DEND/PP2A/Deph-thr286b/notes 0 "" -call /kinetics/DEND/PP2A/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/DEND/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0033334 8 2 \ - 0 0 "" red 62 "" 81 -44 0 -simundump text /kinetics/DEND/PP2A/Deph-thr305/notes 0 "" -call /kinetics/DEND/PP2A/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/DEND/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.00083332 2 \ - 0.5 0 0 "" red 62 "" 91 -44 0 -simundump text /kinetics/DEND/PP2A/Deph-thr286c/notes 0 "" -call /kinetics/DEND/PP2A/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/DEND/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0033334 8 \ - 2 0 0 "" red 62 "" 86 -44 0 -simundump text /kinetics/DEND/PP2A/Deph-thr305a/notes 0 "" -call /kinetics/DEND/PP2A/Deph-thr305a/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ - /kinetics/geometry[4] blue black 53 -37 0 -simundump text /kinetics/DEND/Ca_input/notes 0 "" -call /kinetics/DEND/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/DEND/Ca_stim 0 50 50 "" white black 49 -38 0 -simundump text /kinetics/DEND/Ca_stim/notes 0 "" -call /kinetics/DEND/Ca_stim/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 29 -23 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ - /kinetics/geometry 0 yellow -8 -10 0 -simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM 1 5e-13 20 20 1080 1080 0 0 54 0 \ - /kinetics/geometry pink blue 37 4 0 -simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.066667 10 "" white \ - blue 51 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry hotpink blue 49 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ - blue 39 1 0 -simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 45 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ - blue 47 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ - blue 43 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 41 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ - /kinetics/geometry red blue 45 -2 0 -simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" -call /kinetics/SPINE/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry blue blue 54 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM_x2 0 1 100 "" white black 34 10 0 -simundump text /kinetics/SPINE/CaM/CaM_x2/notes 0 "" -call /kinetics/SPINE/CaM/CaM_x2/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[2] blue black 29 7 0 -simundump text /kinetics/SPINE/CaM/CaM_xchange/notes 0 "" -call /kinetics/SPINE/CaM/CaM_xchange/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ - defaultfile.g 0 0 0 41 -3 0 -simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 0.5 27 108 0 0 54 \ - 0 /kinetics/geometry 29 33 76 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ - 69.588 0.0074074 8 2 0 0 "" red 29 "" 74 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ - 69.588 0.0018519 2 0.5 0 0 "" red 29 "" 61 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ - 486.01 0.022222 24 6 0 0 "" red 29 "" 80 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ - 54 0 /kinetics/geometry 23 33 86 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 59 33 54 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 47 33 63 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ - 0 0 0 69.588 0.011574 8 2 0 0 "" red 47 "" 74 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ - 0 486.01 0.034722 24 6 0 0 "" red 47 "" 80 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ - 0 69.588 0.0028935 2 0.5 0 0 "" red 47 "" 62 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 0.5 0.5 27 27 0 \ - 0 54 0 /kinetics/geometry blue 33 83 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ - 0.0022 "" white 33 56 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ - white 33 67 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 \ - 0 0 54 0 /kinetics/geometry 47 33 58 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 50 33 65 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 \ - 54 0 /kinetics/geometry 57 33 71 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 5e-13 20 20 1080 1080 0 \ - 0 54 0 /kinetics/geometry 62 33 77 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 \ - 54 0 /kinetics/geometry 30 33 90 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 \ - 54 0 /kinetics/geometry 0 33 83 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 0 1 100 "" white black \ - 92 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_x2/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII_x2/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange 0 2e-11 0 0 0 0 0 \ - 0 54 0 /kinetics/geometry[6] blue black 98 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM_CaN 1 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 1 5 32 -2 0 -simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" -call /kinetics/SPINE/CaM_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ - /kinetics/geometry 12 5 72 -2 0 -simundump text /kinetics/SPINE/actCaMKII/notes 0 "" -call /kinetics/SPINE/actCaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/PP2A 1 0 5 5 270 270 0 0 54 0 \ - /kinetics/geometry 62 5 46 -10 0 -simundump text /kinetics/SPINE/PP2A/notes 0 \ - "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.037038 8 2 \ - 0 0 "" red 62 "" 63 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.037038 8 \ - 2 0 0 "" red 62 "" 73 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.037038 8 2 \ - 0 0 "" red 62 "" 80 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 90 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.037038 8 \ - 2 0 0 "" red 62 "" 85 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 -simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" -call /kinetics/SPINE/CaN_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 0 1 1 54 54 0 0 54 0 \ - /kinetics/geometry 1 yellow 4 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.5 "" white \ - yellow 23 5 0 -simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ - "From Quintana et al 2005" -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0085734 1 "" white \ - yellow 8 5 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] blue yellow 15 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ -"" -simundump kpool /kinetics/Ca 1 1e-11 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry red 13 46 -36 0 -simundump text /kinetics/Ca/notes 0 "" -call /kinetics/Ca/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2000 0 4 0 -simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 -simundump xplot /graphs/conc1/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc1/actCaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 12 0 0 1 -simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc2/actCaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 12 0 0 1 -simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 -simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 -simundump xplot /moregraphs/conc3/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /moregraphs/conc3/actCaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 12 0 0 1 -simundump xplot /moregraphs/conc3/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xcoredraw /edit/draw 0 -10 101 -51 42 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"23 Dec 2011" \ -"CaMKII_merged16.g" \ -"Added Ca-binding step to the CaN activation pathway." \ -"Based on CaMKII_merged15.g" \ -"" \ -"CaMKII_merged16a.g" \ -"Halved the Kb for CaN-bind-CaM" \ -"" \ -"CaMKII_merged17.g" \ -" Used more rates from Saucerman and Bers BPJ 2008" \ -"" \ -"CaMKII_merged17a.g" \ -"Fix to init conc of PP1-active in PSD: from 2 to 4." \ -"" \ -"CaMKII_merged17b.g" \ -"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ -"levels in PSD. Scaled kcats down to match." \ -"" \ -"CaMKII_merged20.g" \ -"First pass at a version with a reasonable basal PKA and a less" \ -"saturating effect on PP1-active of CaMKII." \ -"" \ -"CaMKII_merged20c.g: This version turns on but does not go off" \ -"afterwards. " \ -"" \ -"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ -"" \ -"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ -"" \ -"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ -"sites given that CaMKII is a dodecamer." \ -"" \ -"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ -"0.002/sec." \ -"" \ -"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ -"" \ -"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ -"CaM with 6:54." \ -"" \ -"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ -"" \ -"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ -"CaMKII in bulk." \ -"" \ -"19 July 2013. psd_merged30.g: Variant for signeur loading." \ -"" \ -"22 Aug 2015. CaMKII_merged32.g: Duplicated spine head CaMKII and" \ -"ancillary reactions, into Dend. Will need to figure out how to " \ -"keep hihger CaMKII and CaM levels in spine head rather than" \ -"dend." \ -"23 Aug 2015. CaMKII_merged33.g: Added pools and reactions to " \ -"sustain the gradients of CaM and CaMKII between DEND and SPINE." \ -"Needed because we have diffusion of CaM, CaMKII and various " \ -"converted forms of these molecules." \ -"" \ -"23 Aug 2015. CaMKII_merged34.g: Added Ca_input for PSD and DEND." \ -"" \ -"24 Aug 2015. CaMKII_merged35.g" \ -"Increased CaDiffusion rate to 10 microns^2/sec. " \ -"Increased Ca_stim Kf and Kb to 50 from 20." \ -"" \ -"13 Sep 2015. CaMKII_merged36.g" \ -"Set PSD/PKA-active nInit to zero. It was a tiny fractional value" \ -"leading to a possible discrepancy between stochastic and determ" \ -"calculations." \ -"" \ -"14 Sep 2015. CaMKII_merged37.g" \ -"PP2A in the PSD had some tiny nComplexInits in its enz sites." \ -"Zeroed." \ -"" \ -"24 Sep 2015. CaMKII_merged38.g" \ -"Fixed some discrepancies in rates in the Dend compartment. Seems" \ -"that vol scaling had not happened properly." \ -"Also raised affinity of final stage of CaM.Ca3 binding to Ca to" \ -"the same value as for CaM.Ca2 binding." \ -"" \ -"25 Sep 2015. CaMKII_merged39.g" \ -"Fixed CaM_xchange reactions, also similar for CaMKII. These set" \ -"up the higher conc in the spine and PSD, but were not effective." \ -"" \ -"26 Sep 2015. CaMKII_merged42.g" \ -"Moved PP1_1 and PP1_2 enzymes to CaM_CaN" \ -"Some rates changes." \ -"CaMKII_merged42a.g: moved /kinetics/DEND/Ca to /kinetics/Ca so" \ -"that the system isn't confused during diffusions setup." \ -"" \ -"29 Sep 2015. CaMKII_merged43.g" \ -"Added back the CaMKII exchange reaction, and CaMKII diffusion" \ -"between dend and spine. Also moved the CaM_xchange reaction to" \ -"the dend as its substrate is there." \ -"CaMKII_merged44.g: Lower Keq rate of both xchangeReactions from" \ -"10 to 2. kb now 0.5, kf still 1." \ -"" \ -"02 Oct 2015: CaMKII_merged50.g. Moved NMDAR to Spine rather than" \ -"PSD, to keep both substrates in same compt. Also moved reac to" \ -"same compt as substrates." \ -"" \ -"05 Nov 2015: CaMKII_merged57.g. Put all the translocation reactions" \ -"in the PSD itself, now the CaMKII phospho forms just diffuse" \ -"into the PSD if they want to translocate. Then they bind to" \ -"NMDAR and form the scaffolded version." \ -"CaMKII_merged58.g: There was too little CaM and CaMKII in the " \ -"spine. Increased the rate of the reactions pumping them in." \ -"" \ -"09 Nov 2015" \ -"CaMKII_merged59.g: 3 major changes. " \ -"1. Lowered basal activity of CaMKII to 0.5 uM from 1 uM." \ -"2. Fixed Km of intramolecular CaMKII. Divide Km by 20 for" \ -" each of the intramolecular reactions, this brings it into the" \ -" same range as the total amount of CaMKII" \ -"3. CaN is now activated by Ca2.CaM, not by Ca4.CaM." \ -"CaMKII_merged60.g. Fix to Km for PP2A on CaMKII in Dend: it had" \ -" been reduced to 0.45, restored to 5 so that it is the same as" \ -" in PSD. Also doubled kcat for PP2A action on CaMKII phospho-" \ -" forms, across the board." \ -"" \ -"CaMKII_merged61.g: Zero out diffusion constt for all CaN forms." \ -"CaMKII_merged62.g: Double PP2A rates on CaMKII phosph forms in" \ -" dend and spine. Raise back-reac rate for Ca2.CaM binding to" \ -" CaN by factor of 10." \ -"" \ -"10 Nov 2015. CaMKII_merged63.g: Raised PP2A levels in dend and" \ -"spine head by 25%. Doubled kcat for CaMKII on PSDR. Doubled" \ -"back rate for CaM binding to CaN." \ -"" \ -"" \ -"11 Nov 2015. CaMKII_merged65.g: (64 was a dead end). Removed" \ -"xchange reacs between dend and spine, which were there for setting" \ -"up the steady-state conc gradient of CaM and CaMKII. Replaced" \ -"with a diffusion process and local reacs to achieve gradient." \ -"CaMKII_merged66.g: Changed local rates to steepen gradient." \ -"CaMKII_merged67.g: Further sped up diffusion of xchange molecules" \ -"to steepen gradient. Also lowered CaN affinity for CaM." \ -"CaMKII_merged68.g: Lowered CaN affinity for CaM. Lowered CaMKII" \ -"activity on PSDR. Increased 10x rate for NMDAR binding to CaMKII." \ -"CaMKII_merged69.g: further lowered CaN affinity for CaM to ~0.1." \ -"Lowered CaMKII basal activity to 0.2 uM." \ -"Increased 2x further NMDAR binding to CaMKII." \ -"CaMKII_merged70.g: Double CaMKII rate on PSDR." \ -"" \ -"13 Nov 2015. CaMKII_merged71.g. Fine-tuning to restore bistability" \ -"in the PSDR. Lowered CaN kcas on PSDR to 0.8. Raised basal" \ -"CaMKII back to 0.5 uM, from 0.2, in PSD." \ -"" \ -"14 Nov 2015. CaMKII_merged74.g. Did various tests for the" \ -"bistability of the PSDR system. This one has slower CaN kcat on" \ -"PSDR, from 0.8 to 0.2. Based on psdr2.g" \ -"CaMKII_merged75.g. The prev one didn't acheive turnoff. Doubled" \ -"CaN kcat on psdr, now at 0.4." \ -"15 Nov 2015." \ -"CaMKII_merged76.g. Raised kcat and Km both for CaN on PSDR, to" \ -"lessen saturation." \ -"CaMKII_merged77.g. Raised kcat of basal_phosphatase for PSDR from" \ -"0.11 to 0.15, in order to raise threshold and lessen spontaneous" \ -"turnons." \ -"" \ -"" -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B -addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B -addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/sCaMKII REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/sCaMKII MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/sCaMKII MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/sCaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/sCaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/Ca_stim /kinetics/PSD/CaM/Ca REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/PSD/CaM/Ca_stim /kinetics/PSD/CaM/Ca_input REAC A B -addmsg /kinetics/PSD/CaM/Ca_input /kinetics/PSD/CaM/Ca_stim SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/Ca_stim PRODUCT n -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A -addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/CaM_CaN/CaN_1 SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/CaN_1 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/CaM_CaN/CaN_2 SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/CaN_2 ENZYME n -addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM REAC A B -addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC B A -addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC A B -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM_x2 SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM_xchange /kinetics/DEND/CaM/CaM_x2 PRODUCT n -addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM_xchange REAC B A -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/DEND/CaMKII_BULK/basal_CaMKII /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/DEND/actCaMKII /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC B A -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC A B -addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_x2 /kinetics/DEND/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 REAC sA B -addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/CaMKII_x2 SUBSTRATE n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_xchange /kinetics/DEND/CaMKII_BULK/CaMKII_x2 PRODUCT n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_x2 /kinetics/DEND/CaMKII_BULK/CaMKII_xchange REAC B A -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/PP2A REAC eA B -addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/PP2A REAC eA B -addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/PP2A REAC eA B -addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/PP2A REAC eA B -addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/PP2A REAC eA B -addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286 ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/PP2A/Deph-thr286 SUBSTRATE n -addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286b ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/PP2A/Deph-thr286b SUBSTRATE n -addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr305 ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/PP2A/Deph-thr305 SUBSTRATE n -addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286c ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/PP2A/Deph-thr286c SUBSTRATE n -addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr305a ENZYME n -addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 /kinetics/DEND/PP2A/Deph-thr305a SUBSTRATE n -addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B -addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n -addmsg /kinetics/Ca /kinetics/DEND/Ca_stim PRODUCT n -addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM_x2 SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM_xchange /kinetics/SPINE/CaM/CaM_x2 PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM_xchange REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B -addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B -addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/Ca REAC A B -addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/Ca REAC A B -addmsg /kinetics/DEND/Ca_stim /kinetics/Ca REAC B A -addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/PSD/actCaMKII /graphs/conc1/actCaMKII.Co PLOT Co *actCaMKII.Co *12 -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/SPINE/actCaMKII /graphs/conc2/actCaMKII.Co PLOT Co *actCaMKII.Co *12 -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -addmsg /kinetics/Ca /moregraphs/conc3/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/DEND/actCaMKII /moregraphs/conc3/actCaMKII.Co PLOT Co *actCaMKII.Co *12 -addmsg /kinetics/DEND/CaM/CaM-Ca4 /moregraphs/conc3/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -enddump -// End of dump - -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ -"24 Sep 2015" \ -"This is a bit too low affinity. Changing to match K2 at " \ -"Kd = 2.8." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/DEND/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -complete_loading diff --git a/examples/paper-2015/Fig4_ReacDiff/Fig4B.py b/examples/paper-2015/Fig4_ReacDiff/Fig4B.py deleted file mode 100644 index fd3029f..0000000 --- a/examples/paper-2015/Fig4_ReacDiff/Fig4B.py +++ /dev/null @@ -1,185 +0,0 @@ -######################################################################## -# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. -# It is licenced under the GPL 2.1 or higher. -# There is no warranty of any kind. You are welcome to make copies under -# the provisions of the GPL. -# This program builds a multiscale model with a few spines inserted into -# a simplified cellular morphology. Each spine has a signaling model in it -# too. The program doesn't run the model, it just displays it in 3D. -######################################################################## -import moogli -import numpy -import time -import pylab -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import matplotlib.pyplot as plt -import sys -import os -from moose.neuroml.ChannelML import ChannelML -sys.path.append('/home/bhalla/moose/trunk/Demos/util') -import rdesigneur as rd - -PI = 3.14159265359 -useGssa = True -combineSegments = False -baselineTime = 1 -tetTime = 1 -interTetTime = 0.1 -postTetTime = 0.1 -ltdTime = 0.1 -postLtdTime = 0.1 -do3D = True -dt = 0.01 -plotdt = 0.1 -psdTetCa = 8e-3 -basalCa = 0.08e-3 -ltdCa = 0.25e-3 - -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - cellProto = [ ['ca1_minimal.p', 'elec'] ] - spineProto = [ ['makeSpineProto()', 'spine' ]] - chemProto = [ ['CaMKII_merged77.g', 'chem'] ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" - spineDistrib = [ \ - ["spine", '#apical#', \ - "spineSpacing", chemRange + " * 5e-6", \ - "spineSpacingDistrib", "1e-6", \ - "angle", "0", \ - "angleDistrib", "6.28", \ - "size", "6", \ - "sizeDistrib", "0" ] \ - ] - chemDistrib = [ \ - [ "chem", "#apical#", "install", chemRange ] - ] - - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [ - [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], - [ 'Ca_conc', 'Ca', 'dend/DEND/Ca_input', 'concInit', 8e-5, 1 ], - [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - spineDistrib = spineDistrib, \ - chemDistrib = chemDistrib, \ - cellProto = cellProto, \ - spineProto = spineProto, \ - chemProto = chemProto - ) - - return rdes - -def createVmViewer(rdes): - network = moogli.extensions.moose.read(rdes.elecid.path) - normalizer = moogli.utilities.normalizer(-0.08, - 0.02, - clipleft=True, - clipright=True) - colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, - 0.5, - 1.0, - 1.0), - moogli.colors.Color(1.0, - 0.0, - 0.0, - 0.9)]) - mapper = moogli.utilities.mapper(colormap, normalizer) - - def prelude(view): - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - view.pitch(PI/2.0) - view.down(450) - view.left(100) - view.h = 2.0 - view.zoom(5.0) - - def interlude(view): - if view.h > 0.10: - view.h /= 1.005 - view.zoom(0.005) - view.yaw(0.01) - - viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) - view = moogli.View("vm-view", - prelude=prelude, - interlude=interlude) - viewer.attach_view(view) - return viewer - - -def main(): - numpy.random.seed( 1234 ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - assert( moose.exists( '/model' ) ) - moose.element( '/model/elec/hsolve' ).tick = -1 - for i in range( 10, 18 ): - moose.setClock( i, dt ) - moose.setClock( 18, plotdt ) - moose.reinit() - - if do3D: - app = QtGui.QApplication(sys.argv) - compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) - print "LEN = ", len( compts ) - for i in compts: - n = i.name[:4] - if ( n == 'head' or n == 'shaf' ): - i.diameter *= 1.0 - i.Vm = 0.02 - else: - i.diameter *= 4.0 - i.Vm = -0.05 - vm_viewer = createVmViewer(rdes) - vm_viewer.showMaximized() - vm_viewer.start() - app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py b/examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py deleted file mode 100644 index 5d76909..0000000 --- a/examples/paper-2015/Fig4_ReacDiff/Fig4CDEF.py +++ /dev/null @@ -1,242 +0,0 @@ -######################################################################## -# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. -# It is licenced under the GPL 2.1 or higher. -# There is no warranty of any kind. You are welcome to make copies under -# the provisions of the GPL. -# This program builds a multiscale model with a few spines inserted into -# a simplified cellular morphology. Each spine has a signaling model in it -# too. The program runs the model with a strong but brief calcium input -# synapses at 10 seconds, and a long but smaller Ca influx from 290 to -# 650 seconds. This simulation runs using a deterministic method. -# The runtime on a 2.2 GHz Intel core I7 processor is about 550 s. -######################################################################## -import moogli -import numpy -import time -import pylab -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import matplotlib.pyplot as plt -import sys -import os -from moose.neuroml.ChannelML import ChannelML -sys.path.append('/home/bhalla/moose/trunk/Demos/util') -import rdesigneur as rd - -PI = 3.14159265359 -useGssa = False -combineSegments = False -baselineTime = 10 -tetTime = 1 -interTetTime = 20 -postTetTime = 240 -ltdTime = 360 -postLtdTime = 60 -do3D = False -dt = 0.001 -plotdt = 0.1 -psdTetCa = 8e-3 -dendTetCa = 2e-3 -basalCa = 0.08e-3 -ltdCa = 0.25e-3 - -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - cellProto = [ ['ca1_minimal.p', 'elec'] ] - spineProto = [ ['makeSpineProto()', 'spine' ]] - chemProto = [ ['CaMKII_merged77.g', 'chem'] ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" - spineDistrib = [ \ - ["spine", '#apical#', \ - "spineSpacing", chemRange + " * 5e-6", \ - "spineSpacingDistrib", "1e-6", \ - "angle", "0", \ - "angleDistrib", "0", \ - "size", "1", \ - "sizeDistrib", "0" ] \ - ] - chemDistrib = [ \ - [ "chem", "#apical#", "install", chemRange ] - ] - - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [ - [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], - [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], - [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - spineDistrib = spineDistrib, \ - chemDistrib = chemDistrib, \ - cellProto = cellProto, \ - spineProto = spineProto, \ - chemProto = chemProto - ) - - return rdes - -def buildOnePlot( path, field = 'getConc' ): - elist = moose.vec( '/model/chem/' + path ) - tabname = path.replace( '/', '_' ) - tab = moose.Table2( '/graphs/' + tabname, len( elist ) ).vec - moose.connect( tab, 'requestOut', elist, field, 'OneToOne' ) - -def buildPlots(): - if not moose.exists( '/graphs' ): - moose.Neutral( '/graphs' ) - buildOnePlot( 'psd/actCaMKII' ) - buildOnePlot( 'spine/actCaMKII' ) - buildOnePlot( 'dend/DEND/actCaMKII' ) - buildOnePlot( 'psd/tot_PSD_R', 'getN' ) - -def displayPlots(): - #plt.style.use( 'ggplot' ) - #fig = plt.figure( figsize=( 6, 10 ), frameon=False, facecolor='white' ) - fig = plt.figure( figsize=( 5, 10 ), facecolor='white' ) - fig.subplots_adjust( left = 0.18 ) - elist = moose.wildcardFind( '/graphs/#[0]' ) - n = len(elist) - j = 1 - timePts = numpy.arange( 0, len( elist[0].vector ) ) * elist[0].dt - labelName = [ "[CaMKII] (uM)", "[CaMKII] (uM)", - "[CaMKII] (uM)", "# AMPAR" ] - showTickLabels = [0,0,0,1] - plotTitle = ['C', 'D', 'E', 'F'] - plotScale = [1000,1000,1000,1] - for i in zip( elist, labelName, showTickLabels, plotTitle, plotScale ): - ax = plt.subplot( 4, 1, j ) - ax.spines['top'].set_visible( False ) - ax.spines['right'].set_visible( False ) - - #This function does the same as below, one axis at a time - #ax.xaxis.set_tick_params( direction = 'out' ) - #ax.yaxis.set_tick_params( direction = 'out' ) - ax.tick_params( direction = 'out' ) - - # These two are equivalent, get rid of the ticks but not the border - #ax.xaxis.set_visible( False ) - #ax.get_xaxis().set_visible( False ) - if not i[2]: - ax.set_xticklabels([]) - for tick in ax.xaxis.get_major_ticks(): - tick.tick2On = False - for tick in ax.yaxis.get_major_ticks(): - tick.tick2On = False - - plt.ylabel( i[1], fontsize = 16 ) - # alternate way of doing this separately. - #plt.yaxis.label.size_size(16) - #plt.title( 'B' ) - ax.text( -0.18, 1.0, i[3], fontsize = 18, weight = 'bold', - transform=ax.transAxes ) - j = j + 1 - for k in i[0].vec: - plt.plot( timePts, k.vector * i[4] ) - #plt.title( i.name ) - print i[0].name - - plt.xlabel( 'Time (s)', fontsize = 16 ) - plt.show() - -def main(): - numpy.random.seed( 1234 ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - assert( moose.exists( '/model' ) ) - moose.element( '/model/elec/hsolve' ).tick = -1 - for i in range( 0, 10 ): - moose.setClock( i, 100 ) - for i in range( 10, 18 ): - moose.setClock( i, dt ) - moose.setClock( 18, plotdt ) - moose.reinit() - buildPlots() - # Run for baseline, tetanus, and post-tetanic settling time - print 'starting...' - t1 = time.time() - moose.start( baselineTime ) - caPsd = moose.vec( '/model/chem/psd/Ca_input' ) - caDend = moose.vec( '/model/chem/dend/DEND/Ca_input' ) - castim = (numpy.random.rand( len( caPsd.concInit ) ) * 0.8 + 0.2) * psdTetCa - caPsd.concInit = castim - caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa - moose.start( tetTime ) - caPsd.concInit = basalCa - caDend.concInit = basalCa - moose.start( interTetTime ) - caPsd.concInit = castim - caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa - moose.start( tetTime ) - caPsd.concInit = basalCa - caDend.concInit = basalCa - moose.start( postTetTime ) - caPsd.concInit = ltdCa - caDend.concInit = ltdCa - moose.start( ltdTime ) - caPsd.concInit = basalCa - caDend.concInit = basalCa - moose.start( postLtdTime ) - print 'real time = ', time.time() - t1 - - if do3D: - app = QtGui.QApplication(sys.argv) - compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) - ecomptPath = map( lambda x : x.path, compts ) - morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") - morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ - [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) - viewer = moogli.DynamicMorphologyViewerWidget(morphology) - def callback( morphology, viewer ): - moose.start( 0.1 ) - return True - viewer.set_callback( callback, idletime = 0 ) - viewer.showMaximized() - viewer.show() - app.exec_() - - displayPlots() - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py b/examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py deleted file mode 100644 index 997dfd9..0000000 --- a/examples/paper-2015/Fig4_ReacDiff/Fig4GHIJ.py +++ /dev/null @@ -1,242 +0,0 @@ -######################################################################## -# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. -# It is licenced under the GPL 2.1 or higher. -# There is no warranty of any kind. You are welcome to make copies under -# the provisions of the GPL. -# This program builds a multiscale model with a few spines inserted into -# a simplified cellular morphology. Each spine has a signaling model in it -# too. The program runs the model with a strong but brief calcium input -# synapses at 10 seconds, and a long but smaller Ca influx from 290 to -# 650 seconds. This simulation runs using a stochastic method. -# The runtime on a 2.2 GHz Intel core I7 processor is about 465 s. -######################################################################## -import moogli -import numpy -import time -import pylab -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import matplotlib.pyplot as plt -import sys -import os -from moose.neuroml.ChannelML import ChannelML -sys.path.append('/home/bhalla/moose/trunk/Demos/util') -import rdesigneur as rd - -PI = 3.14159265359 -useGssa = True -combineSegments = False -baselineTime = 10 -tetTime = 1 -interTetTime = 20 -postTetTime = 240 -ltdTime = 360 -postLtdTime = 60 -do3D = False -dt = 0.001 -plotdt = 0.1 -psdTetCa = 8e-3 -dendTetCa = 2e-3 -basalCa = 0.08e-3 -ltdCa = 0.25e-3 - -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - cellProto = [ ['ca1_minimal.p', 'elec'] ] - spineProto = [ ['makeSpineProto()', 'spine' ]] - chemProto = [ ['CaMKII_merged77.g', 'chem'] ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" - spineDistrib = [ \ - ["spine", '#apical#', \ - "spineSpacing", chemRange + " * 5e-6", \ - "spineSpacingDistrib", "1e-6", \ - "angle", "0", \ - "angleDistrib", "0", \ - "size", "1", \ - "sizeDistrib", "0" ] \ - ] - chemDistrib = [ \ - [ "chem", "#apical#", "install", chemRange ] - ] - - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [ - [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], - [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], - [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - spineDistrib = spineDistrib, \ - chemDistrib = chemDistrib, \ - cellProto = cellProto, \ - spineProto = spineProto, \ - chemProto = chemProto - ) - - return rdes - -def buildOnePlot( path, field = 'getConc' ): - elist = moose.vec( '/model/chem/' + path ) - tabname = path.replace( '/', '_' ) - tab = moose.Table2( '/graphs/' + tabname, len( elist ) ).vec - moose.connect( tab, 'requestOut', elist, field, 'OneToOne' ) - -def buildPlots(): - if not moose.exists( '/graphs' ): - moose.Neutral( '/graphs' ) - buildOnePlot( 'psd/actCaMKII' ) - buildOnePlot( 'spine/actCaMKII' ) - buildOnePlot( 'dend/DEND/actCaMKII' ) - buildOnePlot( 'psd/tot_PSD_R', 'getN' ) - -def displayPlots(): - #plt.style.use( 'ggplot' ) - #fig = plt.figure( figsize=( 6, 10 ), frameon=False, facecolor='white' ) - fig = plt.figure( figsize=( 5, 10 ), facecolor='white' ) - fig.subplots_adjust( left = 0.18 ) - elist = moose.wildcardFind( '/graphs/#[0]' ) - n = len(elist) - j = 1 - timePts = numpy.arange( 0, len( elist[0].vector ) ) * elist[0].dt - labelName = [ "[CaMKII] (uM)", "[CaMKII] (uM)", - "[CaMKII] (uM)", "# AMPAR" ] - showTickLabels = [0,0,0,1] - plotTitle = ['G', 'H', 'I', 'J'] - plotScale = [1000,1000,1000,1] - for i in zip( elist, labelName, showTickLabels, plotTitle, plotScale ): - ax = plt.subplot( 4, 1, j ) - ax.spines['top'].set_visible( False ) - ax.spines['right'].set_visible( False ) - - #This function does the same as below, one axis at a time - #ax.xaxis.set_tick_params( direction = 'out' ) - #ax.yaxis.set_tick_params( direction = 'out' ) - ax.tick_params( direction = 'out' ) - - # These two are equivalent, get rid of the ticks but not the border - #ax.xaxis.set_visible( False ) - #ax.get_xaxis().set_visible( False ) - if not i[2]: - ax.set_xticklabels([]) - for tick in ax.xaxis.get_major_ticks(): - tick.tick2On = False - for tick in ax.yaxis.get_major_ticks(): - tick.tick2On = False - - plt.ylabel( i[1], fontsize = 16 ) - # alternate way of doing this separately. - #plt.yaxis.label.size_size(16) - #plt.title( 'B' ) - ax.text( -0.18, 1.0, i[3], fontsize = 18, weight = 'bold', - transform=ax.transAxes ) - j = j + 1 - for k in i[0].vec: - plt.plot( timePts, k.vector * i[4] ) - #plt.title( i.name ) - print i[0].name - - plt.xlabel( 'Time (s)', fontsize = 16 ) - plt.show() - -def main(): - numpy.random.seed( 1234 ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - assert( moose.exists( '/model' ) ) - moose.element( '/model/elec/hsolve' ).tick = -1 - for i in range( 0, 10 ): - moose.setClock( i, 100 ) - for i in range( 10, 18 ): - moose.setClock( i, dt ) - moose.setClock( 18, plotdt ) - moose.reinit() - buildPlots() - # Run for baseline, tetanus, and post-tetanic settling time - print 'starting...' - t1 = time.time() - moose.start( baselineTime ) - caPsd = moose.vec( '/model/chem/psd/Ca_input' ) - caDend = moose.vec( '/model/chem/dend/DEND/Ca_input' ) - castim = (numpy.random.rand( len( caPsd.concInit ) ) * 0.8 + 0.2) * psdTetCa - caPsd.concInit = castim - caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa - moose.start( tetTime ) - caPsd.concInit = basalCa - caDend.concInit = basalCa - moose.start( interTetTime ) - caPsd.concInit = castim - caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa - moose.start( tetTime ) - caPsd.concInit = basalCa - caDend.concInit = basalCa - moose.start( postTetTime ) - caPsd.concInit = ltdCa - caDend.concInit = ltdCa - moose.start( ltdTime ) - caPsd.concInit = basalCa - caDend.concInit = basalCa - moose.start( postLtdTime ) - print 'real time = ', time.time() - t1 - - if do3D: - app = QtGui.QApplication(sys.argv) - compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) - ecomptPath = map( lambda x : x.path, compts ) - morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") - morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ - [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) - viewer = moogli.DynamicMorphologyViewerWidget(morphology) - def callback( morphology, viewer ): - moose.start( 0.1 ) - return True - viewer.set_callback( callback, idletime = 0 ) - viewer.showMaximized() - viewer.show() - app.exec_() - - displayPlots() - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p b/examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p deleted file mode 100644 index 4395d62..0000000 --- a/examples/paper-2015/Fig4_ReacDiff/ca1_minimal.p +++ /dev/null @@ -1,58 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - - -dend_3 none 0 220 0 3.84 -dend_5 . 0 220 0 3.84 -dend_6 . 0 220 0 3.84 -dend_8 . 0 110 0 3.84 - -soma dend_8 0 125 0 8.46 - - -apical_10 soma 0 120 0 4.0 -apical_11 apical_10 0 120 0 3 -apical_12 apical_11 0 120 0 3 -apical_13 apical_12 0 120 0 2.6 -apical_14 apical_13 0 120 0 2.6 -apical_15 apical_14 0 120 0 2.6 -apical_16 apical_15 0 120 0 2.6 -apical_17 apical_16 0 120 0 2.6 -apical_18 apical_17 0 120 0 2.6 -apical_19 apical_18 0 120 0 2.6 - -apical_11_1 apical_10 -60 60 0 2 -apical_11_2 apical_11_1 -60 60 0 1.8 -apical_11_3 apical_11_2 0 80 0 1.5 -apical_11_4 apical_11_3 0 80 0 1.5 - -apical_13_1 apical_12 40 40 0 1.0 -apical_13_2 apical_13_1 40 40 0 1.0 - -apical_14_1 apical_13_2 0 10 0 1.0 -apical_14_2 . 0 10 0 1.0 -apical_14_3 . 0 10 0 1.0 -apical_14_4 . 0 10 0 1.0 -apical_14_5 . 0 10 0 1.0 -apical_14_6 . 0 10 0 1.0 -apical_14_7 . 0 10 0 1.0 -apical_14_8 . 0 10 0 1.0 -apical_14_9 . 0 10 0 1.0 -apical_14_10 . 0 10 0 1.0 -apical_14_11 . 0 10 0 1.0 -apical_14_12 . 0 10 0 1.0 -apical_14_13 . 0 10 0 1.0 -apical_15_1 . 0 30 0 1.0 -apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py b/examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py deleted file mode 100644 index 1d071ab..0000000 --- a/examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py +++ /dev/null @@ -1,293 +0,0 @@ -################################################################## -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -## -## rxdSpineSize.py: Builds a cell with spines and a propagating reaction -## wave. Products diffuse into the spine and cause it to get bigger. -################################################################## -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose -import sys -sys.path.append( '../util' ) -import rdesigneur as rd -from PyQt4 import QtGui -import moogli -import moogli.extensions.moose -import matplotlib - -PI = 3.141592653 -ScalingForTesting = 10 -RM = 1.0 / ScalingForTesting -RA = 1.0 * ScalingForTesting -CM = 0.01 * ScalingForTesting -runtime = 100.0 -frameruntime = 1.0 -diffConst = 5e-12 -dendLen = 100e-6 -diffLen = 1.0e-6 -dendDia = 2e-6 -somaDia = 5e-6 -concInit = 0.001 # 1 millimolar -spineSpacing = 10e-6 -spineSpacingDistrib = 1e-6 -spineSize = 1.0 -spineSizeDistrib = 0.5 -spineAngle= numpy.pi / 2.0 -spineAngleDistrib = 0.0 - -def makeCellProto( name ): - elec = moose.Neuron( '/library/' + name ) - ecompt = [] - soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) - dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) - moose.connect( soma, 'axial', dend, 'raxial' ) - elec.buildSegmentTree() - -def makeChemProto( name ): - chem = moose.Neutral( '/library/' + name ) - comptVol = diffLen * dendDia * dendDia * PI / 4.0 - for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): - print 'making ', i - compt = moose.CubeMesh( chem.path + '/' + i[0] ) - compt.volume = i[1] - #x = moose.Pool( compt.path + '/x' ) - #y = moose.BufPool( compt.path + '/y' ) - z = moose.Pool( compt.path + '/z' ) - #x.concInit = 0.0 - #x.diffConst = diffConst - #y.concInit = concInit - z.concInit = 0.0 - z.diffConst = diffConst - nInit = comptVol * 6e23 * concInit - nstr = str( 1/nInit) - - x = moose.Pool( chem.path + '/dend/x' ) - x.diffConst = diffConst - func = moose.Function( x.path + '/func' ) - func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" - print func.expr - func.x.num = 1 - moose.connect( x, 'nOut', func.x[0], 'input' ) - moose.connect( func, 'valueOut', x, 'increment' ) - z = moose.element( '/library/' + name + '/dend/z' ) - reac = moose.Reac( '/library/' + name + '/dend/reac' ) - reac.Kf = 1 - reac.Kb = 10 - moose.connect( reac, 'sub', x, 'reac' ) - moose.connect( reac, 'prd', z, 'reac' ) - -def makeSpineProto2( name ): - spine = moose.Neutral( '/library/' + name ) - shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) - head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) - moose.connect( shaft, 'axial', head, 'raxial' ) - -def makeModel(): - moose.Neutral( '/library' ) - makeCellProto( 'cellProto' ) - makeChemProto( 'cProto' ) - makeSpineProto2( 'spine' ) - rdes = rd.rdesigneur( useGssa = False, \ - combineSegments = False, \ - stealCellFromLibrary = True, \ - diffusionLength = 1e-6, \ - cellProto = [['cellProto', 'elec' ]] ,\ - spineProto = [['spineProto', 'spine' ]] ,\ - chemProto = [['cProto', 'chem' ]] ,\ - spineDistrib = [ \ - ['spine', '#', \ - 'spacing', str( spineSpacing ), \ - 'spacingDistrib', str( spineSpacingDistrib ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ], \ - chemDistrib = [ \ - [ "chem", "dend", "install", "1" ] \ - ], - adaptorList = [ \ - [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ - ] \ - ) - rdes.buildModel( '/model' ) - x = moose.vec( '/model/chem/dend/x' ) - x.concInit = 0.0 - for i in range( 0,20 ): - x[i].concInit = concInit - -def makePlot( name, srcVec, field ): - tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec - for i in zip(srcVec, tab): - moose.connect(i[1], 'requestOut', i[0], field) - return tab - - -def displayPlots(): - for x in moose.wildcardFind( '/graphs/#[0]' ): - tab = moose.vec( x ) - for i in range( len( tab ) ): - pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) - pylab.legend() - pylab.figure() - -def main(): - """ - This illustrates the use of rdesigneur to build a simple dendrite with - spines, and then to resize them using spine fields. These are the - fields that would be changed dynamically in a simulation with reactions - that affect spine geometry. - In this simulation there is a propagating reaction wave using a - highly abstracted equation, whose product diffuses into the spines and - makes them bigger. - """ - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - - eHead = moose.wildcardFind( '/model/elec/#head#' ) - oldDia = [ i.diameter for i in eHead ] - graphs = moose.Neutral( '/graphs' ) - #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) - #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) - makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) - makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) - makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) - makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) - makePlot( 'headDia', eHead, 'getDiameter' ) - - ''' - debug = moose.PyRun( '/pyrun' ) - debug.tick = 10 - debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" - ''' - moose.reinit() - moose.start( runtime ) - - displayPlots() - pylab.plot( oldDia, label = 'old Diameter' ) - pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) - pylab.legend() - pylab.show() - - app = QtGui.QApplication(sys.argv) - #widget = mv.MoogliViewer( '/model' ) - morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) - widget = moogli.MorphologyViewerWidget( morphology ) - widget.show() - return app.exec_() - quit() - -# Run the 'main' if this script is executed standalone. - -def showVisualization(): - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - - eHead = moose.wildcardFind( '/model/elec/#head#' ) - oldDia = [ i.diameter for i in eHead ] - graphs = moose.Neutral( '/graphs' ) - #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) - #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) - makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) - dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) - makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) - psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) - diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) - # print diaTab[0].vector[-1] - # return - dendrite = moose.element("/model/elec/dend") - dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] - # print dendrites - moose.reinit() - - spineHeads = moose.wildcardFind( '/model/elec/#head#') - # print moose.wildcardFind( '/model/elec/##') - - # print "dendZ", readValues(dendZ) - # print dendrite - - app = QtGui.QApplication(sys.argv) - viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) - viewer.showMaximized() - viewer.start() - return app.exec_() - - -def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): - network = moogli.extensions.moose.read(path=path, - vertices=15) - - dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] - chem_compt_group = dendrite.subdivide(len(dendZ)) - normalizer = moogli.utilities.normalizer(0.0, - 300.0, - clipleft=True, - clipright=True) - colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) - mapper = moogli.utilities.mapper(colormap, normalizer) - - def readValues(tables): - values = [] - for i in range(len(tables)): - values.append(tables[i].vector[-1]) - return values - - def prelude(view): - view.home() - view.pitch(math.pi / 3.0) - view.zoom(0.3) - network.groups["soma"].set("color", moogli.colors.RED) - network.groups["spine"].groups["shaft"].set("color", - moogli.colors.RED) - - def interlude(view): - moose.start(frameruntime) - network.groups["spine"].groups["head"].set("radius", - readValues(diaTab), - lambda x: x * 0.5e6) - network.groups["spine"].groups["head"].set("color", - readValues(psdZ), - mapper) - chem_compt_group.set("color", - readValues(dendZ), - mapper) - if moose.element("/clock").currentTime >= runtime: - view.stop() - - viewer = moogli.Viewer("Viewer") - viewer.attach_shapes(network.shapes.values()) - viewer.detach_shape(dendrite) - viewer.attach_shapes(chem_compt_group.shapes.values()) - - view = moogli.View("main-view", - prelude=prelude, - interlude=interlude) - cb = moogli.widgets.ColorBar(id="cb", - title="Molecule #", - text_color=moogli.colors.BLACK, - position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), - size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), - text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", - orientation=math.pi / 2.0, - text_character_size=20, - label_formatting_precision=0, - colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), - color_resolution=100, - scalar_range=moogli.geometry.Vec2f(0.0, - 300.0)) - view.attach_color_bar(cb) - viewer.attach_view(view) - return viewer - - -if __name__ == '__main__': - showVisualization() diff --git a/examples/paper-2015/Fig5_CellMultiscale/Fig5A.py b/examples/paper-2015/Fig5_CellMultiscale/Fig5A.py deleted file mode 100644 index 330516e..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/Fig5A.py +++ /dev/null @@ -1,157 +0,0 @@ -######################################################################## -# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. -# It is licenced under the GPL 2.1 or higher. -# There is no warranty of any kind. You are welcome to make copies under -# the provisions of the GPL. -# This programme illustrates building a panel of multiscale models to -# test neuronal plasticity in different contexts. The simulation is set -# to settle for 5 seconds, then a 2 second tetanus is delivered, then -# the simulation continues for another 50 seconds. -# By default we set it to run the smallest model, that takes about 4 minutes -# to run 57 seconds of simulation time, on an Intel core I7 at -# 2.2 GHz. The big model, VHC-neuron, takes almost 90 minutes. -# This program dumps data to text files for further analysis. -######################################################################## -import moogli -import numpy -import time -import pylab -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import matplotlib.pyplot as plt -import sys -import os -from moose.neuroml.ChannelML import ChannelML -sys.path.append('/home/bhalla/moose/trunk/Demos/util') -import rdesigneur as rd - -PI = 3.14159265359 -useGssa = True -combineSegments = False -#### Choose your favourite models here. ################# -#elecFileNames = ( "ca1_minimal.p", ) -#elecFileNames = ( "ca1_minimal.p", "h10.CNG.swc" ) -elecFileNames = ( "CA1.morph.xml", "ca1_minimal.p", "VHC-neuron.CNG.swc", "h10.CNG.swc" ) -synSpineList = [] -synDendList = [] -probeInterval = 0.1 -probeAmplitude = 1.0 -tetanusFrequency = 100.0 -tetanusAmplitude = 1000 -tetanusAmplitudeForSpines = 1000 -baselineTime = 5 -tetTime = 2 -postTetTime = 50 - -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - spineProto = [ \ - ['makeSpineProto()', 'spine' ] - ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - passiveDistrib = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ - "Em", "-58e-3", "initVm", "-65e-3" ], \ - [ ".", "#axon#", "RA", "0.5" ] \ - ] - spineDistrib = [ \ - ["spine", '#apical#', "spineSpacing", "20e-6", \ - "spineSpacingDistrib", "2e-6", \ - "angle", "0", \ - "angleDistrib", str( 2*PI ), \ - "size", "1", \ - "sizeDistrib", "0.5" ] \ - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - - rdes = rd.rdesigneur( - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - passiveDistrib = passiveDistrib, \ - spineDistrib = spineDistrib, \ - spineProto = spineProto \ - ) - - return rdes - -def interlude( view ): - view.yaw( 0.01 ) - -def create_viewer(rdes): - print ' doing viewer for ', rdes.soma.path - network = moogli.extensions.moose.read(rdes.elecid.path) - normalizer = moogli.utilities.normalizer(-0.08, - 0.02, - clipleft=True, - clipright=True) - colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, - 0.5, - 1.0, - 1.0), - moogli.colors.Color(1.0, - 0.0, - 0.0, - 0.9)]) - mapper = moogli.utilities.mapper(colormap, normalizer) - - vms = [moose.element(x).Vm for x in network.shapes.keys()] - network.set("color", vms, mapper) - viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) - view = moogli.View("vm-view", interlude=interlude ) - viewer.attach_view(view) - viewer.show() - viewer.start() - view.pitch( PI/2.0 ) - return viewer - -def main(): - app = QtGui.QApplication(sys.argv) - numpy.random.seed(1234) - rdes = buildRdesigneur() - viewers = [] - j = 0 - for i in elecFileNames: - print i - ename = '/model' + str(j) - rdes.cellProtoList = [ ['./cells/' + i, 'elec' ] ] - rdes.buildModel( ename ) - assert( moose.exists( ename ) ) - moose.reinit() - viewers.append(create_viewer(rdes)) - j = j + 1 - app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py b/examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py deleted file mode 100644 index 78595b4..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py +++ /dev/null @@ -1,281 +0,0 @@ -######################################################################## -# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. -# It is licenced under the GPL 2.1 or higher. -# There is no warranty of any kind. You are welcome to make copies under -# the provisions of the GPL. -# This programme illustrates building a panel of multiscale models to -# test neuronal plasticity in different contexts. The simulation is set -# to settle for 5 seconds, then a 2 second tetanus is delivered, then -# the simulation continues for another 50 seconds. -# By default we set it to run the smallest model, that takes about 4 minutes -# to run 57 seconds of simulation time, on an Intel core I7 at -# 2.2 GHz. The big model, VHC-neuron, takes almost 90 minutes. -# This program dumps data to text files for further analysis. -######################################################################## -import moogli -import numpy -import time -import pylab -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import matplotlib.pyplot as plt -import sys -import os -from moose.neuroml.ChannelML import ChannelML -sys.path.append('/home/bhalla/moose/trunk/Demos/util') -import rdesigneur as rd - -PI = 3.14159265359 -useGssa = True -combineSegments = False -#### Choose your favourite model here. ################# -#elecFileNames = ( "ca1_minimal.p", ) -#elecFileNames = ( "ca1_minimal.p", "h10.CNG.swc" ) -elecFileNames = ( "CA1.morph.xml", "ca1_minimal.p", "VHC-neuron.CNG.swc", "h10.CNG.swc" ) -synSpineList = [] -synDendList = [] -probeInterval = 0.1 -probeAmplitude = 1.0 -tetanusFrequency = 100.0 -tetanusAmplitude = 1000 -tetanusAmplitudeForSpines = 1000 -baselineTime = 5 -tetTime = 2 -postTetTime = 50 - -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - chanProto = [ - ['./chans/hd.xml'], \ - ['./chans/kap.xml'], \ - ['./chans/kad.xml'], \ - ['./chans/kdr.xml'], \ - ['./chans/na3.xml'], \ - ['./chans/nax.xml'], \ - ['./chans/CaConc.xml'], \ - ['./chans/Ca.xml'], \ - ['./chans/NMDA.xml'], \ - ['./chans/Glu.xml'] \ - ] - spineProto = [ \ - ['makeSpineProto()', 'spine' ] - ] - chemProto = [ \ - ['./chem/' + 'psd53.g', 'ltpModel'] \ - ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - passiveDistrib = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ - "Em", "-58e-3", "initVm", "-65e-3" ], \ - [ ".", "#axon#", "RA", "0.5" ] \ - ] - chanDistrib = [ \ - ["hd", "#dend#,#apical#", "Gbar", "5e-2*(1+(p*3e4))" ], \ - ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], \ - ["na3", "#soma#,#dend#,#apical#", "Gbar", "250" ], \ - ["nax", "#soma#,#axon#", "Gbar", "1250" ], \ - ["kap", "#axon#,#soma#", "Gbar", "300" ], \ - ["kap", "#dend#,#apical#", "Gbar", \ - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ - ["Ca_conc", "#dend#,#apical#", "tau", "0.0133" ], \ - ["kad", "#soma#,#dend#,#apical#", "Gbar", \ - "300*H(p - 100e-6)*(1+p*1e4)" ], \ - ["Ca", "#dend#,#apical#", "Gbar", "50" ], \ - ["glu", "#dend#,#apical#", "Gbar", "200*H(p-200e-6)" ], \ - ["NMDA", "#dend#,#apical#", "Gbar", "2*H(p-200e-6)" ] \ - ] - spineDistrib = [ \ - ["spine", '#apical#', "spineSpacing", "20e-6", \ - "spineSpacingDistrib", "2e-6", \ - "angle", "0", \ - "angleDistrib", str( 2*PI ), \ - "size", "1", \ - "sizeDistrib", "0.5" ] \ - ] - chemDistrib = [ \ - [ "ltpModel", "#apical#", "install", "1"] - ] - - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [ - [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], - [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], - [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - passiveDistrib = passiveDistrib, \ - spineDistrib = spineDistrib, \ - chanDistrib = chanDistrib, \ - chemDistrib = chemDistrib, \ - spineProto = spineProto, \ - chanProto = chanProto, \ - chemProto = chemProto, \ - adaptorList = adaptorList - ) - - return rdes - -def buildPlots( rdes ): - numPlots = 10 - caPsd = moose.vec( '/model/chem/psd/Ca' ) - caHead = moose.vec( '/model/chem/spine/Ca' ) - psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) - numSpines = rdes.spineCompt.mesh.num - assert( 2 * numSpines == len( rdes.spineComptElist ) ) - if not moose.exists( '/graphs' ): - moose.Neutral( '/graphs' ) - assert( len( caPsd ) == numSpines ) - assert( len( caHead ) == numSpines ) - if numSpines < numPlots: - caPsdTab = moose.Table2( '/graphs/caPsdTab', numSpines ).vec - caHeadTab = moose.Table2( '/graphs/caHeadTab', numSpines ).vec - psdRtab = moose.Table2( '/graphs/psdRtab', numSpines ).vec - for i in range( numSpines ): - moose.connect( caPsdTab[i], 'requestOut', caPsd[i], 'getConc' ) - moose.connect( caHeadTab[i], 'requestOut', caHead[i], 'getConc') - moose.connect( psdRtab[i], 'requestOut', psdR[i], 'getN' ) - else: - caPsdTab = moose.Table2( '/graphs/caPsdTab', numPlots ).vec - caHeadTab = moose.Table2( '/graphs/caHeadTab', numPlots ).vec - psdRtab = moose.Table2( '/graphs/psdRtab', numPlots ).vec - dx = numSpines / numPlots - for i in range( numPlots ): - moose.connect( caPsdTab[i], 'requestOut', caPsd[i*dx], 'getConc' ) - moose.connect( caHeadTab[i], 'requestOut', caHead[i*dx], 'getConc' ) - moose.connect( psdRtab[i], 'requestOut', psdR[i*dx], 'getN' ) - vtab = moose.Table( '/graphs/vtab' ) - moose.connect( vtab, 'requestOut', rdes.soma, 'getVm' ) - eSpineCaTab = moose.Table( '/graphs/eSpineCaTab' ) - path = rdes.spineComptElist[1].path + "/Ca_conc" - moose.connect( eSpineCaTab, 'requestOut', path, 'getCa' ) - eSpineVmTab = moose.Table( '/graphs/eSpineVmTab' ) - moose.connect( eSpineVmTab, 'requestOut', rdes.spineComptElist[1], 'getVm' ) - eSpineGkTab = moose.Table( '/graphs/eSpineGkTab' ) - path = rdes.spineComptElist[1].path + "/NMDA" - moose.connect( eSpineGkTab, 'requestOut', path, 'getGk' ) - -def saveAndClearPlots( name ): - print 'saveAndClearPlots( ', name, ' )' - for i in moose.wildcardFind( "/graphs/#" ): - #plot stuff - i.xplot( name + '.xplot', i.name ) - moose.delete( "/graphs" ) - -def printPsd( name ): - # Print the vol, the path dist from soma, the electrotonic dist, and N - psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) - neuronVoxel = moose.element( '/model/chem/spine' ).neuronVoxel - elecComptMap = moose.element( '/model/chem/dend' ).elecComptMap - print "len( neuronVoxel = ", len( neuronVoxel), min( neuronVoxel), max( neuronVoxel) - print len( elecComptMap), elecComptMap[0], elecComptMap[12] - neuron = moose.element( '/model/elec' ) - ncompts = neuron.compartments - d = {} - j = 0 - for i in ncompts: - #print i - d[i] = j - j += 1 - - f = open( name + ".txt", 'w' ) - for i in range( len( psdR ) ): - n = psdR[i].n - conc = psdR[i].conc - vol = psdR[i].volume - compt = elecComptMap[ neuronVoxel[i] ] - #print compt - segIndex = d[compt[0]] - p = neuron.geometricalDistanceFromSoma[ segIndex ] - L = neuron.electrotonicDistanceFromSoma[ segIndex ] - s = str( i ) + " " + str(n) + " " + str( conc ) + " " + str(p) + " " + str(L) + "\n" - f.write( s ) - f.close() - - -def probeStimulus( time ): - for t in numpy.arange( 0, time, probeInterval ): - moose.start( probeInterval ) - for i in synSpineList: - i.activation( probeAmplitude ) - -def tetanicStimulus( time ): - tetInterval = 1.0/tetanusFrequency - for t in numpy.arange( 0, time, tetInterval ): - moose.start( tetInterval ) - for i in synDendList: - i.activation( tetanusAmplitude ) - for i in synSpineList: - i.activation( tetanusAmplitudeForSpines ) - -def main(): - global synSpineList - global synDendList - numpy.random.seed( 1234 ) - rdes = buildRdesigneur() - for i in elecFileNames: - print i - rdes.cellProtoList = [ ['./cells/' + i, 'elec'] ] - rdes.buildModel( '/model' ) - assert( moose.exists( '/model' ) ) - synSpineList = moose.wildcardFind( "/model/elec/#head#/glu,/model/elec/#head#/NMDA" ) - temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) - - synDendList = list( temp - set( synSpineList ) ) - moose.reinit() - buildPlots( rdes ) - # Run for baseline, tetanus, and post-tetanic settling time - t1 = time.time() - probeStimulus( baselineTime ) - tetanicStimulus( tetTime ) - probeStimulus( postTetTime ) - print 'real time = ', time.time() - t1 - - printPsd( i + ".fig5" ) - saveAndClearPlots( i + ".fig5" ) - moose.delete( '/model' ) - rdes.elecid = moose.element( '/' ) - -if __name__ == '__main__': - main() diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc deleted file mode 100644 index 6b8748e..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/cells/970529c.CNG.swc +++ /dev/null @@ -1,2493 +0,0 @@ -# Original file 970529c.out.swc edited by Duncan Donohue using StdSwc version 1.21 on 8/16/05. -# Irregularities and fixes documented in 970529c.out.swc.std. See StdSwc1.21.doc for more information. -# -# Claiborne to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu -# Original fileName:C:\Documents and Settings\Admin\Desktop\Jaffe\970529c.out -# -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 0 0 0 42.789 -1 - 2 3 -3.25 -3.95 -1.35 2.485 1 - 3 3 -4.34 -5.37 -1.38 1.955 2 - 4 3 -5.86 -5.37 -1.38 1.955 3 - 5 3 -5.64 -8.92 -1.38 1.955 4 - 6 3 -6.73 -11.41 -1.38 1.955 5 - 7 3 -8.03 -13.01 -1.38 1.955 6 - 8 3 -8.9 -14.61 -1.38 1.775 7 - 9 3 -9.55 -16.74 -1.38 1.775 8 - 10 3 -10.42 -17.27 0.67 1.955 9 - 11 3 -10.42 -17.8 0.67 1.955 10 - 12 3 -12.16 -18.87 0.67 0.89 11 - 13 3 -13.46 -20.65 -1.74 0.89 12 - 14 3 -15.42 -22.25 -1.74 0.89 13 - 15 3 -16.28 -23.84 -4.51 0.71 14 - 16 3 -18.46 -25.8 -4.51 0.71 15 - 17 3 -20.63 -27.93 -4.51 0.71 16 - 18 3 -21.71 -29.35 -6.68 0.71 17 - 19 3 -23.67 -32.02 -6.68 0.71 18 - 20 3 -25.19 -33.26 -6.68 0.71 19 - 21 3 -26.87 -35.31 -6.68 0.71 20 - 22 3 -28.39 -37.45 -6.68 0.71 21 - 23 3 -30.13 -38.69 -6.68 0.71 22 - 24 3 -31.43 -38.36 -7.26 0.71 23 - 25 3 -31.65 -41.2 -7.26 0.71 24 - 26 3 -33.61 -43.33 -7.26 0.71 25 - 27 3 -34.69 -45.46 -7.7 0.71 26 - 28 3 -36.21 -47.95 -7.7 0.71 27 - 29 3 -36.99 -50.85 -7.7 0.71 28 - 30 3 -38.29 -52.8 -7.7 0.71 29 - 31 3 -38.94 -54.58 -7.7 0.71 30 - 32 3 -39.59 -56.71 -7.7 0.71 31 - 33 3 -40.24 -58.84 -7.7 0.71 32 - 34 3 -41.11 -61.15 -7.7 0.71 33 - 35 3 -41.98 -63.46 -7.7 0.71 34 - 36 3 -43.02 -65.34 -7.7 0.71 35 - 37 3 -44.98 -66.94 -7.05 0.71 36 - 38 3 -46.06 -68.38 -7.34 0.71 37 - 39 3 -48.45 -71.04 -7.34 0.71 38 - 40 3 -49.54 -72.82 -7.34 0.71 39 - 41 3 -51.27 -74.6 -7.14 0.71 40 - 42 3 -53.01 -76.55 -7.14 0.71 41 - 43 3 -54.31 -78.68 -7.14 0.71 42 - 44 3 -55.86 -81.29 -7.14 0.71 43 - 45 3 -57.59 -83.07 -7.14 0.71 44 - 46 3 -59.33 -85.56 -7.14 0.71 45 - 47 3 -60.85 -88.22 -7.14 0.71 46 - 48 3 -61.8 -88.72 -7.14 0.71 47 - 49 3 -63.11 -89.43 -9.1 0.71 48 - 50 3 -64.84 -90.67 -12.48 0.71 49 - 51 3 -67.02 -91.38 -14.43 0.71 50 - 52 3 -68.54 -92.45 -15.53 0.71 51 - 53 3 -70.71 -93.87 -15.53 0.71 52 - 54 3 -72.45 -95.47 -15.53 0.71 53 - 55 3 -73.31 -97.42 -15.53 0.71 54 - 56 3 -74.18 -100.08 -17.04 0.71 55 - 57 3 -74.83 -102.75 -17.04 0.71 56 - 58 3 -74.5 -104.76 -17.04 0.71 57 - 59 3 -74.72 -106.18 -15.7 0.71 58 - 60 3 -75.15 -108.84 -15.7 0.71 59 - 61 3 -76.02 -111.15 -15.7 0.71 60 - 62 3 -77.11 -113.29 -15.7 0.71 61 - 63 3 -78.63 -115.77 -17.44 0.71 62 - 64 3 -80.15 -117.55 -17.44 0.71 63 - 65 3 -80.79 -120.07 -17.44 0.71 64 - 66 3 -80.79 -121.14 -20.1 0.71 65 - 67 3 -82.26 -123.16 -20.1 0.71 66 - 68 3 -83.78 -125.29 -20.1 0.71 67 - 69 3 -84.43 -127.24 -20.1 0.71 68 - 70 3 -85.51 -129.02 -20.1 0.71 69 - 71 3 -87.9 -130.26 -20.1 0.71 70 - 72 3 -88.77 -132.04 -20.1 0.71 71 - 73 3 -89.64 -134 -20.1 0.71 72 - 74 3 -92.03 -136.84 -20.1 0.71 73 - 75 3 -93.67 -138.89 -20.1 0.71 74 - 76 3 -94.82 -140.58 -20.1 0.71 75 - 77 3 -96.34 -141.65 -20.1 0.71 76 - 78 3 -98.3 -142.18 -20.1 0.71 77 - 79 3 -99.82 -143.6 -20.1 0.71 78 - 80 3 -100.47 -145.02 -20.1 0.71 79 - 81 3 -101.55 -146.09 -20.1 0.71 80 - 82 3 -80.79 -123.27 -20.1 0.71 66 - 83 3 -81 -125.4 -20.1 0.71 82 - 84 3 -82.09 -128.06 -20.1 0.71 83 - 85 3 -82.09 -130.2 -20.1 0.71 84 - 86 3 -82.31 -130.91 -20.1 0.71 85 - 87 3 -82.31 -131.26 -19.08 0.71 86 - 88 3 -82.74 -133.04 -19.08 0.71 87 - 89 3 -82.95 -134.31 -19.08 0.71 88 - 90 3 -82.74 -135.74 -19.08 0.71 89 - 91 3 -61.15 -89.6 -5.21 0.71 47 - 92 3 -62.46 -92.82 -5.21 0.71 91 - 93 3 -63.54 -95.67 -5.21 0.71 92 - 94 3 -64.41 -97.8 -5.21 0.71 93 - 95 3 -65.06 -100.28 -5.21 0.71 94 - 96 3 -65.28 -101.88 -5.21 0.71 95 - 97 3 -65.71 -104.55 -5.21 0.71 96 - 98 3 -65.95 -107.94 -5.21 0.71 97 - 99 3 -66.19 -110.6 -5.21 0.71 98 - 100 3 -66.62 -113.09 -5.21 0.71 99 - 101 3 -66.62 -114.86 -5.46 0.71 100 - 102 3 -67.27 -116.28 -5.46 0.71 101 - 103 3 -68.14 -117.88 -5.46 0.71 102 - 104 3 -67.92 -119.66 -3.45 0.71 103 - 105 3 -67.72 -121.38 -3.45 0.71 104 - 106 3 -67.07 -124.05 -3.45 0.71 105 - 107 3 -67.72 -126.36 -3.45 0.71 106 - 108 3 -67.72 -128.49 -3.45 0.71 107 - 109 3 -68.37 -130.09 0.1 0.71 108 - 110 3 -68.37 -132.75 0.1 0.71 109 - 111 3 -69.67 -133.99 0.1 0.71 110 - 112 3 -70.11 -135.77 0.1 0.71 111 - 113 3 -69.48 -139.14 0.1 0.71 112 - 114 3 -69.27 -140.73 0.26 0.71 113 - 115 3 -69.48 -142.69 0.26 0.71 114 - 116 3 -69.7 -144.46 0.26 0.71 115 - 117 3 -69.48 -146.24 2.1 0.71 116 - 118 3 -68.62 -148.91 2.1 0.71 117 - 119 3 -70.14 -150.68 2.1 0.71 118 - 120 3 -70.14 -151.52 1.9 0.89 119 - 121 3 -10.6 -19.79 0.67 1.245 11 - 122 3 -10.82 -20.86 0.67 1.065 121 - 123 3 -11.25 -22.63 3.11 1.065 122 - 124 3 -11.69 -23.34 3.11 1.065 123 - 125 3 -11.91 -24.05 3.1 1.065 124 - 126 3 -12.77 -25.12 3.1 0.89 125 - 127 3 -13.86 -26.72 3.1 0.89 126 - 128 3 -15.16 -28.5 2.5 0.89 127 - 129 3 -16.68 -30.45 2.5 0.89 128 - 130 3 -17.34 -32.05 4.34 0.89 129 - 131 3 -18.2 -33.65 4.34 0.89 130 - 132 3 -19.29 -34.18 6.59 0.89 131 - 133 3 -19.72 -35.07 6.06 0.89 132 - 134 3 -20.94 -35.93 6.06 0.71 133 - 135 3 -22.24 -37.71 6.06 0.71 134 - 136 3 -23.54 -38.95 8.27 0.71 135 - 137 3 -25.5 -40.02 9.75 0.71 136 - 138 3 -26.58 -40.73 12.12 0.71 137 - 139 3 -28.1 -40.91 14.37 0.71 138 - 140 3 -29.84 -40.73 15.93 0.71 139 - 141 3 -31.36 -40.91 17.94 0.71 140 - 142 3 -33.1 -41.26 20.75 0.71 141 - 143 3 -34.83 -42.15 22.3 0.71 142 - 144 3 -36.35 -43.04 24.67 0.71 143 - 145 3 -39.18 -44.46 26.14 0.71 144 - 146 3 -42.72 -46.04 26.14 0.71 145 - 147 3 -45.11 -46.22 28.64 0.71 146 - 148 3 -47.5 -46.75 31.14 0.71 147 - 149 3 -49.67 -47.82 30.56 0.71 148 - 150 3 -52.5 -48 30.56 0.71 149 - 151 3 -54.89 -48.89 30.56 0.71 150 - 152 3 -57.06 -49.24 30.56 0.71 151 - 153 3 -59.66 -49.96 30.56 0.71 152 - 154 3 -62.04 -50.13 33.3 0.71 153 - 155 3 -65.3 -51.02 33.3 0.71 154 - 156 3 -68.13 -51.73 33.3 0.71 155 - 157 3 -71.17 -53.15 32.83 0.71 156 - 158 3 -73.99 -54.4 32.83 0.71 157 - 159 3 -76.59 -55.64 32.83 0.71 158 - 160 3 -78.39 -56.69 32.83 0.71 159 - 161 3 -80.34 -57.6 32.83 0.71 160 - 162 3 -82.51 -58.13 32.83 0.71 161 - 163 3 -84.03 -59.02 32.83 0.71 162 - 164 3 -85.55 -59.73 34.9 0.71 163 - 165 3 -87.29 -59.91 34.9 0.71 164 - 166 3 -89.25 -59.91 34.9 0.71 165 - 167 3 -92.07 -61.15 36.86 0.71 166 - 168 3 -94.24 -63.28 36.86 0.71 167 - 169 3 -95.34 -65.4 36.86 0.71 168 - 170 3 -96.86 -67 36.86 0.71 169 - 171 3 -98.16 -68.24 36.86 0.71 170 - 172 3 -99.03 -69.13 36.86 0.71 171 - 173 3 -100.55 -70.02 36.86 0.71 172 - 174 3 -102.28 -71.08 36.86 0.71 173 - 175 3 -103.15 -71.79 36.42 0.71 174 - 176 3 -103.59 -72.86 32.87 0.71 175 - 177 3 -104.67 -74.99 32.87 0.71 176 - 178 3 -105.33 -77.12 32.87 0.71 177 - 179 3 -106.41 -78.9 32.87 0.71 178 - 180 3 -107.12 -80.29 32.87 0.71 179 - 181 3 -19.94 -36.85 3.29 0.71 133 - 182 3 -20.81 -37.73 3.29 0.71 181 - 183 3 -21.68 -39.51 4.88 0.71 182 - 184 3 -21.56 -41.92 1.67 0.71 183 - 185 3 -22.64 -43.87 2.73 0.71 184 - 186 3 -23.08 -46.18 0.45 0.71 185 - 187 3 -24.38 -48.32 0.45 0.71 186 - 188 3 -25.03 -50.45 0.45 0.71 187 - 189 3 -26.34 -52.58 0.45 0.71 188 - 190 3 -26.55 -54.71 0.45 0.71 189 - 191 3 -27.44 -56.21 -1.87 0.71 190 - 192 3 -28.03 -59.1 -2.98 0.71 191 - 193 3 -29.11 -61.94 -2.98 0.71 192 - 194 3 -29.55 -64.6 -2.98 0.71 193 - 195 3 -30.2 -67.09 -5.04 0.71 194 - 196 3 -30.63 -69.22 -6.86 0.71 195 - 197 3 -31.07 -71.36 -6.86 0.71 196 - 198 3 -31.59 -74.5 -6.86 0.71 197 - 199 3 -32.24 -76.45 -6.86 0.71 198 - 200 3 -33.11 -78.41 -6.42 0.71 199 - 201 3 -33.11 -81.25 -6.42 0.71 200 - 202 3 -33.33 -83.56 -6.42 0.71 201 - 203 3 -33.55 -84.8 -6.42 0.71 202 - 204 3 -33.55 -86.04 -6.86 0.89 203 - 205 3 -34.72 -86.76 -6.86 0.71 204 - 206 3 -35.59 -88.71 -6.86 0.71 205 - 207 3 -36.24 -89.98 -7.02 0.71 206 - 208 3 -36.89 -92.28 -7.78 0.71 207 - 209 3 -37.54 -94.42 -10.3 0.71 208 - 210 3 -37.98 -96.19 -10.3 0.71 209 - 211 3 -38.63 -98.15 -10.3 0.71 210 - 212 3 -39.28 -99.57 -10.62 0.71 211 - 213 3 -39.28 -100.81 -12.82 0.71 212 - 214 3 -39.9 -103.35 -12.82 0.71 213 - 215 3 -40.55 -105.13 -12.54 0.71 214 - 216 3 -41.2 -106.2 -13.25 0.71 215 - 217 3 -42.34 -107.47 -13.25 0.71 216 - 218 3 -43.86 -109.06 -13.25 0.71 217 - 219 3 -45.38 -110.13 -13.25 0.71 218 - 220 3 -46.03 -111.73 -13.25 0.71 219 - 221 3 -46.46 -113.15 -16.46 0.71 220 - 222 3 -47.98 -115.3 -16.46 0.71 221 - 223 3 -49.07 -117.44 -18.34 0.71 222 - 224 3 -51.02 -118.15 -18.34 0.71 223 - 225 3 -53.19 -119.57 -20.06 0.71 224 - 226 3 -55.37 -120.81 -20.06 0.71 225 - 227 3 -57.4 -122.11 -21.44 0.71 226 - 228 3 -59.36 -123 -24.04 0.71 227 - 229 3 -61.1 -124.95 -24.04 0.71 228 - 230 3 -63.48 -126.55 -24.04 0.71 229 - 231 3 -65.87 -128.51 -24.04 0.71 230 - 232 3 -67.18 -130.46 -27.01 0.71 231 - 233 3 -69.57 -131.35 -27.01 0.71 232 - 234 3 -71.74 -134.55 -27.01 0.71 233 - 235 3 -73.91 -135.61 -27.8 0.71 234 - 236 3 -76.22 -136.53 -30.56 0.71 235 - 237 3 -77.96 -137.07 -30.56 0.71 236 - 238 3 -80.35 -138.13 -30.56 0.71 237 - 239 3 -81.65 -139.2 -30.56 0.71 238 - 240 3 -83.17 -139.73 -30.56 0.71 239 - 241 3 -84.69 -141.15 -30.56 0.71 240 - 242 3 -86.43 -142.57 -30.56 0.71 241 - 243 3 -87.32 -144.27 -30.56 0.71 242 - 244 3 -89.49 -145.33 -30.56 0.71 243 - 245 3 -91.44 -146.22 -30.56 0.71 244 - 246 3 -41.42 -108.68 -15.42 0.71 216 - 247 3 -41.86 -111.88 -15.42 0.71 246 - 248 3 -41.86 -114.01 -15.34 0.71 247 - 249 3 -42.07 -116.15 -15.34 0.71 248 - 250 3 -41.38 -119.46 -16.16 0.71 249 - 251 3 -41.18 -121.77 -19.07 0.71 250 - 252 3 -41.83 -123.91 -18.58 0.71 251 - 253 3 -41.62 -125.86 -18.58 0.71 252 - 254 3 -41.62 -127.99 -20.79 0.71 253 - 255 3 -40.96 -130.48 -20.79 0.71 254 - 256 3 -40.96 -132.97 -22.38 0.71 255 - 257 3 -40.18 -135.18 -22.38 0.71 256 - 258 3 -40.4 -137.31 -24.36 0.71 257 - 259 3 -41.27 -139.08 -24.36 0.71 258 - 260 3 -41.7 -140.51 -26.77 0.71 259 - 261 3 -44.09 -142.64 -29.73 0.71 260 - 262 3 -44.96 -144.41 -29.73 0.71 261 - 263 3 -45.18 -146.01 -29.73 0.71 262 - 264 3 -45.18 -148.5 -29.73 0.71 263 - 265 3 -44.38 -151.06 -29.73 0.71 264 - 266 3 -43.36 -153.55 -29.73 0.71 265 - 267 3 -43.36 -155.15 -29.73 0.71 266 - 268 3 -33.55 -87.82 -5.68 0.71 204 - 269 3 -34.2 -90.66 -5.68 0.71 268 - 270 3 -34.42 -92.62 -5.68 0.71 269 - 271 3 -35.07 -95.1 -5.68 0.71 270 - 272 3 -35.5 -97.24 -5.68 0.71 271 - 273 3 -35.5 -99.72 -5.68 0.71 272 - 274 3 -34.63 -101.32 -5.68 0.71 273 - 275 3 -34.67 -103.04 -5.68 0.71 274 - 276 3 -35.1 -104.82 -6.99 0.71 275 - 277 3 -35.32 -106.42 -6.99 0.71 276 - 278 3 -35.54 -108.37 -6.99 0.71 277 - 279 3 -35.97 -109.79 -8.37 0.71 278 - 280 3 -35.97 -110.86 -8.37 0.71 279 - 281 3 -35.97 -111.22 -8.37 0.71 280 - 282 3 -37.35 -112.89 -8.37 0.71 281 - 283 3 -38.66 -115.02 -8.37 0.71 282 - 284 3 -39.31 -116.8 -8.37 0.71 283 - 285 3 -40.39 -117.68 -8.37 0.71 284 - 286 3 -41.26 -119.46 -8.37 0.71 285 - 287 3 -41.7 -120.7 -8.37 0.71 286 - 288 3 -43.43 -122.84 -8.37 0.71 287 - 289 3 -44.95 -124.08 -8.37 0.71 288 - 290 3 -46.26 -125.86 -8.37 0.71 289 - 291 3 -47.13 -127.63 -10.46 0.71 290 - 292 3 -48.14 -130.42 -10.46 0.71 291 - 293 3 -48.48 -132.24 -7.5 0.71 292 - 294 3 -49.79 -134.55 -7.5 0.71 293 - 295 3 -49.57 -136.86 -6.16 0.71 294 - 296 3 -50.66 -138.46 -7.18 0.71 295 - 297 3 -53.04 -140.24 -7.18 0.71 296 - 298 3 -55 -141.84 -4.03 0.71 297 - 299 3 -57.17 -142.37 -4.03 0.71 298 - 300 3 -58.91 -144.5 -4.03 0.71 299 - 301 3 -61.51 -145.75 -4.03 0.71 300 - 302 3 -63.6 -148.18 -3.6 0.71 301 - 303 3 -65.56 -149.78 -3.6 0.71 302 - 304 3 -66.86 -151.73 -3.6 0.71 303 - 305 3 -68.16 -152.44 -0.13 0.71 304 - 306 3 -68.62 -152.44 -0.76 0.71 305 - 307 3 -69.48 -152.97 -0.76 0.71 306 - 308 3 -35.32 -113.17 -10.42 0.71 281 - 309 3 -35.32 -117.08 -10.42 0.71 308 - 310 3 -35.25 -119.15 -10.42 0.71 309 - 311 3 -35.03 -121.29 -11.3 0.71 310 - 312 3 -34.82 -123.06 -11.3 0.71 311 - 313 3 -34.38 -124.48 -11.42 0.71 312 - 314 3 -33.73 -124.66 -11.42 0.71 313 - 315 3 -33.73 -126.79 -11.42 0.71 314 - 316 3 -33.51 -128.57 -11.42 0.71 315 - 317 3 -32.64 -129.99 -11.42 0.71 316 - 318 3 -31.56 -132.48 -11.42 0.71 317 - 319 3 -31.2 -135.26 -11.42 0.71 318 - 320 3 -30.55 -136.86 -11.42 0.71 319 - 321 3 -29.69 -139.17 -11.42 0.71 320 - 322 3 -29.04 -140.59 -11.42 0.71 321 - 323 3 -27.96 -141.84 -11.42 0.71 322 - 324 3 -28.61 -143.44 -11.42 0.71 323 - 325 3 -27.52 -143.97 -14.1 0.71 324 - 326 3 -27.31 -146.99 -14.1 0.71 325 - 327 3 -26.58 -148.51 -14.1 0.71 326 - 328 3 -25.8 -150.07 -14.1 0.71 327 - 329 3 -24.93 -151.49 -14.1 0.71 328 - 330 3 -23.41 -152.91 -14.1 0.71 329 - 331 3 -22.11 -153.62 -14.1 0.71 330 - 332 3 -20.8 -154.68 -14.1 0.71 331 - 333 3 -21.24 -157.17 -17.15 0.71 332 - 334 3 -20.59 -159.3 -17.15 0.71 333 - 335 3 -20.15 -160.72 -17.15 0.71 334 - 336 3 -19.28 -162.32 -17.15 0.71 335 - 337 3 -17.76 -162.15 -17.15 0.71 336 - 338 3 -17.11 -164.46 -17.15 0.71 337 - 339 3 -15.76 -166.02 -17.15 0.71 338 - 340 3 -14.68 -167.8 -17.15 0.71 339 - 341 3 -14.03 -168.51 -19.01 0.71 340 - 342 3 -12.75 -169.71 -19.01 0.71 341 - 343 3 -10.39 -25.65 6.52 0.71 125 - 344 3 -10.17 -27.43 7.42 0.71 343 - 345 3 -8.65 -28.32 7.42 0.71 344 - 346 3 -8.87 -30.1 7.42 0.71 345 - 347 3 -8.65 -32.4 10.22 0.71 346 - 348 3 -7.52 -34.06 13.02 0.71 347 - 349 3 -6.43 -35.66 15.02 0.71 348 - 350 3 -5.13 -37.08 14.17 0.71 349 - 351 3 -4.69 -39.21 14.17 0.71 350 - 352 3 -4.26 -40.63 16.77 0.71 351 - 353 3 -3.39 -42.41 16.22 0.71 352 - 354 3 -2.31 -43.65 16.22 0.71 353 - 355 3 -1.22 -45.61 18.72 0.71 354 - 356 3 -0.13 -47.03 19.02 0.71 355 - 357 3 1.1 -48.66 19.02 0.71 356 - 358 3 2.19 -49.37 21.17 0.71 357 - 359 3 3.92 -50.97 22.74 0.71 358 - 360 3 5.88 -52.39 22.74 0.71 359 - 361 3 7.83 -54.34 22.74 0.71 360 - 362 3 8.92 -55.76 24.71 0.71 361 - 363 3 9.79 -57.36 22.82 0.71 362 - 364 3 10.66 -59.32 22.82 0.71 363 - 365 3 11.31 -61.27 22.82 0.71 364 - 366 3 12.61 -62.87 22.82 0.71 365 - 367 3 13.67 -65.35 22.82 0.71 366 - 368 3 13.45 -67.66 24.69 0.71 367 - 369 3 13.23 -69.79 26.55 0.71 368 - 370 3 13.23 -72.28 26.55 0.71 369 - 371 3 12.36 -75.12 26.55 0.71 370 - 372 3 12.15 -77.96 26.55 0.71 371 - 373 3 13.27 -80.17 26.55 0.71 372 - 374 3 14.57 -83.01 26.55 0.71 373 - 375 3 16.31 -84.61 26.55 0.71 374 - 376 3 17.61 -86.03 25.15 0.71 375 - 377 3 18.91 -87.28 25.15 0.71 376 - 378 3 20.65 -89.58 25.15 0.71 377 - 379 3 21.52 -91.54 25.15 0.71 378 - 380 3 22.6 -93.14 25.15 0.71 379 - 381 3 23.88 -95.39 25.15 0.71 380 - 382 3 24.53 -96.99 25.15 0.71 381 - 383 3 24.75 -97.52 23.02 0.71 382 - 384 3 25.19 -98.59 23.02 0.71 383 - 385 3 24.55 -99.53 23.02 0.71 384 - 386 3 24.11 -102.72 23.02 0.71 385 - 387 3 24.11 -105.21 23.02 0.71 386 - 388 3 24.55 -106.63 23.02 0.71 387 - 389 3 23.03 -108.94 23.02 0.71 388 - 390 3 23.24 -112.14 23.02 0.71 389 - 391 3 23.24 -114.09 23.02 0.71 390 - 392 3 23.4 -116.15 23.28 0.71 391 - 393 3 23.18 -118.46 23.28 0.71 392 - 394 3 22.96 -120.41 23.28 0.71 393 - 395 3 22.75 -122.19 23.28 0.71 394 - 396 3 22.09 -124.5 23.28 0.71 395 - 397 3 20.79 -126.45 23.28 0.71 396 - 398 3 19.92 -128.4 23.28 0.71 397 - 399 3 18.93 -130.24 23.28 0.71 398 - 400 3 17.49 -131.68 23.28 0.71 399 - 401 3 26.71 -99.48 23.02 0.71 384 - 402 3 28.88 -101.61 23.02 0.71 401 - 403 3 29.96 -103.39 23.02 0.71 402 - 404 3 30.62 -104.1 25.22 0.71 403 - 405 3 32.14 -104.98 25.22 0.71 404 - 406 3 33.22 -106.94 25.22 0.71 405 - 407 3 34.09 -108.54 25.22 0.71 406 - 408 3 35.52 -110.44 23.38 0.71 407 - 409 3 36.6 -112.21 22.04 0.71 408 - 410 3 36.6 -114.88 20.78 0.71 409 - 411 3 37.25 -116.83 20.78 0.71 410 - 412 3 37.91 -119.14 20.78 0.71 411 - 413 3 37.47 -121.1 20.78 0.71 412 - 414 3 38.56 -122.52 20.78 0.71 413 - 415 3 38.34 -125.36 20.78 0.71 414 - 416 3 38.63 -127.72 20.78 0.71 415 - 417 3 39.93 -130.03 20.78 0.71 416 - 418 3 41.67 -133.05 20.78 0.71 417 - 419 3 42.76 -133.94 20.34 0.71 418 - 420 3 43.84 -136.07 18.02 0.71 419 - 421 3 44.93 -138.21 18.02 0.71 420 - 422 3 47.1 -140.16 18.02 0.71 421 - 423 3 48.97 -141.7 18.02 0.71 422 - 424 3 -3.44 -3.24 -7.45 1.42 1 - 425 3 -5.39 -5.04 -7.45 1.065 424 - 426 3 -6.26 -6.81 -9 1.065 425 - 427 3 -7.56 -9.3 -11.45 1.065 426 - 428 3 -8.87 -12.14 -11.15 1.065 427 - 429 3 -9.74 -13.74 -11.15 1.065 428 - 430 3 -9.95 -14.63 -11.15 1.065 429 - 431 3 -10.82 -15.87 -11.15 1.065 430 - 432 3 -11.04 -17.65 -10.71 0.89 431 - 433 3 -11.47 -19.96 -10.71 0.89 432 - 434 3 -11.39 -21.59 -12.99 0.89 433 - 435 3 -12.04 -24.61 -15.49 0.89 434 - 436 3 -11.39 -27.28 -15.49 0.89 435 - 437 3 -10.3 -29.41 -15.78 0.89 436 - 438 3 -9 -32.25 -15.78 0.71 437 - 439 3 -5.96 -34.92 -15.78 0.71 438 - 440 3 -4.25 -37.17 -15.78 0.71 439 - 441 3 -2.95 -40.01 -15.78 0.71 440 - 442 3 -1.86 -42.32 -17.46 0.71 441 - 443 3 -0.12 -44.45 -17.46 0.71 442 - 444 3 0.96 -46.58 -17.46 0.71 443 - 445 3 2.92 -47.3 -17.46 0.71 444 - 446 3 5.31 -49.96 -17.46 0.71 445 - 447 3 7.15 -50.93 -17.46 0.71 446 - 448 3 8.45 -51.99 -17.37 0.71 447 - 449 3 10.63 -53.26 -15.32 0.71 448 - 450 3 13.23 -54.32 -15.32 0.71 449 - 451 3 14.97 -56.1 -15.32 0.71 450 - 452 3 16.73 -57.99 -11.07 0.71 451 - 453 3 19.99 -60.3 -11.07 0.71 452 - 454 3 22.16 -62.61 -11.07 0.71 453 - 455 3 24.55 -64.56 -11.07 0.71 454 - 456 3 26.51 -65.28 -9.06 0.71 455 - 457 3 29.33 -66.52 -7.1 0.71 456 - 458 3 31.94 -68.83 -7.5 0.71 457 - 459 3 34.98 -70.6 -6.11 0.71 458 - 460 3 37.4 -72.08 -6.09 0.71 459 - 461 3 40.66 -73.68 -6.09 0.71 460 - 462 3 43.48 -75.46 -6.09 0.71 461 - 463 3 45.44 -75.99 -6.09 0.71 462 - 464 3 47.39 -77.05 -6.09 0.71 463 - 465 3 48.91 -77.23 -7.27 0.71 464 - 466 3 50.65 -78.3 -7.27 0.71 465 - 467 3 53.91 -77.77 -7.27 0.71 466 - 468 3 55.32 -79.97 -9.21 0.71 467 - 469 3 58.14 -81.03 -7.62 0.71 468 - 470 3 60.09 -82.28 -10.16 0.71 469 - 471 3 62.05 -84.05 -10.16 0.71 470 - 472 3 62.27 -85.83 -8.19 0.71 471 - 473 3 62.85 -87.26 -8.19 0.71 472 - 474 3 64.8 -88.5 -8.19 0.71 473 - 475 3 66.11 -88.86 -8.19 0.71 474 - 476 3 67.41 -90.28 -8.19 0.71 475 - 477 3 68.28 -90.63 -8.19 0.71 476 - 478 3 69.58 -90.81 -8.19 0.71 477 - 479 3 70.23 -91.17 -8.19 0.71 478 - 480 3 71.32 -91.88 -8.19 0.71 479 - 481 3 72.19 -93.12 -8.19 0.71 480 - 482 3 73.27 -93.12 -8.19 0.71 481 - 483 3 -4.72 8.96 0.48 0.89 1 - 484 3 -5.59 9.67 -1.32 0.89 483 - 485 3 -6.68 9.67 -2.98 0.89 484 - 486 3 -8.42 9.5 -2.98 0.89 485 - 487 3 -9.94 9.67 -5.41 0.89 486 - 488 3 -12.11 10.21 -3.33 0.89 487 - 489 3 -13.84 10.21 -5.28 0.89 488 - 490 3 -15.15 10.03 -5.28 0.89 489 - 491 3 -16.02 10.38 -5.26 0.89 490 - 492 3 -17.54 10.21 -7.5 0.89 491 - 493 3 -19.06 10.03 -7.5 0.89 492 - 494 3 -20.58 9.85 -7.5 0.89 493 - 495 3 -22.52 9.05 -7.5 0.89 494 - 496 3 -22.54 9.39 -8.39 1.065 495 - 497 3 -24.56 9.52 -6.46 0.71 496 - 498 3 -27.6 9.16 -6.46 0.71 497 - 499 3 -29.12 9.52 -6.46 0.71 498 - 500 3 -30.42 9.87 -6.46 0.71 499 - 501 3 -31.72 9.52 -6.46 0.71 500 - 502 3 -33.9 9.16 -6.46 0.71 501 - 503 3 -35.42 9.16 -5.93 0.71 502 - 504 3 -36.72 9.52 -5.93 0.71 503 - 505 3 -38.46 10.23 -5.93 0.71 504 - 506 3 -39.54 9.87 -3.47 0.71 505 - 507 3 -41.06 9.87 -3.47 0.71 506 - 508 3 -42.31 9.79 -3.34 0.71 507 - 509 3 -44.26 9.43 -3.34 0.71 508 - 510 3 -45.78 8.7 -3.32 0.71 509 - 511 3 -46 7.81 -3.5 0.71 510 - 512 3 -48.6 7.81 -3.5 0.71 511 - 513 3 -51.64 7.28 -3.5 0.71 512 - 514 3 -54.03 7.28 -7.03 0.71 513 - 515 3 -57.07 7.28 -8.9 0.71 514 - 516 3 -59.68 7.45 -8.9 0.71 515 - 517 3 -61.31 7.01 -9.79 0.71 516 - 518 3 -62.61 7.19 -9.79 0.71 517 - 519 3 -63.48 6.65 -8.6 0.71 518 - 520 3 -65 5.94 -11.2 0.71 519 - 521 3 -67.17 5.76 -11.2 0.71 520 - 522 3 -69.56 6.12 -13.28 0.71 521 - 523 3 -69.78 6.83 -15.9 0.71 522 - 524 3 -73.03 5.41 -18.18 0.71 523 - 525 3 -74.99 4.88 -18.18 0.71 524 - 526 3 -75.64 4.7 -16.49 0.71 525 - 527 3 -77.38 4.17 -16.49 0.71 526 - 528 3 -78.05 3.79 -16.49 0.71 527 - 529 3 -22.76 9.92 -8.69 0.71 496 - 530 3 -25.17 7.83 -13.5 0.71 529 - 531 3 -26.69 6.94 -16 0.71 530 - 532 3 -28 6.23 -17.93 0.71 531 - 533 3 -29.95 5.52 -17.93 0.71 532 - 534 3 -31.47 5.17 -17.49 0.71 533 - 535 3 -32.99 4.63 -19.25 0.71 534 - 536 3 -33.88 3.75 -21.23 0.71 535 - 537 3 -34.75 2.48 -23.63 0.71 536 - 538 3 -35.83 1.06 -21.14 0.71 537 - 539 3 -36.92 -0.36 -21.14 0.71 538 - 540 3 -37.57 -1.25 -23.59 0.71 539 - 541 3 -38.87 -2.67 -26.42 0.71 540 - 542 3 -39.53 -4.27 -25.9 0.71 541 - 543 3 -40.61 -5.52 -27.79 0.71 542 - 544 3 -41.65 -7.41 -27.57 0.71 543 - 545 3 -42.74 -8.48 -27.36 0.71 544 - 546 3 -43.83 -10.43 -29.26 0.71 545 - 547 3 -44.91 -12.39 -30.73 0.71 546 - 548 3 -46 -14.16 -32.63 0.71 547 - 549 3 -46.65 -16.12 -32.63 0.71 548 - 550 3 -46.87 -15.94 -33.9 0.71 549 - 551 3 -48.82 -18.25 -36.08 0.71 550 - 552 3 -50.34 -20.56 -35.03 0.71 551 - 553 3 -51.91 -23.32 -36.91 0.71 552 - 554 3 -53.21 -25.28 -36.91 0.71 553 - 555 3 -54.95 -26.88 -38.65 0.71 554 - 556 3 -54.95 -26.88 -39.05 0.71 555 - 557 3 -56.31 -27.93 -39.05 0.71 556 - 558 3 -57.83 -28.81 -39.05 0.71 557 - 559 3 -59.56 -30.41 -40.08 0.71 558 - 560 3 -61.52 -32.37 -40.08 0.71 559 - 561 3 -62.6 -33.61 -42.58 0.71 560 - 562 3 -63.69 -35.21 -42.58 0.71 561 - 563 3 -65.43 -36.1 -42.58 0.71 562 - 564 3 -67.38 -37.34 -44.58 0.71 563 - 565 3 -69.55 -38.41 -47.55 0.71 564 - 566 3 -70.86 -39.3 -47.55 0.71 565 - 567 3 -72.16 -40.18 -49.9 0.71 566 - 568 3 -73.71 -41.5 -51.42 0.71 567 - 569 3 -75.23 -43.63 -51.42 0.71 568 - 570 3 -76.09 -45.06 -51.42 0.71 569 - 571 3 -77.4 -46.65 -51.42 0.71 570 - 572 3 -79.14 -48.43 -51.42 0.71 571 - 573 3 -80.66 -50.56 -51.42 0.71 572 - 574 3 -81.74 -52.52 -51.12 0.71 573 - 575 3 -82.18 -54.65 -51.12 0.71 574 - 576 3 -83.04 -56.6 -51.12 0.71 575 - 577 3 -81.48 -58.19 -51.12 0.71 576 - 578 3 -83.44 -61.74 -51.12 0.71 577 - 579 3 -84.09 -64.05 -53.42 0.71 578 - 580 3 -85.17 -66.01 -53.42 0.71 579 - 581 3 -85.39 -67.96 -53.42 0.71 580 - 582 3 -85.17 -70.27 -53.42 0.71 581 - 583 3 -85.39 -72.58 -53.42 0.71 582 - 584 3 -85.19 -74.57 -53.42 0.71 583 - 585 3 -86.49 -76.88 -53.42 0.71 584 - 586 3 -87.79 -78.65 -53.42 0.71 585 - 587 3 -88.88 -80.43 -53.42 0.71 586 - 588 3 -89.31 -82.03 -53.42 0.71 587 - 589 3 -90.18 -83.81 -53.42 0.71 588 - 590 3 -92.35 -85.23 -53.42 0.71 589 - 591 3 -94.09 -86.83 -53.42 0.71 590 - 592 3 -95.07 -88.99 -55.52 0.71 591 - 593 3 -97.24 -91.12 -55.52 0.71 592 - 594 3 -99.2 -91.3 -59.18 0.71 593 - 595 3 -101.8 -91.83 -59.18 0.71 594 - 596 3 -103.54 -92.37 -57.78 0.71 595 - 597 3 -105.06 -92.54 -60.13 0.71 596 - 598 3 -106.8 -93.97 -60.13 0.71 597 - 599 3 -107.23 -94.14 -58.8 0.71 598 - 600 3 -108.97 -96.99 -60.87 0.71 599 - 601 3 -110.93 -99.3 -64.3 0.71 600 - 602 3 -112.88 -101.25 -64.3 0.71 601 - 603 3 -114.07 -103.95 -64.3 0.71 602 - 604 3 -115.16 -106.08 -64.3 0.71 603 - 605 3 -116.46 -108.03 -64.3 0.71 604 - 606 3 -118.42 -108.57 -64.3 0.71 605 - 607 3 -120.8 -109.45 -64.3 0.71 606 - 608 3 -123.19 -110.16 -64.3 0.71 607 - 609 3 -125.58 -109.28 -63.32 0.71 608 - 610 3 -127.32 -109.99 -63.32 0.71 609 - 611 3 -129.27 -110.34 -63.32 0.71 610 - 612 3 -130.79 -110.34 -63.32 0.71 611 - 613 3 -132.54 -110.46 -61.53 0.71 612 - 614 3 -135.8 -111.88 -61.53 0.71 613 - 615 3 -136.67 -113.3 -61.53 0.71 614 - 616 3 -137.75 -114.9 -61.53 0.71 615 - 617 3 -138.19 -116.32 -61.53 0.71 616 - 618 3 -138.4 -118.28 -61.53 0.71 617 - 619 3 -54.95 -29.54 -40.82 0.71 556 - 620 3 -56.03 -31.5 -40.82 0.71 619 - 621 3 -56.68 -33.1 -40.82 0.71 620 - 622 3 -57.55 -35.58 -41.45 0.71 621 - 623 3 -58.04 -38.86 -41.45 0.71 622 - 624 3 -58.91 -40.63 -43.09 0.71 623 - 625 3 -59.77 -42.94 -43.87 0.71 624 - 626 3 -60.22 -44.48 -43.87 0.71 625 - 627 3 -60.65 -46.08 -43.07 0.71 626 - 628 3 -61.24 -47.99 -43.07 0.71 627 - 629 3 -61.89 -49.59 -43.07 0.71 628 - 630 3 -62.32 -50.83 -43.07 0.71 629 - 631 3 8.75 -0.81 1.12 1.065 1 - 632 3 9.61 -2.79 -0.82 0.89 631 - 633 3 11.13 -4.57 -0.82 0.89 632 - 634 3 12 -6.7 -3.23 0.89 633 - 635 3 12.87 -8.3 -3.23 0.89 634 - 636 3 14.17 -9.9 -3.23 0.89 635 - 637 3 15.69 -12.21 -3.23 0.89 636 - 638 3 17.35 -13.53 -3.23 0.71 637 - 639 3 19.09 -17.26 -3.23 0.71 638 - 640 3 20.39 -19.39 -3.23 0.71 639 - 641 3 21.48 -20.45 -3.23 0.71 640 - 642 3 22.13 -23.65 -3.23 0.71 641 - 643 3 22.56 -25.43 -4.4 0.71 642 - 644 3 24.3 -27.56 -4.4 0.71 643 - 645 3 25.08 -29.28 -4.4 0.71 644 - 646 3 25.65 -30.5 -4.4 0.71 645 - 647 3 27.17 -31.92 -4.4 0.71 646 - 648 3 27.8 -32.81 -4.4 0.89 647 - 649 3 26.95 -34.99 -4.4 0.71 648 - 650 3 26.29 -37.3 -4.4 0.71 649 - 651 3 25.86 -39.08 -4.4 0.71 650 - 652 3 25.64 -40.5 -6.3 0.71 651 - 653 3 26.29 -41.74 -6.3 0.71 652 - 654 3 26.73 -43.7 -6.3 0.71 653 - 655 3 26.51 -45.65 -6.3 0.71 654 - 656 3 26.95 -47.25 -6.3 0.71 655 - 657 3 27.6 -49.2 -7.94 0.71 656 - 658 3 28.05 -51.3 -7.94 0.71 657 - 659 3 28.7 -53.63 -7.83 0.71 658 - 660 3 29.35 -55.23 -7.38 0.71 659 - 661 3 30 -57.01 -10.33 0.71 660 - 662 3 30.44 -59.14 -10.35 0.71 661 - 663 3 30.61 -59.41 -10.35 0.71 662 - 664 3 29.51 -60.88 -12.27 0.71 663 - 665 3 28.43 -64.26 -12.27 0.71 664 - 666 3 28.21 -66.21 -12.27 0.71 665 - 667 3 27.56 -67.81 -12.9 0.71 666 - 668 3 27.56 -69.76 -12.9 0.71 667 - 669 3 26.91 -72.07 -14.77 0.71 668 - 670 3 27.12 -74.2 -14.77 0.71 669 - 671 3 27.21 -76.04 -16.82 0.71 670 - 672 3 27.21 -79.06 -16.82 0.71 671 - 673 3 27.21 -81.54 -16.82 0.71 672 - 674 3 27.65 -83.5 -16.82 0.71 673 - 675 3 27.43 -86.16 -16.82 0.71 674 - 676 3 27.43 -88.83 -16.82 0.71 675 - 677 3 27.4 -91.52 -19.22 0.71 676 - 678 3 28.05 -94.37 -19.22 0.71 677 - 679 3 28.05 -97.21 -19.22 0.71 678 - 680 3 28.05 -100.41 -19.22 0.71 679 - 681 3 27.83 -102.72 -19.22 0.71 680 - 682 3 27.6 -104.61 -19.22 0.71 681 - 683 3 27.38 -106.21 -19.22 0.71 682 - 684 3 32.35 -61.19 -11.72 0.71 663 - 685 3 33.44 -63.15 -11.72 0.71 684 - 686 3 34.74 -64.92 -11.72 0.71 685 - 687 3 35.83 -66.52 -11.72 0.71 686 - 688 3 36.91 -68.3 -11.72 0.71 687 - 689 3 37.56 -69.72 -12.58 0.71 688 - 690 3 38.43 -70.78 -14.82 0.71 689 - 691 3 39.08 -73.63 -16.77 0.71 690 - 692 3 39.9 -74.37 -15.78 0.71 691 - 693 3 40.99 -77.57 -15.78 0.71 692 - 694 3 41.88 -79.41 -18.03 0.71 693 - 695 3 43.4 -81.9 -18.03 0.71 694 - 696 3 44.27 -83.85 -18.03 0.71 695 - 697 3 45.36 -85.63 -18.03 0.71 696 - 698 3 46.01 -87.76 -18.03 0.71 697 - 699 3 47.51 -89.18 -20.03 0.71 698 - 700 3 48.6 -90.61 -21.13 0.71 699 - 701 3 49.25 -92.38 -20.53 0.71 700 - 702 3 50.73 -94.57 -20.53 0.71 701 - 703 3 51.8 -96.55 -20.53 0.71 702 - 704 3 53.11 -97.61 -21.27 0.71 703 - 705 3 53.97 -99.03 -21.27 0.71 704 - 706 3 55.28 -101.34 -21.27 0.71 705 - 707 3 57.23 -102.23 -21.27 0.71 706 - 708 3 59.84 -104.01 -23.21 0.71 707 - 709 3 61.58 -105.25 -23.21 0.71 708 - 710 3 63.75 -105.07 -23.21 0.71 709 - 711 3 65.7 -105.78 -21.2 0.71 710 - 712 3 67.01 -106.14 -22.98 0.71 711 - 713 3 69.39 -107.38 -22.98 0.71 712 - 714 3 72.24 -108.7 -22.98 0.71 713 - 715 3 74.41 -109.24 -22.98 0.71 714 - 716 3 75.93 -110.3 -23.78 0.71 715 - 717 3 77.23 -111.9 -23.78 0.71 716 - 718 3 78.54 -113.5 -23.78 0.71 717 - 719 3 79.62 -115.1 -23.78 0.71 718 - 720 3 81.14 -117.23 -23.78 0.71 719 - 721 3 82.88 -119.01 -23.78 0.71 720 - 722 3 83.96 -120.25 -24.59 0.71 721 - 723 3 85.27 -121.49 -24.59 0.71 722 - 724 3 86.35 -122.92 -24.59 0.71 723 - 725 3 87.92 -124.28 -24.59 0.71 724 - 726 3 29.76 -33.88 -2.3 0.71 648 - 727 3 31.71 -36.37 -2.3 0.71 726 - 728 3 33.23 -37.79 -2.3 0.71 727 - 729 3 33.67 -37.96 3.37 0.71 728 - 730 3 35.19 -40.63 3.37 0.71 729 - 731 3 36.49 -41.52 5.54 0.71 730 - 732 3 37.58 -42.94 5.54 0.71 731 - 733 3 38.88 -43.83 7.86 0.71 732 - 734 3 41.19 -45.86 7.86 0.71 733 - 735 3 42.49 -47.28 7.86 0.71 734 - 736 3 43.57 -48.7 10.42 0.71 735 - 737 3 44.66 -51.37 10.42 0.71 736 - 738 3 46.18 -52.25 12.98 0.71 737 - 739 3 47.48 -53.32 14.64 0.71 738 - 740 3 48.79 -54.56 14.64 0.71 739 - 741 3 49.87 -55.81 16.12 0.71 740 - 742 3 50.52 -57.94 17.84 0.71 741 - 743 3 51.18 -59.72 20.06 0.71 742 - 744 3 50.33 -63.95 20.06 0.71 743 - 745 3 50.11 -66.63 22.44 0.71 744 - 746 3 50.33 -68.23 21.22 0.71 745 - 747 3 50.55 -70.36 22.63 0.71 746 - 748 3 50.98 -72.32 22.82 0.71 747 - 749 3 50.76 -74.98 25.59 0.71 748 - 750 3 51.67 -77.75 25.59 0.71 749 - 751 3 52.1 -80.59 25.59 0.71 750 - 752 3 52.97 -82.37 25.59 0.71 751 - 753 3 53.19 -84.85 25.51 0.71 752 - 754 3 53.62 -86.98 25.51 0.71 753 - 755 3 54.05 -89.12 25.51 0.71 754 - 756 3 54.71 -91.43 25.51 0.71 755 - 757 3 55.48 -94.1 25.51 0.71 756 - 758 3 55.47 -95.52 26.67 0.71 757 - 759 3 56.77 -96.06 26.67 0.71 758 - 760 3 56.33 -99.79 28.31 0.71 759 - 761 3 56.4 -101.81 28.31 0.71 760 - 762 3 55.96 -104.12 28.31 0.71 761 - 763 3 57.05 -106.61 28.31 0.71 762 - 764 3 57.47 -108.39 28.98 0.71 763 - 765 3 58.33 -110.52 28.98 0.71 764 - 766 3 58.33 -112.12 28.98 0.71 765 - 767 3 58.55 -114.07 28.98 0.71 766 - 768 3 59.85 -115.49 28.98 0.71 767 - 769 3 59.8 -117.52 28.98 0.71 768 - 770 3 59.58 -119.3 28.98 0.71 769 - 771 3 59.15 -121.43 28.98 0.71 770 - 772 3 59.8 -122.85 28.98 0.71 771 - 773 3 60.45 -124.45 28.98 0.71 772 - 774 3 61.53 -125.7 28.98 0.71 773 - 775 3 61.75 -128.18 28.98 0.71 774 - 776 3 61.32 -129.96 28.98 0.71 775 - 777 4 11.43 16.93 -0.7 2.485 1 - 778 4 13.17 18.71 -0.7 2.485 777 - 779 4 14.69 19.95 -0.6 2.31 778 - 780 4 16.43 21.55 -0.6 2.31 779 - 781 4 18.38 23.15 -3.24 2.31 780 - 782 4 20.34 25.64 -2.86 2.31 781 - 783 4 23.6 29.01 -2.86 2.13 782 - 784 4 25.07 30.07 -0.58 2.13 783 - 785 4 27.24 32.2 -0.58 2.13 784 - 786 4 28.11 34.33 -0.58 2.13 785 - 787 4 28.98 36.46 1.38 2.13 786 - 788 4 30.28 38.42 1.38 2.13 787 - 789 4 31.8 40.01 3.08 2.13 788 - 790 4 33.54 42.15 1.32 1.955 789 - 791 4 35.28 44.28 1.96 1.6 790 - 792 4 38.42 47.91 1.96 1.775 791 - 793 4 39.51 49.15 -0.19 1.775 792 - 794 4 39.73 51.11 0.88 1.775 793 - 795 4 41.03 53.24 0.88 1.775 794 - 796 4 41.9 54.66 -1.98 1.775 795 - 797 4 43.42 56.97 -1.98 1.775 796 - 798 4 45.81 58.57 -2.04 1.775 797 - 799 4 46.43 59.84 -4.69 1.775 798 - 800 4 48.17 61.98 -4.32 1.775 799 - 801 4 50.13 64.64 -4.32 1.775 800 - 802 4 50.78 66.77 -6.38 1.775 801 - 803 4 52.08 68.19 -8.52 1.775 802 - 804 4 54.25 70.32 -9.89 1.775 803 - 805 4 55.99 72.63 -10.66 1.775 804 - 806 4 58.38 75.3 -10.66 1.775 805 - 807 4 60.54 78.02 -8.25 1.6 806 - 808 4 62.27 79.97 -8.25 1.6 807 - 809 4 64.01 82.46 -5.63 1.6 808 - 810 4 65.97 85.3 -5.63 1.6 809 - 811 4 67.27 87.61 -4 1.6 810 - 812 4 69.44 90.1 -4 1.6 811 - 813 4 70.69 93.58 -4 1.775 812 - 814 4 71.55 95.53 -7.28 1.955 813 - 815 4 72.62 97.84 -7.28 1.955 814 - 816 4 73.71 99.97 -7.28 2.13 815 - 817 4 74.79 101.75 -7.28 2.13 816 - 818 4 76.1 104.95 -7.28 2.13 817 - 819 4 78.57 108.91 -6 2.13 818 - 820 4 79.87 111.22 -6 2.13 819 - 821 4 81.39 113.53 -4.77 2.13 820 - 822 4 82.05 115.84 -4.77 2.13 821 - 823 4 82.92 116.72 -4.77 2.13 822 - 824 4 83.13 119.39 -4.77 2.13 823 - 825 4 84.47 121.53 -4.77 1.955 824 - 826 4 85.99 123.31 -4.77 1.955 825 - 827 4 87.73 125.62 -4.77 1.955 826 - 828 4 89.25 127.39 -6.71 1.955 827 - 829 4 90.98 129.53 -6.71 1.955 828 - 830 4 92.5 130.59 -11.6 2.13 829 - 831 4 94.02 131.3 -11.6 2.13 830 - 832 4 95.54 132.01 -11.6 2.485 831 - 833 4 95.76 132.37 -11.6 3.02 832 - 834 4 94.89 134.15 -10.74 1.775 833 - 835 4 95.11 136.1 -10.74 1.775 834 - 836 4 95.11 137.34 -12.26 1.775 835 - 837 4 95.11 139.3 -12.26 1.775 836 - 838 4 95.11 139.47 -11.68 1.6 837 - 839 4 95.11 140.9 -11.68 1.6 838 - 840 4 95.33 142.14 -11.68 1.42 839 - 841 4 95.76 143.92 -13.98 1.42 840 - 842 4 96.16 145.86 -13.98 1.42 841 - 843 4 96.38 147.81 -12.71 1.42 842 - 844 4 96.6 149.94 -12.71 1.42 843 - 845 4 97.68 151.37 -12.71 1.42 844 - 846 4 99.2 153.32 -12.71 1.42 845 - 847 4 100.51 155.27 -12.71 1.42 846 - 848 4 101.16 156.52 -12.71 1.42 847 - 849 4 101.81 157.58 -14.33 1.42 848 - 850 4 102.68 158.83 -14.33 1.6 849 - 851 4 102.94 158.9 -14.33 1.775 850 - 852 4 102.35 159.83 -13.14 1.6 851 - 853 4 102.35 161.79 -13.14 1.6 852 - 854 4 102.56 163.56 -13.07 1.42 853 - 855 4 103 166.05 -13.07 1.42 854 - 856 4 103.21 168.36 -13.07 1.42 855 - 857 4 103.65 170.14 -13.07 1.42 856 - 858 4 104.08 171.91 -13.07 1.42 857 - 859 4 104.3 172.62 -13.23 1.42 858 - 860 4 105.27 174.66 -13.23 1.42 859 - 861 4 105.48 176.23 -13.23 1.42 860 - 862 4 105.27 178.01 -13.23 1.42 861 - 863 4 105.7 179.07 -13.23 1.42 862 - 864 4 106.13 180.32 -13.23 1.42 863 - 865 4 106.13 181.21 -13.23 1.42 864 - 866 4 106.35 181.92 -13.23 1.42 865 - 867 4 105.48 183.16 -13.23 1.065 866 - 868 4 105.7 184.76 -13.23 1.065 867 - 869 4 106.35 186 -11.38 0.89 868 - 870 4 106.79 188.31 -11.38 0.89 869 - 871 4 106.35 190.09 -8.14 0.89 870 - 872 4 105.7 191.51 -8.14 0.89 871 - 873 4 106.35 193.11 -8.14 1.065 872 - 874 4 105.7 194.71 -8.14 1.065 873 - 875 4 105.83 196.52 -5.66 1.065 874 - 876 4 106.05 198.83 -5.66 1.065 875 - 877 4 106.48 200.25 -5.66 1.065 876 - 878 4 106.7 201.49 -5.66 1.065 877 - 879 4 106.27 203.09 -7.68 1.065 878 - 880 4 106.27 204.16 -6.5 0.89 879 - 881 4 106.27 206.47 -6.5 0.89 880 - 882 4 106.27 208.6 -6.5 0.89 881 - 883 4 105.83 210.55 -6.5 0.89 882 - 884 4 105.81 211.61 -4.37 1.065 883 - 885 4 106.03 214.09 -4.37 1.065 884 - 886 4 106.25 215.69 -4.37 1.065 885 - 887 4 105.81 216.94 -2.22 1.065 886 - 888 4 105.81 218.53 -2.22 0.89 887 - 889 4 105.38 220.84 -2.22 0.89 888 - 890 4 105.16 222.8 -2.22 0.89 889 - 891 4 105.16 224.4 -2.22 0.89 890 - 892 4 104.29 226.35 -0.57 0.89 891 - 893 4 104.85 227.41 -0.57 0.89 892 - 894 4 105.07 229.54 -0.57 0.89 893 - 895 4 105.07 231.49 -0.57 0.89 894 - 896 4 105.28 233.62 -0.57 0.89 895 - 897 4 105.72 235.76 -0.57 0.89 896 - 898 4 106.15 237 -0.57 0.89 897 - 899 4 106.59 238.42 -0.57 0.89 898 - 900 4 106.8 239.84 0.98 0.89 899 - 901 4 107.24 241.97 0.98 0.89 900 - 902 4 107.67 244.78 0.98 0.89 901 - 903 4 107.67 246.91 0.98 0.89 902 - 904 4 107.67 248.87 0.98 0.89 903 - 905 4 108.1 250.47 0.98 0.89 904 - 906 4 108.53 251.89 0.98 0.89 905 - 907 4 109.62 253.67 0.98 0.89 906 - 908 4 109.84 255.09 0.98 0.89 907 - 909 4 110.71 256.15 0.98 0.89 908 - 910 4 111.05 257.54 2.28 0.89 909 - 911 4 111.48 259.32 2.28 1.065 910 - 912 4 111.05 260.91 2.28 1.065 911 - 913 4 111.27 262.34 3.51 1.065 912 - 914 4 111.27 264.47 3.51 1.065 913 - 915 4 111.27 265.71 3.51 1.065 914 - 916 4 111.48 267.31 5.26 0.89 915 - 917 4 111.7 269.09 5.26 0.89 916 - 918 4 111.92 270.69 5.26 1.065 917 - 919 4 112.47 272.01 5.26 1.065 918 - 920 4 113.1 273.94 7.2 1.065 919 - 921 4 113.53 276.43 7.2 1.065 920 - 922 4 113.75 278.2 7.2 1.065 921 - 923 4 113.97 280.33 8.1 1.065 922 - 924 4 114.19 282.29 8.1 1.065 923 - 925 4 114.19 284.42 8.1 1.065 924 - 926 4 114.62 286.37 9.94 1.065 925 - 927 4 114.63 288.12 9.94 1.065 926 - 928 4 114.2 290.25 9.94 1.065 927 - 929 4 113.98 292.2 9.94 1.065 928 - 930 4 113.98 294.69 9.94 1.065 929 - 931 4 113.33 296.11 9.94 1.065 930 - 932 4 113.11 297.35 11.25 1.065 931 - 933 4 113.55 299.31 11.25 1.065 932 - 934 4 113.76 301.26 13.19 1.065 933 - 935 4 113.6 303.12 13.19 1.065 934 - 936 4 113.38 306.31 13.19 1.065 935 - 937 4 112.73 308.27 13.19 1.065 936 - 938 4 112.73 310.05 15.53 1.065 937 - 939 4 112.51 311.64 15.53 1.065 938 - 940 4 112.95 313.42 15.53 1.065 939 - 941 4 113.6 314.84 15.53 1.065 940 - 942 4 113.38 316.8 15.53 1.065 941 - 943 4 113.2 319.23 16.7 1.065 942 - 944 4 112.98 322.07 16.57 0.89 943 - 945 4 112.98 325.09 16.57 0.89 944 - 946 4 112.98 327.22 18.62 0.89 945 - 947 4 112.33 330.06 18.62 0.89 946 - 948 4 111.46 332.2 19.22 0.89 947 - 949 4 111.2 333.92 19.22 0.89 948 - 950 4 110.98 336.05 20.91 0.89 949 - 951 4 111.63 338 20.91 0.89 950 - 952 4 111.41 340.31 20.91 0.89 951 - 953 4 111.41 342.44 22.79 0.89 952 - 954 4 111.63 344.58 22.79 0.89 953 - 955 4 112.28 347.6 22.79 0.89 954 - 956 4 112.87 348.78 22.79 0.89 955 - 957 4 113.52 350.92 24.5 0.89 956 - 958 4 114.48 352.03 24.5 0.71 957 - 959 4 114.92 353.61 24.5 0.71 958 - 960 4 116 356.09 26.17 0.71 959 - 961 4 116.44 358.4 26.17 0.71 960 - 962 4 117.09 360 28.04 0.71 961 - 963 4 117.96 361.42 28.04 0.71 962 - 964 4 118.17 363.2 27.9 0.71 963 - 965 4 118.61 364.8 27.9 0.71 964 - 966 4 119.48 366.04 27.9 0.71 965 - 967 4 119.85 367.36 30.1 0.71 966 - 968 4 120.07 369.32 31.49 0.71 967 - 969 4 120.93 370.91 31.49 0.71 968 - 970 4 121.59 373.05 31.49 0.71 969 - 971 4 122.24 374.47 31.49 0.71 970 - 972 4 124.41 376.6 31.49 0.71 971 - 973 4 123.54 378.02 31.49 0.71 972 - 974 4 124.63 379.8 31.49 0.71 973 - 975 4 125.93 381.04 32.14 0.71 974 - 976 4 127.12 382.89 32.14 0.71 975 - 977 4 128.42 385.03 32.14 0.71 976 - 978 4 129.29 386.63 32.14 0.71 977 - 979 4 130.16 389.11 32.14 0.71 978 - 980 4 130.81 389.82 32.14 0.71 979 - 981 4 131.46 391.6 32.47 0.71 980 - 982 4 132.11 393.2 32.47 0.71 981 - 983 4 133.63 395.33 32.78 0.71 982 - 984 4 134.05 397.47 35.28 0.71 983 - 985 4 134.27 399.6 35.28 0.71 984 - 986 4 135.35 401.74 35.28 0.71 985 - 987 4 135.79 403.51 35.28 0.89 986 - 988 4 136.44 405.11 35.28 0.89 987 - 989 4 136.85 405.32 35.28 0.89 988 - 990 4 108.09 183.34 -16.39 1.065 866 - 991 4 108.52 185.47 -16.39 0.89 990 - 992 4 108.96 187.07 -17.9 0.89 991 - 993 4 109.39 188.13 -15.86 0.89 992 - 994 4 109.83 189.73 -18.03 0.89 993 - 995 4 110.04 191.15 -20.49 0.89 994 - 996 4 110.69 192.58 -21.47 0.89 995 - 997 4 111.56 193.29 -21.47 0.89 996 - 998 4 112.43 194.53 -22.15 0.89 997 - 999 4 113.08 195.6 -23.38 0.89 998 - 1000 4 113.74 196.66 -24.36 0.89 999 - 1001 4 113.74 198.08 -25.89 0.89 1000 - 1002 4 114.17 199.15 -27.94 0.89 1001 - 1003 4 114.6 200.75 -30.08 0.89 1002 - 1004 4 115.69 203.06 -30.08 0.89 1003 - 1005 4 115.64 204.31 -31.51 0.89 1004 - 1006 4 116.08 205.56 -31.51 0.89 1005 - 1007 4 116.73 206.98 -31.51 0.71 1006 - 1008 4 117.16 208.75 -31.51 0.71 1007 - 1009 4 117.6 210.53 -32.74 0.71 1008 - 1010 4 117.6 212.13 -32.74 0.71 1009 - 1011 4 117.6 214.62 -34.55 0.89 1010 - 1012 4 117.82 216.75 -34.55 0.89 1011 - 1013 4 118.03 218.7 -34.55 0.89 1012 - 1014 4 118.24 220.22 -33.58 0.89 1013 - 1015 4 118.03 223.6 -33.58 0.89 1014 - 1016 4 117.37 225.2 -34.98 0.89 1015 - 1017 4 117.16 226.97 -34.98 0.89 1016 - 1018 4 116.72 228.75 -34.98 0.89 1017 - 1019 4 116.51 230.17 -36.51 0.89 1018 - 1020 4 116.29 231.95 -36.51 0.89 1019 - 1021 4 116.29 233.72 -38.15 0.89 1020 - 1022 4 116.01 235.6 -38.15 0.89 1021 - 1023 4 116.01 237.38 -39.9 0.89 1022 - 1024 4 117.08 239.33 -39.9 0.89 1023 - 1025 4 117.73 241.11 -41.34 0.89 1024 - 1026 4 118.82 242.88 -41.34 0.89 1025 - 1027 4 119.9 244.66 -41.34 0.89 1026 - 1028 4 121.42 248.57 -41.34 0.71 1027 - 1029 4 122.73 249.89 -43.37 0.71 1028 - 1030 4 123.58 251.13 -43.37 0.71 1029 - 1031 4 124.67 252.73 -45.26 0.71 1030 - 1032 4 125.75 254.15 -45.26 0.71 1031 - 1033 4 126.84 255.93 -46.82 0.71 1032 - 1034 4 127.92 257.88 -46.82 0.71 1033 - 1035 4 128.58 259.48 -47.64 0.71 1034 - 1036 4 129.44 261.26 -48.99 0.71 1035 - 1037 4 130.53 262.86 -50.41 0.71 1036 - 1038 4 131.62 264.64 -50.32 0.71 1037 - 1039 4 133.14 266.59 -50.32 0.71 1038 - 1040 4 135.09 268.19 -50.32 0.71 1039 - 1041 4 136.39 270.32 -50.32 0.71 1040 - 1042 4 137.7 271.92 -50.32 0.71 1041 - 1043 4 139.22 273.52 -50.32 0.71 1042 - 1044 4 140.3 275.12 -49.5 0.71 1043 - 1045 4 141.61 277.07 -49.5 0.71 1044 - 1046 4 143.45 279.1 -49.5 0.71 1045 - 1047 4 144.32 280.88 -49.5 0.71 1046 - 1048 4 144.97 282.12 -49.77 0.71 1047 - 1049 4 146.06 284.08 -49.77 0.71 1048 - 1050 4 146.71 285.5 -49.77 0.71 1049 - 1051 4 147.36 287.45 -49.77 0.71 1050 - 1052 4 148.45 289.23 -49.77 0.71 1051 - 1053 4 149.31 291 -49.77 0.71 1052 - 1054 4 150.4 292.43 -49.77 0.71 1053 - 1055 4 151.49 293.65 -49.77 0.71 1054 - 1056 4 151.7 295.42 -51.57 0.71 1055 - 1057 4 152.57 297.38 -51.57 0.71 1056 - 1058 4 153.22 298.98 -51.57 0.71 1057 - 1059 4 153.87 300.93 -51.45 0.71 1058 - 1060 4 153.87 302.88 -51.45 0.71 1059 - 1061 4 154.09 305.02 -51.45 0.71 1060 - 1062 4 154.31 306.62 -51.45 0.71 1061 - 1063 4 154.67 308.27 -51.45 0.71 1062 - 1064 4 154.45 310.05 -53.14 0.71 1063 - 1065 4 155.1 312 -53.14 0.71 1064 - 1066 4 155.32 314.31 -53.14 0.71 1065 - 1067 4 155.32 316.09 -53.55 0.89 1066 - 1068 4 155.97 317.86 -53.55 0.89 1067 - 1069 4 155.75 320.17 -53.55 0.89 1068 - 1070 4 155.97 321.59 -52.72 0.89 1069 - 1071 4 155.82 324 -52.72 0.89 1070 - 1072 4 155.8 325.96 -55.36 0.89 1071 - 1073 4 155.58 327.38 -55.36 0.89 1072 - 1074 4 156.23 328.98 -55.14 0.89 1073 - 1075 4 156.23 331.29 -55.14 0.89 1074 - 1076 4 156.45 333.95 -55.14 0.89 1075 - 1077 4 157.1 336.08 -57.1 0.89 1076 - 1078 4 157.47 337.14 -59.1 0.89 1077 - 1079 4 157.9 338.2 -59.1 0.89 1078 - 1080 4 158.12 338.91 -59.1 1.065 1079 - 1081 4 157.6 341.05 -59.34 0.71 1080 - 1082 4 158.03 343.36 -59.34 0.71 1081 - 1083 4 158.03 344.42 -59.79 0.71 1082 - 1084 4 157.6 346.91 -59.79 0.71 1083 - 1085 4 157.38 348.15 -59.85 0.71 1084 - 1086 4 157.38 350.28 -61.52 0.71 1085 - 1087 4 157.17 352.77 -61.52 0.71 1086 - 1088 4 157.17 354.55 -61.52 0.71 1087 - 1089 4 157.23 357.49 -62.28 0.71 1088 - 1090 4 157.23 359.62 -62.28 0.71 1089 - 1091 4 157.23 362.11 -62.28 0.71 1090 - 1092 4 157.23 363.89 -64.82 0.71 1091 - 1093 4 157.45 366.02 -64.82 0.71 1092 - 1094 4 157.89 367.97 -64.82 0.71 1093 - 1095 4 158.54 369.57 -64.82 0.71 1094 - 1096 4 160.17 371.42 -64.82 0.71 1095 - 1097 4 160.82 373.2 -64.82 0.71 1096 - 1098 4 162.13 374.98 -66.88 0.71 1097 - 1099 4 162.56 376.22 -66.88 0.71 1098 - 1100 4 164.3 378.53 -68.36 0.71 1099 - 1101 4 165.17 380.31 -68.36 0.71 1100 - 1102 4 166.04 382.26 -70.17 0.71 1101 - 1103 4 167.12 384.57 -68.43 0.71 1102 - 1104 4 167.47 386.6 -71.03 0.71 1103 - 1105 4 168.34 388.73 -71.34 0.71 1104 - 1106 4 168.55 390.69 -73.47 0.71 1105 - 1107 4 168.55 392.29 -73.47 0.71 1106 - 1108 4 168.99 393.35 -73.47 0.71 1107 - 1109 4 168.4 394.54 -72.38 0.71 1108 - 1110 4 169.05 396.49 -72.38 0.71 1109 - 1111 4 169.27 398.27 -72.38 0.71 1110 - 1112 4 168.83 400.04 -72.38 0.71 1111 - 1113 4 168.4 401.46 -72.38 0.71 1112 - 1114 4 167.75 402.53 -72.38 0.71 1113 - 1115 4 167.53 403.95 -72.3 0.71 1114 - 1116 4 167.53 405.37 -71.58 0.71 1115 - 1117 4 167.31 408.04 -69.38 0.71 1116 - 1118 4 167.45 410.2 -69.38 0.71 1117 - 1119 4 166.8 411.62 -67.06 0.71 1118 - 1120 4 166.37 413.04 -67.06 0.71 1119 - 1121 4 166.37 415.53 -67.06 0.71 1120 - 1122 4 165.93 417.49 -67.06 0.71 1121 - 1123 4 165.28 419.08 -66.7 0.71 1122 - 1124 4 163.54 420.33 -66.7 0.71 1123 - 1125 4 162.02 421.57 -63.24 0.71 1124 - 1126 4 160.72 424.24 -63.24 0.71 1125 - 1127 4 159.77 425.71 -63.24 0.71 1126 - 1128 4 159.11 427.67 -62.42 0.71 1127 - 1129 4 158.25 429.27 -62.42 0.71 1128 - 1130 4 158.03 431.04 -62.42 0.71 1129 - 1131 4 157.38 432.46 -62.42 0.71 1130 - 1132 4 156.73 434.77 -62.42 0.71 1131 - 1133 4 155.64 436.55 -61.43 0.71 1132 - 1134 4 155.21 439.04 -61.93 0.71 1133 - 1135 4 153.71 441.2 -60.51 0.71 1134 - 1136 4 152.41 443.16 -60.51 0.71 1135 - 1137 4 151.54 445.29 -60.51 0.71 1136 - 1138 4 150.46 447.42 -60.97 0.71 1137 - 1139 4 148.94 449.91 -60.97 0.71 1138 - 1140 4 147.63 451.86 -59.15 0.71 1139 - 1141 4 146.98 453.97 -60.79 0.71 1140 - 1142 4 147.23 456 -60.79 0.71 1141 - 1143 4 146.15 458.49 -59.41 0.71 1142 - 1144 4 145.5 460.8 -59.41 0.71 1143 - 1145 4 144.85 462.75 -59.41 0.71 1144 - 1146 4 144.41 464.88 -59.41 0.71 1145 - 1147 4 143.76 467.37 -59.41 0.71 1146 - 1148 4 144.41 467.91 -59.41 0.71 1147 - 1149 4 143.33 471.1 -59.41 0.71 1148 - 1150 4 143.43 473.2 -59.26 0.71 1149 - 1151 4 143.22 475.51 -59.26 0.71 1150 - 1152 4 143.65 478 -59.26 0.71 1151 - 1153 4 143.43 480.13 -59.26 0.71 1152 - 1154 4 143.43 481.91 -59.26 0.71 1153 - 1155 4 144.3 483.86 -60.06 0.71 1154 - 1156 4 144.74 486.53 -60.06 0.71 1155 - 1157 4 146.14 488.42 -60.06 0.71 1156 - 1158 4 147.22 490.73 -60.06 0.71 1157 - 1159 4 148.53 492.33 -60.06 0.71 1158 - 1160 4 149.18 493.93 -60.06 0.71 1159 - 1161 4 148.96 496.42 -60.06 0.71 1160 - 1162 4 149.83 498.55 -60.06 0.71 1161 - 1163 4 151.13 501.04 -60.06 0.71 1162 - 1164 4 151.92 503.74 -60.06 0.71 1163 - 1165 4 153.01 505.69 -60.54 0.71 1164 - 1166 4 154.31 507.82 -60.54 0.71 1165 - 1167 4 154.96 510.66 -60.54 0.71 1166 - 1168 4 156.48 513.51 -60.54 0.71 1167 - 1169 4 158 515.82 -59.02 0.71 1168 - 1170 4 158.7 517.29 -61.86 0.71 1169 - 1171 4 160.01 519.25 -61.86 0.71 1170 - 1172 4 161.96 520.49 -61.86 0.71 1171 - 1173 4 163.92 521.91 -61.86 0.71 1172 - 1174 4 164.35 523.69 -61.86 0.71 1173 - 1175 4 165.65 524.93 -61.86 0.71 1174 - 1176 4 167.17 526.17 -61.86 0.71 1175 - 1177 4 169.34 527.06 -61.64 0.71 1176 - 1178 4 171.3 528.13 -61.64 0.71 1177 - 1179 4 172.17 529.73 -60.11 0.71 1178 - 1180 4 173.25 531.5 -59.06 0.71 1179 - 1181 4 175.41 532.91 -59.06 0.71 1180 - 1182 4 176.71 534.34 -59.06 0.71 1181 - 1183 4 178.23 536.29 -59.06 0.71 1182 - 1184 4 179.32 537.51 -59.06 0.71 1183 - 1185 4 181.92 539.29 -59.06 0.71 1184 - 1186 4 183.44 539.64 -59.06 0.71 1185 - 1187 4 185.18 540.71 -62.56 0.71 1186 - 1188 4 186.26 542.31 -62.56 0.71 1187 - 1189 4 188 543.91 -62.56 0.71 1188 - 1190 4 190.17 545.86 -62.56 0.71 1189 - 1191 4 192.01 547.82 -61.79 0.71 1190 - 1192 4 193.73 549.78 -63.96 0.71 1191 - 1193 4 195.68 551.2 -66.18 0.71 1192 - 1194 4 198.29 552.8 -66.18 0.71 1193 - 1195 4 199.59 553.86 -66.18 0.71 1194 - 1196 4 200.89 556 -66.18 0.71 1195 - 1197 4 202.85 557.6 -66.18 0.71 1196 - 1198 4 204.37 559.73 -66.18 0.71 1197 - 1199 4 205.89 562.57 -66.18 0.71 1198 - 1200 4 206.72 564.09 -67.75 0.71 1199 - 1201 4 208.01 566.05 -67.21 0.71 1200 - 1202 4 208.87 568.36 -69.38 0.71 1201 - 1203 4 209.96 570.49 -69.38 0.71 1202 - 1204 4 210.61 572.62 -69.38 0.71 1203 - 1205 4 211.7 574.04 -69.38 0.71 1204 - 1206 4 212.78 575.64 -69.38 0.71 1205 - 1207 4 214.3 576.88 -69.38 0.71 1206 - 1208 4 215.97 578.29 -69.38 0.71 1207 - 1209 4 170.51 394.6 -73.47 0.71 1108 - 1210 4 172.9 395.31 -73.47 0.71 1209 - 1211 4 174.42 397.26 -73.47 0.71 1210 - 1212 4 175.07 398.15 -74.9 0.71 1211 - 1213 4 176.16 399.57 -74.9 0.71 1212 - 1214 4 177.75 400.36 -74.9 0.71 1213 - 1215 4 177.97 401.6 -73.17 0.71 1214 - 1216 4 178.19 403.02 -75.59 0.71 1215 - 1217 4 178.41 404.27 -75.59 0.71 1216 - 1218 4 179.27 406.04 -75.34 0.71 1217 - 1219 4 178.84 408.18 -75.34 0.71 1218 - 1220 4 178.84 410.13 -77.88 0.71 1219 - 1221 4 179.27 412.08 -77.88 0.71 1220 - 1222 4 179.49 413.86 -77.88 0.71 1221 - 1223 4 180.3 416.54 -77.88 0.71 1222 - 1224 4 180.3 418.49 -77.88 0.71 1223 - 1225 4 180.52 420.27 -78.7 0.71 1224 - 1226 4 180.74 422.4 -78.7 0.71 1225 - 1227 4 180.52 424.35 -78.7 0.71 1226 - 1228 4 179.65 426.84 -78.7 0.71 1227 - 1229 4 180.09 429.15 -80.71 0.71 1228 - 1230 4 179.82 430.67 -80.71 0.71 1229 - 1231 4 179.6 432.8 -80.71 0.71 1230 - 1232 4 179.6 435.11 -79.88 0.71 1231 - 1233 4 179.38 437.24 -79.88 0.71 1232 - 1234 4 179.82 438.84 -79.88 0.71 1233 - 1235 4 180.25 440.44 -79.88 0.71 1234 - 1236 4 180.25 441.68 -81.52 0.71 1235 - 1237 4 180.69 442.93 -83.26 0.71 1236 - 1238 4 181.99 444.35 -83.26 0.71 1237 - 1239 4 183.55 445.71 -82.04 0.71 1238 - 1240 4 185.29 447.49 -82.04 0.71 1239 - 1241 4 186.59 449.09 -81.54 0.71 1240 - 1242 4 187.46 450.69 -81.54 0.71 1241 - 1243 4 188.98 452.11 -83.78 0.71 1242 - 1244 4 190.29 453.89 -85.06 0.71 1243 - 1245 4 191.81 455.66 -83.98 0.71 1244 - 1246 4 193.33 457.44 -83.98 0.71 1245 - 1247 4 193.98 458.86 -83.98 0.71 1246 - 1248 4 194.9 461 -84.02 0.71 1247 - 1249 4 195.77 463.31 -84.02 0.71 1248 - 1250 4 197.29 464.56 -87.18 0.71 1249 - 1251 4 198.81 466.69 -87.18 0.71 1250 - 1252 4 200.33 468.64 -87.18 0.71 1251 - 1253 4 201.42 470.42 -88.28 0.71 1252 - 1254 4 201.85 471.66 -87.12 0.71 1253 - 1255 4 202.94 473.97 -85.42 0.71 1254 - 1256 4 204.79 476.71 -85.42 0.71 1255 - 1257 4 205.64 478.31 -85.42 0.71 1256 - 1258 4 206.94 480.8 -85.42 0.71 1257 - 1259 4 208.25 483.29 -85.42 0.71 1258 - 1260 4 209.55 485.06 -83.62 0.71 1259 - 1261 4 210.85 487.37 -83.62 0.71 1260 - 1262 4 213.02 489.5 -83.62 0.71 1261 - 1263 4 213.7 491.96 -83.62 0.71 1262 - 1264 4 214.77 493.73 -85.06 0.71 1263 - 1265 4 216.07 496.4 -87.32 0.71 1264 - 1266 4 217.81 498.35 -88.84 0.71 1265 - 1267 4 219.55 500.48 -88.84 0.71 1266 - 1268 4 220.2 502.44 -88.84 0.71 1267 - 1269 4 221.29 504.04 -88.84 0.71 1268 - 1270 4 222.75 505.71 -88.84 0.71 1269 - 1271 4 224.06 507.67 -88.84 0.71 1270 - 1272 4 225.36 509.07 -88.84 0.71 1271 - 1273 4 226.23 510.13 -88.84 0.71 1272 - 1274 4 226.88 511.91 -88.84 0.71 1273 - 1275 4 227.97 514.22 -90.92 0.71 1274 - 1276 4 228.18 516 -90.92 0.71 1275 - 1277 4 229.27 517.42 -89.16 0.71 1276 - 1278 4 230.14 519.02 -89.16 0.71 1277 - 1279 4 232.01 520.67 -89.16 0.71 1278 - 1280 4 233.53 522.25 -89.16 0.71 1279 - 1281 4 234.61 524.38 -89.16 0.71 1280 - 1282 4 236.35 525.8 -89.16 0.71 1281 - 1283 4 237.22 527.04 -89.16 0.71 1282 - 1284 4 238.3 528.64 -90.46 0.71 1283 - 1285 4 240.04 530.06 -90.46 0.71 1284 - 1286 4 240.69 531.84 -89.98 0.71 1285 - 1287 4 241.56 534.15 -89.98 0.71 1286 - 1288 4 242.72 535.67 -89.98 0.71 1287 - 1289 4 243.81 537.27 -89.98 0.71 1288 - 1290 4 245.33 538.16 -89.54 0.71 1289 - 1291 4 246.41 539.58 -89.54 0.71 1290 - 1292 4 247.93 541 -89.54 0.71 1291 - 1293 4 249.45 542.42 -89.54 0.71 1292 - 1294 4 250.76 543.49 -89.54 0.71 1293 - 1295 4 252.71 544.37 -86.81 0.71 1294 - 1296 4 254.23 544.91 -85.04 0.71 1295 - 1297 4 255.53 545.62 -86.74 0.71 1296 - 1298 4 257.49 546.51 -86.26 0.71 1297 - 1299 4 258.57 546.51 -86.66 0.71 1298 - 1300 4 260.31 547.22 -85.52 0.71 1299 - 1301 4 261.75 548.34 -85.52 0.71 1300 - 1302 4 262.84 548.69 -85.52 0.71 1301 - 1303 4 158.99 339.8 -60.21 0.71 1080 - 1304 4 160.51 341.04 -60.21 0.71 1303 - 1305 4 162.45 342.11 -62.85 0.71 1304 - 1306 4 164.18 343.71 -62.85 0.71 1305 - 1307 4 165.27 343.71 -63.99 0.71 1306 - 1308 4 167.01 344.06 -66.1 0.71 1307 - 1309 4 168.74 345.84 -68.3 0.71 1308 - 1310 4 170.26 346.91 -70.45 0.71 1309 - 1311 4 172.22 348.51 -70.45 0.71 1310 - 1312 4 174.39 350.11 -71.54 0.71 1311 - 1313 4 176.13 351.53 -73.3 0.71 1312 - 1314 4 178.41 353.42 -76.18 0.71 1313 - 1315 4 180.36 355.2 -77.5 0.71 1314 - 1316 4 182.1 356.44 -78.82 0.71 1315 - 1317 4 183.18 357.33 -77.79 0.71 1316 - 1318 4 184.92 359.29 -79.28 0.71 1317 - 1319 4 187.09 361.06 -81.11 0.71 1318 - 1320 4 188.83 363.02 -82.41 0.71 1319 - 1321 4 190.78 364.97 -83.39 0.71 1320 - 1322 4 191.44 365.68 -84.27 0.71 1321 - 1323 4 192.32 366.58 -82.58 0.71 1322 - 1324 4 194.04 367.29 -82.58 0.71 1323 - 1325 4 195.78 368.54 -82.58 0.71 1324 - 1326 4 197.73 370.84 -82.58 0.71 1325 - 1327 4 199.69 372.62 -81.69 0.71 1326 - 1328 4 200.56 373.86 -81.69 0.71 1327 - 1329 4 202.08 374.22 -81.69 0.71 1328 - 1330 4 203.6 375.82 -81.69 0.71 1329 - 1331 4 205.33 377.24 -84.2 0.71 1330 - 1332 4 206.85 379.37 -84.2 0.71 1331 - 1333 4 209.24 380.62 -82.27 0.71 1332 - 1334 4 210.99 381.38 -82.27 0.71 1333 - 1335 4 212.29 382.45 -83.34 0.71 1334 - 1336 4 214.03 383.51 -83.34 0.71 1335 - 1337 4 215.77 384.76 -83.34 0.71 1336 - 1338 4 217.29 384.93 -83.34 0.71 1337 - 1339 4 218.59 385.64 -83.34 0.71 1338 - 1340 4 220.11 385.82 -83.34 0.71 1339 - 1341 4 221.63 386.71 -83.34 0.71 1340 - 1342 4 223.15 387.6 -83.34 0.71 1341 - 1343 4 225.1 388.13 -83.34 0.71 1342 - 1344 4 227.28 389.2 -84.61 0.71 1343 - 1345 4 229.86 389.27 -84.61 0.71 1344 - 1346 4 231.81 389.8 -83.78 0.71 1345 - 1347 4 235.5 391.05 -85.85 0.71 1346 - 1348 4 236.37 392.65 -85.85 0.71 1347 - 1349 4 238.11 394.42 -87.34 0.71 1348 - 1350 4 240.28 395.84 -89.05 0.71 1349 - 1351 4 242.45 397.44 -89.05 0.71 1350 - 1352 4 243.1 399.4 -89.05 0.71 1351 - 1353 4 244.63 400.82 -91.1 0.71 1352 - 1354 4 246.36 402.42 -92.89 0.71 1353 - 1355 4 248.62 404.09 -92.35 0.71 1354 - 1356 4 251.01 405.87 -92.35 0.71 1355 - 1357 4 252.53 407.47 -92.35 0.71 1356 - 1358 4 254.05 408.71 -94.54 0.71 1357 - 1359 4 255.57 410.13 -94.65 0.71 1358 - 1360 4 259.26 412.09 -97.34 0.71 1359 - 1361 4 259.92 413.86 -97.34 0.71 1360 - 1362 4 261.65 415.64 -97.34 0.71 1361 - 1363 4 262.3 416.35 -97.92 0.71 1362 - 1364 4 262.74 417.77 -98.9 0.71 1363 - 1365 4 264.37 418.74 -98.9 0.71 1364 - 1366 4 266.11 419.98 -98.9 0.71 1365 - 1367 4 268.26 421.22 -97.77 0.71 1366 - 1368 4 270.44 422.82 -97.77 0.71 1367 - 1369 4 272.39 424.95 -97.58 0.71 1368 - 1370 4 274.13 425.84 -97.58 0.71 1369 - 1371 4 275.21 427.44 -97.58 0.71 1370 - 1372 4 276.08 429.22 -97.58 0.71 1371 - 1373 4 276.73 429.93 -97.58 0.71 1372 - 1374 4 278.69 432.24 -99.62 0.71 1373 - 1375 4 279.72 434.22 -96.31 0.71 1374 - 1376 4 281.02 435.82 -96.31 0.71 1375 - 1377 4 282.33 437.6 -96.31 0.71 1376 - 1378 4 283.85 439.02 -96.31 0.71 1377 - 1379 4 285.37 440.09 -96.31 0.71 1378 - 1380 4 287.1 441.15 -96.31 0.71 1379 - 1381 4 287.97 443.11 -96.31 0.71 1380 - 1382 4 289.28 445.06 -96.31 0.71 1381 - 1383 4 291.66 447.55 -95.6 0.71 1382 - 1384 4 291.42 449.07 -95.6 0.71 1383 - 1385 4 292.07 451.38 -94.46 0.71 1384 - 1386 4 292.94 453.16 -94.46 0.71 1385 - 1387 4 293.59 455.11 -93.38 0.71 1386 - 1388 4 294.89 457.42 -93.38 0.71 1387 - 1389 4 296.19 459.73 -95.56 0.71 1388 - 1390 4 299.45 461.86 -95.56 0.71 1389 - 1391 4 299.87 464.02 -95.56 0.71 1390 - 1392 4 300.09 465.45 -93.33 0.71 1391 - 1393 4 300.09 467.04 -93.33 0.71 1392 - 1394 4 299.87 468.64 -93.33 0.71 1393 - 1395 4 300.3 470.78 -92.41 0.71 1394 - 1396 4 300.52 473.26 -92.41 0.71 1395 - 1397 4 300.95 475.04 -90.96 0.71 1396 - 1398 4 300.52 477.17 -92.18 0.71 1397 - 1399 4 301.07 479.2 -92.18 0.71 1398 - 1400 4 301.94 481.33 -89.05 0.71 1399 - 1401 4 303.46 483.47 -89.05 0.71 1400 - 1402 4 305.19 485.42 -87.02 0.71 1401 - 1403 4 307.58 488.08 -87.02 0.71 1402 - 1404 4 309.1 490.04 -87.33 0.71 1403 - 1405 4 310.41 491.99 -87.33 0.71 1404 - 1406 4 312.41 493.87 -85.52 0.71 1405 - 1407 4 313.71 496 -82.5 0.71 1406 - 1408 4 315.45 497.24 -82.5 0.71 1407 - 1409 4 317.18 498.67 -80.96 0.71 1408 - 1410 4 319.36 499.91 -78.21 0.71 1409 - 1411 4 320.52 500.76 -78.21 0.71 1410 - 1412 4 321.17 501.65 -78.21 0.71 1411 - 1413 4 321.61 502.71 -78.21 0.71 1412 - 1414 4 321.82 504.13 -78.21 0.71 1413 - 1415 4 322.04 505.2 -78.21 0.71 1414 - 1416 4 193.82 366.2 -86.77 0.71 1322 - 1417 4 195.13 367.62 -89.76 0.71 1416 - 1418 4 196.65 368.51 -92.06 0.71 1417 - 1419 4 198.38 369.58 -93.94 0.71 1418 - 1420 4 200.56 370.64 -95.34 0.71 1419 - 1421 4 202.29 371.71 -95.34 0.71 1420 - 1422 4 203.81 372.24 -97.05 0.71 1421 - 1423 4 205.77 371.71 -99.43 0.71 1422 - 1424 4 207.72 371 -100.82 0.71 1423 - 1425 4 210.76 371 -102.69 0.71 1424 - 1426 4 213.24 370.38 -104.76 0.71 1425 - 1427 4 215.63 369.67 -104.76 0.71 1426 - 1428 4 217.8 370.2 -104.76 0.71 1427 - 1429 4 219.1 370.38 -106.96 0.71 1428 - 1430 4 221.49 370.92 -109.06 0.71 1429 - 1431 4 223.37 371.25 -109.06 0.71 1430 - 1432 4 104.68 159.61 -14.07 1.065 851 - 1433 4 106.64 160.68 -14.07 1.065 1432 - 1434 4 108.16 161.75 -16.66 1.065 1433 - 1435 4 109.68 162.46 -15.8 1.065 1434 - 1436 4 111.41 163.35 -15.85 0.89 1435 - 1437 4 112.93 164.06 -15.85 0.89 1436 - 1438 4 114.67 164.77 -15.85 0.89 1437 - 1439 4 116.19 165.65 -17.62 0.89 1438 - 1440 4 117.71 166.9 -18.6 0.89 1439 - 1441 4 119.45 168.32 -18.6 0.89 1440 - 1442 4 121.84 169.74 -20.68 0.89 1441 - 1443 4 122.85 170.59 -19.88 1.065 1442 - 1444 4 123.65 171.72 -23.29 1.065 1443 - 1445 4 124.52 172.79 -22.74 0.89 1444 - 1446 4 125.17 174.21 -25.44 0.71 1445 - 1447 4 126.04 175.45 -25.16 0.71 1446 - 1448 4 126.91 177.76 -28.48 0.71 1447 - 1449 4 128.21 179.72 -28.48 0.71 1448 - 1450 4 129.29 181.67 -30.55 0.71 1449 - 1451 4 130.38 183.63 -33.03 0.71 1450 - 1452 4 132.55 186.82 -35.06 0.71 1451 - 1453 4 131.96 189.37 -36.48 0.71 1452 - 1454 4 132.38 191.5 -36.71 0.71 1453 - 1455 4 132.81 193.63 -40.1 0.71 1454 - 1456 4 132.81 195.76 -40.1 0.71 1455 - 1457 4 133.68 197.54 -40.1 0.71 1456 - 1458 4 133.68 200.2 -41.74 0.71 1457 - 1459 4 133.9 203.05 -41.74 0.71 1458 - 1460 4 133.8 205.94 -42.17 0.71 1459 - 1461 4 134.65 208.25 -44.11 0.71 1460 - 1462 4 134.21 209.85 -44.11 0.71 1461 - 1463 4 134.43 212.16 -46.74 0.71 1462 - 1464 4 134.87 214.83 -48.19 0.71 1463 - 1465 4 134.65 217.14 -48.19 0.71 1464 - 1466 4 136.17 219.62 -50 0.71 1465 - 1467 4 137.5 221.61 -52.58 0.71 1466 - 1468 4 139.24 223.39 -52.18 0.71 1467 - 1469 4 140.76 225.34 -53.82 0.71 1468 - 1470 4 142.71 226.94 -53.82 0.71 1469 - 1471 4 143.8 229.07 -55.17 0.71 1470 - 1472 4 144.88 231.03 -56.26 0.71 1471 - 1473 4 145.97 233.34 -58 0.71 1472 - 1474 4 146.84 235.47 -59.86 0.71 1473 - 1475 4 147.25 237.08 -59.86 0.71 1474 - 1476 4 148.33 239.03 -57.89 0.71 1475 - 1477 4 149.4 240.45 -59.65 0.71 1476 - 1478 4 150.71 241.87 -62.14 0.71 1477 - 1479 4 152.01 244.18 -62.14 0.71 1478 - 1480 4 152.88 245.61 -64 0.71 1479 - 1481 4 153.96 247.56 -66.18 0.71 1480 - 1482 4 155.27 248.98 -66.18 0.71 1481 - 1483 4 156.79 250.4 -67.97 0.71 1482 - 1484 4 158.1 253.68 -67.97 0.71 1483 - 1485 4 158.32 255.63 -69.63 0.71 1484 - 1486 4 159.19 257.41 -69.63 0.71 1485 - 1487 4 160.71 259.54 -71.56 0.71 1486 - 1488 4 161.14 261.67 -73.5 0.71 1487 - 1489 4 162.23 262.91 -73.5 0.71 1488 - 1490 4 163.53 263.8 -75.31 0.71 1489 - 1491 4 163.96 265.76 -77.27 0.71 1490 - 1492 4 164.63 267.63 -77.26 0.71 1491 - 1493 4 165.72 268.88 -79.4 0.71 1492 - 1494 4 166.37 271.01 -81.16 0.71 1493 - 1495 4 168.11 273.14 -82.99 0.71 1494 - 1496 4 169.84 275.45 -85.39 0.71 1495 - 1497 4 171.15 277.05 -88.18 0.71 1496 - 1498 4 172.23 279.54 -89.27 0.71 1497 - 1499 4 174.4 280.96 -92.58 0.71 1498 - 1500 4 176.59 281.59 -92.58 0.71 1499 - 1501 4 178.09 283.19 -95.35 0.71 1500 - 1502 4 179.83 283.9 -95.35 0.71 1501 - 1503 4 182.22 286.21 -97.55 0.71 1502 - 1504 4 183.95 287.99 -99.36 0.71 1503 - 1505 4 185.04 289.76 -101.12 0.71 1504 - 1506 4 186.12 291.89 -102.69 0.71 1505 - 1507 4 186.34 294.2 -102.69 0.71 1506 - 1508 4 187.86 295.8 -104.69 0.71 1507 - 1509 4 189.53 297.66 -106.06 0.71 1508 - 1510 4 191.27 299.61 -106.06 0.71 1509 - 1511 4 193.01 301.39 -109.05 0.71 1510 - 1512 4 194.09 302.63 -109.05 0.71 1511 - 1513 4 195.83 303.52 -110.88 0.71 1512 - 1514 4 196.48 305.29 -112.76 0.71 1513 - 1515 4 197.79 306.54 -114.91 0.71 1514 - 1516 4 198.22 308.49 -116.84 0.71 1515 - 1517 4 198.87 310.62 -118.38 0.71 1516 - 1518 4 200.3 312.46 -120.46 0.71 1517 - 1519 4 200.95 314.94 -123.82 0.71 1518 - 1520 4 202.25 317.25 -125.7 0.71 1519 - 1521 4 203.99 319.03 -125.7 0.71 1520 - 1522 4 204.86 320.45 -127.08 0.71 1521 - 1523 4 206.16 323.11 -127.08 0.71 1522 - 1524 4 206.82 325.07 -131.26 0.71 1523 - 1525 4 207.23 327.06 -131.26 0.71 1524 - 1526 4 208.1 328.12 -133.51 0.71 1525 - 1527 4 209.19 329.9 -136.01 0.71 1526 - 1528 4 209.84 331.85 -137.86 0.71 1527 - 1529 4 210.49 333.45 -140.03 0.71 1528 - 1530 4 210.92 335.58 -142.07 0.71 1529 - 1531 4 211.14 337 -144.91 0.71 1530 - 1532 4 211.79 338.6 -146.06 0.71 1531 - 1533 4 212.88 340.56 -146.84 0.71 1532 - 1534 4 214.53 342.08 -146.84 0.71 1533 - 1535 4 215.4 344.39 -148.82 0.71 1534 - 1536 4 217.14 346.52 -150.9 0.71 1535 - 1537 4 218.01 348.3 -153.4 0.71 1536 - 1538 4 218.66 350.43 -154.82 0.71 1537 - 1539 4 219.96 352.2 -154.82 0.71 1538 - 1540 4 221.27 353.98 -156.14 0.71 1539 - 1541 4 222.79 355.4 -158.7 0.71 1540 - 1542 4 223.87 356.72 -158.7 0.71 1541 - 1543 4 225.17 358.14 -161.48 0.71 1542 - 1544 4 226.69 359.21 -163.85 0.71 1543 - 1545 4 228.21 361.16 -163.85 0.71 1544 - 1546 4 228.64 361.52 -166.42 0.71 1545 - 1547 4 230.16 362.94 -166.42 0.71 1546 - 1548 4 231.47 365.07 -166.42 0.71 1547 - 1549 4 232.77 367.56 -166.42 0.71 1548 - 1550 4 234.29 368.63 -168.77 0.71 1549 - 1551 4 235.38 370.22 -170.48 0.71 1550 - 1552 4 236.68 372.06 -173.12 0.71 1551 - 1553 4 237.99 374.19 -171.79 0.71 1552 - 1554 4 239.51 376.32 -171.79 0.71 1553 - 1555 4 240.59 377.92 -174.18 0.71 1554 - 1556 4 242.11 379.87 -176.73 0.71 1555 - 1557 4 243.85 381.47 -176.73 0.71 1556 - 1558 4 245.59 383.07 -178.46 0.71 1557 - 1559 4 247.32 384.85 -177.55 0.71 1558 - 1560 4 249.12 386.86 -179.96 0.71 1559 - 1561 4 250.2 388.45 -179.96 0.71 1560 - 1562 4 252.16 389.88 -179.96 0.71 1561 - 1563 4 253.03 391.3 -182.7 0.71 1562 - 1564 4 254.55 392.72 -182.7 0.71 1563 - 1565 4 255.85 394.49 -182.7 0.71 1564 - 1566 4 256.28 396.27 -182.7 0.71 1565 - 1567 4 256.85 397.88 -182.7 0.71 1566 - 1568 4 257.28 398.59 -185.53 0.71 1567 - 1569 4 257.5 400.54 -187.73 0.71 1568 - 1570 4 257.5 402.5 -189.17 0.71 1569 - 1571 4 256.85 404.45 -190.48 0.71 1570 - 1572 4 256.63 406.58 -190.48 0.71 1571 - 1573 4 256.41 408.18 -189 0.71 1572 - 1574 4 256.41 409.96 -191.3 0.71 1573 - 1575 4 257.72 411.38 -191.3 0.71 1574 - 1576 4 258 413.97 -191.3 0.71 1575 - 1577 4 258.21 416.25 -192.57 0.71 1576 - 1578 4 258 418.92 -192.57 0.71 1577 - 1579 4 258.65 420.69 -195.35 0.71 1578 - 1580 4 258.87 422.65 -195.35 0.71 1579 - 1581 4 259.73 425.31 -195.42 0.71 1580 - 1582 4 260.17 427.8 -195.42 0.71 1581 - 1583 4 260.85 429.1 -197.68 0.71 1582 - 1584 4 261.07 431.94 -197.68 0.71 1583 - 1585 4 261.65 433.83 -197.68 0.71 1584 - 1586 4 261.65 436.5 -197.68 0.71 1585 - 1587 4 261.87 438.1 -197.91 0.71 1586 - 1588 4 262.08 440.41 -199.85 0.71 1587 - 1589 4 261.87 443.07 -197.82 0.71 1588 - 1590 4 261.87 444.85 -200.63 0.71 1589 - 1591 4 262.08 446.98 -200.63 0.71 1590 - 1592 4 262.65 449.54 -200.63 0.71 1591 - 1593 4 263.25 451.43 -200.63 0.71 1592 - 1594 4 263.9 453.57 -198.22 0.71 1593 - 1595 4 264.33 455.7 -198.22 0.71 1594 - 1596 4 265.27 457.63 -198.22 0.71 1595 - 1597 4 265.7 459.59 -198.22 0.71 1596 - 1598 4 265.92 460.65 -198.22 0.71 1597 - 1599 4 266.57 462.61 -198.22 0.71 1598 - 1600 4 265.92 464.38 -198.22 0.71 1599 - 1601 4 265.48 465.63 -198.22 0.71 1600 - 1602 4 124.37 171.12 -19.88 1.065 1443 - 1603 4 126.11 171.66 -22.04 0.89 1602 - 1604 4 127.84 172.9 -22.04 0.71 1603 - 1605 4 129.15 173.97 -20.95 0.71 1604 - 1606 4 131.1 174.86 -23.14 0.71 1605 - 1607 4 133.49 176.1 -23.14 0.71 1606 - 1608 4 135.66 177.52 -25.39 0.71 1607 - 1609 4 137.18 179.3 -25.39 0.71 1608 - 1610 4 139.14 181.07 -26.37 0.71 1609 - 1611 4 141.31 182.32 -27.28 0.71 1610 - 1612 4 142.86 183.55 -26.5 0.71 1611 - 1613 4 144.38 184.61 -27.97 0.71 1612 - 1614 4 146.12 186.57 -30.14 0.71 1613 - 1615 4 148.08 187.81 -30.14 0.71 1614 - 1616 4 149.16 189.23 -32.23 0.71 1615 - 1617 4 150.25 191.36 -35.3 0.71 1616 - 1618 4 151.12 193.14 -35.3 0.71 1617 - 1619 4 152.85 195.45 -38.03 0.71 1618 - 1620 4 154.16 197.76 -39.54 0.71 1619 - 1621 4 155.43 199.66 -39.54 0.71 1620 - 1622 4 156.52 201.43 -41.39 0.71 1621 - 1623 4 157.6 203.39 -43.26 0.71 1622 - 1624 4 159.34 204.99 -43.26 0.71 1623 - 1625 4 160.64 207.12 -45.29 0.71 1624 - 1626 4 161.95 209.25 -45.29 0.71 1625 - 1627 4 163.25 210.49 -46.8 0.71 1626 - 1628 4 164.33 212.09 -46.8 0.71 1627 - 1629 4 164.98 213.52 -49.34 0.71 1628 - 1630 4 166.72 216.01 -50.76 0.71 1629 - 1631 4 168.67 219.21 -53.36 0.71 1630 - 1632 4 170.84 222.05 -55.05 0.71 1631 - 1633 4 172.58 224.18 -55.05 0.71 1632 - 1634 4 174.1 225.78 -56.75 0.71 1633 - 1635 4 175.62 227.91 -57.33 0.71 1634 - 1636 4 176.2 229.68 -57.33 0.71 1635 - 1637 4 176.41 231.1 -55.85 0.71 1636 - 1638 4 177.5 233.59 -55.85 0.71 1637 - 1639 4 178.8 235.37 -57.51 0.71 1638 - 1640 4 180.54 237.32 -59.19 0.71 1639 - 1641 4 181.84 239.1 -59.19 0.71 1640 - 1642 4 184.01 241.23 -59.39 0.71 1641 - 1643 4 185.32 243 -61.45 0.71 1642 - 1644 4 186.85 244.17 -60.1 0.71 1643 - 1645 4 188.58 245.59 -60.1 0.71 1644 - 1646 4 190.54 247.55 -60.1 0.71 1645 - 1647 4 191.84 248.97 -58.18 0.71 1646 - 1648 4 193.8 250.21 -59.54 0.71 1647 - 1649 4 194.67 251.99 -59.62 0.71 1648 - 1650 4 196.4 252.87 -60.71 0.71 1649 - 1651 4 197.71 253.94 -62.62 0.71 1650 - 1652 4 199.44 254.65 -64.31 0.71 1651 - 1653 4 200.96 255.54 -64.31 0.71 1652 - 1654 4 203.14 256.61 -66.01 0.71 1653 - 1655 4 205.31 258.38 -66.01 0.71 1654 - 1656 4 207.06 259.37 -66.01 0.71 1655 - 1657 4 208.37 260.61 -67.36 0.71 1656 - 1658 4 210.32 261.15 -67.36 0.71 1657 - 1659 4 212.28 262.03 -66.45 0.71 1658 - 1660 4 213.8 262.39 -66.45 0.71 1659 - 1661 4 215.32 263.46 -68.96 0.71 1660 - 1662 4 217.71 264.52 -68.96 0.71 1661 - 1663 4 220.53 266.3 -68.96 0.71 1662 - 1664 4 222.7 267.72 -71.01 0.71 1663 - 1665 4 224.66 268.96 -71.01 0.71 1664 - 1666 4 226.18 270.03 -71.01 0.71 1665 - 1667 4 228.13 271.98 -72.57 0.71 1666 - 1668 4 229.43 273.94 -74.75 0.71 1667 - 1669 4 231.17 276.25 -74.75 0.71 1668 - 1670 4 231.65 278.23 -74.16 0.71 1669 - 1671 4 232.52 280.72 -75.14 0.71 1670 - 1672 4 233.82 282.85 -78.13 0.71 1671 - 1673 4 235.12 284.63 -75.94 0.71 1672 - 1674 4 236.43 286.76 -75.94 0.71 1673 - 1675 4 237.95 288.71 -75.94 0.71 1674 - 1676 4 239.68 291.56 -78.56 0.71 1675 - 1677 4 240.9 294.7 -78.56 0.71 1676 - 1678 4 241.75 297.34 -78.34 0.71 1677 - 1679 4 243.05 299.47 -80.03 0.71 1678 - 1680 4 243.49 301.07 -80.82 0.71 1679 - 1681 4 244.79 303.03 -80.82 0.71 1680 - 1682 4 246.09 304.09 -80.82 0.71 1681 - 1683 4 248.05 305.51 -80.82 0.71 1682 - 1684 4 248.92 307.29 -80.26 0.71 1683 - 1685 4 249.01 308.88 -82.98 0.71 1684 - 1686 4 250.97 311.37 -82.98 0.71 1685 - 1687 4 251.62 313.32 -82.98 0.71 1686 - 1688 4 252.71 314.74 -84.96 0.71 1687 - 1689 4 253.14 316.52 -84.38 0.71 1688 - 1690 4 253.57 318.65 -86.87 0.71 1689 - 1691 4 253.57 320.6 -88.82 0.71 1690 - 1692 4 253.79 322.2 -86.19 0.71 1691 - 1693 4 253.8 324.59 -86.19 0.71 1692 - 1694 4 254.01 325.83 -88.11 0.71 1693 - 1695 4 254.23 329.03 -88.11 0.71 1694 - 1696 4 255.1 330.27 -89.68 0.71 1695 - 1697 4 255.75 332.41 -90.22 0.71 1696 - 1698 4 256.19 334.54 -90.22 0.71 1697 - 1699 4 256.84 336.67 -90.22 0.71 1698 - 1700 4 257.67 338.99 -90.22 0.71 1699 - 1701 4 257.88 341.12 -90.22 0.71 1700 - 1702 4 258.1 343.07 -91.56 0.71 1701 - 1703 4 259.19 345.74 -91.56 0.71 1702 - 1704 4 258.97 348.05 -92.98 0.71 1703 - 1705 4 259.4 350.89 -92.43 0.71 1704 - 1706 4 259.61 353.19 -92.43 0.71 1705 - 1707 4 260.03 355.85 -92.43 0.71 1706 - 1708 4 259.81 357.99 -92.43 0.71 1707 - 1709 4 261.12 359.58 -94.19 0.71 1708 - 1710 4 261.77 361.54 -93.5 0.71 1709 - 1711 4 263.07 364.74 -93.5 0.71 1710 - 1712 4 264.16 367.05 -96.28 0.71 1711 - 1713 4 265.5 368.68 -94.7 0.71 1712 - 1714 4 266.15 370.1 -96.42 0.71 1713 - 1715 4 267.02 372.23 -96.42 0.71 1714 - 1716 4 268.32 374.36 -96.42 0.71 1715 - 1717 4 269.63 377.74 -99.59 0.71 1716 - 1718 4 269.84 379.69 -99.59 0.71 1717 - 1719 4 269.63 381.47 -99.49 0.71 1718 - 1720 4 269.83 383.43 -99.49 0.71 1719 - 1721 4 269.83 385.92 -99.49 0.71 1720 - 1722 4 270.48 388.41 -99.49 0.71 1721 - 1723 4 270.92 390.36 -99.49 0.71 1722 - 1724 4 270.78 392.23 -99.49 0.71 1723 - 1725 4 271.21 395.08 -99.49 0.71 1724 - 1726 4 272.3 397.21 -100.18 0.71 1725 - 1727 4 274.04 399.52 -100.18 0.71 1726 - 1728 4 274.69 400.76 -96.18 0.71 1727 - 1729 4 275.12 403.07 -96.18 0.71 1728 - 1730 4 275.99 405.2 -96.18 0.71 1729 - 1731 4 278.15 407.77 -96.18 0.71 1730 - 1732 4 279.67 409.72 -96.18 0.71 1731 - 1733 4 281.19 411.5 -96.18 0.71 1732 - 1734 4 281.84 413.98 -96.18 0.71 1733 - 1735 4 283.15 415.94 -96.18 0.71 1734 - 1736 4 283.8 418.25 -96.18 0.71 1735 - 1737 4 284.88 419.67 -93.06 0.71 1736 - 1738 4 285.25 421.99 -93.06 0.71 1737 - 1739 4 286.12 424.65 -93.06 0.71 1738 - 1740 4 287.2 426.41 -93.06 0.71 1739 - 1741 4 287.87 427.72 -93.06 0.71 1740 - 1742 4 98.15 132.37 -11.6 1.6 833 - 1743 4 99.89 133.61 -11.6 1.6 1742 - 1744 4 101.63 135.03 -10.04 1.42 1743 - 1745 4 102.89 136.4 -10.04 1.42 1744 - 1746 4 104.84 137.29 -10.04 1.245 1745 - 1747 4 107.01 137.29 -10.04 1.245 1746 - 1748 4 108.32 138.35 -10.04 1.245 1747 - 1749 4 110.7 139.24 -8.42 1.245 1748 - 1750 4 113.09 140.31 -8.42 1.245 1749 - 1751 4 114.4 141.55 -8.42 1.245 1750 - 1752 4 115.92 143.5 -8.42 1.245 1751 - 1753 4 117.44 144.93 -8.42 1.245 1752 - 1754 4 119.17 146.7 -8.42 1.245 1753 - 1755 4 120.91 147.41 -10.38 1.245 1754 - 1756 4 124.01 149.35 -10.38 1.245 1755 - 1757 4 125.09 150.42 -10.38 1.245 1756 - 1758 4 127.03 151.49 -10.38 1.245 1757 - 1759 4 127.9 152.2 -12.32 1.42 1758 - 1760 4 128.12 153.26 -12.32 1.6 1759 - 1761 4 127.66 154.48 -11.34 1.42 1760 - 1762 4 127.01 157.15 -11.34 1.245 1761 - 1763 4 127.23 158.57 -11.34 1.245 1762 - 1764 4 126.14 159.99 -11.34 1.065 1763 - 1765 4 125.93 161.59 -11.34 1.065 1764 - 1766 4 126.14 163.72 -11.34 1.065 1765 - 1767 4 125.71 166.39 -10.09 0.89 1766 - 1768 4 124.99 167.6 -10.74 1.065 1767 - 1769 4 123.69 170.44 -10.74 1.065 1768 - 1770 4 122.61 173.1 -10.74 1.065 1769 - 1771 4 122.39 174.88 -10.74 1.065 1770 - 1772 4 120.43 176.3 -10.74 0.89 1771 - 1773 4 119.57 179.14 -13.15 0.89 1772 - 1774 4 118.48 181.1 -13.15 0.89 1773 - 1775 4 111.53 199.88 -15.63 0.89 1774 - 1776 4 111.09 202.19 -17.74 0.89 1775 - 1777 4 109.57 204.15 -16.32 0.89 1776 - 1778 4 108.05 206.81 -16.32 0.89 1777 - 1779 4 107.4 208.59 -19 0.89 1778 - 1780 4 106.97 210.01 -18.81 0.89 1779 - 1781 4 106.75 212.14 -19.57 0.89 1780 - 1782 4 107.08 214.82 -19.57 0.89 1781 - 1783 4 107.73 217.13 -21.53 0.89 1782 - 1784 4 107.95 219.08 -21.53 0.89 1783 - 1785 4 108.17 220.68 -20.49 0.89 1784 - 1786 4 108.17 222.28 -20.49 0.89 1785 - 1787 4 109.04 224.06 -22.98 0.89 1786 - 1788 4 109.47 225.48 -22.98 0.89 1787 - 1789 4 109.69 227.61 -22.98 0.89 1788 - 1790 4 110.12 229.92 -21.8 0.89 1789 - 1791 4 110.99 232.23 -23.58 0.89 1790 - 1792 4 111.86 233.83 -23.58 0.89 1791 - 1793 4 112.73 235.96 -22.74 0.71 1792 - 1794 4 113.16 238.62 -22.74 0.71 1793 - 1795 4 113.81 240.58 -24.97 0.71 1794 - 1796 4 114.46 241.82 -26.93 0.71 1795 - 1797 4 114.46 245.02 -27.81 0.71 1796 - 1798 4 115.62 246.41 -29.34 0.71 1797 - 1799 4 116.06 248.36 -29.34 0.71 1798 - 1800 4 116.28 249.96 -31.06 0.71 1799 - 1801 4 116.71 253.34 -29.5 0.71 1800 - 1802 4 117.36 256 -29.5 0.71 1801 - 1803 4 118.66 259.91 -29.5 0.71 1802 - 1804 4 119.61 262.45 -31.09 0.71 1803 - 1805 4 120.48 264.76 -31.09 0.71 1804 - 1806 4 121.13 266.71 -31.09 0.71 1805 - 1807 4 121.78 269.02 -31.24 0.71 1806 - 1808 4 122.43 271.16 -31.24 0.71 1807 - 1809 4 123.08 273.47 -31.24 0.71 1808 - 1810 4 123.3 275.77 -31.24 0.71 1809 - 1811 4 124.84 277.36 -31.24 0.71 1810 - 1812 4 124.41 279.85 -31.24 0.71 1811 - 1813 4 124.62 282.16 -31.19 0.71 1812 - 1814 4 124.62 284.65 -31.19 0.89 1813 - 1815 4 123.76 287.84 -31.19 0.89 1814 - 1816 4 123.32 290.15 -29.84 0.89 1815 - 1817 4 122.45 291.76 -29.84 0.89 1816 - 1818 4 122.02 294.07 -29.84 0.89 1817 - 1819 4 121.37 295.85 -27.79 0.89 1818 - 1820 4 120.28 299.4 -27.79 0.89 1819 - 1821 4 119.63 301 -27.79 0.89 1820 - 1822 4 119.41 303.31 -27.79 0.89 1821 - 1823 4 118.76 305.44 -27.79 0.89 1822 - 1824 4 118.3 308.23 -29.7 0.89 1823 - 1825 4 118.3 310.36 -29.7 0.89 1824 - 1826 4 117.87 312.31 -29.35 0.71 1825 - 1827 4 117.65 314.27 -29.35 0.71 1826 - 1828 4 117.22 316.22 -29.35 0.71 1827 - 1829 4 116.78 318.53 -29.44 0.71 1828 - 1830 4 117 320.84 -29.44 0.71 1829 - 1831 4 117.16 323.58 -26.38 0.71 1830 - 1832 4 117.37 326.43 -25.88 0.71 1831 - 1833 4 117.37 328.74 -26.61 0.71 1832 - 1834 4 117.59 331.93 -26.61 0.71 1833 - 1835 4 118.02 333.89 -24.66 0.71 1834 - 1836 4 118.24 336.55 -24.66 0.71 1835 - 1837 4 117.7 339.05 -24.66 0.71 1836 - 1838 4 117.49 341.18 -24.46 0.71 1837 - 1839 4 116.84 343.67 -24.46 0.71 1838 - 1840 4 116.18 345.27 -23.34 0.71 1839 - 1841 4 115.32 347.4 -23.08 0.71 1840 - 1842 4 114.66 349.53 -23.08 0.71 1841 - 1843 4 113.36 351.49 -23.08 0.71 1842 - 1844 4 113.12 352.99 -22.22 0.71 1843 - 1845 4 112.25 354.58 -22.22 0.71 1844 - 1846 4 110.73 355.83 -20.5 0.71 1845 - 1847 4 108.99 357.07 -20.5 0.71 1846 - 1848 4 107.69 359.03 -20.5 0.71 1847 - 1849 4 106.61 361.16 -20.86 0.71 1848 - 1850 4 105.74 362.93 -20.86 0.71 1849 - 1851 4 105.3 365.24 -18.22 0.71 1850 - 1852 4 105.52 367.55 -18.22 0.71 1851 - 1853 4 105.76 369.36 -18.22 0.71 1852 - 1854 4 105.54 370.96 -18.22 0.71 1853 - 1855 4 104.89 372.56 -17.36 0.71 1854 - 1856 4 104.89 375.76 -17.36 0.71 1855 - 1857 4 104.24 377.36 -17.36 0.71 1856 - 1858 4 104.45 378.96 -19.62 0.71 1857 - 1859 4 103.58 380.91 -19.62 0.71 1858 - 1860 4 103.15 382.69 -19.62 0.71 1859 - 1861 4 102.05 384.01 -18.9 0.71 1860 - 1862 4 101.18 385.61 -18.9 0.71 1861 - 1863 4 100.75 387.38 -19.01 0.71 1862 - 1864 4 100.1 389.69 -19.08 0.71 1863 - 1865 4 99.45 391.47 -19.08 0.71 1864 - 1866 4 99.23 393.25 -17.48 0.71 1865 - 1867 4 98.58 395.02 -17.48 0.71 1866 - 1868 4 97.06 397.69 -16.22 0.71 1867 - 1869 4 96.07 399.54 -16.22 0.71 1868 - 1870 4 95.64 401.85 -16.22 0.71 1869 - 1871 4 94.98 403.8 -15.14 0.71 1870 - 1872 4 94.77 406.29 -15.14 0.71 1871 - 1873 4 94.55 408.96 -16.16 0.71 1872 - 1874 4 94.33 411.09 -16.16 0.71 1873 - 1875 4 94.12 412.51 -16.16 0.71 1874 - 1876 4 93.92 414.7 -15.18 0.71 1875 - 1877 4 93.49 416.12 -15.18 0.71 1876 - 1878 4 93.7 418.07 -16.14 0.71 1877 - 1879 4 94.57 420.03 -16.14 0.71 1878 - 1880 4 95.22 422.87 -16.14 0.71 1879 - 1881 4 96.09 424.29 -16.14 0.71 1880 - 1882 4 97.4 426.24 -16.14 0.71 1881 - 1883 4 99.13 428.55 -16.14 0.71 1882 - 1884 4 100.24 429.81 -16.26 0.71 1883 - 1885 4 101.09 431.23 -17.58 0.71 1884 - 1886 4 101.96 433.54 -17.58 0.71 1885 - 1887 4 102.83 435.49 -17.58 0.71 1886 - 1888 4 103.48 437.8 -19.68 0.71 1887 - 1889 4 104.13 439.93 -19.68 0.71 1888 - 1890 4 104.57 441.71 -18.02 0.71 1889 - 1891 4 105.65 444.02 -19.78 0.71 1890 - 1892 4 107.08 445.94 -19.78 0.71 1891 - 1893 4 108.58 449.32 -19.78 0.71 1892 - 1894 4 108.58 451.45 -19.78 0.71 1893 - 1895 4 108.36 453.76 -18.92 0.71 1894 - 1896 4 108.58 455.87 -18.92 0.71 1895 - 1897 4 107.93 457.64 -18.92 0.71 1896 - 1898 4 108.14 459.6 -20.96 0.71 1897 - 1899 4 108.16 462.05 -20.78 0.71 1898 - 1900 4 108.81 464.36 -19.81 0.71 1899 - 1901 4 109.46 466.67 -22.46 0.71 1900 - 1902 4 109.68 469.33 -22.46 0.71 1901 - 1903 4 110.11 471.29 -22.46 0.71 1902 - 1904 4 110.76 473.24 -22.1 0.71 1903 - 1905 4 111.41 475.73 -22.1 0.71 1904 - 1906 4 111.56 477.72 -22.1 0.71 1905 - 1907 4 112.21 480.38 -22.1 0.71 1906 - 1908 4 112.21 482.51 -21.55 0.71 1907 - 1909 4 113.29 483.76 -23.06 0.71 1908 - 1910 4 114.81 485.36 -23.06 0.71 1909 - 1911 4 116.98 487.31 -23.06 0.71 1910 - 1912 4 118.29 488.55 -24.53 0.71 1911 - 1913 4 120.46 489.98 -24.53 0.71 1912 - 1914 4 123.14 491.74 -23.77 0.71 1913 - 1915 4 124.88 493.34 -23.77 0.71 1914 - 1916 4 126.18 494.58 -24.12 0.71 1915 - 1917 4 128.36 495.65 -25.64 0.71 1916 - 1918 4 129.23 496.71 -27.22 0.71 1917 - 1919 4 130.31 499.02 -29.28 0.71 1918 - 1920 4 131.61 501.16 -29.28 0.71 1919 - 1921 4 133.35 503.64 -29.28 0.71 1920 - 1922 4 135.09 505.95 -29.28 0.71 1921 - 1923 4 138.18 507.25 -26.71 0.71 1922 - 1924 4 139.92 507.59 -28.54 0.71 1923 - 1925 4 141.87 508.12 -27.29 0.71 1924 - 1926 4 144.04 509.54 -27.29 0.71 1925 - 1927 4 146.87 510.61 -27.29 0.71 1926 - 1928 4 149.25 512.03 -28.7 0.71 1927 - 1929 4 151.86 512.74 -28.7 0.71 1928 - 1930 4 154.11 513.83 -28.7 0.71 1929 - 1931 4 156.28 514.9 -28.7 0.71 1930 - 1932 4 157.8 515.78 -28.05 0.71 1931 - 1933 4 160.19 515.96 -28.05 0.71 1932 - 1934 4 161.71 517.38 -28.05 0.71 1933 - 1935 4 163.88 518.63 -29.96 0.71 1934 - 1936 4 165.84 518.98 -29.96 0.71 1935 - 1937 4 167.36 519.51 -30.54 0.71 1936 - 1938 4 169.75 520.4 -30.54 0.71 1937 - 1939 4 171.71 521.07 -30.54 0.71 1938 - 1940 4 174.75 522.83 -30.54 0.71 1939 - 1941 4 177.36 523.54 -30.54 0.71 1940 - 1942 4 178.42 525.19 -30.54 0.71 1941 - 1943 4 180.6 526.07 -29.19 0.71 1942 - 1944 4 182.77 527.49 -29.19 0.71 1943 - 1945 4 184.48 528.45 -30.65 0.71 1944 - 1946 4 186.65 529.52 -32.37 0.71 1945 - 1947 4 189.04 531.29 -30.94 0.71 1946 - 1948 4 190.99 532.54 -30.94 0.71 1947 - 1949 4 192.73 534.14 -33.76 0.71 1948 - 1950 4 195.33 536.09 -33.76 0.71 1949 - 1951 4 197.07 537.16 -33.76 0.71 1950 - 1952 4 198.37 539.29 -31.19 0.71 1951 - 1953 4 200.55 541.78 -33.38 0.71 1952 - 1954 4 202.94 543.74 -33.38 0.71 1953 - 1955 4 205.55 545.16 -32.87 0.71 1954 - 1956 4 207.51 546.58 -36.15 0.71 1955 - 1957 4 209.89 547.12 -36.15 0.71 1956 - 1958 4 211.85 547.83 -36.15 0.71 1957 - 1959 4 214.24 549.07 -36.28 0.71 1958 - 1960 4 215.97 550.31 -38.06 0.71 1959 - 1961 4 218.15 551.2 -38.06 0.71 1960 - 1962 4 220.11 552.41 -38.06 0.71 1961 - 1963 4 222.5 553.83 -38.06 0.71 1962 - 1964 4 224.02 555.43 -38.06 0.71 1963 - 1965 4 225.76 556.85 -39.22 0.71 1964 - 1966 4 227.28 558.8 -39.22 0.71 1965 - 1967 4 229.23 560.22 -38.27 0.71 1966 - 1968 4 231.4 562.36 -40.79 0.71 1967 - 1969 4 233.57 564.31 -40.79 0.71 1968 - 1970 4 235.31 565.73 -38.98 0.71 1969 - 1971 4 236.66 567.43 -41.87 0.71 1970 - 1972 4 238.04 568.45 -41.87 0.71 1971 - 1973 4 130.29 153.62 -12.32 1.42 1760 - 1974 4 132.46 154.33 -12.32 1.42 1973 - 1975 4 134.2 155.93 -13 1.42 1974 - 1976 4 135.28 157.35 -13 1.42 1975 - 1977 4 136.8 158.77 -13 1.42 1976 - 1978 4 138.97 160.01 -14.96 1.42 1977 - 1979 4 140.93 160.55 -14.96 1.42 1978 - 1980 4 143.34 162.18 -14.96 1.245 1979 - 1981 4 144.42 163.42 -14.96 1.245 1980 - 1982 4 146.38 165.02 -17.78 1.245 1981 - 1983 4 148.77 166.97 -17.78 1.245 1982 - 1984 4 150.94 168.75 -20.4 1.245 1983 - 1985 4 153.54 170.7 -20.4 1.245 1984 - 1986 4 155.5 171.95 -20.4 1.245 1985 - 1987 4 157.67 173.37 -20.4 1.245 1986 - 1988 4 159.84 174.79 -22.43 1.245 1987 - 1989 4 161.09 176.91 -22.43 1.245 1988 - 1990 4 162.61 179.04 -22.43 1.245 1989 - 1991 4 163.91 181.71 -23.53 1.245 1990 - 1992 4 165.86 184.02 -23.53 1.245 1991 - 1993 4 167.6 186.32 -25.49 1.245 1992 - 1994 4 168.47 187.57 -25.49 1.245 1993 - 1995 4 169.56 189.17 -26.96 1.245 1994 - 1996 4 170.42 190.77 -26.96 1.245 1995 - 1997 4 170.86 192.54 -26.96 1.245 1996 - 1998 4 171.29 193.25 -26.96 1.245 1997 - 1999 4 171.69 196.41 -29.56 1.065 1998 - 2000 4 172.35 200.67 -30.86 0.89 1999 - 2001 4 173 201.91 -32.81 0.89 2000 - 2002 4 172.78 203.16 -30.36 0.71 2001 - 2003 4 173.21 204.56 -33.54 0.71 2002 - 2004 4 173.87 206.51 -33.54 0.71 2003 - 2005 4 173.61 207.99 -36.85 0.71 2004 - 2006 4 174.48 210.47 -39.62 0.71 2005 - 2007 4 176.21 212.6 -41.46 0.71 2006 - 2008 4 176.43 214.2 -44.14 0.71 2007 - 2009 4 178.17 216.34 -44.14 0.71 2008 - 2010 4 179.69 218.64 -44.53 0.71 2009 - 2011 4 181.21 220.95 -46.7 0.71 2010 - 2012 4 184.28 224.14 -48.52 0.71 2011 - 2013 4 186.02 226.09 -50.26 0.71 2012 - 2014 4 187.76 228.76 -50.26 0.71 2013 - 2015 4 189.93 231.07 -49.74 0.71 2014 - 2016 4 191.02 232.84 -49.74 0.71 2015 - 2017 4 192.95 234.8 -53.27 0.71 2016 - 2018 4 193.39 236.4 -52.7 0.71 2017 - 2019 4 193.88 238.3 -56.21 0.71 2018 - 2020 4 195.61 240.25 -56.21 0.71 2019 - 2021 4 196.7 242.03 -55.74 0.71 2020 - 2022 4 198.44 244.16 -55.74 0.71 2021 - 2023 4 200.39 246.47 -60.65 0.71 2022 - 2024 4 202.13 249.13 -60.65 0.71 2023 - 2025 4 203.65 250.55 -62.71 0.71 2024 - 2026 4 204.28 251.96 -63.17 0.71 2025 - 2027 4 205.36 255.16 -63.17 0.71 2026 - 2028 4 205.8 257.29 -65.22 0.71 2027 - 2029 4 206.67 259.78 -68.57 0.71 2028 - 2030 4 207.32 262.09 -68.57 0.71 2029 - 2031 4 208.62 264.4 -70.42 0.71 2030 - 2032 4 208.84 266.89 -70.42 0.71 2031 - 2033 4 209.73 269.1 -70.22 0.71 2032 - 2034 4 210.81 270.7 -73.11 0.71 2033 - 2035 4 211.9 272.83 -73.11 0.71 2034 - 2036 4 213.85 274.96 -76.22 0.71 2035 - 2037 4 215.16 277.45 -76.22 0.71 2036 - 2038 4 216.89 280.47 -79.48 0.71 2037 - 2039 4 218.63 283.31 -79.48 0.71 2038 - 2040 4 220.38 284.94 -80.12 0.71 2039 - 2041 4 221.25 286.54 -82.98 0.71 2040 - 2042 4 224.07 289.92 -82.98 0.71 2041 - 2043 4 222.99 292.22 -84.88 0.71 2042 - 2044 4 224.29 294.89 -84.88 0.71 2043 - 2045 4 226.03 297.2 -87.38 0.71 2044 - 2046 4 227.33 299.15 -87.38 0.71 2045 - 2047 4 228.76 301.1 -89.58 0.71 2046 - 2048 4 230.72 303.76 -89.58 0.71 2047 - 2049 4 232.24 305.72 -88.9 0.71 2048 - 2050 4 233.32 307.14 -91.44 0.71 2049 - 2051 4 234.63 308.74 -91.44 0.71 2050 - 2052 4 235.49 311.04 -92.26 0.71 2051 - 2053 4 237.23 312.82 -92.26 0.71 2052 - 2054 4 239.4 314.42 -94.47 0.71 2053 - 2055 4 241.18 316.12 -94.47 0.71 2054 - 2056 4 242.05 317.72 -94.5 0.71 2055 - 2057 4 243.57 318.78 -94.5 0.71 2056 - 2058 4 245.74 320.03 -94.5 0.71 2057 - 2059 4 247.69 321.45 -94.5 0.71 2058 - 2060 4 249.18 322.23 -94.5 0.71 2059 - 2061 4 249.83 323.3 -94.5 0.71 2060 - 2062 4 250.48 324.18 -94.5 0.89 2061 - 2063 4 250.24 325.41 -92.05 0.71 2062 - 2064 4 251.11 327.16 -92.05 0.71 2063 - 2065 4 252.41 329.12 -92.05 0.71 2064 - 2066 4 254.15 330.72 -91.42 0.71 2065 - 2067 4 255.02 332.67 -88.13 0.71 2066 - 2068 4 256.76 335.69 -88.13 0.71 2067 - 2069 4 258.71 338.89 -88.13 0.71 2068 - 2070 4 260.16 341.07 -86.93 0.71 2069 - 2071 4 261.25 343.03 -86.93 0.71 2070 - 2072 4 261.68 344.8 -86.93 0.71 2071 - 2073 4 262.77 346.94 -89.26 0.71 2072 - 2074 4 265.37 349.6 -89.26 0.71 2073 - 2075 4 265.81 351.91 -88.25 0.71 2074 - 2076 4 267.55 354.93 -88.25 0.71 2075 - 2077 4 269.41 357.07 -87.89 0.71 2076 - 2078 4 270.5 359.56 -90.03 0.71 2077 - 2079 4 272.24 361.16 -90.03 0.71 2078 - 2080 4 273.97 362.76 -91.48 0.71 2079 - 2081 4 275.49 364.71 -91.48 0.71 2080 - 2082 4 277.88 366.13 -91.48 0.71 2081 - 2083 4 280.92 367.73 -91.48 0.71 2082 - 2084 4 282.44 370.04 -93.86 0.71 2083 - 2085 4 283.75 372.07 -93.86 0.71 2084 - 2086 4 286.13 374.38 -93.86 0.71 2085 - 2087 4 288.96 376.52 -93.86 0.71 2086 - 2088 4 290.48 378.47 -93.86 0.71 2087 - 2089 4 291.78 380.25 -95.68 0.71 2088 - 2090 4 294.17 383.62 -95.68 0.71 2089 - 2091 4 296.56 385.75 -95.68 0.71 2090 - 2092 4 297.95 387.52 -93.94 0.71 2091 - 2093 4 299.03 389.65 -93.94 0.71 2092 - 2094 4 300.33 391.78 -93.94 0.71 2093 - 2095 4 300.77 394.45 -91.73 0.71 2094 - 2096 4 301.2 397.29 -91.73 0.71 2095 - 2097 4 301.42 400.31 -91.73 0.71 2096 - 2098 4 300.81 403.01 -91.73 0.71 2097 - 2099 4 300.63 404.39 -91.73 0.71 2098 - 2100 4 299.32 406.87 -91.73 0.71 2099 - 2101 4 299.54 408.63 -87.99 0.71 2100 - 2102 4 299.76 411.47 -87.99 0.71 2101 - 2103 4 299.11 413.6 -84.5 0.71 2102 - 2104 4 299.32 416.27 -84.5 0.71 2103 - 2105 4 299.97 418.93 -84.5 0.71 2104 - 2106 4 298.96 421.78 -84.5 0.71 2105 - 2107 4 298.96 424.09 -84.14 0.71 2106 - 2108 4 299.39 426.23 -84.14 0.71 2107 - 2109 4 300.48 428.89 -84.14 0.71 2108 - 2110 4 301.35 433.33 -80.07 0.71 2109 - 2111 4 302.75 436.18 -80.07 0.71 2110 - 2112 4 304.7 439.92 -80.07 0.71 2111 - 2113 4 306.44 442.4 -80.07 0.71 2112 - 2114 4 307.31 444.71 -77.86 0.71 2113 - 2115 4 308.17 446.67 -77.86 0.71 2114 - 2116 4 309.48 449.86 -74.91 0.71 2115 - 2117 4 310.75 452.41 -74.91 0.71 2116 - 2118 4 312.48 454.89 -74.91 0.71 2117 - 2119 4 314.22 457.03 -74.91 0.71 2118 - 2120 4 315.31 459.34 -73.53 0.71 2119 - 2121 4 316.17 461.11 -73.53 0.71 2120 - 2122 4 317.48 463.78 -73.53 0.71 2121 - 2123 4 318.56 466.97 -75.58 0.71 2122 - 2124 4 319.51 468.92 -75.58 0.71 2123 - 2125 4 319.95 470.87 -74.23 0.71 2124 - 2126 4 321.03 473 -74.23 0.71 2125 - 2127 4 320.38 475.67 -71.43 0.71 2126 - 2128 4 320.16 477.62 -71.43 0.71 2127 - 2129 4 320.81 479.93 -71.43 0.71 2128 - 2130 4 319.95 482.78 -71.67 0.71 2129 - 2131 4 319.61 484.54 -69.26 0.71 2130 - 2132 4 319.83 486.67 -67.86 0.71 2131 - 2133 4 319.83 488.8 -70.26 0.71 2132 - 2134 4 319.83 490.94 -70.26 0.71 2133 - 2135 4 320.26 493.6 -70.57 0.71 2134 - 2136 4 320.26 495.91 -70.57 0.71 2135 - 2137 4 318.96 497.69 -67.66 0.71 2136 - 2138 4 317.76 499.54 -67.66 0.71 2137 - 2139 4 316.67 502.74 -67.66 0.71 2138 - 2140 4 315.8 505.23 -67.66 0.71 2139 - 2141 4 316.28 507.32 -67.66 0.71 2140 - 2142 4 316.28 509.98 -67.66 0.71 2141 - 2143 4 316.49 512.83 -67.66 0.71 2142 - 2144 4 316.66 514.16 -67.66 0.71 2143 - 2145 4 252.41 324.14 -94.5 0.71 2062 - 2146 4 255.89 324.12 -96.7 0.71 2145 - 2147 4 260.23 324.65 -96.7 0.71 2146 - 2148 4 262.84 325.36 -96.7 0.71 2147 - 2149 4 265.01 326.25 -101.5 0.71 2148 - 2150 4 267.83 327.14 -101.63 0.71 2149 - 2151 4 271.31 327.85 -103.7 0.71 2150 - 2152 4 274.32 330.05 -106.5 0.71 2151 - 2153 4 277.57 331.12 -106.5 0.71 2152 - 2154 4 279.51 332.01 -106.5 0.71 2153 - 2155 4 281.85 332.65 -106.5 0.71 2154 - 2156 4 285.74 333.01 -106.5 0.71 2155 - 2157 4 290.74 333.72 -106.5 0.71 2156 - 2158 4 293.56 335.14 -106.5 0.71 2157 - 2159 4 294.43 336.38 -106.5 0.71 2158 - 2160 4 172.38 195.39 -25.17 1.065 1998 - 2161 4 173.03 196.98 -25.17 1.065 2160 - 2162 4 173.46 198.58 -25.17 1.065 2161 - 2163 4 174.77 200.54 -21.96 0.89 2162 - 2164 4 175.2 202.49 -21.96 0.89 2163 - 2165 4 176.07 204.45 -21.96 0.89 2164 - 2166 4 177.74 206.48 -20.91 0.89 2165 - 2167 4 178.61 208.43 -20.91 0.89 2166 - 2168 4 181 210.92 -18.71 0.89 2167 - 2169 4 180.35 212.69 -18.71 0.89 2168 - 2170 4 180.78 214.47 -17.41 0.89 2169 - 2171 4 182.09 216.6 -17.41 0.89 2170 - 2172 4 183.61 218.2 -16.01 0.89 2171 - 2173 4 185.56 219.98 -16.01 0.89 2172 - 2174 4 187.28 221.04 -17.66 0.89 2173 - 2175 4 189.67 222.11 -17.66 0.89 2174 - 2176 4 191.63 223.18 -17.66 0.89 2175 - 2177 4 193.58 224.6 -17.66 0.89 2176 - 2178 4 195.32 225.49 -17.66 0.89 2177 - 2179 4 196.84 227.26 -17.66 0.89 2178 - 2180 4 198.14 228.51 -18.38 0.89 2179 - 2181 4 200.31 230.28 -18.38 0.89 2180 - 2182 4 202.05 231.7 -18.38 0.89 2181 - 2183 4 203.57 233.12 -16.53 0.89 2182 - 2184 4 205.31 234.55 -18.31 0.89 2183 - 2185 4 206.7 236 -18.31 0.89 2184 - 2186 4 208.87 238.13 -17.34 0.89 2185 - 2187 4 210.83 240.44 -19.08 0.89 2186 - 2188 4 212.56 242.39 -19.08 0.89 2187 - 2189 4 214.08 244.35 -19.08 0.89 2188 - 2190 4 215.82 245.77 -17.5 0.89 2189 - 2191 4 217.34 247.19 -19.88 0.89 2190 - 2192 4 218.86 248.61 -19.88 0.89 2191 - 2193 4 220.6 250.03 -20.38 0.71 2192 - 2194 4 222.1 252.31 -20.38 0.89 2193 - 2195 4 222.97 253.91 -20.38 0.89 2194 - 2196 4 224.27 256.04 -20.38 0.89 2195 - 2197 4 224.92 257.64 -20.38 0.89 2196 - 2198 4 225.57 259.95 -22.62 0.89 2197 - 2199 4 226.44 261.9 -22.62 0.89 2198 - 2200 4 226.88 264.04 -22.62 0.89 2199 - 2201 4 227.96 266.34 -22.62 0.89 2200 - 2202 4 229.33 269.27 -22.62 0.89 2201 - 2203 4 229.77 270.69 -22.22 0.89 2202 - 2204 4 230.42 271.75 -22.22 1.065 2203 - 2205 4 230.85 272.64 -22.22 1.065 2204 - 2206 4 230.85 273 -22.22 1.245 2205 - 2207 4 230.2 274.24 -22.22 0.89 2206 - 2208 4 230.2 275.48 -24.66 0.89 2207 - 2209 4 229.55 277.44 -27.06 0.89 2208 - 2210 4 228.9 279.04 -27.06 0.89 2209 - 2211 4 228.68 280.46 -26.86 0.71 2210 - 2212 4 228.68 282.59 -26.86 0.71 2211 - 2213 4 227.16 284.37 -26.86 0.71 2212 - 2214 4 226.51 286.68 -28.33 0.71 2213 - 2215 4 225.86 288.45 -28.37 0.71 2214 - 2216 4 225.43 289.7 -28.37 0.71 2215 - 2217 4 224.99 291.83 -28.37 0.71 2216 - 2218 4 224.77 294.31 -28.37 0.71 2217 - 2219 4 224.56 295.91 -29.94 0.71 2218 - 2220 4 223.91 298.93 -29.94 0.71 2219 - 2221 4 223.25 301.06 -31.99 0.71 2220 - 2222 4 223.03 303.27 -33.33 0.71 2221 - 2223 4 222.16 306.12 -33.33 0.71 2222 - 2224 4 221.94 309.14 -35.13 0.71 2223 - 2225 4 222.16 312.51 -35.13 0.71 2224 - 2226 4 221.51 314.64 -36.4 0.71 2225 - 2227 4 221.29 316.78 -35.34 0.71 2226 - 2228 4 221.03 318.52 -35.34 0.71 2227 - 2229 4 221.03 320.65 -37.2 0.71 2228 - 2230 4 221.24 323.32 -37.2 0.71 2229 - 2231 4 220.81 326.51 -37.2 0.71 2230 - 2232 4 220.59 329.89 -37.2 0.71 2231 - 2233 4 220.81 333.09 -37.3 0.71 2232 - 2234 4 221.06 336.16 -37.3 0.71 2233 - 2235 4 220.84 337.58 -38.95 0.71 2234 - 2236 4 221.71 339.89 -38.95 0.71 2235 - 2237 4 222.36 342.38 -37.04 0.71 2236 - 2238 4 223.01 343.8 -37.04 0.71 2237 - 2239 4 223.67 345.76 -37.04 0.71 2238 - 2240 4 224.1 348.42 -37.04 0.71 2239 - 2241 4 224.91 350.14 -37.04 0.71 2240 - 2242 4 224.91 352.27 -37.04 0.71 2241 - 2243 4 225.78 355.12 -35.97 0.71 2242 - 2244 4 226.87 357.42 -37.05 0.71 2243 - 2245 4 228.39 360.27 -37.05 0.71 2244 - 2246 4 229.69 362.75 -37.05 0.71 2245 - 2247 4 230.53 365.23 -37.05 0.71 2246 - 2248 4 232.7 368.6 -37.05 0.71 2247 - 2249 4 234.87 370.18 -37.82 0.71 2248 - 2250 4 236.83 371.96 -37.82 0.71 2249 - 2251 4 239 374.09 -37.82 0.71 2250 - 2252 4 240.52 376.58 -37.82 0.71 2251 - 2253 4 242.26 378.53 -38.21 0.71 2252 - 2254 4 244.18 379.96 -38.21 0.71 2253 - 2255 4 245.92 381.38 -38.21 0.71 2254 - 2256 4 248.31 382.81 -38.21 0.71 2255 - 2257 4 249.17 384.05 -37.32 0.71 2256 - 2258 4 251.56 385.83 -36.91 0.71 2257 - 2259 4 253.95 387.25 -36.91 0.71 2258 - 2260 4 256.12 388.67 -39.64 0.71 2259 - 2261 4 258.51 390.09 -39.64 0.71 2260 - 2262 4 261.12 392.22 -39.64 0.71 2261 - 2263 4 262.35 393.74 -39.64 0.71 2262 - 2264 4 264.3 394.98 -41.7 0.71 2263 - 2265 4 266.04 396.23 -40.45 0.71 2264 - 2266 4 268.21 398.18 -40.45 0.71 2265 - 2267 4 269.51 399.6 -42.02 0.71 2266 - 2268 4 271.03 400.85 -45.7 0.71 2267 - 2269 4 273.2 402.62 -45.7 0.71 2268 - 2270 4 275.38 404.93 -47.35 0.71 2269 - 2271 4 277.33 406 -47.35 0.71 2270 - 2272 4 279.28 407.24 -47.12 0.71 2271 - 2273 4 281.87 408.21 -47.12 0.71 2272 - 2274 4 283.39 409.45 -47.3 0.71 2273 - 2275 4 285.12 411.05 -48.96 0.71 2274 - 2276 4 285.99 413 -51.37 0.71 2275 - 2277 4 287.29 415.14 -51.37 0.71 2276 - 2278 4 288.82 418.16 -51.37 0.71 2277 - 2279 4 290.34 420.11 -50.91 0.71 2278 - 2280 4 292.07 422.42 -50.91 0.71 2279 - 2281 4 292.93 424.1 -52.87 0.71 2280 - 2282 4 294.23 425.7 -52.86 0.71 2281 - 2283 4 294.91 427.52 -52.86 0.71 2282 - 2284 4 296.21 430.01 -52.86 0.71 2283 - 2285 4 296.21 432.14 -55.55 0.71 2284 - 2286 4 297.95 434.09 -55.55 0.71 2285 - 2287 4 299.04 436.05 -55.6 0.71 2286 - 2288 4 300.12 438 -55.6 0.71 2287 - 2289 4 301.43 439.42 -58.14 0.71 2288 - 2290 4 302.55 440.23 -58.14 0.535 2289 - 2291 4 304.07 442.9 -58.14 0.535 2290 - 2292 4 306.02 444.67 -58.14 0.535 2291 - 2293 4 306.45 446.98 -58.14 0.535 2292 - 2294 4 307.11 448.76 -58.14 0.535 2293 - 2295 4 308.19 450.18 -58.14 0.535 2294 - 2296 4 232.81 274.06 -24.65 0.89 2206 - 2297 4 234.33 275.13 -24.22 0.89 2296 - 2298 4 235.63 276.37 -24.22 0.89 2297 - 2299 4 236.5 277.79 -26.18 0.89 2298 - 2300 4 237.59 279.04 -24.21 0.89 2299 - 2301 4 238.89 280.64 -24.21 0.89 2300 - 2302 4 239.98 281.7 -24.77 0.89 2301 - 2303 4 240.45 283.2 -24.77 0.89 2302 - 2304 4 241.27 284.44 -24.77 0.89 2303 - 2305 4 241.27 285.87 -24.77 0.89 2304 - 2306 4 242.13 287.29 -24.77 0.89 2305 - 2307 4 242.35 288 -24.77 0.89 2306 - 2308 4 243.46 291.06 -21.93 0.89 2307 - 2309 4 244.33 292.3 -23.02 0.71 2308 - 2310 4 245.85 293.54 -21.62 0.71 2309 - 2311 4 247.15 295.5 -19.23 0.71 2310 - 2312 4 248.46 297.1 -19.23 0.71 2311 - 2313 4 249.98 298.87 -19.23 0.71 2312 - 2314 4 251.71 300.83 -19.23 0.71 2313 - 2315 4 253.02 302.78 -16.84 0.71 2314 - 2316 4 255.16 304.41 -17.58 0.71 2315 - 2317 4 256.25 306.01 -17.58 0.71 2316 - 2318 4 257.55 307.43 -15.7 0.71 2317 - 2319 4 258.42 309.03 -16.48 0.71 2318 - 2320 4 259.94 310.28 -13 0.71 2319 - 2321 4 261.68 311.7 -13 0.71 2320 - 2322 4 264.07 313.83 -13 0.71 2321 - 2323 4 266.02 314.69 -11.39 0.71 2322 - 2324 4 267.76 316.12 -11.39 0.71 2323 - 2325 4 269.5 316.83 -11.39 0.71 2324 - 2326 4 270.91 317.52 -9.86 0.71 2325 - 2327 4 273.52 318.95 -9.86 0.71 2326 - 2328 4 274.61 320.19 -10.13 0.71 2327 - 2329 4 276.13 321.08 -8.43 0.71 2328 - 2330 4 277.21 323.21 -7.66 0.71 2329 - 2331 4 277.65 325.87 -7.66 0.71 2330 - 2332 4 278.95 328.01 -7.66 0.71 2331 - 2333 4 281.12 329.78 -9.3 0.71 2332 - 2334 4 282.86 331.2 -9.3 0.71 2333 - 2335 4 284.51 332.46 -9.3 0.71 2334 - 2336 4 285.16 334.23 -7.48 0.71 2335 - 2337 4 286.68 335.48 -7.48 0.71 2336 - 2338 4 287.77 337.08 -7.48 0.71 2337 - 2339 4 289.07 339.56 -6.02 0.71 2338 - 2340 4 290.81 341.52 -7.11 0.71 2339 - 2341 4 292.77 343.12 -4.54 0.71 2340 - 2342 4 295.37 345.43 -4.54 0.71 2341 - 2343 4 297.33 346.84 -3.45 0.71 2342 - 2344 4 300.37 348.61 -2.7 0.71 2343 - 2345 4 302.98 350.57 -2.7 0.71 2344 - 2346 4 304.71 352.16 -0.7 0.71 2345 - 2347 4 306.89 355.01 -0.7 0.71 2346 - 2348 4 308.19 356.96 -0.7 0.71 2347 - 2349 4 309.93 358.2 -0.06 0.71 2348 - 2350 4 311.66 359.98 -2.46 0.71 2349 - 2351 4 313.13 361.97 -2.46 0.71 2350 - 2352 4 314.65 364.1 -2.46 0.71 2351 - 2353 4 315.95 366.05 -0.24 0.71 2352 - 2354 4 318.34 366.94 -0.24 0.71 2353 - 2355 4 320.95 369.07 -0.79 0.71 2354 - 2356 4 322.9 371.21 -0.79 0.71 2355 - 2357 4 324.21 373.34 -1.72 0.71 2356 - 2358 4 324.86 374.94 -3.03 0.71 2357 - 2359 4 325.64 376.44 -0.34 0.71 2358 - 2360 4 326.95 378.21 -0.34 0.71 2359 - 2361 4 327.38 380.7 2.91 0.71 2360 - 2362 4 327.82 383.01 2.91 0.71 2361 - 2363 4 327.38 385.14 3.42 0.71 2362 - 2364 4 326.3 386.74 3.42 0.71 2363 - 2365 4 326.3 388.52 5.5 0.71 2364 - 2366 4 324.34 391.18 4.82 0.71 2365 - 2367 4 322.86 394.94 6.1 0.71 2366 - 2368 4 321.55 397.79 6.1 0.71 2367 - 2369 4 321.34 400.27 9.19 0.71 2368 - 2370 4 321.34 402.41 9.19 0.71 2369 - 2371 4 320.68 404.54 9.31 0.71 2370 - 2372 4 320.9 407.02 9.31 0.71 2371 - 2373 4 320.11 408.84 9.31 0.71 2372 - 2374 4 319.24 410.61 11.2 0.71 2373 - 2375 4 318.8 412.57 11.2 0.71 2374 - 2376 4 318.59 414.7 13.74 0.71 2375 - 2377 4 318.59 417.01 13.74 0.71 2376 - 2378 4 318.37 420.56 16.29 0.71 2377 - 2379 4 317.94 423.76 17.03 0.71 2378 - 2380 4 317.54 426.3 18.78 0.71 2379 - 2381 4 317.54 428.79 17.7 0.71 2380 - 2382 4 317.11 432.16 18.41 0.71 2381 - 2383 4 316.67 435.01 18.41 0.71 2382 - 2384 4 316.24 436.78 20.42 0.71 2383 - 2385 4 316.24 439.27 23.22 0.71 2384 - 2386 4 315.74 441.9 23.22 0.71 2385 - 2387 4 315.52 444.03 23.22 0.71 2386 - 2388 4 316.39 446.16 23.31 0.71 2387 - 2389 4 317.7 448.83 25.14 0.71 2388 - 2390 4 317.7 452.2 25.14 0.71 2389 - 2391 4 318.56 454.34 27.66 0.71 2390 - 2392 4 319.88 455.86 27.66 0.71 2391 - 2393 4 319.88 457.99 30.31 0.71 2392 - 2394 4 320.21 459.64 30.31 0.71 2393 - 2395 4 320.86 462.3 33.11 0.535 2394 - 2396 4 322.16 464.79 33.11 0.535 2395 - 2397 4 323.68 466.92 33.11 0.535 2396 - 2398 4 324.55 469.41 33.11 0.535 2397 - 2399 4 325.42 471.72 33.11 0.535 2398 - 2400 4 324.77 473.14 35.75 0.71 2399 - 2401 4 325.66 475.19 35.75 0.71 2400 - 2402 4 243.87 288.89 -24.82 0.71 2307 - 2403 4 246.04 290.84 -24.82 0.71 2402 - 2404 4 247.56 292.62 -27.58 0.71 2403 - 2405 4 249.52 294.93 -27.58 0.71 2404 - 2406 4 251.91 296.35 -27.14 0.71 2405 - 2407 4 253.21 297.41 -27.14 0.71 2406 - 2408 4 254.73 298.66 -24.03 0.71 2407 - 2409 4 256.25 299.9 -24.03 0.71 2408 - 2410 4 256.9 301.32 -24.03 0.71 2409 - 2411 4 258.21 302.39 -24.03 0.71 2410 - 2412 4 259.29 303.45 -22.58 0.71 2411 - 2413 4 260.59 305.23 -24.06 0.71 2412 - 2414 4 261.68 307.01 -22.05 0.71 2413 - 2415 4 262.98 308.6 -19.55 0.71 2414 - 2416 4 265.15 310.38 -19.55 0.71 2415 - 2417 4 268.02 311.66 -19.55 0.71 2416 - 2418 4 270.61 311.48 -19.55 0.71 2417 - 2419 4 272.34 311.12 -21.46 0.71 2418 - 2420 4 273.43 311.48 -24.34 0.71 2419 - 2421 4 274.73 313.43 -24.9 0.71 2420 - 2422 4 276.47 315.03 -23.42 0.71 2421 - 2423 4 279.07 316.63 -25.15 0.71 2422 - 2424 4 281.9 319.12 -25.15 0.71 2423 - 2425 4 285.59 321.61 -22.04 0.71 2424 - 2426 4 287.55 323.04 -19.46 0.71 2425 - 2427 4 289.5 325.17 -19.46 0.71 2426 - 2428 4 290.37 326.23 -20.76 0.71 2427 - 2429 4 291.89 328.19 -20.76 0.71 2428 - 2430 4 293.19 329.61 -20.76 0.71 2429 - 2431 4 295.15 331.74 -19.03 0.71 2430 - 2432 4 297.1 333.34 -17.14 0.71 2431 - 2433 4 300.58 335.65 -18 0.71 2432 - 2434 4 303.4 336.54 -18 0.71 2433 - 2435 4 304.44 338.06 -15.97 0.71 2434 - 2436 4 306.83 339.12 -14.74 0.71 2435 - 2437 4 309.44 340.19 -14.29 0.71 2436 - 2438 4 310.96 340.72 -13.74 0.71 2437 - 2439 4 313.78 341.97 -12.42 0.71 2438 - 2440 4 316.61 343.03 -12.42 0.71 2439 - 2441 4 318.56 343.56 -9.78 0.71 2440 - 2442 4 321.6 344.1 -9.78 0.71 2441 - 2443 4 323.11 345.44 -9.78 0.71 2442 - 2444 4 326.15 346.15 -9.78 0.71 2443 - 2445 4 328.31 347.03 -5.91 0.71 2444 - 2446 4 331.35 347.57 -5.91 0.71 2445 - 2447 4 333.95 348.81 -5.91 0.71 2446 - 2448 4 336.13 349.88 -5.91 0.71 2447 - 2449 4 338.52 350.23 -6.59 0.71 2448 - 2450 4 340.9 352.01 -3.68 0.71 2449 - 2451 4 342.5 353.26 -3.56 0.71 2450 - 2452 4 345.32 354.86 -3.56 0.71 2451 - 2453 4 347.49 354.86 -4.33 0.71 2452 - 2454 4 350.31 356.63 -2.45 0.71 2453 - 2455 4 351.83 359.12 -2.45 0.71 2454 - 2456 4 353.14 361.43 -2.17 0.71 2455 - 2457 4 353.35 363.38 -2.17 0.71 2456 - 2458 4 353.79 365.16 -1.03 0.71 2457 - 2459 4 354.22 366.94 2.1 0.71 2458 - 2460 4 353.98 368.1 2.1 0.71 2459 - 2461 4 354.19 369.7 2.34 0.71 2460 - 2462 4 355.93 372.01 2.34 0.71 2461 - 2463 4 357.45 374.32 3.12 0.71 2462 - 2464 4 358.75 376.1 5.85 0.71 2463 - 2465 4 360.49 378.23 9.16 0.71 2464 - 2466 4 362.01 380.89 11.15 0.71 2465 - 2467 4 363.1 383.02 11.15 0.71 2466 - 2468 4 365.58 386.39 10.92 0.71 2467 - 2469 4 367.1 388.88 10.92 0.71 2468 - 2470 4 367.97 391.54 10.8 0.71 2469 - 2471 4 369.49 393.14 10.8 0.71 2470 - 2472 4 370.91 395.52 12.87 0.71 2471 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml b/examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml deleted file mode 100644 index dcae7ae..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/cells/CA1.morph.xml +++ /dev/null @@ -1,12535 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc deleted file mode 100644 index 6ca8c78..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc +++ /dev/null @@ -1,6764 +0,0 @@ -# Original file DHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. -# Irregularities and fixes documented in DHC-neuron.swc.std. See StdSwc1.31.doc for more information. -# -# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\DHC-neuron.asc -#The original file has a single soma contour that is averaged into 3 soma points -# NEUROMANTIC V1.6.3 (2/28/2013 12:43:57 PM): Saved to DHC-neuron.swc -1 1 0.0 0.0 0.0 8.5214 -1 -2 1 -0.05 -8.47 -0.87 8.5214 1 -3 1 0.05 8.47 0.87 8.5214 1 -4 3 4.36 -6.98 -4.24 2.275 1 -5 3 5.55 -8.63 -4.38 1.625 4 -6 3 6.29 -9.84 -4.79 1.3 5 -7 3 7.21 -11.46 -3.28 1.085 6 -8 3 7.88 -11.55 -3.27 1.085 7 -9 3 8.14 -12.19 -3.18 0.435 8 -10 3 8.15 -12.41 -3.2 0.435 9 -11 3 8.2 -12.48 -4.57 0.435 10 -12 3 8.45 -12.85 -5.05 0.435 11 -13 3 8.5 -13.21 -5.84 0.435 12 -14 3 8.52 -13.12 -6.74 0.435 13 -15 3 7.83 -13.33 -5.11 0.435 14 -16 3 7.81 -13.11 -5.09 0.435 15 -17 3 8.03 -13.11 -5.01 0.76 16 -18 3 8.07 -13.74 -5.07 0.975 17 -19 3 8.38 -15.02 -5.2 0.975 18 -20 3 8.84 -15.53 -5.24 0.975 19 -21 3 9.53 -16.4 -4.87 0.435 20 -22 3 10.63 -16.55 -4.86 0.435 21 -23 3 11.07 -16.51 -4.99 0.435 22 -24 3 11.52 -16.63 -5.59 0.435 23 -25 3 12.19 -16.76 -5.97 0.435 24 -26 3 12.66 -17.12 -6.45 0.435 25 -27 3 13.12 -17.29 -6.68 0.435 26 -28 3 13.14 -17.22 -7.35 0.435 27 -29 3 13.74 -17.39 -5.39 0.435 28 -30 3 14.63 -17.69 -6.08 0.435 29 -31 3 15.99 -18.22 -6.4 0.435 30 -32 3 17.12 -18.77 -6.73 0.435 31 -33 3 18.71 -19.93 -7.12 0.435 32 -34 3 20.11 -21.34 -7.31 0.435 33 -35 3 22.14 -22.5 -7.38 0.435 34 -36 3 23.28 -23.3 -7.44 0.435 35 -37 3 24.85 -24.28 -7.5 0.435 36 -38 3 25.78 -25.09 -7.57 0.435 37 -39 3 26.27 -25.9 -7.71 0.435 38 -40 3 27.19 -26.95 -7.49 0.435 39 -41 3 28.59 -28.63 -7.33 0.435 40 -42 3 29.96 -29.62 -7.33 0.435 41 -43 3 31.09 -30.41 -7.39 0.435 42 -44 3 33.97 -31.32 -7.41 0.435 43 -45 3 35.74 -31.85 -7.43 0.435 44 -46 3 36.9 -33.07 -7.44 0.435 45 -47 3 38.05 -34.08 -7.52 0.435 46 -48 3 39.23 -35.52 -7.64 0.435 47 -49 3 39.91 -36.13 -7.62 0.435 48 -50 3 40.4 -36.75 -7.67 0.435 49 -51 3 41.32 -37.76 -7.76 0.435 50 -52 3 42.03 -38.57 -7.89 0.435 51 -53 3 43.66 -40.19 -8.02 0.435 52 -54 3 44.56 -41.0 -8.08 0.435 53 -55 3 46.4 -42.39 -8.18 0.435 54 -56 3 47.96 -43.15 -8.23 0.435 55 -57 3 49.11 -44.17 -8.3 0.435 56 -58 3 50.04 -45.18 -8.39 0.435 57 -59 3 50.3 -45.82 -8.45 0.435 58 -60 3 50.6 -47.08 -8.57 0.435 59 -61 3 51.33 -48.33 -8.68 0.435 60 -62 3 51.57 -48.74 -8.72 0.435 61 -63 3 51.64 -49.82 -8.83 0.435 62 -64 3 51.88 -50.23 -8.87 0.435 63 -65 3 52.6 -50.99 -9.46 0.435 64 -66 3 53.31 -51.52 -10.25 0.435 65 -67 3 54.03 -52.51 -10.71 0.435 66 -68 3 54.98 -53.25 -11.45 0.435 67 -69 3 55.45 -53.84 -11.72 0.435 68 -70 3 55.93 -54.45 -11.92 0.435 69 -71 3 56.4 -54.8 -12.4 0.435 70 -72 3 56.85 -55.2 -12.43 0.435 71 -73 3 57.55 -55.81 -12.48 0.435 72 -74 3 58.34 -57.88 -12.9 0.435 73 -75 3 60.6 -58.97 -13.57 0.435 74 -76 3 61.73 -59.75 -13.69 0.435 75 -77 3 62.66 -60.25 -14.7 0.435 76 -78 3 63.34 -60.38 -15.15 0.435 77 -79 3 64.47 -61.16 -15.28 0.435 78 -80 3 64.93 -61.28 -15.96 0.435 79 -81 3 65.87 -62.29 -16.12 0.435 80 -82 3 66.34 -62.63 -16.67 0.435 81 -83 3 68.15 -63.33 -17.3 0.435 82 -84 3 69.71 -63.8 -18.06 0.435 83 -85 3 70.82 -63.89 -18.65 0.435 84 -86 3 71.91 -63.81 -18.7 0.435 85 -87 3 72.57 -64.2 -18.72 0.435 86 -88 3 74.39 -65.36 -19.02 0.435 87 -89 3 75.52 -65.91 -19.2 0.435 88 -90 3 76.46 -66.92 -19.43 0.435 89 -91 3 77.38 -67.42 -20.37 0.435 90 -92 3 78.31 -67.94 -21.16 0.435 91 -93 3 79.92 -69.31 -21.56 0.435 92 -94 3 80.83 -69.62 -22.25 0.435 93 -95 3 81.76 -70.4 -22.45 0.435 94 -96 3 82.22 -70.48 -23.51 0.435 95 -97 3 83.16 -71.24 -24.02 0.435 96 -98 3 84.75 -72.15 -24.76 0.435 97 -99 3 85.43 -72.52 -25.0 0.435 98 -100 3 85.9 -72.64 -25.69 0.435 99 -101 3 86.57 -72.79 -25.91 0.435 100 -102 3 87.47 -73.12 -26.37 0.435 101 -103 3 88.61 -73.89 -26.65 0.435 102 -104 3 89.93 -74.21 -26.95 0.435 103 -105 3 93.09 -75.67 -27.63 0.435 104 -106 3 94.85 -75.94 -28.15 0.435 105 -107 3 96.18 -76.28 -28.22 0.435 106 -108 3 97.7 -76.16 -28.41 0.435 107 -109 3 100.33 -76.4 -28.67 0.435 108 -110 3 101.47 -77.19 -28.8 0.435 109 -111 3 103.49 -78.36 -28.87 0.435 110 -112 3 104.84 -78.87 -29.42 0.435 111 -113 3 106.17 -79.21 -29.5 0.435 112 -114 3 107.69 -79.12 -29.45 0.435 113 -115 3 109.24 -79.64 -29.77 0.435 114 -116 3 111.67 -80.12 -29.84 0.435 115 -117 3 112.82 -81.12 -29.99 0.435 116 -118 3 114.22 -82.51 -30.48 0.435 117 -119 3 114.92 -83.33 -30.55 0.435 118 -120 3 115.64 -84.35 -30.71 0.435 119 -121 3 116.36 -85.37 -30.8 0.435 120 -122 3 116.85 -86.2 -30.95 0.435 121 -123 3 117.37 -87.46 -31.07 0.435 122 -124 3 118.05 -88.06 -31.12 0.435 123 -125 3 118.54 -88.87 -31.41 0.435 124 -126 3 119.26 -89.66 -31.78 0.435 125 -127 3 119.51 -90.03 -32.26 0.435 126 -128 3 120.21 -90.61 -32.61 0.435 127 -129 3 120.45 -91.23 -32.66 0.435 128 -130 3 120.92 -91.62 -32.76 0.435 129 -131 3 121.41 -92.46 -32.84 0.435 130 -132 3 121.66 -92.85 -33.03 0.435 131 -133 3 122.36 -93.45 -33.22 0.435 132 -134 3 123.27 -94.21 -33.58 0.435 133 -135 3 123.52 -94.63 -33.7 0.435 134 -136 3 124.69 -95.56 -34.44 0.435 135 -137 3 125.16 -95.96 -34.47 0.435 136 -138 3 125.6 -96.36 -34.58 0.435 137 -139 3 126.29 -96.74 -34.76 0.435 138 -140 3 126.74 -96.91 -34.83 0.435 139 -141 3 127.21 -97.3 -35.01 0.435 140 -142 3 127.66 -97.66 -35.42 0.435 141 -143 3 128.13 -98.03 -35.82 0.435 142 -144 3 128.6 -98.41 -36.0 0.435 143 -145 3 128.84 -98.55 -36.61 0.435 144 -146 3 129.53 -99.14 -36.74 0.435 145 -147 3 130.42 -99.29 -36.95 0.435 146 -148 3 130.45 -99.43 -37.57 0.435 147 -149 3 7.37 -16.37 -5.36 0.54 20 -150 3 7.01 -17.48 -5.48 0.54 149 -151 3 6.43 -18.58 -5.61 0.54 150 -152 3 5.65 -19.92 -5.77 0.54 151 -153 3 4.59 -20.41 -5.84 0.54 152 -154 3 4.39 -20.67 -5.65 0.65 153 -155 3 3.35 -21.35 -5.9 0.65 154 -156 3 2.97 -21.68 -7.22 0.65 155 -157 3 3.24 -21.69 -9.02 0.435 156 -158 3 3.3 -22.56 -9.11 0.435 157 -159 3 3.35 -23.42 -9.13 0.435 158 -160 3 2.55 -24.33 -9.24 0.435 159 -161 3 1.72 -25.03 -9.34 0.435 160 -162 3 0.89 -25.5 -9.4 0.435 161 -163 3 1.32 -25.86 -8.79 0.435 162 -164 3 1.76 -26.22 -8.17 0.435 163 -165 3 2.7 -27.25 -8.25 0.435 164 -166 3 3.62 -28.27 -8.34 0.435 165 -167 3 4.79 -29.48 -8.44 0.435 166 -168 3 5.98 -31.13 -8.58 0.435 167 -169 3 6.73 -32.59 -8.71 0.435 168 -170 3 7.49 -34.48 -8.89 0.435 169 -171 3 8.25 -36.16 -9.05 0.435 170 -172 3 8.84 -38.48 -9.27 0.435 171 -173 3 9.36 -39.74 -9.39 0.435 172 -174 3 9.88 -41.22 -9.53 0.435 173 -175 3 10.22 -43.14 -9.72 0.435 174 -176 3 10.15 -45.29 -9.95 0.435 175 -177 3 10.26 -47.0 -10.12 0.435 176 -178 3 10.79 -48.69 -10.28 0.435 177 -179 3 10.9 -50.39 -10.46 0.435 178 -180 3 11.63 -51.65 -10.57 0.435 179 -181 3 12.82 -53.08 -10.69 0.435 180 -182 3 13.38 -54.92 -11.4 0.435 181 -183 3 13.71 -56.38 -11.84 0.435 182 -184 3 14.0 -57.37 -12.69 0.435 183 -185 3 14.11 -58.82 -13.21 0.435 184 -186 3 14.45 -60.73 -13.48 0.435 185 -187 3 14.96 -62.0 -13.6 0.435 186 -188 3 15.07 -63.71 -13.78 0.435 187 -189 3 15.17 -65.21 -13.93 0.435 188 -190 3 15.86 -66.02 -14.0 0.435 189 -191 3 16.38 -67.28 -14.11 0.435 190 -192 3 17.11 -68.31 -14.2 0.435 191 -193 3 17.59 -69.15 -14.28 0.435 192 -194 3 17.6 -69.32 -14.3 0.435 193 -195 3 17.43 -69.37 -15.89 0.435 194 -196 3 17.24 -69.83 -15.94 0.435 195 -197 3 16.82 -70.07 -15.9 0.435 196 -198 3 16.39 -70.1 -15.91 0.435 197 -199 3 16.23 -70.96 -16.01 0.435 198 -200 3 16.26 -71.39 -16.12 0.435 199 -201 3 16.31 -72.24 -16.28 0.435 200 -202 3 16.41 -73.74 -16.43 0.435 201 -203 3 16.7 -74.8 -16.54 0.435 202 -204 3 16.97 -75.64 -16.62 0.435 203 -205 3 17.24 -76.49 -16.7 0.435 204 -206 3 17.26 -76.91 -16.82 0.435 205 -207 3 17.31 -77.54 -16.95 0.435 206 -208 3 17.34 -77.97 -17.08 0.435 207 -209 3 17.38 -78.6 -17.14 0.435 208 -210 3 17.43 -79.23 -17.28 0.435 209 -211 3 17.06 -80.33 -17.4 0.435 210 -212 3 16.68 -81.22 -17.5 0.435 211 -213 3 16.28 -81.67 -17.56 0.435 212 -214 3 16.34 -82.75 -17.67 0.435 213 -215 3 16.39 -83.39 -17.73 0.435 214 -216 3 16.45 -84.46 -17.84 0.435 215 -217 3 16.51 -85.31 -17.93 0.435 216 -218 3 16.8 -86.37 -18.03 0.435 217 -219 3 16.84 -87.02 -18.1 0.435 218 -220 3 16.88 -87.66 -18.16 0.435 219 -221 3 16.7 -88.31 -18.23 0.435 220 -222 3 16.98 -88.89 -18.82 0.435 221 -223 3 17.2 -88.88 -18.73 0.435 222 -224 3 17.23 -89.3 -18.93 0.435 223 -225 3 17.69 -89.67 -19.26 0.435 224 -226 3 17.94 -90.08 -19.37 0.435 225 -227 3 17.98 -90.47 -19.79 0.435 226 -228 3 18.43 -90.61 -20.24 0.435 227 -229 3 18.93 -91.37 -21.06 0.435 228 -230 3 19.19 -91.95 -21.5 0.435 229 -231 3 19.45 -92.34 -21.9 0.435 230 -232 3 20.13 -92.44 -22.5 0.435 231 -233 3 20.38 -92.81 -22.99 0.435 232 -234 3 20.64 -93.13 -23.92 0.435 233 -235 3 21.11 -93.49 -24.47 0.435 234 -236 3 21.36 -93.9 -24.51 0.435 235 -237 3 21.61 -94.26 -24.99 0.435 236 -238 3 22.1 -94.85 -25.34 0.435 237 -239 3 22.13 -95.48 -25.49 0.435 238 -240 3 22.6 -95.86 -25.89 0.435 239 -241 3 23.1 -96.41 -26.46 0.435 240 -242 3 23.35 -97.04 -26.59 0.435 241 -243 3 23.61 -97.62 -27.1 0.435 242 -244 3 23.88 -98.25 -27.24 0.435 243 -245 3 24.13 -98.85 -27.45 0.435 244 -246 3 24.18 -99.49 -27.58 0.435 245 -247 3 24.67 -100.04 -28.31 0.435 246 -248 3 24.92 -100.4 -28.86 0.435 247 -249 3 25.22 -101.44 -29.12 0.435 248 -250 3 25.51 -102.23 -29.79 0.435 249 -251 3 25.97 -102.62 -29.9 0.435 250 -252 3 26.21 -102.75 -30.59 0.435 251 -253 3 26.71 -103.54 -31.11 0.435 252 -254 3 27.2 -104.3 -31.78 0.435 253 -255 3 27.46 -104.93 -31.84 0.435 254 -256 3 27.73 -105.52 -32.26 0.435 255 -257 3 28.61 -105.68 -32.34 0.435 256 -258 3 29.09 -106.03 -32.89 0.435 257 -259 3 29.78 -106.59 -33.23 0.435 258 -260 3 30.24 -106.74 -33.69 0.435 259 -261 3 31.18 -107.46 -34.58 0.435 260 -262 3 31.42 -107.59 -35.26 0.435 261 -263 3 32.77 -108.1 -35.81 0.435 262 -264 3 33.22 -108.29 -35.82 0.435 263 -265 3 33.91 -108.34 -36.94 0.435 264 -266 3 34.15 -108.47 -37.7 0.435 265 -267 3 34.38 -108.39 -38.29 0.435 266 -268 3 35.06 -108.76 -38.61 0.435 267 -269 3 35.74 -109.15 -38.63 0.435 268 -270 3 37.1 -109.63 -39.41 0.435 269 -271 3 37.99 -109.77 -39.62 0.435 270 -272 3 38.45 -110.11 -40.25 0.435 271 -273 3 38.9 -110.3 -40.34 0.435 272 -274 3 39.15 -110.7 -40.37 0.435 273 -275 3 39.4 -111.33 -40.43 0.435 274 -276 3 39.46 -112.19 -40.52 0.435 275 -277 3 39.54 -112.71 -41.85 0.435 276 -278 3 39.78 -113.09 -42.11 0.435 277 -279 3 39.83 -113.4 -43.27 0.435 278 -280 3 39.85 -113.57 -43.81 0.435 279 -281 3 39.04 -114.25 -43.98 0.435 280 -282 3 38.86 -114.41 -44.76 0.435 281 -283 3 38.45 -114.58 -45.54 0.435 282 -284 3 38.5 -114.9 -46.55 0.435 283 -285 3 38.53 -114.78 -47.67 0.435 284 -286 3 38.12 -115.21 -47.94 0.435 285 -287 3 37.73 -115.62 -48.45 0.435 286 -288 3 37.76 -116.04 -48.56 0.435 287 -289 3 38.01 -116.2 -49.11 0.435 288 -290 3 38.03 -116.35 -49.64 0.435 289 -291 3 37.63 -116.75 -50.15 0.435 290 -292 3 38.12 -117.35 -50.43 0.435 291 -293 3 38.15 -117.77 -50.54 0.435 292 -294 3 38.62 -118.36 -50.89 0.435 293 -295 3 40.77 -117.78 -50.93 0.435 294 -296 3 41.66 -118.16 -50.95 0.435 295 -297 3 42.34 -118.76 -51.0 0.435 296 -298 3 43.03 -119.38 -51.05 0.435 297 -299 3 43.52 -120.2 -51.12 0.435 298 -300 3 44.0 -120.82 -51.17 0.435 299 -301 3 44.47 -121.43 -51.22 0.435 300 -302 3 44.91 -121.4 -51.21 0.435 301 -303 3 46.2 -121.32 -51.17 0.435 302 -304 3 46.85 -121.28 -51.15 0.435 303 -305 3 47.28 -121.25 -51.14 0.435 304 -306 3 48.32 -120.55 -51.04 0.435 305 -307 3 49.37 -120.05 -50.96 0.435 306 -308 3 50.2 -119.37 -50.87 0.435 307 -309 3 50.85 -119.28 -51.23 0.435 308 -310 3 51.28 -119.25 -51.29 0.435 309 -311 3 52.18 -119.37 -51.66 0.435 310 -312 3 53.04 -119.32 -51.64 0.435 311 -313 3 53.92 -119.48 -51.7 0.435 312 -314 3 55.44 -119.59 -51.68 0.435 313 -315 3 56.53 -119.75 -51.67 0.435 314 -316 3 56.98 -119.93 -51.68 0.435 315 -317 3 57.67 -120.29 -52.0 0.435 316 -318 3 58.36 -120.61 -52.62 0.435 317 -319 3 59.04 -121.22 -52.67 0.435 318 -320 3 59.75 -121.78 -53.09 0.435 319 -321 3 60.44 -122.38 -53.14 0.435 320 -322 3 60.89 -122.78 -53.24 0.435 321 -323 3 61.14 -123.19 -53.27 0.435 322 -324 3 61.63 -124.03 -53.35 0.435 323 -325 3 61.88 -124.44 -53.47 0.435 324 -326 3 62.12 -124.84 -53.57 0.435 325 -327 3 62.37 -125.23 -53.83 0.435 326 -328 3 62.83 -125.62 -53.94 0.435 327 -329 3 63.49 -125.8 -54.01 0.435 328 -330 3 63.95 -126.19 -54.04 0.435 329 -331 3 64.4 -126.12 -54.48 0.435 330 -332 3 64.83 -126.07 -54.69 0.435 331 -333 3 65.28 -126.01 -54.98 0.435 332 -334 3 16.54 -88.97 -18.31 0.435 221 -335 3 16.16 -90.07 -18.43 0.435 334 -336 3 16.21 -90.92 -18.52 0.435 335 -337 3 15.45 -92.27 -18.67 0.435 336 -338 3 15.98 -93.94 -18.83 0.435 337 -339 3 16.27 -95.01 -18.94 0.435 338 -340 3 16.3 -95.45 -18.98 0.435 339 -341 3 16.59 -96.44 -19.61 0.435 340 -342 3 15.61 -97.73 -20.37 0.435 341 -343 3 15.72 -97.83 -20.38 0.435 342 -344 3 16.49 -97.63 -20.86 0.325 343 -345 3 16.73 -98.26 -20.85 0.325 344 -346 3 16.76 -98.43 -21.24 0.325 345 -347 3 16.78 -98.35 -22.07 0.325 346 -348 3 17.03 -98.46 -23.05 0.325 347 -349 3 17.29 -98.53 -24.26 0.325 348 -350 3 17.34 -99.17 -24.4 0.325 349 -351 3 17.38 -99.52 -25.11 0.325 350 -352 3 17.44 -100.09 -25.92 0.325 351 -353 3 17.73 -100.78 -27.49 0.325 352 -354 3 17.99 -101.13 -28.05 0.325 353 -355 3 18.03 -101.53 -28.47 0.325 354 -356 3 18.27 -101.19 -29.56 0.325 355 -357 3 18.31 -101.57 -30.05 0.325 356 -358 3 18.35 -102.17 -30.56 0.325 357 -359 3 17.62 -103.88 -31.36 0.325 358 -360 3 17.67 -104.72 -31.51 0.325 359 -361 3 17.74 -105.78 -31.85 0.325 360 -362 3 17.82 -106.54 -32.84 0.325 361 -363 3 18.1 -107.1 -33.56 0.325 362 -364 3 18.15 -107.68 -34.22 0.325 363 -365 3 18.63 -108.29 -34.35 0.325 364 -366 3 18.88 -108.69 -34.54 0.325 365 -367 3 19.12 -109.31 -34.6 0.325 366 -368 3 19.38 -109.94 -34.73 0.325 367 -369 3 19.63 -110.33 -34.99 0.325 368 -370 3 19.72 -111.62 -35.13 0.325 369 -371 3 19.8 -112.89 -35.33 0.325 370 -372 3 19.87 -113.96 -35.44 0.325 371 -373 3 20.12 -114.59 -35.49 0.325 372 -374 3 20.17 -115.45 -35.58 0.325 373 -375 3 20.42 -115.87 -35.62 0.325 374 -376 3 20.49 -116.93 -35.73 0.325 375 -377 3 20.53 -117.58 -35.79 0.325 376 -378 3 20.78 -117.99 -35.91 0.325 377 -379 3 20.81 -118.39 -36.1 0.325 378 -380 3 20.86 -119.02 -36.39 0.325 379 -381 3 20.04 -119.7 -36.63 0.325 380 -382 3 20.13 -120.95 -37.06 0.325 381 -383 3 20.28 -123.02 -37.95 0.325 382 -384 3 20.76 -123.6 -38.44 0.325 383 -385 3 20.82 -124.41 -38.98 0.325 384 -386 3 21.32 -125.22 -39.28 0.325 385 -387 3 21.48 -127.57 -39.59 0.325 386 -388 3 21.13 -129.1 -39.76 0.325 387 -389 3 21.41 -129.93 -39.92 0.325 388 -390 3 21.92 -130.95 -40.23 0.325 389 -391 3 21.98 -131.76 -40.77 0.325 390 -392 3 22.02 -132.37 -41.06 0.325 391 -393 3 22.08 -132.99 -41.43 0.325 392 -394 3 22.11 -133.63 -41.49 0.325 393 -395 3 22.17 -134.24 -41.85 0.325 394 -396 3 22.21 -134.86 -42.22 0.325 395 -397 3 22.28 -135.66 -42.82 0.325 396 -398 3 22.34 -136.47 -43.36 0.325 397 -399 3 22.4 -137.32 -43.52 0.325 398 -400 3 22.04 -138.12 -44.37 0.325 399 -401 3 22.17 -140.04 -44.64 0.325 400 -402 3 22.25 -141.04 -45.41 0.325 401 -403 3 22.3 -141.68 -45.56 0.325 402 -404 3 22.36 -142.74 -45.82 0.325 403 -405 3 22.03 -144.05 -46.03 0.325 404 -406 3 22.08 -144.9 -46.12 0.325 405 -407 3 22.34 -145.24 -46.9 0.325 406 -408 3 22.38 -145.62 -47.47 0.325 407 -409 3 22.41 -146.25 -47.61 0.325 408 -410 3 22.66 -146.67 -47.64 0.325 409 -411 3 22.72 -147.51 -47.88 0.325 410 -412 3 22.75 -147.92 -48.07 0.325 411 -413 3 23.02 -148.53 -48.28 0.325 412 -414 3 23.09 -149.33 -48.96 0.325 413 -415 3 22.74 -150.6 -49.49 0.325 414 -416 3 23.5 -152.26 -49.79 0.325 415 -417 3 23.56 -153.09 -50.1 0.325 416 -418 3 24.1 -154.54 -50.54 0.325 417 -419 3 24.82 -155.53 -51.0 0.325 418 -420 3 25.76 -156.24 -51.96 0.325 419 -421 3 26.72 -156.9 -53.43 0.325 420 -422 3 27.19 -157.23 -54.13 0.325 421 -423 3 27.66 -157.62 -54.31 0.325 422 -424 3 27.91 -157.68 -55.67 0.325 423 -425 3 28.4 -158.01 -56.52 0.325 424 -426 3 29.27 -157.89 -57.1 0.325 425 -427 3 29.94 -157.77 -57.82 0.325 426 -428 3 30.87 -158.02 -59.02 0.325 427 -429 3 31.76 -158.35 -59.49 0.325 428 -430 3 15.84 -97.92 -20.39 0.435 343 -431 3 15.47 -99.02 -20.58 0.435 430 -432 3 15.74 -99.62 -21.02 0.435 431 -433 3 15.79 -100.21 -21.53 0.435 432 -434 3 15.87 -101.24 -22.09 0.435 433 -435 3 15.93 -102.07 -22.39 0.435 434 -436 3 16.17 -102.48 -22.43 0.435 435 -437 3 16.23 -103.34 -22.6 0.435 436 -438 3 16.26 -103.77 -22.64 0.435 437 -439 3 16.74 -104.59 -22.78 0.435 438 -440 3 16.41 -106.11 -22.95 0.435 439 -441 3 15.87 -107.87 -23.14 0.435 440 -442 3 15.91 -108.27 -23.42 0.435 441 -443 3 15.97 -108.84 -24.15 0.435 442 -444 3 16.04 -109.64 -24.83 0.435 443 -445 3 16.08 -110.01 -25.4 0.435 444 -446 3 16.13 -110.6 -26.06 0.435 445 -447 3 16.2 -111.39 -26.74 0.435 446 -448 3 16.25 -112.22 -26.97 0.435 447 -449 3 16.75 -112.77 -27.7 0.435 448 -450 3 16.79 -113.14 -28.34 0.435 449 -451 3 16.81 -113.58 -28.39 0.435 450 -452 3 17.31 -114.61 -28.55 0.435 451 -453 3 17.34 -115.04 -28.68 0.435 452 -454 3 17.41 -115.8 -29.58 0.435 453 -455 3 18.15 -117.04 -29.84 0.435 454 -456 3 18.2 -117.61 -30.5 0.435 455 -457 3 18.48 -118.41 -31.03 0.435 456 -458 3 19.64 -119.41 -31.19 0.435 457 -459 3 19.69 -120.27 -31.28 0.435 458 -460 3 19.75 -120.6 -32.35 0.435 459 -461 3 19.38 -121.68 -32.55 0.435 460 -462 3 19.42 -122.06 -33.05 0.435 461 -463 3 19.05 -122.91 -33.44 0.435 462 -464 3 19.13 -123.95 -33.85 0.435 463 -465 3 19.2 -124.75 -34.54 0.435 464 -466 3 19.48 -125.77 -35.01 0.435 465 -467 3 19.55 -126.6 -35.39 0.435 466 -468 3 19.84 -127.64 -35.57 0.435 467 -469 3 20.17 -129.33 -35.89 0.435 468 -470 3 20.44 -130.14 -36.19 0.435 469 -471 3 20.49 -130.75 -36.71 0.435 470 -472 3 20.99 -131.58 -36.86 0.435 471 -473 3 21.01 -131.78 -36.95 0.435 472 -474 3 21.06 -132.62 -37.04 0.435 473 -475 3 21.11 -132.95 -38.13 0.435 474 -476 3 21.17 -133.49 -39.16 0.435 475 -477 3 21.21 -133.86 -39.8 0.435 476 -478 3 21.51 -134.33 -41.43 0.435 477 -479 3 21.57 -135.14 -42.03 0.435 478 -480 3 21.63 -135.7 -42.84 0.435 479 -481 3 21.68 -136.33 -43.06 0.435 480 -482 3 21.72 -136.69 -43.78 0.435 481 -483 3 21.13 -137.56 -44.03 0.435 482 -484 3 21.39 -138.2 -44.09 0.435 483 -485 3 21.48 -139.48 -44.22 0.435 484 -486 3 21.51 -139.89 -44.49 0.435 485 -487 3 21.55 -140.24 -45.27 0.435 486 -488 3 21.23 -141.71 -46.04 0.435 487 -489 3 20.47 -143.47 -46.24 0.435 488 -490 3 19.27 -145.04 -46.5 0.435 489 -491 3 18.52 -146.8 -46.78 0.435 490 -492 3 16.95 -149.26 -47.07 0.435 491 -493 3 16.61 -150.79 -47.24 0.435 492 -494 3 15.85 -152.55 -47.44 0.435 493 -495 3 15.49 -153.65 -47.56 0.435 494 -496 3 15.13 -154.97 -47.71 0.435 495 -497 3 15.21 -156.25 -47.84 0.435 496 -498 3 14.41 -157.16 -47.95 0.435 497 -499 3 13.66 -158.92 -48.15 0.435 498 -500 3 11.6 -160.56 -48.37 0.435 499 -501 3 9.96 -162.16 -48.57 0.435 500 -502 3 8.77 -163.96 -48.79 0.435 501 -503 3 8.22 -165.49 -48.96 0.435 502 -504 3 7.1 -168.37 -49.28 0.435 503 -505 3 5.65 -172.47 -50.49 0.435 504 -506 3 4.45 -173.98 -51.2 0.435 505 -507 3 2.96 -177.21 -52.48 0.435 506 -508 3 1.37 -179.44 -52.9 0.435 507 -509 3 0.17 -180.72 -53.96 0.435 508 -510 3 -1.46 -182.09 -54.29 0.435 509 -511 3 -2.47 -183.23 -54.43 0.435 510 -512 3 -3.95 -183.96 -54.55 0.435 511 -513 3 -5.18 -184.89 -54.75 0.435 512 -514 3 -6.45 -185.39 -54.83 0.435 513 -515 3 17.85 -69.54 -14.54 0.435 194 -516 3 18.1 -70.12 -15.04 0.435 515 -517 3 18.36 -70.75 -15.1 0.435 516 -518 3 17.99 -71.63 -15.28 0.435 517 -519 3 17.21 -72.96 -15.44 0.435 518 -520 3 17.26 -73.81 -15.52 0.435 519 -521 3 17.3 -74.46 -15.59 0.435 520 -522 3 17.75 -74.86 -15.62 0.435 521 -523 3 18.21 -75.06 -15.63 0.435 522 -524 3 18.65 -75.24 -15.64 0.435 523 -525 3 19.33 -75.63 -15.66 0.435 524 -526 3 19.83 -76.65 -15.98 0.435 525 -527 3 20.35 -77.91 -16.18 0.435 526 -528 3 20.86 -78.94 -16.34 0.435 527 -529 3 20.94 -80.22 -16.47 0.435 528 -530 3 21.02 -81.52 -16.6 0.435 529 -531 3 21.28 -82.15 -16.66 0.435 530 -532 3 21.59 -83.63 -16.81 0.435 531 -533 3 22.11 -84.89 -16.93 0.435 532 -534 3 23.54 -86.95 -17.11 0.435 533 -535 3 24.47 -87.97 -17.19 0.435 534 -536 3 25.18 -89.0 -17.28 0.435 535 -537 3 25.29 -90.5 -17.51 0.435 536 -538 3 25.4 -92.2 -17.69 0.435 537 -539 3 25.45 -93.07 -17.78 0.435 538 -540 3 25.79 -94.98 -17.97 0.435 539 -541 3 25.9 -96.69 -18.14 0.435 540 -542 3 26.39 -97.73 -18.24 0.435 541 -543 3 27.1 -97.72 -19.72 0.435 542 -544 3 27.98 -98.1 -19.73 0.435 543 -545 3 28.66 -98.48 -19.76 0.435 544 -546 3 29.13 -99.12 -19.66 0.435 545 -547 3 29.41 -99.95 -19.74 0.435 546 -548 3 29.9 -101.0 -19.84 0.435 547 -549 3 30.37 -101.4 -19.87 0.435 548 -550 3 30.64 -102.46 -19.97 0.435 549 -551 3 30.91 -103.07 -20.26 0.435 550 -552 3 31.41 -104.1 -20.51 0.435 551 -553 3 31.72 -105.34 -20.85 0.435 552 -554 3 32.0 -106.18 -21.08 0.435 553 -555 3 32.29 -107.2 -21.48 0.435 554 -556 3 32.31 -107.63 -21.52 0.435 555 -557 3 33.25 -108.64 -21.61 0.435 556 -558 3 33.71 -109.26 -21.66 0.435 557 -559 3 34.2 -109.59 -22.44 0.435 558 -560 3 35.38 -111.01 -22.64 0.435 559 -561 3 35.44 -112.09 -22.75 0.435 560 -562 3 35.47 -112.51 -22.86 0.435 561 -563 3 35.97 -113.55 -22.95 0.435 562 -564 3 36.06 -114.84 -23.09 0.435 563 -565 3 36.54 -115.67 -23.16 0.435 564 -566 3 37.22 -116.05 -23.18 0.435 565 -567 3 37.92 -116.67 -23.23 0.435 566 -568 3 39.1 -118.32 -23.37 0.435 567 -569 3 39.39 -119.36 -23.48 0.435 568 -570 3 39.91 -120.84 -23.62 0.435 569 -571 3 39.96 -121.48 -23.68 0.435 570 -572 3 40.69 -122.7 -24.02 0.435 571 -573 3 40.79 -124.2 -24.24 0.435 572 -574 3 41.3 -125.45 -24.44 0.435 573 -575 3 41.8 -126.29 -24.52 0.435 574 -576 3 42.09 -127.54 -24.79 0.435 575 -577 3 42.35 -128.17 -24.85 0.435 576 -578 3 42.42 -129.24 -25.03 0.435 577 -579 3 42.45 -129.66 -25.07 0.435 578 -580 3 43.15 -130.48 -25.14 0.435 579 -581 3 43.61 -130.88 -25.17 0.435 580 -582 3 43.87 -131.51 -25.23 0.435 581 -583 3 44.12 -131.92 -25.27 0.435 582 -584 3 44.85 -133.18 -25.38 0.435 583 -585 3 45.31 -133.78 -25.43 0.435 584 -586 3 45.82 -134.83 -25.53 0.435 585 -587 3 45.84 -135.26 -25.57 0.435 586 -588 3 46.1 -135.88 -25.63 0.435 587 -589 3 46.35 -136.3 -25.67 0.435 588 -590 3 46.64 -137.58 -25.79 0.435 589 -591 3 46.91 -138.42 -25.87 0.435 590 -592 3 47.02 -139.91 -26.1 0.435 591 -593 3 47.7 -140.51 -26.15 0.435 592 -594 3 48.42 -141.54 -26.24 0.435 593 -595 3 48.9 -142.37 -26.32 0.435 594 -596 3 49.19 -143.43 -26.42 0.435 595 -597 3 49.45 -144.07 -26.48 0.435 596 -598 3 49.71 -144.7 -26.54 0.435 597 -599 3 49.74 -145.33 -26.6 0.435 598 -600 3 50.02 -146.18 -26.68 0.435 599 -601 3 50.28 -146.81 -26.74 0.435 600 -602 3 50.55 -147.66 -26.82 0.435 601 -603 3 50.85 -148.93 -26.95 0.435 602 -604 3 50.89 -149.57 -27.01 0.435 603 -605 3 50.94 -150.43 -27.1 0.435 604 -606 3 51.22 -151.28 -27.18 0.435 605 -607 3 51.96 -152.73 -27.31 0.435 606 -608 3 52.44 -153.56 -27.39 0.435 607 -609 3 52.7 -154.19 -27.45 0.435 608 -610 3 52.96 -154.53 -28.3 0.435 609 -611 3 53.44 -155.08 -28.95 0.435 610 -612 3 53.93 -155.42 -29.58 0.435 611 -613 3 54.39 -155.8 -29.83 0.435 612 -614 3 54.64 -156.21 -29.86 0.435 613 -615 3 55.73 -156.35 -30.0 0.435 614 -616 3 56.48 -157.81 -30.14 0.435 615 -617 3 57.44 -159.26 -30.26 0.435 616 -618 3 57.91 -159.86 -30.31 0.435 617 -619 3 58.41 -160.6 -31.36 0.435 618 -620 3 59.36 -161.6 -31.67 0.435 619 -621 3 59.84 -162.17 -32.1 0.435 620 -622 3 60.09 -162.79 -32.23 0.435 621 -623 3 60.84 -163.75 -33.06 0.435 622 -624 3 61.29 -164.14 -33.17 0.435 623 -625 3 61.54 -164.55 -33.21 0.435 624 -626 3 61.77 -164.49 -33.72 0.435 625 -627 3 62.25 -165.08 -34.07 0.435 626 -628 3 62.49 -165.21 -34.76 0.435 627 -629 3 62.98 -165.78 -35.18 0.435 628 -630 3 63.0 -165.68 -36.15 0.435 629 -631 3 63.47 -166.04 -36.71 0.435 630 -632 3 64.15 -166.41 -36.88 0.435 631 -633 3 64.82 -166.8 -36.9 0.435 632 -634 3 65.28 -166.98 -36.98 0.435 633 -635 3 65.96 -167.37 -37.01 0.435 634 -636 3 66.39 -167.55 -37.01 0.435 635 -637 3 27.14 -99.2 -18.37 0.435 542 -638 3 27.21 -100.26 -18.55 0.435 637 -639 3 28.24 -101.99 -20.21 0.435 638 -640 3 27.9 -103.51 -20.38 0.435 639 -641 3 27.98 -104.79 -20.51 0.435 640 -642 3 28.07 -106.08 -20.71 0.435 641 -643 3 27.29 -107.42 -20.87 0.435 642 -644 3 26.91 -108.29 -20.97 0.435 643 -645 3 26.94 -108.73 -21.01 0.435 644 -646 3 27.19 -109.35 -21.07 0.435 645 -647 3 27.49 -110.36 -21.62 0.435 646 -648 3 27.75 -110.71 -22.25 0.435 647 -649 3 28.02 -111.56 -22.33 0.435 648 -650 3 28.3 -112.62 -22.52 0.435 649 -651 3 28.04 -115.2 -22.79 0.435 650 -652 3 28.11 -116.0 -23.55 0.435 651 -653 3 28.21 -117.48 -23.78 0.435 652 -654 3 28.51 -118.98 -23.92 0.435 653 -655 3 28.81 -120.25 -24.05 0.435 654 -656 3 28.91 -121.69 -24.27 0.435 655 -657 3 28.98 -122.77 -24.38 0.435 656 -658 3 29.26 -123.57 -24.75 0.435 657 -659 3 29.33 -124.38 -25.37 0.435 658 -660 3 28.99 -125.9 -25.68 0.435 659 -661 3 29.28 -126.92 -26.16 0.435 660 -662 3 28.94 -127.97 -26.65 0.435 661 -663 3 28.56 -129.07 -26.78 0.435 662 -664 3 27.79 -130.41 -26.93 0.435 663 -665 3 27.44 -131.93 -27.17 0.435 664 -666 3 27.53 -133.2 -27.38 0.435 665 -667 3 27.18 -134.51 -27.52 0.435 666 -668 3 27.25 -135.59 -27.63 0.435 667 -669 3 27.01 -138.39 -27.93 0.435 668 -670 3 27.07 -139.45 -28.19 0.435 669 -671 3 27.18 -140.92 -28.71 0.435 670 -672 3 27.26 -142.21 -28.84 0.435 671 -673 3 26.88 -143.08 -28.94 0.435 672 -674 3 26.51 -144.17 -29.13 0.435 673 -675 3 26.59 -145.25 -29.24 0.435 674 -676 3 26.21 -146.13 -29.34 0.435 675 -677 3 26.47 -146.72 -29.78 0.435 676 -678 3 26.72 -147.12 -29.97 0.435 677 -679 3 26.98 -147.75 -30.03 0.435 678 -680 3 27.23 -148.38 -30.08 0.435 679 -681 3 27.73 -149.21 -30.23 0.435 680 -682 3 28.21 -150.04 -30.3 0.435 681 -683 3 28.51 -151.08 -30.55 0.435 682 -684 3 28.14 -152.15 -30.91 0.435 683 -685 3 28.21 -152.93 -31.66 0.435 684 -686 3 28.97 -154.57 -32.19 0.435 685 -687 3 29.28 -155.61 -32.59 0.435 686 -688 3 29.34 -156.41 -33.13 0.435 687 -689 3 29.42 -157.69 -33.33 0.435 688 -690 3 29.71 -158.74 -33.51 0.435 689 -691 3 29.77 -159.3 -34.32 0.435 690 -692 3 29.84 -160.11 -34.93 0.435 691 -693 3 29.45 -160.72 -35.53 0.435 692 -694 3 29.52 -161.79 -35.71 0.435 693 -695 3 29.58 -162.64 -35.88 0.435 694 -696 3 29.84 -163.27 -35.94 0.435 695 -697 3 29.49 -164.57 -36.15 0.435 696 -698 3 29.52 -165.0 -36.19 0.435 697 -699 3 29.19 -166.49 -36.74 0.435 698 -700 3 29.29 -167.98 -36.96 0.435 699 -701 3 29.34 -168.57 -37.54 0.435 700 -702 3 29.39 -169.41 -37.71 0.435 701 -703 3 29.47 -170.49 -37.82 0.435 702 -704 3 29.13 -171.75 -38.41 0.435 703 -705 3 29.2 -172.79 -38.74 0.435 704 -706 3 29.93 -174.05 -38.85 0.435 705 -707 3 30.43 -174.58 -39.73 0.435 706 -708 3 30.94 -175.59 -40.12 0.435 707 -709 3 31.18 -176.0 -40.23 0.435 708 -710 3 31.7 -176.7 -41.58 0.435 709 -711 3 31.75 -177.3 -42.09 0.435 710 -712 3 31.99 -177.7 -42.2 0.435 711 -713 3 32.23 -178.12 -42.23 0.435 712 -714 3 32.71 -178.72 -42.52 0.435 713 -715 3 32.76 -179.33 -42.8 0.435 714 -716 3 33.22 -179.51 -42.89 0.435 715 -717 3 33.52 -180.76 -43.31 0.435 716 -718 3 33.99 -181.08 -44.01 0.435 717 -719 3 34.43 -180.99 -44.66 0.435 718 -720 3 35.13 -181.58 -44.86 0.435 719 -721 3 35.6 -181.97 -45.04 0.435 720 -722 3 36.07 -182.57 -45.09 0.435 721 -723 3 37.41 -183.12 -45.34 0.435 722 -724 3 38.31 -183.22 -45.94 0.435 723 -725 3 40.08 -183.75 -46.02 0.435 724 -726 3 41.89 -184.9 -46.48 0.435 725 -727 3 42.37 -185.21 -47.25 0.435 726 -728 3 42.86 -185.8 -47.61 0.435 727 -729 3 43.1 -186.2 -47.86 0.435 728 -730 3 43.58 -186.81 -47.91 0.435 729 -731 3 43.85 -187.35 -48.87 0.435 730 -732 3 44.12 -187.97 -49.01 0.435 731 -733 3 1.19 -26.21 -10.83 0.435 163 -734 3 1.24 -27.08 -10.84 0.435 733 -735 3 1.32 -28.35 -10.97 0.435 734 -736 3 1.4 -29.65 -11.1 0.435 735 -737 3 1.71 -30.91 -11.22 0.435 736 -738 3 1.81 -32.63 -11.4 0.435 737 -739 3 1.92 -34.13 -11.55 0.435 738 -740 3 2.02 -35.84 -11.72 0.435 739 -741 3 2.14 -37.77 -11.92 0.435 740 -742 3 2.24 -39.27 -12.07 0.435 741 -743 3 2.76 -40.53 -12.19 0.435 742 -744 3 3.28 -41.79 -12.31 0.435 743 -745 3 3.62 -43.91 -12.52 0.435 744 -746 3 3.88 -44.56 -12.51 0.435 745 -747 3 4.35 -45.15 -12.78 0.435 746 -748 3 4.64 -45.7 -13.67 0.435 747 -749 3 4.9 -46.25 -14.39 0.435 748 -750 3 5.19 -47.3 -14.56 0.435 749 -751 3 5.25 -48.16 -14.65 0.435 750 -752 3 5.3 -49.01 -14.82 0.435 751 -753 3 4.96 -50.32 -14.96 0.435 752 -754 3 5.0 -50.96 -15.1 0.435 753 -755 3 5.51 -51.96 -15.57 0.435 754 -756 3 5.76 -52.6 -15.63 0.435 755 -757 3 6.23 -52.94 -16.18 0.435 756 -758 3 6.77 -54.62 -16.42 0.435 757 -759 3 7.04 -55.24 -16.55 0.435 758 -760 3 7.32 -56.09 -16.71 0.435 759 -761 3 7.56 -56.47 -16.97 0.435 760 -762 3 8.09 -57.95 -17.11 0.435 761 -763 3 8.14 -58.59 -17.17 0.435 762 -764 3 8.17 -59.22 -17.32 0.435 763 -765 3 7.79 -60.11 -17.42 0.435 764 -766 3 7.82 -60.54 -17.46 0.435 765 -767 3 8.1 -61.34 -17.84 0.435 766 -768 3 8.67 -63.46 -18.12 0.435 767 -769 3 9.0 -65.16 -18.28 0.435 768 -770 3 8.68 -66.89 -18.47 0.435 769 -771 3 8.71 -67.3 -18.74 0.435 770 -772 3 9.19 -67.89 -19.09 0.435 771 -773 3 9.45 -68.23 -19.73 0.435 772 -774 3 9.7 -68.85 -20.01 0.435 773 -775 3 9.97 -69.47 -20.14 0.435 774 -776 3 10.21 -69.89 -20.18 0.435 775 -777 3 10.47 -70.5 -20.39 0.435 776 -778 3 10.77 -71.48 -21.24 0.435 777 -779 3 11.56 -73.57 -21.51 0.435 778 -780 3 11.39 -74.44 -21.68 0.435 779 -781 3 11.94 -76.12 -21.84 0.435 780 -782 3 12.29 -78.01 -22.33 0.435 781 -783 3 12.38 -79.26 -22.83 0.435 782 -784 3 12.45 -80.29 -23.24 0.435 783 -785 3 13.21 -81.96 -23.54 0.435 784 -786 3 13.51 -83.01 -23.64 0.435 785 -787 3 13.78 -83.85 -23.8 0.435 786 -788 3 13.81 -84.28 -23.84 0.435 787 -789 3 14.08 -85.11 -24.0 0.435 788 -790 3 14.35 -85.95 -24.15 0.435 789 -791 3 14.39 -86.34 -24.57 0.435 790 -792 3 14.47 -87.1 -25.55 0.435 791 -793 3 14.49 -87.27 -26.09 0.435 792 -794 3 14.53 -87.91 -26.16 0.435 793 -795 3 14.78 -88.01 -27.15 0.435 794 -796 3 15.04 -88.65 -27.21 0.435 795 -797 3 15.54 -89.68 -27.3 0.435 796 -798 3 16.0 -90.09 -27.26 0.435 797 -799 3 17.33 -90.44 -27.26 0.435 798 -800 3 18.92 -91.08 -28.49 0.435 799 -801 3 19.13 -91.08 -28.42 0.435 800 -802 3 19.37 -91.28 -28.43 0.435 801 -803 3 19.81 -91.46 -28.51 0.435 802 -804 3 20.65 -90.97 -28.52 0.435 803 -805 3 21.09 -90.89 -29.03 0.435 804 -806 3 22.36 -90.13 -29.22 0.435 805 -807 3 23.24 -90.25 -29.66 0.435 806 -808 3 23.94 -90.56 -30.5 0.435 807 -809 3 24.38 -90.74 -30.59 0.435 808 -810 3 24.87 -91.04 -31.52 0.435 809 -811 3 25.55 -91.42 -31.76 0.435 810 -812 3 26.45 -92.0 -31.88 0.435 811 -813 3 26.7 -92.14 -32.41 0.435 812 -814 3 28.04 -92.71 -32.44 0.435 813 -815 3 28.72 -93.09 -32.46 0.435 814 -816 3 29.85 -93.61 -33.09 0.435 815 -817 3 30.55 -94.19 -33.44 0.435 816 -818 3 31.43 -94.34 -33.51 0.435 817 -819 3 31.89 -94.7 -33.84 0.435 818 -820 3 32.12 -94.9 -33.93 0.435 819 -821 3 32.36 -94.84 -34.37 0.435 820 -822 3 32.6 -94.99 -34.98 0.435 821 -823 3 33.06 -95.11 -35.59 0.435 822 -824 3 33.53 -95.45 -36.21 0.435 823 -825 3 34.25 -95.93 -37.45 0.435 824 -826 3 35.62 -96.88 -37.97 0.435 825 -827 3 36.73 -97.22 -38.13 0.435 826 -828 3 37.66 -97.74 -38.92 0.435 827 -829 3 38.37 -98.27 -39.63 0.435 828 -830 3 39.27 -98.33 -40.59 0.435 829 -831 3 39.95 -98.72 -40.54 0.435 830 -832 3 40.17 -98.66 -41.05 0.435 831 -833 3 40.19 -98.55 -42.1 0.435 832 -834 3 40.89 -98.84 -43.1 0.435 833 -835 3 41.56 -98.99 -43.4 0.435 834 -836 3 42.03 -99.13 -43.86 0.435 835 -837 3 42.48 -99.52 -43.95 0.435 836 -838 3 43.15 -99.69 -43.96 0.435 837 -839 3 43.58 -99.88 -43.97 0.435 838 -840 3 44.52 -100.65 -44.41 0.435 839 -841 3 45.17 -100.6 -44.39 0.435 840 -842 3 45.64 -101.22 -44.51 0.435 841 -843 3 46.34 -102.03 -44.58 0.435 842 -844 3 46.82 -102.4 -44.99 0.435 843 -845 3 47.94 -102.94 -45.32 0.435 844 -846 3 48.39 -103.12 -45.4 0.435 845 -847 3 49.28 -103.5 -45.41 0.435 846 -848 3 49.71 -103.47 -45.4 0.435 847 -849 3 50.37 -103.37 -45.91 0.435 848 -850 3 50.8 -103.35 -45.89 0.435 849 -851 3 51.26 -103.25 -46.55 0.435 850 -852 3 51.96 -103.25 -48.34 0.435 851 -853 3 52.4 -103.19 -48.7 0.435 852 -854 3 52.84 -103.11 -49.21 0.435 853 -855 3 53.5 -103.03 -49.49 0.435 854 -856 3 53.96 -102.91 -50.37 0.435 855 -857 3 54.84 -103.02 -50.88 0.435 856 -858 3 55.29 -102.93 -51.47 0.435 857 -859 3 55.96 -102.83 -52.11 0.435 858 -860 3 56.41 -102.96 -52.65 0.435 859 -861 3 57.08 -103.12 -52.72 0.435 860 -862 3 57.3 -103.1 -52.79 0.435 861 -863 3 58.16 -103.01 -53.14 0.435 862 -864 3 59.06 -103.11 -53.73 0.435 863 -865 3 59.5 -103.04 -54.16 0.435 864 -866 3 60.15 -103.0 -54.22 0.435 865 -867 3 60.8 -102.94 -54.35 0.435 866 -868 3 60.83 -102.78 -55.85 0.435 867 -869 3 61.08 -102.65 -57.03 0.435 868 -870 3 61.53 -102.56 -57.61 0.435 869 -871 3 62.21 -102.94 -57.71 0.435 870 -872 3 63.12 -103.5 -58.12 0.435 871 -873 3 64.02 -103.55 -59.09 0.435 872 -874 3 64.91 -103.7 -59.23 0.435 873 -875 3 65.36 -103.87 -59.46 0.435 874 -876 3 66.04 -104.26 -59.49 0.435 875 -877 3 66.71 -104.37 -60.01 0.435 876 -878 3 67.4 -104.7 -60.64 0.435 877 -879 3 68.3 -105.05 -61.02 0.435 878 -880 3 68.53 -105.23 -61.12 0.435 879 -881 3 68.77 -105.43 -61.13 0.435 880 -882 3 0.29 -26.4 -9.51 0.435 162 -883 3 -0.93 -27.34 -9.64 0.435 882 -884 3 -1.38 -27.94 -8.27 0.435 883 -885 3 -1.79 -28.43 -7.88 0.435 884 -886 3 -2.19 -28.86 -8.17 0.435 885 -887 3 -2.59 -29.26 -8.82 0.435 886 -888 3 -2.53 -29.84 -9.48 0.435 887 -889 3 -2.92 -30.23 -10.13 0.435 888 -890 3 -3.32 -30.68 -10.26 0.435 889 -891 3 -3.67 -31.43 -11.7 0.435 890 -892 3 -3.13 -32.61 -12.5 0.435 891 -893 3 -3.1 -33.26 -12.56 0.435 892 -894 3 -3.04 -34.11 -12.72 0.435 893 -895 3 -3.41 -35.0 -12.82 0.435 894 -896 3 -4.65 -36.14 -12.97 0.435 895 -897 3 -5.8 -38.58 -13.25 0.435 896 -898 3 -6.98 -40.36 -13.53 0.435 897 -899 3 -8.19 -41.44 -14.43 0.435 898 -900 3 -9.82 -43.0 -15.01 0.435 899 -901 3 -12.12 -44.19 -15.49 0.435 900 -902 3 -13.3 -45.69 -16.34 0.435 901 -903 3 -14.53 -46.62 -16.62 0.435 902 -904 3 -15.3 -47.89 -17.45 0.435 903 -905 3 -16.54 -48.53 -18.37 0.435 904 -906 3 -18.31 -51.16 -19.29 0.435 905 -907 3 -19.43 -53.77 -19.89 0.435 906 -908 3 -20.98 -56.14 -21.08 0.435 907 -909 3 -22.19 -57.71 -21.34 0.435 908 -910 3 -23.77 -59.88 -22.35 0.435 909 -911 3 -25.82 -61.73 -22.67 0.435 910 -912 3 -27.89 -63.13 -22.87 0.435 911 -913 3 -28.48 -63.75 -23.7 0.435 912 -914 3 -29.05 -65.07 -23.77 0.435 913 -915 3 -29.42 -66.17 -23.89 0.435 914 -916 3 -30.22 -67.06 -24.31 0.435 915 -917 3 -30.58 -67.91 -24.63 0.435 916 -918 3 -31.39 -68.78 -25.11 0.435 917 -919 3 -31.81 -68.74 -25.8 0.435 918 -920 3 -32.15 -69.73 -26.97 0.435 919 -921 3 -33.77 -71.56 -27.2 0.435 920 -922 3 -34.1 -72.55 -28.21 0.435 921 -923 3 -35.7 -74.58 -28.53 0.435 922 -924 3 -36.05 -75.31 -30.12 0.435 923 -925 3 -37.0 -77.52 -30.38 0.435 924 -926 3 -38.2 -79.1 -30.57 0.435 925 -927 3 -40.22 -81.37 -30.85 0.435 926 -928 3 -41.35 -83.44 -32.67 0.435 927 -929 3 -42.99 -84.82 -32.93 0.435 928 -930 3 -42.66 -85.7 -34.74 0.435 929 -931 3 -43.7 -86.41 -34.84 0.435 930 -932 3 -44.9 -87.99 -35.03 0.435 931 -933 3 -45.93 -88.91 -35.08 0.435 932 -934 3 -45.88 -89.77 -35.17 0.435 933 -935 3 -47.05 -91.47 -36.28 0.435 934 -936 3 -48.65 -93.25 -36.87 0.435 935 -937 3 -49.03 -93.83 -37.77 0.435 936 -938 3 -49.36 -95.35 -38.01 0.435 937 -939 3 -50.16 -96.19 -38.87 0.435 938 -940 3 -50.49 -97.43 -39.61 0.435 939 -941 3 -50.44 -97.76 -40.62 0.435 940 -942 3 -50.82 -98.39 -41.08 0.435 941 -943 3 -50.75 -98.91 -42.41 0.435 942 -944 3 -51.12 -99.7 -43.4 0.435 943 -945 3 -51.46 -100.75 -43.89 0.435 944 -946 3 -51.15 -101.45 -45.4 0.435 945 -947 3 1.92 -21.67 -8.0 0.54 156 -948 3 1.3 -21.83 -8.86 0.54 947 -949 3 0.89 -21.74 -10.07 0.54 948 -950 3 -0.54 -22.67 -10.35 0.54 949 -951 3 -1.97 -24.01 -10.9 0.435 950 -952 3 -3.24 -24.51 -11.06 0.435 951 -953 3 -4.44 -25.28 -12.75 0.435 952 -954 3 -6.7 -27.13 -13.06 0.435 953 -955 3 -7.53 -27.79 -13.53 0.435 954 -956 3 -8.55 -28.47 -14.0 0.435 955 -957 3 -9.18 -28.93 -14.06 0.435 956 -958 3 -9.63 -28.48 -14.48 0.435 957 -959 3 -10.24 -28.65 -15.41 0.435 958 -960 3 -10.2 -28.69 -17.08 0.435 959 -961 3 -10.58 -29.36 -17.08 0.435 960 -962 3 -11.2 -29.81 -17.45 0.435 961 -963 3 -12.0 -30.67 -18.01 0.435 962 -964 3 -12.74 -32.12 -19.07 0.435 963 -965 3 -13.54 -32.94 -20.01 0.435 964 -966 3 -13.65 -34.57 -20.18 0.435 965 -967 3 -13.84 -35.31 -19.58 0.325 966 -968 3 -13.6 -35.72 -19.61 0.325 967 -969 3 -13.35 -35.6 -20.73 0.435 968 -970 3 -13.31 -36.24 -20.8 0.435 969 -971 3 -13.28 -36.66 -20.84 0.435 970 -972 3 -13.22 -37.74 -20.95 0.435 971 -973 3 -13.19 -38.15 -21.14 0.435 972 -974 3 -13.16 -38.31 -21.61 0.435 973 -975 3 -13.07 -39.6 -21.74 0.435 974 -976 3 -13.42 -40.89 -22.04 0.435 975 -977 3 -13.34 -41.96 -22.21 0.435 976 -978 3 -13.29 -42.81 -22.38 0.435 977 -979 3 -13.67 -43.69 -22.55 0.435 978 -980 3 -13.6 -44.75 -22.81 0.435 979 -981 3 -13.51 -45.73 -23.74 0.435 980 -982 3 -13.44 -46.79 -24.0 0.435 981 -983 3 -13.38 -47.36 -24.67 0.435 982 -984 3 -13.35 -47.76 -25.01 0.435 983 -985 3 -13.3 -48.35 -25.66 0.435 984 -986 3 -13.03 -48.96 -25.87 0.435 985 -987 3 -12.95 -50.24 -26.0 0.435 986 -988 3 -12.88 -51.04 -26.61 0.435 987 -989 3 -12.82 -52.11 -26.79 0.435 988 -990 3 -12.77 -52.45 -27.66 0.435 989 -991 3 -12.72 -53.09 -27.8 0.435 990 -992 3 -12.64 -53.85 -28.86 0.435 991 -993 3 -12.61 -54.26 -28.97 0.435 992 -994 3 -12.55 -55.09 -29.36 0.435 993 -995 3 -12.3 -55.51 -29.47 0.435 994 -996 3 -12.27 -56.13 -29.61 0.435 995 -997 3 -12.16 -57.63 -29.76 0.435 996 -998 3 -12.51 -58.89 -30.5 0.435 997 -999 3 -12.45 -59.46 -31.25 0.435 998 -1000 3 -12.37 -60.47 -31.87 0.435 999 -1001 3 -12.31 -61.32 -32.04 0.435 1000 -1002 3 -11.96 -62.93 -33.09 0.435 1001 -1003 3 -12.28 -64.64 -33.58 0.435 1002 -1004 3 -12.19 -65.64 -34.43 0.435 1003 -1005 3 -11.93 -65.98 -35.15 0.435 1004 -1006 3 -11.88 -66.83 -35.3 0.435 1005 -1007 3 -11.6 -67.65 -35.68 0.435 1006 -1008 3 -11.56 -68.06 -35.87 0.435 1007 -1009 3 -11.03 -69.24 -36.74 0.435 1008 -1010 3 -11.0 -69.89 -36.8 0.435 1009 -1011 3 -10.93 -70.42 -37.91 0.435 1010 -1012 3 -10.87 -71.27 -38.0 0.435 1011 -1013 3 -11.22 -72.58 -38.23 0.435 1012 -1014 3 -11.59 -73.13 -39.42 0.435 1013 -1015 3 -11.54 -73.78 -39.48 0.435 1014 -1016 3 -11.48 -74.32 -40.44 0.435 1015 -1017 3 -11.43 -74.95 -40.66 0.435 1016 -1018 3 -11.41 -75.38 -40.7 0.435 1017 -1019 3 -11.78 -76.22 -41.25 0.435 1018 -1020 3 -11.5 -77.27 -41.42 0.435 1019 -1021 3 -11.44 -78.09 -41.81 0.435 1020 -1022 3 -11.4 -78.47 -42.38 0.435 1021 -1023 3 -11.34 -78.82 -43.24 0.435 1022 -1024 3 -11.29 -79.42 -43.68 0.435 1023 -1025 3 -11.25 -79.74 -44.62 0.435 1024 -1026 3 -11.21 -80.16 -44.81 0.435 1025 -1027 3 -11.18 -80.55 -45.3 0.435 1026 -1028 3 -11.1 -81.07 -46.55 0.435 1027 -1029 3 -10.85 -81.69 -46.61 0.435 1028 -1030 3 -10.58 -82.24 -47.57 0.435 1029 -1031 3 -10.33 -82.63 -47.75 0.435 1030 -1032 3 -10.06 -82.96 -48.61 0.435 1031 -1033 3 -10.02 -83.33 -49.17 0.435 1032 -1034 3 -9.54 -83.94 -49.31 0.435 1033 -1035 3 -9.26 -84.22 -50.69 0.435 1034 -1036 3 -9.02 -84.63 -50.87 0.435 1035 -1037 3 -7.86 -85.83 -51.12 0.435 1036 -1038 3 -6.91 -86.76 -52.02 0.435 1037 -1039 3 -6.65 -87.16 -52.21 0.435 1038 -1040 3 -5.51 -87.86 -53.16 0.435 1039 -1041 3 -5.04 -88.02 -53.38 0.435 1040 -1042 3 -4.78 -88.32 -54.54 0.435 1041 -1043 3 -3.87 -88.91 -54.65 0.435 1042 -1044 3 -2.92 -89.61 -55.69 0.435 1043 -1045 3 -1.81 -90.18 -55.87 0.435 1044 -1046 3 -1.36 -90.36 -55.88 0.435 1045 -1047 3 -0.47 -90.73 -55.97 0.435 1046 -1048 3 -0.04 -90.7 -55.96 0.435 1047 -1049 3 -14.34 -33.86 -20.12 0.435 966 -1050 3 -15.59 -34.79 -20.32 0.435 1049 -1051 3 -17.03 -35.45 -21.18 0.435 1050 -1052 3 -17.43 -36.09 -21.4 0.435 1051 -1053 3 -19.06 -37.71 -21.61 0.435 1052 -1054 3 -19.44 -38.37 -21.77 0.435 1053 -1055 3 -18.95 -39.16 -22.29 0.435 1054 -1056 3 -18.89 -39.68 -23.47 0.435 1055 -1057 3 -19.69 -40.57 -23.73 0.435 1056 -1058 3 -20.74 -41.07 -23.81 0.435 1057 -1059 3 -22.16 -42.12 -25.08 0.435 1058 -1060 3 -23.17 -42.97 -25.79 0.435 1059 -1061 3 -23.96 -43.76 -27.03 0.435 1060 -1062 3 -24.35 -44.14 -27.83 0.435 1061 -1063 3 -25.12 -44.94 -29.14 0.435 1062 -1064 3 -25.92 -45.78 -29.85 0.435 1063 -1065 3 -26.67 -47.29 -30.47 0.435 1064 -1066 3 -27.48 -47.59 -32.17 0.435 1065 -1067 3 -28.26 -48.4 -33.33 0.435 1066 -1068 3 -30.44 -50.98 -35.01 0.435 1067 -1069 3 -31.67 -51.85 -35.81 0.435 1068 -1070 3 -33.3 -53.45 -36.08 0.435 1069 -1071 3 -34.3 -54.0 -37.67 0.435 1070 -1072 3 -35.92 -55.57 -38.25 0.435 1071 -1073 3 -36.72 -56.69 -38.46 0.435 1072 -1074 3 -37.27 -57.67 -39.85 0.435 1073 -1075 3 -38.9 -59.01 -40.48 0.435 1074 -1076 3 -39.67 -60.25 -41.53 0.435 1075 -1077 3 -40.46 -61.34 -41.97 0.435 1076 -1078 3 -41.65 -62.59 -43.26 0.435 1077 -1079 3 -41.78 -63.34 -44.54 0.435 1078 -1080 3 -42.79 -64.47 -44.76 0.435 1079 -1081 3 -43.48 -66.53 -46.35 0.435 1080 -1082 3 -44.25 -68.08 -46.53 0.435 1081 -1083 3 -45.19 -69.45 -46.69 0.435 1082 -1084 3 -46.21 -69.76 -48.41 0.11 1083 -1085 3 -46.16 -70.05 -49.79 0.435 1084 -1086 3 -46.52 -70.41 -50.81 0.435 1085 -1087 3 -47.32 -71.5 -51.32 0.435 1086 -1088 3 -48.1 -72.31 -52.32 0.435 1087 -1089 3 -48.87 -73.56 -53.31 0.435 1088 -1090 3 -49.65 -74.65 -53.81 0.435 1089 -1091 3 -50.69 -75.31 -54.35 0.435 1090 -1092 3 -51.51 -75.99 -54.68 0.435 1091 -1093 3 -53.16 -76.87 -55.56 0.435 1092 -1094 3 -54.83 -77.55 -56.34 0.435 1093 -1095 3 -56.47 -78.89 -57.05 0.435 1094 -1096 3 -56.41 -79.43 -58.15 0.435 1095 -1097 3 -57.64 -80.35 -58.36 0.435 1096 -1098 3 -58.43 -81.42 -59.01 0.435 1097 -1099 3 -58.77 -82.73 -59.24 0.435 1098 -1100 3 -59.17 -83.39 -59.31 0.435 1099 -1101 3 -59.11 -84.02 -59.6 0.435 1100 -1102 3 -59.49 -84.35 -60.78 0.435 1101 -1103 3 -59.87 -85.44 -60.97 0.435 1102 -1104 3 -59.79 -85.95 -62.31 0.435 1103 -1105 3 -45.01 -69.81 -47.02 0.435 1083 -1106 3 -45.76 -71.04 -48.22 0.435 1105 -1107 3 -46.57 -71.93 -48.56 0.435 1106 -1108 3 -46.9 -73.45 -48.8 0.435 1107 -1109 3 -46.61 -73.94 -50.2 0.435 1108 -1110 3 -47.8 -75.72 -50.57 0.435 1109 -1111 3 -48.97 -77.73 -50.72 0.435 1110 -1112 3 -49.89 -80.15 -50.99 0.435 1111 -1113 3 -51.1 -81.45 -51.84 0.435 1112 -1114 3 -51.44 -82.51 -52.4 0.435 1113 -1115 3 -52.65 -84.08 -52.59 0.435 1114 -1116 3 -52.6 -84.93 -52.76 0.435 1115 -1117 3 -53.8 -86.26 -53.3 0.435 1116 -1118 3 -54.76 -87.72 -54.46 0.435 1117 -1119 3 -55.72 -89.71 -54.69 0.435 1118 -1120 3 -56.13 -89.89 -54.87 0.435 1119 -1121 3 -56.75 -90.58 -54.95 0.435 1120 -1122 3 -56.64 -91.74 -56.2 0.435 1121 -1123 3 -57.01 -92.61 -56.53 0.435 1122 -1124 3 -56.95 -93.45 -56.76 0.435 1123 -1125 3 -56.89 -94.29 -57.07 0.435 1124 -1126 3 -56.82 -95.07 -57.83 0.435 1125 -1127 3 -57.44 -95.54 -57.96 0.435 1126 -1128 3 -58.24 -96.66 -58.1 0.435 1127 -1129 3 -59.06 -97.34 -58.27 0.435 1128 -1130 3 -60.27 -98.7 -58.51 0.435 1129 -1131 3 -60.64 -99.57 -58.69 0.435 1130 -1132 3 -61.42 -100.9 -59.07 0.435 1131 -1133 3 -61.78 -101.7 -59.91 0.435 1132 -1134 3 -62.57 -102.81 -60.12 0.435 1133 -1135 3 -63.38 -103.94 -60.25 0.435 1134 -1136 3 -63.29 -105.17 -60.91 0.435 1135 -1137 3 -63.2 -106.17 -61.69 0.435 1136 -1138 3 -63.16 -106.55 -62.18 0.435 1137 -1139 3 -63.11 -107.19 -62.32 0.435 1138 -1140 3 -62.85 -107.82 -62.45 0.435 1139 -1141 3 -63.59 -109.78 -62.75 0.435 1140 -1142 3 -63.96 -110.63 -63.15 0.435 1141 -1143 3 -63.9 -111.46 -63.61 0.435 1142 -1144 3 -63.85 -112.04 -64.27 0.435 1143 -1145 3 -63.82 -112.46 -64.31 0.435 1144 -1146 3 -63.79 -112.88 -64.44 0.435 1145 -1147 3 -63.51 -113.44 -65.16 0.435 1146 -1148 3 -63.43 -114.71 -65.44 0.435 1147 -1149 3 -64.59 -116.93 -65.78 0.435 1148 -1150 3 -64.94 -118.24 -65.92 0.435 1149 -1151 3 -64.89 -119.09 -66.08 0.435 1150 -1152 3 -64.81 -120.12 -66.57 0.435 1151 -1153 3 -64.75 -120.98 -66.65 0.435 1152 -1154 3 -64.7 -121.56 -67.32 0.435 1153 -1155 3 -64.4 -122.83 -67.51 0.435 1154 -1156 3 -64.37 -123.23 -67.77 0.435 1155 -1157 3 -64.09 -124.05 -68.0 0.435 1156 -1158 3 -63.83 -124.69 -68.06 0.435 1157 -1159 3 -63.54 -125.73 -68.31 0.435 1158 -1160 3 -62.83 -126.51 -68.76 0.435 1159 -1161 3 -62.31 -127.49 -69.52 0.435 1160 -1162 3 -62.06 -127.88 -69.71 0.435 1161 -1163 3 -61.59 -128.49 -69.91 0.435 1162 -1164 3 -61.56 -128.88 -70.25 0.435 1163 -1165 3 -61.53 -129.3 -70.37 0.435 1164 -1166 3 -61.26 -129.65 -71.08 0.435 1165 -1167 3 -60.79 -129.98 -71.85 0.435 1166 -1168 3 -60.97 -130.41 -71.9 0.435 1167 -1169 3 -60.92 -130.76 -72.77 0.435 1168 -1170 3 -61.77 -131.24 -72.84 0.435 1169 -1171 3 -61.75 -131.45 -72.93 0.435 1170 -1172 3 -62.09 -131.96 -73.08 0.435 1171 -1173 3 -61.83 -132.58 -73.2 0.435 1172 -1174 3 -61.78 -132.89 -74.36 0.435 1173 -1175 3 -61.51 -133.23 -75.07 0.435 1174 -1176 3 -61.46 -133.78 -76.04 0.435 1175 -1177 3 -61.38 -134.56 -76.87 0.435 1176 -1178 3 -61.11 -134.86 -77.95 0.435 1177 -1179 3 -60.64 -135.46 -78.22 0.435 1178 -1180 3 -60.37 -136.08 -78.36 0.435 1179 -1181 3 -60.14 -136.5 -78.4 0.435 1180 -1182 3 -60.1 -136.91 -78.66 0.435 1181 -1183 3 -59.84 -137.53 -78.8 0.435 1182 -1184 3 8.32 -12.11 -2.64 1.085 8 -1185 3 8.51 -12.22 -1.51 1.085 1184 -1186 3 9.85 -13.04 -1.04 0.65 1185 -1187 3 10.53 -13.65 -1.09 0.65 1186 -1188 3 11.44 -14.25 -0.98 0.65 1187 -1189 3 11.86 -14.57 0.27 0.65 1188 -1190 3 12.51 -14.78 0.57 0.65 1189 -1191 3 12.93 -15.07 1.52 0.65 1190 -1192 3 13.59 -15.27 1.89 0.65 1191 -1193 3 14.04 -15.97 2.58 0.65 1192 -1194 3 14.75 -16.78 2.52 0.65 1193 -1195 3 14.77 -17.22 2.55 0.65 1194 -1196 3 14.87 -17.58 2.52 0.65 1195 -1197 3 14.42 -16.6 1.17 0.65 1196 -1198 3 13.99 -16.86 1.28 0.65 1197 -1199 3 14.06 -17.12 -0.31 0.65 1198 -1200 3 14.3 -17.32 -0.4 0.54 1199 -1201 3 14.16 -18.62 -0.53 0.54 1200 -1202 3 14.22 -19.47 -0.62 0.54 1201 -1203 3 14.25 -20.12 -0.69 0.54 1202 -1204 3 13.88 -21.0 -0.79 0.54 1203 -1205 3 13.07 -21.92 -0.83 0.54 1204 -1206 3 12.23 -22.61 -0.92 0.54 1205 -1207 3 11.87 -23.19 -1.9 0.54 1206 -1208 3 11.94 -23.7 -3.22 0.54 1207 -1209 3 11.56 -24.09 -3.96 0.54 1208 -1210 3 11.64 -24.84 -5.01 0.54 1209 -1211 3 11.7 -25.65 -5.54 0.54 1210 -1212 3 11.34 -26.71 -6.11 0.54 1211 -1213 3 10.13 -28.06 -6.35 0.54 1212 -1214 3 10.21 -29.06 -7.21 0.54 1213 -1215 3 9.41 -29.7 -7.83 0.54 1214 -1216 3 9.03 -30.28 -8.72 0.54 1215 -1217 3 9.07 -30.62 -9.59 0.54 1216 -1218 3 9.11 -31.01 -10.08 0.54 1217 -1219 3 7.78 -33.11 -11.61 0.54 1218 -1220 3 7.79 -33.32 -11.63 0.54 1219 -1221 3 7.81 -34.05 -10.88 0.54 1220 -1222 3 7.39 -34.0 -11.64 0.54 1221 -1223 3 6.59 -34.35 -12.97 0.54 1222 -1224 3 6.2 -34.68 -14.22 0.54 1223 -1225 3 6.28 -35.45 -15.2 0.54 1224 -1226 3 6.78 -35.32 -24.67 0.54 1225 -1227 3 7.25 -35.94 -24.72 0.54 1226 -1228 3 7.55 -37.21 -24.85 0.54 1227 -1229 3 7.16 -37.88 -24.93 0.54 1228 -1230 3 7.22 -37.9 -26.74 0.54 1229 -1231 3 7.25 -38.03 -27.66 0.54 1230 -1232 3 7.08 -38.69 -27.73 0.54 1231 -1233 3 6.89 -39.1 -28.08 0.435 1232 -1234 3 6.09 -40.0 -28.19 0.435 1233 -1235 3 5.95 -41.32 -28.25 0.435 1234 -1236 3 5.55 -41.72 -28.68 0.435 1235 -1237 3 5.18 -42.83 -28.8 0.435 1236 -1238 3 4.82 -43.41 -29.7 0.435 1237 -1239 3 4.46 -44.23 -30.4 0.435 1238 -1240 3 4.51 -44.55 -31.55 0.435 1239 -1241 3 4.56 -44.87 -32.64 0.435 1240 -1242 3 4.62 -45.42 -33.6 0.435 1241 -1243 3 4.24 -46.27 -33.93 0.435 1242 -1244 3 4.28 -46.64 -34.57 0.435 1243 -1245 3 3.95 -47.64 -35.66 0.435 1244 -1246 3 4.01 -48.7 -35.85 0.435 1245 -1247 3 4.06 -49.04 -36.77 0.435 1246 -1248 3 4.12 -49.62 -37.44 0.435 1247 -1249 3 4.19 -50.43 -37.9 0.435 1248 -1250 3 4.24 -51.06 -38.12 0.54 1249 -1251 3 4.29 -51.93 -38.12 0.54 1250 -1252 3 4.3 -52.12 -38.44 0.54 1251 -1253 3 3.94 -52.18 -40.27 0.54 1252 -1254 3 3.99 -52.71 -41.31 0.54 1253 -1255 3 4.07 -53.48 -42.28 0.54 1254 -1256 3 3.73 -54.17 -44.17 0.54 1255 -1257 3 3.41 -55.12 -45.79 0.54 1256 -1258 3 3.08 -56.09 -47.18 0.54 1257 -1259 3 3.13 -56.43 -48.04 0.54 1258 -1260 3 3.21 -56.88 -49.96 0.54 1259 -1261 3 3.27 -56.89 -51.93 0.54 1260 -1262 3 3.32 -57.2 -53.09 0.54 1261 -1263 3 2.93 -57.81 -53.77 0.54 1262 -1264 3 2.57 -58.38 -54.88 0.54 1263 -1265 3 2.23 -59.39 -55.83 0.54 1264 -1266 3 2.28 -60.24 -55.99 0.54 1265 -1267 3 2.37 -60.94 -57.49 0.54 1266 -1268 3 2.65 -61.23 -58.88 0.54 1267 -1269 3 2.71 -61.48 -60.63 0.54 1268 -1270 3 2.81 -62.14 -62.66 0.54 1269 -1271 3 2.44 -62.46 -63.83 0.54 1270 -1272 3 2.5 -63.31 -64.14 0.54 1271 -1273 3 2.53 -63.73 -64.19 0.54 1272 -1274 3 2.18 -64.23 -65.89 0.54 1273 -1275 3 2.23 -65.09 -65.98 0.54 1274 -1276 3 2.71 -65.71 -66.03 0.54 1275 -1277 3 2.98 -66.26 -66.77 0.54 1276 -1278 3 3.05 -66.78 -68.1 0.54 1277 -1279 3 3.09 -67.43 -68.16 0.54 1278 -1280 3 3.14 -68.02 -68.53 0.54 1279 -1281 3 3.21 -68.84 -69.06 0.54 1280 -1282 3 2.8 -69.29 -69.2 0.54 1281 -1283 3 2.41 -69.69 -69.77 0.54 1282 -1284 3 2.04 -70.31 -70.38 0.54 1283 -1285 3 2.09 -70.87 -71.26 0.54 1284 -1286 3 2.14 -71.19 -72.35 0.54 1285 -1287 3 2.21 -71.98 -72.95 0.54 1286 -1288 3 1.44 -73.0 -74.13 0.54 1287 -1289 3 1.5 -73.26 -75.82 0.54 1288 -1290 3 1.59 -74.0 -77.03 0.54 1289 -1291 3 1.22 -74.57 -78.14 0.54 1290 -1292 3 1.26 -75.21 -78.21 0.54 1291 -1293 3 0.89 -75.54 -79.38 0.54 1292 -1294 3 0.95 -76.11 -80.2 0.54 1293 -1295 3 0.54 -76.56 -80.32 0.54 1294 -1296 3 0.61 -77.6 -80.73 0.54 1295 -1297 3 0.67 -78.19 -81.39 0.54 1296 -1298 3 0.71 -78.8 -81.69 0.54 1297 -1299 3 0.76 -79.44 -81.82 0.54 1298 -1300 3 1.02 -80.06 -81.96 0.54 1299 -1301 3 1.5 -80.63 -82.53 0.54 1300 -1302 3 1.78 -81.47 -82.61 0.54 1301 -1303 3 1.87 -82.96 -82.84 0.54 1302 -1304 3 2.12 -83.37 -82.88 0.54 1303 -1305 3 2.61 -84.17 -83.25 0.54 1304 -1306 3 3.32 -84.96 -83.62 0.54 1305 -1307 3 4.04 -85.73 -84.13 0.54 1306 -1308 3 4.73 -86.33 -84.25 0.54 1307 -1309 3 6.52 -87.29 -84.31 0.54 1308 -1310 3 7.42 -87.67 -84.33 0.54 1309 -1311 3 8.31 -88.03 -84.42 0.54 1310 -1312 3 9.43 -88.61 -84.46 0.54 1311 -1313 3 10.76 -88.96 -84.46 0.54 1312 -1314 3 11.42 -89.13 -84.46 0.54 1313 -1315 3 12.28 -89.07 -84.44 0.54 1314 -1316 3 12.9 -88.61 -84.37 0.54 1315 -1317 3 13.54 -88.58 -84.36 0.54 1316 -1318 3 7.3 -38.67 -27.79 0.54 1232 -1319 3 8.0 -39.48 -27.86 0.54 1318 -1320 3 9.16 -40.13 -29.26 0.54 1319 -1321 3 9.84 -40.51 -29.36 0.54 1320 -1322 3 10.54 -40.82 -30.27 0.54 1321 -1323 3 11.03 -41.62 -30.57 0.54 1322 -1324 3 11.98 -42.31 -31.68 0.54 1323 -1325 3 12.23 -42.17 -32.93 0.54 1324 -1326 3 12.91 -42.52 -33.41 0.54 1325 -1327 3 13.55 -42.48 -33.39 0.54 1326 -1328 3 14.65 -42.34 -34.1 0.54 1327 -1329 3 15.58 -43.13 -34.24 0.54 1328 -1330 3 16.28 -43.39 -35.45 0.54 1329 -1331 3 16.74 -43.79 -35.48 0.54 1330 -1332 3 17.21 -44.14 -36.04 0.54 1331 -1333 3 17.9 -44.42 -37.11 0.54 1332 -1334 3 18.62 -45.2 -37.62 0.54 1333 -1335 3 18.89 -45.26 -38.9 0.54 1334 -1336 3 19.39 -46.04 -39.57 0.54 1335 -1337 3 20.11 -46.46 -41.26 0.54 1336 -1338 3 21.29 -47.68 -41.43 0.54 1337 -1339 3 21.78 -47.92 -43.03 0.54 1338 -1340 3 22.25 -48.52 -43.23 0.54 1339 -1341 3 22.99 -49.5 -43.84 0.54 1340 -1342 3 23.7 -50.24 -44.58 0.54 1341 -1343 3 24.4 -50.84 -44.78 0.54 1342 -1344 3 25.1 -51.65 -44.91 0.54 1343 -1345 3 26.05 -52.61 -45.59 0.54 1344 -1346 3 27.18 -53.39 -45.65 0.54 1345 -1347 3 27.89 -54.21 -45.72 0.54 1346 -1348 3 28.39 -54.96 -46.62 0.54 1347 -1349 3 29.33 -55.97 -46.77 0.54 1348 -1350 3 30.26 -56.99 -46.85 0.54 1349 -1351 3 31.22 -57.92 -47.83 0.54 1350 -1352 3 31.7 -58.74 -47.97 0.54 1351 -1353 3 31.97 -59.37 -48.03 0.54 1352 -1354 3 32.25 -60.15 -48.64 0.54 1353 -1355 3 32.5 -60.52 -49.13 0.54 1354 -1356 3 32.99 -61.35 -49.27 0.54 1355 -1357 3 33.25 -61.74 -49.61 0.54 1356 -1358 3 33.49 -62.11 -50.02 0.54 1357 -1359 3 33.52 -62.53 -50.13 0.54 1358 -1360 3 33.79 -63.37 -50.3 0.54 1359 -1361 3 33.81 -63.54 -50.68 0.54 1360 -1362 3 15.23 -17.86 2.72 0.65 1196 -1363 3 15.26 -18.31 2.82 0.65 1362 -1364 3 15.74 -18.94 2.92 0.65 1363 -1365 3 16.41 -19.35 3.12 0.65 1364 -1366 3 16.84 -19.57 3.41 0.65 1365 -1367 3 18.16 -20.22 4.13 0.65 1366 -1368 3 18.83 -20.39 4.13 0.65 1367 -1369 3 19.7 -20.81 4.56 0.65 1368 -1370 3 21.0 -21.01 5.17 0.65 1369 -1371 3 22.34 -21.59 5.21 0.65 1370 -1372 3 23.65 -21.71 5.23 0.65 1371 -1373 3 24.79 -22.51 5.18 0.65 1372 -1374 3 25.71 -23.3 5.12 0.65 1373 -1375 3 26.39 -23.92 5.07 0.65 1374 -1376 3 27.29 -24.3 5.13 0.65 1375 -1377 3 28.58 -24.22 5.17 0.65 1376 -1378 3 29.47 -24.37 5.18 0.65 1377 -1379 3 30.55 -24.53 5.19 0.65 1378 -1380 3 31.88 -24.88 5.18 0.65 1379 -1381 3 32.55 -25.26 5.16 0.65 1380 -1382 3 33.22 -25.66 5.28 0.65 1381 -1383 3 33.86 -25.94 7.07 0.435 1382 -1384 3 34.52 -26.12 7.15 0.435 1383 -1385 3 36.08 -26.67 7.13 0.435 1384 -1386 3 36.29 -26.78 7.12 0.435 1385 -1387 3 37.03 -27.74 6.43 0.11 1386 -1388 3 38.98 -27.86 6.69 0.435 1387 -1389 3 41.2 -28.59 6.67 0.435 1388 -1390 3 43.79 -28.43 6.74 0.435 1389 -1391 3 45.55 -28.75 6.75 0.435 1390 -1392 3 47.55 -29.5 6.72 0.435 1391 -1393 3 49.35 -30.68 6.64 0.435 1392 -1394 3 50.06 -31.49 6.58 0.435 1393 -1395 3 51.41 -32.28 6.53 0.435 1394 -1396 3 53.25 -33.34 5.4 0.435 1395 -1397 3 55.69 -34.04 5.32 0.435 1396 -1398 3 56.61 -34.3 4.11 0.435 1397 -1399 3 58.36 -34.38 3.92 0.435 1398 -1400 3 59.27 -34.97 3.8 0.435 1399 -1401 3 59.67 -35.31 5.2 0.435 1400 -1402 3 60.55 -35.51 5.65 0.435 1401 -1403 3 60.99 -35.99 6.37 0.435 1402 -1404 3 62.29 -36.17 6.91 0.435 1403 -1405 3 62.7 -36.22 7.67 0.435 1404 -1406 3 63.38 -36.86 7.84 0.435 1405 -1407 3 65.15 -37.18 7.85 0.435 1406 -1408 3 66.24 -37.56 8.07 0.435 1407 -1409 3 68.62 -37.67 8.57 0.435 1408 -1410 3 71.21 -37.53 8.79 0.435 1409 -1411 3 73.12 -37.0 8.96 0.435 1410 -1412 3 74.0 -37.17 9.05 0.435 1411 -1413 3 75.1 -37.57 9.41 0.435 1412 -1414 3 76.23 -38.4 9.8 0.435 1413 -1415 3 76.9 -39.1 10.73 0.435 1414 -1416 3 77.35 -39.53 10.98 0.435 1415 -1417 3 78.68 -40.13 11.26 0.435 1416 -1418 3 80.02 -40.73 11.53 0.435 1417 -1419 3 81.14 -41.53 11.55 0.435 1418 -1420 3 81.83 -42.14 11.66 0.435 1419 -1421 3 83.41 -43.14 11.66 0.435 1420 -1422 3 84.99 -44.12 11.6 0.435 1421 -1423 3 85.89 -44.71 11.64 0.435 1422 -1424 3 86.81 -45.55 11.94 0.435 1423 -1425 3 87.91 -45.93 12.01 0.435 1424 -1426 3 88.35 -46.11 12.0 0.435 1425 -1427 3 90.36 -46.86 12.04 0.435 1426 -1428 3 91.23 -46.81 12.07 0.435 1427 -1429 3 92.09 -46.76 12.09 0.435 1428 -1430 3 92.71 -46.29 12.16 0.435 1429 -1431 3 93.33 -45.81 12.22 0.435 1430 -1432 3 94.6 -45.31 12.3 0.435 1431 -1433 3 97.19 -45.15 12.38 0.435 1432 -1434 3 98.73 -45.48 12.38 0.435 1433 -1435 3 99.88 -46.28 12.33 0.435 1434 -1436 3 101.02 -47.31 12.4 0.435 1435 -1437 3 101.92 -47.88 12.36 0.435 1436 -1438 3 102.84 -48.7 12.38 0.435 1437 -1439 3 103.49 -48.88 12.38 0.435 1438 -1440 3 104.82 -49.22 12.37 0.435 1439 -1441 3 105.45 -49.28 13.29 0.435 1440 -1442 3 106.54 -49.46 13.59 0.435 1441 -1443 3 106.97 -49.69 13.95 0.435 1442 -1444 3 108.06 -49.88 14.41 0.435 1443 -1445 3 108.76 -50.45 14.0 0.435 1444 -1446 3 109.22 -50.33 13.12 0.435 1445 -1447 3 110.35 -50.57 11.98 0.435 1446 -1448 3 110.39 -50.38 10.2 0.435 1447 -1449 3 111.7 -50.24 9.64 0.435 1448 -1450 3 114.97 -50.22 9.27 0.435 1449 -1451 3 116.93 -50.28 9.01 0.435 1450 -1452 3 118.26 -50.1 8.07 0.435 1451 -1453 3 119.16 -50.45 7.84 0.435 1452 -1454 3 120.53 -51.12 6.66 0.435 1453 -1455 3 121.21 -51.49 6.42 0.435 1454 -1456 3 36.99 -27.48 7.06 0.435 1386 -1457 3 39.19 -28.0 7.13 0.435 1456 -1458 3 40.11 -28.02 5.79 0.435 1457 -1459 3 41.83 -27.92 5.93 0.435 1458 -1460 3 43.56 -27.82 5.98 0.435 1459 -1461 3 45.3 -27.94 6.08 0.435 1460 -1462 3 46.2 -28.3 6.06 0.435 1461 -1463 3 47.24 -27.81 6.07 0.435 1462 -1464 3 48.79 -28.14 6.07 0.435 1463 -1465 3 50.79 -28.87 6.04 0.435 1464 -1466 3 51.7 -29.47 6.0 0.435 1465 -1467 3 52.63 -30.48 5.84 0.435 1466 -1468 3 53.59 -31.93 5.71 0.435 1467 -1469 3 54.56 -33.37 5.58 0.435 1468 -1470 3 55.27 -34.4 5.49 0.435 1469 -1471 3 56.68 -36.05 5.36 0.435 1470 -1472 3 56.93 -36.67 5.3 0.435 1471 -1473 3 57.61 -37.03 4.83 0.11 1472 -1474 3 58.07 -37.48 5.39 0.435 1473 -1475 3 58.71 -37.46 5.56 0.435 1474 -1476 3 59.14 -37.43 5.57 0.435 1475 -1477 3 59.6 -37.83 5.47 0.435 1476 -1478 3 60.07 -38.23 5.44 0.435 1477 -1479 3 60.75 -38.3 4.47 0.435 1478 -1480 3 61.01 -38.64 3.76 0.435 1479 -1481 3 61.69 -38.7 2.57 0.435 1480 -1482 3 62.17 -39.07 2.17 0.435 1481 -1483 3 62.41 -39.2 1.55 0.435 1482 -1484 3 63.11 -39.73 0.83 0.435 1483 -1485 3 63.59 -40.08 0.28 0.435 1484 -1486 3 64.51 -40.57 -0.79 0.435 1485 -1487 3 65.22 -41.38 -0.86 0.435 1486 -1488 3 65.7 -41.71 -1.55 0.435 1487 -1489 3 65.1 -42.41 -1.57 0.435 1488 -1490 3 65.75 -42.58 -1.57 0.435 1489 -1491 3 66.87 -43.16 -1.52 0.435 1490 -1492 3 68.43 -43.72 -1.55 0.435 1491 -1493 3 69.09 -43.89 -1.55 0.435 1492 -1494 3 69.53 -44.07 -1.64 0.435 1493 -1495 3 70.44 -44.4 -2.1 0.435 1494 -1496 3 70.68 -44.27 -3.14 0.435 1495 -1497 3 71.39 -44.77 -4.3 0.435 1496 -1498 3 72.08 -44.86 -5.13 0.435 1497 -1499 3 72.74 -44.74 -5.92 0.435 1498 -1500 3 73.22 -44.81 -6.9 0.435 1499 -1501 3 73.93 -45.61 -7.34 0.435 1500 -1502 3 74.66 -46.32 -8.31 0.435 1501 -1503 3 75.14 -47.14 -8.53 0.435 1502 -1504 3 75.62 -47.72 -8.95 0.435 1503 -1505 3 76.31 -48.32 -9.0 0.435 1504 -1506 3 76.83 -48.8 -10.39 0.435 1505 -1507 3 77.29 -49.4 -10.52 0.435 1506 -1508 3 77.76 -50.02 -10.58 0.435 1507 -1509 3 78.48 -50.78 -11.24 0.435 1508 -1510 3 78.76 -51.05 -12.61 0.435 1509 -1511 3 79.23 -51.67 -12.66 0.435 1510 -1512 3 79.93 -51.94 -13.81 0.435 1511 -1513 3 80.39 -52.13 -13.89 0.435 1512 -1514 3 81.11 -52.88 -14.55 0.435 1513 -1515 3 81.8 -53.47 -14.75 0.435 1514 -1516 3 82.89 -53.59 -14.97 0.435 1515 -1517 3 83.35 -53.98 -15.22 0.435 1516 -1518 3 84.06 -54.24 -16.43 0.435 1517 -1519 3 84.98 -54.79 -16.92 0.435 1518 -1520 3 85.42 -54.7 -17.44 0.435 1519 -1521 3 85.9 -54.75 -18.78 0.435 1520 -1522 3 86.41 -55.49 -19.75 0.435 1521 -1523 3 86.91 -56.0 -20.84 0.435 1522 -1524 3 86.98 -56.5 -22.18 0.435 1523 -1525 3 87.23 -56.89 -22.52 0.435 1524 -1526 3 87.26 -57.06 -23.06 0.435 1525 -1527 3 87.75 -57.85 -23.51 0.435 1526 -1528 3 88.01 -58.19 -24.21 0.435 1527 -1529 3 88.48 -58.57 -24.46 0.435 1528 -1530 3 88.5 -58.7 -25.31 0.435 1529 -1531 3 88.77 -59.33 -25.37 0.435 1530 -1532 3 89.26 -59.61 -26.59 0.435 1531 -1533 3 89.75 -59.87 -27.96 0.435 1532 -1534 3 90.42 -60.23 -28.21 0.435 1533 -1535 3 91.17 -61.15 -29.42 0.435 1534 -1536 3 91.68 -62.15 -29.96 0.435 1535 -1537 3 92.39 -62.96 -30.03 0.435 1536 -1538 3 92.39 -62.95 -30.17 0.435 1537 -1539 3 92.4 -62.89 -30.77 0.435 1538 -1540 3 92.44 -63.28 -31.19 0.435 1539 -1541 3 92.48 -63.67 -31.6 0.435 1540 -1542 3 92.71 -63.56 -32.57 0.435 1541 -1543 3 92.94 -63.74 -32.73 0.435 1542 -1544 3 93.2 -63.88 -33.5 0.435 1543 -1545 3 93.43 -64.01 -34.11 0.435 1544 -1546 3 93.9 -64.14 -34.71 0.435 1545 -1547 3 94.13 -64.27 -35.24 0.435 1546 -1548 3 94.6 -64.44 -35.55 0.435 1547 -1549 3 94.81 -64.42 -35.63 0.435 1548 -1550 3 95.05 -64.57 -36.16 0.435 1549 -1551 3 95.95 -64.93 -36.33 0.435 1550 -1552 3 96.39 -65.11 -36.33 0.435 1551 -1553 3 96.86 -65.23 -37.09 0.435 1552 -1554 3 97.54 -65.56 -37.56 0.435 1553 -1555 3 98.22 -65.7 -38.01 0.435 1554 -1556 3 98.68 -65.8 -38.83 0.435 1555 -1557 3 99.39 -66.07 -39.98 0.435 1556 -1558 3 100.51 -66.64 -40.08 0.435 1557 -1559 3 100.73 -66.62 -40.16 0.435 1558 -1560 3 100.97 -66.75 -40.84 0.435 1559 -1561 3 101.22 -66.64 -41.88 0.435 1560 -1562 3 101.88 -66.51 -42.67 0.435 1561 -1563 3 102.11 -66.42 -43.41 0.435 1562 -1564 3 102.98 -66.35 -43.54 0.435 1563 -1565 3 103.64 -66.26 -44.04 0.435 1564 -1566 3 104.3 -66.18 -44.47 0.435 1565 -1567 3 105.4 -66.07 -44.81 0.435 1566 -1568 3 106.04 -66.02 -44.79 0.435 1567 -1569 3 106.7 -65.93 -45.3 0.435 1568 -1570 3 107.35 -65.88 -45.35 0.435 1569 -1571 3 108.21 -65.31 -46.02 0.435 1570 -1572 3 108.86 -65.26 -46.23 0.435 1571 -1573 3 57.45 -37.93 5.18 0.435 1472 -1574 3 58.41 -39.38 5.05 0.435 1573 -1575 3 60.03 -41.0 4.92 0.435 1574 -1576 3 61.15 -41.56 4.74 0.435 1575 -1577 3 62.73 -42.29 4.33 0.435 1576 -1578 3 64.53 -43.26 4.27 0.435 1577 -1579 3 65.45 -43.49 2.91 0.435 1578 -1580 3 66.15 -43.82 2.29 0.435 1579 -1581 3 66.59 -43.97 1.91 0.435 1580 -1582 3 67.75 -44.47 1.14 0.435 1581 -1583 3 68.43 -44.78 0.44 0.435 1582 -1584 3 69.98 -45.06 -0.15 0.435 1583 -1585 3 70.49 -45.56 -1.39 0.435 1584 -1586 3 71.18 -46.16 -1.43 0.435 1585 -1587 3 71.43 -46.25 -2.57 0.435 1586 -1588 3 71.94 -46.75 -3.67 0.435 1587 -1589 3 72.45 -48.01 -3.86 0.435 1588 -1590 3 72.46 -48.21 -3.96 0.435 1589 -1591 3 73.2 -49.67 -4.09 0.435 1590 -1592 3 73.29 -50.15 -5.72 0.435 1591 -1593 3 73.79 -51.15 -6.19 0.435 1592 -1594 3 74.07 -51.95 -6.72 0.435 1593 -1595 3 74.61 -53.11 -7.8 0.435 1594 -1596 3 74.89 -53.91 -8.33 0.435 1595 -1597 3 75.4 -54.95 -8.5 0.435 1596 -1598 3 75.71 -56.18 -9.15 0.435 1597 -1599 3 75.77 -57.02 -9.3 0.435 1598 -1600 3 76.27 -58.05 -9.55 0.435 1599 -1601 3 76.8 -59.28 -9.97 0.435 1600 -1602 3 77.35 -60.91 -10.66 0.435 1601 -1603 3 77.43 -62.18 -10.86 0.435 1602 -1604 3 77.03 -62.62 -11.06 0.435 1603 -1605 3 77.09 -62.94 -12.23 0.435 1604 -1606 3 77.37 -63.69 -13.21 0.435 1605 -1607 3 77.43 -64.54 -13.29 0.435 1606 -1608 3 77.99 -66.44 -13.48 0.435 1607 -1609 3 78.69 -67.26 -13.61 0.435 1608 -1610 3 79.22 -68.19 -14.75 0.435 1609 -1611 3 79.5 -69.25 -14.86 0.435 1610 -1612 3 33.53 -26.95 5.16 0.435 1382 -1613 3 33.0 -28.91 4.94 0.435 1612 -1614 3 33.95 -30.35 4.81 0.435 1613 -1615 3 34.47 -31.4 4.72 0.435 1614 -1616 3 35.16 -31.81 4.69 0.435 1615 -1617 3 35.41 -31.89 3.4 0.435 1616 -1618 3 36.91 -31.37 3.49 0.435 1617 -1619 3 37.35 -31.51 3.11 0.435 1618 -1620 3 38.63 -31.0 3.12 0.435 1619 -1621 3 39.75 -31.35 3.04 0.435 1620 -1622 3 41.08 -31.37 1.86 0.435 1621 -1623 3 42.41 -31.44 1.28 0.435 1622 -1624 3 44.82 -31.65 0.56 0.435 1623 -1625 3 46.34 -31.51 0.16 0.435 1624 -1626 3 47.45 -31.38 -0.39 0.435 1625 -1627 3 48.32 -31.53 -0.46 0.435 1626 -1628 3 49.9 -31.99 -1.45 0.435 1627 -1629 3 51.03 -32.55 -1.64 0.435 1628 -1630 3 52.16 -33.1 -1.82 0.435 1629 -1631 3 52.62 -33.49 -2.0 0.435 1630 -1632 3 52.66 -33.84 -2.86 0.435 1631 -1633 3 53.13 -34.45 -2.91 0.435 1632 -1634 3 53.41 -35.28 -3.22 0.435 1633 -1635 3 53.66 -35.67 -3.48 0.435 1634 -1636 3 54.13 -36.29 -3.53 0.435 1635 -1637 3 54.61 -36.89 -3.66 0.435 1636 -1638 3 56.82 -37.37 -4.03 0.435 1637 -1639 3 57.92 -37.2 -4.97 0.435 1638 -1640 3 58.82 -37.28 -5.78 0.435 1639 -1641 3 60.17 -37.78 -6.33 0.435 1640 -1642 3 61.29 -37.82 -7.44 0.435 1641 -1643 3 62.84 -37.83 -8.53 0.435 1642 -1644 3 63.31 -37.95 -9.14 0.435 1643 -1645 3 63.99 -38.31 -9.39 0.435 1644 -1646 3 64.7 -38.82 -10.33 0.435 1645 -1647 3 65.4 -39.36 -11.12 0.435 1646 -1648 3 66.36 -40.3 -11.94 0.435 1647 -1649 3 68.16 -41.26 -12.08 0.435 1648 -1650 3 35.47 -33.7 4.5 0.435 1616 -1651 3 35.98 -34.75 4.41 0.435 1650 -1652 3 36.08 -36.25 4.25 0.435 1651 -1653 3 36.6 -37.72 4.11 0.435 1652 -1654 3 36.73 -39.87 3.9 0.435 1653 -1655 3 36.49 -42.68 3.6 0.435 1654 -1656 3 36.15 -44.21 3.43 0.435 1655 -1657 3 36.21 -45.28 3.32 0.435 1656 -1658 3 36.71 -46.1 3.25 0.435 1657 -1659 3 37.21 -47.15 3.15 0.435 1658 -1660 3 37.7 -48.2 3.06 0.435 1659 -1661 3 37.32 -48.87 2.98 0.435 1660 -1662 3 36.54 -50.42 2.8 0.435 1661 -1663 3 36.67 -52.56 2.65 0.435 1662 -1664 3 36.39 -54.73 2.42 0.435 1663 -1665 3 36.73 -56.64 2.23 0.435 1664 -1666 3 36.95 -57.17 3.09 0.435 1665 -1667 3 37.01 -58.52 3.77 0.435 1666 -1668 3 37.3 -59.02 2.3 0.435 1667 -1669 3 37.0 -60.16 0.6 0.435 1668 -1670 3 37.08 -61.43 0.23 0.435 1669 -1671 3 37.42 -63.04 -0.67 0.435 1670 -1672 3 38.13 -63.82 -1.18 0.435 1671 -1673 3 38.39 -64.14 -2.12 0.435 1672 -1674 3 38.67 -64.98 -2.27 0.435 1673 -1675 3 39.16 -65.8 -2.42 0.435 1674 -1676 3 39.19 -66.23 -2.47 0.435 1675 -1677 3 39.27 -67.51 -2.6 0.435 1676 -1678 3 39.32 -68.36 -2.68 0.435 1677 -1679 3 39.38 -68.96 -3.27 0.435 1678 -1680 3 40.09 -69.76 -3.41 0.435 1679 -1681 3 41.05 -71.22 -3.54 0.435 1680 -1682 3 41.35 -71.91 -5.03 0.435 1681 -1683 3 41.62 -72.74 -5.26 0.435 1682 -1684 3 41.69 -73.81 -5.37 0.435 1683 -1685 3 41.79 -74.76 -6.75 0.435 1684 -1686 3 41.85 -75.61 -6.83 0.435 1685 -1687 3 42.38 -77.3 -6.99 0.435 1686 -1688 3 42.66 -78.13 -7.07 0.435 1687 -1689 3 42.93 -78.99 -7.16 0.435 1688 -1690 3 43.39 -79.39 -7.27 0.435 1689 -1691 3 43.45 -79.68 -8.65 0.435 1690 -1692 3 43.56 -81.09 -9.55 0.435 1691 -1693 3 43.91 -83.0 -9.74 0.435 1692 -1694 3 44.16 -83.62 -10.02 0.435 1693 -1695 3 44.45 -84.39 -10.78 0.435 1694 -1696 3 44.53 -85.13 -12.05 0.435 1695 -1697 3 44.61 -86.18 -12.24 0.435 1696 -1698 3 44.67 -86.73 -13.2 0.435 1697 -1699 3 44.79 -88.14 -14.31 0.435 1698 -1700 3 44.89 -89.37 -15.04 0.435 1699 -1701 3 45.42 -90.54 -15.91 0.435 1700 -1702 3 45.47 -91.39 -15.99 0.435 1701 -1703 3 45.57 -92.86 -16.59 0.435 1702 -1704 3 46.01 -92.83 -16.66 0.435 1703 -1705 3 46.53 -94.07 -16.78 0.435 1704 -1706 3 46.87 -95.99 -16.97 0.435 1705 -1707 3 46.12 -97.97 -17.19 0.435 1706 -1708 3 46.2 -99.25 -17.32 0.435 1707 -1709 3 47.16 -100.23 -17.85 0.435 1708 -1710 3 48.5 -100.77 -18.18 0.435 1709 -1711 3 49.42 -101.57 -18.24 0.435 1710 -1712 3 49.94 -102.28 -19.35 0.435 1711 -1713 3 49.98 -102.64 -20.07 0.435 1712 -1714 3 49.19 -103.97 -20.37 0.435 1713 -1715 3 49.26 -105.04 -20.55 0.435 1714 -1716 3 49.12 -105.91 -20.73 0.435 1715 -1717 3 49.18 -106.2 -22.11 0.435 1716 -1718 3 48.81 -106.52 -23.51 0.435 1717 -1719 3 48.86 -107.11 -24.1 0.435 1718 -1720 3 48.9 -106.93 -25.89 0.435 1719 -1721 3 48.95 -107.26 -26.89 0.435 1720 -1722 3 48.57 -107.9 -27.05 0.435 1721 -1723 3 48.61 -108.28 -27.69 0.435 1722 -1724 3 48.22 -108.89 -28.29 0.435 1723 -1725 3 48.26 -109.26 -28.86 0.435 1724 -1726 3 48.75 -109.87 -28.98 0.435 1725 -1727 3 48.85 -111.32 -29.66 0.435 1726 -1728 3 48.94 -112.04 -31.08 0.435 1727 -1729 3 49.19 -112.14 -32.07 0.435 1728 -1730 3 49.25 -112.99 -32.23 0.435 1729 -1731 3 49.3 -113.84 -32.39 0.435 1730 -1732 3 49.33 -114.26 -32.44 0.435 1731 -1733 3 49.24 -115.37 -34.36 0.435 1732 -1734 3 48.47 -116.65 -35.19 0.435 1733 -1735 3 48.53 -117.24 -35.78 0.435 1734 -1736 3 47.52 -118.09 -36.57 0.435 1735 -1737 3 47.76 -118.21 -37.4 0.435 1736 -1738 3 47.83 -118.75 -38.44 0.435 1737 -1739 3 47.84 -118.68 -39.1 0.435 1738 -1740 3 47.91 -119.48 -39.79 0.435 1739 -1741 3 47.56 -120.27 -40.78 0.435 1740 -1742 3 47.43 -121.51 -41.37 0.435 1741 -1743 3 47.06 -122.39 -41.62 0.435 1742 -1744 3 47.13 -122.92 -42.66 0.435 1743 -1745 3 47.18 -123.5 -43.39 0.435 1744 -1746 3 46.82 -124.33 -44.16 0.435 1745 -1747 3 46.26 -125.64 -44.39 0.435 1746 -1748 3 45.92 -126.9 -44.98 0.435 1747 -1749 3 45.56 -127.41 -46.62 0.435 1748 -1750 3 45.21 -127.94 -47.97 0.435 1749 -1751 3 45.26 -128.27 -48.98 0.435 1750 -1752 3 44.88 -129.1 -49.59 0.435 1751 -1753 3 44.96 -129.86 -50.73 0.435 1752 -1754 3 45.01 -129.96 -51.79 0.435 1753 -1755 3 45.29 -130.78 -52.1 0.435 1754 -1756 3 45.55 -131.13 -52.73 0.435 1755 -1757 3 45.8 -131.97 -52.89 0.435 1756 -1758 3 45.87 -132.55 -53.63 0.435 1757 -1759 3 45.92 -133.39 -53.78 0.435 1758 -1760 3 45.99 -133.95 -54.68 0.435 1759 -1761 3 46.02 -134.06 -55.58 0.435 1760 -1762 3 46.07 -134.7 -55.8 0.435 1761 -1763 3 46.13 -135.21 -57.14 0.435 1762 -1764 3 46.18 -135.55 -57.99 0.435 1763 -1765 3 46.47 -136.09 -58.95 0.435 1764 -1766 3 46.52 -136.94 -59.12 0.435 1765 -1767 3 46.33 -137.37 -59.16 0.435 1766 -1768 3 46.15 -138.07 -58.94 0.435 1767 -1769 3 46.2 -138.71 -59.0 0.435 1768 -1770 3 45.82 -139.02 -60.47 0.435 1769 -1771 3 45.48 -140.08 -61.5 0.435 1770 -1772 3 45.18 -141.44 -63.3 0.435 1771 -1773 3 45.31 -142.81 -64.72 0.435 1772 -1774 3 44.53 -144.1 -65.32 0.435 1773 -1775 3 43.31 -145.24 -65.55 0.435 1774 -1776 3 42.27 -145.43 -66.5 0.435 1775 -1777 3 41.27 -146.17 -68.4 0.435 1776 -1778 3 40.0 -146.41 -68.91 0.435 1777 -1779 3 39.34 -145.95 -69.48 0.435 1778 -1780 3 39.12 -145.47 -70.19 0.435 1779 -1781 3 38.27 -145.19 -71.39 0.435 1780 -1782 3 37.66 -145.04 -73.27 0.435 1781 -1783 3 36.18 -145.51 -73.8 0.435 1782 -1784 3 35.38 -145.9 -74.77 0.435 1783 -1785 3 34.75 -146.09 -75.4 0.435 1784 -1786 3 34.36 -146.47 -76.14 0.435 1785 -1787 3 -1.87 -7.91 -3.58 1.95 1 -1788 3 -1.88 -7.93 -3.36 1.95 1787 -1789 3 -2.04 -8.83 -3.3 1.41 1788 -1790 3 -2.46 -9.07 -3.26 1.41 1789 -1791 3 -3.08 -9.83 -2.6 1.41 1790 -1792 3 -3.06 -9.74 -3.49 1.41 1791 -1793 3 -3.22 -10.82 -3.61 1.085 1792 -1794 3 -3.62 -11.28 -3.6 1.085 1793 -1795 3 -3.6 -11.71 -3.64 1.085 1794 -1796 3 -3.75 -12.58 -3.73 1.085 1795 -1797 3 -4.61 -13.19 -2.61 0.65 1796 -1798 3 -5.76 -12.39 -2.55 0.65 1797 -1799 3 -6.84 -12.46 -2.59 0.65 1798 -1800 3 -7.88 -12.95 -2.73 0.54 1799 -1801 3 -9.8 -13.5 -2.83 0.54 1800 -1802 3 -11.46 -15.43 -1.95 0.54 1801 -1803 3 -12.71 -16.16 -1.97 0.54 1802 -1804 3 -14.18 -16.92 -1.86 0.54 1803 -1805 3 -14.62 -17.46 -1.1 0.54 1804 -1806 3 -15.03 -17.97 -0.55 0.54 1805 -1807 3 -16.51 -18.73 -0.52 0.54 1806 -1808 3 -18.18 -19.97 -0.09 0.54 1807 -1809 3 -19.0 -20.9 0.01 0.54 1808 -1810 3 -21.24 -23.21 -0.12 0.54 1809 -1811 3 -22.87 -24.8 -0.32 0.54 1810 -1812 3 -23.72 -25.31 -0.17 0.54 1811 -1813 3 -25.62 -26.08 -0.22 0.54 1812 -1814 3 -27.32 -26.62 -0.31 0.54 1813 -1815 3 -27.56 -26.2 -0.27 0.54 1814 -1816 3 -27.89 -26.6 -2.96 0.325 1815 -1817 3 -28.28 -26.66 -4.71 0.435 1816 -1818 3 -29.08 -27.58 -4.68 0.435 1817 -1819 3 -29.71 -28.06 -4.66 0.435 1818 -1820 3 -30.73 -28.96 -5.08 0.435 1819 -1821 3 -31.54 -29.34 -6.12 0.435 1820 -1822 3 -32.36 -30.03 -6.22 0.435 1821 -1823 3 -33.65 -30.31 -6.35 0.435 1822 -1824 3 -34.95 -30.13 -6.89 0.435 1823 -1825 3 -36.89 -29.95 -7.66 0.435 1824 -1826 3 -38.44 -29.16 -7.92 0.435 1825 -1827 3 -39.74 -29.23 -8.04 0.435 1826 -1828 3 -41.47 -29.29 -8.46 0.435 1827 -1829 3 -42.54 -29.1 -8.91 0.435 1828 -1830 3 -43.6 -29.37 -9.05 0.435 1829 -1831 3 -44.43 -29.53 -10.14 0.435 1830 -1832 3 -45.26 -29.94 -10.88 0.435 1831 -1833 3 -46.06 -30.84 -11.07 0.435 1832 -1834 3 -46.88 -31.53 -11.31 0.435 1833 -1835 3 -48.15 -32.0 -11.76 0.435 1834 -1836 3 -50.03 -32.69 -12.56 0.435 1835 -1837 3 -51.76 -32.78 -12.68 0.435 1836 -1838 3 -53.27 -32.29 -14.17 0.435 1837 -1839 3 -54.79 -32.14 -14.57 0.435 1838 -1840 3 -56.09 -32.22 -14.6 0.435 1839 -1841 3 -57.58 -32.51 -14.67 0.435 1840 -1842 3 -59.07 -32.49 -15.84 0.435 1841 -1843 3 -60.63 -31.7 -16.1 0.435 1842 -1844 3 -62.14 -31.78 -16.21 0.435 1843 -1845 3 -62.1 -31.63 -17.63 0.435 1844 -1846 3 -63.39 -31.94 -17.61 0.435 1845 -1847 3 -64.26 -32.01 -17.49 0.435 1846 -1848 3 -65.77 -31.8 -18.34 0.435 1847 -1849 3 -66.64 -31.33 -19.22 0.435 1848 -1850 3 -67.73 -31.4 -19.25 0.435 1849 -1851 3 -68.99 -31.91 -19.33 0.435 1850 -1852 3 -69.81 -32.58 -19.57 0.435 1851 -1853 3 -70.85 -33.03 -20.09 0.435 1852 -1854 3 -72.31 -33.43 -21.3 0.435 1853 -1855 3 -73.8 -33.95 -21.46 0.435 1854 -1856 3 -75.25 -35.11 -21.61 0.435 1855 -1857 3 -75.62 -36.0 -21.79 0.435 1856 -1858 3 -76.68 -36.26 -21.92 0.435 1857 -1859 3 -77.28 -36.92 -22.23 0.435 1858 -1860 3 -78.33 -37.41 -22.31 0.435 1859 -1861 3 -79.2 -37.47 -22.33 0.435 1860 -1862 3 -80.76 -36.91 -22.31 0.435 1861 -1863 3 -82.03 -37.17 -22.74 0.435 1862 -1864 3 -82.64 -37.57 -23.4 0.435 1863 -1865 3 -82.59 -37.89 -24.57 0.435 1864 -1866 3 -83.61 -38.56 -25.11 0.435 1865 -1867 3 -84.89 -38.85 -25.24 0.435 1866 -1868 3 -86.38 -39.1 -25.69 0.435 1867 -1869 3 -88.12 -38.99 -25.79 0.435 1868 -1870 3 -88.91 -39.37 -25.85 0.435 1869 -1871 3 -88.62 -39.85 -27.32 0.435 1870 -1872 3 -88.58 -40.5 -27.31 0.435 1871 -1873 3 -88.48 -41.47 -28.47 0.435 1872 -1874 3 -88.86 -42.07 -29.21 0.435 1873 -1875 3 -89.02 -42.39 -30.38 0.435 1874 -1876 3 -89.41 -43.06 -30.46 0.435 1875 -1877 3 -89.78 -44.43 -30.08 0.435 1876 -1878 3 -89.73 -45.33 -29.87 0.435 1877 -1879 3 -89.9 -45.14 -31.75 0.435 1878 -1880 3 -90.28 -45.47 -32.99 0.435 1879 -1881 3 -90.64 -46.28 -33.76 0.435 1880 -1882 3 -91.0 -46.55 -35.61 0.435 1881 -1883 3 -90.93 -47.32 -36.44 0.435 1882 -1884 3 -91.75 -48.01 -36.6 0.435 1883 -1885 3 -91.71 -47.84 -38.24 0.435 1884 -1886 3 -92.08 -48.68 -38.86 0.435 1885 -1887 3 -92.45 -49.24 -39.91 0.435 1886 -1888 3 -92.85 -49.41 -40.7 0.435 1887 -1889 3 -92.81 -49.77 -41.4 0.435 1888 -1890 3 -92.77 -50.14 -42.05 0.435 1889 -1891 3 -92.49 -50.74 -42.33 0.435 1890 -1892 3 -92.24 -51.08 -43.12 0.435 1891 -1893 3 -92.2 -51.72 -43.25 0.435 1892 -1894 3 -92.15 -52.33 -43.62 0.54 1893 -1895 3 -92.09 -53.16 -44.0 0.54 1894 -1896 3 -91.57 -53.91 -44.82 0.54 1895 -1897 3 -91.29 -54.68 -45.57 0.54 1896 -1898 3 -90.78 -55.44 -46.39 0.54 1897 -1899 3 -90.56 -55.61 -46.63 0.54 1898 -1900 3 -90.5 -56.2 -47.21 0.54 1899 -1901 3 -90.46 -56.6 -47.56 0.54 1900 -1902 3 -90.41 -57.16 -48.45 0.54 1901 -1903 3 -90.37 -57.53 -49.09 0.54 1902 -1904 3 -90.3 -57.8 -50.61 0.54 1903 -1905 3 -90.24 -58.61 -51.15 0.54 1904 -1906 3 -90.16 -59.68 -51.34 0.54 1905 -1907 3 -90.07 -60.91 -51.99 0.54 1906 -1908 3 -89.99 -61.66 -53.12 0.54 1907 -1909 3 -89.92 -62.45 -53.8 0.54 1908 -1910 3 -90.68 -63.45 -55.21 0.54 1909 -1911 3 -91.25 -64.48 -55.93 0.54 1910 -1912 3 -91.35 -65.92 -56.98 0.54 1911 -1913 3 -91.27 -66.66 -58.11 0.54 1912 -1914 3 -91.63 -67.47 -58.89 0.54 1913 -1915 3 -91.53 -68.39 -60.49 0.54 1914 -1916 3 -91.41 -69.8 -61.54 0.54 1915 -1917 3 -91.8 -70.16 -62.41 0.54 1916 -1918 3 -92.15 -70.67 -64.13 0.54 1917 -1919 3 -92.09 -70.98 -65.28 0.54 1918 -1920 3 -92.02 -71.76 -66.05 0.54 1919 -1921 3 -92.4 -72.14 -67.0 0.54 1920 -1922 3 -92.79 -72.7 -68.04 0.54 1921 -1923 3 -93.58 -73.06 -69.38 0.54 1922 -1924 3 -93.97 -73.66 -70.05 0.54 1923 -1925 3 -93.89 -74.42 -71.03 0.54 1924 -1926 3 -93.85 -75.06 -71.1 0.54 1925 -1927 3 -94.65 -75.98 -71.21 0.54 1926 -1928 3 -95.45 -76.79 -72.22 0.54 1927 -1929 3 -95.4 -77.13 -73.16 0.54 1928 -1930 3 -96.18 -78.18 -74.04 0.54 1929 -1931 3 -96.97 -79.02 -74.68 0.54 1930 -1932 3 -97.36 -79.39 -75.7 0.54 1931 -1933 3 -97.69 -80.37 -76.87 0.54 1932 -1934 3 -98.46 -81.62 -77.99 0.54 1933 -1935 3 -98.36 -82.84 -78.65 0.54 1934 -1936 3 -98.72 -83.66 -79.41 0.54 1935 -1937 3 -99.08 -84.75 -79.62 0.54 1936 -1938 3 -99.65 -86.07 -79.77 0.54 1937 -1939 3 -99.39 -86.71 -79.83 0.54 1938 -1940 3 -100.16 -87.71 -81.07 0.54 1939 -1941 3 -99.83 -88.59 -83.04 0.54 1940 -1942 3 -99.76 -89.35 -83.87 0.54 1941 -1943 3 -100.11 -90.41 -84.44 0.54 1942 -1944 3 -100.04 -91.23 -84.82 0.54 1943 -1945 3 -99.95 -92.47 -85.48 0.54 1944 -1946 3 -100.27 -93.91 -86.39 0.54 1945 -1947 3 -101.05 -95.23 -86.77 0.54 1946 -1948 3 -101.36 -96.67 -87.76 0.54 1947 -1949 3 -102.33 -98.39 -88.56 0.54 1948 -1950 3 -103.48 -100.29 -89.76 0.54 1949 -1951 3 -103.38 -101.25 -90.99 0.54 1950 -1952 3 -104.15 -102.8 -91.25 0.54 1951 -1953 3 -104.07 -103.86 -91.35 0.54 1952 -1954 3 -104.45 -104.47 -92.03 0.54 1953 -1955 3 -104.81 -105.51 -92.75 0.54 1954 -1956 3 -104.92 -106.98 -93.36 0.54 1955 -1957 3 -105.29 -107.85 -93.61 0.54 1956 -1958 3 -105.24 -108.19 -94.46 0.54 1957 -1959 3 -105.18 -108.49 -95.77 0.54 1958 -1960 3 -105.15 -108.87 -96.19 0.54 1959 -1961 3 -89.59 -39.42 -26.77 0.435 1870 -1962 3 -89.56 -39.53 -27.76 0.435 1961 -1963 3 -90.37 -39.98 -28.13 0.435 1962 -1964 3 -90.98 -40.36 -29.08 0.435 1963 -1965 3 -91.79 -40.73 -30.2 0.435 1964 -1966 3 -92.64 -41.21 -30.27 0.435 1965 -1967 3 -93.68 -41.67 -30.79 0.435 1966 -1968 3 -95.95 -43.02 -31.74 0.435 1967 -1969 3 -97.62 -43.97 -31.96 0.435 1968 -1970 3 -99.09 -44.69 -32.29 0.435 1969 -1971 3 -99.72 -44.91 -32.63 0.435 1970 -1972 3 -99.82 -45.64 -33.01 0.435 1971 -1973 3 -100.84 -46.57 -33.13 0.435 1972 -1974 3 -102.96 -47.34 -33.33 0.435 1973 -1975 3 -102.94 -47.24 -34.3 0.435 1974 -1976 3 -104.01 -47.24 -34.93 0.435 1975 -1977 3 -105.07 -47.5 -35.13 0.435 1976 -1978 3 -106.13 -47.47 -36.06 0.435 1977 -1979 3 -107.51 -46.27 -35.97 0.435 1978 -1980 3 -108.82 -45.89 -36.33 0.435 1979 -1981 3 -110.63 -44.67 -36.55 0.435 1980 -1982 3 -112.17 -44.29 -36.93 0.435 1981 -1983 3 -113.02 -44.03 -37.9 0.435 1982 -1984 3 -113.93 -43.17 -38.37 0.435 1983 -1985 3 -115.29 -41.94 -38.64 0.435 1984 -1986 3 -117.25 -41.52 -39.55 0.435 1985 -1987 3 -118.36 -41.16 -39.54 0.435 1986 -1988 3 -119.26 -40.03 -40.5 0.435 1987 -1989 3 -120.39 -39.46 -40.54 0.435 1988 -1990 3 -120.86 -38.55 -41.06 0.435 1989 -1991 3 -121.96 -37.94 -41.47 0.435 1990 -1992 3 -121.97 -37.43 -42.18 0.435 1991 -1993 3 -122.65 -37.31 -41.73 0.435 1992 -1994 3 -123.55 -36.94 -41.64 0.435 1993 -1995 3 -124.24 -36.35 -41.51 0.435 1994 -1996 3 -124.91 -35.66 -42.21 0.435 1995 -1997 3 -125.56 -35.17 -43.16 0.435 1996 -1998 3 -28.4 -26.9 -0.37 0.54 1815 -1999 3 -29.67 -27.43 -0.15 0.54 1998 -2000 3 -31.37 -27.97 -0.25 0.54 1999 -2001 3 -33.05 -28.72 -0.36 0.54 2000 -2002 3 -34.27 -30.09 -0.46 0.54 2001 -2003 3 -34.25 -30.55 -0.13 0.54 2002 -2004 3 -34.16 -31.84 -0.19 0.54 2003 -2005 3 -34.76 -33.54 1.05 0.54 2004 -2006 3 -34.73 -34.24 1.65 0.54 2005 -2007 3 -35.5 -35.53 0.98 0.54 2006 -2008 3 -36.74 -36.18 0.13 0.54 2007 -2009 3 -38.38 -37.28 -0.77 0.54 2008 -2010 3 -39.59 -38.59 -1.39 0.54 2009 -2011 3 -40.41 -39.27 -1.56 0.54 2010 -2012 3 -41.17 -40.83 -1.74 0.54 2011 -2013 3 -41.78 -41.48 -2.12 0.54 2012 -2014 3 -42.79 -42.63 -2.26 0.54 2013 -2015 3 -44.67 -43.8 -2.43 0.54 2014 -2016 3 -45.9 -44.67 -3.3 0.54 2015 -2017 3 -46.01 -45.92 -3.89 0.54 2016 -2018 3 -45.96 -46.55 -4.09 0.54 2017 -2019 3 -46.75 -47.88 -4.25 0.54 2018 -2020 3 -47.39 -48.98 -2.5 0.54 2019 -2021 3 -48.17 -50.31 -2.65 0.54 2020 -2022 3 -49.0 -51.33 -1.8 0.54 2021 -2023 3 -50.02 -52.49 -1.65 0.54 2022 -2024 3 -50.81 -53.86 -1.57 0.54 2023 -2025 3 -51.17 -55.43 -1.22 0.54 2024 -2026 3 -51.56 -56.12 -1.15 0.54 2025 -2027 3 -52.39 -56.84 -0.95 0.54 2026 -2028 3 -52.8 -57.34 -0.62 0.54 2027 -2029 3 -53.21 -57.83 -0.31 0.54 2028 -2030 3 -53.62 -58.58 0.34 0.54 2029 -2031 3 -53.63 -59.16 1.71 0.54 2030 -2032 3 -54.47 -59.7 2.24 0.54 2031 -2033 3 -54.47 -60.22 3.17 0.54 2032 -2034 3 -54.46 -60.71 3.72 0.54 2033 -2035 3 -54.87 -61.71 4.67 0.54 2034 -2036 3 -55.65 -62.83 4.53 0.54 2035 -2037 3 -56.45 -64.19 4.59 0.54 2036 -2038 3 -56.83 -65.1 4.79 0.54 2037 -2039 3 -57.6 -66.92 5.11 0.54 2038 -2040 3 -58.63 -68.15 5.79 0.54 2039 -2041 3 -59.27 -69.24 7.54 0.54 2040 -2042 3 -3.66 -14.09 -3.89 0.76 1796 -2043 3 -2.93 -15.33 -4.0 0.76 2042 -2044 3 -2.9 -15.76 -3.96 0.76 2043 -2045 3 -2.63 -16.31 -4.77 0.76 2044 -2046 3 -2.41 -16.85 -3.69 0.76 2045 -2047 3 -2.19 -17.34 -2.9 0.76 2046 -2048 3 -1.95 -17.78 -2.79 0.76 2047 -2049 3 -1.73 -18.35 -1.34 0.76 2048 -2050 3 -1.26 -19.25 -0.74 0.76 2049 -2051 3 -0.57 -20.09 -0.51 0.76 2050 -2052 3 -0.09 -20.96 -0.36 0.76 2051 -2053 3 0.37 -21.37 -0.32 0.76 2052 -2054 3 0.6 -21.79 -0.21 0.76 2053 -2055 3 1.29 -22.4 -0.18 0.76 2054 -2056 3 2.21 -23.23 -0.02 0.76 2055 -2057 3 2.66 -23.65 0.09 0.76 2056 -2058 3 3.35 -24.25 0.05 0.76 2057 -2059 3 3.58 -24.72 0.46 0.76 2058 -2060 3 4.04 -25.12 0.49 0.76 2059 -2061 3 4.28 -26.09 1.61 0.65 2060 -2062 3 4.53 -26.49 1.42 0.65 2061 -2063 3 4.76 -26.95 1.76 0.65 2062 -2064 3 5.2 -27.72 3.12 0.65 2063 -2065 3 5.42 -28.21 3.91 0.65 2064 -2066 3 5.43 -28.5 4.62 0.65 2065 -2067 3 5.45 -29.19 5.0 0.65 2066 -2068 3 5.71 -29.85 5.24 0.65 2067 -2069 3 5.93 -30.33 5.88 0.65 2068 -2070 3 5.95 -31.06 6.63 0.65 2069 -2071 3 5.95 -31.32 7.14 0.65 2070 -2072 3 6.19 -31.79 7.55 0.65 2071 -2073 3 6.47 -32.85 7.45 0.65 2072 -2074 3 6.77 -34.12 7.32 0.65 2073 -2075 3 6.81 -34.79 7.47 0.65 2074 -2076 3 7.27 -35.46 7.95 0.65 2075 -2077 3 7.73 -36.08 8.05 0.65 2076 -2078 3 8.43 -36.94 8.28 0.65 2077 -2079 3 8.9 -37.58 8.44 0.65 2078 -2080 3 9.81 -38.7 9.4 0.65 2079 -2081 3 10.05 -39.16 9.73 0.65 2080 -2082 3 10.58 -40.88 9.95 0.65 2081 -2083 3 11.04 -41.53 10.2 0.65 2082 -2084 3 11.3 -42.42 10.56 0.65 2083 -2085 3 11.36 -43.28 10.47 0.65 2084 -2086 3 11.6 -43.72 10.74 0.65 2085 -2087 3 11.83 -44.15 10.85 0.65 2086 -2088 3 12.08 -44.57 10.81 0.65 2087 -2089 4 -1.69 6.41 -3.07 2.06 1 -2090 4 -3.12 8.26 -2.91 1.085 2089 -2091 4 -4.24 9.64 -4.3 0.975 2090 -2092 4 -4.45 10.02 -4.27 0.975 2091 -2093 4 -4.03 10.53 -4.74 0.54 2092 -2094 4 -3.64 11.2 -4.66 0.54 2093 -2095 4 -3.02 11.88 -4.57 0.54 2094 -2096 4 -2.19 12.41 -5.02 0.54 2095 -2097 4 -1.95 13.03 -6.76 0.54 2096 -2098 4 -1.74 13.57 -7.53 0.54 2097 -2099 4 -1.69 13.77 -9.46 0.54 2098 -2100 4 -1.03 13.86 -10.04 0.54 2099 -2101 4 -0.87 14.73 -10.03 0.54 2100 -2102 4 -0.44 15.3 -10.94 0.54 2101 -2103 4 -0.26 16.28 -11.89 0.54 2102 -2104 4 -0.07 17.24 -12.69 0.54 2103 -2105 4 0.13 17.5 -13.03 0.54 2104 -2106 4 0.32 18.25 -13.78 0.54 2105 -2107 4 0.49 19.43 -14.71 0.435 2106 -2108 4 1.33 20.22 -15.43 0.435 2107 -2109 4 1.51 20.86 -15.29 0.435 2108 -2110 4 1.72 21.38 -15.91 0.435 2109 -2111 4 1.92 22.2 -17.41 0.435 2110 -2112 4 2.93 23.86 -18.19 0.435 2111 -2113 4 3.37 24.46 -19.54 0.435 2112 -2114 4 3.97 25.62 -19.94 0.435 2113 -2115 4 4.36 26.61 -20.8 0.435 2114 -2116 4 4.34 27.64 -22.36 0.435 2115 -2117 4 4.66 29.6 -22.15 0.435 2116 -2118 4 4.84 30.31 -22.59 0.435 2117 -2119 4 5.26 31.06 -23.41 0.435 2118 -2120 4 5.46 32.12 -25.1 0.435 2119 -2121 4 6.02 33.71 -25.46 0.435 2120 -2122 4 7.29 34.76 -26.45 0.435 2121 -2123 4 7.92 35.26 -26.76 0.435 2122 -2124 4 9.72 38.56 -28.11 0.435 2123 -2125 4 9.48 38.99 -28.22 0.435 2124 -2126 4 9.67 39.21 -28.04 0.435 2125 -2127 4 10.08 39.67 -28.06 0.435 2126 -2128 4 10.28 40.69 -29.53 0.435 2127 -2129 4 11.11 41.45 -29.96 0.435 2128 -2130 4 11.35 41.81 -31.12 0.435 2129 -2131 4 11.54 42.82 -32.44 0.435 2130 -2132 4 11.49 43.69 -32.5 0.435 2131 -2133 4 12.1 44.39 -32.57 0.435 2132 -2134 4 12.45 46.23 -33.27 0.435 2133 -2135 4 12.45 46.79 -34.5 0.435 2134 -2136 4 12.84 47.74 -35.15 0.435 2135 -2137 4 13.4 49.33 -35.42 0.435 2136 -2138 4 13.62 50.11 -36.55 0.435 2137 -2139 4 14.22 51.07 -37.11 0.435 2138 -2140 4 14.57 52.39 -37.03 0.435 2139 -2141 4 15.12 54.43 -37.49 0.435 2140 -2142 4 15.45 56.3 -38.5 0.435 2141 -2143 4 16.46 58.17 -39.25 0.435 2142 -2144 4 16.78 60.21 -39.87 0.435 2143 -2145 4 17.59 61.64 -40.61 0.435 2144 -2146 4 17.76 62.81 -41.31 0.435 2145 -2147 4 18.54 64.43 -41.73 0.435 2146 -2148 4 19.25 67.35 -42.23 0.435 2147 -2149 4 19.83 68.75 -42.76 0.435 2148 -2150 4 20.79 70.78 -42.9 0.435 2149 -2151 4 22.01 72.14 -42.73 0.435 2150 -2152 4 23.83 74.2 -42.55 0.435 2151 -2153 4 25.66 76.04 -42.32 0.435 2152 -2154 4 27.1 77.41 -42.14 0.435 2153 -2155 4 28.6 77.76 -42.52 0.435 2154 -2156 4 31.63 77.95 -42.43 0.435 2155 -2157 4 32.99 77.17 -42.55 0.435 2156 -2158 4 34.55 76.12 -41.87 0.435 2157 -2159 4 35.47 75.29 -41.71 0.435 2158 -2160 4 36.13 74.29 -39.99 0.435 2159 -2161 4 37.28 73.02 -39.64 0.435 2160 -2162 4 38.45 71.58 -39.76 0.435 2161 -2163 4 38.89 71.08 -38.75 0.435 2162 -2164 4 39.09 70.48 -36.99 0.435 2163 -2165 4 38.69 70.59 -38.35 0.435 2164 -2166 4 39.12 70.33 -37.76 0.435 2165 -2167 4 39.12 70.36 -37.99 0.435 2166 -2168 4 39.37 70.24 -38.67 0.435 2167 -2169 4 39.66 69.99 -40.35 0.435 2168 -2170 4 39.7 70.15 -41.91 0.435 2169 -2171 4 40.18 69.31 -41.91 0.435 2170 -2172 4 40.41 69.1 -41.85 0.435 2171 -2173 4 40.69 68.87 -43.61 0.435 2172 -2174 4 40.98 68.42 -45.45 0.435 2173 -2175 4 41.04 68.35 -46.89 0.435 2174 -2176 4 41.93 68.49 -47.68 0.435 2175 -2177 4 42.42 68.0 -49.01 0.435 2176 -2178 4 42.69 67.68 -50.01 0.435 2177 -2179 4 43.18 67.16 -50.89 0.435 2178 -2180 4 43.65 67.09 -52.08 0.435 2179 -2181 4 43.95 66.87 -54.05 0.435 2180 -2182 4 44.21 66.26 -54.26 0.435 2181 -2183 4 44.69 66.21 -55.54 0.435 2182 -2184 4 45.15 66.37 -56.79 0.435 2183 -2185 4 46.09 65.95 -58.54 0.435 2184 -2186 4 46.76 66.07 -59.27 0.435 2185 -2187 4 48.03 65.53 -57.42 0.435 2186 -2188 4 48.67 66.29 -58.23 0.435 2187 -2189 4 48.86 67.31 -59.39 0.435 2188 -2190 4 49.29 68.12 -60.89 0.435 2189 -2191 4 49.29 68.95 -62.6 0.435 2190 -2192 4 -5.37 10.72 -5.05 0.975 2092 -2193 4 -5.84 11.44 -4.99 0.975 2192 -2194 4 -6.11 13.03 -5.88 0.54 2193 -2195 4 -7.05 14.04 -5.8 0.54 2194 -2196 4 -7.34 15.32 -5.68 0.435 2195 -2197 4 -8.06 16.35 -5.59 0.435 2196 -2198 4 -7.86 17.13 -6.63 0.435 2197 -2199 4 -7.65 17.64 -7.25 0.435 2198 -2200 4 -7.69 18.29 -7.41 0.435 2199 -2201 4 -8.14 18.99 -8.1 0.435 2200 -2202 4 -8.58 19.52 -9.26 0.435 2201 -2203 4 -8.62 20.18 -9.35 0.435 2202 -2204 4 -8.65 20.59 -9.22 0.435 2203 -2205 4 -8.68 21.01 -9.11 0.435 2204 -2206 4 -8.7 21.51 -9.66 0.435 2205 -2207 4 -8.72 22.51 -10.99 0.435 2206 -2208 4 -8.73 23.0 -11.54 0.435 2207 -2209 4 -9.21 23.86 -11.7 0.435 2208 -2210 4 -9.23 24.56 -12.23 0.435 2209 -2211 4 -9.71 25.73 -13.39 0.435 2210 -2212 4 -9.74 26.39 -13.4 0.435 2211 -2213 4 -10.23 27.26 -13.7 0.435 2212 -2214 4 -10.28 28.11 -13.61 0.435 2213 -2215 4 -10.32 28.76 -13.62 0.435 2214 -2216 4 -10.38 29.61 -13.53 0.435 2215 -2217 4 -10.19 30.83 -14.61 0.435 2216 -2218 4 -10.23 31.5 -14.84 0.435 2217 -2219 4 -10.06 32.4 -15.04 0.435 2218 -2220 4 -9.89 33.32 -15.4 0.435 2219 -2221 4 -9.69 34.04 -16.0 0.435 2220 -2222 4 -9.76 35.16 -16.34 0.435 2221 -2223 4 -9.59 36.02 -16.17 0.435 2222 -2224 4 -9.59 36.06 -16.54 0.435 2223 -2225 4 -9.59 36.6 -17.54 0.435 2224 -2226 4 -9.58 36.9 -18.41 0.435 2225 -2227 4 -9.6 37.64 -19.24 0.435 2226 -2228 4 -9.38 38.24 -20.76 0.435 2227 -2229 4 -9.44 39.1 -20.67 0.435 2228 -2230 4 -9.49 39.96 -20.58 0.435 2229 -2231 4 -10.47 41.04 -18.99 0.435 2230 -2232 4 -10.99 42.29 -18.87 0.435 2231 -2233 4 -11.03 43.2 -19.3 0.435 2232 -2234 4 -11.06 44.17 -20.19 0.435 2233 -2235 4 -11.58 45.65 -20.11 0.435 2234 -2236 4 -11.65 46.73 -20.16 0.435 2235 -2237 4 -12.62 48.44 -20.45 0.435 2236 -2238 4 -13.54 49.73 -20.95 0.435 2237 -2239 4 -14.61 52.93 -21.01 0.435 2238 -2240 4 -14.67 54.01 -21.05 0.435 2239 -2241 4 -15.63 55.77 -21.73 0.435 2240 -2242 4 -16.62 58.14 -22.26 0.435 2241 -2243 4 -16.95 60.11 -22.59 0.435 2242 -2244 4 -17.9 61.63 -23.14 0.435 2243 -2245 4 -18.37 62.52 -23.51 0.435 2244 -2246 4 -18.84 63.41 -24.1 0.435 2245 -2247 4 -18.53 65.66 -24.62 0.435 2246 -2248 4 -18.59 66.8 -25.17 0.435 2247 -2249 4 -18.64 67.66 -25.17 0.435 2248 -2250 4 -18.68 68.6 -25.89 0.435 2249 -2251 4 -18.76 69.91 -25.91 0.435 2250 -2252 4 -18.81 70.78 -25.97 0.435 2251 -2253 4 -19.31 72.07 -26.23 0.435 2252 -2254 4 -19.8 72.92 -26.31 0.435 2253 -2255 4 -19.86 73.78 -26.22 0.435 2254 -2256 4 -19.91 74.65 -26.2 0.435 2255 -2257 4 -20.85 76.67 -27.52 0.435 2256 -2258 4 -20.88 77.64 -28.56 0.435 2257 -2259 4 -20.66 77.98 -29.57 0.435 2258 -2260 4 -20.68 78.7 -30.25 0.435 2259 -2261 4 -21.2 80.23 -30.63 0.435 2260 -2262 4 -21.68 81.32 -30.98 0.435 2261 -2263 4 -23.31 83.19 -31.13 0.435 2262 -2264 4 -23.81 84.49 -31.53 0.435 2263 -2265 4 -24.84 87.05 -31.59 0.435 2264 -2266 4 -25.64 89.35 -31.37 0.435 2265 -2267 4 -26.13 90.18 -31.15 0.435 2266 -2268 4 -26.85 91.2 -30.99 0.435 2267 -2269 4 -27.35 92.51 -31.39 0.435 2268 -2270 4 -27.8 93.24 -32.38 0.435 2269 -2271 4 -28.95 94.5 -32.66 0.435 2270 -2272 4 -30.19 97.06 -33.01 0.435 2271 -2273 4 -31.12 98.33 -33.14 0.435 2272 -2274 4 -32.78 100.63 -33.39 0.435 2273 -2275 4 -33.34 102.76 -33.25 0.435 2274 -2276 4 -34.31 104.46 -33.55 0.435 2275 -2277 4 -34.41 106.22 -33.83 0.435 2276 -2278 4 -36.15 109.81 -33.88 0.435 2277 -2279 4 -36.75 112.63 -34.12 0.435 2278 -2280 4 -36.89 115.02 -34.26 0.435 2279 -2281 4 -38.78 117.5 -34.12 0.435 2280 -2282 4 -40.66 119.53 -33.95 0.435 2281 -2283 4 -41.7 122.48 -33.67 0.435 2282 -2284 4 -42.3 125.02 -33.43 0.435 2283 -2285 4 -42.41 126.73 -33.25 0.435 2284 -2286 4 -44.52 129.19 -33.05 0.435 2285 -2287 4 -45.04 130.45 -32.93 0.435 2286 -2288 4 -45.01 130.82 -34.55 0.435 2287 -2289 4 -45.71 131.42 -34.35 0.435 2288 -2290 4 -45.73 131.85 -34.31 0.435 2289 -2291 4 -46.86 132.67 -34.55 0.435 2290 -2292 4 -7.72 38.87 -19.52 0.435 2227 -2293 4 -7.35 40.26 -20.05 0.435 2292 -2294 4 -6.26 40.67 -21.26 0.435 2293 -2295 4 -6.06 41.37 -21.63 0.435 2294 -2296 4 -5.92 42.75 -22.31 0.435 2295 -2297 4 -5.94 43.48 -23.07 0.435 2296 -2298 4 -6.57 43.52 -23.91 0.435 2297 -2299 4 -6.39 44.47 -24.49 0.435 2298 -2300 4 -5.99 45.22 -25.16 0.435 2299 -2301 4 -5.79 45.93 -25.6 0.435 2300 -2302 4 -5.61 46.89 -26.48 0.435 2301 -2303 4 -5.42 47.65 -27.3 0.435 2302 -2304 4 -5.03 48.82 -27.92 0.435 2303 -2305 4 -4.88 49.94 -28.1 0.435 2304 -2306 4 -5.11 50.64 -28.79 0.435 2305 -2307 4 -5.83 51.67 -28.78 0.435 2306 -2308 4 -5.85 52.14 -29.1 0.435 2307 -2309 4 -5.65 52.9 -30.01 0.435 2308 -2310 4 -5.62 53.06 -31.57 0.435 2309 -2311 4 -6.06 53.52 -32.13 0.435 2310 -2312 4 -6.68 53.61 -33.34 0.435 2311 -2313 4 -7.13 54.29 -33.89 0.435 2312 -2314 4 -7.13 54.6 -34.76 0.435 2313 -2315 4 -7.75 54.39 -35.25 0.435 2314 -2316 4 -7.37 55.59 -36.09 0.435 2315 -2317 4 -7.55 55.22 -36.89 0.435 2316 -2318 4 -7.53 55.85 -38.78 0.435 2317 -2319 4 -7.4 57.36 -38.63 0.435 2318 -2320 4 -7.41 57.84 -39.1 0.435 2319 -2321 4 -8.06 58.1 -39.09 0.435 2320 -2322 4 -8.96 58.49 -39.07 0.435 2321 -2323 4 -9.89 59.28 -39.01 0.435 2322 -2324 4 -9.96 60.04 -37.96 0.435 2323 -2325 4 -10.89 60.48 -36.42 0.435 2324 -2326 4 -10.9 60.77 -37.07 0.435 2325 -2327 4 -11.34 60.74 -37.01 0.435 2326 -2328 4 -11.57 61.42 -37.62 0.435 2327 -2329 4 -11.57 61.73 -38.49 0.435 2328 -2330 4 -11.55 62.08 -39.74 0.435 2329 -2331 4 -11.58 62.78 -40.2 0.435 2330 -2332 4 -11.55 63.15 -41.66 0.435 2331 -2333 4 -11.99 63.69 -42.98 0.435 2332 -2334 4 -11.79 64.14 -43.08 0.435 2333 -2335 4 -11.61 65.09 -43.73 0.435 2334 -2336 4 -11.41 65.59 -44.19 0.435 2335 -2337 4 -11.19 66.17 -45.49 0.435 2336 -2338 4 -10.56 66.71 -46.1 0.435 2337 -2339 4 -10.39 67.6 -46.3 0.435 2338 -2340 4 -10.36 67.74 -47.64 0.435 2339 -2341 4 -10.15 68.52 -48.76 0.435 2340 -2342 4 -10.16 68.8 -49.41 0.435 2341 -2343 4 -10.18 69.8 -50.67 0.435 2342 -2344 4 -10.01 70.93 -51.0 0.435 2343 -2345 4 -10.07 71.79 -50.91 0.435 2344 -2346 4 -10.53 72.49 -51.6 0.435 2345 -2347 4 -10.6 74.04 -51.97 0.435 2346 -2348 4 -10.66 75.45 -53.1 0.435 2347 -2349 4 -10.14 77.66 -53.09 0.435 2348 -2350 4 -10.15 78.17 -53.86 0.435 2349 -2351 4 -10.18 78.85 -54.1 0.435 2350 -2352 4 -9.36 79.85 -54.88 0.435 2351 -2353 4 -9.34 79.92 -55.62 0.435 2352 -2354 4 -9.15 80.63 -56.08 0.435 2353 -2355 4 -9.17 81.35 -56.68 0.435 2354 -2356 4 -9.21 82.27 -57.26 0.435 2355 -2357 4 -9.01 82.76 -57.74 0.435 2356 -2358 4 -9.33 84.48 -57.72 0.435 2357 -2359 4 -8.69 84.81 -58.34 0.435 2358 -2360 4 -8.73 85.73 -58.85 0.435 2359 -2361 4 -8.74 86.25 -59.63 0.435 2360 -2362 4 -7.96 87.81 -59.67 0.435 2361 -2363 4 -10.09 19.69 -9.8 0.435 2202 -2364 4 -11.18 19.93 -10.64 0.435 2363 -2365 4 -12.26 20.12 -11.1 0.435 2364 -2366 4 -13.38 20.97 -11.64 0.435 2365 -2367 4 -14.08 22.3 -12.34 0.435 2366 -2368 4 -14.76 22.99 -12.96 0.435 2367 -2369 4 -14.53 23.1 -14.0 0.435 2368 -2370 4 -14.51 23.15 -14.45 0.435 2369 -2371 4 -14.93 23.71 -15.99 0.435 2370 -2372 4 -14.93 24.54 -17.71 0.435 2371 -2373 4 -16.27 25.38 -18.18 0.435 2372 -2374 4 -16.25 25.48 -19.15 0.435 2373 -2375 4 -17.13 25.93 -19.95 0.435 2374 -2376 4 -17.34 26.47 -21.11 0.435 2375 -2377 4 -17.78 27.24 -22.47 0.435 2376 -2378 4 -17.77 27.55 -23.41 0.435 2377 -2379 4 -18.66 28.17 -23.75 0.435 2378 -2380 4 -18.67 28.39 -23.73 0.435 2379 -2381 4 -18.83 28.11 -25.34 0.435 2380 -2382 4 -19.26 28.09 -25.35 0.435 2381 -2383 4 -19.68 27.86 -25.54 0.435 2382 -2384 4 -19.67 27.9 -25.98 0.435 2383 -2385 4 -20.08 27.96 -26.82 0.435 2384 -2386 4 -20.05 28.1 -28.17 0.435 2385 -2387 4 -20.46 28.13 -28.69 0.435 2386 -2388 4 -20.92 28.86 -29.69 0.435 2387 -2389 4 -21.75 28.63 -30.1 0.435 2388 -2390 4 -22.38 28.67 -30.95 0.435 2389 -2391 4 -22.86 29.58 -31.54 0.435 2390 -2392 4 -23.71 29.59 -32.24 0.435 2391 -2393 4 -25.0 30.04 -33.2 0.435 2392 -2394 4 -25.22 30.02 -33.21 0.435 2393 -2395 4 -26.1 30.49 -34.01 0.435 2394 -2396 4 -26.52 30.5 -34.4 0.435 2395 -2397 4 -26.71 30.32 -34.87 0.435 2396 -2398 4 -28.25 31.19 -35.87 0.435 2397 -2399 4 -28.67 31.53 -37.36 0.435 2398 -2400 4 -28.69 31.98 -37.53 0.435 2399 -2401 4 -28.67 32.07 -38.36 0.435 2400 -2402 4 -29.1 32.31 -38.86 0.435 2401 -2403 4 -29.1 32.58 -39.29 0.435 2402 -2404 4 -29.99 32.98 -39.64 0.435 2403 -2405 4 -29.98 33.02 -40.02 0.435 2404 -2406 4 -30.19 33.59 -41.39 0.435 2405 -2407 4 -30.84 33.78 -41.69 0.435 2406 -2408 4 -30.85 34.33 -42.69 0.435 2407 -2409 4 -31.32 34.97 -42.94 0.435 2408 -2410 4 -31.97 35.18 -43.23 0.435 2409 -2411 4 -32.64 35.6 -43.51 0.435 2410 -2412 4 -33.09 36.03 -43.7 0.435 2411 -2413 4 -33.08 36.08 -44.22 0.435 2412 -2414 4 -33.1 36.54 -44.56 0.435 2413 -2415 4 -33.52 36.8 -45.21 0.435 2414 -2416 4 -34.19 37.24 -45.64 0.435 2415 -2417 4 -34.83 37.23 -46.02 0.435 2416 -2418 4 -35.24 37.11 -47.18 0.435 2417 -2419 4 -35.43 36.89 -47.28 0.435 2418 -2420 4 -36.32 37.28 -47.34 0.435 2419 -2421 4 -36.97 37.24 -47.43 0.435 2420 -2422 4 -37.17 37.57 -48.69 0.435 2421 -2423 4 -36.98 38.0 -48.41 0.435 2422 -2424 4 -38.03 37.75 -48.91 0.435 2423 -2425 4 -38.05 38.22 -49.25 0.435 2424 -2426 4 -38.48 38.54 -50.42 0.435 2425 -2427 4 -38.51 39.49 -51.31 0.435 2426 -2428 4 -38.49 39.61 -52.42 0.435 2427 -2429 4 -38.93 40.33 -53.34 0.435 2428 -2430 4 -38.91 40.41 -54.16 0.435 2429 -2431 4 -38.94 41.15 -54.99 0.435 2430 -2432 4 -39.0 42.49 -55.45 0.435 2431 -2433 4 -39.47 43.12 -55.55 0.435 2432 -2434 4 -40.35 43.8 -56.25 0.435 2433 -2435 4 -40.39 44.49 -56.71 0.435 2434 -2436 4 -41.96 45.27 -56.81 0.435 2435 -2437 4 -42.16 45.32 -57.35 0.435 2436 -2438 4 -43.02 45.77 -58.15 0.435 2437 -2439 4 -43.24 45.8 -58.53 0.435 2438 -2440 4 -44.14 46.63 -58.77 0.435 2439 -2441 4 -44.78 46.64 -59.23 0.435 2440 -2442 4 -6.88 11.21 -6.39 0.76 2193 -2443 4 -9.07 12.29 -7.91 0.76 2442 -2444 4 -10.02 13.21 -6.78 0.65 2443 -2445 4 -10.7 13.6 -6.76 0.65 2444 -2446 4 -11.62 14.4 -6.7 0.65 2445 -2447 4 -12.57 15.9 -7.02 0.65 2446 -2448 4 -13.29 16.96 -7.23 0.65 2447 -2449 4 -13.52 17.65 -7.76 0.65 2448 -2450 4 -14.46 18.7 -7.98 0.65 2449 -2451 4 -14.93 19.59 -8.42 0.65 2450 -2452 4 -14.95 20.33 -9.33 0.65 2451 -2453 4 -15.46 21.6 -9.36 0.65 2452 -2454 4 -15.95 22.69 -9.63 0.65 2453 -2455 4 -16.89 23.72 -9.63 0.65 2454 -2456 4 -18.03 24.74 -9.7 0.65 2455 -2457 4 -19.38 25.78 -10.15 0.65 2456 -2458 4 -20.76 27.01 -10.28 0.65 2457 -2459 4 -21.3 28.7 -10.12 0.65 2458 -2460 4 -21.9 31.26 -10.02 0.65 2459 -2461 4 -22.63 32.52 -10.13 0.54 2460 -2462 4 -22.8 35.31 -9.85 0.54 2461 -2463 4 -23.63 38.3 -9.79 0.54 2462 -2464 4 -23.86 38.8 -9.74 0.54 2463 -2465 4 -24.5 39.31 -10.91 0.435 2464 -2466 4 -25.42 39.9 -10.79 0.435 2465 -2467 4 -25.43 40.1 -10.62 0.435 2466 -2468 4 -26.1 40.52 -10.89 0.435 2467 -2469 4 -26.31 40.52 -10.98 0.435 2468 -2470 4 -26.76 40.99 -11.77 0.435 2469 -2471 4 -27.45 41.88 -12.36 0.435 2470 -2472 4 -27.42 41.98 -13.34 0.435 2471 -2473 4 -27.63 42.25 -13.92 0.435 2472 -2474 4 -28.12 43.36 -14.49 0.435 2473 -2475 4 -29.69 44.4 -14.95 0.435 2474 -2476 4 -30.19 45.74 -15.65 0.325 2475 -2477 4 -31.06 46.18 -16.3 0.325 2476 -2478 4 -31.53 46.83 -16.54 0.325 2477 -2479 4 -32.21 47.73 -17.3 0.325 2478 -2480 4 -33.11 48.61 -17.91 0.325 2479 -2481 4 -33.59 49.51 -18.58 0.325 2480 -2482 4 -35.38 50.74 -18.87 0.325 2481 -2483 4 -36.05 51.17 -19.3 0.325 2482 -2484 4 -37.89 52.78 -19.25 0.325 2483 -2485 4 -39.26 54.53 -20.15 0.325 2484 -2486 4 -39.95 55.4 -20.68 0.325 2485 -2487 4 -41.54 56.92 -21.54 0.325 2486 -2488 4 -42.64 57.34 -22.05 0.325 2487 -2489 4 -43.55 58.2 -22.51 0.325 2488 -2490 4 -45.35 59.42 -22.96 0.325 2489 -2491 4 -48.0 60.65 -23.8 0.325 2490 -2492 4 -49.56 61.5 -24.65 0.325 2491 -2493 4 -50.24 62.11 -24.68 0.325 2492 -2494 4 -52.9 63.27 -24.92 0.325 2493 -2495 4 -55.35 64.75 -26.03 0.325 2494 -2496 4 -56.93 66.04 -26.84 0.325 2495 -2497 4 -58.95 67.22 -26.99 0.325 2496 -2498 4 -60.52 68.5 -27.73 0.325 2497 -2499 4 -61.86 69.33 -28.13 0.325 2498 -2500 4 -63.86 70.59 -28.95 0.325 2499 -2501 4 -65.17 71.02 -29.69 0.325 2500 -2502 4 -66.26 70.98 -30.09 0.325 2501 -2503 4 -66.67 71.03 -30.78 0.325 2502 -2504 4 -67.51 71.1 -31.99 0.325 2503 -2505 4 -68.56 70.89 -32.72 0.325 2504 -2506 4 -68.96 70.7 -33.2 0.325 2505 -2507 4 -69.15 70.81 -34.47 0.325 2506 -2508 4 -24.69 41.48 -9.79 0.54 2464 -2509 4 -25.39 45.75 -9.43 0.54 2508 -2510 4 -26.04 48.94 -9.12 0.54 2509 -2511 4 -27.54 52.08 -8.91 0.54 2510 -2512 4 -28.85 55.65 -8.57 0.54 2511 -2513 4 -30.58 59.0 -8.26 0.54 2512 -2514 4 -30.75 61.56 -8.0 0.54 2513 -2515 4 -31.61 64.74 -7.69 0.54 2514 -2516 4 -32.05 65.78 -8.72 0.435 2515 -2517 4 -33.21 67.0 -8.62 0.435 2516 -2518 4 -33.25 67.61 -8.26 0.435 2517 -2519 4 -34.6 68.69 -9.08 0.435 2518 -2520 4 -34.64 69.87 -9.94 0.435 2519 -2521 4 -34.68 70.79 -10.53 0.435 2520 -2522 4 -34.71 71.75 -11.41 0.435 2521 -2523 4 -35.45 73.27 -11.8 0.435 2522 -2524 4 -36.43 75.46 -12.65 0.435 2523 -2525 4 -37.63 77.87 -13.56 0.435 2524 -2526 4 -38.42 80.0 -13.58 0.435 2525 -2527 4 -39.58 81.52 -14.28 0.435 2526 -2528 4 -39.79 82.04 -15.36 0.435 2527 -2529 4 -40.75 83.24 -14.95 0.435 2528 -2530 4 -41.24 84.3 -14.94 0.435 2529 -2531 4 -41.75 85.59 -15.12 0.435 2530 -2532 4 -42.22 86.49 -15.71 0.435 2531 -2533 4 -43.15 87.84 -16.73 0.435 2532 -2534 4 -42.99 89.21 -17.26 0.435 2533 -2535 4 -45.58 92.8 -17.85 0.435 2534 -2536 4 -47.01 95.38 -18.52 0.435 2535 -2537 4 -48.22 97.31 -18.96 0.435 2536 -2538 4 -49.12 98.41 -19.62 0.435 2537 -2539 4 -49.67 100.34 -19.8 0.435 2538 -2540 4 -50.17 101.65 -20.21 0.435 2539 -2541 4 -50.9 103.21 -20.97 0.435 2540 -2542 4 -51.84 104.74 -21.66 0.435 2541 -2543 4 -51.94 106.51 -22.08 0.435 2542 -2544 4 -52.98 109.5 -22.25 0.435 2543 -2545 4 -54.16 111.44 -22.75 0.435 2544 -2546 4 -54.87 112.8 -23.83 0.435 2545 -2547 4 -56.75 115.06 -23.65 0.435 2546 -2548 4 -57.75 117.16 -23.6 0.435 2547 -2549 4 -58.29 118.89 -23.82 0.435 2548 -2550 4 -59.25 120.58 -23.97 0.435 2549 -2551 4 -60.47 122.69 -24.08 0.435 2550 -2552 4 -62.55 124.71 -23.92 0.435 2551 -2553 4 -64.6 126.32 -23.87 0.435 2552 -2554 4 -65.99 127.74 -23.76 0.435 2553 -2555 4 -10.59 12.43 -8.01 0.54 2443 -2556 4 -12.47 11.52 -8.75 0.54 2555 -2557 4 -14.18 10.98 -8.84 0.54 2556 -2558 4 -16.11 10.66 -9.0 0.54 2557 -2559 4 -17.64 11.29 -9.8 0.54 2558 -2560 4 -20.23 11.14 -9.87 0.54 2559 -2561 4 -21.95 10.81 -9.95 0.54 2560 -2562 4 -24.78 11.07 -9.99 0.54 2561 -2563 4 -30.29 12.82 -11.29 0.54 2562 -2564 4 -31.62 13.39 -11.42 0.54 2563 -2565 4 -32.79 14.82 -11.3 0.54 2564 -2566 4 -34.55 15.14 -11.31 0.54 2565 -2567 4 -37.17 15.42 -11.34 0.54 2566 -2568 4 -38.72 15.97 -11.32 0.435 2567 -2569 4 -40.34 17.37 -11.21 0.435 2568 -2570 4 -40.87 19.06 -11.05 0.435 2569 -2571 4 -42.04 20.28 -10.95 0.435 2570 -2572 4 -44.05 21.22 -10.9 0.435 2571 -2573 4 -46.75 22.79 -10.8 0.435 2572 -2574 4 -48.18 24.63 -10.65 0.435 2573 -2575 4 -49.51 26.02 -12.19 0.435 2574 -2576 4 -51.34 27.41 -12.09 0.435 2575 -2577 4 -52.5 27.85 -10.72 0.435 2576 -2578 4 -53.43 28.87 -10.63 0.435 2577 -2579 4 -54.38 30.32 -10.51 0.435 2578 -2580 4 -54.76 32.11 -9.2 0.435 2579 -2581 4 -56.21 34.39 -8.92 0.435 2580 -2582 4 -57.23 36.41 -8.13 0.435 2581 -2583 4 -58.2 38.07 -7.91 0.435 2582 -2584 4 -60.1 39.69 -5.83 0.435 2583 -2585 4 -61.27 40.31 -4.21 0.435 2584 -2586 4 -61.99 41.34 -4.13 0.435 2585 -2587 4 -62.47 42.19 -4.2 0.435 2586 -2588 4 -62.97 43.24 -4.1 0.435 2587 -2589 4 -63.86 43.6 -4.01 0.435 2588 -2590 4 -64.93 43.28 -3.61 0.435 2589 -2591 4 -65.77 42.56 -3.49 0.435 2590 -2592 4 -66.63 42.26 -3.24 0.435 2591 -2593 4 -67.18 42.89 -3.18 0.435 2592 -2594 4 -68.05 42.83 -3.13 0.435 2593 -2595 4 -68.52 43.45 -3.16 0.435 2594 -2596 4 -70.61 42.79 -4.48 0.435 2595 -2597 4 -71.47 42.55 -4.68 0.435 2596 -2598 4 -72.13 42.47 -4.32 0.435 2597 -2599 4 -73.17 41.71 -3.9 0.435 2598 -2600 4 -74.92 42.02 -3.91 0.435 2599 -2601 4 -75.85 42.81 -3.7 0.435 2600 -2602 4 -76.78 43.62 -3.56 0.435 2601 -2603 4 -77.69 44.12 -2.62 0.435 2602 -2604 4 -79.0 44.03 -2.51 0.435 2603 -2605 4 -79.27 44.03 -0.72 0.435 2604 -2606 4 -80.38 44.39 -0.7 0.435 2605 -2607 4 -80.59 44.4 -0.93 0.435 2606 -2608 4 -80.79 44.49 -1.98 0.435 2607 -2609 4 -81.02 44.91 -1.94 0.435 2608 -2610 4 -81.51 44.93 -0.22 0.435 2609 -2611 4 -81.76 44.77 1.18 0.435 2610 -2612 4 -82.24 45.04 2.41 0.435 2611 -2613 4 -82.5 45.16 3.24 0.435 2612 -2614 4 -82.56 45.71 4.13 0.435 2613 -2615 4 -83.1 47.14 4.85 0.435 2614 -2616 4 -83.58 47.72 5.21 0.435 2615 -2617 4 -84.26 48.09 5.31 0.435 2616 -2618 4 -85.57 47.97 5.72 0.435 2617 -2619 4 -87.37 48.93 5.84 0.435 2618 -2620 4 -88.9 49.05 5.82 0.435 2619 -2621 4 -90.44 49.35 6.2 0.435 2620 -2622 4 -91.98 49.68 6.27 0.435 2621 -2623 4 -93.13 50.66 6.57 0.435 2622 -2624 4 -94.31 51.87 6.82 0.435 2623 -2625 4 -94.99 52.24 6.99 0.435 2624 -2626 4 -95.45 52.6 7.39 0.435 2625 -2627 4 3.0 7.07 -2.66 3.035 1 -2628 4 2.98 7.28 -2.64 3.035 2627 -2629 4 3.48 9.68 -2.38 2.6 2628 -2630 4 4.2 11.88 -2.14 2.385 2629 -2631 4 4.5 14.03 -1.84 2.165 2630 -2632 4 5.01 16.22 -1.6 2.275 2631 -2633 4 4.91 18.79 -1.34 2.275 2632 -2634 4 5.35 19.38 -2.54 0.325 2633 -2635 4 6.38 20.08 -2.36 0.325 2634 -2636 4 6.81 20.1 -2.28 0.325 2635 -2637 4 7.24 20.62 -2.89 0.325 2636 -2638 4 7.47 20.74 -3.86 0.325 2637 -2639 4 7.88 21.71 -4.57 0.325 2638 -2640 4 8.29 22.21 -5.05 0.325 2639 -2641 4 8.72 22.29 -5.48 0.325 2640 -2642 4 9.13 22.97 -5.47 0.325 2641 -2643 4 9.73 23.65 -5.39 0.435 2642 -2644 4 10.73 24.99 -5.22 0.435 2643 -2645 4 11.24 27.18 -4.98 0.435 2644 -2646 4 11.42 27.83 -4.91 0.435 2645 -2647 4 11.81 28.81 -5.79 0.435 2646 -2648 4 12.47 29.42 -6.99 0.435 2647 -2649 4 13.07 30.91 -8.4 0.435 2648 -2650 4 13.46 31.59 -8.47 0.435 2649 -2651 4 13.72 31.76 -10.1 0.435 2650 -2652 4 14.88 34.0 -9.92 0.435 2651 -2653 4 16.1 35.4 -10.05 0.435 2652 -2654 4 16.73 36.17 -10.85 0.435 2653 -2655 4 17.16 36.23 -11.22 0.435 2654 -2656 4 17.37 37.27 -12.69 0.435 2655 -2657 4 17.75 38.19 -12.96 0.435 2656 -2658 4 18.17 38.67 -13.2 0.435 2657 -2659 4 18.35 39.89 -14.43 0.435 2658 -2660 4 18.52 40.81 -14.78 0.435 2659 -2661 4 18.5 41.57 -15.83 0.435 2660 -2662 4 18.49 42.34 -16.96 0.435 2661 -2663 4 18.68 43.06 -17.48 0.435 2662 -2664 4 19.01 45.1 -18.17 0.435 2663 -2665 4 19.33 46.85 -18.05 0.435 2664 -2666 4 19.8 47.26 -19.66 0.435 2665 -2667 4 20.15 48.07 -18.96 0.435 2666 -2668 4 20.74 49.19 -18.76 0.435 2667 -2669 4 21.11 50.08 -18.66 0.435 2668 -2670 4 21.73 51.13 -20.12 0.435 2669 -2671 4 21.96 51.95 -21.69 0.435 2670 -2672 4 22.08 53.47 -21.6 0.435 2671 -2673 4 22.66 54.59 -21.47 0.435 2672 -2674 4 22.99 56.11 -21.3 0.435 2673 -2675 4 23.38 57.02 -21.5 0.435 2674 -2676 4 23.55 57.93 -21.78 0.435 2675 -2677 4 23.74 58.91 -22.65 0.435 2676 -2678 4 24.33 60.07 -23.12 0.435 2677 -2679 4 24.5 60.77 -23.43 0.435 2678 -2680 4 5.64 19.91 -1.2 2.275 2633 -2681 4 5.48 22.49 -0.94 2.275 2680 -2682 4 5.36 24.41 -0.74 2.275 2681 -2683 4 5.46 26.14 -0.56 2.275 2682 -2684 4 5.78 27.88 -0.38 2.275 2683 -2685 4 5.94 28.84 -0.27 2.275 2684 -2686 4 5.28 28.75 0.23 0.54 2685 -2687 4 4.63 28.71 0.21 0.54 2686 -2688 4 4.42 28.71 0.12 0.54 2687 -2689 4 4.16 29.07 0.61 0.54 2688 -2690 4 2.59 29.3 1.73 0.54 2689 -2691 4 2.12 29.65 2.21 0.54 2690 -2692 4 1.04 29.55 2.54 0.54 2691 -2693 4 0.08 29.95 4.37 0.435 2692 -2694 4 -0.79 30.33 4.39 0.435 2693 -2695 4 -0.8 30.56 4.19 0.435 2694 -2696 4 -1.48 30.95 4.29 0.435 2695 -2697 4 -2.2 31.69 5.1 0.435 2696 -2698 4 -3.14 32.4 6.06 0.435 2697 -2699 4 -3.86 33.15 6.79 0.435 2698 -2700 4 -3.89 33.56 6.98 0.435 2699 -2701 4 -3.94 34.19 7.2 0.435 2700 -2702 4 -4.86 34.74 7.69 0.435 2701 -2703 4 -5.96 35.11 7.55 0.435 2702 -2704 4 -6.0 35.49 8.12 0.435 2703 -2705 4 -6.51 35.91 10.11 0.435 2704 -2706 4 -7.45 36.38 11.18 0.435 2705 -2707 4 -8.38 36.89 11.97 0.435 2706 -2708 4 -9.56 38.04 12.81 0.435 2707 -2709 4 -10.75 39.63 13.4 0.435 2708 -2710 4 -11.26 40.38 14.37 0.435 2709 -2711 4 -12.21 41.36 14.9 0.435 2710 -2712 4 -12.71 42.11 15.65 0.435 2711 -2713 4 -13.44 42.8 16.98 0.435 2712 -2714 4 -13.96 43.76 17.9 0.435 2713 -2715 4 -15.11 44.23 18.97 0.435 2714 -2716 4 -16.25 44.45 20.26 0.435 2715 -2717 4 -17.65 46.1 20.39 0.435 2716 -2718 4 -17.68 46.53 20.44 0.435 2717 -2719 4 -18.21 47.43 21.8 0.435 2718 -2720 4 -19.14 47.96 22.51 0.435 2719 -2721 4 -19.41 48.52 23.24 0.435 2720 -2722 4 -19.95 49.4 24.83 0.435 2721 -2723 4 -20.88 50.36 25.51 0.435 2722 -2724 4 -22.09 51.74 26.14 0.435 2723 -2725 4 -23.0 52.52 26.5 0.435 2724 -2726 4 -23.95 53.73 26.76 0.435 2725 -2727 4 -25.35 54.88 27.45 0.435 2726 -2728 4 -25.88 56.08 28.16 0.435 2727 -2729 4 -27.31 57.85 29.06 0.435 2728 -2730 4 -29.43 59.99 30.14 0.435 2729 -2731 4 -31.52 62.0 30.45 0.435 2730 -2732 4 -33.11 62.97 30.58 0.435 2731 -2733 4 -34.12 65.28 30.8 0.435 2732 -2734 4 -36.02 67.96 31.03 0.435 2733 -2735 4 -37.7 70.21 31.22 0.435 2734 -2736 4 -39.61 73.12 31.48 0.435 2735 -2737 4 -41.94 75.56 31.68 0.435 2736 -2738 4 -42.55 78.31 31.95 0.435 2737 -2739 4 -44.88 80.98 32.17 0.435 2738 -2740 4 -47.95 84.66 32.48 0.435 2739 -2741 4 -49.78 86.26 32.6 0.435 2740 -2742 4 -50.31 87.47 33.24 0.435 2741 -2743 4 -50.89 89.29 34.17 0.435 2742 -2744 4 -52.06 90.42 35.24 0.435 2743 -2745 4 -53.98 92.83 35.97 0.435 2744 -2746 4 -55.83 94.64 36.12 0.435 2745 -2747 4 -57.89 96.23 36.31 0.435 2746 -2748 4 -59.06 97.68 36.43 0.435 2747 -2749 4 -60.07 99.75 36.62 0.435 2748 -2750 4 -61.49 101.57 37.15 0.435 2749 -2751 4 -63.0 104.69 37.59 0.435 2750 -2752 4 -63.54 106.1 38.25 0.435 2751 -2753 4 -64.52 107.47 39.12 0.435 2752 -2754 4 -65.05 108.64 40.13 0.435 2753 -2755 4 -65.13 109.67 40.69 0.435 2754 -2756 4 -65.66 110.64 41.53 0.435 2755 -2757 4 -66.17 111.89 41.72 0.435 2756 -2758 4 -66.25 112.88 42.58 0.435 2757 -2759 4 -66.75 113.66 43.1 0.435 2758 -2760 4 -66.82 114.72 43.36 0.435 2759 -2761 4 -67.77 115.69 43.89 0.435 2760 -2762 4 -68.89 116.26 44.07 0.435 2761 -2763 4 -69.21 117.44 45.02 0.435 2762 -2764 4 -69.94 118.45 45.26 0.435 2763 -2765 4 -69.81 119.72 45.69 0.435 2764 -2766 4 -15.97 43.66 19.73 0.435 2715 -2767 4 -16.79 42.96 19.64 0.435 2766 -2768 4 -17.44 42.62 20.49 0.435 2767 -2769 4 -18.28 42.12 20.64 0.435 2768 -2770 4 -19.6 41.98 21.13 0.435 2769 -2771 4 -20.29 42.3 21.82 0.435 2770 -2772 4 -20.98 42.08 23.51 0.435 2771 -2773 4 -22.1 42.38 24.2 0.435 2772 -2774 4 -22.98 42.01 25.11 0.435 2773 -2775 4 -23.41 41.7 25.76 0.435 2774 -2776 4 -24.25 40.89 26.78 0.435 2775 -2777 4 -25.71 39.72 26.77 0.435 2776 -2778 4 -26.52 38.57 26.87 0.435 2777 -2779 4 -26.89 37.39 27.48 0.435 2778 -2780 4 -28.8 36.6 27.65 0.435 2779 -2781 4 -29.2 35.64 28.3 0.435 2780 -2782 4 -30.48 35.08 28.75 0.435 2781 -2783 4 -30.93 34.72 29.82 0.435 2782 -2784 4 -31.32 34.29 29.47 0.435 2783 -2785 4 -31.35 34.2 30.36 0.435 2784 -2786 4 -31.78 33.59 31.8 0.435 2785 -2787 4 -32.43 33.01 32.93 0.435 2786 -2788 4 -33.27 32.26 33.29 0.435 2787 -2789 4 -33.52 32.37 34.2 0.435 2788 -2790 4 6.3 30.1 -0.5 2.06 2685 -2791 4 6.21 32.13 -1.27 2.06 2790 -2792 4 6.31 33.86 -1.09 1.95 2791 -2793 4 6.23 35.76 -2.71 1.95 2792 -2794 4 6.32 37.92 -2.48 1.95 2793 -2795 4 6.01 39.27 -2.35 1.95 2794 -2796 4 5.11 39.05 -0.73 0.435 2795 -2797 4 4.71 38.83 -0.92 0.435 2796 -2798 4 4.27 38.81 -1.01 0.435 2797 -2799 4 3.83 38.75 -0.72 0.435 2798 -2800 4 2.99 38.26 -0.64 0.54 2799 -2801 4 1.74 37.32 -0.77 0.54 2800 -2802 4 0.47 36.55 -0.28 0.54 2801 -2803 4 0.01 36.37 1.11 0.54 2802 -2804 4 -0.41 36.04 1.9 0.54 2803 -2805 4 -1.24 35.32 2.03 0.54 2804 -2806 4 -2.32 35.03 2.12 0.54 2805 -2807 4 -3.16 34.49 2.58 0.54 2806 -2808 4 -3.56 33.53 3.23 0.54 2807 -2809 4 -3.97 33.05 3.47 0.54 2808 -2810 4 -4.65 33.43 3.49 0.54 2809 -2811 4 -4.56 34.54 5.49 0.435 2810 -2812 4 -4.38 35.2 5.56 0.435 2811 -2813 4 -4.41 35.35 6.18 0.435 2812 -2814 4 -4.49 36.09 7.31 0.435 2813 -2815 4 -4.53 36.44 8.1 0.435 2814 -2816 4 -5.02 36.78 8.88 0.435 2815 -2817 4 -5.07 37.4 9.09 0.435 2816 -2818 4 -4.3 38.92 9.64 0.435 2817 -2819 4 -4.98 39.28 9.96 0.435 2818 -2820 4 -5.46 40.11 10.04 0.435 2819 -2821 4 -5.95 40.72 10.09 0.435 2820 -2822 4 -6.91 42.38 10.24 0.435 2821 -2823 4 -8.51 43.58 10.32 0.435 2822 -2824 4 -9.87 44.35 10.37 0.435 2823 -2825 4 -11.2 44.64 10.97 0.435 2824 -2826 4 -11.68 45.26 11.03 0.435 2825 -2827 4 -11.93 45.89 11.09 0.435 2826 -2828 4 -11.95 46.35 10.83 0.435 2827 -2829 4 -12.36 46.7 9.2 0.435 2828 -2830 4 -12.19 46.79 10.57 0.435 2829 -2831 4 -12.65 46.94 10.96 0.435 2830 -2832 4 -12.9 47.07 11.72 0.435 2831 -2833 4 -12.74 47.88 12.4 0.435 2832 -2834 4 -13.17 47.86 12.39 0.435 2833 -2835 4 -13.23 48.17 13.55 0.435 2834 -2836 4 -13.71 48.52 14.1 0.435 2835 -2837 4 -14.04 50.15 14.8 0.435 2836 -2838 4 -14.72 50.53 15.04 0.435 2837 -2839 4 -15.23 51.29 15.71 0.435 2838 -2840 4 -4.82 32.52 3.85 0.54 2810 -2841 4 -6.34 32.12 4.59 0.54 2840 -2842 4 -6.8 31.97 5.84 0.54 2841 -2843 4 -7.67 31.93 5.67 0.435 2842 -2844 4 -8.73 31.66 5.62 0.435 2843 -2845 4 -9.17 31.08 6.75 0.435 2844 -2846 4 -10.06 31.46 6.77 0.435 2845 -2847 4 -10.96 32.03 6.81 0.435 2846 -2848 4 -11.67 32.86 6.88 0.435 2847 -2849 4 -12.09 32.85 6.72 0.435 2848 -2850 4 -12.54 32.51 7.65 0.435 2849 -2851 4 -12.78 32.65 8.19 0.435 2850 -2852 4 -13.2 32.42 8.08 0.435 2851 -2853 4 -13.59 31.99 7.73 0.435 2852 -2854 4 -14.01 31.2 8.84 0.435 2853 -2855 4 -14.4 30.29 8.96 0.435 2854 -2856 4 -14.8 29.54 9.71 0.435 2855 -2857 4 -15.42 28.54 10.64 0.435 2856 -2858 4 -16.03 27.56 11.35 0.435 2857 -2859 4 -16.47 27.25 11.92 0.325 2858 -2860 4 -16.87 26.82 11.63 0.325 2859 -2861 4 -16.87 26.81 11.78 0.325 2860 -2862 4 -17.31 26.51 12.27 0.325 2861 -2863 4 -17.3 26.0 13.04 0.325 2862 -2864 4 -17.73 25.68 13.75 0.325 2863 -2865 4 -17.71 25.2 14.16 0.325 2864 -2866 4 -18.15 24.93 14.42 0.325 2865 -2867 4 6.01 39.73 -3.51 1.95 2795 -2868 4 6.01 39.83 -3.5 1.95 2867 -2869 4 5.88 41.88 -3.29 1.735 2868 -2870 4 5.82 42.74 -3.2 1.735 2869 -2871 4 5.94 45.07 -4.62 1.735 2870 -2872 4 5.85 46.56 -4.46 1.735 2871 -2873 4 6.01 48.21 -5.65 1.735 2872 -2874 4 6.35 49.75 -5.55 1.735 2873 -2875 4 6.51 51.43 -7.11 1.735 2874 -2876 4 6.85 52.75 -6.97 1.735 2875 -2877 4 7.21 54.39 -7.92 1.735 2876 -2878 4 7.81 56.14 -9.68 1.735 2877 -2879 4 8.84 57.58 -10.48 1.735 2878 -2880 4 9.61 59.18 -10.75 1.735 2879 -2881 4 10.39 60.51 -10.6 1.735 2880 -2882 4 9.14 60.71 -12.41 0.54 2881 -2883 4 8.27 60.66 -12.44 0.54 2882 -2884 4 7.18 60.81 -12.38 0.54 2883 -2885 4 5.84 61.37 -12.35 0.54 2884 -2886 4 5.33 62.63 -12.24 0.54 2885 -2887 4 4.58 64.09 -12.1 0.54 2886 -2888 4 2.54 65.47 -12.01 0.54 2887 -2889 4 0.95 66.98 -12.95 0.54 2888 -2890 4 0.43 68.46 -12.8 0.54 2889 -2891 4 -0.12 70.35 -12.62 0.54 2890 -2892 4 -1.77 72.41 -12.45 0.54 2891 -2893 4 -3.09 72.76 -12.44 0.54 2892 -2894 4 -4.42 72.82 -11.71 0.54 2893 -2895 4 -6.0 73.57 -11.59 0.435 2894 -2896 4 -6.65 73.54 -11.61 0.435 2895 -2897 4 -7.79 74.85 -12.34 0.435 2896 -2898 4 -7.95 74.5 -13.35 0.435 2897 -2899 4 -7.94 75.08 -14.8 0.435 2898 -2900 4 -8.59 75.36 -15.84 0.435 2899 -2901 4 -9.19 75.51 -17.72 0.435 2900 -2902 4 -9.63 75.71 -17.71 0.435 2901 -2903 4 -9.87 75.92 -17.78 0.435 2902 -2904 4 -9.82 76.11 -19.56 0.435 2903 -2905 4 -9.81 76.19 -20.38 0.435 2904 -2906 4 -9.98 76.31 -21.65 0.435 2905 -2907 4 -9.94 76.47 -23.22 0.435 2906 -2908 4 -9.91 76.6 -24.49 0.435 2907 -2909 4 -10.31 75.93 -24.56 0.435 2908 -2910 4 -10.12 77.17 -26.01 0.435 2909 -2911 4 -11.26 77.95 -25.81 0.435 2910 -2912 4 -11.7 78.47 -26.97 0.435 2911 -2913 4 -11.66 78.61 -28.31 0.435 2912 -2914 4 -11.65 79.21 -29.98 0.435 2913 -2915 4 -11.65 79.51 -30.7 0.435 2914 -2916 4 -11.64 79.8 -31.43 0.435 2915 -2917 4 -11.42 80.12 -32.22 0.435 2916 -2918 4 -11.45 81.1 -33.33 0.435 2917 -2919 4 -11.45 81.65 -34.47 0.435 2918 -2920 4 -11.44 81.92 -35.04 0.435 2919 -2921 4 -12.33 82.57 -35.6 0.435 2920 -2922 4 -12.38 83.78 -36.76 0.435 2921 -2923 4 -12.38 84.32 -37.83 0.435 2922 -2924 4 -13.08 85.41 -38.27 0.435 2923 -2925 4 -13.08 85.94 -39.19 0.435 2924 -2926 4 -13.11 86.69 -40.17 0.435 2925 -2927 4 -12.9 87.2 -40.87 0.435 2926 -2928 4 -11.38 87.59 -41.55 0.435 2927 -2929 4 -11.34 87.74 -43.04 0.435 2928 -2930 4 -11.86 89.01 -42.99 0.435 2929 -2931 4 -11.88 89.72 -43.6 0.435 2930 -2932 4 -11.92 90.66 -44.26 0.435 2931 -2933 4 -12.17 91.55 -44.76 0.435 2932 -2934 4 -12.38 91.87 -45.79 0.435 2933 -2935 4 -12.84 92.56 -46.33 0.435 2934 -2936 4 -12.89 93.41 -46.33 0.435 2935 -2937 4 -13.78 94.34 -47.53 0.435 2936 -2938 4 -13.79 95.14 -48.89 0.435 2937 -2939 4 -13.59 95.6 -49.13 0.435 2938 -2940 4 -13.38 95.66 -49.5 0.435 2939 -2941 4 -12.95 96.19 -50.18 0.435 2940 -2942 4 -12.99 97.1 -50.54 0.435 2941 -2943 4 -13.01 97.58 -51.02 0.435 2942 -2944 4 -13.48 98.48 -51.62 0.435 2943 -2945 4 -14.09 98.57 -52.9 0.435 2944 -2946 4 -14.75 99.04 -53.7 0.435 2945 -2947 4 -15.41 99.52 -54.57 0.435 2946 -2948 4 -16.08 100.2 -55.19 0.435 2947 -2949 4 -16.27 100.26 -55.95 0.435 2948 -2950 4 -17.17 100.95 -56.87 0.435 2949 -2951 4 -18.99 102.35 -56.77 0.435 2950 -2952 4 -19.92 103.9 -57.69 0.435 2951 -2953 4 -20.8 104.63 -58.92 0.435 2952 -2954 4 -21.61 107.17 -58.75 0.435 2953 -2955 4 -22.15 108.84 -58.59 0.435 2954 -2956 4 -21.92 109.48 -60.25 0.435 2955 -2957 4 -22.48 111.38 -60.14 0.435 2956 -2958 4 -22.5 111.85 -60.55 0.435 2957 -2959 4 -20.93 115.05 -61.0 0.435 2958 -2960 4 -20.98 115.94 -61.36 0.435 2959 -2961 4 -20.8 116.64 -61.59 0.435 2960 -2962 4 -10.54 76.41 -25.12 0.435 2909 -2963 4 -10.72 76.53 -26.47 0.435 2962 -2964 4 -11.15 77.06 -27.64 0.435 2963 -2965 4 -11.13 77.16 -28.68 0.435 2964 -2966 4 -11.11 77.5 -29.77 0.435 2965 -2967 4 -11.12 77.77 -30.35 0.435 2966 -2968 4 -11.75 78.28 -31.59 0.435 2967 -2969 4 -12.86 78.67 -31.8 0.435 2968 -2970 4 -12.87 78.65 -31.57 0.435 2969 -2971 4 -13.28 78.72 -32.56 0.435 2970 -2972 4 -13.3 79.18 -32.82 0.435 2971 -2973 4 -14.16 79.43 -33.72 0.435 2972 -2974 4 -15.04 80.13 -34.64 0.435 2973 -2975 4 -15.94 80.48 -34.39 0.435 2974 -2976 4 -16.38 80.66 -34.25 0.435 2975 -2977 4 -16.4 80.85 -34.07 0.435 2976 -2978 4 -17.06 81.3 -34.57 0.435 2977 -2979 4 -17.71 81.26 -34.59 0.435 2978 -2980 4 -18.57 81.83 -36.36 0.435 2979 -2981 4 -19.22 81.99 -36.36 0.435 2980 -2982 4 -19.66 81.94 -36.14 0.435 2981 -2983 4 -20.54 82.39 -36.8 0.435 2982 -2984 4 -21.8 82.49 -38.63 0.435 2983 -2985 4 -23.06 82.52 -39.71 0.435 2984 -2986 4 -23.5 82.46 -39.43 0.435 2985 -2987 4 -23.49 82.51 -39.87 0.435 2986 -2988 4 -24.11 82.36 -40.88 0.435 2987 -2989 4 -24.95 82.12 -41.23 0.435 2988 -2990 4 -25.98 81.99 -42.69 0.435 2989 -2991 4 -27.03 81.83 -43.94 0.435 2990 -2992 4 -27.65 81.66 -44.73 0.435 2991 -2993 4 -29.6 81.8 -45.29 0.435 2992 -2994 4 -31.12 82.69 -46.51 0.435 2993 -2995 4 -32.18 82.76 -47.81 0.435 2994 -2996 4 -33.91 83.23 -49.16 0.435 2995 -2997 4 -35.18 83.24 -50.09 0.435 2996 -2998 4 -36.51 84.11 -50.94 0.435 2997 -2999 4 -37.97 83.93 -52.2 0.435 2998 -3000 4 -39.06 83.87 -52.38 0.435 2999 -3001 4 -40.72 83.47 -53.74 0.435 3000 -3002 4 -42.01 83.19 -53.88 0.435 3001 -3003 4 -43.69 82.48 -54.36 0.435 3002 -3004 4 -45.64 82.59 -54.55 0.435 3003 -3005 4 -46.48 82.12 -54.7 0.435 3004 -3006 4 -47.97 82.11 -55.64 0.435 3005 -3007 4 -48.84 82.56 -56.29 0.435 3006 -3008 4 -50.16 82.99 -56.96 0.435 3007 -3009 4 -51.19 83.1 -58.77 0.435 3008 -3010 4 -4.78 75.24 -12.23 0.54 2893 -3011 4 -6.22 77.52 -12.02 0.54 3010 -3012 4 -7.69 80.02 -11.8 0.54 3011 -3013 4 -7.97 81.89 -13.34 0.54 3012 -3014 4 -8.26 83.44 -13.86 0.54 3013 -3015 4 -8.3 84.39 -14.6 0.54 3014 -3016 4 -8.67 86.73 -14.44 0.54 3015 -3017 4 -9.65 88.88 -14.77 0.54 3016 -3018 4 -10.54 89.56 -15.55 0.54 3017 -3019 4 -10.6 90.92 -16.24 0.54 3018 -3020 4 -11.49 91.9 -17.89 0.54 3019 -3021 4 -11.49 92.43 -18.74 0.54 3020 -3022 4 -11.95 93.37 -19.71 0.54 3021 -3023 4 -13.83 95.86 -19.72 0.54 3022 -3024 4 -15.05 98.0 -20.13 0.54 3023 -3025 4 -16.44 99.95 -21.02 0.54 3024 -3026 4 -17.68 102.49 -21.16 0.54 3025 -3027 4 -18.65 104.16 -21.09 0.54 3026 -3028 4 -20.59 107.5 -20.86 0.54 3027 -3029 4 -21.64 110.5 -21.17 0.54 3028 -3030 4 -23.5 112.56 -21.09 0.54 3029 -3031 4 -25.02 116.15 -21.12 0.54 3030 -3032 4 -26.44 118.01 -21.04 0.54 3031 -3033 4 -27.85 119.64 -20.91 0.54 3032 -3034 4 -27.98 121.57 -20.71 0.54 3033 -3035 4 -27.92 124.16 -20.44 0.54 3034 -3036 4 -28.67 125.92 -20.65 0.435 3035 -3037 4 -29.2 127.4 -20.51 0.435 3036 -3038 4 -29.34 129.58 -20.67 0.435 3037 -3039 4 -29.5 132.15 -20.41 0.435 3038 -3040 4 -29.58 133.45 -20.5 0.435 3039 -3041 4 -30.37 135.78 -20.42 0.435 3040 -3042 4 -30.98 138.84 -20.88 0.435 3041 -3043 4 -31.67 139.92 -21.38 0.435 3042 -3044 4 -32.43 141.61 -21.23 0.435 3043 -3045 4 -33.45 143.91 -21.01 0.435 3044 -3046 4 -34.64 145.56 -20.87 0.435 3045 -3047 4 -36.27 147.18 -20.74 0.435 3046 -3048 4 -36.78 148.69 -20.9 0.435 3047 -3049 4 -37.45 152.32 -20.62 0.435 3048 -3050 4 -37.63 155.33 -20.53 0.435 3049 -3051 4 -38.17 157.06 -20.82 0.435 3050 -3052 4 -38.28 159.07 -21.29 0.435 3051 -3053 4 -39.1 161.85 -21.4 0.435 3052 -3054 4 -39.2 163.61 -21.75 0.435 3053 -3055 4 -39.68 164.7 -22.03 0.435 3054 -3056 4 -39.76 166.29 -22.69 0.435 3055 -3057 4 -39.83 167.62 -23.16 0.435 3056 -3058 4 -39.91 168.93 -23.17 0.435 3057 -3059 4 -39.99 170.24 -23.27 0.435 3058 -3060 4 -40.07 171.78 -23.57 0.435 3059 -3061 4 -40.11 172.44 -23.65 0.435 3060 -3062 4 -40.59 173.28 -23.64 0.435 3061 -3063 4 -41.06 174.22 -24.54 0.435 3062 -3064 4 -41.52 174.62 -24.51 0.435 3063 -3065 4 10.83 61.1 -11.73 1.735 2881 -3066 4 11.81 62.66 -11.55 1.735 3065 -3067 4 11.57 63.18 -11.5 1.735 3066 -3068 4 10.69 64.17 -13.38 0.54 3067 -3069 4 10.23 64.56 -13.2 0.54 3068 -3070 4 10.2 64.99 -13.15 0.54 3069 -3071 4 9.3 65.36 -13.14 0.54 3070 -3072 4 8.17 66.16 -13.08 0.54 3071 -3073 4 7.72 66.57 -13.2 0.54 3072 -3074 4 7.25 67.24 -13.59 0.54 3073 -3075 4 6.55 68.1 -13.97 0.54 3074 -3076 4 5.86 68.94 -14.12 0.54 3075 -3077 4 4.95 70.06 -15.02 0.54 3076 -3078 4 4.44 71.34 -15.05 0.54 3077 -3079 4 4.42 72.08 -15.95 0.54 3078 -3080 4 4.38 73.0 -16.38 0.54 3079 -3081 4 4.08 74.52 -16.61 0.54 3080 -3082 4 4.25 75.45 -17.11 0.54 3081 -3083 4 4.22 76.14 -17.49 0.54 3082 -3084 4 4.63 76.89 -18.16 0.54 3083 -3085 4 5.19 78.71 -18.71 0.435 3084 -3086 4 5.14 79.9 -19.65 0.435 3085 -3087 4 5.11 80.55 -19.73 0.435 3086 -3088 4 5.1 81.05 -20.43 0.435 3087 -3089 4 4.6 82.4 -21.21 0.435 3088 -3090 4 4.55 83.56 -21.91 0.435 3089 -3091 4 4.73 84.51 -22.49 0.435 3090 -3092 4 4.87 86.06 -22.77 0.435 3091 -3093 4 4.4 87.0 -23.74 0.435 3092 -3094 4 4.08 88.73 -23.8 0.435 3093 -3095 4 3.98 90.77 -24.72 0.435 3094 -3096 4 3.62 93.14 -24.79 0.435 3095 -3097 4 3.53 94.92 -25.21 0.435 3096 -3098 4 3.48 95.81 -25.42 0.435 3097 -3099 4 2.53 97.34 -26.19 0.435 3098 -3100 4 2.46 98.91 -26.7 0.435 3099 -3101 4 1.51 100.37 -26.65 0.435 3100 -3102 4 1.42 101.69 -26.89 0.435 3101 -3103 4 0.4 104.51 -27.46 0.435 3102 -3104 4 0.34 105.61 -27.65 0.435 3103 -3105 4 -0.74 109.23 -27.6 0.435 3104 -3106 4 -0.83 111.04 -28.24 0.435 3105 -3107 4 -0.92 112.82 -28.81 0.435 3106 -3108 4 -0.82 114.8 -28.84 0.435 3107 -3109 4 -0.86 115.69 -29.2 0.435 3108 -3110 4 -0.94 116.77 -29.16 0.435 3109 -3111 4 -0.77 117.95 -29.94 0.435 3110 -3112 4 -0.38 118.88 -30.28 0.435 3111 -3113 4 -0.82 119.6 -31.27 0.435 3112 -3114 4 -0.38 119.68 -31.78 0.435 3113 -3115 4 11.52 63.81 -11.43 1.735 3067 -3116 4 11.74 63.82 -11.43 1.735 3115 -3117 4 13.25 63.84 -11.47 1.735 3116 -3118 4 12.89 65.33 -9.36 0.435 3117 -3119 4 12.86 66.0 -9.52 0.435 3118 -3120 4 12.38 66.35 -9.04 0.435 3119 -3121 4 12.12 66.36 -7.24 0.435 3120 -3122 4 11.63 67.21 -7.24 0.435 3121 -3123 4 11.6 67.66 -7.41 0.435 3122 -3124 4 11.58 67.57 -6.53 0.435 3123 -3125 4 11.55 67.71 -5.76 0.435 3124 -3126 4 11.53 67.65 -5.16 0.435 3125 -3127 4 11.48 67.98 -4.3 0.435 3126 -3128 4 11.47 68.15 -3.91 0.435 3127 -3129 4 11.6 68.9 -2.54 0.435 3128 -3130 4 11.97 69.51 -1.86 0.435 3129 -3131 4 12.27 71.11 -0.41 0.435 3130 -3132 4 12.4 72.17 0.0 0.435 3131 -3133 4 12.9 74.54 0.4 0.435 3132 -3134 4 12.73 77.06 1.26 0.435 3133 -3135 4 12.81 78.97 1.76 0.435 3134 -3136 4 13.33 80.92 2.19 0.435 3135 -3137 4 13.03 81.37 3.89 0.435 3136 -3138 4 13.37 82.9 3.99 0.435 3137 -3139 4 13.94 84.23 4.21 0.435 3138 -3140 4 14.28 85.23 5.23 0.435 3139 -3141 4 14.23 85.58 6.09 0.435 3140 -3142 4 13.48 86.72 7.09 0.435 3141 -3143 4 13.17 88.21 7.24 0.435 3142 -3144 4 13.06 89.92 7.41 0.435 3143 -3145 4 12.95 91.64 7.59 0.435 3144 -3146 4 11.87 95.01 7.91 0.435 3145 -3147 4 12.01 95.28 9.68 0.435 3146 -3148 4 11.52 96.32 9.78 0.435 3147 -3149 4 11.44 97.4 9.81 0.435 3148 -3150 4 11.38 98.23 10.19 0.435 3149 -3151 4 11.35 98.63 10.54 0.435 3150 -3152 4 10.65 98.92 11.54 0.435 3151 -3153 4 10.17 99.46 12.25 0.435 3152 -3154 4 9.61 100.87 13.06 0.435 3153 -3155 4 9.55 101.71 13.3 0.435 3154 -3156 4 9.19 104.04 13.61 0.435 3155 -3157 4 9.07 105.97 13.81 0.435 3156 -3158 4 8.93 107.55 15.24 0.435 3157 -3159 4 8.79 109.7 15.46 0.435 3158 -3160 4 7.78 111.79 15.66 0.435 3159 -3161 4 7.23 113.42 16.41 0.435 3160 -3162 4 7.14 114.69 16.7 0.435 3161 -3163 4 7.26 116.18 17.08 0.435 3162 -3164 4 5.78 118.62 17.75 0.435 3163 -3165 4 5.29 119.67 17.92 0.435 3164 -3166 4 5.44 120.49 18.39 0.435 3165 -3167 4 5.72 122.61 19.07 0.435 3166 -3168 4 6.0 124.99 19.39 0.435 3167 -3169 4 6.73 127.18 19.64 0.435 3168 -3170 4 7.67 129.38 19.97 0.435 3169 -3171 4 9.27 131.62 20.31 0.435 3170 -3172 4 9.84 132.7 20.66 0.435 3171 -3173 4 10.56 134.66 21.26 0.435 3172 -3174 4 11.08 136.57 21.99 0.435 3173 -3175 4 11.64 137.83 22.67 0.435 3174 -3176 4 11.94 139.56 23.61 0.435 3175 -3177 4 12.46 141.23 24.62 0.435 3176 -3178 4 12.83 142.07 25.09 0.435 3177 -3179 4 13.15 143.55 25.71 0.435 3178 -3180 4 13.25 145.0 26.46 0.435 3179 -3181 4 14.59 147.82 27.31 0.435 3180 -3182 4 14.89 149.25 28.45 0.435 3181 -3183 4 15.2 150.4 30.22 0.435 3182 -3184 4 16.2 151.74 30.39 0.435 3183 -3185 4 16.82 152.18 30.75 0.435 3184 -3186 4 17.37 153.69 31.22 0.435 3185 -3187 4 17.9 154.62 33.14 0.435 3186 -3188 4 18.71 155.53 33.25 0.435 3187 -3189 4 19.64 157.39 34.75 0.435 3188 -3190 4 19.77 158.42 35.39 0.435 3189 -3191 4 20.74 160.19 35.66 0.435 3190 -3192 4 21.26 162.15 36.03 0.435 3191 -3193 4 22.91 163.28 36.57 0.435 3192 -3194 4 23.68 164.78 37.26 0.435 3193 -3195 4 24.03 165.84 37.68 0.435 3194 -3196 4 24.79 167.34 38.39 0.435 3195 -3197 4 24.84 169.66 39.23 0.435 3196 -3198 4 25.09 172.44 39.68 0.435 3197 -3199 4 24.97 174.12 40.3 0.435 3198 -3200 4 24.8 176.66 40.86 0.435 3199 -3201 4 24.7 177.86 41.74 0.435 3200 -3202 4 24.82 178.89 42.37 0.435 3201 -3203 4 24.01 181.41 42.76 0.435 3202 -3204 4 23.5 182.66 43.03 0.435 3203 -3205 4 23.39 184.36 43.28 0.435 3204 -3206 4 23.26 186.28 43.63 0.435 3205 -3207 4 22.7 187.88 44.53 0.435 3206 -3208 4 22.96 190.22 45.31 0.435 3207 -3209 4 23.5 191.94 45.8 0.435 3208 -3210 4 22.95 193.82 46.05 0.435 3209 -3211 4 23.02 195.76 46.41 0.435 3210 -3212 4 22.95 196.76 47.19 0.435 3211 -3213 4 22.88 197.31 48.15 0.435 3212 -3214 4 21.95 198.07 48.73 0.435 3213 -3215 4 22.29 199.59 48.9 0.435 3214 -3216 4 22.45 200.44 49.22 0.435 3215 -3217 4 22.37 201.19 50.27 0.435 3216 -3218 4 22.3 202.24 50.53 0.435 3217 -3219 4 21.82 202.86 50.58 0.435 3218 -3220 4 21.1 203.62 51.17 0.435 3219 -3221 4 20.21 203.99 51.26 0.435 3220 -3222 4 19.9 205.44 51.71 0.435 3221 -3223 4 20.42 207.19 51.97 0.435 3222 -3224 4 21.61 208.97 52.42 0.435 3223 -3225 4 22.34 211.16 52.73 0.435 3224 -3226 4 24.35 213.47 53.1 0.435 3225 -3227 4 24.84 215.84 53.66 0.435 3226 -3228 4 25.98 218.24 54.3 0.435 3227 -3229 4 26.73 219.72 55.16 0.435 3228 -3230 4 27.48 221.44 55.81 0.435 3229 -3231 4 27.98 223.81 56.37 0.435 3230 -3232 4 28.33 224.65 56.91 0.435 3231 -3233 4 29.14 225.76 57.12 0.435 3232 -3234 4 29.24 227.22 57.8 0.435 3233 -3235 4 29.79 228.5 58.4 0.435 3234 -3236 4 30.33 230.21 58.96 0.435 3235 -3237 4 30.69 231.3 59.24 0.435 3236 -3238 4 30.8 232.52 60.19 0.435 3237 -3239 4 30.71 233.79 60.4 0.435 3238 -3240 4 14.76 86.98 7.6 0.435 3141 -3241 4 15.26 88.6 9.07 0.435 3240 -3242 4 15.39 89.85 9.57 0.435 3241 -3243 4 15.1 90.35 10.91 0.435 3242 -3244 4 15.22 91.87 11.07 0.435 3243 -3245 4 15.79 93.19 11.22 0.435 3244 -3246 4 15.76 94.42 9.83 0.325 3245 -3247 4 15.0 96.1 9.99 0.325 3246 -3248 4 14.21 98.2 10.19 0.325 3247 -3249 4 13.43 100.31 10.39 0.325 3248 -3250 4 12.58 103.47 10.69 0.325 3249 -3251 4 12.58 106.7 11.03 0.325 3250 -3252 4 14.55 64.69 -12.56 1.735 3117 -3253 4 15.81 65.98 -13.89 1.735 3252 -3254 4 16.36 67.52 -13.72 1.735 3253 -3255 4 16.59 67.59 -14.31 0.435 3254 -3256 4 17.05 67.18 -14.27 0.435 3255 -3257 4 17.53 66.85 -14.97 0.435 3256 -3258 4 17.97 66.91 -15.26 0.435 3257 -3259 4 17.76 66.94 -15.71 0.435 3258 -3260 4 18.22 67.07 -16.67 0.435 3259 -3261 4 18.67 67.16 -17.25 0.435 3260 -3262 4 19.12 66.8 -17.65 0.435 3261 -3263 4 19.58 66.61 -17.74 0.435 3262 -3264 4 20.04 66.21 -17.77 0.435 3263 -3265 4 20.92 66.3 -18.11 0.435 3264 -3266 4 21.74 67.02 -18.25 0.435 3265 -3267 4 22.55 67.93 -18.14 0.435 3266 -3268 4 22.96 68.41 -18.37 0.435 3267 -3269 4 23.5 70.22 -18.62 0.435 3268 -3270 4 24.35 70.71 -18.7 0.435 3269 -3271 4 24.6 71.08 -20.17 0.435 3270 -3272 4 24.77 71.55 -20.2 0.435 3271 -3273 4 25.42 72.35 -21.37 0.435 3272 -3274 4 25.44 72.44 -22.27 0.435 3273 -3275 4 26.1 72.54 -22.78 0.435 3274 -3276 4 26.91 73.47 -22.81 0.435 3275 -3277 4 26.93 73.57 -23.7 0.435 3276 -3278 4 27.56 74.06 -23.93 0.435 3277 -3279 4 27.76 74.79 -24.61 0.435 3278 -3280 4 27.99 74.91 -25.57 0.435 3279 -3281 4 28.64 74.96 -25.7 0.435 3280 -3282 4 29.24 75.88 -25.82 0.435 3281 -3283 4 29.46 75.91 -26.04 0.435 3282 -3284 4 29.7 76.01 -26.78 0.435 3283 -3285 4 30.58 76.15 -27.65 0.435 3284 -3286 4 30.82 75.97 -27.96 0.435 3285 -3287 4 31.27 76.09 -28.76 0.435 3286 -3288 4 31.28 76.14 -29.28 0.435 3287 -3289 4 32.19 75.82 -29.9 0.435 3288 -3290 4 32.43 75.94 -30.78 0.435 3289 -3291 4 33.12 75.59 -31.18 0.435 3290 -3292 4 33.35 75.45 -31.87 0.435 3291 -3293 4 33.84 75.15 -32.87 0.435 3292 -3294 4 34.33 74.57 -33.29 0.435 3293 -3295 4 35.03 74.06 -34.15 0.435 3294 -3296 4 35.52 73.23 -34.31 0.435 3295 -3297 4 36.01 72.94 -35.38 0.435 3296 -3298 4 36.49 72.37 -35.8 0.435 3297 -3299 4 36.58 71.36 -36.59 0.435 3298 -3300 4 37.28 70.55 -36.73 0.435 3299 -3301 4 37.57 69.76 -37.33 0.435 3300 -3302 4 37.84 69.24 -38.44 0.435 3301 -3303 4 38.1 68.89 -39.14 0.435 3302 -3304 4 38.35 68.49 -39.33 0.435 3303 -3305 4 38.57 69.09 -40.77 0.435 3304 -3306 4 39.04 68.68 -40.72 0.435 3305 -3307 4 39.46 68.69 -40.56 0.435 3306 -3308 4 39.71 68.28 -40.67 0.435 3307 -3309 4 39.96 67.9 -41.01 0.435 3308 -3310 4 40.45 67.35 -41.73 0.435 3309 -3311 4 40.72 66.78 -42.38 0.435 3310 -3312 4 40.73 66.8 -42.61 0.435 3311 -3313 4 40.78 66.79 -44.49 0.435 3312 -3314 4 41.04 66.72 -45.77 0.435 3313 -3315 4 41.07 66.56 -46.39 0.435 3314 -3316 4 41.32 66.69 -47.51 0.435 3315 -3317 4 41.6 65.92 -48.34 0.435 3316 -3318 4 41.64 65.87 -49.85 0.435 3317 -3319 4 41.67 66.0 -51.11 0.435 3318 -3320 4 41.94 65.66 -52.05 0.435 3319 -3321 4 41.98 65.53 -52.73 0.435 3320 -3322 4 42.21 65.35 -53.05 0.435 3321 -3323 4 42.24 65.49 -54.32 0.435 3322 -3324 4 42.47 65.6 -55.28 0.435 3323 -3325 4 42.51 65.46 -55.89 0.435 3324 -3326 4 42.54 65.59 -57.24 0.435 3325 -3327 4 42.79 65.5 -58.37 0.435 3326 -3328 4 43.28 65.21 -59.52 0.435 3327 -3329 4 43.54 65.11 -60.43 0.435 3328 -3330 4 43.98 64.94 -60.66 0.435 3329 -3331 4 44.43 64.77 -60.82 0.435 3330 -3332 4 44.91 64.44 -61.59 0.435 3331 -3333 4 45.37 64.05 -61.7 0.435 3332 -3334 4 45.82 63.87 -61.86 0.435 3333 -3335 4 46.48 63.71 -61.93 0.435 3334 -3336 4 47.57 63.79 -61.98 0.435 3335 -3337 4 48.37 64.69 -61.87 0.435 3336 -3338 4 48.83 64.82 -62.82 0.435 3337 -3339 4 48.86 64.93 -63.86 0.435 3338 -3340 4 49.29 64.96 -63.92 0.435 3339 -3341 4 49.53 65.08 -64.89 0.435 3340 -3342 4 50.82 65.65 -65.4 0.435 3341 -3343 4 52.12 65.5 -65.24 0.435 3342 -3344 4 53.39 65.98 -64.92 0.435 3343 -3345 4 54.04 66.02 -64.91 0.435 3344 -3346 4 55.14 65.66 -64.92 0.435 3345 -3347 4 56.66 65.75 -64.8 0.435 3346 -3348 4 57.54 65.36 -64.82 0.435 3347 -3349 4 58.62 65.42 -64.79 0.435 3348 -3350 4 59.07 65.22 -64.65 0.435 3349 -3351 4 60.58 65.58 -65.03 0.435 3350 -3352 4 61.44 65.63 -65.0 0.435 3351 -3353 4 61.67 65.66 -65.14 0.435 3352 -3354 4 62.15 65.15 -66.16 0.435 3353 -3355 4 62.63 65.04 -67.0 0.435 3354 -3356 4 62.87 64.66 -67.4 0.435 3355 -3357 4 63.35 64.32 -67.95 0.435 3356 -3358 4 64.03 63.95 -68.12 0.435 3357 -3359 4 65.16 63.42 -68.6 0.435 3358 -3360 4 65.86 63.12 -69.6 0.435 3359 -3361 4 66.29 63.16 -69.74 0.435 3360 -3362 4 67.0 62.64 -70.53 0.435 3361 -3363 4 67.91 62.34 -71.29 0.435 3362 -3364 4 68.61 61.75 -71.49 0.435 3363 -3365 4 68.63 61.58 -71.88 0.435 3364 -3366 4 69.09 61.2 -72.21 0.435 3365 -3367 4 69.59 60.93 -73.5 0.435 3366 -3368 4 70.06 60.58 -74.06 0.435 3367 -3369 4 70.3 60.72 -75.17 0.435 3368 -3370 4 70.78 60.38 -75.87 0.435 3369 -3371 4 71.04 60.33 -77.3 0.435 3370 -3372 4 71.5 59.94 -77.41 0.435 3371 -3373 4 71.99 59.13 -77.7 0.435 3372 -3374 4 72.18 59.27 -76.93 0.435 3373 -3375 4 72.39 59.29 -76.92 0.435 3374 -3376 4 72.63 58.86 -76.81 0.435 3375 -3377 4 72.63 58.9 -77.19 0.435 3376 -3378 4 72.87 58.99 -78.0 0.435 3377 -3379 4 73.1 59.57 -79.21 0.435 3378 -3380 4 74.62 59.45 -79.19 0.435 3379 -3381 4 74.86 59.55 -80.01 0.435 3380 -3382 4 74.89 59.7 -81.42 0.435 3381 -3383 4 75.78 59.55 -81.64 0.435 3382 -3384 4 76.0 59.59 -81.94 0.435 3383 -3385 4 76.47 59.49 -82.69 0.435 3384 -3386 4 76.92 59.63 -83.79 0.435 3385 -3387 4 77.38 59.5 -84.4 0.435 3386 -3388 4 77.66 59.49 -86.27 0.435 3387 -3389 4 78.1 59.31 -86.36 0.435 3388 -3390 4 78.36 59.22 -87.42 0.435 3389 -3391 4 78.59 59.27 -87.78 0.435 3390 -3392 4 79.03 59.39 -88.66 0.435 3391 -3393 4 79.72 59.04 -89.06 0.435 3392 -3394 4 80.0 58.79 -90.73 0.435 3393 -3395 4 81.14 58.24 -90.99 0.435 3394 -3396 4 82.05 57.71 -91.55 0.435 3395 -3397 4 82.73 57.31 -91.58 0.435 3396 -3398 4 83.82 57.18 -91.64 0.435 3397 -3399 4 16.39 67.89 -15.27 1.735 3254 -3400 4 16.95 69.7 -16.05 1.515 3399 -3401 4 17.06 71.43 -15.87 1.515 3400 -3402 4 17.17 72.62 -14.76 1.41 3401 -3403 4 17.53 73.74 -14.79 1.515 3402 -3404 4 17.48 74.59 -14.7 1.515 3403 -3405 4 17.45 75.02 -14.66 1.515 3404 -3406 4 16.45 73.5 -14.24 0.435 3405 -3407 4 15.36 73.43 -14.27 0.435 3406 -3408 4 13.39 73.76 -14.35 0.435 3407 -3409 4 11.64 74.09 -14.44 0.435 3408 -3410 4 10.05 74.79 -13.8 0.435 3409 -3411 4 9.35 75.57 -13.44 0.435 3410 -3412 4 7.4 75.18 -12.92 0.435 3411 -3413 4 4.82 74.81 -13.02 0.435 3412 -3414 4 2.25 74.44 -13.12 0.435 3413 -3415 4 0.35 73.55 -13.25 0.435 3414 -3416 4 -1.0 74.06 -12.63 0.435 3415 -3417 4 -1.47 74.68 -12.58 0.435 3416 -3418 4 -2.36 75.29 -12.76 0.435 3417 -3419 4 -3.73 75.48 -11.19 0.435 3418 -3420 4 -4.63 76.06 -11.15 0.435 3419 -3421 4 -5.51 76.84 -11.09 0.435 3420 -3422 4 -6.02 77.84 -10.48 0.435 3421 -3423 4 -6.09 78.91 -10.37 0.435 3422 -3424 4 -6.59 79.95 -10.27 0.435 3423 -3425 4 -6.67 81.03 -10.16 0.435 3424 -3426 4 -6.5 82.16 -10.5 0.435 3425 -3427 4 -6.63 84.09 -10.3 0.435 3426 -3428 4 -7.17 85.98 -10.12 0.435 3427 -3429 4 -8.66 88.7 -9.87 0.435 3428 -3430 4 -10.18 92.25 -9.54 0.435 3429 -3431 4 -11.29 95.29 -7.96 0.435 3430 -3432 4 -12.28 97.37 -7.77 0.435 3431 -3433 4 -13.72 99.44 -7.52 0.435 3432 -3434 4 -14.51 101.54 -7.32 0.435 3433 -3435 4 -15.74 103.54 -6.46 0.435 3434 -3436 4 -17.2 105.51 -5.39 0.435 3435 -3437 4 -18.65 107.78 -5.11 0.435 3436 -3438 4 -20.35 110.44 -4.58 0.435 3437 -3439 4 -20.51 113.02 -4.31 0.435 3438 -3440 4 -20.41 114.73 -3.9 0.435 3439 -3441 4 -22.87 119.29 -3.49 0.435 3440 -3442 4 -24.08 121.16 -3.33 0.435 3441 -3443 4 -25.03 122.33 -2.62 0.435 3442 -3444 4 -25.14 123.81 -2.18 0.435 3443 -3445 4 -25.19 123.83 -0.22 0.435 3444 -3446 4 -26.19 124.85 1.74 0.435 3445 -3447 4 -27.85 127.13 1.94 0.435 3446 -3448 4 -28.31 127.53 1.97 0.435 3447 -3449 4 -28.82 128.79 2.09 0.435 3448 -3450 4 -29.33 129.3 3.03 0.435 3449 -3451 4 -30.29 130.73 3.38 0.435 3450 -3452 4 -30.4 132.44 3.71 0.435 3451 -3453 4 -31.42 134.48 4.26 0.435 3452 -3454 4 -32.49 137.39 4.92 0.435 3453 -3455 4 -33.02 138.81 5.58 0.435 3454 -3456 4 -32.92 140.5 6.14 0.435 3455 -3457 4 -32.85 142.62 6.66 0.435 3456 -3458 4 -33.39 144.08 7.02 0.435 3457 -3459 4 -33.95 145.92 7.73 0.435 3458 -3460 4 -34.52 147.79 8.28 0.435 3459 -3461 4 -35.1 150.11 8.59 0.435 3460 -3462 4 -35.18 151.11 9.37 0.435 3461 -3463 4 -36.59 152.73 9.58 0.435 3462 -3464 4 -37.54 153.97 9.69 0.435 3463 -3465 4 -37.63 155.25 9.89 0.435 3464 -3466 4 -37.46 156.05 10.05 0.435 3465 -3467 4 -37.53 156.86 10.66 0.435 3466 -3468 4 -37.4 157.55 12.39 0.435 3467 -3469 4 -37.01 158.22 12.47 0.435 3468 -3470 4 -37.06 158.85 12.76 0.435 3469 -3471 4 -36.67 159.26 13.26 0.435 3470 -3472 4 -24.84 124.92 -0.1 0.435 3445 -3473 4 -24.92 126.2 0.02 0.435 3472 -3474 4 -24.99 127.3 -0.08 0.435 3473 -3475 4 -24.46 129.01 0.55 0.435 3474 -3476 4 -24.35 130.72 0.8 0.435 3475 -3477 4 -24.97 133.45 1.37 0.435 3476 -3478 4 -25.4 136.85 1.87 0.435 3477 -3479 4 -25.47 137.64 2.63 0.435 3478 -3480 4 -26.48 139.71 2.97 0.435 3479 -3481 4 -27.47 141.56 3.36 0.435 3480 -3482 4 -5.99 76.83 -10.88 0.435 3421 -3483 4 -7.05 76.32 -10.88 0.435 3482 -3484 4 -9.26 76.79 -10.58 0.435 3483 -3485 4 -9.91 76.17 -9.08 0.435 3484 -3486 4 -12.01 74.73 -9.05 0.435 3485 -3487 4 -14.12 73.95 -9.11 0.435 3486 -3488 4 -15.62 73.64 -9.18 0.435 3487 -3489 4 -19.31 73.63 -9.19 0.435 3488 -3490 4 -21.22 72.86 -9.31 0.435 3489 -3491 4 -22.9 71.89 -9.38 0.435 3490 -3492 4 -24.41 71.79 -9.35 0.435 3491 -3493 4 -26.13 71.45 -9.2 0.435 3492 -3494 4 -30.21 70.75 -9.22 0.435 3493 -3495 4 -33.67 70.54 -9.32 0.435 3494 -3496 4 -36.46 69.95 -9.45 0.435 3495 -3497 4 -38.34 68.95 -9.45 0.435 3496 -3498 4 -40.88 67.93 -9.61 0.435 3497 -3499 4 -44.5 66.64 -9.83 0.435 3498 -3500 4 -47.67 65.37 -10.04 0.435 3499 -3501 4 -50.67 64.75 -10.17 0.435 3500 -3502 4 -54.34 64.54 -10.28 0.435 3501 -3503 4 -58.4 63.64 -10.47 0.435 3502 -3504 4 -60.7 62.21 -10.67 0.435 3503 -3505 4 -63.37 59.9 -10.98 0.435 3504 -3506 4 -64.95 57.43 -11.27 0.435 3505 -3507 4 -67.84 55.11 -11.58 0.435 3506 -3508 4 -69.04 53.53 -11.77 0.435 3507 -3509 4 -69.82 52.19 -11.93 0.435 3508 -3510 4 -0.14 74.49 -13.09 0.435 3415 -3511 4 -2.29 74.13 -12.96 0.435 3510 -3512 4 -4.92 74.34 -12.39 0.435 3511 -3513 4 -7.74 74.17 -12.48 0.435 3512 -3514 4 -9.88 73.6 -12.52 0.435 3513 -3515 4 -11.39 73.5 -12.56 0.435 3514 -3516 4 -13.11 73.17 -12.56 0.435 3515 -3517 4 -13.92 72.47 -12.65 0.435 3516 -3518 4 -14.71 71.15 -12.8 0.435 3517 -3519 4 -15.47 69.1 -12.43 0.435 3518 -3520 4 -16.66 67.3 -12.57 0.435 3519 -3521 4 -17.45 65.89 -12.06 0.435 3520 -3522 4 -18.2 63.9 -12.21 0.435 3521 -3523 4 -18.15 63.47 -12.86 0.435 3522 -3524 4 -18.55 62.79 -12.63 0.435 3523 -3525 4 -18.95 62.39 -13.21 0.435 3524 -3526 4 -19.88 60.72 -14.61 0.435 3525 -3527 4 -21.28 58.7 -14.85 0.435 3526 -3528 4 -22.06 57.89 -15.86 0.435 3527 -3529 4 -22.41 56.6 -16.22 0.435 3528 -3530 4 -23.38 54.82 -16.51 0.435 3529 -3531 4 -24.54 52.88 -17.41 0.435 3530 -3532 4 -26.19 51.72 -17.72 0.435 3531 -3533 4 -26.54 50.68 -18.44 0.435 3532 -3534 4 -27.04 48.57 -19.42 0.435 3533 -3535 4 -27.38 47.06 -19.59 0.435 3534 -3536 4 -28.17 45.94 -19.8 0.435 3535 -3537 4 -28.93 44.39 -20.05 0.435 3536 -3538 4 -29.72 43.86 -21.56 0.435 3537 -3539 4 -30.65 41.7 -22.33 0.435 3538 -3540 4 -30.36 40.42 -22.53 0.435 3539 -3541 4 -30.27 39.45 -23.46 0.435 3540 -3542 4 -31.39 36.61 -24.08 0.435 3541 -3543 4 -31.96 35.79 -24.86 0.435 3542 -3544 4 -32.3 34.47 -25.08 0.435 3543 -3545 4 -33.54 33.32 -25.23 0.435 3544 -3546 4 -33.44 32.35 -26.23 0.435 3545 -3547 4 -33.76 30.65 -26.79 0.435 3546 -3548 4 -34.11 29.86 -27.86 0.435 3547 -3549 4 -34.46 28.81 -28.43 0.435 3548 -3550 4 -35.04 28.29 -30.08 0.435 3549 -3551 4 -35.8 26.74 -30.26 0.435 3550 -3552 4 -36.6 25.61 -30.24 0.435 3551 -3553 4 -36.34 25.0 -30.67 0.435 3552 -3554 4 -36.7 24.46 -32.02 0.435 3553 -3555 4 -36.98 22.37 -32.85 0.435 3554 -3556 4 17.35 77.3 -15.78 1.515 3404 -3557 4 17.49 78.38 -15.67 1.515 3556 -3558 4 18.01 80.57 -15.5 1.41 3557 -3559 4 18.55 82.33 -15.31 1.41 3558 -3560 4 19.09 84.08 -15.11 1.41 3559 -3561 4 20.1 85.76 -16.05 1.41 3560 -3562 4 20.64 87.52 -15.85 1.41 3561 -3563 4 21.46 88.75 -16.75 1.41 3562 -3564 4 22.34 88.42 -16.77 1.41 3563 -3565 4 23.52 87.51 -17.74 0.54 3564 -3566 4 23.95 87.53 -17.73 0.54 3565 -3567 4 24.17 87.53 -17.5 0.54 3566 -3568 4 24.41 87.16 -17.99 0.54 3567 -3569 4 25.11 86.91 -19.35 0.54 3568 -3570 4 25.6 86.31 -19.62 0.54 3569 -3571 4 26.32 85.31 -19.94 0.54 3570 -3572 4 26.79 84.93 -20.27 0.54 3571 -3573 4 27.28 84.13 -20.56 0.54 3572 -3574 4 27.74 84.02 -21.32 0.54 3573 -3575 4 28.44 83.42 -21.51 0.54 3574 -3576 4 29.36 82.93 -22.45 0.54 3575 -3577 4 30.08 82.47 -23.84 0.54 3576 -3578 4 30.53 82.53 -24.12 0.54 3577 -3579 4 31.02 82.28 -25.64 0.54 3578 -3580 4 31.51 81.73 -26.44 0.54 3579 -3581 4 31.98 81.4 -26.99 0.54 3580 -3582 4 32.48 80.89 -28.16 0.54 3581 -3583 4 32.74 80.26 -28.3 0.54 3582 -3584 4 33.21 79.91 -28.77 0.54 3583 -3585 4 33.27 79.1 -29.23 0.54 3584 -3586 4 33.53 78.73 -29.79 0.54 3585 -3587 4 34.01 78.41 -30.57 0.54 3586 -3588 4 34.69 78.04 -30.81 0.54 3587 -3589 4 35.37 77.67 -30.99 0.54 3588 -3590 4 36.26 77.57 -31.51 0.54 3589 -3591 4 36.73 77.44 -32.18 0.54 3590 -3592 4 36.96 77.25 -32.35 0.54 3591 -3593 4 37.4 77.09 -32.51 0.54 3592 -3594 4 37.87 76.73 -32.92 0.54 3593 -3595 4 38.35 76.38 -33.46 0.54 3594 -3596 4 38.82 76.03 -34.09 0.54 3595 -3597 4 39.54 75.27 -34.68 0.54 3596 -3598 4 40.68 74.26 -34.83 0.54 3597 -3599 4 40.93 73.87 -35.02 0.54 3598 -3600 4 41.0 73.31 -35.98 0.54 3599 -3601 4 41.73 72.6 -37.01 0.54 3600 -3602 4 42.19 72.5 -37.85 0.54 3601 -3603 4 42.9 71.71 -38.21 0.54 3602 -3604 4 42.92 71.53 -38.6 0.54 3603 -3605 4 43.41 70.98 -39.18 0.54 3604 -3606 4 43.88 70.63 -39.73 0.54 3605 -3607 4 44.39 69.88 -40.7 0.54 3606 -3608 4 45.08 69.07 -40.77 0.54 3607 -3609 4 45.56 68.45 -40.82 0.54 3608 -3610 4 46.27 67.65 -41.04 0.54 3609 -3611 4 47.36 67.79 -41.67 0.54 3610 -3612 4 48.06 67.46 -42.29 0.54 3611 -3613 4 48.49 67.5 -42.43 0.54 3612 -3614 4 48.75 66.85 -42.27 0.54 3613 -3615 4 48.75 66.87 -42.42 0.54 3614 -3616 4 49.47 66.68 -44.38 0.54 3615 -3617 4 49.47 66.7 -44.53 0.54 3616 -3618 4 49.96 66.14 -45.18 0.54 3617 -3619 4 50.22 65.76 -45.58 0.54 3618 -3620 4 50.92 65.22 -46.3 0.54 3619 -3621 4 51.38 64.82 -46.33 0.54 3620 -3622 4 51.84 64.46 -46.74 0.54 3621 -3623 4 52.52 64.08 -46.83 0.54 3622 -3624 4 52.99 63.99 -47.81 0.54 3623 -3625 4 53.23 63.85 -48.28 0.54 3624 -3626 4 53.26 63.73 -49.26 0.54 3625 -3627 4 53.3 63.87 -50.6 0.54 3626 -3628 4 53.77 63.47 -50.71 0.54 3627 -3629 4 53.84 62.68 -51.47 0.435 3628 -3630 4 53.87 62.53 -52.16 0.435 3629 -3631 4 53.66 62.32 -52.33 0.435 3630 -3632 4 54.12 61.92 -52.37 0.435 3631 -3633 4 54.8 61.29 -52.26 0.435 3632 -3634 4 55.48 60.92 -52.37 0.435 3633 -3635 4 55.94 60.74 -52.44 0.435 3634 -3636 4 56.67 60.01 -53.34 0.435 3635 -3637 4 57.14 59.18 -53.41 0.435 3636 -3638 4 57.41 58.55 -53.54 0.435 3637 -3639 4 57.9 57.73 -53.69 0.435 3638 -3640 4 58.36 57.36 -54.02 0.435 3639 -3641 4 58.83 56.99 -54.35 0.435 3640 -3642 4 59.52 56.71 -55.34 0.435 3641 -3643 4 59.99 56.59 -56.1 0.435 3642 -3644 4 60.7 56.1 -57.19 0.435 3643 -3645 4 61.18 55.79 -58.11 0.435 3644 -3646 4 61.65 55.4 -58.29 0.435 3645 -3647 4 62.14 55.15 -59.74 0.435 3646 -3648 4 62.63 54.63 -60.76 0.435 3647 -3649 4 62.91 54.35 -62.06 0.435 3648 -3650 4 63.18 53.75 -62.5 0.435 3649 -3651 4 63.68 53.28 -63.96 0.435 3650 -3652 4 63.73 52.95 -64.97 0.435 3651 -3653 4 64.24 52.46 -66.3 0.435 3652 -3654 4 64.48 52.33 -66.98 0.435 3653 -3655 4 64.97 51.83 -68.08 0.435 3654 -3656 4 65.23 51.43 -68.26 0.435 3655 -3657 4 65.5 50.85 -68.84 0.435 3656 -3658 4 65.54 50.75 -69.9 0.435 3657 -3659 4 65.79 50.96 -71.84 0.435 3658 -3660 4 66.29 50.71 -73.21 0.435 3659 -3661 4 66.34 50.61 -74.43 0.435 3660 -3662 4 67.5 49.67 -75.25 0.435 3661 -3663 4 67.99 49.17 -76.35 0.435 3662 -3664 4 68.93 48.42 -76.92 0.435 3663 -3665 4 69.39 48.27 -77.31 0.435 3664 -3666 4 70.3 47.72 -77.72 0.435 3665 -3667 4 71.01 47.23 -78.89 0.435 3666 -3668 4 71.95 46.73 -79.82 0.435 3667 -3669 4 72.83 46.36 -79.84 0.435 3668 -3670 4 74.2 45.88 -80.75 0.435 3669 -3671 4 74.86 45.72 -80.83 0.435 3670 -3672 4 75.51 45.76 -80.88 0.435 3671 -3673 4 76.62 45.43 -81.12 0.435 3672 -3674 4 77.75 44.88 -81.38 0.435 3673 -3675 4 79.75 44.4 -81.83 0.435 3674 -3676 4 81.09 43.62 -81.88 0.435 3675 -3677 4 82.23 42.83 -82.01 0.435 3676 -3678 4 83.38 42.08 -82.44 0.435 3677 -3679 4 84.96 41.1 -82.58 0.435 3678 -3680 4 86.52 40.56 -82.6 0.435 3679 -3681 4 87.63 40.0 -82.7 0.435 3680 -3682 4 22.05 89.61 -16.28 1.41 3564 -3683 4 22.63 90.56 -16.17 1.41 3682 -3684 4 23.48 90.8 -15.89 0.54 3683 -3685 4 23.92 90.6 -15.83 0.54 3684 -3686 4 24.11 91.04 -15.78 0.54 3685 -3687 4 24.13 91.15 -16.82 0.54 3686 -3688 4 24.37 90.97 -17.06 0.54 3687 -3689 4 24.6 91.05 -17.65 0.54 3688 -3690 4 24.62 91.13 -18.39 0.54 3689 -3691 4 24.84 91.18 -18.84 0.54 3690 -3692 4 24.86 91.27 -19.66 0.54 3691 -3693 4 25.32 91.39 -20.61 0.54 3692 -3694 4 25.75 91.42 -20.6 0.54 3693 -3695 4 25.94 91.87 -20.55 0.54 3694 -3696 4 26.37 92.41 -21.39 0.54 3695 -3697 4 27.03 92.81 -22.76 0.435 3696 -3698 4 27.66 93.85 -23.99 0.435 3697 -3699 4 28.49 94.58 -24.28 0.435 3698 -3700 4 28.91 95.1 -24.89 0.435 3699 -3701 4 29.15 95.19 -25.56 0.435 3700 -3702 4 29.93 96.56 -25.77 0.435 3701 -3703 4 30.4 96.71 -26.95 0.435 3702 -3704 4 31.07 96.82 -27.53 0.435 3703 -3705 4 31.49 97.39 -28.59 0.435 3704 -3706 4 32.3 98.84 -29.55 0.435 3705 -3707 4 32.94 99.39 -30.23 0.435 3706 -3708 4 33.54 100.29 -30.2 0.435 3707 -3709 4 34.15 101.26 -30.77 0.435 3708 -3710 4 34.78 102.04 -31.65 0.435 3709 -3711 4 35.39 103.01 -32.36 0.435 3710 -3712 4 37.08 104.04 -32.74 0.435 3711 -3713 4 38.73 105.72 -33.28 0.435 3712 -3714 4 39.8 106.32 -34.25 0.435 3713 -3715 4 41.01 108.18 -34.63 0.435 3714 -3716 4 41.37 109.55 -35.01 0.435 3715 -3717 4 41.76 110.78 -36.23 0.435 3716 -3718 4 42.13 112.44 -37.33 0.435 3717 -3719 4 42.54 113.2 -38.14 0.435 3718 -3720 4 43.07 115.21 -38.3 0.435 3719 -3721 4 44.26 117.53 -39.09 0.435 3720 -3722 4 45.69 119.45 -39.91 0.435 3721 -3723 4 46.5 120.95 -41.32 0.435 3722 -3724 4 47.11 121.9 -41.73 0.435 3723 -3725 4 47.49 122.82 -42.08 0.435 3724 -3726 4 48.02 125.07 -42.52 0.435 3725 -3727 4 48.78 127.36 -43.09 0.435 3726 -3728 4 48.86 130.11 -44.46 0.435 3727 -3729 4 48.83 131.08 -45.48 0.435 3728 -3730 4 49.19 132.67 -46.0 0.435 3729 -3731 4 49.12 134.04 -46.61 0.435 3730 -3732 4 48.66 135.25 -48.0 0.435 3731 -3733 4 48.19 136.18 -48.98 0.435 3732 -3734 4 48.36 137.33 -49.45 0.435 3733 -3735 4 47.87 138.43 -49.95 0.435 3734 -3736 4 47.83 138.83 -49.68 0.435 3735 -3737 4 47.82 139.59 -50.66 0.435 3736 -3738 4 47.78 140.48 -50.94 0.435 3737 -3739 4 47.73 141.12 -50.73 0.435 3738 -3740 4 47.74 141.7 -52.18 0.435 3739 -3741 4 47.65 143.5 -52.9 0.435 3740 -3742 4 47.79 144.59 -52.71 0.435 3741 -3743 4 48.04 144.99 -54.46 0.435 3742 -3744 4 48.02 146.01 -55.95 0.435 3743 -3745 4 48.34 148.3 -56.98 0.435 3744 -3746 4 48.51 149.47 -57.61 0.435 3745 -3747 4 49.52 150.91 -58.19 0.435 3746 -3748 4 50.63 154.51 -58.77 0.435 3747 -3749 4 50.52 156.52 -59.47 0.435 3748 -3750 4 51.36 157.53 -60.33 0.435 3749 -3751 4 52.3 159.75 -60.15 0.435 3750 -3752 4 53.1 161.19 -60.96 0.435 3751 -3753 4 22.85 90.51 -16.09 1.515 3683 -3754 4 22.57 92.13 -17.13 1.515 3753 -3755 4 22.02 93.8 -16.97 1.515 3754 -3756 4 21.93 95.3 -16.82 1.515 3755 -3757 4 21.88 96.76 -18.26 1.515 3756 -3758 4 21.34 98.44 -18.1 1.515 3757 -3759 4 20.58 100.67 -19.09 1.515 3758 -3760 4 20.06 102.74 -20.54 1.515 3759 -3761 4 19.98 104.02 -20.41 1.515 3760 -3762 4 19.9 105.31 -20.28 1.515 3761 -3763 4 20.05 106.96 -21.54 1.515 3762 -3764 4 20.46 107.53 -21.47 1.515 3763 -3765 4 21.29 107.75 -20.98 0.435 3764 -3766 4 21.91 108.22 -20.91 0.435 3765 -3767 4 22.1 108.63 -20.56 0.435 3766 -3768 4 22.25 109.21 -19.75 0.435 3767 -3769 4 22.42 109.82 -19.23 0.435 3768 -3770 4 22.57 110.63 -18.54 0.435 3769 -3771 4 22.96 111.03 -17.96 0.435 3770 -3772 4 23.12 111.62 -17.29 0.435 3771 -3773 4 23.24 112.86 -16.56 0.435 3772 -3774 4 23.4 113.5 -16.34 0.435 3773 -3775 4 23.93 115.19 -15.47 0.435 3774 -3776 4 24.5 116.24 -14.82 0.435 3775 -3777 4 24.86 117.31 -14.32 0.435 3776 -3778 4 25.26 117.74 -14.05 0.435 3777 -3779 4 25.63 118.35 -13.52 0.435 3778 -3780 4 26.03 118.74 -12.8 0.435 3779 -3781 4 26.65 119.21 -12.74 0.435 3780 -3782 4 26.82 119.6 -12.24 0.435 3781 -3783 4 27.21 120.26 -12.01 0.435 3782 -3784 4 27.36 121.12 -11.84 0.435 3783 -3785 4 28.04 121.27 -12.93 0.435 3784 -3786 4 29.51 122.22 -12.8 0.435 3785 -3787 4 31.01 125.77 -12.4 0.435 3786 -3788 4 32.36 128.42 -12.09 0.435 3787 -3789 4 33.15 129.2 -10.71 0.435 3788 -3790 4 34.13 130.76 -10.46 0.435 3789 -3791 4 35.32 132.3 -9.97 0.435 3790 -3792 4 36.59 132.81 -9.89 0.435 3791 -3793 4 36.94 133.62 -9.04 0.435 3792 -3794 4 37.74 134.69 -8.38 0.435 3793 -3795 4 38.48 136.41 -7.73 0.435 3794 -3796 4 39.86 138.15 -6.76 0.435 3795 -3797 4 41.33 138.85 -6.5 0.435 3796 -3798 4 43.14 140.85 -5.65 0.435 3797 -3799 4 44.74 142.57 -4.53 0.435 3798 -3800 4 45.93 144.1 -3.9 0.435 3799 -3801 4 48.45 145.31 -3.57 0.435 3800 -3802 4 49.44 146.67 -3.4 0.435 3801 -3803 4 49.96 148.61 -2.89 0.435 3802 -3804 4 51.36 150.41 -2.59 0.435 3803 -3805 4 52.91 153.29 -2.18 0.435 3804 -3806 4 54.07 155.51 -1.92 0.435 3805 -3807 4 54.9 155.69 -0.98 0.435 3806 -3808 4 55.92 156.81 -0.76 0.435 3807 -3809 4 57.57 157.67 0.41 0.435 3808 -3810 4 57.69 158.39 1.92 0.435 3809 -3811 4 58.75 158.89 1.99 0.435 3810 -3812 4 59.16 158.81 3.05 0.435 3811 -3813 4 59.29 159.6 3.89 0.435 3812 -3814 4 59.69 159.73 4.97 0.435 3813 -3815 4 60.56 159.54 5.27 0.435 3814 -3816 4 61.21 159.58 5.29 0.435 3815 -3817 4 61.15 160.41 5.6 0.435 3816 -3818 4 61.32 161.07 5.75 0.435 3817 -3819 4 61.25 161.86 6.35 0.435 3818 -3820 4 61.2 162.45 6.95 0.435 3819 -3821 4 60.73 163.05 7.15 0.435 3820 -3822 4 60.67 163.62 7.88 0.435 3821 -3823 4 60.6 164.69 8.07 0.435 3822 -3824 4 60.96 165.52 8.62 0.435 3823 -3825 4 61.32 166.55 9.41 0.435 3824 -3826 4 62.1 167.65 9.76 0.435 3825 -3827 4 63.67 170.32 10.15 0.435 3826 -3828 4 64.03 170.62 11.7 0.435 3827 -3829 4 64.64 171.04 12.21 0.435 3828 -3830 4 64.59 171.36 13.45 0.435 3829 -3831 4 64.55 171.99 13.58 0.435 3830 -3832 4 65.14 172.28 15.29 0.435 3831 -3833 4 65.47 173.28 16.37 0.435 3832 -3834 4 65.67 173.21 17.13 0.435 3833 -3835 4 66.47 174.04 18.07 0.435 3834 -3836 4 66.8 175.29 18.81 0.435 3835 -3837 4 68.03 175.92 19.88 0.435 3836 -3838 4 68.55 177.62 20.6 0.435 3837 -3839 4 69.3 179.31 21.39 0.435 3838 -3840 4 70.3 180.15 22.33 0.435 3839 -3841 4 70.45 180.94 23.32 0.435 3840 -3842 4 71.67 181.79 24.26 0.435 3841 -3843 4 72.27 182.19 24.92 0.435 3842 -3844 4 73.02 183.94 25.35 0.435 3843 -3845 4 73.59 185.01 25.84 0.435 3844 -3846 4 74.2 185.45 26.21 0.435 3845 -3847 4 75.35 187.62 26.91 0.435 3846 -3848 4 75.7 188.68 27.41 0.435 3847 -3849 4 76.07 189.76 27.75 0.435 3848 -3850 4 76.68 190.17 28.34 0.435 3849 -3851 4 77.96 190.2 28.83 0.435 3850 -3852 4 78.35 190.59 29.55 0.435 3851 -3853 4 79.91 193.22 30.23 0.435 3852 -3854 4 80.0 194.85 31.39 0.435 3853 -3855 4 80.81 194.94 33.15 0.435 3854 -3856 4 81.56 196.18 34.2 0.435 3855 -3857 4 82.14 197.04 34.75 0.435 3856 -3858 4 82.52 197.37 36.0 0.435 3857 -3859 4 83.57 197.54 37.1 0.435 3858 -3860 4 83.9 198.53 38.27 0.435 3859 -3861 4 85.0 200.99 40.36 0.435 3860 -3862 4 85.41 200.94 41.12 0.435 3861 -3863 4 85.78 201.53 41.93 0.435 3862 -3864 4 86.56 202.58 42.81 0.435 3863 -3865 4 87.13 203.33 44.26 0.435 3864 -3866 4 87.48 204.13 45.26 0.435 3865 -3867 4 88.09 204.53 45.92 0.435 3866 -3868 4 88.65 205.58 46.79 0.435 3867 -3869 4 26.62 122.57 -11.63 0.435 3784 -3870 4 26.15 123.19 -11.58 0.435 3869 -3871 4 26.08 123.99 -10.97 0.435 3870 -3872 4 26.02 124.54 -9.94 0.435 3871 -3873 4 25.95 125.33 -9.25 0.435 3872 -3874 4 25.86 126.34 -8.55 0.435 3873 -3875 4 25.32 128.01 -8.24 0.435 3874 -3876 4 25.66 129.53 -7.99 0.435 3875 -3877 4 25.56 131.03 -7.84 0.435 3876 -3878 4 25.48 132.31 -7.71 0.435 3877 -3879 4 24.9 134.64 -7.48 0.435 3878 -3880 4 24.82 135.93 -7.35 0.435 3879 -3881 4 25.11 138.1 -7.05 0.435 3880 -3882 4 24.95 140.66 -6.78 0.435 3881 -3883 4 25.02 142.82 -6.56 0.435 3882 -3884 4 25.06 145.62 -6.27 0.435 3883 -3885 4 24.89 148.18 -6.01 0.435 3884 -3886 4 25.54 151.67 -5.63 0.435 3885 -3887 4 25.69 152.73 -5.29 0.435 3886 -3888 4 25.78 154.41 -4.66 0.435 3887 -3889 4 26.29 156.35 -4.14 0.435 3888 -3890 4 26.58 158.48 -3.55 0.435 3889 -3891 4 26.54 159.62 -4.1 0.435 3890 -3892 4 26.48 160.77 -4.74 0.435 3891 -3893 4 26.82 162.34 -5.02 0.435 3892 -3894 4 27.01 163.3 -5.75 0.435 3893 -3895 4 27.37 164.93 -6.7 0.435 3894 -3896 4 27.71 165.68 -5.19 0.435 3895 -3897 4 27.21 166.71 -4.94 0.435 3896 -3898 4 27.41 167.2 -5.41 0.435 3897 -3899 4 27.58 167.57 -4.61 0.435 3898 -3900 4 27.72 168.65 -4.5 0.435 3899 -3901 4 27.67 168.98 -3.49 0.435 3900 -3902 4 27.8 170.46 -3.03 0.435 3901 -3903 4 27.72 171.53 -2.84 0.435 3902 -3904 4 27.65 172.54 -2.29 0.435 3903 -3905 4 27.97 174.27 -2.03 0.435 3904 -3906 4 27.44 175.5 -1.46 0.435 3905 -3907 4 27.57 176.54 -0.98 0.435 3906 -3908 4 19.98 108.04 -21.43 1.515 3764 -3909 4 19.66 109.74 -21.26 1.515 3908 -3910 4 19.6 110.82 -21.15 1.515 3909 -3911 4 19.52 111.88 -21.04 1.515 3910 -3912 4 19.03 112.76 -20.96 1.515 3911 -3913 4 18.38 112.89 -21.57 0.65 3912 -3914 4 18.17 113.1 -21.62 0.975 3913 -3915 4 17.74 112.85 -21.59 0.975 3914 -3916 4 17.58 113.02 -23.39 0.975 3915 -3917 4 17.38 113.1 -24.29 0.975 3916 -3918 4 17.18 113.2 -25.48 0.975 3917 -3919 4 16.99 113.28 -26.31 0.975 3918 -3920 4 16.58 113.36 -27.37 0.975 3919 -3921 4 16.36 113.85 -28.07 0.975 3920 -3922 4 15.72 114.12 -28.97 0.975 3921 -3923 4 15.09 114.7 -30.8 0.975 3922 -3924 4 13.8 114.94 -31.78 0.975 3923 -3925 4 12.88 116.07 -32.74 0.76 3924 -3926 4 12.91 116.18 -33.79 0.76 3925 -3927 4 12.0 117.03 -34.25 0.65 3926 -3928 4 11.56 117.48 -34.74 0.65 3927 -3929 4 11.33 118.52 -36.52 0.65 3928 -3930 4 11.32 118.5 -36.3 0.65 3929 -3931 4 10.87 118.9 -36.27 0.65 3930 -3932 4 11.3 119.47 -37.33 0.54 3931 -3933 4 11.49 119.94 -37.5 0.54 3932 -3934 4 11.46 120.89 -38.31 0.54 3933 -3935 4 10.95 122.16 -38.26 0.54 3934 -3936 4 10.95 122.13 -38.05 0.54 3935 -3937 4 10.97 122.24 -39.09 0.54 3936 -3938 4 11.0 122.36 -40.28 0.54 3937 -3939 4 10.32 123.3 -41.33 0.54 3938 -3940 4 10.28 123.11 -39.47 0.54 3939 -3941 4 10.46 122.99 -38.19 0.54 3940 -3942 4 10.46 123.55 -39.49 0.54 3941 -3943 4 10.5 123.72 -41.13 0.54 3942 -3944 4 10.25 124.37 -41.29 0.54 3943 -3945 4 10.23 124.84 -41.62 0.54 3944 -3946 4 10.24 125.12 -42.2 0.54 3945 -3947 4 10.2 125.79 -42.43 0.54 3946 -3948 4 9.76 126.05 -43.09 0.54 3947 -3949 4 9.77 126.64 -44.62 0.54 3948 -3950 4 9.77 126.91 -45.11 0.54 3949 -3951 4 9.76 127.45 -46.11 0.54 3950 -3952 4 9.37 127.59 -47.69 0.54 3951 -3953 4 9.39 127.67 -48.51 0.54 3952 -3954 4 9.17 128.21 -49.74 0.54 3953 -3955 4 8.77 128.25 -50.35 0.54 3954 -3956 4 8.32 128.98 -51.34 0.54 3955 -3957 4 7.86 129.7 -52.33 0.54 3956 -3958 4 7.84 130.44 -53.31 0.54 3957 -3959 4 8.0 131.85 -54.13 0.54 3958 -3960 4 8.02 132.17 -55.16 0.54 3959 -3961 4 8.02 132.72 -56.38 0.54 3960 -3962 4 8.01 133.2 -56.78 0.54 3961 -3963 4 8.21 133.97 -57.83 0.54 3962 -3964 4 8.4 134.48 -58.38 0.54 3963 -3965 4 8.42 134.83 -59.7 0.54 3964 -3966 4 8.39 135.51 -60.0 0.54 3965 -3967 4 8.79 137.01 -61.65 0.54 3966 -3968 4 8.22 139.44 -62.38 0.54 3967 -3969 4 7.52 140.56 -63.19 0.54 3968 -3970 4 7.46 141.4 -62.88 0.54 3969 -3971 4 6.8 142.09 -63.73 0.54 3970 -3972 4 6.63 142.25 -65.38 0.54 3971 -3973 4 6.41 142.81 -66.75 0.54 3972 -3974 4 6.23 142.96 -68.25 0.54 3973 -3975 4 5.81 143.5 -69.63 0.54 3974 -3976 4 5.31 144.6 -70.07 0.54 3975 -3977 4 4.64 144.97 -69.81 0.54 3976 -3978 4 3.74 146.15 -71.37 0.54 3977 -3979 4 3.7 146.79 -71.23 0.54 3978 -3980 4 3.22 147.39 -71.03 0.54 3979 -3981 4 2.73 148.49 -71.45 0.54 3980 -3982 4 2.69 149.18 -71.84 0.54 3981 -3983 4 2.24 149.85 -72.3 0.54 3982 -3984 4 2.46 150.42 -73.52 0.54 3983 -3985 4 2.65 151.18 -74.42 0.54 3984 -3986 4 2.64 151.67 -74.97 0.54 3985 -3987 4 2.61 152.38 -75.5 0.54 3986 -3988 4 3.2 153.76 -76.03 0.54 3987 -3989 4 3.17 154.21 -76.12 0.54 3988 -3990 4 2.06 154.84 -76.68 0.54 3989 -3991 4 1.84 155.35 -77.47 0.54 3990 -3992 4 1.63 155.64 -78.27 0.54 3991 -3993 4 0.76 156.34 -79.36 0.54 3992 -3994 4 0.08 156.48 -79.06 0.54 3993 -3995 4 -0.38 157.08 -78.77 0.54 3994 -3996 4 -1.29 157.94 -79.24 0.54 3995 -3997 4 -1.26 158.07 -80.5 0.54 3996 -3998 4 -1.69 158.61 -81.88 0.54 3997 -3999 4 -1.5 159.58 -82.68 0.54 3998 -4000 4 -1.51 160.62 -84.39 0.54 3999 -4001 4 -2.2 161.21 -84.19 0.435 4000 -4002 4 -2.7 162.04 -84.12 0.435 4001 -4003 4 -2.72 162.26 -84.18 0.435 4002 -4004 4 10.87 119.2 -37.06 0.65 3931 -4005 4 10.41 119.58 -36.88 0.65 4004 -4006 4 10.44 119.74 -38.38 0.65 4005 -4007 4 9.99 120.2 -38.94 0.65 4006 -4008 4 9.81 120.32 -40.22 0.65 4007 -4009 4 9.58 120.81 -40.85 0.65 4008 -4010 4 8.93 121.28 -41.64 0.65 4009 -4011 4 8.8 120.58 -43.38 0.65 4010 -4012 4 8.16 120.31 -43.2 0.65 4011 -4013 4 7.76 120.43 -44.62 0.65 4012 -4014 4 7.39 120.36 -46.37 0.65 4013 -4015 4 6.36 120.02 -47.94 0.65 4014 -4016 4 5.35 119.43 -49.16 0.54 4015 -4017 4 5.45 118.99 -51.16 0.54 4016 -4018 4 4.67 117.68 -51.69 0.54 4017 -4019 4 4.72 117.13 -52.65 0.54 4018 -4020 4 3.51 116.3 -53.67 0.54 4019 -4021 4 2.68 116.14 -54.76 0.54 4020 -4022 4 1.92 115.15 -56.16 0.54 4021 -4023 4 1.13 114.59 -57.59 0.54 4022 -4024 4 0.09 114.42 -58.84 0.54 4023 -4025 4 -1.18 114.2 -59.57 0.54 4024 -4026 4 -1.34 114.33 -60.92 0.54 4025 -4027 4 -1.96 114.42 -62.21 0.54 4026 -4028 4 -3.06 114.9 -63.24 0.54 4027 -4029 4 -4.1 114.97 -64.69 0.54 4028 -4030 4 -5.15 115.07 -66.28 0.54 4029 -4031 4 -6.21 114.81 -66.56 0.54 4030 -4032 4 -6.22 114.79 -66.41 0.54 4031 -4033 4 -6.84 114.89 -67.69 0.54 4032 -4034 4 -7.87 114.74 -69.02 0.54 4033 -4035 4 -7.83 114.89 -70.43 0.54 4034 -4036 4 -9.67 113.88 -72.31 0.54 4035 -4037 4 -10.51 113.98 -73.83 0.54 4036 -4038 4 -11.54 113.8 -74.93 0.54 4037 -4039 4 -13.68 113.5 -75.46 0.54 4038 -4040 4 -14.51 113.32 -76.33 0.54 4039 -4041 4 -15.3 112.51 -77.41 0.54 4040 -4042 4 -16.59 112.47 -77.82 0.54 4041 -4043 4 -18.43 111.46 -79.71 0.54 4042 -4044 4 -19.48 111.46 -80.41 0.54 4043 -4045 4 -21.17 110.72 -80.6 0.54 4044 -4046 4 -22.67 110.43 -80.74 0.54 4045 -4047 4 -23.5 109.98 -81.19 0.54 4046 -4048 4 -25.47 110.32 -81.49 0.54 4047 -4049 4 19.18 113.86 -20.92 1.515 3912 -4050 4 19.09 115.37 -20.76 1.515 4049 -4051 4 18.99 116.87 -20.61 1.515 4050 -4052 4 19.52 118.83 -20.39 1.515 4051 -4053 4 20.31 120.49 -21.26 1.515 4052 -4054 4 20.66 121.8 -21.12 1.515 4053 -4055 4 21.2 123.55 -20.92 1.515 4054 -4056 4 21.27 125.71 -20.7 1.515 4055 -4057 4 21.21 126.84 -20.58 1.515 4056 -4058 4 21.88 126.7 -21.11 0.54 4057 -4059 4 23.14 127.43 -21.01 0.54 4058 -4060 4 24.0 127.48 -20.98 0.65 4059 -4061 4 25.46 128.43 -20.85 0.65 4060 -4062 4 26.96 128.74 -20.78 0.65 4061 -4063 4 28.05 128.59 -20.77 0.65 4062 -4064 4 29.35 128.67 -20.73 0.65 4063 -4065 4 29.86 127.99 -22.22 0.435 4064 -4066 4 30.13 127.36 -22.28 0.435 4065 -4067 4 31.32 125.72 -22.42 0.435 4066 -4068 4 32.5 124.28 -22.54 0.435 4067 -4069 4 34.04 123.72 -22.56 0.435 4068 -4070 4 35.99 123.85 -22.5 0.435 4069 -4071 4 39.06 123.39 -22.56 0.435 4070 -4072 4 40.87 122.43 -22.61 0.435 4071 -4073 4 43.74 121.05 -22.16 0.435 4072 -4074 4 45.94 120.75 -22.14 0.435 4073 -4075 4 48.53 120.9 -21.99 0.435 4074 -4076 4 50.45 121.45 -21.89 0.435 4075 -4077 4 53.72 121.21 -21.83 0.435 4076 -4078 4 57.2 121.21 -21.75 0.435 4077 -4079 4 59.79 121.38 -21.67 0.435 4078 -4080 4 62.48 123.26 -21.41 0.435 4079 -4081 4 65.65 124.77 -21.48 0.435 4080 -4082 4 69.23 126.7 -21.2 0.435 4081 -4083 4 72.44 127.33 -21.06 0.435 4082 -4084 4 75.21 127.93 -20.93 0.435 4083 -4085 4 78.27 127.92 -20.93 0.435 4084 -4086 4 81.82 127.24 -22.8 0.435 4085 -4087 4 85.38 126.18 -22.82 0.435 4086 -4088 4 89.98 125.38 -22.8 0.435 4087 -4089 4 93.42 125.8 -22.67 0.435 4088 -4090 4 96.63 126.43 -22.53 0.435 4089 -4091 4 99.06 125.93 -22.52 0.435 4090 -4092 4 101.28 124.99 -22.57 0.435 4091 -4093 4 103.3 124.04 -22.62 0.435 4092 -4094 4 105.73 123.33 -22.64 0.435 4093 -4095 4 107.68 123.45 -22.58 0.435 4094 -4096 4 110.7 123.63 -22.49 0.435 4095 -4097 4 112.38 124.59 -22.35 0.435 4096 -4098 4 30.61 129.4 -20.63 0.54 4064 -4099 4 32.57 129.3 -20.59 0.54 4098 -4100 4 34.3 129.19 -20.48 0.54 4099 -4101 4 36.24 129.3 -20.42 0.54 4100 -4102 4 38.42 129.21 -20.38 0.54 4101 -4103 4 39.99 129.51 -22.28 0.54 4102 -4104 4 42.14 129.64 -22.21 0.54 4103 -4105 4 42.55 130.4 -23.03 0.54 4104 -4106 4 43.57 131.54 -22.89 0.54 4105 -4107 4 44.52 133.53 -22.66 0.54 4106 -4108 4 45.05 135.51 -22.44 0.54 4107 -4109 4 45.7 138.99 -22.06 0.54 4108 -4110 4 47.59 143.19 -21.58 0.54 4109 -4111 4 47.5 144.13 -20.21 0.54 4110 -4112 4 48.89 146.15 -19.97 0.54 4111 -4113 4 50.97 147.57 -19.85 0.54 4112 -4114 4 52.95 149.97 -18.64 0.54 4113 -4115 4 54.56 152.22 -18.37 0.54 4114 -4116 4 56.0 153.17 -18.24 0.54 4115 -4117 4 58.05 154.7 -17.13 0.54 4116 -4118 4 59.17 157.04 -15.89 0.54 4117 -4119 4 59.91 158.98 -15.13 0.54 4118 -4120 4 60.44 160.44 -14.22 0.54 4119 -4121 4 61.28 160.68 -13.95 0.54 4120 -4122 4 62.74 161.62 -13.74 0.54 4121 -4123 4 63.74 162.96 -13.58 0.54 4122 -4124 4 64.53 163.79 -12.65 0.54 4123 -4125 4 65.91 165.75 -11.81 0.54 4124 -4126 4 66.85 167.66 -10.76 0.54 4125 -4127 4 67.14 169.3 -9.6 0.54 4126 -4128 4 67.89 170.74 -8.31 0.54 4127 -4129 4 68.43 172.22 -7.61 0.54 4128 -4130 4 69.63 173.51 -6.69 0.54 4129 -4131 4 70.22 173.89 -5.81 0.54 4130 -4132 4 72.11 175.13 -6.16 0.54 4131 -4133 4 72.49 175.5 -5.29 0.54 4132 -4134 4 74.4 175.45 -3.52 0.54 4133 -4135 4 76.56 175.57 -3.38 0.54 4134 -4136 4 77.63 175.59 -2.9 0.54 4135 -4137 4 78.68 175.53 -1.67 0.54 4136 -4138 4 79.31 176.0 -1.61 0.54 4137 -4139 4 80.18 176.05 -1.59 0.54 4138 -4140 4 82.28 177.04 -1.43 0.54 4139 -4141 4 84.52 179.32 -1.14 0.54 4140 -4142 4 85.3 180.11 0.22 0.54 4141 -4143 4 86.27 181.07 2.08 0.54 4142 -4144 4 86.59 182.81 2.26 0.54 4143 -4145 4 87.32 184.75 3.01 0.54 4144 -4146 4 87.26 185.26 4.12 0.54 4145 -4147 4 87.4 185.81 5.31 0.54 4146 -4148 4 87.54 186.83 6.1 0.54 4147 -4149 4 87.67 188.11 6.31 0.54 4148 -4150 4 88.24 189.19 6.81 0.54 4149 -4151 4 88.58 190.21 7.6 0.54 4150 -4152 4 88.99 190.65 7.88 0.54 4151 -4153 4 44.5 130.01 -22.12 0.54 4104 -4154 4 47.27 130.82 -21.97 0.54 4153 -4155 4 50.0 132.49 -21.81 0.54 4154 -4156 4 51.7 133.59 -22.93 0.54 4155 -4157 4 54.21 135.04 -22.72 0.54 4156 -4158 4 56.75 136.07 -22.71 0.54 4157 -4159 4 58.21 137.27 -23.0 0.54 4158 -4160 4 59.53 137.44 -23.78 0.54 4159 -4161 4 62.07 138.47 -23.84 0.54 4160 -4162 4 63.74 139.44 -23.7 0.54 4161 -4163 4 65.09 138.93 -24.25 0.54 4162 -4164 4 66.86 138.66 -24.77 0.54 4163 -4165 4 70.11 138.64 -24.69 0.54 4164 -4166 4 73.04 140.55 -24.49 0.54 4165 -4167 4 74.89 142.17 -24.28 0.54 4166 -4168 4 76.12 143.61 -24.86 0.54 4167 -4169 4 78.29 143.81 -25.47 0.54 4168 -4170 4 81.27 144.9 -25.73 0.54 4169 -4171 4 84.64 146.62 -25.55 0.54 4170 -4172 4 86.97 147.9 -26.12 0.54 4171 -4173 4 88.24 148.46 -26.4 0.54 4172 -4174 4 90.65 148.72 -27.38 0.54 4173 -4175 4 94.09 149.39 -27.61 0.54 4174 -4176 4 97.55 150.17 -28.87 0.54 4175 -4177 4 100.52 151.21 -28.69 0.54 4176 -4178 4 102.0 152.24 -29.24 0.54 4177 -4179 4 103.54 152.45 -30.3 0.54 4178 -4180 4 105.05 152.54 -30.33 0.54 4179 -4181 4 105.93 152.66 -30.9 0.54 4180 -4182 4 108.04 153.67 -30.98 0.54 4181 -4183 4 109.51 154.65 -31.21 0.54 4182 -4184 4 110.77 155.68 -31.91 0.54 4183 -4185 4 112.3 155.85 -32.61 0.54 4184 -4186 4 114.43 156.62 -32.55 0.54 4185 -4187 4 117.2 157.5 -33.0 0.54 4186 -4188 4 118.68 158.49 -33.24 0.54 4187 -4189 4 119.98 158.63 -33.8 0.54 4188 -4190 4 120.89 158.59 -34.91 0.54 4189 -4191 4 121.76 158.67 -35.18 0.54 4190 -4192 4 122.88 158.63 -36.29 0.54 4191 -4193 4 124.61 158.76 -36.38 0.54 4192 -4194 4 125.69 158.82 -36.35 0.54 4193 -4195 4 126.6 158.78 -37.47 0.54 4194 -4196 4 127.05 158.88 -38.2 0.54 4195 -4197 4 127.71 158.75 -38.57 0.54 4196 -4198 4 21.84 127.26 -20.67 1.515 4057 -4199 4 21.95 128.77 -20.52 1.515 4198 -4200 4 22.31 130.93 -22.24 1.41 4199 -4201 4 22.62 132.68 -22.06 1.41 4200 -4202 4 22.95 134.41 -21.87 1.41 4201 -4203 4 23.48 136.38 -21.65 1.41 4202 -4204 4 23.84 138.32 -23.4 1.41 4203 -4205 4 23.99 139.4 -23.29 1.41 4204 -4206 4 24.13 140.72 -23.3 1.41 4205 -4207 4 24.27 142.02 -23.16 1.41 4206 -4208 4 24.16 143.74 -22.99 1.41 4207 -4209 4 24.27 145.25 -22.83 1.41 4208 -4210 4 24.38 146.97 -22.65 1.41 4209 -4211 4 24.55 147.85 -22.55 1.515 4210 -4212 4 24.3 148.31 -22.51 1.515 4211 -4213 4 23.55 148.94 -20.58 0.435 4212 -4214 4 23.09 149.35 -20.62 0.54 4213 -4215 4 22.13 150.8 -20.49 0.54 4214 -4216 4 21.35 153.48 -21.66 0.54 4215 -4217 4 21.38 156.48 -21.35 0.54 4216 -4218 4 21.85 159.3 -21.05 0.54 4217 -4219 4 23.2 161.76 -20.76 0.54 4218 -4220 4 23.82 162.73 -21.4 0.54 4219 -4221 4 23.71 164.44 -21.16 0.435 4220 -4222 4 23.43 166.07 -22.42 0.435 4221 -4223 4 22.66 168.51 -23.4 0.435 4222 -4224 4 22.01 171.71 -23.16 0.435 4223 -4225 4 21.61 174.69 -22.86 0.435 4224 -4226 4 21.57 175.4 -22.86 0.435 4225 -4227 4 21.51 176.26 -22.77 0.54 4226 -4228 4 21.38 178.39 -22.55 0.54 4227 -4229 4 20.61 180.29 -22.38 0.54 4228 -4230 4 20.35 181.2 -23.04 0.54 4229 -4231 4 19.39 182.65 -22.91 0.54 4230 -4232 4 18.88 184.2 -23.44 0.54 4231 -4233 4 17.42 186.69 -23.22 0.54 4232 -4234 4 16.97 187.42 -24.21 0.54 4233 -4235 4 16.93 188.35 -24.87 0.54 4234 -4236 4 16.43 189.71 -25.72 0.54 4235 -4237 4 15.73 191.35 -27.3 0.54 4236 -4238 4 24.85 149.8 -22.34 1.515 4212 -4239 4 24.98 151.31 -22.18 1.515 4238 -4240 4 25.43 152.54 -22.05 1.515 4239 -4241 4 25.86 153.16 -23.48 0.54 4240 -4242 4 26.28 153.61 -23.42 0.54 4241 -4243 4 26.62 154.33 -21.9 0.54 4242 -4244 4 26.8 154.18 -20.19 0.54 4243 -4245 4 27.47 154.32 -21.21 0.54 4244 -4246 4 27.88 155.1 -22.18 0.54 4245 -4247 4 28.73 155.59 -22.18 0.54 4246 -4248 4 29.15 156.15 -23.16 0.54 4247 -4249 4 29.78 156.41 -23.12 0.54 4248 -4250 4 29.99 157.21 -24.54 0.54 4249 -4251 4 30.77 158.56 -24.38 0.54 4250 -4252 4 30.98 158.5 -23.71 0.54 4251 -4253 4 31.35 159.1 -22.96 0.54 4252 -4254 4 31.95 160.04 -23.3 0.54 4253 -4255 4 32.79 161.05 -24.16 0.54 4254 -4256 4 33.39 161.99 -24.42 0.54 4255 -4257 4 33.97 163.34 -24.57 0.54 4256 -4258 4 34.8 164.09 -24.92 0.54 4257 -4259 4 35.59 165.47 -25.29 0.54 4258 -4260 4 36.79 167.06 -25.17 0.54 4259 -4261 4 37.59 168.18 -25.04 0.54 4260 -4262 4 38.86 168.7 -25.02 0.54 4261 -4263 4 39.86 170.05 -24.86 0.54 4262 -4264 4 41.04 171.85 -24.65 0.54 4263 -4265 4 42.05 173.21 -24.63 0.54 4264 -4266 4 42.8 175.23 -24.86 0.54 4265 -4267 4 43.37 176.83 -25.21 0.54 4266 -4268 4 44.34 178.66 -25.45 0.54 4267 -4269 4 44.71 180.0 -25.68 0.54 4268 -4270 4 45.06 181.59 -26.11 0.54 4269 -4271 4 45.44 182.8 -27.03 0.54 4270 -4272 4 45.38 184.16 -27.49 0.54 4271 -4273 4 45.31 185.27 -27.83 0.54 4272 -4274 4 45.48 186.4 -28.08 0.54 4273 -4275 4 46.04 188.0 -28.51 0.54 4274 -4276 4 46.64 188.89 -28.48 0.54 4275 -4277 4 46.79 189.98 -28.44 0.54 4276 -4278 4 47.2 190.75 -29.25 0.54 4277 -4279 4 47.6 191.2 -29.2 0.54 4278 -4280 4 47.57 191.89 -29.51 0.54 4279 -4281 4 47.93 193.21 -29.43 0.54 4280 -4282 4 48.68 195.26 -29.96 0.54 4281 -4283 4 49.29 196.25 -30.75 0.54 4282 -4284 4 50.06 198.02 -30.62 0.54 4283 -4285 4 51.53 199.04 -31.16 0.54 4284 -4286 4 52.58 200.08 -32.08 0.54 4285 -4287 4 53.6 201.81 -33.54 0.54 4286 -4288 4 55.02 203.4 -33.34 0.54 4287 -4289 4 55.57 205.23 -33.81 0.54 4288 -4290 4 56.15 206.83 -34.24 0.54 4289 -4291 4 56.65 209.01 -34.08 0.54 4290 -4292 4 57.16 211.19 -33.84 0.54 4291 -4293 4 57.31 212.78 -34.35 0.54 4292 -4294 4 57.67 213.88 -34.3 0.54 4293 -4295 4 58.03 215.28 -34.91 0.54 4294 -4296 4 59.03 216.86 -34.87 0.54 4295 -4297 4 60.61 219.11 -34.6 0.54 4296 -4298 4 62.89 220.99 -34.64 0.54 4297 -4299 4 64.75 222.42 -34.68 0.54 4298 -4300 4 65.32 224.0 -34.88 0.54 4299 -4301 4 65.71 224.89 -34.86 0.54 4300 -4302 4 66.67 226.68 -34.72 0.54 4301 -4303 4 66.58 228.19 -34.64 0.54 4302 -4304 4 66.62 231.25 -34.85 0.54 4303 -4305 4 67.17 233.02 -34.88 0.54 4304 -4306 4 68.56 234.86 -34.96 0.54 4305 -4307 4 70.2 236.69 -34.74 0.54 4306 -4308 4 71.38 238.74 -34.95 0.54 4307 -4309 4 72.16 240.37 -35.52 0.54 4308 -4310 4 72.54 241.53 -35.99 0.54 4309 -4311 4 73.78 243.24 -37.14 0.54 4310 -4312 4 74.13 244.6 -37.51 0.54 4311 -4313 4 74.5 246.02 -38.33 0.54 4312 -4314 4 74.45 246.92 -38.62 0.54 4313 -4315 4 74.84 247.86 -39.12 0.54 4314 -4316 4 75.2 249.48 -39.77 0.54 4315 -4317 4 75.12 251.03 -40.14 0.54 4316 -4318 4 75.45 252.78 -40.11 0.54 4317 -4319 4 75.94 255.18 -39.85 0.54 4318 -4320 4 76.86 257.82 -39.55 0.54 4319 -4321 4 77.19 259.56 -39.36 0.54 4320 -4322 4 77.26 261.72 -39.21 0.54 4321 -4323 4 76.78 262.86 -40.01 0.54 4322 -4324 4 76.58 266.08 -39.68 0.54 4323 -4325 4 77.28 268.7 -39.39 0.54 4324 -4326 4 78.82 271.59 -39.06 0.54 4325 -4327 4 79.58 272.88 -39.05 0.54 4326 -4328 4 80.77 273.9 -37.64 0.54 4327 -4329 4 80.79 273.99 -38.46 0.54 4328 -4330 4 81.35 275.58 -38.81 0.54 4329 -4331 4 81.76 276.3 -39.25 0.54 4330 -4332 4 82.28 278.51 -39.31 0.54 4331 -4333 4 82.62 280.04 -39.22 0.54 4332 -4334 4 82.72 281.99 -39.09 0.54 4333 -4335 4 83.04 283.73 -38.91 0.54 4334 -4336 4 83.93 286.81 -38.72 0.54 4335 -4337 4 84.59 290.09 -38.43 0.54 4336 -4338 4 84.62 293.1 -38.12 0.54 4337 -4339 4 84.46 295.45 -37.88 0.54 4338 -4340 4 84.52 297.84 -37.71 0.54 4339 -4341 4 84.74 301.29 -37.35 0.54 4340 -4342 4 85.27 303.26 -37.13 0.54 4341 -4343 4 85.74 306.08 -36.83 0.54 4342 -4344 4 85.82 308.29 -37.05 0.54 4343 -4345 4 86.03 311.96 -36.74 0.54 4344 -4346 4 86.21 315.85 -36.33 0.54 4345 -4347 4 86.03 318.63 -36.05 0.54 4346 -4348 4 86.48 321.88 -35.7 0.54 4347 -4349 4 86.75 324.48 -35.43 0.54 4348 -4350 4 87.27 326.47 -35.44 0.54 4349 -4351 4 87.41 328.04 -35.88 0.54 4350 -4352 4 87.95 329.82 -35.9 0.54 4351 -4353 4 88.08 331.34 -35.89 0.54 4352 -4354 4 30.68 156.34 -24.01 0.54 4249 -4355 4 31.78 156.2 -24.08 0.54 4354 -4356 4 32.45 156.03 -24.15 0.54 4355 -4357 4 33.5 156.53 -24.16 0.54 4356 -4358 4 34.12 157.02 -24.31 0.54 4357 -4359 4 34.99 157.07 -24.22 0.54 4358 -4360 4 35.6 157.51 -23.93 0.54 4359 -4361 4 36.01 157.44 -23.02 0.54 4360 -4362 4 36.19 157.83 -22.3 0.54 4361 -4363 4 36.58 158.22 -21.65 0.54 4362 -4364 4 37.16 159.05 -20.94 0.54 4363 -4365 4 37.58 159.0 -20.26 0.54 4364 -4366 4 37.94 159.86 -19.94 0.54 4365 -4367 4 38.3 160.91 -19.44 0.54 4366 -4368 4 38.68 161.56 -19.14 0.54 4367 -4369 4 39.29 161.99 -18.63 0.54 4368 -4370 4 39.88 162.85 -18.15 0.54 4369 -4371 4 40.67 163.95 -17.87 0.54 4370 -4372 4 41.04 164.57 -17.19 0.54 4371 -4373 4 41.22 164.93 -16.47 0.54 4372 -4374 4 42.24 165.84 -16.2 0.54 4373 -4375 4 42.65 166.29 -16.07 0.54 4374 -4376 4 43.05 166.7 -15.64 0.54 4375 -4377 4 43.6 167.99 -15.12 0.54 4376 -4378 4 43.81 167.93 -14.44 0.54 4377 -4379 4 44.23 167.91 -13.98 0.54 4378 -4380 4 44.63 167.88 -13.37 0.54 4379 -4381 4 45.69 168.35 -12.99 0.54 4380 -4382 4 46.32 168.3 -12.16 0.54 4381 -4383 4 46.72 168.74 -11.88 0.54 4382 -4384 4 47.31 169.59 -11.48 0.54 4383 -4385 4 47.7 170.02 -11.12 0.54 4384 -4386 4 48.25 171.54 -10.8 0.54 4385 -4387 4 48.65 171.95 -10.3 0.54 4386 -4388 4 49.04 172.34 -9.56 0.54 4387 -4389 4 49.43 172.73 -8.91 0.54 4388 -4390 4 49.82 173.16 -8.56 0.54 4389 -4391 4 50.59 173.93 -7.1 0.54 4390 -4392 4 51.44 173.88 -6.11 0.54 4391 -4393 4 52.07 173.8 -4.98 0.54 4392 -4394 4 52.47 173.73 -4.07 0.54 4393 -4395 4 53.11 173.71 -3.45 0.54 4394 -4396 4 54.2 173.53 -2.99 0.54 4395 -4397 4 55.47 173.5 -1.91 0.54 4396 -4398 4 56.74 174.01 -1.83 0.54 4397 -4399 4 57.54 174.9 -1.64 0.54 4398 -4400 4 58.08 175.86 -0.03 0.54 4399 -4401 4 59.09 177.21 0.21 0.54 4400 -4402 4 59.84 178.43 1.48 0.54 4401 -4403 4 60.4 179.72 1.93 0.54 4402 -4404 4 60.97 180.52 2.93 0.54 4403 -4405 4 61.54 181.33 3.86 0.54 4404 -4406 4 62.77 182.18 4.8 0.54 4405 -4407 4 63.79 183.07 5.37 0.54 4406 -4408 4 64.97 184.82 5.81 0.54 4407 -4409 4 65.96 186.18 6.05 0.54 4408 -4410 4 66.77 187.04 6.53 0.54 4409 -4411 4 67.73 188.8 7.03 0.54 4410 -4412 4 68.26 190.76 7.33 0.54 4411 -4413 4 68.63 191.4 7.62 0.54 4412 -4414 4 69.22 192.25 8.18 0.54 4413 -4415 4 70.67 193.15 8.76 0.54 4414 -4416 4 71.47 193.73 10.04 0.54 4415 -4417 4 71.88 193.99 9.93 0.54 4416 -4418 4 72.67 195.33 10.02 0.54 4417 -4419 4 72.86 195.76 10.14 0.54 4418 -4420 4 73.46 196.14 11.18 0.54 4419 -4421 4 73.58 197.11 12.25 0.54 4420 -4422 4 74.18 197.72 13.09 0.54 4421 -4423 4 74.96 198.55 13.94 0.54 4422 -4424 4 75.31 199.56 14.96 0.54 4423 -4425 4 75.86 200.55 16.2 0.54 4424 -4426 4 76.39 202.0 17.2 0.54 4425 -4427 4 76.93 203.47 18.04 0.54 4426 -4428 4 77.44 205.12 19.28 0.54 4427 -4429 4 78.16 206.99 20.55 0.54 4428 -4430 4 78.31 207.56 21.43 0.54 4429 -4431 4 78.83 209.24 22.37 0.54 4430 -4432 4 79.39 210.5 23.2 0.54 4431 -4433 4 80.18 211.32 24.13 0.54 4432 -4434 4 80.52 212.09 25.35 0.54 4433 -4435 4 80.9 212.42 26.59 0.54 4434 -4436 4 81.46 213.45 27.47 0.54 4435 -4437 4 82.5 213.86 28.44 0.54 4436 -4438 4 83.34 213.86 28.99 0.54 4437 -4439 4 83.95 214.25 29.72 0.54 4438 -4440 4 84.56 214.67 30.31 0.54 4439 -4441 4 85.34 215.99 30.69 0.54 4440 -4442 4 85.69 216.79 31.53 0.54 4441 -4443 4 86.27 217.33 33.03 0.54 4442 -4444 4 86.69 217.28 33.79 0.54 4443 -4445 4 87.75 217.29 34.35 0.54 4444 -4446 4 88.59 217.76 34.49 0.54 4445 -4447 4 25.53 152.84 -22.01 1.515 4240 -4448 4 25.68 153.72 -21.92 1.515 4447 -4449 4 25.09 153.81 -20.72 0.435 4448 -4450 4 24.57 154.5 -19.3 0.435 4449 -4451 4 24.13 154.39 -18.5 0.435 4450 -4452 4 24.11 154.3 -17.6 0.435 4451 -4453 4 23.85 154.13 -16.19 0.435 4452 -4454 4 23.82 153.98 -14.71 0.435 4453 -4455 4 23.54 154.26 -13.4 0.435 4454 -4456 4 23.52 154.16 -12.43 0.435 4455 -4457 4 23.48 153.96 -10.56 0.435 4456 -4458 4 23.45 153.87 -9.67 0.435 4457 -4459 4 23.2 153.69 -7.96 0.435 4458 -4460 4 22.23 154.8 -6.74 0.435 4459 -4461 4 21.46 156.15 -5.49 0.435 4460 -4462 4 20.67 157.71 -4.22 0.435 4461 -4463 4 19.49 159.14 -4.1 0.435 4462 -4464 4 18.97 160.4 -3.9 0.435 4463 -4465 4 18.61 162.2 -2.59 0.435 4464 -4466 4 18.77 163.06 -2.5 0.435 4465 -4467 4 18.89 164.57 -2.34 0.435 4466 -4468 4 19.07 165.22 -2.2 0.435 4467 -4469 4 19.01 165.83 -1.76 0.435 4468 -4470 4 19.16 166.89 -1.49 0.435 4469 -4471 4 18.41 168.09 -0.86 0.435 4470 -4472 4 17.68 169.09 -0.48 0.435 4471 -4473 4 16.3 170.25 0.05 0.435 4472 -4474 4 16.27 170.65 0.33 0.435 4473 -4475 4 15.31 171.84 0.88 0.435 4474 -4476 4 15.23 172.88 1.29 0.435 4475 -4477 4 15.35 174.14 1.87 0.435 4476 -4478 4 15.45 176.05 2.37 0.435 4477 -4479 4 15.37 176.83 3.21 0.435 4478 -4480 4 15.52 177.6 4.12 0.435 4479 -4481 4 15.46 178.44 4.5 0.435 4480 -4482 4 15.4 179.26 4.89 0.435 4481 -4483 4 14.39 181.1 5.36 0.435 4482 -4484 4 12.69 184.0 5.69 0.435 4483 -4485 4 12.18 185.04 5.78 0.435 4484 -4486 4 11.69 185.84 6.24 0.435 4485 -4487 4 11.13 187.47 6.99 0.435 4486 -4488 4 11.31 188.12 7.14 0.435 4487 -4489 4 11.23 189.16 7.54 0.435 4488 -4490 4 11.35 190.36 8.57 0.435 4489 -4491 4 10.82 191.62 8.77 0.435 4490 -4492 4 9.88 192.84 8.88 0.435 4491 -4493 4 9.38 193.88 9.04 0.435 4492 -4494 4 8.89 194.71 9.12 0.435 4493 -4495 4 8.85 195.35 9.26 0.435 4494 -4496 4 8.73 195.63 9.29 0.435 4495 -4497 4 8.52 196.19 7.83 0.435 4496 -4498 4 7.89 196.53 6.27 0.435 4497 -4499 4 7.25 196.48 6.33 0.435 4498 -4500 4 6.8 196.94 5.84 0.65 4499 -4501 4 6.11 197.54 5.89 0.865 4500 -4502 4 5.01 198.52 4.22 0.325 4501 -4503 4 3.65 199.5 4.29 0.325 4502 -4504 4 2.74 200.63 3.26 0.325 4503 -4505 4 2.19 201.74 4.94 0.325 4504 -4506 4 1.28 202.3 5.36 0.325 4505 -4507 4 0.33 202.98 6.45 0.325 4506 -4508 4 -0.56 203.3 7.07 0.325 4507 -4509 4 -1.51 203.98 8.25 0.325 4508 -4510 4 -1.78 204.34 8.89 0.325 4509 -4511 4 -1.83 204.37 10.7 0.325 4510 -4512 4 -1.66 205.26 10.56 0.325 4511 -4513 4 -1.47 205.41 11.42 0.325 4512 -4514 4 -1.29 205.31 12.46 0.325 4513 -4515 4 -1.13 205.62 13.78 0.325 4514 -4516 4 -0.79 206.89 14.44 0.325 4515 -4517 4 -0.22 208.2 14.67 0.325 4516 -4518 4 0.1 209.93 14.93 0.325 4517 -4519 4 -0.49 212.25 15.24 0.325 4518 -4520 4 -1.12 215.44 15.55 0.325 4519 -4521 4 -1.5 217.78 15.78 0.325 4520 -4522 4 -1.57 218.79 16.49 0.325 4521 -4523 4 -1.23 220.07 17.0 0.325 4522 -4524 4 -1.23 222.99 18.14 0.325 4523 -4525 4 -1.84 225.72 18.63 0.325 4524 -4526 4 -2.02 228.51 18.99 0.325 4525 -4527 4 -2.18 230.85 19.3 0.325 4526 -4528 4 -2.67 231.68 19.98 0.325 4527 -4529 4 -2.84 234.25 20.24 0.325 4528 -4530 4 -2.18 237.31 20.57 0.325 4529 -4531 4 -2.54 239.66 20.81 0.325 4530 -4532 4 -3.11 241.76 21.01 0.325 4531 -4533 4 -5.12 246.16 21.42 0.325 4532 -4534 4 -6.67 249.93 21.85 0.325 4533 -4535 4 -7.64 251.07 22.77 0.325 4534 -4536 4 -7.77 252.99 23.12 0.325 4535 -4537 4 -8.6 255.73 23.39 0.325 4536 -4538 4 -10.02 257.8 23.56 0.325 4537 -4539 4 -12.59 259.6 25.65 0.325 4538 -4540 4 -13.58 261.41 26.49 0.325 4539 -4541 4 -14.1 262.12 27.54 0.325 4540 -4542 4 -14.17 262.65 28.79 0.325 4541 -4543 4 -15.12 263.87 29.12 0.325 4542 -4544 4 9.2 196.39 9.83 0.435 4496 -4545 4 8.68 197.86 10.04 0.435 4544 -4546 4 7.68 199.46 10.87 0.435 4545 -4547 4 6.97 200.26 11.08 0.435 4546 -4548 4 6.0 201.63 11.95 0.435 4547 -4549 4 4.99 203.44 12.71 0.435 4548 -4550 4 3.58 205.02 13.45 0.435 4549 -4551 4 2.17 206.41 13.79 0.435 4550 -4552 4 1.2 207.83 14.29 0.435 4551 -4553 4 0.7 208.8 14.98 0.435 4552 -4554 4 -0.3 210.36 16.17 0.435 4553 -4555 4 -0.41 211.84 16.62 0.435 4554 -4556 4 -1.64 213.54 18.28 0.435 4555 -4557 4 -1.72 214.82 18.41 0.435 4556 -4558 4 -2.52 217.11 18.93 0.435 4557 -4559 4 -3.58 219.28 20.34 0.435 4558 -4560 4 -4.14 221.14 20.97 0.435 4559 -4561 4 -4.68 222.02 22.7 0.435 4560 -4562 4 -5.31 224.99 23.0 0.435 4561 -4563 4 -5.42 226.71 23.17 0.435 4562 -4564 4 -5.52 228.15 23.84 0.435 4563 -4565 4 -6.07 229.83 24.15 0.435 4564 -4566 4 -6.63 231.7 24.57 0.435 4565 -4567 4 -7.18 233.37 25.03 0.435 4566 -4568 4 -7.29 234.82 25.55 0.435 4567 -4569 4 -7.4 236.5 26.02 0.435 4568 -4570 4 -7.93 237.39 27.68 0.435 4569 -4571 4 -8.01 238.46 27.79 0.435 4570 -4572 4 -9.48 240.35 29.69 0.435 4571 -4573 4 -10.93 242.62 29.89 0.435 4572 -4574 4 -10.79 243.92 30.02 0.435 4573 -4575 4 -10.9 245.1 31.2 0.435 4574 -4576 4 -11.36 245.49 31.3 0.435 4575 -4577 4 -11.94 247.82 31.53 0.435 4576 -4578 4 -12.47 249.3 31.67 0.435 4577 -4579 4 -13.08 251.8 32.36 0.435 4578 -4580 4 -12.95 253.1 32.5 0.435 4579 -4581 4 -12.65 255.26 32.81 0.435 4580 -4582 4 -12.81 257.64 33.36 0.435 4581 -4583 4 -13.91 261.23 33.7 0.435 4582 -4584 4 -14.88 265.57 35.33 0.435 4583 -4585 4 -15.0 267.49 35.52 0.435 4584 -4586 4 -16.25 269.42 37.13 0.435 4585 -4587 4 -17.2 270.66 37.24 0.435 4586 -4588 4 -17.12 272.81 37.46 0.435 4587 -4589 4 -18.0 276.37 38.26 0.435 4588 -4590 4 -18.67 279.49 39.24 0.435 4589 -4591 4 -19.97 282.53 40.58 0.435 4590 -4592 4 -20.8 284.47 42.27 0.435 4591 -4593 4 -20.66 285.78 42.41 0.435 4592 -4594 4 -20.31 286.29 43.98 0.435 4593 -4595 4 -20.37 287.35 44.09 0.435 4594 -4596 4 -21.31 288.37 44.17 0.435 4595 -4597 4 -22.54 290.37 45.17 0.435 4596 -4598 4 -23.08 291.83 45.39 0.435 4597 -4599 4 -23.18 293.28 46.06 0.435 4598 -4600 4 -23.28 294.77 46.29 0.435 4599 -4601 4 -23.37 296.08 46.58 0.435 4600 -4602 4 -24.18 298.61 46.82 0.435 4601 -4603 4 -24.24 299.45 47.13 0.435 4602 -4604 4 -25.23 301.07 47.72 0.435 4603 -4605 4 -26.2 302.22 48.5 0.435 4604 -4606 4 -27.16 303.88 48.72 0.435 4605 -4607 4 -27.66 304.67 49.18 0.435 4606 -4608 4 -28.19 305.88 49.81 0.435 4607 -4609 4 -28.74 307.26 50.85 0.435 4608 -4610 4 -29.27 308.71 51.14 0.435 4609 -4611 4 -29.36 309.97 51.56 0.435 4610 -4612 4 -29.85 310.78 51.86 0.435 4611 -4613 4 -30.35 311.81 52.18 0.435 4612 -4614 4 -30.44 313.08 52.38 0.435 4613 -4615 4 -30.98 314.55 52.6 0.435 4614 -4616 4 -32.33 315.32 52.72 0.435 4615 -4617 4 -33.49 316.54 52.82 0.435 4616 -4618 4 -35.11 317.94 53.01 0.435 4617 -4619 4 -36.21 318.26 53.32 0.435 4618 -4620 4 -36.92 318.84 53.58 0.435 4619 -4621 4 -37.84 319.6 54.09 0.435 4620 -4622 4 -38.52 319.98 54.19 0.435 4621 -4623 4 -39.94 321.82 54.42 0.435 4622 -4624 4 -40.45 322.86 54.6 0.435 4623 -4625 4 -40.5 323.7 54.83 0.435 4624 -4626 4 -41.44 324.71 55.07 0.435 4625 -4627 4 -41.9 325.09 55.32 0.435 4626 -4628 4 -42.38 325.68 55.52 0.435 4627 -4629 4 -43.75 326.67 55.74 0.435 4628 -4630 4 -45.3 327.22 55.69 0.435 4629 -4631 4 -46.31 329.3 55.95 0.435 4630 -4632 4 -47.31 331.39 56.22 0.435 4631 -4633 4 -48.0 331.96 56.49 0.435 4632 -4634 4 -49.15 332.73 56.77 0.435 4633 -4635 4 -49.62 333.35 56.89 0.435 4634 -4636 4 -50.11 334.15 57.2 0.435 4635 -4637 4 -50.62 335.19 57.44 0.435 4636 -4638 4 -50.7 336.21 57.92 0.435 4637 -4639 4 -51.45 337.65 58.27 0.435 4638 -4640 4 -52.15 338.46 58.42 0.435 4639 -4641 4 -52.85 339.04 58.68 0.435 4640 -4642 4 -53.54 339.64 58.73 0.435 4641 -4643 4 -54.48 340.88 58.83 0.435 4642 -4644 4 -54.78 342.14 58.96 0.435 4643 -4645 4 -55.3 343.62 59.1 0.435 4644 -4646 4 -55.8 344.65 59.27 0.435 4645 -4647 4 -56.53 345.68 59.51 0.435 4646 -4648 4 -56.54 345.87 59.76 0.435 4647 -4649 4 -57.5 347.09 59.94 0.435 4648 -4650 4 -57.95 347.49 59.97 0.435 4649 -4651 4 -58.49 348.97 60.11 0.435 4650 -4652 4 -58.96 349.59 60.16 0.435 4651 -4653 4 -58.99 350.0 60.21 0.435 4652 -4654 4 -59.01 350.44 60.25 0.435 4653 -4655 4 25.8 155.24 -21.76 1.515 4448 -4656 4 25.68 157.16 -21.56 1.515 4655 -4657 4 25.82 158.46 -21.42 1.515 4656 -4658 4 25.95 159.76 -21.29 1.515 4657 -4659 4 26.34 160.65 -21.19 1.515 4658 -4660 4 26.62 162.81 -20.96 1.515 4659 -4661 4 27.01 163.49 -20.88 1.515 4660 -4662 4 26.91 164.99 -20.72 1.515 4661 -4663 4 27.05 166.28 -20.59 1.515 4662 -4664 4 26.95 167.93 -20.42 1.3 4663 -4665 4 26.87 169.75 -21.29 1.3 4664 -4666 4 26.34 170.96 -20.57 1.41 4665 -4667 4 25.77 172.85 -20.39 1.41 4666 -4668 4 25.25 174.33 -20.25 1.41 4667 -4669 4 25.22 174.66 -20.22 1.41 4668 -4670 4 24.34 175.06 -20.5 0.76 4669 -4671 4 23.19 176.07 -20.42 0.76 4670 -4672 4 22.52 176.45 -20.4 0.865 4671 -4673 4 21.37 177.46 -20.32 0.76 4672 -4674 4 20.68 178.36 -21.0 0.76 4673 -4675 4 19.39 178.29 -21.18 0.54 4674 -4676 4 18.28 179.45 -22.6 0.435 4675 -4677 4 16.93 180.81 -23.99 0.435 4676 -4678 4 15.12 182.54 -25.06 0.435 4677 -4679 4 13.01 185.53 -25.94 0.435 4678 -4680 4 11.36 188.14 -26.91 0.435 4679 -4681 4 11.12 188.84 -27.52 0.435 4680 -4682 4 9.47 190.9 -27.42 0.435 4681 -4683 4 7.4 192.7 -27.29 0.435 4682 -4684 4 6.91 194.39 -28.55 0.435 4683 -4685 4 5.46 196.65 -28.27 0.435 4684 -4686 4 25.17 175.61 -20.12 1.41 4669 -4687 4 25.09 176.91 -20.14 1.41 4686 -4688 4 25.21 178.42 -19.98 1.41 4687 -4689 4 25.33 179.93 -19.82 1.41 4688 -4690 4 25.51 180.38 -19.77 1.41 4689 -4691 4 25.89 180.97 -19.01 0.54 4690 -4692 4 26.29 181.68 -19.23 0.54 4691 -4693 4 26.72 181.7 -19.15 0.54 4692 -4694 4 27.33 182.38 -19.06 0.54 4693 -4695 4 27.48 183.46 -18.95 0.54 4694 -4696 4 27.41 184.54 -18.84 0.435 4695 -4697 4 27.75 186.06 -18.67 0.435 4696 -4698 4 28.3 187.33 -18.0 0.435 4697 -4699 4 28.65 188.38 -17.36 0.435 4698 -4700 4 29.21 189.13 -15.91 0.435 4699 -4701 4 29.64 189.1 -15.38 0.435 4700 -4702 4 29.74 190.57 -14.77 0.435 4701 -4703 4 29.88 191.61 -14.28 0.435 4702 -4704 4 29.78 192.84 -13.55 0.435 4703 -4705 4 29.9 194.34 -13.32 0.435 4704 -4706 4 30.03 195.37 -12.61 0.435 4705 -4707 4 30.38 196.65 -12.24 0.435 4706 -4708 4 30.77 197.07 -11.73 0.435 4707 -4709 4 31.08 198.75 -10.95 0.435 4708 -4710 4 31.44 199.8 -10.46 0.435 4709 -4711 4 31.76 201.27 -9.76 0.435 4710 -4712 4 31.68 202.31 -9.29 0.435 4711 -4713 4 32.05 203.18 -9.04 0.435 4712 -4714 4 32.18 204.67 -8.73 0.435 4713 -4715 4 32.25 206.81 -8.35 0.435 4714 -4716 4 32.38 208.12 -8.22 0.435 4715 -4717 4 32.49 209.57 -7.46 0.435 4716 -4718 4 31.99 210.3 -6.49 0.435 4717 -4719 4 32.14 211.45 -6.97 0.435 4718 -4720 4 32.11 212.4 -7.86 0.435 4719 -4721 4 32.22 214.42 -8.39 0.435 4720 -4722 4 32.58 215.79 -8.78 0.435 4721 -4723 4 32.5 217.07 -8.72 0.435 4722 -4724 4 33.1 218.01 -8.84 0.435 4723 -4725 4 33.04 219.11 -9.1 0.435 4724 -4726 4 33.61 220.44 -8.94 0.435 4725 -4727 4 34.14 222.2 -8.75 0.435 4726 -4728 4 34.24 224.14 -8.63 0.435 4727 -4729 4 34.63 225.37 -9.85 0.435 4728 -4730 4 35.17 227.13 -9.65 0.435 4729 -4731 4 35.12 227.43 -8.42 0.435 4730 -4732 4 35.72 228.09 -8.1 0.435 4731 -4733 4 36.08 228.92 -7.4 0.435 4732 -4734 4 36.48 229.32 -6.83 0.435 4733 -4735 4 36.63 229.93 -6.31 0.435 4734 -4736 4 36.79 230.76 -5.92 0.435 4735 -4737 4 36.97 231.15 -5.27 0.435 4736 -4738 4 37.13 231.51 -4.56 0.435 4737 -4739 4 37.31 231.9 -3.98 0.435 4738 -4740 4 37.73 231.86 -3.37 0.435 4739 -4741 4 25.23 181.44 -19.73 1.41 4690 -4742 4 25.15 182.74 -19.6 1.41 4741 -4743 4 24.84 184.22 -19.46 1.41 4742 -4744 4 24.33 185.27 -19.36 1.41 4743 -4745 4 23.6 186.51 -19.25 1.41 4744 -4746 4 22.68 187.52 -19.17 1.41 4745 -4747 4 21.94 188.99 -19.03 1.41 4746 -4748 4 21.86 190.06 -18.92 1.41 4747 -4749 4 21.75 191.78 -18.75 1.41 4748 -4750 4 22.08 193.31 -18.58 1.41 4749 -4751 4 22.45 194.4 -18.46 1.41 4750 -4752 4 23.94 195.52 -19.97 1.41 4751 -4753 4 24.28 196.77 -19.31 1.41 4752 -4754 4 24.86 198.17 -19.75 1.41 4753 -4755 4 24.77 198.43 -21.0 0.54 4754 -4756 4 25.39 198.07 -19.3 0.54 4755 -4757 4 26.05 197.88 -19.07 0.54 4756 -4758 4 26.29 197.44 -18.89 0.54 4757 -4759 4 26.71 197.42 -18.35 0.54 4758 -4760 4 26.91 197.35 -17.6 0.54 4759 -4761 4 27.32 197.57 -17.41 0.54 4760 -4762 4 27.74 197.51 -16.58 0.54 4761 -4763 4 28.55 198.41 -16.32 0.54 4762 -4764 4 29.09 199.94 -16.07 0.54 4763 -4765 4 29.52 199.95 -15.84 0.54 4764 -4766 4 29.9 200.31 -14.89 0.54 4765 -4767 4 30.31 200.74 -14.61 0.54 4766 -4768 4 30.3 200.71 -14.31 0.54 4767 -4769 4 30.91 201.13 -13.87 0.54 4768 -4770 4 31.28 201.7 -12.83 0.54 4769 -4771 4 31.42 203.01 -12.84 0.54 4770 -4772 4 31.58 203.68 -12.84 0.54 4771 -4773 4 31.76 204.29 -12.25 0.54 4772 -4774 4 32.08 205.56 -11.73 0.54 4773 -4775 4 32.62 207.3 -11.38 0.54 4774 -4776 4 33.79 209.52 -11.13 0.54 4775 -4777 4 35.13 212.16 -10.67 0.54 4776 -4778 4 36.26 214.8 -10.22 0.54 4777 -4779 4 36.96 217.19 -9.8 0.54 4778 -4780 4 37.5 218.94 -9.54 0.54 4779 -4781 4 38.23 221.13 -9.3 0.54 4780 -4782 4 38.59 222.21 -8.95 0.54 4781 -4783 4 39.57 223.73 -8.31 0.54 4782 -4784 4 40.12 225.23 -7.84 0.54 4783 -4785 4 40.69 226.88 -8.71 0.54 4784 -4786 4 40.88 227.37 -9.04 0.54 4785 -4787 4 41.24 228.98 -9.69 0.54 4786 -4788 4 42.02 230.57 -9.89 0.54 4787 -4789 4 42.56 232.33 -9.84 0.54 4788 -4790 4 43.29 234.53 -9.67 0.54 4789 -4791 4 43.89 235.71 -10.14 0.54 4790 -4792 4 44.72 236.74 -11.15 0.54 4791 -4793 4 45.28 238.27 -10.98 0.54 4792 -4794 4 45.65 239.42 -11.44 0.54 4793 -4795 4 45.59 240.79 -11.99 0.54 4794 -4796 4 45.77 241.48 -12.21 0.54 4795 -4797 4 45.3 242.39 -12.95 0.54 4796 -4798 4 45.66 244.01 -13.68 0.54 4797 -4799 4 45.82 244.63 -13.24 0.54 4798 -4800 4 46.46 244.88 -13.2 0.54 4799 -4801 4 46.91 244.97 -13.85 0.54 4800 -4802 4 47.11 245.47 -14.33 0.54 4801 -4803 4 48.19 246.1 -15.45 0.54 4802 -4804 4 49.24 246.59 -15.37 0.54 4803 -4805 4 49.7 246.72 -16.39 0.54 4804 -4806 4 50.14 247.3 -17.61 0.54 4805 -4807 4 50.76 248.29 -18.47 0.54 4806 -4808 4 51.82 249.12 -19.41 0.54 4807 -4809 4 52.89 249.97 -20.74 0.54 4808 -4810 4 53.31 251.01 -22.12 0.54 4809 -4811 4 54.2 250.94 -23.01 0.54 4810 -4812 4 54.21 251.0 -23.61 0.54 4811 -4813 4 55.25 251.68 -23.29 0.54 4812 -4814 4 55.26 251.98 -24.01 0.54 4813 -4815 4 55.3 252.17 -25.87 0.54 4814 -4816 4 56.6 252.8 -26.98 0.54 4815 -4817 4 57.24 253.37 -27.82 0.54 4816 -4818 4 58.1 253.97 -28.94 0.54 4817 -4819 4 58.34 254.06 -29.75 0.54 4818 -4820 4 58.94 255.02 -30.09 0.54 4819 -4821 4 59.83 255.14 -30.74 0.54 4820 -4822 4 60.68 255.99 -32.28 0.54 4821 -4823 4 61.08 256.93 -32.71 0.54 4822 -4824 4 62.16 257.53 -33.59 0.54 4823 -4825 4 62.38 258.1 -34.82 0.54 4824 -4826 4 62.78 258.87 -35.63 0.54 4825 -4827 4 62.8 258.94 -36.37 0.54 4826 -4828 4 63.03 259.52 -37.66 0.54 4827 -4829 4 63.26 259.91 -39.27 0.54 4828 -4830 4 63.43 261.09 -40.05 0.54 4829 -4831 4 63.66 260.9 -40.07 0.54 4830 -4832 4 63.62 262.36 -41.73 0.54 4831 -4833 4 63.59 262.78 -41.6 0.54 4832 -4834 4 63.77 263.74 -42.26 0.54 4833 -4835 4 63.74 264.18 -42.44 0.54 4834 -4836 4 63.77 264.56 -44.06 0.54 4835 -4837 4 63.81 264.71 -45.55 0.54 4836 -4838 4 64.01 265.49 -46.59 0.54 4837 -4839 4 64.21 266.5 -47.91 0.54 4838 -4840 4 64.2 267.3 -49.27 0.54 4839 -4841 4 64.2 267.85 -50.42 0.54 4840 -4842 4 64.37 269.05 -51.42 0.54 4841 -4843 4 64.34 270.02 -52.37 0.54 4842 -4844 4 64.49 271.38 -52.83 0.54 4843 -4845 4 64.61 272.89 -52.67 0.54 4844 -4846 4 64.58 273.3 -52.48 0.54 4845 -4847 4 64.08 274.12 -52.26 0.54 4846 -4848 4 64.08 274.67 -53.33 0.54 4847 -4849 4 64.07 275.42 -54.38 0.54 4848 -4850 4 63.85 276.22 -55.97 0.54 4849 -4851 4 32.19 201.41 -13.59 0.54 4769 -4852 4 33.04 201.46 -13.57 0.54 4851 -4853 4 34.92 202.37 -12.74 0.54 4852 -4854 4 35.13 202.33 -12.29 0.54 4853 -4855 4 36.77 203.71 -12.04 0.54 4854 -4856 4 38.03 204.18 -11.51 0.54 4855 -4857 4 39.28 204.57 -10.3 0.54 4856 -4858 4 40.91 205.94 -9.9 0.54 4857 -4859 4 41.71 206.78 -9.19 0.54 4858 -4860 4 42.55 207.25 -9.04 0.54 4859 -4861 4 44.01 207.94 -8.49 0.54 4860 -4862 4 44.83 208.36 -7.68 0.54 4861 -4863 4 46.12 208.41 -7.41 0.54 4862 -4864 4 46.89 209.41 -6.01 0.54 4863 -4865 4 47.54 209.42 -5.76 0.54 4864 -4866 4 48.14 209.84 -5.18 0.54 4865 -4867 4 48.89 211.33 -4.48 0.54 4866 -4868 4 49.94 211.78 -3.95 0.54 4867 -4869 4 51.14 213.33 -3.61 0.54 4868 -4870 4 51.92 214.44 -3.26 0.54 4869 -4871 4 53.38 215.38 -2.98 0.54 4870 -4872 4 54.59 216.74 -2.81 0.54 4871 -4873 4 55.84 217.66 -2.53 0.54 4872 -4874 4 57.03 219.23 -2.26 0.54 4873 -4875 4 58.09 219.72 -2.18 0.54 4874 -4876 4 59.76 220.69 -2.04 0.54 4875 -4877 4 61.46 221.22 -1.95 0.54 4876 -4878 4 63.72 223.07 -1.63 0.54 4877 -4879 4 65.35 224.89 -1.41 0.54 4878 -4880 4 66.72 227.13 -1.14 0.54 4879 -4881 4 68.18 228.07 -1.01 0.54 4880 -4882 4 69.11 230.48 -0.66 0.54 4881 -4883 4 70.69 232.95 -0.37 0.54 4882 -4884 4 71.91 234.32 -0.2 0.54 4883 -4885 4 72.52 234.74 0.22 0.54 4884 -4886 4 73.16 234.75 0.54 0.54 4885 -4887 4 75.06 235.55 0.3 0.54 4886 -4888 4 77.23 235.68 0.36 0.54 4887 -4889 4 78.5 236.19 0.45 0.54 4888 -4890 4 79.12 236.65 0.51 0.54 4889 -4891 4 80.16 237.12 0.95 0.54 4890 -4892 4 81.67 237.19 1.22 0.54 4891 -4893 4 83.17 237.24 1.71 0.54 4892 -4894 4 84.22 237.68 2.16 0.54 4893 -4895 4 85.72 237.7 2.95 0.54 4894 -4896 4 87.43 237.77 3.37 0.54 4895 -4897 4 88.09 237.53 3.97 0.54 4896 -4898 4 89.16 237.33 4.51 0.54 4897 -4899 4 90.24 237.11 5.26 0.54 4898 -4900 4 91.09 237.11 5.74 0.54 4899 -4901 4 91.96 237.14 5.98 0.54 4900 -4902 4 92.82 236.91 6.58 0.54 4901 -4903 4 93.69 236.75 6.65 0.54 4902 -4904 4 94.33 236.76 6.97 0.54 4903 -4905 4 94.97 236.75 7.44 0.54 4904 -4906 4 95.84 236.54 7.82 0.54 4905 -4907 4 96.28 236.33 8.11 0.54 4906 -4908 4 97.05 236.71 7.72 0.54 4907 -4909 4 97.3 236.87 6.23 0.54 4908 -4910 4 97.71 236.29 7.91 0.54 4909 -4911 4 97.9 236.96 7.91 0.54 4910 -4912 4 98.32 236.97 8.07 0.54 4911 -4913 4 98.53 236.91 8.75 0.54 4912 -4914 4 98.93 236.85 9.65 0.54 4913 -4915 4 99.55 237.02 10.44 0.54 4914 -4916 4 100.19 237.03 10.69 0.54 4915 -4917 4 100.64 236.59 11.11 0.54 4916 -4918 4 101.7 236.55 12.18 0.54 4917 -4919 4 102.55 236.59 12.28 0.54 4918 -4920 4 102.75 236.5 13.25 0.54 4919 -4921 4 103.16 236.44 14.16 0.54 4920 -4922 4 103.37 236.41 14.61 0.54 4921 -4923 4 104.0 236.37 15.46 0.54 4922 -4924 4 104.2 236.06 16.49 0.54 4923 -4925 4 104.39 235.98 17.46 0.54 4924 -4926 4 104.83 235.69 18.34 0.54 4925 -4927 4 105.02 235.37 19.37 0.54 4926 -4928 4 105.23 235.32 20.04 0.54 4927 -4929 4 106.11 234.88 20.62 0.54 4928 -4930 4 106.55 234.42 21.19 0.54 4929 -4931 4 107.21 234.23 21.42 0.54 4930 -4932 4 107.43 233.94 22.22 0.54 4931 -4933 4 108.07 233.45 23.16 0.54 4932 -4934 4 108.73 233.23 23.53 0.54 4933 -4935 4 108.92 232.91 24.71 0.54 4934 -4936 4 109.55 232.86 25.62 0.54 4935 -4937 4 109.75 232.8 26.3 0.54 4936 -4938 4 110.38 233.02 26.63 0.54 4937 -4939 4 110.59 232.99 27.09 0.54 4938 -4940 4 110.78 232.9 27.99 0.54 4939 -4941 4 25.17 200.33 -19.52 1.41 4754 -4942 4 25.25 202.27 -19.32 1.41 4941 -4943 4 25.33 204.43 -19.09 1.41 4942 -4944 4 25.43 204.52 -19.08 1.41 4943 -4945 4 24.91 204.95 -17.16 0.435 4944 -4946 4 23.76 206.25 -17.96 0.435 4945 -4947 4 23.23 207.43 -17.02 0.435 4946 -4948 4 22.52 207.95 -16.08 0.435 4947 -4949 4 21.58 208.38 -14.63 0.435 4948 -4950 4 20.89 208.7 -13.93 0.435 4949 -4951 4 20.18 209.19 -12.77 0.435 4950 -4952 4 19.27 209.47 -11.86 0.435 4951 -4953 4 18.56 210.28 -11.64 0.435 4952 -4954 4 18.24 211.23 -10.49 0.435 4953 -4955 4 16.82 213.07 -10.25 0.435 4954 -4956 4 15.8 215.09 -9.4 0.435 4955 -4957 4 14.64 216.26 -8.85 0.435 4956 -4958 4 13.68 217.23 -8.32 0.435 4957 -4959 4 12.72 218.64 -7.82 0.435 4958 -4960 4 12.38 220.34 -7.12 0.435 4959 -4961 4 11.33 223.08 -6.87 0.435 4960 -4962 4 11.09 223.49 -6.76 0.435 4961 -4963 4 10.15 224.71 -6.65 0.435 4962 -4964 4 9.59 226.63 -6.47 0.435 4963 -4965 4 9.33 227.24 -6.41 0.435 4964 -4966 4 9.28 228.11 -6.32 0.435 4965 -4967 4 8.34 228.87 -5.81 0.435 4966 -4968 4 7.2 229.86 -5.66 0.435 4967 -4969 4 6.67 231.33 -5.52 0.435 4968 -4970 4 6.14 232.59 -5.4 0.435 4969 -4971 4 5.9 233.21 -5.27 0.435 4970 -4972 4 5.41 233.83 -5.22 0.435 4971 -4973 4 4.92 234.88 -5.12 0.435 4972 -4974 4 4.2 235.91 -5.03 0.435 4973 -4975 4 3.07 236.7 -4.98 0.435 4974 -4976 4 2.56 237.74 -4.88 0.435 4975 -4977 4 2.23 239.44 -4.63 0.435 4976 -4978 4 1.75 240.27 -4.56 0.435 4977 -4979 4 0.98 241.9 -3.96 0.435 4978 -4980 4 0.46 242.86 -3.11 0.435 4979 -4981 4 -0.05 244.09 -2.7 0.435 4980 -4982 4 -0.97 244.89 -2.64 0.435 4981 -4983 4 -1.48 245.9 -2.09 0.435 4982 -4984 4 -2.17 246.21 -1.4 0.435 4983 -4985 4 -3.26 246.95 -2.93 0.435 4984 -4986 4 -3.7 247.44 -3.73 0.435 4985 -4987 4 -4.37 247.87 -4.07 0.435 4986 -4988 4 -5.49 248.44 -4.04 0.435 4987 -4989 4 -6.81 248.79 -4.03 0.435 4988 -4990 4 -7.94 249.59 -3.97 0.435 4989 -4991 4 -8.49 251.27 -3.81 0.435 4990 -4992 4 -9.9 252.91 -3.68 0.435 4991 -4993 4 -10.38 254.27 -4.6 0.435 4992 -4994 4 -11.32 255.57 -5.16 0.435 4993 -4995 4 -12.9 257.31 -6.16 0.435 4994 -4996 4 -13.38 258.21 -6.68 0.435 4995 -4997 4 -13.47 259.79 -7.27 0.435 4996 -4998 4 -14.64 261.23 -7.22 0.435 4997 -4999 4 -15.82 262.91 -7.38 0.435 4998 -5000 4 -16.71 263.56 -7.94 0.435 4999 -5001 4 -16.85 266.0 -8.52 0.435 5000 -5002 4 -16.96 267.93 -8.32 0.435 5001 -5003 4 -17.07 269.42 -8.17 0.435 5002 -5004 4 -18.23 270.88 -8.27 0.435 5003 -5005 4 -19.17 272.18 -8.84 0.435 5004 -5006 4 -19.69 273.66 -8.77 0.435 5005 -5007 4 -20.61 274.48 -8.86 0.435 5006 -5008 4 -20.67 275.6 -9.2 0.435 5007 -5009 4 -20.73 276.7 -9.31 0.435 5008 -5010 4 -20.56 277.87 -10.09 0.435 5009 -5011 4 -20.59 278.83 -10.89 0.435 5010 -5012 4 -20.66 279.9 -10.78 0.435 5011 -5013 4 -20.75 281.69 -11.43 0.435 5012 -5014 4 -21.44 282.59 -12.03 0.435 5013 -5015 4 -22.55 283.51 -13.32 0.435 5014 -5016 4 -23.45 284.36 -13.71 0.435 5015 -5017 4 -24.11 284.83 -14.5 0.435 5016 -5018 4 -25.64 285.23 -15.1 0.435 5017 -5019 4 -26.92 285.2 -15.58 0.435 5018 -5020 4 -27.79 285.17 -15.84 0.435 5019 -5021 4 -29.05 284.69 -16.22 0.435 5020 -5022 4 -30.6 285.25 -16.27 0.435 5021 -5023 4 -32.61 286.22 -16.3 0.435 5022 -5024 4 -36.18 287.73 -16.29 0.435 5023 -5025 4 -39.26 288.93 -17.23 0.435 5024 -5026 4 -40.9 291.3 -18.15 0.435 5025 -5027 4 -42.33 292.61 -16.84 0.435 5026 -5028 4 -43.32 294.68 -16.65 0.435 5027 -5029 4 -43.79 294.82 -16.12 0.435 5028 -5030 4 -45.41 296.18 -15.57 0.435 5029 -5031 4 -45.51 297.63 -14.89 0.435 5030 -5032 4 -46.48 299.06 -14.54 0.435 5031 -5033 4 -47.18 299.6 -13.9 0.435 5032 -5034 4 -47.71 300.56 -12.98 0.435 5033 -5035 4 -48.41 301.36 -12.76 0.435 5034 -5036 4 -48.67 301.94 -12.25 0.435 5035 -5037 4 -48.75 302.97 -11.7 0.435 5036 -5038 4 -48.91 305.3 -11.24 0.435 5037 -5039 4 25.5 205.85 -20.22 1.41 4944 -5040 4 24.79 206.88 -20.13 1.41 5039 -5041 4 25.11 206.91 -20.16 1.41 5040 -5042 4 25.27 206.92 -20.17 1.41 5041 -5043 4 24.04 207.49 -18.58 0.11 5042 -5044 4 23.5 209.18 -18.49 0.11 5043 -5045 4 22.71 211.23 -17.77 0.435 5044 -5046 4 21.92 213.08 -17.29 0.435 5045 -5047 4 21.35 214.89 -16.06 0.435 5046 -5048 4 20.8 216.26 -15.03 0.435 5047 -5049 4 20.27 217.2 -13.89 0.435 5048 -5050 4 19.56 217.43 -12.38 0.435 5049 -5051 4 18.45 217.81 -12.44 0.435 5050 -5052 4 16.79 220.07 -12.25 0.435 5051 -5053 4 15.97 222.59 -12.0 0.435 5052 -5054 4 15.88 224.1 -11.85 0.435 5053 -5055 4 16.25 224.93 -11.15 0.435 5054 -5056 4 16.43 225.36 -11.1 0.435 5055 -5057 4 16.79 226.68 -11.04 0.435 5056 -5058 4 16.74 227.28 -10.53 0.435 5057 -5059 4 16.85 228.53 -9.86 0.435 5058 -5060 4 15.6 230.76 -9.06 0.435 5059 -5061 4 15.09 231.72 -8.14 0.435 5060 -5062 4 13.63 234.2 -7.84 0.435 5061 -5063 4 12.41 236.27 -7.59 0.435 5062 -5064 4 12.33 237.31 -7.18 0.435 5063 -5065 4 11.36 238.69 -6.46 0.435 5064 -5066 4 11.01 240.07 -5.2 0.435 5065 -5067 4 10.49 240.98 -3.91 0.435 5066 -5068 4 8.18 242.98 -3.6 0.435 5067 -5069 4 6.48 245.65 -3.14 0.435 5068 -5070 4 4.52 249.17 -2.67 0.435 5069 -5071 4 2.66 251.21 -2.5 0.435 5070 -5072 4 0.25 254.68 -1.83 0.435 5071 -5073 4 -1.47 257.75 -1.02 0.435 5072 -5074 4 -2.04 259.34 0.18 0.435 5073 -5075 4 -3.67 260.9 0.83 0.435 5074 -5076 4 -4.19 261.88 1.59 0.435 5075 -5077 4 -4.7 262.85 2.28 0.435 5076 -5078 4 -5.65 263.83 2.81 0.435 5077 -5079 4 -8.18 266.03 3.06 0.435 5078 -5080 4 -10.04 268.06 3.3 0.435 5079 -5081 4 -11.68 269.63 3.95 0.435 5080 -5082 4 -13.1 270.93 5.26 0.435 5081 -5083 4 -14.12 272.97 5.97 0.435 5082 -5084 4 -14.27 275.05 6.72 0.435 5083 -5085 4 -14.29 275.74 6.25 0.435 5084 -5086 4 -14.76 276.37 6.24 0.435 5085 -5087 4 -14.57 276.28 7.29 0.435 5086 -5088 4 -15.09 276.72 9.12 0.435 5087 -5089 4 -15.13 277.05 10.06 0.435 5088 -5090 4 -15.87 277.49 11.6 0.435 5089 -5091 4 -16.77 278.03 12.16 0.435 5090 -5092 4 25.36 208.22 -20.06 1.41 5041 -5093 4 25.75 208.68 -20.0 1.41 5092 -5094 4 26.09 210.2 -19.84 1.41 5093 -5095 4 25.77 211.9 -19.67 1.41 5094 -5096 4 25.17 214.24 -19.44 1.41 5095 -5097 4 24.36 216.77 -19.2 1.41 5096 -5098 4 23.37 218.86 -19.0 1.41 5097 -5099 4 23.07 220.44 -19.74 1.41 5098 -5100 4 23.38 220.59 -19.72 1.41 5099 -5101 4 24.2 221.0 -18.9 0.435 5100 -5102 4 24.15 221.65 -18.92 0.435 5101 -5103 4 24.33 222.02 -18.2 0.435 5102 -5104 4 24.46 223.29 -17.77 0.435 5103 -5105 4 24.65 223.19 -16.72 0.435 5104 -5106 4 24.62 223.6 -16.52 0.435 5105 -5107 4 24.82 223.54 -15.69 0.435 5106 -5108 4 24.77 224.14 -15.33 0.435 5107 -5109 4 24.95 224.52 -14.61 0.435 5108 -5110 4 25.08 225.32 -13.84 0.435 5109 -5111 4 25.45 226.14 -13.07 0.435 5110 -5112 4 25.82 227.0 -12.82 0.435 5111 -5113 4 25.97 228.07 -12.56 0.435 5112 -5114 4 26.35 228.7 -12.11 0.435 5113 -5115 4 26.52 229.33 -11.74 0.435 5114 -5116 4 26.89 230.21 -11.64 0.435 5115 -5117 4 27.48 231.31 -11.43 0.435 5116 -5118 4 27.77 233.48 -11.13 0.435 5117 -5119 4 28.12 234.79 -10.99 0.435 5118 -5120 4 28.22 236.24 -10.23 0.435 5119 -5121 4 28.37 237.31 -10.04 0.435 5120 -5122 4 28.52 238.37 -9.7 0.435 5121 -5123 4 28.87 239.44 -9.2 0.435 5122 -5124 4 29.21 240.48 -8.48 0.435 5123 -5125 4 29.39 241.1 -8.19 0.435 5124 -5126 4 29.74 242.18 -7.84 0.435 5125 -5127 4 29.94 242.89 -8.37 0.435 5126 -5128 4 30.15 243.45 -9.36 0.435 5127 -5129 4 30.55 244.16 -9.73 0.435 5128 -5130 4 30.73 245.09 -10.23 0.435 5129 -5131 4 31.11 245.99 -10.21 0.435 5130 -5132 4 31.25 247.32 -10.44 0.435 5131 -5133 4 31.18 248.39 -10.4 0.435 5132 -5134 4 31.55 249.5 -10.36 0.435 5133 -5135 4 31.52 250.23 -11.04 0.435 5134 -5136 4 31.69 251.11 -11.1 0.435 5135 -5137 4 32.76 251.67 -11.62 0.435 5136 -5138 4 33.71 253.66 -11.39 0.435 5137 -5139 4 34.25 255.41 -11.19 0.435 5138 -5140 4 34.44 256.14 -11.79 0.435 5139 -5141 4 34.59 257.25 -11.82 0.435 5140 -5142 4 34.56 257.39 -11.28 0.435 5141 -5143 4 34.75 258.1 -11.58 0.435 5142 -5144 4 34.72 258.79 -11.96 0.435 5143 -5145 4 34.69 259.48 -12.42 0.435 5144 -5146 4 34.85 260.61 -12.75 0.435 5145 -5147 4 35.01 261.49 -12.73 0.435 5146 -5148 4 36.04 262.67 -13.11 0.435 5147 -5149 4 36.14 264.4 -12.93 0.435 5148 -5150 4 35.79 266.54 -12.79 0.435 5149 -5151 4 35.71 267.82 -12.66 0.435 5150 -5152 4 35.69 268.04 -12.64 0.435 5151 -5153 4 35.63 269.41 -13.33 0.435 5152 -5154 4 35.1 271.14 -13.61 0.435 5153 -5155 4 34.33 273.34 -14.3 0.435 5154 -5156 4 33.58 275.36 -15.4 0.435 5155 -5157 4 33.7 277.1 -15.37 0.435 5156 -5158 4 33.35 279.26 -15.37 0.435 5157 -5159 4 32.99 282.12 -15.99 0.435 5158 -5160 4 32.62 284.52 -16.35 0.435 5159 -5161 4 32.53 286.02 -16.2 0.435 5160 -5162 4 32.46 287.66 -17.32 0.435 5161 -5163 4 31.64 290.4 -17.06 0.435 5162 -5164 4 31.79 292.04 -18.08 0.435 5163 -5165 4 31.73 293.12 -18.05 0.435 5164 -5166 4 31.78 295.75 -18.23 0.435 5165 -5167 4 33.4 297.78 -18.05 0.435 5166 -5168 4 34.36 299.85 -18.42 0.435 5167 -5169 4 34.49 301.4 -18.64 0.435 5168 -5170 4 35.25 303.21 -18.88 0.435 5169 -5171 4 35.57 305.17 -18.74 0.435 5170 -5172 4 36.5 307.32 -17.9 0.435 5171 -5173 4 36.73 310.34 -17.58 0.435 5172 -5174 4 36.45 311.38 -17.33 0.435 5173 -5175 4 36.33 313.31 -17.13 0.435 5174 -5176 4 36.4 315.47 -16.9 0.435 5175 -5177 4 36.68 318.06 -16.63 0.435 5176 -5178 4 36.99 319.86 -16.52 0.435 5177 -5179 4 37.58 321.0 -16.69 0.435 5178 -5180 4 37.96 322.18 -17.31 0.435 5179 -5181 4 37.91 323.61 -18.59 0.435 5180 -5182 4 38.08 324.77 -19.22 0.435 5181 -5183 4 38.05 325.76 -20.48 0.435 5182 -5184 4 37.32 327.26 -20.71 0.435 5183 -5185 4 37.04 328.64 -21.56 0.435 5184 -5186 4 36.36 329.55 -22.46 0.435 5185 -5187 4 36.31 330.19 -22.32 0.435 5186 -5188 4 35.84 331.32 -23.04 0.435 5187 -5189 4 36.15 333.84 -24.2 0.435 5188 -5190 4 36.3 335.24 -24.96 0.435 5189 -5191 4 36.86 337.06 -25.51 0.435 5190 -5192 4 37.23 338.46 -26.11 0.435 5191 -5193 4 38.13 341.55 -26.0 0.435 5192 -5194 4 38.46 343.32 -26.11 0.435 5193 -5195 4 39.61 345.76 -25.9 0.435 5194 -5196 4 40.68 349.53 -25.94 0.435 5195 -5197 4 41.48 350.65 -25.8 0.435 5196 -5198 4 42.65 352.66 -25.57 0.435 5197 -5199 4 42.56 354.16 -25.42 0.435 5198 -5200 4 42.46 355.67 -25.34 0.435 5199 -5201 4 42.15 357.69 -26.2 0.435 5200 -5202 4 41.01 359.3 -27.79 0.435 5201 -5203 4 22.75 222.16 -19.87 1.41 5100 -5204 4 22.65 224.49 -21.37 1.41 5203 -5205 4 23.01 225.8 -21.3 1.41 5204 -5206 4 23.11 227.53 -21.12 1.41 5205 -5207 4 23.26 229.17 -22.15 1.41 5206 -5208 4 23.43 230.84 -23.49 1.41 5207 -5209 4 23.32 232.56 -23.46 1.41 5208 -5210 4 23.49 234.07 -25.26 1.41 5209 -5211 4 23.54 234.89 -25.17 1.41 5210 -5212 4 22.83 235.39 -24.08 0.435 5211 -5213 4 22.78 236.02 -23.94 0.435 5212 -5214 4 22.3 236.57 -23.22 0.435 5213 -5215 4 21.58 237.07 -22.21 0.435 5214 -5216 4 20.88 237.39 -21.44 0.435 5215 -5217 4 20.16 238.63 -21.25 0.435 5216 -5218 4 19.69 238.98 -20.7 0.435 5217 -5219 4 19.19 239.55 -20.2 0.435 5218 -5220 4 19.12 240.32 -19.37 0.435 5219 -5221 4 18.38 241.76 -19.09 0.435 5220 -5222 4 17.89 242.59 -19.01 0.435 5221 -5223 4 17.38 243.85 -18.81 0.435 5222 -5224 4 16.67 244.66 -18.68 0.435 5223 -5225 4 15.93 245.88 -18.33 0.435 5224 -5226 4 15.43 246.92 -18.17 0.435 5225 -5227 4 14.98 247.09 -18.01 0.435 5226 -5228 4 14.51 247.71 -17.96 0.435 5227 -5229 4 14.65 248.79 -17.84 0.435 5228 -5230 4 14.54 250.5 -17.59 0.435 5229 -5231 4 13.77 252.39 -17.41 0.435 5230 -5232 4 12.98 254.48 -17.21 0.435 5231 -5233 4 12.44 256.16 -16.9 0.435 5232 -5234 4 11.94 256.92 -16.16 0.435 5233 -5235 4 11.42 258.18 -16.04 0.435 5234 -5236 4 10.97 258.88 -16.74 0.435 5235 -5237 4 10.48 259.71 -16.66 0.435 5236 -5238 4 9.56 260.78 -17.02 0.435 5237 -5239 4 8.9 261.52 -18.32 0.435 5238 -5240 4 8.24 261.93 -18.6 0.435 5239 -5241 4 7.57 262.11 -18.59 0.435 5240 -5242 4 6.85 263.14 -18.57 0.435 5241 -5243 4 6.82 264.1 -19.31 0.435 5242 -5244 4 7.0 264.79 -19.69 0.435 5243 -5245 4 6.98 265.47 -19.99 0.435 5244 -5246 4 6.92 266.62 -20.55 0.435 5245 -5247 4 6.9 267.32 -21.01 0.435 5246 -5248 4 6.83 268.43 -21.35 0.435 5247 -5249 4 6.34 269.26 -21.27 0.435 5248 -5250 4 5.84 270.81 -21.88 0.435 5249 -5251 4 4.9 271.83 -21.79 0.435 5250 -5252 4 4.18 273.41 -22.77 0.435 5251 -5253 4 3.18 275.49 -22.51 0.435 5252 -5254 4 2.65 276.73 -22.24 0.435 5253 -5255 4 1.75 277.84 -23.13 0.435 5254 -5256 4 1.73 279.1 -24.73 0.435 5255 -5257 4 1.68 280.29 -25.74 0.435 5256 -5258 4 1.6 281.8 -25.74 0.435 5257 -5259 4 1.0 284.13 -25.51 0.435 5258 -5260 4 -0.66 286.61 -25.29 0.435 5259 -5261 4 -1.83 288.37 -26.19 0.435 5260 -5262 4 -2.36 289.84 -26.06 0.435 5261 -5263 4 -3.3 291.13 -26.55 0.435 5262 -5264 4 -4.21 292.46 -27.34 0.435 5263 -5265 4 -4.7 293.29 -27.33 0.435 5264 -5266 4 -5.87 295.04 -28.16 0.435 5265 -5267 4 -6.74 295.55 -29.41 0.435 5266 -5268 4 -8.07 296.12 -29.45 0.435 5267 -5269 4 -9.19 296.97 -29.99 0.435 5268 -5270 4 -9.92 298.24 -30.03 0.435 5269 -5271 4 -11.31 299.66 -29.92 0.435 5270 -5272 4 -13.35 301.85 -31.4 0.435 5271 -5273 4 -14.71 303.16 -32.2 0.435 5272 -5274 4 -15.39 303.83 -32.83 0.435 5273 -5275 4 -15.85 304.72 -33.34 0.435 5274 -5276 4 -16.78 306.05 -34.28 0.435 5275 -5277 4 -17.7 307.36 -34.85 0.435 5276 -5278 4 -18.83 308.5 -36.12 0.435 5277 -5279 4 -20.42 310.21 -36.88 0.435 5278 -5280 4 -21.37 311.49 -37.15 0.435 5279 -5281 4 -22.28 312.58 -37.81 0.435 5280 -5282 4 -23.39 313.49 -38.87 0.435 5281 -5283 4 -23.87 314.36 -39.24 0.435 5282 -5284 4 -23.91 315.8 -40.53 0.435 5283 -5285 4 -24.63 317.11 -41.09 0.435 5284 -5286 4 -25.3 318.08 -42.36 0.435 5285 -5287 4 -25.97 319.0 -43.41 0.435 5286 -5288 4 -28.19 319.76 -43.76 0.435 5287 -5289 4 -29.1 320.62 -44.15 0.435 5288 -5290 4 -29.79 321.5 -44.75 0.435 5289 -5291 4 -31.42 323.58 -44.87 0.435 5290 -5292 4 -32.36 324.61 -44.87 0.435 5291 -5293 4 -32.78 325.16 -46.18 0.435 5292 -5294 4 -33.89 326.08 -47.47 0.435 5293 -5295 4 23.42 235.13 -25.15 1.41 5211 -5296 4 23.56 236.43 -25.01 1.41 5295 -5297 4 24.14 237.55 -24.89 1.41 5296 -5298 4 24.54 238.83 -26.55 1.41 5297 -5299 4 24.89 240.4 -26.76 1.515 5298 -5300 4 25.23 242.5 -27.96 1.515 5299 -5301 4 25.6 243.61 -27.99 1.515 5300 -5302 4 25.31 244.88 -27.86 1.625 5301 -5303 4 25.0 246.65 -28.89 1.625 5302 -5304 4 24.94 248.26 -29.93 1.625 5303 -5305 4 25.08 249.34 -29.6 1.625 5304 -5306 4 24.51 249.71 -29.57 1.625 5305 -5307 4 23.36 250.4 -29.08 0.65 5306 -5308 4 22.83 251.57 -28.13 0.54 5307 -5309 4 22.6 251.78 -28.2 0.54 5308 -5310 4 22.58 251.68 -27.22 0.54 5309 -5311 4 22.56 251.59 -26.34 0.54 5310 -5312 4 22.54 251.5 -25.51 0.54 5311 -5313 4 22.49 251.84 -24.57 0.54 5312 -5314 4 22.48 251.81 -24.27 0.54 5313 -5315 4 22.46 252.0 -24.03 0.54 5314 -5316 4 22.44 251.94 -23.44 0.54 5315 -5317 4 22.41 252.04 -22.37 0.54 5316 -5318 4 22.4 251.99 -21.92 0.54 5317 -5319 4 22.38 251.89 -20.88 0.54 5318 -5320 4 22.37 252.16 -21.37 0.54 5319 -5321 4 22.36 252.36 -21.28 0.54 5320 -5322 4 22.33 252.78 -21.02 0.54 5321 -5323 4 22.31 252.68 -20.12 0.54 5322 -5324 4 21.83 253.01 -19.42 0.54 5323 -5325 4 21.34 253.82 -19.2 0.76 5324 -5326 4 20.56 255.93 -19.0 0.65 5325 -5327 4 20.46 257.43 -18.84 0.65 5326 -5328 4 19.04 259.27 -18.69 0.65 5327 -5329 4 18.3 260.51 -18.5 0.65 5328 -5330 4 17.54 262.4 -18.33 0.65 5329 -5331 4 16.79 263.84 -17.96 0.65 5330 -5332 4 16.0 265.68 -17.27 0.65 5331 -5333 4 15.42 267.46 -16.04 0.54 5332 -5334 4 14.89 268.65 -15.18 0.54 5333 -5335 4 14.36 269.59 -14.11 0.54 5334 -5336 4 14.31 270.15 -13.23 0.54 5335 -5337 4 14.21 271.11 -12.07 0.54 5336 -5338 4 13.4 273.38 -11.34 0.54 5337 -5339 4 12.61 275.47 -11.06 0.54 5338 -5340 4 12.33 276.85 -11.98 0.435 5339 -5341 4 11.57 278.53 -11.82 0.435 5340 -5342 4 11.52 279.4 -11.88 0.435 5341 -5343 4 11.32 282.9 -12.28 0.435 5342 -5344 4 10.65 286.74 -11.9 0.435 5343 -5345 4 10.75 288.46 -11.72 0.435 5344 -5346 4 9.78 290.13 -11.57 0.435 5345 -5347 4 8.54 292.42 -11.36 0.435 5346 -5348 4 7.73 294.95 -11.2 0.435 5347 -5349 4 7.38 296.75 -9.96 0.435 5348 -5350 4 6.84 298.5 -10.32 0.435 5349 -5351 4 6.77 299.84 -10.72 0.435 5350 -5352 4 6.85 302.01 -10.56 0.435 5351 -5353 4 6.76 303.77 -10.9 0.435 5352 -5354 4 5.1 305.83 -10.81 0.435 5353 -5355 4 3.96 306.84 -10.73 0.435 5354 -5356 4 2.12 308.45 -10.61 0.435 5355 -5357 4 -0.11 309.63 -10.84 0.435 5356 -5358 4 -1.79 312.11 -10.62 0.435 5357 -5359 4 -1.95 314.69 -10.36 0.435 5358 -5360 4 -2.92 316.34 -10.28 0.435 5359 -5361 4 -4.14 318.47 -10.54 0.435 5360 -5362 4 -4.68 320.41 -10.66 0.435 5361 -5363 4 -5.42 321.63 -10.33 0.435 5362 -5364 4 -6.12 322.44 -10.26 0.435 5363 -5365 4 -7.54 324.29 -10.1 0.435 5364 -5366 4 -7.82 324.88 -9.6 0.435 5365 -5367 4 -8.26 324.73 -8.42 0.435 5366 -5368 4 -8.35 325.44 -6.99 0.435 5367 -5369 4 -9.28 325.67 -5.56 0.435 5368 -5370 4 -9.76 326.01 -4.85 0.435 5369 -5371 4 -10.23 326.33 -4.0 0.435 5370 -5372 4 -11.15 326.62 -3.24 0.435 5371 -5373 4 -11.62 327.2 -2.74 0.435 5372 -5374 4 -13.21 327.89 -2.03 0.435 5373 -5375 4 -13.07 328.41 -0.69 0.435 5374 -5376 4 -13.85 330.49 -0.19 0.435 5375 -5377 4 -13.88 330.39 0.77 0.435 5376 -5378 4 -15.05 331.32 1.52 0.435 5377 -5379 4 -16.19 332.06 2.09 0.435 5378 -5380 4 -17.59 333.2 2.71 0.435 5379 -5381 4 -18.96 334.16 3.15 0.435 5380 -5382 4 -19.52 335.76 4.28 0.435 5381 -5383 4 -20.73 337.1 5.29 0.435 5382 -5384 4 -20.82 338.32 5.95 0.435 5383 -5385 4 -21.76 339.33 6.18 0.435 5384 -5386 4 -22.96 340.62 7.64 0.435 5385 -5387 4 -24.08 340.44 8.81 0.435 5386 -5388 4 -24.8 341.18 9.61 0.435 5387 -5389 4 -25.96 342.11 10.28 0.435 5388 -5390 4 -26.74 343.94 11.14 0.435 5389 -5391 4 -27.77 346.22 11.5 0.435 5390 -5392 4 -28.76 348.06 12.04 0.435 5391 -5393 4 -29.82 350.7 13.19 0.435 5392 -5394 4 -30.86 352.41 15.0 0.435 5393 -5395 4 -30.94 353.4 15.86 0.435 5394 -5396 4 -31.03 354.39 16.78 0.435 5395 -5397 4 -32.45 355.93 17.81 0.435 5396 -5398 4 -31.91 357.2 18.49 0.435 5397 -5399 4 -31.56 358.73 18.66 0.435 5398 -5400 4 -31.4 359.6 18.75 0.435 5399 -5401 4 -31.48 360.67 18.86 0.435 5400 -5402 4 -32.2 361.64 19.55 0.435 5401 -5403 4 -32.92 362.42 19.98 0.435 5402 -5404 4 -34.33 364.03 20.35 0.435 5403 -5405 4 -36.16 365.41 20.6 0.435 5404 -5406 4 -36.49 366.99 21.36 0.435 5405 -5407 4 -36.56 367.79 21.96 0.435 5406 -5408 4 -37.48 368.57 22.32 0.435 5407 -5409 4 -38.01 369.8 22.67 0.435 5408 -5410 4 -38.95 370.79 23.04 0.435 5409 -5411 4 -39.04 372.28 23.34 0.435 5410 -5412 4 -39.79 373.69 23.92 0.435 5411 -5413 4 -39.72 375.36 24.7 0.435 5412 -5414 4 -40.3 377.65 25.22 0.435 5413 -5415 4 -40.82 378.86 25.79 0.435 5414 -5416 4 -41.99 379.56 26.82 0.435 5415 -5417 4 -42.9 379.8 28.1 0.435 5416 -5418 4 -43.81 380.12 28.65 0.435 5417 -5419 4 -45.2 381.29 29.26 0.435 5418 -5420 4 -46.14 382.28 29.41 0.435 5419 -5421 4 -46.22 383.56 29.69 0.435 5420 -5422 4 -46.34 385.24 30.16 0.435 5421 -5423 4 -46.88 386.68 30.68 0.435 5422 -5424 4 -48.33 389.16 30.97 0.435 5423 -5425 4 -49.85 392.51 31.36 0.435 5424 -5426 4 -51.48 394.12 31.49 0.435 5425 -5427 4 -52.44 395.57 31.69 0.435 5426 -5428 4 -54.07 397.17 31.9 0.435 5427 -5429 4 -55.67 398.37 31.98 0.435 5428 -5430 4 -57.42 401.86 32.83 0.435 5429 -5431 4 -59.31 404.32 33.12 0.435 5430 -5432 4 -60.72 405.95 33.4 0.435 5431 -5433 4 -61.9 407.12 34.02 0.435 5432 -5434 4 -63.33 408.94 34.32 0.435 5433 -5435 4 -63.43 410.15 35.2 0.435 5434 -5436 4 -63.37 412.46 36.04 0.435 5435 -5437 4 -63.43 413.03 36.79 0.435 5436 -5438 4 -63.31 414.52 37.16 0.435 5437 -5439 4 -63.4 415.48 38.39 0.435 5438 -5440 4 -64.82 417.09 38.75 0.435 5439 -5441 4 -64.9 418.37 38.95 0.435 5440 -5442 4 -65.46 420.27 39.14 0.435 5441 -5443 4 -65.57 421.98 39.31 0.435 5442 -5444 4 -66.5 423.0 39.39 0.435 5443 -5445 4 -67.03 424.46 39.61 0.435 5444 -5446 4 -67.09 425.09 39.9 0.435 5445 -5447 4 -67.15 425.62 41.09 0.435 5446 -5448 4 -67.24 426.87 41.52 0.435 5447 -5449 4 -67.91 427.06 41.89 0.435 5448 -5450 4 -68.38 427.69 41.88 0.435 5449 -5451 4 -68.67 427.89 43.85 0.435 5450 -5452 4 -69.34 427.76 44.8 0.435 5451 -5453 4 -69.82 428.09 45.42 0.435 5452 -5454 4 -70.53 428.32 47.09 0.435 5453 -5455 4 -70.4 428.79 48.87 0.435 5454 -5456 4 -70.69 429.56 49.78 0.435 5455 -5457 4 -71.19 430.83 49.75 0.435 5456 -5458 4 -70.83 431.4 50.79 0.435 5457 -5459 4 -70.69 432.44 51.35 0.435 5458 -5460 4 -71.64 432.86 53.1 0.435 5459 -5461 4 -72.13 433.68 53.26 0.435 5460 -5462 4 -72.86 434.38 54.37 0.435 5461 -5463 4 -73.55 434.95 54.71 0.435 5462 -5464 4 -74.52 436.37 55.14 0.435 5463 -5465 4 -74.8 437.18 55.52 0.435 5464 -5466 4 -74.42 437.8 56.11 0.435 5465 -5467 4 -74.29 438.86 56.46 0.435 5466 -5468 4 -74.34 439.71 56.61 0.435 5467 -5469 4 -74.81 440.33 56.67 0.435 5468 -5470 4 -75.98 441.75 56.87 0.435 5469 -5471 4 -77.58 442.95 56.95 0.435 5470 -5472 4 -79.51 445.84 57.21 0.435 5471 -5473 4 -80.99 448.77 57.48 0.435 5472 -5474 4 -81.53 449.95 58.26 0.435 5473 -5475 4 -83.24 452.79 59.19 0.435 5474 -5476 4 -83.16 454.71 59.62 0.435 5475 -5477 4 -83.05 456.16 60.37 0.435 5476 -5478 4 -82.78 458.54 60.7 0.435 5477 -5479 4 -82.69 460.44 61.28 0.435 5478 -5480 4 -82.56 461.44 62.21 0.435 5479 -5481 4 -82.16 461.87 62.49 0.435 5480 -5482 4 -82.28 463.52 63.26 0.435 5481 -5483 4 -82.79 464.27 64.09 0.435 5482 -5484 4 -83.96 465.19 64.98 0.435 5483 -5485 4 -84.45 465.43 66.57 0.435 5484 -5486 4 -85.19 466.12 67.91 0.435 5485 -5487 4 -86.14 466.82 68.94 0.435 5486 -5488 4 -86.39 467.15 69.87 0.435 5487 -5489 4 -87.75 467.87 70.36 0.435 5488 -5490 4 -89.09 468.16 71.04 0.435 5489 -5491 4 24.48 250.15 -29.53 1.625 5306 -5492 4 25.04 250.78 -31.11 1.735 5491 -5493 4 25.2 251.66 -31.01 1.735 5492 -5494 4 24.94 253.32 -32.58 1.735 5493 -5495 4 24.84 255.39 -33.79 1.735 5494 -5496 4 24.75 257.17 -34.21 1.735 5495 -5497 4 24.22 258.42 -34.03 1.735 5496 -5498 4 24.4 259.13 -33.95 1.735 5497 -5499 4 24.81 259.89 -34.69 0.65 5498 -5500 4 25.2 260.54 -34.54 0.865 5499 -5501 4 26.04 260.81 -34.41 0.865 5500 -5502 4 26.62 262.18 -34.71 0.865 5501 -5503 4 27.38 263.94 -34.59 0.65 5502 -5504 4 28.18 265.31 -34.65 0.65 5503 -5505 4 28.52 266.63 -34.58 0.65 5504 -5506 4 29.08 268.17 -34.48 0.65 5505 -5507 4 30.07 269.54 -34.4 0.65 5506 -5508 4 31.02 271.74 -34.15 0.65 5507 -5509 4 31.97 273.96 -34.05 0.65 5508 -5510 4 32.68 276.4 -33.93 0.65 5509 -5511 4 33.63 278.6 -33.68 0.65 5510 -5512 4 34.55 281.24 -33.45 0.65 5511 -5513 4 35.7 283.46 -33.2 0.65 5512 -5514 4 36.96 287.63 -32.73 0.65 5513 -5515 4 37.71 289.39 -32.53 0.65 5514 -5516 4 38.64 291.81 -32.26 0.65 5515 -5517 4 39.53 294.88 -31.92 0.65 5516 -5518 4 40.45 297.31 -31.65 0.65 5517 -5519 4 41.41 299.51 -31.4 0.65 5518 -5520 4 42.53 302.38 -31.08 0.65 5519 -5521 4 43.47 304.59 -30.83 0.65 5520 -5522 4 43.84 305.22 -30.38 0.65 5521 -5523 4 44.85 306.57 -30.22 0.65 5522 -5524 4 47.13 308.21 -29.99 0.65 5523 -5525 4 47.49 309.32 -29.87 0.65 5524 -5526 4 47.83 310.83 -29.62 0.65 5525 -5527 4 48.14 312.78 -29.41 0.65 5526 -5528 4 48.48 314.1 -29.27 0.65 5527 -5529 4 48.44 314.73 -29.21 0.65 5528 -5530 4 49.23 316.37 -29.7 0.65 5529 -5531 4 49.64 316.85 -29.94 0.65 5530 -5532 4 49.99 317.91 -29.44 0.65 5531 -5533 4 23.96 259.81 -35.1 1.735 5498 -5534 4 23.69 260.96 -35.81 1.735 5533 -5535 4 23.35 261.23 -35.79 1.735 5534 -5536 4 22.02 261.6 -36.08 0.76 5535 -5537 4 21.26 263.26 -35.78 0.54 5536 -5538 4 20.31 264.49 -35.67 0.54 5537 -5539 4 19.56 266.17 -35.52 0.54 5538 -5540 4 18.81 267.63 -35.38 0.54 5539 -5541 4 18.32 268.68 -35.29 0.54 5540 -5542 4 17.79 269.93 -35.17 0.54 5541 -5543 4 17.69 271.43 -35.02 0.54 5542 -5544 4 17.64 272.29 -34.93 0.54 5543 -5545 4 17.8 273.16 -34.84 0.54 5544 -5546 4 17.71 274.66 -34.68 0.54 5545 -5547 4 17.82 276.39 -34.5 0.54 5546 -5548 4 17.75 277.45 -34.39 0.54 5547 -5549 4 16.37 278.66 -34.3 0.54 5548 -5550 4 15.86 279.71 -34.2 0.54 5549 -5551 4 14.91 281.16 -34.08 0.54 5550 -5552 4 13.53 282.35 -33.99 0.54 5551 -5553 4 13.23 282.82 -32.22 0.54 5552 -5554 4 12.87 283.44 -32.08 0.65 5553 -5555 4 12.99 284.95 -31.92 0.65 5554 -5556 4 12.9 286.45 -31.77 0.865 5555 -5557 4 13.01 288.18 -31.58 0.865 5556 -5558 4 13.31 290.14 -31.38 0.865 5557 -5559 4 13.44 291.65 -31.22 0.865 5558 -5560 4 13.55 293.16 -31.06 0.865 5559 -5561 4 13.52 293.6 -31.01 0.865 5560 -5562 4 12.83 294.19 -30.97 0.865 5561 -5563 4 11.9 295.21 -30.88 0.54 5562 -5564 4 11.62 296.27 -30.78 0.76 5563 -5565 4 10.47 297.28 -30.7 0.76 5564 -5566 4 9.96 298.32 -30.61 0.76 5565 -5567 4 9.23 299.56 -30.5 0.65 5566 -5568 4 7.86 300.78 -30.4 0.65 5567 -5569 4 7.34 302.03 -30.29 0.65 5568 -5570 4 6.36 303.7 -30.14 0.65 5569 -5571 4 6.28 304.98 -30.01 0.65 5570 -5572 4 4.84 306.46 -28.38 0.65 5571 -5573 4 3.46 307.67 -28.29 0.65 5572 -5574 4 2.76 308.22 -27.79 0.65 5573 -5575 4 2.71 308.55 -26.78 0.65 5574 -5576 4 2.2 309.51 -25.87 0.65 5575 -5577 4 2.08 311.2 -25.47 0.65 5576 -5578 4 1.07 313.3 -25.28 0.65 5577 -5579 4 0.53 314.97 -25.05 0.65 5578 -5580 4 0.44 315.97 -24.26 0.65 5579 -5581 4 -0.94 317.37 -23.85 0.65 5580 -5582 4 -2.36 318.97 -23.41 0.65 5581 -5583 4 -2.91 320.61 -22.73 0.65 5582 -5584 4 -3.02 322.03 -21.84 0.65 5583 -5585 4 -4.45 323.85 -21.38 0.65 5584 -5586 4 -5.83 325.02 -21.06 0.65 5585 -5587 4 -6.99 326.03 -20.91 0.65 5586 -5588 4 -7.04 326.65 -20.7 0.65 5587 -5589 4 -7.98 327.89 -20.59 0.65 5588 -5590 4 -8.05 328.91 -20.04 0.65 5589 -5591 4 -8.15 330.13 -19.24 0.65 5590 -5592 4 -8.02 331.23 -18.82 0.65 5591 -5593 4 -8.08 331.81 -18.16 0.65 5592 -5594 4 -8.15 332.61 -17.62 0.65 5593 -5595 4 -8.23 333.62 -16.92 0.65 5594 -5596 4 -8.79 335.49 -16.35 0.65 5595 -5597 4 -9.29 336.5 -15.96 0.65 5596 -5598 4 -10.29 338.34 -15.49 0.65 5597 -5599 4 -10.35 339.15 -14.96 0.65 5598 -5600 4 -10.87 340.4 -14.69 0.65 5599 -5601 4 -12.29 342.24 -14.46 0.65 5600 -5602 4 -13.48 343.64 -14.04 0.65 5601 -5603 4 -14.39 344.2 -13.63 0.65 5602 -5604 4 -14.69 345.19 -12.93 0.65 5603 -5605 4 -15.23 346.86 -12.55 0.65 5604 -5606 4 -15.13 348.58 -12.28 0.65 5605 -5607 4 -15.69 350.22 -11.69 0.65 5606 -5608 4 -16.9 352.03 -11.07 0.65 5607 -5609 4 -17.39 352.56 -10.13 0.65 5608 -5610 4 -18.55 353.54 -9.82 0.65 5609 -5611 4 -19.71 354.75 -9.65 0.65 5610 -5612 4 -19.78 355.32 -8.84 0.65 5611 -5613 4 -20.29 356.3 -8.07 0.65 5612 -5614 4 -20.38 357.3 -7.29 0.65 5613 -5615 4 -20.9 358.51 -6.8 0.65 5614 -5616 4 -21.63 359.5 -6.34 0.65 5615 -5617 4 -22.57 360.46 -5.66 0.65 5616 -5618 4 -23.53 361.65 -5.11 0.65 5617 -5619 4 -24.03 362.65 -4.64 0.65 5618 -5620 4 -24.1 363.46 -4.03 0.65 5619 -5621 4 -24.87 365.08 -3.36 0.65 5620 -5622 4 -25.42 366.51 -2.84 0.65 5621 -5623 4 -26.14 366.97 -1.38 0.65 5622 -5624 4 -26.65 368.24 -1.26 0.65 5623 -5625 4 -27.14 368.73 -0.09 0.65 5624 -5626 4 -27.24 369.72 0.76 0.65 5625 -5627 4 -27.36 371.37 1.67 0.65 5626 -5628 4 -27.45 372.63 1.95 0.65 5627 -5629 4 -28.21 373.99 3.06 0.65 5628 -5630 4 -28.73 375.25 3.18 0.65 5629 -5631 4 -30.1 375.97 3.74 0.65 5630 -5632 4 -31.5 376.83 5.16 0.65 5631 -5633 4 -32.39 377.2 5.25 0.65 5632 -5634 4 -33.59 379.06 5.42 0.65 5633 -5635 4 -33.05 380.82 5.61 0.65 5634 -5636 4 -32.69 381.85 5.8 0.54 5635 -5637 4 -32.09 382.23 6.69 0.54 5636 -5638 4 -31.98 383.44 7.71 0.54 5637 -5639 4 -31.83 384.22 8.55 0.54 5638 -5640 4 -32.82 385.83 9.29 0.54 5639 -5641 4 -33.32 386.84 9.69 0.54 5640 -5642 4 -33.43 388.04 10.64 0.54 5641 -5643 4 -33.51 389.07 11.2 0.54 5642 -5644 4 -33.84 390.75 11.44 0.54 5643 -5645 4 -33.91 391.81 11.7 0.54 5644 -5646 4 -33.78 392.52 13.36 0.54 5645 -5647 4 -34.06 393.33 13.81 0.54 5646 -5648 4 -35.05 394.9 14.85 0.54 5647 -5649 4 -35.81 396.05 15.86 0.54 5648 -5650 4 -36.56 397.22 16.72 0.54 5649 -5651 4 -37.24 397.82 16.83 0.54 5650 -5652 4 -37.95 398.37 17.33 0.54 5651 -5653 4 -38.22 399.17 17.79 0.54 5652 -5654 4 -38.72 399.95 18.46 0.54 5653 -5655 4 -38.78 400.55 18.82 0.54 5654 -5656 4 -38.89 401.98 19.79 0.54 5655 -5657 4 -39.18 402.49 20.89 0.54 5656 -5658 4 -39.72 403.64 22.21 0.54 5657 -5659 4 -40.72 404.91 23.97 0.54 5658 -5660 4 -41.89 406.33 24.24 0.54 5659 -5661 4 -42.64 407.24 25.45 0.54 5660 -5662 4 -43.11 407.62 25.7 0.54 5661 -5663 4 -43.59 407.96 26.33 0.54 5662 -5664 4 -44.26 408.32 26.72 0.54 5663 -5665 4 -44.95 408.67 27.05 0.54 5664 -5666 4 -45.66 409.44 27.63 0.54 5665 -5667 4 -46.57 409.76 28.18 0.54 5666 -5668 4 -47.26 410.12 28.42 0.54 5667 -5669 4 -47.94 410.72 28.55 0.54 5668 -5670 4 -49.04 410.85 28.68 0.54 5669 -5671 4 23.1 261.64 -35.75 1.735 5535 -5672 4 23.43 262.39 -37.18 1.735 5671 -5673 4 23.38 263.57 -38.11 1.735 5672 -5674 4 23.64 264.48 -38.01 1.735 5673 -5675 4 24.05 264.17 -36.74 0.65 5674 -5676 4 24.7 263.88 -35.71 0.65 5675 -5677 4 25.3 264.57 -35.7 0.65 5676 -5678 4 25.72 264.48 -34.57 0.65 5677 -5679 4 26.13 264.46 -34.03 0.65 5678 -5680 4 27.13 265.27 -32.95 0.65 5679 -5681 4 27.31 265.69 -32.6 0.65 5680 -5682 4 27.73 265.65 -31.99 0.65 5681 -5683 4 27.91 266.03 -31.34 0.65 5682 -5684 4 27.89 265.96 -30.68 0.65 5683 -5685 4 28.3 265.91 -29.99 0.65 5684 -5686 4 28.26 266.28 -29.28 0.65 5685 -5687 4 29.29 267.16 -28.78 0.65 5686 -5688 4 29.68 267.55 -28.06 0.65 5687 -5689 4 30.02 268.82 -27.61 0.65 5688 -5690 4 30.38 269.67 -27.07 0.65 5689 -5691 4 30.75 270.52 -26.67 0.65 5690 -5692 4 31.13 271.14 -26.14 0.65 5691 -5693 4 31.52 271.78 -25.76 0.65 5692 -5694 4 31.7 272.2 -25.42 0.65 5693 -5695 4 32.28 273.05 -24.93 0.65 5694 -5696 4 33.06 274.35 -24.33 0.65 5695 -5697 4 33.64 275.21 -23.93 0.65 5696 -5698 4 34.17 276.94 -23.51 0.65 5697 -5699 4 34.76 278.02 -23.23 0.65 5698 -5700 4 35.08 279.53 -22.85 0.65 5699 -5701 4 36.24 281.75 -22.51 0.65 5700 -5702 4 37.42 283.54 -22.3 0.65 5701 -5703 4 39.89 285.62 -21.95 0.65 5702 -5704 4 41.54 287.02 -21.77 0.65 5703 -5705 4 42.13 287.9 -21.58 0.65 5704 -5706 4 42.53 288.57 -21.43 0.65 5705 -5707 4 44.27 291.68 -20.99 0.65 5706 -5708 4 45.89 293.48 -20.7 0.65 5707 -5709 4 46.89 295.09 -21.03 0.65 5708 -5710 4 47.87 296.67 -20.84 0.65 5709 -5711 4 48.65 297.67 -19.59 0.65 5710 -5712 4 49.63 298.65 -17.88 0.65 5711 -5713 4 50.8 300.66 -17.64 0.65 5712 -5714 4 52.16 302.88 -17.31 0.65 5713 -5715 4 53.49 305.69 -16.31 0.65 5714 -5716 4 55.72 307.97 -15.95 0.65 5715 -5717 4 56.91 309.76 -15.73 0.65 5716 -5718 4 58.53 311.8 -15.48 0.65 5717 -5719 4 60.98 314.1 -15.19 0.65 5718 -5720 4 61.76 314.65 -13.68 0.65 5719 -5721 4 62.58 315.56 -13.57 0.65 5720 -5722 4 64.04 316.51 -13.44 0.65 5721 -5723 4 64.8 317.81 -12.9 0.65 5722 -5724 4 65.38 318.91 -12.71 0.65 5723 -5725 4 66.61 320.06 -12.56 0.65 5724 -5726 4 68.26 321.45 -12.37 0.65 5725 -5727 4 69.25 323.01 -12.19 0.65 5726 -5728 4 70.18 325.22 -11.94 0.65 5727 -5729 4 71.18 326.58 -11.77 0.65 5728 -5730 4 72.81 328.39 -11.47 0.65 5729 -5731 4 74.19 330.4 -11.08 0.65 5730 -5732 4 75.33 332.55 -10.22 0.65 5731 -5733 4 75.43 334.5 -10.02 0.65 5732 -5734 4 76.29 337.72 -9.21 0.65 5733 -5735 4 76.35 340.09 -8.9 0.65 5734 -5736 4 77.43 343.6 -8.51 0.65 5735 -5737 4 78.93 346.81 -7.08 0.65 5736 -5738 4 79.42 349.21 -6.82 0.65 5737 -5739 4 79.93 351.59 -6.49 0.65 5738 -5740 4 80.73 352.51 -6.37 0.65 5739 -5741 4 81.71 354.07 -6.19 0.65 5740 -5742 4 82.85 356.72 -5.89 0.65 5741 -5743 4 83.26 360.41 -5.49 0.65 5742 -5744 4 84.34 363.91 -5.11 0.65 5743 -5745 4 85.32 365.95 -5.4 0.65 5744 -5746 4 86.98 367.17 -5.54 0.65 5745 -5747 4 87.81 368.14 -6.09 0.65 5746 -5748 4 87.98 369.09 -6.75 0.65 5747 -5749 4 88.17 369.78 -7.12 0.65 5748 -5750 4 89.0 371.3 -8.61 0.65 5749 -5751 4 23.56 265.03 -39.61 1.735 5674 -5752 4 23.87 267.3 -40.43 1.41 5751 -5753 4 24.22 269.42 -41.78 1.19 5752 -5754 4 24.58 271.04 -42.51 1.19 5753 -5755 4 24.74 272.44 -43.26 1.19 5754 -5756 4 24.99 273.38 -43.16 1.19 5755 -5757 4 25.4 273.84 -43.1 1.19 5756 -5758 4 25.55 274.68 -42.78 0.54 5757 -5759 4 25.53 275.13 -42.89 0.54 5758 -5760 4 25.71 274.98 -41.32 0.54 5759 -5761 4 26.32 275.7 -41.68 0.54 5760 -5762 4 26.52 276.14 -41.63 0.54 5761 -5763 4 26.9 276.82 -41.62 0.54 5762 -5764 4 27.05 277.63 -40.93 0.54 5763 -5765 4 27.01 277.98 -40.15 0.54 5764 -5766 4 27.2 278.18 -39.83 0.54 5765 -5767 4 27.37 278.52 -38.88 0.54 5766 -5768 4 27.56 278.94 -38.45 0.54 5767 -5769 4 27.7 279.75 -37.84 0.54 5768 -5770 4 27.85 280.55 -37.15 0.54 5769 -5771 4 27.78 281.61 -36.89 0.76 5770 -5772 4 27.9 282.61 -35.95 0.65 5771 -5773 4 27.85 282.92 -34.72 0.65 5772 -5774 4 27.84 282.88 -34.35 0.65 5773 -5775 4 27.79 283.23 -33.56 0.65 5774 -5776 4 27.72 284.02 -32.72 0.65 5775 -5777 4 27.36 286.11 -32.21 0.76 5776 -5778 4 27.25 287.29 -31.12 0.76 5777 -5779 4 26.75 288.28 -30.43 0.76 5778 -5780 4 26.66 289.31 -29.94 0.76 5779 -5781 4 26.8 290.36 -29.45 0.76 5780 -5782 4 26.9 292.02 -28.68 0.76 5781 -5783 4 26.78 293.72 -28.35 0.76 5782 -5784 4 27.11 295.46 -28.16 0.76 5783 -5785 4 27.46 296.51 -27.6 0.76 5784 -5786 4 28.64 298.26 -26.93 0.76 5785 -5787 4 29.17 299.99 -26.44 0.76 5786 -5788 4 29.29 301.25 -26.09 0.76 5787 -5789 4 29.59 303.41 -25.62 0.76 5788 -5790 4 28.98 305.94 -25.31 0.76 5789 -5791 4 28.41 308.06 -25.1 0.76 5790 -5792 4 28.7 310.21 -24.79 0.76 5791 -5793 4 29.24 312.18 -24.5 0.76 5792 -5794 4 30.0 313.67 -24.25 0.65 5793 -5795 4 31.77 316.57 -23.91 0.65 5794 -5796 4 32.93 318.79 -23.65 0.65 5795 -5797 4 34.26 321.67 -23.32 0.65 5796 -5798 4 35.05 323.0 -23.17 0.65 5797 -5799 4 35.16 324.73 -22.98 0.65 5798 -5800 4 34.62 326.2 -22.85 0.65 5799 -5801 4 33.58 328.93 -22.52 0.65 5800 -5802 4 32.2 333.37 -22.09 0.65 5801 -5803 4 31.87 335.49 -21.88 0.65 5802 -5804 4 31.97 337.0 -21.72 0.65 5803 -5805 4 32.06 339.16 -21.49 0.65 5804 -5806 4 32.39 340.69 -21.33 0.65 5805 -5807 4 32.46 343.06 -21.08 0.65 5806 -5808 4 32.28 345.84 -20.8 0.65 5807 -5809 4 31.76 347.32 -20.66 0.65 5808 -5810 4 31.24 348.57 -20.54 0.65 5809 -5811 4 31.18 349.43 -20.45 0.65 5810 -5812 4 30.84 351.02 -19.24 0.54 5811 -5813 4 31.16 352.76 -19.05 0.54 5812 -5814 4 31.91 354.53 -18.85 0.54 5813 -5815 4 32.28 355.64 -18.8 0.54 5814 -5816 4 32.42 356.93 -18.66 0.54 5815 -5817 4 32.34 358.0 -18.55 0.54 5816 -5818 4 32.29 358.86 -18.47 0.54 5817 -5819 4 31.76 360.33 -18.33 0.54 5818 -5820 4 32.45 362.96 -18.04 0.54 5819 -5821 4 33.01 364.49 -17.87 0.54 5820 -5822 4 33.75 366.49 -17.64 0.54 5821 -5823 4 34.9 368.91 -17.36 0.54 5822 -5824 4 35.9 370.26 -17.2 0.54 5823 -5825 4 36.27 371.15 -17.1 0.54 5824 -5826 4 36.23 371.79 -17.03 0.54 5825 -5827 4 36.28 374.37 -16.77 0.54 5826 -5828 4 35.69 376.91 -16.52 0.54 5827 -5829 4 36.2 379.1 -16.28 0.54 5828 -5830 4 37.1 381.95 -15.96 0.54 5829 -5831 4 38.04 384.15 -15.71 0.54 5830 -5832 4 38.75 386.26 -14.57 0.54 5831 -5833 4 39.93 388.27 -14.34 0.54 5832 -5834 4 40.65 390.46 -14.02 0.435 5833 -5835 4 41.41 391.98 -13.62 0.435 5834 -5836 4 41.94 393.7 -13.05 0.435 5835 -5837 4 41.83 395.15 -12.45 0.435 5836 -5838 4 42.49 398.41 -12.02 0.435 5837 -5839 4 43.63 400.84 -11.67 0.435 5838 -5840 4 44.36 403.24 -11.4 0.435 5839 -5841 4 44.69 404.78 -11.24 0.435 5840 -5842 4 44.98 406.94 -11.01 0.435 5841 -5843 4 44.87 408.65 -10.75 0.435 5842 -5844 4 45.18 410.61 -10.54 0.435 5843 -5845 4 45.88 413.23 -10.26 0.435 5844 -5846 4 47.67 415.71 -9.96 0.435 5845 -5847 4 48.69 416.84 -9.82 0.435 5846 -5848 4 48.63 417.91 -9.71 0.435 5847 -5849 4 48.71 419.63 -9.38 0.435 5848 -5850 4 49.03 421.58 -9.1 0.435 5849 -5851 4 50.44 423.16 -8.82 0.435 5850 -5852 4 53.74 425.93 -8.45 0.435 5851 -5853 4 54.83 429.24 -8.09 0.435 5852 -5854 4 55.38 430.77 -7.91 0.435 5853 -5855 4 55.72 432.04 -7.33 0.435 5854 -5856 4 55.86 433.08 -6.77 0.435 5855 -5857 4 55.78 434.11 -6.28 0.435 5856 -5858 4 55.09 435.55 -7.96 0.435 5857 -5859 4 54.63 436.16 -7.98 0.435 5858 -5860 4 53.7 437.53 -9.21 0.435 5859 -5861 4 53.28 437.76 -9.65 0.435 5860 -5862 4 52.38 438.71 -10.86 0.435 5861 -5863 4 51.26 440.11 -12.55 0.435 5862 -5864 4 50.59 441.31 -14.18 0.435 5863 -5865 4 49.21 443.34 -15.73 0.435 5864 -5866 4 47.62 444.86 -16.67 0.435 5865 -5867 4 47.54 445.89 -16.26 0.435 5866 -5868 4 46.84 446.99 -16.69 0.435 5867 -5869 4 46.54 448.01 -16.29 0.435 5868 -5870 4 46.73 448.43 -16.1 0.435 5869 -5871 4 46.72 449.17 -16.84 0.435 5870 -5872 4 46.45 450.35 -17.94 0.435 5871 -5873 4 46.4 451.22 -18.07 0.435 5872 -5874 4 45.74 451.94 -19.14 0.435 5873 -5875 4 45.25 453.3 -19.99 0.435 5874 -5876 4 45.25 453.85 -20.99 0.435 5875 -5877 4 43.92 454.97 -22.26 0.435 5876 -5878 4 44.24 456.76 -22.52 0.435 5877 -5879 4 42.85 458.73 -23.56 0.435 5878 -5880 4 42.56 460.57 -24.65 0.435 5879 -5881 4 42.88 462.31 -24.54 0.435 5880 -5882 4 43.59 465.49 -25.33 0.435 5881 -5883 4 44.93 468.16 -25.1 0.435 5882 -5884 4 45.62 470.99 -24.79 0.435 5883 -5885 4 46.91 474.68 -24.53 0.435 5884 -5886 4 47.97 478.4 -24.12 0.435 5885 -5887 4 50.13 481.98 -23.7 0.435 5886 -5888 4 52.83 487.3 -23.08 0.435 5887 -5889 4 55.67 490.27 -22.71 0.435 5888 -5890 4 57.08 491.86 -22.51 0.435 5889 -5891 4 59.46 495.96 -22.85 0.435 5890 -5892 4 61.33 497.44 -23.26 0.435 5891 -5893 4 62.37 498.44 -24.04 0.435 5892 -5894 4 64.34 501.8 -23.79 0.435 5893 -5895 4 65.3 502.99 -21.99 0.435 5894 -5896 4 65.63 504.45 -21.31 0.435 5895 -5897 4 66.65 505.4 -21.25 0.435 5896 -5898 4 67.2 506.94 -21.16 0.435 5897 -5899 4 67.75 508.48 -20.99 0.435 5898 -5900 4 68.32 509.8 -20.84 0.435 5899 -5901 4 68.65 511.06 -20.1 0.435 5900 -5902 4 68.8 512.08 -19.54 0.435 5901 -5903 4 68.76 512.5 -19.26 0.435 5902 -5904 4 68.74 513.22 -20.02 0.435 5903 -5905 4 68.72 513.99 -21.14 0.435 5904 -5906 4 68.29 514.99 -22.86 0.435 5905 -5907 4 68.3 515.31 -23.81 0.435 5906 -5908 4 68.27 516.04 -24.49 0.435 5907 -5909 4 68.2 517.37 -24.81 0.435 5908 -5910 4 68.14 518.5 -25.21 0.435 5909 -5911 4 67.33 521.04 -25.12 0.435 5910 -5912 4 67.04 522.62 -25.87 0.435 5911 -5913 4 67.62 524.04 -26.61 0.435 5912 -5914 4 68.19 525.07 -25.66 0.435 5913 -5915 4 68.57 526.53 -26.94 0.435 5914 -5916 4 68.76 527.5 -27.89 0.435 5915 -5917 4 69.37 528.5 -28.75 0.435 5916 -5918 4 69.77 529.73 -29.9 0.435 5917 -5919 4 70.22 530.08 -30.97 0.435 5918 -5920 4 70.75 532.12 -31.5 0.435 5919 -5921 4 70.64 534.61 -32.38 0.435 5920 -5922 4 71.39 536.69 -33.2 0.435 5921 -5923 4 71.73 538.48 -33.46 0.435 5922 -5924 4 72.67 541.21 -34.06 0.435 5923 -5925 4 72.8 542.77 -34.35 0.435 5924 -5926 4 71.81 545.17 -35.18 0.435 5925 -5927 4 71.71 546.68 -35.09 0.435 5926 -5928 4 71.83 548.68 -35.42 0.435 5927 -5929 4 71.94 550.45 -35.68 0.435 5928 -5930 4 64.14 504.21 -21.89 0.435 5895 -5931 4 64.08 505.07 -21.95 0.435 5930 -5932 4 63.6 505.68 -21.75 0.435 5931 -5933 4 64.15 506.63 -19.98 0.435 5932 -5934 4 64.05 507.57 -18.76 0.435 5933 -5935 4 63.68 509.33 -17.0 0.435 5934 -5936 4 62.73 510.02 -15.82 0.435 5935 -5937 4 62.51 509.99 -15.68 0.435 5936 -5938 4 61.42 509.6 -14.77 0.435 5937 -5939 4 60.34 509.57 -15.02 0.435 5938 -5940 4 59.91 509.53 -14.88 0.435 5939 -5941 4 29.75 351.27 -20.3 0.54 5811 -5942 4 29.28 352.11 -20.22 0.54 5941 -5943 4 29.22 352.68 -19.48 0.54 5942 -5944 4 29.16 352.99 -18.32 0.54 5943 -5945 4 29.09 353.79 -17.56 0.54 5944 -5946 4 29.4 355.21 -16.43 0.54 5945 -5947 4 29.58 355.84 -16.06 0.54 5946 -5948 4 29.47 357.04 -15.11 0.54 5947 -5949 4 29.84 357.87 -14.63 0.54 5948 -5950 4 29.76 358.9 -14.01 0.54 5949 -5951 4 29.71 359.26 -13.37 0.54 5950 -5952 4 28.75 360.4 -12.29 0.54 5951 -5953 4 28.7 360.99 -11.77 0.54 5952 -5954 4 27.98 361.47 -10.53 0.54 5953 -5955 4 27.5 361.81 -9.84 0.54 5954 -5956 4 27.02 362.11 -8.84 0.54 5955 -5957 4 26.49 363.26 -7.68 0.54 5956 -5958 4 26.2 364.02 -6.85 0.54 5957 -5959 4 26.12 364.52 -5.37 0.54 5958 -5960 4 26.28 365.11 -4.63 0.54 5959 -5961 4 26.2 365.58 -2.92 0.54 5960 -5962 4 25.47 366.54 -2.01 0.54 5961 -5963 4 25.61 367.34 -1.32 0.54 5962 -5964 4 25.52 368.34 -0.47 0.54 5963 -5965 4 25.47 368.92 0.18 0.54 5964 -5966 4 24.03 370.93 0.81 0.54 5965 -5967 4 23.55 371.52 1.16 0.54 5966 -5968 4 22.6 372.48 1.84 0.54 5967 -5969 4 21.68 373.0 2.48 0.54 5968 -5970 4 21.24 372.96 2.61 0.54 5969 -5971 4 19.84 374.27 3.24 0.54 5970 -5972 4 18.95 374.15 3.89 0.54 5971 -5973 4 18.7 374.48 4.67 0.54 5972 -5974 4 17.53 375.13 6.07 0.54 5973 -5975 4 17.49 375.25 7.06 0.54 5974 -5976 4 17.43 376.06 7.52 0.54 5975 -5977 4 17.62 376.23 8.22 0.54 5976 -5978 4 17.56 376.82 8.88 0.54 5977 -5979 4 17.51 377.66 8.97 0.54 5978 -5980 4 17.63 378.93 9.32 0.54 5979 -5981 4 17.78 380.0 9.67 0.54 5980 -5982 4 17.1 380.35 9.99 0.54 5981 -5983 4 16.64 380.75 10.17 0.54 5982 -5984 4 15.92 381.27 10.96 0.54 5983 -5985 4 15.23 381.86 11.23 0.54 5984 -5986 4 14.3 382.63 11.51 0.54 5985 -5987 4 13.98 384.06 12.11 0.54 5986 -5988 4 12.77 385.63 13.15 0.54 5987 -5989 4 12.73 385.99 13.79 0.54 5988 -5990 4 12.2 387.19 14.5 0.54 5989 -5991 4 11.27 387.95 15.0 0.54 5990 -5992 4 11.22 388.55 15.59 0.54 5991 -5993 4 10.51 389.08 16.24 0.54 5992 -5994 4 10.01 389.86 16.83 0.54 5993 -5995 4 9.52 390.67 17.05 0.54 5994 -5996 4 9.04 391.25 17.48 0.54 5995 -5997 4 8.57 391.6 17.96 0.54 5996 -5998 4 7.88 391.95 18.43 0.54 5997 -5999 4 7.39 392.76 18.65 0.54 5998 -6000 4 6.87 393.74 19.42 0.54 5999 -6001 4 6.34 394.9 20.58 0.54 6000 -6002 4 6.27 395.69 21.26 0.54 6001 -6003 4 6.43 396.3 21.78 0.54 6002 -6004 4 6.57 397.58 22.07 0.54 6003 -6005 4 6.48 398.57 22.93 0.54 6004 -6006 4 6.43 399.2 23.21 0.54 6005 -6007 4 5.04 400.33 23.98 0.54 6006 -6008 4 3.43 401.74 24.09 0.54 6007 -6009 4 3.35 402.8 24.19 0.54 6008 -6010 4 2.87 403.36 24.84 0.54 6009 -6011 4 3.0 404.6 25.58 0.54 6010 -6012 4 3.15 405.46 25.74 0.54 6011 -6013 4 3.08 406.27 26.28 0.54 6012 -6014 4 2.59 407.07 26.73 0.54 6013 -6015 4 2.05 408.49 27.39 0.54 6014 -6016 4 1.98 409.29 27.92 0.54 6015 -6017 4 1.93 409.89 28.5 0.54 6016 -6018 4 2.91 410.88 29.99 0.54 6017 -6019 4 3.43 412.3 31.43 0.54 6018 -6020 4 3.58 413.37 31.7 0.54 6019 -6021 4 3.68 414.82 32.37 0.54 6020 -6022 4 2.95 415.81 32.91 0.54 6021 -6023 4 1.76 417.17 33.71 0.54 6022 -6024 4 1.25 418.16 34.32 0.54 6023 -6025 4 0.73 419.13 35.08 0.54 6024 -6026 4 0.64 420.39 35.51 0.54 6025 -6027 4 0.55 421.35 36.67 0.54 6026 -6028 4 0.08 421.72 37.08 0.54 6027 -6029 4 0.2 422.94 37.88 0.54 6028 -6030 4 0.98 424.27 38.19 0.54 6029 -6031 4 1.17 424.16 39.38 0.54 6030 -6032 4 1.72 425.18 40.41 0.54 6031 -6033 4 2.03 426.31 42.26 0.54 6032 -6034 4 2.55 427.98 43.35 0.54 6033 -6035 4 2.95 428.35 44.08 0.54 6034 -6036 4 3.28 429.66 44.38 0.54 6035 -6037 4 3.67 430.28 44.82 0.54 6036 -6038 4 4.72 430.74 45.28 0.54 6037 -6039 4 5.06 431.83 46.0 0.54 6038 -6040 4 5.04 431.74 46.89 0.54 6039 -6041 4 5.43 431.63 48.17 0.54 6040 -6042 4 5.59 432.47 48.64 0.54 6041 -6043 4 5.98 432.84 49.37 0.54 6042 -6044 4 6.11 433.6 50.73 0.54 6043 -6045 4 6.7 434.17 51.85 0.54 6044 -6046 4 25.07 273.97 -43.1 1.19 5757 -6047 4 25.06 274.47 -43.87 1.19 6046 -6048 4 24.98 275.75 -43.74 1.19 6047 -6049 4 24.47 277.02 -43.62 1.19 6048 -6050 4 24.18 278.89 -45.02 1.19 6049 -6051 4 23.72 279.38 -44.98 1.19 6050 -6052 4 23.54 279.55 -46.77 0.54 6051 -6053 4 22.14 280.97 -46.66 0.54 6052 -6054 4 21.71 280.93 -46.52 0.76 6053 -6055 4 20.77 282.16 -46.41 0.76 6054 -6056 4 21.32 283.49 -46.26 0.76 6055 -6057 4 21.69 284.59 -46.22 0.76 6056 -6058 4 22.05 285.9 -46.08 0.76 6057 -6059 4 21.67 287.7 -44.69 0.435 6058 -6060 4 20.96 288.73 -44.6 0.435 6059 -6061 4 20.88 289.49 -43.62 0.435 6060 -6062 4 19.97 290.04 -43.13 0.435 6061 -6063 4 20.11 291.12 -42.95 0.435 6062 -6064 4 20.25 292.16 -42.61 0.435 6063 -6065 4 20.15 293.62 -42.01 0.435 6064 -6066 4 20.09 294.45 -41.55 0.435 6065 -6067 4 19.1 296.31 -41.3 0.435 6066 -6068 4 18.6 297.08 -40.63 0.435 6067 -6069 4 18.08 298.1 -40.23 0.435 6068 -6070 4 17.71 300.38 -39.4 0.435 6069 -6071 4 17.6 301.85 -39.03 0.435 6070 -6072 4 17.04 303.73 -38.55 0.435 6071 -6073 4 16.52 304.94 -38.06 0.435 6072 -6074 4 16.0 305.92 -37.37 0.435 6073 -6075 4 15.94 306.77 -37.05 0.435 6074 -6076 4 16.04 307.95 -35.87 0.435 6075 -6077 4 16.18 309.25 -35.74 0.435 6076 -6078 4 16.07 310.96 -35.49 0.435 6077 -6079 4 15.99 312.25 -35.36 0.435 6078 -6080 4 15.08 312.83 -35.32 0.435 6079 -6081 4 14.15 313.82 -34.94 0.435 6080 -6082 4 13.44 314.33 -34.07 0.435 6081 -6083 4 12.93 315.37 -33.82 0.435 6082 -6084 4 12.82 316.81 -33.07 0.435 6083 -6085 4 12.97 317.64 -32.68 0.435 6084 -6086 4 12.9 318.66 -32.05 0.435 6085 -6087 4 12.36 320.08 -31.47 0.435 6086 -6088 4 12.3 320.94 -31.3 0.435 6087 -6089 4 12.88 322.03 -30.95 0.435 6088 -6090 4 13.02 323.1 -30.76 0.435 6089 -6091 4 13.18 323.98 -30.66 0.435 6090 -6092 4 13.34 324.8 -30.13 0.435 6091 -6093 4 13.27 325.61 -29.67 0.435 6092 -6094 4 12.95 327.09 -29.45 0.435 6093 -6095 4 12.63 328.3 -28.73 0.435 6094 -6096 4 12.55 329.29 -27.79 0.435 6095 -6097 4 12.93 330.14 -27.33 0.435 6096 -6098 4 13.03 331.6 -26.72 0.435 6097 -6099 4 12.97 332.43 -26.4 0.435 6098 -6100 4 12.94 332.86 -26.21 0.435 6099 -6101 4 13.08 333.88 -25.65 0.435 6100 -6102 4 13.23 334.95 -25.38 0.435 6101 -6103 4 13.22 334.92 -25.08 0.435 6102 -6104 4 13.18 335.3 -24.52 0.435 6103 -6105 4 13.11 336.11 -23.99 0.435 6104 -6106 4 13.49 336.45 -22.82 0.435 6105 -6107 4 13.67 336.84 -22.32 0.435 6106 -6108 4 13.81 337.65 -21.55 0.435 6107 -6109 4 13.96 338.45 -20.79 0.435 6108 -6110 4 14.12 339.31 -20.62 0.435 6109 -6111 4 13.15 340.74 -20.34 0.435 6110 -6112 4 13.31 341.59 -19.95 0.435 6111 -6113 4 12.79 342.32 -18.98 0.435 6112 -6114 4 12.08 343.34 -18.74 0.435 6113 -6115 4 12.02 343.94 -18.38 0.435 6114 -6116 4 12.4 344.81 -18.06 0.435 6115 -6117 4 12.53 346.1 -17.84 0.435 6116 -6118 4 12.49 346.49 -17.43 0.435 6117 -6119 4 12.68 346.93 -17.3 0.435 6118 -6120 4 23.88 280.73 -46.27 1.19 6051 -6121 4 23.8 282.02 -46.14 1.19 6120 -6122 4 24.18 283.73 -47.76 1.19 6121 -6123 4 23.93 284.24 -47.71 1.19 6122 -6124 4 24.54 285.07 -47.92 1.19 6123 -6125 4 24.75 285.61 -48.91 1.19 6124 -6126 4 24.73 286.62 -50.23 1.19 6125 -6127 4 24.24 288.08 -51.45 0.76 6126 -6128 4 23.77 289.26 -52.62 0.975 6127 -6129 4 22.84 291.08 -54.11 0.975 6128 -6130 4 22.32 292.88 -54.92 0.975 6129 -6131 4 22.28 294.06 -56.0 0.975 6130 -6132 4 22.27 294.85 -57.27 0.975 6131 -6133 4 22.43 295.98 -57.61 0.975 6132 -6134 4 23.01 297.66 -58.78 0.975 6133 -6135 4 23.58 299.53 -59.78 0.975 6134 -6136 4 24.17 300.95 -60.52 0.975 6135 -6137 4 24.3 302.04 -60.4 0.975 6136 -6138 4 24.05 303.4 -61.24 0.975 6137 -6139 4 23.55 304.79 -62.25 0.975 6138 -6140 4 23.07 306.17 -63.39 0.975 6139 -6141 4 22.15 307.54 -64.56 0.975 6140 -6142 4 21.22 309.11 -65.62 0.975 6141 -6143 4 20.31 310.26 -66.81 0.975 6142 -6144 4 19.35 312.0 -67.48 0.975 6143 -6145 4 18.4 313.99 -68.43 0.975 6144 -6146 4 18.14 315.18 -69.59 0.975 6145 -6147 4 17.65 316.26 -69.79 0.865 6146 -6148 4 17.4 317.49 -71.33 0.865 6147 -6149 4 17.34 318.61 -71.67 0.865 6148 -6150 4 17.65 320.56 -71.53 0.865 6149 -6151 4 18.23 322.23 -72.63 0.865 6150 -6152 4 18.59 323.55 -72.48 0.865 6151 -6153 4 19.17 324.66 -72.35 0.865 6152 -6154 4 19.57 325.67 -73.52 0.865 6153 -6155 4 19.49 326.96 -73.39 0.865 6154 -6156 4 19.0 328.54 -74.36 0.865 6155 -6157 4 18.04 329.78 -74.25 0.865 6156 -6158 4 17.54 331.38 -75.31 0.865 6157 -6159 4 17.01 333.39 -76.25 0.865 6158 -6160 4 17.18 334.26 -76.15 0.865 6159 -6161 4 17.7 336.24 -76.01 0.865 6160 -6162 4 17.68 337.23 -77.26 0.865 6161 -6163 4 18.05 338.95 -78.89 0.865 6162 -6164 4 18.21 340.34 -79.64 0.865 6163 -6165 4 18.14 341.68 -80.03 0.865 6164 -6166 4 17.88 342.83 -80.82 0.865 6165 -6167 4 17.86 343.85 -82.31 0.865 6166 -6168 4 17.82 345.06 -83.54 0.865 6167 -6169 4 17.55 346.43 -84.3 0.865 6168 -6170 4 17.5 347.57 -85.02 0.865 6169 -6171 4 16.56 348.85 -85.28 0.865 6170 -6172 4 16.07 350.2 -86.06 0.865 6171 -6173 4 15.34 352.02 -87.24 0.865 6172 -6174 4 14.82 353.82 -88.2 0.865 6173 -6175 4 14.52 355.6 -88.92 0.865 6174 -6176 4 14.69 356.56 -89.5 0.865 6175 -6177 4 14.85 358.18 -90.46 0.865 6176 -6178 4 15.41 358.73 -90.84 1.085 6177 -6179 4 16.01 359.36 -90.24 1.085 6178 -6180 4 16.63 360.66 -91.82 1.085 6179 -6181 4 17.24 361.91 -93.1 1.085 6180 -6182 4 17.68 362.51 -94.47 1.085 6181 -6183 4 18.09 363.26 -95.21 1.085 6182 -6184 4 18.3 363.8 -96.05 1.085 6183 -6185 4 18.57 363.98 -96.71 0.975 6184 -6186 4 18.89 364.43 -97.11 1.085 6185 -6187 4 20.61 365.32 -98.4 0.865 6186 -6188 4 21.66 366.12 -99.2 0.76 6187 -6189 4 22.49 367.37 -100.18 0.76 6188 -6190 4 23.14 367.67 -100.58 0.65 6189 -6191 4 23.59 367.52 -100.97 0.65 6190 -6192 4 24.48 367.15 -100.99 0.65 6191 -6193 4 25.35 367.2 -100.96 0.65 6192 -6194 4 26.06 366.9 -102.03 0.65 6193 -6195 4 27.52 367.65 -101.92 0.65 6194 -6196 4 28.62 368.09 -103.43 0.65 6195 -6197 4 29.49 368.42 -104.05 0.65 6196 -6198 4 31.18 369.75 -105.38 0.65 6197 -6199 4 32.48 370.4 -106.64 0.65 6198 -6200 4 34.19 370.94 -106.54 0.65 6199 -6201 4 36.2 370.49 -107.29 0.65 6200 -6202 4 37.67 371.01 -107.2 0.65 6201 -6203 4 39.8 372.33 -108.14 0.65 6202 -6204 4 42.52 374.0 -107.91 0.65 6203 -6205 4 44.19 375.52 -109.07 0.65 6204 -6206 4 47.21 376.51 -110.4 0.65 6205 -6207 4 49.54 377.51 -110.24 0.65 6206 -6208 4 51.91 378.44 -111.53 0.65 6207 -6209 4 53.85 379.36 -112.89 0.65 6208 -6210 4 55.73 380.56 -112.72 0.65 6209 -6211 4 56.29 381.92 -113.02 0.65 6210 -6212 4 56.51 382.16 -113.07 0.65 6211 -6213 4 56.69 382.91 -113.89 0.65 6212 -6214 4 56.91 383.44 -114.73 0.65 6213 -6215 4 57.12 384.21 -115.71 0.65 6214 -6216 4 57.12 384.8 -117.15 0.65 6215 -6217 4 57.14 384.88 -117.97 0.65 6216 -6218 4 57.14 385.14 -118.55 0.65 6217 -6219 4 57.13 385.64 -119.17 0.65 6218 -6220 4 57.31 386.34 -119.47 0.65 6219 -6221 4 57.29 387.11 -120.6 0.65 6220 -6222 4 57.48 387.85 -121.27 0.65 6221 -6223 4 57.7 388.4 -122.34 0.65 6222 -6224 4 58.07 389.78 -122.86 0.65 6223 -6225 4 58.52 389.9 -123.82 0.65 6224 -6226 4 58.95 390.42 -124.36 0.65 6225 -6227 4 59.54 391.6 -124.98 0.65 6226 -6228 4 59.93 392.56 -125.48 0.65 6227 -6229 4 60.59 392.63 -125.75 0.65 6228 -6230 4 61.26 392.78 -126.78 0.65 6229 -6231 4 61.71 392.87 -127.43 0.65 6230 -6232 4 62.38 393.01 -128.31 0.65 6231 -6233 4 62.8 393.51 -128.7 0.65 6232 -6234 4 62.99 394.27 -129.67 0.65 6233 -6235 4 63.18 395.23 -130.47 0.65 6234 -6236 4 62.7 396.08 -130.62 0.65 6235 -6237 4 62.67 396.82 -131.45 0.65 6236 -6238 4 62.85 397.77 -132.18 0.65 6237 -6239 4 63.43 399.16 -132.61 0.65 6238 -6240 4 63.42 399.66 -133.25 0.65 6239 -6241 4 64.45 400.85 -133.62 0.65 6240 -6242 4 64.87 401.65 -134.82 0.65 6241 -6243 4 65.71 402.42 -135.47 0.65 6242 -6244 4 66.81 403.1 -137.18 0.65 6243 -6245 4 67.66 403.67 -137.93 0.65 6244 -6246 4 68.96 404.04 -138.61 0.65 6245 -6247 4 69.74 405.63 -138.88 0.65 6246 -6248 4 70.81 406.19 -139.4 0.65 6247 -6249 4 71.86 407.23 -140.4 0.65 6248 -6250 4 72.65 408.33 -139.96 0.65 6249 -6251 4 73.03 409.19 -139.71 0.65 6250 -6252 4 73.64 409.66 -139.65 0.65 6251 -6253 4 17.2 365.25 -97.28 0.865 6185 -6254 4 16.5 366.08 -97.29 0.865 6253 -6255 4 16.03 366.97 -97.82 0.865 6254 -6256 4 15.58 367.94 -99.07 0.865 6255 -6257 4 15.3 369.59 -100.57 0.865 6256 -6258 4 14.84 370.27 -101.04 0.865 6257 -6259 4 14.38 371.26 -102.53 0.865 6258 -6260 4 14.78 372.76 -104.18 0.865 6259 -6261 4 15.14 373.55 -103.25 0.865 6260 -6262 4 15.73 374.75 -103.87 0.65 6261 -6263 4 15.25 375.54 -103.57 0.65 6262 -6264 4 15.25 375.85 -104.37 0.65 6263 -6265 4 15.25 376.1 -104.72 0.65 6264 -6266 4 15.02 376.57 -105.2 0.65 6265 -6267 4 15.2 377.28 -105.66 0.65 6266 -6268 4 14.76 377.77 -106.44 0.65 6267 -6269 4 14.76 378.6 -108.17 0.65 6268 -6270 4 14.75 379.09 -108.79 0.65 6269 -6271 4 14.74 379.58 -109.27 0.65 6270 -6272 4 14.73 379.83 -109.62 0.65 6271 -6273 4 14.95 380.39 -110.76 0.65 6272 -6274 4 15.37 380.92 -111.45 0.65 6273 -6275 4 15.56 381.37 -111.48 0.65 6274 -6276 4 16.18 382.37 -112.27 0.65 6275 -6277 4 16.39 382.88 -112.97 0.65 6276 -6278 4 16.57 383.62 -113.71 0.65 6277 -6279 4 16.55 384.62 -114.96 0.65 6278 -6280 4 16.55 385.18 -116.18 0.65 6279 -6281 4 16.56 385.76 -117.63 0.65 6280 -6282 4 16.59 386.14 -119.17 0.65 6281 -6283 4 16.6 386.74 -120.77 0.65 6282 -6284 4 16.61 387.1 -122.09 0.65 6283 -6285 4 16.6 387.83 -122.92 0.65 6284 -6286 4 16.63 387.96 -124.26 0.65 6285 -6287 4 16.21 388.54 -125.94 0.65 6286 -6288 4 16.22 389.13 -127.47 0.65 6287 -6289 4 16.23 389.73 -129.05 0.65 6288 -6290 4 16.22 390.53 -130.48 0.65 6289 -6291 4 16.2 391.22 -130.94 0.65 6290 -6292 4 15.75 391.96 -132.0 0.65 6291 -6293 4 15.77 392.32 -133.32 0.65 6292 -6294 4 15.76 393.08 -134.45 0.65 6293 -6295 4 15.31 393.82 -135.66 0.65 6294 -6296 4 14.8 395.38 -136.35 0.65 6295 -6297 4 14.06 396.62 -136.16 0.65 6296 -6298 4 13.1 398.29 -136.09 0.65 6297 -6299 4 11.94 399.82 -136.86 0.65 6298 -6300 4 11.41 401.81 -137.57 0.65 6299 -6301 4 10.48 403.39 -138.64 0.65 6300 -6302 4 9.92 405.82 -139.45 0.65 6301 -6303 4 8.96 407.61 -140.49 0.65 6302 -6304 4 8.04 410.54 -140.44 0.65 6303 -6305 4 7.22 413.91 -141.99 0.54 6304 -6306 4 6.69 415.63 -142.13 0.54 6305 -6307 4 6.49 418.84 -141.88 0.54 6306 -6308 4 5.33 423.29 -141.45 0.54 6307 -6309 4 5.45 425.3 -141.91 0.54 6308 -6310 4 4.76 429.13 -141.53 0.54 6309 -6311 4 3.92 432.09 -141.24 0.54 6310 -6312 4 3.52 435.08 -140.94 0.54 6311 -6313 4 2.56 439.97 -140.46 0.54 6312 -6314 4 1.01 444.29 -141.26 0.54 6313 -6315 4 0.41 446.84 -141.01 0.54 6314 -6316 4 -0.88 450.78 -141.99 0.54 6315 -6317 4 -0.83 453.86 -142.42 0.54 6316 -6318 4 -1.95 457.88 -142.1 0.54 6317 -6319 4 -3.85 460.35 -141.89 0.54 6318 -6320 4 -5.45 462.07 -142.74 0.54 6319 -6321 4 -6.5 464.81 -142.48 0.54 6320 -6322 4 -6.65 467.43 -142.73 0.54 6321 -6323 4 -6.75 469.37 -143.22 0.54 6322 -6324 4 -7.34 471.69 -142.91 0.54 6323 -6325 4 -7.7 474.33 -143.4 0.54 6324 -6326 4 -7.43 476.94 -143.2 0.54 6325 -6327 4 -7.16 479.52 -142.92 0.54 6326 -6328 4 -7.23 484.58 -143.54 0.54 6327 -6329 4 -8.41 489.46 -143.06 0.54 6328 -6330 4 -10.77 492.32 -142.82 0.54 6329 -6331 4 13.94 358.71 -90.57 0.65 6177 -6332 4 13.27 359.66 -91.85 0.65 6331 -6333 4 11.72 360.49 -92.33 0.65 6332 -6334 4 9.96 361.66 -94.21 0.435 6333 -6335 4 7.77 362.75 -95.8 0.435 6334 -6336 4 6.24 363.68 -97.18 0.435 6335 -6337 4 4.2 365.32 -97.58 0.435 6336 -6338 4 2.62 366.31 -97.67 0.435 6337 -6339 4 0.86 367.46 -99.32 0.435 6338 -6340 4 -1.39 368.83 -99.31 0.435 6339 -6341 4 -2.3 370.21 -100.55 0.435 6340 -6342 4 -2.78 371.63 -102.07 0.435 6341 -6343 4 -4.64 373.96 -102.48 0.435 6342 -6344 4 -6.0 375.27 -103.57 0.435 6343 -6345 4 -7.09 375.98 -104.66 0.435 6344 -6346 4 -8.41 377.16 -106.45 0.435 6345 -6347 4 -10.18 378.25 -107.59 0.435 6346 -6348 4 -11.29 379.14 -108.58 0.435 6347 -6349 4 -12.83 380.01 -109.58 0.435 6348 -6350 4 -14.42 381.25 -109.79 0.435 6349 -6351 4 -15.52 381.92 -110.8 0.435 6350 -6352 4 -16.7 383.36 -110.68 0.435 6351 -6353 4 -18.53 384.97 -110.63 0.435 6352 -6354 4 -19.95 386.82 -110.47 0.435 6353 -6355 4 -21.35 388.24 -110.36 0.435 6354 -6356 4 -22.49 389.25 -110.28 0.435 6355 -6357 4 -23.84 390.03 -110.23 0.435 6356 -6358 4 -25.45 391.44 -110.12 0.435 6357 -6359 4 -27.06 392.62 -110.04 0.435 6358 -6360 4 -28.23 394.06 -109.92 0.435 6359 -6361 4 -29.65 395.91 -109.76 0.435 6360 -6362 4 -30.41 396.78 -108.11 0.435 6361 -6363 4 -31.37 397.92 -107.03 0.435 6362 -6364 4 -32.33 399.06 -106.04 0.435 6363 -6365 4 -33.7 400.04 -105.89 0.435 6364 -6366 4 -36.03 402.2 -104.97 0.435 6365 -6367 4 -37.92 404.15 -104.14 0.435 6366 -6368 4 -39.35 405.95 -103.45 0.435 6367 -6369 4 -42.34 408.03 -102.33 0.435 6368 -6370 4 -45.07 410.03 -102.19 0.435 6369 -6371 4 -47.13 411.35 -101.5 0.435 6370 -6372 4 -48.08 412.27 -100.52 0.435 6371 -6373 4 -49.68 413.44 -100.35 0.435 6372 -6374 4 -50.84 414.68 -100.25 0.435 6373 -6375 4 -51.84 416.18 -98.69 0.435 6374 -6376 4 -53.02 417.61 -98.57 0.435 6375 -6377 4 -53.85 417.53 -97.63 0.435 6376 -6378 4 -55.21 418.03 -97.0 0.435 6377 -6379 4 -58.36 419.78 -96.9 0.435 6378 -6380 4 -60.0 421.83 -96.72 0.435 6379 -6381 4 -61.59 422.76 -96.21 0.435 6380 -6382 4 -63.43 424.36 -96.09 0.435 6381 -6383 4 -66.58 426.11 -95.99 0.435 6382 -6384 4 -69.33 428.31 -95.82 0.435 6383 -6385 4 -70.26 429.87 -96.81 0.435 6384 -6386 4 -72.98 431.63 -96.62 0.435 6385 -6387 4 -74.8 433.03 -96.52 0.435 6386 -6388 4 -76.41 434.23 -96.43 0.435 6387 -6389 4 -77.77 434.91 -95.56 0.435 6388 -6390 4 -80.09 437.14 -95.38 0.435 6389 -6391 4 -81.29 438.48 -94.37 0.435 6390 -6392 4 -82.9 439.88 -94.26 0.435 6391 -6393 4 -84.33 441.12 -92.44 0.435 6392 -6394 4 -86.39 442.72 -92.32 0.435 6393 -6395 4 -88.22 444.34 -92.2 0.435 6394 -6396 4 -89.6 445.53 -92.11 0.435 6395 -6397 4 -92.32 446.75 -90.84 0.435 6396 -6398 4 -94.61 448.54 -90.64 0.435 6397 -6399 4 -96.24 450.38 -90.48 0.435 6398 -6400 4 -98.24 451.7 -91.9 0.435 6399 -6401 4 -100.52 453.5 -91.77 0.435 6400 -6402 4 -103.5 456.13 -91.64 0.435 6401 -6403 4 -108.48 459.26 -91.43 0.435 6402 -6404 4 -112.75 461.59 -91.44 0.435 6403 -6405 4 -114.79 462.97 -91.35 0.435 6404 -6406 4 -117.01 463.92 -91.3 0.435 6405 -6407 4 -119.5 465.25 -91.07 0.435 6406 -6408 4 -122.39 466.37 -91.03 0.435 6407 -6409 4 -125.71 467.46 -90.99 0.435 6408 -6410 4 -128.61 468.54 -90.58 0.435 6409 -6411 4 -131.06 469.45 -90.54 0.435 6410 -6412 4 -132.12 469.84 -90.6 0.435 6411 -6413 4 -134.14 470.78 -90.48 0.435 6412 -6414 4 -137.65 471.43 -90.49 0.435 6413 -6415 4 -139.86 471.94 -90.49 0.435 6414 -6416 4 -142.97 473.04 -90.45 0.435 6415 -6417 4 -146.94 474.08 -90.44 0.435 6416 -6418 4 -149.59 474.79 -90.5 0.435 6417 -6419 4 -153.5 474.99 -90.65 0.435 6418 -6420 4 -157.9 475.8 -90.67 0.435 6419 -6421 4 -161.81 475.99 -90.74 0.435 6420 -6422 4 -165.49 475.98 -90.83 0.435 6421 -6423 4 -168.73 475.79 -90.93 0.435 6422 -6424 4 -170.88 475.23 -91.04 0.435 6423 -6425 4 -172.18 475.15 -91.08 0.435 6424 -6426 4 -53.98 419.96 -98.13 0.435 6376 -6427 4 -54.47 421.11 -99.08 0.435 6426 -6428 4 -54.55 422.4 -98.95 0.435 6427 -6429 4 -54.7 424.75 -98.63 0.435 6428 -6430 4 -55.05 426.87 -98.35 0.435 6429 -6431 4 -55.62 429.0 -98.29 0.435 6430 -6432 4 -55.78 431.36 -98.05 0.435 6431 -6433 4 -56.79 433.88 -97.82 0.435 6432 -6434 4 -57.51 435.75 -99.52 0.435 6433 -6435 4 -58.62 436.66 -100.66 0.435 6434 -6436 4 -60.23 438.34 -101.13 0.435 6435 -6437 4 -61.38 439.91 -102.27 0.435 6436 -6438 4 -62.59 442.28 -102.89 0.435 6437 -6439 4 -62.74 444.64 -102.65 0.435 6438 -6440 4 -62.39 446.48 -103.42 0.435 6439 -6441 4 -62.91 448.53 -104.65 0.435 6440 -6442 4 -63.36 449.54 -106.22 0.435 6441 -6443 4 -63.59 450.54 -107.78 0.435 6442 -6444 4 -64.07 451.4 -107.92 0.435 6443 -6445 4 -64.54 452.3 -108.67 0.435 6444 -6446 4 -64.54 453.15 -110.55 0.435 6445 -6447 4 -65.01 453.47 -109.77 0.435 6446 -6448 4 -65.72 454.6 -110.57 0.435 6447 -6449 4 -65.74 455.6 -111.83 0.435 6448 -6450 4 -65.98 456.55 -112.86 0.435 6449 -6451 4 -66.5 458.6 -114.02 0.435 6450 -6452 4 -66.98 460.04 -115.54 0.435 6451 -6453 4 -68.17 461.96 -116.13 0.435 6452 -6454 4 -68.23 463.29 -116.44 0.435 6453 -6455 4 -68.76 464.81 -116.67 0.435 6454 -6456 4 -68.82 465.88 -116.64 0.435 6455 -6457 4 -69.3 467.29 -117.85 0.435 6456 -6458 4 -69.86 469.19 -117.67 0.435 6457 -6459 4 -71.22 470.75 -118.98 0.435 6458 -6460 4 -72.16 472.05 -119.54 0.435 6459 -6461 4 -73.14 473.99 -119.51 0.435 6460 -6462 4 -74.33 476.17 -120.3 0.435 6461 -6463 4 -75.36 478.48 -120.16 0.435 6462 -6464 4 -76.78 480.54 -119.98 0.435 6463 -6465 4 -77.95 481.76 -119.88 0.435 6464 -6466 4 25.33 288.32 -51.62 0.975 6126 -6467 4 26.34 290.03 -52.71 0.865 6466 -6468 4 27.32 292.17 -53.97 0.54 6467 -6469 4 28.34 293.86 -54.98 0.54 6468 -6470 4 28.5 294.74 -55.04 0.54 6469 -6471 4 29.05 296.28 -54.86 0.54 6470 -6472 4 29.4 298.1 -55.41 0.54 6471 -6473 4 29.46 300.47 -55.17 0.54 6472 -6474 4 29.8 302.0 -55.0 0.54 6473 -6475 4 31.12 305.09 -54.65 0.54 6474 -6476 4 31.67 306.63 -54.48 0.54 6475 -6477 4 32.83 308.84 -54.15 0.54 6476 -6478 4 33.98 311.27 -53.87 0.54 6477 -6479 4 34.72 313.2 -53.65 0.54 6478 -6480 4 35.26 314.95 -53.46 0.54 6479 -6481 4 35.57 316.91 -53.25 0.54 6480 -6482 4 35.66 318.85 -53.05 0.54 6481 -6483 4 35.54 320.77 -52.85 0.54 6482 -6484 4 35.46 322.1 -53.09 0.54 6483 -6485 4 35.59 324.19 -54.38 0.54 6484 -6486 4 36.11 326.39 -54.22 0.54 6485 -6487 4 36.61 328.57 -53.98 0.54 6486 -6488 4 37.33 330.97 -53.71 0.54 6487 -6489 4 38.08 332.95 -53.49 0.54 6488 -6490 4 38.65 334.06 -53.36 0.54 6489 -6491 4 39.0 335.63 -53.56 0.54 6490 -6492 4 39.52 337.6 -53.35 0.54 6491 -6493 4 39.48 337.95 -52.49 0.54 6492 -6494 4 39.65 338.6 -52.49 0.54 6493 -6495 4 39.41 339.59 -53.75 0.54 6494 -6496 4 40.0 341.01 -54.49 0.54 6495 -6497 4 40.37 341.85 -54.09 0.54 6496 -6498 4 40.94 343.76 -55.24 0.54 6497 -6499 4 41.13 344.72 -56.11 0.54 6498 -6500 4 41.5 346.44 -57.67 0.54 6499 -6501 4 41.87 347.52 -57.55 0.54 6500 -6502 4 42.46 349.24 -59.08 0.54 6501 -6503 4 43.68 351.44 -60.64 0.54 6502 -6504 4 44.45 353.3 -61.4 0.54 6503 -6505 4 45.24 355.23 -62.84 0.54 6504 -6506 4 46.44 357.87 -64.5 0.54 6505 -6507 4 47.47 359.41 -66.13 0.54 6506 -6508 4 47.84 360.77 -66.5 0.54 6507 -6509 4 47.97 362.08 -66.36 0.54 6508 -6510 4 47.26 363.12 -66.35 0.54 6509 -6511 4 47.47 363.58 -67.05 0.435 6510 -6512 4 48.02 365.12 -66.88 0.435 6511 -6513 4 48.8 366.44 -66.65 0.435 6512 -6514 4 49.75 368.44 -66.35 0.435 6513 -6515 4 50.52 370.19 -66.15 0.435 6514 -6516 4 50.64 371.19 -65.21 0.435 6515 -6517 4 50.96 372.38 -63.8 0.435 6516 -6518 4 50.37 374.71 -63.57 0.435 6517 -6519 4 49.19 376.38 -63.58 0.435 6518 -6520 4 47.53 378.96 -64.41 0.435 6519 -6521 4 46.11 381.06 -64.59 0.435 6520 -6522 4 45.62 382.4 -65.3 0.435 6521 -6523 4 44.67 384.19 -66.34 0.435 6522 -6524 4 44.18 385.82 -67.7 0.435 6523 -6525 4 43.68 387.4 -68.59 0.435 6524 -6526 4 43.36 388.88 -68.44 0.435 6525 -6527 4 43.47 391.11 -68.97 0.435 6526 -6528 4 43.54 393.27 -68.82 0.435 6527 -6529 4 43.76 396.8 -68.6 0.435 6528 -6530 4 44.6 400.51 -68.2 0.435 6529 -6531 4 45.02 404.49 -68.6 0.435 6530 -6532 4 45.92 407.35 -68.28 0.435 6531 -6533 4 46.95 411.5 -67.83 0.435 6532 -6534 4 48.16 416.51 -67.28 0.435 6533 -6535 4 48.99 420.44 -66.86 0.435 6534 -6536 4 49.54 422.24 -67.11 0.435 6535 -6537 4 49.69 423.06 -66.5 0.435 6536 -6538 4 49.83 424.08 -65.86 0.435 6537 -6539 4 49.72 425.54 -65.26 0.435 6538 -6540 4 50.11 426.18 -64.96 0.435 6539 -6541 4 50.89 427.52 -64.72 0.435 6540 -6542 4 51.24 428.04 -63.3 0.435 6541 -6543 4 51.42 428.65 -62.79 0.435 6542 -6544 4 51.54 429.67 -62.0 0.435 6543 -6545 4 51.84 431.56 -61.19 0.435 6544 -6546 4 51.98 432.38 -60.58 0.435 6545 -6547 4 52.35 433.2 -59.89 0.435 6546 -6548 4 52.47 434.22 -59.09 0.435 6547 -6549 4 53.17 436.8 -58.44 0.435 6548 -6550 4 53.21 439.02 -56.85 0.435 6549 -6551 4 53.69 441.63 -56.49 0.435 6550 -6552 4 53.57 443.04 -55.45 0.435 6551 -6553 4 53.9 444.78 -55.26 0.435 6552 -6554 4 54.8 447.42 -54.97 0.435 6553 -6555 4 55.34 449.16 -54.69 0.435 6554 -6556 4 55.83 451.48 -53.69 0.435 6555 -6557 4 56.18 452.79 -53.54 0.435 6556 -6558 4 56.06 454.72 -53.28 0.435 6557 -6559 4 55.49 456.62 -53.09 0.435 6558 -6560 4 54.94 458.52 -52.91 0.435 6559 -6561 4 55.05 460.25 -52.73 0.435 6560 -6562 4 55.07 462.73 -51.42 0.435 6561 -6563 4 56.13 466.45 -51.01 0.435 6562 -6564 4 56.83 469.1 -50.63 0.435 6563 -6565 4 59.16 473.33 -50.14 0.435 6564 -6566 4 60.09 475.75 -49.87 0.435 6565 -6567 4 61.0 478.38 -49.5 0.435 6566 -6568 4 62.09 481.12 -48.06 0.435 6567 -6569 4 62.84 485.72 -45.77 0.435 6568 -6570 4 62.89 487.54 -44.37 0.435 6569 -6571 4 63.63 489.73 -44.13 0.435 6570 -6572 4 64.43 493.53 -42.43 0.435 6571 -6573 4 65.12 495.81 -40.9 0.435 6572 -6574 4 66.22 498.33 -39.4 0.435 6573 -6575 4 66.92 500.4 -37.97 0.435 6574 -6576 4 67.17 502.41 -36.09 0.435 6575 -6577 4 67.07 503.61 -35.15 0.325 6576 -6578 4 67.29 506.85 -34.81 0.325 6577 -6579 4 67.4 508.79 -34.6 0.325 6578 -6580 4 67.66 511.38 -34.33 0.325 6579 -6581 4 67.25 513.79 -32.58 0.325 6580 -6582 4 67.3 516.14 -32.18 0.325 6581 -6583 4 67.8 518.54 -31.92 0.325 6582 -6584 4 67.84 521.06 -30.99 0.325 6583 -6585 4 68.53 523.88 -30.6 0.325 6584 -6586 4 69.43 525.93 -28.86 0.325 6585 -6587 4 69.7 528.54 -28.58 0.325 6586 -6588 4 70.4 531.15 -28.22 0.325 6587 -6589 4 70.49 533.31 -28.0 0.325 6588 -6590 4 70.59 534.82 -27.84 0.325 6589 -6591 4 71.12 536.79 -27.62 0.325 6590 -6592 4 71.92 537.9 -27.41 0.325 6591 -6593 4 72.07 538.99 -27.29 0.325 6592 -6594 4 72.4 540.52 -27.13 0.325 6593 -6595 4 72.5 542.45 -26.93 0.325 6594 -6596 4 72.43 543.53 -26.82 0.325 6595 -6597 4 72.34 545.02 -26.66 0.325 6596 -6598 4 71.81 546.28 -26.55 0.325 6597 -6599 4 71.76 547.15 -26.46 0.325 6598 -6600 4 71.29 547.75 -26.34 0.325 6599 -6601 4 46.3 364.57 -66.23 0.54 6510 -6602 4 45.33 366.22 -66.08 0.54 6601 -6603 4 45.04 367.56 -66.62 0.435 6602 -6604 4 44.56 368.95 -67.77 0.435 6603 -6605 4 44.09 369.87 -68.51 0.435 6604 -6606 4 43.19 371.03 -69.84 0.435 6605 -6607 4 42.95 372.02 -71.1 0.435 6606 -6608 4 42.67 373.11 -71.3 0.435 6607 -6609 4 42.44 374.02 -72.5 0.435 6608 -6610 4 42.21 374.83 -74.15 0.435 6609 -6611 4 41.98 375.79 -75.26 0.435 6610 -6612 4 41.73 376.73 -76.15 0.435 6611 -6613 4 40.8 377.78 -76.36 0.435 6612 -6614 4 39.98 378.15 -78.3 0.435 6613 -6615 4 24.1 207.46 -20.24 0.435 5040 -6616 4 23.59 208.52 -20.21 0.435 6615 -6617 4 23.58 208.74 -20.27 0.435 6616 -6618 4 23.52 209.54 -19.66 0.435 6617 -6619 4 22.8 210.05 -18.64 0.435 6618 -6620 4 22.31 211.11 -18.77 0.435 6619 -6621 4 22.24 211.91 -18.16 0.435 6620 -6622 4 21.69 213.25 -16.68 0.435 6621 -6623 4 20.7 214.86 -16.08 0.435 6622 -6624 4 19.73 216.03 -15.38 0.435 6623 -6625 4 18.27 218.52 -15.16 0.435 6624 -6626 4 18.18 220.03 -15.0 0.435 6625 -6627 4 17.53 223.42 -14.67 0.435 6626 -6628 4 16.27 226.15 -14.42 0.435 6627 -6629 4 14.17 228.39 -14.23 0.435 6628 -6630 4 12.99 229.82 -14.11 0.435 6629 -6631 4 11.49 232.96 -13.82 0.435 6630 -6632 4 9.96 237.06 -14.57 0.435 6631 -6633 4 8.24 240.19 -14.36 0.435 6632 -6634 4 7.72 241.99 -15.32 0.435 6633 -6635 4 6.74 243.87 -15.22 0.435 6634 -6636 4 6.18 246.59 -16.61 0.435 6635 -6637 4 5.23 248.03 -16.49 0.435 6636 -6638 4 4.69 249.52 -16.34 0.435 6637 -6639 4 4.6 251.02 -16.19 0.435 6638 -6640 4 4.72 252.53 -16.03 0.435 6639 -6641 4 4.43 253.75 -16.06 0.435 6640 -6642 4 4.37 254.91 -16.77 0.435 6641 -6643 4 4.32 256.02 -17.11 0.435 6642 -6644 4 2.9 257.88 -17.03 0.435 6643 -6645 4 1.5 259.3 -16.92 0.435 6644 -6646 4 0.6 260.18 -17.52 0.435 6645 -6647 4 0.32 261.24 -17.57 0.435 6646 -6648 4 0.24 262.54 -17.51 0.435 6647 -6649 4 0.18 263.67 -17.92 0.435 6648 -6650 4 -0.38 265.99 -17.7 0.435 6649 -6651 4 -0.96 268.12 -17.49 0.435 6650 -6652 4 -3.07 271.38 -18.86 0.435 6651 -6653 4 -3.81 272.84 -18.73 0.435 6652 -6654 4 -5.45 274.92 -18.78 0.435 6653 -6655 4 -6.01 276.82 -18.6 0.435 6654 -6656 4 -6.17 279.18 -18.43 0.435 6655 -6657 4 -5.97 283.06 -18.02 0.435 6656 -6658 4 -6.37 285.85 -17.89 0.435 6657 -6659 4 -7.39 288.98 -19.47 0.435 6658 -6660 4 -8.22 291.94 -19.19 0.435 6659 -6661 4 -8.3 293.77 -20.06 0.435 6660 -6662 4 -8.93 297.01 -20.19 0.435 6661 -6663 4 -10.6 299.52 -20.27 0.435 6662 -6664 4 -11.6 302.14 -21.08 0.435 6663 -6665 4 -12.66 305.41 -21.82 0.435 6664 -6666 4 -14.57 308.3 -21.57 0.435 6665 -6667 4 -15.9 312.63 -22.13 0.435 6666 -6668 4 -15.82 315.09 -22.86 0.435 6667 -6669 4 -15.83 318.75 -22.55 0.435 6668 -6670 4 -15.55 321.68 -23.29 0.435 6669 -6671 4 -15.48 324.35 -23.85 0.435 6670 -6672 4 -15.2 326.74 -23.67 0.435 6671 -6673 4 -15.06 328.24 -24.04 0.435 6672 -6674 4 -14.28 329.57 -23.73 0.435 6673 -6675 4 -13.73 331.1 -23.48 0.435 6674 -6676 4 -13.31 331.64 -24.25 0.435 6675 -6677 4 -12.95 333.3 -25.35 0.435 6676 -6678 4 -12.51 334.09 -26.53 0.435 6677 -6679 4 -12.15 335.46 -26.92 0.435 6678 -6680 4 17.94 73.8 -14.09 0.435 3403 -6681 4 19.39 74.96 -13.94 0.435 6680 -6682 4 19.82 75.01 -14.07 0.435 6681 -6683 4 20.41 75.32 -12.6 0.435 6682 -6684 4 21.21 75.62 -10.74 0.435 6683 -6685 4 21.97 76.89 -9.83 0.435 6684 -6686 4 23.57 78.87 -9.14 0.435 6685 -6687 4 24.55 80.17 -8.53 0.435 6686 -6688 4 25.68 82.56 -7.73 0.435 6687 -6689 4 26.63 84.46 -6.61 0.435 6688 -6690 4 27.17 85.96 -6.06 0.435 6689 -6691 4 28.36 87.5 -5.5 0.435 6690 -6692 4 30.0 88.86 -4.94 0.435 6691 -6693 4 31.2 90.19 -4.48 0.435 6692 -6694 4 31.43 90.14 -4.48 0.435 6693 -6695 4 31.8 91.02 -4.3 0.435 6694 -6696 4 32.39 91.92 -4.19 0.435 6695 -6697 4 33.18 93.25 -4.03 0.435 6696 -6698 4 33.75 94.57 -3.88 0.435 6697 -6699 4 33.68 95.65 -3.77 0.435 6698 -6700 4 33.82 97.0 -4.23 0.435 6699 -6701 4 33.59 98.01 -5.56 0.435 6700 -6702 4 33.54 98.61 -5.13 0.435 6701 -6703 4 33.5 98.96 -4.34 0.435 6702 -6704 4 33.85 100.02 -3.99 0.435 6703 -6705 4 33.32 101.45 -3.33 0.435 6704 -6706 4 33.4 102.86 -2.13 0.435 6705 -6707 4 33.49 104.76 -1.56 0.435 6706 -6708 4 33.8 105.95 -0.29 0.435 6707 -6709 4 34.35 107.18 0.81 0.435 6708 -6710 4 35.3 109.1 1.72 0.435 6709 -6711 4 35.83 110.81 2.36 0.435 6710 -6712 4 37.04 112.17 2.6 0.435 6711 -6713 4 37.33 114.33 2.91 0.435 6712 -6714 4 37.7 115.16 3.46 0.435 6713 -6715 4 38.24 116.65 4.15 0.435 6714 -6716 4 39.49 117.08 4.98 0.435 6715 -6717 4 40.44 119.07 5.28 0.435 6716 -6718 4 41.22 120.37 5.73 0.435 6717 -6719 4 41.79 121.19 6.51 0.435 6718 -6720 4 42.38 122.61 5.92 0.435 6719 -6721 4 43.11 123.96 7.96 0.435 6720 -6722 4 43.91 124.89 7.92 0.435 6721 -6723 4 33.33 90.68 -3.77 0.435 6694 -6724 4 35.91 91.05 -3.59 0.435 6723 -6725 4 37.85 91.18 -3.54 0.435 6724 -6726 4 40.24 91.1 -3.49 0.435 6725 -6727 4 43.02 91.7 -3.36 0.435 6726 -6728 4 46.0 92.75 -3.18 0.435 6727 -6729 4 49.06 92.28 -3.16 0.435 6728 -6730 4 53.19 92.32 -3.05 0.435 6729 -6731 4 55.53 92.88 -2.94 0.435 6730 -6732 4 57.69 92.96 -2.36 0.435 6731 -6733 4 60.19 94.37 -1.7 0.435 6732 -6734 4 61.4 95.15 -0.15 0.435 6733 -6735 4 63.65 97.22 0.1 0.435 6734 -6736 4 64.84 98.51 1.09 0.435 6735 -6737 4 65.38 99.99 1.86 0.435 6736 -6738 4 68.32 101.44 2.16 0.435 6737 -6739 4 71.07 102.68 2.42 0.435 6738 -6740 4 72.46 104.7 2.67 0.435 6739 -6741 4 75.61 109.62 3.25 0.435 6740 -6742 4 78.25 112.36 3.6 0.435 6741 -6743 4 80.84 115.97 4.03 0.435 6742 -6744 4 83.49 118.72 4.38 0.435 6743 -6745 4 85.54 120.56 4.62 0.435 6744 -6746 4 87.68 120.9 4.78 0.435 6745 -6747 4 90.67 121.69 5.24 0.435 6746 -6748 4 93.01 121.97 6.06 0.435 6747 -6749 4 95.6 122.13 6.22 0.435 6748 -6750 4 98.95 124.04 6.57 0.435 6749 -6751 4 102.37 124.68 6.72 0.435 6750 -6752 4 105.55 125.96 6.92 0.435 6751 -6753 4 106.75 127.24 7.77 0.435 6752 -6754 4 109.25 128.64 8.43 0.435 6753 -6755 4 110.47 129.77 8.79 0.435 6754 -6756 4 111.34 129.82 8.9 0.435 6755 -6757 4 112.41 129.85 9.3 0.435 6756 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc deleted file mode 100644 index 3a7b77c..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc +++ /dev/null @@ -1,3022 +0,0 @@ -# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. -# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. -# -# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc -#The original file has a single soma contour that is averaged into 3 soma points -1 1 0.0 0.0 0.0 8.88119 -1 -2 1 0.35 -8.83 -0.87 8.88119 1 -3 1 -0.35 8.83 0.87 8.88119 1 -4 3 0.67 -4.33 -2.18 2.165 1 -5 3 -0.09 -6.62 -2.34 1.84 4 -6 3 -1.76 -8.01 -2.31 1.405 5 -7 3 -2.97 -8.02 -2.2 1.405 6 -8 3 -3.39 -8.37 -2.2 1.405 7 -9 3 -3.48 -8.5 -2.2 1.405 8 -10 3 -3.53 -8.81 -3.1 1.19 9 -11 3 -3.61 -9.04 -3.55 1.19 10 -12 3 -4.27 -8.08 -3.52 0.11 11 -13 3 -5.31 -7.95 -3.18 0.11 12 -14 3 -5.47 -8.42 -3.21 0.54 13 -15 3 -6.69 -8.42 -3.11 0.54 14 -16 3 -7.0 -7.52 -2.98 0.54 15 -17 3 -8.21 -7.23 -2.84 0.54 16 -18 3 -8.66 -7.68 -2.85 0.54 17 -19 3 -9.28 -8.31 -2.85 0.54 18 -20 3 -9.73 -9.06 -2.88 0.54 19 -21 3 -10.03 -10.29 -2.97 0.54 20 -22 3 -10.03 -10.88 -3.03 0.54 21 -23 3 -10.18 -11.95 -3.12 0.54 22 -24 3 -10.63 -12.42 -3.13 0.54 23 -25 3 -10.94 -13.64 -3.22 0.54 24 -26 3 -11.39 -14.1 -3.22 0.54 25 -27 3 -11.68 -15.01 -3.28 0.54 26 -28 3 -12.22 -15.99 -4.24 0.65 27 -29 3 -12.53 -16.61 -4.26 0.65 28 -30 3 -12.98 -17.36 -4.31 0.65 29 -31 3 -13.66 -18.21 -5.16 0.54 30 -32 3 -14.88 -18.82 -5.11 0.54 31 -33 3 -16.85 -19.3 -4.97 0.54 32 -34 3 -17.61 -20.37 -5.0 0.54 33 -35 3 -17.76 -22.05 -5.16 0.54 34 -36 3 -17.6 -22.81 -5.25 0.54 35 -37 3 -17.44 -24.17 -5.39 0.54 36 -38 3 -17.74 -25.1 -5.45 0.54 37 -39 3 -19.12 -25.86 -5.4 0.54 38 -40 3 -20.94 -25.87 -5.24 0.54 39 -41 3 -22.15 -25.9 -5.05 0.54 40 -42 3 -22.3 -26.96 -5.14 0.54 41 -43 3 -22.29 -27.57 -5.19 0.54 42 -44 3 -22.44 -28.04 -5.22 0.54 43 -45 3 -22.94 -27.75 -6.06 0.435 44 -46 3 -23.25 -28.36 -6.09 0.435 45 -47 3 -23.56 -29.27 -6.23 0.435 46 -48 3 -24.05 -29.99 -6.72 0.435 47 -49 3 -24.86 -30.7 -7.31 0.435 48 -50 3 -26.08 -31.33 -7.26 0.435 49 -51 3 -27.75 -31.18 -7.09 0.435 50 -52 3 -29.32 -31.45 -7.5 0.435 51 -53 3 -30.27 -31.72 -7.89 0.435 52 -54 3 -31.81 -31.43 -7.79 0.435 53 -55 3 -33.73 -30.72 -8.68 0.435 54 -56 3 -34.98 -30.41 -8.84 0.435 55 -57 3 -35.25 -30.43 -10.1 0.54 56 -58 3 -36.17 -31.34 -10.26 0.54 57 -59 3 -37.55 -32.11 -10.29 0.54 58 -60 3 -38.19 -32.68 -10.73 0.54 59 -61 3 -38.5 -33.59 -10.86 0.54 60 -62 3 -39.6 -34.93 -11.27 0.54 61 -63 3 -40.35 -36.61 -11.37 0.54 62 -64 3 -41.27 -37.83 -11.48 0.54 63 -65 3 -41.72 -38.58 -11.59 0.54 64 -66 3 -42.19 -39.04 -11.66 0.54 65 -67 3 -42.37 -39.46 -11.98 0.54 66 -68 3 -42.4 -39.43 -12.36 0.54 67 -69 3 -43.94 -40.64 -12.57 0.54 68 -70 3 -45.25 -41.77 -13.61 0.54 69 -71 3 -46.49 -43.28 -13.86 0.54 70 -72 3 -47.71 -44.49 -13.96 0.54 71 -73 3 -48.47 -45.27 -13.96 0.54 72 -74 3 -49.24 -46.32 -14.14 0.54 73 -75 3 -50.18 -47.81 -14.57 0.54 74 -76 3 -52.32 -49.34 -14.68 0.54 75 -77 3 -53.07 -50.1 -14.68 0.54 76 -78 3 -53.41 -50.69 -15.09 0.54 77 -79 3 -53.87 -51.44 -15.19 0.54 78 -80 3 -54.81 -52.33 -15.5 0.54 79 -81 3 -56.05 -53.53 -15.8 0.54 80 -82 3 -57.73 -54.0 -15.77 0.54 81 -83 3 -59.85 -54.92 -15.66 0.54 82 -84 3 -61.23 -56.61 -15.78 0.54 83 -85 3 -62.89 -58.3 -15.79 0.54 84 -86 3 -66.39 -60.61 -15.69 0.54 85 -87 3 -67.76 -61.99 -15.7 0.54 86 -88 3 -68.97 -63.22 -15.7 0.54 87 -89 3 -71.85 -64.3 -15.55 0.54 88 -90 3 -73.99 -64.64 -15.38 0.54 89 -91 3 -75.81 -64.35 -15.19 0.54 90 -92 3 -79.65 -65.1 -15.35 0.54 91 -93 3 -82.24 -64.37 -15.04 0.54 92 -94 3 -84.53 -64.23 -14.82 0.54 93 -95 3 -86.41 -64.78 -15.39 0.54 94 -96 3 -88.69 -65.57 -15.26 0.54 95 -97 3 -90.98 -66.66 -15.15 0.54 96 -98 3 -92.87 -67.8 -16.07 0.54 97 -99 3 -93.53 -69.89 -16.73 0.54 98 -100 3 -95.82 -71.88 -16.79 0.54 99 -101 3 -96.87 -73.56 -16.87 0.54 100 -102 3 -97.85 -75.31 -17.77 0.54 101 -103 3 -98.47 -76.52 -17.99 0.54 102 -104 3 -98.16 -77.74 -18.06 0.54 103 -105 3 -98.09 -78.42 -17.38 0.54 104 -106 3 -97.89 -79.23 -16.87 0.54 105 -107 3 -98.75 -80.5 -16.54 0.54 106 -108 3 -99.36 -81.41 -16.57 0.54 107 -109 3 -99.32 -83.28 -16.31 0.54 108 -110 3 -100.2 -86.04 -16.34 0.54 109 -111 3 -99.59 -88.77 -16.67 0.54 110 -112 3 -99.27 -90.91 -16.82 0.54 111 -113 3 -98.62 -92.16 -16.55 0.54 112 -114 3 -98.46 -93.83 -16.73 0.54 113 -115 3 -98.58 -94.93 -16.45 0.54 114 -116 3 -98.4 -96.01 -16.42 0.54 115 -117 3 -98.69 -96.93 -16.4 0.54 116 -118 3 -22.3 -29.09 -5.42 0.54 44 -119 3 -21.83 -31.67 -5.72 0.54 118 -120 3 -20.61 -34.99 -6.22 0.54 119 -121 3 -19.89 -36.61 -6.91 0.54 120 -122 3 -19.46 -38.24 -7.56 0.54 121 -123 3 -19.16 -39.45 -7.78 0.54 122 -124 3 -18.65 -40.57 -7.25 0.54 123 -125 3 -17.05 -42.46 -6.82 0.54 124 -126 3 -16.58 -44.14 -6.97 0.54 125 -127 3 -16.87 -45.37 -6.98 0.54 126 -128 3 -16.66 -45.58 -6.26 0.54 127 -129 3 -17.25 -47.1 -6.35 0.54 128 -130 3 -18.32 -47.57 -6.3 0.54 129 -131 3 -19.05 -48.38 -6.01 0.54 130 -132 3 -20.1 -49.46 -5.87 0.54 131 -133 3 -20.55 -51.43 -6.02 0.54 132 -134 3 -21.15 -53.57 -6.17 0.54 133 -135 3 -22.35 -55.72 -6.2 0.54 134 -136 3 -23.41 -57.41 -6.27 0.54 135 -137 3 -24.16 -59.09 -6.36 0.54 136 -138 3 -25.52 -59.88 -6.16 0.54 137 -139 3 -26.42 -60.8 -6.08 0.54 138 -140 3 -27.46 -61.9 -5.8 0.54 139 -141 3 -28.2 -64.21 -5.88 0.54 140 -142 3 -28.5 -66.33 -6.07 0.54 141 -143 3 -29.72 -67.87 -6.1 0.54 142 -144 3 -31.08 -68.64 -6.05 0.54 143 -145 3 -32.76 -70.63 -6.09 0.54 144 -146 3 -33.19 -72.63 -6.16 0.54 145 -147 3 -33.8 -75.05 -6.34 0.54 146 -148 3 -33.71 -76.04 -5.62 0.54 147 -149 3 -35.03 -77.17 -6.74 0.54 148 -150 3 -36.24 -79.02 -6.8 0.54 149 -151 3 -37.19 -80.5 -7.25 0.54 150 -152 3 -37.41 -81.78 -8.26 0.54 151 -153 3 -37.85 -84.68 -8.5 0.54 152 -154 3 -38.77 -88.03 -8.81 0.54 153 -155 3 -38.91 -90.01 -9.0 0.54 154 -156 3 -39.06 -91.68 -9.15 0.54 155 -157 3 -38.76 -93.18 -9.47 0.54 156 -158 3 -38.8 -94.06 -9.93 0.54 157 -159 3 -39.48 -94.59 -10.83 0.54 158 -160 3 -41.17 -96.26 -10.99 0.54 159 -161 3 -41.54 -97.09 -11.87 0.54 160 -162 3 -41.81 -97.74 -13.11 0.54 161 -163 3 -41.84 -99.24 -11.97 0.54 162 -164 3 -42.03 -99.98 -10.67 0.54 163 -165 3 -41.98 -100.61 -10.44 0.54 164 -166 3 -42.73 -102.6 -10.48 0.54 165 -167 3 -42.57 -105.2 -10.68 0.54 166 -168 3 -42.71 -106.56 -10.8 0.54 167 -169 3 -43.6 -108.43 -10.59 0.54 168 -170 3 -44.18 -109.97 -10.46 0.54 169 -171 3 -44.24 -110.81 -9.71 0.54 170 -172 3 -44.24 -112.04 -9.68 0.54 171 -173 3 -44.52 -113.29 -9.54 0.54 172 -174 3 -44.93 -114.69 -9.33 0.54 173 -175 3 -44.89 -116.26 -9.04 0.54 174 -176 3 -44.68 -117.66 -8.75 0.54 175 -177 3 -44.39 -119.19 -8.84 0.54 176 -178 3 -43.91 -120.55 -9.02 0.54 177 -179 3 -43.89 -120.9 -8.69 0.54 178 -180 3 -42.63 -122.13 -8.62 0.54 179 -181 3 -41.35 -123.71 -8.14 0.54 180 -182 3 -40.56 -125.39 -8.29 0.54 181 -183 3 -39.95 -126.59 -8.46 0.54 182 -184 3 -39.34 -128.42 -8.63 0.54 183 -185 3 -38.71 -130.56 -8.81 0.54 184 -186 3 -38.07 -131.8 -8.62 0.54 185 -187 3 -37.6 -132.87 -8.68 0.54 186 -188 3 -37.59 -134.08 -8.74 0.54 187 -189 3 -37.59 -135.0 -8.83 0.54 188 -190 3 -37.43 -135.76 -8.92 0.54 189 -191 3 -36.82 -136.67 -9.06 0.54 190 -192 3 -36.05 -138.64 -9.32 0.54 191 -193 3 -35.9 -140.01 -9.47 0.54 192 -194 3 -36.34 -141.07 -9.54 0.54 193 -195 3 -37.05 -141.51 -9.36 0.435 194 -196 3 -37.96 -142.43 -9.36 0.435 195 -197 3 -39.64 -142.9 -9.25 0.435 196 -198 3 -41.44 -143.55 -9.01 0.435 197 -199 3 -42.34 -144.48 -8.86 0.435 198 -200 3 -43.11 -144.62 -8.95 0.435 199 -201 3 -43.6 -145.36 -9.28 0.435 200 -202 3 -43.94 -145.63 -9.65 0.435 201 -203 3 -44.28 -146.19 -10.13 0.435 202 -204 3 -44.99 -146.71 -11.25 0.435 203 -205 3 -45.66 -147.56 -11.88 0.435 204 -206 3 -45.84 -148.59 -12.34 0.435 205 -207 3 -46.13 -150.11 -12.46 0.435 206 -208 3 -46.59 -151.48 -12.62 0.435 207 -209 3 -46.59 -152.7 -12.74 0.435 208 -210 3 -46.42 -154.06 -12.89 0.435 209 -211 3 -46.6 -154.8 -13.25 0.435 210 -212 3 -46.15 -155.85 -13.47 0.435 211 -213 3 -45.85 -157.07 -13.61 0.435 212 -214 3 -46.02 -157.81 -13.9 0.435 213 -215 3 -46.02 -158.71 -14.14 0.435 214 -216 3 -46.22 -159.72 -14.67 0.435 215 -217 3 -46.53 -160.34 -14.78 0.435 216 -218 3 -46.83 -160.94 -14.81 0.435 217 -219 3 -46.99 -161.4 -14.84 0.435 218 -220 3 -47.04 -161.94 -15.64 0.435 219 -221 3 -47.65 -162.54 -15.73 0.435 220 -222 3 -48.11 -163.01 -15.73 0.435 221 -223 3 -48.42 -163.32 -15.73 0.435 222 -224 3 -48.62 -163.71 -16.28 0.435 223 -225 3 -48.31 -165.22 -16.53 0.435 224 -226 3 -47.25 -165.67 -16.67 0.435 225 -227 3 -3.29 -10.26 -4.74 1.19 10 -228 3 -2.54 -10.99 -5.1 1.08 227 -229 3 -1.93 -11.9 -5.24 0.865 228 -230 3 -1.81 -12.92 -5.81 0.65 229 -231 3 -1.21 -13.83 -5.95 0.65 230 -232 3 -1.2 -14.74 -6.04 0.65 231 -233 3 -1.8 -15.96 -6.11 0.65 232 -234 3 -2.26 -16.71 -6.22 0.65 233 -235 3 -3.79 -17.95 -6.19 0.65 234 -236 3 -4.84 -19.93 -6.3 0.65 235 -237 3 -5.14 -20.55 -6.33 0.435 236 -238 3 -6.2 -22.22 -6.39 0.435 237 -239 3 -6.34 -23.59 -6.51 0.435 238 -240 3 -5.58 -24.95 -6.72 0.435 239 -241 3 -4.67 -27.09 -7.01 0.435 240 -242 3 -4.2 -29.67 -7.3 0.435 241 -243 3 -4.2 -30.88 -7.42 0.435 242 -244 3 -3.89 -32.39 -7.6 0.435 243 -245 3 -2.46 -33.18 -8.94 0.435 244 -246 3 -1.39 -33.63 -9.08 0.435 245 -247 3 -0.03 -34.37 -9.35 0.435 246 -248 3 1.17 -35.88 -9.61 0.435 247 -249 3 2.25 -38.15 -9.94 0.435 248 -250 3 3.18 -40.28 -10.23 0.435 249 -251 3 3.48 -41.49 -10.37 0.435 250 -252 3 4.85 -42.85 -10.63 0.435 251 -253 3 6.49 -42.62 -11.29 0.435 252 -254 3 8.21 -43.42 -12.58 0.435 253 -255 3 9.59 -44.79 -11.18 0.435 254 -256 3 10.7 -45.29 -10.8 0.435 255 -257 3 11.5 -46.08 -10.51 0.435 256 -258 3 11.97 -47.16 -10.5 0.435 257 -259 3 13.08 -48.25 -10.26 0.435 258 -260 3 13.0 -48.78 -9.54 0.435 259 -261 3 12.87 -49.57 -9.46 0.435 260 -262 3 12.76 -50.06 -9.04 0.435 261 -263 3 12.82 -51.04 -8.45 0.435 262 -264 3 13.34 -52.46 -7.97 0.435 263 -265 3 13.53 -52.95 -7.73 0.435 264 -266 3 13.55 -53.89 -7.6 0.435 265 -267 3 13.56 -54.5 -7.58 0.435 266 -268 3 -4.18 -10.16 -2.3 0.755 9 -269 3 -5.4 -11.08 -2.28 0.65 268 -270 3 -6.46 -12.15 -2.28 0.65 269 -271 3 -7.06 -13.68 -2.38 0.65 270 -272 3 -7.51 -15.67 -2.45 0.65 271 -273 3 -7.34 -17.65 -2.66 0.65 272 -274 3 -6.43 -19.76 -2.95 0.65 273 -275 3 -5.66 -21.74 -3.21 0.65 274 -276 3 -5.04 -24.47 -3.53 0.65 275 -277 3 -4.42 -25.98 -3.75 0.65 276 -278 3 -4.72 -27.19 -3.83 0.65 277 -279 3 -5.34 -27.81 -3.84 0.65 278 -280 3 -6.55 -27.83 -3.72 0.65 279 -281 3 -7.47 -29.36 -3.79 0.65 280 -282 3 -7.71 -30.46 -3.88 0.65 281 -283 3 -7.85 -30.94 -2.1 0.435 282 -284 3 -8.31 -31.4 -2.1 0.435 283 -285 3 -8.76 -31.87 -2.1 0.435 284 -286 3 -9.26 -32.27 -2.63 0.435 285 -287 3 -9.8 -32.65 -3.44 0.435 286 -288 3 -10.28 -33.09 -3.67 0.435 287 -289 3 -10.55 -33.42 -3.44 0.435 288 -290 3 -10.84 -33.75 -3.23 0.435 289 -291 3 -10.83 -34.36 -3.22 0.435 290 -292 3 -10.5 -34.69 -3.06 0.435 291 -293 3 -9.99 -35.2 -2.47 0.435 292 -294 3 -9.77 -35.72 -1.86 0.435 293 -295 3 -8.83 -36.34 -1.86 0.435 294 -296 3 -8.98 -37.42 -1.86 0.435 295 -297 3 -9.13 -38.17 -1.92 0.435 296 -298 3 -9.44 -38.79 -1.95 0.435 297 -299 3 -10.19 -39.56 -1.89 0.435 298 -300 3 -10.33 -40.33 -1.88 0.435 299 -301 3 -10.62 -41.25 -1.87 0.435 300 -302 3 -10.93 -41.86 -1.9 0.435 301 -303 3 -11.04 -42.96 -1.61 0.435 302 -304 3 -10.29 -43.39 -3.53 0.435 303 -305 3 -10.28 -44.0 -3.52 0.435 304 -306 3 -7.61 -30.42 -3.89 0.54 282 -307 3 -6.54 -31.79 -4.11 0.54 306 -308 3 -5.85 -33.07 -3.47 0.54 307 -309 3 -6.0 -34.45 -3.59 0.54 308 -310 3 -7.37 -35.22 -3.55 0.54 309 -311 3 -7.21 -37.19 -3.75 0.54 310 -312 3 -6.22 -38.47 -4.87 0.54 311 -313 3 -5.61 -39.97 -5.07 0.54 312 -314 3 -6.21 -41.81 -5.21 0.54 313 -315 3 -5.85 -42.47 -4.77 0.435 314 -316 3 -5.24 -43.37 -4.91 0.435 315 -317 3 -4.62 -45.49 -5.17 0.435 316 -318 3 -4.17 -46.86 -5.35 0.435 317 -319 3 -3.56 -47.46 -5.47 0.435 318 -320 3 -2.5 -47.3 -5.55 0.435 319 -321 3 -1.73 -47.43 -5.72 0.435 320 -322 3 -1.12 -48.96 -5.92 0.435 321 -323 3 -1.58 -50.03 -5.98 0.435 322 -324 3 -1.42 -51.69 -6.15 0.435 323 -325 3 -0.66 -53.05 -6.36 0.435 324 -326 3 0.4 -54.4 -6.66 0.435 325 -327 3 1.17 -55.16 -6.81 0.435 326 -328 3 0.71 -56.23 -6.87 0.435 327 -329 3 0.33 -56.76 -7.79 0.435 328 -330 3 -0.32 -58.22 -8.39 0.435 329 -331 3 -1.38 -59.61 -8.44 0.435 330 -332 3 -1.83 -60.98 -8.53 0.435 331 -333 3 -1.82 -62.5 -8.67 0.435 332 -334 3 -1.82 -64.32 -8.86 0.435 333 -335 3 -1.2 -65.54 -9.03 0.435 334 -336 3 0.0 -66.74 -9.26 0.435 335 -337 3 0.47 -68.12 -9.43 0.435 336 -338 3 0.32 -68.57 -9.46 0.435 337 -339 3 0.01 -69.48 -9.53 0.435 338 -340 3 0.02 -70.4 -9.62 0.435 339 -341 3 0.78 -71.76 -9.82 0.435 340 -342 3 1.7 -72.97 -10.02 0.435 341 -343 3 2.45 -74.0 -10.42 0.435 342 -344 3 1.99 -75.37 -10.59 0.435 343 -345 3 1.98 -75.98 -10.65 0.435 344 -346 3 2.75 -77.03 -10.82 0.435 345 -347 3 3.06 -78.25 -10.97 0.435 346 -348 3 2.76 -78.86 -11.0 0.435 347 -349 3 2.15 -79.78 -11.03 0.435 348 -350 3 2.61 -81.14 -11.21 0.435 349 -351 3 3.98 -81.27 -11.35 0.435 350 -352 3 4.44 -81.73 -11.44 0.435 351 -353 3 4.9 -82.79 -11.58 0.435 352 -354 3 5.05 -84.17 -11.73 0.435 353 -355 3 5.11 -85.41 -13.06 0.435 354 -356 3 4.51 -86.03 -13.07 0.435 355 -357 3 4.05 -87.08 -13.13 0.435 356 -358 3 5.87 -87.99 -13.39 0.435 357 -359 3 6.94 -89.34 -13.62 0.435 358 -360 3 7.26 -89.66 -15.19 0.435 359 -361 3 7.41 -90.71 -15.31 0.435 360 -362 3 7.27 -91.78 -15.4 0.435 361 -363 3 6.96 -92.39 -15.43 0.435 362 -364 3 6.97 -93.61 -15.55 0.435 363 -365 3 7.89 -94.51 -15.72 0.435 364 -366 3 8.9 -95.81 -16.63 0.435 365 -367 3 9.5 -97.01 -16.87 0.435 366 -368 3 9.78 -97.89 -17.28 0.435 367 -369 3 10.05 -99.68 -17.87 0.435 368 -370 3 10.22 -101.04 -18.02 0.435 369 -371 3 11.12 -101.33 -18.2 0.435 370 -372 3 12.8 -101.77 -18.4 0.435 371 -373 3 13.56 -102.83 -18.57 0.435 372 -374 3 13.72 -104.5 -18.75 0.435 373 -375 3 14.47 -105.55 -19.0 0.435 374 -376 3 15.39 -106.77 -19.2 0.435 375 -377 3 16.61 -108.57 -19.48 0.435 376 -378 3 17.38 -110.24 -19.72 0.435 377 -379 3 18.45 -112.52 -20.04 0.435 378 -380 3 19.52 -114.78 -20.36 0.435 379 -381 3 21.03 -116.57 -20.9 0.435 380 -382 3 21.89 -118.02 -21.88 0.435 381 -383 3 22.81 -119.53 -22.12 0.435 382 -384 3 24.02 -120.73 -22.34 0.435 383 -385 3 25.54 -121.63 -22.57 0.435 384 -386 3 27.84 -123.58 -22.97 0.435 385 -387 3 29.06 -125.1 -23.23 0.435 386 -388 3 28.92 -127.99 -23.5 0.435 387 -389 3 29.37 -129.34 -23.68 0.435 388 -390 3 29.07 -130.27 -23.81 0.435 389 -391 3 30.9 -131.15 -24.06 0.435 390 -392 3 31.66 -132.83 -24.3 0.435 391 -393 3 32.58 -134.34 -24.53 0.435 392 -394 3 33.65 -135.38 -24.73 0.435 393 -395 3 33.96 -136.6 -24.88 0.435 394 -396 3 35.33 -138.86 -25.23 0.435 395 -397 3 35.84 -140.11 -25.48 0.435 396 -398 3 36.6 -141.17 -25.65 0.435 397 -399 3 37.52 -142.08 -25.82 0.435 398 -400 3 39.34 -142.96 -26.08 0.435 399 -401 3 40.03 -144.86 -27.15 0.435 400 -402 3 40.8 -146.82 -27.42 0.435 401 -403 3 42.11 -148.41 -28.45 0.435 402 -404 3 42.11 -149.32 -28.54 0.435 403 -405 3 42.07 -149.87 -29.12 0.435 404 -406 3 42.82 -151.24 -29.39 0.435 405 -407 3 44.05 -151.83 -29.57 0.435 406 -408 3 45.05 -152.2 -30.46 0.435 407 -409 3 45.07 -152.83 -31.95 0.435 408 -410 3 44.94 -153.0 -33.4 0.435 409 -411 3 45.09 -154.36 -33.54 0.435 410 -412 3 46.16 -156.02 -33.87 0.435 411 -413 3 47.23 -157.98 -34.17 0.435 412 -414 3 49.06 -160.71 -34.6 0.435 413 -415 3 49.67 -162.22 -34.8 0.435 414 -416 3 50.75 -162.66 -34.94 0.435 415 -417 3 51.97 -163.86 -35.17 0.435 416 -418 3 52.73 -165.53 -35.49 0.435 417 -419 3 53.95 -166.73 -35.79 0.435 418 -420 3 56.12 -167.07 -37.08 0.435 419 -421 3 57.77 -167.77 -37.76 0.435 420 -422 3 59.29 -169.59 -38.07 0.435 421 -423 3 60.21 -170.79 -38.27 0.435 422 -424 3 61.11 -171.07 -38.53 0.435 423 -425 3 61.46 -172.32 -39.9 0.435 424 -426 3 61.73 -172.88 -40.37 0.435 425 -427 3 61.98 -174.03 -41.25 0.435 426 -428 3 62.36 -175.0 -42.21 0.435 427 -429 3 62.89 -176.75 -43.26 0.435 428 -430 3 63.65 -178.11 -43.54 0.435 429 -431 3 64.27 -179.61 -43.75 0.435 430 -432 3 64.73 -180.38 -43.87 0.435 431 -433 3 65.79 -181.11 -44.04 0.435 432 -434 3 66.86 -181.57 -44.18 0.435 433 -435 3 68.38 -180.94 -44.26 0.435 434 -436 3 68.69 -180.64 -44.26 0.435 435 -437 3 68.53 -180.47 -46.04 0.435 436 -438 3 68.0 -179.64 -46.59 0.435 437 -439 3 -7.29 -42.58 -5.25 0.435 314 -440 3 -8.04 -43.04 -5.22 0.435 439 -441 3 -9.1 -45.63 -5.38 0.435 440 -442 3 -7.72 -48.2 -5.76 0.435 441 -443 3 -7.1 -50.64 -6.05 0.435 442 -444 3 -7.7 -51.86 -6.05 0.435 443 -445 3 -9.02 -52.67 -5.62 0.435 444 -446 3 -9.47 -53.15 -5.47 0.435 445 -447 3 -10.07 -53.77 -5.41 0.435 446 -448 3 -9.61 -54.83 -5.55 0.435 447 -449 3 -9.46 -55.59 -5.64 0.435 448 -450 3 -10.07 -56.21 -5.65 0.435 449 -451 3 -11.44 -56.36 -5.54 0.435 450 -452 3 -12.35 -57.28 -5.54 0.435 451 -453 3 -12.49 -57.74 -5.57 0.435 452 -454 3 -12.6 -58.26 -5.08 0.435 453 -455 3 -12.59 -59.47 -5.19 0.435 454 -456 3 -12.13 -61.45 -5.36 0.435 455 -457 3 -12.12 -62.66 -5.48 0.435 456 -458 3 -13.18 -63.13 -5.43 0.435 457 -459 3 -13.79 -64.05 -5.46 0.435 458 -460 3 -14.7 -65.88 -5.56 0.435 459 -461 3 -14.54 -67.86 -5.76 0.435 460 -462 3 -14.05 -69.56 -5.67 0.435 461 -463 3 -13.28 -70.32 -5.73 0.435 462 -464 3 -12.67 -71.52 -5.92 0.435 463 -465 3 -12.66 -72.75 -6.03 0.435 464 -466 3 -12.95 -73.97 -6.05 0.435 465 -467 3 -12.96 -75.19 -6.17 0.435 466 -468 3 -13.05 -75.7 -5.67 0.435 467 -469 3 -13.36 -76.3 -5.71 0.435 468 -470 3 -13.35 -76.61 -5.67 0.435 469 -471 3 -13.8 -77.68 -5.73 0.435 470 -472 3 -4.13 -8.82 -3.75 0.11 8 -473 3 -5.04 -9.14 -3.56 0.11 472 -474 3 -5.17 -9.91 -3.62 0.11 473 -475 3 -5.4 -9.38 -4.23 0.65 474 -476 3 -6.03 -9.39 -4.32 0.65 475 -477 3 -7.57 -9.66 -4.59 0.65 476 -478 3 -9.11 -9.96 -4.69 0.65 477 -479 3 -11.24 -10.59 -4.56 0.65 478 -480 3 -13.07 -11.2 -4.52 0.65 479 -481 3 -14.78 -12.25 -4.85 0.65 480 -482 3 -15.69 -13.17 -4.93 0.54 481 -483 3 -16.79 -14.8 -5.44 0.54 482 -484 3 -17.3 -15.82 -6.03 0.54 483 -485 3 -17.49 -16.53 -6.61 0.54 484 -486 3 -18.03 -16.92 -7.43 0.54 485 -487 3 -18.49 -17.35 -7.58 0.54 486 -488 3 -20.18 -16.91 -7.45 0.54 487 -489 3 -22.02 -17.51 -7.64 0.54 488 -490 3 -23.12 -17.93 -7.96 0.54 489 -491 3 -24.34 -18.55 -7.9 0.54 490 -492 3 -25.12 -18.67 -9.82 0.54 491 -493 3 -25.19 -19.23 -10.54 0.54 492 -494 3 -25.88 -18.84 -11.35 0.54 493 -495 3 -27.71 -17.94 -11.09 0.54 494 -496 3 -28.76 -18.42 -10.97 0.54 495 -497 3 -29.45 -18.34 -11.73 0.54 496 -498 3 -31.51 -17.81 -12.39 0.54 497 -499 3 -33.03 -18.12 -12.35 0.54 498 -500 3 -35.21 -17.8 -12.65 0.54 499 -501 3 -37.66 -17.18 -12.52 0.54 500 -502 3 -40.65 -16.07 -13.04 0.54 501 -503 3 -41.66 -16.27 -14.1 0.54 502 -504 3 -43.19 -16.58 -14.07 0.54 503 -505 3 -46.23 -17.82 -13.91 0.54 504 -506 3 -49.43 -18.6 -13.84 0.54 505 -507 3 -52.13 -18.96 -14.91 0.54 506 -508 3 -54.57 -19.28 -14.71 0.54 507 -509 3 -57.24 -18.15 -15.33 0.54 508 -510 3 -60.0 -18.47 -15.2 0.54 509 -511 3 -60.98 -18.7 -15.96 0.54 510 -512 3 -61.98 -18.92 -16.94 0.54 511 -513 3 -63.16 -19.26 -18.08 0.54 512 -514 3 -63.47 -19.57 -18.16 0.54 513 -515 3 -64.11 -20.15 -18.53 0.54 514 -516 3 -64.76 -20.11 -18.92 0.54 515 -517 3 -65.52 -20.87 -18.92 0.54 516 -518 3 -65.65 -21.05 -20.29 0.54 517 -519 3 -65.8 -21.49 -20.48 0.54 518 -520 3 -66.24 -21.66 -21.89 0.54 519 -521 3 -66.09 -21.81 -21.84 0.54 520 -522 3 -65.97 -21.94 -22.24 0.54 521 -523 3 -66.03 -21.87 -22.91 0.54 522 -524 3 -65.79 -22.1 -23.72 0.54 523 -525 3 -65.66 -22.21 -24.11 0.54 524 -526 3 -65.56 -22.92 -24.72 0.54 525 -527 3 -65.5 -23.29 -25.67 0.54 526 -528 3 -65.7 -23.68 -26.37 0.54 527 -529 3 -65.88 -24.11 -26.69 0.54 528 -530 3 -65.95 -24.34 -27.47 0.54 529 -531 3 -66.0 -24.89 -28.04 0.54 530 -532 3 -66.14 -24.75 -29.53 0.54 531 -533 3 -66.17 -25.01 -30.08 0.54 532 -534 3 -66.41 -25.36 -31.07 0.54 533 -535 3 -66.47 -25.93 -31.66 0.54 534 -536 3 -67.13 -26.47 -32.33 0.54 535 -537 3 -67.32 -26.9 -32.73 0.54 536 -538 3 -67.71 -27.11 -33.62 0.54 537 -539 3 -68.11 -27.31 -34.74 0.54 538 -540 3 -68.29 -27.74 -35.07 0.54 539 -541 3 -68.48 -28.16 -35.55 0.54 540 -542 3 -68.82 -29.04 -35.97 0.54 541 -543 3 -65.85 -20.54 -20.83 0.54 517 -544 3 -66.61 -20.69 -20.77 0.54 543 -545 3 -68.01 -20.83 -20.97 0.54 544 -546 3 -69.3 -20.45 -21.72 0.54 545 -547 3 -71.02 -20.27 -21.99 0.54 546 -548 3 -71.91 -20.3 -23.28 0.54 547 -549 3 -73.47 -20.56 -23.68 0.54 548 -550 3 -75.26 -20.3 -24.77 0.54 549 -551 3 -77.1 -20.02 -24.66 0.54 550 -552 3 -78.96 -19.68 -24.82 0.54 551 -553 3 -80.73 -19.46 -25.63 0.54 552 -554 3 -82.71 -20.23 -25.59 0.54 553 -555 3 -84.53 -20.25 -25.42 0.54 554 -556 3 -86.26 -19.76 -25.75 0.54 555 -557 3 -87.79 -18.56 -25.49 0.54 556 -558 3 -89.16 -17.5 -25.26 0.54 557 -559 3 -90.21 -17.06 -25.04 0.54 558 -560 3 -92.19 -16.62 -24.81 0.54 559 -561 3 -93.6 -16.14 -25.02 0.54 560 -562 3 -94.25 -15.81 -25.3 0.54 561 -563 3 -96.38 -14.92 -25.02 0.54 562 -564 3 -24.5 -18.09 -7.92 0.54 491 -565 3 -26.66 -18.39 -8.06 0.54 564 -566 3 -28.03 -19.16 -8.08 0.54 565 -567 3 -29.48 -19.84 -8.99 0.54 566 -568 3 -29.94 -20.9 -9.13 0.54 567 -569 3 -30.25 -21.2 -9.13 0.54 568 -570 3 -31.18 -21.5 -7.63 0.54 569 -571 3 -32.1 -21.52 -7.55 0.54 570 -572 3 -34.69 -21.09 -7.28 0.54 571 -573 3 -38.04 -20.2 -6.96 0.54 572 -574 3 -40.66 -19.74 -6.9 0.54 573 -575 3 -41.28 -20.34 -7.05 0.54 574 -576 3 -43.0 -20.75 -7.53 0.54 575 -577 3 -43.16 -20.9 -7.68 0.54 576 -578 3 -43.07 -21.29 -6.75 0.54 577 -579 3 -43.92 -21.67 -5.95 0.54 578 -580 3 -45.55 -22.49 -5.42 0.54 579 -581 3 -47.53 -23.89 -5.38 0.54 580 -582 3 -49.35 -23.9 -5.14 0.54 581 -583 3 -52.08 -25.15 -5.0 0.54 582 -584 3 -53.9 -26.08 -4.92 0.54 583 -585 3 -55.41 -27.31 -4.77 0.54 584 -586 3 -57.2 -27.98 -4.36 0.54 585 -587 3 -59.45 -28.48 -3.9 0.54 586 -588 3 -61.09 -28.99 -3.41 0.54 587 -589 3 -63.5 -29.65 -2.96 0.54 588 -590 3 -65.78 -29.51 -2.73 0.54 589 -591 3 -69.56 -29.72 -2.18 0.54 590 -592 3 -71.53 -29.6 -1.84 0.54 591 -593 3 -73.15 -29.53 -0.99 0.54 592 -594 3 -73.43 -30.78 -0.87 0.54 593 -595 3 -74.0 -31.43 -0.5 0.54 594 -596 3 -76.57 -30.69 -0.12 0.54 595 -597 3 -79.45 -31.49 0.14 0.54 596 -598 3 -81.74 -31.97 0.31 0.54 597 -599 3 -84.31 -32.46 0.65 0.54 598 -600 3 -85.67 -33.25 0.84 0.54 599 -601 3 -87.01 -33.45 1.25 0.54 600 -602 3 -89.27 -33.94 1.64 0.54 601 -603 3 -90.76 -34.9 1.98 0.54 602 -604 3 -92.58 -36.14 2.12 0.54 603 -605 3 -93.74 -36.8 2.6 0.54 604 -606 3 -96.02 -37.9 2.78 0.54 605 -607 3 -96.78 -38.67 2.78 0.54 606 -608 3 -30.41 -22.58 -9.26 0.54 569 -609 3 -31.31 -24.71 -9.38 0.54 608 -610 3 -32.21 -26.85 -9.5 0.54 609 -611 3 -32.21 -28.06 -9.63 0.54 610 -612 3 -32.23 -28.94 -10.01 0.54 611 -613 3 -32.43 -29.97 -10.55 0.54 612 -614 3 -33.03 -31.18 -10.68 0.54 613 -615 3 -33.72 -32.01 -11.69 0.54 614 -616 3 -34.8 -32.47 -11.71 0.54 615 -617 3 -35.85 -33.55 -11.71 0.54 616 -618 3 -36.47 -34.77 -11.77 0.54 617 -619 3 -36.15 -36.29 -11.95 0.54 618 -620 3 -36.42 -36.55 -11.96 0.54 619 -621 3 -36.57 -37.32 -10.35 0.65 620 -622 3 -36.91 -37.59 -10.73 0.65 621 -623 3 -37.01 -37.49 -11.77 0.65 622 -624 3 -37.15 -37.96 -10.06 0.65 623 -625 3 -37.58 -38.45 -9.76 0.65 624 -626 3 -38.43 -38.82 -9.11 0.65 625 -627 3 -38.88 -39.29 -9.04 0.65 626 -628 3 -39.78 -39.01 -8.85 0.65 627 -629 3 -40.55 -38.86 -8.77 0.54 628 -630 3 -41.77 -38.87 -8.65 0.54 629 -631 3 -42.51 -39.64 -8.51 0.54 630 -632 3 -43.42 -40.58 -8.45 0.54 631 -633 3 -43.39 -42.11 -8.45 0.54 632 -634 3 -43.69 -42.74 -8.4 0.54 633 -635 3 -44.43 -43.52 -8.19 0.54 634 -636 3 -45.94 -43.85 -8.0 0.54 635 -637 3 -47.62 -43.72 -7.76 0.54 636 -638 3 -48.63 -44.23 -7.27 0.54 637 -639 3 -49.35 -45.04 -6.76 0.54 638 -640 3 -50.21 -45.4 -6.26 0.54 639 -641 3 -50.79 -46.05 -5.96 0.54 640 -642 3 -51.85 -47.74 -5.94 0.54 641 -643 3 -53.06 -48.36 -5.9 0.54 642 -644 3 -54.11 -49.45 -5.69 0.54 643 -645 3 -55.62 -50.38 -5.63 0.54 644 -646 3 -56.5 -51.33 -5.34 0.54 645 -647 3 -57.4 -51.64 -5.21 0.54 646 -648 3 -59.23 -50.75 -4.95 0.54 647 -649 3 -59.97 -51.54 -4.75 0.54 648 -650 3 -61.03 -52.62 -4.67 0.54 649 -651 3 -62.84 -53.27 -4.34 0.54 650 -652 3 -63.74 -54.5 -4.3 0.54 651 -653 3 -64.65 -55.42 -4.31 0.54 652 -654 3 -65.71 -55.88 -4.26 0.54 653 -655 3 -67.38 -55.75 -4.09 0.54 654 -656 3 -69.97 -56.54 -3.92 0.54 655 -657 3 -71.02 -58.52 -4.02 0.54 656 -658 3 -71.77 -59.29 -3.96 0.54 657 -659 3 -71.92 -60.98 -4.11 0.54 658 -660 3 -72.07 -62.04 -4.19 0.54 659 -661 3 -72.51 -62.82 -4.0 0.54 660 -662 3 -74.79 -62.7 -3.7 0.54 661 -663 3 -76.29 -63.03 -3.52 0.54 662 -664 3 -76.89 -63.65 -3.38 0.54 663 -665 3 -77.75 -64.63 -2.87 0.54 664 -666 3 -78.35 -65.25 -2.79 0.54 665 -667 3 -79.26 -66.17 -2.79 0.54 666 -668 3 -80.78 -66.49 -2.61 0.54 667 -669 3 -81.84 -67.57 -2.63 0.54 668 -670 3 -82.9 -68.64 -2.63 0.54 669 -671 3 -85.03 -68.97 -2.46 0.54 670 -672 3 -86.1 -70.04 -2.47 0.54 671 -673 3 -87.15 -70.52 -2.34 0.54 672 -674 3 -87.87 -71.62 -2.08 0.54 673 -675 3 -88.17 -71.94 -1.93 0.54 674 -676 3 -88.62 -72.4 -1.93 0.54 675 -677 3 -89.21 -73.02 -1.87 0.54 676 -678 3 -90.59 -73.18 -1.75 0.54 677 -679 3 -92.27 -73.35 -1.62 0.54 678 -680 3 -93.03 -74.13 -1.63 0.54 679 -681 3 -93.63 -74.73 -1.63 0.54 680 -682 3 -94.37 -75.52 -1.49 0.54 681 -683 3 -94.98 -76.74 -1.47 0.54 682 -684 3 -95.28 -77.66 -1.53 0.54 683 -685 3 -95.57 -78.28 -1.49 0.54 684 -686 3 -96.18 -79.2 -1.53 0.54 685 -687 3 -96.63 -79.96 -1.56 0.54 686 -688 3 -98.31 -79.81 -1.39 0.54 687 -689 3 -99.52 -79.83 -1.28 0.54 688 -690 3 -100.5 -80.4 -0.26 0.65 689 -691 3 -101.37 -81.06 0.2 0.65 690 -692 3 -101.93 -81.71 0.64 0.65 691 -693 3 -104.5 -82.22 1.12 0.65 692 -694 3 -107.38 -82.71 1.34 0.65 693 -695 3 -108.58 -83.33 1.48 0.65 694 -696 3 -110.26 -84.42 1.53 0.435 695 -697 3 -112.24 -84.59 1.69 0.435 696 -698 3 -113.74 -84.92 1.94 0.435 697 -699 3 -115.1 -86.3 2.09 0.435 698 -700 3 -115.4 -86.62 2.09 0.65 699 -701 3 -116.47 -87.09 2.14 0.65 700 -702 3 -117.67 -88.32 2.2 0.65 701 -703 3 -118.11 -89.99 2.08 0.65 702 -704 3 -117.51 -90.91 1.93 0.65 703 -705 3 -116.44 -91.96 1.81 0.65 704 -706 3 -116.38 -93.84 2.08 0.65 705 -707 3 -116.38 -94.75 2.06 0.65 706 -708 3 -116.66 -95.39 2.17 0.65 707 -709 3 -116.82 -95.84 2.22 0.65 708 -710 3 -117.38 -95.88 2.65 0.65 709 -711 3 -117.21 -97.57 2.55 0.65 710 -712 3 -117.31 -98.69 3.06 0.65 711 -713 3 -117.87 -99.35 3.56 0.65 712 -714 3 -118.31 -99.82 3.64 0.65 713 -715 3 -119.48 -99.89 4.34 0.65 714 -716 3 -119.79 -100.19 4.34 0.65 715 -717 3 -120.37 -100.84 4.64 0.65 716 -718 3 -121.26 -101.77 4.78 0.65 717 -719 3 -121.57 -102.09 4.78 0.65 718 -720 3 -122.02 -102.54 4.78 0.65 719 -721 3 -123.54 -102.26 5.02 0.65 720 -722 3 -124.3 -102.42 5.07 0.65 721 -723 3 -124.59 -102.74 5.14 0.65 722 -724 3 -124.74 -103.2 5.11 0.65 723 -725 3 -36.35 -37.31 -10.9 0.54 620 -726 3 -35.82 -37.83 -10.25 0.54 725 -727 3 -35.54 -38.11 -10.45 0.54 726 -728 3 -35.25 -38.41 -9.06 0.54 727 -729 3 -34.88 -38.78 -8.38 0.54 728 -730 3 -34.45 -39.82 -7.17 0.54 729 -731 3 -34.43 -40.75 -7.11 0.54 730 -732 3 -34.99 -42.63 -6.71 0.54 731 -733 3 -35.37 -44.07 -6.05 0.54 732 -734 3 -35.66 -44.7 -5.94 0.54 733 -735 3 -35.61 -45.35 -5.55 0.54 734 -736 3 -35.72 -46.45 -5.27 0.54 735 -737 3 -36.02 -47.07 -5.22 0.54 736 -738 3 -36.42 -47.6 -4.63 0.54 737 -739 3 -36.87 -48.68 -4.55 0.54 738 -740 3 -37.46 -49.3 -4.4 0.54 739 -741 3 -37.74 -49.94 -4.22 0.54 740 -742 3 -38.08 -51.13 -3.09 0.54 741 -743 3 -37.89 -52.21 -2.84 0.54 742 -744 3 -38.14 -53.2 -2.31 0.54 743 -745 3 -38.38 -54.17 -1.7 0.54 744 -746 3 -38.36 -55.11 -1.64 0.54 745 -747 3 -38.5 -55.57 -1.52 0.54 746 -748 3 -38.49 -55.89 -1.4 0.54 747 -749 3 -38.75 -56.54 -1.06 0.54 748 -750 3 -39.46 -57.36 -0.54 0.54 749 -751 3 -40.96 -57.7 -0.14 0.54 750 -752 3 -42.01 -57.87 0.0 0.54 751 -753 3 -42.45 -58.35 0.23 0.54 752 -754 3 -43.05 -58.98 0.29 0.54 753 -755 3 6.7 -3.75 -5.33 0.865 1 -756 3 7.16 -4.21 -5.41 0.865 755 -757 3 8.22 -4.04 -5.49 0.865 756 -758 3 9.44 -4.63 -5.66 0.865 757 -759 3 10.51 -5.08 -5.81 0.865 758 -760 3 11.58 -6.45 -6.04 0.865 759 -761 3 12.35 -7.2 -6.18 0.54 760 -762 3 14.62 -7.02 -6.37 0.54 761 -763 3 16.16 -7.01 -6.52 0.54 762 -764 3 16.73 -7.29 -5.23 0.54 763 -765 3 17.34 -7.28 -5.29 0.54 764 -766 3 18.42 -6.85 -3.46 0.54 765 -767 3 19.63 -5.01 -3.39 0.54 766 -768 3 20.89 -4.13 -4.55 0.54 767 -769 3 22.56 -3.66 -4.66 0.54 768 -770 3 23.48 -3.35 -4.72 0.54 769 -771 3 24.39 -2.42 -4.71 0.54 770 -772 3 25.0 -1.82 -4.71 0.54 771 -773 3 27.48 -1.23 -6.0 0.54 772 -774 3 29.0 -1.51 -6.17 0.54 773 -775 3 29.91 -0.59 -6.17 0.54 774 -776 3 31.13 0.63 -6.16 0.54 775 -777 3 32.73 1.79 -6.95 0.54 776 -778 3 34.85 3.33 -7.0 0.54 777 -779 3 36.38 4.25 -7.05 0.54 778 -780 3 39.25 5.95 -7.15 0.54 779 -781 3 41.7 6.88 -7.28 0.54 780 -782 3 44.17 7.47 -8.52 0.54 781 -783 3 45.54 7.95 -8.75 0.54 782 -784 3 46.67 8.34 -7.98 0.54 783 -785 3 48.22 8.32 -7.82 0.54 784 -786 3 49.47 8.61 -7.53 0.54 785 -787 3 50.45 8.24 -6.98 0.54 786 -788 3 52.97 7.87 -6.34 0.54 787 -789 3 54.85 8.43 -5.78 0.54 788 -790 3 56.74 8.68 -5.18 0.54 789 -791 3 58.14 9.43 -5.0 0.54 790 -792 3 59.39 9.7 -4.63 0.54 791 -793 3 60.79 10.44 -4.32 0.54 792 -794 3 62.66 10.41 -4.04 0.54 793 -795 3 65.9 10.85 -3.76 0.54 794 -796 3 18.25 -7.88 -5.43 0.54 765 -797 3 19.2 -8.81 -5.31 0.54 796 -798 3 19.5 -10.04 -5.37 0.54 797 -799 3 19.68 -10.81 -5.32 0.54 798 -800 3 21.72 -13.13 -5.06 0.54 799 -801 3 23.56 -14.94 -5.4 0.54 800 -802 3 24.81 -16.17 -5.41 0.54 801 -803 3 26.03 -18.3 -5.59 0.54 802 -804 3 26.38 -18.96 -5.23 0.54 803 -805 3 26.56 -19.43 -5.06 0.54 804 -806 3 26.58 -20.67 -5.03 0.54 805 -807 3 26.88 -21.57 -5.14 0.54 806 -808 3 27.2 -22.79 -5.22 0.54 807 -809 3 27.99 -23.57 -5.13 0.54 808 -810 3 29.55 -24.49 -4.99 0.54 809 -811 3 31.08 -24.2 -5.03 0.54 810 -812 3 33.23 -23.6 -4.79 0.54 811 -813 3 34.92 -24.35 -4.94 0.54 812 -814 3 36.3 -25.12 -4.99 0.54 813 -815 3 37.35 -25.55 -5.28 0.54 814 -816 3 38.39 -25.36 -5.66 0.54 815 -817 3 39.69 -25.1 -6.6 0.54 816 -818 3 41.21 -25.7 -6.8 0.54 817 -819 3 41.11 -26.5 -8.07 0.435 818 -820 3 41.28 -26.98 -7.9 0.435 819 -821 3 41.37 -27.36 -8.7 0.435 820 -822 3 41.43 -27.72 -9.65 0.435 821 -823 3 41.51 -28.11 -10.53 0.435 822 -824 3 41.7 -28.58 -11.96 0.435 823 -825 3 43.52 -30.38 -12.38 0.435 824 -826 3 44.59 -31.74 -12.61 0.435 825 -827 3 45.81 -34.47 -13.0 0.435 826 -828 3 48.56 -36.26 -13.42 0.435 827 -829 3 49.79 -38.08 -13.71 0.435 828 -830 3 50.69 -39.29 -13.91 0.435 829 -831 3 50.1 -40.51 -13.97 0.435 830 -832 3 47.97 -41.44 -13.87 0.435 831 -833 3 47.06 -42.66 -13.91 0.435 832 -834 3 47.67 -44.48 -14.14 0.435 833 -835 3 49.35 -44.92 -14.33 0.435 834 -836 3 50.37 -45.02 -14.96 0.435 835 -837 3 50.05 -46.22 -15.28 0.435 836 -838 3 49.9 -47.27 -15.45 0.435 837 -839 3 49.75 -49.25 -15.62 0.435 838 -840 3 49.75 -50.47 -15.74 0.435 839 -841 3 49.59 -51.52 -15.98 0.435 840 -842 3 49.53 -52.98 -16.73 0.435 841 -843 3 49.98 -54.33 -17.05 0.435 842 -844 3 50.87 -55.81 -17.58 0.435 843 -845 3 51.79 -57.63 -17.85 0.435 844 -846 3 52.1 -59.75 -18.15 0.435 845 -847 3 52.26 -62.03 -18.38 0.435 846 -848 3 52.85 -62.92 -18.67 0.435 847 -849 3 53.77 -63.52 -18.91 0.435 848 -850 3 54.58 -65.83 -20.41 0.435 849 -851 3 54.57 -67.64 -20.66 0.435 850 -852 3 54.7 -69.58 -21.25 0.435 851 -853 3 54.93 -71.32 -22.26 0.435 852 -854 3 56.08 -72.45 -23.31 0.435 853 -855 3 57.4 -74.07 -24.12 0.435 854 -856 3 58.83 -75.75 -25.63 0.435 855 -857 3 61.87 -78.15 -26.21 0.435 856 -858 3 63.91 -79.24 -27.57 0.435 857 -859 3 66.44 -81.15 -28.52 0.435 858 -860 3 67.97 -82.65 -28.87 0.435 859 -861 3 68.9 -84.76 -29.17 0.435 860 -862 3 70.27 -86.12 -29.43 0.435 861 -863 3 72.7 -86.41 -29.68 0.435 862 -864 3 74.37 -87.44 -30.09 0.435 863 -865 3 76.32 -89.68 -30.79 0.435 864 -866 3 77.64 -91.58 -31.71 0.435 865 -867 3 77.81 -92.34 -33.31 0.435 866 -868 3 78.38 -93.21 -33.98 0.435 867 -869 3 79.18 -94.29 -35.44 0.435 868 -870 3 80.02 -95.42 -36.38 0.435 869 -871 3 79.7 -97.22 -36.84 0.435 870 -872 3 79.68 -100.23 -37.49 0.435 871 -873 3 81.27 -104.22 -39.09 0.435 872 -874 3 82.94 -106.47 -39.54 0.435 873 -875 3 84.3 -108.12 -39.98 0.435 874 -876 3 84.22 -110.15 -41.09 0.435 875 -877 3 83.92 -111.99 -41.3 0.435 876 -878 3 83.01 -114.72 -41.57 0.435 877 -879 3 83.16 -115.79 -41.69 0.435 878 -880 3 84.18 -117.08 -42.58 0.435 879 -881 3 85.78 -118.66 -43.64 0.435 880 -882 3 86.0 -120.08 -44.85 0.435 881 -883 3 86.26 -120.62 -45.54 0.435 882 -884 3 87.14 -121.81 -45.96 0.435 883 -885 3 88.82 -122.26 -46.16 0.435 884 -886 3 89.68 -124.0 -47.16 0.435 885 -887 3 89.84 -126.28 -47.4 0.435 886 -888 3 91.66 -128.08 -47.83 0.435 887 -889 3 93.26 -128.44 -48.84 0.435 888 -890 3 94.76 -128.1 -49.18 0.435 889 -891 3 95.21 -128.56 -49.26 0.435 890 -892 3 41.61 -25.79 -7.52 0.54 818 -893 3 44.26 -26.59 -8.82 0.54 892 -894 3 46.54 -26.4 -9.01 0.54 893 -895 3 48.66 -26.67 -9.47 0.54 894 -896 3 50.33 -27.72 -9.72 0.54 895 -897 3 52.09 -28.24 -10.61 0.54 896 -898 3 54.16 -29.07 -11.64 0.54 897 -899 3 55.53 -29.2 -11.78 0.54 898 -900 3 56.54 -30.2 -10.99 0.54 899 -901 3 58.49 -30.93 -9.81 0.54 900 -902 3 60.79 -32.89 -10.21 0.54 901 -903 3 63.02 -34.5 -9.37 0.54 902 -904 3 65.02 -35.86 -9.6 0.54 903 -905 3 66.69 -37.83 -9.95 0.54 904 -906 3 67.76 -39.18 -10.18 0.54 905 -907 3 69.76 -41.14 -10.55 0.54 906 -908 3 71.64 -42.09 -10.14 0.54 907 -909 3 72.86 -43.0 -10.35 0.54 908 -910 3 73.48 -43.9 -10.49 0.54 909 -911 4 -2.36 9.28 -0.57 4.11 1 -912 4 -2.99 13.54 -0.1 3.14 911 -913 4 -3.77 16.72 0.27 2.49 912 -914 4 -4.07 19.45 0.57 1.73 913 -915 4 -4.39 21.59 0.8 1.515 914 -916 4 -5.0 23.4 1.12 1.405 915 -917 4 -5.16 25.07 1.3 1.405 916 -918 4 -5.16 26.28 1.42 1.405 917 -919 4 -5.46 27.8 1.66 1.405 918 -920 4 -5.05 29.49 3.08 1.73 919 -921 4 -4.75 31.94 3.29 1.73 920 -922 4 -5.06 34.06 3.52 1.73 921 -923 4 -5.52 36.34 3.79 1.73 922 -924 4 -5.87 38.81 3.61 1.405 923 -925 4 -5.8 40.87 2.97 1.405 924 -926 4 -5.82 42.7 3.08 1.19 925 -927 4 -5.37 44.38 3.2 1.19 926 -928 4 -5.22 46.05 3.35 1.19 927 -929 4 -4.31 47.89 3.45 1.19 928 -930 4 -3.71 50.02 3.6 1.19 929 -931 4 -2.65 51.7 3.67 1.19 930 -932 4 -1.75 54.45 3.84 1.19 931 -933 4 -1.45 55.98 3.97 1.19 932 -934 4 -1.43 57.49 2.68 1.19 933 -935 4 -1.34 58.92 3.72 1.19 934 -936 4 -1.66 60.43 3.97 1.19 935 -937 4 -1.36 61.35 3.97 1.19 936 -938 4 -2.03 62.01 3.48 1.19 937 -939 4 -2.42 63.01 2.71 1.19 938 -940 4 -2.68 62.9 3.33 0.54 939 -941 4 -3.28 62.89 3.38 0.54 940 -942 4 -3.26 62.88 3.53 0.54 941 -943 4 -3.2 62.81 4.27 0.54 942 -944 4 -3.18 62.79 4.49 0.54 943 -945 4 -3.56 62.84 5.44 0.54 944 -946 4 -3.5 62.49 6.01 0.54 945 -947 4 -3.44 62.43 6.67 0.54 946 -948 4 -3.33 62.31 7.86 0.54 947 -949 4 -3.13 62.11 8.28 0.54 948 -950 4 -3.12 61.49 8.37 0.54 949 -951 4 -3.11 60.57 8.28 0.54 950 -952 4 -3.24 59.47 8.56 0.54 951 -953 4 -3.23 58.56 8.47 0.54 952 -954 4 -3.22 57.95 8.48 0.54 953 -955 4 -3.81 57.02 8.53 0.54 954 -956 4 -4.11 56.71 8.6 0.54 955 -957 4 -5.02 57.0 8.79 0.54 956 -958 4 -5.55 57.5 9.87 0.54 957 -959 4 -6.0 58.57 10.01 0.65 958 -960 4 -6.76 59.01 10.12 0.65 959 -961 4 -7.3 58.93 10.92 0.65 960 -962 4 -8.11 58.83 10.45 0.65 961 -963 4 -8.11 60.05 8.99 0.65 962 -964 4 -7.92 60.48 7.8 0.65 963 -965 4 -9.09 61.64 6.89 0.65 964 -966 4 -9.86 62.4 6.89 0.65 965 -967 4 -11.04 63.28 5.79 0.65 966 -968 4 -12.6 63.9 5.7 0.65 967 -969 4 -14.08 64.45 4.69 0.65 968 -970 4 -14.86 65.22 4.75 0.65 969 -971 4 -16.53 66.26 5.01 0.65 970 -972 4 -17.44 67.16 5.18 0.65 971 -973 4 -17.75 67.47 5.24 0.65 972 -974 4 -18.66 67.76 5.35 0.65 973 -975 4 -19.88 68.37 5.52 0.65 974 -976 4 -21.15 69.63 5.15 0.65 975 -977 4 -21.96 71.62 5.12 0.65 976 -978 4 -22.38 72.05 3.84 0.65 977 -979 4 -22.04 73.24 2.8 0.65 978 -980 4 -22.69 73.88 2.38 0.435 979 -981 4 -23.76 74.94 2.66 0.435 980 -982 4 -23.91 76.0 2.78 0.54 981 -983 4 -24.22 77.83 2.98 0.54 982 -984 4 -24.36 79.48 3.24 0.54 983 -985 4 -24.22 80.86 3.28 0.54 984 -986 4 -24.13 81.98 2.78 0.54 985 -987 4 -24.25 83.31 1.79 0.54 986 -988 4 -23.93 84.83 0.32 0.54 987 -989 4 -24.03 85.56 -0.72 0.54 988 -990 4 -23.99 87.04 -1.8 0.54 989 -991 4 -24.53 88.18 -2.39 0.54 990 -992 4 -25.3 89.55 -4.0 0.54 991 -993 4 -25.85 91.31 -4.69 0.54 992 -994 4 -26.54 93.82 -5.29 0.54 993 -995 4 -26.94 96.94 -5.77 0.54 994 -996 4 -26.5 99.86 -5.68 0.54 995 -997 4 -25.4 101.2 -6.86 0.54 996 -998 4 -24.5 102.74 -6.87 0.54 997 -999 4 -24.36 105.01 -6.66 0.54 998 -1000 4 -23.75 105.63 -6.73 0.54 999 -1001 4 -22.53 105.95 -6.81 0.54 1000 -1002 4 -21.96 106.6 -7.18 0.54 1001 -1003 4 -21.07 107.54 -7.4 0.54 1002 -1004 4 -20.88 107.97 -8.66 0.54 1003 -1005 4 -20.98 108.68 -9.57 0.54 1004 -1006 4 -21.55 110.15 -10.59 0.54 1005 -1007 4 -22.0 110.61 -12.0 0.54 1006 -1008 4 -22.54 110.53 -12.87 0.54 1007 -1009 4 -23.53 110.0 -13.74 0.54 1008 -1010 4 -24.05 109.62 -14.48 0.54 1009 -1011 4 -24.55 108.9 -15.04 0.54 1010 -1012 4 -24.91 108.66 -15.7 0.54 1011 -1013 4 -25.63 108.16 -16.9 0.54 1012 -1014 4 -27.38 107.78 -17.6 0.54 1013 -1015 4 -29.09 107.35 -18.02 0.54 1014 -1016 4 -30.38 106.79 -18.63 0.54 1015 -1017 4 -31.99 105.66 -19.65 0.54 1016 -1018 4 -33.92 105.15 -20.66 0.54 1017 -1019 4 -35.31 105.02 -20.85 0.54 1018 -1020 4 -36.26 104.14 -21.23 0.54 1019 -1021 4 -37.38 103.73 -21.84 0.54 1020 -1022 4 -38.82 103.03 -22.53 0.54 1021 -1023 4 -39.89 102.56 -22.55 0.54 1022 -1024 4 -21.12 73.85 2.77 0.435 979 -1025 4 -20.74 75.31 2.04 0.435 1024 -1026 4 -21.43 75.38 1.21 0.54 1025 -1027 4 -22.5 76.74 1.44 0.54 1026 -1028 4 -24.34 77.95 1.72 0.54 1027 -1029 4 -25.85 78.23 1.89 0.54 1028 -1030 4 -27.46 79.21 1.31 0.54 1029 -1031 4 -29.09 80.52 0.37 0.54 1030 -1032 4 -30.73 81.25 -0.68 0.54 1031 -1033 4 -31.11 81.93 -1.33 0.54 1032 -1034 4 -32.04 82.54 -1.34 0.54 1033 -1035 4 -32.62 83.11 -2.51 0.54 1034 -1036 4 -33.03 83.23 -3.67 0.54 1035 -1037 4 -33.66 83.85 -3.79 0.54 1036 -1038 4 -34.42 84.31 -5.41 0.54 1037 -1039 4 -34.98 84.86 -4.7 0.54 1038 -1040 4 -35.5 85.38 -5.28 0.54 1039 -1041 4 -36.26 86.44 -6.7 0.54 1040 -1042 4 -36.87 87.35 -6.55 0.54 1041 -1043 4 -38.48 88.04 -7.4 0.54 1042 -1044 4 -40.59 88.91 -8.48 0.54 1043 -1045 4 -42.74 89.84 -8.4 0.54 1044 -1046 4 -44.31 90.47 -8.73 0.54 1045 -1047 4 -45.65 92.4 -9.63 0.54 1046 -1048 4 -46.08 93.44 -10.85 0.54 1047 -1049 4 -2.27 64.69 2.78 1.19 939 -1050 4 -1.98 65.92 2.81 1.19 1049 -1051 4 -1.53 66.99 2.87 1.19 1050 -1052 4 -0.62 69.11 3.05 1.19 1051 -1053 4 -0.92 70.01 3.25 1.19 1052 -1054 4 -1.19 71.49 3.88 1.19 1053 -1055 4 -2.26 72.5 4.08 1.19 1054 -1056 4 -1.69 72.84 5.34 0.54 1055 -1057 4 -1.53 73.28 5.59 0.54 1056 -1058 4 -1.03 73.39 5.93 0.54 1057 -1059 4 -0.89 74.16 5.91 0.54 1058 -1060 4 -0.13 75.84 6.01 0.54 1059 -1061 4 0.46 77.68 6.13 0.54 1060 -1062 4 0.91 78.75 6.19 0.54 1061 -1063 4 0.02 79.93 6.69 0.54 1062 -1064 4 -0.87 80.82 6.94 0.54 1063 -1065 4 -1.18 83.25 7.21 0.54 1064 -1066 4 -1.14 84.41 7.93 0.54 1065 -1067 4 -1.51 85.09 7.27 0.54 1066 -1068 4 -1.52 85.99 7.43 0.54 1067 -1069 4 -1.73 86.82 6.85 0.54 1068 -1070 4 -1.93 87.64 6.35 0.54 1069 -1071 4 -2.29 88.0 5.81 0.54 1070 -1072 4 -2.37 88.68 5.06 0.54 1071 -1073 4 -2.92 89.83 4.23 0.54 1072 -1074 4 -2.86 90.69 3.33 0.54 1073 -1075 4 -3.25 91.68 2.62 0.54 1074 -1076 4 -3.31 92.36 2.02 0.54 1075 -1077 4 -4.27 94.22 1.77 0.54 1076 -1078 4 -4.28 95.44 1.89 0.54 1077 -1079 4 -4.44 96.5 1.92 0.54 1078 -1080 4 -4.95 97.32 1.45 0.54 1079 -1081 4 -4.83 98.72 1.35 0.54 1080 -1082 4 -5.2 99.99 0.83 0.54 1081 -1083 4 -5.57 101.57 0.34 0.54 1082 -1084 4 -5.51 102.44 -0.64 0.54 1083 -1085 4 -6.15 102.16 -2.57 0.54 1084 -1086 4 -6.45 102.17 -2.54 0.54 1085 -1087 4 -7.51 102.61 -2.4 0.54 1086 -1088 4 -7.83 103.82 -2.26 0.54 1087 -1089 4 -7.82 104.73 -2.09 0.54 1088 -1090 4 -7.83 105.65 -1.99 0.54 1089 -1091 4 -8.17 106.6 -2.4 0.54 1090 -1092 4 -8.11 107.45 -3.15 0.54 1091 -1093 4 -8.11 108.07 -4.84 0.54 1092 -1094 4 -8.42 108.38 -6.45 0.54 1093 -1095 4 -9.37 109.01 -6.67 0.54 1094 -1096 4 -9.37 110.83 -6.43 0.54 1095 -1097 4 -9.28 112.27 -6.96 0.54 1096 -1098 4 -9.84 112.83 -7.99 0.54 1097 -1099 4 -10.31 113.3 -8.13 0.54 1098 -1100 4 -11.46 115.96 -8.6 0.54 1099 -1101 4 -11.75 118.36 -9.69 0.54 1100 -1102 4 -11.68 120.11 -10.37 0.54 1101 -1103 4 -11.17 122.05 -11.21 0.54 1102 -1104 4 -12.02 123.2 -12.0 0.54 1103 -1105 4 -13.35 125.12 -12.89 0.54 1104 -1106 4 -12.85 126.46 -13.87 0.54 1105 -1107 4 -12.1 127.24 -14.02 0.54 1106 -1108 4 -10.88 129.37 -13.91 0.54 1107 -1109 4 -10.66 131.88 -14.45 0.54 1108 -1110 4 -10.24 134.8 -14.5 0.54 1109 -1111 4 -9.71 136.09 -15.19 0.54 1110 -1112 4 -9.21 137.74 -16.28 0.54 1111 -1113 4 -8.85 139.52 -17.12 0.54 1112 -1114 4 -8.37 140.88 -18.47 0.54 1113 -1115 4 -8.15 142.17 -19.2 0.54 1114 -1116 4 -7.47 143.03 -20.17 0.54 1115 -1117 4 -6.98 143.76 -21.34 0.54 1116 -1118 4 -6.3 144.62 -22.15 0.54 1117 -1119 4 -5.65 145.49 -23.34 0.54 1118 -1120 4 -4.55 146.83 -24.52 0.54 1119 -1121 4 -4.03 147.56 -25.56 0.54 1120 -1122 4 -3.49 148.24 -26.29 0.54 1121 -1123 4 -2.86 149.13 -27.56 0.54 1122 -1124 4 -1.65 150.97 -27.55 0.54 1123 -1125 4 -1.2 152.35 -29.06 0.54 1124 -1126 4 0.46 154.05 -29.11 0.54 1125 -1127 4 -2.56 72.54 4.11 1.19 1055 -1128 4 -4.2 74.16 4.79 1.08 1127 -1129 4 -5.12 75.06 5.04 1.08 1128 -1130 4 -5.32 75.9 5.51 0.54 1129 -1131 4 -4.55 76.67 5.52 0.54 1130 -1132 4 -2.73 76.99 5.39 0.54 1131 -1133 4 0.29 77.02 5.11 0.54 1132 -1134 4 2.09 76.76 4.54 0.54 1133 -1135 4 4.1 76.3 4.61 0.54 1134 -1136 4 6.44 75.81 4.88 0.54 1135 -1137 4 9.03 74.46 4.59 0.54 1136 -1138 4 11.15 73.57 4.3 0.54 1137 -1139 4 12.56 73.4 4.45 0.54 1138 -1140 4 14.72 72.48 4.46 0.54 1139 -1141 4 16.24 71.58 4.24 0.54 1140 -1142 4 17.65 70.18 4.35 0.54 1141 -1143 4 20.1 68.37 4.02 0.54 1142 -1144 4 21.94 68.38 4.0 0.54 1143 -1145 4 23.51 68.34 4.38 0.54 1144 -1146 4 24.77 68.32 4.65 0.54 1145 -1147 4 26.58 68.03 4.45 0.54 1146 -1148 4 28.73 66.83 4.21 0.54 1147 -1149 4 31.16 67.15 4.02 0.54 1148 -1150 4 34.23 66.84 4.01 0.54 1149 -1151 4 37.46 65.47 3.95 0.54 1150 -1152 4 39.76 65.63 3.9 0.54 1151 -1153 4 42.35 65.8 3.76 0.54 1152 -1154 4 45.1 66.44 3.64 0.54 1153 -1155 4 46.65 66.11 3.77 0.54 1154 -1156 4 49.09 64.29 3.45 0.54 1155 -1157 4 51.69 62.65 3.05 0.54 1156 -1158 4 53.37 63.12 2.94 0.54 1157 -1159 4 55.18 64.05 2.86 0.54 1158 -1160 4 62.55 62.92 2.23 0.54 1159 -1161 4 66.81 62.05 1.75 0.54 1160 -1162 4 69.42 61.89 1.79 0.54 1161 -1163 4 70.71 61.85 2.34 0.54 1162 -1164 4 71.95 60.62 2.34 0.54 1163 -1165 4 74.38 60.03 2.06 0.54 1164 -1166 4 76.51 60.05 1.87 0.54 1165 -1167 4 76.74 59.83 2.57 0.54 1166 -1168 4 78.33 59.47 3.22 0.54 1167 -1169 4 79.02 58.79 3.85 0.54 1168 -1170 4 79.24 58.56 4.57 0.54 1169 -1171 4 79.18 57.1 5.41 0.54 1170 -1172 4 78.9 56.15 5.64 0.54 1171 -1173 4 78.68 55.45 6.5 0.54 1172 -1174 4 78.42 55.1 6.94 0.54 1173 -1175 4 78.14 54.47 7.21 0.54 1174 -1176 4 -6.09 76.33 6.23 1.08 1129 -1177 4 -6.97 77.79 6.92 1.08 1176 -1178 4 -6.79 78.22 7.24 1.08 1177 -1179 4 -6.31 79.27 7.52 1.08 1178 -1180 4 -5.77 79.63 8.49 1.08 1179 -1181 4 -5.31 80.69 8.77 1.08 1180 -1182 4 -4.24 82.37 8.85 1.08 1181 -1183 4 -3.78 82.82 8.93 1.08 1182 -1184 4 -3.8 83.87 9.55 1.08 1183 -1185 4 -3.8 86.0 9.76 1.08 1184 -1186 4 -4.21 87.32 8.86 1.08 1185 -1187 4 -4.67 88.38 9.02 1.08 1186 -1188 4 -5.57 89.89 7.73 1.405 1187 -1189 4 -6.18 91.4 7.93 1.405 1188 -1190 4 -6.29 92.12 8.47 1.3 1189 -1191 4 -6.35 92.48 8.73 1.3 1190 -1192 4 -5.43 91.69 7.22 0.11 1191 -1193 4 -4.97 92.16 7.3 0.435 1192 -1194 4 -4.52 93.52 7.4 0.435 1193 -1195 4 -3.75 95.19 7.49 0.435 1194 -1196 4 -2.85 96.11 7.56 0.435 1195 -1197 4 -1.34 96.74 7.48 0.435 1196 -1198 4 -0.13 96.77 7.22 0.435 1197 -1199 4 1.04 97.42 6.81 0.435 1198 -1200 4 2.99 98.23 6.32 0.435 1199 -1201 4 4.03 99.03 6.08 0.435 1200 -1202 4 5.07 100.41 5.96 0.435 1201 -1203 4 6.42 101.2 5.77 0.435 1202 -1204 4 8.85 102.46 5.52 0.435 1203 -1205 4 9.2 103.02 4.48 0.435 1204 -1206 4 10.99 103.99 3.95 0.435 1205 -1207 4 12.96 105.69 3.94 0.435 1206 -1208 4 15.08 107.22 3.81 0.435 1207 -1209 4 16.37 108.09 2.95 0.435 1208 -1210 4 18.6 109.22 2.32 0.435 1209 -1211 4 21.77 110.34 1.91 0.435 1210 -1212 4 23.85 111.03 1.18 0.435 1211 -1213 4 26.71 111.84 0.7 0.435 1212 -1214 4 29.14 113.08 0.59 0.435 1213 -1215 4 31.56 113.73 0.21 0.435 1214 -1216 4 33.64 114.71 -0.4 0.435 1215 -1217 4 35.75 115.65 -0.58 0.435 1216 -1218 4 39.1 117.21 -0.74 0.435 1217 -1219 4 41.37 119.2 -0.75 0.435 1218 -1220 4 43.96 120.89 -0.83 0.435 1219 -1221 4 47.91 123.37 -0.95 0.435 1220 -1222 4 50.77 124.17 -1.29 0.435 1221 -1223 4 52.39 123.8 -2.23 0.435 1222 -1224 4 55.57 123.99 -2.59 0.435 1223 -1225 4 58.26 124.68 -3.29 0.435 1224 -1226 4 61.6 125.33 -3.62 0.435 1225 -1227 4 65.79 126.35 -4.59 0.435 1226 -1228 4 69.02 127.72 -6.04 0.435 1227 -1229 4 72.83 127.0 -6.53 0.435 1228 -1230 4 77.43 127.39 -7.0 0.435 1229 -1231 4 81.36 128.35 -7.33 0.435 1230 -1232 4 84.07 129.01 -7.82 0.435 1231 -1233 4 86.66 128.58 -8.11 0.435 1232 -1234 4 88.95 128.75 -8.3 0.435 1233 -1235 4 90.32 128.61 -8.44 0.435 1234 -1236 4 -6.92 93.64 8.6 1.3 1190 -1237 4 -6.7 94.03 9.3 1.3 1236 -1238 4 -7.6 95.22 9.65 1.3 1237 -1239 4 -8.01 95.74 9.74 1.3 1238 -1240 4 -6.77 95.72 9.93 0.435 1239 -1241 4 -6.3 95.85 10.13 0.435 1240 -1242 4 -5.99 96.17 10.13 0.435 1241 -1243 4 -5.56 96.37 9.72 0.435 1242 -1244 4 -5.11 96.52 9.7 0.435 1243 -1245 4 -3.65 97.2 9.02 0.435 1244 -1246 4 -3.22 96.78 8.64 0.435 1245 -1247 4 -1.59 96.69 7.95 0.435 1246 -1248 4 0.06 96.27 7.54 0.435 1247 -1249 4 0.75 95.59 6.65 0.435 1248 -1250 4 1.95 94.41 6.19 0.435 1249 -1251 4 3.43 93.55 5.52 0.435 1250 -1252 4 4.94 93.58 5.16 0.435 1251 -1253 4 6.69 93.67 4.25 0.435 1252 -1254 4 7.39 93.9 3.52 0.435 1253 -1255 4 7.55 94.05 1.94 0.435 1254 -1256 4 7.86 93.75 1.95 0.435 1255 -1257 4 8.62 93.6 1.87 0.435 1256 -1258 4 8.47 93.76 0.24 0.435 1257 -1259 4 8.55 93.69 -0.6 0.435 1258 -1260 4 8.65 93.28 -1.17 0.435 1259 -1261 4 8.86 93.09 -2.27 0.435 1260 -1262 4 9.6 92.98 -2.73 0.435 1261 -1263 4 10.35 92.85 -2.97 0.435 1262 -1264 4 11.04 93.07 -3.62 0.435 1263 -1265 4 12.22 92.49 0.75 0.435 1264 -1266 4 12.37 91.72 0.66 0.435 1265 -1267 4 12.64 91.46 0.24 0.435 1266 -1268 4 12.07 91.13 -1.02 0.435 1267 -1269 4 12.68 90.22 -1.24 0.435 1268 -1270 4 13.27 89.64 -1.58 0.435 1269 -1271 4 13.77 88.24 -2.98 0.435 1270 -1272 4 14.83 87.19 -3.25 0.435 1271 -1273 4 15.9 86.75 -3.39 0.435 1272 -1274 4 16.34 85.41 -3.71 0.435 1273 -1275 4 16.74 84.41 -4.6 0.435 1274 -1276 4 17.49 83.36 -4.85 0.435 1275 -1277 4 17.74 82.52 -5.71 0.435 1276 -1278 4 17.35 81.99 -6.48 0.435 1277 -1279 4 16.73 81.39 -6.71 0.435 1278 -1280 4 16.61 80.62 -8.14 0.435 1279 -1281 4 16.89 79.13 -8.68 0.435 1280 -1282 4 17.51 77.92 -8.85 0.435 1281 -1283 4 17.9 76.92 -9.67 0.435 1282 -1284 4 18.34 75.89 -10.12 0.435 1283 -1285 4 18.93 75.3 -10.39 0.435 1284 -1286 4 19.68 75.17 -10.54 0.435 1285 -1287 4 20.75 75.34 -10.7 0.435 1286 -1288 4 21.77 74.33 -11.35 0.435 1287 -1289 4 22.35 73.44 -11.79 0.435 1288 -1290 4 22.45 73.35 -12.41 0.435 1289 -1291 4 22.72 71.88 -13.03 0.435 1290 -1292 4 23.1 69.68 -14.19 0.435 1291 -1293 4 24.33 68.48 -14.42 0.435 1292 -1294 4 24.92 67.6 -14.79 0.435 1293 -1295 4 26.7 66.45 -15.59 0.435 1294 -1296 4 27.74 64.82 -16.14 0.435 1295 -1297 4 30.33 61.95 -16.75 0.435 1296 -1298 4 32.47 60.45 -17.09 0.435 1297 -1299 4 33.38 59.54 -17.26 0.435 1298 -1300 4 35.28 56.77 -18.68 0.435 1299 -1301 4 35.84 55.31 -19.42 0.435 1300 -1302 4 36.6 54.26 -19.66 0.435 1301 -1303 4 37.2 53.36 -19.88 0.435 1302 -1304 4 37.67 52.92 -19.97 0.435 1303 -1305 4 38.06 52.53 -20.8 0.435 1304 -1306 4 38.49 52.1 -21.18 0.435 1305 -1307 4 -8.0 96.22 10.54 1.3 1239 -1308 4 -8.91 97.42 10.82 1.3 1307 -1309 4 -10.54 98.52 11.08 1.3 1308 -1310 4 -11.37 99.05 12.03 0.54 1309 -1311 4 -12.45 99.8 12.2 0.54 1310 -1312 4 -13.21 100.55 12.35 0.54 1311 -1313 4 -14.17 100.6 11.92 0.54 1312 -1314 4 -15.54 101.05 12.01 0.54 1313 -1315 4 -16.17 102.27 12.04 0.54 1314 -1316 4 -17.05 103.14 12.59 0.54 1315 -1317 4 -19.02 105.37 13.29 0.54 1316 -1318 4 -19.32 106.29 13.4 0.54 1317 -1319 4 -19.78 107.34 13.55 0.54 1318 -1320 4 -20.55 109.01 13.79 0.54 1319 -1321 4 -20.8 108.95 14.41 0.54 1320 -1322 4 -21.56 109.39 14.52 0.54 1321 -1323 4 -22.61 109.53 14.7 0.54 1322 -1324 4 -23.57 109.86 14.45 0.54 1323 -1325 4 -24.08 110.37 13.94 0.54 1324 -1326 4 -23.72 112.15 13.02 0.54 1325 -1327 4 -24.34 112.46 13.03 0.54 1326 -1328 4 -25.41 113.81 13.26 0.54 1327 -1329 4 -26.93 116.54 13.67 0.54 1328 -1330 4 -27.6 119.31 13.54 0.54 1329 -1331 4 -27.31 120.86 13.51 0.54 1330 -1332 4 -26.83 122.22 12.17 0.54 1331 -1333 4 -27.15 123.13 12.22 0.54 1332 -1334 4 -28.01 125.51 11.47 0.54 1333 -1335 4 -27.85 127.77 10.24 0.54 1334 -1336 4 -28.01 129.17 8.65 0.54 1335 -1337 4 -28.25 130.01 7.85 0.54 1336 -1338 4 -29.16 130.9 8.1 0.54 1337 -1339 4 -30.38 132.72 8.38 0.54 1338 -1340 4 -30.99 133.33 6.83 0.54 1339 -1341 4 -32.18 136.02 6.0 0.54 1340 -1342 4 -33.32 138.37 5.49 0.54 1341 -1343 4 -33.63 140.51 5.67 0.54 1342 -1344 4 -35.17 143.23 6.07 0.54 1343 -1345 4 -35.5 145.38 6.08 0.54 1344 -1346 4 -35.76 148.97 5.47 0.54 1345 -1347 4 -35.49 152.03 5.45 0.54 1346 -1348 4 -35.46 155.97 4.54 0.54 1347 -1349 4 -36.39 158.7 4.9 0.54 1348 -1350 4 -37.16 162.49 5.33 0.54 1349 -1351 4 -38.67 165.51 4.26 0.54 1350 -1352 4 -40.46 167.59 3.49 0.54 1351 -1353 4 -40.73 169.07 2.37 0.54 1352 -1354 4 -41.1 170.05 1.83 0.54 1353 -1355 4 -42.23 171.76 1.5 0.54 1354 -1356 4 -43.65 173.48 1.26 0.54 1355 -1357 4 -44.41 174.23 1.4 0.54 1356 -1358 4 -44.59 175.64 -0.4 0.54 1357 -1359 4 -44.76 177.91 -0.16 0.54 1358 -1360 4 -44.15 180.04 -0.01 0.54 1359 -1361 4 -43.85 182.49 0.19 0.54 1360 -1362 4 -44.5 184.95 0.18 0.54 1361 -1363 4 -45.07 187.94 -0.59 0.54 1362 -1364 4 -44.92 190.53 -1.94 0.54 1363 -1365 4 -44.75 191.57 -0.05 0.54 1364 -1366 4 -45.06 191.87 -0.06 0.54 1365 -1367 4 -44.43 192.47 0.09 0.54 1366 -1368 4 -46.08 176.81 1.81 0.54 1357 -1369 4 -49.45 181.64 1.0 0.54 1368 -1370 4 -50.39 182.55 2.54 0.54 1369 -1371 4 -52.84 184.97 3.01 0.54 1370 -1372 4 -54.24 188.18 3.14 0.54 1371 -1373 4 -10.13 99.23 11.11 1.19 1309 -1374 4 -10.86 100.86 11.71 1.08 1373 -1375 4 -10.7 100.97 11.71 1.08 1374 -1376 4 -11.55 100.89 12.54 0.54 1375 -1377 4 -12.46 101.19 12.65 0.54 1376 -1378 4 -13.07 101.79 12.77 0.54 1377 -1379 4 -13.83 102.54 12.91 0.54 1378 -1380 4 -14.44 103.15 13.02 0.54 1379 -1381 4 -15.2 104.51 13.22 0.54 1380 -1382 4 -15.97 106.78 13.51 0.54 1381 -1383 4 -15.22 108.15 13.58 0.54 1382 -1384 4 -15.22 109.07 13.67 0.54 1383 -1385 4 -15.45 110.22 12.9 0.54 1384 -1386 4 -16.38 111.13 13.0 0.54 1385 -1387 4 -17.15 112.5 13.2 0.54 1386 -1388 4 -18.07 114.61 13.5 0.54 1387 -1389 4 -18.84 116.58 13.76 0.54 1388 -1390 4 -19.91 119.16 14.11 0.54 1389 -1391 4 -20.09 122.07 14.18 0.54 1390 -1392 4 -20.92 123.8 13.74 0.54 1391 -1393 4 -21.25 125.64 13.81 0.54 1392 -1394 4 -22.16 128.37 14.07 0.54 1393 -1395 4 -23.4 130.48 14.39 0.54 1394 -1396 4 -24.92 133.22 14.8 0.54 1395 -1397 4 -26.92 135.79 15.17 0.54 1396 -1398 4 -29.09 138.84 15.37 0.54 1397 -1399 4 -29.71 140.97 15.55 0.54 1398 -1400 4 -31.13 144.79 15.68 0.54 1399 -1401 4 -31.29 147.39 15.86 0.54 1400 -1402 4 -32.47 150.38 15.14 0.54 1401 -1403 4 -33.09 152.81 15.43 0.54 1402 -1404 4 -32.94 154.79 15.61 0.54 1403 -1405 4 -34.16 155.99 15.84 0.54 1404 -1406 4 -35.44 156.94 15.45 0.54 1405 -1407 4 -36.97 157.54 15.58 0.54 1406 -1408 4 -38.05 158.61 15.78 0.54 1407 -1409 4 -38.2 160.89 16.01 0.54 1408 -1410 4 -39.55 162.96 16.26 0.54 1409 -1411 4 -39.86 165.09 16.5 0.54 1410 -1412 4 -40.93 167.05 16.78 0.54 1411 -1413 4 -42.35 169.06 16.59 0.54 1412 -1414 4 -43.42 171.33 16.91 0.54 1413 -1415 4 -44.51 173.92 17.18 0.54 1414 -1416 4 -44.51 175.75 17.36 0.54 1415 -1417 4 -45.66 179.31 16.98 0.54 1416 -1418 4 -46.89 181.43 17.31 0.54 1417 -1419 4 -48.12 185.38 17.72 0.54 1418 -1420 4 -48.44 189.33 18.14 0.54 1419 -1421 4 -49.21 191.61 18.43 0.54 1420 -1422 4 -49.37 193.89 18.67 0.54 1421 -1423 4 -48.8 196.05 18.52 0.54 1422 -1424 4 -48.59 197.98 17.64 0.54 1423 -1425 4 -49.06 199.95 17.8 0.54 1424 -1426 4 -49.67 201.17 17.98 0.54 1425 -1427 4 -49.29 205.94 17.8 0.54 1426 -1428 4 -50.12 208.29 17.43 0.54 1427 -1429 4 -50.05 209.74 16.66 0.54 1428 -1430 4 -50.52 211.72 16.81 0.54 1429 -1431 4 -51.59 214.3 17.16 0.54 1430 -1432 4 -51.95 216.77 16.99 0.54 1431 -1433 4 -51.85 218.19 16.59 0.54 1432 -1434 4 -51.41 220.79 16.73 0.54 1433 -1435 4 -51.44 221.73 16.52 0.54 1434 -1436 4 -51.19 223.31 16.04 0.54 1435 -1437 4 -10.4 102.22 11.88 1.08 1375 -1438 4 -9.64 102.99 11.89 1.08 1437 -1439 4 -8.89 104.97 12.08 1.08 1438 -1440 4 -8.74 106.95 12.26 1.08 1439 -1441 4 -8.24 109.18 12.96 0.975 1440 -1442 4 -7.33 111.62 13.19 0.975 1441 -1443 4 -7.03 112.84 13.28 0.975 1442 -1444 4 -6.11 112.65 14.32 0.65 1443 -1445 4 -5.35 112.5 14.23 0.65 1444 -1446 4 -4.89 112.05 14.15 0.65 1445 -1447 4 -5.04 110.98 14.06 0.65 1446 -1448 4 -4.58 109.62 13.89 0.435 1447 -1449 4 -3.51 108.26 13.65 0.435 1448 -1450 4 -2.19 106.34 12.81 0.435 1449 -1451 4 -1.4 105.26 12.86 0.435 1450 -1452 4 -0.76 104.63 13.11 0.54 1451 -1453 4 0.21 103.36 13.59 0.54 1452 -1454 4 0.57 102.09 13.96 0.54 1453 -1455 4 1.41 100.65 14.64 0.54 1454 -1456 4 1.88 99.27 14.47 0.54 1455 -1457 4 2.21 98.33 14.65 0.54 1456 -1458 4 2.57 97.38 15.13 0.54 1457 -1459 4 2.89 96.46 15.08 0.54 1458 -1460 4 3.2 95.23 15.0 0.54 1459 -1461 4 3.81 94.63 14.89 0.54 1460 -1462 4 5.05 92.81 14.75 0.54 1461 -1463 4 5.54 92.32 14.96 0.54 1462 -1464 4 6.32 90.95 14.91 0.54 1463 -1465 4 6.78 89.56 14.89 0.54 1464 -1466 4 7.3 88.75 15.36 0.54 1465 -1467 4 7.46 88.3 15.37 0.54 1466 -1468 4 -7.18 114.81 13.56 0.975 1443 -1469 4 -8.4 116.92 13.89 0.975 1468 -1470 4 -9.63 119.35 14.24 0.975 1469 -1471 4 -11.16 122.06 14.65 0.975 1470 -1472 4 -11.68 123.48 15.96 0.975 1471 -1473 4 -12.43 124.23 16.1 0.975 1472 -1474 4 -12.83 124.88 16.2 0.975 1473 -1475 4 -12.98 124.12 14.48 0.54 1474 -1476 4 -13.43 123.36 14.45 0.54 1475 -1477 4 -13.12 122.14 14.29 0.54 1476 -1478 4 -12.82 121.54 14.21 0.435 1477 -1479 4 -13.12 120.02 14.09 0.435 1478 -1480 4 -13.12 119.41 14.03 0.435 1479 -1481 4 -13.11 118.19 13.92 0.435 1480 -1482 4 -13.12 116.97 13.79 0.435 1481 -1483 4 -12.96 116.52 13.73 0.435 1482 -1484 4 -12.65 115.62 13.62 0.435 1483 -1485 4 -12.49 115.15 13.56 0.435 1484 -1486 4 -13.5 126.51 16.42 0.975 1474 -1487 4 -14.27 128.76 16.8 0.975 1486 -1488 4 -14.12 131.35 17.03 0.975 1487 -1489 4 -13.67 132.73 17.12 0.975 1488 -1490 4 -12.92 135.01 17.28 0.975 1489 -1491 4 -13.22 136.23 17.43 1.08 1490 -1492 4 -13.7 139.11 17.76 1.08 1491 -1493 4 -13.55 141.09 17.93 1.08 1492 -1494 4 -14.31 142.46 18.13 1.08 1493 -1495 4 -15.08 144.43 18.4 1.08 1494 -1496 4 -15.85 146.39 18.66 1.08 1495 -1497 4 -16.31 147.77 18.84 1.08 1496 -1498 4 -16.16 150.04 19.05 1.08 1497 -1499 4 -14.95 150.66 19.0 1.08 1498 -1500 4 -13.58 151.74 18.97 1.08 1499 -1501 4 -13.12 152.8 19.03 1.08 1500 -1502 4 -12.97 154.78 19.29 1.08 1501 -1503 4 -11.31 158.28 19.47 1.08 1502 -1504 4 -11.32 162.24 19.86 1.08 1503 -1505 4 -10.83 162.78 19.87 1.08 1504 -1506 4 -11.36 162.68 20.73 0.65 1505 -1507 4 -11.81 163.75 20.88 0.65 1506 -1508 4 -12.24 164.17 21.34 0.65 1507 -1509 4 -12.68 164.59 21.64 0.65 1508 -1510 4 -13.29 164.59 21.63 0.65 1509 -1511 4 -13.7 165.61 22.23 0.65 1510 -1512 4 -14.28 166.17 22.79 0.65 1511 -1513 4 -14.49 166.37 23.89 0.65 1512 -1514 4 -14.78 168.17 24.39 0.65 1513 -1515 4 -15.17 169.17 23.53 0.435 1514 -1516 4 -15.63 170.83 23.82 0.435 1515 -1517 4 -15.93 172.06 22.23 0.435 1516 -1518 4 -16.16 172.88 21.58 0.435 1517 -1519 4 -16.22 174.47 21.2 0.435 1518 -1520 4 -16.27 176.03 20.83 0.54 1519 -1521 4 -16.43 178.01 21.05 0.54 1520 -1522 4 -16.93 179.72 20.8 0.54 1521 -1523 4 -17.55 181.55 20.96 0.54 1522 -1524 4 -18.77 183.36 21.25 0.54 1523 -1525 4 -18.47 185.5 21.43 0.54 1524 -1526 4 -17.72 187.48 21.55 0.54 1525 -1527 4 -18.03 189.0 21.73 0.54 1526 -1528 4 -19.3 191.46 21.63 0.54 1527 -1529 4 -18.91 193.2 21.09 0.54 1528 -1530 4 -18.65 195.37 20.9 0.54 1529 -1531 4 -18.39 198.45 20.79 0.54 1530 -1532 4 -19.05 201.54 20.63 0.54 1531 -1533 4 -19.92 203.6 19.93 0.54 1532 -1534 4 -20.71 205.91 19.86 0.54 1533 -1535 4 -21.75 208.16 18.88 0.54 1534 -1536 4 -21.61 209.84 18.95 0.54 1535 -1537 4 -22.45 211.58 18.37 0.54 1536 -1538 4 -24.56 213.98 17.36 0.54 1537 -1539 4 -26.24 215.33 17.65 0.54 1538 -1540 4 -27.77 216.85 17.94 0.54 1539 -1541 4 -29.3 218.97 18.28 0.54 1540 -1542 4 -31.19 220.23 17.83 0.54 1541 -1543 4 -33.94 222.94 18.35 0.54 1542 -1544 4 -35.63 224.61 18.58 0.54 1543 -1545 4 -36.53 226.41 17.41 0.54 1544 -1546 4 -37.71 229.4 16.6 0.54 1545 -1547 4 -38.66 230.29 16.7 0.54 1546 -1548 4 -39.74 231.03 16.87 0.54 1547 -1549 4 -40.73 232.02 16.22 0.54 1548 -1550 4 -40.98 234.4 15.51 0.54 1549 -1551 4 -41.28 237.74 14.26 0.54 1550 -1552 4 -42.13 239.8 13.65 0.54 1551 -1553 4 -41.6 241.71 12.87 0.54 1552 -1554 4 -41.19 243.74 12.65 0.54 1553 -1555 4 -41.33 245.7 11.34 0.54 1554 -1556 4 -42.81 248.37 10.68 0.54 1555 -1557 4 -43.38 251.37 9.9 0.54 1556 -1558 4 -44.94 256.24 10.29 0.54 1557 -1559 4 -45.75 259.78 10.26 0.54 1558 -1560 4 -46.31 261.56 9.27 0.54 1559 -1561 4 -46.66 264.63 9.37 0.54 1560 -1562 4 -46.86 266.34 9.03 0.54 1561 -1563 4 -47.79 269.09 9.24 0.54 1562 -1564 4 -48.3 273.22 9.38 0.54 1563 -1565 4 -48.53 275.89 8.76 0.54 1564 -1566 4 -49.27 277.53 8.83 0.54 1565 -1567 4 -11.65 164.37 20.09 1.08 1505 -1568 4 -11.89 164.43 20.12 1.08 1567 -1569 4 -11.64 167.11 20.37 1.08 1568 -1570 4 -11.65 169.85 20.63 0.865 1569 -1571 4 -11.81 173.65 21.02 0.865 1570 -1572 4 -11.53 177.92 21.41 0.865 1571 -1573 4 -11.39 180.56 21.73 0.975 1572 -1574 4 -10.79 183.0 21.92 0.975 1573 -1575 4 -10.02 185.58 22.09 0.975 1574 -1576 4 -9.42 188.02 22.28 0.975 1575 -1577 4 -11.12 192.11 22.84 0.975 1576 -1578 4 -11.1 193.92 23.23 0.975 1577 -1579 4 -12.33 196.94 23.64 0.975 1578 -1580 4 -13.26 199.97 24.02 0.975 1579 -1581 4 -13.87 202.4 24.39 1.08 1580 -1582 4 -13.72 205.59 24.7 1.08 1581 -1583 4 -13.93 207.02 24.32 1.08 1582 -1584 4 -12.94 206.93 25.95 0.54 1583 -1585 4 -12.18 207.4 25.86 0.54 1584 -1586 4 -11.91 207.12 27.17 0.54 1585 -1587 4 -10.96 207.38 27.57 0.54 1586 -1588 4 -9.48 207.43 28.64 0.65 1587 -1589 4 -8.25 208.04 28.81 0.65 1588 -1590 4 -6.69 208.91 29.13 0.65 1589 -1591 4 -4.35 209.96 29.62 0.65 1590 -1592 4 -1.76 211.63 29.7 0.65 1591 -1593 4 1.57 213.79 29.6 0.65 1592 -1594 4 5.23 215.65 29.52 0.65 1593 -1595 4 8.0 217.15 29.86 0.65 1594 -1596 4 9.85 218.04 30.15 0.65 1595 -1597 4 10.79 218.33 30.33 0.65 1596 -1598 4 12.77 219.72 30.28 0.65 1597 -1599 4 14.44 221.11 30.33 0.65 1598 -1600 4 15.07 222.0 29.01 0.65 1599 -1601 4 15.08 221.98 29.16 0.65 1600 -1602 4 15.85 222.44 29.13 0.65 1601 -1603 4 15.8 222.5 28.61 0.65 1602 -1604 4 16.63 222.9 27.66 0.65 1603 -1605 4 16.85 223.59 26.8 0.65 1604 -1606 4 17.56 224.1 26.26 0.65 1605 -1607 4 17.52 224.53 26.3 0.65 1606 -1608 4 18.05 224.3 27.14 0.54 1607 -1609 4 18.36 224.0 27.0 0.54 1608 -1610 4 18.75 223.6 27.91 0.54 1609 -1611 4 19.28 223.68 28.78 0.54 1610 -1612 4 19.95 223.62 29.31 0.54 1611 -1613 4 20.91 223.89 29.78 0.54 1612 -1614 4 21.74 224.28 30.42 0.54 1613 -1615 4 22.2 224.73 30.51 0.54 1614 -1616 4 22.58 224.35 31.34 0.54 1615 -1617 4 22.5 225.33 32.27 0.54 1616 -1618 4 22.65 226.7 32.39 0.54 1617 -1619 4 22.5 227.76 32.58 0.54 1618 -1620 4 22.13 228.12 33.63 0.54 1619 -1621 4 21.74 228.49 34.46 0.54 1620 -1622 4 22.51 230.77 34.77 0.435 1621 -1623 4 23.87 233.07 34.86 0.435 1622 -1624 4 24.09 234.37 35.65 0.435 1623 -1625 4 23.78 237.4 36.05 0.435 1624 -1626 4 23.93 239.37 36.31 0.435 1625 -1627 4 24.38 241.05 36.42 0.435 1626 -1628 4 24.35 243.21 36.34 0.435 1627 -1629 4 24.32 245.05 36.3 0.435 1628 -1630 4 24.27 248.13 36.29 0.435 1629 -1631 4 24.72 251.63 36.53 0.435 1630 -1632 4 25.42 255.5 36.24 0.435 1631 -1633 4 25.34 256.48 35.58 0.435 1632 -1634 4 24.67 258.68 35.17 0.435 1633 -1635 4 25.39 260.99 35.03 0.435 1634 -1636 4 26.22 264.73 34.48 0.435 1635 -1637 4 27.38 266.0 34.05 0.435 1636 -1638 4 28.74 268.61 34.1 0.435 1637 -1639 4 27.51 271.35 34.41 0.435 1638 -1640 4 26.51 273.54 33.88 0.54 1639 -1641 4 25.68 274.37 33.29 0.54 1640 -1642 4 25.67 275.29 33.3 0.54 1641 -1643 4 24.52 224.25 32.36 0.54 1616 -1644 4 25.58 225.03 32.34 0.54 1643 -1645 4 26.86 225.88 32.98 0.54 1644 -1646 4 27.65 227.83 33.4 0.54 1645 -1647 4 27.64 230.27 33.72 0.54 1646 -1648 4 27.35 231.76 34.04 0.54 1647 -1649 4 28.88 232.96 34.32 0.54 1648 -1650 4 29.8 233.58 34.3 0.54 1649 -1651 4 30.74 234.17 34.64 0.54 1650 -1652 4 31.12 234.08 35.5 0.54 1651 -1653 4 32.67 234.68 35.64 0.54 1652 -1654 4 35.62 235.72 36.07 0.54 1653 -1655 4 36.39 236.46 36.23 0.54 1654 -1656 4 36.88 238.11 36.8 0.54 1655 -1657 4 37.07 240.02 37.57 0.54 1656 -1658 4 38.75 242.32 37.72 0.54 1657 -1659 4 40.57 244.76 37.86 0.54 1658 -1660 4 42.41 245.96 38.05 0.54 1659 -1661 4 46.98 248.44 37.87 0.54 1660 -1662 4 50.48 250.76 37.84 0.54 1661 -1663 4 53.24 252.27 38.04 0.54 1662 -1664 4 55.08 252.88 38.08 0.54 1663 -1665 4 56.44 253.65 38.02 0.54 1664 -1666 4 58.12 254.42 38.02 0.54 1665 -1667 4 59.18 255.19 38.0 0.54 1666 -1668 4 19.34 225.08 25.73 0.435 1607 -1669 4 21.17 226.01 25.66 0.435 1668 -1670 4 22.34 226.98 25.19 0.435 1669 -1671 4 23.82 227.94 24.69 0.54 1670 -1672 4 26.39 231.16 24.77 0.54 1671 -1673 4 28.48 232.75 24.27 0.54 1672 -1674 4 30.77 232.92 24.09 0.54 1673 -1675 4 32.74 232.18 23.83 0.54 1674 -1676 4 36.09 232.51 23.55 0.54 1675 -1677 4 38.92 233.14 23.2 0.435 1676 -1678 4 43.64 234.84 22.93 0.435 1677 -1679 4 47.43 237.48 22.84 0.435 1678 -1680 4 49.28 238.68 21.43 0.54 1679 -1681 4 51.85 241.3 21.44 0.54 1680 -1682 4 53.21 245.11 21.69 0.54 1681 -1683 4 53.26 248.1 20.92 0.54 1682 -1684 4 53.55 250.24 21.03 0.54 1683 -1685 4 55.83 253.76 21.16 0.54 1684 -1686 4 57.48 256.67 21.29 0.54 1685 -1687 4 57.79 257.58 21.36 0.54 1686 -1688 4 57.93 261.07 21.68 0.54 1687 -1689 4 59.6 263.37 21.75 0.54 1688 -1690 4 60.48 264.32 21.46 0.54 1689 -1691 4 62.1 265.14 20.85 0.54 1690 -1692 4 63.89 264.6 20.18 0.54 1691 -1693 4 65.71 264.63 20.01 0.54 1692 -1694 4 -14.08 209.9 24.62 1.08 1583 -1695 4 -13.95 213.4 24.94 1.08 1694 -1696 4 -13.35 216.14 25.16 1.08 1695 -1697 4 -13.66 218.28 25.39 1.08 1696 -1698 4 -15.03 220.84 25.77 1.08 1697 -1699 4 -16.41 222.8 26.09 1.08 1698 -1700 4 -17.17 224.47 26.32 1.08 1699 -1701 4 -17.34 227.36 26.62 1.08 1700 -1702 4 -17.19 231.16 26.98 1.08 1701 -1703 4 -16.75 234.36 27.25 1.08 1702 -1704 4 -17.18 237.23 26.29 1.08 1703 -1705 4 -17.48 239.02 26.71 1.08 1704 -1706 4 -18.11 240.86 26.64 1.08 1705 -1707 4 -18.39 242.66 25.57 1.08 1706 -1708 4 -19.02 243.14 26.35 0.65 1707 -1709 4 -20.33 243.83 25.56 0.65 1708 -1710 4 -21.29 244.15 26.89 0.65 1709 -1711 4 -21.74 243.98 28.65 0.65 1710 -1712 4 -23.19 244.51 29.59 0.65 1711 -1713 4 -26.02 245.48 30.62 0.65 1712 -1714 4 -27.69 246.81 31.06 0.65 1713 -1715 4 -30.05 248.52 32.35 0.65 1714 -1716 4 -31.28 249.74 32.58 0.65 1715 -1717 4 -32.6 251.04 33.28 0.65 1716 -1718 4 -34.58 253.61 33.8 0.65 1717 -1719 4 -36.41 254.2 34.03 0.65 1718 -1720 4 -39.15 255.38 34.46 0.65 1719 -1721 4 -41.74 257.03 34.86 0.65 1720 -1722 4 -44.48 258.52 35.26 0.65 1721 -1723 4 -46.01 260.03 35.63 0.54 1722 -1724 4 -47.21 260.01 35.74 0.54 1723 -1725 4 -49.35 261.21 36.12 0.54 1724 -1726 4 -51.02 263.16 36.47 0.54 1725 -1727 4 -53.63 266.04 36.99 0.54 1726 -1728 4 -56.67 268.74 37.53 0.54 1727 -1729 4 -58.05 271.32 37.92 0.54 1728 -1730 4 -59.43 274.2 38.32 0.54 1729 -1731 4 -60.5 276.46 38.65 0.54 1730 -1732 4 -61.58 279.35 39.02 0.54 1731 -1733 4 -63.56 280.08 39.28 0.54 1732 -1734 4 -65.24 281.44 39.56 0.54 1733 -1735 4 -67.53 283.39 39.97 0.54 1734 -1736 4 -68.7 284.54 40.79 0.54 1735 -1737 4 -70.06 287.11 41.25 0.54 1736 -1738 4 -70.49 288.73 41.9 0.54 1737 -1739 4 -70.46 290.23 42.35 0.54 1738 -1740 4 -69.8 290.77 43.02 0.54 1739 -1741 4 -69.26 291.15 43.84 0.54 1740 -1742 4 -70.31 292.18 44.26 0.54 1741 -1743 4 -71.52 293.38 44.64 0.54 1742 -1744 4 -71.68 295.35 44.85 0.54 1743 -1745 4 -71.81 296.69 45.29 0.54 1744 -1746 4 -73.02 297.58 45.64 0.54 1745 -1747 4 -74.21 297.85 46.0 0.54 1746 -1748 4 -75.86 299.17 46.58 0.54 1747 -1749 4 -76.45 299.76 46.92 0.54 1748 -1750 4 -77.45 300.75 47.79 0.54 1749 -1751 4 -77.62 301.18 49.51 0.54 1750 -1752 4 -78.53 301.79 49.65 0.54 1751 -1753 4 -78.86 302.11 51.08 0.54 1752 -1754 4 -79.29 302.22 51.51 0.54 1753 -1755 4 -17.79 245.71 25.81 1.08 1707 -1756 4 -17.95 247.99 26.05 1.08 1755 -1757 4 -17.21 249.38 25.88 1.08 1756 -1758 4 -16.46 251.67 26.03 1.08 1757 -1759 4 -16.93 253.35 26.17 1.08 1758 -1760 4 -18.15 255.17 26.46 1.08 1759 -1761 4 -19.82 258.34 25.41 1.08 1760 -1762 4 -20.59 260.91 25.73 1.08 1761 -1763 4 -20.91 263.96 26.06 1.08 1762 -1764 4 -20.63 268.83 26.42 1.08 1763 -1765 4 -20.07 271.27 26.55 1.19 1764 -1766 4 -19.33 274.16 26.75 1.19 1765 -1767 4 -19.33 275.38 26.88 1.19 1766 -1768 4 -19.12 276.58 28.11 0.865 1767 -1769 4 -19.42 278.11 28.28 0.865 1768 -1770 4 -19.72 279.01 28.47 0.865 1769 -1771 4 -20.34 279.62 28.51 0.865 1770 -1772 4 -20.67 280.85 30.11 0.865 1771 -1773 4 -21.56 281.73 30.43 0.865 1772 -1774 4 -21.99 283.36 31.15 0.865 1773 -1775 4 -23.18 284.53 31.67 0.865 1774 -1776 4 -23.79 286.34 31.99 0.865 1775 -1777 4 -25.13 287.66 32.62 0.865 1776 -1778 4 -26.51 289.01 32.88 0.865 1777 -1779 4 -27.87 291.27 33.3 0.865 1778 -1780 4 -28.64 293.86 33.63 0.865 1779 -1781 4 -28.65 296.29 33.86 0.865 1780 -1782 4 -28.8 298.55 34.24 0.865 1781 -1783 4 -28.79 300.07 34.47 0.865 1782 -1784 4 -30.47 303.85 35.07 0.865 1783 -1785 4 -31.85 307.03 35.51 0.865 1784 -1786 4 -32.63 310.21 35.89 0.865 1785 -1787 4 -34.3 312.78 36.3 0.865 1786 -1788 4 -36.6 315.05 36.73 0.865 1787 -1789 4 -37.54 315.89 37.05 0.865 1788 -1790 4 -38.92 318.77 37.46 0.865 1789 -1791 4 -40.3 321.64 37.86 0.865 1790 -1792 4 -42.89 323.29 38.26 0.865 1791 -1793 4 -44.42 326.01 38.68 0.865 1792 -1794 4 -46.11 329.51 39.17 0.865 1793 -1795 4 -47.21 332.39 40.99 0.865 1794 -1796 4 -47.72 334.12 40.59 0.865 1795 -1797 4 -48.34 335.36 38.88 0.865 1796 -1798 4 -49.4 337.62 37.77 0.865 1797 -1799 4 -50.47 338.68 37.9 0.865 1798 -1800 4 -52.63 341.41 38.28 0.865 1799 -1801 4 -54.76 344.73 38.8 0.865 1800 -1802 4 -55.43 349.03 38.75 0.865 1801 -1803 4 -55.94 352.55 38.84 0.865 1802 -1804 4 -55.08 356.27 38.6 0.865 1803 -1805 4 -54.71 359.25 37.95 0.865 1804 -1806 4 -55.34 362.0 38.2 0.865 1805 -1807 4 -54.82 365.14 37.47 0.865 1806 -1808 4 -53.38 368.86 36.95 0.865 1807 -1809 4 -52.37 372.41 36.67 0.865 1808 -1810 4 -51.94 375.04 35.07 0.865 1809 -1811 4 -50.47 378.74 34.92 0.865 1810 -1812 4 -49.98 381.91 33.91 0.865 1811 -1813 4 -50.57 382.78 32.75 0.865 1812 -1814 4 -51.17 383.99 32.93 0.865 1813 -1815 4 -51.52 384.33 32.99 0.435 1814 -1816 4 -51.82 384.93 33.08 0.865 1815 -1817 4 -51.5 387.06 31.89 0.865 1816 -1818 4 -51.65 388.73 32.07 0.865 1817 -1819 4 -52.87 389.93 32.3 0.865 1818 -1820 4 -54.06 390.8 31.21 0.865 1819 -1821 4 -55.81 392.23 30.67 0.865 1820 -1822 4 -55.97 393.0 30.69 0.865 1821 -1823 4 -56.94 395.16 30.47 0.865 1822 -1824 4 -57.4 396.54 30.57 0.865 1823 -1825 4 -57.73 398.37 30.7 1.3 1824 -1826 4 -57.88 400.03 30.89 0.975 1825 -1827 4 -58.48 403.06 29.79 0.975 1826 -1828 4 -58.77 404.3 29.93 0.975 1827 -1829 4 -59.79 404.09 30.46 0.54 1828 -1830 4 -61.01 403.47 30.52 0.54 1829 -1831 4 -62.07 403.92 30.66 0.54 1830 -1832 4 -63.75 404.36 30.86 0.54 1831 -1833 4 -65.44 405.12 31.02 0.54 1832 -1834 4 -66.97 405.74 29.4 0.54 1833 -1835 4 -68.34 407.08 29.66 0.54 1834 -1836 4 -69.56 408.3 29.89 0.54 1835 -1837 4 -70.93 408.73 30.06 0.54 1836 -1838 4 -72.2 409.67 29.88 0.54 1837 -1839 4 -72.78 409.97 28.45 0.54 1838 -1840 4 -73.63 409.59 27.59 0.54 1839 -1841 4 -74.09 409.46 25.81 0.54 1840 -1842 4 -74.35 409.11 24.59 0.54 1841 -1843 4 -74.54 408.99 24.21 0.54 1842 -1844 4 -74.69 408.54 24.18 0.54 1843 -1845 4 -58.94 404.74 29.92 0.975 1828 -1846 4 -58.5 407.04 30.03 0.975 1845 -1847 4 -58.83 408.88 28.42 0.975 1846 -1848 4 -59.16 410.74 26.67 0.975 1847 -1849 4 -60.12 411.68 26.4 0.975 1848 -1850 4 -62.36 413.31 25.56 0.975 1849 -1851 4 -63.03 415.56 24.85 0.975 1850 -1852 4 -63.49 417.54 25.08 0.865 1851 -1853 4 -64.8 419.45 24.42 0.865 1852 -1854 4 -64.81 420.98 22.83 0.865 1853 -1855 4 -64.64 422.34 21.5 0.865 1854 -1856 4 -64.51 423.12 21.34 0.865 1855 -1857 4 -64.07 423.6 21.2 0.865 1856 -1858 4 -64.23 425.88 19.85 0.865 1857 -1859 4 -64.97 427.53 18.64 0.865 1858 -1860 4 -64.91 430.2 17.92 0.865 1859 -1861 4 -65.28 432.71 15.85 0.865 1860 -1862 4 -65.7 433.72 16.59 0.865 1861 -1863 4 -66.37 435.91 16.1 0.865 1862 -1864 4 -66.93 437.69 15.27 0.865 1863 -1865 4 -67.17 439.14 14.53 0.865 1864 -1866 4 -68.16 439.81 13.86 0.865 1865 -1867 4 -69.28 441.53 13.6 0.865 1866 -1868 4 -70.9 442.84 12.82 0.865 1867 -1869 4 -71.75 444.29 12.06 0.865 1868 -1870 4 -72.49 445.63 10.97 0.865 1869 -1871 4 -73.83 446.97 9.79 0.865 1870 -1872 4 -74.39 448.11 9.04 0.865 1871 -1873 4 -75.42 449.76 7.94 0.865 1872 -1874 4 -75.89 450.83 8.01 0.865 1873 -1875 4 -77.1 451.73 8.21 0.865 1874 -1876 4 -78.48 453.7 8.46 0.865 1875 -1877 4 -79.04 456.07 7.75 0.865 1876 -1878 4 -77.54 459.43 7.94 0.865 1877 -1879 4 -75.96 462.44 7.03 0.865 1878 -1880 4 -75.44 465.57 6.45 0.865 1879 -1881 4 -75.68 468.54 5.86 0.865 1880 -1882 4 -75.19 470.47 4.87 0.865 1881 -1883 4 -74.8 472.53 4.29 0.865 1882 -1884 4 -74.42 474.28 3.66 0.865 1883 -1885 4 -74.74 475.39 3.8 0.865 1884 -1886 4 -75.42 475.77 3.06 0.435 1885 -1887 4 -75.88 476.23 3.15 0.435 1886 -1888 4 -76.82 476.55 2.96 0.435 1887 -1889 4 -77.28 476.1 2.81 0.435 1888 -1890 4 -77.61 476.43 2.65 0.54 1889 -1891 4 -79.59 477.17 2.91 0.54 1890 -1892 4 -79.9 478.69 3.08 0.54 1891 -1893 4 -80.67 479.16 1.38 0.54 1892 -1894 4 -81.7 479.26 0.28 0.54 1893 -1895 4 -82.29 479.55 -1.07 0.54 1894 -1896 4 -82.72 479.38 -2.55 0.54 1895 -1897 4 -83.65 479.7 -2.52 0.54 1896 -1898 4 -85.11 480.23 -3.31 0.54 1897 -1899 4 -85.96 480.46 -4.12 0.54 1898 -1900 4 -86.59 481.1 -4.37 0.54 1899 -1901 4 -87.51 481.41 -5.92 0.54 1900 -1902 4 -87.66 481.58 -7.71 0.54 1901 -1903 4 -88.41 482.0 -8.96 0.54 1902 -1904 4 -89.13 482.72 -10.02 0.54 1903 -1905 4 -89.85 483.45 -11.17 0.54 1904 -1906 4 -73.88 475.57 3.05 0.865 1885 -1907 4 -73.79 477.62 2.57 0.865 1906 -1908 4 -73.62 479.27 1.28 0.865 1907 -1909 4 -74.82 481.66 0.33 0.865 1908 -1910 4 -74.93 483.61 -0.73 0.865 1909 -1911 4 -74.02 485.14 -0.67 0.865 1910 -1912 4 -72.32 487.12 -1.93 0.865 1911 -1913 4 -71.11 490.18 -3.4 0.865 1912 -1914 4 -71.5 492.69 -4.03 0.865 1913 -1915 4 -71.93 494.64 -5.08 0.865 1914 -1916 4 -71.81 496.33 -5.15 0.865 1915 -1917 4 -72.31 498.87 -6.06 0.865 1916 -1918 4 -71.64 499.73 -7.03 0.865 1917 -1919 4 -70.64 503.6 -7.28 0.865 1918 -1920 4 -69.15 505.47 -7.6 0.865 1919 -1921 4 -69.42 508.16 -8.46 0.865 1920 -1922 4 -70.29 509.94 -9.33 0.865 1921 -1923 4 -70.46 511.32 -9.41 0.865 1922 -1924 4 -70.53 513.51 -9.87 0.865 1923 -1925 4 -70.27 516.0 -10.1 0.865 1924 -1926 4 -71.33 518.26 -11.23 0.865 1925 -1927 4 -71.95 520.08 -11.07 0.865 1926 -1928 4 -72.93 522.29 -11.58 0.865 1927 -1929 4 -73.88 523.83 -13.25 0.865 1928 -1930 4 -73.89 525.66 -13.14 0.865 1929 -1931 4 -73.9 529.32 -14.44 0.865 1930 -1932 4 -73.97 529.39 -15.19 0.865 1931 -1933 4 -73.61 531.16 -16.03 0.865 1932 -1934 4 -73.7 533.69 -16.76 0.865 1933 -1935 4 -73.7 535.51 -18.1 0.865 1934 -1936 4 -73.96 537.29 -19.03 0.865 1935 -1937 4 -74.53 539.99 -19.92 0.865 1936 -1938 4 -74.15 542.65 -20.53 0.865 1937 -1939 4 -72.95 545.1 -20.4 0.865 1938 -1940 4 -72.42 548.52 -20.86 0.865 1939 -1941 4 -71.81 551.27 -22.32 0.865 1940 -1942 4 -70.81 554.24 -22.81 0.865 1941 -1943 4 -70.18 556.94 -23.82 0.865 1942 -1944 4 -68.51 558.96 -25.51 0.865 1943 -1945 4 -67.91 560.48 -25.41 0.865 1944 -1946 4 -66.61 561.93 -26.07 0.865 1945 -1947 4 -65.91 563.36 -26.6 0.865 1946 -1948 4 -65.22 566.04 -27.24 0.865 1947 -1949 4 -65.31 567.95 -27.88 0.865 1948 -1950 4 -65.54 570.59 -28.28 0.865 1949 -1951 4 -66.56 574.04 -28.98 0.865 1950 -1952 4 -67.53 578.34 -29.0 0.865 1951 -1953 4 -68.36 581.65 -28.75 0.865 1952 -1954 4 -68.66 585.6 -28.34 0.865 1953 -1955 4 -68.84 588.5 -28.19 0.865 1954 -1956 4 -69.31 591.09 -27.98 0.865 1955 -1957 4 -70.14 594.33 -28.18 0.865 1956 -1958 4 -70.38 596.7 -28.84 0.865 1957 -1959 4 -70.16 598.92 -29.55 0.865 1958 -1960 4 -69.48 600.67 -30.2 0.865 1959 -1961 4 -68.03 601.97 -30.88 0.865 1960 -1962 4 -67.78 602.91 -30.89 0.54 1961 -1963 4 -66.57 605.06 -30.8 0.54 1962 -1964 4 -66.17 605.58 -31.46 0.54 1963 -1965 4 -65.24 606.49 -32.89 0.54 1964 -1966 4 -63.43 608.04 -33.05 0.54 1965 -1967 4 -62.07 608.82 -33.11 0.54 1966 -1968 4 -59.79 609.9 -33.21 0.54 1967 -1969 4 -58.44 610.39 -33.51 0.54 1968 -1970 4 -56.47 611.48 -33.66 0.54 1969 -1971 4 -54.88 612.34 -34.57 0.54 1970 -1972 4 -54.03 612.73 -35.37 0.54 1971 -1973 4 -53.88 612.57 -35.39 0.54 1972 -1974 4 -54.3 613.0 -36.6 0.435 1973 -1975 4 -54.77 613.47 -36.66 0.435 1974 -1976 4 -55.42 613.78 -36.87 0.435 1975 -1977 4 -54.82 614.42 -37.02 0.435 1976 -1978 4 -55.23 614.83 -38.06 0.435 1977 -1979 4 -54.75 615.58 -39.47 0.435 1978 -1980 4 -54.58 616.63 -40.82 0.435 1979 -1981 4 -54.26 617.24 -42.31 0.435 1980 -1982 4 -54.19 617.48 -43.27 0.435 1981 -1983 4 -54.01 617.91 -44.46 0.435 1982 -1984 4 -53.71 618.53 -46.17 0.435 1983 -1985 4 -53.72 619.75 -46.12 0.435 1984 -1986 4 -53.51 621.68 -47.01 0.435 1985 -1987 4 -53.61 623.29 -47.75 0.435 1986 -1988 4 -53.55 625.07 -48.56 0.435 1987 -1989 4 -54.08 626.8 -49.1 0.435 1988 -1990 4 -54.38 628.63 -50.49 0.435 1989 -1991 4 -54.53 630.0 -51.93 0.435 1990 -1992 4 -54.96 632.25 -52.94 0.435 1991 -1993 4 -56.33 633.9 -52.66 0.435 1992 -1994 4 -56.39 634.89 -53.24 0.435 1993 -1995 4 -56.05 635.78 -54.47 0.435 1994 -1996 4 -55.39 636.34 -55.54 0.435 1995 -1997 4 -52.58 613.43 -36.26 0.54 1973 -1998 4 -51.09 614.37 -36.53 0.54 1997 -1999 4 -50.09 615.5 -37.11 0.54 1998 -2000 4 -47.89 617.89 -37.98 0.54 1999 -2001 4 -46.31 618.77 -39.1 0.54 2000 -2002 4 -43.9 620.02 -39.29 0.54 2001 -2003 4 -41.36 621.45 -39.9 0.54 2002 -2004 4 -39.1 623.18 -40.18 0.54 2003 -2005 4 -36.98 625.03 -40.27 0.54 2004 -2006 4 -36.05 626.84 -41.62 0.54 2005 -2007 4 -32.96 629.26 -42.65 0.54 2006 -2008 4 -31.82 631.17 -43.39 0.54 2007 -2009 4 -30.72 634.63 -44.3 0.54 2008 -2010 4 -29.79 636.45 -45.57 0.54 2009 -2011 4 -28.27 637.99 -45.63 0.54 2010 -2012 4 -26.39 639.78 -46.68 0.54 2011 -2013 4 -24.2 640.96 -47.76 0.54 2012 -2014 4 -22.17 641.99 -48.83 0.54 2013 -2015 4 -21.01 642.38 -49.66 0.54 2014 -2016 4 -20.54 642.82 -51.09 0.54 2015 -2017 4 -19.07 644.42 -51.67 0.54 2016 -2018 4 -18.46 645.94 -53.09 0.54 2017 -2019 4 -16.92 649.28 -54.34 0.54 2018 -2020 4 -15.61 651.63 -54.77 0.54 2019 -2021 4 -14.71 653.18 -56.51 0.54 2020 -2022 4 -13.13 656.16 -57.13 0.54 2021 -2023 4 -11.23 657.33 -58.09 0.54 2022 -2024 4 -9.11 658.88 -58.21 0.54 2023 -2025 4 -7.68 660.51 -59.17 0.54 2024 -2026 4 -6.55 662.44 -59.99 0.54 2025 -2027 4 -5.71 664.02 -60.6 0.54 2026 -2028 4 -5.26 665.1 -60.61 0.54 2027 -2029 4 -3.83 667.32 -61.35 0.54 2028 -2030 4 -3.0 668.95 -62.25 0.54 2029 -2031 4 -1.86 672.08 -62.89 0.54 2030 -2032 4 -1.23 674.79 -63.89 0.54 2031 -2033 4 1.18 677.26 -64.02 0.54 2032 -2034 4 4.06 679.87 -64.02 0.54 2033 -2035 4 5.35 680.42 -65.0 0.54 2034 -2036 4 7.82 681.93 -66.22 0.54 2035 -2037 4 10.21 684.13 -66.68 0.54 2036 -2038 4 10.36 684.6 -68.46 0.54 2037 -2039 4 -68.53 604.57 -30.88 0.865 1961 -2040 4 -69.08 609.08 -31.45 0.865 2039 -2041 4 -69.0 614.17 -31.57 0.865 2040 -2042 4 -68.42 616.32 -31.57 0.865 2041 -2043 4 -67.21 619.67 -31.35 0.865 2042 -2044 4 -66.84 625.07 -31.61 0.865 2043 -2045 4 -67.06 630.75 -31.56 0.865 2044 -2046 4 -66.61 633.94 -31.3 0.865 2045 -2047 4 -66.46 637.44 -30.97 0.865 2046 -2048 4 -65.59 640.58 -30.89 0.54 2047 -2049 4 -65.91 644.53 -30.47 0.54 2048 -2050 4 -64.24 649.25 -30.18 0.54 2049 -2051 4 -62.58 652.77 -29.98 0.54 2050 -2052 4 -61.12 655.25 -28.66 0.54 2051 -2053 4 -59.15 659.67 -28.34 0.54 2052 -2054 4 -56.11 663.66 -28.23 0.54 2053 -2055 4 -53.24 668.4 -28.03 0.54 2054 -2056 4 -51.27 673.13 -27.75 0.54 2055 -2057 4 -50.07 679.22 -27.27 0.54 2056 -2058 4 -49.03 684.55 -26.77 0.54 2057 -2059 4 -48.58 689.26 -26.35 0.54 2058 -2060 4 -47.95 693.21 -25.72 0.54 2059 -2061 4 -47.12 696.32 -26.25 0.54 2060 -2062 4 -45.22 698.92 -28.14 0.54 2061 -2063 4 -43.1 701.08 -28.13 0.54 2062 -2064 4 -42.34 703.36 -27.97 0.54 2063 -2065 4 -40.37 706.27 -27.87 0.54 2064 -2066 4 -38.4 709.47 -27.74 0.54 2065 -2067 4 -36.9 713.44 -27.49 0.54 2066 -2068 4 -35.53 717.56 -27.21 0.54 2067 -2069 4 -34.18 720.16 -27.09 0.54 2068 -2070 4 -30.1 723.41 -25.71 0.54 2069 -2071 4 -26.09 725.2 -25.22 0.54 2070 -2072 4 -22.39 726.69 -24.74 0.54 2071 -2073 4 -19.04 728.84 -24.76 0.54 2072 -2074 4 -17.81 729.46 -24.74 0.54 2073 -2075 4 -15.69 732.52 -24.64 0.54 2074 -2076 4 -14.33 735.11 -24.51 0.54 2075 -2077 4 -13.19 736.11 -23.68 0.54 2076 -2078 4 -11.21 738.41 -23.57 0.54 2077 -2079 4 -9.54 739.49 -23.62 0.54 2078 -2080 4 -7.73 740.42 -23.69 0.54 2079 -2081 4 -17.36 277.69 26.92 1.19 1767 -2082 4 -15.39 280.28 26.99 1.19 2081 -2083 4 -13.39 282.85 25.84 1.19 2082 -2084 4 -11.82 284.96 24.78 1.19 2083 -2085 4 -10.56 287.07 23.65 1.19 2084 -2086 4 -8.93 289.09 23.25 1.19 2085 -2087 4 -8.11 290.11 22.28 1.19 2086 -2088 4 -6.9 291.04 22.26 1.19 2087 -2089 4 -5.65 291.83 23.13 0.755 2088 -2090 4 -4.02 293.26 22.67 0.755 2089 -2091 4 -3.27 294.64 22.73 0.755 2090 -2092 4 -2.78 296.0 21.38 1.08 2091 -2093 4 -1.73 298.6 21.55 1.08 2092 -2094 4 -1.02 300.03 21.09 1.08 2093 -2095 4 -0.04 301.18 20.27 1.08 2094 -2096 4 0.25 302.69 20.4 1.08 2095 -2097 4 0.7 304.37 20.52 1.08 2096 -2098 4 1.14 306.06 20.49 1.08 2097 -2099 4 1.18 307.56 19.43 1.08 2098 -2100 4 1.39 309.18 18.43 1.08 2099 -2101 4 1.89 310.03 17.56 0.755 2100 -2102 4 2.2 310.34 17.63 0.755 2101 -2103 4 3.12 311.24 17.78 0.755 2102 -2104 4 4.06 312.43 18.12 1.08 2103 -2105 4 4.95 313.69 17.94 1.08 2104 -2106 4 5.14 314.72 16.74 1.08 2105 -2107 4 4.92 316.75 16.35 1.08 2106 -2108 4 4.92 318.58 16.53 1.08 2107 -2109 4 4.84 319.58 15.73 1.08 2108 -2110 4 5.23 322.22 15.42 1.08 2109 -2111 4 5.35 324.83 15.36 1.08 2110 -2112 4 5.76 326.25 15.0 1.08 2111 -2113 4 6.0 327.82 14.61 1.08 2112 -2114 4 6.98 329.6 13.71 1.08 2113 -2115 4 7.27 332.96 13.94 1.08 2114 -2116 4 7.1 335.85 14.23 1.08 2115 -2117 4 7.55 338.44 14.45 1.08 2116 -2118 4 7.7 341.33 14.71 0.975 2117 -2119 4 7.32 344.13 14.27 0.975 2118 -2120 4 7.16 346.12 14.47 0.975 2119 -2121 4 5.72 348.74 14.18 0.975 2120 -2122 4 4.94 351.03 14.4 0.865 2121 -2123 4 4.62 354.67 14.78 0.865 2122 -2124 4 5.08 357.26 15.0 0.865 2123 -2125 4 6.28 359.11 14.99 0.865 2124 -2126 4 8.1 360.65 14.98 0.865 2125 -2127 4 9.61 362.79 14.96 0.865 2126 -2128 4 10.51 365.85 15.18 0.865 2127 -2129 4 10.8 370.41 15.6 0.865 2128 -2130 4 11.28 374.18 14.71 0.865 2129 -2131 4 12.49 378.15 14.98 0.865 2130 -2132 4 13.09 380.89 15.2 0.865 2131 -2133 4 14.89 386.39 15.5 0.865 2132 -2134 4 16.25 389.6 15.69 0.865 2133 -2135 4 16.25 392.64 15.98 0.865 2134 -2136 4 17.15 395.08 16.21 0.865 2135 -2137 4 18.52 397.07 16.28 0.865 2136 -2138 4 19.73 399.51 16.41 0.865 2137 -2139 4 20.78 402.41 16.59 0.865 2138 -2140 4 20.61 407.73 17.12 0.865 2139 -2141 4 20.7 411.29 16.79 0.865 2140 -2142 4 20.14 414.87 16.27 0.755 2141 -2143 4 19.98 419.9 16.78 0.755 2142 -2144 4 19.66 422.93 17.11 0.755 2143 -2145 4 18.58 425.81 17.49 0.755 2144 -2146 4 18.43 427.18 17.64 0.755 2145 -2147 4 18.88 429.77 17.85 0.755 2146 -2148 4 17.97 431.28 18.08 0.755 2147 -2149 4 16.43 432.48 18.34 0.755 2148 -2150 4 15.96 433.55 18.34 0.755 2149 -2151 4 16.2 436.36 17.98 0.755 2150 -2152 4 17.27 438.02 18.2 0.755 2151 -2153 4 18.34 440.93 18.45 0.755 2152 -2154 4 18.82 442.56 18.88 0.755 2153 -2155 4 18.97 443.93 19.07 0.755 2154 -2156 4 19.27 447.27 19.44 0.755 2155 -2157 4 19.56 450.62 19.74 0.755 2156 -2158 4 20.19 453.33 20.25 0.755 2157 -2159 4 20.94 455.3 20.45 0.755 2158 -2160 4 21.4 457.6 20.64 0.755 2159 -2161 4 22.46 458.97 20.67 0.755 2160 -2162 4 25.04 462.1 21.2 0.755 2161 -2163 4 26.55 466.07 21.44 0.755 2162 -2164 4 27.91 470.5 21.74 0.755 2163 -2165 4 27.89 473.84 22.08 0.755 2164 -2166 4 27.73 475.52 22.25 0.755 2165 -2167 4 28.04 477.66 23.95 0.54 2166 -2168 4 28.02 479.2 24.02 0.54 2167 -2169 4 29.08 480.27 24.02 0.54 2168 -2170 4 29.8 481.69 23.72 0.54 2169 -2171 4 29.64 483.05 23.79 0.54 2170 -2172 4 29.79 484.42 23.99 0.54 2171 -2173 4 29.53 485.89 24.61 0.54 2172 -2174 4 28.98 486.44 25.39 0.54 2173 -2175 4 29.01 488.22 26.02 0.54 2174 -2176 4 28.58 489.55 26.49 0.54 2175 -2177 4 28.94 490.01 26.5 0.54 2176 -2178 4 28.57 490.08 27.45 0.54 2177 -2179 4 27.96 490.68 27.56 0.54 2178 -2180 4 28.41 492.04 27.65 0.54 2179 -2181 4 28.56 494.01 27.91 0.54 2180 -2182 4 29.32 496.3 28.06 0.54 2181 -2183 4 29.76 496.79 27.91 0.54 2182 -2184 4 30.51 498.77 28.04 0.54 2183 -2185 4 30.47 500.33 27.82 0.54 2184 -2186 4 30.32 501.09 27.91 0.54 2185 -2187 4 30.97 501.65 28.36 0.54 2186 -2188 4 31.5 502.03 29.25 0.54 2187 -2189 4 32.59 503.08 29.56 0.54 2188 -2190 4 33.5 503.69 29.54 0.54 2189 -2191 4 34.15 504.26 29.9 0.54 2190 -2192 4 33.99 506.54 30.22 0.54 2191 -2193 4 33.84 508.21 30.4 0.54 2192 -2194 4 33.53 509.12 30.59 0.54 2193 -2195 4 35.06 509.43 30.48 0.435 2194 -2196 4 35.97 511.57 30.68 0.435 2195 -2197 4 37.18 513.69 30.85 0.435 2196 -2198 4 37.04 514.75 31.04 0.435 2197 -2199 4 37.19 516.41 31.26 0.435 2198 -2200 4 38.28 518.06 31.71 0.435 2199 -2201 4 39.65 519.14 31.68 0.435 2200 -2202 4 41.49 521.57 31.98 0.435 2201 -2203 4 41.85 521.81 32.65 0.435 2202 -2204 4 43.07 522.74 32.63 0.435 2203 -2205 4 44.13 523.8 32.7 0.435 2204 -2206 4 45.06 524.72 32.86 0.435 2205 -2207 4 45.85 526.67 33.28 0.435 2206 -2208 4 47.11 528.13 33.91 0.54 2207 -2209 4 48.02 529.06 33.99 0.54 2208 -2210 4 48.39 529.9 34.73 0.54 2209 -2211 4 48.13 531.37 35.42 0.54 2210 -2212 4 48.64 533.6 36.19 0.54 2211 -2213 4 49.72 534.64 36.58 0.54 2212 -2214 4 50.83 536.28 37.09 0.54 2213 -2215 4 51.47 537.45 37.59 0.54 2214 -2216 4 51.81 539.24 38.2 0.54 2215 -2217 4 51.83 540.13 38.5 0.54 2216 -2218 4 51.84 541.34 38.7 0.54 2217 -2219 4 52.15 542.24 38.83 0.54 2218 -2220 4 52.33 543.59 39.32 0.54 2219 -2221 4 53.6 545.36 39.99 0.54 2220 -2222 4 54.28 545.89 40.81 0.54 2221 -2223 4 55.34 546.35 40.83 0.54 2222 -2224 4 56.13 546.78 41.09 0.54 2223 -2225 4 56.77 547.36 41.39 0.54 2224 -2226 4 57.57 548.09 41.93 0.54 2225 -2227 4 57.56 550.21 42.21 0.54 2226 -2228 4 57.72 551.28 42.29 0.54 2227 -2229 4 57.57 552.32 42.56 0.54 2228 -2230 4 58.03 553.09 42.6 0.54 2229 -2231 4 58.34 553.99 42.74 0.54 2230 -2232 4 59.13 554.73 43.11 0.54 2231 -2233 4 59.45 555.63 43.32 0.54 2232 -2234 4 59.32 556.35 43.7 0.54 2233 -2235 4 59.47 558.03 43.94 0.54 2234 -2236 4 58.88 558.3 44.17 0.54 2235 -2237 4 29.04 490.61 26.63 0.54 2177 -2238 4 29.72 492.36 27.64 0.54 2237 -2239 4 30.65 494.47 27.99 0.54 2238 -2240 4 32.98 497.63 28.69 0.54 2239 -2241 4 34.1 499.26 29.35 0.54 2240 -2242 4 34.53 499.43 29.09 0.54 2241 -2243 4 35.37 501.32 28.6 0.54 2242 -2244 4 36.74 502.7 28.61 0.54 2243 -2245 4 37.77 504.43 28.3 0.54 2244 -2246 4 38.65 506.3 28.03 0.54 2245 -2247 4 39.81 507.26 27.49 0.54 2246 -2248 4 41.92 509.73 27.45 0.54 2247 -2249 4 42.23 511.56 27.6 0.54 2248 -2250 4 43.71 512.51 27.26 0.54 2249 -2251 4 44.78 513.28 27.24 0.54 2250 -2252 4 46.29 515.73 27.34 0.54 2251 -2253 4 47.49 518.78 27.44 0.54 2252 -2254 4 48.37 519.74 27.16 0.54 2253 -2255 4 49.59 521.58 27.15 0.54 2254 -2256 4 51.09 522.81 27.13 0.54 2255 -2257 4 51.84 523.29 27.02 0.54 2256 -2258 4 52.76 524.21 26.97 0.54 2257 -2259 4 53.56 524.62 27.46 0.54 2258 -2260 4 54.52 525.19 28.03 0.54 2259 -2261 4 56.24 527.44 28.55 0.54 2260 -2262 4 57.33 528.46 29.0 0.54 2261 -2263 4 58.44 530.41 29.61 0.54 2262 -2264 4 59.99 533.42 30.14 0.54 2263 -2265 4 60.91 535.55 30.41 0.54 2264 -2266 4 61.08 536.92 29.03 0.54 2265 -2267 4 59.7 537.66 29.22 0.54 2266 -2268 4 59.23 538.12 29.16 0.54 2267 -2269 4 59.76 538.5 29.98 0.54 2268 -2270 4 59.88 539.59 29.85 0.54 2269 -2271 4 59.98 539.81 29.25 0.54 2270 -2272 4 59.62 540.17 28.64 0.54 2271 -2273 4 59.29 540.5 28.4 0.54 2272 -2274 4 59.24 541.17 27.94 0.54 2273 -2275 4 59.32 541.68 27.3 0.54 2274 -2276 4 58.81 542.19 26.79 0.54 2275 -2277 4 58.14 543.48 26.23 0.54 2276 -2278 4 58.07 544.76 25.76 0.54 2277 -2279 4 58.32 546.03 25.25 0.54 2278 -2280 4 58.55 547.32 24.67 0.54 2279 -2281 4 58.82 547.67 24.22 0.54 2280 -2282 4 59.4 548.3 24.01 0.54 2281 -2283 4 60.73 549.42 23.54 0.54 2282 -2284 4 61.76 549.92 23.19 0.54 2283 -2285 4 63.43 551.0 23.07 0.54 2284 -2286 4 64.13 552.74 22.58 0.54 2285 -2287 4 64.24 553.84 22.29 0.54 2286 -2288 4 65.11 554.8 21.85 0.54 2287 -2289 4 65.65 555.19 21.08 0.54 2288 -2290 4 66.55 555.81 20.98 0.54 2289 -2291 4 67.24 556.66 20.24 0.54 2290 -2292 4 67.35 556.86 19.72 0.54 2291 -2293 4 68.34 558.0 18.99 0.54 2292 -2294 4 69.21 559.57 18.62 0.54 2293 -2295 4 70.23 560.4 18.14 0.54 2294 -2296 4 70.45 560.79 17.17 0.54 2295 -2297 4 70.86 561.29 16.81 0.54 2296 -2298 4 71.45 561.94 16.52 0.54 2297 -2299 4 72.6 563.83 15.99 0.54 2298 -2300 4 72.7 565.56 15.61 0.54 2299 -2301 4 73.54 568.06 15.03 0.54 2300 -2302 4 74.38 568.75 14.34 0.54 2301 -2303 4 74.67 569.39 12.56 0.54 2302 -2304 4 75.73 570.17 12.39 0.54 2303 -2305 4 76.89 571.45 11.81 0.54 2304 -2306 4 77.94 573.13 11.87 0.54 2305 -2307 4 78.76 575.36 11.1 0.54 2306 -2308 4 79.3 576.06 10.3 0.54 2307 -2309 4 80.31 577.19 9.71 0.54 2308 -2310 4 81.31 578.93 9.17 0.54 2309 -2311 4 82.86 579.76 8.13 0.54 2310 -2312 4 83.76 583.11 8.38 0.54 2311 -2313 4 83.89 585.4 8.52 0.54 2312 -2314 4 83.09 588.03 8.39 0.54 2313 -2315 4 82.89 591.55 8.53 0.54 2314 -2316 4 82.42 594.13 8.74 0.54 2315 -2317 4 82.09 597.81 8.83 0.54 2316 -2318 4 80.69 599.8 8.85 0.54 2317 -2319 4 79.69 600.78 8.21 0.54 2318 -2320 4 26.36 477.48 22.58 0.755 2166 -2321 4 24.42 479.08 23.43 0.755 2320 -2322 4 23.06 481.64 23.96 0.755 2321 -2323 4 21.95 482.74 23.71 0.755 2322 -2324 4 21.76 484.24 25.7 0.755 2323 -2325 4 21.44 485.15 25.82 0.755 2324 -2326 4 21.44 488.19 26.11 0.755 2325 -2327 4 22.34 490.02 26.21 0.54 2326 -2328 4 23.55 491.86 26.27 0.54 2327 -2329 4 24.7 492.57 25.41 0.54 2328 -2330 4 26.64 493.37 25.0 0.54 2329 -2331 4 28.16 494.6 24.99 0.54 2330 -2332 4 29.82 496.6 25.02 0.54 2331 -2333 4 31.5 499.79 25.33 0.54 2332 -2334 4 35.02 503.9 25.71 0.54 2333 -2335 4 36.39 505.89 25.78 0.54 2334 -2336 4 37.44 507.57 25.85 0.54 2335 -2337 4 39.27 508.79 25.87 0.54 2336 -2338 4 41.55 511.1 25.89 0.54 2337 -2339 4 43.37 512.94 25.89 0.54 2338 -2340 4 45.21 515.97 26.41 0.54 2339 -2341 4 46.45 518.1 26.65 0.54 2340 -2342 4 47.53 519.74 27.02 0.54 2341 -2343 4 48.62 522.01 27.43 0.54 2342 -2344 4 50.17 523.2 27.78 0.54 2343 -2345 4 50.85 523.74 28.6 0.54 2344 -2346 4 51.93 524.48 28.81 0.54 2345 -2347 4 53.46 526.01 28.88 0.54 2346 -2348 4 56.05 529.52 29.14 0.54 2347 -2349 4 57.74 531.78 29.58 0.54 2348 -2350 4 58.99 534.18 30.08 0.54 2349 -2351 4 59.92 536.9 30.63 0.54 2350 -2352 4 60.03 537.4 31.74 0.54 2351 -2353 4 59.3 538.72 32.39 0.54 2352 -2354 4 58.51 539.21 30.61 0.54 2353 -2355 4 58.69 540.25 29.33 0.54 2354 -2356 4 58.29 541.25 28.49 0.54 2355 -2357 4 58.14 542.0 28.57 0.54 2356 -2358 4 57.79 542.95 28.32 0.54 2357 -2359 4 57.57 544.41 27.59 0.54 2358 -2360 4 57.43 545.47 26.19 0.54 2359 -2361 4 57.68 547.64 25.92 0.54 2360 -2362 4 58.55 549.2 25.61 0.54 2361 -2363 4 60.81 550.32 25.21 0.54 2362 -2364 4 62.55 551.33 24.39 0.54 2363 -2365 4 64.07 552.86 24.33 0.54 2364 -2366 4 64.52 555.77 24.57 0.54 2365 -2367 4 66.41 556.93 23.6 0.54 2366 -2368 4 67.27 557.6 23.06 0.54 2367 -2369 4 69.63 560.75 22.39 0.54 2368 -2370 4 70.56 562.25 21.01 0.54 2369 -2371 4 71.46 562.88 19.26 0.54 2370 -2372 4 71.6 564.27 19.3 0.54 2371 -2373 4 72.57 565.75 18.3 0.54 2372 -2374 4 72.91 568.45 17.39 0.54 2373 -2375 4 73.87 569.02 16.15 0.54 2374 -2376 4 74.26 569.56 15.34 0.54 2375 -2377 4 74.92 571.33 14.54 0.54 2376 -2378 4 76.82 573.71 13.77 0.54 2377 -2379 4 77.18 574.27 12.73 0.54 2378 -2380 4 78.21 575.39 12.36 0.54 2379 -2381 4 79.55 577.99 12.43 0.54 2380 -2382 4 80.96 580.25 11.3 0.54 2381 -2383 4 81.84 581.2 11.02 0.54 2382 -2384 4 82.74 582.73 11.0 0.54 2383 -2385 4 82.67 584.93 10.54 0.54 2384 -2386 4 82.51 588.13 10.79 0.54 2385 -2387 4 81.97 591.69 10.44 0.54 2386 -2388 4 81.88 593.0 9.67 0.54 2387 -2389 4 81.54 596.06 9.69 0.54 2388 -2390 4 81.34 597.5 9.25 0.54 2389 -2391 4 80.58 599.45 8.0 0.54 2390 -2392 4 79.34 601.89 8.2 0.54 2391 -2393 4 78.44 602.79 6.85 0.54 2392 -2394 4 20.72 483.94 23.94 0.755 2323 -2395 4 19.2 485.14 24.21 0.755 2394 -2396 4 16.73 486.68 24.28 0.755 2395 -2397 4 15.18 489.43 24.38 0.755 2396 -2398 4 14.35 490.85 23.92 0.755 2397 -2399 4 12.92 492.26 23.58 0.755 2398 -2400 4 11.82 493.95 23.63 0.755 2399 -2401 4 9.92 496.43 23.29 0.755 2400 -2402 4 7.41 498.92 23.01 0.755 2401 -2403 4 5.5 501.41 22.6 0.755 2402 -2404 4 4.59 502.93 22.83 0.755 2403 -2405 4 3.9 503.93 22.08 0.755 2404 -2406 4 3.28 506.96 22.44 0.755 2405 -2407 4 1.99 508.53 22.03 0.755 2406 -2408 4 -0.01 509.91 22.05 0.755 2407 -2409 4 -1.77 511.36 21.36 0.755 2408 -2410 4 -4.16 512.8 20.74 0.755 2409 -2411 4 -6.66 514.37 20.37 0.755 2410 -2412 4 -9.32 516.4 20.06 0.755 2411 -2413 4 -11.82 518.26 19.87 0.755 2412 -2414 4 -14.28 520.09 20.05 0.755 2413 -2415 4 -16.46 522.25 20.0 0.755 2414 -2416 4 -18.6 524.05 20.3 0.755 2415 -2417 4 -20.89 525.7 20.67 0.755 2416 -2418 4 -23.94 527.8 21.16 0.755 2417 -2419 4 -26.93 529.84 20.72 0.755 2418 -2420 4 -29.22 531.8 21.05 0.755 2419 -2421 4 -29.98 534.08 21.35 0.755 2420 -2422 4 -30.75 534.84 20.96 0.755 2421 -2423 4 -31.21 536.5 21.16 0.755 2422 -2424 4 -30.76 540.01 21.46 0.755 2423 -2425 4 -30.25 542.53 20.68 0.755 2424 -2426 4 -30.3 545.32 20.51 0.755 2425 -2427 4 -30.29 546.84 19.14 0.755 2426 -2428 4 -30.31 549.89 19.29 0.755 2427 -2429 4 -29.75 552.96 19.23 0.755 2428 -2430 4 -30.09 554.54 18.9 0.755 2429 -2431 4 -31.06 556.7 18.74 0.755 2430 -2432 4 -32.64 557.96 18.4 0.755 2431 -2433 4 -32.86 561.2 18.21 0.755 2432 -2434 4 -33.38 564.45 17.96 0.755 2433 -2435 4 -34.04 566.93 17.68 0.755 2434 -2436 4 -33.96 570.49 17.41 0.755 2435 -2437 4 -33.17 573.98 16.38 0.755 2436 -2438 4 -32.45 577.82 16.32 0.755 2437 -2439 4 -32.12 579.92 15.2 0.755 2438 -2440 4 -32.25 582.78 14.22 0.755 2439 -2441 4 -32.01 584.97 13.8 0.755 2440 -2442 4 -31.58 586.68 13.62 0.755 2441 -2443 4 -30.45 589.2 12.94 0.755 2442 -2444 4 -29.95 590.83 11.99 0.755 2443 -2445 4 -29.68 592.4 11.66 0.755 2444 -2446 4 -29.88 595.32 11.58 0.755 2445 -2447 4 -29.65 597.51 11.17 0.755 2446 -2448 4 -28.28 599.5 11.17 0.755 2447 -2449 4 -26.84 601.72 10.49 0.755 2448 -2450 4 -27.0 604.61 10.79 0.755 2449 -2451 4 -26.27 606.94 10.56 0.755 2450 -2452 4 -25.77 609.69 10.64 0.755 2451 -2453 4 -26.39 612.12 10.93 0.755 2452 -2454 4 -27.3 614.54 11.26 0.755 2453 -2455 4 -28.75 616.58 10.76 0.755 2454 -2456 4 -29.58 619.82 10.55 0.755 2455 -2457 4 -29.82 622.48 10.07 0.755 2456 -2458 4 -30.14 625.24 10.14 0.755 2457 -2459 4 -31.18 628.09 9.23 0.755 2458 -2460 4 -31.97 631.59 9.5 0.755 2459 -2461 4 -33.21 634.65 9.68 0.755 2460 -2462 4 -34.46 637.08 9.95 0.755 2461 -2463 4 -34.52 640.79 9.65 0.755 2462 -2464 4 -35.78 643.25 9.62 0.755 2463 -2465 4 -36.33 645.32 8.9 0.755 2464 -2466 4 -37.28 647.47 8.89 0.755 2465 -2467 4 -38.71 650.71 8.74 0.755 2466 -2468 4 -39.06 654.69 8.85 0.755 2467 -2469 4 -38.94 658.81 9.09 0.755 2468 -2470 4 -38.69 661.92 8.7 0.755 2469 -2471 4 -38.58 665.73 8.9 0.755 2470 -2472 4 -38.48 669.28 8.79 0.755 2471 -2473 4 -36.45 674.25 8.18 0.755 2472 -2474 4 -35.23 677.91 8.42 0.755 2473 -2475 4 -35.36 680.69 7.11 0.755 2474 -2476 4 -35.11 684.39 6.85 0.755 2475 -2477 4 -35.23 686.32 7.57 0.755 2476 -2478 4 -35.07 688.29 7.83 0.755 2477 -2479 4 -35.04 690.69 6.85 0.755 2478 -2480 4 -34.86 693.24 5.88 0.755 2479 -2481 4 -34.95 696.08 5.1 0.755 2480 -2482 4 -35.02 698.27 4.64 0.755 2481 -2483 4 -34.65 700.63 4.07 0.755 2482 -2484 4 -34.07 703.1 3.9 0.755 2483 -2485 4 -32.44 705.74 2.11 0.755 2484 -2486 4 -30.6 706.97 2.06 0.755 2485 -2487 4 -28.65 708.68 1.9 0.755 2486 -2488 4 -27.71 709.59 0.45 0.755 2487 -2489 4 -25.75 710.99 0.26 0.755 2488 -2490 4 -24.15 712.43 -0.41 0.755 2489 -2491 4 -21.64 713.91 -1.26 0.755 2490 -2492 4 -20.49 715.5 -1.96 0.755 2491 -2493 4 -19.15 716.91 -2.25 0.755 2492 -2494 4 -17.57 718.38 -3.09 0.755 2493 -2495 4 -15.77 719.65 -3.57 0.755 2494 -2496 4 -14.31 720.93 -4.04 0.755 2495 -2497 4 -13.02 722.09 -4.96 0.755 2496 -2498 4 -12.3 722.91 -5.48 0.755 2497 -2499 4 0.45 311.01 18.62 0.975 2100 -2500 4 -0.41 312.78 17.74 0.975 2499 -2501 4 -1.24 313.6 17.23 0.975 2500 -2502 4 -1.75 314.11 16.64 0.975 2501 -2503 4 -1.81 316.3 16.33 0.975 2502 -2504 4 -1.73 318.05 15.65 0.975 2503 -2505 4 -2.05 319.58 15.76 0.975 2504 -2506 4 -2.58 321.63 15.25 0.975 2505 -2507 4 -3.23 322.86 15.13 0.975 2506 -2508 4 -4.25 324.19 14.06 0.865 2507 -2509 4 -5.18 325.71 14.3 0.865 2508 -2510 4 -5.49 328.14 14.56 0.865 2509 -2511 4 -4.58 331.49 14.81 0.865 2510 -2512 4 -3.58 333.83 14.42 0.865 2511 -2513 4 -3.49 335.87 13.94 0.865 2512 -2514 4 -3.81 338.62 14.08 0.865 2513 -2515 4 -5.36 341.96 14.47 0.865 2514 -2516 4 -6.25 344.68 13.45 0.865 2515 -2517 4 -7.41 347.64 12.94 0.865 2516 -2518 4 -8.21 349.66 12.76 0.865 2517 -2519 4 -9.21 351.85 12.23 0.865 2518 -2520 4 -9.95 353.8 11.13 0.865 2519 -2521 4 -10.57 356.85 11.42 0.865 2520 -2522 4 -11.34 358.81 11.68 0.865 2521 -2523 4 -12.0 361.28 11.53 0.865 2522 -2524 4 -14.22 363.19 11.01 0.865 2523 -2525 4 -15.83 365.69 10.49 0.865 2524 -2526 4 -18.06 369.41 10.07 0.865 2525 -2527 4 -19.29 373.04 10.54 0.865 2526 -2528 4 -22.14 377.07 10.14 0.865 2527 -2529 4 -23.1 379.24 9.98 0.865 2528 -2530 4 -23.53 380.89 8.84 0.865 2529 -2531 4 -23.88 383.35 8.72 0.865 2530 -2532 4 -24.53 387.03 8.77 0.865 2531 -2533 4 -24.08 389.32 8.95 0.865 2532 -2534 4 -24.09 391.45 9.16 0.865 2533 -2535 4 -24.86 394.03 9.48 0.865 2534 -2536 4 -25.48 395.85 8.05 0.865 2535 -2537 4 -26.13 397.42 7.81 0.865 2536 -2538 4 -26.68 399.8 7.1 0.865 2537 -2539 4 -26.49 400.51 6.33 0.865 2538 -2540 4 -25.58 402.04 6.39 0.865 2539 -2541 4 -24.74 402.73 7.22 0.865 2540 -2542 4 -24.29 404.69 7.51 0.865 2541 -2543 4 -23.23 406.69 7.6 0.755 2542 -2544 4 -22.88 408.46 8.29 0.755 2543 -2545 4 -22.43 409.53 8.35 0.755 2544 -2546 4 -21.7 410.33 8.05 0.755 2545 -2547 4 -20.98 411.14 7.53 0.755 2546 -2548 4 -20.3 412.0 6.66 0.755 2547 -2549 4 -19.27 412.5 6.31 0.755 2548 -2550 4 -18.52 412.96 6.2 0.865 2549 -2551 4 -17.16 414.95 6.27 0.865 2550 -2552 4 -15.9 417.06 5.15 0.865 2551 -2553 4 -14.49 419.23 4.55 0.865 2552 -2554 4 -14.04 422.43 4.83 0.865 2553 -2555 4 -13.9 425.02 3.32 0.865 2554 -2556 4 -14.02 426.97 2.32 0.865 2555 -2557 4 -14.02 429.4 1.04 0.865 2556 -2558 4 -13.44 431.27 0.72 0.865 2557 -2559 4 -12.65 432.3 -0.38 0.865 2558 -2560 4 -11.8 433.29 -1.12 0.865 2559 -2561 4 -10.33 434.26 -1.62 0.865 2560 -2562 4 -9.34 435.12 -2.54 0.865 2561 -2563 4 -7.91 435.84 -3.57 0.865 2562 -2564 4 -6.58 436.96 -3.96 0.865 2563 -2565 4 -5.57 439.61 -4.4 0.865 2564 -2566 4 -5.38 440.92 -5.34 0.865 2565 -2567 4 -4.84 441.91 -6.06 0.865 2566 -2568 4 -4.81 443.41 -7.21 0.865 2567 -2569 4 -4.87 444.69 -7.75 0.865 2568 -2570 4 -5.13 445.57 -8.86 0.865 2569 -2571 4 -5.01 446.65 -8.98 0.865 2570 -2572 4 -4.96 447.81 -9.93 0.865 2571 -2573 4 -5.06 449.15 -10.93 0.865 2572 -2574 4 -4.75 449.29 -11.62 0.54 2573 -2575 4 -3.29 449.98 -12.38 0.54 2574 -2576 4 -2.58 450.49 -13.0 0.54 2575 -2577 4 -2.33 450.54 -13.46 0.54 2576 -2578 4 -1.64 451.07 -14.22 0.54 2577 -2579 4 -0.5 452.39 -15.11 0.54 2578 -2580 4 -0.14 453.85 -15.99 0.54 2579 -2581 4 -0.05 454.99 -16.57 0.54 2580 -2582 4 0.18 455.67 -17.28 0.54 2581 -2583 4 0.48 455.98 -17.35 0.54 2582 -2584 4 0.13 456.62 -17.63 0.54 2583 -2585 4 0.62 457.37 -18.97 0.54 2584 -2586 4 -0.14 458.15 -20.56 0.54 2585 -2587 4 -0.75 459.36 -22.05 0.54 2586 -2588 4 -1.78 460.98 -22.94 0.54 2587 -2589 4 -1.54 462.27 -23.57 0.54 2588 -2590 4 -0.84 464.32 -24.05 0.54 2589 -2591 4 -1.11 464.9 -25.33 0.54 2590 -2592 4 -0.49 465.5 -25.11 0.54 2591 -2593 4 -0.34 466.55 -24.94 0.54 2592 -2594 4 -0.49 467.31 -26.45 0.54 2593 -2595 4 -0.39 468.13 -26.97 0.54 2594 -2596 4 -0.74 470.01 -27.28 0.54 2595 -2597 4 -0.97 470.83 -27.87 0.54 2596 -2598 4 -1.67 472.13 -28.58 0.54 2597 -2599 4 -0.75 473.06 -28.65 0.54 2598 -2600 4 0.2 473.93 -29.71 0.54 2599 -2601 4 0.79 474.26 -29.96 0.54 2600 -2602 4 2.11 475.08 -30.54 0.54 2601 -2603 4 2.81 475.31 -31.25 0.54 2602 -2604 4 3.67 475.98 -31.81 0.54 2603 -2605 4 5.03 477.05 -31.82 0.54 2604 -2606 4 5.69 477.93 -32.93 0.54 2605 -2607 4 6.67 479.09 -33.81 0.54 2606 -2608 4 7.67 481.74 -34.25 0.54 2607 -2609 4 8.44 482.82 -35.8 0.54 2608 -2610 4 9.07 484.33 -37.16 0.54 2609 -2611 4 9.71 485.22 -38.41 0.54 2610 -2612 4 10.16 485.67 -38.41 0.54 2611 -2613 4 11.12 486.86 -39.51 0.54 2612 -2614 4 11.62 487.59 -40.69 0.54 2613 -2615 4 12.5 488.85 -40.96 0.54 2614 -2616 4 13.86 490.84 -40.89 0.54 2615 -2617 4 14.78 491.76 -40.88 0.54 2616 -2618 4 15.2 492.24 -41.18 0.54 2617 -2619 4 15.27 493.08 -41.94 0.54 2618 -2620 4 16.1 493.79 -42.86 0.54 2619 -2621 4 16.49 494.33 -43.6 0.54 2620 -2622 4 16.5 494.62 -45.07 0.54 2621 -2623 4 17.73 495.24 -45.13 0.54 2622 -2624 4 18.31 495.88 -45.34 0.54 2623 -2625 4 18.85 496.56 -46.09 0.54 2624 -2626 4 19.69 497.56 -46.82 0.54 2625 -2627 4 20.38 498.39 -47.49 0.54 2626 -2628 4 21.06 499.85 -48.25 0.54 2627 -2629 4 21.6 501.14 -48.84 0.54 2628 -2630 4 22.39 502.73 -48.76 0.54 2629 -2631 4 22.61 503.49 -49.38 0.54 2630 -2632 4 23.96 504.88 -49.45 0.54 2631 -2633 4 25.57 508.45 -49.93 0.54 2632 -2634 4 26.97 511.91 -50.78 0.54 2633 -2635 4 27.71 513.93 -50.89 0.54 2634 -2636 4 28.54 515.53 -51.56 0.54 2635 -2637 4 28.97 516.64 -51.94 0.54 2636 -2638 4 29.65 518.08 -52.54 0.54 2637 -2639 4 30.79 519.69 -53.39 0.54 2638 -2640 4 32.95 523.04 -54.55 0.54 2639 -2641 4 33.78 525.84 -55.04 0.54 2640 -2642 4 34.99 529.21 -56.49 0.54 2641 -2643 4 35.75 531.81 -57.97 0.54 2642 -2644 4 36.13 533.87 -58.56 0.54 2643 -2645 4 35.91 537.95 -58.37 0.54 2644 -2646 4 36.37 539.31 -59.71 0.54 2645 -2647 4 37.22 541.51 -60.26 0.54 2646 -2648 4 37.72 543.15 -61.28 0.54 2647 -2649 4 38.29 543.73 -61.27 0.54 2648 -2650 4 38.41 544.21 -61.54 0.11 2649 -2651 4 37.6 545.31 -61.8 0.435 2650 -2652 4 36.83 548.18 -61.46 0.435 2651 -2653 4 36.22 550.02 -61.31 0.435 2652 -2654 4 35.87 550.37 -61.69 0.435 2653 -2655 4 35.35 553.01 -61.99 0.435 2654 -2656 4 34.88 554.08 -61.91 0.435 2655 -2657 4 35.14 556.25 -62.18 0.435 2656 -2658 4 35.21 557.09 -63.01 0.435 2657 -2659 4 35.17 557.73 -63.25 0.435 2658 -2660 4 35.41 559.32 -63.79 0.435 2659 -2661 4 35.81 559.85 -64.46 0.435 2660 -2662 4 35.76 560.51 -64.85 0.435 2661 -2663 4 36.27 561.21 -65.89 0.435 2662 -2664 4 36.21 562.19 -66.39 0.435 2663 -2665 4 36.15 562.25 -67.05 0.435 2664 -2666 4 36.99 563.24 -67.71 0.435 2665 -2667 4 38.29 565.32 -68.54 0.435 2666 -2668 4 38.96 565.85 -67.72 0.435 2667 -2669 4 39.41 566.93 -67.72 0.435 2668 -2670 4 39.67 567.27 -68.17 0.435 2669 -2671 4 39.73 567.54 -69.29 0.435 2670 -2672 4 40.12 568.06 -69.95 0.435 2671 -2673 4 40.64 568.76 -70.84 0.435 2672 -2674 4 40.89 569.12 -71.43 0.435 2673 -2675 4 41.23 569.41 -72.72 0.435 2674 -2676 4 42.55 570.23 -73.3 0.435 2675 -2677 4 43.04 570.96 -74.47 0.435 2676 -2678 4 44.59 571.87 -75.89 0.435 2677 -2679 4 46.21 572.71 -76.57 0.435 2678 -2680 4 47.96 574.0 -77.28 0.435 2679 -2681 4 48.98 574.52 -77.86 0.435 2680 -2682 4 49.68 575.06 -78.69 0.435 2681 -2683 4 51.18 576.3 -78.86 0.435 2682 -2684 4 52.38 576.63 -79.02 0.435 2683 -2685 4 53.07 576.56 -79.84 0.435 2684 -2686 4 53.63 576.92 -80.4 0.435 2685 -2687 4 54.5 577.58 -80.94 0.435 2686 -2688 4 38.92 545.0 -61.35 0.54 2649 -2689 4 39.59 545.86 -62.32 0.54 2688 -2690 4 39.83 547.44 -62.8 0.54 2689 -2691 4 40.2 548.91 -63.59 0.54 2690 -2692 4 39.93 549.79 -64.76 0.54 2691 -2693 4 40.73 551.11 -64.25 0.54 2692 -2694 4 42.55 552.96 -64.25 0.54 2693 -2695 4 44.21 554.65 -64.3 0.54 2694 -2696 4 44.58 555.52 -65.24 0.54 2695 -2697 4 45.64 557.2 -65.18 0.54 2696 -2698 4 46.81 559.99 -66.97 0.54 2697 -2699 4 48.13 562.04 -67.51 0.54 2698 -2700 4 49.0 564.21 -67.81 0.54 2699 -2701 4 50.03 565.33 -68.19 0.54 2700 -2702 4 50.9 566.28 -68.55 0.54 2701 -2703 4 52.68 567.85 -68.94 0.54 2702 -2704 4 56.02 571.54 -68.89 0.54 2703 -2705 4 58.84 573.92 -69.67 0.54 2704 -2706 4 60.43 575.37 -70.44 0.54 2705 -2707 4 61.6 576.65 -70.87 0.54 2706 -2708 4 63.19 579.03 -71.7 0.54 2707 -2709 4 63.94 579.81 -71.76 0.54 2708 -2710 4 65.4 581.1 -72.45 0.54 2709 -2711 4 66.7 581.94 -73.17 0.54 2710 -2712 4 69.07 583.76 -73.37 0.54 2711 -2713 4 70.55 584.43 -73.95 0.54 2712 -2714 4 72.2 585.53 -74.23 0.54 2713 -2715 4 73.5 586.37 -74.95 0.54 2714 -2716 4 74.67 587.34 -75.5 0.54 2715 -2717 4 76.08 588.98 -76.59 0.54 2716 -2718 4 78.19 590.26 -76.9 0.54 2717 -2719 4 79.84 591.64 -76.99 0.54 2718 -2720 4 80.71 592.31 -77.6 0.54 2719 -2721 4 82.15 593.33 -78.55 0.54 2720 -2722 4 82.64 594.06 -79.73 0.54 2721 -2723 4 84.0 594.84 -79.86 0.54 2722 -2724 4 84.73 595.34 -80.26 0.54 2723 -2725 4 85.78 596.12 -80.35 0.54 2724 -2726 4 86.62 596.81 -81.11 0.54 2725 -2727 4 -5.68 450.37 -10.83 0.755 2573 -2728 4 -7.62 451.97 -11.56 0.755 2727 -2729 4 -8.69 452.12 -11.59 0.755 2728 -2730 4 -10.72 453.23 -11.83 0.755 2729 -2731 4 -11.21 454.92 -11.91 0.755 2730 -2732 4 -12.07 457.6 -12.63 0.755 2731 -2733 4 -12.78 459.52 -13.43 0.755 2732 -2734 4 -13.79 461.13 -14.09 0.755 2733 -2735 4 -14.92 462.85 -14.51 0.755 2734 -2736 4 -16.0 466.65 -14.1 0.755 2735 -2737 4 -17.08 471.05 -13.58 0.65 2736 -2738 4 -17.55 473.64 -13.28 0.65 2737 -2739 4 -18.17 476.06 -12.99 0.65 2738 -2740 4 -18.93 477.41 -12.79 0.65 2739 -2741 4 -18.92 478.03 -12.72 0.65 2740 -2742 4 -19.99 479.08 -12.52 0.65 2741 -2743 4 -20.0 481.22 -12.32 0.65 2742 -2744 4 -20.47 484.1 -11.99 0.65 2743 -2745 4 -21.39 487.12 -11.61 0.65 2744 -2746 4 -22.53 489.47 -12.03 0.65 2745 -2747 4 -23.69 491.23 -12.66 0.65 2746 -2748 4 -25.08 494.72 -12.35 0.65 2747 -2749 4 -26.47 498.82 -11.82 0.65 2748 -2750 4 -27.38 501.55 -11.47 0.65 2749 -2751 4 -28.46 503.51 -11.17 0.65 2750 -2752 4 -29.07 504.49 -11.02 0.65 2751 -2753 4 -28.35 504.98 -11.42 0.54 2752 -2754 4 -27.59 505.75 -11.41 0.54 2753 -2755 4 -26.52 506.52 -11.44 0.54 2754 -2756 4 -25.61 507.43 -11.43 0.54 2755 -2757 4 -25.62 508.66 -11.31 0.54 2756 -2758 4 -25.5 509.45 -11.63 0.54 2757 -2759 4 -24.78 510.86 -11.86 0.54 2758 -2760 4 -24.04 512.26 -12.01 0.54 2759 -2761 4 -22.72 514.91 -12.41 0.54 2760 -2762 4 -21.39 515.71 -12.76 0.54 2761 -2763 4 -20.04 517.11 -12.96 0.54 2762 -2764 4 -18.72 518.54 -13.41 0.54 2763 -2765 4 -17.36 519.63 -13.58 0.54 2764 -2766 4 -16.54 521.23 -14.33 0.54 2765 -2767 4 -15.85 523.9 -14.89 0.54 2766 -2768 4 -15.57 526.04 -14.86 0.54 2767 -2769 4 -14.71 528.24 -15.25 0.54 2768 -2770 4 -14.13 529.49 -15.49 0.54 2769 -2771 4 -11.55 531.19 -15.62 0.54 2770 -2772 4 -9.73 533.95 -15.53 0.54 2771 -2773 4 -8.89 536.13 -15.92 0.54 2772 -2774 4 -8.8 538.78 -16.35 0.54 2773 -2775 4 -7.45 543.52 -16.1 0.54 2774 -2776 4 -7.16 546.86 -15.79 0.54 2775 -2777 4 -6.71 550.38 -15.49 0.54 2776 -2778 4 -6.26 552.04 -15.37 0.54 2777 -2779 4 -6.58 554.78 -15.08 0.54 2778 -2780 4 -6.43 557.07 -14.86 0.54 2779 -2781 4 -5.68 559.05 -14.74 0.54 2780 -2782 4 -4.0 560.12 -14.79 0.54 2781 -2783 4 -3.71 562.26 -14.61 0.54 2782 -2784 4 -3.24 565.75 -14.08 0.54 2783 -2785 4 -3.1 568.93 -13.79 0.54 2784 -2786 4 -2.49 570.47 -13.69 0.54 2785 -2787 4 -2.65 573.04 -13.35 0.54 2786 -2788 4 -3.35 576.46 -12.2 0.54 2787 -2789 4 -3.06 579.81 -11.9 0.54 2788 -2790 4 -1.85 581.94 -11.8 0.54 2789 -2791 4 -0.34 585.61 -11.58 0.54 2790 -2792 4 1.06 590.57 -10.55 0.54 2791 -2793 4 1.36 592.1 -10.43 0.54 2792 -2794 4 2.42 593.18 -10.43 0.54 2793 -2795 4 3.33 594.09 -10.42 0.54 2794 -2796 4 4.09 596.99 -10.21 0.54 2795 -2797 4 5.18 601.67 -9.4 0.54 2796 -2798 4 6.39 605.03 -9.1 0.54 2797 -2799 4 8.17 608.71 -7.63 0.54 2798 -2800 4 8.66 611.57 -6.94 0.54 2799 -2801 4 8.85 612.9 -6.37 0.54 2800 -2802 4 8.73 614.22 -5.85 0.54 2801 -2803 4 8.63 615.53 -5.1 0.54 2802 -2804 4 8.21 617.15 -4.3 0.54 2803 -2805 4 7.77 618.49 -3.91 0.54 2804 -2806 4 -29.22 505.49 -10.91 0.65 2752 -2807 4 -30.38 510.28 -11.25 0.65 2806 -2808 4 -30.54 512.56 -11.01 0.65 2807 -2809 4 -31.88 517.53 -11.53 0.65 2808 -2810 4 -32.81 520.25 -11.18 0.65 2809 -2811 4 -34.59 524.5 -10.76 0.65 2810 -2812 4 -35.11 527.47 -11.17 0.65 2811 -2813 4 -36.54 531.0 -11.15 0.65 2812 -2814 4 -37.46 534.04 -12.51 0.65 2813 -2815 4 -38.11 536.8 -12.49 0.65 2814 -2816 4 -39.15 539.05 -13.45 0.65 2815 -2817 4 -39.8 541.51 -13.53 0.65 2816 -2818 4 -41.08 544.31 -13.82 0.65 2817 -2819 4 -43.01 547.42 -14.25 0.65 2818 -2820 4 -43.05 550.19 -14.34 0.65 2819 -2821 4 -43.57 552.83 -14.65 0.65 2820 -2822 4 -44.35 554.81 -14.47 0.65 2821 -2823 4 -45.33 556.4 -14.97 0.65 2822 -2824 4 -45.18 558.68 -14.83 0.65 2823 -2825 4 -45.56 560.87 -15.27 0.65 2824 -2826 4 -46.54 563.05 -15.64 0.65 2825 -2827 4 -47.8 564.91 -15.72 0.65 2826 -2828 4 -48.62 566.93 -15.99 0.65 2827 -2829 4 -49.69 569.52 -15.7 0.65 2828 -2830 4 -51.23 572.23 -15.3 0.65 2829 -2831 4 -52.47 575.28 -15.03 0.65 2830 -2832 4 -52.71 577.04 -15.75 0.65 2831 -2833 4 -52.46 581.04 -15.91 0.65 2832 -2834 4 -52.79 585.91 -15.41 0.65 2833 -2835 4 -53.43 588.98 -15.36 0.65 2834 -2836 4 -54.13 591.48 -15.95 0.65 2835 -2837 4 -54.63 593.8 -16.06 0.65 2836 -2838 4 -55.34 595.72 -16.87 0.65 2837 -2839 4 -56.04 597.02 -17.65 0.65 2838 -2840 4 -56.59 599.4 -18.27 0.65 2839 -2841 4 -58.6 603.8 -17.89 0.65 2840 -2842 4 -59.74 607.65 -17.79 0.65 2841 -2843 4 -61.44 612.95 -17.11 0.65 2842 -2844 4 -62.51 614.61 -16.85 0.65 2843 -2845 4 -64.65 617.03 -16.41 0.65 2844 -2846 4 -66.74 620.92 -16.99 0.65 2845 -2847 4 -68.28 626.39 -16.31 0.65 2846 -2848 4 -69.9 630.41 -16.74 0.65 2847 -2849 4 -70.57 634.1 -16.78 0.65 2848 -2850 4 -72.15 636.28 -17.02 0.65 2849 -2851 4 -74.14 639.76 -16.5 0.65 2850 -2852 4 -76.29 642.78 -16.08 0.65 2851 -2853 4 -80.28 645.82 -15.8 0.65 2852 -2854 4 -83.81 648.7 -15.27 0.65 2853 -2855 4 -86.4 652.46 -14.66 0.65 2854 -2856 4 -86.7 653.63 -16.33 0.65 2855 -2857 4 -88.69 656.8 -15.83 0.65 2856 -2858 4 -90.16 660.37 -16.26 0.65 2857 -2859 4 -90.83 664.69 -16.31 0.65 2858 -2860 4 -92.21 668.77 -15.78 0.65 2859 -2861 4 -92.89 672.19 -16.15 0.65 2860 -2862 4 -94.32 674.81 -16.28 0.65 2861 -2863 4 -95.39 676.78 -15.99 0.65 2862 -2864 4 -96.13 678.12 -17.23 0.65 2863 -2865 4 -97.23 680.42 -17.13 0.65 2864 -2866 4 -98.4 681.58 -18.04 0.65 2865 -2867 4 -99.66 684.65 -18.01 0.65 2866 -2868 4 -100.65 686.24 -18.59 0.65 2867 -2869 4 -101.65 687.22 -19.15 0.65 2868 -2870 4 -101.87 688.35 -19.78 0.65 2869 -2871 4 -102.17 690.47 -19.47 0.65 2870 -2872 4 -102.02 693.06 -19.23 0.65 2871 -2873 4 -102.79 694.41 -19.03 0.65 2872 -2874 4 -103.4 696.84 -18.74 0.65 2873 -2875 4 -103.41 699.89 -18.43 0.65 2874 -2876 4 -103.28 701.26 -18.4 0.65 2875 -2877 4 -102.84 703.86 -18.25 0.65 2876 -2878 4 -102.62 706.68 -18.84 0.65 2877 -2879 4 -102.17 708.97 -18.65 0.65 2878 -2880 4 -101.57 712.62 -18.36 0.65 2879 -2881 4 -101.12 716.13 -18.05 0.65 2880 -2882 4 -101.59 719.31 -17.7 0.65 2881 -2883 4 -101.45 723.13 -17.34 0.65 2882 -2884 4 -100.55 727.08 -17.04 0.65 2883 -2885 4 -99.54 730.7 -16.84 0.65 2884 -2886 4 -99.0 736.53 -16.86 0.65 2885 -2887 4 -98.71 738.97 -16.65 0.65 2886 -2888 4 -97.84 739.93 -17.09 0.65 2887 -2889 4 -96.18 741.32 -17.26 0.65 2888 -2890 4 -94.52 743.93 -17.16 0.65 2889 -2891 4 -93.56 748.14 -17.82 0.65 2890 -2892 4 -93.31 750.02 -18.19 0.65 2891 -2893 4 -92.56 752.01 -18.14 0.65 2892 -2894 4 -91.61 753.82 -19.26 0.65 2893 -2895 4 -90.7 754.74 -19.33 0.65 2894 -2896 4 -103.71 688.65 -19.73 0.65 2869 -2897 4 -105.4 690.34 -19.64 0.65 2896 -2898 4 -107.22 692.14 -20.81 0.65 2897 -2899 4 -108.98 692.97 -21.48 0.65 2898 -2900 4 -110.42 694.08 -21.92 0.65 2899 -2901 4 -112.79 695.52 -22.47 0.65 2900 -2902 4 -114.23 696.65 -22.99 0.65 2901 -2903 4 -115.02 697.43 -23.2 0.65 2902 -2904 4 -116.57 700.18 -23.02 0.65 2903 -2905 4 -117.92 701.51 -24.12 0.65 2904 -2906 4 -118.68 703.48 -23.87 0.65 2905 -2907 4 -119.14 706.06 -23.57 0.65 2906 -2908 4 -118.3 710.09 -23.85 0.65 2907 -2909 4 -117.2 712.04 -24.91 0.65 2908 -2910 4 -116.16 715.54 -24.73 0.65 2909 -2911 4 -115.67 719.32 -25.62 0.65 2910 -2912 4 -115.32 721.72 -26.63 0.65 2911 -2913 4 -114.96 723.78 -27.29 0.65 2912 -2914 4 -114.38 725.05 -27.67 0.65 2913 -2915 4 -113.51 726.6 -27.98 0.65 2914 -2916 4 -113.22 728.44 -27.91 0.65 2915 -2917 4 -112.84 730.5 -28.49 0.65 2916 -2918 4 -27.98 401.37 6.92 0.65 2538 -2919 4 -29.04 402.74 7.15 0.65 2918 -2920 4 -31.79 405.45 7.68 0.65 2919 -2921 4 -34.06 407.7 6.67 0.65 2920 -2922 4 -35.9 409.5 7.01 0.65 2921 -2923 4 -38.35 411.92 7.41 0.65 2922 -2924 4 -41.44 414.68 7.43 0.65 2923 -2925 4 -46.14 419.63 7.14 0.65 2924 -2926 4 -48.43 422.49 7.62 0.65 2925 -2927 4 -48.54 425.34 6.78 0.65 2926 -2928 4 -48.64 428.77 6.22 0.65 2927 -2929 4 -48.07 430.64 5.89 0.65 2928 -2930 4 -47.63 433.53 6.06 0.54 2929 -2931 4 -47.99 435.73 5.77 0.54 2930 -2932 4 -48.6 437.55 4.35 0.54 2931 -2933 4 -49.3 438.85 3.63 0.54 2932 -2934 4 -49.29 439.74 5.46 0.54 2933 -2935 4 -50.1 440.54 5.16 0.54 2934 -2936 4 -50.96 441.39 4.26 0.54 2935 -2937 4 -51.52 442.86 3.39 0.54 2936 -2938 4 -52.49 444.74 3.07 0.54 2937 -2939 4 -53.85 447.31 1.86 0.54 2938 -2940 4 -54.82 448.87 1.56 0.54 2939 -2941 4 -54.78 450.35 0.58 0.54 2940 -2942 4 -55.02 452.7 0.0 0.54 2941 -2943 4 -55.12 454.94 -0.91 0.54 2942 -2944 4 -55.78 456.2 -1.17 0.54 2943 -2945 4 -57.93 457.42 -1.09 0.54 2944 -2946 4 -60.72 460.18 -1.02 0.54 2945 -2947 4 -61.87 463.13 -1.44 0.54 2946 -2948 4 -62.44 464.91 -2.35 0.54 2947 -2949 4 -62.81 466.19 -2.88 0.54 2948 -2950 4 -62.67 466.98 -3.04 0.54 2949 -2951 4 -5.99 292.26 22.29 0.865 2088 -2952 4 -5.25 294.24 22.42 0.865 2951 -2953 4 -4.94 296.38 22.6 0.865 2952 -2954 4 -3.89 299.58 22.82 0.865 2953 -2955 4 -1.99 302.56 22.11 0.865 2954 -2956 4 -0.94 304.26 22.18 0.865 2955 -2957 4 -0.79 306.85 22.41 0.865 2956 -2958 4 -1.4 310.18 22.8 0.865 2957 -2959 4 -2.07 313.26 24.29 0.865 2958 -2960 4 -1.92 315.84 24.61 0.865 2959 -2961 4 -2.08 318.11 24.91 0.865 2960 -2962 4 -2.39 321.15 25.24 0.865 2961 -2963 4 -3.31 324.17 25.7 0.865 2962 -2964 4 -4.07 326.74 26.09 0.65 2963 -2965 4 -6.04 328.69 26.61 0.65 2964 -2966 4 -7.57 332.02 27.16 0.65 2965 -2967 4 -8.07 332.51 28.39 0.65 2966 -2968 4 -9.45 333.87 28.64 0.65 2967 -2969 4 -11.59 335.97 29.04 0.65 2968 -2970 4 -12.81 339.01 29.46 0.65 2969 -2971 4 -14.35 342.33 29.92 0.65 2970 -2972 4 -16.34 344.9 30.36 0.65 2971 -2973 4 -18.01 346.25 30.64 0.65 2972 -2974 4 -19.26 348.09 32.3 0.65 2973 -2975 4 -19.83 349.85 33.05 0.65 2974 -2976 4 -20.38 351.0 33.9 0.65 2975 -2977 4 -21.41 352.01 34.62 0.65 2976 -2978 4 -21.71 352.9 34.81 0.65 2977 -2979 4 -21.97 353.78 35.37 0.65 2978 -2980 4 -21.82 356.05 35.65 0.65 2979 -2981 4 -21.83 358.78 35.92 0.65 2980 -2982 4 -21.29 360.38 36.93 0.65 2981 -2983 4 -20.75 362.49 38.54 0.65 2982 -2984 4 -19.8 363.97 39.11 0.65 2983 -2985 4 -19.08 364.47 40.23 0.65 2984 -2986 4 -18.66 364.64 41.56 0.65 2985 -2987 4 -18.04 365.84 41.93 0.65 2986 -2988 4 -17.67 365.79 42.5 0.65 2987 -2989 4 -17.2 365.91 44.37 0.65 2988 -2990 4 -6.61 91.18 9.77 0.435 1189 -2991 4 -7.98 91.62 9.94 0.435 2990 -2992 4 -8.7 91.42 10.44 0.435 2991 -2993 4 -8.69 91.11 10.56 0.65 2992 -2994 4 -8.95 90.75 11.08 0.65 2993 -2995 4 -8.89 90.09 11.62 0.65 2994 -2996 4 -9.16 89.43 11.96 0.65 2995 -2997 4 -9.56 88.31 12.41 0.65 2996 -2998 4 -9.55 87.99 12.53 0.65 2997 -2999 4 -9.83 87.06 12.69 0.65 2998 -3000 4 -9.81 86.44 12.78 0.65 2999 -3001 4 -9.77 86.09 13.2 0.65 3000 -3002 4 -9.87 85.27 13.65 0.65 3001 -3003 4 -9.68 84.79 13.89 0.65 3002 -3004 4 -9.21 84.32 13.95 0.65 3003 -3005 4 -8.85 83.96 14.57 0.65 3004 -3006 4 -8.62 83.72 15.35 0.65 3005 -3007 4 -8.21 83.31 16.42 0.65 3006 -3008 4 -7.9 82.7 16.39 0.65 3007 -3009 4 -7.85 82.04 16.93 0.65 3008 -3010 4 -7.79 81.68 17.42 0.65 3009 -3011 4 -7.91 80.57 17.78 0.435 3010 -3012 4 -7.99 80.05 18.49 0.435 3011 -3013 4 -7.97 79.73 18.53 0.435 3012 -3014 4 -8.26 79.11 18.65 0.435 3013 -3015 4 -8.4 78.63 18.84 0.435 3014 -3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p b/examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p deleted file mode 100644 index 4395d62..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/cells/ca1_minimal.p +++ /dev/null @@ -1,58 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - - -dend_3 none 0 220 0 3.84 -dend_5 . 0 220 0 3.84 -dend_6 . 0 220 0 3.84 -dend_8 . 0 110 0 3.84 - -soma dend_8 0 125 0 8.46 - - -apical_10 soma 0 120 0 4.0 -apical_11 apical_10 0 120 0 3 -apical_12 apical_11 0 120 0 3 -apical_13 apical_12 0 120 0 2.6 -apical_14 apical_13 0 120 0 2.6 -apical_15 apical_14 0 120 0 2.6 -apical_16 apical_15 0 120 0 2.6 -apical_17 apical_16 0 120 0 2.6 -apical_18 apical_17 0 120 0 2.6 -apical_19 apical_18 0 120 0 2.6 - -apical_11_1 apical_10 -60 60 0 2 -apical_11_2 apical_11_1 -60 60 0 1.8 -apical_11_3 apical_11_2 0 80 0 1.5 -apical_11_4 apical_11_3 0 80 0 1.5 - -apical_13_1 apical_12 40 40 0 1.0 -apical_13_2 apical_13_1 40 40 0 1.0 - -apical_14_1 apical_13_2 0 10 0 1.0 -apical_14_2 . 0 10 0 1.0 -apical_14_3 . 0 10 0 1.0 -apical_14_4 . 0 10 0 1.0 -apical_14_5 . 0 10 0 1.0 -apical_14_6 . 0 10 0 1.0 -apical_14_7 . 0 10 0 1.0 -apical_14_8 . 0 10 0 1.0 -apical_14_9 . 0 10 0 1.0 -apical_14_10 . 0 10 0 1.0 -apical_14_11 . 0 10 0 1.0 -apical_14_12 . 0 10 0 1.0 -apical_14_13 . 0 10 0 1.0 -apical_15_1 . 0 30 0 1.0 -apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc b/examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc deleted file mode 100644 index 554dbe2..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/cells/h10.CNG.swc +++ /dev/null @@ -1,226 +0,0 @@ -# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. -# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. -# -#---------------------------------------------------------------------- -# This file was obtained using ban2swc.pl on file h10.txt -# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 -#---------------------------------------------------------------------- -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 0. 23. 0. 3.35 -1 - 2 1 0. 18. 0. 2.5 1 - 3 1 0. 0. 0. 1.058 2 - 4 3 -4.157 -2.778 0. 0.6 3 - 5 3 -5.925 -3.510 -4.62 0.55 4 - 6 3 -15.47 -7.464 -29.560 0.4 5 - 7 3 -23.89 -9.139 -72.72 0.4 6 - 8 3 -24.39 -13.43 -83.51 0.350 6 - 9 3 -9.814 -5.121 -14.780 0.5 5 - 10 3 -15.81 -6.313 -23.93 0.5 9 - 11 3 -65.94 -16.29 -100.4 0.4 10 - 12 3 -54.5 -14.01 -82.960 0.4 10 - 13 3 -17.2 -10.06 -28.09 0.4 9 - 14 3 -78.64 -51.11 -138.70 0.4 13 - 15 3 -41.69 -26.42 -72.15 0.350 13 - 16 3 -10.11 -8.731 -20.330 0.45 4 - 17 3 -14.44 -13.06 -35.11 0.350 16 - 18 3 -26.61 -21.19 -108.7 0.3 17 - 19 3 -24.2 -27.66 -123.4 0.3 17 - 20 3 -32.3 -30.92 -96.08 0.350 16 - 21 3 -45.7 -39.87 -120.2 0.3 20 - 22 3 -56.99 -67.88 -162.60 0.350 20 - 23 3 -8.889 -13.3 0. 0.65 3 - 24 3 -11.39 -15.8 -3.54 0.55 23 - 25 3 -19.39 -23.8 -14.85 0.5 24 - 26 3 -21.7 -25.35 -19.01 0.45 25 - 27 3 -33.25 -33.06 -39.79 0.4 26 - 28 3 -64.36 -45.95 -121.10 0.350 27 - 29 3 -53.54 -53.36 -109.10 0.350 27 - 30 3 -26.32 -28.43 -27.32 0.4 26 - 31 3 -68.78 -46.02 -73.28 0.3 30 - 32 3 -71.820 -73.93 -91.67 0.350 30 - 33 3 -59.82 -84.320 -123.80 0.350 25 - 34 3 -84.52 -121.30 -190.3 0.25 33 - 35 3 -34.39 -38.80 -36.06 0.350 24 - 36 3 -96.61 -80.38 -86.06 0.3 35 - 37 3 -93.98 -128. -107.7 0.3 35 - 38 3 -15.65 -29.64 -17.68 0.5 23 - 39 3 -17.01 -32.9 -21.21 0.5 38 - 40 3 -21.95 -40.29 -34.52 0.4 39 - 41 3 -50.03 -82.33 -110.2 0.3 40 - 42 3 -49.730 -81.87 -109.30 0.350 40 - 43 3 -22.75 -61.78 -65.28 0.3 39 - 44 3 -37.30 -81.9 -74.25 0.3 38 - 45 3 -2.146 -10.790 0. 0.75 3 - 46 3 -24.77 -65.42 -24.490 0.350 45 - 47 3 -54.47 -137.1 -56.64 0.350 46 - 48 3 -55.18 -138.8 -57.4 0.350 46 - 49 3 -2.146 -20.95 -4.21 0.6 45 - 50 3 -2.146 -35.730 -10.33 0.45 49 - 51 3 -22.75 -139.3 -80.89 0.3 50 - 52 3 29. -192.3 -117. 0.350 50 - 53 3 -2.146 -25.57 -6.12 0.55 49 - 54 3 -3.103 -30.38 -7.10 0.5 53 - 55 3 -49.410 -263.2 -54.31 0.350 54 - 56 3 -22.05 -125.60 -26.41 0.3 54 - 57 3 16.990 -121.80 -25.63 0.3 53 - 58 3 2.146 -10.790 0. 0.65 3 - 59 3 2.146 -20.79 0. 0.4 58 - 60 3 2.146 -235.8 0. 0.350 59 - 61 3 2.146 -250.8 0. 0.25 60 - 62 3 4.059 -15.41 0. 0.4 58 - 63 3 8.269 -25.57 0. 0.350 62 - 64 3 35.63 -163.10 -27.90 0.4 63 - 65 3 45.32 -81.02 -13.27 0.3 63 - 66 3 20.13 -54.21 0. 0.350 62 - 67 3 35.25 -130.20 15.41 0.3 66 - 68 3 78.98 -142.3 21.07 0.350 66 - 69 3 8.889 -13.3 0. 0.6 3 - 70 3 16.67 -32.08 8.42 0.5 69 - 71 3 24.45 -50.86 16.84 0.45 70 - 72 3 49.32 -175.9 42.2 0.350 71 - 73 3 84.38 -140.6 38.30 0.350 71 - 74 3 42.45 -141.4 78.51 0.4 70 - 75 3 48.94 -174. 100.7 0.3 74 - 76 3 16.080 -20.490 4.21 0.4 69 - 77 3 99.04 -103.5 52.81 0.3 76 - 78 3 41.550 -45.97 19.13 0.3 76 - 79 3 63.71 -109.60 64.06 0.3 78 - 80 3 75.26 -126.9 77.95 0.2 79 - 81 3 18.29 -12.22 0. 0.6 3 - 82 3 20.79 -14.72 3.54 0.55 81 - 83 3 26.29 -20.22 11.31 0.5 82 - 84 3 101.10 -132.20 101.30 0.350 83 - 85 3 97.5 -67.8 68.54 0.3 83 - 86 3 47.29 -41.22 41.01 0.25 82 - 87 3 21.56 -13.58 3.54 0.5 81 - 88 3 28.09 -16.28 10.61 0.45 87 - 89 3 122.10 -79.11 86.16 0.3 88 - 90 3 85.99 -27.8 50.050 0.3 88 - 91 3 43.12 -22.51 26.87 0.4 87 - 92 3 75.45 -44.11 85.070 0.350 91 - 93 3 97.61 -33.34 110. 0.350 91 - 94 4 0. 41. 0. 2.550 1 - 95 4 0. 127. 0. 0.3 94 - 96 4 5.932 70.820 -6.05 2.25 94 - 97 4 18.37 133.3 -18.73 1.25 96 - 98 4 26.63 153.3 -23.02 0.6 97 - 99 4 56.65 225.8 -38.63 0.3 98 - 100 4 29.63 160.5 -24.580 0.6 98 - 101 4 91.850 253.70 -24.580 0.350 100 - 102 4 63.97 333.1 -24.580 0.350 100 - 103 4 18.37 142.20 -20.48 1.25 97 - 104 4 18.37 145.1 -21.07 1.25 103 - 105 4 28.28 195. -42.12 0.45 104 - 106 4 33.69 222.10 -53.6 0.350 105 - 107 4 39.1 249.3 -65.08 0.25 106 - 108 4 17.47 149.6 -22.98 1.25 104 - 109 4 4.851 213.10 -49.77 0.5 108 - 110 4 -10.07 288.1 -100.9 0.350 109 - 111 4 15.85 157.8 -26.43 1.25 108 - 112 4 15.85 182.3 -31.3 0.5 111 - 113 4 15.85 235.3 -41.84 0.350 112 - 114 4 15.85 272.2 -57.15 0.3 113 - 115 4 15.85 195.10 -33.84 0.350 112 - 116 4 30.09 266.7 -33.84 0.3 115 - 117 4 0.2380 273.5 -33.84 0.3 115 - 118 4 11.72 167.8 -28.57 1.25 111 - 119 4 3.46 187.70 -32.87 1.25 118 - 120 4 -0.506 207.60 -41.28 1.25 119 - 121 4 -3.39 222.10 -47.410 1.25 120 - 122 4 -3.39 223.8 -48.52 1.25 121 - 123 4 -3.39 247.10 -64.070 0.45 122 - 124 4 1.439 271.40 -88.820 0.3 123 - 125 4 -16.080 310.90 -129.1 0.350 123 - 126 4 -3.39 248.70 -65.19 1.25 122 - 127 4 -3.209 249.70 -65.570 1.25 126 - 128 4 1.297 272.3 -75.14 0.5 127 - 129 4 12. 326.1 -111.80 0.350 128 - 130 4 -0.506 263.2 -71.31 1.25 127 - 131 4 0.2450 265.1 -71.7 0.6 130 - 132 4 3.623 273.2 -73.45 0.55 131 - 133 4 46.230 337. -105.2 0.3 132 - 134 4 22.55 368.40 -113.60 0.350 132 - 135 4 19.01 310.40 -81.45 0.45 131 - 136 4 42.74 367.6 -81.45 0.350 135 - 137 4 -0.506 280.90 -74.820 1.25 130 - 138 4 -0.506 284.8 -75.60 0.850 137 - 139 4 14.450 360. -107.4 0.4 138 - 140 4 18.06 378.1 -115. 0.3 139 - 141 4 -14.02 352.8 -104.30 0.850 138 - 142 4 -20.330 384.5 -117.7 0.70 141 - 143 4 -20.330 441.8 -141.4 0.70 142 - 144 4 -20.330 494.40 -163.20 0.45 143 - 145 4 -20.330 544.30 -196.60 0.350 144 - 146 4 -20.330 582.6 -222.10 0.3 145 - 147 4 -20.330 622.5 -248.8 0.3 145 - 148 4 -20.330 462.1 -149.8 0.6 143 - 149 4 -7.321 527.5 -163.10 0.45 148 - 150 4 -1.389 557.30 -169.20 0.350 149 - 151 4 21.51 612.6 -181.10 0.3 150 - 152 4 -1.389 630.90 -183.8 0.25 150 - 153 4 -36.6 543.9 -166.4 0.6 148 - 154 4 -46.36 592.9 -176.4 0.350 153 - 155 4 -46.36 669.6 -208.10 0.25 154 - 156 4 -74.99 662.1 -207.4 0.25 154 - 157 4 -44.44 583.30 -174.4 0.5 153 - 158 4 -44.44 665.30 -174.4 0.350 157 - 159 4 -44.44 705.30 -174.4 0.25 158 - 160 4 -87.3 686.80 -174.4 0.350 157 - 161 4 -121.7 769.90 -174.4 0.25 160 - 162 4 -32.71 414.40 -131.1 0.45 142 - 163 4 -85.74 542.4 -188.5 0.350 162 - 164 4 -120. 625.2 -225.60 0.3 163 - 165 4 -137.4 667. -244.4 0.25 164 - 166 4 -132.4 655.1 -239. 0.2 164 - 167 4 -0.506 290.7 -76.77 0.9 137 - 168 4 6.713 327. -76.77 0.8 167 - 169 4 8.664 336.8 -76.77 0.6 168 - 170 4 12.49 356. -80.67 0.5 169 - 171 4 21.48 401.3 -89.84 0.350 170 - 172 4 13.74 362.3 -76.77 0.5 168 - 173 4 23.12 385. -71.89 0.25 172 - 174 4 13.74 396.6 -69.94 0.350 172 - 175 4 -20.6 391.70 -76.77 0.350 167 - 176 4 -15.83 311.3 -91.59 0.4 126 - 177 4 -28.44 374.70 -118.4 0.3 176 - 178 4 -14.84 249.8 -67.41 0.45 121 - 179 4 -37.12 303.6 -106.30 0.350 178 - 180 4 -55.25 347.3 -138. 0.3 178 - 181 4 -3.209 221.20 -47.02 0.45 120 - 182 4 -3.209 356.6 -73.95 0.350 181 - 183 4 -31.36 289.2 -61.660 0.350 181 - 184 4 -11.94 210.70 -44.35 0.6 119 - 185 4 -36.06 246.9 -62.33 0.5 184 - 186 4 -67.18 322. -96.01 0.3 185 - 187 4 -81.14 291.90 -88.74 0.3 185 - 188 4 1.208 193.10 -34.04 0.4 118 - 189 4 -21.42 306.90 -34.04 0.3 188 - 190 4 -77.13 310.40 -34.04 0.350 188 - 191 4 18.37 165.70 -25.17 0.5 103 - 192 4 25.78 203. -25.17 0.350 191 - 193 4 56.22 356. -25.17 0.3 192 - 194 4 50.36 326.6 -25.17 0.3 192 - 195 4 16.22 176.5 -25.17 0.350 191 - 196 4 -10.31 309.90 -25.17 0.350 195 - 197 4 2.957 243.20 -25.17 0.3 195 - 198 4 -2.105 51.58 -2.15 0.350 94 - 199 4 -20.09 142. -20.48 0.350 198 - 200 4 -3.061 56.39 -3.12 0.3 198 - 201 4 -3.061 76.39 -3.12 0.3 200 - 202 4 -3.061 142.4 -3.12 0.3 201 - 203 4 -3.061 167.4 -3.12 0.3 201 - 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml deleted file mode 100644 index 2a3815b..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/CA1.morph.xml +++ /dev/null @@ -1,12673 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_5 - - - - - - soma_group - - - - soma_group - - - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_7 - - - - - - axon_group - soma_group - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - ModelViewParmSubset_2 - - - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - all - - - - - - - - dendrite_group - - - - - - - - - - dendrite_group - - - - - - - - - - dendrite_group - - - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml deleted file mode 100644 index 645161c..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/Ca.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - - - Voltage-gated Ca2+ channel, based on Traub - - - - Traub, R. - - - Upi Bhalla - NCBS - bhalla - at - ncbs.res.in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml deleted file mode 100644 index fe10a98..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/CaConc.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - Ca pool - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - - Upi Bhalla - - - - An expontially decaying pool of calcium - - - - Upi Bhalla - National Centre for Biological Sciences, Bangalore, India. - bhalla - at - ncbs.res.in - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml deleted file mode 100644 index 58cc74e..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/DoubExpSyn.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - ChannelML file describing a single synaptic mechanism - - - - - - - Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as - double exponential function of time. Mappings exist for NEURON and GENESIS. - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Receptor properties - http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp - - - - - - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml deleted file mode 100644 index d2f3f34..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/Generated.net.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 - -Cell Group: CA1_CG contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml deleted file mode 100644 index c1a7d7c..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/Glu.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Glutamate receptor synchan, 2 ms tau. - - - - Simple double exponential waveform glu synapse - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml deleted file mode 100644 index c1c91b4..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/HChannel.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml deleted file mode 100644 index ce7e3dd..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/NMDA.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - NMDA receptor synchan, 20 ms tau. - - - - Simple double exponential waveform NMDA synapse - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml deleted file mode 100644 index a882baa..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/hd.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml deleted file mode 100644 index bb7c5af..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/kad.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml deleted file mode 100644 index 58fdea0..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/kap.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, - modified to account for Dax A Current --- M.Migliore Jun 1997, - modified to be used with cvode M.Migliore 2001 - - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml deleted file mode 100644 index 180c563..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/kdr.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, - modified to account for Dax et al., M.Migliore 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml deleted file mode 100644 index 94e9713..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/na3.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! - - Padraig Gleeson - - - - Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml deleted file mode 100644 index 1225d6a..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/nax.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - - - diff --git a/examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml b/examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml deleted file mode 100644 index 9abffeb..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chans/pas.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g b/examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g deleted file mode 100644 index e120a6a..0000000 --- a/examples/paper-2015/Fig5_CellMultiscale/chem/psd53.g +++ /dev/null @@ -1,477 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Fri Jun 5 09:12:59 2015 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.0001 -CONTROLDT = 1 -PLOTDT = 0.2 -MAXTIME = 200 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-19 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ - -4 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ - -17 0 -simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ - -13 0 -simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ - 0 -simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ - 0 -simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ - -18 0 -simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump text /kinetics/geometry[7]/notes 0 "" -call /kinetics/geometry[7]/notes LOAD \ -"" -simundump text /kinetics/geometry[8]/notes 0 "" -call /kinetics/geometry[8]/notes LOAD \ -"" -simundump text /kinetics/geometry[9]/notes 0 "" -call /kinetics/geometry[9]/notes LOAD \ -"" -simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 -simundump text /kinetics/exocytosis/notes 0 "" -call /kinetics/exocytosis/notes LOAD \ -"" -simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 -simundump text /kinetics/endocytosis/notes 0 "" -call /kinetics/endocytosis/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/Rp/notes 0 "" -call /kinetics/PSD/Rp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ - 0 -4 -2 0 -simundump text /kinetics/PSD/P/notes 0 "" -call /kinetics/PSD/P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -6 -1 0 -simundump text /kinetics/PSD/P/P1/notes 0 "" -call /kinetics/PSD/P/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -2 -1 0 -simundump text /kinetics/PSD/P/P2/notes 0 "" -call /kinetics/PSD/P/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ - 49 0 -4 4 0 -simundump text /kinetics/PSD/KK/notes 0 "" -call /kinetics/PSD/KK/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -6 3 0 -simundump text /kinetics/PSD/KK/KK1/notes 0 "" -call /kinetics/PSD/KK/KK1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -2 3 0 -simundump text /kinetics/PSD/KK/KK2/notes 0 "" -call /kinetics/PSD/KK/KK2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - 28 0 0 1 0 -simundump text /kinetics/PSD/Rpp/notes 0 "" -call /kinetics/PSD/Rpp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R/notes 0 "" -call /kinetics/PSD/R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[4] blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry[7] blue 0 -12 5 0 -simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" -call /kinetics/PSD/psd_inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 -simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" -call /kinetics/PSD/psd_activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ - blue 0 -4 -4 0 -simundump text /kinetics/PSD/Ca.P/notes 0 "" -call /kinetics/PSD/Ca.P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -2 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -6 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ - /kinetics/geometry[8] 60 black -12 9 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 -simundump text /kinetics/PSD/Ca_reac/notes 0 "" -call /kinetics/PSD/Ca_reac/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry[5] 53 0 -15 2 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/Bulk/notes 0 "" -call /kinetics/Bulk/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry 29 yellow 2 -11 0 -simundump text /kinetics/Bulk/iRpp/notes 0 "" -call /kinetics/Bulk/iRpp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry blue yellow -2 -11 0 -simundump text /kinetics/Bulk/iRp/notes 0 "" -call /kinetics/Bulk/iRp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ - /kinetics/geometry 0 yellow -6 -11 0 -simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ - /kinetics/geometry 50 yellow -2 -8 0 -simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" -4 -9 0 -simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" -call /kinetics/Bulk/iKK/iKK1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" 0 -9 0 -simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" -call /kinetics/Bulk/iKK/iKK2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ - /kinetics/geometry 62 yellow -2 -14 0 -simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" -4 -13 0 -simundump text /kinetics/Bulk/iP/iP1/notes 0 "" -call /kinetics/Bulk/iP/iP1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" 0 -13 0 -simundump text /kinetics/Bulk/iP/iP2/notes 0 "" -call /kinetics/Bulk/iP/iP2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ - 43 yellow -3 -5 0 -simundump text /kinetics/Bulk/PKA/notes 0 "" -call /kinetics/Bulk/PKA/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" -4 -7 0 -simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" -call /kinetics/Bulk/PKA/PKA1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" 0 -7 0 -simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" -call /kinetics/Bulk/PKA/PKA2/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ - red 43 "" 1 -5 0 -simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" -call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ - -10 0 -simundump text /kinetics/Bulk/activate_PKA/notes 0 "" -call /kinetics/Bulk/activate_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ - /kinetics/geometry[2] 51 yellow -12 -6 0 -simundump text /kinetics/Bulk/inact_PKA/notes 0 "" -call /kinetics/Bulk/inact_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ - /kinetics/geometry[6] blue yellow -13 -18 0 -simundump text /kinetics/Bulk/inact_CaN/notes 0 "" -call /kinetics/Bulk/inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ - -16 0 -simundump text /kinetics/Bulk/activate_CaN/notes 0 "" -call /kinetics/Bulk/activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ - /kinetics/geometry[2] 50 yellow -15 -13 0 -simundump text /kinetics/Bulk/Ca/notes 0 "" -call /kinetics/Bulk/Ca/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[9] 60 black -12 -28 0 -simundump text /kinetics/Ca_dend_input/notes 0 "" -call /kinetics/Ca_dend_input/notes LOAD \ -"" -simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 -simundump text /kinetics/dend_Ca_reac/notes 0 "" -call /kinetics/dend_Ca_reac/notes LOAD \ -"" -simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ - 1 black -19 -25 0 -simundump text /kinetics/Ca/notes 0 "" -call /kinetics/Ca/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 -simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 -simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 41 0 0 1 -simundump xplot /graphs/conc1/PKA.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 43 0 0 1 -simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 -simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 -simundump xcoredraw /edit/draw 0 -21 7 -30 11 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"26 Nov 2014. psd51.g: based on psd50.g which was" \ -"based on psd41_back_dend.g." \ -"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ -"10x while retaining Keq." \ -"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ -"psd. Will use diffusion instead." \ -"05 June 2015. psd53.g updated further to use the same name (Ca)" \ -"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ -"" -addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n -addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n -addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n -addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n -addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n -addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A -addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B -addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n -addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B -addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B -addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n -addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n -addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A -addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 -addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 -addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 -addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue -addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -enddump -// End of dump - -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -complete_loading diff --git a/examples/paper-2015/Fig6_NetMultiscale/Fig6A.py b/examples/paper-2015/Fig6_NetMultiscale/Fig6A.py deleted file mode 100644 index 88193db..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/Fig6A.py +++ /dev/null @@ -1,503 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -This LIF network with Ca plasticity is based on: -David Higgins, Michael Graupner, Nicolas Brunel - Memory Maintenance in Synapses with Calcium-Based - Plasticity in the Presence of Background Activity - PLOS Computational Biology, 2014. - -Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. -This variant has 2500 LIF neurons - -Upi Bhalla, Nov 2014: Appended single neuron model. -This script generates Panel A from Figure 6. It is a dummy for showing -the layout, and loads in about 20 seconds. -''' - -## import modules and functions to be used -import numpy as np -import matplotlib.pyplot as plt -import random -import time -import moose -from PyQt4 import Qt, QtCore, QtGui -from numpy import random as nprand -from moose.neuroml.NeuroML import NeuroML -import sys -sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) -import rdesigneur as rd -import moogli -cellname = "./cells_channels/CA1_nochans.morph.xml" -#cellname = "./ca1_minimal.p" -fname = "fig6bcde" - -############################################# -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations -moose.seed(100) # set seed for reproducibility of simulations - -############################################# -# All parameters as per: -# David Higgins, Michael Graupner, Nicolas Brunel -# Memory Maintenance in Synapses with Calcium-Based -# Plasticity in the Presence of Background Activity -# PLOS Computational Biology, 2014. -############################################# - -############################################# -# Neuron model -############################################# - -# equation: dv/dt = (1/taum)*(-(v-el)) + inp -# with spike when v>vt, reset to vr - -PI = 3.14159265358979 -useGssa = True -combineSegments = False - -el = -70e-3 #V # Resting potential -vt = -50e-3 #V # Spiking threshold -Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts -Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm -taum = Rm*Cm #s # Membrane time constant is 20 ms -vr = -60e-3 #V # Reset potential -Iinject = 10e-3/Rm # constant current injection into LIF neuron - # same as setting el=-70+15=-55 mV and inp=0 -noiseInj = True # inject noisy current into each cell: boolean -noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' - # SD*sqrt(taum) is used as noise current SD - -############################################# -# Network parameters: numbers -############################################# - -N = 2500 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -############################################# -# Simulation parameters -############################################# - -simtime = 30 #s # Simulation time -interTetInterval = 5.0 # sec -updateDt = 0.2 #s: time to update live display -dt = 1e-3 #s # time step - -############################################# -# Network parameters: synapses (not for ExcInhNetBase) -############################################# - -## With each presynaptic spike in exc / inh neuron, -## J / -g*J is added to post-synaptic Vm -- delta-fn synapse -## Since LIF neuron used below is derived from Compartment class, -## conductance-based synapses (SynChan class) can also be used. - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) - # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 - # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V -g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 -syndelay = dt # synaptic delay: -refrT = 0.0 # s # absolute refractory time - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -CaPlasticity = True # set it True or False to turn on/off plasticity -tauCa = 22.6936e-3 # s # Ca decay time scale -tauSyn = 346.3615 # s # synaptic plasticity time scale -## in vitro values in Higgins et al 2014, faster plasticity -CaPre = 0.56175 # mM - -CaPost = 1.2964 # mM -## in vivo values in Higgins et al 2014, slower plasticity -#CaPre = 0.33705 # mM -#CaPost = 0.74378 # mM -delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 331.909 # factor for depression term -gammaP = 725.085 # factor for potentiation term - -eqWeight = 0.5 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # but see eqn (22), noiseSD also appears - -bistable = True # if bistable is True, use bistable potential for weights -noisy = True # use noisy weight updates given by noiseSD -noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) -#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 - -############################################# -# Here we set up a single neuron to fit in this network -############################################# - -diffDt = 0.005 -chemDt = 0.005 -ePlotDt = 0.5e-3 -cPlotDt = 0.005 - -############################################# -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - cellProto = [ [cellname, 'elec'] ] - chanProto = [ - ['./cells_channels/hd.xml'], \ - ['./cells_channels/kap.xml'], \ - ['./cells_channels/kad.xml'], \ - ['./cells_channels/kdr.xml'], \ - ['./cells_channels/na3.xml'], \ - ['./cells_channels/nax.xml'], \ - ['./cells_channels/CaConc.xml'], \ - ['./cells_channels/Ca.xml'], \ - ['./cells_channels/NMDA.xml'], \ - ['./cells_channels/Glu.xml'], \ - ['./cells_channels/GABA.xml'] \ - ] - spineProto = [ \ - ['makeSpineProto()', 'spine' ] - ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - passiveDistrib = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ - "Em", "-58e-3", "initVm", "-65e-3" ], \ - [ ".", "#axon#", "RA", "0.5" ] \ - ] - chanDistrib = [ \ - ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ - ["kdr", "#", "Gbar", "100" ], \ - ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ - ["nax", "#axon#", "Gbar", "1250" ], \ - ["nax", "#soma#", "Gbar", "100" ], \ - ["kap", "#axon#,#soma#", "Gbar", "300" ], \ - ["kap", "#dend#,#apical#,#user#", "Gbar", \ - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ - ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ - ["kad", "#dend#,#apical#,#user#", "Gbar", \ - "300*H(p*1e6-100)*(1+p*1e4)" ], \ - ["Ca", "#soma#", "Gbar", "10e-3" ], \ - ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ - ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ - ] - spineDistrib = [ \ - ["spine", '#apical#,#dend#,#user#', "spineSpacing", "6.2e-6", \ - "spineSpacingDistrib", "1e-6", \ - "angle", "0", \ - "angleDistrib", str( 2*PI ), \ - "size", "1", \ - "sizeDistrib", "0.5" ] \ - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - passiveDistrib = passiveDistrib, \ - spineDistrib = spineDistrib, \ - chanDistrib = chanDistrib, \ - cellProto = cellProto, \ - spineProto = spineProto, \ - chanProto = chanProto, \ - ) - - return rdes - - -############################################# - -def makeDetailedNeuron(): - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - #bcs.addAllPlots() - - -############################################# -# Exc-Inh network base class without connections -############################################# - -class ExcInhNetBase: - """Simulates and plots LIF neurons (exc and inh separate). - Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 - """ - - def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ - refrT=refrT,Iinject=Iinject): - """ Constructor of the class """ - - self.N = N # Total number of neurons - self.fexc = fexc # Fraction of exc neurons - self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh - - self.el = el # Resting potential - self.vt = vt # Spiking threshold - self.taum = taum # Membrane time constant - self.vr = vr # Reset potential - self.refrT = refrT # Absolute refractory period - self.Rm = Rm # Membrane resistance - self.Cm = Cm # Membrane capacitance - self.Iinject = Iinject # constant input current - self.noiseInjSD = noiseInjSD # SD of injected noise - - self.simif = False # whether the simulation is complete - - self._setup_network() - - def __str__(self): - return "LIF network of %d neurons "\ - "having %d exc." % (self.N,self.NmaxExc) - - def _setup_network(self): - """Sets up the network (_init_network is enough)""" - self.network = moose.LIF( 'network', self.N ); - moose.le( '/network' ) - self.network.vec.Em = self.el - self.network.vec.thresh = self.vt - self.network.vec.refractoryPeriod = self.refrT - self.network.vec.Rm = self.Rm - self.network.vec.vReset = self.vr - self.network.vec.Cm = self.Cm - if not noiseInj: - self.network.vec.inject = self.Iinject - else: - ## inject a constant + noisy current - ## values are set in self.simulate() - self.noiseTables = moose.StimulusTable('noiseTables',self.N) - moose.connect( self.noiseTables, 'output', \ - self.network, 'setInject', 'OneToOne') - - def _init_network(self,v0=el): - """Initialises the network variables before simulation""" - self.network.vec.initVm = v0 - - def _init_plots(self): - ## make a few tables to store a few Vm-s - numVms = 10 - self.plots = moose.Table( '/plotVms', numVms ) - ## draw numVms out of N neurons - nrnIdxs = random.sample(range(self.N),numVms) - for i in range( numVms ): - moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ - self.plots.vec[i], 'input') - - ## make self.N tables to store spikes of all neurons - self.spikes = moose.Table( '/plotSpikes', self.N ) - moose.connect( self.network, 'spikeOut', \ - self.spikes, 'input', 'OneToOne' ) - - ## make 2 tables to store spikes of all exc and all inh neurons - self.spikesExc = moose.Table( '/plotSpikesAllExc' ) - for i in range(self.NmaxExc): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesExc, 'input' ) - self.spikesInh = moose.Table( '/plotSpikesAllInh' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesInh, 'input' ) - - def _plot(self, fig): - """ plots the spike raster for the simulated net""" - plt.figure(1) - - ax = plt.subplot(221) - cleanAx( ax, 'B' ) - plt.ylabel( 'Neuron #', fontsize = 16 ) - for i in range(0,self.NmaxExc): - if i==0: label = 'Exc. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - ax.plot(spikes,[i]*len(spikes),\ - 'b.',marker='.', markersize = 2, label=label) - for i in range(self.NmaxExc,self.N): - if i==self.NmaxExc: label = 'Inh. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - ax.plot(spikes,[i]*len(spikes),\ - 'r.',marker='.', markersize = 2, label=label) - -############################################# -# Exc-Inh network class with Ca plasticity based connections -# (inherits from ExcInhNetBase) -############################################# - -class ExcInhNet(ExcInhNetBase): - """ Recurrent network simulation """ - - def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): - """Overloads base (parent) class""" - self.J = J # exc connection weight - self.incC = incC # number of incoming connections per neuron - self.fC = fC # fraction of exc incoming connections - self.excC = int(fC*incC)# number of exc incoming connections - self.scaleI = scaleI # inh weight is scaleI*J - self.syndelay = syndelay# synaptic delay - - # call the parent class constructor - ExcInhNetBase.__init__(self,**kwargs) - - def __str__(self): - return "LIF network of %d neurons "\ - "of which %d are exc." % (self.N,self.NmaxExc) - - def _init_network(self,**args): - ExcInhNetBase._init_network(self,**args) - - def _init_plots(self): - ExcInhNetBase._init_plots(self) - - def _setup_network(self): - ## Set up the neurons without connections - ExcInhNetBase._setup_network(self) - - ## Now, add in the connections... - ## Each pre-synaptic spike cause Vm of post-neuron to rise by - ## synaptic weight in one time step i.e. delta-fn synapse. - ## Since LIF neuron is derived from Compartment class, - ## conductance-based synapses (SynChan class) can also be used. - - ## E to E synapses can be plastic - ## Two ways to do this: - ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, - ## which collects the activation from all presynaptic neurons, - ## but then a common Ca pool is used. - ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, - ## one for each pre-synaptic neuron, i.e. one per synapse, - ## then each synapse has a different Ca pool. - ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) - ## separate SynHandler per EE synapse, thus NmaxExc*excC - if CaPlasticity: - self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - else: - self.synsEE = moose.SimpleSynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - moose.useClock( 0, '/network/synsEE', 'process' ) - - ## I to E synapses are not plastic - self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) - ## all synapses to I neurons are not plastic - self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) - ## connect all SynHandlers to their respective neurons - - moose.useClock( 0, '/network/synsIE', 'process' ) - moose.useClock( 0, '/network/synsI', 'process' ) - -############################################# -# Make plots -############################################# - -def interlude( view ): - view.yaw( 0.005 ) - -def create_viewer(rdes): - # print "Creating 3D Viewer" - network = moogli.extensions.moose.read(path=rdes.elecid.path, - vertices=10) - # print "Read Network" - network.set("color", moogli.colors.LIGHT_BLUE) - network.groups["spine"].set("color", moogli.colors.ORANGE) - # for dendrite in dendrites.values(): - # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) - - [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in - network.groups["spine"].groups["head"].shapes.values()] - # print "Creating LIFS" - soma = network.shapes[rdes.soma.path] - - center = soma.get_center() - row_axis = moogli.geometry.X_AXIS - row_count = 50 - row_separation = soma.get_base_radius() * 5.0 - col_axis = moogli.geometry.Z_AXIS - col_count = 50 - col_separation = row_separation - radii = soma.get_base_radius() - colors = moogli.colors.GREEN - vertices = 20 - lifs = moogli.shapes.Sphere.grid("LIF", - center, - row_axis, - row_count, - row_separation, - col_axis, - col_count, - col_separation, - radii, - colors, - vertices) - # print "Created LIFS" - # morphology.create_group("dendrites", dendrites, 0.0, 300.0, colormap) - # print "Creating Viewer" - viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) - # print "Created Viewer" - viewer.attach_shapes(network.shapes.values()) - viewer.attach_shapes(lifs.shapes.values()) - # print "Attached Shapes" - view = moogli.View("view", interlude=interlude) - viewer.attach_view(view) - # print "Attached View" - viewer.showMaximized() - viewer.start() - view.zoom( 0.4 ) - view.pitch( PI/2.5 ) - return viewer - -if __name__=='__main__': - ## ExcInhNetBase has unconnected neurons, - ## ExcInhNet connects them - ## Instantiate either ExcInhNetBase or ExcInhNet below - #net = ExcInhNetBase(N=N) - net = ExcInhNet(N=N) - print net - moose.le( '/' ) - moose.le( '/network' ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - - app = QtGui.QApplication(sys.argv) - viewer = create_viewer(rdes) - app.exec_() diff --git a/examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py b/examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py deleted file mode 100644 index 82a9ece..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/Fig6BCDE.py +++ /dev/null @@ -1,939 +0,0 @@ -from __future__ import print_function - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -This LIF network with Ca plasticity is based on: -David Higgins, Michael Graupner, Nicolas Brunel - Memory Maintenance in Synapses with Calcium-Based - Plasticity in the Presence of Background Activity - PLOS Computational Biology, 2014. - -Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. -This variant has 2500 LIF neurons - -Upi Bhalla, Nov 2014: Appended single neuron model. -This script generates the panels in Figure 6. It takes a long time, -about 65 minutes to run 30 seconds of simulation time. -''' - -## import modules and functions to be used -import numpy as np -import matplotlib.pyplot as plt -import random -import time -import moose -from PyQt4 import Qt, QtCore, QtGui -from numpy import random as nprand -from moose.neuroml.NeuroML import NeuroML -import sys -import rdesigneur as rd -import moogli -cellname = "./cells_channels/CA1_nochans.morph.xml" -fname = "fig6bcde" - -############################################# -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations -moose.seed(100) # set seed for reproducibility of simulations - -############################################# -# All parameters as per: -# David Higgins, Michael Graupner, Nicolas Brunel -# Memory Maintenance in Synapses with Calcium-Based -# Plasticity in the Presence of Background Activity -# PLOS Computational Biology, 2014. -############################################# - -############################################# -# Neuron model -############################################# - -# equation: dv/dt = (1/taum)*(-(v-el)) + inp -# with spike when v>vt, reset to vr - -PI = 3.14159265358979 -useGssa = True -combineSegments = False - -el = -70e-3 #V # Resting potential -vt = -50e-3 #V # Spiking threshold -Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts -Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm -taum = Rm*Cm #s # Membrane time constant is 20 ms -vr = -60e-3 #V # Reset potential -Iinject = 10e-3/Rm # constant current injection into LIF neuron - # same as setting el=-70+15=-55 mV and inp=0 -noiseInj = True # inject noisy current into each cell: boolean -noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' - # SD*sqrt(taum) is used as noise current SD - -############################################# -# Network parameters: numbers -############################################# - -N = 2500 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -############################################# -# Simulation parameters -############################################# - -simtime = 30 #s # Simulation time -interTetInterval = 5.0 # sec -updateDt = 0.2 #s: time to update live display -dt = 1e-3 #s # time step - -############################################# -# Network parameters: synapses (not for ExcInhNetBase) -############################################# - -## With each presynaptic spike in exc / inh neuron, -## J / -g*J is added to post-synaptic Vm -- delta-fn synapse -## Since LIF neuron used below is derived from Compartment class, -## conductance-based synapses (SynChan class) can also be used. - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) - # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 - # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V -g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 -syndelay = dt # synaptic delay: -refrT = 0.0 # s # absolute refractory time - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -CaPlasticity = True # set it True or False to turn on/off plasticity -tauCa = 22.6936e-3 # s # Ca decay time scale -tauSyn = 346.3615 # s # synaptic plasticity time scale -## in vitro values in Higgins et al 2014, faster plasticity -CaPre = 0.56175 # mM - -CaPost = 1.2964 # mM -## in vivo values in Higgins et al 2014, slower plasticity -#CaPre = 0.33705 # mM -#CaPost = 0.74378 # mM -delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 331.909 # factor for depression term -gammaP = 725.085 # factor for potentiation term - -eqWeight = 0.5 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # but see eqn (22), noiseSD also appears - -bistable = True # if bistable is True, use bistable potential for weights -noisy = True # use noisy weight updates given by noiseSD -noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) -#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 - -############################################# -# Here we set up a single neuron to fit in this network -############################################# - -diffDt = 0.005 -chemDt = 0.005 -ePlotDt = 0.5e-3 -cPlotDt = 0.005 - -############################################# -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - cellProto = [ [cellname, 'elec'] ] - chanProto = [ - ['./cells_channels/hd.xml'], \ - ['./cells_channels/kap.xml'], \ - ['./cells_channels/kad.xml'], \ - ['./cells_channels/kdr.xml'], \ - ['./cells_channels/na3.xml'], \ - ['./cells_channels/nax.xml'], \ - ['./cells_channels/CaConc.xml'], \ - ['./cells_channels/Ca.xml'], \ - ['./cells_channels/NMDA.xml'], \ - ['./cells_channels/Glu.xml'], \ - ['./cells_channels/GABA.xml'] \ - ] - spineProto = [ \ - ['makeSpineProto()', 'spine' ] - ] - chemProto = [ \ - [ 'psd53.g', 'ltpModel'] \ - ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - passiveDistrib = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ - "Em", "-58e-3", "initVm", "-65e-3" ], \ - [ ".", "#axon#", "RA", "0.5" ] \ - ] - chanDistrib = [ \ - ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ - ["kdr", "#", "Gbar", "100" ], \ - ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ - ["nax", "#axon#", "Gbar", "1250" ], \ - ["nax", "#soma#", "Gbar", "100" ], \ - ["kap", "#axon#,#soma#", "Gbar", "300" ], \ - ["kap", "#dend#,#apical#,#user#", "Gbar", \ - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ - ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ - ["kad", "#dend#,#apical#,#user#", "Gbar", \ - "300*H(p*1e6-100)*(1+p*1e4)" ], \ - ["Ca", "#soma#", "Gbar", "10e-3" ], \ - ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ - ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ - ] - spineDistrib = [ \ - ["spine", '#apical#,#dend#,#user#', "spineSpacing", "6.2e-6", \ - "spineSpacingDistrib", "1e-6", \ - "angle", "0", \ - "angleDistrib", str( 2*PI ), \ - "size", "1", \ - "sizeDistrib", "0.5" ] \ - ] - chemDistrib = [ \ - [ "ltpModel", "#apical#,#dend#,#user#", "install", "1" ] \ - ] - - ''' - ''' - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [ - [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], - [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], - [ 'psd/tot_PSD_R', 'n', 'glu', 'modulation', 0.5, 0.002 ], - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - passiveDistrib = passiveDistrib, \ - spineDistrib = spineDistrib, \ - chanDistrib = chanDistrib, \ - chemDistrib = chemDistrib, \ - cellProto = cellProto, \ - spineProto = spineProto, \ - chanProto = chanProto, \ - chemProto = chemProto, \ - adaptorList = adaptorList - ) - - return rdes - - -############################################# - -def makeDetailedNeuron(): - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - #bcs.addAllPlots() - -def connectDetailedNeuron(): - excProb = 0.00042 - excSeed = 1234 - inhProb = 0.00013 - inhSeed = 4567 - numExc = 0 - numNMDA = 0 - numInh = 0 - delayMax = 0.010 - delayMin = 0.002 - excWeightMax = 360 - nmdaWeightMax = 1 - inhWeightMax = 100 - # Note we use the same seed for all 3 exc connections, to make sure - # they are all equivalent. - seed = excSeed - totGluWt = 0.0 - totNMDAWt = 0.0 - totGABAWt = 0.0 - for x in moose.wildcardFind( '/model/elec/#/glu/##[ISA=Synapse]' ): - exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') - exc.setRandomConnectivity( excProb, seed ) - seed = seed + 1 - if exc.numEntries > 0: - numExc += exc.numEntries - assert( exc.numEntries == x.numField ) - x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) - x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax - #x.parent.tick = 4 - x.parent.parent.tick = 4 - print('+', end=' ') - totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar - - seed = excSeed - for x in moose.wildcardFind( '/model/elec/#/NMDA/##[ISA=Synapse]' ): - #print " x = ", x - exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') - exc.setRandomConnectivity( excProb, seed ) - seed = seed + 1 - if exc.numEntries > 0: - numNMDA += exc.numEntries - assert( exc.numEntries == x.numField ) - x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) - x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax - #x.parent.tick = 4 - x.parent.parent.tick = 4 - print('*', end=' ') - totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar - - seed = inhSeed - for x in moose.wildcardFind( '/model/elec/#/GABA/##[ISA=Synapse]' ): - #print x - inh = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') - inh.setRandomConnectivity( inhProb, seed ) - seed = seed + 1 - if inh.numEntries > 0: - numInh += inh.numEntries - x.vec.delay = delayMin + nprand.rand( inh.numEntries ) * ( delayMax - delayMin ) - x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax - #x.parent.tick = 4 - x.parent.parent.tick = 4 - print('-', end=' ') - totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar - - print('connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh) - print('connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt) - -############################################# -# Exc-Inh network base class without connections -############################################# - -class ExcInhNetBase: - """Simulates and plots LIF neurons (exc and inh separate). - Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 - """ - - def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ - refrT=refrT,Iinject=Iinject): - """ Constructor of the class """ - - self.N = N # Total number of neurons - self.fexc = fexc # Fraction of exc neurons - self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh - - self.el = el # Resting potential - self.vt = vt # Spiking threshold - self.taum = taum # Membrane time constant - self.vr = vr # Reset potential - self.refrT = refrT # Absolute refractory period - self.Rm = Rm # Membrane resistance - self.Cm = Cm # Membrane capacitance - self.Iinject = Iinject # constant input current - self.noiseInjSD = noiseInjSD # SD of injected noise - - self.simif = False # whether the simulation is complete - - self._setup_network() - - def __str__(self): - return "LIF network of %d neurons "\ - "having %d exc." % (self.N,self.NmaxExc) - - def _setup_network(self): - """Sets up the network (_init_network is enough)""" - self.network = moose.LIF( 'network', self.N ); - moose.le( '/network' ) - self.network.vec.Em = self.el - self.network.vec.thresh = self.vt - self.network.vec.refractoryPeriod = self.refrT - self.network.vec.Rm = self.Rm - self.network.vec.vReset = self.vr - self.network.vec.Cm = self.Cm - if not noiseInj: - self.network.vec.inject = self.Iinject - else: - ## inject a constant + noisy current - ## values are set in self.simulate() - self.noiseTables = moose.StimulusTable('noiseTables',self.N) - moose.connect( self.noiseTables, 'output', \ - self.network, 'setInject', 'OneToOne') - - def _init_network(self,v0=el): - """Initialises the network variables before simulation""" - self.network.vec.initVm = v0 - - def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): - - self.dt = dt - self.simtime = simtime - self.T = np.ceil(simtime/dt) - self.trange = np.arange(0,self.simtime,dt) - - # Build in the LTP stimulus - offset = Iinject * 0.5 - injBaseline = np.repeat( self.Iinject, self.T ) - start = np.ceil( simtime / (interTetInterval * dt) ) - for i in range( 3 ): - end = start + np.ceil( 0.5 / dt ) - injBaseline[ start:end ] += offset - start = start + np.ceil( interTetInterval / dt ) - - for i in range(self.N): - if noiseInj: - ## Gaussian white noise SD added every dt interval should be - ## divided by sqrt(dt), as the later numerical integration - ## will multiply it by dt. - ## See the Euler-Maruyama method, numerical integration in - ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems - self.noiseTables.vec[i].vector = injBaseline + \ - np.random.normal( \ - scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ - size=self.T ) # scale = SD - self.noiseTables.vec[i].stepSize = 0 # use current time - # as x value for interpolation - - - self.noiseTables.vec[i].stopTime = self.simtime - - self._init_network(**kwargs) - if plotif: - self._init_plots() - - - def _init_plots(self): - ## make a few tables to store a few Vm-s - numVms = 10 - self.plots = moose.Table( '/plotVms', numVms ) - ## draw numVms out of N neurons - nrnIdxs = random.sample(list(range(self.N)),numVms) - for i in range( numVms ): - moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ - self.plots.vec[i], 'input') - - ## make self.N tables to store spikes of all neurons - self.spikes = moose.Table( '/plotSpikes', self.N ) - moose.connect( self.network, 'spikeOut', \ - self.spikes, 'input', 'OneToOne' ) - - ## make 2 tables to store spikes of all exc and all inh neurons - self.spikesExc = moose.Table( '/plotSpikesAllExc' ) - for i in range(self.NmaxExc): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesExc, 'input' ) - self.spikesInh = moose.Table( '/plotSpikesAllInh' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesInh, 'input' ) - - def _plot(self, fig): - """ plots the spike raster for the simulated net""" - plt.figure(1) - - ax = plt.subplot(221) - cleanAx( ax, 'B' ) - plt.ylabel( 'Neuron #', fontsize = 16 ) - for i in range(0,self.NmaxExc): - if i==0: label = 'Exc. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - ax.plot(spikes,[i]*len(spikes),\ - 'b.',marker='.', markersize = 2, label=label) - for i in range(self.NmaxExc,self.N): - if i==self.NmaxExc: label = 'Inh. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - ax.plot(spikes,[i]*len(spikes),\ - 'r.',marker='.', markersize = 2, label=label) - -############################################# -# Exc-Inh network class with Ca plasticity based connections -# (inherits from ExcInhNetBase) -############################################# - -class ExcInhNet(ExcInhNetBase): - """ Recurrent network simulation """ - - def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): - """Overloads base (parent) class""" - self.J = J # exc connection weight - self.incC = incC # number of incoming connections per neuron - self.fC = fC # fraction of exc incoming connections - self.excC = int(fC*incC)# number of exc incoming connections - self.scaleI = scaleI # inh weight is scaleI*J - self.syndelay = syndelay# synaptic delay - - # call the parent class constructor - ExcInhNetBase.__init__(self,**kwargs) - - def __str__(self): - return "LIF network of %d neurons "\ - "of which %d are exc." % (self.N,self.NmaxExc) - - def _init_network(self,**args): - ExcInhNetBase._init_network(self,**args) - - def _init_plots(self): - ExcInhNetBase._init_plots(self) - self.recN = 5 # number of neurons for which to record weights and Ca - if CaPlasticity: - ## make tables to store weights of recN exc synapses - ## for each post-synaptic exc neuron - self.weights = moose.Table( '/plotWeights', self.excC*self.recN ) - for i in range(self.recN): # range(self.N) is too large - for j in range(self.excC): - moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', - self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') - - def _setup_network(self): - ## Set up the neurons without connections - ExcInhNetBase._setup_network(self) - - ## Now, add in the connections... - ## Each pre-synaptic spike cause Vm of post-neuron to rise by - ## synaptic weight in one time step i.e. delta-fn synapse. - ## Since LIF neuron is derived from Compartment class, - ## conductance-based synapses (SynChan class) can also be used. - - ## E to E synapses can be plastic - ## Two ways to do this: - ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, - ## which collects the activation from all presynaptic neurons, - ## but then a common Ca pool is used. - ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, - ## one for each pre-synaptic neuron, i.e. one per synapse, - ## then each synapse has a different Ca pool. - ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) - ## separate SynHandler per EE synapse, thus NmaxExc*excC - if CaPlasticity: - self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - else: - self.synsEE = moose.SimpleSynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - moose.useClock( 0, '/network/synsEE', 'process' ) - - ## I to E synapses are not plastic - self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) - ## all synapses to I neurons are not plastic - self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) - ## connect all SynHandlers to their respective neurons - for i in range(self.NmaxExc): - moose.connect( self.synsIE.vec[i], 'activationOut', \ - self.network.vec[i], 'activation' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ - self.network.vec[i], 'activation' ) - - ## Connections from some Exc/Inh neurons to each Exc neuron - for i in range(0,self.NmaxExc): - self.synsIE.vec[i].numSynapses = self.incC-self.excC - - ## Connections from some Exc neurons to each Exc neuron - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synidx = i*self.excC+synnum - synHand = self.synsEE.vec[synidx] - - ## connect each synhandler to the post-synaptic neuron - moose.connect( synHand, 'activationOut', \ - self.network.vec[i], 'activation' ) - ## important to set numSynapses = 1 for each synHandler, - ## doesn't create synapses if you set the full array of SynHandlers - synHand.numSynapses = 1 - - synij = synHand.synapse[0] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - if CaPlasticity: - ## set parameters for the Ca Plasticity SynHandler - ## have to be set for each SynHandler - ## doesn't set for full array at a time - synHand.CaInit = 0.0 - synHand.tauCa = tauCa - synHand.tauSyn = tauSyn - synHand.CaPre = CaPre - synHand.CaPost = CaPost - synHand.delayD = delayD - synHand.thetaD = thetaD - synHand.thetaP = thetaP - synHand.gammaD = gammaD - synHand.gammaP = gammaP - synHand.weightMax = 1.0 # bounds on the weight - synHand.weightMin = 0.0 - synHand.weightScale = \ - self.J*2.0 # 0.2 mV, weight*weightScale is activation - # typically weight <~ 0.5, so activation <~ J - synHand.noisy = noisy - synHand.noiseSD = noiseSD - synHand.bistable = bistable - - moose.connect( self.network.vec[i], \ - 'spikeOut', synHand, 'addPostSpike') - synij.weight = eqWeight # activation = weight*weightScale - # weightScale = 2*J - # weight <~ 0.5 - ## Randomly set 5% of them to be 1.0 - if np.random.uniform()<0.05: - synij.weight = 1.0 - else: - synij.weight = self.J # no weightScale here, activation = weight - - ## Connections from some Inh neurons to each Exc neuron - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsIE.vec[i].synapse[synnum] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - ## Connections from some Exc/Inh neurons to each Inh neuron - for i in range(self.N-self.NmaxExc): - ## each neuron has incC number of synapses - self.synsI.vec[i].numSynapses = self.incC - - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[synnum] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = self.J # activation = weight - - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[ self.excC + synnum ] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - moose.useClock( 0, '/network/synsIE', 'process' ) - moose.useClock( 0, '/network/synsI', 'process' ) - -############################################# -# Analysis functions -############################################# - -def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units. - """ - sigma = tau/2. - ## normalized Gaussian kernel, integral with dt is normed to 1 - ## to count as 1 spike smeared over a finite interval - norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) - gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ - for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) - kernel_len = len(gauss_kernel) - ## need to accommodate half kernel_len on either side of fulltime - rate_full = np.zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - ## only the middle fulltime part of the rate series - ## This is already in Hz, - ## since should have multiplied by dt for above convolution - ## and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -############################################# -# Make plots -############################################# - -def extra_plots(net): - ## extra plots apart from the spike rasters - timeseries = net.trange - ## individual neuron firing rates - fig3 = plt.figure() - plt.subplot(221) - num_to_plot = 10 - #rates = [] - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[nrni].vector,simtime,dt, 1.0 ) - plt.plot(timeseries,rate) - plt.title("Rates of "+str(num_to_plot)+" exc nrns") - plt.ylabel("Hz") - plt.ylim(0,100) - plt.subplot(222) - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt, 1.0 ) - plt.plot(timeseries,rate) - plt.title("Rates of "+str(num_to_plot)+" inh nrns") - plt.ylim(0,100) - - ## population firing rates - plt.subplot(223) - rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ - /float(net.NmaxExc) # per neuron - plt.plot(timeseries,rate) - plt.ylim(0,100) - plt.title("Exc population rate") - plt.ylabel("Hz") - plt.xlabel("Time (s)") - plt.subplot(224) - rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ - /float(net.N-net.NmaxExc) # per neuron - plt.plot(timeseries,rate) - plt.ylim(0,100) - plt.title("Inh population rate") - plt.xlabel("Time (s)") - - fig3.tight_layout() - -def makeScatterPlot( m, n, v ): - fig4 = plt.figure() - - dx = 100e-6 - dy = 100e-6 - x = np.arange( m ) * dx - x = np.tile( x, n ) - y = np.arange( n ) * dy - y = y.repeat( m ) - #z = np.arange( m * n ) - #ret = plt.scatter( x, y, s = 64, c = v, vmin = -0.065, vmax = -0.055 ) - cmap = plt.get_cmap('afmhot') - ret = plt.scatter( x, y, s = 64, c = v, vmin = 0.5, vmax = 1.0, cmap = cmap ) - plt.xlim( -dx, dx * m ) - plt.ylim( -dy, dy * n ) - return fig4, ret - -def buildNeuronPlots( rdes ): - if not moose.exists( '/graphs' ): - graphs = moose.Neutral( '/graphs' ) - vtab = moose.Table( '/graphs/vtab' ) - catab = moose.Table( '/graphs/catab' ) - moose.connect( vtab, "requestOut", rdes.soma, "getVm" ) - caSoma = moose.element( rdes.soma.path + "/Ca_conc" ) - moose.connect( catab, "requestOut", caSoma, "getCa" ) - elist = moose.wildcardFind( '/model/chem/psd/tot_PSD_R[]' ) - rtab = moose.Table2( '/graphs/rtab', len( elist ) ).vec - for i in zip( elist, rtab ): - moose.connect( i[1], "requestOut", i[0], "getN" ) - elist = moose.wildcardFind( '/model/chem/spine/Ca[]' ) - pcatab = moose.Table2( '/graphs/pcatab', len( elist ) ).vec - for i in zip( elist, pcatab ): - moose.connect( i[1], "requestOut", i[0], "getConc" ) - -def cleanAx( ax, label, showXlabel = False ): - ax.spines['top'].set_visible( False ) - ax.spines['right'].set_visible( False ) - ax.tick_params( direction = 'out' ) - if not showXlabel: - ax.set_xticklabels( [] ) - for tick in ax.xaxis.get_major_ticks(): - tick.tick2On = False - for tick in ax.yaxis.get_major_ticks(): - tick.tick2On = False - ax.text( -0.18, 1.0, label, fontsize = 18, weight = 'bold', transform=ax.transAxes ) - - -def saveNeuronPlots( fig, rdes ): - #fig = plt.figure( figsize=(12, 10), facecolor='white' ) - #fig.subplots_adjust( left = 0.18 ) - plt.figure(1) - - ax = plt.subplot(222) - cleanAx( ax, 'C' ) - plt.ylabel( 'Vm (mV)', fontsize = 16 ) - vtab = moose.element( '/graphs/vtab' ) - t = np.arange( 0, len( vtab.vector ), 1 ) * vtab.dt - plt.plot( t, vtab.vector * 1000, label="Vm" ) - #plt.legend() - - ax = plt.subplot(223) - cleanAx( ax, 'D', showXlabel = True ) - pcatab = list( moose.vec( '/graphs/pcatab' ) )[0::50] - t = np.arange( 0, len( pcatab[0].vector ), 1 ) * pcatab[0].dt - for i in pcatab: - plt.plot( t, i.vector * 1000 ) - plt.ylabel( '[Ca] (uM)', fontsize = 16 ) - plt.xlabel( 'Time (s)', fontsize = 16 ) - - ax = plt.subplot(224) - cleanAx( ax, 'E', showXlabel = True ) - rtab = list( moose.vec( '/graphs/rtab' ) )[0::50] - t = np.arange( 0, len( rtab[0].vector ), 1 ) * rtab[0].dt - for i in rtab: - plt.plot( t, i.vector ) - plt.ylabel( '# of inserted GluRs', fontsize = 16 ) - plt.xlabel( 'Time (s)', fontsize = 16 ) - ''' - for i in moose.wildcardFind( '/graphs/#' ): - i.xplot( fname + '.xplot', i.name ) - ''' - -def create_viewer(rdes): - # print "Creating 3D Viewer" - network = moogli.extensions.moose.read(path=rdes.elecid.path, - vertices=10) - # print "Read Network" - network.set("color", moogli.colors.LIGHT_BLUE) - network.groups["spine"].set("color", moogli.colors.ORANGE) - # for dendrite in dendrites.values(): - # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) - - [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in - list(network.groups["spine"].groups["head"].shapes.values())] - # print "Creating LIFS" - soma = network.shapes[rdes.soma.path] - - center = soma.get_center() - row_axis = moogli.geometry.X_AXIS - row_count = 25 - row_separation = soma.get_base_radius() * 5.0 - col_axis = moogli.geometry.Z_AXIS - col_count = 25 - col_separation = row_separation - radii = soma.get_base_radius() - colors = moogli.colors.GREEN - vertices = 20 - lifs = moogli.shapes.Sphere.grid("LIF", - center, - row_axis, - row_count, - row_separation, - col_axis, - col_count, - col_separation, - radii, - colors, - vertices) - # print "Created LIFS" - # morphology.create_group("dendrites", dendrites, 0.0, 300.0, colormap) - # print "Creating Viewer" - viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) - # print "Created Viewer" - viewer.attach_shapes(list(network.shapes.values())) - viewer.attach_shapes(list(lifs.shapes.values())) - # print "Attached Shapes" - view = moogli.View("view") - viewer.attach_view(view) - # print "Attached View" - return viewer - -if __name__=='__main__': - plt.ion() - ## ExcInhNetBase has unconnected neurons, - ## ExcInhNet connects them - ## Instantiate either ExcInhNetBase or ExcInhNet below - #net = ExcInhNetBase(N=N) - net = ExcInhNet(N=N) - print(net) - moose.le( '/' ) - moose.le( '/network' ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - buildNeuronPlots( rdes ) - connectDetailedNeuron() - - app = QtGui.QApplication(sys.argv) - viewer = create_viewer(rdes) - viewer.showMaximized() - viewer.start() - app.exec_() - - ## Important to distribute the initial Vm-s - ## else weak coupling gives periodic synchronous firing - plotif = True - net.simulate(simtime,plotif=plotif,\ - v0=np.random.uniform(el-20e-3,vt,size=N)) - - # moose simulation - moose.useClock( 1, '/network', 'process' ) - moose.useClock( 2, '/plotSpikes', 'process' ) - moose.useClock( 3, '/plotVms', 'process' ) - if CaPlasticity: - moose.useClock( 3, '/plotWeights', 'process' ) - moose.useClock( 3, '/plotCa', 'process' ) - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - moose.setClock( 3, dt ) - #moose.setClock( moose.element( '/cell/hsolve' ), dt ) - moose.setClock( 9, dt ) - - if plotif: - Vm = net.network.vec.Vm - fig = plt.figure( 1, figsize=(12, 10), facecolor='white' ) - fig.subplots_adjust( left = 0.18 ) - fig2, ret = makeScatterPlot( 50, 50, Vm ) - #cellFig = bcs.neuronPlot( '/model/elec', '/model/chem/psd/tot_PSD_R[]' ) - - moose.reinit() - t1 = time.time() - print('starting') - #moose.start(simtime) - for currTime in np.arange( 0, simtime, updateDt ): - moose.start(updateDt) - lastt = net.network.vec.lastEventTime - lastt = np.exp( 2 * (lastt - currTime ) ) - print(currTime, time.time() - t1) - ret.set_array( lastt ) - fig2.canvas.draw() - - print('runtime, t = ', time.time() - t1) - - if plotif: - net._plot( fig ) - - extra_plots(net) - #bcs.displayCellPlots( plt ) - saveNeuronPlots( fig, rdes ) - plt.show() - plt.savefig( fname + '.svg', bbox_inches='tight') - print( "Hit 'enter' to exit" ) - input() diff --git a/examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py b/examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py deleted file mode 100644 index 75c5161..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py +++ /dev/null @@ -1,887 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -This LIF network with Ca plasticity is based on: -David Higgins, Michael Graupner, Nicolas Brunel - Memory Maintenance in Synapses with Calcium-Based - Plasticity in the Presence of Background Activity - PLOS Computational Biology, 2014. - -Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. -This variant has 400 LIF neurons - -Upi Bhalla, Nov 2014: Appended single neuron model. - -This script is a reduced version of the model that generates the panels -in Figure 6. It takes just a couple of minutes to run 30 seconds of -simulation time. That is, 400 neurons, 1 detailed model with 36 -compartments plus 16 spines each having 2 compartments and 34 molecules, -and lots of synapses. -''' - -## import modules and functions to be used -import numpy as np -import matplotlib.pyplot as plt -import random -import time -import moose -from numpy import random as nprand -from moose.neuroml.NeuroML import NeuroML -import sys -sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) -import rdesigneur as rd -#cellname = "./cells_channels/CA1_nochans.morph.xml" -cellname = "./cells_channels/ca1_minimal.p" -fname = "reduced" - -############################################# -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations -moose.seed(100) # set seed for reproducibility of simulations - -############################################# -# All parameters as per: -# David Higgins, Michael Graupner, Nicolas Brunel -# Memory Maintenance in Synapses with Calcium-Based -# Plasticity in the Presence of Background Activity -# PLOS Computational Biology, 2014. -############################################# - -############################################# -# Neuron model -############################################# - -# equation: dv/dt = (1/taum)*(-(v-el)) + inp -# with spike when v>vt, reset to vr - -PI = 3.14159265358979 -useGssa = True -combineSegments = False - -el = -70e-3 #V # Resting potential -vt = -50e-3 #V # Spiking threshold -Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts -Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm -taum = Rm*Cm #s # Membrane time constant is 20 ms -vr = -60e-3 #V # Reset potential -Iinject = 10e-3/Rm # constant current injection into LIF neuron - # same as setting el=-70+15=-55 mV and inp=0 -noiseInj = True # inject noisy current into each cell: boolean -noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' - # SD*sqrt(taum) is used as noise current SD - -############################################# -# Network parameters: numbers -############################################# - -N = 400 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -############################################# -# Simulation parameters -############################################# - -simtime = 30 #s # Simulation time -interTetInterval = 5.0 # sec -updateDt = 0.2 #s: time to update live display -dt = 1e-3 #s # time step - -############################################# -# Network parameters: synapses (not for ExcInhNetBase) -############################################# - -## With each presynaptic spike in exc / inh neuron, -## J / -g*J is added to post-synaptic Vm -- delta-fn synapse -## Since LIF neuron used below is derived from Compartment class, -## conductance-based synapses (SynChan class) can also be used. - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) - # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 - # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V -g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 -syndelay = dt # synaptic delay: -refrT = 0.0 # s # absolute refractory time - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -CaPlasticity = True # set it True or False to turn on/off plasticity -tauCa = 22.6936e-3 # s # Ca decay time scale -tauSyn = 346.3615 # s # synaptic plasticity time scale -## in vitro values in Higgins et al 2014, faster plasticity -CaPre = 0.56175 # mM - -CaPost = 1.2964 # mM -## in vivo values in Higgins et al 2014, slower plasticity -#CaPre = 0.33705 # mM -#CaPost = 0.74378 # mM -delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 331.909 # factor for depression term -gammaP = 725.085 # factor for potentiation term - -eqWeight = 0.5 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # but see eqn (22), noiseSD also appears - -bistable = True # if bistable is True, use bistable potential for weights -noisy = True # use noisy weight updates given by noiseSD -noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) -#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 - -############################################# -# Here we set up a single neuron to fit in this network -############################################# - -diffDt = 0.005 -chemDt = 0.005 -ePlotDt = 0.5e-3 -cPlotDt = 0.005 - -############################################# -def buildRdesigneur(): - ################################################################## - # Here we define which prototypes are to be loaded in to the system. - # Each specification has the format - # source [localName] - # source can be any of - # filename.extension, # Identify type of file by extension, load it. - # function(), # func( name ) builds object of specified name - # file.py:function() , # load Python file, run function(name) in it. - # moose.Classname # Make obj moose.Classname, assign to name. - # path # Already loaded into library or on path. - # After loading the prototypes, there should be an object called 'name' - # in the library. - ################################################################## - cellProto = [ [cellname, 'elec'] ] - chanProto = [ - ['./cells_channels/hd.xml'], \ - ['./cells_channels/kap.xml'], \ - ['./cells_channels/kad.xml'], \ - ['./cells_channels/kdr.xml'], \ - ['./cells_channels/na3.xml'], \ - ['./cells_channels/nax.xml'], \ - ['./cells_channels/CaConc.xml'], \ - ['./cells_channels/Ca.xml'], \ - ['./cells_channels/NMDA.xml'], \ - ['./cells_channels/Glu.xml'], \ - ['./cells_channels/GABA.xml'] \ - ] - spineProto = [ \ - ['makeSpineProto()', 'spine' ] - ] - chemProto = [ \ - [ 'psd53.g', 'ltpModel'] \ - ] - - ################################################################## - # Here we define what goes where, and any parameters. Each distribution - # has the format - # protoName, path, field, expr, [field, expr]... - # where - # protoName identifies the prototype to be placed on the cell - # path is a MOOSE wildcard path specifying where to put things - # field is the field to assign. - # expr is a math expression to define field value. This uses the - # muParser. Built-in variables are p, g, L, len, dia. - # The muParser provides most math functions, and the Heaviside - # function H(x) = 1 for x > 0 is also provided. - ################################################################## - passiveDistrib = [ - [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ - "Em", "-58e-3", "initVm", "-65e-3" ], \ - [ ".", "#axon#", "RA", "0.5" ] \ - ] - chanDistrib = [ \ - ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ - ["kdr", "#", "Gbar", "100" ], \ - ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ - ["nax", "#axon#", "Gbar", "1250" ], \ - ["nax", "#soma#", "Gbar", "100" ], \ - ["kap", "#axon#,#soma#", "Gbar", "300" ], \ - ["kap", "#dend#,#apical#,#user#", "Gbar", \ - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ - ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ - ["kad", "#dend#,#apical#,#user#", "Gbar", \ - "300*H(p*1e6-100)*(1+p*1e4)" ], \ - ["Ca", "#soma#", "Gbar", "10e-3" ], \ - ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ - ["glu", "#dend#,#apical#", "Gbar", "50" ], \ - ["NMDA", "#dend#,#apical#", "Gbar", "20" ], \ - ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ - ] - spineDistrib = [ \ - ["spine", '#apical#', \ - "spineSpacing", "H(p-400e-6)*H(800e-6-p)*10e-6", \ - "spineSpacingDistrib", "1e-6", \ - "angle", "0", \ - "angleDistrib", str( 2*PI ), \ - "size", "1", \ - "sizeDistrib", "0.5" ] \ - ] - chemDistrib = [ \ - [ "ltpModel", "#apical#", "install", "1" ] \ - ] - - ''' - ''' - ###################################################################### - # Here we define the mappings across scales. Format: - # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] - # where the coupling expression is anything a muParser can evaluate, - # using the input variable x. For example: 8e-5 + 300*x - # For now, let's use existing adaptors which take an offset and scale. - ###################################################################### - adaptorList = [ - [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], - [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], - [ 'psd/tot_PSD_R', 'n', 'glu', 'modulation', 0.5, 0.002 ], - ] - - ###################################################################### - # Having defined everything, now to create the rdesigneur and proceed - # with creating the model. - ###################################################################### - - - rdes = rd.rdesigneur( - useGssa = useGssa, \ - combineSegments = combineSegments, \ - stealCellFromLibrary = True, \ - passiveDistrib = passiveDistrib, \ - spineDistrib = spineDistrib, \ - chanDistrib = chanDistrib, \ - chemDistrib = chemDistrib, \ - cellProto = cellProto, \ - spineProto = spineProto, \ - chanProto = chanProto, \ - chemProto = chemProto, \ - adaptorList = adaptorList - ) - - return rdes - - -############################################# - -def makeDetailedNeuron(): - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - #bcs.addAllPlots() - -def connectDetailedNeuron(): - excProb = 0.005 - excSeed = 1234 - inhProb = 0.005 - inhSeed = 4567 - numExc = 0 - numNMDA = 0 - numInh = 0 - delayMax = 0.010 - delayMin = 0.002 - excWeightMax = 5 - nmdaWeightMax = 2 - inhWeightMax = 50 - # Note we use the same seed for all 3 exc connections, to make sure - # they are all equivalent. - seed = excSeed - totGluWt = 0.0 - totNMDAWt = 0.0 - totGABAWt = 0.0 - for x in moose.wildcardFind( '/model/elec/#/glu/##[ISA=Synapse]' ): - exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') - exc.setRandomConnectivity( excProb, seed ) - seed = seed + 1 - if exc.numEntries > 0: - numExc += exc.numEntries - assert( exc.numEntries == x.numField ) - x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) - x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax - #x.parent.tick = 4 - x.parent.parent.tick = 4 - print '+', - totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar - - seed = excSeed - for x in moose.wildcardFind( '/model/elec/#/NMDA/##[ISA=Synapse]' ): - #print " x = ", x - exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') - exc.setRandomConnectivity( excProb, seed ) - seed = seed + 1 - if exc.numEntries > 0: - numNMDA += exc.numEntries - assert( exc.numEntries == x.numField ) - x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) - x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax - #x.parent.tick = 4 - x.parent.parent.tick = 4 - print '*', - totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar - - seed = inhSeed - for x in moose.wildcardFind( '/model/elec/#/GABA/##[ISA=Synapse]' ): - #print x - inh = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') - inh.setRandomConnectivity( inhProb, seed ) - seed = seed + 1 - if inh.numEntries > 0: - numInh += inh.numEntries - x.vec.delay = delayMin + nprand.rand( inh.numEntries ) * ( delayMax - delayMin ) - x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax - #x.parent.tick = 4 - x.parent.parent.tick = 4 - print '-', - totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar - - print 'connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh - print 'connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt - -############################################# -# Exc-Inh network base class without connections -############################################# - -class ExcInhNetBase: - """Simulates and plots LIF neurons (exc and inh separate). - Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 - """ - - def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ - refrT=refrT,Iinject=Iinject): - """ Constructor of the class """ - - self.N = N # Total number of neurons - self.fexc = fexc # Fraction of exc neurons - self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh - - self.el = el # Resting potential - self.vt = vt # Spiking threshold - self.taum = taum # Membrane time constant - self.vr = vr # Reset potential - self.refrT = refrT # Absolute refractory period - self.Rm = Rm # Membrane resistance - self.Cm = Cm # Membrane capacitance - self.Iinject = Iinject # constant input current - self.noiseInjSD = noiseInjSD # SD of injected noise - - self.simif = False # whether the simulation is complete - - self._setup_network() - - def __str__(self): - return "LIF network of %d neurons "\ - "having %d exc." % (self.N,self.NmaxExc) - - def _setup_network(self): - """Sets up the network (_init_network is enough)""" - self.network = moose.LIF( 'network', self.N ); - moose.le( '/network' ) - self.network.vec.Em = self.el - self.network.vec.thresh = self.vt - self.network.vec.refractoryPeriod = self.refrT - self.network.vec.Rm = self.Rm - self.network.vec.vReset = self.vr - self.network.vec.Cm = self.Cm - if not noiseInj: - self.network.vec.inject = self.Iinject - else: - ## inject a constant + noisy current - ## values are set in self.simulate() - self.noiseTables = moose.StimulusTable('noiseTables',self.N) - moose.connect( self.noiseTables, 'output', \ - self.network, 'setInject', 'OneToOne') - - def _init_network(self,v0=el): - """Initialises the network variables before simulation""" - self.network.vec.initVm = v0 - - def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): - - self.dt = dt - self.simtime = simtime - self.T = np.ceil(simtime/dt) - self.trange = np.arange(0,self.simtime,dt) - - # Build in the LTP stimulus - offset = Iinject * 0.5 - injBaseline = np.repeat( self.Iinject, self.T ) - start = np.ceil( simtime / (interTetInterval * dt) ) - for i in range( 3 ): - end = start + np.ceil( 0.5 / dt ) - injBaseline[ start:end ] += offset - start = start + np.ceil( interTetInterval / dt ) - - for i in range(self.N): - if noiseInj: - ## Gaussian white noise SD added every dt interval should be - ## divided by sqrt(dt), as the later numerical integration - ## will multiply it by dt. - ## See the Euler-Maruyama method, numerical integration in - ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems - self.noiseTables.vec[i].vector = injBaseline + \ - np.random.normal( \ - scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ - size=self.T ) # scale = SD - self.noiseTables.vec[i].stepSize = 0 # use current time - # as x value for interpolation - - - self.noiseTables.vec[i].stopTime = self.simtime - - self._init_network(**kwargs) - if plotif: - self._init_plots() - - - def _init_plots(self): - ## make a few tables to store a few Vm-s - numVms = 10 - self.plots = moose.Table( '/plotVms', numVms ) - ## draw numVms out of N neurons - nrnIdxs = random.sample(range(self.N),numVms) - for i in range( numVms ): - moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ - self.plots.vec[i], 'input') - - ## make self.N tables to store spikes of all neurons - self.spikes = moose.Table( '/plotSpikes', self.N ) - moose.connect( self.network, 'spikeOut', \ - self.spikes, 'input', 'OneToOne' ) - - ## make 2 tables to store spikes of all exc and all inh neurons - self.spikesExc = moose.Table( '/plotSpikesAllExc' ) - for i in range(self.NmaxExc): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesExc, 'input' ) - self.spikesInh = moose.Table( '/plotSpikesAllInh' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesInh, 'input' ) - - def _plot(self, fig): - """ plots the spike raster for the simulated net""" - plt.figure(1) - - ax = plt.subplot(221) - cleanAx( ax, 'B' ) - plt.ylabel( 'Neuron #', fontsize = 16 ) - for i in range(0,self.NmaxExc): - if i==0: label = 'Exc. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - ax.plot(spikes,[i]*len(spikes),\ - 'b.',marker='.', markersize = 2, label=label) - for i in range(self.NmaxExc,self.N): - if i==self.NmaxExc: label = 'Inh. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - ax.plot(spikes,[i]*len(spikes),\ - 'r.',marker='.', markersize = 2, label=label) - -############################################# -# Exc-Inh network class with Ca plasticity based connections -# (inherits from ExcInhNetBase) -############################################# - -class ExcInhNet(ExcInhNetBase): - """ Recurrent network simulation """ - - def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): - """Overloads base (parent) class""" - self.J = J # exc connection weight - self.incC = incC # number of incoming connections per neuron - self.fC = fC # fraction of exc incoming connections - self.excC = int(fC*incC)# number of exc incoming connections - self.scaleI = scaleI # inh weight is scaleI*J - self.syndelay = syndelay# synaptic delay - - # call the parent class constructor - ExcInhNetBase.__init__(self,**kwargs) - - def __str__(self): - return "LIF network of %d neurons "\ - "of which %d are exc." % (self.N,self.NmaxExc) - - def _init_network(self,**args): - ExcInhNetBase._init_network(self,**args) - - def _init_plots(self): - ExcInhNetBase._init_plots(self) - self.recN = 5 # number of neurons for which to record weights and Ca - if CaPlasticity: - ## make tables to store weights of recN exc synapses - ## for each post-synaptic exc neuron - self.weights = moose.Table( '/plotWeights', self.excC*self.recN ) - for i in range(self.recN): # range(self.N) is too large - for j in range(self.excC): - moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', - self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') - - def _setup_network(self): - ## Set up the neurons without connections - ExcInhNetBase._setup_network(self) - - ## Now, add in the connections... - ## Each pre-synaptic spike cause Vm of post-neuron to rise by - ## synaptic weight in one time step i.e. delta-fn synapse. - ## Since LIF neuron is derived from Compartment class, - ## conductance-based synapses (SynChan class) can also be used. - - ## E to E synapses can be plastic - ## Two ways to do this: - ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, - ## which collects the activation from all presynaptic neurons, - ## but then a common Ca pool is used. - ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, - ## one for each pre-synaptic neuron, i.e. one per synapse, - ## then each synapse has a different Ca pool. - ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) - ## separate SynHandler per EE synapse, thus NmaxExc*excC - if CaPlasticity: - self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - else: - self.synsEE = moose.SimpleSynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - moose.useClock( 0, '/network/synsEE', 'process' ) - - ## I to E synapses are not plastic - self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) - ## all synapses to I neurons are not plastic - self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) - ## connect all SynHandlers to their respective neurons - for i in range(self.NmaxExc): - moose.connect( self.synsIE.vec[i], 'activationOut', \ - self.network.vec[i], 'activation' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ - self.network.vec[i], 'activation' ) - - ## Connections from some Exc/Inh neurons to each Exc neuron - for i in range(0,self.NmaxExc): - self.synsIE.vec[i].numSynapses = self.incC-self.excC - - ## Connections from some Exc neurons to each Exc neuron - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(self.NmaxExc),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synidx = i*self.excC+synnum - synHand = self.synsEE.vec[synidx] - - ## connect each synhandler to the post-synaptic neuron - moose.connect( synHand, 'activationOut', \ - self.network.vec[i], 'activation' ) - ## important to set numSynapses = 1 for each synHandler, - ## doesn't create synapses if you set the full array of SynHandlers - synHand.numSynapses = 1 - - synij = synHand.synapse[0] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - if CaPlasticity: - ## set parameters for the Ca Plasticity SynHandler - ## have to be set for each SynHandler - ## doesn't set for full array at a time - synHand.CaInit = 0.0 - synHand.tauCa = tauCa - synHand.tauSyn = tauSyn - synHand.CaPre = CaPre - synHand.CaPost = CaPost - synHand.delayD = delayD - synHand.thetaD = thetaD - synHand.thetaP = thetaP - synHand.gammaD = gammaD - synHand.gammaP = gammaP - synHand.weightMax = 1.0 # bounds on the weight - synHand.weightMin = 0.0 - synHand.weightScale = \ - self.J*2.0 # 0.2 mV, weight*weightScale is activation - # typically weight <~ 0.5, so activation <~ J - synHand.noisy = noisy - synHand.noiseSD = noiseSD - synHand.bistable = bistable - - moose.connect( self.network.vec[i], \ - 'spikeOut', synHand, 'addPostSpike') - synij.weight = eqWeight # activation = weight*weightScale - # weightScale = 2*J - # weight <~ 0.5 - ## Randomly set 5% of them to be 1.0 - if np.random.uniform()<0.05: - synij.weight = 1.0 - else: - synij.weight = self.J # no weightScale here, activation = weight - - ## Connections from some Inh neurons to each Exc neuron - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsIE.vec[i].synapse[synnum] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - ## Connections from some Exc/Inh neurons to each Inh neuron - for i in range(self.N-self.NmaxExc): - ## each neuron has incC number of synapses - self.synsI.vec[i].numSynapses = self.incC - - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(self.NmaxExc),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[synnum] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = self.J # activation = weight - - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[ self.excC + synnum ] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - moose.useClock( 0, '/network/synsIE', 'process' ) - moose.useClock( 0, '/network/synsI', 'process' ) - -############################################# -# Analysis functions -############################################# - -def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units. - """ - sigma = tau/2. - ## normalized Gaussian kernel, integral with dt is normed to 1 - ## to count as 1 spike smeared over a finite interval - norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) - gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ - for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) - kernel_len = len(gauss_kernel) - ## need to accommodate half kernel_len on either side of fulltime - rate_full = np.zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - ## only the middle fulltime part of the rate series - ## This is already in Hz, - ## since should have multiplied by dt for above convolution - ## and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -############################################# -# Make plots -############################################# - -def extra_plots(net): - ## extra plots apart from the spike rasters - timeseries = net.trange - ## individual neuron firing rates - fig3 = plt.figure() - plt.subplot(221) - num_to_plot = 10 - #rates = [] - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[nrni].vector,simtime,dt, 1.0 ) - plt.plot(timeseries,rate) - plt.title("Rates of "+str(num_to_plot)+" exc nrns") - plt.ylabel("Hz") - plt.ylim(0,100) - plt.subplot(222) - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt, 1.0 ) - plt.plot(timeseries,rate) - plt.title("Rates of "+str(num_to_plot)+" inh nrns") - plt.ylim(0,100) - - ## population firing rates - plt.subplot(223) - rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ - /float(net.NmaxExc) # per neuron - plt.plot(timeseries,rate) - plt.ylim(0,100) - plt.title("Exc population rate") - plt.ylabel("Hz") - plt.xlabel("Time (s)") - plt.subplot(224) - rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ - /float(net.N-net.NmaxExc) # per neuron - plt.plot(timeseries,rate) - plt.ylim(0,100) - plt.title("Inh population rate") - plt.xlabel("Time (s)") - - fig3.tight_layout() - -def makeScatterPlot( m, n, v ): - fig4 = plt.figure() - - dx = 100e-6 - dy = 100e-6 - x = np.arange( m ) * dx - x = np.tile( x, n ) - y = np.arange( n ) * dy - y = y.repeat( m ) - #z = np.arange( m * n ) - #ret = plt.scatter( x, y, s = 64, c = v, vmin = -0.065, vmax = -0.055 ) - cmap = plt.get_cmap('afmhot') - ret = plt.scatter( x, y, s = 64, c = v, vmin = 0.5, vmax = 1.0, cmap = cmap ) - plt.xlim( -dx, dx * m ) - plt.ylim( -dy, dy * n ) - return fig4, ret - -def buildNeuronPlots( rdes ): - if not moose.exists( '/graphs' ): - graphs = moose.Neutral( '/graphs' ) - vtab = moose.Table( '/graphs/vtab' ) - catab = moose.Table( '/graphs/catab' ) - moose.connect( vtab, "requestOut", rdes.soma, "getVm" ) - caSoma = moose.element( rdes.soma.path + "/Ca_conc" ) - moose.connect( catab, "requestOut", caSoma, "getCa" ) - elist = moose.wildcardFind( '/model/chem/psd/tot_PSD_R[]' ) - rtab = moose.Table2( '/graphs/rtab', len( elist ) ).vec - for i in zip( elist, rtab ): - moose.connect( i[1], "requestOut", i[0], "getN" ) - elist = moose.wildcardFind( '/model/chem/spine/Ca[]' ) - pcatab = moose.Table2( '/graphs/pcatab', len( elist ) ).vec - for i in zip( elist, pcatab ): - moose.connect( i[1], "requestOut", i[0], "getConc" ) - -def cleanAx( ax, label, showXlabel = False ): - ax.spines['top'].set_visible( False ) - ax.spines['right'].set_visible( False ) - ax.tick_params( direction = 'out' ) - if not showXlabel: - ax.set_xticklabels( [] ) - for tick in ax.xaxis.get_major_ticks(): - tick.tick2On = False - for tick in ax.yaxis.get_major_ticks(): - tick.tick2On = False - ax.text( -0.18, 1.0, label, fontsize = 18, weight = 'bold', transform=ax.transAxes ) - - -def saveNeuronPlots( fig, rdes ): - #fig = plt.figure( figsize=(12, 10), facecolor='white' ) - #fig.subplots_adjust( left = 0.18 ) - plt.figure(1) - - ax = plt.subplot(222) - cleanAx( ax, 'C' ) - plt.ylabel( 'Vm (mV)', fontsize = 16 ) - vtab = moose.element( '/graphs/vtab' ) - t = np.arange( 0, len( vtab.vector ), 1 ) * vtab.dt - plt.plot( t, vtab.vector * 1000, label="Vm" ) - #plt.legend() - - ax = plt.subplot(223) - cleanAx( ax, 'D', showXlabel = True ) - pcatab = list( moose.vec( '/graphs/pcatab' ) )[0::2] - t = np.arange( 0, len( pcatab[0].vector ), 1 ) * pcatab[0].dt - for i in pcatab: - plt.plot( t, i.vector * 1000 ) - plt.ylabel( '[Ca] (uM)', fontsize = 16 ) - plt.xlabel( 'Time (s)', fontsize = 16 ) - - ax = plt.subplot(224) - cleanAx( ax, 'E', showXlabel = True ) - rtab = list( moose.vec( '/graphs/rtab' ) )[0::2] - t = np.arange( 0, len( rtab[0].vector ), 1 ) * rtab[0].dt - for i in rtab: - plt.plot( t, i.vector ) - plt.ylabel( '# of inserted GluRs', fontsize = 16 ) - plt.xlabel( 'Time (s)', fontsize = 16 ) - ''' - for i in moose.wildcardFind( '/graphs/#' ): - i.xplot( fname + '.xplot', i.name ) - ''' - -if __name__=='__main__': - plt.ion() - ## ExcInhNetBase has unconnected neurons, - ## ExcInhNet connects them - ## Instantiate either ExcInhNetBase or ExcInhNet below - #net = ExcInhNetBase(N=N) - net = ExcInhNet(N=N) - print net - moose.le( '/' ) - moose.le( '/network' ) - rdes = buildRdesigneur() - rdes.buildModel( '/model' ) - buildNeuronPlots( rdes ) - connectDetailedNeuron() - - ## Important to distribute the initial Vm-s - ## else weak coupling gives periodic synchronous firing - plotif = True - net.simulate(simtime,plotif=plotif,\ - v0=np.random.uniform(el-20e-3,vt,size=N)) - - # moose simulation - moose.useClock( 1, '/network', 'process' ) - moose.useClock( 2, '/plotSpikes', 'process' ) - moose.useClock( 3, '/plotVms', 'process' ) - if CaPlasticity: - moose.useClock( 3, '/plotWeights', 'process' ) - moose.useClock( 3, '/plotCa', 'process' ) - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - moose.setClock( 3, dt ) - moose.setClock( 9, dt ) - - if plotif: - Vm = net.network.vec.Vm - fig = plt.figure( 1, figsize=(12, 10), facecolor='white' ) - fig.subplots_adjust( left = 0.18 ) - fig2, ret = makeScatterPlot( 20, 20, Vm ) - title = fig2.text( 0.1, 0.95, "Simulation starting..." ) - - moose.reinit() - t1 = time.time() - print 'starting' - for currTime in np.arange( 0, simtime, updateDt ): - moose.start(updateDt) - lastt = net.network.vec.lastEventTime - lastt = np.exp( 2 * (lastt - currTime ) ) - title.set_text( "t = " + str( currTime ) ) - ret.set_array( lastt ) - fig2.canvas.draw() - - print 'runtime, t = ', time.time() - t1 - - if plotif: - net._plot( fig ) - - extra_plots(net) - saveNeuronPlots( fig, rdes ) - plt.show() - plt.savefig( fname + '.svg', bbox_inches='tight') - print( "Hit 'enter' to exit" ) - raw_input() diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml deleted file mode 100644 index 028852a..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml +++ /dev/null @@ -1,12658 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. - All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - - - - axon_group - soma_group - - - - - - - - all - - - all - - - - - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - ModelViewParmSubset_2 - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml deleted file mode 100644 index 074524a..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1.morph.xml +++ /dev/null @@ -1,12628 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. - All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - - - - - - axon_group - soma_group - - - - - - - - all - - - all - - - - - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - ModelViewParmSubset_2 - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml deleted file mode 100644 index dcae7ae..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml +++ /dev/null @@ -1,12535 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml deleted file mode 100644 index 6041e73..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml +++ /dev/null @@ -1,13066 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. - All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - allButSpineShaft - - - - - - axon_group - soma_group - - - - - - - - all - - - all - - - - - - - - soma_group - - - - - - OneSecGrp_SectionRef_5 - - - - - - allButSpineShaft - - - - - - allButSpineShaft - - - - - allButShaft - - - - - - all - - - - - - all - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml deleted file mode 100644 index b2f8ee5..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml +++ /dev/null @@ -1,13118 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. - All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - allButSpineShaft - - - SomaPlusProxDend - - - axon_group - soma_group - - - - - - - - SomaPlusProxDend - - - axon_group - soma_group - - - - - - SomaPlusProxDend - - - axon_group - soma_group - - - - - - - - all - - - all - - - - - - - This opaque name OneSecGrp_SectionRef_5 means the axon. - - - OneSecGrp_SectionRef_5 - soma_group - - - - - - SomaPlusProxDend - - - axon_group - soma_group - - - - - - allButSpineShaft - - - - - allButShaft - - - - - - all - - - - - - all - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml deleted file mode 100644 index 645161c..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - - - Voltage-gated Ca2+ channel, based on Traub - - - - Traub, R. - - - Upi Bhalla - NCBS - bhalla - at - ncbs.res.in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml deleted file mode 100644 index fe10a98..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/CaConc.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - Ca pool - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - - Upi Bhalla - - - - An expontially decaying pool of calcium - - - - Upi Bhalla - National Centre for Biological Sciences, Bangalore, India. - bhalla - at - ncbs.res.in - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml deleted file mode 100644 index 29da3e8..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Ca_conc.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - Ca pool. - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - - - An expontially decaying pool of calcium - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml deleted file mode 100644 index 306dd9e..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/GABA.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - GABA receptor synchan, 2 ms tau. - - - - Simple double exponential waveform GABA synapse - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml deleted file mode 100644 index c1a7d7c..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Glu.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Glutamate receptor synchan, 2 ms tau. - - - - Simple double exponential waveform glu synapse - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml deleted file mode 100644 index ce7e3dd..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/NMDA.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - NMDA receptor synchan, 20 ms tau. - - - - Simple double exponential waveform NMDA synapse - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml deleted file mode 100644 index 09239c3..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Voltage-gated K channel - - - - - - Matteo Farinella - - - - Channel translated from the original .mod file used in Kole MH, Ilschner SU, Kampa BM, Williams SR, Ruben PC, Stuart GJ, Action potential generation requires a high sodium channel density in the axon initial segment. Nat Neurosci. 2008 Feb;11(2):178-86. - Based on I-M (muscarinic K channel) Slow, noninactivating - - - - - Zach Mainen - Salk Institute - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Matteo Farinella - UCL - m.farinella - at - ucl.ac.uk - - - - - - - Rothman JS, Cathala L, Steuber V, Silver RA, Synaptic depression enables neuronal gain control. Nature. 2009 Jan 14 - http://www.ncbi.nlm.nih.gov/pubmed/19145233?ordinalpos=1&itool=EntrezSystem2.PEntrez.Pubmed.Pubmed_ResultsPanel.Pubmed_DefaultReportPanel.Pubmed_RVDocSum - - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml deleted file mode 100644 index 9e507d0..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KA.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - ChannelML file based on Traub et al. 2003 - - - - - Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse - In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this - - Yoana Dimitrova - - - Padraig Gleeson - - - - Potasium A-type conductance (transient, inactivating). Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 - - - - Maciej Lazarewicz - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Roger D Traub - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Yoana Dimitrova - UCL - - - - - Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington -Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels -J Neurophysiol 89: 909-921, 2003 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 - - - - Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. -J. Neurophysiol. 93, 2194-2232, 2005 - http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 - - - - A single column thalamocortical network model (Traub et al 2005) - http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Using broad range of voltages for sufficient coverage - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml deleted file mode 100644 index bc5e1b5..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - ChannelML file based on Traub et al. 2003 - - - - - Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse on single comp incl CaD - In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this - - - Padraig Gleeson - - - Yoana Dimitrova - - - - [Ca2+] dependent K AHP (afterhyperpolarization) conductance. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 - - - - Maciej Lazarewicz - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Roger D Traub - Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - Yoana Dimitrova - UCL - - - - - Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington -Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels -J Neurophysiol 89: 909-921, 2003 - http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 - - - - Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. -J. Neurophysiol. 93, 2194-2232, 2005 - http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 - - - - A single column thalamocortical network model (Traub et al 2005) - http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 - - - - - - - - - - - - - - - - - - - - - - - - - This will ensure more points in calcium dependence table - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p deleted file mode 100644 index 4395d62..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/ca1_minimal.p +++ /dev/null @@ -1,58 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - - -dend_3 none 0 220 0 3.84 -dend_5 . 0 220 0 3.84 -dend_6 . 0 220 0 3.84 -dend_8 . 0 110 0 3.84 - -soma dend_8 0 125 0 8.46 - - -apical_10 soma 0 120 0 4.0 -apical_11 apical_10 0 120 0 3 -apical_12 apical_11 0 120 0 3 -apical_13 apical_12 0 120 0 2.6 -apical_14 apical_13 0 120 0 2.6 -apical_15 apical_14 0 120 0 2.6 -apical_16 apical_15 0 120 0 2.6 -apical_17 apical_16 0 120 0 2.6 -apical_18 apical_17 0 120 0 2.6 -apical_19 apical_18 0 120 0 2.6 - -apical_11_1 apical_10 -60 60 0 2 -apical_11_2 apical_11_1 -60 60 0 1.8 -apical_11_3 apical_11_2 0 80 0 1.5 -apical_11_4 apical_11_3 0 80 0 1.5 - -apical_13_1 apical_12 40 40 0 1.0 -apical_13_2 apical_13_1 40 40 0 1.0 - -apical_14_1 apical_13_2 0 10 0 1.0 -apical_14_2 . 0 10 0 1.0 -apical_14_3 . 0 10 0 1.0 -apical_14_4 . 0 10 0 1.0 -apical_14_5 . 0 10 0 1.0 -apical_14_6 . 0 10 0 1.0 -apical_14_7 . 0 10 0 1.0 -apical_14_8 . 0 10 0 1.0 -apical_14_9 . 0 10 0 1.0 -apical_14_10 . 0 10 0 1.0 -apical_14_11 . 0 10 0 1.0 -apical_14_12 . 0 10 0 1.0 -apical_14_13 . 0 10 0 1.0 -apical_15_1 . 0 30 0 1.0 -apical_15_2 . 0 60 0 1.0 diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml deleted file mode 100644 index 141c1ac..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml deleted file mode 100644 index 38815ff..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/hd_minus73.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml deleted file mode 100644 index bb7c5af..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kad.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml deleted file mode 100644 index 58fdea0..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kap.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, - modified to account for Dax A Current --- M.Migliore Jun 1997, - modified to be used with cvode M.Migliore 2001 - - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml deleted file mode 100644 index 180c563..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/kdr.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, - modified to account for Dax et al., M.Migliore 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml deleted file mode 100644 index 5684d19..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/na3.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! - - Padraig Gleeson - - - - Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml deleted file mode 100644 index 3ca589c..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/nax.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - - - diff --git a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml b/examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml deleted file mode 100644 index 9abffeb..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/cells_channels/pas.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/paper-2015/Fig6_NetMultiscale/psd53.g b/examples/paper-2015/Fig6_NetMultiscale/psd53.g deleted file mode 100644 index e120a6a..0000000 --- a/examples/paper-2015/Fig6_NetMultiscale/psd53.g +++ /dev/null @@ -1,477 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Fri Jun 5 09:12:59 2015 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.0001 -CONTROLDT = 1 -PLOTDT = 0.2 -MAXTIME = 200 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-19 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ - -4 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ - -17 0 -simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ - -13 0 -simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ - 0 -simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ - 0 -simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ - -18 0 -simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump text /kinetics/geometry[7]/notes 0 "" -call /kinetics/geometry[7]/notes LOAD \ -"" -simundump text /kinetics/geometry[8]/notes 0 "" -call /kinetics/geometry[8]/notes LOAD \ -"" -simundump text /kinetics/geometry[9]/notes 0 "" -call /kinetics/geometry[9]/notes LOAD \ -"" -simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 -simundump text /kinetics/exocytosis/notes 0 "" -call /kinetics/exocytosis/notes LOAD \ -"" -simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 -simundump text /kinetics/endocytosis/notes 0 "" -call /kinetics/endocytosis/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/Rp/notes 0 "" -call /kinetics/PSD/Rp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ - 0 -4 -2 0 -simundump text /kinetics/PSD/P/notes 0 "" -call /kinetics/PSD/P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -6 -1 0 -simundump text /kinetics/PSD/P/P1/notes 0 "" -call /kinetics/PSD/P/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -2 -1 0 -simundump text /kinetics/PSD/P/P2/notes 0 "" -call /kinetics/PSD/P/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ - 49 0 -4 4 0 -simundump text /kinetics/PSD/KK/notes 0 "" -call /kinetics/PSD/KK/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -6 3 0 -simundump text /kinetics/PSD/KK/KK1/notes 0 "" -call /kinetics/PSD/KK/KK1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -2 3 0 -simundump text /kinetics/PSD/KK/KK2/notes 0 "" -call /kinetics/PSD/KK/KK2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - 28 0 0 1 0 -simundump text /kinetics/PSD/Rpp/notes 0 "" -call /kinetics/PSD/Rpp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R/notes 0 "" -call /kinetics/PSD/R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[4] blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry[7] blue 0 -12 5 0 -simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" -call /kinetics/PSD/psd_inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 -simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" -call /kinetics/PSD/psd_activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ - blue 0 -4 -4 0 -simundump text /kinetics/PSD/Ca.P/notes 0 "" -call /kinetics/PSD/Ca.P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -2 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -6 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ - /kinetics/geometry[8] 60 black -12 9 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 -simundump text /kinetics/PSD/Ca_reac/notes 0 "" -call /kinetics/PSD/Ca_reac/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry[5] 53 0 -15 2 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/Bulk/notes 0 "" -call /kinetics/Bulk/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry 29 yellow 2 -11 0 -simundump text /kinetics/Bulk/iRpp/notes 0 "" -call /kinetics/Bulk/iRpp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry blue yellow -2 -11 0 -simundump text /kinetics/Bulk/iRp/notes 0 "" -call /kinetics/Bulk/iRp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ - /kinetics/geometry 0 yellow -6 -11 0 -simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ - /kinetics/geometry 50 yellow -2 -8 0 -simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" -4 -9 0 -simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" -call /kinetics/Bulk/iKK/iKK1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" 0 -9 0 -simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" -call /kinetics/Bulk/iKK/iKK2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ - /kinetics/geometry 62 yellow -2 -14 0 -simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" -4 -13 0 -simundump text /kinetics/Bulk/iP/iP1/notes 0 "" -call /kinetics/Bulk/iP/iP1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" 0 -13 0 -simundump text /kinetics/Bulk/iP/iP2/notes 0 "" -call /kinetics/Bulk/iP/iP2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ - 43 yellow -3 -5 0 -simundump text /kinetics/Bulk/PKA/notes 0 "" -call /kinetics/Bulk/PKA/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" -4 -7 0 -simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" -call /kinetics/Bulk/PKA/PKA1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" 0 -7 0 -simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" -call /kinetics/Bulk/PKA/PKA2/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ - red 43 "" 1 -5 0 -simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" -call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ - -10 0 -simundump text /kinetics/Bulk/activate_PKA/notes 0 "" -call /kinetics/Bulk/activate_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ - /kinetics/geometry[2] 51 yellow -12 -6 0 -simundump text /kinetics/Bulk/inact_PKA/notes 0 "" -call /kinetics/Bulk/inact_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ - /kinetics/geometry[6] blue yellow -13 -18 0 -simundump text /kinetics/Bulk/inact_CaN/notes 0 "" -call /kinetics/Bulk/inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ - -16 0 -simundump text /kinetics/Bulk/activate_CaN/notes 0 "" -call /kinetics/Bulk/activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ - /kinetics/geometry[2] 50 yellow -15 -13 0 -simundump text /kinetics/Bulk/Ca/notes 0 "" -call /kinetics/Bulk/Ca/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[9] 60 black -12 -28 0 -simundump text /kinetics/Ca_dend_input/notes 0 "" -call /kinetics/Ca_dend_input/notes LOAD \ -"" -simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 -simundump text /kinetics/dend_Ca_reac/notes 0 "" -call /kinetics/dend_Ca_reac/notes LOAD \ -"" -simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ - 1 black -19 -25 0 -simundump text /kinetics/Ca/notes 0 "" -call /kinetics/Ca/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 -simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 -simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 41 0 0 1 -simundump xplot /graphs/conc1/PKA.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 43 0 0 1 -simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 -simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 -simundump xcoredraw /edit/draw 0 -21 7 -30 11 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"26 Nov 2014. psd51.g: based on psd50.g which was" \ -"based on psd41_back_dend.g." \ -"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ -"10x while retaining Keq." \ -"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ -"psd. Will use diffusion instead." \ -"05 June 2015. psd53.g updated further to use the same name (Ca)" \ -"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ -"" -addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n -addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n -addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n -addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n -addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n -addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A -addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B -addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n -addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B -addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B -addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n -addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n -addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A -addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 -addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 -addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 -addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue -addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -enddump -// End of dump - -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -complete_loading diff --git a/examples/paper-2015/README b/examples/paper-2015/README deleted file mode 100644 index bd856f3..0000000 --- a/examples/paper-2015/README +++ /dev/null @@ -1,33 +0,0 @@ -Here we have Python scripts that replicate most of the figures in the MOOSE -paper. Most of these can be accessed through the MooseGUI startup screen. -Some of these take a very long time. Approximate runtimes for a 2.2 GHz -core I7 processor are listed here. -Some of these figures/demos depend on the 3-D graphics visualization, which -may not be compiled into your distribution. - -The figure scripts are in the directories Fig_ -and are named Fig2A, Fig3D etc. - -Figure panel Runtime(s) Uses 3-D? Notes -2A 1500 No Generates 2 xplot files for - analysis by Fig2A_analysis.py -2C 6 Yes -2D 35 Yes -2E 5 Yes - -3ABC 2 No This is a GENESIS/KKIT model - definition file loaded by MOOSE. -3D 1 No There is a corresponding - Fig3_NEURON.py for the same - model in NEURON. - -4B 10 Yes -4CDEF 370 No -4GHIJ 300 No - -5A 20 Yes Pops up four windows. -5BCDE 240 No Text only output. - -6A 60 Yes Spines exaggerated for display -6BCDE 3900 No Dumps to SVG. - diff --git a/examples/paper-2015/rxdSpineSize.py b/examples/paper-2015/rxdSpineSize.py deleted file mode 100644 index c6fb828..0000000 --- a/examples/paper-2015/rxdSpineSize.py +++ /dev/null @@ -1,293 +0,0 @@ -################################################################## -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -## -## rxdSpineSize.py: Builds a cell with spines and a propagating reaction -## wave. Products diffuse into the spine and cause it to get bigger. -################################################################## -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose -import sys -sys.path.append( '../util' ) -import rdesigneur as rd -from PyQt4 import QtGui -import moogli -import moogli.extensions.moose -import matplotlib - -PI = 3.141592653 -ScalingForTesting = 10 -RM = 1.0 / ScalingForTesting -RA = 1.0 * ScalingForTesting -CM = 0.01 * ScalingForTesting -runtime = 100.0 -frameruntime = 1.0 -diffConst = 5e-12 -dendLen = 100e-6 -diffLen = 1.0e-6 -dendDia = 2e-6 -somaDia = 5e-6 -concInit = 0.001 # 1 millimolar -spineSpacing = 10e-6 -spineSpacingDistrib = 1e-6 -spineSize = 1.0 -spineSizeDistrib = 0.5 -spineAngle= numpy.pi / 2.0 -spineAngleDistrib = 0.0 - -def makeCellProto( name ): - elec = moose.Neuron( '/library/' + name ) - ecompt = [] - soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) - dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) - moose.connect( soma, 'axial', dend, 'raxial' ) - elec.buildSegmentTree() - -def makeChemProto( name ): - chem = moose.Neutral( '/library/' + name ) - comptVol = diffLen * dendDia * dendDia * PI / 4.0 - for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): - print 'making ', i - compt = moose.CubeMesh( chem.path + '/' + i[0] ) - compt.volume = i[1] - #x = moose.Pool( compt.path + '/x' ) - #y = moose.BufPool( compt.path + '/y' ) - z = moose.Pool( compt.path + '/z' ) - #x.concInit = 0.0 - #x.diffConst = diffConst - #y.concInit = concInit - z.concInit = 0.0 - z.diffConst = diffConst - nInit = comptVol * 6e23 * concInit - nstr = str( 1/nInit) - - x = moose.Pool( chem.path + '/dend/x' ) - x.diffConst = diffConst - func = moose.Function( x.path + '/func' ) - func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" - print func.expr - func.x.num = 1 - moose.connect( x, 'nOut', func.x[0], 'input' ) - moose.connect( func, 'valueOut', x, 'increment' ) - z = moose.element( '/library/' + name + '/dend/z' ) - reac = moose.Reac( '/library/' + name + '/dend/reac' ) - reac.Kf = 1 - reac.Kb = 10 - moose.connect( reac, 'sub', x, 'reac' ) - moose.connect( reac, 'prd', z, 'reac' ) - -def makeSpineProto2( name ): - spine = moose.Neutral( '/library/' + name ) - shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) - head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) - moose.connect( shaft, 'axial', head, 'raxial' ) - -def makeModel(): - moose.Neutral( '/library' ) - makeCellProto( 'cellProto' ) - makeChemProto( 'cProto' ) - makeSpineProto2( 'spine' ) - rdes = rd.rdesigneur( useGssa = False, \ - combineSegments = False, \ - stealCellFromLibrary = True, \ - meshLambda = 1e-6, \ - cellProto = [['cellProto', 'elec' ]] ,\ - spineProto = [['spineProto', 'spine' ]] ,\ - chemProto = [['cProto', 'chem' ]] ,\ - spineDistrib = [ \ - ['spine', '#', \ - 'spacing', str( spineSpacing ), \ - 'spacingDistrib', str( spineSpacingDistrib ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ], \ - chemDistrib = [ \ - [ "chem", "dend", "install", "1" ] \ - ], - adaptorList = [ \ - [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ - ] \ - ) - rdes.buildModel( '/model' ) - x = moose.vec( '/model/chem/dend/x' ) - x.concInit = 0.0 - for i in range( 0,20 ): - x[i].concInit = concInit - -def makePlot( name, srcVec, field ): - tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec - for i in zip(srcVec, tab): - moose.connect(i[1], 'requestOut', i[0], field) - return tab - - -def displayPlots(): - for x in moose.wildcardFind( '/graphs/#[0]' ): - tab = moose.vec( x ) - for i in range( len( tab ) ): - pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) - pylab.legend() - pylab.figure() - -def main(): - """ - This illustrates the use of rdesigneur to build a simple dendrite with - spines, and then to resize them using spine fields. These are the - fields that would be changed dynamically in a simulation with reactions - that affect spine geometry. - In this simulation there is a propagating reaction wave using a - highly abstracted equation, whose product diffuses into the spines and - makes them bigger. - """ - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - - eHead = moose.wildcardFind( '/model/elec/#head#' ) - oldDia = [ i.diameter for i in eHead ] - graphs = moose.Neutral( '/graphs' ) - #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) - #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) - makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) - makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) - makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) - makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) - makePlot( 'headDia', eHead, 'getDiameter' ) - - ''' - debug = moose.PyRun( '/pyrun' ) - debug.tick = 10 - debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" - ''' - moose.reinit() - moose.start( runtime ) - - displayPlots() - pylab.plot( oldDia, label = 'old Diameter' ) - pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) - pylab.legend() - pylab.show() - - app = QtGui.QApplication(sys.argv) - #widget = mv.MoogliViewer( '/model' ) - morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) - widget = moogli.MorphologyViewerWidget( morphology ) - widget.show() - return app.exec_() - quit() - -# Run the 'main' if this script is executed standalone. - -def showVisualization(): - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - - eHead = moose.wildcardFind( '/model/elec/#head#' ) - oldDia = [ i.diameter for i in eHead ] - graphs = moose.Neutral( '/graphs' ) - #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) - #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) - makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) - dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) - makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) - psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) - diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) - # print diaTab[0].vector[-1] - # return - dendrite = moose.element("/model/elec/dend") - dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] - # print dendrites - moose.reinit() - - spineHeads = moose.wildcardFind( '/model/elec/#head#') - # print moose.wildcardFind( '/model/elec/##') - - # print "dendZ", readValues(dendZ) - # print dendrite - - app = QtGui.QApplication(sys.argv) - viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) - viewer.showMaximized() - viewer.start() - return app.exec_() - - -def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): - network = moogli.extensions.moose.read(path=path, - vertices=15) - - dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] - chem_compt_group = dendrite.subdivide(len(dendZ)) - normalizer = moogli.utilities.normalizer(0.0, - 300.0, - clipleft=True, - clipright=True) - colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) - mapper = moogli.utilities.mapper(colormap, normalizer) - - def readValues(tables): - values = [] - for i in range(len(tables)): - values.append(tables[i].vector[-1]) - return values - - def prelude(view): - view.home() - view.pitch(math.pi / 3.0) - view.zoom(0.3) - network.groups["soma"].set("color", moogli.colors.RED) - network.groups["spine"].groups["shaft"].set("color", - moogli.colors.RED) - - def interlude(view): - moose.start(frameruntime) - network.groups["spine"].groups["head"].set("radius", - readValues(diaTab), - lambda x: x * 0.5e6) - network.groups["spine"].groups["head"].set("color", - readValues(psdZ), - mapper) - chem_compt_group.set("color", - readValues(dendZ), - mapper) - if moose.element("/clock").currentTime >= runtime: - view.stop() - - viewer = moogli.Viewer("Viewer") - viewer.attach_shapes(network.shapes.values()) - viewer.detach_shape(dendrite) - viewer.attach_shapes(chem_compt_group.shapes.values()) - - view = moogli.View("main-view", - prelude=prelude, - interlude=interlude) - cb = moogli.widgets.ColorBar(id="cb", - title="Molecule #", - text_color=moogli.colors.BLACK, - position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), - size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), - text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", - orientation=math.pi / 2.0, - text_character_size=20, - label_formatting_precision=0, - colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), - color_resolution=100, - scalar_range=moogli.geometry.Vec2f(0.0, - 300.0)) - view.attach_color_bar(cb) - viewer.attach_view(view) - return viewer - - -if __name__ == '__main__': - showVisualization() diff --git a/examples/parallelSolver/Fig2_v4.py b/examples/parallelSolver/Fig2_v4.py deleted file mode 100644 index 59169a1..0000000 --- a/examples/parallelSolver/Fig2_v4.py +++ /dev/null @@ -1,229 +0,0 @@ -# Generates time-series response to a Ca pulse for each of the models. No -# diffusion involved. - -import sys -import numpy as np -import pylab -import matplotlib.pyplot as plt -import moose -import abstrModelEqns2 -import rdesigneur as rd -import time - - -def singleCompt( name, params ): - mod = moose.copy( '/library/' + name + '/' + name, '/model' ) - A = moose.element( mod.path + '/A' ) - Z = moose.element( mod.path + '/Z' ) - Z.nInit = 1 - Ca = moose.element( mod.path + '/Ca' ) - CaStim = moose.element( Ca.path + '/CaStim' ) - runtime = params['preStimTime'] + params['stimWidth'] + params['postStimTime'] - steptime = 100 - - CaStim.expr += ' + x2 * (t > ' + str( runtime ) + ' ) * ( t < ' + str( runtime + steptime ) + ' )' - print CaStim.expr - tab = moose.Table2( '/model/' + name + '/Atab' ) - #for i in range( 10, 19 ): - #moose.setClock( i, 0.01 ) - ampl = moose.element( mod.path + '/ampl' ) - phase = moose.element( mod.path + '/phase' ) - moose.connect( tab, 'requestOut', A, 'getN' ) - ampl.nInit = params['stimAmplitude'] * 1 - phase.nInit = params['preStimTime'] - - ksolve = moose.Ksolve( mod.path + '/ksolve' ) - stoich = moose.Stoich( mod.path + '/stoich' ) - stoich.compartment = mod - stoich.ksolve = ksolve - stoich.path = mod.path + '/##' - runtime += 2 * steptime - - moose.reinit() - moose.start( runtime ) - t = np.arange( 0, runtime + 1e-9, tab.dt ) - return name, t, tab.vector - #pylab.plot( t, tab.vector, label='[A] (mM)' ) - - #pylab.show() - -def plotBoilerplate( panelTitle, plotPos, xlabel = ''): - ax = plt.subplot( 8,4,plotPos ) - #ax.xaxis.set_ticks( i[1] ) - #ax.locator_params( - ax.spines['top'].set_visible( False ) - ax.spines['right'].set_visible( False ) - ax.tick_params( direction = 'out' ) - if (((plotPos -1)/4) % 2) == 0: - ax.set_xticklabels([]) - else: - ax.set_xlabel( xlabel ) - for tick in ax.xaxis.get_major_ticks(): - tick.tick2On = False - for tick in ax.yaxis.get_major_ticks(): - tick.tick2On = False - - if (plotPos % 4) == 1: - plt.ylabel( 'conc', fontsize = 16 ) - # alternate way of doing this separately. - #plt.yaxis.label.size_size(16) - #plt.title( 'B' ) - ax.text( -0.3, 1, panelTitle, fontsize = 18, weight = 'bold', - transform=ax.transAxes ) - return ax - -def plotPanelB(): - panelB = [] - panelBticks = [] - panelB.append( singleCompt( 'fhn', abstrModelEqns2.makeFHN() ) ) - panelB.append( singleCompt( 'bis', abstrModelEqns2.makeBis() ) ) - panelB.append( singleCompt( 'negFB', abstrModelEqns2.makeNegFB() ) ) - panelB.append( singleCompt( 'negFF', abstrModelEqns2.makeNegFF() ) ) - - panelBticks.append( np.arange( 0, 4.00001, 1 ) ) - panelBticks.append( np.arange( 0, 4.00001, 1 ) ) - panelBticks.append( np.arange( 0, 15.00001, 5 ) ) - panelBticks.append( np.arange( 0, 6.00001, 2 ) ) - moose.delete( '/model' ) - - for i in zip( panelB, panelBticks, range( len( panelB ) ) ): - plotPos = i[2] + 5 - ax = plotBoilerplate( 'B', plotPos ) - plt.plot( i[0][1], i[0][2] ) - xmax = ax.get_xlim()[1] - #ax.xaxis.set_ticks( np.arange( 0, xmax, 50 ) ) - ax.xaxis.set_ticks( np.arange( 0, 200.001, 50 ) ) - ax.yaxis.set_ticks( i[1] ) - -def runPanelCDEF( name, dist, seqDt, numSpine, seq, stimAmpl ): - preStim = 10.0 - blanks = 20 - rdes = rd.rdesigneur( - useGssa = False, - turnOffElec = True, - chemPlotDt = 0.1, - #diffusionLength = params['diffusionLength'], - diffusionLength = 1e-6, - cellProto = [['cell', 'soma']], - chemProto = [['dend', name]], - chemDistrib = [['dend', 'soma', 'install', '1' ]], - plotList = [['soma', '1', 'dend' + '/A', 'n', '# of A']], - ) - rdes.buildModel() - #for i in range( 20 ): - #moose.setClock( i, 0.02 ) - A = moose.vec( '/model/chem/dend/A' ) - Z = moose.vec( '/model/chem/dend/Z' ) - print moose.element( '/model/chem/dend/A/Adot' ).expr - print moose.element( '/model/chem/dend/B/Bdot' ).expr - print moose.element( '/model/chem/dend/Ca/CaStim' ).expr - phase = moose.vec( '/model/chem/dend/phase' ) - ampl = moose.vec( '/model/chem/dend/ampl' ) - vel = moose.vec( '/model/chem/dend/vel' ) - vel.nInit = 1e-6 * seqDt - ampl.nInit = stimAmpl - stride = int( dist ) / numSpine - phase.nInit = 10000 - Z.nInit = 0 - for j in range( numSpine ): - k = blanks + j * stride - Z[k].nInit = 1 - phase[k].nInit = preStim + seq[j] * seqDt - moose.reinit() - runtime = 50 - snapshot = preStim + seqDt * (numSpine - 0.8) - print snapshot - #snapshot = 26 - moose.start( snapshot ) - avec = moose.vec( '/model/chem/dend/A' ).n - moose.start( runtime - snapshot ) - tvec = [] - for i in range( 5 ): - tab = moose.element( '/model/graphs/plot0[' + str( blanks + i * stride ) + ']' ) - dt = tab.dt - tvec.append( tab.vector ) - moose.delete( '/model' ) - return dt, tvec, avec - -def makePassiveSoma( name, length, diameter ): - elecid = moose.Neuron( '/library/' + name ) - dend = moose.Compartment( elecid.path + '/soma' ) - dend.diameter = diameter - dend.length = length - dend.x = length - return elecid - -def plotOnePanel( tLabel, dt, tplot, numSyn, plotRange, tick ): - t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt - ax = plotBoilerplate( tLabel, 1 + start ) - for i in range( 5 ): - plt.plot( t, tplot[i] ) - ax.yaxis.set_ticks( np.arange( 0, plotRange, tick ) ) - - -def plotPanelCDEF( seq, row ): - makePassiveSoma( 'cell', 100e-6, 10e-6 ) - start = (row -1) * 4 - tLabel = chr( ord( 'A' ) + row - 1 ) - xLabel = chr( ord( 'C' ) + row - 1 ) - xplot = [] - #dt, tplot, avec = runPanelCDEF( 'fhn', 15.0, 3.0, 5, seq, 0.4 ) - dt, tplot, avec = runPanelCDEF( 'fhn', 5.0, 0.5, 5, seq, 0.4 ) - xplot.append( avec ) - #plotOnePanel( dt, 'B', tplot, 5, 1.5, 0.5 ) - t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt - #ax = plotBoilerplate( tLabel, 1 + start ) - ax = plotBoilerplate( tLabel, 1 + start, 'Time (s)') - for i in range( 5 ): - plt.plot( t, tplot[i] ) - yl = ax.get_ylim()[1] - ax.yaxis.set_ticks( np.arange( 0, 4.0001, 1.0 ) ) - - #dt, tplot, avec = runPanelCDEF( 'bis', 5.0, 4.0, 5, seq, 1.0 ) - dt, tplot, avec = runPanelCDEF( 'bis', 15.0, 2.0, 5, seq, 1.0 ) - xplot.append( avec ) - t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt - ax = plotBoilerplate( tLabel, 2 + start, 'Time (s)' ) - for i in range( 5 ): - plt.plot( t, tplot[i] ) - yl = ax.get_ylim()[1] - ax.yaxis.set_ticks( np.arange( 0, 3.0001, 1.0 ) ) - - dt, tplot, avec = runPanelCDEF( 'negFB', 5.0, 2.0, 5, seq, 1.0 ) - xplot.append( avec ) - t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt - ax = plotBoilerplate( tLabel, 3 + start, 'Time (s)') - for i in range( 5 ): - plt.plot( t, tplot[i] ) - ax.yaxis.set_ticks( np.arange( 0, 10.00001, 5.0 ) ) - - dt, tplot, avec = runPanelCDEF( 'negFF', 5.0, 4.0, 5, seq, 1.0 ) - xplot.append( avec ) - t = np.arange( 0, len( tplot[0] ), 1.0 ) * dt - ax = plotBoilerplate( tLabel, 4 + start, 'Time (s)') - for i in range( 5 ): - plt.plot( t, tplot[i] ) - ax.yaxis.set_ticks( np.arange( 0, 5.00001, 2.0 ) ) - - for i in zip( range(4), (4.0, 3.0, 10, 4 ), (1, 1, 5, 2) ): - ax = plotBoilerplate( xLabel, 9 + start + i[0], 'Position( um)' ) - plt.plot( xplot[i[0]][:50] ) - ax.yaxis.set_ticks( np.arange( 0, i[1] * 1.0000001, i[2] ) ) - -################################################################## -if __name__ == '__main__': - moose.Neutral( '/library' ) - moose.Neutral( '/model' ) - - t1 = time.time() - fig = plt.figure( figsize = (10,10), facecolor='white' ) - fig.subplots_adjust( left = 0.18 ) - plotPanelB() - plotPanelCDEF( [0,1,2,3,4], 3 ) - plotPanelCDEF( [4,1,0,3,2], 4 ) - print ("Time taken = ", time.time() - t1) - plt.tight_layout() - - plt.show() - - diff --git a/examples/parallelSolver/README b/examples/parallelSolver/README deleted file mode 100644 index eaae614..0000000 --- a/examples/parallelSolver/README +++ /dev/null @@ -1,14 +0,0 @@ -Parallel solvers are implemented for Ksolve, Dsolve and Gsolve. - -Instructions to run the solvers in parallel. - -1) Clone the repository from github/BhallaLab/moose-core/tree/multithreaded - i.e., the multithreaded branch of the moose-core. - -2) Build the code, compile and run it. - -3) Set the environment variable NUM_THREADS to the number of threads with which you want to execute your script. - -4) The environment variable has to be set to make use of the parallelization. It runs with 1 thread by default(sequential). - -3) Run your python script regularly. The framwork will pick up the number of threads set by you and parallelize the solvers using them. diff --git a/examples/parallelSolver/abstrModelEqns2.py b/examples/parallelSolver/abstrModelEqns2.py deleted file mode 100644 index dbb6b4b..0000000 --- a/examples/parallelSolver/abstrModelEqns2.py +++ /dev/null @@ -1,219 +0,0 @@ -import re -import moose -# Equations here are: -# Adot = 1 -6A + 5A^2 - A^3, or spread out as: -# Adot = k0a + k1a.A + k2a.A.A + k3a.A.A.A + k4a.Ca.A/(1+A+10*B) - k5a.A.B -# Bdot = k1b.A - k2b.B -# - - -def parseExpr( expr, params, hasCa ): - if hasCa: - expr = expr.replace( 'Ca', 'x0' ) - expr = expr.replace( 'A', 'x1' ) - expr = expr.replace( 'B', 'x2' ) - else: - expr = expr.replace( 'Ca', 'x0' ) # happens in the negFF model - expr = expr.replace( 'A', 'x0' ) # This is the usual case. - expr = expr.replace( 'B', 'x1' ) - - parts = re.split( 'k', expr ) - ret = parts[0] - for i in parts[1:]: - ret += str( params[ 'k' + i[:2] ] ) - ret += i[2:] - - if hasCa: - return 'x3*( ' + ret + ')' - else: - return 'x2*( ' + ret + ')' - -def makeChemProto( name, Aexpr, Bexpr, params ): - sw = params['stimWidth'] - diffLength = params['diffusionLength'] - dca = params['diffConstA'] * diffLength * diffLength - dcb = params['diffConstB'] * diffLength * diffLength - - # Objects - chem = moose.Neutral( '/library/' + name ) - compt = moose.CubeMesh( '/library/' + name + '/' + name ) - A = moose.Pool( compt.path + '/A' ) - B = moose.Pool( compt.path + '/B' ) - Z = moose.BufPool( compt.path + '/Z' ) - Ca = moose.BufPool( compt.path + '/Ca' ) - phase = moose.BufPool( compt.path + '/phase' ) - vel = moose.BufPool( compt.path + '/vel' ) - ampl = moose.BufPool( compt.path + '/ampl' ) - Adot = moose.Function( A.path + '/Adot' ) - Bdot = moose.Function( B.path + '/Bdot' ) - CaStim = moose.Function( Ca.path + '/CaStim' ) - A.diffConst = dca - B.diffConst = dcb - - # Equations - - Adot.expr = parseExpr( Aexpr, params, True ) - Bdot.expr = parseExpr( Bexpr, params, False ) - CaStim.expr = 'x2 * exp( -((x0 - t)^2)/(2* ' + str(sw*sw) + ') )' - - print Adot.expr - print Bdot.expr - print CaStim.expr - - # Connections - Adot.x.num = 4 - moose.connect( Ca, 'nOut', Adot.x[0], 'input' ) - moose.connect( A, 'nOut', Adot.x[1], 'input' ) - moose.connect( B, 'nOut', Adot.x[2], 'input' ) - moose.connect( Z, 'nOut', Adot.x[3], 'input' ) - moose.connect( Adot, 'valueOut', A, 'increment' ) - - Bdot.x.num = 3 - if name == 'negFF': - moose.connect( Ca, 'nOut', Bdot.x[0], 'input' ) - else: - moose.connect( A, 'nOut', Bdot.x[0], 'input' ) - moose.connect( B, 'nOut', Bdot.x[1], 'input' ) - moose.connect( Z, 'nOut', Bdot.x[2], 'input' ) - moose.connect( Bdot, 'valueOut', B, 'increment' ) - - CaStim.x.num = 3 - moose.connect( phase, 'nOut', CaStim.x[0], 'input' ) - moose.connect( vel, 'nOut', CaStim.x[1], 'input' ) - moose.connect( ampl, 'nOut', CaStim.x[2], 'input' ) - moose.connect( CaStim, 'valueOut', Ca, 'setN' ) - - return compt - - -def makeBis(): - params = { - 'k0a':0.1, # Constant - 'k1a':-5.0, # Coeff for A - 'k2a':5.0, # Coeff for A^2 - 'k3a':-1.0, # Coeff for A^3 - 'k4a':10.0, # turnon of A by A and Ca - 'k5a':-5.0, # Turnoff of A by B - 'k1b':0.1, # turnon of B by A - 'k2b':-0.01, # Decay rate of B - 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. - 'dendDiameter': 10e-6, # Diameter of section of dendrite in model - 'dendLength': 100e-6, # Length of section of dendrite in model - 'diffConstA':1.0, # Diffusion constant of A - 'diffConstB':1.0, # Diffusion constant of B - 'stimWidth' :5.0, # Stimulus width in seconds - 'stimAmplitude':1.0, # Stimulus amplitude, arb units. From FHN review - 'blankVoxelsAtEnd':10, # of voxels to leave blank at end of cylinder - 'preStimTime':40.0, # Time to run before turning on stimulus. - 'postStimTime':80.0, # Time to run after stimulus. ~3x decay time - 'settleTime':20.0, # Settling time of response, after stimulus. - # To include in analysis of total response over - # entire dendrite. - 'fnumber':1, # Number to append to fname - } - - makeChemProto( 'bis', - 'k0a + k1a*A + k2a*A*A + k3a*A*A*A + k4a*Ca*A/(1+A+10*B) + k5a*A*B', - 'k1b*A*A + k2b*B', - params ) - return params - -def makeFHN(): - params = { - 'k_t':2.5, # Time-const. - 'k_a':0.7, # Coeff1 - 'k_b':0.8, # Coeff2 - 'kxa': 2.0, # Offset for V for FHN eqns. - 'kxb': 0.8, # Offset for W for FHN eqns. - 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. - 'dendDiameter': 10e-6, # Diameter of section of dendrite in model - 'dendLength': 100e-6, # Length of section of dendrite in model - 'diffConstA':7.5, # Diffusion constant of A - 'diffConstB':5.0, # Diffusion constant of B - 'stimWidth' :1.0, # Stimulus width in seconds - 'stimAmplitude':0.4, # Stimulus amplitude, arb units. From FHN review - 'blankVoxelsAtEnd':10, # of voxels to leave blank at end of cylinder - 'preStimTime':30.0, # Time to run before turning on stimulus. - 'postStimTime':40.0, # Time to run after stimulus. ~3x decay time - 'settleTime':20.0, # Settling time of response, after stimulus. - # To include in analysis of total response over - # entire dendrite. - 'fnumber': 1, # Number to append to fname - } - makeChemProto( 'fhn', - '5.0*(A - kxa - (A-kxa)^3/3 - (B-kxb) + Ca)', - '(A-kxa + k_a - k_b*(B-kxb))/k_t', - params ) - return params - - -def makeNegFB(): - params = { - 'k1a':-0.1, # Coeff for decay of A, slow. - 'k2a':-0.2, # Coeff for turnoff of A by B, medium. - 'k3a':10.0, # turnon of A by Ca, fast. - 'k1b':0.2, # turnon of B by A, medium - 'k2b':-0.1, # Decay rate of B, slow - 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. - 'dendDiameter': 10e-6, # Diameter of section of dendrite in model - 'dendLength': 100e-6, # Length of section of dendrite in model - 'diffConstA':0.5, # Diffusion constant of A - 'diffConstB':1.0, # Diffusion constant of B - 'stimWidth' :1.0, # Stimulus width in seconds - 'stimAmplitude':1.0, # Stimulus amplitude, arb units. From FHN review - 'blankVoxelsAtEnd':10, #of voxels to leave blank at end of cylinder - 'preStimTime':10.0, # Time to run before turning on stimulus. - 'postStimTime':60.0, # Time to run after stimulus. ~3x decay time - 'settleTime':20.0, # Settling time of response, after stimulus. - # To include in analysis of total response over - # entire dendrite. - 'fnumber':1, # Number to append to fname - } - makeChemProto( 'negFB', - 'k1a*A + k2a*A*B + k3a*Ca', - 'k1b*A + k2b*B', - params ) - return params - - -def makeNegFF(): - params = { - 'k1a':-0.1, # Coeff for decay of A, slow. - 'k2a':-1.0, # Coeff for turnoff of A by B, medium. - 'k3a':10.0, # turnon of A by Ca, fast. - 'k1b':2.0, # turnon of B by Ca, medium - 'k2b':-0.1, # Decay rate of B, slow - 'diffusionLength':1.0e-6, # Diffusion characteristic length, used as voxel length too. - 'dendDiameter': 10e-6, # Diameter of section of dendrite in model - 'dendLength': 100e-6, # Length of section of dendrite in model - 'diffConstA':1.0, # Diffusion constant of A - 'diffConstB':2.0, # Diffusion constant of B - 'stimWidth' :1.0, # Stimulus width in seconds - 'stimAmplitude':1.0, # Stimulus amplitude, arb units. From FHN review - 'blankVoxelsAtEnd':10, # of voxels to leave blank at end of cylinder - 'preStimTime':10.0, # Time to run before turning on stimulus. - 'postStimTime':60.0, # Time to run after stimulus. ~3x decay time - 'settleTime':20.0, # Settling time of response, after stimulus. - # To include in analysis of total response over - # entire dendrite. - 'fnumber':1, # Number to append to fname - } - makeChemProto( 'negFF', - 'k1a*A + k2a*A*B + k3a*Ca', - 'k1b*Ca + k2b*B', - params ) - - return params - -if __name__ == '__main__': - moose.Neutral( '/library' ) - print "Making Bistable model" - makeBis() - print "Making FHN model" - makeFHN() - print "Making Negative Feedback model" - makeNegFB() - print "Making Negative Feedforward model" - makeNegFF() - - diff --git a/examples/passive/passive_soma.py b/examples/passive/passive_soma.py deleted file mode 100644 index 1a7a74a..0000000 --- a/examples/passive/passive_soma.py +++ /dev/null @@ -1,63 +0,0 @@ -""" passive_soma.py: - -In this script, we simulate a single compartment soma in MOOSE. - -This soma does not have any ion-channels, only passive properties. It should -behave like a RC circuit. A current is injected into soma. - -""" - -__author__ = "Dilawar Singh" -__copyright__ = "Copyright 2015, Dilawar Singh and NCBS Bangalore" -__credits__ = ["NCBS Bangalore"] -__license__ = "GNU GPL" -__version__ = "1.0.0" -__maintainer__ = "Dilawar Singh" -__email__ = "dilawars@ncbs.res.in" -__status__ = "Development" - - -import moose -import pylab - - -model = None -soma = None -vmtab = None - -def buildModel(): - global model - global soma - model = moose.Neutral('/model') - soma = moose.Compartment('/model/soma') - soma.Em = -60e-3 - soma.Rm = 1e10 - soma.Cm = 1e-10 - return model - -def stimulus(): - global soma - global vmtab - pulse = moose.PulseGen('/model/pulse') - pulse.delay[0] = 50e-3 - pulse.width[0] = 100e-3 - pulse.level[0] = 1e-9 - pulse.delay[1] = 1e9 - vmtab = moose.Table('/soma_Vm') - moose.connect(pulse, 'output', soma, 'injectMsg') - moose.connect(vmtab, 'requestOut', soma , 'getVm') - -def main(): - global vmtab - buildModel() - stimulus() - moose.reinit() - t = 500e-2 - moose.start(t) - time_vector = pylab.linspace(0, t, len(vmtab.vector)) - pylab.plot(time_vector, vmtab.vector) - pylab.show( ) - # pylab.savefig('soma_passive.png') - -if __name__ == '__main__': - main() diff --git a/examples/rall_1964/rall64.py b/examples/rall_1964/rall64.py deleted file mode 100755 index 7b016ad..0000000 --- a/examples/rall_1964/rall64.py +++ /dev/null @@ -1,285 +0,0 @@ -# rall64.py --- -# -# Filename: rall64.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri May 23 16:33:43 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Implementation of Rall 1964 model of dendritic branching. All units -SI.""" - -import sys - -import math -import pylab -import moose -from moose import utils as mu - -RM = 0.4 # specific membrane resistivity unit: Ohm m2 -RA = 1.0 # specific cytoplasmic resistivity unit: Ohm m -CM = 0.01 # specific membrane capacitance unit: Farad/m2 -diameter = 1e-6 - -lambda_ = math.sqrt(0.25 * diameter * RM/RA) # electrotonic length -tau = RM * CM # Membrane time constant - -length = 0.2 * lambda_ # Rall used 10 compartments of `0.2 * lambda` length each - -Em = -65e-3 # Leak reversal potential -initVm = Em # Initial membrane potential -Rm = RM / (math.pi * diameter * length) # Total membrane resistance -Cm = CM * (math.pi * diameter * length) # Total membrane capacitance -# Total axial (cytoplasmic) resistance between compartments -Ra = RA * length / (math.pi * diameter * diameter / 4.0) - -Ek = Em + 1e-3 - -print 'tau =', tau, 'lambda =', lambda_ - -# Rall used `0.05 * tau`, but that does not reproduce in our -# case. Why? Sym vs Asym comp?? -dt = 0.01 * tau -simtime = 2.5 * tau -inject_time = 0.25 * tau - -model = moose.Neutral('/model') -data = moose.Neutral('/data') - -num_comp = 10 - -def make_compartment(path): - """Create a compartment at `path` with standard property values.""" - comp = moose.Compartment(path) - comp.Em = Em - comp.Rm = Rm - comp.Cm = Cm - comp.Ra = Ra - comp.initVm = initVm - comp.diameter = diameter - comp.length = length - return comp - -def make_cable(path, num_comp): - """Create a cable made of `nump_comp` identical compartments under - `path`. - - The compartments will be named c0 to c{num_comp} and returned in a - list. - - """ - cable_container = moose.Neutral(path) - comp_list = [] - for ii in range(num_comp): - comp_path = '%s/c%d' % (path, ii) - comp = make_compartment(comp_path) - if len(comp_list) > 0: - # connect to the last compartment via axial resistance - moose.connect(comp_list[-1], 'raxial', comp, 'axial') - comp_list.append(comp) - return comp_list - -def insert_channel(comp, ek=Ek): - """Insert a constant conductance channel on compartment `comp`. Set - the channel reversal potential to `Ek` - - """ - chan = moose.Leakage('%s/chan' % (comp.path)) - chan.Ek = ek - moose.connect(chan, 'channel', comp, 'channel') - return chan - -def insert_Vm_probe(probename, comp): - """Insert a recorder for Vm in compartment `comp`.""" - probe = moose.Table('/data/%s' % (probename)) - moose.connect(probe, 'requestOut', comp, 'getVm') - return probe - -# Scheduling -def schedule(): - moose.setClock(0, dt) - moose.setClock(1, dt) - moose.setClock(2, dt) - moose.setClock(3, dt) - moose.useClock(0, '/model/##[ISA=Compartment]', 'init') - moose.useClock(1, '/model/##', 'process') - moose.useClock(3, '/data/##', 'process') - moose.reinit() - -def setup_model_fig6(): - """Setup the model and recording for fig 6 experiment. This will - insert channels in specific compartments for each cable.""" - # Figure 6A - cable_6a = make_cable('/model/cable_6a', num_comp) - chan_6a_1 = insert_channel(cable_6a[1]) - chan_6a_2 = insert_channel(cable_6a[2]) - soma_Vm_6a = insert_Vm_probe('soma_Vm_6a', cable_6a[0]) - - # Figure 6B - cable_6b = make_cable('/model/cable_6b', num_comp) - chan_6b_1 = insert_channel(cable_6b[3]) - chan_6b_2 = insert_channel(cable_6b[4]) - soma_Vm_6b = insert_Vm_probe('soma_Vm_6b', cable_6b[0]) - - # Figure 6C - cable_6c = make_cable('/model/cable_6c', num_comp) - chan_6c_1 = insert_channel(cable_6c[5]) - chan_6c_2 = insert_channel(cable_6c[6]) - soma_Vm_6c = insert_Vm_probe('soma_Vm_6c', cable_6c[0]) - - # Figure 6D - cable_6d = make_cable('/model/cable_6d', num_comp) - chan_6d_1 = insert_channel(cable_6d[7]) - chan_6d_2 = insert_channel(cable_6d[8]) - soma_Vm_6d = insert_Vm_probe('soma_Vm_6d', cable_6d[0]) - return [soma_Vm_6a, soma_Vm_6b, soma_Vm_6c, soma_Vm_6d] - -def run_model_fig6(): - """Do a simulation for fig6 and plot data.""" - for ch in moose.wildcardFind('/model/##[ISA=ChanBase]'): - ch.Gk = 1.0/Rm - print 'Starting for', inject_time - moose.start(inject_time) - for ch in moose.wildcardFind('/model/##[ISA=ChanBase]'): - ch.Gk = 0.0 - moose.start(simtime - inject_time) - -def plot_fig6(vm): - ax_6a = pylab.subplot(411) - ax_6a.plot(pylab.linspace(0, simtime / tau, - len(vm[0].vector)), - (vm[0].vector - Em)/(Ek - Em)) - ax_6a.set_title('6A') - ax_6b = pylab.subplot(412, sharex=ax_6a, sharey=ax_6a) - ax_6b.plot(pylab.linspace(0, simtime / tau, len(vm[1].vector)), - (vm[1].vector - Em)/(Ek - Em)) - ax_6b.set_title('6B') - ax_6c = pylab.subplot(413, sharex=ax_6a, sharey=ax_6a) - ax_6c.plot(pylab.linspace(0, simtime / tau, len(vm[2].vector)), - (vm[2].vector - Em)/(Ek - Em)) - ax_6c.set_title('6C') - ax_6d = pylab.subplot(414, sharex=ax_6a, sharey=ax_6a) - ax_6d.plot(pylab.linspace(0, simtime / tau, len(vm[3].vector)), - (vm[3].vector - Em)/(Ek - Em)) - ax_6d.set_title('6D') - pylab.tight_layout() - pylab.show() - -def simulate_fig6(): - vm_tables = setup_model_fig6() - schedule() - run_model_fig6() - plot_fig6(vm_tables) - -def setup_model_fig7(): - cable_1 = make_cable('/model/cable_7_1', num_comp) - chans_1 = [] - for ii in range(1, 9): - chan = insert_channel(cable_1[ii]) - chans_1.append(chan) - cable_2 = make_cable('/model/cable_7_2', num_comp) - chans_2 = [] - for ii in range(1, 9): - chan = insert_channel(cable_2[ii]) - chans_2.append(chan) - cable_3 = make_cable('/model/cable_7_3', num_comp) - chans_3 = [] - for ii in range(1, 9): - chan = insert_channel(cable_3[ii]) - chans_3.append(chan) - # chan.Gk = 0.25 / Rm - soma_Vm_1 = insert_Vm_probe('ABCD', cable_1[0]) - soma_Vm_2 = insert_Vm_probe('DCBA', cable_2[0]) - soma_Vm_3 = insert_Vm_probe('control', cable_3[0]) - return (chans_1, chans_2, chans_3), (soma_Vm_1, soma_Vm_2, soma_Vm_3) - -def run_model_fig7(chans_1, chans_2, chans_3): - to_run = simtime - delta_t = 0.25 * tau - for ii in range(0, len(chans_1), 2): - print ii - print '-----------------' - chans_1[ii].Gk = 1 / Rm - chans_1[ii+1].Gk = 1 / Rm - chans_2[-ii-1].Gk = 1 / Rm - chans_2[-ii-2].Gk = 1 / Rm - for chan in chans_3: - chan.Gk = 0.25 / Rm - - for chan in chans_1: - print chan.Gk, - print - for chan in chans_2: - print chan.Gk, - print - moose.start(delta_t) - for chan in chans_1: - chan.Gk = 0.0 - for chan in chans_2: - chan.Gk = 0.0 - to_run = to_run - delta_t - for chan in chans_3: - chan.Gk = 0.0 - moose.start(to_run) - -def plot_fig7(vm): - ax_7 = pylab.subplot(111) - ax_7.plot(pylab.linspace(0, simtime/tau, len(vm[0].vector)), - (vm[0].vector-Em)/(Ek - Em), label='(1,2)->(3,4)->(5,6)->(7,8)') - ax_7.plot(pylab.linspace(0, simtime/tau, len(vm[1].vector)), - (vm[1].vector-Em)/(Ek - Em), label='(7,8)->(5,6)->(3,4)->(1,2)') - ax_7.plot(pylab.linspace(0, simtime/tau, len(vm[2].vector)), - (vm[2].vector-Em)/(Ek - Em), label='control') - pylab.legend() - pylab.show() - -def simulate_fig7(): - chans_list, vm_list = setup_model_fig7() - schedule() - run_model_fig7(*chans_list) # * converts list to args - plot_fig7(vm_list) - -if __name__ == '__main__': - # simulate_fig6() - simulate_fig7() - -# -# rall64.py ends here diff --git a/examples/rall_1964/rall64_graphic.py b/examples/rall_1964/rall64_graphic.py deleted file mode 100755 index a8b9d17..0000000 --- a/examples/rall_1964/rall64_graphic.py +++ /dev/null @@ -1,144 +0,0 @@ -# rall64_graphic.py --- -# -# Filename: rall64_graphic.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Thu May 29 13:18:12 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""Rall 1964 demo with fancy graphics""" - -from matplotlib import pyplot as plt -from matplotlib import animation as anim -import numpy as np -from rall64 import * - -fig = plt.figure('Rall 1964, Figure 7') -fig.suptitle('Rall 1964, Figure 7') -ax_model = fig.add_subplot(2, 1, 1) -ax_data = fig.add_subplot(2, 1, 2) - -colors = ['darkblue', 'darkgreen', 'darkred'] -active_colors = ['lightblue', 'lightgreen', 'lightpink'] -radius = 0.5 -length = 0.8 -cables = [] -lines = [] -for yy in range(3): - cables.append([]) - for xx in range(10): - patch = ax_model.add_patch(plt.Rectangle((xx, 2*yy), length, 2 * radius, color=colors[yy])) - cables[yy].append(patch) - txt = ax_model.annotate('%d' % (xx), (xx, 2*yy), xytext=(xx + length/2.0, 2 * yy + radius), color='gray') -ax_model.set_xlim((-1, xx + 1)) -ax_model.set_ylim((-1, 2 * yy + 3 * radius)) -# ax_model.xaxis.set_visible(False) -# ax_model.yaxis.set_visible(False) -ax_model.set_axis_off() -stim_no = 0 -stim_count = 4 -clock = moose.element('/clock') -chan_list, vm_list = setup_model_fig7() -stim_t = 0.25 * tau -update_dt = dt -xdata = [[],[],[]] -ydata = [[],[],[]] - -def update(xx): - global stim_no, chan_list, vm_list, cables, clock - if stim_no < stim_count: - cables[0][2 * stim_no+1].set_facecolor(active_colors[0]) - cables[0][2 * stim_no+1].set_edgecolor('y') - cables[0][2 * stim_no + 2].set_facecolor(active_colors[0]) - cables[0][2 * stim_no + 2].set_edgecolor('y') - cables[1][- 2 * stim_no - 2].set_facecolor(active_colors[1]) - cables[1][- 2 * stim_no - 2].set_edgecolor('y') - cables[1][- 2 * stim_no - 3].set_facecolor(active_colors[1]) - cables[1][- 2 * stim_no - 3].set_edgecolor('y') - for patch in cables[2][1:-1]: - patch.set_facecolor(active_colors[2]) - patch.set_edgecolor('y') - if clock.currentTime < stim_t * (stim_no + 1): - chan_list[0][2 * stim_no].Gk = 1 / Rm - chan_list[0][2 * stim_no + 1].Gk = 1 / Rm - chan_list[1][- 2 * stim_no - 1].Gk = 1 / Rm - chan_list[1][- 2 * stim_no - 2].Gk = 1 / Rm - for chan in chan_list[2]: - chan.Gk = 0.25 / Rm - moose.start(update_dt) - else: - stim_no += 1 - for chans in chan_list: - for ch in chans: - ch.Gk = 0.0 - for ii in range(len(cables)): - for patch in cables[ii]: - patch.set_color(colors[ii]) - elif clock.currentTime < simtime: - - moose.start(update_dt) - for patch in cables[0]: - patch.set_facecolor(colors[0]) - for patch in cables[1]: - patch.set_facecolor(colors[1]) - for ii, (tmp_lines, vm, color) in enumerate(zip(lines, vm_list, colors)): - for line in tmp_lines: - line.set_data(np.linspace(0, clock.currentTime, len(vm.vector))/tau, (vm.vector - Em) / (Ek - Em)) - - -# """A variation of rall64.run_model_fig7 with visualization of the compartments.""" -lines.append(ax_data.plot([0], [0], label='(1,2)->(3,4)->(5,6)->(7,8)', color=colors[0])) -lines.append(ax_data.plot([0], [0], label='(7,8)->(5,6)->(3,4)->(1,2)', color=colors[1])) -lines.append(ax_data.plot([0], [0], label='control', color=colors[2])) -ax_data.set_xlim(0, simtime/tau) -ax_data.set_ylim(0, 0.15) -ax_data.set_xlabel('Time (t/tau)') -ax_data.set_ylabel('Membrane voltage (Vm - Em)/(Ek - Vm)') -print lines -plt.legend() -schedule() -fanim = anim.FuncAnimation(fig, update, fargs=None, interval=25, repeat=False) -plt.show() - - -# -# rall64_graphic.py ends here diff --git a/examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py b/examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py deleted file mode 100644 index ee0ab8a..0000000 --- a/examples/snippets/GraupnerBrunel2012_STDPfromCaPlasticity.py +++ /dev/null @@ -1,314 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -Simulate a pseudo-STDP protocol and plot the STDP kernel -that emerges from Ca plasticity of Graupner and Brunel 2012. - -Author: Aditya Gilra, NCBS, Bangalore, October, 2014. -''' - -import moose -from pylab import * - -# ########################################### -# Neuron models -# ########################################### - -## Leaky integrate and fire neuron -Vrest = -65e-3 # V # resting potential -Vt_base = -45e-3 # V # threshold -Vreset = -55e-3 # V # in current steps, Vreset is same as pedestal -R = 1e8 # Ohm -tau = 10e-3 # s -refrT = 2e-3 # s - -# ########################################### -# Initialize neuron group -# ########################################### - -## two neurons: index 0 will be presynaptic, 1 will be postsynaptic -network = moose.LIF( 'network', 2 ); -moose.le( '/network' ) -network.vec.Em = Vrest -network.vec.thresh = Vt_base -network.vec.refractoryPeriod = refrT -network.vec.Rm = R -network.vec.vReset = Vreset -network.vec.Cm = tau/R -network.vec.inject = 0. -network.vec.initVm = Vrest - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -### Cortical slice values -- Table Suppl 2 in Graupner & Brunel 2012 -### Also used in Higgins et al 2014 -#tauCa = 22.6936e-3 # s # Ca decay time scale -#tauSyn = 346.3615 # s # synaptic plasticity time scale -### in vitro values in Higgins et al 2014, faster plasticity -#CaPre = 0.56175 # mM -#CaPost = 1.2964 # mM -### in vivo values in Higgins et al 2014, slower plasticity -##CaPre = 0.33705 # mM -##CaPost = 0.74378 # mM -#delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - ## proxy for rise-time of NMDA -#thetaD = 1.0 # mM # depression threshold for Ca -#thetaP = 1.3 # mM # potentiation threshold for Ca -#gammaD = 331.909 # factor for depression term -#gammaP = 725.085 # factor for potentiation term - -#J = 5e-3 # V # delta function synapse, adds to Vm -#weight = 0.43 # initial synaptic weight - ## gammaP/(gammaP+gammaD) = eq weight w/o noise - ## see eqn (22), noiseSD also appears - ## but doesn't work here, - ## weights away from 0.4 - 0.5 screw up the STDP rule!! - -#bistable = True # if bistable is True, use bistable potential for weights -#noisy = False # use noisy weight updates given by noiseSD -#noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) - -######################################## - -## DP STDP curve (Fig 2C) values -- Table Suppl 1 in Graupner & Brunel 2012 -tauCa = 20e-3 # s # Ca decay time scale -tauSyn = 150.0 # s # synaptic plasticity time scale -CaPre = 1.0 # arb -CaPost = 2.0 # arb -delayD = 13.7e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 200.0 # factor for depression term -gammaP = 321.808 # factor for potentiation term - -J = 5e-3 # V # delta function synapse, adds to Vm -weight = 0.5 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # see eqn (22), noiseSD also appears - # but doesn't work here, - # weights away from 0.4 - 0.5 screw up the STDP rule!! - -bistable = True # if bistable is True, use bistable potential for weights -noisy = False # use noisy weight updates given by noiseSD -noiseSD = 2.8284 # if noisy, use noiseSD (3.3501 in Higgins et al 2014) - -########################################## - -syn = moose.GraupnerBrunel2012CaPlasticitySynHandler( '/network/syn' ) -syn.numSynapses = 1 # 1 synapse - # many pre-synaptic inputs can connect to a synapse -# synapse onto postsynaptic neuron -moose.connect( syn, 'activationOut', network.vec[1], 'activation' ) - -# synapse from presynaptic neuron -moose.connect( network.vec[0],'spikeOut', syn.synapse[0], 'addSpike') - -# post-synaptic spikes also needed for STDP -moose.connect( network.vec[1], 'spikeOut', syn, 'addPostSpike') - -syn.synapse[0].delay = 0.0 -syn.synapse[0].weight = weight -syn.CaInit = 0.0 -syn.tauCa = tauCa -syn.tauSyn = tauSyn -syn.CaPre = CaPre -syn.CaPost = CaPost -syn.delayD = delayD -syn.thetaD = thetaD -syn.thetaP = thetaP -syn.gammaD = gammaD -syn.gammaP = gammaP -syn.weightScale = J # weight ~1, weightScale ~ J - # weight*weightScale is activation, - # i.e. delta-fn added to postsynaptic Vm - -syn.weightMax = 1.0 # bounds on the weight -syn.weightMin = 0. - -syn.noisy = noisy -syn.noiseSD = noiseSD -syn.bistable = bistable - -# ########################################### -# Setting up tables -# ########################################### - -Vms = moose.Table( '/plotVms', 2 ) -moose.connect( network, 'VmOut', Vms, 'input', 'OneToOne') -spikes = moose.Table( '/plotSpikes', 2 ) -moose.connect( network, 'spikeOut', spikes, 'input', 'OneToOne') -CaTable = moose.Table( '/plotCa', 1 ) -moose.connect( CaTable, 'requestOut', syn, 'getCa') -WtTable = moose.Table( '/plotWeight', 1 ) -moose.connect( WtTable, 'requestOut', syn.synapse[0], 'getWeight') - -# ########################################### -# Simulate the STDP curve with spaced pre-post spike pairs -# ########################################### - -dt = 1e-3 # s -# moose simulation -moose.useClock( 0, '/network/syn', 'process' ) -moose.useClock( 1, '/network', 'process' ) -moose.useClock( 2, '/plotSpikes', 'process' ) -moose.useClock( 3, '/plotVms', 'process' ) -moose.useClock( 3, '/plotCa', 'process' ) -moose.useClock( 3, '/plotWeight', 'process' ) -moose.setClock( 0, dt ) -moose.setClock( 1, dt ) -moose.setClock( 2, dt ) -moose.setClock( 3, dt ) -moose.setClock( 9, dt ) -moose.reinit() - -# function to make the aPlus and aMinus settle to equilibrium values -settletime = 100e-3 # s -def reset_settle(): - """ Call this between every pre-post pair - to reset the neurons and make them settle to rest. - """ - syn.synapse[0].weight = weight - syn.Ca = 0.0 - moose.start(settletime) - # Ca gets a jump at pre-spike+delayD - # So this event can occur during settletime - # So set Ca and weight once more after settletime - syn.synapse[0].weight = weight - syn.Ca = 0.0 - -# function to inject a sharp current pulse to make neuron spike -# immediately at a given time step -def make_neuron_spike(nrnidx,I=1e-7,duration=1e-3): - """ Inject a brief current pulse to - make a neuron spike - """ - network.vec[nrnidx].inject = I - moose.start(duration) - network.vec[nrnidx].inject = 0. - -dwlist_neg = [] -ddt = 2e-3 # s -# since CaPlasticitySynHandler is event based -# multiple pairs are needed for Ca to be registered above threshold -# Values from Fig 2, last line of legend -numpairs = 60 # number of spike parts per deltat -t_between_pairs = 1.0 # time between each spike pair -t_extent = 100e-3 # s # STDP kernel extent, - # t_extent > t_between_pairs/2 inverts pre-post pairing! -# dt = tpost - tpre -# negative dt corresponds to post before pre -print '-----------------------------------------------' -for deltat in arange(t_extent,0.0,-ddt): - reset_settle() - for i in range(numpairs): - # post neuron spike - make_neuron_spike(1) - moose.start(deltat) - # pre neuron spike after deltat - make_neuron_spike(0) - moose.start(t_between_pairs) # weight changes after pre-spike+delayD - # must run for at least delayD after pre-spike - dw = ( syn.synapse[0].weight - weight ) / weight - print 'post before pre, dt = %1.3f s, dw/w = %1.3f'%(-deltat,dw) - dwlist_neg.append(dw) -print '-----------------------------------------------' -# positive dt corresponds to pre before post -dwlist_pos = [] -for deltat in arange(ddt,t_extent+ddt,ddt): - reset_settle() - for i in range(numpairs): - # pre neuron spike - make_neuron_spike(0) - moose.start(deltat) - # post neuron spike after deltat - make_neuron_spike(1) - moose.start(t_between_pairs) - dw = ( syn.synapse[0].weight - weight ) / weight - print 'pre before post, dt = %1.3f s, dw/w = %1.3f'%(deltat,dw) - dwlist_pos.append(dw) -print '-----------------------------------------------' -print 'Each of the above pre-post pairs was repeated',\ - numpairs,'times, with',t_between_pairs,'s between pairs.' -print -print 'Due to event based updates, Ca decays suddenly at events:' -print 'pre-spike, pre-spike + delayD, and post-spike;' -print 'apart from the usual CaPre and CaPost jumps at' -print 'pre-spike + delayD and post-spike respectively.' -print 'Because of the event based update, multiple pre-post pairs are used.' -print -print 'If you reduce the t_between_pairs,' -print ' you\'ll see potentiation for the LTD part without using any triplet rule!' -print -print "If you turn on noise, the weights fluctuate too much," -print " not sure if there's a bug in my noise implementation." -print '-----------------------------------------------' - -# ########################################### -# Plot the simulated Vm-s and STDP curve -# ########################################### - -# insert spikes so that Vm reset doesn't look weird -Vmseries0 = Vms.vec[0].vector -numsteps = len(Vmseries0) -for t in spikes.vec[0].vector: - Vmseries0[int(t/dt)-1] = 30e-3 # V -Vmseries1 = Vms.vec[1].vector -for t in spikes.vec[1].vector: - Vmseries1[int(t/dt)-1] = 30e-3 # V - -timeseries = linspace(0.,1000*numsteps*dt,numsteps) -# Voltage plots -figure(facecolor='w') -plot(timeseries,Vmseries0,color='r') # pre neuron's vm -plot(timeseries,Vmseries1,color='b') # post neuron's vm -xlabel('time (ms)') -ylabel('Vm (V)') -title("pre (r) and post (b) neurons' Vm") - -# Ca plots for the synapse -figure(facecolor='w') -plot(timeseries,CaTable.vector[:len(timeseries)],color='r') -plot((timeseries[0],timeseries[-1]),(thetaP,thetaP),color='k',\ - linestyle='dashed',label='pot thresh') -plot((timeseries[0],timeseries[-1]),(thetaD,thetaD),color='b',\ - linestyle='dashed',label='dep thresh') -legend() -xlabel('time (ms)') -ylabel('Ca (arb)') -title("Ca conc in the synapse") - -# Weight plots for the synapse -figure(facecolor='w') -plot(timeseries,WtTable.vector[:len(timeseries)],color='r') -xlabel('time (ms)') -ylabel('Efficacy') -title("Efficacy of the synapse") - -# STDP curve -fig = figure(facecolor='w') -ax = fig.add_subplot(111) -ax.plot(arange(-t_extent,0,ddt)*1000,array(dwlist_neg),'.-r') -ax.plot(arange(ddt,(t_extent+ddt),ddt)*1000,array(dwlist_pos),'.-b') -xmin,xmax = ax.get_xlim() -ymin,ymax = ax.get_ylim() -ax.set_xticks([xmin,0,xmax]) -ax.set_yticks([ymin,0,ymax]) -ax.plot((0,0),(ymin,ymax),linestyle='dashed',color='k') -ax.plot((xmin,xmax),(0,0),linestyle='dashed',color='k') -ax.set_xlabel('$t_{post}-t_{pre}$ (ms)') -ax.set_ylabel('$\Delta w / w$') -fig.tight_layout() -#fig.subplots_adjust(hspace=0.3,wspace=0.5) # use after tight_layout() - -show() diff --git a/examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py b/examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py deleted file mode 100644 index f4647cc..0000000 --- a/examples/snippets/HigginsGraupnerBrunel2014_LifetimeCaPlasticity.py +++ /dev/null @@ -1,169 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -Simulate pre and post Poisson firing for a synapse with -Ca plasticity of Graupner and Brunel 2012. -See the trace over time (lifetime) for the synaptic efficacy, -similar to figure 2A of Higgins, Graupner, Brunel, 2014. - -Author: Aditya Gilra, NCBS, Bangalore, October, 2014. -''' - -import moose -from pylab import * - -numrepeats = 10 # repeat runtime for numrepeats - -frate = 1.0 # pre- and post-synaptic firing rate - # 1 Hz gives ~300s lifetime, ~0.2 efficacy (weight) - # 10 Hz gives ~10s lifetime, ~0.5 efficacy (weight) - # high firing rates make synaptic efficacy go to 0.5. -runtime = 600.0/frate # s - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -## Cortical slice values -- Table Suppl 2 in Graupner & Brunel 2012 -## Also used in Higgins et al 2014 -tauCa = 22.6936e-3 # s # Ca decay time scale -tauSyn = 346.3615 # s # synaptic plasticity time scale -## in vitro values in Higgins et al 2014, faster plasticity -CaPre = 0.56175 # mM -CaPost = 1.2964 # mM -## in vivo values in Higgins et al 2014, slower plasticity -#CaPre = 0.33705 # mM -#CaPost = 0.74378 # mM -delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 331.909 # factor for depression term -gammaP = 725.085 # factor for potentiation term - -J = 5e-3 # V # delta function synapse, adds to Vm -weight = 0.43 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # see eqn (22), noiseSD also appears - # but doesn't work here, - # weights away from 0.4 - 0.5 screw up the STDP rule!! - -bistable = True # if bistable is True, use bistable potential for weights -noisy = True # use noisy weight updates given by noiseSD -noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) - -########################################## - -prePoisson = moose.RandSpike('/pre') -prePoisson.rate = frate -postPoisson = moose.RandSpike('/post') -postPoisson.rate = frate - -syn = moose.GraupnerBrunel2012CaPlasticitySynHandler( '/syn' ) -syn.numSynapses = 1 # 1 synapse - # many pre-synaptic inputs can connect to a synapse - -# spikes from presynaptic Poisson generator -moose.connect( prePoisson,'spikeOut', syn.synapse[0], 'addSpike') - -# post-synaptic spikes from postsynaptic Poisson generator -moose.connect( postPoisson, 'spikeOut', syn, 'addPostSpike') - -syn.synapse[0].delay = 0.0 -syn.synapse[0].weight = 1.0 # starting weight to decay from -syn.CaInit = 0.0 -syn.tauCa = tauCa -syn.tauSyn = tauSyn -syn.CaPre = CaPre -syn.CaPost = CaPost -syn.delayD = delayD -syn.thetaD = thetaD -syn.thetaP = thetaP -syn.gammaD = gammaD -syn.gammaP = gammaP -syn.weightMax = 1.0 # bounds on the weight -syn.weightMin = 0. - -syn.noisy = noisy -syn.noiseSD = noiseSD -syn.bistable = bistable - -# ########################################### -# Setting up tables -# ########################################### - -CaTable = moose.Table( '/plotCa', 1 ) -moose.connect( CaTable, 'requestOut', syn, 'getCa') -WtTable = moose.Table( '/plotWeight', 1 ) -moose.connect( WtTable, 'requestOut', syn.synapse[0], 'getWeight') - -# ########################################### -# Simulate -# ########################################### - -dt = 1e-3 # s -# moose simulation -#moose.useClock( 0, '/syn', 'process' ) -#moose.useClock( 1, '/pre', 'process' ) -#moose.useClock( 1, '/post', 'process' ) -# I think MOOSE uses a different clock than 3 for Tables -# anyway, we use the default one and set all clocks to dt below -#moose.useClock( 3, '/plotCa', 'process' ) -#moose.useClock( 3, '/plotWeight', 'process' ) -## use setClock to set the dt different from default dt -for i in range(10): - moose.setClock( i, dt ) - -moose.seed(100) -moose.reinit() - -# function to make the aPlus and aMinus settle to equilibrium values -print "Rates of pre- and post-syanptic neurons =",frate -WtSeries = [] -numsteps = int(runtime/dt) -for i in range(numrepeats): - syn.synapse[0].weight = 1.0 # starting weight to decay from - syn.Ca = 0.0 - print "Repeat number",i,"running..." - moose.start(runtime) - WtSeries.append(WtTable.vector[i*numsteps:(i+1)*numsteps]) -WtSeries = array(WtSeries) -WtMean = mean(WtSeries,axis=0) -print "plotting..." - -# ########################################### -# Plot the simulated weights and Ca vs time -# ########################################### - -timeseries = linspace(0.0,runtime,numsteps) -# Ca plots for the synapse -# only the first repeat -figure(facecolor='w') -plot(timeseries,CaTable.vector[:numsteps],color='r') -plot((timeseries[0],timeseries[-1]),(thetaP,thetaP),color='k',\ - linestyle='dashed',label='pot thresh') -plot((timeseries[0],timeseries[-1]),(thetaD,thetaD),color='b',\ - linestyle='dashed',label='dep thresh') -legend() -xlabel('time (s)') -ylabel('Ca (arb)') -title("Ca conc in the synapse @ "+str(frate)+" Hz firing") - -# Weight plots for the synapse -figure(facecolor='w') -for i in range(numrepeats): - plot(timeseries,WtSeries[i],alpha=0.5) -plot(timeseries,WtMean,color='k',linewidth=2) -xlabel('time (s)') -ylabel('Efficacy') -title("Efficacy of the synapse @ "+str(frate)+" Hz firing") - -show() diff --git a/examples/snippets/HsolveInstability.py b/examples/snippets/HsolveInstability.py deleted file mode 100644 index 61ac1df..0000000 --- a/examples/snippets/HsolveInstability.py +++ /dev/null @@ -1,289 +0,0 @@ -# HsolveInstability.py --- - -# Commentary: -# -# A toy compartmental neuronal + chemical model that causes bad things -# to happen to the hsolver, as of 28 May 2013. Hopefully this will -# become irrelevant soon. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -#import sys -#sys.path.append('../../python') -#import os -#os.environ['NUMPTHREADS'] = '1' -import math -import numpy - -import pylab -import moose - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def create_na_proto(): - lib = moose.Neutral('/library') - na = moose.HHChannel('/library/na') - na.Xpower = 3 - xGate = moose.HHGate(na.path + '/gateX') - xGate.setupAlpha(Na_m_params + - [VDIVS, VMIN, VMAX]) - na.Ypower = 1 - yGate = moose.HHGate(na.path + '/gateY') - yGate.setupAlpha(Na_h_params + - [VDIVS, VMIN, VMAX]) - return na - -def create_k_proto(): - lib = moose.Neutral('/library') - k = moose.HHChannel('/library/k') - k.Xpower = 4.0 - xGate = moose.HHGate(k.path + '/gateX') - xGate.setupAlpha(K_n_params + - [VDIVS, VMIN, VMAX]) - return k - -def create_squid(): - """Create a single compartment squid model.""" - parent = moose.Neutral ('/n' ) - compt = moose.Compartment( '/n/compt' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 - compt.Rm = 4.2e5 - compt.Ra = 7639.44e3 - nachan = moose.HHChannel( '/n/compt/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + - [VDIVS, VMIN, VMAX]) - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + - [VDIVS, VMIN, VMAX]) - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') - - kchan = moose.HHChannel( '/n/compt/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + - [VDIVS, VMIN, VMAX]) - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') - return compt - -def create_spine( parentCompt, parentObj, index, frac, length, dia, theta ): - """Create spine of specified dimensions and index""" - RA = 1.0 - RM = 1.0 - CM = 0.01 - sname = 'shaft' + str(index) - hname = 'head' + str(index) - shaft = moose.Compartment( parentObj.path + '/' + sname ) - moose.connect( parentCompt, 'raxial', shaft, 'axial', 'single' ) - x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) - y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) - z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) - shaft.x0 = x - shaft.y0 = y - shaft.z0 = z - sy = y + length * math.cos( theta * math.pi / 180.0 ) - sz = z + length * math.sin( theta * math.pi / 180.0 ) - shaft.x = x - shaft.y = sy - shaft.z = sz - shaft.diameter = dia / 10.0 - shaft.length = length - xa = math.pi * dia * dia / 400.0 - circumference = math.pi * dia / 10.0 - shaft.Ra = RA * length / xa - shaft.Rm = RM / ( length * circumference ) - shaft.Cm = CM * length * circumference - shaft.Em = EREST_ACT - shaft.initVm = EREST_ACT - - head = moose.Compartment( parentObj.path + '/' + hname ) - moose.connect( shaft, 'raxial', head, 'axial', 'single' ) - head.x0 = x - head.y0 = sy - head.z0 = sz - hy = sy + length * math.cos ( theta * math.pi / 180.0 ) - hz = sz + length * math.sin ( theta * math.pi / 180.0 ) - head.x = x - head.y = hy - head.z = hz - head.diameter = dia - head.length = length - xa = math.pi * dia * dia / 4.0 - circumference = math.pi * dia - head.Ra = RA * length / xa - head.Rm = RM / ( length * circumference ) - head.Cm = CM * length * circumference - head.Em = EREST_ACT - head.initVm = EREST_ACT - return head - -def create_spine_with_receptor( compt, cell, index, frac ): - FaradayConst = 96485.3415 # s A / mol - spineLength = 5.0e-6 - spineDia = 4.0e-6 - head = create_spine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) - gluR = moose.SynChan( head.path + '/gluR' ) - gluR.tau1 = 1e-3 - gluR.tau2 = 1e-3 - gluR.Gbar = 1e-5 - gluR.Ek= 10.0e-3 - moose.connect( head, 'channel', gluR, 'channel', 'single' ) - - caPool = moose.CaConc( head.path + '/ca' ) - caPool.CaBasal = 1e-4 # 0.1 micromolar - caPool.tau = 0.01 - B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) - B = B / 20.0 # scaling factor for Ca buffering - caPool.B = B - moose.connect( gluR, 'IkOut', caPool, 'current', 'single' ) - - synh = moose.SimpleSynHandler( gluR.path + '/synh' ) - moose.connect( synh, "activationOut", gluR, "activation" ) - return synh - -def add_plot( objpath, field, plot ): - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def make_plots(): - graphs = moose.Neutral( '/graphs' ) - add_plot( '/n/compt', 'getVm', 'dendVm' ) - add_plot( '/n/head2', 'getVm', 'head2Vm' ) - add_plot( '/n/head2/ca', 'getCa', 'head2Ca' ) - -def display_plots( name ): - pylab.figure() - for x in moose.wildcardFind( '/graphs/#' ): - pos = numpy.arange( 0, x.vector.size ) * x.dt - print len( pos ), len( x.vector ) - pylab.plot( pos, x.vector, label=x.name ) - pylab.legend() - pylab.title( name ) - -def make_spiny_compt(): - comptLength = 100e-6 - comptDia = 4e-6 - numSpines = 5 - compt = create_squid() - compt.inject = 0 - compt.x0 = 0 - compt.y0 = 0 - compt.z0 = 0 - compt.x = comptLength - compt.y = 0 - compt.z = 0 - compt.length = comptLength - compt.diameter = comptDia - synInput = moose.SpikeGen( '/n/compt/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - cell = moose.element( '/n' ) - for i in range( numSpines ): - r = create_spine_with_receptor( compt, cell, i, i/float(numSpines) ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'single' ) - syn.weight = 0.2 - syn.delay = i * 1.0e-4 - -def main(): - fineDt = 1e-5 - coarseDt = 5e-5 - make_spiny_compt() - make_plots() - for i in range( 8 ): - moose.setClock( i, fineDt ) - moose.setClock( 8, coarseDt ) - moose.reinit() - moose.start( 0.1 ) - display_plots( 'instab.plot' ) - # make Hsolver and rerun - hsolve = moose.HSolve( '/n/hsolve' ) - for i in range( 8 ): - moose.setClock( i, coarseDt ) - hsolve.dt = coarseDt - hsolve.target = '/n/compt' - moose.reinit() - moose.start( 0.1 ) - display_plots( 'h_instab.plot' ) - pylab.show() - -if __name__ == '__main__': - main() - -# -# HsolveInstability.py ends here diff --git a/examples/snippets/IntegrateFireZoo.py b/examples/snippets/IntegrateFireZoo.py deleted file mode 100644 index b715519..0000000 --- a/examples/snippets/IntegrateFireZoo.py +++ /dev/null @@ -1,228 +0,0 @@ - -# -*- coding: utf-8 -*- -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -#### Author: Aditya Gilra, NCBS, Bangalore, October, 2014. - -''' -Simulate current injection into various Integrate and Fire neurons. - -All integrate and fire (IF) neurons are subclasses of compartment, -so they have all the fields of a passive compartment. Multicompartmental neurons can be created. -Even ion channels and synaptic channels can be added to them, say for sub-threshold behaviour. - -The key addition is that they have a reset mechanism when the membrane potential Vm crosses a threshold. -On each reset, a spikeOut message is generated, and the membrane potential is reset to Vreset. -The threshold may be the spike generation threshold as for LIF and AdThreshIF, -or it may be the peak of the spike as for QIF, ExIF, AdExIF, and IzhIF. -The adaptive IFs have an extra adapting variable apart from membrane potential Vm. - -Details of the IFs are given below. -The fields of the MOOSE objects are named exactly as the parameters in the equations below. - - LIF: Leaky Integrate and Fire: - Rm*Cm * dVm/dt = -(Vm-Em) + Rm*I - - QIF: Quadratic LIF: - Rm*Cm * dVm/dt = a0*(Vm-Em)*(Vm-vCritical) + Rm*I - - ExIF: Exponential leaky integrate and fire: - Rm*Cm * dVm/dt = -(Vm-Em) + deltaThresh * exp((Vm-thresh)/deltaThresh) + Rm*I - - AdExIF: Adaptive Exponential LIF: - Rm*Cm * dVm/dt = -(Vm-Em) + deltaThresh * exp((Vm-thresh)/deltaThresh) + Rm*I - w, - - tau_w * dw/dt = a0*(Vm-Em) - w, - - At each spike, w -> w + b0 " - - AdThreshIF: Adaptive threshold LIF: - Rm*Cm * dVm/dt = -(Vm-Em) + Rm*I, - - tauThresh * d threshAdaptive / dt = a0*(Vm-Em) - threshAdaptive, - - At each spike, threshAdaptive is increased by threshJump - the spiking threshold adapts as thresh + threshAdaptive - - IzhIF: Izhikevich: - d Vm /dt = a0 * Vm^2 + b0 * Vm + c0 - u + I/Cm, - - d u / dt = a * ( b * Vm - u ), - - At each spike, u -> u + d, - - By default, a0 = 0.04e6/V/s, b0 = 5e3/s, c0 = 140 V/s are set to SI units, - so use SI consistently, or change a0, b0, c0 also if you wish to use other units. - Rm from Compartment is not used here, vReset is same as c in the usual formalism. - At rest, u0 = b V0, and V0 = ( -(-b0-b) +/- sqrt((b0-b)^2 - 4*a0*c0)) / (2*a0). - -''' - -import moose -import matplotlib.pyplot as plt -import numpy as np - -# ########################################### -# Neuron model parameters (definitions above) -# ########################################### - -# Leaky Integrate and Fire neuron (common to all IFs) -Vrest = -65e-3 # V # resting potential -Vt_base = -45e-3 # V # threshold -Vreset = -55e-3 # V # Vreset need not be same as Vrest -R = 1e8 # Ohm -tau = 10e-3 # s -refrT = 1e-3 # s - -# for QIF -vCritical = -54e-3 # V # critical voltage above - # which Vm rises fast quadratically -a0 = 1e3 # V^-1 # parameter in equation - -# for ExIF -deltaThresh = 10e-3 # V -vPeak = 30e-3 # V # for ExpIF & IzhIF, reset is from vPeak, not thresh. - # I also use vPeak for adding spikes post-simulation - # to LIF, QIF, etc. -# for AdExIF -a0AdEx = 0.0 # unitless # voltage-dependent adaptation factor -b0 = 5e-10 # Amp # current step added to the adaptation current at each spike -tauW = 20e-3 # s # decay time constant of the adaptation current - -# for AdThreshIF -a0AdTh = 0.0 # unitless # voltage-dependent adaptation factor -threshJump = 5e-3 # V # voltage step added to the threshold at each spike -tauThresh = 20e-3 # s # decay time constant of the adaptative threshold - -# for IzhIF -a = 50.0 # s^-1 # d u / dt = a * ( b * Vm - u ) -b = 246.15 # s^-1 # to obtain Em = -65mV at rest, set b = (a0*Em^2 + b0*Em + c0)/Em - # b = (4×10⁴×(−65×10⁻³)^2 + 5×10³×(−65×10⁻³) + 140) ÷ (−65×10⁻³) -uRest = -16 # V/s # uRest = b*Em = -16 V/s -d = 10 # V/s # d is added to u at every spike - -def main(): - ''' - On the command-line, in moose-examples/snippets directory, run ``python IntegrateFireZoo.py``. - The script will ask you which neuron you want to simulate and you can choose and run what you want. - Play with the parameters of the IF neurons in the source code. - ''' - neuronChoices = {'LIF':moose.LIF, 'QIF':moose.QIF, 'ExIF':moose.ExIF, 'AdExIF':moose.AdExIF, - 'AdThreshIF':moose.AdThreshIF, 'IzhIF':moose.IzhIF} - #### CHOOSE ONE OF THE NEURON KEYS AS choiceKey FROM BELOW DICTIONARY #### - #choiceKey = 'LIF' - #### No need, am inputting it from the user on the terminal - choiceKeys = neuronChoices.keys() # keys() does not retain the order in dict defn above! - choiceIndex = input('Choose a number corresponding to your desired neuron: '+ \ - str([(i,key) for (i,key) in enumerate(choiceKeys)])+' -- ') - choiceKey = choiceKeys[choiceIndex] - neuronChoice = neuronChoices[choiceKey] - - # ########################################### - # Initialize neuron group - # ########################################### - - # neuron instantiation - network = neuronChoice( 'network' ); # choose neuron type above - moose.le( '/network' ) - network.vec.Em = Vrest - network.vec.thresh = Vt_base - network.vec.refractoryPeriod = refrT - network.vec.Rm = R - network.vec.vReset = Vreset - network.vec.Cm = tau/R - network.vec.initVm = Vrest - - # neuron specific parameters and current injected I - if choiceKey == 'LIF': - network.vec.inject = 5e-10 # Amp # injected current I - if choiceKey == 'QIF': - network.vec.a0 = a0 - network.vec.vCritical = vCritical - network.vec.inject = 5e-10 # Amp # injected current I - elif choiceKey == 'ExIF': - network.vec.deltaThresh = deltaThresh - network.vec.vPeak = vPeak # reset at vPeak, not at thresh - network.vec.inject = 5e-9 # Amp # injected current I - elif choiceKey == 'AdExIF': - network.vec.deltaThresh = deltaThresh - network.vec.vPeak = vPeak # reset at vPeak, not at thresh - network.vec.a0 = a0AdEx - network.vec.b0 = b0 - network.vec.tauW = tauW - network.vec.inject = 5e-9 # Amp # injected current I - elif choiceKey == 'AdThreshIF': - network.vec.a0 = a0AdTh - network.vec.threshJump = threshJump - network.vec.tauThresh = tauThresh - network.vec.inject = 1e-9 # Amp # injected current I - elif choiceKey == 'IzhIF': - network.vec.a = a - network.vec.b = b - network.vec.d = d - network.vec.uInit = uRest # Just sets the initial value of u - network.vec.vPeak = vPeak # reset at vPeak, not at thresh - network.vec.inject = 5e-9 # Amp # injected current I - - print "Injecting current =",network.vec[0].inject,"in",choiceKey,"neuron." - - # ########################################### - # Setting up table - # ########################################### - - Vm = moose.Table( '/plotVm' ) - moose.connect( network, 'VmOut', Vm, 'input', 'OneToOne') - spikes = moose.Table( '/plotSpikes' ) - moose.connect( network, 'spikeOut', spikes, 'input', 'OneToOne') - - # ########################################### - # Simulate the current injection - # ########################################### - - dt = 5e-6 # s - runtime = 0.02 # s - - # moose simulation - moose.useClock( 1, '/network', 'process' ) - moose.useClock( 2, '/plotSpikes', 'process' ) - moose.useClock( 3, '/plotVm', 'process' ) - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - moose.setClock( 3, dt ) - moose.setClock( 9, dt ) - moose.reinit() - moose.start(runtime) - - # ########################################### - # Plot the simulated Vm-s and STDP curve - # ########################################### - - # Voltage plots - Vmseries = Vm.vector - numsteps = len(Vmseries) - if choiceKey not in ['ExIF','AdExIF','IzhIF']: - # insert spikes so that Vm reset at thresh doesn't look weird - # for ExIF, etc. reset is at vPeak, so not weird. - for t in spikes.vector: - Vmseries[int(t/dt)-1] = 30e-3 # V - timeseries = np.arange(0.,1000*numsteps*dt-1e-10,dt*1000) - plt.figure(facecolor='w') - plt.plot(timeseries,Vmseries*1000,color='r') # neuron's Vm - plt.xlabel('time (ms)') - plt.ylabel('Vm (mV)') - plt.title(choiceKey+"neuron, current="+str(network.vec[0].inject)+"A") - - plt.show() - -# Run below if script is executed standalone. -if __name__ == '__main__': - '''The main function to simulate an integrate and fire neuron.''' - main() diff --git a/examples/snippets/Izhikevich_with_synapse.py b/examples/snippets/Izhikevich_with_synapse.py deleted file mode 100644 index 9780ea5..0000000 --- a/examples/snippets/Izhikevich_with_synapse.py +++ /dev/null @@ -1,157 +0,0 @@ -# __BROKEN__ -# Izhikevich_with_synapse.py --- -# -# Filename: Izhikevich_with_synapse.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Sat Apr 19 10:47:15 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This shows the use of SynChan with Izhikevich neuron. This can be -# used for creating a network of Izhikevich neurons. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import sys -import pylab -sys.path.append('../../python') -import moose -from moose import utils as mutils - -def make_neuron(path): - """Create a neuron with parameters set for tonic_bursting.""" - nrn = moose.IzhikevichNrn(path) - # "tonic_bursting": ['C', 0.02 , 0.2 , -50.0, 2.0 , 15.0, -70.0, 220.0], # Fig. 1.C - print((path,dir(nrn))) - nrn.alpha = 0.04 - nrn.beta = 5.0 - nrn.gamma = 140.0 - #nrn.Rm = 1.0 # FIXME: IzhikevichNrn does not have this field. - nrn.a = 0.02 - nrn.b = 0.2 - nrn.c = -50.0 - nrn.d = 2.0 - nrn.initVm = -70.0 - nrn.Vmax = 40.0 - return nrn - -def make_pulsegen(path): - """Create a pulse generator to test tonic spiking in the neuron.""" - pulse = moose.PulseGen(path) - pulse.delay[0] = 10.0 # ms - pulse.width[0] = 200.0 # ms - pulse.level[0] = 15e-3 # uA - return pulse - -def make_synapse(path): - """Create a synapse with two time constants.""" - syn = moose.SynChan(path) - syn.tau1 = 5.0 # ms - syn.tau2 = 1.0 # ms - syn.Gbar = 1.0 # mS - syn.Ek = 0.0 - syn.synapse.num = 1 - # syn.bufferTime = 1.0 # ms - syn.synapse.delay = 1.0 - syn.synapse.weight = 1.0 - print(('Synapses:', len(syn.synapse), 'w=', syn.synapse[0].weight)) - spikegen = moose.SpikeGen('%s/spike' % (syn.parent.path)) - spikegen.edgeTriggered = False # Make it fire continuously when input is high - spikegen.refractT = 10.0 # With this setting it will fire at 1 s / 10 ms = 100 Hz - spikegen.threshold = 0.5 - # This will send alternatind -1 and +1 to SpikeGen to make it fire - spike_stim = moose.PulseGen('%s/spike_stim' % (syn.parent.path)) - spike_stim.delay[0] = 50.0 - spike_stim.level[0] = 1.0 - spike_stim.width[0] = 100.0 - moose.connect(spike_stim, 'output', spikegen, 'Vm') - m = moose.connect(spikegen, 'spikeOut', syn.synapse[0], 'addSpike') - return syn, spikegen - -def make_model(): - model = moose.Neutral('/model') # Just a container for other things - neuron = make_neuron('/model/neuron') - pulse = make_pulsegen('/model/pulse') - synapse, spike_in = make_synapse('/model/synapse') - # moose.connect(pulse, 'output', neuron, 'injectDest') - moose.connect(neuron, 'channel', synapse, 'channel') - return {'neuron': neuron, - 'pulse': pulse, - 'synapse': synapse, - 'spike_in': spike_in} - -def setup_data_recording(neuron, pulse, synapse, spikegen): - data = moose.Neutral('/data') - vm_table = moose.Table('/data/Vm') - moose.connect(vm_table, 'requestOut', neuron, 'getVm') - inject_table = moose.Table('/data/Inject') - moose.connect(inject_table, 'requestOut', pulse, 'getOutputValue') - gk_table = moose.Table('/data/Gk') - moose.connect(gk_table, 'requestOut', synapse, 'getGk') - spike_in_table = moose.Table('/data/spike_in') - moose.connect(spikegen, 'spikeOut', spike_in_table, 'spike') - return [vm_table, inject_table, gk_table, spike_in_table] - -if __name__ == '__main__': - simtime = 200.0 - stepsize = 10.0 - model_dict = make_model() - vm, inject, gk, spike = setup_data_recording(model_dict['neuron'], - model_dict['pulse'], - model_dict['synapse'], - model_dict['spike_in']) - mutils.setDefaultDt(elecdt=0.01, plotdt2=0.25) - mutils.assignDefaultTicks(solver='ee') - moose.reinit() - mutils.stepRun(simtime, stepsize) - pylab.subplot(411) - pylab.plot(pylab.linspace(0, simtime, len(vm.vector)), vm.vector, label='Vm (mV)') - pylab.legend() - pylab.subplot(412) - pylab.plot(pylab.linspace(0, simtime, len(inject.vector)), inject.vector, label='Inject (uA)') - pylab.legend() - pylab.subplot(413) - pylab.plot(spike.vector, pylab.ones(len(spike.vector)), '|', label='input spike times') - pylab.legend() - pylab.subplot(414) - pylab.plot(pylab.linspace(0, simtime, len(gk.vector)), gk.vector, label='Gk (mS)') - pylab.legend() - pylab.show() - -# -# Izhikevich_with_synapse.py ends here diff --git a/examples/snippets/MULTI/TuringInNeuron.py b/examples/snippets/MULTI/TuringInNeuron.py deleted file mode 100644 index 1f38df8..0000000 --- a/examples/snippets/MULTI/TuringInNeuron.py +++ /dev/null @@ -1,203 +0,0 @@ -# __DEPRECATED__ __BROKEN__ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example illustrates how to set up a Turing pattern in 1-D using -# reaction diffusion calculations. The runtime is kept short so that the -# pattern doesn't make it all the way to the end of the system. - -import math -import pylab -import numpy -import moose -import proto18 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - model = moose.element( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def makeChemModel( cellId ): - # create container for model - r0 = 1e-6 # m - r1 = 1e-6 # m - num = 2800 - diffLength = 1e-6 # m - diffConst = 5e-12 # m^2/sec - motorRate = 1e-6 # m/sec - concA = 1 # millimolar - - model = moose.element( '/model' ) - compartment = moose.NeuroMesh( '/model/compartment' ) - # FIXME: No attribute cell - compartment.cell = cellId - compartment.diffLength = diffLength - print "cell NeuroMesh parameters: numSeg and numDiffCompt: ", compartment.numSegments, compartment.numDiffCompts - - print "compartment.numDiffCompts == num: ", compartment.numDiffCompts, num - assert( compartment.numDiffCompts == num ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - s = moose.Pool( '/model/compartment/s' ) - e1 = moose.MMenz( '/model/compartment/e1' ) - e2 = moose.MMenz( '/model/compartment/e2' ) - e3 = moose.MMenz( '/model/compartment/e3' ) - r1 = moose.Reac( '/model/compartment/r1' ) - moose.connect( e1, 'sub', s, 'reac' ) - moose.connect( e1, 'prd', a, 'reac' ) - moose.connect( a, 'nOut', e1, 'enzDest' ) - e1.Km = 1 - e1.kcat = 1 - - moose.connect( e2, 'sub', s, 'reac' ) - moose.connect( e2, 'prd', b, 'reac' ) - moose.connect( a, 'nOut', e2, 'enzDest' ) - e2.Km = 1 - e2.kcat = 0.5 - - moose.connect( e3, 'sub', a, 'reac' ) - moose.connect( e3, 'prd', s, 'reac' ) - moose.connect( b, 'nOut', e3, 'enzDest' ) - e3.Km = 0.1 - e3.kcat = 1 - - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'prd', s, 'reac' ) - r1.Kf = 0.3 # 1/sec - r1.Kb = 0 # 1/sec - - # Assign parameters - a.diffConst = diffConst/10 - b.diffConst = diffConst - s.diffConst = 0 - #b.motorConst = motorRate - - # Make solvers - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - dsolve = moose.Dsolve( '/model/compartment/dsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - #ksolve.numAllVoxels = compartment.numDiffCompts - stoich.ksolve = ksolve - stoich.dsolve = dsolve - stoich.path = "/model/compartment/##" - assert( dsolve.numPools == 3 ) - a.vec.concInit = [0.1]*num - a.vec[0].concInit += 0.5 - a.vec[400].concInit += 0.5 - a.vec[800].concInit += 0.5 - a.vec[1200].concInit += 0.5 - a.vec[1600].concInit += 0.5 - a.vec[2000].concInit += 0.5 - a.vec[2400].concInit += 0.5 - #a.vec[num/2].concInit -= 0.1 - b.vec.concInit = [0.1]*num - s.vec.concInit = [1]*num - -def displayPlots( num ): - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - print '/newplot\n/plotname a' + str(num) - for x in a.vec.conc: - print x - print '/newplot\n/plotname b' + str(num) - for y in b.vec.conc: - print y - """ - print '/newplot\n/plotname bvol' - for z in a.vec.volume: - print z * 1e18 - print '/newplot\n/plotname aInit' - for x in a.vec.concInit: - print x - pos = numpy.arange( 0, a.vec.conc.size, 1.0 ) - aconc = numpy.array( a.vec.conc ) - bconc = numpy.array( b.vec.conc ) - print "pos a, b = ", pos, b.vec.conc.size - pylab.plot( pos[:100], aconc[:100], label='a' ) - pylab.plot( pos[:100], bconc[:100], label='b' ) - #pylab.plot( pos, a.vec.conc, label='a' ) - #pylab.plot( pos, b.vec.conc, label='b' ) - print "plotting done" - pylab.legend() - print "legend done" - pylab.show() - print "show done" - """ - -def main(): - runtime = 400 - dt4 = 0.02 # for the diffusion - dt5 = 0.2 # for the reaction - # Set up clocks. The dsolver to know before assigning stoich - moose.setClock( 4, dt4 ) - moose.setClock( 5, dt5 ) - model = moose.Neutral( '/model' ) - cellId = loadElec() - makeChemModel( cellId ) - moose.useClock( 4, '/model/compartment/dsolve', 'process' ) - # Ksolve must be scheduled after dsolve. - moose.useClock( 5, '/model/compartment/ksolve', 'process' ) - print "finished loading" - moose.reinit() - for i in range( 10 ): - moose.start( runtime / 10 ) # Run the model for 10 seconds. - # print 'done', i - displayPlots( i ) - print "finished running" - - """ - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - s = moose.element( '/model/compartment/s' ) - - atot = sum( a.vec.conc ) - btot = sum( b.vec.conc ) - stot = sum( s.vec.conc ) - print "a = ", a.vec.conc - print "b = ", b.vec.conc - print "s = ", s.vec.conc - - print 'tot = ', atot, btot, atot + btot + stot - displayPlots() - """ - - """ - dsolve = moose.element( '/model/compartment/dsolve' ) - - print '**************** dsolve.nvecs' - x = dsolve.nVec[0] - print dsolve.numPools, x, sum(x) - print dsolve.nVec[1], sum( dsolve.nVec[1] ) - print dsolve.nVec[2], sum( dsolve.nVec[2] ) - print dsolve.nVec[3], sum( dsolve.nVec[3] ) - """ - - quit() - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/MULTI/ca1_asym.p b/examples/snippets/MULTI/ca1_asym.p deleted file mode 100644 index 42bd21d..0000000 --- a/examples/snippets/MULTI/ca1_asym.p +++ /dev/null @@ -1,100 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -/* NOTE: The format of the cell descriptor files does not allow for - continuation to another line. The following long line lists the - soma channels with their "density" parameters. - - Ca_conc -17.402e12 - Not really a channel, but a "Ca_concen" object. Normally, the B - field is set to "dens"/compt_volume (m^3), but the negative sign - causes the absolute value to be used with no scaling by volume. - Na 300 - Ca 40 - K_DR 150 - K_AHP 8 - K_C 100 - K_A 50 -*/ - -basal_3 none 0 220 0 3.84 Ca_conc 8.96e-3 Ca 50 K_AHP 8 K_C 50 -basal_5 . 0 220 0 3.84 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 -basal_6 . 0 220 0 3.84 Ca_conc 8.96e-3 Na 200 Ca 120 K_DR 200 K_AHP 8 K_C 100 -basal_8 . 0 110 0 3.84 Ca_conc -34.53e12 Na 150 Ca 80 K_DR 100 K_AHP 8 K_C 200 - -soma basal_8 0 125 0 8.46 Ca_conc -17.402e12 Na 300 Ca 40 K_DR 250 K_AHP 8 K_C 100 K_A 50 - - -apical_10 soma 0 120 0 4.0 Ca_conc -26.404e12 Na 150 Ca 80 K_DR 100 K_AHP 8 K_C 200 glu 700 NMDA 200 -apical_11 apical_10 0 120 0 3 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 80 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_12 apical_11 0 120 0 3 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 60 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_13 apical_12 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 50 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_14 apical_13 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_15 apical_14 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_16 apical_15 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_17 apical_16 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_18 apical_17 0 120 0 2.6 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -apical_19 apical_18 0 120 0 2.6 Ca_conc 8.96e-3 - -lat_11_1 apical_10 -60 60 0 2 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 80 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_11_2 lat_11_1 -60 60 0 1.8 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_11_3 lat_11_2 0 80 0 1.5 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_11_4 lat_11_3 0 80 0 1.5 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 - -lat_13_1 apical_12 40 40 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_13_2 lat_13_1 40 40 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 - -lat_14_1 lat_13_2 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_2 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_3 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_4 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_5 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_6 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_7 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_8 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_9 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_10 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_11 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_12 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_14_13 . 0 10 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_15_1 . 0 30 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 -lat_15_2 . 0 60 0 1.0 Ca_conc 8.96e-3 Ca 70 K_AHP 8 K_C 50 Na 40 K_DR 60 K_A 100 glu 700 NMDA 200 - -spine_neck_14_1 lat_14_1 0.5 0 0 0.1 -spine_head_14_1 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_2 lat_14_2 0.5 0 0 0.1 -spine_head_14_2 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_3 lat_14_3 0.5 0 0 0.1 -spine_head_14_3 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_4 lat_14_4 0.5 0 0 0.1 -spine_head_14_4 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_5 lat_14_5 0.5 0 0 0.1 -spine_head_14_5 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_6 lat_14_6 0.5 0 0 0.1 -spine_head_14_6 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_7 lat_14_7 0.5 0 0 0.1 -spine_head_14_7 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_8 lat_14_8 0.5 0 0 0.1 -spine_head_14_8 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_9 lat_14_9 0.5 0 0 0.1 -spine_head_14_9 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_10 lat_14_10 0.5 0 0 0.1 -spine_head_14_10 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_11 lat_14_11 0.5 0 0 0.1 -spine_head_14_11 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_12 lat_14_12 0.5 0 0 0.1 -spine_head_14_12 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 -spine_neck_14_13 lat_14_13 0.5 0 0 0.1 -spine_head_14_13 . 0.5 0 0 0.5 NMDA_Ca_conc 8.96e-3 glu 700 Ca_NMDA 20 NMDA 200 Ca 60 diff --git a/examples/snippets/MULTI/diffonly.g b/examples/snippets/MULTI/diffonly.g deleted file mode 100644 index 9b485d7..0000000 --- a/examples/snippets/MULTI/diffonly.g +++ /dev/null @@ -1,160 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Tue Aug 27 21:53:07 2013 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.01 -CONTROLDT = 5 -PLOTDT = 1 -MAXTIME = 100 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 0 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-18 3 sphere "" white black 2 -6 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 0 -8 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black -3 \ - -6 0 -simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump group /kinetics/DEND 0 yellow black x 0 0 "" DEND defaultfile.g 0 0 \ - 0 -3 -3 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 1e-10 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry blue yellow -4 4 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca_CaM 0 1e-11 1 1 600 600 0 0 600 0 \ - /kinetics/geometry[3] blue yellow -2 -1 0 -simundump text /kinetics/DEND/Ca_CaM/notes 0 "" -call /kinetics/DEND/Ca_CaM/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 28 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 0 -3 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca 0 1e-10 0.08 0.08 4.8 4.8 0 0 60 0 \ - /kinetics/geometry[1] blue 28 -2 4 0 -simundump text /kinetics/SPINE/Ca/notes 0 "" -call /kinetics/SPINE/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM 0 1e-11 5 5 300 300 0 0 60 0 \ - /kinetics/geometry[1] 55 28 -2 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca_CaM 0 1e-11 0 0 0 0 0 0 60 0 \ - /kinetics/geometry[1] blue 28 1 -1 0 -simundump text /kinetics/SPINE/Ca_CaM/notes 0 "" -call /kinetics/SPINE/Ca_CaM/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/kreac 0 0.1 0.1 "" white 28 -1 0 0 -simundump text /kinetics/SPINE/kreac/notes 0 "" -call /kinetics/SPINE/kreac/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 0 "" PSD defaultfile.g 0 0 0 3 -3 \ - 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 1e-10 0.08 0.08 0.48 0.48 0 0 6 0 \ - /kinetics/geometry[2] blue 0 1 4 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM 0 1e-11 5 5 30 30 0 0 6 0 \ - /kinetics/geometry[2] 53 0 1 2 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_CaM 0 1e-11 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue 0 4 -1 0 -simundump text /kinetics/PSD/Ca_CaM/notes 0 "" -call /kinetics/PSD/Ca_CaM/notes LOAD \ -"" -simundump kreac /kinetics/PSD/kreac 0 0.1 0.1 "" white 0 2 0 0 -simundump text /kinetics/PSD/kreac/notes 0 "" -call /kinetics/PSD/kreac/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 100 0 1 0 -simundump xgraph /graphs/conc2 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 -simundump xcoredraw /edit/draw 0 -6 6 -10 6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/CaM REAC A B -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca_CaM REAC B A -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/kreac SUBSTRATE n -addmsg /kinetics/SPINE/CaM /kinetics/SPINE/kreac SUBSTRATE n -addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/kreac PRODUCT n -addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/kreac /kinetics/PSD/CaM REAC A B -addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca_CaM REAC B A -addmsg /kinetics/PSD/Ca /kinetics/PSD/kreac SUBSTRATE n -addmsg /kinetics/PSD/CaM /kinetics/PSD/kreac SUBSTRATE n -addmsg /kinetics/PSD/Ca_CaM /kinetics/PSD/kreac PRODUCT n -enddump -// End of dump - -complete_loading diff --git a/examples/snippets/MULTI/diffusionOnly.py b/examples/snippets/MULTI/diffusionOnly.py deleted file mode 100644 index 68faddb..0000000 --- a/examples/snippets/MULTI/diffusionOnly.py +++ /dev/null @@ -1,437 +0,0 @@ -# __DEPRECATED__ __BROKEN__ -# minimal.py --- -# Upi Bhalla, NCBS Bangalore 2013. -# -# Commentary: -# -# Testing system for loading in arbitrary multiscale models based on -# model definition files. -# This version has a minimal model with Ca in all 3 compartments, -# and CaM (just one step) in SPINE and PSD, with a nominal product Ca.CaM. -# In this diffusionOnly version there is no reaction. To be more precise, -# the loaded in minimal.g model has the Ca-binding reaction, but it is -# deleted when the file is loaded in. -# Incoming Ca from synaptic events comes to the PSD. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math - -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "hsolve" ) - return cellId - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if ( moose.exists( objpath ) ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/graphs/#[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name + '_e' ) - -def moveCompt( path, oldParent, newParent ): - meshEntries = moose.element( newParent.path + '/mesh' ) - # Set up vol messaging from new compts to all their child objects. - for x in moose.wildcardFind( path + '/##[ISA=PoolBase]' ): - moose.connect( meshEntries, 'mesh', x, 'mesh', 'OneToOne' ) - #print 'path = ', path, ', oldparent = ', oldParent.path - orig = moose.element( path ) - moose.move( orig, newParent ) - moose.delete( moose.vec( oldParent.path ) ) - chem = moose.element( '/model/chem' ) - moose.move( newParent, chem ) - -def loadChem( neuroCompt, spineCompt, psdCompt ): - # We need the compartments to come in with a volume of 1 to match the - # original CubeMesh. - assert( neuroCompt.volume == 1.0 ) - assert( spineCompt.volume == 1.0 ) - assert( psdCompt.volume == 1.0 ) - assert( neuroCompt.mesh.num == 1 ) - print('volume = ', neuroCompt.mesh[0].volume) - #assert( neuroCompt.mesh[0].volume == 1.0 ) - #an unfortunate mismatch - # So we'll have to resize the volumes of the current compartments to the - # new ones. - - modelId = moose.loadModel( 'diffonly.g', '/model', 'ee' ) - #moose.le( '/model/model' ) - #moose.le( '/model/model/kinetics' ) - #moose.le( '/model/model/kinetics/PSD' ) - #moose.le( '/model/model/kinetics/SPINE' ) - moose.delete( moose.vec( '/model/model/kinetics/PSD/kreac' ) ) - moose.delete( moose.vec( '/model/model/kinetics/SPINE/kreac' ) ) - #moose.le( '/model/model/kinetics/PSD' ) - #moose.le( '/model/model/kinetics/SPINE' ) - pCaCaM = moose.element( '/model/model/kinetics/PSD/Ca_CaM' ) - pCaCaM.concInit = 0.001 - dCaCaM = moose.element( '/model/model/kinetics/PSD/Ca_CaM' ) - sCaCaM = moose.element( '/model/model/kinetics/SPINE/Ca_CaM' ) - print("CaCaM.concInit[p,s,d] = ", pCaCaM.concInit, sCaCaM.concInit, dCaCaM.concInit) - #moose.delete( moose.vec( '/model/model/kinetics/SPINE/Ca_CaM' ) ) - #CaCaM2 = moose.element( '/model/model/kinetics/SPINE/Ca_CaM' ) - #CaCaM2.concInit = 0.001 - chem = moose.element( '/model/model' ) - chem.name = 'chem' - oldS = moose.element( '/model/chem/compartment_1' ) - oldP = moose.element( '/model/chem/compartment_2' ) - oldN = moose.element( '/model/chem/kinetics' ) - print('oldvols[p,s,d] = ', oldP.volume, oldS.volume, oldN.volume) - print('newvols[p,s,d] = ', psdCompt.mesh[0].volume, spineCompt.mesh[0].volume, neuroCompt.mesh[0].volume) - oldN.volume = neuroCompt.mesh[0].volume - oldS.volume = spineCompt.mesh[0].volume - oldP.volume = psdCompt.mesh[0].volume - print('after redoing vols') - print("CaCaM.concInit[p,s,d] = ", pCaCaM.concInit, sCaCaM.concInit, dCaCaM.concInit) - moveCompt( '/model/chem/kinetics/SPINE', oldS, spineCompt ) - moveCompt( '/model/chem/kinetics/PSD', oldP, psdCompt ) - # Need to do the DEND last because the oldN is /kinetics, - # and it will be deleted. - moveCompt( '/model/chem/kinetics/DEND', oldN, neuroCompt ) - print('after moving to new compts') - print("CaCaM.concInit[p,s,d] = ", pCaCaM.concInit, sCaCaM.concInit, dCaCaM.concInit) - -def makeNeuroMeshModel(): - diffLength = 20e-6 # But we only want diffusion over part of the model. - numSyn = 13 - elec = loadElec() - synInput = moose.SpikeGen( '/model/elec/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - - synInput.refractT = 47e-3 - for i in range( numSyn ): - name = '/model/elec/spine_head_14_' + str( i + 1 ) - r = moose.element( name + '/glu' ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 * i * ( numSyn - 1 - i ) - syn.delay = i * 1.0e-3 - - neuroCompt = moose.NeuroMesh( '/model/neuroMesh' ) - #print 'neuroMeshvolume = ', neuroCompt.mesh[0].volume - neuroCompt.separateSpines = 1 - neuroCompt.diffLength = diffLength - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/spineMesh' ) - #print 'spineMeshvolume = ', spineCompt.mesh[0].volume - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/psdMesh' ) - #print 'psdMeshvolume = ', psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - loadChem( neuroCompt, spineCompt, psdCompt ) - - # Put in the solvers, see how they fare. - nmksolve = moose.GslStoich( '/model/chem/neuroMesh/ksolve' ) - nmksolve.path = '/model/chem/neuroMesh/##' - nmksolve.compartment = moose.element( '/model/chem/neuroMesh' ) - nmksolve.method = 'rk5' - nm = moose.element( '/model/chem/neuroMesh/mesh' ) - moose.connect( nm, 'remesh', nmksolve, 'remesh' ) - #print "neuron: nv=", nmksolve.numLocalVoxels, ", nav=", nmksolve.numAllVoxels, nmksolve.numVarPools, nmksolve.numAllPools - - #print 'setting up smksolve' - smksolve = moose.GslStoich( '/model/chem/spineMesh/ksolve' ) - smksolve.path = '/model/chem/spineMesh/##' - smksolve.compartment = moose.element( '/model/chem/spineMesh' ) - smksolve.method = 'rk5' - sm = moose.element( '/model/chem/spineMesh/mesh' ) - moose.connect( sm, 'remesh', smksolve, 'remesh' ) - #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools - # - #print 'setting up pmksolve' - pmksolve = moose.GslStoich( '/model/chem/psdMesh/ksolve' ) - pmksolve.path = '/model/chem/psdMesh/##' - pmksolve.compartment = moose.element( '/model/chem/psdMesh' ) - pmksolve.method = 'rk5' - pm = moose.element( '/model/chem/psdMesh/mesh' ) - moose.connect( pm, 'remesh', pmksolve, 'remesh' ) - #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools - # - print('neuroMeshvolume = ', neuroCompt.mesh[0].volume) - - #print 'Assigning the cell model' - # Now to set up the model. - #neuroCompt.cell = elec - neuroCompt.cellPortion( elec, '/model/elec/lat_14_#,/model/elec/spine_neck#,/model/elec/spine_head#' ) - """ - ns = neuroCompt.numSegments - #assert( ns == 11 ) # dend, 5x (shaft+head) - ndc = neuroCompt.numDiffCompts - #print 'numDiffCompts = ', ndc - assert( ndc == 145 ) - ndc = neuroCompt.mesh.num - #print 'NeuroMeshNum = ', ndc - assert( ndc == 145 ) - - sdc = spineCompt.mesh.num - #print 'SpineMeshNum = ', sdc - assert( sdc == 13 ) - pdc = psdCompt.mesh.num - #print 'PsdMeshNum = ', pdc - assert( pdc == 13 ) - """ - - mesh = moose.vec( '/model/chem/neuroMesh/mesh' ) - #for i in range( ndc ): - # print 's[', i, '] = ', mesh[i].volume - mesh2 = moose.vec( '/model/chem/spineMesh/mesh' ) -# for i in range( sdc ): -# print 's[', i, '] = ', mesh2[i].volume - #print 'numPSD = ', moose.element( '/model/chem/psdMesh/mesh' ).localNumField - mesh = moose.vec( '/model/chem/psdMesh/mesh' ) - #print 'psd mesh.volume = ', mesh.volume - #for i in range( pdc ): - # print 's[', i, '] = ', mesh[i].volume - # - # We need to use the spine solver as the master for the purposes of - # these calculations. This will handle the diffusion calculations - # between head and dendrite, and between head and PSD. - smksolve.addJunction( nmksolve ) - #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools - smksolve.addJunction( pmksolve ) - #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools - ndc = neuroCompt.numDiffCompts - #print 'numDiffCompts = ', ndc - assert( ndc == 13 ) - ndc = neuroCompt.mesh.num - #print 'NeuroMeshNum = ', ndc - assert( ndc == 13 ) - sdc = spineCompt.mesh.num - #print 'SpineMeshNum = ', sdc - assert( sdc == 13 ) - pdc = psdCompt.mesh.num - #print 'PsdMeshNum = ', pdc - assert( pdc == 13 ) - - """ - print 'neuroCompt' - for i in range( ndc ): - print i, neuroCompt.stencilIndex[i] - print i, neuroCompt.stencilRate[i] - - print 'spineCompt' - for i in range( sdc * 3 ): - print i, spineCompt.stencilIndex[i] - print i, spineCompt.stencilRate[i] - - print 'psdCompt' - for i in range( pdc ): - print i, psdCompt.stencilIndex[i] - print i, psdCompt.stencilRate[i] - print 'Spine parents:' - pavoxel = spineCompt.parentVoxel - for i in range( sdc ): - print i, pavoxel[i] - """ - - # oddly, numLocalFields does not work. - #moose.le( '/model/chem/neuroMesh' ) - ca = moose.element( '/model/chem/neuroMesh/DEND/Ca' ) - assert( ca.lastDimension == ndc ) - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spineMesh/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - # set up adaptors - aCa = moose.Adaptor( '/model/chem/psdMesh/adaptCa', pdc ) - adaptCa = moose.vec( '/model/chem/psdMesh/adaptCa' ) - chemCa = moose.vec( '/model/chem/psdMesh/PSD/Ca' ) - assert( len( adaptCa ) == pdc ) - assert( len( chemCa ) == pdc ) - for i in range( pdc ): - path = '/model/elec/spine_head_14_' + str( i + 1 ) + '/NMDA_Ca_conc' - elecCa = moose.element( path ) - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 80e-6 # 80 nM offset in chem. - adaptCa.scale = 1e-5 # 520 to 0.0052 mM - #print adaptCa.outputOffset - #print adaptCa.scale - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) - addPlot( '/model/elec/basal_3', 'getVm', 'elec/basal3Vm' ) - addPlot( '/model/elec/apical_14', 'getVm', 'elec/apical_14Vm' ) - addPlot( '/model/elec/apical_14/Ca_conc', 'getCa', 'elec/apical_14Ca' ) - addPlot( '/model/elec/spine_head_14_7', 'getVm', 'elec/spine_7Vm' ) - addPlot( '/model/elec/spine_head_14_7/NMDA_Ca_conc', 'getCa', 'elec/spine_7Ca' ) - addPlot( '/model/elec/spine_head_14_13/NMDA_Ca_conc', 'getCa', 'elec/spine_13Ca' ) - -def makeChemPlots(): - spineMesh = moose.element( '/model/chem/spineMesh' ) - middleSpine = 6 - midSpineVoxel = spineMesh.parentVoxel[middleSpine] - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/chem/psdMesh/PSD/Ca[0]', 'getConc', 'pCa0' ) - addPlot( '/model/chem/psdMesh/PSD/Ca[6]', 'getConc', 'pCa6' ) - addPlot( '/model/chem/psdMesh/PSD/Ca[12]', 'getConc', 'pCa12' ) - - addPlot( '/model/chem/spineMesh/SPINE/Ca[0]', 'getConc', 'sCa0' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca[6]', 'getConc', 'sCa6' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca[12]', 'getConc', 'sCa12' ) - - addPlot( '/model/chem/neuroMesh/DEND/Ca[0]', 'getConc', 'dend0Ca' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel ) + ']', 'getConc', 'dendMidCa' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel+2 ) + ']', 'getConc', 'dendMid2' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel+4 ) + ']', 'getConc', 'dendMid4' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[' + str( midSpineVoxel+6 ) + ']', 'getConc', 'dendMid6' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[144]', 'getConc', 'dend144Ca' ) - - addPlot( '/model/chem/psdMesh/PSD/CaM[0]', 'getConc', 'pCaM0' ) - addPlot( '/model/chem/psdMesh/PSD/CaM[6]', 'getConc', 'pCaM6' ) - addPlot( '/model/chem/psdMesh/PSD/CaM[12]', 'getConc', 'pCaM12' ) - - addPlot( '/model/chem/spineMesh/SPINE/CaM[0]', 'getConc', 'sCaM0' ) - addPlot( '/model/chem/spineMesh/SPINE/CaM[6]', 'getConc', 'sCaM6' ) - addPlot( '/model/chem/spineMesh/SPINE/CaM[12]', 'getConc', 'sCaM12' ) - - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[0]', 'getConc', 'pCaCaM0' ) - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[6]', 'getConc', 'pCaCaM6' ) - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[12]', 'getConc', 'pCaCaM12' ) - - addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[0]', 'getConc', 'sCaCaM0' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[6]', 'getConc', 'sCaCaM6' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[12]', 'getConc', 'sCaCaM12' ) - - addPlot( '/model/chem/neuroMesh/DEND/Ca_CaM[0]', 'getConc', 'dCaCaM0' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca_CaM[' + str( midSpineVoxel ) + ']', 'getConc', 'dendMidCaCaM' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca_CaM[144]', 'getConc', 'dCaCaM144' ) - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 1e-4 - plotDt = 5e-4 - plotName = 'diffonly.plot' - - makeNeuroMeshModel() - """ - for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if ( i[0].diffConst > 0 ): - grandpaname = i.parent[0].parent.name + '/' - paname = i.parent[0].name + '/' - print grandpaname + paname + i[0].name, i[0].diffConst - moose.le( '/model/chem/spineMesh/ksolve' ) - print 'Neighbors:' - for t in moose.element( '/model/chem/spineMesh/ksolve/junction' ).neighbors['masterJunction']: - print 'masterJunction <-', t.path - for t in moose.wildcardFind( '/model/chem/#Mesh/ksolve' ): - k = moose.element( t[0] ) - print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels - """ - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - moose.useClock( 5, '/model/chem/#Mesh/ksolve', 'init' ) - moose.useClock( 6, '/model/chem/#Mesh/ksolve', 'process' ) - hsolve = moose.HSolve( '/model/elec/hsolve' ) - moose.useClock( 1, '/model/elec/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - moose.reinit() - moose.reinit() - """ - print 'pre' - eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'dend' - eca = moose.vec( '/model/chem/neuroMesh/DEND/Ca' ) - for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): - print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - - print 'PSD' - eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'spine' - eca = moose.vec( '/model/chem/spineMesh/SPINE/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - """ - - moose.start( 0.5 ) - dumpPlots( plotName ) - print('All done') - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# loadMulti.py ends here. diff --git a/examples/snippets/MULTI/loadMulti.py b/examples/snippets/MULTI/loadMulti.py deleted file mode 100644 index d4e92aa..0000000 --- a/examples/snippets/MULTI/loadMulti.py +++ /dev/null @@ -1,373 +0,0 @@ -# __DEPRECATED__ __BROKEN__ -# loadMulti.py --- -# Upi Bhalla, NCBS Bangalore 2013. -# -# Commentary: -# -# Testing system for loading in arbirary multiscale models based on -# model definition files. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -import os -import math - -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print("addPlot failed: object is a Neutral: ", objpath) - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print("addPlot failed: object not found: ", objpath) - return moose.element( '/' ) - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/graphs/#[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name + '_e' ) - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - - -def makeNeuroMeshModel(): - diffLength = 10e-6 # But we only want diffusion over part of the model. - numSyn = 13 - elec = loadElec() - synInput = moose.SpikeGen( '/model/elec/synInput' ) - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - synInput.refractT = 47e-3 - - for i in range( numSyn ): - name = '/model/elec/spine_head_14_' + str( i + 1 ) - r = moose.element( name + '/glu' ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 * i * ( numSyn - 1 - i ) - syn.delay = i * 1.0e-3 - - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print('ns = ', ns, ', ndc = ', ndc) - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 36 ) # dend, 5x (shaft+head) - assert( ndc == 278 ) - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print('done setting path, numPools = ', nmdsolve.numPools) - assert( nmdsolve.numPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print('sdc = ', sdc) - assert( sdc == 13 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - assert( smstoich.numAllPools == 36 ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - print('numAllPools = ', pmstoich.numAllPools) - assert( pmstoich.numAllPools == 56 ) - foo = moose.element( '/model/chem/psd/Ca' ) - bar = moose.element( '/model/chem/psd/I1_p' ) - print('PSD: numfoo = ', foo.numData, 'numbar = ', bar.numData) - print('PSD: numAllVoxels = ', pmksolve.numAllVoxels) - - # Put in junctions between diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - # set up adaptors - aCa = moose.Adaptor( '/model/chem/psd/adaptCa', pdc ) - adaptCa = moose.vec( '/model/chem/psd/adaptCa' ) - chemCa = moose.vec( '/model/chem/psd/Ca' ) - print('aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData) - assert( len( adaptCa ) == pdc ) - assert( len( chemCa ) == pdc ) - for i in range( pdc ): - path = '/model/elec/spine_head_14_' + str( i + 1 ) + '/NMDA_Ca_conc' - elecCa = moose.element( path ) - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa[i].inputOffset = 0.0 # - adaptCa[i].outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa[i].scale = 1e-5 # 520 to 0.0052 mM - #print adaptCa.outputOffset - #print adaptCa.scale - """ - """ - - """ - aGluR = moose.Adaptor( '/model/chem/psd/adaptGluR', 5 ) - adaptGluR = moose.vec( '/model/chem/psd/adaptGluR' ) - chemR = moose.vec( '/model/chem/psd/psdGluR' ) - assert( len( adaptGluR ) == 5 ) - for i in range( 5 ): - path = '/model/elec/head' + str( i ) + '/gluR' - elecR = moose.element( path ) - moose.connect( adaptGluR[i], 'outputSrc', elecR, 'setGbar', 'Single' ) - #moose.connect( chemR, 'nOut', adaptGluR, 'input', 'OneToOne' ) - # Ksolve isn't sending nOut. Not good. So have to use requestOut. - moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToOne' ) - adaptGluR.outputOffset = 1e-7 # pS - adaptGluR.scale = 1e-6 / 100 # from n to pS - - adaptK = moose.Adaptor( '/model/chem/dend/adaptK' ) - chemK = moose.element( '/model/chem/dend/kChan' ) - elecK = moose.element( '/model/elec/compt/K' ) - moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) - moose.connect( adaptK, 'outputSrc', elecK, 'setGbar', 'Single' ) - adaptK.scale = 0.3 # from mM to Siemens - """ - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) - addPlot( '/model/elec/basal_3', 'getVm', 'elec/basal3Vm' ) - addPlot( '/model/elec/apical_14', 'getVm', 'elec/apical_14Vm' ) - addPlot( '/model/elec/apical_14/Ca_conc', 'getCa', 'elec/apical_14Ca' ) - addPlot( '/model/elec/spine_head_14_7', 'getVm', 'elec/spine_7Vm' ) - addPlot( '/model/elec/spine_head_14_7/NMDA_Ca_conc', 'getCa', 'elec/spine_7Ca' ) - addPlot( '/model/elec/spine_head_14_13/NMDA_Ca_conc', 'getCa', 'elec/spine_13Ca' ) - -def makeChemPlots(): - spineMesh = moose.element( '/model/chem/spine' ) - middleSpine = 6 - # handy lookup function to find which voxel # the spine is on. - midSpineVoxel = spineMesh.parentVoxel[middleSpine] - print(spineMesh.parentVoxel) - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/chem/psd/tot_PSD_R[0]', 'getN', 'psd0R' ) - addPlot( '/model/chem/psd/tot_PSD_R[1]', 'getN', 'psd1R' ) - addPlot( '/model/chem/psd/tot_PSD_R[2]', 'getN', 'psd2R' ) - addPlot( '/model/chem/psd/CaM_dash_Ca4[0]', 'getConc', 'psdCaM0' ) - addPlot( '/model/chem/psd/CaM_dash_Ca4[6]', 'getConc', 'psdCaM6' ) - addPlot( '/model/chem/psd/CaM_CaN[0]', 'getConc', 'CaM_CaN' ) - addPlot( '/model/chem/psd/PP1_dash_active[0]', 'getConc', 'PP1_active0' ) - addPlot( '/model/chem/psd/PP1_dash_active[6]', 'getConc', 'psdPP1_active6' ) - addPlot( '/model/chem/psd/actCaMKII[6]', 'getConc', 'psdCaMKII6' ) - addPlot( '/model/chem/spine/actCaMKII[6]', 'getConc', 'spineCaMKII6' ) - addPlot( '/model/chem/psd/Ca[0]', 'getConc', 'psd0Ca' ) - addPlot( '/model/chem/psd/Ca[6]', 'getConc', 'psd6Ca' ) - addPlot( '/model/chem/psd/Ca[12]', 'getConc', 'psd12Ca' ) - - addPlot( '/model/chem/spine/Ca[0]', 'getConc', 'spine0Ca' ) - addPlot( '/model/chem/spine/Ca[6]', 'getConc', 'spine6Ca' ) - addPlot( '/model/chem/spine/Ca[12]', 'getConc', 'spine12Ca' ) - - addPlot( '/model/chem/dend/DEND/Ca[0]', 'getConc', 'dend0Ca' ) - path = '/model/chem/dend/DEND/Ca[' - addPlot( path + str( midSpineVoxel ) + ']', 'getConc', 'dendMidCa' ) - addPlot( path + str( midSpineVoxel+2 ) + ']', 'getConc', 'dendMid2Ca' ) - addPlot( path + str( midSpineVoxel+4 ) + ']', 'getConc', 'dendMid4Ca' ) - addPlot( path + str( midSpineVoxel+6 ) + ']', 'getConc', 'dendMid6Ca' ) - addPlot( '/model/chem/dend/DEND/Ca[144]', 'getConc', 'dend144Ca' ) - - #addPlot( '/n/dend/Ca', 'getConc', 'dendCa' ) - #addPlot( '/n/dend/inact_kinase', 'getConc', 'inactDendKinase' ) - #addPlot( '/n/psd/psdGluR', 'getN', 'psdGluR' ) - addPlot( '/model/chem/psd/CaMKII_dash_CaM[6]', 'getConc', 'psdCaM_CaMKII6' ) - addPlot( '/model/chem/spine/CaMKII_dash_CaM[6]', 'getConc', 'spineCaM_CaMKII6' ) - addPlot( '/model/chem/spine/NMDAR[6]', 'getConc', 'psd_NMDAR6' ) - - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 1e-2 - cplotDt = 1e-2 - eplotDt = 1e-3 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print("after model is completely done") - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print(i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb) - - """ - for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if ( i[0].diffConst > 0 ): - grandpaname = i.parent[0].parent.name + '/' - paname = i.parent[0].name + '/' - print grandpaname + paname + i[0].name, i[0].diffConst - print 'Neighbors:' - for t in moose.element( '/model/chem/spine/ksolve/junction' ).neighbors['masterJunction']: - print 'masterJunction <-', t.path - for t in moose.wildcardFind( '/model/chem/#/ksolve' ): - k = moose.element( t[0] ) - print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels - """ - """ - moose.useClock( 4, '/model/chem/dend/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/dend/ksolve', 'process' ) - moose.useClock( 5, '/model/chem/spine/ksolve', 'process' ) - moose.useClock( 5, '/model/chem/psd/ksolve', 'process' ) - """ - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 4, chemDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, cplotDt ) - moose.setClock( 8, eplotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) - moose.useClock( 6, '/model/chem/psd/adaptCa', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - #hsolve = moose.HSolve( '/model/elec/hsolve' ) - #moose.useClock( 1, '/model/elec/hsolve', 'process' ) - #hsolve.dt = elecDt - #hsolve.target = '/model/elec/compt' - #moose.reinit() - moose.reinit() - """ - print 'pre' - eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'dend' - eca = moose.vec( '/model/chem/dend/DEND/Ca' ) - #for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): - for i in range( 13 ): - print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - - print 'PSD' - eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'spine' - eca = moose.vec( '/model/chem/spine/SPINE/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - """ - - moose.start( 0.5 ) - dumpPlots( plotName ) - print('All done') - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# loadMulti.py ends here. diff --git a/examples/snippets/MULTI/midchan.py b/examples/snippets/MULTI/midchan.py deleted file mode 100644 index 46890fa..0000000 --- a/examples/snippets/MULTI/midchan.py +++ /dev/null @@ -1,345 +0,0 @@ -# midchan.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# This loads in a medium-detail model incorporating -# reac-diff and elec signaling in neurons. The reac-diff model -# has just Ca and CaM in it, and there are no-cross-compartment -# reactions though Ca diffuses everywhere. The elec model controls the -# Ca levels in the chem compartments. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) - #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - -def makeNeuroMeshModel(): - diffLength = 10e-6 # Aim for 2 soma compartments. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 36 ) # - assert( ndc == 278 ) # - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == ndc ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 13 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - print 'spine num Pools = ', smstoich.numAllPools - assert( smstoich.numAllPools == 3 ) - assert( smdsolve.numPools == 3 ) - assert( smdsolve.numAllVoxels == sdc ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - assert( pmstoich.numAllPools == 3 ) - assert( pmdsolve.numPools == 3 ) - assert( pmdsolve.numAllVoxels == pdc ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - # Put in junctions between the diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - ################################################################## - # set up adaptors - aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) - adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) - chemCa = moose.vec( '/model/chem/spine/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( adaptCa ) == sdc ) - assert( len( chemCa ) == sdc ) - for i in range( sdc ): - elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) - #print elecCa - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 1e-4 # 520 to 0.0052 mM - #print adaptCa.outputOffset - - - moose.le( '/model/chem/dend/DEND' ) - - - compts = neuroCompt.elecComptList - begin = neuroCompt.startVoxelInCompt - end = neuroCompt.endVoxelInCompt - aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) - adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) - chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( chemCa ) == ndc ) - for i in zip( compts, adaptCa, begin, end ): - name = i[0].path + '/Ca_conc' - if ( moose.exists( name ) ): - elecCa = moose.element( name ) - #print i[2], i[3], ' ', elecCa - #print i[1] - moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) - for j in range( i[2], i[3] ): - moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 20e-6 # 10 arb units to 2 uM. - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) - addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'elec/lat11Ca' ) - addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'elec/spine4Ca' ) - addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'elec/spine12Ca' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) - addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) - addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 0.005 - ePlotDt = 0.5e-3 - cPlotDt = 0.005 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 4, chemDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, cPlotDt ) - moose.setClock( 8, ePlotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) - moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) - moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) - moose.useClock( 7, '/graphs/chem/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - #hsolve = moose.HSolve( '/model/elec/hsolve' ) - #moose.useClock( 1, '/model/elec/hsolve', 'process' ) - #hsolve.dt = elecDt - #hsolve.target = '/model/elec/compt' - #moose.reinit() - moose.element( '/model/elec/soma' ).inject = 2e-10 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - - moose.start( 0.25 ) -# moose.element( '/model/elec/soma' ).inject = 0 -# moose.start( 0.25 ) - plt.ion() - fig = plt.figure( figsize=(8,8) ) - chem = fig.add_subplot( 311 ) - chem.set_ylim( 0, 0.002 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = chem.plot( pos, x.vector, label=x.name ) - plt.legend() - - elec = fig.add_subplot( 312 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = elec.plot( pos, x.vector, label=x.name ) - plt.legend() - - lenplot = fig.add_subplot( 313 ) - plt.ylabel( 'Ca (mM )' ) - plt.xlabel( 'Voxel#)' ) - - spineCa = moose.vec( '/model/chem/spine/Ca' ) - dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) - line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) - - ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConc]') ] - line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) - - spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) - line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) - psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) - line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) - plt.legend() - - - fig.canvas.draw() - raw_input() - - ''' - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - ''' - - print 'All done' - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/mincell.p b/examples/snippets/MULTI/mincell.p deleted file mode 100644 index 12fa813..0000000 --- a/examples/snippets/MULTI/mincell.p +++ /dev/null @@ -1,36 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -/* NOTE: The format of the cell descriptor files does not allow for - continuation to another line. The following long line lists the - soma channels with their "density" parameters. - - Ca_conc -17.402e12 - Not really a channel, but a "Ca_concen" object. Normally, the B - field is set to "dens"/compt_volume (m^3), but the negative sign - causes the absolute value to be used with no scaling by volume. - Na 300 - Ca 40 - K_DR 150 - K_AHP 8 - K_C 100 - K_A 50 -*/ - - -soma none 0 10 0 8.46 - -spine_neck soma 0.5 0 0 0.1 -spine_head . 0.5 0 0 0.5 diff --git a/examples/snippets/MULTI/mincell2.p b/examples/snippets/MULTI/mincell2.p deleted file mode 100644 index 418e8e9..0000000 --- a/examples/snippets/MULTI/mincell2.p +++ /dev/null @@ -1,37 +0,0 @@ - -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -/* NOTE: The format of the cell descriptor files does not allow for - continuation to another line. The following long line lists the - soma channels with their "density" parameters. - - Ca_conc -17.402e12 - Not really a channel, but a "Ca_concen" object. Normally, the B - field is set to "dens"/compt_volume (m^3), but the negative sign - causes the absolute value to be used with no scaling by volume. - Na 300 - Ca 40 - K_DR 150 - K_AHP 8 - K_C 100 - K_A 50 -*/ - - -soma none 0 10 0 8.46 Na 150 K_DR 400 Ca_conc 8.96e-3 Ca 50 - -spine_neck soma 0.5 0 0 0.2 glu 700 -spine_head . 0.5 0 0 0.5 glu 700 diff --git a/examples/snippets/MULTI/minchan.py b/examples/snippets/MULTI/minchan.py deleted file mode 100644 index 0f654f9..0000000 --- a/examples/snippets/MULTI/minchan.py +++ /dev/null @@ -1,333 +0,0 @@ -# minimal.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# Minimal model for loading rdesigneur: reac-diff elec signaling in neurons -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'mincell2.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - - -def makeNeuroMeshModel(): - diffLength = 6e-6 # Aim for 2 soma compartments. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 1 ) # soma/dend only - assert( ndc == 2 ) # split into 2. - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == 2 ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 1 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - assert( smstoich.numAllPools == 3 ) - assert( smdsolve.numPools == 3 ) - assert( smdsolve.numAllVoxels == 1 ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 1 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - assert( pmstoich.numAllPools == 3 ) - assert( pmdsolve.numPools == 3 ) - assert( pmdsolve.numAllVoxels == 1 ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - # Put in junctions between the diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - # set up adaptors - aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', ndc ) - adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) - chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( adaptCa ) == ndc ) - assert( len( chemCa ) == ndc ) - path = '/model/elec/soma/Ca_conc' - elecCa = moose.element( path ) - print "==========" - print elecCa - print adaptCa - print chemCa - moose.connect( elecCa, 'concOut', adaptCa[0], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 1e-3 # 520 to 0.0052 mM - #print adaptCa.outputOffset - #print adaptCa.scale - - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head', 'getVm', 'elec/spineVm' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/Ca', 'getConc', 'chem/spineCa' ) - addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 0.01 - ePlotDt = 0.5e-3 - cPlotDt = 0.01 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - """ - for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if ( i[0].diffConst > 0 ): - grandpaname = i.parent[0].parent.name + '/' - paname = i.parent[0].name + '/' - print grandpaname + paname + i[0].name, i[0].diffConst - print 'Neighbors:' - for t in moose.element( '/model/chem/spine/ksolve/junction' ).neighbors['masterJunction']: - print 'masterJunction <-', t.path - for t in moose.wildcardFind( '/model/chem/#/ksolve' ): - k = moose.element( t[0] ) - print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels - """ - ''' - moose.useClock( 4, '/model/chem/dend/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/dend/ksolve', 'process' ) - moose.useClock( 5, '/model/chem/spine/ksolve', 'process' ) - moose.useClock( 5, '/model/chem/psd/ksolve', 'process' ) - ''' - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 4, chemDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, cPlotDt ) - moose.setClock( 8, ePlotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) - moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) - moose.useClock( 7, '/graphs/chem/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - #hsolve = moose.HSolve( '/model/elec/hsolve' ) - #moose.useClock( 1, '/model/elec/hsolve', 'process' ) - #hsolve.dt = elecDt - #hsolve.target = '/model/elec/compt' - #moose.reinit() - moose.element( '/model/elec/spine_head' ).inject = 5e-12 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - """ - print 'pre' - eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'dend' - eca = moose.vec( '/model/chem/dend/DEND/Ca' ) - #for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): - for i in range( 13 ): - print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - - print 'PSD' - eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'spine' - eca = moose.vec( '/model/chem/spine/SPINE/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - """ - - moose.start( 0.5 ) - plt.ion() - fig = plt.figure( figsize=(8,8) ) - chem = fig.add_subplot( 211 ) - chem.set_ylim( 0, 0.004 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = chem.plot( pos, x.vector, label=x.name ) - plt.legend() - - elec = fig.add_subplot( 212 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = elec.plot( pos, x.vector, label=x.name ) - plt.legend() - - fig.canvas.draw() - raw_input() - - ''' - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - ''' - - pylab.show() - print 'All done' - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/minimal.g b/examples/snippets/MULTI/minimal.g deleted file mode 100644 index a149f65..0000000 --- a/examples/snippets/MULTI/minimal.g +++ /dev/null @@ -1,150 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Sep 22 23:33:41 2013 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.01 -CONTROLDT = 5 -PLOTDT = 1 -MAXTIME = 100 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 0 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-18 3 sphere "" white black 2 -6 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 0 -8 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black -3 \ - -6 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump group /kinetics/DEND 0 yellow black x 0 0 "" DEND defaultfile.g 0 0 \ - 0 -3 -3 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 1e-10 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry blue yellow -4 4 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 28 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 0 -3 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca 0 1e-10 0.08 0.08 4.8 4.8 0 0 60 0 \ - /kinetics/geometry[1] blue 28 -2 4 0 -simundump text /kinetics/SPINE/Ca/notes 0 "" -call /kinetics/SPINE/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM 0 1e-11 5 5 300 300 0 0 60 0 \ - /kinetics/geometry[1] 55 28 -2 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca_CaM 0 1e-11 0 0 0 0 0 0 60 0 \ - /kinetics/geometry[1] blue 28 1 -1 0 -simundump text /kinetics/SPINE/Ca_CaM/notes 0 "" -call /kinetics/SPINE/Ca_CaM/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/kreac 0 0.1 0.1 "" white 28 -1 0 0 -simundump text /kinetics/SPINE/kreac/notes 0 "" -call /kinetics/SPINE/kreac/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 0 "" PSD defaultfile.g 0 0 0 3 -3 \ - 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 1e-10 0.08 0.08 0.48 0.48 0 0 6 0 \ - /kinetics/geometry[2] blue 0 1 4 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM 0 1e-11 5 5 30 30 0 0 6 0 \ - /kinetics/geometry[2] 53 0 1 2 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_CaM 0 1e-11 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue 0 4 -1 0 -simundump text /kinetics/PSD/Ca_CaM/notes 0 "" -call /kinetics/PSD/Ca_CaM/notes LOAD \ -"" -simundump kreac /kinetics/PSD/kreac 0 0.1 0.1 "" white 0 2 0 0 -simundump text /kinetics/PSD/kreac/notes 0 "" -call /kinetics/PSD/kreac/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 100 0 1 0 -simundump xgraph /graphs/conc2 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 -simundump xcoredraw /edit/draw 0 -6 6 -10 6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/CaM REAC A B -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca_CaM REAC B A -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/kreac SUBSTRATE n -addmsg /kinetics/SPINE/CaM /kinetics/SPINE/kreac SUBSTRATE n -addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/kreac PRODUCT n -addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/kreac /kinetics/PSD/CaM REAC A B -addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca_CaM REAC B A -addmsg /kinetics/PSD/Ca /kinetics/PSD/kreac SUBSTRATE n -addmsg /kinetics/PSD/CaM /kinetics/PSD/kreac SUBSTRATE n -addmsg /kinetics/PSD/Ca_CaM /kinetics/PSD/kreac PRODUCT n -enddump -// End of dump - -complete_loading diff --git a/examples/snippets/MULTI/minimal.py b/examples/snippets/MULTI/minimal.py deleted file mode 100644 index 5035acd..0000000 --- a/examples/snippets/MULTI/minimal.py +++ /dev/null @@ -1,310 +0,0 @@ -# minimal.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# Minimal model for loading rdesigneur: reac-diff elec signaling in neurons -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -#import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'mincell.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - - -def makeNeuroMeshModel(): - diffLength = 20e-6 # Aim for just 3 compts. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 1 ) # dend, 5x (shaft+head) - assert( ndc == 1 ) - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == 1 ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 1 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - assert( smstoich.numAllPools == 3 ) - assert( smdsolve.numPools == 3 ) - assert( smdsolve.numAllVoxels == 1 ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 1 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - assert( pmstoich.numAllPools == 3 ) - assert( pmdsolve.numPools == 3 ) - assert( pmdsolve.numAllVoxels == 1 ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - # set up adaptors - aCa = moose.Adaptor( '/model/chem/psd/adaptCa', pdc ) - - adaptCa = moose.vec( '/model/chem/psd/adaptCa' ) - chemCa = moose.vec( '/model/chem/psd/Ca' ) - print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData - assert( len( adaptCa ) == pdc ) - assert( len( chemCa ) == pdc ) - path = '/model/elec/spine_head' - elecCa = moose.element( path ) - moose.connect( elecCa, 'VmOut', adaptCa[0], 'input', 'Single' ) - #moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 1e-5 # 520 to 0.0052 mM - #print adaptCa.outputOffset - #print adaptCa.scale - - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head', 'getVm', 'elec/spineVm' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/Ca', 'getConc', 'chem/spineCa' ) - addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 1e-1 - plotDt = 1e-1 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - """ - for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if ( i[0].diffConst > 0 ): - grandpaname = i.parent[0].parent.name + '/' - paname = i.parent[0].name + '/' - print grandpaname + paname + i[0].name, i[0].diffConst - print 'Neighbors:' - for t in moose.element( '/model/chem/spine/ksolve/junction' ).neighbors['masterJunction']: - print 'masterJunction <-', t.path - for t in moose.wildcardFind( '/model/chem/#/ksolve' ): - k = moose.element( t[0] ) - print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels - """ - ''' - moose.useClock( 4, '/model/chem/dend/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/dend/ksolve', 'process' ) - moose.useClock( 5, '/model/chem/spine/ksolve', 'process' ) - moose.useClock( 5, '/model/chem/psd/ksolve', 'process' ) - ''' - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 4, chemDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - #moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/chem/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - moose.useClock( 5, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 6, '/model/chem/#/ksolve', 'process' ) - #hsolve = moose.HSolve( '/model/elec/hsolve' ) - #moose.useClock( 1, '/model/elec/hsolve', 'process' ) - #hsolve.dt = elecDt - #hsolve.target = '/model/elec/compt' - #moose.reinit() - moose.element( '/model/elec/spine_head' ).inject = 1e-9 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - """ - print 'pre' - eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'dend' - eca = moose.vec( '/model/chem/dend/DEND/Ca' ) - #for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): - for i in range( 13 ): - print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - - print 'PSD' - eca = moose.vec( '/model/chem/psd/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'spine' - eca = moose.vec( '/model/chem/spine/SPINE/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - """ - - moose.start( 0.5 ) - plt.ion() - fig = plt.figure( figsize=(8,8) ) - chem = fig.add_subplot( 211 ) - chem.set_ylim( 0, 0.004 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, len(x.vector), 1 ) - line1, = chem.plot( pos, x.vector, label=x.name ) - plt.legend() - - elec = fig.add_subplot( 212 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, len(x.vector), 1 ) - line1, = elec.plot( pos, x.vector, label=x.name ) - plt.legend() - - fig.canvas.draw() - raw_input() - - ''' - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - ''' - - print 'All done' - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi1.py b/examples/snippets/MULTI/multi1.py deleted file mode 100644 index f4fc54e..0000000 --- a/examples/snippets/MULTI/multi1.py +++ /dev/null @@ -1,364 +0,0 @@ -# multi1.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# This loads in a low-detail model incorporating -# reac-diff and elec signaling in neurons. The reac-diff model -# has just Ca and CaM in it, and there are no-cross-compartment -# reactions though Ca diffuses everywhere. The elec model controls the -# Ca levels in the chem compartments. -# This version uses solvers for both chem and electrical parts. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) - #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - -def makeNeuroMeshModel(): - diffLength = 10e-6 # Aim for 2 soma compartments. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 36 ) # - assert( ndc == 278 ) # - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == ndc ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 13 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - print 'spine num Pools = ', smstoich.numAllPools - assert( smstoich.numAllPools == 3 ) - assert( smdsolve.numPools == 3 ) - assert( smdsolve.numAllVoxels == sdc ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - assert( pmstoich.numAllPools == 3 ) - assert( pmdsolve.numPools == 3 ) - assert( pmdsolve.numAllVoxels == pdc ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - # Put in junctions between the diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - ################################################################## - # set up adaptors - aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) - adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) - chemCa = moose.vec( '/model/chem/spine/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( adaptCa ) == sdc ) - assert( len( chemCa ) == sdc ) - for i in range( sdc ): - elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) - #print elecCa - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 1e-4 # 520 to 0.0052 mM - #print adaptCa.outputOffset - - - moose.le( '/model/chem/dend/DEND' ) - - - compts = neuroCompt.elecComptList - begin = neuroCompt.startVoxelInCompt - end = neuroCompt.endVoxelInCompt - aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) - adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) - chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( chemCa ) == ndc ) - for i in zip( compts, adaptCa, begin, end ): - name = i[0].path + '/Ca_conc' - if ( moose.exists( name ) ): - elecCa = moose.element( name ) - #print i[2], i[3], ' ', elecCa - #print i[1] - moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) - for j in range( i[2], i[3] ): - moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 20e-6 # 10 arb units to 2 uM. - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeCaPlots(): - graphs = moose.Neutral( '/graphs' ) - ca = moose.Neutral( '/graphs/ca' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) - addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) - addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) - addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) - addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) - addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) - -def makeGraphics(): - plt.ion() - fig = plt.figure( figsize=(10,16) ) - chem = fig.add_subplot( 411 ) - chem.set_ylim( 0, 0.006 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - plt.legend() - - elec = fig.add_subplot( 412 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - plt.legend() - - ca = fig.add_subplot( 413 ) - plt.ylabel( '[Ca] (mM)' ) - plt.xlabel( 'time (seconds)' ) - plt.legend() - - lenplot = fig.add_subplot( 414 ) - plt.ylabel( 'Ca (mM )' ) - plt.xlabel( 'Voxel#)' ) - plt.legend() - spineCa = moose.vec( '/model/chem/spine/Ca' ) - dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) - line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) - - Ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] - line3, = lenplot.plot( range( len( Ca ) ), Ca, label='elec' ) - - spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) - line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) - psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) - line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) - lenplot.set_ylim( 0, 0.01 ) - fig.canvas.draw() - return ( chem, elec, ca, lenplot, fig, line1, line2, line3, line4, line5 ) - -def updateGraphics( plotlist ): - spineCa = moose.vec( '/model/chem/spine/Ca' ) - dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - plotlist[5].set_ydata( spineCa.conc ) - plotlist[6].set_ydata( dendCa.conc ) - - ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] - plotlist[7].set_ydata( ca ) - spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) - plotlist[8].set_ydata( spineCaM.conc ) - psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) - plotlist[9].set_ydata( psdCaM.conc ) - plotlist[4].canvas.draw() - -def finalizeGraphics( plotlist, cPlotDt, ePlotDt ): - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = plotlist[0].plot( pos, x.vector, label=x.name ) - - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = plotlist[1].plot( pos, x.vector, label=x.name ) - - for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = plotlist[2].plot( pos, x.vector, label=x.name ) - plotlist[4].canvas.draw() - raw_input() - -def testNeuroMeshMultiscale(): - runtime = 0.5 - #elecDt = 0.2e-6 - elecDt = 10e-6 - chemDt = 0.0025 - ePlotDt = 0.5e-3 - cPlotDt = 0.0025 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - makeChemPlots() - makeElecPlots() - makeCaPlots() - for i in range (10): - moose.setClock( i, elecDt ) - for i in range ( 10, 20 ): - moose.setClock( i, chemDt ) - moose.setClock( 8, ePlotDt ) - moose.setClock( 18, cPlotDt ) - moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) - moose.useClock( 18, '/graphs/chem/#', 'process' ) - hsolve = moose.HSolve( '/model/elec/hsolve' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - plotlist = makeGraphics() - moose.reinit() - moose.element( '/model/elec/soma' ).inject = 2e-10 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - - numDivs = 200 - partialRuntime = runtime / numDivs - for i in range( numDivs ): - moose.start( partialRuntime ) - updateGraphics( plotlist ) -# moose.element( '/model/elec/soma' ).inject = 0 -# moose.start( 0.25 ) - finalizeGraphics( plotlist, cPlotDt, ePlotDt ) - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi1_ee.py b/examples/snippets/MULTI/multi1_ee.py deleted file mode 100644 index 3f3dc43..0000000 --- a/examples/snippets/MULTI/multi1_ee.py +++ /dev/null @@ -1,366 +0,0 @@ -# multi1.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# This loads in a medium-detail model incorporating -# reac-diff and elec signaling in neurons. The reac-diff model -# has just Ca and CaM in it, and there are no-cross-compartment -# reactions though Ca diffuses everywhere. The elec model controls the -# Ca levels in the chem compartments. -# This version uses solvers for both chem and electrical parts. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'minimal.g', '/model/chem', 'ee' ) - #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - -def makeNeuroMeshModel(): - diffLength = 10e-6 # Aim for 2 soma compartments. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 36 ) # - assert( ndc == 278 ) # - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == ndc ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 13 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - print 'spine num Pools = ', smstoich.numAllPools - assert( smstoich.numAllPools == 3 ) - assert( smdsolve.numPools == 3 ) - assert( smdsolve.numAllVoxels == sdc ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - assert( pmstoich.numAllPools == 3 ) - assert( pmdsolve.numPools == 3 ) - assert( pmdsolve.numAllVoxels == pdc ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - # Put in junctions between the diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - ################################################################## - # set up adaptors - aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) - adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) - chemCa = moose.vec( '/model/chem/spine/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( adaptCa ) == sdc ) - assert( len( chemCa ) == sdc ) - for i in range( sdc ): - elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) - #print elecCa - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 1e-4 # 520 to 0.0052 mM - #print adaptCa.outputOffset - - - moose.le( '/model/chem/dend/DEND' ) - - - compts = neuroCompt.elecComptList - begin = neuroCompt.startVoxelInCompt - end = neuroCompt.endVoxelInCompt - aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) - adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) - chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( chemCa ) == ndc ) - for i in zip( compts, adaptCa, begin, end ): - name = i[0].path + '/Ca_conc' - if ( moose.exists( name ) ): - elecCa = moose.element( name ) - #print i[2], i[3], ' ', elecCa - #print i[1] - moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) - for j in range( i[2], i[3] ): - moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 20e-6 # 10 arb units to 2 uM. - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeCaPlots(): - graphs = moose.Neutral( '/graphs' ) - ca = moose.Neutral( '/graphs/ca' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) - addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) - addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) - addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/Ca_CaM', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/spine/Ca_CaM', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) - addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) - addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) - -def makeGraphics( cPlotDt, ePlotDt ): - plt.ion() - fig = plt.figure( figsize=(10,16) ) - chem = fig.add_subplot( 411 ) - chem.set_ylim( 0, 0.006 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = chem.plot( pos, x.vector, label=x.name ) - plt.legend() - - elec = fig.add_subplot( 412 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = elec.plot( pos, x.vector, label=x.name ) - plt.legend() - - ca = fig.add_subplot( 413 ) - plt.ylabel( '[Ca] (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = ca.plot( pos, x.vector, label=x.name ) - plt.legend() - - lenplot = fig.add_subplot( 414 ) - plt.ylabel( 'Ca (mM )' ) - plt.xlabel( 'Voxel#)' ) - - spineCa = moose.vec( '/model/chem/spine/Ca' ) - dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) - line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) - - ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] - line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) - - spineCaM = moose.vec( '/model/chem/spine/Ca_CaM' ) - line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) - psdCaM = moose.vec( '/model/chem/psd/Ca_CaM' ) - line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) - plt.legend() - - - fig.canvas.draw() - raw_input() - - ''' - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - ''' - - print 'All done' - -def testNeuroMeshMultiscale(): - runtime = 0.5 - elecDt = 0.2e-6 - chemDt = 0.005 - ePlotDt = 0.5e-3 - cPlotDt = 0.005 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - makeChemPlots() - makeElecPlots() - makeCaPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 4, chemDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, cPlotDt ) - moose.setClock( 8, ePlotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 2, '/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) - moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) - moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) - moose.useClock( 7, '/graphs/chem/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) - ''' - hsolve = moose.HSolve( '/model/elec/hsolve' ) - moose.useClock( 1, '/model/elec/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - ''' - moose.reinit() - moose.element( '/model/elec/soma' ).inject = 2e-10 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - - moose.start( runtime ) -# moose.element( '/model/elec/soma' ).inject = 0 -# moose.start( 0.25 ) - makeGraphics( cPlotDt, ePlotDt ) - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi2.py b/examples/snippets/MULTI/multi2.py deleted file mode 100644 index 373e25a..0000000 --- a/examples/snippets/MULTI/multi2.py +++ /dev/null @@ -1,379 +0,0 @@ -# multi2.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# This loads in a medium-detail model incorporating -# reac-diff and elec signaling in neurons. The reac-diff model is -# psd_merged31d.g which has only Ca in the dendrites, but is quite -# interesting in the PSD and spine head. Problem is lots of -# cross-compartment reactions. -# has in it, and there are no-cross-compartment -# reactions though Ca diffuses everywhere. The elec model controls the -# Ca levels in the chem compartments. -# This version uses solvers for both chem and electrical parts. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - modelId = moose.loadModel( 'separate_compts.g', '/model/chem', 'ee' ) - #modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - -def makeNeuroMeshModel(): - diffLength = 10e-6 # Aim for 2 soma compartments. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 36 ) # - assert( ndc == 278 ) # - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == ndc ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 13 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - print 'spine num Pools = ', smstoich.numAllPools, smdsolve.numPools - assert( smstoich.numAllPools == 35 ) - assert( smdsolve.numPools == 30 ) - assert( smdsolve.numAllVoxels == sdc ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - print 'psd num Pools = ', pmstoich.numAllPools, pmdsolve.numPools - assert( pmstoich.numAllPools == 55 ) - assert( pmdsolve.numPools == 48 ) - assert( pmdsolve.numAllVoxels == pdc ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - # Put in junctions between the diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - ################################################################## - # set up adaptors - aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) - adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) - chemCa = moose.vec( '/model/chem/spine/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( adaptCa ) == sdc ) - assert( len( chemCa ) == sdc ) - for i in range( sdc ): - elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) - #print elecCa - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 5e-3 # 520 to 0.0052 mM - #print adaptCa.outputOffset - - - moose.le( '/model/chem/dend/DEND' ) - - - compts = neuroCompt.elecComptList - begin = neuroCompt.startVoxelInCompt - end = neuroCompt.endVoxelInCompt - aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) - adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) - chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( chemCa ) == ndc ) - for i in zip( compts, adaptCa, begin, end ): - name = i[0].path + '/Ca_conc' - if ( moose.exists( name ) ): - elecCa = moose.element( name ) - #print i[2], i[3], ' ', elecCa - #print i[1] - moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) - for j in range( i[2], i[3] ): - moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 20e-6 # 10 arb units to 2 uM. - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeCaPlots(): - graphs = moose.Neutral( '/graphs' ) - ca = moose.Neutral( '/graphs/ca' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) - addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) - addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) - addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/CaM_dash_Ca4', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/actCaMKII', 'getConc', 'chem/psdActCaMKII' ) - addPlot( '/model/chem/spine/CaM_dash_Ca4', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/CaM_dash_Ca4[12]', 'getConc', 'chem/spine12CaCam' ) - addPlot( '/model/chem/spine/actCaMKII', 'getConc', 'chem/spineActCaMKII' ) - addPlot( '/model/chem/spine/actCaMKII[11]', 'getConc', 'chem/spine12ActCaMKII' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/psd/Ca[11]', 'getConc', 'chem/psd12Ca' ) - addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) - addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) - #addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - #addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) - -def makeGraphics( cPlotDt, ePlotDt ): - plt.ion() - fig = plt.figure( figsize=(10,16) ) - chem = fig.add_subplot( 411 ) - chem.set_ylim( 0, 0.006 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = chem.plot( pos, x.vector, label=x.name ) - plt.legend() - - elec = fig.add_subplot( 412 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = elec.plot( pos, x.vector, label=x.name ) - plt.legend() - - ca = fig.add_subplot( 413 ) - plt.ylabel( '[Ca] (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = ca.plot( pos, x.vector, label=x.name ) - plt.legend() - - lenplot = fig.add_subplot( 414 ) - plt.ylabel( 'Ca (mM )' ) - plt.xlabel( 'Voxel#)' ) - - spineCa = moose.vec( '/model/chem/spine/Ca' ) - dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) - line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) - - ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] - line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) - - spineCaM = moose.vec( '/model/chem/spine/CaM_dash_Ca4' ) - line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) - psdCaM = moose.vec( '/model/chem/psd/CaM_dash_Ca4' ) - line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) - plt.legend() - - - fig.canvas.draw() - raw_input() - - ''' - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - ''' - - print 'All done' - -def testNeuroMeshMultiscale(): - useHsolve = 0 - runtime = 0.5 - elecDt = 10e-6 - chemDt = 0.005 - ePlotDt = 0.5e-3 - cPlotDt = 0.005 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - makeChemPlots() - makeElecPlots() - makeCaPlots() - for i in range( 10 ): - moose.setClock( i, elecDt ) - for i in range( 10, 20 ): - moose.setClock( i, chemDt ) - moose.setClock( 8, ePlotDt ) - moose.setClock( 18, cPlotDt ) - if useHsolve: - hsolve = moose.HSolve( '/model/elec/hsolve' ) - #moose.useClock( 1, '/model/elec/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - moose.reinit() - #soma = moose.element( '/model/elec/soma' ) - ''' - else: - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) - moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) - moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) - ''' - - moose.useClock( 18, '/graphs/chem/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) - moose.element( '/model/elec/soma' ).inject = 2e-10 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - - moose.start( runtime ) -# moose.element( '/model/elec/soma' ).inject = 0 -# moose.start( 0.25 ) - makeGraphics( cPlotDt, ePlotDt ) - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/multi3.py b/examples/snippets/MULTI/multi3.py deleted file mode 100644 index 005738c..0000000 --- a/examples/snippets/MULTI/multi3.py +++ /dev/null @@ -1,385 +0,0 @@ -# multi2.py --- -# Upi Bhalla, NCBS Bangalore 2014. -# -# Commentary: -# -# This loads in a medium-detail model incorporating -# reac-diff and elec signaling in neurons. The reac-diff model is -# psd_merged31d.g which has only Ca in the dendrites, but is quite -# interesting in the PSD and spine head. Problem is lots of -# cross-compartment reactions. -# has in it, and there are no-cross-compartment -# reactions though Ca diffuses everywhere. The elec model controls the -# Ca levels in the chem compartments. -# This version uses solvers for both chem and electrical parts. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import matplotlib.pyplot as plt -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - moose.setCwe( '/library' ) - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "Neutral" ) - return cellId - -def loadChem( diffLength ): - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/kinetics' ) - neuroCompt.separateSpines = 1 - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/compartment_1' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/compartment_2' ) - #print 'Meshvolume[neuro, spine, psd] = ', neuroCompt.mesh[0].volume, spineCompt.mesh[0].volume, psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - #modelId = moose.loadModel( 'separate_compts.g', '/model/chem', 'ee' ) - modelId = moose.loadModel( 'psd_merged31d.g', '/model/chem', 'ee' ) - neuroCompt.name = 'dend' - spineCompt.name = 'spine' - psdCompt.name = 'psd' - -def makeNeuroMeshModel(): - diffLength = 10e-6 # Aim for 2 soma compartments. - elec = loadElec() - loadChem( diffLength ) - neuroCompt = moose.element( '/model/chem/dend' ) - neuroCompt.diffLength = diffLength - neuroCompt.cellPortion( elec, '/model/elec/#' ) - for x in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if (x.diffConst > 0): - x.diffConst = 1e-11 - for x in moose.wildcardFind( '/model/chem/##/Ca' ): - x.diffConst = 1e-10 - - # Put in dend solvers - ns = neuroCompt.numSegments - ndc = neuroCompt.numDiffCompts - print 'ns = ', ns, ', ndc = ', ndc - assert( neuroCompt.numDiffCompts == neuroCompt.mesh.num ) - assert( ns == 36 ) # - assert( ndc == 278 ) # - nmksolve = moose.Ksolve( '/model/chem/dend/ksolve' ) - nmdsolve = moose.Dsolve( '/model/chem/dend/dsolve' ) - nmstoich = moose.Stoich( '/model/chem/dend/stoich' ) - nmstoich.compartment = neuroCompt - nmstoich.ksolve = nmksolve - nmstoich.dsolve = nmdsolve - nmstoich.path = "/model/chem/dend/##" - print 'done setting path, numPools = ', nmdsolve.numPools - assert( nmdsolve.numPools == 1 ) - assert( nmdsolve.numAllVoxels == ndc ) - assert( nmstoich.numAllPools == 1 ) - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/dend/DEND/Ca' ) - assert( ca.numData == ndc ) - - # Put in spine solvers. Note that these get info from the neuroCompt - spineCompt = moose.element( '/model/chem/spine' ) - sdc = spineCompt.mesh.num - print 'sdc = ', sdc - assert( sdc == 13 ) - smksolve = moose.Ksolve( '/model/chem/spine/ksolve' ) - smdsolve = moose.Dsolve( '/model/chem/spine/dsolve' ) - smstoich = moose.Stoich( '/model/chem/spine/stoich' ) - smstoich.compartment = spineCompt - smstoich.ksolve = smksolve - smstoich.dsolve = smdsolve - smstoich.path = "/model/chem/spine/##" - print 'spine num Pools = ', smstoich.numAllPools, 'dsolve n = ', smdsolve.numPools - assert( smstoich.numAllPools == 36 ) - assert( smdsolve.numPools == 31 ) - assert( smdsolve.numAllVoxels == sdc ) - - # Put in PSD solvers. Note that these get info from the neuroCompt - psdCompt = moose.element( '/model/chem/psd' ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - pmksolve = moose.Ksolve( '/model/chem/psd/ksolve' ) - pmdsolve = moose.Dsolve( '/model/chem/psd/dsolve' ) - pmstoich = moose.Stoich( '/model/chem/psd/stoich' ) - pmstoich.compartment = psdCompt - pmstoich.ksolve = pmksolve - pmstoich.dsolve = pmdsolve - pmstoich.path = "/model/chem/psd/##" - print 'psd num Pools = ', pmstoich.numAllPools - assert( pmstoich.numAllPools == 56 ) - assert( pmdsolve.numPools == 49 ) - assert( pmdsolve.numAllVoxels == pdc ) - foo = moose.element( '/model/chem/psd/Ca' ) - print 'PSD: numfoo = ', foo.numData - print 'PSD: numAllVoxels = ', pmksolve.numAllVoxels - - # Put in junctions between the diffusion solvers - nmdsolve.buildNeuroMeshJunctions( smdsolve, pmdsolve ) - - # Put in cross-compartment reactions between ksolvers - nmstoich.buildXreacs( smstoich ) - smstoich.buildXreacs( pmstoich ) - - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spine/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - ################################################################## - # set up adaptors - aCa = moose.Adaptor( '/model/chem/spine/adaptCa', sdc ) - adaptCa = moose.vec( '/model/chem/spine/adaptCa' ) - chemCa = moose.vec( '/model/chem/spine/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( adaptCa ) == sdc ) - assert( len( chemCa ) == sdc ) - for i in range( sdc ): - elecCa = moose.element( '/model/elec/spine_head_14_' + str(i+1) + '/NMDA_Ca_conc' ) - #print elecCa - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 5e-3 # 520 to 0.0052 mM - #print adaptCa.outputOffset - - - moose.le( '/model/chem/dend/DEND' ) - - - compts = neuroCompt.elecComptList - begin = neuroCompt.startVoxelInCompt - end = neuroCompt.endVoxelInCompt - aCa = moose.Adaptor( '/model/chem/dend/DEND/adaptCa', len( compts)) - adaptCa = moose.vec( '/model/chem/dend/DEND/adaptCa' ) - chemCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - #print 'aCa = ', aCa, ' foo = ', foo, "len( ChemCa ) = ", len( chemCa ), ", numData = ", chemCa.numData, "len( adaptCa ) = ", len( adaptCa ) - assert( len( chemCa ) == ndc ) - for i in zip( compts, adaptCa, begin, end ): - name = i[0].path + '/Ca_conc' - if ( moose.exists( name ) ): - elecCa = moose.element( name ) - #print i[2], i[3], ' ', elecCa - #print i[1] - moose.connect( elecCa, 'concOut', i[1], 'input', 'Single' ) - for j in range( i[2], i[3] ): - moose.connect( i[1], 'output', chemCa[j], 'setConc', 'Single' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 20e-6 # 10 arb units to 2 uM. - -def addPlot( objpath, field, plot ): - #assert moose.exists( objpath ) - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - if obj.className == 'Neutral': - print "addPlot failed: object is a Neutral: ", objpath - return moose.element( '/' ) - else: - #print "object was found: ", objpath, obj.className - moose.connect( tab, 'requestOut', obj, field ) - return tab - else: - print "addPlot failed: object not found: ", objpath - return moose.element( '/' ) - -def makeCaPlots(): - graphs = moose.Neutral( '/graphs' ) - ca = moose.Neutral( '/graphs/ca' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'ca/somaCa' ) - addPlot( '/model/elec/lat_11_2/Ca_conc', 'getCa', 'ca/lat11Ca' ) - addPlot( '/model/elec/spine_head_14_4/NMDA_Ca_conc', 'getCa', 'ca/spine4Ca' ) - addPlot( '/model/elec/spine_head_14_12/NMDA_Ca_conc', 'getCa', 'ca/spine12Ca' ) - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/spine_head_14_4', 'getVm', 'elec/spineVm' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - chem = moose.Neutral( '/graphs/chem' ) - addPlot( '/model/chem/psd/CaM_dash_Ca4', 'getConc', 'chem/psdCaCam' ) - addPlot( '/model/chem/psd/actCaMKII', 'getConc', 'chem/psdActCaMKII' ) - addPlot( '/model/chem/spine/CaM_dash_Ca4', 'getConc', 'chem/spineCaCam' ) - addPlot( '/model/chem/spine/CaM_dash_Ca4[12]', 'getConc', 'chem/spine12CaCam' ) - addPlot( '/model/chem/spine/actCaMKII', 'getConc', 'chem/spineActCaMKII' ) - addPlot( '/model/chem/spine/actCaMKII[11]', 'getConc', 'chem/spine12ActCaMKII' ) - addPlot( '/model/chem/psd/Ca', 'getConc', 'chem/psdCa' ) - addPlot( '/model/chem/psd/Ca[11]', 'getConc', 'chem/psd12Ca' ) - addPlot( '/model/chem/spine/Ca[3]', 'getConc', 'chem/spine4Ca' ) - addPlot( '/model/chem/spine/Ca[11]', 'getConc', 'chem/spine12Ca' ) - #addPlot( '/model/chem/dend/DEND/Ca', 'getConc', 'chem/dendCa' ) - #addPlot( '/model/chem/dend/DEND/Ca[20]', 'getConc', 'chem/dendCa20' ) - -def makeGraphics( cPlotDt, ePlotDt ): - plt.ion() - fig = plt.figure( figsize=(10,16) ) - chem = fig.add_subplot( 411 ) - chem.set_ylim( 0, 0.006 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/chem/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = chem.plot( pos, x.vector, label=x.name ) - plt.legend() - - elec = fig.add_subplot( 412 ) - plt.ylabel( 'Vm (V)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = elec.plot( pos, x.vector, label=x.name ) - plt.legend() - - ca = fig.add_subplot( 413 ) - plt.ylabel( '[Ca] (mM)' ) - plt.xlabel( 'time (seconds)' ) - for x in moose.wildcardFind( '/graphs/ca/#[ISA=Table]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * ePlotDt - line1, = ca.plot( pos, x.vector, label=x.name ) - plt.legend() - - lenplot = fig.add_subplot( 414 ) - plt.ylabel( 'Ca (mM )' ) - plt.xlabel( 'Voxel#)' ) - - spineCa = moose.vec( '/model/chem/spine/Ca' ) - dendCa = moose.vec( '/model/chem/dend/DEND/Ca' ) - line1, = lenplot.plot( range( len( spineCa ) ), spineCa.conc, label='spine' ) - line2, = lenplot.plot( range( len( dendCa ) ), dendCa.conc, label='dend' ) - - ca = [ x.Ca * 0.0001 for x in moose.wildcardFind( '/model/elec/##[ISA=CaConcBase]') ] - line3, = lenplot.plot( range( len( ca ) ), ca, label='elec' ) - - spineCaM = moose.vec( '/model/chem/spine/CaM_dash_Ca4' ) - line4, = lenplot.plot( range( len( spineCaM ) ), spineCaM.conc, label='spineCaM' ) - psdCaM = moose.vec( '/model/chem/psd/CaM_dash_Ca4' ) - line5, = lenplot.plot( range( len( psdCaM ) ), psdCaM.conc, label='psdCaM' ) - plt.legend() - - - fig.canvas.draw() - raw_input() - - ''' - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - ''' - - print 'All done' - -def testNeuroMeshMultiscale(): - useHsolve = 1 - runtime = 0.5 - if useHsolve: - elecDt = 50e-6 - else: - elecDt = 10e-6 - chemDt = 0.005 - ePlotDt = 0.5e-3 - cPlotDt = 0.005 - plotName = 'nm.plot' - - makeNeuroMeshModel() - print "after model is completely done" - for i in moose.wildcardFind( '/model/chem/#/#/#/transloc#' ): - print i[0].name, i[0].Kf, i[0].Kb, i[0].kf, i[0].kb - - makeChemPlots() - makeElecPlots() - makeCaPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 4, chemDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, cPlotDt ) - moose.setClock( 8, ePlotDt ) - if useHsolve: - hsolve = moose.HSolve( '/model/elec/hsolve' ) - moose.useClock( 1, '/model/elec/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - moose.reinit() - else: - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - #moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - #moose.useClock( 4, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 4, '/model/chem/#/dsolve', 'process' ) - moose.useClock( 4, '/model/chem/#/ksolve', 'init' ) - moose.useClock( 5, '/model/chem/#/ksolve', 'process' ) - moose.useClock( 6, '/model/chem/spine/adaptCa', 'process' ) - moose.useClock( 6, '/model/chem/dend/DEND/adaptCa', 'process' ) - moose.useClock( 7, '/graphs/chem/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#,/graphs/ca/#', 'process' ) - moose.element( '/model/elec/soma' ).inject = 2e-10 - moose.element( '/model/chem/psd/Ca' ).concInit = 0.001 - moose.element( '/model/chem/spine/Ca' ).concInit = 0.002 - moose.element( '/model/chem/dend/DEND/Ca' ).concInit = 0.003 - moose.reinit() - - moose.start( runtime ) -# moose.element( '/model/elec/soma' ).inject = 0 -# moose.start( 0.25 ) - makeGraphics( cPlotDt, ePlotDt ) - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# minimal.py ends here. diff --git a/examples/snippets/MULTI/proto18.py b/examples/snippets/MULTI/proto18.py deleted file mode 100644 index 06057af..0000000 --- a/examples/snippets/MULTI/proto18.py +++ /dev/null @@ -1,497 +0,0 @@ -#/* FILE INFORMATION -#** Based mostly on the traub91proto.g by Dave Beeman -#** Main difference is addition of Glu and NMDA channels -#** The 1991 Traub set of voltage and concentration dependent channels -#** Implemented as tabchannels by : Dave Beeman -#** R.D.Traub, R. K. S. Wong, R. Miles, and H. Michelson -#** Journal of Neurophysiology, Vol. 66, p. 635 (1991) -#** -#** This file depends on functions and constants defined in defaults.g -#** As it is also intended as an example of the use of the tabchannel -#** object to implement concentration dependent channels, it has extensive -#** comments. Note that the original units used in the paper have been -#** converted to SI (MKS) units. Also, we define the ionic equilibrium -#** potentials relative to the resting potential, EREST_ACT. In the -#** paper, this was defined to be zero. Here, we use -0.060 volts, the -#** measured value relative to the outside of the cell. -#*/ - -#/* November 1999 update for GENESIS 2.2: Previous versions of this file used -# a combination of a table, tabgate, and vdep_channel to implement the -# Ca-dependent K Channel - K(C). This new version uses the new tabchannel -# "instant" field, introduced in GENESIS 2.2, to implement an -# "instantaneous" gate for the multiplicative Ca-dependent factor in the -# conductance. This allows these channels to be used with the fast -# hsolve chanmodes > 1. -#*/ - -# Apr 2012 update for pymoose. Converted to equivalent MOOSE funcs. - -import moose -import numpy -import math - -#CONSTANTS -EREST_ACT = -0.060 #/* hippocampal cell resting potl */ -ENA = 0.115 + EREST_ACT #// 0.055 -EK = -0.015 + EREST_ACT #// -0.075 -ECA = 0.140 + EREST_ACT #// 0.080 -SOMA_A = 3.320e-9 #// soma area in square meters - -#/* -#For these channels, the maximum channel conductance (Gbar) has been -#calculated using the CA3 soma channel conductance densities and soma -#area. Typically, the functions which create these channels will be used -#to create a library of prototype channels. When the cell reader creates -#copies of these channels in various compartments, it will set the actual -#value of Gbar by calculating it from the cell parameter file. -#*/ - -#//======================================================================== -#// Tabulated Ca Channel -#//======================================================================== - -def make_Ca(): - if moose.exists( 'Ca' ): - return - Ca = moose.HHChannel( 'Ca' ) - Ca.Ek = ECA - Ca.Gbar = 40 * SOMA_A - Ca.Gk = 0 - Ca.Xpower = 2 - Ca.Ypower = 1 - Ca.Zpower = 0 - - xgate = moose.element( 'Ca/gateX' ) - xA = numpy.array( [ 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389, -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3, 3000, -0.1, 0.05 ] ) -# xgate.min = -0.1 -# xgate.max = 0.05 -# xgate.divs = 3000 -#// Converting Traub's expressions for the gCa/s alpha and beta functions -#// to SI units and entering the A, B, C, D and F parameters, we get: -# xgate.alpha( 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389 ) -# xgate.beta( -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3 ) - #xgate.setupAlpha( xA ) - xgate.alphaParms = xA - - -# The Y gate (gCa/r) is not quite of this form. For V > EREST_ACT, alpha = -# 5*{exp({-50*(V - EREST_ACT)})}. Otherwise, alpha = 5. Over the entire -# range, alpha + beta = 5. To create the Y_A and Y_B tables, we use some -# of the pieces of the setupalpha function. - ygate = moose.element( 'Ca/gateY' ) - ygate.min = -0.1 - ygate.max = 0.05 - ygate.divs = 3000 - yA = numpy.zeros( (ygate.divs + 1), dtype=float) - yB = numpy.zeros( (ygate.divs + 1), dtype=float) - - -#Fill the Y_A table with alpha values and the Y_B table with (alpha+beta) - dx = (ygate.max - ygate.min)/ygate.divs - x = ygate.min - for i in range( ygate.divs + 1 ): - if ( x > EREST_ACT): - yA[i] = 5.0 * math.exp( -50 * (x - EREST_ACT) ) - else: - yA[i] = 5.0 - yB[i] = 5.0 - x += dx - ygate.tableA = yA - ygate.tableB = yB -# Tell the cell reader that the current from this channel must be fed into -# the Ca_conc pool of calcium. - addmsg1 = moose.Mstring( '/library/Ca/addmsg1' ) - addmsg1.value = '. IkOut ../Ca_conc current' -# in some compartments, whe have an NMDA_Ca_conc object to put the current -# into. - addmsg2 = moose.Mstring( '/library/Ca/addmsg2' ) - addmsg2.value = '. IkOut ../NMDA_Ca_conc current' -# As we typically use the cell reader to create copies of these prototype -#elements in one or more compartments, we need some way to be sure that the -#needed messages are established. Although the cell reader has enough -#information to create the messages which link compartments to their channels -#and to other adjacent compartments, it most be provided with the information -#needed to establish additional messages. This is done by placing the -#message string in a user-defined field of one of the elements which is -#involved in the message. The cell reader recognizes the added object names -#"addmsg1", "addmsg2", etc. as indicating that they are to be -#evaluated and used to set up messages. The paths are relative to the -#element which contains the message string in its added field. Thus, -#"../Ca_conc" refers to the sibling element Ca_conc and "." -#refers to the Ca element itself. - - -#/************************************************************************* -#Next, we need an element to take the Calcium current calculated by the Ca -#channel and convert it to the Ca concentration. The "Ca_concen" object -#solves the equation dC/dt = B*I_Ca - C/tau, and sets Ca = Ca_base + C. As -#it is easy to make mistakes in units when using this Calcium diffusion -#equation, the units used here merit some discussion. - -#With Ca_base = 0, this corresponds to Traub's diffusion equation for -#concentration, except that the sign of the current term here is positive, as -#GENESIS uses the convention that I_Ca is the current flowing INTO the -#compartment through the channel. In SI units, the concentration is usually -#expressed in moles/m^3 (which equals millimoles/liter), and the units of B -#are chosen so that B = 1/(ion_charge * Faraday * volume). Current is -#expressed in amperes and one Faraday = 96487 coulombs. However, in this -#case, Traub expresses the concentration in arbitrary units, current in -#microamps and uses tau = 13.33 msec. If we use the same concentration units, -#but express current in amperes and tau in seconds, our B constant is then -#10^12 times the constant (called "phi") used in the paper. The actual value -#used will be typically be determined by the cell reader from the cell -#parameter file. However, for the prototype channel we wlll use Traub's -#corrected value for the soma. (An error in the paper gives it as 17,402 -#rather than 17.402.) In our units, this will be 17.402e12. - -#*************************************************************************/ - - -#//======================================================================== -#// Ca conc -#//======================================================================== - -def make_Ca_conc(): - if moose.exists( 'Ca_conc' ): - return - conc = moose.CaConc( 'Ca_conc' ) - conc.tau = 0.013333 # sec - conc.B = 17.402e12 # Curr to conc conversion for soma - conc.Ca_base = 0.0 - -#This Ca_concen element should receive a message from any calcium channels -# with the current going through the channel. Here we have this specified -# in the Ca channel, with the idea that more than one channel might -# contribute Ca ions to this calcium pool. In the original GENESIS file -# this was specified here in make_Ca_conc. - -#======================================================================== -# Tabulated Ca-dependent K AHP Channel -#======================================================================== - -# This is a tabchannel which gets the calcium concentration from Ca_conc -# in order to calculate the activation of its Z gate. It is set up much -# like the Ca channel, except that the A and B tables have values which are -# functions of concentration, instead of voltage. - -def make_K_AHP(): - if moose.exists( 'K_AHP' ): - return - - K_AHP = moose.HHChannel( 'K_AHP' ) - K_AHP.Ek = EK # V - K_AHP.Gbar = 8 * SOMA_A # S - K_AHP.Gk = 0 # S - K_AHP.Xpower = 0 - K_AHP.Ypower = 0 - K_AHP.Zpower = 1 - - zgate = moose.element( 'K_AHP/gateZ' ) - xmax = 500.0 - zgate.min = 0 - zgate.max = xmax - zgate.divs = 3000 - zA = numpy.zeros( (zgate.divs + 1), dtype=float) - zB = numpy.zeros( (zgate.divs + 1), dtype=float) - dx = (zgate.max - zgate.min)/zgate.divs - x = zgate.min - for i in range( zgate.divs + 1 ): - if (x < (xmax / 2.0 )): - zA[i] = 0.02*x - else: - zA[i] = 10.0 - zB[i] = zA[i] + 1.0 - x = x + dx - - zgate.tableA = zA - zgate.tableB = zB - addmsg1 = moose.Mstring( '/library/K_AHP/addmsg1' ) - addmsg1.value = '../Ca_conc concOut . concen' -# Use an added field to tell the cell reader to set up a message from the -# Ca_Conc with concentration info, to the current K_AHP object. - - -#//======================================================================== -#// Ca-dependent K Channel - K(C) - (vdep_channel with table and tabgate) -#//======================================================================== - -#The expression for the conductance of the potassium C-current channel has a -#typical voltage and time dependent activation gate, where the time dependence -#arises from the solution of a differential equation containing the rate -#parameters alpha and beta. It is multiplied by a function of calcium -#concentration that is given explicitly rather than being obtained from a -#differential equation. Therefore, we need a way to multiply the activation -#by a concentration dependent value which is determined from a lookup table. -#This is accomplished by using the Z gate with the new tabchannel "instant" -#field, introduced in GENESIS 2.2, to implement an "instantaneous" gate for -#the multiplicative Ca-dependent factor in the conductance. - -def make_K_C(): - if moose.exists( 'K_C'): - return - - K_C = moose.HHChannel( 'K_C' ) - K_C.Ek = EK # V - K_C.Gbar = 100.0 * SOMA_A # S - K_C.Gk = 0 # S - K_C.Xpower = 1 - K_C.Zpower = 1 - K_C.instant = 4 # Flag: 0x100 means Z gate is instant. - - # Now make a X-table for the voltage-dependent activation parameter. - xgate = moose.element( 'K_C/gateX' ) - xgate.min = -0.1 - xgate.max = 0.05 - xgate.divs = 3000 - xA = numpy.zeros( (xgate.divs + 1), dtype=float) - xB = numpy.zeros( (xgate.divs + 1), dtype=float) - dx = (xgate.max - xgate.min)/xgate.divs - x = xgate.min - for i in range( xgate.divs + 1 ): - alpha = 0.0 - beta = 0.0 - if (x < EREST_ACT + 0.05): - alpha = math.exp( 53.872 * (x - EREST_ACT) - 0.66835 ) / 0.018975 - beta = 2000* (math.exp ( (EREST_ACT + 0.0065 - x)/0.027)) - alpha - else: - alpha = 2000 * math.exp( ( EREST_ACT + 0.0065 - x)/0.027 ) - beta = 0.0 - xA[i] = alpha - xB[i] = alpha + beta - x = x + dx - xgate.tableA = xA - xgate.tableB = xB - -# Create a table for the function of concentration, allowing a -# concentration range of 0 to 1000, with 50 divisions. This is done -# using the Z gate, which can receive a CONCEN message. By using -# the "instant" flag, the A and B tables are evaluated as lookup tables, -# rather than being used in a differential equation. - zgate = moose.element( 'K_C/gateZ' ) - zgate.min = 0.0 - xmax = 500.0 - zgate.max = xmax - zgate.divs = 3000 - zA = numpy.zeros( (zgate.divs + 1), dtype=float) - zB = numpy.zeros( (zgate.divs + 1), dtype=float) - dx = ( zgate.max - zgate.min)/ zgate.divs - x = zgate.min - for i in range( xgate.divs + 1 ): - if ( x < ( xmax / 4.0 ) ): - zA[i] = x * 4.0 / xmax - else: - zA[i] = 1.0 - zB[i] = 1.0 - x += dx - zgate.tableA = zA - zgate.tableB = zB - -# Now we need to provide for messages that link to external elements. -# The message that sends the Ca concentration to the Z gate tables is stored -# in an added field of the channel, so that it may be found by the cell -# reader. - addmsg1 = moose.Mstring( '/library/K_C/addmsg1' ) - addmsg1.value = '../Ca_conc concOut . concen' - - -# The remaining channels are straightforward tabchannel implementations - -#/======================================================================== -#/ Tabchannel Na Hippocampal cell channel -#/======================================================================== -def make_Na(): - if moose.exists( 'Na' ): - return - Na = moose.HHChannel( 'Na' ) - Na.Ek = ENA # V - Na.Gbar = 300 * SOMA_A # S - Na.Gk = 0 # S - Na.Xpower = 2 - Na.Ypower = 1 - Na.Zpower = 0 - - xgate = moose.element( 'Na/gateX' ) - xA = numpy.array( [ 320e3 * (0.0131 + EREST_ACT), - -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004, - -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, - -1.0 * (0.0401 + EREST_ACT), 5.0e-3, - 3000, -0.1, 0.05 ] ) - xgate.alphaParms = xA - - - #xgate.alpha( 320e3 * (0.0131 + EREST_ACT), -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004 ) - #xgate.beta( -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 5.0e-3 ) - - ygate = moose.element( 'Na/gateY' ) - yA = numpy.array( [ 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018, - 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3, - 3000, -0.1, 0.05 ] ) - ygate.alphaParms = yA - - #ygate.alpha( 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018 ) - #ygate.beta( 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3 ) - -#======================================================================== -# Tabchannel K(DR) Hippocampal cell channel -#======================================================================== -def make_K_DR(): - if moose.exists( 'K_DR' ): - return - K_DR = moose.HHChannel( 'K_DR' ) - K_DR.Ek = EK # V - K_DR.Gbar = 150 * SOMA_A # S - K_DR.Gk = 0 # S - K_DR.Xpower = 1 - K_DR.Ypower = 0 - K_DR.Zpower = 0 - - xgate = moose.element( 'K_DR/gateX' ) - xA = numpy.array( [ 16e3 * (0.0351 + EREST_ACT), - -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005, - 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04, - 3000, -0.1, 0.05 ] ) - xgate.alphaParms = xA - #xgate.alpha( 16e3 * (0.0351 + EREST_ACT), -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005 ) - #xgate.beta( 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04 ) - -#======================================================================== -# Tabchannel K(A) Hippocampal cell channel -#======================================================================== -def make_K_A(): - if moose.exists( 'K_A' ): - return - K_A = moose.HHChannel( 'K_A' ) - K_A.Ek = EK # V - K_A.Gbar = 50 * SOMA_A # S - K_A.Gk = 0 # S - K_A.Xpower = 1 - K_A.Ypower = 1 - K_A.Zpower = 0 - - xgate = moose.element( 'K_A/gateX' ) - xA = numpy.array( [ 20e3 * (0.0131 + EREST_ACT), - -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01, - -17.5e3 * (0.0401 + EREST_ACT), - 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01, - 3000, -0.1, 0.05 ] ) - xgate.alphaParms = xA - # xgate.alpha( 20e3 * (0.0131 + EREST_ACT), -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01 ) - # xgate.beta( -17.5e3 * (0.0401 + EREST_ACT), 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01 ) - - ygate = moose.element( 'K_A/gateY' ) - yA = numpy.array( [ 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018, - 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005, - 3000, -0.1, 0.05 ] ) - ygate.alphaParms = yA - # ygate.alpha( 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018 ) - # ygate.beta( 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005 ) -#======================================================================== -# SynChan: Glu receptor -#======================================================================== - -def make_glu(): - if moose.exists( 'glu' ): - return - glu = moose.SynChan( 'glu' ) - glu.Ek = 0.0 - glu.tau1 = 2.0e-3 - glu.tau2 = 9.0e-3 - glu.Gbar = 40 * SOMA_A - -#======================================================================== -# SynChan: NMDA receptor -#======================================================================== - -def make_NMDA(): - if moose.exists( 'NMDA' ): - return - NMDA = moose.SynChan( 'NMDA' ) - NMDA.Ek = 0.0 - NMDA.tau1 = 20.0e-3 - NMDA.tau2 = 20.0e-3 - NMDA.Gbar = 5 * SOMA_A - - block = moose.MgBlock( '/library/NMDA/block' ) - block.CMg = 1.2 # [Mg] in mM - block.Zk = 2 - block.KMg_A = 1.0/0.28 - block.KMg_B = 1.0/62 - - moose.connect( NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) - addmsg1 = moose.Mstring( '/library/NMDA/addmsg1' ) - addmsg1.value = '.. channel ./block channel' - #Here we want to also tell the cell reader to _remove_ the original - #Gk, Ek term going from the channel to the compartment, as this is - # now handled by the MgBlock. - #addmsg2 = moose.Mstring( 'NMDA/addmsg2' - #addmsg2.value = 'DropMsg .. channel' - addmsg3 = moose.Mstring( '/library/NMDA/addmsg3' ) - addmsg3.value = '.. VmOut . Vm' - - -#addfield NMDA addmsg1 -#setfield NMDA addmsg1 ".. ./block VOLTAGE Vm" -#addfield NMDA addmsg2 -#setfield NMDA addmsg2 "./block .. CHANNEL Gk Ek" - -#======================================================================== -# The Ca_NMDA channel is a subset of the NMDA channel that carries Ca. -# It is identical to above, except that the Ek for Ca is much higher: -# 0.08 V from the consts at the top of this file. -# This is about the reversal potl for 1 uM Ca_in, 2 mM out. -# Also we do not want this channel to contribute to the current, -# which is already accounted for in the main channel. So there is -# no CHANNEL message to the parent compartment. -# I would like to have used the Nernst to do the Ca potential, and -# Synchans now take Ek messages but I haven't yet used this. -#======================================================================== - -def make_Ca_NMDA(): - if moose.exists( 'Ca_NMDA' ): - return - Ca_NMDA = moose.SynChan( 'Ca_NMDA' ) - Ca_NMDA.Ek = ECA - Ca_NMDA.tau1 = 20.0e-3 - Ca_NMDA.tau2 = 20.0e-3 - Ca_NMDA.Gbar = 5 * SOMA_A - - block = moose.MgBlock( '/library/Ca_NMDA/block' ) - block.CMg = 1.2 # [Mg] in mM - block.Zk = 2 - block.KMg_A = 1.0/0.28 - block.KMg_B = 1.0/62 - - moose.connect( Ca_NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) - addmsg1 = moose.Mstring( '/library/Ca_NMDA/addmsg1' ) - addmsg1.value = '.. VmOut ./block Vm' - addmsg2 = moose.Mstring( '/library/Ca_NMDA/addmsg2' ) - addmsg2.value = './block IkOut ../NMDA_Ca_conc current' - # The original model has the Ca current also coming here. - -#======================================================================== -# Ca pool for influx through Ca_NMDA -#======================================================================== -def make_NMDA_Ca_conc(): - if moose.exists( 'NMDA_Ca_conc' ): - return - NMDA_Ca_conc = moose.CaConc( 'NMDA_Ca_conc' ) - NMDA_Ca_conc.tau = 0.004 # sec. Faster in spine than dend - NMDA_Ca_conc.B = 17.402e12 # overridden by cellreader. - NMDA_Ca_conc.Ca_base = 0.0 - -# This pool used to set up Ca info coming to it. Now we insist that the -# originating channel should specify the deferred message. - -#===================================================================== -# SPIKE DETECTOR -#===================================================================== - -#//addmsg axon/spike axon BUFFER name -def make_axon(): - if moose.exists( 'axon' ): - return - axon = moose.SpikeGen( 'axon' ) - axon.threshold = -40e-3 # V - axon.abs_refract = 10e-3 # sec - diff --git a/examples/snippets/MULTI/psd_merged30.g b/examples/snippets/MULTI/psd_merged30.g deleted file mode 100644 index c896b1c..0000000 --- a/examples/snippets/MULTI/psd_merged30.g +++ /dev/null @@ -1,1452 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Fri Jul 19 17:23:18 2013 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 2000 -TRANSIENT_TIME = 10 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ - 12 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 12 20 70 33 0 -simundump text /kinetics/PSD/actCaMKII/notes 0 "" -call /kinetics/PSD/actCaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -6 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -2 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ -"" -simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 -simundump text /kinetics/PSD/PP1_PSD/notes 0 "" -call /kinetics/PSD/PP1_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry cyan yellow 44 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ - "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -2 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -6 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ - 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry orange yellow 35.35 21.88 0 -simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ - "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 36 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ - 26 0 -simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ - "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ - 17 26 0 -simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ - "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 22 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry orange yellow 21 22 0 -simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ - "Dephosph is mainly by PP2B" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 1e-12 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 1 yellow -1 33 0 -simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.002 "" white \ - yellow 21 40 0 -simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue yellow 12 33 0 -simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.11111 1 "" white yellow \ - 7 40 0 -simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 -simundump text /kinetics/PSD/move_to_PSD/notes 0 "" -call /kinetics/PSD/move_to_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R_S2/notes 0 "" -call /kinetics/PSD/R_S2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/R_SpS/notes 0 "" -call /kinetics/PSD/R_SpS/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 28 0 0 1 0 -simundump text /kinetics/PSD/R_SpSp/notes 0 "" -call /kinetics/PSD/R_SpSp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 61 0 -4 -2 0 -simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ - "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PKA-active 1 0 0.02 0.02 0.12 0.12 0 0 6 0 \ - /kinetics/geometry yellow 20 14 17 0 -simundump text /kinetics/PSD/PKA-active/notes 0 "" -call /kinetics/PSD/PKA-active/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ - 0.11111 36 9 0 0 "" red 27 "" 27 19 0 -simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" -call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ -"" -simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ - defaultfile.g 0 0 0 39 32 0 -simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ - /kinetics/geometry blue 33 67 8 0 -simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ - "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." -call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 1 6 12 0 0 6 0 \ - /kinetics/geometry 29 33 74 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ - 0.0033333 8 2 0 0 "" red 29 "" 72 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ - 0.00083333 2 0.5 0 0 "" red 29 "" 59 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ - 0.01 24 6 0 0 "" red 29 "" 78 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 23 33 84 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 59 33 52 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 47 33 61 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ - 0 7.732 0.0052083 8 2 0 0 "" red 47 "" 72 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ - 54.001 0.015625 24 6 0 0 "" red 47 "" 78 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ - 7.732 0.0013021 2 0.5 0 0 "" red 47 "" 60 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry blue 33 81 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ - 0.0022 "" white 33 54 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ - white 33 65 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ - 0 /kinetics/geometry 47 33 56 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 50 33 63 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 57 33 69 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 62 33 75 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 30 33 88 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 0 33 81 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.0001 0 "" white 33 63 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ - 75 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ - "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.0001 0 "" white 33 56 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ - "Same as for transloc_1\n\n\n" -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ - 89 13 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ - 20 45 17 0 -simundump text /kinetics/PSD/PP2A/notes 0 "" -call /kinetics/PSD/PP2A/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0.0012791 0.0012791 \ - 0.06907 0.06907 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ - "k1 changed from 3.3e-6 to 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 2.2155e-07 2.2155e-07 \ - 1.1964e-05 1.1964e-05 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 27 \ - 20 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ - "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM 1 1e-12 20 20 120 120 0 0 6 0 \ - /kinetics/geometry pink blue 35 39 0 -simundump text /kinetics/PSD/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.077501 10 "" white blue \ - 49 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry hotpink blue 47 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ - 37 36 0 -simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 43 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ - 45 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ - blue 41 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 39 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/PSD/CaM/Ca 1 1e-12 0.08 0.08 0.48 0.48 0 0 6 0 \ - /kinetics/geometry red blue 43 33 0 -simundump text /kinetics/PSD/CaM/Ca/notes 0 "" -call /kinetics/PSD/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue blue 52 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM_CaN 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 1 20 30 33 0 -simundump text /kinetics/PSD/CaM_CaN/notes 0 "" -call /kinetics/PSD/CaM_CaN/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ -"" -simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 8 \ - -30 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 1e-12 0.08 0 0 48 0 0 600 0 \ - /kinetics/geometry[3] 62 13 13 -27 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 29 -23 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ - /kinetics/geometry 0 yellow -8 -10 0 -simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM 1 1e-12 20 20 1080 1080 0 0 54 0 \ - /kinetics/geometry pink blue 37 4 0 -simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.0086112 10 "" white \ - blue 51 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry hotpink blue 49 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ - blue 39 1 0 -simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 45 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ - blue 47 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ - blue 43 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 41 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-12 0.08 0.08 4.32 4.32 0 0 54 0 \ - /kinetics/geometry red blue 45 -2 0 -simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" -call /kinetics/SPINE/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry blue blue 54 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ - defaultfile.g 0 0 0 41 -3 0 -simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 1 54 108 0 0 54 0 \ - /kinetics/geometry 29 33 76 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ - 69.588 0.00037037 8 2 0 0 "" red 29 "" 74 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ - 69.588 9.2592e-05 2 0.5 0 0 "" red 29 "" 61 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ - 486.01 0.0011111 24 6 0 0 "" red 29 "" 80 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ - 54 0 /kinetics/geometry 23 33 86 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 59 33 54 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 47 33 63 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ - 0 0 0 69.588 0.0005787 8 2 0 0 "" red 47 "" 74 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ - 0 486.01 0.0017361 24 6 0 0 "" red 47 "" 80 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ - 0 69.588 0.00014468 2 0.5 0 0 "" red 47 "" 62 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 1 1 54 54 0 0 54 \ - 0 /kinetics/geometry blue 33 83 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ - 0.0022 "" white 33 56 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ - white 33 67 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 \ - 54 0 /kinetics/geometry 47 33 58 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 50 33 65 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 57 33 71 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 0 20 20 1080 1080 0 0 54 \ - 0 /kinetics/geometry 62 33 77 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 30 33 90 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 0 33 83 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM_CaN 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 1 5 32 -2 0 -simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" -call /kinetics/SPINE/CaM_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ - /kinetics/geometry 12 5 72 -2 0 -simundump text /kinetics/SPINE/actCaMKII/notes 0 "" -call /kinetics/SPINE/actCaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/PP2A 1 0 4 4 216 216 0 0 54 0 \ - /kinetics/geometry 62 5 46 -10 0 -simundump text /kinetics/SPINE/PP2A/notes 0 \ - "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 63 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 73 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 80 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0023148 \ - 0.5 0.125 0 0 "" red 62 "" 90 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 85 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 -simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" -call /kinetics/SPINE/CaN_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 1e-12 1 1 54 54 0 0 54 0 \ - /kinetics/geometry 1 yellow 4 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.002 "" \ - white yellow 23 5 0 -simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ - "From Quintana et al 2005" -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0013717 1 "" white \ - yellow 8 5 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] blue yellow 15 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 9587.3 0 4 0 -simundump xgraph /graphs/conc2 0 0 9587.3 0 16.804 0 -simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 4 0 0 1 -simundump xplot /graphs/conc1/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc1/PP1-active.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " cyan 0 0 1 -simundump xplot /graphs/conc1/CaM_CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc1/tot-CaM-CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc1/tot-auto.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 29 0 0 1 -simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/iR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 0 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xplot /graphs/conc2/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc2/CaM_CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot-CaM-CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/tot-auto.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 29 0 0 1 -simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 9587.3 0 4 0 -simundump xgraph /moregraphs/conc4 0 0 9587.3 0 4 0 -simundump xcoredraw /edit/draw 0 -10 92 -38.4 28.6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"23 Dec 2011" \ -"CaMKII_merged16.g" \ -"Added Ca-binding step to the CaN activation pathway." \ -"Based on CaMKII_merged15.g" \ -"" \ -"CaMKII_merged16a.g" \ -"Halved the Kb for CaN-bind-CaM" \ -"" \ -"CaMKII_merged17.g" \ -" Used more rates from Saucerman and Bers BPJ 2008" \ -"" \ -"CaMKII_merged17a.g" \ -"Fix to init conc of PP1-active in PSD: from 2 to 4." \ -"" \ -"CaMKII_merged17b.g" \ -"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ -"levels in PSD. Scaled kcats down to match." \ -"" \ -"CaMKII_merged20.g" \ -"First pass at a version with a reasonable basal PKA and a less" \ -"saturating effect on PP1-active of CaMKII." \ -"" \ -"CaMKII_merged20c.g: This version turns on but does not go off" \ -"afterwards. " \ -"" \ -"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ -"" \ -"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ -"" \ -"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ -"sites given that CaMKII is a dodecamer." \ -"" \ -"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ -"0.002/sec." \ -"" \ -"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ -"" \ -"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ -"CaM with 6:54." \ -"" \ -"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ -"" \ -"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ -"CaMKII in bulk." \ -"" \ -"19 July 2013. psd_merged30.g: Variant for signeur loading." \ -"" -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B -addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B -addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n -addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC B A -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 -addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/PSD/PP1_PSD/PP1-active /graphs/conc1/PP1-active.Co PLOT Co *PP1-active.Co *cyan -addmsg /kinetics/PSD/CaM_CaN /graphs/conc1/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /graphs/conc1/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /graphs/conc1/tot-auto.Co PLOT Co *tot-auto.Co *29 -addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -addmsg /kinetics/SPINE/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 -addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/SPINE/CaM_CaN /graphs/conc2/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /graphs/conc2/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /graphs/conc2/tot-auto.Co PLOT Co *tot-auto.Co *29 -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -enddump -// End of dump - -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -complete_loading diff --git a/examples/snippets/MULTI/psd_merged30b.g b/examples/snippets/MULTI/psd_merged30b.g deleted file mode 100644 index 73e00c2..0000000 --- a/examples/snippets/MULTI/psd_merged30b.g +++ /dev/null @@ -1,1452 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Mon Aug 12 22:34:03 2013 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 2000 -TRANSIENT_TIME = 10 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ - 12 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 12 20 70 33 0 -simundump text /kinetics/PSD/actCaMKII/notes 0 "" -call /kinetics/PSD/actCaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -6 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -2 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ -"" -simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 -simundump text /kinetics/PSD/PP1_PSD/notes 0 "" -call /kinetics/PSD/PP1_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry cyan yellow 44 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ - "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -2 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -6 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ - 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry orange yellow 35.35 21.88 0 -simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ - "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 36 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ - 26 0 -simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ - "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ - 17 26 0 -simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ - "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 22 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry orange yellow 21 22 0 -simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ - "Dephosph is mainly by PP2B" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 1e-12 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 1 yellow -1 33 0 -simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.002 "" white \ - yellow 21 40 0 -simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue yellow 12 33 0 -simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.11111 1 "" white yellow \ - 7 40 0 -simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 -simundump text /kinetics/PSD/move_to_PSD/notes 0 "" -call /kinetics/PSD/move_to_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R_S2/notes 0 "" -call /kinetics/PSD/R_S2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/R_SpS/notes 0 "" -call /kinetics/PSD/R_SpS/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 28 0 0 1 0 -simundump text /kinetics/PSD/R_SpSp/notes 0 "" -call /kinetics/PSD/R_SpSp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 61 0 -4 -2 0 -simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ - "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PKA-active 1 0 0.02 0.02 0.12 0.12 0 0 6 0 \ - /kinetics/geometry yellow 20 14 17 0 -simundump text /kinetics/PSD/PKA-active/notes 0 "" -call /kinetics/PSD/PKA-active/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ - 0.11111 36 9 0 0 "" red 27 "" 27 19 0 -simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" -call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ -"" -simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ - defaultfile.g 0 0 0 39 32 0 -simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ - /kinetics/geometry blue 33 67 8 0 -simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ - "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." -call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 1 6 12 0 0 6 0 \ - /kinetics/geometry 29 33 74 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ - 0.0033333 8 2 0 0 "" red 29 "" 72 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ - 0.00083333 2 0.5 0 0 "" red 29 "" 59 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ - 0.01 24 6 0 0 "" red 29 "" 78 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 23 33 84 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 59 33 52 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 47 33 61 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ - 0 7.732 0.0052083 8 2 0 0 "" red 47 "" 72 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ - 54.001 0.015625 24 6 0 0 "" red 47 "" 78 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ - 7.732 0.0013021 2 0.5 0 0 "" red 47 "" 60 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry blue 33 81 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ - 0.0022 "" white 33 54 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ - white 33 65 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ - 0 /kinetics/geometry 47 33 56 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 50 33 63 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 57 33 69 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 62 33 75 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 30 33 88 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 0 33 81 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.0001 0 "" white 33 63 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ - 75 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ - "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.0001 0 "" white 33 56 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ - "Same as for transloc_1\n\n\n" -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ - 89 13 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ - 20 45 17 0 -simundump text /kinetics/PSD/PP2A/notes 0 "" -call /kinetics/PSD/PP2A/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0.0012791 0.0012791 \ - 0.06907 0.06907 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ - "k1 changed from 3.3e-6 to 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 2.2155e-07 2.2155e-07 \ - 1.1964e-05 1.1964e-05 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 27 \ - 20 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ - "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM 1 1e-12 20 20 120 120 0 0 6 0 \ - /kinetics/geometry pink blue 35 39 0 -simundump text /kinetics/PSD/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.077501 10 "" white blue \ - 49 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry hotpink blue 47 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ - 37 36 0 -simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 43 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ - 45 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ - blue 41 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 39 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 0 \ - /kinetics/geometry red blue 43 33 0 -simundump text /kinetics/PSD/CaM/Ca/notes 0 "" -call /kinetics/PSD/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue blue 52 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM_CaN 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 1 20 30 33 0 -simundump text /kinetics/PSD/CaM_CaN/notes 0 "" -call /kinetics/PSD/CaM_CaN/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ -"" -simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 8 \ - -30 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 1e-11 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry[3] 62 13 13 -27 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 29 -23 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ - /kinetics/geometry 0 yellow -8 -10 0 -simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM 1 1e-12 20 20 1080 1080 0 0 54 0 \ - /kinetics/geometry pink blue 37 4 0 -simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.0086112 10 "" white \ - blue 51 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry hotpink blue 49 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ - blue 39 1 0 -simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 45 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ - blue 47 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ - blue 43 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 41 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ - /kinetics/geometry red blue 45 -2 0 -simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" -call /kinetics/SPINE/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry blue blue 54 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ - defaultfile.g 0 0 0 41 -3 0 -simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 1 54 108 0 0 54 0 \ - /kinetics/geometry 29 33 76 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ - 69.588 0.00037037 8 2 0 0 "" red 29 "" 74 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ - 69.588 9.2592e-05 2 0.5 0 0 "" red 29 "" 61 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ - 486.01 0.0011111 24 6 0 0 "" red 29 "" 80 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ - 54 0 /kinetics/geometry 23 33 86 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 59 33 54 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 47 33 63 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ - 0 0 0 69.588 0.0005787 8 2 0 0 "" red 47 "" 74 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ - 0 486.01 0.0017361 24 6 0 0 "" red 47 "" 80 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ - 0 69.588 0.00014468 2 0.5 0 0 "" red 47 "" 62 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 1 1 54 54 0 0 54 \ - 0 /kinetics/geometry blue 33 83 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ - 0.0022 "" white 33 56 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ - white 33 67 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 \ - 54 0 /kinetics/geometry 47 33 58 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 50 33 65 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 57 33 71 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 0 20 20 1080 1080 0 0 54 \ - 0 /kinetics/geometry 62 33 77 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 30 33 90 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 0 33 83 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM_CaN 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 1 5 32 -2 0 -simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" -call /kinetics/SPINE/CaM_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ - /kinetics/geometry 12 5 72 -2 0 -simundump text /kinetics/SPINE/actCaMKII/notes 0 "" -call /kinetics/SPINE/actCaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/PP2A 1 0 4 4 216 216 0 0 54 0 \ - /kinetics/geometry 62 5 46 -10 0 -simundump text /kinetics/SPINE/PP2A/notes 0 \ - "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 63 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 73 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 80 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0023148 \ - 0.5 0.125 0 0 "" red 62 "" 90 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 85 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 -simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" -call /kinetics/SPINE/CaN_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 1e-12 1 1 54 54 0 0 54 0 \ - /kinetics/geometry 1 yellow 4 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.002 "" \ - white yellow 23 5 0 -simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ - "From Quintana et al 2005" -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0013717 1 "" white \ - yellow 8 5 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] blue yellow 15 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2000 0 4 0 -simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 -simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 4 0 0 1 -simundump xplot /graphs/conc1/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc1/PP1-active.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " cyan 0 0 1 -simundump xplot /graphs/conc1/CaM_CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc1/tot-CaM-CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc1/tot-auto.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 29 0 0 1 -simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/iR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 0 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xplot /graphs/conc2/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc2/CaM_CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot-CaM-CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/tot-auto.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 29 0 0 1 -simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 -simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 -simundump xcoredraw /edit/draw 0 -10 92 -32 42 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"23 Dec 2011" \ -"CaMKII_merged16.g" \ -"Added Ca-binding step to the CaN activation pathway." \ -"Based on CaMKII_merged15.g" \ -"" \ -"CaMKII_merged16a.g" \ -"Halved the Kb for CaN-bind-CaM" \ -"" \ -"CaMKII_merged17.g" \ -" Used more rates from Saucerman and Bers BPJ 2008" \ -"" \ -"CaMKII_merged17a.g" \ -"Fix to init conc of PP1-active in PSD: from 2 to 4." \ -"" \ -"CaMKII_merged17b.g" \ -"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ -"levels in PSD. Scaled kcats down to match." \ -"" \ -"CaMKII_merged20.g" \ -"First pass at a version with a reasonable basal PKA and a less" \ -"saturating effect on PP1-active of CaMKII." \ -"" \ -"CaMKII_merged20c.g: This version turns on but does not go off" \ -"afterwards. " \ -"" \ -"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ -"" \ -"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ -"" \ -"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ -"sites given that CaMKII is a dodecamer." \ -"" \ -"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ -"0.002/sec." \ -"" \ -"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ -"" \ -"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ -"CaM with 6:54." \ -"" \ -"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ -"" \ -"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ -"CaMKII in bulk." \ -"" \ -"19 July 2013. psd_merged30.g: Variant for signeur loading." \ -"" -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B -addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B -addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n -addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC B A -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 -addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/PSD/PP1_PSD/PP1-active /graphs/conc1/PP1-active.Co PLOT Co *PP1-active.Co *cyan -addmsg /kinetics/PSD/CaM_CaN /graphs/conc1/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /graphs/conc1/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /graphs/conc1/tot-auto.Co PLOT Co *tot-auto.Co *29 -addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -addmsg /kinetics/SPINE/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 -addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/SPINE/CaM_CaN /graphs/conc2/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /graphs/conc2/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /graphs/conc2/tot-auto.Co PLOT Co *tot-auto.Co *29 -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -enddump -// End of dump - -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -complete_loading diff --git a/examples/snippets/MULTI/psd_merged31d.g b/examples/snippets/MULTI/psd_merged31d.g deleted file mode 100644 index e677d13..0000000 --- a/examples/snippets/MULTI/psd_merged31d.g +++ /dev/null @@ -1,1488 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Mon Sep 23 22:48:38 2013 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 2000 -TRANSIENT_TIME = 10 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[5] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ - 12 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 12 20 70 33 0 -simundump text /kinetics/PSD/actCaMKII/notes 0 "" -call /kinetics/PSD/actCaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -6 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -2 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ -"" -simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 -simundump text /kinetics/PSD/PP1_PSD/notes 0 "" -call /kinetics/PSD/PP1_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry cyan yellow 44 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ - "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -2 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -6 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ - 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ - 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ - /kinetics/geometry orange yellow 35.35 21.88 0 -simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ - "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 36 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ - 26 0 -simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ - "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ - 17 26 0 -simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ - "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry brown yellow 22 29 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry orange yellow 21 22 0 -simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ - "Dephosph is mainly by PP2B" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 1e-12 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 1 yellow -1 33 0 -simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.002 "" white \ - yellow 21 40 0 -simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue yellow 12 33 0 -simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.11111 1 "" white yellow \ - 7 40 0 -simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" -call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 -simundump text /kinetics/PSD/move_to_PSD/notes 0 "" -call /kinetics/PSD/move_to_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R_S2/notes 0 "" -call /kinetics/PSD/R_S2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/R_SpS/notes 0 "" -call /kinetics/PSD/R_SpS/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 28 0 0 1 0 -simundump text /kinetics/PSD/R_SpSp/notes 0 "" -call /kinetics/PSD/R_SpSp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 61 0 -4 -2 0 -simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ - "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PKA-active 1 0 0.02 0.02 0.12 0.12 0 0 6 0 \ - /kinetics/geometry yellow 20 14 17 0 -simundump text /kinetics/PSD/PKA-active/notes 0 "" -call /kinetics/PSD/PKA-active/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ - 0.11111 36 9 0 0 "" red 27 "" 27 19 0 -simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" -call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ -"" -simundump group /kinetics/PSD/CaMKII_PSD 0 27 20 x 0 0 "" CaMKII_PSD \ - defaultfile.g 0 0 0 39 32 0 -simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 1 6 12 0 0 6 0 \ - /kinetics/geometry 29 27 74 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ - 0.0033333 8 2 0 0 "" red 29 "" 72 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ - 0.00083333 2 0.5 0 0 "" red 29 "" 59 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ - 0.01 24 6 0 0 "" red 29 "" 78 23 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ - /kinetics/geometry 23 27 84 36 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 59 27 52 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 47 27 61 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ - 0 7.732 0.0052083 8 2 0 0 "" red 47 "" 72 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ - 54.001 0.015625 24 6 0 0 "" red 47 "" 78 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ - 7.732 0.0013021 2 0.5 0 0 "" red 47 "" 60 20 0 -simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry blue 27 81 33 0 -simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ - 0.0022 "" white 27 54 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ - white 27 65 28 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ - 0 /kinetics/geometry 47 27 56 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 50 27 63 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 57 27 69 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 62 27 75 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 30 27 88 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 0 27 81 22 0 -simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 1 1e-06 "" white 27 63 \ - 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 27 \ - 75 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ - "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.0001 1e-06 "" white \ - 27 56 12 0 -simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ - "Same as for transloc_1\n\n\n" -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 27 \ - 89 13 0 -simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -simundump kpool /kinetics/PSD/CaMKII_PSD/bar 0 0 0.66667 0.66667 4 4 0 0 6 0 \ - /kinetics/geometry[4] blue 27 50 18 0 -simundump text /kinetics/PSD/CaMKII_PSD/bar/notes 0 "" -call /kinetics/PSD/CaMKII_PSD/bar/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ - 20 45 17 0 -simundump text /kinetics/PSD/PP2A/notes 0 "" -call /kinetics/PSD/PP2A/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0.0012791 0.0012791 \ - 0.06907 0.06907 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ - "k1 changed from 3.3e-6 to 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 2.2155e-07 2.2155e-07 \ - 1.1964e-05 1.1964e-05 54.001 0.0013289 0.92593 0.22222 0 0 "" red red "" 27 \ - 20 0 -simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ - "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM 1 1e-12 20 20 120 120 0 0 6 0 \ - /kinetics/geometry pink blue 35 39 0 -simundump text /kinetics/PSD/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.077501 10 "" white blue \ - 49 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry hotpink blue 47 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ - 37 36 0 -simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 43 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ - 45 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ - blue 41 36 0 -simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry pink blue 39 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 4 \ - /kinetics/geometry red blue 43 33 0 -simundump text /kinetics/PSD/CaM/Ca/notes 0 "" -call /kinetics/PSD/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue blue 52 39 0 -simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" -call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM_CaN 1 1e-12 0 0 0 0 0 0 6 0 \ - /kinetics/geometry 1 20 30 33 0 -simundump text /kinetics/PSD/CaM_CaN/notes 0 "" -call /kinetics/PSD/CaM_CaN/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ -"" -simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ - 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 -simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" -call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ -"" -simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 8 \ - -30 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 1e-11 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry[3] 62 13 13 -27 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ - 29 -23 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ - /kinetics/geometry 0 yellow -8 -10 0 -simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ - defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM 1 1e-12 20 20 1080 1080 0 0 54 0 \ - /kinetics/geometry pink blue 37 4 0 -simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ - "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.0086112 10 "" white \ - blue 51 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ - "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry hotpink blue 49 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ - blue 39 1 0 -simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 45 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ - blue 47 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ - "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ - blue 43 1 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ - "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry pink blue 41 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ - "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ - /kinetics/geometry red blue 45 -2 0 -simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" -call /kinetics/SPINE/CaM/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry blue blue 54 4 0 -simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" -call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ - defaultfile.g 0 0 0 41 -3 0 -simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 1 54 108 0 0 54 0 \ - /kinetics/geometry 29 33 76 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ - 69.588 0.00037037 8 2 0 0 "" red 29 "" 74 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ - 69.588 9.2592e-05 2 0.5 0 0 "" red 29 "" 61 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ - 486.01 0.0011111 24 6 0 0 "" red 29 "" 80 -12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ - 54 0 /kinetics/geometry 23 33 86 1 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 59 33 54 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 47 33 63 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ - 0 0 0 69.588 0.0005787 8 2 0 0 "" red 47 "" 74 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ - 0 486.01 0.0017361 24 6 0 0 "" red 47 "" 80 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ - 0 69.588 0.00014468 2 0.5 0 0 "" red 47 "" 62 -15 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ - "" -call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 1 1 54 54 0 0 54 \ - 0 /kinetics/geometry blue 33 83 -2 0 -simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ - 0.0022 "" white 33 56 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ - "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ - white 33 67 -7 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 0 0 0 0 0 0 0 \ - 54 0 /kinetics/geometry 47 33 58 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 50 33 65 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 57 33 71 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 0 20 20 1080 1080 0 0 54 \ - 0 /kinetics/geometry 62 33 77 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 0 0 0 0 0 0 0 54 \ - 0 /kinetics/geometry 30 33 90 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 0 33 83 -13 0 -simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII_BULK/NMDAR 0 0 4.4444 4.4444 240 240 0 \ - 0 54 0 /kinetics/geometry blue 33 67 8 0 -simundump text /kinetics/SPINE/CaMKII_BULK/NMDAR/notes 0 \ - "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." -call /kinetics/SPINE/CaMKII_BULK/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -simundump kpool /kinetics/SPINE/CaMKII_BULK/foo 0 0 0.18519 0.18519 10 10 0 0 \ - 54 0 /kinetics/geometry[5] blue 33 43 9 0 -simundump text /kinetics/SPINE/CaMKII_BULK/foo/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/foo/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaMKII_BULK/tr0 0 0.1 0.1 "" white 33 48 12 0 -simundump text /kinetics/SPINE/CaMKII_BULK/tr0/notes 0 "" -call /kinetics/SPINE/CaMKII_BULK/tr0/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM_CaN 1 1e-12 0 0 0 0 0 0 54 0 \ - /kinetics/geometry 1 5 32 -2 0 -simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" -call /kinetics/SPINE/CaM_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ - /kinetics/geometry 12 5 72 -2 0 -simundump text /kinetics/SPINE/actCaMKII/notes 0 "" -call /kinetics/SPINE/actCaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/PP2A 1 0 4 4 216 216 0 0 54 0 \ - /kinetics/geometry 62 5 46 -10 0 -simundump text /kinetics/SPINE/PP2A/notes 0 \ - "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 63 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 73 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 80 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0023148 \ - 0.5 0.125 0 0 "" red 62 "" 90 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ -"" -simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0092593 2 \ - 0.5 0 0 "" red 62 "" 85 -10 0 -simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" -call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ -"" -simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ - /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ - 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 -simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" -call /kinetics/SPINE/CaN_BULK/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 1e-12 1 1 54 54 0 0 54 0 \ - /kinetics/geometry 1 yellow 4 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.002 "" \ - white yellow 23 5 0 -simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ - "From Quintana et al 2005" -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0013717 1 "" white \ - yellow 8 5 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] blue yellow 15 -2 0 -simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" -call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 2000 0 4 0 -simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 -simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 4 0 0 1 -simundump xplot /graphs/conc1/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc1/PP1-active.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " cyan 0 0 1 -simundump xplot /graphs/conc1/CaM_CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc1/tot-CaM-CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc1/tot-auto.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 29 0 0 1 -simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/iR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 0 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xplot /graphs/conc2/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " red 0 0 1 -simundump xplot /graphs/conc2/CaM_CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot-CaM-CaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 47 0 0 1 -simundump xplot /graphs/conc2/tot-auto.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 29 0 0 1 -simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 -simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 -simundump xcoredraw /edit/draw 0 -10 92 -32 42 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"23 Dec 2011" \ -"CaMKII_merged16.g" \ -"Added Ca-binding step to the CaN activation pathway." \ -"Based on CaMKII_merged15.g" \ -"" \ -"CaMKII_merged16a.g" \ -"Halved the Kb for CaN-bind-CaM" \ -"" \ -"CaMKII_merged17.g" \ -" Used more rates from Saucerman and Bers BPJ 2008" \ -"" \ -"CaMKII_merged17a.g" \ -"Fix to init conc of PP1-active in PSD: from 2 to 4." \ -"" \ -"CaMKII_merged17b.g" \ -"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ -"levels in PSD. Scaled kcats down to match." \ -"" \ -"CaMKII_merged20.g" \ -"First pass at a version with a reasonable basal PKA and a less" \ -"saturating effect on PP1-active of CaMKII." \ -"" \ -"CaMKII_merged20c.g: This version turns on but does not go off" \ -"afterwards. " \ -"" \ -"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ -"" \ -"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ -"" \ -"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ -"sites given that CaMKII is a dodecamer." \ -"" \ -"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ -"0.002/sec." \ -"" \ -"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ -"" \ -"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ -"CaM with 6:54." \ -"" \ -"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ -"" \ -"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ -"CaMKII in bulk." \ -"" \ -"19 July 2013. psd_merged30.g: Variant for signeur loading." \ -"" \ -"23 Sep 2013. psd_merged31.g: moved NMDAR to spine bulk, to check" \ -"possible bug in handling of cross-compartment reactions." \ -"23 Sep 2013. psd_merged31b.g: added dummy reaction tr0 to check" \ -"what happens with a simple cross-compt reaction." \ -"23 Sep 2013. psd_merged31c.g: moved tr0 to the CaMKII_PSD to see" \ -"if this fixes the problem." \ -"psd_merged31d.g: Tried eliminating NMDAR as substrate." \ -"" -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B -addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n -addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B -addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/CaMKII REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/CaMKII MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/tr0 /kinetics/PSD/CaMKII_PSD/bar REAC B A -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B -addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n -addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n -addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n -addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n -addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B -addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca4 REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n -addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC B A -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC A B -addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC B A -addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/SPINE/CaMKII_BULK/NMDAR REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/tr0 /kinetics/SPINE/CaMKII_BULK/foo REAC A B -addmsg /kinetics/SPINE/CaMKII_BULK/foo /kinetics/SPINE/CaMKII_BULK/tr0 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_PSD/bar /kinetics/SPINE/CaMKII_BULK/tr0 PRODUCT n -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n -addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n -addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n -addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A -addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 -addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/PSD/PP1_PSD/PP1-active /graphs/conc1/PP1-active.Co PLOT Co *PP1-active.Co *cyan -addmsg /kinetics/PSD/CaM_CaN /graphs/conc1/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 -addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /graphs/conc1/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 -addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /graphs/conc1/tot-auto.Co PLOT Co *tot-auto.Co *29 -addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -addmsg /kinetics/SPINE/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 -addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red -addmsg /kinetics/SPINE/CaM_CaN /graphs/conc2/CaM_CaN.Co PLOT Co *CaM_CaN.Co *1 -addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /graphs/conc2/tot-CaM-CaMKII.Co PLOT Co *tot-CaM-CaMKII.Co *47 -addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /graphs/conc2/tot-auto.Co PLOT Co *tot-auto.Co *29 -addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue -enddump -// End of dump - -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"Cohen et al Meth Enz 159 390-408 is main source of info" \ -"conc = 1.8 uM" -call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ -"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ -"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ -"We treat it as non-compet, so it just turns the enz off" \ -"without interacting with the binding site." \ -"Cohen et al ann rev bioch refer to results where conc is " \ -"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ -"we need >= 1.8 uM." \ -"" \ -"" -call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ -"Let us assume that the equil in this case is very far over to the" \ -"right. This is probably safe." \ -"" -call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ -"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ -"4 nM from Foukes et al " \ -"Assume 2 nM. kf /kb = 8.333e-4" -call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ -"Dephosph is mainly by PP2B" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ -"Rates set by the translocation experiments of " \ -"Shen and Meyer, Science 1999." -call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ -"Same as for transloc_1" \ -"" \ -"" \ -"" -call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ -"Same as for back_1" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ -"k1 changed from 3.3e-6 to 6.6e-6" \ -"" -call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ -"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ -"the review by Cohen in Ann Rev Biochem 1989." \ -"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ -"" -call /kinetics/PSD/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/SPINE/CaM/CaM/notes LOAD \ -"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ -"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ -"it is comparable to CaMK levels. " \ -"" -call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ -"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ -"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" -call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ -"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ -"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ -"Lets use the fast rate consts here. Since the rates are so different, I am not" \ -"sure whether the order is relevant. These correspond to the TR2C fragment." \ -"We use the Martin et al rates here, plus the Drabicowski binding consts." \ -"All are scaled by 3X to cell temp." \ -"kf = 2e-10 kb = 72" \ -"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ -"If kb=72, kf = 2e-10 (Exactly the same !)" \ -"" \ -"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ -"two steps, each binding 1 Ca. This improves numerical" \ -"stability and is conceptually better too." \ -"" \ -"Overall rates are the same, so each kf and kb is the " \ -"square root of the earlier ones. So" \ -"kf = 1.125e-4, kb = 8.4853" \ -"" -call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ -"This is the intermediate where the TR2 end (the high-affinity end) has" \ -"bound the Ca but the TR1 end has not." -call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ -"Same values as for the main compartment" \ -"Can the main compartment pool of Ca/CaM be used?" -call /kinetics/SPINE/CaMKII_BULK/NMDAR/notes LOAD \ -"The stochiometry is a bit off here. Each NMDAR actually" \ -"binds to a holoenzyme, about 12 CaMKII subunits. But" \ -"our CaMKII calculations are in terms of individual" \ -"subunits. So as a hack, we put in much more NMDAR than" \ -"is actually there." \ -"" \ -"Dec 2011: Reconsidered this, now only 120 NMDARs." \ -"" \ -"June 02 2012. Consider these as anchor points for a dodecamer." \ -"There are far more effected CaMKII binding sites then, than" \ -"individual molecules of NMDAR. Raised limit to 40." -call /kinetics/SPINE/PP2A/notes LOAD \ -"Strack et al JBC 1997 show that PP2A is the primary" \ -"phosphatase acting on CaMKII in the bulk." -call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ -"From Quintana et al 2005" -complete_loading diff --git a/examples/snippets/MULTI/runcell18.py b/examples/snippets/MULTI/runcell18.py deleted file mode 100644 index 3007dd7..0000000 --- a/examples/snippets/MULTI/runcell18.py +++ /dev/null @@ -1,71 +0,0 @@ -# First pass at loading and running a cell model -import os -os.environ['NUMPTHREADS'] = '1' - -import moose -import proto18 - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - tab.xplot( fname, 'soma.Vm' ) - catab.xplot( fname, 'soma.Ca' ) - -library = moose.Neutral( '/library' ) -moose.setCwe( '/library' ) -proto18.make_Ca() -proto18.make_Ca_conc() -proto18.make_K_AHP() -proto18.make_K_C() -proto18.make_Na() -proto18.make_K_DR() -proto18.make_K_A() -proto18.make_glu() -proto18.make_NMDA() -proto18.make_Ca_NMDA() -proto18.make_NMDA_Ca_conc() -proto18.make_axon() - -cellId = moose.loadModel( 'ca1_asym.p', '/cell', "hsolve" ) -moose.le( cellId ) -moose.le( '/cell/lat_14_1' ) -#le( '/cell' ) -graphs = moose.Neutral( '/graphs' ) -tab = moose.Table( '/graphs/soma' ) -catab = moose.Table( '/graphs/ca' ) -soma = moose.element( '/cell/soma' ) -soma.inject = 2e-10 -moose.connect( tab, 'requestOut', soma, 'getVm' ) -capool = moose.element( '/cell/soma/Ca_conc' ) -moose.connect( catab, 'requestOut', capool, 'getCa' ) -print 1 -dt = 50e-6 -moose.setClock( 0, dt ) -moose.setClock( 1, dt ) -moose.setClock( 2, dt ) -moose.setClock( 3, 2e-4 ) -moose.useClock( 0, '/cell/##[ISA=Compartment]', 'init' ) -moose.useClock( 1, '/cell/##[ISA=Compartment]', 'process' ) -moose.useClock( 2, '/cell/##[ISA!=Compartment]', 'process' ) -moose.useClock( 3, '/graphs/soma,/graphs/ca', 'process' ) - -print 2 -moose.reinit() -print 3 -moose.start( 0.1 ) -dumpPlots( '50usec.plot' ) -print 4 -moose.reinit() -hsolve = moose.HSolve( '/cell/hsolve' ) -moose.useClock( 1, '/cell/hsolve', 'process' ) -hsolve.dt = dt -hsolve.target = '/cell/soma' -moose.reinit() -moose.reinit() -print 5 -moose.start( 0.1 ) -print 6 - -dumpPlots( 'h50usec.plot' ) - -print 7 diff --git a/examples/snippets/MULTI/x_compt.g b/examples/snippets/MULTI/x_compt.g deleted file mode 100644 index 627aadb..0000000 --- a/examples/snippets/MULTI/x_compt.g +++ /dev/null @@ -1,222 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Thu Sep 26 22:28:32 2013 - -include kkit {argv 1} - -FASTDT = 0.0001 -SIMDT = 0.01 -CONTROLDT = 5 -PLOTDT = 1 -MAXTIME = 100 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 0 -DEFAULT_VOL = 1e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-18 3 sphere "" white black 2 -6 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 0 -8 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black -3 \ - -6 0 -simundump geometry /kinetics/geometry[3] 0 1e-19 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[5] 0 1e-19 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[6] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump group /kinetics/DEND 0 yellow black x 0 0 "" DEND defaultfile.g 0 0 \ - 0 -3 -3 0 -simundump text /kinetics/DEND/notes 0 "" -call /kinetics/DEND/notes LOAD \ -"" -simundump kpool /kinetics/DEND/Ca 0 1e-10 0.08 0.08 48 48 0 0 600 0 \ - /kinetics/geometry blue yellow -4 4 0 -simundump text /kinetics/DEND/Ca/notes 0 "" -call /kinetics/DEND/Ca/notes LOAD \ -"" -simundump group /kinetics/SPINE 0 28 black x 0 1 "" SPINE defaultfile.g 0 0 0 \ - 0 -6 0 -simundump text /kinetics/SPINE/notes 0 "" -call /kinetics/SPINE/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca 0 1e-10 0.08 0.08 4.8 4.8 0 0 60 0 \ - /kinetics/geometry[1] blue 28 -2 4 0 -simundump text /kinetics/SPINE/Ca/notes 0 "" -call /kinetics/SPINE/Ca/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaM 0 1e-11 5 5 300 300 0 0 60 0 \ - /kinetics/geometry[1] 55 28 -2 2 0 -simundump text /kinetics/SPINE/CaM/notes 0 "" -call /kinetics/SPINE/CaM/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/Ca_CaM 0 1e-11 0 0 0 0 0 0 60 0 \ - /kinetics/geometry[1] blue 28 1 -1 0 -simundump text /kinetics/SPINE/Ca_CaM/notes 0 "" -call /kinetics/SPINE/Ca_CaM/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/kreac 0 0.1 0.1 "" white 28 -1 0 0 -simundump text /kinetics/SPINE/kreac/notes 0 "" -call /kinetics/SPINE/kreac/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/CaMKII 0 0 8.3333 8.3333 500 500 0 0 60 0 \ - /kinetics/geometry[3] 7 28 -1 -3 0 -simundump text /kinetics/SPINE/CaMKII/notes 0 "" -call /kinetics/SPINE/CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/CaM_bind_CaMKII 0 0.0016667 0.01 "" white 28 \ - 1 -4 0 -simundump text /kinetics/SPINE/CaM_bind_CaMKII/notes 0 "" -call /kinetics/SPINE/CaM_bind_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/foo 0 0 0.16667 0.16667 10 10 0 0 60 0 \ - /kinetics/geometry[5] blue 28 -2 -9 0 -simundump text /kinetics/SPINE/foo/notes 0 "" -call /kinetics/SPINE/foo/notes LOAD \ -"" -simundump kpool /kinetics/SPINE/bar 0 0 0.33333 0 0 20 0 0 60 0 \ - /kinetics/geometry[5] blue 28 -2 -11 0 -simundump text /kinetics/SPINE/bar/notes 0 "" -call /kinetics/SPINE/bar/notes LOAD \ -"" -simundump kreac /kinetics/SPINE/r2 0 0.1 0.1 "" white 28 0 -10 0 -simundump text /kinetics/SPINE/r2/notes 0 "" -call /kinetics/SPINE/r2/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 0 "" PSD defaultfile.g 0 0 0 3 -3 \ - 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 1e-10 0.08 0.08 0.48 0.48 0 0 6 0 \ - /kinetics/geometry[2] blue 0 1 4 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM 0 1e-11 5 5 30 30 0 0 6 0 \ - /kinetics/geometry[2] 53 0 1 2 0 -simundump text /kinetics/PSD/CaM/notes 0 "" -call /kinetics/PSD/CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_CaM 0 1e-11 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue 0 4 -1 0 -simundump text /kinetics/PSD/Ca_CaM/notes 0 "" -call /kinetics/PSD/Ca_CaM/notes LOAD \ -"" -simundump kreac /kinetics/PSD/kreac 0 0.1 0.1 "" white 0 2 0 0 -simundump text /kinetics/PSD/kreac/notes 0 "" -call /kinetics/PSD/kreac/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_CaM_CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[4] blue 0 4 -5 0 -simundump text /kinetics/PSD/Ca_CaM_CaMKII/notes 0 "" -call /kinetics/PSD/Ca_CaM_CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/zod 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[6] \ - blue 0 3 -11 0 -simundump text /kinetics/PSD/zod/notes 0 "" -call /kinetics/PSD/zod/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 100 0 1 0 -simundump xgraph /graphs/conc2 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc3 0 0 100 0 1 0 -simundump xgraph /moregraphs/conc4 0 0 100 0 1 0 -simundump xcoredraw /edit/draw 0 -6 6 -13 6 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"23 sep 2013. Variant of minimal.g. Added a cross-compartment" \ -"reaction taking CaMKII to PSD upon binding of CaM." \ -"23 Sep 2013. x_compt2.g Added a dummy reaction to show that" \ -"x-compt reacts work even with bigger reacs." \ -"" -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca REAC A B -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/CaM REAC A B -addmsg /kinetics/SPINE/kreac /kinetics/SPINE/Ca_CaM REAC B A -addmsg /kinetics/SPINE/CaM_bind_CaMKII /kinetics/SPINE/Ca_CaM REAC A B -addmsg /kinetics/SPINE/Ca /kinetics/SPINE/kreac SUBSTRATE n -addmsg /kinetics/SPINE/CaM /kinetics/SPINE/kreac SUBSTRATE n -addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/kreac PRODUCT n -addmsg /kinetics/SPINE/CaM_bind_CaMKII /kinetics/SPINE/CaMKII REAC A B -addmsg /kinetics/SPINE/Ca_CaM /kinetics/SPINE/CaM_bind_CaMKII SUBSTRATE n -addmsg /kinetics/SPINE/CaMKII /kinetics/SPINE/CaM_bind_CaMKII SUBSTRATE n -addmsg /kinetics/PSD/Ca_CaM_CaMKII /kinetics/SPINE/CaM_bind_CaMKII PRODUCT n -addmsg /kinetics/SPINE/r2 /kinetics/SPINE/foo REAC A B -addmsg /kinetics/SPINE/r2 /kinetics/SPINE/bar REAC A B -addmsg /kinetics/SPINE/foo /kinetics/SPINE/r2 SUBSTRATE n -addmsg /kinetics/SPINE/bar /kinetics/SPINE/r2 SUBSTRATE n -addmsg /kinetics/PSD/zod /kinetics/SPINE/r2 PRODUCT n -addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/kreac /kinetics/PSD/CaM REAC A B -addmsg /kinetics/PSD/kreac /kinetics/PSD/Ca_CaM REAC B A -addmsg /kinetics/PSD/Ca /kinetics/PSD/kreac SUBSTRATE n -addmsg /kinetics/PSD/CaM /kinetics/PSD/kreac SUBSTRATE n -addmsg /kinetics/PSD/Ca_CaM /kinetics/PSD/kreac PRODUCT n -addmsg /kinetics/SPINE/CaM_bind_CaMKII /kinetics/PSD/Ca_CaM_CaMKII REAC B A -addmsg /kinetics/SPINE/r2 /kinetics/PSD/zod REAC B A -enddump -// End of dump - -complete_loading diff --git a/examples/snippets/MULTI/x_compt.py b/examples/snippets/MULTI/x_compt.py deleted file mode 100644 index 1aeba1f..0000000 --- a/examples/snippets/MULTI/x_compt.py +++ /dev/null @@ -1,376 +0,0 @@ -# __DEPRECATED__ __BROKEN__ -# x_compt.py --- -# Upi Bhalla, NCBS Bangalore 2013. -# -# Commentary: -# -# Testing system for loading in arbitrary multiscale models based on -# model definition files. -# This version examines cross-compartment reactions. It is based on -# minimal.py. It uses a minimal model with Ca in all 3 compartments, -# and a binding reaction of Ca to CaM (just one step) in SPINE and PSD. -# Incoming Ca from synaptic events comes to the PSD. -# The CaMKII binds CaM in the spine, and the product goes reversibly -# to the PSD. Just to be sure, another reaction involving foo, bar and zod -# is also set up to go to and from the PSD. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math - -import moose -import proto18 - -EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_K_AHP() - proto18.make_K_C() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - proto18.make_glu() - proto18.make_NMDA() - proto18.make_Ca_NMDA() - proto18.make_NMDA_Ca_conc() - proto18.make_axon() - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'ca1_asym.p', '/model/elec', "hsolve" ) - return cellId - -def addPlot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/graphs/#[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name ) - for x in moose.wildcardFind( '/graphs/elec/#[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name + '_e' ) - -def moveCompt( path, oldParent, newParent ): - meshEntries = moose.element( newParent.path + '/mesh' ) - # Set up vol messaging from new compts to all their child objects. - for x in moose.wildcardFind( path + '/##[ISA=PoolBase]' ): - moose.connect( meshEntries, 'mesh', x, 'mesh', 'OneToOne' ) - orig = moose.element( path ) - moose.move( orig, newParent ) - moose.delete( moose.vec( oldParent.path ) ) - chem = moose.element( '/model/chem' ) - moose.move( newParent, chem ) - -def loadChem( neuroCompt, spineCompt, psdCompt ): - # We need the compartments to come in with a volume of 1 to match the - # original CubeMesh. - assert( neuroCompt.volume == 1.0 ) - assert( spineCompt.volume == 1.0 ) - assert( psdCompt.volume == 1.0 ) - assert( neuroCompt.mesh.num == 1 ) - #print 'volume = ', neuroCompt.mesh[0].volume - #assert( neuroCompt.mesh[0].volume == 1.0 ) - #an unfortunate mismatch - # So we'll have to resize the volumes of the current compartments to the - # new ones. - - modelId = moose.loadModel( 'x_compt.g', '/model', 'ee' ) - chem = moose.element( '/model/model' ) - chem.name = 'chem' - oldN = moose.element( '/model/chem/compartment_1' ) - oldS = moose.element( '/model/chem/compartment_2' ) - oldP = moose.element( '/model/chem/kinetics' ) - oldN.volume = neuroCompt.mesh[0].volume - oldS.volume = spineCompt.mesh[0].volume - oldP.volume = psdCompt.mesh[0].volume - moveCompt( '/model/chem/kinetics/DEND', oldN, neuroCompt ) - moveCompt( '/model/chem/kinetics/SPINE', oldS, spineCompt ) - moveCompt( '/model/chem/kinetics/PSD', oldP, psdCompt ) - -def makeNeuroMeshModel(): - diffLength = 20e-6 # But we only want diffusion over part of the model. - numSyn = 13 - elec = loadElec() - synInput = moose.SpikeGen( '/model/elec/synInput' ) - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - synInput.refractT = 47e-3 - - for i in range( numSyn ): - name = '/model/elec/spine_head_14_' + str( i + 1 ) - r = moose.element( name + '/glu' ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 * i * ( numSyn - 1 - i ) - syn.delay = i * 1.0e-3 - - neuroCompt = moose.NeuroMesh( '/model/neuroMesh' ) - #print 'neuroMeshvolume = ', neuroCompt.mesh[0].volume - neuroCompt.separateSpines = 1 - neuroCompt.diffLength = diffLength - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/spineMesh' ) - #print 'spineMeshvolume = ', spineCompt.mesh[0].volume - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/psdMesh' ) - #print 'psdMeshvolume = ', psdCompt.mesh[0].volume - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - loadChem( neuroCompt, spineCompt, psdCompt ) - #for x in moose.wildcardFind( '/model/chem/##/Ca' ): - # x.diffConst = 1e-11 - - # Put in the solvers, see how they fare. - nmksolve = moose.GslStoich( '/model/chem/neuroMesh/ksolve' ) - nmksolve.path = '/model/chem/neuroMesh/##' - nmksolve.compartment = moose.element( '/model/chem/neuroMesh' ) - nmksolve.method = 'rk5' - nm = moose.element( '/model/chem/neuroMesh/mesh' ) - moose.connect( nm, 'remesh', nmksolve, 'remesh' ) - #print "neuron: nv=", nmksolve.numLocalVoxels, ", nav=", nmksolve.numAllVoxels, nmksolve.numVarPools, nmksolve.numAllPools - - #print 'setting up smksolve' - smksolve = moose.GslStoich( '/model/chem/spineMesh/ksolve' ) - smksolve.path = '/model/chem/spineMesh/##' - smksolve.compartment = moose.element( '/model/chem/spineMesh' ) - smksolve.method = 'rk5' - sm = moose.element( '/model/chem/spineMesh/mesh' ) - moose.connect( sm, 'remesh', smksolve, 'remesh' ) - #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools - # - #print 'setting up pmksolve' - pmksolve = moose.GslStoich( '/model/chem/psdMesh/ksolve' ) - pmksolve.path = '/model/chem/psdMesh/##' - pmksolve.compartment = moose.element( '/model/chem/psdMesh' ) - pmksolve.method = 'rk5' - pm = moose.element( '/model/chem/psdMesh/mesh' ) - moose.connect( pm, 'remesh', pmksolve, 'remesh' ) - #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools - # - #print 'neuroMeshvolume = ', neuroCompt.mesh[0].volume - - #print 'Assigning the cell model' - # Now to set up the model. - #neuroCompt.cell = elec - neuroCompt.cellPortion( elec, '/model/elec/lat_14_#,/model/elec/spine_neck#,/model/elec/spine_head#' ) - ns = neuroCompt.numSegments - #assert( ns == 11 ) # dend, 5x (shaft+head) - ndc = neuroCompt.numDiffCompts - assert( ndc == 13 ) - ndc = neuroCompt.mesh.num - assert( ndc == 13 ) - - sdc = spineCompt.mesh.num - assert( sdc == 13 ) - pdc = psdCompt.mesh.num - assert( pdc == 13 ) - #print 'mesh nums ( neuro, spine, psd ) = ', ndc, sdc, pdc, ', numSeg = ', ns - - mesh = moose.vec( '/model/chem/neuroMesh/mesh' ) - #for i in range( ndc ): - # print 's[', i, '] = ', mesh[i].volume - mesh2 = moose.vec( '/model/chem/spineMesh/mesh' ) -# for i in range( sdc ): -# print 's[', i, '] = ', mesh2[i].volume - #print 'numPSD = ', moose.element( '/model/chem/psdMesh/mesh' ).localNumField - mesh = moose.vec( '/model/chem/psdMesh/mesh' ) - #print 'psd mesh.volume = ', mesh.volume - #for i in range( pdc ): - # print 's[', i, '] = ', mesh[i].volume - # - # We need to use the spine solver as the master for the purposes of - # these calculations. This will handle the diffusion calculations - # between head and dendrite, and between head and PSD. - smksolve.addJunction( nmksolve ) - #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools - smksolve.addJunction( pmksolve ) - #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools - - # oddly, numLocalFields does not work. - #moose.le( '/model/chem/neuroMesh' ) - ca = moose.element( '/model/chem/neuroMesh/DEND/Ca' ) - assert( ca.lastDimension == ndc ) - """ - CaNpsd = moose.vec( '/model/chem/psdMesh/PSD/PP1_PSD/CaN' ) - print 'numCaN in PSD = ', CaNpsd.nInit, ', vol = ', CaNpsd.volume - CaNspine = moose.vec( '/model/chem/spineMesh/SPINE/CaN_BULK/CaN' ) - print 'numCaN in spine = ', CaNspine.nInit, ', vol = ', CaNspine.volume - """ - - # set up adaptors - aCa = moose.Adaptor( '/model/chem/psdMesh/adaptCa', pdc ) - adaptCa = moose.vec( '/model/chem/psdMesh/adaptCa' ) - chemCa = moose.vec( '/model/chem/psdMesh/PSD/Ca' ) - assert( len( adaptCa ) == pdc ) - assert( len( chemCa ) == pdc ) - for i in range( pdc ): - path = '/model/elec/spine_head_14_' + str( i + 1 ) + '/NMDA_Ca_conc' - elecCa = moose.element( path ) - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.000 # 100 nM offset in chem. - adaptCa.scale = 1e-5 # 520 to 0.0052 mM - #print adaptCa.outputOffset - #print adaptCa.scale - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/soma', 'getVm', 'elec/somaVm' ) - addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'elec/somaCa' ) - addPlot( '/model/elec/basal_3', 'getVm', 'elec/basal3Vm' ) - addPlot( '/model/elec/apical_14', 'getVm', 'elec/apical_14Vm' ) - addPlot( '/model/elec/apical_14/Ca_conc', 'getCa', 'elec/apical_14Ca' ) - addPlot( '/model/elec/spine_head_14_7', 'getVm', 'elec/spine_7Vm' ) - addPlot( '/model/elec/spine_head_14_7/NMDA_Ca_conc', 'getCa', 'elec/spine_7Ca' ) - addPlot( '/model/elec/spine_head_14_13/NMDA_Ca_conc', 'getCa', 'elec/spine_13Ca' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/chem/psdMesh/PSD/Ca[0]', 'getConc', 'pCa0' ) - addPlot( '/model/chem/psdMesh/PSD/Ca[6]', 'getConc', 'pCa6' ) - addPlot( '/model/chem/psdMesh/PSD/Ca[12]', 'getConc', 'pCa12' ) - - addPlot( '/model/chem/spineMesh/SPINE/Ca[0]', 'getConc', 'sCa0' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca[6]', 'getConc', 'sCa6' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca[12]', 'getConc', 'sCa12' ) - - addPlot( '/model/chem/neuroMesh/DEND/Ca[0]', 'getConc', 'dend0Ca' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[60]', 'getConc', 'dend60Ca' ) - addPlot( '/model/chem/neuroMesh/DEND/Ca[144]', 'getConc', 'dend144Ca' ) - - addPlot( '/model/chem/psdMesh/PSD/CaM[0]', 'getConc', 'pCaM0' ) - addPlot( '/model/chem/psdMesh/PSD/CaM[6]', 'getConc', 'pCaM6' ) - addPlot( '/model/chem/psdMesh/PSD/CaM[12]', 'getConc', 'pCaM12' ) - - addPlot( '/model/chem/spineMesh/SPINE/CaM[0]', 'getConc', 'sCaM0' ) - addPlot( '/model/chem/spineMesh/SPINE/CaM[6]', 'getConc', 'sCaM6' ) - addPlot( '/model/chem/spineMesh/SPINE/CaM[12]', 'getConc', 'sCaM12' ) - - addPlot( '/model/chem/spineMesh/SPINE/CaMKII[6]', 'getConc', 'sCaMKII6' ) - - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[0]', 'getConc', 'pCaCaM0' ) - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[6]', 'getConc', 'pCaCaM6' ) - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM[12]', 'getConc', 'pCaCaM12' ) - - addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[0]', 'getConc', 'sCaCaM0' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[6]', 'getConc', 'sCaCaM6' ) - addPlot( '/model/chem/spineMesh/SPINE/Ca_CaM[12]', 'getConc', 'sCaCaM12' ) - addPlot( '/model/chem/psdMesh/PSD/Ca_CaM_CaMKII[6]', 'getConc', 'pCaCaMCaMKII6' ) - - addPlot( '/model/chem/psdMesh/PSD/zod[6]', 'getConc', 'zod6' ) - - addPlot( '/model/chem/spineMesh/SPINE/foo[6]', 'getConc', 'foo6' ) - addPlot( '/model/chem/spineMesh/SPINE/bar[6]', 'getConc', 'bar6' ) - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 1e-4 - plotDt = 5e-4 - plotName = 'x_compt.plot' - - makeNeuroMeshModel() - """ - for i in moose.wildcardFind( '/model/chem/##[ISA=PoolBase]' ): - if ( i[0].diffConst > 0 ): - grandpaname = i.parent[0].parent.name + '/' - paname = i.parent[0].name + '/' - print grandpaname + paname + i[0].name, i[0].diffConst - """ - """ - moose.le( '/model/chem/spineMesh/ksolve' ) - print 'Neighbors:' - for t in moose.element( '/model/chem/spineMesh/ksolve/junction' ).neighbors['masterJunction']: - print 'masterJunction <-', t.path - for t in moose.wildcardFind( '/model/chem/#Mesh/ksolve' ): - k = moose.element( t[0] ) - print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels - """ - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - moose.useClock( 5, '/model/chem/#Mesh/ksolve', 'init' ) - moose.useClock( 6, '/model/chem/#Mesh/ksolve', 'process' ) - hsolve = moose.HSolve( '/model/elec/hsolve' ) - moose.useClock( 1, '/model/elec/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - moose.reinit() - moose.reinit() - """ - print 'pre' - eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'dend' - eca = moose.vec( '/model/chem/neuroMesh/DEND/Ca' ) - for i in ( 0, 1, 2, 30, 60, 90, 120, 144 ): - print i, eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - - print 'PSD' - eca = moose.vec( '/model/chem/psdMesh/PSD/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - print 'spine' - eca = moose.vec( '/model/chem/spineMesh/SPINE/CaM/Ca' ) - for i in range( 3 ): - print eca[i].concInit, eca[i].conc, eca[i].nInit, eca[i].n, eca[i].volume - """ - - moose.start( 0.5 ) - dumpPlots( plotName ) - print 'All done' - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# loadMulti.py ends here. diff --git a/examples/snippets/Osc.cspace b/examples/snippets/Osc.cspace deleted file mode 100644 index 5972533..0000000 --- a/examples/snippets/Osc.cspace +++ /dev/null @@ -1 +0,0 @@ -|AabX|DabX|Jbca|AdeX|DdeX|Jefd|AadX|AbeX| 3.5 0 0.1 0 0 0.1 0.01 0 0.5 1 1 0.05 0.01 0 0.5 1 1 0.05 0.01 0 0 0.005 diff --git a/examples/snippets/RandSpikeStats.py b/examples/snippets/RandSpikeStats.py deleted file mode 100644 index cea9c03..0000000 --- a/examples/snippets/RandSpikeStats.py +++ /dev/null @@ -1,105 +0,0 @@ -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ -# This snippet shows the use of several objects. -# This snippet sets up a StimulusTable to control a RandSpike which -# sends its outputs to two places: to a SimpleSynHandler on an IntFire, -# which is used to monitor spike arrival, and to various Stats objects. -# I record and plot each of these. -# The StimulusTable has a sine-wave waveform -# -import numpy -import pylab -import moose - -dt = 0.01 -runtime = 100 -def make_model(): - sinePeriod = 50 - maxFiringRate = 10 - refractT = 0.05 - - for i in range( 20 ): - moose.setClock( i, dt ) - - ############### Create objects ############### - stim = moose.StimulusTable( 'stim' ) - spike = moose.RandSpike( 'spike' ) - syn = moose.SimpleSynHandler( 'syn' ) - fire = moose.IntFire( 'fire' ) - stats1 = moose.SpikeStats( 'stats1' ) - stats2 = moose.Stats( 'stats2' ) - plots = moose.Table( 'plots' ) - plot1 = moose.Table( 'plot1' ) - plot2 = moose.Table( 'plot2' ) - plotf = moose.Table( 'plotf' ) - - ############### Set up parameters ############### - stim.vector = [ maxFiringRate * - numpy.sin(x * 2 * numpy.pi / sinePeriod) - for x in range( sinePeriod )] - stim.startTime = 0 - stim.stopTime = sinePeriod - stim.loopTime = sinePeriod - stim.stepSize = 0 - stim.stepPosition = 0 - stim.doLoop = 1 - - spike.refractT = refractT - syn.synapse.num = 1 - syn.synapse[0].weight = 1 - syn.synapse[0].delay = 0 - - fire.thresh = 100 # Don't want it to spike, just to integrate - fire.tau = 1.0 / maxFiringRate - - stats1.windowLength = int( 1/dt ) - stats2.windowLength = int( 1/dt ) - - ############### Connect up circuit ############### - moose.connect( stim, 'output', spike, 'setRate' ) - moose.connect( spike, 'spikeOut', syn.synapse[0], 'addSpike' ) - moose.connect( spike, 'spikeOut', stats1, 'addSpike' ) - moose.connect( syn, 'activationOut', fire, 'activation' ) - moose.connect( stats2, 'requestOut', fire, 'getVm' ) - moose.connect( plots, 'requestOut', stim, 'getOutputValue' ) - moose.connect( plot1, 'requestOut', stats1, 'getWmean' ) - moose.connect( plot2, 'requestOut', stats2, 'getWmean' ) - moose.connect( plotf, 'requestOut', fire, 'getVm' ) - -def main(): - make_model() - - ''' - moose.useClock( 0, '/stim', 'process' ) - moose.useClock( 1, '/spike', 'process' ) - moose.useClock( 2, '/syn', 'process' ) - moose.useClock( 3, '/fire', 'process' ) - moose.useClock( 4, '/stats#', 'process' ) - moose.useClock( 8, '/plot#', 'process' ) - for i in range (10): - moose.setClock( i, dt ) - moose.useClock( 8, '/plot#', 'process' ) - ''' - moose.reinit() - moose.start( runtime ) - plots = moose.element( '/plots' ) - plot1 = moose.element( '/plot1' ) - plot2 = moose.element( '/plot2' ) - plotf = moose.element( '/plotf' ) - t = [i * dt for i in range( plot1.vector.size )] - pylab.plot( t, plots.vector, label='stimulus' ) - pylab.plot( t, plot1.vector, label='spike rate mean' ) - pylab.plot( t, plot2.vector, label='Vm mean' ) - pylab.plot( t, plotf.vector, label='Vm' ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/STDP.py b/examples/snippets/STDP.py deleted file mode 100644 index dec9be8..0000000 --- a/examples/snippets/STDP.py +++ /dev/null @@ -1,230 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -##### Author: Aditya Gilra, NCBS, Bangalore, October, 2014. -##### Fixed numpy imports and global variables: Subhasis Ray, Fri Jul 10 19:34:53 IST 2015 - - -''' -Connect two cells via a plastic synapse (STDPSynHandler). -Induce spikes spearated by varying intervals, in the pre and post synaptic cells. -Plot the synaptic weight change for different intervals between the spike-pairs. -This ia a pseudo-STDP protocol and we get the STDP rule. -''' - -import moose -import matplotlib.pyplot as plt -from numpy import arange, array - -# ########################################### -# Neuron models -# ########################################### - -## Leaky integrate and fire neuron -Vrest = -65e-3 # V # resting potential -Vt_base = -45e-3 # V # threshold -Vreset = -55e-3 # V # in current steps, Vreset is same as pedestal -R = 1e8 # Ohm -tau = 10e-3 # s -refrT = 2e-3 # s -network = None -syn = None -Vms = None -weight = 0.0 -spikes = None -dt = 1e-6 - -def setupModel(): - ''' - Set up two LIF neurons and connect them by an STDPSynHandler. - Set up some tables, and reinit MOOSE before simulation. - ''' - global network, syn, Vms, weight, spikes, dt - # ########################################### - # Initialize neuron group - # ########################################### - - ## two neurons: index 0 will be presynaptic, 1 will be postsynaptic - network = moose.LIF( 'network', 2 ); - moose.le( '/network' ) - network.vec.Em = Vrest - network.vec.thresh = Vt_base - network.vec.refractoryPeriod = refrT - network.vec.Rm = R - network.vec.vReset = Vreset - network.vec.Cm = tau/R - network.vec.inject = 0. - network.vec.initVm = Vrest - - # ########################################### - # Synaptic model: STDP at each pre and post spike - # ########################################### - - # Values approx from figure in Scholarpedia article (following Bi and Poo 1998): - # Jesper Sjoestroem and Wulfram Gerstner (2010) Spike-timing dependent plasticity. - # Scholarpedia, 5(2):1362., revision #137369 - tauPlus = 10e-3 # s # Apre time constant - tauMinus = 10e-3 # s # Apost time constant - aPlus0 = 1.0 # at pre, Apre += Apre0 - aMinus0 = 0.25 # at post, Apost += Apost0 - weight = 5e-3 # V # delta function synapse, adds to Vm - - syn = moose.STDPSynHandler( '/network/syn' ) - syn.numSynapses = 1 # 1 synapse - # many pre-synaptic inputs can connect to a synapse - # synapse onto postsynaptic neuron - moose.connect( syn, 'activationOut', network.vec[1], 'activation' ) - - # synapse from presynaptic neuron - moose.connect( network.vec[0],'spikeOut', syn.synapse[0], 'addSpike') - - # post-synaptic spikes also needed for STDP - moose.connect( network.vec[1], 'spikeOut', syn, 'addPostSpike') - - syn.synapse[0].delay = 0.0 - syn.synapse[0].weight = weight # V - syn.aPlus0 = aPlus0*weight # on every pre-spike, aPlus gets this jump - # aMinus0 includes learning rate - # on every pre-spike, aMinus is added to weight - syn.tauPlus = tauPlus - syn.aMinus0 = -aMinus0*weight # on every post-spike, aMinus gets this jump - # aMinus0 includes learning rate - # on every post-spike, aPlus is added to weight - syn.tauMinus = tauMinus - syn.weightMax = 2*weight # bounds on the weight - syn.weightMin = 0. - - # ########################################### - # Setting up tables - # ########################################### - - Vms = moose.Table( '/plotVms', 2 ) - moose.connect( network, 'VmOut', Vms, 'input', 'OneToOne') - spikes = moose.Table( '/plotSpikes', 2 ) - moose.connect( network, 'spikeOut', spikes, 'input', 'OneToOne') - - # ########################################### - # Simulate the STDP curve with spaced pre-post spike pairs - # ########################################### - - dt = 0.5e-5 # s - # moose simulation - moose.useClock( 0, '/network/syn', 'process' ) - moose.useClock( 1, '/network', 'process' ) - moose.useClock( 2, '/plotSpikes', 'process' ) - moose.useClock( 3, '/plotVms', 'process' ) - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - moose.setClock( 3, dt ) - moose.setClock( 9, dt ) - moose.reinit() - - -# function to make the aPlus and aMinus settle to equilibrium values -def reset_settle(): - """ Call this between every pre-post pair - to reset the neurons and make them settle to rest. - """ - settletime = 100e-3 # s - syn.synapse[0].weight = weight # V - moose.start(settletime) - -# function to inject a sharp current pulse to make neuron spike -# immediately at a given time step -def make_neuron_spike(nrnidx,I=1e-7,duration=1e-3): - """ Inject a brief current pulse to - make a neuron spike - """ - network.vec[nrnidx].inject = I - moose.start(duration) - network.vec[nrnidx].inject = 0. - -def main(): - ''' - On the command-line, in moose-examples/snippets directory, run ``python STDP.py`` - ''' - setupModel() - dwlist_neg = [] - ddt = 2e-3 # s - t_extent = 20e-3 # s - # dt = tpost - tpre - # negative dt corresponds to post before pre - print '-----------------------------------------------' - for deltat in arange(t_extent,0.0,-ddt): - reset_settle() - # post neuron spike - make_neuron_spike(1) - moose.start(deltat) - # pre neuron spike after deltat - make_neuron_spike(0) - moose.start(1e-3) - dw = ( syn.synapse[0].weight - weight ) / weight - print 'post before pre, dt = %1.3f s, dw/w = %1.3f'%(-deltat,dw) - dwlist_neg.append(dw) - print '-----------------------------------------------' - # positive dt corresponds to pre before post - dwlist_pos = [] - for deltat in arange(ddt,t_extent+ddt,ddt): - reset_settle() - # pre neuron spike - make_neuron_spike(0) - moose.start(deltat) - # post neuron spike after deltat - make_neuron_spike(1) - moose.start(1e-3) - dw = ( syn.synapse[0].weight - weight ) / weight - print 'pre before post, dt = %1.3f s, dw/w = %1.3f'%(deltat,dw) - dwlist_pos.append(dw) - print '-----------------------------------------------' - - # ########################################### - # Plot the simulated Vm-s and STDP curve - # ########################################### - - # insert spikes so that Vm reset doesn't look weird - Vmseries0 = list(Vms.vec[0].vector) - numsteps = len(Vmseries0) - for t in spikes.vec[0].vector: - Vmseries0[int(t/dt)-1] = 30e-3 # V - Vmseries1 = list(Vms.vec[1].vector) - for t in spikes.vec[1].vector: - Vmseries1[int(t/dt)-1] = 30e-3 # V - - # Voltage plots - plt.figure(facecolor='w') - timeseries = arange(0.,1000*numsteps*dt,dt*1000) - plt.plot(timeseries,Vmseries0,color='r') # pre neuron's vm - plt.plot(timeseries,Vmseries1,color='b') # post neuron's vm - plt.xlabel('time (ms)') - plt.ylabel('Vm (V)') - plt.title("pre (r) and post (b) neurons' Vm") - - # STDP curve - fig = plt.figure(facecolor='w') - ax = fig.add_subplot(111) - ax.plot(arange(-t_extent,0,ddt)*1000,array(dwlist_neg),'.-r') - ax.plot(arange(ddt,(t_extent+ddt),ddt)*1000,array(dwlist_pos),'.-b') - xmin,xmax = ax.get_xlim() - ymin,ymax = ax.get_ylim() - ax.set_xticks([xmin,0,xmax]) - ax.set_yticks([ymin,0,ymax]) - ax.plot((0,0),(ymin,ymax),linestyle='dashed',color='k') - ax.plot((xmin,xmax),(0,0),linestyle='dashed',color='k') - ax.set_xlabel('$t_{post}-t_{pre}$ (ms)') - ax.set_ylabel('$\Delta w / w$') - fig.tight_layout() - #fig.subplots_adjust(hspace=0.3,wspace=0.5) # has to be after tight_layout() - - plt.show() - -# Run below if script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/analogStimTable.py b/examples/snippets/analogStimTable.py deleted file mode 100644 index bda8dfb..0000000 --- a/examples/snippets/analogStimTable.py +++ /dev/null @@ -1,92 +0,0 @@ -# analogStimTable.py --- -# -# Filename: analogStimTable.py -# Description: -# Author: Upi Bhalla -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -import numpy as np -import pylab -import moose -from moose import utils - -def analogStimTable(): - """Example of using a StimulusTable as an analog signal source in - a reaction system. It could be used similarly to give other - analog inputs to a model, such as a current or voltage clamp signal. - - This demo creates a StimulusTable and assigns it half a sine wave. - Then we assign the start time and period over which to emit the wave. - The output of the StimTable is sent to a pool **a**, which participates - in a trivial reaction:: - - table ----> a <===> b - - The output of **a** and **b** are recorded in a regular table - for plotting. - """ - simtime = 150 - simdt = 0.1 - model = moose.Neutral('/model') - data = moose.Neutral('/data') - # This is the stimulus generator - stimtable = moose.StimulusTable('/model/stim') - a = moose.BufPool( '/model/a' ) - b = moose.Pool( '/model/b' ) - reac = moose.Reac( '/model/reac' ) - reac.Kf = 0.1 - reac.Kb = 0.1 - moose.connect( stimtable, 'output', a, 'setConcInit' ) - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - aPlot = moose.Table('/data/aPlot') - moose.connect(aPlot, 'requestOut', a, 'getConc') - bPlot = moose.Table('/data/bPlot') - moose.connect(bPlot, 'requestOut', b, 'getConc') - moose.setClock( stimtable.tick, simdt ) - moose.setClock( a.tick, simdt ) - moose.setClock( aPlot.tick, simdt ) - - #################################################### - # Here we set up the stimulus table. It is half a sine-wave. - stim = [ np.sin(0.01 * float(i) ) for i in range( 314 )] - stimtable.vector = stim - stimtable.stepSize = 0 # This forces use of current time as x value - - # The table will interpolate its contents over the time start to stop: - # At values less than startTime, it emits the first value in table - stimtable.startTime = 5 - # At values more than stopTime, it emits the last value in table - stimtable.stopTime = 60 - stimtable.doLoop = 1 # Enable repeat playbacks. - stimtable.loopTime = 10 + simtime / 2.0 # Repeat playback over this time - - moose.reinit() - moose.start(simtime) - t = [ x * simdt for x in range( len( aPlot.vector ) )] - pylab.plot( t, aPlot.vector, label='Stimulus waveform' ) - pylab.plot( t, bPlot.vector, label='Reaction product b' ) - pylab.legend() - pylab.show() - -if __name__ == '__main__': - analogStimTable() - - -# -# stimtable.py ends here diff --git a/examples/snippets/barrionuevo_cell1zr.CNG.swc b/examples/snippets/barrionuevo_cell1zr.CNG.swc deleted file mode 100644 index 1a48b8f..0000000 --- a/examples/snippets/barrionuevo_cell1zr.CNG.swc +++ /dev/null @@ -1,2267 +0,0 @@ -# Original file cell1zr.txt.swc edited by Duncan Donohue using StdSwc version 1.21 on 5/25/05. -# Irregularities and fixes documented in cell1zr.txt.swc.std. See StdSwc1.21.doc for more information. -# -# Amaral to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu -# Original fileName:H:\\cells\\ca3\\henze\\cell1zr.txt -# -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 -1.135 21 1.692 6.603 -1 - 2 2 0 0 0 0.9 1 - 3 2 -1.5 0 -2 0.9 2 - 4 2 -2.5 -6.5 -2 0.9 3 - 5 2 -7.5 -10.5 0 0.9 4 - 6 2 -10 -14 -7 0.9 5 - 7 2 -10 -18.5 -13.5 0.9 6 - 8 2 -10.5 -22 -17 0.9 7 - 9 2 -9 -26 -18 0.9 8 - 10 2 -7.5 -29.5 -19 0.3 9 - 11 2 -6.5 -36.5 -13.5 0.3 10 - 12 2 -5.5 -44.5 -14.5 0.3 11 - 13 2 -8 -50.5 -14.5 0.3 12 - 14 2 -9.5 -54 -17 0.3 13 - 15 2 -8.5 -60 -18 0.3 14 - 16 2 -9.5 -67 -18 0.3 15 - 17 2 -9 -77.5 -19 0.3 16 - 18 2 -8 -86.5 -20 0.3 17 - 19 2 -5.5 -93 -20 0.3 18 - 20 2 -6.5 -100 -19 0.3 19 - 21 2 -6 -106 -19 0.3 20 - 22 2 -7.5 -110.5 -19 0.3 21 - 23 2 -7.5 -116 -19 0.3 22 - 24 2 -8 -118.5 -19 0.3 23 - 25 2 -9.5 -125 -22 0.3 24 - 26 2 -11.5 -129.5 -22 0.3 25 - 27 2 -16.5 -133.5 -22 0.3 26 - 28 2 -20 -138 -30.5 0.3 27 - 29 2 -21 -142 -30.5 0.3 28 - 30 2 -20 -144 -30.5 0.3 29 - 31 2 -21 -148.5 -29.5 0.3 30 - 32 2 -22 -151 -29.5 0.2 31 - 33 2 -21 -155.5 -29.5 0.2 32 - 34 2 -19.5 -160 -28.5 0.2 33 - 35 2 -5.5 -124.5 -19 0.3 24 - 36 2 -4 -130 -19 0.3 35 - 37 2 -2.5 -135 -20 0.3 36 - 38 2 -4 -140 -20 0.3 37 - 39 2 -4 -143.5 -20 0.3 38 - 40 2 3 -151 -15.5 0.3 39 - 41 2 8.5 -157 -10.5 0.3 40 - 42 2 11.5 -162 -10.5 0.3 41 - 43 2 15.5 -165 -10.5 0.3 42 - 44 2 20 -164.5 -9.5 0.2 43 - 45 2 -4 -36 -10.5 0.55 9 - 46 2 -2.5 -41 -10.5 0.55 45 - 47 2 3.5 -44 -10.5 0.55 46 - 48 2 6.5 -47.5 -10.5 0.55 47 - 49 2 10.5 -49.5 -9.5 0.55 48 - 50 2 13 -55 -15.5 0.55 49 - 51 2 16 -60 -15.5 0.4 50 - 52 2 22 -63 -19 0.4 51 - 53 2 28 -67.5 -19 0.4 52 - 54 2 40 -69.5 -18 0.4 53 - 55 2 48 -69 -18 0.4 54 - 56 2 57 -69.5 -17 0.4 55 - 57 2 68 -69.5 -12.5 0.4 56 - 58 2 73 -71 -12.5 0.4 57 - 59 2 79.5 -74.5 -12.5 0.4 58 - 60 2 84.5 -76 -12.5 0.4 59 - 61 2 86.5 -77 -12.5 0.4 60 - 62 2 87.5 -80.5 -11.5 0.4 61 - 63 2 91 -82.5 -11.5 0.4 62 - 64 2 94.5 -85 -6 0.4 63 - 65 2 99.5 -90 -5 0.4 64 - 66 2 104 -93 0 0.4 65 - 67 2 105.5 -96.5 3.5 0.3 66 - 68 2 106.5 -102 6.5 0.3 67 - 69 2 108.5 -107.5 13 0.3 68 - 70 2 108.5 -113 18 0.3 69 - 71 2 111.5 -115.5 22.5 0.3 70 - 72 2 115.5 -123 28.5 0.3 71 - 73 2 122 -128 36 0.3 72 - 74 2 123.5 -132.5 38.5 0.3 73 - 75 2 134.5 -139 38.5 0.3 74 - 76 2 138 -141.5 46.5 0.3 75 - 77 2 142 -143 46.5 0.3 76 - 78 2 148.5 -148 52 0.3 77 - 79 2 153.5 -148.5 50 0.3 78 - 80 2 158 -150 56.5 0.3 79 - 81 2 162 -151 59.5 0.3 80 - 82 2 167 -152 61.5 0.3 81 - 83 2 171 -151.5 61.5 0.3 82 - 84 2 176 -153 63.5 0.3 83 - 85 2 182 -155 64.5 0.3 84 - 86 2 184.5 -154 66 0.3 85 - 87 2 192.5 -156.5 64.5 0.3 86 - 88 2 193 -157 63.5 0.3 87 - 89 2 197 -155 62.5 0.3 88 - 90 2 205.5 -156 69 0.3 89 - 91 2 211 -157.5 70 0.3 90 - 92 2 213.5 -156.5 70 0.3 91 - 93 2 218 -158 75.5 0.3 92 - 94 2 223.5 -159.5 74 0.3 93 - 95 2 229.5 -161 73 0.3 94 - 96 2 236 -161 74 0.3 95 - 97 2 244 -160 75.5 0.3 96 - 98 2 254 -159 79.5 0.3 97 - 99 2 262.5 -158.5 79.5 0.3 98 - 100 2 271.5 -160.5 82.5 0.3 99 - 101 2 278 -159.5 85 0.3 100 - 102 2 285 -157 89 0.3 101 - 103 2 290.5 -154 89 0.3 102 - 104 2 298.5 -153 90 0.3 103 - 105 2 303 -151.5 90 0.3 104 - 106 2 309.5 -149 90 0.3 105 - 107 2 318.5 -151.5 95.5 0.3 106 - 108 2 323 -150.5 97.5 0.3 107 - 109 2 329 -146 100.5 0.3 108 - 110 2 334 -147.5 104 0.3 109 - 111 2 340.5 -147.5 108 0.3 110 - 112 2 346 -146.5 111.5 0.3 111 - 113 2 351.5 -145.5 114.5 0.3 112 - 114 2 356 -147.5 116.5 0.3 113 - 115 2 356 -147.5 115.5 0.3 114 - 116 2 89.5 -77.5 -23 0.2 61 - 117 2 93 -75 -33.5 0.2 116 - 118 2 97.5 -69.5 -39 0.2 117 - 119 2 98.5 -67 -49.5 0.2 118 - 120 2 102 -62 -49.5 0.2 119 - 121 2 104.5 -56 -57 0.2 120 - 122 2 109 -53 -61 0.2 121 - 123 2 115 -52 -70.5 0.2 122 - 124 2 114.5 -46 -82.5 0.2 123 - 125 2 116 -43 -100.5 0.2 124 - 126 2 120 -37 -112 0.2 125 - 127 2 127 -33 -129 0.2 126 - 128 2 138.5 -32.5 -131 0.2 127 - 129 2 148 -29.5 -148 0.2 128 - 130 2 157.5 -26.5 -156.5 0.2 129 - 131 2 166 -22.5 -160.5 0.2 130 - 132 2 173 -17 -163 0.2 131 - 133 2 181 -18 -174.5 0.2 132 - 134 2 189 -20.5 -178.5 0.2 133 - 135 2 202 -20 -183 0.2 134 - 136 2 205.5 -15.5 -191.5 0.2 135 - 137 2 211 -11 -194.5 0.2 136 - 138 2 223 -8 -196.5 0.2 137 - 139 2 229.5 -4 -209.5 0.2 138 - 140 2 234 4 -206 0.2 139 - 141 2 238 8.5 -207 0.2 140 - 142 2 237.5 13 -209.5 0.2 141 - 143 2 242.5 16 -212.5 0.2 142 - 144 2 246.5 17 -220 0.2 143 - 145 2 249.5 21.5 -212.5 0.2 144 - 146 2 253.5 27.5 -219 0.2 145 - 147 2 256 31 -223 0.2 146 - 148 2 263 37.5 -217 0.2 147 - 149 2 268 42 -215.5 0.2 148 - 150 2 273.5 45.5 -214.5 0.2 149 - 151 2 276.5 49.5 -224 0.2 150 - 152 2 280.5 51.5 -229.5 0.2 151 - 153 2 288 58 -233.5 0.2 152 - 154 2 289.5 61 -238 0.2 153 - 155 2 294 62.5 -237 0.2 154 - 156 2 298.5 64 -241 0.2 155 - 157 2 305.5 69 -248.5 0.2 156 - 158 2 306.5 71.5 -246.5 0.2 157 - 159 2 310 73.5 -246.5 0.2 158 - 160 2 317 82 -247.5 0.2 159 - 161 2 322 85 -247.5 0.2 160 - 162 2 331 88 -263.5 0.2 161 - 163 2 332 92 -263.5 0.2 162 - 164 2 338 95 -263.5 0.2 163 - 165 2 342.5 98 -263.5 0.2 164 - 166 2 346 96 -256 0.2 165 - 167 2 349.5 99.5 -256 0.2 166 - 168 2 353.5 102 -269.5 0.2 167 - 169 2 360 104 -275 0.2 168 - 170 2 361.5 108.5 -275 0.2 169 - 171 2 367 109.5 -275 0.2 170 - 172 2 367.5 112.5 -275 0.2 171 - 173 2 375.5 110.5 -279 0.2 172 - 174 2 380 111.5 -279 0.2 173 - 175 2 382.5 115 -280 0.2 174 - 176 2 386.5 114.5 -280 0.2 175 - 177 2 340 103.5 -259 0.2 165 - 178 2 338 106.5 -262.5 0.2 177 - 179 2 337 109.5 -264.5 0.2 178 - 180 2 334.5 113.5 -266.5 0.2 179 - 181 2 333.5 118.5 -259 0.2 180 - 182 2 333.5 123.5 -255 0.2 181 - 183 2 332 130 -255 0.2 182 - 184 2 333 138 -254 0.2 183 - 185 2 334 149 -248.5 0.2 184 - 186 2 338 160.5 -240 0.2 185 - 187 2 340.5 168 -237 0.2 186 - 188 2 345 174.5 -229.5 0.2 187 - 189 2 346 181 -223 0.2 188 - 190 2 346 188.5 -218 0.2 189 - 191 2 347 192 -213.5 0.2 190 - 192 2 353.5 199.5 -209.5 0.2 191 - 193 2 355 206 -207 0.2 192 - 194 2 357 211.5 -205 0.2 193 - 195 2 359 217 -195.5 0.2 194 - 196 2 359.5 218 -195.5 0.2 195 - 197 2 361 225 -195.5 0.2 196 - 198 2 364 234 -195.5 0.2 197 - 199 2 369.5 248 -185 0.2 198 - 200 2 370.5 258 -174.5 0.2 199 - 201 2 372.5 265.5 -171.5 0.2 200 - 202 2 374.5 274.5 -164 0.2 201 - 203 2 375.5 286 -143.5 0.2 202 - 204 2 374.5 295 -130 0.2 203 - 205 2 377.5 303 -129 0.2 204 - 206 2 384.5 314 -128 0.2 205 - 207 2 392 327 -123.5 0.2 206 - 208 2 395 336 -118.5 0.2 207 - 209 2 396 341 -114 0.2 208 - 210 2 399 349 -113 0.2 209 - 211 2 403.5 358 -111 0.2 210 - 212 2 408.5 367 -108 0.2 211 - 213 2 414 372 -111 0.2 212 - 214 2 427 387 -127 0.2 213 - 215 2 429 389 -126 0.2 214 - 216 2 341.5 110.5 -261 0.2 179 - 217 2 345 117 -260 0.2 216 - 218 2 347.5 126.5 -257 0.2 217 - 219 2 349 133 -257 0.2 218 - 220 2 351 145 -265.5 0.2 219 - 221 2 353 150 -267.5 0.2 220 - 222 2 350.5 150.5 -272 0.2 221 - 223 2 359 158 -273 0.2 222 - 224 2 362 167.5 -278 0.2 223 - 225 2 363 175.5 -279 0.2 224 - 226 2 363.5 180 -275 0.2 225 - 227 2 366.5 188.5 -274 0.2 226 - 228 2 366 197.5 -274 0.2 227 - 229 2 376 196 -278 0.2 228 - 230 2 389.5 199 -260 0.2 229 - 231 2 405 208.5 -260 0.2 230 - 232 2 420.5 210 -255 0.2 231 - 233 2 427.5 204 -229.5 0.2 232 - 234 2 430.5 202 -232.5 0.2 233 - 235 2 345.5 157 -267.5 0.2 222 - 236 4 -0.5 41.5 -9.5 3.9 1 - 237 4 -0.5 49.5 -8.5 3.6 236 - 238 4 -1.5 55 -6 3.65 237 - 239 4 -0.5 59.5 -11.5 3.65 238 - 240 4 -2 65.5 -11.5 2.45 239 - 241 4 -4 69.5 -11.5 3.2 240 - 242 4 -8.5 71.5 -10.5 1.8 241 - 243 4 -12 75 -8.5 1.6 242 - 244 4 -14.5 76.5 -8.5 1.6 243 - 245 4 -15 80 -8.5 1.6 244 - 246 4 -17 84.5 -8.5 1.3 245 - 247 4 -19 86.5 -8.5 1.3 246 - 248 4 -21 89.5 -4 1.3 247 - 249 4 -22.5 93.5 -3 1.3 248 - 250 4 -24.5 98.5 -4 1.3 249 - 251 4 -25.5 102.5 0 1.3 250 - 252 4 -26.5 105.5 3.5 1.3 251 - 253 4 -27 109 4.5 1.3 252 - 254 4 -27.5 112 5.5 1.2 253 - 255 4 -29.5 116 5.5 1.2 254 - 256 4 -29.5 117 5.5 1.2 255 - 257 4 -33 118 2.5 0.65 256 - 258 4 -37 119.5 6.5 0.6 257 - 259 4 -39.5 120 6.5 0.6 258 - 260 4 -42 122 4.5 0.6 259 - 261 4 -45 123.5 5.5 0.6 260 - 262 4 -47 125.5 5.5 0.6 261 - 263 4 -49.5 125.5 7.5 0.45 262 - 264 4 -54 127 8.5 0.45 263 - 265 4 -57.5 128.5 8.5 0.45 264 - 266 4 -60 129 12 0.45 265 - 267 4 -63 131 14 0.45 266 - 268 4 -63.5 132 15 0.45 267 - 269 4 -66.5 131.5 21.5 0.4 268 - 270 4 -68.5 130 23.5 0.4 269 - 271 4 -71 129 28.5 0.4 270 - 272 4 -72 130 28.5 0.3 271 - 273 4 -73.5 130.5 28.5 0.3 272 - 274 4 -73.5 132 27.5 0.3 273 - 275 4 -75.5 131.5 33 0.3 274 - 276 4 -77 132 34 0.3 275 - 277 4 -78 132.5 36 0.3 276 - 278 4 -79.5 132.5 39.5 0.3 277 - 279 4 -81.5 133.5 43.5 0.3 278 - 280 4 -84.5 133.5 40.5 0.3 279 - 281 4 -86.5 134 43.5 0.3 280 - 282 4 -88.5 134.5 41.5 0.3 281 - 283 4 -91 132.5 40.5 0.2 282 - 284 4 -91 132.5 41.5 0.2 283 - 285 4 -66 133.5 17 0.4 268 - 286 4 -68.5 134.5 17 0.4 285 - 287 4 -70.5 137 15 0.4 286 - 288 4 -71 139.5 14 0.4 287 - 289 4 -72.5 141 13 0.4 288 - 290 4 -73.5 144.5 12 0.4 289 - 291 4 -74 147 14 0.3 290 - 292 4 -76 151 15 0.3 291 - 293 4 -75 153 16 0.3 292 - 294 4 -77 156.5 17 0.3 293 - 295 4 -78.5 160 15 0.3 294 - 296 4 -79 162.5 14 0.3 295 - 297 4 -81 164.5 14 0.3 296 - 298 4 -82.5 166.5 19 0.3 297 - 299 4 -84 171 17 0.2 298 - 300 4 -86 174 20.5 0.2 299 - 301 4 -90 177 20.5 0.2 300 - 302 4 -89.5 180 20.5 0.2 301 - 303 4 -91 182 20.5 0.2 302 - 304 4 -92.5 185 18 0.2 303 - 305 4 -93.5 187.5 18 0.2 304 - 306 4 -95 193 21.5 0.2 305 - 307 4 -95 193 22.5 0.2 306 - 308 4 -29.5 118 8.5 0.85 256 - 309 4 -31.5 120.5 7.5 0.85 308 - 310 4 -33 124 18 0.85 309 - 311 4 -35 129.5 20.5 0.85 310 - 312 4 -36.5 134 20.5 0.85 311 - 313 4 -36.5 134 21.5 0.85 312 - 314 4 -38 135 21.5 0.55 313 - 315 4 -41 137 30 0.55 314 - 316 4 -42.5 139 28.5 0.55 315 - 317 4 -44 139.5 34 0.55 316 - 318 4 -45 140.5 36 0.45 317 - 319 4 -44.5 142.5 36 0.45 318 - 320 4 -43.5 145 36 0.45 319 - 321 4 -43.5 146 37 0.4 320 - 322 4 -42 150.5 39.5 0.4 321 - 323 4 -40.5 152.5 39.5 0.4 322 - 324 4 -41 156 43.5 0.4 323 - 325 4 -40.5 157 43.5 0.4 324 - 326 4 -38.5 160 48 0.4 325 - 327 4 -38 162.5 54 0.4 326 - 328 4 -41 163.5 54 0.4 327 - 329 4 -44.5 164.5 60.5 0.4 328 - 330 4 -45.5 167 60.5 0.3 329 - 331 4 -48 166.5 59.5 0.3 330 - 332 4 -50 165 61.5 0.3 331 - 333 4 -49.5 167.5 68 0.3 332 - 334 4 -52 170 67 0.3 333 - 335 4 -53.5 171.5 70 0.3 334 - 336 4 -54 176.5 73 0.3 335 - 337 4 -56 177.5 75.5 0.3 336 - 338 4 -58 178.5 79.5 0.3 337 - 339 4 -57.5 181.5 81.5 0.3 338 - 340 4 -57 182.5 80.5 0.3 339 - 341 4 -59.5 183.5 86 0.3 340 - 342 4 -58.5 186 88 0.3 341 - 343 4 -58 188 88 0.3 342 - 344 4 -58.5 188.5 86 0.2 343 - 345 4 -60 190 90 0.2 344 - 346 4 -58.5 192.5 91 0.15 345 - 347 4 -38 165 50 0.3 327 - 348 4 -37.5 167 55 0.3 347 - 349 4 -39.5 172 59.5 0.3 348 - 350 4 -38 174 63.5 0.3 349 - 351 4 -38 176 64.5 0.3 350 - 352 4 -38 177.5 68 0.3 351 - 353 4 -37 181 68 0.3 352 - 354 4 -38.5 181.5 69 0.3 353 - 355 4 -40 183 73 0.3 354 - 356 4 -40 185 76.5 0.3 355 - 357 4 -40.5 187.5 80.5 0.3 356 - 358 4 -40 189 85 0.3 357 - 359 4 -38 191 89 0.3 358 - 360 4 -37 192.5 89 0.3 359 - 361 4 -39 140 20.5 0.65 313 - 362 4 -39 143.5 19 0.65 361 - 363 4 -39.5 146.5 18 0.65 362 - 364 4 -41 151 18 0.65 363 - 365 4 -42 155.5 17 0.65 364 - 366 4 -42.5 158 22.5 0.65 365 - 367 4 -43.5 161.5 22.5 0.65 366 - 368 4 -44 164 23.5 0.65 367 - 369 4 -43.5 167.5 23.5 0.65 368 - 370 4 -44.5 169.5 22.5 0.65 369 - 371 4 -46 171.5 21.5 0.65 370 - 372 4 -48 174 21.5 0.65 371 - 373 4 -49 176.5 26.5 0.65 372 - 374 4 -50.5 178.5 26.5 0.65 373 - 375 4 -52.5 181 27.5 0.65 374 - 376 4 -53.5 184 27.5 0.65 375 - 377 4 -54.5 187 28.5 0.65 376 - 378 4 -54 189 30 0.65 377 - 379 4 -54 192 31 0.65 378 - 380 4 -54.5 194 30 0.65 379 - 381 4 -58 201 33 0.65 380 - 382 4 -59.5 205 35 0.65 381 - 383 4 -59.5 207.5 36 0.65 382 - 384 4 -60.5 209.5 34 0.65 383 - 385 4 -63.5 212 33 0.65 384 - 386 4 -65.5 215.5 41.5 0.65 385 - 387 4 -66.5 218 44.5 0.65 386 - 388 4 -68 221.5 45.5 0.65 387 - 389 4 -68 223 50 0.65 388 - 390 4 -70 223.5 50 0.65 389 - 391 4 -70.5 226.5 51 0.65 390 - 392 4 -71 231 51 0.65 391 - 393 4 -71 233 54 0.65 392 - 394 4 -73 235.5 58.5 0.65 393 - 395 4 -73.5 235.5 56.5 0.65 394 - 396 4 -75.5 237.5 60.5 0.65 395 - 397 4 -78.5 242 52 0.65 396 - 398 4 -80.5 244.5 51 0.65 397 - 399 4 -82 247 50 0.6 398 - 400 4 -82.5 250.5 58.5 0.6 399 - 401 4 -82.5 253.5 57.5 0.6 400 - 402 4 -83.5 256.5 59.5 0.6 401 - 403 4 -85 259.5 61.5 0.6 402 - 404 4 -87 262.5 64.5 0.6 403 - 405 4 -88 263.5 64.5 0.6 404 - 406 4 -88.5 267.5 62.5 0.6 405 - 407 4 -87.5 270.5 62.5 0.6 406 - 408 4 -88.5 274 62.5 0.6 407 - 409 4 -90 278 60.5 0.6 408 - 410 4 -92 278.5 59.5 0.6 409 - 411 4 -94 283.5 59.5 0.6 410 - 412 4 -93.5 286 59.5 0.6 411 - 413 4 -93 289 68 0.6 412 - 414 4 -94.5 293.5 66 0.6 413 - 415 4 -99 295 64.5 0.2 414 - 416 4 -101.5 297.5 72 0.2 415 - 417 4 -104 298 74 0.2 416 - 418 4 -105.5 301.5 74 0.2 417 - 419 4 -111 303.5 70 0.2 418 - 420 4 -112.5 306.5 71 0.2 419 - 421 4 -115 307 70 0.2 420 - 422 4 -116.5 308.5 71 0.2 421 - 423 4 -118.5 310 73 0.2 422 - 424 4 -121.5 311.5 75.5 0.2 423 - 425 4 -127 314 74 0.2 424 - 426 4 -127 314 75.5 0.2 425 - 427 4 -96 297.5 69 0.45 414 - 428 4 -95.5 299.5 67 0.45 427 - 429 4 -97 302 70 0.45 428 - 430 4 -99 304 70 0.45 429 - 431 4 -101.5 305 72 0.45 430 - 432 4 -103.5 306 72 0.45 431 - 433 4 -104 309 71 0.45 432 - 434 4 -106.5 310 77.5 0.45 433 - 435 4 -110.5 311 79.5 0.4 434 - 436 4 -109.5 312.5 77.5 0.4 435 - 437 4 -113.5 315.5 78.5 0.4 436 - 438 4 -115.5 318.5 81.5 0.4 437 - 439 4 -118.5 321.5 80.5 0.4 438 - 440 4 -121 323.5 81.5 0.4 439 - 441 4 -123 326 82.5 0.4 440 - 442 4 -126 327.5 88 0.4 441 - 443 4 -129.5 330.5 87 0.4 442 - 444 4 -131 333 88 0.4 443 - 445 4 -134.5 334 89 0.4 444 - 446 4 -137 338 88 0.4 445 - 447 4 -139 342 91 0.4 446 - 448 4 -138.5 343.5 91 0.4 447 - 449 4 -142 347 94.5 0.4 448 - 450 4 -141.5 352.5 93.5 0.3 449 - 451 4 -140.5 356 93.5 0.3 450 - 452 4 -141 358 98.5 0.3 451 - 453 4 -142 360.5 97.5 0.3 452 - 454 4 -144 362.5 96.5 0.3 453 - 455 4 -144.5 364 96.5 0.3 454 - 456 4 -144.5 364 93.5 0.3 455 - 457 4 -146.5 367.5 96.5 0.2 456 - 458 4 -147 372.5 100.5 0.2 457 - 459 4 -149 375 100.5 0.2 458 - 460 4 -151 376.5 100.5 0.2 459 - 461 4 -150.5 377 100.5 0.2 460 - 462 4 -152.5 379.5 104 0.2 461 - 463 4 -154 379.5 103 0.2 462 - 464 4 -154.5 378.5 106 0.2 463 - 465 4 -156 378 105 0.2 464 - 466 4 -158 379.5 105 0.2 465 - 467 4 -157.5 380.5 104 0.2 466 - 468 4 -156 381 102 0.2 463 - 469 4 -157 382.5 104 0.2 468 - 470 4 -158 384 103 0.2 469 - 471 4 -159 384 102 0.2 470 - 472 4 -143.5 368 99.5 0.2 456 - 473 4 -143 370.5 99.5 0.2 472 - 474 4 -142 373 99.5 0.2 473 - 475 4 -143.5 375 99.5 0.2 474 - 476 4 -143 377.5 106 0.2 475 - 477 4 -142.5 379 104 0.2 476 - 478 4 -143.5 381.5 104 0.2 477 - 479 4 -145 384 102 0.2 478 - 480 4 -104 311.5 68 0.3 433 - 481 4 -104.5 314.5 67 0.3 480 - 482 4 -105.5 318.5 69 0.3 481 - 483 4 -105 321 69 0.3 482 - 484 4 -105.5 325.5 69 0.3 483 - 485 4 -107.5 329 66 0.3 484 - 486 4 -107.5 332 66 0.3 485 - 487 4 -108.5 336.5 69 0.3 486 - 488 4 -108.5 342.5 68 0.2 487 - 489 4 -69.5 235 58.5 0.3 395 - 490 4 -69.5 238 63.5 0.3 489 - 491 4 -69.5 241 67 0.3 490 - 492 4 -67.5 243 70 0.3 491 - 493 4 -65.5 245 69 0.3 492 - 494 4 -65.5 251 74 0.3 493 - 495 4 -64 252 75.5 0.3 494 - 496 4 -60.5 253.5 77.5 0.3 495 - 497 4 -61 256 77.5 0.3 496 - 498 4 -60 258.5 79.5 0.3 497 - 499 4 -59.5 260 81.5 0.3 498 - 500 4 -60 262 84 0.3 499 - 501 4 -60.5 262.5 85 0.3 500 - 502 4 -60 265.5 85 0.3 501 - 503 4 -59 267.5 87 0.3 502 - 504 4 -58 270 82.5 0.3 503 - 505 4 -57.5 271.5 82.5 0.3 504 - 506 4 -57 274.5 86 0.3 505 - 507 4 -57 276.5 86 0.3 506 - 508 4 -55.5 279.5 84 0.3 507 - 509 4 -53 280.5 80.5 0.2 508 - 510 4 -53.5 282 84 0.2 509 - 511 4 -56 283 82.5 0.2 510 - 512 4 -56 283 84 0.2 511 - 513 4 -53.5 197.5 31 0.3 380 - 514 4 -54.5 202 31 0.3 513 - 515 4 -53 208 23.5 0.3 514 - 516 4 -54 210 23.5 0.3 515 - 517 4 -53 214 22.5 0.3 516 - 518 4 -52.5 218 21.5 0.3 517 - 519 4 -51 221.5 21.5 0.3 518 - 520 4 -52 225.5 22.5 0.3 519 - 521 4 -52.5 229 21.5 0.3 520 - 522 4 -52 231.5 21.5 0.3 521 - 523 4 -53 235 20.5 0.3 522 - 524 4 -54 238 21.5 0.3 523 - 525 4 -53.5 240 21.5 0.2 524 - 526 4 -54 246.5 21.5 0.2 525 - 527 4 -53 250 17 0.2 526 - 528 4 -53.5 254 14 0.2 527 - 529 4 -52 258 12 0.2 528 - 530 4 -51.5 267 12 0.2 529 - 531 4 -50.5 270.5 12 0.2 530 - 532 4 -49.5 276.5 13 0.2 531 - 533 4 -47.5 283.5 14 0.2 532 - 534 4 -47 286.5 13 0.15 533 - 535 4 -45.5 292.5 6.5 0.15 534 - 536 4 -2.5 70.5 -11.5 1.8 241 - 537 4 -3 76 -9.5 1.8 536 - 538 4 -4.5 79 -10.5 1.8 537 - 539 4 -6.5 83.5 -7 0.9 538 - 540 4 -8 88 0 0.9 539 - 541 4 -7 91 0 0.9 540 - 542 4 -8 96.5 -1 0.9 541 - 543 4 -9 99.5 -2 0.9 542 - 544 4 -10.5 101.5 6.5 0.9 543 - 545 4 -11 103.5 9.5 0.9 544 - 546 4 -10.5 108.5 11 0.9 545 - 547 4 -11.5 111 7.5 0.9 546 - 548 4 -11.5 115 6.5 0.9 547 - 549 4 -11.5 118.5 14 0.9 548 - 550 4 -13 128 14 0.85 549 - 551 4 -14.5 136 15 0.65 550 - 552 4 -16 141.5 16 0.65 551 - 553 4 -15 144 16 0.65 552 - 554 4 -15.5 148 16 0.65 553 - 555 4 -16.5 155 16 0.65 554 - 556 4 -16.5 158.5 15 0.65 555 - 557 4 -17.5 163 15 0.65 556 - 558 4 -19 167 18 0.65 557 - 559 4 -18 170.5 18 0.65 558 - 560 4 -18 173 18 0.65 559 - 561 4 -19 176.5 18 0.65 560 - 562 4 -20.5 181.5 24.5 0.65 561 - 563 4 -21 183.5 24.5 0.65 562 - 564 4 -21.5 188 24.5 0.65 563 - 565 4 -21.5 190.5 24.5 0.65 564 - 566 4 -23 194.5 24.5 0.65 565 - 567 4 -24 198.5 24.5 0.65 566 - 568 4 -25 200.5 27.5 0.65 567 - 569 4 -27.5 206.5 25.5 0.65 568 - 570 4 -28.5 209 25.5 0.65 569 - 571 4 -29 214 25.5 0.65 570 - 572 4 -29.5 215.5 31 0.65 571 - 573 4 -30 220 31 0.65 572 - 574 4 -31.5 222.5 31 0.65 573 - 575 4 -32 225.5 31 0.65 574 - 576 4 -31 229.5 34 0.65 575 - 577 4 -32 231 34 0.65 576 - 578 4 -33 235.5 32 0.65 577 - 579 4 -32.5 238 34 0.65 578 - 580 4 -31.5 242.5 33 0.65 579 - 581 4 -31.5 247 39.5 0.6 580 - 582 4 -32 252.5 37 0.6 581 - 583 4 -30.5 256 38.5 0.6 582 - 584 4 -31 263.5 39.5 0.6 583 - 585 4 -32.5 266 46.5 0.6 584 - 586 4 -35 266.5 45.5 0.6 585 - 587 4 -36 268.5 49 0.6 586 - 588 4 -36.5 271.5 49 0.6 587 - 589 4 -36.5 275.5 53 0.6 588 - 590 4 -39 286 55 0.6 589 - 591 4 -40 294 58.5 0.6 590 - 592 4 -39.5 296.5 58.5 0.6 591 - 593 4 -37 300.5 58.5 0.6 592 - 594 4 -36.5 301.5 60.5 0.55 593 - 595 4 -35.5 304.5 60.5 0.55 594 - 596 4 -36 306 59.5 0.55 595 - 597 4 -37.5 309.5 58.5 0.55 596 - 598 4 -38.5 313.5 58.5 0.55 597 - 599 4 -40 317.5 62.5 0.45 598 - 600 4 -41.5 320.5 63.5 0.45 599 - 601 4 -42 324 63.5 0.4 600 - 602 4 -43 326.5 63.5 0.4 601 - 603 4 -45 328 63.5 0.4 602 - 604 4 -47.5 329.5 63.5 0.4 603 - 605 4 -51 333.5 63.5 0.4 604 - 606 4 -49.5 336.5 63.5 0.4 605 - 607 4 -52 341.5 63.5 0.4 606 - 608 4 -56 343.5 63.5 0.4 607 - 609 4 -61 346.5 64.5 0.4 608 - 610 4 -65 350 60.5 0.4 609 - 611 4 -69 353.5 72 0.3 610 - 612 4 -72.5 357 73 0.3 611 - 613 4 -75.5 362 75.5 0.3 612 - 614 4 -78.5 367.5 76.5 0.3 613 - 615 4 -86 377.5 75.5 0.3 614 - 616 4 -89.5 383 78.5 0.3 615 - 617 4 -89 390 79.5 0.3 616 - 618 4 -92 398 79.5 0.3 617 - 619 4 -96.5 405 80.5 0.3 618 - 620 4 -101 409.5 79.5 0.3 619 - 621 4 -103.5 412.5 79.5 0.3 620 - 622 4 -105.5 419 79.5 0.3 621 - 623 4 -109.5 424.5 79.5 0.3 622 - 624 4 -110.5 428.5 79.5 0.3 623 - 625 4 -111.5 432.5 79.5 0.3 624 - 626 4 -118.5 436.5 85 0.3 625 - 627 4 -121 439 85 0.3 626 - 628 4 -121.5 444.5 85 0.3 627 - 629 4 -125 447.5 81.5 0.3 628 - 630 4 -126.5 448.5 81.5 0.3 629 - 631 4 -128.5 452.5 80.5 0.3 630 - 632 4 -130 454 80.5 0.3 631 - 633 4 -132.5 456.5 80.5 0.2 632 - 634 4 -137 460 80.5 0.2 633 - 635 4 -138 463 76.5 0.2 634 - 636 4 -139 467 76.5 0.2 635 - 637 4 -140 474 76.5 0.2 636 - 638 4 -141.5 478.5 75.5 0.2 637 - 639 4 -140 482.5 75.5 0.2 638 - 640 4 -143 486.5 75.5 0.2 639 - 641 4 -144.5 490.5 78.5 0.2 640 - 642 4 -143 494.5 78.5 0.2 641 - 643 4 -143 500.5 78.5 0.2 642 - 644 4 -144 503 84 0.2 643 - 645 4 -143.5 507 84 0.2 644 - 646 4 -142.5 509 84 0.2 645 - 647 4 -142 515 90 0.2 646 - 648 4 -146 522.5 89 0.2 647 - 649 4 -148.5 523.5 89 0.2 648 - 650 4 -149.5 527 92 0.2 649 - 651 4 -153 528.5 92 0.2 650 - 652 4 -156 530 93.5 0.2 651 - 653 4 -156 530 92 0.2 652 - 654 4 -33 317 57.5 0.4 598 - 655 4 -33 319 57.5 0.4 654 - 656 4 -31.5 321 61.5 0.4 655 - 657 4 -31 324.5 60.5 0.4 656 - 658 4 -31 328.5 59.5 0.4 657 - 659 4 -31.5 331 59.5 0.4 658 - 660 4 -31 336 61.5 0.3 659 - 661 4 -33 339 62.5 0.3 660 - 662 4 -32 344 62.5 0.3 661 - 663 4 -35.5 349 61.5 0.3 662 - 664 4 -35.5 354 70 0.3 663 - 665 4 -31 381 68 0.3 664 - 666 4 -31 392 69 0.3 665 - 667 4 -32 403 69 0.3 666 - 668 4 -35.5 417 69 0.3 667 - 669 4 -35 419.5 73 0.3 668 - 670 4 -37.5 430.5 70 0.3 669 - 671 4 -39 437 68 0.3 670 - 672 4 -44 444.5 71 0.3 671 - 673 4 -48 459.5 67 0.3 672 - 674 4 -49 466 66 0.3 673 - 675 4 -50.5 476 63.5 0.2 674 - 676 4 -50.5 489 62.5 0.2 675 - 677 4 -50 497 64.5 0.2 676 - 678 4 -51 503.5 64.5 0.2 677 - 679 4 -53 505.5 63.5 0.2 678 - 680 4 -52.5 513.5 64.5 0.2 679 - 681 4 -53 515.5 66 0.2 680 - 682 4 -55.5 524 64.5 0.15 681 - 683 4 -55.5 524 67 0.15 682 - 684 4 -51.5 520.5 64.5 0.2 681 - 685 4 -53 523.5 63.5 0.2 684 - 686 4 -54.5 525.5 66 0.2 685 - 687 4 -56.5 528.5 63.5 0.2 686 - 688 4 -58 532.5 61.5 0.2 687 - 689 4 -56 537.5 61.5 0.2 688 - 690 4 -57 540.5 63.5 0.2 689 - 691 4 -28.5 205 36 0.3 568 - 692 4 -31.5 206 36 0.3 691 - 693 4 -30.5 207.5 43.5 0.3 692 - 694 4 -33 209.5 43.5 0.3 693 - 695 4 -34 210 44.5 0.3 694 - 696 4 -34.5 212.5 46.5 0.3 695 - 697 4 -36.5 213 49 0.3 696 - 698 4 -39 215.5 51 0.3 697 - 699 4 -41 219 56.5 0.3 698 - 700 4 -45 220 55 0.3 699 - 701 4 -46.5 223 55 0.3 700 - 702 4 -47.5 225 53 0.3 701 - 703 4 -49.5 226.5 50 0.3 702 - 704 4 -51.5 227.5 55 0.3 703 - 705 4 -54 230 55 0.3 704 - 706 4 -55.5 232.5 59.5 0.3 705 - 707 4 -58.5 238 59.5 0.3 706 - 708 4 -59.5 240.5 59.5 0.3 707 - 709 4 -60.5 243.5 58.5 0.3 708 - 710 4 -62 247.5 61.5 0.3 709 - 711 4 -64 251.5 61.5 0.3 710 - 712 4 -66 254 68 0.3 711 - 713 4 -67.5 254.5 67 0.2 712 - 714 4 -68.5 256 68 0.2 713 - 715 4 -71.5 259 68 0.2 714 - 716 4 -8 121.5 15 0.3 549 - 717 4 -7.5 123.5 17 0.3 716 - 718 4 -9 124.5 20.5 0.3 717 - 719 4 -7.5 128 25.5 0.4 718 - 720 4 -9 130 28.5 0.4 719 - 721 4 -8.5 131 28.5 0.4 720 - 722 4 -7.5 131.5 30 0.4 721 - 723 4 -6 136 39.5 0.4 722 - 724 4 -3 137.5 44.5 0.4 723 - 725 4 -2 142 51 0.4 724 - 726 4 -3.5 144.5 50 0.4 725 - 727 4 -4 147 59.5 0.4 726 - 728 4 -4 148 60.5 0.4 727 - 729 4 -5 151.5 59.5 0.3 728 - 730 4 -7.5 154 64.5 0.3 729 - 731 4 -7.5 156 63.5 0.2 730 - 732 4 -7.5 157.5 67 0.2 731 - 733 4 -8.5 159 71 0.2 732 - 734 4 -12.5 159.5 77.5 0.2 733 - 735 4 -11 161 77.5 0.2 734 - 736 4 -13.5 160.5 79.5 0.2 735 - 737 4 -14.5 162 81.5 0.2 736 - 738 4 -14 163.5 85 0.2 737 - 739 4 -14 165.5 88 0.2 738 - 740 4 -13.5 167.5 92 0.2 739 - 741 4 -12.5 170.5 95.5 0.2 740 - 742 4 -14 172 98.5 0.2 741 - 743 4 -12.5 175 94.5 0.2 742 - 744 4 -17 176.5 96.5 0.2 743 - 745 4 -16.5 177 99.5 0.2 744 - 746 4 -17.5 180.5 98.5 0.15 745 - 747 4 -1 150.5 61.5 0.3 728 - 748 4 0 152 63.5 0.3 747 - 749 4 -1.5 153 63.5 0.2 748 - 750 4 0.5 154.5 64.5 0.3 749 - 751 4 3 155.5 64.5 0.3 750 - 752 4 0 157.5 72 0.3 751 - 753 4 3 159.5 75.5 0.3 752 - 754 4 1 161.5 75.5 0.3 753 - 755 4 2 163 78.5 0.2 754 - 756 4 2 166.5 81.5 0.2 755 - 757 4 0.5 166.5 80.5 0.2 756 - 758 4 1 169.5 85 0.2 757 - 759 4 -0.5 173 87 0.2 758 - 760 4 -0.5 175.5 91 0.2 759 - 761 4 -2 178 94.5 0.2 760 - 762 4 0 179.5 97.5 0.2 761 - 763 4 0.5 184 102 0.2 762 - 764 4 1 186.5 97.5 0.2 763 - 765 4 2 189 99.5 0.2 764 - 766 4 4.5 191 98.5 0.2 765 - 767 4 3 192 98.5 0.2 766 - 768 4 2 193.5 107 0.2 767 - 769 4 3 195 109 0.2 768 - 770 4 2.5 196.5 111.5 0.2 769 - 771 4 3.5 199 104 0.2 770 - 772 4 4 200.5 103 0.2 771 - 773 4 -2 82 -13.5 0.6 538 - 774 4 -1 85.5 -7 0.55 773 - 775 4 -0.5 89 -10.5 0.55 774 - 776 4 -1.5 89.5 -13.5 0.55 775 - 777 4 -3 94 -3 0.3 776 - 778 4 -3.5 99.5 -5 0.3 777 - 779 4 -5.5 103.5 -13.5 0.3 778 - 780 4 -8 110 -15.5 0.3 779 - 781 4 -7 113.5 -14.5 0.3 780 - 782 4 -7 119 -13.5 0.3 781 - 783 4 -8 122.5 -18 0.3 782 - 784 4 -10.5 125 -22 0.3 783 - 785 4 -13.5 130 -25 0.3 784 - 786 4 -17 136.5 -28.5 0.3 785 - 787 4 -17 143 -29.5 0.3 786 - 788 4 -17.5 148 -31.5 0.3 787 - 789 4 -18 156.5 -31.5 0.3 788 - 790 4 -20 163 -31.5 0.3 789 - 791 4 -19.5 164.5 -37 0.3 790 - 792 4 -24.5 167 -39 0.3 791 - 793 4 -26.5 171 -45.5 0.3 792 - 794 4 -27 174.5 -47.5 0.3 793 - 795 4 -28.5 180.5 -54 0.3 794 - 796 4 -31 182.5 -60 0.2 795 - 797 4 -33.5 186 -66.5 0.2 796 - 798 4 -37.5 187 -63.5 0.2 797 - 799 4 -40.5 191 -59 0.2 798 - 800 4 -42.5 194 -59 0.2 799 - 801 4 -45.5 196 -75 0.2 800 - 802 4 -50 198 -78 0.2 801 - 803 4 -52 199 -83.5 0.2 802 - 804 4 -54 199.5 -90 0.2 803 - 805 4 -20 169 -30.5 0.3 791 - 806 4 -23 176.5 -28.5 0.3 805 - 807 4 -25 185.5 -34.5 0.3 806 - 808 4 -25 190 -37 0.3 807 - 809 4 -27 195 -37 0.3 808 - 810 4 -28 200 -40 0.3 809 - 811 4 -29.5 202.5 -43 0.3 810 - 812 4 -30.5 207.5 -43 0.3 811 - 813 4 -32 215 -40 0.3 812 - 814 4 -32 221.5 -39 0.3 813 - 815 4 -33 227 -40 0.3 814 - 816 4 -34 232.5 -42 0.3 815 - 817 4 -35 239.5 -48.5 0.3 816 - 818 4 -37 247 -50.5 0.3 817 - 819 4 -39 252 -52.5 0.3 818 - 820 4 -37.5 256.5 -48.5 0.3 819 - 821 4 -37.5 262 -52.5 0.3 820 - 822 4 -37 266.5 -56 0.3 821 - 823 4 -39.5 273 -57 0.3 822 - 824 4 -40.5 281 -58 0.3 823 - 825 4 -41.5 287.5 -56 0.3 824 - 826 4 -42.5 293.5 -52.5 0.3 825 - 827 4 -44.5 297.5 -58 0.3 826 - 828 4 -45.5 303 -60 0.3 827 - 829 4 -47 306.5 -60 0.3 828 - 830 4 -47.5 311 -59 0.3 829 - 831 4 -49.5 321.5 -63.5 0.3 830 - 832 4 -50 329.5 -68.5 0.3 831 - 833 4 -51.5 334 -64.5 0.3 832 - 834 4 -53.5 342 -61 0.3 833 - 835 4 -57.5 351 -64.5 0.3 834 - 836 4 -58 358.5 -64.5 0.3 835 - 837 4 -58.5 364.5 -59 0.3 836 - 838 4 -57.5 374 -69.5 0.3 837 - 839 4 -55.5 380.5 -74 0.3 838 - 840 4 -53 389 -76 0.2 839 - 841 4 -52 392 -83.5 0.2 840 - 842 4 -53 404.5 -86.5 0.2 841 - 843 4 -54 420 -85.5 0.2 842 - 844 4 -53.5 433 -93 0.2 843 - 845 4 -54 443 -100.5 0.2 844 - 846 4 -54.5 452.5 -99.5 0.2 845 - 847 4 -55.5 462 -110 0.2 846 - 848 4 -59.5 471.5 -109 0.2 847 - 849 4 -59.5 482 -110 0.2 848 - 850 4 -60.5 492 -113 0.2 849 - 851 4 -60 502 -113 0.2 850 - 852 4 -62.5 508.5 -115 0.15 851 - 853 4 -63.5 513 -121.5 0.15 852 - 854 4 -66 517.5 -127 0.15 853 - 855 4 -65.5 519 -121.5 0.15 854 - 856 4 -58 508 -111 0.15 851 - 857 4 -60.5 514.5 -119.5 0.15 856 - 858 4 -59 517.5 -122.5 0.15 857 - 859 4 -59 517.5 -120.5 0.15 858 - 860 4 -0.5 98 -7 0.85 776 - 861 4 0 101.5 -6 0.85 860 - 862 4 1 106 -7 0.65 861 - 863 4 1 111 -10.5 0.65 862 - 864 4 2.5 114.5 -11.5 0.65 863 - 865 4 0.5 120.5 -1 0.4 864 - 866 4 0 124.5 -1 0.3 865 - 867 4 -0.5 127.5 -1 0.3 866 - 868 4 -1 132 -3 0.3 867 - 869 4 0 137 -4 0.3 868 - 870 4 -0.5 140.5 -6 0.3 869 - 871 4 -1 145 -3 0.3 870 - 872 4 0 148.5 -2 0.3 871 - 873 4 4 174 -4 0.3 872 - 874 4 5 187 -5 0.3 873 - 875 4 9 201.5 0 0.3 874 - 876 4 13 214.5 -1 0.3 875 - 877 4 15 221 -2 0.3 876 - 878 4 15 228 3.5 0.3 877 - 879 4 18 236.5 2.5 0.3 878 - 880 4 21.5 248.5 2.5 0.3 879 - 881 4 24 258 4.5 0.3 880 - 882 4 24.5 265.5 4.5 0.3 881 - 883 4 25 271.5 3.5 0.3 882 - 884 4 27 279 3.5 0.3 883 - 885 4 28.5 282.5 2.5 0.3 884 - 886 4 29.5 287.5 2.5 0.3 885 - 887 4 30.5 295.5 2.5 0.3 886 - 888 4 31 302 2.5 0.3 887 - 889 4 33 307 2.5 0.3 888 - 890 4 39.5 312 2.5 0.3 889 - 891 4 43 316.5 1 0.3 890 - 892 4 48 323.5 1 0.3 891 - 893 4 49.5 327 1 0.3 892 - 894 4 52.5 333 1 0.3 893 - 895 4 54.5 339 1 0.2 894 - 896 4 56.5 348.5 2.5 0.2 895 - 897 4 56 355 1 0.2 896 - 898 4 56 360 0 0.2 897 - 899 4 56 370.5 2.5 0.2 898 - 900 4 57.5 381 -2 0.2 899 - 901 4 59 386 -4 0.2 900 - 902 4 62 393.5 -5 0.2 901 - 903 4 66 401 -6 0.2 902 - 904 4 68 409 -8.5 0.2 903 - 905 4 69.5 415 -8.5 0.2 904 - 906 4 71.5 419.5 -8.5 0.2 905 - 907 4 71.5 433.5 -5 0.2 906 - 908 4 71.5 442 0 0.2 907 - 909 4 71 451.5 -1 0.2 908 - 910 4 71.5 459.5 -8.5 0.2 909 - 911 4 73 467.5 -10.5 0.2 910 - 912 4 72 476 -12.5 0.2 911 - 913 4 68.5 487.5 -4 0.2 912 - 914 4 67 497 -3 0.2 913 - 915 4 67.5 504.5 -2 0.2 914 - 916 4 67.5 511.5 -6 0.2 915 - 917 4 68.5 521.5 -3 0.2 916 - 918 4 70.5 527.5 2.5 0.2 917 - 919 4 70 533.5 0 0.2 918 - 920 4 69.5 536 1 0.2 919 - 921 4 3.5 122.5 -3 0.45 864 - 922 4 4 127.5 -4 0.45 921 - 923 4 4.5 131.5 -3 0.45 922 - 924 4 5.5 137.5 -2 0.45 923 - 925 4 6.5 142.5 -2 0.45 924 - 926 4 5.5 144 2.5 0.45 925 - 927 4 6.5 151 -7 0.45 926 - 928 4 7 156 -9.5 0.45 927 - 929 4 8.5 160 -13.5 0.45 928 - 930 4 10 165 -15.5 0.45 929 - 931 4 11.5 170.5 -12.5 0.45 930 - 932 4 12.5 173.5 -14.5 0.45 931 - 933 4 13.5 176.5 -14.5 0.45 932 - 934 4 15 181 -18 0.45 933 - 935 4 16.5 186 -14.5 0.45 934 - 936 4 17 189.5 -15.5 0.45 935 - 937 4 18.5 194.5 -18 0.45 936 - 938 4 18.5 195.5 -17 0.45 937 - 939 4 18.5 201.5 -17 0.45 938 - 940 4 20 207 -15.5 0.45 939 - 941 4 22 213.5 -20 0.45 940 - 942 4 25 220.5 -25 0.45 941 - 943 4 23.5 227 -23 0.45 942 - 944 4 26 237.5 -28.5 0.45 943 - 945 4 28 243.5 -37 0.45 944 - 946 4 29 249.5 -33.5 0.3 945 - 947 4 31 259.5 -30.5 0.3 946 - 948 4 32.5 264.5 -40 0.3 947 - 949 4 33.5 267.5 -43 0.3 948 - 950 4 35 278 -45.5 0.3 949 - 951 4 38.5 283.5 -34.5 0.3 950 - 952 4 41 286.5 -36 0.3 951 - 953 4 43.5 296.5 -41 0.3 952 - 954 4 42 303.5 -34.5 0.3 953 - 955 4 43.5 309 -39 0.3 954 - 956 4 45 313 -40 0.3 955 - 957 4 48 319 -33.5 0.3 956 - 958 4 52.5 328.5 -41 0.3 957 - 959 4 54.5 332.5 -40 0.3 958 - 960 4 54 339.5 -40 0.3 959 - 961 4 53.5 345.5 -39 0.3 960 - 962 4 53 349.5 -44.5 0.3 961 - 963 4 54 356 -44.5 0.3 962 - 964 4 54.5 362 -55 0.3 963 - 965 4 57 374 -58 0.3 964 - 966 4 60 383 -59 0.3 965 - 967 4 62.5 391 -60 0.3 966 - 968 4 68 407 -61 0.3 967 - 969 4 64.5 416.5 -62.5 0.3 968 - 970 4 61 425 -61 0.3 969 - 971 4 60.5 431 -61 0.3 970 - 972 4 57.5 437.5 -69.5 0.3 971 - 973 4 55.5 443.5 -73 0.3 972 - 974 4 52.5 449 -76 0.3 973 - 975 4 49 455 -65.5 0.3 974 - 976 4 40.5 461.5 -64.5 0.3 975 - 977 4 35.5 466.5 -64.5 0.3 976 - 978 4 33.5 474 -66.5 0.3 977 - 979 4 31.5 478.5 -68.5 0.2 978 - 980 4 27 488.5 -68.5 0.2 979 - 981 4 25.5 494.5 -68.5 0.2 980 - 982 4 25 502 -72 0.2 981 - 983 4 21.5 516 -72 0.2 982 - 984 4 20.5 531.5 -76 0.15 983 - 985 4 21.5 534.5 -79 0.15 984 - 986 4 35 478.5 -65.5 0.2 978 - 987 4 33.5 485 -56 0.2 986 - 988 4 33.5 494.5 -54 0.2 987 - 989 4 35 509 -49.5 0.2 988 - 990 4 38 518.5 -46.5 0.2 989 - 991 4 40.5 529 -45.5 0.2 990 - 992 4 42 533.5 -56 0.2 991 - 993 4 44.5 541 -58 0.2 992 - 994 4 48.5 551 -58 0.2 993 - 995 4 51.5 559.5 -55 0.2 994 - 996 4 52 571 -57 0.15 995 - 997 4 24 198.5 -23 0.2 938 - 998 4 29.5 203 -23 0.2 997 - 999 4 31 206 -26.5 0.2 998 - 1000 4 35 210.5 -22 0.2 999 - 1001 4 39 214.5 -21 0.2 1000 - 1002 4 43.5 216 -25 0.2 1001 - 1003 4 47 218 -25 0.2 1002 - 1004 4 50.5 220 -22 0.2 1003 - 1005 4 56 224 -21 0.2 1004 - 1006 4 61 224 -22 0.2 1005 - 1007 4 66.5 225 -24 0.2 1006 - 1008 4 13.5 148 -1 0.3 926 - 1009 4 18.5 155.5 -1 0.3 1008 - 1010 4 20 159.5 0 0.3 1009 - 1011 4 26 167 0 0.3 1010 - 1012 4 32.5 171.5 -1 0.3 1011 - 1013 4 35.5 173.5 0 0.2 1012 - 1014 4 36 177 4.5 0.2 1013 - 1015 4 40.5 184.5 2.5 0.2 1014 - 1016 4 42 188 1 0.2 1015 - 1017 4 43 192 3.5 0.2 1016 - 1018 4 45 197 -4 0.2 1017 - 1019 4 48.5 200.5 -3 0.2 1018 - 1020 4 53 205.5 1 0.2 1019 - 1021 4 54.5 209 5.5 0.2 1020 - 1022 4 59 215 7.5 0.2 1021 - 1023 4 59.5 216.5 2.5 0.2 1022 - 1024 4 3.5 67 -13.5 1.55 239 - 1025 4 4 72.5 -14.5 1.55 1024 - 1026 4 3.5 76.5 -13.5 1.55 1025 - 1027 4 5 83 -12.5 1.55 1026 - 1028 4 4.5 89 -21 1.2 1027 - 1029 4 4 96 -17 1.2 1028 - 1030 4 5.5 101 -17 1.2 1029 - 1031 4 5 105.5 -25 1.2 1030 - 1032 4 4 111 -26.5 1.2 1031 - 1033 4 -2 124 -33.5 0.3 1032 - 1034 4 -3.5 129.5 -34.5 0.3 1033 - 1035 4 -6 133 -36 0.3 1034 - 1036 4 -7.5 136.5 -37 0.3 1035 - 1037 4 -7.5 136.5 -41 0.3 1036 - 1038 4 -11.5 140 -41 0.3 1037 - 1039 4 -11.5 150 -45.5 0.3 1038 - 1040 4 7.5 121 -26.5 0.45 1032 - 1041 4 10 129.5 -26.5 0.45 1040 - 1042 4 12 134 -25 0.45 1041 - 1043 4 13.5 137.5 -27.5 0.45 1042 - 1044 4 14.5 141.5 -31.5 0.45 1043 - 1045 4 16 146.5 -37 0.45 1044 - 1046 4 18 151.5 -37 0.45 1045 - 1047 4 19 155.5 -34.5 0.45 1046 - 1048 4 22 160 -33.5 0.45 1047 - 1049 4 24.5 167.5 -31.5 0.45 1048 - 1050 4 26 172 -32.5 0.45 1049 - 1051 4 30.5 177 -38 0.45 1050 - 1052 4 31.5 180.5 -37 0.45 1051 - 1053 4 33 185.5 -33.5 0.45 1052 - 1054 4 36.5 189.5 -44.5 0.45 1053 - 1055 4 39.5 193.5 -45.5 0.45 1054 - 1056 4 41.5 199 -44.5 0.45 1055 - 1057 4 43 202 -44.5 0.45 1056 - 1058 4 43.5 203.5 -42 0.45 1057 - 1059 4 47.5 207 -48.5 0.45 1058 - 1060 4 50.5 211 -52.5 0.45 1059 - 1061 4 52 215.5 -55 0.45 1060 - 1062 4 56.5 221.5 -57 0.45 1061 - 1063 4 58 226.5 -57 0.45 1062 - 1064 4 62 234.5 -56 0.45 1063 - 1065 4 63 237 -58 0.45 1064 - 1066 4 67.5 240 -43 0.2 1065 - 1067 4 76.5 243.5 -49.5 0.2 1066 - 1068 4 83 248 -38 0.2 1067 - 1069 4 89 250.5 -27.5 0.2 1068 - 1070 4 94.5 254.5 -18 0.2 1069 - 1071 4 99 255.5 -27.5 0.2 1070 - 1072 4 101.5 258.5 -26.5 0.2 1071 - 1073 4 67.5 245 -61 0.45 1065 - 1074 4 69 250.5 -62.5 0.45 1073 - 1075 4 69 256.5 -61 0.3 1074 - 1076 4 67.5 265 -63.5 0.3 1075 - 1077 4 59.5 269.5 -69.5 0.3 1076 - 1078 4 55 272.5 -73 0.3 1077 - 1079 4 53 277 -79 0.3 1078 - 1080 4 51 283.5 -75 0.3 1079 - 1081 4 51 287.5 -74 0.3 1080 - 1082 4 50.5 294.5 -82.5 0.3 1081 - 1083 4 51.5 297.5 -83.5 0.3 1082 - 1084 4 50.5 305 -83.5 0.3 1083 - 1085 4 51.5 311.5 -87.5 0.3 1084 - 1086 4 51.5 315 -93 0.3 1085 - 1087 4 49.5 318 -96 0.3 1086 - 1088 4 49.5 323 -92 0.3 1087 - 1089 4 49.5 331 -93 0.3 1088 - 1090 4 48.5 334.5 -93 0.3 1089 - 1091 4 49.5 340 -92 0.3 1090 - 1092 4 49.5 346 -92 0.3 1091 - 1093 4 51 350 -91 0.3 1092 - 1094 4 52 355 -87.5 0.3 1093 - 1095 4 51 360 -83.5 0.3 1094 - 1096 4 49.5 366 -92 0.3 1095 - 1097 4 53 372 -92 0.15 1096 - 1098 4 54 379 -92 0.15 1097 - 1099 4 53.5 386.5 -90 0.15 1098 - 1100 4 56 389.5 -90 0.15 1099 - 1101 4 44 376.5 -70.5 0.3 1096 - 1102 4 43.5 383.5 -74 0.2 1101 - 1103 4 42 390.5 -68.5 0.2 1102 - 1104 4 40 398.5 -67.5 0.2 1103 - 1105 4 37 404 -69.5 0.2 1104 - 1106 4 33.5 410.5 -62.5 0.2 1105 - 1107 4 26 417.5 -54 0.2 1106 - 1108 4 21 423.5 -65.5 0.2 1107 - 1109 4 17 428 -58 0.2 1108 - 1110 4 16 434.5 -59 0.2 1109 - 1111 4 13 441.5 -60 0.2 1110 - 1112 4 9.5 446 -52.5 0.2 1111 - 1113 4 7.5 452.5 -52.5 0.2 1112 - 1114 4 7.5 459 -59 0.2 1113 - 1115 4 6 463.5 -59 0.2 1114 - 1116 4 2.5 468.5 -60 0.2 1115 - 1117 4 0 477.5 -61 0.2 1116 - 1118 4 -2.5 485.5 -49.5 0.2 1117 - 1119 4 -6.5 493.5 -46.5 0.2 1118 - 1120 4 -6 503 -41 0.2 1119 - 1121 4 -9.5 511.5 -37 0.2 1120 - 1122 4 -12.5 512.5 -33.5 0.2 1121 - 1123 4 -17.5 506.5 -32.5 0.2 1122 - 1124 4 -17.5 506.5 -31.5 0.2 1123 - 1125 4 42 408 -74 0.2 1104 - 1126 4 38.5 417.5 -72 0.2 1125 - 1127 4 37 429 -80 0.2 1126 - 1128 4 34.5 431.5 -88.5 0.2 1127 - 1129 4 31 439.5 -93 0.2 1128 - 1130 4 29 448 -93 0.2 1129 - 1131 4 28.5 455 -96 0.2 1130 - 1132 4 26 467 -102.5 0.2 1131 - 1133 4 25 476 -110 0.2 1132 - 1134 4 22.5 482.5 -120.5 0.2 1133 - 1135 4 22 492 -121.5 0.2 1134 - 1136 4 20.5 495 -124.5 0.2 1135 - 1137 4 21 509 -123.5 0.2 1136 - 1138 4 20 515 -132 0.2 1137 - 1139 4 16 523 -133 0.2 1138 - 1140 4 14.5 529 -137.5 0.2 1139 - 1141 4 11 535 -132 0.2 1140 - 1142 4 75.5 259 -62.5 0.3 1074 - 1143 4 76 262 -61 0.3 1142 - 1144 4 78 267 -61 0.3 1143 - 1145 4 80 271.5 -62.5 0.3 1144 - 1146 4 84.5 276.5 -64.5 0.3 1145 - 1147 4 86 281.5 -63.5 0.3 1146 - 1148 4 88.5 283 -62.5 0.3 1147 - 1149 4 89.5 289.5 -55 0.2 1148 - 1150 4 90.5 300 -58 0.2 1149 - 1151 4 92 306 -58 0.2 1150 - 1152 4 93.5 314.5 -57 0.2 1151 - 1153 4 95.5 319.5 -47.5 0.2 1152 - 1154 4 98 326 -51.5 0.2 1153 - 1155 4 100 332 -51.5 0.2 1154 - 1156 4 105 343 -48.5 0.2 1155 - 1157 4 110 352 -44.5 0.2 1156 - 1158 4 116.5 365 -38 0.2 1157 - 1159 4 119.5 370.5 -32.5 0.2 1158 - 1160 4 124 378 -41 0.2 1159 - 1161 4 126 387 -40 0.2 1160 - 1162 4 124 392 -45.5 0.2 1161 - 1163 4 123.5 401 -49.5 0.2 1162 - 1164 4 122 410 -49.5 0.2 1163 - 1165 4 122 419 -56 0.2 1164 - 1166 4 121 429 -60 0.2 1165 - 1167 4 122 441.5 -59 0.2 1166 - 1168 4 122 450.5 -67.5 0.2 1167 - 1169 4 120.5 457 -66.5 0.2 1168 - 1170 4 121.5 466.5 -67.5 0.2 1169 - 1171 4 125 471.5 -66.5 0.2 1170 - 1172 4 126.5 476.5 -67.5 0.2 1171 - 1173 4 129.5 483 -75 0.2 1172 - 1174 4 129.5 488.5 -78 0.2 1173 - 1175 4 131.5 494 -77 0.2 1174 - 1176 4 133.5 501 -79 0.2 1175 - 1177 4 132.5 504.5 -80 0.2 1176 - 1178 4 133.5 513 -81.5 0.2 1177 - 1179 4 133 519 -83.5 0.2 1178 - 1180 4 133 527.5 -83.5 0.2 1179 - 1181 4 133.5 535.5 -90 0.2 1180 - 1182 4 136 546 -88.5 0.2 1181 - 1183 4 137 550 -91 0.2 1182 - 1184 4 135.5 557 -92 0.2 1183 - 1185 4 135.5 566 -95 0.2 1184 - 1186 4 135.5 566 -92 0.2 1185 - 1187 4 130.5 389.5 -37 0.2 1161 - 1188 4 132 392.5 -37 0.2 1187 - 1189 4 137.5 400 -33.5 0.2 1188 - 1190 4 142.5 407 -30.5 0.2 1189 - 1191 4 145.5 411.5 -22 0.2 1190 - 1192 4 149 417 -21 0.2 1191 - 1193 4 152.5 420.5 -26.5 0.2 1192 - 1194 4 155.5 424 -26.5 0.2 1193 - 1195 4 158.5 426 -22 0.2 1194 - 1196 4 95.5 290 -66.5 0.2 1148 - 1197 4 100.5 295 -64.5 0.2 1196 - 1198 4 105.5 298.5 -68.5 0.2 1197 - 1199 4 109.5 302 -76 0.2 1198 - 1200 4 115 306.5 -81.5 0.2 1199 - 1201 4 124 307.5 -85.5 0.2 1200 - 1202 4 126 308.5 -94 0.2 1201 - 1203 4 8.5 87.5 -12.5 0.8 1027 - 1204 4 15 95 -9.5 0.8 1203 - 1205 4 16 99 -9.5 0.8 1204 - 1206 4 19.5 104.5 -9.5 0.8 1205 - 1207 4 20.5 108 -9.5 0.8 1206 - 1208 4 23 112 -9.5 0.8 1207 - 1209 4 25.5 116.5 -5 0.8 1208 - 1210 4 29 121.5 -5 0.8 1209 - 1211 4 31.5 122.5 -5 0.8 1210 - 1212 4 34 126 -6 0.8 1211 - 1213 4 35.5 130.5 -4 0.8 1212 - 1214 4 39.5 132 5.5 0.45 1213 - 1215 4 42 135 6.5 0.45 1214 - 1216 4 49 136.5 6.5 0.4 1215 - 1217 4 57 139 5.5 0.4 1216 - 1218 4 65 141.5 3.5 0.4 1217 - 1219 4 74 144 3.5 0.4 1218 - 1220 4 82.5 144.5 3.5 0.4 1219 - 1221 4 91 146.5 3.5 0.3 1220 - 1222 4 95 145 2.5 0.3 1221 - 1223 4 100.5 144.5 2.5 0.3 1222 - 1224 4 104.5 143.5 0 0.2 1223 - 1225 4 111.5 144 1 0.2 1224 - 1226 4 112.5 144 3.5 0.2 1225 - 1227 4 36.5 137.5 -2 0.6 1213 - 1228 4 38 142 -2 0.6 1227 - 1229 4 39 144.5 1 0.6 1228 - 1230 4 40 149 1 0.6 1229 - 1231 4 43 149.5 -4 0.2 1230 - 1232 4 47.5 150.5 -4 0.2 1231 - 1233 4 50.5 150 -4 0.2 1232 - 1234 4 56.5 153.5 -9.5 0.2 1233 - 1235 4 61 155.5 -13.5 0.2 1234 - 1236 4 66.5 161.5 -15.5 0.2 1235 - 1237 4 71.5 164 -15.5 0.2 1236 - 1238 4 75 167.5 -7 0.2 1237 - 1239 4 79 170.5 -3 0.2 1238 - 1240 4 83.5 171.5 2.5 0.2 1239 - 1241 4 93 173.5 2.5 0.2 1240 - 1242 4 97.5 177 8.5 0.2 1241 - 1243 4 106 179 9.5 0.2 1242 - 1244 4 111.5 182.5 12 0.2 1243 - 1245 4 119 184 7.5 0.2 1244 - 1246 4 123 185 12 0.2 1245 - 1247 4 41.5 154 0 0.55 1230 - 1248 4 41.5 155.5 0 0.55 1247 - 1249 4 41.5 158.5 -6 0.2 1248 - 1250 4 39.5 166.5 -3 0.2 1249 - 1251 4 38 170 -4 0.2 1250 - 1252 4 39 175 -3 0.2 1251 - 1253 4 40 178.5 -7 0.2 1252 - 1254 4 38.5 184 -8.5 0.2 1253 - 1255 4 39 189.5 -10.5 0.2 1254 - 1256 4 41 194.5 -10.5 0.2 1255 - 1257 4 43 204.5 -13.5 0.2 1256 - 1258 4 44 207.5 -15.5 0.2 1257 - 1259 4 44.5 212.5 -19 0.2 1258 - 1260 4 46.5 217.5 -25 0.2 1259 - 1261 4 48 224.5 -18 0.2 1260 - 1262 4 48 232 -18 0.15 1261 - 1263 4 48 235 -19 0.15 1262 - 1264 4 48 235 -20 0.15 1263 - 1265 4 47.5 169 -4 0.55 1248 - 1266 4 49 174 -5 0.55 1265 - 1267 4 53.5 181 -5 0.55 1266 - 1268 4 56 184 -13.5 0.55 1267 - 1269 4 57.5 188 -14.5 0.55 1268 - 1270 4 59 191 -13.5 0.55 1269 - 1271 4 60.5 195.5 -10.5 0.55 1270 - 1272 4 62.5 202 -10.5 0.2 1271 - 1273 4 65 209 -15.5 0.2 1272 - 1274 4 64.5 214 -18 0.2 1273 - 1275 4 65 221 -18 0.2 1274 - 1276 4 65.5 227.5 -18 0.2 1275 - 1277 4 65 235 -22 0.2 1276 - 1278 4 65 244.5 -14.5 0.2 1277 - 1279 4 62 248 -13.5 0.2 1278 - 1280 4 67.5 204.5 -19 0.6 1271 - 1281 4 73.5 209.5 -18 0.45 1280 - 1282 4 76 213 -19 0.45 1281 - 1283 4 79 218.5 -19 0.45 1282 - 1284 4 80.5 223.5 -30.5 0.2 1283 - 1285 4 82.5 231 -36 0.2 1284 - 1286 4 84 238 -37 0.2 1285 - 1287 4 85.5 243.5 -37 0.2 1286 - 1288 4 86.5 247.5 -33.5 0.2 1287 - 1289 4 88.5 254 -42 0.2 1288 - 1290 4 90 257 -48.5 0.2 1289 - 1291 4 89 261.5 -56 0.2 1290 - 1292 4 91 267 -58 0.2 1291 - 1293 4 92 271 -62.5 0.2 1292 - 1294 4 94.5 273 -62.5 0.2 1293 - 1295 4 100 279 -62.5 0.2 1294 - 1296 4 103.5 283 -61 0.2 1295 - 1297 4 103 288.5 -64.5 0.2 1296 - 1298 4 103.5 290.5 -64.5 0.2 1297 - 1299 4 104.5 295.5 -66.5 0.2 1298 - 1300 4 106.5 303.5 -63.5 0.2 1299 - 1301 4 106.5 323 -61 0.2 1300 - 1302 4 106 333.5 -63.5 0.2 1301 - 1303 4 108.5 288 -61 0.3 1296 - 1304 4 112 291.5 -59 0.3 1303 - 1305 4 113 295 -62.5 0.3 1304 - 1306 4 119 298.5 -59 0.2 1305 - 1307 4 123 303 -64.5 0.2 1306 - 1308 4 128.5 308.5 -64.5 0.2 1307 - 1309 4 131 315 -59 0.2 1308 - 1310 4 135.5 321 -63.5 0.2 1309 - 1311 4 140.5 324.5 -74 0.2 1310 - 1312 4 144.5 329 -78 0.2 1311 - 1313 4 146 333.5 -79 0.2 1312 - 1314 4 149.5 338.5 -80 0.2 1313 - 1315 4 153.5 343 -78 0.2 1314 - 1316 4 149 351 -84.5 0.2 1315 - 1317 4 148 356 -82.5 0.2 1316 - 1318 4 145 365 -81.5 0.2 1317 - 1319 4 141 369 -83.5 0.2 1318 - 1320 4 135 378 -86.5 0.2 1319 - 1321 4 133 384.5 -88.5 0.2 1320 - 1322 4 130.5 389.5 -91 0.2 1321 - 1323 4 129.5 394 -93 0.2 1322 - 1324 4 127 406.5 -98 0.2 1323 - 1325 4 124 413 -92 0.2 1324 - 1326 4 125.5 422 -91 0.2 1325 - 1327 4 127.5 429 -86.5 0.2 1326 - 1328 4 128 431 -91 0.2 1327 - 1329 4 135 454 -91 0.2 1328 - 1330 4 138.5 464.5 -83.5 0.2 1329 - 1331 4 142 474 -82.5 0.2 1330 - 1332 4 144 480.5 -72 0.2 1331 - 1333 4 146 488 -81.5 0.2 1332 - 1334 4 142.5 494.5 -70.5 0.2 1333 - 1335 4 145 506 -73 0.2 1334 - 1336 4 147.5 519.5 -69.5 0.2 1335 - 1337 4 148.5 531 -66.5 0.2 1336 - 1338 4 147 540.5 -73 0.2 1337 - 1339 4 144 550.5 -66.5 0.2 1338 - 1340 4 138.5 552 -65.5 0.15 1339 - 1341 4 131.5 557.5 -66.5 0.15 1340 - 1342 4 131 438 -101.5 0.2 1328 - 1343 4 130.5 447.5 -101.5 0.2 1342 - 1344 4 130 454 -114 0.2 1343 - 1345 4 127 464.5 -113 0.2 1344 - 1346 4 128.5 469.5 -119.5 0.2 1345 - 1347 4 128.5 477 -118.5 0.2 1346 - 1348 4 126.5 482.5 -128 0.2 1347 - 1349 4 121.5 491.5 -131 0.2 1348 - 1350 4 117 495 -133 0.2 1349 - 1351 4 115.5 501.5 -135.5 0.2 1350 - 1352 4 112 510.5 -138.5 0.2 1351 - 1353 4 108 518.5 -142.5 0.2 1352 - 1354 4 105.5 521 -140.5 0.2 1353 - 1355 4 101.5 525.5 -140.5 0.2 1354 - 1356 4 97.5 536 -145 0.2 1355 - 1357 4 93 539 -146 0.2 1356 - 1358 4 90.5 542 -146 0.2 1357 - 1359 4 81 220 -18 0.3 1283 - 1360 4 86.5 225 -15.5 0.3 1359 - 1361 4 91.5 231 -17 0.3 1360 - 1362 4 96 236.5 -18 0.3 1361 - 1363 4 97 239.5 -20 0.3 1362 - 1364 4 102 243 -19 0.3 1363 - 1365 4 106 247 -19 0.3 1364 - 1366 4 111.5 253.5 -19 0.3 1365 - 1367 4 115.5 256 -19 0.3 1366 - 1368 4 118 259.5 -20 0.3 1367 - 1369 4 120.5 263 -19 0.3 1368 - 1370 4 121.5 265 -18 0.3 1369 - 1371 4 126 270 -17 0.3 1370 - 1372 4 127.5 274.5 -14.5 0.3 1371 - 1373 4 130.5 280 -14.5 0.3 1372 - 1374 4 132.5 285 -15.5 0.3 1373 - 1375 4 134.5 288 -15.5 0.2 1374 - 1376 4 135.5 294 -17 0.2 1375 - 1377 4 135 298 -18 0.2 1376 - 1378 4 135.5 305 -18 0.2 1377 - 1379 4 136 311 -15.5 0.2 1378 - 1380 4 138 316.5 -12.5 0.2 1379 - 1381 4 140 321 -22 0.2 1380 - 1382 4 139 327.5 -20 0.2 1381 - 1383 4 141.5 334.5 -25 0.2 1382 - 1384 4 143 339 -27.5 0.2 1383 - 1385 4 144.5 344.5 -20 0.2 1384 - 1386 4 144 349 -29.5 0.2 1385 - 1387 4 145.5 357.5 -29.5 0.2 1386 - 1388 4 145.5 368 -40 0.2 1387 - 1389 4 143.5 372 -43 0.2 1388 - 1390 4 142.5 378.5 -46.5 0.2 1389 - 1391 4 142.5 384.5 -46.5 0.2 1390 - 1392 4 143 389 -48.5 0.2 1391 - 1393 4 142.5 396 -47.5 0.2 1392 - 1394 4 143 415.5 -42 0.2 1393 - 1395 4 144 426.5 -44.5 0.2 1394 - 1396 4 143.5 433.5 -44.5 0.2 1395 - 1397 4 143.5 441.5 -46.5 0.2 1396 - 1398 4 140.5 459 -32.5 0.2 1397 - 1399 4 142 464 -27.5 0.2 1398 - 1400 4 141 475 -32.5 0.2 1399 - 1401 4 143 482.5 -33.5 0.2 1400 - 1402 4 143.5 492.5 -28.5 0.2 1401 - 1403 4 145 501 -21 0.2 1402 - 1404 4 145 507 -27.5 0.2 1403 - 1405 4 142 513.5 -20 0.2 1404 - 1406 4 143.5 522 -17 0.2 1405 - 1407 4 145.5 532.5 -9.5 0.2 1406 - 1408 4 147.5 541 -9.5 0.2 1407 - 1409 4 147.5 541 2.5 0.2 1408 - 1410 3 2 1 3.5 1.8 1 - 1411 3 5.5 -2.5 3.5 1.45 1410 - 1412 3 6.5 -6 2.5 1.45 1411 - 1413 3 6.5 -8 5.5 1.45 1412 - 1414 3 7 -9 0 0.55 1413 - 1415 3 7 -18.5 -1 0.55 1414 - 1416 3 6 -25.5 -6 0.55 1415 - 1417 3 4.5 -30.5 -6 0.55 1416 - 1418 3 3.5 -33 -6 0.45 1417 - 1419 3 4 -40.5 -6 0.45 1418 - 1420 3 4 -49 -10.5 0.45 1419 - 1421 3 5.5 -57.5 -8.5 0.45 1420 - 1422 3 5.5 -61 -8.5 0.45 1421 - 1423 3 6 -64.5 -8.5 0.45 1422 - 1424 3 3.5 -69 -8.5 0.45 1423 - 1425 3 5.5 -75 -7 0.45 1424 - 1426 3 5 -86 -6 0.45 1425 - 1427 3 6 -96 -6 0.45 1426 - 1428 3 5.5 -105 -5 0.45 1427 - 1429 3 4 -113.5 -9.5 0.45 1428 - 1430 3 5 -119 -9.5 0.4 1429 - 1431 3 6.5 -125.5 -9.5 0.4 1430 - 1432 3 5.5 -127.5 -9.5 0.4 1431 - 1433 3 5.5 -137.5 -9.5 0.4 1432 - 1434 3 3.5 -142.5 -7 0.4 1433 - 1435 3 4.5 -149.5 -6 0.4 1434 - 1436 3 4 -155 -12.5 0.4 1435 - 1437 3 4 -162 -12.5 0.4 1436 - 1438 3 2.5 -165.5 -12.5 0.4 1437 - 1439 3 2 -169.5 -12.5 0.3 1438 - 1440 3 4 -172 -12.5 0.3 1439 - 1441 3 2 -176.5 -11.5 0.3 1440 - 1442 3 3.5 -179 -20 0.3 1441 - 1443 3 3.5 -184 -19 0.3 1442 - 1444 3 0.5 -186.5 -19 0.3 1443 - 1445 3 -0.5 -189.5 -17 0.3 1444 - 1446 3 -1 -192 -15.5 0.3 1445 - 1447 3 -1.5 -193.5 -23 0.2 1446 - 1448 3 -2.5 -197 -21 0.2 1447 - 1449 3 -3 -200.5 -26.5 0.2 1448 - 1450 3 -4 -204 -26.5 0.2 1449 - 1451 3 7.5 -13 5.5 0.2 1414 - 1452 3 6 -16.5 9.5 0.3 1451 - 1453 3 8 -19 13 0.3 1452 - 1454 3 9 -29 17 0.3 1453 - 1455 3 9 -33 20.5 0.3 1454 - 1456 3 4.5 -38 20.5 0.3 1455 - 1457 3 3.5 -41.5 20.5 0.3 1456 - 1458 3 2 -46 19 0.3 1457 - 1459 3 1 -50 18 0.3 1458 - 1460 3 -0.5 -53 18 0.3 1459 - 1461 3 -4 -57.5 24.5 0.3 1460 - 1462 3 -3.5 -59 25.5 0.3 1461 - 1463 3 -3.5 -64 26.5 0.3 1462 - 1464 3 -2.5 -73.5 31 0.3 1463 - 1465 3 -2.5 -82.5 43.5 0.3 1464 - 1466 3 -1 -88.5 37 0.3 1465 - 1467 3 -1.5 -94 38.5 0.3 1466 - 1468 3 -2.5 -97.5 42.5 0.3 1467 - 1469 3 0 -99.5 48 0.3 1468 - 1470 3 1.5 -107 53 0.3 1469 - 1471 3 2.5 -110.5 56.5 0.3 1470 - 1472 3 3.5 -114 56.5 0.3 1471 - 1473 3 3 -116.5 60.5 0.3 1472 - 1474 3 2.5 -121.5 68 0.2 1473 - 1475 3 1.5 -125 69 0.2 1474 - 1476 3 2 -127 67 0.2 1475 - 1477 3 1.5 -130 67 0.2 1476 - 1478 3 -7 -65.5 25.5 0.3 1462 - 1479 3 -8 -69.5 25.5 0.3 1478 - 1480 3 -10 -74 30 0.3 1479 - 1481 3 -11.5 -79 28.5 0.3 1480 - 1482 3 -13 -83.5 28.5 0.3 1481 - 1483 3 -16.5 -88.5 35 0.3 1482 - 1484 3 -18.5 -94 36 0.3 1483 - 1485 3 -21.5 -100 36 0.3 1484 - 1486 3 -22.5 -107 37 0.3 1485 - 1487 3 -24 -114 37 0.3 1486 - 1488 3 -25 -123 36 0.3 1487 - 1489 3 -26.5 -128 38.5 0.3 1488 - 1490 3 -27.5 -132 39.5 0.3 1489 - 1491 3 -30 -138 38.5 0.3 1490 - 1492 3 -31 -142 39.5 0.3 1491 - 1493 3 -32.5 -146 39.5 0.3 1492 - 1494 3 -33 -149 39.5 0.3 1493 - 1495 3 -34.5 -152.5 39.5 0.3 1494 - 1496 3 -35 -155 39.5 0.3 1495 - 1497 3 -34.5 -158.5 38.5 0.3 1496 - 1498 3 -33 -163.5 38.5 0.2 1497 - 1499 3 -34 -167 38.5 0.2 1498 - 1500 3 -35 -169 38.5 0.2 1499 - 1501 3 -33 -170.5 38.5 0.2 1500 - 1502 3 -34.5 -173.5 36 0.2 1501 - 1503 3 -33.5 -174.5 37 0.2 1502 - 1504 3 7.5 -10 -9.5 0.3 1451 - 1505 3 12.5 -16 -17 0.3 1504 - 1506 3 14.5 -19 -17 0.3 1505 - 1507 3 15 -21 -17 0.3 1506 - 1508 3 16.5 -27.5 -15.5 0.3 1507 - 1509 3 16 -32 -24 0.3 1508 - 1510 3 19 -37.5 -23 0.3 1509 - 1511 3 16.5 -42.5 -27.5 0.3 1510 - 1512 3 17 -45.5 -26.5 0.3 1511 - 1513 3 18.5 -49.5 -25 0.3 1512 - 1514 3 20 -55.5 -24 0.3 1513 - 1515 3 23 -60.5 -23 0.3 1514 - 1516 3 22 -64 -29.5 0.3 1515 - 1517 3 23.5 -67 -33.5 0.3 1516 - 1518 3 25 -72 -38 0.3 1517 - 1519 3 25 -76 -42 0.3 1518 - 1520 3 26.5 -81 -47.5 0.3 1519 - 1521 3 29 -86.5 -47.5 0.3 1520 - 1522 3 28 -89 -51.5 0.3 1521 - 1523 3 30 -96 -56 0.3 1522 - 1524 3 30 -101.5 -61 0.3 1523 - 1525 3 30 -107.5 -65.5 0.3 1524 - 1526 3 32 -112.5 -64.5 0.3 1525 - 1527 3 35 -119 -67.5 0.3 1526 - 1528 3 36 -123.5 -74 0.3 1527 - 1529 3 37.5 -129 -77 0.3 1528 - 1530 3 38.5 -132 -81.5 0.3 1529 - 1531 3 41.5 -136.5 -83.5 0.3 1530 - 1532 3 42.5 -141.5 -87.5 0.3 1531 - 1533 3 41 -146.5 -87.5 0.2 1532 - 1534 3 42 -152 -95 0.2 1533 - 1535 3 43 -157 -91 0.2 1534 - 1536 3 43.5 -162 -96 0.2 1535 - 1537 3 44 -164.5 -98 0.2 1536 - 1538 3 43.5 -167 -104.5 0.2 1537 - 1539 3 41 -170.5 -99.5 0.2 1538 - 1540 3 39.5 -173 -100.5 0.15 1539 - 1541 3 18 -21 -15.5 0.3 1507 - 1542 3 22.5 -26.5 -23 0.3 1541 - 1543 3 25 -29 -25 0.3 1542 - 1544 3 29 -35 -26.5 0.3 1543 - 1545 3 33 -42 -30.5 0.3 1544 - 1546 3 36 -45 -36 0.3 1545 - 1547 3 39.5 -48 -37 0.3 1546 - 1548 3 38.5 -54 -37 0.3 1547 - 1549 3 40.5 -60 -37 0.3 1548 - 1550 3 41.5 -66 -37 0.3 1549 - 1551 3 40 -72 -37 0.3 1550 - 1552 3 41.5 -81 -34.5 0.3 1551 - 1553 3 44 -90.5 -34.5 0.3 1552 - 1554 3 46 -97 -34.5 0.3 1553 - 1555 3 46.5 -106 -34.5 0.3 1554 - 1556 3 48 -118 -41 0.3 1555 - 1557 3 46 -128.5 -42 0.3 1556 - 1558 3 48 -135 -49.5 0.3 1557 - 1559 3 47.5 -143 -49.5 0.3 1558 - 1560 3 49.5 -145.5 -49.5 0.3 1559 - 1561 3 47.5 -152.5 -48.5 0.3 1560 - 1562 3 48.5 -161.5 -46.5 0.3 1561 - 1563 3 47 -165.5 -46.5 0.3 1562 - 1564 3 46.5 -169.5 -50.5 0.3 1563 - 1565 3 48.5 -172 -49.5 0.3 1564 - 1566 3 46.5 -176.5 -49.5 0.3 1565 - 1567 3 48 -181.5 -55 0.3 1566 - 1568 3 47 -186 -54 0.2 1567 - 1569 3 46 -189 -55 0.2 1568 - 1570 3 43 -51 -31.5 0.3 1547 - 1571 3 46.5 -55 -32.5 0.3 1570 - 1572 3 49 -58.5 -39 0.3 1571 - 1573 3 53.5 -59.5 -39 0.3 1572 - 1574 3 54.5 -62.5 -41 0.3 1573 - 1575 3 59 -63.5 -45.5 0.3 1574 - 1576 3 62.5 -64.5 -47.5 0.3 1575 - 1577 3 64 -69.5 -45.5 0.3 1576 - 1578 3 64 -73 -44.5 0.3 1577 - 1579 3 63.5 -74.5 -50.5 0.3 1578 - 1580 3 6.5 -12.5 -1 0.3 1504 - 1581 3 10.5 -20.5 -2 0.3 1580 - 1582 3 14 -29.5 -2 0.3 1581 - 1583 3 17 -34.5 0 0.3 1582 - 1584 3 20 -40.5 0 0.3 1583 - 1585 3 22 -46 1 0.3 1584 - 1586 3 27.5 -51.5 0 0.3 1585 - 1587 3 28 -55 0 0.3 1586 - 1588 3 30 -58 1 0.3 1587 - 1589 3 33 -62 1 0.3 1588 - 1590 3 35 -63.5 3.5 0.3 1589 - 1591 3 35.5 -68.5 3.5 0.3 1590 - 1592 3 38 -72.5 2.5 0.2 1591 - 1593 3 39.5 -81.5 5.5 0.2 1592 - 1594 3 42.5 -86 5.5 0.2 1593 - 1595 3 44 -87.5 12 0.2 1594 - 1596 3 46.5 -90.5 14 0.2 1595 - 1597 3 49.5 -93 16 0.2 1596 - 1598 3 52 -97.5 18 0.2 1597 - 1599 3 55 -98.5 19 0.2 1598 - 1600 3 57.5 -100 19 0.2 1599 - 1601 3 40 -69 -3 0.3 1590 - 1602 3 42.5 -72 -5 0.3 1601 - 1603 3 47 -77 -10.5 0.3 1602 - 1604 3 49 -80.5 -5 0.3 1603 - 1605 3 53.5 -83 -13.5 0.3 1604 - 1606 3 56 -87 -12.5 0.3 1605 - 1607 3 58 -93 -14.5 0.3 1606 - 1608 3 59.5 -97 -19 0.3 1607 - 1609 3 63 -103.5 -21 0.3 1608 - 1610 3 66 -105.5 -21 0.3 1609 - 1611 3 67.5 -114.5 -26.5 0.3 1610 - 1612 3 70 -122 -24 0.3 1611 - 1613 3 71.5 -130.5 -27.5 0.3 1612 - 1614 3 71 -132.5 -27.5 0.2 1613 - 1615 3 71.5 -135 -28.5 0.2 1614 - 1616 3 71.5 -140 -27.5 0.15 1615 - 1617 3 71.5 -140 -28.5 0.15 1616 - 1618 3 8 -12.5 -5 0.4 1580 - 1619 3 13.5 -13 -3 0.4 1618 - 1620 3 15 -17.5 2.5 0.4 1619 - 1621 3 21 -20.5 3.5 0.4 1620 - 1622 3 27 -23.5 5.5 0.4 1621 - 1623 3 31 -27 2.5 0.3 1622 - 1624 3 34.5 -32.5 6.5 0.3 1623 - 1625 3 39 -38 7.5 0.3 1624 - 1626 3 41.5 -42 14 0.3 1625 - 1627 3 43 -45.5 12 0.3 1626 - 1628 3 46 -50.5 12 0.3 1627 - 1629 3 49.5 -53.5 12 0.3 1628 - 1630 3 51 -56 13 0.3 1629 - 1631 3 55.5 -54.5 21.5 0.3 1630 - 1632 3 58 -55 26.5 0.3 1631 - 1633 3 62.5 -55.5 32 0.3 1632 - 1634 3 64.5 -59 37 0.3 1633 - 1635 3 67.5 -63 33 0.3 1634 - 1636 3 70 -66.5 34 0.3 1635 - 1637 3 76.5 -68.5 34 0.3 1636 - 1638 3 81 -73.5 36 0.3 1637 - 1639 3 82.5 -76 36 0.3 1638 - 1640 3 84.5 -80 35 0.15 1639 - 1641 3 9.5 -18 19 0.3 1618 - 1642 3 11 -19.5 20.5 0.3 1641 - 1643 3 13.5 -20.5 19 0.3 1642 - 1644 3 19 -25.5 20.5 0.3 1643 - 1645 3 22 -27 24.5 0.3 1644 - 1646 3 22 -29 22.5 0.3 1645 - 1647 3 24.5 -32 32 0.3 1646 - 1648 3 24.5 -31.5 39.5 0.3 1647 - 1649 3 26 -34.5 40.5 0.3 1648 - 1650 3 27 -35.5 39.5 0.3 1649 - 1651 3 28 -39 42.5 0.3 1650 - 1652 3 30 -41 48 0.3 1651 - 1653 3 30 -43.5 48 0.3 1652 - 1654 3 29 -46 49 0.3 1653 - 1655 3 31.5 -46.5 50 0.3 1654 - 1656 3 31.5 -49 53 0.3 1655 - 1657 3 31.5 -50.5 54 0.3 1656 - 1658 3 34 -52.5 56.5 0.3 1657 - 1659 3 33 -54.5 61.5 0.3 1658 - 1660 3 32 -57.5 62.5 0.3 1659 - 1661 3 33 -59.5 62.5 0.3 1660 - 1662 3 32.5 -62 67 0.3 1661 - 1663 3 34.5 -65 64.5 0.3 1662 - 1664 3 34 -66.5 64.5 0.3 1663 - 1665 3 33.5 -69.5 68 0.3 1664 - 1666 3 33.5 -71 71 0.3 1665 - 1667 3 35 -75 75.5 0.3 1666 - 1668 3 34 -78 80.5 0.3 1667 - 1669 3 36.5 -80.5 87 0.3 1668 - 1670 3 37 -83.5 91 0.3 1669 - 1671 3 37 -86 86 0.2 1670 - 1672 3 35 -87 85 0.2 1671 - 1673 3 35 -87 86 0.2 1672 - 1674 3 31 -32 32 0.3 1648 - 1675 3 33 -35 36 0.3 1674 - 1676 3 38 -38.5 36 0.3 1675 - 1677 3 41.5 -41.5 39.5 0.3 1676 - 1678 3 45 -44 41.5 0.3 1677 - 1679 3 49.5 -47 48 0.3 1678 - 1680 3 51 -49 50 0.3 1679 - 1681 3 53 -51.5 50 0.3 1680 - 1682 3 56 -52.5 49 0.3 1681 - 1683 3 58 -55 54 0.3 1682 - 1684 3 60 -58 58.5 0.3 1683 - 1685 3 61.5 -58 58.5 0.3 1684 - 1686 3 64 -63 59.5 0.2 1685 - 1687 3 66 -65 58.5 0.2 1686 - 1688 3 67.5 -66.5 58.5 0.2 1687 - 1689 3 69 -68 57.5 0.2 1688 - 1690 3 74 -72.5 58.5 0.2 1689 - 1691 3 0 0 -4 0.65 1 - 1692 3 0.5 -5 -4 0.65 1691 - 1693 3 0 -10.5 -3 0.65 1692 - 1694 3 -0.5 -14 -3 0.65 1693 - 1695 3 -1 -17.5 -3 0.65 1694 - 1696 3 -2.5 -21.5 -1 0.65 1695 - 1697 3 -2.5 -22.5 -1 0.65 1696 - 1698 3 -4.5 -27 -1 0.45 1697 - 1699 3 -5 -30 -2 0.45 1698 - 1700 3 -6 -32 -2 0.45 1699 - 1701 3 -4 -35.5 -2 0.45 1700 - 1702 3 -5.5 -39 -2 0.45 1701 - 1703 3 -5.5 -41.5 -2 0.4 1702 - 1704 3 -3 -46 -2 0.4 1703 - 1705 3 -4.5 -51 3.5 0.4 1704 - 1706 3 -4.5 -50.5 2.5 0.4 1705 - 1707 3 -6.5 -56.5 0 0.4 1706 - 1708 3 -6.5 -63.5 1 0.4 1707 - 1709 3 -6 -69 1 0.4 1708 - 1710 3 -7 -71 1 0.4 1709 - 1711 3 -7.5 -73.5 2.5 0.4 1710 - 1712 3 -9 -77 0 0.4 1711 - 1713 3 -8 -80 1 0.4 1712 - 1714 3 -10 -84 -4 0.4 1713 - 1715 3 -11.5 -88 -4 0.4 1714 - 1716 3 -10 -94.5 -5 0.4 1715 - 1717 3 -11 -98.5 -5 0.4 1716 - 1718 3 -13.5 -104.5 -4 0.4 1717 - 1719 3 -13.5 -111 -8.5 0.4 1718 - 1720 3 -15 -115.5 -7 0.4 1719 - 1721 3 -16.5 -120.5 -7 0.4 1720 - 1722 3 -18.5 -126 -8.5 0.4 1721 - 1723 3 -19.5 -129 -6 0.4 1722 - 1724 3 -20 -133 -9.5 0.3 1723 - 1725 3 -20.5 -137.5 -9.5 0.3 1724 - 1726 3 -20 -142.5 -8.5 0.3 1725 - 1727 3 -20 -144.5 -8.5 0.3 1726 - 1728 3 -19 -148 -11.5 0.3 1727 - 1729 3 -19 -149.5 -15.5 0.3 1728 - 1730 3 -18.5 -154.5 -12.5 0.3 1729 - 1731 3 -20.5 -157 -12.5 0.3 1730 - 1732 3 -22 -160.5 -12.5 0.3 1731 - 1733 3 -20.5 -165 -12.5 0.2 1732 - 1734 3 -18.5 -166 -20 0.2 1733 - 1735 3 -2.5 -58.5 2.5 0.3 1706 - 1736 3 0 -67 8.5 0.3 1735 - 1737 3 0 -76.5 9.5 0.3 1736 - 1738 3 0.5 -87 9.5 0.3 1737 - 1739 3 0.5 -93.5 16 0.3 1738 - 1740 3 0 -97 15 0.3 1739 - 1741 3 0 -102.5 18 0.3 1740 - 1742 3 -0.5 -107.5 23.5 0.3 1741 - 1743 3 0.5 -113 26.5 0.3 1742 - 1744 3 2.5 -119 23.5 0.3 1743 - 1745 3 5 -127.5 23.5 0.3 1744 - 1746 3 2.5 -135.5 24.5 0.3 1745 - 1747 3 1 -136.5 25.5 0.3 1746 - 1748 3 2 -151.5 30 0.3 1747 - 1749 3 3.5 -158 31 0.3 1748 - 1750 3 3 -161.5 31 0.2 1749 - 1751 3 4.5 -163.5 31 0.3 1750 - 1752 3 3.5 -168.5 31 0.3 1751 - 1753 3 3.5 -172.5 32 0.3 1752 - 1754 3 5 -178 31 0.3 1753 - 1755 3 5.5 -184 31 0.2 1754 - 1756 3 5.5 -187.5 25.5 0.2 1755 - 1757 3 10 -191 27.5 0.2 1756 - 1758 3 9 -194.5 26.5 0.2 1757 - 1759 3 0.5 -28.5 -4 0.4 1697 - 1760 3 2.5 -32 -5 0.4 1759 - 1761 3 4 -35 -6 0.4 1760 - 1762 3 6.5 -41 -6 0.4 1761 - 1763 3 9 -46 -6 0.4 1762 - 1764 3 11.5 -51 -5 0.4 1763 - 1765 3 14 -57 -3 0.4 1764 - 1766 3 16 -63.5 -3 0.4 1765 - 1767 3 19 -67.5 -6 0.4 1766 - 1768 3 19 -67.5 -5 0.4 1767 - 1769 3 21 -74.5 -3 0.3 1768 - 1770 3 22.5 -79 -6 0.3 1769 - 1771 3 23.5 -85 -11.5 0.3 1770 - 1772 3 25 -90 -13.5 0.3 1771 - 1773 3 26.5 -97.5 -8.5 0.3 1772 - 1774 3 27 -106 -6 0.3 1773 - 1775 3 28 -112 -8.5 0.3 1774 - 1776 3 26.5 -117 -6 0.3 1775 - 1777 3 28 -121.5 -7 0.3 1776 - 1778 3 29 -125 -10.5 0.3 1777 - 1779 3 31.5 -134 -11.5 0.3 1778 - 1780 3 33 -137 -9.5 0.3 1779 - 1781 3 34 -148 -9.5 0.3 1780 - 1782 3 36.5 -150.5 -9.5 0.3 1781 - 1783 3 38 -155.5 -12.5 0.3 1782 - 1784 3 38.5 -160 -12.5 0.2 1783 - 1785 3 37.5 -164.5 -8.5 0.2 1784 - 1786 3 35.5 -166 -8.5 0.2 1785 - 1787 3 34.5 -166.5 -7 0.2 1786 - 1788 3 24 -76 -12.5 0.3 1768 - 1789 3 25.5 -78.5 -13.5 0.3 1788 - 1790 3 28 -83.5 -10.5 0.3 1789 - 1791 3 29.5 -88 -10.5 0.3 1790 - 1792 3 30.5 -91 -14.5 0.3 1791 - 1793 3 32.5 -96 -14.5 0.3 1792 - 1794 3 35 -99 -14.5 0.3 1793 - 1795 3 36 -101 -14.5 0.3 1794 - 1796 3 39 -104 -18 0.3 1795 - 1797 3 40.5 -111 -18 0.3 1796 - 1798 3 45.5 -116 -20 0.3 1797 - 1799 3 46.5 -121 -20 0.3 1798 - 1800 3 50.5 -126 -21 0.3 1799 - 1801 3 50.5 -130 -26.5 0.3 1800 - 1802 3 54 -138 -26.5 0.3 1801 - 1803 3 56.5 -143.5 -29.5 0.3 1802 - 1804 3 57.5 -149 -29.5 0.3 1803 - 1805 3 59.5 -154.5 -32.5 0.3 1804 - 1806 3 62.5 -160.5 -32.5 0.3 1805 - 1807 3 62 -166 -34.5 0.3 1806 - 1808 3 64.5 -169 -34.5 0.3 1807 - 1809 3 66 -173 -39 0.3 1808 - 1810 3 66 -176.5 -41 0.3 1809 - 1811 3 67 -179.5 -45.5 0.2 1810 - 1812 3 3 -17 -5 0.3 1694 - 1813 3 6 -21.5 -5 0.3 1812 - 1814 3 9 -24 -5 0.3 1813 - 1815 3 12 -29 -4 0.3 1814 - 1816 3 13 -32.5 -3 0.3 1815 - 1817 3 16 -34.5 -3 0.3 1816 - 1818 3 18.5 -38.5 -3 0.3 1817 - 1819 3 23 -41.5 -3 0.3 1818 - 1820 3 26 -44 -5 0.3 1819 - 1821 3 28.5 -48.5 -5 0.3 1820 - 1822 3 33 -52.5 -5 0.3 1821 - 1823 3 35.5 -53.5 -5 0.3 1822 - 1824 3 35 -57.5 -6 0.3 1823 - 1825 3 35 -64 -6 0.3 1824 - 1826 3 36 -70.5 -8.5 0.3 1825 - 1827 3 34.5 -75.5 -8.5 0.3 1826 - 1828 3 34 -81.5 -5 0.3 1827 - 1829 3 34.5 -90.5 -5 0.3 1828 - 1830 3 33 -95.5 -6 0.3 1829 - 1831 3 35.5 -99 -6 0.3 1830 - 1832 3 34 -101.5 -3 0.3 1831 - 1833 3 34 -105.5 -3 0.3 1832 - 1834 3 36 -110.5 -3 0.3 1833 - 1835 3 37 -114 -1 0.3 1834 - 1836 3 37.5 -121.5 -3 0.3 1835 - 1837 3 38 -127.5 3.5 0.3 1836 - 1838 3 38.5 -134.5 3.5 0.3 1837 - 1839 3 38 -136 2.5 0.3 1838 - 1840 3 41 -138.5 2.5 0.3 1839 - 1841 3 40.5 -141.5 2.5 0.3 1840 - 1842 3 43.5 -148.5 2.5 0.3 1841 - 1843 3 46.5 -155 -4 0.3 1842 - 1844 3 47.5 -158.5 -3 0.2 1843 - 1845 3 50 -164.5 -8.5 0.2 1844 - 1846 3 50 -169.5 -6 0.2 1845 - 1847 3 38 -63.5 -6 0.3 1824 - 1848 3 41.5 -73.5 -6 0.3 1847 - 1849 3 46.5 -83 -6 0.3 1848 - 1850 3 48 -87 -5 0.3 1849 - 1851 3 54 -90.5 -5 0.3 1850 - 1852 3 57.5 -95.5 -5 0.3 1851 - 1853 3 66 -102 -5 0.3 1852 - 1854 3 73 -104.5 -4 0.3 1853 - 1855 3 76.5 -110 -3 0.3 1854 - 1856 3 82 -114.5 -2 0.3 1855 - 1857 3 88.5 -117 -2 0.3 1856 - 1858 3 -3.5 0 16 0.85 1 - 1859 3 -7 -5.5 15 0.85 1858 - 1860 3 -8.5 -10 21.5 0.85 1859 - 1861 3 -12.5 -16 21.5 0.85 1860 - 1862 3 -16.5 -22 18 0.85 1861 - 1863 3 -17 -25 21.5 0.85 1862 - 1864 3 -20 -29.5 22.5 0.85 1863 - 1865 3 -22 -34 28.5 0.65 1864 - 1866 3 -25 -40.5 17 0.4 1865 - 1867 3 -28.5 -42 15 0.4 1866 - 1868 3 -31.5 -46 20.5 0.4 1867 - 1869 3 -33.5 -50 21.5 0.4 1868 - 1870 3 -35.5 -50 21.5 0.4 1869 - 1871 3 -37 -52.5 21.5 0.4 1870 - 1872 3 -40 -55 18 0.4 1871 - 1873 3 -44.5 -56.5 18 0.4 1872 - 1874 3 -47 -65 18 0.4 1873 - 1875 3 -49.5 -70.5 13 0.4 1874 - 1876 3 -50.5 -74 13 0.4 1875 - 1877 3 -51 -75.5 13 0.4 1876 - 1878 3 -53 -78 12 0.4 1877 - 1879 3 -54.5 -82 12 0.4 1878 - 1880 3 -56.5 -86.5 12 0.4 1879 - 1881 3 -59 -91 12 0.4 1880 - 1882 3 -60 -94 12 0.4 1881 - 1883 3 -61.5 -99.5 12 0.4 1882 - 1884 3 -64.5 -101 12 0.4 1883 - 1885 3 -68 -110 11 0.4 1884 - 1886 3 -70.5 -114 11 0.4 1885 - 1887 3 -74 -117.5 11 0.4 1886 - 1888 3 -73.5 -120 12 0.3 1887 - 1889 3 -76 -127.5 12 0.3 1888 - 1890 3 -79.5 -133 12 0.3 1889 - 1891 3 -82 -138.5 13 0.3 1890 - 1892 3 -82.5 -145 12 0.3 1891 - 1893 3 -84.5 -150.5 11 0.3 1892 - 1894 3 -87.5 -154 11 0.3 1893 - 1895 3 -21.5 -42 26.5 0.3 1865 - 1896 3 -22 -47.5 25.5 0.3 1895 - 1897 3 -23.5 -51.5 26.5 0.3 1896 - 1898 3 -25 -56.5 23.5 0.3 1897 - 1899 3 -24.5 -63.5 23.5 0.3 1898 - 1900 3 -25.5 -73 23.5 0.3 1899 - 1901 3 -28.5 -78 22.5 0.3 1900 - 1902 3 -28 -82.5 22.5 0.3 1901 - 1903 3 -30 -89 22.5 0.3 1902 - 1904 3 -31.5 -93 22.5 0.3 1903 - 1905 3 -31.5 -95 22.5 0.3 1904 - 1906 3 -31 -100.5 22.5 0.3 1905 - 1907 3 -32.5 -106 23.5 0.3 1906 - 1908 3 -33.5 -112.5 23.5 0.3 1907 - 1909 3 -35 -116 22.5 0.3 1908 - 1910 3 -36.5 -122.5 22.5 0.3 1909 - 1911 3 -38.5 -125 22.5 0.3 1910 - 1912 3 -37 -128 22.5 0.3 1911 - 1913 3 -38 -132 22.5 0.3 1912 - 1914 3 -39 -137 27.5 0.3 1913 - 1915 3 -40.5 -144.5 26.5 0.3 1914 - 1916 3 -40 -149.5 26.5 0.3 1915 - 1917 3 -41 -153.5 27.5 0.3 1916 - 1918 3 -41 -159.5 27.5 0.3 1917 - 1919 3 -40.5 -164 27.5 0.3 1918 - 1920 3 -40 -168.5 27.5 0.2 1919 - 1921 3 -23.5 -33.5 31 0.45 1864 - 1922 3 -25 -39 32 0.45 1921 - 1923 3 -26 -43 31 0.45 1922 - 1924 3 -25.5 -48 32 0.45 1923 - 1925 3 -27.5 -49 36 0.3 1924 - 1926 3 -29 -52 35 0.3 1925 - 1927 3 -33.5 -55 35 0.3 1926 - 1928 3 -36.5 -57 41.5 0.3 1927 - 1929 3 -38.5 -59.5 41.5 0.3 1928 - 1930 3 -39 -61.5 48 0.3 1929 - 1931 3 -44.5 -64 46.5 0.3 1930 - 1932 3 -47 -69.5 46.5 0.3 1931 - 1933 3 -48.5 -74.5 46.5 0.3 1932 - 1934 3 -48 -79.5 46.5 0.3 1933 - 1935 3 -46.5 -84 46.5 0.3 1934 - 1936 3 -44.5 -89.5 46.5 0.3 1935 - 1937 3 -45.5 -95.5 48 0.3 1936 - 1938 3 -47.5 -101.5 48 0.3 1937 - 1939 3 -48.5 -105 46.5 0.3 1938 - 1940 3 -47 -112.5 54 0.3 1939 - 1941 3 -48.5 -117.5 55 0.3 1940 - 1942 3 -49.5 -126 55 0.3 1941 - 1943 3 -51 -131.5 60.5 0.3 1942 - 1944 3 -53.5 -135 60.5 0.3 1943 - 1945 3 -54.5 -138 60.5 0.3 1944 - 1946 3 -54.5 -146 61.5 0.3 1945 - 1947 3 -58.5 -148.5 61.5 0.3 1946 - 1948 3 -59.5 -152 61.5 0.3 1947 - 1949 3 -60.5 -159.5 60.5 0.3 1948 - 1950 3 -59.5 -166 60.5 0.3 1949 - 1951 3 -61.5 -170.5 61.5 0.3 1950 - 1952 3 -62.5 -171.5 54 0.3 1951 - 1953 3 -63.5 -173.5 52 0.2 1952 - 1954 3 -65.5 -175.5 52 0.2 1953 - 1955 3 -66.5 -179 52 0.2 1954 - 1956 3 -68 -181.5 53 0.2 1955 - 1957 3 -71 -182.5 53 0.2 1956 - 1958 3 -72 -184 52 0.15 1957 - 1959 3 -73 -187.5 51 0.15 1958 - 1960 3 -73 -187.5 50 0.15 1959 - 1961 3 -26.5 -54.5 32 0.3 1924 - 1962 3 -24.5 -59.5 39.5 0.3 1961 - 1963 3 -24.5 -65 40.5 0.3 1962 - 1964 3 -24.5 -72.5 41.5 0.3 1963 - 1965 3 -22 -79 42.5 0.3 1964 - 1966 3 -23.5 -82 44.5 0.3 1965 - 1967 3 -23.5 -89 45.5 0.3 1966 - 1968 3 -23.5 -94.5 45.5 0.3 1967 - 1969 3 -25 -99.5 45.5 0.3 1968 - 1970 3 -26.5 -104.5 46.5 0.3 1969 - 1971 3 -28 -109.5 53 0.3 1970 - 1972 3 -27.5 -114.5 52 0.3 1971 - 1973 3 -27.5 -121 55 0.3 1972 - 1974 3 -26.5 -127 60.5 0.3 1973 - 1975 3 -30 -132.5 61.5 0.3 1974 - 1976 3 -29.5 -137 67 0.3 1975 - 1977 3 -28 -141 66 0.3 1976 - 1978 3 -31.5 -151.5 64.5 0.3 1977 - 1979 3 -31.5 -155 64.5 0.3 1978 - 1980 3 -32.5 -157.5 66 0.3 1979 - 1981 3 -32 -162 63.5 0.2 1980 - 1982 3 -30.5 -165.5 63.5 0.2 1981 - 1983 3 -33.5 -170 63.5 0.2 1982 - 1984 3 -34.5 -174.5 63.5 0.2 1983 - 1985 3 -36.5 -178.5 62.5 0.2 1984 - 1986 3 -35.5 -181.5 62.5 0.2 1985 - 1987 3 -37.5 -184.5 62.5 0.2 1986 - 1988 3 -37 -187.5 62.5 0.2 1987 - 1989 3 -4.5 1 -10.5 0.9 1 - 1990 3 -8.5 -3 -10.5 0.9 1989 - 1991 3 -10.5 -8 -11.5 0.9 1990 - 1992 3 -12.5 -11 -11.5 0.9 1991 - 1993 3 -13 -11 -11.5 0.9 1992 - 1994 3 -9 -16 -3 0.3 1993 - 1995 3 -10.5 -19 -3 0.3 1994 - 1996 3 -9.5 -27.5 -12.5 0.3 1995 - 1997 3 -8.5 -36.5 -14.5 0.3 1996 - 1998 3 -8 -45 -14.5 0.3 1997 - 1999 3 -5 -52.5 -19 0.3 1998 - 2000 3 -4 -59.5 -25 0.3 1999 - 2001 3 -2 -67 -33.5 0.3 2000 - 2002 3 -1 -72.5 -36 0.3 2001 - 2003 3 1 -80 -38 0.3 2002 - 2004 3 1 -85 -47.5 0.3 2003 - 2005 3 3.5 -90.5 -46.5 0.3 2004 - 2006 3 2.5 -94 -46.5 0.3 2005 - 2007 3 5.5 -101 -49.5 0.3 2006 - 2008 3 8 -110 -56 0.3 2007 - 2009 3 9.5 -116 -56 0.3 2008 - 2010 3 12.5 -120 -56 0.3 2009 - 2011 3 13.5 -129.5 -61 0.3 2010 - 2012 3 15 -138.5 -69.5 0.3 2011 - 2013 3 14.5 -142.5 -67.5 0.3 2012 - 2014 3 15 -146.5 -74 0.3 2013 - 2015 3 16 -154 -78 0.3 2014 - 2016 3 16 -155.5 -85.5 0.3 2015 - 2017 3 16.5 -159 -84.5 0.3 2016 - 2018 3 14 -163 -88.5 0.3 2017 - 2019 3 13.5 -167 -91 0.3 2018 - 2020 3 13 -173.5 -94 0.3 2019 - 2021 3 -18.5 -12.5 -11.5 0.55 1993 - 2022 3 -21 -16 -11.5 0.55 2021 - 2023 3 -24 -19 -6 0.55 2022 - 2024 3 -27 -23 -1 0.55 2023 - 2025 3 -29.5 -26.5 1 0.55 2024 - 2026 3 -34.5 -28.5 1 0.4 2025 - 2027 3 -40.5 -32 1 0.4 2026 - 2028 3 -45 -37 1 0.4 2027 - 2029 3 -50 -41 1 0.4 2028 - 2030 3 -55.5 -44.5 1 0.4 2029 - 2031 3 -60 -49 1 0.4 2030 - 2032 3 -65.5 -51 1 0.4 2031 - 2033 3 -69 -53 1 0.4 2032 - 2034 3 -71.5 -57 1 0.4 2033 - 2035 3 -77.5 -59 1 0.4 2034 - 2036 3 -81.5 -64 1 0.4 2035 - 2037 3 -85 -69 1 0.4 2036 - 2038 3 -89.5 -72.5 1 0.4 2037 - 2039 3 -94.5 -76 1 0.4 2038 - 2040 3 -95.5 -79 6.5 0.4 2039 - 2041 3 -99.5 -80.5 6.5 0.4 2040 - 2042 3 -103 -87.5 6.5 0.4 2041 - 2043 3 -108 -91 6.5 0.4 2042 - 2044 3 -115 -95.5 6.5 0.4 2043 - 2045 3 -119.5 -98.5 6.5 0.4 2044 - 2046 3 -123 -97 6.5 0.4 2045 - 2047 3 -125.5 -101 6.5 0.4 2046 - 2048 3 -129.5 -105.5 6.5 0.4 2047 - 2049 3 -132.5 -109.5 6.5 0.4 2048 - 2050 3 -136.5 -109.5 13 0.4 2049 - 2051 3 -140 -110.5 13 0.3 2050 - 2052 3 -142.5 -114 13 0.3 2051 - 2053 3 -146.5 -119 13 0.3 2052 - 2054 3 -149.5 -121 13 0.3 2053 - 2055 3 -154.5 -122 13 0.3 2054 - 2056 3 -15 -15.5 -14.5 0.4 1992 - 2057 3 -18.5 -19 -14.5 0.4 2056 - 2058 3 -22 -25 -13.5 0.4 2057 - 2059 3 -24.5 -30.5 -22 0.4 2058 - 2060 3 -26 -34 -27.5 0.4 2059 - 2061 3 -28.5 -37 -28.5 0.4 2060 - 2062 3 -29.5 -39.5 -28.5 0.4 2061 - 2063 3 -32.5 -45 -30.5 0.4 2062 - 2064 3 -36 -49.5 -31.5 0.4 2063 - 2065 3 -37 -52 -28.5 0.4 2064 - 2066 3 -38 -55.5 -27.5 0.4 2065 - 2067 3 -41.5 -59.5 -39 0.3 2066 - 2068 3 -43.5 -64.5 -38 0.3 2067 - 2069 3 -46.5 -69 -45.5 0.3 2068 - 2070 3 -50.5 -72 -45.5 0.3 2069 - 2071 3 -53 -77 -49.5 0.3 2070 - 2072 3 -54.5 -81 -49.5 0.3 2071 - 2073 3 -57.5 -84.5 -55 0.3 2072 - 2074 3 -59.5 -89 -61 0.3 2073 - 2075 3 -62.5 -94 -61 0.3 2074 - 2076 3 -63.5 -99 -61 0.3 2075 - 2077 3 -67.5 -104.5 -61 0.3 2076 - 2078 3 -69.5 -108.5 -61 0.3 2077 - 2079 3 -71.5 -115 -64.5 0.3 2078 - 2080 3 -71.5 -121 -64.5 0.3 2079 - 2081 3 -73 -125.5 -67.5 0.3 2080 - 2082 3 -77 -130.5 -69.5 0.3 2081 - 2083 3 -78.5 -136 -69.5 0.3 2082 - 2084 3 -82 -141.5 -70.5 0.3 2083 - 2085 3 -85 -146 -75 0.2 2084 - 2086 3 -87.5 -147.5 -73 0.2 2085 - 2087 3 -88.5 -151 -73 0.2 2086 - 2088 3 -91.5 -152 -72 0.2 2087 - 2089 3 -93 -153.5 -79 0.2 2088 - 2090 3 -95 -155.5 -79 0.2 2089 - 2091 3 -98 -156.5 -76 0.15 2090 - 2092 3 -39.5 -59 -22 0.3 2066 - 2093 3 -40.5 -63 -22 0.3 2092 - 2094 3 -43 -66.5 -23 0.3 2093 - 2095 3 -44.5 -72 -22 0.3 2094 - 2096 3 -46.5 -72.5 -22 0.3 2095 - 2097 3 -47.5 -75.5 -21 0.3 2096 - 2098 3 -50.5 -80 -21 0.3 2097 - 2099 3 -55.5 -86 -22 0.3 2098 - 2100 3 -59.5 -93 -22 0.3 2099 - 2101 3 -61 -97.5 -22 0.3 2100 - 2102 3 -65.5 -101 -22 0.3 2101 - 2103 3 -67.5 -106.5 -22 0.3 2102 - 2104 3 -71 -110 -22 0.3 2103 - 2105 3 -76 -113.5 -22 0.3 2104 - 2106 3 -79 -117.5 -17 0.3 2105 - 2107 3 -81.5 -122 -18 0.2 2106 - 2108 3 -83 -127 -17 0.2 2107 - 2109 3 -85.5 -131 -17 0.2 2108 - 2110 3 -86 -133.5 -10.5 0.2 2109 - 2111 3 -88.5 -134 -18 0.2 2110 - 2112 3 -27.5 -42.5 -31.5 0.3 2062 - 2113 3 -25 -48.5 -36 0.3 2112 - 2114 3 -24 -52.5 -36 0.3 2113 - 2115 3 -22 -58 -42 0.3 2114 - 2116 3 -20.5 -61 -44.5 0.3 2115 - 2117 3 -19.5 -66.5 -47.5 0.3 2116 - 2118 3 -20 -72 -50.5 0.3 2117 - 2119 3 -20 -79.5 -50.5 0.3 2118 - 2120 3 -21 -82.5 -56 0.3 2119 - 2121 3 -21 -87 -59 0.3 2120 - 2122 3 -21.5 -95 -57 0.3 2121 - 2123 3 -22.5 -99 -61 0.3 2122 - 2124 3 -22.5 -104 -67.5 0.3 2123 - 2125 3 -23.5 -108 -72 0.3 2124 - 2126 3 -23 -112.5 -76 0.3 2125 - 2127 3 -24.5 -117 -81.5 0.3 2126 - 2128 3 -24 -123.5 -81.5 0.3 2127 - 2129 3 -25.5 -129 -86.5 0.3 2128 - 2130 3 -24.5 -132.5 -91 0.3 2129 - 2131 3 -23 -135 -79 0.3 2130 - 2132 3 -21 -140 -79 0.3 2131 - 2133 3 -5.5 2.5 12 0.55 1 - 2134 3 -8 1.5 13 0.55 2133 - 2135 3 -4 0 13 0.45 2134 - 2136 3 -3.5 -2 19 0.45 2135 - 2137 3 -3 -6 24.5 0.45 2136 - 2138 3 -4.5 -7 31 0.45 2137 - 2139 3 -5.5 -8 34 0.45 2138 - 2140 3 -7.5 -8.5 35 0.45 2139 - 2141 3 -9.5 -8 35 0.45 2140 - 2142 3 -11 -10.5 41.5 0.45 2141 - 2143 3 -14 -13 42.5 0.45 2142 - 2144 3 -16.5 -14 46.5 0.45 2143 - 2145 3 -19 -18.5 49 0.45 2144 - 2146 3 -19 -20.5 48 0.45 2145 - 2147 3 -22 -22.5 51 0.4 2146 - 2148 3 -25 -22 46.5 0.4 2147 - 2149 3 -26 -23.5 51 0.4 2148 - 2150 3 -29 -25.5 51 0.4 2149 - 2151 3 -29.5 -26.5 57.5 0.4 2150 - 2152 3 -30.5 -28 54 0.4 2151 - 2153 3 -31.5 -27 55 0.4 2152 - 2154 3 -32.5 -29 66 0.4 2153 - 2155 3 -33 -30.5 66 0.4 2154 - 2156 3 -38.5 -33 67 0.4 2155 - 2157 3 -36.5 -36.5 72 0.4 2156 - 2158 3 -38 -40.5 74 0.4 2157 - 2159 3 -40.5 -44 77.5 0.4 2158 - 2160 3 -40.5 -47 77.5 0.3 2159 - 2161 3 -43 -50 73 0.3 2160 - 2162 3 -45.5 -52.5 82.5 0.3 2161 - 2163 3 -46.5 -55 88 0.3 2162 - 2164 3 -49 -57.5 91 0.3 2163 - 2165 3 -49 -61.5 93.5 0.3 2164 - 2166 3 -50.5 -64.5 95.5 0.3 2165 - 2167 3 -51.5 -68 95.5 0.3 2166 - 2168 3 -52.5 -72 102 0.3 2167 - 2169 3 -52 -75.5 109 0.3 2168 - 2170 3 -52.5 -78.5 113.5 0.3 2169 - 2171 3 -50.5 -80.5 120 0.3 2170 - 2172 3 -5 5 1 0.45 1 - 2173 3 -8.5 1.5 5.5 0.45 2172 - 2174 3 -12 0 1 0.45 2173 - 2175 3 -15 -3 1 0.45 2174 - 2176 3 -15.5 -6 1 0.45 2175 - 2177 3 -17 -7.5 5.5 0.4 2176 - 2178 3 -19.5 -11 4.5 0.4 2177 - 2179 3 -22.5 -13 5.5 0.4 2178 - 2180 3 -25 -18 5.5 0.4 2179 - 2181 3 -29.5 -21 4.5 0.4 2180 - 2182 3 -33.5 -24 4.5 0.4 2181 - 2183 3 -37.5 -25 7.5 0.4 2182 - 2184 3 -42 -30 6.5 0.4 2183 - 2185 3 -45.5 -36.5 6.5 0.4 2184 - 2186 3 -48 -42 7.5 0.4 2185 - 2187 3 -51 -45 7.5 0.4 2186 - 2188 3 -56.5 -49.5 13 0.4 2187 - 2189 3 -57 -52 13 0.4 2188 - 2190 3 -60 -53 12 0.4 2189 - 2191 3 -63 -55 12 0.4 2190 - 2192 3 -65 -60.5 18 0.4 2191 - 2193 3 -65.5 -62 18 0.4 2192 - 2194 3 -69 -63 18 0.3 2193 - 2195 3 -73 -66 18 0.3 2194 - 2196 3 -73.5 -67.5 18 0.3 2195 - 2197 3 -77 -68 19 0.3 2196 - 2198 3 -78 -72.5 18 0.3 2197 - 2199 3 -82.5 -77 23.5 0.3 2198 - 2200 3 -86.5 -82 26.5 0.3 2199 - 2201 3 -91 -83 30 0.3 2200 - 2202 3 -93 -86 30 0.3 2201 - 2203 3 -97.5 -90 33 0.3 2202 - 2204 3 -99.5 -92 33 0.3 2203 - 2205 3 -102.5 -95.5 35 0.3 2204 - 2206 3 -104 -100.5 38.5 0.3 2205 - 2207 3 -106.5 -102 38.5 0.3 2206 - 2208 3 -111 -104.5 38.5 0.3 2207 - 2209 3 -113 -107 44.5 0.3 2208 - 2210 3 -116 -109.5 43.5 0.3 2209 - 2211 3 -118 -113.5 43.5 0.3 2210 - 2212 3 -121.5 -116.5 43.5 0.3 2211 - 2213 3 -123.5 -117.5 43.5 0.3 2212 - 2214 3 -126.5 -119 43.5 0.3 2213 - 2215 3 -127 -122.5 44.5 0.3 2214 - 2216 3 -129.5 -126 44.5 0.3 2215 - 2217 3 -132 -129 48 0.3 2216 - 2218 3 -134 -130.5 48 0.3 2217 - 2219 3 -136.5 -133 48 0.3 2218 - 2220 3 -138 -134.5 48 0.3 2219 - 2221 3 -141 -136 48 0.3 2220 - 2222 3 -143.5 -136.5 48 0.3 2221 - 2223 3 -145.5 -136 51 0.3 2222 - 2224 3 -148 -136.5 50 0.3 2223 - 2225 3 -150.5 -136.5 50 0.3 2224 - 2226 3 -67.5 -66 18 0.3 2193 - 2227 3 -68.5 -70.5 18 0.3 2226 - 2228 3 -69.5 -72 18 0.3 2227 - 2229 3 -70.5 -75 17 0.3 2228 - 2230 3 -71.5 -80 18 0.3 2229 - 2231 3 -73.5 -85 18 0.3 2230 - 2232 3 -75.5 -88.5 18 0.3 2231 - 2233 3 -77 -93.5 18 0.3 2232 - 2234 3 -75 -96 18 0.3 2233 - 2235 3 -76.5 -101 27.5 0.3 2234 - 2236 3 -76.5 -106.5 28.5 0.3 2235 - 2237 3 -78.5 -112 27.5 0.3 2236 - 2238 3 -79.5 -118 30 0.3 2237 - 2239 3 -80.5 -120 30 0.3 2238 - 2240 3 -80.5 -122 30 0.3 2239 - 2241 3 -84 -128 28.5 0.3 2240 - 2242 3 -83 -132.5 33 0.3 2241 - 2243 3 -84 -137 33 0.3 2242 - 2244 3 -86 -136 36 0.3 2243 - 2245 3 -85.5 -139.5 37 0.2 2244 - 2246 3 -87.5 -139.5 37 0.2 2245 diff --git a/examples/snippets/bidirectionalPlasticity.py b/examples/snippets/bidirectionalPlasticity.py deleted file mode 100644 index 11d6b5e..0000000 --- a/examples/snippets/bidirectionalPlasticity.py +++ /dev/null @@ -1,66 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import moose -import os -import sys -import pylab - -def dumpPlots(): - fname = 'bidirectionalPlasticity.plot' - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/model/graphs/conc#/#,/model/moregraphs/conc#/#' ): - moose.element( x[0] ).xplot( fname, x[0].name ) - -def displayPlots(): - clock = moose.Clock( '/clock' ) # look up global clock - totR = moose.element( '/model/graphs/conc1/tot_PSD_R.Co' ) - PP1 = moose.element( '/model/moregraphs/conc4/PP1_dash_active.Co' ) - Ca = moose.element( '/model/graphs/conc1/Ca.Co' ) - pylab.plot( pylab.linspace( 0, clock.currentTime, len( totR.vector )), totR.vector, label='membrane Receptor' ) - pylab.plot( pylab.linspace( 0, clock.currentTime, len( PP1.vector ) ), PP1.vector, label='active PP1' ) - pylab.plot( pylab.linspace( 0, clock.currentTime, len( Ca.vector ) ), Ca.vector, label='Ca' ) - pylab.legend() - pylab.show() - -def main(): - """ - This is a toy model of synaptic bidirectional plasticity. The model has - a small a bistable chemical switch, and a small set of reactions that - decode calcium input. One can turn the switch on with short high - calcium pulses (over 2 uM for about 10 sec). One can turn it back off - again using a long, lower calcium pulse (0.2 uM, 2000 sec). - """ - method = 'old_gssa' # This is the Gillespie Stoichastic Systems Algorithm - if ( len( sys.argv ) >= 2 ): - method = sys.argv[1] - if ( method == "gsl" ): - method = "old_gsl" - if ( method == "gssa" ): - method = "old_gssa" - # Load in the model and set up to use the specified method - modelId = moose.loadModel( './stargazin_synapse.g', 'model', method ) - moose.start( 1000.0 ) # Run the model for 1000 seconds. - Ca = moose.element( '/model/kinetics/BULK/Ca' ) - Ca.concInit = 2.0e-3 # Calcium stimulus for turnon - moose.start( 20.0 ) # Run the model for 100 seconds. - Ca.concInit = 0.08e-3 # Calcium back to baseline - moose.start( 1000.0 ) # Let system settle for 1000 sec - Ca.concInit = 0.2e-3 # Calcium turnoff stimulus - moose.start( 2000.0 ) # Run the model for 1000 seconds for turnoff - Ca.concInit = 0.08e-3 # Calcium back to baseline - moose.start( 2000.0 ) # Let system settle for 2000 sec - - displayPlots() - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/branching.p b/examples/snippets/branching.p deleted file mode 100644 index fc2d2c1..0000000 --- a/examples/snippets/branching.p +++ /dev/null @@ -1,34 +0,0 @@ -// genesis -// Artificial binary branching neuron geometry, 4 levels of branch. -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -soma none 0 15 0 15 - -dend1 soma 0 20 0 4 - -dend11 dend1 -10 10 0 3 -dend12 dend1 10 10 0 3 - -dend111 dend11 -10 0 0 2.12 -dend112 dend11 0 10 0 2.12 -dend121 dend12 0 10 0 2.12 -dend122 dend12 10 0 0 2.12 - -dend1111 dend111 -5 -5 0 1.5 -dend1112 dend111 -5 5 0 1.5 -dend1121 dend112 -5 5 0 1.5 -dend1122 dend112 5 5 0 1.5 -dend1211 dend121 -5 5 0 1.5 -dend1212 dend121 5 5 0 1.5 -dend1221 dend122 5 5 0 1.5 -dend1222 dend122 5 -5 0 1.5 diff --git a/examples/snippets/changeFuncExpression.py b/examples/snippets/changeFuncExpression.py deleted file mode 100644 index 13e9b6c..0000000 --- a/examples/snippets/changeFuncExpression.py +++ /dev/null @@ -1,130 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example illustrates how to set up a kinetic solver and kinetic model -# using the scripting interface. Normally this would be done using the -# Shell::doLoadModel command, and normally would be coordinated by the -# SimManager as the base of the entire model. -# This example creates a bistable model having two enzymes and a reaction. -# One of the enzymes is autocatalytic. -# The model is set up to run using Exponential Euler integration. - -import math -import pylab -import numpy -import moose - -useY = False - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-15 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - # a <----> b - # b + 10c ---func---> d - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - d = moose.BufPool( '/model/compartment/d' ) - reac = moose.Reac( '/model/compartment/reac' ) - func = moose.Function( '/model/compartment/d/func' ) - func.numVars = 2 - #func.x.num = 2 - - # connect them up for reactions - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - if useY: - moose.connect( func, 'requestOut', b, 'getN' ) - moose.connect( func, 'requestOut', c, 'getN' ) - else: - moose.connect( b, 'nOut', func.x[0], 'input' ) - moose.connect( c, 'nOut', func.x[1], 'input' ) - - moose.connect( func, 'valueOut', d, 'setN' ) - if useY: - func.expr = "y0 + 10*y1" - else: - func.expr = "x0 + 10*x1" - - # connect them up to the compartment for volumes - #for x in ( a, b, c, cplx1, cplx2 ): - # moose.connect( x, 'mesh', mesh, 'mesh' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 0.5 - c.concInit = 0.1 - reac.Kf = 0.001 - reac.Kb = 0.01 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - outputC = moose.Table2 ( '/model/graphs/concC' ) - outputD = moose.Table2 ( '/model/graphs/concD' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - moose.connect( outputC, 'requestOut', c, 'getConc' ); - moose.connect( outputD, 'requestOut', d, 'getConc' ); - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def main(): - makeModel() - ''' - ''' - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = moose.element( '/model/compartment' ) - stoich.ksolve = ksolve - stoich.path = "/model/compartment/##" - #solver.method = "rk5" - #mesh = moose.element( "/model/compartment/mesh" ) - #moose.connect( mesh, "remesh", solver, "remesh" ) - ''' - moose.setClock( 5, 1.0 ) # clock for the solver - moose.useClock( 5, '/model/compartment/ksolve', 'process' ) - ''' - - moose.reinit() - moose.start( 100.0 ) # Run the model for 100 seconds. - func = moose.element( '/model/compartment/d/func' ) - if useY: - func.expr = "-y0 + 10*y1" - else: - func.expr = "-x0 + 10*x1" - moose.start( 100.0 ) # Run the model for 100 seconds. - #moose.showfields( '/model/compartment/d' ) - #moose.showfields( '/model/compartment/d/func' ) - print func.x.value - print moose.element( '/model/compartment/b' ).n - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/chemDoseResponse.py b/examples/snippets/chemDoseResponse.py deleted file mode 100644 index c3b7737..0000000 --- a/examples/snippets/chemDoseResponse.py +++ /dev/null @@ -1,186 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import math -import pylab -import numpy -import moose - -def main(): - """ - This example builds a dose-response of a bistable model of a chemical - system. It uses the kinetic solver *Ksolve* and the steady-state finder - *SteadyState*. - The model is set up within the script. - - The basic approach is to increment the control variable, **a** in this - case, while monitoring **b**. - The algorithm marches through a series of values of the buffered pool - **a** and measures resultant values of pool **b**. At each cycle - the algorithm calls the steady-state finder. Since **a** is incremented - only a small amount on each step, each new steady state is - (usually) quite close to the previous one. The exception is when there - is a state transition. - - Here we plot three dose-response curves to illustrate the bistable - nature of the system. - - On the upward going curve in blue, **a** starts low. Here, - **b** follows the low arm of the curve - and then jumps up to the high value at roughly *log( [a] ) = -0.55*. - - On the downward going curve in green, **b** follows the high arm - of the curve forming a nice hysteretic loop. - Eventually **b** has to fall to the low state at about - *log( [a] ) = -0.83* - - Through nasty concentration manipulations, we find the third arm - of the curve, which tracks the unstable fixed point. This is in red. - We find this arm by - setting an initial point close to the unstable fixed point, which - the steady-state finder duly locates. We then follow a dose-response - curve as with the other arms of the curve. - - Note that the steady-state solver doesn't always succeed in finding a - good solution, despite moving only in small steps. Nevertheless the - resultant curves are smooth because it gives up pretty close to the - correct value, simply because the successive points are close together. - Overall, the system is pretty robust despite the core root-finder - computations in GSL being temperamental. - - In doing a production dose-response series - you may wish to sample concentration space logarithmically rather than - linearly. - """ - compartment = makeModel() - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.path = "/model/compartment/##" - state = moose.SteadyState( '/model/compartment/state' ) - - moose.reinit() - state.stoich = stoich - state.convergenceCriterion = 1e-6 - moose.seed( 111 ) # Used when generating the samples in state space - - b = moose.element( '/model/compartment/b' ) - a = moose.element( '/model/compartment/a' ) - c = moose.element( '/model/compartment/c' ) - a.concInit = 0.1 - deltaA = 0.002 - num = 150 - avec = [] - bvec = [] - moose.reinit() - - # Now go up. - for i in range( 0, num ): - moose.start( 1.0 ) # Run the model for 1 seconds. - state.settle() # This function finds the steady states. - avec.append( a.conc ) - bvec.append( b.conc ) - a.concInit += deltaA - #print i, a.conc, b.conc - pylab.plot( numpy.log10( avec ), numpy.log10( bvec ), label='b vs a up' ) - # Now go down. - avec = [] - bvec = [] - for i in range( 0, num ): - moose.start( 1.0 ) # Run the model for 1 seconds. - state.settle() # This function finds the steady states. - avec.append( a.conc ) - bvec.append( b.conc ) - a.concInit -= deltaA - #print i, a.conc, b.conc - - - pylab.plot( numpy.log10( avec ), numpy.log10( bvec ), label='b vs a down' ) - # Now aim for the middle. We do this by judiciously choosing a - # start point that should be closer to the unstable fixed point. - avec = [] - bvec = [] - a.concInit = 0.28 - b.conc = 0.15 - for i in range( 0, 65 ): - moose.start( 1.0 ) # Run the model for 1 seconds. - state.settle() # This function finds the steady states. - avec.append( a.conc ) - bvec.append( b.conc ) - a.concInit -= deltaA - #print i, a.conc, b.conc - pylab.plot( numpy.log10( avec ), numpy.log10( bvec ), label='b vs a mid' ) - - pylab.ylim( [-1.7, 1.2] ) - pylab.legend() - pylab.show() - - quit() - -def makeModel(): - """ This function creates a bistable reaction system using explicit - MOOSE calls rather than load from a file. - The reaction is:: - - a ---b---> 2b # b catalyzes a to form more of b. - 2b ---c---> a # c catalyzes b to form a. - a <======> 2b # a interconverts to b. - - """ - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-15 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.BufPool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - enz1 = moose.Enz( '/model/compartment/b/enz1' ) - enz2 = moose.Enz( '/model/compartment/c/enz2' ) - cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) - cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) - reac = moose.Reac( '/model/compartment/reac' ) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) # Note 2 molecules of b. - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'sub', b, 'reac' ) # Note 2 molecules of b. - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) # Note 2 order in b. - - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - - return compartment - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/compartment_net.py b/examples/snippets/compartment_net.py deleted file mode 100644 index 8d66b30..0000000 --- a/examples/snippets/compartment_net.py +++ /dev/null @@ -1,174 +0,0 @@ -# compartment_net.py --- -# -# Filename: compartment_net.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sat Aug 11 14:30:21 2012 (+0530) -# Version: -# Last-Updated: Sun Aug 12 15:45:38 2012 (+0530) -# By: subha -# Update #: 521 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# A demo to create a network of single compartmental neurons connected -# via alpha synapses. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""This script demonstrates the use of SynChan class to create a -network of single-compartment neurons connected by synapse.""" -import sys -sys.path.append('../../python') -import os -from pylab import * -import numpy as np -import matplotlib.pyplot as plt - -import moose -from ionchannel import create_1comp_neuron - -def create_population(container, size): - """Create a population of `size` single compartmental neurons with Na+ - and K+ channels. Also create SpikeGen objects and SynChan objects - connected to these which can act as plug points for setting up - synapses later. - - This uses ..ref::`ionchannel.create_1comp_neuron`. - - """ - path = container.path - print path, size, type(path) - comps = create_1comp_neuron('{}/neuron'.format(path), number=size) - synpath = path+'/synchan' - print synpath, size, type(size) - synchan = moose.vec(synpath, n=size, dtype='SynChan') - synchan.Gbar = 1e-8 - synchan.tau1 = 2e-3 - synchan.tau2 = 2e-3 - m = moose.connect(comps, 'channel', synchan, 'channel', 'OneToOne') - synhandler = moose.vec('{}/synhandler'.format(path), n=size, - dtype='SimpleSynHandler') - moose.connect(synhandler, 'activationOut', synchan, 'activation', 'OneToOne') - spikegen = moose.vec('{}/spikegen'.format(path), n=size, dtype='SpikeGen') - spikegen.threshold = 0.0 - m = moose.connect(comps, 'VmOut', spikegen, 'Vm', 'OneToOne') - return {'compartment': comps, 'spikegen': spikegen, 'synchan': - synchan, 'synhandler': synhandler} - -def make_synapses(spikegen, synhandler, connprob=1.0, delay=5e-3): - """Create synapses from spikegen array to synchan array. - - Parameters - ---------- - spikegen : vec of SpikGen elements - Spike generators from neurons. - - synhandler : vec of SynHandler elements - Handles presynaptic spike event inputs to synchans. - - connprob: float in range (0, 1] - connection probability between any two neurons - - delay: float - mean delay of synaptic transmission. Individual delays are - normally distributed with sd=0.1*mean. - """ - for sh in synhandler: - scount = len(spikegen) - sh.synapse.num = scount - sh.synapse.vec.delay = 5e-3 - for ii, syn in enumerate(sh.synapse): - msg = moose.connect(spikegen[ii], 'spikeOut', syn, 'addSpike') - print 'Connected', spikegen[ii].path, 'to', syn.path, 'on', sh.path - -def create_network(size=2): - """Create a network containing two neuronal populations, pop_A and - pop_B and connect them up""" - net = moose.Neutral('network') - pop_a = create_population(moose.Neutral('/network/pop_A'), size) - print pop_a - pop_b = create_population(moose.Neutral('/network/pop_B'), size) - make_synapses(pop_a['spikegen'], pop_b['synhandler']) - pulse = moose.PulseGen('pulse') - pulse.level[0] = 1e-9 - pulse.delay[0] = 0.02 # disable the pulsegen - pulse.width[0] = 40e-3 - pulse.delay[1] = 1e9 - data = moose.Neutral('/data') - vm_a = moose.Table('/data/Vm_A', n=size) - moose.connect(pulse, 'output', pop_a['compartment'], 'injectMsg', 'OneToAll') - moose.connect(vm_a, 'requestOut', pop_a['compartment'], 'getVm', 'OneToOne') - vm_b = moose.Table('/data/Vm_B', size) - moose.connect(vm_b, 'requestOut', pop_b['compartment'], 'getVm', 'OneToOne') - gksyn_b = moose.Table('/data/Gk_syn_b', n=size) - moose.connect(gksyn_b, 'requestOut', pop_b['synchan'], 'getGk', 'OneToOne') - pulsetable = moose.Table('/data/pulse') - pulsetable.connect('requestOut', pulse, 'getOutputValue') - return {'A': pop_a, - 'B': pop_b, - 'Vm_A': vm_a, - 'Vm_B': vm_b, - 'Gsyn_B': gksyn_b - } - -if __name__ == '__main__': - simtime = 0.1 - simdt = 0.25e-5 - plotdt = 0.25e-3 - netinfo = create_network(size=2) - vm_a = netinfo['Vm_A'] - vm_b = netinfo['Vm_B'] - gksyn_b = netinfo['Gsyn_B'] - for ii in range(10): - moose.setClock(ii, simdt) - moose.setClock(18, plotdt) - moose.reinit() - moose.start(simtime) - plt.subplot(221) - for oid in vm_a.vec: - print oid, oid.vector.shape - plt.plot(oid.vector, label=oid.path) - plt.legend() - plt.subplot(223) - for oid in vm_b.vec: - plt.plot(oid.vector, label=oid.path) - plt.legend() - plt.subplot(224) - for oid in gksyn_b.vec: - plt.plot(oid.vector, label=oid.path) - plt.legend() - plt.show() - - -# -# compartment_net.py ends here diff --git a/examples/snippets/compartment_net_no_array.py b/examples/snippets/compartment_net_no_array.py deleted file mode 100644 index a67f271..0000000 --- a/examples/snippets/compartment_net_no_array.py +++ /dev/null @@ -1,408 +0,0 @@ -# compartment_net_no_array.py --- -# -# Filename: compartment_net_no_array.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sat Aug 11 14:30:21 2012 (+0530) -# Version: -# Last-Updated: Tue May 7 18:26:26 2013 (+0530) -# By: subha -# Update #: 974 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# A demo to create a network of single compartmental neurons connected -# via alpha synapses. This is same as compartment_net.py except that -# we avoid ematrix and use single melements. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import numpy as np -import matplotlib.pyplot as plt - -import moose -from moose import utils - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -40e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 30000 - -soma_dia = 30e-6 - -def create_na_chan(path): - na = moose.HHChannel('%s/na' % (path)) - na.Xpower = 3 - xGate = moose.HHGate(na.path + '/gateX') - xGate.setupAlpha(Na_m_params + - [VDIVS, VMIN, VMAX]) - na.Ypower = 1 - yGate = moose.HHGate(na.path + '/gateY') - yGate.setupAlpha(Na_h_params + - [VDIVS, VMIN, VMAX]) - na.Ek = 115e-3 + EREST_ACT - return na - -def create_k_chan(path): - k = moose.HHChannel('%s/k' % (path)) - k.Xpower = 4.0 - xGate = moose.HHGate(k.path + '/gateX') - xGate.setupAlpha(K_n_params + - [VDIVS, VMIN, VMAX]) - k.Ek = -12e-3 + EREST_ACT - return k - -def create_compartment(path): - comp = moose.Compartment(path) - comp.diameter = soma_dia - comp.Em = EREST_ACT + 10.613e-3 - comp.initVm = EREST_ACT - sarea = np.pi * soma_dia * soma_dia - comp.Rm = 1/(0.3e-3 * 1e4 * sarea) - comp.Cm = 1e-6 * 1e4 * sarea - if moose.exists('/library/na'): - nachan = moose.element(moose.copy('/library/na', comp, 'na')) - else: - nachan = create_na_chan(comp.path) - nachan.Gbar = 120e-3 * sarea * 1e4 - moose.showfield(nachan) - moose.connect(nachan, 'channel', comp, 'channel') - if moose.exists('/library/k'): - kchan = moose.element(moose.copy('/library/k', comp, 'k')) - else: - kchan = create_k_chan(comp.path) - kchan.Gbar = 36e-3 * sarea * 1e4 - moose.connect(kchan, 'channel', comp, 'channel') - synchan = moose.SynChan(comp.path + '/synchan') - synchan.Gbar = 1e-8 - synchan.tau1 = 2e-3 - synchan.tau2 = 2e-3 - synchan.Ek = 0.0 - m = moose.connect(comp, 'channel', synchan, 'channel') - spikegen = moose.SpikeGen(comp.path + '/spikegen') - spikegen.threshold = 0.0 - m = moose.connect(comp, 'VmOut', spikegen, 'Vm') - return comp - -def test_compartment(): - n = moose.Neutral('/model') - lib = moose.Neutral('/library') - create_na_chan(lib.path) - create_k_chan(lib.path) - comp = create_compartment('/model/soma') - pg = moose.PulseGen('/model/pulse') - pg.firstDelay = 50e-3 - pg.firstWidth = 40e-3 - pg.firstLevel = 1e-9 - moose.connect(pg, 'output', comp, 'injectMsg') - d = moose.Neutral('/data') - vm = moose.Table('/data/Vm') - moose.connect(vm, 'requestOut', comp, 'getVm') - gK = moose.Table('/data/gK') - moose.connect(gK, 'requestOut', moose.element('%s/k' % (comp.path)), 'getGk') - gNa = moose.Table('/data/gNa') - moose.connect(gNa, 'requestOut', moose.element('%s/na' % (comp.path)), 'getGk') - # utils.resetSim(['/model', '/data'], 1e-6, 1e-4, simmethod='ee') - assign_clocks(['/model'], 1e-6, 1e-4) - simtime = 100e-3 - moose.start(simtime) - t = np.linspace(0, simtime, len(vm.vector)) - plt.subplot(221) - plt.title('Vm') - plt.plot(t, vm.vector) - plt.subplot(222) - plt.title('Conductance') - plt.plot(t, gK.vector, label='GK') - plt.plot(t, gNa.vector, label='GNa') - plt.legend() - plt.subplot(223) - ma = moose.element('%s/na/gateX' % (comp.path)).tableA - mb = moose.element('%s/na/gateX' % (comp.path)).tableB - ha = moose.element('%s/na/gateY' % (comp.path)).tableA - hb = moose.element('%s/na/gateY' % (comp.path)).tableB - na = moose.element('%s/k/gateX' % (comp.path)).tableA - nb = moose.element('%s/k/gateX' % (comp.path)).tableB - plt.plot(1/mb, label='tau_m') - plt.plot(1/hb, label='tau_h') - plt.plot(1/nb, label='tau_n') - plt.legend() - plt.subplot(224) - plt.plot(ma/mb, label='m_inf') - plt.plot(ha/hb, label='h_inf') - plt.plot(na/nb, label='n_inf') - plt.legend() - plt.show() - plt.close() - -def create_population(container, size): - """Create a population of `size` single compartmental neurons with - Na and K channels. Also create SpikeGen objects and SynChan - objects connected to these which can act as plug points for - setting up synapses later.""" - path = container.path - # Contrast this with - # comps = moose.vec(path+'/soma', size, 'Compartment') - comps = [create_compartment(path+'/soma_%d' % (ii)) for ii in range(size)] - spikegens = [] - synchans = [] - Em = EREST_ACT + 10.613e-3 - initVm_array = [EREST_ACT] * size - Em_array = [Em] * size - # initVm_array = np.random.normal(EREST_ACT, np.abs(EREST_ACT) * 0.1, size) - # Em_array = np.random.normal(Em, np.abs(Em) * 0.1, size) - for comp, initVm, Em in zip(comps, initVm_array, Em_array): - comp.Em = Em - comp.initVm = initVm - synchan = moose.element(comp.path + '/synchan') - synchans.append(synchan) - spikegen = moose.element(comp.path + '/spikegen') - spikegens.append(spikegen) - - return {'compartment': comps, - 'spikegen': spikegens, - 'synchan': synchans} - -def make_synapses(spikegen, synchan, delay=5e-3): - """Create synapses from spikegens to synchans in a manner similar to - OneToAll connection. - - spikegen: list of spikegen objects - these are sources of synaptic - event messages. - - synchan: list of synchan objects - these are the targets of the - synaptic event messages. - - delay: mean delay of synaptic transmission. Individual delays are - normally distributed with sd=0.1*mean. - - """ - scount = len(spikegen) - for ii, sid in enumerate(synchan): - s = moose.SynChan(sid) - sh = moose.SimpleSynHandler( sid.path + "/synh" ) - moose.connect( sh, "activationOut", s, "activation" ) - sh.synapse.num = scount - delay_list = np.random.normal(delay, delay*0.1, scount) - # print delay_list - for jj in range(scount): - sh.synapse[jj].delay = delay_list[jj] - # Connect all spikegens to this synchan except that from - # same compartment - we assume if parents are same the two belong to the same compartment - if s.parent.path != spikegen[jj].parent.path: - m = moose.connect(spikegen[jj], 'spikeOut', moose.element(sh.path + '/synapse'), 'addSpike') - -def two_populations(size=2): - """An example with two population connected via synapses.""" - net = moose.Neutral('network2') - pop_a = create_population(moose.Neutral('/network2/pop_A'), size) - pop_b = create_population(moose.Neutral('/network2/pop_B'), size) - make_synapses(pop_a['spikegen'], pop_b['synchan']) - make_synapses(pop_b['spikegen'], pop_a['synchan']) - pulse = moose.PulseGen('/network2/net2_pulse') - pulse.firstLevel = 1e-9 - pulse.firstDelay = 0.05 # disable the pulsegen - pulse.firstWidth = 0.02 - moose.connect(pulse, 'output', pop_a['compartment'][0], 'injectMsg') - data = moose.Neutral('/data') - vm_a = [moose.Table('/data/net2_Vm_A_%d' % (ii)) for ii in range(size)] - for tab, comp in zip(vm_a, pop_a['compartment']): - moose.connect(tab, 'requestOut', comp, 'getVm') - vm_b = [moose.Table('/data/net2_Vm_B_%d' % (ii)) for ii in range(size)] - for tab, comp in zip(vm_b, pop_b['compartment']): - moose.connect(tab, 'requestOut', comp, 'getVm') - gksyn_a = [moose.Table('/data/net2_Gk_syn_a_%d' % (ii)) for ii in range(size)] - for tab, synchan in zip(gksyn_a, pop_a['synchan']): - moose.connect(tab, 'requestOut', synchan, 'getGk') - gksyn_b = [moose.Table('/data/net2_Gk_syn_b_%d' % (ii)) for ii in range(size)] - for tab, synchan in zip(gksyn_b, pop_b['synchan']): - moose.connect(tab, 'requestOut', synchan, 'getGk') - pulsetable = moose.Table('/data/net2_pulse') - pulsetable.connect('requestOut', pulse, 'getOutputValue') - return {'vm_a': vm_a, - 'vm_b': vm_b, - 'gksyn_a': gksyn_a, - 'gksyn_b': gksyn_b, - 'pulse': pulsetable,} - -def single_population(size=2): - """Example of a single population where each cell is connected to - every other cell. - - Creates a network of single compartmental cells under /network1 and a pulse generaor - - """ - net = moose.Neutral('network1') - pop = create_population(moose.Neutral('/network1'), size) - make_synapses(pop['spikegen'], pop['synchan']) - pulse = moose.PulseGen('/network1/net1_pulse') - pulse.firstLevel = 1e-9 - pulse.firstDelay = 0.05 - pulse.firstWidth = 0.02 - moose.connect(pulse, 'output', pop['compartment'][0], 'injectMsg') - data = moose.Neutral('/data') - vm = [moose.Table('/data/net1_Vm_%d' % (ii)) for ii in range(size)] - for tab, comp in zip(vm, pop['compartment']): - moose.connect(tab, 'requestOut', comp, 'getVm') - gksyn = [moose.Table('/data/net1_Gk_syn_%d' % (ii)) for ii in range(size)] - for tab, synchan in zip(gksyn, pop['synchan']): - moose.connect(tab, 'requestOut', synchan, 'getGk') - pulsetable = moose.Table('/data/net1_pulse') - pulsetable.connect('requestOut', pulse, 'getOutputValue') - return {'vm': vm, - 'gksyn': gksyn, - 'pulse': pulsetable,} - -inited = False -def assign_clocks(model_container_list, simdt, plotdt): - """Assign clocks to elements under the listed paths. - - This should be called only after all model components have been - created. Anything created after this will not be scheduled. - - """ - global inited - # `inited` is for avoiding double scheduling of the same object - if not inited: - print 'SimDt=%g, PlotDt=%g' % (simdt, plotdt) - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.setClock(3, simdt) - moose.setClock(4, plotdt) - for path in model_container_list: - print 'Scheduling elements under:', path - moose.useClock(0, '%s/##[TYPE=Compartment]' % (path), 'init') - moose.useClock(1, '%s/##[TYPE=Compartment]' % (path), 'process') - moose.useClock(2, '%s/##[TYPE=SynChan],%s/##[TYPE=HHChannel]' % (path, path), 'process') - moose.useClock(3, '%s/##[TYPE=SpikeGen],%s/##[TYPE=PulseGen]' % (path, path), 'process') - moose.useClock(4, '/data/##[TYPE=Table]', 'process') - inited = True - moose.reinit() - -if __name__ == '__main__': - # test_compartment() # this calls assign_clocks - after which nothing else will be scheduled. - simtime = 0.1 - simdt = 0.25e-5 - plotdt = 0.25e-3 - size = 2 - data1 = single_population(size=size) - data2 = two_populations(size=size) - assign_clocks(['/network1', '/network2'], simdt, plotdt) - # assign_clocks(['/network1'], simdt, plotdt) - moose.start(simtime) - plt.figure(1) - plt.suptitle('Single population') - plt.subplot(211) - for vm in data1['vm']: - t = np.linspace(0, simtime, len(vm.vector)) - plt.plot(t, vm.vector, label=vm.path) - plt.plot(np.linspace(0, simtime, len(data1['pulse'].vector)), data1['pulse'].vector * 1e6, label='Inject(uA)') - plt.legend() - plt.subplot(212) - for gk in data1['gksyn']: - t = np.linspace(0, simtime, len(gk.vector)) - plt.plot(t, gk.vector, label=gk.path) - plt.legend() - plt.figure(2) - plt.suptitle('Two populations') - plt.subplot(221) - for vm in data2['vm_a']: - t = np.linspace(0, simtime, len(vm.vector)) - plt.plot(t, vm.vector, label=vm.path) - plt.plot(np.linspace(0, simtime, len(data2['pulse'].vector)), data2['pulse'].vector*1e6, label='Inject(uA)') - plt.legend() - plt.subplot(223) - for vm in data2['vm_b']: - t = np.linspace(0, simtime, len(vm.vector)) - plt.plot(t, vm.vector, label=vm.path) - plt.legend() - plt.subplot(222) - for gk in data2['gksyn_a']: - t = np.linspace(0, simtime, len(gk.vector)) - plt.plot(t, gk.vector, label=gk.path) - plt.legend() - plt.subplot(224) - for gk in data2['gksyn_b']: - t = np.linspace(0, simtime, len(gk.vector)) - plt.plot(t, gk.vector, label=gk.path) - plt.legend() - plt.show() - - -# -# compartment_net_no_array.py ends here diff --git a/examples/snippets/compartmental_neuron.py b/examples/snippets/compartmental_neuron.py deleted file mode 100644 index 86ba70f..0000000 --- a/examples/snippets/compartmental_neuron.py +++ /dev/null @@ -1,128 +0,0 @@ -# compartmental_neuron.py --- -# -# Filename: compartmental_neuron.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Tue Aug 7 10:27:26 2012 (+0530) -# Version: -# Last-Updated: Tue Dec 29 12:40:48 2015 (-0500) -# By: Subhasis Ray -# Update #: 86 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Demostrates how to connect two compartments to form a simple neuron. -# All units are in SI -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Setting up a compartmental neuron from scratch using MOOSE classes. - -A simple electrophysiological simulation of a neuron composed of two -passive compartments. A current pulse is injected into the `soma` -compartment and the membrane voltage in both compartments are recorded -and saved into a csv file. - -""" -from __future__ import print_function -import sys -import numpy as np -import moose -# Create the somatic compartment -model = moose.Neutral('/model') # This is a container for the model -soma = moose.Compartment('/model/soma') -soma.Em = -65e-3 # Leak potential -soma.initVm = -65e-3 # Initial membrane potential -soma.Rm = 5e9 # Total membrane resistance of the compartment -soma.Cm = 1e-12 # Total membrane capacitance of the compartment -soma.Ra = 1e6 # Total axial resistance of the compartment -# Create the axon -axon = moose.Compartment('/model/axon') -axon.Em = -65e-3 -axon.initVm = -65e-3 -axon.Rm = 2.5e9 -axon.Cm = 2e-12 -axon.Ra = 2e5 -# Connect the soma to the axon. Note the order of raxial-axial -# connection decides which Ra is going to be used in the computation. -# `raxial` message sends the Ra and Vm of the source to destionation, -# `axial` gets back the Vm of the destination. Try: -# moose.doc('Compartment.axial') in python interpreter for details. -moose.connect(soma, 'raxial', axon, 'axial') - -# Setup data recording -data = moose.Neutral('/data') -axon_Vm = moose.Table('/data/axon_Vm') -axon_Vm2 = moose.Table('/data/axon_Vm2') -moose.connect(axon_Vm, 'requestOut', axon, 'getVm') -moose.connect(axon_Vm2, 'requestOut', axon, 'getVm') - -# Now schedule the sequence of operations and time resolutions -moose.setClock(0, 0.025e-3) -moose.setClock(1, 0.025e-3) -moose.setClock(2, 0.25e-3) -# useClock: First argument is clock no. -# Second argument is a wildcard path matching all elements of type Compartment -# Last argument is the processing function to be executed at each tick of clock 0 -moose.useClock(0, '/model/#[TYPE=Compartment]', 'init') -moose.useClock(1, '/model/#[TYPE=Compartment]', 'process') -moose.useClock(2, axon_Vm.path, 'process') -moose.useClock(2, axon_Vm2.path, 'process') -# Now initialize everything and get set -moose.reinit() - -# Here we take a simple approach to try current injection experiemnt: -# Run the simulation for some time. Then set the `inject` field of the -# soma to a positive value and run for some more time. This will -# emulate a current injection for that duration. Finally, remove the -# current injection by setting the `inject` field back to 0 and run -# for some more time to get the discharging curve. - -# Normally you should use a PulseGen object for this instead of -# stopping the simulation midway to set the inject field.. -moose.start(50e-3) -# Now apply 1 pA current injection to soma -soma.inject = 1e-12 -# Run for 100 ms -moose.start(100e-3) -# Stop the current injection -soma.inject = 0.0 -# Run for 500 ms -moose.start(500e-3) -clock = moose.Clock('/clock') # Get a handle to the global clock -time = np.linspace(0, clock.currentTime, len(axon_Vm.vector)) -data = np.vstack((time, axon_Vm.vector, axon_Vm2.vector)) - -np.savetxt('compartmental_neuron.csv', data.T, delimiter=',', header='time,Vm1,Vm2') -print('Saved data in compartmental_neuron.csv') - -# -# compartmental_neuron.py ends here diff --git a/examples/snippets/convert_Genesis2Sbml.py b/examples/snippets/convert_Genesis2Sbml.py deleted file mode 100644 index 4fca921..0000000 --- a/examples/snippets/convert_Genesis2Sbml.py +++ /dev/null @@ -1,64 +0,0 @@ -# convert_Genesis2Sbml.py --- -# -# Filename: convert_Genesis2Sbml.py -# Description: -# Author:Harsha Rani -# Maintainer: -# Created: Mon Jan 19 09:16:58 2015 (+0530) -# Version: -# Last-Updated: Mon Nov 7 15:155:38 2012 (+0530) -# By: Harsha Rani -# Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# The script demonstates to convert Chemical (Genesis) file to SBML file using moose -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import moose -from moose.SBML import * -def main(): - """This example illustrates loading a kinetic model defined in Genesis format - into Moose using loadModel function and using writeSBML function - one can save the model into SBML format. \n - libsbml should be installed -""" - #This command loads the file into the path '/Kholodenko' - moose.loadModel('../genesis/Kholodenko.g','/Kholodenko') - - #Writes model to xml file - written = mooseWriteSBML('/Kholodenko','../genesis/Kholodenko_tosbml.xml') - print written - -if __name__ == '__main__': - main() diff --git a/examples/snippets/crossComptNeuroMesh.py b/examples/snippets/crossComptNeuroMesh.py deleted file mode 100644 index 189cc3b..0000000 --- a/examples/snippets/crossComptNeuroMesh.py +++ /dev/null @@ -1,241 +0,0 @@ -######################################################################### -# -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -def makeCompt( name, parent, dx, dy, dia ): - RM = 1.0 - RA = 1.0 - CM = 0.01 - EM = -0.065 - pax = 0 - pay = 0 - if ( parent.className == "Compartment" ): - pax = parent.x - pay = parent.y - compt = moose.Compartment( name ) - compt.x0 = pax - compt.y0 = pay - compt.z0 = 0 - compt.x = pax + dx - compt.y = pay + dy - compt.z = 0 - compt.diameter = dia - clen = numpy.sqrt( dx * dx + dy * dy ) - compt.length = clen - compt.Rm = RM / (numpy.pi * dia * clen) - compt.Ra = RA * 4.0 * numpy.pi * clen / ( dia * dia ) - compt.Cm = CM * numpy.pi * dia * clen - if ( parent.className == "Compartment" ): - moose.connect( parent, 'raxial', compt, 'axial' ) - return compt - - -def makeNeuron( numSeg ): - segmentLength = 1e-6 - segmentDia = 1e-6 - shaftLength = 1e-6 - shaftDia = 0.2e-6 - headLength = 0.5e-6 - headDia = 0.5e-6 - - cell = moose.Neutral( '/model/cell' ) - model = moose.element( '/model' ) - prev = makeCompt( '/model/cell/soma', - model, 0.0, segmentLength, segmentDia ) - dend = prev - for i in range( 0, numSeg ): - name = '/model/cell/dend' + str( i ) - dend = makeCompt( name, dend, 0.0, segmentLength, segmentDia ) - name = '/model/cell/shaft' + str( i ) - shaft = makeCompt( name, dend, shaftLength, 0.0, shaftDia ) - name = '/model/cell/head' + str( i ) - head = makeCompt( name, shaft, headLength, 0.0, headDia ) - return cell - -def makeModel(): - numSeg = 5 - diffConst = 0.0 - # create container for model - model = moose.Neutral( 'model' ) - compt0 = moose.NeuroMesh( '/model/compt0' ) - compt0.separateSpines = 1 - compt0.geometryPolicy = 'cylinder' - compt1 = moose.SpineMesh( '/model/compt1' ) - moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) - compt2 = moose.PsdMesh( '/model/compt2' ) - moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) - - # create molecules and reactions - a = moose.Pool( '/model/compt0/a' ) - b = moose.Pool( '/model/compt1/b' ) - c = moose.Pool( '/model/compt2/c' ) - reac0 = moose.Reac( '/model/compt0/reac0' ) - reac1 = moose.Reac( '/model/compt1/reac1' ) - - # connect them up for reactions - moose.connect( reac0, 'sub', a, 'reac' ) - moose.connect( reac0, 'prd', b, 'reac' ) - moose.connect( reac1, 'sub', b, 'reac' ) - moose.connect( reac1, 'prd', c, 'reac' ) - - # Assign parameters - a.diffConst = diffConst - b.diffConst = diffConst - c.diffConst = diffConst - a.concInit = 1 - b.concInit = 12.1 - c.concInit = 1 - reac0.Kf = 1 - reac0.Kb = 1 - reac1.Kf = 1 - reac1.Kb = 1 - - # Create a 'neuron' with a dozen spiny compartments. - elec = makeNeuron( numSeg ) - # assign geometry to mesh - compt0.diffLength = 10e-6 - #compt0.cell = elec - compt0.subTreePath = elec.path + "/##" - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/compt0/ksolve' ) - ksolve1 = moose.Ksolve( '/model/compt1/ksolve' ) - ksolve2 = moose.Ksolve( '/model/compt2/ksolve' ) - stoich0 = moose.Stoich( '/model/compt0/stoich' ) - stoich1 = moose.Stoich( '/model/compt1/stoich' ) - stoich2 = moose.Stoich( '/model/compt2/stoich' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - stoich0.path = '/model/compt0/#' - stoich1.path = '/model/compt1/#' - stoich2.path = '/model/compt2/#' - assert( stoich0.numVarPools == 1 ) - assert( stoich0.numProxyPools == 1 ) - assert( stoich0.numRates == 1 ) - assert( stoich1.numVarPools == 1 ) - assert( stoich1.numProxyPools == 1 ) - assert( stoich1.numRates == 1 ) - assert( stoich2.numVarPools == 1 ) - assert( stoich2.numProxyPools == 0 ) - assert( stoich2.numRates == 0 ) - stoich0.buildXreacs( stoich1 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - - print a.vec.volume, b.vec.volume, c.vec.volume - a.vec.concInit = range( numSeg + 1, 0, -1 ) - b.vec.concInit = [5.0 * ( 1 + x ) for x in range( numSeg )] - c.vec.concInit = range( 1, numSeg + 1 ) - print a.vec.concInit, b.vec.concInit, c.vec.concInit - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - outputC = moose.Table2 ( '/model/graphs/concC' ) - - # connect up the tables - a1 = moose.element( '/model/compt0/a[' + str( numSeg )+ ']') - b1 = moose.element( '/model/compt1/b[' +str(numSeg - 1)+']') - c1 = moose.element( '/model/compt2/c[' +str(numSeg - 1)+']') - moose.connect( outputA, 'requestOut', a1, 'getConc' ); - moose.connect( outputB, 'requestOut', b1, 'getConc' ); - moose.connect( outputC, 'requestOut', c1, 'getConc' ); - - -def main(): - """ - This example illustrates how to define a kinetic model embedded in - a NeuroMesh, and undergoing cross-compartment reactions. It is - completely self-contained and does not use any external model definition - files. Normally one uses standard model formats like - SBML or kkit to concisely define kinetic and neuronal models. - This example creates a simple reaction:: - a <==> b <==> c - in which - **a, b**, and **c** are in the dendrite, spine head, and PSD - respectively. - The model is set up to run using the Ksolve for integration. Although - a diffusion solver is set up, the diff consts here are set to zero. - The display has two parts: - Above is a line plot of concentration against compartment#. - Below is a time-series plot that appears after # the simulation has - ended. The plot is for the last (rightmost) compartment. - Concs of **a**, **b**, **c** are plotted for both graphs. - """ - simdt = 0.01 - plotdt = 0.01 - - makeModel() - - # Schedule the whole lot - for i in range( 10, 19): - moose.setClock( i, simdt ) # for the compute objects - moose.reinit() - display() - quit() - -def display(): - dt = 0.01 - runtime = 1 - a = moose.element( '/model/compt0/a' ) - b = moose.element( '/model/compt1/b' ) - c = moose.element( '/model/compt2/c' ) - plt.ion() - fig = plt.figure( figsize=(12,10)) - timeseries = fig.add_subplot( 212 ) - spatial = fig.add_subplot( 211) - spatial.set_ylim(0, 15) - pos = numpy.arange( 0, a.vec.conc.size, 1 ) - line1, = spatial.plot( pos, a.vec.conc, 'b-', label='a' ) - line2, = spatial.plot( pos[1:], b.vec.conc, 'g-', label='b' ) - line3, = spatial.plot( pos[1:], c.vec.conc, 'r-', label='c' ) - timeLabel = plt.text( 3, 12, 'time = 0' ) - plt.legend() - fig.canvas.draw() - - for t in numpy.arange( dt, runtime, dt ): - line1.set_ydata( a.vec.conc ) - line2.set_ydata( b.vec.conc ) - line3.set_ydata( c.vec.conc ) - #print b.vec.volume - #print a.vec.n, b.vec.n, c.vec.n - timeLabel.set_text( "time = %f" % t ) - fig.canvas.draw() - #raw_input() - moose.start( dt ) - - timeseries.set_ylim( 0, 20 ) - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.arange( 0, x.vector.size *dt , dt ) # sec - line4, = timeseries.plot( t, x.vector, label=x.name ) - plt.legend() - fig.canvas.draw() - - print( "Hit 'enter' to exit" ) - raw_input() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/crossComptOscillator.py b/examples/snippets/crossComptOscillator.py deleted file mode 100644 index cc812bc..0000000 --- a/examples/snippets/crossComptOscillator.py +++ /dev/null @@ -1,88 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import moose -import pylab -import numpy -import sys - -def deq( a, b ): - eps1 = 1e-9 - eps2 = 1e-20 - return ( abs (a-b) < eps1 * (abs(a) + abs(b)) + eps2 ) - -def main(): - """ - This example illustrates loading and running a reaction system that - spans two volumes, that is, is in different compartments. It uses a - kkit model file. You can tell if it is working if you see nice - relaxation oscillations. - """ - # the kkit reader doesn't know how to do multicompt solver setup. - solver = "ee" - mfile = '../genesis/OSC_diff_vols.g' - runtime = 3000.0 - simDt = 1.0 - modelId = moose.loadModel( mfile, 'model', solver ) - #moose.delete( '/model/kinetics/A/Stot' ) - compt0 = moose.element( '/model/kinetics' ) - compt1 = moose.element( '/model/compartment_1' ) - assert( deq( compt0.volume, 2e-20 ) ) - assert( deq( compt1.volume, 1e-20 ) ) - dy = compt0.dy - compt1.y1 += dy - compt1.y0 = dy - assert( deq( compt1.volume, 1e-20 ) ) - # We now have two cubes adjacent to each other. Compt0 has 2x vol. - # Compt1 touches it. - stoich0 = moose.Stoich( '/model/kinetics/stoich' ) - stoich1 = moose.Stoich( '/model/compartment_1/stoich' ) - ksolve0 = moose.Ksolve( '/model/kinetics/ksolve' ) - ksolve1 = moose.Ksolve( '/model/compartment_1/ksolve' ) - stoich0.compartment = compt0 - stoich0.ksolve = ksolve0 - stoich0.path = '/model/kinetics/##' - stoich1.compartment = compt1 - stoich1.ksolve = ksolve1 - stoich1.path = '/model/compartment_1/##' - #stoich0.buildXreacs( stoich1 ) - print ksolve0.numLocalVoxels, ksolve0.numPools, stoich0.numAllPools - assert( ksolve0.numLocalVoxels == 1 ) - assert( ksolve0.numPools == 7 ) - assert( stoich0.numVarPools == 5 ) - assert( stoich0.numBufPools == 1 ) - assert( stoich0.numProxyPools == 1 ) - assert( stoich0.numAllPools == 7 ) - print len( stoich0.proxyPools[stoich1] ), - print len( stoich1.proxyPools[stoich0] ) - assert( len( stoich0.proxyPools[stoich1] ) == 1 ) - assert( len( stoich1.proxyPools[stoich0] ) == 1 ) - print ksolve1.numLocalVoxels, ksolve1.numPools, stoich1.numAllPools - assert( ksolve1.numLocalVoxels == 1 ) - assert( ksolve1.numPools == 6 ) - assert( stoich1.numAllPools == 6 ) - stoich0.buildXreacs( stoich1 ) - print moose.element( '/model/kinetics/endo' ) - print moose.element( '/model/compartment_1/exo' ) - moose.le( '/model/compartment_1' ) - moose.reinit() - moose.start( runtime ) - - # Display all plots. - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * simDt - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - - #quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/crossComptSimpleReac.py b/examples/snippets/crossComptSimpleReac.py deleted file mode 100644 index 82571b3..0000000 --- a/examples/snippets/crossComptSimpleReac.py +++ /dev/null @@ -1,154 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - - -import math -import matplotlib.pyplot as plt -import numpy -import moose - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compt0 = moose.CubeMesh( '/model/compt0' ) - compt0.volume = 1e-15 - compt1 = moose.CubeMesh( '/model/compt1' ) - compt1.volume = 1e-16 - compt2 = moose.CubeMesh( '/model/compt2' ) - compt2.volume = 1e-17 - - # Position containers so that they abut each other, with - # compt1 in the middle. - side = compt1.dy - compt0.y1 += side - compt0.y0 += side - compt2.x1 += side - compt2.x0 += side - print('Volumes = ', compt0.volume, compt1.volume, compt2.volume) - - # create molecules and reactions - a = moose.Pool( '/model/compt0/a' ) - b = moose.Pool( '/model/compt1/b' ) - c = moose.Pool( '/model/compt2/c' ) - reac0 = moose.Reac( '/model/compt1/reac0' ) - reac1 = moose.Reac( '/model/compt1/reac1' ) - - # connect them up for reactions - moose.connect( reac0, 'sub', a, 'reac' ) - moose.connect( reac0, 'prd', b, 'reac' ) - moose.connect( reac1, 'sub', b, 'reac' ) - moose.connect( reac1, 'prd', c, 'reac' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 12.1 - c.concInit = 1 - reac0.Kf = 0.1 - reac0.Kb = 0.1 - reac1.Kf = 0.1 - reac1.Kb = 0.1 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - outputC = moose.Table2 ( '/model/graphs/concC' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - moose.connect( outputC, 'requestOut', c, 'getConc' ); - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/compt0/ksolve0' ) - ksolve1 = moose.Ksolve( '/model/compt1/ksolve1' ) - ksolve2 = moose.Ksolve( '/model/compt2/ksolve2' ) - stoich0 = moose.Stoich( '/model/compt0/stoich0' ) - stoich1 = moose.Stoich( '/model/compt1/stoich1' ) - stoich2 = moose.Stoich( '/model/compt2/stoich2' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - stoich0.path = '/model/compt0/#' - stoich1.path = '/model/compt1/#' - stoich2.path = '/model/compt2/#' - stoich1.buildXreacs( stoich0 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - - -def main(): - """ - This example illustrates a simple cross compartment reaction:: - - a <===> b <===> c - - Here each molecule is in a different compartment. - The initial conditions are such that the end conc on all compartments - should be 2.0. - The time course depends on which compartment the Reac object is - embedded in. - The cleanest thing numerically and also conceptually is to have both - reactions in the same compartment, in this case the middle one - (**compt1**). - The initial conditions have a lot of **B**. The equilibrium with - **C** is fast and so **C** shoots up and passes **B**, peaking at - about (2.5,9). This is also just - about the crossover point. - **A** starts low and slowly climbs up to equilibrate. - - If we put **reac0** in **compt0** and **reac1** in **compt1**, - it behaves the same - qualitiatively but now the peak is at around (1, 5.2) - - This configuration of reactions makes sense from the viewpoint of - having the - reactions always in the compartment with the smaller volume, which is - important if we need to have junctions where many small voxels talk to - one big voxel in another compartment. - - Note that putting the reacs in other compartments doesn't work and in - some combinations (e.g., **reac0** in **compt0** and **reac1** in - **compt2**) give - numerical instability. - """ - simdt = 0.1 - plotdt = 0.1 - runtime = 100.0 - - makeModel() - - # MOOSE autoschedules everything. - moose.reinit() - moose.start( runtime ) # Run the model for 100 seconds. - print("All concs should converge to 2.0 even though vols differ:") - for x in moose.wildcardFind( '/model/compt#/#[ISA=PoolBase]' ): - print(x.name, x.conc) - - # FIXME: Plotting causes seg-fault. - ## Iterate through all plots, dump their contents to data.plot. - #for x in moose.wildcardFind( '/model/graphs/conc#' ): - # t = numpy.linspace( 0, runtime, x.vector.size ) # sec - # plt.plot( t, x.vector, label=x.name ) - #plt.legend() - #plt.show() - #quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/crossComptSimpleReacGSSA.py b/examples/snippets/crossComptSimpleReacGSSA.py deleted file mode 100644 index 879fd90..0000000 --- a/examples/snippets/crossComptSimpleReacGSSA.py +++ /dev/null @@ -1,153 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - - -import math -import pylab -import numpy -import moose - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compt0 = moose.CubeMesh( '/model/compt0' ) - compt0.volume = 1e-18 - compt1 = moose.CubeMesh( '/model/compt1' ) - compt1.volume = 1e-19 - compt2 = moose.CubeMesh( '/model/compt2' ) - compt2.volume = 1e-20 - - # Position containers so that they abut each other, with - # compt1 in the middle. - side = compt1.dy - compt0.y1 += side - compt0.y0 += side - compt2.x1 += side - compt2.x0 += side - print('Volumes = ', compt0.volume, compt1.volume, compt2.volume) - - # create molecules and reactions - a = moose.Pool( '/model/compt0/a' ) - b = moose.Pool( '/model/compt1/b' ) - c = moose.Pool( '/model/compt2/c' ) - reac0 = moose.Reac( '/model/compt1/reac0' ) - reac1 = moose.Reac( '/model/compt1/reac1' ) - - # connect them up for reactions - moose.connect( reac0, 'sub', a, 'reac' ) - moose.connect( reac0, 'prd', b, 'reac' ) - moose.connect( reac1, 'sub', b, 'reac' ) - moose.connect( reac1, 'prd', c, 'reac' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 12.1 - c.concInit = 1 - reac0.Kf = 0.1 - reac0.Kb = 0.1 - reac1.Kf = 0.1 - reac1.Kb = 0.1 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - outputC = moose.Table2 ( '/model/graphs/concC' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - moose.connect( outputC, 'requestOut', c, 'getConc' ); - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Gsolve( '/model/compt0/ksolve0' ) - ksolve1 = moose.Gsolve( '/model/compt1/ksolve1' ) - ksolve2 = moose.Gsolve( '/model/compt2/ksolve2' ) - stoich0 = moose.Stoich( '/model/compt0/stoich0' ) - stoich1 = moose.Stoich( '/model/compt1/stoich1' ) - stoich2 = moose.Stoich( '/model/compt2/stoich2' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - stoich0.path = '/model/compt0/#' - stoich1.path = '/model/compt1/#' - stoich2.path = '/model/compt2/#' - stoich1.buildXreacs( stoich0 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - - -def main(): - """ - This example illustrates a simple cross compartment reaction:: - - a <===> b <===> c - - Here each molecule is in a different compartment. - The initial conditions are such that the end conc on all compartments - should be 2.0. - The time course depends on which compartment the Reac object is - embedded in. - The cleanest thing numerically and also conceptually is to have both - reactions in the same compartment, in this case the middle one - (**compt1**). - The initial conditions have a lot of **B**. The equilibrium with - **C** is fast and so **C** shoots up and passes **B**, peaking at - about (2.5,9). This is also just - about the crossover point. - **A** starts low and slowly climbs up to equilibrate. - - If we put **reac0** in **compt0** and **reac1** in **compt1**, - it behaves the same - qualitiatively but now the peak is at around (1, 5.2) - - This configuration of reactions makes sense from the viewpoint of - having the - reactions always in the compartment with the smaller volume, which is - important if we need to have junctions where many small voxels talk to - one big voxel in another compartment. - - Note that putting the reacs in other compartments doesn't work and in - some combinations (e.g., **reac0** in **compt0** and **reac1** in - **compt2**) give - numerical instability. - """ - simdt = 0.1 - plotdt = 0.1 - runtime = 100.0 - - makeModel() - - # MOOSE autoschedules everything. - moose.reinit() - moose.start( runtime ) # Run the model for 100 seconds. - print("All concs should converge to 2.0 even though vols differ:") - for x in moose.wildcardFind( '/model/compt#/#[ISA=PoolBase]' ): - print(x.name, x.conc) - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.linspace( 0, runtime, x.vector.size ) # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/cspaceSteadyState.py b/examples/snippets/cspaceSteadyState.py deleted file mode 100644 index a21f3bf..0000000 --- a/examples/snippets/cspaceSteadyState.py +++ /dev/null @@ -1,122 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example sets up the kinetic solver and steady-state finder, on -# a bistable model. -# It looks for the fixed points 100 times, as follows: -# - Set up the random initial condition that fits the conservation laws -# - Run for 2 seconds. This should not be mathematically necessary, but -# for obscure numerical reasons it makes it much more likely that the -# steady state solver will succeed in finding a state. -# - Find the fixed point -# - Print out the fixed point vector and various diagnostics. -# - Run for 10 seconds. This is completely unnecessary, and is done here -# just so that the resultant graph will show what kind of state has been -# found. -# After it does all this, the program runs for 100 more seconds on the last -# found fixed point (which turns out to be a saddle node), then -# is hard-switched in the script to the first attractor basin from which -# it runs for another 100 seconds till it settles there, and then -# is hard-switched yet again to the second attractor and runs for 100 -# seconds. -# Looking at the output you will see many features of note: -# - the first attractor (stable point) and the saddle point -# (unstable fixed point) are both found quite often. But the second -# attractor is found just once. Has a very small basin of attraction. -# - The values found for each of the fixed points match well with the -# values found by running the system to steady-state at the end. -# - There are a large number of failures to find a fixed point. These are -# found and reported in the diagnostics. They show up on the plot -# as cases where the 10-second runs are not flat. -# -# If you wanted to find fixed points in a production model, you would -# not need to do the 10-second runs, and you would need to eliminate the -# cases where the state-finder failed. Then you could identify the good -# points and keep track of how many of each were found. -# There is no way to guarantee that all fixed points have been found using -# this algorithm! -# You may wish to sample concentration space logarithmically rather than -# linearly. - -import math -import pylab -import numpy -import moose - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def getState( ksolve, state ): - state.randomInit() - moose.start( 0.1 ) # Run the model for 2 seconds. - state.settle() - ''' - scale = 1.0 / ( 1e-15 * 6.022e23 ) - for x in ksolve.nVec[0]: - print x * scale, - # print ksolve.nVec[0] - print state.nIter, state.status, state.stateType, state.nNegEigenvalues, state.nPosEigenvalues, state.solutionStatus - ''' - moose.start( 20.0 ) # Run model for 10 seconds, just for display - - -def main(): - # The wildcard uses # for single level, and ## for recursive. - #compartment = makeModel() - moose.loadModel( '../genesis/M1719.cspace', '/model', 'ee' ) - compartment = moose.element( 'model/kinetics' ) - compartment.name = 'compartment' - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - #ksolve.stoich = stoich - stoich.path = "/model/compartment/##" - state = moose.SteadyState( '/model/compartment/state' ) - - moose.reinit() - state.stoich = stoich - #state.showMatrices() - state.convergenceCriterion = 1e-7 - - moose.le( '/model/graphs' ) - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - - for i in range( 0, 100 ): - getState( ksolve, state ) - - moose.start( 100.0 ) # Run the model for 100 seconds. - - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - - # move most molecules over to b - b.conc = b.conc + c.conc * 0.95 - c.conc = c.conc * 0.05 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - c.conc = c.conc + b.conc * 0.95 - b.conc = b.conc * 0.05 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/cubeMeshSigNeur.py b/examples/snippets/cubeMeshSigNeur.py deleted file mode 100644 index 4669db4..0000000 --- a/examples/snippets/cubeMeshSigNeur.py +++ /dev/null @@ -1,307 +0,0 @@ -# HsolveInstability.py --- - -# Commentary: -# -# A toy compartmental neuronal + chemical model in just a cubic volume -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import pylab - -import moose - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def createSquid(): - """Create a single compartment squid model.""" - parent = moose.Neutral ('/n' ) - elec = moose.Neutral ('/n/elec' ) - compt = moose.SymCompartment( '/n/elec/compt' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 * 0.5 - compt.Rm = 4.2e5 * 5.0 - compt.Ra = 7639.44e3 - compt.length = 100e-6 - compt.diameter = 4e-6 - nachan = moose.HHChannel( '/n/elec/compt/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) - yGate.useInterpolation = 1 - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') - - kchan = moose.HHChannel( '/n/elec/compt/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') - return compt - -def createSynapseOnCompartment( compt ): - FaradayConst = 96485.3415 # s A / mol - length = compt.length - dia = compt.diameter - - gluR = moose.SynChan( compt.path + '/gluR' ) - gluR.tau1 = 4e-3 - gluR.tau2 = 4e-3 - gluR.Gbar = 1e-6 - gluR.Ek= 10.0e-3 - moose.connect( compt, 'channel', gluR, 'channel', 'Single' ) - gluSyn = moose.SimpleSynHandler( compt.path + '/gluR/sh' ) - moose.connect( gluSyn, 'activationOut', gluR, 'activation' ) - gluSyn.synapse.num = 1 - # Ca comes in through this channel, at least for this example. - caPool = moose.CaConc( compt.path + '/ca' ) - caPool.CaBasal = 1e-4 # 0.1 micromolar - caPool.tau = 0.01 - B = 1.0 / ( FaradayConst * length * dia * dia * math.pi / 4) - B = B / 20.0 # scaling factor for Ca buffering - caPool.B = B - moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) - # Provide a regular synaptic input. - synInput = moose.SpikeGen( '/n/elec/compt/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - syn = moose.element( gluSyn.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 - syn.delay = 1.0e-3 - return gluR - -def createPool( compt, name, concInit ): - pool = moose.Pool( compt.path + '/' + name ) - pool.concInit = concInit - pool.diffConst = 5e-11 - return pool - -# This is a Ca-activated enzyme that phosphorylates and inactivates kChan -# as per the following scheme: -# Ca + inact_kinase <===> Ca.kinase -# kChan ----- Ca.kinase -----> kChan_p -# kChan_p -------> kChan -def createChemModel( neuroCompt ): - dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) - dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) - dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) - dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) - moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) - moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) - moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) - dendTurnOnKinase.Kf = 50000 - dendTurnOnKinase.Kb = 1 - dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) - dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) - kChan = createPool( neuroCompt, 'kChan', 1e-3 ) - kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) - moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) - dendKinaseEnz.Km = 1e-4 - dendKinaseEnz.kcat = 20 - dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) - moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) - moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) - dendPhosphatase.Kf = 1 - dendPhosphatase.Kb = 0.0 - -def makeModelInCubeMesh(): - compt = createSquid() - createSynapseOnCompartment( compt ) - chem = moose.Neutral( '/n/chem' ) - neuroMesh = moose.CubeMesh( '/n/chem/neuroMesh' ) - coords = [0] * 9 - coords[3] = compt.length - coords[4] = compt.diameter - coords[5] = compt.diameter - coords[6] = compt.length - coords[7] = compt.diameter - coords[8] = compt.diameter - neuroMesh.coords = coords - neuroMesh.preserveNumEntries = 1 - createChemModel( neuroMesh ) - dendCa = moose.element( '/n/chem/neuroMesh/Ca' ) - assert dendCa.volume == compt.length * compt.diameter * compt.diameter - dendKinaseEnzCplx = moose.element( '/n/chem/neuroMesh/Ca.kinase/enz/cplx' ) - assert dendKinaseEnzCplx.volume == dendCa.volume - # Make adaptors - # Note that we can do this two ways: We can use an existing output - # msg from the object, which will come whenever the object processes, - # or the adapator can request the object for the field, which happens - # whenever the adaptor processes. Here we illustrate both alternatives. - adaptK = moose.Adaptor( '/n/chem/neuroMesh/adaptK' ) - chemK = moose.element( '/n/chem/neuroMesh/kChan' ) - elecK = moose.element( '/n/elec/compt/K' ) - moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) - moose.connect( adaptK, 'output', elecK, 'setGbar', 'OneToAll' ) - adaptK.scale = 0.3 # from mM to Siemens - - adaptCa = moose.Adaptor( '/n/chem/neuroMesh/adaptCa' ) - chemCa = moose.element( '/n/chem/neuroMesh/Ca' ) - elecCa = moose.element( '/n/elec/compt/ca' ) - moose.connect( elecCa, 'concOut', adaptCa, 'input', 'OneToAll' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc', 'OneToAll' ) - adaptCa.outputOffset = 0.0001 # 100 nM offset in chem conc - adaptCa.scale = 0.05 # Empirical: 0.06 max to 0.003 mM - -def addPlot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def displayPlots(): - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/n/elec/compt', 'getVm', 'elec/Vm' ) - addPlot( '/n/elec/compt/ca', 'getCa', 'elec/Ca' ) - addPlot( '/n/elec/compt/K', 'getGk', 'elec/K_Gk' ) - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - addPlot( '/n/chem/neuroMesh/Ca', 'getConc', 'chemCa' ) - addPlot( '/n/chem/neuroMesh/kChan_p', 'getConc', 'chemkChan_p' ) - addPlot( '/n/chem/neuroMesh/kChan', 'getConc', 'chemkChan' ) - addPlot( '/n/chem/neuroMesh/Ca.kinase', 'getConc', 'activeKinase' ) - -def testCubeMultiscale( useSolver ): - elecDt = 10e-6 - chemDt = 1e-4 - plotDt = 5e-4 - plotName = 'cm.plot' - if ( useSolver ): - elecDt = 50e-6 - chemDt = 2e-3 - plotName = 'solve_cm.plot' - - makeModelInCubeMesh() - makeChemPlots() - makeElecPlots() - ''' - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 1, '/n/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/n/##[ISA=SynBase]','process') - moose.useClock( 6, '/n/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - moose.useClock( 0, '/n/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/n/##[ISA=Compartment]', 'process' ) - moose.useClock( 2, '/n/##[ISA=ChanBase],/n/##[ISA=SynBase],/n/##[ISA=CaConc]','process') - moose.useClock( 5, '/n/##[ISA=PoolBase],/n/##[ISA=ReacBase],/n/##[ISA=EnzBase]', 'process' ) - ''' - if ( useSolver ): - ksolve = moose.Ksolve( '/n/ksolve' ) - stoich = moose.Stoich( '/n/stoich' ) - stoich.compartment = moose.element( '/n/chem/neuroMesh' ) - stoich.ksolve = ksolve - stoich.path = '/n/##' - ksolve.method = 'rk5' - #moose.useClock( 5, '/n/ksolve', 'process' ) - hsolve = moose.HSolve( '/n/hsolve' ) - #moose.useClock( 1, '/n/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/n/compt' - moose.reinit() - moose.start( 1 ) - displayPlots() - -def main(): - testCubeMultiscale( 1 ) # change argument to 0 to run without solver. - -if __name__ == '__main__': - main() - -# cubeMeshSigNeur.py ends here diff --git a/examples/snippets/cylinderDiffusion.py b/examples/snippets/cylinderDiffusion.py deleted file mode 100644 index 0b4d866..0000000 --- a/examples/snippets/cylinderDiffusion.py +++ /dev/null @@ -1,194 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import sys -sys.path.append('../../python') -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -import os -import signal -PID = os.getpid() - -def doNothing( *args ): - pass - -signal.signal( signal.SIGUSR1, doNothing ) - -def makeModel(): - """ - This example illustrates how to set up a diffusion/transport model with - a simple reaction-diffusion system in a tapering cylinder: - - | Molecule **a** diffuses with diffConst of 10e-12 m^2/s. - | Molecule **b** diffuses with diffConst of 5e-12 m^2/s. - | Molecule **b** also undergoes motor transport with a rate of 10e-6 m/s - | Thus it 'piles up' at the end of the cylinder. - | Molecule **c** does not move: diffConst = 0.0 - | Molecule **d** does not move: diffConst = 10.0e-12 but it is buffered. - | Because it is buffered, it is treated as non-diffusing. - - All molecules other than **d** start out only in the leftmost (first) - voxel, with a concentration of 1 mM. **d** is present throughout - at 0.2 mM, except in the last voxel, where it is at 1.0 mM. - - The cylinder has a starting radius of 2 microns, and end radius of - 1 micron. So when the molecule undergoing motor transport gets to the - narrower end, its concentration goes up. - - There is a little reaction in all compartments: ``b + d <===> c`` - - As there is a high concentration of **d** in the last compartment, - when the molecule **b** reaches the end of the cylinder, the reaction - produces lots of **c**. - - Note that molecule **a** does not participate in this reaction. - - The concentrations of all molecules are displayed in an animation. - """ - # create container for model - r0 = 2e-6 # m - r1 = 1e-6 # m - num = 100 - diffLength = 1e-6 # m - len = num * diffLength # m - diffConst = 10e-12 # m^2/sec - motorRate = 10e-6 # m/sec - concA = 1 # millimolar - - model = moose.Neutral( 'model' ) - compartment = moose.CylMesh( '/model/compartment' ) - compartment.r0 = r0 - compartment.r1 = r1 - compartment.x0 = 0 - compartment.x1 = len - compartment.diffLength = diffLength - - assert( compartment.numDiffCompts == num ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - d = moose.BufPool( '/model/compartment/d' ) - r1 = moose.Reac( '/model/compartment/r1' ) - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'sub', d, 'reac' ) - moose.connect( r1, 'prd', c, 'reac' ) - r1.Kf = 1.0 # 1/(mM.sec) - r1.Kb = 1.0 # 1/sec - - # Assign parameters - a.diffConst = diffConst - b.diffConst = diffConst / 2.0 - b.motorConst = motorRate - c.diffConst = 0 - d.diffConst = diffConst - - - # Make solvers - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - dsolve = moose.Dsolve( '/model/compartment/dsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.dsolve = dsolve - os.kill( PID, signal.SIGUSR1 ) - stoich.path = "/model/compartment/##" - - print dsolve.numPools - assert( dsolve.numPools == 3 ) - a.vec[0].concInit = concA - b.vec[0].concInit = concA - c.vec[0].concInit = concA - d.vec.concInit = concA / 5.0 - d.vec[num-1].concInit = concA - -def makePlots(): - plt.ion() - fig = plt.figure( figsize=(12,6) ) - dynamic = fig.add_subplot( 111 ) - - a = moose.vec( '/model/compartment/a' ) - b = moose.vec( '/model/compartment/b' ) - c = moose.vec( '/model/compartment/c' ) - d = moose.vec( '/model/compartment/d' ) - pos = numpy.arange( 0, a.conc.size, 1 ) - aline, = dynamic.plot( pos, a.conc, label='a' ) - bline, = dynamic.plot( pos, b.conc, label='b' ) - cline, = dynamic.plot( pos, c.conc, label='c' ) - dline, = dynamic.plot( pos, d.conc, label='d' ) - - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Cylinder voxel #' ) - plt.legend() - timelabel = plt.text( 10, 0.8, 'time = 0.0' ) - fig.canvas.draw() - return( fig, dynamic, timelabel, aline, bline, cline, dline ) - -def updatePlots( plotlist, time ): - a = moose.vec( '/model/compartment/a' ) - b = moose.vec( '/model/compartment/b' ) - c = moose.vec( '/model/compartment/c' ) - d = moose.vec( '/model/compartment/d' ) - - plotlist[2].set_text( "time = %g" % time ) - plotlist[3].set_ydata( a.conc ) - plotlist[4].set_ydata( b.conc ) - plotlist[5].set_ydata( c.conc ) - plotlist[6].set_ydata( d.conc ) - plotlist[0].canvas.draw() - - -def main(): - runtime = 20.0 - diffdt = 0.005 - plotdt = 0.1 - makeModel() - # Set up clocks. The dsolver to know before assigning stoich - moose.setClock( 10, diffdt ) # 10 is the standard clock for Dsolve. - moose.setClock( 16, plotdt ) # 16 is the standard clock for Ksolve. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - d = moose.element( '/model/compartment/d' ) - - moose.reinit() - atot = sum( a.vec.n ) - btot = sum( b.vec.n ) - ctot = sum( c.vec.n ) - dtot = sum( d.vec.n ) - plotlist = makePlots() - for t in numpy.arange( 0, runtime, plotdt ): - moose.start( plotdt ) - updatePlots( plotlist, t ) - # moose.start( runtime ) # Run the model - - atot2 = sum( a.vec.n ) - btot2 = sum( b.vec.n ) - ctot2 = sum( c.vec.n ) - dtot2 = sum( d.vec.n ) - - print 'Ratio of initial to final total numbers of of a, b, c, d = ' - print atot2/atot, btot2/btot, ctot2/ctot, dtot2/dtot - print 'Initial to final (b+c)=', (btot2 + ctot2) / (btot + ctot ) - print "\nHit 'enter' to exit" - raw_input() - - quit() - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/cylinderMotor.py b/examples/snippets/cylinderMotor.py deleted file mode 100644 index 91257b9..0000000 --- a/examples/snippets/cylinderMotor.py +++ /dev/null @@ -1,154 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example illustrates how to set up a transport model with -# four non-reacting molecules in a cylinder. -# Molecule a and b have a positive motorConst so they are -# are transported from soma (voxel 0) to the end of the cylinder. -# Molecules c and d have a negative motorConst so they are transported -# from the end of the cylinder to the soma. -# Rate of all motors is 1e-6 microns/sec. -# Pools a and c start out with all molecules at the soma, b and d -# start with all molecules at the end of the cylinder. -# Net effect is that only molecules a and d actually move. B and c -# stay put as their motors are pushing further toward their respective -# ends, and I assume all cells have sealed ends. - -import math -import pylab -import numpy -import moose - -import os -import signal -PID = os.getpid() - -def doNothing( *args ): - pass - -signal.signal( signal.SIGUSR1, doNothing ) - -def makeModel(): - # create container for model - r0 = 1e-6 # m - r1 = 1e-6 # m - num = 25 - diffLength = 1e-6 # m - len = num * diffLength # m - diffConst = 1e-12 # m^2/sec - motorConst = 1e-6 # m/sec - concA = 1 # millimolar - - model = moose.Neutral( 'model' ) - compartment = moose.CylMesh( '/model/compartment' ) - compartment.r0 = r0 - compartment.r1 = r1 - compartment.x0 = 0 - compartment.x1 = len - compartment.diffLength = diffLength - - assert( compartment.numDiffCompts == num ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - d = moose.Pool( '/model/compartment/d' ) - """ - r1 = moose.Reac( '/model/compartment/r1' ) - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'sub', d, 'reac' ) - moose.connect( r1, 'prd', c, 'reac' ) - r1.Kf = 100 # 1/(mM.sec) - r1.Kb = 0.01 # 1/sec - """ - - # Assign parameters - a.diffConst = 0.0; - b.diffConst = 0.0; - #b.motorRate = motorRate - c.diffConst = 0.0; - d.diffConst = 0.0; - #d.diffConst = diffConst; - os.kill( PID, signal.SIGUSR1 ) - a.motorConst = motorConst - b.motorConst = motorConst - c.motorConst = -motorConst - d.motorConst = -motorConst - - - # Make solvers - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - dsolve = moose.Dsolve( '/model/compartment/dsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.dsolve = dsolve - stoich.path = "/model/compartment/##" - assert( dsolve.numPools == 4 ) - a.vec[0].concInit = concA * 1 - b.vec[num-1].concInit = concA * 2 - c.vec[0].concInit = concA * 3 - d.vec[num-1].concInit = concA * 4 - -def displayPlots(): - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - d = moose.element( '/model/compartment/d' ) - pos = numpy.arange( 0, a.vec.conc.size, 1 ) - pylab.plot( pos, a.vec.conc, label='a' ) - pylab.plot( pos, b.vec.conc, label='b' ) - pylab.plot( pos, c.vec.conc, label='c' ) - pylab.plot( pos, d.vec.conc, label='d' ) - pylab.legend() - pylab.show() - -def main(): - dt4 = 0.01 - dt5 = 0.01 - runtime = 10.0 # seconds - # Set up clocks. The dsolver to know before assigning stoich - moose.setClock( 4, dt4 ) - moose.setClock( 5, dt5 ) - - makeModel() - moose.useClock( 4, '/model/compartment/dsolve', 'process' ) - # Ksolve must be scheduled after dsolve. - moose.useClock( 5, '/model/compartment/ksolve', 'process' ) - - moose.reinit() - moose.start( runtime ) # Run the model - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - d = moose.element( '/model/compartment/d' ) - - atot = sum( a.vec.conc ) - btot = sum( b.vec.conc ) - ctot = sum( c.vec.conc ) - dtot = sum( d.vec.conc ) - - print 'tot = ', atot, btot, ctot, dtot, ' (b+c)=', btot+ctot - displayPlots() - moose.start( runtime ) # Run the model - atot = sum( a.vec.conc ) - btot = sum( b.vec.conc ) - ctot = sum( c.vec.conc ) - dtot = sum( d.vec.conc ) - - print 'tot = ', atot, btot, ctot, dtot, ' (b+c)=', btot+ctot - - quit() - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/diffEqSolution.py b/examples/snippets/diffEqSolution.py deleted file mode 100644 index 7911480..0000000 --- a/examples/snippets/diffEqSolution.py +++ /dev/null @@ -1,126 +0,0 @@ -######################################################################### -## diffEqSolution.py -## -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import numpy -import moose -import pylab - -runtime = 10 -chemdt = 0.05 -tgtCaInitConc = 50e-6 - -def makeReacs(): - # Parameters - volume = 1e-15 - CaInitConc = 60e-6 - NA = 6.022e23 - tauI = 1 - tauG = 0.1 - - model = moose.Neutral( '/cells' ) - compartment = moose.CubeMesh( '/cells/compartment' ) - compartment.volume = volume - - # Make pools - Ca = moose.BufPool( '/cells/compartment/Ca' ) - tgtCa = moose.BufPool( '/cells/compartment/tgtCa' ) - m = moose.Pool( '/cells/compartment/m' ) - chan = moose.Pool( '/cells/compartment/chan' ) - - # Make Funcs - f1 = moose.Func( '/cells/compartment/f1' ) - f2 = moose.Func( '/cells/compartment/f2' ) - - # connect up - moose.connect( f1, 'valueOut', m, 'increment' ) - moose.connect( f2, 'valueOut', chan, 'increment' ) - - moose.connect( Ca, 'nOut', f1, 'xIn' ) - moose.connect( tgtCa, 'nOut', f1, 'yIn' ) - - moose.connect( m, 'nOut', f2, 'xIn' ) - moose.connect( chan, 'nOut', f2, 'yIn' ) - - # Set params - Ca.concInit = CaInitConc - tgtCa.concInit = tgtCaInitConc - m.concInit = 0.0 - chan.concInit = 0.0 - volscale = 1.0 - - f1.expr = str( volscale / tauI ) + " * (x-y)" - f2.expr = str( volscale / tauG ) + " * (x-y)" - - #Plotting - channelPlot = makePlot( 'channelConc', chan, 'Conc', 18 ) - mPlot = makePlot( 'mConc', m, 'Conc', 18 ) - caPlot = makePlot( 'Ca', Ca, 'Conc', 18 ) - targetPlot = makePlot( 'tgtCa', tgtCa, 'Conc', 18 ) - return (channelPlot, mPlot, caPlot ) - -def makePlot( name, src, field, tick ): - tab = moose.Table( '/graphs/' + name ) - moose.connect( tab, 'requestOut', src, 'get' + field ) - tab.tick = tick - return tab - -def main(): - """ - This snippet illustrates the solution of an arbitrary set of - differential equations using the **Func** class and the **Pool** - class. The equations solved here are:: - - tauI.m' = Ca - Ca_tgt - tauG.chan' = m - chan - - These equations are taken from: O'Leary et al *Neuron* 2014. - - **Func** evaluates an arbitrary function each timestep. - Here this function is the rate of change from the equations above. - The rate of change is passed to the *increment* message of the - **Pool**. The numerical integration method is the Exponential - Euler method but this will work fine if the rates are slow compared to - the simulation timestep. - - Conceptually, the idea is that if Ca is greater than the target level, - then more mRNA is made, which makes more channels. - Although the equations have no upper or lower bounds on **m** or - **chan**, MOOSE is sensible about preventing the molecular pools from - having negative concentrations. This does mean that the solution method - employed here won't work for the general solution of differential - equations in non-chemical systems. - """ - elecdt = 25e-6 - eplotdt = 0.5e-3 - plotdt = 0.1 # s - graphs = moose.Neutral( '/graphs' ) - plots = makeReacs() - for i in range( 0, 18 ): - moose.setClock( i, chemdt ) - moose.setClock( 18, plotdt ) - moose.setClock( 8, eplotdt ) - - moose.reinit() - moose.start( runtime ) - moose.element( '/cells/compartment/Ca' ).concInit = tgtCaInitConc/2 - moose.start( runtime ) - tvec = [ i * plotdt for i in range( plots[0].vector.size ) ] - - for x in moose.wildcardFind( '/graphs/#' ): - pylab.plot(tvec, x.vector, label = x.name ) - pylab.xlabel('time (s)') - pylab.ylabel('voltage (v)') - pylab.legend() - pylab.show() - - -if __name__ == "__main__": - main() diff --git a/examples/snippets/diffSpinyNeuron.py b/examples/snippets/diffSpinyNeuron.py deleted file mode 100644 index af7f457..0000000 --- a/examples/snippets/diffSpinyNeuron.py +++ /dev/null @@ -1,282 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -diffConst = 1e-11 -chemdt = 0.001 # Tested various dts, this is reasonable. -diffdt = 0.001 -plotdt = 0.01 -animationdt = 0.01 -runtime = 1 -useGssa = False - -def makeModel(): - model = moose.Neutral( '/model' ) - # Make neuronal model. It has no channels, just for geometry - cell = moose.loadModel( './spinyNeuron.p', '/model/cell', 'Neutral' ) - # We don't want the cell to do any calculations. Disable everything. - for i in moose.wildcardFind( '/model/cell/##' ): - i.tick = -1 - - # create container for model - model = moose.element( '/model' ) - chem = moose.Neutral( '/model/chem' ) - # The naming of the compartments is dicated by the places that the - # chem model expects to be loaded. - compt0 = moose.NeuroMesh( '/model/chem/compt0' ) - compt0.separateSpines = 1 - compt0.geometryPolicy = 'cylinder' - compt1 = moose.SpineMesh( '/model/chem/compt1' ) - moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) - compt2 = moose.PsdMesh( '/model/chem/compt2' ) - moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) - - #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) - makeChemModel( compt0, True ) # Populate all 3 compts with the chem system. - makeChemModel( compt1, False ) - makeChemModel( compt2, True ) - - compt0.diffLength = 2e-6 # This will be over 100 compartments. - # This is the magic command that configures the diffusion compartments. - compt0.subTreePath = cell.path + "/#" - moose.showfields( compt0 ) - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) - if useGssa: - ksolve1 = moose.Gsolve( '/model/chem/compt1/ksolve' ) - ksolve2 = moose.Gsolve( '/model/chem/compt2/ksolve' ) - else: - ksolve1 = moose.Ksolve( '/model/chem/compt1/ksolve' ) - ksolve2 = moose.Ksolve( '/model/chem/compt2/ksolve' ) - dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) - dsolve1 = moose.Dsolve( '/model/chem/compt1/dsolve' ) - dsolve2 = moose.Dsolve( '/model/chem/compt2/dsolve' ) - stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) - stoich1 = moose.Stoich( '/model/chem/compt1/stoich' ) - stoich2 = moose.Stoich( '/model/chem/compt2/stoich' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - stoich0.dsolve = dsolve0 - stoich1.dsolve = dsolve1 - stoich2.dsolve = dsolve2 - stoich0.path = '/model/chem/compt0/#' - stoich1.path = '/model/chem/compt1/#' - stoich2.path = '/model/chem/compt2/#' - assert( stoich0.numVarPools == 1 ) - assert( stoich0.numProxyPools == 0 ) - assert( stoich0.numRates == 1 ) - assert( stoich1.numVarPools == 1 ) - assert( stoich1.numProxyPools == 0 ) - if useGssa: - assert( stoich1.numRates == 2 ) - assert( stoich2.numRates == 2 ) - else: - assert( stoich1.numRates == 1 ) - assert( stoich2.numRates == 1 ) - assert( stoich2.numVarPools == 1 ) - assert( stoich2.numProxyPools == 0 ) - dsolve0.buildNeuroMeshJunctions( dsolve1, dsolve2 ) - stoich0.buildXreacs( stoich1 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - Ca_input_dend = moose.vec( '/model/chem/compt0/Ca_input' ) - print len( Ca_input_dend ) - for i in range( 60 ): - Ca_input_dend[ 3 + i * 3 ].conc = 2.0 - - Ca_input_PSD = moose.vec( '/model/chem/compt2/Ca_input' ) - print len( Ca_input_PSD ) - for i in range( 5 ): - Ca_input_PSD[ 2 + i * 2].conc = 1.0 - - # Create the output tables - num = compt0.numDiffCompts - 1 - graphs = moose.Neutral( '/model/graphs' ) - makeTab( 'Ca_soma', '/model/chem/compt0/Ca[0]' ) - makeTab( 'Ca_d1', '/model/chem/compt0/Ca[1]' ) - makeTab( 'Ca_d2', '/model/chem/compt0/Ca[2]' ) - makeTab( 'Ca_d3', '/model/chem/compt0/Ca[3]' ) - makeTab( 'Ca_s3', '/model/chem/compt1/Ca[3]' ) - makeTab( 'Ca_s4', '/model/chem/compt1/Ca[4]' ) - makeTab( 'Ca_s5', '/model/chem/compt1/Ca[5]' ) - makeTab( 'Ca_p3', '/model/chem/compt2/Ca[3]' ) - makeTab( 'Ca_p4', '/model/chem/compt2/Ca[4]' ) - makeTab( 'Ca_p5', '/model/chem/compt2/Ca[5]' ) - -def makeTab( plotname, molpath ): - tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table - # connect up the tables - moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); - - -def makeDisplay(): - plt.ion() - fig = plt.figure( figsize=(10,12) ) - - dend = fig.add_subplot( 411 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Dend voxel #' ) - plt.legend() - timeLabel = plt.text(200, 0.5, 'time = 0') - - spine = fig.add_subplot( 412 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Spine voxel #' ) - plt.legend() - - psd = fig.add_subplot( 413 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'PSD voxel #' ) - plt.legend() - - timeSeries = fig.add_subplot( 414 ) - timeSeries.set_ylim( 0, 2 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - plt.legend() - - Ca = moose.vec( '/model/chem/compt0/Ca' ) - Ca_input = moose.vec( '/model/chem/compt0/Ca_input' ) - line1, = dend.plot( range( len( Ca ) ), Ca.conc, label='Ca' ) - line2, = dend.plot( range( len( Ca_input ) ), Ca_input.conc, label='Ca_input' ) - dend.set_ylim( 0, 2 ) - - Ca = moose.vec( '/model/chem/compt1/Ca' ) - line3, = spine.plot( range( len( Ca ) ), Ca.conc, label='Ca' ) - spine.set_ylim( 0, 1 ) - - Ca = moose.vec( '/model/chem/compt2/Ca' ) - Ca_input = moose.vec( '/model/chem/compt2/Ca_input' ) - line4, = psd.plot( range( len( Ca ) ), Ca.conc, label='Ca' ) - line5, = psd.plot( range( len( Ca_input ) ), Ca_input.conc, label='Ca_input' ) - psd.set_ylim( 0, 1 ) - - fig.canvas.draw() - return ( timeSeries, dend, spine, psd, fig, line1, line2, line3, line4, line5, timeLabel ) - -def updateDisplay( plotlist ): - Ca = moose.vec( '/model/chem/compt0/Ca' ) - Ca_input = moose.vec( '/model/chem/compt0/Ca_input' ) - plotlist[5].set_ydata( Ca.conc ) - plotlist[6].set_ydata( Ca_input.conc ) - - Ca = moose.vec( '/model/chem/compt1/Ca' ) - plotlist[7].set_ydata( Ca.conc ) - - Ca = moose.vec( '/model/chem/compt2/Ca' ) - Ca_input = moose.vec( '/model/chem/compt2/Ca_input' ) - plotlist[8].set_ydata( Ca.conc ) - plotlist[9].set_ydata( Ca_input.conc ) - plotlist[4].canvas.draw() - - -def finalizeDisplay( plotlist, cPlotDt ): - for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = plotlist[0].plot( pos, x.vector, label=x.name ) - plotlist[4].canvas.draw() - print( "Hit 'enter' to exit" ) - raw_input() - -def makeChemModel( compt, doInput ): - """ - This function setus up a simple chemical system in which Ca input - comes to the dend and to selected PSDs. There is diffusion between - PSD and spine head, and between dend and spine head. - - Ca_input ------> Ca // in dend and spine head only. - """ - # create molecules and reactions - Ca = moose.Pool( compt.path + '/Ca' ) - Ca.concInit = 0.08*1e-3 - Ca.diffConst = diffConst - if doInput: - Ca_input = moose.BufPool( compt.path + '/Ca_input' ) - Ca_input.concInit = 0.08*1e-3 - Ca_input.diffConst = diffConst - rInput = moose.Reac( compt.path + '/rInput' ) - moose.connect( rInput, 'sub', Ca, 'reac' ) - moose.connect( rInput, 'prd', Ca_input, 'reac' ) - rInput.Kf = 100 # 1/sec - rInput.Kb = 100 # 1/sec - else: - Ca_sink = moose.BufPool( compt.path + '/Ca_sink' ) - Ca_sink.concInit = 0.08*1e-3 - rSink = moose.Reac( compt.path + '/rSink' ) - moose.connect( rSink, 'sub', Ca, 'reac' ) - moose.connect( rSink, 'prd', Ca_sink, 'reac' ) - rSink.Kf = 10 # 1/sec - rSink.Kb = 10 # 1/sec - -def main(): - """ - This example illustrates and tests diffusion embedded in - the branching pseudo-1-dimensional geometry of a neuron. - An input pattern of Ca stimulus is applied in a periodic manner both - on the dendrite and on the PSDs of the 13 spines. The Ca levels in - each of the dend, the spine head, and the spine PSD are monitored. - Since the same molecule name is used for Ca in the three compartments, - these are automagially connected up for diffusion. The simulation - shows the outcome of this diffusion. - This example uses an external electrical model file with basal - dendrite and three branches on - the apical dendrite. One of those branches has the 13 spines. - The model is set up to run using the Ksolve for integration and the - Dsolve for handling diffusion. - The timesteps here are not the defaults. It turns out that the - chem reactions and diffusion in this example are sufficiently fast - that the chemDt has to be smaller than default. Note that this example - uses rates quite close to those used in production models. - The display has four parts: - - a. animated line plot of concentration against main compartment#. - b. animated line plot of concentration against spine compartment#. - c. animated line plot of concentration against psd compartment#. - d. time-series plot that appears after the simulation has - ended. - - """ - - makeModel() - plotlist = makeDisplay() - - # Schedule the whole lot - autoscheduling already does this. - for i in range( 11, 17 ): - moose.setClock( i, chemdt ) # for the chem objects - moose.setClock( 10, diffdt ) # for the diffusion - moose.setClock( 18, plotdt ) # for the output tables. - ''' - ''' - moose.reinit() - for i in numpy.arange( 0, runtime, animationdt ): - moose.start( animationdt ) - plotlist[10].set_text( "time = %d" % i ) - updateDisplay( plotlist ) - - finalizeDisplay( plotlist, plotdt ) - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/dotp.p b/examples/snippets/dotp.p deleted file mode 100644 index 2b53508..0000000 --- a/examples/snippets/dotp.p +++ /dev/null @@ -1,100 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -/* NOTE: The format of the cell descriptor files does not allow for - continuation to another line. The following long line lists the - soma channels with their "density" parameters. - - Ca_conc -17.402e12 - Not really a channel, but a "Ca_concen" object. Normally, the B - field is set to "dens"/compt_volume (m^3), but the negative sign - causes the absolute value to be used with no scaling by volume. - Na 300 - Ca 40 - K_DR 150 - K_AHP 8 - K_C 100 - K_A 50 -*/ - -basal_3 none 0 220 0 3.84 Na 200 K 50 -basal_5 . 0 220 0 3.84 Na 200 K 50 -basal_6 . 0 220 0 3.84 Na 200 K 50 -basal_8 . 0 110 0 3.84 Na 200 K 50 - -soma basal_8 0 125 0 8.46 Na 2500 K 600 - - -apical_10 soma 0 120 0 4.0 Na 250 K 100 -apical_11 apical_10 0 120 0 3 Na 150 K 100 -apical_12 apical_11 0 120 0 3 Na 150 K 100 -apical_13 apical_12 0 120 0 2.6 Na 100 K 100 -apical_14 apical_13 0 120 0 2.6 Na 100 K 100 -apical_15 apical_14 0 120 0 2.6 Na 100 K 100 -apical_16 apical_15 0 120 0 2.6 Na 100 K 100 -apical_17 apical_16 0 120 0 2.6 Na 100 K 100 -apical_18 apical_17 0 120 0 2.6 Na 100 K 100 -apical_19 apical_18 0 120 0 2.6 - -lat_11_1 apical_10 -60 60 0 2 Na 40 K 60 -lat_11_2 lat_11_1 -60 60 0 1.8 Na 40 K 60 -lat_11_3 lat_11_2 0 80 0 1.5 Na 40 K 60 -lat_11_4 lat_11_3 0 80 0 1.5 Na 40 K 60 - -lat_13_1 apical_12 40 40 0 1.0 Na 40 K 60 -lat_13_2 lat_13_1 40 40 0 1.0 Na 40 K 60 - -lat_14_1 lat_13_2 0 10 0 1.0 Na 40 K 60 -lat_14_2 . 0 10 0 1.0 Na 40 K 60 -lat_14_3 . 0 10 0 1.0 Na 40 K 60 -lat_14_4 . 0 10 0 1.0 Na 40 K 60 -lat_14_5 . 0 10 0 1.0 Na 40 K 60 -lat_14_6 . 0 10 0 1.0 Na 40 K 60 -lat_14_7 . 0 10 0 1.0 Na 40 K 60 -lat_14_8 . 0 10 0 1.0 Na 40 K 60 -lat_14_9 . 0 10 0 1.0 Na 40 K 60 -lat_14_10 . 0 10 0 1.0 Na 40 K 60 -lat_14_11 . 0 10 0 1.0 Na 40 K 60 -lat_14_12 . 0 10 0 1.0 Na 40 K 60 -lat_14_13 . 0 10 0 1.0 Na 40 K 60 -lat_15_1 . 0 30 0 1.0 Na 40 K 60 -lat_15_2 . 0 60 0 1.0 Na 40 K 60 - -spine_neck_14_1 lat_14_1 0.5 0 0 0.1 -spine_head_14_1 . 0.5 0 0 0.5 -spine_neck_14_2 lat_14_2 0.5 0 0 0.1 -spine_head_14_2 . 0.5 0 0 0.5 -spine_neck_14_3 lat_14_3 0.5 0 0 0.1 -spine_head_14_3 . 0.5 0 0 0.5 -spine_neck_14_4 lat_14_4 0.5 0 0 0.1 -spine_head_14_4 . 0.5 0 0 0.5 -spine_neck_14_5 lat_14_5 0.5 0 0 0.1 -spine_head_14_5 . 0.5 0 0 0.5 -spine_neck_14_6 lat_14_6 0.5 0 0 0.1 -spine_head_14_6 . 0.5 0 0 0.5 -spine_neck_14_7 lat_14_7 0.5 0 0 0.1 -spine_head_14_7 . 0.5 0 0 0.5 -spine_neck_14_8 lat_14_8 0.5 0 0 0.1 -spine_head_14_8 . 0.5 0 0 0.5 -spine_neck_14_9 lat_14_9 0.5 0 0 0.1 -spine_head_14_9 . 0.5 0 0 0.5 -spine_neck_14_10 lat_14_10 0.5 0 0 0.1 -spine_head_14_10 . 0.5 0 0 0.5 -spine_neck_14_11 lat_14_11 0.5 0 0 0.1 -spine_head_14_11 . 0.5 0 0 0.5 -spine_neck_14_12 lat_14_12 0.5 0 0 0.1 -spine_head_14_12 . 0.5 0 0 0.5 -spine_neck_14_13 lat_14_13 0.5 0 0 0.1 -spine_head_14_13 . 0.5 0 0 0.5 diff --git a/examples/snippets/fieldelement.py b/examples/snippets/fieldelement.py deleted file mode 100644 index 53835f9..0000000 --- a/examples/snippets/fieldelement.py +++ /dev/null @@ -1,151 +0,0 @@ -"""This code is under testing: checking the protocol for -FieldElements. Once that is cleaned up, this can be reused as a -demo. - ->>> import moose -on node 0, numNodes = 1, numCores = 8 -Info: Time to define moose classes:0 -Info: Time to initialize module:0.05 ->>> a = moose.IntFire('a') -Created 123 path=a numData=1 isGlobal=0 baseType=IntFire ->>> b = moose.Synapse('a/b') -Created 125 path=a/b numData=1 isGlobal=0 baseType=Synapse ->>> b.numSynapse = 10 -Traceback (most recent call last): - File "", line 1, in -AttributeError: 'moose.Synapse' object has no attribute 'numSynapse' ->>> a.numSynapse = 10 -Traceback (most recent call last): - File "", line 1, in -AttributeError: 'moose.IntFire' object has no attribute 'numSynapse' ->>> dir(a) -['__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'connect', 'ematrix', 'getDataIndex', 'getField', 'getFieldIndex', 'getFieldNames', 'getFieldType', 'getId', 'getLookupField', 'getNeighbors', 'neighbors', 'parentMsg', 'process', 'reinit', 'setDestField', 'setField', 'setLookupField', 'synapse'] ->>> a.synapse -/a.synapse ->>> a.synapse[0] -Traceback (most recent call last): - File "", line 1, in -IndexError: moose.ElementField.getItem: index out of bounds. ->>> a.synapse.num = 10 ->>> a.synapse[0] - ->>> a.synapse[1] - ->>> - ----------------------- -Subha, Tue Jan 7 11:58:10 IST 2014 - -Documentation/discussion on accessing synapses (ElementField): - -A `synapse` is an ElementField of an IntFire element. The following -example is taken from Upi and modified to reflect the current API:: - - network = moose.IntFire('/network', size) - network.vec.buffferTime = [delayMax * 2] * size # `vec` allows vectorized access to fields on all `element`s - - -IntFire elements have an ElementField called `synapse`. You can access -the first `synapse` element on the first IntFire element with the -following:: - - synapse = moose.element('/network/synapse') - -This is equivalent to:: - - synapse = moose.element('/network[0]/synapse[0]') - -`synapse` is just another element but by default its length is 0 -unless you set the number of elements in it either explicitly:: - - synapse.num = 10 - -or in an indirect way:: - -mid = moose.connect( network, 'spike', synapse, 'addSpike', 'Sparse' ) - -mid.setRandomConnectivity( connectionProbability, 5489 ) -network.vec.Vm = [(Vmax*random.random()) for r in range(size)] -network.vec.thresh = thresh -network.vec.refractoryPeriod = refractoryPeriod -numSynVec = network.numSynapses -numTotSym = sum( numSynVec ) -netvec = network.vec -for i in range( size ): - synvec = netvec[i].synapse.vec - synvec.weight = [ (random.random() * weightMax) for r in range( synvec.len )] - synvec.delay = [ (delayMin + random.random() * delayMax) for r in range( synvec.len )] - -moose.useClock( '/network', 'process', 0 ) -moose.setClock( 0, timestep ) -moose.setClock( 9, timestep ) -moose.reinit() -network.vec.Vm = [(Vmax*random.random()) for r in range(size)] -moose.start(runtime) -print network.vec[100].Vm, network.vec[900].Vm - -""" -import sys -import os -sys.path.append('../../python') -import moose - -# Create an IntFire vec containing 10 elements, a refers to alpha[0] -a = moose.IntFire('alpha', 10) -print 'a=', a -for i in range( 10 ): - syn = moose.SimpleSynHandler( 'alpha[' + str(i) + ']/sh' ) - moose.connect( syn, 'activationOut', a.vec[i], 'activation' ) - -syn = moose.SimpleSynHandler( 'alpha/sh', 10 ) -moose.connect( syn, 'activationOut', a, 'activation', 'OneToOne' ) -############################### -# FieldElement identity -############################### -x = syn.synapse # x is an ElementField alpha[0].synapse -print 'x=',x -print 'x.num=', x.num # Initially there are no synapses, so this will be 0 -syn.synapse.num = 3 # We set number of field elements to 3 -print 'x.num=', x.num # x refers to a.synapse, so this should be 3 -b = moose.element('alpha[0]/sh/synapse[1]') # We access x[1] -print 'b=',b -print 'x[1]=', x[1] -print 'b==x[1]?', b == x[1] - -############################### -# Check fieldIndex and dataId -############################### -print 'syn.synapse[0]=', syn.synapse[0] -print 'syn.synapse[1]=', syn.synapse[1] # The fieldIndex should change, not dataId - -######################### -# setVec call example -######################### -print 'alpha[0].synapse.delay=', x.delay -x.delay = [1.0, 2.0, 3.0] # This sets `delay` field in all elements via setVec call -print 'alpha[0].synapse.delay=', x.delay -x.delay = [1.141592] * len(x) # This is a Pythonic way of replicating the values in a list - ensures same length -print 'alpha[0].synapse.delay=', x.delay - -##################################################### -# Play a little more with ObjId, FieldElement, Id -##################################################### -print 'Length of alpha[1]/synapse=', len(moose.element('/alpha[1]/sh').synapse) -c = moose.element('alpha[1]/sh/synapse[2]') # This should throw an error - alpha[1] does not have 3 synapses. -print 'b=', b, 'numData=', b.numData -print 'c=', c, 'numData=', c.numData -try: - print 'len(c)=', len(c) -except TypeError, e: - print e -d = moose.element('/alpha[1]/sh') -try: - print d.synapse[1] -except IndexError, e: - print e -else: - print 'Expected an IndexError. Length of synapse=', len(d.synapse) -# The fieldIndex should change, not dataId -x = moose.element(a.vec, 0, 1) -y = moose.element(a.vec, 1, 2) -print x, y diff --git a/examples/snippets/findChemSteadyState.py b/examples/snippets/findChemSteadyState.py deleted file mode 100644 index 6f928d1..0000000 --- a/examples/snippets/findChemSteadyState.py +++ /dev/null @@ -1,190 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import math -import pylab -import numpy -import moose - -def main(): - """ - This example sets up the kinetic solver and steady-state finder, on - a bistable model of a chemical system. The model is set up within the - script. - The algorithm calls the steady-state finder 50 times with different - (randomized) initial conditions, as follows: - - * Set up the random initial condition that fits the conservation laws - * Run for 2 seconds. This should not be mathematically necessary, but - for obscure numerical reasons it makes it much more likely that the - steady state solver will succeed in finding a state. - * Find the fixed point - * Print out the fixed point vector and various diagnostics. - * Run for 10 seconds. This is completely unnecessary, and is done here - just so that the resultant graph will show what kind of state has - been found. - - After it does all this, the program runs for 100 more seconds on the - last found fixed point (which turns out to be a saddle node), then - is hard-switched in the script to the first attractor basin from which - it runs for another 100 seconds till it settles there, and then - is hard-switched yet again to the second attractor and runs for 400 - seconds. - - Looking at the output you will see many features of note: - - * the first attractor (stable point) and the saddle point (unstable - fixed point) are both found quite often. But the second - attractor is found just once. - It has a very small basin of attraction. - * The values found for each of the fixed points match well with the - values found by running the system to steady-state at the end. - * There are a large number of failures to find a fixed point. These are - found and reported in the diagnostics. They show up on the plot - as cases where the 10-second runs are not flat. - - If you wanted to find fixed points in a production model, you would - not need to do the 10-second runs, and you would need to eliminate the - cases where the state-finder failed. Then you could identify the good - points and keep track of how many of each were found. - - There is no way to guarantee that all fixed points have been found - using this algorithm! If there are points in an obscure corner of state - space (as for the singleton second attractor convergence in this - example) you may have to iterate very many times to find them. - - You may wish to sample concentration space logarithmically rather than - linearly. - """ - compartment = makeModel() - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.path = "/model/compartment/##" - state = moose.SteadyState( '/model/compartment/state' ) - - moose.reinit() - state.stoich = stoich - state.showMatrices() - state.convergenceCriterion = 1e-6 - moose.seed( 111 ) # Used when generating the samples in state space - - for i in range( 0, 50 ): - getState( ksolve, state ) - - # Now display the states of the system at more length to compare. - moose.start( 100.0 ) # Run the model for 100 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - - # move most molecules over to b - b.conc = b.conc + a.conc * 0.9 - a.conc = a.conc * 0.1 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - a.conc = a.conc + b.conc * 0.99 - b.conc = b.conc * 0.01 - moose.start( 400.0 ) # Run the model for 200 seconds. - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - - quit() - -def makeModel(): - """ This function creates a bistable reaction system using explicit - MOOSE calls rather than load from a file - """ - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-15 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - enz1 = moose.Enz( '/model/compartment/b/enz1' ) - enz2 = moose.Enz( '/model/compartment/c/enz2' ) - cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) - cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) - reac = moose.Reac( '/model/compartment/reac' ) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table ( '/model/graphs/concA' ) - outputB = moose.Table ( '/model/graphs/concB' ) - outputC = moose.Table ( '/model/graphs/concC' ) - outputCplx1 = moose.Table ( '/model/graphs/concCplx1' ) - outputCplx2 = moose.Table ( '/model/graphs/concCplx2' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - moose.connect( outputC, 'requestOut', c, 'getConc' ); - moose.connect( outputCplx1, 'requestOut', cplx1, 'getConc' ); - moose.connect( outputCplx2, 'requestOut', cplx2, 'getConc' ); - - return compartment - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def getState( ksolve, state ): - """ This function finds a steady state starting from a random - initial condition that is consistent with the stoichiometry rules - and the original model concentrations. - """ - scale = 1.0 / ( 1e-15 * 6.022e23 ) - state.randomInit() # Randomize init conditions, subject to stoichiometry - moose.start( 2.0 ) # Run the model for 2 seconds. - state.settle() # This function finds the steady states. - for x in ksolve.nVec[0]: - print x * scale, - print state.nIter, state.status, state.stateType, state.nNegEigenvalues, state.nPosEigenvalues, state.solutionStatus - moose.start( 10.0 ) # Run model for 10 seconds, just for display - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/func.py b/examples/snippets/func.py deleted file mode 100644 index d5bfc7d..0000000 --- a/examples/snippets/func.py +++ /dev/null @@ -1,147 +0,0 @@ -# func.py --- -# -# Filename: func.py -# Description: -# Author: Subhasis Ray -# Maintainer: Subhasis Ray -# Created: Mon May 27 17:45:05 2013 (+0530) -# Version: -# Last-Updated: Sat Jun 1 19:07:20 2013 (+0530) -# By: subha -# Update #: 253 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Demonstrate the use of Func class""" -import numpy as np -import pylab - -import moose - -def test_func_nosim(): - """Create a Func object for computing function values without running - a simulations.""" - # func_0 demonstrates multivariable function - lib = moose.Neutral('/library') - func_0 = moose.Func('%s/func_0' % (lib.path)) - func_0.mode = 1 - num = 5 - expr = 'avg(' - for ii in range(num-1): - expr += 'x_%d, ' % (ii) - expr += 'x_%d)' % (num-1) - print 'Expression:', expr - func_0.expr = expr - for ii in range(num): - var = 'x_%d' % (ii) - print 'Setting:', var, '=', func_0.var[var] - func_0.var[var] = float(ii) - print 'Expression:', func_0.expr - print 'Variables after assignment:' - for v in func_0.vars: - print ' %s = %g' % (v, func_0.var[v]) - print 'value %g\n' % (func_0.value) - -def test_func(): - """This function creates a Func object evaluating a function of a - single variable. It both shows direct evaluation without running a - simulation and a case where the x variable comes from another - source. - - """ - model = moose.Neutral('/model') - data = moose.Neutral('/data') - - func_1 = moose.Func('%s/func_1' % (model.path)) - func_1.mode = 3 # mode = 1 : value, mode = 2 : derivative - # Expression is that for tau_m in Traub's NaF channel model - func_1.expr = 'x < -30e-3? 1.0e-3 * (0.025 + 0.14 * exp((x + 30.0e-3) / 10.0e-3)): 1.0e-3 * (0.02 + 0.145 * exp(( - x - 30.0e-3) / 10.0e-3))' - # First we display the use of Func as a standalone funculator - xarr = np.linspace(-120e-3, 40e-3, 1000) - values = [] - deriv = [] - for x in xarr: - func_1.var['x'] = x - values.append(func_1.value) - deriv.append(func_1.derivative) - pylab.plot(xarr, values, 'g-', label='f(no-sim)') - pylab.plot(xarr, np.array(deriv)/1000, 'k-.', label="1e-3 * f'(no-sim)") - - - simdt = xarr[1] - xarr[0] - input = moose.StimulusTable('%s/xtab' % (model.path)) - input.vector = xarr - input.startTime = 0.0 - input.stepPosition = xarr[0] - input.stopTime = xarr[-1] - xarr[0] - print input.startTime, input.stopTime - - moose.connect(input, 'output', func_1, 'xIn') - - x_tab = moose.Table('/data/xtab') - moose.connect(x_tab, 'requestOut', input, 'getOutputValue') - - y_tab = moose.Table('%s/y' % (data.path)) - moose.connect(y_tab, 'requestOut', func_1, 'getValue') - yprime_tab = moose.Table('%s/yprime' % (data.path)) - moose.connect(yprime_tab, 'requestOut', - func_1, 'getDerivative') - func_1.mode = 3 # This forces both f ad f' to be computed and sent out - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.setClock(3, simdt) - moose.useClock(0, '%s/##[TYPE=StimulusTable]' % (model.path), 'process') - moose.useClock(1, '%s/##[TYPE=Func]' % (model.path), 'process') - moose.useClock(2, '%s/##[TYPE=DiffAmp]' % (model.path), 'process') - moose.useClock(3, '%s/##' % (data.path), 'process') - moose.reinit() - t = xarr[-1] - xarr[0] - print 'Run for', t - moose.start(t) - y = np.asarray(y_tab.vector) - yp = np.asarray(yprime_tab.vector) - pylab.plot(x_tab.vector, y, 'r-.', label='f(x)') - pylab.plot(x_tab.vector, yp/1000, 'b--', label="1e-3 * f'(x)") - pylab.legend() - pylab.show() - -if __name__ == '__main__': - test_func_nosim() - test_func() - - -# -# func.py ends here diff --git a/examples/snippets/funcInputToPools.py b/examples/snippets/funcInputToPools.py deleted file mode 100644 index 1293985..0000000 --- a/examples/snippets/funcInputToPools.py +++ /dev/null @@ -1,123 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -""" -This example describes the special (and discouraged) use case where -functions provide input to a reaction system. Here we have two functions of -time which control the pool # and pool rate of change, respectively: - - number of molecules of a = 1 + sin(t) - rate of change of number of molecules of b = 10 * cos(t) - -In the stochastic case one must set a special flag *useClockedUpdate* -in order to achieve clock-triggered updates from the functions. This is -needed because the functions do not have reaction events to trigger them, -and even if there were reaction events they might not be frequent enough to -track the periodic updates. The use of this flag slows down the calculations, -so try to use a table to control a pool instead. - -To run in stochastic mode: - - python funcInputToPools - -To run in deterministic mode: - - python funcInputToPools false - -""" - -import math -import pylab -import numpy -import moose -import sys - -def makeModel(): - if len( sys.argv ) == 1: - useGsolve = True - else: - useGsolve = ( sys.argv[1] == 'True' ) - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-22 - # the mesh is created automatically by the compartment - moose.le( '/model/compartment' ) - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - - # create functions of time - f1 = moose.Function( '/model/compartment/f1' ) - f2 = moose.Function( '/model/compartment/f2' ) - - # connect them up for reactions - moose.connect( f1, 'valueOut', a, 'setConc' ) - moose.connect( f2, 'valueOut', b, 'increment' ) - - # Assign parameters - a.concInit = 0 - b.concInit = 1 - #f1.numVars = 1 - #f2.numVars = 1 - f1.expr = '1 + sin(t)' - f2.expr = '10 * cos(t)' - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/nA' ) - outputB = moose.Table2 ( '/model/graphs/nB' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getN' ); - moose.connect( outputB, 'requestOut', b, 'getN' ); - - # Set up the solvers - if useGsolve: - gsolve = moose.Gsolve( '/model/compartment/gsolve' ) - gsolve.useClockedUpdate = True - else: - gsolve = moose.Ksolve( '/model/compartment/gsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = gsolve - stoich.path = '/model/compartment/##' - ''' - ''' - - # We need a finer timestep than the default 0.1 seconds, - # in order to get numerical accuracy. - for i in range (10, 19 ): - moose.setClock( i, 0.1 ) # for computational objects - -def main(): - makeModel() - moose.seed() - - moose.reinit() - moose.start( 50.0 ) # Run the model for 100 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/n#' ): - #x.xplot( 'scriptKineticModel.plot', x.name ) - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/funcRateHarmonicOsc.py b/examples/snippets/funcRateHarmonicOsc.py deleted file mode 100644 index 029f49f..0000000 --- a/examples/snippets/funcRateHarmonicOsc.py +++ /dev/null @@ -1,116 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import math -import pylab -import numpy -import moose - -runtime = 120.0 -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - harmonic = moose.CubeMesh( '/model/harmonic' ) - harmonic.volume = 1e-15 - lotka = moose.CubeMesh( '/model/lotka' ) - lotka.volume = 1e-15 - - # create molecules and reactions - p = moose.Pool( '/model/harmonic/p' ) - v = moose.Pool( '/model/harmonic/v' ) - pdot = moose.Function( '/model/harmonic/p/func' ) - vdot = moose.Function( '/model/harmonic/v/func' ) - - # Parameters - offset1 = 1.0 - offset2 = 1.0 - k = 0.1 - p.nInit = offset1 - v.nInit = offset2 + 0.1 - pdot.x.num = 1 - vdot.x.num = 1 - pdot.expr = "x0 - " + str( offset1 ) - vdot.expr = "-" + str( k ) + " * (x0 - " + str( offset2 ) + ")" - - # connect them up for reactions - moose.connect( p, 'nOut', vdot.x[0], 'input' ) - moose.connect( v, 'nOut', pdot.x[0], 'input' ) - moose.connect( vdot, 'valueOut', v, 'increment' ) - moose.connect( pdot, 'valueOut', p, 'increment' ) - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - pplot = moose.Table2 ( '/model/graphs/p' ) - vplot = moose.Table2 ( '/model/graphs/v' ) - - # connect up the tables - moose.connect( pplot, 'requestOut', p, 'getN' ); - moose.connect( vplot, 'requestOut', v, 'getN' ); - -def main(): - - """ - funcRateHarmonicOsc illustrates the use of function objects to - directly define the rates of change of pool concentration. This - example shows how to set up a simple harmonic oscillator system - of differential equations using the script. In normal use one would - prefer to use SBML. - - The equations are :: - - p' = v - offset1 - v' = -k(p - offset2) - - where the rates for Pools p and v are computed using Functions. - Note the use of offsets. This is because MOOSE chemical - systems cannot have negative concentrations. - - The model is set up to run using default Exponential Euler - integration, and then using the GSL deterministic solver. - """ - makeModel() - - for i in range( 11, 18 ): - moose.setClock( i, 0.01 ) - moose.setClock( 18, 0.1 ) - moose.reinit() - moose.start( runtime ) # Run the model - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/#' ): - #x.xplot( 'scriptKineticModel.plot', x.name ) - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.suptitle( "Integration using ee" ) - pylab.legend() - pylab.figure() - - compt = moose.element( '/model/harmonic' ) - ksolve = moose.Ksolve( '/model/harmonic/ksolve' ) - stoich = moose.Stoich( '/model/harmonic/stoich' ) - stoich.compartment = compt - stoich.ksolve = ksolve - stoich.path = '/model/harmonic/##' - for i in range( 11, 18 ): - moose.setClock( i, 0.1 ) - moose.reinit() - moose.start( runtime ) # Run the model - - for x in moose.wildcardFind( '/model/graphs/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.suptitle( "Integration using gsl" ) - pylab.legend() - pylab.show() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/funcReacLotkaVolterra.py b/examples/snippets/funcReacLotkaVolterra.py deleted file mode 100644 index a192239..0000000 --- a/examples/snippets/funcReacLotkaVolterra.py +++ /dev/null @@ -1,141 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import moose - -runtime = 50.0 -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - harmonic = moose.CubeMesh( '/model/harmonic' ) - harmonic.volume = 1e-15 - lotka = moose.CubeMesh( '/model/lotka' ) - lotka.volume = 1e-15 - - # create molecules and reactions - x = moose.Pool( '/model/lotka/x' ) - y = moose.Pool( '/model/lotka/y' ) - z = moose.BufPool( '/model/lotka/z' ) # Dummy molecule. - xreac = moose.Reac( '/model/lotka/xreac' ) - yreac = moose.Reac( '/model/lotka/yreac' ) - xrate = moose.Function( '/model/lotka/xreac/func' ) - yrate = moose.Function( '/model/lotka/yreac/func' ) - - # Parameters - alpha = 1.0 - beta = 1.0 - gamma = 1.0 - delta = 1.0 - k = 1.0 - x.nInit = 2.0 - y.nInit = 1.0 - z.nInit = 0.0 - xrate.x.num = 1 - yrate.x.num = 1 - xrate.expr = "x0 * " + str( beta ) + " - " + str( alpha ) - yrate.expr = str( gamma ) + " - x0 * " + str( delta ) - xreac.Kf = k - yreac.Kf = k - xreac.Kb = 0 - yreac.Kb = 0 - - # connect them up for reactions - moose.connect( y, 'nOut', xrate.x[0], 'input' ) - moose.connect( x, 'nOut', yrate.x[0], 'input' ) - moose.connect( xrate, 'valueOut', xreac, 'setNumKf' ) - moose.connect( yrate, 'valueOut', yreac, 'setNumKf' ) - moose.connect( xreac, 'sub', x, 'reac' ) - moose.connect( xreac, 'prd', z, 'reac' ) - moose.connect( yreac, 'sub', y, 'reac' ) - moose.connect( yreac, 'prd', z, 'reac' ) - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - xplot = moose.Table2 ( '/model/graphs/x' ) - yplot = moose.Table2 ( '/model/graphs/y' ) - - # connect up the tables - moose.connect( xplot, 'requestOut', x, 'getN' ); - moose.connect( yplot, 'requestOut', y, 'getN' ); - -def main(): - """ - The funcReacLotkaVolterra example shows how to use function objects - as part of differential equation systems in the framework of the MOOSE - kinetic solvers. Here the system is set up explicitly using the - scripting, in normal use one would expect to use SBML. - - In this example we set up a Lotka-Volterra system. The equations - are readily expressed as a pair of reactions each of whose rate is - governed by a function:: - - x' = x( alpha - beta.y ) - y' = -y( gamma - delta.x ) - - This translates into two reactions:: - - x ---> z Kf = beta.y - alpha - y ---> z Kf = gamma - delta.x - - Here z is a dummy molecule whose concentration is buffered to zero. - - The model first runs using default Exponential Euler integration. - This is not particularly accurate even with a small timestep. - The model is then converted to use the deterministic Kinetic solver - Ksolve. This is accurate and faster. - Note that we cannot use the stochastic GSSA solver for this system, it - cannot handle a reaction term whose rate keeps changing. - """ - makeModel() - - for i in range( 11, 18 ): - moose.setClock( i, 0.001 ) - moose.setClock( 18, 0.1 ) - moose.reinit() - moose.start( runtime ) # Run the model - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/#' ): - #x.xplot( 'scriptKineticModel.plot', x.name ) - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.ylim( 0, 2.5 ) - pylab.title( "Exponential Euler solution. Note slight error buildup" ) - pylab.legend() - - - pylab.figure() - compt = moose.element( '/model/lotka' ) - ksolve = moose.Ksolve( '/model/lotka/ksolve' ) - stoich = moose.Stoich( '/model/lotka/stoich' ) - stoich.compartment = compt - stoich.ksolve = ksolve - stoich.path = '/model/lotka/##' - moose.reinit() - moose.start( runtime ) # Run the model - - for i in range( 11, 18 ): - moose.setClock( i, 0.1 ) - for x in moose.wildcardFind( '/model/graphs/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.ylim( 0, 2.5 ) - pylab.title( "Runge-Kutta solution." ) - pylab.legend() - pylab.show() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/function.py b/examples/snippets/function.py deleted file mode 100644 index c0727f1..0000000 --- a/examples/snippets/function.py +++ /dev/null @@ -1,195 +0,0 @@ -# function.py --- -# -# Filename: function.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Tue Sep 9 17:59:50 2014 (+0530) -# Version: -# Last-Updated: Sun Dec 20 00:02:50 2015 (-0500) -# By: subha -# Update #: 4 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import numpy as np -import sys -import matplotlib.pyplot as plt - -import moose - -simtime = 1.0 - -def example(): - """Function objects can be used to evaluate expressions with arbitrary - number of variables and constants. We can assign expression of the - form:: - - f(c0, c1, ..., cM, x0, x1, ..., xN, y0,..., yP ) - - where `ci`'s are constants and `xi`'s and `yi`'s are variables. - - The constants must be defined before setting the expression and - variables are connected via messages. The constants can have any - name, but the variable names must be of the form x{i} or y{i} - where i is increasing integer starting from 0. - - The `xi`'s are field elements and you have to set their number - first (function.x.num = N). Then you can connect any source field - sending out double to the 'input' destination field of the - `x[i]`. - - The `yi`'s are useful when the required variable is a value field - and is not available as a source field. In that case you connect - the `requestOut` source field of the function element to the - `get{Field}` destination field on the target element. The `yi`'s - are automatically added on connecting. Thus, if you call:: - - moose.connect(function, 'requestOut', a, 'getSomeField') - moose.connect(function, 'requestOut', b, 'getSomeField') - - then ``a.someField`` will be assigned to ``y0`` and - ``b.someField`` will be assigned to ``y1``. - - In this example we evaluate the expression: ``z = c0 * exp(c1 * - x0) * cos(y0)`` - - with x0 ranging from -1 to +1 and y0 ranging from -pi to - +pi. These values are stored in two stimulus tables called xtab - and ytab respectively, so that at each timestep the next values of - x0 and y0 are assigned to the function. - - Along with the value of the expression itself we also compute its - derivative with respect to y0 and its derivative with respect to - time (rate). The former uses a five-point stencil for the - numerical differentiation and has a glitch at y=0. The latter uses - backward difference divided by dt. - - Unlike Func class, the number of variables and constants are - unlimited in Function and you can set all the variables via - messages. - - """ - demo = moose.Neutral('/model') - function = moose.Function('/model/function') - function.c['c0'] = 1.0 - function.c['c1'] = 2.0 - function.x.num = 1 - function.expr = 'c0 * exp(c1*x0) * cos(y0) + sin(t)' - # mode 0 - evaluate function value, derivative and rate - # mode 1 - just evaluate function value, - # mode 2 - evaluate derivative, - # mode 3 - evaluate rate - function.mode = 0 - function.independent = 'y0' - nsteps = 1000 - xarr = np.linspace(0.0, 1.0, nsteps) - # Stimulus tables allow you to store sequences of numbers which - # are delivered via the 'output' message at each time step. This - # is a placeholder and in real scenario you will be using any - # sourceFinfo that sends out a double value. - input_x = moose.StimulusTable('/xtab') - input_x.vector = xarr - input_x.startTime = 0.0 - input_x.stepPosition = xarr[0] - input_x.stopTime = simtime - moose.connect(input_x, 'output', function.x[0], 'input') - - yarr = np.linspace(-np.pi, np.pi, nsteps) - input_y = moose.StimulusTable('/ytab') - input_y.vector = yarr - input_y.startTime = 0.0 - input_y.stepPosition = yarr[0] - input_y.stopTime = simtime - moose.connect(function, 'requestOut', input_y, 'getOutputValue') - - # data recording - result = moose.Table('/ztab') - moose.connect(result, 'requestOut', function, 'getValue') - derivative = moose.Table('/zprime') - moose.connect(derivative, 'requestOut', function, 'getDerivative') - rate = moose.Table('/dz_by_dt') - moose.connect(rate, 'requestOut', function, 'getRate') - x_rec = moose.Table('/xrec') - moose.connect(x_rec, 'requestOut', input_x, 'getOutputValue') - y_rec = moose.Table('/yrec') - moose.connect(y_rec, 'requestOut', input_y, 'getOutputValue') - - dt = simtime/nsteps - for ii in range(32): - moose.setClock(ii, dt) - moose.reinit() - moose.start(simtime) - - # Uncomment the following lines and the import matplotlib.pyplot as plt on top - # of this file to display the plot. - plt.subplot(3,1,1) - plt.plot(x_rec.vector, result.vector, 'r-', label='z = {}'.format(function.expr)) - z = function.c['c0'] * np.exp(function.c['c1'] * xarr) * np.cos(yarr) + np.sin(np.arange(len(xarr)) * dt) - plt.plot(xarr, z, 'b--', label='numpy computed') - plt.xlabel('x') - plt.ylabel('z') - plt.legend() - - plt.subplot(3,1,2) - plt.plot(y_rec.vector, derivative.vector, 'r-', label='dz/dy0') - # derivatives computed by putting x values in the analytical formula - dzdy = function.c['c0'] * np.exp(function.c['c1'] * xarr) * (- np.sin(yarr)) - plt.plot(yarr, dzdy, 'b--', label='numpy computed') - plt.xlabel('y') - plt.ylabel('dz/dy') - plt.legend() - - plt.subplot(3,1,3) - # *** BEWARE *** The first two entries are spurious. Entry 0 is - # *** from reinit sending out the defaults. Entry 2 is because - # *** there is no lastValue for computing real forward difference. - plt.plot(np.arange(2, len(rate.vector), 1) * dt, rate.vector[2:], 'r-', label='dz/dt') - dzdt = np.diff(z)/dt - plt.plot(np.arange(0, len(dzdt), 1.0) * dt, dzdt, 'b--', label='numpy computed') - plt.xlabel('t') - plt.ylabel('dz/dt') - plt.legend() - plt.tight_layout() - plt.show() - -if __name__ == '__main__': - example() - - - -# -# function.py ends here diff --git a/examples/snippets/gapjunction.py b/examples/snippets/gapjunction.py deleted file mode 100644 index 11a7c27..0000000 --- a/examples/snippets/gapjunction.py +++ /dev/null @@ -1,107 +0,0 @@ -# gapjunction.py --- -# -# Filename: gapjunction.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Tue Jul 2 14:28:35 2013 (+0530) -# Version: -# Last-Updated: Tue Jul 23 21:28:45 2013 (+0530) -# By: subha -# Update #: 57 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Demo for gap junction""" - -import moose -from moose import utils -import pylab - -simtime = 100e-3 -simdt = 1e-6 - -def make_compartment(path): - comp = moose.Compartment(path) - comp.Em = -70e-3 - comp.initVm = -70e-3 - comp.Cm = 1e-12 - comp.Rm = 1e9 - return comp - -def gapjunction_demo(): - model = moose.Neutral('model') - data = moose.Neutral('data') - comps = [] - comp1 = make_compartment('%s/comp1' % (model.path)) - comp2 = make_compartment('%s/comp2' % (model.path)) - pulse = moose.PulseGen('%s/pulse' % (model.path)) - pulse.level[0] = 1e-9 - pulse.delay[0] = 50e-3 - pulse.width[0] = 20e-3 - pulse.delay[1] = 1e9 - moose.connect(pulse, 'output', comp1, 'injectMsg') - gj = moose.GapJunction('%s/gj' % (model.path)) - gj.Gk = 1e-6 - moose.connect(gj, 'channel1', comp1, 'channel') - moose.connect(gj, 'channel2', comp2, 'channel') - vm1_tab = moose.Table('%s/Vm1' % (data.path)) - moose.connect(vm1_tab, 'requestOut', comp1, 'getVm') - vm2_tab = moose.Table('%s/Vm2' % (data.path)) - moose.connect(vm2_tab, 'requestOut', comp2, 'getVm') - pulse_tab = moose.Table('%s/inject' % (data.path)) - moose.connect(pulse_tab, 'requestOut', pulse, 'getOutputValue') - utils.setDefaultDt(elecdt=simdt, plotdt2=simdt) - utils.assignDefaultTicks() - utils.stepRun(simtime, 10000*simdt) - # print len(vm1_tab.vector), len(vm2_tab.vector), len(pulse_tab.vector) - # moose.showmsg(comp1) - # moose.showmsg(comp2) - # moose.showmsg(pulse) - t = pylab.linspace(0, simtime, len(vm1_tab.vector)) - pylab.plot(t, vm1_tab.vector*1000, label='Vm1 (mV)') - pylab.plot(t, vm2_tab.vector*1000, label='Vm2 (mV)') - pylab.plot(t, pulse_tab.vector*1e9, label='inject (nA)') - pylab.legend() - pylab.show() - - -if __name__ == '__main__': - gapjunction_demo() - - - -# -# gapjunction.py ends here diff --git a/examples/snippets/gssaCylinderDiffusion.py b/examples/snippets/gssaCylinderDiffusion.py deleted file mode 100644 index 57033a4..0000000 --- a/examples/snippets/gssaCylinderDiffusion.py +++ /dev/null @@ -1,199 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import sys -sys.path.append('../../python') -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -import os -import signal -PID = os.getpid() - -def doNothing( *args ): - pass - -signal.signal( signal.SIGUSR1, doNothing ) - -concA = 0.005 # millimolar -def makeModel(): - """ - This example illustrates how to set up a diffusion/transport model with - a simple reaction-diffusion system in a tapering cylinder: - - | Molecule **a** diffuses with diffConst of 10e-12 m^2/s. - | Molecule **b** diffuses with diffConst of 5e-12 m^2/s. - | Molecule **b** also undergoes motor transport with a rate of 10e-6 m/s - | Thus it 'piles up' at the end of the cylinder. - | Molecule **c** does not move: diffConst = 0.0 - | Molecule **d** does not move: diffConst = 10.0e-12 but it is buffered. - | Because it is buffered, it is treated as non-diffusing. - - All molecules other than **d** start out only in the leftmost (first) - voxel, with a concentration of 1 mM. **d** is present throughout - at 0.2 mM, except in the last voxel, where it is at 1.0 mM. - - The cylinder has a starting radius of 2 microns, and end radius of - 1 micron. So when the molecule undergoing motor transport gets to the - narrower end, its concentration goes up. - - There is a little reaction in all compartments: ``b + d <===> c`` - - As there is a high concentration of **d** in the last compartment, - when the molecule **b** reaches the end of the cylinder, the reaction - produces lots of **c**. - - Note that molecule **a** does not participate in this reaction. - - The concentrations of all molecules are displayed in an animation. - """ - # create container for model - r0 = 2e-6 # m - r1 = 1e-6 # m - num = 100 - diffLength = 1e-6 # m - len = num * diffLength # m - diffConst = 10e-12 - #motorRate = 1e-6 - #diffConst = 0 - motorRate = 0 - - model = moose.Neutral( 'model' ) - compartment = moose.CylMesh( '/model/compartment' ) - compartment.r0 = r0 - compartment.r1 = r1 - compartment.x0 = 0 - compartment.x1 = len - compartment.diffLength = diffLength - - assert( compartment.numDiffCompts == num ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - d = moose.Pool( '/model/compartment/d' ) - r1 = moose.Reac( '/model/compartment/r1' ) - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'sub', d, 'reac' ) - moose.connect( r1, 'prd', c, 'reac' ) - r1.Kf = 1000.0 # 1/(mM.sec) - r1.Kb = 1 # 1/sec - - # Assign parameters - a.diffConst = diffConst - b.diffConst = diffConst / 2.0 - b.motorConst = motorRate - c.diffConst = diffConst - d.diffConst = diffConst - - - # Make solvers - ksolve = moose.Gsolve( '/model/compartment/ksolve' ) - dsolve = moose.Dsolve( '/model/compartment/dsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.dsolve = dsolve - os.kill( PID, signal.SIGUSR1 ) - stoich.path = "/model/compartment/##" - - print dsolve.numPools - assert( dsolve.numPools == 4 ) - a.vec.concInit = concA - b.vec.concInit = concA / 5.0 - c.vec.concInit = concA - d.vec.concInit = concA / 5.0 - for i in range( num ): - d.vec[i].concInit = concA * 2 * i / num - #d.vec[num/2:num].concInit = concA * 1.5 - -def makePlots(): - plt.ion() - fig = plt.figure( figsize=(12,6) ) - dynamic = fig.add_subplot( 111 ) - - a = moose.vec( '/model/compartment/a' ) - b = moose.vec( '/model/compartment/b' ) - c = moose.vec( '/model/compartment/c' ) - d = moose.vec( '/model/compartment/d' ) - pos = numpy.arange( 0, a.conc.size, 1 ) - aline, = dynamic.plot( pos, a.conc, label='a' ) - bline, = dynamic.plot( pos, b.conc, label='b' ) - cline, = dynamic.plot( pos, c.conc, label='c' ) - dline, = dynamic.plot( pos, d.conc, label='d' ) - - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Cylinder voxel #' ) - plt.legend() - timelabel = plt.text( 10, concA * 3, 'time = 0.0' ) - #fig.canvas.draw() - plt.ylim( 0, 4.0 * concA ) - return( fig, dynamic, timelabel, aline, bline, cline, dline ) - -def updatePlots( plotlist, time ): - a = moose.vec( '/model/compartment/a' ) - b = moose.vec( '/model/compartment/b' ) - c = moose.vec( '/model/compartment/c' ) - d = moose.vec( '/model/compartment/d' ) - - plotlist[2].set_text( "time = %g" % time ) - plotlist[3].set_ydata( a.conc ) - plotlist[4].set_ydata( b.conc ) - plotlist[5].set_ydata( c.conc ) - plotlist[6].set_ydata( d.conc ) - plotlist[0].canvas.draw() - - -def main(): - runtime = 20.0 - diffdt = 0.005 - plotdt = 0.1 - makeModel() - # Set up clocks. The dsolver to know before assigning stoich - moose.setClock( 10, diffdt ) # 10 is the standard clock for Dsolve. - moose.setClock( 16, plotdt ) # 16 is the standard clock for Ksolve. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - d = moose.element( '/model/compartment/d' ) - - moose.reinit() - atot = sum( a.vec.n ) - btot = sum( b.vec.n ) - ctot = sum( c.vec.n ) - dtot = sum( d.vec.n ) - plotlist = makePlots() - for t in numpy.arange( 0, runtime, plotdt ): - moose.start( plotdt ) - updatePlots( plotlist, t ) - # moose.start( runtime ) # Run the model - - atot2 = sum( a.vec.n ) - btot2 = sum( b.vec.n ) - ctot2 = sum( c.vec.n ) - dtot2 = sum( d.vec.n ) - - print 'Ratio of initial to final total numbers of of a, b, c, d = ' - print atot2/atot, btot2/btot, ctot2/ctot, dtot2/dtot - print 'Initial to final (b+c)=', (btot2 + ctot2) / (btot + ctot ) - print "\nHit 'enter' to exit" - #raw_input() - - quit() - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/gssaRDspiny.py b/examples/snippets/gssaRDspiny.py deleted file mode 100644 index 46beebc..0000000 --- a/examples/snippets/gssaRDspiny.py +++ /dev/null @@ -1,296 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -#diffConst = 10e-12 # m^2/sec -diffConst = 0.0 -def makeModel(): - model = moose.Neutral( '/model' ) - # Make neuronal model. It has no channels, just for geometry - cell = moose.loadModel( './spinyNeuron.p', '/model/cell', 'Neutral' ) - # We don't want the cell to do any calculations. Disable everything. - for i in moose.wildcardFind( '/model/cell/##' ): - i.tick = -1 - - # create container for model - model = moose.element( '/model' ) - chem = moose.Neutral( '/model/chem' ) - # The naming of the compartments is dicated by the places that the - # chem model expects to be loaded. - compt0 = moose.NeuroMesh( '/model/chem/compt0' ) - compt0.separateSpines = 1 - compt0.geometryPolicy = 'cylinder' - compt1 = moose.SpineMesh( '/model/chem/compt1' ) - moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) - compt2 = moose.PsdMesh( '/model/chem/compt2' ) - moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) - - #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) - makeChemModel( compt0 ) # Populate all 3 compts with the chem system. - makeChemModel( compt1 ) - makeChemModel( compt2 ) - - compt0.diffLength = 2e-6 # This will be over 100 compartments. - # This is the magic command that configures the diffusion compartments. - compt0.subTreePath = cell.path + "/##" - moose.showfields( compt0 ) - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) - ksolve1 = moose.Gsolve( '/model/chem/compt1/ksolve' ) - ksolve2 = moose.Gsolve( '/model/chem/compt2/ksolve' ) - #dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) - #dsolve1 = moose.Dsolve( '/model/chem/compt1/dsolve' ) - #dsolve2 = moose.Dsolve( '/model/chem/compt2/dsolve' ) - stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) - stoich1 = moose.Stoich( '/model/chem/compt1/stoich' ) - stoich2 = moose.Stoich( '/model/chem/compt2/stoich' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - #stoich0.dsolve = dsolve0 - #stoich1.dsolve = dsolve1 - #stoich2.dsolve = dsolve2 - stoich0.path = '/model/chem/compt0/#' - stoich1.path = '/model/chem/compt1/#' - stoich2.path = '/model/chem/compt2/#' - assert( stoich0.numVarPools == 3 ) - assert( stoich0.numProxyPools == 0 ) - assert( stoich0.numRates == 4 ) - assert( stoich1.numVarPools == 3 ) - assert( stoich1.numProxyPools == 0 ) - #assert( stoich1.numRates == 4 ) - assert( stoich2.numVarPools == 3 ) - assert( stoich2.numProxyPools == 0 ) - #assert( stoich2.numRates == 4 ) - #dsolve0.buildNeuroMeshJunctions( dsolve1, dsolve2 ) - stoich0.buildXreacs( stoich1 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - moose.element( '/model/chem/compt2/a[0]' ).concInit *= 1.5 - - # Create the output tables - num = compt0.numDiffCompts - 1 - graphs = moose.Neutral( '/model/graphs' ) - makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) - makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) - makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) - makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) - makeTab( 'a_spine', '/model/chem/compt1/a[5]' ) - makeTab( 'b_spine', '/model/chem/compt1/b[5]' ) - makeTab( 'a_psd', '/model/chem/compt2/a[5]' ) - makeTab( 'b_psd', '/model/chem/compt2/b[5]' ) - -def makeTab( plotname, molpath ): - tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table - # connect up the tables - moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); - - -def makeDisplay(): - plt.ion() - fig = plt.figure( figsize=(10,12) ) - - dend = fig.add_subplot( 411 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Dend voxel #' ) - plt.legend() - timeLabel = plt.text(200, 0.5, 'time = 0') - - spine = fig.add_subplot( 412 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Spine voxel #' ) - plt.legend() - - psd = fig.add_subplot( 413 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'PSD voxel #' ) - plt.legend() - - timeSeries = fig.add_subplot( 414 ) - timeSeries.set_ylim( 0, 0.6 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - plt.legend() - - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - line1, = dend.plot( range( len( a ) ), a.conc, label='a' ) - line2, = dend.plot( range( len( b ) ), b.conc, label='b' ) - dend.set_ylim( 0, 0.6 ) - - a = moose.vec( '/model/chem/compt1/a' ) - b = moose.vec( '/model/chem/compt1/b' ) - line3, = spine.plot( range( len( a ) ), a.conc, label='a' ) - line4, = spine.plot( range( len( b ) ), b.conc, label='b' ) - spine.set_ylim( 0, 0.6 ) - - a = moose.vec( '/model/chem/compt2/a' ) - b = moose.vec( '/model/chem/compt2/b' ) - line5, = psd.plot( range( len( a ) ), a.conc, label='a' ) - line6, = psd.plot( range( len( b ) ), b.conc, label='b' ) - psd.set_ylim( 0, 0.6 ) - - fig.canvas.draw() - return ( timeSeries, dend, spine, psd, fig, line1, line2, line3, line4, line5, line6, timeLabel ) - -def updateDisplay( plotlist ): - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - plotlist[5].set_ydata( a.conc ) - plotlist[6].set_ydata( b.conc ) - print 'compt0:', min(a.n), max(a.n), min(b.n), max(b.n) - - a = moose.vec( '/model/chem/compt1/a' ) - b = moose.vec( '/model/chem/compt1/b' ) - plotlist[7].set_ydata( a.conc ) - plotlist[8].set_ydata( b.conc ) - print 'compt1:', min(a.n), max(a.n), min(b.n), max(b.n) - - a = moose.vec( '/model/chem/compt2/a' ) - b = moose.vec( '/model/chem/compt2/b' ) - plotlist[9].set_ydata( a.conc ) - plotlist[10].set_ydata( b.conc ) - plotlist[4].canvas.draw() - print 'compt2:', min(a.n), max(a.n), min(b.n), max(b.n) - - -def finalizeDisplay( plotlist, cPlotDt ): - for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = plotlist[0].plot( pos, x.vector, label=x.name ) - plotlist[4].canvas.draw() - print( "Hit 'enter' to exit" ) - raw_input() - -def makeChemModel( compt ): - """ - This function setus up a simple oscillatory chemical system within - the script. The reaction system is:: - - s ---a---> a // s goes to a, catalyzed by a. - s ---a---> b // s goes to b, catalyzed by a. - a ---b---> s // a goes to s, catalyzed by b. - b -------> s // b is degraded irreversibly to s. - - in sum, **a** has a positive feedback onto itself and also forms **b**. - **b** has a negative feedback onto **a**. - Finally, the diffusion constant for **a** is 1/10 that of **b**. - """ - # create container for model - concA = 1 # millimolar - - # create molecules and reactions - a = moose.Pool( compt.path + '/a' ) - b = moose.Pool( compt.path + '/b' ) - s = moose.Pool( compt.path + '/s' ) - e1 = moose.MMenz( compt.path + '/e1' ) - e2 = moose.MMenz( compt.path + '/e2' ) - e3 = moose.MMenz( compt.path + '/e3' ) - r1 = moose.Reac( compt.path + '/r1' ) - - a.concInit = 0.1 - b.concInit = 0.1 - s.concInit = 1 - - moose.connect( e1, 'sub', s, 'reac' ) - moose.connect( e1, 'prd', a, 'reac' ) - moose.connect( a, 'nOut', e1, 'enzDest' ) - e1.Km = 1 - e1.kcat = 1 - - moose.connect( e2, 'sub', s, 'reac' ) - moose.connect( e2, 'prd', b, 'reac' ) - moose.connect( a, 'nOut', e2, 'enzDest' ) - e2.Km = 1 - e2.kcat = 0.5 - - moose.connect( e3, 'sub', a, 'reac' ) - moose.connect( e3, 'prd', s, 'reac' ) - moose.connect( b, 'nOut', e3, 'enzDest' ) - e3.Km = 0.1 - e3.kcat = 1 - - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'prd', s, 'reac' ) - r1.Kf = 0.3 # 1/sec - r1.Kb = 0 # 1/sec - - # Assign parameters - a.diffConst = diffConst/10 - b.diffConst = diffConst - s.diffConst = 0 - -def main(): - """ - This example illustrates how to define a kinetic model embedded in - the branching pseudo-1-dimensional geometry of a neuron. The model - oscillates in space and time due to a Turing-like reaction-diffusion - mechanism present in all compartments. For the sake of this demo, - the initial conditions are set up slightly different on the PSD - compartments, so as to break the symmetry and initiate oscillations - in the spines. - This example uses an external electrical model file with basal - dendrite and three branches on - the apical dendrite. One of those branches has a dozen or so spines. - In this example we build an identical model in each compartment, using - the makeChemModel function. One could readily define a system with - distinct reactions in each compartment. - The model is set up to run using the Ksolve for integration and the - Dsolve for handling diffusion. - The display has four parts: - - a. animated line plot of concentration against main compartment#. - b. animated line plot of concentration against spine compartment#. - c. animated line plot of concentration against psd compartment#. - d. time-series plot that appears after the simulation has - ended. The plot is for the last (rightmost) compartment. - - """ - chemdt = 0.1 # Tested various dts, this is reasonable. - diffdt = 0.01 - plotdt = 1 - animationdt = 5 - runtime = 200 - - makeModel() - plotlist = makeDisplay() - - # Schedule the whole lot - autoscheduling already does this. - ''' - for i in range( 11, 17 ): - moose.setClock( i, chemdt ) # for the chem objects - moose.setClock( 10, diffdt ) # for the diffusion - moose.setClock( 18, plotdt ) # for the output tables. - ''' - moose.reinit() - for i in range( 0, runtime, animationdt ): - moose.start( animationdt ) - plotlist[11].set_text( "time = %d" % i ) - updateDisplay( plotlist ) - - finalizeDisplay( plotlist, plotdt ) - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/h10.CNG.swc b/examples/snippets/h10.CNG.swc deleted file mode 100644 index 554dbe2..0000000 --- a/examples/snippets/h10.CNG.swc +++ /dev/null @@ -1,226 +0,0 @@ -# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. -# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. -# -#---------------------------------------------------------------------- -# This file was obtained using ban2swc.pl on file h10.txt -# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 -#---------------------------------------------------------------------- -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 0. 23. 0. 3.35 -1 - 2 1 0. 18. 0. 2.5 1 - 3 1 0. 0. 0. 1.058 2 - 4 3 -4.157 -2.778 0. 0.6 3 - 5 3 -5.925 -3.510 -4.62 0.55 4 - 6 3 -15.47 -7.464 -29.560 0.4 5 - 7 3 -23.89 -9.139 -72.72 0.4 6 - 8 3 -24.39 -13.43 -83.51 0.350 6 - 9 3 -9.814 -5.121 -14.780 0.5 5 - 10 3 -15.81 -6.313 -23.93 0.5 9 - 11 3 -65.94 -16.29 -100.4 0.4 10 - 12 3 -54.5 -14.01 -82.960 0.4 10 - 13 3 -17.2 -10.06 -28.09 0.4 9 - 14 3 -78.64 -51.11 -138.70 0.4 13 - 15 3 -41.69 -26.42 -72.15 0.350 13 - 16 3 -10.11 -8.731 -20.330 0.45 4 - 17 3 -14.44 -13.06 -35.11 0.350 16 - 18 3 -26.61 -21.19 -108.7 0.3 17 - 19 3 -24.2 -27.66 -123.4 0.3 17 - 20 3 -32.3 -30.92 -96.08 0.350 16 - 21 3 -45.7 -39.87 -120.2 0.3 20 - 22 3 -56.99 -67.88 -162.60 0.350 20 - 23 3 -8.889 -13.3 0. 0.65 3 - 24 3 -11.39 -15.8 -3.54 0.55 23 - 25 3 -19.39 -23.8 -14.85 0.5 24 - 26 3 -21.7 -25.35 -19.01 0.45 25 - 27 3 -33.25 -33.06 -39.79 0.4 26 - 28 3 -64.36 -45.95 -121.10 0.350 27 - 29 3 -53.54 -53.36 -109.10 0.350 27 - 30 3 -26.32 -28.43 -27.32 0.4 26 - 31 3 -68.78 -46.02 -73.28 0.3 30 - 32 3 -71.820 -73.93 -91.67 0.350 30 - 33 3 -59.82 -84.320 -123.80 0.350 25 - 34 3 -84.52 -121.30 -190.3 0.25 33 - 35 3 -34.39 -38.80 -36.06 0.350 24 - 36 3 -96.61 -80.38 -86.06 0.3 35 - 37 3 -93.98 -128. -107.7 0.3 35 - 38 3 -15.65 -29.64 -17.68 0.5 23 - 39 3 -17.01 -32.9 -21.21 0.5 38 - 40 3 -21.95 -40.29 -34.52 0.4 39 - 41 3 -50.03 -82.33 -110.2 0.3 40 - 42 3 -49.730 -81.87 -109.30 0.350 40 - 43 3 -22.75 -61.78 -65.28 0.3 39 - 44 3 -37.30 -81.9 -74.25 0.3 38 - 45 3 -2.146 -10.790 0. 0.75 3 - 46 3 -24.77 -65.42 -24.490 0.350 45 - 47 3 -54.47 -137.1 -56.64 0.350 46 - 48 3 -55.18 -138.8 -57.4 0.350 46 - 49 3 -2.146 -20.95 -4.21 0.6 45 - 50 3 -2.146 -35.730 -10.33 0.45 49 - 51 3 -22.75 -139.3 -80.89 0.3 50 - 52 3 29. -192.3 -117. 0.350 50 - 53 3 -2.146 -25.57 -6.12 0.55 49 - 54 3 -3.103 -30.38 -7.10 0.5 53 - 55 3 -49.410 -263.2 -54.31 0.350 54 - 56 3 -22.05 -125.60 -26.41 0.3 54 - 57 3 16.990 -121.80 -25.63 0.3 53 - 58 3 2.146 -10.790 0. 0.65 3 - 59 3 2.146 -20.79 0. 0.4 58 - 60 3 2.146 -235.8 0. 0.350 59 - 61 3 2.146 -250.8 0. 0.25 60 - 62 3 4.059 -15.41 0. 0.4 58 - 63 3 8.269 -25.57 0. 0.350 62 - 64 3 35.63 -163.10 -27.90 0.4 63 - 65 3 45.32 -81.02 -13.27 0.3 63 - 66 3 20.13 -54.21 0. 0.350 62 - 67 3 35.25 -130.20 15.41 0.3 66 - 68 3 78.98 -142.3 21.07 0.350 66 - 69 3 8.889 -13.3 0. 0.6 3 - 70 3 16.67 -32.08 8.42 0.5 69 - 71 3 24.45 -50.86 16.84 0.45 70 - 72 3 49.32 -175.9 42.2 0.350 71 - 73 3 84.38 -140.6 38.30 0.350 71 - 74 3 42.45 -141.4 78.51 0.4 70 - 75 3 48.94 -174. 100.7 0.3 74 - 76 3 16.080 -20.490 4.21 0.4 69 - 77 3 99.04 -103.5 52.81 0.3 76 - 78 3 41.550 -45.97 19.13 0.3 76 - 79 3 63.71 -109.60 64.06 0.3 78 - 80 3 75.26 -126.9 77.95 0.2 79 - 81 3 18.29 -12.22 0. 0.6 3 - 82 3 20.79 -14.72 3.54 0.55 81 - 83 3 26.29 -20.22 11.31 0.5 82 - 84 3 101.10 -132.20 101.30 0.350 83 - 85 3 97.5 -67.8 68.54 0.3 83 - 86 3 47.29 -41.22 41.01 0.25 82 - 87 3 21.56 -13.58 3.54 0.5 81 - 88 3 28.09 -16.28 10.61 0.45 87 - 89 3 122.10 -79.11 86.16 0.3 88 - 90 3 85.99 -27.8 50.050 0.3 88 - 91 3 43.12 -22.51 26.87 0.4 87 - 92 3 75.45 -44.11 85.070 0.350 91 - 93 3 97.61 -33.34 110. 0.350 91 - 94 4 0. 41. 0. 2.550 1 - 95 4 0. 127. 0. 0.3 94 - 96 4 5.932 70.820 -6.05 2.25 94 - 97 4 18.37 133.3 -18.73 1.25 96 - 98 4 26.63 153.3 -23.02 0.6 97 - 99 4 56.65 225.8 -38.63 0.3 98 - 100 4 29.63 160.5 -24.580 0.6 98 - 101 4 91.850 253.70 -24.580 0.350 100 - 102 4 63.97 333.1 -24.580 0.350 100 - 103 4 18.37 142.20 -20.48 1.25 97 - 104 4 18.37 145.1 -21.07 1.25 103 - 105 4 28.28 195. -42.12 0.45 104 - 106 4 33.69 222.10 -53.6 0.350 105 - 107 4 39.1 249.3 -65.08 0.25 106 - 108 4 17.47 149.6 -22.98 1.25 104 - 109 4 4.851 213.10 -49.77 0.5 108 - 110 4 -10.07 288.1 -100.9 0.350 109 - 111 4 15.85 157.8 -26.43 1.25 108 - 112 4 15.85 182.3 -31.3 0.5 111 - 113 4 15.85 235.3 -41.84 0.350 112 - 114 4 15.85 272.2 -57.15 0.3 113 - 115 4 15.85 195.10 -33.84 0.350 112 - 116 4 30.09 266.7 -33.84 0.3 115 - 117 4 0.2380 273.5 -33.84 0.3 115 - 118 4 11.72 167.8 -28.57 1.25 111 - 119 4 3.46 187.70 -32.87 1.25 118 - 120 4 -0.506 207.60 -41.28 1.25 119 - 121 4 -3.39 222.10 -47.410 1.25 120 - 122 4 -3.39 223.8 -48.52 1.25 121 - 123 4 -3.39 247.10 -64.070 0.45 122 - 124 4 1.439 271.40 -88.820 0.3 123 - 125 4 -16.080 310.90 -129.1 0.350 123 - 126 4 -3.39 248.70 -65.19 1.25 122 - 127 4 -3.209 249.70 -65.570 1.25 126 - 128 4 1.297 272.3 -75.14 0.5 127 - 129 4 12. 326.1 -111.80 0.350 128 - 130 4 -0.506 263.2 -71.31 1.25 127 - 131 4 0.2450 265.1 -71.7 0.6 130 - 132 4 3.623 273.2 -73.45 0.55 131 - 133 4 46.230 337. -105.2 0.3 132 - 134 4 22.55 368.40 -113.60 0.350 132 - 135 4 19.01 310.40 -81.45 0.45 131 - 136 4 42.74 367.6 -81.45 0.350 135 - 137 4 -0.506 280.90 -74.820 1.25 130 - 138 4 -0.506 284.8 -75.60 0.850 137 - 139 4 14.450 360. -107.4 0.4 138 - 140 4 18.06 378.1 -115. 0.3 139 - 141 4 -14.02 352.8 -104.30 0.850 138 - 142 4 -20.330 384.5 -117.7 0.70 141 - 143 4 -20.330 441.8 -141.4 0.70 142 - 144 4 -20.330 494.40 -163.20 0.45 143 - 145 4 -20.330 544.30 -196.60 0.350 144 - 146 4 -20.330 582.6 -222.10 0.3 145 - 147 4 -20.330 622.5 -248.8 0.3 145 - 148 4 -20.330 462.1 -149.8 0.6 143 - 149 4 -7.321 527.5 -163.10 0.45 148 - 150 4 -1.389 557.30 -169.20 0.350 149 - 151 4 21.51 612.6 -181.10 0.3 150 - 152 4 -1.389 630.90 -183.8 0.25 150 - 153 4 -36.6 543.9 -166.4 0.6 148 - 154 4 -46.36 592.9 -176.4 0.350 153 - 155 4 -46.36 669.6 -208.10 0.25 154 - 156 4 -74.99 662.1 -207.4 0.25 154 - 157 4 -44.44 583.30 -174.4 0.5 153 - 158 4 -44.44 665.30 -174.4 0.350 157 - 159 4 -44.44 705.30 -174.4 0.25 158 - 160 4 -87.3 686.80 -174.4 0.350 157 - 161 4 -121.7 769.90 -174.4 0.25 160 - 162 4 -32.71 414.40 -131.1 0.45 142 - 163 4 -85.74 542.4 -188.5 0.350 162 - 164 4 -120. 625.2 -225.60 0.3 163 - 165 4 -137.4 667. -244.4 0.25 164 - 166 4 -132.4 655.1 -239. 0.2 164 - 167 4 -0.506 290.7 -76.77 0.9 137 - 168 4 6.713 327. -76.77 0.8 167 - 169 4 8.664 336.8 -76.77 0.6 168 - 170 4 12.49 356. -80.67 0.5 169 - 171 4 21.48 401.3 -89.84 0.350 170 - 172 4 13.74 362.3 -76.77 0.5 168 - 173 4 23.12 385. -71.89 0.25 172 - 174 4 13.74 396.6 -69.94 0.350 172 - 175 4 -20.6 391.70 -76.77 0.350 167 - 176 4 -15.83 311.3 -91.59 0.4 126 - 177 4 -28.44 374.70 -118.4 0.3 176 - 178 4 -14.84 249.8 -67.41 0.45 121 - 179 4 -37.12 303.6 -106.30 0.350 178 - 180 4 -55.25 347.3 -138. 0.3 178 - 181 4 -3.209 221.20 -47.02 0.45 120 - 182 4 -3.209 356.6 -73.95 0.350 181 - 183 4 -31.36 289.2 -61.660 0.350 181 - 184 4 -11.94 210.70 -44.35 0.6 119 - 185 4 -36.06 246.9 -62.33 0.5 184 - 186 4 -67.18 322. -96.01 0.3 185 - 187 4 -81.14 291.90 -88.74 0.3 185 - 188 4 1.208 193.10 -34.04 0.4 118 - 189 4 -21.42 306.90 -34.04 0.3 188 - 190 4 -77.13 310.40 -34.04 0.350 188 - 191 4 18.37 165.70 -25.17 0.5 103 - 192 4 25.78 203. -25.17 0.350 191 - 193 4 56.22 356. -25.17 0.3 192 - 194 4 50.36 326.6 -25.17 0.3 192 - 195 4 16.22 176.5 -25.17 0.350 191 - 196 4 -10.31 309.90 -25.17 0.350 195 - 197 4 2.957 243.20 -25.17 0.3 195 - 198 4 -2.105 51.58 -2.15 0.350 94 - 199 4 -20.09 142. -20.48 0.350 198 - 200 4 -3.061 56.39 -3.12 0.3 198 - 201 4 -3.061 76.39 -3.12 0.3 200 - 202 4 -3.061 142.4 -3.12 0.3 201 - 203 4 -3.061 167.4 -3.12 0.3 201 - 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/snippets/hdfdemo.py b/examples/snippets/hdfdemo.py deleted file mode 100644 index f1fdc2e..0000000 --- a/examples/snippets/hdfdemo.py +++ /dev/null @@ -1,99 +0,0 @@ - -# Author: Subhasis Ray - -"""HDF5 is a self-describing file format for storing large -datasets. MOOSE has an utility :class:`HDF5DataWriter` for saving -simulations data in HDF5 files.""" - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import numpy -import moose - -def example(): - """In this example - - 1. We create a passive neuronal compartment `comp`. - - 2. We create an HDF5DataWriter object `hdfwriter` for writing to a - file ``output_hdfdemo.h5``. The `mode` of the HDF5DataWriter - is set to `2` which means if a file of the same name exists, it - will be overwritten. - - 3. The membrane voltage `Vm` and membrane current `Im` of `comp` - are connected to `hdfwriter` for recording. - - 4. We set some attributes of the datasets and the file. - - 5. We run the simulation, `hdfwriter` records and stores the `Vm` - and `Im` values over time. - - 6. We close the file by calling close() method of `hdfwriter`. - - Running this snippet creates the file ``output_hdfdemo.h5`` which - reflects the structure of the model:: - - model - | - | - c[0] - | - |___im - | - |___vm - - - `im` and `vm` are datasets containing `Im` and `Vm` field values - recorded from `comp`. - - """ - model = moose.Neutral('/model') - comp = moose.Compartment('/model/c') - hdfwriter = moose.HDF5DataWriter('h') - hdfwriter.mode = 2 # Truncate existing file - moose.connect(hdfwriter, 'requestOut', comp, 'getVm') - moose.connect(hdfwriter, 'requestOut', comp, 'getIm') - - hdfwriter.filename = 'output_hdfdemo.h5' - hdfwriter.compressor = 'zlib' - hdfwriter.compression = 7 - - # Flush data from memory to disk after accumulating every 1K entries. - hdfwriter.flushLimit = 1024 - - # We allow simple attributes of type string, double and long. - # This allows for file-level metadata/annotation. - hdfwriter.stringAttr['note'] = 'This is a test.' - - # All paths are taken relative to the root. The last token is the name - # of the attribute. - hdfwriter.doubleAttr['{}/vm/a_double_attribute'.format(comp.path)] = 3.141592 - hdfwriter.longAttr['an_int_attribute'] = 8640 - - # In addition, vectors of string, long and double can also be stored - # as attributes. - hdfwriter.stringVecAttr['stringvec'] = ['I wonder', 'why', 'I wonder'] - hdfwriter.doubleVecAttr['{}/dvec'.format(comp.path)] = [3.141592, 2.71828] - hdfwriter.longVecAttr['{}/lvec'.format(comp.path)] = [3, 14, 1592, 271828] - - vm_tab = moose.Table('Vm') - moose.connect(vm_tab, 'requestOut', comp, 'getVm') - moose.setClock(0, 1e-3) - moose.setClock(1, 1e-3) - moose.setClock(2, 1e-3) - moose.useClock(0, '/model/c', 'init') - moose.useClock(1, '/##[TYPE!=HDF5DataWriter]', 'process') - moose.useClock(2, '/##[TYPE=HDF5DataWriter]', 'process') - - moose.reinit() - comp.inject = 0.1 - moose.start(30.0) - hdfwriter.close() - vm_tab.plainPlot('hdfdemo_Vm.csv') - print 'Finished simulation. Data was saved in', hdfwriter.filename - - -if __name__ == '__main__': - example() diff --git a/examples/snippets/helloMoose.py b/examples/snippets/helloMoose.py deleted file mode 100644 index 1db5f60..0000000 --- a/examples/snippets/helloMoose.py +++ /dev/null @@ -1,39 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import moose -import pylab -import numpy - -def main(): - """ - This is the Hello MOOSE program. It shows how to get MOOSE to do - its most basic operations: to load, run, and graph a model defined - in an external model definition file. - - The loadModel function is the core of this example. It can accept - a range of file and model types, including kkit, cspace and GENESIS .p - files. It autodetects the file type and loads in the simulation. - - The wildcardFind function finds all objects matching the specified path, - in this case Table objects hoding the simulation results. They were - all defined in the model file. - """ - mfile = '../genesis/kkit_objects_example.g' - modelId = moose.loadModel( mfile, 'model', 'gsl' ) # Load it - moose.reinit() # Set initial conditions - moose.start( 20.0 ) # Run it - # Graph it - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - pylab.plot( x.vector, label=x.name ) - pylab.legend() - pylab.show() - -if __name__ == '__main__': - main() diff --git a/examples/snippets/hhcomp.py b/examples/snippets/hhcomp.py deleted file mode 100644 index 7115a57..0000000 --- a/examples/snippets/hhcomp.py +++ /dev/null @@ -1,262 +0,0 @@ -# hhcomp.py --- -# -# Filename: hhcomp.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Tue May 7 12:11:22 2013 (+0530) -# Version: -# Last-Updated: Tue May 7 19:21:43 2013 (+0530) -# By: subha -# Update #: 309 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""A compartment with hodgkin-huxley ion channels""" - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import numpy as np -import matplotlib.pyplot as plt - -import moose -from moose import utils - -EREST_ACT = -70e-3 -per_ms = 1e3 - -def create_na_chan(parent='/library', name='na', vmin=-110e-3, vmax=50e-3, vdivs=3000): - """Create a Hodhkin-Huxley Na channel under `parent`. - - vmin, vmax, vdivs: voltage range and number of divisions for gate tables - - """ - na = moose.HHChannel('%s/%s' % (parent, name)) - na.Xpower = 3 - na.Ypower = 1 - v = np.linspace(vmin, vmax, vdivs+1) - EREST_ACT - m_alpha = per_ms * (25 - v * 1e3) / (10 * (np.exp((25 - v * 1e3) / 10) - 1)) - m_beta = per_ms * 4 * np.exp(- v * 1e3/ 18) - m_gate = moose.element('%s/gateX' % (na.path)) - m_gate.min = vmin - m_gate.max = vmax - m_gate.divs = vdivs - m_gate.tableA = m_alpha - m_gate.tableB = m_alpha + m_beta - h_alpha = per_ms * 0.07 * np.exp(-v / 20e-3) - h_beta = per_ms * 1/(np.exp((30e-3 - v) / 10e-3) + 1) - h_gate = moose.element('%s/gateY' % (na.path)) - h_gate.min = vmin - h_gate.max = vmax - h_gate.divs = vdivs - h_gate.tableA = h_alpha - h_gate.tableB = h_alpha + h_beta - plt.subplot(2,1,1) - plt.plot(v, m_alpha / (m_alpha + m_beta), label='m_inf') - plt.plot(v, h_alpha / (h_alpha + h_beta), label='h_inf') - plt.legend() - plt.subplot(2,1,2) - plt.plot(v, 1/(m_alpha + m_beta), label='tau_m') - plt.plot(v, 1/(h_alpha + h_beta), label='tau_h') - plt.legend() - plt.show() - plt.close() - na.tick = -1 - return na - -def create_k_chan(parent='/library', name='k', vmin=-120e-3, vmax=40e-3, vdivs=3000): - """Create a Hodhkin-Huxley K channel under `parent`. - - vmin, vmax, vdivs: voltage range and number of divisions for gate tables - - """ - k = moose.HHChannel('%s/%s' % (parent, name)) - k.Xpower = 4 - v = np.linspace(vmin, vmax, vdivs+1) - EREST_ACT - n_alpha = per_ms * (10 - v * 1e3)/(100 * (np.exp((10 - v * 1e3)/10) - 1)) - n_beta = per_ms * 0.125 * np.exp(- v * 1e3 / 80) - n_gate = moose.element('%s/gateX' % (k.path)) - n_gate.min = vmin - n_gate.max = vmax - n_gate.divs = vdivs - n_gate.tableA = n_alpha - n_gate.tableB = n_alpha + n_beta - plt.subplot(211) - plt.plot(v, n_alpha/(n_alpha + n_beta)) - plt.subplot(212) - plt.plot(v, 1/(n_alpha + n_beta)) - plt.show() - plt.close() - k.tick = -1 - return k - -def test_channel_gates(): - """Creates prototype channels under `/library` and plots the time - constants (tau) and activation (minf, hinf, ninf) parameters for the - channel gates. - - Does not execute any simulation. - - """ - lib = moose.Neutral('/library') - na_proto = create_na_chan() - k_proto = create_k_chan() - m = moose.element('%s/gateX' % (na_proto.path)) - h = moose.element('%s/gateY' % (na_proto.path)) - n = moose.element('%s/gateX' % (k_proto.path)) - v = np.linspace(m.min,m.max, m.divs+1) - plt.subplot(211) - plt.plot(v, 1/m.tableB, label='tau_m') - plt.plot(v, 1/h.tableB, label='tau_h') - plt.plot(v, 1/n.tableB, label='tau_n') - plt.legend() - plt.subplot(212) - plt.plot(v, m.tableA/m.tableB, label='m_inf') - plt.plot(v, h.tableA/h.tableB, label='h_inf') - plt.plot(v, n.tableA/n.tableB, label='n_inf') - plt.legend() - plt.show() - -def create_passive_comp(parent='/library', name='comp', diameter=30e-6, length=0.0): - """Creates a single compartment with squid axon Em, Cm and Rm. Does - not set Ra""" - comp = moose.Compartment('%s/%s' % (parent, name)) - comp.Em = EREST_ACT + 10.613e-3 - comp.initVm = EREST_ACT - if length <= 0: - sarea = np.pi * diameter * diameter - else: - sarea = np.pi * diameter * length - # specific conductance gm = 0.3 mS/cm^2 - comp.Rm = 1 / (0.3e-3 * sarea * 1e4) - # Specific capacitance cm = 1 uF/cm^2 - comp.Cm = 1e-6 * sarea * 1e4 - return comp, sarea - -def create_hhcomp(parent='/library', name='hhcomp', diameter=-30e-6, length=0.0): - """Create a compartment with Hodgkin-Huxley type ion channels (Na and - K). - - Returns a 3-tuple: (compartment, nachannel, kchannel) - - """ - comp, sarea = create_passive_comp(parent, name, diameter, length) - if moose.exists('/library/na'): - moose.copy('/library/na', comp.path, 'na') - else: - create_na_chan(parent=comp.path) - na = moose.element('%s/na' % (comp.path)) - # Na-conductance 120 mS/cm^2 - na.Gbar = 120e-3 * sarea * 1e4 - na.Ek = 115e-3 + EREST_ACT - moose.connect(comp, 'channel', na, 'channel') - if moose.exists('/library/k'): - moose.copy('/library/k', comp.path, 'k') - else: - create_k_chan(parent=comp.path) - k = moose.element('%s/k' % (comp.path)) - # K-conductance 36 mS/cm^2 - k.Gbar = 36e-3 * sarea * 1e4 - k.Ek = -12e-3 + EREST_ACT - moose.connect(comp, 'channel', k, 'channel') - return comp, na, k - -def test_hhcomp(): - """Create and simulate a single spherical compartment with - Hodgkin-Huxley Na and K channel. - - Plots Vm, injected current, channel conductances. - - """ - model = moose.Neutral('/model') - data = moose.Neutral('/data') - comp, na, k = create_hhcomp(parent=model.path) - print comp.Rm, comp.Cm, na.Ek, na.Gbar, k.Ek, k.Gbar - pg = moose.PulseGen('%s/pg' % (model.path)) - pg.firstDelay = 20e-3 - pg.firstWidth = 40e-3 - pg.firstLevel = 1e-9 - pg.secondDelay = 1e9 - moose.connect(pg, 'output', comp, 'injectMsg') - inj = moose.Table('%s/pulse' % (data.path)) - moose.connect(inj, 'requestOut', pg, 'getOutputValue') - vm = moose.Table('%s/Vm' % (data.path)) - moose.connect(vm, 'requestOut', comp, 'getVm') - gK = moose.Table('%s/gK' % (data.path)) - moose.connect(gK, 'requestOut', k, 'getGk') - gNa = moose.Table('%s/gNa' % (data.path)) - moose.connect(gNa, 'requestOut', na, 'getGk') - simdt = 1e-6 - plotdt = 1e-4 - simtime = 100e-3 - if (1): - moose.showmsg( '/clock' ) - for i in range(8): - moose.setClock( i, simdt ) - moose.setClock( 8, plotdt ) - moose.reinit() - else: - utils.resetSim([model.path, data.path], simdt, plotdt, simmethod='ee') - moose.showmsg( '/clock' ) - moose.start(simtime) - t = np.linspace(0, simtime, len(vm.vector)) - plt.subplot(211) - plt.plot(t, vm.vector * 1e3, label='Vm (mV)') - plt.plot(t, inj.vector * 1e9, label='injected (nA)') - plt.legend() - plt.title('Vm') - plt.subplot(212) - plt.title('Conductance (uS)') - plt.plot(t, gK.vector * 1e6, label='K') - plt.plot(t, gNa.vector * 1e6, label='Na') - plt.legend() - plt.show() - plt.close() - # moose.showfield(comp) - # moose.showfield(na) - # moose.showfield(k) - - -if __name__ == '__main__': - test_channel_gates() - test_hhcomp() - - - - -# -# hhcomp.py ends here diff --git a/examples/snippets/insertSpines.py b/examples/snippets/insertSpines.py deleted file mode 100644 index 024e8aa..0000000 --- a/examples/snippets/insertSpines.py +++ /dev/null @@ -1,84 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### -# This example illustrates loading a model from an SWC file, inserting -# spines, and viewing it. - -import moogli -import moose -from matplotlib.cm import gnuplot -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -import rdesigneur as rd - -PI = 3.14159265358979 -frameRunTime = 0.0002 -runtime = 1.0 -inject = 5e-10 -simdt = 5e-5 -RM = 1.0 -RA = 1.0 -CM = 0.01 -spineSpacing = 2.0e-6 -minSpacing = 0.2e-6 -spineSize = 1.0 -spineSizeDistrib = 0.5 -spineAngle = 0 -spineAngleDistrib = 2*PI - -def main(): - app = QtGui.QApplication(sys.argv) - filename = 'barrionuevo_cell1zr.CNG.swc' - #filename = 'h10.CNG.swc' - moose.Neutral( '/library' ) - rdes = rd.rdesigneur( \ - cellProto = [[ filename, 'elec' ] ],\ - spineProto = [['makeSpineProto()', 'spine' ]] ,\ - spineDistrib = [ \ - ['spine', '#apical#', \ - 'spacing', str( spineSpacing ), \ - 'spacingDistrib', str( minSpacing ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ] \ - ) - rdes.buildModel( '/model' ) - moose.reinit() - - # Now we set up the display - compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) - compts[0].inject = inject - ecomptPath = map( lambda x : x.path, compts ) - morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") - #morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ - # [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) - morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ - gnuplot ) - - viewer = moogli.DynamicMorphologyViewerWidget(morphology) - viewer.set_background_color( 1.0, 1.0, 1.0, 1.0 ) - def callback( morphology, viewer ): - moose.start( frameRunTime ) - Vm = map( lambda x: moose.element( x ).Vm, compts ) - morphology.set_color( "group_all", Vm ) - currTime = moose.element( '/clock' ).currentTime - #print currTime, compts[0].Vm - if ( currTime < runtime ): - return True - return False - - viewer.set_callback( callback, idletime = 0 ) - viewer.showMaximized() - viewer.show() - app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/snippets/insertSpinesWithoutRdesigneur.py b/examples/snippets/insertSpinesWithoutRdesigneur.py deleted file mode 100644 index 48ae40e..0000000 --- a/examples/snippets/insertSpinesWithoutRdesigneur.py +++ /dev/null @@ -1,109 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### -# This example illustrates loading a model from an SWC file, inserting -# spines, and viewing it. - -import moogli -import moose -from PyQt4 import Qt, QtCore, QtGui -import sys -import os -sys.path.append( '../util' ) - -PI = 3.14159265358979 -frameRunTime = 0.0002 -runtime = 1.0 -inject = 5e-10 -simdt = 5e-5 -RM = 1.0 -RA = 1.0 -CM = 0.01 -spineSpacing = 2.0e-6 -minSpacing = 0.2e-6 -spineSize = 1.0 -spineSizeDistrib = 0.5 -spineAngle = 0 -spineAngleDistrib = 2*PI -filename = 'barrionuevo_cell1zr.CNG.swc' -#filename = 'h10.CNG.swc' - - - ################################################################ - # Utility function for building a compartment, used for spines. -def buildCompt( pa, name, length, dia, xoffset, RM, RA, CM ): - compt = moose.Compartment( pa.path + '/' + name ) - compt.x0 = xoffset - compt.y0 = 0 - compt.z0 = 0 - compt.x = length + xoffset - compt.y = 0 - compt.z = 0 - compt.diameter = dia - compt.length = length - xa = dia * dia * PI / 4.0 - sa = length * dia * PI - compt.Ra = length * RA / xa - compt.Rm = RM / sa - compt.Cm = CM * sa - return compt - -def makeSpineProto(): - spine = moose.Neutral( '/library/spine' ) - shaft = buildCompt( spine, 'shaft', 1e-6, 0.2e-6, 0, RM, RA, CM ) - head = buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 1e-6, RM, RA, CM ) - moose.connect( shaft, 'axial', head, 'raxial' ) - -def main(): - """ - This snippet illustrates how the Neuron class does the spine - specification, without the rdesigneur intermediate. - """ - app = QtGui.QApplication(sys.argv) - moose.Neutral( '/library' ) - makeSpineProto() - model = moose.loadModel( filename, '/model' ) - model[0].buildSegmentTree() - model[0].spineDistribution = [ \ - 'spine', '#apical#', \ - 'spacing', str( spineSpacing ), \ - 'spacingDistrib', str( minSpacing ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ), \ - '' \ - ] - moose.reinit() - - # Now we set up the display - compts = moose.wildcardFind( "/model/#[ISA=CompartmentBase]" ) - compts[0].inject = inject - ecomptPath = map( lambda x : x.path, compts ) - morphology = moogli.read_morphology_from_moose(name = "", path = "/model") - morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ - [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) - - viewer = moogli.DynamicMorphologyViewerWidget(morphology) - def callback( morphology, viewer ): - moose.start( frameRunTime ) - Vm = map( lambda x: moose.element( x ).Vm, compts ) - morphology.set_color( "group_all", Vm ) - currTime = moose.element( '/clock' ).currentTime - #print currTime, compts[0].Vm - if ( currTime < runtime ): - return True - return False - - viewer.set_callback( callback, idletime = 0 ) - viewer.showMaximized() - viewer.show() - app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/snippets/interpol.py b/examples/snippets/interpol.py deleted file mode 100644 index 61193c6..0000000 --- a/examples/snippets/interpol.py +++ /dev/null @@ -1,93 +0,0 @@ -# interpol.py --- -# -# Filename: interpol.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Jun 25 16:13:26 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Example of Interpol object.""" -__author__ = 'Subhasis Ray' - -import sys -import math -import numpy as np -from matplotlib import pyplot as plt - -sys.path.append('../../python') -import moose - -simtime = 1.0 -simdt = 0.001 -model = moose.Neutral('/model') -data = moose.Neutral('/data') -interpol = moose.Interpol('/model/sin') -vec = np.sin(np.linspace(-3.14, 3.14, 100)) -interpol.vector = vec -interpol.xmax = 3.14 -interpol.xmin = -3.14 -recorded = moose.Table('/data/output') -moose.connect(recorded, 'requestOut', interpol, 'getY') - -stimtab = moose.StimulusTable('/model/x') -stimtab.stepSize = 0.0 -# stimtab.startTime = 0.0 -# stimtab.stopTime = simtime -stimtab.vector = np.linspace(-4, 4, 1000) -print stimtab.vector -print interpol.vector -moose.connect(stimtab, 'output', interpol, 'input') - - -moose.setClock(0, simdt) -moose.useClock(0, '/data/##,/model/##', 'process') -moose.reinit() -moose.start(simtime) -plt.plot(np.linspace(0, simtime, len(recorded.vector)), recorded.vector, 'b-+', label='interpolated') -plt.plot(np.linspace(0, simtime, len(vec)), vec, 'r-+', label='original') -plt.show() - - - - - -# -# interpol.py ends here diff --git a/examples/snippets/interpol2d.py b/examples/snippets/interpol2d.py deleted file mode 100644 index 46a3041..0000000 --- a/examples/snippets/interpol2d.py +++ /dev/null @@ -1,80 +0,0 @@ -# interpol2d.py --- -# -# Filename: interpol2d.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Thu Jun 28 15:19:46 2012 (+0530) -# Version: -# Last-Updated: Thu Jun 28 17:11:42 2012 (+0530) -# By: subha -# Update #: 49 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - - -import numpy as np -import sys -sys.path.append('../../python') -import moose - - -def interpolation_demo(): - interpol = moose.Interpol2D('/interpol2D') - interpol.xmin = 0.0 - interpol.xmax = 1.0 - interpol.ymin = 0.0 - interpol.ymax = 1.0 - # Make a 50 element array with entries at equal distance from - # [0,1) and reshape it into a 10x5 matrix and assign to table. - matrix = np.linspace(0, 1.0, 50).reshape(10, 5) - print 'Setting table to' - print matrix - interpol.tableVector2D = matrix - # interpolating beyond top left corner. - # value should be - pos = (0.8, 0.3) - - print 'Interpolated value at', pos - print interpol.z[pos[0], pos[1]] - - print 'Point going out of bound on both x and y', interpol.z[1.1, 1.1] - print 'Point going out of bound on both x and y', interpol.z[0.5, 1.1] - -if __name__ == '__main__': - interpolation_demo() -# -# interpol2d.py ends here diff --git a/examples/snippets/intfire.py b/examples/snippets/intfire.py deleted file mode 100644 index 6b1e4c9..0000000 --- a/examples/snippets/intfire.py +++ /dev/null @@ -1,94 +0,0 @@ -# intfire.py --- -# -# Filename: intfire.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Thu Jun 21 16:40:25 2012 (+0530) -# Version: -# Last-Updated: Sat Jun 23 13:44:10 2012 (+0530) -# By: subha -# Update #: 35 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Code snippet to show some operations on IntFire. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import moose - -def connect_two_intfires(): - """Connect two IntFire neurons so that spike events in one gets - transmitted to synapse of the other.""" - if1 = moose.IntFire('if1') - if2 = moose.IntFire('if2') - sf1 = moose.SimpleSynHandler( 'if1/sh' ) - moose.connect( sf1, 'activationOut', if1, 'activation' ) - sf1.synapse.num = 1 - syn1 = moose.element(sf1.synapse) - # Connect the spike message of if2 to the first synapse on if1 - moose.connect(if2, 'spikeOut', syn1, 'addSpike') - -def connect_spikegen(): - """Connect a SpikeGen object to an IntFire neuron such that spike - events in spikegen get transmitted to the synapse of the IntFire - neuron.""" - if3 = moose.IntFire('if3') - sf3 = moose.SimpleSynHandler( 'if3/sh' ) - moose.connect( sf3, 'activationOut', if3, 'activation' ) - sf3.synapse.num = 1 - sg = moose.SpikeGen('sg') - syn = moose.element(sf3.synapse) - moose.connect(sg, 'spikeOut', syn, 'addSpike') - -def setup_synapse(): - """Create an intfire object and create two synapses on it.""" - if4 = moose.IntFire('if4') - sf4 = moose.SimpleSynHandler( 'if4/sh' ) - sg1 = moose.SpikeGen('sg1') - sg2 = moose.SpikeGen('sg2') - sf4.synapse.num = 2 # set synapse count to 2 - sf4.synapse[0].weight = 0.5 - sf4.synapse[0].delay = 1e-3 - sf4.synapse[1].weight = 2.0 - sf4.synapse[1].delay = 2e-3 - moose.connect(sg1, 'spikeOut', sf4.synapse[0], 'addSpike') - moose.connect(sg2, 'spikeOut', sf4.synapse[1], 'addSpike') - -if __name__ == '__main__': - connect_two_intfires() - connect_spikegen() - setup_synapse() - -# -# intfire.py ends here diff --git a/examples/snippets/ionchannel.py b/examples/snippets/ionchannel.py deleted file mode 100644 index 4be6a84..0000000 --- a/examples/snippets/ionchannel.py +++ /dev/null @@ -1,266 +0,0 @@ -# ionchannel.py --- -# -# Filename: ionchannel.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Sep 17 10:33:20 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""This demo shows how to set the parameters for a Hodgkin-Huxley type ion channel. - -Hodgkin-Huxley type ion channels are composed of one or more gates -that allow ions to cross the membrane. The gates transition between -open and closed states and this, taken over a large population of -ion channels over a patch of membrane has first order kinetics, where -the rate of change of fraction of open gates (n) is given by:: - - dn/dt = alpha(Vm) * (1 - n) - beta(Vm) * n - -where alpha and beta are rate parameters for gate opening and -closing respectively that depend on the membrane potential. -The final channel conductance is computed as:: - - Gbar * m^x * h^y ... - -where m, n are the fraction of open gates of different types and x, -y are the number of such gates in each channel. We can define the -channel by specifying the alpha and beta parameters as functions of -membrane potential and the exponents for each gate. -The number gates is commonly one or two. - -Gate opening/closing rates have the form:: - - y(x) = (A + B * x) / (C + exp((x + D) / F)) - -where x is membrane voltage and y is the rate parameter for gate -closing or opening. - - -""" - -import numpy as np -import matplotlib.pyplot as plt -import moose - -EREST_ACT = -70e-3 #: Resting membrane potential - - -#: The parameters for defining m as a function of Vm -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] - -#: Parameters for defining h gate of Na+ channel -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] - -#: K+ channel in Hodgkin-Huxley model has only one gate, n and these -#are the parameters for the same -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] - -#: We define the rate parameters, which are functions of Vm as -#: interpolation tables looked up by membrane potential. -#: Minimum x-value for the interpolation table -VMIN = -30e-3 + EREST_ACT -#: Maximum x-value for the interpolation table -VMAX = 120e-3 + EREST_ACT -#: Number of divisions in the interpolation table -VDIVS = 3000 - -def create_na_proto(): - """Create and return a Na+ channel prototype '/library/na' - - The Na+ channel conductance has the equation:: - - g = Gbar * m^3 * h - - For each gate, we use the HHChannel.setupAlpha function to set up - the interpolation table. - - """ - lib = moose.Neutral('/library') - na = moose.HHChannel('/library/na') - na.tick = -1 - #: The exponent for m gate is 3 - na.Xpower = 3 - #: channel/gateX is the m gate - #: setting Xpower to a positive number automatically creates this gate. - xGate = moose.element(na.path + '/gateX') - xGate.setupAlpha(Na_m_params + - [VDIVS, VMIN, VMAX]) - #: channel/gateY is the h gate - #: Exponent for h gate is 1 - na.Ypower = 1 - yGate = moose.element(na.path + '/gateY') - yGate.setupAlpha(Na_h_params + - [VDIVS, VMIN, VMAX]) - return na - -def create_k_proto(): - """Create and return a K+ channel prototype '/library/k'. - - The K+ channel conductance has the equation:: - - g = Gbar * n^4 - - """ - lib = moose.Neutral('/library') - k = moose.HHChannel('/library/k') - k.tick = -1 - k.Xpower = 4.0 - xGate = moose.HHGate(k.path + '/gateX') - xGate.setupAlpha(K_n_params + - [VDIVS, VMIN, VMAX]) - return k - -def create_1comp_neuron(path, number=1): - """Create single-compartmental neuron with Na+ and K+ channels. - - Parameters - ---------- - path : str - path of the compartment to be created - - number : int - number of compartments to be created. If n is greater than 1, - we create a vec with that size, each having the same property. - - Returns - ------- - comp : moose.Compartment - a compartment vec with `number` elements. - - """ - comps = moose.vec(path=path, n=number, dtype='Compartment') - diameter = 30e-6 - length = 50e-6 - sarea = np.pi * diameter * length - xarea = np.pi * diameter * diameter / 4.0 - Em = EREST_ACT + 10.613e-3 - comps.Em = Em - comps.initVm = EREST_ACT - #: CM = 1 uF/cm^2 - comps.Cm = 1e-6 * sarea * 1e4 - #: RM = 0.3 mS/cm^2 - comps.Rm = 1 / (0.3e-3 * sarea * 1e4) - container = comps[0].parent.path - #: Here we create copies of the prototype channels - nachan = moose.copy(create_na_proto(), container, 'na_{}'.format(comps.name), number) - #: Gbar_Na = 120 mS/cm^2 - nachan.Gbar = [120e-3 * sarea * 1e4] * len(nachan) - nachan.Ek = 115e-3 + EREST_ACT - moose.connect(nachan, 'channel', comps, 'channel', 'OneToOne') - kchan = moose.copy(create_k_proto(), container, 'k_{}'.format(comps.name), number) - #: Gbar_K = 36 mS/cm^2 - kchan.Gbar = 36e-3 * sarea * 1e4 - kchan.Ek = -12e-3 + EREST_ACT - moose.connect(kchan, 'channel', comps, 'channel', 'OneToOne') - return comps - -def current_step_test(simtime, simdt, plotdt): - """Create a single compartment and set it up for applying a step - current injection. - - We use a PulseGen object to generate a 40 ms wide 1 nA current - pulse that starts 20 ms after start of simulation. - - """ - model = moose.Neutral('/model') - comp = create_1comp_neuron('/model/neuron') - stim = moose.PulseGen('/model/stimulus') - stim.delay[0] = 20e-3 - stim.level[0] = 1e-9 - stim.width[0] = 40e-3 - stim.delay[1] = 1e9 - moose.connect(stim, 'output', comp, 'injectMsg') - data = moose.Neutral('/data') - current_tab = moose.Table('/data/current') - moose.connect(current_tab, 'requestOut', stim, 'getOutputValue') - vm_tab = moose.Table('/data/Vm') - moose.connect(vm_tab, 'requestOut', comp, 'getVm') - for i in range(10): - moose.setClock(i, simdt) - moose.setClock(8, plotdt) - moose.reinit() - moose.start(simtime) - ts = np.linspace(0, simtime, len(vm_tab.vector)) - return ts, current_tab.vector, vm_tab.vector, - -if __name__ == '__main__': - simtime = 0.1 - simdt = 0.25e-5 - plotdt = 0.25e-3 - ts, current, vm = current_step_test(simtime, simdt, plotdt) - plt.plot(ts, vm * 1e3, label='Vm (mV)') - plt.plot(ts, current * 1e9, label='current (nA)') - plt.legend() - plt.show() - - -# -# ionchannel.py ends here diff --git a/examples/snippets/lif.py b/examples/snippets/lif.py deleted file mode 100644 index 74fbbf8..0000000 --- a/examples/snippets/lif.py +++ /dev/null @@ -1,135 +0,0 @@ -# lif.py --- -# -# Filename: lif.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sun Jul 8 14:00:31 2012 (+0530) -# Version: -# Last-Updated: Tue Jul 17 16:45:44 2012 (+0530) -# By: subha -# Update #: 187 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Demonstrates use of Leaky Integrate and Fire (LeakyIaf class) in -# moose. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' - -import moose -from matplotlib import pyplot as plt -import numpy as np - -def setupmodel(modelpath, iaf_Rm, iaf_Cm, pulse_interval): - """Create a LeakyIaF neuron under `modelpath` and a synaptic - channel (SynChan) in it. Create a spike generator stimulated by a - pulse generator to give input to the synapse. - """ - model_container = moose.Neutral(modelpath) - data_container = moose.Neutral(datapath) - iaf = moose.LIF('%s/iaf' % (modelpath)) - iaf.Rm = iaf_Rm - iaf.Cm = iaf_Cm - iaf.initVm = -0.070 - iaf.Em = -0.065 - #iaf.Vreset = -0.070 - iaf.thresh = -0.055 - # iaf.refractoryPeriod = 0.005 - syn = moose.SynChan('%s/syn' % (iaf.path)) - synh = moose.SimpleSynHandler( syn.path + '/synh' ) - moose.connect( synh, 'activationOut', syn, 'activation' ) - synh.synapse.num = 1 - synh.synapse[0].delay = 0.01 - syn.Ek = 0.0 - syn.Gbar = 1.0 - moose.connect(syn, 'channel', iaf, 'channel') - moose.connect(iaf, 'VmOut', syn, 'Vm') - sg = moose.SpikeGen('%s/spike' % (modelpath)) - sg.threshold = 0.1 - moose.connect(sg, 'spikeOut', synh.synapse[0], 'addSpike') - pg = moose.PulseGen('%s/pulse' % (modelpath)) - pg.delay[0] = pulse_interval - pg.width[0] = 1e-3 - pg.level[0] = 0.5 - moose.connect(pg, 'output', sg, 'Vm') - return { - 'model': model_container, - 'iaf': iaf, - 'synchan': syn, - 'spikegen': sg, - 'pulsegen': pg - } - -if __name__ == '__main__': - modelpath = '/lif_demo' - datapath = '/data' - simtime = 1.0 - setup = setupmodel(modelpath, 127e6, 7.8e-11, 0.1) - # Setup data recording - data_container = moose.Neutral(datapath) - vm_table = moose.Table('%s/vm' % (data_container.path)) - moose.connect(vm_table, 'requestOut', setup['iaf'], 'getVm') - spike_table = moose.Table('%s/spike' % (data_container.path)) - # Can't connect this, the types don't match. - #moose.connect(spike_table, 'requestOut', setup['spikegen'], 'getHasFired') - # moose.connect(setup['iaf'], 'VmOut', spike_table, 'spike') - pulse_table = moose.Table('%s/pulse' % (data_container.path)) - moose.connect(pulse_table, 'requestOut', setup['pulsegen'], 'getOutputValue') - gsyn_table = moose.Table('%s/gk' % (datapath)) - moose.connect(gsyn_table, 'requestOut', setup['synchan'], 'getIk') - # Schedule model components for simulation - moose.setClock(0, 1e-4) - moose.setClock(1, 1e-4) - moose.setClock(2, 1e-4) - moose.setClock(3, 1e-4) - moose.useClock(0, '%s,%s' % (setup['pulsegen'].path, setup['spikegen'].path), 'process') - moose.useClock(1, setup['synchan'].path, 'process') - moose.useClock(2, setup['iaf'].path, 'process') - moose.useClock(3, '%s/##' % (datapath), 'process') - # Initialize and run simulation - moose.reinit() - moose.start(simtime) - t = np.linspace(0, simtime, len(pulse_table.vector)) - plt.plot(t, pulse_table.vector, 'r', label='Input pulse') - plt.plot(t, vm_table.vector, 'b', label='Vm') - plt.plot(t, gsyn_table.vector, 'c', label='Isyn') - plt.legend() - plt.show() - -# -# lif.py ends here diff --git a/examples/snippets/lifcomp.py b/examples/snippets/lifcomp.py deleted file mode 100644 index d1b114e..0000000 --- a/examples/snippets/lifcomp.py +++ /dev/null @@ -1,188 +0,0 @@ -# lifcomp.py --- -# -# Filename: lifcomp.py -# Description: Leaky Integrate and Fire using regular neuronal compartment -# Author: Subhasis Ray -# Maintainer: -# Created: Fri Feb 7 16:26:05 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""This is an example of how you can create a Leaky Integrate and Fire -compartment using regular compartment and Func to check for thresold -crossing and resetting the Vm.""" - - -import moose -from moose import utils -from pylab import * - -simtime = 500e-3 # Total simulation time -stepsize = 100e-3 # Time step for pauses between runs -simdt = 1e-4 # time step for numerical integration -plotdt = 0.25e-3 # time step for plotting - -delayMax = 5e-3 # Maximum synaptic delay - -class LIFComp(moose.Compartment): - """Leaky integrate and fire neuron using regular compartments, - spikegen and Func.""" - def __init__(self, *args): - moose.Compartment.__init__(self, *args) - self.spikegen = moose.SpikeGen('%s/spike' % (self.path)) - self.spikegen.edgeTriggered = 1 # This ensures that spike is generated only on leading edge. - self.dynamics = moose.Func('%s/dynamics' % (self.path)) - self.initVm = 0.0 - self.Rm = 10e6 - self.Ra = 1e4 - self.Cm = 100e-9 - self.Em = 0 #-65e-3 - self.initVm = 0 #self.Em - - # Note that the result is dependent on exact order of - # execution of SpikeGen and Func. If Func gets executed first - # SpikeGen will never cross threshold. - self.dynamics.expr = 'x >= y? z: x' - moose.connect(self, 'VmOut', self.dynamics, 'xIn') - moose.connect(self.dynamics, 'valueOut', self, 'setVm') - moose.connect(self, 'VmOut', self.spikegen, 'Vm') - - @property - def Vreset(self): - """Reset voltage. The cell's membrane potential is set to this value - after spiking.""" - return self.dynamics.z - - @Vreset.setter - def Vreset(self, value): - self.dynamics.z = value - - @property - def Vthreshold(self): - """Threshold voltage. The cell spikes if its membrane potential goes - above this value.""" - return self.dynamics.y - - @Vthreshold.setter - def Vthreshold(self, value): - self.dynamics.y = value - self.spikegen.threshold = value - -def setup_two_cells(): - """Create two cells with leaky integrate and fire compartments. Each - cell is a single compartment a1 and b2. a1 is stimulated by a step - current injection. - - The compartment a1 is connected to the compartment b2 through a - synaptic channel. - - """ - model = moose.Neutral('/model') - data = moose.Neutral('/data') - a1 = LIFComp('/model/a1') - b2 = LIFComp(moose.copy(a1, '/model', 'b2')) - a1.Vthreshold = 10e-3 - a1.Vreset = 0 - b2.Vthreshold = 10e-3 - b2.Vreset = 0 - syn = moose.SynChan('%s/syn' % (b2.path)) - syn.tau1 = 1e-3 - syn.tau2 = 5e-3 - syn.Ek = 90e-3 - synh = moose.SimpleSynHandler( syn.path + '/synh' ) - moose.connect( synh, 'activationOut', syn, 'activation' ) - synh.synapse.num += 1 - # syn.numSynapses = 1 - synh.synapse.delay = delayMax - moose.connect(b2, 'channel', syn, 'channel') - ## Single message works most of the time but occassionally gives a - ## core dump - - # m = moose.connect(a1.spikegen, 'spikeOut', - # syn.synapse.vec, 'addSpike') - - ## With Sparse message and random connectivity I did not get core - ## dump. - m = moose.connect(a1.spikegen, 'spikeOut', - synh.synapse.vec, 'addSpike', 'Sparse') - m.setRandomConnectivity(1.0, 1) - stim = moose.PulseGen('/model/stim') - stim.delay[0] = 100e-3 - stim.width[0] = 1e3 - stim.level[0] = 11e-9 - moose.connect(stim, 'output', a1, 'injectMsg') - tables = [] - data = moose.Neutral('/data') - for c in moose.wildcardFind('/##[ISA=Compartment]'): - tab = moose.Table('%s/%s_Vm' % (data.path, c.name)) - moose.connect(tab, 'requestOut', c, 'getVm') - tables.append(tab) - syntab = moose.Table('%s/%s' % (data.path, 'Gk')) - moose.connect(syntab, 'requestOut', syn, 'getGk') - tables.append(syntab) - synh.synapse[0].delay = 1e-3 - syn.Gbar = 1e-6 - return tables - -if __name__ == '__main__': - tables = setup_two_cells() - - utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - utils.assignDefaultTicks(modelRoot='/model', dataRoot='/data', solver='ee') - moose.reinit() - utils.stepRun(simtime, stepsize) - data = [] - for tab in tables: - data.append(tab.vector) - data = np.vstack(data) - - # Travis fix for Ubuntu-12.04 - try: - np.savetxt('lifcomp.csv', data.transpose(), delimiter='\t', header=' '.join([tab.name for tab in tables])) - except TypeError as e: # old numpy may not have header. - np.savetxt('lifcomp.csv', data.transpose(), delimiter='\t' ) - - # subplot(len(tables), 1, ii+1) - # t = np.linspace(0, simtime, len(tab.vector))*1e3 - # plot(t, tab.vector*1e3, label=tab.name) - # legend() - # show() -# -# lifcomp.py ends here diff --git a/examples/snippets/loadCspaceModel.py b/examples/snippets/loadCspaceModel.py deleted file mode 100644 index 561f419..0000000 --- a/examples/snippets/loadCspaceModel.py +++ /dev/null @@ -1,74 +0,0 @@ -# loadCspaceModel.py --- -# -# Filename: loadCspaceModel.py -# Description: -# Author: Upi Bhalla -# Maintainer: -# Created: Sat Oct 04 10:14:15 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# -# Code: - -import math -import pylab -import numpy -import moose -def main(): - """ This example illustrates loading and running, a kinetic model - defined in cspace format. We use the gsl solver here. The model already - defines a couple of plots and sets the runtime to 3000 seconds. - """ - # This command loads the file into the path '/model', and tells - # the system to use the gsl solver. - modelId = moose.loadModel( 'Osc.cspace', 'model', 'gsl' ) - moose.reinit() - moose.start( 3000.0 ) # Run the model for 300 seconds. - - # display all plots - for x in moose.wildcardFind( '/model/graphs/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - - # moose.saveModel( modelId, 'saveReaction.g' ) - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/loadKineticModel.py b/examples/snippets/loadKineticModel.py deleted file mode 100644 index 49206ad..0000000 --- a/examples/snippets/loadKineticModel.py +++ /dev/null @@ -1,97 +0,0 @@ -# loadKineticModel.py --- -# -# Filename: loadKineticModel.py -# Description: -# Author: Upi Bhalla -# Maintainer: -# Created: Sat Oct 04 12:14:15 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# -# Code: - -import moose -import pylab -import numpy -import sys - -def main(): - """ This example illustrates loading, running, and saving a kinetic model - defined in kkit format. It uses a default kkit model but you can specify another using the command line ``python filename runtime solver``. We use the gsl solver here. The model already defines a couple of plots and sets the runtime to 20 seconds. - """ - solver = "gsl" # Pick any of gsl, gssa, ee.. - mfile = '../genesis/kkit_objects_example.g' - runtime = 20.0 - if ( len( sys.argv ) >= 3 ): - if sys.argv[1][0] == '/': - mfile = sys.argv[1] - else: - mfile = '../genesis/' + sys.argv[1] - runtime = float( sys.argv[2] ) - if ( len( sys.argv ) == 4 ): - solver = sys.argv[3] - modelId = moose.loadModel( mfile, 'model', solver ) - # Increase volume so that the stochastic solver gssa - # gives an interesting output - #compt = moose.element( '/model/kinetics' ) - #compt.volume = 1e-19 - - moose.reinit() - moose.start( runtime ) - - # Report parameters - ''' - for x in moose.wildcardFind( '/model/kinetics/##[ISA=PoolBase]' ): - print x.name, x.nInit, x.concInit - for x in moose.wildcardFind( '/model/kinetics/##[ISA=ReacBase]' ): - print x.name, 'num: (', x.numKf, ', ', x.numKb, '), conc: (', x.Kf, ', ', x.Kb, ')' - for x in moose.wildcardFind('/model/kinetics/##[ISA=EnzBase]'): - print x.name, '(', x.Km, ', ', x.numKm, ', ', x.kcat, ')' - ''' - - # Display all plots. - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/loadMorphology.py b/examples/snippets/loadMorphology.py deleted file mode 100644 index 99cbc62..0000000 --- a/examples/snippets/loadMorphology.py +++ /dev/null @@ -1,52 +0,0 @@ -import moogli -import moose -from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui -import sys -import os - -frameRunTime = 0.0002 -runtime = 1.0 -inject = 5e-10 -simdt = 5e-5 - -def main(): - app = QtGui.QApplication(sys.argv) - filename = 'barrionuevo_cell1zr.CNG.swc' - moose.Neutral( '/library' ) - moose.Neutral( '/model' ) - cell = moose.loadModel( filename, '/model/testSwc' ) - for i in range( 8 ): - moose.setClock( i, simdt ) - hsolve = moose.HSolve( '/model/testSwc/hsolve' ) - hsolve.dt = simdt - hsolve.target = '/model/testSwc/soma' - moose.le( cell ) - moose.reinit() - - # Now we set up the display - compts = moose.wildcardFind( "/model/testSwc/#[ISA=CompartmentBase]" ) - compts[0].inject = inject - ecomptPath = map( lambda x : x.path, compts ) - morphology = moogli.read_morphology_from_moose(name = "", path = "/model/testSwc") - morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ - [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) - - viewer = moogli.DynamicMorphologyViewerWidget(morphology) - def callback( morphology, viewer ): - moose.start( frameRunTime ) - Vm = map( lambda x: moose.element( x ).Vm, compts ) - morphology.set_color( "group_all", Vm ) - currTime = moose.element( '/clock' ).currentTime - #print currTime, compts[0].Vm - if ( currTime < runtime ): - return True - return False - - viewer.set_callback( callback, idletime = 0 ) - viewer.showMaximized() - viewer.show() - app.exec_() - -if __name__ == '__main__': - main() diff --git a/examples/snippets/loadSbmlmodel.py b/examples/snippets/loadSbmlmodel.py deleted file mode 100644 index 9323a46..0000000 --- a/examples/snippets/loadSbmlmodel.py +++ /dev/null @@ -1,110 +0,0 @@ -# -*- coding: utf-8 -*- -# Filename: loadSbmlmodel.py -# Description: -# Author: Harsha rani -# Maintainer: -# Created: Fri Jan 29 11:43:15 2016 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# - -import moose -import matplotlib -import numpy as np -import matplotlib.pyplot as plt -import sys -import pylab -from moose.SBML import * -import os.path - -def main(): - """ This example illustrates loading, running of an SBML model defined in XML format.\n - The model 00001-sbml-l3v1.xml is taken from l3v1 SBML testcase.\n - Plots are setup.\n - Model is run for 20sec.\n - As a general rule we created model under '/path/model' and plots under '/path/graphs'.\n - """ - - mfile = "../genesis/00001-sbml-l3v1.xml" - try: - sys.argv[1] - except: - pass - else: - mfile = sys.argv[1] - - try: - sys.argv[2] - except: - runtime = 20.0 - else: - runtime = float(sys.argv[2]) - - # Loading the sbml file into MOOSE, models are loaded in path/model - sbmlId = mooseReadSBML(mfile,'/sbml') - if isinstance(sbmlId, (list, tuple)): - print sbmlId - elif sbmlId.path != '/': - - s1 = moose.element('/sbml/model/compartment/S1') - s2= moose.element('/sbml/model/compartment/S2') - - # Creating MOOSE Table, Table2 is for the chemical model - graphs = moose.Neutral( '/sbml/graphs' ) - outputs1 = moose.Table2 ( '/sbml/graphs/concS1') - outputs2 = moose.Table2 ( '/sbml/graphs/concS2') - - # connect up the tables - moose.connect( outputs1,'requestOut', s1, 'getConc' ); - moose.connect( outputs2,'requestOut', s2, 'getConc' ); - - - # Reset and Run - moose.reinit() - moose.start(runtime) - return sbmlId,True - return sbmlId,False - -def displayPlots(): - # Display all plots. - for x in moose.wildcardFind( '/sbml/graphs/#[TYPE=Table2]' ): - t = np.arange( 0, x.vector.size, 1 ) #sec - plt.plot( t, x.vector, label=x.name ) - - pylab.legend() - pylab.show() - - quit() -if __name__=='__main__': - - modelPath, modelpathexist = main() - if modelpathexist == True: - displayPlots() diff --git a/examples/snippets/mgblock.py b/examples/snippets/mgblock.py deleted file mode 100644 index 2ad8741..0000000 --- a/examples/snippets/mgblock.py +++ /dev/null @@ -1,153 +0,0 @@ -# mgblock.py --- -# -# Filename: mgblock.py -# Description: -# Author:Upi Bhalla -# Maintainer: -# Created: Wed Jul 3 09:36:06 2013 (+0530) -# Version: -# Last-Updated: Fri Sep 12 10:56:18 2014 (+0530) -# By: Upi -# Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import moose -from moose import utils -import pylab - -simtime = 100e-3 -simdt = 1e-6 -plotdt = 1e-4 - -def test_mgblock(): - """ - Demonstrates the use of MgBlock. - Creates an NMDA channel with MgBlock and another without. - Connects them up to the compartment on one hand, and to a - SynHandler on the other, so as to receive synaptic input. - Delivers two pulses to each receptor, with a small delay in between. - - Plots out the conductance change at each receptor and the reslting - membrane potential rise at the compartment. - - Note that these NMDA channels do NOT separate out the contributions - due to calcium and other ions. To do this correctly one should use - the GHK object. - """ - model = moose.Neutral('/model') - data = moose.Neutral('/data') - soma = moose.Compartment('/model/soma') - soma.Em = -60e-3 - soma.Rm = 1e7 - soma.Cm = 1e-9 - - ################################################### - # This is where we create the synapse with MgBlock - #-------------------------------------------------- - nmda = moose.SynChan('/model/soma/nmda') - nmda.Gbar = 1e-9 - mgblock = moose.MgBlock('/model/soma/mgblock') - mgblock.CMg = 2.0 - mgblock.KMg_A = 1/0.33 - mgblock.KMg_B = 1/60.0 - - # The synHandler manages the synapses and their learning rules if any. - synHandler = moose.SimpleSynHandler( '/model/soma/nmda/handler' ) - synHandler.synapse.num = 1 - moose.connect( synHandler, 'activationOut', nmda, 'activation' ) - - - - # MgBlock sits between original channel nmda and the - # compartment. The origChannel receives the channel message from - # the nmda SynChan. - moose.connect(soma, 'VmOut', nmda, 'Vm' ) - moose.connect(nmda, 'channelOut', mgblock, 'origChannel') - moose.connect(mgblock, 'channel', soma, 'channel') - # This is for comparing with MgBlock - nmda_noMg = moose.copy(nmda, soma, 'nmda_noMg') - moose.connect( nmda_noMg, 'channel', soma, 'channel') - moose.le( nmda_noMg ) - - ######################################### - # The rest is for experiment setup - spikegen = moose.SpikeGen('/model/spike') - pulse = moose.PulseGen('/model/input') - pulse.delay[0] = 10e-3 - pulse.level[0] = 1.0 - pulse.width[0] = 50e-3 - moose.connect(pulse, 'output', spikegen, 'Vm') - moose.le( synHandler ) - #syn = moose.element(synHandler.path + '/synapse' ) - syn = synHandler.synapse[0] - syn.delay = simdt * 2 - syn.weight = 10 - moose.connect(spikegen, 'spikeOut', synHandler.synapse[0], 'addSpike') - moose.le( nmda_noMg ) - noMgSyn = moose.element(nmda_noMg.path + '/handler/synapse' ) - noMgSyn.delay = 0.01 - noMgSyn.weight = 1 - moose.connect(spikegen, 'spikeOut', noMgSyn, 'addSpike') - moose.showfields( syn ) - moose.showfields( noMgSyn ) - Gnmda = moose.Table('/data/Gnmda') - moose.connect(Gnmda, 'requestOut', mgblock, 'getGk') - Gnmda_noMg = moose.Table('/data/Gnmda_noMg') - moose.connect(Gnmda_noMg, 'requestOut', nmda_noMg, 'getGk') - Vm = moose.Table('/data/Vm') - moose.connect(Vm, 'requestOut', soma, 'getVm') - for i in range( 10 ): - moose.setClock( i, simdt ) - moose.setClock( Gnmda.tick, plotdt ) - print spikegen.dt, Gnmda.dt - moose.reinit() - moose.start( simtime ) - t = pylab.linspace(0, simtime*1e3, len(Vm.vector)) - pylab.plot(t, (Vm.vector + 0.06) * 1000, label='Vm (mV)') - pylab.plot(t, Gnmda.vector * 1e9, label='Gnmda (nS)') - pylab.plot(t, Gnmda_noMg.vector * 1e9, label='Gnmda no Mg (nS)') - pylab.legend() - #data = pylab.vstack((t, Gnmda.vector, Gnmda_noMg.vector)).transpose() - #pylab.savetxt('mgblock.dat', data) - pylab.show() - - -if __name__ == '__main__': - test_mgblock() - -# -# mgblock.py ends here diff --git a/examples/snippets/multiComptSigNeur.py b/examples/snippets/multiComptSigNeur.py deleted file mode 100644 index 5d7180a..0000000 --- a/examples/snippets/multiComptSigNeur.py +++ /dev/null @@ -1,520 +0,0 @@ -# multiComptSigNeur.py --- -# Upi Bhalla NCBS Bangalore 2013. -# Commentary: - -# A toy compartmental neuronal + chemical model. The neuronal model is in -# a dendrite and five dendritic spines. The chemical model is in three -# compartments: one for the dendrite, -# one for the spine head, and one for the postsynaptic density. However, -# the spatial geometry of the neuronal model is ignored and the chemical -# model just has three cubic volumes for each compartment. So there -# is a functional mapping but spatial considerations are lost. -# The electrical model contributes the incoming calcium flux to the -# chemical model. This comes from the synaptic channels. -# The signalling here does two things to the electrical model. First, the -# amount of receptor in the chemical model controls the amount of glutamate -# receptor in the PSD. Second, there is a small kinase reaction that -# phosphorylates and inactivates the dendritic potassium channel. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys - -import os -import math - -import moose - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def createSquid(): - """Create a single compartment squid model.""" - parent = moose.Neutral ('/n' ) - compt = moose.SymCompartment( '/n/compt' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 * 0.5 - compt.Rm = 4.2e5 * 5.0 - compt.Ra = 7639.44e3 - nachan = moose.HHChannel( '/n/compt/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) - yGate.useInterpolation = 1 - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') - - kchan = moose.HHChannel( '/n/compt/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') - return compt - -def createSpine( parentCompt, parentObj, index, frac, length, dia, theta ): - """Create spine of specified dimensions and index""" - RA = 1.0 - RM = 1.0 - CM = 0.01 - shaftDia = dia / 5.0 - sname = 'shaft' + str(index) - hname = 'head' + str(index) - shaft = moose.SymCompartment( parentObj.path + '/' + sname ) - moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single' ) - x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) - y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) - z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) - shaft.x0 = x - shaft.y0 = y - shaft.z0 = z - sy = y + length * math.cos( theta * math.pi / 180.0 ) - sz = z + length * math.sin( theta * math.pi / 180.0 ) - shaft.x = x - shaft.y = sy - shaft.z = sz - shaft.diameter = dia / 2.0 - shaft.length = length - xa = math.pi * shaftDia * shaftDia / 4 - circumference = math.pi * shaftDia - shaft.Ra = RA * length / xa - shaft.Rm = RM / ( length * circumference ) - shaft.Cm = CM * length * circumference - shaft.Em = EREST_ACT - shaft.initVm = EREST_ACT - - head = moose.SymCompartment( parentObj.path + '/' + hname ) - moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) - head.x0 = x - head.y0 = sy - head.z0 = sz - hy = sy + length * math.cos ( theta * math.pi / 180.0 ) - hz = sz + length * math.sin ( theta * math.pi / 180.0 ) - head.x = x - head.y = hy - head.z = hz - head.diameter = dia - head.length = length - xa = math.pi * dia * dia / 4.0 - circumference = math.pi * dia - head.Ra = RA * length / xa - head.Rm = RM / ( length * circumference ) - head.Cm = CM * length * circumference - head.Em = EREST_ACT - head.initVm = EREST_ACT - #print head.Rm, head.Ra, head.Cm, head.diameter, head.length - #print shaft.Rm, shaft.Ra, shaft.Cm, shaft.diameter, shaft.length - return head - -def createSpineWithReceptor( compt, cell, index, frac ): - FaradayConst = 96485.3415 # s A / mol - spineLength = 5.0e-6 - spineDia = 4.0e-6 - head = createSpine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) - gluR = moose.SynChan( head.path + '/gluR' ) - gluR.tau1 = 4e-3 - gluR.tau2 = 4e-3 - gluR.Gbar = 1e-6 - gluR.Ek= 10.0e-3 - moose.connect( head, 'channel', gluR, 'channel', 'Single' ) - synh = moose.SimpleSynHandler( gluR.path + '/synh' ) - moose.connect( synh, 'activationOut', gluR, 'activation' ) - - caPool = moose.CaConc( head.path + '/ca' ) - caPool.CaBasal = 1e-4 # 0.1 micromolar - caPool.tau = 0.01 - B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) - B = B / 20.0 # scaling factor for Ca buffering - caPool.B = B - moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) - - return synh - -def addPlot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/compt', 'getVm', 'elec/dendVm' ) - #addPlot( '/n/compt/Na', 'getGbar', 'elec/NaGbar' ) - addPlot( '/model/elec/compt/K', 'getGbar', 'elec/KGbar' ) - #addPlot( '/n/compt/Na', 'getIk', 'elec/NaIk' ) - #addPlot( '/n/compt/K', 'getIk', 'elec/KIk' ) - #addPlot( '/n/compt/Na', 'getEk', 'elec/NaEk' ) - #addPlot( '/n/compt/K', 'getEk', 'elec/KEk' ) - addPlot( '/model/elec/head0', 'getVm', 'elec/head0Vm' ) - addPlot( '/model/elec/head2', 'getVm', 'elec/head2Vm' ) - #addPlot( '/n/head2', 'getIm', 'elec/head2Im' ) - addPlot( '/model/elec/head0/ca', 'getCa', 'elec/head0Ca' ) - addPlot( '/model/elec/head1/ca', 'getCa', 'elec/head1Ca' ) - addPlot( '/model/elec/head2/ca', 'getCa', 'elec/head2Ca' ) - addPlot( '/model/elec/head0/gluR', 'getIk', 'elec/head0Ik' ) - addPlot( '/model/elec/head1/gluR', 'getIk', 'elec/head1Ik' ) - addPlot( '/model/elec/head2/gluR', 'getIk', 'elec/head2Ik' ) - addPlot( '/model/elec/head1/gluR', 'getGbar', 'elec/head1Gbar' ) - addPlot( '/model/elec/head2/gluR', 'getGbar', 'elec/head2Gbar' ) - #addPlot( '/n/head0/gluR', 'getGk', 'elec/head0Gk' ) - #addPlot( '/n/head2/gluR', 'getGk', 'elec/head2Gk' ) - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - x.xplot( fname, x.name ) - -def makeSpinyCompt(): - comptLength = 30e-6 - comptDia = 6e-6 - numSpines = 5 - compt = createSquid() - compt.inject = 0 - compt.x0 = 0 - compt.y0 = 0 - compt.z0 = 0 - compt.x = comptLength - compt.y = 0 - compt.z = 0 - compt.length = comptLength - compt.diameter = comptDia - #kchan = moose.element( '/n/compt/K' ) - #kchan.Gbar = 0.2e-3 - synInput = moose.SpikeGen( '/n/compt/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - cell = moose.element( '/n' ) - for i in range( numSpines ): - r = createSpineWithReceptor( compt, cell, i, i/float(numSpines) ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 * i * ( 4 - i ) - syn.delay = i * 1.0e-3 - -def createPool( compt, name, concInit ): - meshEntries = moose.element( compt.path + '/mesh' ) - pool = moose.Pool( compt.path + '/' + name ) - pool.concInit = concInit - pool.diffConst = 1e-11 - return pool - - -def createChemModel( neuroCompt, spineCompt, psdCompt ): - # Stuff in spine + psd - #psdCa = createPool( psdCompt, 'Ca', 0.0001 ) - psdGluR = createPool( psdCompt, 'psdGluR', 1 ) - headCa = createPool( spineCompt, 'Ca', 1e-4 ) - headGluR = createPool( spineCompt, 'headGluR', 2 ) - toPsd = createPool( spineCompt, 'toPsd', 0 ) - toPsdInact = createPool( spineCompt, 'toPsdInact', 1e-3 ) - turnOnPsd = moose.Reac( spineCompt.path + '/turnOnPsd' ) - moose.connect( turnOnPsd, 'sub', headCa, 'reac', 'OneToOne' ) - moose.connect( turnOnPsd, 'sub', toPsdInact, 'reac', 'OneToOne' ) - moose.connect( turnOnPsd, 'prd', toPsd, 'reac', 'OneToOne' ) - turnOnPsd.Kf = 1e3 - turnOnPsd.Kb = 1 - toPsdEnz = moose.Enz( toPsd.path + '/enz' ) - toPsdEnzCplx = moose.Pool( toPsdEnz.path + '/cplx' ) - toPsdEnzCplx.concInit = 0 - moose.connect( toPsdEnz, 'enz', toPsd, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'sub', headGluR, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'prd', psdGluR, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'cplx', toPsdEnzCplx, 'reac', 'OneToOne' ) - toPsdEnz.Km = 1.0e-3 - toPsdEnz.kcat = 10.0 - fromPsd = moose.Reac( psdCompt.path + '/fromPsd' ) - moose.connect( fromPsd, 'sub', psdGluR, 'reac', 'OneToOne' ) - moose.connect( fromPsd, 'prd', headGluR, 'reac', 'OneToOne' ) - fromPsd.Kf = 0.5 - fromPsd.Kb = 0.0 - # Stuff in dendrite - dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) - bufCa = moose.Pool( neuroCompt.path + '/bufCa' ) - bufCa.concInit = 1e-4 - pumpCa = moose.Reac( neuroCompt.path + '/pumpCa' ) - moose.connect( pumpCa, 'sub', dendCa, 'reac', 'OneToOne' ) - moose.connect( pumpCa, 'prd', bufCa, 'reac', 'OneToOne' ) - pumpCa.Kf = 1 - pumpCa.Kb = 1 - dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) - dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) - dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) - moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) - moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) - moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) - dendTurnOnKinase.Kf = 50000 - dendTurnOnKinase.Kb = 1 - dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) - dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) - kChan = createPool( neuroCompt, 'kChan', 1e-3 ) - kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) - moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) - dendKinaseEnz.Km = 1e-4 - dendKinaseEnz.kcat = 20 - dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) - moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) - moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) - dendPhosphatase.Kf = 1 - dendPhosphatase.Kb = 0.0 - - -# Just for printf debugging -def printMolVecs( title ): - print(title) - """ - nCa = moose.vec( '/model/chem/neuroMesh/Ca' ) - sCa = moose.vec( '/model/chem/spineMesh/Ca' ) - sR = moose.vec( '/model/chem/spineMesh/headGluR' ) - pR = moose.vec( '/model/chem/psdMesh/psdGluR' ) - print 'sizes: nCa, sCa, sR, pR = ', len(nCa), len(sCa), len(sR), len(pR) - #print 'nCa=', nCa.conc, ', sCa=', sCa.conc, ', sR=', sR.n, ', pR=', pR.n - print 'nCaConcInit=', nCa.concInit, ', sCa=', sCa.concInit - #print 'sRnInit=', sR.nInit, ', pR=', pR.nInit - print 'sRconcInit=', sR.concInit, ', pR=', pR.concInit - - #print 'nCaSize=', nCa.volume, ', sCa=', sCa.volume, ', sR=', sR.n, ', pR=', pR.n - """ - -def makeChemInCubeMesh(): - dendSide = 10.8e-6 - spineSide = 6.8e-6 - psdSide = 8.565e-7 - parent = moose.Neutral ('/model/chem' ) - neuroMesh = moose.CubeMesh( '/model/chem/neuroMesh' ) - spineMesh = moose.CubeMesh( '/model/chem/spineMesh' ) - psdMesh = moose.CubeMesh( '/model/chem/psdMesh' ) - coords = [dendSide] * 9 - coords[0] = 0 - coords[1] = 0 - coords[2] = 0 - neuroMesh.coords = coords - neuroMesh.preserveNumEntries = 1 - - coords = [spineSide] * 9 - coords[0] = dendSide - coords[1] = 0 - coords[2] = 0 - coords[3] = spineSide + dendSide - spineMesh.coords = coords - spineMesh.preserveNumEntries = 1 - - coords = [psdSide] * 9 - coords[0] = dendSide + spineSide - coords[1] = 0 - coords[2] = 0 - coords[3] = psdSide + spineSide + dendSide - psdMesh.coords = coords - psdMesh.preserveNumEntries = 1 - - createChemModel( neuroMesh, spineMesh, psdMesh ) - dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) - assert dendCa.volume == dendSide * dendSide * dendSide - spineCa = moose.element( '/model/chem/spineMesh/Ca' ) - assert spineCa.volume == spineSide * spineSide * spineSide - psdGluR = moose.element( '/model/chem/psdMesh/psdGluR' ) - assert psdGluR.volume == psdSide * psdSide * psdSide - dendKinaseEnzCplx = moose.element( '/model/chem/neuroMesh/Ca.kinase/enz/cplx' ) - assert dendKinaseEnzCplx.volume == dendSide * dendSide * dendSide - -def makeSolvers( elecDt ): - # Put in the solvers, see how they fare. - # Here we kludge in a single chem solver for the whole system. - ksolve = moose.Ksolve( '/model/ksolve' ) - stoich = moose.Stoich( '/model/stoich' ) - stoich.compartment = moose.element( '/model/chem/neuroMesh' ) - stoich.ksolve = ksolve - stoich.path = '/model/chem/##' - #stoich.method = 'rk5' - moose.useClock( 5, '/model/ksolve', 'init' ) - moose.useClock( 6, '/model/ksolve', 'process' ) - # Here is the elec solver - hsolve = moose.HSolve( '/model/hsolve' ) - moose.useClock( 1, '/model/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - -def makeCubeMultiscale(): - makeSpinyCompt() - model = moose.Neutral( '/model' ) - elec = moose.element( '/n' ) - elec.name = 'elec' - moose.move( elec, model ) - synInput = moose.element( '/model/elec/compt/synInput' ) - synInput.refractT = 47e-3 - makeChemInCubeMesh() - # set up a reaction to fake diffusion between compts. - headCa = moose.element( '/model/chem/spineMesh/Ca' ) - dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) - diffReac = moose.Reac( '/model/chem/spineMesh/diff' ) - moose.connect( diffReac, 'sub', headCa, 'reac' ) - moose.connect( diffReac, 'prd', dendCa, 'reac' ) - diffReac.Kf = 1 - diffReac.Kb = headCa.volume / dendCa.volume - - # set up adaptors - headCa = moose.element( '/model/chem/spineMesh/Ca' ) - dendCa = moose.element( '/model/chem/neuroMesh/Ca' ) - adaptCa = moose.Adaptor( '/model/chem/adaptCa' ) - elecCa = moose.element( '/model/elec/head2/ca' ) - # There are 5 spine heads in the electrical model. Average their input. - for i in range( 5 ): - path = '/model/elec/head' + str( i ) + '/ca' - elecCa = moose.element( path ) - moose.connect( elecCa, 'concOut', adaptCa, 'input', 'Single' ) - moose.connect( adaptCa, 'output', headCa, 'setConc' ) - adaptCa.outputOffset = 0.0001 # 100 nM offset in chem. - adaptCa.scale = 0.05 # 0.06 to 0.003 mM - - adaptGluR = moose.Adaptor( '/model/chem/psdMesh/adaptGluR' ) - chemR = moose.element( '/model/chem/psdMesh/psdGluR' ) - # Here we connect up the chem adaptors to only 3 of the spine - # heads in the elec model, just to make it interesting. - elec1R = moose.element( '/model/elec/head1/gluR' ) - elec2R = moose.element( '/model/elec/head2/gluR' ) - elec3R = moose.element( '/model/elec/head3/gluR' ) - moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToAll' ) - moose.connect( adaptGluR, 'output', elec1R, 'setGbar', 'OneToAll' ) - moose.connect( adaptGluR, 'output', elec2R, 'setGbar', 'OneToAll' ) - moose.connect( adaptGluR, 'output', elec3R, 'setGbar', 'OneToAll' ) - adaptGluR.outputOffset = 1e-9 # pS - adaptGluR.scale = 1e-8 / 100 # from n to pS - - adaptK = moose.Adaptor( '/model/chem/neuroMesh/adaptK' ) - chemK = moose.element( '/model/chem/neuroMesh/kChan' ) - elecK = moose.element( '/model/elec/compt/K' ) - moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) - moose.connect( adaptK, 'output', elecK, 'setGbar', 'OneToAll' ) - adaptK.scale = 0.3 # from mM to Siemens - - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/chem/psdMesh/psdGluR', 'getN', 'psd0R' ) - addPlot( '/model/chem/spineMesh/Ca', 'getConc', 'spine0Ca' ) - addPlot( '/model/chem/neuroMesh/Ca', 'getConc', 'dend0Ca' ) - addPlot( '/model/chem/neuroMesh/kChan_p', 'getConc', 'kChan_p' ) - addPlot( '/model/chem/neuroMesh/kChan', 'getConc', 'kChan' ) - addPlot( '/model/chem/neuroMesh/Ca.kinase', 'getConc', 'dendKinase' ) - addPlot( '/model/chem/spineMesh/toPsd', 'getConc', 'toPsd0' ) - #addPlot( '/n/neuroMesh/Ca', 'getConc', 'dendCa' ) - #addPlot( '/n/neuroMesh/inact_kinase', 'getConc', 'inactDendKinase' ) - #addPlot( '/n/psdMesh/psdGluR', 'getN', 'psdGluR' ) - -def testCubeMultiscale( useSolver ): - elecDt = 10e-6 - chemDt = 1e-4 - plotDt = 5e-4 - plotName = 'mc.plot' - if ( useSolver ): - elecDt = 50e-6 - chemDt = 2e-3 - plotName = 'mcs.plot' - makeCubeMultiscale() - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=Compartment],/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=SynBase],/model/elec/##[ISA=ChanBase],/model/elec/##[ISA=CaConc]','process') - moose.useClock( 5, '/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - moose.useClock( 6, '/model/##[ISA=PoolBase],/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - if ( useSolver ): - makeSolvers( elecDt ) - moose.reinit() - moose.start( 1.0 ) - dumpPlots( plotName ) - -def main(): - testCubeMultiscale( 1 ) - -if __name__ == '__main__': - main() - -# -# HsolveInstability.py ends here diff --git a/examples/snippets/multicomp_lif.py b/examples/snippets/multicomp_lif.py deleted file mode 100644 index 8b29501..0000000 --- a/examples/snippets/multicomp_lif.py +++ /dev/null @@ -1,193 +0,0 @@ -# multicomp_lif.py --- -# -# Filename: multicomp_lif.py -# Description: Leaky Integrate and Fire using regular neuronal compartment -# Author: Subhasis Ray -# Maintainer: -# Created: Fri Feb 7 16:26:05 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""This is an example of how you can create a Leaky Integrate and Fire -compartment using regular compartment and Func to check for thresold -crossing and resetting the Vm.""" - - -import sys -sys.path.append('../../python') - -import moose -from moose import utils -from pylab import * - -simtime = 500e-3 # Total simulation time -stepsize = 100e-3 # Time step for pauses between runs -simdt = 1e-4 # time step for numerical integration -plotdt = 0.25e-3 # time step for plotting - -delayMax = 5e-3 # Maximum synaptic delay - -class LIFComp(moose.Compartment): - """Leaky integrate and fire neuron using regular compartments, - spikegen and Func.""" - def __init__(self, *args): - moose.Compartment.__init__(self, *args) - self.spikegen = moose.SpikeGen('%s/spike' % (self.path)) - self.spikegen.edgeTriggered = 1 # This ensures that spike is generated only on leading edge. - self.dynamics = moose.Func('%s/dynamics' % (self.path)) - self.initVm = 0.0 - self.Rm = 10e6 - self.Ra = 1e4 - self.Cm = 100e-9 - self.Em = 0 #-65e-3 - self.initVm = 0 #self.Em - - # Note that the result is dependent on exact order of - # execution of SpikeGen and Func. If Func gets executed first - # SpikeGen will never cross threshold. - self.dynamics.expr = 'x >= y? z: x' - moose.connect(self, 'VmOut', self.dynamics, 'xIn') - moose.connect(self.dynamics, 'valueOut', self, 'setVm') - moose.connect(self, 'VmOut', self.spikegen, 'Vm') - - @property - def Vreset(self): - """Reset voltage. The cell's membrane potential is set to this value - after spiking.""" - return self.dynamics.z - - @Vreset.setter - def Vreset(self, value): - self.dynamics.z = value - - @property - def Vthreshold(self): - """Threshold voltage. The cell spikes if its membrane potential goes - above this value.""" - return self.dynamics.y - - @Vthreshold.setter - def Vthreshold(self, value): - self.dynamics.y = value - self.spikegen.threshold = value - -def setup_two_cells(): - """Create two cells with leaky integrate and fire compartments. The - first cell is composed of two compartments a1 and a2 and the - second cell is composed of compartments b1 and b2. Each pair is - connected via raxial message so that the voltage of one - compartment influences the other through axial resistance Ra. - - The compartment a1 of the first neuron is connected to the - compartment b2 of the second neuron through a synaptic channel. - - """ - model = moose.Neutral('/model') - data = moose.Neutral('/data') - a1 = LIFComp('/model/a1') - a2 = LIFComp('/model/a2') - moose.connect(a1, 'raxial', a2, 'axial') - b1 = LIFComp('/model/b1') - b2 = LIFComp('/model/b2') - moose.connect(b1, 'raxial', b2, 'axial') - a1.Vthreshold = 10e-3 - a1.Vreset = 0 - a2.Vthreshold = 10e-3 - a2.Vreset = 0 - b1.Vthreshold = 10e-3 - b1.Vreset = 0 - b2.Vthreshold = 10e-3 - b2.Vreset = 0 - syn = moose.SynChan('%s/syn' % (b2.path)) - syn.tau1 = 1e-3 - syn.tau2 = 5e-3 - syn.Ek = 90e-3 - synh = moose.SimpleSynHandler( syn.path + "/synh" ) - moose.connect( synh, "activationOut", syn, "activation" ) - synh.numSynapses = 1 - synh.synapse.delay = delayMax - moose.connect(b2, 'channel', syn, 'channel') - ## Single message works most of the time but occassionally gives a - ## core dump - - # m = moose.connect(a1.spikegen, 'spikeOut', - # syn.synapse.vec, 'addSpike') - - ## With Sparse message and random connectivity I did not get core - ## dump. - m = moose.connect(a1.spikegen, 'spikeOut', - synh.synapse.vec, 'addSpike', 'Sparse') - m.setRandomConnectivity(1.0, 1) - stim = moose.PulseGen('/model/stim') - stim.delay[0] = 100e-3 - stim.width[0] = 1e3 - stim.level[0] = 11e-9 - moose.connect(stim, 'output', a1, 'injectMsg') - tables = [] - data = moose.Neutral('/data') - for c in moose.wildcardFind('/##[ISA=Compartment]'): - tab = moose.Table('%s/%s' % (data.path, c.name)) - moose.connect(tab, 'requestOut', c, 'getVm') - tables.append(tab) - # t1 = moose.Table('%s/%s' % (data.path, c.name)) - # moose.connect(t1, 'requestOut', moose.element('%s/dynamics' % (c.path)), 'getX') - # tables.append(t1) - syntab = moose.Table('%s/%s' % (data.path, 'Gk')) - moose.connect(syntab, 'requestOut', syn, 'getGk') - tables.append(syntab) - synh.synapse[0].delay = 1e-3 - syn.Gbar = 1e-6 - return tables - -if __name__ == '__main__': - tables = setup_two_cells() - - utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - utils.assignDefaultTicks(modelRoot='/model', dataRoot='/data', solver='ee') - moose.reinit() - utils.stepRun(simtime, stepsize) - for ii, tab in enumerate(tables): - subplot(len(tables), 1, ii+1) - t = np.linspace(0, simtime, len(tab.vector))*1e3 - plot(t, tab.vector*1e3, label=tab.name) - legend() - show() -# -# multicomp_lif.py ends here diff --git a/examples/snippets/multiscaleOneCompt.py b/examples/snippets/multiscaleOneCompt.py deleted file mode 100644 index 1920212..0000000 --- a/examples/snippets/multiscaleOneCompt.py +++ /dev/null @@ -1,180 +0,0 @@ -######################################################################### -## multiscaleOneCompt.py --- -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU General Public License version 2 or later. -## See the file COPYING.LIB for the full notice. -######################################################################### - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math -import numpy -import pylab -import matplotlib.pyplot as plt -import moose -import proto18 - -#EREST_ACT = -70e-3 - -def loadElec(): - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - proto18.make_Ca() - proto18.make_Ca_conc() - proto18.make_Na() - proto18.make_K_DR() - proto18.make_K_A() - # Disable all the prototypes. - for x in moose.wildcardFind( "/library/##" ): - x.tick = -1 - model = moose.Neutral( '/model' ) - cellId = moose.loadModel( 'soma.p', '/model/elec', "Neutral" ) - moose.setCwe( '/' ) - ''' - hsolve = moose.HSolve( '/model/elec/hsolve' ) - hsolve.dt = 50.0e-6 - hsolve.target = '/model/elec/soma' - moose.reinit() - ''' - return cellId - -def loadChem(): - chem = moose.Neutral( '/model/chem' ) - modelId = moose.loadModel( '../genesis/chanPhosphByCaMKII.g', '/model/chem', 'gsl' ) - nmstoich = moose.element( '/model/chem/kinetics/stoich' ) - -def makeModel(): - loadElec() - loadChem() - makeAdaptors() - -def makeAdaptors(): - ################################################################## - # set up adaptor for elec model Ca -> chem model Ca - # Here it is easy because we don't have to deal with different - # sizes of electrical and chemical compartments. - adaptCa = moose.Adaptor( '/model/chem/kinetics/adaptCa' ) - chemCa = moose.element( '/model/chem/kinetics/Ca' ) - elecCa = moose.element( '/model/elec/soma/Ca_conc' ) - moose.connect( elecCa, 'concOut', adaptCa, 'input' ) - moose.connect( adaptCa, 'output', chemCa, 'setConc' ) - adaptCa.inputOffset = 0.0 # - adaptCa.outputOffset = 0.00008 # 80 nM offset in chem. - adaptCa.scale = 0.0008 - - # set up adaptor for chem model chan -> elec model chan. - adaptChan = moose.Adaptor( '/model/chem/kinetics/adaptChan' ) - chemChan = moose.element( '/model/chem/kinetics/chan' ) - elecChan = moose.element( '/model/elec/soma/K_A' ) - # The Adaptor has to request the output conc of the chemical pool, - # since there isn't an output message to deliver this value. - moose.connect( adaptChan, 'requestOut', chemChan, 'getConc' ) - moose.connect( adaptChan, 'output', elecChan, 'setGbar' ) - adaptChan.inputOffset = 0.0 # - adaptChan.outputOffset = 0.0 - adaptChan.scale = 1e-5 # - -def addPlot( objpath, field, plot, tick ): - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - tab.tick = tick - return tab - else: - print "failed in addPlot(", objpath, field, plot, tick, ")" - return 0 - -def main(): - """ - This example builds a simple multiscale model involving - electrical and chemical signaling, but without spatial dimensions. - The electrical cell model is in a single compartment and has - voltage-gated channels, including a voltage-gated Ca channel for - Ca influx, and a K_A channel which is regulated by the chemical - pathways. - - The chemical model has calcium activating Calmodulin which activates - CaM-Kinase II. The kinase phosphorylates the K_A channel to inactivate - it. - - The net effect of the multiscale activity is a positive feedback - loop where activity increases Ca, which activates the kinase, - which reduces K_A, leading to increased excitability of the cell. - - In this example this results - in a bistable neuron. In the resting state the cell does not fire, - but if it is activated by a current pulse the cell will continue to - fire even after the current is turned off. Application of an - inhibitory current restores the cell to its silent state. - - Both the electrical and chemical models are loaded in from model - description files, and these files could be replaced if one wished - to define different models. However, there - are model-specific Adaptor objects needed to map activity between the - models of the two kinds. The Adaptors connect specific model entities - between the two models. Here one Adaptor connects the electrical - Ca_conc object to the chemical Ca pool. The other Adaptor connects - the chemical pool representing the K_A channel to its conductance - term in the electrical model. - """ - - runtime = 4 - chemDt = 0.005 - ePlotDt = 0.5e-3 - cPlotDt = 0.0025 - - makeModel() - - moose.setClock( 8, ePlotDt ) - moose.setClock( 18, cPlotDt ) - for i in range( 10, 18 ): - moose.setClock( i, chemDt ) - graphs = moose.Neutral( '/graphs' ) - caplot = addPlot( '/model/elec/soma/Ca_conc', 'getCa', 'somaCa', 8 ) - vmplot = addPlot( '/model/elec/soma', 'getVm', 'somaVm', 8 ) - ikplot = addPlot( '/model/elec/soma/K_A', 'getIk', 'KAIk', 8 ) - addPlot( '/model/chem/kinetics/chan', 'getConc', 'chan', 18 ) - addPlot( '/model/chem/kinetics/Ca', 'getConc', 'Ca', 18 ) - addPlot( '/model/chem/kinetics/CaM', 'getConc', 'CaM', 18 ) - addPlot( '/model/chem/kinetics/Ca_CaM_CaMKII', 'getConc', 'enz', 18 ) - hsolve = moose.HSolve( '/model/elec/hsolve' ) - hsolve.dt = 50.0e-6 - hsolve.target = '/model/elec/soma' - moose.reinit() - moose.element( '/model/elec/soma' ).inject = 0e-12 - moose.start( runtime ) - moose.element( '/model/elec/soma' ).inject = 1e-12 - moose.start( runtime ) - moose.element( '/model/elec/soma' ).inject = 0e-12 - moose.start( runtime ) - moose.element( '/model/elec/soma' ).inject = -1e-12 - moose.start( runtime ) - moose.element( '/model/elec/soma' ).inject = 0e-12 - moose.start( runtime ) - fig = plt.figure( figsize = (12,10) ) - t = numpy.arange( 0, caplot.vector.size, 1 ) * caplot.dt - p1 = fig.add_subplot( 411 ) - p1.plot( t, caplot.vector, label="Ca elec" ) - p1.legend() - p2 = fig.add_subplot( 412 ) - p2.plot( t, vmplot.vector, label="Vm" ) - p2.legend() - p3 = fig.add_subplot( 413 ) - p3.plot( t, ikplot.vector, label="Ik for K_A" ) - p3.legend() - p4 = fig.add_subplot( 414 ) - for x in moose.wildcardFind( '/graphs/#[FIELD(tick)=18]' ): - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt - p4.plot( t, x.vector, label=x.name ) - p4.legend() - plt.show() - quit() - -if __name__ == '__main__': - main() diff --git a/examples/snippets/neuronFromDotp.py b/examples/snippets/neuronFromDotp.py deleted file mode 100644 index 8b8702c..0000000 --- a/examples/snippets/neuronFromDotp.py +++ /dev/null @@ -1,157 +0,0 @@ -# neuronFromDotp.py --- -# Author: Upi Bhalla NCBS Bangalore 2014. -# Commentary: - -# Demonstrates how to load a simple neuronal model in GENESIS dotp format. -# The model has branches and a few spines. -# It is adorned just with classic HH squid channels. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -#import sys -#sys.path.append('../../python') -import math -import pylab -import numpy -import moose - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def makeChannelPrototypes(): - """Create channel prototypes for readcell.""" - library = moose.Neutral( '/library' ) - moose.setCwe( '/library' ) - compt = moose.SymCompartment( '/library/symcompartment' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 * 0.5 - compt.Rm = 4.2e5 * 5.0 - compt.Ra = 7639.44e3 - nachan = moose.HHChannel( '/library/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) - yGate.useInterpolation = 1 - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - - kchan = moose.HHChannel( '/library/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - -def addPlot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def dumpPlots(): - plots = moose.wildcardFind( '/graphs/##[ISA=Table]' ) - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.size ) * x.dt # msec - pylab.plot( t, x.vector, label=x.name) - - pylab.legend() - pylab.show() - -def makeModel(): - makeChannelPrototypes() - cellId = moose.loadModel( 'dotp.p', '/model', 'Neutral' ) - moose.element( '/model/soma' ).inject = 1.7e-9 - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/soma', 'getVm', 'somaVm' ) - addPlot( '/model/apical_14', 'getVm', 'midVm' ) - addPlot( '/model/lat_15_2', 'getVm', 'latVm' ) - addPlot( '/model/apical_19', 'getVm', 'tipVm' ) - -def testModel( useSolver ): - plotDt = 2e-4 - if ( useSolver ): - elecDt = 50e-6 - chemDt = 2e-3 - - makeModel() - moose.setClock( 18, plotDt ) - - moose.reinit() - moose.start( 0.1 ) - dumpPlots() - -def main(): - testModel( 1 ) - -if __name__ == '__main__': - main() - -# -# neuronFromDotp.py ends here diff --git a/examples/snippets/nsdf.py b/examples/snippets/nsdf.py deleted file mode 100644 index 93db916..0000000 --- a/examples/snippets/nsdf.py +++ /dev/null @@ -1,175 +0,0 @@ -# nsdf.py --- -# -# Filename: nsdf.py -# Description: -# Author: subha -# Maintainer: -# Created: Fri Jun 26 12:23:07 2015 (-0400) -# Version: -# Last-Updated: Tue Dec 29 12:50:27 2015 (-0500) -# By: Subhasis Ray -# Update #: 6 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""NSDF : Neuroscience Simulation Data Format -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -NSDF is an HDF5 based format for storing data from neuroscience -simulation. - -This script is for demonstrating the use of NSDFWriter class to -dump data in NSDF format. - -The present implementation of NSDFWriter puts all value fields -connected to its requestData into -/data/uniform/{className}/{fieldName} 2D dataset - each row -corresponding to one object. - -Event data are stored in -/data/event/{className}/{fieldName}/{Id}_{dataIndex}_{fieldIndex} -where the last component is the string representation of the ObjId of -the source. - -The model tree (starting below root element) is saved as a tree of -groups under /model/modeltree (one could easily add the fields as -atributes with a little bit of more code). - -The mapping between data source and uniformly sampled data is stored -as a dimension scale in /map/uniform/{className}/{fieldName}. That for -event data is stored as a compound dataset in -/map/event/{className}/{fieldName} with a [source, data] columns. - -The start and end timestamps of the simulation are saved as file -attributes: C/C++ time functions have this limitation that they give -resolution up to a second, this means for simulation lasting < 1 s the -two timestamps may be identical. - -Much of the environment specification is set as HDF5 attributes (which -is a generic feature from HDF5WriterBase). - -MOOSE is unit agnostic at present so unit specification is not -implemented in NSDFWriter. But units can be easily added as dataset -attribute if desired as shown in this example. - - -References: - -Ray, Chintaluri, Bhalla and Wojcik. NSDF: Neuroscience Simulation Data -Format, Neuroinformatics, 2015. - -http://nsdf.readthedocs.org/en/latest/ - -See also: -nsdf_vec.py -""" - -import numpy as np -from datetime import datetime -import getpass - -import moose - -def setup_model(): - """Setup a dummy model with a PulseGen and a SpikeGen. The SpikeGen - detects the leading edges of the pulses created by the PulseGen - and sends out the event times. We record the PulseGen outputValue - as Uniform data and leading edge time as Event data in the NSDF - file. - - """ - simtime = 100.0 - dt = 1e-3 - model = moose.Neutral('/model') - pulse = moose.PulseGen('/model/pulse') - pulse.level[0] = 1.0 - pulse.delay[0] = 10 - pulse.width[0] = 20 - t_lead = moose.SpikeGen('/model/t_lead') - t_lead.threshold = 0.5 - moose.connect(pulse, 'output', t_lead,'Vm'); - nsdf = moose.NSDFWriter('/model/writer') - nsdf.filename = 'nsdf_demo.h5' - nsdf.mode = 2 #overwrite existing file - nsdf.flushLimit = 100 - moose.connect(nsdf, 'requestOut', pulse, 'getOutputValue') - print 'event input', nsdf.eventInput, nsdf.eventInput.num - print nsdf - - nsdf.eventInput.num = 1 - ei = nsdf.eventInput[0] - print ei.path - moose.connect(t_lead, 'spikeOut', nsdf.eventInput[0], 'input') - tab = moose.Table('spiketab') - tab.threshold = t_lead.threshold - clock = moose.element('/clock') - for ii in range(32): - moose.setClock(ii, dt) - moose.connect(pulse, 'output', tab, 'spike') - print 'Starting simulation at:', datetime.now().isoformat() - moose.reinit() - moose.start(simtime) - print 'Finished simulation at:', datetime.now().isoformat() - np.savetxt('nsdf.txt', tab.vector) - ################################### - # Set the environment attributes - ################################### - nsdf.stringAttr['title'] = 'NSDF writing demo for moose' - nsdf.stringAttr['description'] = '''An example of writing data to NSDF file from MOOSE simulation. In -this simulation we generate square pules from a PulseGen object and -use a SpikeGen to detect the threshold crossing events of rising -edges. We store the pulsegen output as Uniform data and the threshold -crossing times as Event data. ''' - nsdf.stringAttr['creator'] = getpass.getuser() - nsdf.stringVecAttr['software'] = ['python2.7', 'moose3' ] - nsdf.stringVecAttr['method'] = [''] - nsdf.stringAttr['rights'] = '' - nsdf.stringAttr['license'] = 'CC-BY-NC' - # Specify units. MOOSE is unit agnostic, so we explicitly set the - # unit attibutes on individual datasets - nsdf.stringAttr['/data/uniform/PulseGen/outputValue/tunit'] = 's' - nsdf.stringAttr['/data/uniform/PulseGen/outputValue/unit'] = 'A' - eventDataPath = '/data/event/SpikeGen/spikeOut/{}_{}_{}/unit'.format(t_lead.vec.value, - t_lead.getDataIndex(), - t_lead.fieldIndex) - nsdf.stringAttr[eventDataPath] = 's' - - -if __name__ == '__main__': - setup_model() - - -# -# nsdf.py ends here diff --git a/examples/snippets/nsdf_vec.py b/examples/snippets/nsdf_vec.py deleted file mode 100644 index 879c26d..0000000 --- a/examples/snippets/nsdf_vec.py +++ /dev/null @@ -1,182 +0,0 @@ -# nsdf_vec.py --- -# -# Filename: nsdf_vec.py -# Description: -# Author: subha -# Maintainer: -# Created: Sat Dec 19 22:27:27 2015 (-0500) -# Version: -# Last-Updated: Thu Aug 11 11:09:33 2016 (-0400) -# By: Subhasis Ray -# Update #: 135 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Example code to dump data from multiple elements in a vector. - -In this demo we create a PulseGen vector where each element has a -different set of pulse parameters. After saving the output vector -directly using MOOSE NSDFWriter we open the NSDF file using h5py and -plot the saved data. - -You need h5py module installed to run this simulation. - -References: - -Ray, Chintaluri, Bhalla and Wojcik. NSDF: Neuroscience Simulation Data -Format, Neuroinformatics, 2015. - -http://nsdf.readthedocs.org/en/latest/ - -See also: - -nsdf.py - -""" - -from __future__ import print_function -import numpy as np -from datetime import datetime -import getpass -import h5py as h5 -from matplotlib import pyplot as plt - -import moose - -def write_nsdf(): - """Setup a dummy model with a PulseGen vec and dump the outputValue in - NSDF file - - """ - simtime = 100.0 - dt = 1e-3 - elements = 5 - model = moose.Neutral('/model') - pulsegen = moose.PulseGen('/model/pulse', elements) - spikegen = moose.SpikeGen('/model/t_lead', elements) - nsdf = moose.NSDFWriter('/model/writer') - nsdf.filename = 'nsdf_vec_demo.h5' - nsdf.mode = 2 #overwrite existing file - # nsdf.eventInput.num = elements - nsdf.flushLimit = 100 - for ii in range(elements): - pulse = pulsegen.vec[ii] - t_lead = spikegen.vec[ii] - # Just to make the values different for different elements in - # the vec ... - pulse.level[0] = 1.0*(ii+1) - pulse.delay[0] = 5 * (ii+1) - pulse.width[0] = 20 - t_lead.threshold = 0.5 - moose.connect(pulse, 'output', t_lead,'Vm') - moose.connect(nsdf, 'requestOut', pulse, 'getOutputValue') - # ei = nsdf.eventInput[ii] - # moose.connect(t_lead, 'spikeOut', ei, 'input') - # tab = moose.Table('spiketab_{}'.format(ii)) - # tab.threshold = t_lead.threshold - # moose.connect(pulse, 'output', tab, 'spike') - clock = moose.element('/clock') - for ii in range(32): - moose.setClock(ii, dt) - print('Starting simulation at:', datetime.now().isoformat()) - moose.reinit() - moose.start(simtime) - print('Finished simulation at:', datetime.now().isoformat()) - ################################### - # Set the environment attributes - ################################### - nsdf.stringAttr['title'] = 'NSDF writing demo for moose' - nsdf.stringAttr['description'] = '''An example of writing data to NSDF file from MOOSE simulation. In -this simulation we generate square pules from a PulseGen object and -use a SpikeGen to detect the threshold crossing events of rising -edges. We store the pulsegen output as Uniform data and the threshold -crossing times as Event data. ''' - nsdf.stringAttr['creator'] = getpass.getuser() - nsdf.stringVecAttr['software'] = ['python2.7', 'moose3' ] - nsdf.stringVecAttr['method'] = [''] - nsdf.stringAttr['rights'] = '' - nsdf.stringAttr['license'] = 'CC-BY-NC' - #################################################### - ## !! Work in progress: concurrent write via h5py does not work !! - #################################################### - ## Now write some custom stuff via h5py - print('Closing nsdf handle') - nsdf.close() #explicitly close the file so we do not interfere with h5py - print('Closed nsdf handle') - with h5.File(nsdf.filename, 'a') as fd: - static = fd.create_group('/data/static') - static_pg = static.create_group(pulsegen.className) - pulse_info = static_pg.create_dataset('pulse_0', (elements,), dtype=np.dtype([('delay', 'float64'), ('level', 'float64'), ('width','float64')])) - map_ = fd.create_group('/map/static') - map_pg = map_.create_group(pulsegen.className) - map_pulse = map_pg.create_dataset('pulse_0', (elements,), dtype=h5.special_dtype(vlen=str)) - for ii in range(elements): - pulse_info['delay', ii] = pulsegen.vec[ii].delay[0] - pulse_info['width', ii] = pulsegen.vec[ii].width[0] - pulse_info['level', ii] = pulsegen.vec[ii].level[0] - map_pulse[ii] = pulsegen.vec[ii].path - #TODO: connect this as a dimension scale on pulse_info - - return nsdf.filename - -def read_nsdf(fname): - """Read the specific file we created in this example. - - Note that the preferable way of associating source with data is to - use the DimensionScale. But since there is one-to-one - correspondence between the data rows and the map rows (source - path), we are exploiting that here. - - """ - with h5.File(fname, 'r') as fd: - pulse_data = fd['/data/uniform/PulseGen/outputValue'] - pulse_src = fd['/map/uniform/PulseGen/outputValue'] - for ii in range(len(pulse_src)): - source = pulse_src[ii] - data = pulse_data[ii, :] - dt = pulse_data.attrs['dt'] - plt.figure(source) - ts = np.arange(len(data)) * dt - plt.plot(ts, data) - plt.suptitle(source) - plt.show() - - -if __name__ == '__main__': - fname = write_nsdf() - read_nsdf(fname) - -# -# nsdf_vec.py ends here diff --git a/examples/snippets/onetoonemsg.py b/examples/snippets/onetoonemsg.py deleted file mode 100644 index 7f875f6..0000000 --- a/examples/snippets/onetoonemsg.py +++ /dev/null @@ -1,74 +0,0 @@ -# onetoonemsg.py --- -# -# Filename: onetoonemsg.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Wed May 1 11:05:30 2013 (+0530) -# Version: -# Last-Updated: Wed May 1 11:12:07 2013 (+0530) -# By: subha -# Update #: 24 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import pylab -import sys -sys.path.append('../../python') -import moose - -def test_one_to_one(size=2): - pg = moose.PulseGen('pulsegen', size) - for ix, ii in enumerate(pg.vec): - pulse = moose.element(ii) - pulse.delay[0] = 1.0 - pulse.width[0] = 2.0 - pulse.level[0] = (-1)**ix - tab = moose.Table('pulseamp', size) - moose.connect(tab, 'requestOut', pg, 'getOutputValue', 'OneToOne') - moose.setClock(0, 0.1) - moose.useClock(0, '/##', 'process') - moose.start(5) - for ii in tab.vec: - t = moose.Table(ii).vector - pylab.plot(t) - pylab.show() - -if __name__ == '__main__': - test_one_to_one() - -# -# onetoonemsg.py ends here diff --git a/examples/snippets/proto18.py b/examples/snippets/proto18.py deleted file mode 100644 index 83448ef..0000000 --- a/examples/snippets/proto18.py +++ /dev/null @@ -1,510 +0,0 @@ -#/* FILE INFORMATION -#** Based mostly on the traub91proto.g by Dave Beeman -#** Main difference is addition of Glu and NMDA channels -#** The 1991 Traub set of voltage and concentration dependent channels -#** Implemented as tabchannels by : Dave Beeman -#** R.D.Traub, R. K. S. Wong, R. Miles, and H. Michelson -#** Journal of Neurophysiology, Vol. 66, p. 635 (1991) -#** -#** This file depends on functions and constants defined in defaults.g -#** As it is also intended as an example of the use of the tabchannel -#** object to implement concentration dependent channels, it has extensive -#** comments. Note that the original units used in the paper have been -#** converted to SI (MKS) units. Also, we define the ionic equilibrium -#** potentials relative to the resting potential, EREST_ACT. In the -#** paper, this was defined to be zero. Here, we use -0.060 volts, the -#** measured value relative to the outside of the cell. -#*/ - -#/* November 1999 update for GENESIS 2.2: Previous versions of this file used -# a combination of a table, tabgate, and vdep_channel to implement the -# Ca-dependent K Channel - K(C). This new version uses the new tabchannel -# "instant" field, introduced in GENESIS 2.2, to implement an -# "instantaneous" gate for the multiplicative Ca-dependent factor in the -# conductance. This allows these channels to be used with the fast -# hsolve chanmodes > 1. -#*/ - -# Apr 2012 update for pymoose. Converted to equivalent MOOSE funcs. - -import moose -import numpy -import math - -#CONSTANTS -EREST_ACT = -0.060 #/* hippocampal cell resting potl */ -ENA = 0.115 + EREST_ACT #// 0.055 -EK = -0.015 + EREST_ACT #// -0.075 -ECA = 0.140 + EREST_ACT #// 0.080 -SOMA_A = 3.320e-9 #// soma area in square meters - -#/* -#For these channels, the maximum channel conductance (Gbar) has been -#calculated using the CA3 soma channel conductance densities and soma -#area. Typically, the functions which create these channels will be used -#to create a library of prototype channels. When the cell reader creates -#copies of these channels in various compartments, it will set the actual -#value of Gbar by calculating it from the cell parameter file. -#*/ - -#//======================================================================== -#// Tabulated Ca Channel -#//======================================================================== - -def make_Ca(): - if moose.exists( 'Ca' ): - return - Ca = moose.HHChannel( 'Ca' ) - Ca.Ek = ECA - Ca.Gbar = 40 * SOMA_A - Ca.Gk = 0 - Ca.Xpower = 2 - Ca.Ypower = 1 - Ca.Zpower = 0 - - xgate = moose.element( 'Ca/gateX' ) - xA = numpy.array( [ 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389, -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3, 3000, -0.1, 0.05 ] ) -# xgate.min = -0.1 -# xgate.max = 0.05 -# xgate.divs = 3000 -#// Converting Traub's expressions for the gCa/s alpha and beta functions -#// to SI units and entering the A, B, C, D and F parameters, we get: -# xgate.alpha( 1.6e3, 0, 1.0, -1.0 * (0.065 + EREST_ACT), -0.01389 ) -# xgate.beta( -20e3 * (0.0511 + EREST_ACT), 20e3, -1.0, -1.0 * (0.0511 + EREST_ACT), 5.0e-3 ) - #xgate.setupAlpha( xA ) - xgate.alphaParms = xA - - -# The Y gate (gCa/r) is not quite of this form. For V > EREST_ACT, alpha = -# 5*{exp({-50*(V - EREST_ACT)})}. Otherwise, alpha = 5. Over the entire -# range, alpha + beta = 5. To create the Y_A and Y_B tables, we use some -# of the pieces of the setupalpha function. - ygate = moose.element( 'Ca/gateY' ) - ygate.min = -0.1 - ygate.max = 0.05 - ygate.divs = 3000 - yA = numpy.zeros( (ygate.divs + 1), dtype=float) - yB = numpy.zeros( (ygate.divs + 1), dtype=float) - - -#Fill the Y_A table with alpha values and the Y_B table with (alpha+beta) - dx = (ygate.max - ygate.min)/ygate.divs - x = ygate.min - for i in range( ygate.divs + 1 ): - if ( x > EREST_ACT): - yA[i] = 5.0 * math.exp( -50 * (x - EREST_ACT) ) - else: - yA[i] = 5.0 - yB[i] = 5.0 - x += dx - ygate.tableA = yA - ygate.tableB = yB -# Tell the cell reader that the current from this channel must be fed into -# the Ca_conc pool of calcium. - addmsg1 = moose.Mstring( '/library/Ca/addmsg1' ) - addmsg1.value = '. IkOut ../Ca_conc current' -# in some compartments, whe have an NMDA_Ca_conc object to put the current -# into. - addmsg2 = moose.Mstring( '/library/Ca/addmsg2' ) - addmsg2.value = '. IkOut ../NMDA_Ca_conc current' -# As we typically use the cell reader to create copies of these prototype -#elements in one or more compartments, we need some way to be sure that the -#needed messages are established. Although the cell reader has enough -#information to create the messages which link compartments to their channels -#and to other adjacent compartments, it most be provided with the information -#needed to establish additional messages. This is done by placing the -#message string in a user-defined field of one of the elements which is -#involved in the message. The cell reader recognizes the added object names -#"addmsg1", "addmsg2", etc. as indicating that they are to be -#evaluated and used to set up messages. The paths are relative to the -#element which contains the message string in its added field. Thus, -#"../Ca_conc" refers to the sibling element Ca_conc and "." -#refers to the Ca element itself. - - -#/************************************************************************* -#Next, we need an element to take the Calcium current calculated by the Ca -#channel and convert it to the Ca concentration. The "Ca_concen" object -#solves the equation dC/dt = B*I_Ca - C/tau, and sets Ca = Ca_base + C. As -#it is easy to make mistakes in units when using this Calcium diffusion -#equation, the units used here merit some discussion. - -#With Ca_base = 0, this corresponds to Traub's diffusion equation for -#concentration, except that the sign of the current term here is positive, as -#GENESIS uses the convention that I_Ca is the current flowing INTO the -#compartment through the channel. In SI units, the concentration is usually -#expressed in moles/m^3 (which equals millimoles/liter), and the units of B -#are chosen so that B = 1/(ion_charge * Faraday * volume). Current is -#expressed in amperes and one Faraday = 96487 coulombs. However, in this -#case, Traub expresses the concentration in arbitrary units, current in -#microamps and uses tau = 13.33 msec. If we use the same concentration units, -#but express current in amperes and tau in seconds, our B constant is then -#10^12 times the constant (called "phi") used in the paper. The actual value -#used will be typically be determined by the cell reader from the cell -#parameter file. However, for the prototype channel we wlll use Traub's -#corrected value for the soma. (An error in the paper gives it as 17,402 -#rather than 17.402.) In our units, this will be 17.402e12. - -#*************************************************************************/ - - -#//======================================================================== -#// Ca conc -#//======================================================================== - -def make_Ca_conc(): - if moose.exists( 'Ca_conc' ): - return - conc = moose.CaConc( 'Ca_conc' ) - conc.tau = 0.013333 # sec - conc.B = 17.402e12 # Curr to conc conversion for soma - conc.Ca_base = 0.0 - -#This Ca_concen element should receive a message from any calcium channels -# with the current going through the channel. Here we have this specified -# in the Ca channel, with the idea that more than one channel might -# contribute Ca ions to this calcium pool. In the original GENESIS file -# this was specified here in make_Ca_conc. - -#======================================================================== -# Tabulated Ca-dependent K AHP Channel -#======================================================================== - -# This is a tabchannel which gets the calcium concentration from Ca_conc -# in order to calculate the activation of its Z gate. It is set up much -# like the Ca channel, except that the A and B tables have values which are -# functions of concentration, instead of voltage. - -def make_K_AHP(): - if moose.exists( 'K_AHP' ): - return - - K_AHP = moose.HHChannel( 'K_AHP' ) - K_AHP.Ek = EK # V - K_AHP.Gbar = 8 * SOMA_A # S - K_AHP.Gk = 0 # S - K_AHP.Xpower = 0 - K_AHP.Ypower = 0 - K_AHP.Zpower = 1 - - zgate = moose.element( 'K_AHP/gateZ' ) - xmax = 500.0 - zgate.min = 0 - zgate.max = xmax - zgate.divs = 3000 - zA = numpy.zeros( (zgate.divs + 1), dtype=float) - zB = numpy.zeros( (zgate.divs + 1), dtype=float) - dx = (zgate.max - zgate.min)/zgate.divs - x = zgate.min - for i in range( zgate.divs + 1 ): - if (x < (xmax / 2.0 )): - zA[i] = 0.02*x - else: - zA[i] = 10.0 - zB[i] = zA[i] + 1.0 - x = x + dx - - zgate.tableA = zA - zgate.tableB = zB - addmsg1 = moose.Mstring( '/library/K_AHP/addmsg1' ) - addmsg1.value = '../Ca_conc concOut . concen' -# Use an added field to tell the cell reader to set up a message from the -# Ca_Conc with concentration info, to the current K_AHP object. - - -#//======================================================================== -#// Ca-dependent K Channel - K(C) - (vdep_channel with table and tabgate) -#//======================================================================== - -#The expression for the conductance of the potassium C-current channel has a -#typical voltage and time dependent activation gate, where the time dependence -#arises from the solution of a differential equation containing the rate -#parameters alpha and beta. It is multiplied by a function of calcium -#concentration that is given explicitly rather than being obtained from a -#differential equation. Therefore, we need a way to multiply the activation -#by a concentration dependent value which is determined from a lookup table. -#This is accomplished by using the Z gate with the new tabchannel "instant" -#field, introduced in GENESIS 2.2, to implement an "instantaneous" gate for -#the multiplicative Ca-dependent factor in the conductance. - -def make_K_C(): - if moose.exists( 'K_C'): - return - - K_C = moose.HHChannel( 'K_C' ) - K_C.Ek = EK # V - K_C.Gbar = 100.0 * SOMA_A # S - K_C.Gk = 0 # S - K_C.Xpower = 1 - K_C.Zpower = 1 - K_C.instant = 4 # Flag: 0x100 means Z gate is instant. - - # Now make a X-table for the voltage-dependent activation parameter. - xgate = moose.element( 'K_C/gateX' ) - xgate.min = -0.1 - xgate.max = 0.05 - xgate.divs = 3000 - xA = numpy.zeros( (xgate.divs + 1), dtype=float) - xB = numpy.zeros( (xgate.divs + 1), dtype=float) - dx = (xgate.max - xgate.min)/xgate.divs - x = xgate.min - for i in range( xgate.divs + 1 ): - alpha = 0.0 - beta = 0.0 - if (x < EREST_ACT + 0.05): - alpha = math.exp( 53.872 * (x - EREST_ACT) - 0.66835 ) / 0.018975 - beta = 2000* (math.exp ( (EREST_ACT + 0.0065 - x)/0.027)) - alpha - else: - alpha = 2000 * math.exp( ( EREST_ACT + 0.0065 - x)/0.027 ) - beta = 0.0 - xA[i] = alpha - xB[i] = alpha + beta - x = x + dx - xgate.tableA = xA - xgate.tableB = xB - -# Create a table for the function of concentration, allowing a -# concentration range of 0 to 1000, with 50 divisions. This is done -# using the Z gate, which can receive a CONCEN message. By using -# the "instant" flag, the A and B tables are evaluated as lookup tables, -# rather than being used in a differential equation. - zgate = moose.element( 'K_C/gateZ' ) - zgate.min = 0.0 - xmax = 500.0 - zgate.max = xmax - zgate.divs = 3000 - zA = numpy.zeros( (zgate.divs + 1), dtype=float) - zB = numpy.zeros( (zgate.divs + 1), dtype=float) - dx = ( zgate.max - zgate.min)/ zgate.divs - x = zgate.min - for i in range( xgate.divs + 1 ): - if ( x < ( xmax / 4.0 ) ): - zA[i] = x * 4.0 / xmax - else: - zA[i] = 1.0 - zB[i] = 1.0 - x += dx - zgate.tableA = zA - zgate.tableB = zB - -# Now we need to provide for messages that link to external elements. -# The message that sends the Ca concentration to the Z gate tables is stored -# in an added field of the channel, so that it may be found by the cell -# reader. - addmsg1 = moose.Mstring( '/library/K_C/addmsg1' ) - addmsg1.value = '../Ca_conc concOut . concen' - - -# The remaining channels are straightforward tabchannel implementations - -#/======================================================================== -#/ Tabchannel Na Hippocampal cell channel -#/======================================================================== -def make_Na(): - if moose.exists( 'Na' ): - return - Na = moose.HHChannel( 'Na' ) - Na.Ek = ENA # V - Na.Gbar = 300 * SOMA_A # S - Na.Gk = 0 # S - Na.Xpower = 2 - Na.Ypower = 1 - Na.Zpower = 0 - - xgate = moose.element( 'Na/gateX' ) - xA = numpy.array( [ 320e3 * (0.0131 + EREST_ACT), - -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004, - -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, - -1.0 * (0.0401 + EREST_ACT), 5.0e-3, - 3000, -0.1, 0.05 ] ) - xgate.alphaParms = xA - - - #xgate.alpha( 320e3 * (0.0131 + EREST_ACT), -320e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.004 ) - #xgate.beta( -280e3 * (0.0401 + EREST_ACT), 280e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 5.0e-3 ) - - ygate = moose.element( 'Na/gateY' ) - yA = numpy.array( [ 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018, - 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3, - 3000, -0.1, 0.05 ] ) - ygate.alphaParms = yA - - #ygate.alpha( 128.0, 0.0, 0.0, -1.0 * (0.017 + EREST_ACT), 0.018 ) - #ygate.beta( 4.0e3, 0.0, 1.0, -1.0 * (0.040 + EREST_ACT), -5.0e-3 ) - -#======================================================================== -# Tabchannel K(DR) Hippocampal cell channel -#======================================================================== -def make_K_DR(): - if moose.exists( 'K_DR' ): - return - K_DR = moose.HHChannel( 'K_DR' ) - K_DR.Ek = EK # V - K_DR.Gbar = 150 * SOMA_A # S - K_DR.Gk = 0 # S - K_DR.Xpower = 1 - K_DR.Ypower = 0 - K_DR.Zpower = 0 - - xgate = moose.element( 'K_DR/gateX' ) - xA = numpy.array( [ 16e3 * (0.0351 + EREST_ACT), - -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005, - 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04, - 3000, -0.1, 0.05 ] ) - xgate.alphaParms = xA - #xgate.alpha( 16e3 * (0.0351 + EREST_ACT), -16e3, -1.0, -1.0 * (0.0351 + EREST_ACT), -0.005 ) - #xgate.beta( 250, 0.0, 0.0, -1.0 * (0.02 + EREST_ACT), 0.04 ) - -#======================================================================== -# Tabchannel K(A) Hippocampal cell channel -#======================================================================== -def make_K_A(): - if moose.exists( 'K_A' ): - return - K_A = moose.HHChannel( 'K_A' ) - K_A.Ek = EK # V - K_A.Gbar = 50 * SOMA_A # S - K_A.Gk = 0 # S - K_A.Xpower = 1 - K_A.Ypower = 1 - K_A.Zpower = 0 - - xgate = moose.element( 'K_A/gateX' ) - xA = numpy.array( [ 20e3 * (0.0131 + EREST_ACT), - -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01, - -17.5e3 * (0.0401 + EREST_ACT), - 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01, - 3000, -0.1, 0.05 ] ) - xgate.alphaParms = xA - # xgate.alpha( 20e3 * (0.0131 + EREST_ACT), -20e3, -1.0, -1.0 * (0.0131 + EREST_ACT), -0.01 ) - # xgate.beta( -17.5e3 * (0.0401 + EREST_ACT), 17.5e3, -1.0, -1.0 * (0.0401 + EREST_ACT), 0.01 ) - - ygate = moose.element( 'K_A/gateY' ) - yA = numpy.array( [ 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018, - 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005, - 3000, -0.1, 0.05 ] ) - ygate.alphaParms = yA - # ygate.alpha( 1.6, 0.0, 0.0, 0.013 - EREST_ACT, 0.018 ) - # ygate.beta( 50.0, 0.0, 1.0, -1.0 * (0.0101 + EREST_ACT), -0.005 ) -#======================================================================== -# SynChan: Glu receptor -#======================================================================== - -def make_glu(): - if moose.exists( 'glu' ): - return - glu = moose.SynChan( 'glu' ) - glu.Ek = 0.0 - glu.tau1 = 2.0e-3 - glu.tau2 = 9.0e-3 - glu.Gbar = 40 * SOMA_A - sh = moose.SimpleSynHandler( 'glu/sh' ) - moose.connect( sh, 'activationOut', glu, 'activation' ) - sh.numSynapses = 1 - sh.synapse[0].weight = 1 - - -#======================================================================== -# SynChan: NMDA receptor -#======================================================================== - -def make_NMDA(): - if moose.exists( 'NMDA' ): - return - NMDA = moose.SynChan( 'NMDA' ) - NMDA.Ek = 0.0 - NMDA.tau1 = 20.0e-3 - NMDA.tau2 = 20.0e-3 - NMDA.Gbar = 5 * SOMA_A - - block = moose.MgBlock( '/library/NMDA/block' ) - block.CMg = 1.2 # [Mg] in mM - block.Zk = 2 - block.KMg_A = 1.0/0.28 - block.KMg_B = 1.0/62 - - moose.connect( NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) - addmsg1 = moose.Mstring( '/library/NMDA/addmsg1' ) - addmsg1.value = '.. channel ./block channel' - #Here we want to also tell the cell reader to _remove_ the original - #Gk, Ek term going from the channel to the compartment, as this is - # now handled by the MgBlock. - #addmsg2 = moose.Mstring( 'NMDA/addmsg2' - #addmsg2.value = 'DropMsg .. channel' - addmsg1 = moose.Mstring( '/library/NMDA/addmsg1' ) - addmsg1.value = '.. VmOut ./block Vm' - addmsg2 = moose.Mstring( '/library/NMDA/addmsg2' ) - addmsg2.value = './block IkOut ../Ca_conc current' - addmsg3 = moose.Mstring( '/library/NMDA/addmsg3' ) - addmsg3.value = '.. VmOut . Vm' - - sh = moose.SimpleSynHandler( 'NMDA/sh' ) - moose.connect( sh, 'activationOut', NMDA, 'activation' ) - sh.numSynapses = 1 - sh.synapse[0].weight = 1 - -#addfield NMDA addmsg1 -#setfield NMDA addmsg1 ".. ./block VOLTAGE Vm" -#addfield NMDA addmsg2 -#setfield NMDA addmsg2 "./block .. CHANNEL Gk Ek" - -#======================================================================== -# The Ca_NMDA channel is a subset of the NMDA channel that carries Ca. -# It is identical to above, except that the Ek for Ca is much higher: -# 0.08 V from the consts at the top of this file. -# This is about the reversal potl for 1 uM Ca_in, 2 mM out. -# Also we do not want this channel to contribute to the current, -# which is already accounted for in the main channel. So there is -# no CHANNEL message to the parent compartment. -# I would like to have used the Nernst to do the Ca potential, and -# Synchans now take Ek messages but I haven't yet used this. -#======================================================================== - -def make_Ca_NMDA(): - if moose.exists( 'Ca_NMDA' ): - return - Ca_NMDA = moose.SynChan( 'Ca_NMDA' ) - Ca_NMDA.Ek = ECA - Ca_NMDA.tau1 = 20.0e-3 - Ca_NMDA.tau2 = 20.0e-3 - Ca_NMDA.Gbar = 5 * SOMA_A - - block = moose.MgBlock( '/library/Ca_NMDA/block' ) - block.CMg = 1.2 # [Mg] in mM - block.Zk = 2 - block.KMg_A = 1.0/0.28 - block.KMg_B = 1.0/62 - - moose.connect( Ca_NMDA, 'channelOut', block, 'origChannel', 'OneToOne' ) - addmsg1 = moose.Mstring( '/library/Ca_NMDA/addmsg1' ) - addmsg1.value = '.. VmOut ./block Vm' - addmsg2 = moose.Mstring( '/library/Ca_NMDA/addmsg2' ) - addmsg2.value = './block IkOut ../NMDA_Ca_conc current' - # The original model has the Ca current also coming here. - -#======================================================================== -# Ca pool for influx through Ca_NMDA -#======================================================================== -def make_NMDA_Ca_conc(): - if moose.exists( 'NMDA_Ca_conc' ): - return - NMDA_Ca_conc = moose.CaConc( 'NMDA_Ca_conc' ) - NMDA_Ca_conc.tau = 0.004 # sec. Faster in spine than dend - NMDA_Ca_conc.B = 17.402e12 # overridden by cellreader. - NMDA_Ca_conc.Ca_base = 0.0 - -# This pool used to set up Ca info coming to it. Now we insist that the -# originating channel should specify the deferred message. - -#===================================================================== -# SPIKE DETECTOR -#===================================================================== - -#//addmsg axon/spike axon BUFFER name -def make_axon(): - if moose.exists( 'axon' ): - return - axon = moose.SpikeGen( 'axon' ) - axon.threshold = -40e-3 # V - axon.abs_refract = 10e-3 # sec - diff --git a/examples/snippets/pulsegen.py b/examples/snippets/pulsegen.py deleted file mode 100644 index 2f6cfa3..0000000 --- a/examples/snippets/pulsegen.py +++ /dev/null @@ -1,78 +0,0 @@ - -# pulsegen.py --- -# -# Filename: pulsegen.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sat Jun 23 10:26:25 2012 (+0530) -# Version: -# Last-Updated: Sat Jun 23 13:51:28 2012 (+0530) -# By: subha -# Update #: 34 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import sys -sys.path.append('../../python') -import moose -from matplotlib import pyplot as plt -import numpy as np - -def multilevel_pulsegen(): - """Demonstrates a pulsegen with multiple levels, delays and - widths.""" - pg = moose.PulseGen('pulsegen') - pg.count = 5 - for ii in range(pg.count): - pg.level[ii] = ii+1 - pg.width[ii] = 0.1 - pg.delay[ii] = 0.5 * (ii+1) - tab = moose.Table('tab') - moose.connect(tab, 'requestOut', pg, 'getOutputValue') - moose.setClock(0, 0.01) - moose.useClock(0, '%s,%s' % (pg.path, tab.path), 'process') - moose.reinit() - moose.start(20.0) - plt.plot(tab.vector) - plt.show() - -if __name__ == '__main__': - multilevel_pulsegen() - - -# -# pulsegen.py ends here diff --git a/examples/snippets/pulsegen2.py b/examples/snippets/pulsegen2.py deleted file mode 100644 index 812e630..0000000 --- a/examples/snippets/pulsegen2.py +++ /dev/null @@ -1,170 +0,0 @@ -# pulsegen2.py --- -# -# Filename: pulsegen2.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Jul 8 17:06:23 2015 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Recovered old demo from moose branch (beta 1.4) and converted to -# current API. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. - -# -# - -# Code: - -"""Pulse generator example -^^^^^^^^^^^^^^^^^^^^^^^ - -This example shows the full range of operations of PulseGen objects -with a reimplementation of corresponding GENESIS demo. - -A PulseGen object can be run in three modes: free running -(trigMode=0), triggered (trigMode=1) and gated (trigMode=2). - -In the free running mode it keeps repeating the pulse series -indefinitely. - -In triggered mode, it generates a pulse series on the leading edge of -the trigger signal coming to its `input` field. The trigger can be the -`output` of another PulseGen as in this example. - -In gated mode, the PulseGen acts as if it was free-running as long as -the `input` remains high. - -""" - - - -import moose -import pylab -import numpy -RUNTIME = 200.0 -SIMDT = 1.0 - -# Pulse generator with trigger mode = 0 This is free running - and -# creates a series of pulses -pulse0 = moose.PulseGen("/pulse0") -pulse0.level[0] = 50.0 -pulse0.width[0] = 3.0 -pulse0.delay[0] = 5.0 -pulse0.level[1] = -20.0 -pulse0.width[1] = 5.0 -pulse0.delay[1] = 8.0 -pulse0.baseLevel = 10.0 -pulse0.trigMode = 0 - -trig = moose.PulseGen("/trig") -trig.level[0] = 20.0 -trig.width[0] = 1.0 -trig.delay[0] = 5.0 -trig.width[1] = 30.0 - -# Pulse generator with trigger mode = 1 -pulse1 = moose.PulseGen("/pulse1") -pulse1.level[0] = 50.0 -pulse1.width[0] = 3.0 -pulse1.delay[0] = 5.0 -pulse1.level[1] = -20.0 -pulse1.width[1] = 5.0 -pulse1.delay[1] = 8.0 -pulse1.baseLevel = 10.0 -pulse1.trigMode = 1 -trig.connect("output", pulse1, "input") - -# Gated pulse -gate = moose.PulseGen("/gate") -gate.level[0] = 20.0 -gate.width[0] = 30.0 -gate.delay[0] = 15.0 -gate.width[1] = 30.0 - -# Pulse generator with trigger mode = 2 -pulse2 = moose.PulseGen("/pulse2") -pulse2.level[0] = 50.0 -pulse2.width[0] = 3.0 -pulse2.delay[0] = 5.0 -pulse2.level[1] = -20.0 -pulse2.width[1] = 5.0 -pulse2.delay[1] = 8.0 -pulse2.baseLevel = 10.0 -pulse2.trigMode = 2 -gate.connect("output", pulse2, "input") - -plot0 = moose.Table("/plot0") -plot0.connect("requestOut", pulse0, "getOutputValue") - -plot1 = moose.Table("/plot1") -plot1.connect("requestOut", pulse1, "getOutputValue") - -plot2 = moose.Table("/plot2") -plot2.connect("requestOut", pulse2, "getOutputValue") - -plotGate = moose.Table("/plotGate") -plotGate.connect("requestOut", gate, "getOutputValue") - -plotTrig = moose.Table("/plotTrig") -plotTrig.connect("requestOut", trig, "getOutputValue") - -moose.useClock(0, "/#[TYPE=PulseGen]", 'process') -moose.useClock(1, "/#[TYPE=Table]", 'process') -moose.setClock(0, SIMDT) -moose.setClock(1, SIMDT) -moose.reinit() -moose.start(RUNTIME) - -pylab.subplot(511) -pylab.plot(plot0.vector) -pylab.title('Free Run') -pylab.subplot(512) -pylab.plot(plot1.vector) -pylab.title('Triggered (below)') -pylab.subplot(513) -pylab.plot(plotTrig.vector) -pylab.title('Free Running Trigger') -pylab.subplot(514) -pylab.plot(plot2.vector) -pylab.title('Gated (below)') -pylab.subplot(515) -pylab.plot(plotGate.vector) -pylab.title('Free Running Gate') -pylab.tight_layout() -pylab.show() -print "pulsegen.py: finished simulation" - -# -# pulsegen2.py ends here diff --git a/examples/snippets/pyrun.py b/examples/snippets/pyrun.py deleted file mode 100644 index 6eac0f3..0000000 --- a/examples/snippets/pyrun.py +++ /dev/null @@ -1,219 +0,0 @@ -# pyrun.py --- -# -# Filename: pyrun.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Oct 15 10:14:15 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""You can use the PyRun class to run Python statements from MOOSE at -runtime. This opens up many possibilities of interleaving computing in -Python and MOOSE. You can also use this for debugging simulations. -""" -import numpy as np -from matplotlib import pyplot as plt -import moose - -def run_sequence(): - """In this example we demonstrate the use of PyRun objects to execute - Python statements from MOOSE. Here is a couple of fun things to - indicate the power of MOOSE-Python integration. - - First we create a PyRun object called `Hello`. In its `initString` - we put in Python statements that prints the element's string - representation using pymoose-API. When ``moose.reinit()`` is - called, this causes MOOSE to execute these Python statements which - include Python calling a MOOSE function - (Python->MOOSE->Python->MOOSE) - isn't that cool! - - We also initialize a counter called `hello_count` to 0. - - The statements in initString gets executed once, when we call - ``moose.reinit()``. - - In the `runString` we put a couple of print statements to indicate - the name fof the object which is running and the current - count. Then we increase the count directly. - - When we call ``moose.start()``, the `runString` gets executed at - each time step. - - The other PyRun object we create, is `/World`. In its `initString` - apart from ordinary print statements and initialization, we define - a Python function called ``incr_count``. This silly little - function just increments the global `world_count` by 1. - - The `runString` for `World` simply calls this function to - increment the count and print it. - - We may notice that we assign tick 0 to `Hello` and tick 1 to - `World`. Looking at the output, you will realize that the - sequences of the ticks strictly maintain the sequence of - execution. - - """ - model = moose.Neutral('/model') - hello_runner = moose.PyRun('/model/Hello') - hello_runner.initString = """ -print 'Init', moose.element('/model/Hello') -hello_count = 0 -""" - hello_runner.runString = """ -print 'Running Hello' -print 'Hello count =', hello_count -hello_count += 1 -""" - hello_runner.run('from datetime import datetime') - hello_runner.run('print "Hello: current time:", datetime.now().isoformat()') - moose.useClock(0, hello_runner.path, 'process') - world_runner = moose.PyRun('World') - world_runner.initString = """ -print 'Init World' -world_count = 0 -def incr_count(): - global world_count - world_count += 1 -""" - world_runner.runString = """ -print 'Running World' -print 'World count =', world_count -incr_count() -""" - world_runner.run('from datetime import datetime') - world_runner.run('print "World: current time:", datetime.now().isoformat()') - - moose.useClock(0, world_runner.path, 'process') - moose.reinit() - moose.start(0.001) - - -def input_output(): - """The PyRun class can take a double input through `trigger` - field. Whenever another object sends an input to this field, the - `runString` is executed. - - The fun part of this is that you can use the input value in your - python statements in `runString`. This is stored in a local - variable called `input_`. You can rename this by setting `inputVar` - field. - - Things become even more interesting when you can send out a value - computed using Python. PyRun objects allow you to define a local - variable called `output` and whatever value you assign to this, - will be sent out through the source field `output` on successful - execution of the `runString`. - - You can rename the output variable by setting `outputVar` field. - - In this example, we send the output of a pulsegen object sending - out the values 1, 2, 3 during each pulse and compute the square of - these numbers in Python and set output to this square. - - The calculated value is assigned to the `output` variable and in - turn sent out to a Table object's input and gets recorded. - - By default PyRun executes the `runString` whenever a `trigger` - message is received and when its process method is called at each - timestep. In both cases it sends out the `output` value. Since - this may cause inaccuracies depending on what the Python - statements in `runString` do, a `mode` can be specified to disable - one of the above. We set ``mode = 2`` to disable the `process` - method. Note that this could also have been done by setting its - ``tick = -1``. - - ``mode = 1`` will disable `trigger` message and ``mode = 0``, the - default, enables both. - """ - model = moose.Neutral('/model') - input_pulse = moose.PulseGen('/model/pulse') - #: set the baseline output 0 - input_pulse.baseLevel = 0.0 - #: We make it generate three pulses - input_pulse.count = 3 - input_pulse.level[0] = 1.0 - input_pulse.level[1] = 2.0 - input_pulse.level[2] = 3.0 - #: Each pulse will appear 1 s after the previous one - input_pulse.delay[0] = 1.0 - input_pulse.delay[1] = 1.0 - input_pulse.delay[2] = 1.0 - #: Each pulse is 1 s wide - input_pulse.width[0] = 1.0 - input_pulse.width[1] = 1.0 - input_pulse.width[2] = 1.0 - #: Now create the PyRun object - pyrun = moose.PyRun('/model/pyrun') - pyrun.runString = """ -output = input_ * input_ -print 'input =', input_ -print 'output =', output -""" - pyrun.mode = 2 # do not run process method - moose.connect(input_pulse, 'output', pyrun, 'trigger') - output_table = moose.Table('/model/output') - moose.connect(pyrun, 'output', output_table, 'input') - input_table = moose.Table('/model/input') - moose.connect(input_pulse, 'output', input_table, 'input') - moose.setClock(0, 0.25) - moose.setClock(1, 0.25) - moose.setClock(2, 0.25) - moose.useClock(0, input_pulse.path, 'process') - #: this is unnecessary because the mode=2 ensures that `process` - #: does nothing - moose.useClock(1, pyrun.path, 'process') - moose.useClock(2, '/model/#[ISA=Table]', 'process') - moose.reinit() - moose.start(10.0) - #ts = - plt.plot(input_table.vector, label='input') - plt.plot(output_table.vector, label='output') - plt.legend() - plt.show() - -if __name__ == '__main__': - run_sequence() - moose.delete('/model') - input_output() - - - -# -# pyrun.py ends here diff --git a/examples/snippets/pyrun1.py b/examples/snippets/pyrun1.py deleted file mode 100644 index 6eac0f3..0000000 --- a/examples/snippets/pyrun1.py +++ /dev/null @@ -1,219 +0,0 @@ -# pyrun.py --- -# -# Filename: pyrun.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Oct 15 10:14:15 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""You can use the PyRun class to run Python statements from MOOSE at -runtime. This opens up many possibilities of interleaving computing in -Python and MOOSE. You can also use this for debugging simulations. -""" -import numpy as np -from matplotlib import pyplot as plt -import moose - -def run_sequence(): - """In this example we demonstrate the use of PyRun objects to execute - Python statements from MOOSE. Here is a couple of fun things to - indicate the power of MOOSE-Python integration. - - First we create a PyRun object called `Hello`. In its `initString` - we put in Python statements that prints the element's string - representation using pymoose-API. When ``moose.reinit()`` is - called, this causes MOOSE to execute these Python statements which - include Python calling a MOOSE function - (Python->MOOSE->Python->MOOSE) - isn't that cool! - - We also initialize a counter called `hello_count` to 0. - - The statements in initString gets executed once, when we call - ``moose.reinit()``. - - In the `runString` we put a couple of print statements to indicate - the name fof the object which is running and the current - count. Then we increase the count directly. - - When we call ``moose.start()``, the `runString` gets executed at - each time step. - - The other PyRun object we create, is `/World`. In its `initString` - apart from ordinary print statements and initialization, we define - a Python function called ``incr_count``. This silly little - function just increments the global `world_count` by 1. - - The `runString` for `World` simply calls this function to - increment the count and print it. - - We may notice that we assign tick 0 to `Hello` and tick 1 to - `World`. Looking at the output, you will realize that the - sequences of the ticks strictly maintain the sequence of - execution. - - """ - model = moose.Neutral('/model') - hello_runner = moose.PyRun('/model/Hello') - hello_runner.initString = """ -print 'Init', moose.element('/model/Hello') -hello_count = 0 -""" - hello_runner.runString = """ -print 'Running Hello' -print 'Hello count =', hello_count -hello_count += 1 -""" - hello_runner.run('from datetime import datetime') - hello_runner.run('print "Hello: current time:", datetime.now().isoformat()') - moose.useClock(0, hello_runner.path, 'process') - world_runner = moose.PyRun('World') - world_runner.initString = """ -print 'Init World' -world_count = 0 -def incr_count(): - global world_count - world_count += 1 -""" - world_runner.runString = """ -print 'Running World' -print 'World count =', world_count -incr_count() -""" - world_runner.run('from datetime import datetime') - world_runner.run('print "World: current time:", datetime.now().isoformat()') - - moose.useClock(0, world_runner.path, 'process') - moose.reinit() - moose.start(0.001) - - -def input_output(): - """The PyRun class can take a double input through `trigger` - field. Whenever another object sends an input to this field, the - `runString` is executed. - - The fun part of this is that you can use the input value in your - python statements in `runString`. This is stored in a local - variable called `input_`. You can rename this by setting `inputVar` - field. - - Things become even more interesting when you can send out a value - computed using Python. PyRun objects allow you to define a local - variable called `output` and whatever value you assign to this, - will be sent out through the source field `output` on successful - execution of the `runString`. - - You can rename the output variable by setting `outputVar` field. - - In this example, we send the output of a pulsegen object sending - out the values 1, 2, 3 during each pulse and compute the square of - these numbers in Python and set output to this square. - - The calculated value is assigned to the `output` variable and in - turn sent out to a Table object's input and gets recorded. - - By default PyRun executes the `runString` whenever a `trigger` - message is received and when its process method is called at each - timestep. In both cases it sends out the `output` value. Since - this may cause inaccuracies depending on what the Python - statements in `runString` do, a `mode` can be specified to disable - one of the above. We set ``mode = 2`` to disable the `process` - method. Note that this could also have been done by setting its - ``tick = -1``. - - ``mode = 1`` will disable `trigger` message and ``mode = 0``, the - default, enables both. - """ - model = moose.Neutral('/model') - input_pulse = moose.PulseGen('/model/pulse') - #: set the baseline output 0 - input_pulse.baseLevel = 0.0 - #: We make it generate three pulses - input_pulse.count = 3 - input_pulse.level[0] = 1.0 - input_pulse.level[1] = 2.0 - input_pulse.level[2] = 3.0 - #: Each pulse will appear 1 s after the previous one - input_pulse.delay[0] = 1.0 - input_pulse.delay[1] = 1.0 - input_pulse.delay[2] = 1.0 - #: Each pulse is 1 s wide - input_pulse.width[0] = 1.0 - input_pulse.width[1] = 1.0 - input_pulse.width[2] = 1.0 - #: Now create the PyRun object - pyrun = moose.PyRun('/model/pyrun') - pyrun.runString = """ -output = input_ * input_ -print 'input =', input_ -print 'output =', output -""" - pyrun.mode = 2 # do not run process method - moose.connect(input_pulse, 'output', pyrun, 'trigger') - output_table = moose.Table('/model/output') - moose.connect(pyrun, 'output', output_table, 'input') - input_table = moose.Table('/model/input') - moose.connect(input_pulse, 'output', input_table, 'input') - moose.setClock(0, 0.25) - moose.setClock(1, 0.25) - moose.setClock(2, 0.25) - moose.useClock(0, input_pulse.path, 'process') - #: this is unnecessary because the mode=2 ensures that `process` - #: does nothing - moose.useClock(1, pyrun.path, 'process') - moose.useClock(2, '/model/#[ISA=Table]', 'process') - moose.reinit() - moose.start(10.0) - #ts = - plt.plot(input_table.vector, label='input') - plt.plot(output_table.vector, label='output') - plt.legend() - plt.show() - -if __name__ == '__main__': - run_sequence() - moose.delete('/model') - input_output() - - - -# -# pyrun.py ends here diff --git a/examples/snippets/randomspike.py b/examples/snippets/randomspike.py deleted file mode 100644 index a898840..0000000 --- a/examples/snippets/randomspike.py +++ /dev/null @@ -1,131 +0,0 @@ -# randomspike.py --- -# -# Filename: randomspike.py -# Author: Subhasis Ray -# Maintainer: -# Created: Tue Sep 30 10:58:09 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""This is an example of simulating random events from a Poisson -process and applying the event as spike input to a -single-compartmental Hodgekin-Huxley type neuron model.""" - -import sys -sys.path.append('../../python') -import os -import numpy as np -import matplotlib.pyplot as plt - -import moose -from ionchannel import create_1comp_neuron - -SIMTIME = 5.0 - -def create_cell(): - """Create a single-compartment Hodgking-Huxley neuron with a - synaptic channel. - - This uses the :func:`ionchannel.create_1comp_neuron` function for - model creation. - - Returns a dict containing the neuron, the synchan and the - synhandler for accessing the synapse, - """ - neuron = create_1comp_neuron('/neuron') - #: SynChan for post synaptic neuron - synchan = moose.SynChan('/neuron/synchan') - synchan.Gbar = 1e-8 - synchan.tau1 = 2e-3 - synchan.tau2 = 2e-3 - msg = moose.connect(neuron, 'channel', synchan, 'channel') - #: Create SynHandler to handle spike event input and set the - #: activation input of synchan - synhandler = moose.SimpleSynHandler('/neuron/synhandler') - synhandler.synapse.num = 1 - synhandler.synapse[0].delay = 5e-3 - moose.connect(synhandler, 'activationOut', synchan, 'activation') - return {'neuron': neuron, - 'synchan': synchan, - 'synhandler': synhandler} - - -def example(): - """ - The RandSpike class generates spike events from a Poisson process - and sends out a trigger via its `spikeOut` message. It is very - common to approximate the spiking in many neurons as a Poisson - process, i.e., the probability of `k` spikes in any interval `t` - is given by the Poisson distribution: - - exp(-ut)(ut)^k/k! - - for k = 0, 1, 2, ... u is the rate of spiking (the mean of the - Poisson distribution). See `wikipedia - `__ for details. - - Many cortical neuron types spontaneously fire action - potentials. These are called ectopic spikes. In this example we - simulate this with a RandSpike object with rate 10 spikes/s and - send this to a single compartmental neuron via a synapse. - - In this model the synaptic conductance is set so high that each - incoming spike evokes an action potential. - """ - ectopic = moose.RandSpike('ectopic_input') - ectopic.rate = 10.0 - cellmodel = create_cell() - moose.connect(ectopic, 'spikeOut', - cellmodel['synhandler'].synapse[0], 'addSpike') - tab_vm = moose.Table('/Vm') - moose.connect(tab_vm, 'requestOut', cellmodel['neuron'], 'getVm') - moose.reinit() - moose.start(SIMTIME) - return tab_vm - -if __name__ == '__main__': - tab_vm = example() - ts = np.linspace(0, SIMTIME, len(tab_vm.vector)) - plt.plot(ts, tab_vm.vector) - plt.ylabel('Vm (Volt)') - plt.xlabel('Time (s)') - plt.show() - -# -# randomspike.py ends here diff --git a/examples/snippets/reacDiffBranchingNeuron.py b/examples/snippets/reacDiffBranchingNeuron.py deleted file mode 100644 index fa4864e..0000000 --- a/examples/snippets/reacDiffBranchingNeuron.py +++ /dev/null @@ -1,235 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -def makeModel(): - model = moose.Neutral( '/model' ) - # Make neuronal model. It has no channels, just for geometry - cell = moose.loadModel( './branching.p', '/model/cell', 'Neutral' ) - # We don't want the cell to do any calculations. Disable everything. - for i in moose.wildcardFind( '/model/cell/##' ): - i.tick = -1 - - # create container for model - model = moose.element( '/model' ) - chem = moose.Neutral( '/model/chem' ) - # The naming of the compartments is dicated by the places that the - # chem model expects to be loaded. - compt0 = moose.NeuroMesh( '/model/chem/compt0' ) - compt0.separateSpines = 0 - compt0.geometryPolicy = 'cylinder' - - #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) - makeChemModel( compt0 ) # Populate all compt with the chem system. - - compt0.diffLength = 1e-6 # This will be over 100 compartments. - # This is the magic command that configures the diffusion compartments. - compt0.subTreePath = cell.path + "/#" - moose.showfields( compt0 ) - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) - dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) - stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich0.ksolve = ksolve0 - stoich0.dsolve = dsolve0 - stoich0.path = '/model/chem/compt0/#' - assert( stoich0.numVarPools == 3 ) - assert( stoich0.numProxyPools == 0 ) - assert( stoich0.numRates == 4 ) - - num = compt0.numDiffCompts - 1 - moose.element( '/model/chem/compt0/a[' + str(num) + ']' ).concInit *= 1.5 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) - makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) - makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) - makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) - -def makeTab( plotname, molpath ): - tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table - # connect up the tables - moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); - - -def makeDisplay(): - plt.ion() - fig = plt.figure( figsize=(10,12) ) - - layout = fig.add_subplot( 211 ) - plt.ylabel( 'x position + 10*conc' ) - plt.xlabel( 'y position (microns)' ) - timeLabel = plt.text(0, 20, 'time = 0') - layout.set_xlim( -5, 75 ) - layout.set_ylim( -20, 25 ) - compt = moose.element( '/model/chem/compt0' ) - pos = compt.voxelMidpoint - i = len( pos ) / 3 - r2 = numpy.sqrt( 0.5 ) - yp = [ -r2 * pos[j] * 1e6 for j in range( i ) ] - xp = pos[i:2*i] * 1e6 - yp - #xp = [ pos[i + j] for j in range( i ) ] - #yp = [ -r2 * pos[j] for j in range( i ) ] - #line0, = layout.plot( pos[:i], pos[i:2*i] , 'bo' ) - line, = layout.plot( xp, yp, 'bo' ) - - timeSeries = fig.add_subplot( 212 ) - timeSeries.set_ylim( 0, 0.6 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - - fig.canvas.draw() - return ( timeSeries, fig, line, timeLabel, yp ) - -def updateDisplay( plotlist ): - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - plotlist[2].set_ydata( a.conc * 10 + plotlist[4] ) - - plotlist[1].canvas.draw() - - -def finalizeDisplay( plotlist, cPlotDt ): - for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = plotlist[0].plot( pos, x.vector, label=x.name ) - plt.legend() - plotlist[1].canvas.draw() - print( "Hit 'enter' to exit" ) - raw_input() - -def makeChemModel( compt ): - """ - This function sets up a simple oscillatory chemical system within - the script. The reaction system is:: - - s ---a---> a // s goes to a, catalyzed by a. - s ---a---> b // s goes to b, catalyzed by a. - a ---b---> s // a goes to s, catalyzed by b. - b -------> s // b is degraded irreversibly to s. - - in sum, **a** has a positive feedback onto itself and also forms **b**. - **b** has a negative feedback onto **a**. - Finally, the diffusion constant for **a** is 1/10 that of **b**. - """ - # create container for model - diffConst = 10e-12 # m^2/sec - motorRate = 1e-6 # m/sec - concA = 1 # millimolar - - # create molecules and reactions - a = moose.Pool( compt.path + '/a' ) - b = moose.Pool( compt.path + '/b' ) - s = moose.Pool( compt.path + '/s' ) - e1 = moose.MMenz( compt.path + '/e1' ) - e2 = moose.MMenz( compt.path + '/e2' ) - e3 = moose.MMenz( compt.path + '/e3' ) - r1 = moose.Reac( compt.path + '/r1' ) - - a.concInit = 0.1 - b.concInit = 0.1 - s.concInit = 1 - - moose.connect( e1, 'sub', s, 'reac' ) - moose.connect( e1, 'prd', a, 'reac' ) - moose.connect( a, 'nOut', e1, 'enzDest' ) - e1.Km = 1 - e1.kcat = 1 - - moose.connect( e2, 'sub', s, 'reac' ) - moose.connect( e2, 'prd', b, 'reac' ) - moose.connect( a, 'nOut', e2, 'enzDest' ) - e2.Km = 1 - e2.kcat = 0.5 - - moose.connect( e3, 'sub', a, 'reac' ) - moose.connect( e3, 'prd', s, 'reac' ) - moose.connect( b, 'nOut', e3, 'enzDest' ) - e3.Km = 0.1 - e3.kcat = 1 - - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'prd', s, 'reac' ) - r1.Kf = 0.3 # 1/sec - r1.Kb = 0 # 1/sec - - # Assign parameters - a.diffConst = diffConst/10 - b.diffConst = diffConst - s.diffConst = 0 - -def main(): - """ - reacDiffBranchingNeuron: - This example illustrates how to define a kinetic model embedded in - the branching pseudo 1-dimensional geometry of a neuron. This means - that diffusion only happens along the axis of dendritic segments, not - radially from inside to outside a dendrite, nor tangentially around - the dendrite circumference. The model - oscillates in space and time due to a Turing-like reaction-diffusion - mechanism present in all compartments. For the sake of this demo, - the initial conditions are set to be slightly different on one of the - terminal dendrites, so as to break the symmetry and initiate - oscillations. - This example uses an external model file to specify a binary branching - neuron. This model does not have any spines. The electrical model is - used here purely for the geometry and is not part of the computations. - In this example we build an identical chemical model throughout the - neuronal geometry, using the makeChemModel function. - The model is set up to run using the Ksolve for integration and the - Dsolve for handling diffusion. - - The display has two parts: - - a. Animated pseudo-3D plot of neuronal geometry, where each point - represents a diffusive voxel and moves in the y-axis to show - changes in concentration. - b. Time-series plot that appears after the simulation has - ended. The plots are for the first and last diffusive voxel, - that is, the soma and the tip of one of the apical dendrites. - - """ - chemdt = 0.1 # Tested various dts, this is reasonable. - diffdt = 0.01 - plotdt = 1 - animationdt = 5 - runtime = 750 - - makeModel() - plotlist = makeDisplay() - - # Schedule the whole lot. Autoscheduling already takes care of these - ''' - for i in range( 11, 17 ): - moose.setClock( i, chemdt ) # for the chem objects - moose.setClock( 10, diffdt ) # for the diffusion - moose.setClock( 18, plotdt ) # for the output tables. - ''' - moose.reinit() - for i in range( 0, runtime, animationdt ): - moose.start( animationdt ) - plotlist[3].set_text( "time = %d" % i ) - updateDisplay( plotlist ) - - finalizeDisplay( plotlist, plotdt ) - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/reacDiffConcGradient.py b/examples/snippets/reacDiffConcGradient.py deleted file mode 100644 index 80cf463..0000000 --- a/examples/snippets/reacDiffConcGradient.py +++ /dev/null @@ -1,161 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - - -import math -import pylab -import numpy -import moose - -diffConst = 1e-12 - -def makeCyl( num, concInit, radius, x0, x1 ): - compt = moose.CylMesh( '/model/compt' + num ) - compt.x0 = x0 - compt.x1 = x1 - compt.y0 = 0 - compt.y1 = 0 - compt.z0 = 0 - compt.z1 = 0 - compt.r0 = radius - compt.r1 = radius - compt.diffLength = x1-x0 - a = moose.Pool( compt.path + '/a' ) - b = moose.Pool( compt.path + '/b' + num ) - reac = moose.Reac( compt.path + '/reac' ) - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - a.diffConst = diffConst - a.concInit = concInit - b.concInit = concInit - reac.Kf = 0.1 - reac.Kb = 0.1 - return a, b, compt - -def makeModel(): - radius = 1e-6 - len0 = 4e-6 - len1 = 2e-6 - len2 = 1e-6 - # create container for model - model = moose.Neutral( 'model' ) - a0, b0, compt0 = makeCyl( '0', 1, radius, -len0, 0 ) - a1, b1, compt1 = makeCyl( '1', 2, radius, 0, len1 ) - a2, b2, compt2 = makeCyl( '2', 6, radius, len1, len1 + len2 ) - - print('Volumes = ', compt0.volume, compt1.volume, compt2.volume) - - # create molecules and reactions - reac0 = moose.Reac( '/model/compt1/reac0' ) - reac1 = moose.Reac( '/model/compt1/reac1' ) - - # connect them up for reactions - moose.connect( reac0, 'sub', b0, 'reac' ) - moose.connect( reac0, 'prd', b1, 'reac' ) - moose.connect( reac1, 'sub', b1, 'reac' ) - moose.connect( reac1, 'prd', b2, 'reac' ) - - # Assign parameters - reac0.Kf = 0.5 - reac0.Kb = 0.05 - reac1.Kf = 0.5 - reac1.Kb = 0.05 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA0 = moose.Table2 ( '/model/graphs/concA0' ) - outputA1 = moose.Table2 ( '/model/graphs/concA1' ) - outputA2 = moose.Table2 ( '/model/graphs/concA2' ) - - # connect up the tables - moose.connect( outputA0, 'requestOut', a0, 'getConc' ); - moose.connect( outputA1, 'requestOut', a1, 'getConc' ); - moose.connect( outputA2, 'requestOut', a2, 'getConc' ); - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/compt0/ksolve0' ) - ksolve1 = moose.Ksolve( '/model/compt1/ksolve1' ) - ksolve2 = moose.Ksolve( '/model/compt2/ksolve2' ) - dsolve0 = moose.Dsolve( '/model/compt0/dsolve0' ) - dsolve1 = moose.Dsolve( '/model/compt1/dsolve1' ) - dsolve2 = moose.Dsolve( '/model/compt2/dsolve2' ) - stoich0 = moose.Stoich( '/model/compt0/stoich0' ) - stoich1 = moose.Stoich( '/model/compt1/stoich1' ) - stoich2 = moose.Stoich( '/model/compt2/stoich2' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - stoich0.dsolve = dsolve0 - stoich1.dsolve = dsolve1 - stoich2.dsolve = dsolve2 - stoich0.path = '/model/compt0/#' - stoich1.path = '/model/compt1/#' - stoich2.path = '/model/compt2/#' - dsolve1.buildMeshJunctions( dsolve0 ) - dsolve1.buildMeshJunctions( dsolve2 ) - stoich1.buildXreacs( stoich0 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - - -def main(): - """ - This example shows how to maintain a conc gradient against diffusion :: - - compt0 compt1 compt 2 - a ......... a .......... a [Diffusion between compts] - |\ |\ |\ - | | | [Reacs within compts] - \| \| \| - b0 <------->b1 <--------b2 [Reacs between compts] - - 4x 2x 1x [Ratios of vols of compts] - - If there is no diffusion then the ratio of concs should be 1:10:100 - If there is no x-compt reac, then clearly the concs should all be - the same, in this case they should be 2.0. - If both are happening then the final concs are 1.4, 2.5, 3.4. - """ - simdt = 0.1 - plotdt = 0.1 - runtime = 100.0 - - makeModel() - - # MOOSE autoschedules everything. - moose.reinit() - moose.start( runtime ) # Run the model for 100 seconds. - initTot = 0 - tot = 0 - for x in moose.wildcardFind( '/model/compt#/#[ISA=PoolBase]' ): - print(x.name, x.conc) - tot += x.n - initTot += x.nInit - print("Totals: expected = ", initTot, ", got: ", tot) - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.linspace( 0, runtime, x.vector.size ) # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/reacDiffSpinyNeuron.py b/examples/snippets/reacDiffSpinyNeuron.py deleted file mode 100644 index 2edb86b..0000000 --- a/examples/snippets/reacDiffSpinyNeuron.py +++ /dev/null @@ -1,297 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -def makeModel(): - model = moose.Neutral( '/model' ) - # Make neuronal model. It has no channels, just for geometry - cell = moose.loadModel( './spinyNeuron.p', '/model/cell', 'Neutral' ) - # We don't want the cell to do any calculations. Disable everything. - for i in moose.wildcardFind( '/model/cell/##' ): - i.tick = -1 - - diffConst = 0.0 - # create container for model - model = moose.element( '/model' ) - chem = moose.Neutral( '/model/chem' ) - # The naming of the compartments is dicated by the places that the - # chem model expects to be loaded. - compt0 = moose.NeuroMesh( '/model/chem/compt0' ) - compt0.separateSpines = 1 - compt0.geometryPolicy = 'cylinder' - compt1 = moose.SpineMesh( '/model/chem/compt1' ) - moose.connect( compt0, 'spineListOut', compt1, 'spineList', 'OneToOne' ) - compt2 = moose.PsdMesh( '/model/chem/compt2' ) - moose.connect( compt0, 'psdListOut', compt2, 'psdList', 'OneToOne' ) - - #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) - makeChemModel( compt0 ) # Populate all 3 compts with the chem system. - makeChemModel( compt1 ) - makeChemModel( compt2 ) - - compt0.diffLength = 2e-6 # This will be over 100 compartments. - # This is the magic command that configures the diffusion compartments. - compt0.subTreePath = cell.path + "/#" - moose.showfields( compt0 ) - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) - ksolve1 = moose.Ksolve( '/model/chem/compt1/ksolve' ) - ksolve2 = moose.Ksolve( '/model/chem/compt2/ksolve' ) - dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) - dsolve1 = moose.Dsolve( '/model/chem/compt1/dsolve' ) - dsolve2 = moose.Dsolve( '/model/chem/compt2/dsolve' ) - stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) - stoich1 = moose.Stoich( '/model/chem/compt1/stoich' ) - stoich2 = moose.Stoich( '/model/chem/compt2/stoich' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich1.compartment = compt1 - stoich2.compartment = compt2 - stoich0.ksolve = ksolve0 - stoich1.ksolve = ksolve1 - stoich2.ksolve = ksolve2 - stoich0.dsolve = dsolve0 - stoich1.dsolve = dsolve1 - stoich2.dsolve = dsolve2 - stoich0.path = '/model/chem/compt0/#' - stoich1.path = '/model/chem/compt1/#' - stoich2.path = '/model/chem/compt2/#' - assert( stoich0.numVarPools == 3 ) - assert( stoich0.numProxyPools == 0 ) - assert( stoich0.numRates == 4 ) - assert( stoich1.numVarPools == 3 ) - assert( stoich1.numProxyPools == 0 ) - assert( stoich1.numRates == 4 ) - assert( stoich2.numVarPools == 3 ) - assert( stoich2.numProxyPools == 0 ) - assert( stoich2.numRates == 4 ) - dsolve0.buildNeuroMeshJunctions( dsolve1, dsolve2 ) - stoich0.buildXreacs( stoich1 ) - stoich1.buildXreacs( stoich2 ) - stoich0.filterXreacs() - stoich1.filterXreacs() - stoich2.filterXreacs() - - moose.element( '/model/chem/compt2/a[0]' ).concInit *= 1.5 - - # Create the output tables - num = compt0.numDiffCompts - 1 - graphs = moose.Neutral( '/model/graphs' ) - moose.le( '/model/chem/compt1' ) - a = moose.element( '/model/chem/compt1' ) - print a.voxelVolume - makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) - makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) - makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) - makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) - makeTab( 'a_spine', '/model/chem/compt1/a[5]' ) - makeTab( 'b_spine', '/model/chem/compt1/b[5]' ) - makeTab( 'a_psd', '/model/chem/compt2/a[5]' ) - makeTab( 'b_psd', '/model/chem/compt2/b[5]' ) - -def makeTab( plotname, molpath ): - tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table - # connect up the tables - moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); - - -def makeDisplay(): - plt.ion() - fig = plt.figure( figsize=(10,12) ) - - dend = fig.add_subplot( 411 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Dend voxel #' ) - plt.legend() - timeLabel = plt.text(200, 0.5, 'time = 0') - - spine = fig.add_subplot( 412 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Spine voxel #' ) - plt.legend() - - psd = fig.add_subplot( 413 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'PSD voxel #' ) - plt.legend() - - timeSeries = fig.add_subplot( 414 ) - timeSeries.set_ylim( 0, 0.6 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - plt.legend() - - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - line1, = dend.plot( range( len( a ) ), a.conc, label='a' ) - line2, = dend.plot( range( len( b ) ), b.conc, label='b' ) - dend.set_ylim( 0, 0.6 ) - - a = moose.vec( '/model/chem/compt1/a' ) - b = moose.vec( '/model/chem/compt1/b' ) - line3, = spine.plot( range( len( a ) ), a.conc, label='a' ) - line4, = spine.plot( range( len( b ) ), b.conc, label='b' ) - spine.set_ylim( 0, 0.6 ) - - a = moose.vec( '/model/chem/compt2/a' ) - b = moose.vec( '/model/chem/compt2/b' ) - line5, = psd.plot( range( len( a ) ), a.conc, label='a' ) - line6, = psd.plot( range( len( b ) ), b.conc, label='b' ) - psd.set_ylim( 0, 0.6 ) - - fig.canvas.draw() - return ( timeSeries, dend, spine, psd, fig, line1, line2, line3, line4, line5, line6, timeLabel ) - -def updateDisplay( plotlist ): - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - plotlist[5].set_ydata( a.conc ) - plotlist[6].set_ydata( b.conc ) - - a = moose.vec( '/model/chem/compt1/a' ) - b = moose.vec( '/model/chem/compt1/b' ) - plotlist[7].set_ydata( a.conc ) - plotlist[8].set_ydata( b.conc ) - - a = moose.vec( '/model/chem/compt2/a' ) - b = moose.vec( '/model/chem/compt2/b' ) - plotlist[9].set_ydata( a.conc ) - plotlist[10].set_ydata( b.conc ) - plotlist[4].canvas.draw() - - -def finalizeDisplay( plotlist, cPlotDt ): - for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = plotlist[0].plot( pos, x.vector, label=x.name ) - plotlist[4].canvas.draw() - print( "Hit 'enter' to exit" ) - raw_input() - -def makeChemModel( compt ): - """ - This function setus up a simple oscillatory chemical system within - the script. The reaction system is:: - - s ---a---> a // s goes to a, catalyzed by a. - s ---a---> b // s goes to b, catalyzed by a. - a ---b---> s // a goes to s, catalyzed by b. - b -------> s // b is degraded irreversibly to s. - - in sum, **a** has a positive feedback onto itself and also forms **b**. - **b** has a negative feedback onto **a**. - Finally, the diffusion constant for **a** is 1/10 that of **b**. - """ - # create container for model - diffConst = 10e-12 # m^2/sec - motorRate = 1e-6 # m/sec - concA = 1 # millimolar - - # create molecules and reactions - a = moose.Pool( compt.path + '/a' ) - b = moose.Pool( compt.path + '/b' ) - s = moose.Pool( compt.path + '/s' ) - e1 = moose.MMenz( compt.path + '/e1' ) - e2 = moose.MMenz( compt.path + '/e2' ) - e3 = moose.MMenz( compt.path + '/e3' ) - r1 = moose.Reac( compt.path + '/r1' ) - - a.concInit = 0.1 - b.concInit = 0.1 - s.concInit = 1 - - moose.connect( e1, 'sub', s, 'reac' ) - moose.connect( e1, 'prd', a, 'reac' ) - moose.connect( a, 'nOut', e1, 'enzDest' ) - e1.Km = 1 - e1.kcat = 1 - - moose.connect( e2, 'sub', s, 'reac' ) - moose.connect( e2, 'prd', b, 'reac' ) - moose.connect( a, 'nOut', e2, 'enzDest' ) - e2.Km = 1 - e2.kcat = 0.5 - - moose.connect( e3, 'sub', a, 'reac' ) - moose.connect( e3, 'prd', s, 'reac' ) - moose.connect( b, 'nOut', e3, 'enzDest' ) - e3.Km = 0.1 - e3.kcat = 1 - - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'prd', s, 'reac' ) - r1.Kf = 0.3 # 1/sec - r1.Kb = 0 # 1/sec - - # Assign parameters - a.diffConst = diffConst/10 - b.diffConst = diffConst - s.diffConst = 0 - -def main(): - """ - This example illustrates how to define a kinetic model embedded in - the branching pseudo-1-dimensional geometry of a neuron. The model - oscillates in space and time due to a Turing-like reaction-diffusion - mechanism present in all compartments. For the sake of this demo, - the initial conditions are set up slightly different on the PSD - compartments, so as to break the symmetry and initiate oscillations - in the spines. - This example uses an external electrical model file with basal - dendrite and three branches on - the apical dendrite. One of those branches has a dozen or so spines. - In this example we build an identical model in each compartment, using - the makeChemModel function. One could readily define a system with - distinct reactions in each compartment. - The model is set up to run using the Ksolve for integration and the - Dsolve for handling diffusion. - The display has four parts: - - a. animated line plot of concentration against main compartment#. - b. animated line plot of concentration against spine compartment#. - c. animated line plot of concentration against psd compartment#. - d. time-series plot that appears after the simulation has - ended. The plot is for the last (rightmost) compartment. - - """ - chemdt = 0.1 # Tested various dts, this is reasonable. - diffdt = 0.01 - plotdt = 1 - animationdt = 5 - runtime = 800 - - makeModel() - plotlist = makeDisplay() - - # Schedule the whole lot - autoscheduling already does this. - ''' - for i in range( 11, 17 ): - moose.setClock( i, chemdt ) # for the chem objects - moose.setClock( 10, diffdt ) # for the diffusion - moose.setClock( 18, plotdt ) # for the output tables. - ''' - moose.reinit() - for i in range( 0, runtime, animationdt ): - moose.start( animationdt ) - plotlist[11].set_text( "time = %d" % i ) - updateDisplay( plotlist ) - - finalizeDisplay( plotlist, plotdt ) - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/recurrentIntFire.py b/examples/snippets/recurrentIntFire.py deleted file mode 100644 index 6a480cc..0000000 --- a/examples/snippets/recurrentIntFire.py +++ /dev/null @@ -1,110 +0,0 @@ -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ -# This snippet sets up a recurrent network of IntFire objects, using -# SimpleSynHandlers to deal with spiking events. -# It isn't very satisfactory as activity runs down after a while. -# It is a good example for using the IntFire, setting up random -# connectivity, and using SynHandlers. -# -import os -import random -import time -import pylab -from numpy import random as nprand -import sys -sys.path.append('/home/subha/src/moose_async13/python') -import moose - -def make_network(): - size = 1024 - dt = 0.2 - runsteps = 50 - delayMin = 0 - delayMax = 4 - weightMax = 1 - Vmax = 1.0 - thresh = 0.4 - refractoryPeriod = 0.4 - tau = 0.5 - connectionProbability = 0.01 - random.seed( 123 ) - nprand.seed( 456 ) - t0 = time.time() - - network = moose.IntFire( 'network', size ); - syns = moose.SimpleSynHandler( '/network/syns', size ); - moose.connect( syns, 'activationOut', network, 'activation', 'OneToOne' ) - moose.le( '/network' ) - syns.vec.numSynapses = [1] * size - sv = moose.vec( '/network/syns/synapse' ) - print 'before connect t = ', time.time() - t0 - mid = moose.connect( network, 'spikeOut', sv, 'addSpike', 'Sparse') - print 'after connect t = ', time.time() - t0 - #print mid.destFields - m2 = moose.element( mid ) - m2.setRandomConnectivity( connectionProbability, 5489 ) - print 'after setting connectivity, t = ', time.time() - t0 - #network.vec.Vm = [(Vmax*random.random()) for r in range(size)] - network.vec.Vm = nprand.rand( size ) * Vmax - network.vec.thresh = thresh - network.vec.refractoryPeriod = refractoryPeriod - network.vec.tau = tau - numSynVec = syns.vec.numSynapses - print 'Middle of setup, t = ', time.time() - t0 - numTotSyn = sum( numSynVec ) - print numSynVec.size, ', tot = ', numTotSyn, ', numSynVec = ', numSynVec - for item in syns.vec: - sh = moose.element( item ) - sh.synapse.delay = delayMin + (delayMax - delayMin ) * nprand.rand( len( sh.synapse ) ) - #sh.synapse.delay = [ (delayMin + random.random() * (delayMax - delayMin ) for r in range( len( sh.synapse ) ) ] - sh.synapse.weight = nprand.rand( len( sh.synapse ) ) * weightMax - print 'after setup, t = ', time.time() - t0 - - numStats = 100 - stats = moose.SpikeStats( '/stats', numStats ) - stats.vec.windowLength = 1 # timesteps to put together. - plots = moose.Table( '/plot', numStats ) - convergence = size / numStats - for i in range( numStats ): - for j in range( size/numStats ): - k = i * convergence + j - moose.connect( network.vec[k], 'spikeOut', stats.vec[i], 'addSpike' ) - moose.connect( plots, 'requestOut', stats, 'getMean', 'OneToOne' ) - - #moose.useClock( 0, '/network/syns,/network', 'process' ) - moose.useClock( 0, '/network/syns', 'process' ) - moose.useClock( 1, '/network', 'process' ) - moose.useClock( 2, '/stats', 'process' ) - moose.useClock( 3, '/plot', 'process' ) - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - moose.setClock( 3, dt ) - moose.setClock( 9, dt ) - t1 = time.time() - moose.reinit() - print 'reinit time t = ', time.time() - t1 - network.vec.Vm = nprand.rand( size ) * Vmax - print 'setting Vm , t = ', time.time() - t1 - t1 = time.time() - print 'starting' - moose.start(runsteps * dt) - print 'runtime, t = ', time.time() - t1 - print network.vec.Vm[99:103], network.vec.Vm[900:903] - t = [i * dt for i in range( plots.vec[0].vector.size )] - i = 0 - for p in plots.vec: - pylab.plot( t, p.vector, label=str( i) ) - i += 1 - pylab.xlabel( "Time (s)" ) - pylab.ylabel( "Vm (mV)" ) - pylab.legend() - pylab.show() - -make_network() diff --git a/examples/snippets/recurrentLIF.py b/examples/snippets/recurrentLIF.py deleted file mode 100644 index 6f00fdf..0000000 --- a/examples/snippets/recurrentLIF.py +++ /dev/null @@ -1,111 +0,0 @@ -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ -# This snippet sets up a recurrent network of LIF objects, using -# SimpleSynHandlers to deal with spiking events. -# It isn't very satisfactory as activity runs down after a while. -# It is a good example for using the LIF, setting up random -# connectivity, and using SynHandlers. -# -import os -import random -import time -import pylab -from numpy import random as nprand -import sys -sys.path.append('/home/subha/src/moose_async13/python') -import moose - -def make_network(): - size = 1024 - dt = 0.2 - runsteps = 50 - delayMin = 0 - delayMax = 4 - weightMax = 1 - Vmax = 1.0 - thresh = 0.4 - refractoryPeriod = 0.4 - tau = 0.5 - connectionProbability = 0.01 - random.seed( 123 ) - nprand.seed( 456 ) - t0 = time.time() - - network = moose.LIF( 'network', size ); - syns = moose.SimpleSynHandler( '/network/syns', size ); - moose.connect( syns, 'activationOut', network, 'activation', 'OneToOne' ) - moose.le( '/network' ) - syns.vec.numSynapses = [1] * size - sv = moose.vec( '/network/syns/synapse' ) - print 'before connect t = ', time.time() - t0 - mid = moose.connect( network, 'spikeOut', sv, 'addSpike', 'Sparse') - print 'after connect t = ', time.time() - t0 - #print mid.destFields - m2 = moose.element( mid ) - m2.setRandomConnectivity( connectionProbability, 5489 ) - print 'after setting connectivity, t = ', time.time() - t0 - #network.vec.Vm = [(Vmax*random.random()) for r in range(size)] - network.vec.Vm = nprand.rand( size ) * Vmax - network.vec.thresh = thresh - network.vec.refractoryPeriod = refractoryPeriod - network.vec.Rm = 1e10 - network.vec.Cm = 5e-9 - numSynVec = syns.vec.numSynapses - print 'Middle of setup, t = ', time.time() - t0 - numTotSyn = sum( numSynVec ) - print numSynVec.size, ', tot = ', numTotSyn, ', numSynVec = ', numSynVec - for item in syns.vec: - sh = moose.element( item ) - sh.synapse.delay = delayMin + (delayMax - delayMin ) * nprand.rand( len( sh.synapse ) ) - #sh.synapse.delay = [ (delayMin + random.random() * (delayMax - delayMin ) for r in range( len( sh.synapse ) ) ] - sh.synapse.weight = nprand.rand( len( sh.synapse ) ) * weightMax - print 'after setup, t = ', time.time() - t0 - - numStats = 100 - stats = moose.SpikeStats( '/stats', numStats ) - stats.vec.windowLength = 1 # timesteps to put together. - plots = moose.Table( '/plot', numStats ) - convergence = size / numStats - for i in range( numStats ): - for j in range( size/numStats ): - k = i * convergence + j - moose.connect( network.vec[k], 'spikeOut', stats.vec[i], 'addSpike' ) - moose.connect( plots, 'requestOut', stats, 'getMean', 'OneToOne' ) - - #moose.useClock( 0, '/network/syns,/network', 'process' ) - moose.useClock( 0, '/network/syns', 'process' ) - moose.useClock( 1, '/network', 'process' ) - moose.useClock( 2, '/stats', 'process' ) - moose.useClock( 3, '/plot', 'process' ) - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - moose.setClock( 3, dt ) - moose.setClock( 9, dt ) - t1 = time.time() - moose.reinit() - print 'reinit time t = ', time.time() - t1 - network.vec.Vm = nprand.rand( size ) * Vmax - print 'setting Vm , t = ', time.time() - t1 - t1 = time.time() - print 'starting' - moose.start(runsteps * dt) - print 'runtime, t = ', time.time() - t1 - print network.vec.Vm[99:103], network.vec.Vm[900:903] - t = [i * dt for i in range( plots.vec[0].vector.size )] - i = 0 - for p in plots.vec: - pylab.plot( t, p.vector, label=str( i) ) - i += 1 - pylab.xlabel( "Time (s)" ) - pylab.ylabel( "Rate (Hz)" ) - pylab.legend() - pylab.show() - -make_network() diff --git a/examples/snippets/rxdFuncDiffusion.py b/examples/snippets/rxdFuncDiffusion.py deleted file mode 100644 index 142341d..0000000 --- a/examples/snippets/rxdFuncDiffusion.py +++ /dev/null @@ -1,69 +0,0 @@ -import numpy -import pylab -import moose -import time -import sys - -''' -This example implements a reaction-diffusion like system which is -bistable and propagates losslessly. It is based on the NEURON example -rxdrun.py, but incorporates more compartments and runs for a longer time. -The system is implemented in a function rather than as a proper system -of chemical reactions. Please see rxdReacDiffusion.py for a variant that -uses a reaction plus a function object to control its rates. -''' - -dt = 0.1 - -# define the geometry -compt = moose.CylMesh( '/cylinder' ) -compt.r0 = compt.r1 = 1 -compt.x1 = 100 -compt.diffLength = 0.2 -assert( compt.numDiffCompts == compt.x1/compt.diffLength ) - -#define the molecule. Its geometry is defined by its parent volume, cylinder -c = moose.Pool( '/cylinder/pool' ) -c.diffConst = 1 # define diffusion constant - -# Here we set up a function calculation -func = moose.Function( '/cylinder/pool/func' ) -func.expr = "-x0 * (0.3 - x0) * (1 - x0)" -func.x.num = 1 #specify number of input variables. - -#Connect the molecules to the func -moose.connect( c, 'nOut', func.x[0], 'input' ) -#Connect the function to the pool -moose.connect( func, 'valueOut', c, 'increment' ) - -#Set up solvers -ksolve = moose.Ksolve( '/cylinder/ksolve' ) -dsolve = moose.Dsolve( '/cylinder/dsolve' ) -stoich = moose.Stoich( '/cylinder/stoich' ) -stoich.ksolve = ksolve -stoich.dsolve = dsolve -stoich.compartment = compt -stoich.path = '/cylinder/##' - -#initialize -x = numpy.arange( 0, compt.x1, compt.diffLength ) -c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] - -# Run and plot it. -moose.reinit() -updateDt = 50 -runtime = updateDt * 4 -plt = pylab.plot( x, c.vec.n, label='t = 0 ') -t1 = time.time() -for t in range( 0, runtime-1, updateDt ): - moose.start( updateDt ) - plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) - -print("Time = %s " % ( time.time() - t1) ) -pylab.ylim( 0, 1.05 ) -pylab.legend() -pylab.show( ) -# outfile = '%s.png' % sys.argv[0] -# pylab.savefig( outfile ) -# print( '[INFO] Wrote results to %s' % outfile ) - diff --git a/examples/snippets/rxdFuncDiffusionStoch.py b/examples/snippets/rxdFuncDiffusionStoch.py deleted file mode 100644 index 64883f0..0000000 --- a/examples/snippets/rxdFuncDiffusionStoch.py +++ /dev/null @@ -1,71 +0,0 @@ -import numpy -import pylab -import moose -import time - -''' -This example implements a reaction-diffusion like system which is -bistable and propagates losslessly. It is based on the NEURON example -rxdrun.py, but incorporates more compartments and runs for a longer time. -The system is implemented in a function rather than as a proper system -of chemical reactions. Please see rxdReacDiffusion.py for a variant that -uses a reaction plus a function object to control its rates. -''' - -dt = 0.1 - -# define the geometry -compt = moose.CylMesh( '/cylinder' ) -compt.r0 = compt.r1 = 100e-9 -compt.x1 = 100e-9 -compt.diffLength = 0.2e-9 -assert( compt.numDiffCompts == compt.x1/compt.diffLength ) - -#define the molecule. Its geometry is defined by its parent volume, cylinder -c = moose.Pool( '/cylinder/pool' ) -c.diffConst = 1e-13 # define diffusion constant - - -# Here we set up a function calculation -func = moose.Function( '/cylinder/pool/func' ) -func.expr = "(-x0 * (30e-9 - x0) * (100e-9 - x0))*0.0001" -func.x.num = 1 #specify number of input variables. - -#Connect the molecules to the func -moose.connect( c, 'nOut', func.x[0], 'input' ) -#Connect the function to the pool -moose.connect( func, 'valueOut', c, 'increment' ) - -#Set up solvers -ksolve = moose.Gsolve( '/cylinder/Gsolve' ) -dsolve = moose.Dsolve( '/cylinder/dsolve' ) -stoich = moose.Stoich( '/cylinder/stoich' ) -stoich.compartment = compt -stoich.ksolve = ksolve -stoich.dsolve = dsolve -stoich.path = '/cylinder/##' - -#for i in range( 10, 18 ): -# moose.setClock( i, dt ) - -#initialize -x = numpy.arange( 0, compt.x1, compt.diffLength ) -# c.vec.nInit = [ 100.0 * (q < 0.2 * compt.x1) for q in x ] -c.vec.nInit = [ 100 for q in x ] - -# Run and plot it. -moose.reinit() -print dir(compt) -updateDt = 50 -runtime = updateDt * 4 -plt = pylab.plot( x, c.vec.n, label='t = 0 ') -t1 = time.time() -for t in range( 0, runtime-1, updateDt ): - moose.start( updateDt ) - plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) -print "Time = ", time.time() - t1 - -pylab.ylim( 0, 105 ) -pylab.legend() -pylab.show() - diff --git a/examples/snippets/rxdReacDiffusion.py b/examples/snippets/rxdReacDiffusion.py deleted file mode 100644 index b6b1ada..0000000 --- a/examples/snippets/rxdReacDiffusion.py +++ /dev/null @@ -1,79 +0,0 @@ -import numpy -import pylab -import moose -import time - -''' -This example implements a reaction-diffusion like system which is -bistable and propagates losslessly. It is based on the NEURON example -rxdrun.py, but incorporates more compartments and runs for a longer time. -The system is implemented as a hybrid of a reaction and a function which -sets its rates. Please see rxdFuncDiffusion.py for a variant that uses -just a function object to set up the system. -''' - -dt = 0.1 - -# define the geometry -compt = moose.CylMesh( '/cylinder' ) -compt.r0 = compt.r1 = 1 -compt.x1 = 100 -compt.diffLength = 0.2 -assert( compt.numDiffCompts == compt.x1/compt.diffLength ) - -#define the molecule. Its geometry is defined by its parent volume, cylinder -c = moose.Pool( '/cylinder/pool' ) -c.diffConst = 1 # define diffusion constant -# There is an implicit reaction substrate/product. MOOSE makes it explicit. -buf = moose.BufPool( '/cylinder/buf' ) -buf.nInit = 1 - -# The reaction is something entirely peculiar, not a chemical thing. -reaction = moose.Reac( '/cylinder/reac' ) -reaction.Kb = 0 - -# so here we set up a function calculation to do the same thing. -func = moose.Function( '/cylinder/reac/func' ) -func.expr = "(1 - x0) * (0.3 - x0)" -func.x.num = 1 #specify number of input variables. - -#Connect the reaction to the pools -moose.connect( reaction, 'sub', c, 'reac' ) -moose.connect( reaction, 'prd', buf, 'reac' ) - -#Connect the function to the reaction -moose.connect( func, 'valueOut', reaction, 'setNumKf' ) - -#Connect the molecules to the func -moose.connect( c, 'nOut', func.x[0], 'input' ) - -#Set up solvers -ksolve = moose.Ksolve( '/cylinder/ksolve' ) -dsolve = moose.Dsolve( '/cylinder/dsolve' ) -stoich = moose.Stoich( '/cylinder/stoich' ) -stoich.compartment = compt -stoich.ksolve = ksolve -stoich.dsolve = dsolve -stoich.path = '/cylinder/##' -for i in range( 10, 18 ): - moose.setClock( i, dt ) - -#initialize -x = numpy.arange( 0, compt.x1, compt.diffLength ) -c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] - -# Run and plot it. -moose.reinit() -updateDt = 50 -runtime = updateDt * 4 -plt = pylab.plot( x, c.vec.n, label='t = 0 ') -t1 = time.time() -for t in range( 0, runtime-1, updateDt ): - moose.start( updateDt ) - plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) -print "Time = ", time.time() - t1 - -pylab.ylim( 0, 1.05 ) -pylab.legend() -pylab.show() - diff --git a/examples/snippets/rxdSpineSize.py b/examples/snippets/rxdSpineSize.py deleted file mode 100644 index 1d071ab..0000000 --- a/examples/snippets/rxdSpineSize.py +++ /dev/null @@ -1,293 +0,0 @@ -################################################################## -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -## -## rxdSpineSize.py: Builds a cell with spines and a propagating reaction -## wave. Products diffuse into the spine and cause it to get bigger. -################################################################## -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose -import sys -sys.path.append( '../util' ) -import rdesigneur as rd -from PyQt4 import QtGui -import moogli -import moogli.extensions.moose -import matplotlib - -PI = 3.141592653 -ScalingForTesting = 10 -RM = 1.0 / ScalingForTesting -RA = 1.0 * ScalingForTesting -CM = 0.01 * ScalingForTesting -runtime = 100.0 -frameruntime = 1.0 -diffConst = 5e-12 -dendLen = 100e-6 -diffLen = 1.0e-6 -dendDia = 2e-6 -somaDia = 5e-6 -concInit = 0.001 # 1 millimolar -spineSpacing = 10e-6 -spineSpacingDistrib = 1e-6 -spineSize = 1.0 -spineSizeDistrib = 0.5 -spineAngle= numpy.pi / 2.0 -spineAngleDistrib = 0.0 - -def makeCellProto( name ): - elec = moose.Neuron( '/library/' + name ) - ecompt = [] - soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) - dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) - moose.connect( soma, 'axial', dend, 'raxial' ) - elec.buildSegmentTree() - -def makeChemProto( name ): - chem = moose.Neutral( '/library/' + name ) - comptVol = diffLen * dendDia * dendDia * PI / 4.0 - for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): - print 'making ', i - compt = moose.CubeMesh( chem.path + '/' + i[0] ) - compt.volume = i[1] - #x = moose.Pool( compt.path + '/x' ) - #y = moose.BufPool( compt.path + '/y' ) - z = moose.Pool( compt.path + '/z' ) - #x.concInit = 0.0 - #x.diffConst = diffConst - #y.concInit = concInit - z.concInit = 0.0 - z.diffConst = diffConst - nInit = comptVol * 6e23 * concInit - nstr = str( 1/nInit) - - x = moose.Pool( chem.path + '/dend/x' ) - x.diffConst = diffConst - func = moose.Function( x.path + '/func' ) - func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" - print func.expr - func.x.num = 1 - moose.connect( x, 'nOut', func.x[0], 'input' ) - moose.connect( func, 'valueOut', x, 'increment' ) - z = moose.element( '/library/' + name + '/dend/z' ) - reac = moose.Reac( '/library/' + name + '/dend/reac' ) - reac.Kf = 1 - reac.Kb = 10 - moose.connect( reac, 'sub', x, 'reac' ) - moose.connect( reac, 'prd', z, 'reac' ) - -def makeSpineProto2( name ): - spine = moose.Neutral( '/library/' + name ) - shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) - head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) - moose.connect( shaft, 'axial', head, 'raxial' ) - -def makeModel(): - moose.Neutral( '/library' ) - makeCellProto( 'cellProto' ) - makeChemProto( 'cProto' ) - makeSpineProto2( 'spine' ) - rdes = rd.rdesigneur( useGssa = False, \ - combineSegments = False, \ - stealCellFromLibrary = True, \ - diffusionLength = 1e-6, \ - cellProto = [['cellProto', 'elec' ]] ,\ - spineProto = [['spineProto', 'spine' ]] ,\ - chemProto = [['cProto', 'chem' ]] ,\ - spineDistrib = [ \ - ['spine', '#', \ - 'spacing', str( spineSpacing ), \ - 'spacingDistrib', str( spineSpacingDistrib ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ], \ - chemDistrib = [ \ - [ "chem", "dend", "install", "1" ] \ - ], - adaptorList = [ \ - [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ - ] \ - ) - rdes.buildModel( '/model' ) - x = moose.vec( '/model/chem/dend/x' ) - x.concInit = 0.0 - for i in range( 0,20 ): - x[i].concInit = concInit - -def makePlot( name, srcVec, field ): - tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec - for i in zip(srcVec, tab): - moose.connect(i[1], 'requestOut', i[0], field) - return tab - - -def displayPlots(): - for x in moose.wildcardFind( '/graphs/#[0]' ): - tab = moose.vec( x ) - for i in range( len( tab ) ): - pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) - pylab.legend() - pylab.figure() - -def main(): - """ - This illustrates the use of rdesigneur to build a simple dendrite with - spines, and then to resize them using spine fields. These are the - fields that would be changed dynamically in a simulation with reactions - that affect spine geometry. - In this simulation there is a propagating reaction wave using a - highly abstracted equation, whose product diffuses into the spines and - makes them bigger. - """ - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - - eHead = moose.wildcardFind( '/model/elec/#head#' ) - oldDia = [ i.diameter for i in eHead ] - graphs = moose.Neutral( '/graphs' ) - #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) - #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) - makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) - makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) - makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) - makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) - makePlot( 'headDia', eHead, 'getDiameter' ) - - ''' - debug = moose.PyRun( '/pyrun' ) - debug.tick = 10 - debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" - ''' - moose.reinit() - moose.start( runtime ) - - displayPlots() - pylab.plot( oldDia, label = 'old Diameter' ) - pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) - pylab.legend() - pylab.show() - - app = QtGui.QApplication(sys.argv) - #widget = mv.MoogliViewer( '/model' ) - morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) - widget = moogli.MorphologyViewerWidget( morphology ) - widget.show() - return app.exec_() - quit() - -# Run the 'main' if this script is executed standalone. - -def showVisualization(): - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - - eHead = moose.wildcardFind( '/model/elec/#head#' ) - oldDia = [ i.diameter for i in eHead ] - graphs = moose.Neutral( '/graphs' ) - #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) - #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) - makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) - dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) - makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) - psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) - diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) - # print diaTab[0].vector[-1] - # return - dendrite = moose.element("/model/elec/dend") - dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] - # print dendrites - moose.reinit() - - spineHeads = moose.wildcardFind( '/model/elec/#head#') - # print moose.wildcardFind( '/model/elec/##') - - # print "dendZ", readValues(dendZ) - # print dendrite - - app = QtGui.QApplication(sys.argv) - viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) - viewer.showMaximized() - viewer.start() - return app.exec_() - - -def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): - network = moogli.extensions.moose.read(path=path, - vertices=15) - - dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] - chem_compt_group = dendrite.subdivide(len(dendZ)) - normalizer = moogli.utilities.normalizer(0.0, - 300.0, - clipleft=True, - clipright=True) - colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) - mapper = moogli.utilities.mapper(colormap, normalizer) - - def readValues(tables): - values = [] - for i in range(len(tables)): - values.append(tables[i].vector[-1]) - return values - - def prelude(view): - view.home() - view.pitch(math.pi / 3.0) - view.zoom(0.3) - network.groups["soma"].set("color", moogli.colors.RED) - network.groups["spine"].groups["shaft"].set("color", - moogli.colors.RED) - - def interlude(view): - moose.start(frameruntime) - network.groups["spine"].groups["head"].set("radius", - readValues(diaTab), - lambda x: x * 0.5e6) - network.groups["spine"].groups["head"].set("color", - readValues(psdZ), - mapper) - chem_compt_group.set("color", - readValues(dendZ), - mapper) - if moose.element("/clock").currentTime >= runtime: - view.stop() - - viewer = moogli.Viewer("Viewer") - viewer.attach_shapes(network.shapes.values()) - viewer.detach_shape(dendrite) - viewer.attach_shapes(chem_compt_group.shapes.values()) - - view = moogli.View("main-view", - prelude=prelude, - interlude=interlude) - cb = moogli.widgets.ColorBar(id="cb", - title="Molecule #", - text_color=moogli.colors.BLACK, - position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), - size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), - text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", - orientation=math.pi / 2.0, - text_character_size=20, - label_formatting_precision=0, - colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), - color_resolution=100, - scalar_range=moogli.geometry.Vec2f(0.0, - 300.0)) - view.attach_color_bar(cb) - viewer.attach_view(view) - return viewer - - -if __name__ == '__main__': - showVisualization() diff --git a/examples/snippets/savemodel.py b/examples/snippets/savemodel.py deleted file mode 100644 index bf29b91..0000000 --- a/examples/snippets/savemodel.py +++ /dev/null @@ -1,61 +0,0 @@ -# savemodel.py --- -# -# Filename: savemodel.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Oct 29 00:08:50 2014 (+0530) -# Version: -# Last-Updated:Thr Dec 23 16:31:00 2015 (+0530) -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""This example illustrates loading a kinetic model defined in Genesis format -into Moose using "loadModel" function and using "saveModel" function one can -save the model back to Genesis format -""" - -import sys -#sys.path.append('../../python') -import moose -from moose.genesis import * - -if __name__ == '__main__': - """ The script demonstates to convert Chemical (Genesis) file back to Genesis file using moose """ - model = moose.loadModel('../genesis/reaction.g', '/model') - written = write('/model', 'testsave.g') - print written diff --git a/examples/snippets/scaleVolumes.py b/examples/snippets/scaleVolumes.py deleted file mode 100644 index 6a69da6..0000000 --- a/examples/snippets/scaleVolumes.py +++ /dev/null @@ -1,159 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import math -import pylab -import numpy -import moose - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-20 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - enz1 = moose.Enz( '/model/compartment/b/enz1' ) - enz2 = moose.Enz( '/model/compartment/c/enz2' ) - cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) - cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) - reac = moose.Reac( '/model/compartment/reac' ) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - - # connect them up to the compartment for volumes - #for x in ( a, b, c, cplx1, cplx2 ): - # moose.connect( x, 'mesh', mesh, 'mesh' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2( '/model/graphs/concA' ) - outputB = moose.Table2( '/model/graphs/concB' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - - ''' - # Schedule the whole lot - moose.setClock( 4, 0.01 ) # for the computational objects - moose.setClock( 8, 1.0 ) # for the plots - # The wildcard uses # for single level, and ## for recursive. - moose.useClock( 4, '/model/compartment/##', 'process' ) - moose.useClock( 8, '/model/graphs/#', 'process' ) - ''' - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - -def main(): - - """ - This example illustrates how to run a model at different volumes. - The key line is just to set the volume of the compartment:: - - compt.volume = vol - - If everything - else is set up correctly, then this change propagates through to all - reactions molecules. - - For a deterministic reaction one would not see any change in output - concentrations. - For a stochastic reaction illustrated here, one sees the level of - 'noise' - changing, even though the concentrations are similar up to a point. - This example creates a bistable model having two enzymes and a reaction. - One of the enzymes is autocatalytic. - This model is set up within the script rather than using an external - file. - The model is set up to run using the GSSA (Gillespie Stocahstic systems - algorithim) method in MOOSE. - - To run the example, run the script - - ``python scaleVolumes.py`` - - and hit ``enter`` every cycle to see the outcome of stochastic - calculations at ever smaller volumes, keeping concentrations the same. - """ - makeModel() - moose.seed( 11111 ) - gsolve = moose.Gsolve( '/model/compartment/gsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - compt = moose.element( '/model/compartment' ); - stoich.compartment = compt - stoich.ksolve = gsolve - stoich.path = "/model/compartment/##" - #moose.setClock( 5, 1.0 ) # clock for the solver - #moose.useClock( 5, '/model/compartment/gsolve', 'process' ) - a = moose.element( '/model/compartment/a' ) - - for vol in ( 1e-19, 1e-20, 1e-21, 3e-22, 1e-22, 3e-23, 1e-23 ): - # Set the volume - compt.volume = vol - print 'vol = ', vol, ', a.concInit = ', a.concInit, ', a.nInit = ', a.nInit - - moose.reinit() - moose.start( 100.0 ) # Run the model for 100 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - - # move most molecules over to b - b.conc = b.conc + a.conc * 0.9 - a.conc = a.conc * 0.1 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - a.conc = a.conc + b.conc * 0.99 - b.conc = b.conc * 0.01 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - pylab.show( block=False ) - print 'vol = ', vol, 'hit enter to go to next plot' - raw_input() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/scriptGssaSolver.py b/examples/snippets/scriptGssaSolver.py deleted file mode 100644 index 94f10ae..0000000 --- a/examples/snippets/scriptGssaSolver.py +++ /dev/null @@ -1,123 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example illustrates how to set up a kinetic solver and kinetic model -# using the scripting interface. Normally this would be done using the -# Shell::doLoadModel command, and normally would be coordinated by the -# SimManager as the base of the entire model. -# This example creates a bistable model having two enzymes and a reaction. -# One of the enzymes is autocatalytic. -# The model is set up to run using Exponential Euler integration. - -import math -import pylab -import numpy -import moose - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-20 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - enz1 = moose.Enz( '/model/compartment/b/enz1' ) - enz2 = moose.Enz( '/model/compartment/c/enz2' ) - cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) - cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) - reac = moose.Reac( '/model/compartment/reac' ) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - - # connect them up to the compartment for volumes - #for x in ( a, b, c, cplx1, cplx2 ): - # moose.connect( x, 'mesh', mesh, 'mesh' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def main(): - makeModel() - gsolve = moose.Gsolve( '/model/compartment/gsolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = moose.element( '/model/compartment' ) - stoich.ksolve = gsolve - stoich.path = "/model/compartment/##" - #solver.method = "rk5" - #mesh = moose.element( "/model/compartment/mesh" ) - #moose.connect( mesh, "remesh", solver, "remesh" ) - moose.setClock( 5, 1.0 ) # clock for the solver - moose.useClock( 5, '/model/compartment/gsolve', 'process' ) - - moose.reinit() - moose.start( 100.0 ) # Run the model for 100 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - - # move most molecules over to bgsolve - b.conc = b.conc + a.conc * 0.9 - a.conc = a.conc * 0.1 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - a.conc = a.conc + b.conc * 0.99 - b.conc = b.conc * 0.01 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/scriptKineticModel.py b/examples/snippets/scriptKineticModel.py deleted file mode 100644 index 453e446..0000000 --- a/examples/snippets/scriptKineticModel.py +++ /dev/null @@ -1,120 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -""" -This example illustrates how to define a kinetic model using the -scripting interface. Normally one uses standard model formats like -SBML or kkit to concisely define kinetic models, but in some cases one -would like to modify the model through the script. -This example creates a bistable model having two enzymes and a reaction. -One of the enzymes is autocatalytic. -The model is set up to run using default Exponential Euler integration. -The snippet scriptKineticSolver.py uses the much better GSL -Runge-Kutta-Fehlberg integration scheme on this same model. -""" - -import math -import pylab -import numpy -import moose - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-15 - # the mesh is created automatically by the compartment - moose.le( '/model/compartment' ) - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - enz1 = moose.Enz( '/model/compartment/b/enz1' ) - enz2 = moose.Enz( '/model/compartment/c/enz2' ) - cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) - cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) - reac = moose.Reac( '/model/compartment/reac' ) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - - # connect them up to the compartment for volumes - #for x in ( a, b, c, cplx1, cplx2 ): - # moose.connect( x, 'mesh', mesh, 'mesh' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - - # We need a finer timestep than the default 0.1 seconds, - # in order to get numerical accuracy. - for i in range (11, 15 ): - moose.setClock( i, 0.001 ) # for computational objects - -def main(): - makeModel() - - moose.reinit() - moose.start( 100.0 ) # Run the model for 100 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - - # move most molecules over to b - b.conc = b.conc + a.conc * 0.9 - a.conc = a.conc * 0.1 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - a.conc = a.conc + b.conc * 0.99 - b.conc = b.conc * 0.01 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/conc#' ): - #x.xplot( 'scriptKineticModel.plot', x.name ) - t = numpy.arange( 0, x.vector.size, 1 ) # sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/scriptKineticSolver.py b/examples/snippets/scriptKineticSolver.py deleted file mode 100644 index 977a099..0000000 --- a/examples/snippets/scriptKineticSolver.py +++ /dev/null @@ -1,124 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example illustrates how to set up a kinetic solver and kinetic model -# using the scripting interface. Normally this would be done using the -# Shell::doLoadModel command, and normally would be coordinated by the -# SimManager as the base of the entire model. -# This example creates a bistable model having two enzymes and a reaction. -# One of the enzymes is autocatalytic. -# The model is set up to run using Exponential Euler integration. - -import math -import pylab -import numpy -import moose - -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-15 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - c = moose.Pool( '/model/compartment/c' ) - enz1 = moose.Enz( '/model/compartment/b/enz1' ) - enz2 = moose.Enz( '/model/compartment/c/enz2' ) - cplx1 = moose.Pool( '/model/compartment/b/enz1/cplx' ) - cplx2 = moose.Pool( '/model/compartment/c/enz2/cplx' ) - reac = moose.Reac( '/model/compartment/reac' ) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - - # connect them up to the compartment for volumes - #for x in ( a, b, c, cplx1, cplx2 ): - # moose.connect( x, 'mesh', mesh, 'mesh' ) - - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - outputA = moose.Table2 ( '/model/graphs/concA' ) - outputB = moose.Table2 ( '/model/graphs/concB' ) - - # connect up the tables - moose.connect( outputA, 'requestOut', a, 'getConc' ); - moose.connect( outputB, 'requestOut', b, 'getConc' ); - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/conc#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def main(): - makeModel() - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = moose.element( '/model/compartment' ) - stoich.ksolve = ksolve - stoich.path = "/model/compartment/##" - #solver.method = "rk5" - #mesh = moose.element( "/model/compartment/mesh" ) - #moose.connect( mesh, "remesh", solver, "remesh" ) - ''' - moose.setClock( 5, 1.0 ) # clock for the solver - moose.useClock( 5, '/model/compartment/ksolve', 'process' ) - ''' - - moose.reinit() - moose.start( 100.0 ) # Run the model for 100 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - - # move most molecules over to b - b.conc = b.conc + a.conc * 0.9 - a.conc = a.conc * 0.1 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - a.conc = a.conc + b.conc * 0.99 - b.conc = b.conc * 0.01 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/showclocks.py b/examples/snippets/showclocks.py deleted file mode 100644 index 3ebb3f7..0000000 --- a/examples/snippets/showclocks.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- coding: utf-8 -*- -# Author: Subhasis Ray -# Date: Mon Jun 10 16:23:41 IST 2013 - -"""This snippet shows various ways of displaying scheduling -information of moose model components. - -The `/clock/tick` ematrix has 10 elements, any of which can be setup -by using the `moose.setClock(tickNo, dt)` function. This sets the -interval between the ticking events for it to `dt` time. - -Individual model components can be assigned ticks by -`moose.useClock(tickNo, targetPath, targetFinfo)`. Commonly used -target finfo is `process`, which causes the function of the same name -in the ematrix at target path to be called at each ticking event of -tick `tickNo`. Thus displaying the neighbors of `process` finfo of an -element will show the tick assigned to it. - -On the other hand, the tick ematrix has 10 finfos, `proc0` ... `proc9` -which connect to all the targets of the corresponding `tickNo`. You -can display the neighbors of these finfos also to see what is -scheduled on each tick. - -""" - -import moose - -comp = moose.Compartment('/comp') -# Setup the ticks -moose.setClock(0, 1e-6) -moose.setClock(1, 1e-6) - -# Schedule the element. -moose.useClock(0, '/##[ISA=Compartment]', 'init') -moose.useClock(1, '/##[ISA=Compartment]', 'process') - -# List the ticks connected to an element. -print 'Ticks connected to `process` method of', comp.path -for tick in comp.neighbors['process']: - print ' ->',tick.path - -# Different ticks can be connected to different fields. -print 'Ticks connected to `init` method of', comp.path -for tick in comp.neighbors['init']: - print ' ->',tick.path - -# View the scheduled elements using the tick nos. -t = moose.element('/clock') -print 'Elements on tick 0' -for e in t.neighbors['proc0']: - print ' ->', e.path -print 'Elements on tick 1' -for e in t.neighbors['proc1']: - print ' ->', e.path - -ch = moose.HHChannel('/comp/chan') -moose.useClock(1, ch.path, 'process') -print ch.path, 'has been scheduled' -print 'Elements on tick 1' -for e in t.neighbors['proc1']: - print ' ->', e.path - -# Go through elements by wildcard search and list the ticks connected. -# This can be slow when the model is too big. -for el in moose.wildcardFind('/##[ISA=Compartment]'): - print 'Ticks connected to `process` method of', el.path - for t in moose.element(el).neighbors['process']: - print ' ->', t.path - -# - - diff --git a/examples/snippets/showmsg.py b/examples/snippets/showmsg.py deleted file mode 100644 index 38535e6..0000000 --- a/examples/snippets/showmsg.py +++ /dev/null @@ -1,22 +0,0 @@ - -"""This is to show a _raw_ way of traversing messages.""" -import sys -sys.path.append('../../python') - -import moose - -connectionProbability = 0.5 -net = moose.IntFire('/net1', 10) -syn = moose.SimpleSynHandler( '/net1/sh', 10 ) -moose.connect( syn, 'activationOut', net, 'activation', 'OneToOne' ) -synapse = syn.synapse.vec -mid = moose.connect(net, 'spikeOut', synapse, 'addSpike', 'Sparse') # This creates a `Sparse` message from `spikeOut` source of net to `addSpike` destination on synapse. -msg = moose.element(mid) -msg.setRandomConnectivity(connectionProbability, 5) -for n in net.vec: - print 'Messages from %s.spikeOut' % (n.path) - node = moose.element(n) - for dest, df in zip(node.msgDests['spikeOut'], node.msgDestFunctions['spikeOut']): - print '\t--> %s.%s' % (dest.path, df) - - diff --git a/examples/snippets/singlemsgcross.py b/examples/snippets/singlemsgcross.py deleted file mode 100644 index 7a58929..0000000 --- a/examples/snippets/singlemsgcross.py +++ /dev/null @@ -1,95 +0,0 @@ -# singlemsgcross.py --- -# -# Filename: singlemsgcross.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Wed May 1 11:05:30 2013 (+0530) -# Version: -# Last-Updated: Wed May 1 12:16:14 2013 (+0530) -# By: subha -# Update #: 43 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""This example shows that you can have two ematrix objects and -connect individual elements using `Single` message""" - -import pylab -import sys -sys.path.append('../../python') -import moose - -def test_crossing_single(): - """This function creates an ematrix of two PulseGen elements and - another ematrix of two Table elements. - - The two pulsegen elements have same amplitude but opposite phase. - - Table[0] is connected to PulseGen[1] and Table[1] to Pulsegen[0]. - - In the plot you should see two square pulses of opposite phase. - - """ - size = 2 - pg = moose.PulseGen('pulsegen', size) - for ix, ii in enumerate(pg.vec): - pulse = moose.element(ii) - pulse.delay[0] = 1.0 - pulse.width[0] = 2.0 - pulse.level[0] = (-1)**ix - tab = moose.Table('table', size) - moose.connect(tab.vec[0], 'requestOut', pg.vec[1], 'getOutputValue', 'Single') - moose.connect(tab.vec[1], 'requestOut', pg.vec[0], 'getOutputValue', 'Single') - print 'Neighbors:' - for t in tab.vec: - print t.path - for n in moose.element(t).neighbors['requestOut']: - print 'requestOut <-', n.path - moose.setClock(0, 0.1) - moose.useClock(0, '/##', 'process') - moose.start(5) - for ii in tab.vec: - t = moose.Table(ii).vector - print len(t) - pylab.plot(t) - pylab.show() - -if __name__ == '__main__': - test_crossing_single() - -# -# singlemsgcross.py ends here diff --git a/examples/snippets/soma.p b/examples/snippets/soma.p deleted file mode 100644 index e27fbb3..0000000 --- a/examples/snippets/soma.p +++ /dev/null @@ -1,16 +0,0 @@ -// genesis -// cell parameter file for multiscale modeling snippet. -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -// soma none 0 12 0 12 Ca_conc -17.402e12 Na 300 Ca 40 K_DR 250 K_A 50 K_C 250 -soma none 0 12 0 12 Ca_conc -1e13 Na 300 Ca 50 K_DR 250 K_A 200 diff --git a/examples/snippets/spinyNeuron.p b/examples/snippets/spinyNeuron.p deleted file mode 100644 index d30ba53..0000000 --- a/examples/snippets/spinyNeuron.p +++ /dev/null @@ -1,100 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - -/* NOTE: The format of the cell descriptor files does not allow for - continuation to another line. The following long line lists the - soma channels with their "density" parameters. - - Ca_conc -17.402e12 - Not really a channel, but a "Ca_concen" object. Normally, the B - field is set to "dens"/compt_volume (m^3), but the negative sign - causes the absolute value to be used with no scaling by volume. - Na 300 - Ca 40 - K_DR 150 - K_AHP 8 - K_C 100 - K_A 50 -*/ - -basal_3 none 0 22 0 3.84 -basal_5 . 0 22 0 3.84 -basal_6 . 0 22 0 3.84 -basal_8 . 0 11 0 3.84 - -soma basal_8 0 12 0 8.46 - - -apical_10 soma 0 12 0 4.0 -apical_11 apical_10 0 12 0 3 -apical_12 apical_11 0 12 0 3 -apical_13 apical_12 0 12 0 2.6 -apical_14 apical_13 0 12 0 2.6 -apical_15 apical_14 0 12 0 2.6 -apical_16 apical_15 0 12 0 2.6 -apical_17 apical_16 0 12 0 2.6 -apical_18 apical_17 0 12 0 2.6 -apical_19 apical_18 0 12 0 2.6 - -lat_11_1 apical_10 -6 6 0 2 -lat_11_2 lat_11_1 -6 6 0 1.8 -lat_11_3 lat_11_2 0 8 0 1.5 -lat_11_4 lat_11_3 0 8 0 1.5 - -lat_13_1 apical_12 4 4 0 1.0 -lat_13_2 lat_13_1 4 4 0 1.0 - -lat_14_1 lat_13_2 0 10 0 1.0 -lat_14_2 . 0 10 0 1.0 -lat_14_3 . 0 10 0 1.0 -lat_14_4 . 0 10 0 1.0 -lat_14_5 . 0 10 0 1.0 -lat_14_6 . 0 10 0 1.0 -lat_14_7 . 0 10 0 1.0 -lat_14_8 . 0 10 0 1.0 -lat_14_9 . 0 10 0 1.0 -lat_14_10 . 0 10 0 1.0 -lat_14_11 . 0 10 0 1.0 -lat_14_12 . 0 10 0 1.0 -lat_14_13 . 0 10 0 1.0 -lat_15_1 . 0 10 0 1.0 -lat_15_2 . 0 10 0 1.0 - -spine_neck_14_1 lat_14_1 0.5 0 0 0.1 -spine_head_14_1 . 0.5 0 0 0.5 -spine_neck_14_2 lat_14_2 0.5 0 0 0.1 -spine_head_14_2 . 0.5 0 0 0.5 -spine_neck_14_3 lat_14_3 0.5 0 0 0.1 -spine_head_14_3 . 0.5 0 0 0.5 -spine_neck_14_4 lat_14_4 0.5 0 0 0.1 -spine_head_14_4 . 0.5 0 0 0.5 -spine_neck_14_5 lat_14_5 0.5 0 0 0.1 -spine_head_14_5 . 0.5 0 0 0.5 -spine_neck_14_6 lat_14_6 0.5 0 0 0.1 -spine_head_14_6 . 0.5 0 0 0.5 -spine_neck_14_7 lat_14_7 0.5 0 0 0.1 -spine_head_14_7 . 0.5 0 0 0.5 -spine_neck_14_8 lat_14_8 0.5 0 0 0.1 -spine_head_14_8 . 0.5 0 0 0.5 -spine_neck_14_9 lat_14_9 0.5 0 0 0.1 -spine_head_14_9 . 0.5 0 0 0.5 -spine_neck_14_10 lat_14_10 0.5 0 0 0.1 -spine_head_14_10 . 0.5 0 0 0.5 -spine_neck_14_11 lat_14_11 0.5 0 0 0.1 -spine_head_14_11 . 0.5 0 0 0.5 -spine_neck_14_12 lat_14_12 0.5 0 0 0.1 -spine_head_14_12 . 0.5 0 0 0.5 -spine_neck_14_13 lat_14_13 0.5 0 0 0.1 -spine_head_14_13 . 0.5 0 0 0.5 diff --git a/examples/snippets/stargazin_synapse.g b/examples/snippets/stargazin_synapse.g deleted file mode 100644 index b6241c2..0000000 --- a/examples/snippets/stargazin_synapse.g +++ /dev/null @@ -1,413 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Mon Jul 8 15:42:18 2013 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.001 -CONTROLDT = 10 -PLOTDT = 10 -MAXTIME = 1000 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 9e-20 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black 0 0 0 -simundump geometry /kinetics/geometry[1] 0 9e-20 3 sphere "" white black 0 0 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/actCaMKII 0 0 0 0.83333 5 0 0 0 6 0 \ - /kinetics/geometry 35 0 0 7 0 -simundump text /kinetics/PSD/actCaMKII/notes 0 "" -call /kinetics/PSD/actCaMKII/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -6 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.033332 8 2 0 0 \ - "" red 35 "" -2 3 0 -simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" -call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ -"" -simundump group /kinetics/PSD/PP1_PSD 0 yellow 0 x 0 0 "" PP1_PSD \ - defaultfile.g 0 0 0 7 10 0 -simundump text /kinetics/PSD/PP1_PSD/notes 0 "" -call /kinetics/PSD/PP1_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry blue yellow -4 -5 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -2 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 0 0 0 0 0 6 0.0010416 \ - 0.2 0.05 0 0 "" red blue "" -6 -4 0 -simundump text /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes 0 "" -call /kinetics/PSD/PP1_PSD/PP1-active/PP1_1/notes LOAD \ -"" -simundump kreac /kinetics/PSD/move_to_PSD 0 0.5 15 "" white 0 -8 -5 0 -simundump text /kinetics/PSD/move_to_PSD/notes 0 "" -call /kinetics/PSD/move_to_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R_S2/notes 0 "" -call /kinetics/PSD/R_S2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/R_SpS/notes 0 "" -call /kinetics/PSD/R_SpS/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ - 28 0 0 1 0 -simundump text /kinetics/PSD/R_SpSp/notes 0 "" -call /kinetics/PSD/R_SpSp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry 61 0 -4 -2 0 -simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ - "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -6 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.46295 \ - 0.44443 0.11111 0 0 "" red 61 "" -2 -1 0 -simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" -call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/inact_CaMKII 0 0 8 8 48 48 0 0 6 0 \ - /kinetics/geometry[1] blue 0 5 11 0 -simundump text /kinetics/PSD/inact_CaMKII/notes 0 "" -call /kinetics/PSD/inact_CaMKII/notes LOAD \ -"" -simundump kreac /kinetics/PSD/CaMKII_bind_CaM 0 0.1 0.1 "" white 0 3 9 0 -simundump text /kinetics/PSD/CaMKII_bind_CaM/notes 0 "" -call /kinetics/PSD/CaMKII_bind_CaM/notes LOAD \ -"" -simundump kpool /kinetics/PSD/CaM.CaMKII 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[2] blue 0 0 11 0 -simundump text /kinetics/PSD/CaM.CaMKII/notes 0 "" -call /kinetics/PSD/CaM.CaMKII/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Basal_CaMKII 0 0 0.83333 0.83333 5 5 0 0 6 0 \ - /kinetics/geometry[2] blue 0 -5 9 0 -simundump text /kinetics/PSD/Basal_CaMKII/notes 0 "" -call /kinetics/PSD/Basal_CaMKII/notes LOAD \ -"" -simundump group /kinetics/BULK 0 yellow black x 0 0 "" BULK defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/BULK/notes 0 "" -call /kinetics/BULK/notes LOAD \ -"" -simundump kpool /kinetics/BULK/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ - /kinetics/geometry 0 yellow -8 -10 0 -simundump text /kinetics/BULK/iR/notes 0 "Same as Fus3\n" -call /kinetics/BULK/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/BULK/PP1-inactive 0 0 0.66667 0.66667 36 36 0 0 54 \ - 0 /kinetics/geometry[1] blue yellow -4 -10 0 -simundump text /kinetics/BULK/PP1-inactive/notes 0 "" -call /kinetics/BULK/PP1-inactive/notes LOAD \ -"" -simundump kpool /kinetics/BULK/Ca 0 0 0.08 0.08 4.32 4.32 0 0 54 4 \ - /kinetics/geometry[1] 54 yellow 8 0 0 -simundump text /kinetics/BULK/Ca/notes 0 "" -call /kinetics/BULK/Ca/notes LOAD \ -"" -simundump kpool /kinetics/BULK/CaN 0 0 0.037037 0.037037 2 2 0 0 54 0 \ - /kinetics/geometry[1] 9 yellow 8 -5 0 -simundump text /kinetics/BULK/CaN/notes 0 "" -call /kinetics/BULK/CaN/notes LOAD \ -"" -simundump kpool /kinetics/BULK/Ca4.CaN 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] 7 yellow 1 -5 0 -simundump text /kinetics/BULK/Ca4.CaN/notes 0 "" -call /kinetics/BULK/Ca4.CaN/notes LOAD \ -"" -simundump kenz /kinetics/BULK/Ca4.CaN/CaN_enz 0 0 0 0 0 54 0.92593 4 1 0 0 "" \ - red 7 "" 1 -7 0 -simundump text /kinetics/BULK/Ca4.CaN/CaN_enz/notes 0 "" -call /kinetics/BULK/Ca4.CaN/CaN_enz/notes LOAD \ -"" -simundump kreac /kinetics/BULK/CaN_bind_Ca 0 4e-06 0.1 "" white yellow 4 -7 0 -simundump text /kinetics/BULK/CaN_bind_Ca/notes 0 "" -call /kinetics/BULK/CaN_bind_Ca/notes LOAD \ -"" -simundump kreac /kinetics/BULK/CaM_bind_Ca 0 1e-08 1 "" white yellow 4 3 0 -simundump text /kinetics/BULK/CaM_bind_Ca/notes 0 "" -call /kinetics/BULK/CaM_bind_Ca/notes LOAD \ -"" -simundump kpool /kinetics/BULK/CaM 0 0 0.88889 0.88889 48 48 0 0 54 0 \ - /kinetics/geometry[1] 25 yellow 8 5 0 -simundump text /kinetics/BULK/CaM/notes 0 "" -call /kinetics/BULK/CaM/notes LOAD \ -"" -simundump kpool /kinetics/BULK/Ca4.CaM 0 0 0 0 0 0 0 0 54 0 \ - /kinetics/geometry[1] 26 yellow 1 5 0 -simundump text /kinetics/BULK/Ca4.CaM/notes 0 "" -call /kinetics/BULK/Ca4.CaM/notes LOAD \ -"" -simundump kreac /kinetics/BULK/inactivate_PP1 0 0.05 0.002 "" white yellow -6 \ - -7 0 -simundump text /kinetics/BULK/inactivate_PP1/notes 0 "" -call /kinetics/BULK/inactivate_PP1/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 3523.1 -2.2424 40 0 -simundump xgraph /graphs/conc2 0 0 3523.1 0 40 0 -simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 4 0 0 1 -simundump xplot /graphs/conc1/Ca.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 54 0 0 1 -simundump xplot /graphs/conc2/iR.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 0 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 3523.1 1.8672e-07 0.093991 0 -simundump xgraph /moregraphs/conc4 0 0 3523.1 0 11.572 0 -simundump xplot /moregraphs/conc3/Ca4.CaN.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 7 0 0 1 -simundump xplot /moregraphs/conc3/Ca4.CaM.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 26 0 0 1 -simundump xplot /moregraphs/conc4/PP1-active.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /moregraphs/conc4/actCaMKII.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 35 0 0 1 -simundump xcoredraw /edit/draw 0 -12 10 -18 13 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"" \ -"" \ -"16 Dec 2011. Completely new PSD version, where the R, Rp and Rpp" \ -"all refer to AMPAR bound to two stargazins, and each p is on one" \ -"of the stargazins. " \ -"" \ -"stargazin_psd2.g: tweaked traffic parameters to get bistability." \ -"Very bistable." \ -"" \ -"17 Dec 2011. stargazin_psd3.g: Minor change: reduced kcat for" \ -"CaN from 10 to 2." \ -"" \ -"stargazin_psd4.g: Changed some rates around so that it responds" \ -"in a more relevant range for CaMKII activation in the full model." \ -"Also renamed the Receptor-Stargazin pools to clarify that the" \ -"phospho steps are on the stargazin." \ -"" \ -"stargazin_psd5.g: Incorporated traffic rates from the " \ -"traffillator analysis." \ -"" \ -"stargazin_psd6.g: Raised CaN Km from 5 to 10 uM." \ -"" \ -"stargazin_psd8.g: Increased level of PP2A by 3x so we have at least" \ -"2 molecules of it in the PSD. Lowered kcat to match." \ -"" \ -"stargazin_psd9.g: Fine-tuning trafficking parameters to see if we" \ -"can improve Kramer time for off-to-on transition." \ -"" \ -"stargazin_psd11.g: first pass at revised stargazin using PP1-active" \ -"instead of CaN." \ -"" \ -"stargazin_psd12.g: Fine-tuned version of 11, with the traffic" \ -"rates estimated from traffillator analysis." \ -"" \ -"stargazin_psd12a.g: Minor naming change." \ -"" \ -"stargazin_psd12b.g: More naming change: PP2A becomes " \ -"basal_phosphatase." \ -"" \ -"07 July 2013: Adding in toy regulation by Ca." \ -"stargazin_snapse2.g: turnon happens but not turnoff." \ -"Did doser for PP1-active. Halfmax is only 0.08. Hence problem." \ -"" \ -"stargazin_synapse4.g: Scaled up doser for PP1-active so halfmax" \ -"is now up to 0.2 uM." \ -"stargazin_synapse5.g: A big of fine-tuning on the levels of PP1 " \ -"and CaMKII so that the bidirectional flip is possible." \ -"stargazin_synapse6.g: OK, now a set of parameters that do" \ -"bidirectional state flips with reasonable Ca levels." \ -"0.08 is bistable" \ -"2.0 turns on" \ -"0.2 turns off." \ -"" \ -"08 July 2013. Stargazin_synapse7.g: Raised CaM to match CaMKII" \ -"levels, so that the " \ -"turnon is faster." \ -"stargazin_synapse8.g: Further raise of CaM and CaMKII, now" \ -"turnon happens within 20 sec." \ -"stargazin_synapse9.g: Added Ca plot." \ -"" -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B -addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/Basal_CaMKII /kinetics/PSD/actCaMKII SUMTOTAL n nInit -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n -addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B -addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/PSD/PP1_PSD/PP1-active MM_PRD pA -addmsg /kinetics/BULK/inactivate_PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 SUBSTRATE n -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 SUBSTRATE n -addmsg /kinetics/BULK/iR /kinetics/PSD/move_to_PSD SUBSTRATE n -addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_S2 MM_PRD pA -addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_1 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/PP1_PSD/PP1-active/PP1_2 /kinetics/PSD/R_SpSp REAC sA B -addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA -addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n -addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n -addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n -addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n -addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/inact_CaMKII REAC A B -addmsg /kinetics/BULK/Ca4.CaM /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n -addmsg /kinetics/PSD/inact_CaMKII /kinetics/PSD/CaMKII_bind_CaM SUBSTRATE n -addmsg /kinetics/PSD/CaM.CaMKII /kinetics/PSD/CaMKII_bind_CaM PRODUCT n -addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/PSD/CaM.CaMKII REAC B A -addmsg /kinetics/PSD/move_to_PSD /kinetics/BULK/iR REAC A B -addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/PP1-inactive REAC sA B -addmsg /kinetics/BULK/inactivate_PP1 /kinetics/BULK/PP1-inactive REAC B A -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca REAC A B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/CaN REAC A B -addmsg /kinetics/BULK/Ca4.CaN/CaN_enz /kinetics/BULK/Ca4.CaN REAC eA B -addmsg /kinetics/BULK/CaN_bind_Ca /kinetics/BULK/Ca4.CaN REAC B A -addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/Ca4.CaN/CaN_enz ENZYME n -addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/Ca4.CaN/CaN_enz SUBSTRATE n -addmsg /kinetics/BULK/CaN /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaN_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca4.CaN /kinetics/BULK/CaN_bind_Ca PRODUCT n -addmsg /kinetics/BULK/CaM /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca /kinetics/BULK/CaM_bind_Ca SUBSTRATE n -addmsg /kinetics/BULK/Ca4.CaM /kinetics/BULK/CaM_bind_Ca PRODUCT n -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/CaM REAC A B -addmsg /kinetics/PSD/CaMKII_bind_CaM /kinetics/BULK/Ca4.CaM REAC A B -addmsg /kinetics/BULK/CaM_bind_Ca /kinetics/BULK/Ca4.CaM REAC B A -addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/BULK/inactivate_PP1 SUBSTRATE n -addmsg /kinetics/BULK/PP1-inactive /kinetics/BULK/inactivate_PP1 PRODUCT n -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/R_S2 /graphs/conc1/R.Co PLOT Co *R.Co *4 -addmsg /kinetics/BULK/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *54 -addmsg /kinetics/BULK/iR /graphs/conc2/iR.Co PLOT Co *iR.Co *0 -addmsg /kinetics/PSD/R_SpSp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -addmsg /kinetics/BULK/Ca4.CaN /moregraphs/conc3/Ca4.CaN.Co PLOT Co *Ca4.CaN.Co *7 -addmsg /kinetics/BULK/Ca4.CaM /moregraphs/conc3/Ca4.CaM.Co PLOT Co *Ca4.CaM.Co *26 -addmsg /kinetics/PSD/PP1_PSD/PP1-active /moregraphs/conc4/PP1-active.Co PLOT Co *PP1-active.Co *blue -addmsg /kinetics/PSD/actCaMKII /moregraphs/conc4/actCaMKII.Co PLOT Co *actCaMKII.Co *35 -enddump -// End of dump - -call /kinetics/PSD/basal_phosphatase/notes LOAD \ -"There isn't any clear info for this. I had originally called " \ -"it PP2A, but that causes odd interactions with other pathways." \ -"" -call /kinetics/BULK/iR/notes LOAD \ -"Same as Fus3" \ -"" -complete_loading diff --git a/examples/snippets/startstop.py b/examples/snippets/startstop.py deleted file mode 100644 index 11d98ea..0000000 --- a/examples/snippets/startstop.py +++ /dev/null @@ -1,117 +0,0 @@ -# startstop.py --- -# -# Filename: startstop.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sun Jul 1 13:42:28 2012 (+0530) -# Version: -# Last-Updated: Sun Jul 1 14:41:34 2012 (+0530) -# By: subha -# Update #: 62 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -import pylab -import moose - -def main(): - """ - This demo shows how to start, stop, and continue a simulation. - This is commonly done when we want to run a model till settling, then - change a parameter or deliver a stimulus, and then continue the - simulation. - - Here, the model is just the output of a PulseGen object which - generates periodic pulses. - The demo shows how to start the simulation. using the - *moose.reinit* command to reset the model to its initial state, - and *moose.start* command to run the model for the specified duration. - We issue multiple *moose.start* commands and do different things to - the model between them. First, we change the delay of the pulseGen. - Then we show a number of ways to assign the timestep (dt) to the - table object in the simulation. - Note that throughout this simulation the pulsegen is going at a - uniform rate, it is just being sampled by the output table at - different intervals. - """ - - dt = 0.1 - steps = 100 - simtime = dt * steps - # Pulsegen is on tick 0, we can pre-emptively set its dt. - moose.setClock(0, dt) - table = setup_model() - pulse = moose.element( '/model/pulse' ) - # The 'tick' field is on every object, we can use this to set its dt. - moose.setClock( table.tick, dt ) - moose.reinit() - clock = moose.element('/clock') - print dt - print 'dt = ', dt, ', Total simulation time = ', simtime - print 'Running simulation for', simtime, 'seconds' - moose.start( simtime ) - print 'Simulator time:', clock.currentTime - # Here we change the pulse delay and then run again. - pulse.delay[0] = 1.0 - moose.start( simtime ) - - # We change the table tick and use a different dt for it: - table.tick = 2 - moose.setClock( table.tick, dt * 2 ) - moose.start( simtime ) - - # Here is yet another way to change clocks used by the table - moose.useClock( 9, '/model/pulse/tab', 'process' ) - print table.tick - moose.setClock( 9, dt / 2.0 ) - moose.start( simtime ) - - # Finally, here we change the pulse delay to 1 second and run again. - - print 'Simulator time at end of simulation', clock.currentTime - pylab.plot(pylab.linspace(0, clock.currentTime, len(table.vector)), table.vector) - pylab.show() - -def setup_model(): - model_container = moose.Neutral('/model') - pulse = moose.PulseGen('/model/pulse') - pulse.level[0] = 1.0 - pulse.delay[0] = 0.5 - pulse.width[0] = 0.5 - table = moose.Table('%s/tab' % (pulse.path)) - moose.connect(table, 'requestOut', pulse, 'getOutputValue') - return table - -if __name__ == '__main__': - main() diff --git a/examples/snippets/stimtable.py b/examples/snippets/stimtable.py deleted file mode 100644 index 2bdaa90..0000000 --- a/examples/snippets/stimtable.py +++ /dev/null @@ -1,108 +0,0 @@ -# stimtable.py --- -# -# Filename: stimtable.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed May 8 18:51:07 2013 (+0530) -# Version: -# Last-Updated: Mon May 27 21:15:36 2013 (+0530) -# By: subha -# Update #: 124 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Example of StimulusTable using Poisson random numbers. - -Creates a StimulusTable and assigns it signal representing events in a -Poisson process. The output of the StimTable is sent to a DiffAmp -object for buffering and then recorded in a regular table. - -""" - -import numpy as np -from matplotlib import pyplot as plt -import moose -from moose import utils - -def stimulus_table_demo(): - model = moose.Neutral('/model') - data = moose.Neutral('/data') - # This is the stimulus generator - stimtable = moose.StimulusTable('/model/stim') - recorded = moose.Table('/data/stim') - moose.connect(recorded, 'requestOut', stimtable, 'getOutputValue') - simtime = 100 - simdt = 1e-3 - # Inter-stimulus-intervals with rate=20/s - rate = 20 - np.random.seed(1) # ensure repeatability - isi = np.random.exponential(rate, int(simtime/rate)) - # The stimulus times are the cumulative sum of the inter-stimulus intervals. - stimtimes = np.cumsum(isi) - # Select only stimulus times that are within simulation time - - # this may leave out some possible stimuli at the end, but the - # exoected number of Poisson events within simtime is - # simtime/rate. - stimtimes = stimtimes[stimtimes < simtime] - ts = np.arange(0, simtime, simdt) - # Find the indices of table entries corresponding to time of stimulus - stimidx = np.searchsorted(ts, stimtimes) - stim = np.zeros(len(ts)) - # Since linear interpolation is forced, we need at least three - # consecutive entries to have same value to get correct - # magnitude. And still we shall be off by at least one time step. - indices = np.concatenate((stimidx-1, stimidx, stimidx+1)) - stim[indices] = 1.0 - stimtable.vector = stim - stimtable.stepSize = 0 # This forces use of current time as x value for interpolation - stimtable.stopTime = simtime - moose.setClock(0, simdt) - moose.useClock(0, '/model/##,/data/##', 'process') - moose.reinit() - moose.start(simtime) - plt.plot(np.linspace(0, simtime, len(recorded.vector)), recorded.vector, 'r-+', label='generated stimulus') - plt.plot(ts, stim, 'b-x', label='originally assigned values') - plt.ylim((-1, 2)) - plt.legend() - plt.title('Exmaple of StimulusTable') - plt.show() - -if __name__ == '__main__': - stimulus_table_demo() - - -# -# stimtable.py ends here diff --git a/examples/snippets/stochasticLotkaVolterra.py b/examples/snippets/stochasticLotkaVolterra.py deleted file mode 100644 index 5986400..0000000 --- a/examples/snippets/stochasticLotkaVolterra.py +++ /dev/null @@ -1,151 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import moose - -runtime = 138.0 -def makeModel(): - # create container for model - model = moose.Neutral( 'model' ) - harmonic = moose.CubeMesh( '/model/harmonic' ) - harmonic.volume = 1e-15 - lotka = moose.CubeMesh( '/model/lotka' ) - lotka.volume = 1e-15 - - # create molecules and reactions - x = moose.Pool( '/model/lotka/x' ) - y = moose.Pool( '/model/lotka/y' ) - z = moose.BufPool( '/model/lotka/z' ) # Dummy molecule. - xreac = moose.Reac( '/model/lotka/xreac' ) - yreac = moose.Reac( '/model/lotka/yreac' ) - xrate = moose.Function( '/model/lotka/xreac/func' ) - yrate = moose.Function( '/model/lotka/yreac/func' ) - - # Parameters - alpha = 1.0 - beta = 1.0 - gamma = 1.0 - delta = 1.0 - k = 1.0 - x.nInit = 200.0 - y.nInit = 100.0 - z.nInit = 0.0 - xrate.x.num = 1 - yrate.x.num = 1 - xrate.expr = "0.01 * x0 * " + str( beta ) + " - " + str( alpha ) - yrate.expr = str( gamma ) + " - 0.01 * x0 * " + str( delta ) - xreac.Kf = k - yreac.Kf = k - xreac.Kb = 0 - yreac.Kb = 0 - - # connect them up for reactions - moose.connect( y, 'nOut', xrate.x[0], 'input' ) - moose.connect( x, 'nOut', yrate.x[0], 'input' ) - moose.connect( xrate, 'valueOut', xreac, 'setNumKf' ) - moose.connect( yrate, 'valueOut', yreac, 'setNumKf' ) - moose.connect( xreac, 'sub', x, 'reac' ) - moose.connect( xreac, 'prd', z, 'reac' ) - moose.connect( yreac, 'sub', y, 'reac' ) - moose.connect( yreac, 'prd', z, 'reac' ) - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - xplot = moose.Table2 ( '/model/graphs/x' ) - yplot = moose.Table2 ( '/model/graphs/y' ) - - # connect up the tables - moose.connect( xplot, 'requestOut', x, 'getN' ); - moose.connect( yplot, 'requestOut', y, 'getN' ); - -def main(): - """ - The stochasticLotkaVolterra example is almost identical to the - funcReacLotkaVolterra. It shows how to use function objects - as part of differential equation systems in the framework of the MOOSE - kinetic solvers. Here the difference is that we use a a stochastic - solver. The system is interesting because it illustrates the - instability of Lotka-Volterra systems in stochastic conditions. Here we - see exctinction of one of the species and runaway buildup of the other. - The simulation has to be halted at this point. - - Here the system is set up explicitly using the - scripting, in normal use one would expect to use SBML. - - In this example we set up a Lotka-Volterra system. The equations - are readily expressed as a pair of reactions each of whose rate is - governed by a function:: - - x' = x( alpha - beta.y ) - y' = -y( gamma - delta.x ) - - This translates into two reactions:: - - x ---> z Kf = beta.y - alpha - y ---> z Kf = gamma - delta.x - - Here z is a dummy molecule whose concentration is buffered to zero. - - The model first runs using default Exponential Euler integration. - This is not particularly accurate even with a small timestep. - The model is then converted to use the deterministic Kinetic solver - Ksolve. This is accurate and faster. - Note that we cannot use the stochastic GSSA solver for this system, it - cannot handle a reaction term whose rate keeps changing. - """ - makeModel() - - moose.seed( 1 ) - # A seed of 3 will give an extinction at 79 seconds. - - for i in range( 11, 18 ): - moose.setClock( i, 0.001 ) - moose.setClock( 18, 0.1 ) - moose.reinit() - moose.start( runtime ) # Run the model - - # Iterate through all plots, dump their contents to data.plot. - for x in moose.wildcardFind( '/model/graphs/#' ): - #x.xplot( 'scriptKineticModel.plot', x.name ) - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - #pylab.ylim( 0, 2.5 ) - pylab.title( "Exponential Euler solution. Note slight error buildup" ) - pylab.legend() - - - pylab.figure() - compt = moose.element( '/model/lotka' ) - ksolve = moose.Gsolve( '/model/lotka/ksolve' ) - stoich = moose.Stoich( '/model/lotka/stoich' ) - stoich.compartment = compt - stoich.ksolve = ksolve - stoich.path = '/model/lotka/##' - moose.reinit() - moose.start( runtime ) # Run the model - - for i in range( 11, 18 ): - moose.setClock( i, 0.1 ) - for x in moose.wildcardFind( '/model/graphs/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * x.dt # sec - pylab.plot( t, x.vector, label=x.name ) - #pylab.ylim( 0, 2.5 ) - pylab.title( "GSSA solution." ) - pylab.legend() - pylab.show() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/switchKineticSolvers.py b/examples/snippets/switchKineticSolvers.py deleted file mode 100644 index 5ef2c1d..0000000 --- a/examples/snippets/switchKineticSolvers.py +++ /dev/null @@ -1,137 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import moose -import pylab -import numpy -import matplotlib.pyplot as plt -import sys - - -def runAndSavePlots( name ): - runtime = 20.0 - moose.reinit() - moose.start( runtime ) - pa = moose.Neutral( '/model/graphs/' + name ) - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - if ( x.tick != -1 ): - tabname = '/model/graphs/' + name + '/' + x.name + '.' + name - y = moose.Table( tabname ) - y.vector = x.vector - y.tick = -1 - -# Takes args ee, gsl, or gssa -def switchSolvers( solver ): - if ( moose.exists( 'model/kinetics/stoich' ) ): - moose.delete( '/model/kinetics/stoich' ) - moose.delete( '/model/kinetics/ksolve' ) - compt = moose.element( '/model/kinetics' ) - if ( solver == 'gsl' ): - ksolve = moose.Ksolve( '/model/kinetics/ksolve' ) - if ( solver == 'gssa' ): - ksolve = moose.Gsolve( '/model/kinetics/ksolve' ) - if ( solver != 'ee' ): - stoich = moose.Stoich( '/model/kinetics/stoich' ) - stoich.compartment = compt - stoich.ksolve = ksolve - stoich.path = "/model/kinetics/##" - -def main(): - """ - At zero order, you can select the solver you want to use within the - function moose.loadModel( filename, modelpath, solver ). - Having loaded in the model, you can change the solver to use on it. - This example illustrates how to assign and change solvers for a - kinetic model. This process is necessary in two situations: - - * If we want to change the numerical method employed, for example, - from deterministic to stochastic. - * If we are already using a solver, and we have changed the reaction - network by adding or removing molecules or reactions. - - Note that we do not have to change the solvers if the volume or - reaction rates change. - In this example the model is loaded in with a gsl solver. The - sequence of solver calculations is: - - #. gsl - #. ee - #. gsl - #. gssa - #. gsl - - If you're removing the solvers, you just delete the stoichiometry - object and the associated ksolve/gsolve. Should there be diffusion - (a dsolve)then you should delete that too. If you're - building the solvers up again, then you must do the following - steps in order: - - #. build up the ksolve/gsolve and stoich (any order) - #. Assign stoich.ksolve - #. Assign stoich.path. - - See the Reaction-diffusion section should you want to do diffusion - as well. - - """ - - solver = "gsl" # Pick any of gsl, gssa, ee.. - mfile = '../genesis/kkit_objects_example.g' - modelId = moose.loadModel( mfile, 'model', solver ) - # Increase volume so that the stochastic solver gssa - # gives an interesting output - compt = moose.element( '/model/kinetics' ) - compt.volume = 1e-19 - runAndSavePlots( 'gsl' ) - ######################################################### - switchSolvers( 'ee' ) - runAndSavePlots( 'ee' ) - ######################################################### - switchSolvers( 'gsl' ) - runAndSavePlots( 'gsl2' ) - ######################################################### - switchSolvers( 'gssa' ) - runAndSavePlots( 'gssa' ) - ######################################################### - switchSolvers( 'gsl' ) - runAndSavePlots( 'gsl3' ) - ######################################################### - - # Display all plots. - fig = plt.figure( figsize = (12, 10) ) - orig = fig.add_subplot( 511 ) - gsl = fig.add_subplot( 512 ) - ee = fig.add_subplot( 513 ) - gsl2 = fig.add_subplot( 514 ) - gssa = fig.add_subplot( 515 ) - plotdt = moose.element( '/clock' ).tickDt[18] - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * plotdt - orig.plot( t, x.vector, label=x.name ) - for x in moose.wildcardFind( '/model/graphs/gsl/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * plotdt - gsl.plot( t, x.vector, label=x.name ) - for x in moose.wildcardFind( '/model/graphs/ee/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * plotdt - ee.plot( t, x.vector, label=x.name ) - for x in moose.wildcardFind( '/model/graphs/gsl2/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * plotdt - gsl2.plot( t, x.vector, label=x.name ) - for x in moose.wildcardFind( '/model/graphs/gssa/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * plotdt - gssa.plot( t, x.vector, label=x.name ) - plt.legend() - - pylab.show() - quit() - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/symcompartment.py b/examples/snippets/symcompartment.py deleted file mode 100644 index 5097dd9..0000000 --- a/examples/snippets/symcompartment.py +++ /dev/null @@ -1,109 +0,0 @@ -# symcompartment.py --- -# -# Filename: symcompartment.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Thu Jun 20 17:47:10 2013 (+0530) -# Version: -# Last-Updated: Fri Jul 12 12:10:52 2013 (+0530) -# By: subha -# Update #: 71 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import numpy as np -import pylab - -import moose - -simdt = 1e-6 -simtime = 100e-3 - -def test_symcompartment(): - model = moose.Neutral('model') - soma = moose.SymCompartment('%s/soma' % (model.path)) - soma.Em = -60e-3 - soma.Rm = 1000402560 - soma.Cm = 2.375043912e-11 - soma.Ra = 233957.7812 - d1 = moose.SymCompartment('%s/d1' % (model.path)) - d1.Rm = 397887392 - d1.Cm = 2.261946489e-12 - d1.Ra = 24867960 - d2 = moose.SymCompartment('%s/d2' % (model.path)) - d2.Rm = 2.877870285e+10 - d2.Cm = 8.256105218e-13 - d2.Ra = 20906072 - moose.connect(d1, 'proximal', soma, 'distal') - moose.connect(d2, 'proximal', soma, 'distal') - moose.connect(d1, 'sibling', d2, 'sibling') - pg = moose.PulseGen('/model/pulse') - pg.delay[0] = 10e-3 - pg.width[0] = 20e-3 - pg.level[0] = 1e-6 - pg.delay[1] = 1e9 - moose.connect(pg, 'output', d1, 'injectMsg') - data = moose.Neutral('/data') - tab_soma = moose.Table('%s/soma_Vm' % (data.path)) - tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) - tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) - moose.connect(tab_soma, 'requestOut', soma, 'getVm') - moose.connect(tab_d1, 'requestOut', d1, 'getVm') - moose.connect(tab_d2, 'requestOut', d2, 'getVm') - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.useClock(0, '/model/##[ISA=Compartment]', 'init') # This is allowed because SymCompartment is a subclass of Compartment - moose.useClock(1, '/model/##', 'process') - moose.useClock(2, '/data/##[ISA=Table]', 'process') - moose.reinit() - moose.start(simtime) - t = np.linspace(0, simtime, len(tab_soma.vector)) - data_matrix = np.vstack((t, tab_soma.vector, tab_d1.vector, tab_d2.vector)) - np.savetxt('symcompartment.txt', data_matrix.transpose()) - pylab.plot(t, tab_soma.vector, label='Vm_soma') - pylab.plot(t, tab_d1.vector, label='Vm_d1') - pylab.plot(t, tab_d2.vector, label='Vm_d2') - pylab.show() - -if __name__ == '__main__': - test_symcompartment() - - - -# -# symcompartment.py ends here diff --git a/examples/snippets/synapse.py b/examples/snippets/synapse.py deleted file mode 100644 index aea6f37..0000000 --- a/examples/snippets/synapse.py +++ /dev/null @@ -1,84 +0,0 @@ -# synapse.py --- -# -# Filename: synapse.py -# Description: -# Author:Upi Bhalla -# Maintainer: -# Created: Sat Jun 29 11:32:29 2013 (+0530) -# Version: -# Last-Updated: Thu Oct 2 2014 (+0530) -# By: Upi -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -import moose - -def many_ematrix_to_one_element(): - """This is an example of event messages from multiple SpikeGen objects - into a synchan. - - Create a SynChan element with 2 elements in synapse field. - - Create 5 SpikeGen elements. - - Connect alternet SpikeGen elements to synapse[0] and synapse[1] - - ... This is a minimal example. In real simulations the SpikeGens - will be embedded in compartments representing axon terminals and - the SynChans will be embedded in somatic/dendritic compartments. - - """ - model = moose.Neutral('/model') - # data = moose.Neutral('/data') - synchan = moose.SynChan('/model/synchan') - synh = moose.SimpleSynHandler( '/model/synchan/synh' ) - moose.connect( synh, 'activationOut', synchan, 'activation' ) - synh.synapse.num = 2 - num_spikegen = 5 - spikegens = [moose.SpikeGen('/model/spikegen_%d' % (ii)) for ii in range(num_spikegen)] - for ii in range(num_spikegen): - msg = moose.connect(spikegens[ii], 'spikeOut', synh.synapse[ii%2], 'addSpike') - # synchan.synapse[ii].delay = ii * 1e-3 - # synchan.synapse[ii].weight = (ii+1) * 0.1 - for sg in spikegens: - print sg.path, '-->', - for m in sg.msgOut: - print moose.element(m).adjacent[sg].path - -if __name__ == '__main__': - many_ematrix_to_one_element() - -# -# synapse.py ends here diff --git a/examples/snippets/synapse_tutorial.py b/examples/snippets/synapse_tutorial.py deleted file mode 100644 index 98b6c02..0000000 --- a/examples/snippets/synapse_tutorial.py +++ /dev/null @@ -1,188 +0,0 @@ -# synapse_tutorial.py --- -# -# Filename: synapse_tutorial.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri Jan 17 09:43:51 2014 (+0530) -# Version: -# Last-Updated: Thu Oct 2 11:27:05 IST 2014 -# By: Upi -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This is a tutorial based on an example Upi suggested. The code is -# exported from an ipython notebook and the comments present the -# markdown version of the tutorial text. -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA.# -*- coding: utf-8 -*- - -# -# - -# Code: - -"""In this example we walk through creation of a vector of IntFire -elements and setting up synaptic connection between them. Synapse on -IntFire elements is an example of ElementField - elements that do not -exist on their own, but only as part of another element. This example -also illustrates various operations on `vec` objects and -ElementFields.""" - - - - -import moose - - - -size = 1024 # number of IntFire objects in a vec -delayMin = 0 -delayMax = 4 -Vmax = 1.0 -thresh = 0.8 -refractoryPeriod = 0.4 -connectionProbability = 0.1 -weightMax = 0.5 - - - -# The above sets the constants we shall use in this example. Now we create a vector of IntFire elements of size `size`. - - - -net = moose.IntFire('/network', size) - - - -# This creates a `vec` of `IntFire` elements of size 1024 and returns the first `element`, i.e. "/network[0]". - - - -net = moose.element('/network[0]') - - -# You need now to provide synaptic input to the network - -synh = moose.SimpleSynHandler( '/network/synh', size ) - -# These need to be connected to the nodes in the network - -moose.connect( synh, 'activationOut', net, 'activation', 'OneToOne' ) - - -# You can access the underlying vector of elements using the `vec` field on any element. This is very useful for vectorized field access: - - - -net.vec.Vm = [thresh / 2.0] * size - - - -# The right part of the assigment creates a Python list of length `size` with each element set to `thresh/2.0`, which is 0.4. You can index into the `vec` to access individual elements' field: - - - -print net.vec[1].Vm - - - -# `SimpleSynHandler` class has an `ElementField` called `synapse`. It is just like a `vec` above in terms of field access, but by default its size is 0. - - - -print len(synh.synapse) - - - -# To actually create synapses, you can explicitly assign the `num` field of this, or set the `numSynapses` field of the `IntFire` element. There are some functions which can implicitly set the size of the `ElementField`. - - - -synh.numSynapses = 3 -print len(synh.synapse) - - - -synh.synapse.num = 4 -print len(synh.synapse) - - - -# Now you can index into `net.synapse` as if it was an array. - - - -print 'Before:', synh.synapse[0].delay -synh.synapse[0].delay = 1.0 -print 'After:', synh.synapse[0].delay - - - -# You could do the same vectorized assignment as with `vec` directly: - - - -synh.synapse.weight = [0.2] * len(synh.synapse) -print synh.synapse.weight - - - -# You can create the synapses and assign the weights and delays using loops: - - - -import random # We need this for random number generation -from numpy import random as nprand -for syn in synh.vec: - syn.synapse.num = random.randint(1,10) # create synapse fields with random size between 1 and 10, end points included - # Below is one (inefficient) way of setting the individual weights of the elements in 'synapse' - for ii in range(len(syn.synapse)): - syn.synapse[ii].weight = random.random() * weightMax - # This is a more efficient way - rhs of `=` is list comprehension in Python and rather fast - syn.synapse.delay = [delayMin + random.random() * delayMax for ii in range(len(syn.synapse))] - # An even faster way will be to use numpy.random.rand(size) which produces array of random numbers uniformly distributed between 0 and 1 - syn.synapse.delay = delayMin + nprand.rand(len(syn.synapse)) * delayMax - - - - -# Now display the results, we use slice notation on `vec` to show the values of delay and weight for the first 5 elements in `/network` - - - -for syn in synh.vec[:5]: - print 'Delays for synapses on ', syn.path, ':', syn.synapse.delay - print 'Weights for synapses on ', syn.path, ':', syn.synapse.weight - - - - -# -# synapse_tutorial.py ends here - diff --git a/examples/snippets/synapse_tutorial_2.ipynb b/examples/snippets/synapse_tutorial_2.ipynb deleted file mode 100644 index 7062fde..0000000 --- a/examples/snippets/synapse_tutorial_2.ipynb +++ /dev/null @@ -1,309 +0,0 @@ -{ - "metadata": { - "name": "" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import moose" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "size = 1024 # number of IntFire objects in a vec\n", - "delayMin = 0 \n", - "delayMax = 4\n", - "Vmax = 1.0\n", - "thresh = 0.8\n", - "refractoryPeriod = 0.4\n", - "connectionProbability = 0.1\n", - "weightMax = 0.5\n" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above sets the constants we shall use in this example. Now we create a vector of IntFire elements of size `size`." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "net = moose.IntFire('/network', size)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 5 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This creates a `vec` of `IntFire` elements of size 1024 and returns the first `element`, i.e. \"/network[0]\"." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "net == moose.element('/network[0]')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 6, - "text": [ - "True" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can access the underlying vector of elements using the `vec` field on any element. This is very useful for vectorized field access:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "net.vec.bufferTime = [2 * delayMax] * size" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 7 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The right part of the assigment creates a Python list of length `size` with each element set to `2 * delayMax`, which is 8.0. You can index into the `vec` to access individual elements' field:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print net.vec[1].bufferTime" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "8.0\n" - ] - } - ], - "prompt_number": 8 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`IntFire` class has an `ElementField` called `synapse`. It is just like a `vec` above in terms of field access, but by default its size is 0." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print len(net.synapse)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0\n" - ] - } - ], - "prompt_number": 9 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To actually create synapses, you can explicitly assign the `num` field of this, or set the `numSynapses` field of the `IntFire` element. There are some functions which can implicitly set the size of the `ElementField`. Here is the implicit way:" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "synapse = moose.element('/network[0]/synapse')\n", - "mid = moose.connect(net, 'spikeOut', synapse, 'addSpike', 'Sparse') # This creates a `Sparse` message from `spikeOut` source of net to `addSpike` destination on synapse." - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 10 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "msg = moose.element(mid)\n", - "msg.setRandomConnectivity(connectionProbability, 5489)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 12, - "text": [ - "True" - ] - } - ], - "prompt_number": 12 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above sets random connectivity in the sparse message. Now you can see what are the sizes of each synapse in each element of '/network'" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for ii in range(10, 15):\n", - " el = moose.element(net.vec[ii])\n", - " print el.path, 'has', len(el.synapse), 'synaptic connections'" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "/network[10] has 102 synaptic connections\n", - "/network[11] has 107 synaptic connections\n", - "/network[12] has 101 synaptic connections\n", - "/network[13] has 109 synaptic connections\n", - "/network[14] has 101 synaptic connections\n" - ] - } - ], - "prompt_number": 14 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can set the weight and delay fields of each synapse using various looping methods" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import random # We need this for random number generation\n", - "from numpy import random as nprand\n", - "for item in net.vec:\n", - " neuron = moose.element(item) # You have to convert each entry of a `vec` into corresponding IntFire element in order to access class-specific fields\n", - " # Below is one (inefficient) way of setting the individual weights of the elements in 'synapse'\n", - " for ii in range(len(neuron.synapse)):\n", - " neuron.synapse[ii].weight = random.random() * weightMax\n", - " # This is a more efficient way - rhs of `=` is list comprehension in Python and rather fast\n", - " neuron.synapse.delay = [delayMin + random.random() * delayMax for ii in range(len(neuron.synapse))]\n", - " # An even faster way will be to use numpy.random.rand(size) which produces array of random numbers uniformly distributed between 0 and 1\n", - " neuron.synapse.delay = delayMin + nprand.rand(len(neuron.synapse)) * delayMax\n", - " " - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 22 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now display the results, we use slice notation on `vec` to show the values of delay and weight for the first 5 elements in `/network`" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for item in net.vec[:5]:\n", - " neuron = moose.element(item)\n", - " print 'Delays for synapses on ', neuron.path, ':', neuron.synapse.delay\n", - " print 'Weights for synapses on ', neuron.path, ':', neuron.synapse.weight" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Delays for synapses on /network[0] : [ 2.16949827 2.87672892 0.55775816 1.5307453 1.2545798 3.08150047\n", - " 1.69471445 1.72783837]\n", - "Weights for synapses on /network[0] : [ 0.01378044 0.16739938 0.18983276 0.36676815 0.1026694 0.40671933\n", - " 0.01169365 0.2939791 ]\n", - "Delays for synapses on /network[1] : [ 0.66554382 0.69812038 3.84877248]\n", - "Weights for synapses on /network[1] : [ 0.32135398 0.2293562 0.35553433]\n", - "Delays for synapses on /network[2] : [ 2.84297188 3.64714918 3.59338126 2.01446565 1.1388517 1.91031348\n", - " 3.82746114]\n", - "Weights for synapses on /network[2] : [ 0.12762092 0.06323899 0.00916775 0.11610243 0.04453261 0.46170508\n", - " 0.30207453]\n", - "Delays for synapses on /network[3] : [ 3.14259038 1.73694338 1.9056121 1.96542664 1.11544011 2.55803099]\n", - "Weights for synapses on /network[3] : [ 0.30468313 0.04061773 0.18337534 0.47436774 0.04179184 0.30259949]\n", - "Delays for synapses on /network[4] : [ 1.08777299 1.71847959 3.5191226 3.84163071 3.84634335]\n", - "Weights for synapses on /network[4] : [ 0.29244741 0.10342571 0.3912255 0.02361261 0.27258286]\n" - ] - } - ], - "prompt_number": 25 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [] - } - ], - "metadata": {} - } - ] -} \ No newline at end of file diff --git a/examples/snippets/tabledemo.py b/examples/snippets/tabledemo.py deleted file mode 100644 index 47dd254..0000000 --- a/examples/snippets/tabledemo.py +++ /dev/null @@ -1,94 +0,0 @@ -# tabledemo.py --- -# -# Filename: tabledemo.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri Aug 29 18:26:20 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -""":class:`Table` can be used for recording and saving data in ascii text formats.""" - -import sys -sys.path.append('../../python') -import moose - -def example(): - """In this example we create a square-pulse generator object and - record the output using a table. - - The steps are: - - 1. Create a PulseGen element `pulse`. - - 2. Set `delay[0]=1.0`, `width[0]=0.2`, `level[0]=0.5`, so it - generates 0.2 s wide square pulses with 0.5 amplitude every 1 s. - - 3. Create a Table element `tab`. - - 4. Connect the `outputValue` field of `pulse` to `tab`. - - 5. We set tick-interval of ticks 0 and 1 to 0.01 and schedule - `pulse` on tick 0 and `tab` on tick 1. - - 5. Run the simulation for 5 s and save data to the ascii file - `output_tabledemo.csv`. - - """ - pg = moose.PulseGen('pulse') - pg.delay[0] = 1.0 - pg.width[0] = 0.2 - pg.level[0] = 0.5 - tab = moose.Table('tab') - moose.connect(tab, 'requestOut', pg, 'getOutputValue') - moose.setClock(0, 0.01) - moose.setClock(1, 0.01) - moose.useClock(0, pg.path, 'process') - moose.useClock(1, tab.path, 'process') - moose.reinit() - moose.start(5.0) - tab.plainPlot('output_tabledemo.csv') - -if __name__ == '__main__': - example() - - -# -# tabledemo.py ends here diff --git a/examples/snippets/testHsolve.py b/examples/snippets/testHsolve.py deleted file mode 100644 index 7eba662..0000000 --- a/examples/snippets/testHsolve.py +++ /dev/null @@ -1,314 +0,0 @@ - -# testHsolve.py --- -# Upi Bhalla, NCBS Bangalore, 9 June 2013. -# -# Commentary: -# -# A small compartmental model that demonstrates -# a) how to set up a multicompartmental model using SymCompartments -# b) Solving this with the default Exponential Euler (EE) method -# c) Solving this with the Hsolver. -# d) What happens at different timesteps. -# -# -# Also have a look at what happens without the useInterpolate flag for -# the ion channels, even though the voltage range is subdivided into 3000 -# intervals. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import pylab -import numpy -import math -import moose -import moose.utils - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def create_squid(): - """Create a single compartment squid model.""" - parent = moose.Neutral ('/n' ) - compt = moose.SymCompartment( '/n/compt' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 * 0.5 - compt.Rm = 4.2e5 * 5.0 - compt.Ra = 7639.44e3 - nachan = moose.HHChannel( '/n/compt/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) - #This is important: one can run without it but the output will diverge. - xGate.useInterpolation = 1 - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) - yGate.useInterpolation = 1 - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') - - kchan = moose.HHChannel( '/n/compt/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') - return compt - -def create_spine( parentCompt, parentObj, index, frac, length, dia, theta ): - """Create spine of specified dimensions and index""" - RA = 1.0 - RM = 1.0 - CM = 0.01 - sname = 'shaft' + str(index) - hname = 'head' + str(index) - shaft = moose.SymCompartment( parentObj.path + '/' + sname ) - #moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single') - #moose.connect( parentCompt, 'distal', shaft, 'proximal','Single' ) - moose.connect( parentCompt, 'sphere', shaft, 'proximalOnly','Single' ) - x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) - y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) - z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) - shaft.x0 = x - shaft.y0 = y - shaft.z0 = z - sy = y + length * math.cos( theta * math.pi / 180.0 ) - sz = z + length * math.sin( theta * math.pi / 180.0 ) - shaft.x = x - shaft.y = sy - shaft.z = sz - shaft.diameter = dia / 2.0 - shaft.length = length - xa = math.pi * dia * dia / 400.0 - circumference = math.pi * dia / 10.0 - shaft.Ra = RA * length / xa - shaft.Rm = RM / ( length * circumference ) - shaft.Cm = CM * length * circumference - shaft.Em = EREST_ACT - shaft.initVm = EREST_ACT - - head = moose.SymCompartment( parentObj.path + '/' + hname ) - moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) - head.x0 = x - head.y0 = sy - head.z0 = sz - hy = sy + length * math.cos ( theta * math.pi / 180.0 ) - hz = sz + length * math.sin ( theta * math.pi / 180.0 ) - head.x = x - head.y = hy - head.z = hz - head.diameter = dia - head.length = length - xa = math.pi * dia * dia / 4.0 - circumference = math.pi * dia - head.Ra = RA * length / xa - head.Rm = RM / ( length * circumference ) - head.Cm = CM * length * circumference - head.Em = EREST_ACT - head.initVm = EREST_ACT - return head - -def create_spine_with_receptor( compt, cell, index, frac ): - FaradayConst = 96485.3415 # s A / mol - spineLength = 5.0e-6 - spineDia = 4.0e-6 - head = create_spine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) - gluR = moose.SynChan( head.path + '/gluR' ) - gluR.tau1 = 4e-3 - gluR.tau2 = 4e-3 - gluR.Gbar = 1e-6 - gluR.Ek= 10.0e-3 - moose.connect( head, 'channel', gluR, 'channel', 'Single' ) - - caPool = moose.CaConc( head.path + '/ca' ) - caPool.CaBasal = 1e-4 # 0.1 micromolar - caPool.tau = 0.01 - B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) - B = B / 20.0 # scaling factor for Ca buffering - caPool.B = B - moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) - - synHandler = moose.SimpleSynHandler( head.path + '/gluR/handler' ) - synHandler.synapse.num = 1 - moose.connect( synHandler, 'activationOut', gluR, 'activation', 'Single' ) - - return gluR - -def add_plot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def make_elec_plots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - add_plot( '/n/compt', 'getVm', 'elec/dendVm' ) - add_plot( '/n/head0', 'getVm', 'elec/head0Vm' ) - add_plot( '/n/head2', 'getVm', 'elec/head2Vm' ) - add_plot( '/n/head2/ca', 'getCa', 'elec/head2Ca' ) - -def dump_plots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - t = numpy.arange( 0, x.vector.size, 1 ) - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - #moose.utils.plotAscii(x.vector, file=fname) - -def make_spiny_compt(): - comptLength = 100e-6 - comptDia = 4e-6 - numSpines = 5 - compt = create_squid() - compt.inject = 1e-7 - compt.x0 = 0 - compt.y0 = 0 - compt.z0 = 0 - compt.x = comptLength - compt.y = 0 - compt.z = 0 - compt.length = comptLength - compt.diameter = comptDia - synInput = moose.SpikeGen( '/n/compt/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - cell = moose.element( '/n' ) - for i in range( numSpines ): - r = create_spine_with_receptor( compt, cell, i, i/float(numSpines) ) - #r.synapse.num = 1 - syn = moose.element( r.path + '/handler/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 - syn.delay = i * 1.0e-4 - """ - path = '/n/head' + str(i) - sib1 = moose.element( path ) - for j in range( i - 1 ): - sib2 = moose.element( '/n/head' + str(j) ) - moose.connect( sib1, 'sibling', sib2, 'sibling', 'Single' ) - """ - -def create_pool( compt, name, concInit ): - meshEntries = moose.element( compt.path + '/mesh' ) - pool = moose.Pool( compt.path + '/' + name ) - moose.connect( pool, 'mesh', meshEntries, 'mesh', 'Single' ) - pool.concInit = concInit - return pool - -def test_elec_alone(): - eeDt = 2e-6 - hSolveDt = 2e-5 - runTime = 0.02 - - make_spiny_compt() - make_elec_plots() - head2 = moose.element( '/n/head2' ) - moose.setClock( 0, 2e-6 ) - moose.setClock( 1, 2e-6 ) - moose.setClock( 2, 2e-6 ) - moose.setClock( 8, 0.1e-3 ) - moose.useClock( 0, '/n/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/n/##[ISA=Compartment]', 'process' ) - moose.useClock( 2, '/n/##[ISA=ChanBase],/n/##[ISA=SynBase],/n/##[ISA=CaConc],/n/##[ISA=SpikeGen]','process') - moose.useClock( 8, '/graphs/elec/#', 'process' ) - moose.reinit() - moose.start( runTime ) - dump_plots( 'instab.plot' ) - # make Hsolver and rerun - hsolve = moose.HSolve( '/n/hsolve' ) - moose.useClock( 1, '/n/hsolve', 'process' ) - hsolve.dt = 20e-6 - hsolve.target = '/n/compt' - moose.le( '/n' ) - for dt in ( 20e-6, 50e-6, 100e-6 ): - print 'running at dt =', dt - moose.setClock( 0, dt ) - moose.setClock( 1, dt ) - moose.setClock( 2, dt ) - hsolve.dt = dt - moose.reinit() - moose.start( runTime ) - dump_plots( 'h_instab' + str( dt ) + '.plot' ) - -def main(): - test_elec_alone() - -if __name__ == '__main__': - main() - -# -# testHsolve.py ends here diff --git a/examples/snippets/testRdesigneur.py b/examples/snippets/testRdesigneur.py deleted file mode 100644 index c776481..0000000 --- a/examples/snippets/testRdesigneur.py +++ /dev/null @@ -1,205 +0,0 @@ -################################################################## -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -## -## testRdesigneur.py: Builds a spiny compartment and populates it with -## a molecule that diffuses. -################################################################## - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose -import sys -#sys.path.append( '../util' ) -from PyQt4 import QtGui -import rdesigneur as rd -import moogli - -RM = 1.0 -RA = 1.0 -CM = 0.01 -runtime = 1.0 -diffConst = 1e-12 -dendLen = 100e-6 -numDendSegments = 50 -segLen = dendLen / numDendSegments -spineSpacing = 2.0e-6 -spineSpacingDistrib = 0.0 -spineSize = 1.0 -spineSizeDistrib = 0.2 -spineAngle= 0.0 -spineAngleDistrib = 2*numpy.pi - - -# Here we define a function that is used to make a cell prototype. Normally -# it would load in a model from a file. -def makeCellProto( name ): - print 'IN: makeCellProto( ', name, ')' - elec = moose.Neuron( '/library/' + name ) - ecompt = [] - for i in range( numDendSegments ): - ec = rd.buildCompt( elec, 'dend' + str(i), segLen, 2.0e-6, i * segLen, RM, RA, CM ) - ecompt.append( ec ) - if i > 0: - moose.connect( ecompt[i-1], 'axial', ec, 'raxial' ) - else: - ec.name = "soma" - for i in ecompt: - i.z0 = i.x0 - i.x0 = 0 - i.z = i.x - i.x = 0 - -# This line is used so that rdesigneur knows about the cell proto function -rd.makeCellProto = makeCellProto - -# This function is used to make the chem prototype. -def makeChemProto( name ): - chem = moose.Neutral( '/library/' + name ) - for i in ( 'dend', 'spine', 'psd' ): - print 'making ', i - compt = moose.CubeMesh( chem.path + '/' + i ) - compt.volume = 1e-18 - ca = moose.Pool( compt.path + '/Ca' ) - ca.concInit = 0.08e-3 - ca.diffConst = 1e-12 - - -def makeModel(): - moose.Neutral( '/library' ) - # Here we illustrate building the chem proto directly. This is not - # good practice as it takes the model definition away from the - # declaration of prototypes. - makeChemProto( 'cProto' ) - rdes = rd.rdesigneur( useGssa = False, \ - combineSegments = False, \ - meshLambda = 1e-6, \ - cellProto = [['makeCellProto()', 'elec' ]] ,\ - spineProto = [['makeSpineProto()', 'spine' ]] ,\ - chemProto = [['cProto', 'chem' ]] ,\ - spineDistrib = [ \ - ['spine', '#', \ - 'spineSpacing', str( spineSpacing ), \ - 'spineSpacingDistrib', str( spineSpacingDistrib ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ], \ - chemDistrib = [ \ - [ "chem", "#", "install", "1" ] \ - ], - adaptorList = [ \ - [ 'psd/Ca', 'conc', '.', 'inject', 0, 2e-9 ], \ - ] \ - ) - rdes.buildModel( '/model' ) - -def addPlot( objpath, field, plot, tick ): - if moose.exists( objpath ): - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - tab.tick = tick - return tab - else: - print "failed in addPlot(", objpath, field, plot, tick, ")" - return 0 - -def plotVm( plot, name ): - wc = moose.wildcardFind( '/model/elec/' + name + '#' ) - Vm = [] - xpos = [] - for i in wc: - Vm.append( i.Vm ) - xpos.append( i.z0 ) - if len( wc ) > 0: - plot.plot( xpos, Vm, label = name + 'Vm' ) - - -def main(): - """ - This illustrates the use of rdesigneur to build a simple dendrite with - spines, and to confirm that the chemical contents of the spines align - with the electrical. Just a single molecule Ca is involved. - It diffuses and we plot the distribution. - It causes 'inject' of the relevant compartment to rise. - """ - makeModel() - - # Create the output tables - graphs = moose.Neutral( '/graphs' ) - #dendVm = addPlot( 'model/elec/dend', 'getVm', 'dendVm', 8 ) - addPlot( 'model/chem/dend/Ca[0]', 'getConc', 'dCa0', 18 ) - addPlot( 'model/chem/dend/Ca[25]', 'getConc', 'dCa25', 18 ) - addPlot( 'model/chem/dend/Ca[49]', 'getConc', 'dCa49', 18 ) - addPlot( 'model/chem/spine/Ca[0]', 'getN', 'sCa0', 18 ) - addPlot( 'model/chem/spine/Ca[25]', 'getN', 'sCa25', 18 ) - addPlot( 'model/chem/spine/Ca[49]', 'getN', 'sCa49', 18 ) - addPlot( 'model/chem/psd/Ca[0]', 'getConc', 'pCa0', 18 ) - addPlot( 'model/chem/psd/Ca[25]', 'getConc', 'pCa25', 18 ) - addPlot( 'model/chem/psd/Ca[49]', 'getConc', 'pCa49', 18 ) - - d = moose.vec( '/model/chem/dend/Ca' ) - s = moose.vec( '/model/chem/spine/Ca' ) - p = moose.vec( '/model/chem/psd/Ca' ) - s[5].nInit = 1000 - s[40].nInit = 5000 - moose.reinit() - moose.start( runtime ) - - fig = plt.figure( figsize = (13,10 ) ) - p1 = fig.add_subplot( 311 ) - plotVm( p1, 'dend' ) - plotVm( p1, 'head' ) - plotVm( p1, 'psd' ) - p1.legend() - #time = numpy.arange( 0, dendVm.vector.size, 1 ) * dendVm.dt - #p1.plot( time, dendVm.vector, label = 'dendVm' ) - p2 = fig.add_subplot( 312 ) - p2.plot( d.conc, label = 'idendCa' ) - p2.plot( s.conc, label = 'ispineCa' ) - p2.plot( p.conc, label = 'ipsdCa' ) - p2.legend() - ''' - p2 = fig.add_subplot( 312 ) - for i in moose.wildcardFind( '/graphs/#Ca#' ): - time = numpy.arange( 0, i.vector.size, 1 ) * i.dt - p2.plot( time, i.vector, label = i.name ) - p2.legend() - ''' - p3 = fig.add_subplot( 313 ) - p3.plot( getMidpts('dend'), d.conc, label = 'dendCa' ) - #p3.plot( range( 0, len( d ) ), d.conc, label = 'dendCa' ) - - - p3.plot( getMidpts('spine'), s.conc, label = 'spineCa' ) - p3.plot( getMidpts('psd'), p.conc, label = 'psdCa' ) - p3.legend() - - plt.show() - app = QtGui.QApplication(sys.argv) - #widget = mv.MoogliViewer( '/model' ) - morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) - widget = moogli.MorphologyViewerWidget( morphology ) - widget.show() - return app.exec_() - quit() - -def getMidpts( compt ): - scale = 1.0 - midpt = moose.element( '/model/chem/' + compt ).voxelMidpoint - xpt = [i*scale for i in midpt[2*len(midpt)/3:] ] - #for i in range( 0, len( midpt)/ 3 ): - #xpt.append( midpt[i] * 1e6 ) - return xpt - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/testSigNeur.py b/examples/snippets/testSigNeur.py deleted file mode 100644 index 679bb31..0000000 --- a/examples/snippets/testSigNeur.py +++ /dev/null @@ -1,537 +0,0 @@ -# __DEPRECATED__ __BROKEN__ - -# testSigNeur.py --- -# Upi Bhalla, NCBS Bangalore 2013. -# -# Commentary: -# -# A toy compartmental neuronal + chemical model. The neuronal model -# geometry sets up the chemical volume to match the parent dendrite -# and five dendritic spines, each with a shaft and head. This volume -# mapping uses the NeuroMesh, SpineMesh and PsdMesh classes from MOOSE. -# There is a -# 3-compartment chemical model to go with this: one for the dendrite, -# one for the spine head, and one for the postsynaptic density. Note -# that the three mesh classes distribute the chemical model appropriately -# to all the respective spines, and set up the diffusion to the dendrite. -# The electrical model contributes the incoming calcium flux to the -# chemical model. This comes from the synaptic channels. -# The signalling here does two things to the electrical model. First, the -# amount of receptor in the chemical model controls the amount of glutamate -# receptor in the PSD. Second, there is a small kinase reaction that -# phosphorylates and inactivates the dendritic potassium channel. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' -import math - -import moose - -EREST_ACT = -70e-3 - -# Gate equations have the form: -# -# y(x) = (A + B * x) / (C + exp((x + D) / F)) -# -# where x is membrane voltage and y is the rate constant for gate -# closing or opening - -Na_m_params = [1e5 * (25e-3 + EREST_ACT), # 'A_A': - -1e5, # 'A_B': - -1.0, # 'A_C': - -25e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 4e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 18e-3 # 'B_F': - ] -Na_h_params = [ 70.0, # 'A_A': - 0.0, # 'A_B': - 0.0, # 'A_C': - 0.0 - EREST_ACT, # 'A_D': - 0.02, # 'A_F': - 1000.0, # 'B_A': - 0.0, # 'B_B': - 1.0, # 'B_C': - -30e-3 - EREST_ACT, # 'B_D': - -0.01 # 'B_F': - ] -K_n_params = [ 1e4 * (10e-3 + EREST_ACT), # 'A_A': - -1e4, # 'A_B': - -1.0, # 'A_C': - -10e-3 - EREST_ACT, # 'A_D': - -10e-3, # 'A_F': - 0.125e3, # 'B_A': - 0.0, # 'B_B': - 0.0, # 'B_C': - 0.0 - EREST_ACT, # 'B_D': - 80e-3 # 'B_F': - ] -VMIN = -30e-3 + EREST_ACT -VMAX = 120e-3 + EREST_ACT -VDIVS = 3000 - -def createSquid(): - """Create a single compartment squid model.""" - parent = moose.Neutral ('/n' ) - compt = moose.SymCompartment( '/n/compt' ) - Em = EREST_ACT + 10.613e-3 - compt.Em = Em - compt.initVm = EREST_ACT - compt.Cm = 7.85e-9 * 0.5 - compt.Rm = 4.2e5 * 5.0 - compt.Ra = 7639.44e3 - nachan = moose.HHChannel( '/n/compt/Na' ) - nachan.Xpower = 3 - xGate = moose.HHGate(nachan.path + '/gateX') - xGate.setupAlpha(Na_m_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - nachan.Ypower = 1 - yGate = moose.HHGate(nachan.path + '/gateY') - yGate.setupAlpha(Na_h_params + [VDIVS, VMIN, VMAX]) - yGate.useInterpolation = 1 - nachan.Gbar = 0.942e-3 - nachan.Ek = 115e-3+EREST_ACT - moose.connect(nachan, 'channel', compt, 'channel', 'OneToOne') - - kchan = moose.HHChannel( '/n/compt/K' ) - kchan.Xpower = 4.0 - xGate = moose.HHGate(kchan.path + '/gateX') - xGate.setupAlpha(K_n_params + [VDIVS, VMIN, VMAX]) - xGate.useInterpolation = 1 - kchan.Gbar = 0.2836e-3 - kchan.Ek = -12e-3+EREST_ACT - moose.connect(kchan, 'channel', compt, 'channel', 'OneToOne') - return compt - -def createSpine( parentCompt, parentObj, index, frac, length, dia, theta ): - """Create spine of specified dimensions and index""" - RA = 1.0 - RM = 1.0 - CM = 0.01 - shaftDia = dia / 5.0 - sname = 'shaft' + str(index) - hname = 'head' + str(index) - shaft = moose.SymCompartment( parentObj.path + '/' + sname ) - moose.connect( parentCompt, 'cylinder', shaft, 'proximalOnly','Single' ) - x = parentCompt.x0 + frac * ( parentCompt.x - parentCompt.x0 ) - y = parentCompt.y0 + frac * ( parentCompt.y - parentCompt.y0 ) - z = parentCompt.z0 + frac * ( parentCompt.z - parentCompt.z0 ) - shaft.x0 = x - shaft.y0 = y - shaft.z0 = z - sy = y + length * math.cos( theta * math.pi / 180.0 ) - sz = z + length * math.sin( theta * math.pi / 180.0 ) - shaft.x = x - shaft.y = sy - shaft.z = sz - shaft.diameter = dia / 2.0 - shaft.length = length - xa = math.pi * shaftDia * shaftDia / 4 - circumference = math.pi * shaftDia - shaft.Ra = RA * length / xa - shaft.Rm = RM / ( length * circumference ) - shaft.Cm = CM * length * circumference - shaft.Em = EREST_ACT - shaft.initVm = EREST_ACT - - head = moose.SymCompartment( parentObj.path + '/' + hname ) - moose.connect( shaft, 'distal', head, 'proximal', 'Single' ) - head.x0 = x - head.y0 = sy - head.z0 = sz - hy = sy + length * math.cos ( theta * math.pi / 180.0 ) - hz = sz + length * math.sin ( theta * math.pi / 180.0 ) - head.x = x - head.y = hy - head.z = hz - head.diameter = dia - head.length = length - xa = math.pi * dia * dia / 4.0 - circumference = math.pi * dia - head.Ra = RA * length / xa - head.Rm = RM / ( length * circumference ) - head.Cm = CM * length * circumference - head.Em = EREST_ACT - head.initVm = EREST_ACT - #print head.Rm, head.Ra, head.Cm, head.diameter, head.length - #print shaft.Rm, shaft.Ra, shaft.Cm, shaft.diameter, shaft.length - return head - -def createSpineWithReceptor( compt, cell, index, frac ): - FaradayConst = 96485.3415 # s A / mol - spineLength = 5.0e-6 - spineDia = 4.0e-6 - head = createSpine( compt, cell, index, frac, spineLength, spineDia, 0.0 ) - gluR = moose.SynChan( head.path + '/gluR' ) - gluR.tau1 = 4e-3 - gluR.tau2 = 4e-3 - gluR.Gbar = 1e-6 - gluR.Ek= 10.0e-3 - moose.connect( head, 'channel', gluR, 'channel', 'Single' ) - - caPool = moose.CaConc( head.path + '/ca' ) - caPool.CaBasal = 1e-4 # 0.1 micromolar - caPool.tau = 0.01 - B = 1.0 / ( FaradayConst * spineLength * spineDia * spineDia *math.pi/4) - B = B / 20.0 # scaling factor for Ca buffering - caPool.B = B - moose.connect( gluR, 'IkOut', caPool, 'current', 'Single' ) - - return gluR - -def addPlot( objpath, field, plot ): - assert moose.exists( objpath ) - tab = moose.Table( '/graphs/' + plot ) - obj = moose.element( objpath ) - moose.connect( tab, 'requestOut', obj, field ) - return tab - -def makeElecPlots(): - graphs = moose.Neutral( '/graphs' ) - elec = moose.Neutral( '/graphs/elec' ) - addPlot( '/model/elec/compt', 'getVm', 'elec/dendVm' ) - addPlot( '/model/elec/head0', 'getVm', 'elec/head0Vm' ) - addPlot( '/model/elec/head2', 'getVm', 'elec/head2Vm' ) - addPlot( '/model/elec/head0/ca', 'getCa', 'elec/head0Ca' ) - addPlot( '/model/elec/head1/ca', 'getCa', 'elec/head1Ca' ) - addPlot( '/model/elec/head2/ca', 'getCa', 'elec/head2Ca' ) - addPlot( '/model/elec/head0/gluR', 'getIk', 'elec/head0Ik' ) - addPlot( '/model/elec/head1/gluR', 'getIk', 'elec/head1Ik' ) - addPlot( '/model/elec/head2/gluR', 'getIk', 'elec/head2Ik' ) - addPlot( '/model/elec/head1/gluR', 'getGbar', 'elec/head1Gbar' ) - addPlot( '/model/elec/head2/gluR', 'getGbar', 'elec/head2Gbar' ) - -def dumpPlots( fname ): - if ( os.path.exists( fname ) ): - os.remove( fname ) - for x in moose.wildcardFind( '/graphs/##[ISA=Table]' ): - moose.element( x[0] ).xplot( fname, x[0].name ) - -def makeSpinyCompt(): - comptLength = 30e-6 - comptDia = 6e-6 - numSpines = 5 - compt = createSquid() - compt.inject = 0 - compt.x0 = 0 - compt.y0 = 0 - compt.z0 = 0 - compt.x = comptLength - compt.y = 0 - compt.z = 0 - compt.length = comptLength - compt.diameter = comptDia - synInput = moose.SpikeGen( '/n/compt/synInput' ) - synInput.refractT = 47e-3 - synInput.threshold = -1.0 - synInput.edgeTriggered = 0 - synInput.Vm( 0 ) - cell = moose.element( '/n' ) - for i in range( numSpines ): - r = createSpineWithReceptor( compt, cell, i, i/float(numSpines) ) - r.synapse.num = 1 - syn = moose.element( r.path + '/synapse' ) - moose.connect( synInput, 'spikeOut', syn, 'addSpike', 'Single' ) - syn.weight = 0.2 * i * ( 4 - i ) - syn.delay = i * 1.0e-3 - -def createPool( compt, name, concInit ): - meshEntries = moose.element( compt.path + '/mesh' ) - pool = moose.Pool( compt.path + '/' + name ) - moose.connect( pool, 'mesh', meshEntries, 'mesh', 'Single' ) - pool.concInit = concInit - pool.diffConst = 1e-11 - return pool - - -def createChemModel( neuroCompt, spineCompt, psdCompt ): - # Stuff in spine + psd - # The psdCa pool is an unfortunate necessity because of limitations in - # the solver setup that require molecules to diffuse through all - # compartments, at least as of the July 2013 version. - psdCa = createPool( psdCompt, 'Ca', 0.0001 ) - psdGluR = createPool( psdCompt, 'psdGluR', 1 ) - headCa = createPool( spineCompt, 'Ca', 1e-4 ) - headGluR = createPool( spineCompt, 'headGluR', 2 ) - toPsd = createPool( spineCompt, 'toPsd', 0 ) - toPsdInact = createPool( spineCompt, 'toPsdInact', 1e-3 ) - turnOnPsd = moose.Reac( spineCompt.path + '/turnOnPsd' ) - moose.connect( turnOnPsd, 'sub', headCa, 'reac', 'OneToOne' ) - moose.connect( turnOnPsd, 'sub', toPsdInact, 'reac', 'OneToOne' ) - moose.connect( turnOnPsd, 'prd', toPsd, 'reac', 'OneToOne' ) - turnOnPsd.Kf = 1e3 - turnOnPsd.Kb = 1 - toPsdEnz = moose.Enz( toPsd.path + '/enz' ) - toPsdEnzCplx = moose.Pool( toPsdEnz.path + '/cplx' ) - mesh = moose.element( spineCompt.path + '/mesh' ) - moose.connect( toPsdEnzCplx, 'mesh', mesh, 'mesh' ) - toPsdEnzCplx.concInit = 0 - moose.connect( toPsdEnz, 'enz', toPsd, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'sub', headGluR, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'prd', psdGluR, 'reac', 'OneToOne' ) - moose.connect( toPsdEnz, 'cplx', toPsdEnzCplx, 'reac', 'OneToOne' ) - toPsdEnz.Km = 1.0e-3 - toPsdEnz.kcat = 10.0 - fromPsd = moose.Reac( psdCompt.path + '/fromPsd' ) - moose.connect( fromPsd, 'sub', psdGluR, 'reac', 'OneToOne' ) - moose.connect( fromPsd, 'prd', headGluR, 'reac', 'OneToOne' ) - fromPsd.Kf = 0.5 - fromPsd.Kb = 0.0 - # Stuff in dendrite - dendCa = createPool( neuroCompt, 'Ca', 1e-4 ) - bufCa = moose.Pool( neuroCompt.path + '/bufCa' ) - mesh = moose.element( neuroCompt.path + '/mesh' ) - moose.connect( mesh, 'mesh', bufCa, 'mesh', 'Single' ) - bufCa.concInit = 1e-4 - pumpCa = moose.Reac( neuroCompt.path + '/pumpCa' ) - moose.connect( pumpCa, 'sub', dendCa, 'reac', 'OneToOne' ) - moose.connect( pumpCa, 'prd', bufCa, 'reac', 'OneToOne' ) - pumpCa.Kf = 1 - pumpCa.Kb = 1 - dendKinaseInact = createPool( neuroCompt, 'inact_kinase', 1e-4 ) - dendKinase = createPool( neuroCompt, 'Ca.kinase', 0.0 ) - dendTurnOnKinase = moose.Reac( neuroCompt.path + '/turnOnKinase' ) - moose.connect( dendTurnOnKinase, 'sub', dendCa, 'reac' ) - moose.connect( dendTurnOnKinase, 'sub', dendKinaseInact, 'reac' ) - moose.connect( dendTurnOnKinase, 'prd', dendKinase, 'reac' ) - dendTurnOnKinase.Kf = 50000 - dendTurnOnKinase.Kb = 1 - dendKinaseEnz = moose.Enz( dendKinase.path + '/enz' ) - dendKinaseEnzCplx = moose.Pool( dendKinase.path + '/enz/cplx' ) - moose.connect( dendKinaseEnzCplx, 'mesh', mesh, 'mesh' ) - kChan = createPool( neuroCompt, 'kChan', 1e-3 ) - kChan_p = createPool( neuroCompt, 'kChan_p', 0.0 ) - moose.connect( dendKinaseEnz, 'enz', dendKinase, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'sub', kChan, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'prd', kChan_p, 'reac', 'OneToOne' ) - moose.connect( dendKinaseEnz, 'cplx', dendKinaseEnzCplx, 'reac', 'OneToOne' ) - dendKinaseEnz.Km = 1e-4 - dendKinaseEnz.kcat = 20 - dendPhosphatase = moose.Reac( neuroCompt.path + '/phosphatase' ) - moose.connect( dendPhosphatase, 'sub', kChan_p, 'reac' ) - moose.connect( dendPhosphatase, 'prd', kChan, 'reac' ) - dendPhosphatase.Kf = 1 - dendPhosphatase.Kb = 0.0 - - - -def makeNeuroMeshModel(): - makeSpinyCompt() - diffLength = moose.element( '/n/compt' ).length - diffLength = diffLength / 10.0 - elec = moose.element( '/n' ) - elec.name = 'elec' - model = moose.Neutral( '/model' ) - moose.move( elec, model ) - synInput = moose.element( '/model/elec/compt/synInput' ) - synInput.refractT = 47e-3 - - chem = moose.Neutral( '/model/chem' ) - neuroCompt = moose.NeuroMesh( '/model/chem/neuroMesh' ) - neuroCompt.separateSpines = 1 - neuroCompt.diffLength = diffLength - neuroCompt.geometryPolicy = 'cylinder' - spineCompt = moose.SpineMesh( '/model/chem/spineMesh' ) - moose.connect( neuroCompt, 'spineListOut', spineCompt, 'spineList', 'OneToOne' ) - psdCompt = moose.PsdMesh( '/model/chem/psdMesh' ) - moose.connect( neuroCompt, 'psdListOut', psdCompt, 'psdList', 'OneToOne' ) - - createChemModel( neuroCompt, spineCompt, psdCompt ) - - # Put in the solvers, see how they fare. - nmksolve = moose.GslStoich( '/model/chem/neuroMesh/ksolve' ) - nmksolve.path = '/model/chem/neuroMesh/##' - nmksolve.compartment = moose.element( '/model/chem/neuroMesh' ) - nmksolve.method = 'rk5' - nm = moose.element( '/model/chem/neuroMesh/mesh' ) - moose.connect( nm, 'remesh', nmksolve, 'remesh' ) - #print "neuron: nv=", nmksolve.numLocalVoxels, ", nav=", nmksolve.numAllVoxels, nmksolve.numVarPools, nmksolve.numAllPools - - #print 'setting up smksolve' - smksolve = moose.GslStoich( '/model/chem/spineMesh/ksolve' ) - smksolve.path = '/model/chem/spineMesh/##' - smksolve.compartment = moose.element( '/model/chem/spineMesh' ) - smksolve.method = 'rk5' - sm = moose.element( '/model/chem/spineMesh/mesh' ) - moose.connect( sm, 'remesh', smksolve, 'remesh' ) - #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools - # - #print 'setting up pmksolve' - pmksolve = moose.GslStoich( '/model/chem/psdMesh/ksolve' ) - pmksolve.path = '/model/chem/psdMesh/##' - pmksolve.compartment = moose.element( '/model/chem/psdMesh' ) - pmksolve.method = 'rk5' - pm = moose.element( '/model/chem/psdMesh/mesh' ) - moose.connect( pm, 'remesh', pmksolve, 'remesh' ) - #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools - # - - #print 'Assigning the cell model' - # Now to set up the model. - neuroCompt.cell = elec - ns = neuroCompt.numSegments - #assert( ns == 11 ) # dend, 5x (shaft+head) - ndc = neuroCompt.numDiffCompts - assert( ndc == 10 ) - ndc = neuroCompt.mesh.num - assert( ndc == 10 ) - sdc = spineCompt.mesh.num - assert( sdc == 5 ) - pdc = psdCompt.mesh.num - assert( pdc == 5 ) - # - # We need to use the spine solver as the master for the purposes of - # these calculations. This will handle the diffusion calculations - # between head and dendrite, and between head and PSD. - smksolve.addJunction( nmksolve ) - #print "spine: nv=", smksolve.numLocalVoxels, ", nav=", smksolve.numAllVoxels, smksolve.numVarPools, smksolve.numAllPools - smksolve.addJunction( pmksolve ) - #print "psd: nv=", pmksolve.numLocalVoxels, ", nav=", pmksolve.numAllVoxels, pmksolve.numVarPools, pmksolve.numAllPools - # Have to pass a message between the various solvers. - foo = moose.vec( '/model/chem/spineMesh/headGluR' ) - - # oddly, numLocalFields does not work. - ca = moose.element( '/model/chem/neuroMesh/Ca' ) - assert( ca.lastDimension == ndc ) - - moose.vec( '/model/chem/spineMesh/headGluR' ).nInit = 100 - moose.vec( '/model/chem/psdMesh/psdGluR' ).nInit = 0 - - # set up adaptors - aCa = moose.Adaptor( '/model/chem/spineMesh/adaptCa', 5 ) - adaptCa = moose.vec( '/model/chem/spineMesh/adaptCa' ) - chemCa = moose.vec( '/model/chem/spineMesh/Ca' ) - assert( len( adaptCa ) == 5 ) - for i in range( 5 ): - path = '/model/elec/head' + str( i ) + '/ca' - elecCa = moose.element( path ) - moose.connect( elecCa, 'concOut', adaptCa[i], 'input', 'Single' ) - moose.connect( adaptCa, 'outputSrc', chemCa, 'setConc', 'OneToOne' ) - adaptCa.outputOffset = 0.0001 # 100 nM offset in chem. - adaptCa.scale = 0.05 # 0.06 to 0.003 mM - - aGluR = moose.Adaptor( '/model/chem/psdMesh/adaptGluR', 5 ) - adaptGluR = moose.vec( '/model/chem/psdMesh/adaptGluR' ) - chemR = moose.vec( '/model/chem/psdMesh/psdGluR' ) - assert( len( adaptGluR ) == 5 ) - for i in range( 5 ): - path = '/model/elec/head' + str( i ) + '/gluR' - elecR = moose.element( path ) - moose.connect( adaptGluR[i], 'outputSrc', elecR, 'setGbar', 'Single' ) - #moose.connect( chemR, 'nOut', adaptGluR, 'input', 'OneToOne' ) - # Ksolve isn't sending nOut. Not good. So have to use requestOut. - moose.connect( adaptGluR, 'requestOut', chemR, 'getN', 'OneToOne' ) - adaptGluR.outputOffset = 1e-7 # pS - adaptGluR.scale = 1e-6 / 100 # from n to pS - - adaptK = moose.Adaptor( '/model/chem/neuroMesh/adaptK' ) - chemK = moose.element( '/model/chem/neuroMesh/kChan' ) - elecK = moose.element( '/model/elec/compt/K' ) - moose.connect( adaptK, 'requestOut', chemK, 'getConc', 'OneToAll' ) - moose.connect( adaptK, 'outputSrc', elecK, 'setGbar', 'Single' ) - adaptK.scale = 0.3 # from mM to Siemens - """ - """ - - -def makeChemPlots(): - graphs = moose.Neutral( '/graphs' ) - addPlot( '/model/chem/psdMesh/psdGluR[0]', 'getN', 'psd0R' ) - addPlot( '/model/chem/psdMesh/psdGluR[1]', 'getN', 'psd1R' ) - addPlot( '/model/chem/psdMesh/psdGluR[2]', 'getN', 'psd2R' ) - addPlot( '/model/chem/spineMesh/Ca[0]', 'getConc', 'spine0Ca' ) - addPlot( '/model/chem/spineMesh/Ca[1]', 'getConc', 'spine1Ca' ) - addPlot( '/model/chem/spineMesh/Ca[2]', 'getConc', 'spine2Ca' ) - addPlot( '/model/chem/neuroMesh/Ca[0]', 'getConc', 'dend0Ca' ) - addPlot( '/model/chem/neuroMesh/Ca[1]', 'getConc', 'dend1Ca' ) - addPlot( '/model/chem/neuroMesh/Ca[2]', 'getConc', 'dend2Ca' ) - addPlot( '/model/chem/neuroMesh/Ca[3]', 'getConc', 'dend3Ca' ) - addPlot( '/model/chem/neuroMesh/Ca[6]', 'getConc', 'dend6Ca' ) - addPlot( '/model/chem/neuroMesh/Ca[9]', 'getConc', 'dend9Ca' ) - addPlot( '/model/chem/neuroMesh/kChan_p[4]', 'getConc', 'kChan_p4' ) - addPlot( '/model/chem/neuroMesh/kChan[4]', 'getConc', 'kChan4' ) - addPlot( '/model/chem/neuroMesh/Ca.kinase[4]', 'getConc', 'dendKinase4' ) - addPlot( '/model/chem/spineMesh/toPsd[0]', 'getConc', 'toPsd0' ) - addPlot( '/model/chem/spineMesh/toPsd[2]', 'getConc', 'toPsd2' ) - addPlot( '/model/chem/spineMesh/toPsd[4]', 'getConc', 'toPsd4' ) - #addPlot( '/n/neuroMesh/Ca', 'getConc', 'dendCa' ) - #addPlot( '/n/neuroMesh/inact_kinase', 'getConc', 'inactDendKinase' ) - #addPlot( '/n/psdMesh/psdGluR', 'getN', 'psdGluR' ) - -def testNeuroMeshMultiscale(): - elecDt = 50e-6 - chemDt = 2e-3 - plotDt = 5e-4 - plotName = 'nm.plot' - - makeNeuroMeshModel() - """ - moose.le( '/model/chem/spineMesh/ksolve' ) - print 'Neighbors:' - for t in moose.element( '/model/chem/spineMesh/ksolve/junction' ).neighbors['masterJunction']: - print 'masterJunction <-', t.path - for t in moose.wildcardFind( '/model/chem/#Mesh/ksolve' ): - k = moose.element( t[0] ) - print k.path + ' localVoxels=', k.numLocalVoxels, ', allVoxels= ', k.numAllVoxels - """ - - makeChemPlots() - makeElecPlots() - moose.setClock( 0, elecDt ) - moose.setClock( 1, elecDt ) - moose.setClock( 2, elecDt ) - moose.setClock( 5, chemDt ) - moose.setClock( 6, chemDt ) - moose.setClock( 7, plotDt ) - moose.setClock( 8, plotDt ) - moose.useClock( 0, '/model/elec/##[ISA=Compartment]', 'init' ) - moose.useClock( 1, '/model/elec/##[ISA=SpikeGen]', 'process' ) - moose.useClock( 2, '/model/elec/##[ISA=ChanBase],/model/##[ISA=SynBase],/model/##[ISA=CaConc]','process') - moose.useClock( 5, '/model/chem/##[ISA=PoolBase],/model/##[ISA=ReacBase],/model/##[ISA=EnzBase]', 'process' ) - moose.useClock( 6, '/model/chem/##[ISA=Adaptor]', 'process' ) - moose.useClock( 7, '/graphs/#', 'process' ) - moose.useClock( 8, '/graphs/elec/#', 'process' ) - moose.useClock( 5, '/model/chem/#Mesh/ksolve', 'init' ) - moose.useClock( 6, '/model/chem/#Mesh/ksolve', 'process' ) - hsolve = moose.HSolve( '/model/elec/hsolve' ) - moose.useClock( 1, '/model/elec/hsolve', 'process' ) - hsolve.dt = elecDt - hsolve.target = '/model/elec/compt' - moose.reinit() - moose.reinit() - - moose.start( 1.0 ) - dumpPlots( plotName ) - - -def main(): - testNeuroMeshMultiscale() - -if __name__ == '__main__': - main() - -# -# testSigNeur.py ends here. diff --git a/examples/snippets/testWigglySpines.py b/examples/snippets/testWigglySpines.py deleted file mode 100644 index 36a8294..0000000 --- a/examples/snippets/testWigglySpines.py +++ /dev/null @@ -1,223 +0,0 @@ -################################################################## -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2015 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -## -## testRdesigneur.py: Builds a spiny compartment and populates it with -## a molecule that diffuses. -################################################################## - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose -import sys -sys.path.append( '../util' ) -import rdesigneur as rd -from PyQt4 import QtGui -import moogli - -PI = 3.141592653 -ScalingForTesting = 10 -RM = 1.0 / ScalingForTesting -RA = 1.0 * ScalingForTesting -CM = 0.01 * ScalingForTesting -runtime = 1.0 -diffConst = 1e-12 -dendLen = 10e-6 -spineSpacing = 1.5e-6 -spineSpacingDistrib = 1e-10 -spineSize = 1.0 -spineSizeDistrib = 0 -spineAngle= numpy.pi / 2.0 -spineAngleDistrib = 0.0 - - -def makeCellProto( name ): - elec = moose.Neuron( '/library/' + name ) - ecompt = [] - ec = rd.buildCompt( elec, 'dend', dendLen, 2.0e-6, 0, RM, RA, CM ) - elec.buildSegmentTree() - -def makeChemProto( name ): - chem = moose.Neutral( '/library/' + name ) - for i in ( ['dend', 1e-18], ['spine', 1e-19], ['psd', 1e-20] ): - print 'making ', i - compt = moose.CubeMesh( chem.path + '/' + i[0] ) - compt.volume = i[1] - Ca = moose.Pool( compt.path + '/Ca' ) - Ca.concInit = 0.08 - Ca.diffConst = 1e-11 - -def makeSpineProto2( name ): - spine = moose.Neutral( '/library/' + name ) - shaft = rd.buildCompt( spine, 'shaft', 1e-6, 0.2e-6, 0, RM, RA, CM ) - head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 1e-6, RM, RA, CM ) - moose.connect( shaft, 'axial', head, 'raxial' ) - -def makeModel(): - moose.Neutral( '/library' ) - makeCellProto( 'cellProto' ) - makeChemProto( 'cProto' ) - makeSpineProto2( 'spine' ) - rdes = rd.rdesigneur( useGssa = False, \ - combineSegments = False, \ - stealCellFromLibrary = True, \ - meshLambda = 1e-6, \ - cellProto = [['cellProto', 'elec' ]] ,\ - spineProto = [['spineProto', 'spine' ]] ,\ - chemProto = [['cProto', 'chem' ]] ,\ - spineDistrib = [ \ - ['spine', '#', \ - 'spacing', str( spineSpacing ), \ - 'spacingDistrib', str( spineSpacingDistrib ), \ - 'angle', str( spineAngle ), \ - 'angleDistrib', str( spineAngleDistrib ), \ - 'size', str( spineSize ), \ - 'sizeDistrib', str( spineSizeDistrib ) ] \ - ], \ - chemDistrib = [ \ - [ "chem", "#", "install", "1" ] \ - ], - adaptorList = [ \ - [ 'psd/Ca', 'conc', '.', 'inject', False, 0, 2e-9 ], \ - ] \ - ) - rdes.buildModel( '/model' ) - -def p2(x): - ''' - Print to 2 sig fig - ''' - print round(x, 1-int(numpy.floor(numpy.log10(x)))), - -def assertEq( a, b ): - print '.', - if not( numpy.fabs( a-b) / (a+b) < 1e-10 ): - print 'a!=b:', a, b - assert(False) - -def main(): - """ - This illustrates the use of rdesigneur to build a simple dendrite with - spines, and then to resize them using spine fields. These are the - fields that would be changed dynamically in a simulation with reactions - that affect spine geometry. - """ - makeModel() - elec = moose.element( '/model/elec' ) - elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) - caDend = moose.vec( '/model/chem/dend/Ca' ) - caHead = moose.vec( '/model/chem/spine/Ca' ) - caPsd = moose.vec( '/model/chem/psd/Ca' ) - eHead = moose.wildcardFind( '/model/elec/#head#' ) - graphs = moose.Neutral( '/graphs' ) - psdTab = moose.Table2( '/graphs/psdTab', len( caPsd ) ).vec - headTab = moose.Table2( '/graphs/headTab', len( caHead ) ).vec - dendTab = moose.Table2( '/graphs/dendTab', len( caDend ) ).vec - eTab = moose.Table( '/graphs/eTab', len( eHead ) ).vec - stimtab = moose.StimulusTable( '/stim' ) - stimtab.stopTime = 0.3 - stimtab.loopTime = 0.3 - stimtab.doLoop = True - stimtab.vector = [ 1.0 + numpy.sin( x ) for x in numpy.arange( 0, 2*PI, PI/1000 ) ] - estimtab = moose.StimulusTable( '/estim' ) - estimtab.stopTime = 0.001 - estimtab.loopTime = 0.001 - estimtab.doLoop = True - estimtab.vector = [ 1e-9*numpy.sin( x ) for x in numpy.arange( 0, 2*PI, PI/1000 ) ] - - for i in range( len( caPsd ) ): - moose.connect( psdTab[ i ], 'requestOut', caPsd[i], 'getConc' ) - for i in range( len( caHead ) ): - moose.connect( headTab[ i ], 'requestOut', caHead[i], 'getConc' ) - for i in range( len( caDend ) ): - moose.connect( dendTab[ i ], 'requestOut', caDend[i], 'getConc' ) - for i in range( len( eHead ) ): - moose.connect( eTab[ i ], 'requestOut', eHead[i], 'getVm' ) - moose.connect( stimtab, 'output', caDend, 'setConc', 'OneToAll' ) - dend = moose.element( '/model/elec/dend' ) - moose.connect( estimtab, 'output', dend, 'setInject' ) - - moose.reinit() - moose.start( 1 ) - - head0 = moose.element( '/model/elec/head0' ) - shaft1 = moose.element( '/model/elec/shaft1' ) - head2 = moose.element( '/model/elec/head2' ) - - # Here we scale the spine head length while keeping all vols constt. - print "Spine 0: longer head, same vol\nSpine 1: longer shaft" - print "Spine 2: Bigger head, same diffScale\n" - elecParms = [ (i.Rm, i.Cm, i.Ra) for i in ( head0, shaft1, head2) ] - chemParms = [ i.volume for i in ( caHead[0], caPsd[0], caHead[1], caPsd[1], caHead[2], caPsd[2] ) ] - - elec.spine[0].headLength *= 4 # 4x length - elec.spine[0].headDiameter *= 0.5 # 1/2 x dia - - # Here we scale the shaft length. Vols are not touched. - elec.spine[1].shaftLength *= 2 # 2 x length - - #Here we scale the spine head vol while retaining diffScale = xArea/len - # This gives 4x vol. - hdia = elec.spine[2].headDiameter - sdsolve = moose.element( '/model/chem/spine/dsolve' ) - elec.spine[2].headLength *= 2 # 2x length - elec.spine[2].headDiameter *= numpy.sqrt(2) # sqrt(2) x dia - hdia = elec.spine[2].headDiameter - - print "Checking scaling assertions: " - assertEq( elecParms[0][0] * 0.5 , head0.Rm ) - assertEq( elecParms[0][1] * 2 , head0.Cm ) - assertEq( elecParms[0][2] * 16 , head0.Ra ) - assertEq( chemParms[0] , caHead[0].volume ) - assertEq( chemParms[1] * 0.25 , caPsd[0].volume ) - - assertEq( elecParms[1][0] * 0.5 , shaft1.Rm ) - assertEq( elecParms[1][1] * 2 , shaft1.Cm ) - assertEq( elecParms[1][2] * 2 , shaft1.Ra ) - assertEq( chemParms[2] , caHead[1].volume ) - assertEq( chemParms[3] , caPsd[1].volume ) - - ratio = 2 * numpy.sqrt( 2 ) - assertEq( elecParms[2][0] / ratio , head2.Rm ) - assertEq( elecParms[2][1] * ratio , head2.Cm ) - assertEq( elecParms[2][2] , head2.Ra ) - assertEq( chemParms[4] * 4 , caHead[2].volume ) - assertEq( chemParms[5] * 2 , caPsd[2].volume ) - print "\nAll assertions cleared" - - moose.start( 2 ) - for i in range( len( psdTab ) ): - pylab.plot( psdTab[i].vector, label= 'PSD' + str(i) ) - pylab.legend() - pylab.figure() - for i in range( len( headTab ) ): - pylab.plot( headTab[i].vector, label= 'head' + str(i) ) - pylab.legend() - pylab.figure() - for i in range( len( dendTab ) ): - pylab.plot( dendTab[i].vector, label= 'dendCa' + str(i) ) - pylab.legend() - pylab.figure() - for i in range( len( eTab ) ): - pylab.plot( eTab[i].vector, label= 'headVm' + str(i) ) - #print i, len( eTab[i].vector ), eTab[i].vector - pylab.legend() - pylab.show() - - app = QtGui.QApplication(sys.argv) - #widget = mv.MoogliViewer( '/model' ) - morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) - widget = moogli.MorphologyViewerWidget( morphology ) - widget.show() - return app.exec_() - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/threading_demo.py b/examples/snippets/threading_demo.py deleted file mode 100644 index a9fd15c..0000000 --- a/examples/snippets/threading_demo.py +++ /dev/null @@ -1,105 +0,0 @@ -# test_moose_thread.py --- -# -# Filename: test_moose_thread.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Thu Mar 8 09:38:02 2012 (+0530) -# Version: -# Last-Updated: Thu Mar 8 15:16:03 2012 (+0530) -# By: Subhasis Ray -# Update #: 162 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Example of using multithreading to run a MOOSE simulation in -# parallel with querying MOOSE objects involved. See the documentatin -# of the classes to get an idea of this demo's function. -# - -# Change log: -# -# 2012-03-08 12:31:46 (+0530) Initial version by Subha -# - -# Code: - -import sys -from datetime import datetime -import threading -import Queue -import time - -import moose - -worker_queue = Queue.Queue() -status_queue = Queue.Queue() - -class WorkerThread(threading.Thread): - """This thread initializes the simulation (reinit) and then runs - the simulation in its run method. It keeps querying moose for - running status every second and returns when the simulation is - over. It puts its name in the global worker_queue at the end to - signal successful completion.""" - def __init__(self, runtime): - threading.Thread.__init__(self) - self.runtime = runtime - print 'Created WorkerThread of name', self.name - - def run(self): - print self.name, 'Starting run for', self.runtime, ' seconds' - moose.reinit() - moose.start(self.runtime) - while moose.isRunning(): - time.sleep(1.0) - print self.name, 'Table length', len(moose.Table('/tab').vector) - print self.name, 'Finishing simulation' - worker_queue.put(self.name) - -class StatusThread(threading.Thread): - """This thread checks the status of the moose worker thread by - checking the worker_queue for available entry. If there is - nothing, it goes to sleep for a second and then prints current - length of the table. If there is an entry, it puts its name in the - status queue, which is used by the main thread to recognize - successful completion.""" - def __init__(self, tab): - threading.Thread.__init__(self) - self.table = tab - print 'Created StatusThread of name', self.name - - def run(self): - while True: - try: - value = worker_queue.get(False) - print self.name, 'Received queue entry: ', value, '. Final table length:', len(self.table.vector), ' ... now Finishing' - status_queue.put(self.name) - return - except Queue.Empty: - time.sleep(1.0) - print self.name, 'Queue is empty. Current table length:', len(self.table.vector) - -if __name__ == '__main__': - pg = moose.PulseGen('pg') - pg.firstDelay = 10.0 - pg.firstLevel = 10.0 - pg.firstWidth = 5.0 - tab = moose.Table('tab') - moose.connect(tab, 'requestOut', pg, 'getOutputValue') - moose.setClock(0, 1.0) - moose.useClock(0, 'pg,tab', 'process') - t1 = WorkerThread(10000) - t2 = StatusThread(tab) - t2.start() - t1.start() - status_queue.get(True) - tab.xplot('threading_demo.dat', 'pulsegen_output') - print 'Ending threading_demo: final length of table', len(tab.vector) - -# -# threading_demo.py ends here diff --git a/examples/snippets/timetable.py b/examples/snippets/timetable.py deleted file mode 100644 index e149a59..0000000 --- a/examples/snippets/timetable.py +++ /dev/null @@ -1,161 +0,0 @@ -# timetable.py --- -# -# Filename: timetable.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Jun 19 19:37:00 2013 (+0530) -# Version: -# Last-Updated: Thu Oct 02 -# By: Upi -# Update #: ? -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""Demonstrates the use of TimeTable elements in MOOSE. - -This scripts creates two time tables, #1 is filled with entries in a -numpy array and #2 is filled from a text file containing the event -times. - -The `state` field of #1, which becomes 1 when an event occurs and 0 -otherwise, is recorded. - -On the other hand, #2 is connected to a synapse (in a SynChan element) -to demonstrate artificial spike event generation. - -""" - -import os -import numpy as np -import moose - -import pylab - -simtime = 100 -simdt = 1e-3 - -def generate_poisson_times(rate=20, simtime=100, seed=1): - """Generate Poisson spike times using `rate`. Use `seed` for seeding - the numpy rng""" - np.random.seed(seed) # ensure repeatability - isi = np.random.exponential(rate, int(simtime/rate)) - # The stimulus times are the cumulative sum of the inter-stimulus intervals. - stimtimes = np.cumsum(isi) - # Select only stimulus times that are within simulation time - - # this may leave out some possible stimuli at the end, but the - # exoected number of Poisson events within simtime is - # simtime/rate. - stimtimes = stimtimes[stimtimes < simtime] - return stimtimes - -def timetable_nparray(): - """Create a time table and populate it with numpy array. The `vec` - field in a Table can be directly assigned a sequence to fill the - table entries. - - """ - times = generate_poisson_times(rate=20, simtime=simtime, seed=1) - model = moose.Neutral('/model') - tt = moose.TimeTable('%s/tt_array' % (model.path)) - tt.vector = times - return tt, times, - -def timetable_file(filename='timetable.txt'): - """Create a TimeTable and populate it from file specified by - `filename`. If `filename` does not exist, a file of the same name is - created and a random series of spike times is saved in it""" - if not os.access(filename, os.R_OK): - times = generate_poisson_times(rate=10, simtime=simtime, seed=1) - np.savetxt(filename, times) - model = moose.Neutral('/model') - tt = moose.TimeTable('%s/tt_file' % (model.path)) - tt.filename = filename - return tt, np.loadtxt(filename), - -def timetable_demo(): - tt_array, sp_array = timetable_nparray() - tt_file, sp_file = timetable_file() - # Create a synchan inside a compartment to demonstrate how to use - # TimeTable to send artificial spike events to a synapse. - comp = moose.Compartment('/model/comp') - comp.Em = -60e-3 - comp.Rm = 1e9 - comp.Cm = 1e-12 - synchan = moose.SynChan('/model/comp/synchan') - synchan.Gbar = 1e-6 - synchan.Ek = 0.0 - moose.connect(synchan, 'channel', comp, 'channel') - synh = moose.SimpleSynHandler( '/model/comp/synchan/synh' ) - moose.connect( synh, 'activationOut', synchan, 'activation') - synh.synapse.num = 1 - moose.connect(tt_file, 'eventOut', moose.element(synh.path + '/synapse'), 'addSpike') - # Data recording: record the `state` of the time table filled - # using array. - data = moose.Neutral('/data') - tab_array = moose.Table('/data/tab_array') - moose.connect(tab_array, 'requestOut', tt_array, 'getState') - # Record the synaptic conductance for the other time table, which - # is filled from a text file and sends spike events to a synchan. - tab_file = moose.Table('/data/tab_file') - moose.connect(tab_file, 'requestOut', synchan, 'getGk') - - # Scheduling - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.useClock(1, '/model/##[ISA=Compartment]', 'init') - moose.useClock(1, '/model/##,/data/##', 'process') - moose.reinit() - moose.start(simtime) - - # Plotting - pylab.subplot(2,1,1) - pylab.plot(sp_array, np.ones(len(sp_array)), 'rx', label='spike times from numpy array') - pylab.plot(np.linspace(0, simtime, len(tab_array.vector)), tab_array.vector, 'b-', label='TimeTable state') - pylab.legend() - pylab.subplot(2,1,2) - pylab.plot(sp_file, np.ones(len(sp_file)), 'rx', label='spike times from file') - pylab.plot(np.linspace(0, simtime, len(tab_file.vector)), tab_file.vector*1e6, 'b-', label='Syn Gk (uS)') - pylab.legend() - pylab.show() - -if __name__ == '__main__': - timetable_demo() - - - - -# -# timetable.py ends here diff --git a/examples/snippets/transportBranchingNeuron.py b/examples/snippets/transportBranchingNeuron.py deleted file mode 100644 index b8616b5..0000000 --- a/examples/snippets/transportBranchingNeuron.py +++ /dev/null @@ -1,217 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import pylab -import numpy -import matplotlib.pyplot as plt -import moose - -diffConst = 0.1e-12 # m^2/sec -motorConst = 0.1e-6 # m/sec -aConcInit = 1 # millimolar, at soma. -bConcInit = 10 # millimolar, at dend tips. -plotScale = 20 - -def findTwigs( compt ): - pa = compt.parentVoxel - numkids = [ 0 ] * len( pa ) - for i in pa: - if i >= 0 and i < len( pa ): - numkids[i] += 1 - twigs = [] - for i in range( len( numkids ) ): - if numkids[i] == 0: - twigs.append( i ) - return twigs - -def makeModel(): - model = moose.Neutral( '/model' ) - # Make neuronal model. It has no channels, just for geometry - cell = moose.loadModel( './branching.p', '/model/cell', 'Neutral' ) - # We don't want the cell to do any calculations. Disable everything. - for i in moose.wildcardFind( '/model/cell/##' ): - i.tick = -1 - - # create container for model - model = moose.element( '/model' ) - chem = moose.Neutral( '/model/chem' ) - # The naming of the compartments is dicated by the places that the - # chem model expects to be loaded. - compt0 = moose.NeuroMesh( '/model/chem/compt0' ) - compt0.separateSpines = 0 - compt0.geometryPolicy = 'cylinder' - - #reacSystem = moose.loadModel( 'simpleOsc.g', '/model/chem', 'ee' ) - makeChemModel( compt0 ) # Populate all compt with the chem system. - - compt0.diffLength = 1e-6 # This will be over 100 compartments. - # This is the magic command that configures the diffusion compartments. - compt0.subTreePath = "/model/cell/#" - #compt0.cell = cell - - # Build the solvers. No need for diffusion in this version. - ksolve0 = moose.Ksolve( '/model/chem/compt0/ksolve' ) - dsolve0 = moose.Dsolve( '/model/chem/compt0/dsolve' ) - stoich0 = moose.Stoich( '/model/chem/compt0/stoich' ) - - # Configure solvers - stoich0.compartment = compt0 - stoich0.ksolve = ksolve0 - stoich0.dsolve = dsolve0 - stoich0.path = '/model/chem/compt0/#' - assert( stoich0.numVarPools == 2 ) - assert( stoich0.numProxyPools == 0 ) - assert( stoich0.numRates == 0 ) - - moose.element( '/model/chem/compt0/a[0]' ).concInit = aConcInit - twigs = findTwigs( compt0 ) - print 'twigs = ', twigs - for i in twigs: - e = moose.element( '/model/chem/compt0/b[' + str(i) + ']' ) - e.concInit = bConcInit - - # Create the output tables - graphs = moose.Neutral( '/model/graphs' ) - makeTab( 'a_soma', '/model/chem/compt0/a[0]' ) - makeTab( 'b_soma', '/model/chem/compt0/b[0]' ) - num = twigs[0] - makeTab( 'a_apical', '/model/chem/compt0/a[' + str( num ) + ']' ) - makeTab( 'b_apical', '/model/chem/compt0/b[' + str( num ) + ']' ) - -def makeTab( plotname, molpath ): - tab = moose.Table2( '/model/graphs/' + plotname ) # Make output table - # connect up the tables - moose.connect( tab, 'requestOut', moose.element( molpath ), 'getConc' ); - - -def makeDisplay(): - plt.ion() - fig = plt.figure( figsize=(10,12) ) - compt = moose.element( '/model/chem/compt0' ) - - aConc = fig.add_subplot( 311 ) - plt.ylabel( 'x position + 10*aconc' ) - plt.xlabel( 'y position (microns)' ) - timeLabel = plt.text(0, 20, 'time = 0') - aConc.set_xlim( -5, 75 ) - aConc.set_ylim( -20, 40 ) - pos = compt.voxelMidpoint - i = len( pos ) / 3 - r2 = numpy.sqrt( 0.5 ) - yp = [ -r2 * pos[j] * 1e6 for j in range( i ) ] - xp = pos[i:2*i] * 1e6 - yp - aline, = aConc.plot( xp, yp, 'b.' ) - - bConc = fig.add_subplot( 312 ) - plt.ylabel( 'x position + 10*bconc' ) - plt.xlabel( 'y position (microns)' ) - bConc.set_xlim( -5, 75 ) - bConc.set_ylim( -20, 40 ) - bline, = bConc.plot( xp, yp, 'r.' ) - - timeSeries = fig.add_subplot( 313 ) - timeSeries.set_ylim( 0, bConcInit / 2.0 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'time (seconds)' ) - - fig.canvas.draw() - return ( timeSeries, fig, aline, bline, timeLabel, yp ) - -def updateDisplay( plotlist ): - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - plotlist[2].set_ydata( a.conc * plotScale + plotlist[5] ) - plotlist[3].set_ydata( b.conc * plotScale + plotlist[5] ) - plotlist[1].canvas.draw() - - -def finalizeDisplay( plotlist, cPlotDt ): - for x in moose.wildcardFind( '/model/graphs/#[ISA=Table2]' ): - pos = numpy.arange( 0, x.vector.size, 1 ) * cPlotDt - line1, = plotlist[0].plot( pos, x.vector, label=x.name ) - plt.legend() - plotlist[1].canvas.draw() - print( "Hit 'enter' to exit" ) - raw_input() - -def makeChemModel( compt ): - - # create molecules and reactions - a = moose.Pool( compt.path + '/a' ) - b = moose.Pool( compt.path + '/b' ) - - a.concInit = 0 - b.concInit = 0 - - # Assign parameters - a.diffConst = diffConst - a.motorConst = motorConst - b.diffConst = diffConst - b.motorConst = -motorConst - -def main(): - """ - transportBranchingNeuron: - This example illustrates bidirectional transport - embedded in the branching pseudo 1-dimensional geometry of a neuron. - This means that diffusion and transport only happen along the axis of - dendritic segments, not radially from inside to outside a dendrite, - nor tangentially around the dendrite circumference. - In this model there is a molecule **a** starting at the soma, which is - transported out to the dendrites. There is another molecule, **b**, - which is initially present at the dendrite tips, and is transported - toward the soma. - This example uses an external model file to specify a binary branching - neuron. This model does not have any spines. The electrical model is - used here purely for the geometry and is not part of the computations. - In this example we build trival chemical model just having - molecules **a** and **b** throughout the neuronal geometry, using - the makeChemModel function. - The model is set up to run using the Ksolve for integration and the - Dsolve for handling diffusion. - - The display has three parts: - - a. Animated pseudo-3D plot of neuronal geometry, where each point - represents a diffusive voxel and moves in the y-axis to show - changes in concentration of molecule a. - b. Similar animated pseudo-3D plot for molecule b. - c. Time-series plot that appears after the simulation has - ended. The plots are for the first and last diffusive voxel, - that is, the soma and the tip of one of the apical dendrites. - - """ - plotdt = 1 - animationdt = 5 - runtime = 600 - - makeModel() - plotlist = makeDisplay() - # Default Scheduling works fine for this model. - # Chemdt = 0.1, diffdt = 0.01, plotdt = 1 - - moose.reinit() - a = moose.vec( '/model/chem/compt0/a' ) - b = moose.vec( '/model/chem/compt0/b' ) - a0 = sum( a.n ) - b0 = sum( b.n ) - for i in range( 0, runtime, animationdt ): - moose.start( animationdt ) - plotlist[4].set_text( "time = %d" % i ) - updateDisplay( plotlist ) - - print 'mass consv a = ', a0, sum( a.n ), ', b = ', b0, sum( b.n ) - - finalizeDisplay( plotlist, plotdt ) - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/traub_naf.py b/examples/snippets/traub_naf.py deleted file mode 100644 index cb124e4..0000000 --- a/examples/snippets/traub_naf.py +++ /dev/null @@ -1,325 +0,0 @@ -# traub_naf.py --- -# -# Filename: traub_naf.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Mon Apr 29 21:07:30 2013 (+0530) -# Version: -# Last-Updated: Mon May 6 18:50:14 2013 (+0530) -# By: subha -# Update #: 436 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""This is an example showing pymoose implementation of the NaF -channel in Traub et al 2005 - -Author: Subhasis Ray - -""" - -import numpy as np -from matplotlib import pyplot as plt -import os -os.environ['NUMPTHREADS'] = '1' -import moose -from moose import utils - -vmin = -120e-3 -vmax = 40e-3 -vdivs = 640 -v_array = np.linspace(vmin, vmax, vdivs+1) - -def create_naf_proto(): - """Create an NaF channel prototype in /library. You can copy it later - into any compartment or load a .p file with this channel using - loadModel. - - This channel has the conductance form: - - Gk(v) = Gbar * m^3 * h (V - Ek) - - We are using all SI units - - """ - if moose.exists('/library/NaF'): - return moose.element('/library/NaF') - if not moose.exists('/library'): - lib = moose.Neutral('/library') - channel = moose.HHChannel('/library/NaF') - shift = -3.5e-3 - # tau_m is defined piecewise: - # tau_m = 1.0e-3 * (0.025 + 0.14 * exp(( v + shift + 30e-3) / 10)) if v + shift < -30e-3 - # = 1.0e-3 * (0.02 + 0.145 * np.exp(( - v_array - shift - 30.0e-3) / 10.0e-3)) otherwise - tau_m = np.where((v_array + shift) < -30e-3, - 1.0e-3 * (0.025 + 0.14 * np.exp((v_array + shift + 30.0e-3) / 10.0e-3)), \ - 1.0e-3 * (0.02 + 0.145 * np.exp(( - v_array - shift - 30.0e-3) / 10.0e-3))) - inf_m = 1.0 / (1.0 + np.exp(( - v_array - shift - 38e-3) / 10e-3)) - tau_h = 1.0e-3 * (0.15 + 1.15 / ( 1.0 + np.exp(( v_array + 37.0e-3) / 15.0e-3))) - inf_h = 1.0 / (1.0 + np.exp((v_array + 62.9e-3) / 10.7e-3)) - channel.Xpower = 3 # Creates m-gate - # In svn version of moose you can even do: - # mgate = channel.gateX[0] - mgate = moose.element('%s/gateX' % (channel.path)) - mgate.tableA = inf_m / tau_m - mgate.tableB = 1 / tau_m - channel.Ypower = 1 # Creates h-gate - hgate = moose.element('%s/gateY' % (channel.path)) - hgate.tableA = inf_h / tau_h - hgate.tableB = 1 / tau_h - return channel - -def create_compartment(parent_path, name): - """This shows how to use the prototype channel on a compartment.""" - comp = moose.Compartment('%s/%s' % (parent_path, name)) - comp.Rm = 5e6 - comp.Ra = 1e9 - comp.Cm = 5e-9 - comp.initVm = -0.06 - comp.Em = -0.06 - protochan = create_naf_proto() - chan = moose.copy(protochan, comp, 'NaF') - chan.Gbar = 1e-6 - moose.connect(comp, 'channel', chan, 'channel') - return comp - -def setup_electronics(model_container, data_container, compartment): - """Setup voltage and current clamp circuit using DiffAmp and PID and - RC filter""" - command = moose.PulseGen('%s/command' % (model_container.path)) - command.delay[0] = 20e-3 - command.width[0] = 50e-3 - command.level[0] = 100e-9 - command.delay[1] = 1e9 - lowpass = moose.RC('%s/lowpass' % (model_container.path)) - lowpass.R = 1.0 - lowpass.C = 5e-4 - vclamp = moose.DiffAmp('%s/vclamp' % (model_container.path)) - vclamp.saturation = 1e10 - iclamp = moose.DiffAmp('%s/iclamp' % (model_container.path)) - iclamp.gain = 0.0 - iclamp.saturation = 1e10 - pid = moose.PIDController('%s/pid' % (model_container.path)) - pid.gain = compartment.Cm / 100e-6 # Cm/dt is a good number for gain - pid.tauI = 100e-6 # same as dt - pid.tauD = 0.0 - pid.saturation = 1e10 - # Current clamp circuit: connect command output to iclamp amplifier - # and the output of the amplifier to compartment. - moose.connect(command, 'output', iclamp, 'plusIn') - moose.connect(iclamp, 'output', compartment, 'injectMsg') - # Setup voltage clamp circuit: - # 1. Connect command output (which is now command) to lowpass - # filter. - # 2. Connect lowpass output to vclamp amplifier. - # 3. Connect amplifier output to PID's command input. - # 4. Connect Vm of compartment to PID's sensed input. - # 5. Connect PID output to compartment's injectMsg. - moose.connect(command, 'output', lowpass, 'injectIn') - moose.connect(lowpass, 'output', vclamp, 'plusIn') - moose.connect(vclamp, 'output', pid, 'commandIn') - moose.connect(compartment, 'VmOut', pid, 'sensedIn') - moose.connect(pid, 'output', compartment, 'injectMsg') - command_table = moose.Table('%s/command' % (data_container.path)) - moose.connect(command_table, 'requestOut', command, 'getOutputValue') - inject_table = moose.Table('%s/inject' % (data_container.path)) - moose.connect(inject_table, 'requestOut', compartment, 'getIm') - return {'command_tab': command_table, - 'inject_tab': inject_table, - 'iclamp': iclamp, - 'vclamp': vclamp, - 'pid': pid, - 'command': command} - -def do_vclamp(vclamp, iclamp, pid): - """Turn on voltage clamp and turn off current clamp""" - vclamp.gain = 1.0 - iclamp.gain = 0.0 - pid.gain = 5e-9/100e-6 # compartment.Cm / simulation.dt - -def do_iclamp(vclamp, iclamp, pid): - """Turn on current clamp and turn off voltage clamp""" - vclamp.gain = 0.0 - pid.gain = 0.0 - iclamp.gain = 1.0 - -def setup_model(): - """Setup the model and the electronic circuit. Also creates the data - container.""" - model = moose.Neutral('model') - data =moose.Neutral('/data') - comp = create_compartment(model.path, 'soma') - ret = setup_electronics(model, data, comp) - vmtab = moose.Table('%s/Vm' % (data.path)) - moose.connect(vmtab, 'requestOut', comp, 'getVm') - gktab = moose.Table('%s/Gk' % (data.path)) - moose.connect(gktab, 'requestOut', moose.element(comp.path + '/NaF'), 'getGk') - ret.update({'model': model, 'data': data, 'vm_tab': vmtab, 'gk_tab': gktab}) - return ret - -inited = False -def run_sim(model, data, simtime=100e-3, simdt=1e-6, plotdt=1e-4, solver='ee'): - """Reset and run the simulation. - - model: model container element - data: data container element - simtime: simulation run time - simdt: simulation timestep - plotdt: plotting time step - solver: neuronal solver to use. - - """ - global inited - if not inited: - utils.resetSim([model.path, data.path], simdt, plotdt, simmethod=solver) - inited = True - else: - moose.reinit() - moose.start(simtime) - -def run_clamp(model_dict, clamp, levels, holding=0.0, simtime=100e-3): - """Run either voltage or current clamp for default timing settings - with multiple levels of command input. - - model_dict: dictionary containing the model components - - `vlcamp` - the voltage clamp amplifier - `iclamp` - the current clamp amplifier - `model` - the model container - `data` - the data container - `inject_tab` - table recording membrane - `command_tab` - table recording command input for voltage or current clamp - `vm_tab` - table recording membrane potential - - clamp: string specifying clamp mode, either `voltage` or `current` - - levels: sequence of values for command input levels to be - simulated. - - holding: holding current or voltage - - Returns: - a dict containing the following lists of time series: - - `command` - list of command input time series - `inject` - list of of membrane current (includes injected current) time series - `vm` - list of membrane voltage time series - `t` - list of time points for all of the above - - """ - if clamp == 'voltage': - do_vclamp(model_dict['vclamp'], model_dict['iclamp'], model_dict['pid']) - elif clamp == 'current': - do_iclamp(model_dict['vclamp'], model_dict['iclamp'], model_dict['pid']) - else: - raise Exception('Only allowed clamp options are `voltage` and `current`') - cvec = [] - ivec = [] - vvec = [] - gvec = [] - tvec = [] - for level in levels: - model_dict['command'].level[0] = level - model_dict['command'].baseLevel = holding - print 'Running %s with holding=%g, level=%g' % (clamp, holding, model_dict['command'].level[0]) - run_sim(model_dict['model'], model_dict['data'], simtime) - ivec.append(np.asarray(model_dict['inject_tab'].vector)) - cvec.append(np.asarray(model_dict['command_tab'].vector)) - vvec.append(np.asarray(model_dict['vm_tab'].vector)) - gvec.append(np.asarray(model_dict['gk_tab'].vector)) - tvec.append(np.linspace(0, simtime, len(vvec[-1]))) - return {'command': cvec, - 'inject': ivec, - 'vm': vvec, - 'gk': gvec, - 't': tvec} - - - -if __name__ == '__main__': - mdict = setup_model() - current_levels = (-0.3e-8, 0.1e-8, 0.3e-8, 0.5e-8) - iclamp_data = run_clamp(mdict, 'current', current_levels) - voltage_levels = (-30e-3, -10e-3, 10e-3, 30e-3) - vclamp_data = run_clamp(mdict, 'voltage', voltage_levels, holding=-60e-3) - colors = ('r', 'g', 'b', 'k') - # Plot current clamp data - ifigure = plt.figure(1) - ifigure.suptitle('Current clamp') - vax = ifigure.add_subplot(2,2,1) - vax.set_title('Vm') - iax = ifigure.add_subplot(2,2,2) - iax.set_title('Injected current') - cax = ifigure.add_subplot(2,2,3) - cax.set_title('Command') - ivax = ifigure.add_subplot(2,2,4) - for ii in range(len(current_levels)): - t = iclamp_data['t'][ii] - vax.plot(t, iclamp_data['vm'][ii], color=colors[ii % len(colors)]) - iax.plot(t, iclamp_data['inject'][ii], color=colors[ii % len(colors)]) - cax.plot(t, iclamp_data['command'][ii], color=colors[ii % len(colors)]) - ivax.plot(t, iclamp_data['gk'][ii], color=colors[ii% len(colors)]) - # Plot voltage clamp data - vfigure = plt.figure(2) - vfigure.suptitle('Voltage clamp') - vax = vfigure.add_subplot(2,2,1) - vax.set_title('Vm') - iax = vfigure.add_subplot(2,2,2) - iax.set_title('Injected current') - cax = vfigure.add_subplot(2,2,3) - cax.set_title('Command') - ivax = vfigure.add_subplot(2,2,4) - # iv = [] - for ii in range(len(voltage_levels)): - t = vclamp_data['t'][ii] - vax.plot(t, vclamp_data['vm'][ii], color=colors[ii % len(colors)]) - iax.plot(t, vclamp_data['inject'][ii], color=colors[ii % len(colors)]) - cax.plot(t, vclamp_data['command'][ii], color=colors[ii% len(colors)]) - ivax.plot(t, vclamp_data['gk'][ii], color=colors[ii% len(colors)]) - # Select the i and v at midpoint - # mid = max(vclamp_data['vm'][ii]) + 0.5 * min(vclamp_data['vm'][ii]) - # sindices = np.argsort(vclamp_data['vm'][ii]) - # sorted_vm = np.sort(vclamp_data['vm'][ii]) - # mididx = np.searchsorted(sorted_vm, mid) - # mididx = sindices[mididx] - # iv.append((vclamp_data['inject'][ii][mididx], vclamp_data['vm'][ii][mididx])) - # iv = np.array(iv) - # ivax.plot(iv[:,0], iv[:,1], 'ko-') - - plt.show() - -# -# traub_naf.py ends here diff --git a/examples/snippets/tweakingParameters.py b/examples/snippets/tweakingParameters.py deleted file mode 100644 index 2f7a2a5..0000000 --- a/examples/snippets/tweakingParameters.py +++ /dev/null @@ -1,75 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import moose -import pylab -import numpy - -def main(): - """ - This example illustrates parameter tweaking. It uses a kinetic model - for a relaxation oscillator, defined in kkit format. - We use the gsl solver here. - The model looks like this:: - - _________ - | | - V | - M-----Enzyme---->M* All in compartment A - |\ /| ^ - | \___basal___/ | - | | - endo | - | exo - | _______ | - | | \ | - V V \ | - M-----Enzyme---->M* All in compartment B - \ /| - \___basal___/ - - - The way it works: We set the run off for a few seconds with the original - model parameters. This version oscillates. Then we double the endo - and exo forward rates and run it further to show that the period becomes - nearly twice as fast. Then we restore endo and exo, and instead double - the initial amounts of M. We run it further again to see what happens. - This model takes several seconds to run. - """ - mfile = '../genesis/OSC_Cspace.g' - runtime = 4000.0 - modelId = moose.loadModel( mfile, 'model', 'gsl' ) - - moose.reinit() - moose.start( runtime ) - - # Here begins the parameter tweaking. - # Now we double the rates of the endo and exo reactions. - endo = moose.element( '/model/kinetics/endo' ) - endo.Kf *= 2.0 - exo = moose.element( '/model/kinetics/exo' ) - exo.Kf *= 2.0 - moose.start( runtime ) # run it again - - # Now we restore rates, but double the total amount of M. - endo.Kf /= 2.0 - exo.Kf /= 2.0 - M = moose.element( '/model/kinetics/A/M' ) - M.conc += M.concInit # concInit was the starting concentration. - moose.start( runtime ) # run it again - - # Now plot the whole lot. - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - pylab.plot( x.vector, label=x.name ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/snippets/twocells.py b/examples/snippets/twocells.py deleted file mode 100644 index f3ce5a1..0000000 --- a/examples/snippets/twocells.py +++ /dev/null @@ -1,159 +0,0 @@ -# twocells.py --- -# -# Filename: twocells.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sat Aug 11 14:30:21 2012 (+0530) -# Version: -# Last-Updated: Sun Aug 12 15:45:38 2012 (+0530) -# By: subha -# Update #: 521 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# A demo to create a network of single compartmental neurons connected -# via alpha synapses. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""This script demonstrates the use of SynChan class to setup synaptic -connection between two single-compartmental Hodgkin-Huxley type -neurons.""" -import sys -sys.path.append('../../python') -import os -import numpy as np -import matplotlib.pyplot as plt - -import moose -from ionchannel import create_1comp_neuron - -def create_model(): - """Create two single compartmental neurons, neuron_A is the - presynaptic neuron and neuron_B is the postsynaptic neuron. - - 1. The presynaptic cell's Vm is monitored by a SpikeGen - object. Whenever the Vm crosses the threshold of the spikegen, it - sends out a spike event message. - - 2. This is event message is received by a SynHandler, which - passes the event as activation parameter to a SynChan object. - - 3. The SynChan, which is connected to the postsynaptic neuron - as a channel, updates its conductance based on the activation - parameter. - - 4. The change in conductance due to a spike may evoke an - action potential in the post synaptic neuron. - - """ - model = moose.Neutral('/model') - nrn_a = create_1comp_neuron('/model/neuron_A')[0] - nrn_b = create_1comp_neuron('/model/neuron_B')[0] - #: SynChan for post synaptic neuron - synchan = moose.SynChan('/model/neuron_B/synchan') - synchan.Gbar = 1e-8 - synchan.tau1 = 2e-3 - synchan.tau2 = 2e-3 - msg = moose.connect(nrn_b, 'channel', synchan, 'channel') - #: Create SynHandler to handle spike event input and set the - #: activation input of synchan - synhandler = moose.SimpleSynHandler('/model/neuron_B/synhandler') - synhandler.synapse.num = 1 - synhandler.synapse[0].delay = 5e-3 - moose.connect(synhandler, 'activationOut', synchan, 'activation') - #: SpikeGen detects when presynaptic Vm crosses threshold and - #: sends out a spike event - spikegen = moose.SpikeGen('/model/neuron_A/spikegen') - spikegen.threshold = 0.0 - msg = moose.connect(nrn_a, 'VmOut', spikegen, 'Vm') - msg = moose.connect(spikegen, 'spikeOut', synhandler.synapse[0], - 'addSpike') - return {'presynaptic': nrn_a, 'postsynaptic': nrn_b, 'spikegen': - spikegen, 'synchan': synchan, 'synhandler': synhandler} - -def setup_experiment(presynaptic, postsynaptic, synchan): - """Setup step current stimulation of presynaptic neuron. Also setup - recording of pre and postsynaptic Vm, Gk of synchan. - - """ - pulse = moose.PulseGen('/model/pulse') - pulse.level[0] = 1e-9 - pulse.delay[0] = 0.02 # disable the pulsegen - pulse.width[0] = 40e-3 - pulse.delay[1] = 1e9 - moose.connect(pulse, 'output', presynaptic, 'injectMsg') - data = moose.Neutral('/data') - vm_a = moose.Table('/data/Vm_pre') - moose.connect(vm_a, 'requestOut', presynaptic, 'getVm') - vm_b = moose.Table('/data/Vm_post') - moose.connect(vm_b, 'requestOut', postsynaptic, 'getVm') - gksyn_b = moose.Table('/data/Gk_syn') - moose.connect(gksyn_b, 'requestOut', synchan, 'getGk') - pulsetable = moose.Table('/data/pulse') - pulsetable.connect('requestOut', pulse, 'getOutputValue') - return { 'stimulus': pulsetable, - 'Vm_pre': vm_a, - 'Vm_post': vm_b, - 'Gk_syn': gksyn_b - } - -if __name__ == '__main__': - simtime = 0.1 - simdt = 0.25e-5 - plotdt = 0.25e-3 - netinfo = create_model() - expinfo = setup_experiment(netinfo['presynaptic'], - netinfo['postsynaptic'], - netinfo['synchan']) - vm_a = expinfo['Vm_pre'] - vm_b = expinfo['Vm_post'] - gksyn_b = expinfo['Gk_syn'] - for ii in range(10): - moose.setClock(ii, simdt) - moose.setClock(18, plotdt) - moose.reinit() - moose.start(simtime) - plt.subplot(211) - plt.plot(vm_a.vector*1e3, color='b', label='presynaptic Vm (mV)') - plt.plot(vm_b.vector*1e3, color='g', label='postsynaptic Vm (mV)') - plt.plot(expinfo['stimulus'].vector * 1e9, color='r', label='injected current (nA)') - plt.legend() - plt.subplot(212) - plt.plot(expinfo['Gk_syn'].vector*1e9, color='orange', label='Gk_synapse (nS)') - plt.legend() - plt.tight_layout() - plt.show() - - -# -# twocells.py ends here diff --git a/examples/snippets/vclamp.py b/examples/snippets/vclamp.py deleted file mode 100644 index 71f6067..0000000 --- a/examples/snippets/vclamp.py +++ /dev/null @@ -1,132 +0,0 @@ -# vclamp.py --- -# -# Filename: vclamp.py -# Description: -# Author:Subhasis Ray -# Maintainer: -# Created: Sat Feb 2 19:16:54 2013 (+0530) -# Version: -# Last-Updated: Tue Jun 11 17:35:20 2013 (+0530) -# By: subha -# Update #: 178 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import sys -sys.path.append('../../python') -import moose -sys.path.append('../squid') -from squid import SquidAxon -from pylab import * - -def vclamp_demo(simtime=50.0, dt=1e-2): - ## It is good practice to modularize test elements inside a - ## container - container = moose.Neutral('/vClampDemo') - ## Create a compartment with properties of a squid giant axon - comp = SquidAxon('/vClampDemo/axon') - # Create and setup the voltage clamp object - clamp = moose.VClamp('/vClampDemo/vclamp') - ## The defaults should work fine - # clamp.mode = 2 - # clamp.tau = 10*dt - # clamp.ti = dt - # clamp.td = 0 - # clamp.gain = comp.Cm / dt - ## Setup command voltage time course - command = moose.PulseGen('/vClampDemo/command') - command.delay[0] = 10.0 - command.width[0] = 20.0 - command.level[0] = 50.0 - command.delay[1] = 1e9 - moose.connect(command, 'output', clamp, 'commandIn') - ## Connect the Voltage Clamp to the compartemnt - moose.connect(clamp, 'currentOut', comp, 'injectMsg') - moose.connect(comp, 'VmOut', clamp, 'sensedIn') - ## setup stimulus recroding - this is the command pulse - stimtab = moose.Table('/vClampDemo/vclamp_command') - moose.connect(stimtab, 'requestOut', command, 'getOutputValue') - ## Set up Vm recording - vmtab = moose.Table('/vClampDemo/vclamp_Vm') - moose.connect(vmtab, 'requestOut', comp, 'getVm') - ## setup command potential recording - this is the filtered input - ## to PID controller - commandtab = moose.Table('/vClampDemo/vclamp_filteredcommand') - moose.connect(commandtab, 'requestOut', clamp, 'getCommand') - ## setup current recording - Imtab = moose.Table('/vClampDemo/vclamp_inject') - moose.connect(Imtab, 'requestOut', clamp, 'getCurrent') - # Scheduling - moose.setClock(0, dt) - moose.setClock(1, dt) - moose.setClock(2, dt) - moose.setClock(3, dt) - moose.useClock(0, '%s/##[TYPE=Compartment]' % (container.path), 'init') - moose.useClock(0, '%s/##[TYPE=PulseGen]' % (container.path), 'process') - moose.useClock(1, '%s/##[TYPE=Compartment]' % (container.path), 'process') - moose.useClock(2, '%s/##[TYPE=HHChannel]' % (container.path), 'process') - moose.useClock(2, '%s/##[TYPE=VClamp]' % (container.path), 'process') - moose.useClock(3, '%s/##[TYPE=Table]' % (container.path), 'process') - moose.reinit() - print 'RC filter in VClamp:: tau:', clamp.tau - print 'PID controller in VClamp:: ti:', clamp.ti, 'td:', clamp.td, 'gain:', clamp.gain - moose.start(simtime) - print 'Finished simulation for %g seconds' % (simtime) - tseries = linspace(0, simtime, len(vmtab.vector)) - subplot(211) - title('Membrane potential and clamp voltage') - plot(tseries, vmtab.vector, 'g-', label='Vm (mV)') - plot(tseries, commandtab.vector, 'b-', label='Filtered command (mV)') - plot(tseries, stimtab.vector, 'r-', label='Command (mV)') - xlabel('Time (ms)') - ylabel('Voltage (mV)') - legend() - # print len(commandtab.vector) - subplot(212) - title('Current through clamp circuit') - # plot(tseries, stimtab.vector, label='stimulus (uA)') - plot(tseries, Imtab.vector, label='injected current (uA)') - xlabel('Time (ms)') - ylabel('Current (uA)') - legend() - show() - -if __name__ == '__main__': - vclamp_demo() - - -# -# vclamp.py ends here diff --git a/examples/snippets/vectors.py b/examples/snippets/vectors.py deleted file mode 100644 index 5ecec26..0000000 --- a/examples/snippets/vectors.py +++ /dev/null @@ -1,62 +0,0 @@ -# vectors.py --- -# -# Filename: vectors.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Tue May 6 12:49:53 2014 (+0530) -# Version: -# Last-Updated: -# By: -# Update #: 0 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. - -# -# - -# Code: - -"""Demonstrates how to use vectors of moose elements""" -import sys -sys.path.append('../../python') -import moose -import pylab as pl -import numpy as np -comps = moose.vec(path='mycomps', n=2800, dtype='Compartment') -comps.Em = np.random.sample(len(comps)) -pl.plot(comps.Em) -pl.show() - - -# -# vectors.py ends here diff --git a/examples/snippets/wildcard.py b/examples/snippets/wildcard.py deleted file mode 100644 index 6db9225..0000000 --- a/examples/snippets/wildcard.py +++ /dev/null @@ -1,162 +0,0 @@ -# wildcard.py --- -# -# Filename: wildcard.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Tue Jun 4 11:20:57 2013 (+0530) -# Version: -# Last-Updated: Tue Jun 4 12:27:42 2013 (+0530) -# By: subha -# Update #: 143 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""Explore the wildcard search in moose models""" - -import moose - -def wildcard_setup(): - a = moose.Neutral('/alfa') - b = moose.Compartment('/alfa/bravo') - c = moose.HHChannel('/alfa/bravo/charlie') - f = moose.HHChannel2D('/alfa/bravo/foxtrot') - e = moose.Neutral('/alfa/echo') - d = moose.DiffAmp('/alfa/echo/delta') - p = moose.PulseGen('/alfa/echo/papa') - e1 = moose.Pool('/alfa/bravo/charlie/echo') - g = moose.HHChannel('%s/golf' % (e1.path)) - f1 = moose.Neutral('/alfa/bravo/foxtail') - c1 = moose.Neutral('/alfa/bravo/charlee') - b.Rm = 2.0e6 - c.Gbar = 1e-9 - f.Gbar = 0.5e-6 - p.delay[0] = 10e-3 - d.gain = 3.0 - g.Gbar = 1e-6 - -def wildcard_test(): - # TYPE matches the type of the object - wildcard = '/alfa/bravo/#[TYPE=HHChannel2D]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # ISA matches elements of specified type or its subclasses - wildcard = '/alfa/bravo/#[ISA=HHChannel]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # HHChannel and HHChannel2D are subclasses of ChanBase - wildcard = '/alfa/bravo/#[ISA=ChanBase]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # HHChannel and HHChannel2D are subclasses of ChanBase - wildcard = '/alfa/bravo/#[TYPE=ChanBase]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # `#` can be used only once and matches all subsequent characters in name - wildcard = '/alfa/bravo/charl?e' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # `?` can be used any number of times but substitutes a single character - wildcard = '/alfa/bravo/fox#' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # Specify `##` to search through all levels below the path prefixing it - wildcard = '/##[ISA=ChanBase]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # You can even select by field - but if the field does not exist, - # this will produce a lot of harmless error messages in debug - # builds. - wildcard = '/##[FIELD(name)=echo]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # == and = are same - wildcard = '/##[FIELD(name)==echo]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path - - # Comparison operators other than == are allowed for floating point number fields - wildcard = '/alfa/##[FIELD(Gbar)<1e-6]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path, moose.element(element).Gbar - - # Equality is not defined for floating point fields - wildcard = '/alfa/##[FIELD(Gbar)=1e-6]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path, moose.element(element).Gbar - - # Another operator is != - wildcard = '/alfa/bravo/#[TYPE!=HHChannel]' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path, ', class:', element.className - - # With `##` you can get a listing of all elements under a path if - # you don't use a condition - wildcard = '/alfa/##' - print '\nElements Matching:', wildcard - for element in moose.wildcardFind(wildcard): - print '\t', element.path, ', class:', element.className - - -if __name__ == '__main__': - wildcard_setup() - wildcard_test() - - - - -# -# wildcard.py ends here diff --git a/examples/squid/.gitignore b/examples/squid/.gitignore deleted file mode 100644 index 773a6df..0000000 --- a/examples/squid/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.dat diff --git a/examples/squid/README.txt b/examples/squid/README.txt deleted file mode 100644 index 221cc0a..0000000 --- a/examples/squid/README.txt +++ /dev/null @@ -1,14 +0,0 @@ -This is the port of Hodgkin-Huxley Squid Giant Axon demo from -GENESIS. Run `python squid_demo.py` to start the GUI. Open help.org in -a text editor or help.html in a web-browser (or click `Help` button in -the GUI) to read the tutorial. - -The biophysical model is in `squid.py`. The electronics setup is in -`electronics.py`. The combination of squid axon model and the -electronics is in squid_setup.py. All these can be run without any GUI -dependency. To run squid_demo.py you need PyQt and matplotlib with Qt -backend installed. - -Author: Subhasis Ray -Place: NCBS, Bangalore, INDIA -Date: 21 September 2012 diff --git a/examples/squid/channeleditor.py b/examples/squid/channeleditor.py deleted file mode 100644 index ead9041..0000000 --- a/examples/squid/channeleditor.py +++ /dev/null @@ -1,147 +0,0 @@ -# channeleditor.py --- -# -# Filename: channeleditor.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Jul 18 19:06:39 2012 (+0530) -# Version: -# Last-Updated: Wed Aug 8 16:36:10 2012 (+0530) -# By: Subhasis Ray -# Update #: 179 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# A widget for editing Hodgkin-Huxley type ion channels. -# -# - -# Change log: -# -# -# - -# Code: - -import sys -from PyQt4 import QtGui, QtCore -from numpy import * -import ast - -class GateEditor(QtGui.QWidget): - """Utility to edit gate equations. - - It provides two line edits to enter the alpha and beta equations - directly. - """ - def __init__(self, *args): - QtGui.QWidget.__init__(self, *args) - self.useVButton = QtGui.QRadioButton('Use V', self) - self.useVButton.setChecked(True) - self.useCaButton = QtGui.QRadioButton('Use Ca', self) - self.useCaButton.setChecked(False) - self.symbolGroup = QtGui.QGroupBox(self) - layout = QtGui.QHBoxLayout() - # self.symbolGroup.setExclusive(True) - layout.addWidget(self.useVButton) - layout.addWidget(self.useCaButton) - self.symbolGroup.setLayout(layout) - self.inputPanel = QtGui.QFrame(self) - self.minVLabel = QtGui.QLabel('Minimum', self) - self.maxVLabel = QtGui.QLabel('Maximum', self) - self.divsVLabel = QtGui.QLabel('Number of divisions', self) - self.minVEdit = QtGui.QLineEdit(self) - self.maxVEdit = QtGui.QLineEdit(self) - self.divsVEdit = QtGui.QLineEdit(self) - self.equation = '(A + B * V) / (C + exp((V + D)/F))' - self.alphaText = u'Equation for forward rate \u03B1 ' - self.betaText = u'Equation for backward rate \u03B2 ' - self.minfText = u'Equation for m\u221E ' - self.taumText = u'Equation for \u03C4m ' - self.alphaLabel = QtGui.QLabel(self.minfText, self) - self.betaLabel = QtGui.QLabel(self.taumText, self) - self.alphaEdit = QtGui.QLineEdit(self) - self.betaEdit = QtGui.QLineEdit(self) - self.formCombo = QtGui.QComboBox(self) - self.formCombo.addItem(u'm\u221E - \u03C4m') - self.formCombo.addItem(u'\u03B1 - \u03B2') - self.okButton = QtGui.QPushButton('OK', self) - layout = QtGui.QGridLayout(self.inputPanel) - layout.addWidget(self.minVLabel, 0, 0) - layout.addWidget(self.minVEdit, 0, 1) - layout.addWidget(self.maxVLabel, 0, 3) - layout.addWidget(self.maxVEdit, 0, 4) - layout.addWidget(self.divsVLabel, 0, 6) - layout.addWidget(self.divsVEdit, 0, 7) - layout.addWidget(self.formCombo, 1, 0, 1, 4) - layout.addWidget(self.alphaLabel, 2, 0, 1, 2) - layout.addWidget(self.alphaEdit, 2, 2, 1, 7) - layout.addWidget(self.betaLabel, 3, 0, 1, 2) - layout.addWidget(self.betaEdit, 3, 2, 1, 7) - self.inputPanel.setLayout(layout) - layout = QtGui.QVBoxLayout(self) - layout.addWidget(self.symbolGroup) - layout.addWidget(self.inputPanel) - layout.addWidget(self.okButton) - self.setLayout(layout) - self.connect(self.okButton, QtCore.SIGNAL('clicked()'), self.evalGateExpressions) - # self.connect(self.useVButton, QtCore.SIGNAL('toggled(bool)'), self.toggleInputPanel) - self.connect(self.formCombo, QtCore.SIGNAL('currentIndexChanged(int)'), self.switchEquationForm) - - def toggleInputPanel(self, on): - self.inputPanel.setVisible(on) - self.adjustSize() - - def switchEquationForm(self, index): - if index == 1: - self.alphaLabel.setText(self.alphaText) - self.betaLabel.setText(self.betaText) - elif index == 0: - self.alphaLabel.setText(self.minfText) - self.betaLabel.setText(self.taumText) - - def evalGateExpressions(self): - """Evaluate the expressions supplied by user to obtain the - arrays for the gate tables.""" - vmin = float(str(self.minVEdit.text())) - vmax = float(str(self.maxVEdit.text())) - vdivs = float(str(self.divsVEdit.text())) - vrange = linspace(vmin, vmax, vdivs+1) - a_expr = str(self.alphaEdit.text()) - b_expr = str(self.betaEdit.text()) - a = zeros(vdivs+1) - b = zeros(vdivs+1) - if self.useVButton.isChecked(): - symbol = 'V' - elif self.useCaButton.isChecked(): - symbol = 'Ca' - code = """for ii in range(len(vrange)): - %s = vrange[ii] - a[ii] = %s - b[ii] = %s - """ % (symbol, a_expr, b_expr) - print code - tree = compile(code, '', 'exec') - exec(tree) - print a, b - return {'min': vmin, - 'max': vmax, - 'divs': vdivs, - 'a': a, - 'b': b} - - # 0.5 * (1-exp(-(V-10)/10)) -if __name__ == '__main__': - app = QtGui.QApplication(sys.argv) - QtGui.qApp = app - editor = GateEditor() - editor.show() - sys.exit(app.exec_()) - -# -# channeleditor.py ends here diff --git a/examples/squid/electronics.py b/examples/squid/electronics.py deleted file mode 100644 index 2f356e3..0000000 --- a/examples/squid/electronics.py +++ /dev/null @@ -1,116 +0,0 @@ -# electronics.py --- -# -# Filename: electronics.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Feb 22 00:53:38 2012 (+0530) -# Version: -# Last-Updated: Tue Jul 10 10:28:40 2012 (+0530) -# By: subha -# Update #: 221 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# 2012-02-22 23:22:30 (+0530) Subha - the circuitry put in a class. -# - -# Code: - -import numpy -import moose - -class ClampCircuit(moose.Neutral): - """Container for a Voltage-Clamp/Current clamp circuit.""" - defaults = { - 'level1': 25.0, - 'width1': 50.0, - 'delay1': 2.0, - 'delay2': 1e6, - 'trigMode': 0, - 'delay3': 1e9 - } - def __init__(self, path, compartment): - moose.Neutral.__init__(self, path) - self.pulsegen = moose.PulseGen(path+"/pulse") # holding voltage/current generator - self.pulsegen.count = 2 - self.pulsegen.firstLevel = 25.0 - self.pulsegen.firstWidth = 50.0 - self.pulsegen.firstDelay = 2.0 - self.pulsegen.secondDelay = 0.0 - self.pulsegen.trigMode = 2 - self.gate = moose.PulseGen(path+"/gate") # holding voltage/current generator - self.gate.level[0] = 1.0 - self.gate.delay[0] = 0.0 - self.gate.width[0] = 1e9 - moose.connect(self.gate, 'output', self.pulsegen, 'input') - self.lowpass = moose.RC(path+"/lowpass") # lowpass filter - self.lowpass.R = 1.0 - self.lowpass.C = 0.03 - self.vclamp = moose.DiffAmp(path+"/vclamp") - self.vclamp.gain = 0.0 - self.vclamp.saturation = 1e10 - self.iclamp = moose.DiffAmp(path+"/iclamp") - self.iclamp.gain = 0.0 - self.iclamp.saturation = 1e10 - self.pid = moose.PIDController(path+"/pid") - self.pid.gain = 0.5 - self.pid.tauI = 0.02 - self.pid.tauD = 0.005 - self.pid.saturation = 1e10 - # Connect current clamp circuitry - moose.connect(self.pulsegen, "output", self.iclamp, "plusIn") - moose.connect(self.iclamp, "output", compartment, "injectMsg") - # Connect voltage clamp circuitry - moose.connect(self.pulsegen, "output", self.lowpass, "injectIn") - moose.connect(self.lowpass, "output", self.vclamp, "plusIn") - moose.connect(self.vclamp, "output", self.pid, "commandIn") - moose.connect(compartment, "VmOut", self.pid, "sensedIn") - moose.connect(self.pid, "output", compartment, "injectMsg") - current_table = moose.Table("/data/Im") - moose.connect(current_table, "requestOut", compartment, "getIm") - - def configure_pulses(self, baseLevel=0.0, firstLevel=0.1, firstDelay=5.0, firstWidth=40.0, secondLevel=0.0, secondDelay=1e6, secondWidth=0.0, singlePulse=True): - """Set up the pulse generator.""" - self.pulsegen.baseLevel = baseLevel - self.pulsegen.firstLevel = firstLevel - self.pulsegen.firstWidth = firstWidth - self.pulsegen.firstDelay = firstDelay - self.pulsegen.secondLevel = secondLevel - self.pulsegen.secondDelay = secondDelay - self.pulsegen.secondWidth = secondWidth - if singlePulse: - self.pulsegen.trigMode = 1 - else: - self.pulsegen.trigMode = 0 - - def do_voltage_clamp(self): - """Switch to voltage clamp circuitry. After this the simdt may - need to be changed for correct performance.""" - self.vclamp.gain = 1.0 - self.iclamp.gain = 0.0 - self.pid.gain = 0.5 - self.pid.tauD = 0.005 - self.pid.tauI = 0.02 - - def do_current_clamp(self): - """Switch to current clamp circuitry. After this the simdt may - need to be changed for correct performance.""" - self.iclamp.gain = 1.0 - self.vclamp.gain = 0.0 - self.pid.gain = 0.0 - - -# -# electronics.py ends here diff --git a/examples/squid/help.html b/examples/squid/help.html deleted file mode 100644 index 617a710..0000000 --- a/examples/squid/help.html +++ /dev/null @@ -1,587 +0,0 @@ - - - - -Simulation of squid axon with Hodgkin-Huxley ion channels - - - - - - - - - - - - - -

- -
- -
-

Simulation of squid axon with Hodgkin-Huxley ion channels

- - - - -
-

1 Navigation: navigation toolbar is located at bottom of the plots

-
- -

This uses the built-in navigation toolbar of matplotlib [click to - open in your default web-browser]. -

- -
-

./images/navigationtoolbar.jpg

-

Navigation toolbar for plots

-
- -

- You can hover the mouse cursor on any icon on this toolbar to get a - brief tool-tip. To summarize: -

- -
- -
-

1.1 Zoom

-
- -
    -
  1. Zoom-in: -
      -
    1. Zoom-in both X and Y axes: -
        -
      • click on the subplot you want to zoom and scroll mouse - wheel down, or -
      • -
      • click magnifier icon and press left mouse button on the - subplot and drag. This will zoom the subplot to the - rectangle you cover by this. -
      • -
      • click compass icon and press right mouse button on the plot - and drag towards top-right. -
      • -
      - -
    2. -
    3. Zoom-in along X-axis: -
        -
      • click compass icon and press right mouse button on the plot - and drag towards right. -
      • -
      - -
    4. -
    5. Zoom-in along Y-axis: -
        -
      • click compass icon and press right mouse button on the plot - and drag upwards. -
      • -
      - -
    6. -
    - -
  2. -
  3. Zoom-out: -
      -
    1. Zoom-out both X and Y axes: -
        -
      • click on the subplot you want to zoom and scroll mouse wheel up, or -
      • -
      • click magnifier icon and press right mouse button on the - plot and drag. The whole visible axis area will fit into - the rectangle you cover by this. -
      • -
      • click compass icon and press right mouse button on the plot - and drag towards bottom-left. -
      • -
      - -
    2. -
    3. Zoom-out whole plot window along X-axis: -
        -
      • click compass icon and press right mouse button on the plot - and drag towards left. -
      • -
      - -
    4. -
    5. Zoom-out Y-axis: -
        -
      • click compass icon and press right mouse button on the plot - and drag downwards. -
      • -
      - -
    6. -
    - -
  4. -
  5. Go forward/backward in zoom stack: - click right/left arrow icon. -
  6. -
- -
- -
- -
-

1.2 Pan:

-
- -

click compass-icon and left click-and-drag -

- -
- -
-

1.3 Reset to initial plot state:

-
- -

click home icon. -

- -
- -
-

1.4 Change spacing and position of subplots:

-
- -

click button with four green arrow-heads pointing (this is called - the Subplot-Configuration button). -

- -
- -
-

1.5 Configure axes:

-
- -

click green tick-mark. In the pop-up dialog select the axis you want - to modify and click OK. In the next dialog you can set the range of - X and Y values for the axes and modify several other properties. -

- -
- -
-

1.6 Save plot:

-
- -

click floppy-disk icon. -

-
-
- -
- -
-

2 Rearranging the frames on small screens

-
- -

The default layout of the squid demo may exceed available screen - size on your system. But you can always undock the control panels - and put them one over the other to save screen space. To undock all - panels in one go, click the "Undock all" button in the tool bar. -

-

- To move or float a single panel, click the left mouse button on its - title bar (in the same horizontal line with the expand buttons) of - any of the panels and drag. You can choose to leave it floating or - drop it somewhere (top, left, bottom or right of the plot window) in - the main window to reposition it. You can drop multiple panels in - the same location. Then they will be put as multiple tabs over one - another. -

-

- An undocked panel will be always on top of the main window. If this - is a problem, you can close it by clicking the close button. You can - make it visible again by clicking "Show all" button on the tool bar. -

-
- -
- -
-

3 The SQUID tutorial

-
- -

The following is adapted from the GENESIS squid demo notes with - modifications for MOOSE by Subhasis Ray, September 2012. -

-

- The original header was: -

- -
- -

- SQUID -

-

- An Introductory Tutorial for GENESIS, XODUS, and the HODGKIN-HUXLEY model -

-

- By M. Nelson, Caltech, April 1989 - Modified by D. Beeman, June 1991, Dec 1994 - ­ Modified by E. Vigmond, September 1993 -

- -
- -

- In the process of working through this tutorial, you will learn - something about the Hodgkin-Huxley model. This program may serve as - a good starting point for those of you who plan to work on - single-cell models for a course project. -

- -
- -
-

3.1 The Model

-
- -

For the time being, we are going to simulate a single axon - compartment with active Na and K conductances, as described by Hodgkin - and Huxley for the squid giant axon. In other tutorials we will link - compartments together to form a simple model of an entire neuron with - a soma and dendrites (the Neuron tutorial), model a cable with many - compartments (the cable tutorial), and build neural circuits with - connected neurons (MultiCell and tritonia). For now, we confine - ourselves to a single axon compartment. -

-
- -
- -
-

3.2 Running the Simulation

-
- -

The model has already been initialized with some reasonable - parameter values, so all you have to do to run the simulation is: -

-

- click on the ``Run`` button in the toolbar. -

-

- The simulation which you just observed was for a constant current - pulse, which is shown in the lower left graph panel. The upper left - graph shows the membrane potential. You can see that 3 action - potentials were generated during this 50 msec simulation. Now let's - change the injection current and see what happens. -

-

- At the bottom of the left panel is a widget labeled "Electronics" - and inside it there are two tabs labeled ``Current clamp`` and - ``Voltage clamp``. Select the ``Current clamp`` tab and you will - see a series of labeled text boxes with default values. In order - to change the injection current: -

-

- position the cursor to the right of the last digit in the "First - Pulse Current" field and click in the text box with the left mouse - button. -

-

- Let's change the peak injection current from 0.1 to 1.0. -

-

- type <BACKSPACE> to delete the 0.1 and then type 1.0 -

-

- The value in the dialog field should now be 1.0. -

-

- Now we'll run the simulation again. -

-

- click the "Run" button on the toolbar again. -

-

- There should be a dramatic change in the time-course of the - membrane potential at this higher current injection level. - Experiment with the injection level to see what happens to the - axon at higher injection currents. Also try decreasing the - injection level until an action potential is no longer elicited by - the stimulus. What is the threshold for producing an action - potential in this compartment? -

-

- You may also experiment with trains of short pulses. Set the - "First Pulse Width" dialog field to 1 msec and click on the - "Single Pulse" drop down box and select "Pulse Train". Now vary - "First Onset Delay". What is the minimum interval between action - potentials that you can achieve? -

-
- -
- -
-

3.3 Voltage Clamping

-
- -

You can also perform voltage clamp experiments in this simulation. -

-

- click on the "Voltage clamp" tab header at the bottom of the - control form under "Electronics". -

-

- Again, reasonable default values have been selected , so all you - have to do to run the voltage clamp simulation is: -

-

- click the "Run" button on the control form -

-
- -
- -
-

3.4 Changing Extracellular Concentrations

-
- -

You can alter the extracellular concentrations of the ions through - the "Channels" panel. Any changes in concentration will cause the - reversal potentials to be recalculated. To reset the values back - to the initial ones, just click on the "Restore defaults" button - in the top tool bar. -

-
- -
- -
-

3.5 Controlling Graphs

-
- -

The graph of the clamp current (lower left panel) has gone off - scale. In order to rescale the graph: -

-

- click on the button with green tick mark in the navigation toolbar - at the bottom of the plots. -

-

- A dialog containing drop-down to select the subplot should appear. - Select the "Injection current" and click OK. Another dialog box - will appear with text boxes for `Min` and `Max` values for X-Axis - and Y-Axis. Adjust for Y axis to bring the graph into range and - press "Apply". -

- -

- The top toolbar has an "Overlay plots" button. When it is - checked, any existing plots in the graph will be held and new - simulation results will be overlayed. Try this now. -

-

- Click "Overlay plots" and run the simulation at several values of - the clamp voltage. Do the first run with "Overlay plots" button - unchecked so that all previous graphs are cleared at this - run. Then click this button to checked state and do the subsequent - runs. -

-
- -
- -
-

3.6 State Plots

-
- -

One can learn a great deal by studying plots in which one of the - Hodgkin-Huxley channel activation parameters (the K activation - "n", the Na activation "m", or the Na inactivation "h") is plotted - as a function of the membrane potential, V. (See, for example, - Chapter 5 of "Methods in Neuronal Modeling", by Koch and Segev.) -

-

- In order to view such a plot, click the left mouse button on the - button labeled "State plot" in the top toolbar. The label will - change to "State Plot Visible", and a state plot graph will - appear. Clicking the button again will hide the graph. The - default plot is to show the K channel "n" parameter on the y-axis - and the membrane potential on the x-axis. The drop-down menus at - the top of the window allow you to change these defaults. -

-
- -
- -
-

3.7 Channel Blocking

-
- -

In order to explore the effects of blocking one of the channels, - you may click on one of the check boxes in the "Channels" panel - for blocking and unblocking a channel. When a channel is blocked, - its conductance is set to zero. Activation parameters for a - blocked channel are still calculated and may be plotted, but are - relatively meaningless because they will have no effect on the - membrane potential. -

-
- -
- -
-

3.8 Saving Graphs

-
- -

You can save a graph to file by clicking the save button in the - navigation toolbar. In the file dialog you can select from several - formats including PDF, JPEG, PNG and SVG. -

-
- -
- -
-

3.9 Units used in the simulation

-
- -

Units: -

- -- - - - - - - - - - - - - - - -
quantityunit
timemsec
lengthum (microns)
potentialmV
conductancemS (mmho)
resistancekohm
capacitanceuF
specific axial resistancekohm-cm
specific membrane conductancemS/cm2
specific membrane capacitanceuF/cm2
- - -
-
-
-
- -
-

Date: 2012-09-25 17:03:29 IST

-

Author: Subhasis Ray

-

Org version 7.8.11 with Emacs version 23

-Validate XHTML 1.0 - -
- - diff --git a/examples/squid/help.org b/examples/squid/help.org deleted file mode 100644 index 2b47b4e..0000000 --- a/examples/squid/help.org +++ /dev/null @@ -1,242 +0,0 @@ -Simulation of squid axon with Hodgkin-Huxley ion channels - -#+AUTHOR: Subhasis Ray - -* Navigation: navigation toolbar is located at bottom of the plots - This uses the built-in navigation toolbar of [[http://matplotlib.org/users/navigation_toolbar.html][matplotlib]] [click to - open in your default web-browser]. - -#+CAPTION: Navigation toolbar for plots -#+LABEL: fignavigationtoolbar -[[./images/navigationtoolbar.jpg]] - - You can hover the mouse cursor on any icon on this toolbar to get a - brief tool-tip. To summarize: - -** Zoom - 1. Zoom-in: - 1) Zoom-in both X and Y axes: - - click on the subplot you want to zoom and scroll mouse - wheel down, or - - click magnifier icon and press left mouse button on the - subplot and drag. This will zoom the subplot to the - rectangle you cover by this. - - click compass icon and press right mouse button on the plot - and drag towards top-right. - 2) Zoom-in along X-axis: - - click compass icon and press right mouse button on the plot - and drag towards right. - 3) Zoom-in along Y-axis: - - click compass icon and press right mouse button on the plot - and drag upwards. - 2. Zoom-out: - 1) Zoom-out both X and Y axes: - - click on the subplot you want to zoom and scroll mouse wheel up, or - - click magnifier icon and press right mouse button on the - plot and drag. The whole visible axis area will fit into - the rectangle you cover by this. - - click compass icon and press right mouse button on the plot - and drag towards bottom-left. - 2) Zoom-out whole plot window along X-axis: - - click compass icon and press right mouse button on the plot - and drag towards left. - 3) Zoom-out Y-axis: - - click compass icon and press right mouse button on the plot - and drag downwards. - 3. Go forward/backward in zoom stack: - click right/left arrow icon. -** Pan: - click compass-icon and left click-and-drag -** Reset to initial plot state: - click home icon. -** Change spacing and position of subplots: - click button with four green arrow-heads pointing (this is called - the Subplot-Configuration button). -** Configure axes: - click green tick-mark. In the pop-up dialog select the axis you want - to modify and click OK. In the next dialog you can set the range of - X and Y values for the axes and modify several other properties. -** Save plot: - click floppy-disk icon. - -* Rearranging the frames on small screens - The default layout of the squid demo may exceed available screen - size on your system. But you can always undock the control panels - and put them one over the other to save screen space. To undock all - panels in one go, click the "Undock all" button in the tool bar. - - To move or float a single panel, click the left mouse button on its - title bar (in the same horizontal line with the expand buttons) of - any of the panels and drag. You can choose to leave it floating or - drop it somewhere (top, left, bottom or right of the plot window) in - the main window to reposition it. You can drop multiple panels in - the same location. Then they will be put as multiple tabs over one - another. - - An undocked panel will be always on top of the main window. If this - is a problem, you can close it by clicking the close button. You can - make it visible again by clicking "Show all" button on the tool bar. - -* The SQUID tutorial - The following is adapted from the GENESIS squid demo notes with - modifications for MOOSE by Subhasis Ray, September 2012. - - The original header was: - - ----------------------------------------------------------------------------- - - SQUID - - An Introductory Tutorial for GENESIS, XODUS, and the HODGKIN-HUXLEY model - - By M. Nelson, Caltech, April 1989 - Modified by D. Beeman, June 1991, Dec 1994 - \- Modified by E. Vigmond, September 1993 - - ----------------------------------------------------------------------------- - - In the process of working through this tutorial, you will learn - something about the Hodgkin-Huxley model. This program may serve as - a good starting point for those of you who plan to work on - single-cell models for a course project. - -** The Model - For the time being, we are going to simulate a single axon - compartment with active Na and K conductances, as described by Hodgkin - and Huxley for the squid giant axon. In other tutorials we will link - compartments together to form a simple model of an entire neuron with - a soma and dendrites (the Neuron tutorial), model a cable with many - compartments (the cable tutorial), and build neural circuits with - connected neurons (MultiCell and tritonia). For now, we confine - ourselves to a single axon compartment. - -** Running the Simulation - The model has already been initialized with some reasonable - parameter values, so all you have to do to run the simulation is: - - click on the ``Run`` button in the toolbar. - - The simulation which you just observed was for a constant current - pulse, which is shown in the lower left graph panel. The upper left - graph shows the membrane potential. You can see that 3 action - potentials were generated during this 50 msec simulation. Now let's - change the injection current and see what happens. - - At the bottom of the left panel is a widget labeled "Electronics" - and inside it there are two tabs labeled ``Current clamp`` and - ``Voltage clamp``. Select the ``Current clamp`` tab and you will - see a series of labeled text boxes with default values. In order - to change the injection current: - - position the cursor to the right of the last digit in the "First - Pulse Current" field and click in the text box with the left mouse - button. - - Let's change the peak injection current from 0.1 to 1.0. - - type to delete the 0.1 and then type 1.0 - - The value in the dialog field should now be 1.0. - - Now we'll run the simulation again. - - click the "Run" button on the toolbar again. - - There should be a dramatic change in the time-course of the - membrane potential at this higher current injection level. - Experiment with the injection level to see what happens to the - axon at higher injection currents. Also try decreasing the - injection level until an action potential is no longer elicited by - the stimulus. What is the threshold for producing an action - potential in this compartment? - - You may also experiment with trains of short pulses. Set the - "First Pulse Width" dialog field to 1 msec and click on the - "Single Pulse" drop down box and select "Pulse Train". Now vary - "First Onset Delay". What is the minimum interval between action - potentials that you can achieve? - -** Voltage Clamping - You can also perform voltage clamp experiments in this simulation. - - click on the "Voltage clamp" tab header at the bottom of the - control form under "Electronics". - - Again, reasonable default values have been selected , so all you - have to do to run the voltage clamp simulation is: - - click the "Run" button on the control form - -** Changing Extracellular Concentrations - You can alter the extracellular concentrations of the ions through - the "Channels" panel. Any changes in concentration will cause the - reversal potentials to be recalculated. To reset the values back - to the initial ones, just click on the "Restore defaults" button - in the top tool bar. - -** Controlling Graphs - The graph of the clamp current (lower left panel) has gone off - scale. In order to rescale the graph: - - click on the button with green tick mark in the navigation toolbar - at the bottom of the plots. - - A dialog containing drop-down to select the subplot should appear. - Select the "Injection current" and click OK. Another dialog box - will appear with text boxes for `Min` and `Max` values for X-Axis - and Y-Axis. Adjust for Y axis to bring the graph into range and - press "Apply". - - - The top toolbar has an "Overlay plots" button. When it is - checked, any existing plots in the graph will be held and new - simulation results will be overlayed. Try this now. - - Click "Overlay plots" and run the simulation at several values of - the clamp voltage. Do the first run with "Overlay plots" button - unchecked so that all previous graphs are cleared at this - run. Then click this button to checked state and do the subsequent - runs. - -** State Plots - One can learn a great deal by studying plots in which one of the - Hodgkin-Huxley channel activation parameters (the K activation - "n", the Na activation "m", or the Na inactivation "h") is plotted - as a function of the membrane potential, V. (See, for example, - Chapter 5 of "Methods in Neuronal Modeling", by Koch and Segev.) - - In order to view such a plot, click the left mouse button on the - button labeled "State plot" in the top toolbar. The label will - change to "State Plot Visible", and a state plot graph will - appear. Clicking the button again will hide the graph. The - default plot is to show the K channel "n" parameter on the y-axis - and the membrane potential on the x-axis. The drop-down menus at - the top of the window allow you to change these defaults. - -** Channel Blocking - In order to explore the effects of blocking one of the channels, - you may click on one of the check boxes in the "Channels" panel - for blocking and unblocking a channel. When a channel is blocked, - its conductance is set to zero. Activation parameters for a - blocked channel are still calculated and may be plotted, but are - relatively meaningless because they will have no effect on the - membrane potential. - -** Saving Graphs - You can save a graph to file by clicking the save button in the - navigation toolbar. In the file dialog you can select from several - formats including PDF, JPEG, PNG and SVG. - -** Units used in the simulation - Units: - | quantity | unit | - |-------------------------------+--------------| - | time | msec | - | length | um (microns) | - | potential | mV | - | conductance | mS (mmho) | - | resistance | kohm | - | capacitance | uF | - | specific axial resistance | kohm-cm | - | specific membrane conductance | mS/cm^2 | - | specific membrane capacitance | uF/cm^2 | - diff --git a/examples/squid/images/navigationtoolbar.jpg b/examples/squid/images/navigationtoolbar.jpg deleted file mode 100644 index a7ba52a5f5481ce63c8a7eda502fb8c6710755dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11973 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 0: - gate = moose.HHGate(self.path + '/gateX') - elif gate == 'Y' and self.Ypower > 0: - gate = moose.HHGate(self.path + '/gateY') - else: - return False - gate.setupAlpha([params['A_A'], - params['A_B'], - params['A_C'], - params['A_D'], - params['A_F'], - params['B_A'], - params['B_B'], - params['B_C'], - params['B_D'], - params['B_F'], - vdivs, vmin, vmax]) - return True - - @property - def alpha_m(self): - if self.Xpower == 0: - return numpy.array([]) - return numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableA) - @property - def beta_m(self): - if self.Xpower == 0: - return numpy.array([]) - return numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableB) - numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableA) - @property - def alpha_h(self): - if self.Ypower == 0: - return numpy.array([]) - return numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableA) - @property - def beta_h(self): - if self.Ypower == 0: - return numpy.array([]) - return numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableB) - numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableA) - -class SquidAxon(moose.Compartment): - EREST_ACT = 0.0 # can be -70 mV if not following original HH convention - VMIN = -30.0 - VMAX = 120.0 - VDIVS = 150 - defaults = { - 'temperature': CELSIUS_TO_KELVIN + 6.3, - 'K_out': 10.0, - 'Na_out': 460.0, - 'K_in': 301.4, - 'Na_in': 70.96, - 'Cl_out': 540.0, - 'Cl_in': 100.0, - 'length': 500, # um - 'diameter': 500, # um - 'Em': EREST_ACT + 10.613, - 'initVm': EREST_ACT, - 'specific_cm': 1.0, # uF/cm^2 - 'specific_gl': 0.3, # mmho/cm^2 - 'specific_ra': 0.030, # kohm-cm - 'specific_gNa': 120.0, # mmho/cm^2 - 'specific_gK': 36.0 # mmho/cm^2 - } - - Na_m_params = {'A_A':0.1 * (25.0 + EREST_ACT), - 'A_B': -0.1, - 'A_C': -1.0, - 'A_D': -25.0 - EREST_ACT, - 'A_F':-10.0, - 'B_A': 4.0, - 'B_B': 0.0, - 'B_C': 0.0, - 'B_D': 0.0 - EREST_ACT, - 'B_F': 18.0} - Na_h_params = {'A_A': 0.07, - 'A_B': 0.0, - 'A_C': 0.0, - 'A_D': 0.0 - EREST_ACT, - 'A_F': 20.0, - 'B_A': 1.0, - 'B_B': 0.0, - 'B_C': 1.0, - 'B_D': -30.0 - EREST_ACT, - 'B_F': -10.0} - K_n_params = {'A_A': 0.01*(10.0 + EREST_ACT), - 'A_B': -0.01, - 'A_C': -1.0, - 'A_D': -10.0 - EREST_ACT, - 'A_F': -10.0, - 'B_A': 0.125, - 'B_B': 0.0, - 'B_C': 0.0, - 'B_D': 0.0 - EREST_ACT, - 'B_F': 80.0} - """Compartment class enhanced with specific values of passive - electrical properties set and calculated using dimensions.""" - def __init__(self, path): - moose.Compartment.__init__(self, path) - self.temperature = SquidAxon.defaults['temperature'] - self.K_out = SquidAxon.defaults['K_out'] - self.Na_out = SquidAxon.defaults['Na_out'] - # Modified internal concentrations used to give HH values of - # equilibrium constants from the Nernst equation at 6.3 deg C. - # HH 1952a, p. 455 - self.K_in = SquidAxon.defaults['K_in'] - self.Na_in = SquidAxon.defaults['Na_in'] - self.Cl_out = SquidAxon.defaults['Cl_out'] - self.Cl_in = SquidAxon.defaults['Cl_in'] - - self.length = SquidAxon.defaults['length'] - self.diameter = SquidAxon.defaults['diameter'] - self.Em = SquidAxon.defaults['Em'] - self.initVm = SquidAxon.defaults['initVm'] - self.specific_cm = SquidAxon.defaults['specific_cm'] - self.specific_gl = SquidAxon.defaults['specific_gl'] - self.specific_ra = SquidAxon.defaults['specific_ra'] - - self.Na_channel = IonChannel('Na', self, - 0.0, - self.VNa, - Xpower=3.0, - Ypower=1.0) - self.Na_channel.setupAlpha('X', SquidAxon.Na_m_params, - SquidAxon.VDIVS, - SquidAxon.VMIN, - SquidAxon.VMAX) - self.Na_channel.setupAlpha('Y', SquidAxon.Na_h_params, - SquidAxon.VDIVS, - SquidAxon.VMIN, - SquidAxon.VMAX) - self.K_channel = IonChannel('K', self, - 0.0, - self.VK, - Xpower=4.0) - self.K_channel.setupAlpha('X', SquidAxon.K_n_params, - SquidAxon.VDIVS, - SquidAxon.VMIN, - SquidAxon.VMAX) - self.specific_gNa = SquidAxon.defaults['specific_gNa'] - self.specific_gK = SquidAxon.defaults['specific_gK'] - - @classmethod - def reversal_potential(cls, temp, c_out, c_in): - """Compute the reversal potential based on Nernst equation.""" - # NOTE the 70 mV added for compatibility with original HH - return (GAS_CONSTANT * temp / FARADAY) * 1000.0 * numpy.log(c_out/c_in) + 70.0 + cls.EREST_ACT - - - @property - def xarea(self): - """Area of cross section in cm^2 when length and diameter are in um""" - return 1e-8 * numpy.pi * self.diameter * self.diameter / 4.0 # cm^2 - - @property - def area(self): - """Area in cm^2 when length and diameter are in um""" - return 1e-8 * self.length * numpy.pi * self.diameter # cm^2 - - @property - def specific_ra(self): - return self.Ra * self.xarea / self.length - @specific_ra.setter - def specific_ra(self, value): - self.Ra = value * self.length / self.xarea - - @property - def specific_cm(self): - return self.Cm / self.area - @specific_cm.setter - def specific_cm(self, value): - self.Cm = value * self.area - - @property - def specific_gl(self): - return 1.0/(self.Rm * self.area) - @specific_gl.setter - def specific_gl(self, value): - self.Rm = 1.0/(value * self.area) - - @property - def specific_rm(self): - return self.Rm * self.area - @specific_rm.setter - def specific_rm(self, value): - self.Rm = value / self.area - - @property - def specific_gNa(self): - return self.Na_channel.Gbar / self.area - - @specific_gNa.setter - def specific_gNa(self, value): - self.Na_channel.Gbar = value * self.area - - @property - def specific_gK(self): - return self.K_channel.Gbar / self.area - - @specific_gK.setter - def specific_gK(self, value): - self.K_channel.Gbar = value * self.area - - @property - def VK(self): - """Reversal potential of K+ channels""" - return SquidAxon.reversal_potential(self.temperature, self.K_out, self.K_in) - - @property - def VNa(self): - """Reversal potential of Na+ channels""" - return SquidAxon.reversal_potential(self.temperature, self.Na_out, self.Na_in) - - def updateEk(self): - """Update the channels' Ek""" - self.Na_channel.Ek = self.VNa - self.K_channel.Ek = self.VK - - - @property - def celsius(self): - return self.temperature - CELSIUS_TO_KELVIN - - @celsius.setter - def celsius(self, celsius): - self.temperature = celsius + CELSIUS_TO_KELVIN - - def use_defaults(self): - for field, value in SquidAxon.defaults.items(): - setattr(self, field, value) - -class SquidModel(moose.Neutral): - """Container for squid demo.""" - def __init__(self, path): - moose.Neutral.__init__(self, path) - self.squid_axon = SquidAxon(path+'/squid_axon') - print self.squid_axon.Na_channel.Gbar, self.squid_axon.K_channel.Gbar - self.current_clamp = moose.PulseGen(path+'/pulsegen') - self.current_clamp.firstDelay = 5.0 # ms - self.current_clamp.firstWidth = 40 # ms - self.current_clamp.firstLevel = 0.1 # uA - self.current_clamp.secondDelay = 1e9 - print 'Current clamp connected:', moose.connect(self.current_clamp, 'output', self.squid_axon, 'injectMsg') - - self.Vm_table = moose.Table('%s/Vm' % (self.path)) - moose.connect(self.Vm_table, 'requestOut', self.squid_axon, 'getVm') - self.gK_table = moose.Table('%s/gK' % (self.path)) - moose.connect(self.gK_table, 'requestOut', self.squid_axon.K_channel, 'getGk') - self.gNa_table = moose.Table('%s/gNa' % (self.path)) - moose.connect(self.gNa_table, 'requestOut', self.squid_axon.Na_channel, 'getGk') - self.clocks_assigned = False - - def run(self, runtime, simdt=1e-6): - self.squid_axon.updateEk() - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.setClock(3, simdt) - if not self.clocks_assigned: - moose.useClock(0, '%s/#[TYPE=Compartment]' % (self.path), 'init') - moose.useClock(0, '%s/#[TYPE=PulseGen]' % (self.path), 'process') - moose.useClock(1, '%s/#[TYPE=Compartment]' % (self.path), 'process') - moose.useClock(2, '%s/#[TYPE=HHChannel]' % (self.squid_axon.path), 'process') - moose.useClock(3, '%s/#[TYPE=Table]' % (self.path), 'process') - self.clocks_assigned = True - moose.reinit() - moose.start(runtime) - - def save_data(self): - self.Vm_table.xplot('Vm.dat', 'Vm') - print 'Vm saved to Vm.dat' - if hasattr(self, 'gK_table'): - self.gK_table.xplot('gK.dat', 'gK') - numpy.savetxt('K_alpha_n.dat', self.squid_axon.K_channel.alpha_m) - numpy.savetxt('K_beta_n.dat', self.squid_axon.K_channel.beta_m) - print 'K conductance saved to gK.dat' - if hasattr(self, 'gNa_table'): - self.gNa_table.xplot('gNa.dat', 'gNa') - numpy.savetxt('Na_alpha_m.dat', self.squid_axon.Na_channel.alpha_m) - numpy.savetxt('Na_beta_m.dat', self.squid_axon.Na_channel.beta_m) - numpy.savetxt('Na_alpha_h.dat', self.squid_axon.Na_channel.alpha_h) - numpy.savetxt('Na_beta_h.dat', self.squid_axon.Na_channel.beta_h) - print 'Na conductance saved to gNa.dat' - - - -def test(runtime=100.0, simdt=1e-2): - model = SquidModel('model') - model.run(runtime, simdt) - model.save_data() - -if __name__ == '__main__': - # unittest.main() - test() - - - -# -# squid.py ends here diff --git a/examples/squid/squid_demo.py b/examples/squid/squid_demo.py deleted file mode 100644 index 85a3518..0000000 --- a/examples/squid/squid_demo.py +++ /dev/null @@ -1,899 +0,0 @@ - - # -*- coding: utf-8 -*- -# squidgui.py --- -# -# Filename: squidgui.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 9 18:23:55 2012 (+0530) -# Version: -# Last-Updated: Tue May 3 00:18:47 2016 (-0400) -# By: subha -# Update #: 1078 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import sys -sys.path.append('../../python') -import os -os.environ['NUMPTHREADS'] = '1' - -from collections import defaultdict -import time - -from PyQt4 import QtGui -from PyQt4 import QtCore -import numpy -from matplotlib.figure import Figure -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar - -import moose - -from squid import * -from squid_setup import SquidSetup -from electronics import ClampCircuit - - -tooltip_Nernst = """

Ionic equilibrium potential

-

-The equilibrium potential for ion C is given by Nernst equation: -

-EC = (RT/zF) * ln([C]out / [C]in) -

-where R is the ideal gas constant (8.3145 J/mol K),
- T is absolute temperature,
- z is the valence of the ion,
- F is Faraday's constant 96480 C/mol,
- [C]out is concentration of C outside the membrane,
- [C]in is concentration of C inside the membrane.""" - -tooltip_Erest = """

Resting membrane potential

-

-The resting membrane potential is determined by the ionic -concentrations inside and outside the cell membrane and is given by -the Goldman-Hodgkin-Katz equation: -

- -V = (RT/F) * ln((PK[K+]out + PNa[Na+]out + PCl[Cl-]in) / (PK[K+]in + PNa[Na+]in + PCl[Cl-]out)) - -

-where PC is the permeability of the membrane to ion C. - -""" - -tooltip_NaChan = u"""

Na+ channel conductance

-

-The Na+ channel conductance in squid giant axon is given by: - -

GNa = ḠNa * m3 * h

- -and the current through this channel is: -

-INa = GNa * (V - ENa) = ḠNa * m3 * h * (V - ENa) -

- -where ḠNa is the peak conductance of Na+ channel, m is -the fraction of activation gates open and h is the fraction of -deactivation gates open. The transition from open to closed state has -first order kinetics: -

dm/dt = αm * ( 1 - m) - βm * m

-and similarly for h. - -The steady state values are: -

m = αm/(αm + βm)

-and time constant for steady state is: -

τm = 1/ (αm + βm)

-and similarly for h. -""" - -tooltip_KChan = u"""

K+ channel conductance

-

The K+ channel conductance in squid giant axon is given by: - -

GK = ḠK * n4

- -and the current through this channel is: -

-IK = GK * (V - EK) = ḠK * n4 * (V - EK) -

-where ḠK is the peak conductance of K+ channel, -n is the fraction of activation gates open. The transition from open -to closed state has first order kinetics:

dn/dt = αn * -( 1 - n) - βn * n

. - -The steady state values are: -

-n = αn/(αn + βn) -

-and time constant for steady state is: -

n = 1/ (αn + βn) - -

-and similarly for h. -""" - -tooltip_Im = """

Membrane current

-

-The current through the membrane is given by: -

-Im = Cm dV/dt + IK + INa + IL -

- = Cm dV/dt + GK(V, t) * (V - EK) + GNa * (V - ENa) + GL * (V - EL) -

-where GL is the leak current and EL is the leak reversal potential. - -""" - -default_line_edit_size = QtCore.QSize(80, 25) -def set_default_line_edit_size(widget): - widget.setMinimumSize(default_line_edit_size) - widget.setMaximumSize(default_line_edit_size) - - -class SquidGui(QtGui.QMainWindow): - defaults = {} - defaults.update(SquidAxon.defaults) - defaults.update(ClampCircuit.defaults) - defaults.update({'runtime': 50.0, - 'simdt': 0.01, - 'plotdt': 0.1, - 'vclamp.holdingV': 0.0, - 'vclamp.holdingT': 10.0, - 'vclamp.prepulseV': 0.0, - 'vclamp.prepulseT': 0.0, - 'vclamp.clampV': 50.0, - 'vclamp.clampT': 20.0, - 'iclamp.baseI': 0.0, - 'iclamp.firstI': 0.1, - 'iclamp.firstT': 40.0, - 'iclamp.firstD': 5.0, - 'iclamp.secondI': 0.0, - 'iclamp.secondT': 0.0, - 'iclamp.secondD': 0.0 - }) - def __init__(self, *args): - QtGui.QMainWindow.__init__(self, *args) - self.squid_setup = SquidSetup() - self._plotdt = SquidGui.defaults['plotdt'] - self._plot_dict = defaultdict(list) - self.setWindowTitle('Squid Axon simulation') - self.setDockNestingEnabled(True) - self._createRunControl() - self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._runControlDock) - self._runControlDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) - self._createChannelControl() - self._channelCtrlBox.setWindowTitle('Channel properties') - self._channelControlDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) - self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._channelControlDock) - self._createElectronicsControl() - self._electronicsDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) - self._electronicsDock.setWindowTitle('Electronics') - self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._electronicsDock) - self._createPlotWidget() - self.setCentralWidget(self._plotWidget) - self._createStatePlotWidget() - self._createHelpMessage() - self._helpWindow.setVisible(False) - self._statePlotWidget.setWindowFlags(QtCore.Qt.Window) - self._statePlotWidget.setWindowTitle('State plot') - self._initActions() - self._createRunToolBar() - self._createPlotToolBar() - - def getFloatInput(self, widget, name): - try: - return float(str(widget.text())) - except ValueError: - QtGui.QMessageBox.critical(self, 'Invalid input', 'Please enter a valid number for {}'.format(name)) - raise - - - def _createPlotWidget(self): - self._plotWidget = QtGui.QWidget() - self._plotFigure = Figure() - self._plotCanvas = FigureCanvas(self._plotFigure) - self._plotCanvas.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - self._plotCanvas.updateGeometry() - self._plotCanvas.setParent(self._plotWidget) - self._plotCanvas.mpl_connect('scroll_event', self._onScroll) - self._plotFigure.set_canvas(self._plotCanvas) - # Vm and command voltage go in the same subplot - self._vm_axes = self._plotFigure.add_subplot(2,2,1, title='Membrane potential') - self._vm_axes.set_ylim(-20.0, 120.0) - # Channel conductances go to the same subplot - self._g_axes = self._plotFigure.add_subplot(2,2,2, title='Channel conductance') - self._g_axes.set_ylim(0.0, 0.5) - # Injection current for Vclamp/Iclamp go to the same subplot - self._im_axes = self._plotFigure.add_subplot(2,2,3, title='Injection current') - self._im_axes.set_ylim(-0.5, 0.5) - # Channel currents go to the same subplot - self._i_axes = self._plotFigure.add_subplot(2,2,4, title='Channel current') - self._i_axes.set_ylim(-10, 10) - for axis in self._plotFigure.axes: - axis.set_autoscale_on(False) - layout = QtGui.QVBoxLayout() - layout.addWidget(self._plotCanvas) - self._plotNavigator = NavigationToolbar(self._plotCanvas, self._plotWidget) - layout.addWidget(self._plotNavigator) - self._plotWidget.setLayout(layout) - - def _createStatePlotWidget(self): - self._statePlotWidget = QtGui.QWidget() - self._statePlotFigure = Figure() - self._statePlotCanvas = FigureCanvas(self._statePlotFigure) - self._statePlotCanvas.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - self._statePlotCanvas.updateGeometry() - self._statePlotCanvas.setParent(self._statePlotWidget) - self._statePlotFigure.set_canvas(self._statePlotCanvas) - self._statePlotFigure.subplots_adjust(hspace=0.5) - self._statePlotAxes = self._statePlotFigure.add_subplot(2,1,1, title='State plot') - self._state_plot, = self._statePlotAxes.plot([], [], label='state') - self._activationParamAxes = self._statePlotFigure.add_subplot(2,1,2, title='H-H activation parameters vs time') - self._activationParamAxes.set_xlabel('Time (ms)') - #for axis in self._plotFigure.axes: - # axis.autoscale(False) - self._stateplot_xvar_label = QtGui.QLabel('Variable on X-axis') - self._stateplot_xvar_combo = QtGui.QComboBox() - self._stateplot_xvar_combo.addItems(['V', 'm', 'n', 'h']) - self._stateplot_xvar_combo.setCurrentIndex(0) - self._stateplot_xvar_combo.setEditable(False) - self.connect(self._stateplot_xvar_combo, - QtCore.SIGNAL('currentIndexChanged(const QString&)'), - self._statePlotXSlot) - self._stateplot_yvar_label = QtGui.QLabel('Variable on Y-axis') - self._stateplot_yvar_combo = QtGui.QComboBox() - self._stateplot_yvar_combo.addItems(['V', 'm', 'n', 'h']) - self._stateplot_yvar_combo.setCurrentIndex(2) - self._stateplot_yvar_combo.setEditable(False) - self.connect(self._stateplot_yvar_combo, - QtCore.SIGNAL('currentIndexChanged(const QString&)'), - self._statePlotYSlot) - self._statePlotNavigator = NavigationToolbar(self._statePlotCanvas, self._statePlotWidget) - frame = QtGui.QFrame() - frame.setFrameStyle(QtGui.QFrame.StyledPanel + QtGui.QFrame.Raised) - layout = QtGui.QHBoxLayout() - layout.addWidget(self._stateplot_xvar_label) - layout.addWidget(self._stateplot_xvar_combo) - layout.addWidget(self._stateplot_yvar_label) - layout.addWidget(self._stateplot_yvar_combo) - frame.setLayout(layout) - self._closeStatePlotAction = QtGui.QAction('Close', self) - self.connect(self._closeStatePlotAction, QtCore.SIGNAL('triggered()'), self._statePlotWidget.close) - self._closeStatePlotButton = QtGui.QToolButton() - self._closeStatePlotButton.setDefaultAction(self._closeStatePlotAction) - layout = QtGui.QVBoxLayout() - layout.addWidget(frame) - layout.addWidget(self._statePlotCanvas) - layout.addWidget(self._statePlotNavigator) - layout.addWidget(self._closeStatePlotButton) - self._statePlotWidget.setLayout(layout) - # Setting the close event so that when the help window is - # closed the ``State plot`` button becomes unchecked - self._statePlotWidget.closeEvent = lambda event: self._showStatePlotAction.setChecked(False) - - def _createRunControl(self): - self._runControlBox = QtGui.QGroupBox(self) - self._runControlBox.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) - self._runTimeLabel = QtGui.QLabel("Run time (ms)", self._runControlBox) - self._simTimeStepLabel = QtGui.QLabel("Simulation time step (ms)", self._runControlBox) - self._runTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['runtime']), self._runControlBox) - set_default_line_edit_size(self._runTimeEdit) - self._simTimeStepEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['simdt']), self._runControlBox) - set_default_line_edit_size(self._simTimeStepEdit) - layout = QtGui.QGridLayout() - layout.addWidget(self._runTimeLabel, 0, 0) - layout.addWidget(self._runTimeEdit, 0, 1) - layout.addWidget(self._simTimeStepLabel, 1, 0) - layout.addWidget(self._simTimeStepEdit, 1, 1) - layout.setColumnStretch(2, 1.0) - layout.setRowStretch(2, 1.0) - self._runControlBox.setLayout(layout) - self._runControlDock = QtGui.QDockWidget('Simulation', self) - self._runControlDock.setWidget(self._runControlBox) - - def _createChannelControl(self): - self._channelControlDock = QtGui.QDockWidget('Channels', self) - self._channelCtrlBox = QtGui.QGroupBox(self) - self._naConductanceToggle = QtGui.QCheckBox('Block Na+ channel', self._channelCtrlBox) - self._naConductanceToggle.setToolTip('%s' % (tooltip_NaChan)) - self._kConductanceToggle = QtGui.QCheckBox('Block K+ channel', self._channelCtrlBox) - self._kConductanceToggle.setToolTip('%s' % (tooltip_KChan)) - self._kOutLabel = QtGui.QLabel('[K+]out (mM)', self._channelCtrlBox) - self._kOutEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.K_out), - self._channelCtrlBox) - self._kOutLabel.setToolTip('%s' % (tooltip_Nernst)) - self._kOutEdit.setToolTip('%s' % (tooltip_Nernst)) - set_default_line_edit_size(self._kOutEdit) - self._naOutLabel = QtGui.QLabel('[Na+]out (mM)', self._channelCtrlBox) - self._naOutEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.Na_out), - self._channelCtrlBox) - self._naOutLabel.setToolTip('%s' % (tooltip_Nernst)) - self._naOutEdit.setToolTip('%s' % (tooltip_Nernst)) - set_default_line_edit_size(self._naOutEdit) - self._kInLabel = QtGui.QLabel('[K+]in (mM)', self._channelCtrlBox) - self._kInEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.K_in), - self._channelCtrlBox) - self._kInEdit.setToolTip(tooltip_Nernst) - self._naInLabel = QtGui.QLabel('[Na+]in (mM)', self._channelCtrlBox) - self._naInEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.Na_in), - self._channelCtrlBox) - self._naInEdit.setToolTip('%s' % (tooltip_Nernst)) - self._temperatureLabel = QtGui.QLabel('Temperature (C)', self._channelCtrlBox) - self._temperatureEdit = QtGui.QLineEdit('%g' % (self.defaults['temperature'] - CELSIUS_TO_KELVIN), - self._channelCtrlBox) - self._temperatureEdit.setToolTip('%s' % (tooltip_Nernst)) - set_default_line_edit_size(self._temperatureEdit) - for child in self._channelCtrlBox.children(): - if isinstance(child, QtGui.QLineEdit): - set_default_line_edit_size(child) - layout = QtGui.QGridLayout(self._channelCtrlBox) - layout.addWidget(self._naConductanceToggle, 0, 0) - layout.addWidget(self._kConductanceToggle, 1, 0) - layout.addWidget(self._naOutLabel, 2, 0) - layout.addWidget(self._naOutEdit, 2, 1) - layout.addWidget(self._naInLabel, 3, 0) - layout.addWidget(self._naInEdit, 3, 1) - layout.addWidget(self._kOutLabel, 4, 0) - layout.addWidget(self._kOutEdit, 4, 1) - layout.addWidget(self._kInLabel, 5, 0) - layout.addWidget(self._kInEdit, 5, 1) - layout.addWidget(self._temperatureLabel, 6, 0) - layout.addWidget(self._temperatureEdit, 6, 1) - layout.setRowStretch(7, 1.0) - self._channelCtrlBox.setLayout(layout) - self._channelControlDock.setWidget(self._channelCtrlBox) - return self._channelCtrlBox - - def __get_stateplot_data(self, name): - data = [] - if name == 'V': - data = self.squid_setup.vm_table.vector - elif name == 'm': - data = self.squid_setup.m_table.vector - elif name == 'h': - data = self.squid_setup.h_table.vector - elif name == 'n': - data = self.squid_setup.n_table.vector - else: - raise ValueError('Unrecognized selection: %s' % (name)) - return numpy.asarray(data) - - def _statePlotYSlot(self, selectedItem): - ydata = self.__get_stateplot_data(str(selectedItem)) - self._state_plot.set_ydata(ydata) - self._statePlotAxes.set_ylabel(selectedItem) - if str(selectedItem) == 'V': - self._statePlotAxes.set_ylim(-20, 120) - else: - self._statePlotAxes.set_ylim(0, 1) - self._statePlotCanvas.draw() - - def _statePlotXSlot(self, selectedItem): - xdata = self.__get_stateplot_data(str(selectedItem)) - self._state_plot.set_xdata(xdata) - self._statePlotAxes.set_xlabel(selectedItem) - if str(selectedItem) == 'V': - self._statePlotAxes.set_xlim(-20, 120) - else: - self._statePlotAxes.set_xlim(0, 1) - self._statePlotCanvas.draw() - - def _createElectronicsControl(self): - """Creates a tabbed widget of voltage clamp and current clamp controls""" - self._electronicsTab = QtGui.QTabWidget(self) - self._electronicsTab.addTab(self._getIClampCtrlBox(), 'Current clamp') - self._electronicsTab.addTab(self._getVClampCtrlBox(), 'Voltage clamp') - self._electronicsDock = QtGui.QDockWidget(self) - self._electronicsDock.setWidget(self._electronicsTab) - - def _getVClampCtrlBox(self): - vClampPanel = QtGui.QGroupBox(self) - self._vClampCtrlBox = vClampPanel - self._holdingVLabel = QtGui.QLabel("Holding Voltage (mV)", vClampPanel) - self._holdingVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.holdingV']), vClampPanel) - self._holdingTimeLabel = QtGui.QLabel("Holding Time (ms)", vClampPanel) - self._holdingTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.holdingT']), vClampPanel) - self._prePulseVLabel = QtGui.QLabel("Pre-pulse Voltage (mV)", vClampPanel) - self._prePulseVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.prepulseV']), vClampPanel) - self._prePulseTimeLabel = QtGui.QLabel("Pre-pulse Time (ms)", vClampPanel) - self._prePulseTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.prepulseT']), vClampPanel) - self._clampVLabel = QtGui.QLabel("Clamp Voltage (mV)", vClampPanel) - self._clampVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.clampV']), vClampPanel) - self._clampTimeLabel = QtGui.QLabel("Clamp Time (ms)", vClampPanel) - self._clampTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.clampT']), vClampPanel) - for child in vClampPanel.children(): - if isinstance(child, QtGui.QLineEdit): - set_default_line_edit_size(child) - layout = QtGui.QGridLayout(vClampPanel) - layout.addWidget(self._holdingVLabel, 0, 0) - layout.addWidget(self._holdingVEdit, 0, 1) - layout.addWidget(self._holdingTimeLabel, 1, 0) - layout.addWidget(self._holdingTimeEdit, 1, 1) - layout.addWidget(self._prePulseVLabel, 2, 0) - layout.addWidget(self._prePulseVEdit, 2, 1) - layout.addWidget(self._prePulseTimeLabel,3,0) - layout.addWidget(self._prePulseTimeEdit, 3, 1) - layout.addWidget(self._clampVLabel, 4, 0) - layout.addWidget(self._clampVEdit, 4, 1) - layout.addWidget(self._clampTimeLabel, 5, 0) - layout.addWidget(self._clampTimeEdit, 5, 1) - layout.setRowStretch(6, 1.0) - vClampPanel.setLayout(layout) - return self._vClampCtrlBox - - def _getIClampCtrlBox(self): - iClampPanel = QtGui.QGroupBox(self) - self._iClampCtrlBox = iClampPanel - self._baseCurrentLabel = QtGui.QLabel("Base Current Level (uA)",iClampPanel) - self._baseCurrentEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.baseI']),iClampPanel) - self._firstPulseLabel = QtGui.QLabel("First Pulse Current (uA)", iClampPanel) - self._firstPulseEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstI']), iClampPanel) - self._firstDelayLabel = QtGui.QLabel("First Onset Delay (ms)", iClampPanel) - self._firstDelayEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstD']),iClampPanel) - self._firstPulseWidthLabel = QtGui.QLabel("First Pulse Width (ms)", iClampPanel) - self._firstPulseWidthEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstT']), iClampPanel) - self._secondPulseLabel = QtGui.QLabel("Second Pulse Current (uA)", iClampPanel) - self._secondPulseEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondI']), iClampPanel) - self._secondDelayLabel = QtGui.QLabel("Second Onset Delay (ms)", iClampPanel) - self._secondDelayEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondD']),iClampPanel) - self._secondPulseWidthLabel = QtGui.QLabel("Second Pulse Width (ms)", iClampPanel) - self._secondPulseWidthEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondT']), iClampPanel) - self._pulseMode = QtGui.QComboBox(iClampPanel) - self._pulseMode.addItem("Single Pulse") - self._pulseMode.addItem("Pulse Train") - for child in iClampPanel.children(): - if isinstance(child, QtGui.QLineEdit): - set_default_line_edit_size(child) - layout = QtGui.QGridLayout(iClampPanel) - layout.addWidget(self._baseCurrentLabel, 0, 0) - layout.addWidget(self._baseCurrentEdit, 0, 1) - layout.addWidget(self._firstPulseLabel, 1, 0) - layout.addWidget(self._firstPulseEdit, 1, 1) - layout.addWidget(self._firstDelayLabel, 2, 0) - layout.addWidget(self._firstDelayEdit, 2, 1) - layout.addWidget(self._firstPulseWidthLabel, 3, 0) - layout.addWidget(self._firstPulseWidthEdit, 3, 1) - layout.addWidget(self._secondPulseLabel, 4, 0) - layout.addWidget(self._secondPulseEdit, 4, 1) - layout.addWidget(self._secondDelayLabel, 5, 0) - layout.addWidget(self._secondDelayEdit, 5, 1) - layout.addWidget(self._secondPulseWidthLabel, 6, 0) - layout.addWidget(self._secondPulseWidthEdit, 6, 1) - layout.addWidget(self._pulseMode, 7, 0, 1, 2) - layout.setRowStretch(8, 1.0) - # layout.setSizeConstraint(QtGui.QLayout.SetFixedSize) - iClampPanel.setLayout(layout) - return self._iClampCtrlBox - - def _overlayPlots(self, overlay): - if not overlay: - for axis in (self._plotFigure.axes + self._statePlotFigure.axes): - title = axis.get_title() - axis.clear() - axis.set_title(title) - suffix = '' - else: - suffix = '_%d' % (len(self._plot_dict['vm'])) - self._vm_axes.set_xlim(0.0, self._runtime) - self._g_axes.set_xlim(0.0, self._runtime) - self._im_axes.set_xlim(0.0, self._runtime) - self._i_axes.set_xlim(0.0, self._runtime) - self._vm_plot, = self._vm_axes.plot([], [], label='Vm%s'%(suffix)) - self._plot_dict['vm'].append(self._vm_plot) - self._command_plot, = self._vm_axes.plot([], [], label='command%s'%(suffix)) - self._plot_dict['command'].append(self._command_plot) - # Channel conductances go to the same subplot - self._gna_plot, = self._g_axes.plot([], [], label='Na%s'%(suffix)) - self._plot_dict['gna'].append(self._gna_plot) - self._gk_plot, = self._g_axes.plot([], [], label='K%s'%(suffix)) - self._plot_dict['gk'].append(self._gk_plot) - # Injection current for Vclamp/Iclamp go to the same subplot - self._iclamp_plot, = self._im_axes.plot([], [], label='Iclamp%s'%(suffix)) - self._vclamp_plot, = self._im_axes.plot([], [], label='Vclamp%s'%(suffix)) - self._plot_dict['iclamp'].append(self._iclamp_plot) - self._plot_dict['vclamp'].append(self._vclamp_plot) - # Channel currents go to the same subplot - self._ina_plot, = self._i_axes.plot([], [], label='Na%s'%(suffix)) - self._plot_dict['ina'].append(self._ina_plot) - self._ik_plot, = self._i_axes.plot([], [], label='K%s'%(suffix)) - self._plot_dict['ik'].append(self._ik_plot) - # self._i_axes.legend() - # State plots - self._state_plot, = self._statePlotAxes.plot([], [], label='state%s'%(suffix)) - self._plot_dict['state'].append(self._state_plot) - self._m_plot, = self._activationParamAxes.plot([],[], label='m%s'%(suffix)) - self._h_plot, = self._activationParamAxes.plot([], [], label='h%s'%(suffix)) - self._n_plot, = self._activationParamAxes.plot([], [], label='n%s'%(suffix)) - self._plot_dict['m'].append(self._m_plot) - self._plot_dict['h'].append(self._h_plot) - self._plot_dict['n'].append(self._n_plot) - if self._showLegendAction.isChecked(): - for axis in (self._plotFigure.axes + self._statePlotFigure.axes): - axis.legend() - - def _updateAllPlots(self): - self._updatePlots() - self._updateStatePlot() - - def _updatePlots(self): - if len(self.squid_setup.vm_table.vector) <= 0: - return - vm = numpy.asarray(self.squid_setup.vm_table.vector) - cmd = numpy.asarray(self.squid_setup.cmd_table.vector) - ik = numpy.asarray(self.squid_setup.ik_table.vector) - ina = numpy.asarray(self.squid_setup.ina_table.vector) - iclamp = numpy.asarray(self.squid_setup.iclamp_table.vector) - vclamp = numpy.asarray(self.squid_setup.vclamp_table.vector) - gk = numpy.asarray(self.squid_setup.gk_table.vector) - gna = numpy.asarray(self.squid_setup.gna_table.vector) - time_series = numpy.linspace(0, self._plotdt * len(vm), len(vm)) - self._vm_plot.set_data(time_series, vm) - time_series = numpy.linspace(0, self._plotdt * len(cmd), len(cmd)) - self._command_plot.set_data(time_series, cmd) - time_series = numpy.linspace(0, self._plotdt * len(ik), len(ik)) - self._ik_plot.set_data(time_series, ik) - time_series = numpy.linspace(0, self._plotdt * len(ina), len(ina)) - self._ina_plot.set_data(time_series, ina) - time_series = numpy.linspace(0, self._plotdt * len(iclamp), len(iclamp)) - self._iclamp_plot.set_data(time_series, iclamp) - time_series = numpy.linspace(0, self._plotdt * len(vclamp), len(vclamp)) - self._vclamp_plot.set_data(time_series, vclamp) - time_series = numpy.linspace(0, self._plotdt * len(gk), len(gk)) - self._gk_plot.set_data(time_series, gk) - time_series = numpy.linspace(0, self._plotdt * len(gna), len(gna)) - self._gna_plot.set_data(time_series, gna) - # self._vm_axes.margins(y=0.1) - # self._g_axes.margin(y=0.1) - # self._im_axes.margins(y=0.1) - # self._i_axes.margins(y=0.1) - if self._autoscaleAction.isChecked(): - for axis in self._plotFigure.axes: - axis.relim() - axis.margins(0.1, 0.1) - axis.autoscale_view(tight=True) - else: - self._vm_axes.set_ylim(-20.0, 120.0) - self._g_axes.set_ylim(0.0, 0.5) - self._im_axes.set_ylim(-0.5, 0.5) - self._i_axes.set_ylim(-10, 10) - self._vm_axes.set_xlim(0.0, time_series[-1]) - self._g_axes.set_xlim(0.0, time_series[-1]) - self._im_axes.set_xlim(0.0, time_series[-1]) - self._i_axes.set_xlim(0.0, time_series[-1]) - self._plotCanvas.draw() - - def _updateStatePlot(self): - if len(self.squid_setup.vm_table.vector) <= 0: - return - sx = str(self._stateplot_xvar_combo.currentText()) - sy = str(self._stateplot_yvar_combo.currentText()) - xdata = self.__get_stateplot_data(sx) - ydata = self.__get_stateplot_data(sy) - minlen = min(len(xdata), len(ydata)) - self._state_plot.set_data(xdata[:minlen], ydata[:minlen]) - self._statePlotAxes.set_xlabel(sx) - self._statePlotAxes.set_ylabel(sy) - if sx == 'V': - self._statePlotAxes.set_xlim(-20, 120) - else: - self._statePlotAxes.set_xlim(0, 1) - if sy == 'V': - self._statePlotAxes.set_ylim(-20, 120) - else: - self._statePlotAxes.set_ylim(0, 1) - self._activationParamAxes.set_xlim(0, self._runtime) - m = self.__get_stateplot_data('m') - n = self.__get_stateplot_data('n') - h = self.__get_stateplot_data('h') - time_series = numpy.linspace(0, self._plotdt*len(m), len(m)) - self._m_plot.set_data(time_series, m) - time_series = numpy.linspace(0, self._plotdt*len(h), len(h)) - self._h_plot.set_data(time_series, h) - time_series = numpy.linspace(0, self._plotdt*len(n), len(n)) - self._n_plot.set_data(time_series, n) - if self._autoscaleAction.isChecked(): - for axis in self._statePlotFigure.axes: - axis.relim() - axis.set_autoscale_on(True) - axis.autoscale_view(True) - self._statePlotCanvas.draw() - - def _runSlot(self): - if moose.isRunning(): - print 'Stopping simulation in progress ...' - moose.stop() - self._runtime = self.getFloatInput(self._runTimeEdit, self._runTimeLabel.text()) - self._overlayPlots(self._overlayAction.isChecked()) - self._simdt = self.getFloatInput(self._simTimeStepEdit, self._simTimeStepLabel.text()) - clampMode = None - singlePulse = True - if self._electronicsTab.currentWidget() == self._vClampCtrlBox: - clampMode = 'vclamp' - baseLevel = self.getFloatInput(self._holdingVEdit, self._holdingVLabel.text()) - firstDelay = self.getFloatInput(self._holdingTimeEdit, self._holdingTimeLabel.text()) - firstWidth = self.getFloatInput(self._prePulseTimeEdit, self._prePulseTimeLabel.text()) - firstLevel = self.getFloatInput(self._prePulseVEdit, self._prePulseVLabel.text()) - secondDelay = firstWidth - secondWidth = self.getFloatInput(self._clampTimeEdit, self._clampTimeLabel.text()) - secondLevel = self.getFloatInput(self._clampVEdit, self._clampVLabel.text()) - if not self._autoscaleAction.isChecked(): - self._im_axes.set_ylim(-10.0, 10.0) - else: - clampMode = 'iclamp' - baseLevel = self.getFloatInput(self._baseCurrentEdit, self._baseCurrentLabel.text()) - firstDelay = self.getFloatInput(self._firstDelayEdit, self._firstDelayLabel.text()) - firstWidth = self.getFloatInput(self._firstPulseWidthEdit, self._firstPulseWidthLabel.text()) - firstLevel = self.getFloatInput(self._firstPulseEdit, self._firstPulseLabel.text()) - secondDelay = self.getFloatInput(self._secondDelayEdit, self._secondDelayLabel.text()) - secondLevel = self.getFloatInput(self._secondPulseEdit, self._secondPulseLabel.text()) - secondWidth = self.getFloatInput(self._secondPulseWidthEdit, self._secondPulseWidthLabel.text()) - singlePulse = (self._pulseMode.currentIndex() == 0) - if not self._autoscaleAction.isChecked(): - self._im_axes.set_ylim(-0.4, 0.4) - self.squid_setup.clamp_ckt.configure_pulses(baseLevel=baseLevel, - firstDelay=firstDelay, - firstWidth=firstWidth, - firstLevel=firstLevel, - secondDelay=secondDelay, - secondWidth=secondWidth, - secondLevel=secondLevel, - singlePulse=singlePulse) - if self._kConductanceToggle.isChecked(): - self.squid_setup.squid_axon.specific_gK = 0.0 - else: - self.squid_setup.squid_axon.specific_gK = SquidAxon.defaults['specific_gK'] - if self._naConductanceToggle.isChecked(): - self.squid_setup.squid_axon.specific_gNa = 0.0 - else: - self.squid_setup.squid_axon.specific_gNa = SquidAxon.defaults['specific_gNa'] - self.squid_setup.squid_axon.celsius = self.getFloatInput(self._temperatureEdit, self._temperatureLabel.text()) - self.squid_setup.squid_axon.K_out = self.getFloatInput(self._kOutEdit, self._kOutLabel.text()) - self.squid_setup.squid_axon.Na_out = self.getFloatInput(self._naOutEdit, self._naOutLabel.text()) - self.squid_setup.squid_axon.K_in = self.getFloatInput(self._kInEdit, self._kInLabel.text()) - self.squid_setup.squid_axon.Na_in = self.getFloatInput(self._naInEdit, self._naInLabel.text()) - self.squid_setup.squid_axon.updateEk() - self.squid_setup.schedule(self._simdt, self._plotdt, clampMode) - # The following line is for use with Qthread - self.squid_setup.run(self._runtime) - self._updateAllPlots() - - def _toggleDocking(self, on): - self._channelControlDock.setFloating(on) - self._electronicsDock.setFloating(on) - self._runControlDock.setFloating(on) - - def _restoreDocks(self): - self._channelControlDock.setVisible(True) - self._electronicsDock.setVisible(True) - self._runControlDock.setVisible(True) - - def _initActions(self): - self._runAction = QtGui.QAction(self.tr('Run'), self) - self._runAction.setShortcut(self.tr('F5')) - self._runAction.setToolTip('Run simulation (F5)') - self.connect(self._runAction, QtCore.SIGNAL('triggered()'), self._runSlot) - self._resetToDefaultsAction = QtGui.QAction(self.tr('Restore defaults'), self) - self._resetToDefaultsAction.setToolTip('Reset all settings to their default values') - self.connect(self._resetToDefaultsAction, QtCore.SIGNAL('triggered()'), self._useDefaults) - self._showLegendAction = QtGui.QAction(self.tr('Display legend'), self) - self._showLegendAction.setCheckable(True) - self.connect(self._showLegendAction, QtCore.SIGNAL('toggled(bool)'), self._showLegend) - self._showStatePlotAction = QtGui.QAction(self.tr('State plot'), self) - self._showStatePlotAction.setCheckable(True) - self._showStatePlotAction.setChecked(False) - self.connect(self._showStatePlotAction, QtCore.SIGNAL('toggled(bool)'), self._statePlotWidget.setVisible) - self._autoscaleAction = QtGui.QAction(self.tr('Auto-scale plots'), self) - self._autoscaleAction.setCheckable(True) - self._autoscaleAction.setChecked(False) - self.connect(self._autoscaleAction, QtCore.SIGNAL('toggled(bool)'), self._autoscale) - self._overlayAction = QtGui.QAction('Overlay plots', self) - self._overlayAction.setCheckable(True) - self._overlayAction.setChecked(False) - self._dockAction = QtGui.QAction('Undock all', self) - self._dockAction.setCheckable(True) - self._dockAction.setChecked(False) - self.connect(self._dockAction, QtCore.SIGNAL('toggled(bool)'), self._toggleDocking) - self._restoreDocksAction = QtGui.QAction('Show all', self) - self.connect(self._restoreDocksAction, QtCore.SIGNAL('triggered()'), self._restoreDocks) - self._quitAction = QtGui.QAction(self.tr('&Quit'), self) - self._quitAction.setShortcut(self.tr('Ctrl+Q')) - self.connect(self._quitAction, QtCore.SIGNAL('triggered()'), QtGui.qApp.closeAllWindows) - - - - def _createRunToolBar(self): - self._simToolBar = self.addToolBar(self.tr('Simulation control')) - self._simToolBar.addAction(self._quitAction) - self._simToolBar.addAction(self._runAction) - self._simToolBar.addAction(self._resetToDefaultsAction) - self._simToolBar.addAction(self._dockAction) - self._simToolBar.addAction(self._restoreDocksAction) - - def _createPlotToolBar(self): - self._plotToolBar = self.addToolBar(self.tr('Plotting control')) - self._plotToolBar.addAction(self._showLegendAction) - self._plotToolBar.addAction(self._autoscaleAction) - self._plotToolBar.addAction(self._overlayAction) - self._plotToolBar.addAction(self._showStatePlotAction) - self._plotToolBar.addAction(self._helpAction) - self._plotToolBar.addAction(self._helpBiophysicsAction) - - def _showLegend(self, on): - if on: - for axis in (self._plotFigure.axes + self._statePlotFigure.axes): - axis.legend().set_visible(True) - else: - for axis in (self._plotFigure.axes + self._statePlotFigure.axes): - axis.legend().set_visible(False) - self._plotCanvas.draw() - self._statePlotCanvas.draw() - - def _autoscale(self, on): - if on: - for axis in (self._plotFigure.axes + self._statePlotFigure.axes): - axis.relim() - axis.set_autoscale_on(True) - axis.autoscale_view(True) - else: - for axis in self._plotFigure.axes: - axis.set_autoscale_on(False) - self._vm_axes.set_ylim(-20.0, 120.0) - self._g_axes.set_ylim(0.0, 0.5) - self._im_axes.set_ylim(-0.5, 0.5) - self._i_axes.set_ylim(-10, 10) - self._plotCanvas.draw() - self._statePlotCanvas.draw() - - def _useDefaults(self): - self._runTimeEdit.setText('%g' % (self.defaults['runtime'])) - self._simTimeStepEdit.setText('%g' % (self.defaults['simdt'])) - self._overlayAction.setChecked(False) - self._naConductanceToggle.setChecked(False) - self._kConductanceToggle.setChecked(False) - self._kOutEdit.setText('%g' % (SquidGui.defaults['K_out'])) - self._naOutEdit.setText('%g' % (SquidGui.defaults['Na_out'])) - self._kInEdit.setText('%g' % (SquidGui.defaults['K_in'])) - self._naInEdit.setText('%g' % (SquidGui.defaults['Na_in'])) - self._temperatureEdit.setText('%g' % (SquidGui.defaults['temperature'] - CELSIUS_TO_KELVIN)) - self._holdingVEdit.setText('%g' % (SquidGui.defaults['vclamp.holdingV'])) - self._holdingTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.holdingT'])) - self._prePulseVEdit.setText('%g' % (SquidGui.defaults['vclamp.prepulseV'])) - self._prePulseTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.prepulseT'])) - self._clampVEdit.setText('%g' % (SquidGui.defaults['vclamp.clampV'])) - self._clampTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.clampT'])) - self._baseCurrentEdit.setText('%g' % (SquidGui.defaults['iclamp.baseI'])) - self._firstPulseEdit.setText('%g' % (SquidGui.defaults['iclamp.firstI'])) - self._firstDelayEdit.setText('%g' % (SquidGui.defaults['iclamp.firstD'])) - self._firstPulseWidthEdit.setText('%g' % (SquidGui.defaults['iclamp.firstT'])) - self._secondPulseEdit.setText('%g' % (SquidGui.defaults['iclamp.secondI'])) - self._secondDelayEdit.setText('%g' % (SquidGui.defaults['iclamp.secondD'])) - self._secondPulseWidthEdit.setText('%g' % (SquidGui.defaults['iclamp.secondT'])) - self._pulseMode.setCurrentIndex(0) - - def _onScroll(self, event): - if event.inaxes is None: - return - axes = event.inaxes - zoom = 0.0 - if event.button == 'up': - zoom = -1.0 - elif event.button == 'down': - zoom = 1.0 - if zoom != 0.0: - self._plotNavigator.push_current() - axes.get_xaxis().zoom(zoom) - axes.get_yaxis().zoom(zoom) - self._plotCanvas.draw() - - def closeEvent(self, event): - QtGui.qApp.closeAllWindows() - - def _showBioPhysicsHelp(self): - self._createHelpMessage() - self._helpMessageText.setText('

%s

%s

%s

%s

%s

' % - (tooltip_Nernst, - tooltip_Erest, - tooltip_KChan, - tooltip_NaChan, - tooltip_Im)) - self._helpWindow.setVisible(True) - - def _showRunningHelp(self): - self._createHelpMessage() - self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) - self._helpWindow.setVisible(True) - - def _createHelpMessage(self): - if hasattr(self, '_helpWindow'): - return - self._helpWindow = QtGui.QWidget() - self._helpWindow.setWindowFlags(QtCore.Qt.Window) - layout = QtGui.QVBoxLayout() - self._helpWindow.setLayout(layout) - self._helpMessageArea = QtGui.QScrollArea() - self._helpMessageText = QtGui.QTextBrowser() - self._helpMessageText.setOpenExternalLinks(True) - self._helpMessageArea.setWidget(self._helpMessageText) - layout.addWidget(self._helpMessageText) - self._squidGuiPath = os.path.dirname(os.path.abspath(__file__)) - self._helpBaseURL = os.path.join(self._squidGuiPath,'help.html') - self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) - self._helpMessageText.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - self._helpMessageArea.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - self._helpMessageText.setMinimumSize(800, 600) - self._closeHelpAction = QtGui.QAction('Close', self) - self.connect(self._closeHelpAction, QtCore.SIGNAL('triggered()'), self._helpWindow.close) - # Setting the close event so that the ``Help`` button is - # unchecked when the help window is closed - self._helpWindow.closeEvent = lambda event: self._helpAction.setChecked(False) - self._helpTOCAction = QtGui.QAction('Help running demo', self) - self.connect(self._helpTOCAction, QtCore.SIGNAL('triggered()'), self._jumpToHelpTOC) - # This panel is for putting two buttons using horizontal - # layout - panel = QtGui.QFrame() - panel.setFrameStyle(QtGui.QFrame.StyledPanel + QtGui.QFrame.Raised) - layout.addWidget(panel) - layout = QtGui.QHBoxLayout() - panel.setLayout(layout) - self._helpAction = QtGui.QAction('Help running', self) - self.connect(self._helpAction, QtCore.SIGNAL('triggered()'), self._showRunningHelp) - self._helpBiophysicsAction = QtGui.QAction('Help biophysics', self) - self.connect(self._helpBiophysicsAction, QtCore.SIGNAL('triggered()'), self._showBioPhysicsHelp) - self._helpTOCButton = QtGui.QToolButton() - self._helpTOCButton.setDefaultAction(self._helpTOCAction) - self._helpBiophysicsButton = QtGui.QToolButton() - self._helpBiophysicsButton.setDefaultAction(self._helpBiophysicsAction) - layout.addWidget(self._helpTOCButton) - layout.addWidget(self._helpBiophysicsButton) - self._closeHelpButton = QtGui.QToolButton() - self._closeHelpButton.setDefaultAction(self._closeHelpAction) - layout.addWidget(self._closeHelpButton) - - def _jumpToHelpTOC(self): - self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) - -if __name__ == '__main__': - app = QtGui.QApplication(sys.argv) - app.connect(app, QtCore.SIGNAL('lastWindowClosed()'), app, QtCore.SLOT('quit()')) - QtGui.qApp = app - squid_gui = SquidGui() - squid_gui.show() - print squid_gui.size() - sys.exit(app.exec_()) - -# -# squidgui.py ends here diff --git a/examples/squid/squid_setup.py b/examples/squid/squid_setup.py deleted file mode 100644 index 6f24e46..0000000 --- a/examples/squid/squid_setup.py +++ /dev/null @@ -1,118 +0,0 @@ -# squid_demo.py --- -# -# Filename: squid_demo.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Feb 22 23:24:21 2012 (+0530) -# Version: -# Last-Updated: Tue Mar 6 23:25:50 2012 (+0530) -# By: Subhasis Ray -# Update #: 162 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# - -# Code: - -import moose - -from squid import SquidAxon -from electronics import ClampCircuit - -class SquidSetup(object): - def __init__(self): - self.scheduled = False - self.model_container = moose.Neutral('/model') - self.data_container = moose.Neutral('/data') - self.squid_axon = SquidAxon('/model/squid_axon') - self.clamp_ckt = ClampCircuit('/model/electronics', self.squid_axon) - self.simdt = 0.0 - self.plotdt = 0.0 - self.setup_recording() - - def setup_recording(self): - # Setup data collection - self.vm_table = moose.Table('/data/Vm') - moose.connect(self.vm_table, 'requestOut', self.squid_axon, 'getVm') - self.cmd_table = moose.Table('/data/command') - moose.connect(self.cmd_table, 'requestOut', self.clamp_ckt.vclamp, 'getOutputValue') - self.iclamp_table = moose.Table('/data/Iclamp') - moose.connect(self.iclamp_table, 'requestOut', self.clamp_ckt.iclamp, 'getOutputValue') - self.vclamp_table = moose.Table('/data/Vclamp') - moose.connect(self.vclamp_table, 'requestOut', self.clamp_ckt.pid, 'getOutputValue') - self.m_table = moose.Table('/data/m') - moose.connect(self.m_table, 'requestOut', self.squid_axon.Na_channel, 'getX') - self.h_table = moose.Table('/data/h') - moose.connect(self.h_table, 'requestOut', self.squid_axon.Na_channel, 'getY') - self.n_table = moose.Table('/data/n') - moose.connect(self.n_table, 'requestOut', self.squid_axon.K_channel, 'getX') - self.ina_table = moose.Table('/data/INa') - moose.connect(self.ina_table, 'requestOut', self.squid_axon.Na_channel, 'getIk') - self.ik_table = moose.Table('/data/IK') - moose.connect(self.ik_table, 'requestOut', self.squid_axon.K_channel, 'getIk') - self.gna_table = moose.Table('/data/GNa') - moose.connect(self.gna_table, 'requestOut', self.squid_axon.Na_channel, 'getGk') - self.gk_table = moose.Table('/data/GK') - moose.connect(self.gk_table, 'requestOut', self.squid_axon.K_channel, 'getGk') - - def schedule(self, simdt, plotdt, clampmode): - self.simdt = simdt - self.plotdt = plotdt - if clampmode == 'vclamp': - self.clamp_ckt.do_voltage_clamp() - else: - self.clamp_ckt.do_current_clamp() - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.setClock(3, plotdt) - # Ensure we do not create multiple scheduling - if not self.scheduled: - moose.useClock(0, '%s/#[TYPE=Compartment]' % (self.model_container.path), 'init') - moose.useClock(0, '%s/##' % (self.clamp_ckt.path), 'process') - moose.useClock(1, '%s/#[TYPE=Compartment]' % (self.model_container.path), 'process') - moose.useClock(2, '%s/#[TYPE=HHChannel]' % (self.squid_axon.path), 'process') - moose.useClock(3, '%s/#[TYPE=Table]' % (self.data_container.path), 'process') - self.scheduled = True - moose.reinit() - - def run(self, runtime): - moose.start(runtime) - - def save_data(self): - for child in self.data_container.children: - tab = moose.Table(child) - tab.xplot('%s.dat' % (tab.name), tab.name) - -import sys -clamp_mode = 'vclamp' -if __name__ == '__main__': - demo = SquidSetup() - if len(sys.argv) > 1: - clamp_mode = sys.argv[1] - # The pulsegen object needs different values for different clamp modes - if clamp_mode == 'iclamp': - demo.clamp_ckt.configure_pulses() - else: - demo.clamp_ckt.configure_pulses(baseLevel=0.0, firstDelay=10.0, firstLevel=SquidAxon.EREST_ACT, firstWidth=0.0, secondDelay=0.0, secondLevel=50.0+SquidAxon.EREST_ACT, secondWidth=20.0) - demo.schedule(1e-2, 0.01, clamp_mode) - - demo.run(50.0) - demo.save_data() - -# -# squid_demo.py ends here diff --git a/examples/squid/test_squid.py b/examples/squid/test_squid.py deleted file mode 100644 index 005cb16..0000000 --- a/examples/squid/test_squid.py +++ /dev/null @@ -1,117 +0,0 @@ -# test_squid.py --- -# -# Filename: test_squid.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed Feb 22 00:41:36 2012 (+0530) -# Version: -# Last-Updated: Wed Feb 22 00:41:51 2012 (+0530) -# By: Subhasis Ray -# Update #: 2 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# - -# Code: - -import unittest -import pylab -from squid import SquidModel - -class SquidAxonTest(unittest.TestCase): - def setUp(self): - self.vrange = numpy.linspace(SquidModel.VMIN, SquidModel.VMAX, SquidModel.VDIVS+1) - self.model = SquidModel('testSquidAxon') - - def calc_alpha_beta(self, params, table='A'): - denominator = params[table+'_C'] + numpy.exp((self.vrange+params[table+'_D'])/params[table+'_F']) - numerator = params[table+'_A'] + params[table+'_B'] * self.vrange - y = numpy.zeros(len(self.vrange)) - singularities = numpy.nonzero(denominator == 0.0)[0] - self.assertLessEqual(len(singularities), 1) - if len(singularities) == 1: - y[:singularities[0]] = numerator[:singularities[0]]/denominator[:singularities[0]] - y[singularities[0]] = params[table+'_B'] * params[table+'_F'] - y[singularities[0]+1:] = numerator[singularities[0]+1:]/denominator[singularities[0]+1:] - elif len(singularities) == 0: - y[:] = numerator[:]/denominator[:] - return y - - def test_Na_alpha_m(self): - alpha_m = self.calc_alpha_beta(SquidModel.Na_m_params, 'A') - difference = numpy.sqrt(numpy.mean((alpha_m - self.model.Na_channel.alpha_m)**2)) - pylab.title('Na_alpha_m') - pylab.plot(alpha_m, label='python') - pylab.plot(self.model.Na_channel.alpha_m, label='moose') - pylab.legend() - pylab.show() - self.assertLessEqual(difference, numpy.mean(alpha_m)*1e-6) - - def test_Na_beta_m(self): - beta_m = self.calc_alpha_beta(SquidModel.Na_m_params, 'B') - difference = numpy.sqrt(numpy.mean((beta_m - self.model.Na_channel.beta_m)**2)) - pylab.title('Na_beta_m') - pylab.plot(beta_m, label='python') - pylab.plot(self.model.Na_channel.beta_m, label='moose') - pylab.legend() - pylab.show() - self.assertLessEqual(difference, numpy.mean(beta_m)*1e-6) - - def test_Na_alpha_h(self): - alpha_h = self.calc_alpha_beta(SquidModel.Na_h_params, 'A') - difference = numpy.sqrt(numpy.mean((alpha_h - self.model.Na_channel.alpha_h)**2)) - pylab.title('Na_alpha_h') - pylab.plot(alpha_h, label='python') - pylab.plot(self.model.Na_channel.alpha_h, label='moose') - pylab.legend() - pylab.show() - self.assertLessEqual(difference, numpy.mean(alpha_h)*1e-6) - - def test_Na_beta_h(self): - beta_h = self.calc_alpha_beta(SquidModel.Na_h_params, 'B') - difference = numpy.sqrt(numpy.mean((beta_h - self.model.Na_channel.beta_h)**2)) - pylab.title('Na_beta_h') - pylab.plot(beta_h, label='python') - pylab.plot(self.model.Na_channel.beta_h, label='moose') - pylab.legend() - pylab.show() - self.assertLessEqual(difference, numpy.mean(beta_h)*1e-6) - - def test_K_alpha_m(self): - alpha_m = self.calc_alpha_beta(SquidModel.K_n_params, 'A') - difference = numpy.sqrt(numpy.mean((alpha_m - self.model.K_channel.alpha_m)**2)) - pylab.title('K_alpha_n') - pylab.plot(alpha_m, label='python') - pylab.plot(self.model.K_channel.alpha_m, label='moose') - pylab.legend() - pylab.show() - self.assertLessEqual(difference, numpy.mean(alpha_m)*1e-6) - - def test_K_beta_m(self): - beta_m = self.calc_alpha_beta(SquidModel.K_n_params, 'B') - difference = numpy.sqrt(numpy.mean((beta_m - self.model.K_channel.beta_m)**2)) - pylab.title('K_beta_n') - pylab.plot(beta_m, label='python') - pylab.plot(self.model.K_channel.beta_m, label='moose') - pylab.legend() - pylab.show() - self.assertLessEqual(difference, numpy.mean(beta_m)*1e-6) - - - -# -# test_squid.py ends here diff --git a/examples/symcomp/compare_genesis.py b/examples/symcomp/compare_genesis.py deleted file mode 100644 index aa9ab64..0000000 --- a/examples/symcomp/compare_genesis.py +++ /dev/null @@ -1,78 +0,0 @@ -# compare_genesis.py --- -# -# Filename: compare_genesis.py -# Description: -# Author: -# Maintainer: -# Created: Fri Jun 21 15:31:01 2013 (+0530) -# Version: -# Last-Updated: Wed Jun 26 14:38:58 2013 (+0530) -# By: subha -# Update #: 30 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -from pylab import * - -moose_soma = loadtxt('symcompartment.txt') -plot(moose_soma[:,0], moose_soma[:,1], color='#114477', ls='', marker='o', label='moose-soma', alpha=0.5) -plot(moose_soma[:,0], moose_soma[:,2], color='#4477AA', ls='', marker='o', label='moose-d1', alpha=0.5) -plot(moose_soma[:,0], moose_soma[:,3], color='#77AADD', ls='', marker='o', label='moose-d2', alpha=0.5) - -moose_soma = loadtxt('symcompartment_readcell.txt') -plot(moose_soma[:,0], moose_soma[:,1], color='#117744', ls='', marker='x', label='moose-readcell-soma', alpha=0.5) -plot(moose_soma[:,0], moose_soma[:,2], color='#44AAAA', ls='', marker='x', label='moose-readcell-d1', alpha=0.5) -plot(moose_soma[:,0], moose_soma[:,3], color='#77CCCC', ls='', marker='x', label='moose-readcell-d2', alpha=0.5) - -gen_d1 = loadtxt('genesis_d1_Vm.txt') -gen_soma = loadtxt('genesis_soma_Vm.txt') -gen_d2 = loadtxt('genesis_d2_Vm.txt') -plot(gen_soma[:, 0], gen_soma[:, 1], color='#771122', ls='', marker='x', label='gen-soma', alpha=0.5) -plot(gen_d1[:,0], gen_d1[:,1], color='#AA4455', ls='', marker='x', label='gen-d1', alpha=0.5) -plot(gen_d2[:,0], gen_d2[:,1], color='#771155', ls='', marker='x', label='gen-d2', alpha=0.5) - -gen_d1 = loadtxt('genesis_readcell_d1_Vm.txt') -gen_soma = loadtxt('genesis_readcell_soma_Vm.txt') -gen_d2 = loadtxt('genesis_readcell_d2_Vm.txt') -plot(gen_soma[:, 0], gen_soma[:, 1], color='#774411', ls='--', label='gen-readcell-soma', alpha=0.5) -plot(gen_d1[:,0], gen_d1[:,1], color='#AA7744', ls='--', label='gen-readcell-d1', alpha=0.5) -plot(gen_d2[:,0], gen_d2[:,1], color='#DDAA77', ls='--', label='gen-readcell-d2', alpha=0.5) - -legend() -show() - -# -# compare_genesis.py ends here diff --git a/examples/symcomp/compartments.g b/examples/symcomp/compartments.g deleted file mode 100644 index 6b7ac84..0000000 --- a/examples/symcomp/compartments.g +++ /dev/null @@ -1,116 +0,0 @@ -//genesis - -/*********************************************************************** -** ** -** Compartments.g : compartment definition file, neuron builder kit ** -** ** -** By E. De Schutter, Nov 1990 ** -** Modified June 1990 ** -** ** -** Modified by D. Beeman for GENESIS 2.0, April 1995 ** -************************************************************************/ - -/* FUNCTIONS TO MAKE DEFAULT LIBRARY COMPARTMENTS */ - -// NOTE: Previous (GENESIS 1.*) versions assumed that global variables -// for RM, CN, RA and EREST_ACT had been previously declared and set -// This is no longer necessary - -function make_cylind_compartment - // These default compartment parameters can be overridden by readcell - float RM = 0.33333 // specific membrane resistance (ohms m^2) - float CM = 0.01 // specific membrane capacitance (farads/m^2) - float RA = 0.3 // specific axial resistance (ohms m) - float EREST_ACT = -0.07 // resting membrane potential (volts) - float len = 100.0e-6 - float dia = 2.0e-6 - float PI = 3.14159 - float surface = len * dia * PI - - if (!{exists compartment}) - create compartment compartment - end - setfield compartment \ - Cm {CM * surface} \ // F - Ra {4.0*RA*len / (dia*dia*PI)} \ // ohm - Em {EREST_ACT} \ // V - Rm {RM / surface} \ // ohm - dia {dia} \ - len {len} \ - inject 0.0 -end - -function make_cylind_symcompartment - // These default compartment parameters can be overridden by readcell - float RM = 0.33333 // specific membrane resistance (ohms m^2) - float CM = 0.01 // specific membrane capacitance (farads/m^2) - float RA = 0.3 // specific axial resistance (ohms m) - float EREST_ACT = -0.07 // resting membrane potential (volts) - float len = 100.0e-6 - float dia = 2.0e-6 - float PI = 3.14159 - float surface = len * dia * PI - - if (!{exists symcompartment}) - create symcompartment symcompartment - end - setfield symcompartment \ - Cm {CM * surface} \ // F - Ra {4.0*RA*len / (dia*dia*PI)} \ // ohm - Em {EREST_ACT} \ // V - Rm {RM / surface} \ // ohm - dia {dia} \ - len {len} \ - inject 0.0 - -end - -/******************************************************************************/ -/* These functions are included for compatibility with older neurokit -** versions, one does not need to call them anymore though! */ - -function make_sphere_compartment - // These default compartment parameters can be overridden by readcell - float RM = 0.33333 // specific membrane resistance (ohms m^2) - float CM = 0.01 // specific membrane capacitance (farads/m^2) - float RA = 0.3 // specific axial resistance (ohms m) - float EREST_ACT = -0.07 // resting membrane potential (volts) - float dia = 20.0e-6 - float PI = 3.14159 - float surface = dia * dia * PI - - if (!{exists compartment_sphere}) - create compartment compartment_sphere - end - setfield compartment_sphere \ - Cm {CM * surface} \ // F - Ra {8.0*RA / (dia*PI)} \ // ohm - Em {EREST_ACT} \ // V - Rm {RM / surface} \ // ohm - dia {dia} \ - len 0.0 \ - inject 0.0 -end - -function make_sphere_symcompartment - // These default compartment parameters can be overridden by readcell - float RM = 0.33333 // specific membrane resistance (ohms m^2) - float CM = 0.01 // specific membrane capacitance (farads/m^2) - float RA = 0.3 // specific axial resistance (ohms m) - float EREST_ACT = -0.07 // resting membrane potential (volts) - float dia = 20.0e-6 - float PI = 3.14159 - float surface = dia * dia * PI - - if (!{exists symcompartment_sphere}) - create symcompartment symcompartment_sphere - end - setfield symcompartment_sphere \ - Cm {CM * surface} \ // F - Ra {8.0*RA / (dia*PI)} \ // ohm - Em {EREST_ACT} \ // V - Rm {RM / surface} \ // ohm - dia {dia} \ - len 0.0 \ - inject 0.0 -end diff --git a/examples/symcomp/symcomp.g b/examples/symcomp/symcomp.g deleted file mode 100644 index 06ab947..0000000 --- a/examples/symcomp/symcomp.g +++ /dev/null @@ -1,46 +0,0 @@ -float SIMTIME = 100e-3 -float SIMDT = 1e-6 -float NSTEPS = {SIMTIME/SIMDT} - -create symcompartment soma -setfield soma Em -60e-3 Rm 1e9 Cm 1e-11 Ra 1e6 -create symcompartment d1 -setfield d1 Em -60e-3 Rm 1e8 Cm 1e-10 Ra 1e7 -create symcompartment d2 -setfield d2 Em -60e-3 Rm 1e8 Cm 1e-10 Ra 2e7 -addmsg d1 soma CONNECTTAIL Ra Vm -addmsg d2 soma CONNECTTAIL Ra Vm -addmsg soma d1 CONNECTHEAD Ra Vm -addmsg soma d2 CONNECTHEAD Ra Vm -addmsg d1 d2 CONNECTCROSS Ra Vm -addmsg d2 d1 CONNECTCROSS Ra Vm - -create pulsegen pg -setfield pg level1 1e-6 delay1 10e-3 width1 20e-3 delay2 1e9 -addmsg pg d1 INJECT output - -create table soma_tab -setfield soma_tab step_mode 3 -call soma_tab TABCREATE {NSTEPS} 0 {SIMTIME} -addmsg soma soma_tab INPUT Vm - -create table d1_tab -setfield d1_tab step_mode 3 -call d1_tab TABCREATE {NSTEPS} 0 {SIMTIME} -addmsg d1 d1_tab INPUT Vm - -create table d2_tab -setfield d2_tab step_mode 3 -call d2_tab TABCREATE {NSTEPS} 0 {SIMTIME} -addmsg d2 d2_tab INPUT Vm - -setclock 0 {SIMDT} -useclock 0 /## -reset -step {SIMTIME} -t - -tab2file genesis_soma_Vm.txt soma_tab table -mode xy -nentries {NSTEPS} -overwrite -tab2file genesis_d1_Vm.txt d1_tab table -mode xy -nentries {NSTEPS} -overwrite -tab2file genesis_d2_Vm.txt d2_tab table -mode xy -nentries {NSTEPS} -overwrite - -// quit diff --git a/examples/symcomp/symcomp.p b/examples/symcomp/symcomp.p deleted file mode 100644 index 8fc79a0..0000000 --- a/examples/symcomp/symcomp.p +++ /dev/null @@ -1,20 +0,0 @@ -*cartesian -*relative -*symmetric -*set_global EREST_ACT -0.06 -*set_compt_param ELEAK -0.06 -*set_compt_param RM 2.513274122871835 -*set_compt_param CM 0.003978873577297383 -*set_compt_param RA 7.853981633974484 -soma none 40 0 0 20 -*set_compt_param ELEAK -0.06 -*set_compt_param RM 0.15707963267948968 -*set_compt_param CM 0.06366197723675814 -*set_compt_param RA 15.707963267948967 -d1 soma 50 0 0 10 -*set_compt_param ELEAK -0.06 -*set_compt_param RM 0.025132741228718343 -*set_compt_param CM 0.3978873577297384 -*set_compt_param RA 12.56637061435917 -d2 soma 20 0 0 4 - diff --git a/examples/symcomp/symcomp.py b/examples/symcomp/symcomp.py deleted file mode 100644 index 0876627..0000000 --- a/examples/symcomp/symcomp.py +++ /dev/null @@ -1,109 +0,0 @@ -# symcompartment.py --- -# -# Filename: symcompartment.py -# Description: -# Author: -# Maintainer: -# Created: Thu Jun 20 17:47:10 2013 (+0530) -# Version: -# Last-Updated: Wed Jun 26 11:43:47 2013 (+0530) -# By: subha -# Update #: 90 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import numpy as np -import pylab - -import moose - -simdt = 1e-6 -simtime = 100e-3 - -def test_symcompartment(): - model = moose.Neutral('model') - soma = moose.SymCompartment('%s/soma' % (model.path)) - soma.Em = -60e-3 - soma.Rm = 1e9 - soma.Cm = 1e-11 - soma.Ra = 1e6 - d1 = moose.SymCompartment('%s/d1' % (model.path)) - d1.Rm = 1e8 - d1.Cm = 1e-10 - d1.Ra = 1e7 - d2 = moose.SymCompartment('%s/d2' % (model.path)) - d2.Rm = 1e8 - d2.Cm = 1e-10 - d2.Ra = 2e7 - moose.connect(d1, 'proximal', soma, 'distal') - moose.connect(d2, 'proximal', soma, 'distal') - moose.connect(d1, 'sibling', d2, 'sibling') - pg = moose.PulseGen('/model/pulse') - pg.delay[0] = 10e-3 - pg.width[0] = 20e-3 - pg.level[0] = 1e-6 - pg.delay[1] = 1e9 - moose.connect(pg, 'output', d1, 'injectMsg') - data = moose.Neutral('/data') - tab_soma = moose.Table('%s/soma_Vm' % (data.path)) - tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) - tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) - moose.connect(tab_soma, 'requestOut', soma, 'getVm') - moose.connect(tab_d1, 'requestOut', d1, 'getVm') - moose.connect(tab_d2, 'requestOut', d2, 'getVm') - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.useClock(0, '/model/##[ISA=Compartment]', 'init') # This is allowed because SymCompartment is a subclass of Compartment - moose.useClock(1, '/model/##', 'process') - moose.useClock(2, '/data/##[ISA=Table]', 'process') - moose.reinit() - moose.start(simtime) - t = np.linspace(0, simtime, len(tab_soma.vector)) - data_matrix = np.vstack((t, tab_soma.vector, tab_d1.vector, tab_d2.vector)) - np.savetxt('symcompartment.txt', data_matrix.transpose()) - pylab.plot(t, tab_soma.vector, label='Vm_soma') - pylab.plot(t, tab_d1.vector, label='Vm_d1') - pylab.plot(t, tab_d2.vector, label='Vm_d2') - pylab.show() - -if __name__ == '__main__': - test_symcompartment() - - - -# -# symcompartment.py ends here diff --git a/examples/symcomp/symcomp_readcell.g b/examples/symcomp/symcomp_readcell.g deleted file mode 100644 index 8c5e295..0000000 --- a/examples/symcomp/symcomp_readcell.g +++ /dev/null @@ -1,44 +0,0 @@ -include compartments - -float EREST_ACT = -0.06 -float SIMTIME = 100e-3 -float SIMDT = 1e-6 -float NSTEPS = {SIMTIME/SIMDT} - - -create neutral /library -disable /library -pushe /library -make_cylind_symcompartment -pope - -readcell symcomp.p /cell - -create pulsegen pg -setfield pg level1 1e-6 delay1 10e-3 width1 20e-3 delay2 1e9 -addmsg pg /cell/d1 INJECT output - -create table soma_tab -setfield soma_tab step_mode 3 -call soma_tab TABCREATE {NSTEPS} 0 {SIMTIME} -addmsg /cell/soma soma_tab INPUT Vm - -create table d1_tab -setfield d1_tab step_mode 3 -call d1_tab TABCREATE {NSTEPS} 0 {SIMTIME} -addmsg /cell/d1 d1_tab INPUT Vm - -create table d2_tab -setfield d2_tab step_mode 3 -call d2_tab TABCREATE {NSTEPS} 0 {SIMTIME} -addmsg /cell/d2 d2_tab INPUT Vm - -setclock 0 {SIMDT} -useclock 0 /## -reset -step {SIMTIME} -t - -tab2file genesis_readcell_soma_Vm.txt soma_tab table -mode xy -nentries {NSTEPS} -overwrite -tab2file genesis_readcell_d1_Vm.txt d1_tab table -mode xy -nentries {NSTEPS} -overwrite -tab2file genesis_readcell_d2_Vm.txt d2_tab table -mode xy -nentries {NSTEPS} -overwrite - diff --git a/examples/symcomp/symcomp_readcell.py b/examples/symcomp/symcomp_readcell.py deleted file mode 100644 index de063e6..0000000 --- a/examples/symcomp/symcomp_readcell.py +++ /dev/null @@ -1,92 +0,0 @@ -# symcomp_readcell.py --- -# -# Filename: symcomp_readcell.py -# Description: -# Author: -# Maintainer: -# Created: Fri Jun 21 16:38:36 2013 (+0530) -# Version: -# Last-Updated: Fri Jun 21 20:33:11 2013 (+0530) -# By: subha -# Update #: 20 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import moose -import pylab -import numpy as np - -simdt = 1e-6 -simtime = 100e-3 - -def test_symcomp_readcell(): - model = moose.Neutral('/model') - cell = moose.loadModel('symcomp.p', '%s/cell' % (model.path)) - pg = moose.PulseGen('/model/pulse') - pg.delay[0] = 10e-3 - pg.width[0] = 20e-3 - pg.level[0] = 1e-6 - pg.delay[1] = 1e9 - moose.connect(pg, 'output', moose.element('/model/cell/d1'), 'injectMsg') - data = moose.Neutral('/data') - tab_soma = moose.Table('%s/soma_Vm' % (data.path)) - tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) - tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) - moose.connect(tab_soma, 'requestOut', moose.element('/model/cell/soma'), 'getVm') - moose.connect(tab_d1, 'requestOut', moose.element('/model/cell/d1'), 'getVm') - moose.connect(tab_d2, 'requestOut', moose.element('/model/cell/d2'), 'getVm') - moose.setClock(0, simdt) - moose.setClock(1, simdt) - moose.setClock(2, simdt) - moose.useClock(0, '/model/##[ISA=Compartment]', 'init') # This is allowed because SymCompartment is a subclass of Compartment - moose.useClock(1, '/model/##', 'process') - moose.useClock(2, '/data/##[ISA=Table]', 'process') - moose.reinit() - moose.start(simtime) - t = np.linspace(0, simtime, len(tab_soma.vector)) - data_matrix = np.vstack((t, tab_soma.vector, tab_d1.vector, tab_d2.vector)) - np.savetxt('symcompartment_readcell.txt', data_matrix.transpose()) - pylab.plot(t, tab_soma.vector, label='Vm_soma') - pylab.plot(t, tab_d1.vector, label='Vm_d1') - pylab.plot(t, tab_d2.vector, label='Vm_d2') - pylab.show() - -if __name__ == '__main__': - test_symcomp_readcell() - - -# -# symcomp_readcell.py ends here diff --git a/examples/traub_2005/.ignore_on_travis b/examples/traub_2005/.ignore_on_travis deleted file mode 100644 index e69de29..0000000 diff --git a/examples/traub_2005/README b/examples/traub_2005/README deleted file mode 100644 index b582688..0000000 --- a/examples/traub_2005/README +++ /dev/null @@ -1,54 +0,0 @@ --*- mode: org -*- - -This directory contains port of Single column thalamocortical model by -Traub et al (2005). The subdirectory `py` contains pymoose version of -the model. Subdirectory `nrn` contains scripts to simulate individual -components of the model to generate data for comparison. To run any -script in the `nrn` directory you need to download the NEURON model -from [[http://senselab.med.yale.edu/modeldb/showmodel.asp?model=82894]] -and unzip the contents and copy all the contents of the `nrntraub` -directory (generated by unzipping) into the `nrn` subdirectory and -finally build the mechanisms by running `nrnivmodl mod/` (this is -described in detail in the readme of the NEURON model). - - -* Unit tests - For each ion channel `chan`, there is a hoc file called - `test_chan.hoc`. Running this file will create Channel_Vm.dat and - Channel_Gk.dat wehere `Channel` is the camelcased name of the channel - (used in MOOSE). - - For [Ca2+ ] object we have test_cad.hoc in nrn directory and - test_capool.py in py directory. - - The channel names in MOOSE do not always match the NEURON names, but - the data files generated are consistent between the two - versions. Already the reference data is provided in gzipped form in - nrn/data directory. If you want to update this data by rerunning the - NEURON tests, run `gzip *.dat` to compress them as MOOSE tests expect - the reference data to be in this form (with extension .gz). - - To run all the MOOSE tests, do: `python -m unittest -v test_nachans - test_kchans test_cachans test_archan test_capool` from the - commandline. - - The standard test is apply 1 pA current injection from 50 to 150 ms, - then apply a -1 pA current injection from 200 to 300 ms. - - The test_{celltype} files have step current injection test for each - celltype. - -* Using single cell models - The single cell classes can be used to create new copies of the - prototype cell. The signature is: - - cellclass(targetpath) - - for example, to create a DeepBasket cell with path '/model/db', you - will call: - - db = DeepBasket('/model/db') - - Look at cell_test_utils.py:setup_current_step_model function to see - how a single step current injection is setup for any specified cell - class. diff --git a/examples/traub_2005/nrn/hoc/utility.hoc b/examples/traub_2005/nrn/hoc/utility.hoc deleted file mode 100644 index ad29f92..0000000 --- a/examples/traub_2005/nrn/hoc/utility.hoc +++ /dev/null @@ -1,167 +0,0 @@ -strdef tstr, parent_str, compname, comp_index, cellname, dump_file_name - -proc print_cell(){ localobj cell, dump_file, strfn, secref - print "###### Printcell" - if (numarg() < 2){ - print "Must pass a cell object and a file name" - return - } - strfn = new StringFunctions() - print "Refering to cell" - cell = $o1 - dump_file_name = $s2 - dump_file = new File() - print "Dump file created" - print "arg ", numarg() - strfn.head(secname(), "\\[", tstr) - dump_file.wopen(dump_file_name) - print "Opened dump file :", dump_file_name - dump_file.printf("comp,len,dia,sarea,xarea,Em,Cm,Rm,Ra") - dump_file.printf(",e_ar,gbar_ar") - dump_file.printf(",tau_cad,beta_cad") - dump_file.printf(",e_cal,gbar_cal") - dump_file.printf(",e_cat,gbar_cat") - dump_file.printf(",e_k2,gbar_k2") - dump_file.printf(",e_ka,gbar_ka") - dump_file.printf(",e_kahp,gbar_kahp") - dump_file.printf(",e_kc,gbar_kc") - dump_file.printf(",e_kdr,gbar_kdr") - dump_file.printf(",e_km,gbar_km") - dump_file.printf(",e_naf,gbar_naf") - dump_file.printf(",e_naf2,gbar_naf2") - dump_file.printf(",e_nap,gbar_nap") - dump_file.printf(",e_napf,gbar_napf") - dump_file.printf("\n") - print "###### about to start traversing" - - forsec cell.all { - sarea = PI * L * diam * 1e-8 // um^2 to cm^2 - xarea = PI * diam * diam * 1e-8 / 4.0 - secref = new SectionRef() - dump_file.printf("%s,%g,%g,%g,%g,%g,%g,%g,%g", secname(), L * 1e-6, diam * 1e-6, sarea * 1e-4, xarea*1e-4, e_pas*1e-3, cm * 1e-6 * sarea, 1.0 /(g_pas * sarea), Ra * L * 1e-4 / xarea ) // all multipliers for unit conversion - if (ismembrane("ar")) dump_file.printf(",%g,%g", 1e-3 * erev_ar, gbar_ar * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("cad")) dump_file.printf(",%g,%g", 1e-3 / beta_cad, 1e6 * phi_cad/sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("cal")) dump_file.printf(",%g,%g", 1e-3 * 125, gbar_cal * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("cat")) dump_file.printf(",%g,%g", 1e-3 * 125, gbar_cat * sarea) else if (ismembrane("cat_a")) dump_file.printf(",%g,%g", 1e-3 * 125, gbar_cat_a * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("k2")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_k2 * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("ka")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_ka * sarea) else if (ismembrane("ka_ib")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_ka_ib * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("kahp")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kahp * sarea) else if (ismembrane("kahp_deeppyr")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kahp_deeppyr * sarea) else if (ismembrane("kahp_slower")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kahp_slower * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("kc")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kc * sarea) else if (ismembrane("kc_fast")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kc_fast * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("kdr")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kdr * sarea) else if (ismembrane("kdr_fs")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_kdr_fs * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("km")) dump_file.printf(",%g,%g", 1e-3 * ek, gbar_km * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("naf")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_naf * sarea) else if (ismembrane("naf_tcr")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_naf_tcr * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("naf2")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_naf2 * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("nap")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_nap * sarea) else dump_file.printf(",0.0,0.0") - if (ismembrane("napf")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_napf * sarea) else if (ismembrane("napf_spinstell")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_napf_spinstell * sarea) else if (ismembrane("napf_tcr")) dump_file.printf(",%g,%g", 1e-3 * ena, gbar_napf_tcr * sarea) else dump_file.printf(",0.0,0.0") - dump_file.printf("\n") - } - dump_file.close() - } - - -proc print_readcell(){ localobj cell,dump_file, strfn, secref, seclist - print "###### Print Readcell - print the data in a .p file for MOOSE readcell" - if (numarg() < 2){ - print "Must pass a cell object and a file name" - return - } - strfn = new StringFunctions() - print "Refering to cell" - cell = $o1 - dump_file = new File() - print "Dump file created" - print "arg ", numarg() - // strfn.head(secname(), "\\[", tstr) - // sprint(cellname, "%s", tstr) - // sprint(tstr, "%s.p", tstr) - dump_file.wopen($s2) - print "Opened dump file :", $s2 - seclist = new SectionList() - seclist.allroots() - forsec seclist { - seclist.wholetree() - } - seclist.unique() - // forsec seclist { - // print secname() - // } - - - print "###### about to start traversing" - dump_file.printf("/***********************************************************************\n") - dump_file.printf(" * This code was generated from a NEURON model using stub hoc code\n") - dump_file.printf(" * by Subhasis Ray, NCBS, Bangalore.\n") - dump_file.printf(" * It corresponds to %s cell in the model by Traub, et al. 2005\n", cellname) - dump_file.printf(" * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539\n\n") - dump_file.printf(" * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and \n") - dump_file.printf(" * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in \n") - dump_file.printf(" * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance\n") - dump_file.printf(" * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003\n") - dump_file.printf(" * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract\n\n") - dump_file.printf(" * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham,\n") - dump_file.printf(" * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, \n") - dump_file.printf(" * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington\n") - dump_file.printf(" * Single-column thalamocortical network model exhibiting \n") - dump_file.printf(" * gamma oscillations, sleep spindles, and epileptogenic bursts.\n") - dump_file.printf(" * J. Neurophysiol. 93, 2194-2232, 2005\n") - dump_file.printf(" * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract\n") - dump_file.printf(" ***********************************************************************/\n") - - dump_file.printf("*cartesian\n*relative\n*asymmetric\n") - dump_file.printf("*set_global EREST_ACT %g\n", cell.comp[1].e_pas*1e-3) - forsec seclist { - sarea = PI * L * diam * 1e-8 // um^2 to cm^2 - xarea = PI * diam * diam * 1e-8 / 4.0 - secref = new SectionRef() - if (!secref.has_parent){ - sprint(parent_str, "none") - } else { - secref.parent { - strfn.tail(secname(), "\\.", parent_str) - strfn.head(parent_str, "\\]", comp_index) - strfn.tail(comp_index, "\\[", comp_index) - strfn.head(parent_str, "\\[", parent_str) - sprint(parent_str, "%s_%s", parent_str, comp_index) - } - } - sprint(compname, "%s", secname()) - strfn.tail(secname(), "\\.", compname) - strfn.head(compname, "\\]", comp_index) - strfn.tail(comp_index, "\\[", comp_index) - strfn.head(compname, "\\[", compname) - sprint(compname, "%s_%s", compname, comp_index) - // print "secname: ", compname, " index: ", comp_index, " parent: ", parent_str - dump_file.printf("*set_compt_param ELEAK %g\n", e_pas * 1e-3) - dump_file.printf("*set_compt_param RM %g\n", 1e-4/g_pas) - dump_file.printf("*set_compt_param CM %g\n", cm * 1e-2) - dump_file.printf("*set_compt_param RA %g\n", Ra * 1e-2) - dump_file.printf("%s %s %g %g %g %g", compname, parent_str, L, 0.0, 0.0, diam) - if (ismembrane("ar")) if (gbar_ar != 0.0) dump_file.printf(" AR %g", gbar_ar * 1e4) - if (ismembrane("cad")) dump_file.printf(" CaPool %g", -phi_cad * 1e6 / sarea) - if (ismembrane("cal")) if (gbar_cal != 0.0) dump_file.printf(" CaL %g", gbar_cal * 1e4) - if (ismembrane("cat")) if (gbar_cat != 0.0) dump_file.printf(" CaT %g", gbar_cat * 1e4) - if (ismembrane("cat_a")) if (gbar_cat_a != 0.0) dump_file.printf(" CaT_A %g", gbar_cat_a * 1e4) - if (ismembrane("k2")) if (gbar_k2 != 0.0) dump_file.printf(" K2 %g", gbar_k2 * 1e4) - if (ismembrane("ka")) if (gbar_ka != 0.0) dump_file.printf(" KA %g", gbar_ka * 1e4) - if (ismembrane("ka_ib")) if (gbar_ka_ib != 0.0) dump_file.printf(" KA_IB %g", gbar_ka_ib * 1e4) - if (ismembrane("kahp")) if (gbar_kahp != 0.0) dump_file.printf(" KAHP %g", gbar_kahp * 1e4) - if (ismembrane("kahp_deeppyr")) if (gbar_kahp_deeppyr != 0.0) dump_file.printf(" KAHP_DP %g", gbar_kahp_deeppyr * 1e4) - if (ismembrane("kahp_slower")) if (gbar_kahp_slower != 0.0) dump_file.printf(" KAHP_SLOWER %g", gbar_kahp_slower * 1e4 ) - if (ismembrane("kc")) if (gbar_kc != 0.0) dump_file.printf(" KC %g", gbar_kc * 1e4) - if (ismembrane("kc_fast")) if (gbar_kc_fast != 0.0) dump_file.printf(" KC_FAST %g", gbar_kc_fast * 1e4) - if (ismembrane("kdr")) if (gbar_kdr != 0.0) dump_file.printf(" KDR %g", gbar_kdr * 1e4) - if (ismembrane("kdr_fs")) if (gbar_kdr_fs != 0.0) dump_file.printf(" KDR_FS %g", gbar_kdr_fs * 1e4) - if (ismembrane("km")) if (gbar_km != 0.0) dump_file.printf(" KM %g", gbar_km * 1e4) - if (ismembrane("naf")) if (gbar_naf != 0.0) dump_file.printf(" NaF %g", gbar_naf * 1e4) - if (ismembrane("naf2")) if (gbar_naf2 != 0.0) dump_file.printf(" NaF2 %g", gbar_naf2 * 1e4) - if (ismembrane("naf_tcr")) if (gbar_naf_tcr != 0.0) dump_file.printf(" NaF_TCR %g", gbar_naf_tcr * 1e4) - if (ismembrane("nap")) if (gbar_nap != 0.0) dump_file.printf(" NaP %g", gbar_nap * 1e4) - if (ismembrane("napf")) if (gbar_napf != 0.0) dump_file.printf(" NaPF %g", gbar_napf * 1e4) - if (ismembrane("napf_spinstell")) if (gbar_napf_spinstell != 0.0) dump_file.printf(" NaPF_SS %g", gbar_napf_spinstell * 1e4) - if (ismembrane("napf_tcr")) if (gbar_napf_tcr != 0.0) dump_file.printf(" NaPF_TCR %g", gbar_napf_tcr * 1e4) - dump_file.printf("\n") - } - dump_file.close() - } - - diff --git a/examples/traub_2005/nrn/test_ar.hoc b/examples/traub_2005/nrn/test_ar.hoc deleted file mode 100644 index 105397f..0000000 --- a/examples/traub_2005/nrn/test_ar.hoc +++ /dev/null @@ -1,31 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("ar", 1e-9) -testcomp.soma { - fastNa_shift_ar = -3.5 -} - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("ar", Dt) -run() -testcomp.save_data("AR", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_cad.hoc b/examples/traub_2005/nrn/test_cad.hoc deleted file mode 100644 index c0bd94d..0000000 --- a/examples/traub_2005/nrn/test_cad.hoc +++ /dev/null @@ -1,40 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, cadvec, cafile - -testcomp = new singlecomp() - -testcomp.setup_channel("cal", 1e-9) -testcomp.soma { - insert cad - beta_cad = 0.02 - phi_cad = 52000.0 - ceiling_cad = 1e6 -} - -testcomp.setup_recording("cal", Dt) - -cadvec = new Vector() -cadvec.record(&testcomp.soma.cai(0.5), Dt) -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -run() -testcomp.save_data("CaPool", Dt) -cafile = new File() -cafile.wopen("data/CaPool_Ca.dat") -for ii =0, cadvec.size() - 1 { - cafile.printf("%g %g\n", ii * Dt * 1e-3, cadvec.x[ii]) -} -cafile.close() -quit() diff --git a/examples/traub_2005/nrn/test_cal.hoc b/examples/traub_2005/nrn/test_cal.hoc deleted file mode 100644 index db0b66e..0000000 --- a/examples/traub_2005/nrn/test_cal.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("cal", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("cal", Dt) -run() -testcomp.save_data("CaL", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_cat.hoc b/examples/traub_2005/nrn/test_cat.hoc deleted file mode 100644 index f3cfc2c..0000000 --- a/examples/traub_2005/nrn/test_cat.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("cat", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("cat", Dt) -run() -testcomp.save_data("CaT", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_cat_a.hoc b/examples/traub_2005/nrn/test_cat_a.hoc deleted file mode 100644 index 6c0287b..0000000 --- a/examples/traub_2005/nrn/test_cat_a.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("cat_a", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("cat_a", Dt) -run() -testcomp.save_data("CaT_A", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_deepaxoaxonic.hoc b/examples/traub_2005/nrn/test_deepaxoaxonic.hoc deleted file mode 100644 index 776e5ba..0000000 --- a/examples/traub_2005/nrn/test_deepaxoaxonic.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/deepaxax_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new deepaxax() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/DeepAxoaxonic_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/DeepAxoaxonic_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/DeepAxoaxonic.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_deepbasket.hoc b/examples/traub_2005/nrn/test_deepbasket.hoc deleted file mode 100644 index 53c2412..0000000 --- a/examples/traub_2005/nrn/test_deepbasket.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/deepbask_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new deepbask() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/DeepBasket_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/DeepBasket_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/DeepBasket.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_deeplts.hoc b/examples/traub_2005/nrn/test_deeplts.hoc deleted file mode 100644 index 66d9fde..0000000 --- a/examples/traub_2005/nrn/test_deeplts.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/deepLTS_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new deepLTS() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/DeepLTS_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/DeepLTS_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/DeepLTS.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_k2.hoc b/examples/traub_2005/nrn/test_k2.hoc deleted file mode 100644 index 2b25d5f..0000000 --- a/examples/traub_2005/nrn/test_k2.hoc +++ /dev/null @@ -1,29 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 -secondorder=0 -celsius=30 -dt = 1e-3 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("k2", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("k2", Dt) -run() -testcomp.save_data("K2", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_ka.hoc b/examples/traub_2005/nrn/test_ka.hoc deleted file mode 100644 index f816d5d..0000000 --- a/examples/traub_2005/nrn/test_ka.hoc +++ /dev/null @@ -1,27 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("ka", 1e-9) -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("ka", Dt) -run() -testcomp.save_data("KA", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_ka_ib.hoc b/examples/traub_2005/nrn/test_ka_ib.hoc deleted file mode 100644 index 038997d..0000000 --- a/examples/traub_2005/nrn/test_ka_ib.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("ka_ib", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("ka_ib", Dt) -run() -testcomp.save_data("KA_IB", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_kahp.hoc b/examples/traub_2005/nrn/test_kahp.hoc deleted file mode 100644 index a46a97e..0000000 --- a/examples/traub_2005/nrn/test_kahp.hoc +++ /dev/null @@ -1,50 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -dt = Dt -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile - - -testcomp = new singlecomp() - -testcomp.setup_channel("kahp", 1e-9) - -// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and -// loop afterwards -ca_vec_size = tstop / Dt + 1 -ca_vec = new Vector(ca_vec_size) -tvec = new Vector(ca_vec_size) -for ii=0, ca_vec_size - 1 { - ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) - tvec.x[ii] = ii * Dt -} - -// Vector.play(target_variable, vector_t, continuous) -ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kahp", Dt) -ca_recvec = new Vector() -ca_recvec.record(&testcomp.soma.cai(0.5), Dt) -run() -testcomp.save_data("KAHP", Dt) -cafile = new File() -cafile.wopen("data/KAHP_Ca.dat") -for ii = 0, ca_recvec.size() - 1 { - cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) -} -cafile.close() -quit() - - diff --git a/examples/traub_2005/nrn/test_kahp_deeppyr.hoc b/examples/traub_2005/nrn/test_kahp_deeppyr.hoc deleted file mode 100644 index 3f3343b..0000000 --- a/examples/traub_2005/nrn/test_kahp_deeppyr.hoc +++ /dev/null @@ -1,50 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -dt = Dt -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile - - -testcomp = new singlecomp() - -testcomp.setup_channel("kahp_deeppyr", 1e-9) - -// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and -// loop afterwards -ca_vec_size = tstop / Dt + 1 -ca_vec = new Vector(ca_vec_size) -tvec = new Vector(ca_vec_size) -for ii=0, ca_vec_size - 1 { - ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) - tvec.x[ii] = ii * Dt -} - -// Vector.play(target_variable, vector_t, continuous) -ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kahp_deeppyr", Dt) -ca_recvec = new Vector() -ca_recvec.record(&testcomp.soma.cai(0.5), Dt) -run() -testcomp.save_data("KAHP_DP", Dt) -cafile = new File() -cafile.wopen("data/KAHP_DP.dat") -for ii = 0, ca_recvec.size() - 1 { - cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) -} -cafile.close() -quit() - - diff --git a/examples/traub_2005/nrn/test_kahp_slower.hoc b/examples/traub_2005/nrn/test_kahp_slower.hoc deleted file mode 100644 index 4cda856..0000000 --- a/examples/traub_2005/nrn/test_kahp_slower.hoc +++ /dev/null @@ -1,50 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -dt = Dt -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile - - -testcomp = new singlecomp() - -testcomp.setup_channel("kahp_slower", 1e-9) - -// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and -// loop afterwards -ca_vec_size = tstop / Dt + 1 -ca_vec = new Vector(ca_vec_size) -tvec = new Vector(ca_vec_size) -for ii=0, ca_vec_size - 1 { - ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) - tvec.x[ii] = ii * Dt -} - -// Vector.play(target_variable, vector_t, continuous) -ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kahp_slower", Dt) -ca_recvec = new Vector() -ca_recvec.record(&testcomp.soma.cai(0.5), Dt) -run() -testcomp.save_data("KAHP_SLOWER", Dt) -cafile = new File() -cafile.wopen("data/KAHP_SLOWER_Ca.dat") -for ii = 0, ca_recvec.size() - 1 { - cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) -} -cafile.close() -quit() - - diff --git a/examples/traub_2005/nrn/test_kc.hoc b/examples/traub_2005/nrn/test_kc.hoc deleted file mode 100644 index 0263b9d..0000000 --- a/examples/traub_2005/nrn/test_kc.hoc +++ /dev/null @@ -1,50 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -dt = Dt -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile - - -testcomp = new singlecomp() - -testcomp.setup_channel("kc", 1e-9) - -// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and -// loop afterwards -ca_vec_size = tstop / Dt + 1 -ca_vec = new Vector(ca_vec_size) -tvec = new Vector(ca_vec_size) -for ii=0, ca_vec_size - 1 { - ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) - tvec.x[ii] = ii * Dt -} - -// Vector.play(target_variable, vector_t, continuous) -ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kc", Dt) -ca_recvec = new Vector() -ca_recvec.record(&testcomp.soma.cai(0.5), Dt) -run() -testcomp.save_data("KC", Dt) -cafile = new File() -cafile.wopen("data/KC_Ca.dat") -for ii = 0, ca_recvec.size() - 1 { - cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) -} -cafile.close() -quit() - - diff --git a/examples/traub_2005/nrn/test_kc_fast.hoc b/examples/traub_2005/nrn/test_kc_fast.hoc deleted file mode 100644 index 780259d..0000000 --- a/examples/traub_2005/nrn/test_kc_fast.hoc +++ /dev/null @@ -1,50 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -dt = Dt -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile, ca_vec, ca_recvec, cafile - - -testcomp = new singlecomp() - -testcomp.setup_channel("kc_fast", 1e-9) - -// We create a Ca vector to play 0 to 500 mM [Ca2+] from 0-175 ms and -// loop afterwards -ca_vec_size = tstop / Dt + 1 -ca_vec = new Vector(ca_vec_size) -tvec = new Vector(ca_vec_size) -for ii=0, ca_vec_size - 1 { - ca_vec.x[ii] = ( 500.0 * (ii % (ca_vec_size/2))) / (0.5 * ca_vec_size) - tvec.x[ii] = ii * Dt -} - -// Vector.play(target_variable, vector_t, continuous) -ca_vec.play(&testcomp.soma.cai(0.5), tvec, 1) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kc_fast", Dt) -ca_recvec = new Vector() -ca_recvec.record(&testcomp.soma.cai(0.5), Dt) -run() -testcomp.save_data("KC_FAST", Dt) -cafile = new File() -cafile.wopen("data/KC_FAST_Ca.dat") -for ii = 0, ca_recvec.size() - 1 { - cafile.printf("%g %g\n", ii * dt, ca_recvec.x[ii]) -} -cafile.close() -quit() - - diff --git a/examples/traub_2005/nrn/test_kdr.hoc b/examples/traub_2005/nrn/test_kdr.hoc deleted file mode 100644 index 6e2768c..0000000 --- a/examples/traub_2005/nrn/test_kdr.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("kdr", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kdr", Dt) -run() -testcomp.save_data("KDR", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_kdr_fs.hoc b/examples/traub_2005/nrn/test_kdr_fs.hoc deleted file mode 100644 index 928d6e1..0000000 --- a/examples/traub_2005/nrn/test_kdr_fs.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("kdr_fs", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("kdr_fs", Dt) -run() -testcomp.save_data("KDR_FS", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_km.hoc b/examples/traub_2005/nrn/test_km.hoc deleted file mode 100644 index 280f49b..0000000 --- a/examples/traub_2005/nrn/test_km.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("km", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("km", Dt) -run() -testcomp.save_data("KM", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_naf.hoc b/examples/traub_2005/nrn/test_naf.hoc deleted file mode 100644 index 82c9365..0000000 --- a/examples/traub_2005/nrn/test_naf.hoc +++ /dev/null @@ -1,31 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("naf", 1e-9) -testcomp.soma { - fastNa_shift_naf = -3.5 -} - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("naf", Dt) -run() -testcomp.save_data("NaF", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_naf2.hoc b/examples/traub_2005/nrn/test_naf2.hoc deleted file mode 100644 index 16b812b..0000000 --- a/examples/traub_2005/nrn/test_naf2.hoc +++ /dev/null @@ -1,31 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("naf2", 1e-9) -testcomp.soma { - fastNa_shift_naf2 = -2.5 -} - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("naf2", Dt) -run() -testcomp.save_data("NaF2", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_naf2_nRT.hoc b/examples/traub_2005/nrn/test_naf2_nRT.hoc deleted file mode 100644 index d26a95e..0000000 --- a/examples/traub_2005/nrn/test_naf2_nRT.hoc +++ /dev/null @@ -1,29 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("naf2", 1e-9) -// here no Na_shift is applied - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("naf2", Dt) -run() -testcomp.save_data("NaF2_nRT", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_naf_tcr.hoc b/examples/traub_2005/nrn/test_naf_tcr.hoc deleted file mode 100644 index c8951e9..0000000 --- a/examples/traub_2005/nrn/test_naf_tcr.hoc +++ /dev/null @@ -1,31 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("naf_tcr", 1e-9) -testcomp.soma { - fastNa_shift_naf_tcr = 7 -} - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("naf_tcr", Dt) -run() -testcomp.save_data("NaF_TCR", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_nap.hoc b/examples/traub_2005/nrn/test_nap.hoc deleted file mode 100644 index 393ab8e..0000000 --- a/examples/traub_2005/nrn/test_nap.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("nap", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("nap", Dt) -run() -testcomp.save_data("NaP", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_napf.hoc b/examples/traub_2005/nrn/test_napf.hoc deleted file mode 100644 index 833bdcb..0000000 --- a/examples/traub_2005/nrn/test_napf.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("napf", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("napf", Dt) -run() -testcomp.save_data("NaPF", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_napf_ss.hoc b/examples/traub_2005/nrn/test_napf_ss.hoc deleted file mode 100644 index 637281c..0000000 --- a/examples/traub_2005/nrn/test_napf_ss.hoc +++ /dev/null @@ -1,31 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("napf_spinstell", 1e-9) -testcomp.soma { - fastNa_shift_napf_spinstell=-2.5 -} - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("napf_spinstell", Dt) -run() -testcomp.save_data("NaPF_SS", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_napf_tcr.hoc b/examples/traub_2005/nrn/test_napf_tcr.hoc deleted file mode 100644 index bfaeb05..0000000 --- a/examples/traub_2005/nrn/test_napf_tcr.hoc +++ /dev/null @@ -1,28 +0,0 @@ -load_file("nrngui.hoc") -// PI=3.141592 -FARADAY=96485 - -celsius=30 -v_init = -65.0 -Dt = 1e-2 -tstop = 350 // ms - -load_file("testutils.hoc") - -objref testcomp, vvec, gvec, tvec, vfile, gfile - -testcomp = new singlecomp() - -testcomp.setup_channel("napf_tcr", 1e-9) - -// (50 ms start positive current, 150 ms stop positive current, 200 -// ms start negative current, 300 ms stop negative current 350 ms stop -// simulation) - -testcomp.setup_recording("napf_tcr", Dt) -run() -testcomp.save_data("NaPF_TCR", Dt) - -quit() - - diff --git a/examples/traub_2005/nrn/test_nontuftedrs.hoc b/examples/traub_2005/nrn/test_nontuftedrs.hoc deleted file mode 100644 index 3722378..0000000 --- a/examples/traub_2005/nrn/test_nontuftedrs.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/nontuftRS_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -70 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new nontuftRS() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/NontuftedRS_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/NontuftedRS_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/NontuftedRS.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_nrt.hoc b/examples/traub_2005/nrn/test_nrt.hoc deleted file mode 100644 index acd9c53..0000000 --- a/examples/traub_2005/nrn/test_nrt.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/nRT_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -75 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new nRT() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/nRT_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/nRT_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/nRT.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_singlecomp.hoc b/examples/traub_2005/nrn/test_singlecomp.hoc deleted file mode 100644 index 2a1872a..0000000 --- a/examples/traub_2005/nrn/test_singlecomp.hoc +++ /dev/null @@ -1,92 +0,0 @@ -objectvar stim1, outfile, vec_v, vec_t, vec_naf2, vec_napf_ss, vec_kdr_fs, vec_ar, vec_cad -FARADAY=96485 -PI=3.141592 -secondorder=2 -// dt=1e-3 -celsius=30 -v_init = -65.0 - -create soma -soma{ - nseg = 1 - diam = 2 * 7.5 - L = 20 - v = -65.0 - insert naf2 - gbar_naf2 = 0.15 - insert napf_spinstell - gbar_napf_spinstell = 0.00015 - insert kdr_fs - gbar_kdr_fs = 0.1 - insert kc_fast - gbar_kc_fast = 0.01 - insert ka - gbar_ka = 0.03 - insert km - gbar_km = 0.00375 - insert k2 - gbar_k2 = 0.0001 - insert kahp_slower - gbar_kahp_slower = 0.0001 - insert cal - gbar_cal = 0.0005 - insert cat_a - gbar_cat_a = 0.0001 - insert ar - gbar_ar = 0.00025 - insert cad - // *** ca diffusion: beta=1/tau - beta_cad = 0.02 - // cafor(I) (FORTRAN) converted to phi (NEURON) - phi_cad = 260000. - insert pas - e_pas = -65.0 - g_pas = 2e-5 - Ra = 100.0 - cm = 0.9 - ek = -100.0 - ena = 50.0 - vca = 125.0 - erev_ar = -40.0 - - m0_ar = 0 - fastNa_shift_naf2=-2.5 - fastNa_shift_napf_spinstell=-2.5 -} - -stim1 = new IClamp(0.5) -stim1.del = 100.0 -stim1.amp = 0.3 -stim1.dur = 50.0 -ceiling_cad = 1e6 - -outfile = new File() -vec_naf2 = new Vector() -vec_napf_ss = new Vector() -vec_kdr_fs = new Vector() -vec_v = new Vector() -vec_t = new Vector() -vec_cad = new Vector() - -vec_naf2.record(&soma.ina_naf2(0.5)) -// vec_napf_ss.record(&soma.ina_napf_spinstell(0.5)) -// vec_kdr_fs.record(&soma.ik_kdr_fs(0.5)) -vec_cad.record(&soma.cai(0.5)) -vec_v.record(&soma.v(0.5)) -vec_t.record(&t) - -tstop = 350 -run() -outfile.wopen("data/singlecomp_Vm.dat") -for ii = 0, vec_v.size() - 1 { - outfile.printf("%g %g", vec_t.x(ii), vec_v.x(ii)) - // delv_na = vec_v.x(ii) - soma.ena - // outfile.printf(" %g", vec_naf2.x(ii)/delv_na ) - // outfile.printf(" %g", vec_napf_ss.x(ii)/delv_na ) - // delv_k = vec_v.x(ii) - soma.ek - // outfile.printf(" %g", vec_kdr_fs.x(ii)/delv_k ) - outfile.printf(" %g", vec_cad.x(ii)) - outfile.printf("\n") -} -outfile.close() -quit() diff --git a/examples/traub_2005/nrn/test_spinystellate.hoc b/examples/traub_2005/nrn/test_spinystellate.hoc deleted file mode 100644 index 2f33347..0000000 --- a/examples/traub_2005/nrn/test_spinystellate.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/spinstell_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new spinstell() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/SpinyStellate_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/SpinyStellate_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/SpinyStellate.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_supaxoaxonic.hoc b/examples/traub_2005/nrn/test_supaxoaxonic.hoc deleted file mode 100644 index 2ced852..0000000 --- a/examples/traub_2005/nrn/test_supaxoaxonic.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/supaxax_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new supaxax() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/SupAxoaxonic_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/SupAxoaxonic_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/SupAxoaxonic.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_supbasket.hoc b/examples/traub_2005/nrn/test_supbasket.hoc deleted file mode 100644 index 71f01a7..0000000 --- a/examples/traub_2005/nrn/test_supbasket.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/supbask_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new supbask() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/SupBasket_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/SupBasket_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/SupBasket.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_suplts.hoc b/examples/traub_2005/nrn/test_suplts.hoc deleted file mode 100644 index add9315..0000000 --- a/examples/traub_2005/nrn/test_suplts.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/supLTS_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new supLTS() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/SupLTS_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/SupLTS_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/SupLTS.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_suppyrfrb.hoc b/examples/traub_2005/nrn/test_suppyrfrb.hoc deleted file mode 100644 index 9d7e176..0000000 --- a/examples/traub_2005/nrn/test_suppyrfrb.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/suppyrFRB_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new suppyrFRB() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/SupPyrFRB_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/SupPyrFRB_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/SupPyrFRB.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_suppyrrs.hoc b/examples/traub_2005/nrn/test_suppyrrs.hoc deleted file mode 100644 index 8b5eb92..0000000 --- a/examples/traub_2005/nrn/test_suppyrrs.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/suppyrRS_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -65 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new suppyrRS() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/SupPyrRS_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/SupPyrRS_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/SupPyrRS.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_tcr.hoc b/examples/traub_2005/nrn/test_tcr.hoc deleted file mode 100644 index 9ac64a6..0000000 --- a/examples/traub_2005/nrn/test_tcr.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/TCR_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -70 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new TCR() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/TCR_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/TCR_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/TCR.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_tcr.old.hoc b/examples/traub_2005/nrn/test_tcr.old.hoc deleted file mode 100644 index e96ebad..0000000 --- a/examples/traub_2005/nrn/test_tcr.old.hoc +++ /dev/null @@ -1,73 +0,0 @@ -//////////////////////////////////////////////////////////////// -// This script tests a single thalamocortical relay cell -// from the NEURON port of Traub et al, 2005. -// It simulates 200 ms of real time and applies a 0.3 nA -// current injection for 50 ms from the start of simulation. -// The Vm and [Ca2+] respectively of the presynaptic and -// the soma compartment are stored in the data directory. -// Please see README file for references. -// -// Author: Subhasis Ray / NCBS, Bangalore/ October 2009 -//////////////////////////////////////////////////////////////// -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") - -load_file("cells/TCR_template.hoc") -strdef tstr -PI=3.141592 -FARADAY=96485 -secondorder=2 - -celsius=30 -v_init = -70 - -define_shape() -objref cell, stim1, stim2 - -proc runcell(){ local i, t1, a1, t2, a2 localobj vvec, tvec, f, g, caconc, ikvec - print "--------------------------------------------------------------" - print "| NEURON Simulation of TCR cell |" - print "--------------------------------------------------------------" - tstop = $1 - t1 = $2 - t2 = $3 - cell = new TCR() - access cell.comp[1] - f = new File() - tvec = new Vector() - vvec = new Vector() - caconc = new Vector() - tvec.record(&t) - vvec.record(&cell.comp[cell.presyn_comp].v(0.5)) - caconc.record(&cell.comp[1].cai(0.5)) - stim1 = new IClamp(0.5) - stim1.amp = 0.3 - stim1.del = t1 - stim1.dur = t2 - printf("Run for: %g ms, inject %g nA current at %g ms for %g ms\n", tstop, stim1.amp, stim1.del, stim1.dur) - system("date '+%s.0 + %Ne-9'") - run() - system("date '+%s.0 + %Ne-9'") - f.wopen("data/Vm_TCR.plot") - for ii = 0, vvec.size() - 1{ - f.printf("%g %g\n", tvec.x(ii), vvec.x(ii)) - } - f.close() - - f.wopen("data/Ca_TCR.plot") - for ii = 0, caconc.size() - 1{ - f.printf("%g %g\n", tvec.x(ii), caconc.x(ii)) - } - f.close() - print "--------------------------------------------------------------" - print "| NEURON Simulation of TCR cell finished |" - print "--------------------------------------------------------------" -} - -proc finit0(){ - print "finit0" - forsec cell.all { v = -65 } -} - -runcell(200., 50., 50.) -quit() diff --git a/examples/traub_2005/nrn/test_tuftedib.hoc b/examples/traub_2005/nrn/test_tuftedib.hoc deleted file mode 100644 index a546edc..0000000 --- a/examples/traub_2005/nrn/test_tuftedib.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/tuftIB_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -70 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new tuftIB() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/TuftedIB_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/TuftedIB_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/TuftedIB.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/test_tuftedrs.hoc b/examples/traub_2005/nrn/test_tuftedrs.hoc deleted file mode 100644 index 4306a00..0000000 --- a/examples/traub_2005/nrn/test_tuftedrs.hoc +++ /dev/null @@ -1,58 +0,0 @@ -load_file("nrngui.hoc") -load_file("hoc/traubcon.hoc") -load_file("cells/tuftRS_template.hoc") -load_file("hoc/utility.hoc") -objref vm_vec, stim, dump_file, input, cell -PI=3.141592 -FARADAY=96485 -secondorder=2 -dt = 0.025 -// plotdt = 1e-2 -celsius=30 -v_init = -70 -// cvode.active() -define_shape() -/* runcell(runtime, delay) */ -proc runcell(){ local i, t1, a1, t2, a2 localobj presyn_vvec, soma_vvec, tvec, f_presyn, f_soma, g - tstop = $1 - t1 = $2 - printf("Run for: %g ms, stim at: %g\n", tstop, t1) - t2 = 1e9 a2 = 0 - cell = new tuftRS() - // soma - cell.comp[1] { - input = new IClamp(0.5) - input.amp = 1 // nA - input.del = t1 - input.dur = 100 // ms - printf("Stimulus: onset: %g ms, amp: %d nA, duration: %g ms\n", input.del, input.amp, input.dur) - } - f_presyn = new File() - tvec = new Vector() - presyn_vvec = new Vector() - soma_vvec = new Vector() - cell.comp[cell.presyn_comp] presyn_vvec.record(&v(0.5)) - cell.comp[1] soma_vvec.record(&v(0.5)) - // cell.comp[cell.presyn_comp] cvode.record(&v(0.5), presyn_vvec, tvec, plotdt) - // cell.comp[1] cvode.record(&v(0.5), soma_vvec, tvec, plotdt) - tvec.record(&t) - // vvec.record(&cell.comp[cell.presyn_comp].v(0.5), plotdt) - // print_cell(cell, "tcr") - run() - f_presyn.wopen("data/TuftedRS_presynaptic_Vm.dat") - for ii = 0, presyn_vvec.size() - 1{ - f_presyn.printf("%g %g\n", tvec.x(ii), presyn_vvec.x(ii)) - } - f_presyn.close() - f_soma = new File() - f_soma.wopen("data/TuftedRS_soma_Vm.dat") - for ii = 0, presyn_vvec.size() - 1 { - f_soma.printf("%g %g\n", tvec.x(ii), soma_vvec.x(ii)) - } - f_soma.close() - cell.comp[1] {printf("Soma e_pas: %g", e_pas)} - print_cell(cell, "data/TuftedRS.csv") -} - -runcell(1000.0, 100.0) -quit() diff --git a/examples/traub_2005/nrn/testutils.hoc b/examples/traub_2005/nrn/testutils.hoc deleted file mode 100644 index f597317..0000000 --- a/examples/traub_2005/nrn/testutils.hoc +++ /dev/null @@ -1,107 +0,0 @@ -begintemplate singlecomp -public soma, stim1, stim2, vvec, gvec, setup_recording, save_data, setup_channel - -objectvar stim1, stim2, vvec, gvec -strdef tstr1, iontype -objref this -create soma - -e_value = 0.0 - -proc init(){ - create soma - soma { - nseg = 1 - diam = 1.0 // um - L = 1.0 // um - v = -65 - // The test compartment should have total axial resistance of 1e5 Ohm - Ra = 1e5 * (PI * diam * 1e-4 * diam * 1e-4) / (4 * L * 1e-4) // Ohm-cm - cm = 1e6 * 1e-12 * 1e8 / area(0.5) // uF/cm^2 - insert pas - // Test compartment's Rm = 1e9 Ohm - g_pas = (1.0 / 1e9) * 1e8 / area(0.5) // S/cm^2 - e_pas = -65.0 // mV - stim1 = new IClamp(0.5) - stim1.del = 50 // ms - stim1.dur = 100 // ms - stim1.amp = 1e-3 // nA - stim2 = new IClamp(0.5) - stim2.del = 200 // ms - stim2.dur = 100 // ms - stim2.amp = -1e-3 // nA - } -} - -// setup_channel(channelname, Gbar) -proc setup_channel(){ localobj strfn - sprint(tstr1, "~insert %s", $s1) - print tstr1 - soma execute(tstr1) - sprint(tstr1, "~gbar_%s = %g * 1e8 / area(0.5)", $s1, $2) - print tstr1 - soma execute(tstr1) - strfn = new StringFunctions() - if (strfn.substr($s1, "na") == 0){ - sprint(tstr1, "~ena = 50.0") - } else if (strfn.substr($s1, "k") == 0){ - sprint(tstr1, "~ek = -95.0") - } else if (strfn.substr($s1, "ar") == 0){ - sprint(tstr1, "~erev_ar = -35.0") - } else if (strfn.substr($s1, "cal") == 0){ - // do nothing - // sprint(tstr1, "~vca = -125.0") - } - print tstr1 - soma execute(tstr1) - -} - -// setup_recording(channelname, Dt) -proc setup_recording(){ localobj strfn - strfn = new StringFunctions() - vvec = new Vector() - vvec.record(&soma.v(0.5), $2) - gvec = new Vector() - if ( strfn.substr($s1, "na") == 0 ){ - sprint(tstr1, "~gvec.record( &soma.ina_%s(0.5), %g)", $s1, $2) - e_value = ena - } else if ( strfn.substr($s1, "k") == 0 ){ - sprint(tstr1, "~gvec.record( &soma.ik_%s(0.5), %g)", $s1, $2) - e_value = ek - } else if (strfn.substr($s1, "ar") == 0){ - sprint(tstr1, "~gvec.record( &soma.i_%s(0.5), %g)", $s1, $2) - e_value = erev_ar - } else if (strfn.substr($s1, "cal") == 0){ - sprint(tstr1, "~gvec.record( &soma.ica_%s(0.5), %g)", $s1, $2) - e_value = 125.0 - } else if (strfn.substr($s1, "cat") == 0){ - sprint(tstr1, "~gvec.record( &soma.i_%s(0.5), %g)", $s1, $2) - e_value = 125.0 - } - execute(tstr1, this) -} - -// save_data(channelname, Dt) -proc save_data(){ localobj vfile, gfile - print vvec.size(), gvec.size() - sprint(tstr1, "data/%s_Vm.dat", $s1) - print "Saving Vm in ", tstr1 - vfile = new File() - vfile.wopen(tstr1) - sprint(tstr1, "data/%s_Gk.dat", $s1) - gfile = new File() - gfile.wopen(tstr1) - print vvec.size(), gvec.size() - for ii = 0, vvec.size() - 1 { - vfile.printf("%g %g\n", ii * $2 * 1e-3, vvec.x[ii] * 1e-3) - soma { - gfile.printf("%g %g\n", ii * $2 * 1e-3, gvec.x(ii) * 1e-3 * area(0.5) * 1e-8 / ((vvec.x(ii) - e_value) * 1e-3)) - } - } - vfile.close() - gfile.close() -} - -endtemplate singlecomp - diff --git a/examples/traub_2005/py/archan.py b/examples/traub_2005/py/archan.py deleted file mode 100644 index b1192ab..0000000 --- a/examples/traub_2005/py/archan.py +++ /dev/null @@ -1,57 +0,0 @@ -# archan.py --- -# -# Filename: archan.py -# Description: -# Author: subhasis ray -# Maintainer: -# Created: Mon Apr 27 15:34:07 2009 (+0530) -# Version: -# Last-Updated: Sat Dec 8 15:44:58 2012 (+0530) -# By: subha -# Update #: 50 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# -# - -# Code: - -from numpy import exp -import moose -from channelbase import * - -class AR(ChannelBase): - """Combined cation current.""" - annotation = {'cno': 'cno:cno_0000105'} - abstract = False - Xpower = 1 - inf_x = 1 / ( 1 + exp( ( v_array * 1e3 + 75 ) / 5.5 ) ) - tau_x = 1e-3 / ( exp( -14.6 - 0.086 * v_array * 1e3) + exp( -1.87 + 0.07 * v_array * 1e3)) - X = 0.25 - Ek = -35e-3 - - def __init__(self, path, Ek=-35e-3): - ChannelBase.__init__(self, path) - - -def initARChannelPrototypes(libpath='/library'): - return {'AR': AR(prototypes['AR'])} - - -# -# archan.py ends here diff --git a/examples/traub_2005/py/benchmark.sh b/examples/traub_2005/py/benchmark.sh deleted file mode 100755 index 81f3287..0000000 --- a/examples/traub_2005/py/benchmark.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -if [[ $# < 3 ]]; then - echo "Usage: $0 scriptpath loopcount outfile" - echo "Run script specified by `scriptpath` for `loopcount` repeats and time it. The output is written in " - exit 1 -fi -scriptfile=$1 -loopcount=$2 -outfile=$3 - -echo "Benchmarking Python script: $1 with $2 repeats" -echo -e "Real\tUser\tSystem\tMem(K)" > "$outfile" -for ((ii=1; ii <= loopcount; ++ii)); do - /usr/bin/time -a -o "$outfile" -f "%E\t%U\t%S\t%K" python "$scriptfile" -done -# Command to extract the timings from the log files: -# grep 'Simulation time with solver' /data/`date '%Y_%m_%d'`/*.log | sed 's/^.*Simulation time with solver [a-z:]+//' diff --git a/examples/traub_2005/py/cachans.py b/examples/traub_2005/py/cachans.py deleted file mode 100644 index f0cf7c2..0000000 --- a/examples/traub_2005/py/cachans.py +++ /dev/null @@ -1,94 +0,0 @@ -# cachans.py --- -# -# Filename: cachans.py -# Description: -# Author: subhasis ray -# Maintainer: -# Created: Sat Apr 18 00:18:24 2009 (+0530) -# Version: -# Last-Updated: Sat Dec 8 15:48:17 2012 (+0530) -# By: subha -# Update #: 296 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -from numpy import where, exp, array -import moose -from channelbase import * - -class CaChannel(ChannelBase): - """Base class for Ca channels.""" - annotation = {'cno': 'cno:cno_0000105'} - abstract = True - Ek = 125e-3 - Xpower = 2 - X = 0.0 - """This is just a place holder to maintain type information""" - def __init__(self, path): - ChannelBase.__init__(self, path) - - -class CaL(CaChannel): - """Low threshold calcium channel""" - abstract = False - alpha_x = 1.6e3 / (1.0 + exp(-0.072 * (v_array * 1e3 - 5))) - v = v_array + 8.9e-3 - beta_x = where( abs(v) * 1e3 < 1e-6, - 1e3 * 0.1 * exp(-v / 5e-3), - 1e3 * 0.02 * v * 1e3 / (exp(v / 5e-3) - 1)) - mstring = ('addmsg1', '. IkOut ../CaPool current') - def __init__(self, path): - CaChannel.__init__(self, path) - - -class CaT(CaChannel): - abstract = False - Ypower = 1 - inf_x = 1 / (1 + exp( (- v_array - 56e-3) / 6.2e-3)) - tau_x = 1e-3 * (0.204 + 0.333 / ( exp(( v_array + 15.8e-3) / 18.2e-3 ) + - exp((- v_array - 131e-3) / 16.7e-3))) - inf_y = 1 / (1 + exp(( v_array + 80e-3 ) / 4e-3)) - tau_y = where( v_array < -81e-3, - 1e-3 * 0.333 * exp( ( v_array + 466e-3 ) / 66.6e-3 ), - 1e-3 * (9.32 + 0.333 * exp( ( -v_array - 21e-3 ) / 10.5e-3 ))) - - def __init__(self, path): - CaChannel.__init__(self, path) - - -class CaT_A(CaT): - inf_x = 1.0 / ( 1 + exp( ( - v_array * 1e3 - 52 ) / 7.4 ) ) - tau_x = 1e-3 * (1 + .33 / ( exp( ( v_array * 1e3 + 27.0 ) / 10.0 ) + exp( ( - v_array * 1e3 - 102 ) / 15.0 ))) - - inf_y = 1 / ( 1 + exp( ( v_array * 1e3 + 80 ) / 5 ) ) - tau_y = 1e-3 * (28.30 + 0.33 / (exp(( v_array * 1e3 + 48.0)/ 4.0) + exp( ( -v_array * 1e3 - 407.0) / 50.0 ) )) - - def __init__(self, path): - CaChannel.__init__(self, path) - - -def initCaChannelPrototypes(libpath='/library'): - channel_names = ['CaL', 'CaT', 'CaT_A'] - return dict([(key, eval('%s("%s")' % (key, prototypes[key].path))) for key in channel_names]) - - - -# -# cachans.py ends here diff --git a/examples/traub_2005/py/capool.py b/examples/traub_2005/py/capool.py deleted file mode 100644 index 7cf3f4f..0000000 --- a/examples/traub_2005/py/capool.py +++ /dev/null @@ -1,55 +0,0 @@ -# CaPool.py --- -# -# Filename: capool.py -# Description: -# Author: subhasis ray -# Maintainer: -# Created: Wed Apr 22 22:21:11 2009 (+0530) -# Version: -# Last-Updated: Sat Dec 8 15:46:00 2012 (+0530) -# By: subha -# Update #: 189 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Implements the Ca2+ pool -# -# - -# Change log: -# -# -# -# - -# Code: - -import config -import moose - -class CaPool(moose.CaConc): - annotation = {'cno': 'cno_0000056'} - prototype = moose.CaConc(config.modelSettings.libpath + '/CaPool') - prototype.CaBasal = 0.0 - prototype.ceiling = 1e6 - prototype.floor = 0.0 - prototypes = {} - def __init__(self, path): - moose.CaConc.__init__(self, path) - - -def initCaPoolPrototypes(libpath='/library'): - if CaPool.prototypes: - return CaPool.prototypes - path = '%s/CaPool' % (libpath) - CaPool.prototypes['CaPool'] = CaPool(path) - return CaPool.prototypes - - -# -# capool.py ends here diff --git a/examples/traub_2005/py/cell_test_util.py b/examples/traub_2005/py/cell_test_util.py deleted file mode 100644 index d0ba68e..0000000 --- a/examples/traub_2005/py/cell_test_util.py +++ /dev/null @@ -1,230 +0,0 @@ -# cell_test_util.py --- -# -# Filename: cell_test_util.py -# Description: Utility functions for testing single cells -# Author: -# Maintainer: -# Created: Mon Oct 15 15:03:09 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:33:12 2016 (-0400) -# By: subha -# Update #: 303 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: -from __future__ import print_function - -from datetime import datetime -import time -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import uuid -import unittest -import numpy as np -from matplotlib import pyplot as plt -import pylab -import moose -from moose import utils as mutils -import config -import cells -import testutils -from testutils import compare_cell_dump, setup_clocks, assign_clocks, step_run - - -def setup_current_step_model(model_container, - data_container, - celltype, - pulsearray): - """Setup a single cell simulation. - - model_container: element to hold the model - - data_container: element to hold data - - - celltype: str - cell type - - pulsearray: nx3 array - with row[i] = (delay[i], width[i], - level[i]) of current injection. - - simdt: float - simulation time step - - plotdt: float - sampling interval for plotting - - solver: str - numerical method to use, can be `hsolve` or `ee` - """ - classname = 'cells.%s' % (celltype) - print('mc=', model_container, 'dc=', data_container, 'ct=', celltype, 'pa=', pulsearray, 'classname=', classname) - cell_class = eval(classname) - cell = cell_class('%s/%s' % (model_container.path, celltype)) - pulsegen = moose.PulseGen('%s/pulse' % (model_container.path)) - pulsegen.count = len(pulsearray) - for ii in range(len(pulsearray)): - pulsegen.delay[ii] = pulsearray[ii][0] - pulsegen.width[ii] = pulsearray[ii][1] - pulsegen.level[ii] = pulsearray[ii][2] - moose.connect(pulsegen, 'output', cell.soma, 'injectMsg') - presyn_vm = moose.Table('%s/presynVm' % (data_container.path)) - soma_vm = moose.Table('%s/somaVm' % (data_container.path)) - moose.connect(presyn_vm, 'requestOut', cell.presynaptic, 'getVm') - moose.connect(soma_vm, 'requestOut', cell.soma, 'getVm') - pulse_table = moose.Table('%s/injectCurrent' % (data_container.path)) - moose.connect(pulse_table, 'requestOut', pulsegen, 'getOutputValue') - return {'cell': cell, - 'stimulus': pulsegen, - 'presynVm': presyn_vm, - 'somaVm': soma_vm, - 'injectionCurrent': pulse_table, } - - -class SingleCellCurrentStepTest(unittest.TestCase): - """Base class for simulating a single cell with step current - injection""" - def __init__(self, *args, **kwargs): - unittest.TestCase.__init__(self, *args, **kwargs) - self.pulse_array = [[100e-3, 100e-3, 1e-9], - [1e9, 0, 0]] - self.solver = config.simulationSettings.method - self.simdt = None - self.plotdt = None - self.tseries = [] - - def setUp(self): - self.test_id = uuid.uuid4().int - self.test_container = moose.Neutral('test%d' % (self.test_id)) - self.model_container = moose.Neutral('%s/model' % (self.test_container.path)) - self.data_container = moose.Neutral('%s/data' % (self.test_container.path)) - params = setup_current_step_model( - self.model_container, - self.data_container, - self.celltype, - self.pulse_array) - self.cell = params['cell'] - for ch in moose.wildcardFind(self.cell.soma.path + '/##[ISA=ChanBase]'): - config.logger.debug('%s Ek = %g' % (ch.path, ch.Ek)) - for ch in moose.wildcardFind(self.cell.soma.path + '/##[ISA=CaConc]'): - config.logger.debug('%s tau = %g' % (ch.path, ch.tau)) - - self.somaVmTab = params['somaVm'] - self.presynVmTab = params['presynVm'] - self.injectionTab = params['injectionCurrent'] - self.pulsegen = params['stimulus'] - # setup_clocks(self.simdt, self.plotdt) - # assign_clocks(self.model_container, self.data_container, self.solver) - - def tweak_stimulus(self, pulsearray): - """Update the pulsegen for this model with new (delay, width, - level) values specified in `pulsearray` list.""" - for ii in range(len(pulsearray)): - self.pulsegen.delay[ii] = pulsearray[ii][0] - self.pulsegen.width[ii] = pulsearray[ii][1] - self.pulsegen.level[ii] = pulsearray[ii][2] - - def schedule(self, simdt, plotdt, solver): - config.logger.info('Scheduling: simdt=%g, plotdt=%g, solver=%s' % (simdt, plotdt, solver)) - self.simdt = simdt - self.plotdt = plotdt - self.solver = solver - if self.solver == 'hsolve': - self.hsolve = moose.HSolve('%s/solver' % (self.cell.path)) - self.hsolve.dt = simdt - self.hsolve.target = self.cell.path - mutils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - mutils.assignDefaultTicks(modelRoot=self.model_container.path, - dataRoot=self.data_container.path, - solver=self.solver) - - def runsim(self, simtime, stepsize=0.1, pulsearray=None): - """Run the simulation for `simtime`. Save the data at the - end.""" - config.logger.info('running: simtime=%g, stepsize=%g, pulsearray=%s' % (simtime, stepsize, str(pulsearray))) - self.simtime = simtime - if pulsearray is not None: - self.tweak_stimulus(pulsearray) - for ii in range(self.pulsegen.count): - config.logger.info('pulse[%d]: delay=%g, width=%g, level=%g' % (ii, self.pulsegen.delay[ii], self.pulsegen.width[ii], self.pulsegen.level[ii])) - config.logger.info('Start reinit') - self.schedule(self.simdt, self.plotdt, self.solver) - moose.reinit() - config.logger.info('Finished reinit') - ts = datetime.now() - mutils.stepRun(simtime, simtime/10.0, verbose=True, logger=config.logger) - # The sleep is required to get all threads to end - while moose.isRunning(): - time.sleep(0.1) - te = datetime.now() - td = te - ts - config.logger.info('Simulation time of %g s at simdt=%g with solver %s: %g s' % \ - (simtime, self.simdt, self.solver, - td.seconds + td.microseconds * 1e-6)) - - def savedata(self): - # Now save the data - for table_id in self.data_container.children: - ts = np.linspace(0, self.simtime, len(table_id[0].vector)) - data = np.vstack((ts, table_id[0].vector)) - fname = os.path.join(config.data_dir, - '%s_%s_%s_%s.dat' % (self.celltype, - table_id[0].name, - self.solver, - config.filename_suffix)) - np.savetxt(fname, np.transpose(data)) - config.logger.info('Saved %s in %s' % (table_id[0].name, fname)) - - def plot_vm(self): - """Plot Vm for presynaptic compartment and soma - along with - the same in NEURON simulation if possible.""" - pylab.subplot(211) - pylab.title('Soma Vm') - self.tseries = np.linspace(0, self.simtime, len(self.somaVmTab.vector)) - pylab.plot(self.tseries*1e3, self.somaVmTab.vector * 1e3, - label='Vm (mV) - moose') - pylab.plot(self.tseries*1e3, self.injectionTab.vector * 1e9, - label='Stimulus (nA)') - try: - nrn_data = np.loadtxt('../nrn/data/%s_soma_Vm.dat' % \ - (self.celltype)) - nrn_indices = np.nonzero(nrn_data[:, 0] <= self.tseries[-1]*1e3)[0] - pylab.plot(nrn_data[nrn_indices,0], nrn_data[nrn_indices,1], - label='Vm (mV) - neuron') - except IOError: - print('No neuron data found.') - pylab.legend() - pylab.subplot(212) - pylab.title('Presynaptic Vm') - pylab.plot(self.tseries*1e3, self.presynVmTab.vector * 1e3, - label='Vm (mV) - moose') - pylab.plot(self.tseries*1e3, self.injectionTab.vector * 1e9, - label='Stimulus (nA)') - try: - nrn_data = np.loadtxt('../nrn/data/%s_presynaptic_Vm.dat' % \ - (self.celltype)) - nrn_indices = np.nonzero(nrn_data[:, 0] <= self.tseries[-1]*1e3)[0] - pylab.plot(nrn_data[nrn_indices,0], nrn_data[nrn_indices,1], - label='Vm (mV) - neuron') - except IOError: - print('No neuron data found.') - pylab.legend() - pylab.show() - - -# -# cell_test_util.py ends here diff --git a/examples/traub_2005/py/cells.py b/examples/traub_2005/py/cells.py deleted file mode 100644 index 530029c..0000000 --- a/examples/traub_2005/py/cells.py +++ /dev/null @@ -1,530 +0,0 @@ -# cell.py --- -# -# Filename: cell.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri Mar 9 23:17:17 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:25:57 2016 (-0400) -# By: subha -# Update #: 694 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# 2012-03-09 23:17:24 (+0530) Subha started porting the cell.py file -# from old moose to dh_branch. -# - -# Code: -from __future__ import print_function -import csv -import numpy as np -from collections import defaultdict -import moose -import config -from config import logger -import nachans -import kchans -import archan -import cachans -import capool -from channelinit import init_chanlib - -channel_types = ['ar', - 'cad', - 'cal', - 'cat', - 'k2', - 'ka', - 'kahp', - 'kc', - 'kdr', - 'km', - 'naf', - 'naf2', - 'nap', - 'napf'] - -channel_type_dict = { - 'cad': ['CaPool'], - 'km': ['KM'], - 'ar': ['AR'], - 'cal': ['CaL'], - 'cat':['CaT', 'CaT_A'], - 'k2': ['K2'], - 'ka': ['KA', 'KA_IB'], - 'kahp': ['KAHP', 'KAHP_DP','KAHP_SLOWER'], - 'kc': ['KC', 'KC_FAST'], - 'kdr': ['KDR', 'KDR_FS'], - 'nap':['NaP'], - 'naf': ['NaF', 'NaF_TCR'], - 'napf': ['NaPF', 'NaPF_SS','NaPF_TCR'], - 'naf2': ['NaF2', 'NaF2_nRT']} - - -def read_keyvals(filename): - """Read the mapping between key value pairs from file. - - The file filename should have two columns: - - key value - - """ - ret = defaultdict(set) - try: - with(open(filename, 'r')) as level_file: - for line in level_file: - tokens = line.split() - if not tokens: - continue - if len(tokens) != 2: - print(filename, ' - Tokens: ', tokens, len(tokens)) - return None - ret[tokens[1]].add(tokens[0]) - except IOError: - config.logger.info('No such file %s' % (filename)) - return ret - -def adjust_chanlib(cdict): - """Update the revarsal potentials for channels. Set the initial X - value for AR channel. Set the tau for Ca pool.""" - channel_dict = init_chanlib() - for ch in channel_dict.values(): - config.logger.info('adjusting properties of %s' % (ch.path)) - if isinstance(ch, kchans.KChannel): - ch.Ek = cdict['EK'] - elif isinstance(ch, nachans.NaChannel): - ch.Ek = cdict['ENa'] - elif isinstance(ch, cachans.CaChannel): - ch.Ek = cdict['ECa'] - elif isinstance(ch, archan.AR): - ch.Ek = cdict['EAR'] - if 'X_AR' in cdict: - ch.X = cdict['X_AR'] - elif isinstance(ch, moose.CaConc): - ch.tau = cdict['TauCa'] - if isinstance(ch, moose.HHChannel): - config.logger.debug('%s.Ek = %g' % (ch.path, ch.Ek)) - -def read_prototype(celltype, cdict): - """Read the cell prototype file for the specified class. The - channel properties are updated using values in cdict.""" - filename = '%s/%s.p' % (config.modelSettings.protodir, celltype) - logger.debug('Reading prototype file %s' % (filename)) - adjust_chanlib(cdict) - cellpath = '%s/%s' % (config.modelSettings.libpath, celltype) - if moose.exists(cellpath): - return moose.element(cellpath) - for handler in logger.handlers: - handler.flush() - proto = moose.loadModel(filename, cellpath) - # If prototype files do not have absolute compartment positions, - # set the compartment postions to origin. This will avoid - # incorrect assignemnt of position when the x/y/z values in - # prototype file is just to for setting the compartment length. - if not config.modelSettings.morph_has_postion: - for comp in moose.wildcardFind('%s/#[TYPE=Compartment]' % (proto.path)): - comp.x = 0.0 - comp.y = 0.0 - comp.z = 0.0 - leveldict = read_keyvals('%s/%s.levels' % (config.modelSettings.protodir, celltype)) - depths = read_keyvals('%s/%s.depths' % (config.modelSettings.protodir, celltype)) - depthdict = {} - for level, depthset in depths.items(): - if len(depthset) != 1: - raise Exception('Depth set must have only one entry.') - depthdict[level] = depthset.pop() - assign_depths(proto, depthdict, leveldict) - config.logger.debug('Read %s with %d compartments' % (celltype, len(moose.wildcardFind('%s/#[TYPE=Compartment]' % (proto.path))))) - return proto - -def assign_depths(cell, depthdict, leveldict): - """Assign depths to the compartments in the cell. The original - model assigns sets of compartments to particular levels and a - depth is specified for each level. This should not be required if - we have the z value in prototype file. - - cell : (prototype) cell instance - - depth : dict mapping level no. to physical depth - - level : dict mapping level no. to compartment nos. belonging to - that level. - """ - if not depthdict: - return - for level, depth in depthdict.items(): - z = float(depth) - complist = leveldict[level] - for comp_number in complist: - comp = moose.element('%s/comp_%s' % (cell.path, comp_number)) - comp.z = z - - -class CellMeta(type): - def __new__(cls, name, bases, cdict): - if name != 'CellBase': - proto = read_prototype(name, cdict) - annotation = None - if 'annotation' in cdict: - annotation = cdict['annotation'] - else: - for base in bases: - if hasattr(base, 'annotation'): - annotation = base.annotation - break - if annotation is not None: - info = moose.Annotator('%s/info' % (proto.path)) - info.notes = '\n'.join('"%s": "%s"' % kv for kv in annotation.items()) - if 'soma_tauCa' in cdict: - moose.element(proto.path + '/comp_1/CaPool').tau = cdict['soma_tauCa'] - cdict['prototype'] = proto - return type.__new__(cls, name, bases, cdict) - - -class CellBase(moose.Neuron): - __metaclass__ = CellMeta - annotation = {'cno': 'cno_0000020'} - def __init__(self, path): - if not moose.exists(path): - path_tokens = path.rpartition('/') - moose.copy(self.prototype, path_tokens[0], path_tokens[-1]) - moose.Neutral.__init__(self, path) - self.solver = moose.HSolve('{}/solver'.format(path, 'solver')) - self.solver.target = path - self.solver.dt = config.simulationSettings.simulationDt - - def comp(self, number): - path = '%s/comp_%d' % (self.path, number) - return moose.element(path) - - @property - def soma(self): - return self.comp(1) - - @property - def presynaptic(self): - """Presynaptic compartment. Each subclass should define - _presynaptic as the index of this compartment.""" - return self.comp(self.__class__._presynaptic) - - def dump_cell(self, file_path): - """Dump the cell information compartment by compartment for - comparison with NEURON in csv format. All parameters are - converted to SI units.""" - with open(file_path, 'w') as dump_file: - fieldnames = ["comp", "len", "dia", "sarea", "xarea", "Em", "Cm","Rm","Ra"] - for chtype in channel_types: - if chtype != 'cad': - fieldnames += ['e_' + chtype, 'gbar_' + chtype] - else: - fieldnames += ['tau_' + chtype, 'beta_' + chtype] - # print fieldnames - writer = csv.DictWriter(dump_file, fieldnames=fieldnames, delimiter=',') - writer.writeheader() - comps = moose.wildcardFind('%s/##[TYPE=Compartment]' % (self.path)) - comps = sorted(comps, key=lambda x: int(x.name[0].rpartition('_')[-1])) - for comp_e in comps: - comp = moose.element(comp_e) - row = {} - row['comp'] = comp.name - row['len'] = comp.length - row['dia'] = comp.diameter - row['sarea'] = comp.length * comp.diameter * np.pi - row['xarea'] = comp.diameter * comp.diameter * np.pi/4 - row['Em'] = comp.Em - row['Cm'] = comp.Cm - row['Rm'] = comp.Rm - row['Ra'] = comp.Ra - if moose.exists(comp.path + '/CaPool'): - ca_pool = moose.CaConc(comp.path + '/CaPool') - for chtype in channel_types: - found = False - for chname in channel_type_dict[chtype]: - chpath = comp.path + '/' + chname - if moose.exists(chpath): - found = True - channel = moose.element(chpath) - if channel.className == 'HHChannel': - row['e_'+chtype] = channel.Ek - row['gbar_'+chtype] = channel.Gbar - elif channel.className == 'CaConc': - row['tau_cad'] = channel.tau - row['beta_cad'] = channel.B - break - if not found: - if chtype != 'cad': - row['e_'+chtype] = 0.0 - row['gbar_'+chtype] = 0.0 - else: - row['tau_cad'] = 0.0 - row['beta_cad'] = 0.0 - writer.writerow(row) - - -class SupPyrRS(CellBase): - _presynaptic = 72 - ENa = 50e-3 - EK = -95e-3 - ECa = 125e-3 - EAR = -35e-3 - EGABA = -81e-3 - TauCa = 20e-3 - soma_tauCa = 100e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class SupPyrFRB(CellBase): - _presynaptic = 72 - ENa = 50e-3 - EK = -95e-3 - EAR = -35e-3 - ECa = 125e-3 - EGABA = -81e-3 - TauCa = 20e-3 - soma_tauCa = 100e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class SupLTS(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - ECa = 125e-3 - EAR = -40e-3 # dummy to set things back to original - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 20e-3 - X_AR = 0.25 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class SupAxoaxonic(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - ECa = 125e-3 - EAR = -40e-3 - EGABA = -75e-3 - X_AR = 0.0 - TauCa = 20e-3 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class SupBasket(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - EAR = -40e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 20e-3 - X_AR = 0.0 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class SpinyStellate(CellBase): - """Spiny-stellate cells of layer 4.""" - _presynaptic = 57 - ENa = 50e-3 - EK = -100e-3 - EAR = -40e-3 - ECa = 125e-3 - EGABA = -75e-3 - TauCa = 20e-3 - X_AR = 0.0 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class NontuftedRS(CellBase): - _presynaptic = 48 - ENa = 50e-3 - EK = -95e-3 - EAR = -35e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 20e-3 - X_AR = 0.25 - soma_tauCa = 100e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class TuftedIB(CellBase): - _presynaptic = 60 - ENa = 50e-3 - EK = -95e-3 - EAR = -35e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 1e-3/0.075 - X_AR = 0.25 - soma_tauCa = 100e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - # for compartments in level 2, i.e. comp_2, 5, 6 have tauCa = 1e-3/0.02 - @classmethod - def post_init(cls): - moose.element(cls.prototype.path + '/comp_2/CaPool').tau = 1e-3/0.02 - moose.element(cls.prototype.path + '/comp_5/CaPool').tau = 1e-3/0.02 - moose.element(cls.prototype.path + '/comp_6/CaPool').tau = 1e-3/0.02 - - -TuftedIB.post_init() - - -class TuftedRS(CellBase): - _presynaptic = 60 - ENa = 50e-3 - EK = -95e-3 - EAR = -35e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 1e-3/0.075 - X_AR = 0.25 - soma_tauCa = 100e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - @classmethod - def post_init(cls): - moose.element(cls.prototype.path + '/comp_2/CaPool').tau = 1e-3/0.02 - moose.element(cls.prototype.path + '/comp_5/CaPool').tau = 1e-3/0.02 - moose.element(cls.prototype.path + '/comp_6/CaPool').tau = 1e-3/0.02 - -TuftedRS.post_init() - - -class DeepLTS(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - EAR = -40e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 20e-3 - X_AR = 0.25 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class DeepAxoaxonic(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - ECa = 125e-3 - EAR = -40e-3 - EGABA = -75e-3 - X_AR = 0.0 - TauCa = 20e-3 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class DeepBasket(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - EAR = -40e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 20e-3 - X_AR = 0.25 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class TCR(CellBase): - _presynaptic = 135 - ENa = 50e-3 - EK = -95e-3 - EAR = -35e-3 - ECa = 125e-3 - EGABA = -81e-3 - TauCa = 20e-3 - X_AR = 0.25 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -class nRT(CellBase): - _presynaptic = 59 - ENa = 50e-3 - EK = -100e-3 - EAR = -40e-3 - ECa = 125e-3 - EGABA = -75e-3 # Sanchez-Vives et al. 1997 - TauCa = 20e-3 - X_AR = 0.0 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - - -_cellprototypes = {} - -def init_prototypes(): - global _cellprototypes - if _cellprototypes: - return _cellprototypes - _cellprototypes = { - 'SupPyrRS': SupPyrRS(SupPyrRS.prototype.path), - 'SupPyrFRB': SupPyrFRB(SupPyrFRB.prototype.path), - 'SupLTS': SupLTS(SupLTS.prototype.path), - 'SupAxoaxonic': SupAxoaxonic(SupAxoaxonic.prototype.path), - 'SupBasket': SupBasket(SupBasket.prototype.path), - 'SpinyStellate': SpinyStellate(SpinyStellate.prototype.path), - 'NontuftedRS': NontuftedRS(NontuftedRS.prototype.path), - 'TuftedIB': TuftedIB(TuftedIB.prototype.path), - 'TuftedRS': TuftedRS(TuftedRS.prototype.path), - 'DeepLTS': DeepLTS(DeepLTS.prototype.path), - 'DeepAxoaxonic': DeepAxoaxonic(DeepAxoaxonic.prototype.path), - 'DeepBasket': DeepBasket(DeepBasket.prototype.path), - 'TCR': TCR(TCR.prototype.path), - 'nRT': nRT(nRT.prototype.path), - } - return _cellprototypes - - -# -# cells.py ends here diff --git a/examples/traub_2005/py/channel_test_util.py b/examples/traub_2005/py/channel_test_util.py deleted file mode 100644 index 29f70c3..0000000 --- a/examples/traub_2005/py/channel_test_util.py +++ /dev/null @@ -1,96 +0,0 @@ -# channel_test_util.py -# -# Filename: channel_test_util.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed May 30 23:51:58 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:26:45 2016 (-0400) -# By: subha -# Update #: 125 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Utility functions for testing single channel models -# -# - -# Change log: -# -# -# - -# Code: -from __future__ import print_function - -import uuid -import unittest -import numpy as np -import moose -import channelbase -import testutils - -def run_single_channel(channelname, Gbar, simtime, simdt=testutils.SIMDT, plotdt=testutils.PLOTDT): - testId = uuid.uuid4().int - container = moose.Neutral('test%d' % (testId)) - model_container = moose.Neutral('%s/model' % (container.path)) - data_container = moose.Neutral('%s/data' % (container.path)) - params = testutils.setup_single_compartment( - model_container, data_container, - channelbase.prototypes[channelname], - Gbar) - vm_data = params['Vm'] - gk_data = params['Gk'] - ik_data = params['Ik'] - testutils.setup_clocks(simdt, plotdt) - testutils.assign_clocks(model_container, data_container) - moose.reinit() - print('Starting simulation', testId, 'for', simtime, 's') - moose.start(simtime) - print('Finished simulation') - vm_file = 'data/%s_Vm.dat' % (channelname) - gk_file = 'data/%s_Gk.dat' % (channelname) - ik_file = 'data/%s_Ik.dat' % (channelname) - tseries = np.array(range(len(vm_data.vector))) * simdt - print('Vm:', len(vm_data.vector), 'Gk', len(gk_data.vector), 'Ik', len(ik_data.vector)) - data = np.c_[tseries, vm_data.vector] - np.savetxt(vm_file, data) - print('Saved Vm in', vm_file) - print(len(gk_data.vector), len(vm_data.vector)) - data = np.c_[tseries, gk_data.vector] - np.savetxt(gk_file, data) - print('Saved Gk in', gk_file) - data = np.c_[tseries, ik_data.vector] - np.savetxt(ik_file, data) - print('Saved Gk in', ik_file) - return params - -def compare_channel_data(series, channelname, param, simulator, x_range=None, plot=False): - if simulator == 'moose': - ref_file = 'testdata/%s_%s.dat.gz' % (channelname, param) - elif simulator == 'neuron': - ref_file = '../nrn/data/%s_%s.dat.gz' % (channelname, param) - else: - raise ValueError('Unrecognised simulator: %s' % (simulator)) - try: - ref_series = np.loadtxt(ref_file) - except IOError, e: - print(e) - return -1.0 - if plot: - plt.figure() - plt.title(channelname) - return testutils.compare_data_arrays(ref_series, series, relative='meany', x_range=x_range, plot=plot) - -class ChannelTestBase(unittest.TestCase): - def __init__(self, *args, **kwargs): - unittest.TestCase.__init__(self, *args, **kwargs) - -# -# channel_test_util.py ends here diff --git a/examples/traub_2005/py/channelbase.py b/examples/traub_2005/py/channelbase.py deleted file mode 100644 index a013558..0000000 --- a/examples/traub_2005/py/channelbase.py +++ /dev/null @@ -1,174 +0,0 @@ -# trbchan.py --- -# -# Filename: trbchan.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri May 4 14:55:52 2012 (+0530) -# Version: -# Last-Updated: Fri May 3 11:45:07 2013 (+0530) -# By: subha -# Update #: 337 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Base class for channels in Traub model. -# -# - -# Change log: -# -# 2012-05-04 14:55:56 (+0530) subha started porting code from -# channel.py in old moose version to dh_branch. -# - -# Code: - -from warnings import warn -import numpy as np -import moose -import config - -vmin = -120e-3 -vmax = 40e-3 -vdivs = 640 -v_array = np.linspace(vmin, vmax, vdivs+1) - -ca_min = 0.0 -ca_max = 1000.0 -ca_divs = 1000 -ca_conc = np.linspace(ca_min, ca_max, ca_divs + 1) - -prototypes = {} - -def setup_gate_tables(gate, param_dict, bases): - suffix = None - if gate.name == 'gateX': - suffix = 'x' - elif gate.name == 'gateY': - suffix = 'y' - elif gate.name == 'gateZ': - suffix = 'z' - else: - raise NameError('Gate in a channel must have names in [`gateX`, `gateY`, `gateZ`]') - if suffix in ['x', 'y']: - gate.min = vmin - gate.max = vmax - gate.divs = vdivs - else: - gate.min = ca_min - gate.max = ca_max - gate.divs = ca_divs - gate.useInterpolation = True - keys = ['%s_%s' % (key, suffix) for key in ['tau', 'inf', 'alpha', 'beta', 'tableA', 'tableB']] - msg = '' - if keys[0] in param_dict: - msg = 'Using tau/inf tables' - gate.tableA = param_dict[keys[1]] / param_dict[keys[0]] - gate.tableB = 1 / param_dict[keys[0]] - elif keys[2] in param_dict: - msg = 'Using alpha/beta tables' - gate.tableA = param_dict[keys[2]] - gate.tableB = param_dict[keys[2]] + param_dict[keys[3]] - elif keys[4] in param_dict: - msg = 'Using A/B tables' - gate.tableA = param_dict[keys[4]] - gate.tableB = param_dict[keys[5]] - else: - for base in bases: - new_bases = base.mro() - new_param_dict = base.__dict__ - if new_bases: - new_bases = new_bases[1:] - if setup_gate_tables(gate, new_param_dict, new_bases): - msg = 'Gate setup in baseclass: '+base.__class__.__name__ - break - if msg: - config.logger.debug('%s: %s' % (gate.path, msg)) - return True - else: - config.logger.debug('%s: nothing was setup for this gate' % (gate.path)) - return False - -def get_class_field(name, cdict, bases, fieldname, default=None): - if fieldname in cdict: - config.logger.debug('%s: %s=%s' % (name, fieldname, str(cdict[fieldname]))) - return cdict[fieldname] - else: - for base in bases: - if hasattr(base, fieldname): - return getattr(base, fieldname) - # warn('field %s not in the hierarchy of %s class. Returning default value.' % (fieldname, name)) - return default - - -class ChannelMeta(type): - def __new__(cls, name, bases, cdict): - global prototypes - # classes that set absract=True will be - # abstract classes. Others will have the prototype insatntiated. - if 'abstract' in cdict and cdict['abstract'] == True: - return type.__new__(cls, name, bases, cdict) - proto = moose.HHChannel('%s/%s' % (config.library.path, name)) - xpower = get_class_field(name, cdict, bases, 'Xpower', default=0.0) - if xpower > 0: - proto.Xpower = xpower - gate = moose.HHGate('%s/gateX' % (proto.path)) - setup_gate_tables(gate, cdict, bases) - cdict['xGate'] = gate - ypower = get_class_field(name, cdict, bases, 'Ypower', default=0.0) - if ypower > 0: - proto.Ypower = ypower - gate = moose.HHGate('%s/gateY' % (proto.path)) - setup_gate_tables(gate, cdict, bases) - cdict['yGate'] = gate - zpower = get_class_field(name, cdict, bases, 'Zpower', default=0.0) - if zpower > 0: - proto.Zpower = zpower - gate = moose.HHGate('%s/gateZ' % (proto.path)) - setup_gate_tables(gate, cdict, bases) - cdict['zGate'] = gate - ca_msg_field = moose.Mstring('%s/addmsg1' % (proto.path)) - ca_msg_field.value = '../CaPool concOut . concen' - proto.instant = get_class_field(name, cdict, bases, 'instant', default=0) - proto.useConcentration = True - proto.Ek = get_class_field(name, cdict, bases, 'Ek', default=0.0) - X = get_class_field(name, cdict, bases, 'X') - if X is not None: - proto.X = X - Y = get_class_field(name, cdict, bases, 'Y') - if Y is not None: - proto.Y = Y - Z = get_class_field(name, cdict, bases, 'Z') - if Z is not None: - proto.Z = Z - mstring_field = get_class_field(name, cdict, bases, 'mstring') - if mstring_field is not None: - # print 'mstring_field:', mstring_field - mstring = moose.Mstring('%s/%s' % (proto.path, mstring_field[0])) - mstring.value = mstring_field[1] - if 'annotation' in cdict: - info = moose.Annotator('%s/info' % (proto.path)) - info.notes = '\n'.join('%s: %s' % kv for kv in cdict['annotation'].items()) - # print proto.path, info.notes - cdict['prototype'] = proto - prototypes[name] = proto - config.logger.info('Created prototype: %s of class %s' % (proto.path, name)) - return type.__new__(cls, name, bases, cdict) - - -class ChannelBase(moose.HHChannel): - annotation = {'cno': 'cno_0000047'} - abstract = True - __metaclass__ = ChannelMeta - def __init__(self, path, xpower=1, ypower=0, Ek=0.0): - moose.HHChannel.__init__(self, path) - - -# -# trbchan.py ends here diff --git a/examples/traub_2005/py/channelinit.py b/examples/traub_2005/py/channelinit.py deleted file mode 100644 index 1b9b34b..0000000 --- a/examples/traub_2005/py/channelinit.py +++ /dev/null @@ -1,62 +0,0 @@ -# init.py --- -# -# Filename: init.py -# Description: -# Author: -# Maintainer: -# Created: Wed May 23 21:24:11 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 14:35:20 2016 (-0400) -# By: subha -# Update #: 75 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Initialize model prototypes -# -# - -# Change log: -# -# -# -# -# Code: - -import moose -import config -import nachans -import kchans -import archan -import cachans -import capool - - -_channels = {} - -def init_chanlib(): - """Return a dict of channel name, channel prototype pairs. If the - channel prototypes have not been initialized, this functions - initializes the same.""" - global _channels - if _channels: - return _channels - if not moose.exists(config.modelSettings.libpath): - moose.Neutral(config.modelSettings.libpath) - _channels.update(nachans.initNaChannelPrototypes()) - _channels.update(kchans.initKChannelPrototypes()) - _channels.update(archan.initARChannelPrototypes()) - _channels.update(cachans.initCaChannelPrototypes()) - _channels.update(capool.initCaPoolPrototypes()) - _channels['spike'] = moose.SpikeGen('{}/spike'.format(config.modelSettings.libpath)) - return _channels - -init_chanlib() - -# -# init.py ends here diff --git a/examples/traub_2005/py/config.py b/examples/traub_2005/py/config.py deleted file mode 100644 index 7569af2..0000000 --- a/examples/traub_2005/py/config.py +++ /dev/null @@ -1,161 +0,0 @@ -# config.py --- -# -# Filename: config.py -# Description: -# Author: -# Maintainer: -# Created: Wed May 23 11:31:40 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:25:16 2016 (-0400) -# By: subha -# Update #: 130 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -from __future__ import print_function -import settings -import os - -# These settings are to imitate sedml entities for configuring simulation -simulationSettings = settings.SimulationSettings() -modelSettings = settings.ModelSettings() -analogSignalRecordingSettings = settings.DataSettings() -spikeRecordingSettings = settings.DataSettings() -changeSettings = settings.ChangeSettings() - -simulationSettings.endTime = 10.0 - -modelSettings.container = '/network' -modelSettings.libpath = '/library' -modelSettings.protodir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'proto') - -modelSettings.morph_has_postion = False -modelSettings.populationSize['SupPyrRS'] = 1000 -modelSettings.populationSize['SupPyrFRB'] = 50 -modelSettings.populationSize['SupBasket'] = 90 -modelSettings.populationSize['SupAxoaxonic'] = 90 -modelSettings.populationSize['SupLTS'] = 90 -modelSettings.populationSize['SpinyStellate'] = 240 -modelSettings.populationSize['TuftedIB'] = 800 -modelSettings.populationSize['TuftedRS'] = 200 -modelSettings.populationSize['DeepBasket'] = 100 -modelSettings.populationSize['DeepAxoaxonic'] = 100 -modelSettings.populationSize['DeepLTS'] = 100 -modelSettings.populationSize['NontuftedRS'] = 500 -modelSettings.populationSize['TCR'] = 100 -modelSettings.populationSize['nRT'] = 100 - -analogSignalRecordingSettings.targets = [ - '/network/SupPyrRS/#[NAME=comp_0]', - '/network/SupPyrFRB/#[NAME=comp_0]', - '/network/SupBasket/#[NAME=comp_0]', - '/network/SupAxoaxonic/#[NAME=comp_0]', - '/network/SupLTS/#[NAME=comp_0]', - '/network/SpinyStellate/#[NAME=comp_0]', - '/network/TuftedIB/#[NAME=comp_0]', - '/network/TuftedRS/#[NAME=comp_0]', - '/network/DeepBasket/#[NAME=comp_0]', - '/network/DeepAxoaxonic/#[NAME=comp_0]', - '/network/DeepLTS/#[NAME=comp_0]', - '/network/NontuftedRS/#[NAME=comp_0]', - '/network/TCR/#[NAME=comp_0]', - '/network/nRT/#[NAME=comp_0]', - ] - -analogSignalRecordingSettings.fractions = 0.1 -analogSignalRecordingSettings.fields = { - 'Vm': 'AnalogSignal', - 'CaPool/conc': 'AnalogSignal', - } - -spikeRecordingSettings.targets = [ - '/network/SupPyrRS/#[NAME=comp_0]', - '/network/SupPyrFRB/#[NAME=comp_0]', - '/network/SupBasket/#[NAME=comp_0]', - '/network/SupAxoaxonic/#[NAME=comp_0]', - '/network/SupLTS/#[NAME=comp_0]', - '/network/SpinyStellate/#[NAME=comp_0]', - '/network/TuftedIB/#[NAME=comp_0]', - '/network/TuftedRS/#[NAME=comp_0]', - '/network/DeepBasket/#[NAME=comp_0]', - '/network/DeepAxoaxonic/#[NAME=comp_0]', - '/network/DeepLTS/#[NAME=comp_0]', - '/network/NontuftedRS/#[NAME=comp_0]', - '/network/TCR/#[NAME=comp_0]', - '/network/nRT/#[NAME=comp_0]', - ] - -spikeRecordingSettings.fractions = 1.0 -spikeRecordingSettings.fields = { - 'Vm': 'Event', - } - -#--------------------------------------------------------------------- -# Logging -#--------------------------------------------------------------------- -from datetime import datetime -import logging - -timestamp = datetime.now() -mypid = os.getpid() -data_dir_prefix = 'data' -if not os.access(data_dir_prefix, os.W_OK): - data_dir_prefix = '/tmp/traub2005_data' -if not os.access(data_dir_prefix, os.F_OK): - os.mkdir(data_dir_prefix) -data_dir = os.path.join(data_dir_prefix, timestamp.strftime('%Y_%m_%d')) -if not os.access(data_dir, os.F_OK): - os.mkdir(data_dir) -print('data_dir =', data_dir) -filename_suffix = '_%s_%d' % (timestamp.strftime('%Y%m%d_%H%M%S'), mypid) - -def handleError(self, record): - raise - -LOG_FILENAME = os.path.join(data_dir, 'traub2005%s.log' % (filename_suffix)) -LOG_LEVEL = logging.DEBUG -logging.Handler.handleError = handleError -logging.basicConfig(filename=LOG_FILENAME, level=LOG_LEVEL, format='%(asctime)s %(levelname)s %(name)s %(filename)s %(funcName)s: %(message)s', filemode='w') -# logging.basicConfig(level=LOG_LEVEL, format='%(asctime)s %(levelname)s %(name)s %(filename)s %(funcName)s: %(message)s', filemode='w') - -logger = logging.getLogger('traub2005') - -# Add a logging handler to print messages to stderr -ch = logging.StreamHandler() -ch.setLevel(logging.ERROR) -# create formatter and add it to the handlers -formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(filename)s %(funcName)s: %(message)s') -ch.setFormatter(formatter) -# add the handlers to logger -logger.addHandler(ch) - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import moose -############################################################ -# Initialize library and other containers. -############################################################ -library = moose.Neutral(modelSettings.libpath) - - -# -# config.py ends here diff --git a/examples/traub_2005/py/custom.ini b/examples/traub_2005/py/custom.ini deleted file mode 100644 index 7785c37..0000000 --- a/examples/traub_2005/py/custom.ini +++ /dev/null @@ -1,202 +0,0 @@ -############################################################# -# File: custom.ini -# Author: Subhasis Ray -# -# Customization for simulation settings. Comment out the entries in -# any section to use the values set in defaults.ini. See dafaults.ini -# for description of each section and entries under them. -[numeric] -rngseed = 1 -reseed = no -stochastic = no -solver = hsolve - -# Keep the rngseed fixed to make deterministic simulations. And -# verification purposes. Will make it 0 (set from system time and -# hostname) for stochastic simulation -moose_rngseed = 0 - -# Scheduling settings -[scheduling] -autoschedule = yes -simdt = 25e-6 -plotdt = 0.25e-3 -gldt = 1e9 -simtime = 5.0 - -################################################################ -# Some properties of synapses to be modified from simulation to -# simulation -[synapse] -# Default value of initial release probability. -releasep = 0.8 -[NMDA] -# initPr = 1.0 -# deltaF = 0.917 -# d1 = 0.416 -# d2 = 0.975 -# tauF = 0.094 -# tauD1 = 0.38 -# tauD2 = 9.2 -# conductance_scale = 1.0 -# Default properties for AMPA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] -[AMPA] -# initPr = 1.0 -# deltaF = 0.917 -# d1 = 0.416 -# d2 = 0.975 -# tauF = 0.094 -# tauD1 = 0.38 -# tauD2 = 9.2 -# conductance_scale = 1.0 -# Default properties for GABA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] -[GABA] -# initPr = 1.0 -# deltaF = 0.917 -# d1 = 0.416 -# d2 = 0.975 -# tauF = 0.094 -# tauD1 = 0.38 -# tauD2 = 9.2 -conductance_scale = 1.25 - -# Number of cells of each kind -[cellcount] -SupPyrRS = 20 -SupPyrFRB = 20 -SupBasket = 20 -SupAxoaxonic = 20 -SupLTS = 20 -SpinyStellate = 20 -TuftedIB = 20 -TuftedRS = 20 -DeepBasket = 20 -DeepAxoaxonic = 20 -DeepLTS = 20 -NontuftedRS = 20 -TCR = 20 -nRT = 20 - -################################################################ -# How many cells from each cell class to record from. -# All these cells' [Ca2+] is also recorded. -# Uncomment and modify to override defaults - -[vm_record] -SupPyrRS = 100 -SupPyrFRB = 5 -SupBasket = 9 -SupAxoaxonic = 9 -SupLTS = 9 -SpinyStellate = 24 -TuftedIB = 80 -TuftedRS = 20 -DeepBasket = 10 -DeepAxoaxonic = 10 -DeepLTS = 10 -NontuftedRS = 50 -TCR = 10 -nRT = 10 - -################################################################ -# The following are used for computing randomized compartment -# properties using the preset values as mean and specified sd as -# standard deviatino as a fraction of mean. Note: there will be a -# problem if mean is 0.0. But it is more convenient for avoiding -# absurd sd's in general. All the parameters are positive except -# Em/initVm. -# Uncomment and modify to override defaults - -# [sd_passive] -# initVm = 0.10 -# Rm = 0.10 -# Cm = 0.10 -# Ra = 0.10 - -# These are the standard deviations as fraction of mean for active -# conductances. -[sd_active] -# KDR = 0.10 -# KDR_FS = 0.10 -# KA = 0.10 -# KA_IB = 0.10 -# K2 = 0.10 -# KM = 0.10 -# KAHP = 0.10 -# KAHP_SLOWER = 0.10 -# KAHP_DP = 0.10 -# KC = 0.10 -# KC_FAST = 0.10 -# NaF = 0.10 -# NaF2 = 0.10 -# NaF2_nRT = 0.10 -# NaP = 0.10 -# NaPF = 0.10 -# NaPF_SS = 0.10 -# NaPF_TCR = 0.10 -# NaF_TCR = 0.10 -# CaL = 0.10 -# CaT = 0.10 -# CaT_A = 0.10 -# AR = 0.10 - -[bias_current] -SupPyrRS_level_0 = 0.05e-9 -SupPyrRS_delay_0 = 0.0 -SupPyrRS_width_0 = 1e9 -SupPyrFRB_level_0 = 0.3e-9 -SupPyrFRB_delay_0 = 0.0 -SupPyrFRB_width_0 = 1e9 -SupBasket_level_0 = -SupBasket_delay_0 = -SupBasket_width_0 = -SupAxoaxonic_level_0 = -SupAxoaxonic_delay_0 = -SupAxoaxonic_width_0 = -SupLTS_level_0 = -SupLTS_delay_0 = -SupLTS_width_0 = -SpinyStellate_level_0 = 0.05e-9 -SpinyStellate_delay_0 = 0.0 -SpinyStellate_width_0 = 1e9 -TuftedIB_level_0 = 0.05e-9 -TuftedIB_delay_0 = 0.0 -TuftedIB_width_0 = 1e9 -TuftedRS_level_0 = 0.05e-9 -TuftedRS_delay_0 = 0.0 -TuftedRS_width_0 = 1e9 -DeepBasket_level_0 = -DeepBasket_delay_0 = -DeepBasket_width_0 = -DeepAxoaxonic_level_0 = -DeepAxoaxonic_delay_0 = -DeepAxoaxonic_width_0 = -DeepLTS_level_0 = -DeepLTS_delay_0 = -DeepLTS_width_0 = -NontuftedRS_level_0 = 0.05e-9 -NontuftedRS_delay_0 = 0.0 -NontuftedRS_width_0 = 1e9 -TCR_level_0 = -TCR_delay_0 = -TCR_width_0 = -nRT_level_0 = -nRT_delay_0 = -nRT_width_0 = - -# The settings for stimulus protocol -[stimulus] -background = TCR -probe = SpinyStellate -bg_count = 10 -probe_count = 2 -onset = 1.0 -bg_interval = 0.5 -pulse_width = 60e-6 -isi = 10e-3 -amplitude = 5e-12 - - - - - diff --git a/examples/traub_2005/py/deadlock_bug.py b/examples/traub_2005/py/deadlock_bug.py deleted file mode 100644 index d876cd7..0000000 --- a/examples/traub_2005/py/deadlock_bug.py +++ /dev/null @@ -1,266 +0,0 @@ -# deadlock_bug.py --- -# -# Filename: deadlock_bug.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Mon Jul 16 22:34:26 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:32:49 2016 (-0400) -# By: subha -# Update #: 22 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This isolates a single celltype for testing. In some runs, the -# control never returns from ReadCell and I suspected it to be a -# thread deadlock. Hence this file to isolate the issue. -# - -# Change log: -# -# -# - -# Code: -from __future__ import print_function - -from collections import defaultdict -import moose -import config -from config import logger -import nachans -import kchans -import archan -import cachans -import capool -from channelinit import init_chanlib - -def read_keyvals(filename): - """Read the mapping between key value pairs from file. - - The file filename should have two columns: - - key value - - """ - ret = defaultdict(set) - try: - with(open(filename, 'r')) as level_file: - for line in level_file: - tokens = line.split() - if not tokens: - continue - if len(tokens) != 2: - print(filename, ' - Tokens: ', tokens, len(tokens)) - return None - ret[tokens[1]].add(tokens[0]) - except IOError: - config.logger.info('No such file %s' % (filename)) - return ret - -def adjust_chanlib(cdict): - """Update the revarsal potentials for channels. Set the initial X - value for AR channel. Set the tau for Ca pool.""" - channel_dict = init_chanlib() - for ch in channel_dict.values(): - if isinstance(ch, kchans.KChannel): - ch.Ek = cdict['EK'] - elif isinstance(ch, nachans.NaChannel): - ch.Ek = cdict['ENa'] - elif isinstance(ch, cachans.CaChannel): - ch.Ek = cdict['ECa'] - elif isinstance(ch, archan.AR): - ch.Ek = cdict['EAR'] - if 'X_AR' in cdict: - ch.X = cdict['X_AR'] - elif isinstance(ch, capool.CaPool): - ch.tau = cdict['TauCa'] - -def read_prototype(celltype, cdict): - """Read the cell prototype file for the specified class. The - channel properties are updated using values in cdict.""" - filename = '%s/%s.p' % (config.modelSettings.protodir, celltype) - logger.debug('Reading prototype file %s' % (filename)) - adjust_chanlib(cdict) - cellpath = '%s/%s' % (config.modelSettings.libpath, celltype) - if moose.exists(cellpath): - return moose.element(cellpath) - for handler in logger.handlers: - handler.flush() - proto = moose.loadModel(filename, cellpath) - # If prototype files do not have absolute compartment positions, - # set the compartment postions to origin. This will avoid - # incorrect assignemnt of position when the x/y/z values in - # prototype file is just for setting the compartment length. - if not config.modelSettings.morph_has_postion: - for comp in moose.wildcardFind('%s/#[ISA=Compartment]' % (proto.path)): - comp.x = 0.0 - comp.y = 0.0 - comp.z = 0.0 - leveldict = read_keyvals('%s/%s.levels' % (config.modelSettings.protodir, celltype)) - depths = read_keyvals('%s/%s.depths' % (config.modelSettings.protodir, celltype)) - depthdict = {} - for level, depthset in depths.items(): - if len(depthset) != 1: - raise Exception('Depth set must have only one entry.') - depthdict[level] = depthset.pop() - assign_depths(proto, depthdict, leveldict) - return proto - -def assign_depths(cell, depthdict, leveldict): - """Assign depths to the compartments in the cell. The original - model assigns sets of compartments to particular levels and a - depth is specified for each level. This should not be required if - we have the z value in prototype file. - - cell : (prototype) cell instance - - depth : dict mapping level no. to physical depth - - level : dict mapping level no. to compartment nos. belonging to - that level. - """ - if not depthdict: - return - for level, depth in depthdict.items(): - z = float(depth) - complist = leveldict[level] - for comp_number in complist: - comp = moose.element('%s/comp_%s' % (cell.path, comp_number)) - comp.z = z - - -class CellMeta(type): - def __new__(cls, name, bases, cdict): - if name != 'CellBase': - proto = read_prototype(name, cdict) - if 'soma_tauCa' in cdict: - moose.element(proto.path + '/comp_1/CaPool').tau = cdict['soma_tauCa'] - cdict['prototype'] = proto - return type.__new__(cls, name, bases, cdict) - - -class CellBase(moose.Neutral): - __metaclass__ = CellMeta - def __init__(self, path): - if not moose.exists(path): - path_tokens = path.rpartition('/') - moose.copy(self.prototype, path_tokens[0], path_tokens[-1]) - moose.Neutral.__init__(self, path) - - def comp(self, number): - return moose.element('%s/comp_%d' % (self.path, number)) - - @property - def soma(self): - return self.comp(1) - - @property - def presynaptic(self): - """Presynaptic compartment. Each subclass should define - _presynaptic as the index of this compartment.""" - return self.comp[self.__class__._presynaptic] - -class TCR(CellBase): - _presynaptic = 135 - ENa = 50e-3 - EK = -95e-3 - EAR = -35e-3 - ECa = 125e-3 - EGABA = -81e-3 - TauCa = 20e-3 - X_AR = 0.25 - soma_tauCa = 50e-3 - - def __init__(self, path): - CellBase.__init__(self, path) - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import time -import unittest -import uuid - -import moose - -def setupClocks(dt): - print('Setting up clocks') - for ii in range(10): - moose.setClock(ii, dt) - -def setupCurrentStepModel(testId, celltype, pulsearray, dt): - """Setup a single cell simulation. - - simid - integer identifying the model - - celltype - str cell type - - pulsearray - an nx3 array with row[i] = (delay[i], width[i], level[i]) of current injection. - """ - modelContainer = moose.Neutral('/test%d' % (testId)) - dataContainer = moose.Neutral('/data%d' % (testId)) - cell = TCR('%s/TCR' % (modelContainer.path)) # moose.copy(cells.TCR.prototype, modelContainer.path)# - pulsegen = moose.PulseGen('%s/pulse' % (modelContainer.path)) - pulsegen.count = len(pulsearray) - for ii in range(len(pulsearray)): - pulsegen.delay[ii] = pulsearray[ii][0] - pulsegen.width[ii] = pulsearray[ii][1] - pulsegen.level[ii] = pulsearray[ii][2] - moose.connect(pulsegen, 'output', cell.soma, 'injectMsg') - somaVm = moose.Table('%s/vm' % (dataContainer.path)) - moose.connect(somaVm, 'requestOut', cell.soma, 'getVm') - pulseTable = moose.Table('%s/pulse' % (dataContainer.path)) - moose.connect(pulseTable, 'requestOut', pulsegen, 'getOutputValue') - setupClocks(dt) - moose.useClock(0, '%s/##[ISA=Compartment]' % (cell.path), 'init') - moose.useClock(1, '%s/##[ISA=Compartment]' % (cell.path), 'process') - moose.useClock(7, pulsegen.path, 'process') - moose.useClock(8, '%s/##' % (dataContainer.path), 'process') - return {'cell': cell, - 'stimulus': pulsegen, - 'vmTable': somaVm, - 'stimTable': pulseTable - } - -def runsim(simtime, steplength=0.01): - moose.reinit() - clock = moose.element('/clock') - while clock.currentTime < simtime: - moose.start(steplength) - print('Current simulation time:', clock.currentTime) - time.sleep(0.05) - -pulsearray = [[.05, 100e-3, 0.9e-9], - [1e9, 10e-3, 0.3e-9], # This will block stimulation after the first one - [0.05, 10e-3, 0.1e-9], - [0.05, 10e-3, -0.1e-9], - [0.05, 10e-3, -0.3e-9]] - -simdt = 0.25e-4 -simtime = 0.1 - -class TestTCR(unittest.TestCase): - def setUp(self): - self.testId = uuid.uuid4().int - params = setupCurrentStepModel(self.testId, 'TCR', pulsearray, simdt) - print('Starting simulation') - runsim(simtime) - - def testDefault(self): - pass - -if __name__ == '__main__': - unittest.main() - - - -# -# deadlock_bug.py ends here diff --git a/examples/traub_2005/py/defaults.ini b/examples/traub_2005/py/defaults.ini deleted file mode 100644 index 2e8ee27..0000000 --- a/examples/traub_2005/py/defaults.ini +++ /dev/null @@ -1,212 +0,0 @@ -# default numeric settings. -[numeric] -# rngseed is the seed for numpy random number generator. If left numpy RNG is seeded with PID of the python process. -rngseed = -# If reseed is set to yes, numpy RNG is reseeded with rngseed or PID of python. -reseed = yes -# stochastic = yes makes the simulation use stochastic and plastic synaptic channels. -# stochastic = no makes the simulation use deterministic and non-plastic synaptic channels. -stochastic = yes -# If solver = hsolve, hines method is used for calculating neuronal dynamics. If solver = ee, then exponential euler method is used. -solver = ee -# setting moose rngseed to 0 causes a scramble of hostname, and current time to be used as seed. -moose_rngseed = 0 -# Scheduling settings -[scheduling] -# In moose-beta objects are scheduled by default. -autoschedule = yes -# simdt is Integration time step for the simulation -simdt = 50e-6 -# plotdt is Data recording interval -plotdt = 0.25e-3 -# gldt was used as update interval for MOOSE OpenGL display by Karan Vasudevan. -gldt = 1e9 -# Total simulation runtime in seconds -simtime = 1.0 - - -# Some properties of synapses to be modified from simulation to -# simulation -[synapse] -# Default value of initial release probability. -# Default properties for NMDA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] -[NMDA] -initPr = 1.0 -deltaF = 0.917 -d1 = 0.416 -d2 = 0.975 -tauF = 0.094 -tauD1 = 0.38 -tauD2 = 9.2 -conductance_scale = 1.0 -# Default properties for AMPA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] -[AMPA] -initPr = 1.0 -deltaF = 0.917 -d1 = 0.416 -d2 = 0.975 -tauF = 0.094 -tauD1 = 0.38 -tauD2 = 9.2 -conductance_scale = 1.0 -# Default properties for GABA synapses. These are used only in the stochastic/plastic synapses. Ignored is stochastic = no in [numeric] -[GABA] -initPr = 1.0 -deltaF = 0.917 -d1 = 0.416 -d2 = 0.975 -tauF = 0.094 -tauD1 = 0.38 -tauD2 = 9.2 -conductance_scale = 1.0 -# Number of cells of each kind -[cellcount] -SupPyrRS = 1000 -SupPyrFRB = 50 -SupBasket = 90 -SupAxoaxonic = 90 -SupLTS = 90 -SpinyStellate = 240 -TuftedIB = 800 -TuftedRS = 200 -DeepBasket = 100 -DeepAxoaxonic = 100 -DeepLTS = 100 -NontuftedRS = 500 -TCR = 100 -nRT = 100 - -# How many cells from each cell class to record from. -# All these cells' [Ca2+] is also recorded. -[vm_record] -SupPyrRS = 1000 -SupPyrFRB = 50 -SupBasket = 90 -SupAxoaxonic = 90 -SupLTS = 90 -SpinyStellate = 240 -TuftedIB = 800 -TuftedRS = 200 -DeepBasket = 100 -DeepAxoaxonic = 100 -DeepLTS = 100 -NontuftedRS = 500 -TCR = 100 -nRT = 100 - -# Current injection to be applied -[current_injection] -delay0 = 5.0 -width0 = 5.0 -level0 = -0.9e-9 -delay1 = 6.0 -width1 = 5.0 -level1 = -0.3e-9 -delay2 = 10.0 -width2 = 5.0 -level2 = 0.1e-9 -delay3 = 10.0 -width3 = 5.0 -level3 = 0.3e-9 -delay4 = 1e9 - -[bias_current] -SupPyrRS_level_0 = -SupPyrRS_delay_0 = -SupPyrRS_width_0 = -SupPyrFRB_level_0 = -SupPyrFRB_delay_0 = -SupPyrFRB_width_0 = -SupBasket_level_0 = -SupBasket_delay_0 = -SupBasket_width_0 = -SupAxoaxonic_level_0 = -SupAxoaxonic_delay_0 = -SupAxoaxonic_width_0 = -SupLTS_level_0 = -SupLTS_delay_0 = -SupLTS_width_0 = -SpinyStellate_level_0 = -SpinyStellate_delay_0 = -SpinyStellate_width_0 = -TuftedIB_level_0 = -TuftedIB_delay_0 = -TuftedIB_width_0 = -TuftedRS_level_0 = -TuftedRS_delay_0 = -TuftedRS_width_0 = -DeepBasket_level_0 = -DeepBasket_delay_0 = -DeepBasket_width_0 = -DeepAxoaxonic_level_0 = -DeepAxoaxonic_delay_0 = -DeepAxoaxonic_width_0 = -DeepLTS_level_0 = -DeepLTS_delay_0 = -DeepLTS_width_0 = -NontuftedRS_level_0 = -NontuftedRS_delay_0 = -NontuftedRS_width_0 = -TCR_level_0 = -TCR_delay_0 = -TCR_width_0 = -nRT_level_0 = -nRT_delay_0 = -nRT_width_0 = - - -# The following are used for computing randomized compartment -# properties using the preset values as mean and specified sd as -# standard deviatino as a fraction of mean. Note: there will be a -# problem if mean is 0.0. But it is more convenient for avoiding -# absurd sd's in general. All the parameters are positive except -# Em/initVm. -[sd_passive] -#initVm = 0.10 -#Rm = 0.10 -#Cm = 0.10 -#Ra = 0.10 - -# These are the standard deviations as fraction of mean for active -# conductances. If the model has maximum conductance Gbar for a -# channel, we compute the randomized Gbar as normal(mean=Gbar, -# sd=sd_active*Gbar) -[sd_active] -KDR = 0.10 -KDR_FS = 0.10 -KA = 0.10 -KA_IB = 0.10 -K2 = 0.10 -KM = 0.10 -KAHP = 0.10 -KAHP_SLOWER = 0.10 -KAHP_DP = 0.10 -KC = 0.10 -KC_FAST = 0.10 -NaF = 0.10 -NaF2 = 0.10 -NaF2_nRT = 0.10 -NaP = 0.10 -NaPF = 0.10 -NaPF_SS = 0.10 -NaPF_TCR = 0.10 -NaF_TCR = 0.10 -CaL = 0.10 -CaT = 0.10 -CaT_A = 0.10 -AR = 0.10 - - -# The settings for stimulus protocol -[stimulus] -background = TCR -probe = SpinyStellate -bg_count = 100 -probe_count = 10 -onset = 1.0 -bg_interval = 0.5 -pulse_width = 60e-6 -isi = 10e-3 -amplitude = 5e-12 - - diff --git a/examples/traub_2005/py/display_morphology.py b/examples/traub_2005/py/display_morphology.py deleted file mode 100644 index 7722b23..0000000 --- a/examples/traub_2005/py/display_morphology.py +++ /dev/null @@ -1,181 +0,0 @@ -# display_morphology.py --- -# -# Filename: display_morphology.py -# Description: -# Author: -# Maintainer: -# Created: Fri Mar 8 11:26:13 2013 (+0530) -# Version: -# Last-Updated: Thu Aug 11 11:29:36 2016 (-0400) -# By: Subhasis Ray -# Update #: 389 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Draw the schematic diagram of cells using networkx -# -# - -# Change log: -# -# -# -# - -# Code: -from __future__ import print_function - -""" -Display/save the topology of one or all cells in traub_2005 demo. - -command line options (all are optional): --c celltype : display topology of cell type 'celltype'. If unspecified, all cell types are displayed --p filename : save output to fiel specified by 'filename' --l : show labels of the compartments --h,--help : show this help -""" -import sys -sys.path.append('../../../python') -import os -import numpy as np -import matplotlib.pyplot as plt -import networkx as nx -import moose -import cells - -def node_sizes(g): - """Calculate the 2D projection area of each compartment. - - g: graph whose nodes are moose Compartment objects. - - return a numpy array with compartment areas in 2D projection - normalized by the maximum. - - """ - sizes = [] - comps = [moose.Compartment(n) for n in g.nodes()] - sizes = np.array([c.length * c.diameter for c in comps]) - soma_i = [ii for ii in range(len(comps)) if comps[ii].path.endswith('comp_1')] - sizes[soma_i] *= np.pi/4 # for soma, length=diameter. So area is dimater^2 * pi / 4 - return sizes / max(sizes) - -def cell_to_graph(cell, label=False): - """Convert a MOOSE compartmental neuron into a graph describing - the topology of the compartments - - """ - soma = moose.element('%s/comp_1' % (cell.path)) - if len(soma.neighbors['axialOut']) > 0: - msg = 'raxialOut' - elif len(soma.neighbors['distalOut']) > 0: - msg = 'distalOut' - else: - raise Exception('No neighbors on raxial or distal') - es = [(c1.path, c2[0].path, {'weight': 2/ (c1.Ra + c2[0].Ra)}) \ - for c1 in moose.wildcardFind('%s/##[ISA=CompartmentBase]' % (cell.path)) \ - for c2 in moose.Compartment(c1).neighbors[msg]] - g = nx.Graph() - g.add_edges_from(es) - if label: - for v in g.nodes(): - g.node[v]['label'] = v.rpartition('/')[-1] - return g - -def axon_dendrites(g): - """Get a 2-tuple with list of nodes representing axon and list of - nodes representing dendrites. - - g: graph whose nodes are compartments - - """ - axon = [] - soma_dendrites = [] - for n in g.nodes(): - if moose.exists('%s/CaPool' % (n)): - soma_dendrites.append(n) - else: - axon.append(n) - return (axon, soma_dendrites) - -def plot_cell_topology(cell, label=False): - g = cell_to_graph(cell, label=label) - axon, sd = axon_dendrites(g) - node_size = node_sizes(g) - weights = np.array([g.edge[e[0]][e[1]]['weight'] for e in g.edges()]) - try: - pos = nx.graphviz_layout(g,prog='twopi',root=cell.path + '/comp_1') - except (NameError, AttributeError) as e: - # this is the best networkx can do by itself. Its Furchtman - # Reingold layout ends up with overlapping edges even for a - # tree. igraph does much better. - pos = nx.spectral_layout(g) - nx.draw_networkx_edges(g, pos, width=10*weights/max(weights), edge_color='gray', alpha=0.8) - nx.draw_networkx_nodes(g, pos, with_labels=False, - nnode_size=node_size * 500, - node_color=map(lambda x: 'k' if x in axon else 'gray', g.nodes()), - linewidths=[1 if n.endswith('comp_1') else 0 for n in g.nodes()], - alpha=0.8) - if label: - labels = dict([(n, g.node[n]['label']) for n in g.nodes()]) - nx.draw_networkx_labels(g, pos, labels=labels) - plt.title(cell.__class__.__name__) - -from matplotlib.backends.backend_pdf import PdfPages - -import sys -from getopt import getopt - -if __name__ == '__main__': - optlist, args = getopt(sys.argv[1:], 'lhp:c:', ['help']) - celltype = '' - pdf = '' - label = False - for arg in optlist: - if arg[0] == '-c': - celltype = arg[1] - elif arg[0] == '-p': - pdf = arg[1] - elif arg[0] == '-l': - label = True - elif arg[0] == '-h' or arg[0] == '--help': - print('Usage: %s [-c CellType [-p filename]]' % (sys.argv[0])) - print('Display/save the morphology of cell type "CellType".') - print('Options:') - print('-c celltype (optional) display only an instance of the specified cell type. If CellType is empty or not specified, all prototype cells are displayed.') - print('-l label the compartments') - print('-p filename (optional) save outputin a pdf file named "filename".') - print('-h,--help print this help') - sys.exit(0) - figures = [] - if len(celltype) > 0: - try: - fig = plt.figure() - figures.append(fig) - cell = cells.init_prototypes()[celltype] - # print 'Label', label - plot_cell_topology(cell, label=label) - except KeyError: - print( '%s: no such cell type. Available are:' % (celltype)) - for ii in cells.init_prototypes().keys(): - print( ii) - sys.exit(1) - else: - for cell, proto in cells.init_prototypes().items(): - figures.append(plt.figure()) - plot_cell_topology(proto, label=label) - plt.axis('off') - if len(pdf) > 0: - pdfout = PdfPages(pdf) - for fig in figures: - pdfout.savefig(fig) - pdfout.close() - else: - plt.show() - -# -# display_morphology.py ends here diff --git a/examples/traub_2005/py/dump_f_i_curves.py b/examples/traub_2005/py/dump_f_i_curves.py deleted file mode 100644 index 18e0dfb..0000000 --- a/examples/traub_2005/py/dump_f_i_curves.py +++ /dev/null @@ -1,112 +0,0 @@ -# dump_f_i_curves.py --- -# -# Filename: dump_f_i_curves.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Tue Dec 8 13:11:01 2015 (-0500) -# Version: -# Package-Requires: () -# Last-Updated: Wed Dec 9 12:28:06 2015 (-0500) -# By: Subhasis Ray -# Update #: 79 -# URL: -# Doc URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change Log: -# -# -# -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Emacs. If not, see . -# -# - -# Code: - -"""Do a series of current steps on each celltype""" -from __future__ import print_function -import numpy as np -import h5py as h5 -from collections import defaultdict - -import moose -from moose import utils as mutils - -from cells import SpinyStellate -from cells import DeepBasket -from cells import DeepLTS - - -simdt = 2.5e-6 -plotdt = 1e-4 - -amps = np.array([-0.1, 0.1, 0.5, 1.0, 1.5])*1e-9 - -def run_current_pulse(amps, delay=100e-3, dur=100e-3, trail=100e-3, outfile='f_i_curves_data.h5'): - models = [] - model = moose.Neutral('/model') - data = moose.Neutral('/data') - ddict = defaultdict(list) - for ii, amp in enumerate(amps): - mc = moose.Neutral('{}/mc_{}'.format(model.path, ii)) - models.append(mc) - stim = moose.PulseGen('{}/stim_{}'.format(mc.path, ii)) - stim.delay[0] = delay - stim.width[0] = dur - stim.level[0] = amp - stim.delay[1] = 1e9 # make delay so large that it does not activate again - for celltype in [SpinyStellate, DeepBasket, DeepLTS]: - cell = celltype('{}/{}_{}'.format(mc.path, celltype.__name__, ii)) - solver = moose.HSolve('{}/solver'.format(cell.path)) - solver.dt = simdt - solver.target = cell.path - stim.connect('output', cell.soma, 'injectMsg') - tab = moose.Table('/data/Vm_{}'.format(cell.name)) - ddict[ii].append(tab) - tab.connect('requestOut', cell.soma, 'getVm') - mutils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - mutils.assignDefaultTicks(modelRoot='/model', dataRoot='/data', solver='hsolve') - moose.reinit() - print('Finished scheduling') - moose.start(delay + dur + trail) - print('Finished simulation') - # Save data - fd = h5.File(outfile, 'w') - for ii, tabs in ddict.items(): - for tab in tabs: - print('Table', tab.name) - node = fd.create_dataset(tab.name, data=tab.vector) - node.attrs['current'] = amps[ii] - node.attrs['delay'] = delay - node.attrs['width'] = dur - fd.close() - print('Finished saving data in file', outfile) - - -if __name__ == '__main__': - run_current_pulse(amps) - -# -# dump_f_i_curves.py ends here diff --git a/examples/traub_2005/py/fig_a2_fs.py b/examples/traub_2005/py/fig_a2_fs.py deleted file mode 100644 index 625a622..0000000 --- a/examples/traub_2005/py/fig_a2_fs.py +++ /dev/null @@ -1,126 +0,0 @@ -# fig)a2.py --- -# -# Filename: fig)a2.py -# Description: -# Author: -# Maintainer: -# Created: Thu Jun 27 12:06:52 2013 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:28:07 2016 (-0400) -# By: subha -# Update #: 30 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -""" -Reproduce the experiment for Fig A2 in Traub et al 2005. - -FS (deep basket cell) with 0.5 nA current pusle simulated for 1 s -""" -from __future__ import print_function - -import numpy as np -import pylab - -import moose -from moose import utils -from cells import DeepBasket -import config - -simtime = 200e-3 -simdt = 2e-5 -plotdt=1e-4 - -def setup_model(root='/', hsolve=True): - moose.ce(root) - model = moose.Neutral('model') - data = moose.Neutral('data') - cell = DeepBasket('%s/deepbasket' % (model.path)) - soma = moose.Compartment('%s/comp_1' % (cell.path)) - if hsolve: - solver = moose.HSolve('%s/solve' % (cell.path)) - solver.dt = simdt - solver.target = cell.path - pulse = moose.PulseGen('%s/stimulus' % (model.path)) - moose.connect(pulse, 'output', soma, 'injectMsg') - tab_vm = moose.Table('%s/spinystellate_soma_Vm' % (data.path)) - moose.connect(tab_vm, 'requestOut', soma, 'getVm') - tab_stim = moose.Table('%s/spinystellate_soma_inject' % (data.path)) - moose.connect(tab_stim, 'requestOut', pulse, 'getOutputValue') - utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - utils.assignDefaultTicks(model, data) - return {'stimulus': pulse, - 'tab_vm': tab_vm, - 'tab_stim': tab_stim} - -def do_sim(pulsegen, amp): - pulsegen.level[0] = amp - pulsegen.delay[0] = 50e-3 - pulsegen.width[0] = 100e-3 - moose.reinit() - utils.stepRun(simtime, 10000*simdt, logger=config.logger) - - -def main(): - amp = 0.4e-9 - model_dict = setup_model() - do_sim(model_dict['stimulus'], amp) - config.logger.info('##### %d' % (model_dict['tab_vm'].size)) - vm = model_dict['tab_vm'].vector * 1e3 - inject = model_dict['tab_stim'].vector.copy() - t = np.linspace(0, simtime, len(vm)) - fname = 'data_fig_a2_FS.txt' - np.savetxt(fname, - np.vstack((t, inject, vm)).transpose()) - msg = 'Saved data for %g A current pulse in %s' % (amp, fname) - config.logger.info(msg) - print(msg) - pylab.title('%g nA' % (amp*1e9)) - pylab.plot(t, vm, label='soma-Vm (mV)') - stim_boundary = np.flatnonzero(np.diff(inject)) - pylab.plot((t[stim_boundary[0]]), (vm.min()), 'r^', label='stimulus start') - pylab.plot((t[stim_boundary[-1]]), (vm.min()), 'gv', label='stimulus end') - pylab.legend() - pylab.savefig('fig_a2_fs.png') - pylab.show() - -if __name__ == '__main__': - main() - - - - -# -# fig)a2.py ends here diff --git a/examples/traub_2005/py/fig_a3.py b/examples/traub_2005/py/fig_a3.py deleted file mode 100644 index 393ecaf..0000000 --- a/examples/traub_2005/py/fig_a3.py +++ /dev/null @@ -1,123 +0,0 @@ -# fig_a3.py --- -# -# Filename: fig_a3.py -# Description: -# Author: -# Maintainer: -# Created: Wed Jun 26 17:07:59 2013 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:46:14 2016 (-0400) -# By: subha -# Update #: 161 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -"""This script is intended for reproducing figure A3 of the Traub et -al 2005 paper. This is a test for spiny stellate cell.""" - -import numpy as np -import pylab - -import moose -from moose import utils -from cells import SpinyStellate -import config - -simtime = 500e-3 -simdt = 2e-5 -plotdt=1e-4 - -def setup_model(root='/', hsolve=True): - moose.ce(root) - model = moose.Neutral('model') - data = moose.Neutral('data') - cell = SpinyStellate('%s/spinystellate' % (model.path)) - soma = moose.Compartment('%s/comp_1' % (cell.path)) - if hsolve: - solver = moose.HSolve('%s/solve' % (cell.path)) - solver.dt = simdt - solver.target = cell.path - pulse = moose.PulseGen('%s/stimulus' % (model.path)) - moose.connect(pulse, 'output', soma, 'injectMsg') - tab_vm = moose.Table('%s/spinystellate_soma_Vm' % (data.path)) - moose.connect(tab_vm, 'requestOut', soma, 'getVm') - tab_stim = moose.Table('%s/spinystellate_soma_inject' % (data.path)) - moose.connect(tab_stim, 'requestOut', pulse, 'getOutputValue') - utils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - utils.assignDefaultTicks(model, data) - return {'stimulus': pulse, - 'tab_vm': tab_vm, - 'tab_stim': tab_stim} - -def do_sim(pulsegen, amp): - pulsegen.level[0] = amp - pulsegen.delay[0] = 50e-3 - pulsegen.width[0] = 400e-3 - moose.reinit() - utils.stepRun(simtime, 10000*simdt, logger=config.logger) - - -def main(): - amps = [0.167e-9, - 0.25e-9, - 0.333e-9] - model_dict = setup_model() - for ii, a in enumerate(amps): - do_sim(model_dict['stimulus'], a) - config.logger.info('##### %d' % (model_dict['tab_vm'].size)) - vm = model_dict['tab_vm'].vector - inject = model_dict['tab_stim'].vector.copy() - t = np.linspace(0, simtime, len(vm)) - fname = 'data_fig_a3_%s.txt' % (chr(ord('A')+ii)) - np.savetxt(fname, - np.vstack((t, inject, vm)).transpose()) - msg = 'Saved data for %g A current pulse in %s' % (a, fname) - config.logger.info(msg) - print( msg) - pylab.subplot(3,1,ii+1) - pylab.title('%g nA' % (a*1e9)) - pylab.plot(t, vm, label='soma-Vm (mV)') - stim_boundary = np.flatnonzero(np.diff(inject)) - pylab.plot((t[stim_boundary[0]]), (vm.min()), 'r^', label='stimulus start') - pylab.plot((t[stim_boundary[-1]]), (vm.min()), 'gv', label='stimulus end') - pylab.legend() - pylab.savefig('fig_a3.png') - pylab.show() - -if __name__ == '__main__': - main() - -# -# fig_a3.py ends here diff --git a/examples/traub_2005/py/fig_a4c.py b/examples/traub_2005/py/fig_a4c.py deleted file mode 100644 index ae087fb..0000000 --- a/examples/traub_2005/py/fig_a4c.py +++ /dev/null @@ -1,172 +0,0 @@ -# fig_a4c.py --- -# -# Filename: fig_a4c.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jun 24 18:43:47 2013 (+0530) -# Version: -# Last-Updated: Fri Jun 28 12:12:51 2013 (+0530) -# By: subha -# Update #: 256 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -"""Experiment to reproduce figure A4C from Traub et al 2005""" - -import numpy as np -from scipy.optimize import curve_fit -import pylab - -import moose -from moose import utils -from cells import TuftedIB -import config - -simtime = 100e-3 -simdt = 2e-5 -plotdt=1e-4 - -d1 = 'comp_44' -d2 = 'comp_40' - -scale_x = 20e-3/150.0 # 150 pixels = 20 ms scalebar -scale_y = 0.5e-9 / 40 # 40 pixels = 0.5 nA scalebar - -# These are the computed parameters for the stimulus current in fig A4C -params = np.array([ -2.95506969e-01, 1.88994285e-01, -1.00969140e-02, - 2.22528805e-04, -1.82993456e-06]) - -def poly4(x, a, b, c, d, e): - return a + x * (b + x * ( c + x * (d + x * e))) - -def alpha(x, peak, tpeak): - return peak * x * np.exp(1 - x/tpeak)/tpeak - -def get_stimulus_fit(filename='a4c_stim_data.txt', scale_x=1.0, scale_y=1.0): - data = np.loadtxt(filename) - # popt, pcov = curve_fit(poly4, data[:, 0]*scale_x, data[:, 1]*scale_y) - popt, pcov = curve_fit(alpha, data[:, 0]*scale_x, data[:, 1]*scale_y) - return popt - -def get_stimulus(path, start=10e-3, end=40e-3, dt=simdt): - x = np.arange(start, end, dt) - y = alpha(x, *get_stimulus_fit()) - stim = moose.StimulusTable(path) - stim.startTime = start - stim.stopTime = end - stim.stepSize = dt - stim.vector = y - return stim - -def create_stim(stimpath, starttime, stoptime, dt, filename=None): - """if filename is specified, load stimulus data from file.""" - stim = moose.StimulusTable(stimpath) - # stim_data = np.loadtxt(filepath) - # y = stim_data[:, 1]*1e-9 - y = alpha(np.arange(0, stoptime-starttime, dt), *params) - # The paper says the soma was held at -0.2 nA, assume that means a -0.2 nA current was being injected beforehand - y = y - y.min() - # y[0] = -0.2e-9 - # y[-1] = -0.2e-9 - # The data columns are in ms and nA units respectively. - stim.vector = y - stim.startTime = starttime - # stim.stopTime = starttime + (stim_data[:,0][-1] - stim_data[:,0][0])*1e-3 - stim.stopTime = stoptime - stim.stepSize = dt - return stim - -def alpha_stimulus(stimpath, peak, peaktime, starttime, simtime, dt): - """Creates a stimulus in the alpha-function form with peak at - peaktime""" - t = np.arange(0, simtime, dt) - y = peak * t * np.exp(1 - t/peaktime) / peaktime - y1 = np.zeros(len(t)) - indices = np.flatnonzero(t>starttime) - y1[indices[0]:] = y[:len(t)-indices[0]] - # pylab.plot(t, y1) - # pylab.show() - stim = moose.StimulusTable(stimpath) - stim.vector = y1 - stim.startTime = starttime - stim.stopTime = simtime - stim.stepSize = dt - return stim - -def run_model(): - model = moose.Neutral('/model') - data = moose.Neutral('/data') - cell = TuftedIB('/model/TuftedIB') - stim = alpha_stimulus('/model/stim', 1.0e-9, 15e-3, 20e-3, simtime, simdt) - stim.startTime = 1e9 - comp_d1 = moose.element('%s/%s' % (cell.path, d1)) - comp_d2 = moose.element('%s/%s' % (cell.path, d2)) - comp_soma = moose.element('%s/%s' % (cell.path, 'comp_1')) - comp_soma.inject = -0.2e-9 - moose.connect(stim, 'output', comp_d1, 'injectMsg') - tab_d1 = moose.Table('%s/d1_Vm' % (data.path)) - tab_d2 = moose.Table('%s/d2_Vm' % (data.path)) - tab_soma = moose.Table('%s/soma_Vm' % (data.path)) - tab_stim = moose.Table('%s/stim' % (data.path)) - moose.connect(tab_d1, 'requestOut', comp_d1, 'getVm') - moose.connect(tab_d2, 'requestOut', comp_d2, 'getVm') - moose.connect(tab_soma, 'requestOut', comp_soma, 'getVm') - moose.connect(stim, 'output', tab_stim, 'input') - solver = moose.HSolve('%s/solver' % (cell.path)) - solver.dt = simdt - solver.target = cell.path - utils.setDefaultDt(elecdt=simdt,plotdt2=plotdt) - utils.assignDefaultTicks() - moose.reinit() - utils.stepRun(simtime, 1e5*simdt, logger=config.logger) - pylab.subplot(211) - pylab.plot(np.linspace(0, simtime, len(tab_d1.vector)), tab_d1.vector * 1e3, label='D1 Vm (mV)') - pylab.plot(np.linspace(0, simtime, len(tab_d2.vector)), tab_d2.vector * 1e3, label='D2 Vm (mV)') - pylab.plot(np.linspace(0, simtime, len(tab_soma.vector)), tab_soma.vector * 1e3, label='SOMA Vm (mV)') - pylab.legend() - pylab.subplot(212) - pylab.plot(np.linspace(0, simtime, len(tab_stim.vector)), tab_stim.vector * 1e9, label='Stimulus (nA)') - pylab.legend() - pylab.savefig('fig_a4c.png') - pylab.show() - -if __name__ == '__main__': - run_model() - - -# -# fig_a4c.py ends here diff --git a/examples/traub_2005/py/gui.py b/examples/traub_2005/py/gui.py deleted file mode 100644 index c77e680..0000000 --- a/examples/traub_2005/py/gui.py +++ /dev/null @@ -1,424 +0,0 @@ -# gui.py --- -# -# Filename: gui.py -# Description: -# Author: -# Maintainer: -# Created: Fri Jul 12 11:53:50 2013 (+0530) -# Version: -# Last-Updated: Thu Aug 11 17:21:24 2016 (-0400) -# By: Subhasis Ray -# Update #: 781 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -""" -Display channel properties graphically -""" -from __future__ import print_function -from datetime import datetime -from PyQt4 import QtCore, QtGui -from matplotlib import mlab -# in stead of "from matplotlib.figure import Figure" do - -# from matplotlib.pyplot import figure as Figure -# see: https://groups.google.com/forum/#!msg/networkx-discuss/lTVyrmFoURQ/SZNnTY1bSf8J -# but does not help after the first instance when displaying cell -from matplotlib.figure import Figure -from matplotlib import patches -from pylab import cm - -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar - -import networkx as nx -import numpy as np -import sys -from cells import * -from cell_test_util import setup_current_step_model -import matplotlib.gridspec as gridspec -import moose -from moose import utils as mutils - -cmap = cm.jet - -simdt = 0.025e-3 -plotdt = 1e-4 - -class HHChanView(QtGui.QWidget): - def __init__(self, *args, **kwargs): - QtGui.QWidget.__init__(self, *args, **kwargs) - self.channels = {} - self.setLayout(QtGui.QHBoxLayout()) - self.layout().addWidget(self.getControlPanel()) - self.layout().addWidget(self.plotActInact()) - - def getControlPanel(self): - try: - return self.controlPanel - except AttributeError: - self.controlPanel = QtGui.QWidget() - layout = QtGui.QVBoxLayout() - self.controlPanel.setLayout(layout) - self.rootEdit = QtGui.QLineEdit('/library') - self.rootEdit.returnPressed.connect(self.getUpdatedChannelListWidget) - self.plotButton = QtGui.QPushButton('Plot selected channels') - self.plotButton.clicked.connect(self.plotActInact) - layout.addWidget(self.getUpdatedChannelListWidget()) - layout.addWidget(self.rootEdit) - layout.addWidget(self.plotButton) - return self.controlPanel - - def getChannels(self, root='/library'): - root = moose.element(root) - for channel in moose.wildcardFind('%s/#[ISA=HHChannel]' % (root.path)): - self.channels[channel.name] = channel - return self.channels - - def getUpdatedChannelListWidget(self): - try: - self.channelListWidget.clear() - self.channels = {} - except AttributeError: - self.channelListWidget = QtGui.QListWidget(self) - self.channelListWidget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) - root = str(self.rootEdit.text()) - for chan in self.getChannels(root).values(): - self.channelListWidget.addItem(chan.name) - self.update() - return self.channelListWidget - - def getChannelListWidget(self): - try: - return self.channelListWidget - except AttributeError: - return self.getUpdatedChannelListWidget() - - def __plotGate(self, gate, mlabel='', taulabel=''): - gate = moose.element(gate) - a = np.asarray(gate.tableA) - b = np.asarray(gate.tableB) - m = a/(a+b) - tau = 1/(a+b) - v = np.linspace(gate.min, gate.max, len(m)) - self.mhaxes.plot(v, m, label='%s %s' % (gate.path, mlabel)) - self.tauaxes.plot(v, tau, label='%s %s' % (gate.path, taulabel)) - print('Plotted', gate.path, 'vmin=', gate.min, 'vmax=', gate.max, 'm[0]=', m[0], 'm[last]=', m[-1], 'tau[0]=', tau[0], 'tau[last]=', tau[-1]) - - def plotActInact(self): - """Plot the activation and inactivation variables of the selected channels""" - try: - self.figure.clear() - except AttributeError: - self.figure = Figure() - self.canvas = FigureCanvas(self.figure) - self.nav = NavigationToolbar(self.canvas, self) - self.plotWidget = QtGui.QWidget() - layout = QtGui.QVBoxLayout() - self.plotWidget.setLayout(layout) - layout.addWidget(self.canvas) - layout.addWidget(self.nav) - self.mhaxes = self.figure.add_subplot(2, 1, 1) - self.mhaxes.set_title('Activation/Inactivation') - self.tauaxes = self.figure.add_subplot(2, 1, 2) - self.tauaxes.set_title('Tau') - for item in self.getChannelListWidget().selectedItems(): - chan = self.channels[str(item.text())] - if chan.Xpower > 0: - path = '{}/gateX'.format(chan.path) - self.__plotGate(path) - if chan.Ypower > 0: - path = '{}/gateY'.format(chan.path) - self.__plotGate(path) - # if chan.Zpower > 0: - # self.__plotGate(chan.gateZ.path, mlabel='z', taulabel='tau-z') - self.mhaxes.legend() - self.tauaxes.legend() - self.canvas.draw() - return self.plotWidget - - -from display_morphology import * - -class NetworkXWidget(QtGui.QWidget): - def __init__(self, *args, **kwargs): - QtGui.QWidget.__init__(self, *args, **kwargs) - layout = QtGui.QVBoxLayout() - self.setLayout(layout) - self.figure = Figure() - self.canvas = FigureCanvas(self.figure) - self.nav = NavigationToolbar(self.canvas, self) - layout.addWidget(self.canvas) - layout.addWidget(self.nav) - self.axes = self.figure.add_subplot(1, 1, 1) - self.axes.set_frame_on(False) - self.axes.get_xaxis().set_visible(False) - self.axes.get_yaxis().set_visible(False) - - # TODO: bypass networkx draw as it uses pylab directly. - def displayGraph(self, g, label=False): - axon, sd = axon_dendrites(g) - sizes = node_sizes(g) * 50 - if len(sizes) == 0: - print('Empty graph for cell. Make sure proto file has `*asymmetric` on top. I cannot handle symmetric compartmental connections') - return - node_colors = ['k' if x in axon else 'gray' for x in g.nodes()] - lw = [1 if n.endswith('comp_1') else 0 for n in g.nodes()] - self.axes.clear() - try: - nx.draw_graphviz(g, ax=self.axes, prog='twopi', node_color=node_colors, lw=lw) - except (NameError, AttributeError) as e: - nx.draw_spectral(g, ax=self.axes, node_color=node_colors, lw=lw, with_labels=False, ) - - -class CellView(QtGui.QWidget): - def __init__(self, *args, **kwargs): - QtGui.QWidget.__init__(self, *args, **kwargs) - self.cells = {} - layout = QtGui.QGridLayout() - self.setLayout(layout) - layout.addWidget(self.getControlPanel(), 0, 0, 2, 1) - layout.addWidget(self.getCellMorphologyWidget(), 0, 1, 1, 1) - layout.addWidget(self.getPlotWidget(), 1, 1, 1, 1) - - def getControlPanel(self): - try: - return self.controlPanel - except AttributeError: - self.controlPanel = QtGui.QWidget() - layout = QtGui.QGridLayout() - self.controlPanel.setLayout(layout) - self.simtimeLabel = QtGui.QLabel('Simulate for (ms)') - self.simtimeEdit = QtGui.QLineEdit('100') - self.plotButton = QtGui.QPushButton('Simulate selected cell model') - self.plotButton.clicked.connect(self.simulateSelected) - layout.addWidget(self.getCellListWidget(), 0, 0, 1, 2) - layout.addWidget(self.getCurrentClampWidget(), 1, 0, 1, 2) - layout.addWidget(self.simtimeLabel, 2, 0, 1, 1) - layout.addWidget(self.simtimeEdit, 2, 1, 1, 1) - layout.addWidget(self.plotButton, 3, 0, 1, 1) - return self.controlPanel - - def getCells(self, root='/library'): - if isinstance(root, str): - root = moose.element(root) - cells = [] - for cell in moose.wildcardFind('%s/#[ISA=Neuron]' % (root.path)): - cells.append(cell.name) - return cells - - def getUpdatedCellListWidget(self): - try: - self.cellListWidget.clear() - self.cells = {} - except AttributeError: - self.cellListWidget = QtGui.QListWidget(self) - self.cellListWidget.itemSelectionChanged.connect(self.displaySelected) - # self.cellListWidget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) - # root = str(self.rootEdit.text()) - for cell in self.getCells(): - self.cellListWidget.addItem(cell) - self.cellListWidget.setCurrentItem(self.cellListWidget.item(0)) - self.update() - return self.cellListWidget - - def getCellListWidget(self): - try: - return self.cellListWidget - except AttributeError: - return self.getUpdatedCellListWidget() - - def getCurrentClampWidget(self): - try: - return self.currentClampWidget - except AttributeError: - self.currentClampWidget = QtGui.QWidget() - self.delayLabel = QtGui.QLabel('Delay (ms)') - self.delayText = QtGui.QLineEdit('20') - self.widthLabel = QtGui.QLabel('Duration (ms)') - self.widthText = QtGui.QLineEdit('50') - self.ampMinLabel = QtGui.QLabel('Starting amplitude (pA)') - self.ampMinText = QtGui.QLineEdit('0') - self.ampMaxLabel = QtGui.QLabel('Maximum amplitude (pA)') - self.ampMaxText = QtGui.QLineEdit('100') - self.ampStepLabel = QtGui.QLabel('Amplitude steps (pA)') - self.ampStepText = QtGui.QLineEdit('10') - title = QtGui.QLabel('Current pulse') - layout = QtGui.QGridLayout() - layout.addWidget(title, 0, 0, 1, 2) - layout.addWidget(self.delayLabel, 1, 0, 1, 1) - layout.addWidget(self.delayText, 1, 1, 1, 1) - layout.addWidget(self.widthLabel, 2, 0, 1, 1) - layout.addWidget(self.widthText, 2, 1, 1, 1) - layout.addWidget(self.ampMinLabel, 3, 0, 1, 1) - layout.addWidget(self.ampMinText, 3, 1, 1, 1) - layout.addWidget(self.ampMaxLabel, 4, 0, 1, 1) - layout.addWidget(self.ampMaxText, 4, 1, 1, 1) - layout.addWidget(self.ampStepLabel, 5, 0, 1, 1) - layout.addWidget(self.ampStepText, 5, 1, 1, 1) - self.currentClampWidget.setLayout(layout) - return self.currentClampWidget - - def getCellMorphologyWidget(self): - try: - return self.cellMorphologyWidget - except AttributeError: - self.cellMorphologyWidget = NetworkXWidget() - return self.cellMorphologyWidget - - def displayCellMorphology(self, cellpath): - cell = moose.element(cellpath) - graph = cell_to_graph(cell) - self.getCellMorphologyWidget().displayGraph(graph) - - def createCell(self, name): - model_container = moose.Neutral('/model') - data_container = moose.Neutral('/data') - # moose.le(model_container) - # moose.le(data_container) - for ch in model_container.children: - moose.delete(ch) - for ch in data_container.children: - moose.delete(ch) - params = setup_current_step_model(model_container, - data_container, - name, - [[0, 0, 0], - [1e9, 0, 0]]) - # moose.le(model_container) - # moose.le(data_container) - params['modelRoot'] = model_container.path - params['dataRoot'] = data_container.path - return params - - def displaySelected(self): - cellnames = [str(c.text()) for c in self.cellListWidget.selectedItems()] - assert(len(cellnames) == 1) - name = cellnames[0] - # params = self.createCell(name) - # cell = params['cell'] - protopath = '/library/%s' % (name) - self.displayCellMorphology(protopath) - - def simulateSelected(self): - cellnames = [str(c.text()) for c in self.cellListWidget.selectedItems()] - assert(len(cellnames) == 1) - name = cellnames[0] - params = self.createCell(name) - # hsolve = moose.HSolve('%s/solver' % (params['cell'].path)) - # hsolve.dt = simdt - # hsolve.target = params['cell'].path - mutils.setDefaultDt(elecdt=simdt, plotdt2=plotdt) - mutils.assignDefaultTicks(modelRoot=params['modelRoot'], - dataRoot=params['dataRoot'], - solver='hsolve') - delay = float(str(self.delayText.text())) * 1e-3 - width = float(str(self.widthText.text())) * 1e-3 - levelMin = float(str(self.ampMinText.text())) * 1e-12 - levelMax = float(str(self.ampMaxText.text())) * 1e-12 - levelStep = float(str(self.ampStepText.text())) * 1e-12 - params['stimulus'].delay[0] = delay - params['stimulus'].width[0] = width - params['stimulus'].level[0] = levelMin - simtime = float(str(self.simtimeEdit.text()))*1e-3 - tdlist = [] - self.vmAxes.clear() - self.vmAxes.set_title('membrane potential at soma') - self.vmAxes.set_ylabel('mV') - self.vmAxes.get_xaxis().set_visible(False) - self.stimAxes.clear() - self.stimAxes.set_title('current injected at soma') - self.stimAxes.set_ylabel('pA') - self.stimAxes.set_xlabel('ms') - styles = ['-', '--', '-.', ':'] - cnt = int((levelMax - levelMin)/levelStep) - ii = 0 - while params['stimulus'].level[0] < levelMax: - tstart = datetime.now() - moose.reinit() - moose.start(simtime) - tend = datetime.now() - td = tend - tstart - tdlist.append(td.days * 86400 + td.seconds + td.microseconds * 1e-6) - ts = np.linspace(0, simtime, len(params['somaVm'].vector)) - vm = params['somaVm'].vector - stim = params['injectionCurrent'].vector - alpha = 0.1 + 0.9 * params['stimulus'].level[0] / levelMax - color = cmap(ii*1.0/cnt, cnt) - self.vmAxes.plot(ts * 1e3, vm * 1e3, color=color, label='%g pA' % (params['stimulus'].level[0]*1e12), alpha=0.8) - self.stimAxes.plot(ts * 1e3, stim * 1e12, color=color, label='Current (pA)') - self.plotCanvas.draw() - params['stimulus'].level[0] += levelStep - ii += 1 - self.gs.tight_layout(self.plotFigure) - self.vmAxes.legend() - self.plotCanvas.draw() - td = np.mean(tdlist) - print('Simulating %g s took %g s of computer time' % (simtime, td)) - # self.plotFigure.tight_layout() - - def getPlotWidget(self): - try: - return self.plotWidget - except AttributeError: - self.plotWidget = QtGui.QWidget() - layout = QtGui.QVBoxLayout() - self.plotFigure = Figure() - self.plotCanvas = FigureCanvas(self.plotFigure) - self.nav = NavigationToolbar(self.plotCanvas, self) - self.gs = gridspec.GridSpec(3, 1) - self.vmAxes = self.plotFigure.add_subplot(self.gs[:-1]) - self.vmAxes.set_frame_on(False) - self.stimAxes = self.plotFigure.add_subplot(self.gs[-1], sharex=self.vmAxes) - self.stimAxes.set_frame_on(False) - self.gs.tight_layout(self.plotFigure) - layout.addWidget(self.plotCanvas) - layout.addWidget(self.nav) - self.plotWidget.setLayout(layout) - return self.plotWidget - - - -if __name__ == '__main__': - app = QtGui.QApplication([]) - win1 = HHChanView() - win = CellView() - win1.show() - win.show() - sys.exit(app.exec_()) - - -# -# gui.py ends here diff --git a/examples/traub_2005/py/kchans.py b/examples/traub_2005/py/kchans.py deleted file mode 100644 index 69f6386..0000000 --- a/examples/traub_2005/py/kchans.py +++ /dev/null @@ -1,255 +0,0 @@ -# kchans.py --- -# -# Filename: kchans.py -# Description: -# Author: subhasis ray -# Maintainer: -# Created: Fri Apr 17 23:58:49 2009 (+0530) -# Version: -# Last-Updated: Wed Dec 9 12:29:24 2015 (-0500) -# By: Subhasis Ray -# Update #: 1062 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# - -# Code: - -import moose -from channelbase import * -from numpy import where, linspace, exp, arange, ones, zeros, array -import numpy as np - - -class KChannel(ChannelBase): - """This is a dummy base class to keep type information.""" - annotation = {'cno': 'cno_0000047'} - abstract = True - Ek = -95e-3 - X = 0.0 - def __init__(self, path): - ChannelBase.__init__(self, path) - - -class KDR(KChannel): - """Delayed rectifier current - - `In hippocampal pyramidal neurons, however, it has been reported - have relatively slow activation, with a time to peak of some - 50-100 msec and even slower inactivation. Such a slow activation - would make it ill suited to participate in the repolarization of - the AP.... An equation that can describe IK(DR) in cortical - neurons is - - IK(DR) = m^3 * h * gbar_K(DR) * (Vm - EK) - - where m and h depend on voltage and time.` - - Johnston & Wu, Foundations of Cellular Neurophysiology (1995). - - But in Traub 2005, the equation used is: - - IK(DR) = m^4 * gbar_K(DR) * (Vm - EK) - """ - annotation = {'cno': 'cno_0000105'} - abstract = False - - Xpower = 4 - tau_x = where(v_array < -10e-3, \ - 1e-3 * (0.25 + 4.35 * exp((v_array + 10.0e-3) / 10.0e-3)), \ - 1e-3 * (0.25 + 4.35 * exp((- v_array - 10.0e-3) / 10.0e-3))) - inf_x = 1.0 / (1.0 + exp((- v_array - 29.5e-3) / 10e-3)) - - def __init__(self, path): - KChannel.__init__(self, path) - - -class KDR_FS(KDR): - """KDR for fast spiking neurons""" - annotation = {'cno': 'cno_0000105'} - abstract = False - - Ek = -100e-3 - inf_x = 1.0 / (1.0 + exp((- v_array - 27e-3) / 11.5e-3)) - tau_x = where(v_array < -10e-3, \ - 1e-3 * (0.25 + 4.35 * exp((v_array + 10.0e-3) / 10.0e-3)), \ - 1e-3 * (0.25 + 4.35 * exp((- v_array - 10.0e-3) / 10.0e-3))) - - def __init__(self, path): - KChannel.__init__(self, path) - - -class KA(KChannel): - """A type K+ channel""" - annotation = {'cno': 'cno_0000105'} - abstract = False - - Xpower = 4 - Ypower = 1 - inf_x = 1 / ( 1 + exp( ( - v_array - 60e-3 ) / 8.5e-3 ) ) - tau_x = 1e-3 * (0.185 + 0.5 / ( exp( ( v_array + 35.8e-3 ) / 19.7e-3 ) + exp( ( - v_array - 79.7e-3 ) / 12.7e-3 ) )) - inf_y = 1 / ( 1 + exp( ( v_array + 78e-3 ) / 6e-3 ) ) - tau_y = where( v_array <= -63e-3,\ - 1e-3 * 0.5 / ( exp( ( v_array + 46e-3 ) / 5e-3 ) + exp( ( - v_array - 238e-3 ) / 37.5e-3 ) ), \ - 9.5e-3) - - def __init__(self, path): - KChannel.__init__(self, path) - - -class KA_IB(KA): - """A type K+ channel for tufted intrinsically bursting cells - - multiplies tau_h of KA by 2.6""" - - annotation = {'cno': 'cno_0000105'} - abstract = False - - inf_y = 1 / ( 1 + exp( ( v_array + 78e-3 ) / 6e-3 ) ) - tau_y = 2.6 * KA.tau_y - - def __init__(self, path): - KChannel.__init__(self, path) - - -class K2(KChannel): - annotation = {'cno': 'cno_0000105'} - Xpower = 1 - Ypower = 1 - inf_x = 1 / ( 1 + exp( ( - v_array *1e3 - 10 ) / 17 ) ) - tau_x = 1e-3 * (4.95 + 0.5 / ( exp( ( v_array * 1e3 - 81 ) / 25.6 ) + exp( ( - v_array * 1e3 - 132 ) / 18 ) )) - inf_y = 1 / ( 1 + exp( ( v_array*1e3 + 58 ) / 10.6 ) ) - tau_y = 1e-3 * (60 + 0.5 / ( exp( ( v_array*1e3 - 1.33 ) / 200 ) + exp( ( - v_array*1e3 - 130 ) / 7.1 ) )) - - def __init__(self, path): - KChannel.__init__(self, path) - - -class KM(KChannel): - """Mascarinic sensitive K channel""" - annotation = {'cno': 'cno_0000105'} - abstract = False - Xpower = 1 - alpha_x = 1e3 * 0.02 / ( 1 + exp((-v_array - 20e-3 ) / 5e-3)) - beta_x = 1e3 * 0.01 * exp((-v_array - 43e-3) / 18e-3) - - def __init__(self, path): - KChannel.__init__(self, path) - - -class KCaChannel(KChannel): - """[Ca+2] dependent K+ channel base class.""" - annotation = {'cno': 'cno_0000047'} - abstract = True - Zpower = 1 - mstring = ('addmsg1', '../CaPool concOut . concen') - def __init__(self, path): - KChannel.__init__(self, path) - - -class KAHPBase(KCaChannel): - annotation = {'cno': 'cno_0000108'} - abstract = True - Z = 0.0 - - def __init__(self, path): - KCaChannel.__init__(self, path) - - -class KAHP(KAHPBase): - """AHP type K+ current""" - annotation = {'cno': 'cno_0000108'} - abstract = False - alpha_z = where(ca_conc < 100.0, 0.1 * ca_conc, 10.0) - beta_z = ones(ca_divs + 1) * 10.0 - - def __init__(self, path): - KAHPBase.__init__(self, path) - - -class KAHP_SLOWER(KAHPBase): - annotation = {'cno': 'cno_0000108'} - abstract = False - alpha_z = where(ca_conc < 500.0, 1e3 * ca_conc / 50000, 10.0) - beta_z = ones(ca_divs + 1) * 1.0 - - def __init__(self, path): - KAHPBase.__init__(self, path) - - -class KAHP_DP(KAHPBase): - """KAHP for deep pyramidal cell""" - annotation = {'cno': 'cno_0000108'} - abstract = False - alpha_z = where(ca_conc < 100.0, 1e-1 * ca_conc, 10.0) - beta_z = ones(ca_divs + 1) - - def __init__(self, path): - KAHPBase.__init__(self, path) - - -class KC(KCaChannel): - """C type K+ channel - """ - annotation = {'cno': 'cno_0000106'} - abstract = False - - Xpower = 1 - Zpower = 1 - tableA_z = where(ca_conc < 250.0, ca_conc / 250.0, 1.0) - tableB_z = ones(ca_divs + 1) - alpha_x = where(v_array < -10e-3, - 2e3 / 37.95 * ( exp( ( v_array * 1e3 + 50 ) / 11 - ( v_array * 1e3 + 53.5 ) / 27 ) ), - 2e3 * exp(( - v_array * 1e3 - 53.5) / 27)) - beta_x = where(v_array < -10e-3, - 2e3 * exp(( - v_array * 1e3 - 53.5) / 27 - alpha_x), - 0.0) - instant = 4 - - def __init__(self, path): - KCaChannel.__init__(self, path) - - -class KC_FAST(KC): - """Fast KC channel - """ - annotation = {'cno': 'cno_0000106'} - abstract = False - - alpha_x = KC.alpha_x * 2 - beta_x = KC.beta_x * 2 - - def __init__(self, path): - KC.__init__(self, path) - - -def initKChannelPrototypes(libpath='/library'): - channel_names = ['KDR', - 'KDR_FS', - 'KA', - 'KA_IB', - 'K2', - 'KM', - 'KAHP', - 'KAHP_SLOWER', - 'KAHP_DP', - 'KC', - 'KC_FAST'] - return dict([(key, eval('%s("%s")' % (key, prototypes[key].path))) for key in channel_names]) - - -# -# kchans.py ends here diff --git a/examples/traub_2005/py/nachans.py b/examples/traub_2005/py/nachans.py deleted file mode 100644 index 3eb8a58..0000000 --- a/examples/traub_2005/py/nachans.py +++ /dev/null @@ -1,187 +0,0 @@ -# nachans.py --- -# -# Filename: nachans.py -# Description: -# Author: subhasis ray -# Maintainer: -# Created: Fri Apr 17 23:58:13 2009 (+0530) -# Version: -# Last-Updated: Sat Dec 8 15:51:51 2012 (+0530) -# By: subha -# Update #: 402 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -from numpy import where, linspace, exp -#import pylab -import moose - -import config -from channelbase import * - -class NaChannel(ChannelBase): - """Dummy base class for all Na+ channels""" - annotation = {'cno': 'cno:cno_0000105'} - abstract = True - Ek = 50e-3 - def __init__(self, path): - ChannelBase.__init__(self, path) - - -class NaF(NaChannel): - """Fast Na channel. - """ - abstract = False - Xpower = 3 - Ypower = 1 - X = 0.0 - # Y = 0.54876953 - shift = -3.5e-3 - tau_x = where((v_array + shift) < -30e-3, \ - 1.0e-3 * (0.025 + 0.14 * exp((v_array + shift + 30.0e-3) / 10.0e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp(( - v_array - shift - 30.0e-3) / 10.0e-3))) - inf_x = 1.0 / (1.0 + exp(( - v_array - shift - 38e-3) / 10e-3)) - tau_y = 1.0e-3 * (0.15 + 1.15 / ( 1.0 + exp(( v_array + 37.0e-3) / 15.0e-3))) - inf_y = 1.0 / (1.0 + exp((v_array + 62.9e-3) / 10.7e-3)) - - def __init__(self, path, shift=-3.5e-3, Ek=50e-3): - NaChannel.__init__(self, path ) - - -class NaF_TCR(NaF): - """Fast Na+ channel for TCR cells. This is almost identical to - NaF, but there is a nasty voltage shift in the tables.""" - abstract = False - shift_x = -5.5e-3 - shift_y = -7e-3 - tau_y = 1.0e-3 * (0.15 + 1.15 / ( 1.0 + exp(( v_array + 37.0e-3) / 15.0e-3))) - inf_y = 1.0 / (1.0 + exp((v_array + shift_y + 62.9e-3) / 10.7e-3)) - tau_x = where((v_array + shift_x) < -30e-3, \ - 1.0e-3 * (0.025 + 0.14 * exp((v_array + shift_x + 30.0e-3) / 10.0e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp(( - v_array - shift_x - 30.0e-3) / 10.0e-3))) - inf_x = 1.0 / (1.0 + exp(( - v_array - shift_x - 38e-3) / 10e-3)) - - def __init__(self, path): - NaChannel.__init__(self, path) - - -class NaF2(NaF): - abstract = False - # shift=-2.5 for all cortical interneurons including spiny stellates - # In neuron cell templates fastNa_shift_naf2=-2.5 - shift = -2.5e-3 - tau_x = where((v_array + shift) < -30e-3, \ - 1.0e-3 * (0.0125 + 0.1525 * exp ((v_array + shift + 30e-3) / 10e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp((- v_array - shift - 30e-3) / 10e-3))) - inf_x = 1.0 / (1.0 + exp(( - v_array - shift - 38e-3) / 10e-3)) - tau_y = 1e-3 * (0.225 + 1.125 / ( 1 + exp( ( v_array + 37e-3 ) / 15e-3 ) )) - inf_y = 1.0 / (1.0 + exp((v_array + 58.3e-3) / 6.7e-3)) - - def __init__(self, path): - NaChannel.__init__(self, path) - -class NaF2_nRT(NaF2): - """This is a version of NaF2 without the fastNa_shift - applicable to nRT cell.""" - # for nRT cells, fastNa_shift_naf2 is not set in the cell - # template. In naf2.mod it is set to 0 in PARAMETERS section. - abstract = False - tau_x = where(v_array < -30e-3, \ - 1.0e-3 * (0.0125 + 0.1525 * exp ((v_array + 30e-3) / 10e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp((-v_array - 30e-3) / 10e-3))) - inf_x = 1.0 / (1.0 + exp(( - v_array - 38e-3) / 10e-3)) - tau_y = 1e-3 * (0.225 + 1.125 / ( 1 + exp( ( v_array + 37e-3 ) / 15e-3 ) )) - inf_y = 1.0 / (1.0 + exp((v_array + 58.3e-3) / 6.7e-3)) - def __init__(self, path): - NaF2.__init__(self, path) - - -class NaP(NaChannel): - abstract = False - Xpower = 1.0 - Ypower = 0.0 - tau_x = where(v_array < -40e-3, \ - 1.0e-3 * (0.025 + 0.14 * exp((v_array + 40e-3) / 10e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp((-v_array - 40e-3) / 10e-3))) - inf_x = 1.0 / (1.0 + exp((-v_array - 48e-3) / 10e-3)) - - def __init__(self, path, Ek=50e-3): - NaChannel.__init__(self, path) - - -class NaPF(NaChannel): - """Persistent Na+ current, fast""" - abstract = False - Xpower = 3 - tau_x = where(v_array < -30e-3, \ - 1.0e-3 * (0.025 + 0.14 * exp((v_array + 30.0e-3) / 10.0e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp((- v_array - 30.0e-3) / 10.0e-3))) - inf_x = 1.0 / (1.0 + exp((-v_array - 38e-3) / 10e-3)) - - def __init__(self, path): - NaChannel.__init__(self, path) - - -class NaPF_SS(NaPF): - abstract = False - shift = -2.5e-3 - v = v_array + shift - tau_x = where((v_array + shift) < -30e-3, \ - 1.0e-3 * (0.025 + 0.14 * exp(((v_array + shift) + 30.0e-3) / 10.0e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp((- (v_array + shift) - 30.0e-3) / 10.0e-3))) - inf_x = 1.0 / (1.0 + exp((- (v_array + shift) - 38e-3) / 10e-3)) - - def __init__(self, path): - NaChannel.__init__(self, path) - - -class NaPF_TCR(NaPF): - """Persistent Na+ channel specific to TCR cells. Only difference - with NaPF is power of m is 1 as opposed 3.""" - abstract = False - shift = 7e-3 - Xpower = 1 - tau_x = where((v_array + shift) < -30e-3, \ - 1.0e-3 * (0.025 + 0.14 * exp(((v_array + shift) + 30.0e-3) / 10.0e-3)), \ - 1.0e-3 * (0.02 + 0.145 * exp((- (v_array + shift) - 30.0e-3) / 10.0e-3))) - inf_x = 1.0 / (1.0 + exp((-(v_array + shift) - 38e-3) / 10e-3)) - def __init__(self, path): - NaChannel.__init__(self, path) - - -def initNaChannelPrototypes(): - channel_names = [ - 'NaF', - 'NaF2', - 'NaF2_nRT', - 'NaP', - 'NaPF', - 'NaPF_SS', - 'NaPF_TCR', - 'NaF_TCR', - ] - _proto = {} - for name in channel_names: - chanclass = eval(name) - _proto[name] = chanclass(prototypes[name]) - return _proto - - -# -# nachans.py ends here diff --git a/examples/traub_2005/py/proto/DeepAxoaxonic.levels b/examples/traub_2005/py/proto/DeepAxoaxonic.levels deleted file mode 100644 index 7b54de6..0000000 --- a/examples/traub_2005/py/proto/DeepAxoaxonic.levels +++ /dev/null @@ -1,60 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 - diff --git a/examples/traub_2005/py/proto/DeepAxoaxonic.p b/examples/traub_2005/py/proto/DeepAxoaxonic.p deleted file mode 100644 index 14ec9ed..0000000 --- a/examples/traub_2005/py/proto/DeepAxoaxonic.p +++ /dev/null @@ -1,319 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to deepaxax cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.065 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/DeepBasket.levels b/examples/traub_2005/py/proto/DeepBasket.levels deleted file mode 100644 index 7b54de6..0000000 --- a/examples/traub_2005/py/proto/DeepBasket.levels +++ /dev/null @@ -1,60 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 - diff --git a/examples/traub_2005/py/proto/DeepBasket.p b/examples/traub_2005/py/proto/DeepBasket.p deleted file mode 100644 index 6c2327f..0000000 --- a/examples/traub_2005/py/proto/DeepBasket.p +++ /dev/null @@ -1,319 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to deepbask cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.065 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/DeepLTS.levels b/examples/traub_2005/py/proto/DeepLTS.levels deleted file mode 100644 index 7b54de6..0000000 --- a/examples/traub_2005/py/proto/DeepLTS.levels +++ /dev/null @@ -1,60 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 - diff --git a/examples/traub_2005/py/proto/DeepLTS.p b/examples/traub_2005/py/proto/DeepLTS.p deleted file mode 100644 index 25291e7..0000000 --- a/examples/traub_2005/py/proto/DeepLTS.p +++ /dev/null @@ -1,319 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.065 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 diff --git a/examples/traub_2005/py/proto/NontuftedRS.depths b/examples/traub_2005/py/proto/NontuftedRS.depths deleted file mode 100644 index 5f10eb1..0000000 --- a/examples/traub_2005/py/proto/NontuftedRS.depths +++ /dev/null @@ -1,14 +0,0 @@ -1 2200e-6 -2 2245e-6 -3 2290e-6 -4 2335e-6 -5 2175e-6 -6 2125e-6 -7 2075e-6 -8 2025e-6 -9 1975e-6 -10 1925e-6 -11 1875e-6 -12 1825e-6 -13 1775e-6 -14 1725e-6 diff --git a/examples/traub_2005/py/proto/NontuftedRS.levels b/examples/traub_2005/py/proto/NontuftedRS.levels deleted file mode 100644 index 2ac4490..0000000 --- a/examples/traub_2005/py/proto/NontuftedRS.levels +++ /dev/null @@ -1,52 +0,0 @@ -1 1 -2 2 -3 2 -4 2 -5 2 -6 2 -7 2 -8 2 -9 2 -10 2 -11 2 -12 2 -13 3 -14 3 -15 3 -16 3 -17 3 -18 3 -19 3 -20 3 -21 3 -22 3 -23 3 -24 4 -25 4 -26 4 -27 4 -28 4 -29 4 -30 4 -31 4 -32 4 -33 4 -34 4 -35 5 -36 6 -37 7 -38 8 -39 9 -40 10 -41 11 -42 12 -43 13 -44 14 -45 0 -46 0 -47 0 -48 0 -49 0 -50 0 - - diff --git a/examples/traub_2005/py/proto/NontuftedRS.p b/examples/traub_2005/py/proto/NontuftedRS.p deleted file mode 100644 index 5e228c1..0000000 --- a/examples/traub_2005/py/proto/NontuftedRS.p +++ /dev/null @@ -1,274 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to nontuftRS cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.07 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 5 -*set_compt_param CM 0.009 -*set_compt_param RA 2.5 -comp_1 none 20 0 0 16 AR 2.5 CaPool -1.29313e+15 CaL 2 CaT 1 K2 1 KA 1190 KAHP_DP 2 KC 150 KDR 1700 KM 42 NaF 2000 NaP 0.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_45 comp_1 25 0 0 1.8 K2 1 KA 40 KDR 4500 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_35 comp_1 50 0 0 3 AR 5 CaPool -1.37934e+16 CaL 4 CaT 2 K2 2 KA 2380 KAHP_DP 4 KC 300 KDR 2400 KM 84 NaF 3000 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_6 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_5 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_4 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_3 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_2 comp_1 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_46 comp_45 50 0 0 1.4 K2 1 KA 40 KDR 4500 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_36 comp_35 50 0 0 2.8 AR 5 CaPool -1.47787e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_12 comp_35 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_7 comp_35 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_17 comp_6 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_16 comp_5 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_15 comp_4 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_14 comp_3 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_13 comp_2 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_49 comp_46 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_47 comp_46 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_11 comp_36 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_8 comp_36 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_37 comp_36 50 0 0 2.6 AR 5 CaPool -1.59155e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_23 comp_12 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_18 comp_7 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_28 comp_17 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_27 comp_16 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_26 comp_15 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_25 comp_14 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_24 comp_13 60 0 0 1.7 AR 5 CaPool -2.02845e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_50 comp_49 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_48 comp_47 50 0 0 1 K2 1 KA 40 KDR 4500 NaF 4500 spike 0.0 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_22 comp_11 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_19 comp_8 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_10 comp_37 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_9 comp_37 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KC 300 KDR 1500 KM 84 NaF 1500 NaP 0.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_38 comp_37 50 0 0 2.4 AR 5 CaPool -1.72418e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_34 comp_23 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_29 comp_18 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_33 comp_22 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_30 comp_19 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_21 comp_10 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_20 comp_9 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_39 comp_38 50 0 0 2.2 AR 5 CaPool -1.88092e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_32 comp_21 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_31 comp_20 60 0 0 1.24 AR 5 CaPool -2.78093e+16 CaL 4 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_40 comp_39 50 0 0 2 AR 5 CaPool -2.06901e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_41 comp_40 50 0 0 1.8 AR 5 CaPool -2.2989e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_42 comp_41 50 0 0 1.6 AR 5 CaPool -2.58627e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_43 comp_42 50 0 0 1.4 AR 5 CaPool -2.95573e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_44 comp_43 50 0 0 1.2 AR 5 CaPool -3.44836e+16 CaL 40 CaT 2 K2 2 KA 272 KAHP_DP 4 KM 84 NaF 100 NaP 0.04 diff --git a/examples/traub_2005/py/proto/SpinyStellate.levels b/examples/traub_2005/py/proto/SpinyStellate.levels deleted file mode 100644 index 1aec85f..0000000 --- a/examples/traub_2005/py/proto/SpinyStellate.levels +++ /dev/null @@ -1,59 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 diff --git a/examples/traub_2005/py/proto/SpinyStellate.p b/examples/traub_2005/py/proto/SpinyStellate.p deleted file mode 100644 index 8eaf08b..0000000 --- a/examples/traub_2005/py/proto/SpinyStellate.p +++ /dev/null @@ -1,319 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.065 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 5 -*set_compt_param CM 0.009 -*set_compt_param RA 2.5 -comp_1 none 20 0 0 15 AR 2.5 CaPool -2.75869e+16 CaL 5 CaT_A 1 K2 1 KA 300 KAHP_SLOWER 1 KC_FAST 100 KDR_FS 1000 KM 37.5 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 K2 1 KA 20 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_41 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_28 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_15 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_2 comp_1 40 0 0 2.12 AR 5 CaPool -9.7595e+16 CaL 10 CaT_A 2 K2 2 KA 600 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 K2 1 KA 20 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_43 comp_41 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_42 comp_41 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_30 comp_28 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_29 comp_28 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_17 comp_15 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_16 comp_15 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_4 comp_2 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_3 comp_2 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KDR_FS 1500 KM 75 NaF2 1500 NaPF_SS 1.5 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_46 comp_43 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_45 comp_42 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_44 comp_42 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_33 comp_30 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_32 comp_29 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_31 comp_29 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_20 comp_17 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_19 comp_16 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_18 comp_16 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_7 comp_4 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_6 comp_3 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_5 comp_3 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KC_FAST 200 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 K2 1 KA 20 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_49 comp_46 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_48 comp_45 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_47 comp_44 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_36 comp_33 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_35 comp_32 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_34 comp_31 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_23 comp_20 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_22 comp_19 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_21 comp_18 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_10 comp_7 40 0 0 1.33333 AR 5 CaPool -1.55176e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_9 comp_6 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_8 comp_5 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_50 comp_47 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_37 comp_34 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_24 comp_21 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_11 comp_8 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 10 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_51 comp_50 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_38 comp_37 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_25 comp_24 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_12 comp_11 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_52 comp_51 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_39 comp_38 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_26 comp_25 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_13 comp_12 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_53 comp_52 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_40 comp_39 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_27 comp_26 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_14 comp_13 40 0 0 0.837945 AR 5 CaPool -2.46915e+17 CaL 60 CaT_A 2 K2 2 KA 40 KAHP_SLOWER 2 KM 75 NaF2 100 NaPF_SS 0.1 diff --git a/examples/traub_2005/py/proto/SupAxoaxonic.levels b/examples/traub_2005/py/proto/SupAxoaxonic.levels deleted file mode 100644 index a6f29ca..0000000 --- a/examples/traub_2005/py/proto/SupAxoaxonic.levels +++ /dev/null @@ -1,59 +0,0 @@ - 1 1 - 2 2 - 3 3 - 4 3 - 5 4 - 6 4 - 7 4 - 8 5 - 9 5 - 10 5 - 11 6 - 12 7 - 13 8 - 14 9 - 15 2 - 16 3 - 17 3 - 18 4 - 19 4 - 20 4 - 21 5 - 22 5 - 23 5 - 24 6 - 25 7 - 26 8 - 27 9 - 28 2 - 29 3 - 30 3 - 31 4 - 32 4 - 33 4 - 34 5 - 35 5 - 36 5 - 37 6 - 38 7 - 39 8 - 40 9 - 41 2 - 42 3 - 43 3 - 44 4 - 45 4 - 46 4 - 47 5 - 48 5 - 49 5 - 50 6 - 51 7 - 52 8 - 53 9 - 54 0 - 55 0 - 56 0 - 57 0 - 58 0 - 59 0 diff --git a/examples/traub_2005/py/proto/SupAxoaxonic.p b/examples/traub_2005/py/proto/SupAxoaxonic.p deleted file mode 100644 index d86f0b4..0000000 --- a/examples/traub_2005/py/proto/SupAxoaxonic.p +++ /dev/null @@ -1,303 +0,0 @@ -*relative - -*cartesian - -*asymmetric - -*set_global EREST_ACT -0.065 - -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/SupBasket.levels b/examples/traub_2005/py/proto/SupBasket.levels deleted file mode 100644 index 7b54de6..0000000 --- a/examples/traub_2005/py/proto/SupBasket.levels +++ /dev/null @@ -1,60 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 - diff --git a/examples/traub_2005/py/proto/SupBasket.p b/examples/traub_2005/py/proto/SupBasket.p deleted file mode 100644 index a8c1097..0000000 --- a/examples/traub_2005/py/proto/SupBasket.p +++ /dev/null @@ -1,301 +0,0 @@ -*relative - -*cartesian - -*asymmetric -*set_global EREST_ACT -0.065 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 KA 10 KC_FAST 250 KDR_FS 1000 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 KA 10 KC_FAST 250 KDR_FS 100 NaF2 100 diff --git a/examples/traub_2005/py/proto/SupLTS.levels b/examples/traub_2005/py/proto/SupLTS.levels deleted file mode 100644 index 7b54de6..0000000 --- a/examples/traub_2005/py/proto/SupLTS.levels +++ /dev/null @@ -1,60 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 - diff --git a/examples/traub_2005/py/proto/SupLTS.p b/examples/traub_2005/py/proto/SupLTS.p deleted file mode 100644 index 403d22d..0000000 --- a/examples/traub_2005/py/proto/SupLTS.p +++ /dev/null @@ -1,319 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to supLTS cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.065 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_1 none 20 0 0 15 CaPool -2.75869e+16 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.4 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_41 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_28 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_15 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_2 comp_1 40 0 0 2.12 CaPool -1.9519e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.2 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_43 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_42 comp_41 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_30 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_29 comp_28 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_17 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_16 comp_15 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_4 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_3 comp_2 40 0 0 1.33333 CaPool -3.10352e+17 CaL 1 CaT_A 0.5 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 1000 KM 5 NaF2 600 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_46 comp_43 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_45 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_44 comp_42 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_33 comp_30 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_32 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_31 comp_29 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_20 comp_17 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_19 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_18 comp_16 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_7 comp_4 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_6 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_5 comp_3 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 spike 0.0 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2 4000 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_49 comp_46 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_48 comp_45 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_47 comp_44 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_36 comp_33 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_35 comp_32 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_34 comp_31 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_23 comp_20 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_22 comp_19 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_21 comp_18 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_10 comp_7 40 0 0 1.33333 CaPool -3.10352e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_9 comp_6 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_8 comp_5 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_50 comp_47 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_37 comp_34 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_24 comp_21 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_11 comp_8 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_51 comp_50 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_38 comp_37 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_25 comp_24 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_12 comp_11 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_52 comp_51 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_39 comp_38 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_26 comp_25 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_13 comp_12 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_53 comp_52 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_40 comp_39 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_27 comp_26 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 -*set_compt_param ELEAK -0.065 -*set_compt_param RM 2.5 -*set_compt_param CM 0.01 -*set_compt_param RA 2 -comp_14 comp_13 40 0 0 0.837945 CaPool -4.93831e+17 CaL 2 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC_FAST 250 KDR_FS 100 KM 5 NaF2 100 diff --git a/examples/traub_2005/py/proto/SupPyrFRB.depths b/examples/traub_2005/py/proto/SupPyrFRB.depths deleted file mode 100644 index c22ed85..0000000 --- a/examples/traub_2005/py/proto/SupPyrFRB.depths +++ /dev/null @@ -1,12 +0,0 @@ -1 850e-6 -2 885e-6 -3 920e-6 -4 955e-6 -5 825e-6 -6 775e-6 -7 725e-6 -8 690e-6 -9 655e-6 -10 620e-6 -11 585e-6 -12 550e-6 diff --git a/examples/traub_2005/py/proto/SupPyrFRB.levels b/examples/traub_2005/py/proto/SupPyrFRB.levels deleted file mode 100644 index e1b710c..0000000 --- a/examples/traub_2005/py/proto/SupPyrFRB.levels +++ /dev/null @@ -1,74 +0,0 @@ -1 1 -2 2 -3 2 -4 2 -5 2 -6 2 -7 2 -8 2 -9 2 -10 2 -11 2 -12 2 -13 2 -14 3 -15 3 -16 3 -17 3 -18 3 -19 3 -20 3 -21 3 -22 3 -23 3 -24 3 -25 3 -26 4 -27 4 -28 4 -29 4 -30 4 -31 4 -32 4 -33 4 -34 4 -35 4 -36 4 -37 4 -38 5 -39 6 -40 7 -41 8 -42 8 -43 9 -44 9 -45 10 -46 10 -47 10 -48 10 -49 10 -50 10 -51 10 -52 10 -53 11 -54 11 -55 11 -56 11 -57 11 -58 11 -59 11 -60 11 -61 12 -62 12 -63 12 -64 12 -65 12 -66 12 -67 12 -68 12 -69 0 -70 0 -71 0 -72 0 -73 0 -74 0 diff --git a/examples/traub_2005/py/proto/SupPyrFRB.p b/examples/traub_2005/py/proto/SupPyrFRB.p deleted file mode 100644 index f97f1b2..0000000 --- a/examples/traub_2005/py/proto/SupPyrFRB.p +++ /dev/null @@ -1,378 +0,0 @@ -*relative - -*cartesian - -*asymmetric - -*set_global EREST_ACT -70e-3 - -*set_compt_param ELEAK -0.07 -*set_compt_param RM 5 -*set_compt_param CM 0.009 -*set_compt_param RA 2.5 -comp_1 none 15 0 0 16 AR 2.5 CaPool -3.44836e+15 CaL 10 CaT 1 K2 1 KA 300 KAHP 1 KC 45 KDR 1250 KM 75 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_69 comp_1 25 0 0 1.8 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_38 comp_1 50 0 0 8 AR 5 CaPool -4.13803e+15 CaL 20 CaT 2 K2 2 KA 600 KAHP 2 KC 90 KDR 2500 KM 150 NaF 2500 NaP 6.4 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_9 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_8 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_7 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_6 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_5 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_4 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_3 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_2 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_70 comp_69 50 0 0 1.4 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_39 comp_38 50 0 0 7.2 AR 5 CaPool -4.59781e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_13 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_12 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_11 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_10 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 1875 KM 150 NaF 1875 NaP 4.8 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_21 comp_9 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_20 comp_8 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_19 comp_7 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_18 comp_6 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_17 comp_5 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_16 comp_4 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_15 comp_3 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_14 comp_2 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_73 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_71 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_40 comp_39 50 0 0 6.4 AR 5 CaPool -5.17254e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_25 comp_13 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_24 comp_12 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_23 comp_11 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_22 comp_10 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_33 comp_21 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_32 comp_20 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_31 comp_19 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_30 comp_18 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_29 comp_17 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_28 comp_16 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_27 comp_15 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_26 comp_14 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_74 comp_73 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_72 comp_71 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 spike 0.0 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_42 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_41 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_37 comp_25 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_36 comp_24 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_35 comp_23 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_34 comp_22 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_44 comp_42 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_43 comp_41 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_52 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_51 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_50 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_49 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_48 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_47 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_46 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_45 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_60 comp_52 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_59 comp_51 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_58 comp_50 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_57 comp_49 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_56 comp_48 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_55 comp_47 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_54 comp_46 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_53 comp_45 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_68 comp_60 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_67 comp_59 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_66 comp_58 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_65 comp_57 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_64 comp_56 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_63 comp_55 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_62 comp_54 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_61 comp_53 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 2 KC 90 KDR 125 KM 150 NaF 250 NaP 0.64 diff --git a/examples/traub_2005/py/proto/SupPyrRS.depths b/examples/traub_2005/py/proto/SupPyrRS.depths deleted file mode 100644 index c22ed85..0000000 --- a/examples/traub_2005/py/proto/SupPyrRS.depths +++ /dev/null @@ -1,12 +0,0 @@ -1 850e-6 -2 885e-6 -3 920e-6 -4 955e-6 -5 825e-6 -6 775e-6 -7 725e-6 -8 690e-6 -9 655e-6 -10 620e-6 -11 585e-6 -12 550e-6 diff --git a/examples/traub_2005/py/proto/SupPyrRS.levels b/examples/traub_2005/py/proto/SupPyrRS.levels deleted file mode 100644 index e1b710c..0000000 --- a/examples/traub_2005/py/proto/SupPyrRS.levels +++ /dev/null @@ -1,74 +0,0 @@ -1 1 -2 2 -3 2 -4 2 -5 2 -6 2 -7 2 -8 2 -9 2 -10 2 -11 2 -12 2 -13 2 -14 3 -15 3 -16 3 -17 3 -18 3 -19 3 -20 3 -21 3 -22 3 -23 3 -24 3 -25 3 -26 4 -27 4 -28 4 -29 4 -30 4 -31 4 -32 4 -33 4 -34 4 -35 4 -36 4 -37 4 -38 5 -39 6 -40 7 -41 8 -42 8 -43 9 -44 9 -45 10 -46 10 -47 10 -48 10 -49 10 -50 10 -51 10 -52 10 -53 11 -54 11 -55 11 -56 11 -57 11 -58 11 -59 11 -60 11 -61 12 -62 12 -63 12 -64 12 -65 12 -66 12 -67 12 -68 12 -69 0 -70 0 -71 0 -72 0 -73 0 -74 0 diff --git a/examples/traub_2005/py/proto/SupPyrRS.p b/examples/traub_2005/py/proto/SupPyrRS.p deleted file mode 100644 index a3491fd..0000000 --- a/examples/traub_2005/py/proto/SupPyrRS.p +++ /dev/null @@ -1,394 +0,0 @@ -// -// This code was generated from a NEURON model using stub hoc code -// by Subhasis Ray, NCBS, Bangalore. -// It corresponds to suppyrRS cell in the model by Traub, et al. 2005 -// Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// Single-column thalamocortical network model exhibiting -// gamma oscillations, sleep spindles, and epileptogenic bursts. -// J. Neurophysiol. 93, 2194-2232, 2005 -// Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract - -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.07 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 5 -*set_compt_param CM 0.009 -*set_compt_param RA 2.5 -comp_1 none 15 0 0 16 AR 2.5 CaPool -3.44836e+15 CaL 10 CaT 1 K2 1 KA 300 KAHP 0.4 KC 120 KDR 1250 KM 75 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_69 comp_1 25 0 0 1.8 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_38 comp_1 50 0 0 8 AR 5 CaPool -4.13803e+15 CaL 20 CaT 2 K2 2 KA 600 KAHP 0.8 KC 240 KDR 2500 KM 150 NaF 2500 NaP 1.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_9 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_8 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_7 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_6 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_5 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_4 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_3 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_2 comp_1 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_70 comp_69 50 0 0 1.4 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_39 comp_38 50 0 0 7.2 AR 5 CaPool -4.59781e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_13 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_12 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_11 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_10 comp_38 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 1875 KM 150 NaF 1875 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_21 comp_9 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_20 comp_8 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_19 comp_7 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_18 comp_6 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_17 comp_5 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_16 comp_4 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_15 comp_3 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_14 comp_2 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_73 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_71 comp_70 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_40 comp_39 50 0 0 6.4 AR 5 CaPool -5.17254e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_25 comp_13 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_24 comp_12 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_23 comp_11 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_22 comp_10 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_33 comp_21 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_32 comp_20 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_31 comp_19 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_30 comp_18 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_29 comp_17 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_28 comp_16 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_27 comp_15 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_26 comp_14 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_74 comp_73 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_72 comp_71 50 0 0 1 K2 1 KA 20 KDR 4000 NaF 4000 spike 0.0 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_42 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_41 comp_40 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_37 comp_25 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_36 comp_24 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_35 comp_23 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_34 comp_22 50 0 0 1 AR 5 CaPool -3.31042e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_44 comp_42 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_43 comp_41 50 0 0 4 AR 5 CaPool -8.27606e+15 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_52 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_51 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_50 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_49 comp_44 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_48 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_47 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_46 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_45 comp_43 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_60 comp_52 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_59 comp_51 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_58 comp_50 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_57 comp_49 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_56 comp_48 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_55 comp_47 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_54 comp_46 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_53 comp_45 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_68 comp_60 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_67 comp_59 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_66 comp_58 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_65 comp_57 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_64 comp_56 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_63 comp_55 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_62 comp_54 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_61 comp_53 50 0 0 1.6 AR 5 CaPool -2.06901e+16 CaL 20 CaT 2 K2 2 KA 40 KAHP 0.8 KC 240 KDR 125 KM 150 NaF 250 NaP 0.16 diff --git a/examples/traub_2005/py/proto/TCR.levels b/examples/traub_2005/py/proto/TCR.levels deleted file mode 100644 index 83725c4..0000000 --- a/examples/traub_2005/py/proto/TCR.levels +++ /dev/null @@ -1,138 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 3 -6 4 -7 4 -8 4 -9 4 -10 4 -11 4 -12 4 -13 4 -14 4 -15 2 -16 3 -17 3 -18 3 -19 4 -20 4 -21 4 -22 4 -23 4 -24 4 -25 4 -26 4 -27 4 -28 2 -29 3 -30 3 -31 3 -32 4 -33 4 -34 4 -35 4 -36 4 -37 4 -38 4 -39 4 -40 4 -41 2 -42 3 -43 3 -44 3 -45 4 -46 4 -47 4 -48 4 -49 4 -50 4 -51 4 -52 4 -53 4 -54 2 -55 3 -56 3 -57 3 -58 4 -59 4 -60 4 -61 4 -62 4 -63 4 -64 4 -65 4 -66 4 -67 2 -68 3 -69 3 -70 3 -71 4 -72 4 -73 4 -74 4 -75 4 -76 4 -77 4 -78 4 -79 4 -80 2 -81 3 -82 3 -83 3 -84 4 -85 4 -86 4 -87 4 -88 4 -89 4 -90 4 -91 4 -92 4 -93 2 -94 3 -95 3 -96 3 -97 4 -98 4 -99 4 -100 4 -101 4 -102 4 -103 4 -104 4 -105 4 -106 2 -107 3 -108 3 -109 3 -110 4 -111 4 -112 4 -113 4 -114 4 -115 4 -116 4 -117 4 -118 4 -119 2 -120 3 -121 3 -122 3 -123 4 -124 4 -125 4 -126 4 -127 4 -128 4 -129 4 -130 4 -131 4 -132 0 -133 0 -134 0 -135 0 -136 0 -137 0 - diff --git a/examples/traub_2005/py/proto/TCR.p b/examples/traub_2005/py/proto/TCR.p deleted file mode 100644 index 2b672ee..0000000 --- a/examples/traub_2005/py/proto/TCR.p +++ /dev/null @@ -1,709 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.07 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_1 none 42 0 0 20 AR 2.5 CaPool -1.97049e+15 CaL 5 CaT 5 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 337.5 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_132 comp_1 50 0 0 1.6 K2 5 KA 10 KDR 1800 NaF_TCR 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_119 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_106 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_93 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_80 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_67 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_54 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_41 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_28 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_15 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_2 comp_1 20 0 0 1.46 AR 5 CaPool -1.13371e+17 CaL 5 CaT 50 K2 20 KA 60 KAHP_SLOWER 0.5 KC 120 KDR 225 KM 5 NaF_TCR 1000 NaPF_TCR 2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_133 comp_132 50 0 0 1.4 K2 5 KA 10 KDR 1800 NaF_TCR 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_122 comp_119 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_121 comp_119 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_120 comp_119 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_109 comp_106 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_108 comp_106 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_107 comp_106 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_96 comp_93 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_95 comp_93 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_94 comp_93 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_83 comp_80 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_82 comp_80 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_81 comp_80 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_70 comp_67 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_69 comp_67 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_68 comp_67 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_57 comp_54 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_56 comp_54 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_55 comp_54 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_44 comp_41 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_43 comp_41 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_42 comp_41 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_31 comp_28 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_30 comp_28 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_29 comp_28 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_18 comp_15 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_17 comp_15 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_16 comp_15 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_5 comp_2 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_4 comp_2 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_3 comp_2 57.5 0 0 1.168 AR 3 CaPool -4.92916e+16 CaL 2.5 CaT 30 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_136 comp_133 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_134 comp_133 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_131 comp_122 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_130 comp_122 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_129 comp_122 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_128 comp_121 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_127 comp_121 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_126 comp_121 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_125 comp_120 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_124 comp_120 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_123 comp_120 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_118 comp_109 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_117 comp_109 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_116 comp_109 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_115 comp_108 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_114 comp_108 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_113 comp_108 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_112 comp_107 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_111 comp_107 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_110 comp_107 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_105 comp_96 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_104 comp_96 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_103 comp_96 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_102 comp_95 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_101 comp_95 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_100 comp_95 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_99 comp_94 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_98 comp_94 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_97 comp_94 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_92 comp_83 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_91 comp_83 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_90 comp_83 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_89 comp_82 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_88 comp_82 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_87 comp_82 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_86 comp_81 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_85 comp_81 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_84 comp_81 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_79 comp_70 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_78 comp_70 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_77 comp_70 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_76 comp_69 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_75 comp_69 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_74 comp_69 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_73 comp_68 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_72 comp_68 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_71 comp_68 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_66 comp_57 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_65 comp_57 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_64 comp_57 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_63 comp_56 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_62 comp_56 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_61 comp_56 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_60 comp_55 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_59 comp_55 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_58 comp_55 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_53 comp_44 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_52 comp_44 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_51 comp_44 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_50 comp_43 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_49 comp_43 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_48 comp_43 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_47 comp_42 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_46 comp_42 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_45 comp_42 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_40 comp_31 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_39 comp_31 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_38 comp_31 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_37 comp_30 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_36 comp_30 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_35 comp_30 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_34 comp_29 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_33 comp_29 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_32 comp_29 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_27 comp_18 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_26 comp_18 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_25 comp_18 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_24 comp_17 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_23 comp_17 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_22 comp_17 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_21 comp_16 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_20 comp_16 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_19 comp_16 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_14 comp_5 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_13 comp_5 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_12 comp_5 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_11 comp_4 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_10 comp_4 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_9 comp_4 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_8 comp_3 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_7 comp_3 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.64 -*set_compt_param CM 0.009 -*set_compt_param RA 1.75 -comp_6 comp_3 57.5 0 0 0.876 AR 3 CaPool -6.57221e+16 CaL 2.5 CaT 5 K2 20 KA 2 KAHP_SLOWER 0.5 KC 200 KM 5 NaF_TCR 50 NaPF_TCR 0.1 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_137 comp_136 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_135 comp_134 50 0 0 1 K2 5 KA 10 KDR 1800 NaF_TCR 4000 spike 0.0 diff --git a/examples/traub_2005/py/proto/TuftedIB.levels b/examples/traub_2005/py/proto/TuftedIB.levels deleted file mode 100644 index 4777aa4..0000000 --- a/examples/traub_2005/py/proto/TuftedIB.levels +++ /dev/null @@ -1,62 +0,0 @@ -1 1 -2 2 -3 2 -4 2 -5 2 -6 2 -7 2 -8 2 -9 2 -10 2 -11 2 -12 2 -13 3 -14 3 -15 3 -16 3 -17 3 -18 3 -19 3 -20 3 -21 3 -22 3 -23 3 -24 4 -25 4 -26 4 -27 4 -28 4 -29 4 -30 4 -31 4 -32 4 -33 4 -34 4 -35 5 -36 6 -37 7 -38 8 -39 9 -40 10 -41 11 -42 12 -43 13 -44 14 -45 15 -46 16 -47 17 -48 18 -49 18 -50 18 -51 18 -52 18 -53 18 -54 18 -55 18 -56 0 -57 0 -58 0 -59 0 -60 0 -61 0 - diff --git a/examples/traub_2005/py/proto/TuftedIB.p b/examples/traub_2005/py/proto/TuftedIB.p deleted file mode 100644 index 233a9dd..0000000 --- a/examples/traub_2005/py/proto/TuftedIB.p +++ /dev/null @@ -1,330 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to tuftIB cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ - -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.07 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 5 -*set_compt_param CM 0.009 -*set_compt_param RA 2.5 -comp_1 none 25 0 0 18 AR 1 CaPool -3.06521e+14 CaL 40 CaT 1 K2 5 KA_IB 200 KAHP_DP 2 KC 160 KDR 1700 KM 119 NaF 2000 NaP 1.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_56 comp_1 25 0 0 1.8 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_35 comp_1 75 0 0 4 AR 2 CaPool -9.19562e+15 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 2400 KM 380.8 NaF 3000 NaP 2.4 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_6 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_5 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_4 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_3 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_2 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1.4 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_36 comp_35 75 0 0 3.8 AR 2 CaPool -9.6796e+15 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_12 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_7 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_17 comp_6 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_16 comp_5 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_15 comp_4 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_14 comp_3 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_13 comp_2 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_59 comp_57 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_58 comp_57 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_11 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_8 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_37 comp_36 75 0 0 3.6 AR 2 CaPool -1.02174e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_23 comp_12 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_18 comp_7 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_28 comp_17 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_27 comp_16 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_26 comp_15 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_25 comp_14 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_24 comp_13 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_61 comp_59 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_60 comp_58 50 0 0 1 K2 5 KA_IB 6 KDR 4500 KM 300 NaF 4500 spike 0.0 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_22 comp_11 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_19 comp_8 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_10 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_9 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 160 KAHP_DP 4 KC 320 KDR 1500 KM 380.8 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_38 comp_37 75 0 0 3.4 AR 2 CaPool -1.08184e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_34 comp_23 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_29 comp_18 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_33 comp_22 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_30 comp_19 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_21 comp_10 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_20 comp_9 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_39 comp_38 75 0 0 3.2 AR 2 CaPool -1.14945e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_32 comp_21 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_31 comp_20 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 80 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_40 comp_39 75 0 0 3 AR 2 CaPool -1.22608e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_41 comp_40 75 0 0 2.8 AR 2 CaPool -1.31366e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_42 comp_41 75 0 0 2.6 AR 2 CaPool -1.41471e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_43 comp_42 75 0 0 2.4 AR 2 CaPool -1.5326e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_44 comp_43 75 0 0 2 AR 2 CaPool -1.83912e+16 CaL 40 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 10 KM 380.8 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_45 comp_44 75 0 0 1.6 AR 2 CaPool -2.2989e+16 CaL 20 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_46 comp_45 75 0 0 1.4 AR 2 CaPool -2.62732e+16 CaL 20 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_47 comp_46 75 0 0 1.2 AR 2 CaPool -3.06521e+16 CaL 20 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_49 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 54 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_48 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 54 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_51 comp_49 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_50 comp_48 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_53 comp_51 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_52 comp_50 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_55 comp_53 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_54 comp_52 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 12 CaT 2 K2 10 KA_IB 12 KAHP_DP 4 KC 24 KM 112 NaF 60 NaP 0.048 diff --git a/examples/traub_2005/py/proto/TuftedRS.levels b/examples/traub_2005/py/proto/TuftedRS.levels deleted file mode 100644 index 4777aa4..0000000 --- a/examples/traub_2005/py/proto/TuftedRS.levels +++ /dev/null @@ -1,62 +0,0 @@ -1 1 -2 2 -3 2 -4 2 -5 2 -6 2 -7 2 -8 2 -9 2 -10 2 -11 2 -12 2 -13 3 -14 3 -15 3 -16 3 -17 3 -18 3 -19 3 -20 3 -21 3 -22 3 -23 3 -24 4 -25 4 -26 4 -27 4 -28 4 -29 4 -30 4 -31 4 -32 4 -33 4 -34 4 -35 5 -36 6 -37 7 -38 8 -39 9 -40 10 -41 11 -42 12 -43 13 -44 14 -45 15 -46 16 -47 17 -48 18 -49 18 -50 18 -51 18 -52 18 -53 18 -54 18 -55 18 -56 0 -57 0 -58 0 -59 0 -60 0 -61 0 - diff --git a/examples/traub_2005/py/proto/TuftedRS.p b/examples/traub_2005/py/proto/TuftedRS.p deleted file mode 100644 index f4984f1..0000000 --- a/examples/traub_2005/py/proto/TuftedRS.p +++ /dev/null @@ -1,329 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to tuftRS cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting -// * gamma oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// ***********************************************************************/ -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.07 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 5 -*set_compt_param CM 0.009 -*set_compt_param RA 2.5 -comp_1 none 25 0 0 18 AR 1 CaPool -3.06521e+14 CaL 16 CaT 1 K2 5 KA 200 KAHP_DP 2 KC 288 KDR 1700 KM 85 NaF 2000 NaP 1.6 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_56 comp_1 25 0 0 1.8 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_35 comp_1 75 0 0 4 AR 2 CaPool -9.19562e+15 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 2400 KM 272 NaF 3000 NaP 2.4 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_6 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_5 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_4 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_3 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_2 comp_1 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1.4 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_36 comp_35 75 0 0 3.8 AR 2 CaPool -9.6796e+15 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_12 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_7 comp_35 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_17 comp_6 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_16 comp_5 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_15 comp_4 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_14 comp_3 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_13 comp_2 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_59 comp_57 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_58 comp_57 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_11 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_8 comp_36 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_37 comp_36 75 0 0 3.6 AR 2 CaPool -1.02174e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_23 comp_12 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_18 comp_7 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_28 comp_17 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_27 comp_16 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_26 comp_15 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_25 comp_14 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_24 comp_13 60 0 0 1.7 AR 2 CaPool -2.70459e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_61 comp_59 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 0.1 -*set_compt_param CM 0.009 -*set_compt_param RA 1 -comp_60 comp_58 50 0 0 1 K2 5 KA 6 KDR 4500 KM 300 NaF 4500 spike 0.0 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_22 comp_11 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_19 comp_8 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_10 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_9 comp_37 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 160 KAHP_DP 4 KC 576 KDR 1500 KM 272 NaF 1500 NaP 1.2 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_38 comp_37 75 0 0 3.4 AR 2 CaPool -1.08184e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_34 comp_23 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_29 comp_18 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_33 comp_22 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_30 comp_19 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_21 comp_10 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_20 comp_9 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_39 comp_38 75 0 0 3.2 AR 2 CaPool -1.14945e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_32 comp_21 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_31 comp_20 60 0 0 1.24 AR 2 CaPool -3.70791e+16 CaL 32 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_40 comp_39 75 0 0 3 AR 2 CaPool -1.22608e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_41 comp_40 75 0 0 2.8 AR 2 CaPool -1.31366e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_42 comp_41 75 0 0 2.6 AR 2 CaPool -1.41471e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_43 comp_42 75 0 0 2.4 AR 2 CaPool -1.5326e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_44 comp_43 75 0 0 2 AR 2 CaPool -1.83912e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 18 KM 272 NaF 300 NaP 0.24 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_45 comp_44 75 0 0 1.6 AR 2 CaPool -2.2989e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_46 comp_45 75 0 0 1.4 AR 2 CaPool -2.62732e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_47 comp_46 75 0 0 1.2 AR 2 CaPool -3.06521e+16 CaL 8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_49 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 21.6 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_48 comp_47 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 21.6 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_51 comp_49 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_50 comp_48 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_53 comp_51 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_52 comp_50 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_55 comp_53 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 -*set_compt_param ELEAK -0.07 -*set_compt_param RM 2.5 -*set_compt_param CM 0.018 -*set_compt_param RA 2.5 -comp_54 comp_52 60 0 0 1.1 AR 4 CaPool -4.17983e+16 CaL 4.8 CaT 2 K2 10 KA 12 KAHP_DP 4 KC 43.2 KM 80 NaF 60 NaP 0.048 diff --git a/examples/traub_2005/py/proto/nRT.levels b/examples/traub_2005/py/proto/nRT.levels deleted file mode 100644 index 7b54de6..0000000 --- a/examples/traub_2005/py/proto/nRT.levels +++ /dev/null @@ -1,60 +0,0 @@ -1 1 -2 2 -3 3 -4 3 -5 4 -6 4 -7 4 -8 5 -9 5 -10 5 -11 6 -12 7 -13 8 -14 9 -15 2 -16 3 -17 3 -18 4 -19 4 -20 4 -21 5 -22 5 -23 5 -24 6 -25 7 -26 8 -27 9 -28 2 -29 3 -30 3 -31 4 -32 4 -33 4 -34 5 -35 5 -36 5 -37 6 -38 7 -39 8 -40 9 -41 2 -42 3 -43 3 -44 4 -45 4 -46 4 -47 5 -48 5 -49 5 -50 6 -51 7 -52 8 -53 9 -54 0 -55 0 -56 0 -57 0 -58 0 -59 0 - diff --git a/examples/traub_2005/py/proto/nRT.p b/examples/traub_2005/py/proto/nRT.p deleted file mode 100644 index 223be4b..0000000 --- a/examples/traub_2005/py/proto/nRT.p +++ /dev/null @@ -1,324 +0,0 @@ -///*********************************************************************** -// * This code was generated from a NEURON model using stub hoc code -// * by Subhasis Ray, NCBS, Bangalore. -// * It corresponds to nRT cell in the model by Traub, et al. 2005 -// * Reference: http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 -// -// * Reference: Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and -// * Miles A. Whittington. Fast Rhythmic Bursting Can Be Induced in -// * Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance -// * or by Blocking BK Channels J Neurophysiol 89: 909-921, 2003 -// * Pubmed: http://www.ncbi.nlm.nih.gov/pubmed/12574468?dopt=Abstract -// -// * Reference: Roger D. Traub, Diego Contreras, Mark O. Cunningham, -// * Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, -// * W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington -// * Single-column thalamocortical network model exhibiting gamma -// * oscillations, sleep spindles, and epileptogenic bursts. -// * J. Neurophysiol. 93, 2194-2232, 2005 Pubmed: -// * http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract -// * **********************************************************************/ - -// 2010-04-12 11:39:27 (+0530) CaT_A renamed to CaT to conform with -// addmsg1 field in CaPool -// 2010-05-07 12:16:11 (+0530) reverted it back to CaT_A to avoid copying CaT from library. CaT does not influence CaPool after all. It was CaL. -*cartesian -*relative -*asymmetric -*set_global EREST_ACT -0.075 - -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_1 none 30 0 0 18.68 AR 0.25 CaPool -5.90725e+14 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_54 comp_1 50 0 0 1.6 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_41 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_28 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_15 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_2 comp_1 75 0 0 2.12 AR 0.25 CaPool -5.20507e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_55 comp_54 50 0 0 1.4 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_43 comp_41 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_42 comp_41 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_30 comp_28 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_29 comp_28 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_17 comp_15 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_16 comp_15 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_4 comp_2 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_3 comp_2 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 0.5 K2 5 KA 50 KAHP_SLOWER 1 KC 100 KDR_FS 600 KM 5 NaF2_nRT 600 NaPF 6 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_58 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_56 comp_55 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_46 comp_43 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_45 comp_42 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_44 comp_42 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_33 comp_30 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_32 comp_29 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_31 comp_29 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_20 comp_17 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_19 comp_16 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_18 comp_16 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_7 comp_4 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_6 comp_3 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_5 comp_3 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_59 comp_58 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 spike 0.0 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 0.1 -*set_compt_param CM 0.01 -*set_compt_param RA 1 -comp_57 comp_56 50 0 0 1 K2 5 KA 10 KDR_FS 4000 NaF2_nRT 4000 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_49 comp_46 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_48 comp_45 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_47 comp_44 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_36 comp_33 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_35 comp_32 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_34 comp_31 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_23 comp_20 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_22 comp_19 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_21 comp_18 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_10 comp_7 75 0 0 1.33333 AR 0.25 CaPool -8.27606e+16 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_9 comp_6 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_8 comp_5 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_50 comp_47 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_37 comp_34 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_24 comp_21 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_11 comp_8 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_51 comp_50 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_38 comp_37 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_25 comp_24 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_12 comp_11 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_52 comp_51 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_39 comp_38 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_26 comp_25 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_13 comp_12 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_53 comp_52 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_40 comp_39 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_27 comp_26 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 -*set_compt_param ELEAK -0.075 -*set_compt_param RM 2 -*set_compt_param CM 0.01 -*set_compt_param RA 2.5 -comp_14 comp_13 75 0 0 0.837945 AR 0.25 CaPool -1.31688e+17 CaL 5 CaT_A 20 K2 5 KA 10 KAHP_SLOWER 1 KC 100 KDR_FS 100 KM 5 NaF2_nRT 100 NaPF 1 diff --git a/examples/traub_2005/py/settings.py b/examples/traub_2005/py/settings.py deleted file mode 100644 index d13b161..0000000 --- a/examples/traub_2005/py/settings.py +++ /dev/null @@ -1,100 +0,0 @@ -# settings.py --- -# -# Filename: settings.py -# Description: -# Author: -# Maintainer: -# Created: Wed May 23 12:04:34 2012 (+0530) -# Version: -# Last-Updated: Thu May 24 15:18:06 2012 (+0530) -# By: subha -# Update #: 167 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: -import exceptions - -class ReinitializationWarning(exceptions.Warning): - def __init__(self, *args, **kwargs): - exceptions.Warning.__init__(self, *args, **kwargs) - - -class Settings(object): - pass - - -class SimulationSettings(Settings): - """Class for storing simulation settings. - - initialTime: initial value of simulation time (default 0) - - endTime: end of simulation time. - - simulationDt: integration time step for the main simulation. - - outputDt: time interval between recording output points. - - method: what algorithm to use. - - """ - def __init__(self): - self.initialTime = 0.0 - self.endTime = 1.0 - self.simulationDt = 25e-6 - self.outputDt = 0.25e-3 - self.method = 'ee' - self.moose_seed = 0 - - -class ModelSettings(Settings): - """Class for storing model settings.""" - def __init__(self): - self.container = '/' - self.libpath = '/library' - self.protodir = 'proto' - self.populationSize = {} - self.numpy_seed = None - - -class DataSettings(Settings): - """Settings for specifying data to be recorded. - - - targets: path to objects to record from, fraction to record from). - - fractions: list of single number for fraction of targets to record from when each target is a wild card - - fields: (field-name, dtype) dict for recording - dtype is `Event` or `AnalogSignal` as per neo library. - - """ - def __init__(self): - self.random = True - self.fractions = [] - self.targets = [] - self.fields = {} - - -class ChangeSettings(Settings): - def __init__(self): - self.changes = [] - - -# -# settings.py ends here diff --git a/examples/traub_2005/py/test_archan.py b/examples/traub_2005/py/test_archan.py deleted file mode 100644 index 56719ed..0000000 --- a/examples/traub_2005/py/test_archan.py +++ /dev/null @@ -1,63 +0,0 @@ -# test_archan.py --- -# -# Filename: test_archan.py -# Description: -# Author: -# Maintainer: -# Created: Sat Jun 2 11:05:22 2012 (+0530) -# Version: -# Last-Updated: Sat Jun 2 11:06:52 2012 (+0530) -# By: subha -# Update #: 5 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# - -# Code: - - -import numpy as np -import testutils -from testutils import * -from archan import * -from channel_test_util import compare_channel_data, run_single_channel, ChannelTestBase - -simtime = 350e-3 -simdt = testutils.SIMDT -plotdt = testutils.PLOTDT - -class TestAR(ChannelTestBase): - channelname = 'AR' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testAR_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testAR_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - -if __name__ == '__main__': - unittest.main() - -# -# test_archan.py ends here diff --git a/examples/traub_2005/py/test_cachans.py b/examples/traub_2005/py/test_cachans.py deleted file mode 100644 index 8da8d25..0000000 --- a/examples/traub_2005/py/test_cachans.py +++ /dev/null @@ -1,102 +0,0 @@ -# test_cachans.py --- -# -# Filename: test_cachans.py -# Description: -# Author: -# Maintainer: -# Created: Sat Jun 2 11:07:05 2012 (+0530) -# Version: -# Last-Updated: Sat Jun 2 15:27:15 2012 (+0530) -# By: subha -# Update #: 9 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import numpy as np -import testutils -from testutils import * -from cachans import * -from channel_test_util import ChannelTestBase, run_single_channel, compare_channel_data - -simtime = 350e-3 -simdt = testutils.SIMDT -plotdt = testutils.PLOTDT - -class TestCaL(ChannelTestBase): - channelname = 'CaL' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testCAL_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testCAL_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestCaT(ChannelTestBase): - channelname = 'CaT' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testCaT_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testCaT_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestCaT_A(ChannelTestBase): - channelname = 'CaT_A' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testCaT_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testCaT_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - - -if __name__ == '__main__': - unittest.main() - - -# -# test_cachans.py ends here diff --git a/examples/traub_2005/py/test_capool.py b/examples/traub_2005/py/test_capool.py deleted file mode 100644 index eee8ce6..0000000 --- a/examples/traub_2005/py/test_capool.py +++ /dev/null @@ -1,129 +0,0 @@ -# test_capool.py --- -# -# Filename: test_capool.py -# Description: -# Author: -# Maintainer: -# Created: Sun Jun 3 20:31:03 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:27:45 2016 (-0400) -# By: subha -# Update #: 70 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: -from __future__ import print_function - -import uuid -import numpy as np -import testutils -from testutils import * -from cachans import * -from capool import * -from channel_test_util import compare_channel_data, run_single_channel, ChannelTestBase - - -simtime = 350e-3 -simdt = testutils.SIMDT -plotdt = testutils.PLOTDT - - -def run_capool(poolname, Gbar, simtime): - testId = uuid.uuid4().int - container = moose.Neutral('test%d' % (testId)) - model = moose.Neutral('%s/model' % (container.path)) - data = moose.Neutral('%s/data' % (container.path)) - params = setup_single_compartment( - model, data, - channelbase.prototypes['CaL'], - Gbar) - channelname = 'CaL' - capool = moose.copy(CaPool.prototype, params['compartment'], 'CaPool')[0] - moose.connect(params['channel'], 'IkOut', capool, 'current') - # The B is obtained from phi in NEURON by dividing it with - # compartment area in cm2 and multiplying by 1e3 for /mA->/A and - # by 1e3 for /ms->/S - capool.B = 52000 * 1e6 / (3.141592 * 1e-4 * 1e-4) - # beta = 1/tau (ms) = 0.02 => tau = 50 ms - capool.tau = 50e-3 - ca_data = moose.Table('%s/Ca' % (data.path)) - moose.connect(ca_data, 'requestOut', capool, 'getCa') - setup_clocks(simdt, plotdt) - assign_clocks(model, data) - vm_data = params['Vm'] - gk_data = params['Gk'] - ik_data = params['Ik'] - params['Ca'] = ca_data - moose.reinit() - print('Starting simulation', testId, 'for', simtime, 's') - moose.start(simtime) - print('Finished simulation') - vm_file = 'data/%s_Vm.dat' % (poolname) - gk_file = 'data/%s_Gk.dat' % (poolname) - ik_file = 'data/%s_Ik.dat' % (poolname) - ca_file = 'data/%s_Ca.dat' % (poolname) - tseries = np.array(range(len(vm_data.vector))) * simdt - print('Vm:', len(vm_data.vector), 'Gk', len(gk_data.vector), 'Ik', len(ik_data.vector)) - data = np.c_[tseries, vm_data.vector] - np.savetxt(vm_file, data) - print('Saved Vm in', vm_file) - data = np.c_[tseries, gk_data.vector] - np.savetxt(gk_file, data) - print('Saved Gk in', gk_file) - data = np.c_[tseries, ik_data.vector] - np.savetxt(ik_file, data) - print('Saved Ik in', ik_file) - print('>>', len(ca_data.vector)) - data = np.c_[tseries, ca_data.vector] - np.savetxt(ca_file, data) - print('Saved [Ca2+] in', ca_file) - return params - - -class TestCaPool(ChannelTestBase): - channelname = 'CaL' - poolname = 'CaPool' - params = run_capool(poolname, 1e-9, 350e-3) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - ca = np.array(params['Ca'].vector) - print(len(ca)) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testCaPool_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testCaPool_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - def testCaPool_Ca_Neuron(self): - print(self.ca.shape) - data = np.c_[self.tseries, self.ca] - err = compare_channel_data(data, self.poolname, 'Ca', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - -if __name__ == '__main__': - unittest.main() - -# -# test_capool.py ends here diff --git a/examples/traub_2005/py/test_deepaxoaxonic.py b/examples/traub_2005/py/test_deepaxoaxonic.py deleted file mode 100644 index 88cdf91..0000000 --- a/examples/traub_2005/py/test_deepaxoaxonic.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_deepaxoaxonic.py --- -# -# Filename: test_deepaxoaxonic.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 17:51:49 2012 (+0530) -# By: subha -# Update #: 494 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestDeepAxoaxonic(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'DeepAxoaxonic' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'ee' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_deepaxoaxonic.py ends here diff --git a/examples/traub_2005/py/test_deepbasket.py b/examples/traub_2005/py/test_deepbasket.py deleted file mode 100644 index a0a9b24..0000000 --- a/examples/traub_2005/py/test_deepbasket.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_deepbasket.py --- -# -# Filename: test_deepbasket.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 17:55:59 2012 (+0530) -# By: subha -# Update #: 497 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestDeepBasket(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'DeepBasket' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'ee' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_deepbasket.py ends here diff --git a/examples/traub_2005/py/test_deeplts.py b/examples/traub_2005/py/test_deeplts.py deleted file mode 100644 index 0d571b6..0000000 --- a/examples/traub_2005/py/test_deeplts.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_deeplts.py --- -# -# Filename: test_deeplts.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:00:47 2012 (+0530) -# By: subha -# Update #: 501 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestDeepLTS(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'DeepLTS' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'ee' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_deeplts.py ends here diff --git a/examples/traub_2005/py/test_hsolve_tcr.py b/examples/traub_2005/py/test_hsolve_tcr.py deleted file mode 100644 index c048903..0000000 --- a/examples/traub_2005/py/test_hsolve_tcr.py +++ /dev/null @@ -1,96 +0,0 @@ -# test_hsolve_tcr.py --- -# -# Filename: test_hsolve_tcr.py -# Description: -# Author: -# Maintainer: -# Created: Wed Jun 12 11:10:44 2013 (+0530) -# Version: -# Last-Updated: Tue Jul 9 18:34:01 2013 (+0530) -# By: subha -# Update #: 195 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -import sys -import os -from datetime import datetime -import unittest -import numpy as np -import pylab - -import moose -import config - -from cell_test_util import setup_current_step_model, SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 1e-6 -plotdt = 0.25e-3 -simtime = 100e-3 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - -pulsearray = [[50e-3, 20e-3, 1e-9], - [1e9, 0, 0]] - -class TestHSolveEETCR(SingleCellCurrentStepTest): - """Run HSolve and Exponential solver simulation of the same cell.""" - celltype = 'TCR' - def testHSolve(self): - self.schedule(simdt, plotdt, 'hsolve') - self.runsim(simtime, pulsearray=pulsearray) - self.savedata() - - def testEE(self): - self.schedule(simdt, plotdt, 'ee') - self.runsim(simtime, pulsearray=pulsearray) - self.savedata() - -if __name__ == '__main__': - unittest.main() - - - - -# -# test_hsolve_tcr.py ends here diff --git a/examples/traub_2005/py/test_kchans.py b/examples/traub_2005/py/test_kchans.py deleted file mode 100644 index 0eb5edd..0000000 --- a/examples/traub_2005/py/test_kchans.py +++ /dev/null @@ -1,309 +0,0 @@ -# test_kchans.py --- -# -# Filename: test_kchans.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Wed May 30 23:51:58 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:30:28 2016 (-0400) -# By: subha -# Update #: 120 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# - -# Code: -from __future__ import print_function - -import uuid -import unittest -import numpy as np -import testutils -import channelbase -from testutils import setup_single_compartment -from channel_test_util import compare_channel_data, run_single_channel, ChannelTestBase -from kchans import * - -simtime = 350e-3 -simdt = testutils.SIMDT -plotdt = testutils.PLOTDT - - -class TestKDR(ChannelTestBase): - channelname = 'KDR' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKDR_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKDR_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestKDR_FS(ChannelTestBase): - channelname = 'KDR_FS' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKDR_FS_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKDR_FS_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - - -class TestKA(ChannelTestBase): - channelname = 'KA' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKA_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKA_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', plot=True) - self.assertLess(err, 0.01) - - -class TestKA_IB(ChannelTestBase): - channelname = 'KA_IB' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKA_IB_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - - def testKA_IB_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', plot=True) - self.assertLess(err, 0.01) - - -class TestK2(ChannelTestBase): - channelname = 'K2' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testK2_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testK2_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', plot=True) - self.assertLess(err, 0.01) - - -class TestKM(ChannelTestBase): - channelname = 'KM' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKM_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKM_Gk_Neuron(self): - - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -def setup_cadep_channel(model_container, data_container, channel_proto, Gbar, ca_start, ca_stop): - """Setup a test compartment with [Ca2+] dependent channel.""" - params = setup_single_compartment(model_container, data_container, channel_proto, Gbar) - ca_table = moose.StimulusTable(model_container.path + '/CaStim') - ca_table.vector = np.linspace(ca_start, ca_stop, 1000) - ca_table.doLoop = True - ca_recorder = moose.Table(data_container.path + '/Ca') - moose.connect(ca_table, 'output', ca_recorder, 'input') - moose.connect(ca_table, 'output', params['channel'], 'concen') - params['Ca'] = ca_recorder - params['CaStim'] = ca_table - testutils.setup_clocks(simdt, plotdt) - testutils.assign_clocks(model_container, data_container) - moose.useClock(1, '%s,%s' % (ca_recorder.path, ca_table.path), 'process') - return params - -def run_cadep_channel(channelname, Gbar, simtime): - testId = uuid.uuid4().int - container = moose.Neutral('test%d' % (testId)) - model_container = moose.Neutral('%s/model' % (container.path)) - data_container = moose.Neutral('%s/data' % (container.path)) - params = setup_cadep_channel( - model_container, data_container, - channelbase.prototypes[channelname], - Gbar, - 0, - 500.0) - ca_table = params['CaStim'] - ca_table.startTime = 0.0 - ca_table.stopTime = 175e-3 - vm_data = params['Vm'] - gk_data = params['Gk'] - ik_data = params['Ik'] - ca_data = params['Ca'] - moose.reinit() - print('Starting simulation', testId, 'for', simtime, 's') - moose.start(simtime) - print('Finished simulation') - vm_file = 'data/%s_Vm.dat' % (channelname) - gk_file = 'data/%s_Gk.dat' % (channelname) - ik_file = 'data/%s_Ik.dat' % (channelname) - ca_file = 'data/%s_Ca.dat' % (channelname) - tseries = np.array(range(len(vm_data.vector))) * simdt - print('Vm:', len(vm_data.vector), 'Gk', len(gk_data.vector), 'Ik', len(ik_data.vector)) - data = np.c_[tseries, vm_data.vector] - np.savetxt(vm_file, data) - print('Saved Vm in', vm_file) - data = np.c_[tseries, gk_data.vector] - np.savetxt(gk_file, data) - print('Saved Gk in', gk_file) - data = np.c_[tseries, ik_data.vector] - np.savetxt(ik_file, data) - print('Saved Ik in', ik_file) - np.savetxt(ca_file, data) - print('Saved [Ca2+] in', ca_file) - return params - - -class TestKAHP(ChannelTestBase): - channelname = 'KAHP' - params = run_cadep_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKAHP_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKAHP_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestKAHP_SLOWER(ChannelTestBase): - channelname = 'KAHP_SLOWER' - params = run_cadep_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKAHP_SLOWER_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKAHP_SLOWER_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestKAHP_DP(ChannelTestBase): - channelname = 'KAHP_DP' - params = run_cadep_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKAHP_DP_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKAHP_DP_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestKC(ChannelTestBase): - channelname = 'KC' - params = run_cadep_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKC_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKC_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -class TestKC_FAST(ChannelTestBase): - channelname = 'KC_FAST' - params = run_cadep_channel(channelname, 1e-9, simtime) - vm = np.array(params['Vm'].vector) - gk = np.array(params['Gk'].vector) - tseries = np.arange(0, len(vm), 1.0) * simdt - - def testKC_FAST_Vm_Neuron(self): - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - - def testKC_FAST_Gk_Neuron(self): - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.01) - - -if __name__ == '__main__': - unittest.main() - -# -# test_kchans.py ends here diff --git a/examples/traub_2005/py/test_nachans.py b/examples/traub_2005/py/test_nachans.py deleted file mode 100644 index b96eb1b..0000000 --- a/examples/traub_2005/py/test_nachans.py +++ /dev/null @@ -1,317 +0,0 @@ -# test_nachans.py --- -# -# Filename: test_nachans.py -# Description: -# Author: -# Maintainer: -# Created: Sat May 26 10:29:41 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:46:06 2016 (-0400) -# By: subha -# Update #: 417 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Unit tests for single Na channels -# -# - -# Change log: -# -# -# -# - -# Code: -from __future__ import print_function - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import numpy as np -import testutils -from testutils import * -from channel_test_util import ChannelTestBase, run_single_channel, compare_channel_data -import nachans - -simtime = 350e-3 -simdt = testutils.SIMDT -plotdt = testutils.PLOTDT - - -class TestNaF(ChannelTestBase): - channelname = 'NaF' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - - def testNaF_Vm_Moose(self): - print('Testing MOOSE Vm ...',) - err = compare_channel_data(self.vm, TestNaF.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF_Gk_Moose(self): - print('Testing MOOSE Gk ...',) - err = compare_channel_data(self.gk, TestNaF.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaF_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - -class TestNaF_TCR(ChannelTestBase): - channelname = 'NaF_TCR' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaF_TCR_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaF_TCR.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF_TCR_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaF_TCR.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaF_TCR_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF_TCR_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - - -class TestNaF2(ChannelTestBase): - channelname = 'NaF2' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaF2_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaF2.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK', end='') - - def testNaF2_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaF2.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaF2_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF2_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - - -class TestNaF2_nRT(ChannelTestBase): - channelname = 'NaF2_nRT' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaF2_nRT_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaF2_nRT.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF2_nRT_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaF2_nRT.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaF2_nRT_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaF2_nRT_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - -class TestNaP(ChannelTestBase): - channelname = 'NaP' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaP_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaP.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaP_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaP.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaP_Vm_Neuron(self): - print( 'Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaP_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - - -class TestNaPF(ChannelTestBase): - channelname = 'NaPF' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaPF_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaPF.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaPF_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaPF.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaPF_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaPF_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - - -class TestNaPF_SS(ChannelTestBase): - channelname = 'NaPF_SS' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaPF_SS_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaPF_SS.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaPF_SS_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaPF_SS.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaPF_SS_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaPF_SS_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - - -class TestNaPF_TCR(ChannelTestBase): - channelname = 'NaPF_TCR' - params = run_single_channel(channelname, 1e-9, simtime) - vm = np.asarray(params['Vm'].vector) - gk = np.asarray(params['Gk'].vector) - tseries = np.array(range(0, len(params['Vm'].vector))) * simdt - def testNaPF_TCR_Vm_Moose(self): - print('Testing MOOSE Vm ...', end='') - err = compare_channel_data(self.vm, TestNaPF_TCR.channelname, 'Vm', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaPF_TCR_Gk_Moose(self): - print('Testing MOOSE Gk ...', end='') - err = compare_channel_data(self.gk, TestNaPF_TCR.channelname, 'Gk', 'moose', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.05) - print('OK') - - def testNaPF_TCR_Vm_Neuron(self): - print('Testing NEURON Vm ...', end='') - data = np.c_[self.tseries, self.vm] - err = compare_channel_data(data, self.channelname, 'Vm', 'neuron', x_range=(simtime/10.0, simtime)) - self.assertLess(err, 0.01) - print('OK') - - def testNaPF_TCR_Gk_Neuron(self): - print('Testing NEURON Gk ...', end='') - data = np.c_[self.tseries, self.gk] - err = compare_channel_data(data, self.channelname, 'Gk', 'neuron', x_range=(simtime/10.0, simtime), plot=True) - self.assertLess(err, 0.05) - print('OK') - - -if __name__ == '__main__': - unittest.main() - # suite = unittest.TestLoader().loadTestsFromTestCase(TestNaPF) - # unittest.TextTestRunner(verbosity=2).run(suite) - -# -# test_nachans.py ends here diff --git a/examples/traub_2005/py/test_nontuftedrs.py b/examples/traub_2005/py/test_nontuftedrs.py deleted file mode 100644 index 7bb332c..0000000 --- a/examples/traub_2005/py/test_nontuftedrs.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_nontuftedrs.py --- -# -# Filename: test_nontuftedrs.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:05:45 2012 (+0530) -# By: subha -# Update #: 504 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestNontuftedRS(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'NontuftedRS' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_nontuftedrs.py ends here diff --git a/examples/traub_2005/py/test_nrt.py b/examples/traub_2005/py/test_nrt.py deleted file mode 100644 index ae6722c..0000000 --- a/examples/traub_2005/py/test_nrt.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_nrt.py --- -# -# Filename: test_nrt.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:12:17 2012 (+0530) -# By: subha -# Update #: 507 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestnRT(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'nRT' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_nrt.py ends here diff --git a/examples/traub_2005/py/test_singlecomp.py b/examples/traub_2005/py/test_singlecomp.py deleted file mode 100644 index decd56d..0000000 --- a/examples/traub_2005/py/test_singlecomp.py +++ /dev/null @@ -1,223 +0,0 @@ -# test_singlecomp.py --- -# -# Filename: test_singlecomp.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Tue Jul 17 21:01:14 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:46:37 2016 (-0400) -# By: subha -# Update #: 317 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Test the ion channels with a single compartment. -# -# - -# Change log: -# -# 2012-07-17 22:22:23 (+0530) Tested NaF2 and NaPF_SS against neuron -# test case. -# -# - -# Code: -from __future__ import print_function - -import os -os.environ['NUMPTHREADS'] = '1' -import uuid -import unittest -from datetime import datetime -import sys -sys.path.append('../../../python') - -import numpy as np -from matplotlib import pyplot as plt - - -import moose -from testutils import * -from nachans import * -from kchans import * -from archan import * -from cachans import * -from capool import * - -simdt = 0.25e-4 -plotdt = 0.25e-4 -simtime = 350e-3 - -erev = { - 'K': -100e-3, - 'Na': 50e-3, - 'Ca': 125e-3, - 'AR': -40e-3 - } - -channel_density = { - 'NaF2': 1500.0, - 'NaPF_SS': 1.5, - 'KDR_FS': 1000.0, - 'KC_FAST': 100.0, - 'KA': 300.0, - 'KM': 37.5, - 'K2': 1.0, - 'KAHP_SLOWER': 1.0, - 'CaL': 5.0, - 'CaT_A': 1.0, - 'AR': 2.5 -} - -compartment_propeties = { - 'length': 20e-6, - 'diameter': 2e-6 * 7.5, - 'initVm': -65e-3, - 'Em': -65e-3, - 'Rm': 5.0, - 'Cm': 9e-3, - 'Ra': 1.0, - 'specific': True} - -stimulus = [[100e-3, 50e-3, 3e-10], # delay[0], width[0], level[0] - [1e9, 0, 0]] - -def create_compartment(path, length, diameter, initVm, Em, Rm, Cm, Ra, specific=False): - comp = moose.Compartment(path) - comp.length = length - comp.diameter = diameter - comp.initVm = initVm - comp.Em = Em - if not specific: - comp.Rm = Rm - comp.Cm = Cm - comp.Ra = Ra - else: - sarea = np.pi * length * diameter - comp.Rm = Rm / sarea - comp.Cm = Cm * sarea - comp.Ra = 4.0 * Ra * length / (np.pi * diameter * diameter) - return comp - -def insert_channel(compartment, channeclass, gbar, density=False): - channel = moose.copy(channeclass.prototype, compartment)[0] - if not density: - channel.Gbar = gbar - else: - channel.Gbar = gbar * np.pi * compartment.length * compartment.diameter - moose.connect(channel, 'channel', compartment, 'channel') - return channel - -def insert_ca(compartment, phi, tau): - ca = moose.copy(CaPool.prototype, compartment)[0] - ca.B = phi / (np.pi * compartment.length * compartment.diameter) - ca.tau = tau - print( ca.path, ca.B, ca.tau) - for chan in moose.wildcardFind('%s/#[TYPE=HHChannel]' % (compartment.path)): - if chan.name.startswith('KC') or chan.name.startswith('KAHP'): - moose.connect(ca, 'concOut', chan, 'concen') - elif chan.name.startswith('CaL'): - moose.connect(chan, 'IkOut', ca, 'current') - else: - continue - moose.showfield(chan) - return ca - -class TestSingleComp(unittest.TestCase): - def setUp(self): - self.testId = uuid.uuid4().int - self.container = moose.Neutral('test%d' % (self.testId)) - self.model = moose.Neutral('%s/model' % (self.container.path)) - self.data = moose.Neutral('%s/data' % (self.container.path)) - self.soma = create_compartment('%s/soma' % (self.model.path), - **compartment_propeties) - self.tables = {} - tab = moose.Table('%s/Vm' % (self.data.path)) - self.tables['Vm'] = tab - moose.connect(tab, 'requestOut', self.soma, 'getVm') - for channelname, conductance in channel_density.items(): - chanclass = eval(channelname) - channel = insert_channel(self.soma, chanclass, conductance, density=True) - if issubclass(chanclass, KChannel): - channel.Ek = erev['K'] - elif issubclass(chanclass, NaChannel): - channel.Ek = erev['Na'] - elif issubclass(chanclass, CaChannel): - channel.Ek = erev['Ca'] - elif issubclass(chanclass, AR): - channel.Ek = erev['AR'] - tab = moose.Table('%s/%s' % (self.data.path, channelname)) - moose.connect(tab, 'requestOut', channel, 'getGk') - self.tables['Gk_'+channel.name] = tab - archan = moose.HHChannel(self.soma.path + '/AR') - archan.X = 0.0 - ca = insert_ca(self.soma, 2.6e7, 50e-3) - tab = moose.Table('%s/Ca' % (self.data.path)) - self.tables['Ca'] = tab - moose.connect(tab, 'requestOut', ca, 'getCa') - self.pulsegen = moose.PulseGen('%s/inject' % (self.model.path)) - moose.connect(self.pulsegen, 'output', self.soma, 'injectMsg') - tab = moose.Table('%s/injection' % (self.data.path)) - moose.connect(tab, 'requestOut', self.pulsegen, 'getOutputValue') - self.tables['pulsegen'] = tab - self.pulsegen.count = len(stimulus) - for ii in range(len(stimulus)): - self.pulsegen.delay[ii] = stimulus[ii][0] - self.pulsegen.width[ii] = stimulus[ii][1] - self.pulsegen.level[ii] = stimulus[ii][2] - setup_clocks(simdt, plotdt) - assign_clocks(self.model, self.data) - moose.reinit() - start = datetime.now() - moose.start(simtime) - end = datetime.now() - delta = end - start - print( 'Simulation of %g s finished in %g s' % (simtime, delta.seconds + delta.microseconds*1e-6)) - - - def testDefault(self): - vm_axis = plt.subplot(2,1,1) - ca_axis = plt.subplot(2,1,2) - try: - nrndata = np.loadtxt('../nrn/data/singlecomp_Vm.dat') - vm_axis.plot(nrndata[:,0], nrndata[:,1], label='Vm (mV) - nrn') - ca_axis.plot(nrndata[:,0], nrndata[:,2], label='Ca (mM) - nrn') - except IOError, e: - print( e) - tseries = np.linspace(0, simtime, len(self.tables['Vm'].vector)) * 1e3 - # plotcount = len(channel_density) + 1 - # rows = int(np.sqrt(plotcount) + 0.5) - # columns = int(plotcount * 1.0/rows + 0.5) - # print plotcount, rows, columns - # plt.subplot(rows, columns, 1) - vm_axis.plot(tseries, self.tables['Vm'].vector * 1e3, label='Vm (mV) - moose') - vm_axis.plot(tseries, self.tables['pulsegen'].vector * 1e12, label='inject (pA)') - ca_axis.plot(tseries, self.tables['Ca'].vector, label='Ca (mM) - moose') - vm_axis.legend() - ca_axis.legend() - # ii = 2 - # for key, value in self.tables.items(): - # if key.startswith('Gk'): - # plt.subplot(rows, columns, ii) - # plt.plot(tseries, value.vector, label=key) - # ii += 1 - # plt.legend() - plt.show() - data = np.vstack((tseries*1e-3, - self.tables['Vm'].vector, - self.tables['Ca'].vector)) - np.savetxt('data/singlecomp_Vm.dat', - np.transpose(data)) - -if __name__ == '__main__': - unittest.main() - -# -# test_singlecomp.py ends here diff --git a/examples/traub_2005/py/test_spinystellate.py b/examples/traub_2005/py/test_spinystellate.py deleted file mode 100644 index 694faaa..0000000 --- a/examples/traub_2005/py/test_spinystellate.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_spinystellate.py --- -# -# Filename: test_spinystellate.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 17:39:06 2012 (+0530) -# By: subha -# Update #: 492 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestSpinyStellate(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'SpinyStellate' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'ee' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_spinystellate.py ends here diff --git a/examples/traub_2005/py/test_supaxoaxonic.py b/examples/traub_2005/py/test_supaxoaxonic.py deleted file mode 100644 index 1365453..0000000 --- a/examples/traub_2005/py/test_supaxoaxonic.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_supaxoaxonic.py --- -# -# Filename: test_supaxoaxonic.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:22:52 2012 (+0530) -# By: subha -# Update #: 510 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestSupAxoaxonic(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'SupAxoaxonic' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_supaxoaxonic.py ends here diff --git a/examples/traub_2005/py/test_supbasket.py b/examples/traub_2005/py/test_supbasket.py deleted file mode 100644 index c200c0f..0000000 --- a/examples/traub_2005/py/test_supbasket.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_supbasket.py --- -# -# Filename: test_supbasket.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:26:43 2012 (+0530) -# By: subha -# Update #: 513 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestSupBasket(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'SupBasket' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_supbasket.py ends here diff --git a/examples/traub_2005/py/test_suplts.py b/examples/traub_2005/py/test_suplts.py deleted file mode 100644 index a3f4975..0000000 --- a/examples/traub_2005/py/test_suplts.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_suplts.py --- -# -# Filename: test_suplts.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:31:15 2012 (+0530) -# By: subha -# Update #: 502 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestSupLTS(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'SupLTS' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_suplts.py ends here diff --git a/examples/traub_2005/py/test_suppyrfrb.py b/examples/traub_2005/py/test_suppyrfrb.py deleted file mode 100644 index 2d214ca..0000000 --- a/examples/traub_2005/py/test_suppyrfrb.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_suppyrfrb.py --- -# -# Filename: test_suppyrfrb.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:33:56 2012 (+0530) -# By: subha -# Update #: 516 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestSupPyrFRB(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'SupPyrFRB' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_suppyrfrb.py ends here diff --git a/examples/traub_2005/py/test_suppyrrs.py b/examples/traub_2005/py/test_suppyrrs.py deleted file mode 100644 index e40e56c..0000000 --- a/examples/traub_2005/py/test_suppyrrs.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_suppyrrs.py --- -# -# Filename: test_suppyrrs.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:40:34 2012 (+0530) -# By: subha -# Update #: 517 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 0.05 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestSupPyrRS(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'SupPyrRS' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_suppyrrs.py ends here diff --git a/examples/traub_2005/py/test_tcr.py b/examples/traub_2005/py/test_tcr.py deleted file mode 100644 index b148bf6..0000000 --- a/examples/traub_2005/py/test_tcr.py +++ /dev/null @@ -1,101 +0,0 @@ -# test_tcr.py --- -# -# Filename: test_tcr.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:29:42 2016 (-0400) -# By: subha -# Update #: 530 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: -from __future__ import print_function -import unittest -from cell_test_util import setup_current_step_model, SingleCellCurrentStepTest -import testutils -import cells -import moose -from moose import utils -import pylab - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 300e-3 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestTCR(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'TCR' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - # def testVmSeriesPlot(self): - # self.runsim(simtime, pulsearray=self.pulse_array) - # self.plot_vm() - - def testVClamp(self): - clamp = moose.VClamp('%s/vclamp' % (self.model_container.path)) - moose.connect(clamp, 'currentOut', self.cell.soma, 'injectMsg') - moose.connect(self.cell.soma, 'VmOut', clamp, 'sensedIn') - self.pulsegen.delay[0] = 1e9 # disable current clamp - self.pulsegen = moose.PulseGen('%s/vclampCommand' % (self.model_container.path)) - self.pulsegen.delay[0] = 100e-3 - self.pulsegen.width[0] = 100e-3 - self.pulsegen.level[0] = -10e-3 - moose.connect(self.pulsegen, 'output', clamp, 'setCommand') - tab = moose.Table('%s/command' % (self.data_container.path)) - moose.connect(tab, 'requestOut', clamp, 'getCommand') - for ii in moose.wildcardFind('/##[TYPE=VClamp]'): - print(ii.path) - self.runsim(simtime) - print(tab, len(tab.vector)) - pylab.plot(pylab.linspace(0, simtime, len(tab.vector)), tab.vector, 'kx') - self.plot_vm() - - # def testChannelDensities(self): - # pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_tcr.py ends here diff --git a/examples/traub_2005/py/test_tuftedib.py b/examples/traub_2005/py/test_tuftedib.py deleted file mode 100644 index 53196b6..0000000 --- a/examples/traub_2005/py/test_tuftedib.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_tuftedib.py --- -# -# Filename: test_tuftedib.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Wed Jun 26 09:58:42 2013 (+0530) -# By: subha -# Update #: 522 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestTuftedIB(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'TuftedIB' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, 1000*plotdt, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_tuftedib.py ends here diff --git a/examples/traub_2005/py/test_tuftedrs.py b/examples/traub_2005/py/test_tuftedrs.py deleted file mode 100644 index 51815ec..0000000 --- a/examples/traub_2005/py/test_tuftedrs.py +++ /dev/null @@ -1,80 +0,0 @@ -# test_tuftedrs.py --- -# -# Filename: test_tuftedrs.py -# Description: -# Author: -# Maintainer: -# Created: Mon Jul 16 16:12:55 2012 (+0530) -# Version: -# Last-Updated: Thu Nov 8 18:49:03 2012 (+0530) -# By: subha -# Update #: 519 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: - -import unittest -from cell_test_util import SingleCellCurrentStepTest -import testutils -import cells -from moose import utils - -simdt = 5e-6 -plotdt = 0.25e-3 -simtime = 1.0 - - -# pulsearray = [[1.0, 100e-3, 1e-9], -# [0.5, 100e-3, 0.3e-9], -# [0.5, 100e-3, 0.1e-9], -# [0.5, 100e-3, -0.1e-9], -# [0.5, 100e-3, -0.3e-9]] - - - -class TestTuftedRS(SingleCellCurrentStepTest): - def __init__(self, *args, **kwargs): - self.celltype = 'TuftedRS' - SingleCellCurrentStepTest.__init__(self, *args, **kwargs) - self.pulse_array = [(100e-3, 100e-3, 1e-9), - (1e9, 0, 0)] - # self.solver = 'hsolve' - self.simdt = simdt - self.plotdt = plotdt - - def setUp(self): - SingleCellCurrentStepTest.setUp(self) - - def testVmSeriesPlot(self): - self.runsim(simtime, pulsearray=self.pulse_array) - self.plot_vm() - - def testChannelDensities(self): - pass - # equal = compare_cell_dump(self.dump_file, '../nrn/'+self.dump_file) - # self.assertTrue(equal) - - -if __name__ == '__main__': - unittest.main() - - - -# -# test_tuftedrs.py ends here diff --git a/examples/traub_2005/py/testutils.py b/examples/traub_2005/py/testutils.py deleted file mode 100644 index b3d6b68..0000000 --- a/examples/traub_2005/py/testutils.py +++ /dev/null @@ -1,375 +0,0 @@ -# test_utils.py --- -# -# Filename: test_utils.py -# Description: -# Author: -# Maintainer: -# Created: Sat May 26 10:41:37 2012 (+0530) -# Version: -# Last-Updated: Sat Aug 6 15:45:51 2016 (-0400) -# By: subha -# Update #: 414 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# - -# Code: -from __future__ import print_function - -import os -os.environ['NUMPTHREADS'] = '1' -import sys -sys.path.append('../../../python') -import uuid -import numpy as np -from matplotlib import pyplot as plt -import unittest - -import moose -from moose import utils as mutils -import config -import channelbase - -INITCLOCK = 0 -ELECCLOCK = 1 -CHANCLOCK = 2 -POOLCLOCK = 3 -LOOKUPCLOCK = 6 -STIMCLOCK = 7 -PLOTCLOCK = 8 - -SIMDT = 5e-6 -PLOTDT = 0.25e-3 - -lib = moose.Neutral(config.modelSettings.libpath) - -def setup_clocks(simdt, plotdt): - print( 'Setting up clocks: simdt', simdt, 'plotdt', plotdt) - moose.setClock(INITCLOCK, simdt) - moose.setClock(ELECCLOCK, simdt) - moose.setClock(CHANCLOCK, simdt) - moose.setClock(POOLCLOCK, simdt) - moose.setClock(LOOKUPCLOCK, simdt) - moose.setClock(STIMCLOCK, simdt) - moose.setClock(PLOTCLOCK, plotdt) - moose.le('/clock') - - -def assign_clocks(model_container, data_container, solver='euler'): - """Assign clockticks to elements. - - Parameters - ---------- - model_container: element - - All model components are under this element. The model elements - are assigned clocks as required to maintain the right update - sequence. - - INITCLOCK = 0 calls `init` method in Compartments - - ELECCLOCK = 1 calls `process` method of Compartments - - CHANCLOCK = 2 calls `process` method for HHChannels - - POOLCLOCK = 3 is not used in electrical simulation - - LOOKUPCLOCK = 6 is not used in these simulations. - - STIMCLOCK = 7 calls `process` method in stimulus objects like - PulseGen. - - data_container: element - All data recording tables are under this element. They are - assigned PLOTCLOCK, the clock whose update interval is plotdt. - - PLOTCLOCK = 8 calls `process` method of Table elements under - data_container - - """ - moose.useClock(STIMCLOCK, - model_container.path+'/##[TYPE=PulseGen]', - 'process') - moose.useClock(PLOTCLOCK, - data_container.path+'/##[TYPE=Table]', - 'process') - if solver == 'hsolve': - for neuron in moose.wildcardFind('%s/##[TYPE=Neuron]'): - solver = moose.HSolve(neuron.path+'/solve') - solver.dt = moose.element('/clock/tick[0]').dt - solver.target = neuron.path - moose.useClock(INITCLOCK, - model_container.path+'/##[TYPE=HSolve]', - 'process') - else: - moose.useClock(INITCLOCK, - model_container.path+'/##[TYPE=Compartment]', - 'init') - moose.useClock(ELECCLOCK, - model_container.path+'/##[TYPE=Compartment]', - 'process') - moose.useClock(CHANCLOCK, - model_container.path+'/##[TYPE=HHChannel]', - 'process') - moose.useClock(POOLCLOCK, - model_container.path+'/##[TYPE=CaConc]', - 'process') - -def step_run(simtime, steptime, verbose=True): - """Run the simulation in steps of `steptime` for `simtime`.""" - clock = moose.Clock('/clock') - if verbose: - print( 'Starting simulation for', simtime) - while clock.currentTime < simtime - steptime: - moose.start(steptime) - if verbose: - print( 'Simulated till', clock.currentTime, 's') - remaining = simtime - clock.currentTime - if remaining > 0: - if verbose: - print( 'Running the remaining', remaining, 's') - moose.start(remaining) - if verbose: - print( 'Finished simulation') - - -def make_testcomp(containerpath): - comp = moose.Compartment('%s/testcomp' % (containerpath)) - comp.Em = -65e-3 - comp.initVm = -65e-3 - comp.Cm = 1e-12 - comp.Rm = 1e9 - comp.Ra = 1e5 - return comp - -def make_pulsegen(containerpath): - pulsegen = moose.PulseGen('%s/testpulse' % (containerpath)) - pulsegen.firstLevel = 1e-12 - pulsegen.firstDelay = 50e-3 - pulsegen.firstWidth = 100e-3 - pulsegen.secondLevel = -1e-12 - pulsegen.secondDelay = 150e-3 - pulsegen.secondWidth = 100e-3 - pulsegen.count = 3 - pulsegen.delay[2] = 1e9 - return pulsegen - - -def setup_single_compartment(model_container, data_container, channel_proto, Gbar): - """Setup a single compartment with a channel - - Parameters - ---------- - model_container: element - The model compartment is created under this element - - data_container: element - The tables to record data are created under this - - channel_proto: element - Channel prototype in library - - Gbar: float - Maximum conductance density of the channel - - """ - comp = make_testcomp(model_container.path) - channel = moose.copy(channel_proto, comp, channel_proto.name)[0] - moose.connect(channel, 'channel', comp, 'channel') - channel.Gbar = Gbar - pulsegen = make_pulsegen(model_container.path) - moose.connect(pulsegen, 'output', comp, 'injectMsg') - vm_table = moose.Table('%s/Vm' % (data_container.path)) - moose.connect(vm_table, 'requestOut', comp, 'getVm') - gk_table = moose.Table('%s/Gk' % (data_container.path)) - moose.connect(gk_table, 'requestOut', channel, 'getGk') - ik_table = moose.Table('%s/Ik' % (data_container.path)) - moose.connect(ik_table, 'requestOut', channel, 'getIk') - return {'compartment': comp, - 'stimulus': pulsegen, - 'channel': channel, - 'Vm': vm_table, - 'Gk': gk_table, - 'Ik': ik_table} - -def insert_hhchannel(compartment, channelclass, gbar): - channel = moose.copy(channelclass.prototype, compartment) - channel[0].Gbar = gbar - moose.connect(channel, 'channel', compartment, 'channel') - return channel[0] - -def compare_data_arrays(left, right, relative='maxw', plot=False, x_range=None): - """Compare two data arrays and return some measure of the - error. - - The arrays must have the same number of dimensions (1 or 2) and - represent the same range of x values. In case they are 1 - dimensional, we take x values as relative position of that data - point in the total x-range. - - We interpolate the y values for the x-values of the series with - lower resolution using the heigher resolution series as the - interpolation table. - - The error is calculated as the maximum difference between the - interpolated values and the actual values in the lower resolution - array divided by the difference between the maximum and minimum y - values of both the series. - - If plot is True, left, right and their difference at common points - are plotted. - - relative: `rms` - return root mean square of the error values - `taxicab` - mean of the absolute error values - `maxw` - max(abs(error))/(max(y) - min(y)) - `meany` - rms(error)/mean(y) - - x_range : (minx, maxx) range of X values to consider for comparison - - """ - if len(left.shape) != len(right.shape): - print( left.shape, right.shape) - raise ValueError('Arrays to be compared must have same dimensions.') - # y is the intrepolation result for x array using xp and fp when xp and x do not match. - # xp and fp are interpolation table's independent and dependent variables - # yp is a view of the original y values - x = None - y = None - xp = None - fp = None - yp = None - # arbitrarily keep series with more datapoint as left - if left.shape[0] < right.shape[0]: - tmp = left - left = right - right = tmp - if len(right.shape) == 1: - x = np.arange(right.shape[0]) * 1.0 / right.shape[0] - yp = right - xp = np.arange(left.shape[0]) * 1.0 / left.shape[0] - fp = left - elif len(right.shape) == 2: - x = right[:,0] - yp = right[:,1] - xp = left[:,0] - fp = left[:,1] - else: - raise ValueError('Cannot handle more than 2 dimensional arrays.') - if left.shape[0] != right.shape[0]: - print( 'Array sizes not matching: (%d <> %d) - interpolating' % (left.shape[0], right.shape[0])) - y = np.interp(x, xp, fp) - else: # assume we have the same X values when sizes are the same - y = np.array(fp) - if x_range: - indices = np.nonzero((x > x_range[0]) & (x <= x_range[1]))[0] - y = np.array(y[indices]) - yp = np.array(yp[indices]) - x = np.array(x[indices]) - # We update xp and fp to have the same plotting x-range - indices = np.nonzero((xp > x_range[0]) & (xp <= x_range[1]))[0] - xp = xp[indices] - fp = fp[indices] - err = y - yp - print( min(err), max(err), min(y), max(y), min(yp), max(yp)) - # I measure a conservative relative error as maximum of all the - # errors between pairs of points with - all_y = np.r_[y, yp] - if plot: - plt.plot(x, yp, 'b-.', label='right') - plt.plot(xp, fp, 'g--', label='left') - plt.plot(x, err, 'r:', label='error') - plt.legend() - plt.show() - if relative == 'rms': - return np.sqrt(np.mean(err**2)) - elif relative == 'taxicab': - return np.mean(np.abs(err)) - elif relative == 'maxw': - return max(np.abs(err))/(max(all_y) - min(all_y)) - elif relative == 'meany': - return np.sqrt(np.mean(err**2)) / np.mean(all_y) - else: - return err - -import csv - -def compare_cell_dump(left, right, rtol=1e-3, atol=1e-8, row_header=True, col_header=True): - """This is a utility function to compare various compartment - parameters for a single cell model dumped in csv format using - NEURON and MOOSE.""" - print( 'Comparing:', left, 'with', right) - ret = True - left_file = open(left, 'rb') - right_file = open(right, 'rb') - left_reader = csv.DictReader(left_file, delimiter=',') - right_reader = csv.DictReader(right_file, delimiter=',') - lheader = list(left_reader.fieldnames) - lheader.remove('comp') - lheader = sorted(lheader) - rheader = list(right_reader.fieldnames) - rheader.remove('comp') - rheader = sorted(rheader) - if len(lheader) != len(rheader): - print( 'Column number mismatch: left %d <-> right %d' % (len(lheader), len(rheader))) - return False - for ii in range(len(lheader)): - if lheader[ii] != rheader[ii]: - print( ii, '-th column name mismatch:', lheader[ii], '<->', rheader[ii]) - return False - index = 2 - left_end = False - right_end = False - while True: - try: - left_row = left_reader.next() - except StopIteration: - left_end = True - try: - right_row = right_reader.next() - except StopIteration: - right_end = True - if left_end and not right_end: - print( left, 'run out of line after', index, 'rows') - return False - if right_end and not left_end: - print( right, 'run out of line after', index, 'rows') - return False - if left_end and right_end: - return ret - if len(left_row) != len(right_row): - print( 'No. of columns differ: left - ', len(left_row), 'right -', len(right_row)) - ret = False - break - for key in lheader: - try: - left = float(left_row[key]) - right = float(right_row[key]) - if not np.allclose(float(left), float(right), rtol=rtol, atol=atol): - print( 'Mismatch in row:%s, column:%s. Values: %g <> %g' % (index, key, left, right)) - ret = False - except ValueError, e: - print( e) - print( 'Row:', index, 'Key:', key, left_row[key], right_row[key]) - index = index + 1 - return ret - - - - - -# -# test_utils.py ends here diff --git a/examples/traub_2005/py/trbconfig.py b/examples/traub_2005/py/trbconfig.py deleted file mode 100644 index 63814c3..0000000 --- a/examples/traub_2005/py/trbconfig.py +++ /dev/null @@ -1,150 +0,0 @@ -# config.py --- -# -# Filename: config.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Created: Fri May 4 14:46:29 2012 (+0530) -# Version: -# Last-Updated: Fri May 4 21:05:04 2012 (+0530) -# By: Subhasis Ray -# Update #: 140 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# - -# Code: - -from datetime import datetime -import ConfigParser as configparser -import logging -import numpy -import os - -# runtime info -timestamp = datetime.now() -mypid = os.getpid() -# Unit Conversion Factors -uS = 1e-6 # micro Siemens to Siemens -ms = 1e-3 # milli second to second -mV = 1e-3 # milli Volt to Volt - -# limits on HH-gate tables -vmin = -120 * mV -vmax = 40 * mV -ndivs = 640 -dv = (vmax - vmin)/ndivs - -# element to contain prototypes -libpath = '/library' - -# defined channels to be initialized in prototypes -channel_names = ['AR', - 'CaPool', - 'CaL', - 'CaT', - 'CaT_A', - 'K2', - 'KA', - 'KA_IB', - 'KAHP', - 'KAHP_DP', - 'KAHP_SLOWER', - 'KC', - 'KC_FAST', - 'KDR', - 'KDR_FS', - 'KM', - 'NaF', - 'NaF2', - 'NaF_TCR', - 'NaP', - 'NaPF', - 'NaPF_SS', - 'NaPF_TCR', - 'NaF2_nRT'] - -############################################ -# Parse configuration file -############################################ -_parser = configparser.SafeConfigParser() -_parser.optionxform = str -_parser.read(['defaults.ini', 'custom.ini']) - -# seed for random number generator in MOOSE -moose_rngseed = _parser.get('numeric', 'moose_rngseed') - -# seed for random number generator in numpy -numpy_rngseed = _parser.get('numeric', 'numpy_rngseed') -# flag if the simulation uses stochastic synchans -stochastic = _parser.get('numeric', 'stochastic') in ['Yes', 'yes', 'True', 'true', '1'] -reseed = _parser.get('numeric', 'reseed') in ['Yes', 'yes', 'True', 'true', '1'] -solver = _parser.get('numeric', 'solver') -simtime = float(_parser.get('scheduling', 'simtime')) -simdt = float(_parser.get('scheduling', 'simdt')) -plotdt = float(_parser.get('scheduling', 'plotdt')) - -###################################################################### -# configuration for saving simulation data -###################################################################### -datadir = os.path.join(_parser.get('directories', 'data'), - timestamp.strftime('%Y_%m_%d')) -if not os.access(datadir, os.F_OK): - os.mkdirs(datadir) -protodir = _parser.get('directories', 'proto') -datafileprefix = 'data' -netfileprefix = 'network' -filesuffix = '_%s_%d' % (timestamp.strftime('%Y%m%d_%H%M%S'), mypid) -datafilepath = os.path.join(datadir, datafileprefix + filesuffix + '.h5') -netfilepath = os.path.join(datadir, netfileprefix + filesuffix + '.h5') - -##################################################################### -# Logging -##################################################################### -logfileprefix = 'traub2005' -logfilename = os.path.join(datadir, logfileprefix + filesuffix + '.log') -loglevel = int(_parser.get('logging', 'level')) -logger = logging.getLogger(logfileprefix) -logging.basicConfig(filename=logfilename, - level=loglevel, - format='%(asctime)s \ - %(levelname)s \ - %(name)s \ - %(filename)s \ - %(funcName)s: \ - %(message)s', - filemode='w') -benchmark = int(_parser.get('logging', 'benchmark')) -benchmarker = logging.getLogger(logfileprefix + '.benchmark') -benchmarker.setLevel(logging.DEBUG) - -_inited = False -def init(): - if _inited: - return - _inited = True - if reseed: - if moose_rngseed: - moose.seed(int(moose_rngseed)) - else: - moose.seed(0) - if numpy_rngseed: - numpy.random.seed(int(numpy_rngseed)) - -init() - -# -# config.py ends here diff --git a/examples/traub_2005/py/vclamptest.py b/examples/traub_2005/py/vclamptest.py deleted file mode 100644 index 1fabd7e..0000000 --- a/examples/traub_2005/py/vclamptest.py +++ /dev/null @@ -1,157 +0,0 @@ -# vclamptest.py --- -# -# Filename: vclamptest.py -# Description: -# Author: -# Maintainer: -# Created: Wed Feb 6 16:25:52 2013 (+0530) -# Version: -# Last-Updated: Tue Jun 11 17:30:34 2013 (+0530) -# By: subha -# Update #: 148 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Set up a voltage clamp experiment with specified series of clamping -# voltage values -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -import numpy as np -import sys -sys.path.append('../../../python') -import moose -from moose import utils -# import cells - -def vclamptest(compartment, vclamp, duration=50e-3, delay=150e-3, solver='ee', vhold=None, mc=None, dc=None, simdt=1e-5, plotdt=0.25e-3): - """Do a series of voltage clamp experiemnts on compartment. - - parameters: - - compartment: Compartment object to be voltage clamped - - vclamp: array of clamping voltage values. - - duration: duration of each clamp - - delay: delay between successive application of clamping voltages - - vhold: holding voltage, If None, the Em of the - compartment is used. - - mc: model container, the vclamp object will be created inside - mc/electronics. If None, we use compartment.parent.parent - - dc: data container, the data recording tables will be created - inside it. If None, we use compartment.parent.parent - """ - if vhold is None: - vhold = compartment.Em - if mc is None: - mc = compartment.parent.parent - if dc is None: - dc = compartment.parent.parent - electronics = moose.Neutral('%s/electronics' % (mc.path)) - command = moose.PulseGen('%s/command_source' % (electronics.path)) - clamp = moose.VClamp('%s/vclamp' % (electronics.path)) - moose.connect(command, 'output', clamp, 'commandIn') - moose.connect(compartment, 'VmOut', clamp, 'sensedIn') - moose.connect(clamp, 'currentOut', compartment, 'injectMsg') - simtime = 0 - command.count = len(vclamp) - command.baseLevel = vhold - for ii, clamping_voltage in enumerate(vclamp): - simtime += delay + duration - command.delay[ii] = delay - command.width[ii] = duration - command.level[ii] = clamping_voltage - injected = moose.Table('%s/Iinject' % (dc.path)) - moose.connect(injected, 'requestData', clamp, 'getCurrent') - voltage = moose.Table('%s/Vcommand' % (dc.path)) - moose.connect(voltage, 'requestData', command, 'getOutputValue') - vm = moose.Table('%s/Vm' % (dc.path)) - moose.connect(vm, 'requestData', compartment, 'getVm') - utils.resetSim([mc.path, dc.path], simdt, plotdt, simmethod=solver) - moose.start(simtime) - ivec = np.asarray(injected.vector) - vvec = np.asarray(voltage.vector) - vmvec = np.asarray(vm.vector) - ts = np.linspace(0, simtime, len(vvec)) - sidx = np.nonzero(np.diff(vvec) > 0)[0] - eidx = np.nonzero(np.diff(vvec) < 0)[0] - iarrays = [] - for ii in range(len(vclamp)): - iarrays.append(ivec[sidx[ii]: eidx[ii]].copy()) - return { - "Vm": vmvec, - "commandVoltage": vvec, - "inject": ivec, - "ts": ts, - "injectArrays": iarrays} - - -from matplotlib import pyplot as plt -sys.path.append('../../squid') -from squid import SquidAxon - - -def test(): - mc = moose.Neutral('model') - dc = moose.Neutral('data') - nrn = moose.Neuron('%s/nrn' % (mc.path)) - x = SquidAxon('%s/squid' % (nrn.path)) - clampv = [10.0, 20.0, 30.0, 40.0, 50.0] - data = vclamptest(x, clampv, duration=20.0, delay=100.0, vhold=0.0, mc=mc, dc=dc, simdt=1e-2, plotdt=1e-2, solver='hsolve') - plt.subplot(311) - plt.title('Membrane potential throughout experiment') - plt.plot(data['ts'], data['Vm'], label='Vm') - plt.legend() - plt.subplot(312) - plt.title('Injection current throughout experiment') - plt.plot(data['ts'], data['inject'], label='Inject') - plt.legend() - plt.subplot(313) - plt.title('Injection currents for different clamp volatge values') - for ii, inject in enumerate(data['injectArrays']): - plt.plot(inject, label='V = %g' % (clampv[ii])) - plt.legend() - plt.show() - -if __name__ == '__main__': - test() - - - - -# -# vclamptest.py ends here diff --git a/examples/tutorials/ChemicalBistables/19085.cspace b/examples/tutorials/ChemicalBistables/19085.cspace deleted file mode 100644 index 1d2cf35..0000000 --- a/examples/tutorials/ChemicalBistables/19085.cspace +++ /dev/null @@ -1 +0,0 @@ -M101: |DabX|Jbca| 5.59269 0.0157641 0.172865 0.361005 4.72728 1.08558 0.0982933 \ No newline at end of file diff --git a/examples/tutorials/ChemicalBistables/doseResponse.py b/examples/tutorials/ChemicalBistables/doseResponse.py deleted file mode 100644 index 30828fa..0000000 --- a/examples/tutorials/ChemicalBistables/doseResponse.py +++ /dev/null @@ -1,122 +0,0 @@ -## Makes and plots the dose response curve for bistable models -## Author: Sahil Moza -## June 26, 2014 - -import moose -import pylab -import numpy as np -from matplotlib import pyplot as plt - -def setupSteadyState(simdt,plotDt): - - ksolve = moose.Ksolve( '/model/kinetics/ksolve' ) - stoich = moose.Stoich( '/model/kinetics/stoich' ) - stoich.compartment = moose.element('/model/kinetics') - - stoich.ksolve = ksolve - #ksolve.stoich = stoich - stoich.path = "/model/kinetics/##" - state = moose.SteadyState( '/model/kinetics/state' ) - - #### Set clocks here - moose.useClock(4, "/model/kinetics/##[]", "process") - moose.setClock(4, float(simdt)) - moose.setClock(5, float(simdt)) - moose.useClock(5, '/model/kinetics/ksolve', 'process' ) - moose.useClock(8, '/model/graphs/#', 'process' ) - moose.setClock(8, float(plotDt)) - - moose.reinit() - - state.stoich = stoich - state.showMatrices() - state.convergenceCriterion = 1e-8 - - return ksolve, state - -def parseModelName(fileName): - pos1=fileName.rfind('/') - pos2=fileName.rfind('.') - directory=fileName[:pos1] - prefix=fileName[pos1+1:pos2] - suffix=fileName[pos2+1:len(fileName)] - return directory, prefix, suffix - -# Solve for the steady state -def getState( ksolve, state, vol): - scale = 1.0 / ( vol * 6.022e23 ) - state.randomInit() # Removing random initial condition to systematically make Dose reponse curves. - moose.start( 2.0 ) # Run the model for 2 seconds. - state.settle() - - vector = [] - for x in ksolve.nVec[0]: - vector.append( x * scale) - moose.start( 10.0 ) # Run model for 10 seconds, just for display - failedSteadyState = any([np.isnan(x) for x in vector]) - - if not (failedSteadyState): - return state.stateType, state.solutionStatus, vector - - -def main(): - # Setup parameters for simulation and plotting - simdt= 1e-2 - plotDt= 1 - - # Factors to change in the dose concentration in log scale - factorExponent = 10 ## Base: ten raised to some power. - factorBegin = -20 - factorEnd = 21 - factorStepsize = 1 - factorScale = 10.0 ## To scale up or down the factors - - # Load Model and set up the steady state solver. - # model = sys.argv[1] # To load model from a file. - model = './19085.cspace' - modelPath, modelName, modelType = parseModelName(model) - outputDir = modelPath - - modelId = moose.loadModel(model, 'model', 'ee') - dosePath = '/model/kinetics/b/DabX' # The dose entity - - ksolve, state = setupSteadyState( simdt, plotDt) - vol = moose.element( '/model/kinetics' ).volume - iterInit = 1000 - solutionVector = [] - factorArr = [] - - enz = moose.element(dosePath) - init = enz.kcat # Dose parameter - - # Change Dose here to . - for factor in range(factorBegin, factorEnd, factorStepsize ): - scale = factorExponent ** (factor/factorScale) - enz.kcat = init * scale - print(factor) - for num in range(iterInit): - stateType, solStatus, vector = getState( ksolve, state, vol) - if solStatus == 0: - solutionVector.append(vector[0]/sum(vector)) - factorArr.append(scale) - - joint = np.array([factorArr, solutionVector]) - joint = joint[:,joint[1,:].argsort()] - - # Plot dose response. - fig0 = plt.figure() - pylab.semilogx(joint[0,:],joint[1,:],marker="o",label = 'concA') - pylab.xlabel('Dose') - pylab.ylabel('Response') - pylab.suptitle('Dose-Reponse Curve for a bistable system') - - pylab.legend(loc=3) - #plt.savefig(outputDir + "/" + modelName +"_doseResponse" + ".png") - plt.show() - #plt.close(fig0) - quit() - - - -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalBistables/findSteadyState.py b/examples/tutorials/ChemicalBistables/findSteadyState.py deleted file mode 100644 index b53c94b..0000000 --- a/examples/tutorials/ChemicalBistables/findSteadyState.py +++ /dev/null @@ -1,123 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2013 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -# This example sets up the kinetic solver and steady-state finder, on -# a bistable model. -# It looks for the fixed points 100 times, as follows: -# - Set up the random initial condition that fits the conservation laws -# - Run for 2 seconds. This should not be mathematically necessary, but -# for obscure numerical reasons it makes it much more likely that the -# steady state solver will succeed in finding a state. -# - Find the fixed point -# - Print out the fixed point vector and various diagnostics. -# - Run for 10 seconds. This is completely unnecessary, and is done here -# just so that the resultant graph will show what kind of state has been -# found. -# After it does all this, the program runs for 100 more seconds on the last -# found fixed point (which turns out to be a saddle node), then -# is hard-switched in the script to the first attractor basin from which -# it runs for another 100 seconds till it settles there, and then -# is hard-switched yet again to the second attractor and runs for 100 -# seconds. -# Looking at the output you will see many features of note: -# - the first attractor (stable point) and the saddle point -# (unstable fixed point) are both found quite often. But the second -# attractor is found just once. Has a very small basin of attraction. -# - The values found for each of the fixed points match well with the -# values found by running the system to steady-state at the end. -# - There are a large number of failures to find a fixed point. These are -# found and reported in the diagnostics. They show up on the plot -# as cases where the 10-second runs are not flat. -# -# If you wanted to find fixed points in a production model, you would -# not need to do the 10-second runs, and you would need to eliminate the -# cases where the state-finder failed. Then you could identify the good -# points and keep track of how many of each were found. -# There is no way to guarantee that all fixed points have been found using -# this algorithm! -# You may wish to sample concentration space logarithmically rather than -# linearly. - -import math -import pylab -import numpy -import moose - -def displayPlots(): - for x in moose.wildcardFind( '/model/graphs/conc#/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) #sec - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -def getState( ksolve, state ): - state.randomInit() - moose.start( 0.1 ) # Run the model for 2 seconds. - state.settle() - ''' - scale = 1.0 / ( 1e-15 * 6.022e23 ) - for x in ksolve.nVec[0]: - print x * scale, - # print ksolve.nVec[0] - print state.nIter, state.status, state.stateType, state.nNegEigenvalues, state.nPosEigenvalues, state.solutionStatus - ''' - moose.start( 20.0 ) # Run model for 10 seconds, just for display - - -def main(): - # Schedule the whole lot - moose.setClock( 4, 0.1 ) # for the computational objects - moose.setClock( 5, 0.2 ) # clock for the solver - moose.setClock( 8, 1.0 ) # for the plots - # The wildcard uses # for single level, and ## for recursive. - #compartment = makeModel() - moose.loadModel( '../../genesis/M1719.g', '/model', 'ee' ) - compartment = moose.element( 'model/kinetics' ) - compartment.name = 'compartment' - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - #ksolve.stoich = stoich - stoich.path = "/model/compartment/##" - state = moose.SteadyState( '/model/compartment/state' ) - moose.useClock( 5, '/model/compartment/ksolve', 'process' ) - moose.useClock( 8, '/model/graphs/#', 'process' ) - - moose.reinit() - state.stoich = stoich - #state.showMatrices() - state.convergenceCriterion = 1e-7 - - for i in range( 0, 50 ): - getState( ksolve, state ) - - moose.start( 100.0 ) # Run the model for 100 seconds. - - b = moose.element( '/model/compartment/b' ) - c = moose.element( '/model/compartment/c' ) - - # move most molecules over to b - b.conc = b.conc + c.conc * 0.95 - c.conc = c.conc * 0.05 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # move most molecules back to a - c.conc = c.conc + b.conc * 0.95 - b.conc = b.conc * 0.05 - moose.start( 100.0 ) # Run the model for 100 seconds. - - # Iterate through all plots, dump their contents to data.plot. - displayPlots() - - quit() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalBistables/mapkFB.png b/examples/tutorials/ChemicalBistables/mapkFB.png deleted file mode 100644 index 62a1d730e828df26443ac4ed16ae2cf77d14c359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155914 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⁢6Xb*2sjAn?6e-F2Y*_MuRA*0AdGTg0!lx&N&c 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 Q$p8QV07*qoM6N<$f{K)+djJ3c diff --git a/examples/tutorials/ChemicalBistables/mapkFB.py b/examples/tutorials/ChemicalBistables/mapkFB.py deleted file mode 100644 index 7770f40..0000000 --- a/examples/tutorials/ChemicalBistables/mapkFB.py +++ /dev/null @@ -1,80 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - -import moose -import matplotlib.pyplot as plt -import matplotlib.image as mpimg -import pylab -import numpy -import sys - -def main(): - """ - This example illustrates loading, and running a kinetic model - for a bistable positive feedback system, defined in kkit format. - This is based on Bhalla, Ram and Iyengar, Science 2002. - - The core of this model is a positive feedback loop comprising of - the MAPK cascade, PLA2, and PKC. It receives PDGF and Ca2+ as - inputs. - - This model is quite a large one and due to some stiffness in its - equations, it runs somewhat slowly. - - The simulation illustrated here shows how the model starts out in - a state of low activity. It is induced to 'turn on' when a - a PDGF stimulus is given for 400 seconds. - After it has settled to the new 'on' state, model is made to - 'turn off' - by setting the system calcium levels to zero for a while. This - is a somewhat unphysiological manipulation! - """ - solver = "gsl" # Pick any of gsl, gssa, ee.. - #solver = "gssa" # Pick any of gsl, gssa, ee.. - mfile = '../../genesis/acc35.g' - runtime = 2000.0 - if ( len( sys.argv ) == 2 ): - solver = sys.argv[1] - modelId = moose.loadModel( mfile, 'model', solver ) - # Increase volume so that the stochastic solver gssa - # gives an interesting output - compt = moose.element( '/model/kinetics' ) - compt.volume = 5e-19 - - moose.reinit() - moose.start( 500 ) - moose.element( '/model/kinetics/PDGFR/PDGF' ).concInit = 0.0001 - moose.start( 400 ) - moose.element( '/model/kinetics/PDGFR/PDGF' ).concInit = 0.0 - moose.start( 2000 ) - moose.element( '/model/kinetics/Ca' ).concInit = 0.0 - moose.start( 500 ) - moose.element( '/model/kinetics/Ca' ).concInit = 0.00008 - moose.start( 2000 ) - - # Display all plots. - img = mpimg.imread( 'mapkFB.png' ) - fig = plt.figure( figsize=(12, 10 ) ) - png = fig.add_subplot( 211 ) - imgplot = plt.imshow( img ) - ax = fig.add_subplot( 212 ) - x = moose.wildcardFind( '/model/#graphs/conc#/#' ) - t = numpy.arange( 0, x[0].vector.size, 1 ) * x[0].dt - ax.plot( t, x[0].vector, 'b-', label=x[0].name ) - ax.plot( t, x[1].vector, 'c-', label=x[1].name ) - ax.plot( t, x[2].vector, 'r-', label=x[2].name ) - ax.plot( t, x[3].vector, 'm-', label=x[3].name ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Time (seconds)' ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalBistables/propBis.png b/examples/tutorials/ChemicalBistables/propBis.png deleted file mode 100644 index 27ac875c33b02dc27db9b8a6ac505cbf98c936c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32574 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 J0OEiXAOTRL5?0L!>g-XyI3tdXD5A-4|w z6U9hwd#6qwsl9i!IaR0NdK* zt`z%i3mU zeM^Oib7-?W3XBlTw=;>=zHO6&3fV7bn)$&voT49QmmcHi_VJNF3bDle9^HbdgPMmp z&Q+;{EB*bLwAY>b#MnuDz4uJF%mr^*sWU`xIQG1>Ng(mtIXUb{1@{ACkN#z>^~*6n z1h=vSa6W?}MxCrT>#a*qmbRZge7K%vCTDesE5<%wQ!K}y-`iTJ!iGwfF16p7KjO`= zr`8X(6z$(+U`3V1uWOv^sZa`PEM2eNQzd83oEdwLR6ZUoyfXomN*j2J_A{(-x}Uf| zuj;E%_WN4Zw>DiHe9n3!vXFJG9KKfPYCeW1tqv}o7lJ>qcDCwu!UI7_$Ho!%W1w4r z&O;VMwU8QJ{UmzfSyP=KcN*)1!vQ4~%A~UU8Yoh5g;Mc-6^Arg#_%hDJ3s3j_wU&< znN;zmrD;@eVUn2nUEisp+~p8`QWae!GmWpaalkqTlMD-&&{c$Fvim$QRY%2H0=tvVec|+e%MIKW;B~> zoDN8qW!QZ4ahQ!mL5ov!Ij^;M`vM*js(Bw5F!G{9+VnKhApL2iQDN)c)U6o(Es~U@ z+^=iVc}s{{_n5xhlx@^3h@Y@K6KJ|HM4>u2GG2FY?f6*L^ClmkkcFS$A0PJ2vum#u zrK^@N_TUE)B1dc7KrqL^-F1n4w<6c}aasKhTC?}UGKWWe?&GQ!N9I7`+arku$v7LTS9M!{v6%1jpz~w zD9!n~l@PktQ$O3YHu466jBTAthO~?!B6?Z$^Gi7 z0wr|)sI|J{tf2Q)tl#%GTnuu{vj}Xrb&dxgg7rFX>CG!$XlI}NA3hkqpH2{o!T16L zK%wTa(|^z-ird~{4gdI1AxsPBe|@YUo{M>0NS!DWgKPxD#DOk`_)z#BKJ_7jGj&qL z>9Je=lp%cSVHwnu)QOy38PwXh9LAT9P9CI>ndq_CrAP1W-6J0I4I9D=b;gS%T zqRScm=R9Vuj$7`-5-RjJQri!l5Qz!ugby6iq>gc7jLMgN!PVSoRfa<3Aoli*W)Lny zd8pF8VkxNcGI4nTFG5s!INihT?MF@)CNXjm5?Q(Wq2g#*o2>`bQo`gPcK^&AelZ*7 z&tf2FYIU0?gStAWwDBziSs4D|P7ta0;fK1$vb6VFPo!mA;2pI0Y^>k0Uw6AE`ZvRa zmZ3pgW*tx1c@`HShmk-`Ilp=wGXPI3~nAr9Yq|K`)5VU{`?s_CL%Fyw3 zhxTxm>&nUf`v%_RZ{r`=O3#mUiTO4Y<>OngvxW=#K%)`*MZ=rYcXNY`{IgB90Po-e zyM8E54CPb0TpsB+WFtw$hkkMUZ=Z+Wad$JBnI+^mc1TW8_gKzN{w^mJj3ocNfzyHY zTtrocveGtAgL4H`~A%+;EtKBQBD-iM9mZuHwjQ2F7fOUTC* z$mUB0f#14X(P~sKeMrcCOvrm8O|r>)JP64o`O>EPp*h7Hwe1H4Q{A_fr*D z5Y%*imdvo22F?Jf(hntjk1dULYmNM1`~-bX^N}{Tv^ouQlR+_#hsq#b4b0F-m<`Sk z60fYr^xK)bYvr{?zIU`~fLVgrDWRD?bQl8YzzBPv&URULGw)ET2t zby?{N%}6eO-zO{R+iI3Jw_!$kcrz*5U!*KN}?#+M3?m5phW z*!>WvLK&Tu9WAO_jX*YH%qH3QRTU!*7pCR&Xz9q8c$8Z2joQR=v#cb}QL{q*6FeZJ zLm8A(a`wr#g|pWP6l`o_qh9g8RQOh98o`&DRrS&aF9oD+#SQJ{#auNjw=Jmf`BC?e znQwKNno}KgI`jP|*)U)dX)xt^sd5q6{0sDy%UV`%qQr9O7+z>EP~t;c$r7 zNOr5a+cYy$`SG&vVN~2|LtlOFUS7}fKFNwUR;#L{TDHa0w>dG|&dqpv=q4aH9n5lS zpa=Nk{imPFNh`X|af5Asn;vU@JviT-06qDN$xKsoDJ7V=$}rq4)(;(XrKcd#&Mvjf zjtv$^911AK558e>W1TEMhtDtvDzj=-_m>xG$>hkmn=p$Pa6a5xMuO5Q( zCs-V>sp3*>f|{+h_MnYqAqxlT;kS_zREy)O&+Oxgx5w~iI8EYKa3|~=8BGdz_bUWw;2~Kux&lJWi;c}fpbdbF<+tuAJ!@Px zw)1#n7uV|(!{SPJmsENSqtW0gA>$sc(X3#hI_ZhGi;IOkDjcL}nzh+FjW1L9MCN?-rbvgURSUApcIZNu-e}gR z#-4jbSd8m9m*#F%RJ*&+Xbv&P?`GNpcagk2I~<{jw5PlIS2+jUDI{its0241E>Xm_ zXehIi-TAA4=l~;_^Mf1xb9ObRs75r)r`T~Pbg?&E=@!h}EJeQaRm?fzfyo89G-6VT z-#0~khAR!SES=l@YXgktV)m@tp%iPb_+S?BW5FNHDB|E3Oo;wq1ejK@*h<>Ot}luFS;kCfD@yh7o? zfTC9W0w4dIHZ5&Ps^#?%2a*>S(cp+S8=Ou;xJxsK>tM~fEPMmeaP_?jruDLiiuU4< zOs`sUbG?q5laiNSl!G14%z%8sj zumE%_5UV7^(gK@+7X1nr56|;5Pi<2ZoAsxtZh?j~Qz?PZ0=NdRLMkb-jhRC2x-tZR znp!0K`m7i#KApLrblh04Pwq{nt%Qvq@L$?YYmE?E$0}+@huLUTyXjJ{=n4V-k%WQ^ydPGr2F0BZeiiUbxFZ^hKSg> zH9>356j%{Iz6-Jxeb;n%Nl8U; z*Q!bG?xt!SM)*%uzs}?l=h-y16kNfT(?0OGtqxDqaw)?GV_lG)loXvA6k7ryl4*mM zg$&dHfV~w|aPRJ7j03@_7kqT&4spuM>fj&4rRH)7ZF{jcn-3x$Po$}}G(RPA>1xBn zIP+PTRT=_?>K*nnd`9PUav4m>|Ts#TBEG{BFy$rYi=IFPWOBA zr!H{yliiz;+*R5g!2?6R$I5!VA-28*z)Vv_rVY}%;E(xA7{G{20|aOQaq*CZBjM%o zpG!)MV5Y9yTH;K++)<8DBN1AK6*inObNWvj%Klpo!fdGV?6FIXnB=>JD_;37TjwH^-XvAg3|2|3wS6q(QiASTiorLZ zb^>#O|4!!rzu}5t;dA){q05_mMn80nQ|HF_AiVp@8;J_4FX+U1O29w9kvkdy0>Z{> z;5G1G01Ns5Ho!L>Lobg3y9gg|AK`D=`kwNSJ&kE6ep3s+zj32%%?&Kw!{p=q`2?CRFg5w$jVX4 zmYTVFrpCpF*m*PfXKO#6)IEvC$^^5W`WL+*B9aAm;&U4ybjWF?AlNbaBl3K|N515P z@CM5Y7e0HAj@W(i`YjAi+}6j->~u7m87|RBCg;+lyp|vdPOwvi_I{7?8*f$7TCJi{ z&RtEtne-|z$QH|xDYlyChH%24O^6vhG)> z>AW5<*37%Og->~BQ7V|iDBqBtA)-tZHFDgquWFgeTOYg5eFcEshO4$pgYQ7^c|tdm zIb9&q?%!p^>XY@Ku5kY4Zxq5|Zhzf4mKq@u1c>R?4nheKV!R=a8sS^-e9RM0OUAX4 z^{)_Mhnwn)8o&NsHSicuBmw@uCRN~;#SRXH4M=$Vm5DzEjR6x-Jf#|*{EQ^BA?-!` z9sVab^-Qbo3&R?(V$=lY*S6K_gf&q;pW~KGiHpDL5Hzu^=TREdxyVI)*U^|cHb&edcsZ%wN;s3mIVCOUFeH^)qM-C4IT+%VM z>o(q4ke7NMZ`aZ;bG@r3dT;&lcL49FKm4 zpU8tJM4X{R&(~i*t|g;mNp<4swKcy$DrPO~PxVjbUo3e4{1gfFS^}7~-Wa$a%ymNTiA-&d4g^~p!sXL9Wi@V!_X{c=DtSNZj+ z4*g9SoTPoE^=lq&H%f>MUhpx&>NQfbsdqFdF=kpw{vQvm5FQBtwy4QW z1(04*lJ$~nw5lk0|6amQ5JmBancM@ZI^O|B9Jcw)nAr}t)N1#Sfb(}L_;Sgw05Jgg zH`wPS$k!0r#wR1p7FI=89=S9!=53T5V4m2#de{Y{3EzjPhs)ZQe3+?CgTjeT_VnAY zuW6rt>`rMZHtc`_TT@Uj*z(8u070I`Na~3`Tiu_gu8qSkp%t&cMaKcyZwNiOOTA!! zOGzR5T*znY8^8${2Nu6-#`p;XrYl*^UlYJgBHSSjoL-_Ty}VhPgyMVxS?LmPGQv|) zuPgI%;0x*gc$GH=g9WU-LL^@TOAY73UQfyo-w1q?CQc z`+N2$?aWaL6`SK6QDm#F0y*ioesLP5JX9D4+xXXg9SkBa0;8Wk)%pJRPdKxur4;^JcR z9yO8fEp{{6^-7OWR9D(&$Q-zV1rJefr>Zu|$Ca3AkzJsL0>@UtXEN;w-GuGdNmqZHx#BBp}J%))ZKDSfuqlRGYS zf`>FSIy%NGfhufNM}&-=F+jG_^~kDm0#-WCb|{G=zj%T-c$ri4ID142>NsRj-8kRI z35-mUKluk;N}gzC-8SFaLG_vr7eOpl!QgAt?JV?ZW@@ga`qqIYr_`P8jp35P0msd= zXOZutFT(M+fZ}8YH}vHl!NW(v5rJ%4`#`J8%Rm^8Q+AZDBM~i}d_k`hj8cpSi z#&4vg%PxC)o7uG~&Dl`wBA{!Qna^2N@Tcm`8!b`_o~r?LgL*7uRJs4E)%)d2*|u{# zunZfdD6C^74jB|K6wBdJa&~&Elm+W*8KlmDGwwlI_0jlJ>Tt91q#5VJUWBM)TW;4a z1G~fTsKM}Qd;3avOr_1yPYa2DdU>QylIkEB;o+0~3KK(6aPdT>VQ_umDEuV>iuZKU zG>OLA=l7iCHpTx*$yv{#E9jApnv`&@={TLOZN8Uvkjir;fv;}o*RNQ_vG7b1$8eDg z5JrEKv4chr?ksqEd#_$LCBub zYdPz5-DDw%?o;lo5GP@p(~$ttJF+V8~56n$W-*gd)^OO>AK*Kxo-ZM-Zdh=nOZq&Grq#Vi5e# z`B-ml%5C8yE;mnt)c!M=UCk>#U%?a*xli=l80yj=Wd2IJbR3TC5N(5&8{`wF&(P{= zb+MWaVielnqe(;gw%!wtD9ksNXIP#|o$ueR;q$lAzqEd8qe4M259;}8>-E7w^VubkzS(9kxqcbO@M1A0+mAA-6kWbDN9+`-RXPTnT99q)N)M#3 zB#Ae4Gg6ZO2TA8o=j36^*ciOQs5sT5kb4Oa`o{<*&6C9PM&y4$ZB+uGS8enFj{0~^A{TQPkQRrTd)0;!m9AUl(E_j7U|)QG4nx;V8&HnF^jGF~Ls;BAUK zGP+;*&N&kubOSPw@{iQ4-&^?DT1v&wEp3S=X>hcp{PrM2nEYJ_5H|Dk=kwl;Hi*$a zxxTDJjK=vwy%ERQ`+i1rG!Bl?@ukdE@PA5&qU{~^yG^-v)b!?-+#?%E01ySiw>XAg z*!^wu{`kYPqEFSpIx=YUVf_j_oy6owL|QgOOCM@haOg-lW1~n-JpgaLs^j@{cY6Z2 zmV~Od2+==`CY62J0HE-2_XLz^@p&oY=uA^iO;_FQ9A9pRH@<%Dx|?<|n~L-Zu^YGF zU$SHRliu@l{h*pDe}yIgCAjBje{gk1N7BI41rFx`F7VuF)R<^6oRADj9zh|SrUZGZ zVQka;?!mxqDJjo7Nk#?{5BwsI@Nu3oqWW3ZV3uKs=W`REQ{`PO=&Iz~WF<;JtI%z}bT$kwLhZr^ z-9QEnPMk}=ZILIbs!XNgD*w9;q1%6)Tp`E@f{=^)MYp>(tWDZ(uHivlOkyJ_sI&J< zxf9;r^`*7awIFh1wbYG)P!|a%diiw1@T(ipD*Ym_T|DizvF-5Q zSWzomfYah9A%h4qh%?gF=ob0u>BWKAGTXdu^31ns92zD?jI{^Mx>w%EC9NQ7G`}x2 zB&geB);E)bXY-Hdar6S^68A~&hYdqvd*?&9%VbDt%qxcgP;eRPT%h*l#W*oVp?aIl zIu9(c;kYK-86}^Gti0cD20^h$5E*nz{{ckYdu;AfN{0&DH*;zTX9v0zZW^c|k+ZptOk3r&FR2OC`Mr(< z=~Sr_C3E_fC#_TVMeUuDJ*P7ANHXE*ggZV+G7XLS65iWON1>2&BJ9^+6w}cYwE123^NNQy*$GS{er8#0H~`uaV4L zGks-m3iID9^a|F2VBj$I(0GF$$oKB9W`TT?YM>9ztB<7ZI3sZu^{v`DKxLQ?8|rU#W2A7J8o?L{(OorrWDiB z5GQbge#rUKbr$&EkKv&U5Arq*w#u7`B0-tJ1}nmg!Kv3)jv$9tfrm z93cEki(^DgmfkO$Z^QwB?9HOHW`vkMadF>-0;=LMJY&fQCy^t>%T9%>43>q0D*b-8Jn z0#)^)0&~a$65JoFE*989$e6|U)XpSK_uV{FaP2-mi2eU>)E=5Ci$#`#q86eKpp5m@20RzbwL)$MA6&Yn;$FRs4yi?mLW3WKTvNX{%3zJIcd zD^!_fP%geF;lnLx&@(P6U2A-Ez@3i$F{S11*_ksF1yDm-tgatluLTLTXxEQ;(rWKY zh=F@V=YPj(zEN4msf9!nnw*@U<%0Ry>_zw8^X1uM&WY}NH;;Qw&;QlbTSryZz0tx4 zITC_&N_R*}cb9Z`i`kABk1>+jduwj zULajs!v!R~arzM6d-u_ovQ&;dsgOqLyV}44`|wLAL45)%jx3D7AbdhUiU+D#Bt9j! z`Q4ETt|u8!wNlc2{ydKceVZb&7a#GRu|@-k+MD46q{}%DrGTzSw~=maqBmOe3nbuJ zO1Fs~3lcAlP0Sc7s5XnM?$$l{$=m&8ydm3zCv8Ii%0{B{#eE4pWPO~@x|VDswvwFp zMV{?Aa!>dHGg%dLx=UH7WGtoU+m34?CnI_PhEFS}{!HxAmEWE_~W8WqSM zTKy==;$wOO+m(;n1Zy~{I>X_v?IvB5P}7iff~0IDLu{xdwdO~%R?v>%%#5Be`H<{{ znFVr+T4lpw8fn{BNbGjABU-o^bE_8$L~R=$Zes`LcF^$)j}s*P0s&Vi(3e)U&5sd9 zl_F1yX>|%E0v&bGM*5KG>b6jmvhYUF>?$ij9jKd9Mz(;M2G~}PDfL8|wbg5w_I^(q zf&F*it3leYTiXS*Ah96T{$&f=*fF#P7_A~j*79&E0+5W#rCP8;57!N%DCCF_&T{a2 zYSD)=)Tg$c1f2F&|M!)!C;Sv-WLN5JyRYRYD1qkMaQbI@y^-G|L07@c0RK|BQGg;i$UbF3N5MIxgY&i`{EAkKBSy znJ3EYEv8qYHeX-<22X+4Xf${k>3p2dPSQDUEXG35aaeK@58zkB@BoOo>jE~*{I;l4 zAIB3k5rOpj?STZn&t%)-^KzQ?2Rib7-^^SzS0mCe=0Hxh6DT2=Q=(#w*X^$kH*x+7NOa&=dwEiWxoL zyPvLk$s~xTNbQuk#M6j?b(|aU2^&@OBuU5qeN1zWMCWJjT$QMVQ(pDX*HrLfuXwqa zKDi{>908%okKL4(9?@Lc{4J*}FI$>kuFcvGsVd`pt+EC{V1Xb9d%2j(%4*how%yUY zeSns?MZ$75AE|Gndus8aAFV~mf)nIwP;G!@&cnsOrChr&*~SjZ{=N9srkpL}3urGA zz$Kn1<6*0cw|>HEg_?*y0@?j&w9gD{Uz0S-Km5`+rSRVY zpuK0QzYEvx(#GOMV06!2ykPweAZM$3cxYA^A1$X|HiaMX9ua=M27qA85nq|=19#TH zAKs?qy}_a4C$vEswelc$_5WpG;W)o=Bx-LG3<|TxRLPU>C`O&6_|NIlv zo&jJY*|!-hGex>E{-}6$VIeb5rU}>^;IOX^L|L_a5ts}$D}~lw3e(83q`iVXU#2F~o4F zU7i^*LLhcr_D=N#4g|Wvz!?As@Nus)G`0~6p}%1Lkrt^)3=}N-T1qb=%Sx2QDIgwz zdlI@x042`hBa3%1v#)a_F4Bt{FJZA_#>_a`{Me0m!prOqQgS67ea?V%gEl!J$E2BV zpi;Y`vYt`JV_cmr)Pu%55K)50H)y2}tBb!B*ELO_fcv2o0ef>bw(cVC`0Y>80gD}w zwJe6et?`w_+{XA{8@OAl4GJd;WQ#y9H_F^c`;u1bmQS=94k$PQL*)w_?=528GqlaY z?4j_RB|@SEVIWAu$sTWgb9}bI`TOnP^Bs&ry*A(vAT!P4O2r>5rjz#jnO-Yfu?+D_ zE)@E3H7S(Nwf?MHkyvyQKLtuopamf@IO6)8X{*aOd%CQtrRvdsz2-gE2nXp7R)|D3 z%V}R(n<|x+Pa`1d^nw@rg%F-ytCK@hx#Fx?xpDzWhfZcq3gftI4^N{%3ES z0KS5bHUt;H=k~@*lOT0d+=8k?GJm2yL;vaku{X!pytZ#B>Jp$7#!*P$GB!j|_PZrn zgq%E*vt#GuVfY=E*q#Hv9>p0aJrTuya&mz4v^F9%M?Z~{4&XfFfE8< zRjowvJe{PH<99+*b2Z+$z{lgiN9$lA;!h!7jl!s@ilG^YlfUuF?}VV>2OonH0;-A- z=}QlK;Q>c2v>u>#Lh-{p=A+NJ>L$McozS|&HKx3aNr3@?#z-p}>j#xpaC96_)J|4j^O|5N~1F1@T932r- zs3*T5RWA*aIgmK=5d0EHm3PvV>C%!J89fa%qvr+OU?0yKwAEeiJwdGPc8I`t10N&~ z!!Hu#UKjgSg(2Sw2T*87Ls!;t(a~7eTh)JdONQdtMTcVwv}4c_px^_#k^d{Q0e>SZ zqOn3P#*xMJi=6>V4m&c&un&;TTLi0OrBn7`iq{hNDpdm8KYO8OiBa7iZN z(JPESgz}8mvt3D?iIoW--Ik##qu1sYhXzcPkfIb_&?=n*510)GQdv5x-q#*Z%725^ zTR^;BTvEt2Sm*$G%x}+G%)pV$I0Ykax}S@?E8BHs`>d-NK-FlNgQfTRat>r1Fr*lH z1KT3OO`CNB2NL=pwh8~2=XS5CyWY}NT1Q|vRiy3Pwn;-XkCKS7gs#&8O zW7lI17qb)PoC=6*$>AQG(e4e9v9d&Cp048T4 z=?G+uy(z6{!GPS^BseavEd;UK5~59>D+2;BK??{UV7E)PW@Y6g_29hV?C=5T^K<~? ziwNr(8q97w8?GTB>D?nhKv;c4t|zNnX`N*Bql!Slz_NXB-h^*n_S~gQmh|a`Ntc)74sky6SDfTGmlafX&@GJ9v444A!d)ww zhgts~Fc~1|UzoZ7G0t^$WexZi;K@Gz{F5PJX%GJ1d!+L->APp)7~UNR$78(N$`1NRQpEyCZv9HdjmyIdM{Z?fHtsY0Hrk)N zUps%)OFp`u@|4aJir@` zxA$x8crOJX0{P&6#JiML7(FH*MWiiXur`w8(DZk7wZqr`yj`~=-R{UFs&)&WrB24l z>G<`sk~Yt07G`;4F8|u1blq!D#ekx>LWEsC*mBlJTM;Lth{_FbKW?R~C-X7XJYTQ= z`d}#_cYzIGkHunuQIz!F>QEeu(B3?Y+NX!VrIe5zGQr6~8^xhV{4T60P!cC6g`RmR zVLF*zkMi?n>+9%k$80AxIVPw5w>C>NOR+{{zJrqjN-GcVBpobR(-!*PY%>_*529YT z+=?7lS$f~?Oy<`{aPd#5aAlR@Y!!;>DP*WubXx1^*WN2%qbUlsI_ zQKOn)FKNAzQKHc{9Hp+sIy6madm#J+89(H4_bfp)w+hb07anr3V{}umXIWjT%U{^e zD`n`gR9&gXkT`K&gFv?LHGS-$Ki;$q*|>#;{#2UJ)Gg&TYxjlihbdLAc^&5`*R;$r zWr{N{b8B--hoF2n+x)qccKAIlpwTHzVtNE4bIIJb$|y+&dK?k+JIUEeEX;>km~H7- z3wR66+3COswP-vU)s%K}2_+*-VjmBi>x@G6&j`yXxmwrG$Ejp#c=S>jen_ad2yu(j zZtuTNB&*RP|DhkUGC5@Vsv^1*N3E|zSF9$RYpg07qGnnBb#El*Z3J}&8pIVp&6p`$ z+^?X?ZRXuoj)A6uWV4C2?p^bKwSOa-wVTs%D+(&4{YvGX>i+9x8!2%y8}TGTJq@EQ zcE3Y)ETEjhIycK+X&wJGFs_=AczP%CYlpKVokZIy^FYb*6Av`r2R>kO%j0bNguok} z(6?;khlr27<9Ki0A5`u_1@Rq+Y0}EI5gYwVma)h1+*Kvcj{Kt0UoF#Eg%CEsB*Wdh@KFZHmy z&F9XoyvNJQ-p898gq3bdVg{Y58@=zZ8=foRamT(`{MC|LDFTI1+h35yB~Ng`-zBSQ zi%o#>rug(>yrdI&LmBcy?HAu%2a(L7MiVFD5p5Jaq~xs4X-_xt7bXSHPEo(=CABzT zW5Q253!M{FhVKUzYyn<{oy13{MEy3 z`yE7O=ogzgER7sHu2Ng36aVNL-+$il@X+E=Xv6gBo)`lvNQ|adkC(Lc8jfy#BX6S| zAC`u8DeN!)~J-G&GeK^ zLaKMU%46iCT%)Liu5>@8h1uOHZy)mZ{f}-Q6cjlmq)7z@(OczuU{R5iTjVL7dmA!Q zp>i$Is&!t(x6)A``sVb`t2T32vPmkIUI)^zvwho;jtVws=NcWkt1R~ByLK5y>DQ-m z4Peg-s8xzx2++{-c_oBN?i|m8Tp;qt@{Am@!vHb&9o`$3el>qMuedTh2VHA z{}EYx7K$m*nyI&2DtLYTQwK84<3Z2+_0VYSaTiU|Rl-s=r;49V+3-jBuphpr4yMN2aQzZqCeZRjEFy(ebD9YtNvMiObjR? zW=Hz!&3v6+M>2u}=jcf0GFM*K`YXL#1W0zz)$SF4M|z}qf@0ce8`_)kE{Qx)a8D8k&eWkbH>>^&y<-^99fXV zxz;PjvK|td(HM8-KhDp$Z~oOFT$Wx(Ev3`Uf>yc@)0~)n=1PRp7$yw(g)kEOkcR% z>Yu>~a3F`$nRjm5IgIv~=odkkliWyH^aRYYao0R02Z}%WXs`b&xelkuksRz)dyFJb zfLTE*94wIfFFC-JO|n-~OKi&7Dryi`d&b@7A9=kfcGmkcI#RHqRj^21Zw zV}mJ?p&1st1-|PCsN7(BU|EL~o&kfJ82jgn3*O>gE%{%WE~x{p>v_44Cbf7zM}`E! zI5_?eBZG)?GsyBzZT)yZX)z8d(w@S4>m>t)wUNyY+ErOm*WlP7Y4CjZtAFKgJe}Mz7M~qG*qd7^tPNV7(H=R#G0%jc%YRK!hzL z0?*HU`{q5C4=k&q_5m64t%}F4)OL!{mNIXnlaLX|2}(#)ktm=tEghmy%B-iB;kS;O ztikk8LGQmoj3HpruXj>N$%DLPm_;N-ELMd!H+ZDcbjZKf%g+Z)bUQL~Z&4yC9yn$K z?&NzF51go{)6fT4;;C@!E0xa2o&`gJSZ;MpV_}Zq!^$7_e^#6-S{frLC_9@unP*5j zqsgC4533A+>w~GRQ&M6`tjJ2_DrXy%Z;qN@XehJm13k52=B0 zZBRsoB;gl>okJ;O$qQPHBWrj5bDYk|Pf(b5y+>=HQKIwxm>L_A6hA>OO^l2|OijVfp4`Ojr;B1L>2d(7FyKv3dvt8FS{ch{{qy z^9?*?r*tc2eB^Wp_kXvSFvaP^xZ(X zxRE)`?pFr%^I}D7Sfe5;HzlS~q(7h(6=MY!-BVZdA4mtE`&MFLuKTvnS~)?w4|~72 zOeYM^!GoOS+TI}d!6cjbT|aP#?jv*AjjfON<17lTLfT?OH3V(t;OgsxQRcx!49C)& zoq1pYJm4mMXYnJ1@{``i_w6|+8Wf`V%mWxI-s1JDb zPX~t#XAkEEo`A8Q6$bNQC!G)lr8eZN$%2uRLfH<6ZdlpP4jPGtS@ zu(qcZu0U{}M-Mx}g#T0?nMyB4@Kw7}LFUM)^e|~l$uQq&6 z7k}C`W+LEGmc8Gs!364!N=7+(avhR$!6cz=_(Amk9U8mHAZoj-nP7VU6a4xBLD0Fc z`s99PTU=AZ>TAlpfHi9B@dA#8nM;zHt2}Nyzs5Qeeu>V6I-fL0fDEd)53B=FLRG|Fn9`QoBqFDY=!f$L&a`x#ArphZ6-j zVGh(XUFVgNh-lKe!C7wCuj$g7ZA>B{Ef1RG3mohyai?_&S!&H^8e|cHu9mf~-&Vy7 z8haPArf)uRC;+rq@n9x~6Eh4YtaE9;cg@mx;p1Hu{N|7{?;Ev@YCJ_|PGW$5V0<3N zU{#w*sh!!M^B-!mmbmnm_>6;DriUyxpAxY_$=zK`h)!fA7riAlZsu)jUE8sS0#tm= zsFDJso9e9qK|17)uW5Q(E#3qLghJmrF4+3H4Qm?y)qxUtz`3NxMvI43Cqqy-B~=bZ`%4og64 zF7B$}Sg5a@qb^-UE$t_gj*^(SpC&v61Zxg0rHt*r1Xi2)!CC!- z5KU%Cov)mmSXc%9ThczN9>gJcwr|!JW!4)ye&BlpYX5yBfJmStA)SUVvKLj?NH43H z6O=>4w#q@Pc|zM98&G4;r?#9modCnoxOgY#U;(ISM)Z}7*TJnDk!vR88@+r^Hcleo z@=CF1Oxu7~XV6N!^lTC8NDQKpsB{Lu(tGPxo0k|S`6ydgY;L7r`F$>w`>Tvh5v^n? zj_TRFuPtS~(TPSf(Rks5Tee3gidx0vJ=eG1HA=Cq>PuR0<=nmmpOe(bn-`Hucw5PV z&mQOt=;WdaiKzdS0KSDfTmiV&&S>aLcF6w9W5`kaG+ z!B8@DpM}j0QO5m?2gtEW&hH>4IBMw{fc~LL#6nXRmA-?nF^M7?Rty4!YWrV(6nF@k zQ&>7F8wVSgVMP5`1SM3MOWU%#!L3?iTYCfZT#H8Tj1YN1MWqunU~@K0bfy?E^Ph&K z%x^N5|J4gcl%hfU7zAhp7-;n%FQYru?h|b_t`Jb=2YFJz} zoiI0p@|juyOt`S6>R%&srMP#=(Rl zT0!wkubj`$zUZyAG|E?#@r7d*f$Uer4MlZ{`2{qXJ71nriIP2(OH>bEa-GVA$bQeo zj;v*gvW}*$P=LOHl)O|#_*vYb1-*8iBUqA98 z-haFdn*>#wt1lh)y0LSUzf!pcES>*MqJ5T1m+prqIhZpMGM**5;NQdJtSMHh+%e4T zUnB3cV>y2Fp+X9RQd{Yg|Mx?`juZsGrZL15L@p~DbRI*Fgcbk)_W1ucIg|Y5AicR% zeuf=65RhFiAq5#2pE8_KC^}p;rW!5zt^L)#XI0RV4P4 zEs1kIYFIC+zOVeP|8GI}f0^?|5x-kGWV=B$O!1D{`dJ>#AJ3GAzT(FY8FOoNU=qNk z{+E8$aZ?v}N9y}r`D<|V@%K$<4ypE!pE3Hd_yf2hcUcMZ?}tZ2ROs}*{mraB(qu0C z<kkRjdgEYXknJnqbtHT0Zr(f4-x!}?&T23v@UtR%O?sdS4Y-u|_pGZfg=mN)MY zUFdfX)62^GESVv`OG6#r8B$-%ro8RnBki?imR;pyt+}l$Xzpy_*K(1rx|g&@Y<`%I z++|8jWG!}wl^{To4LztsY7TD$F*e33NscL=owM|KUXr)}%SON-zwj~sofD1)d1ds& zHQxV|$ej}-1R^O3fgrugz28k(cG?eB2pEy^t6}qWjD!igbg#@mmyXqSWu`(P7|CfB z81RsvBae@|h#k8q>Et>0b3gFWr?XCkFODBPAn_j+G+uYc&^q)jlIEPuKA$KTzk=(< zVy7#TgA>(jJf@#^Uu@d%lDy4iU48#gz4qUMeEW0b(|>o2=F@U|z9P0@s2_d&RNgo9 zO#NZ#!pC7b$9RPi4uX^_+Y5p8UgWM#?zdJnJ%OA2sM0C%hH^d8|8j5D__FSLz*At- zx#{TUM=c!ng|OXUSN*4_X`Fy8e5D1?oIOv=)w>sv&3~!rga(4^pPuY5_C2rttM^k(*^@E#zIBvng$L&^6u}o${F&7uUv_;~Rs_o6#Keh`PU6D`u0K)>x-G0d8#fi6Tb4qcM4oKt zGi(E*{RO-t=)JE+o|s>fKQ1P&8s*CDNS{q;7x`UG*sZ-|eF44pS^Rr(7n}G=12Vm4 zw@;$!vYdzbLF{fD{&8q=zVp^CU<6-@&vUI*R{+!G{J^rL$_ZbX9!}PCcX^oqJqtzJ z({8%hg=f8;@1^HL-iCL*!w#H+LAjHcv9D-ncCpdO3zaHoTNmpw&>SR(O)FQs84FYChwpXI1R}m6u zV0@kHVPsJsWaiNBR*n%tHawPIeASA}ms@>mkvL*PPw z(|-uGn|f-j8MoEeblJp~rXiQn$?beyx* zCaJ$Qj$QcQ3t5Rxba(C1JX#D^JuS|geNM4nI~13^tq08Pi_}B}XXHL~B&;QnCdnf; zscG*j1ThCJnR2nO7v0|eOd4a2J`ySX(N<0*N*Q%NhH@v4L5k4bc2D;9!RO)Yq5IlRsyEq$kf)68aL#(y{F}BLp5dvG4L3G7 zNHup(StHum-xbfO-E|R9YEzQZ$}VB!NfnRD-x)^`)ibs6Oce}V)|Y=w4g2hTT5Uz+ zClFvngrrYXliJ!2O+~95ea?S=j8{~)-v@h}n?g3#q&T|^8>>hme+P26;L82}K53&% z2{y<-KW)t*1?054s-w)ub$VXPWV)VR3;Sj^Y{mIkf0^3rJcoT6XO@4BxKS9v4u>Q+ zcg%ab9rE@e<;AnzJPilGN(-BL`Y2EJbJQrqAJ#)ay#p%! zx61>O4v_)GToRjumjTBa>w-^>EPgP=A1f5f_r)UZp5fKj+uIIvpWy?VH~v}EWq=MJK%D<{upSY*E#Z5AoQB+7He-au*W z((7pmw5hB30Opxn=|`%dz;u*b=Dm-nZ~i?~q@NOwKY*wv}v zNu%}Cjd_IaX;g?}v)wGdB0Sg316%6GE#}hQ$%Ugt&xN4(-H|gNAEV*9X6o|q*?T6s zHD8mVZ-pd=)#t1JsB>j;yg9P6!9N(KefnHh8%a&0H8`yhTC=%R;v&CJaFU!HTFnu9 z=d0IE?>z3ccdSe_)-FxE&rO?|;mM|tzU;O#`>Br zr}s9)^1HH)=8qFTnk&U4g>`t5eX{B_ImV>3uwd+H70fu36vs_+pjO!!b7*&+VqGS? z&Aghv$NGZDuGy6#Y+3N(@~r>bKJLxI6UBfch+bp@-p9sp2X9AxZ%LcUBhU9+q5wRE=F6L8pjl}Cc)=1P%Iztw$(OwlCsJ4!{dRQ`XB*(7Uo>a-{;!Y)MB^N z7*J%{YDWw)3~KWK_aA`bP_Y+SNe)o4_y8!3=>NCriA=c5$b0%7Uj=x=8}eRCNwP}Z HB= 2 ): - solver = sys.argv[1] - modelId = moose.loadModel( mfile, 'model', solver ) - # Increase volume so that the stochastic solver gssa - # gives an interesting output - compt = moose.element( '/model/kinetics' ) - compt.volume = 0.2e-19 - r = moose.element( '/model/kinetics/equil' ) - - moose.reinit() - moose.start( runtime ) - r.Kf *= 1.1 # small tap to break symmetry - moose.start( runtime/10 ) - r.Kf = r.Kb - moose.start( runtime ) - - r.Kb *= 2.0 # Moderate push does not tip it back. - moose.start( runtime/10 ) - r.Kb = r.Kf - moose.start( runtime ) - - r.Kb *= 5.0 # Strong push does tip it over - moose.start( runtime/10 ) - r.Kb = r.Kf - moose.start( runtime ) - r.Kf *= 5.0 # Strong push tips it back. - moose.start( runtime/10 ) - r.Kf = r.Kb - moose.start( runtime ) - - - # Display all plots. - img = mpimg.imread( 'strongBis.png' ) - fig = plt.figure( figsize=(12, 10 ) ) - png = fig.add_subplot( 211 ) - imgplot = plt.imshow( img ) - ax = fig.add_subplot( 212 ) - x = moose.wildcardFind( '/model/#graphs/conc#/#' ) - dt = moose.element( '/clock' ).tickDt[18] - t = numpy.arange( 0, x[0].vector.size, 1 ) * dt - ax.plot( t, x[0].vector, 'r-', label=x[0].name ) - ax.plot( t, x[1].vector, 'g-', label=x[1].name ) - ax.plot( t, x[2].vector, 'b-', label=x[2].name ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Time (seconds)' ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalOscillators/Kholodenko_tut.png b/examples/tutorials/ChemicalOscillators/Kholodenko_tut.png deleted file mode 100644 index 590fada9e83bb999380aa4412e98fc90e24ed9d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6257 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 Z&7UBSi%gjT!cPN$o|d6zg}PnD{{T0Hf{OqE diff --git a/examples/tutorials/ChemicalOscillators/TuringOneDim.py b/examples/tutorials/ChemicalOscillators/TuringOneDim.py deleted file mode 100644 index 1860cee..0000000 --- a/examples/tutorials/ChemicalOscillators/TuringOneDim.py +++ /dev/null @@ -1,169 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import math -import numpy -import matplotlib.pyplot as plt -import matplotlib.image as mpimg -import moose - -def makeModel(): - """ - This example illustrates how to set up a oscillatory Turing pattern - in 1-D using reaction diffusion calculations. - Reaction system is:: - - s ---a---> a // s goes to a, catalyzed by a. - s ---a---> b // s goes to b, catalyzed by a. - a ---b---> s // a goes to s, catalyzed by b. - b -------> s // b is degraded irreversibly to s. - - in sum, **a** has a positive feedback onto itself and also forms **b**. - **b** has a negative feedback onto **a**. - Finally, the diffusion constant for **a** is 1/10 that of **b**. - - This chemical system is present in a 1-dimensional (cylindrical) - compartment. The entire reaction-diffusion system is set up - within the script. - """ - # create container for model - r0 = 1e-6 # m - r1 = 1e-6 # m - num = 100 - diffLength = 1e-6 # m - len = num * diffLength # m - diffConst = 5e-12 # m^2/sec - motorRate = 1e-6 # m/sec - concA = 1 # millimolar - dt4 = 0.02 # for the diffusion - dt5 = 0.2 # for the reaction - - model = moose.Neutral( 'model' ) - compartment = moose.CylMesh( '/model/compartment' ) - compartment.r0 = r0 - compartment.r1 = r1 - compartment.x0 = 0 - compartment.x1 = len - compartment.diffLength = diffLength - - assert( compartment.numDiffCompts == num ) - - # create molecules and reactions - a = moose.Pool( '/model/compartment/a' ) - b = moose.Pool( '/model/compartment/b' ) - s = moose.Pool( '/model/compartment/s' ) - e1 = moose.MMenz( '/model/compartment/e1' ) - e2 = moose.MMenz( '/model/compartment/e2' ) - e3 = moose.MMenz( '/model/compartment/e3' ) - r1 = moose.Reac( '/model/compartment/r1' ) - moose.connect( e1, 'sub', s, 'reac' ) - moose.connect( e1, 'prd', a, 'reac' ) - moose.connect( a, 'nOut', e1, 'enzDest' ) - e1.Km = 1 - e1.kcat = 1 - - moose.connect( e2, 'sub', s, 'reac' ) - moose.connect( e2, 'prd', b, 'reac' ) - moose.connect( a, 'nOut', e2, 'enzDest' ) - e2.Km = 1 - e2.kcat = 0.5 - - moose.connect( e3, 'sub', a, 'reac' ) - moose.connect( e3, 'prd', s, 'reac' ) - moose.connect( b, 'nOut', e3, 'enzDest' ) - e3.Km = 0.1 - e3.kcat = 1 - - moose.connect( r1, 'sub', b, 'reac' ) - moose.connect( r1, 'prd', s, 'reac' ) - r1.Kf = 0.3 # 1/sec - r1.Kb = 0 # 1/sec - - # Assign parameters - a.diffConst = diffConst/10 - b.diffConst = diffConst - s.diffConst = 0 - - # Make solvers - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - dsolve = moose.Dsolve( '/model/dsolve' ) - # Set up clocks. The dsolver to know before assigning stoich - moose.setClock( 4, dt4 ) - moose.setClock( 5, dt5 ) - moose.useClock( 4, '/model/dsolve', 'process' ) - # Ksolve must be scheduled after dsolve. - moose.useClock( 5, '/model/compartment/ksolve', 'process' ) - - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.dsolve = dsolve - stoich.path = "/model/compartment/##" - assert( dsolve.numPools == 3 ) - a.vec.concInit = [0.1]*num - a.vec[0].concInit *= 1.2 # slight perturbation at one end. - b.vec.concInit = [0.1]*num - s.vec.concInit = [1]*num - -def displayPlots(): - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - pos = numpy.arange( 0, a.vec.conc.size, 1 ) - pylab.plot( pos, a.vec.conc, label='a' ) - pylab.plot( pos, b.vec.conc, label='b' ) - pylab.legend() - pylab.show() - -def main(): - runtime = 400 - displayInterval = 2 - makeModel() - dsolve = moose.element( '/model/dsolve' ) - moose.reinit() - #moose.start( runtime ) # Run the model for 10 seconds. - - a = moose.element( '/model/compartment/a' ) - b = moose.element( '/model/compartment/b' ) - s = moose.element( '/model/compartment/s' ) - - img = mpimg.imread( 'turingPatternTut.png' ) - #imgplot = plt.imshow( img ) - #plt.show() - - plt.ion() - fig = plt.figure( figsize=(12,10) ) - png = fig.add_subplot(211) - imgplot = plt.imshow( img ) - ax = fig.add_subplot(212) - ax.set_ylim( 0, 0.5 ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Position along cylinder (microns)' ) - pos = numpy.arange( 0, a.vec.conc.size, 1 ) - line1, = ax.plot( pos, a.vec.conc, label='a' ) - line2, = ax.plot( pos, b.vec.conc, label='b' ) - timeLabel = plt.text(60, 0.4, 'time = 0') - plt.legend() - fig.canvas.draw() - - for t in range( displayInterval, runtime, displayInterval ): - moose.start( displayInterval ) - line1.set_ydata( a.vec.conc ) - line2.set_ydata( b.vec.conc ) - timeLabel.set_text( "time = %d" % t ) - fig.canvas.draw() - - print( "Hit 'enter' to exit" ) - raw_input() - - - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalOscillators/relaxOsc_tut.png b/examples/tutorials/ChemicalOscillators/relaxOsc_tut.png deleted file mode 100644 index 154cd222592e52ff854f2160cac1a932382d745d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49157 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 2 ): - solver = sys.argv[1] - modelId = moose.loadModel( mfile, 'model', solver ) - # Increase volume so that the stochastic solver gssa - # gives an interesting output - compt = moose.element( '/model/kinetics' ) - compt.volume = 1e-19 - dt = moose.element( '/clock' ).tickDt[18] # 18 is the plot clock. - - moose.reinit() - moose.start( runtime ) - - # Display all plots. - img = mpimg.imread( 'relaxOsc_tut.png' ) - fig = plt.figure( figsize=(12, 10 ) ) - png = fig.add_subplot( 211 ) - imgplot = plt.imshow( img ) - ax = fig.add_subplot( 212 ) - x = moose.wildcardFind( '/model/#graphs/conc#/#' ) - t = numpy.arange( 0, x[0].vector.size, 1 ) * dt - ax.plot( t, x[0].vector, 'b-', label=x[0].name ) - ax.plot( t, x[1].vector, 'c-', label=x[1].name ) - ax.plot( t, x[2].vector, 'r-', label=x[2].name ) - ax.plot( t, x[3].vector, 'm-', label=x[3].name ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Time (seconds)' ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalOscillators/repressillator.py b/examples/tutorials/ChemicalOscillators/repressillator.py deleted file mode 100644 index 5e754e7..0000000 --- a/examples/tutorials/ChemicalOscillators/repressillator.py +++ /dev/null @@ -1,89 +0,0 @@ -######################################################################### -## This program is part of 'MOOSE', the -## Messaging Object Oriented Simulation Environment. -## Copyright (C) 2014 Upinder S. Bhalla. and NCBS -## It is made available under the terms of the -## GNU Lesser General Public License version 2.1 -## See the file COPYING.LIB for the full notice. -######################################################################### - - -import moose -import matplotlib.pyplot as plt -import matplotlib.image as mpimg -import pylab -import numpy -import sys - -def main(): - """ - This example illustrates the classic **Repressilator** model, based on - Elowitz and Liebler, Nature 2000. The model has the basic architecture:: - - A ---| B---| C - T | - | | - |____________| - - where **A**, **B**, and **C** are genes whose products repress - eachother. The plunger symbol indicates inhibition. The model - uses the Gillespie (stochastic) method by default but you can run it - using a deterministic method by saying ``python repressillator.py gsl`` - - Good things to do with this model include: - - * Ask what it would take to change period of repressillator: - - * Change inhibitor rates:: - - inhib = moose.element( '/model/kinetics/TetR_gene/inhib_reac' ) - moose.showfields( inhib ) - inhib.Kf *= 0.1 - - * Change degradation rates:: - - degrade = moose.element( '/model/kinetics/TetR_gene/TetR_degradation' ) - degrade.Kf *= 10.0 - * Run in stochastic mode: - - * Change volumes, figure out how many molecules are present:: - - lac = moose.element( '/model/kinetics/lac_gene/lac' ) - print lac.n`` - - * Find when it becomes hopelessly unreliable with small volumes. - """ - #solver = "gsl" # Pick any of gsl, gssa, ee.. - solver = "gssa" # Pick any of gsl, gssa, ee.. - mfile = '../../genesis/Repressillator.g' - runtime = 6000.0 - if ( len( sys.argv ) >= 2 ): - solver = sys.argv[1] - modelId = moose.loadModel( mfile, 'model', solver ) - # Increase volume so that the stochastic solver gssa - # gives an interesting output - compt = moose.element( '/model/kinetics' ) - compt.volume = 1e-19 - dt = moose.element( '/clock' ).tickDt[18] - - moose.reinit() - moose.start( runtime ) - - # Display all plots. - img = mpimg.imread( 'repressillatorOsc.png' ) - fig = plt.figure( figsize=(12, 10 ) ) - png = fig.add_subplot( 211 ) - imgplot = plt.imshow( img ) - ax = fig.add_subplot( 212 ) - x = moose.wildcardFind( '/model/#graphs/conc#/#' ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Time (seconds)' ) - for x in moose.wildcardFind( '/model/#graphs/conc#/#' ): - t = numpy.arange( 0, x.vector.size, 1 ) * dt - pylab.plot( t, x.vector, label=x.name ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalOscillators/repressillatorOsc.png b/examples/tutorials/ChemicalOscillators/repressillatorOsc.png deleted file mode 100644 index 6e9824fc920a31d5ed16c5b71adb3a682c257271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12364 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 2 ): - solver = sys.argv[1] - modelId = moose.loadModel( mfile, 'model', solver ) - dt = moose.element( '/clock' ).tickDt[18] - moose.reinit() - moose.start( runtime ) - - # Display all plots. - img = mpimg.imread( 'Kholodenko_tut.png' ) - fig = plt.figure( figsize=( 12, 10 ) ) - png = fig.add_subplot( 211 ) - imgplot = plt.imshow( img ) - ax = fig.add_subplot( 212 ) - x = moose.wildcardFind( '/model/#graphs/conc#/#' ) - t = numpy.arange( 0, x[0].vector.size, 1 ) * dt - ax.plot( t, x[0].vector * 100, 'b-', label='Ras-MKKK * 100' ) - ax.plot( t, x[1].vector, 'y-', label='MKKK-P' ) - ax.plot( t, x[2].vector, 'm-', label='MKK-PP' ) - ax.plot( t, x[3].vector, 'r-', label='MAPK-PP' ) - plt.ylabel( 'Conc (mM)' ) - plt.xlabel( 'Time (seconds)' ) - pylab.legend() - pylab.show() - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/tutorials/ChemicalOscillators/turingPatternTut.png b/examples/tutorials/ChemicalOscillators/turingPatternTut.png deleted file mode 100644 index e45d84d15424f447af4259208a6a7aab50f5e9cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107356 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 z 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 diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py deleted file mode 100644 index aa35d46..0000000 --- a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000.py +++ /dev/null @@ -1,395 +0,0 @@ - -#/********************************************************************** -#** This program is part of 'MOOSE', the -#** Messaging Object Oriented Simulation Environment. -#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS -#** It is made available under the terms of the -#** GNU Lesser General Public License version 2.1 -#** See the file COPYING.LIB for the full notice. -#**********************************************************************/ - -''' -This LIF network is based on: -Ostojic, S. (2014). -Two types of asynchronous activity in networks of -excitatory and inhibitory spiking neurons. -Nat Neurosci 17, 594-600. - -Key parameter to change is synaptic coupling J (mV). -Critical J is ~ 0.45e-3 V in paper for C/N = 0.1 -See what happens for J = 0.2e-3 V versus J = 0.8e-3 V - -Author: Aditya Gilra, NCBS, Bangalore, October, 2014. -''' - -## import modules and functions to be used -import numpy as np -import matplotlib.pyplot as plt -import time -import moose - -import random - -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations - -############################################# -# Neuron model -############################################# - -# equation: dv/dt = (1/taum)*(-(v-el)) + inp -# with spike when v>vt, reset to vr - -el = -65e-3 #V # Resting potential -vt = -45e-3 #V # Spiking threshold -Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts -Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm -taum = Rm*Cm #s # Membrane time constant is 20 ms in Ostojic 2014. -vr = -55e-3 #V # Reset potential -inp = 20.1e-3/taum #V/s # inp = Iinject/Cm to each neuron - # same as setting el=-41 mV and inp=0 -Iinject = inp*Cm # LIF neuron has injection current as param - -############################################# -# Network parameters: numbers -############################################# - -N = 1000 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -############################################# -# Simulation parameters -############################################# - -simtime = 10.0 #s # Simulation time -dt = 1e-5 #s # time step - -############################################# -# Network parameters: synapses (not for ExcInhNetBase) -############################################# - -## With each presynaptic spike in exc / inh neuron, -## J / -g*J is added to post-synaptic Vm -- delta-fn synapse -## Since LIF neuron used below is derived from Compartment class, -## conductance-based synapses (SynChan class) can also be used. - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -J = 0.8e-3 #V # exc strength is J (in V as we add to voltage) - # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 - # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V -g = 5.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 -syndelay = 0.5e-3 + dt # s # synaptic delay: - # 0 ms gives similar result contrary to Ostojic?! -refrT = 0.5e-3 # s # absolute refractory time -- 0 ms gives similar result - -############################################# -# Exc-Inh network base class without connections -############################################# - -class ExcInhNetBase: - """Simulates and plots LIF neurons (exc and inh separate). - Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 - """ - - def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ - refrT=refrT,Iinject=Iinject): - """ Constructor of the class """ - - self.N = N # Total number of neurons - self.fexc = fexc # Fraction of exc neurons - self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh - - self.el = el # Resting potential - self.vt = vt # Spiking threshold - self.taum = taum # Membrane time constant - self.vr = vr # Reset potential - self.refrT = refrT # Absolute refractory period - self.Rm = Rm # Membrane resistance - self.Cm = Cm # Membrane capacitance - self.Iinject = Iinject # constant input current - - self.simif = False # whether the simulation is complete - - self._setup_network() - - def __str__(self): - return "LIF network of %d neurons "\ - "having %d exc." % (self.N,self.NmaxExc) - - def _setup_network(self): - """Sets up the network (_init_network is enough)""" - self.network = moose.LIF( 'network', self.N ); - moose.le( '/network' ) - self.network.vec.Em = self.el - self.network.vec.thresh = self.vt - self.network.vec.refractoryPeriod = self.refrT - self.network.vec.Rm = self.Rm - self.network.vec.vReset = self.vr - self.network.vec.Cm = self.Cm - self.network.vec.inject = self.Iinject - - def _init_network(self,v0=el): - """Initialises the network variables before simulation""" - self.network.vec.initVm = v0 - - def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): - - self.dt = dt - self.simtime = simtime - self.T = np.ceil(simtime/dt) - self.trange = np.arange(0,self.simtime+dt,dt) - - self._init_network(**kwargs) - if plotif: - self._init_plots() - - # moose simulation - # moose auto-schedules - #moose.useClock( 0, '/network/syns', 'process' ) - #moose.useClock( 1, '/network', 'process' ) - #moose.useClock( 2, '/plotSpikes', 'process' ) - #moose.useClock( 3, '/plotVms', 'process' ) - #moose.useClock( 3, '/plotWeights', 'process' ) - for i in range(10): - moose.setClock( i, dt ) - - t1 = time.time() - print('reinit MOOSE') - moose.reinit() - print('reinit time t = ', time.time() - t1) - t1 = time.time() - print('starting') - moose.start(self.simtime) - print('runtime, t = ', time.time() - t1) - - if plotif: - self._plot() - - def _init_plots(self): - ## make a few tables to store a few Vm-s - numVms = 10 - self.plots = moose.Table( '/plotVms', numVms ) - ## draw numVms out of N neurons - # not using random.sample() here since Brian version isn't - #nrnIdxs = random.sample(range(self.N),numVms) - nrnIdxs = list(range(self.N)) - for i in range( numVms ): - moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ - self.plots.vec[i], 'input') - - ## make self.N tables to store spikes of all neurons - self.spikes = moose.Table( '/plotSpikes', self.N ) - moose.connect( self.network, 'spikeOut', \ - self.spikes, 'input', 'OneToOne' ) - - ## make 2 tables to store spikes of all exc and all inh neurons - self.spikesExc = moose.Table( '/plotSpikesAllExc' ) - for i in range(self.NmaxExc): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesExc, 'input' ) - self.spikesInh = moose.Table( '/plotSpikesAllInh' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesInh, 'input' ) - - def _plot(self): - """ plots the spike raster for the simulated net""" - - plt.figure() - for i in range(0,self.NmaxExc): - if i==0: label = 'Exc. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - plt.plot(spikes,[i]*len(spikes),\ - 'b.',marker=',',label=label) - for i in range(self.NmaxExc,self.N): - if i==self.NmaxExc: label = 'Inh. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - plt.plot(spikes,[i]*len(spikes),\ - 'r.',marker=',',label=label) - plt.xlabel('Time [ms]') - plt.ylabel('Neuron number [#]') - plt.xlim([0,self.simtime]) - plt.title("%s" % self, fontsize=14,fontweight='bold') - plt.legend(loc='upper left') - -############################################# -# Exc-Inh network class with connections (inherits from ExcInhNetBase) -############################################# - -class ExcInhNet(ExcInhNetBase): - """ Recurrent network simulation """ - - def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): - """Overloads base (parent) class""" - self.J = J # exc connection weight - self.incC = incC # number of incoming connections per neuron - self.fC = fC # fraction of exc incoming connections - self.excC = int(fC*incC)# number of exc incoming connections - self.scaleI = scaleI # inh weight is scaleI*J - self.syndelay = syndelay# synaptic delay - - # call the parent class constructor - ExcInhNetBase.__init__(self,**kwargs) - - def __str__(self): - return "LIF network of %d neurons "\ - "of which %d are exc." % (self.N,self.NmaxExc) - - def _init_network(self,**args): - ExcInhNetBase._init_network(self,**args) - - def _init_plots(self): - ExcInhNetBase._init_plots(self) - - def _setup_network(self): - ## Set up the neurons without connections - ExcInhNetBase._setup_network(self) - - ## Now, add in the connections... - ## Each LIF neuron has one incoming synapse SimpleSynHandler, - ## which collects the activation from all presynaptic neurons - ## Each pre-synaptic spike cause Vm of post-neuron to rise by - ## synaptic weight in one time step i.e. delta-fn synapse. - ## Since LIF neuron is derived from Compartment class, - ## conductance-based synapses (SynChan class) can also be used. - self.syns = moose.SimpleSynHandler( '/network/syns', self.N ); - moose.connect( self.syns, 'activationOut', self.network, \ - 'activation', 'OneToOne' ) - - random.seed(100) # set seed for reproducibility of simulations - ## Connections from some Exc/Inh neurons to each neuron - for i in range(0,self.N): - ## each neuron has incC number of synapses - self.syns.vec[i].numSynapses = self.incC - - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.syns.vec[i].synapse[synnum] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = self.J - - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.syns.vec[i].synapse[self.excC+synnum] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.J*self.scaleI - -############################################# -# Analysis functions -############################################# - -def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units. - """ - sigma = tau/2. - ## normalized Gaussian kernel, integral with dt is normed to 1 - ## to count as 1 spike smeared over a finite interval - norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) - gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ - for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) - kernel_len = len(gauss_kernel) - ## need to accommodate half kernel_len on either side of fulltime - rate_full = np.zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - ## only the middle fulltime part of the rate series - ## This is already in Hz, - ## since should have multiplied by dt for above convolution - ## and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -############################################# -# Make plots -############################################# - -def extra_plots(net): - ## extra plots apart from the spike rasters - ## individual neuron Vm-s - plt.figure() - tlen = len(net.plots.vec[0].vector) - plt.plot(net.trange[:tlen],net.plots.vec[0].vector) - plt.plot(net.trange[:tlen],net.plots.vec[1].vector) - plt.plot(net.trange[:tlen],net.plots.vec[2].vector) - plt.xlabel('time (s)') - plt.ylabel('Vm (V)') - plt.title("Vm-s of 3 LIF neurons (spike = reset).") - - timeseries = net.trange - ## individual neuron firing rates - fig = plt.figure() - plt.subplot(221) - num_to_plot = 10 - #rates = [] - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[nrni].vector,simtime,dt) - plt.plot(timeseries[:len(rate)],rate) - plt.title("Rates of "+str(num_to_plot)+" exc nrns") - plt.ylabel("Hz") - #plt.ylim(0,100) - plt.subplot(222) - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt) - plt.plot(timeseries[:len(rate)],rate) - plt.title("Rates of "+str(num_to_plot)+" inh nrns") - #plt.ylim(0,100) - - ## population firing rates - plt.subplot(223) - allspikes = [] - for nrni in range(net.NmaxExc): - allspikes.extend(net.spikes.vec[nrni].vector) - #rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ - # /float(net.NmaxExc) # per neuron - rate = rate_from_spiketrain(allspikes,simtime,dt)\ - /float(net.NmaxExc) # per neuron - plt.plot(timeseries[:len(rate)],rate) - #plt.ylim(0,100) - plt.title("Exc population rate") - plt.ylabel("Hz") - plt.xlabel("Time (s)") - plt.subplot(224) - rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ - /float(net.N-net.NmaxExc) # per neuron - plt.plot(timeseries[:len(rate)],rate) - #plt.ylim(0,100) - plt.title("Inh population rate") - plt.xlabel("Time (s)") - - fig.tight_layout() - -if __name__=='__main__': - ## ExcInhNetBase has unconnected neurons, - ## ExcInhNet connects them - ## Instantiate either ExcInhNetBase or ExcInhNet below - #net = ExcInhNetBase(N=N) - net = ExcInhNet(N=N) - print(net) - ## Important to distribute the initial Vm-s - ## else weak coupling gives periodic synchronous firing - ## not distributing Vm-s randomly to ensure match with Brian data - #net.simulate(simtime,plotif=True,\ - # v0=np.random.uniform(el-20e-3,vt,size=N)) - net.simulate(simtime,plotif=True,\ - v0=np.linspace(el-20e-3,vt,N)) - - extra_plots(net) - plt.show() - diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py deleted file mode 100644 index 2c9859b..0000000 --- a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian.py +++ /dev/null @@ -1,253 +0,0 @@ - -''' -The LIF network is based on: -Ostojic, S. (2014). - Two types of asynchronous activity in networks of - excitatory and inhibitory spiking neurons. - Nat Neurosci 17, 594-600. - -Key parameter to change is synaptic coupling J (mV). -Tested with Brian 1.4.1 - -Written by Aditya Gilra, CAMP 2014, Bangalore, 20 June, 2014. -Updated to match MOOSE implementation by Aditya Gilra, Jan, 2015. -Currently, simtime and dt are modified to compare across MOOSE, Brian1 and Brian2. -''' - -#import modules and functions to be used -from brian import * # importing brian also does: - # 'from pylab import *' which imports: - # matplot like commands into the namespace, further - # also can use np. for numpy and mpl. for matplotlib -import random -import time - -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations - -# ########################################### -# Simulation parameters -# ########################################### - -simdt = 0.01*ms -simtime = 10.0*second # Simulation time -defaultclock.dt = simdt # Brian's default sim time step -dt = defaultclock.dt/second # convert to value in seconds - -clocknrn = Clock(dt=simdt,order=0) -clocksyn = Clock(dt=simdt,order=1) - -# ########################################### -# Neuron model -# ########################################### - -# equation: dv/dt=(1/taum)*(-(v-el)) -# with spike when v>vt, reset to vr - -el = -65.*mV # Resting potential -vt = -45.*mV # Spiking threshold -taum = 20.*ms # Membrane time constant -vr = -55.*mV # Reset potential -inp = 20.1*mV/taum # input I/C to each neuron - # same as setting el=-41 mV and inp=0 -taur = 0.5*ms # Refractory period -taudelay = 0.5*ms + dt*second # synaptic delay - -eqs_neurons=''' -dv/dt=(1/taum)*(-(v-el))+inp : volt -''' - -# ########################################### -# Network parameters: numbers -# ########################################### - -N = 1000 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -# ########################################### -# Network parameters: synapses -# ########################################### - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -excC = int(fC*C) # number of exc incoming connections -J = 0.8*mV # exc strength is J (in mV as we add to voltage) - # Critical J is ~ 0.45 mV in paper for N = 1000, C = 1000 -g = 5.0 # -gJ is the inh strength. For exc-inh balance g>~f(1-f)=4 - -# ########################################### -# Initialize neuron (sub)groups -# ########################################### - -neurons=NeuronGroup(N,model=eqs_neurons,\ - threshold='v>=vt',reset=vr,refractory=taur,clock=clocknrn) -Pe=neurons.subgroup(NE) -Pi=neurons.subgroup(NI) -# not distributing uniformly to ensure match with MOOSE -#Pe.v = uniform(el,vt+10*mV,NE) -#Pi.v = uniform(el,vt+10*mV,NI) -neurons.v = linspace(el/mV-20,vt/mV,N)*mV - -# ########################################### -# Connecting the network -# ########################################### - -sparseness_e = fC*C/float(NE) -sparseness_i = (1-fC)*C/float(NI) -# Follow Dale's law -- exc (inh) neurons only have +ve (-ve) synapses. -con_e = Synapses(Pe,neurons,'',pre='v_post+=J',clock=clocksyn) -con_i = Synapses(Pi,neurons,'',pre='v_post+=-g*J',clock=clocksyn) -# I don't use Brian's connect_random, -# instead I use the same algorithm and seed as in the MOOSE version -#con_e.connect_random(sparseness=sparseness_e) -#con_i.connect_random(sparseness=sparseness_i) -## Connections from some Exc/Inh neurons to each neuron -random.seed(100) # set seed for reproducibility of simulations -for i in range(0,N): - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(NE),excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - con_e[preIdx,i]=True - ## draw inhC=C-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(N-NE),C-excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - con_i[preIdx,i]=True -con_e.delay = taudelay -con_i.delay = taudelay - -# ########################################### -# Setting up monitors -# ########################################### - -Nmon = N -Nmon_exc = int(fexc*Nmon) -Pe_mon = Pe.subgroup(Nmon_exc) -sm_e = SpikeMonitor(Pe_mon) -Pi_mon = Pi.subgroup(Nmon-Nmon_exc) -sm_i = SpikeMonitor(Pi_mon) - -# Population monitor -popm_e = PopulationRateMonitor(Pe,bin=1.*ms) -popm_i = PopulationRateMonitor(Pi,bin=1.*ms) - -# voltage monitor -sm_e_vm = StateMonitor(Pe,'v',record=range(10),clock=clocknrn) - -# ########################################### -# Simulate -# ########################################### - -print "Setup complete, running for",simtime,"at dt =",dt,"s." -t1 = time.time() -run(simtime,report='text') -print 'inittime + runtime, t = ', time.time() - t1 - -print "For g,J =",g,J,"mean exc rate =",\ - sm_e.nspikes/float(Nmon_exc)/(simtime/second),'Hz.' -print "For g,J =",g,J,"mean inh rate =",\ - sm_i.nspikes/float(Nmon-Nmon_exc)/(simtime/second),'Hz.' - -# ########################################### -# Analysis functions -# ########################################### - -def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units, - remember to divide fulltime and dt by second - """ - sigma = tau/2. - # normalized Gaussian kernel, integral with dt is normed to 1 - # to count as 1 spike smeared over a finite interval - norm_factor = 1./(sqrt(2.*pi)*sigma) - gauss_kernel = array([norm_factor*exp(-x**2/(2.*sigma**2))\ - for x in arange(-5.*sigma,5.*sigma+dt,dt)]) - kernel_len = len(gauss_kernel) - # need to accommodate half kernel_len on either side of fulltime - rate_full = zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - # only the middle fulltime part of the rate series - # This is already in Hz, - # since should have multiplied by dt for above convolution - # and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -# ########################################### -# Make plots -# ########################################### - -fig = figure() -# Vm plots -timeseries = arange(0,simtime/second+dt,dt) -for i in range(3): - plot(timeseries[:len(sm_e_vm[i])],sm_e_vm[i]) - -fig = figure() -# raster plots -subplot(231) -raster_plot(sm_e,ms=1.) -title(str(Nmon_exc)+" exc neurons") -xlabel("") -xlim([0,simtime/ms]) -subplot(234) -raster_plot(sm_i,ms=1.) -title(str(Nmon-Nmon_exc)+" inh neurons") -subplot(232) - -# firing rates -timeseries = arange(0,simtime/second+dt,dt) -num_to_plot = 10 -#rates = [] -for nrni in range(num_to_plot): - rate = rate_from_spiketrain(sm_e[nrni],simtime/second,dt) - plot(timeseries[:len(rate)],rate) - #print mean(rate),len(sm_e[nrni]) - #rates.append(rate) -title(str(num_to_plot)+" exc rates") -ylabel("Hz") -ylim(0,300) -subplot(235) -for nrni in range(num_to_plot): - rate = rate_from_spiketrain(sm_i[nrni],simtime/second,dt) - plot(timeseries[:len(rate)],rate) - #print mean(rate),len(sm_i[nrni]) - #rates.append(rate) -title(str(num_to_plot)+" inh rates") -ylim(0,300) -#print "Mean rate = ",mean(rates) -xlabel("Time (s)") -ylabel("Hz") - -# Population firing rates -subplot(233) -timeseries = arange(0,simtime/second,dt) -allspikes = [] -for nrni in range(NE): - allspikes.extend(sm_e[nrni]) -#plot(timeseries,popm_e.smooth_rate(width=50.*ms,filter="gaussian"),color='grey') -rate = rate_from_spiketrain(allspikes,simtime/second,dt)/float(NE) -plot(timeseries[:len(rate)],rate) -title("Exc population rate") -ylabel("Hz") -subplot(236) -timeseries = arange(0,simtime/second,dt) -allspikes = [] -for nrni in range(NI): - allspikes.extend(sm_i[nrni]) -#plot(timeseries,popm_i.smooth_rate(width=50.*ms,filter="gaussian"),color='grey') -rate = rate_from_spiketrain(allspikes,simtime/second,dt)/float(NI) -plot(timeseries[:len(rate)],rate) -title("Inh population rate") -xlabel("Time (s)") -ylabel("Hz") - -fig.tight_layout() - -show() diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py deleted file mode 100644 index c4c7770..0000000 --- a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2.py +++ /dev/null @@ -1,243 +0,0 @@ - -''' -The LIF network is based on: -Ostojic, S. (2014). - Two types of asynchronous activity in networks of - excitatory and inhibitory spiking neurons. - Nat Neurosci 17, 594-600. - -Key parameter to change is synaptic coupling J (mV). -Tested with Brian 1.4.1 - -Written by Aditya Gilra, CAMP 2014, Bangalore, 20 June, 2014. -Updated to match MOOSE implementation by Aditya Gilra, Jan, 2015. -Currently, simtime and dt are modified to compare across MOOSE, Brian1 and Brian2. -''' - -#import modules and functions to be used -from brian2 import * # importing brian also does: - # 'from pylab import *' which imports: - # matplot like commands into the namespace, further - # also can use np. for numpy and mpl. for matplotlib -#prefs.codegen.target='numpy' -#prefs.codegen.target='weave' -set_device('cpp_standalone') -import random -import time - -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations - -# ########################################### -# Simulation parameters -# ########################################### - -simdt = 0.01*ms -simtime = 10.0*second # Simulation time -defaultclock.dt = simdt # Brian's default sim time step -dt = defaultclock.dt/second # convert to value in seconds - -# ########################################### -# Neuron model -# ########################################### - -# equation: dv/dt=(1/taum)*(-(v-el)) -# with spike when v>vt, reset to vr - -el = -65.*mV # Resting potential -vt = -45.*mV # Spiking threshold -taum = 20.*ms # Membrane time constant -vr = -55.*mV # Reset potential -inp = 20.1*mV/taum # input I/C to each neuron - # same as setting el=-41 mV and inp=0 -taur = 0.5*ms # Refractory period -taudelay = 0.5*ms + dt*second # synaptic delay - -eqs_neurons=''' -dv/dt=(1/taum)*(-(v-el))+inp : volt -''' - -# ########################################### -# Network parameters: numbers -# ########################################### - -N = 1000 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -# ########################################### -# Network parameters: synapses -# ########################################### - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -excC = int(fC*C) # number of exc incoming connections -J = 0.8*mV # exc strength is J (in mV as we add to voltage) - # Critical J is ~ 0.45 mV in paper for N = 1000, C = 1000 -g = 5.0 # -gJ is the inh strength. For exc-inh balance g>~f(1-f)=4 - -# ########################################### -# Initialize neuron (sub)groups -# ########################################### - -P=NeuronGroup(N,model=eqs_neurons,\ - threshold='v>=vt',reset='v=vr',refractory=taur,method='euler') -# not distributing uniformly to ensure match with MOOSE -#Pe.v = uniform(el,vt+10*mV,NE) -#Pi.v = uniform(el,vt+10*mV,NI) -P.v = linspace(el/mV-20,vt/mV,N)*mV - -# ########################################### -# Connecting the network -# ########################################### - -sparseness_e = fC*C/float(NE) -sparseness_i = (1-fC)*C/float(NI) -# Follow Dale's law -- exc (inh) neurons only have +ve (-ve) synapses -# hence need to set w correctly (always set after creating connections -con = Synapses(P,P,'w:volt',pre='v_post+=w',method='euler') -# I don't use Brian's connect_random, -# instead I use the same algorithm and seed as in the MOOSE version -#con_e.connect_random(sparseness=sparseness_e) -#con_i.connect_random(sparseness=sparseness_i) -## Connections from some Exc/Inh neurons to each neuron -random.seed(100) # set seed for reproducibility of simulations -conn_i = [] -conn_j = [] -for j in range(0,N): - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxsE = random.sample(range(NE),excC) - ## draw inhC=C-excC number of neuron indices out of inhibitory neurons - preIdxsI = random.sample(range(NE,N),C-excC) - ## connect these presynaptically to i-th post-synaptic neuron - ## choose the synapses object based on whether post-syn nrn is exc or inh - conn_i += preIdxsE - conn_j += [j]*excC - conn_i += preIdxsI - conn_j += [j]*(C-excC) -con.connect(conn_i,conn_j) -con.delay = taudelay -con.w['i=NE'] = -g*J - -# ########################################### -# Setting up monitors -# ########################################### - -Nmon = N -sm = SpikeMonitor(P) - -# Population monitor -popm = PopulationRateMonitor(P) - -# voltage monitor -sm_vm = StateMonitor(P,'v',record=range(10)+range(NE,NE+10)) - -# ########################################### -# Simulate -# ########################################### - -print "Setup complete, running for",simtime,"at dt =",dt,"s." -t1 = time.time() -run(simtime,report='text') -device.build(directory='output', compile=True, run=True, debug=False) -print 'inittime + runtime, t = ', time.time() - t1 - -#print "For g,J =",g,J,"mean exc rate =",\ -# sm_e.num_spikes/float(NE)/(simtime/second),'Hz.' -#print "For g,J =",g,J,"mean inh rate =",\ -# sm_i.num_spikes/float(NI)/(simtime/second),'Hz.' - -# ########################################### -# Analysis functions -# ########################################### - -tau=50e-3 -sigma = tau/2. -# normalized Gaussian kernel, integral with dt is normed to 1 -# to count as 1 spike smeared over a finite interval -norm_factor = 1./(sqrt(2.*pi)*sigma) -gauss_kernel = array([norm_factor*exp(-x**2/(2.*sigma**2))\ - for x in arange(-5.*sigma,5.*sigma+dt,dt)]) -def rate_from_spiketrain(spikemon,fulltime,nrnidx=None): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units, - remember to divide fulltime and dt by second - """ - if nrnidx is None: - spiketimes = spikemon.t # take spiketimes of all neurons - else: - # take spiketimes of only neuron index nrnidx - spiketimes = spikemon.t[where(spikemon.i==nrnidx)[0]] - kernel_len = len(gauss_kernel) - # need to accommodate half kernel_len on either side of fulltime - rate_full = zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - # only the middle fulltime part of the rate series - # This is already in Hz, - # since should have multiplied by dt for above convolution - # and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -# ########################################### -# Make plots -# ########################################### - -fig = figure() -# Vm plots -timeseries = arange(0,simtime/second+dt,dt) -for i in range(3): - plot(timeseries[:len(sm_vm.t)],sm_vm[i].v) - -fig = figure() -# raster plots -subplot(231) -plot(sm.t,sm.i,',') -title(str(N)+" exc & inh neurons") -xlim([0,simtime/second]) -xlabel("") - -print "plotting firing rates" -subplot(232) -# firing rates -timeseries = arange(0,simtime/second+dt,dt) -num_to_plot = 10 -#rates = [] -for nrni in range(num_to_plot): - rate = rate_from_spiketrain(sm,simtime/second,nrni) - plot(timeseries[:len(rate)],rate) - #print mean(rate),len(sm_e[nrni]) - #rates.append(rate) -title(str(num_to_plot)+" exc rates") -ylabel("Hz") -ylim(0,300) -subplot(235) -for nrni in range(NE,NE+num_to_plot): - rate = rate_from_spiketrain(sm,simtime/second,nrni) - plot(timeseries[:len(rate)],rate) - #print mean(rate),len(sm_i[nrni]) - #rates.append(rate) -title(str(num_to_plot)+" inh rates") -ylim(0,300) -#print "Mean rate = ",mean(rates) -xlabel("Time (s)") -ylabel("Hz") - -print "plotting pop firing rates" -# Population firing rates -subplot(233) -timeseries = arange(0,simtime/second,dt) -#plot(timeseries,popm_e.smooth_rate(width=50.*ms,filter="gaussian"),color='grey') -rate = rate_from_spiketrain(sm,simtime/second)/float(N) -plot(timeseries[:len(rate)],rate) -title("population rate") -ylabel("Hz") -xlabel("Time (s)") - -fig.tight_layout() - -show() diff --git a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py b/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py deleted file mode 100644 index 92b8f12..0000000 --- a/examples/tutorials/ExcInhNet/ExcInhNet_Ostojic2014_Brunel2000_brian2_slow_2pops_4syns.py +++ /dev/null @@ -1,262 +0,0 @@ - -''' -The LIF network is based on: -Ostojic, S. (2014). - Two types of asynchronous activity in networks of - excitatory and inhibitory spiking neurons. - Nat Neurosci 17, 594-600. - -Key parameter to change is synaptic coupling J (mV). -Tested with Brian 1.4.1 - -Written by Aditya Gilra, CAMP 2014, Bangalore, 20 June, 2014. -Updated to match MOOSE implementation by Aditya Gilra, Jan, 2015. -Currently, simtime and dt are modified to compare across MOOSE, Brian1 and Brian2. -''' - -#import modules and functions to be used -from brian2 import * # importing brian also does: - # 'from pylab import *' which imports: - # matplot like commands into the namespace, further - # also can use np. for numpy and mpl. for matplotlib -#prefs.codegen.target='numpy' -prefs.codegen.target='weave' -import random -import time - -np.random.seed(100) # set seed for reproducibility of simulations -random.seed(100) # set seed for reproducibility of simulations - -# ########################################### -# Simulation parameters -# ########################################### - -simdt = 0.001*ms -simtime = 0.2*second # Simulation time -defaultclock.dt = simdt # Brian's default sim time step -dt = defaultclock.dt/second # convert to value in seconds - -# ########################################### -# Neuron model -# ########################################### - -# equation: dv/dt=(1/taum)*(-(v-el)) -# with spike when v>vt, reset to vr - -el = -65.*mV # Resting potential -vt = -45.*mV # Spiking threshold -taum = 20.*ms # Membrane time constant -vr = -55.*mV # Reset potential -inp = 20.1*mV/taum # input I/C to each neuron - # same as setting el=-41 mV and inp=0 -taur = 0.5*ms # Refractory period -taudelay = 0.5*ms + dt*second # synaptic delay - -eqs_neurons=''' -dv/dt=(1/taum)*(-(v-el))+inp : volt -''' - -# ########################################### -# Network parameters: numbers -# ########################################### - -N = 1000 # Total number of neurons -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -# ########################################### -# Network parameters: synapses -# ########################################### - -C = 100 # Number of incoming connections on each neuron (exc or inh) -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -excC = int(fC*C) # number of exc incoming connections -J = 0.8*mV # exc strength is J (in mV as we add to voltage) - # Critical J is ~ 0.45 mV in paper for N = 1000, C = 1000 -g = 5.0 # -gJ is the inh strength. For exc-inh balance g>~f(1-f)=4 - -# ########################################### -# Initialize neuron (sub)groups -# ########################################### - -Pe=NeuronGroup(NE,model=eqs_neurons,\ - threshold='v>=vt',reset='v=vr',refractory=taur) -Pi=NeuronGroup(NI,model=eqs_neurons,\ - threshold='v>=vt',reset='v=vr',refractory=taur) -# not distributing uniformly to ensure match with MOOSE -#Pe.v = uniform(el,vt+10*mV,NE) -#Pi.v = uniform(el,vt+10*mV,NI) -vrange = linspace(el/mV-20,vt/mV,N)*mV -Pe.v = vrange[:NE] -Pi.v = vrange[NE:N] - -# ########################################### -# Connecting the network -# ########################################### - -sparseness_e = fC*C/float(NE) -sparseness_i = (1-fC)*C/float(NI) -# Follow Dale's law -- exc (inh) neurons only have +ve (-ve) synapses. -con_ee = Synapses(Pe,Pe,'',pre='v_post+=J') -con_ie = Synapses(Pe,Pi,'',pre='v_post+=J') -con_ei = Synapses(Pi,Pe,'',pre='v_post+=-g*J') -con_ii = Synapses(Pi,Pi,'',pre='v_post+=-g*J') -# I don't use Brian's connect_random, -# instead I use the same algorithm and seed as in the MOOSE version -#con_e.connect_random(sparseness=sparseness_e) -#con_i.connect_random(sparseness=sparseness_i) -## Connections from some Exc/Inh neurons to each neuron -random.seed(100) # set seed for reproducibility of simulations -print "Creating connections (very slow, use the optimized script)" -for i in range(0,N): - if i%100==0: print "Connecting post syn nrn",i - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxsE = random.sample(range(NE),excC) - ## draw inhC=C-excC number of neuron indices out of inhibitory neurons - preIdxsI = random.sample(range(N-NE),C-excC) - ## connect these presynaptically to i-th post-synaptic neuron - ## choose the synapses object based on whether post-syn nrn is exc or inh - if ivt, reset to vr - -el = -70e-3 #V # Resting potential -vt = -50e-3 #V # Spiking threshold -Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts -Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm -taum = Rm*Cm #s # Membrane time constant is 20 ms -vr = -60e-3 #V # Reset potential -Iinject = 11.5e-3/Rm # constant current injection into LIF neuron - # same as setting el=-70+15=-55 mV and inp=0 -noiseInj = True # inject noisy current into each cell: boolean -noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' - # SD*sqrt(taum) is used as noise current SD - -############################################# -# Network parameters: numbers -############################################# - -red_fact = 10 # reduction factor for N,C,J -N = 10000/red_fact # Total number of neurons # 10000 in paper -fexc = 0.8 # Fraction of exc neurons -NE = int(fexc*N) # Number of excitatory cells -NI = N-NE # Number of inhibitory cells - -############################################# -# Simulation parameters -############################################# - -simtime = 30.0 #s # Simulation time -dt = 1e-3 #s # time step # 1e-5 in paper - -############################################# -# Network parameters: synapses (not for ExcInhNetBase) -############################################# - -## With each presynaptic spike in exc / inh neuron, -## J / -g*J is added to post-synaptic Vm -- delta-fn synapse -## Since LIF neuron used below is derived from Compartment class, -## conductance-based synapses (SynChan class) can also be used. - -C = 500/red_fact # Number of incoming connections on each neuron (exc or inh) - # 5% conn prob between any two neurons - # Since we reduced N from 10000 to 1000, C = 50 instead of 500 - # but we need to increase J by 10 to maintain total input per neuron -fC = fexc # fraction fC incoming connections are exc, rest inhibitory -J = 0.1e-3 #V # exc strength is J (in V as we add to voltage) # 0.1 in paper - # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 - # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V -J *= red_fact # Multiply J by red_fact to compensate C/red_fact. -g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 -syndelay = dt # synaptic delay is same as time step -refrT = 0.0 # s # absolute refractory time - -############################################# -# Ca Plasticity parameters: synapses (not for ExcInhNetBase) -############################################# - -CaPlasticity = True # set it True or False to turn on/off plasticity -tauCa = 22.6936e-3 # s # Ca decay time scale -tauSyn = 346.3615 # s # synaptic plasticity time scale -## in vitro values in Higgins et al 2014, faster plasticity -CaPre = 0.56175 # mM -CaPost = 1.2964 # mM -## in vivo values in Higgins et al 2014, slower plasticity -#CaPre = 0.33705 # mM -#CaPost = 0.74378 # mM -### accelerated values compared to Higgins et al 2014, faster plasticity -#CaPre = 1.2 # mM -#CaPost = 2.0 # mM -delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay - # proxy for rise-time of NMDA -thetaD = 1.0 # mM # depression threshold for Ca -thetaP = 1.3 # mM # potentiation threshold for Ca -gammaD = 331.909 # factor for depression term -gammaP = 725.085 # factor for potentiation term - -#eqWeight = 0.5 # initial synaptic weight - # gammaP/(gammaP+gammaD) = eq weight w/o noise - # but see eqn (22), noiseSD also appears -eqWeight = 0.15 # from Fig 5 of Higgins et al, simulated, in vitro params - -bistable = False # if bistable is True, use bistable potential for weights -noisy = True # use noisy weight updates given by noiseSD -noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) -#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 - -############################################# -# Exc-Inh network base class without connections -############################################# - -class ExcInhNetBase: - """Simulates and plots LIF neurons (exc and inh separate). - """ - - def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ - refrT=refrT,Iinject=Iinject): - """ Constructor of the class """ - - self.N = N # Total number of neurons - self.fexc = fexc # Fraction of exc neurons - self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh - - self.el = el # Resting potential - self.vt = vt # Spiking threshold - self.taum = taum # Membrane time constant - self.vr = vr # Reset potential - self.refrT = refrT # Absolute refractory period - self.Rm = Rm # Membrane resistance - self.Cm = Cm # Membrane capacitance - self.Iinject = Iinject # constant input current - self.noiseInjSD = noiseInjSD # SD of injected noise - - self.simif = False # whether the simulation is complete - - self._setup_network() - - def __str__(self): - return "LIF network of %d neurons "\ - "having %d exc." % (self.N,self.NmaxExc) - - def _setup_network(self): - """Sets up the network (_init_network is enough)""" - self.network = moose.LIF( 'network', self.N ); - moose.le( '/network' ) - self.network.vec.Em = self.el - self.network.vec.thresh = self.vt - self.network.vec.refractoryPeriod = self.refrT - self.network.vec.Rm = self.Rm - self.network.vec.vReset = self.vr - self.network.vec.Cm = self.Cm - if not noiseInj: - self.network.vec.inject = self.Iinject - else: - ## inject a constant + noisy current - ## values are set in self.simulate() - self.noiseTables = moose.StimulusTable('noiseTables',self.N) - moose.connect( self.noiseTables, 'output', \ - self.network, 'setInject', 'OneToOne') - - def _init_network(self,v0=el): - """Initialises the network variables before simulation""" - self.network.vec.initVm = v0 - - def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): - - self.dt = dt - self.simtime = simtime - self.T = np.ceil(simtime/dt) - self.trange = np.arange(0,self.simtime,dt) - - print("Noise injections being set ...") - for i in range(self.N): - if noiseInj: - ## Gaussian white noise SD added every dt interval should be - ## divided by sqrt(dt), as the later numerical integration - ## will multiply it by dt. - ## See the Euler-Maruyama method, numerical integration in - ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems - self.noiseTables.vec[i].vector = self.Iinject + \ - np.random.normal( \ - scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ - size=self.T ) # scale = SD - self.noiseTables.vec[i].stepSize = 0 # use current time - # as x value for interpolation - self.noiseTables.vec[i].stopTime = self.simtime - - print("init membrane potentials being set ... ") - self._init_network(**kwargs) - print("initializing plots ... ") - if plotif: - self._init_plots() - - ## MOOSE simulation - - ## MOOSE assigns clocks by default, no need to set manually - #print "setting clocks ... " - #moose.useClock( 1, '/network', 'process' ) - #moose.useClock( 2, '/plotSpikes', 'process' ) - #moose.useClock( 3, '/plotVms', 'process' ) - #if CaPlasticity: - # moose.useClock( 3, '/plotWeights', 'process' ) - # moose.useClock( 3, '/plotCa', 'process' ) - ## Do need to set the dt for MOOSE clocks - for i in range(10): - moose.setClock( i, dt ) - - t1 = time.time() - print('reinit MOOSE -- takes a while ~20s.') - moose.reinit() - print('reinit time t = ', time.time() - t1) - t1 = time.time() - print('starting run ...') - moose.start(self.simtime) - print('runtime, t = ', time.time() - t1) - - if plotif: - self._plot() - - def _init_plots(self): - ## make a few tables to store a few Vm-s - numVms = 10 - self.plots = moose.Table( '/plotVms', numVms ) - ## draw numVms out of N neurons - nrnIdxs = random.sample(list(range(self.N)),numVms) - for i in range( numVms ): - moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ - self.plots.vec[i], 'input') - - ## make self.N tables to store spikes of all neurons - self.spikes = moose.Table( '/plotSpikes', self.N ) - moose.connect( self.network, 'spikeOut', \ - self.spikes, 'input', 'OneToOne' ) - - ## make 2 tables to store spikes of all exc and all inh neurons - self.spikesExc = moose.Table( '/plotSpikesAllExc' ) - for i in range(self.NmaxExc): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesExc, 'input' ) - self.spikesInh = moose.Table( '/plotSpikesAllInh' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.network.vec[i], 'spikeOut', \ - self.spikesInh, 'input' ) - - def _plot(self): - """ plots the spike raster for the simulated net""" - - plt.figure() - for i in range(0,self.NmaxExc): - if i==0: label = 'Exc. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - plt.plot(spikes,[i]*len(spikes),\ - 'b.',marker='.',label=label) - for i in range(self.NmaxExc,self.N): - if i==self.NmaxExc: label = 'Inh. spike trains' - else: label = '' - spikes = self.spikes.vec[i].vector - plt.plot(spikes,[i]*len(spikes),\ - 'r.',marker='.',label=label) - plt.xlabel('Time (s)') - plt.ylabel('Neuron number [#]') - plt.xlim([0,self.simtime]) - plt.title("%s" % self, fontsize=14,fontweight='bold') - plt.legend(loc='upper left') - -############################################# -# Exc-Inh network class with Ca plasticity based connections -# (inherits from ExcInhNetBase) -############################################# - -class ExcInhNet(ExcInhNetBase): - """ Recurrent network simulation """ - - def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): - """Overloads base (parent) class""" - self.J = J # exc connection weight - self.incC = incC # number of incoming connections per neuron - self.fC = fC # fraction of exc incoming connections - self.excC = int(fC*incC)# number of exc incoming connections - self.scaleI = scaleI # inh weight is scaleI*J - self.syndelay = syndelay# synaptic delay - - # call the parent class constructor - ExcInhNetBase.__init__(self,**kwargs) - - def __str__(self): - return "LIF network of %d neurons "\ - "of which %d are exc." % (self.N,self.NmaxExc) - - def _init_network(self,**args): - ExcInhNetBase._init_network(self,**args) - - def _init_plots(self): - ExcInhNetBase._init_plots(self) - if CaPlasticity: - self.recNCa = 5 # number of synapses for which to record Ca - # as range(self.N) is too large - self.recNwt = 20 # number of synapses for which to record weights - - ## make tables to store weights of recN exc synapses - self.weightsEq = moose.Table( '/plotWeightsEq', self.recNwt ) - wtidx = 0 - for i in range(self.N): - for j in range(self.excC): - if self.excC*i+j not in self.potSyns: - moose.connect( self.weightsEq.vec[wtidx], 'requestOut', - self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') - wtidx += 1 - if wtidx >= self.recNwt: break - ## break only breaks out of one loop, hence repeated here! - if wtidx >= self.recNwt: break - - self.weightsUp = moose.Table( '/plotWeightsUp', self.recNwt ) - for i in range(self.recNwt): # range(self.N) is too large - moose.connect( self.weightsUp.vec[i], 'requestOut', - self.synsEE.vec[self.potSyns[i]].synapse[0], 'getWeight') - - self.CaTables = moose.Table( '/plotCa', self.recNCa ) - for i in range(self.recNCa): # range(self.N) is too large - moose.connect( self.CaTables.vec[i], 'requestOut', - self.synsEE.vec[i*self.excC], 'getCa') - - def _setup_network(self): - ## Set up the neurons without connections - ExcInhNetBase._setup_network(self) - - ## Now, add in the connections... - ## Each pre-synaptic spike cause Vm of post-neuron to rise by - ## synaptic weight in one time step i.e. delta-fn synapse. - ## Since LIF neuron is derived from Compartment class, - ## conductance-based synapses (SynChan class) can also be used. - - ## E to E synapses can be plastic - ## Two ways to do this: - ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, - ## which collects the activation from all presynaptic neurons, - ## but then a common Ca pool is used. - ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, - ## one for each pre-synaptic neuron, i.e. one per synapse, - ## then each synapse has a different Ca pool. - ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) - ## separate SynHandler per EE synapse, thus NmaxExc*excC - if CaPlasticity: - self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - else: - self.synsEE = moose.SimpleSynHandler( \ - '/network/synsEE', self.NmaxExc*self.excC ) - #moose.useClock( 0, '/network/synsEE', 'process' ) - - ## I to E synapses are not plastic - self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) - ## all synapses to I neurons are not plastic - self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) - ## connect all SynHandlers to their respective neurons - for i in range(self.NmaxExc): - moose.connect( self.synsIE.vec[i], 'activationOut', \ - self.network.vec[i], 'activation' ) - for i in range(self.NmaxExc,self.N): - moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ - self.network.vec[i], 'activation' ) - - ## Connections from some Exc/Inh neurons to each Exc neuron - self.potSyns = [] # list of potentiated synapses - for i in range(0,self.NmaxExc): - self.synsIE.vec[i].numSynapses = self.incC-self.excC - - ## Connections from some Exc neurons to each Exc neuron - ## draw excC number of neuron indices out of NmaxExc neurons - prelist = list(range(self.NmaxExc)) - prelist.remove(i) # disallow autapse - preIdxs = random.sample(prelist,self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synidx = i*self.excC+synnum - synHand = self.synsEE.vec[synidx] - - ## connect each synhandler to the post-synaptic neuron - moose.connect( synHand, 'activationOut', \ - self.network.vec[i], 'activation' ) - ## important to set numSynapses = 1 for each synHandler, - ## doesn't create synapses if you set the full array of SynHandlers - synHand.numSynapses = 1 - - synij = synHand.synapse[0] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - if CaPlasticity: - ## set parameters for the Ca Plasticity SynHandler - ## have to be set for each SynHandler - ## doesn't set for full array at a time - synHand.CaInit = 0.0 - synHand.tauCa = tauCa - synHand.tauSyn = tauSyn - synHand.CaPre = CaPre - synHand.CaPost = CaPost - synHand.delayD = delayD - synHand.thetaD = thetaD - synHand.thetaP = thetaP - synHand.gammaD = gammaD - synHand.gammaP = gammaP - synHand.weightMax = 1.0 # bounds on the weight - synHand.weightMin = 0.0 - synHand.weightScale = \ - self.J*2.0 # 0.2 mV, weight*weightScale is activation - # typically weight <~ 0.5, so activation <~ J - synHand.noisy = noisy - synHand.noiseSD = noiseSD - synHand.bistable = bistable - - moose.connect( self.network.vec[i], \ - 'spikeOut', synHand, 'addPostSpike') - synij.weight = eqWeight # activation = weight*weightScale - # weightScale = 2*J - # weight <~ 0.5 - ## Randomly set 5% of them to be 1.0 - ## for Fig 5 of paper - if np.random.uniform()<0.05: - synij.weight = 1.0 - self.potSyns.append(synidx) - else: - synij.weight = self.J # no weightScale if not plastic, activation = weight - - ## Connections from some Inh neurons to each Exc neuron - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsIE.vec[i].synapse[synnum] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - ## Connections from some Exc/Inh neurons to each Inh neuron - for i in range(self.N-self.NmaxExc): - ## each neuron has incC number of synapses - self.synsI.vec[i].numSynapses = self.incC - - ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[synnum] - connectExcId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = self.J # activation = weight - - ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - prelist = list(range(self.NmaxExc,self.N)) - prelist.remove(i+self.NmaxExc) # disallow autapse - preIdxs = random.sample(prelist,self.incC-self.excC) - ## connect these presynaptically to i-th post-synaptic neuron - for synnum,preIdx in enumerate(preIdxs): - synij = self.synsI.vec[i].synapse[ self.excC + synnum ] - connectInhId = moose.connect( self.network.vec[preIdx], \ - 'spikeOut', synij, 'addSpike') - synij.delay = syndelay - synij.weight = -self.scaleI*self.J # activation = weight - - #moose.useClock( 0, '/network/synsIE', 'process' ) - #moose.useClock( 0, '/network/synsI', 'process' ) - -############################################# -# Analysis functions -############################################# - -def rate_from_spiketrain(spiketimes,fulltime,dt,tau=200e-3): - """ - Returns a rate series of spiketimes convolved with a Gaussian kernel; - all times must be in SI units. - """ - sigma = tau/2. - ## normalized Gaussian kernel, integral with dt is normed to 1 - ## to count as 1 spike smeared over a finite interval - norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) - gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ - for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) - kernel_len = len(gauss_kernel) - ## need to accommodate half kernel_len on either side of fulltime - rate_full = np.zeros(int(fulltime/dt)+kernel_len) - for spiketime in spiketimes: - idx = int(spiketime/dt) - rate_full[idx:idx+kernel_len] += gauss_kernel - ## only the middle fulltime part of the rate series - ## This is already in Hz, - ## since should have multiplied by dt for above convolution - ## and divided by dt to get a rate, so effectively not doing either. - return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] - -############################################# -# Make plots, save data -############################################# - -def save_data(net): - f = open("fig5_data.pickle", "wb") - timeseries = net.trange - pickle.dump((timeseries,simtime,dt),f) - pickle.dump((net.N,net.NmaxExc),f) - for nrni in range(net.N): - pickle.dump(net.spikes.vec[nrni].vector,f) - pickle.dump(net.spikesExc.vector,f) - pickle.dump(net.spikesInh.vector,f) - if CaPlasticity: - pickle.dump(net.recNCa,f) - for i in range(net.recNCa): - pickle.dump(net.CaTables.vec[i].vector[:len(timeseries)],f) - pickle.dump(net.recNwt,f) - for i,wtarray in enumerate(net.weightsEq.vec): - pickle.dump(wtarray.vector[:len(timeseries)],f) - for i,wtarray in enumerate(net.weightsUp.vec): - pickle.dump(wtarray.vector[:len(timeseries)],f) - ## all EE weights are used for a histogram - weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ - for i in range(net.NmaxExc) for j in range(net.excC) ] - pickle.dump(weights,f) - f.close() - -####### figure defaults -label_fontsize = 8 # pt -plot_linewidth = 0.5 # pt -linewidth = 1.0#0.5 -axes_linewidth = 0.5 -marker_size = 3.0 # markersize=<...> -cap_size = 2.0 # for errorbar caps, capsize=<...> -columnwidth = 85/25.4 # inches -twocolumnwidth = 174/25.4 # inches -linfig_height = columnwidth*2.0/3.0 -fig_dpi = 300 - -def set_tick_widths(ax,tick_width): - for tick in ax.xaxis.get_major_ticks(): - tick.tick1line.set_markeredgewidth(tick_width) - tick.tick2line.set_markeredgewidth(tick_width) - for tick in ax.xaxis.get_minor_ticks(): - tick.tick1line.set_markeredgewidth(tick_width) - tick.tick2line.set_markeredgewidth(tick_width) - for tick in ax.yaxis.get_major_ticks(): - tick.tick1line.set_markeredgewidth(tick_width) - tick.tick2line.set_markeredgewidth(tick_width) - for tick in ax.yaxis.get_minor_ticks(): - tick.tick1line.set_markeredgewidth(tick_width) - tick.tick2line.set_markeredgewidth(tick_width) - -def axes_labels(ax,xtext,ytext,adjustpos=False,\ - fontsize=label_fontsize,xpad=None,ypad=None): - ax.set_xlabel(xtext,fontsize=fontsize,labelpad=xpad) - # increase xticks text sizes - for label in ax.get_xticklabels(): - label.set_fontsize(fontsize) - ax.set_ylabel(ytext,fontsize=fontsize,labelpad=ypad) - # increase yticks text sizes - for label in ax.get_yticklabels(): - label.set_fontsize(fontsize) - if adjustpos: - ## [left,bottom,width,height] - ax.set_position([0.135,0.125,0.84,0.75]) - set_tick_widths(ax,axes_linewidth) - -def biglegend(legendlocation='upper right',ax=None,\ - fontsize=label_fontsize, **kwargs): - if ax is not None: - leg=ax.legend(loc=legendlocation, **kwargs) - else: - leg=plt.legend(loc=legendlocation, **kwargs) - # increase legend text sizes - for t in leg.get_texts(): - t.set_fontsize(fontsize) - -def load_plot_Fig5(): - if os.path.isfile("fig5_data.pickle"): - f = open("fig5_data.pickle", "rb") - else: - print("You need to simulate first before loading data file.") - print("re-run with sim as a command line argument.") - sys.exit() - fig = plt.figure(facecolor="w",\ - figsize=(columnwidth,linfig_height),dpi=fig_dpi) - timeseries,simtime,dt = pickle.load(f) - - ## population firing rates - N,NmaxExc = pickle.load(f) - ax = plt.subplot(211) - for nrni in range(N): - strain = pickle.load(f) - #plt.plot(strain,[nrni]*len(strain),'.') - strainExc = pickle.load(f) - rate = rate_from_spiketrain(np.array(strainExc),simtime,dt)\ - /float(NmaxExc) # per neuron - plt.plot(timeseries/60,rate,label="exc",linewidth=plot_linewidth) - strainInh = pickle.load(f) - rate = rate_from_spiketrain(np.array(strainInh),simtime,dt)\ - /float(N-NmaxExc) # per neuron - plt.plot(timeseries/60,rate,label="inh",linewidth=plot_linewidth) - #biglegend() - plt.ylim(0,2) - plt.xticks([]) - axes_labels(ax,"","mean rate (Hz)") - - if CaPlasticity: - NCa = pickle.load(f) - #plt.subplot(312) - caconcs = [] - for i in range(NCa): - caconcs.append(pickle.load(f)) - #plt.plot(timeseries/60,np.mean(caconcs,axis=0)) - - ax = plt.subplot(212) - Nwt = pickle.load(f) - wtarrayseq = [] - for i in range(Nwt): - wtarray = pickle.load(f) - wtarrayseq.append(wtarray) - plt.plot(timeseries/60,wtarray,color='#ffaaaa',\ - linewidth=plot_linewidth) - - wtarraysup = [] - for i in range(Nwt): - wtarray = pickle.load(f) - wtarraysup.append(wtarray) - plt.plot(timeseries/60,wtarray,color='#aaaaff',\ - linewidth=plot_linewidth) - plt.plot(timeseries/60,np.mean(wtarrayseq,axis=0),color='r',\ - linewidth=plot_linewidth) - plt.plot(timeseries/60,np.mean(wtarraysup,axis=0),color='b',\ - linewidth=plot_linewidth) - #plt.title("Evolution of efficacies",fontsize=label_fontsize) - axes_labels(ax,"Time (min)","Efficacy") - - #plt.subplot(133) - ### all EE weights are used for a histogram - weights = pickle.load(f) - #plt.hist(weights, bins=100) - #plt.title("Histogram of efficacies") - #plt.xlabel("Efficacy (arb)") - #plt.ylabel("# per bin") - - fig.tight_layout() - # plt.show( ) - # f.close() - # fig.savefig("HGB2014_Fig5ab_MOOSE.tif",dpi=fig_dpi) - -def extra_plots(net): - ## extra plots apart from the spike rasters - ## individual neuron Vm-s - plt.figure() - plt.plot(net.trange,net.plots.vec[0].vector[0:len(net.trange)]) - plt.plot(net.trange,net.plots.vec[1].vector[0:len(net.trange)]) - plt.plot(net.trange,net.plots.vec[2].vector[0:len(net.trange)]) - plt.xlabel('time (s)') - plt.ylabel('Vm (V)') - plt.title("Vm-s of 3 LIF neurons (spike = reset).") - - timeseries = net.trange - ## individual neuron firing rates - fig = plt.figure() - plt.subplot(221) - num_to_plot = 10 - #rates = [] - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[nrni].vector,simtime,dt) - plt.plot(timeseries,rate) - plt.title("Rates of "+str(num_to_plot)+" exc nrns") - plt.ylabel("Hz") - plt.ylim(0,100) - plt.subplot(222) - for nrni in range(num_to_plot): - rate = rate_from_spiketrain(\ - net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt) - plt.plot(timeseries,rate) - plt.title("Rates of "+str(num_to_plot)+" inh nrns") - plt.ylim(0,100) - - ## population firing rates - plt.subplot(223) - rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ - /float(net.NmaxExc) # per neuron - plt.plot(timeseries,rate) - plt.ylim(0,100) - plt.title("Exc population rate") - plt.ylabel("Hz") - plt.xlabel("Time (s)") - plt.subplot(224) - rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ - /float(net.N-net.NmaxExc) # per neuron - plt.plot(timeseries,rate) - plt.ylim(0,100) - plt.title("Inh population rate") - plt.xlabel("Time (s)") - - fig.tight_layout() - - ## Ca plasticity: weight vs time plots - if CaPlasticity: - ## Ca versus time in post-synaptic neurons - plt.figure() - for i in range(net.recNCa): # range(net.N) is too large - plt.plot(timeseries,\ - net.CaTables.vec[i].vector[:len(timeseries)]) - plt.title("Evolution of Ca in some neurons") - plt.xlabel("Time (s)") - plt.ylabel("Ca (mM)") - - plt.figure() - wtarrays = np.zeros((len(timeseries),net.recNwt)) - for i,wtarray in enumerate(net.weightsEq.vec): - wtarrays[:,i] = wtarray.vector[:len(timeseries)] - plt.plot(timeseries,wtarrays[:,i],color='r',alpha=0.2) - plt.plot(timeseries,np.mean(wtarrays,axis=1),color='r') - for i,wtarray in enumerate(net.weightsUp.vec): - wtarrays[:,i] = wtarray.vector[:len(timeseries)] - plt.plot(timeseries,wtarrays[:,i],color='b',alpha=0.2) - plt.plot(timeseries,np.mean(wtarrays,axis=1),color='b') - plt.title("Evolution of some efficacies") - plt.xlabel("Time (s)") - plt.ylabel("Efficacy") - - ## all EE weights are used for a histogram - weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ - for i in range(net.NmaxExc) for j in range(net.excC) ] - plt.figure() - plt.hist(weights, bins=100) - plt.title("Histogram of efficacies") - plt.xlabel("Efficacy (arb)") - plt.ylabel("# per bin") - -if __name__=='__main__': - if 'sim' in sys.argv: - ## ExcInhNetBase has unconnected neurons, - ## ExcInhNet connects them - ## Instantiate either ExcInhNetBase or ExcInhNet below - #net = ExcInhNetBase(N=N) - net = ExcInhNet(N=N) - print(net) - ## Important to distribute the initial Vm-s - ## else weak coupling gives periodic synchronous firing - print("Preparing to simulate ... ") - net.simulate(simtime,plotif=True,\ - v0=np.random.uniform(el-10e-3,vt+1e-3,size=N)) - - save_data(net) - #extra_plots(net) - else: - print("just plotting old results for Fig 5.") - print("To simulate and save, give sim as commandline argument.") - load_plot_Fig5() - plt.show() diff --git a/examples/tutorials/Rdesigneur/cells/970529c.CNG.swc b/examples/tutorials/Rdesigneur/cells/970529c.CNG.swc deleted file mode 100644 index 6b8748e..0000000 --- a/examples/tutorials/Rdesigneur/cells/970529c.CNG.swc +++ /dev/null @@ -1,2493 +0,0 @@ -# Original file 970529c.out.swc edited by Duncan Donohue using StdSwc version 1.21 on 8/16/05. -# Irregularities and fixes documented in 970529c.out.swc.std. See StdSwc1.21.doc for more information. -# -# Claiborne to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu -# Original fileName:C:\Documents and Settings\Admin\Desktop\Jaffe\970529c.out -# -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 0 0 0 42.789 -1 - 2 3 -3.25 -3.95 -1.35 2.485 1 - 3 3 -4.34 -5.37 -1.38 1.955 2 - 4 3 -5.86 -5.37 -1.38 1.955 3 - 5 3 -5.64 -8.92 -1.38 1.955 4 - 6 3 -6.73 -11.41 -1.38 1.955 5 - 7 3 -8.03 -13.01 -1.38 1.955 6 - 8 3 -8.9 -14.61 -1.38 1.775 7 - 9 3 -9.55 -16.74 -1.38 1.775 8 - 10 3 -10.42 -17.27 0.67 1.955 9 - 11 3 -10.42 -17.8 0.67 1.955 10 - 12 3 -12.16 -18.87 0.67 0.89 11 - 13 3 -13.46 -20.65 -1.74 0.89 12 - 14 3 -15.42 -22.25 -1.74 0.89 13 - 15 3 -16.28 -23.84 -4.51 0.71 14 - 16 3 -18.46 -25.8 -4.51 0.71 15 - 17 3 -20.63 -27.93 -4.51 0.71 16 - 18 3 -21.71 -29.35 -6.68 0.71 17 - 19 3 -23.67 -32.02 -6.68 0.71 18 - 20 3 -25.19 -33.26 -6.68 0.71 19 - 21 3 -26.87 -35.31 -6.68 0.71 20 - 22 3 -28.39 -37.45 -6.68 0.71 21 - 23 3 -30.13 -38.69 -6.68 0.71 22 - 24 3 -31.43 -38.36 -7.26 0.71 23 - 25 3 -31.65 -41.2 -7.26 0.71 24 - 26 3 -33.61 -43.33 -7.26 0.71 25 - 27 3 -34.69 -45.46 -7.7 0.71 26 - 28 3 -36.21 -47.95 -7.7 0.71 27 - 29 3 -36.99 -50.85 -7.7 0.71 28 - 30 3 -38.29 -52.8 -7.7 0.71 29 - 31 3 -38.94 -54.58 -7.7 0.71 30 - 32 3 -39.59 -56.71 -7.7 0.71 31 - 33 3 -40.24 -58.84 -7.7 0.71 32 - 34 3 -41.11 -61.15 -7.7 0.71 33 - 35 3 -41.98 -63.46 -7.7 0.71 34 - 36 3 -43.02 -65.34 -7.7 0.71 35 - 37 3 -44.98 -66.94 -7.05 0.71 36 - 38 3 -46.06 -68.38 -7.34 0.71 37 - 39 3 -48.45 -71.04 -7.34 0.71 38 - 40 3 -49.54 -72.82 -7.34 0.71 39 - 41 3 -51.27 -74.6 -7.14 0.71 40 - 42 3 -53.01 -76.55 -7.14 0.71 41 - 43 3 -54.31 -78.68 -7.14 0.71 42 - 44 3 -55.86 -81.29 -7.14 0.71 43 - 45 3 -57.59 -83.07 -7.14 0.71 44 - 46 3 -59.33 -85.56 -7.14 0.71 45 - 47 3 -60.85 -88.22 -7.14 0.71 46 - 48 3 -61.8 -88.72 -7.14 0.71 47 - 49 3 -63.11 -89.43 -9.1 0.71 48 - 50 3 -64.84 -90.67 -12.48 0.71 49 - 51 3 -67.02 -91.38 -14.43 0.71 50 - 52 3 -68.54 -92.45 -15.53 0.71 51 - 53 3 -70.71 -93.87 -15.53 0.71 52 - 54 3 -72.45 -95.47 -15.53 0.71 53 - 55 3 -73.31 -97.42 -15.53 0.71 54 - 56 3 -74.18 -100.08 -17.04 0.71 55 - 57 3 -74.83 -102.75 -17.04 0.71 56 - 58 3 -74.5 -104.76 -17.04 0.71 57 - 59 3 -74.72 -106.18 -15.7 0.71 58 - 60 3 -75.15 -108.84 -15.7 0.71 59 - 61 3 -76.02 -111.15 -15.7 0.71 60 - 62 3 -77.11 -113.29 -15.7 0.71 61 - 63 3 -78.63 -115.77 -17.44 0.71 62 - 64 3 -80.15 -117.55 -17.44 0.71 63 - 65 3 -80.79 -120.07 -17.44 0.71 64 - 66 3 -80.79 -121.14 -20.1 0.71 65 - 67 3 -82.26 -123.16 -20.1 0.71 66 - 68 3 -83.78 -125.29 -20.1 0.71 67 - 69 3 -84.43 -127.24 -20.1 0.71 68 - 70 3 -85.51 -129.02 -20.1 0.71 69 - 71 3 -87.9 -130.26 -20.1 0.71 70 - 72 3 -88.77 -132.04 -20.1 0.71 71 - 73 3 -89.64 -134 -20.1 0.71 72 - 74 3 -92.03 -136.84 -20.1 0.71 73 - 75 3 -93.67 -138.89 -20.1 0.71 74 - 76 3 -94.82 -140.58 -20.1 0.71 75 - 77 3 -96.34 -141.65 -20.1 0.71 76 - 78 3 -98.3 -142.18 -20.1 0.71 77 - 79 3 -99.82 -143.6 -20.1 0.71 78 - 80 3 -100.47 -145.02 -20.1 0.71 79 - 81 3 -101.55 -146.09 -20.1 0.71 80 - 82 3 -80.79 -123.27 -20.1 0.71 66 - 83 3 -81 -125.4 -20.1 0.71 82 - 84 3 -82.09 -128.06 -20.1 0.71 83 - 85 3 -82.09 -130.2 -20.1 0.71 84 - 86 3 -82.31 -130.91 -20.1 0.71 85 - 87 3 -82.31 -131.26 -19.08 0.71 86 - 88 3 -82.74 -133.04 -19.08 0.71 87 - 89 3 -82.95 -134.31 -19.08 0.71 88 - 90 3 -82.74 -135.74 -19.08 0.71 89 - 91 3 -61.15 -89.6 -5.21 0.71 47 - 92 3 -62.46 -92.82 -5.21 0.71 91 - 93 3 -63.54 -95.67 -5.21 0.71 92 - 94 3 -64.41 -97.8 -5.21 0.71 93 - 95 3 -65.06 -100.28 -5.21 0.71 94 - 96 3 -65.28 -101.88 -5.21 0.71 95 - 97 3 -65.71 -104.55 -5.21 0.71 96 - 98 3 -65.95 -107.94 -5.21 0.71 97 - 99 3 -66.19 -110.6 -5.21 0.71 98 - 100 3 -66.62 -113.09 -5.21 0.71 99 - 101 3 -66.62 -114.86 -5.46 0.71 100 - 102 3 -67.27 -116.28 -5.46 0.71 101 - 103 3 -68.14 -117.88 -5.46 0.71 102 - 104 3 -67.92 -119.66 -3.45 0.71 103 - 105 3 -67.72 -121.38 -3.45 0.71 104 - 106 3 -67.07 -124.05 -3.45 0.71 105 - 107 3 -67.72 -126.36 -3.45 0.71 106 - 108 3 -67.72 -128.49 -3.45 0.71 107 - 109 3 -68.37 -130.09 0.1 0.71 108 - 110 3 -68.37 -132.75 0.1 0.71 109 - 111 3 -69.67 -133.99 0.1 0.71 110 - 112 3 -70.11 -135.77 0.1 0.71 111 - 113 3 -69.48 -139.14 0.1 0.71 112 - 114 3 -69.27 -140.73 0.26 0.71 113 - 115 3 -69.48 -142.69 0.26 0.71 114 - 116 3 -69.7 -144.46 0.26 0.71 115 - 117 3 -69.48 -146.24 2.1 0.71 116 - 118 3 -68.62 -148.91 2.1 0.71 117 - 119 3 -70.14 -150.68 2.1 0.71 118 - 120 3 -70.14 -151.52 1.9 0.89 119 - 121 3 -10.6 -19.79 0.67 1.245 11 - 122 3 -10.82 -20.86 0.67 1.065 121 - 123 3 -11.25 -22.63 3.11 1.065 122 - 124 3 -11.69 -23.34 3.11 1.065 123 - 125 3 -11.91 -24.05 3.1 1.065 124 - 126 3 -12.77 -25.12 3.1 0.89 125 - 127 3 -13.86 -26.72 3.1 0.89 126 - 128 3 -15.16 -28.5 2.5 0.89 127 - 129 3 -16.68 -30.45 2.5 0.89 128 - 130 3 -17.34 -32.05 4.34 0.89 129 - 131 3 -18.2 -33.65 4.34 0.89 130 - 132 3 -19.29 -34.18 6.59 0.89 131 - 133 3 -19.72 -35.07 6.06 0.89 132 - 134 3 -20.94 -35.93 6.06 0.71 133 - 135 3 -22.24 -37.71 6.06 0.71 134 - 136 3 -23.54 -38.95 8.27 0.71 135 - 137 3 -25.5 -40.02 9.75 0.71 136 - 138 3 -26.58 -40.73 12.12 0.71 137 - 139 3 -28.1 -40.91 14.37 0.71 138 - 140 3 -29.84 -40.73 15.93 0.71 139 - 141 3 -31.36 -40.91 17.94 0.71 140 - 142 3 -33.1 -41.26 20.75 0.71 141 - 143 3 -34.83 -42.15 22.3 0.71 142 - 144 3 -36.35 -43.04 24.67 0.71 143 - 145 3 -39.18 -44.46 26.14 0.71 144 - 146 3 -42.72 -46.04 26.14 0.71 145 - 147 3 -45.11 -46.22 28.64 0.71 146 - 148 3 -47.5 -46.75 31.14 0.71 147 - 149 3 -49.67 -47.82 30.56 0.71 148 - 150 3 -52.5 -48 30.56 0.71 149 - 151 3 -54.89 -48.89 30.56 0.71 150 - 152 3 -57.06 -49.24 30.56 0.71 151 - 153 3 -59.66 -49.96 30.56 0.71 152 - 154 3 -62.04 -50.13 33.3 0.71 153 - 155 3 -65.3 -51.02 33.3 0.71 154 - 156 3 -68.13 -51.73 33.3 0.71 155 - 157 3 -71.17 -53.15 32.83 0.71 156 - 158 3 -73.99 -54.4 32.83 0.71 157 - 159 3 -76.59 -55.64 32.83 0.71 158 - 160 3 -78.39 -56.69 32.83 0.71 159 - 161 3 -80.34 -57.6 32.83 0.71 160 - 162 3 -82.51 -58.13 32.83 0.71 161 - 163 3 -84.03 -59.02 32.83 0.71 162 - 164 3 -85.55 -59.73 34.9 0.71 163 - 165 3 -87.29 -59.91 34.9 0.71 164 - 166 3 -89.25 -59.91 34.9 0.71 165 - 167 3 -92.07 -61.15 36.86 0.71 166 - 168 3 -94.24 -63.28 36.86 0.71 167 - 169 3 -95.34 -65.4 36.86 0.71 168 - 170 3 -96.86 -67 36.86 0.71 169 - 171 3 -98.16 -68.24 36.86 0.71 170 - 172 3 -99.03 -69.13 36.86 0.71 171 - 173 3 -100.55 -70.02 36.86 0.71 172 - 174 3 -102.28 -71.08 36.86 0.71 173 - 175 3 -103.15 -71.79 36.42 0.71 174 - 176 3 -103.59 -72.86 32.87 0.71 175 - 177 3 -104.67 -74.99 32.87 0.71 176 - 178 3 -105.33 -77.12 32.87 0.71 177 - 179 3 -106.41 -78.9 32.87 0.71 178 - 180 3 -107.12 -80.29 32.87 0.71 179 - 181 3 -19.94 -36.85 3.29 0.71 133 - 182 3 -20.81 -37.73 3.29 0.71 181 - 183 3 -21.68 -39.51 4.88 0.71 182 - 184 3 -21.56 -41.92 1.67 0.71 183 - 185 3 -22.64 -43.87 2.73 0.71 184 - 186 3 -23.08 -46.18 0.45 0.71 185 - 187 3 -24.38 -48.32 0.45 0.71 186 - 188 3 -25.03 -50.45 0.45 0.71 187 - 189 3 -26.34 -52.58 0.45 0.71 188 - 190 3 -26.55 -54.71 0.45 0.71 189 - 191 3 -27.44 -56.21 -1.87 0.71 190 - 192 3 -28.03 -59.1 -2.98 0.71 191 - 193 3 -29.11 -61.94 -2.98 0.71 192 - 194 3 -29.55 -64.6 -2.98 0.71 193 - 195 3 -30.2 -67.09 -5.04 0.71 194 - 196 3 -30.63 -69.22 -6.86 0.71 195 - 197 3 -31.07 -71.36 -6.86 0.71 196 - 198 3 -31.59 -74.5 -6.86 0.71 197 - 199 3 -32.24 -76.45 -6.86 0.71 198 - 200 3 -33.11 -78.41 -6.42 0.71 199 - 201 3 -33.11 -81.25 -6.42 0.71 200 - 202 3 -33.33 -83.56 -6.42 0.71 201 - 203 3 -33.55 -84.8 -6.42 0.71 202 - 204 3 -33.55 -86.04 -6.86 0.89 203 - 205 3 -34.72 -86.76 -6.86 0.71 204 - 206 3 -35.59 -88.71 -6.86 0.71 205 - 207 3 -36.24 -89.98 -7.02 0.71 206 - 208 3 -36.89 -92.28 -7.78 0.71 207 - 209 3 -37.54 -94.42 -10.3 0.71 208 - 210 3 -37.98 -96.19 -10.3 0.71 209 - 211 3 -38.63 -98.15 -10.3 0.71 210 - 212 3 -39.28 -99.57 -10.62 0.71 211 - 213 3 -39.28 -100.81 -12.82 0.71 212 - 214 3 -39.9 -103.35 -12.82 0.71 213 - 215 3 -40.55 -105.13 -12.54 0.71 214 - 216 3 -41.2 -106.2 -13.25 0.71 215 - 217 3 -42.34 -107.47 -13.25 0.71 216 - 218 3 -43.86 -109.06 -13.25 0.71 217 - 219 3 -45.38 -110.13 -13.25 0.71 218 - 220 3 -46.03 -111.73 -13.25 0.71 219 - 221 3 -46.46 -113.15 -16.46 0.71 220 - 222 3 -47.98 -115.3 -16.46 0.71 221 - 223 3 -49.07 -117.44 -18.34 0.71 222 - 224 3 -51.02 -118.15 -18.34 0.71 223 - 225 3 -53.19 -119.57 -20.06 0.71 224 - 226 3 -55.37 -120.81 -20.06 0.71 225 - 227 3 -57.4 -122.11 -21.44 0.71 226 - 228 3 -59.36 -123 -24.04 0.71 227 - 229 3 -61.1 -124.95 -24.04 0.71 228 - 230 3 -63.48 -126.55 -24.04 0.71 229 - 231 3 -65.87 -128.51 -24.04 0.71 230 - 232 3 -67.18 -130.46 -27.01 0.71 231 - 233 3 -69.57 -131.35 -27.01 0.71 232 - 234 3 -71.74 -134.55 -27.01 0.71 233 - 235 3 -73.91 -135.61 -27.8 0.71 234 - 236 3 -76.22 -136.53 -30.56 0.71 235 - 237 3 -77.96 -137.07 -30.56 0.71 236 - 238 3 -80.35 -138.13 -30.56 0.71 237 - 239 3 -81.65 -139.2 -30.56 0.71 238 - 240 3 -83.17 -139.73 -30.56 0.71 239 - 241 3 -84.69 -141.15 -30.56 0.71 240 - 242 3 -86.43 -142.57 -30.56 0.71 241 - 243 3 -87.32 -144.27 -30.56 0.71 242 - 244 3 -89.49 -145.33 -30.56 0.71 243 - 245 3 -91.44 -146.22 -30.56 0.71 244 - 246 3 -41.42 -108.68 -15.42 0.71 216 - 247 3 -41.86 -111.88 -15.42 0.71 246 - 248 3 -41.86 -114.01 -15.34 0.71 247 - 249 3 -42.07 -116.15 -15.34 0.71 248 - 250 3 -41.38 -119.46 -16.16 0.71 249 - 251 3 -41.18 -121.77 -19.07 0.71 250 - 252 3 -41.83 -123.91 -18.58 0.71 251 - 253 3 -41.62 -125.86 -18.58 0.71 252 - 254 3 -41.62 -127.99 -20.79 0.71 253 - 255 3 -40.96 -130.48 -20.79 0.71 254 - 256 3 -40.96 -132.97 -22.38 0.71 255 - 257 3 -40.18 -135.18 -22.38 0.71 256 - 258 3 -40.4 -137.31 -24.36 0.71 257 - 259 3 -41.27 -139.08 -24.36 0.71 258 - 260 3 -41.7 -140.51 -26.77 0.71 259 - 261 3 -44.09 -142.64 -29.73 0.71 260 - 262 3 -44.96 -144.41 -29.73 0.71 261 - 263 3 -45.18 -146.01 -29.73 0.71 262 - 264 3 -45.18 -148.5 -29.73 0.71 263 - 265 3 -44.38 -151.06 -29.73 0.71 264 - 266 3 -43.36 -153.55 -29.73 0.71 265 - 267 3 -43.36 -155.15 -29.73 0.71 266 - 268 3 -33.55 -87.82 -5.68 0.71 204 - 269 3 -34.2 -90.66 -5.68 0.71 268 - 270 3 -34.42 -92.62 -5.68 0.71 269 - 271 3 -35.07 -95.1 -5.68 0.71 270 - 272 3 -35.5 -97.24 -5.68 0.71 271 - 273 3 -35.5 -99.72 -5.68 0.71 272 - 274 3 -34.63 -101.32 -5.68 0.71 273 - 275 3 -34.67 -103.04 -5.68 0.71 274 - 276 3 -35.1 -104.82 -6.99 0.71 275 - 277 3 -35.32 -106.42 -6.99 0.71 276 - 278 3 -35.54 -108.37 -6.99 0.71 277 - 279 3 -35.97 -109.79 -8.37 0.71 278 - 280 3 -35.97 -110.86 -8.37 0.71 279 - 281 3 -35.97 -111.22 -8.37 0.71 280 - 282 3 -37.35 -112.89 -8.37 0.71 281 - 283 3 -38.66 -115.02 -8.37 0.71 282 - 284 3 -39.31 -116.8 -8.37 0.71 283 - 285 3 -40.39 -117.68 -8.37 0.71 284 - 286 3 -41.26 -119.46 -8.37 0.71 285 - 287 3 -41.7 -120.7 -8.37 0.71 286 - 288 3 -43.43 -122.84 -8.37 0.71 287 - 289 3 -44.95 -124.08 -8.37 0.71 288 - 290 3 -46.26 -125.86 -8.37 0.71 289 - 291 3 -47.13 -127.63 -10.46 0.71 290 - 292 3 -48.14 -130.42 -10.46 0.71 291 - 293 3 -48.48 -132.24 -7.5 0.71 292 - 294 3 -49.79 -134.55 -7.5 0.71 293 - 295 3 -49.57 -136.86 -6.16 0.71 294 - 296 3 -50.66 -138.46 -7.18 0.71 295 - 297 3 -53.04 -140.24 -7.18 0.71 296 - 298 3 -55 -141.84 -4.03 0.71 297 - 299 3 -57.17 -142.37 -4.03 0.71 298 - 300 3 -58.91 -144.5 -4.03 0.71 299 - 301 3 -61.51 -145.75 -4.03 0.71 300 - 302 3 -63.6 -148.18 -3.6 0.71 301 - 303 3 -65.56 -149.78 -3.6 0.71 302 - 304 3 -66.86 -151.73 -3.6 0.71 303 - 305 3 -68.16 -152.44 -0.13 0.71 304 - 306 3 -68.62 -152.44 -0.76 0.71 305 - 307 3 -69.48 -152.97 -0.76 0.71 306 - 308 3 -35.32 -113.17 -10.42 0.71 281 - 309 3 -35.32 -117.08 -10.42 0.71 308 - 310 3 -35.25 -119.15 -10.42 0.71 309 - 311 3 -35.03 -121.29 -11.3 0.71 310 - 312 3 -34.82 -123.06 -11.3 0.71 311 - 313 3 -34.38 -124.48 -11.42 0.71 312 - 314 3 -33.73 -124.66 -11.42 0.71 313 - 315 3 -33.73 -126.79 -11.42 0.71 314 - 316 3 -33.51 -128.57 -11.42 0.71 315 - 317 3 -32.64 -129.99 -11.42 0.71 316 - 318 3 -31.56 -132.48 -11.42 0.71 317 - 319 3 -31.2 -135.26 -11.42 0.71 318 - 320 3 -30.55 -136.86 -11.42 0.71 319 - 321 3 -29.69 -139.17 -11.42 0.71 320 - 322 3 -29.04 -140.59 -11.42 0.71 321 - 323 3 -27.96 -141.84 -11.42 0.71 322 - 324 3 -28.61 -143.44 -11.42 0.71 323 - 325 3 -27.52 -143.97 -14.1 0.71 324 - 326 3 -27.31 -146.99 -14.1 0.71 325 - 327 3 -26.58 -148.51 -14.1 0.71 326 - 328 3 -25.8 -150.07 -14.1 0.71 327 - 329 3 -24.93 -151.49 -14.1 0.71 328 - 330 3 -23.41 -152.91 -14.1 0.71 329 - 331 3 -22.11 -153.62 -14.1 0.71 330 - 332 3 -20.8 -154.68 -14.1 0.71 331 - 333 3 -21.24 -157.17 -17.15 0.71 332 - 334 3 -20.59 -159.3 -17.15 0.71 333 - 335 3 -20.15 -160.72 -17.15 0.71 334 - 336 3 -19.28 -162.32 -17.15 0.71 335 - 337 3 -17.76 -162.15 -17.15 0.71 336 - 338 3 -17.11 -164.46 -17.15 0.71 337 - 339 3 -15.76 -166.02 -17.15 0.71 338 - 340 3 -14.68 -167.8 -17.15 0.71 339 - 341 3 -14.03 -168.51 -19.01 0.71 340 - 342 3 -12.75 -169.71 -19.01 0.71 341 - 343 3 -10.39 -25.65 6.52 0.71 125 - 344 3 -10.17 -27.43 7.42 0.71 343 - 345 3 -8.65 -28.32 7.42 0.71 344 - 346 3 -8.87 -30.1 7.42 0.71 345 - 347 3 -8.65 -32.4 10.22 0.71 346 - 348 3 -7.52 -34.06 13.02 0.71 347 - 349 3 -6.43 -35.66 15.02 0.71 348 - 350 3 -5.13 -37.08 14.17 0.71 349 - 351 3 -4.69 -39.21 14.17 0.71 350 - 352 3 -4.26 -40.63 16.77 0.71 351 - 353 3 -3.39 -42.41 16.22 0.71 352 - 354 3 -2.31 -43.65 16.22 0.71 353 - 355 3 -1.22 -45.61 18.72 0.71 354 - 356 3 -0.13 -47.03 19.02 0.71 355 - 357 3 1.1 -48.66 19.02 0.71 356 - 358 3 2.19 -49.37 21.17 0.71 357 - 359 3 3.92 -50.97 22.74 0.71 358 - 360 3 5.88 -52.39 22.74 0.71 359 - 361 3 7.83 -54.34 22.74 0.71 360 - 362 3 8.92 -55.76 24.71 0.71 361 - 363 3 9.79 -57.36 22.82 0.71 362 - 364 3 10.66 -59.32 22.82 0.71 363 - 365 3 11.31 -61.27 22.82 0.71 364 - 366 3 12.61 -62.87 22.82 0.71 365 - 367 3 13.67 -65.35 22.82 0.71 366 - 368 3 13.45 -67.66 24.69 0.71 367 - 369 3 13.23 -69.79 26.55 0.71 368 - 370 3 13.23 -72.28 26.55 0.71 369 - 371 3 12.36 -75.12 26.55 0.71 370 - 372 3 12.15 -77.96 26.55 0.71 371 - 373 3 13.27 -80.17 26.55 0.71 372 - 374 3 14.57 -83.01 26.55 0.71 373 - 375 3 16.31 -84.61 26.55 0.71 374 - 376 3 17.61 -86.03 25.15 0.71 375 - 377 3 18.91 -87.28 25.15 0.71 376 - 378 3 20.65 -89.58 25.15 0.71 377 - 379 3 21.52 -91.54 25.15 0.71 378 - 380 3 22.6 -93.14 25.15 0.71 379 - 381 3 23.88 -95.39 25.15 0.71 380 - 382 3 24.53 -96.99 25.15 0.71 381 - 383 3 24.75 -97.52 23.02 0.71 382 - 384 3 25.19 -98.59 23.02 0.71 383 - 385 3 24.55 -99.53 23.02 0.71 384 - 386 3 24.11 -102.72 23.02 0.71 385 - 387 3 24.11 -105.21 23.02 0.71 386 - 388 3 24.55 -106.63 23.02 0.71 387 - 389 3 23.03 -108.94 23.02 0.71 388 - 390 3 23.24 -112.14 23.02 0.71 389 - 391 3 23.24 -114.09 23.02 0.71 390 - 392 3 23.4 -116.15 23.28 0.71 391 - 393 3 23.18 -118.46 23.28 0.71 392 - 394 3 22.96 -120.41 23.28 0.71 393 - 395 3 22.75 -122.19 23.28 0.71 394 - 396 3 22.09 -124.5 23.28 0.71 395 - 397 3 20.79 -126.45 23.28 0.71 396 - 398 3 19.92 -128.4 23.28 0.71 397 - 399 3 18.93 -130.24 23.28 0.71 398 - 400 3 17.49 -131.68 23.28 0.71 399 - 401 3 26.71 -99.48 23.02 0.71 384 - 402 3 28.88 -101.61 23.02 0.71 401 - 403 3 29.96 -103.39 23.02 0.71 402 - 404 3 30.62 -104.1 25.22 0.71 403 - 405 3 32.14 -104.98 25.22 0.71 404 - 406 3 33.22 -106.94 25.22 0.71 405 - 407 3 34.09 -108.54 25.22 0.71 406 - 408 3 35.52 -110.44 23.38 0.71 407 - 409 3 36.6 -112.21 22.04 0.71 408 - 410 3 36.6 -114.88 20.78 0.71 409 - 411 3 37.25 -116.83 20.78 0.71 410 - 412 3 37.91 -119.14 20.78 0.71 411 - 413 3 37.47 -121.1 20.78 0.71 412 - 414 3 38.56 -122.52 20.78 0.71 413 - 415 3 38.34 -125.36 20.78 0.71 414 - 416 3 38.63 -127.72 20.78 0.71 415 - 417 3 39.93 -130.03 20.78 0.71 416 - 418 3 41.67 -133.05 20.78 0.71 417 - 419 3 42.76 -133.94 20.34 0.71 418 - 420 3 43.84 -136.07 18.02 0.71 419 - 421 3 44.93 -138.21 18.02 0.71 420 - 422 3 47.1 -140.16 18.02 0.71 421 - 423 3 48.97 -141.7 18.02 0.71 422 - 424 3 -3.44 -3.24 -7.45 1.42 1 - 425 3 -5.39 -5.04 -7.45 1.065 424 - 426 3 -6.26 -6.81 -9 1.065 425 - 427 3 -7.56 -9.3 -11.45 1.065 426 - 428 3 -8.87 -12.14 -11.15 1.065 427 - 429 3 -9.74 -13.74 -11.15 1.065 428 - 430 3 -9.95 -14.63 -11.15 1.065 429 - 431 3 -10.82 -15.87 -11.15 1.065 430 - 432 3 -11.04 -17.65 -10.71 0.89 431 - 433 3 -11.47 -19.96 -10.71 0.89 432 - 434 3 -11.39 -21.59 -12.99 0.89 433 - 435 3 -12.04 -24.61 -15.49 0.89 434 - 436 3 -11.39 -27.28 -15.49 0.89 435 - 437 3 -10.3 -29.41 -15.78 0.89 436 - 438 3 -9 -32.25 -15.78 0.71 437 - 439 3 -5.96 -34.92 -15.78 0.71 438 - 440 3 -4.25 -37.17 -15.78 0.71 439 - 441 3 -2.95 -40.01 -15.78 0.71 440 - 442 3 -1.86 -42.32 -17.46 0.71 441 - 443 3 -0.12 -44.45 -17.46 0.71 442 - 444 3 0.96 -46.58 -17.46 0.71 443 - 445 3 2.92 -47.3 -17.46 0.71 444 - 446 3 5.31 -49.96 -17.46 0.71 445 - 447 3 7.15 -50.93 -17.46 0.71 446 - 448 3 8.45 -51.99 -17.37 0.71 447 - 449 3 10.63 -53.26 -15.32 0.71 448 - 450 3 13.23 -54.32 -15.32 0.71 449 - 451 3 14.97 -56.1 -15.32 0.71 450 - 452 3 16.73 -57.99 -11.07 0.71 451 - 453 3 19.99 -60.3 -11.07 0.71 452 - 454 3 22.16 -62.61 -11.07 0.71 453 - 455 3 24.55 -64.56 -11.07 0.71 454 - 456 3 26.51 -65.28 -9.06 0.71 455 - 457 3 29.33 -66.52 -7.1 0.71 456 - 458 3 31.94 -68.83 -7.5 0.71 457 - 459 3 34.98 -70.6 -6.11 0.71 458 - 460 3 37.4 -72.08 -6.09 0.71 459 - 461 3 40.66 -73.68 -6.09 0.71 460 - 462 3 43.48 -75.46 -6.09 0.71 461 - 463 3 45.44 -75.99 -6.09 0.71 462 - 464 3 47.39 -77.05 -6.09 0.71 463 - 465 3 48.91 -77.23 -7.27 0.71 464 - 466 3 50.65 -78.3 -7.27 0.71 465 - 467 3 53.91 -77.77 -7.27 0.71 466 - 468 3 55.32 -79.97 -9.21 0.71 467 - 469 3 58.14 -81.03 -7.62 0.71 468 - 470 3 60.09 -82.28 -10.16 0.71 469 - 471 3 62.05 -84.05 -10.16 0.71 470 - 472 3 62.27 -85.83 -8.19 0.71 471 - 473 3 62.85 -87.26 -8.19 0.71 472 - 474 3 64.8 -88.5 -8.19 0.71 473 - 475 3 66.11 -88.86 -8.19 0.71 474 - 476 3 67.41 -90.28 -8.19 0.71 475 - 477 3 68.28 -90.63 -8.19 0.71 476 - 478 3 69.58 -90.81 -8.19 0.71 477 - 479 3 70.23 -91.17 -8.19 0.71 478 - 480 3 71.32 -91.88 -8.19 0.71 479 - 481 3 72.19 -93.12 -8.19 0.71 480 - 482 3 73.27 -93.12 -8.19 0.71 481 - 483 3 -4.72 8.96 0.48 0.89 1 - 484 3 -5.59 9.67 -1.32 0.89 483 - 485 3 -6.68 9.67 -2.98 0.89 484 - 486 3 -8.42 9.5 -2.98 0.89 485 - 487 3 -9.94 9.67 -5.41 0.89 486 - 488 3 -12.11 10.21 -3.33 0.89 487 - 489 3 -13.84 10.21 -5.28 0.89 488 - 490 3 -15.15 10.03 -5.28 0.89 489 - 491 3 -16.02 10.38 -5.26 0.89 490 - 492 3 -17.54 10.21 -7.5 0.89 491 - 493 3 -19.06 10.03 -7.5 0.89 492 - 494 3 -20.58 9.85 -7.5 0.89 493 - 495 3 -22.52 9.05 -7.5 0.89 494 - 496 3 -22.54 9.39 -8.39 1.065 495 - 497 3 -24.56 9.52 -6.46 0.71 496 - 498 3 -27.6 9.16 -6.46 0.71 497 - 499 3 -29.12 9.52 -6.46 0.71 498 - 500 3 -30.42 9.87 -6.46 0.71 499 - 501 3 -31.72 9.52 -6.46 0.71 500 - 502 3 -33.9 9.16 -6.46 0.71 501 - 503 3 -35.42 9.16 -5.93 0.71 502 - 504 3 -36.72 9.52 -5.93 0.71 503 - 505 3 -38.46 10.23 -5.93 0.71 504 - 506 3 -39.54 9.87 -3.47 0.71 505 - 507 3 -41.06 9.87 -3.47 0.71 506 - 508 3 -42.31 9.79 -3.34 0.71 507 - 509 3 -44.26 9.43 -3.34 0.71 508 - 510 3 -45.78 8.7 -3.32 0.71 509 - 511 3 -46 7.81 -3.5 0.71 510 - 512 3 -48.6 7.81 -3.5 0.71 511 - 513 3 -51.64 7.28 -3.5 0.71 512 - 514 3 -54.03 7.28 -7.03 0.71 513 - 515 3 -57.07 7.28 -8.9 0.71 514 - 516 3 -59.68 7.45 -8.9 0.71 515 - 517 3 -61.31 7.01 -9.79 0.71 516 - 518 3 -62.61 7.19 -9.79 0.71 517 - 519 3 -63.48 6.65 -8.6 0.71 518 - 520 3 -65 5.94 -11.2 0.71 519 - 521 3 -67.17 5.76 -11.2 0.71 520 - 522 3 -69.56 6.12 -13.28 0.71 521 - 523 3 -69.78 6.83 -15.9 0.71 522 - 524 3 -73.03 5.41 -18.18 0.71 523 - 525 3 -74.99 4.88 -18.18 0.71 524 - 526 3 -75.64 4.7 -16.49 0.71 525 - 527 3 -77.38 4.17 -16.49 0.71 526 - 528 3 -78.05 3.79 -16.49 0.71 527 - 529 3 -22.76 9.92 -8.69 0.71 496 - 530 3 -25.17 7.83 -13.5 0.71 529 - 531 3 -26.69 6.94 -16 0.71 530 - 532 3 -28 6.23 -17.93 0.71 531 - 533 3 -29.95 5.52 -17.93 0.71 532 - 534 3 -31.47 5.17 -17.49 0.71 533 - 535 3 -32.99 4.63 -19.25 0.71 534 - 536 3 -33.88 3.75 -21.23 0.71 535 - 537 3 -34.75 2.48 -23.63 0.71 536 - 538 3 -35.83 1.06 -21.14 0.71 537 - 539 3 -36.92 -0.36 -21.14 0.71 538 - 540 3 -37.57 -1.25 -23.59 0.71 539 - 541 3 -38.87 -2.67 -26.42 0.71 540 - 542 3 -39.53 -4.27 -25.9 0.71 541 - 543 3 -40.61 -5.52 -27.79 0.71 542 - 544 3 -41.65 -7.41 -27.57 0.71 543 - 545 3 -42.74 -8.48 -27.36 0.71 544 - 546 3 -43.83 -10.43 -29.26 0.71 545 - 547 3 -44.91 -12.39 -30.73 0.71 546 - 548 3 -46 -14.16 -32.63 0.71 547 - 549 3 -46.65 -16.12 -32.63 0.71 548 - 550 3 -46.87 -15.94 -33.9 0.71 549 - 551 3 -48.82 -18.25 -36.08 0.71 550 - 552 3 -50.34 -20.56 -35.03 0.71 551 - 553 3 -51.91 -23.32 -36.91 0.71 552 - 554 3 -53.21 -25.28 -36.91 0.71 553 - 555 3 -54.95 -26.88 -38.65 0.71 554 - 556 3 -54.95 -26.88 -39.05 0.71 555 - 557 3 -56.31 -27.93 -39.05 0.71 556 - 558 3 -57.83 -28.81 -39.05 0.71 557 - 559 3 -59.56 -30.41 -40.08 0.71 558 - 560 3 -61.52 -32.37 -40.08 0.71 559 - 561 3 -62.6 -33.61 -42.58 0.71 560 - 562 3 -63.69 -35.21 -42.58 0.71 561 - 563 3 -65.43 -36.1 -42.58 0.71 562 - 564 3 -67.38 -37.34 -44.58 0.71 563 - 565 3 -69.55 -38.41 -47.55 0.71 564 - 566 3 -70.86 -39.3 -47.55 0.71 565 - 567 3 -72.16 -40.18 -49.9 0.71 566 - 568 3 -73.71 -41.5 -51.42 0.71 567 - 569 3 -75.23 -43.63 -51.42 0.71 568 - 570 3 -76.09 -45.06 -51.42 0.71 569 - 571 3 -77.4 -46.65 -51.42 0.71 570 - 572 3 -79.14 -48.43 -51.42 0.71 571 - 573 3 -80.66 -50.56 -51.42 0.71 572 - 574 3 -81.74 -52.52 -51.12 0.71 573 - 575 3 -82.18 -54.65 -51.12 0.71 574 - 576 3 -83.04 -56.6 -51.12 0.71 575 - 577 3 -81.48 -58.19 -51.12 0.71 576 - 578 3 -83.44 -61.74 -51.12 0.71 577 - 579 3 -84.09 -64.05 -53.42 0.71 578 - 580 3 -85.17 -66.01 -53.42 0.71 579 - 581 3 -85.39 -67.96 -53.42 0.71 580 - 582 3 -85.17 -70.27 -53.42 0.71 581 - 583 3 -85.39 -72.58 -53.42 0.71 582 - 584 3 -85.19 -74.57 -53.42 0.71 583 - 585 3 -86.49 -76.88 -53.42 0.71 584 - 586 3 -87.79 -78.65 -53.42 0.71 585 - 587 3 -88.88 -80.43 -53.42 0.71 586 - 588 3 -89.31 -82.03 -53.42 0.71 587 - 589 3 -90.18 -83.81 -53.42 0.71 588 - 590 3 -92.35 -85.23 -53.42 0.71 589 - 591 3 -94.09 -86.83 -53.42 0.71 590 - 592 3 -95.07 -88.99 -55.52 0.71 591 - 593 3 -97.24 -91.12 -55.52 0.71 592 - 594 3 -99.2 -91.3 -59.18 0.71 593 - 595 3 -101.8 -91.83 -59.18 0.71 594 - 596 3 -103.54 -92.37 -57.78 0.71 595 - 597 3 -105.06 -92.54 -60.13 0.71 596 - 598 3 -106.8 -93.97 -60.13 0.71 597 - 599 3 -107.23 -94.14 -58.8 0.71 598 - 600 3 -108.97 -96.99 -60.87 0.71 599 - 601 3 -110.93 -99.3 -64.3 0.71 600 - 602 3 -112.88 -101.25 -64.3 0.71 601 - 603 3 -114.07 -103.95 -64.3 0.71 602 - 604 3 -115.16 -106.08 -64.3 0.71 603 - 605 3 -116.46 -108.03 -64.3 0.71 604 - 606 3 -118.42 -108.57 -64.3 0.71 605 - 607 3 -120.8 -109.45 -64.3 0.71 606 - 608 3 -123.19 -110.16 -64.3 0.71 607 - 609 3 -125.58 -109.28 -63.32 0.71 608 - 610 3 -127.32 -109.99 -63.32 0.71 609 - 611 3 -129.27 -110.34 -63.32 0.71 610 - 612 3 -130.79 -110.34 -63.32 0.71 611 - 613 3 -132.54 -110.46 -61.53 0.71 612 - 614 3 -135.8 -111.88 -61.53 0.71 613 - 615 3 -136.67 -113.3 -61.53 0.71 614 - 616 3 -137.75 -114.9 -61.53 0.71 615 - 617 3 -138.19 -116.32 -61.53 0.71 616 - 618 3 -138.4 -118.28 -61.53 0.71 617 - 619 3 -54.95 -29.54 -40.82 0.71 556 - 620 3 -56.03 -31.5 -40.82 0.71 619 - 621 3 -56.68 -33.1 -40.82 0.71 620 - 622 3 -57.55 -35.58 -41.45 0.71 621 - 623 3 -58.04 -38.86 -41.45 0.71 622 - 624 3 -58.91 -40.63 -43.09 0.71 623 - 625 3 -59.77 -42.94 -43.87 0.71 624 - 626 3 -60.22 -44.48 -43.87 0.71 625 - 627 3 -60.65 -46.08 -43.07 0.71 626 - 628 3 -61.24 -47.99 -43.07 0.71 627 - 629 3 -61.89 -49.59 -43.07 0.71 628 - 630 3 -62.32 -50.83 -43.07 0.71 629 - 631 3 8.75 -0.81 1.12 1.065 1 - 632 3 9.61 -2.79 -0.82 0.89 631 - 633 3 11.13 -4.57 -0.82 0.89 632 - 634 3 12 -6.7 -3.23 0.89 633 - 635 3 12.87 -8.3 -3.23 0.89 634 - 636 3 14.17 -9.9 -3.23 0.89 635 - 637 3 15.69 -12.21 -3.23 0.89 636 - 638 3 17.35 -13.53 -3.23 0.71 637 - 639 3 19.09 -17.26 -3.23 0.71 638 - 640 3 20.39 -19.39 -3.23 0.71 639 - 641 3 21.48 -20.45 -3.23 0.71 640 - 642 3 22.13 -23.65 -3.23 0.71 641 - 643 3 22.56 -25.43 -4.4 0.71 642 - 644 3 24.3 -27.56 -4.4 0.71 643 - 645 3 25.08 -29.28 -4.4 0.71 644 - 646 3 25.65 -30.5 -4.4 0.71 645 - 647 3 27.17 -31.92 -4.4 0.71 646 - 648 3 27.8 -32.81 -4.4 0.89 647 - 649 3 26.95 -34.99 -4.4 0.71 648 - 650 3 26.29 -37.3 -4.4 0.71 649 - 651 3 25.86 -39.08 -4.4 0.71 650 - 652 3 25.64 -40.5 -6.3 0.71 651 - 653 3 26.29 -41.74 -6.3 0.71 652 - 654 3 26.73 -43.7 -6.3 0.71 653 - 655 3 26.51 -45.65 -6.3 0.71 654 - 656 3 26.95 -47.25 -6.3 0.71 655 - 657 3 27.6 -49.2 -7.94 0.71 656 - 658 3 28.05 -51.3 -7.94 0.71 657 - 659 3 28.7 -53.63 -7.83 0.71 658 - 660 3 29.35 -55.23 -7.38 0.71 659 - 661 3 30 -57.01 -10.33 0.71 660 - 662 3 30.44 -59.14 -10.35 0.71 661 - 663 3 30.61 -59.41 -10.35 0.71 662 - 664 3 29.51 -60.88 -12.27 0.71 663 - 665 3 28.43 -64.26 -12.27 0.71 664 - 666 3 28.21 -66.21 -12.27 0.71 665 - 667 3 27.56 -67.81 -12.9 0.71 666 - 668 3 27.56 -69.76 -12.9 0.71 667 - 669 3 26.91 -72.07 -14.77 0.71 668 - 670 3 27.12 -74.2 -14.77 0.71 669 - 671 3 27.21 -76.04 -16.82 0.71 670 - 672 3 27.21 -79.06 -16.82 0.71 671 - 673 3 27.21 -81.54 -16.82 0.71 672 - 674 3 27.65 -83.5 -16.82 0.71 673 - 675 3 27.43 -86.16 -16.82 0.71 674 - 676 3 27.43 -88.83 -16.82 0.71 675 - 677 3 27.4 -91.52 -19.22 0.71 676 - 678 3 28.05 -94.37 -19.22 0.71 677 - 679 3 28.05 -97.21 -19.22 0.71 678 - 680 3 28.05 -100.41 -19.22 0.71 679 - 681 3 27.83 -102.72 -19.22 0.71 680 - 682 3 27.6 -104.61 -19.22 0.71 681 - 683 3 27.38 -106.21 -19.22 0.71 682 - 684 3 32.35 -61.19 -11.72 0.71 663 - 685 3 33.44 -63.15 -11.72 0.71 684 - 686 3 34.74 -64.92 -11.72 0.71 685 - 687 3 35.83 -66.52 -11.72 0.71 686 - 688 3 36.91 -68.3 -11.72 0.71 687 - 689 3 37.56 -69.72 -12.58 0.71 688 - 690 3 38.43 -70.78 -14.82 0.71 689 - 691 3 39.08 -73.63 -16.77 0.71 690 - 692 3 39.9 -74.37 -15.78 0.71 691 - 693 3 40.99 -77.57 -15.78 0.71 692 - 694 3 41.88 -79.41 -18.03 0.71 693 - 695 3 43.4 -81.9 -18.03 0.71 694 - 696 3 44.27 -83.85 -18.03 0.71 695 - 697 3 45.36 -85.63 -18.03 0.71 696 - 698 3 46.01 -87.76 -18.03 0.71 697 - 699 3 47.51 -89.18 -20.03 0.71 698 - 700 3 48.6 -90.61 -21.13 0.71 699 - 701 3 49.25 -92.38 -20.53 0.71 700 - 702 3 50.73 -94.57 -20.53 0.71 701 - 703 3 51.8 -96.55 -20.53 0.71 702 - 704 3 53.11 -97.61 -21.27 0.71 703 - 705 3 53.97 -99.03 -21.27 0.71 704 - 706 3 55.28 -101.34 -21.27 0.71 705 - 707 3 57.23 -102.23 -21.27 0.71 706 - 708 3 59.84 -104.01 -23.21 0.71 707 - 709 3 61.58 -105.25 -23.21 0.71 708 - 710 3 63.75 -105.07 -23.21 0.71 709 - 711 3 65.7 -105.78 -21.2 0.71 710 - 712 3 67.01 -106.14 -22.98 0.71 711 - 713 3 69.39 -107.38 -22.98 0.71 712 - 714 3 72.24 -108.7 -22.98 0.71 713 - 715 3 74.41 -109.24 -22.98 0.71 714 - 716 3 75.93 -110.3 -23.78 0.71 715 - 717 3 77.23 -111.9 -23.78 0.71 716 - 718 3 78.54 -113.5 -23.78 0.71 717 - 719 3 79.62 -115.1 -23.78 0.71 718 - 720 3 81.14 -117.23 -23.78 0.71 719 - 721 3 82.88 -119.01 -23.78 0.71 720 - 722 3 83.96 -120.25 -24.59 0.71 721 - 723 3 85.27 -121.49 -24.59 0.71 722 - 724 3 86.35 -122.92 -24.59 0.71 723 - 725 3 87.92 -124.28 -24.59 0.71 724 - 726 3 29.76 -33.88 -2.3 0.71 648 - 727 3 31.71 -36.37 -2.3 0.71 726 - 728 3 33.23 -37.79 -2.3 0.71 727 - 729 3 33.67 -37.96 3.37 0.71 728 - 730 3 35.19 -40.63 3.37 0.71 729 - 731 3 36.49 -41.52 5.54 0.71 730 - 732 3 37.58 -42.94 5.54 0.71 731 - 733 3 38.88 -43.83 7.86 0.71 732 - 734 3 41.19 -45.86 7.86 0.71 733 - 735 3 42.49 -47.28 7.86 0.71 734 - 736 3 43.57 -48.7 10.42 0.71 735 - 737 3 44.66 -51.37 10.42 0.71 736 - 738 3 46.18 -52.25 12.98 0.71 737 - 739 3 47.48 -53.32 14.64 0.71 738 - 740 3 48.79 -54.56 14.64 0.71 739 - 741 3 49.87 -55.81 16.12 0.71 740 - 742 3 50.52 -57.94 17.84 0.71 741 - 743 3 51.18 -59.72 20.06 0.71 742 - 744 3 50.33 -63.95 20.06 0.71 743 - 745 3 50.11 -66.63 22.44 0.71 744 - 746 3 50.33 -68.23 21.22 0.71 745 - 747 3 50.55 -70.36 22.63 0.71 746 - 748 3 50.98 -72.32 22.82 0.71 747 - 749 3 50.76 -74.98 25.59 0.71 748 - 750 3 51.67 -77.75 25.59 0.71 749 - 751 3 52.1 -80.59 25.59 0.71 750 - 752 3 52.97 -82.37 25.59 0.71 751 - 753 3 53.19 -84.85 25.51 0.71 752 - 754 3 53.62 -86.98 25.51 0.71 753 - 755 3 54.05 -89.12 25.51 0.71 754 - 756 3 54.71 -91.43 25.51 0.71 755 - 757 3 55.48 -94.1 25.51 0.71 756 - 758 3 55.47 -95.52 26.67 0.71 757 - 759 3 56.77 -96.06 26.67 0.71 758 - 760 3 56.33 -99.79 28.31 0.71 759 - 761 3 56.4 -101.81 28.31 0.71 760 - 762 3 55.96 -104.12 28.31 0.71 761 - 763 3 57.05 -106.61 28.31 0.71 762 - 764 3 57.47 -108.39 28.98 0.71 763 - 765 3 58.33 -110.52 28.98 0.71 764 - 766 3 58.33 -112.12 28.98 0.71 765 - 767 3 58.55 -114.07 28.98 0.71 766 - 768 3 59.85 -115.49 28.98 0.71 767 - 769 3 59.8 -117.52 28.98 0.71 768 - 770 3 59.58 -119.3 28.98 0.71 769 - 771 3 59.15 -121.43 28.98 0.71 770 - 772 3 59.8 -122.85 28.98 0.71 771 - 773 3 60.45 -124.45 28.98 0.71 772 - 774 3 61.53 -125.7 28.98 0.71 773 - 775 3 61.75 -128.18 28.98 0.71 774 - 776 3 61.32 -129.96 28.98 0.71 775 - 777 4 11.43 16.93 -0.7 2.485 1 - 778 4 13.17 18.71 -0.7 2.485 777 - 779 4 14.69 19.95 -0.6 2.31 778 - 780 4 16.43 21.55 -0.6 2.31 779 - 781 4 18.38 23.15 -3.24 2.31 780 - 782 4 20.34 25.64 -2.86 2.31 781 - 783 4 23.6 29.01 -2.86 2.13 782 - 784 4 25.07 30.07 -0.58 2.13 783 - 785 4 27.24 32.2 -0.58 2.13 784 - 786 4 28.11 34.33 -0.58 2.13 785 - 787 4 28.98 36.46 1.38 2.13 786 - 788 4 30.28 38.42 1.38 2.13 787 - 789 4 31.8 40.01 3.08 2.13 788 - 790 4 33.54 42.15 1.32 1.955 789 - 791 4 35.28 44.28 1.96 1.6 790 - 792 4 38.42 47.91 1.96 1.775 791 - 793 4 39.51 49.15 -0.19 1.775 792 - 794 4 39.73 51.11 0.88 1.775 793 - 795 4 41.03 53.24 0.88 1.775 794 - 796 4 41.9 54.66 -1.98 1.775 795 - 797 4 43.42 56.97 -1.98 1.775 796 - 798 4 45.81 58.57 -2.04 1.775 797 - 799 4 46.43 59.84 -4.69 1.775 798 - 800 4 48.17 61.98 -4.32 1.775 799 - 801 4 50.13 64.64 -4.32 1.775 800 - 802 4 50.78 66.77 -6.38 1.775 801 - 803 4 52.08 68.19 -8.52 1.775 802 - 804 4 54.25 70.32 -9.89 1.775 803 - 805 4 55.99 72.63 -10.66 1.775 804 - 806 4 58.38 75.3 -10.66 1.775 805 - 807 4 60.54 78.02 -8.25 1.6 806 - 808 4 62.27 79.97 -8.25 1.6 807 - 809 4 64.01 82.46 -5.63 1.6 808 - 810 4 65.97 85.3 -5.63 1.6 809 - 811 4 67.27 87.61 -4 1.6 810 - 812 4 69.44 90.1 -4 1.6 811 - 813 4 70.69 93.58 -4 1.775 812 - 814 4 71.55 95.53 -7.28 1.955 813 - 815 4 72.62 97.84 -7.28 1.955 814 - 816 4 73.71 99.97 -7.28 2.13 815 - 817 4 74.79 101.75 -7.28 2.13 816 - 818 4 76.1 104.95 -7.28 2.13 817 - 819 4 78.57 108.91 -6 2.13 818 - 820 4 79.87 111.22 -6 2.13 819 - 821 4 81.39 113.53 -4.77 2.13 820 - 822 4 82.05 115.84 -4.77 2.13 821 - 823 4 82.92 116.72 -4.77 2.13 822 - 824 4 83.13 119.39 -4.77 2.13 823 - 825 4 84.47 121.53 -4.77 1.955 824 - 826 4 85.99 123.31 -4.77 1.955 825 - 827 4 87.73 125.62 -4.77 1.955 826 - 828 4 89.25 127.39 -6.71 1.955 827 - 829 4 90.98 129.53 -6.71 1.955 828 - 830 4 92.5 130.59 -11.6 2.13 829 - 831 4 94.02 131.3 -11.6 2.13 830 - 832 4 95.54 132.01 -11.6 2.485 831 - 833 4 95.76 132.37 -11.6 3.02 832 - 834 4 94.89 134.15 -10.74 1.775 833 - 835 4 95.11 136.1 -10.74 1.775 834 - 836 4 95.11 137.34 -12.26 1.775 835 - 837 4 95.11 139.3 -12.26 1.775 836 - 838 4 95.11 139.47 -11.68 1.6 837 - 839 4 95.11 140.9 -11.68 1.6 838 - 840 4 95.33 142.14 -11.68 1.42 839 - 841 4 95.76 143.92 -13.98 1.42 840 - 842 4 96.16 145.86 -13.98 1.42 841 - 843 4 96.38 147.81 -12.71 1.42 842 - 844 4 96.6 149.94 -12.71 1.42 843 - 845 4 97.68 151.37 -12.71 1.42 844 - 846 4 99.2 153.32 -12.71 1.42 845 - 847 4 100.51 155.27 -12.71 1.42 846 - 848 4 101.16 156.52 -12.71 1.42 847 - 849 4 101.81 157.58 -14.33 1.42 848 - 850 4 102.68 158.83 -14.33 1.6 849 - 851 4 102.94 158.9 -14.33 1.775 850 - 852 4 102.35 159.83 -13.14 1.6 851 - 853 4 102.35 161.79 -13.14 1.6 852 - 854 4 102.56 163.56 -13.07 1.42 853 - 855 4 103 166.05 -13.07 1.42 854 - 856 4 103.21 168.36 -13.07 1.42 855 - 857 4 103.65 170.14 -13.07 1.42 856 - 858 4 104.08 171.91 -13.07 1.42 857 - 859 4 104.3 172.62 -13.23 1.42 858 - 860 4 105.27 174.66 -13.23 1.42 859 - 861 4 105.48 176.23 -13.23 1.42 860 - 862 4 105.27 178.01 -13.23 1.42 861 - 863 4 105.7 179.07 -13.23 1.42 862 - 864 4 106.13 180.32 -13.23 1.42 863 - 865 4 106.13 181.21 -13.23 1.42 864 - 866 4 106.35 181.92 -13.23 1.42 865 - 867 4 105.48 183.16 -13.23 1.065 866 - 868 4 105.7 184.76 -13.23 1.065 867 - 869 4 106.35 186 -11.38 0.89 868 - 870 4 106.79 188.31 -11.38 0.89 869 - 871 4 106.35 190.09 -8.14 0.89 870 - 872 4 105.7 191.51 -8.14 0.89 871 - 873 4 106.35 193.11 -8.14 1.065 872 - 874 4 105.7 194.71 -8.14 1.065 873 - 875 4 105.83 196.52 -5.66 1.065 874 - 876 4 106.05 198.83 -5.66 1.065 875 - 877 4 106.48 200.25 -5.66 1.065 876 - 878 4 106.7 201.49 -5.66 1.065 877 - 879 4 106.27 203.09 -7.68 1.065 878 - 880 4 106.27 204.16 -6.5 0.89 879 - 881 4 106.27 206.47 -6.5 0.89 880 - 882 4 106.27 208.6 -6.5 0.89 881 - 883 4 105.83 210.55 -6.5 0.89 882 - 884 4 105.81 211.61 -4.37 1.065 883 - 885 4 106.03 214.09 -4.37 1.065 884 - 886 4 106.25 215.69 -4.37 1.065 885 - 887 4 105.81 216.94 -2.22 1.065 886 - 888 4 105.81 218.53 -2.22 0.89 887 - 889 4 105.38 220.84 -2.22 0.89 888 - 890 4 105.16 222.8 -2.22 0.89 889 - 891 4 105.16 224.4 -2.22 0.89 890 - 892 4 104.29 226.35 -0.57 0.89 891 - 893 4 104.85 227.41 -0.57 0.89 892 - 894 4 105.07 229.54 -0.57 0.89 893 - 895 4 105.07 231.49 -0.57 0.89 894 - 896 4 105.28 233.62 -0.57 0.89 895 - 897 4 105.72 235.76 -0.57 0.89 896 - 898 4 106.15 237 -0.57 0.89 897 - 899 4 106.59 238.42 -0.57 0.89 898 - 900 4 106.8 239.84 0.98 0.89 899 - 901 4 107.24 241.97 0.98 0.89 900 - 902 4 107.67 244.78 0.98 0.89 901 - 903 4 107.67 246.91 0.98 0.89 902 - 904 4 107.67 248.87 0.98 0.89 903 - 905 4 108.1 250.47 0.98 0.89 904 - 906 4 108.53 251.89 0.98 0.89 905 - 907 4 109.62 253.67 0.98 0.89 906 - 908 4 109.84 255.09 0.98 0.89 907 - 909 4 110.71 256.15 0.98 0.89 908 - 910 4 111.05 257.54 2.28 0.89 909 - 911 4 111.48 259.32 2.28 1.065 910 - 912 4 111.05 260.91 2.28 1.065 911 - 913 4 111.27 262.34 3.51 1.065 912 - 914 4 111.27 264.47 3.51 1.065 913 - 915 4 111.27 265.71 3.51 1.065 914 - 916 4 111.48 267.31 5.26 0.89 915 - 917 4 111.7 269.09 5.26 0.89 916 - 918 4 111.92 270.69 5.26 1.065 917 - 919 4 112.47 272.01 5.26 1.065 918 - 920 4 113.1 273.94 7.2 1.065 919 - 921 4 113.53 276.43 7.2 1.065 920 - 922 4 113.75 278.2 7.2 1.065 921 - 923 4 113.97 280.33 8.1 1.065 922 - 924 4 114.19 282.29 8.1 1.065 923 - 925 4 114.19 284.42 8.1 1.065 924 - 926 4 114.62 286.37 9.94 1.065 925 - 927 4 114.63 288.12 9.94 1.065 926 - 928 4 114.2 290.25 9.94 1.065 927 - 929 4 113.98 292.2 9.94 1.065 928 - 930 4 113.98 294.69 9.94 1.065 929 - 931 4 113.33 296.11 9.94 1.065 930 - 932 4 113.11 297.35 11.25 1.065 931 - 933 4 113.55 299.31 11.25 1.065 932 - 934 4 113.76 301.26 13.19 1.065 933 - 935 4 113.6 303.12 13.19 1.065 934 - 936 4 113.38 306.31 13.19 1.065 935 - 937 4 112.73 308.27 13.19 1.065 936 - 938 4 112.73 310.05 15.53 1.065 937 - 939 4 112.51 311.64 15.53 1.065 938 - 940 4 112.95 313.42 15.53 1.065 939 - 941 4 113.6 314.84 15.53 1.065 940 - 942 4 113.38 316.8 15.53 1.065 941 - 943 4 113.2 319.23 16.7 1.065 942 - 944 4 112.98 322.07 16.57 0.89 943 - 945 4 112.98 325.09 16.57 0.89 944 - 946 4 112.98 327.22 18.62 0.89 945 - 947 4 112.33 330.06 18.62 0.89 946 - 948 4 111.46 332.2 19.22 0.89 947 - 949 4 111.2 333.92 19.22 0.89 948 - 950 4 110.98 336.05 20.91 0.89 949 - 951 4 111.63 338 20.91 0.89 950 - 952 4 111.41 340.31 20.91 0.89 951 - 953 4 111.41 342.44 22.79 0.89 952 - 954 4 111.63 344.58 22.79 0.89 953 - 955 4 112.28 347.6 22.79 0.89 954 - 956 4 112.87 348.78 22.79 0.89 955 - 957 4 113.52 350.92 24.5 0.89 956 - 958 4 114.48 352.03 24.5 0.71 957 - 959 4 114.92 353.61 24.5 0.71 958 - 960 4 116 356.09 26.17 0.71 959 - 961 4 116.44 358.4 26.17 0.71 960 - 962 4 117.09 360 28.04 0.71 961 - 963 4 117.96 361.42 28.04 0.71 962 - 964 4 118.17 363.2 27.9 0.71 963 - 965 4 118.61 364.8 27.9 0.71 964 - 966 4 119.48 366.04 27.9 0.71 965 - 967 4 119.85 367.36 30.1 0.71 966 - 968 4 120.07 369.32 31.49 0.71 967 - 969 4 120.93 370.91 31.49 0.71 968 - 970 4 121.59 373.05 31.49 0.71 969 - 971 4 122.24 374.47 31.49 0.71 970 - 972 4 124.41 376.6 31.49 0.71 971 - 973 4 123.54 378.02 31.49 0.71 972 - 974 4 124.63 379.8 31.49 0.71 973 - 975 4 125.93 381.04 32.14 0.71 974 - 976 4 127.12 382.89 32.14 0.71 975 - 977 4 128.42 385.03 32.14 0.71 976 - 978 4 129.29 386.63 32.14 0.71 977 - 979 4 130.16 389.11 32.14 0.71 978 - 980 4 130.81 389.82 32.14 0.71 979 - 981 4 131.46 391.6 32.47 0.71 980 - 982 4 132.11 393.2 32.47 0.71 981 - 983 4 133.63 395.33 32.78 0.71 982 - 984 4 134.05 397.47 35.28 0.71 983 - 985 4 134.27 399.6 35.28 0.71 984 - 986 4 135.35 401.74 35.28 0.71 985 - 987 4 135.79 403.51 35.28 0.89 986 - 988 4 136.44 405.11 35.28 0.89 987 - 989 4 136.85 405.32 35.28 0.89 988 - 990 4 108.09 183.34 -16.39 1.065 866 - 991 4 108.52 185.47 -16.39 0.89 990 - 992 4 108.96 187.07 -17.9 0.89 991 - 993 4 109.39 188.13 -15.86 0.89 992 - 994 4 109.83 189.73 -18.03 0.89 993 - 995 4 110.04 191.15 -20.49 0.89 994 - 996 4 110.69 192.58 -21.47 0.89 995 - 997 4 111.56 193.29 -21.47 0.89 996 - 998 4 112.43 194.53 -22.15 0.89 997 - 999 4 113.08 195.6 -23.38 0.89 998 - 1000 4 113.74 196.66 -24.36 0.89 999 - 1001 4 113.74 198.08 -25.89 0.89 1000 - 1002 4 114.17 199.15 -27.94 0.89 1001 - 1003 4 114.6 200.75 -30.08 0.89 1002 - 1004 4 115.69 203.06 -30.08 0.89 1003 - 1005 4 115.64 204.31 -31.51 0.89 1004 - 1006 4 116.08 205.56 -31.51 0.89 1005 - 1007 4 116.73 206.98 -31.51 0.71 1006 - 1008 4 117.16 208.75 -31.51 0.71 1007 - 1009 4 117.6 210.53 -32.74 0.71 1008 - 1010 4 117.6 212.13 -32.74 0.71 1009 - 1011 4 117.6 214.62 -34.55 0.89 1010 - 1012 4 117.82 216.75 -34.55 0.89 1011 - 1013 4 118.03 218.7 -34.55 0.89 1012 - 1014 4 118.24 220.22 -33.58 0.89 1013 - 1015 4 118.03 223.6 -33.58 0.89 1014 - 1016 4 117.37 225.2 -34.98 0.89 1015 - 1017 4 117.16 226.97 -34.98 0.89 1016 - 1018 4 116.72 228.75 -34.98 0.89 1017 - 1019 4 116.51 230.17 -36.51 0.89 1018 - 1020 4 116.29 231.95 -36.51 0.89 1019 - 1021 4 116.29 233.72 -38.15 0.89 1020 - 1022 4 116.01 235.6 -38.15 0.89 1021 - 1023 4 116.01 237.38 -39.9 0.89 1022 - 1024 4 117.08 239.33 -39.9 0.89 1023 - 1025 4 117.73 241.11 -41.34 0.89 1024 - 1026 4 118.82 242.88 -41.34 0.89 1025 - 1027 4 119.9 244.66 -41.34 0.89 1026 - 1028 4 121.42 248.57 -41.34 0.71 1027 - 1029 4 122.73 249.89 -43.37 0.71 1028 - 1030 4 123.58 251.13 -43.37 0.71 1029 - 1031 4 124.67 252.73 -45.26 0.71 1030 - 1032 4 125.75 254.15 -45.26 0.71 1031 - 1033 4 126.84 255.93 -46.82 0.71 1032 - 1034 4 127.92 257.88 -46.82 0.71 1033 - 1035 4 128.58 259.48 -47.64 0.71 1034 - 1036 4 129.44 261.26 -48.99 0.71 1035 - 1037 4 130.53 262.86 -50.41 0.71 1036 - 1038 4 131.62 264.64 -50.32 0.71 1037 - 1039 4 133.14 266.59 -50.32 0.71 1038 - 1040 4 135.09 268.19 -50.32 0.71 1039 - 1041 4 136.39 270.32 -50.32 0.71 1040 - 1042 4 137.7 271.92 -50.32 0.71 1041 - 1043 4 139.22 273.52 -50.32 0.71 1042 - 1044 4 140.3 275.12 -49.5 0.71 1043 - 1045 4 141.61 277.07 -49.5 0.71 1044 - 1046 4 143.45 279.1 -49.5 0.71 1045 - 1047 4 144.32 280.88 -49.5 0.71 1046 - 1048 4 144.97 282.12 -49.77 0.71 1047 - 1049 4 146.06 284.08 -49.77 0.71 1048 - 1050 4 146.71 285.5 -49.77 0.71 1049 - 1051 4 147.36 287.45 -49.77 0.71 1050 - 1052 4 148.45 289.23 -49.77 0.71 1051 - 1053 4 149.31 291 -49.77 0.71 1052 - 1054 4 150.4 292.43 -49.77 0.71 1053 - 1055 4 151.49 293.65 -49.77 0.71 1054 - 1056 4 151.7 295.42 -51.57 0.71 1055 - 1057 4 152.57 297.38 -51.57 0.71 1056 - 1058 4 153.22 298.98 -51.57 0.71 1057 - 1059 4 153.87 300.93 -51.45 0.71 1058 - 1060 4 153.87 302.88 -51.45 0.71 1059 - 1061 4 154.09 305.02 -51.45 0.71 1060 - 1062 4 154.31 306.62 -51.45 0.71 1061 - 1063 4 154.67 308.27 -51.45 0.71 1062 - 1064 4 154.45 310.05 -53.14 0.71 1063 - 1065 4 155.1 312 -53.14 0.71 1064 - 1066 4 155.32 314.31 -53.14 0.71 1065 - 1067 4 155.32 316.09 -53.55 0.89 1066 - 1068 4 155.97 317.86 -53.55 0.89 1067 - 1069 4 155.75 320.17 -53.55 0.89 1068 - 1070 4 155.97 321.59 -52.72 0.89 1069 - 1071 4 155.82 324 -52.72 0.89 1070 - 1072 4 155.8 325.96 -55.36 0.89 1071 - 1073 4 155.58 327.38 -55.36 0.89 1072 - 1074 4 156.23 328.98 -55.14 0.89 1073 - 1075 4 156.23 331.29 -55.14 0.89 1074 - 1076 4 156.45 333.95 -55.14 0.89 1075 - 1077 4 157.1 336.08 -57.1 0.89 1076 - 1078 4 157.47 337.14 -59.1 0.89 1077 - 1079 4 157.9 338.2 -59.1 0.89 1078 - 1080 4 158.12 338.91 -59.1 1.065 1079 - 1081 4 157.6 341.05 -59.34 0.71 1080 - 1082 4 158.03 343.36 -59.34 0.71 1081 - 1083 4 158.03 344.42 -59.79 0.71 1082 - 1084 4 157.6 346.91 -59.79 0.71 1083 - 1085 4 157.38 348.15 -59.85 0.71 1084 - 1086 4 157.38 350.28 -61.52 0.71 1085 - 1087 4 157.17 352.77 -61.52 0.71 1086 - 1088 4 157.17 354.55 -61.52 0.71 1087 - 1089 4 157.23 357.49 -62.28 0.71 1088 - 1090 4 157.23 359.62 -62.28 0.71 1089 - 1091 4 157.23 362.11 -62.28 0.71 1090 - 1092 4 157.23 363.89 -64.82 0.71 1091 - 1093 4 157.45 366.02 -64.82 0.71 1092 - 1094 4 157.89 367.97 -64.82 0.71 1093 - 1095 4 158.54 369.57 -64.82 0.71 1094 - 1096 4 160.17 371.42 -64.82 0.71 1095 - 1097 4 160.82 373.2 -64.82 0.71 1096 - 1098 4 162.13 374.98 -66.88 0.71 1097 - 1099 4 162.56 376.22 -66.88 0.71 1098 - 1100 4 164.3 378.53 -68.36 0.71 1099 - 1101 4 165.17 380.31 -68.36 0.71 1100 - 1102 4 166.04 382.26 -70.17 0.71 1101 - 1103 4 167.12 384.57 -68.43 0.71 1102 - 1104 4 167.47 386.6 -71.03 0.71 1103 - 1105 4 168.34 388.73 -71.34 0.71 1104 - 1106 4 168.55 390.69 -73.47 0.71 1105 - 1107 4 168.55 392.29 -73.47 0.71 1106 - 1108 4 168.99 393.35 -73.47 0.71 1107 - 1109 4 168.4 394.54 -72.38 0.71 1108 - 1110 4 169.05 396.49 -72.38 0.71 1109 - 1111 4 169.27 398.27 -72.38 0.71 1110 - 1112 4 168.83 400.04 -72.38 0.71 1111 - 1113 4 168.4 401.46 -72.38 0.71 1112 - 1114 4 167.75 402.53 -72.38 0.71 1113 - 1115 4 167.53 403.95 -72.3 0.71 1114 - 1116 4 167.53 405.37 -71.58 0.71 1115 - 1117 4 167.31 408.04 -69.38 0.71 1116 - 1118 4 167.45 410.2 -69.38 0.71 1117 - 1119 4 166.8 411.62 -67.06 0.71 1118 - 1120 4 166.37 413.04 -67.06 0.71 1119 - 1121 4 166.37 415.53 -67.06 0.71 1120 - 1122 4 165.93 417.49 -67.06 0.71 1121 - 1123 4 165.28 419.08 -66.7 0.71 1122 - 1124 4 163.54 420.33 -66.7 0.71 1123 - 1125 4 162.02 421.57 -63.24 0.71 1124 - 1126 4 160.72 424.24 -63.24 0.71 1125 - 1127 4 159.77 425.71 -63.24 0.71 1126 - 1128 4 159.11 427.67 -62.42 0.71 1127 - 1129 4 158.25 429.27 -62.42 0.71 1128 - 1130 4 158.03 431.04 -62.42 0.71 1129 - 1131 4 157.38 432.46 -62.42 0.71 1130 - 1132 4 156.73 434.77 -62.42 0.71 1131 - 1133 4 155.64 436.55 -61.43 0.71 1132 - 1134 4 155.21 439.04 -61.93 0.71 1133 - 1135 4 153.71 441.2 -60.51 0.71 1134 - 1136 4 152.41 443.16 -60.51 0.71 1135 - 1137 4 151.54 445.29 -60.51 0.71 1136 - 1138 4 150.46 447.42 -60.97 0.71 1137 - 1139 4 148.94 449.91 -60.97 0.71 1138 - 1140 4 147.63 451.86 -59.15 0.71 1139 - 1141 4 146.98 453.97 -60.79 0.71 1140 - 1142 4 147.23 456 -60.79 0.71 1141 - 1143 4 146.15 458.49 -59.41 0.71 1142 - 1144 4 145.5 460.8 -59.41 0.71 1143 - 1145 4 144.85 462.75 -59.41 0.71 1144 - 1146 4 144.41 464.88 -59.41 0.71 1145 - 1147 4 143.76 467.37 -59.41 0.71 1146 - 1148 4 144.41 467.91 -59.41 0.71 1147 - 1149 4 143.33 471.1 -59.41 0.71 1148 - 1150 4 143.43 473.2 -59.26 0.71 1149 - 1151 4 143.22 475.51 -59.26 0.71 1150 - 1152 4 143.65 478 -59.26 0.71 1151 - 1153 4 143.43 480.13 -59.26 0.71 1152 - 1154 4 143.43 481.91 -59.26 0.71 1153 - 1155 4 144.3 483.86 -60.06 0.71 1154 - 1156 4 144.74 486.53 -60.06 0.71 1155 - 1157 4 146.14 488.42 -60.06 0.71 1156 - 1158 4 147.22 490.73 -60.06 0.71 1157 - 1159 4 148.53 492.33 -60.06 0.71 1158 - 1160 4 149.18 493.93 -60.06 0.71 1159 - 1161 4 148.96 496.42 -60.06 0.71 1160 - 1162 4 149.83 498.55 -60.06 0.71 1161 - 1163 4 151.13 501.04 -60.06 0.71 1162 - 1164 4 151.92 503.74 -60.06 0.71 1163 - 1165 4 153.01 505.69 -60.54 0.71 1164 - 1166 4 154.31 507.82 -60.54 0.71 1165 - 1167 4 154.96 510.66 -60.54 0.71 1166 - 1168 4 156.48 513.51 -60.54 0.71 1167 - 1169 4 158 515.82 -59.02 0.71 1168 - 1170 4 158.7 517.29 -61.86 0.71 1169 - 1171 4 160.01 519.25 -61.86 0.71 1170 - 1172 4 161.96 520.49 -61.86 0.71 1171 - 1173 4 163.92 521.91 -61.86 0.71 1172 - 1174 4 164.35 523.69 -61.86 0.71 1173 - 1175 4 165.65 524.93 -61.86 0.71 1174 - 1176 4 167.17 526.17 -61.86 0.71 1175 - 1177 4 169.34 527.06 -61.64 0.71 1176 - 1178 4 171.3 528.13 -61.64 0.71 1177 - 1179 4 172.17 529.73 -60.11 0.71 1178 - 1180 4 173.25 531.5 -59.06 0.71 1179 - 1181 4 175.41 532.91 -59.06 0.71 1180 - 1182 4 176.71 534.34 -59.06 0.71 1181 - 1183 4 178.23 536.29 -59.06 0.71 1182 - 1184 4 179.32 537.51 -59.06 0.71 1183 - 1185 4 181.92 539.29 -59.06 0.71 1184 - 1186 4 183.44 539.64 -59.06 0.71 1185 - 1187 4 185.18 540.71 -62.56 0.71 1186 - 1188 4 186.26 542.31 -62.56 0.71 1187 - 1189 4 188 543.91 -62.56 0.71 1188 - 1190 4 190.17 545.86 -62.56 0.71 1189 - 1191 4 192.01 547.82 -61.79 0.71 1190 - 1192 4 193.73 549.78 -63.96 0.71 1191 - 1193 4 195.68 551.2 -66.18 0.71 1192 - 1194 4 198.29 552.8 -66.18 0.71 1193 - 1195 4 199.59 553.86 -66.18 0.71 1194 - 1196 4 200.89 556 -66.18 0.71 1195 - 1197 4 202.85 557.6 -66.18 0.71 1196 - 1198 4 204.37 559.73 -66.18 0.71 1197 - 1199 4 205.89 562.57 -66.18 0.71 1198 - 1200 4 206.72 564.09 -67.75 0.71 1199 - 1201 4 208.01 566.05 -67.21 0.71 1200 - 1202 4 208.87 568.36 -69.38 0.71 1201 - 1203 4 209.96 570.49 -69.38 0.71 1202 - 1204 4 210.61 572.62 -69.38 0.71 1203 - 1205 4 211.7 574.04 -69.38 0.71 1204 - 1206 4 212.78 575.64 -69.38 0.71 1205 - 1207 4 214.3 576.88 -69.38 0.71 1206 - 1208 4 215.97 578.29 -69.38 0.71 1207 - 1209 4 170.51 394.6 -73.47 0.71 1108 - 1210 4 172.9 395.31 -73.47 0.71 1209 - 1211 4 174.42 397.26 -73.47 0.71 1210 - 1212 4 175.07 398.15 -74.9 0.71 1211 - 1213 4 176.16 399.57 -74.9 0.71 1212 - 1214 4 177.75 400.36 -74.9 0.71 1213 - 1215 4 177.97 401.6 -73.17 0.71 1214 - 1216 4 178.19 403.02 -75.59 0.71 1215 - 1217 4 178.41 404.27 -75.59 0.71 1216 - 1218 4 179.27 406.04 -75.34 0.71 1217 - 1219 4 178.84 408.18 -75.34 0.71 1218 - 1220 4 178.84 410.13 -77.88 0.71 1219 - 1221 4 179.27 412.08 -77.88 0.71 1220 - 1222 4 179.49 413.86 -77.88 0.71 1221 - 1223 4 180.3 416.54 -77.88 0.71 1222 - 1224 4 180.3 418.49 -77.88 0.71 1223 - 1225 4 180.52 420.27 -78.7 0.71 1224 - 1226 4 180.74 422.4 -78.7 0.71 1225 - 1227 4 180.52 424.35 -78.7 0.71 1226 - 1228 4 179.65 426.84 -78.7 0.71 1227 - 1229 4 180.09 429.15 -80.71 0.71 1228 - 1230 4 179.82 430.67 -80.71 0.71 1229 - 1231 4 179.6 432.8 -80.71 0.71 1230 - 1232 4 179.6 435.11 -79.88 0.71 1231 - 1233 4 179.38 437.24 -79.88 0.71 1232 - 1234 4 179.82 438.84 -79.88 0.71 1233 - 1235 4 180.25 440.44 -79.88 0.71 1234 - 1236 4 180.25 441.68 -81.52 0.71 1235 - 1237 4 180.69 442.93 -83.26 0.71 1236 - 1238 4 181.99 444.35 -83.26 0.71 1237 - 1239 4 183.55 445.71 -82.04 0.71 1238 - 1240 4 185.29 447.49 -82.04 0.71 1239 - 1241 4 186.59 449.09 -81.54 0.71 1240 - 1242 4 187.46 450.69 -81.54 0.71 1241 - 1243 4 188.98 452.11 -83.78 0.71 1242 - 1244 4 190.29 453.89 -85.06 0.71 1243 - 1245 4 191.81 455.66 -83.98 0.71 1244 - 1246 4 193.33 457.44 -83.98 0.71 1245 - 1247 4 193.98 458.86 -83.98 0.71 1246 - 1248 4 194.9 461 -84.02 0.71 1247 - 1249 4 195.77 463.31 -84.02 0.71 1248 - 1250 4 197.29 464.56 -87.18 0.71 1249 - 1251 4 198.81 466.69 -87.18 0.71 1250 - 1252 4 200.33 468.64 -87.18 0.71 1251 - 1253 4 201.42 470.42 -88.28 0.71 1252 - 1254 4 201.85 471.66 -87.12 0.71 1253 - 1255 4 202.94 473.97 -85.42 0.71 1254 - 1256 4 204.79 476.71 -85.42 0.71 1255 - 1257 4 205.64 478.31 -85.42 0.71 1256 - 1258 4 206.94 480.8 -85.42 0.71 1257 - 1259 4 208.25 483.29 -85.42 0.71 1258 - 1260 4 209.55 485.06 -83.62 0.71 1259 - 1261 4 210.85 487.37 -83.62 0.71 1260 - 1262 4 213.02 489.5 -83.62 0.71 1261 - 1263 4 213.7 491.96 -83.62 0.71 1262 - 1264 4 214.77 493.73 -85.06 0.71 1263 - 1265 4 216.07 496.4 -87.32 0.71 1264 - 1266 4 217.81 498.35 -88.84 0.71 1265 - 1267 4 219.55 500.48 -88.84 0.71 1266 - 1268 4 220.2 502.44 -88.84 0.71 1267 - 1269 4 221.29 504.04 -88.84 0.71 1268 - 1270 4 222.75 505.71 -88.84 0.71 1269 - 1271 4 224.06 507.67 -88.84 0.71 1270 - 1272 4 225.36 509.07 -88.84 0.71 1271 - 1273 4 226.23 510.13 -88.84 0.71 1272 - 1274 4 226.88 511.91 -88.84 0.71 1273 - 1275 4 227.97 514.22 -90.92 0.71 1274 - 1276 4 228.18 516 -90.92 0.71 1275 - 1277 4 229.27 517.42 -89.16 0.71 1276 - 1278 4 230.14 519.02 -89.16 0.71 1277 - 1279 4 232.01 520.67 -89.16 0.71 1278 - 1280 4 233.53 522.25 -89.16 0.71 1279 - 1281 4 234.61 524.38 -89.16 0.71 1280 - 1282 4 236.35 525.8 -89.16 0.71 1281 - 1283 4 237.22 527.04 -89.16 0.71 1282 - 1284 4 238.3 528.64 -90.46 0.71 1283 - 1285 4 240.04 530.06 -90.46 0.71 1284 - 1286 4 240.69 531.84 -89.98 0.71 1285 - 1287 4 241.56 534.15 -89.98 0.71 1286 - 1288 4 242.72 535.67 -89.98 0.71 1287 - 1289 4 243.81 537.27 -89.98 0.71 1288 - 1290 4 245.33 538.16 -89.54 0.71 1289 - 1291 4 246.41 539.58 -89.54 0.71 1290 - 1292 4 247.93 541 -89.54 0.71 1291 - 1293 4 249.45 542.42 -89.54 0.71 1292 - 1294 4 250.76 543.49 -89.54 0.71 1293 - 1295 4 252.71 544.37 -86.81 0.71 1294 - 1296 4 254.23 544.91 -85.04 0.71 1295 - 1297 4 255.53 545.62 -86.74 0.71 1296 - 1298 4 257.49 546.51 -86.26 0.71 1297 - 1299 4 258.57 546.51 -86.66 0.71 1298 - 1300 4 260.31 547.22 -85.52 0.71 1299 - 1301 4 261.75 548.34 -85.52 0.71 1300 - 1302 4 262.84 548.69 -85.52 0.71 1301 - 1303 4 158.99 339.8 -60.21 0.71 1080 - 1304 4 160.51 341.04 -60.21 0.71 1303 - 1305 4 162.45 342.11 -62.85 0.71 1304 - 1306 4 164.18 343.71 -62.85 0.71 1305 - 1307 4 165.27 343.71 -63.99 0.71 1306 - 1308 4 167.01 344.06 -66.1 0.71 1307 - 1309 4 168.74 345.84 -68.3 0.71 1308 - 1310 4 170.26 346.91 -70.45 0.71 1309 - 1311 4 172.22 348.51 -70.45 0.71 1310 - 1312 4 174.39 350.11 -71.54 0.71 1311 - 1313 4 176.13 351.53 -73.3 0.71 1312 - 1314 4 178.41 353.42 -76.18 0.71 1313 - 1315 4 180.36 355.2 -77.5 0.71 1314 - 1316 4 182.1 356.44 -78.82 0.71 1315 - 1317 4 183.18 357.33 -77.79 0.71 1316 - 1318 4 184.92 359.29 -79.28 0.71 1317 - 1319 4 187.09 361.06 -81.11 0.71 1318 - 1320 4 188.83 363.02 -82.41 0.71 1319 - 1321 4 190.78 364.97 -83.39 0.71 1320 - 1322 4 191.44 365.68 -84.27 0.71 1321 - 1323 4 192.32 366.58 -82.58 0.71 1322 - 1324 4 194.04 367.29 -82.58 0.71 1323 - 1325 4 195.78 368.54 -82.58 0.71 1324 - 1326 4 197.73 370.84 -82.58 0.71 1325 - 1327 4 199.69 372.62 -81.69 0.71 1326 - 1328 4 200.56 373.86 -81.69 0.71 1327 - 1329 4 202.08 374.22 -81.69 0.71 1328 - 1330 4 203.6 375.82 -81.69 0.71 1329 - 1331 4 205.33 377.24 -84.2 0.71 1330 - 1332 4 206.85 379.37 -84.2 0.71 1331 - 1333 4 209.24 380.62 -82.27 0.71 1332 - 1334 4 210.99 381.38 -82.27 0.71 1333 - 1335 4 212.29 382.45 -83.34 0.71 1334 - 1336 4 214.03 383.51 -83.34 0.71 1335 - 1337 4 215.77 384.76 -83.34 0.71 1336 - 1338 4 217.29 384.93 -83.34 0.71 1337 - 1339 4 218.59 385.64 -83.34 0.71 1338 - 1340 4 220.11 385.82 -83.34 0.71 1339 - 1341 4 221.63 386.71 -83.34 0.71 1340 - 1342 4 223.15 387.6 -83.34 0.71 1341 - 1343 4 225.1 388.13 -83.34 0.71 1342 - 1344 4 227.28 389.2 -84.61 0.71 1343 - 1345 4 229.86 389.27 -84.61 0.71 1344 - 1346 4 231.81 389.8 -83.78 0.71 1345 - 1347 4 235.5 391.05 -85.85 0.71 1346 - 1348 4 236.37 392.65 -85.85 0.71 1347 - 1349 4 238.11 394.42 -87.34 0.71 1348 - 1350 4 240.28 395.84 -89.05 0.71 1349 - 1351 4 242.45 397.44 -89.05 0.71 1350 - 1352 4 243.1 399.4 -89.05 0.71 1351 - 1353 4 244.63 400.82 -91.1 0.71 1352 - 1354 4 246.36 402.42 -92.89 0.71 1353 - 1355 4 248.62 404.09 -92.35 0.71 1354 - 1356 4 251.01 405.87 -92.35 0.71 1355 - 1357 4 252.53 407.47 -92.35 0.71 1356 - 1358 4 254.05 408.71 -94.54 0.71 1357 - 1359 4 255.57 410.13 -94.65 0.71 1358 - 1360 4 259.26 412.09 -97.34 0.71 1359 - 1361 4 259.92 413.86 -97.34 0.71 1360 - 1362 4 261.65 415.64 -97.34 0.71 1361 - 1363 4 262.3 416.35 -97.92 0.71 1362 - 1364 4 262.74 417.77 -98.9 0.71 1363 - 1365 4 264.37 418.74 -98.9 0.71 1364 - 1366 4 266.11 419.98 -98.9 0.71 1365 - 1367 4 268.26 421.22 -97.77 0.71 1366 - 1368 4 270.44 422.82 -97.77 0.71 1367 - 1369 4 272.39 424.95 -97.58 0.71 1368 - 1370 4 274.13 425.84 -97.58 0.71 1369 - 1371 4 275.21 427.44 -97.58 0.71 1370 - 1372 4 276.08 429.22 -97.58 0.71 1371 - 1373 4 276.73 429.93 -97.58 0.71 1372 - 1374 4 278.69 432.24 -99.62 0.71 1373 - 1375 4 279.72 434.22 -96.31 0.71 1374 - 1376 4 281.02 435.82 -96.31 0.71 1375 - 1377 4 282.33 437.6 -96.31 0.71 1376 - 1378 4 283.85 439.02 -96.31 0.71 1377 - 1379 4 285.37 440.09 -96.31 0.71 1378 - 1380 4 287.1 441.15 -96.31 0.71 1379 - 1381 4 287.97 443.11 -96.31 0.71 1380 - 1382 4 289.28 445.06 -96.31 0.71 1381 - 1383 4 291.66 447.55 -95.6 0.71 1382 - 1384 4 291.42 449.07 -95.6 0.71 1383 - 1385 4 292.07 451.38 -94.46 0.71 1384 - 1386 4 292.94 453.16 -94.46 0.71 1385 - 1387 4 293.59 455.11 -93.38 0.71 1386 - 1388 4 294.89 457.42 -93.38 0.71 1387 - 1389 4 296.19 459.73 -95.56 0.71 1388 - 1390 4 299.45 461.86 -95.56 0.71 1389 - 1391 4 299.87 464.02 -95.56 0.71 1390 - 1392 4 300.09 465.45 -93.33 0.71 1391 - 1393 4 300.09 467.04 -93.33 0.71 1392 - 1394 4 299.87 468.64 -93.33 0.71 1393 - 1395 4 300.3 470.78 -92.41 0.71 1394 - 1396 4 300.52 473.26 -92.41 0.71 1395 - 1397 4 300.95 475.04 -90.96 0.71 1396 - 1398 4 300.52 477.17 -92.18 0.71 1397 - 1399 4 301.07 479.2 -92.18 0.71 1398 - 1400 4 301.94 481.33 -89.05 0.71 1399 - 1401 4 303.46 483.47 -89.05 0.71 1400 - 1402 4 305.19 485.42 -87.02 0.71 1401 - 1403 4 307.58 488.08 -87.02 0.71 1402 - 1404 4 309.1 490.04 -87.33 0.71 1403 - 1405 4 310.41 491.99 -87.33 0.71 1404 - 1406 4 312.41 493.87 -85.52 0.71 1405 - 1407 4 313.71 496 -82.5 0.71 1406 - 1408 4 315.45 497.24 -82.5 0.71 1407 - 1409 4 317.18 498.67 -80.96 0.71 1408 - 1410 4 319.36 499.91 -78.21 0.71 1409 - 1411 4 320.52 500.76 -78.21 0.71 1410 - 1412 4 321.17 501.65 -78.21 0.71 1411 - 1413 4 321.61 502.71 -78.21 0.71 1412 - 1414 4 321.82 504.13 -78.21 0.71 1413 - 1415 4 322.04 505.2 -78.21 0.71 1414 - 1416 4 193.82 366.2 -86.77 0.71 1322 - 1417 4 195.13 367.62 -89.76 0.71 1416 - 1418 4 196.65 368.51 -92.06 0.71 1417 - 1419 4 198.38 369.58 -93.94 0.71 1418 - 1420 4 200.56 370.64 -95.34 0.71 1419 - 1421 4 202.29 371.71 -95.34 0.71 1420 - 1422 4 203.81 372.24 -97.05 0.71 1421 - 1423 4 205.77 371.71 -99.43 0.71 1422 - 1424 4 207.72 371 -100.82 0.71 1423 - 1425 4 210.76 371 -102.69 0.71 1424 - 1426 4 213.24 370.38 -104.76 0.71 1425 - 1427 4 215.63 369.67 -104.76 0.71 1426 - 1428 4 217.8 370.2 -104.76 0.71 1427 - 1429 4 219.1 370.38 -106.96 0.71 1428 - 1430 4 221.49 370.92 -109.06 0.71 1429 - 1431 4 223.37 371.25 -109.06 0.71 1430 - 1432 4 104.68 159.61 -14.07 1.065 851 - 1433 4 106.64 160.68 -14.07 1.065 1432 - 1434 4 108.16 161.75 -16.66 1.065 1433 - 1435 4 109.68 162.46 -15.8 1.065 1434 - 1436 4 111.41 163.35 -15.85 0.89 1435 - 1437 4 112.93 164.06 -15.85 0.89 1436 - 1438 4 114.67 164.77 -15.85 0.89 1437 - 1439 4 116.19 165.65 -17.62 0.89 1438 - 1440 4 117.71 166.9 -18.6 0.89 1439 - 1441 4 119.45 168.32 -18.6 0.89 1440 - 1442 4 121.84 169.74 -20.68 0.89 1441 - 1443 4 122.85 170.59 -19.88 1.065 1442 - 1444 4 123.65 171.72 -23.29 1.065 1443 - 1445 4 124.52 172.79 -22.74 0.89 1444 - 1446 4 125.17 174.21 -25.44 0.71 1445 - 1447 4 126.04 175.45 -25.16 0.71 1446 - 1448 4 126.91 177.76 -28.48 0.71 1447 - 1449 4 128.21 179.72 -28.48 0.71 1448 - 1450 4 129.29 181.67 -30.55 0.71 1449 - 1451 4 130.38 183.63 -33.03 0.71 1450 - 1452 4 132.55 186.82 -35.06 0.71 1451 - 1453 4 131.96 189.37 -36.48 0.71 1452 - 1454 4 132.38 191.5 -36.71 0.71 1453 - 1455 4 132.81 193.63 -40.1 0.71 1454 - 1456 4 132.81 195.76 -40.1 0.71 1455 - 1457 4 133.68 197.54 -40.1 0.71 1456 - 1458 4 133.68 200.2 -41.74 0.71 1457 - 1459 4 133.9 203.05 -41.74 0.71 1458 - 1460 4 133.8 205.94 -42.17 0.71 1459 - 1461 4 134.65 208.25 -44.11 0.71 1460 - 1462 4 134.21 209.85 -44.11 0.71 1461 - 1463 4 134.43 212.16 -46.74 0.71 1462 - 1464 4 134.87 214.83 -48.19 0.71 1463 - 1465 4 134.65 217.14 -48.19 0.71 1464 - 1466 4 136.17 219.62 -50 0.71 1465 - 1467 4 137.5 221.61 -52.58 0.71 1466 - 1468 4 139.24 223.39 -52.18 0.71 1467 - 1469 4 140.76 225.34 -53.82 0.71 1468 - 1470 4 142.71 226.94 -53.82 0.71 1469 - 1471 4 143.8 229.07 -55.17 0.71 1470 - 1472 4 144.88 231.03 -56.26 0.71 1471 - 1473 4 145.97 233.34 -58 0.71 1472 - 1474 4 146.84 235.47 -59.86 0.71 1473 - 1475 4 147.25 237.08 -59.86 0.71 1474 - 1476 4 148.33 239.03 -57.89 0.71 1475 - 1477 4 149.4 240.45 -59.65 0.71 1476 - 1478 4 150.71 241.87 -62.14 0.71 1477 - 1479 4 152.01 244.18 -62.14 0.71 1478 - 1480 4 152.88 245.61 -64 0.71 1479 - 1481 4 153.96 247.56 -66.18 0.71 1480 - 1482 4 155.27 248.98 -66.18 0.71 1481 - 1483 4 156.79 250.4 -67.97 0.71 1482 - 1484 4 158.1 253.68 -67.97 0.71 1483 - 1485 4 158.32 255.63 -69.63 0.71 1484 - 1486 4 159.19 257.41 -69.63 0.71 1485 - 1487 4 160.71 259.54 -71.56 0.71 1486 - 1488 4 161.14 261.67 -73.5 0.71 1487 - 1489 4 162.23 262.91 -73.5 0.71 1488 - 1490 4 163.53 263.8 -75.31 0.71 1489 - 1491 4 163.96 265.76 -77.27 0.71 1490 - 1492 4 164.63 267.63 -77.26 0.71 1491 - 1493 4 165.72 268.88 -79.4 0.71 1492 - 1494 4 166.37 271.01 -81.16 0.71 1493 - 1495 4 168.11 273.14 -82.99 0.71 1494 - 1496 4 169.84 275.45 -85.39 0.71 1495 - 1497 4 171.15 277.05 -88.18 0.71 1496 - 1498 4 172.23 279.54 -89.27 0.71 1497 - 1499 4 174.4 280.96 -92.58 0.71 1498 - 1500 4 176.59 281.59 -92.58 0.71 1499 - 1501 4 178.09 283.19 -95.35 0.71 1500 - 1502 4 179.83 283.9 -95.35 0.71 1501 - 1503 4 182.22 286.21 -97.55 0.71 1502 - 1504 4 183.95 287.99 -99.36 0.71 1503 - 1505 4 185.04 289.76 -101.12 0.71 1504 - 1506 4 186.12 291.89 -102.69 0.71 1505 - 1507 4 186.34 294.2 -102.69 0.71 1506 - 1508 4 187.86 295.8 -104.69 0.71 1507 - 1509 4 189.53 297.66 -106.06 0.71 1508 - 1510 4 191.27 299.61 -106.06 0.71 1509 - 1511 4 193.01 301.39 -109.05 0.71 1510 - 1512 4 194.09 302.63 -109.05 0.71 1511 - 1513 4 195.83 303.52 -110.88 0.71 1512 - 1514 4 196.48 305.29 -112.76 0.71 1513 - 1515 4 197.79 306.54 -114.91 0.71 1514 - 1516 4 198.22 308.49 -116.84 0.71 1515 - 1517 4 198.87 310.62 -118.38 0.71 1516 - 1518 4 200.3 312.46 -120.46 0.71 1517 - 1519 4 200.95 314.94 -123.82 0.71 1518 - 1520 4 202.25 317.25 -125.7 0.71 1519 - 1521 4 203.99 319.03 -125.7 0.71 1520 - 1522 4 204.86 320.45 -127.08 0.71 1521 - 1523 4 206.16 323.11 -127.08 0.71 1522 - 1524 4 206.82 325.07 -131.26 0.71 1523 - 1525 4 207.23 327.06 -131.26 0.71 1524 - 1526 4 208.1 328.12 -133.51 0.71 1525 - 1527 4 209.19 329.9 -136.01 0.71 1526 - 1528 4 209.84 331.85 -137.86 0.71 1527 - 1529 4 210.49 333.45 -140.03 0.71 1528 - 1530 4 210.92 335.58 -142.07 0.71 1529 - 1531 4 211.14 337 -144.91 0.71 1530 - 1532 4 211.79 338.6 -146.06 0.71 1531 - 1533 4 212.88 340.56 -146.84 0.71 1532 - 1534 4 214.53 342.08 -146.84 0.71 1533 - 1535 4 215.4 344.39 -148.82 0.71 1534 - 1536 4 217.14 346.52 -150.9 0.71 1535 - 1537 4 218.01 348.3 -153.4 0.71 1536 - 1538 4 218.66 350.43 -154.82 0.71 1537 - 1539 4 219.96 352.2 -154.82 0.71 1538 - 1540 4 221.27 353.98 -156.14 0.71 1539 - 1541 4 222.79 355.4 -158.7 0.71 1540 - 1542 4 223.87 356.72 -158.7 0.71 1541 - 1543 4 225.17 358.14 -161.48 0.71 1542 - 1544 4 226.69 359.21 -163.85 0.71 1543 - 1545 4 228.21 361.16 -163.85 0.71 1544 - 1546 4 228.64 361.52 -166.42 0.71 1545 - 1547 4 230.16 362.94 -166.42 0.71 1546 - 1548 4 231.47 365.07 -166.42 0.71 1547 - 1549 4 232.77 367.56 -166.42 0.71 1548 - 1550 4 234.29 368.63 -168.77 0.71 1549 - 1551 4 235.38 370.22 -170.48 0.71 1550 - 1552 4 236.68 372.06 -173.12 0.71 1551 - 1553 4 237.99 374.19 -171.79 0.71 1552 - 1554 4 239.51 376.32 -171.79 0.71 1553 - 1555 4 240.59 377.92 -174.18 0.71 1554 - 1556 4 242.11 379.87 -176.73 0.71 1555 - 1557 4 243.85 381.47 -176.73 0.71 1556 - 1558 4 245.59 383.07 -178.46 0.71 1557 - 1559 4 247.32 384.85 -177.55 0.71 1558 - 1560 4 249.12 386.86 -179.96 0.71 1559 - 1561 4 250.2 388.45 -179.96 0.71 1560 - 1562 4 252.16 389.88 -179.96 0.71 1561 - 1563 4 253.03 391.3 -182.7 0.71 1562 - 1564 4 254.55 392.72 -182.7 0.71 1563 - 1565 4 255.85 394.49 -182.7 0.71 1564 - 1566 4 256.28 396.27 -182.7 0.71 1565 - 1567 4 256.85 397.88 -182.7 0.71 1566 - 1568 4 257.28 398.59 -185.53 0.71 1567 - 1569 4 257.5 400.54 -187.73 0.71 1568 - 1570 4 257.5 402.5 -189.17 0.71 1569 - 1571 4 256.85 404.45 -190.48 0.71 1570 - 1572 4 256.63 406.58 -190.48 0.71 1571 - 1573 4 256.41 408.18 -189 0.71 1572 - 1574 4 256.41 409.96 -191.3 0.71 1573 - 1575 4 257.72 411.38 -191.3 0.71 1574 - 1576 4 258 413.97 -191.3 0.71 1575 - 1577 4 258.21 416.25 -192.57 0.71 1576 - 1578 4 258 418.92 -192.57 0.71 1577 - 1579 4 258.65 420.69 -195.35 0.71 1578 - 1580 4 258.87 422.65 -195.35 0.71 1579 - 1581 4 259.73 425.31 -195.42 0.71 1580 - 1582 4 260.17 427.8 -195.42 0.71 1581 - 1583 4 260.85 429.1 -197.68 0.71 1582 - 1584 4 261.07 431.94 -197.68 0.71 1583 - 1585 4 261.65 433.83 -197.68 0.71 1584 - 1586 4 261.65 436.5 -197.68 0.71 1585 - 1587 4 261.87 438.1 -197.91 0.71 1586 - 1588 4 262.08 440.41 -199.85 0.71 1587 - 1589 4 261.87 443.07 -197.82 0.71 1588 - 1590 4 261.87 444.85 -200.63 0.71 1589 - 1591 4 262.08 446.98 -200.63 0.71 1590 - 1592 4 262.65 449.54 -200.63 0.71 1591 - 1593 4 263.25 451.43 -200.63 0.71 1592 - 1594 4 263.9 453.57 -198.22 0.71 1593 - 1595 4 264.33 455.7 -198.22 0.71 1594 - 1596 4 265.27 457.63 -198.22 0.71 1595 - 1597 4 265.7 459.59 -198.22 0.71 1596 - 1598 4 265.92 460.65 -198.22 0.71 1597 - 1599 4 266.57 462.61 -198.22 0.71 1598 - 1600 4 265.92 464.38 -198.22 0.71 1599 - 1601 4 265.48 465.63 -198.22 0.71 1600 - 1602 4 124.37 171.12 -19.88 1.065 1443 - 1603 4 126.11 171.66 -22.04 0.89 1602 - 1604 4 127.84 172.9 -22.04 0.71 1603 - 1605 4 129.15 173.97 -20.95 0.71 1604 - 1606 4 131.1 174.86 -23.14 0.71 1605 - 1607 4 133.49 176.1 -23.14 0.71 1606 - 1608 4 135.66 177.52 -25.39 0.71 1607 - 1609 4 137.18 179.3 -25.39 0.71 1608 - 1610 4 139.14 181.07 -26.37 0.71 1609 - 1611 4 141.31 182.32 -27.28 0.71 1610 - 1612 4 142.86 183.55 -26.5 0.71 1611 - 1613 4 144.38 184.61 -27.97 0.71 1612 - 1614 4 146.12 186.57 -30.14 0.71 1613 - 1615 4 148.08 187.81 -30.14 0.71 1614 - 1616 4 149.16 189.23 -32.23 0.71 1615 - 1617 4 150.25 191.36 -35.3 0.71 1616 - 1618 4 151.12 193.14 -35.3 0.71 1617 - 1619 4 152.85 195.45 -38.03 0.71 1618 - 1620 4 154.16 197.76 -39.54 0.71 1619 - 1621 4 155.43 199.66 -39.54 0.71 1620 - 1622 4 156.52 201.43 -41.39 0.71 1621 - 1623 4 157.6 203.39 -43.26 0.71 1622 - 1624 4 159.34 204.99 -43.26 0.71 1623 - 1625 4 160.64 207.12 -45.29 0.71 1624 - 1626 4 161.95 209.25 -45.29 0.71 1625 - 1627 4 163.25 210.49 -46.8 0.71 1626 - 1628 4 164.33 212.09 -46.8 0.71 1627 - 1629 4 164.98 213.52 -49.34 0.71 1628 - 1630 4 166.72 216.01 -50.76 0.71 1629 - 1631 4 168.67 219.21 -53.36 0.71 1630 - 1632 4 170.84 222.05 -55.05 0.71 1631 - 1633 4 172.58 224.18 -55.05 0.71 1632 - 1634 4 174.1 225.78 -56.75 0.71 1633 - 1635 4 175.62 227.91 -57.33 0.71 1634 - 1636 4 176.2 229.68 -57.33 0.71 1635 - 1637 4 176.41 231.1 -55.85 0.71 1636 - 1638 4 177.5 233.59 -55.85 0.71 1637 - 1639 4 178.8 235.37 -57.51 0.71 1638 - 1640 4 180.54 237.32 -59.19 0.71 1639 - 1641 4 181.84 239.1 -59.19 0.71 1640 - 1642 4 184.01 241.23 -59.39 0.71 1641 - 1643 4 185.32 243 -61.45 0.71 1642 - 1644 4 186.85 244.17 -60.1 0.71 1643 - 1645 4 188.58 245.59 -60.1 0.71 1644 - 1646 4 190.54 247.55 -60.1 0.71 1645 - 1647 4 191.84 248.97 -58.18 0.71 1646 - 1648 4 193.8 250.21 -59.54 0.71 1647 - 1649 4 194.67 251.99 -59.62 0.71 1648 - 1650 4 196.4 252.87 -60.71 0.71 1649 - 1651 4 197.71 253.94 -62.62 0.71 1650 - 1652 4 199.44 254.65 -64.31 0.71 1651 - 1653 4 200.96 255.54 -64.31 0.71 1652 - 1654 4 203.14 256.61 -66.01 0.71 1653 - 1655 4 205.31 258.38 -66.01 0.71 1654 - 1656 4 207.06 259.37 -66.01 0.71 1655 - 1657 4 208.37 260.61 -67.36 0.71 1656 - 1658 4 210.32 261.15 -67.36 0.71 1657 - 1659 4 212.28 262.03 -66.45 0.71 1658 - 1660 4 213.8 262.39 -66.45 0.71 1659 - 1661 4 215.32 263.46 -68.96 0.71 1660 - 1662 4 217.71 264.52 -68.96 0.71 1661 - 1663 4 220.53 266.3 -68.96 0.71 1662 - 1664 4 222.7 267.72 -71.01 0.71 1663 - 1665 4 224.66 268.96 -71.01 0.71 1664 - 1666 4 226.18 270.03 -71.01 0.71 1665 - 1667 4 228.13 271.98 -72.57 0.71 1666 - 1668 4 229.43 273.94 -74.75 0.71 1667 - 1669 4 231.17 276.25 -74.75 0.71 1668 - 1670 4 231.65 278.23 -74.16 0.71 1669 - 1671 4 232.52 280.72 -75.14 0.71 1670 - 1672 4 233.82 282.85 -78.13 0.71 1671 - 1673 4 235.12 284.63 -75.94 0.71 1672 - 1674 4 236.43 286.76 -75.94 0.71 1673 - 1675 4 237.95 288.71 -75.94 0.71 1674 - 1676 4 239.68 291.56 -78.56 0.71 1675 - 1677 4 240.9 294.7 -78.56 0.71 1676 - 1678 4 241.75 297.34 -78.34 0.71 1677 - 1679 4 243.05 299.47 -80.03 0.71 1678 - 1680 4 243.49 301.07 -80.82 0.71 1679 - 1681 4 244.79 303.03 -80.82 0.71 1680 - 1682 4 246.09 304.09 -80.82 0.71 1681 - 1683 4 248.05 305.51 -80.82 0.71 1682 - 1684 4 248.92 307.29 -80.26 0.71 1683 - 1685 4 249.01 308.88 -82.98 0.71 1684 - 1686 4 250.97 311.37 -82.98 0.71 1685 - 1687 4 251.62 313.32 -82.98 0.71 1686 - 1688 4 252.71 314.74 -84.96 0.71 1687 - 1689 4 253.14 316.52 -84.38 0.71 1688 - 1690 4 253.57 318.65 -86.87 0.71 1689 - 1691 4 253.57 320.6 -88.82 0.71 1690 - 1692 4 253.79 322.2 -86.19 0.71 1691 - 1693 4 253.8 324.59 -86.19 0.71 1692 - 1694 4 254.01 325.83 -88.11 0.71 1693 - 1695 4 254.23 329.03 -88.11 0.71 1694 - 1696 4 255.1 330.27 -89.68 0.71 1695 - 1697 4 255.75 332.41 -90.22 0.71 1696 - 1698 4 256.19 334.54 -90.22 0.71 1697 - 1699 4 256.84 336.67 -90.22 0.71 1698 - 1700 4 257.67 338.99 -90.22 0.71 1699 - 1701 4 257.88 341.12 -90.22 0.71 1700 - 1702 4 258.1 343.07 -91.56 0.71 1701 - 1703 4 259.19 345.74 -91.56 0.71 1702 - 1704 4 258.97 348.05 -92.98 0.71 1703 - 1705 4 259.4 350.89 -92.43 0.71 1704 - 1706 4 259.61 353.19 -92.43 0.71 1705 - 1707 4 260.03 355.85 -92.43 0.71 1706 - 1708 4 259.81 357.99 -92.43 0.71 1707 - 1709 4 261.12 359.58 -94.19 0.71 1708 - 1710 4 261.77 361.54 -93.5 0.71 1709 - 1711 4 263.07 364.74 -93.5 0.71 1710 - 1712 4 264.16 367.05 -96.28 0.71 1711 - 1713 4 265.5 368.68 -94.7 0.71 1712 - 1714 4 266.15 370.1 -96.42 0.71 1713 - 1715 4 267.02 372.23 -96.42 0.71 1714 - 1716 4 268.32 374.36 -96.42 0.71 1715 - 1717 4 269.63 377.74 -99.59 0.71 1716 - 1718 4 269.84 379.69 -99.59 0.71 1717 - 1719 4 269.63 381.47 -99.49 0.71 1718 - 1720 4 269.83 383.43 -99.49 0.71 1719 - 1721 4 269.83 385.92 -99.49 0.71 1720 - 1722 4 270.48 388.41 -99.49 0.71 1721 - 1723 4 270.92 390.36 -99.49 0.71 1722 - 1724 4 270.78 392.23 -99.49 0.71 1723 - 1725 4 271.21 395.08 -99.49 0.71 1724 - 1726 4 272.3 397.21 -100.18 0.71 1725 - 1727 4 274.04 399.52 -100.18 0.71 1726 - 1728 4 274.69 400.76 -96.18 0.71 1727 - 1729 4 275.12 403.07 -96.18 0.71 1728 - 1730 4 275.99 405.2 -96.18 0.71 1729 - 1731 4 278.15 407.77 -96.18 0.71 1730 - 1732 4 279.67 409.72 -96.18 0.71 1731 - 1733 4 281.19 411.5 -96.18 0.71 1732 - 1734 4 281.84 413.98 -96.18 0.71 1733 - 1735 4 283.15 415.94 -96.18 0.71 1734 - 1736 4 283.8 418.25 -96.18 0.71 1735 - 1737 4 284.88 419.67 -93.06 0.71 1736 - 1738 4 285.25 421.99 -93.06 0.71 1737 - 1739 4 286.12 424.65 -93.06 0.71 1738 - 1740 4 287.2 426.41 -93.06 0.71 1739 - 1741 4 287.87 427.72 -93.06 0.71 1740 - 1742 4 98.15 132.37 -11.6 1.6 833 - 1743 4 99.89 133.61 -11.6 1.6 1742 - 1744 4 101.63 135.03 -10.04 1.42 1743 - 1745 4 102.89 136.4 -10.04 1.42 1744 - 1746 4 104.84 137.29 -10.04 1.245 1745 - 1747 4 107.01 137.29 -10.04 1.245 1746 - 1748 4 108.32 138.35 -10.04 1.245 1747 - 1749 4 110.7 139.24 -8.42 1.245 1748 - 1750 4 113.09 140.31 -8.42 1.245 1749 - 1751 4 114.4 141.55 -8.42 1.245 1750 - 1752 4 115.92 143.5 -8.42 1.245 1751 - 1753 4 117.44 144.93 -8.42 1.245 1752 - 1754 4 119.17 146.7 -8.42 1.245 1753 - 1755 4 120.91 147.41 -10.38 1.245 1754 - 1756 4 124.01 149.35 -10.38 1.245 1755 - 1757 4 125.09 150.42 -10.38 1.245 1756 - 1758 4 127.03 151.49 -10.38 1.245 1757 - 1759 4 127.9 152.2 -12.32 1.42 1758 - 1760 4 128.12 153.26 -12.32 1.6 1759 - 1761 4 127.66 154.48 -11.34 1.42 1760 - 1762 4 127.01 157.15 -11.34 1.245 1761 - 1763 4 127.23 158.57 -11.34 1.245 1762 - 1764 4 126.14 159.99 -11.34 1.065 1763 - 1765 4 125.93 161.59 -11.34 1.065 1764 - 1766 4 126.14 163.72 -11.34 1.065 1765 - 1767 4 125.71 166.39 -10.09 0.89 1766 - 1768 4 124.99 167.6 -10.74 1.065 1767 - 1769 4 123.69 170.44 -10.74 1.065 1768 - 1770 4 122.61 173.1 -10.74 1.065 1769 - 1771 4 122.39 174.88 -10.74 1.065 1770 - 1772 4 120.43 176.3 -10.74 0.89 1771 - 1773 4 119.57 179.14 -13.15 0.89 1772 - 1774 4 118.48 181.1 -13.15 0.89 1773 - 1775 4 111.53 199.88 -15.63 0.89 1774 - 1776 4 111.09 202.19 -17.74 0.89 1775 - 1777 4 109.57 204.15 -16.32 0.89 1776 - 1778 4 108.05 206.81 -16.32 0.89 1777 - 1779 4 107.4 208.59 -19 0.89 1778 - 1780 4 106.97 210.01 -18.81 0.89 1779 - 1781 4 106.75 212.14 -19.57 0.89 1780 - 1782 4 107.08 214.82 -19.57 0.89 1781 - 1783 4 107.73 217.13 -21.53 0.89 1782 - 1784 4 107.95 219.08 -21.53 0.89 1783 - 1785 4 108.17 220.68 -20.49 0.89 1784 - 1786 4 108.17 222.28 -20.49 0.89 1785 - 1787 4 109.04 224.06 -22.98 0.89 1786 - 1788 4 109.47 225.48 -22.98 0.89 1787 - 1789 4 109.69 227.61 -22.98 0.89 1788 - 1790 4 110.12 229.92 -21.8 0.89 1789 - 1791 4 110.99 232.23 -23.58 0.89 1790 - 1792 4 111.86 233.83 -23.58 0.89 1791 - 1793 4 112.73 235.96 -22.74 0.71 1792 - 1794 4 113.16 238.62 -22.74 0.71 1793 - 1795 4 113.81 240.58 -24.97 0.71 1794 - 1796 4 114.46 241.82 -26.93 0.71 1795 - 1797 4 114.46 245.02 -27.81 0.71 1796 - 1798 4 115.62 246.41 -29.34 0.71 1797 - 1799 4 116.06 248.36 -29.34 0.71 1798 - 1800 4 116.28 249.96 -31.06 0.71 1799 - 1801 4 116.71 253.34 -29.5 0.71 1800 - 1802 4 117.36 256 -29.5 0.71 1801 - 1803 4 118.66 259.91 -29.5 0.71 1802 - 1804 4 119.61 262.45 -31.09 0.71 1803 - 1805 4 120.48 264.76 -31.09 0.71 1804 - 1806 4 121.13 266.71 -31.09 0.71 1805 - 1807 4 121.78 269.02 -31.24 0.71 1806 - 1808 4 122.43 271.16 -31.24 0.71 1807 - 1809 4 123.08 273.47 -31.24 0.71 1808 - 1810 4 123.3 275.77 -31.24 0.71 1809 - 1811 4 124.84 277.36 -31.24 0.71 1810 - 1812 4 124.41 279.85 -31.24 0.71 1811 - 1813 4 124.62 282.16 -31.19 0.71 1812 - 1814 4 124.62 284.65 -31.19 0.89 1813 - 1815 4 123.76 287.84 -31.19 0.89 1814 - 1816 4 123.32 290.15 -29.84 0.89 1815 - 1817 4 122.45 291.76 -29.84 0.89 1816 - 1818 4 122.02 294.07 -29.84 0.89 1817 - 1819 4 121.37 295.85 -27.79 0.89 1818 - 1820 4 120.28 299.4 -27.79 0.89 1819 - 1821 4 119.63 301 -27.79 0.89 1820 - 1822 4 119.41 303.31 -27.79 0.89 1821 - 1823 4 118.76 305.44 -27.79 0.89 1822 - 1824 4 118.3 308.23 -29.7 0.89 1823 - 1825 4 118.3 310.36 -29.7 0.89 1824 - 1826 4 117.87 312.31 -29.35 0.71 1825 - 1827 4 117.65 314.27 -29.35 0.71 1826 - 1828 4 117.22 316.22 -29.35 0.71 1827 - 1829 4 116.78 318.53 -29.44 0.71 1828 - 1830 4 117 320.84 -29.44 0.71 1829 - 1831 4 117.16 323.58 -26.38 0.71 1830 - 1832 4 117.37 326.43 -25.88 0.71 1831 - 1833 4 117.37 328.74 -26.61 0.71 1832 - 1834 4 117.59 331.93 -26.61 0.71 1833 - 1835 4 118.02 333.89 -24.66 0.71 1834 - 1836 4 118.24 336.55 -24.66 0.71 1835 - 1837 4 117.7 339.05 -24.66 0.71 1836 - 1838 4 117.49 341.18 -24.46 0.71 1837 - 1839 4 116.84 343.67 -24.46 0.71 1838 - 1840 4 116.18 345.27 -23.34 0.71 1839 - 1841 4 115.32 347.4 -23.08 0.71 1840 - 1842 4 114.66 349.53 -23.08 0.71 1841 - 1843 4 113.36 351.49 -23.08 0.71 1842 - 1844 4 113.12 352.99 -22.22 0.71 1843 - 1845 4 112.25 354.58 -22.22 0.71 1844 - 1846 4 110.73 355.83 -20.5 0.71 1845 - 1847 4 108.99 357.07 -20.5 0.71 1846 - 1848 4 107.69 359.03 -20.5 0.71 1847 - 1849 4 106.61 361.16 -20.86 0.71 1848 - 1850 4 105.74 362.93 -20.86 0.71 1849 - 1851 4 105.3 365.24 -18.22 0.71 1850 - 1852 4 105.52 367.55 -18.22 0.71 1851 - 1853 4 105.76 369.36 -18.22 0.71 1852 - 1854 4 105.54 370.96 -18.22 0.71 1853 - 1855 4 104.89 372.56 -17.36 0.71 1854 - 1856 4 104.89 375.76 -17.36 0.71 1855 - 1857 4 104.24 377.36 -17.36 0.71 1856 - 1858 4 104.45 378.96 -19.62 0.71 1857 - 1859 4 103.58 380.91 -19.62 0.71 1858 - 1860 4 103.15 382.69 -19.62 0.71 1859 - 1861 4 102.05 384.01 -18.9 0.71 1860 - 1862 4 101.18 385.61 -18.9 0.71 1861 - 1863 4 100.75 387.38 -19.01 0.71 1862 - 1864 4 100.1 389.69 -19.08 0.71 1863 - 1865 4 99.45 391.47 -19.08 0.71 1864 - 1866 4 99.23 393.25 -17.48 0.71 1865 - 1867 4 98.58 395.02 -17.48 0.71 1866 - 1868 4 97.06 397.69 -16.22 0.71 1867 - 1869 4 96.07 399.54 -16.22 0.71 1868 - 1870 4 95.64 401.85 -16.22 0.71 1869 - 1871 4 94.98 403.8 -15.14 0.71 1870 - 1872 4 94.77 406.29 -15.14 0.71 1871 - 1873 4 94.55 408.96 -16.16 0.71 1872 - 1874 4 94.33 411.09 -16.16 0.71 1873 - 1875 4 94.12 412.51 -16.16 0.71 1874 - 1876 4 93.92 414.7 -15.18 0.71 1875 - 1877 4 93.49 416.12 -15.18 0.71 1876 - 1878 4 93.7 418.07 -16.14 0.71 1877 - 1879 4 94.57 420.03 -16.14 0.71 1878 - 1880 4 95.22 422.87 -16.14 0.71 1879 - 1881 4 96.09 424.29 -16.14 0.71 1880 - 1882 4 97.4 426.24 -16.14 0.71 1881 - 1883 4 99.13 428.55 -16.14 0.71 1882 - 1884 4 100.24 429.81 -16.26 0.71 1883 - 1885 4 101.09 431.23 -17.58 0.71 1884 - 1886 4 101.96 433.54 -17.58 0.71 1885 - 1887 4 102.83 435.49 -17.58 0.71 1886 - 1888 4 103.48 437.8 -19.68 0.71 1887 - 1889 4 104.13 439.93 -19.68 0.71 1888 - 1890 4 104.57 441.71 -18.02 0.71 1889 - 1891 4 105.65 444.02 -19.78 0.71 1890 - 1892 4 107.08 445.94 -19.78 0.71 1891 - 1893 4 108.58 449.32 -19.78 0.71 1892 - 1894 4 108.58 451.45 -19.78 0.71 1893 - 1895 4 108.36 453.76 -18.92 0.71 1894 - 1896 4 108.58 455.87 -18.92 0.71 1895 - 1897 4 107.93 457.64 -18.92 0.71 1896 - 1898 4 108.14 459.6 -20.96 0.71 1897 - 1899 4 108.16 462.05 -20.78 0.71 1898 - 1900 4 108.81 464.36 -19.81 0.71 1899 - 1901 4 109.46 466.67 -22.46 0.71 1900 - 1902 4 109.68 469.33 -22.46 0.71 1901 - 1903 4 110.11 471.29 -22.46 0.71 1902 - 1904 4 110.76 473.24 -22.1 0.71 1903 - 1905 4 111.41 475.73 -22.1 0.71 1904 - 1906 4 111.56 477.72 -22.1 0.71 1905 - 1907 4 112.21 480.38 -22.1 0.71 1906 - 1908 4 112.21 482.51 -21.55 0.71 1907 - 1909 4 113.29 483.76 -23.06 0.71 1908 - 1910 4 114.81 485.36 -23.06 0.71 1909 - 1911 4 116.98 487.31 -23.06 0.71 1910 - 1912 4 118.29 488.55 -24.53 0.71 1911 - 1913 4 120.46 489.98 -24.53 0.71 1912 - 1914 4 123.14 491.74 -23.77 0.71 1913 - 1915 4 124.88 493.34 -23.77 0.71 1914 - 1916 4 126.18 494.58 -24.12 0.71 1915 - 1917 4 128.36 495.65 -25.64 0.71 1916 - 1918 4 129.23 496.71 -27.22 0.71 1917 - 1919 4 130.31 499.02 -29.28 0.71 1918 - 1920 4 131.61 501.16 -29.28 0.71 1919 - 1921 4 133.35 503.64 -29.28 0.71 1920 - 1922 4 135.09 505.95 -29.28 0.71 1921 - 1923 4 138.18 507.25 -26.71 0.71 1922 - 1924 4 139.92 507.59 -28.54 0.71 1923 - 1925 4 141.87 508.12 -27.29 0.71 1924 - 1926 4 144.04 509.54 -27.29 0.71 1925 - 1927 4 146.87 510.61 -27.29 0.71 1926 - 1928 4 149.25 512.03 -28.7 0.71 1927 - 1929 4 151.86 512.74 -28.7 0.71 1928 - 1930 4 154.11 513.83 -28.7 0.71 1929 - 1931 4 156.28 514.9 -28.7 0.71 1930 - 1932 4 157.8 515.78 -28.05 0.71 1931 - 1933 4 160.19 515.96 -28.05 0.71 1932 - 1934 4 161.71 517.38 -28.05 0.71 1933 - 1935 4 163.88 518.63 -29.96 0.71 1934 - 1936 4 165.84 518.98 -29.96 0.71 1935 - 1937 4 167.36 519.51 -30.54 0.71 1936 - 1938 4 169.75 520.4 -30.54 0.71 1937 - 1939 4 171.71 521.07 -30.54 0.71 1938 - 1940 4 174.75 522.83 -30.54 0.71 1939 - 1941 4 177.36 523.54 -30.54 0.71 1940 - 1942 4 178.42 525.19 -30.54 0.71 1941 - 1943 4 180.6 526.07 -29.19 0.71 1942 - 1944 4 182.77 527.49 -29.19 0.71 1943 - 1945 4 184.48 528.45 -30.65 0.71 1944 - 1946 4 186.65 529.52 -32.37 0.71 1945 - 1947 4 189.04 531.29 -30.94 0.71 1946 - 1948 4 190.99 532.54 -30.94 0.71 1947 - 1949 4 192.73 534.14 -33.76 0.71 1948 - 1950 4 195.33 536.09 -33.76 0.71 1949 - 1951 4 197.07 537.16 -33.76 0.71 1950 - 1952 4 198.37 539.29 -31.19 0.71 1951 - 1953 4 200.55 541.78 -33.38 0.71 1952 - 1954 4 202.94 543.74 -33.38 0.71 1953 - 1955 4 205.55 545.16 -32.87 0.71 1954 - 1956 4 207.51 546.58 -36.15 0.71 1955 - 1957 4 209.89 547.12 -36.15 0.71 1956 - 1958 4 211.85 547.83 -36.15 0.71 1957 - 1959 4 214.24 549.07 -36.28 0.71 1958 - 1960 4 215.97 550.31 -38.06 0.71 1959 - 1961 4 218.15 551.2 -38.06 0.71 1960 - 1962 4 220.11 552.41 -38.06 0.71 1961 - 1963 4 222.5 553.83 -38.06 0.71 1962 - 1964 4 224.02 555.43 -38.06 0.71 1963 - 1965 4 225.76 556.85 -39.22 0.71 1964 - 1966 4 227.28 558.8 -39.22 0.71 1965 - 1967 4 229.23 560.22 -38.27 0.71 1966 - 1968 4 231.4 562.36 -40.79 0.71 1967 - 1969 4 233.57 564.31 -40.79 0.71 1968 - 1970 4 235.31 565.73 -38.98 0.71 1969 - 1971 4 236.66 567.43 -41.87 0.71 1970 - 1972 4 238.04 568.45 -41.87 0.71 1971 - 1973 4 130.29 153.62 -12.32 1.42 1760 - 1974 4 132.46 154.33 -12.32 1.42 1973 - 1975 4 134.2 155.93 -13 1.42 1974 - 1976 4 135.28 157.35 -13 1.42 1975 - 1977 4 136.8 158.77 -13 1.42 1976 - 1978 4 138.97 160.01 -14.96 1.42 1977 - 1979 4 140.93 160.55 -14.96 1.42 1978 - 1980 4 143.34 162.18 -14.96 1.245 1979 - 1981 4 144.42 163.42 -14.96 1.245 1980 - 1982 4 146.38 165.02 -17.78 1.245 1981 - 1983 4 148.77 166.97 -17.78 1.245 1982 - 1984 4 150.94 168.75 -20.4 1.245 1983 - 1985 4 153.54 170.7 -20.4 1.245 1984 - 1986 4 155.5 171.95 -20.4 1.245 1985 - 1987 4 157.67 173.37 -20.4 1.245 1986 - 1988 4 159.84 174.79 -22.43 1.245 1987 - 1989 4 161.09 176.91 -22.43 1.245 1988 - 1990 4 162.61 179.04 -22.43 1.245 1989 - 1991 4 163.91 181.71 -23.53 1.245 1990 - 1992 4 165.86 184.02 -23.53 1.245 1991 - 1993 4 167.6 186.32 -25.49 1.245 1992 - 1994 4 168.47 187.57 -25.49 1.245 1993 - 1995 4 169.56 189.17 -26.96 1.245 1994 - 1996 4 170.42 190.77 -26.96 1.245 1995 - 1997 4 170.86 192.54 -26.96 1.245 1996 - 1998 4 171.29 193.25 -26.96 1.245 1997 - 1999 4 171.69 196.41 -29.56 1.065 1998 - 2000 4 172.35 200.67 -30.86 0.89 1999 - 2001 4 173 201.91 -32.81 0.89 2000 - 2002 4 172.78 203.16 -30.36 0.71 2001 - 2003 4 173.21 204.56 -33.54 0.71 2002 - 2004 4 173.87 206.51 -33.54 0.71 2003 - 2005 4 173.61 207.99 -36.85 0.71 2004 - 2006 4 174.48 210.47 -39.62 0.71 2005 - 2007 4 176.21 212.6 -41.46 0.71 2006 - 2008 4 176.43 214.2 -44.14 0.71 2007 - 2009 4 178.17 216.34 -44.14 0.71 2008 - 2010 4 179.69 218.64 -44.53 0.71 2009 - 2011 4 181.21 220.95 -46.7 0.71 2010 - 2012 4 184.28 224.14 -48.52 0.71 2011 - 2013 4 186.02 226.09 -50.26 0.71 2012 - 2014 4 187.76 228.76 -50.26 0.71 2013 - 2015 4 189.93 231.07 -49.74 0.71 2014 - 2016 4 191.02 232.84 -49.74 0.71 2015 - 2017 4 192.95 234.8 -53.27 0.71 2016 - 2018 4 193.39 236.4 -52.7 0.71 2017 - 2019 4 193.88 238.3 -56.21 0.71 2018 - 2020 4 195.61 240.25 -56.21 0.71 2019 - 2021 4 196.7 242.03 -55.74 0.71 2020 - 2022 4 198.44 244.16 -55.74 0.71 2021 - 2023 4 200.39 246.47 -60.65 0.71 2022 - 2024 4 202.13 249.13 -60.65 0.71 2023 - 2025 4 203.65 250.55 -62.71 0.71 2024 - 2026 4 204.28 251.96 -63.17 0.71 2025 - 2027 4 205.36 255.16 -63.17 0.71 2026 - 2028 4 205.8 257.29 -65.22 0.71 2027 - 2029 4 206.67 259.78 -68.57 0.71 2028 - 2030 4 207.32 262.09 -68.57 0.71 2029 - 2031 4 208.62 264.4 -70.42 0.71 2030 - 2032 4 208.84 266.89 -70.42 0.71 2031 - 2033 4 209.73 269.1 -70.22 0.71 2032 - 2034 4 210.81 270.7 -73.11 0.71 2033 - 2035 4 211.9 272.83 -73.11 0.71 2034 - 2036 4 213.85 274.96 -76.22 0.71 2035 - 2037 4 215.16 277.45 -76.22 0.71 2036 - 2038 4 216.89 280.47 -79.48 0.71 2037 - 2039 4 218.63 283.31 -79.48 0.71 2038 - 2040 4 220.38 284.94 -80.12 0.71 2039 - 2041 4 221.25 286.54 -82.98 0.71 2040 - 2042 4 224.07 289.92 -82.98 0.71 2041 - 2043 4 222.99 292.22 -84.88 0.71 2042 - 2044 4 224.29 294.89 -84.88 0.71 2043 - 2045 4 226.03 297.2 -87.38 0.71 2044 - 2046 4 227.33 299.15 -87.38 0.71 2045 - 2047 4 228.76 301.1 -89.58 0.71 2046 - 2048 4 230.72 303.76 -89.58 0.71 2047 - 2049 4 232.24 305.72 -88.9 0.71 2048 - 2050 4 233.32 307.14 -91.44 0.71 2049 - 2051 4 234.63 308.74 -91.44 0.71 2050 - 2052 4 235.49 311.04 -92.26 0.71 2051 - 2053 4 237.23 312.82 -92.26 0.71 2052 - 2054 4 239.4 314.42 -94.47 0.71 2053 - 2055 4 241.18 316.12 -94.47 0.71 2054 - 2056 4 242.05 317.72 -94.5 0.71 2055 - 2057 4 243.57 318.78 -94.5 0.71 2056 - 2058 4 245.74 320.03 -94.5 0.71 2057 - 2059 4 247.69 321.45 -94.5 0.71 2058 - 2060 4 249.18 322.23 -94.5 0.71 2059 - 2061 4 249.83 323.3 -94.5 0.71 2060 - 2062 4 250.48 324.18 -94.5 0.89 2061 - 2063 4 250.24 325.41 -92.05 0.71 2062 - 2064 4 251.11 327.16 -92.05 0.71 2063 - 2065 4 252.41 329.12 -92.05 0.71 2064 - 2066 4 254.15 330.72 -91.42 0.71 2065 - 2067 4 255.02 332.67 -88.13 0.71 2066 - 2068 4 256.76 335.69 -88.13 0.71 2067 - 2069 4 258.71 338.89 -88.13 0.71 2068 - 2070 4 260.16 341.07 -86.93 0.71 2069 - 2071 4 261.25 343.03 -86.93 0.71 2070 - 2072 4 261.68 344.8 -86.93 0.71 2071 - 2073 4 262.77 346.94 -89.26 0.71 2072 - 2074 4 265.37 349.6 -89.26 0.71 2073 - 2075 4 265.81 351.91 -88.25 0.71 2074 - 2076 4 267.55 354.93 -88.25 0.71 2075 - 2077 4 269.41 357.07 -87.89 0.71 2076 - 2078 4 270.5 359.56 -90.03 0.71 2077 - 2079 4 272.24 361.16 -90.03 0.71 2078 - 2080 4 273.97 362.76 -91.48 0.71 2079 - 2081 4 275.49 364.71 -91.48 0.71 2080 - 2082 4 277.88 366.13 -91.48 0.71 2081 - 2083 4 280.92 367.73 -91.48 0.71 2082 - 2084 4 282.44 370.04 -93.86 0.71 2083 - 2085 4 283.75 372.07 -93.86 0.71 2084 - 2086 4 286.13 374.38 -93.86 0.71 2085 - 2087 4 288.96 376.52 -93.86 0.71 2086 - 2088 4 290.48 378.47 -93.86 0.71 2087 - 2089 4 291.78 380.25 -95.68 0.71 2088 - 2090 4 294.17 383.62 -95.68 0.71 2089 - 2091 4 296.56 385.75 -95.68 0.71 2090 - 2092 4 297.95 387.52 -93.94 0.71 2091 - 2093 4 299.03 389.65 -93.94 0.71 2092 - 2094 4 300.33 391.78 -93.94 0.71 2093 - 2095 4 300.77 394.45 -91.73 0.71 2094 - 2096 4 301.2 397.29 -91.73 0.71 2095 - 2097 4 301.42 400.31 -91.73 0.71 2096 - 2098 4 300.81 403.01 -91.73 0.71 2097 - 2099 4 300.63 404.39 -91.73 0.71 2098 - 2100 4 299.32 406.87 -91.73 0.71 2099 - 2101 4 299.54 408.63 -87.99 0.71 2100 - 2102 4 299.76 411.47 -87.99 0.71 2101 - 2103 4 299.11 413.6 -84.5 0.71 2102 - 2104 4 299.32 416.27 -84.5 0.71 2103 - 2105 4 299.97 418.93 -84.5 0.71 2104 - 2106 4 298.96 421.78 -84.5 0.71 2105 - 2107 4 298.96 424.09 -84.14 0.71 2106 - 2108 4 299.39 426.23 -84.14 0.71 2107 - 2109 4 300.48 428.89 -84.14 0.71 2108 - 2110 4 301.35 433.33 -80.07 0.71 2109 - 2111 4 302.75 436.18 -80.07 0.71 2110 - 2112 4 304.7 439.92 -80.07 0.71 2111 - 2113 4 306.44 442.4 -80.07 0.71 2112 - 2114 4 307.31 444.71 -77.86 0.71 2113 - 2115 4 308.17 446.67 -77.86 0.71 2114 - 2116 4 309.48 449.86 -74.91 0.71 2115 - 2117 4 310.75 452.41 -74.91 0.71 2116 - 2118 4 312.48 454.89 -74.91 0.71 2117 - 2119 4 314.22 457.03 -74.91 0.71 2118 - 2120 4 315.31 459.34 -73.53 0.71 2119 - 2121 4 316.17 461.11 -73.53 0.71 2120 - 2122 4 317.48 463.78 -73.53 0.71 2121 - 2123 4 318.56 466.97 -75.58 0.71 2122 - 2124 4 319.51 468.92 -75.58 0.71 2123 - 2125 4 319.95 470.87 -74.23 0.71 2124 - 2126 4 321.03 473 -74.23 0.71 2125 - 2127 4 320.38 475.67 -71.43 0.71 2126 - 2128 4 320.16 477.62 -71.43 0.71 2127 - 2129 4 320.81 479.93 -71.43 0.71 2128 - 2130 4 319.95 482.78 -71.67 0.71 2129 - 2131 4 319.61 484.54 -69.26 0.71 2130 - 2132 4 319.83 486.67 -67.86 0.71 2131 - 2133 4 319.83 488.8 -70.26 0.71 2132 - 2134 4 319.83 490.94 -70.26 0.71 2133 - 2135 4 320.26 493.6 -70.57 0.71 2134 - 2136 4 320.26 495.91 -70.57 0.71 2135 - 2137 4 318.96 497.69 -67.66 0.71 2136 - 2138 4 317.76 499.54 -67.66 0.71 2137 - 2139 4 316.67 502.74 -67.66 0.71 2138 - 2140 4 315.8 505.23 -67.66 0.71 2139 - 2141 4 316.28 507.32 -67.66 0.71 2140 - 2142 4 316.28 509.98 -67.66 0.71 2141 - 2143 4 316.49 512.83 -67.66 0.71 2142 - 2144 4 316.66 514.16 -67.66 0.71 2143 - 2145 4 252.41 324.14 -94.5 0.71 2062 - 2146 4 255.89 324.12 -96.7 0.71 2145 - 2147 4 260.23 324.65 -96.7 0.71 2146 - 2148 4 262.84 325.36 -96.7 0.71 2147 - 2149 4 265.01 326.25 -101.5 0.71 2148 - 2150 4 267.83 327.14 -101.63 0.71 2149 - 2151 4 271.31 327.85 -103.7 0.71 2150 - 2152 4 274.32 330.05 -106.5 0.71 2151 - 2153 4 277.57 331.12 -106.5 0.71 2152 - 2154 4 279.51 332.01 -106.5 0.71 2153 - 2155 4 281.85 332.65 -106.5 0.71 2154 - 2156 4 285.74 333.01 -106.5 0.71 2155 - 2157 4 290.74 333.72 -106.5 0.71 2156 - 2158 4 293.56 335.14 -106.5 0.71 2157 - 2159 4 294.43 336.38 -106.5 0.71 2158 - 2160 4 172.38 195.39 -25.17 1.065 1998 - 2161 4 173.03 196.98 -25.17 1.065 2160 - 2162 4 173.46 198.58 -25.17 1.065 2161 - 2163 4 174.77 200.54 -21.96 0.89 2162 - 2164 4 175.2 202.49 -21.96 0.89 2163 - 2165 4 176.07 204.45 -21.96 0.89 2164 - 2166 4 177.74 206.48 -20.91 0.89 2165 - 2167 4 178.61 208.43 -20.91 0.89 2166 - 2168 4 181 210.92 -18.71 0.89 2167 - 2169 4 180.35 212.69 -18.71 0.89 2168 - 2170 4 180.78 214.47 -17.41 0.89 2169 - 2171 4 182.09 216.6 -17.41 0.89 2170 - 2172 4 183.61 218.2 -16.01 0.89 2171 - 2173 4 185.56 219.98 -16.01 0.89 2172 - 2174 4 187.28 221.04 -17.66 0.89 2173 - 2175 4 189.67 222.11 -17.66 0.89 2174 - 2176 4 191.63 223.18 -17.66 0.89 2175 - 2177 4 193.58 224.6 -17.66 0.89 2176 - 2178 4 195.32 225.49 -17.66 0.89 2177 - 2179 4 196.84 227.26 -17.66 0.89 2178 - 2180 4 198.14 228.51 -18.38 0.89 2179 - 2181 4 200.31 230.28 -18.38 0.89 2180 - 2182 4 202.05 231.7 -18.38 0.89 2181 - 2183 4 203.57 233.12 -16.53 0.89 2182 - 2184 4 205.31 234.55 -18.31 0.89 2183 - 2185 4 206.7 236 -18.31 0.89 2184 - 2186 4 208.87 238.13 -17.34 0.89 2185 - 2187 4 210.83 240.44 -19.08 0.89 2186 - 2188 4 212.56 242.39 -19.08 0.89 2187 - 2189 4 214.08 244.35 -19.08 0.89 2188 - 2190 4 215.82 245.77 -17.5 0.89 2189 - 2191 4 217.34 247.19 -19.88 0.89 2190 - 2192 4 218.86 248.61 -19.88 0.89 2191 - 2193 4 220.6 250.03 -20.38 0.71 2192 - 2194 4 222.1 252.31 -20.38 0.89 2193 - 2195 4 222.97 253.91 -20.38 0.89 2194 - 2196 4 224.27 256.04 -20.38 0.89 2195 - 2197 4 224.92 257.64 -20.38 0.89 2196 - 2198 4 225.57 259.95 -22.62 0.89 2197 - 2199 4 226.44 261.9 -22.62 0.89 2198 - 2200 4 226.88 264.04 -22.62 0.89 2199 - 2201 4 227.96 266.34 -22.62 0.89 2200 - 2202 4 229.33 269.27 -22.62 0.89 2201 - 2203 4 229.77 270.69 -22.22 0.89 2202 - 2204 4 230.42 271.75 -22.22 1.065 2203 - 2205 4 230.85 272.64 -22.22 1.065 2204 - 2206 4 230.85 273 -22.22 1.245 2205 - 2207 4 230.2 274.24 -22.22 0.89 2206 - 2208 4 230.2 275.48 -24.66 0.89 2207 - 2209 4 229.55 277.44 -27.06 0.89 2208 - 2210 4 228.9 279.04 -27.06 0.89 2209 - 2211 4 228.68 280.46 -26.86 0.71 2210 - 2212 4 228.68 282.59 -26.86 0.71 2211 - 2213 4 227.16 284.37 -26.86 0.71 2212 - 2214 4 226.51 286.68 -28.33 0.71 2213 - 2215 4 225.86 288.45 -28.37 0.71 2214 - 2216 4 225.43 289.7 -28.37 0.71 2215 - 2217 4 224.99 291.83 -28.37 0.71 2216 - 2218 4 224.77 294.31 -28.37 0.71 2217 - 2219 4 224.56 295.91 -29.94 0.71 2218 - 2220 4 223.91 298.93 -29.94 0.71 2219 - 2221 4 223.25 301.06 -31.99 0.71 2220 - 2222 4 223.03 303.27 -33.33 0.71 2221 - 2223 4 222.16 306.12 -33.33 0.71 2222 - 2224 4 221.94 309.14 -35.13 0.71 2223 - 2225 4 222.16 312.51 -35.13 0.71 2224 - 2226 4 221.51 314.64 -36.4 0.71 2225 - 2227 4 221.29 316.78 -35.34 0.71 2226 - 2228 4 221.03 318.52 -35.34 0.71 2227 - 2229 4 221.03 320.65 -37.2 0.71 2228 - 2230 4 221.24 323.32 -37.2 0.71 2229 - 2231 4 220.81 326.51 -37.2 0.71 2230 - 2232 4 220.59 329.89 -37.2 0.71 2231 - 2233 4 220.81 333.09 -37.3 0.71 2232 - 2234 4 221.06 336.16 -37.3 0.71 2233 - 2235 4 220.84 337.58 -38.95 0.71 2234 - 2236 4 221.71 339.89 -38.95 0.71 2235 - 2237 4 222.36 342.38 -37.04 0.71 2236 - 2238 4 223.01 343.8 -37.04 0.71 2237 - 2239 4 223.67 345.76 -37.04 0.71 2238 - 2240 4 224.1 348.42 -37.04 0.71 2239 - 2241 4 224.91 350.14 -37.04 0.71 2240 - 2242 4 224.91 352.27 -37.04 0.71 2241 - 2243 4 225.78 355.12 -35.97 0.71 2242 - 2244 4 226.87 357.42 -37.05 0.71 2243 - 2245 4 228.39 360.27 -37.05 0.71 2244 - 2246 4 229.69 362.75 -37.05 0.71 2245 - 2247 4 230.53 365.23 -37.05 0.71 2246 - 2248 4 232.7 368.6 -37.05 0.71 2247 - 2249 4 234.87 370.18 -37.82 0.71 2248 - 2250 4 236.83 371.96 -37.82 0.71 2249 - 2251 4 239 374.09 -37.82 0.71 2250 - 2252 4 240.52 376.58 -37.82 0.71 2251 - 2253 4 242.26 378.53 -38.21 0.71 2252 - 2254 4 244.18 379.96 -38.21 0.71 2253 - 2255 4 245.92 381.38 -38.21 0.71 2254 - 2256 4 248.31 382.81 -38.21 0.71 2255 - 2257 4 249.17 384.05 -37.32 0.71 2256 - 2258 4 251.56 385.83 -36.91 0.71 2257 - 2259 4 253.95 387.25 -36.91 0.71 2258 - 2260 4 256.12 388.67 -39.64 0.71 2259 - 2261 4 258.51 390.09 -39.64 0.71 2260 - 2262 4 261.12 392.22 -39.64 0.71 2261 - 2263 4 262.35 393.74 -39.64 0.71 2262 - 2264 4 264.3 394.98 -41.7 0.71 2263 - 2265 4 266.04 396.23 -40.45 0.71 2264 - 2266 4 268.21 398.18 -40.45 0.71 2265 - 2267 4 269.51 399.6 -42.02 0.71 2266 - 2268 4 271.03 400.85 -45.7 0.71 2267 - 2269 4 273.2 402.62 -45.7 0.71 2268 - 2270 4 275.38 404.93 -47.35 0.71 2269 - 2271 4 277.33 406 -47.35 0.71 2270 - 2272 4 279.28 407.24 -47.12 0.71 2271 - 2273 4 281.87 408.21 -47.12 0.71 2272 - 2274 4 283.39 409.45 -47.3 0.71 2273 - 2275 4 285.12 411.05 -48.96 0.71 2274 - 2276 4 285.99 413 -51.37 0.71 2275 - 2277 4 287.29 415.14 -51.37 0.71 2276 - 2278 4 288.82 418.16 -51.37 0.71 2277 - 2279 4 290.34 420.11 -50.91 0.71 2278 - 2280 4 292.07 422.42 -50.91 0.71 2279 - 2281 4 292.93 424.1 -52.87 0.71 2280 - 2282 4 294.23 425.7 -52.86 0.71 2281 - 2283 4 294.91 427.52 -52.86 0.71 2282 - 2284 4 296.21 430.01 -52.86 0.71 2283 - 2285 4 296.21 432.14 -55.55 0.71 2284 - 2286 4 297.95 434.09 -55.55 0.71 2285 - 2287 4 299.04 436.05 -55.6 0.71 2286 - 2288 4 300.12 438 -55.6 0.71 2287 - 2289 4 301.43 439.42 -58.14 0.71 2288 - 2290 4 302.55 440.23 -58.14 0.535 2289 - 2291 4 304.07 442.9 -58.14 0.535 2290 - 2292 4 306.02 444.67 -58.14 0.535 2291 - 2293 4 306.45 446.98 -58.14 0.535 2292 - 2294 4 307.11 448.76 -58.14 0.535 2293 - 2295 4 308.19 450.18 -58.14 0.535 2294 - 2296 4 232.81 274.06 -24.65 0.89 2206 - 2297 4 234.33 275.13 -24.22 0.89 2296 - 2298 4 235.63 276.37 -24.22 0.89 2297 - 2299 4 236.5 277.79 -26.18 0.89 2298 - 2300 4 237.59 279.04 -24.21 0.89 2299 - 2301 4 238.89 280.64 -24.21 0.89 2300 - 2302 4 239.98 281.7 -24.77 0.89 2301 - 2303 4 240.45 283.2 -24.77 0.89 2302 - 2304 4 241.27 284.44 -24.77 0.89 2303 - 2305 4 241.27 285.87 -24.77 0.89 2304 - 2306 4 242.13 287.29 -24.77 0.89 2305 - 2307 4 242.35 288 -24.77 0.89 2306 - 2308 4 243.46 291.06 -21.93 0.89 2307 - 2309 4 244.33 292.3 -23.02 0.71 2308 - 2310 4 245.85 293.54 -21.62 0.71 2309 - 2311 4 247.15 295.5 -19.23 0.71 2310 - 2312 4 248.46 297.1 -19.23 0.71 2311 - 2313 4 249.98 298.87 -19.23 0.71 2312 - 2314 4 251.71 300.83 -19.23 0.71 2313 - 2315 4 253.02 302.78 -16.84 0.71 2314 - 2316 4 255.16 304.41 -17.58 0.71 2315 - 2317 4 256.25 306.01 -17.58 0.71 2316 - 2318 4 257.55 307.43 -15.7 0.71 2317 - 2319 4 258.42 309.03 -16.48 0.71 2318 - 2320 4 259.94 310.28 -13 0.71 2319 - 2321 4 261.68 311.7 -13 0.71 2320 - 2322 4 264.07 313.83 -13 0.71 2321 - 2323 4 266.02 314.69 -11.39 0.71 2322 - 2324 4 267.76 316.12 -11.39 0.71 2323 - 2325 4 269.5 316.83 -11.39 0.71 2324 - 2326 4 270.91 317.52 -9.86 0.71 2325 - 2327 4 273.52 318.95 -9.86 0.71 2326 - 2328 4 274.61 320.19 -10.13 0.71 2327 - 2329 4 276.13 321.08 -8.43 0.71 2328 - 2330 4 277.21 323.21 -7.66 0.71 2329 - 2331 4 277.65 325.87 -7.66 0.71 2330 - 2332 4 278.95 328.01 -7.66 0.71 2331 - 2333 4 281.12 329.78 -9.3 0.71 2332 - 2334 4 282.86 331.2 -9.3 0.71 2333 - 2335 4 284.51 332.46 -9.3 0.71 2334 - 2336 4 285.16 334.23 -7.48 0.71 2335 - 2337 4 286.68 335.48 -7.48 0.71 2336 - 2338 4 287.77 337.08 -7.48 0.71 2337 - 2339 4 289.07 339.56 -6.02 0.71 2338 - 2340 4 290.81 341.52 -7.11 0.71 2339 - 2341 4 292.77 343.12 -4.54 0.71 2340 - 2342 4 295.37 345.43 -4.54 0.71 2341 - 2343 4 297.33 346.84 -3.45 0.71 2342 - 2344 4 300.37 348.61 -2.7 0.71 2343 - 2345 4 302.98 350.57 -2.7 0.71 2344 - 2346 4 304.71 352.16 -0.7 0.71 2345 - 2347 4 306.89 355.01 -0.7 0.71 2346 - 2348 4 308.19 356.96 -0.7 0.71 2347 - 2349 4 309.93 358.2 -0.06 0.71 2348 - 2350 4 311.66 359.98 -2.46 0.71 2349 - 2351 4 313.13 361.97 -2.46 0.71 2350 - 2352 4 314.65 364.1 -2.46 0.71 2351 - 2353 4 315.95 366.05 -0.24 0.71 2352 - 2354 4 318.34 366.94 -0.24 0.71 2353 - 2355 4 320.95 369.07 -0.79 0.71 2354 - 2356 4 322.9 371.21 -0.79 0.71 2355 - 2357 4 324.21 373.34 -1.72 0.71 2356 - 2358 4 324.86 374.94 -3.03 0.71 2357 - 2359 4 325.64 376.44 -0.34 0.71 2358 - 2360 4 326.95 378.21 -0.34 0.71 2359 - 2361 4 327.38 380.7 2.91 0.71 2360 - 2362 4 327.82 383.01 2.91 0.71 2361 - 2363 4 327.38 385.14 3.42 0.71 2362 - 2364 4 326.3 386.74 3.42 0.71 2363 - 2365 4 326.3 388.52 5.5 0.71 2364 - 2366 4 324.34 391.18 4.82 0.71 2365 - 2367 4 322.86 394.94 6.1 0.71 2366 - 2368 4 321.55 397.79 6.1 0.71 2367 - 2369 4 321.34 400.27 9.19 0.71 2368 - 2370 4 321.34 402.41 9.19 0.71 2369 - 2371 4 320.68 404.54 9.31 0.71 2370 - 2372 4 320.9 407.02 9.31 0.71 2371 - 2373 4 320.11 408.84 9.31 0.71 2372 - 2374 4 319.24 410.61 11.2 0.71 2373 - 2375 4 318.8 412.57 11.2 0.71 2374 - 2376 4 318.59 414.7 13.74 0.71 2375 - 2377 4 318.59 417.01 13.74 0.71 2376 - 2378 4 318.37 420.56 16.29 0.71 2377 - 2379 4 317.94 423.76 17.03 0.71 2378 - 2380 4 317.54 426.3 18.78 0.71 2379 - 2381 4 317.54 428.79 17.7 0.71 2380 - 2382 4 317.11 432.16 18.41 0.71 2381 - 2383 4 316.67 435.01 18.41 0.71 2382 - 2384 4 316.24 436.78 20.42 0.71 2383 - 2385 4 316.24 439.27 23.22 0.71 2384 - 2386 4 315.74 441.9 23.22 0.71 2385 - 2387 4 315.52 444.03 23.22 0.71 2386 - 2388 4 316.39 446.16 23.31 0.71 2387 - 2389 4 317.7 448.83 25.14 0.71 2388 - 2390 4 317.7 452.2 25.14 0.71 2389 - 2391 4 318.56 454.34 27.66 0.71 2390 - 2392 4 319.88 455.86 27.66 0.71 2391 - 2393 4 319.88 457.99 30.31 0.71 2392 - 2394 4 320.21 459.64 30.31 0.71 2393 - 2395 4 320.86 462.3 33.11 0.535 2394 - 2396 4 322.16 464.79 33.11 0.535 2395 - 2397 4 323.68 466.92 33.11 0.535 2396 - 2398 4 324.55 469.41 33.11 0.535 2397 - 2399 4 325.42 471.72 33.11 0.535 2398 - 2400 4 324.77 473.14 35.75 0.71 2399 - 2401 4 325.66 475.19 35.75 0.71 2400 - 2402 4 243.87 288.89 -24.82 0.71 2307 - 2403 4 246.04 290.84 -24.82 0.71 2402 - 2404 4 247.56 292.62 -27.58 0.71 2403 - 2405 4 249.52 294.93 -27.58 0.71 2404 - 2406 4 251.91 296.35 -27.14 0.71 2405 - 2407 4 253.21 297.41 -27.14 0.71 2406 - 2408 4 254.73 298.66 -24.03 0.71 2407 - 2409 4 256.25 299.9 -24.03 0.71 2408 - 2410 4 256.9 301.32 -24.03 0.71 2409 - 2411 4 258.21 302.39 -24.03 0.71 2410 - 2412 4 259.29 303.45 -22.58 0.71 2411 - 2413 4 260.59 305.23 -24.06 0.71 2412 - 2414 4 261.68 307.01 -22.05 0.71 2413 - 2415 4 262.98 308.6 -19.55 0.71 2414 - 2416 4 265.15 310.38 -19.55 0.71 2415 - 2417 4 268.02 311.66 -19.55 0.71 2416 - 2418 4 270.61 311.48 -19.55 0.71 2417 - 2419 4 272.34 311.12 -21.46 0.71 2418 - 2420 4 273.43 311.48 -24.34 0.71 2419 - 2421 4 274.73 313.43 -24.9 0.71 2420 - 2422 4 276.47 315.03 -23.42 0.71 2421 - 2423 4 279.07 316.63 -25.15 0.71 2422 - 2424 4 281.9 319.12 -25.15 0.71 2423 - 2425 4 285.59 321.61 -22.04 0.71 2424 - 2426 4 287.55 323.04 -19.46 0.71 2425 - 2427 4 289.5 325.17 -19.46 0.71 2426 - 2428 4 290.37 326.23 -20.76 0.71 2427 - 2429 4 291.89 328.19 -20.76 0.71 2428 - 2430 4 293.19 329.61 -20.76 0.71 2429 - 2431 4 295.15 331.74 -19.03 0.71 2430 - 2432 4 297.1 333.34 -17.14 0.71 2431 - 2433 4 300.58 335.65 -18 0.71 2432 - 2434 4 303.4 336.54 -18 0.71 2433 - 2435 4 304.44 338.06 -15.97 0.71 2434 - 2436 4 306.83 339.12 -14.74 0.71 2435 - 2437 4 309.44 340.19 -14.29 0.71 2436 - 2438 4 310.96 340.72 -13.74 0.71 2437 - 2439 4 313.78 341.97 -12.42 0.71 2438 - 2440 4 316.61 343.03 -12.42 0.71 2439 - 2441 4 318.56 343.56 -9.78 0.71 2440 - 2442 4 321.6 344.1 -9.78 0.71 2441 - 2443 4 323.11 345.44 -9.78 0.71 2442 - 2444 4 326.15 346.15 -9.78 0.71 2443 - 2445 4 328.31 347.03 -5.91 0.71 2444 - 2446 4 331.35 347.57 -5.91 0.71 2445 - 2447 4 333.95 348.81 -5.91 0.71 2446 - 2448 4 336.13 349.88 -5.91 0.71 2447 - 2449 4 338.52 350.23 -6.59 0.71 2448 - 2450 4 340.9 352.01 -3.68 0.71 2449 - 2451 4 342.5 353.26 -3.56 0.71 2450 - 2452 4 345.32 354.86 -3.56 0.71 2451 - 2453 4 347.49 354.86 -4.33 0.71 2452 - 2454 4 350.31 356.63 -2.45 0.71 2453 - 2455 4 351.83 359.12 -2.45 0.71 2454 - 2456 4 353.14 361.43 -2.17 0.71 2455 - 2457 4 353.35 363.38 -2.17 0.71 2456 - 2458 4 353.79 365.16 -1.03 0.71 2457 - 2459 4 354.22 366.94 2.1 0.71 2458 - 2460 4 353.98 368.1 2.1 0.71 2459 - 2461 4 354.19 369.7 2.34 0.71 2460 - 2462 4 355.93 372.01 2.34 0.71 2461 - 2463 4 357.45 374.32 3.12 0.71 2462 - 2464 4 358.75 376.1 5.85 0.71 2463 - 2465 4 360.49 378.23 9.16 0.71 2464 - 2466 4 362.01 380.89 11.15 0.71 2465 - 2467 4 363.1 383.02 11.15 0.71 2466 - 2468 4 365.58 386.39 10.92 0.71 2467 - 2469 4 367.1 388.88 10.92 0.71 2468 - 2470 4 367.97 391.54 10.8 0.71 2469 - 2471 4 369.49 393.14 10.8 0.71 2470 - 2472 4 370.91 395.52 12.87 0.71 2471 diff --git a/examples/tutorials/Rdesigneur/cells/CA1.morph.xml b/examples/tutorials/Rdesigneur/cells/CA1.morph.xml deleted file mode 100644 index dcae7ae..0000000 --- a/examples/tutorials/Rdesigneur/cells/CA1.morph.xml +++ /dev/null @@ -1,12535 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc b/examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc deleted file mode 100644 index 6ca8c78..0000000 --- a/examples/tutorials/Rdesigneur/cells/DHC-neuron.CNG.swc +++ /dev/null @@ -1,6764 +0,0 @@ -# Original file DHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. -# Irregularities and fixes documented in DHC-neuron.swc.std. See StdSwc1.31.doc for more information. -# -# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\DHC-neuron.asc -#The original file has a single soma contour that is averaged into 3 soma points -# NEUROMANTIC V1.6.3 (2/28/2013 12:43:57 PM): Saved to DHC-neuron.swc -1 1 0.0 0.0 0.0 8.5214 -1 -2 1 -0.05 -8.47 -0.87 8.5214 1 -3 1 0.05 8.47 0.87 8.5214 1 -4 3 4.36 -6.98 -4.24 2.275 1 -5 3 5.55 -8.63 -4.38 1.625 4 -6 3 6.29 -9.84 -4.79 1.3 5 -7 3 7.21 -11.46 -3.28 1.085 6 -8 3 7.88 -11.55 -3.27 1.085 7 -9 3 8.14 -12.19 -3.18 0.435 8 -10 3 8.15 -12.41 -3.2 0.435 9 -11 3 8.2 -12.48 -4.57 0.435 10 -12 3 8.45 -12.85 -5.05 0.435 11 -13 3 8.5 -13.21 -5.84 0.435 12 -14 3 8.52 -13.12 -6.74 0.435 13 -15 3 7.83 -13.33 -5.11 0.435 14 -16 3 7.81 -13.11 -5.09 0.435 15 -17 3 8.03 -13.11 -5.01 0.76 16 -18 3 8.07 -13.74 -5.07 0.975 17 -19 3 8.38 -15.02 -5.2 0.975 18 -20 3 8.84 -15.53 -5.24 0.975 19 -21 3 9.53 -16.4 -4.87 0.435 20 -22 3 10.63 -16.55 -4.86 0.435 21 -23 3 11.07 -16.51 -4.99 0.435 22 -24 3 11.52 -16.63 -5.59 0.435 23 -25 3 12.19 -16.76 -5.97 0.435 24 -26 3 12.66 -17.12 -6.45 0.435 25 -27 3 13.12 -17.29 -6.68 0.435 26 -28 3 13.14 -17.22 -7.35 0.435 27 -29 3 13.74 -17.39 -5.39 0.435 28 -30 3 14.63 -17.69 -6.08 0.435 29 -31 3 15.99 -18.22 -6.4 0.435 30 -32 3 17.12 -18.77 -6.73 0.435 31 -33 3 18.71 -19.93 -7.12 0.435 32 -34 3 20.11 -21.34 -7.31 0.435 33 -35 3 22.14 -22.5 -7.38 0.435 34 -36 3 23.28 -23.3 -7.44 0.435 35 -37 3 24.85 -24.28 -7.5 0.435 36 -38 3 25.78 -25.09 -7.57 0.435 37 -39 3 26.27 -25.9 -7.71 0.435 38 -40 3 27.19 -26.95 -7.49 0.435 39 -41 3 28.59 -28.63 -7.33 0.435 40 -42 3 29.96 -29.62 -7.33 0.435 41 -43 3 31.09 -30.41 -7.39 0.435 42 -44 3 33.97 -31.32 -7.41 0.435 43 -45 3 35.74 -31.85 -7.43 0.435 44 -46 3 36.9 -33.07 -7.44 0.435 45 -47 3 38.05 -34.08 -7.52 0.435 46 -48 3 39.23 -35.52 -7.64 0.435 47 -49 3 39.91 -36.13 -7.62 0.435 48 -50 3 40.4 -36.75 -7.67 0.435 49 -51 3 41.32 -37.76 -7.76 0.435 50 -52 3 42.03 -38.57 -7.89 0.435 51 -53 3 43.66 -40.19 -8.02 0.435 52 -54 3 44.56 -41.0 -8.08 0.435 53 -55 3 46.4 -42.39 -8.18 0.435 54 -56 3 47.96 -43.15 -8.23 0.435 55 -57 3 49.11 -44.17 -8.3 0.435 56 -58 3 50.04 -45.18 -8.39 0.435 57 -59 3 50.3 -45.82 -8.45 0.435 58 -60 3 50.6 -47.08 -8.57 0.435 59 -61 3 51.33 -48.33 -8.68 0.435 60 -62 3 51.57 -48.74 -8.72 0.435 61 -63 3 51.64 -49.82 -8.83 0.435 62 -64 3 51.88 -50.23 -8.87 0.435 63 -65 3 52.6 -50.99 -9.46 0.435 64 -66 3 53.31 -51.52 -10.25 0.435 65 -67 3 54.03 -52.51 -10.71 0.435 66 -68 3 54.98 -53.25 -11.45 0.435 67 -69 3 55.45 -53.84 -11.72 0.435 68 -70 3 55.93 -54.45 -11.92 0.435 69 -71 3 56.4 -54.8 -12.4 0.435 70 -72 3 56.85 -55.2 -12.43 0.435 71 -73 3 57.55 -55.81 -12.48 0.435 72 -74 3 58.34 -57.88 -12.9 0.435 73 -75 3 60.6 -58.97 -13.57 0.435 74 -76 3 61.73 -59.75 -13.69 0.435 75 -77 3 62.66 -60.25 -14.7 0.435 76 -78 3 63.34 -60.38 -15.15 0.435 77 -79 3 64.47 -61.16 -15.28 0.435 78 -80 3 64.93 -61.28 -15.96 0.435 79 -81 3 65.87 -62.29 -16.12 0.435 80 -82 3 66.34 -62.63 -16.67 0.435 81 -83 3 68.15 -63.33 -17.3 0.435 82 -84 3 69.71 -63.8 -18.06 0.435 83 -85 3 70.82 -63.89 -18.65 0.435 84 -86 3 71.91 -63.81 -18.7 0.435 85 -87 3 72.57 -64.2 -18.72 0.435 86 -88 3 74.39 -65.36 -19.02 0.435 87 -89 3 75.52 -65.91 -19.2 0.435 88 -90 3 76.46 -66.92 -19.43 0.435 89 -91 3 77.38 -67.42 -20.37 0.435 90 -92 3 78.31 -67.94 -21.16 0.435 91 -93 3 79.92 -69.31 -21.56 0.435 92 -94 3 80.83 -69.62 -22.25 0.435 93 -95 3 81.76 -70.4 -22.45 0.435 94 -96 3 82.22 -70.48 -23.51 0.435 95 -97 3 83.16 -71.24 -24.02 0.435 96 -98 3 84.75 -72.15 -24.76 0.435 97 -99 3 85.43 -72.52 -25.0 0.435 98 -100 3 85.9 -72.64 -25.69 0.435 99 -101 3 86.57 -72.79 -25.91 0.435 100 -102 3 87.47 -73.12 -26.37 0.435 101 -103 3 88.61 -73.89 -26.65 0.435 102 -104 3 89.93 -74.21 -26.95 0.435 103 -105 3 93.09 -75.67 -27.63 0.435 104 -106 3 94.85 -75.94 -28.15 0.435 105 -107 3 96.18 -76.28 -28.22 0.435 106 -108 3 97.7 -76.16 -28.41 0.435 107 -109 3 100.33 -76.4 -28.67 0.435 108 -110 3 101.47 -77.19 -28.8 0.435 109 -111 3 103.49 -78.36 -28.87 0.435 110 -112 3 104.84 -78.87 -29.42 0.435 111 -113 3 106.17 -79.21 -29.5 0.435 112 -114 3 107.69 -79.12 -29.45 0.435 113 -115 3 109.24 -79.64 -29.77 0.435 114 -116 3 111.67 -80.12 -29.84 0.435 115 -117 3 112.82 -81.12 -29.99 0.435 116 -118 3 114.22 -82.51 -30.48 0.435 117 -119 3 114.92 -83.33 -30.55 0.435 118 -120 3 115.64 -84.35 -30.71 0.435 119 -121 3 116.36 -85.37 -30.8 0.435 120 -122 3 116.85 -86.2 -30.95 0.435 121 -123 3 117.37 -87.46 -31.07 0.435 122 -124 3 118.05 -88.06 -31.12 0.435 123 -125 3 118.54 -88.87 -31.41 0.435 124 -126 3 119.26 -89.66 -31.78 0.435 125 -127 3 119.51 -90.03 -32.26 0.435 126 -128 3 120.21 -90.61 -32.61 0.435 127 -129 3 120.45 -91.23 -32.66 0.435 128 -130 3 120.92 -91.62 -32.76 0.435 129 -131 3 121.41 -92.46 -32.84 0.435 130 -132 3 121.66 -92.85 -33.03 0.435 131 -133 3 122.36 -93.45 -33.22 0.435 132 -134 3 123.27 -94.21 -33.58 0.435 133 -135 3 123.52 -94.63 -33.7 0.435 134 -136 3 124.69 -95.56 -34.44 0.435 135 -137 3 125.16 -95.96 -34.47 0.435 136 -138 3 125.6 -96.36 -34.58 0.435 137 -139 3 126.29 -96.74 -34.76 0.435 138 -140 3 126.74 -96.91 -34.83 0.435 139 -141 3 127.21 -97.3 -35.01 0.435 140 -142 3 127.66 -97.66 -35.42 0.435 141 -143 3 128.13 -98.03 -35.82 0.435 142 -144 3 128.6 -98.41 -36.0 0.435 143 -145 3 128.84 -98.55 -36.61 0.435 144 -146 3 129.53 -99.14 -36.74 0.435 145 -147 3 130.42 -99.29 -36.95 0.435 146 -148 3 130.45 -99.43 -37.57 0.435 147 -149 3 7.37 -16.37 -5.36 0.54 20 -150 3 7.01 -17.48 -5.48 0.54 149 -151 3 6.43 -18.58 -5.61 0.54 150 -152 3 5.65 -19.92 -5.77 0.54 151 -153 3 4.59 -20.41 -5.84 0.54 152 -154 3 4.39 -20.67 -5.65 0.65 153 -155 3 3.35 -21.35 -5.9 0.65 154 -156 3 2.97 -21.68 -7.22 0.65 155 -157 3 3.24 -21.69 -9.02 0.435 156 -158 3 3.3 -22.56 -9.11 0.435 157 -159 3 3.35 -23.42 -9.13 0.435 158 -160 3 2.55 -24.33 -9.24 0.435 159 -161 3 1.72 -25.03 -9.34 0.435 160 -162 3 0.89 -25.5 -9.4 0.435 161 -163 3 1.32 -25.86 -8.79 0.435 162 -164 3 1.76 -26.22 -8.17 0.435 163 -165 3 2.7 -27.25 -8.25 0.435 164 -166 3 3.62 -28.27 -8.34 0.435 165 -167 3 4.79 -29.48 -8.44 0.435 166 -168 3 5.98 -31.13 -8.58 0.435 167 -169 3 6.73 -32.59 -8.71 0.435 168 -170 3 7.49 -34.48 -8.89 0.435 169 -171 3 8.25 -36.16 -9.05 0.435 170 -172 3 8.84 -38.48 -9.27 0.435 171 -173 3 9.36 -39.74 -9.39 0.435 172 -174 3 9.88 -41.22 -9.53 0.435 173 -175 3 10.22 -43.14 -9.72 0.435 174 -176 3 10.15 -45.29 -9.95 0.435 175 -177 3 10.26 -47.0 -10.12 0.435 176 -178 3 10.79 -48.69 -10.28 0.435 177 -179 3 10.9 -50.39 -10.46 0.435 178 -180 3 11.63 -51.65 -10.57 0.435 179 -181 3 12.82 -53.08 -10.69 0.435 180 -182 3 13.38 -54.92 -11.4 0.435 181 -183 3 13.71 -56.38 -11.84 0.435 182 -184 3 14.0 -57.37 -12.69 0.435 183 -185 3 14.11 -58.82 -13.21 0.435 184 -186 3 14.45 -60.73 -13.48 0.435 185 -187 3 14.96 -62.0 -13.6 0.435 186 -188 3 15.07 -63.71 -13.78 0.435 187 -189 3 15.17 -65.21 -13.93 0.435 188 -190 3 15.86 -66.02 -14.0 0.435 189 -191 3 16.38 -67.28 -14.11 0.435 190 -192 3 17.11 -68.31 -14.2 0.435 191 -193 3 17.59 -69.15 -14.28 0.435 192 -194 3 17.6 -69.32 -14.3 0.435 193 -195 3 17.43 -69.37 -15.89 0.435 194 -196 3 17.24 -69.83 -15.94 0.435 195 -197 3 16.82 -70.07 -15.9 0.435 196 -198 3 16.39 -70.1 -15.91 0.435 197 -199 3 16.23 -70.96 -16.01 0.435 198 -200 3 16.26 -71.39 -16.12 0.435 199 -201 3 16.31 -72.24 -16.28 0.435 200 -202 3 16.41 -73.74 -16.43 0.435 201 -203 3 16.7 -74.8 -16.54 0.435 202 -204 3 16.97 -75.64 -16.62 0.435 203 -205 3 17.24 -76.49 -16.7 0.435 204 -206 3 17.26 -76.91 -16.82 0.435 205 -207 3 17.31 -77.54 -16.95 0.435 206 -208 3 17.34 -77.97 -17.08 0.435 207 -209 3 17.38 -78.6 -17.14 0.435 208 -210 3 17.43 -79.23 -17.28 0.435 209 -211 3 17.06 -80.33 -17.4 0.435 210 -212 3 16.68 -81.22 -17.5 0.435 211 -213 3 16.28 -81.67 -17.56 0.435 212 -214 3 16.34 -82.75 -17.67 0.435 213 -215 3 16.39 -83.39 -17.73 0.435 214 -216 3 16.45 -84.46 -17.84 0.435 215 -217 3 16.51 -85.31 -17.93 0.435 216 -218 3 16.8 -86.37 -18.03 0.435 217 -219 3 16.84 -87.02 -18.1 0.435 218 -220 3 16.88 -87.66 -18.16 0.435 219 -221 3 16.7 -88.31 -18.23 0.435 220 -222 3 16.98 -88.89 -18.82 0.435 221 -223 3 17.2 -88.88 -18.73 0.435 222 -224 3 17.23 -89.3 -18.93 0.435 223 -225 3 17.69 -89.67 -19.26 0.435 224 -226 3 17.94 -90.08 -19.37 0.435 225 -227 3 17.98 -90.47 -19.79 0.435 226 -228 3 18.43 -90.61 -20.24 0.435 227 -229 3 18.93 -91.37 -21.06 0.435 228 -230 3 19.19 -91.95 -21.5 0.435 229 -231 3 19.45 -92.34 -21.9 0.435 230 -232 3 20.13 -92.44 -22.5 0.435 231 -233 3 20.38 -92.81 -22.99 0.435 232 -234 3 20.64 -93.13 -23.92 0.435 233 -235 3 21.11 -93.49 -24.47 0.435 234 -236 3 21.36 -93.9 -24.51 0.435 235 -237 3 21.61 -94.26 -24.99 0.435 236 -238 3 22.1 -94.85 -25.34 0.435 237 -239 3 22.13 -95.48 -25.49 0.435 238 -240 3 22.6 -95.86 -25.89 0.435 239 -241 3 23.1 -96.41 -26.46 0.435 240 -242 3 23.35 -97.04 -26.59 0.435 241 -243 3 23.61 -97.62 -27.1 0.435 242 -244 3 23.88 -98.25 -27.24 0.435 243 -245 3 24.13 -98.85 -27.45 0.435 244 -246 3 24.18 -99.49 -27.58 0.435 245 -247 3 24.67 -100.04 -28.31 0.435 246 -248 3 24.92 -100.4 -28.86 0.435 247 -249 3 25.22 -101.44 -29.12 0.435 248 -250 3 25.51 -102.23 -29.79 0.435 249 -251 3 25.97 -102.62 -29.9 0.435 250 -252 3 26.21 -102.75 -30.59 0.435 251 -253 3 26.71 -103.54 -31.11 0.435 252 -254 3 27.2 -104.3 -31.78 0.435 253 -255 3 27.46 -104.93 -31.84 0.435 254 -256 3 27.73 -105.52 -32.26 0.435 255 -257 3 28.61 -105.68 -32.34 0.435 256 -258 3 29.09 -106.03 -32.89 0.435 257 -259 3 29.78 -106.59 -33.23 0.435 258 -260 3 30.24 -106.74 -33.69 0.435 259 -261 3 31.18 -107.46 -34.58 0.435 260 -262 3 31.42 -107.59 -35.26 0.435 261 -263 3 32.77 -108.1 -35.81 0.435 262 -264 3 33.22 -108.29 -35.82 0.435 263 -265 3 33.91 -108.34 -36.94 0.435 264 -266 3 34.15 -108.47 -37.7 0.435 265 -267 3 34.38 -108.39 -38.29 0.435 266 -268 3 35.06 -108.76 -38.61 0.435 267 -269 3 35.74 -109.15 -38.63 0.435 268 -270 3 37.1 -109.63 -39.41 0.435 269 -271 3 37.99 -109.77 -39.62 0.435 270 -272 3 38.45 -110.11 -40.25 0.435 271 -273 3 38.9 -110.3 -40.34 0.435 272 -274 3 39.15 -110.7 -40.37 0.435 273 -275 3 39.4 -111.33 -40.43 0.435 274 -276 3 39.46 -112.19 -40.52 0.435 275 -277 3 39.54 -112.71 -41.85 0.435 276 -278 3 39.78 -113.09 -42.11 0.435 277 -279 3 39.83 -113.4 -43.27 0.435 278 -280 3 39.85 -113.57 -43.81 0.435 279 -281 3 39.04 -114.25 -43.98 0.435 280 -282 3 38.86 -114.41 -44.76 0.435 281 -283 3 38.45 -114.58 -45.54 0.435 282 -284 3 38.5 -114.9 -46.55 0.435 283 -285 3 38.53 -114.78 -47.67 0.435 284 -286 3 38.12 -115.21 -47.94 0.435 285 -287 3 37.73 -115.62 -48.45 0.435 286 -288 3 37.76 -116.04 -48.56 0.435 287 -289 3 38.01 -116.2 -49.11 0.435 288 -290 3 38.03 -116.35 -49.64 0.435 289 -291 3 37.63 -116.75 -50.15 0.435 290 -292 3 38.12 -117.35 -50.43 0.435 291 -293 3 38.15 -117.77 -50.54 0.435 292 -294 3 38.62 -118.36 -50.89 0.435 293 -295 3 40.77 -117.78 -50.93 0.435 294 -296 3 41.66 -118.16 -50.95 0.435 295 -297 3 42.34 -118.76 -51.0 0.435 296 -298 3 43.03 -119.38 -51.05 0.435 297 -299 3 43.52 -120.2 -51.12 0.435 298 -300 3 44.0 -120.82 -51.17 0.435 299 -301 3 44.47 -121.43 -51.22 0.435 300 -302 3 44.91 -121.4 -51.21 0.435 301 -303 3 46.2 -121.32 -51.17 0.435 302 -304 3 46.85 -121.28 -51.15 0.435 303 -305 3 47.28 -121.25 -51.14 0.435 304 -306 3 48.32 -120.55 -51.04 0.435 305 -307 3 49.37 -120.05 -50.96 0.435 306 -308 3 50.2 -119.37 -50.87 0.435 307 -309 3 50.85 -119.28 -51.23 0.435 308 -310 3 51.28 -119.25 -51.29 0.435 309 -311 3 52.18 -119.37 -51.66 0.435 310 -312 3 53.04 -119.32 -51.64 0.435 311 -313 3 53.92 -119.48 -51.7 0.435 312 -314 3 55.44 -119.59 -51.68 0.435 313 -315 3 56.53 -119.75 -51.67 0.435 314 -316 3 56.98 -119.93 -51.68 0.435 315 -317 3 57.67 -120.29 -52.0 0.435 316 -318 3 58.36 -120.61 -52.62 0.435 317 -319 3 59.04 -121.22 -52.67 0.435 318 -320 3 59.75 -121.78 -53.09 0.435 319 -321 3 60.44 -122.38 -53.14 0.435 320 -322 3 60.89 -122.78 -53.24 0.435 321 -323 3 61.14 -123.19 -53.27 0.435 322 -324 3 61.63 -124.03 -53.35 0.435 323 -325 3 61.88 -124.44 -53.47 0.435 324 -326 3 62.12 -124.84 -53.57 0.435 325 -327 3 62.37 -125.23 -53.83 0.435 326 -328 3 62.83 -125.62 -53.94 0.435 327 -329 3 63.49 -125.8 -54.01 0.435 328 -330 3 63.95 -126.19 -54.04 0.435 329 -331 3 64.4 -126.12 -54.48 0.435 330 -332 3 64.83 -126.07 -54.69 0.435 331 -333 3 65.28 -126.01 -54.98 0.435 332 -334 3 16.54 -88.97 -18.31 0.435 221 -335 3 16.16 -90.07 -18.43 0.435 334 -336 3 16.21 -90.92 -18.52 0.435 335 -337 3 15.45 -92.27 -18.67 0.435 336 -338 3 15.98 -93.94 -18.83 0.435 337 -339 3 16.27 -95.01 -18.94 0.435 338 -340 3 16.3 -95.45 -18.98 0.435 339 -341 3 16.59 -96.44 -19.61 0.435 340 -342 3 15.61 -97.73 -20.37 0.435 341 -343 3 15.72 -97.83 -20.38 0.435 342 -344 3 16.49 -97.63 -20.86 0.325 343 -345 3 16.73 -98.26 -20.85 0.325 344 -346 3 16.76 -98.43 -21.24 0.325 345 -347 3 16.78 -98.35 -22.07 0.325 346 -348 3 17.03 -98.46 -23.05 0.325 347 -349 3 17.29 -98.53 -24.26 0.325 348 -350 3 17.34 -99.17 -24.4 0.325 349 -351 3 17.38 -99.52 -25.11 0.325 350 -352 3 17.44 -100.09 -25.92 0.325 351 -353 3 17.73 -100.78 -27.49 0.325 352 -354 3 17.99 -101.13 -28.05 0.325 353 -355 3 18.03 -101.53 -28.47 0.325 354 -356 3 18.27 -101.19 -29.56 0.325 355 -357 3 18.31 -101.57 -30.05 0.325 356 -358 3 18.35 -102.17 -30.56 0.325 357 -359 3 17.62 -103.88 -31.36 0.325 358 -360 3 17.67 -104.72 -31.51 0.325 359 -361 3 17.74 -105.78 -31.85 0.325 360 -362 3 17.82 -106.54 -32.84 0.325 361 -363 3 18.1 -107.1 -33.56 0.325 362 -364 3 18.15 -107.68 -34.22 0.325 363 -365 3 18.63 -108.29 -34.35 0.325 364 -366 3 18.88 -108.69 -34.54 0.325 365 -367 3 19.12 -109.31 -34.6 0.325 366 -368 3 19.38 -109.94 -34.73 0.325 367 -369 3 19.63 -110.33 -34.99 0.325 368 -370 3 19.72 -111.62 -35.13 0.325 369 -371 3 19.8 -112.89 -35.33 0.325 370 -372 3 19.87 -113.96 -35.44 0.325 371 -373 3 20.12 -114.59 -35.49 0.325 372 -374 3 20.17 -115.45 -35.58 0.325 373 -375 3 20.42 -115.87 -35.62 0.325 374 -376 3 20.49 -116.93 -35.73 0.325 375 -377 3 20.53 -117.58 -35.79 0.325 376 -378 3 20.78 -117.99 -35.91 0.325 377 -379 3 20.81 -118.39 -36.1 0.325 378 -380 3 20.86 -119.02 -36.39 0.325 379 -381 3 20.04 -119.7 -36.63 0.325 380 -382 3 20.13 -120.95 -37.06 0.325 381 -383 3 20.28 -123.02 -37.95 0.325 382 -384 3 20.76 -123.6 -38.44 0.325 383 -385 3 20.82 -124.41 -38.98 0.325 384 -386 3 21.32 -125.22 -39.28 0.325 385 -387 3 21.48 -127.57 -39.59 0.325 386 -388 3 21.13 -129.1 -39.76 0.325 387 -389 3 21.41 -129.93 -39.92 0.325 388 -390 3 21.92 -130.95 -40.23 0.325 389 -391 3 21.98 -131.76 -40.77 0.325 390 -392 3 22.02 -132.37 -41.06 0.325 391 -393 3 22.08 -132.99 -41.43 0.325 392 -394 3 22.11 -133.63 -41.49 0.325 393 -395 3 22.17 -134.24 -41.85 0.325 394 -396 3 22.21 -134.86 -42.22 0.325 395 -397 3 22.28 -135.66 -42.82 0.325 396 -398 3 22.34 -136.47 -43.36 0.325 397 -399 3 22.4 -137.32 -43.52 0.325 398 -400 3 22.04 -138.12 -44.37 0.325 399 -401 3 22.17 -140.04 -44.64 0.325 400 -402 3 22.25 -141.04 -45.41 0.325 401 -403 3 22.3 -141.68 -45.56 0.325 402 -404 3 22.36 -142.74 -45.82 0.325 403 -405 3 22.03 -144.05 -46.03 0.325 404 -406 3 22.08 -144.9 -46.12 0.325 405 -407 3 22.34 -145.24 -46.9 0.325 406 -408 3 22.38 -145.62 -47.47 0.325 407 -409 3 22.41 -146.25 -47.61 0.325 408 -410 3 22.66 -146.67 -47.64 0.325 409 -411 3 22.72 -147.51 -47.88 0.325 410 -412 3 22.75 -147.92 -48.07 0.325 411 -413 3 23.02 -148.53 -48.28 0.325 412 -414 3 23.09 -149.33 -48.96 0.325 413 -415 3 22.74 -150.6 -49.49 0.325 414 -416 3 23.5 -152.26 -49.79 0.325 415 -417 3 23.56 -153.09 -50.1 0.325 416 -418 3 24.1 -154.54 -50.54 0.325 417 -419 3 24.82 -155.53 -51.0 0.325 418 -420 3 25.76 -156.24 -51.96 0.325 419 -421 3 26.72 -156.9 -53.43 0.325 420 -422 3 27.19 -157.23 -54.13 0.325 421 -423 3 27.66 -157.62 -54.31 0.325 422 -424 3 27.91 -157.68 -55.67 0.325 423 -425 3 28.4 -158.01 -56.52 0.325 424 -426 3 29.27 -157.89 -57.1 0.325 425 -427 3 29.94 -157.77 -57.82 0.325 426 -428 3 30.87 -158.02 -59.02 0.325 427 -429 3 31.76 -158.35 -59.49 0.325 428 -430 3 15.84 -97.92 -20.39 0.435 343 -431 3 15.47 -99.02 -20.58 0.435 430 -432 3 15.74 -99.62 -21.02 0.435 431 -433 3 15.79 -100.21 -21.53 0.435 432 -434 3 15.87 -101.24 -22.09 0.435 433 -435 3 15.93 -102.07 -22.39 0.435 434 -436 3 16.17 -102.48 -22.43 0.435 435 -437 3 16.23 -103.34 -22.6 0.435 436 -438 3 16.26 -103.77 -22.64 0.435 437 -439 3 16.74 -104.59 -22.78 0.435 438 -440 3 16.41 -106.11 -22.95 0.435 439 -441 3 15.87 -107.87 -23.14 0.435 440 -442 3 15.91 -108.27 -23.42 0.435 441 -443 3 15.97 -108.84 -24.15 0.435 442 -444 3 16.04 -109.64 -24.83 0.435 443 -445 3 16.08 -110.01 -25.4 0.435 444 -446 3 16.13 -110.6 -26.06 0.435 445 -447 3 16.2 -111.39 -26.74 0.435 446 -448 3 16.25 -112.22 -26.97 0.435 447 -449 3 16.75 -112.77 -27.7 0.435 448 -450 3 16.79 -113.14 -28.34 0.435 449 -451 3 16.81 -113.58 -28.39 0.435 450 -452 3 17.31 -114.61 -28.55 0.435 451 -453 3 17.34 -115.04 -28.68 0.435 452 -454 3 17.41 -115.8 -29.58 0.435 453 -455 3 18.15 -117.04 -29.84 0.435 454 -456 3 18.2 -117.61 -30.5 0.435 455 -457 3 18.48 -118.41 -31.03 0.435 456 -458 3 19.64 -119.41 -31.19 0.435 457 -459 3 19.69 -120.27 -31.28 0.435 458 -460 3 19.75 -120.6 -32.35 0.435 459 -461 3 19.38 -121.68 -32.55 0.435 460 -462 3 19.42 -122.06 -33.05 0.435 461 -463 3 19.05 -122.91 -33.44 0.435 462 -464 3 19.13 -123.95 -33.85 0.435 463 -465 3 19.2 -124.75 -34.54 0.435 464 -466 3 19.48 -125.77 -35.01 0.435 465 -467 3 19.55 -126.6 -35.39 0.435 466 -468 3 19.84 -127.64 -35.57 0.435 467 -469 3 20.17 -129.33 -35.89 0.435 468 -470 3 20.44 -130.14 -36.19 0.435 469 -471 3 20.49 -130.75 -36.71 0.435 470 -472 3 20.99 -131.58 -36.86 0.435 471 -473 3 21.01 -131.78 -36.95 0.435 472 -474 3 21.06 -132.62 -37.04 0.435 473 -475 3 21.11 -132.95 -38.13 0.435 474 -476 3 21.17 -133.49 -39.16 0.435 475 -477 3 21.21 -133.86 -39.8 0.435 476 -478 3 21.51 -134.33 -41.43 0.435 477 -479 3 21.57 -135.14 -42.03 0.435 478 -480 3 21.63 -135.7 -42.84 0.435 479 -481 3 21.68 -136.33 -43.06 0.435 480 -482 3 21.72 -136.69 -43.78 0.435 481 -483 3 21.13 -137.56 -44.03 0.435 482 -484 3 21.39 -138.2 -44.09 0.435 483 -485 3 21.48 -139.48 -44.22 0.435 484 -486 3 21.51 -139.89 -44.49 0.435 485 -487 3 21.55 -140.24 -45.27 0.435 486 -488 3 21.23 -141.71 -46.04 0.435 487 -489 3 20.47 -143.47 -46.24 0.435 488 -490 3 19.27 -145.04 -46.5 0.435 489 -491 3 18.52 -146.8 -46.78 0.435 490 -492 3 16.95 -149.26 -47.07 0.435 491 -493 3 16.61 -150.79 -47.24 0.435 492 -494 3 15.85 -152.55 -47.44 0.435 493 -495 3 15.49 -153.65 -47.56 0.435 494 -496 3 15.13 -154.97 -47.71 0.435 495 -497 3 15.21 -156.25 -47.84 0.435 496 -498 3 14.41 -157.16 -47.95 0.435 497 -499 3 13.66 -158.92 -48.15 0.435 498 -500 3 11.6 -160.56 -48.37 0.435 499 -501 3 9.96 -162.16 -48.57 0.435 500 -502 3 8.77 -163.96 -48.79 0.435 501 -503 3 8.22 -165.49 -48.96 0.435 502 -504 3 7.1 -168.37 -49.28 0.435 503 -505 3 5.65 -172.47 -50.49 0.435 504 -506 3 4.45 -173.98 -51.2 0.435 505 -507 3 2.96 -177.21 -52.48 0.435 506 -508 3 1.37 -179.44 -52.9 0.435 507 -509 3 0.17 -180.72 -53.96 0.435 508 -510 3 -1.46 -182.09 -54.29 0.435 509 -511 3 -2.47 -183.23 -54.43 0.435 510 -512 3 -3.95 -183.96 -54.55 0.435 511 -513 3 -5.18 -184.89 -54.75 0.435 512 -514 3 -6.45 -185.39 -54.83 0.435 513 -515 3 17.85 -69.54 -14.54 0.435 194 -516 3 18.1 -70.12 -15.04 0.435 515 -517 3 18.36 -70.75 -15.1 0.435 516 -518 3 17.99 -71.63 -15.28 0.435 517 -519 3 17.21 -72.96 -15.44 0.435 518 -520 3 17.26 -73.81 -15.52 0.435 519 -521 3 17.3 -74.46 -15.59 0.435 520 -522 3 17.75 -74.86 -15.62 0.435 521 -523 3 18.21 -75.06 -15.63 0.435 522 -524 3 18.65 -75.24 -15.64 0.435 523 -525 3 19.33 -75.63 -15.66 0.435 524 -526 3 19.83 -76.65 -15.98 0.435 525 -527 3 20.35 -77.91 -16.18 0.435 526 -528 3 20.86 -78.94 -16.34 0.435 527 -529 3 20.94 -80.22 -16.47 0.435 528 -530 3 21.02 -81.52 -16.6 0.435 529 -531 3 21.28 -82.15 -16.66 0.435 530 -532 3 21.59 -83.63 -16.81 0.435 531 -533 3 22.11 -84.89 -16.93 0.435 532 -534 3 23.54 -86.95 -17.11 0.435 533 -535 3 24.47 -87.97 -17.19 0.435 534 -536 3 25.18 -89.0 -17.28 0.435 535 -537 3 25.29 -90.5 -17.51 0.435 536 -538 3 25.4 -92.2 -17.69 0.435 537 -539 3 25.45 -93.07 -17.78 0.435 538 -540 3 25.79 -94.98 -17.97 0.435 539 -541 3 25.9 -96.69 -18.14 0.435 540 -542 3 26.39 -97.73 -18.24 0.435 541 -543 3 27.1 -97.72 -19.72 0.435 542 -544 3 27.98 -98.1 -19.73 0.435 543 -545 3 28.66 -98.48 -19.76 0.435 544 -546 3 29.13 -99.12 -19.66 0.435 545 -547 3 29.41 -99.95 -19.74 0.435 546 -548 3 29.9 -101.0 -19.84 0.435 547 -549 3 30.37 -101.4 -19.87 0.435 548 -550 3 30.64 -102.46 -19.97 0.435 549 -551 3 30.91 -103.07 -20.26 0.435 550 -552 3 31.41 -104.1 -20.51 0.435 551 -553 3 31.72 -105.34 -20.85 0.435 552 -554 3 32.0 -106.18 -21.08 0.435 553 -555 3 32.29 -107.2 -21.48 0.435 554 -556 3 32.31 -107.63 -21.52 0.435 555 -557 3 33.25 -108.64 -21.61 0.435 556 -558 3 33.71 -109.26 -21.66 0.435 557 -559 3 34.2 -109.59 -22.44 0.435 558 -560 3 35.38 -111.01 -22.64 0.435 559 -561 3 35.44 -112.09 -22.75 0.435 560 -562 3 35.47 -112.51 -22.86 0.435 561 -563 3 35.97 -113.55 -22.95 0.435 562 -564 3 36.06 -114.84 -23.09 0.435 563 -565 3 36.54 -115.67 -23.16 0.435 564 -566 3 37.22 -116.05 -23.18 0.435 565 -567 3 37.92 -116.67 -23.23 0.435 566 -568 3 39.1 -118.32 -23.37 0.435 567 -569 3 39.39 -119.36 -23.48 0.435 568 -570 3 39.91 -120.84 -23.62 0.435 569 -571 3 39.96 -121.48 -23.68 0.435 570 -572 3 40.69 -122.7 -24.02 0.435 571 -573 3 40.79 -124.2 -24.24 0.435 572 -574 3 41.3 -125.45 -24.44 0.435 573 -575 3 41.8 -126.29 -24.52 0.435 574 -576 3 42.09 -127.54 -24.79 0.435 575 -577 3 42.35 -128.17 -24.85 0.435 576 -578 3 42.42 -129.24 -25.03 0.435 577 -579 3 42.45 -129.66 -25.07 0.435 578 -580 3 43.15 -130.48 -25.14 0.435 579 -581 3 43.61 -130.88 -25.17 0.435 580 -582 3 43.87 -131.51 -25.23 0.435 581 -583 3 44.12 -131.92 -25.27 0.435 582 -584 3 44.85 -133.18 -25.38 0.435 583 -585 3 45.31 -133.78 -25.43 0.435 584 -586 3 45.82 -134.83 -25.53 0.435 585 -587 3 45.84 -135.26 -25.57 0.435 586 -588 3 46.1 -135.88 -25.63 0.435 587 -589 3 46.35 -136.3 -25.67 0.435 588 -590 3 46.64 -137.58 -25.79 0.435 589 -591 3 46.91 -138.42 -25.87 0.435 590 -592 3 47.02 -139.91 -26.1 0.435 591 -593 3 47.7 -140.51 -26.15 0.435 592 -594 3 48.42 -141.54 -26.24 0.435 593 -595 3 48.9 -142.37 -26.32 0.435 594 -596 3 49.19 -143.43 -26.42 0.435 595 -597 3 49.45 -144.07 -26.48 0.435 596 -598 3 49.71 -144.7 -26.54 0.435 597 -599 3 49.74 -145.33 -26.6 0.435 598 -600 3 50.02 -146.18 -26.68 0.435 599 -601 3 50.28 -146.81 -26.74 0.435 600 -602 3 50.55 -147.66 -26.82 0.435 601 -603 3 50.85 -148.93 -26.95 0.435 602 -604 3 50.89 -149.57 -27.01 0.435 603 -605 3 50.94 -150.43 -27.1 0.435 604 -606 3 51.22 -151.28 -27.18 0.435 605 -607 3 51.96 -152.73 -27.31 0.435 606 -608 3 52.44 -153.56 -27.39 0.435 607 -609 3 52.7 -154.19 -27.45 0.435 608 -610 3 52.96 -154.53 -28.3 0.435 609 -611 3 53.44 -155.08 -28.95 0.435 610 -612 3 53.93 -155.42 -29.58 0.435 611 -613 3 54.39 -155.8 -29.83 0.435 612 -614 3 54.64 -156.21 -29.86 0.435 613 -615 3 55.73 -156.35 -30.0 0.435 614 -616 3 56.48 -157.81 -30.14 0.435 615 -617 3 57.44 -159.26 -30.26 0.435 616 -618 3 57.91 -159.86 -30.31 0.435 617 -619 3 58.41 -160.6 -31.36 0.435 618 -620 3 59.36 -161.6 -31.67 0.435 619 -621 3 59.84 -162.17 -32.1 0.435 620 -622 3 60.09 -162.79 -32.23 0.435 621 -623 3 60.84 -163.75 -33.06 0.435 622 -624 3 61.29 -164.14 -33.17 0.435 623 -625 3 61.54 -164.55 -33.21 0.435 624 -626 3 61.77 -164.49 -33.72 0.435 625 -627 3 62.25 -165.08 -34.07 0.435 626 -628 3 62.49 -165.21 -34.76 0.435 627 -629 3 62.98 -165.78 -35.18 0.435 628 -630 3 63.0 -165.68 -36.15 0.435 629 -631 3 63.47 -166.04 -36.71 0.435 630 -632 3 64.15 -166.41 -36.88 0.435 631 -633 3 64.82 -166.8 -36.9 0.435 632 -634 3 65.28 -166.98 -36.98 0.435 633 -635 3 65.96 -167.37 -37.01 0.435 634 -636 3 66.39 -167.55 -37.01 0.435 635 -637 3 27.14 -99.2 -18.37 0.435 542 -638 3 27.21 -100.26 -18.55 0.435 637 -639 3 28.24 -101.99 -20.21 0.435 638 -640 3 27.9 -103.51 -20.38 0.435 639 -641 3 27.98 -104.79 -20.51 0.435 640 -642 3 28.07 -106.08 -20.71 0.435 641 -643 3 27.29 -107.42 -20.87 0.435 642 -644 3 26.91 -108.29 -20.97 0.435 643 -645 3 26.94 -108.73 -21.01 0.435 644 -646 3 27.19 -109.35 -21.07 0.435 645 -647 3 27.49 -110.36 -21.62 0.435 646 -648 3 27.75 -110.71 -22.25 0.435 647 -649 3 28.02 -111.56 -22.33 0.435 648 -650 3 28.3 -112.62 -22.52 0.435 649 -651 3 28.04 -115.2 -22.79 0.435 650 -652 3 28.11 -116.0 -23.55 0.435 651 -653 3 28.21 -117.48 -23.78 0.435 652 -654 3 28.51 -118.98 -23.92 0.435 653 -655 3 28.81 -120.25 -24.05 0.435 654 -656 3 28.91 -121.69 -24.27 0.435 655 -657 3 28.98 -122.77 -24.38 0.435 656 -658 3 29.26 -123.57 -24.75 0.435 657 -659 3 29.33 -124.38 -25.37 0.435 658 -660 3 28.99 -125.9 -25.68 0.435 659 -661 3 29.28 -126.92 -26.16 0.435 660 -662 3 28.94 -127.97 -26.65 0.435 661 -663 3 28.56 -129.07 -26.78 0.435 662 -664 3 27.79 -130.41 -26.93 0.435 663 -665 3 27.44 -131.93 -27.17 0.435 664 -666 3 27.53 -133.2 -27.38 0.435 665 -667 3 27.18 -134.51 -27.52 0.435 666 -668 3 27.25 -135.59 -27.63 0.435 667 -669 3 27.01 -138.39 -27.93 0.435 668 -670 3 27.07 -139.45 -28.19 0.435 669 -671 3 27.18 -140.92 -28.71 0.435 670 -672 3 27.26 -142.21 -28.84 0.435 671 -673 3 26.88 -143.08 -28.94 0.435 672 -674 3 26.51 -144.17 -29.13 0.435 673 -675 3 26.59 -145.25 -29.24 0.435 674 -676 3 26.21 -146.13 -29.34 0.435 675 -677 3 26.47 -146.72 -29.78 0.435 676 -678 3 26.72 -147.12 -29.97 0.435 677 -679 3 26.98 -147.75 -30.03 0.435 678 -680 3 27.23 -148.38 -30.08 0.435 679 -681 3 27.73 -149.21 -30.23 0.435 680 -682 3 28.21 -150.04 -30.3 0.435 681 -683 3 28.51 -151.08 -30.55 0.435 682 -684 3 28.14 -152.15 -30.91 0.435 683 -685 3 28.21 -152.93 -31.66 0.435 684 -686 3 28.97 -154.57 -32.19 0.435 685 -687 3 29.28 -155.61 -32.59 0.435 686 -688 3 29.34 -156.41 -33.13 0.435 687 -689 3 29.42 -157.69 -33.33 0.435 688 -690 3 29.71 -158.74 -33.51 0.435 689 -691 3 29.77 -159.3 -34.32 0.435 690 -692 3 29.84 -160.11 -34.93 0.435 691 -693 3 29.45 -160.72 -35.53 0.435 692 -694 3 29.52 -161.79 -35.71 0.435 693 -695 3 29.58 -162.64 -35.88 0.435 694 -696 3 29.84 -163.27 -35.94 0.435 695 -697 3 29.49 -164.57 -36.15 0.435 696 -698 3 29.52 -165.0 -36.19 0.435 697 -699 3 29.19 -166.49 -36.74 0.435 698 -700 3 29.29 -167.98 -36.96 0.435 699 -701 3 29.34 -168.57 -37.54 0.435 700 -702 3 29.39 -169.41 -37.71 0.435 701 -703 3 29.47 -170.49 -37.82 0.435 702 -704 3 29.13 -171.75 -38.41 0.435 703 -705 3 29.2 -172.79 -38.74 0.435 704 -706 3 29.93 -174.05 -38.85 0.435 705 -707 3 30.43 -174.58 -39.73 0.435 706 -708 3 30.94 -175.59 -40.12 0.435 707 -709 3 31.18 -176.0 -40.23 0.435 708 -710 3 31.7 -176.7 -41.58 0.435 709 -711 3 31.75 -177.3 -42.09 0.435 710 -712 3 31.99 -177.7 -42.2 0.435 711 -713 3 32.23 -178.12 -42.23 0.435 712 -714 3 32.71 -178.72 -42.52 0.435 713 -715 3 32.76 -179.33 -42.8 0.435 714 -716 3 33.22 -179.51 -42.89 0.435 715 -717 3 33.52 -180.76 -43.31 0.435 716 -718 3 33.99 -181.08 -44.01 0.435 717 -719 3 34.43 -180.99 -44.66 0.435 718 -720 3 35.13 -181.58 -44.86 0.435 719 -721 3 35.6 -181.97 -45.04 0.435 720 -722 3 36.07 -182.57 -45.09 0.435 721 -723 3 37.41 -183.12 -45.34 0.435 722 -724 3 38.31 -183.22 -45.94 0.435 723 -725 3 40.08 -183.75 -46.02 0.435 724 -726 3 41.89 -184.9 -46.48 0.435 725 -727 3 42.37 -185.21 -47.25 0.435 726 -728 3 42.86 -185.8 -47.61 0.435 727 -729 3 43.1 -186.2 -47.86 0.435 728 -730 3 43.58 -186.81 -47.91 0.435 729 -731 3 43.85 -187.35 -48.87 0.435 730 -732 3 44.12 -187.97 -49.01 0.435 731 -733 3 1.19 -26.21 -10.83 0.435 163 -734 3 1.24 -27.08 -10.84 0.435 733 -735 3 1.32 -28.35 -10.97 0.435 734 -736 3 1.4 -29.65 -11.1 0.435 735 -737 3 1.71 -30.91 -11.22 0.435 736 -738 3 1.81 -32.63 -11.4 0.435 737 -739 3 1.92 -34.13 -11.55 0.435 738 -740 3 2.02 -35.84 -11.72 0.435 739 -741 3 2.14 -37.77 -11.92 0.435 740 -742 3 2.24 -39.27 -12.07 0.435 741 -743 3 2.76 -40.53 -12.19 0.435 742 -744 3 3.28 -41.79 -12.31 0.435 743 -745 3 3.62 -43.91 -12.52 0.435 744 -746 3 3.88 -44.56 -12.51 0.435 745 -747 3 4.35 -45.15 -12.78 0.435 746 -748 3 4.64 -45.7 -13.67 0.435 747 -749 3 4.9 -46.25 -14.39 0.435 748 -750 3 5.19 -47.3 -14.56 0.435 749 -751 3 5.25 -48.16 -14.65 0.435 750 -752 3 5.3 -49.01 -14.82 0.435 751 -753 3 4.96 -50.32 -14.96 0.435 752 -754 3 5.0 -50.96 -15.1 0.435 753 -755 3 5.51 -51.96 -15.57 0.435 754 -756 3 5.76 -52.6 -15.63 0.435 755 -757 3 6.23 -52.94 -16.18 0.435 756 -758 3 6.77 -54.62 -16.42 0.435 757 -759 3 7.04 -55.24 -16.55 0.435 758 -760 3 7.32 -56.09 -16.71 0.435 759 -761 3 7.56 -56.47 -16.97 0.435 760 -762 3 8.09 -57.95 -17.11 0.435 761 -763 3 8.14 -58.59 -17.17 0.435 762 -764 3 8.17 -59.22 -17.32 0.435 763 -765 3 7.79 -60.11 -17.42 0.435 764 -766 3 7.82 -60.54 -17.46 0.435 765 -767 3 8.1 -61.34 -17.84 0.435 766 -768 3 8.67 -63.46 -18.12 0.435 767 -769 3 9.0 -65.16 -18.28 0.435 768 -770 3 8.68 -66.89 -18.47 0.435 769 -771 3 8.71 -67.3 -18.74 0.435 770 -772 3 9.19 -67.89 -19.09 0.435 771 -773 3 9.45 -68.23 -19.73 0.435 772 -774 3 9.7 -68.85 -20.01 0.435 773 -775 3 9.97 -69.47 -20.14 0.435 774 -776 3 10.21 -69.89 -20.18 0.435 775 -777 3 10.47 -70.5 -20.39 0.435 776 -778 3 10.77 -71.48 -21.24 0.435 777 -779 3 11.56 -73.57 -21.51 0.435 778 -780 3 11.39 -74.44 -21.68 0.435 779 -781 3 11.94 -76.12 -21.84 0.435 780 -782 3 12.29 -78.01 -22.33 0.435 781 -783 3 12.38 -79.26 -22.83 0.435 782 -784 3 12.45 -80.29 -23.24 0.435 783 -785 3 13.21 -81.96 -23.54 0.435 784 -786 3 13.51 -83.01 -23.64 0.435 785 -787 3 13.78 -83.85 -23.8 0.435 786 -788 3 13.81 -84.28 -23.84 0.435 787 -789 3 14.08 -85.11 -24.0 0.435 788 -790 3 14.35 -85.95 -24.15 0.435 789 -791 3 14.39 -86.34 -24.57 0.435 790 -792 3 14.47 -87.1 -25.55 0.435 791 -793 3 14.49 -87.27 -26.09 0.435 792 -794 3 14.53 -87.91 -26.16 0.435 793 -795 3 14.78 -88.01 -27.15 0.435 794 -796 3 15.04 -88.65 -27.21 0.435 795 -797 3 15.54 -89.68 -27.3 0.435 796 -798 3 16.0 -90.09 -27.26 0.435 797 -799 3 17.33 -90.44 -27.26 0.435 798 -800 3 18.92 -91.08 -28.49 0.435 799 -801 3 19.13 -91.08 -28.42 0.435 800 -802 3 19.37 -91.28 -28.43 0.435 801 -803 3 19.81 -91.46 -28.51 0.435 802 -804 3 20.65 -90.97 -28.52 0.435 803 -805 3 21.09 -90.89 -29.03 0.435 804 -806 3 22.36 -90.13 -29.22 0.435 805 -807 3 23.24 -90.25 -29.66 0.435 806 -808 3 23.94 -90.56 -30.5 0.435 807 -809 3 24.38 -90.74 -30.59 0.435 808 -810 3 24.87 -91.04 -31.52 0.435 809 -811 3 25.55 -91.42 -31.76 0.435 810 -812 3 26.45 -92.0 -31.88 0.435 811 -813 3 26.7 -92.14 -32.41 0.435 812 -814 3 28.04 -92.71 -32.44 0.435 813 -815 3 28.72 -93.09 -32.46 0.435 814 -816 3 29.85 -93.61 -33.09 0.435 815 -817 3 30.55 -94.19 -33.44 0.435 816 -818 3 31.43 -94.34 -33.51 0.435 817 -819 3 31.89 -94.7 -33.84 0.435 818 -820 3 32.12 -94.9 -33.93 0.435 819 -821 3 32.36 -94.84 -34.37 0.435 820 -822 3 32.6 -94.99 -34.98 0.435 821 -823 3 33.06 -95.11 -35.59 0.435 822 -824 3 33.53 -95.45 -36.21 0.435 823 -825 3 34.25 -95.93 -37.45 0.435 824 -826 3 35.62 -96.88 -37.97 0.435 825 -827 3 36.73 -97.22 -38.13 0.435 826 -828 3 37.66 -97.74 -38.92 0.435 827 -829 3 38.37 -98.27 -39.63 0.435 828 -830 3 39.27 -98.33 -40.59 0.435 829 -831 3 39.95 -98.72 -40.54 0.435 830 -832 3 40.17 -98.66 -41.05 0.435 831 -833 3 40.19 -98.55 -42.1 0.435 832 -834 3 40.89 -98.84 -43.1 0.435 833 -835 3 41.56 -98.99 -43.4 0.435 834 -836 3 42.03 -99.13 -43.86 0.435 835 -837 3 42.48 -99.52 -43.95 0.435 836 -838 3 43.15 -99.69 -43.96 0.435 837 -839 3 43.58 -99.88 -43.97 0.435 838 -840 3 44.52 -100.65 -44.41 0.435 839 -841 3 45.17 -100.6 -44.39 0.435 840 -842 3 45.64 -101.22 -44.51 0.435 841 -843 3 46.34 -102.03 -44.58 0.435 842 -844 3 46.82 -102.4 -44.99 0.435 843 -845 3 47.94 -102.94 -45.32 0.435 844 -846 3 48.39 -103.12 -45.4 0.435 845 -847 3 49.28 -103.5 -45.41 0.435 846 -848 3 49.71 -103.47 -45.4 0.435 847 -849 3 50.37 -103.37 -45.91 0.435 848 -850 3 50.8 -103.35 -45.89 0.435 849 -851 3 51.26 -103.25 -46.55 0.435 850 -852 3 51.96 -103.25 -48.34 0.435 851 -853 3 52.4 -103.19 -48.7 0.435 852 -854 3 52.84 -103.11 -49.21 0.435 853 -855 3 53.5 -103.03 -49.49 0.435 854 -856 3 53.96 -102.91 -50.37 0.435 855 -857 3 54.84 -103.02 -50.88 0.435 856 -858 3 55.29 -102.93 -51.47 0.435 857 -859 3 55.96 -102.83 -52.11 0.435 858 -860 3 56.41 -102.96 -52.65 0.435 859 -861 3 57.08 -103.12 -52.72 0.435 860 -862 3 57.3 -103.1 -52.79 0.435 861 -863 3 58.16 -103.01 -53.14 0.435 862 -864 3 59.06 -103.11 -53.73 0.435 863 -865 3 59.5 -103.04 -54.16 0.435 864 -866 3 60.15 -103.0 -54.22 0.435 865 -867 3 60.8 -102.94 -54.35 0.435 866 -868 3 60.83 -102.78 -55.85 0.435 867 -869 3 61.08 -102.65 -57.03 0.435 868 -870 3 61.53 -102.56 -57.61 0.435 869 -871 3 62.21 -102.94 -57.71 0.435 870 -872 3 63.12 -103.5 -58.12 0.435 871 -873 3 64.02 -103.55 -59.09 0.435 872 -874 3 64.91 -103.7 -59.23 0.435 873 -875 3 65.36 -103.87 -59.46 0.435 874 -876 3 66.04 -104.26 -59.49 0.435 875 -877 3 66.71 -104.37 -60.01 0.435 876 -878 3 67.4 -104.7 -60.64 0.435 877 -879 3 68.3 -105.05 -61.02 0.435 878 -880 3 68.53 -105.23 -61.12 0.435 879 -881 3 68.77 -105.43 -61.13 0.435 880 -882 3 0.29 -26.4 -9.51 0.435 162 -883 3 -0.93 -27.34 -9.64 0.435 882 -884 3 -1.38 -27.94 -8.27 0.435 883 -885 3 -1.79 -28.43 -7.88 0.435 884 -886 3 -2.19 -28.86 -8.17 0.435 885 -887 3 -2.59 -29.26 -8.82 0.435 886 -888 3 -2.53 -29.84 -9.48 0.435 887 -889 3 -2.92 -30.23 -10.13 0.435 888 -890 3 -3.32 -30.68 -10.26 0.435 889 -891 3 -3.67 -31.43 -11.7 0.435 890 -892 3 -3.13 -32.61 -12.5 0.435 891 -893 3 -3.1 -33.26 -12.56 0.435 892 -894 3 -3.04 -34.11 -12.72 0.435 893 -895 3 -3.41 -35.0 -12.82 0.435 894 -896 3 -4.65 -36.14 -12.97 0.435 895 -897 3 -5.8 -38.58 -13.25 0.435 896 -898 3 -6.98 -40.36 -13.53 0.435 897 -899 3 -8.19 -41.44 -14.43 0.435 898 -900 3 -9.82 -43.0 -15.01 0.435 899 -901 3 -12.12 -44.19 -15.49 0.435 900 -902 3 -13.3 -45.69 -16.34 0.435 901 -903 3 -14.53 -46.62 -16.62 0.435 902 -904 3 -15.3 -47.89 -17.45 0.435 903 -905 3 -16.54 -48.53 -18.37 0.435 904 -906 3 -18.31 -51.16 -19.29 0.435 905 -907 3 -19.43 -53.77 -19.89 0.435 906 -908 3 -20.98 -56.14 -21.08 0.435 907 -909 3 -22.19 -57.71 -21.34 0.435 908 -910 3 -23.77 -59.88 -22.35 0.435 909 -911 3 -25.82 -61.73 -22.67 0.435 910 -912 3 -27.89 -63.13 -22.87 0.435 911 -913 3 -28.48 -63.75 -23.7 0.435 912 -914 3 -29.05 -65.07 -23.77 0.435 913 -915 3 -29.42 -66.17 -23.89 0.435 914 -916 3 -30.22 -67.06 -24.31 0.435 915 -917 3 -30.58 -67.91 -24.63 0.435 916 -918 3 -31.39 -68.78 -25.11 0.435 917 -919 3 -31.81 -68.74 -25.8 0.435 918 -920 3 -32.15 -69.73 -26.97 0.435 919 -921 3 -33.77 -71.56 -27.2 0.435 920 -922 3 -34.1 -72.55 -28.21 0.435 921 -923 3 -35.7 -74.58 -28.53 0.435 922 -924 3 -36.05 -75.31 -30.12 0.435 923 -925 3 -37.0 -77.52 -30.38 0.435 924 -926 3 -38.2 -79.1 -30.57 0.435 925 -927 3 -40.22 -81.37 -30.85 0.435 926 -928 3 -41.35 -83.44 -32.67 0.435 927 -929 3 -42.99 -84.82 -32.93 0.435 928 -930 3 -42.66 -85.7 -34.74 0.435 929 -931 3 -43.7 -86.41 -34.84 0.435 930 -932 3 -44.9 -87.99 -35.03 0.435 931 -933 3 -45.93 -88.91 -35.08 0.435 932 -934 3 -45.88 -89.77 -35.17 0.435 933 -935 3 -47.05 -91.47 -36.28 0.435 934 -936 3 -48.65 -93.25 -36.87 0.435 935 -937 3 -49.03 -93.83 -37.77 0.435 936 -938 3 -49.36 -95.35 -38.01 0.435 937 -939 3 -50.16 -96.19 -38.87 0.435 938 -940 3 -50.49 -97.43 -39.61 0.435 939 -941 3 -50.44 -97.76 -40.62 0.435 940 -942 3 -50.82 -98.39 -41.08 0.435 941 -943 3 -50.75 -98.91 -42.41 0.435 942 -944 3 -51.12 -99.7 -43.4 0.435 943 -945 3 -51.46 -100.75 -43.89 0.435 944 -946 3 -51.15 -101.45 -45.4 0.435 945 -947 3 1.92 -21.67 -8.0 0.54 156 -948 3 1.3 -21.83 -8.86 0.54 947 -949 3 0.89 -21.74 -10.07 0.54 948 -950 3 -0.54 -22.67 -10.35 0.54 949 -951 3 -1.97 -24.01 -10.9 0.435 950 -952 3 -3.24 -24.51 -11.06 0.435 951 -953 3 -4.44 -25.28 -12.75 0.435 952 -954 3 -6.7 -27.13 -13.06 0.435 953 -955 3 -7.53 -27.79 -13.53 0.435 954 -956 3 -8.55 -28.47 -14.0 0.435 955 -957 3 -9.18 -28.93 -14.06 0.435 956 -958 3 -9.63 -28.48 -14.48 0.435 957 -959 3 -10.24 -28.65 -15.41 0.435 958 -960 3 -10.2 -28.69 -17.08 0.435 959 -961 3 -10.58 -29.36 -17.08 0.435 960 -962 3 -11.2 -29.81 -17.45 0.435 961 -963 3 -12.0 -30.67 -18.01 0.435 962 -964 3 -12.74 -32.12 -19.07 0.435 963 -965 3 -13.54 -32.94 -20.01 0.435 964 -966 3 -13.65 -34.57 -20.18 0.435 965 -967 3 -13.84 -35.31 -19.58 0.325 966 -968 3 -13.6 -35.72 -19.61 0.325 967 -969 3 -13.35 -35.6 -20.73 0.435 968 -970 3 -13.31 -36.24 -20.8 0.435 969 -971 3 -13.28 -36.66 -20.84 0.435 970 -972 3 -13.22 -37.74 -20.95 0.435 971 -973 3 -13.19 -38.15 -21.14 0.435 972 -974 3 -13.16 -38.31 -21.61 0.435 973 -975 3 -13.07 -39.6 -21.74 0.435 974 -976 3 -13.42 -40.89 -22.04 0.435 975 -977 3 -13.34 -41.96 -22.21 0.435 976 -978 3 -13.29 -42.81 -22.38 0.435 977 -979 3 -13.67 -43.69 -22.55 0.435 978 -980 3 -13.6 -44.75 -22.81 0.435 979 -981 3 -13.51 -45.73 -23.74 0.435 980 -982 3 -13.44 -46.79 -24.0 0.435 981 -983 3 -13.38 -47.36 -24.67 0.435 982 -984 3 -13.35 -47.76 -25.01 0.435 983 -985 3 -13.3 -48.35 -25.66 0.435 984 -986 3 -13.03 -48.96 -25.87 0.435 985 -987 3 -12.95 -50.24 -26.0 0.435 986 -988 3 -12.88 -51.04 -26.61 0.435 987 -989 3 -12.82 -52.11 -26.79 0.435 988 -990 3 -12.77 -52.45 -27.66 0.435 989 -991 3 -12.72 -53.09 -27.8 0.435 990 -992 3 -12.64 -53.85 -28.86 0.435 991 -993 3 -12.61 -54.26 -28.97 0.435 992 -994 3 -12.55 -55.09 -29.36 0.435 993 -995 3 -12.3 -55.51 -29.47 0.435 994 -996 3 -12.27 -56.13 -29.61 0.435 995 -997 3 -12.16 -57.63 -29.76 0.435 996 -998 3 -12.51 -58.89 -30.5 0.435 997 -999 3 -12.45 -59.46 -31.25 0.435 998 -1000 3 -12.37 -60.47 -31.87 0.435 999 -1001 3 -12.31 -61.32 -32.04 0.435 1000 -1002 3 -11.96 -62.93 -33.09 0.435 1001 -1003 3 -12.28 -64.64 -33.58 0.435 1002 -1004 3 -12.19 -65.64 -34.43 0.435 1003 -1005 3 -11.93 -65.98 -35.15 0.435 1004 -1006 3 -11.88 -66.83 -35.3 0.435 1005 -1007 3 -11.6 -67.65 -35.68 0.435 1006 -1008 3 -11.56 -68.06 -35.87 0.435 1007 -1009 3 -11.03 -69.24 -36.74 0.435 1008 -1010 3 -11.0 -69.89 -36.8 0.435 1009 -1011 3 -10.93 -70.42 -37.91 0.435 1010 -1012 3 -10.87 -71.27 -38.0 0.435 1011 -1013 3 -11.22 -72.58 -38.23 0.435 1012 -1014 3 -11.59 -73.13 -39.42 0.435 1013 -1015 3 -11.54 -73.78 -39.48 0.435 1014 -1016 3 -11.48 -74.32 -40.44 0.435 1015 -1017 3 -11.43 -74.95 -40.66 0.435 1016 -1018 3 -11.41 -75.38 -40.7 0.435 1017 -1019 3 -11.78 -76.22 -41.25 0.435 1018 -1020 3 -11.5 -77.27 -41.42 0.435 1019 -1021 3 -11.44 -78.09 -41.81 0.435 1020 -1022 3 -11.4 -78.47 -42.38 0.435 1021 -1023 3 -11.34 -78.82 -43.24 0.435 1022 -1024 3 -11.29 -79.42 -43.68 0.435 1023 -1025 3 -11.25 -79.74 -44.62 0.435 1024 -1026 3 -11.21 -80.16 -44.81 0.435 1025 -1027 3 -11.18 -80.55 -45.3 0.435 1026 -1028 3 -11.1 -81.07 -46.55 0.435 1027 -1029 3 -10.85 -81.69 -46.61 0.435 1028 -1030 3 -10.58 -82.24 -47.57 0.435 1029 -1031 3 -10.33 -82.63 -47.75 0.435 1030 -1032 3 -10.06 -82.96 -48.61 0.435 1031 -1033 3 -10.02 -83.33 -49.17 0.435 1032 -1034 3 -9.54 -83.94 -49.31 0.435 1033 -1035 3 -9.26 -84.22 -50.69 0.435 1034 -1036 3 -9.02 -84.63 -50.87 0.435 1035 -1037 3 -7.86 -85.83 -51.12 0.435 1036 -1038 3 -6.91 -86.76 -52.02 0.435 1037 -1039 3 -6.65 -87.16 -52.21 0.435 1038 -1040 3 -5.51 -87.86 -53.16 0.435 1039 -1041 3 -5.04 -88.02 -53.38 0.435 1040 -1042 3 -4.78 -88.32 -54.54 0.435 1041 -1043 3 -3.87 -88.91 -54.65 0.435 1042 -1044 3 -2.92 -89.61 -55.69 0.435 1043 -1045 3 -1.81 -90.18 -55.87 0.435 1044 -1046 3 -1.36 -90.36 -55.88 0.435 1045 -1047 3 -0.47 -90.73 -55.97 0.435 1046 -1048 3 -0.04 -90.7 -55.96 0.435 1047 -1049 3 -14.34 -33.86 -20.12 0.435 966 -1050 3 -15.59 -34.79 -20.32 0.435 1049 -1051 3 -17.03 -35.45 -21.18 0.435 1050 -1052 3 -17.43 -36.09 -21.4 0.435 1051 -1053 3 -19.06 -37.71 -21.61 0.435 1052 -1054 3 -19.44 -38.37 -21.77 0.435 1053 -1055 3 -18.95 -39.16 -22.29 0.435 1054 -1056 3 -18.89 -39.68 -23.47 0.435 1055 -1057 3 -19.69 -40.57 -23.73 0.435 1056 -1058 3 -20.74 -41.07 -23.81 0.435 1057 -1059 3 -22.16 -42.12 -25.08 0.435 1058 -1060 3 -23.17 -42.97 -25.79 0.435 1059 -1061 3 -23.96 -43.76 -27.03 0.435 1060 -1062 3 -24.35 -44.14 -27.83 0.435 1061 -1063 3 -25.12 -44.94 -29.14 0.435 1062 -1064 3 -25.92 -45.78 -29.85 0.435 1063 -1065 3 -26.67 -47.29 -30.47 0.435 1064 -1066 3 -27.48 -47.59 -32.17 0.435 1065 -1067 3 -28.26 -48.4 -33.33 0.435 1066 -1068 3 -30.44 -50.98 -35.01 0.435 1067 -1069 3 -31.67 -51.85 -35.81 0.435 1068 -1070 3 -33.3 -53.45 -36.08 0.435 1069 -1071 3 -34.3 -54.0 -37.67 0.435 1070 -1072 3 -35.92 -55.57 -38.25 0.435 1071 -1073 3 -36.72 -56.69 -38.46 0.435 1072 -1074 3 -37.27 -57.67 -39.85 0.435 1073 -1075 3 -38.9 -59.01 -40.48 0.435 1074 -1076 3 -39.67 -60.25 -41.53 0.435 1075 -1077 3 -40.46 -61.34 -41.97 0.435 1076 -1078 3 -41.65 -62.59 -43.26 0.435 1077 -1079 3 -41.78 -63.34 -44.54 0.435 1078 -1080 3 -42.79 -64.47 -44.76 0.435 1079 -1081 3 -43.48 -66.53 -46.35 0.435 1080 -1082 3 -44.25 -68.08 -46.53 0.435 1081 -1083 3 -45.19 -69.45 -46.69 0.435 1082 -1084 3 -46.21 -69.76 -48.41 0.11 1083 -1085 3 -46.16 -70.05 -49.79 0.435 1084 -1086 3 -46.52 -70.41 -50.81 0.435 1085 -1087 3 -47.32 -71.5 -51.32 0.435 1086 -1088 3 -48.1 -72.31 -52.32 0.435 1087 -1089 3 -48.87 -73.56 -53.31 0.435 1088 -1090 3 -49.65 -74.65 -53.81 0.435 1089 -1091 3 -50.69 -75.31 -54.35 0.435 1090 -1092 3 -51.51 -75.99 -54.68 0.435 1091 -1093 3 -53.16 -76.87 -55.56 0.435 1092 -1094 3 -54.83 -77.55 -56.34 0.435 1093 -1095 3 -56.47 -78.89 -57.05 0.435 1094 -1096 3 -56.41 -79.43 -58.15 0.435 1095 -1097 3 -57.64 -80.35 -58.36 0.435 1096 -1098 3 -58.43 -81.42 -59.01 0.435 1097 -1099 3 -58.77 -82.73 -59.24 0.435 1098 -1100 3 -59.17 -83.39 -59.31 0.435 1099 -1101 3 -59.11 -84.02 -59.6 0.435 1100 -1102 3 -59.49 -84.35 -60.78 0.435 1101 -1103 3 -59.87 -85.44 -60.97 0.435 1102 -1104 3 -59.79 -85.95 -62.31 0.435 1103 -1105 3 -45.01 -69.81 -47.02 0.435 1083 -1106 3 -45.76 -71.04 -48.22 0.435 1105 -1107 3 -46.57 -71.93 -48.56 0.435 1106 -1108 3 -46.9 -73.45 -48.8 0.435 1107 -1109 3 -46.61 -73.94 -50.2 0.435 1108 -1110 3 -47.8 -75.72 -50.57 0.435 1109 -1111 3 -48.97 -77.73 -50.72 0.435 1110 -1112 3 -49.89 -80.15 -50.99 0.435 1111 -1113 3 -51.1 -81.45 -51.84 0.435 1112 -1114 3 -51.44 -82.51 -52.4 0.435 1113 -1115 3 -52.65 -84.08 -52.59 0.435 1114 -1116 3 -52.6 -84.93 -52.76 0.435 1115 -1117 3 -53.8 -86.26 -53.3 0.435 1116 -1118 3 -54.76 -87.72 -54.46 0.435 1117 -1119 3 -55.72 -89.71 -54.69 0.435 1118 -1120 3 -56.13 -89.89 -54.87 0.435 1119 -1121 3 -56.75 -90.58 -54.95 0.435 1120 -1122 3 -56.64 -91.74 -56.2 0.435 1121 -1123 3 -57.01 -92.61 -56.53 0.435 1122 -1124 3 -56.95 -93.45 -56.76 0.435 1123 -1125 3 -56.89 -94.29 -57.07 0.435 1124 -1126 3 -56.82 -95.07 -57.83 0.435 1125 -1127 3 -57.44 -95.54 -57.96 0.435 1126 -1128 3 -58.24 -96.66 -58.1 0.435 1127 -1129 3 -59.06 -97.34 -58.27 0.435 1128 -1130 3 -60.27 -98.7 -58.51 0.435 1129 -1131 3 -60.64 -99.57 -58.69 0.435 1130 -1132 3 -61.42 -100.9 -59.07 0.435 1131 -1133 3 -61.78 -101.7 -59.91 0.435 1132 -1134 3 -62.57 -102.81 -60.12 0.435 1133 -1135 3 -63.38 -103.94 -60.25 0.435 1134 -1136 3 -63.29 -105.17 -60.91 0.435 1135 -1137 3 -63.2 -106.17 -61.69 0.435 1136 -1138 3 -63.16 -106.55 -62.18 0.435 1137 -1139 3 -63.11 -107.19 -62.32 0.435 1138 -1140 3 -62.85 -107.82 -62.45 0.435 1139 -1141 3 -63.59 -109.78 -62.75 0.435 1140 -1142 3 -63.96 -110.63 -63.15 0.435 1141 -1143 3 -63.9 -111.46 -63.61 0.435 1142 -1144 3 -63.85 -112.04 -64.27 0.435 1143 -1145 3 -63.82 -112.46 -64.31 0.435 1144 -1146 3 -63.79 -112.88 -64.44 0.435 1145 -1147 3 -63.51 -113.44 -65.16 0.435 1146 -1148 3 -63.43 -114.71 -65.44 0.435 1147 -1149 3 -64.59 -116.93 -65.78 0.435 1148 -1150 3 -64.94 -118.24 -65.92 0.435 1149 -1151 3 -64.89 -119.09 -66.08 0.435 1150 -1152 3 -64.81 -120.12 -66.57 0.435 1151 -1153 3 -64.75 -120.98 -66.65 0.435 1152 -1154 3 -64.7 -121.56 -67.32 0.435 1153 -1155 3 -64.4 -122.83 -67.51 0.435 1154 -1156 3 -64.37 -123.23 -67.77 0.435 1155 -1157 3 -64.09 -124.05 -68.0 0.435 1156 -1158 3 -63.83 -124.69 -68.06 0.435 1157 -1159 3 -63.54 -125.73 -68.31 0.435 1158 -1160 3 -62.83 -126.51 -68.76 0.435 1159 -1161 3 -62.31 -127.49 -69.52 0.435 1160 -1162 3 -62.06 -127.88 -69.71 0.435 1161 -1163 3 -61.59 -128.49 -69.91 0.435 1162 -1164 3 -61.56 -128.88 -70.25 0.435 1163 -1165 3 -61.53 -129.3 -70.37 0.435 1164 -1166 3 -61.26 -129.65 -71.08 0.435 1165 -1167 3 -60.79 -129.98 -71.85 0.435 1166 -1168 3 -60.97 -130.41 -71.9 0.435 1167 -1169 3 -60.92 -130.76 -72.77 0.435 1168 -1170 3 -61.77 -131.24 -72.84 0.435 1169 -1171 3 -61.75 -131.45 -72.93 0.435 1170 -1172 3 -62.09 -131.96 -73.08 0.435 1171 -1173 3 -61.83 -132.58 -73.2 0.435 1172 -1174 3 -61.78 -132.89 -74.36 0.435 1173 -1175 3 -61.51 -133.23 -75.07 0.435 1174 -1176 3 -61.46 -133.78 -76.04 0.435 1175 -1177 3 -61.38 -134.56 -76.87 0.435 1176 -1178 3 -61.11 -134.86 -77.95 0.435 1177 -1179 3 -60.64 -135.46 -78.22 0.435 1178 -1180 3 -60.37 -136.08 -78.36 0.435 1179 -1181 3 -60.14 -136.5 -78.4 0.435 1180 -1182 3 -60.1 -136.91 -78.66 0.435 1181 -1183 3 -59.84 -137.53 -78.8 0.435 1182 -1184 3 8.32 -12.11 -2.64 1.085 8 -1185 3 8.51 -12.22 -1.51 1.085 1184 -1186 3 9.85 -13.04 -1.04 0.65 1185 -1187 3 10.53 -13.65 -1.09 0.65 1186 -1188 3 11.44 -14.25 -0.98 0.65 1187 -1189 3 11.86 -14.57 0.27 0.65 1188 -1190 3 12.51 -14.78 0.57 0.65 1189 -1191 3 12.93 -15.07 1.52 0.65 1190 -1192 3 13.59 -15.27 1.89 0.65 1191 -1193 3 14.04 -15.97 2.58 0.65 1192 -1194 3 14.75 -16.78 2.52 0.65 1193 -1195 3 14.77 -17.22 2.55 0.65 1194 -1196 3 14.87 -17.58 2.52 0.65 1195 -1197 3 14.42 -16.6 1.17 0.65 1196 -1198 3 13.99 -16.86 1.28 0.65 1197 -1199 3 14.06 -17.12 -0.31 0.65 1198 -1200 3 14.3 -17.32 -0.4 0.54 1199 -1201 3 14.16 -18.62 -0.53 0.54 1200 -1202 3 14.22 -19.47 -0.62 0.54 1201 -1203 3 14.25 -20.12 -0.69 0.54 1202 -1204 3 13.88 -21.0 -0.79 0.54 1203 -1205 3 13.07 -21.92 -0.83 0.54 1204 -1206 3 12.23 -22.61 -0.92 0.54 1205 -1207 3 11.87 -23.19 -1.9 0.54 1206 -1208 3 11.94 -23.7 -3.22 0.54 1207 -1209 3 11.56 -24.09 -3.96 0.54 1208 -1210 3 11.64 -24.84 -5.01 0.54 1209 -1211 3 11.7 -25.65 -5.54 0.54 1210 -1212 3 11.34 -26.71 -6.11 0.54 1211 -1213 3 10.13 -28.06 -6.35 0.54 1212 -1214 3 10.21 -29.06 -7.21 0.54 1213 -1215 3 9.41 -29.7 -7.83 0.54 1214 -1216 3 9.03 -30.28 -8.72 0.54 1215 -1217 3 9.07 -30.62 -9.59 0.54 1216 -1218 3 9.11 -31.01 -10.08 0.54 1217 -1219 3 7.78 -33.11 -11.61 0.54 1218 -1220 3 7.79 -33.32 -11.63 0.54 1219 -1221 3 7.81 -34.05 -10.88 0.54 1220 -1222 3 7.39 -34.0 -11.64 0.54 1221 -1223 3 6.59 -34.35 -12.97 0.54 1222 -1224 3 6.2 -34.68 -14.22 0.54 1223 -1225 3 6.28 -35.45 -15.2 0.54 1224 -1226 3 6.78 -35.32 -24.67 0.54 1225 -1227 3 7.25 -35.94 -24.72 0.54 1226 -1228 3 7.55 -37.21 -24.85 0.54 1227 -1229 3 7.16 -37.88 -24.93 0.54 1228 -1230 3 7.22 -37.9 -26.74 0.54 1229 -1231 3 7.25 -38.03 -27.66 0.54 1230 -1232 3 7.08 -38.69 -27.73 0.54 1231 -1233 3 6.89 -39.1 -28.08 0.435 1232 -1234 3 6.09 -40.0 -28.19 0.435 1233 -1235 3 5.95 -41.32 -28.25 0.435 1234 -1236 3 5.55 -41.72 -28.68 0.435 1235 -1237 3 5.18 -42.83 -28.8 0.435 1236 -1238 3 4.82 -43.41 -29.7 0.435 1237 -1239 3 4.46 -44.23 -30.4 0.435 1238 -1240 3 4.51 -44.55 -31.55 0.435 1239 -1241 3 4.56 -44.87 -32.64 0.435 1240 -1242 3 4.62 -45.42 -33.6 0.435 1241 -1243 3 4.24 -46.27 -33.93 0.435 1242 -1244 3 4.28 -46.64 -34.57 0.435 1243 -1245 3 3.95 -47.64 -35.66 0.435 1244 -1246 3 4.01 -48.7 -35.85 0.435 1245 -1247 3 4.06 -49.04 -36.77 0.435 1246 -1248 3 4.12 -49.62 -37.44 0.435 1247 -1249 3 4.19 -50.43 -37.9 0.435 1248 -1250 3 4.24 -51.06 -38.12 0.54 1249 -1251 3 4.29 -51.93 -38.12 0.54 1250 -1252 3 4.3 -52.12 -38.44 0.54 1251 -1253 3 3.94 -52.18 -40.27 0.54 1252 -1254 3 3.99 -52.71 -41.31 0.54 1253 -1255 3 4.07 -53.48 -42.28 0.54 1254 -1256 3 3.73 -54.17 -44.17 0.54 1255 -1257 3 3.41 -55.12 -45.79 0.54 1256 -1258 3 3.08 -56.09 -47.18 0.54 1257 -1259 3 3.13 -56.43 -48.04 0.54 1258 -1260 3 3.21 -56.88 -49.96 0.54 1259 -1261 3 3.27 -56.89 -51.93 0.54 1260 -1262 3 3.32 -57.2 -53.09 0.54 1261 -1263 3 2.93 -57.81 -53.77 0.54 1262 -1264 3 2.57 -58.38 -54.88 0.54 1263 -1265 3 2.23 -59.39 -55.83 0.54 1264 -1266 3 2.28 -60.24 -55.99 0.54 1265 -1267 3 2.37 -60.94 -57.49 0.54 1266 -1268 3 2.65 -61.23 -58.88 0.54 1267 -1269 3 2.71 -61.48 -60.63 0.54 1268 -1270 3 2.81 -62.14 -62.66 0.54 1269 -1271 3 2.44 -62.46 -63.83 0.54 1270 -1272 3 2.5 -63.31 -64.14 0.54 1271 -1273 3 2.53 -63.73 -64.19 0.54 1272 -1274 3 2.18 -64.23 -65.89 0.54 1273 -1275 3 2.23 -65.09 -65.98 0.54 1274 -1276 3 2.71 -65.71 -66.03 0.54 1275 -1277 3 2.98 -66.26 -66.77 0.54 1276 -1278 3 3.05 -66.78 -68.1 0.54 1277 -1279 3 3.09 -67.43 -68.16 0.54 1278 -1280 3 3.14 -68.02 -68.53 0.54 1279 -1281 3 3.21 -68.84 -69.06 0.54 1280 -1282 3 2.8 -69.29 -69.2 0.54 1281 -1283 3 2.41 -69.69 -69.77 0.54 1282 -1284 3 2.04 -70.31 -70.38 0.54 1283 -1285 3 2.09 -70.87 -71.26 0.54 1284 -1286 3 2.14 -71.19 -72.35 0.54 1285 -1287 3 2.21 -71.98 -72.95 0.54 1286 -1288 3 1.44 -73.0 -74.13 0.54 1287 -1289 3 1.5 -73.26 -75.82 0.54 1288 -1290 3 1.59 -74.0 -77.03 0.54 1289 -1291 3 1.22 -74.57 -78.14 0.54 1290 -1292 3 1.26 -75.21 -78.21 0.54 1291 -1293 3 0.89 -75.54 -79.38 0.54 1292 -1294 3 0.95 -76.11 -80.2 0.54 1293 -1295 3 0.54 -76.56 -80.32 0.54 1294 -1296 3 0.61 -77.6 -80.73 0.54 1295 -1297 3 0.67 -78.19 -81.39 0.54 1296 -1298 3 0.71 -78.8 -81.69 0.54 1297 -1299 3 0.76 -79.44 -81.82 0.54 1298 -1300 3 1.02 -80.06 -81.96 0.54 1299 -1301 3 1.5 -80.63 -82.53 0.54 1300 -1302 3 1.78 -81.47 -82.61 0.54 1301 -1303 3 1.87 -82.96 -82.84 0.54 1302 -1304 3 2.12 -83.37 -82.88 0.54 1303 -1305 3 2.61 -84.17 -83.25 0.54 1304 -1306 3 3.32 -84.96 -83.62 0.54 1305 -1307 3 4.04 -85.73 -84.13 0.54 1306 -1308 3 4.73 -86.33 -84.25 0.54 1307 -1309 3 6.52 -87.29 -84.31 0.54 1308 -1310 3 7.42 -87.67 -84.33 0.54 1309 -1311 3 8.31 -88.03 -84.42 0.54 1310 -1312 3 9.43 -88.61 -84.46 0.54 1311 -1313 3 10.76 -88.96 -84.46 0.54 1312 -1314 3 11.42 -89.13 -84.46 0.54 1313 -1315 3 12.28 -89.07 -84.44 0.54 1314 -1316 3 12.9 -88.61 -84.37 0.54 1315 -1317 3 13.54 -88.58 -84.36 0.54 1316 -1318 3 7.3 -38.67 -27.79 0.54 1232 -1319 3 8.0 -39.48 -27.86 0.54 1318 -1320 3 9.16 -40.13 -29.26 0.54 1319 -1321 3 9.84 -40.51 -29.36 0.54 1320 -1322 3 10.54 -40.82 -30.27 0.54 1321 -1323 3 11.03 -41.62 -30.57 0.54 1322 -1324 3 11.98 -42.31 -31.68 0.54 1323 -1325 3 12.23 -42.17 -32.93 0.54 1324 -1326 3 12.91 -42.52 -33.41 0.54 1325 -1327 3 13.55 -42.48 -33.39 0.54 1326 -1328 3 14.65 -42.34 -34.1 0.54 1327 -1329 3 15.58 -43.13 -34.24 0.54 1328 -1330 3 16.28 -43.39 -35.45 0.54 1329 -1331 3 16.74 -43.79 -35.48 0.54 1330 -1332 3 17.21 -44.14 -36.04 0.54 1331 -1333 3 17.9 -44.42 -37.11 0.54 1332 -1334 3 18.62 -45.2 -37.62 0.54 1333 -1335 3 18.89 -45.26 -38.9 0.54 1334 -1336 3 19.39 -46.04 -39.57 0.54 1335 -1337 3 20.11 -46.46 -41.26 0.54 1336 -1338 3 21.29 -47.68 -41.43 0.54 1337 -1339 3 21.78 -47.92 -43.03 0.54 1338 -1340 3 22.25 -48.52 -43.23 0.54 1339 -1341 3 22.99 -49.5 -43.84 0.54 1340 -1342 3 23.7 -50.24 -44.58 0.54 1341 -1343 3 24.4 -50.84 -44.78 0.54 1342 -1344 3 25.1 -51.65 -44.91 0.54 1343 -1345 3 26.05 -52.61 -45.59 0.54 1344 -1346 3 27.18 -53.39 -45.65 0.54 1345 -1347 3 27.89 -54.21 -45.72 0.54 1346 -1348 3 28.39 -54.96 -46.62 0.54 1347 -1349 3 29.33 -55.97 -46.77 0.54 1348 -1350 3 30.26 -56.99 -46.85 0.54 1349 -1351 3 31.22 -57.92 -47.83 0.54 1350 -1352 3 31.7 -58.74 -47.97 0.54 1351 -1353 3 31.97 -59.37 -48.03 0.54 1352 -1354 3 32.25 -60.15 -48.64 0.54 1353 -1355 3 32.5 -60.52 -49.13 0.54 1354 -1356 3 32.99 -61.35 -49.27 0.54 1355 -1357 3 33.25 -61.74 -49.61 0.54 1356 -1358 3 33.49 -62.11 -50.02 0.54 1357 -1359 3 33.52 -62.53 -50.13 0.54 1358 -1360 3 33.79 -63.37 -50.3 0.54 1359 -1361 3 33.81 -63.54 -50.68 0.54 1360 -1362 3 15.23 -17.86 2.72 0.65 1196 -1363 3 15.26 -18.31 2.82 0.65 1362 -1364 3 15.74 -18.94 2.92 0.65 1363 -1365 3 16.41 -19.35 3.12 0.65 1364 -1366 3 16.84 -19.57 3.41 0.65 1365 -1367 3 18.16 -20.22 4.13 0.65 1366 -1368 3 18.83 -20.39 4.13 0.65 1367 -1369 3 19.7 -20.81 4.56 0.65 1368 -1370 3 21.0 -21.01 5.17 0.65 1369 -1371 3 22.34 -21.59 5.21 0.65 1370 -1372 3 23.65 -21.71 5.23 0.65 1371 -1373 3 24.79 -22.51 5.18 0.65 1372 -1374 3 25.71 -23.3 5.12 0.65 1373 -1375 3 26.39 -23.92 5.07 0.65 1374 -1376 3 27.29 -24.3 5.13 0.65 1375 -1377 3 28.58 -24.22 5.17 0.65 1376 -1378 3 29.47 -24.37 5.18 0.65 1377 -1379 3 30.55 -24.53 5.19 0.65 1378 -1380 3 31.88 -24.88 5.18 0.65 1379 -1381 3 32.55 -25.26 5.16 0.65 1380 -1382 3 33.22 -25.66 5.28 0.65 1381 -1383 3 33.86 -25.94 7.07 0.435 1382 -1384 3 34.52 -26.12 7.15 0.435 1383 -1385 3 36.08 -26.67 7.13 0.435 1384 -1386 3 36.29 -26.78 7.12 0.435 1385 -1387 3 37.03 -27.74 6.43 0.11 1386 -1388 3 38.98 -27.86 6.69 0.435 1387 -1389 3 41.2 -28.59 6.67 0.435 1388 -1390 3 43.79 -28.43 6.74 0.435 1389 -1391 3 45.55 -28.75 6.75 0.435 1390 -1392 3 47.55 -29.5 6.72 0.435 1391 -1393 3 49.35 -30.68 6.64 0.435 1392 -1394 3 50.06 -31.49 6.58 0.435 1393 -1395 3 51.41 -32.28 6.53 0.435 1394 -1396 3 53.25 -33.34 5.4 0.435 1395 -1397 3 55.69 -34.04 5.32 0.435 1396 -1398 3 56.61 -34.3 4.11 0.435 1397 -1399 3 58.36 -34.38 3.92 0.435 1398 -1400 3 59.27 -34.97 3.8 0.435 1399 -1401 3 59.67 -35.31 5.2 0.435 1400 -1402 3 60.55 -35.51 5.65 0.435 1401 -1403 3 60.99 -35.99 6.37 0.435 1402 -1404 3 62.29 -36.17 6.91 0.435 1403 -1405 3 62.7 -36.22 7.67 0.435 1404 -1406 3 63.38 -36.86 7.84 0.435 1405 -1407 3 65.15 -37.18 7.85 0.435 1406 -1408 3 66.24 -37.56 8.07 0.435 1407 -1409 3 68.62 -37.67 8.57 0.435 1408 -1410 3 71.21 -37.53 8.79 0.435 1409 -1411 3 73.12 -37.0 8.96 0.435 1410 -1412 3 74.0 -37.17 9.05 0.435 1411 -1413 3 75.1 -37.57 9.41 0.435 1412 -1414 3 76.23 -38.4 9.8 0.435 1413 -1415 3 76.9 -39.1 10.73 0.435 1414 -1416 3 77.35 -39.53 10.98 0.435 1415 -1417 3 78.68 -40.13 11.26 0.435 1416 -1418 3 80.02 -40.73 11.53 0.435 1417 -1419 3 81.14 -41.53 11.55 0.435 1418 -1420 3 81.83 -42.14 11.66 0.435 1419 -1421 3 83.41 -43.14 11.66 0.435 1420 -1422 3 84.99 -44.12 11.6 0.435 1421 -1423 3 85.89 -44.71 11.64 0.435 1422 -1424 3 86.81 -45.55 11.94 0.435 1423 -1425 3 87.91 -45.93 12.01 0.435 1424 -1426 3 88.35 -46.11 12.0 0.435 1425 -1427 3 90.36 -46.86 12.04 0.435 1426 -1428 3 91.23 -46.81 12.07 0.435 1427 -1429 3 92.09 -46.76 12.09 0.435 1428 -1430 3 92.71 -46.29 12.16 0.435 1429 -1431 3 93.33 -45.81 12.22 0.435 1430 -1432 3 94.6 -45.31 12.3 0.435 1431 -1433 3 97.19 -45.15 12.38 0.435 1432 -1434 3 98.73 -45.48 12.38 0.435 1433 -1435 3 99.88 -46.28 12.33 0.435 1434 -1436 3 101.02 -47.31 12.4 0.435 1435 -1437 3 101.92 -47.88 12.36 0.435 1436 -1438 3 102.84 -48.7 12.38 0.435 1437 -1439 3 103.49 -48.88 12.38 0.435 1438 -1440 3 104.82 -49.22 12.37 0.435 1439 -1441 3 105.45 -49.28 13.29 0.435 1440 -1442 3 106.54 -49.46 13.59 0.435 1441 -1443 3 106.97 -49.69 13.95 0.435 1442 -1444 3 108.06 -49.88 14.41 0.435 1443 -1445 3 108.76 -50.45 14.0 0.435 1444 -1446 3 109.22 -50.33 13.12 0.435 1445 -1447 3 110.35 -50.57 11.98 0.435 1446 -1448 3 110.39 -50.38 10.2 0.435 1447 -1449 3 111.7 -50.24 9.64 0.435 1448 -1450 3 114.97 -50.22 9.27 0.435 1449 -1451 3 116.93 -50.28 9.01 0.435 1450 -1452 3 118.26 -50.1 8.07 0.435 1451 -1453 3 119.16 -50.45 7.84 0.435 1452 -1454 3 120.53 -51.12 6.66 0.435 1453 -1455 3 121.21 -51.49 6.42 0.435 1454 -1456 3 36.99 -27.48 7.06 0.435 1386 -1457 3 39.19 -28.0 7.13 0.435 1456 -1458 3 40.11 -28.02 5.79 0.435 1457 -1459 3 41.83 -27.92 5.93 0.435 1458 -1460 3 43.56 -27.82 5.98 0.435 1459 -1461 3 45.3 -27.94 6.08 0.435 1460 -1462 3 46.2 -28.3 6.06 0.435 1461 -1463 3 47.24 -27.81 6.07 0.435 1462 -1464 3 48.79 -28.14 6.07 0.435 1463 -1465 3 50.79 -28.87 6.04 0.435 1464 -1466 3 51.7 -29.47 6.0 0.435 1465 -1467 3 52.63 -30.48 5.84 0.435 1466 -1468 3 53.59 -31.93 5.71 0.435 1467 -1469 3 54.56 -33.37 5.58 0.435 1468 -1470 3 55.27 -34.4 5.49 0.435 1469 -1471 3 56.68 -36.05 5.36 0.435 1470 -1472 3 56.93 -36.67 5.3 0.435 1471 -1473 3 57.61 -37.03 4.83 0.11 1472 -1474 3 58.07 -37.48 5.39 0.435 1473 -1475 3 58.71 -37.46 5.56 0.435 1474 -1476 3 59.14 -37.43 5.57 0.435 1475 -1477 3 59.6 -37.83 5.47 0.435 1476 -1478 3 60.07 -38.23 5.44 0.435 1477 -1479 3 60.75 -38.3 4.47 0.435 1478 -1480 3 61.01 -38.64 3.76 0.435 1479 -1481 3 61.69 -38.7 2.57 0.435 1480 -1482 3 62.17 -39.07 2.17 0.435 1481 -1483 3 62.41 -39.2 1.55 0.435 1482 -1484 3 63.11 -39.73 0.83 0.435 1483 -1485 3 63.59 -40.08 0.28 0.435 1484 -1486 3 64.51 -40.57 -0.79 0.435 1485 -1487 3 65.22 -41.38 -0.86 0.435 1486 -1488 3 65.7 -41.71 -1.55 0.435 1487 -1489 3 65.1 -42.41 -1.57 0.435 1488 -1490 3 65.75 -42.58 -1.57 0.435 1489 -1491 3 66.87 -43.16 -1.52 0.435 1490 -1492 3 68.43 -43.72 -1.55 0.435 1491 -1493 3 69.09 -43.89 -1.55 0.435 1492 -1494 3 69.53 -44.07 -1.64 0.435 1493 -1495 3 70.44 -44.4 -2.1 0.435 1494 -1496 3 70.68 -44.27 -3.14 0.435 1495 -1497 3 71.39 -44.77 -4.3 0.435 1496 -1498 3 72.08 -44.86 -5.13 0.435 1497 -1499 3 72.74 -44.74 -5.92 0.435 1498 -1500 3 73.22 -44.81 -6.9 0.435 1499 -1501 3 73.93 -45.61 -7.34 0.435 1500 -1502 3 74.66 -46.32 -8.31 0.435 1501 -1503 3 75.14 -47.14 -8.53 0.435 1502 -1504 3 75.62 -47.72 -8.95 0.435 1503 -1505 3 76.31 -48.32 -9.0 0.435 1504 -1506 3 76.83 -48.8 -10.39 0.435 1505 -1507 3 77.29 -49.4 -10.52 0.435 1506 -1508 3 77.76 -50.02 -10.58 0.435 1507 -1509 3 78.48 -50.78 -11.24 0.435 1508 -1510 3 78.76 -51.05 -12.61 0.435 1509 -1511 3 79.23 -51.67 -12.66 0.435 1510 -1512 3 79.93 -51.94 -13.81 0.435 1511 -1513 3 80.39 -52.13 -13.89 0.435 1512 -1514 3 81.11 -52.88 -14.55 0.435 1513 -1515 3 81.8 -53.47 -14.75 0.435 1514 -1516 3 82.89 -53.59 -14.97 0.435 1515 -1517 3 83.35 -53.98 -15.22 0.435 1516 -1518 3 84.06 -54.24 -16.43 0.435 1517 -1519 3 84.98 -54.79 -16.92 0.435 1518 -1520 3 85.42 -54.7 -17.44 0.435 1519 -1521 3 85.9 -54.75 -18.78 0.435 1520 -1522 3 86.41 -55.49 -19.75 0.435 1521 -1523 3 86.91 -56.0 -20.84 0.435 1522 -1524 3 86.98 -56.5 -22.18 0.435 1523 -1525 3 87.23 -56.89 -22.52 0.435 1524 -1526 3 87.26 -57.06 -23.06 0.435 1525 -1527 3 87.75 -57.85 -23.51 0.435 1526 -1528 3 88.01 -58.19 -24.21 0.435 1527 -1529 3 88.48 -58.57 -24.46 0.435 1528 -1530 3 88.5 -58.7 -25.31 0.435 1529 -1531 3 88.77 -59.33 -25.37 0.435 1530 -1532 3 89.26 -59.61 -26.59 0.435 1531 -1533 3 89.75 -59.87 -27.96 0.435 1532 -1534 3 90.42 -60.23 -28.21 0.435 1533 -1535 3 91.17 -61.15 -29.42 0.435 1534 -1536 3 91.68 -62.15 -29.96 0.435 1535 -1537 3 92.39 -62.96 -30.03 0.435 1536 -1538 3 92.39 -62.95 -30.17 0.435 1537 -1539 3 92.4 -62.89 -30.77 0.435 1538 -1540 3 92.44 -63.28 -31.19 0.435 1539 -1541 3 92.48 -63.67 -31.6 0.435 1540 -1542 3 92.71 -63.56 -32.57 0.435 1541 -1543 3 92.94 -63.74 -32.73 0.435 1542 -1544 3 93.2 -63.88 -33.5 0.435 1543 -1545 3 93.43 -64.01 -34.11 0.435 1544 -1546 3 93.9 -64.14 -34.71 0.435 1545 -1547 3 94.13 -64.27 -35.24 0.435 1546 -1548 3 94.6 -64.44 -35.55 0.435 1547 -1549 3 94.81 -64.42 -35.63 0.435 1548 -1550 3 95.05 -64.57 -36.16 0.435 1549 -1551 3 95.95 -64.93 -36.33 0.435 1550 -1552 3 96.39 -65.11 -36.33 0.435 1551 -1553 3 96.86 -65.23 -37.09 0.435 1552 -1554 3 97.54 -65.56 -37.56 0.435 1553 -1555 3 98.22 -65.7 -38.01 0.435 1554 -1556 3 98.68 -65.8 -38.83 0.435 1555 -1557 3 99.39 -66.07 -39.98 0.435 1556 -1558 3 100.51 -66.64 -40.08 0.435 1557 -1559 3 100.73 -66.62 -40.16 0.435 1558 -1560 3 100.97 -66.75 -40.84 0.435 1559 -1561 3 101.22 -66.64 -41.88 0.435 1560 -1562 3 101.88 -66.51 -42.67 0.435 1561 -1563 3 102.11 -66.42 -43.41 0.435 1562 -1564 3 102.98 -66.35 -43.54 0.435 1563 -1565 3 103.64 -66.26 -44.04 0.435 1564 -1566 3 104.3 -66.18 -44.47 0.435 1565 -1567 3 105.4 -66.07 -44.81 0.435 1566 -1568 3 106.04 -66.02 -44.79 0.435 1567 -1569 3 106.7 -65.93 -45.3 0.435 1568 -1570 3 107.35 -65.88 -45.35 0.435 1569 -1571 3 108.21 -65.31 -46.02 0.435 1570 -1572 3 108.86 -65.26 -46.23 0.435 1571 -1573 3 57.45 -37.93 5.18 0.435 1472 -1574 3 58.41 -39.38 5.05 0.435 1573 -1575 3 60.03 -41.0 4.92 0.435 1574 -1576 3 61.15 -41.56 4.74 0.435 1575 -1577 3 62.73 -42.29 4.33 0.435 1576 -1578 3 64.53 -43.26 4.27 0.435 1577 -1579 3 65.45 -43.49 2.91 0.435 1578 -1580 3 66.15 -43.82 2.29 0.435 1579 -1581 3 66.59 -43.97 1.91 0.435 1580 -1582 3 67.75 -44.47 1.14 0.435 1581 -1583 3 68.43 -44.78 0.44 0.435 1582 -1584 3 69.98 -45.06 -0.15 0.435 1583 -1585 3 70.49 -45.56 -1.39 0.435 1584 -1586 3 71.18 -46.16 -1.43 0.435 1585 -1587 3 71.43 -46.25 -2.57 0.435 1586 -1588 3 71.94 -46.75 -3.67 0.435 1587 -1589 3 72.45 -48.01 -3.86 0.435 1588 -1590 3 72.46 -48.21 -3.96 0.435 1589 -1591 3 73.2 -49.67 -4.09 0.435 1590 -1592 3 73.29 -50.15 -5.72 0.435 1591 -1593 3 73.79 -51.15 -6.19 0.435 1592 -1594 3 74.07 -51.95 -6.72 0.435 1593 -1595 3 74.61 -53.11 -7.8 0.435 1594 -1596 3 74.89 -53.91 -8.33 0.435 1595 -1597 3 75.4 -54.95 -8.5 0.435 1596 -1598 3 75.71 -56.18 -9.15 0.435 1597 -1599 3 75.77 -57.02 -9.3 0.435 1598 -1600 3 76.27 -58.05 -9.55 0.435 1599 -1601 3 76.8 -59.28 -9.97 0.435 1600 -1602 3 77.35 -60.91 -10.66 0.435 1601 -1603 3 77.43 -62.18 -10.86 0.435 1602 -1604 3 77.03 -62.62 -11.06 0.435 1603 -1605 3 77.09 -62.94 -12.23 0.435 1604 -1606 3 77.37 -63.69 -13.21 0.435 1605 -1607 3 77.43 -64.54 -13.29 0.435 1606 -1608 3 77.99 -66.44 -13.48 0.435 1607 -1609 3 78.69 -67.26 -13.61 0.435 1608 -1610 3 79.22 -68.19 -14.75 0.435 1609 -1611 3 79.5 -69.25 -14.86 0.435 1610 -1612 3 33.53 -26.95 5.16 0.435 1382 -1613 3 33.0 -28.91 4.94 0.435 1612 -1614 3 33.95 -30.35 4.81 0.435 1613 -1615 3 34.47 -31.4 4.72 0.435 1614 -1616 3 35.16 -31.81 4.69 0.435 1615 -1617 3 35.41 -31.89 3.4 0.435 1616 -1618 3 36.91 -31.37 3.49 0.435 1617 -1619 3 37.35 -31.51 3.11 0.435 1618 -1620 3 38.63 -31.0 3.12 0.435 1619 -1621 3 39.75 -31.35 3.04 0.435 1620 -1622 3 41.08 -31.37 1.86 0.435 1621 -1623 3 42.41 -31.44 1.28 0.435 1622 -1624 3 44.82 -31.65 0.56 0.435 1623 -1625 3 46.34 -31.51 0.16 0.435 1624 -1626 3 47.45 -31.38 -0.39 0.435 1625 -1627 3 48.32 -31.53 -0.46 0.435 1626 -1628 3 49.9 -31.99 -1.45 0.435 1627 -1629 3 51.03 -32.55 -1.64 0.435 1628 -1630 3 52.16 -33.1 -1.82 0.435 1629 -1631 3 52.62 -33.49 -2.0 0.435 1630 -1632 3 52.66 -33.84 -2.86 0.435 1631 -1633 3 53.13 -34.45 -2.91 0.435 1632 -1634 3 53.41 -35.28 -3.22 0.435 1633 -1635 3 53.66 -35.67 -3.48 0.435 1634 -1636 3 54.13 -36.29 -3.53 0.435 1635 -1637 3 54.61 -36.89 -3.66 0.435 1636 -1638 3 56.82 -37.37 -4.03 0.435 1637 -1639 3 57.92 -37.2 -4.97 0.435 1638 -1640 3 58.82 -37.28 -5.78 0.435 1639 -1641 3 60.17 -37.78 -6.33 0.435 1640 -1642 3 61.29 -37.82 -7.44 0.435 1641 -1643 3 62.84 -37.83 -8.53 0.435 1642 -1644 3 63.31 -37.95 -9.14 0.435 1643 -1645 3 63.99 -38.31 -9.39 0.435 1644 -1646 3 64.7 -38.82 -10.33 0.435 1645 -1647 3 65.4 -39.36 -11.12 0.435 1646 -1648 3 66.36 -40.3 -11.94 0.435 1647 -1649 3 68.16 -41.26 -12.08 0.435 1648 -1650 3 35.47 -33.7 4.5 0.435 1616 -1651 3 35.98 -34.75 4.41 0.435 1650 -1652 3 36.08 -36.25 4.25 0.435 1651 -1653 3 36.6 -37.72 4.11 0.435 1652 -1654 3 36.73 -39.87 3.9 0.435 1653 -1655 3 36.49 -42.68 3.6 0.435 1654 -1656 3 36.15 -44.21 3.43 0.435 1655 -1657 3 36.21 -45.28 3.32 0.435 1656 -1658 3 36.71 -46.1 3.25 0.435 1657 -1659 3 37.21 -47.15 3.15 0.435 1658 -1660 3 37.7 -48.2 3.06 0.435 1659 -1661 3 37.32 -48.87 2.98 0.435 1660 -1662 3 36.54 -50.42 2.8 0.435 1661 -1663 3 36.67 -52.56 2.65 0.435 1662 -1664 3 36.39 -54.73 2.42 0.435 1663 -1665 3 36.73 -56.64 2.23 0.435 1664 -1666 3 36.95 -57.17 3.09 0.435 1665 -1667 3 37.01 -58.52 3.77 0.435 1666 -1668 3 37.3 -59.02 2.3 0.435 1667 -1669 3 37.0 -60.16 0.6 0.435 1668 -1670 3 37.08 -61.43 0.23 0.435 1669 -1671 3 37.42 -63.04 -0.67 0.435 1670 -1672 3 38.13 -63.82 -1.18 0.435 1671 -1673 3 38.39 -64.14 -2.12 0.435 1672 -1674 3 38.67 -64.98 -2.27 0.435 1673 -1675 3 39.16 -65.8 -2.42 0.435 1674 -1676 3 39.19 -66.23 -2.47 0.435 1675 -1677 3 39.27 -67.51 -2.6 0.435 1676 -1678 3 39.32 -68.36 -2.68 0.435 1677 -1679 3 39.38 -68.96 -3.27 0.435 1678 -1680 3 40.09 -69.76 -3.41 0.435 1679 -1681 3 41.05 -71.22 -3.54 0.435 1680 -1682 3 41.35 -71.91 -5.03 0.435 1681 -1683 3 41.62 -72.74 -5.26 0.435 1682 -1684 3 41.69 -73.81 -5.37 0.435 1683 -1685 3 41.79 -74.76 -6.75 0.435 1684 -1686 3 41.85 -75.61 -6.83 0.435 1685 -1687 3 42.38 -77.3 -6.99 0.435 1686 -1688 3 42.66 -78.13 -7.07 0.435 1687 -1689 3 42.93 -78.99 -7.16 0.435 1688 -1690 3 43.39 -79.39 -7.27 0.435 1689 -1691 3 43.45 -79.68 -8.65 0.435 1690 -1692 3 43.56 -81.09 -9.55 0.435 1691 -1693 3 43.91 -83.0 -9.74 0.435 1692 -1694 3 44.16 -83.62 -10.02 0.435 1693 -1695 3 44.45 -84.39 -10.78 0.435 1694 -1696 3 44.53 -85.13 -12.05 0.435 1695 -1697 3 44.61 -86.18 -12.24 0.435 1696 -1698 3 44.67 -86.73 -13.2 0.435 1697 -1699 3 44.79 -88.14 -14.31 0.435 1698 -1700 3 44.89 -89.37 -15.04 0.435 1699 -1701 3 45.42 -90.54 -15.91 0.435 1700 -1702 3 45.47 -91.39 -15.99 0.435 1701 -1703 3 45.57 -92.86 -16.59 0.435 1702 -1704 3 46.01 -92.83 -16.66 0.435 1703 -1705 3 46.53 -94.07 -16.78 0.435 1704 -1706 3 46.87 -95.99 -16.97 0.435 1705 -1707 3 46.12 -97.97 -17.19 0.435 1706 -1708 3 46.2 -99.25 -17.32 0.435 1707 -1709 3 47.16 -100.23 -17.85 0.435 1708 -1710 3 48.5 -100.77 -18.18 0.435 1709 -1711 3 49.42 -101.57 -18.24 0.435 1710 -1712 3 49.94 -102.28 -19.35 0.435 1711 -1713 3 49.98 -102.64 -20.07 0.435 1712 -1714 3 49.19 -103.97 -20.37 0.435 1713 -1715 3 49.26 -105.04 -20.55 0.435 1714 -1716 3 49.12 -105.91 -20.73 0.435 1715 -1717 3 49.18 -106.2 -22.11 0.435 1716 -1718 3 48.81 -106.52 -23.51 0.435 1717 -1719 3 48.86 -107.11 -24.1 0.435 1718 -1720 3 48.9 -106.93 -25.89 0.435 1719 -1721 3 48.95 -107.26 -26.89 0.435 1720 -1722 3 48.57 -107.9 -27.05 0.435 1721 -1723 3 48.61 -108.28 -27.69 0.435 1722 -1724 3 48.22 -108.89 -28.29 0.435 1723 -1725 3 48.26 -109.26 -28.86 0.435 1724 -1726 3 48.75 -109.87 -28.98 0.435 1725 -1727 3 48.85 -111.32 -29.66 0.435 1726 -1728 3 48.94 -112.04 -31.08 0.435 1727 -1729 3 49.19 -112.14 -32.07 0.435 1728 -1730 3 49.25 -112.99 -32.23 0.435 1729 -1731 3 49.3 -113.84 -32.39 0.435 1730 -1732 3 49.33 -114.26 -32.44 0.435 1731 -1733 3 49.24 -115.37 -34.36 0.435 1732 -1734 3 48.47 -116.65 -35.19 0.435 1733 -1735 3 48.53 -117.24 -35.78 0.435 1734 -1736 3 47.52 -118.09 -36.57 0.435 1735 -1737 3 47.76 -118.21 -37.4 0.435 1736 -1738 3 47.83 -118.75 -38.44 0.435 1737 -1739 3 47.84 -118.68 -39.1 0.435 1738 -1740 3 47.91 -119.48 -39.79 0.435 1739 -1741 3 47.56 -120.27 -40.78 0.435 1740 -1742 3 47.43 -121.51 -41.37 0.435 1741 -1743 3 47.06 -122.39 -41.62 0.435 1742 -1744 3 47.13 -122.92 -42.66 0.435 1743 -1745 3 47.18 -123.5 -43.39 0.435 1744 -1746 3 46.82 -124.33 -44.16 0.435 1745 -1747 3 46.26 -125.64 -44.39 0.435 1746 -1748 3 45.92 -126.9 -44.98 0.435 1747 -1749 3 45.56 -127.41 -46.62 0.435 1748 -1750 3 45.21 -127.94 -47.97 0.435 1749 -1751 3 45.26 -128.27 -48.98 0.435 1750 -1752 3 44.88 -129.1 -49.59 0.435 1751 -1753 3 44.96 -129.86 -50.73 0.435 1752 -1754 3 45.01 -129.96 -51.79 0.435 1753 -1755 3 45.29 -130.78 -52.1 0.435 1754 -1756 3 45.55 -131.13 -52.73 0.435 1755 -1757 3 45.8 -131.97 -52.89 0.435 1756 -1758 3 45.87 -132.55 -53.63 0.435 1757 -1759 3 45.92 -133.39 -53.78 0.435 1758 -1760 3 45.99 -133.95 -54.68 0.435 1759 -1761 3 46.02 -134.06 -55.58 0.435 1760 -1762 3 46.07 -134.7 -55.8 0.435 1761 -1763 3 46.13 -135.21 -57.14 0.435 1762 -1764 3 46.18 -135.55 -57.99 0.435 1763 -1765 3 46.47 -136.09 -58.95 0.435 1764 -1766 3 46.52 -136.94 -59.12 0.435 1765 -1767 3 46.33 -137.37 -59.16 0.435 1766 -1768 3 46.15 -138.07 -58.94 0.435 1767 -1769 3 46.2 -138.71 -59.0 0.435 1768 -1770 3 45.82 -139.02 -60.47 0.435 1769 -1771 3 45.48 -140.08 -61.5 0.435 1770 -1772 3 45.18 -141.44 -63.3 0.435 1771 -1773 3 45.31 -142.81 -64.72 0.435 1772 -1774 3 44.53 -144.1 -65.32 0.435 1773 -1775 3 43.31 -145.24 -65.55 0.435 1774 -1776 3 42.27 -145.43 -66.5 0.435 1775 -1777 3 41.27 -146.17 -68.4 0.435 1776 -1778 3 40.0 -146.41 -68.91 0.435 1777 -1779 3 39.34 -145.95 -69.48 0.435 1778 -1780 3 39.12 -145.47 -70.19 0.435 1779 -1781 3 38.27 -145.19 -71.39 0.435 1780 -1782 3 37.66 -145.04 -73.27 0.435 1781 -1783 3 36.18 -145.51 -73.8 0.435 1782 -1784 3 35.38 -145.9 -74.77 0.435 1783 -1785 3 34.75 -146.09 -75.4 0.435 1784 -1786 3 34.36 -146.47 -76.14 0.435 1785 -1787 3 -1.87 -7.91 -3.58 1.95 1 -1788 3 -1.88 -7.93 -3.36 1.95 1787 -1789 3 -2.04 -8.83 -3.3 1.41 1788 -1790 3 -2.46 -9.07 -3.26 1.41 1789 -1791 3 -3.08 -9.83 -2.6 1.41 1790 -1792 3 -3.06 -9.74 -3.49 1.41 1791 -1793 3 -3.22 -10.82 -3.61 1.085 1792 -1794 3 -3.62 -11.28 -3.6 1.085 1793 -1795 3 -3.6 -11.71 -3.64 1.085 1794 -1796 3 -3.75 -12.58 -3.73 1.085 1795 -1797 3 -4.61 -13.19 -2.61 0.65 1796 -1798 3 -5.76 -12.39 -2.55 0.65 1797 -1799 3 -6.84 -12.46 -2.59 0.65 1798 -1800 3 -7.88 -12.95 -2.73 0.54 1799 -1801 3 -9.8 -13.5 -2.83 0.54 1800 -1802 3 -11.46 -15.43 -1.95 0.54 1801 -1803 3 -12.71 -16.16 -1.97 0.54 1802 -1804 3 -14.18 -16.92 -1.86 0.54 1803 -1805 3 -14.62 -17.46 -1.1 0.54 1804 -1806 3 -15.03 -17.97 -0.55 0.54 1805 -1807 3 -16.51 -18.73 -0.52 0.54 1806 -1808 3 -18.18 -19.97 -0.09 0.54 1807 -1809 3 -19.0 -20.9 0.01 0.54 1808 -1810 3 -21.24 -23.21 -0.12 0.54 1809 -1811 3 -22.87 -24.8 -0.32 0.54 1810 -1812 3 -23.72 -25.31 -0.17 0.54 1811 -1813 3 -25.62 -26.08 -0.22 0.54 1812 -1814 3 -27.32 -26.62 -0.31 0.54 1813 -1815 3 -27.56 -26.2 -0.27 0.54 1814 -1816 3 -27.89 -26.6 -2.96 0.325 1815 -1817 3 -28.28 -26.66 -4.71 0.435 1816 -1818 3 -29.08 -27.58 -4.68 0.435 1817 -1819 3 -29.71 -28.06 -4.66 0.435 1818 -1820 3 -30.73 -28.96 -5.08 0.435 1819 -1821 3 -31.54 -29.34 -6.12 0.435 1820 -1822 3 -32.36 -30.03 -6.22 0.435 1821 -1823 3 -33.65 -30.31 -6.35 0.435 1822 -1824 3 -34.95 -30.13 -6.89 0.435 1823 -1825 3 -36.89 -29.95 -7.66 0.435 1824 -1826 3 -38.44 -29.16 -7.92 0.435 1825 -1827 3 -39.74 -29.23 -8.04 0.435 1826 -1828 3 -41.47 -29.29 -8.46 0.435 1827 -1829 3 -42.54 -29.1 -8.91 0.435 1828 -1830 3 -43.6 -29.37 -9.05 0.435 1829 -1831 3 -44.43 -29.53 -10.14 0.435 1830 -1832 3 -45.26 -29.94 -10.88 0.435 1831 -1833 3 -46.06 -30.84 -11.07 0.435 1832 -1834 3 -46.88 -31.53 -11.31 0.435 1833 -1835 3 -48.15 -32.0 -11.76 0.435 1834 -1836 3 -50.03 -32.69 -12.56 0.435 1835 -1837 3 -51.76 -32.78 -12.68 0.435 1836 -1838 3 -53.27 -32.29 -14.17 0.435 1837 -1839 3 -54.79 -32.14 -14.57 0.435 1838 -1840 3 -56.09 -32.22 -14.6 0.435 1839 -1841 3 -57.58 -32.51 -14.67 0.435 1840 -1842 3 -59.07 -32.49 -15.84 0.435 1841 -1843 3 -60.63 -31.7 -16.1 0.435 1842 -1844 3 -62.14 -31.78 -16.21 0.435 1843 -1845 3 -62.1 -31.63 -17.63 0.435 1844 -1846 3 -63.39 -31.94 -17.61 0.435 1845 -1847 3 -64.26 -32.01 -17.49 0.435 1846 -1848 3 -65.77 -31.8 -18.34 0.435 1847 -1849 3 -66.64 -31.33 -19.22 0.435 1848 -1850 3 -67.73 -31.4 -19.25 0.435 1849 -1851 3 -68.99 -31.91 -19.33 0.435 1850 -1852 3 -69.81 -32.58 -19.57 0.435 1851 -1853 3 -70.85 -33.03 -20.09 0.435 1852 -1854 3 -72.31 -33.43 -21.3 0.435 1853 -1855 3 -73.8 -33.95 -21.46 0.435 1854 -1856 3 -75.25 -35.11 -21.61 0.435 1855 -1857 3 -75.62 -36.0 -21.79 0.435 1856 -1858 3 -76.68 -36.26 -21.92 0.435 1857 -1859 3 -77.28 -36.92 -22.23 0.435 1858 -1860 3 -78.33 -37.41 -22.31 0.435 1859 -1861 3 -79.2 -37.47 -22.33 0.435 1860 -1862 3 -80.76 -36.91 -22.31 0.435 1861 -1863 3 -82.03 -37.17 -22.74 0.435 1862 -1864 3 -82.64 -37.57 -23.4 0.435 1863 -1865 3 -82.59 -37.89 -24.57 0.435 1864 -1866 3 -83.61 -38.56 -25.11 0.435 1865 -1867 3 -84.89 -38.85 -25.24 0.435 1866 -1868 3 -86.38 -39.1 -25.69 0.435 1867 -1869 3 -88.12 -38.99 -25.79 0.435 1868 -1870 3 -88.91 -39.37 -25.85 0.435 1869 -1871 3 -88.62 -39.85 -27.32 0.435 1870 -1872 3 -88.58 -40.5 -27.31 0.435 1871 -1873 3 -88.48 -41.47 -28.47 0.435 1872 -1874 3 -88.86 -42.07 -29.21 0.435 1873 -1875 3 -89.02 -42.39 -30.38 0.435 1874 -1876 3 -89.41 -43.06 -30.46 0.435 1875 -1877 3 -89.78 -44.43 -30.08 0.435 1876 -1878 3 -89.73 -45.33 -29.87 0.435 1877 -1879 3 -89.9 -45.14 -31.75 0.435 1878 -1880 3 -90.28 -45.47 -32.99 0.435 1879 -1881 3 -90.64 -46.28 -33.76 0.435 1880 -1882 3 -91.0 -46.55 -35.61 0.435 1881 -1883 3 -90.93 -47.32 -36.44 0.435 1882 -1884 3 -91.75 -48.01 -36.6 0.435 1883 -1885 3 -91.71 -47.84 -38.24 0.435 1884 -1886 3 -92.08 -48.68 -38.86 0.435 1885 -1887 3 -92.45 -49.24 -39.91 0.435 1886 -1888 3 -92.85 -49.41 -40.7 0.435 1887 -1889 3 -92.81 -49.77 -41.4 0.435 1888 -1890 3 -92.77 -50.14 -42.05 0.435 1889 -1891 3 -92.49 -50.74 -42.33 0.435 1890 -1892 3 -92.24 -51.08 -43.12 0.435 1891 -1893 3 -92.2 -51.72 -43.25 0.435 1892 -1894 3 -92.15 -52.33 -43.62 0.54 1893 -1895 3 -92.09 -53.16 -44.0 0.54 1894 -1896 3 -91.57 -53.91 -44.82 0.54 1895 -1897 3 -91.29 -54.68 -45.57 0.54 1896 -1898 3 -90.78 -55.44 -46.39 0.54 1897 -1899 3 -90.56 -55.61 -46.63 0.54 1898 -1900 3 -90.5 -56.2 -47.21 0.54 1899 -1901 3 -90.46 -56.6 -47.56 0.54 1900 -1902 3 -90.41 -57.16 -48.45 0.54 1901 -1903 3 -90.37 -57.53 -49.09 0.54 1902 -1904 3 -90.3 -57.8 -50.61 0.54 1903 -1905 3 -90.24 -58.61 -51.15 0.54 1904 -1906 3 -90.16 -59.68 -51.34 0.54 1905 -1907 3 -90.07 -60.91 -51.99 0.54 1906 -1908 3 -89.99 -61.66 -53.12 0.54 1907 -1909 3 -89.92 -62.45 -53.8 0.54 1908 -1910 3 -90.68 -63.45 -55.21 0.54 1909 -1911 3 -91.25 -64.48 -55.93 0.54 1910 -1912 3 -91.35 -65.92 -56.98 0.54 1911 -1913 3 -91.27 -66.66 -58.11 0.54 1912 -1914 3 -91.63 -67.47 -58.89 0.54 1913 -1915 3 -91.53 -68.39 -60.49 0.54 1914 -1916 3 -91.41 -69.8 -61.54 0.54 1915 -1917 3 -91.8 -70.16 -62.41 0.54 1916 -1918 3 -92.15 -70.67 -64.13 0.54 1917 -1919 3 -92.09 -70.98 -65.28 0.54 1918 -1920 3 -92.02 -71.76 -66.05 0.54 1919 -1921 3 -92.4 -72.14 -67.0 0.54 1920 -1922 3 -92.79 -72.7 -68.04 0.54 1921 -1923 3 -93.58 -73.06 -69.38 0.54 1922 -1924 3 -93.97 -73.66 -70.05 0.54 1923 -1925 3 -93.89 -74.42 -71.03 0.54 1924 -1926 3 -93.85 -75.06 -71.1 0.54 1925 -1927 3 -94.65 -75.98 -71.21 0.54 1926 -1928 3 -95.45 -76.79 -72.22 0.54 1927 -1929 3 -95.4 -77.13 -73.16 0.54 1928 -1930 3 -96.18 -78.18 -74.04 0.54 1929 -1931 3 -96.97 -79.02 -74.68 0.54 1930 -1932 3 -97.36 -79.39 -75.7 0.54 1931 -1933 3 -97.69 -80.37 -76.87 0.54 1932 -1934 3 -98.46 -81.62 -77.99 0.54 1933 -1935 3 -98.36 -82.84 -78.65 0.54 1934 -1936 3 -98.72 -83.66 -79.41 0.54 1935 -1937 3 -99.08 -84.75 -79.62 0.54 1936 -1938 3 -99.65 -86.07 -79.77 0.54 1937 -1939 3 -99.39 -86.71 -79.83 0.54 1938 -1940 3 -100.16 -87.71 -81.07 0.54 1939 -1941 3 -99.83 -88.59 -83.04 0.54 1940 -1942 3 -99.76 -89.35 -83.87 0.54 1941 -1943 3 -100.11 -90.41 -84.44 0.54 1942 -1944 3 -100.04 -91.23 -84.82 0.54 1943 -1945 3 -99.95 -92.47 -85.48 0.54 1944 -1946 3 -100.27 -93.91 -86.39 0.54 1945 -1947 3 -101.05 -95.23 -86.77 0.54 1946 -1948 3 -101.36 -96.67 -87.76 0.54 1947 -1949 3 -102.33 -98.39 -88.56 0.54 1948 -1950 3 -103.48 -100.29 -89.76 0.54 1949 -1951 3 -103.38 -101.25 -90.99 0.54 1950 -1952 3 -104.15 -102.8 -91.25 0.54 1951 -1953 3 -104.07 -103.86 -91.35 0.54 1952 -1954 3 -104.45 -104.47 -92.03 0.54 1953 -1955 3 -104.81 -105.51 -92.75 0.54 1954 -1956 3 -104.92 -106.98 -93.36 0.54 1955 -1957 3 -105.29 -107.85 -93.61 0.54 1956 -1958 3 -105.24 -108.19 -94.46 0.54 1957 -1959 3 -105.18 -108.49 -95.77 0.54 1958 -1960 3 -105.15 -108.87 -96.19 0.54 1959 -1961 3 -89.59 -39.42 -26.77 0.435 1870 -1962 3 -89.56 -39.53 -27.76 0.435 1961 -1963 3 -90.37 -39.98 -28.13 0.435 1962 -1964 3 -90.98 -40.36 -29.08 0.435 1963 -1965 3 -91.79 -40.73 -30.2 0.435 1964 -1966 3 -92.64 -41.21 -30.27 0.435 1965 -1967 3 -93.68 -41.67 -30.79 0.435 1966 -1968 3 -95.95 -43.02 -31.74 0.435 1967 -1969 3 -97.62 -43.97 -31.96 0.435 1968 -1970 3 -99.09 -44.69 -32.29 0.435 1969 -1971 3 -99.72 -44.91 -32.63 0.435 1970 -1972 3 -99.82 -45.64 -33.01 0.435 1971 -1973 3 -100.84 -46.57 -33.13 0.435 1972 -1974 3 -102.96 -47.34 -33.33 0.435 1973 -1975 3 -102.94 -47.24 -34.3 0.435 1974 -1976 3 -104.01 -47.24 -34.93 0.435 1975 -1977 3 -105.07 -47.5 -35.13 0.435 1976 -1978 3 -106.13 -47.47 -36.06 0.435 1977 -1979 3 -107.51 -46.27 -35.97 0.435 1978 -1980 3 -108.82 -45.89 -36.33 0.435 1979 -1981 3 -110.63 -44.67 -36.55 0.435 1980 -1982 3 -112.17 -44.29 -36.93 0.435 1981 -1983 3 -113.02 -44.03 -37.9 0.435 1982 -1984 3 -113.93 -43.17 -38.37 0.435 1983 -1985 3 -115.29 -41.94 -38.64 0.435 1984 -1986 3 -117.25 -41.52 -39.55 0.435 1985 -1987 3 -118.36 -41.16 -39.54 0.435 1986 -1988 3 -119.26 -40.03 -40.5 0.435 1987 -1989 3 -120.39 -39.46 -40.54 0.435 1988 -1990 3 -120.86 -38.55 -41.06 0.435 1989 -1991 3 -121.96 -37.94 -41.47 0.435 1990 -1992 3 -121.97 -37.43 -42.18 0.435 1991 -1993 3 -122.65 -37.31 -41.73 0.435 1992 -1994 3 -123.55 -36.94 -41.64 0.435 1993 -1995 3 -124.24 -36.35 -41.51 0.435 1994 -1996 3 -124.91 -35.66 -42.21 0.435 1995 -1997 3 -125.56 -35.17 -43.16 0.435 1996 -1998 3 -28.4 -26.9 -0.37 0.54 1815 -1999 3 -29.67 -27.43 -0.15 0.54 1998 -2000 3 -31.37 -27.97 -0.25 0.54 1999 -2001 3 -33.05 -28.72 -0.36 0.54 2000 -2002 3 -34.27 -30.09 -0.46 0.54 2001 -2003 3 -34.25 -30.55 -0.13 0.54 2002 -2004 3 -34.16 -31.84 -0.19 0.54 2003 -2005 3 -34.76 -33.54 1.05 0.54 2004 -2006 3 -34.73 -34.24 1.65 0.54 2005 -2007 3 -35.5 -35.53 0.98 0.54 2006 -2008 3 -36.74 -36.18 0.13 0.54 2007 -2009 3 -38.38 -37.28 -0.77 0.54 2008 -2010 3 -39.59 -38.59 -1.39 0.54 2009 -2011 3 -40.41 -39.27 -1.56 0.54 2010 -2012 3 -41.17 -40.83 -1.74 0.54 2011 -2013 3 -41.78 -41.48 -2.12 0.54 2012 -2014 3 -42.79 -42.63 -2.26 0.54 2013 -2015 3 -44.67 -43.8 -2.43 0.54 2014 -2016 3 -45.9 -44.67 -3.3 0.54 2015 -2017 3 -46.01 -45.92 -3.89 0.54 2016 -2018 3 -45.96 -46.55 -4.09 0.54 2017 -2019 3 -46.75 -47.88 -4.25 0.54 2018 -2020 3 -47.39 -48.98 -2.5 0.54 2019 -2021 3 -48.17 -50.31 -2.65 0.54 2020 -2022 3 -49.0 -51.33 -1.8 0.54 2021 -2023 3 -50.02 -52.49 -1.65 0.54 2022 -2024 3 -50.81 -53.86 -1.57 0.54 2023 -2025 3 -51.17 -55.43 -1.22 0.54 2024 -2026 3 -51.56 -56.12 -1.15 0.54 2025 -2027 3 -52.39 -56.84 -0.95 0.54 2026 -2028 3 -52.8 -57.34 -0.62 0.54 2027 -2029 3 -53.21 -57.83 -0.31 0.54 2028 -2030 3 -53.62 -58.58 0.34 0.54 2029 -2031 3 -53.63 -59.16 1.71 0.54 2030 -2032 3 -54.47 -59.7 2.24 0.54 2031 -2033 3 -54.47 -60.22 3.17 0.54 2032 -2034 3 -54.46 -60.71 3.72 0.54 2033 -2035 3 -54.87 -61.71 4.67 0.54 2034 -2036 3 -55.65 -62.83 4.53 0.54 2035 -2037 3 -56.45 -64.19 4.59 0.54 2036 -2038 3 -56.83 -65.1 4.79 0.54 2037 -2039 3 -57.6 -66.92 5.11 0.54 2038 -2040 3 -58.63 -68.15 5.79 0.54 2039 -2041 3 -59.27 -69.24 7.54 0.54 2040 -2042 3 -3.66 -14.09 -3.89 0.76 1796 -2043 3 -2.93 -15.33 -4.0 0.76 2042 -2044 3 -2.9 -15.76 -3.96 0.76 2043 -2045 3 -2.63 -16.31 -4.77 0.76 2044 -2046 3 -2.41 -16.85 -3.69 0.76 2045 -2047 3 -2.19 -17.34 -2.9 0.76 2046 -2048 3 -1.95 -17.78 -2.79 0.76 2047 -2049 3 -1.73 -18.35 -1.34 0.76 2048 -2050 3 -1.26 -19.25 -0.74 0.76 2049 -2051 3 -0.57 -20.09 -0.51 0.76 2050 -2052 3 -0.09 -20.96 -0.36 0.76 2051 -2053 3 0.37 -21.37 -0.32 0.76 2052 -2054 3 0.6 -21.79 -0.21 0.76 2053 -2055 3 1.29 -22.4 -0.18 0.76 2054 -2056 3 2.21 -23.23 -0.02 0.76 2055 -2057 3 2.66 -23.65 0.09 0.76 2056 -2058 3 3.35 -24.25 0.05 0.76 2057 -2059 3 3.58 -24.72 0.46 0.76 2058 -2060 3 4.04 -25.12 0.49 0.76 2059 -2061 3 4.28 -26.09 1.61 0.65 2060 -2062 3 4.53 -26.49 1.42 0.65 2061 -2063 3 4.76 -26.95 1.76 0.65 2062 -2064 3 5.2 -27.72 3.12 0.65 2063 -2065 3 5.42 -28.21 3.91 0.65 2064 -2066 3 5.43 -28.5 4.62 0.65 2065 -2067 3 5.45 -29.19 5.0 0.65 2066 -2068 3 5.71 -29.85 5.24 0.65 2067 -2069 3 5.93 -30.33 5.88 0.65 2068 -2070 3 5.95 -31.06 6.63 0.65 2069 -2071 3 5.95 -31.32 7.14 0.65 2070 -2072 3 6.19 -31.79 7.55 0.65 2071 -2073 3 6.47 -32.85 7.45 0.65 2072 -2074 3 6.77 -34.12 7.32 0.65 2073 -2075 3 6.81 -34.79 7.47 0.65 2074 -2076 3 7.27 -35.46 7.95 0.65 2075 -2077 3 7.73 -36.08 8.05 0.65 2076 -2078 3 8.43 -36.94 8.28 0.65 2077 -2079 3 8.9 -37.58 8.44 0.65 2078 -2080 3 9.81 -38.7 9.4 0.65 2079 -2081 3 10.05 -39.16 9.73 0.65 2080 -2082 3 10.58 -40.88 9.95 0.65 2081 -2083 3 11.04 -41.53 10.2 0.65 2082 -2084 3 11.3 -42.42 10.56 0.65 2083 -2085 3 11.36 -43.28 10.47 0.65 2084 -2086 3 11.6 -43.72 10.74 0.65 2085 -2087 3 11.83 -44.15 10.85 0.65 2086 -2088 3 12.08 -44.57 10.81 0.65 2087 -2089 4 -1.69 6.41 -3.07 2.06 1 -2090 4 -3.12 8.26 -2.91 1.085 2089 -2091 4 -4.24 9.64 -4.3 0.975 2090 -2092 4 -4.45 10.02 -4.27 0.975 2091 -2093 4 -4.03 10.53 -4.74 0.54 2092 -2094 4 -3.64 11.2 -4.66 0.54 2093 -2095 4 -3.02 11.88 -4.57 0.54 2094 -2096 4 -2.19 12.41 -5.02 0.54 2095 -2097 4 -1.95 13.03 -6.76 0.54 2096 -2098 4 -1.74 13.57 -7.53 0.54 2097 -2099 4 -1.69 13.77 -9.46 0.54 2098 -2100 4 -1.03 13.86 -10.04 0.54 2099 -2101 4 -0.87 14.73 -10.03 0.54 2100 -2102 4 -0.44 15.3 -10.94 0.54 2101 -2103 4 -0.26 16.28 -11.89 0.54 2102 -2104 4 -0.07 17.24 -12.69 0.54 2103 -2105 4 0.13 17.5 -13.03 0.54 2104 -2106 4 0.32 18.25 -13.78 0.54 2105 -2107 4 0.49 19.43 -14.71 0.435 2106 -2108 4 1.33 20.22 -15.43 0.435 2107 -2109 4 1.51 20.86 -15.29 0.435 2108 -2110 4 1.72 21.38 -15.91 0.435 2109 -2111 4 1.92 22.2 -17.41 0.435 2110 -2112 4 2.93 23.86 -18.19 0.435 2111 -2113 4 3.37 24.46 -19.54 0.435 2112 -2114 4 3.97 25.62 -19.94 0.435 2113 -2115 4 4.36 26.61 -20.8 0.435 2114 -2116 4 4.34 27.64 -22.36 0.435 2115 -2117 4 4.66 29.6 -22.15 0.435 2116 -2118 4 4.84 30.31 -22.59 0.435 2117 -2119 4 5.26 31.06 -23.41 0.435 2118 -2120 4 5.46 32.12 -25.1 0.435 2119 -2121 4 6.02 33.71 -25.46 0.435 2120 -2122 4 7.29 34.76 -26.45 0.435 2121 -2123 4 7.92 35.26 -26.76 0.435 2122 -2124 4 9.72 38.56 -28.11 0.435 2123 -2125 4 9.48 38.99 -28.22 0.435 2124 -2126 4 9.67 39.21 -28.04 0.435 2125 -2127 4 10.08 39.67 -28.06 0.435 2126 -2128 4 10.28 40.69 -29.53 0.435 2127 -2129 4 11.11 41.45 -29.96 0.435 2128 -2130 4 11.35 41.81 -31.12 0.435 2129 -2131 4 11.54 42.82 -32.44 0.435 2130 -2132 4 11.49 43.69 -32.5 0.435 2131 -2133 4 12.1 44.39 -32.57 0.435 2132 -2134 4 12.45 46.23 -33.27 0.435 2133 -2135 4 12.45 46.79 -34.5 0.435 2134 -2136 4 12.84 47.74 -35.15 0.435 2135 -2137 4 13.4 49.33 -35.42 0.435 2136 -2138 4 13.62 50.11 -36.55 0.435 2137 -2139 4 14.22 51.07 -37.11 0.435 2138 -2140 4 14.57 52.39 -37.03 0.435 2139 -2141 4 15.12 54.43 -37.49 0.435 2140 -2142 4 15.45 56.3 -38.5 0.435 2141 -2143 4 16.46 58.17 -39.25 0.435 2142 -2144 4 16.78 60.21 -39.87 0.435 2143 -2145 4 17.59 61.64 -40.61 0.435 2144 -2146 4 17.76 62.81 -41.31 0.435 2145 -2147 4 18.54 64.43 -41.73 0.435 2146 -2148 4 19.25 67.35 -42.23 0.435 2147 -2149 4 19.83 68.75 -42.76 0.435 2148 -2150 4 20.79 70.78 -42.9 0.435 2149 -2151 4 22.01 72.14 -42.73 0.435 2150 -2152 4 23.83 74.2 -42.55 0.435 2151 -2153 4 25.66 76.04 -42.32 0.435 2152 -2154 4 27.1 77.41 -42.14 0.435 2153 -2155 4 28.6 77.76 -42.52 0.435 2154 -2156 4 31.63 77.95 -42.43 0.435 2155 -2157 4 32.99 77.17 -42.55 0.435 2156 -2158 4 34.55 76.12 -41.87 0.435 2157 -2159 4 35.47 75.29 -41.71 0.435 2158 -2160 4 36.13 74.29 -39.99 0.435 2159 -2161 4 37.28 73.02 -39.64 0.435 2160 -2162 4 38.45 71.58 -39.76 0.435 2161 -2163 4 38.89 71.08 -38.75 0.435 2162 -2164 4 39.09 70.48 -36.99 0.435 2163 -2165 4 38.69 70.59 -38.35 0.435 2164 -2166 4 39.12 70.33 -37.76 0.435 2165 -2167 4 39.12 70.36 -37.99 0.435 2166 -2168 4 39.37 70.24 -38.67 0.435 2167 -2169 4 39.66 69.99 -40.35 0.435 2168 -2170 4 39.7 70.15 -41.91 0.435 2169 -2171 4 40.18 69.31 -41.91 0.435 2170 -2172 4 40.41 69.1 -41.85 0.435 2171 -2173 4 40.69 68.87 -43.61 0.435 2172 -2174 4 40.98 68.42 -45.45 0.435 2173 -2175 4 41.04 68.35 -46.89 0.435 2174 -2176 4 41.93 68.49 -47.68 0.435 2175 -2177 4 42.42 68.0 -49.01 0.435 2176 -2178 4 42.69 67.68 -50.01 0.435 2177 -2179 4 43.18 67.16 -50.89 0.435 2178 -2180 4 43.65 67.09 -52.08 0.435 2179 -2181 4 43.95 66.87 -54.05 0.435 2180 -2182 4 44.21 66.26 -54.26 0.435 2181 -2183 4 44.69 66.21 -55.54 0.435 2182 -2184 4 45.15 66.37 -56.79 0.435 2183 -2185 4 46.09 65.95 -58.54 0.435 2184 -2186 4 46.76 66.07 -59.27 0.435 2185 -2187 4 48.03 65.53 -57.42 0.435 2186 -2188 4 48.67 66.29 -58.23 0.435 2187 -2189 4 48.86 67.31 -59.39 0.435 2188 -2190 4 49.29 68.12 -60.89 0.435 2189 -2191 4 49.29 68.95 -62.6 0.435 2190 -2192 4 -5.37 10.72 -5.05 0.975 2092 -2193 4 -5.84 11.44 -4.99 0.975 2192 -2194 4 -6.11 13.03 -5.88 0.54 2193 -2195 4 -7.05 14.04 -5.8 0.54 2194 -2196 4 -7.34 15.32 -5.68 0.435 2195 -2197 4 -8.06 16.35 -5.59 0.435 2196 -2198 4 -7.86 17.13 -6.63 0.435 2197 -2199 4 -7.65 17.64 -7.25 0.435 2198 -2200 4 -7.69 18.29 -7.41 0.435 2199 -2201 4 -8.14 18.99 -8.1 0.435 2200 -2202 4 -8.58 19.52 -9.26 0.435 2201 -2203 4 -8.62 20.18 -9.35 0.435 2202 -2204 4 -8.65 20.59 -9.22 0.435 2203 -2205 4 -8.68 21.01 -9.11 0.435 2204 -2206 4 -8.7 21.51 -9.66 0.435 2205 -2207 4 -8.72 22.51 -10.99 0.435 2206 -2208 4 -8.73 23.0 -11.54 0.435 2207 -2209 4 -9.21 23.86 -11.7 0.435 2208 -2210 4 -9.23 24.56 -12.23 0.435 2209 -2211 4 -9.71 25.73 -13.39 0.435 2210 -2212 4 -9.74 26.39 -13.4 0.435 2211 -2213 4 -10.23 27.26 -13.7 0.435 2212 -2214 4 -10.28 28.11 -13.61 0.435 2213 -2215 4 -10.32 28.76 -13.62 0.435 2214 -2216 4 -10.38 29.61 -13.53 0.435 2215 -2217 4 -10.19 30.83 -14.61 0.435 2216 -2218 4 -10.23 31.5 -14.84 0.435 2217 -2219 4 -10.06 32.4 -15.04 0.435 2218 -2220 4 -9.89 33.32 -15.4 0.435 2219 -2221 4 -9.69 34.04 -16.0 0.435 2220 -2222 4 -9.76 35.16 -16.34 0.435 2221 -2223 4 -9.59 36.02 -16.17 0.435 2222 -2224 4 -9.59 36.06 -16.54 0.435 2223 -2225 4 -9.59 36.6 -17.54 0.435 2224 -2226 4 -9.58 36.9 -18.41 0.435 2225 -2227 4 -9.6 37.64 -19.24 0.435 2226 -2228 4 -9.38 38.24 -20.76 0.435 2227 -2229 4 -9.44 39.1 -20.67 0.435 2228 -2230 4 -9.49 39.96 -20.58 0.435 2229 -2231 4 -10.47 41.04 -18.99 0.435 2230 -2232 4 -10.99 42.29 -18.87 0.435 2231 -2233 4 -11.03 43.2 -19.3 0.435 2232 -2234 4 -11.06 44.17 -20.19 0.435 2233 -2235 4 -11.58 45.65 -20.11 0.435 2234 -2236 4 -11.65 46.73 -20.16 0.435 2235 -2237 4 -12.62 48.44 -20.45 0.435 2236 -2238 4 -13.54 49.73 -20.95 0.435 2237 -2239 4 -14.61 52.93 -21.01 0.435 2238 -2240 4 -14.67 54.01 -21.05 0.435 2239 -2241 4 -15.63 55.77 -21.73 0.435 2240 -2242 4 -16.62 58.14 -22.26 0.435 2241 -2243 4 -16.95 60.11 -22.59 0.435 2242 -2244 4 -17.9 61.63 -23.14 0.435 2243 -2245 4 -18.37 62.52 -23.51 0.435 2244 -2246 4 -18.84 63.41 -24.1 0.435 2245 -2247 4 -18.53 65.66 -24.62 0.435 2246 -2248 4 -18.59 66.8 -25.17 0.435 2247 -2249 4 -18.64 67.66 -25.17 0.435 2248 -2250 4 -18.68 68.6 -25.89 0.435 2249 -2251 4 -18.76 69.91 -25.91 0.435 2250 -2252 4 -18.81 70.78 -25.97 0.435 2251 -2253 4 -19.31 72.07 -26.23 0.435 2252 -2254 4 -19.8 72.92 -26.31 0.435 2253 -2255 4 -19.86 73.78 -26.22 0.435 2254 -2256 4 -19.91 74.65 -26.2 0.435 2255 -2257 4 -20.85 76.67 -27.52 0.435 2256 -2258 4 -20.88 77.64 -28.56 0.435 2257 -2259 4 -20.66 77.98 -29.57 0.435 2258 -2260 4 -20.68 78.7 -30.25 0.435 2259 -2261 4 -21.2 80.23 -30.63 0.435 2260 -2262 4 -21.68 81.32 -30.98 0.435 2261 -2263 4 -23.31 83.19 -31.13 0.435 2262 -2264 4 -23.81 84.49 -31.53 0.435 2263 -2265 4 -24.84 87.05 -31.59 0.435 2264 -2266 4 -25.64 89.35 -31.37 0.435 2265 -2267 4 -26.13 90.18 -31.15 0.435 2266 -2268 4 -26.85 91.2 -30.99 0.435 2267 -2269 4 -27.35 92.51 -31.39 0.435 2268 -2270 4 -27.8 93.24 -32.38 0.435 2269 -2271 4 -28.95 94.5 -32.66 0.435 2270 -2272 4 -30.19 97.06 -33.01 0.435 2271 -2273 4 -31.12 98.33 -33.14 0.435 2272 -2274 4 -32.78 100.63 -33.39 0.435 2273 -2275 4 -33.34 102.76 -33.25 0.435 2274 -2276 4 -34.31 104.46 -33.55 0.435 2275 -2277 4 -34.41 106.22 -33.83 0.435 2276 -2278 4 -36.15 109.81 -33.88 0.435 2277 -2279 4 -36.75 112.63 -34.12 0.435 2278 -2280 4 -36.89 115.02 -34.26 0.435 2279 -2281 4 -38.78 117.5 -34.12 0.435 2280 -2282 4 -40.66 119.53 -33.95 0.435 2281 -2283 4 -41.7 122.48 -33.67 0.435 2282 -2284 4 -42.3 125.02 -33.43 0.435 2283 -2285 4 -42.41 126.73 -33.25 0.435 2284 -2286 4 -44.52 129.19 -33.05 0.435 2285 -2287 4 -45.04 130.45 -32.93 0.435 2286 -2288 4 -45.01 130.82 -34.55 0.435 2287 -2289 4 -45.71 131.42 -34.35 0.435 2288 -2290 4 -45.73 131.85 -34.31 0.435 2289 -2291 4 -46.86 132.67 -34.55 0.435 2290 -2292 4 -7.72 38.87 -19.52 0.435 2227 -2293 4 -7.35 40.26 -20.05 0.435 2292 -2294 4 -6.26 40.67 -21.26 0.435 2293 -2295 4 -6.06 41.37 -21.63 0.435 2294 -2296 4 -5.92 42.75 -22.31 0.435 2295 -2297 4 -5.94 43.48 -23.07 0.435 2296 -2298 4 -6.57 43.52 -23.91 0.435 2297 -2299 4 -6.39 44.47 -24.49 0.435 2298 -2300 4 -5.99 45.22 -25.16 0.435 2299 -2301 4 -5.79 45.93 -25.6 0.435 2300 -2302 4 -5.61 46.89 -26.48 0.435 2301 -2303 4 -5.42 47.65 -27.3 0.435 2302 -2304 4 -5.03 48.82 -27.92 0.435 2303 -2305 4 -4.88 49.94 -28.1 0.435 2304 -2306 4 -5.11 50.64 -28.79 0.435 2305 -2307 4 -5.83 51.67 -28.78 0.435 2306 -2308 4 -5.85 52.14 -29.1 0.435 2307 -2309 4 -5.65 52.9 -30.01 0.435 2308 -2310 4 -5.62 53.06 -31.57 0.435 2309 -2311 4 -6.06 53.52 -32.13 0.435 2310 -2312 4 -6.68 53.61 -33.34 0.435 2311 -2313 4 -7.13 54.29 -33.89 0.435 2312 -2314 4 -7.13 54.6 -34.76 0.435 2313 -2315 4 -7.75 54.39 -35.25 0.435 2314 -2316 4 -7.37 55.59 -36.09 0.435 2315 -2317 4 -7.55 55.22 -36.89 0.435 2316 -2318 4 -7.53 55.85 -38.78 0.435 2317 -2319 4 -7.4 57.36 -38.63 0.435 2318 -2320 4 -7.41 57.84 -39.1 0.435 2319 -2321 4 -8.06 58.1 -39.09 0.435 2320 -2322 4 -8.96 58.49 -39.07 0.435 2321 -2323 4 -9.89 59.28 -39.01 0.435 2322 -2324 4 -9.96 60.04 -37.96 0.435 2323 -2325 4 -10.89 60.48 -36.42 0.435 2324 -2326 4 -10.9 60.77 -37.07 0.435 2325 -2327 4 -11.34 60.74 -37.01 0.435 2326 -2328 4 -11.57 61.42 -37.62 0.435 2327 -2329 4 -11.57 61.73 -38.49 0.435 2328 -2330 4 -11.55 62.08 -39.74 0.435 2329 -2331 4 -11.58 62.78 -40.2 0.435 2330 -2332 4 -11.55 63.15 -41.66 0.435 2331 -2333 4 -11.99 63.69 -42.98 0.435 2332 -2334 4 -11.79 64.14 -43.08 0.435 2333 -2335 4 -11.61 65.09 -43.73 0.435 2334 -2336 4 -11.41 65.59 -44.19 0.435 2335 -2337 4 -11.19 66.17 -45.49 0.435 2336 -2338 4 -10.56 66.71 -46.1 0.435 2337 -2339 4 -10.39 67.6 -46.3 0.435 2338 -2340 4 -10.36 67.74 -47.64 0.435 2339 -2341 4 -10.15 68.52 -48.76 0.435 2340 -2342 4 -10.16 68.8 -49.41 0.435 2341 -2343 4 -10.18 69.8 -50.67 0.435 2342 -2344 4 -10.01 70.93 -51.0 0.435 2343 -2345 4 -10.07 71.79 -50.91 0.435 2344 -2346 4 -10.53 72.49 -51.6 0.435 2345 -2347 4 -10.6 74.04 -51.97 0.435 2346 -2348 4 -10.66 75.45 -53.1 0.435 2347 -2349 4 -10.14 77.66 -53.09 0.435 2348 -2350 4 -10.15 78.17 -53.86 0.435 2349 -2351 4 -10.18 78.85 -54.1 0.435 2350 -2352 4 -9.36 79.85 -54.88 0.435 2351 -2353 4 -9.34 79.92 -55.62 0.435 2352 -2354 4 -9.15 80.63 -56.08 0.435 2353 -2355 4 -9.17 81.35 -56.68 0.435 2354 -2356 4 -9.21 82.27 -57.26 0.435 2355 -2357 4 -9.01 82.76 -57.74 0.435 2356 -2358 4 -9.33 84.48 -57.72 0.435 2357 -2359 4 -8.69 84.81 -58.34 0.435 2358 -2360 4 -8.73 85.73 -58.85 0.435 2359 -2361 4 -8.74 86.25 -59.63 0.435 2360 -2362 4 -7.96 87.81 -59.67 0.435 2361 -2363 4 -10.09 19.69 -9.8 0.435 2202 -2364 4 -11.18 19.93 -10.64 0.435 2363 -2365 4 -12.26 20.12 -11.1 0.435 2364 -2366 4 -13.38 20.97 -11.64 0.435 2365 -2367 4 -14.08 22.3 -12.34 0.435 2366 -2368 4 -14.76 22.99 -12.96 0.435 2367 -2369 4 -14.53 23.1 -14.0 0.435 2368 -2370 4 -14.51 23.15 -14.45 0.435 2369 -2371 4 -14.93 23.71 -15.99 0.435 2370 -2372 4 -14.93 24.54 -17.71 0.435 2371 -2373 4 -16.27 25.38 -18.18 0.435 2372 -2374 4 -16.25 25.48 -19.15 0.435 2373 -2375 4 -17.13 25.93 -19.95 0.435 2374 -2376 4 -17.34 26.47 -21.11 0.435 2375 -2377 4 -17.78 27.24 -22.47 0.435 2376 -2378 4 -17.77 27.55 -23.41 0.435 2377 -2379 4 -18.66 28.17 -23.75 0.435 2378 -2380 4 -18.67 28.39 -23.73 0.435 2379 -2381 4 -18.83 28.11 -25.34 0.435 2380 -2382 4 -19.26 28.09 -25.35 0.435 2381 -2383 4 -19.68 27.86 -25.54 0.435 2382 -2384 4 -19.67 27.9 -25.98 0.435 2383 -2385 4 -20.08 27.96 -26.82 0.435 2384 -2386 4 -20.05 28.1 -28.17 0.435 2385 -2387 4 -20.46 28.13 -28.69 0.435 2386 -2388 4 -20.92 28.86 -29.69 0.435 2387 -2389 4 -21.75 28.63 -30.1 0.435 2388 -2390 4 -22.38 28.67 -30.95 0.435 2389 -2391 4 -22.86 29.58 -31.54 0.435 2390 -2392 4 -23.71 29.59 -32.24 0.435 2391 -2393 4 -25.0 30.04 -33.2 0.435 2392 -2394 4 -25.22 30.02 -33.21 0.435 2393 -2395 4 -26.1 30.49 -34.01 0.435 2394 -2396 4 -26.52 30.5 -34.4 0.435 2395 -2397 4 -26.71 30.32 -34.87 0.435 2396 -2398 4 -28.25 31.19 -35.87 0.435 2397 -2399 4 -28.67 31.53 -37.36 0.435 2398 -2400 4 -28.69 31.98 -37.53 0.435 2399 -2401 4 -28.67 32.07 -38.36 0.435 2400 -2402 4 -29.1 32.31 -38.86 0.435 2401 -2403 4 -29.1 32.58 -39.29 0.435 2402 -2404 4 -29.99 32.98 -39.64 0.435 2403 -2405 4 -29.98 33.02 -40.02 0.435 2404 -2406 4 -30.19 33.59 -41.39 0.435 2405 -2407 4 -30.84 33.78 -41.69 0.435 2406 -2408 4 -30.85 34.33 -42.69 0.435 2407 -2409 4 -31.32 34.97 -42.94 0.435 2408 -2410 4 -31.97 35.18 -43.23 0.435 2409 -2411 4 -32.64 35.6 -43.51 0.435 2410 -2412 4 -33.09 36.03 -43.7 0.435 2411 -2413 4 -33.08 36.08 -44.22 0.435 2412 -2414 4 -33.1 36.54 -44.56 0.435 2413 -2415 4 -33.52 36.8 -45.21 0.435 2414 -2416 4 -34.19 37.24 -45.64 0.435 2415 -2417 4 -34.83 37.23 -46.02 0.435 2416 -2418 4 -35.24 37.11 -47.18 0.435 2417 -2419 4 -35.43 36.89 -47.28 0.435 2418 -2420 4 -36.32 37.28 -47.34 0.435 2419 -2421 4 -36.97 37.24 -47.43 0.435 2420 -2422 4 -37.17 37.57 -48.69 0.435 2421 -2423 4 -36.98 38.0 -48.41 0.435 2422 -2424 4 -38.03 37.75 -48.91 0.435 2423 -2425 4 -38.05 38.22 -49.25 0.435 2424 -2426 4 -38.48 38.54 -50.42 0.435 2425 -2427 4 -38.51 39.49 -51.31 0.435 2426 -2428 4 -38.49 39.61 -52.42 0.435 2427 -2429 4 -38.93 40.33 -53.34 0.435 2428 -2430 4 -38.91 40.41 -54.16 0.435 2429 -2431 4 -38.94 41.15 -54.99 0.435 2430 -2432 4 -39.0 42.49 -55.45 0.435 2431 -2433 4 -39.47 43.12 -55.55 0.435 2432 -2434 4 -40.35 43.8 -56.25 0.435 2433 -2435 4 -40.39 44.49 -56.71 0.435 2434 -2436 4 -41.96 45.27 -56.81 0.435 2435 -2437 4 -42.16 45.32 -57.35 0.435 2436 -2438 4 -43.02 45.77 -58.15 0.435 2437 -2439 4 -43.24 45.8 -58.53 0.435 2438 -2440 4 -44.14 46.63 -58.77 0.435 2439 -2441 4 -44.78 46.64 -59.23 0.435 2440 -2442 4 -6.88 11.21 -6.39 0.76 2193 -2443 4 -9.07 12.29 -7.91 0.76 2442 -2444 4 -10.02 13.21 -6.78 0.65 2443 -2445 4 -10.7 13.6 -6.76 0.65 2444 -2446 4 -11.62 14.4 -6.7 0.65 2445 -2447 4 -12.57 15.9 -7.02 0.65 2446 -2448 4 -13.29 16.96 -7.23 0.65 2447 -2449 4 -13.52 17.65 -7.76 0.65 2448 -2450 4 -14.46 18.7 -7.98 0.65 2449 -2451 4 -14.93 19.59 -8.42 0.65 2450 -2452 4 -14.95 20.33 -9.33 0.65 2451 -2453 4 -15.46 21.6 -9.36 0.65 2452 -2454 4 -15.95 22.69 -9.63 0.65 2453 -2455 4 -16.89 23.72 -9.63 0.65 2454 -2456 4 -18.03 24.74 -9.7 0.65 2455 -2457 4 -19.38 25.78 -10.15 0.65 2456 -2458 4 -20.76 27.01 -10.28 0.65 2457 -2459 4 -21.3 28.7 -10.12 0.65 2458 -2460 4 -21.9 31.26 -10.02 0.65 2459 -2461 4 -22.63 32.52 -10.13 0.54 2460 -2462 4 -22.8 35.31 -9.85 0.54 2461 -2463 4 -23.63 38.3 -9.79 0.54 2462 -2464 4 -23.86 38.8 -9.74 0.54 2463 -2465 4 -24.5 39.31 -10.91 0.435 2464 -2466 4 -25.42 39.9 -10.79 0.435 2465 -2467 4 -25.43 40.1 -10.62 0.435 2466 -2468 4 -26.1 40.52 -10.89 0.435 2467 -2469 4 -26.31 40.52 -10.98 0.435 2468 -2470 4 -26.76 40.99 -11.77 0.435 2469 -2471 4 -27.45 41.88 -12.36 0.435 2470 -2472 4 -27.42 41.98 -13.34 0.435 2471 -2473 4 -27.63 42.25 -13.92 0.435 2472 -2474 4 -28.12 43.36 -14.49 0.435 2473 -2475 4 -29.69 44.4 -14.95 0.435 2474 -2476 4 -30.19 45.74 -15.65 0.325 2475 -2477 4 -31.06 46.18 -16.3 0.325 2476 -2478 4 -31.53 46.83 -16.54 0.325 2477 -2479 4 -32.21 47.73 -17.3 0.325 2478 -2480 4 -33.11 48.61 -17.91 0.325 2479 -2481 4 -33.59 49.51 -18.58 0.325 2480 -2482 4 -35.38 50.74 -18.87 0.325 2481 -2483 4 -36.05 51.17 -19.3 0.325 2482 -2484 4 -37.89 52.78 -19.25 0.325 2483 -2485 4 -39.26 54.53 -20.15 0.325 2484 -2486 4 -39.95 55.4 -20.68 0.325 2485 -2487 4 -41.54 56.92 -21.54 0.325 2486 -2488 4 -42.64 57.34 -22.05 0.325 2487 -2489 4 -43.55 58.2 -22.51 0.325 2488 -2490 4 -45.35 59.42 -22.96 0.325 2489 -2491 4 -48.0 60.65 -23.8 0.325 2490 -2492 4 -49.56 61.5 -24.65 0.325 2491 -2493 4 -50.24 62.11 -24.68 0.325 2492 -2494 4 -52.9 63.27 -24.92 0.325 2493 -2495 4 -55.35 64.75 -26.03 0.325 2494 -2496 4 -56.93 66.04 -26.84 0.325 2495 -2497 4 -58.95 67.22 -26.99 0.325 2496 -2498 4 -60.52 68.5 -27.73 0.325 2497 -2499 4 -61.86 69.33 -28.13 0.325 2498 -2500 4 -63.86 70.59 -28.95 0.325 2499 -2501 4 -65.17 71.02 -29.69 0.325 2500 -2502 4 -66.26 70.98 -30.09 0.325 2501 -2503 4 -66.67 71.03 -30.78 0.325 2502 -2504 4 -67.51 71.1 -31.99 0.325 2503 -2505 4 -68.56 70.89 -32.72 0.325 2504 -2506 4 -68.96 70.7 -33.2 0.325 2505 -2507 4 -69.15 70.81 -34.47 0.325 2506 -2508 4 -24.69 41.48 -9.79 0.54 2464 -2509 4 -25.39 45.75 -9.43 0.54 2508 -2510 4 -26.04 48.94 -9.12 0.54 2509 -2511 4 -27.54 52.08 -8.91 0.54 2510 -2512 4 -28.85 55.65 -8.57 0.54 2511 -2513 4 -30.58 59.0 -8.26 0.54 2512 -2514 4 -30.75 61.56 -8.0 0.54 2513 -2515 4 -31.61 64.74 -7.69 0.54 2514 -2516 4 -32.05 65.78 -8.72 0.435 2515 -2517 4 -33.21 67.0 -8.62 0.435 2516 -2518 4 -33.25 67.61 -8.26 0.435 2517 -2519 4 -34.6 68.69 -9.08 0.435 2518 -2520 4 -34.64 69.87 -9.94 0.435 2519 -2521 4 -34.68 70.79 -10.53 0.435 2520 -2522 4 -34.71 71.75 -11.41 0.435 2521 -2523 4 -35.45 73.27 -11.8 0.435 2522 -2524 4 -36.43 75.46 -12.65 0.435 2523 -2525 4 -37.63 77.87 -13.56 0.435 2524 -2526 4 -38.42 80.0 -13.58 0.435 2525 -2527 4 -39.58 81.52 -14.28 0.435 2526 -2528 4 -39.79 82.04 -15.36 0.435 2527 -2529 4 -40.75 83.24 -14.95 0.435 2528 -2530 4 -41.24 84.3 -14.94 0.435 2529 -2531 4 -41.75 85.59 -15.12 0.435 2530 -2532 4 -42.22 86.49 -15.71 0.435 2531 -2533 4 -43.15 87.84 -16.73 0.435 2532 -2534 4 -42.99 89.21 -17.26 0.435 2533 -2535 4 -45.58 92.8 -17.85 0.435 2534 -2536 4 -47.01 95.38 -18.52 0.435 2535 -2537 4 -48.22 97.31 -18.96 0.435 2536 -2538 4 -49.12 98.41 -19.62 0.435 2537 -2539 4 -49.67 100.34 -19.8 0.435 2538 -2540 4 -50.17 101.65 -20.21 0.435 2539 -2541 4 -50.9 103.21 -20.97 0.435 2540 -2542 4 -51.84 104.74 -21.66 0.435 2541 -2543 4 -51.94 106.51 -22.08 0.435 2542 -2544 4 -52.98 109.5 -22.25 0.435 2543 -2545 4 -54.16 111.44 -22.75 0.435 2544 -2546 4 -54.87 112.8 -23.83 0.435 2545 -2547 4 -56.75 115.06 -23.65 0.435 2546 -2548 4 -57.75 117.16 -23.6 0.435 2547 -2549 4 -58.29 118.89 -23.82 0.435 2548 -2550 4 -59.25 120.58 -23.97 0.435 2549 -2551 4 -60.47 122.69 -24.08 0.435 2550 -2552 4 -62.55 124.71 -23.92 0.435 2551 -2553 4 -64.6 126.32 -23.87 0.435 2552 -2554 4 -65.99 127.74 -23.76 0.435 2553 -2555 4 -10.59 12.43 -8.01 0.54 2443 -2556 4 -12.47 11.52 -8.75 0.54 2555 -2557 4 -14.18 10.98 -8.84 0.54 2556 -2558 4 -16.11 10.66 -9.0 0.54 2557 -2559 4 -17.64 11.29 -9.8 0.54 2558 -2560 4 -20.23 11.14 -9.87 0.54 2559 -2561 4 -21.95 10.81 -9.95 0.54 2560 -2562 4 -24.78 11.07 -9.99 0.54 2561 -2563 4 -30.29 12.82 -11.29 0.54 2562 -2564 4 -31.62 13.39 -11.42 0.54 2563 -2565 4 -32.79 14.82 -11.3 0.54 2564 -2566 4 -34.55 15.14 -11.31 0.54 2565 -2567 4 -37.17 15.42 -11.34 0.54 2566 -2568 4 -38.72 15.97 -11.32 0.435 2567 -2569 4 -40.34 17.37 -11.21 0.435 2568 -2570 4 -40.87 19.06 -11.05 0.435 2569 -2571 4 -42.04 20.28 -10.95 0.435 2570 -2572 4 -44.05 21.22 -10.9 0.435 2571 -2573 4 -46.75 22.79 -10.8 0.435 2572 -2574 4 -48.18 24.63 -10.65 0.435 2573 -2575 4 -49.51 26.02 -12.19 0.435 2574 -2576 4 -51.34 27.41 -12.09 0.435 2575 -2577 4 -52.5 27.85 -10.72 0.435 2576 -2578 4 -53.43 28.87 -10.63 0.435 2577 -2579 4 -54.38 30.32 -10.51 0.435 2578 -2580 4 -54.76 32.11 -9.2 0.435 2579 -2581 4 -56.21 34.39 -8.92 0.435 2580 -2582 4 -57.23 36.41 -8.13 0.435 2581 -2583 4 -58.2 38.07 -7.91 0.435 2582 -2584 4 -60.1 39.69 -5.83 0.435 2583 -2585 4 -61.27 40.31 -4.21 0.435 2584 -2586 4 -61.99 41.34 -4.13 0.435 2585 -2587 4 -62.47 42.19 -4.2 0.435 2586 -2588 4 -62.97 43.24 -4.1 0.435 2587 -2589 4 -63.86 43.6 -4.01 0.435 2588 -2590 4 -64.93 43.28 -3.61 0.435 2589 -2591 4 -65.77 42.56 -3.49 0.435 2590 -2592 4 -66.63 42.26 -3.24 0.435 2591 -2593 4 -67.18 42.89 -3.18 0.435 2592 -2594 4 -68.05 42.83 -3.13 0.435 2593 -2595 4 -68.52 43.45 -3.16 0.435 2594 -2596 4 -70.61 42.79 -4.48 0.435 2595 -2597 4 -71.47 42.55 -4.68 0.435 2596 -2598 4 -72.13 42.47 -4.32 0.435 2597 -2599 4 -73.17 41.71 -3.9 0.435 2598 -2600 4 -74.92 42.02 -3.91 0.435 2599 -2601 4 -75.85 42.81 -3.7 0.435 2600 -2602 4 -76.78 43.62 -3.56 0.435 2601 -2603 4 -77.69 44.12 -2.62 0.435 2602 -2604 4 -79.0 44.03 -2.51 0.435 2603 -2605 4 -79.27 44.03 -0.72 0.435 2604 -2606 4 -80.38 44.39 -0.7 0.435 2605 -2607 4 -80.59 44.4 -0.93 0.435 2606 -2608 4 -80.79 44.49 -1.98 0.435 2607 -2609 4 -81.02 44.91 -1.94 0.435 2608 -2610 4 -81.51 44.93 -0.22 0.435 2609 -2611 4 -81.76 44.77 1.18 0.435 2610 -2612 4 -82.24 45.04 2.41 0.435 2611 -2613 4 -82.5 45.16 3.24 0.435 2612 -2614 4 -82.56 45.71 4.13 0.435 2613 -2615 4 -83.1 47.14 4.85 0.435 2614 -2616 4 -83.58 47.72 5.21 0.435 2615 -2617 4 -84.26 48.09 5.31 0.435 2616 -2618 4 -85.57 47.97 5.72 0.435 2617 -2619 4 -87.37 48.93 5.84 0.435 2618 -2620 4 -88.9 49.05 5.82 0.435 2619 -2621 4 -90.44 49.35 6.2 0.435 2620 -2622 4 -91.98 49.68 6.27 0.435 2621 -2623 4 -93.13 50.66 6.57 0.435 2622 -2624 4 -94.31 51.87 6.82 0.435 2623 -2625 4 -94.99 52.24 6.99 0.435 2624 -2626 4 -95.45 52.6 7.39 0.435 2625 -2627 4 3.0 7.07 -2.66 3.035 1 -2628 4 2.98 7.28 -2.64 3.035 2627 -2629 4 3.48 9.68 -2.38 2.6 2628 -2630 4 4.2 11.88 -2.14 2.385 2629 -2631 4 4.5 14.03 -1.84 2.165 2630 -2632 4 5.01 16.22 -1.6 2.275 2631 -2633 4 4.91 18.79 -1.34 2.275 2632 -2634 4 5.35 19.38 -2.54 0.325 2633 -2635 4 6.38 20.08 -2.36 0.325 2634 -2636 4 6.81 20.1 -2.28 0.325 2635 -2637 4 7.24 20.62 -2.89 0.325 2636 -2638 4 7.47 20.74 -3.86 0.325 2637 -2639 4 7.88 21.71 -4.57 0.325 2638 -2640 4 8.29 22.21 -5.05 0.325 2639 -2641 4 8.72 22.29 -5.48 0.325 2640 -2642 4 9.13 22.97 -5.47 0.325 2641 -2643 4 9.73 23.65 -5.39 0.435 2642 -2644 4 10.73 24.99 -5.22 0.435 2643 -2645 4 11.24 27.18 -4.98 0.435 2644 -2646 4 11.42 27.83 -4.91 0.435 2645 -2647 4 11.81 28.81 -5.79 0.435 2646 -2648 4 12.47 29.42 -6.99 0.435 2647 -2649 4 13.07 30.91 -8.4 0.435 2648 -2650 4 13.46 31.59 -8.47 0.435 2649 -2651 4 13.72 31.76 -10.1 0.435 2650 -2652 4 14.88 34.0 -9.92 0.435 2651 -2653 4 16.1 35.4 -10.05 0.435 2652 -2654 4 16.73 36.17 -10.85 0.435 2653 -2655 4 17.16 36.23 -11.22 0.435 2654 -2656 4 17.37 37.27 -12.69 0.435 2655 -2657 4 17.75 38.19 -12.96 0.435 2656 -2658 4 18.17 38.67 -13.2 0.435 2657 -2659 4 18.35 39.89 -14.43 0.435 2658 -2660 4 18.52 40.81 -14.78 0.435 2659 -2661 4 18.5 41.57 -15.83 0.435 2660 -2662 4 18.49 42.34 -16.96 0.435 2661 -2663 4 18.68 43.06 -17.48 0.435 2662 -2664 4 19.01 45.1 -18.17 0.435 2663 -2665 4 19.33 46.85 -18.05 0.435 2664 -2666 4 19.8 47.26 -19.66 0.435 2665 -2667 4 20.15 48.07 -18.96 0.435 2666 -2668 4 20.74 49.19 -18.76 0.435 2667 -2669 4 21.11 50.08 -18.66 0.435 2668 -2670 4 21.73 51.13 -20.12 0.435 2669 -2671 4 21.96 51.95 -21.69 0.435 2670 -2672 4 22.08 53.47 -21.6 0.435 2671 -2673 4 22.66 54.59 -21.47 0.435 2672 -2674 4 22.99 56.11 -21.3 0.435 2673 -2675 4 23.38 57.02 -21.5 0.435 2674 -2676 4 23.55 57.93 -21.78 0.435 2675 -2677 4 23.74 58.91 -22.65 0.435 2676 -2678 4 24.33 60.07 -23.12 0.435 2677 -2679 4 24.5 60.77 -23.43 0.435 2678 -2680 4 5.64 19.91 -1.2 2.275 2633 -2681 4 5.48 22.49 -0.94 2.275 2680 -2682 4 5.36 24.41 -0.74 2.275 2681 -2683 4 5.46 26.14 -0.56 2.275 2682 -2684 4 5.78 27.88 -0.38 2.275 2683 -2685 4 5.94 28.84 -0.27 2.275 2684 -2686 4 5.28 28.75 0.23 0.54 2685 -2687 4 4.63 28.71 0.21 0.54 2686 -2688 4 4.42 28.71 0.12 0.54 2687 -2689 4 4.16 29.07 0.61 0.54 2688 -2690 4 2.59 29.3 1.73 0.54 2689 -2691 4 2.12 29.65 2.21 0.54 2690 -2692 4 1.04 29.55 2.54 0.54 2691 -2693 4 0.08 29.95 4.37 0.435 2692 -2694 4 -0.79 30.33 4.39 0.435 2693 -2695 4 -0.8 30.56 4.19 0.435 2694 -2696 4 -1.48 30.95 4.29 0.435 2695 -2697 4 -2.2 31.69 5.1 0.435 2696 -2698 4 -3.14 32.4 6.06 0.435 2697 -2699 4 -3.86 33.15 6.79 0.435 2698 -2700 4 -3.89 33.56 6.98 0.435 2699 -2701 4 -3.94 34.19 7.2 0.435 2700 -2702 4 -4.86 34.74 7.69 0.435 2701 -2703 4 -5.96 35.11 7.55 0.435 2702 -2704 4 -6.0 35.49 8.12 0.435 2703 -2705 4 -6.51 35.91 10.11 0.435 2704 -2706 4 -7.45 36.38 11.18 0.435 2705 -2707 4 -8.38 36.89 11.97 0.435 2706 -2708 4 -9.56 38.04 12.81 0.435 2707 -2709 4 -10.75 39.63 13.4 0.435 2708 -2710 4 -11.26 40.38 14.37 0.435 2709 -2711 4 -12.21 41.36 14.9 0.435 2710 -2712 4 -12.71 42.11 15.65 0.435 2711 -2713 4 -13.44 42.8 16.98 0.435 2712 -2714 4 -13.96 43.76 17.9 0.435 2713 -2715 4 -15.11 44.23 18.97 0.435 2714 -2716 4 -16.25 44.45 20.26 0.435 2715 -2717 4 -17.65 46.1 20.39 0.435 2716 -2718 4 -17.68 46.53 20.44 0.435 2717 -2719 4 -18.21 47.43 21.8 0.435 2718 -2720 4 -19.14 47.96 22.51 0.435 2719 -2721 4 -19.41 48.52 23.24 0.435 2720 -2722 4 -19.95 49.4 24.83 0.435 2721 -2723 4 -20.88 50.36 25.51 0.435 2722 -2724 4 -22.09 51.74 26.14 0.435 2723 -2725 4 -23.0 52.52 26.5 0.435 2724 -2726 4 -23.95 53.73 26.76 0.435 2725 -2727 4 -25.35 54.88 27.45 0.435 2726 -2728 4 -25.88 56.08 28.16 0.435 2727 -2729 4 -27.31 57.85 29.06 0.435 2728 -2730 4 -29.43 59.99 30.14 0.435 2729 -2731 4 -31.52 62.0 30.45 0.435 2730 -2732 4 -33.11 62.97 30.58 0.435 2731 -2733 4 -34.12 65.28 30.8 0.435 2732 -2734 4 -36.02 67.96 31.03 0.435 2733 -2735 4 -37.7 70.21 31.22 0.435 2734 -2736 4 -39.61 73.12 31.48 0.435 2735 -2737 4 -41.94 75.56 31.68 0.435 2736 -2738 4 -42.55 78.31 31.95 0.435 2737 -2739 4 -44.88 80.98 32.17 0.435 2738 -2740 4 -47.95 84.66 32.48 0.435 2739 -2741 4 -49.78 86.26 32.6 0.435 2740 -2742 4 -50.31 87.47 33.24 0.435 2741 -2743 4 -50.89 89.29 34.17 0.435 2742 -2744 4 -52.06 90.42 35.24 0.435 2743 -2745 4 -53.98 92.83 35.97 0.435 2744 -2746 4 -55.83 94.64 36.12 0.435 2745 -2747 4 -57.89 96.23 36.31 0.435 2746 -2748 4 -59.06 97.68 36.43 0.435 2747 -2749 4 -60.07 99.75 36.62 0.435 2748 -2750 4 -61.49 101.57 37.15 0.435 2749 -2751 4 -63.0 104.69 37.59 0.435 2750 -2752 4 -63.54 106.1 38.25 0.435 2751 -2753 4 -64.52 107.47 39.12 0.435 2752 -2754 4 -65.05 108.64 40.13 0.435 2753 -2755 4 -65.13 109.67 40.69 0.435 2754 -2756 4 -65.66 110.64 41.53 0.435 2755 -2757 4 -66.17 111.89 41.72 0.435 2756 -2758 4 -66.25 112.88 42.58 0.435 2757 -2759 4 -66.75 113.66 43.1 0.435 2758 -2760 4 -66.82 114.72 43.36 0.435 2759 -2761 4 -67.77 115.69 43.89 0.435 2760 -2762 4 -68.89 116.26 44.07 0.435 2761 -2763 4 -69.21 117.44 45.02 0.435 2762 -2764 4 -69.94 118.45 45.26 0.435 2763 -2765 4 -69.81 119.72 45.69 0.435 2764 -2766 4 -15.97 43.66 19.73 0.435 2715 -2767 4 -16.79 42.96 19.64 0.435 2766 -2768 4 -17.44 42.62 20.49 0.435 2767 -2769 4 -18.28 42.12 20.64 0.435 2768 -2770 4 -19.6 41.98 21.13 0.435 2769 -2771 4 -20.29 42.3 21.82 0.435 2770 -2772 4 -20.98 42.08 23.51 0.435 2771 -2773 4 -22.1 42.38 24.2 0.435 2772 -2774 4 -22.98 42.01 25.11 0.435 2773 -2775 4 -23.41 41.7 25.76 0.435 2774 -2776 4 -24.25 40.89 26.78 0.435 2775 -2777 4 -25.71 39.72 26.77 0.435 2776 -2778 4 -26.52 38.57 26.87 0.435 2777 -2779 4 -26.89 37.39 27.48 0.435 2778 -2780 4 -28.8 36.6 27.65 0.435 2779 -2781 4 -29.2 35.64 28.3 0.435 2780 -2782 4 -30.48 35.08 28.75 0.435 2781 -2783 4 -30.93 34.72 29.82 0.435 2782 -2784 4 -31.32 34.29 29.47 0.435 2783 -2785 4 -31.35 34.2 30.36 0.435 2784 -2786 4 -31.78 33.59 31.8 0.435 2785 -2787 4 -32.43 33.01 32.93 0.435 2786 -2788 4 -33.27 32.26 33.29 0.435 2787 -2789 4 -33.52 32.37 34.2 0.435 2788 -2790 4 6.3 30.1 -0.5 2.06 2685 -2791 4 6.21 32.13 -1.27 2.06 2790 -2792 4 6.31 33.86 -1.09 1.95 2791 -2793 4 6.23 35.76 -2.71 1.95 2792 -2794 4 6.32 37.92 -2.48 1.95 2793 -2795 4 6.01 39.27 -2.35 1.95 2794 -2796 4 5.11 39.05 -0.73 0.435 2795 -2797 4 4.71 38.83 -0.92 0.435 2796 -2798 4 4.27 38.81 -1.01 0.435 2797 -2799 4 3.83 38.75 -0.72 0.435 2798 -2800 4 2.99 38.26 -0.64 0.54 2799 -2801 4 1.74 37.32 -0.77 0.54 2800 -2802 4 0.47 36.55 -0.28 0.54 2801 -2803 4 0.01 36.37 1.11 0.54 2802 -2804 4 -0.41 36.04 1.9 0.54 2803 -2805 4 -1.24 35.32 2.03 0.54 2804 -2806 4 -2.32 35.03 2.12 0.54 2805 -2807 4 -3.16 34.49 2.58 0.54 2806 -2808 4 -3.56 33.53 3.23 0.54 2807 -2809 4 -3.97 33.05 3.47 0.54 2808 -2810 4 -4.65 33.43 3.49 0.54 2809 -2811 4 -4.56 34.54 5.49 0.435 2810 -2812 4 -4.38 35.2 5.56 0.435 2811 -2813 4 -4.41 35.35 6.18 0.435 2812 -2814 4 -4.49 36.09 7.31 0.435 2813 -2815 4 -4.53 36.44 8.1 0.435 2814 -2816 4 -5.02 36.78 8.88 0.435 2815 -2817 4 -5.07 37.4 9.09 0.435 2816 -2818 4 -4.3 38.92 9.64 0.435 2817 -2819 4 -4.98 39.28 9.96 0.435 2818 -2820 4 -5.46 40.11 10.04 0.435 2819 -2821 4 -5.95 40.72 10.09 0.435 2820 -2822 4 -6.91 42.38 10.24 0.435 2821 -2823 4 -8.51 43.58 10.32 0.435 2822 -2824 4 -9.87 44.35 10.37 0.435 2823 -2825 4 -11.2 44.64 10.97 0.435 2824 -2826 4 -11.68 45.26 11.03 0.435 2825 -2827 4 -11.93 45.89 11.09 0.435 2826 -2828 4 -11.95 46.35 10.83 0.435 2827 -2829 4 -12.36 46.7 9.2 0.435 2828 -2830 4 -12.19 46.79 10.57 0.435 2829 -2831 4 -12.65 46.94 10.96 0.435 2830 -2832 4 -12.9 47.07 11.72 0.435 2831 -2833 4 -12.74 47.88 12.4 0.435 2832 -2834 4 -13.17 47.86 12.39 0.435 2833 -2835 4 -13.23 48.17 13.55 0.435 2834 -2836 4 -13.71 48.52 14.1 0.435 2835 -2837 4 -14.04 50.15 14.8 0.435 2836 -2838 4 -14.72 50.53 15.04 0.435 2837 -2839 4 -15.23 51.29 15.71 0.435 2838 -2840 4 -4.82 32.52 3.85 0.54 2810 -2841 4 -6.34 32.12 4.59 0.54 2840 -2842 4 -6.8 31.97 5.84 0.54 2841 -2843 4 -7.67 31.93 5.67 0.435 2842 -2844 4 -8.73 31.66 5.62 0.435 2843 -2845 4 -9.17 31.08 6.75 0.435 2844 -2846 4 -10.06 31.46 6.77 0.435 2845 -2847 4 -10.96 32.03 6.81 0.435 2846 -2848 4 -11.67 32.86 6.88 0.435 2847 -2849 4 -12.09 32.85 6.72 0.435 2848 -2850 4 -12.54 32.51 7.65 0.435 2849 -2851 4 -12.78 32.65 8.19 0.435 2850 -2852 4 -13.2 32.42 8.08 0.435 2851 -2853 4 -13.59 31.99 7.73 0.435 2852 -2854 4 -14.01 31.2 8.84 0.435 2853 -2855 4 -14.4 30.29 8.96 0.435 2854 -2856 4 -14.8 29.54 9.71 0.435 2855 -2857 4 -15.42 28.54 10.64 0.435 2856 -2858 4 -16.03 27.56 11.35 0.435 2857 -2859 4 -16.47 27.25 11.92 0.325 2858 -2860 4 -16.87 26.82 11.63 0.325 2859 -2861 4 -16.87 26.81 11.78 0.325 2860 -2862 4 -17.31 26.51 12.27 0.325 2861 -2863 4 -17.3 26.0 13.04 0.325 2862 -2864 4 -17.73 25.68 13.75 0.325 2863 -2865 4 -17.71 25.2 14.16 0.325 2864 -2866 4 -18.15 24.93 14.42 0.325 2865 -2867 4 6.01 39.73 -3.51 1.95 2795 -2868 4 6.01 39.83 -3.5 1.95 2867 -2869 4 5.88 41.88 -3.29 1.735 2868 -2870 4 5.82 42.74 -3.2 1.735 2869 -2871 4 5.94 45.07 -4.62 1.735 2870 -2872 4 5.85 46.56 -4.46 1.735 2871 -2873 4 6.01 48.21 -5.65 1.735 2872 -2874 4 6.35 49.75 -5.55 1.735 2873 -2875 4 6.51 51.43 -7.11 1.735 2874 -2876 4 6.85 52.75 -6.97 1.735 2875 -2877 4 7.21 54.39 -7.92 1.735 2876 -2878 4 7.81 56.14 -9.68 1.735 2877 -2879 4 8.84 57.58 -10.48 1.735 2878 -2880 4 9.61 59.18 -10.75 1.735 2879 -2881 4 10.39 60.51 -10.6 1.735 2880 -2882 4 9.14 60.71 -12.41 0.54 2881 -2883 4 8.27 60.66 -12.44 0.54 2882 -2884 4 7.18 60.81 -12.38 0.54 2883 -2885 4 5.84 61.37 -12.35 0.54 2884 -2886 4 5.33 62.63 -12.24 0.54 2885 -2887 4 4.58 64.09 -12.1 0.54 2886 -2888 4 2.54 65.47 -12.01 0.54 2887 -2889 4 0.95 66.98 -12.95 0.54 2888 -2890 4 0.43 68.46 -12.8 0.54 2889 -2891 4 -0.12 70.35 -12.62 0.54 2890 -2892 4 -1.77 72.41 -12.45 0.54 2891 -2893 4 -3.09 72.76 -12.44 0.54 2892 -2894 4 -4.42 72.82 -11.71 0.54 2893 -2895 4 -6.0 73.57 -11.59 0.435 2894 -2896 4 -6.65 73.54 -11.61 0.435 2895 -2897 4 -7.79 74.85 -12.34 0.435 2896 -2898 4 -7.95 74.5 -13.35 0.435 2897 -2899 4 -7.94 75.08 -14.8 0.435 2898 -2900 4 -8.59 75.36 -15.84 0.435 2899 -2901 4 -9.19 75.51 -17.72 0.435 2900 -2902 4 -9.63 75.71 -17.71 0.435 2901 -2903 4 -9.87 75.92 -17.78 0.435 2902 -2904 4 -9.82 76.11 -19.56 0.435 2903 -2905 4 -9.81 76.19 -20.38 0.435 2904 -2906 4 -9.98 76.31 -21.65 0.435 2905 -2907 4 -9.94 76.47 -23.22 0.435 2906 -2908 4 -9.91 76.6 -24.49 0.435 2907 -2909 4 -10.31 75.93 -24.56 0.435 2908 -2910 4 -10.12 77.17 -26.01 0.435 2909 -2911 4 -11.26 77.95 -25.81 0.435 2910 -2912 4 -11.7 78.47 -26.97 0.435 2911 -2913 4 -11.66 78.61 -28.31 0.435 2912 -2914 4 -11.65 79.21 -29.98 0.435 2913 -2915 4 -11.65 79.51 -30.7 0.435 2914 -2916 4 -11.64 79.8 -31.43 0.435 2915 -2917 4 -11.42 80.12 -32.22 0.435 2916 -2918 4 -11.45 81.1 -33.33 0.435 2917 -2919 4 -11.45 81.65 -34.47 0.435 2918 -2920 4 -11.44 81.92 -35.04 0.435 2919 -2921 4 -12.33 82.57 -35.6 0.435 2920 -2922 4 -12.38 83.78 -36.76 0.435 2921 -2923 4 -12.38 84.32 -37.83 0.435 2922 -2924 4 -13.08 85.41 -38.27 0.435 2923 -2925 4 -13.08 85.94 -39.19 0.435 2924 -2926 4 -13.11 86.69 -40.17 0.435 2925 -2927 4 -12.9 87.2 -40.87 0.435 2926 -2928 4 -11.38 87.59 -41.55 0.435 2927 -2929 4 -11.34 87.74 -43.04 0.435 2928 -2930 4 -11.86 89.01 -42.99 0.435 2929 -2931 4 -11.88 89.72 -43.6 0.435 2930 -2932 4 -11.92 90.66 -44.26 0.435 2931 -2933 4 -12.17 91.55 -44.76 0.435 2932 -2934 4 -12.38 91.87 -45.79 0.435 2933 -2935 4 -12.84 92.56 -46.33 0.435 2934 -2936 4 -12.89 93.41 -46.33 0.435 2935 -2937 4 -13.78 94.34 -47.53 0.435 2936 -2938 4 -13.79 95.14 -48.89 0.435 2937 -2939 4 -13.59 95.6 -49.13 0.435 2938 -2940 4 -13.38 95.66 -49.5 0.435 2939 -2941 4 -12.95 96.19 -50.18 0.435 2940 -2942 4 -12.99 97.1 -50.54 0.435 2941 -2943 4 -13.01 97.58 -51.02 0.435 2942 -2944 4 -13.48 98.48 -51.62 0.435 2943 -2945 4 -14.09 98.57 -52.9 0.435 2944 -2946 4 -14.75 99.04 -53.7 0.435 2945 -2947 4 -15.41 99.52 -54.57 0.435 2946 -2948 4 -16.08 100.2 -55.19 0.435 2947 -2949 4 -16.27 100.26 -55.95 0.435 2948 -2950 4 -17.17 100.95 -56.87 0.435 2949 -2951 4 -18.99 102.35 -56.77 0.435 2950 -2952 4 -19.92 103.9 -57.69 0.435 2951 -2953 4 -20.8 104.63 -58.92 0.435 2952 -2954 4 -21.61 107.17 -58.75 0.435 2953 -2955 4 -22.15 108.84 -58.59 0.435 2954 -2956 4 -21.92 109.48 -60.25 0.435 2955 -2957 4 -22.48 111.38 -60.14 0.435 2956 -2958 4 -22.5 111.85 -60.55 0.435 2957 -2959 4 -20.93 115.05 -61.0 0.435 2958 -2960 4 -20.98 115.94 -61.36 0.435 2959 -2961 4 -20.8 116.64 -61.59 0.435 2960 -2962 4 -10.54 76.41 -25.12 0.435 2909 -2963 4 -10.72 76.53 -26.47 0.435 2962 -2964 4 -11.15 77.06 -27.64 0.435 2963 -2965 4 -11.13 77.16 -28.68 0.435 2964 -2966 4 -11.11 77.5 -29.77 0.435 2965 -2967 4 -11.12 77.77 -30.35 0.435 2966 -2968 4 -11.75 78.28 -31.59 0.435 2967 -2969 4 -12.86 78.67 -31.8 0.435 2968 -2970 4 -12.87 78.65 -31.57 0.435 2969 -2971 4 -13.28 78.72 -32.56 0.435 2970 -2972 4 -13.3 79.18 -32.82 0.435 2971 -2973 4 -14.16 79.43 -33.72 0.435 2972 -2974 4 -15.04 80.13 -34.64 0.435 2973 -2975 4 -15.94 80.48 -34.39 0.435 2974 -2976 4 -16.38 80.66 -34.25 0.435 2975 -2977 4 -16.4 80.85 -34.07 0.435 2976 -2978 4 -17.06 81.3 -34.57 0.435 2977 -2979 4 -17.71 81.26 -34.59 0.435 2978 -2980 4 -18.57 81.83 -36.36 0.435 2979 -2981 4 -19.22 81.99 -36.36 0.435 2980 -2982 4 -19.66 81.94 -36.14 0.435 2981 -2983 4 -20.54 82.39 -36.8 0.435 2982 -2984 4 -21.8 82.49 -38.63 0.435 2983 -2985 4 -23.06 82.52 -39.71 0.435 2984 -2986 4 -23.5 82.46 -39.43 0.435 2985 -2987 4 -23.49 82.51 -39.87 0.435 2986 -2988 4 -24.11 82.36 -40.88 0.435 2987 -2989 4 -24.95 82.12 -41.23 0.435 2988 -2990 4 -25.98 81.99 -42.69 0.435 2989 -2991 4 -27.03 81.83 -43.94 0.435 2990 -2992 4 -27.65 81.66 -44.73 0.435 2991 -2993 4 -29.6 81.8 -45.29 0.435 2992 -2994 4 -31.12 82.69 -46.51 0.435 2993 -2995 4 -32.18 82.76 -47.81 0.435 2994 -2996 4 -33.91 83.23 -49.16 0.435 2995 -2997 4 -35.18 83.24 -50.09 0.435 2996 -2998 4 -36.51 84.11 -50.94 0.435 2997 -2999 4 -37.97 83.93 -52.2 0.435 2998 -3000 4 -39.06 83.87 -52.38 0.435 2999 -3001 4 -40.72 83.47 -53.74 0.435 3000 -3002 4 -42.01 83.19 -53.88 0.435 3001 -3003 4 -43.69 82.48 -54.36 0.435 3002 -3004 4 -45.64 82.59 -54.55 0.435 3003 -3005 4 -46.48 82.12 -54.7 0.435 3004 -3006 4 -47.97 82.11 -55.64 0.435 3005 -3007 4 -48.84 82.56 -56.29 0.435 3006 -3008 4 -50.16 82.99 -56.96 0.435 3007 -3009 4 -51.19 83.1 -58.77 0.435 3008 -3010 4 -4.78 75.24 -12.23 0.54 2893 -3011 4 -6.22 77.52 -12.02 0.54 3010 -3012 4 -7.69 80.02 -11.8 0.54 3011 -3013 4 -7.97 81.89 -13.34 0.54 3012 -3014 4 -8.26 83.44 -13.86 0.54 3013 -3015 4 -8.3 84.39 -14.6 0.54 3014 -3016 4 -8.67 86.73 -14.44 0.54 3015 -3017 4 -9.65 88.88 -14.77 0.54 3016 -3018 4 -10.54 89.56 -15.55 0.54 3017 -3019 4 -10.6 90.92 -16.24 0.54 3018 -3020 4 -11.49 91.9 -17.89 0.54 3019 -3021 4 -11.49 92.43 -18.74 0.54 3020 -3022 4 -11.95 93.37 -19.71 0.54 3021 -3023 4 -13.83 95.86 -19.72 0.54 3022 -3024 4 -15.05 98.0 -20.13 0.54 3023 -3025 4 -16.44 99.95 -21.02 0.54 3024 -3026 4 -17.68 102.49 -21.16 0.54 3025 -3027 4 -18.65 104.16 -21.09 0.54 3026 -3028 4 -20.59 107.5 -20.86 0.54 3027 -3029 4 -21.64 110.5 -21.17 0.54 3028 -3030 4 -23.5 112.56 -21.09 0.54 3029 -3031 4 -25.02 116.15 -21.12 0.54 3030 -3032 4 -26.44 118.01 -21.04 0.54 3031 -3033 4 -27.85 119.64 -20.91 0.54 3032 -3034 4 -27.98 121.57 -20.71 0.54 3033 -3035 4 -27.92 124.16 -20.44 0.54 3034 -3036 4 -28.67 125.92 -20.65 0.435 3035 -3037 4 -29.2 127.4 -20.51 0.435 3036 -3038 4 -29.34 129.58 -20.67 0.435 3037 -3039 4 -29.5 132.15 -20.41 0.435 3038 -3040 4 -29.58 133.45 -20.5 0.435 3039 -3041 4 -30.37 135.78 -20.42 0.435 3040 -3042 4 -30.98 138.84 -20.88 0.435 3041 -3043 4 -31.67 139.92 -21.38 0.435 3042 -3044 4 -32.43 141.61 -21.23 0.435 3043 -3045 4 -33.45 143.91 -21.01 0.435 3044 -3046 4 -34.64 145.56 -20.87 0.435 3045 -3047 4 -36.27 147.18 -20.74 0.435 3046 -3048 4 -36.78 148.69 -20.9 0.435 3047 -3049 4 -37.45 152.32 -20.62 0.435 3048 -3050 4 -37.63 155.33 -20.53 0.435 3049 -3051 4 -38.17 157.06 -20.82 0.435 3050 -3052 4 -38.28 159.07 -21.29 0.435 3051 -3053 4 -39.1 161.85 -21.4 0.435 3052 -3054 4 -39.2 163.61 -21.75 0.435 3053 -3055 4 -39.68 164.7 -22.03 0.435 3054 -3056 4 -39.76 166.29 -22.69 0.435 3055 -3057 4 -39.83 167.62 -23.16 0.435 3056 -3058 4 -39.91 168.93 -23.17 0.435 3057 -3059 4 -39.99 170.24 -23.27 0.435 3058 -3060 4 -40.07 171.78 -23.57 0.435 3059 -3061 4 -40.11 172.44 -23.65 0.435 3060 -3062 4 -40.59 173.28 -23.64 0.435 3061 -3063 4 -41.06 174.22 -24.54 0.435 3062 -3064 4 -41.52 174.62 -24.51 0.435 3063 -3065 4 10.83 61.1 -11.73 1.735 2881 -3066 4 11.81 62.66 -11.55 1.735 3065 -3067 4 11.57 63.18 -11.5 1.735 3066 -3068 4 10.69 64.17 -13.38 0.54 3067 -3069 4 10.23 64.56 -13.2 0.54 3068 -3070 4 10.2 64.99 -13.15 0.54 3069 -3071 4 9.3 65.36 -13.14 0.54 3070 -3072 4 8.17 66.16 -13.08 0.54 3071 -3073 4 7.72 66.57 -13.2 0.54 3072 -3074 4 7.25 67.24 -13.59 0.54 3073 -3075 4 6.55 68.1 -13.97 0.54 3074 -3076 4 5.86 68.94 -14.12 0.54 3075 -3077 4 4.95 70.06 -15.02 0.54 3076 -3078 4 4.44 71.34 -15.05 0.54 3077 -3079 4 4.42 72.08 -15.95 0.54 3078 -3080 4 4.38 73.0 -16.38 0.54 3079 -3081 4 4.08 74.52 -16.61 0.54 3080 -3082 4 4.25 75.45 -17.11 0.54 3081 -3083 4 4.22 76.14 -17.49 0.54 3082 -3084 4 4.63 76.89 -18.16 0.54 3083 -3085 4 5.19 78.71 -18.71 0.435 3084 -3086 4 5.14 79.9 -19.65 0.435 3085 -3087 4 5.11 80.55 -19.73 0.435 3086 -3088 4 5.1 81.05 -20.43 0.435 3087 -3089 4 4.6 82.4 -21.21 0.435 3088 -3090 4 4.55 83.56 -21.91 0.435 3089 -3091 4 4.73 84.51 -22.49 0.435 3090 -3092 4 4.87 86.06 -22.77 0.435 3091 -3093 4 4.4 87.0 -23.74 0.435 3092 -3094 4 4.08 88.73 -23.8 0.435 3093 -3095 4 3.98 90.77 -24.72 0.435 3094 -3096 4 3.62 93.14 -24.79 0.435 3095 -3097 4 3.53 94.92 -25.21 0.435 3096 -3098 4 3.48 95.81 -25.42 0.435 3097 -3099 4 2.53 97.34 -26.19 0.435 3098 -3100 4 2.46 98.91 -26.7 0.435 3099 -3101 4 1.51 100.37 -26.65 0.435 3100 -3102 4 1.42 101.69 -26.89 0.435 3101 -3103 4 0.4 104.51 -27.46 0.435 3102 -3104 4 0.34 105.61 -27.65 0.435 3103 -3105 4 -0.74 109.23 -27.6 0.435 3104 -3106 4 -0.83 111.04 -28.24 0.435 3105 -3107 4 -0.92 112.82 -28.81 0.435 3106 -3108 4 -0.82 114.8 -28.84 0.435 3107 -3109 4 -0.86 115.69 -29.2 0.435 3108 -3110 4 -0.94 116.77 -29.16 0.435 3109 -3111 4 -0.77 117.95 -29.94 0.435 3110 -3112 4 -0.38 118.88 -30.28 0.435 3111 -3113 4 -0.82 119.6 -31.27 0.435 3112 -3114 4 -0.38 119.68 -31.78 0.435 3113 -3115 4 11.52 63.81 -11.43 1.735 3067 -3116 4 11.74 63.82 -11.43 1.735 3115 -3117 4 13.25 63.84 -11.47 1.735 3116 -3118 4 12.89 65.33 -9.36 0.435 3117 -3119 4 12.86 66.0 -9.52 0.435 3118 -3120 4 12.38 66.35 -9.04 0.435 3119 -3121 4 12.12 66.36 -7.24 0.435 3120 -3122 4 11.63 67.21 -7.24 0.435 3121 -3123 4 11.6 67.66 -7.41 0.435 3122 -3124 4 11.58 67.57 -6.53 0.435 3123 -3125 4 11.55 67.71 -5.76 0.435 3124 -3126 4 11.53 67.65 -5.16 0.435 3125 -3127 4 11.48 67.98 -4.3 0.435 3126 -3128 4 11.47 68.15 -3.91 0.435 3127 -3129 4 11.6 68.9 -2.54 0.435 3128 -3130 4 11.97 69.51 -1.86 0.435 3129 -3131 4 12.27 71.11 -0.41 0.435 3130 -3132 4 12.4 72.17 0.0 0.435 3131 -3133 4 12.9 74.54 0.4 0.435 3132 -3134 4 12.73 77.06 1.26 0.435 3133 -3135 4 12.81 78.97 1.76 0.435 3134 -3136 4 13.33 80.92 2.19 0.435 3135 -3137 4 13.03 81.37 3.89 0.435 3136 -3138 4 13.37 82.9 3.99 0.435 3137 -3139 4 13.94 84.23 4.21 0.435 3138 -3140 4 14.28 85.23 5.23 0.435 3139 -3141 4 14.23 85.58 6.09 0.435 3140 -3142 4 13.48 86.72 7.09 0.435 3141 -3143 4 13.17 88.21 7.24 0.435 3142 -3144 4 13.06 89.92 7.41 0.435 3143 -3145 4 12.95 91.64 7.59 0.435 3144 -3146 4 11.87 95.01 7.91 0.435 3145 -3147 4 12.01 95.28 9.68 0.435 3146 -3148 4 11.52 96.32 9.78 0.435 3147 -3149 4 11.44 97.4 9.81 0.435 3148 -3150 4 11.38 98.23 10.19 0.435 3149 -3151 4 11.35 98.63 10.54 0.435 3150 -3152 4 10.65 98.92 11.54 0.435 3151 -3153 4 10.17 99.46 12.25 0.435 3152 -3154 4 9.61 100.87 13.06 0.435 3153 -3155 4 9.55 101.71 13.3 0.435 3154 -3156 4 9.19 104.04 13.61 0.435 3155 -3157 4 9.07 105.97 13.81 0.435 3156 -3158 4 8.93 107.55 15.24 0.435 3157 -3159 4 8.79 109.7 15.46 0.435 3158 -3160 4 7.78 111.79 15.66 0.435 3159 -3161 4 7.23 113.42 16.41 0.435 3160 -3162 4 7.14 114.69 16.7 0.435 3161 -3163 4 7.26 116.18 17.08 0.435 3162 -3164 4 5.78 118.62 17.75 0.435 3163 -3165 4 5.29 119.67 17.92 0.435 3164 -3166 4 5.44 120.49 18.39 0.435 3165 -3167 4 5.72 122.61 19.07 0.435 3166 -3168 4 6.0 124.99 19.39 0.435 3167 -3169 4 6.73 127.18 19.64 0.435 3168 -3170 4 7.67 129.38 19.97 0.435 3169 -3171 4 9.27 131.62 20.31 0.435 3170 -3172 4 9.84 132.7 20.66 0.435 3171 -3173 4 10.56 134.66 21.26 0.435 3172 -3174 4 11.08 136.57 21.99 0.435 3173 -3175 4 11.64 137.83 22.67 0.435 3174 -3176 4 11.94 139.56 23.61 0.435 3175 -3177 4 12.46 141.23 24.62 0.435 3176 -3178 4 12.83 142.07 25.09 0.435 3177 -3179 4 13.15 143.55 25.71 0.435 3178 -3180 4 13.25 145.0 26.46 0.435 3179 -3181 4 14.59 147.82 27.31 0.435 3180 -3182 4 14.89 149.25 28.45 0.435 3181 -3183 4 15.2 150.4 30.22 0.435 3182 -3184 4 16.2 151.74 30.39 0.435 3183 -3185 4 16.82 152.18 30.75 0.435 3184 -3186 4 17.37 153.69 31.22 0.435 3185 -3187 4 17.9 154.62 33.14 0.435 3186 -3188 4 18.71 155.53 33.25 0.435 3187 -3189 4 19.64 157.39 34.75 0.435 3188 -3190 4 19.77 158.42 35.39 0.435 3189 -3191 4 20.74 160.19 35.66 0.435 3190 -3192 4 21.26 162.15 36.03 0.435 3191 -3193 4 22.91 163.28 36.57 0.435 3192 -3194 4 23.68 164.78 37.26 0.435 3193 -3195 4 24.03 165.84 37.68 0.435 3194 -3196 4 24.79 167.34 38.39 0.435 3195 -3197 4 24.84 169.66 39.23 0.435 3196 -3198 4 25.09 172.44 39.68 0.435 3197 -3199 4 24.97 174.12 40.3 0.435 3198 -3200 4 24.8 176.66 40.86 0.435 3199 -3201 4 24.7 177.86 41.74 0.435 3200 -3202 4 24.82 178.89 42.37 0.435 3201 -3203 4 24.01 181.41 42.76 0.435 3202 -3204 4 23.5 182.66 43.03 0.435 3203 -3205 4 23.39 184.36 43.28 0.435 3204 -3206 4 23.26 186.28 43.63 0.435 3205 -3207 4 22.7 187.88 44.53 0.435 3206 -3208 4 22.96 190.22 45.31 0.435 3207 -3209 4 23.5 191.94 45.8 0.435 3208 -3210 4 22.95 193.82 46.05 0.435 3209 -3211 4 23.02 195.76 46.41 0.435 3210 -3212 4 22.95 196.76 47.19 0.435 3211 -3213 4 22.88 197.31 48.15 0.435 3212 -3214 4 21.95 198.07 48.73 0.435 3213 -3215 4 22.29 199.59 48.9 0.435 3214 -3216 4 22.45 200.44 49.22 0.435 3215 -3217 4 22.37 201.19 50.27 0.435 3216 -3218 4 22.3 202.24 50.53 0.435 3217 -3219 4 21.82 202.86 50.58 0.435 3218 -3220 4 21.1 203.62 51.17 0.435 3219 -3221 4 20.21 203.99 51.26 0.435 3220 -3222 4 19.9 205.44 51.71 0.435 3221 -3223 4 20.42 207.19 51.97 0.435 3222 -3224 4 21.61 208.97 52.42 0.435 3223 -3225 4 22.34 211.16 52.73 0.435 3224 -3226 4 24.35 213.47 53.1 0.435 3225 -3227 4 24.84 215.84 53.66 0.435 3226 -3228 4 25.98 218.24 54.3 0.435 3227 -3229 4 26.73 219.72 55.16 0.435 3228 -3230 4 27.48 221.44 55.81 0.435 3229 -3231 4 27.98 223.81 56.37 0.435 3230 -3232 4 28.33 224.65 56.91 0.435 3231 -3233 4 29.14 225.76 57.12 0.435 3232 -3234 4 29.24 227.22 57.8 0.435 3233 -3235 4 29.79 228.5 58.4 0.435 3234 -3236 4 30.33 230.21 58.96 0.435 3235 -3237 4 30.69 231.3 59.24 0.435 3236 -3238 4 30.8 232.52 60.19 0.435 3237 -3239 4 30.71 233.79 60.4 0.435 3238 -3240 4 14.76 86.98 7.6 0.435 3141 -3241 4 15.26 88.6 9.07 0.435 3240 -3242 4 15.39 89.85 9.57 0.435 3241 -3243 4 15.1 90.35 10.91 0.435 3242 -3244 4 15.22 91.87 11.07 0.435 3243 -3245 4 15.79 93.19 11.22 0.435 3244 -3246 4 15.76 94.42 9.83 0.325 3245 -3247 4 15.0 96.1 9.99 0.325 3246 -3248 4 14.21 98.2 10.19 0.325 3247 -3249 4 13.43 100.31 10.39 0.325 3248 -3250 4 12.58 103.47 10.69 0.325 3249 -3251 4 12.58 106.7 11.03 0.325 3250 -3252 4 14.55 64.69 -12.56 1.735 3117 -3253 4 15.81 65.98 -13.89 1.735 3252 -3254 4 16.36 67.52 -13.72 1.735 3253 -3255 4 16.59 67.59 -14.31 0.435 3254 -3256 4 17.05 67.18 -14.27 0.435 3255 -3257 4 17.53 66.85 -14.97 0.435 3256 -3258 4 17.97 66.91 -15.26 0.435 3257 -3259 4 17.76 66.94 -15.71 0.435 3258 -3260 4 18.22 67.07 -16.67 0.435 3259 -3261 4 18.67 67.16 -17.25 0.435 3260 -3262 4 19.12 66.8 -17.65 0.435 3261 -3263 4 19.58 66.61 -17.74 0.435 3262 -3264 4 20.04 66.21 -17.77 0.435 3263 -3265 4 20.92 66.3 -18.11 0.435 3264 -3266 4 21.74 67.02 -18.25 0.435 3265 -3267 4 22.55 67.93 -18.14 0.435 3266 -3268 4 22.96 68.41 -18.37 0.435 3267 -3269 4 23.5 70.22 -18.62 0.435 3268 -3270 4 24.35 70.71 -18.7 0.435 3269 -3271 4 24.6 71.08 -20.17 0.435 3270 -3272 4 24.77 71.55 -20.2 0.435 3271 -3273 4 25.42 72.35 -21.37 0.435 3272 -3274 4 25.44 72.44 -22.27 0.435 3273 -3275 4 26.1 72.54 -22.78 0.435 3274 -3276 4 26.91 73.47 -22.81 0.435 3275 -3277 4 26.93 73.57 -23.7 0.435 3276 -3278 4 27.56 74.06 -23.93 0.435 3277 -3279 4 27.76 74.79 -24.61 0.435 3278 -3280 4 27.99 74.91 -25.57 0.435 3279 -3281 4 28.64 74.96 -25.7 0.435 3280 -3282 4 29.24 75.88 -25.82 0.435 3281 -3283 4 29.46 75.91 -26.04 0.435 3282 -3284 4 29.7 76.01 -26.78 0.435 3283 -3285 4 30.58 76.15 -27.65 0.435 3284 -3286 4 30.82 75.97 -27.96 0.435 3285 -3287 4 31.27 76.09 -28.76 0.435 3286 -3288 4 31.28 76.14 -29.28 0.435 3287 -3289 4 32.19 75.82 -29.9 0.435 3288 -3290 4 32.43 75.94 -30.78 0.435 3289 -3291 4 33.12 75.59 -31.18 0.435 3290 -3292 4 33.35 75.45 -31.87 0.435 3291 -3293 4 33.84 75.15 -32.87 0.435 3292 -3294 4 34.33 74.57 -33.29 0.435 3293 -3295 4 35.03 74.06 -34.15 0.435 3294 -3296 4 35.52 73.23 -34.31 0.435 3295 -3297 4 36.01 72.94 -35.38 0.435 3296 -3298 4 36.49 72.37 -35.8 0.435 3297 -3299 4 36.58 71.36 -36.59 0.435 3298 -3300 4 37.28 70.55 -36.73 0.435 3299 -3301 4 37.57 69.76 -37.33 0.435 3300 -3302 4 37.84 69.24 -38.44 0.435 3301 -3303 4 38.1 68.89 -39.14 0.435 3302 -3304 4 38.35 68.49 -39.33 0.435 3303 -3305 4 38.57 69.09 -40.77 0.435 3304 -3306 4 39.04 68.68 -40.72 0.435 3305 -3307 4 39.46 68.69 -40.56 0.435 3306 -3308 4 39.71 68.28 -40.67 0.435 3307 -3309 4 39.96 67.9 -41.01 0.435 3308 -3310 4 40.45 67.35 -41.73 0.435 3309 -3311 4 40.72 66.78 -42.38 0.435 3310 -3312 4 40.73 66.8 -42.61 0.435 3311 -3313 4 40.78 66.79 -44.49 0.435 3312 -3314 4 41.04 66.72 -45.77 0.435 3313 -3315 4 41.07 66.56 -46.39 0.435 3314 -3316 4 41.32 66.69 -47.51 0.435 3315 -3317 4 41.6 65.92 -48.34 0.435 3316 -3318 4 41.64 65.87 -49.85 0.435 3317 -3319 4 41.67 66.0 -51.11 0.435 3318 -3320 4 41.94 65.66 -52.05 0.435 3319 -3321 4 41.98 65.53 -52.73 0.435 3320 -3322 4 42.21 65.35 -53.05 0.435 3321 -3323 4 42.24 65.49 -54.32 0.435 3322 -3324 4 42.47 65.6 -55.28 0.435 3323 -3325 4 42.51 65.46 -55.89 0.435 3324 -3326 4 42.54 65.59 -57.24 0.435 3325 -3327 4 42.79 65.5 -58.37 0.435 3326 -3328 4 43.28 65.21 -59.52 0.435 3327 -3329 4 43.54 65.11 -60.43 0.435 3328 -3330 4 43.98 64.94 -60.66 0.435 3329 -3331 4 44.43 64.77 -60.82 0.435 3330 -3332 4 44.91 64.44 -61.59 0.435 3331 -3333 4 45.37 64.05 -61.7 0.435 3332 -3334 4 45.82 63.87 -61.86 0.435 3333 -3335 4 46.48 63.71 -61.93 0.435 3334 -3336 4 47.57 63.79 -61.98 0.435 3335 -3337 4 48.37 64.69 -61.87 0.435 3336 -3338 4 48.83 64.82 -62.82 0.435 3337 -3339 4 48.86 64.93 -63.86 0.435 3338 -3340 4 49.29 64.96 -63.92 0.435 3339 -3341 4 49.53 65.08 -64.89 0.435 3340 -3342 4 50.82 65.65 -65.4 0.435 3341 -3343 4 52.12 65.5 -65.24 0.435 3342 -3344 4 53.39 65.98 -64.92 0.435 3343 -3345 4 54.04 66.02 -64.91 0.435 3344 -3346 4 55.14 65.66 -64.92 0.435 3345 -3347 4 56.66 65.75 -64.8 0.435 3346 -3348 4 57.54 65.36 -64.82 0.435 3347 -3349 4 58.62 65.42 -64.79 0.435 3348 -3350 4 59.07 65.22 -64.65 0.435 3349 -3351 4 60.58 65.58 -65.03 0.435 3350 -3352 4 61.44 65.63 -65.0 0.435 3351 -3353 4 61.67 65.66 -65.14 0.435 3352 -3354 4 62.15 65.15 -66.16 0.435 3353 -3355 4 62.63 65.04 -67.0 0.435 3354 -3356 4 62.87 64.66 -67.4 0.435 3355 -3357 4 63.35 64.32 -67.95 0.435 3356 -3358 4 64.03 63.95 -68.12 0.435 3357 -3359 4 65.16 63.42 -68.6 0.435 3358 -3360 4 65.86 63.12 -69.6 0.435 3359 -3361 4 66.29 63.16 -69.74 0.435 3360 -3362 4 67.0 62.64 -70.53 0.435 3361 -3363 4 67.91 62.34 -71.29 0.435 3362 -3364 4 68.61 61.75 -71.49 0.435 3363 -3365 4 68.63 61.58 -71.88 0.435 3364 -3366 4 69.09 61.2 -72.21 0.435 3365 -3367 4 69.59 60.93 -73.5 0.435 3366 -3368 4 70.06 60.58 -74.06 0.435 3367 -3369 4 70.3 60.72 -75.17 0.435 3368 -3370 4 70.78 60.38 -75.87 0.435 3369 -3371 4 71.04 60.33 -77.3 0.435 3370 -3372 4 71.5 59.94 -77.41 0.435 3371 -3373 4 71.99 59.13 -77.7 0.435 3372 -3374 4 72.18 59.27 -76.93 0.435 3373 -3375 4 72.39 59.29 -76.92 0.435 3374 -3376 4 72.63 58.86 -76.81 0.435 3375 -3377 4 72.63 58.9 -77.19 0.435 3376 -3378 4 72.87 58.99 -78.0 0.435 3377 -3379 4 73.1 59.57 -79.21 0.435 3378 -3380 4 74.62 59.45 -79.19 0.435 3379 -3381 4 74.86 59.55 -80.01 0.435 3380 -3382 4 74.89 59.7 -81.42 0.435 3381 -3383 4 75.78 59.55 -81.64 0.435 3382 -3384 4 76.0 59.59 -81.94 0.435 3383 -3385 4 76.47 59.49 -82.69 0.435 3384 -3386 4 76.92 59.63 -83.79 0.435 3385 -3387 4 77.38 59.5 -84.4 0.435 3386 -3388 4 77.66 59.49 -86.27 0.435 3387 -3389 4 78.1 59.31 -86.36 0.435 3388 -3390 4 78.36 59.22 -87.42 0.435 3389 -3391 4 78.59 59.27 -87.78 0.435 3390 -3392 4 79.03 59.39 -88.66 0.435 3391 -3393 4 79.72 59.04 -89.06 0.435 3392 -3394 4 80.0 58.79 -90.73 0.435 3393 -3395 4 81.14 58.24 -90.99 0.435 3394 -3396 4 82.05 57.71 -91.55 0.435 3395 -3397 4 82.73 57.31 -91.58 0.435 3396 -3398 4 83.82 57.18 -91.64 0.435 3397 -3399 4 16.39 67.89 -15.27 1.735 3254 -3400 4 16.95 69.7 -16.05 1.515 3399 -3401 4 17.06 71.43 -15.87 1.515 3400 -3402 4 17.17 72.62 -14.76 1.41 3401 -3403 4 17.53 73.74 -14.79 1.515 3402 -3404 4 17.48 74.59 -14.7 1.515 3403 -3405 4 17.45 75.02 -14.66 1.515 3404 -3406 4 16.45 73.5 -14.24 0.435 3405 -3407 4 15.36 73.43 -14.27 0.435 3406 -3408 4 13.39 73.76 -14.35 0.435 3407 -3409 4 11.64 74.09 -14.44 0.435 3408 -3410 4 10.05 74.79 -13.8 0.435 3409 -3411 4 9.35 75.57 -13.44 0.435 3410 -3412 4 7.4 75.18 -12.92 0.435 3411 -3413 4 4.82 74.81 -13.02 0.435 3412 -3414 4 2.25 74.44 -13.12 0.435 3413 -3415 4 0.35 73.55 -13.25 0.435 3414 -3416 4 -1.0 74.06 -12.63 0.435 3415 -3417 4 -1.47 74.68 -12.58 0.435 3416 -3418 4 -2.36 75.29 -12.76 0.435 3417 -3419 4 -3.73 75.48 -11.19 0.435 3418 -3420 4 -4.63 76.06 -11.15 0.435 3419 -3421 4 -5.51 76.84 -11.09 0.435 3420 -3422 4 -6.02 77.84 -10.48 0.435 3421 -3423 4 -6.09 78.91 -10.37 0.435 3422 -3424 4 -6.59 79.95 -10.27 0.435 3423 -3425 4 -6.67 81.03 -10.16 0.435 3424 -3426 4 -6.5 82.16 -10.5 0.435 3425 -3427 4 -6.63 84.09 -10.3 0.435 3426 -3428 4 -7.17 85.98 -10.12 0.435 3427 -3429 4 -8.66 88.7 -9.87 0.435 3428 -3430 4 -10.18 92.25 -9.54 0.435 3429 -3431 4 -11.29 95.29 -7.96 0.435 3430 -3432 4 -12.28 97.37 -7.77 0.435 3431 -3433 4 -13.72 99.44 -7.52 0.435 3432 -3434 4 -14.51 101.54 -7.32 0.435 3433 -3435 4 -15.74 103.54 -6.46 0.435 3434 -3436 4 -17.2 105.51 -5.39 0.435 3435 -3437 4 -18.65 107.78 -5.11 0.435 3436 -3438 4 -20.35 110.44 -4.58 0.435 3437 -3439 4 -20.51 113.02 -4.31 0.435 3438 -3440 4 -20.41 114.73 -3.9 0.435 3439 -3441 4 -22.87 119.29 -3.49 0.435 3440 -3442 4 -24.08 121.16 -3.33 0.435 3441 -3443 4 -25.03 122.33 -2.62 0.435 3442 -3444 4 -25.14 123.81 -2.18 0.435 3443 -3445 4 -25.19 123.83 -0.22 0.435 3444 -3446 4 -26.19 124.85 1.74 0.435 3445 -3447 4 -27.85 127.13 1.94 0.435 3446 -3448 4 -28.31 127.53 1.97 0.435 3447 -3449 4 -28.82 128.79 2.09 0.435 3448 -3450 4 -29.33 129.3 3.03 0.435 3449 -3451 4 -30.29 130.73 3.38 0.435 3450 -3452 4 -30.4 132.44 3.71 0.435 3451 -3453 4 -31.42 134.48 4.26 0.435 3452 -3454 4 -32.49 137.39 4.92 0.435 3453 -3455 4 -33.02 138.81 5.58 0.435 3454 -3456 4 -32.92 140.5 6.14 0.435 3455 -3457 4 -32.85 142.62 6.66 0.435 3456 -3458 4 -33.39 144.08 7.02 0.435 3457 -3459 4 -33.95 145.92 7.73 0.435 3458 -3460 4 -34.52 147.79 8.28 0.435 3459 -3461 4 -35.1 150.11 8.59 0.435 3460 -3462 4 -35.18 151.11 9.37 0.435 3461 -3463 4 -36.59 152.73 9.58 0.435 3462 -3464 4 -37.54 153.97 9.69 0.435 3463 -3465 4 -37.63 155.25 9.89 0.435 3464 -3466 4 -37.46 156.05 10.05 0.435 3465 -3467 4 -37.53 156.86 10.66 0.435 3466 -3468 4 -37.4 157.55 12.39 0.435 3467 -3469 4 -37.01 158.22 12.47 0.435 3468 -3470 4 -37.06 158.85 12.76 0.435 3469 -3471 4 -36.67 159.26 13.26 0.435 3470 -3472 4 -24.84 124.92 -0.1 0.435 3445 -3473 4 -24.92 126.2 0.02 0.435 3472 -3474 4 -24.99 127.3 -0.08 0.435 3473 -3475 4 -24.46 129.01 0.55 0.435 3474 -3476 4 -24.35 130.72 0.8 0.435 3475 -3477 4 -24.97 133.45 1.37 0.435 3476 -3478 4 -25.4 136.85 1.87 0.435 3477 -3479 4 -25.47 137.64 2.63 0.435 3478 -3480 4 -26.48 139.71 2.97 0.435 3479 -3481 4 -27.47 141.56 3.36 0.435 3480 -3482 4 -5.99 76.83 -10.88 0.435 3421 -3483 4 -7.05 76.32 -10.88 0.435 3482 -3484 4 -9.26 76.79 -10.58 0.435 3483 -3485 4 -9.91 76.17 -9.08 0.435 3484 -3486 4 -12.01 74.73 -9.05 0.435 3485 -3487 4 -14.12 73.95 -9.11 0.435 3486 -3488 4 -15.62 73.64 -9.18 0.435 3487 -3489 4 -19.31 73.63 -9.19 0.435 3488 -3490 4 -21.22 72.86 -9.31 0.435 3489 -3491 4 -22.9 71.89 -9.38 0.435 3490 -3492 4 -24.41 71.79 -9.35 0.435 3491 -3493 4 -26.13 71.45 -9.2 0.435 3492 -3494 4 -30.21 70.75 -9.22 0.435 3493 -3495 4 -33.67 70.54 -9.32 0.435 3494 -3496 4 -36.46 69.95 -9.45 0.435 3495 -3497 4 -38.34 68.95 -9.45 0.435 3496 -3498 4 -40.88 67.93 -9.61 0.435 3497 -3499 4 -44.5 66.64 -9.83 0.435 3498 -3500 4 -47.67 65.37 -10.04 0.435 3499 -3501 4 -50.67 64.75 -10.17 0.435 3500 -3502 4 -54.34 64.54 -10.28 0.435 3501 -3503 4 -58.4 63.64 -10.47 0.435 3502 -3504 4 -60.7 62.21 -10.67 0.435 3503 -3505 4 -63.37 59.9 -10.98 0.435 3504 -3506 4 -64.95 57.43 -11.27 0.435 3505 -3507 4 -67.84 55.11 -11.58 0.435 3506 -3508 4 -69.04 53.53 -11.77 0.435 3507 -3509 4 -69.82 52.19 -11.93 0.435 3508 -3510 4 -0.14 74.49 -13.09 0.435 3415 -3511 4 -2.29 74.13 -12.96 0.435 3510 -3512 4 -4.92 74.34 -12.39 0.435 3511 -3513 4 -7.74 74.17 -12.48 0.435 3512 -3514 4 -9.88 73.6 -12.52 0.435 3513 -3515 4 -11.39 73.5 -12.56 0.435 3514 -3516 4 -13.11 73.17 -12.56 0.435 3515 -3517 4 -13.92 72.47 -12.65 0.435 3516 -3518 4 -14.71 71.15 -12.8 0.435 3517 -3519 4 -15.47 69.1 -12.43 0.435 3518 -3520 4 -16.66 67.3 -12.57 0.435 3519 -3521 4 -17.45 65.89 -12.06 0.435 3520 -3522 4 -18.2 63.9 -12.21 0.435 3521 -3523 4 -18.15 63.47 -12.86 0.435 3522 -3524 4 -18.55 62.79 -12.63 0.435 3523 -3525 4 -18.95 62.39 -13.21 0.435 3524 -3526 4 -19.88 60.72 -14.61 0.435 3525 -3527 4 -21.28 58.7 -14.85 0.435 3526 -3528 4 -22.06 57.89 -15.86 0.435 3527 -3529 4 -22.41 56.6 -16.22 0.435 3528 -3530 4 -23.38 54.82 -16.51 0.435 3529 -3531 4 -24.54 52.88 -17.41 0.435 3530 -3532 4 -26.19 51.72 -17.72 0.435 3531 -3533 4 -26.54 50.68 -18.44 0.435 3532 -3534 4 -27.04 48.57 -19.42 0.435 3533 -3535 4 -27.38 47.06 -19.59 0.435 3534 -3536 4 -28.17 45.94 -19.8 0.435 3535 -3537 4 -28.93 44.39 -20.05 0.435 3536 -3538 4 -29.72 43.86 -21.56 0.435 3537 -3539 4 -30.65 41.7 -22.33 0.435 3538 -3540 4 -30.36 40.42 -22.53 0.435 3539 -3541 4 -30.27 39.45 -23.46 0.435 3540 -3542 4 -31.39 36.61 -24.08 0.435 3541 -3543 4 -31.96 35.79 -24.86 0.435 3542 -3544 4 -32.3 34.47 -25.08 0.435 3543 -3545 4 -33.54 33.32 -25.23 0.435 3544 -3546 4 -33.44 32.35 -26.23 0.435 3545 -3547 4 -33.76 30.65 -26.79 0.435 3546 -3548 4 -34.11 29.86 -27.86 0.435 3547 -3549 4 -34.46 28.81 -28.43 0.435 3548 -3550 4 -35.04 28.29 -30.08 0.435 3549 -3551 4 -35.8 26.74 -30.26 0.435 3550 -3552 4 -36.6 25.61 -30.24 0.435 3551 -3553 4 -36.34 25.0 -30.67 0.435 3552 -3554 4 -36.7 24.46 -32.02 0.435 3553 -3555 4 -36.98 22.37 -32.85 0.435 3554 -3556 4 17.35 77.3 -15.78 1.515 3404 -3557 4 17.49 78.38 -15.67 1.515 3556 -3558 4 18.01 80.57 -15.5 1.41 3557 -3559 4 18.55 82.33 -15.31 1.41 3558 -3560 4 19.09 84.08 -15.11 1.41 3559 -3561 4 20.1 85.76 -16.05 1.41 3560 -3562 4 20.64 87.52 -15.85 1.41 3561 -3563 4 21.46 88.75 -16.75 1.41 3562 -3564 4 22.34 88.42 -16.77 1.41 3563 -3565 4 23.52 87.51 -17.74 0.54 3564 -3566 4 23.95 87.53 -17.73 0.54 3565 -3567 4 24.17 87.53 -17.5 0.54 3566 -3568 4 24.41 87.16 -17.99 0.54 3567 -3569 4 25.11 86.91 -19.35 0.54 3568 -3570 4 25.6 86.31 -19.62 0.54 3569 -3571 4 26.32 85.31 -19.94 0.54 3570 -3572 4 26.79 84.93 -20.27 0.54 3571 -3573 4 27.28 84.13 -20.56 0.54 3572 -3574 4 27.74 84.02 -21.32 0.54 3573 -3575 4 28.44 83.42 -21.51 0.54 3574 -3576 4 29.36 82.93 -22.45 0.54 3575 -3577 4 30.08 82.47 -23.84 0.54 3576 -3578 4 30.53 82.53 -24.12 0.54 3577 -3579 4 31.02 82.28 -25.64 0.54 3578 -3580 4 31.51 81.73 -26.44 0.54 3579 -3581 4 31.98 81.4 -26.99 0.54 3580 -3582 4 32.48 80.89 -28.16 0.54 3581 -3583 4 32.74 80.26 -28.3 0.54 3582 -3584 4 33.21 79.91 -28.77 0.54 3583 -3585 4 33.27 79.1 -29.23 0.54 3584 -3586 4 33.53 78.73 -29.79 0.54 3585 -3587 4 34.01 78.41 -30.57 0.54 3586 -3588 4 34.69 78.04 -30.81 0.54 3587 -3589 4 35.37 77.67 -30.99 0.54 3588 -3590 4 36.26 77.57 -31.51 0.54 3589 -3591 4 36.73 77.44 -32.18 0.54 3590 -3592 4 36.96 77.25 -32.35 0.54 3591 -3593 4 37.4 77.09 -32.51 0.54 3592 -3594 4 37.87 76.73 -32.92 0.54 3593 -3595 4 38.35 76.38 -33.46 0.54 3594 -3596 4 38.82 76.03 -34.09 0.54 3595 -3597 4 39.54 75.27 -34.68 0.54 3596 -3598 4 40.68 74.26 -34.83 0.54 3597 -3599 4 40.93 73.87 -35.02 0.54 3598 -3600 4 41.0 73.31 -35.98 0.54 3599 -3601 4 41.73 72.6 -37.01 0.54 3600 -3602 4 42.19 72.5 -37.85 0.54 3601 -3603 4 42.9 71.71 -38.21 0.54 3602 -3604 4 42.92 71.53 -38.6 0.54 3603 -3605 4 43.41 70.98 -39.18 0.54 3604 -3606 4 43.88 70.63 -39.73 0.54 3605 -3607 4 44.39 69.88 -40.7 0.54 3606 -3608 4 45.08 69.07 -40.77 0.54 3607 -3609 4 45.56 68.45 -40.82 0.54 3608 -3610 4 46.27 67.65 -41.04 0.54 3609 -3611 4 47.36 67.79 -41.67 0.54 3610 -3612 4 48.06 67.46 -42.29 0.54 3611 -3613 4 48.49 67.5 -42.43 0.54 3612 -3614 4 48.75 66.85 -42.27 0.54 3613 -3615 4 48.75 66.87 -42.42 0.54 3614 -3616 4 49.47 66.68 -44.38 0.54 3615 -3617 4 49.47 66.7 -44.53 0.54 3616 -3618 4 49.96 66.14 -45.18 0.54 3617 -3619 4 50.22 65.76 -45.58 0.54 3618 -3620 4 50.92 65.22 -46.3 0.54 3619 -3621 4 51.38 64.82 -46.33 0.54 3620 -3622 4 51.84 64.46 -46.74 0.54 3621 -3623 4 52.52 64.08 -46.83 0.54 3622 -3624 4 52.99 63.99 -47.81 0.54 3623 -3625 4 53.23 63.85 -48.28 0.54 3624 -3626 4 53.26 63.73 -49.26 0.54 3625 -3627 4 53.3 63.87 -50.6 0.54 3626 -3628 4 53.77 63.47 -50.71 0.54 3627 -3629 4 53.84 62.68 -51.47 0.435 3628 -3630 4 53.87 62.53 -52.16 0.435 3629 -3631 4 53.66 62.32 -52.33 0.435 3630 -3632 4 54.12 61.92 -52.37 0.435 3631 -3633 4 54.8 61.29 -52.26 0.435 3632 -3634 4 55.48 60.92 -52.37 0.435 3633 -3635 4 55.94 60.74 -52.44 0.435 3634 -3636 4 56.67 60.01 -53.34 0.435 3635 -3637 4 57.14 59.18 -53.41 0.435 3636 -3638 4 57.41 58.55 -53.54 0.435 3637 -3639 4 57.9 57.73 -53.69 0.435 3638 -3640 4 58.36 57.36 -54.02 0.435 3639 -3641 4 58.83 56.99 -54.35 0.435 3640 -3642 4 59.52 56.71 -55.34 0.435 3641 -3643 4 59.99 56.59 -56.1 0.435 3642 -3644 4 60.7 56.1 -57.19 0.435 3643 -3645 4 61.18 55.79 -58.11 0.435 3644 -3646 4 61.65 55.4 -58.29 0.435 3645 -3647 4 62.14 55.15 -59.74 0.435 3646 -3648 4 62.63 54.63 -60.76 0.435 3647 -3649 4 62.91 54.35 -62.06 0.435 3648 -3650 4 63.18 53.75 -62.5 0.435 3649 -3651 4 63.68 53.28 -63.96 0.435 3650 -3652 4 63.73 52.95 -64.97 0.435 3651 -3653 4 64.24 52.46 -66.3 0.435 3652 -3654 4 64.48 52.33 -66.98 0.435 3653 -3655 4 64.97 51.83 -68.08 0.435 3654 -3656 4 65.23 51.43 -68.26 0.435 3655 -3657 4 65.5 50.85 -68.84 0.435 3656 -3658 4 65.54 50.75 -69.9 0.435 3657 -3659 4 65.79 50.96 -71.84 0.435 3658 -3660 4 66.29 50.71 -73.21 0.435 3659 -3661 4 66.34 50.61 -74.43 0.435 3660 -3662 4 67.5 49.67 -75.25 0.435 3661 -3663 4 67.99 49.17 -76.35 0.435 3662 -3664 4 68.93 48.42 -76.92 0.435 3663 -3665 4 69.39 48.27 -77.31 0.435 3664 -3666 4 70.3 47.72 -77.72 0.435 3665 -3667 4 71.01 47.23 -78.89 0.435 3666 -3668 4 71.95 46.73 -79.82 0.435 3667 -3669 4 72.83 46.36 -79.84 0.435 3668 -3670 4 74.2 45.88 -80.75 0.435 3669 -3671 4 74.86 45.72 -80.83 0.435 3670 -3672 4 75.51 45.76 -80.88 0.435 3671 -3673 4 76.62 45.43 -81.12 0.435 3672 -3674 4 77.75 44.88 -81.38 0.435 3673 -3675 4 79.75 44.4 -81.83 0.435 3674 -3676 4 81.09 43.62 -81.88 0.435 3675 -3677 4 82.23 42.83 -82.01 0.435 3676 -3678 4 83.38 42.08 -82.44 0.435 3677 -3679 4 84.96 41.1 -82.58 0.435 3678 -3680 4 86.52 40.56 -82.6 0.435 3679 -3681 4 87.63 40.0 -82.7 0.435 3680 -3682 4 22.05 89.61 -16.28 1.41 3564 -3683 4 22.63 90.56 -16.17 1.41 3682 -3684 4 23.48 90.8 -15.89 0.54 3683 -3685 4 23.92 90.6 -15.83 0.54 3684 -3686 4 24.11 91.04 -15.78 0.54 3685 -3687 4 24.13 91.15 -16.82 0.54 3686 -3688 4 24.37 90.97 -17.06 0.54 3687 -3689 4 24.6 91.05 -17.65 0.54 3688 -3690 4 24.62 91.13 -18.39 0.54 3689 -3691 4 24.84 91.18 -18.84 0.54 3690 -3692 4 24.86 91.27 -19.66 0.54 3691 -3693 4 25.32 91.39 -20.61 0.54 3692 -3694 4 25.75 91.42 -20.6 0.54 3693 -3695 4 25.94 91.87 -20.55 0.54 3694 -3696 4 26.37 92.41 -21.39 0.54 3695 -3697 4 27.03 92.81 -22.76 0.435 3696 -3698 4 27.66 93.85 -23.99 0.435 3697 -3699 4 28.49 94.58 -24.28 0.435 3698 -3700 4 28.91 95.1 -24.89 0.435 3699 -3701 4 29.15 95.19 -25.56 0.435 3700 -3702 4 29.93 96.56 -25.77 0.435 3701 -3703 4 30.4 96.71 -26.95 0.435 3702 -3704 4 31.07 96.82 -27.53 0.435 3703 -3705 4 31.49 97.39 -28.59 0.435 3704 -3706 4 32.3 98.84 -29.55 0.435 3705 -3707 4 32.94 99.39 -30.23 0.435 3706 -3708 4 33.54 100.29 -30.2 0.435 3707 -3709 4 34.15 101.26 -30.77 0.435 3708 -3710 4 34.78 102.04 -31.65 0.435 3709 -3711 4 35.39 103.01 -32.36 0.435 3710 -3712 4 37.08 104.04 -32.74 0.435 3711 -3713 4 38.73 105.72 -33.28 0.435 3712 -3714 4 39.8 106.32 -34.25 0.435 3713 -3715 4 41.01 108.18 -34.63 0.435 3714 -3716 4 41.37 109.55 -35.01 0.435 3715 -3717 4 41.76 110.78 -36.23 0.435 3716 -3718 4 42.13 112.44 -37.33 0.435 3717 -3719 4 42.54 113.2 -38.14 0.435 3718 -3720 4 43.07 115.21 -38.3 0.435 3719 -3721 4 44.26 117.53 -39.09 0.435 3720 -3722 4 45.69 119.45 -39.91 0.435 3721 -3723 4 46.5 120.95 -41.32 0.435 3722 -3724 4 47.11 121.9 -41.73 0.435 3723 -3725 4 47.49 122.82 -42.08 0.435 3724 -3726 4 48.02 125.07 -42.52 0.435 3725 -3727 4 48.78 127.36 -43.09 0.435 3726 -3728 4 48.86 130.11 -44.46 0.435 3727 -3729 4 48.83 131.08 -45.48 0.435 3728 -3730 4 49.19 132.67 -46.0 0.435 3729 -3731 4 49.12 134.04 -46.61 0.435 3730 -3732 4 48.66 135.25 -48.0 0.435 3731 -3733 4 48.19 136.18 -48.98 0.435 3732 -3734 4 48.36 137.33 -49.45 0.435 3733 -3735 4 47.87 138.43 -49.95 0.435 3734 -3736 4 47.83 138.83 -49.68 0.435 3735 -3737 4 47.82 139.59 -50.66 0.435 3736 -3738 4 47.78 140.48 -50.94 0.435 3737 -3739 4 47.73 141.12 -50.73 0.435 3738 -3740 4 47.74 141.7 -52.18 0.435 3739 -3741 4 47.65 143.5 -52.9 0.435 3740 -3742 4 47.79 144.59 -52.71 0.435 3741 -3743 4 48.04 144.99 -54.46 0.435 3742 -3744 4 48.02 146.01 -55.95 0.435 3743 -3745 4 48.34 148.3 -56.98 0.435 3744 -3746 4 48.51 149.47 -57.61 0.435 3745 -3747 4 49.52 150.91 -58.19 0.435 3746 -3748 4 50.63 154.51 -58.77 0.435 3747 -3749 4 50.52 156.52 -59.47 0.435 3748 -3750 4 51.36 157.53 -60.33 0.435 3749 -3751 4 52.3 159.75 -60.15 0.435 3750 -3752 4 53.1 161.19 -60.96 0.435 3751 -3753 4 22.85 90.51 -16.09 1.515 3683 -3754 4 22.57 92.13 -17.13 1.515 3753 -3755 4 22.02 93.8 -16.97 1.515 3754 -3756 4 21.93 95.3 -16.82 1.515 3755 -3757 4 21.88 96.76 -18.26 1.515 3756 -3758 4 21.34 98.44 -18.1 1.515 3757 -3759 4 20.58 100.67 -19.09 1.515 3758 -3760 4 20.06 102.74 -20.54 1.515 3759 -3761 4 19.98 104.02 -20.41 1.515 3760 -3762 4 19.9 105.31 -20.28 1.515 3761 -3763 4 20.05 106.96 -21.54 1.515 3762 -3764 4 20.46 107.53 -21.47 1.515 3763 -3765 4 21.29 107.75 -20.98 0.435 3764 -3766 4 21.91 108.22 -20.91 0.435 3765 -3767 4 22.1 108.63 -20.56 0.435 3766 -3768 4 22.25 109.21 -19.75 0.435 3767 -3769 4 22.42 109.82 -19.23 0.435 3768 -3770 4 22.57 110.63 -18.54 0.435 3769 -3771 4 22.96 111.03 -17.96 0.435 3770 -3772 4 23.12 111.62 -17.29 0.435 3771 -3773 4 23.24 112.86 -16.56 0.435 3772 -3774 4 23.4 113.5 -16.34 0.435 3773 -3775 4 23.93 115.19 -15.47 0.435 3774 -3776 4 24.5 116.24 -14.82 0.435 3775 -3777 4 24.86 117.31 -14.32 0.435 3776 -3778 4 25.26 117.74 -14.05 0.435 3777 -3779 4 25.63 118.35 -13.52 0.435 3778 -3780 4 26.03 118.74 -12.8 0.435 3779 -3781 4 26.65 119.21 -12.74 0.435 3780 -3782 4 26.82 119.6 -12.24 0.435 3781 -3783 4 27.21 120.26 -12.01 0.435 3782 -3784 4 27.36 121.12 -11.84 0.435 3783 -3785 4 28.04 121.27 -12.93 0.435 3784 -3786 4 29.51 122.22 -12.8 0.435 3785 -3787 4 31.01 125.77 -12.4 0.435 3786 -3788 4 32.36 128.42 -12.09 0.435 3787 -3789 4 33.15 129.2 -10.71 0.435 3788 -3790 4 34.13 130.76 -10.46 0.435 3789 -3791 4 35.32 132.3 -9.97 0.435 3790 -3792 4 36.59 132.81 -9.89 0.435 3791 -3793 4 36.94 133.62 -9.04 0.435 3792 -3794 4 37.74 134.69 -8.38 0.435 3793 -3795 4 38.48 136.41 -7.73 0.435 3794 -3796 4 39.86 138.15 -6.76 0.435 3795 -3797 4 41.33 138.85 -6.5 0.435 3796 -3798 4 43.14 140.85 -5.65 0.435 3797 -3799 4 44.74 142.57 -4.53 0.435 3798 -3800 4 45.93 144.1 -3.9 0.435 3799 -3801 4 48.45 145.31 -3.57 0.435 3800 -3802 4 49.44 146.67 -3.4 0.435 3801 -3803 4 49.96 148.61 -2.89 0.435 3802 -3804 4 51.36 150.41 -2.59 0.435 3803 -3805 4 52.91 153.29 -2.18 0.435 3804 -3806 4 54.07 155.51 -1.92 0.435 3805 -3807 4 54.9 155.69 -0.98 0.435 3806 -3808 4 55.92 156.81 -0.76 0.435 3807 -3809 4 57.57 157.67 0.41 0.435 3808 -3810 4 57.69 158.39 1.92 0.435 3809 -3811 4 58.75 158.89 1.99 0.435 3810 -3812 4 59.16 158.81 3.05 0.435 3811 -3813 4 59.29 159.6 3.89 0.435 3812 -3814 4 59.69 159.73 4.97 0.435 3813 -3815 4 60.56 159.54 5.27 0.435 3814 -3816 4 61.21 159.58 5.29 0.435 3815 -3817 4 61.15 160.41 5.6 0.435 3816 -3818 4 61.32 161.07 5.75 0.435 3817 -3819 4 61.25 161.86 6.35 0.435 3818 -3820 4 61.2 162.45 6.95 0.435 3819 -3821 4 60.73 163.05 7.15 0.435 3820 -3822 4 60.67 163.62 7.88 0.435 3821 -3823 4 60.6 164.69 8.07 0.435 3822 -3824 4 60.96 165.52 8.62 0.435 3823 -3825 4 61.32 166.55 9.41 0.435 3824 -3826 4 62.1 167.65 9.76 0.435 3825 -3827 4 63.67 170.32 10.15 0.435 3826 -3828 4 64.03 170.62 11.7 0.435 3827 -3829 4 64.64 171.04 12.21 0.435 3828 -3830 4 64.59 171.36 13.45 0.435 3829 -3831 4 64.55 171.99 13.58 0.435 3830 -3832 4 65.14 172.28 15.29 0.435 3831 -3833 4 65.47 173.28 16.37 0.435 3832 -3834 4 65.67 173.21 17.13 0.435 3833 -3835 4 66.47 174.04 18.07 0.435 3834 -3836 4 66.8 175.29 18.81 0.435 3835 -3837 4 68.03 175.92 19.88 0.435 3836 -3838 4 68.55 177.62 20.6 0.435 3837 -3839 4 69.3 179.31 21.39 0.435 3838 -3840 4 70.3 180.15 22.33 0.435 3839 -3841 4 70.45 180.94 23.32 0.435 3840 -3842 4 71.67 181.79 24.26 0.435 3841 -3843 4 72.27 182.19 24.92 0.435 3842 -3844 4 73.02 183.94 25.35 0.435 3843 -3845 4 73.59 185.01 25.84 0.435 3844 -3846 4 74.2 185.45 26.21 0.435 3845 -3847 4 75.35 187.62 26.91 0.435 3846 -3848 4 75.7 188.68 27.41 0.435 3847 -3849 4 76.07 189.76 27.75 0.435 3848 -3850 4 76.68 190.17 28.34 0.435 3849 -3851 4 77.96 190.2 28.83 0.435 3850 -3852 4 78.35 190.59 29.55 0.435 3851 -3853 4 79.91 193.22 30.23 0.435 3852 -3854 4 80.0 194.85 31.39 0.435 3853 -3855 4 80.81 194.94 33.15 0.435 3854 -3856 4 81.56 196.18 34.2 0.435 3855 -3857 4 82.14 197.04 34.75 0.435 3856 -3858 4 82.52 197.37 36.0 0.435 3857 -3859 4 83.57 197.54 37.1 0.435 3858 -3860 4 83.9 198.53 38.27 0.435 3859 -3861 4 85.0 200.99 40.36 0.435 3860 -3862 4 85.41 200.94 41.12 0.435 3861 -3863 4 85.78 201.53 41.93 0.435 3862 -3864 4 86.56 202.58 42.81 0.435 3863 -3865 4 87.13 203.33 44.26 0.435 3864 -3866 4 87.48 204.13 45.26 0.435 3865 -3867 4 88.09 204.53 45.92 0.435 3866 -3868 4 88.65 205.58 46.79 0.435 3867 -3869 4 26.62 122.57 -11.63 0.435 3784 -3870 4 26.15 123.19 -11.58 0.435 3869 -3871 4 26.08 123.99 -10.97 0.435 3870 -3872 4 26.02 124.54 -9.94 0.435 3871 -3873 4 25.95 125.33 -9.25 0.435 3872 -3874 4 25.86 126.34 -8.55 0.435 3873 -3875 4 25.32 128.01 -8.24 0.435 3874 -3876 4 25.66 129.53 -7.99 0.435 3875 -3877 4 25.56 131.03 -7.84 0.435 3876 -3878 4 25.48 132.31 -7.71 0.435 3877 -3879 4 24.9 134.64 -7.48 0.435 3878 -3880 4 24.82 135.93 -7.35 0.435 3879 -3881 4 25.11 138.1 -7.05 0.435 3880 -3882 4 24.95 140.66 -6.78 0.435 3881 -3883 4 25.02 142.82 -6.56 0.435 3882 -3884 4 25.06 145.62 -6.27 0.435 3883 -3885 4 24.89 148.18 -6.01 0.435 3884 -3886 4 25.54 151.67 -5.63 0.435 3885 -3887 4 25.69 152.73 -5.29 0.435 3886 -3888 4 25.78 154.41 -4.66 0.435 3887 -3889 4 26.29 156.35 -4.14 0.435 3888 -3890 4 26.58 158.48 -3.55 0.435 3889 -3891 4 26.54 159.62 -4.1 0.435 3890 -3892 4 26.48 160.77 -4.74 0.435 3891 -3893 4 26.82 162.34 -5.02 0.435 3892 -3894 4 27.01 163.3 -5.75 0.435 3893 -3895 4 27.37 164.93 -6.7 0.435 3894 -3896 4 27.71 165.68 -5.19 0.435 3895 -3897 4 27.21 166.71 -4.94 0.435 3896 -3898 4 27.41 167.2 -5.41 0.435 3897 -3899 4 27.58 167.57 -4.61 0.435 3898 -3900 4 27.72 168.65 -4.5 0.435 3899 -3901 4 27.67 168.98 -3.49 0.435 3900 -3902 4 27.8 170.46 -3.03 0.435 3901 -3903 4 27.72 171.53 -2.84 0.435 3902 -3904 4 27.65 172.54 -2.29 0.435 3903 -3905 4 27.97 174.27 -2.03 0.435 3904 -3906 4 27.44 175.5 -1.46 0.435 3905 -3907 4 27.57 176.54 -0.98 0.435 3906 -3908 4 19.98 108.04 -21.43 1.515 3764 -3909 4 19.66 109.74 -21.26 1.515 3908 -3910 4 19.6 110.82 -21.15 1.515 3909 -3911 4 19.52 111.88 -21.04 1.515 3910 -3912 4 19.03 112.76 -20.96 1.515 3911 -3913 4 18.38 112.89 -21.57 0.65 3912 -3914 4 18.17 113.1 -21.62 0.975 3913 -3915 4 17.74 112.85 -21.59 0.975 3914 -3916 4 17.58 113.02 -23.39 0.975 3915 -3917 4 17.38 113.1 -24.29 0.975 3916 -3918 4 17.18 113.2 -25.48 0.975 3917 -3919 4 16.99 113.28 -26.31 0.975 3918 -3920 4 16.58 113.36 -27.37 0.975 3919 -3921 4 16.36 113.85 -28.07 0.975 3920 -3922 4 15.72 114.12 -28.97 0.975 3921 -3923 4 15.09 114.7 -30.8 0.975 3922 -3924 4 13.8 114.94 -31.78 0.975 3923 -3925 4 12.88 116.07 -32.74 0.76 3924 -3926 4 12.91 116.18 -33.79 0.76 3925 -3927 4 12.0 117.03 -34.25 0.65 3926 -3928 4 11.56 117.48 -34.74 0.65 3927 -3929 4 11.33 118.52 -36.52 0.65 3928 -3930 4 11.32 118.5 -36.3 0.65 3929 -3931 4 10.87 118.9 -36.27 0.65 3930 -3932 4 11.3 119.47 -37.33 0.54 3931 -3933 4 11.49 119.94 -37.5 0.54 3932 -3934 4 11.46 120.89 -38.31 0.54 3933 -3935 4 10.95 122.16 -38.26 0.54 3934 -3936 4 10.95 122.13 -38.05 0.54 3935 -3937 4 10.97 122.24 -39.09 0.54 3936 -3938 4 11.0 122.36 -40.28 0.54 3937 -3939 4 10.32 123.3 -41.33 0.54 3938 -3940 4 10.28 123.11 -39.47 0.54 3939 -3941 4 10.46 122.99 -38.19 0.54 3940 -3942 4 10.46 123.55 -39.49 0.54 3941 -3943 4 10.5 123.72 -41.13 0.54 3942 -3944 4 10.25 124.37 -41.29 0.54 3943 -3945 4 10.23 124.84 -41.62 0.54 3944 -3946 4 10.24 125.12 -42.2 0.54 3945 -3947 4 10.2 125.79 -42.43 0.54 3946 -3948 4 9.76 126.05 -43.09 0.54 3947 -3949 4 9.77 126.64 -44.62 0.54 3948 -3950 4 9.77 126.91 -45.11 0.54 3949 -3951 4 9.76 127.45 -46.11 0.54 3950 -3952 4 9.37 127.59 -47.69 0.54 3951 -3953 4 9.39 127.67 -48.51 0.54 3952 -3954 4 9.17 128.21 -49.74 0.54 3953 -3955 4 8.77 128.25 -50.35 0.54 3954 -3956 4 8.32 128.98 -51.34 0.54 3955 -3957 4 7.86 129.7 -52.33 0.54 3956 -3958 4 7.84 130.44 -53.31 0.54 3957 -3959 4 8.0 131.85 -54.13 0.54 3958 -3960 4 8.02 132.17 -55.16 0.54 3959 -3961 4 8.02 132.72 -56.38 0.54 3960 -3962 4 8.01 133.2 -56.78 0.54 3961 -3963 4 8.21 133.97 -57.83 0.54 3962 -3964 4 8.4 134.48 -58.38 0.54 3963 -3965 4 8.42 134.83 -59.7 0.54 3964 -3966 4 8.39 135.51 -60.0 0.54 3965 -3967 4 8.79 137.01 -61.65 0.54 3966 -3968 4 8.22 139.44 -62.38 0.54 3967 -3969 4 7.52 140.56 -63.19 0.54 3968 -3970 4 7.46 141.4 -62.88 0.54 3969 -3971 4 6.8 142.09 -63.73 0.54 3970 -3972 4 6.63 142.25 -65.38 0.54 3971 -3973 4 6.41 142.81 -66.75 0.54 3972 -3974 4 6.23 142.96 -68.25 0.54 3973 -3975 4 5.81 143.5 -69.63 0.54 3974 -3976 4 5.31 144.6 -70.07 0.54 3975 -3977 4 4.64 144.97 -69.81 0.54 3976 -3978 4 3.74 146.15 -71.37 0.54 3977 -3979 4 3.7 146.79 -71.23 0.54 3978 -3980 4 3.22 147.39 -71.03 0.54 3979 -3981 4 2.73 148.49 -71.45 0.54 3980 -3982 4 2.69 149.18 -71.84 0.54 3981 -3983 4 2.24 149.85 -72.3 0.54 3982 -3984 4 2.46 150.42 -73.52 0.54 3983 -3985 4 2.65 151.18 -74.42 0.54 3984 -3986 4 2.64 151.67 -74.97 0.54 3985 -3987 4 2.61 152.38 -75.5 0.54 3986 -3988 4 3.2 153.76 -76.03 0.54 3987 -3989 4 3.17 154.21 -76.12 0.54 3988 -3990 4 2.06 154.84 -76.68 0.54 3989 -3991 4 1.84 155.35 -77.47 0.54 3990 -3992 4 1.63 155.64 -78.27 0.54 3991 -3993 4 0.76 156.34 -79.36 0.54 3992 -3994 4 0.08 156.48 -79.06 0.54 3993 -3995 4 -0.38 157.08 -78.77 0.54 3994 -3996 4 -1.29 157.94 -79.24 0.54 3995 -3997 4 -1.26 158.07 -80.5 0.54 3996 -3998 4 -1.69 158.61 -81.88 0.54 3997 -3999 4 -1.5 159.58 -82.68 0.54 3998 -4000 4 -1.51 160.62 -84.39 0.54 3999 -4001 4 -2.2 161.21 -84.19 0.435 4000 -4002 4 -2.7 162.04 -84.12 0.435 4001 -4003 4 -2.72 162.26 -84.18 0.435 4002 -4004 4 10.87 119.2 -37.06 0.65 3931 -4005 4 10.41 119.58 -36.88 0.65 4004 -4006 4 10.44 119.74 -38.38 0.65 4005 -4007 4 9.99 120.2 -38.94 0.65 4006 -4008 4 9.81 120.32 -40.22 0.65 4007 -4009 4 9.58 120.81 -40.85 0.65 4008 -4010 4 8.93 121.28 -41.64 0.65 4009 -4011 4 8.8 120.58 -43.38 0.65 4010 -4012 4 8.16 120.31 -43.2 0.65 4011 -4013 4 7.76 120.43 -44.62 0.65 4012 -4014 4 7.39 120.36 -46.37 0.65 4013 -4015 4 6.36 120.02 -47.94 0.65 4014 -4016 4 5.35 119.43 -49.16 0.54 4015 -4017 4 5.45 118.99 -51.16 0.54 4016 -4018 4 4.67 117.68 -51.69 0.54 4017 -4019 4 4.72 117.13 -52.65 0.54 4018 -4020 4 3.51 116.3 -53.67 0.54 4019 -4021 4 2.68 116.14 -54.76 0.54 4020 -4022 4 1.92 115.15 -56.16 0.54 4021 -4023 4 1.13 114.59 -57.59 0.54 4022 -4024 4 0.09 114.42 -58.84 0.54 4023 -4025 4 -1.18 114.2 -59.57 0.54 4024 -4026 4 -1.34 114.33 -60.92 0.54 4025 -4027 4 -1.96 114.42 -62.21 0.54 4026 -4028 4 -3.06 114.9 -63.24 0.54 4027 -4029 4 -4.1 114.97 -64.69 0.54 4028 -4030 4 -5.15 115.07 -66.28 0.54 4029 -4031 4 -6.21 114.81 -66.56 0.54 4030 -4032 4 -6.22 114.79 -66.41 0.54 4031 -4033 4 -6.84 114.89 -67.69 0.54 4032 -4034 4 -7.87 114.74 -69.02 0.54 4033 -4035 4 -7.83 114.89 -70.43 0.54 4034 -4036 4 -9.67 113.88 -72.31 0.54 4035 -4037 4 -10.51 113.98 -73.83 0.54 4036 -4038 4 -11.54 113.8 -74.93 0.54 4037 -4039 4 -13.68 113.5 -75.46 0.54 4038 -4040 4 -14.51 113.32 -76.33 0.54 4039 -4041 4 -15.3 112.51 -77.41 0.54 4040 -4042 4 -16.59 112.47 -77.82 0.54 4041 -4043 4 -18.43 111.46 -79.71 0.54 4042 -4044 4 -19.48 111.46 -80.41 0.54 4043 -4045 4 -21.17 110.72 -80.6 0.54 4044 -4046 4 -22.67 110.43 -80.74 0.54 4045 -4047 4 -23.5 109.98 -81.19 0.54 4046 -4048 4 -25.47 110.32 -81.49 0.54 4047 -4049 4 19.18 113.86 -20.92 1.515 3912 -4050 4 19.09 115.37 -20.76 1.515 4049 -4051 4 18.99 116.87 -20.61 1.515 4050 -4052 4 19.52 118.83 -20.39 1.515 4051 -4053 4 20.31 120.49 -21.26 1.515 4052 -4054 4 20.66 121.8 -21.12 1.515 4053 -4055 4 21.2 123.55 -20.92 1.515 4054 -4056 4 21.27 125.71 -20.7 1.515 4055 -4057 4 21.21 126.84 -20.58 1.515 4056 -4058 4 21.88 126.7 -21.11 0.54 4057 -4059 4 23.14 127.43 -21.01 0.54 4058 -4060 4 24.0 127.48 -20.98 0.65 4059 -4061 4 25.46 128.43 -20.85 0.65 4060 -4062 4 26.96 128.74 -20.78 0.65 4061 -4063 4 28.05 128.59 -20.77 0.65 4062 -4064 4 29.35 128.67 -20.73 0.65 4063 -4065 4 29.86 127.99 -22.22 0.435 4064 -4066 4 30.13 127.36 -22.28 0.435 4065 -4067 4 31.32 125.72 -22.42 0.435 4066 -4068 4 32.5 124.28 -22.54 0.435 4067 -4069 4 34.04 123.72 -22.56 0.435 4068 -4070 4 35.99 123.85 -22.5 0.435 4069 -4071 4 39.06 123.39 -22.56 0.435 4070 -4072 4 40.87 122.43 -22.61 0.435 4071 -4073 4 43.74 121.05 -22.16 0.435 4072 -4074 4 45.94 120.75 -22.14 0.435 4073 -4075 4 48.53 120.9 -21.99 0.435 4074 -4076 4 50.45 121.45 -21.89 0.435 4075 -4077 4 53.72 121.21 -21.83 0.435 4076 -4078 4 57.2 121.21 -21.75 0.435 4077 -4079 4 59.79 121.38 -21.67 0.435 4078 -4080 4 62.48 123.26 -21.41 0.435 4079 -4081 4 65.65 124.77 -21.48 0.435 4080 -4082 4 69.23 126.7 -21.2 0.435 4081 -4083 4 72.44 127.33 -21.06 0.435 4082 -4084 4 75.21 127.93 -20.93 0.435 4083 -4085 4 78.27 127.92 -20.93 0.435 4084 -4086 4 81.82 127.24 -22.8 0.435 4085 -4087 4 85.38 126.18 -22.82 0.435 4086 -4088 4 89.98 125.38 -22.8 0.435 4087 -4089 4 93.42 125.8 -22.67 0.435 4088 -4090 4 96.63 126.43 -22.53 0.435 4089 -4091 4 99.06 125.93 -22.52 0.435 4090 -4092 4 101.28 124.99 -22.57 0.435 4091 -4093 4 103.3 124.04 -22.62 0.435 4092 -4094 4 105.73 123.33 -22.64 0.435 4093 -4095 4 107.68 123.45 -22.58 0.435 4094 -4096 4 110.7 123.63 -22.49 0.435 4095 -4097 4 112.38 124.59 -22.35 0.435 4096 -4098 4 30.61 129.4 -20.63 0.54 4064 -4099 4 32.57 129.3 -20.59 0.54 4098 -4100 4 34.3 129.19 -20.48 0.54 4099 -4101 4 36.24 129.3 -20.42 0.54 4100 -4102 4 38.42 129.21 -20.38 0.54 4101 -4103 4 39.99 129.51 -22.28 0.54 4102 -4104 4 42.14 129.64 -22.21 0.54 4103 -4105 4 42.55 130.4 -23.03 0.54 4104 -4106 4 43.57 131.54 -22.89 0.54 4105 -4107 4 44.52 133.53 -22.66 0.54 4106 -4108 4 45.05 135.51 -22.44 0.54 4107 -4109 4 45.7 138.99 -22.06 0.54 4108 -4110 4 47.59 143.19 -21.58 0.54 4109 -4111 4 47.5 144.13 -20.21 0.54 4110 -4112 4 48.89 146.15 -19.97 0.54 4111 -4113 4 50.97 147.57 -19.85 0.54 4112 -4114 4 52.95 149.97 -18.64 0.54 4113 -4115 4 54.56 152.22 -18.37 0.54 4114 -4116 4 56.0 153.17 -18.24 0.54 4115 -4117 4 58.05 154.7 -17.13 0.54 4116 -4118 4 59.17 157.04 -15.89 0.54 4117 -4119 4 59.91 158.98 -15.13 0.54 4118 -4120 4 60.44 160.44 -14.22 0.54 4119 -4121 4 61.28 160.68 -13.95 0.54 4120 -4122 4 62.74 161.62 -13.74 0.54 4121 -4123 4 63.74 162.96 -13.58 0.54 4122 -4124 4 64.53 163.79 -12.65 0.54 4123 -4125 4 65.91 165.75 -11.81 0.54 4124 -4126 4 66.85 167.66 -10.76 0.54 4125 -4127 4 67.14 169.3 -9.6 0.54 4126 -4128 4 67.89 170.74 -8.31 0.54 4127 -4129 4 68.43 172.22 -7.61 0.54 4128 -4130 4 69.63 173.51 -6.69 0.54 4129 -4131 4 70.22 173.89 -5.81 0.54 4130 -4132 4 72.11 175.13 -6.16 0.54 4131 -4133 4 72.49 175.5 -5.29 0.54 4132 -4134 4 74.4 175.45 -3.52 0.54 4133 -4135 4 76.56 175.57 -3.38 0.54 4134 -4136 4 77.63 175.59 -2.9 0.54 4135 -4137 4 78.68 175.53 -1.67 0.54 4136 -4138 4 79.31 176.0 -1.61 0.54 4137 -4139 4 80.18 176.05 -1.59 0.54 4138 -4140 4 82.28 177.04 -1.43 0.54 4139 -4141 4 84.52 179.32 -1.14 0.54 4140 -4142 4 85.3 180.11 0.22 0.54 4141 -4143 4 86.27 181.07 2.08 0.54 4142 -4144 4 86.59 182.81 2.26 0.54 4143 -4145 4 87.32 184.75 3.01 0.54 4144 -4146 4 87.26 185.26 4.12 0.54 4145 -4147 4 87.4 185.81 5.31 0.54 4146 -4148 4 87.54 186.83 6.1 0.54 4147 -4149 4 87.67 188.11 6.31 0.54 4148 -4150 4 88.24 189.19 6.81 0.54 4149 -4151 4 88.58 190.21 7.6 0.54 4150 -4152 4 88.99 190.65 7.88 0.54 4151 -4153 4 44.5 130.01 -22.12 0.54 4104 -4154 4 47.27 130.82 -21.97 0.54 4153 -4155 4 50.0 132.49 -21.81 0.54 4154 -4156 4 51.7 133.59 -22.93 0.54 4155 -4157 4 54.21 135.04 -22.72 0.54 4156 -4158 4 56.75 136.07 -22.71 0.54 4157 -4159 4 58.21 137.27 -23.0 0.54 4158 -4160 4 59.53 137.44 -23.78 0.54 4159 -4161 4 62.07 138.47 -23.84 0.54 4160 -4162 4 63.74 139.44 -23.7 0.54 4161 -4163 4 65.09 138.93 -24.25 0.54 4162 -4164 4 66.86 138.66 -24.77 0.54 4163 -4165 4 70.11 138.64 -24.69 0.54 4164 -4166 4 73.04 140.55 -24.49 0.54 4165 -4167 4 74.89 142.17 -24.28 0.54 4166 -4168 4 76.12 143.61 -24.86 0.54 4167 -4169 4 78.29 143.81 -25.47 0.54 4168 -4170 4 81.27 144.9 -25.73 0.54 4169 -4171 4 84.64 146.62 -25.55 0.54 4170 -4172 4 86.97 147.9 -26.12 0.54 4171 -4173 4 88.24 148.46 -26.4 0.54 4172 -4174 4 90.65 148.72 -27.38 0.54 4173 -4175 4 94.09 149.39 -27.61 0.54 4174 -4176 4 97.55 150.17 -28.87 0.54 4175 -4177 4 100.52 151.21 -28.69 0.54 4176 -4178 4 102.0 152.24 -29.24 0.54 4177 -4179 4 103.54 152.45 -30.3 0.54 4178 -4180 4 105.05 152.54 -30.33 0.54 4179 -4181 4 105.93 152.66 -30.9 0.54 4180 -4182 4 108.04 153.67 -30.98 0.54 4181 -4183 4 109.51 154.65 -31.21 0.54 4182 -4184 4 110.77 155.68 -31.91 0.54 4183 -4185 4 112.3 155.85 -32.61 0.54 4184 -4186 4 114.43 156.62 -32.55 0.54 4185 -4187 4 117.2 157.5 -33.0 0.54 4186 -4188 4 118.68 158.49 -33.24 0.54 4187 -4189 4 119.98 158.63 -33.8 0.54 4188 -4190 4 120.89 158.59 -34.91 0.54 4189 -4191 4 121.76 158.67 -35.18 0.54 4190 -4192 4 122.88 158.63 -36.29 0.54 4191 -4193 4 124.61 158.76 -36.38 0.54 4192 -4194 4 125.69 158.82 -36.35 0.54 4193 -4195 4 126.6 158.78 -37.47 0.54 4194 -4196 4 127.05 158.88 -38.2 0.54 4195 -4197 4 127.71 158.75 -38.57 0.54 4196 -4198 4 21.84 127.26 -20.67 1.515 4057 -4199 4 21.95 128.77 -20.52 1.515 4198 -4200 4 22.31 130.93 -22.24 1.41 4199 -4201 4 22.62 132.68 -22.06 1.41 4200 -4202 4 22.95 134.41 -21.87 1.41 4201 -4203 4 23.48 136.38 -21.65 1.41 4202 -4204 4 23.84 138.32 -23.4 1.41 4203 -4205 4 23.99 139.4 -23.29 1.41 4204 -4206 4 24.13 140.72 -23.3 1.41 4205 -4207 4 24.27 142.02 -23.16 1.41 4206 -4208 4 24.16 143.74 -22.99 1.41 4207 -4209 4 24.27 145.25 -22.83 1.41 4208 -4210 4 24.38 146.97 -22.65 1.41 4209 -4211 4 24.55 147.85 -22.55 1.515 4210 -4212 4 24.3 148.31 -22.51 1.515 4211 -4213 4 23.55 148.94 -20.58 0.435 4212 -4214 4 23.09 149.35 -20.62 0.54 4213 -4215 4 22.13 150.8 -20.49 0.54 4214 -4216 4 21.35 153.48 -21.66 0.54 4215 -4217 4 21.38 156.48 -21.35 0.54 4216 -4218 4 21.85 159.3 -21.05 0.54 4217 -4219 4 23.2 161.76 -20.76 0.54 4218 -4220 4 23.82 162.73 -21.4 0.54 4219 -4221 4 23.71 164.44 -21.16 0.435 4220 -4222 4 23.43 166.07 -22.42 0.435 4221 -4223 4 22.66 168.51 -23.4 0.435 4222 -4224 4 22.01 171.71 -23.16 0.435 4223 -4225 4 21.61 174.69 -22.86 0.435 4224 -4226 4 21.57 175.4 -22.86 0.435 4225 -4227 4 21.51 176.26 -22.77 0.54 4226 -4228 4 21.38 178.39 -22.55 0.54 4227 -4229 4 20.61 180.29 -22.38 0.54 4228 -4230 4 20.35 181.2 -23.04 0.54 4229 -4231 4 19.39 182.65 -22.91 0.54 4230 -4232 4 18.88 184.2 -23.44 0.54 4231 -4233 4 17.42 186.69 -23.22 0.54 4232 -4234 4 16.97 187.42 -24.21 0.54 4233 -4235 4 16.93 188.35 -24.87 0.54 4234 -4236 4 16.43 189.71 -25.72 0.54 4235 -4237 4 15.73 191.35 -27.3 0.54 4236 -4238 4 24.85 149.8 -22.34 1.515 4212 -4239 4 24.98 151.31 -22.18 1.515 4238 -4240 4 25.43 152.54 -22.05 1.515 4239 -4241 4 25.86 153.16 -23.48 0.54 4240 -4242 4 26.28 153.61 -23.42 0.54 4241 -4243 4 26.62 154.33 -21.9 0.54 4242 -4244 4 26.8 154.18 -20.19 0.54 4243 -4245 4 27.47 154.32 -21.21 0.54 4244 -4246 4 27.88 155.1 -22.18 0.54 4245 -4247 4 28.73 155.59 -22.18 0.54 4246 -4248 4 29.15 156.15 -23.16 0.54 4247 -4249 4 29.78 156.41 -23.12 0.54 4248 -4250 4 29.99 157.21 -24.54 0.54 4249 -4251 4 30.77 158.56 -24.38 0.54 4250 -4252 4 30.98 158.5 -23.71 0.54 4251 -4253 4 31.35 159.1 -22.96 0.54 4252 -4254 4 31.95 160.04 -23.3 0.54 4253 -4255 4 32.79 161.05 -24.16 0.54 4254 -4256 4 33.39 161.99 -24.42 0.54 4255 -4257 4 33.97 163.34 -24.57 0.54 4256 -4258 4 34.8 164.09 -24.92 0.54 4257 -4259 4 35.59 165.47 -25.29 0.54 4258 -4260 4 36.79 167.06 -25.17 0.54 4259 -4261 4 37.59 168.18 -25.04 0.54 4260 -4262 4 38.86 168.7 -25.02 0.54 4261 -4263 4 39.86 170.05 -24.86 0.54 4262 -4264 4 41.04 171.85 -24.65 0.54 4263 -4265 4 42.05 173.21 -24.63 0.54 4264 -4266 4 42.8 175.23 -24.86 0.54 4265 -4267 4 43.37 176.83 -25.21 0.54 4266 -4268 4 44.34 178.66 -25.45 0.54 4267 -4269 4 44.71 180.0 -25.68 0.54 4268 -4270 4 45.06 181.59 -26.11 0.54 4269 -4271 4 45.44 182.8 -27.03 0.54 4270 -4272 4 45.38 184.16 -27.49 0.54 4271 -4273 4 45.31 185.27 -27.83 0.54 4272 -4274 4 45.48 186.4 -28.08 0.54 4273 -4275 4 46.04 188.0 -28.51 0.54 4274 -4276 4 46.64 188.89 -28.48 0.54 4275 -4277 4 46.79 189.98 -28.44 0.54 4276 -4278 4 47.2 190.75 -29.25 0.54 4277 -4279 4 47.6 191.2 -29.2 0.54 4278 -4280 4 47.57 191.89 -29.51 0.54 4279 -4281 4 47.93 193.21 -29.43 0.54 4280 -4282 4 48.68 195.26 -29.96 0.54 4281 -4283 4 49.29 196.25 -30.75 0.54 4282 -4284 4 50.06 198.02 -30.62 0.54 4283 -4285 4 51.53 199.04 -31.16 0.54 4284 -4286 4 52.58 200.08 -32.08 0.54 4285 -4287 4 53.6 201.81 -33.54 0.54 4286 -4288 4 55.02 203.4 -33.34 0.54 4287 -4289 4 55.57 205.23 -33.81 0.54 4288 -4290 4 56.15 206.83 -34.24 0.54 4289 -4291 4 56.65 209.01 -34.08 0.54 4290 -4292 4 57.16 211.19 -33.84 0.54 4291 -4293 4 57.31 212.78 -34.35 0.54 4292 -4294 4 57.67 213.88 -34.3 0.54 4293 -4295 4 58.03 215.28 -34.91 0.54 4294 -4296 4 59.03 216.86 -34.87 0.54 4295 -4297 4 60.61 219.11 -34.6 0.54 4296 -4298 4 62.89 220.99 -34.64 0.54 4297 -4299 4 64.75 222.42 -34.68 0.54 4298 -4300 4 65.32 224.0 -34.88 0.54 4299 -4301 4 65.71 224.89 -34.86 0.54 4300 -4302 4 66.67 226.68 -34.72 0.54 4301 -4303 4 66.58 228.19 -34.64 0.54 4302 -4304 4 66.62 231.25 -34.85 0.54 4303 -4305 4 67.17 233.02 -34.88 0.54 4304 -4306 4 68.56 234.86 -34.96 0.54 4305 -4307 4 70.2 236.69 -34.74 0.54 4306 -4308 4 71.38 238.74 -34.95 0.54 4307 -4309 4 72.16 240.37 -35.52 0.54 4308 -4310 4 72.54 241.53 -35.99 0.54 4309 -4311 4 73.78 243.24 -37.14 0.54 4310 -4312 4 74.13 244.6 -37.51 0.54 4311 -4313 4 74.5 246.02 -38.33 0.54 4312 -4314 4 74.45 246.92 -38.62 0.54 4313 -4315 4 74.84 247.86 -39.12 0.54 4314 -4316 4 75.2 249.48 -39.77 0.54 4315 -4317 4 75.12 251.03 -40.14 0.54 4316 -4318 4 75.45 252.78 -40.11 0.54 4317 -4319 4 75.94 255.18 -39.85 0.54 4318 -4320 4 76.86 257.82 -39.55 0.54 4319 -4321 4 77.19 259.56 -39.36 0.54 4320 -4322 4 77.26 261.72 -39.21 0.54 4321 -4323 4 76.78 262.86 -40.01 0.54 4322 -4324 4 76.58 266.08 -39.68 0.54 4323 -4325 4 77.28 268.7 -39.39 0.54 4324 -4326 4 78.82 271.59 -39.06 0.54 4325 -4327 4 79.58 272.88 -39.05 0.54 4326 -4328 4 80.77 273.9 -37.64 0.54 4327 -4329 4 80.79 273.99 -38.46 0.54 4328 -4330 4 81.35 275.58 -38.81 0.54 4329 -4331 4 81.76 276.3 -39.25 0.54 4330 -4332 4 82.28 278.51 -39.31 0.54 4331 -4333 4 82.62 280.04 -39.22 0.54 4332 -4334 4 82.72 281.99 -39.09 0.54 4333 -4335 4 83.04 283.73 -38.91 0.54 4334 -4336 4 83.93 286.81 -38.72 0.54 4335 -4337 4 84.59 290.09 -38.43 0.54 4336 -4338 4 84.62 293.1 -38.12 0.54 4337 -4339 4 84.46 295.45 -37.88 0.54 4338 -4340 4 84.52 297.84 -37.71 0.54 4339 -4341 4 84.74 301.29 -37.35 0.54 4340 -4342 4 85.27 303.26 -37.13 0.54 4341 -4343 4 85.74 306.08 -36.83 0.54 4342 -4344 4 85.82 308.29 -37.05 0.54 4343 -4345 4 86.03 311.96 -36.74 0.54 4344 -4346 4 86.21 315.85 -36.33 0.54 4345 -4347 4 86.03 318.63 -36.05 0.54 4346 -4348 4 86.48 321.88 -35.7 0.54 4347 -4349 4 86.75 324.48 -35.43 0.54 4348 -4350 4 87.27 326.47 -35.44 0.54 4349 -4351 4 87.41 328.04 -35.88 0.54 4350 -4352 4 87.95 329.82 -35.9 0.54 4351 -4353 4 88.08 331.34 -35.89 0.54 4352 -4354 4 30.68 156.34 -24.01 0.54 4249 -4355 4 31.78 156.2 -24.08 0.54 4354 -4356 4 32.45 156.03 -24.15 0.54 4355 -4357 4 33.5 156.53 -24.16 0.54 4356 -4358 4 34.12 157.02 -24.31 0.54 4357 -4359 4 34.99 157.07 -24.22 0.54 4358 -4360 4 35.6 157.51 -23.93 0.54 4359 -4361 4 36.01 157.44 -23.02 0.54 4360 -4362 4 36.19 157.83 -22.3 0.54 4361 -4363 4 36.58 158.22 -21.65 0.54 4362 -4364 4 37.16 159.05 -20.94 0.54 4363 -4365 4 37.58 159.0 -20.26 0.54 4364 -4366 4 37.94 159.86 -19.94 0.54 4365 -4367 4 38.3 160.91 -19.44 0.54 4366 -4368 4 38.68 161.56 -19.14 0.54 4367 -4369 4 39.29 161.99 -18.63 0.54 4368 -4370 4 39.88 162.85 -18.15 0.54 4369 -4371 4 40.67 163.95 -17.87 0.54 4370 -4372 4 41.04 164.57 -17.19 0.54 4371 -4373 4 41.22 164.93 -16.47 0.54 4372 -4374 4 42.24 165.84 -16.2 0.54 4373 -4375 4 42.65 166.29 -16.07 0.54 4374 -4376 4 43.05 166.7 -15.64 0.54 4375 -4377 4 43.6 167.99 -15.12 0.54 4376 -4378 4 43.81 167.93 -14.44 0.54 4377 -4379 4 44.23 167.91 -13.98 0.54 4378 -4380 4 44.63 167.88 -13.37 0.54 4379 -4381 4 45.69 168.35 -12.99 0.54 4380 -4382 4 46.32 168.3 -12.16 0.54 4381 -4383 4 46.72 168.74 -11.88 0.54 4382 -4384 4 47.31 169.59 -11.48 0.54 4383 -4385 4 47.7 170.02 -11.12 0.54 4384 -4386 4 48.25 171.54 -10.8 0.54 4385 -4387 4 48.65 171.95 -10.3 0.54 4386 -4388 4 49.04 172.34 -9.56 0.54 4387 -4389 4 49.43 172.73 -8.91 0.54 4388 -4390 4 49.82 173.16 -8.56 0.54 4389 -4391 4 50.59 173.93 -7.1 0.54 4390 -4392 4 51.44 173.88 -6.11 0.54 4391 -4393 4 52.07 173.8 -4.98 0.54 4392 -4394 4 52.47 173.73 -4.07 0.54 4393 -4395 4 53.11 173.71 -3.45 0.54 4394 -4396 4 54.2 173.53 -2.99 0.54 4395 -4397 4 55.47 173.5 -1.91 0.54 4396 -4398 4 56.74 174.01 -1.83 0.54 4397 -4399 4 57.54 174.9 -1.64 0.54 4398 -4400 4 58.08 175.86 -0.03 0.54 4399 -4401 4 59.09 177.21 0.21 0.54 4400 -4402 4 59.84 178.43 1.48 0.54 4401 -4403 4 60.4 179.72 1.93 0.54 4402 -4404 4 60.97 180.52 2.93 0.54 4403 -4405 4 61.54 181.33 3.86 0.54 4404 -4406 4 62.77 182.18 4.8 0.54 4405 -4407 4 63.79 183.07 5.37 0.54 4406 -4408 4 64.97 184.82 5.81 0.54 4407 -4409 4 65.96 186.18 6.05 0.54 4408 -4410 4 66.77 187.04 6.53 0.54 4409 -4411 4 67.73 188.8 7.03 0.54 4410 -4412 4 68.26 190.76 7.33 0.54 4411 -4413 4 68.63 191.4 7.62 0.54 4412 -4414 4 69.22 192.25 8.18 0.54 4413 -4415 4 70.67 193.15 8.76 0.54 4414 -4416 4 71.47 193.73 10.04 0.54 4415 -4417 4 71.88 193.99 9.93 0.54 4416 -4418 4 72.67 195.33 10.02 0.54 4417 -4419 4 72.86 195.76 10.14 0.54 4418 -4420 4 73.46 196.14 11.18 0.54 4419 -4421 4 73.58 197.11 12.25 0.54 4420 -4422 4 74.18 197.72 13.09 0.54 4421 -4423 4 74.96 198.55 13.94 0.54 4422 -4424 4 75.31 199.56 14.96 0.54 4423 -4425 4 75.86 200.55 16.2 0.54 4424 -4426 4 76.39 202.0 17.2 0.54 4425 -4427 4 76.93 203.47 18.04 0.54 4426 -4428 4 77.44 205.12 19.28 0.54 4427 -4429 4 78.16 206.99 20.55 0.54 4428 -4430 4 78.31 207.56 21.43 0.54 4429 -4431 4 78.83 209.24 22.37 0.54 4430 -4432 4 79.39 210.5 23.2 0.54 4431 -4433 4 80.18 211.32 24.13 0.54 4432 -4434 4 80.52 212.09 25.35 0.54 4433 -4435 4 80.9 212.42 26.59 0.54 4434 -4436 4 81.46 213.45 27.47 0.54 4435 -4437 4 82.5 213.86 28.44 0.54 4436 -4438 4 83.34 213.86 28.99 0.54 4437 -4439 4 83.95 214.25 29.72 0.54 4438 -4440 4 84.56 214.67 30.31 0.54 4439 -4441 4 85.34 215.99 30.69 0.54 4440 -4442 4 85.69 216.79 31.53 0.54 4441 -4443 4 86.27 217.33 33.03 0.54 4442 -4444 4 86.69 217.28 33.79 0.54 4443 -4445 4 87.75 217.29 34.35 0.54 4444 -4446 4 88.59 217.76 34.49 0.54 4445 -4447 4 25.53 152.84 -22.01 1.515 4240 -4448 4 25.68 153.72 -21.92 1.515 4447 -4449 4 25.09 153.81 -20.72 0.435 4448 -4450 4 24.57 154.5 -19.3 0.435 4449 -4451 4 24.13 154.39 -18.5 0.435 4450 -4452 4 24.11 154.3 -17.6 0.435 4451 -4453 4 23.85 154.13 -16.19 0.435 4452 -4454 4 23.82 153.98 -14.71 0.435 4453 -4455 4 23.54 154.26 -13.4 0.435 4454 -4456 4 23.52 154.16 -12.43 0.435 4455 -4457 4 23.48 153.96 -10.56 0.435 4456 -4458 4 23.45 153.87 -9.67 0.435 4457 -4459 4 23.2 153.69 -7.96 0.435 4458 -4460 4 22.23 154.8 -6.74 0.435 4459 -4461 4 21.46 156.15 -5.49 0.435 4460 -4462 4 20.67 157.71 -4.22 0.435 4461 -4463 4 19.49 159.14 -4.1 0.435 4462 -4464 4 18.97 160.4 -3.9 0.435 4463 -4465 4 18.61 162.2 -2.59 0.435 4464 -4466 4 18.77 163.06 -2.5 0.435 4465 -4467 4 18.89 164.57 -2.34 0.435 4466 -4468 4 19.07 165.22 -2.2 0.435 4467 -4469 4 19.01 165.83 -1.76 0.435 4468 -4470 4 19.16 166.89 -1.49 0.435 4469 -4471 4 18.41 168.09 -0.86 0.435 4470 -4472 4 17.68 169.09 -0.48 0.435 4471 -4473 4 16.3 170.25 0.05 0.435 4472 -4474 4 16.27 170.65 0.33 0.435 4473 -4475 4 15.31 171.84 0.88 0.435 4474 -4476 4 15.23 172.88 1.29 0.435 4475 -4477 4 15.35 174.14 1.87 0.435 4476 -4478 4 15.45 176.05 2.37 0.435 4477 -4479 4 15.37 176.83 3.21 0.435 4478 -4480 4 15.52 177.6 4.12 0.435 4479 -4481 4 15.46 178.44 4.5 0.435 4480 -4482 4 15.4 179.26 4.89 0.435 4481 -4483 4 14.39 181.1 5.36 0.435 4482 -4484 4 12.69 184.0 5.69 0.435 4483 -4485 4 12.18 185.04 5.78 0.435 4484 -4486 4 11.69 185.84 6.24 0.435 4485 -4487 4 11.13 187.47 6.99 0.435 4486 -4488 4 11.31 188.12 7.14 0.435 4487 -4489 4 11.23 189.16 7.54 0.435 4488 -4490 4 11.35 190.36 8.57 0.435 4489 -4491 4 10.82 191.62 8.77 0.435 4490 -4492 4 9.88 192.84 8.88 0.435 4491 -4493 4 9.38 193.88 9.04 0.435 4492 -4494 4 8.89 194.71 9.12 0.435 4493 -4495 4 8.85 195.35 9.26 0.435 4494 -4496 4 8.73 195.63 9.29 0.435 4495 -4497 4 8.52 196.19 7.83 0.435 4496 -4498 4 7.89 196.53 6.27 0.435 4497 -4499 4 7.25 196.48 6.33 0.435 4498 -4500 4 6.8 196.94 5.84 0.65 4499 -4501 4 6.11 197.54 5.89 0.865 4500 -4502 4 5.01 198.52 4.22 0.325 4501 -4503 4 3.65 199.5 4.29 0.325 4502 -4504 4 2.74 200.63 3.26 0.325 4503 -4505 4 2.19 201.74 4.94 0.325 4504 -4506 4 1.28 202.3 5.36 0.325 4505 -4507 4 0.33 202.98 6.45 0.325 4506 -4508 4 -0.56 203.3 7.07 0.325 4507 -4509 4 -1.51 203.98 8.25 0.325 4508 -4510 4 -1.78 204.34 8.89 0.325 4509 -4511 4 -1.83 204.37 10.7 0.325 4510 -4512 4 -1.66 205.26 10.56 0.325 4511 -4513 4 -1.47 205.41 11.42 0.325 4512 -4514 4 -1.29 205.31 12.46 0.325 4513 -4515 4 -1.13 205.62 13.78 0.325 4514 -4516 4 -0.79 206.89 14.44 0.325 4515 -4517 4 -0.22 208.2 14.67 0.325 4516 -4518 4 0.1 209.93 14.93 0.325 4517 -4519 4 -0.49 212.25 15.24 0.325 4518 -4520 4 -1.12 215.44 15.55 0.325 4519 -4521 4 -1.5 217.78 15.78 0.325 4520 -4522 4 -1.57 218.79 16.49 0.325 4521 -4523 4 -1.23 220.07 17.0 0.325 4522 -4524 4 -1.23 222.99 18.14 0.325 4523 -4525 4 -1.84 225.72 18.63 0.325 4524 -4526 4 -2.02 228.51 18.99 0.325 4525 -4527 4 -2.18 230.85 19.3 0.325 4526 -4528 4 -2.67 231.68 19.98 0.325 4527 -4529 4 -2.84 234.25 20.24 0.325 4528 -4530 4 -2.18 237.31 20.57 0.325 4529 -4531 4 -2.54 239.66 20.81 0.325 4530 -4532 4 -3.11 241.76 21.01 0.325 4531 -4533 4 -5.12 246.16 21.42 0.325 4532 -4534 4 -6.67 249.93 21.85 0.325 4533 -4535 4 -7.64 251.07 22.77 0.325 4534 -4536 4 -7.77 252.99 23.12 0.325 4535 -4537 4 -8.6 255.73 23.39 0.325 4536 -4538 4 -10.02 257.8 23.56 0.325 4537 -4539 4 -12.59 259.6 25.65 0.325 4538 -4540 4 -13.58 261.41 26.49 0.325 4539 -4541 4 -14.1 262.12 27.54 0.325 4540 -4542 4 -14.17 262.65 28.79 0.325 4541 -4543 4 -15.12 263.87 29.12 0.325 4542 -4544 4 9.2 196.39 9.83 0.435 4496 -4545 4 8.68 197.86 10.04 0.435 4544 -4546 4 7.68 199.46 10.87 0.435 4545 -4547 4 6.97 200.26 11.08 0.435 4546 -4548 4 6.0 201.63 11.95 0.435 4547 -4549 4 4.99 203.44 12.71 0.435 4548 -4550 4 3.58 205.02 13.45 0.435 4549 -4551 4 2.17 206.41 13.79 0.435 4550 -4552 4 1.2 207.83 14.29 0.435 4551 -4553 4 0.7 208.8 14.98 0.435 4552 -4554 4 -0.3 210.36 16.17 0.435 4553 -4555 4 -0.41 211.84 16.62 0.435 4554 -4556 4 -1.64 213.54 18.28 0.435 4555 -4557 4 -1.72 214.82 18.41 0.435 4556 -4558 4 -2.52 217.11 18.93 0.435 4557 -4559 4 -3.58 219.28 20.34 0.435 4558 -4560 4 -4.14 221.14 20.97 0.435 4559 -4561 4 -4.68 222.02 22.7 0.435 4560 -4562 4 -5.31 224.99 23.0 0.435 4561 -4563 4 -5.42 226.71 23.17 0.435 4562 -4564 4 -5.52 228.15 23.84 0.435 4563 -4565 4 -6.07 229.83 24.15 0.435 4564 -4566 4 -6.63 231.7 24.57 0.435 4565 -4567 4 -7.18 233.37 25.03 0.435 4566 -4568 4 -7.29 234.82 25.55 0.435 4567 -4569 4 -7.4 236.5 26.02 0.435 4568 -4570 4 -7.93 237.39 27.68 0.435 4569 -4571 4 -8.01 238.46 27.79 0.435 4570 -4572 4 -9.48 240.35 29.69 0.435 4571 -4573 4 -10.93 242.62 29.89 0.435 4572 -4574 4 -10.79 243.92 30.02 0.435 4573 -4575 4 -10.9 245.1 31.2 0.435 4574 -4576 4 -11.36 245.49 31.3 0.435 4575 -4577 4 -11.94 247.82 31.53 0.435 4576 -4578 4 -12.47 249.3 31.67 0.435 4577 -4579 4 -13.08 251.8 32.36 0.435 4578 -4580 4 -12.95 253.1 32.5 0.435 4579 -4581 4 -12.65 255.26 32.81 0.435 4580 -4582 4 -12.81 257.64 33.36 0.435 4581 -4583 4 -13.91 261.23 33.7 0.435 4582 -4584 4 -14.88 265.57 35.33 0.435 4583 -4585 4 -15.0 267.49 35.52 0.435 4584 -4586 4 -16.25 269.42 37.13 0.435 4585 -4587 4 -17.2 270.66 37.24 0.435 4586 -4588 4 -17.12 272.81 37.46 0.435 4587 -4589 4 -18.0 276.37 38.26 0.435 4588 -4590 4 -18.67 279.49 39.24 0.435 4589 -4591 4 -19.97 282.53 40.58 0.435 4590 -4592 4 -20.8 284.47 42.27 0.435 4591 -4593 4 -20.66 285.78 42.41 0.435 4592 -4594 4 -20.31 286.29 43.98 0.435 4593 -4595 4 -20.37 287.35 44.09 0.435 4594 -4596 4 -21.31 288.37 44.17 0.435 4595 -4597 4 -22.54 290.37 45.17 0.435 4596 -4598 4 -23.08 291.83 45.39 0.435 4597 -4599 4 -23.18 293.28 46.06 0.435 4598 -4600 4 -23.28 294.77 46.29 0.435 4599 -4601 4 -23.37 296.08 46.58 0.435 4600 -4602 4 -24.18 298.61 46.82 0.435 4601 -4603 4 -24.24 299.45 47.13 0.435 4602 -4604 4 -25.23 301.07 47.72 0.435 4603 -4605 4 -26.2 302.22 48.5 0.435 4604 -4606 4 -27.16 303.88 48.72 0.435 4605 -4607 4 -27.66 304.67 49.18 0.435 4606 -4608 4 -28.19 305.88 49.81 0.435 4607 -4609 4 -28.74 307.26 50.85 0.435 4608 -4610 4 -29.27 308.71 51.14 0.435 4609 -4611 4 -29.36 309.97 51.56 0.435 4610 -4612 4 -29.85 310.78 51.86 0.435 4611 -4613 4 -30.35 311.81 52.18 0.435 4612 -4614 4 -30.44 313.08 52.38 0.435 4613 -4615 4 -30.98 314.55 52.6 0.435 4614 -4616 4 -32.33 315.32 52.72 0.435 4615 -4617 4 -33.49 316.54 52.82 0.435 4616 -4618 4 -35.11 317.94 53.01 0.435 4617 -4619 4 -36.21 318.26 53.32 0.435 4618 -4620 4 -36.92 318.84 53.58 0.435 4619 -4621 4 -37.84 319.6 54.09 0.435 4620 -4622 4 -38.52 319.98 54.19 0.435 4621 -4623 4 -39.94 321.82 54.42 0.435 4622 -4624 4 -40.45 322.86 54.6 0.435 4623 -4625 4 -40.5 323.7 54.83 0.435 4624 -4626 4 -41.44 324.71 55.07 0.435 4625 -4627 4 -41.9 325.09 55.32 0.435 4626 -4628 4 -42.38 325.68 55.52 0.435 4627 -4629 4 -43.75 326.67 55.74 0.435 4628 -4630 4 -45.3 327.22 55.69 0.435 4629 -4631 4 -46.31 329.3 55.95 0.435 4630 -4632 4 -47.31 331.39 56.22 0.435 4631 -4633 4 -48.0 331.96 56.49 0.435 4632 -4634 4 -49.15 332.73 56.77 0.435 4633 -4635 4 -49.62 333.35 56.89 0.435 4634 -4636 4 -50.11 334.15 57.2 0.435 4635 -4637 4 -50.62 335.19 57.44 0.435 4636 -4638 4 -50.7 336.21 57.92 0.435 4637 -4639 4 -51.45 337.65 58.27 0.435 4638 -4640 4 -52.15 338.46 58.42 0.435 4639 -4641 4 -52.85 339.04 58.68 0.435 4640 -4642 4 -53.54 339.64 58.73 0.435 4641 -4643 4 -54.48 340.88 58.83 0.435 4642 -4644 4 -54.78 342.14 58.96 0.435 4643 -4645 4 -55.3 343.62 59.1 0.435 4644 -4646 4 -55.8 344.65 59.27 0.435 4645 -4647 4 -56.53 345.68 59.51 0.435 4646 -4648 4 -56.54 345.87 59.76 0.435 4647 -4649 4 -57.5 347.09 59.94 0.435 4648 -4650 4 -57.95 347.49 59.97 0.435 4649 -4651 4 -58.49 348.97 60.11 0.435 4650 -4652 4 -58.96 349.59 60.16 0.435 4651 -4653 4 -58.99 350.0 60.21 0.435 4652 -4654 4 -59.01 350.44 60.25 0.435 4653 -4655 4 25.8 155.24 -21.76 1.515 4448 -4656 4 25.68 157.16 -21.56 1.515 4655 -4657 4 25.82 158.46 -21.42 1.515 4656 -4658 4 25.95 159.76 -21.29 1.515 4657 -4659 4 26.34 160.65 -21.19 1.515 4658 -4660 4 26.62 162.81 -20.96 1.515 4659 -4661 4 27.01 163.49 -20.88 1.515 4660 -4662 4 26.91 164.99 -20.72 1.515 4661 -4663 4 27.05 166.28 -20.59 1.515 4662 -4664 4 26.95 167.93 -20.42 1.3 4663 -4665 4 26.87 169.75 -21.29 1.3 4664 -4666 4 26.34 170.96 -20.57 1.41 4665 -4667 4 25.77 172.85 -20.39 1.41 4666 -4668 4 25.25 174.33 -20.25 1.41 4667 -4669 4 25.22 174.66 -20.22 1.41 4668 -4670 4 24.34 175.06 -20.5 0.76 4669 -4671 4 23.19 176.07 -20.42 0.76 4670 -4672 4 22.52 176.45 -20.4 0.865 4671 -4673 4 21.37 177.46 -20.32 0.76 4672 -4674 4 20.68 178.36 -21.0 0.76 4673 -4675 4 19.39 178.29 -21.18 0.54 4674 -4676 4 18.28 179.45 -22.6 0.435 4675 -4677 4 16.93 180.81 -23.99 0.435 4676 -4678 4 15.12 182.54 -25.06 0.435 4677 -4679 4 13.01 185.53 -25.94 0.435 4678 -4680 4 11.36 188.14 -26.91 0.435 4679 -4681 4 11.12 188.84 -27.52 0.435 4680 -4682 4 9.47 190.9 -27.42 0.435 4681 -4683 4 7.4 192.7 -27.29 0.435 4682 -4684 4 6.91 194.39 -28.55 0.435 4683 -4685 4 5.46 196.65 -28.27 0.435 4684 -4686 4 25.17 175.61 -20.12 1.41 4669 -4687 4 25.09 176.91 -20.14 1.41 4686 -4688 4 25.21 178.42 -19.98 1.41 4687 -4689 4 25.33 179.93 -19.82 1.41 4688 -4690 4 25.51 180.38 -19.77 1.41 4689 -4691 4 25.89 180.97 -19.01 0.54 4690 -4692 4 26.29 181.68 -19.23 0.54 4691 -4693 4 26.72 181.7 -19.15 0.54 4692 -4694 4 27.33 182.38 -19.06 0.54 4693 -4695 4 27.48 183.46 -18.95 0.54 4694 -4696 4 27.41 184.54 -18.84 0.435 4695 -4697 4 27.75 186.06 -18.67 0.435 4696 -4698 4 28.3 187.33 -18.0 0.435 4697 -4699 4 28.65 188.38 -17.36 0.435 4698 -4700 4 29.21 189.13 -15.91 0.435 4699 -4701 4 29.64 189.1 -15.38 0.435 4700 -4702 4 29.74 190.57 -14.77 0.435 4701 -4703 4 29.88 191.61 -14.28 0.435 4702 -4704 4 29.78 192.84 -13.55 0.435 4703 -4705 4 29.9 194.34 -13.32 0.435 4704 -4706 4 30.03 195.37 -12.61 0.435 4705 -4707 4 30.38 196.65 -12.24 0.435 4706 -4708 4 30.77 197.07 -11.73 0.435 4707 -4709 4 31.08 198.75 -10.95 0.435 4708 -4710 4 31.44 199.8 -10.46 0.435 4709 -4711 4 31.76 201.27 -9.76 0.435 4710 -4712 4 31.68 202.31 -9.29 0.435 4711 -4713 4 32.05 203.18 -9.04 0.435 4712 -4714 4 32.18 204.67 -8.73 0.435 4713 -4715 4 32.25 206.81 -8.35 0.435 4714 -4716 4 32.38 208.12 -8.22 0.435 4715 -4717 4 32.49 209.57 -7.46 0.435 4716 -4718 4 31.99 210.3 -6.49 0.435 4717 -4719 4 32.14 211.45 -6.97 0.435 4718 -4720 4 32.11 212.4 -7.86 0.435 4719 -4721 4 32.22 214.42 -8.39 0.435 4720 -4722 4 32.58 215.79 -8.78 0.435 4721 -4723 4 32.5 217.07 -8.72 0.435 4722 -4724 4 33.1 218.01 -8.84 0.435 4723 -4725 4 33.04 219.11 -9.1 0.435 4724 -4726 4 33.61 220.44 -8.94 0.435 4725 -4727 4 34.14 222.2 -8.75 0.435 4726 -4728 4 34.24 224.14 -8.63 0.435 4727 -4729 4 34.63 225.37 -9.85 0.435 4728 -4730 4 35.17 227.13 -9.65 0.435 4729 -4731 4 35.12 227.43 -8.42 0.435 4730 -4732 4 35.72 228.09 -8.1 0.435 4731 -4733 4 36.08 228.92 -7.4 0.435 4732 -4734 4 36.48 229.32 -6.83 0.435 4733 -4735 4 36.63 229.93 -6.31 0.435 4734 -4736 4 36.79 230.76 -5.92 0.435 4735 -4737 4 36.97 231.15 -5.27 0.435 4736 -4738 4 37.13 231.51 -4.56 0.435 4737 -4739 4 37.31 231.9 -3.98 0.435 4738 -4740 4 37.73 231.86 -3.37 0.435 4739 -4741 4 25.23 181.44 -19.73 1.41 4690 -4742 4 25.15 182.74 -19.6 1.41 4741 -4743 4 24.84 184.22 -19.46 1.41 4742 -4744 4 24.33 185.27 -19.36 1.41 4743 -4745 4 23.6 186.51 -19.25 1.41 4744 -4746 4 22.68 187.52 -19.17 1.41 4745 -4747 4 21.94 188.99 -19.03 1.41 4746 -4748 4 21.86 190.06 -18.92 1.41 4747 -4749 4 21.75 191.78 -18.75 1.41 4748 -4750 4 22.08 193.31 -18.58 1.41 4749 -4751 4 22.45 194.4 -18.46 1.41 4750 -4752 4 23.94 195.52 -19.97 1.41 4751 -4753 4 24.28 196.77 -19.31 1.41 4752 -4754 4 24.86 198.17 -19.75 1.41 4753 -4755 4 24.77 198.43 -21.0 0.54 4754 -4756 4 25.39 198.07 -19.3 0.54 4755 -4757 4 26.05 197.88 -19.07 0.54 4756 -4758 4 26.29 197.44 -18.89 0.54 4757 -4759 4 26.71 197.42 -18.35 0.54 4758 -4760 4 26.91 197.35 -17.6 0.54 4759 -4761 4 27.32 197.57 -17.41 0.54 4760 -4762 4 27.74 197.51 -16.58 0.54 4761 -4763 4 28.55 198.41 -16.32 0.54 4762 -4764 4 29.09 199.94 -16.07 0.54 4763 -4765 4 29.52 199.95 -15.84 0.54 4764 -4766 4 29.9 200.31 -14.89 0.54 4765 -4767 4 30.31 200.74 -14.61 0.54 4766 -4768 4 30.3 200.71 -14.31 0.54 4767 -4769 4 30.91 201.13 -13.87 0.54 4768 -4770 4 31.28 201.7 -12.83 0.54 4769 -4771 4 31.42 203.01 -12.84 0.54 4770 -4772 4 31.58 203.68 -12.84 0.54 4771 -4773 4 31.76 204.29 -12.25 0.54 4772 -4774 4 32.08 205.56 -11.73 0.54 4773 -4775 4 32.62 207.3 -11.38 0.54 4774 -4776 4 33.79 209.52 -11.13 0.54 4775 -4777 4 35.13 212.16 -10.67 0.54 4776 -4778 4 36.26 214.8 -10.22 0.54 4777 -4779 4 36.96 217.19 -9.8 0.54 4778 -4780 4 37.5 218.94 -9.54 0.54 4779 -4781 4 38.23 221.13 -9.3 0.54 4780 -4782 4 38.59 222.21 -8.95 0.54 4781 -4783 4 39.57 223.73 -8.31 0.54 4782 -4784 4 40.12 225.23 -7.84 0.54 4783 -4785 4 40.69 226.88 -8.71 0.54 4784 -4786 4 40.88 227.37 -9.04 0.54 4785 -4787 4 41.24 228.98 -9.69 0.54 4786 -4788 4 42.02 230.57 -9.89 0.54 4787 -4789 4 42.56 232.33 -9.84 0.54 4788 -4790 4 43.29 234.53 -9.67 0.54 4789 -4791 4 43.89 235.71 -10.14 0.54 4790 -4792 4 44.72 236.74 -11.15 0.54 4791 -4793 4 45.28 238.27 -10.98 0.54 4792 -4794 4 45.65 239.42 -11.44 0.54 4793 -4795 4 45.59 240.79 -11.99 0.54 4794 -4796 4 45.77 241.48 -12.21 0.54 4795 -4797 4 45.3 242.39 -12.95 0.54 4796 -4798 4 45.66 244.01 -13.68 0.54 4797 -4799 4 45.82 244.63 -13.24 0.54 4798 -4800 4 46.46 244.88 -13.2 0.54 4799 -4801 4 46.91 244.97 -13.85 0.54 4800 -4802 4 47.11 245.47 -14.33 0.54 4801 -4803 4 48.19 246.1 -15.45 0.54 4802 -4804 4 49.24 246.59 -15.37 0.54 4803 -4805 4 49.7 246.72 -16.39 0.54 4804 -4806 4 50.14 247.3 -17.61 0.54 4805 -4807 4 50.76 248.29 -18.47 0.54 4806 -4808 4 51.82 249.12 -19.41 0.54 4807 -4809 4 52.89 249.97 -20.74 0.54 4808 -4810 4 53.31 251.01 -22.12 0.54 4809 -4811 4 54.2 250.94 -23.01 0.54 4810 -4812 4 54.21 251.0 -23.61 0.54 4811 -4813 4 55.25 251.68 -23.29 0.54 4812 -4814 4 55.26 251.98 -24.01 0.54 4813 -4815 4 55.3 252.17 -25.87 0.54 4814 -4816 4 56.6 252.8 -26.98 0.54 4815 -4817 4 57.24 253.37 -27.82 0.54 4816 -4818 4 58.1 253.97 -28.94 0.54 4817 -4819 4 58.34 254.06 -29.75 0.54 4818 -4820 4 58.94 255.02 -30.09 0.54 4819 -4821 4 59.83 255.14 -30.74 0.54 4820 -4822 4 60.68 255.99 -32.28 0.54 4821 -4823 4 61.08 256.93 -32.71 0.54 4822 -4824 4 62.16 257.53 -33.59 0.54 4823 -4825 4 62.38 258.1 -34.82 0.54 4824 -4826 4 62.78 258.87 -35.63 0.54 4825 -4827 4 62.8 258.94 -36.37 0.54 4826 -4828 4 63.03 259.52 -37.66 0.54 4827 -4829 4 63.26 259.91 -39.27 0.54 4828 -4830 4 63.43 261.09 -40.05 0.54 4829 -4831 4 63.66 260.9 -40.07 0.54 4830 -4832 4 63.62 262.36 -41.73 0.54 4831 -4833 4 63.59 262.78 -41.6 0.54 4832 -4834 4 63.77 263.74 -42.26 0.54 4833 -4835 4 63.74 264.18 -42.44 0.54 4834 -4836 4 63.77 264.56 -44.06 0.54 4835 -4837 4 63.81 264.71 -45.55 0.54 4836 -4838 4 64.01 265.49 -46.59 0.54 4837 -4839 4 64.21 266.5 -47.91 0.54 4838 -4840 4 64.2 267.3 -49.27 0.54 4839 -4841 4 64.2 267.85 -50.42 0.54 4840 -4842 4 64.37 269.05 -51.42 0.54 4841 -4843 4 64.34 270.02 -52.37 0.54 4842 -4844 4 64.49 271.38 -52.83 0.54 4843 -4845 4 64.61 272.89 -52.67 0.54 4844 -4846 4 64.58 273.3 -52.48 0.54 4845 -4847 4 64.08 274.12 -52.26 0.54 4846 -4848 4 64.08 274.67 -53.33 0.54 4847 -4849 4 64.07 275.42 -54.38 0.54 4848 -4850 4 63.85 276.22 -55.97 0.54 4849 -4851 4 32.19 201.41 -13.59 0.54 4769 -4852 4 33.04 201.46 -13.57 0.54 4851 -4853 4 34.92 202.37 -12.74 0.54 4852 -4854 4 35.13 202.33 -12.29 0.54 4853 -4855 4 36.77 203.71 -12.04 0.54 4854 -4856 4 38.03 204.18 -11.51 0.54 4855 -4857 4 39.28 204.57 -10.3 0.54 4856 -4858 4 40.91 205.94 -9.9 0.54 4857 -4859 4 41.71 206.78 -9.19 0.54 4858 -4860 4 42.55 207.25 -9.04 0.54 4859 -4861 4 44.01 207.94 -8.49 0.54 4860 -4862 4 44.83 208.36 -7.68 0.54 4861 -4863 4 46.12 208.41 -7.41 0.54 4862 -4864 4 46.89 209.41 -6.01 0.54 4863 -4865 4 47.54 209.42 -5.76 0.54 4864 -4866 4 48.14 209.84 -5.18 0.54 4865 -4867 4 48.89 211.33 -4.48 0.54 4866 -4868 4 49.94 211.78 -3.95 0.54 4867 -4869 4 51.14 213.33 -3.61 0.54 4868 -4870 4 51.92 214.44 -3.26 0.54 4869 -4871 4 53.38 215.38 -2.98 0.54 4870 -4872 4 54.59 216.74 -2.81 0.54 4871 -4873 4 55.84 217.66 -2.53 0.54 4872 -4874 4 57.03 219.23 -2.26 0.54 4873 -4875 4 58.09 219.72 -2.18 0.54 4874 -4876 4 59.76 220.69 -2.04 0.54 4875 -4877 4 61.46 221.22 -1.95 0.54 4876 -4878 4 63.72 223.07 -1.63 0.54 4877 -4879 4 65.35 224.89 -1.41 0.54 4878 -4880 4 66.72 227.13 -1.14 0.54 4879 -4881 4 68.18 228.07 -1.01 0.54 4880 -4882 4 69.11 230.48 -0.66 0.54 4881 -4883 4 70.69 232.95 -0.37 0.54 4882 -4884 4 71.91 234.32 -0.2 0.54 4883 -4885 4 72.52 234.74 0.22 0.54 4884 -4886 4 73.16 234.75 0.54 0.54 4885 -4887 4 75.06 235.55 0.3 0.54 4886 -4888 4 77.23 235.68 0.36 0.54 4887 -4889 4 78.5 236.19 0.45 0.54 4888 -4890 4 79.12 236.65 0.51 0.54 4889 -4891 4 80.16 237.12 0.95 0.54 4890 -4892 4 81.67 237.19 1.22 0.54 4891 -4893 4 83.17 237.24 1.71 0.54 4892 -4894 4 84.22 237.68 2.16 0.54 4893 -4895 4 85.72 237.7 2.95 0.54 4894 -4896 4 87.43 237.77 3.37 0.54 4895 -4897 4 88.09 237.53 3.97 0.54 4896 -4898 4 89.16 237.33 4.51 0.54 4897 -4899 4 90.24 237.11 5.26 0.54 4898 -4900 4 91.09 237.11 5.74 0.54 4899 -4901 4 91.96 237.14 5.98 0.54 4900 -4902 4 92.82 236.91 6.58 0.54 4901 -4903 4 93.69 236.75 6.65 0.54 4902 -4904 4 94.33 236.76 6.97 0.54 4903 -4905 4 94.97 236.75 7.44 0.54 4904 -4906 4 95.84 236.54 7.82 0.54 4905 -4907 4 96.28 236.33 8.11 0.54 4906 -4908 4 97.05 236.71 7.72 0.54 4907 -4909 4 97.3 236.87 6.23 0.54 4908 -4910 4 97.71 236.29 7.91 0.54 4909 -4911 4 97.9 236.96 7.91 0.54 4910 -4912 4 98.32 236.97 8.07 0.54 4911 -4913 4 98.53 236.91 8.75 0.54 4912 -4914 4 98.93 236.85 9.65 0.54 4913 -4915 4 99.55 237.02 10.44 0.54 4914 -4916 4 100.19 237.03 10.69 0.54 4915 -4917 4 100.64 236.59 11.11 0.54 4916 -4918 4 101.7 236.55 12.18 0.54 4917 -4919 4 102.55 236.59 12.28 0.54 4918 -4920 4 102.75 236.5 13.25 0.54 4919 -4921 4 103.16 236.44 14.16 0.54 4920 -4922 4 103.37 236.41 14.61 0.54 4921 -4923 4 104.0 236.37 15.46 0.54 4922 -4924 4 104.2 236.06 16.49 0.54 4923 -4925 4 104.39 235.98 17.46 0.54 4924 -4926 4 104.83 235.69 18.34 0.54 4925 -4927 4 105.02 235.37 19.37 0.54 4926 -4928 4 105.23 235.32 20.04 0.54 4927 -4929 4 106.11 234.88 20.62 0.54 4928 -4930 4 106.55 234.42 21.19 0.54 4929 -4931 4 107.21 234.23 21.42 0.54 4930 -4932 4 107.43 233.94 22.22 0.54 4931 -4933 4 108.07 233.45 23.16 0.54 4932 -4934 4 108.73 233.23 23.53 0.54 4933 -4935 4 108.92 232.91 24.71 0.54 4934 -4936 4 109.55 232.86 25.62 0.54 4935 -4937 4 109.75 232.8 26.3 0.54 4936 -4938 4 110.38 233.02 26.63 0.54 4937 -4939 4 110.59 232.99 27.09 0.54 4938 -4940 4 110.78 232.9 27.99 0.54 4939 -4941 4 25.17 200.33 -19.52 1.41 4754 -4942 4 25.25 202.27 -19.32 1.41 4941 -4943 4 25.33 204.43 -19.09 1.41 4942 -4944 4 25.43 204.52 -19.08 1.41 4943 -4945 4 24.91 204.95 -17.16 0.435 4944 -4946 4 23.76 206.25 -17.96 0.435 4945 -4947 4 23.23 207.43 -17.02 0.435 4946 -4948 4 22.52 207.95 -16.08 0.435 4947 -4949 4 21.58 208.38 -14.63 0.435 4948 -4950 4 20.89 208.7 -13.93 0.435 4949 -4951 4 20.18 209.19 -12.77 0.435 4950 -4952 4 19.27 209.47 -11.86 0.435 4951 -4953 4 18.56 210.28 -11.64 0.435 4952 -4954 4 18.24 211.23 -10.49 0.435 4953 -4955 4 16.82 213.07 -10.25 0.435 4954 -4956 4 15.8 215.09 -9.4 0.435 4955 -4957 4 14.64 216.26 -8.85 0.435 4956 -4958 4 13.68 217.23 -8.32 0.435 4957 -4959 4 12.72 218.64 -7.82 0.435 4958 -4960 4 12.38 220.34 -7.12 0.435 4959 -4961 4 11.33 223.08 -6.87 0.435 4960 -4962 4 11.09 223.49 -6.76 0.435 4961 -4963 4 10.15 224.71 -6.65 0.435 4962 -4964 4 9.59 226.63 -6.47 0.435 4963 -4965 4 9.33 227.24 -6.41 0.435 4964 -4966 4 9.28 228.11 -6.32 0.435 4965 -4967 4 8.34 228.87 -5.81 0.435 4966 -4968 4 7.2 229.86 -5.66 0.435 4967 -4969 4 6.67 231.33 -5.52 0.435 4968 -4970 4 6.14 232.59 -5.4 0.435 4969 -4971 4 5.9 233.21 -5.27 0.435 4970 -4972 4 5.41 233.83 -5.22 0.435 4971 -4973 4 4.92 234.88 -5.12 0.435 4972 -4974 4 4.2 235.91 -5.03 0.435 4973 -4975 4 3.07 236.7 -4.98 0.435 4974 -4976 4 2.56 237.74 -4.88 0.435 4975 -4977 4 2.23 239.44 -4.63 0.435 4976 -4978 4 1.75 240.27 -4.56 0.435 4977 -4979 4 0.98 241.9 -3.96 0.435 4978 -4980 4 0.46 242.86 -3.11 0.435 4979 -4981 4 -0.05 244.09 -2.7 0.435 4980 -4982 4 -0.97 244.89 -2.64 0.435 4981 -4983 4 -1.48 245.9 -2.09 0.435 4982 -4984 4 -2.17 246.21 -1.4 0.435 4983 -4985 4 -3.26 246.95 -2.93 0.435 4984 -4986 4 -3.7 247.44 -3.73 0.435 4985 -4987 4 -4.37 247.87 -4.07 0.435 4986 -4988 4 -5.49 248.44 -4.04 0.435 4987 -4989 4 -6.81 248.79 -4.03 0.435 4988 -4990 4 -7.94 249.59 -3.97 0.435 4989 -4991 4 -8.49 251.27 -3.81 0.435 4990 -4992 4 -9.9 252.91 -3.68 0.435 4991 -4993 4 -10.38 254.27 -4.6 0.435 4992 -4994 4 -11.32 255.57 -5.16 0.435 4993 -4995 4 -12.9 257.31 -6.16 0.435 4994 -4996 4 -13.38 258.21 -6.68 0.435 4995 -4997 4 -13.47 259.79 -7.27 0.435 4996 -4998 4 -14.64 261.23 -7.22 0.435 4997 -4999 4 -15.82 262.91 -7.38 0.435 4998 -5000 4 -16.71 263.56 -7.94 0.435 4999 -5001 4 -16.85 266.0 -8.52 0.435 5000 -5002 4 -16.96 267.93 -8.32 0.435 5001 -5003 4 -17.07 269.42 -8.17 0.435 5002 -5004 4 -18.23 270.88 -8.27 0.435 5003 -5005 4 -19.17 272.18 -8.84 0.435 5004 -5006 4 -19.69 273.66 -8.77 0.435 5005 -5007 4 -20.61 274.48 -8.86 0.435 5006 -5008 4 -20.67 275.6 -9.2 0.435 5007 -5009 4 -20.73 276.7 -9.31 0.435 5008 -5010 4 -20.56 277.87 -10.09 0.435 5009 -5011 4 -20.59 278.83 -10.89 0.435 5010 -5012 4 -20.66 279.9 -10.78 0.435 5011 -5013 4 -20.75 281.69 -11.43 0.435 5012 -5014 4 -21.44 282.59 -12.03 0.435 5013 -5015 4 -22.55 283.51 -13.32 0.435 5014 -5016 4 -23.45 284.36 -13.71 0.435 5015 -5017 4 -24.11 284.83 -14.5 0.435 5016 -5018 4 -25.64 285.23 -15.1 0.435 5017 -5019 4 -26.92 285.2 -15.58 0.435 5018 -5020 4 -27.79 285.17 -15.84 0.435 5019 -5021 4 -29.05 284.69 -16.22 0.435 5020 -5022 4 -30.6 285.25 -16.27 0.435 5021 -5023 4 -32.61 286.22 -16.3 0.435 5022 -5024 4 -36.18 287.73 -16.29 0.435 5023 -5025 4 -39.26 288.93 -17.23 0.435 5024 -5026 4 -40.9 291.3 -18.15 0.435 5025 -5027 4 -42.33 292.61 -16.84 0.435 5026 -5028 4 -43.32 294.68 -16.65 0.435 5027 -5029 4 -43.79 294.82 -16.12 0.435 5028 -5030 4 -45.41 296.18 -15.57 0.435 5029 -5031 4 -45.51 297.63 -14.89 0.435 5030 -5032 4 -46.48 299.06 -14.54 0.435 5031 -5033 4 -47.18 299.6 -13.9 0.435 5032 -5034 4 -47.71 300.56 -12.98 0.435 5033 -5035 4 -48.41 301.36 -12.76 0.435 5034 -5036 4 -48.67 301.94 -12.25 0.435 5035 -5037 4 -48.75 302.97 -11.7 0.435 5036 -5038 4 -48.91 305.3 -11.24 0.435 5037 -5039 4 25.5 205.85 -20.22 1.41 4944 -5040 4 24.79 206.88 -20.13 1.41 5039 -5041 4 25.11 206.91 -20.16 1.41 5040 -5042 4 25.27 206.92 -20.17 1.41 5041 -5043 4 24.04 207.49 -18.58 0.11 5042 -5044 4 23.5 209.18 -18.49 0.11 5043 -5045 4 22.71 211.23 -17.77 0.435 5044 -5046 4 21.92 213.08 -17.29 0.435 5045 -5047 4 21.35 214.89 -16.06 0.435 5046 -5048 4 20.8 216.26 -15.03 0.435 5047 -5049 4 20.27 217.2 -13.89 0.435 5048 -5050 4 19.56 217.43 -12.38 0.435 5049 -5051 4 18.45 217.81 -12.44 0.435 5050 -5052 4 16.79 220.07 -12.25 0.435 5051 -5053 4 15.97 222.59 -12.0 0.435 5052 -5054 4 15.88 224.1 -11.85 0.435 5053 -5055 4 16.25 224.93 -11.15 0.435 5054 -5056 4 16.43 225.36 -11.1 0.435 5055 -5057 4 16.79 226.68 -11.04 0.435 5056 -5058 4 16.74 227.28 -10.53 0.435 5057 -5059 4 16.85 228.53 -9.86 0.435 5058 -5060 4 15.6 230.76 -9.06 0.435 5059 -5061 4 15.09 231.72 -8.14 0.435 5060 -5062 4 13.63 234.2 -7.84 0.435 5061 -5063 4 12.41 236.27 -7.59 0.435 5062 -5064 4 12.33 237.31 -7.18 0.435 5063 -5065 4 11.36 238.69 -6.46 0.435 5064 -5066 4 11.01 240.07 -5.2 0.435 5065 -5067 4 10.49 240.98 -3.91 0.435 5066 -5068 4 8.18 242.98 -3.6 0.435 5067 -5069 4 6.48 245.65 -3.14 0.435 5068 -5070 4 4.52 249.17 -2.67 0.435 5069 -5071 4 2.66 251.21 -2.5 0.435 5070 -5072 4 0.25 254.68 -1.83 0.435 5071 -5073 4 -1.47 257.75 -1.02 0.435 5072 -5074 4 -2.04 259.34 0.18 0.435 5073 -5075 4 -3.67 260.9 0.83 0.435 5074 -5076 4 -4.19 261.88 1.59 0.435 5075 -5077 4 -4.7 262.85 2.28 0.435 5076 -5078 4 -5.65 263.83 2.81 0.435 5077 -5079 4 -8.18 266.03 3.06 0.435 5078 -5080 4 -10.04 268.06 3.3 0.435 5079 -5081 4 -11.68 269.63 3.95 0.435 5080 -5082 4 -13.1 270.93 5.26 0.435 5081 -5083 4 -14.12 272.97 5.97 0.435 5082 -5084 4 -14.27 275.05 6.72 0.435 5083 -5085 4 -14.29 275.74 6.25 0.435 5084 -5086 4 -14.76 276.37 6.24 0.435 5085 -5087 4 -14.57 276.28 7.29 0.435 5086 -5088 4 -15.09 276.72 9.12 0.435 5087 -5089 4 -15.13 277.05 10.06 0.435 5088 -5090 4 -15.87 277.49 11.6 0.435 5089 -5091 4 -16.77 278.03 12.16 0.435 5090 -5092 4 25.36 208.22 -20.06 1.41 5041 -5093 4 25.75 208.68 -20.0 1.41 5092 -5094 4 26.09 210.2 -19.84 1.41 5093 -5095 4 25.77 211.9 -19.67 1.41 5094 -5096 4 25.17 214.24 -19.44 1.41 5095 -5097 4 24.36 216.77 -19.2 1.41 5096 -5098 4 23.37 218.86 -19.0 1.41 5097 -5099 4 23.07 220.44 -19.74 1.41 5098 -5100 4 23.38 220.59 -19.72 1.41 5099 -5101 4 24.2 221.0 -18.9 0.435 5100 -5102 4 24.15 221.65 -18.92 0.435 5101 -5103 4 24.33 222.02 -18.2 0.435 5102 -5104 4 24.46 223.29 -17.77 0.435 5103 -5105 4 24.65 223.19 -16.72 0.435 5104 -5106 4 24.62 223.6 -16.52 0.435 5105 -5107 4 24.82 223.54 -15.69 0.435 5106 -5108 4 24.77 224.14 -15.33 0.435 5107 -5109 4 24.95 224.52 -14.61 0.435 5108 -5110 4 25.08 225.32 -13.84 0.435 5109 -5111 4 25.45 226.14 -13.07 0.435 5110 -5112 4 25.82 227.0 -12.82 0.435 5111 -5113 4 25.97 228.07 -12.56 0.435 5112 -5114 4 26.35 228.7 -12.11 0.435 5113 -5115 4 26.52 229.33 -11.74 0.435 5114 -5116 4 26.89 230.21 -11.64 0.435 5115 -5117 4 27.48 231.31 -11.43 0.435 5116 -5118 4 27.77 233.48 -11.13 0.435 5117 -5119 4 28.12 234.79 -10.99 0.435 5118 -5120 4 28.22 236.24 -10.23 0.435 5119 -5121 4 28.37 237.31 -10.04 0.435 5120 -5122 4 28.52 238.37 -9.7 0.435 5121 -5123 4 28.87 239.44 -9.2 0.435 5122 -5124 4 29.21 240.48 -8.48 0.435 5123 -5125 4 29.39 241.1 -8.19 0.435 5124 -5126 4 29.74 242.18 -7.84 0.435 5125 -5127 4 29.94 242.89 -8.37 0.435 5126 -5128 4 30.15 243.45 -9.36 0.435 5127 -5129 4 30.55 244.16 -9.73 0.435 5128 -5130 4 30.73 245.09 -10.23 0.435 5129 -5131 4 31.11 245.99 -10.21 0.435 5130 -5132 4 31.25 247.32 -10.44 0.435 5131 -5133 4 31.18 248.39 -10.4 0.435 5132 -5134 4 31.55 249.5 -10.36 0.435 5133 -5135 4 31.52 250.23 -11.04 0.435 5134 -5136 4 31.69 251.11 -11.1 0.435 5135 -5137 4 32.76 251.67 -11.62 0.435 5136 -5138 4 33.71 253.66 -11.39 0.435 5137 -5139 4 34.25 255.41 -11.19 0.435 5138 -5140 4 34.44 256.14 -11.79 0.435 5139 -5141 4 34.59 257.25 -11.82 0.435 5140 -5142 4 34.56 257.39 -11.28 0.435 5141 -5143 4 34.75 258.1 -11.58 0.435 5142 -5144 4 34.72 258.79 -11.96 0.435 5143 -5145 4 34.69 259.48 -12.42 0.435 5144 -5146 4 34.85 260.61 -12.75 0.435 5145 -5147 4 35.01 261.49 -12.73 0.435 5146 -5148 4 36.04 262.67 -13.11 0.435 5147 -5149 4 36.14 264.4 -12.93 0.435 5148 -5150 4 35.79 266.54 -12.79 0.435 5149 -5151 4 35.71 267.82 -12.66 0.435 5150 -5152 4 35.69 268.04 -12.64 0.435 5151 -5153 4 35.63 269.41 -13.33 0.435 5152 -5154 4 35.1 271.14 -13.61 0.435 5153 -5155 4 34.33 273.34 -14.3 0.435 5154 -5156 4 33.58 275.36 -15.4 0.435 5155 -5157 4 33.7 277.1 -15.37 0.435 5156 -5158 4 33.35 279.26 -15.37 0.435 5157 -5159 4 32.99 282.12 -15.99 0.435 5158 -5160 4 32.62 284.52 -16.35 0.435 5159 -5161 4 32.53 286.02 -16.2 0.435 5160 -5162 4 32.46 287.66 -17.32 0.435 5161 -5163 4 31.64 290.4 -17.06 0.435 5162 -5164 4 31.79 292.04 -18.08 0.435 5163 -5165 4 31.73 293.12 -18.05 0.435 5164 -5166 4 31.78 295.75 -18.23 0.435 5165 -5167 4 33.4 297.78 -18.05 0.435 5166 -5168 4 34.36 299.85 -18.42 0.435 5167 -5169 4 34.49 301.4 -18.64 0.435 5168 -5170 4 35.25 303.21 -18.88 0.435 5169 -5171 4 35.57 305.17 -18.74 0.435 5170 -5172 4 36.5 307.32 -17.9 0.435 5171 -5173 4 36.73 310.34 -17.58 0.435 5172 -5174 4 36.45 311.38 -17.33 0.435 5173 -5175 4 36.33 313.31 -17.13 0.435 5174 -5176 4 36.4 315.47 -16.9 0.435 5175 -5177 4 36.68 318.06 -16.63 0.435 5176 -5178 4 36.99 319.86 -16.52 0.435 5177 -5179 4 37.58 321.0 -16.69 0.435 5178 -5180 4 37.96 322.18 -17.31 0.435 5179 -5181 4 37.91 323.61 -18.59 0.435 5180 -5182 4 38.08 324.77 -19.22 0.435 5181 -5183 4 38.05 325.76 -20.48 0.435 5182 -5184 4 37.32 327.26 -20.71 0.435 5183 -5185 4 37.04 328.64 -21.56 0.435 5184 -5186 4 36.36 329.55 -22.46 0.435 5185 -5187 4 36.31 330.19 -22.32 0.435 5186 -5188 4 35.84 331.32 -23.04 0.435 5187 -5189 4 36.15 333.84 -24.2 0.435 5188 -5190 4 36.3 335.24 -24.96 0.435 5189 -5191 4 36.86 337.06 -25.51 0.435 5190 -5192 4 37.23 338.46 -26.11 0.435 5191 -5193 4 38.13 341.55 -26.0 0.435 5192 -5194 4 38.46 343.32 -26.11 0.435 5193 -5195 4 39.61 345.76 -25.9 0.435 5194 -5196 4 40.68 349.53 -25.94 0.435 5195 -5197 4 41.48 350.65 -25.8 0.435 5196 -5198 4 42.65 352.66 -25.57 0.435 5197 -5199 4 42.56 354.16 -25.42 0.435 5198 -5200 4 42.46 355.67 -25.34 0.435 5199 -5201 4 42.15 357.69 -26.2 0.435 5200 -5202 4 41.01 359.3 -27.79 0.435 5201 -5203 4 22.75 222.16 -19.87 1.41 5100 -5204 4 22.65 224.49 -21.37 1.41 5203 -5205 4 23.01 225.8 -21.3 1.41 5204 -5206 4 23.11 227.53 -21.12 1.41 5205 -5207 4 23.26 229.17 -22.15 1.41 5206 -5208 4 23.43 230.84 -23.49 1.41 5207 -5209 4 23.32 232.56 -23.46 1.41 5208 -5210 4 23.49 234.07 -25.26 1.41 5209 -5211 4 23.54 234.89 -25.17 1.41 5210 -5212 4 22.83 235.39 -24.08 0.435 5211 -5213 4 22.78 236.02 -23.94 0.435 5212 -5214 4 22.3 236.57 -23.22 0.435 5213 -5215 4 21.58 237.07 -22.21 0.435 5214 -5216 4 20.88 237.39 -21.44 0.435 5215 -5217 4 20.16 238.63 -21.25 0.435 5216 -5218 4 19.69 238.98 -20.7 0.435 5217 -5219 4 19.19 239.55 -20.2 0.435 5218 -5220 4 19.12 240.32 -19.37 0.435 5219 -5221 4 18.38 241.76 -19.09 0.435 5220 -5222 4 17.89 242.59 -19.01 0.435 5221 -5223 4 17.38 243.85 -18.81 0.435 5222 -5224 4 16.67 244.66 -18.68 0.435 5223 -5225 4 15.93 245.88 -18.33 0.435 5224 -5226 4 15.43 246.92 -18.17 0.435 5225 -5227 4 14.98 247.09 -18.01 0.435 5226 -5228 4 14.51 247.71 -17.96 0.435 5227 -5229 4 14.65 248.79 -17.84 0.435 5228 -5230 4 14.54 250.5 -17.59 0.435 5229 -5231 4 13.77 252.39 -17.41 0.435 5230 -5232 4 12.98 254.48 -17.21 0.435 5231 -5233 4 12.44 256.16 -16.9 0.435 5232 -5234 4 11.94 256.92 -16.16 0.435 5233 -5235 4 11.42 258.18 -16.04 0.435 5234 -5236 4 10.97 258.88 -16.74 0.435 5235 -5237 4 10.48 259.71 -16.66 0.435 5236 -5238 4 9.56 260.78 -17.02 0.435 5237 -5239 4 8.9 261.52 -18.32 0.435 5238 -5240 4 8.24 261.93 -18.6 0.435 5239 -5241 4 7.57 262.11 -18.59 0.435 5240 -5242 4 6.85 263.14 -18.57 0.435 5241 -5243 4 6.82 264.1 -19.31 0.435 5242 -5244 4 7.0 264.79 -19.69 0.435 5243 -5245 4 6.98 265.47 -19.99 0.435 5244 -5246 4 6.92 266.62 -20.55 0.435 5245 -5247 4 6.9 267.32 -21.01 0.435 5246 -5248 4 6.83 268.43 -21.35 0.435 5247 -5249 4 6.34 269.26 -21.27 0.435 5248 -5250 4 5.84 270.81 -21.88 0.435 5249 -5251 4 4.9 271.83 -21.79 0.435 5250 -5252 4 4.18 273.41 -22.77 0.435 5251 -5253 4 3.18 275.49 -22.51 0.435 5252 -5254 4 2.65 276.73 -22.24 0.435 5253 -5255 4 1.75 277.84 -23.13 0.435 5254 -5256 4 1.73 279.1 -24.73 0.435 5255 -5257 4 1.68 280.29 -25.74 0.435 5256 -5258 4 1.6 281.8 -25.74 0.435 5257 -5259 4 1.0 284.13 -25.51 0.435 5258 -5260 4 -0.66 286.61 -25.29 0.435 5259 -5261 4 -1.83 288.37 -26.19 0.435 5260 -5262 4 -2.36 289.84 -26.06 0.435 5261 -5263 4 -3.3 291.13 -26.55 0.435 5262 -5264 4 -4.21 292.46 -27.34 0.435 5263 -5265 4 -4.7 293.29 -27.33 0.435 5264 -5266 4 -5.87 295.04 -28.16 0.435 5265 -5267 4 -6.74 295.55 -29.41 0.435 5266 -5268 4 -8.07 296.12 -29.45 0.435 5267 -5269 4 -9.19 296.97 -29.99 0.435 5268 -5270 4 -9.92 298.24 -30.03 0.435 5269 -5271 4 -11.31 299.66 -29.92 0.435 5270 -5272 4 -13.35 301.85 -31.4 0.435 5271 -5273 4 -14.71 303.16 -32.2 0.435 5272 -5274 4 -15.39 303.83 -32.83 0.435 5273 -5275 4 -15.85 304.72 -33.34 0.435 5274 -5276 4 -16.78 306.05 -34.28 0.435 5275 -5277 4 -17.7 307.36 -34.85 0.435 5276 -5278 4 -18.83 308.5 -36.12 0.435 5277 -5279 4 -20.42 310.21 -36.88 0.435 5278 -5280 4 -21.37 311.49 -37.15 0.435 5279 -5281 4 -22.28 312.58 -37.81 0.435 5280 -5282 4 -23.39 313.49 -38.87 0.435 5281 -5283 4 -23.87 314.36 -39.24 0.435 5282 -5284 4 -23.91 315.8 -40.53 0.435 5283 -5285 4 -24.63 317.11 -41.09 0.435 5284 -5286 4 -25.3 318.08 -42.36 0.435 5285 -5287 4 -25.97 319.0 -43.41 0.435 5286 -5288 4 -28.19 319.76 -43.76 0.435 5287 -5289 4 -29.1 320.62 -44.15 0.435 5288 -5290 4 -29.79 321.5 -44.75 0.435 5289 -5291 4 -31.42 323.58 -44.87 0.435 5290 -5292 4 -32.36 324.61 -44.87 0.435 5291 -5293 4 -32.78 325.16 -46.18 0.435 5292 -5294 4 -33.89 326.08 -47.47 0.435 5293 -5295 4 23.42 235.13 -25.15 1.41 5211 -5296 4 23.56 236.43 -25.01 1.41 5295 -5297 4 24.14 237.55 -24.89 1.41 5296 -5298 4 24.54 238.83 -26.55 1.41 5297 -5299 4 24.89 240.4 -26.76 1.515 5298 -5300 4 25.23 242.5 -27.96 1.515 5299 -5301 4 25.6 243.61 -27.99 1.515 5300 -5302 4 25.31 244.88 -27.86 1.625 5301 -5303 4 25.0 246.65 -28.89 1.625 5302 -5304 4 24.94 248.26 -29.93 1.625 5303 -5305 4 25.08 249.34 -29.6 1.625 5304 -5306 4 24.51 249.71 -29.57 1.625 5305 -5307 4 23.36 250.4 -29.08 0.65 5306 -5308 4 22.83 251.57 -28.13 0.54 5307 -5309 4 22.6 251.78 -28.2 0.54 5308 -5310 4 22.58 251.68 -27.22 0.54 5309 -5311 4 22.56 251.59 -26.34 0.54 5310 -5312 4 22.54 251.5 -25.51 0.54 5311 -5313 4 22.49 251.84 -24.57 0.54 5312 -5314 4 22.48 251.81 -24.27 0.54 5313 -5315 4 22.46 252.0 -24.03 0.54 5314 -5316 4 22.44 251.94 -23.44 0.54 5315 -5317 4 22.41 252.04 -22.37 0.54 5316 -5318 4 22.4 251.99 -21.92 0.54 5317 -5319 4 22.38 251.89 -20.88 0.54 5318 -5320 4 22.37 252.16 -21.37 0.54 5319 -5321 4 22.36 252.36 -21.28 0.54 5320 -5322 4 22.33 252.78 -21.02 0.54 5321 -5323 4 22.31 252.68 -20.12 0.54 5322 -5324 4 21.83 253.01 -19.42 0.54 5323 -5325 4 21.34 253.82 -19.2 0.76 5324 -5326 4 20.56 255.93 -19.0 0.65 5325 -5327 4 20.46 257.43 -18.84 0.65 5326 -5328 4 19.04 259.27 -18.69 0.65 5327 -5329 4 18.3 260.51 -18.5 0.65 5328 -5330 4 17.54 262.4 -18.33 0.65 5329 -5331 4 16.79 263.84 -17.96 0.65 5330 -5332 4 16.0 265.68 -17.27 0.65 5331 -5333 4 15.42 267.46 -16.04 0.54 5332 -5334 4 14.89 268.65 -15.18 0.54 5333 -5335 4 14.36 269.59 -14.11 0.54 5334 -5336 4 14.31 270.15 -13.23 0.54 5335 -5337 4 14.21 271.11 -12.07 0.54 5336 -5338 4 13.4 273.38 -11.34 0.54 5337 -5339 4 12.61 275.47 -11.06 0.54 5338 -5340 4 12.33 276.85 -11.98 0.435 5339 -5341 4 11.57 278.53 -11.82 0.435 5340 -5342 4 11.52 279.4 -11.88 0.435 5341 -5343 4 11.32 282.9 -12.28 0.435 5342 -5344 4 10.65 286.74 -11.9 0.435 5343 -5345 4 10.75 288.46 -11.72 0.435 5344 -5346 4 9.78 290.13 -11.57 0.435 5345 -5347 4 8.54 292.42 -11.36 0.435 5346 -5348 4 7.73 294.95 -11.2 0.435 5347 -5349 4 7.38 296.75 -9.96 0.435 5348 -5350 4 6.84 298.5 -10.32 0.435 5349 -5351 4 6.77 299.84 -10.72 0.435 5350 -5352 4 6.85 302.01 -10.56 0.435 5351 -5353 4 6.76 303.77 -10.9 0.435 5352 -5354 4 5.1 305.83 -10.81 0.435 5353 -5355 4 3.96 306.84 -10.73 0.435 5354 -5356 4 2.12 308.45 -10.61 0.435 5355 -5357 4 -0.11 309.63 -10.84 0.435 5356 -5358 4 -1.79 312.11 -10.62 0.435 5357 -5359 4 -1.95 314.69 -10.36 0.435 5358 -5360 4 -2.92 316.34 -10.28 0.435 5359 -5361 4 -4.14 318.47 -10.54 0.435 5360 -5362 4 -4.68 320.41 -10.66 0.435 5361 -5363 4 -5.42 321.63 -10.33 0.435 5362 -5364 4 -6.12 322.44 -10.26 0.435 5363 -5365 4 -7.54 324.29 -10.1 0.435 5364 -5366 4 -7.82 324.88 -9.6 0.435 5365 -5367 4 -8.26 324.73 -8.42 0.435 5366 -5368 4 -8.35 325.44 -6.99 0.435 5367 -5369 4 -9.28 325.67 -5.56 0.435 5368 -5370 4 -9.76 326.01 -4.85 0.435 5369 -5371 4 -10.23 326.33 -4.0 0.435 5370 -5372 4 -11.15 326.62 -3.24 0.435 5371 -5373 4 -11.62 327.2 -2.74 0.435 5372 -5374 4 -13.21 327.89 -2.03 0.435 5373 -5375 4 -13.07 328.41 -0.69 0.435 5374 -5376 4 -13.85 330.49 -0.19 0.435 5375 -5377 4 -13.88 330.39 0.77 0.435 5376 -5378 4 -15.05 331.32 1.52 0.435 5377 -5379 4 -16.19 332.06 2.09 0.435 5378 -5380 4 -17.59 333.2 2.71 0.435 5379 -5381 4 -18.96 334.16 3.15 0.435 5380 -5382 4 -19.52 335.76 4.28 0.435 5381 -5383 4 -20.73 337.1 5.29 0.435 5382 -5384 4 -20.82 338.32 5.95 0.435 5383 -5385 4 -21.76 339.33 6.18 0.435 5384 -5386 4 -22.96 340.62 7.64 0.435 5385 -5387 4 -24.08 340.44 8.81 0.435 5386 -5388 4 -24.8 341.18 9.61 0.435 5387 -5389 4 -25.96 342.11 10.28 0.435 5388 -5390 4 -26.74 343.94 11.14 0.435 5389 -5391 4 -27.77 346.22 11.5 0.435 5390 -5392 4 -28.76 348.06 12.04 0.435 5391 -5393 4 -29.82 350.7 13.19 0.435 5392 -5394 4 -30.86 352.41 15.0 0.435 5393 -5395 4 -30.94 353.4 15.86 0.435 5394 -5396 4 -31.03 354.39 16.78 0.435 5395 -5397 4 -32.45 355.93 17.81 0.435 5396 -5398 4 -31.91 357.2 18.49 0.435 5397 -5399 4 -31.56 358.73 18.66 0.435 5398 -5400 4 -31.4 359.6 18.75 0.435 5399 -5401 4 -31.48 360.67 18.86 0.435 5400 -5402 4 -32.2 361.64 19.55 0.435 5401 -5403 4 -32.92 362.42 19.98 0.435 5402 -5404 4 -34.33 364.03 20.35 0.435 5403 -5405 4 -36.16 365.41 20.6 0.435 5404 -5406 4 -36.49 366.99 21.36 0.435 5405 -5407 4 -36.56 367.79 21.96 0.435 5406 -5408 4 -37.48 368.57 22.32 0.435 5407 -5409 4 -38.01 369.8 22.67 0.435 5408 -5410 4 -38.95 370.79 23.04 0.435 5409 -5411 4 -39.04 372.28 23.34 0.435 5410 -5412 4 -39.79 373.69 23.92 0.435 5411 -5413 4 -39.72 375.36 24.7 0.435 5412 -5414 4 -40.3 377.65 25.22 0.435 5413 -5415 4 -40.82 378.86 25.79 0.435 5414 -5416 4 -41.99 379.56 26.82 0.435 5415 -5417 4 -42.9 379.8 28.1 0.435 5416 -5418 4 -43.81 380.12 28.65 0.435 5417 -5419 4 -45.2 381.29 29.26 0.435 5418 -5420 4 -46.14 382.28 29.41 0.435 5419 -5421 4 -46.22 383.56 29.69 0.435 5420 -5422 4 -46.34 385.24 30.16 0.435 5421 -5423 4 -46.88 386.68 30.68 0.435 5422 -5424 4 -48.33 389.16 30.97 0.435 5423 -5425 4 -49.85 392.51 31.36 0.435 5424 -5426 4 -51.48 394.12 31.49 0.435 5425 -5427 4 -52.44 395.57 31.69 0.435 5426 -5428 4 -54.07 397.17 31.9 0.435 5427 -5429 4 -55.67 398.37 31.98 0.435 5428 -5430 4 -57.42 401.86 32.83 0.435 5429 -5431 4 -59.31 404.32 33.12 0.435 5430 -5432 4 -60.72 405.95 33.4 0.435 5431 -5433 4 -61.9 407.12 34.02 0.435 5432 -5434 4 -63.33 408.94 34.32 0.435 5433 -5435 4 -63.43 410.15 35.2 0.435 5434 -5436 4 -63.37 412.46 36.04 0.435 5435 -5437 4 -63.43 413.03 36.79 0.435 5436 -5438 4 -63.31 414.52 37.16 0.435 5437 -5439 4 -63.4 415.48 38.39 0.435 5438 -5440 4 -64.82 417.09 38.75 0.435 5439 -5441 4 -64.9 418.37 38.95 0.435 5440 -5442 4 -65.46 420.27 39.14 0.435 5441 -5443 4 -65.57 421.98 39.31 0.435 5442 -5444 4 -66.5 423.0 39.39 0.435 5443 -5445 4 -67.03 424.46 39.61 0.435 5444 -5446 4 -67.09 425.09 39.9 0.435 5445 -5447 4 -67.15 425.62 41.09 0.435 5446 -5448 4 -67.24 426.87 41.52 0.435 5447 -5449 4 -67.91 427.06 41.89 0.435 5448 -5450 4 -68.38 427.69 41.88 0.435 5449 -5451 4 -68.67 427.89 43.85 0.435 5450 -5452 4 -69.34 427.76 44.8 0.435 5451 -5453 4 -69.82 428.09 45.42 0.435 5452 -5454 4 -70.53 428.32 47.09 0.435 5453 -5455 4 -70.4 428.79 48.87 0.435 5454 -5456 4 -70.69 429.56 49.78 0.435 5455 -5457 4 -71.19 430.83 49.75 0.435 5456 -5458 4 -70.83 431.4 50.79 0.435 5457 -5459 4 -70.69 432.44 51.35 0.435 5458 -5460 4 -71.64 432.86 53.1 0.435 5459 -5461 4 -72.13 433.68 53.26 0.435 5460 -5462 4 -72.86 434.38 54.37 0.435 5461 -5463 4 -73.55 434.95 54.71 0.435 5462 -5464 4 -74.52 436.37 55.14 0.435 5463 -5465 4 -74.8 437.18 55.52 0.435 5464 -5466 4 -74.42 437.8 56.11 0.435 5465 -5467 4 -74.29 438.86 56.46 0.435 5466 -5468 4 -74.34 439.71 56.61 0.435 5467 -5469 4 -74.81 440.33 56.67 0.435 5468 -5470 4 -75.98 441.75 56.87 0.435 5469 -5471 4 -77.58 442.95 56.95 0.435 5470 -5472 4 -79.51 445.84 57.21 0.435 5471 -5473 4 -80.99 448.77 57.48 0.435 5472 -5474 4 -81.53 449.95 58.26 0.435 5473 -5475 4 -83.24 452.79 59.19 0.435 5474 -5476 4 -83.16 454.71 59.62 0.435 5475 -5477 4 -83.05 456.16 60.37 0.435 5476 -5478 4 -82.78 458.54 60.7 0.435 5477 -5479 4 -82.69 460.44 61.28 0.435 5478 -5480 4 -82.56 461.44 62.21 0.435 5479 -5481 4 -82.16 461.87 62.49 0.435 5480 -5482 4 -82.28 463.52 63.26 0.435 5481 -5483 4 -82.79 464.27 64.09 0.435 5482 -5484 4 -83.96 465.19 64.98 0.435 5483 -5485 4 -84.45 465.43 66.57 0.435 5484 -5486 4 -85.19 466.12 67.91 0.435 5485 -5487 4 -86.14 466.82 68.94 0.435 5486 -5488 4 -86.39 467.15 69.87 0.435 5487 -5489 4 -87.75 467.87 70.36 0.435 5488 -5490 4 -89.09 468.16 71.04 0.435 5489 -5491 4 24.48 250.15 -29.53 1.625 5306 -5492 4 25.04 250.78 -31.11 1.735 5491 -5493 4 25.2 251.66 -31.01 1.735 5492 -5494 4 24.94 253.32 -32.58 1.735 5493 -5495 4 24.84 255.39 -33.79 1.735 5494 -5496 4 24.75 257.17 -34.21 1.735 5495 -5497 4 24.22 258.42 -34.03 1.735 5496 -5498 4 24.4 259.13 -33.95 1.735 5497 -5499 4 24.81 259.89 -34.69 0.65 5498 -5500 4 25.2 260.54 -34.54 0.865 5499 -5501 4 26.04 260.81 -34.41 0.865 5500 -5502 4 26.62 262.18 -34.71 0.865 5501 -5503 4 27.38 263.94 -34.59 0.65 5502 -5504 4 28.18 265.31 -34.65 0.65 5503 -5505 4 28.52 266.63 -34.58 0.65 5504 -5506 4 29.08 268.17 -34.48 0.65 5505 -5507 4 30.07 269.54 -34.4 0.65 5506 -5508 4 31.02 271.74 -34.15 0.65 5507 -5509 4 31.97 273.96 -34.05 0.65 5508 -5510 4 32.68 276.4 -33.93 0.65 5509 -5511 4 33.63 278.6 -33.68 0.65 5510 -5512 4 34.55 281.24 -33.45 0.65 5511 -5513 4 35.7 283.46 -33.2 0.65 5512 -5514 4 36.96 287.63 -32.73 0.65 5513 -5515 4 37.71 289.39 -32.53 0.65 5514 -5516 4 38.64 291.81 -32.26 0.65 5515 -5517 4 39.53 294.88 -31.92 0.65 5516 -5518 4 40.45 297.31 -31.65 0.65 5517 -5519 4 41.41 299.51 -31.4 0.65 5518 -5520 4 42.53 302.38 -31.08 0.65 5519 -5521 4 43.47 304.59 -30.83 0.65 5520 -5522 4 43.84 305.22 -30.38 0.65 5521 -5523 4 44.85 306.57 -30.22 0.65 5522 -5524 4 47.13 308.21 -29.99 0.65 5523 -5525 4 47.49 309.32 -29.87 0.65 5524 -5526 4 47.83 310.83 -29.62 0.65 5525 -5527 4 48.14 312.78 -29.41 0.65 5526 -5528 4 48.48 314.1 -29.27 0.65 5527 -5529 4 48.44 314.73 -29.21 0.65 5528 -5530 4 49.23 316.37 -29.7 0.65 5529 -5531 4 49.64 316.85 -29.94 0.65 5530 -5532 4 49.99 317.91 -29.44 0.65 5531 -5533 4 23.96 259.81 -35.1 1.735 5498 -5534 4 23.69 260.96 -35.81 1.735 5533 -5535 4 23.35 261.23 -35.79 1.735 5534 -5536 4 22.02 261.6 -36.08 0.76 5535 -5537 4 21.26 263.26 -35.78 0.54 5536 -5538 4 20.31 264.49 -35.67 0.54 5537 -5539 4 19.56 266.17 -35.52 0.54 5538 -5540 4 18.81 267.63 -35.38 0.54 5539 -5541 4 18.32 268.68 -35.29 0.54 5540 -5542 4 17.79 269.93 -35.17 0.54 5541 -5543 4 17.69 271.43 -35.02 0.54 5542 -5544 4 17.64 272.29 -34.93 0.54 5543 -5545 4 17.8 273.16 -34.84 0.54 5544 -5546 4 17.71 274.66 -34.68 0.54 5545 -5547 4 17.82 276.39 -34.5 0.54 5546 -5548 4 17.75 277.45 -34.39 0.54 5547 -5549 4 16.37 278.66 -34.3 0.54 5548 -5550 4 15.86 279.71 -34.2 0.54 5549 -5551 4 14.91 281.16 -34.08 0.54 5550 -5552 4 13.53 282.35 -33.99 0.54 5551 -5553 4 13.23 282.82 -32.22 0.54 5552 -5554 4 12.87 283.44 -32.08 0.65 5553 -5555 4 12.99 284.95 -31.92 0.65 5554 -5556 4 12.9 286.45 -31.77 0.865 5555 -5557 4 13.01 288.18 -31.58 0.865 5556 -5558 4 13.31 290.14 -31.38 0.865 5557 -5559 4 13.44 291.65 -31.22 0.865 5558 -5560 4 13.55 293.16 -31.06 0.865 5559 -5561 4 13.52 293.6 -31.01 0.865 5560 -5562 4 12.83 294.19 -30.97 0.865 5561 -5563 4 11.9 295.21 -30.88 0.54 5562 -5564 4 11.62 296.27 -30.78 0.76 5563 -5565 4 10.47 297.28 -30.7 0.76 5564 -5566 4 9.96 298.32 -30.61 0.76 5565 -5567 4 9.23 299.56 -30.5 0.65 5566 -5568 4 7.86 300.78 -30.4 0.65 5567 -5569 4 7.34 302.03 -30.29 0.65 5568 -5570 4 6.36 303.7 -30.14 0.65 5569 -5571 4 6.28 304.98 -30.01 0.65 5570 -5572 4 4.84 306.46 -28.38 0.65 5571 -5573 4 3.46 307.67 -28.29 0.65 5572 -5574 4 2.76 308.22 -27.79 0.65 5573 -5575 4 2.71 308.55 -26.78 0.65 5574 -5576 4 2.2 309.51 -25.87 0.65 5575 -5577 4 2.08 311.2 -25.47 0.65 5576 -5578 4 1.07 313.3 -25.28 0.65 5577 -5579 4 0.53 314.97 -25.05 0.65 5578 -5580 4 0.44 315.97 -24.26 0.65 5579 -5581 4 -0.94 317.37 -23.85 0.65 5580 -5582 4 -2.36 318.97 -23.41 0.65 5581 -5583 4 -2.91 320.61 -22.73 0.65 5582 -5584 4 -3.02 322.03 -21.84 0.65 5583 -5585 4 -4.45 323.85 -21.38 0.65 5584 -5586 4 -5.83 325.02 -21.06 0.65 5585 -5587 4 -6.99 326.03 -20.91 0.65 5586 -5588 4 -7.04 326.65 -20.7 0.65 5587 -5589 4 -7.98 327.89 -20.59 0.65 5588 -5590 4 -8.05 328.91 -20.04 0.65 5589 -5591 4 -8.15 330.13 -19.24 0.65 5590 -5592 4 -8.02 331.23 -18.82 0.65 5591 -5593 4 -8.08 331.81 -18.16 0.65 5592 -5594 4 -8.15 332.61 -17.62 0.65 5593 -5595 4 -8.23 333.62 -16.92 0.65 5594 -5596 4 -8.79 335.49 -16.35 0.65 5595 -5597 4 -9.29 336.5 -15.96 0.65 5596 -5598 4 -10.29 338.34 -15.49 0.65 5597 -5599 4 -10.35 339.15 -14.96 0.65 5598 -5600 4 -10.87 340.4 -14.69 0.65 5599 -5601 4 -12.29 342.24 -14.46 0.65 5600 -5602 4 -13.48 343.64 -14.04 0.65 5601 -5603 4 -14.39 344.2 -13.63 0.65 5602 -5604 4 -14.69 345.19 -12.93 0.65 5603 -5605 4 -15.23 346.86 -12.55 0.65 5604 -5606 4 -15.13 348.58 -12.28 0.65 5605 -5607 4 -15.69 350.22 -11.69 0.65 5606 -5608 4 -16.9 352.03 -11.07 0.65 5607 -5609 4 -17.39 352.56 -10.13 0.65 5608 -5610 4 -18.55 353.54 -9.82 0.65 5609 -5611 4 -19.71 354.75 -9.65 0.65 5610 -5612 4 -19.78 355.32 -8.84 0.65 5611 -5613 4 -20.29 356.3 -8.07 0.65 5612 -5614 4 -20.38 357.3 -7.29 0.65 5613 -5615 4 -20.9 358.51 -6.8 0.65 5614 -5616 4 -21.63 359.5 -6.34 0.65 5615 -5617 4 -22.57 360.46 -5.66 0.65 5616 -5618 4 -23.53 361.65 -5.11 0.65 5617 -5619 4 -24.03 362.65 -4.64 0.65 5618 -5620 4 -24.1 363.46 -4.03 0.65 5619 -5621 4 -24.87 365.08 -3.36 0.65 5620 -5622 4 -25.42 366.51 -2.84 0.65 5621 -5623 4 -26.14 366.97 -1.38 0.65 5622 -5624 4 -26.65 368.24 -1.26 0.65 5623 -5625 4 -27.14 368.73 -0.09 0.65 5624 -5626 4 -27.24 369.72 0.76 0.65 5625 -5627 4 -27.36 371.37 1.67 0.65 5626 -5628 4 -27.45 372.63 1.95 0.65 5627 -5629 4 -28.21 373.99 3.06 0.65 5628 -5630 4 -28.73 375.25 3.18 0.65 5629 -5631 4 -30.1 375.97 3.74 0.65 5630 -5632 4 -31.5 376.83 5.16 0.65 5631 -5633 4 -32.39 377.2 5.25 0.65 5632 -5634 4 -33.59 379.06 5.42 0.65 5633 -5635 4 -33.05 380.82 5.61 0.65 5634 -5636 4 -32.69 381.85 5.8 0.54 5635 -5637 4 -32.09 382.23 6.69 0.54 5636 -5638 4 -31.98 383.44 7.71 0.54 5637 -5639 4 -31.83 384.22 8.55 0.54 5638 -5640 4 -32.82 385.83 9.29 0.54 5639 -5641 4 -33.32 386.84 9.69 0.54 5640 -5642 4 -33.43 388.04 10.64 0.54 5641 -5643 4 -33.51 389.07 11.2 0.54 5642 -5644 4 -33.84 390.75 11.44 0.54 5643 -5645 4 -33.91 391.81 11.7 0.54 5644 -5646 4 -33.78 392.52 13.36 0.54 5645 -5647 4 -34.06 393.33 13.81 0.54 5646 -5648 4 -35.05 394.9 14.85 0.54 5647 -5649 4 -35.81 396.05 15.86 0.54 5648 -5650 4 -36.56 397.22 16.72 0.54 5649 -5651 4 -37.24 397.82 16.83 0.54 5650 -5652 4 -37.95 398.37 17.33 0.54 5651 -5653 4 -38.22 399.17 17.79 0.54 5652 -5654 4 -38.72 399.95 18.46 0.54 5653 -5655 4 -38.78 400.55 18.82 0.54 5654 -5656 4 -38.89 401.98 19.79 0.54 5655 -5657 4 -39.18 402.49 20.89 0.54 5656 -5658 4 -39.72 403.64 22.21 0.54 5657 -5659 4 -40.72 404.91 23.97 0.54 5658 -5660 4 -41.89 406.33 24.24 0.54 5659 -5661 4 -42.64 407.24 25.45 0.54 5660 -5662 4 -43.11 407.62 25.7 0.54 5661 -5663 4 -43.59 407.96 26.33 0.54 5662 -5664 4 -44.26 408.32 26.72 0.54 5663 -5665 4 -44.95 408.67 27.05 0.54 5664 -5666 4 -45.66 409.44 27.63 0.54 5665 -5667 4 -46.57 409.76 28.18 0.54 5666 -5668 4 -47.26 410.12 28.42 0.54 5667 -5669 4 -47.94 410.72 28.55 0.54 5668 -5670 4 -49.04 410.85 28.68 0.54 5669 -5671 4 23.1 261.64 -35.75 1.735 5535 -5672 4 23.43 262.39 -37.18 1.735 5671 -5673 4 23.38 263.57 -38.11 1.735 5672 -5674 4 23.64 264.48 -38.01 1.735 5673 -5675 4 24.05 264.17 -36.74 0.65 5674 -5676 4 24.7 263.88 -35.71 0.65 5675 -5677 4 25.3 264.57 -35.7 0.65 5676 -5678 4 25.72 264.48 -34.57 0.65 5677 -5679 4 26.13 264.46 -34.03 0.65 5678 -5680 4 27.13 265.27 -32.95 0.65 5679 -5681 4 27.31 265.69 -32.6 0.65 5680 -5682 4 27.73 265.65 -31.99 0.65 5681 -5683 4 27.91 266.03 -31.34 0.65 5682 -5684 4 27.89 265.96 -30.68 0.65 5683 -5685 4 28.3 265.91 -29.99 0.65 5684 -5686 4 28.26 266.28 -29.28 0.65 5685 -5687 4 29.29 267.16 -28.78 0.65 5686 -5688 4 29.68 267.55 -28.06 0.65 5687 -5689 4 30.02 268.82 -27.61 0.65 5688 -5690 4 30.38 269.67 -27.07 0.65 5689 -5691 4 30.75 270.52 -26.67 0.65 5690 -5692 4 31.13 271.14 -26.14 0.65 5691 -5693 4 31.52 271.78 -25.76 0.65 5692 -5694 4 31.7 272.2 -25.42 0.65 5693 -5695 4 32.28 273.05 -24.93 0.65 5694 -5696 4 33.06 274.35 -24.33 0.65 5695 -5697 4 33.64 275.21 -23.93 0.65 5696 -5698 4 34.17 276.94 -23.51 0.65 5697 -5699 4 34.76 278.02 -23.23 0.65 5698 -5700 4 35.08 279.53 -22.85 0.65 5699 -5701 4 36.24 281.75 -22.51 0.65 5700 -5702 4 37.42 283.54 -22.3 0.65 5701 -5703 4 39.89 285.62 -21.95 0.65 5702 -5704 4 41.54 287.02 -21.77 0.65 5703 -5705 4 42.13 287.9 -21.58 0.65 5704 -5706 4 42.53 288.57 -21.43 0.65 5705 -5707 4 44.27 291.68 -20.99 0.65 5706 -5708 4 45.89 293.48 -20.7 0.65 5707 -5709 4 46.89 295.09 -21.03 0.65 5708 -5710 4 47.87 296.67 -20.84 0.65 5709 -5711 4 48.65 297.67 -19.59 0.65 5710 -5712 4 49.63 298.65 -17.88 0.65 5711 -5713 4 50.8 300.66 -17.64 0.65 5712 -5714 4 52.16 302.88 -17.31 0.65 5713 -5715 4 53.49 305.69 -16.31 0.65 5714 -5716 4 55.72 307.97 -15.95 0.65 5715 -5717 4 56.91 309.76 -15.73 0.65 5716 -5718 4 58.53 311.8 -15.48 0.65 5717 -5719 4 60.98 314.1 -15.19 0.65 5718 -5720 4 61.76 314.65 -13.68 0.65 5719 -5721 4 62.58 315.56 -13.57 0.65 5720 -5722 4 64.04 316.51 -13.44 0.65 5721 -5723 4 64.8 317.81 -12.9 0.65 5722 -5724 4 65.38 318.91 -12.71 0.65 5723 -5725 4 66.61 320.06 -12.56 0.65 5724 -5726 4 68.26 321.45 -12.37 0.65 5725 -5727 4 69.25 323.01 -12.19 0.65 5726 -5728 4 70.18 325.22 -11.94 0.65 5727 -5729 4 71.18 326.58 -11.77 0.65 5728 -5730 4 72.81 328.39 -11.47 0.65 5729 -5731 4 74.19 330.4 -11.08 0.65 5730 -5732 4 75.33 332.55 -10.22 0.65 5731 -5733 4 75.43 334.5 -10.02 0.65 5732 -5734 4 76.29 337.72 -9.21 0.65 5733 -5735 4 76.35 340.09 -8.9 0.65 5734 -5736 4 77.43 343.6 -8.51 0.65 5735 -5737 4 78.93 346.81 -7.08 0.65 5736 -5738 4 79.42 349.21 -6.82 0.65 5737 -5739 4 79.93 351.59 -6.49 0.65 5738 -5740 4 80.73 352.51 -6.37 0.65 5739 -5741 4 81.71 354.07 -6.19 0.65 5740 -5742 4 82.85 356.72 -5.89 0.65 5741 -5743 4 83.26 360.41 -5.49 0.65 5742 -5744 4 84.34 363.91 -5.11 0.65 5743 -5745 4 85.32 365.95 -5.4 0.65 5744 -5746 4 86.98 367.17 -5.54 0.65 5745 -5747 4 87.81 368.14 -6.09 0.65 5746 -5748 4 87.98 369.09 -6.75 0.65 5747 -5749 4 88.17 369.78 -7.12 0.65 5748 -5750 4 89.0 371.3 -8.61 0.65 5749 -5751 4 23.56 265.03 -39.61 1.735 5674 -5752 4 23.87 267.3 -40.43 1.41 5751 -5753 4 24.22 269.42 -41.78 1.19 5752 -5754 4 24.58 271.04 -42.51 1.19 5753 -5755 4 24.74 272.44 -43.26 1.19 5754 -5756 4 24.99 273.38 -43.16 1.19 5755 -5757 4 25.4 273.84 -43.1 1.19 5756 -5758 4 25.55 274.68 -42.78 0.54 5757 -5759 4 25.53 275.13 -42.89 0.54 5758 -5760 4 25.71 274.98 -41.32 0.54 5759 -5761 4 26.32 275.7 -41.68 0.54 5760 -5762 4 26.52 276.14 -41.63 0.54 5761 -5763 4 26.9 276.82 -41.62 0.54 5762 -5764 4 27.05 277.63 -40.93 0.54 5763 -5765 4 27.01 277.98 -40.15 0.54 5764 -5766 4 27.2 278.18 -39.83 0.54 5765 -5767 4 27.37 278.52 -38.88 0.54 5766 -5768 4 27.56 278.94 -38.45 0.54 5767 -5769 4 27.7 279.75 -37.84 0.54 5768 -5770 4 27.85 280.55 -37.15 0.54 5769 -5771 4 27.78 281.61 -36.89 0.76 5770 -5772 4 27.9 282.61 -35.95 0.65 5771 -5773 4 27.85 282.92 -34.72 0.65 5772 -5774 4 27.84 282.88 -34.35 0.65 5773 -5775 4 27.79 283.23 -33.56 0.65 5774 -5776 4 27.72 284.02 -32.72 0.65 5775 -5777 4 27.36 286.11 -32.21 0.76 5776 -5778 4 27.25 287.29 -31.12 0.76 5777 -5779 4 26.75 288.28 -30.43 0.76 5778 -5780 4 26.66 289.31 -29.94 0.76 5779 -5781 4 26.8 290.36 -29.45 0.76 5780 -5782 4 26.9 292.02 -28.68 0.76 5781 -5783 4 26.78 293.72 -28.35 0.76 5782 -5784 4 27.11 295.46 -28.16 0.76 5783 -5785 4 27.46 296.51 -27.6 0.76 5784 -5786 4 28.64 298.26 -26.93 0.76 5785 -5787 4 29.17 299.99 -26.44 0.76 5786 -5788 4 29.29 301.25 -26.09 0.76 5787 -5789 4 29.59 303.41 -25.62 0.76 5788 -5790 4 28.98 305.94 -25.31 0.76 5789 -5791 4 28.41 308.06 -25.1 0.76 5790 -5792 4 28.7 310.21 -24.79 0.76 5791 -5793 4 29.24 312.18 -24.5 0.76 5792 -5794 4 30.0 313.67 -24.25 0.65 5793 -5795 4 31.77 316.57 -23.91 0.65 5794 -5796 4 32.93 318.79 -23.65 0.65 5795 -5797 4 34.26 321.67 -23.32 0.65 5796 -5798 4 35.05 323.0 -23.17 0.65 5797 -5799 4 35.16 324.73 -22.98 0.65 5798 -5800 4 34.62 326.2 -22.85 0.65 5799 -5801 4 33.58 328.93 -22.52 0.65 5800 -5802 4 32.2 333.37 -22.09 0.65 5801 -5803 4 31.87 335.49 -21.88 0.65 5802 -5804 4 31.97 337.0 -21.72 0.65 5803 -5805 4 32.06 339.16 -21.49 0.65 5804 -5806 4 32.39 340.69 -21.33 0.65 5805 -5807 4 32.46 343.06 -21.08 0.65 5806 -5808 4 32.28 345.84 -20.8 0.65 5807 -5809 4 31.76 347.32 -20.66 0.65 5808 -5810 4 31.24 348.57 -20.54 0.65 5809 -5811 4 31.18 349.43 -20.45 0.65 5810 -5812 4 30.84 351.02 -19.24 0.54 5811 -5813 4 31.16 352.76 -19.05 0.54 5812 -5814 4 31.91 354.53 -18.85 0.54 5813 -5815 4 32.28 355.64 -18.8 0.54 5814 -5816 4 32.42 356.93 -18.66 0.54 5815 -5817 4 32.34 358.0 -18.55 0.54 5816 -5818 4 32.29 358.86 -18.47 0.54 5817 -5819 4 31.76 360.33 -18.33 0.54 5818 -5820 4 32.45 362.96 -18.04 0.54 5819 -5821 4 33.01 364.49 -17.87 0.54 5820 -5822 4 33.75 366.49 -17.64 0.54 5821 -5823 4 34.9 368.91 -17.36 0.54 5822 -5824 4 35.9 370.26 -17.2 0.54 5823 -5825 4 36.27 371.15 -17.1 0.54 5824 -5826 4 36.23 371.79 -17.03 0.54 5825 -5827 4 36.28 374.37 -16.77 0.54 5826 -5828 4 35.69 376.91 -16.52 0.54 5827 -5829 4 36.2 379.1 -16.28 0.54 5828 -5830 4 37.1 381.95 -15.96 0.54 5829 -5831 4 38.04 384.15 -15.71 0.54 5830 -5832 4 38.75 386.26 -14.57 0.54 5831 -5833 4 39.93 388.27 -14.34 0.54 5832 -5834 4 40.65 390.46 -14.02 0.435 5833 -5835 4 41.41 391.98 -13.62 0.435 5834 -5836 4 41.94 393.7 -13.05 0.435 5835 -5837 4 41.83 395.15 -12.45 0.435 5836 -5838 4 42.49 398.41 -12.02 0.435 5837 -5839 4 43.63 400.84 -11.67 0.435 5838 -5840 4 44.36 403.24 -11.4 0.435 5839 -5841 4 44.69 404.78 -11.24 0.435 5840 -5842 4 44.98 406.94 -11.01 0.435 5841 -5843 4 44.87 408.65 -10.75 0.435 5842 -5844 4 45.18 410.61 -10.54 0.435 5843 -5845 4 45.88 413.23 -10.26 0.435 5844 -5846 4 47.67 415.71 -9.96 0.435 5845 -5847 4 48.69 416.84 -9.82 0.435 5846 -5848 4 48.63 417.91 -9.71 0.435 5847 -5849 4 48.71 419.63 -9.38 0.435 5848 -5850 4 49.03 421.58 -9.1 0.435 5849 -5851 4 50.44 423.16 -8.82 0.435 5850 -5852 4 53.74 425.93 -8.45 0.435 5851 -5853 4 54.83 429.24 -8.09 0.435 5852 -5854 4 55.38 430.77 -7.91 0.435 5853 -5855 4 55.72 432.04 -7.33 0.435 5854 -5856 4 55.86 433.08 -6.77 0.435 5855 -5857 4 55.78 434.11 -6.28 0.435 5856 -5858 4 55.09 435.55 -7.96 0.435 5857 -5859 4 54.63 436.16 -7.98 0.435 5858 -5860 4 53.7 437.53 -9.21 0.435 5859 -5861 4 53.28 437.76 -9.65 0.435 5860 -5862 4 52.38 438.71 -10.86 0.435 5861 -5863 4 51.26 440.11 -12.55 0.435 5862 -5864 4 50.59 441.31 -14.18 0.435 5863 -5865 4 49.21 443.34 -15.73 0.435 5864 -5866 4 47.62 444.86 -16.67 0.435 5865 -5867 4 47.54 445.89 -16.26 0.435 5866 -5868 4 46.84 446.99 -16.69 0.435 5867 -5869 4 46.54 448.01 -16.29 0.435 5868 -5870 4 46.73 448.43 -16.1 0.435 5869 -5871 4 46.72 449.17 -16.84 0.435 5870 -5872 4 46.45 450.35 -17.94 0.435 5871 -5873 4 46.4 451.22 -18.07 0.435 5872 -5874 4 45.74 451.94 -19.14 0.435 5873 -5875 4 45.25 453.3 -19.99 0.435 5874 -5876 4 45.25 453.85 -20.99 0.435 5875 -5877 4 43.92 454.97 -22.26 0.435 5876 -5878 4 44.24 456.76 -22.52 0.435 5877 -5879 4 42.85 458.73 -23.56 0.435 5878 -5880 4 42.56 460.57 -24.65 0.435 5879 -5881 4 42.88 462.31 -24.54 0.435 5880 -5882 4 43.59 465.49 -25.33 0.435 5881 -5883 4 44.93 468.16 -25.1 0.435 5882 -5884 4 45.62 470.99 -24.79 0.435 5883 -5885 4 46.91 474.68 -24.53 0.435 5884 -5886 4 47.97 478.4 -24.12 0.435 5885 -5887 4 50.13 481.98 -23.7 0.435 5886 -5888 4 52.83 487.3 -23.08 0.435 5887 -5889 4 55.67 490.27 -22.71 0.435 5888 -5890 4 57.08 491.86 -22.51 0.435 5889 -5891 4 59.46 495.96 -22.85 0.435 5890 -5892 4 61.33 497.44 -23.26 0.435 5891 -5893 4 62.37 498.44 -24.04 0.435 5892 -5894 4 64.34 501.8 -23.79 0.435 5893 -5895 4 65.3 502.99 -21.99 0.435 5894 -5896 4 65.63 504.45 -21.31 0.435 5895 -5897 4 66.65 505.4 -21.25 0.435 5896 -5898 4 67.2 506.94 -21.16 0.435 5897 -5899 4 67.75 508.48 -20.99 0.435 5898 -5900 4 68.32 509.8 -20.84 0.435 5899 -5901 4 68.65 511.06 -20.1 0.435 5900 -5902 4 68.8 512.08 -19.54 0.435 5901 -5903 4 68.76 512.5 -19.26 0.435 5902 -5904 4 68.74 513.22 -20.02 0.435 5903 -5905 4 68.72 513.99 -21.14 0.435 5904 -5906 4 68.29 514.99 -22.86 0.435 5905 -5907 4 68.3 515.31 -23.81 0.435 5906 -5908 4 68.27 516.04 -24.49 0.435 5907 -5909 4 68.2 517.37 -24.81 0.435 5908 -5910 4 68.14 518.5 -25.21 0.435 5909 -5911 4 67.33 521.04 -25.12 0.435 5910 -5912 4 67.04 522.62 -25.87 0.435 5911 -5913 4 67.62 524.04 -26.61 0.435 5912 -5914 4 68.19 525.07 -25.66 0.435 5913 -5915 4 68.57 526.53 -26.94 0.435 5914 -5916 4 68.76 527.5 -27.89 0.435 5915 -5917 4 69.37 528.5 -28.75 0.435 5916 -5918 4 69.77 529.73 -29.9 0.435 5917 -5919 4 70.22 530.08 -30.97 0.435 5918 -5920 4 70.75 532.12 -31.5 0.435 5919 -5921 4 70.64 534.61 -32.38 0.435 5920 -5922 4 71.39 536.69 -33.2 0.435 5921 -5923 4 71.73 538.48 -33.46 0.435 5922 -5924 4 72.67 541.21 -34.06 0.435 5923 -5925 4 72.8 542.77 -34.35 0.435 5924 -5926 4 71.81 545.17 -35.18 0.435 5925 -5927 4 71.71 546.68 -35.09 0.435 5926 -5928 4 71.83 548.68 -35.42 0.435 5927 -5929 4 71.94 550.45 -35.68 0.435 5928 -5930 4 64.14 504.21 -21.89 0.435 5895 -5931 4 64.08 505.07 -21.95 0.435 5930 -5932 4 63.6 505.68 -21.75 0.435 5931 -5933 4 64.15 506.63 -19.98 0.435 5932 -5934 4 64.05 507.57 -18.76 0.435 5933 -5935 4 63.68 509.33 -17.0 0.435 5934 -5936 4 62.73 510.02 -15.82 0.435 5935 -5937 4 62.51 509.99 -15.68 0.435 5936 -5938 4 61.42 509.6 -14.77 0.435 5937 -5939 4 60.34 509.57 -15.02 0.435 5938 -5940 4 59.91 509.53 -14.88 0.435 5939 -5941 4 29.75 351.27 -20.3 0.54 5811 -5942 4 29.28 352.11 -20.22 0.54 5941 -5943 4 29.22 352.68 -19.48 0.54 5942 -5944 4 29.16 352.99 -18.32 0.54 5943 -5945 4 29.09 353.79 -17.56 0.54 5944 -5946 4 29.4 355.21 -16.43 0.54 5945 -5947 4 29.58 355.84 -16.06 0.54 5946 -5948 4 29.47 357.04 -15.11 0.54 5947 -5949 4 29.84 357.87 -14.63 0.54 5948 -5950 4 29.76 358.9 -14.01 0.54 5949 -5951 4 29.71 359.26 -13.37 0.54 5950 -5952 4 28.75 360.4 -12.29 0.54 5951 -5953 4 28.7 360.99 -11.77 0.54 5952 -5954 4 27.98 361.47 -10.53 0.54 5953 -5955 4 27.5 361.81 -9.84 0.54 5954 -5956 4 27.02 362.11 -8.84 0.54 5955 -5957 4 26.49 363.26 -7.68 0.54 5956 -5958 4 26.2 364.02 -6.85 0.54 5957 -5959 4 26.12 364.52 -5.37 0.54 5958 -5960 4 26.28 365.11 -4.63 0.54 5959 -5961 4 26.2 365.58 -2.92 0.54 5960 -5962 4 25.47 366.54 -2.01 0.54 5961 -5963 4 25.61 367.34 -1.32 0.54 5962 -5964 4 25.52 368.34 -0.47 0.54 5963 -5965 4 25.47 368.92 0.18 0.54 5964 -5966 4 24.03 370.93 0.81 0.54 5965 -5967 4 23.55 371.52 1.16 0.54 5966 -5968 4 22.6 372.48 1.84 0.54 5967 -5969 4 21.68 373.0 2.48 0.54 5968 -5970 4 21.24 372.96 2.61 0.54 5969 -5971 4 19.84 374.27 3.24 0.54 5970 -5972 4 18.95 374.15 3.89 0.54 5971 -5973 4 18.7 374.48 4.67 0.54 5972 -5974 4 17.53 375.13 6.07 0.54 5973 -5975 4 17.49 375.25 7.06 0.54 5974 -5976 4 17.43 376.06 7.52 0.54 5975 -5977 4 17.62 376.23 8.22 0.54 5976 -5978 4 17.56 376.82 8.88 0.54 5977 -5979 4 17.51 377.66 8.97 0.54 5978 -5980 4 17.63 378.93 9.32 0.54 5979 -5981 4 17.78 380.0 9.67 0.54 5980 -5982 4 17.1 380.35 9.99 0.54 5981 -5983 4 16.64 380.75 10.17 0.54 5982 -5984 4 15.92 381.27 10.96 0.54 5983 -5985 4 15.23 381.86 11.23 0.54 5984 -5986 4 14.3 382.63 11.51 0.54 5985 -5987 4 13.98 384.06 12.11 0.54 5986 -5988 4 12.77 385.63 13.15 0.54 5987 -5989 4 12.73 385.99 13.79 0.54 5988 -5990 4 12.2 387.19 14.5 0.54 5989 -5991 4 11.27 387.95 15.0 0.54 5990 -5992 4 11.22 388.55 15.59 0.54 5991 -5993 4 10.51 389.08 16.24 0.54 5992 -5994 4 10.01 389.86 16.83 0.54 5993 -5995 4 9.52 390.67 17.05 0.54 5994 -5996 4 9.04 391.25 17.48 0.54 5995 -5997 4 8.57 391.6 17.96 0.54 5996 -5998 4 7.88 391.95 18.43 0.54 5997 -5999 4 7.39 392.76 18.65 0.54 5998 -6000 4 6.87 393.74 19.42 0.54 5999 -6001 4 6.34 394.9 20.58 0.54 6000 -6002 4 6.27 395.69 21.26 0.54 6001 -6003 4 6.43 396.3 21.78 0.54 6002 -6004 4 6.57 397.58 22.07 0.54 6003 -6005 4 6.48 398.57 22.93 0.54 6004 -6006 4 6.43 399.2 23.21 0.54 6005 -6007 4 5.04 400.33 23.98 0.54 6006 -6008 4 3.43 401.74 24.09 0.54 6007 -6009 4 3.35 402.8 24.19 0.54 6008 -6010 4 2.87 403.36 24.84 0.54 6009 -6011 4 3.0 404.6 25.58 0.54 6010 -6012 4 3.15 405.46 25.74 0.54 6011 -6013 4 3.08 406.27 26.28 0.54 6012 -6014 4 2.59 407.07 26.73 0.54 6013 -6015 4 2.05 408.49 27.39 0.54 6014 -6016 4 1.98 409.29 27.92 0.54 6015 -6017 4 1.93 409.89 28.5 0.54 6016 -6018 4 2.91 410.88 29.99 0.54 6017 -6019 4 3.43 412.3 31.43 0.54 6018 -6020 4 3.58 413.37 31.7 0.54 6019 -6021 4 3.68 414.82 32.37 0.54 6020 -6022 4 2.95 415.81 32.91 0.54 6021 -6023 4 1.76 417.17 33.71 0.54 6022 -6024 4 1.25 418.16 34.32 0.54 6023 -6025 4 0.73 419.13 35.08 0.54 6024 -6026 4 0.64 420.39 35.51 0.54 6025 -6027 4 0.55 421.35 36.67 0.54 6026 -6028 4 0.08 421.72 37.08 0.54 6027 -6029 4 0.2 422.94 37.88 0.54 6028 -6030 4 0.98 424.27 38.19 0.54 6029 -6031 4 1.17 424.16 39.38 0.54 6030 -6032 4 1.72 425.18 40.41 0.54 6031 -6033 4 2.03 426.31 42.26 0.54 6032 -6034 4 2.55 427.98 43.35 0.54 6033 -6035 4 2.95 428.35 44.08 0.54 6034 -6036 4 3.28 429.66 44.38 0.54 6035 -6037 4 3.67 430.28 44.82 0.54 6036 -6038 4 4.72 430.74 45.28 0.54 6037 -6039 4 5.06 431.83 46.0 0.54 6038 -6040 4 5.04 431.74 46.89 0.54 6039 -6041 4 5.43 431.63 48.17 0.54 6040 -6042 4 5.59 432.47 48.64 0.54 6041 -6043 4 5.98 432.84 49.37 0.54 6042 -6044 4 6.11 433.6 50.73 0.54 6043 -6045 4 6.7 434.17 51.85 0.54 6044 -6046 4 25.07 273.97 -43.1 1.19 5757 -6047 4 25.06 274.47 -43.87 1.19 6046 -6048 4 24.98 275.75 -43.74 1.19 6047 -6049 4 24.47 277.02 -43.62 1.19 6048 -6050 4 24.18 278.89 -45.02 1.19 6049 -6051 4 23.72 279.38 -44.98 1.19 6050 -6052 4 23.54 279.55 -46.77 0.54 6051 -6053 4 22.14 280.97 -46.66 0.54 6052 -6054 4 21.71 280.93 -46.52 0.76 6053 -6055 4 20.77 282.16 -46.41 0.76 6054 -6056 4 21.32 283.49 -46.26 0.76 6055 -6057 4 21.69 284.59 -46.22 0.76 6056 -6058 4 22.05 285.9 -46.08 0.76 6057 -6059 4 21.67 287.7 -44.69 0.435 6058 -6060 4 20.96 288.73 -44.6 0.435 6059 -6061 4 20.88 289.49 -43.62 0.435 6060 -6062 4 19.97 290.04 -43.13 0.435 6061 -6063 4 20.11 291.12 -42.95 0.435 6062 -6064 4 20.25 292.16 -42.61 0.435 6063 -6065 4 20.15 293.62 -42.01 0.435 6064 -6066 4 20.09 294.45 -41.55 0.435 6065 -6067 4 19.1 296.31 -41.3 0.435 6066 -6068 4 18.6 297.08 -40.63 0.435 6067 -6069 4 18.08 298.1 -40.23 0.435 6068 -6070 4 17.71 300.38 -39.4 0.435 6069 -6071 4 17.6 301.85 -39.03 0.435 6070 -6072 4 17.04 303.73 -38.55 0.435 6071 -6073 4 16.52 304.94 -38.06 0.435 6072 -6074 4 16.0 305.92 -37.37 0.435 6073 -6075 4 15.94 306.77 -37.05 0.435 6074 -6076 4 16.04 307.95 -35.87 0.435 6075 -6077 4 16.18 309.25 -35.74 0.435 6076 -6078 4 16.07 310.96 -35.49 0.435 6077 -6079 4 15.99 312.25 -35.36 0.435 6078 -6080 4 15.08 312.83 -35.32 0.435 6079 -6081 4 14.15 313.82 -34.94 0.435 6080 -6082 4 13.44 314.33 -34.07 0.435 6081 -6083 4 12.93 315.37 -33.82 0.435 6082 -6084 4 12.82 316.81 -33.07 0.435 6083 -6085 4 12.97 317.64 -32.68 0.435 6084 -6086 4 12.9 318.66 -32.05 0.435 6085 -6087 4 12.36 320.08 -31.47 0.435 6086 -6088 4 12.3 320.94 -31.3 0.435 6087 -6089 4 12.88 322.03 -30.95 0.435 6088 -6090 4 13.02 323.1 -30.76 0.435 6089 -6091 4 13.18 323.98 -30.66 0.435 6090 -6092 4 13.34 324.8 -30.13 0.435 6091 -6093 4 13.27 325.61 -29.67 0.435 6092 -6094 4 12.95 327.09 -29.45 0.435 6093 -6095 4 12.63 328.3 -28.73 0.435 6094 -6096 4 12.55 329.29 -27.79 0.435 6095 -6097 4 12.93 330.14 -27.33 0.435 6096 -6098 4 13.03 331.6 -26.72 0.435 6097 -6099 4 12.97 332.43 -26.4 0.435 6098 -6100 4 12.94 332.86 -26.21 0.435 6099 -6101 4 13.08 333.88 -25.65 0.435 6100 -6102 4 13.23 334.95 -25.38 0.435 6101 -6103 4 13.22 334.92 -25.08 0.435 6102 -6104 4 13.18 335.3 -24.52 0.435 6103 -6105 4 13.11 336.11 -23.99 0.435 6104 -6106 4 13.49 336.45 -22.82 0.435 6105 -6107 4 13.67 336.84 -22.32 0.435 6106 -6108 4 13.81 337.65 -21.55 0.435 6107 -6109 4 13.96 338.45 -20.79 0.435 6108 -6110 4 14.12 339.31 -20.62 0.435 6109 -6111 4 13.15 340.74 -20.34 0.435 6110 -6112 4 13.31 341.59 -19.95 0.435 6111 -6113 4 12.79 342.32 -18.98 0.435 6112 -6114 4 12.08 343.34 -18.74 0.435 6113 -6115 4 12.02 343.94 -18.38 0.435 6114 -6116 4 12.4 344.81 -18.06 0.435 6115 -6117 4 12.53 346.1 -17.84 0.435 6116 -6118 4 12.49 346.49 -17.43 0.435 6117 -6119 4 12.68 346.93 -17.3 0.435 6118 -6120 4 23.88 280.73 -46.27 1.19 6051 -6121 4 23.8 282.02 -46.14 1.19 6120 -6122 4 24.18 283.73 -47.76 1.19 6121 -6123 4 23.93 284.24 -47.71 1.19 6122 -6124 4 24.54 285.07 -47.92 1.19 6123 -6125 4 24.75 285.61 -48.91 1.19 6124 -6126 4 24.73 286.62 -50.23 1.19 6125 -6127 4 24.24 288.08 -51.45 0.76 6126 -6128 4 23.77 289.26 -52.62 0.975 6127 -6129 4 22.84 291.08 -54.11 0.975 6128 -6130 4 22.32 292.88 -54.92 0.975 6129 -6131 4 22.28 294.06 -56.0 0.975 6130 -6132 4 22.27 294.85 -57.27 0.975 6131 -6133 4 22.43 295.98 -57.61 0.975 6132 -6134 4 23.01 297.66 -58.78 0.975 6133 -6135 4 23.58 299.53 -59.78 0.975 6134 -6136 4 24.17 300.95 -60.52 0.975 6135 -6137 4 24.3 302.04 -60.4 0.975 6136 -6138 4 24.05 303.4 -61.24 0.975 6137 -6139 4 23.55 304.79 -62.25 0.975 6138 -6140 4 23.07 306.17 -63.39 0.975 6139 -6141 4 22.15 307.54 -64.56 0.975 6140 -6142 4 21.22 309.11 -65.62 0.975 6141 -6143 4 20.31 310.26 -66.81 0.975 6142 -6144 4 19.35 312.0 -67.48 0.975 6143 -6145 4 18.4 313.99 -68.43 0.975 6144 -6146 4 18.14 315.18 -69.59 0.975 6145 -6147 4 17.65 316.26 -69.79 0.865 6146 -6148 4 17.4 317.49 -71.33 0.865 6147 -6149 4 17.34 318.61 -71.67 0.865 6148 -6150 4 17.65 320.56 -71.53 0.865 6149 -6151 4 18.23 322.23 -72.63 0.865 6150 -6152 4 18.59 323.55 -72.48 0.865 6151 -6153 4 19.17 324.66 -72.35 0.865 6152 -6154 4 19.57 325.67 -73.52 0.865 6153 -6155 4 19.49 326.96 -73.39 0.865 6154 -6156 4 19.0 328.54 -74.36 0.865 6155 -6157 4 18.04 329.78 -74.25 0.865 6156 -6158 4 17.54 331.38 -75.31 0.865 6157 -6159 4 17.01 333.39 -76.25 0.865 6158 -6160 4 17.18 334.26 -76.15 0.865 6159 -6161 4 17.7 336.24 -76.01 0.865 6160 -6162 4 17.68 337.23 -77.26 0.865 6161 -6163 4 18.05 338.95 -78.89 0.865 6162 -6164 4 18.21 340.34 -79.64 0.865 6163 -6165 4 18.14 341.68 -80.03 0.865 6164 -6166 4 17.88 342.83 -80.82 0.865 6165 -6167 4 17.86 343.85 -82.31 0.865 6166 -6168 4 17.82 345.06 -83.54 0.865 6167 -6169 4 17.55 346.43 -84.3 0.865 6168 -6170 4 17.5 347.57 -85.02 0.865 6169 -6171 4 16.56 348.85 -85.28 0.865 6170 -6172 4 16.07 350.2 -86.06 0.865 6171 -6173 4 15.34 352.02 -87.24 0.865 6172 -6174 4 14.82 353.82 -88.2 0.865 6173 -6175 4 14.52 355.6 -88.92 0.865 6174 -6176 4 14.69 356.56 -89.5 0.865 6175 -6177 4 14.85 358.18 -90.46 0.865 6176 -6178 4 15.41 358.73 -90.84 1.085 6177 -6179 4 16.01 359.36 -90.24 1.085 6178 -6180 4 16.63 360.66 -91.82 1.085 6179 -6181 4 17.24 361.91 -93.1 1.085 6180 -6182 4 17.68 362.51 -94.47 1.085 6181 -6183 4 18.09 363.26 -95.21 1.085 6182 -6184 4 18.3 363.8 -96.05 1.085 6183 -6185 4 18.57 363.98 -96.71 0.975 6184 -6186 4 18.89 364.43 -97.11 1.085 6185 -6187 4 20.61 365.32 -98.4 0.865 6186 -6188 4 21.66 366.12 -99.2 0.76 6187 -6189 4 22.49 367.37 -100.18 0.76 6188 -6190 4 23.14 367.67 -100.58 0.65 6189 -6191 4 23.59 367.52 -100.97 0.65 6190 -6192 4 24.48 367.15 -100.99 0.65 6191 -6193 4 25.35 367.2 -100.96 0.65 6192 -6194 4 26.06 366.9 -102.03 0.65 6193 -6195 4 27.52 367.65 -101.92 0.65 6194 -6196 4 28.62 368.09 -103.43 0.65 6195 -6197 4 29.49 368.42 -104.05 0.65 6196 -6198 4 31.18 369.75 -105.38 0.65 6197 -6199 4 32.48 370.4 -106.64 0.65 6198 -6200 4 34.19 370.94 -106.54 0.65 6199 -6201 4 36.2 370.49 -107.29 0.65 6200 -6202 4 37.67 371.01 -107.2 0.65 6201 -6203 4 39.8 372.33 -108.14 0.65 6202 -6204 4 42.52 374.0 -107.91 0.65 6203 -6205 4 44.19 375.52 -109.07 0.65 6204 -6206 4 47.21 376.51 -110.4 0.65 6205 -6207 4 49.54 377.51 -110.24 0.65 6206 -6208 4 51.91 378.44 -111.53 0.65 6207 -6209 4 53.85 379.36 -112.89 0.65 6208 -6210 4 55.73 380.56 -112.72 0.65 6209 -6211 4 56.29 381.92 -113.02 0.65 6210 -6212 4 56.51 382.16 -113.07 0.65 6211 -6213 4 56.69 382.91 -113.89 0.65 6212 -6214 4 56.91 383.44 -114.73 0.65 6213 -6215 4 57.12 384.21 -115.71 0.65 6214 -6216 4 57.12 384.8 -117.15 0.65 6215 -6217 4 57.14 384.88 -117.97 0.65 6216 -6218 4 57.14 385.14 -118.55 0.65 6217 -6219 4 57.13 385.64 -119.17 0.65 6218 -6220 4 57.31 386.34 -119.47 0.65 6219 -6221 4 57.29 387.11 -120.6 0.65 6220 -6222 4 57.48 387.85 -121.27 0.65 6221 -6223 4 57.7 388.4 -122.34 0.65 6222 -6224 4 58.07 389.78 -122.86 0.65 6223 -6225 4 58.52 389.9 -123.82 0.65 6224 -6226 4 58.95 390.42 -124.36 0.65 6225 -6227 4 59.54 391.6 -124.98 0.65 6226 -6228 4 59.93 392.56 -125.48 0.65 6227 -6229 4 60.59 392.63 -125.75 0.65 6228 -6230 4 61.26 392.78 -126.78 0.65 6229 -6231 4 61.71 392.87 -127.43 0.65 6230 -6232 4 62.38 393.01 -128.31 0.65 6231 -6233 4 62.8 393.51 -128.7 0.65 6232 -6234 4 62.99 394.27 -129.67 0.65 6233 -6235 4 63.18 395.23 -130.47 0.65 6234 -6236 4 62.7 396.08 -130.62 0.65 6235 -6237 4 62.67 396.82 -131.45 0.65 6236 -6238 4 62.85 397.77 -132.18 0.65 6237 -6239 4 63.43 399.16 -132.61 0.65 6238 -6240 4 63.42 399.66 -133.25 0.65 6239 -6241 4 64.45 400.85 -133.62 0.65 6240 -6242 4 64.87 401.65 -134.82 0.65 6241 -6243 4 65.71 402.42 -135.47 0.65 6242 -6244 4 66.81 403.1 -137.18 0.65 6243 -6245 4 67.66 403.67 -137.93 0.65 6244 -6246 4 68.96 404.04 -138.61 0.65 6245 -6247 4 69.74 405.63 -138.88 0.65 6246 -6248 4 70.81 406.19 -139.4 0.65 6247 -6249 4 71.86 407.23 -140.4 0.65 6248 -6250 4 72.65 408.33 -139.96 0.65 6249 -6251 4 73.03 409.19 -139.71 0.65 6250 -6252 4 73.64 409.66 -139.65 0.65 6251 -6253 4 17.2 365.25 -97.28 0.865 6185 -6254 4 16.5 366.08 -97.29 0.865 6253 -6255 4 16.03 366.97 -97.82 0.865 6254 -6256 4 15.58 367.94 -99.07 0.865 6255 -6257 4 15.3 369.59 -100.57 0.865 6256 -6258 4 14.84 370.27 -101.04 0.865 6257 -6259 4 14.38 371.26 -102.53 0.865 6258 -6260 4 14.78 372.76 -104.18 0.865 6259 -6261 4 15.14 373.55 -103.25 0.865 6260 -6262 4 15.73 374.75 -103.87 0.65 6261 -6263 4 15.25 375.54 -103.57 0.65 6262 -6264 4 15.25 375.85 -104.37 0.65 6263 -6265 4 15.25 376.1 -104.72 0.65 6264 -6266 4 15.02 376.57 -105.2 0.65 6265 -6267 4 15.2 377.28 -105.66 0.65 6266 -6268 4 14.76 377.77 -106.44 0.65 6267 -6269 4 14.76 378.6 -108.17 0.65 6268 -6270 4 14.75 379.09 -108.79 0.65 6269 -6271 4 14.74 379.58 -109.27 0.65 6270 -6272 4 14.73 379.83 -109.62 0.65 6271 -6273 4 14.95 380.39 -110.76 0.65 6272 -6274 4 15.37 380.92 -111.45 0.65 6273 -6275 4 15.56 381.37 -111.48 0.65 6274 -6276 4 16.18 382.37 -112.27 0.65 6275 -6277 4 16.39 382.88 -112.97 0.65 6276 -6278 4 16.57 383.62 -113.71 0.65 6277 -6279 4 16.55 384.62 -114.96 0.65 6278 -6280 4 16.55 385.18 -116.18 0.65 6279 -6281 4 16.56 385.76 -117.63 0.65 6280 -6282 4 16.59 386.14 -119.17 0.65 6281 -6283 4 16.6 386.74 -120.77 0.65 6282 -6284 4 16.61 387.1 -122.09 0.65 6283 -6285 4 16.6 387.83 -122.92 0.65 6284 -6286 4 16.63 387.96 -124.26 0.65 6285 -6287 4 16.21 388.54 -125.94 0.65 6286 -6288 4 16.22 389.13 -127.47 0.65 6287 -6289 4 16.23 389.73 -129.05 0.65 6288 -6290 4 16.22 390.53 -130.48 0.65 6289 -6291 4 16.2 391.22 -130.94 0.65 6290 -6292 4 15.75 391.96 -132.0 0.65 6291 -6293 4 15.77 392.32 -133.32 0.65 6292 -6294 4 15.76 393.08 -134.45 0.65 6293 -6295 4 15.31 393.82 -135.66 0.65 6294 -6296 4 14.8 395.38 -136.35 0.65 6295 -6297 4 14.06 396.62 -136.16 0.65 6296 -6298 4 13.1 398.29 -136.09 0.65 6297 -6299 4 11.94 399.82 -136.86 0.65 6298 -6300 4 11.41 401.81 -137.57 0.65 6299 -6301 4 10.48 403.39 -138.64 0.65 6300 -6302 4 9.92 405.82 -139.45 0.65 6301 -6303 4 8.96 407.61 -140.49 0.65 6302 -6304 4 8.04 410.54 -140.44 0.65 6303 -6305 4 7.22 413.91 -141.99 0.54 6304 -6306 4 6.69 415.63 -142.13 0.54 6305 -6307 4 6.49 418.84 -141.88 0.54 6306 -6308 4 5.33 423.29 -141.45 0.54 6307 -6309 4 5.45 425.3 -141.91 0.54 6308 -6310 4 4.76 429.13 -141.53 0.54 6309 -6311 4 3.92 432.09 -141.24 0.54 6310 -6312 4 3.52 435.08 -140.94 0.54 6311 -6313 4 2.56 439.97 -140.46 0.54 6312 -6314 4 1.01 444.29 -141.26 0.54 6313 -6315 4 0.41 446.84 -141.01 0.54 6314 -6316 4 -0.88 450.78 -141.99 0.54 6315 -6317 4 -0.83 453.86 -142.42 0.54 6316 -6318 4 -1.95 457.88 -142.1 0.54 6317 -6319 4 -3.85 460.35 -141.89 0.54 6318 -6320 4 -5.45 462.07 -142.74 0.54 6319 -6321 4 -6.5 464.81 -142.48 0.54 6320 -6322 4 -6.65 467.43 -142.73 0.54 6321 -6323 4 -6.75 469.37 -143.22 0.54 6322 -6324 4 -7.34 471.69 -142.91 0.54 6323 -6325 4 -7.7 474.33 -143.4 0.54 6324 -6326 4 -7.43 476.94 -143.2 0.54 6325 -6327 4 -7.16 479.52 -142.92 0.54 6326 -6328 4 -7.23 484.58 -143.54 0.54 6327 -6329 4 -8.41 489.46 -143.06 0.54 6328 -6330 4 -10.77 492.32 -142.82 0.54 6329 -6331 4 13.94 358.71 -90.57 0.65 6177 -6332 4 13.27 359.66 -91.85 0.65 6331 -6333 4 11.72 360.49 -92.33 0.65 6332 -6334 4 9.96 361.66 -94.21 0.435 6333 -6335 4 7.77 362.75 -95.8 0.435 6334 -6336 4 6.24 363.68 -97.18 0.435 6335 -6337 4 4.2 365.32 -97.58 0.435 6336 -6338 4 2.62 366.31 -97.67 0.435 6337 -6339 4 0.86 367.46 -99.32 0.435 6338 -6340 4 -1.39 368.83 -99.31 0.435 6339 -6341 4 -2.3 370.21 -100.55 0.435 6340 -6342 4 -2.78 371.63 -102.07 0.435 6341 -6343 4 -4.64 373.96 -102.48 0.435 6342 -6344 4 -6.0 375.27 -103.57 0.435 6343 -6345 4 -7.09 375.98 -104.66 0.435 6344 -6346 4 -8.41 377.16 -106.45 0.435 6345 -6347 4 -10.18 378.25 -107.59 0.435 6346 -6348 4 -11.29 379.14 -108.58 0.435 6347 -6349 4 -12.83 380.01 -109.58 0.435 6348 -6350 4 -14.42 381.25 -109.79 0.435 6349 -6351 4 -15.52 381.92 -110.8 0.435 6350 -6352 4 -16.7 383.36 -110.68 0.435 6351 -6353 4 -18.53 384.97 -110.63 0.435 6352 -6354 4 -19.95 386.82 -110.47 0.435 6353 -6355 4 -21.35 388.24 -110.36 0.435 6354 -6356 4 -22.49 389.25 -110.28 0.435 6355 -6357 4 -23.84 390.03 -110.23 0.435 6356 -6358 4 -25.45 391.44 -110.12 0.435 6357 -6359 4 -27.06 392.62 -110.04 0.435 6358 -6360 4 -28.23 394.06 -109.92 0.435 6359 -6361 4 -29.65 395.91 -109.76 0.435 6360 -6362 4 -30.41 396.78 -108.11 0.435 6361 -6363 4 -31.37 397.92 -107.03 0.435 6362 -6364 4 -32.33 399.06 -106.04 0.435 6363 -6365 4 -33.7 400.04 -105.89 0.435 6364 -6366 4 -36.03 402.2 -104.97 0.435 6365 -6367 4 -37.92 404.15 -104.14 0.435 6366 -6368 4 -39.35 405.95 -103.45 0.435 6367 -6369 4 -42.34 408.03 -102.33 0.435 6368 -6370 4 -45.07 410.03 -102.19 0.435 6369 -6371 4 -47.13 411.35 -101.5 0.435 6370 -6372 4 -48.08 412.27 -100.52 0.435 6371 -6373 4 -49.68 413.44 -100.35 0.435 6372 -6374 4 -50.84 414.68 -100.25 0.435 6373 -6375 4 -51.84 416.18 -98.69 0.435 6374 -6376 4 -53.02 417.61 -98.57 0.435 6375 -6377 4 -53.85 417.53 -97.63 0.435 6376 -6378 4 -55.21 418.03 -97.0 0.435 6377 -6379 4 -58.36 419.78 -96.9 0.435 6378 -6380 4 -60.0 421.83 -96.72 0.435 6379 -6381 4 -61.59 422.76 -96.21 0.435 6380 -6382 4 -63.43 424.36 -96.09 0.435 6381 -6383 4 -66.58 426.11 -95.99 0.435 6382 -6384 4 -69.33 428.31 -95.82 0.435 6383 -6385 4 -70.26 429.87 -96.81 0.435 6384 -6386 4 -72.98 431.63 -96.62 0.435 6385 -6387 4 -74.8 433.03 -96.52 0.435 6386 -6388 4 -76.41 434.23 -96.43 0.435 6387 -6389 4 -77.77 434.91 -95.56 0.435 6388 -6390 4 -80.09 437.14 -95.38 0.435 6389 -6391 4 -81.29 438.48 -94.37 0.435 6390 -6392 4 -82.9 439.88 -94.26 0.435 6391 -6393 4 -84.33 441.12 -92.44 0.435 6392 -6394 4 -86.39 442.72 -92.32 0.435 6393 -6395 4 -88.22 444.34 -92.2 0.435 6394 -6396 4 -89.6 445.53 -92.11 0.435 6395 -6397 4 -92.32 446.75 -90.84 0.435 6396 -6398 4 -94.61 448.54 -90.64 0.435 6397 -6399 4 -96.24 450.38 -90.48 0.435 6398 -6400 4 -98.24 451.7 -91.9 0.435 6399 -6401 4 -100.52 453.5 -91.77 0.435 6400 -6402 4 -103.5 456.13 -91.64 0.435 6401 -6403 4 -108.48 459.26 -91.43 0.435 6402 -6404 4 -112.75 461.59 -91.44 0.435 6403 -6405 4 -114.79 462.97 -91.35 0.435 6404 -6406 4 -117.01 463.92 -91.3 0.435 6405 -6407 4 -119.5 465.25 -91.07 0.435 6406 -6408 4 -122.39 466.37 -91.03 0.435 6407 -6409 4 -125.71 467.46 -90.99 0.435 6408 -6410 4 -128.61 468.54 -90.58 0.435 6409 -6411 4 -131.06 469.45 -90.54 0.435 6410 -6412 4 -132.12 469.84 -90.6 0.435 6411 -6413 4 -134.14 470.78 -90.48 0.435 6412 -6414 4 -137.65 471.43 -90.49 0.435 6413 -6415 4 -139.86 471.94 -90.49 0.435 6414 -6416 4 -142.97 473.04 -90.45 0.435 6415 -6417 4 -146.94 474.08 -90.44 0.435 6416 -6418 4 -149.59 474.79 -90.5 0.435 6417 -6419 4 -153.5 474.99 -90.65 0.435 6418 -6420 4 -157.9 475.8 -90.67 0.435 6419 -6421 4 -161.81 475.99 -90.74 0.435 6420 -6422 4 -165.49 475.98 -90.83 0.435 6421 -6423 4 -168.73 475.79 -90.93 0.435 6422 -6424 4 -170.88 475.23 -91.04 0.435 6423 -6425 4 -172.18 475.15 -91.08 0.435 6424 -6426 4 -53.98 419.96 -98.13 0.435 6376 -6427 4 -54.47 421.11 -99.08 0.435 6426 -6428 4 -54.55 422.4 -98.95 0.435 6427 -6429 4 -54.7 424.75 -98.63 0.435 6428 -6430 4 -55.05 426.87 -98.35 0.435 6429 -6431 4 -55.62 429.0 -98.29 0.435 6430 -6432 4 -55.78 431.36 -98.05 0.435 6431 -6433 4 -56.79 433.88 -97.82 0.435 6432 -6434 4 -57.51 435.75 -99.52 0.435 6433 -6435 4 -58.62 436.66 -100.66 0.435 6434 -6436 4 -60.23 438.34 -101.13 0.435 6435 -6437 4 -61.38 439.91 -102.27 0.435 6436 -6438 4 -62.59 442.28 -102.89 0.435 6437 -6439 4 -62.74 444.64 -102.65 0.435 6438 -6440 4 -62.39 446.48 -103.42 0.435 6439 -6441 4 -62.91 448.53 -104.65 0.435 6440 -6442 4 -63.36 449.54 -106.22 0.435 6441 -6443 4 -63.59 450.54 -107.78 0.435 6442 -6444 4 -64.07 451.4 -107.92 0.435 6443 -6445 4 -64.54 452.3 -108.67 0.435 6444 -6446 4 -64.54 453.15 -110.55 0.435 6445 -6447 4 -65.01 453.47 -109.77 0.435 6446 -6448 4 -65.72 454.6 -110.57 0.435 6447 -6449 4 -65.74 455.6 -111.83 0.435 6448 -6450 4 -65.98 456.55 -112.86 0.435 6449 -6451 4 -66.5 458.6 -114.02 0.435 6450 -6452 4 -66.98 460.04 -115.54 0.435 6451 -6453 4 -68.17 461.96 -116.13 0.435 6452 -6454 4 -68.23 463.29 -116.44 0.435 6453 -6455 4 -68.76 464.81 -116.67 0.435 6454 -6456 4 -68.82 465.88 -116.64 0.435 6455 -6457 4 -69.3 467.29 -117.85 0.435 6456 -6458 4 -69.86 469.19 -117.67 0.435 6457 -6459 4 -71.22 470.75 -118.98 0.435 6458 -6460 4 -72.16 472.05 -119.54 0.435 6459 -6461 4 -73.14 473.99 -119.51 0.435 6460 -6462 4 -74.33 476.17 -120.3 0.435 6461 -6463 4 -75.36 478.48 -120.16 0.435 6462 -6464 4 -76.78 480.54 -119.98 0.435 6463 -6465 4 -77.95 481.76 -119.88 0.435 6464 -6466 4 25.33 288.32 -51.62 0.975 6126 -6467 4 26.34 290.03 -52.71 0.865 6466 -6468 4 27.32 292.17 -53.97 0.54 6467 -6469 4 28.34 293.86 -54.98 0.54 6468 -6470 4 28.5 294.74 -55.04 0.54 6469 -6471 4 29.05 296.28 -54.86 0.54 6470 -6472 4 29.4 298.1 -55.41 0.54 6471 -6473 4 29.46 300.47 -55.17 0.54 6472 -6474 4 29.8 302.0 -55.0 0.54 6473 -6475 4 31.12 305.09 -54.65 0.54 6474 -6476 4 31.67 306.63 -54.48 0.54 6475 -6477 4 32.83 308.84 -54.15 0.54 6476 -6478 4 33.98 311.27 -53.87 0.54 6477 -6479 4 34.72 313.2 -53.65 0.54 6478 -6480 4 35.26 314.95 -53.46 0.54 6479 -6481 4 35.57 316.91 -53.25 0.54 6480 -6482 4 35.66 318.85 -53.05 0.54 6481 -6483 4 35.54 320.77 -52.85 0.54 6482 -6484 4 35.46 322.1 -53.09 0.54 6483 -6485 4 35.59 324.19 -54.38 0.54 6484 -6486 4 36.11 326.39 -54.22 0.54 6485 -6487 4 36.61 328.57 -53.98 0.54 6486 -6488 4 37.33 330.97 -53.71 0.54 6487 -6489 4 38.08 332.95 -53.49 0.54 6488 -6490 4 38.65 334.06 -53.36 0.54 6489 -6491 4 39.0 335.63 -53.56 0.54 6490 -6492 4 39.52 337.6 -53.35 0.54 6491 -6493 4 39.48 337.95 -52.49 0.54 6492 -6494 4 39.65 338.6 -52.49 0.54 6493 -6495 4 39.41 339.59 -53.75 0.54 6494 -6496 4 40.0 341.01 -54.49 0.54 6495 -6497 4 40.37 341.85 -54.09 0.54 6496 -6498 4 40.94 343.76 -55.24 0.54 6497 -6499 4 41.13 344.72 -56.11 0.54 6498 -6500 4 41.5 346.44 -57.67 0.54 6499 -6501 4 41.87 347.52 -57.55 0.54 6500 -6502 4 42.46 349.24 -59.08 0.54 6501 -6503 4 43.68 351.44 -60.64 0.54 6502 -6504 4 44.45 353.3 -61.4 0.54 6503 -6505 4 45.24 355.23 -62.84 0.54 6504 -6506 4 46.44 357.87 -64.5 0.54 6505 -6507 4 47.47 359.41 -66.13 0.54 6506 -6508 4 47.84 360.77 -66.5 0.54 6507 -6509 4 47.97 362.08 -66.36 0.54 6508 -6510 4 47.26 363.12 -66.35 0.54 6509 -6511 4 47.47 363.58 -67.05 0.435 6510 -6512 4 48.02 365.12 -66.88 0.435 6511 -6513 4 48.8 366.44 -66.65 0.435 6512 -6514 4 49.75 368.44 -66.35 0.435 6513 -6515 4 50.52 370.19 -66.15 0.435 6514 -6516 4 50.64 371.19 -65.21 0.435 6515 -6517 4 50.96 372.38 -63.8 0.435 6516 -6518 4 50.37 374.71 -63.57 0.435 6517 -6519 4 49.19 376.38 -63.58 0.435 6518 -6520 4 47.53 378.96 -64.41 0.435 6519 -6521 4 46.11 381.06 -64.59 0.435 6520 -6522 4 45.62 382.4 -65.3 0.435 6521 -6523 4 44.67 384.19 -66.34 0.435 6522 -6524 4 44.18 385.82 -67.7 0.435 6523 -6525 4 43.68 387.4 -68.59 0.435 6524 -6526 4 43.36 388.88 -68.44 0.435 6525 -6527 4 43.47 391.11 -68.97 0.435 6526 -6528 4 43.54 393.27 -68.82 0.435 6527 -6529 4 43.76 396.8 -68.6 0.435 6528 -6530 4 44.6 400.51 -68.2 0.435 6529 -6531 4 45.02 404.49 -68.6 0.435 6530 -6532 4 45.92 407.35 -68.28 0.435 6531 -6533 4 46.95 411.5 -67.83 0.435 6532 -6534 4 48.16 416.51 -67.28 0.435 6533 -6535 4 48.99 420.44 -66.86 0.435 6534 -6536 4 49.54 422.24 -67.11 0.435 6535 -6537 4 49.69 423.06 -66.5 0.435 6536 -6538 4 49.83 424.08 -65.86 0.435 6537 -6539 4 49.72 425.54 -65.26 0.435 6538 -6540 4 50.11 426.18 -64.96 0.435 6539 -6541 4 50.89 427.52 -64.72 0.435 6540 -6542 4 51.24 428.04 -63.3 0.435 6541 -6543 4 51.42 428.65 -62.79 0.435 6542 -6544 4 51.54 429.67 -62.0 0.435 6543 -6545 4 51.84 431.56 -61.19 0.435 6544 -6546 4 51.98 432.38 -60.58 0.435 6545 -6547 4 52.35 433.2 -59.89 0.435 6546 -6548 4 52.47 434.22 -59.09 0.435 6547 -6549 4 53.17 436.8 -58.44 0.435 6548 -6550 4 53.21 439.02 -56.85 0.435 6549 -6551 4 53.69 441.63 -56.49 0.435 6550 -6552 4 53.57 443.04 -55.45 0.435 6551 -6553 4 53.9 444.78 -55.26 0.435 6552 -6554 4 54.8 447.42 -54.97 0.435 6553 -6555 4 55.34 449.16 -54.69 0.435 6554 -6556 4 55.83 451.48 -53.69 0.435 6555 -6557 4 56.18 452.79 -53.54 0.435 6556 -6558 4 56.06 454.72 -53.28 0.435 6557 -6559 4 55.49 456.62 -53.09 0.435 6558 -6560 4 54.94 458.52 -52.91 0.435 6559 -6561 4 55.05 460.25 -52.73 0.435 6560 -6562 4 55.07 462.73 -51.42 0.435 6561 -6563 4 56.13 466.45 -51.01 0.435 6562 -6564 4 56.83 469.1 -50.63 0.435 6563 -6565 4 59.16 473.33 -50.14 0.435 6564 -6566 4 60.09 475.75 -49.87 0.435 6565 -6567 4 61.0 478.38 -49.5 0.435 6566 -6568 4 62.09 481.12 -48.06 0.435 6567 -6569 4 62.84 485.72 -45.77 0.435 6568 -6570 4 62.89 487.54 -44.37 0.435 6569 -6571 4 63.63 489.73 -44.13 0.435 6570 -6572 4 64.43 493.53 -42.43 0.435 6571 -6573 4 65.12 495.81 -40.9 0.435 6572 -6574 4 66.22 498.33 -39.4 0.435 6573 -6575 4 66.92 500.4 -37.97 0.435 6574 -6576 4 67.17 502.41 -36.09 0.435 6575 -6577 4 67.07 503.61 -35.15 0.325 6576 -6578 4 67.29 506.85 -34.81 0.325 6577 -6579 4 67.4 508.79 -34.6 0.325 6578 -6580 4 67.66 511.38 -34.33 0.325 6579 -6581 4 67.25 513.79 -32.58 0.325 6580 -6582 4 67.3 516.14 -32.18 0.325 6581 -6583 4 67.8 518.54 -31.92 0.325 6582 -6584 4 67.84 521.06 -30.99 0.325 6583 -6585 4 68.53 523.88 -30.6 0.325 6584 -6586 4 69.43 525.93 -28.86 0.325 6585 -6587 4 69.7 528.54 -28.58 0.325 6586 -6588 4 70.4 531.15 -28.22 0.325 6587 -6589 4 70.49 533.31 -28.0 0.325 6588 -6590 4 70.59 534.82 -27.84 0.325 6589 -6591 4 71.12 536.79 -27.62 0.325 6590 -6592 4 71.92 537.9 -27.41 0.325 6591 -6593 4 72.07 538.99 -27.29 0.325 6592 -6594 4 72.4 540.52 -27.13 0.325 6593 -6595 4 72.5 542.45 -26.93 0.325 6594 -6596 4 72.43 543.53 -26.82 0.325 6595 -6597 4 72.34 545.02 -26.66 0.325 6596 -6598 4 71.81 546.28 -26.55 0.325 6597 -6599 4 71.76 547.15 -26.46 0.325 6598 -6600 4 71.29 547.75 -26.34 0.325 6599 -6601 4 46.3 364.57 -66.23 0.54 6510 -6602 4 45.33 366.22 -66.08 0.54 6601 -6603 4 45.04 367.56 -66.62 0.435 6602 -6604 4 44.56 368.95 -67.77 0.435 6603 -6605 4 44.09 369.87 -68.51 0.435 6604 -6606 4 43.19 371.03 -69.84 0.435 6605 -6607 4 42.95 372.02 -71.1 0.435 6606 -6608 4 42.67 373.11 -71.3 0.435 6607 -6609 4 42.44 374.02 -72.5 0.435 6608 -6610 4 42.21 374.83 -74.15 0.435 6609 -6611 4 41.98 375.79 -75.26 0.435 6610 -6612 4 41.73 376.73 -76.15 0.435 6611 -6613 4 40.8 377.78 -76.36 0.435 6612 -6614 4 39.98 378.15 -78.3 0.435 6613 -6615 4 24.1 207.46 -20.24 0.435 5040 -6616 4 23.59 208.52 -20.21 0.435 6615 -6617 4 23.58 208.74 -20.27 0.435 6616 -6618 4 23.52 209.54 -19.66 0.435 6617 -6619 4 22.8 210.05 -18.64 0.435 6618 -6620 4 22.31 211.11 -18.77 0.435 6619 -6621 4 22.24 211.91 -18.16 0.435 6620 -6622 4 21.69 213.25 -16.68 0.435 6621 -6623 4 20.7 214.86 -16.08 0.435 6622 -6624 4 19.73 216.03 -15.38 0.435 6623 -6625 4 18.27 218.52 -15.16 0.435 6624 -6626 4 18.18 220.03 -15.0 0.435 6625 -6627 4 17.53 223.42 -14.67 0.435 6626 -6628 4 16.27 226.15 -14.42 0.435 6627 -6629 4 14.17 228.39 -14.23 0.435 6628 -6630 4 12.99 229.82 -14.11 0.435 6629 -6631 4 11.49 232.96 -13.82 0.435 6630 -6632 4 9.96 237.06 -14.57 0.435 6631 -6633 4 8.24 240.19 -14.36 0.435 6632 -6634 4 7.72 241.99 -15.32 0.435 6633 -6635 4 6.74 243.87 -15.22 0.435 6634 -6636 4 6.18 246.59 -16.61 0.435 6635 -6637 4 5.23 248.03 -16.49 0.435 6636 -6638 4 4.69 249.52 -16.34 0.435 6637 -6639 4 4.6 251.02 -16.19 0.435 6638 -6640 4 4.72 252.53 -16.03 0.435 6639 -6641 4 4.43 253.75 -16.06 0.435 6640 -6642 4 4.37 254.91 -16.77 0.435 6641 -6643 4 4.32 256.02 -17.11 0.435 6642 -6644 4 2.9 257.88 -17.03 0.435 6643 -6645 4 1.5 259.3 -16.92 0.435 6644 -6646 4 0.6 260.18 -17.52 0.435 6645 -6647 4 0.32 261.24 -17.57 0.435 6646 -6648 4 0.24 262.54 -17.51 0.435 6647 -6649 4 0.18 263.67 -17.92 0.435 6648 -6650 4 -0.38 265.99 -17.7 0.435 6649 -6651 4 -0.96 268.12 -17.49 0.435 6650 -6652 4 -3.07 271.38 -18.86 0.435 6651 -6653 4 -3.81 272.84 -18.73 0.435 6652 -6654 4 -5.45 274.92 -18.78 0.435 6653 -6655 4 -6.01 276.82 -18.6 0.435 6654 -6656 4 -6.17 279.18 -18.43 0.435 6655 -6657 4 -5.97 283.06 -18.02 0.435 6656 -6658 4 -6.37 285.85 -17.89 0.435 6657 -6659 4 -7.39 288.98 -19.47 0.435 6658 -6660 4 -8.22 291.94 -19.19 0.435 6659 -6661 4 -8.3 293.77 -20.06 0.435 6660 -6662 4 -8.93 297.01 -20.19 0.435 6661 -6663 4 -10.6 299.52 -20.27 0.435 6662 -6664 4 -11.6 302.14 -21.08 0.435 6663 -6665 4 -12.66 305.41 -21.82 0.435 6664 -6666 4 -14.57 308.3 -21.57 0.435 6665 -6667 4 -15.9 312.63 -22.13 0.435 6666 -6668 4 -15.82 315.09 -22.86 0.435 6667 -6669 4 -15.83 318.75 -22.55 0.435 6668 -6670 4 -15.55 321.68 -23.29 0.435 6669 -6671 4 -15.48 324.35 -23.85 0.435 6670 -6672 4 -15.2 326.74 -23.67 0.435 6671 -6673 4 -15.06 328.24 -24.04 0.435 6672 -6674 4 -14.28 329.57 -23.73 0.435 6673 -6675 4 -13.73 331.1 -23.48 0.435 6674 -6676 4 -13.31 331.64 -24.25 0.435 6675 -6677 4 -12.95 333.3 -25.35 0.435 6676 -6678 4 -12.51 334.09 -26.53 0.435 6677 -6679 4 -12.15 335.46 -26.92 0.435 6678 -6680 4 17.94 73.8 -14.09 0.435 3403 -6681 4 19.39 74.96 -13.94 0.435 6680 -6682 4 19.82 75.01 -14.07 0.435 6681 -6683 4 20.41 75.32 -12.6 0.435 6682 -6684 4 21.21 75.62 -10.74 0.435 6683 -6685 4 21.97 76.89 -9.83 0.435 6684 -6686 4 23.57 78.87 -9.14 0.435 6685 -6687 4 24.55 80.17 -8.53 0.435 6686 -6688 4 25.68 82.56 -7.73 0.435 6687 -6689 4 26.63 84.46 -6.61 0.435 6688 -6690 4 27.17 85.96 -6.06 0.435 6689 -6691 4 28.36 87.5 -5.5 0.435 6690 -6692 4 30.0 88.86 -4.94 0.435 6691 -6693 4 31.2 90.19 -4.48 0.435 6692 -6694 4 31.43 90.14 -4.48 0.435 6693 -6695 4 31.8 91.02 -4.3 0.435 6694 -6696 4 32.39 91.92 -4.19 0.435 6695 -6697 4 33.18 93.25 -4.03 0.435 6696 -6698 4 33.75 94.57 -3.88 0.435 6697 -6699 4 33.68 95.65 -3.77 0.435 6698 -6700 4 33.82 97.0 -4.23 0.435 6699 -6701 4 33.59 98.01 -5.56 0.435 6700 -6702 4 33.54 98.61 -5.13 0.435 6701 -6703 4 33.5 98.96 -4.34 0.435 6702 -6704 4 33.85 100.02 -3.99 0.435 6703 -6705 4 33.32 101.45 -3.33 0.435 6704 -6706 4 33.4 102.86 -2.13 0.435 6705 -6707 4 33.49 104.76 -1.56 0.435 6706 -6708 4 33.8 105.95 -0.29 0.435 6707 -6709 4 34.35 107.18 0.81 0.435 6708 -6710 4 35.3 109.1 1.72 0.435 6709 -6711 4 35.83 110.81 2.36 0.435 6710 -6712 4 37.04 112.17 2.6 0.435 6711 -6713 4 37.33 114.33 2.91 0.435 6712 -6714 4 37.7 115.16 3.46 0.435 6713 -6715 4 38.24 116.65 4.15 0.435 6714 -6716 4 39.49 117.08 4.98 0.435 6715 -6717 4 40.44 119.07 5.28 0.435 6716 -6718 4 41.22 120.37 5.73 0.435 6717 -6719 4 41.79 121.19 6.51 0.435 6718 -6720 4 42.38 122.61 5.92 0.435 6719 -6721 4 43.11 123.96 7.96 0.435 6720 -6722 4 43.91 124.89 7.92 0.435 6721 -6723 4 33.33 90.68 -3.77 0.435 6694 -6724 4 35.91 91.05 -3.59 0.435 6723 -6725 4 37.85 91.18 -3.54 0.435 6724 -6726 4 40.24 91.1 -3.49 0.435 6725 -6727 4 43.02 91.7 -3.36 0.435 6726 -6728 4 46.0 92.75 -3.18 0.435 6727 -6729 4 49.06 92.28 -3.16 0.435 6728 -6730 4 53.19 92.32 -3.05 0.435 6729 -6731 4 55.53 92.88 -2.94 0.435 6730 -6732 4 57.69 92.96 -2.36 0.435 6731 -6733 4 60.19 94.37 -1.7 0.435 6732 -6734 4 61.4 95.15 -0.15 0.435 6733 -6735 4 63.65 97.22 0.1 0.435 6734 -6736 4 64.84 98.51 1.09 0.435 6735 -6737 4 65.38 99.99 1.86 0.435 6736 -6738 4 68.32 101.44 2.16 0.435 6737 -6739 4 71.07 102.68 2.42 0.435 6738 -6740 4 72.46 104.7 2.67 0.435 6739 -6741 4 75.61 109.62 3.25 0.435 6740 -6742 4 78.25 112.36 3.6 0.435 6741 -6743 4 80.84 115.97 4.03 0.435 6742 -6744 4 83.49 118.72 4.38 0.435 6743 -6745 4 85.54 120.56 4.62 0.435 6744 -6746 4 87.68 120.9 4.78 0.435 6745 -6747 4 90.67 121.69 5.24 0.435 6746 -6748 4 93.01 121.97 6.06 0.435 6747 -6749 4 95.6 122.13 6.22 0.435 6748 -6750 4 98.95 124.04 6.57 0.435 6749 -6751 4 102.37 124.68 6.72 0.435 6750 -6752 4 105.55 125.96 6.92 0.435 6751 -6753 4 106.75 127.24 7.77 0.435 6752 -6754 4 109.25 128.64 8.43 0.435 6753 -6755 4 110.47 129.77 8.79 0.435 6754 -6756 4 111.34 129.82 8.9 0.435 6755 -6757 4 112.41 129.85 9.3 0.435 6756 diff --git a/examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc b/examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc deleted file mode 100644 index 3a7b77c..0000000 --- a/examples/tutorials/Rdesigneur/cells/VHC-neuron.CNG.swc +++ /dev/null @@ -1,3022 +0,0 @@ -# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. -# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. -# -# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu -# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc -#The original file has a single soma contour that is averaged into 3 soma points -1 1 0.0 0.0 0.0 8.88119 -1 -2 1 0.35 -8.83 -0.87 8.88119 1 -3 1 -0.35 8.83 0.87 8.88119 1 -4 3 0.67 -4.33 -2.18 2.165 1 -5 3 -0.09 -6.62 -2.34 1.84 4 -6 3 -1.76 -8.01 -2.31 1.405 5 -7 3 -2.97 -8.02 -2.2 1.405 6 -8 3 -3.39 -8.37 -2.2 1.405 7 -9 3 -3.48 -8.5 -2.2 1.405 8 -10 3 -3.53 -8.81 -3.1 1.19 9 -11 3 -3.61 -9.04 -3.55 1.19 10 -12 3 -4.27 -8.08 -3.52 0.11 11 -13 3 -5.31 -7.95 -3.18 0.11 12 -14 3 -5.47 -8.42 -3.21 0.54 13 -15 3 -6.69 -8.42 -3.11 0.54 14 -16 3 -7.0 -7.52 -2.98 0.54 15 -17 3 -8.21 -7.23 -2.84 0.54 16 -18 3 -8.66 -7.68 -2.85 0.54 17 -19 3 -9.28 -8.31 -2.85 0.54 18 -20 3 -9.73 -9.06 -2.88 0.54 19 -21 3 -10.03 -10.29 -2.97 0.54 20 -22 3 -10.03 -10.88 -3.03 0.54 21 -23 3 -10.18 -11.95 -3.12 0.54 22 -24 3 -10.63 -12.42 -3.13 0.54 23 -25 3 -10.94 -13.64 -3.22 0.54 24 -26 3 -11.39 -14.1 -3.22 0.54 25 -27 3 -11.68 -15.01 -3.28 0.54 26 -28 3 -12.22 -15.99 -4.24 0.65 27 -29 3 -12.53 -16.61 -4.26 0.65 28 -30 3 -12.98 -17.36 -4.31 0.65 29 -31 3 -13.66 -18.21 -5.16 0.54 30 -32 3 -14.88 -18.82 -5.11 0.54 31 -33 3 -16.85 -19.3 -4.97 0.54 32 -34 3 -17.61 -20.37 -5.0 0.54 33 -35 3 -17.76 -22.05 -5.16 0.54 34 -36 3 -17.6 -22.81 -5.25 0.54 35 -37 3 -17.44 -24.17 -5.39 0.54 36 -38 3 -17.74 -25.1 -5.45 0.54 37 -39 3 -19.12 -25.86 -5.4 0.54 38 -40 3 -20.94 -25.87 -5.24 0.54 39 -41 3 -22.15 -25.9 -5.05 0.54 40 -42 3 -22.3 -26.96 -5.14 0.54 41 -43 3 -22.29 -27.57 -5.19 0.54 42 -44 3 -22.44 -28.04 -5.22 0.54 43 -45 3 -22.94 -27.75 -6.06 0.435 44 -46 3 -23.25 -28.36 -6.09 0.435 45 -47 3 -23.56 -29.27 -6.23 0.435 46 -48 3 -24.05 -29.99 -6.72 0.435 47 -49 3 -24.86 -30.7 -7.31 0.435 48 -50 3 -26.08 -31.33 -7.26 0.435 49 -51 3 -27.75 -31.18 -7.09 0.435 50 -52 3 -29.32 -31.45 -7.5 0.435 51 -53 3 -30.27 -31.72 -7.89 0.435 52 -54 3 -31.81 -31.43 -7.79 0.435 53 -55 3 -33.73 -30.72 -8.68 0.435 54 -56 3 -34.98 -30.41 -8.84 0.435 55 -57 3 -35.25 -30.43 -10.1 0.54 56 -58 3 -36.17 -31.34 -10.26 0.54 57 -59 3 -37.55 -32.11 -10.29 0.54 58 -60 3 -38.19 -32.68 -10.73 0.54 59 -61 3 -38.5 -33.59 -10.86 0.54 60 -62 3 -39.6 -34.93 -11.27 0.54 61 -63 3 -40.35 -36.61 -11.37 0.54 62 -64 3 -41.27 -37.83 -11.48 0.54 63 -65 3 -41.72 -38.58 -11.59 0.54 64 -66 3 -42.19 -39.04 -11.66 0.54 65 -67 3 -42.37 -39.46 -11.98 0.54 66 -68 3 -42.4 -39.43 -12.36 0.54 67 -69 3 -43.94 -40.64 -12.57 0.54 68 -70 3 -45.25 -41.77 -13.61 0.54 69 -71 3 -46.49 -43.28 -13.86 0.54 70 -72 3 -47.71 -44.49 -13.96 0.54 71 -73 3 -48.47 -45.27 -13.96 0.54 72 -74 3 -49.24 -46.32 -14.14 0.54 73 -75 3 -50.18 -47.81 -14.57 0.54 74 -76 3 -52.32 -49.34 -14.68 0.54 75 -77 3 -53.07 -50.1 -14.68 0.54 76 -78 3 -53.41 -50.69 -15.09 0.54 77 -79 3 -53.87 -51.44 -15.19 0.54 78 -80 3 -54.81 -52.33 -15.5 0.54 79 -81 3 -56.05 -53.53 -15.8 0.54 80 -82 3 -57.73 -54.0 -15.77 0.54 81 -83 3 -59.85 -54.92 -15.66 0.54 82 -84 3 -61.23 -56.61 -15.78 0.54 83 -85 3 -62.89 -58.3 -15.79 0.54 84 -86 3 -66.39 -60.61 -15.69 0.54 85 -87 3 -67.76 -61.99 -15.7 0.54 86 -88 3 -68.97 -63.22 -15.7 0.54 87 -89 3 -71.85 -64.3 -15.55 0.54 88 -90 3 -73.99 -64.64 -15.38 0.54 89 -91 3 -75.81 -64.35 -15.19 0.54 90 -92 3 -79.65 -65.1 -15.35 0.54 91 -93 3 -82.24 -64.37 -15.04 0.54 92 -94 3 -84.53 -64.23 -14.82 0.54 93 -95 3 -86.41 -64.78 -15.39 0.54 94 -96 3 -88.69 -65.57 -15.26 0.54 95 -97 3 -90.98 -66.66 -15.15 0.54 96 -98 3 -92.87 -67.8 -16.07 0.54 97 -99 3 -93.53 -69.89 -16.73 0.54 98 -100 3 -95.82 -71.88 -16.79 0.54 99 -101 3 -96.87 -73.56 -16.87 0.54 100 -102 3 -97.85 -75.31 -17.77 0.54 101 -103 3 -98.47 -76.52 -17.99 0.54 102 -104 3 -98.16 -77.74 -18.06 0.54 103 -105 3 -98.09 -78.42 -17.38 0.54 104 -106 3 -97.89 -79.23 -16.87 0.54 105 -107 3 -98.75 -80.5 -16.54 0.54 106 -108 3 -99.36 -81.41 -16.57 0.54 107 -109 3 -99.32 -83.28 -16.31 0.54 108 -110 3 -100.2 -86.04 -16.34 0.54 109 -111 3 -99.59 -88.77 -16.67 0.54 110 -112 3 -99.27 -90.91 -16.82 0.54 111 -113 3 -98.62 -92.16 -16.55 0.54 112 -114 3 -98.46 -93.83 -16.73 0.54 113 -115 3 -98.58 -94.93 -16.45 0.54 114 -116 3 -98.4 -96.01 -16.42 0.54 115 -117 3 -98.69 -96.93 -16.4 0.54 116 -118 3 -22.3 -29.09 -5.42 0.54 44 -119 3 -21.83 -31.67 -5.72 0.54 118 -120 3 -20.61 -34.99 -6.22 0.54 119 -121 3 -19.89 -36.61 -6.91 0.54 120 -122 3 -19.46 -38.24 -7.56 0.54 121 -123 3 -19.16 -39.45 -7.78 0.54 122 -124 3 -18.65 -40.57 -7.25 0.54 123 -125 3 -17.05 -42.46 -6.82 0.54 124 -126 3 -16.58 -44.14 -6.97 0.54 125 -127 3 -16.87 -45.37 -6.98 0.54 126 -128 3 -16.66 -45.58 -6.26 0.54 127 -129 3 -17.25 -47.1 -6.35 0.54 128 -130 3 -18.32 -47.57 -6.3 0.54 129 -131 3 -19.05 -48.38 -6.01 0.54 130 -132 3 -20.1 -49.46 -5.87 0.54 131 -133 3 -20.55 -51.43 -6.02 0.54 132 -134 3 -21.15 -53.57 -6.17 0.54 133 -135 3 -22.35 -55.72 -6.2 0.54 134 -136 3 -23.41 -57.41 -6.27 0.54 135 -137 3 -24.16 -59.09 -6.36 0.54 136 -138 3 -25.52 -59.88 -6.16 0.54 137 -139 3 -26.42 -60.8 -6.08 0.54 138 -140 3 -27.46 -61.9 -5.8 0.54 139 -141 3 -28.2 -64.21 -5.88 0.54 140 -142 3 -28.5 -66.33 -6.07 0.54 141 -143 3 -29.72 -67.87 -6.1 0.54 142 -144 3 -31.08 -68.64 -6.05 0.54 143 -145 3 -32.76 -70.63 -6.09 0.54 144 -146 3 -33.19 -72.63 -6.16 0.54 145 -147 3 -33.8 -75.05 -6.34 0.54 146 -148 3 -33.71 -76.04 -5.62 0.54 147 -149 3 -35.03 -77.17 -6.74 0.54 148 -150 3 -36.24 -79.02 -6.8 0.54 149 -151 3 -37.19 -80.5 -7.25 0.54 150 -152 3 -37.41 -81.78 -8.26 0.54 151 -153 3 -37.85 -84.68 -8.5 0.54 152 -154 3 -38.77 -88.03 -8.81 0.54 153 -155 3 -38.91 -90.01 -9.0 0.54 154 -156 3 -39.06 -91.68 -9.15 0.54 155 -157 3 -38.76 -93.18 -9.47 0.54 156 -158 3 -38.8 -94.06 -9.93 0.54 157 -159 3 -39.48 -94.59 -10.83 0.54 158 -160 3 -41.17 -96.26 -10.99 0.54 159 -161 3 -41.54 -97.09 -11.87 0.54 160 -162 3 -41.81 -97.74 -13.11 0.54 161 -163 3 -41.84 -99.24 -11.97 0.54 162 -164 3 -42.03 -99.98 -10.67 0.54 163 -165 3 -41.98 -100.61 -10.44 0.54 164 -166 3 -42.73 -102.6 -10.48 0.54 165 -167 3 -42.57 -105.2 -10.68 0.54 166 -168 3 -42.71 -106.56 -10.8 0.54 167 -169 3 -43.6 -108.43 -10.59 0.54 168 -170 3 -44.18 -109.97 -10.46 0.54 169 -171 3 -44.24 -110.81 -9.71 0.54 170 -172 3 -44.24 -112.04 -9.68 0.54 171 -173 3 -44.52 -113.29 -9.54 0.54 172 -174 3 -44.93 -114.69 -9.33 0.54 173 -175 3 -44.89 -116.26 -9.04 0.54 174 -176 3 -44.68 -117.66 -8.75 0.54 175 -177 3 -44.39 -119.19 -8.84 0.54 176 -178 3 -43.91 -120.55 -9.02 0.54 177 -179 3 -43.89 -120.9 -8.69 0.54 178 -180 3 -42.63 -122.13 -8.62 0.54 179 -181 3 -41.35 -123.71 -8.14 0.54 180 -182 3 -40.56 -125.39 -8.29 0.54 181 -183 3 -39.95 -126.59 -8.46 0.54 182 -184 3 -39.34 -128.42 -8.63 0.54 183 -185 3 -38.71 -130.56 -8.81 0.54 184 -186 3 -38.07 -131.8 -8.62 0.54 185 -187 3 -37.6 -132.87 -8.68 0.54 186 -188 3 -37.59 -134.08 -8.74 0.54 187 -189 3 -37.59 -135.0 -8.83 0.54 188 -190 3 -37.43 -135.76 -8.92 0.54 189 -191 3 -36.82 -136.67 -9.06 0.54 190 -192 3 -36.05 -138.64 -9.32 0.54 191 -193 3 -35.9 -140.01 -9.47 0.54 192 -194 3 -36.34 -141.07 -9.54 0.54 193 -195 3 -37.05 -141.51 -9.36 0.435 194 -196 3 -37.96 -142.43 -9.36 0.435 195 -197 3 -39.64 -142.9 -9.25 0.435 196 -198 3 -41.44 -143.55 -9.01 0.435 197 -199 3 -42.34 -144.48 -8.86 0.435 198 -200 3 -43.11 -144.62 -8.95 0.435 199 -201 3 -43.6 -145.36 -9.28 0.435 200 -202 3 -43.94 -145.63 -9.65 0.435 201 -203 3 -44.28 -146.19 -10.13 0.435 202 -204 3 -44.99 -146.71 -11.25 0.435 203 -205 3 -45.66 -147.56 -11.88 0.435 204 -206 3 -45.84 -148.59 -12.34 0.435 205 -207 3 -46.13 -150.11 -12.46 0.435 206 -208 3 -46.59 -151.48 -12.62 0.435 207 -209 3 -46.59 -152.7 -12.74 0.435 208 -210 3 -46.42 -154.06 -12.89 0.435 209 -211 3 -46.6 -154.8 -13.25 0.435 210 -212 3 -46.15 -155.85 -13.47 0.435 211 -213 3 -45.85 -157.07 -13.61 0.435 212 -214 3 -46.02 -157.81 -13.9 0.435 213 -215 3 -46.02 -158.71 -14.14 0.435 214 -216 3 -46.22 -159.72 -14.67 0.435 215 -217 3 -46.53 -160.34 -14.78 0.435 216 -218 3 -46.83 -160.94 -14.81 0.435 217 -219 3 -46.99 -161.4 -14.84 0.435 218 -220 3 -47.04 -161.94 -15.64 0.435 219 -221 3 -47.65 -162.54 -15.73 0.435 220 -222 3 -48.11 -163.01 -15.73 0.435 221 -223 3 -48.42 -163.32 -15.73 0.435 222 -224 3 -48.62 -163.71 -16.28 0.435 223 -225 3 -48.31 -165.22 -16.53 0.435 224 -226 3 -47.25 -165.67 -16.67 0.435 225 -227 3 -3.29 -10.26 -4.74 1.19 10 -228 3 -2.54 -10.99 -5.1 1.08 227 -229 3 -1.93 -11.9 -5.24 0.865 228 -230 3 -1.81 -12.92 -5.81 0.65 229 -231 3 -1.21 -13.83 -5.95 0.65 230 -232 3 -1.2 -14.74 -6.04 0.65 231 -233 3 -1.8 -15.96 -6.11 0.65 232 -234 3 -2.26 -16.71 -6.22 0.65 233 -235 3 -3.79 -17.95 -6.19 0.65 234 -236 3 -4.84 -19.93 -6.3 0.65 235 -237 3 -5.14 -20.55 -6.33 0.435 236 -238 3 -6.2 -22.22 -6.39 0.435 237 -239 3 -6.34 -23.59 -6.51 0.435 238 -240 3 -5.58 -24.95 -6.72 0.435 239 -241 3 -4.67 -27.09 -7.01 0.435 240 -242 3 -4.2 -29.67 -7.3 0.435 241 -243 3 -4.2 -30.88 -7.42 0.435 242 -244 3 -3.89 -32.39 -7.6 0.435 243 -245 3 -2.46 -33.18 -8.94 0.435 244 -246 3 -1.39 -33.63 -9.08 0.435 245 -247 3 -0.03 -34.37 -9.35 0.435 246 -248 3 1.17 -35.88 -9.61 0.435 247 -249 3 2.25 -38.15 -9.94 0.435 248 -250 3 3.18 -40.28 -10.23 0.435 249 -251 3 3.48 -41.49 -10.37 0.435 250 -252 3 4.85 -42.85 -10.63 0.435 251 -253 3 6.49 -42.62 -11.29 0.435 252 -254 3 8.21 -43.42 -12.58 0.435 253 -255 3 9.59 -44.79 -11.18 0.435 254 -256 3 10.7 -45.29 -10.8 0.435 255 -257 3 11.5 -46.08 -10.51 0.435 256 -258 3 11.97 -47.16 -10.5 0.435 257 -259 3 13.08 -48.25 -10.26 0.435 258 -260 3 13.0 -48.78 -9.54 0.435 259 -261 3 12.87 -49.57 -9.46 0.435 260 -262 3 12.76 -50.06 -9.04 0.435 261 -263 3 12.82 -51.04 -8.45 0.435 262 -264 3 13.34 -52.46 -7.97 0.435 263 -265 3 13.53 -52.95 -7.73 0.435 264 -266 3 13.55 -53.89 -7.6 0.435 265 -267 3 13.56 -54.5 -7.58 0.435 266 -268 3 -4.18 -10.16 -2.3 0.755 9 -269 3 -5.4 -11.08 -2.28 0.65 268 -270 3 -6.46 -12.15 -2.28 0.65 269 -271 3 -7.06 -13.68 -2.38 0.65 270 -272 3 -7.51 -15.67 -2.45 0.65 271 -273 3 -7.34 -17.65 -2.66 0.65 272 -274 3 -6.43 -19.76 -2.95 0.65 273 -275 3 -5.66 -21.74 -3.21 0.65 274 -276 3 -5.04 -24.47 -3.53 0.65 275 -277 3 -4.42 -25.98 -3.75 0.65 276 -278 3 -4.72 -27.19 -3.83 0.65 277 -279 3 -5.34 -27.81 -3.84 0.65 278 -280 3 -6.55 -27.83 -3.72 0.65 279 -281 3 -7.47 -29.36 -3.79 0.65 280 -282 3 -7.71 -30.46 -3.88 0.65 281 -283 3 -7.85 -30.94 -2.1 0.435 282 -284 3 -8.31 -31.4 -2.1 0.435 283 -285 3 -8.76 -31.87 -2.1 0.435 284 -286 3 -9.26 -32.27 -2.63 0.435 285 -287 3 -9.8 -32.65 -3.44 0.435 286 -288 3 -10.28 -33.09 -3.67 0.435 287 -289 3 -10.55 -33.42 -3.44 0.435 288 -290 3 -10.84 -33.75 -3.23 0.435 289 -291 3 -10.83 -34.36 -3.22 0.435 290 -292 3 -10.5 -34.69 -3.06 0.435 291 -293 3 -9.99 -35.2 -2.47 0.435 292 -294 3 -9.77 -35.72 -1.86 0.435 293 -295 3 -8.83 -36.34 -1.86 0.435 294 -296 3 -8.98 -37.42 -1.86 0.435 295 -297 3 -9.13 -38.17 -1.92 0.435 296 -298 3 -9.44 -38.79 -1.95 0.435 297 -299 3 -10.19 -39.56 -1.89 0.435 298 -300 3 -10.33 -40.33 -1.88 0.435 299 -301 3 -10.62 -41.25 -1.87 0.435 300 -302 3 -10.93 -41.86 -1.9 0.435 301 -303 3 -11.04 -42.96 -1.61 0.435 302 -304 3 -10.29 -43.39 -3.53 0.435 303 -305 3 -10.28 -44.0 -3.52 0.435 304 -306 3 -7.61 -30.42 -3.89 0.54 282 -307 3 -6.54 -31.79 -4.11 0.54 306 -308 3 -5.85 -33.07 -3.47 0.54 307 -309 3 -6.0 -34.45 -3.59 0.54 308 -310 3 -7.37 -35.22 -3.55 0.54 309 -311 3 -7.21 -37.19 -3.75 0.54 310 -312 3 -6.22 -38.47 -4.87 0.54 311 -313 3 -5.61 -39.97 -5.07 0.54 312 -314 3 -6.21 -41.81 -5.21 0.54 313 -315 3 -5.85 -42.47 -4.77 0.435 314 -316 3 -5.24 -43.37 -4.91 0.435 315 -317 3 -4.62 -45.49 -5.17 0.435 316 -318 3 -4.17 -46.86 -5.35 0.435 317 -319 3 -3.56 -47.46 -5.47 0.435 318 -320 3 -2.5 -47.3 -5.55 0.435 319 -321 3 -1.73 -47.43 -5.72 0.435 320 -322 3 -1.12 -48.96 -5.92 0.435 321 -323 3 -1.58 -50.03 -5.98 0.435 322 -324 3 -1.42 -51.69 -6.15 0.435 323 -325 3 -0.66 -53.05 -6.36 0.435 324 -326 3 0.4 -54.4 -6.66 0.435 325 -327 3 1.17 -55.16 -6.81 0.435 326 -328 3 0.71 -56.23 -6.87 0.435 327 -329 3 0.33 -56.76 -7.79 0.435 328 -330 3 -0.32 -58.22 -8.39 0.435 329 -331 3 -1.38 -59.61 -8.44 0.435 330 -332 3 -1.83 -60.98 -8.53 0.435 331 -333 3 -1.82 -62.5 -8.67 0.435 332 -334 3 -1.82 -64.32 -8.86 0.435 333 -335 3 -1.2 -65.54 -9.03 0.435 334 -336 3 0.0 -66.74 -9.26 0.435 335 -337 3 0.47 -68.12 -9.43 0.435 336 -338 3 0.32 -68.57 -9.46 0.435 337 -339 3 0.01 -69.48 -9.53 0.435 338 -340 3 0.02 -70.4 -9.62 0.435 339 -341 3 0.78 -71.76 -9.82 0.435 340 -342 3 1.7 -72.97 -10.02 0.435 341 -343 3 2.45 -74.0 -10.42 0.435 342 -344 3 1.99 -75.37 -10.59 0.435 343 -345 3 1.98 -75.98 -10.65 0.435 344 -346 3 2.75 -77.03 -10.82 0.435 345 -347 3 3.06 -78.25 -10.97 0.435 346 -348 3 2.76 -78.86 -11.0 0.435 347 -349 3 2.15 -79.78 -11.03 0.435 348 -350 3 2.61 -81.14 -11.21 0.435 349 -351 3 3.98 -81.27 -11.35 0.435 350 -352 3 4.44 -81.73 -11.44 0.435 351 -353 3 4.9 -82.79 -11.58 0.435 352 -354 3 5.05 -84.17 -11.73 0.435 353 -355 3 5.11 -85.41 -13.06 0.435 354 -356 3 4.51 -86.03 -13.07 0.435 355 -357 3 4.05 -87.08 -13.13 0.435 356 -358 3 5.87 -87.99 -13.39 0.435 357 -359 3 6.94 -89.34 -13.62 0.435 358 -360 3 7.26 -89.66 -15.19 0.435 359 -361 3 7.41 -90.71 -15.31 0.435 360 -362 3 7.27 -91.78 -15.4 0.435 361 -363 3 6.96 -92.39 -15.43 0.435 362 -364 3 6.97 -93.61 -15.55 0.435 363 -365 3 7.89 -94.51 -15.72 0.435 364 -366 3 8.9 -95.81 -16.63 0.435 365 -367 3 9.5 -97.01 -16.87 0.435 366 -368 3 9.78 -97.89 -17.28 0.435 367 -369 3 10.05 -99.68 -17.87 0.435 368 -370 3 10.22 -101.04 -18.02 0.435 369 -371 3 11.12 -101.33 -18.2 0.435 370 -372 3 12.8 -101.77 -18.4 0.435 371 -373 3 13.56 -102.83 -18.57 0.435 372 -374 3 13.72 -104.5 -18.75 0.435 373 -375 3 14.47 -105.55 -19.0 0.435 374 -376 3 15.39 -106.77 -19.2 0.435 375 -377 3 16.61 -108.57 -19.48 0.435 376 -378 3 17.38 -110.24 -19.72 0.435 377 -379 3 18.45 -112.52 -20.04 0.435 378 -380 3 19.52 -114.78 -20.36 0.435 379 -381 3 21.03 -116.57 -20.9 0.435 380 -382 3 21.89 -118.02 -21.88 0.435 381 -383 3 22.81 -119.53 -22.12 0.435 382 -384 3 24.02 -120.73 -22.34 0.435 383 -385 3 25.54 -121.63 -22.57 0.435 384 -386 3 27.84 -123.58 -22.97 0.435 385 -387 3 29.06 -125.1 -23.23 0.435 386 -388 3 28.92 -127.99 -23.5 0.435 387 -389 3 29.37 -129.34 -23.68 0.435 388 -390 3 29.07 -130.27 -23.81 0.435 389 -391 3 30.9 -131.15 -24.06 0.435 390 -392 3 31.66 -132.83 -24.3 0.435 391 -393 3 32.58 -134.34 -24.53 0.435 392 -394 3 33.65 -135.38 -24.73 0.435 393 -395 3 33.96 -136.6 -24.88 0.435 394 -396 3 35.33 -138.86 -25.23 0.435 395 -397 3 35.84 -140.11 -25.48 0.435 396 -398 3 36.6 -141.17 -25.65 0.435 397 -399 3 37.52 -142.08 -25.82 0.435 398 -400 3 39.34 -142.96 -26.08 0.435 399 -401 3 40.03 -144.86 -27.15 0.435 400 -402 3 40.8 -146.82 -27.42 0.435 401 -403 3 42.11 -148.41 -28.45 0.435 402 -404 3 42.11 -149.32 -28.54 0.435 403 -405 3 42.07 -149.87 -29.12 0.435 404 -406 3 42.82 -151.24 -29.39 0.435 405 -407 3 44.05 -151.83 -29.57 0.435 406 -408 3 45.05 -152.2 -30.46 0.435 407 -409 3 45.07 -152.83 -31.95 0.435 408 -410 3 44.94 -153.0 -33.4 0.435 409 -411 3 45.09 -154.36 -33.54 0.435 410 -412 3 46.16 -156.02 -33.87 0.435 411 -413 3 47.23 -157.98 -34.17 0.435 412 -414 3 49.06 -160.71 -34.6 0.435 413 -415 3 49.67 -162.22 -34.8 0.435 414 -416 3 50.75 -162.66 -34.94 0.435 415 -417 3 51.97 -163.86 -35.17 0.435 416 -418 3 52.73 -165.53 -35.49 0.435 417 -419 3 53.95 -166.73 -35.79 0.435 418 -420 3 56.12 -167.07 -37.08 0.435 419 -421 3 57.77 -167.77 -37.76 0.435 420 -422 3 59.29 -169.59 -38.07 0.435 421 -423 3 60.21 -170.79 -38.27 0.435 422 -424 3 61.11 -171.07 -38.53 0.435 423 -425 3 61.46 -172.32 -39.9 0.435 424 -426 3 61.73 -172.88 -40.37 0.435 425 -427 3 61.98 -174.03 -41.25 0.435 426 -428 3 62.36 -175.0 -42.21 0.435 427 -429 3 62.89 -176.75 -43.26 0.435 428 -430 3 63.65 -178.11 -43.54 0.435 429 -431 3 64.27 -179.61 -43.75 0.435 430 -432 3 64.73 -180.38 -43.87 0.435 431 -433 3 65.79 -181.11 -44.04 0.435 432 -434 3 66.86 -181.57 -44.18 0.435 433 -435 3 68.38 -180.94 -44.26 0.435 434 -436 3 68.69 -180.64 -44.26 0.435 435 -437 3 68.53 -180.47 -46.04 0.435 436 -438 3 68.0 -179.64 -46.59 0.435 437 -439 3 -7.29 -42.58 -5.25 0.435 314 -440 3 -8.04 -43.04 -5.22 0.435 439 -441 3 -9.1 -45.63 -5.38 0.435 440 -442 3 -7.72 -48.2 -5.76 0.435 441 -443 3 -7.1 -50.64 -6.05 0.435 442 -444 3 -7.7 -51.86 -6.05 0.435 443 -445 3 -9.02 -52.67 -5.62 0.435 444 -446 3 -9.47 -53.15 -5.47 0.435 445 -447 3 -10.07 -53.77 -5.41 0.435 446 -448 3 -9.61 -54.83 -5.55 0.435 447 -449 3 -9.46 -55.59 -5.64 0.435 448 -450 3 -10.07 -56.21 -5.65 0.435 449 -451 3 -11.44 -56.36 -5.54 0.435 450 -452 3 -12.35 -57.28 -5.54 0.435 451 -453 3 -12.49 -57.74 -5.57 0.435 452 -454 3 -12.6 -58.26 -5.08 0.435 453 -455 3 -12.59 -59.47 -5.19 0.435 454 -456 3 -12.13 -61.45 -5.36 0.435 455 -457 3 -12.12 -62.66 -5.48 0.435 456 -458 3 -13.18 -63.13 -5.43 0.435 457 -459 3 -13.79 -64.05 -5.46 0.435 458 -460 3 -14.7 -65.88 -5.56 0.435 459 -461 3 -14.54 -67.86 -5.76 0.435 460 -462 3 -14.05 -69.56 -5.67 0.435 461 -463 3 -13.28 -70.32 -5.73 0.435 462 -464 3 -12.67 -71.52 -5.92 0.435 463 -465 3 -12.66 -72.75 -6.03 0.435 464 -466 3 -12.95 -73.97 -6.05 0.435 465 -467 3 -12.96 -75.19 -6.17 0.435 466 -468 3 -13.05 -75.7 -5.67 0.435 467 -469 3 -13.36 -76.3 -5.71 0.435 468 -470 3 -13.35 -76.61 -5.67 0.435 469 -471 3 -13.8 -77.68 -5.73 0.435 470 -472 3 -4.13 -8.82 -3.75 0.11 8 -473 3 -5.04 -9.14 -3.56 0.11 472 -474 3 -5.17 -9.91 -3.62 0.11 473 -475 3 -5.4 -9.38 -4.23 0.65 474 -476 3 -6.03 -9.39 -4.32 0.65 475 -477 3 -7.57 -9.66 -4.59 0.65 476 -478 3 -9.11 -9.96 -4.69 0.65 477 -479 3 -11.24 -10.59 -4.56 0.65 478 -480 3 -13.07 -11.2 -4.52 0.65 479 -481 3 -14.78 -12.25 -4.85 0.65 480 -482 3 -15.69 -13.17 -4.93 0.54 481 -483 3 -16.79 -14.8 -5.44 0.54 482 -484 3 -17.3 -15.82 -6.03 0.54 483 -485 3 -17.49 -16.53 -6.61 0.54 484 -486 3 -18.03 -16.92 -7.43 0.54 485 -487 3 -18.49 -17.35 -7.58 0.54 486 -488 3 -20.18 -16.91 -7.45 0.54 487 -489 3 -22.02 -17.51 -7.64 0.54 488 -490 3 -23.12 -17.93 -7.96 0.54 489 -491 3 -24.34 -18.55 -7.9 0.54 490 -492 3 -25.12 -18.67 -9.82 0.54 491 -493 3 -25.19 -19.23 -10.54 0.54 492 -494 3 -25.88 -18.84 -11.35 0.54 493 -495 3 -27.71 -17.94 -11.09 0.54 494 -496 3 -28.76 -18.42 -10.97 0.54 495 -497 3 -29.45 -18.34 -11.73 0.54 496 -498 3 -31.51 -17.81 -12.39 0.54 497 -499 3 -33.03 -18.12 -12.35 0.54 498 -500 3 -35.21 -17.8 -12.65 0.54 499 -501 3 -37.66 -17.18 -12.52 0.54 500 -502 3 -40.65 -16.07 -13.04 0.54 501 -503 3 -41.66 -16.27 -14.1 0.54 502 -504 3 -43.19 -16.58 -14.07 0.54 503 -505 3 -46.23 -17.82 -13.91 0.54 504 -506 3 -49.43 -18.6 -13.84 0.54 505 -507 3 -52.13 -18.96 -14.91 0.54 506 -508 3 -54.57 -19.28 -14.71 0.54 507 -509 3 -57.24 -18.15 -15.33 0.54 508 -510 3 -60.0 -18.47 -15.2 0.54 509 -511 3 -60.98 -18.7 -15.96 0.54 510 -512 3 -61.98 -18.92 -16.94 0.54 511 -513 3 -63.16 -19.26 -18.08 0.54 512 -514 3 -63.47 -19.57 -18.16 0.54 513 -515 3 -64.11 -20.15 -18.53 0.54 514 -516 3 -64.76 -20.11 -18.92 0.54 515 -517 3 -65.52 -20.87 -18.92 0.54 516 -518 3 -65.65 -21.05 -20.29 0.54 517 -519 3 -65.8 -21.49 -20.48 0.54 518 -520 3 -66.24 -21.66 -21.89 0.54 519 -521 3 -66.09 -21.81 -21.84 0.54 520 -522 3 -65.97 -21.94 -22.24 0.54 521 -523 3 -66.03 -21.87 -22.91 0.54 522 -524 3 -65.79 -22.1 -23.72 0.54 523 -525 3 -65.66 -22.21 -24.11 0.54 524 -526 3 -65.56 -22.92 -24.72 0.54 525 -527 3 -65.5 -23.29 -25.67 0.54 526 -528 3 -65.7 -23.68 -26.37 0.54 527 -529 3 -65.88 -24.11 -26.69 0.54 528 -530 3 -65.95 -24.34 -27.47 0.54 529 -531 3 -66.0 -24.89 -28.04 0.54 530 -532 3 -66.14 -24.75 -29.53 0.54 531 -533 3 -66.17 -25.01 -30.08 0.54 532 -534 3 -66.41 -25.36 -31.07 0.54 533 -535 3 -66.47 -25.93 -31.66 0.54 534 -536 3 -67.13 -26.47 -32.33 0.54 535 -537 3 -67.32 -26.9 -32.73 0.54 536 -538 3 -67.71 -27.11 -33.62 0.54 537 -539 3 -68.11 -27.31 -34.74 0.54 538 -540 3 -68.29 -27.74 -35.07 0.54 539 -541 3 -68.48 -28.16 -35.55 0.54 540 -542 3 -68.82 -29.04 -35.97 0.54 541 -543 3 -65.85 -20.54 -20.83 0.54 517 -544 3 -66.61 -20.69 -20.77 0.54 543 -545 3 -68.01 -20.83 -20.97 0.54 544 -546 3 -69.3 -20.45 -21.72 0.54 545 -547 3 -71.02 -20.27 -21.99 0.54 546 -548 3 -71.91 -20.3 -23.28 0.54 547 -549 3 -73.47 -20.56 -23.68 0.54 548 -550 3 -75.26 -20.3 -24.77 0.54 549 -551 3 -77.1 -20.02 -24.66 0.54 550 -552 3 -78.96 -19.68 -24.82 0.54 551 -553 3 -80.73 -19.46 -25.63 0.54 552 -554 3 -82.71 -20.23 -25.59 0.54 553 -555 3 -84.53 -20.25 -25.42 0.54 554 -556 3 -86.26 -19.76 -25.75 0.54 555 -557 3 -87.79 -18.56 -25.49 0.54 556 -558 3 -89.16 -17.5 -25.26 0.54 557 -559 3 -90.21 -17.06 -25.04 0.54 558 -560 3 -92.19 -16.62 -24.81 0.54 559 -561 3 -93.6 -16.14 -25.02 0.54 560 -562 3 -94.25 -15.81 -25.3 0.54 561 -563 3 -96.38 -14.92 -25.02 0.54 562 -564 3 -24.5 -18.09 -7.92 0.54 491 -565 3 -26.66 -18.39 -8.06 0.54 564 -566 3 -28.03 -19.16 -8.08 0.54 565 -567 3 -29.48 -19.84 -8.99 0.54 566 -568 3 -29.94 -20.9 -9.13 0.54 567 -569 3 -30.25 -21.2 -9.13 0.54 568 -570 3 -31.18 -21.5 -7.63 0.54 569 -571 3 -32.1 -21.52 -7.55 0.54 570 -572 3 -34.69 -21.09 -7.28 0.54 571 -573 3 -38.04 -20.2 -6.96 0.54 572 -574 3 -40.66 -19.74 -6.9 0.54 573 -575 3 -41.28 -20.34 -7.05 0.54 574 -576 3 -43.0 -20.75 -7.53 0.54 575 -577 3 -43.16 -20.9 -7.68 0.54 576 -578 3 -43.07 -21.29 -6.75 0.54 577 -579 3 -43.92 -21.67 -5.95 0.54 578 -580 3 -45.55 -22.49 -5.42 0.54 579 -581 3 -47.53 -23.89 -5.38 0.54 580 -582 3 -49.35 -23.9 -5.14 0.54 581 -583 3 -52.08 -25.15 -5.0 0.54 582 -584 3 -53.9 -26.08 -4.92 0.54 583 -585 3 -55.41 -27.31 -4.77 0.54 584 -586 3 -57.2 -27.98 -4.36 0.54 585 -587 3 -59.45 -28.48 -3.9 0.54 586 -588 3 -61.09 -28.99 -3.41 0.54 587 -589 3 -63.5 -29.65 -2.96 0.54 588 -590 3 -65.78 -29.51 -2.73 0.54 589 -591 3 -69.56 -29.72 -2.18 0.54 590 -592 3 -71.53 -29.6 -1.84 0.54 591 -593 3 -73.15 -29.53 -0.99 0.54 592 -594 3 -73.43 -30.78 -0.87 0.54 593 -595 3 -74.0 -31.43 -0.5 0.54 594 -596 3 -76.57 -30.69 -0.12 0.54 595 -597 3 -79.45 -31.49 0.14 0.54 596 -598 3 -81.74 -31.97 0.31 0.54 597 -599 3 -84.31 -32.46 0.65 0.54 598 -600 3 -85.67 -33.25 0.84 0.54 599 -601 3 -87.01 -33.45 1.25 0.54 600 -602 3 -89.27 -33.94 1.64 0.54 601 -603 3 -90.76 -34.9 1.98 0.54 602 -604 3 -92.58 -36.14 2.12 0.54 603 -605 3 -93.74 -36.8 2.6 0.54 604 -606 3 -96.02 -37.9 2.78 0.54 605 -607 3 -96.78 -38.67 2.78 0.54 606 -608 3 -30.41 -22.58 -9.26 0.54 569 -609 3 -31.31 -24.71 -9.38 0.54 608 -610 3 -32.21 -26.85 -9.5 0.54 609 -611 3 -32.21 -28.06 -9.63 0.54 610 -612 3 -32.23 -28.94 -10.01 0.54 611 -613 3 -32.43 -29.97 -10.55 0.54 612 -614 3 -33.03 -31.18 -10.68 0.54 613 -615 3 -33.72 -32.01 -11.69 0.54 614 -616 3 -34.8 -32.47 -11.71 0.54 615 -617 3 -35.85 -33.55 -11.71 0.54 616 -618 3 -36.47 -34.77 -11.77 0.54 617 -619 3 -36.15 -36.29 -11.95 0.54 618 -620 3 -36.42 -36.55 -11.96 0.54 619 -621 3 -36.57 -37.32 -10.35 0.65 620 -622 3 -36.91 -37.59 -10.73 0.65 621 -623 3 -37.01 -37.49 -11.77 0.65 622 -624 3 -37.15 -37.96 -10.06 0.65 623 -625 3 -37.58 -38.45 -9.76 0.65 624 -626 3 -38.43 -38.82 -9.11 0.65 625 -627 3 -38.88 -39.29 -9.04 0.65 626 -628 3 -39.78 -39.01 -8.85 0.65 627 -629 3 -40.55 -38.86 -8.77 0.54 628 -630 3 -41.77 -38.87 -8.65 0.54 629 -631 3 -42.51 -39.64 -8.51 0.54 630 -632 3 -43.42 -40.58 -8.45 0.54 631 -633 3 -43.39 -42.11 -8.45 0.54 632 -634 3 -43.69 -42.74 -8.4 0.54 633 -635 3 -44.43 -43.52 -8.19 0.54 634 -636 3 -45.94 -43.85 -8.0 0.54 635 -637 3 -47.62 -43.72 -7.76 0.54 636 -638 3 -48.63 -44.23 -7.27 0.54 637 -639 3 -49.35 -45.04 -6.76 0.54 638 -640 3 -50.21 -45.4 -6.26 0.54 639 -641 3 -50.79 -46.05 -5.96 0.54 640 -642 3 -51.85 -47.74 -5.94 0.54 641 -643 3 -53.06 -48.36 -5.9 0.54 642 -644 3 -54.11 -49.45 -5.69 0.54 643 -645 3 -55.62 -50.38 -5.63 0.54 644 -646 3 -56.5 -51.33 -5.34 0.54 645 -647 3 -57.4 -51.64 -5.21 0.54 646 -648 3 -59.23 -50.75 -4.95 0.54 647 -649 3 -59.97 -51.54 -4.75 0.54 648 -650 3 -61.03 -52.62 -4.67 0.54 649 -651 3 -62.84 -53.27 -4.34 0.54 650 -652 3 -63.74 -54.5 -4.3 0.54 651 -653 3 -64.65 -55.42 -4.31 0.54 652 -654 3 -65.71 -55.88 -4.26 0.54 653 -655 3 -67.38 -55.75 -4.09 0.54 654 -656 3 -69.97 -56.54 -3.92 0.54 655 -657 3 -71.02 -58.52 -4.02 0.54 656 -658 3 -71.77 -59.29 -3.96 0.54 657 -659 3 -71.92 -60.98 -4.11 0.54 658 -660 3 -72.07 -62.04 -4.19 0.54 659 -661 3 -72.51 -62.82 -4.0 0.54 660 -662 3 -74.79 -62.7 -3.7 0.54 661 -663 3 -76.29 -63.03 -3.52 0.54 662 -664 3 -76.89 -63.65 -3.38 0.54 663 -665 3 -77.75 -64.63 -2.87 0.54 664 -666 3 -78.35 -65.25 -2.79 0.54 665 -667 3 -79.26 -66.17 -2.79 0.54 666 -668 3 -80.78 -66.49 -2.61 0.54 667 -669 3 -81.84 -67.57 -2.63 0.54 668 -670 3 -82.9 -68.64 -2.63 0.54 669 -671 3 -85.03 -68.97 -2.46 0.54 670 -672 3 -86.1 -70.04 -2.47 0.54 671 -673 3 -87.15 -70.52 -2.34 0.54 672 -674 3 -87.87 -71.62 -2.08 0.54 673 -675 3 -88.17 -71.94 -1.93 0.54 674 -676 3 -88.62 -72.4 -1.93 0.54 675 -677 3 -89.21 -73.02 -1.87 0.54 676 -678 3 -90.59 -73.18 -1.75 0.54 677 -679 3 -92.27 -73.35 -1.62 0.54 678 -680 3 -93.03 -74.13 -1.63 0.54 679 -681 3 -93.63 -74.73 -1.63 0.54 680 -682 3 -94.37 -75.52 -1.49 0.54 681 -683 3 -94.98 -76.74 -1.47 0.54 682 -684 3 -95.28 -77.66 -1.53 0.54 683 -685 3 -95.57 -78.28 -1.49 0.54 684 -686 3 -96.18 -79.2 -1.53 0.54 685 -687 3 -96.63 -79.96 -1.56 0.54 686 -688 3 -98.31 -79.81 -1.39 0.54 687 -689 3 -99.52 -79.83 -1.28 0.54 688 -690 3 -100.5 -80.4 -0.26 0.65 689 -691 3 -101.37 -81.06 0.2 0.65 690 -692 3 -101.93 -81.71 0.64 0.65 691 -693 3 -104.5 -82.22 1.12 0.65 692 -694 3 -107.38 -82.71 1.34 0.65 693 -695 3 -108.58 -83.33 1.48 0.65 694 -696 3 -110.26 -84.42 1.53 0.435 695 -697 3 -112.24 -84.59 1.69 0.435 696 -698 3 -113.74 -84.92 1.94 0.435 697 -699 3 -115.1 -86.3 2.09 0.435 698 -700 3 -115.4 -86.62 2.09 0.65 699 -701 3 -116.47 -87.09 2.14 0.65 700 -702 3 -117.67 -88.32 2.2 0.65 701 -703 3 -118.11 -89.99 2.08 0.65 702 -704 3 -117.51 -90.91 1.93 0.65 703 -705 3 -116.44 -91.96 1.81 0.65 704 -706 3 -116.38 -93.84 2.08 0.65 705 -707 3 -116.38 -94.75 2.06 0.65 706 -708 3 -116.66 -95.39 2.17 0.65 707 -709 3 -116.82 -95.84 2.22 0.65 708 -710 3 -117.38 -95.88 2.65 0.65 709 -711 3 -117.21 -97.57 2.55 0.65 710 -712 3 -117.31 -98.69 3.06 0.65 711 -713 3 -117.87 -99.35 3.56 0.65 712 -714 3 -118.31 -99.82 3.64 0.65 713 -715 3 -119.48 -99.89 4.34 0.65 714 -716 3 -119.79 -100.19 4.34 0.65 715 -717 3 -120.37 -100.84 4.64 0.65 716 -718 3 -121.26 -101.77 4.78 0.65 717 -719 3 -121.57 -102.09 4.78 0.65 718 -720 3 -122.02 -102.54 4.78 0.65 719 -721 3 -123.54 -102.26 5.02 0.65 720 -722 3 -124.3 -102.42 5.07 0.65 721 -723 3 -124.59 -102.74 5.14 0.65 722 -724 3 -124.74 -103.2 5.11 0.65 723 -725 3 -36.35 -37.31 -10.9 0.54 620 -726 3 -35.82 -37.83 -10.25 0.54 725 -727 3 -35.54 -38.11 -10.45 0.54 726 -728 3 -35.25 -38.41 -9.06 0.54 727 -729 3 -34.88 -38.78 -8.38 0.54 728 -730 3 -34.45 -39.82 -7.17 0.54 729 -731 3 -34.43 -40.75 -7.11 0.54 730 -732 3 -34.99 -42.63 -6.71 0.54 731 -733 3 -35.37 -44.07 -6.05 0.54 732 -734 3 -35.66 -44.7 -5.94 0.54 733 -735 3 -35.61 -45.35 -5.55 0.54 734 -736 3 -35.72 -46.45 -5.27 0.54 735 -737 3 -36.02 -47.07 -5.22 0.54 736 -738 3 -36.42 -47.6 -4.63 0.54 737 -739 3 -36.87 -48.68 -4.55 0.54 738 -740 3 -37.46 -49.3 -4.4 0.54 739 -741 3 -37.74 -49.94 -4.22 0.54 740 -742 3 -38.08 -51.13 -3.09 0.54 741 -743 3 -37.89 -52.21 -2.84 0.54 742 -744 3 -38.14 -53.2 -2.31 0.54 743 -745 3 -38.38 -54.17 -1.7 0.54 744 -746 3 -38.36 -55.11 -1.64 0.54 745 -747 3 -38.5 -55.57 -1.52 0.54 746 -748 3 -38.49 -55.89 -1.4 0.54 747 -749 3 -38.75 -56.54 -1.06 0.54 748 -750 3 -39.46 -57.36 -0.54 0.54 749 -751 3 -40.96 -57.7 -0.14 0.54 750 -752 3 -42.01 -57.87 0.0 0.54 751 -753 3 -42.45 -58.35 0.23 0.54 752 -754 3 -43.05 -58.98 0.29 0.54 753 -755 3 6.7 -3.75 -5.33 0.865 1 -756 3 7.16 -4.21 -5.41 0.865 755 -757 3 8.22 -4.04 -5.49 0.865 756 -758 3 9.44 -4.63 -5.66 0.865 757 -759 3 10.51 -5.08 -5.81 0.865 758 -760 3 11.58 -6.45 -6.04 0.865 759 -761 3 12.35 -7.2 -6.18 0.54 760 -762 3 14.62 -7.02 -6.37 0.54 761 -763 3 16.16 -7.01 -6.52 0.54 762 -764 3 16.73 -7.29 -5.23 0.54 763 -765 3 17.34 -7.28 -5.29 0.54 764 -766 3 18.42 -6.85 -3.46 0.54 765 -767 3 19.63 -5.01 -3.39 0.54 766 -768 3 20.89 -4.13 -4.55 0.54 767 -769 3 22.56 -3.66 -4.66 0.54 768 -770 3 23.48 -3.35 -4.72 0.54 769 -771 3 24.39 -2.42 -4.71 0.54 770 -772 3 25.0 -1.82 -4.71 0.54 771 -773 3 27.48 -1.23 -6.0 0.54 772 -774 3 29.0 -1.51 -6.17 0.54 773 -775 3 29.91 -0.59 -6.17 0.54 774 -776 3 31.13 0.63 -6.16 0.54 775 -777 3 32.73 1.79 -6.95 0.54 776 -778 3 34.85 3.33 -7.0 0.54 777 -779 3 36.38 4.25 -7.05 0.54 778 -780 3 39.25 5.95 -7.15 0.54 779 -781 3 41.7 6.88 -7.28 0.54 780 -782 3 44.17 7.47 -8.52 0.54 781 -783 3 45.54 7.95 -8.75 0.54 782 -784 3 46.67 8.34 -7.98 0.54 783 -785 3 48.22 8.32 -7.82 0.54 784 -786 3 49.47 8.61 -7.53 0.54 785 -787 3 50.45 8.24 -6.98 0.54 786 -788 3 52.97 7.87 -6.34 0.54 787 -789 3 54.85 8.43 -5.78 0.54 788 -790 3 56.74 8.68 -5.18 0.54 789 -791 3 58.14 9.43 -5.0 0.54 790 -792 3 59.39 9.7 -4.63 0.54 791 -793 3 60.79 10.44 -4.32 0.54 792 -794 3 62.66 10.41 -4.04 0.54 793 -795 3 65.9 10.85 -3.76 0.54 794 -796 3 18.25 -7.88 -5.43 0.54 765 -797 3 19.2 -8.81 -5.31 0.54 796 -798 3 19.5 -10.04 -5.37 0.54 797 -799 3 19.68 -10.81 -5.32 0.54 798 -800 3 21.72 -13.13 -5.06 0.54 799 -801 3 23.56 -14.94 -5.4 0.54 800 -802 3 24.81 -16.17 -5.41 0.54 801 -803 3 26.03 -18.3 -5.59 0.54 802 -804 3 26.38 -18.96 -5.23 0.54 803 -805 3 26.56 -19.43 -5.06 0.54 804 -806 3 26.58 -20.67 -5.03 0.54 805 -807 3 26.88 -21.57 -5.14 0.54 806 -808 3 27.2 -22.79 -5.22 0.54 807 -809 3 27.99 -23.57 -5.13 0.54 808 -810 3 29.55 -24.49 -4.99 0.54 809 -811 3 31.08 -24.2 -5.03 0.54 810 -812 3 33.23 -23.6 -4.79 0.54 811 -813 3 34.92 -24.35 -4.94 0.54 812 -814 3 36.3 -25.12 -4.99 0.54 813 -815 3 37.35 -25.55 -5.28 0.54 814 -816 3 38.39 -25.36 -5.66 0.54 815 -817 3 39.69 -25.1 -6.6 0.54 816 -818 3 41.21 -25.7 -6.8 0.54 817 -819 3 41.11 -26.5 -8.07 0.435 818 -820 3 41.28 -26.98 -7.9 0.435 819 -821 3 41.37 -27.36 -8.7 0.435 820 -822 3 41.43 -27.72 -9.65 0.435 821 -823 3 41.51 -28.11 -10.53 0.435 822 -824 3 41.7 -28.58 -11.96 0.435 823 -825 3 43.52 -30.38 -12.38 0.435 824 -826 3 44.59 -31.74 -12.61 0.435 825 -827 3 45.81 -34.47 -13.0 0.435 826 -828 3 48.56 -36.26 -13.42 0.435 827 -829 3 49.79 -38.08 -13.71 0.435 828 -830 3 50.69 -39.29 -13.91 0.435 829 -831 3 50.1 -40.51 -13.97 0.435 830 -832 3 47.97 -41.44 -13.87 0.435 831 -833 3 47.06 -42.66 -13.91 0.435 832 -834 3 47.67 -44.48 -14.14 0.435 833 -835 3 49.35 -44.92 -14.33 0.435 834 -836 3 50.37 -45.02 -14.96 0.435 835 -837 3 50.05 -46.22 -15.28 0.435 836 -838 3 49.9 -47.27 -15.45 0.435 837 -839 3 49.75 -49.25 -15.62 0.435 838 -840 3 49.75 -50.47 -15.74 0.435 839 -841 3 49.59 -51.52 -15.98 0.435 840 -842 3 49.53 -52.98 -16.73 0.435 841 -843 3 49.98 -54.33 -17.05 0.435 842 -844 3 50.87 -55.81 -17.58 0.435 843 -845 3 51.79 -57.63 -17.85 0.435 844 -846 3 52.1 -59.75 -18.15 0.435 845 -847 3 52.26 -62.03 -18.38 0.435 846 -848 3 52.85 -62.92 -18.67 0.435 847 -849 3 53.77 -63.52 -18.91 0.435 848 -850 3 54.58 -65.83 -20.41 0.435 849 -851 3 54.57 -67.64 -20.66 0.435 850 -852 3 54.7 -69.58 -21.25 0.435 851 -853 3 54.93 -71.32 -22.26 0.435 852 -854 3 56.08 -72.45 -23.31 0.435 853 -855 3 57.4 -74.07 -24.12 0.435 854 -856 3 58.83 -75.75 -25.63 0.435 855 -857 3 61.87 -78.15 -26.21 0.435 856 -858 3 63.91 -79.24 -27.57 0.435 857 -859 3 66.44 -81.15 -28.52 0.435 858 -860 3 67.97 -82.65 -28.87 0.435 859 -861 3 68.9 -84.76 -29.17 0.435 860 -862 3 70.27 -86.12 -29.43 0.435 861 -863 3 72.7 -86.41 -29.68 0.435 862 -864 3 74.37 -87.44 -30.09 0.435 863 -865 3 76.32 -89.68 -30.79 0.435 864 -866 3 77.64 -91.58 -31.71 0.435 865 -867 3 77.81 -92.34 -33.31 0.435 866 -868 3 78.38 -93.21 -33.98 0.435 867 -869 3 79.18 -94.29 -35.44 0.435 868 -870 3 80.02 -95.42 -36.38 0.435 869 -871 3 79.7 -97.22 -36.84 0.435 870 -872 3 79.68 -100.23 -37.49 0.435 871 -873 3 81.27 -104.22 -39.09 0.435 872 -874 3 82.94 -106.47 -39.54 0.435 873 -875 3 84.3 -108.12 -39.98 0.435 874 -876 3 84.22 -110.15 -41.09 0.435 875 -877 3 83.92 -111.99 -41.3 0.435 876 -878 3 83.01 -114.72 -41.57 0.435 877 -879 3 83.16 -115.79 -41.69 0.435 878 -880 3 84.18 -117.08 -42.58 0.435 879 -881 3 85.78 -118.66 -43.64 0.435 880 -882 3 86.0 -120.08 -44.85 0.435 881 -883 3 86.26 -120.62 -45.54 0.435 882 -884 3 87.14 -121.81 -45.96 0.435 883 -885 3 88.82 -122.26 -46.16 0.435 884 -886 3 89.68 -124.0 -47.16 0.435 885 -887 3 89.84 -126.28 -47.4 0.435 886 -888 3 91.66 -128.08 -47.83 0.435 887 -889 3 93.26 -128.44 -48.84 0.435 888 -890 3 94.76 -128.1 -49.18 0.435 889 -891 3 95.21 -128.56 -49.26 0.435 890 -892 3 41.61 -25.79 -7.52 0.54 818 -893 3 44.26 -26.59 -8.82 0.54 892 -894 3 46.54 -26.4 -9.01 0.54 893 -895 3 48.66 -26.67 -9.47 0.54 894 -896 3 50.33 -27.72 -9.72 0.54 895 -897 3 52.09 -28.24 -10.61 0.54 896 -898 3 54.16 -29.07 -11.64 0.54 897 -899 3 55.53 -29.2 -11.78 0.54 898 -900 3 56.54 -30.2 -10.99 0.54 899 -901 3 58.49 -30.93 -9.81 0.54 900 -902 3 60.79 -32.89 -10.21 0.54 901 -903 3 63.02 -34.5 -9.37 0.54 902 -904 3 65.02 -35.86 -9.6 0.54 903 -905 3 66.69 -37.83 -9.95 0.54 904 -906 3 67.76 -39.18 -10.18 0.54 905 -907 3 69.76 -41.14 -10.55 0.54 906 -908 3 71.64 -42.09 -10.14 0.54 907 -909 3 72.86 -43.0 -10.35 0.54 908 -910 3 73.48 -43.9 -10.49 0.54 909 -911 4 -2.36 9.28 -0.57 4.11 1 -912 4 -2.99 13.54 -0.1 3.14 911 -913 4 -3.77 16.72 0.27 2.49 912 -914 4 -4.07 19.45 0.57 1.73 913 -915 4 -4.39 21.59 0.8 1.515 914 -916 4 -5.0 23.4 1.12 1.405 915 -917 4 -5.16 25.07 1.3 1.405 916 -918 4 -5.16 26.28 1.42 1.405 917 -919 4 -5.46 27.8 1.66 1.405 918 -920 4 -5.05 29.49 3.08 1.73 919 -921 4 -4.75 31.94 3.29 1.73 920 -922 4 -5.06 34.06 3.52 1.73 921 -923 4 -5.52 36.34 3.79 1.73 922 -924 4 -5.87 38.81 3.61 1.405 923 -925 4 -5.8 40.87 2.97 1.405 924 -926 4 -5.82 42.7 3.08 1.19 925 -927 4 -5.37 44.38 3.2 1.19 926 -928 4 -5.22 46.05 3.35 1.19 927 -929 4 -4.31 47.89 3.45 1.19 928 -930 4 -3.71 50.02 3.6 1.19 929 -931 4 -2.65 51.7 3.67 1.19 930 -932 4 -1.75 54.45 3.84 1.19 931 -933 4 -1.45 55.98 3.97 1.19 932 -934 4 -1.43 57.49 2.68 1.19 933 -935 4 -1.34 58.92 3.72 1.19 934 -936 4 -1.66 60.43 3.97 1.19 935 -937 4 -1.36 61.35 3.97 1.19 936 -938 4 -2.03 62.01 3.48 1.19 937 -939 4 -2.42 63.01 2.71 1.19 938 -940 4 -2.68 62.9 3.33 0.54 939 -941 4 -3.28 62.89 3.38 0.54 940 -942 4 -3.26 62.88 3.53 0.54 941 -943 4 -3.2 62.81 4.27 0.54 942 -944 4 -3.18 62.79 4.49 0.54 943 -945 4 -3.56 62.84 5.44 0.54 944 -946 4 -3.5 62.49 6.01 0.54 945 -947 4 -3.44 62.43 6.67 0.54 946 -948 4 -3.33 62.31 7.86 0.54 947 -949 4 -3.13 62.11 8.28 0.54 948 -950 4 -3.12 61.49 8.37 0.54 949 -951 4 -3.11 60.57 8.28 0.54 950 -952 4 -3.24 59.47 8.56 0.54 951 -953 4 -3.23 58.56 8.47 0.54 952 -954 4 -3.22 57.95 8.48 0.54 953 -955 4 -3.81 57.02 8.53 0.54 954 -956 4 -4.11 56.71 8.6 0.54 955 -957 4 -5.02 57.0 8.79 0.54 956 -958 4 -5.55 57.5 9.87 0.54 957 -959 4 -6.0 58.57 10.01 0.65 958 -960 4 -6.76 59.01 10.12 0.65 959 -961 4 -7.3 58.93 10.92 0.65 960 -962 4 -8.11 58.83 10.45 0.65 961 -963 4 -8.11 60.05 8.99 0.65 962 -964 4 -7.92 60.48 7.8 0.65 963 -965 4 -9.09 61.64 6.89 0.65 964 -966 4 -9.86 62.4 6.89 0.65 965 -967 4 -11.04 63.28 5.79 0.65 966 -968 4 -12.6 63.9 5.7 0.65 967 -969 4 -14.08 64.45 4.69 0.65 968 -970 4 -14.86 65.22 4.75 0.65 969 -971 4 -16.53 66.26 5.01 0.65 970 -972 4 -17.44 67.16 5.18 0.65 971 -973 4 -17.75 67.47 5.24 0.65 972 -974 4 -18.66 67.76 5.35 0.65 973 -975 4 -19.88 68.37 5.52 0.65 974 -976 4 -21.15 69.63 5.15 0.65 975 -977 4 -21.96 71.62 5.12 0.65 976 -978 4 -22.38 72.05 3.84 0.65 977 -979 4 -22.04 73.24 2.8 0.65 978 -980 4 -22.69 73.88 2.38 0.435 979 -981 4 -23.76 74.94 2.66 0.435 980 -982 4 -23.91 76.0 2.78 0.54 981 -983 4 -24.22 77.83 2.98 0.54 982 -984 4 -24.36 79.48 3.24 0.54 983 -985 4 -24.22 80.86 3.28 0.54 984 -986 4 -24.13 81.98 2.78 0.54 985 -987 4 -24.25 83.31 1.79 0.54 986 -988 4 -23.93 84.83 0.32 0.54 987 -989 4 -24.03 85.56 -0.72 0.54 988 -990 4 -23.99 87.04 -1.8 0.54 989 -991 4 -24.53 88.18 -2.39 0.54 990 -992 4 -25.3 89.55 -4.0 0.54 991 -993 4 -25.85 91.31 -4.69 0.54 992 -994 4 -26.54 93.82 -5.29 0.54 993 -995 4 -26.94 96.94 -5.77 0.54 994 -996 4 -26.5 99.86 -5.68 0.54 995 -997 4 -25.4 101.2 -6.86 0.54 996 -998 4 -24.5 102.74 -6.87 0.54 997 -999 4 -24.36 105.01 -6.66 0.54 998 -1000 4 -23.75 105.63 -6.73 0.54 999 -1001 4 -22.53 105.95 -6.81 0.54 1000 -1002 4 -21.96 106.6 -7.18 0.54 1001 -1003 4 -21.07 107.54 -7.4 0.54 1002 -1004 4 -20.88 107.97 -8.66 0.54 1003 -1005 4 -20.98 108.68 -9.57 0.54 1004 -1006 4 -21.55 110.15 -10.59 0.54 1005 -1007 4 -22.0 110.61 -12.0 0.54 1006 -1008 4 -22.54 110.53 -12.87 0.54 1007 -1009 4 -23.53 110.0 -13.74 0.54 1008 -1010 4 -24.05 109.62 -14.48 0.54 1009 -1011 4 -24.55 108.9 -15.04 0.54 1010 -1012 4 -24.91 108.66 -15.7 0.54 1011 -1013 4 -25.63 108.16 -16.9 0.54 1012 -1014 4 -27.38 107.78 -17.6 0.54 1013 -1015 4 -29.09 107.35 -18.02 0.54 1014 -1016 4 -30.38 106.79 -18.63 0.54 1015 -1017 4 -31.99 105.66 -19.65 0.54 1016 -1018 4 -33.92 105.15 -20.66 0.54 1017 -1019 4 -35.31 105.02 -20.85 0.54 1018 -1020 4 -36.26 104.14 -21.23 0.54 1019 -1021 4 -37.38 103.73 -21.84 0.54 1020 -1022 4 -38.82 103.03 -22.53 0.54 1021 -1023 4 -39.89 102.56 -22.55 0.54 1022 -1024 4 -21.12 73.85 2.77 0.435 979 -1025 4 -20.74 75.31 2.04 0.435 1024 -1026 4 -21.43 75.38 1.21 0.54 1025 -1027 4 -22.5 76.74 1.44 0.54 1026 -1028 4 -24.34 77.95 1.72 0.54 1027 -1029 4 -25.85 78.23 1.89 0.54 1028 -1030 4 -27.46 79.21 1.31 0.54 1029 -1031 4 -29.09 80.52 0.37 0.54 1030 -1032 4 -30.73 81.25 -0.68 0.54 1031 -1033 4 -31.11 81.93 -1.33 0.54 1032 -1034 4 -32.04 82.54 -1.34 0.54 1033 -1035 4 -32.62 83.11 -2.51 0.54 1034 -1036 4 -33.03 83.23 -3.67 0.54 1035 -1037 4 -33.66 83.85 -3.79 0.54 1036 -1038 4 -34.42 84.31 -5.41 0.54 1037 -1039 4 -34.98 84.86 -4.7 0.54 1038 -1040 4 -35.5 85.38 -5.28 0.54 1039 -1041 4 -36.26 86.44 -6.7 0.54 1040 -1042 4 -36.87 87.35 -6.55 0.54 1041 -1043 4 -38.48 88.04 -7.4 0.54 1042 -1044 4 -40.59 88.91 -8.48 0.54 1043 -1045 4 -42.74 89.84 -8.4 0.54 1044 -1046 4 -44.31 90.47 -8.73 0.54 1045 -1047 4 -45.65 92.4 -9.63 0.54 1046 -1048 4 -46.08 93.44 -10.85 0.54 1047 -1049 4 -2.27 64.69 2.78 1.19 939 -1050 4 -1.98 65.92 2.81 1.19 1049 -1051 4 -1.53 66.99 2.87 1.19 1050 -1052 4 -0.62 69.11 3.05 1.19 1051 -1053 4 -0.92 70.01 3.25 1.19 1052 -1054 4 -1.19 71.49 3.88 1.19 1053 -1055 4 -2.26 72.5 4.08 1.19 1054 -1056 4 -1.69 72.84 5.34 0.54 1055 -1057 4 -1.53 73.28 5.59 0.54 1056 -1058 4 -1.03 73.39 5.93 0.54 1057 -1059 4 -0.89 74.16 5.91 0.54 1058 -1060 4 -0.13 75.84 6.01 0.54 1059 -1061 4 0.46 77.68 6.13 0.54 1060 -1062 4 0.91 78.75 6.19 0.54 1061 -1063 4 0.02 79.93 6.69 0.54 1062 -1064 4 -0.87 80.82 6.94 0.54 1063 -1065 4 -1.18 83.25 7.21 0.54 1064 -1066 4 -1.14 84.41 7.93 0.54 1065 -1067 4 -1.51 85.09 7.27 0.54 1066 -1068 4 -1.52 85.99 7.43 0.54 1067 -1069 4 -1.73 86.82 6.85 0.54 1068 -1070 4 -1.93 87.64 6.35 0.54 1069 -1071 4 -2.29 88.0 5.81 0.54 1070 -1072 4 -2.37 88.68 5.06 0.54 1071 -1073 4 -2.92 89.83 4.23 0.54 1072 -1074 4 -2.86 90.69 3.33 0.54 1073 -1075 4 -3.25 91.68 2.62 0.54 1074 -1076 4 -3.31 92.36 2.02 0.54 1075 -1077 4 -4.27 94.22 1.77 0.54 1076 -1078 4 -4.28 95.44 1.89 0.54 1077 -1079 4 -4.44 96.5 1.92 0.54 1078 -1080 4 -4.95 97.32 1.45 0.54 1079 -1081 4 -4.83 98.72 1.35 0.54 1080 -1082 4 -5.2 99.99 0.83 0.54 1081 -1083 4 -5.57 101.57 0.34 0.54 1082 -1084 4 -5.51 102.44 -0.64 0.54 1083 -1085 4 -6.15 102.16 -2.57 0.54 1084 -1086 4 -6.45 102.17 -2.54 0.54 1085 -1087 4 -7.51 102.61 -2.4 0.54 1086 -1088 4 -7.83 103.82 -2.26 0.54 1087 -1089 4 -7.82 104.73 -2.09 0.54 1088 -1090 4 -7.83 105.65 -1.99 0.54 1089 -1091 4 -8.17 106.6 -2.4 0.54 1090 -1092 4 -8.11 107.45 -3.15 0.54 1091 -1093 4 -8.11 108.07 -4.84 0.54 1092 -1094 4 -8.42 108.38 -6.45 0.54 1093 -1095 4 -9.37 109.01 -6.67 0.54 1094 -1096 4 -9.37 110.83 -6.43 0.54 1095 -1097 4 -9.28 112.27 -6.96 0.54 1096 -1098 4 -9.84 112.83 -7.99 0.54 1097 -1099 4 -10.31 113.3 -8.13 0.54 1098 -1100 4 -11.46 115.96 -8.6 0.54 1099 -1101 4 -11.75 118.36 -9.69 0.54 1100 -1102 4 -11.68 120.11 -10.37 0.54 1101 -1103 4 -11.17 122.05 -11.21 0.54 1102 -1104 4 -12.02 123.2 -12.0 0.54 1103 -1105 4 -13.35 125.12 -12.89 0.54 1104 -1106 4 -12.85 126.46 -13.87 0.54 1105 -1107 4 -12.1 127.24 -14.02 0.54 1106 -1108 4 -10.88 129.37 -13.91 0.54 1107 -1109 4 -10.66 131.88 -14.45 0.54 1108 -1110 4 -10.24 134.8 -14.5 0.54 1109 -1111 4 -9.71 136.09 -15.19 0.54 1110 -1112 4 -9.21 137.74 -16.28 0.54 1111 -1113 4 -8.85 139.52 -17.12 0.54 1112 -1114 4 -8.37 140.88 -18.47 0.54 1113 -1115 4 -8.15 142.17 -19.2 0.54 1114 -1116 4 -7.47 143.03 -20.17 0.54 1115 -1117 4 -6.98 143.76 -21.34 0.54 1116 -1118 4 -6.3 144.62 -22.15 0.54 1117 -1119 4 -5.65 145.49 -23.34 0.54 1118 -1120 4 -4.55 146.83 -24.52 0.54 1119 -1121 4 -4.03 147.56 -25.56 0.54 1120 -1122 4 -3.49 148.24 -26.29 0.54 1121 -1123 4 -2.86 149.13 -27.56 0.54 1122 -1124 4 -1.65 150.97 -27.55 0.54 1123 -1125 4 -1.2 152.35 -29.06 0.54 1124 -1126 4 0.46 154.05 -29.11 0.54 1125 -1127 4 -2.56 72.54 4.11 1.19 1055 -1128 4 -4.2 74.16 4.79 1.08 1127 -1129 4 -5.12 75.06 5.04 1.08 1128 -1130 4 -5.32 75.9 5.51 0.54 1129 -1131 4 -4.55 76.67 5.52 0.54 1130 -1132 4 -2.73 76.99 5.39 0.54 1131 -1133 4 0.29 77.02 5.11 0.54 1132 -1134 4 2.09 76.76 4.54 0.54 1133 -1135 4 4.1 76.3 4.61 0.54 1134 -1136 4 6.44 75.81 4.88 0.54 1135 -1137 4 9.03 74.46 4.59 0.54 1136 -1138 4 11.15 73.57 4.3 0.54 1137 -1139 4 12.56 73.4 4.45 0.54 1138 -1140 4 14.72 72.48 4.46 0.54 1139 -1141 4 16.24 71.58 4.24 0.54 1140 -1142 4 17.65 70.18 4.35 0.54 1141 -1143 4 20.1 68.37 4.02 0.54 1142 -1144 4 21.94 68.38 4.0 0.54 1143 -1145 4 23.51 68.34 4.38 0.54 1144 -1146 4 24.77 68.32 4.65 0.54 1145 -1147 4 26.58 68.03 4.45 0.54 1146 -1148 4 28.73 66.83 4.21 0.54 1147 -1149 4 31.16 67.15 4.02 0.54 1148 -1150 4 34.23 66.84 4.01 0.54 1149 -1151 4 37.46 65.47 3.95 0.54 1150 -1152 4 39.76 65.63 3.9 0.54 1151 -1153 4 42.35 65.8 3.76 0.54 1152 -1154 4 45.1 66.44 3.64 0.54 1153 -1155 4 46.65 66.11 3.77 0.54 1154 -1156 4 49.09 64.29 3.45 0.54 1155 -1157 4 51.69 62.65 3.05 0.54 1156 -1158 4 53.37 63.12 2.94 0.54 1157 -1159 4 55.18 64.05 2.86 0.54 1158 -1160 4 62.55 62.92 2.23 0.54 1159 -1161 4 66.81 62.05 1.75 0.54 1160 -1162 4 69.42 61.89 1.79 0.54 1161 -1163 4 70.71 61.85 2.34 0.54 1162 -1164 4 71.95 60.62 2.34 0.54 1163 -1165 4 74.38 60.03 2.06 0.54 1164 -1166 4 76.51 60.05 1.87 0.54 1165 -1167 4 76.74 59.83 2.57 0.54 1166 -1168 4 78.33 59.47 3.22 0.54 1167 -1169 4 79.02 58.79 3.85 0.54 1168 -1170 4 79.24 58.56 4.57 0.54 1169 -1171 4 79.18 57.1 5.41 0.54 1170 -1172 4 78.9 56.15 5.64 0.54 1171 -1173 4 78.68 55.45 6.5 0.54 1172 -1174 4 78.42 55.1 6.94 0.54 1173 -1175 4 78.14 54.47 7.21 0.54 1174 -1176 4 -6.09 76.33 6.23 1.08 1129 -1177 4 -6.97 77.79 6.92 1.08 1176 -1178 4 -6.79 78.22 7.24 1.08 1177 -1179 4 -6.31 79.27 7.52 1.08 1178 -1180 4 -5.77 79.63 8.49 1.08 1179 -1181 4 -5.31 80.69 8.77 1.08 1180 -1182 4 -4.24 82.37 8.85 1.08 1181 -1183 4 -3.78 82.82 8.93 1.08 1182 -1184 4 -3.8 83.87 9.55 1.08 1183 -1185 4 -3.8 86.0 9.76 1.08 1184 -1186 4 -4.21 87.32 8.86 1.08 1185 -1187 4 -4.67 88.38 9.02 1.08 1186 -1188 4 -5.57 89.89 7.73 1.405 1187 -1189 4 -6.18 91.4 7.93 1.405 1188 -1190 4 -6.29 92.12 8.47 1.3 1189 -1191 4 -6.35 92.48 8.73 1.3 1190 -1192 4 -5.43 91.69 7.22 0.11 1191 -1193 4 -4.97 92.16 7.3 0.435 1192 -1194 4 -4.52 93.52 7.4 0.435 1193 -1195 4 -3.75 95.19 7.49 0.435 1194 -1196 4 -2.85 96.11 7.56 0.435 1195 -1197 4 -1.34 96.74 7.48 0.435 1196 -1198 4 -0.13 96.77 7.22 0.435 1197 -1199 4 1.04 97.42 6.81 0.435 1198 -1200 4 2.99 98.23 6.32 0.435 1199 -1201 4 4.03 99.03 6.08 0.435 1200 -1202 4 5.07 100.41 5.96 0.435 1201 -1203 4 6.42 101.2 5.77 0.435 1202 -1204 4 8.85 102.46 5.52 0.435 1203 -1205 4 9.2 103.02 4.48 0.435 1204 -1206 4 10.99 103.99 3.95 0.435 1205 -1207 4 12.96 105.69 3.94 0.435 1206 -1208 4 15.08 107.22 3.81 0.435 1207 -1209 4 16.37 108.09 2.95 0.435 1208 -1210 4 18.6 109.22 2.32 0.435 1209 -1211 4 21.77 110.34 1.91 0.435 1210 -1212 4 23.85 111.03 1.18 0.435 1211 -1213 4 26.71 111.84 0.7 0.435 1212 -1214 4 29.14 113.08 0.59 0.435 1213 -1215 4 31.56 113.73 0.21 0.435 1214 -1216 4 33.64 114.71 -0.4 0.435 1215 -1217 4 35.75 115.65 -0.58 0.435 1216 -1218 4 39.1 117.21 -0.74 0.435 1217 -1219 4 41.37 119.2 -0.75 0.435 1218 -1220 4 43.96 120.89 -0.83 0.435 1219 -1221 4 47.91 123.37 -0.95 0.435 1220 -1222 4 50.77 124.17 -1.29 0.435 1221 -1223 4 52.39 123.8 -2.23 0.435 1222 -1224 4 55.57 123.99 -2.59 0.435 1223 -1225 4 58.26 124.68 -3.29 0.435 1224 -1226 4 61.6 125.33 -3.62 0.435 1225 -1227 4 65.79 126.35 -4.59 0.435 1226 -1228 4 69.02 127.72 -6.04 0.435 1227 -1229 4 72.83 127.0 -6.53 0.435 1228 -1230 4 77.43 127.39 -7.0 0.435 1229 -1231 4 81.36 128.35 -7.33 0.435 1230 -1232 4 84.07 129.01 -7.82 0.435 1231 -1233 4 86.66 128.58 -8.11 0.435 1232 -1234 4 88.95 128.75 -8.3 0.435 1233 -1235 4 90.32 128.61 -8.44 0.435 1234 -1236 4 -6.92 93.64 8.6 1.3 1190 -1237 4 -6.7 94.03 9.3 1.3 1236 -1238 4 -7.6 95.22 9.65 1.3 1237 -1239 4 -8.01 95.74 9.74 1.3 1238 -1240 4 -6.77 95.72 9.93 0.435 1239 -1241 4 -6.3 95.85 10.13 0.435 1240 -1242 4 -5.99 96.17 10.13 0.435 1241 -1243 4 -5.56 96.37 9.72 0.435 1242 -1244 4 -5.11 96.52 9.7 0.435 1243 -1245 4 -3.65 97.2 9.02 0.435 1244 -1246 4 -3.22 96.78 8.64 0.435 1245 -1247 4 -1.59 96.69 7.95 0.435 1246 -1248 4 0.06 96.27 7.54 0.435 1247 -1249 4 0.75 95.59 6.65 0.435 1248 -1250 4 1.95 94.41 6.19 0.435 1249 -1251 4 3.43 93.55 5.52 0.435 1250 -1252 4 4.94 93.58 5.16 0.435 1251 -1253 4 6.69 93.67 4.25 0.435 1252 -1254 4 7.39 93.9 3.52 0.435 1253 -1255 4 7.55 94.05 1.94 0.435 1254 -1256 4 7.86 93.75 1.95 0.435 1255 -1257 4 8.62 93.6 1.87 0.435 1256 -1258 4 8.47 93.76 0.24 0.435 1257 -1259 4 8.55 93.69 -0.6 0.435 1258 -1260 4 8.65 93.28 -1.17 0.435 1259 -1261 4 8.86 93.09 -2.27 0.435 1260 -1262 4 9.6 92.98 -2.73 0.435 1261 -1263 4 10.35 92.85 -2.97 0.435 1262 -1264 4 11.04 93.07 -3.62 0.435 1263 -1265 4 12.22 92.49 0.75 0.435 1264 -1266 4 12.37 91.72 0.66 0.435 1265 -1267 4 12.64 91.46 0.24 0.435 1266 -1268 4 12.07 91.13 -1.02 0.435 1267 -1269 4 12.68 90.22 -1.24 0.435 1268 -1270 4 13.27 89.64 -1.58 0.435 1269 -1271 4 13.77 88.24 -2.98 0.435 1270 -1272 4 14.83 87.19 -3.25 0.435 1271 -1273 4 15.9 86.75 -3.39 0.435 1272 -1274 4 16.34 85.41 -3.71 0.435 1273 -1275 4 16.74 84.41 -4.6 0.435 1274 -1276 4 17.49 83.36 -4.85 0.435 1275 -1277 4 17.74 82.52 -5.71 0.435 1276 -1278 4 17.35 81.99 -6.48 0.435 1277 -1279 4 16.73 81.39 -6.71 0.435 1278 -1280 4 16.61 80.62 -8.14 0.435 1279 -1281 4 16.89 79.13 -8.68 0.435 1280 -1282 4 17.51 77.92 -8.85 0.435 1281 -1283 4 17.9 76.92 -9.67 0.435 1282 -1284 4 18.34 75.89 -10.12 0.435 1283 -1285 4 18.93 75.3 -10.39 0.435 1284 -1286 4 19.68 75.17 -10.54 0.435 1285 -1287 4 20.75 75.34 -10.7 0.435 1286 -1288 4 21.77 74.33 -11.35 0.435 1287 -1289 4 22.35 73.44 -11.79 0.435 1288 -1290 4 22.45 73.35 -12.41 0.435 1289 -1291 4 22.72 71.88 -13.03 0.435 1290 -1292 4 23.1 69.68 -14.19 0.435 1291 -1293 4 24.33 68.48 -14.42 0.435 1292 -1294 4 24.92 67.6 -14.79 0.435 1293 -1295 4 26.7 66.45 -15.59 0.435 1294 -1296 4 27.74 64.82 -16.14 0.435 1295 -1297 4 30.33 61.95 -16.75 0.435 1296 -1298 4 32.47 60.45 -17.09 0.435 1297 -1299 4 33.38 59.54 -17.26 0.435 1298 -1300 4 35.28 56.77 -18.68 0.435 1299 -1301 4 35.84 55.31 -19.42 0.435 1300 -1302 4 36.6 54.26 -19.66 0.435 1301 -1303 4 37.2 53.36 -19.88 0.435 1302 -1304 4 37.67 52.92 -19.97 0.435 1303 -1305 4 38.06 52.53 -20.8 0.435 1304 -1306 4 38.49 52.1 -21.18 0.435 1305 -1307 4 -8.0 96.22 10.54 1.3 1239 -1308 4 -8.91 97.42 10.82 1.3 1307 -1309 4 -10.54 98.52 11.08 1.3 1308 -1310 4 -11.37 99.05 12.03 0.54 1309 -1311 4 -12.45 99.8 12.2 0.54 1310 -1312 4 -13.21 100.55 12.35 0.54 1311 -1313 4 -14.17 100.6 11.92 0.54 1312 -1314 4 -15.54 101.05 12.01 0.54 1313 -1315 4 -16.17 102.27 12.04 0.54 1314 -1316 4 -17.05 103.14 12.59 0.54 1315 -1317 4 -19.02 105.37 13.29 0.54 1316 -1318 4 -19.32 106.29 13.4 0.54 1317 -1319 4 -19.78 107.34 13.55 0.54 1318 -1320 4 -20.55 109.01 13.79 0.54 1319 -1321 4 -20.8 108.95 14.41 0.54 1320 -1322 4 -21.56 109.39 14.52 0.54 1321 -1323 4 -22.61 109.53 14.7 0.54 1322 -1324 4 -23.57 109.86 14.45 0.54 1323 -1325 4 -24.08 110.37 13.94 0.54 1324 -1326 4 -23.72 112.15 13.02 0.54 1325 -1327 4 -24.34 112.46 13.03 0.54 1326 -1328 4 -25.41 113.81 13.26 0.54 1327 -1329 4 -26.93 116.54 13.67 0.54 1328 -1330 4 -27.6 119.31 13.54 0.54 1329 -1331 4 -27.31 120.86 13.51 0.54 1330 -1332 4 -26.83 122.22 12.17 0.54 1331 -1333 4 -27.15 123.13 12.22 0.54 1332 -1334 4 -28.01 125.51 11.47 0.54 1333 -1335 4 -27.85 127.77 10.24 0.54 1334 -1336 4 -28.01 129.17 8.65 0.54 1335 -1337 4 -28.25 130.01 7.85 0.54 1336 -1338 4 -29.16 130.9 8.1 0.54 1337 -1339 4 -30.38 132.72 8.38 0.54 1338 -1340 4 -30.99 133.33 6.83 0.54 1339 -1341 4 -32.18 136.02 6.0 0.54 1340 -1342 4 -33.32 138.37 5.49 0.54 1341 -1343 4 -33.63 140.51 5.67 0.54 1342 -1344 4 -35.17 143.23 6.07 0.54 1343 -1345 4 -35.5 145.38 6.08 0.54 1344 -1346 4 -35.76 148.97 5.47 0.54 1345 -1347 4 -35.49 152.03 5.45 0.54 1346 -1348 4 -35.46 155.97 4.54 0.54 1347 -1349 4 -36.39 158.7 4.9 0.54 1348 -1350 4 -37.16 162.49 5.33 0.54 1349 -1351 4 -38.67 165.51 4.26 0.54 1350 -1352 4 -40.46 167.59 3.49 0.54 1351 -1353 4 -40.73 169.07 2.37 0.54 1352 -1354 4 -41.1 170.05 1.83 0.54 1353 -1355 4 -42.23 171.76 1.5 0.54 1354 -1356 4 -43.65 173.48 1.26 0.54 1355 -1357 4 -44.41 174.23 1.4 0.54 1356 -1358 4 -44.59 175.64 -0.4 0.54 1357 -1359 4 -44.76 177.91 -0.16 0.54 1358 -1360 4 -44.15 180.04 -0.01 0.54 1359 -1361 4 -43.85 182.49 0.19 0.54 1360 -1362 4 -44.5 184.95 0.18 0.54 1361 -1363 4 -45.07 187.94 -0.59 0.54 1362 -1364 4 -44.92 190.53 -1.94 0.54 1363 -1365 4 -44.75 191.57 -0.05 0.54 1364 -1366 4 -45.06 191.87 -0.06 0.54 1365 -1367 4 -44.43 192.47 0.09 0.54 1366 -1368 4 -46.08 176.81 1.81 0.54 1357 -1369 4 -49.45 181.64 1.0 0.54 1368 -1370 4 -50.39 182.55 2.54 0.54 1369 -1371 4 -52.84 184.97 3.01 0.54 1370 -1372 4 -54.24 188.18 3.14 0.54 1371 -1373 4 -10.13 99.23 11.11 1.19 1309 -1374 4 -10.86 100.86 11.71 1.08 1373 -1375 4 -10.7 100.97 11.71 1.08 1374 -1376 4 -11.55 100.89 12.54 0.54 1375 -1377 4 -12.46 101.19 12.65 0.54 1376 -1378 4 -13.07 101.79 12.77 0.54 1377 -1379 4 -13.83 102.54 12.91 0.54 1378 -1380 4 -14.44 103.15 13.02 0.54 1379 -1381 4 -15.2 104.51 13.22 0.54 1380 -1382 4 -15.97 106.78 13.51 0.54 1381 -1383 4 -15.22 108.15 13.58 0.54 1382 -1384 4 -15.22 109.07 13.67 0.54 1383 -1385 4 -15.45 110.22 12.9 0.54 1384 -1386 4 -16.38 111.13 13.0 0.54 1385 -1387 4 -17.15 112.5 13.2 0.54 1386 -1388 4 -18.07 114.61 13.5 0.54 1387 -1389 4 -18.84 116.58 13.76 0.54 1388 -1390 4 -19.91 119.16 14.11 0.54 1389 -1391 4 -20.09 122.07 14.18 0.54 1390 -1392 4 -20.92 123.8 13.74 0.54 1391 -1393 4 -21.25 125.64 13.81 0.54 1392 -1394 4 -22.16 128.37 14.07 0.54 1393 -1395 4 -23.4 130.48 14.39 0.54 1394 -1396 4 -24.92 133.22 14.8 0.54 1395 -1397 4 -26.92 135.79 15.17 0.54 1396 -1398 4 -29.09 138.84 15.37 0.54 1397 -1399 4 -29.71 140.97 15.55 0.54 1398 -1400 4 -31.13 144.79 15.68 0.54 1399 -1401 4 -31.29 147.39 15.86 0.54 1400 -1402 4 -32.47 150.38 15.14 0.54 1401 -1403 4 -33.09 152.81 15.43 0.54 1402 -1404 4 -32.94 154.79 15.61 0.54 1403 -1405 4 -34.16 155.99 15.84 0.54 1404 -1406 4 -35.44 156.94 15.45 0.54 1405 -1407 4 -36.97 157.54 15.58 0.54 1406 -1408 4 -38.05 158.61 15.78 0.54 1407 -1409 4 -38.2 160.89 16.01 0.54 1408 -1410 4 -39.55 162.96 16.26 0.54 1409 -1411 4 -39.86 165.09 16.5 0.54 1410 -1412 4 -40.93 167.05 16.78 0.54 1411 -1413 4 -42.35 169.06 16.59 0.54 1412 -1414 4 -43.42 171.33 16.91 0.54 1413 -1415 4 -44.51 173.92 17.18 0.54 1414 -1416 4 -44.51 175.75 17.36 0.54 1415 -1417 4 -45.66 179.31 16.98 0.54 1416 -1418 4 -46.89 181.43 17.31 0.54 1417 -1419 4 -48.12 185.38 17.72 0.54 1418 -1420 4 -48.44 189.33 18.14 0.54 1419 -1421 4 -49.21 191.61 18.43 0.54 1420 -1422 4 -49.37 193.89 18.67 0.54 1421 -1423 4 -48.8 196.05 18.52 0.54 1422 -1424 4 -48.59 197.98 17.64 0.54 1423 -1425 4 -49.06 199.95 17.8 0.54 1424 -1426 4 -49.67 201.17 17.98 0.54 1425 -1427 4 -49.29 205.94 17.8 0.54 1426 -1428 4 -50.12 208.29 17.43 0.54 1427 -1429 4 -50.05 209.74 16.66 0.54 1428 -1430 4 -50.52 211.72 16.81 0.54 1429 -1431 4 -51.59 214.3 17.16 0.54 1430 -1432 4 -51.95 216.77 16.99 0.54 1431 -1433 4 -51.85 218.19 16.59 0.54 1432 -1434 4 -51.41 220.79 16.73 0.54 1433 -1435 4 -51.44 221.73 16.52 0.54 1434 -1436 4 -51.19 223.31 16.04 0.54 1435 -1437 4 -10.4 102.22 11.88 1.08 1375 -1438 4 -9.64 102.99 11.89 1.08 1437 -1439 4 -8.89 104.97 12.08 1.08 1438 -1440 4 -8.74 106.95 12.26 1.08 1439 -1441 4 -8.24 109.18 12.96 0.975 1440 -1442 4 -7.33 111.62 13.19 0.975 1441 -1443 4 -7.03 112.84 13.28 0.975 1442 -1444 4 -6.11 112.65 14.32 0.65 1443 -1445 4 -5.35 112.5 14.23 0.65 1444 -1446 4 -4.89 112.05 14.15 0.65 1445 -1447 4 -5.04 110.98 14.06 0.65 1446 -1448 4 -4.58 109.62 13.89 0.435 1447 -1449 4 -3.51 108.26 13.65 0.435 1448 -1450 4 -2.19 106.34 12.81 0.435 1449 -1451 4 -1.4 105.26 12.86 0.435 1450 -1452 4 -0.76 104.63 13.11 0.54 1451 -1453 4 0.21 103.36 13.59 0.54 1452 -1454 4 0.57 102.09 13.96 0.54 1453 -1455 4 1.41 100.65 14.64 0.54 1454 -1456 4 1.88 99.27 14.47 0.54 1455 -1457 4 2.21 98.33 14.65 0.54 1456 -1458 4 2.57 97.38 15.13 0.54 1457 -1459 4 2.89 96.46 15.08 0.54 1458 -1460 4 3.2 95.23 15.0 0.54 1459 -1461 4 3.81 94.63 14.89 0.54 1460 -1462 4 5.05 92.81 14.75 0.54 1461 -1463 4 5.54 92.32 14.96 0.54 1462 -1464 4 6.32 90.95 14.91 0.54 1463 -1465 4 6.78 89.56 14.89 0.54 1464 -1466 4 7.3 88.75 15.36 0.54 1465 -1467 4 7.46 88.3 15.37 0.54 1466 -1468 4 -7.18 114.81 13.56 0.975 1443 -1469 4 -8.4 116.92 13.89 0.975 1468 -1470 4 -9.63 119.35 14.24 0.975 1469 -1471 4 -11.16 122.06 14.65 0.975 1470 -1472 4 -11.68 123.48 15.96 0.975 1471 -1473 4 -12.43 124.23 16.1 0.975 1472 -1474 4 -12.83 124.88 16.2 0.975 1473 -1475 4 -12.98 124.12 14.48 0.54 1474 -1476 4 -13.43 123.36 14.45 0.54 1475 -1477 4 -13.12 122.14 14.29 0.54 1476 -1478 4 -12.82 121.54 14.21 0.435 1477 -1479 4 -13.12 120.02 14.09 0.435 1478 -1480 4 -13.12 119.41 14.03 0.435 1479 -1481 4 -13.11 118.19 13.92 0.435 1480 -1482 4 -13.12 116.97 13.79 0.435 1481 -1483 4 -12.96 116.52 13.73 0.435 1482 -1484 4 -12.65 115.62 13.62 0.435 1483 -1485 4 -12.49 115.15 13.56 0.435 1484 -1486 4 -13.5 126.51 16.42 0.975 1474 -1487 4 -14.27 128.76 16.8 0.975 1486 -1488 4 -14.12 131.35 17.03 0.975 1487 -1489 4 -13.67 132.73 17.12 0.975 1488 -1490 4 -12.92 135.01 17.28 0.975 1489 -1491 4 -13.22 136.23 17.43 1.08 1490 -1492 4 -13.7 139.11 17.76 1.08 1491 -1493 4 -13.55 141.09 17.93 1.08 1492 -1494 4 -14.31 142.46 18.13 1.08 1493 -1495 4 -15.08 144.43 18.4 1.08 1494 -1496 4 -15.85 146.39 18.66 1.08 1495 -1497 4 -16.31 147.77 18.84 1.08 1496 -1498 4 -16.16 150.04 19.05 1.08 1497 -1499 4 -14.95 150.66 19.0 1.08 1498 -1500 4 -13.58 151.74 18.97 1.08 1499 -1501 4 -13.12 152.8 19.03 1.08 1500 -1502 4 -12.97 154.78 19.29 1.08 1501 -1503 4 -11.31 158.28 19.47 1.08 1502 -1504 4 -11.32 162.24 19.86 1.08 1503 -1505 4 -10.83 162.78 19.87 1.08 1504 -1506 4 -11.36 162.68 20.73 0.65 1505 -1507 4 -11.81 163.75 20.88 0.65 1506 -1508 4 -12.24 164.17 21.34 0.65 1507 -1509 4 -12.68 164.59 21.64 0.65 1508 -1510 4 -13.29 164.59 21.63 0.65 1509 -1511 4 -13.7 165.61 22.23 0.65 1510 -1512 4 -14.28 166.17 22.79 0.65 1511 -1513 4 -14.49 166.37 23.89 0.65 1512 -1514 4 -14.78 168.17 24.39 0.65 1513 -1515 4 -15.17 169.17 23.53 0.435 1514 -1516 4 -15.63 170.83 23.82 0.435 1515 -1517 4 -15.93 172.06 22.23 0.435 1516 -1518 4 -16.16 172.88 21.58 0.435 1517 -1519 4 -16.22 174.47 21.2 0.435 1518 -1520 4 -16.27 176.03 20.83 0.54 1519 -1521 4 -16.43 178.01 21.05 0.54 1520 -1522 4 -16.93 179.72 20.8 0.54 1521 -1523 4 -17.55 181.55 20.96 0.54 1522 -1524 4 -18.77 183.36 21.25 0.54 1523 -1525 4 -18.47 185.5 21.43 0.54 1524 -1526 4 -17.72 187.48 21.55 0.54 1525 -1527 4 -18.03 189.0 21.73 0.54 1526 -1528 4 -19.3 191.46 21.63 0.54 1527 -1529 4 -18.91 193.2 21.09 0.54 1528 -1530 4 -18.65 195.37 20.9 0.54 1529 -1531 4 -18.39 198.45 20.79 0.54 1530 -1532 4 -19.05 201.54 20.63 0.54 1531 -1533 4 -19.92 203.6 19.93 0.54 1532 -1534 4 -20.71 205.91 19.86 0.54 1533 -1535 4 -21.75 208.16 18.88 0.54 1534 -1536 4 -21.61 209.84 18.95 0.54 1535 -1537 4 -22.45 211.58 18.37 0.54 1536 -1538 4 -24.56 213.98 17.36 0.54 1537 -1539 4 -26.24 215.33 17.65 0.54 1538 -1540 4 -27.77 216.85 17.94 0.54 1539 -1541 4 -29.3 218.97 18.28 0.54 1540 -1542 4 -31.19 220.23 17.83 0.54 1541 -1543 4 -33.94 222.94 18.35 0.54 1542 -1544 4 -35.63 224.61 18.58 0.54 1543 -1545 4 -36.53 226.41 17.41 0.54 1544 -1546 4 -37.71 229.4 16.6 0.54 1545 -1547 4 -38.66 230.29 16.7 0.54 1546 -1548 4 -39.74 231.03 16.87 0.54 1547 -1549 4 -40.73 232.02 16.22 0.54 1548 -1550 4 -40.98 234.4 15.51 0.54 1549 -1551 4 -41.28 237.74 14.26 0.54 1550 -1552 4 -42.13 239.8 13.65 0.54 1551 -1553 4 -41.6 241.71 12.87 0.54 1552 -1554 4 -41.19 243.74 12.65 0.54 1553 -1555 4 -41.33 245.7 11.34 0.54 1554 -1556 4 -42.81 248.37 10.68 0.54 1555 -1557 4 -43.38 251.37 9.9 0.54 1556 -1558 4 -44.94 256.24 10.29 0.54 1557 -1559 4 -45.75 259.78 10.26 0.54 1558 -1560 4 -46.31 261.56 9.27 0.54 1559 -1561 4 -46.66 264.63 9.37 0.54 1560 -1562 4 -46.86 266.34 9.03 0.54 1561 -1563 4 -47.79 269.09 9.24 0.54 1562 -1564 4 -48.3 273.22 9.38 0.54 1563 -1565 4 -48.53 275.89 8.76 0.54 1564 -1566 4 -49.27 277.53 8.83 0.54 1565 -1567 4 -11.65 164.37 20.09 1.08 1505 -1568 4 -11.89 164.43 20.12 1.08 1567 -1569 4 -11.64 167.11 20.37 1.08 1568 -1570 4 -11.65 169.85 20.63 0.865 1569 -1571 4 -11.81 173.65 21.02 0.865 1570 -1572 4 -11.53 177.92 21.41 0.865 1571 -1573 4 -11.39 180.56 21.73 0.975 1572 -1574 4 -10.79 183.0 21.92 0.975 1573 -1575 4 -10.02 185.58 22.09 0.975 1574 -1576 4 -9.42 188.02 22.28 0.975 1575 -1577 4 -11.12 192.11 22.84 0.975 1576 -1578 4 -11.1 193.92 23.23 0.975 1577 -1579 4 -12.33 196.94 23.64 0.975 1578 -1580 4 -13.26 199.97 24.02 0.975 1579 -1581 4 -13.87 202.4 24.39 1.08 1580 -1582 4 -13.72 205.59 24.7 1.08 1581 -1583 4 -13.93 207.02 24.32 1.08 1582 -1584 4 -12.94 206.93 25.95 0.54 1583 -1585 4 -12.18 207.4 25.86 0.54 1584 -1586 4 -11.91 207.12 27.17 0.54 1585 -1587 4 -10.96 207.38 27.57 0.54 1586 -1588 4 -9.48 207.43 28.64 0.65 1587 -1589 4 -8.25 208.04 28.81 0.65 1588 -1590 4 -6.69 208.91 29.13 0.65 1589 -1591 4 -4.35 209.96 29.62 0.65 1590 -1592 4 -1.76 211.63 29.7 0.65 1591 -1593 4 1.57 213.79 29.6 0.65 1592 -1594 4 5.23 215.65 29.52 0.65 1593 -1595 4 8.0 217.15 29.86 0.65 1594 -1596 4 9.85 218.04 30.15 0.65 1595 -1597 4 10.79 218.33 30.33 0.65 1596 -1598 4 12.77 219.72 30.28 0.65 1597 -1599 4 14.44 221.11 30.33 0.65 1598 -1600 4 15.07 222.0 29.01 0.65 1599 -1601 4 15.08 221.98 29.16 0.65 1600 -1602 4 15.85 222.44 29.13 0.65 1601 -1603 4 15.8 222.5 28.61 0.65 1602 -1604 4 16.63 222.9 27.66 0.65 1603 -1605 4 16.85 223.59 26.8 0.65 1604 -1606 4 17.56 224.1 26.26 0.65 1605 -1607 4 17.52 224.53 26.3 0.65 1606 -1608 4 18.05 224.3 27.14 0.54 1607 -1609 4 18.36 224.0 27.0 0.54 1608 -1610 4 18.75 223.6 27.91 0.54 1609 -1611 4 19.28 223.68 28.78 0.54 1610 -1612 4 19.95 223.62 29.31 0.54 1611 -1613 4 20.91 223.89 29.78 0.54 1612 -1614 4 21.74 224.28 30.42 0.54 1613 -1615 4 22.2 224.73 30.51 0.54 1614 -1616 4 22.58 224.35 31.34 0.54 1615 -1617 4 22.5 225.33 32.27 0.54 1616 -1618 4 22.65 226.7 32.39 0.54 1617 -1619 4 22.5 227.76 32.58 0.54 1618 -1620 4 22.13 228.12 33.63 0.54 1619 -1621 4 21.74 228.49 34.46 0.54 1620 -1622 4 22.51 230.77 34.77 0.435 1621 -1623 4 23.87 233.07 34.86 0.435 1622 -1624 4 24.09 234.37 35.65 0.435 1623 -1625 4 23.78 237.4 36.05 0.435 1624 -1626 4 23.93 239.37 36.31 0.435 1625 -1627 4 24.38 241.05 36.42 0.435 1626 -1628 4 24.35 243.21 36.34 0.435 1627 -1629 4 24.32 245.05 36.3 0.435 1628 -1630 4 24.27 248.13 36.29 0.435 1629 -1631 4 24.72 251.63 36.53 0.435 1630 -1632 4 25.42 255.5 36.24 0.435 1631 -1633 4 25.34 256.48 35.58 0.435 1632 -1634 4 24.67 258.68 35.17 0.435 1633 -1635 4 25.39 260.99 35.03 0.435 1634 -1636 4 26.22 264.73 34.48 0.435 1635 -1637 4 27.38 266.0 34.05 0.435 1636 -1638 4 28.74 268.61 34.1 0.435 1637 -1639 4 27.51 271.35 34.41 0.435 1638 -1640 4 26.51 273.54 33.88 0.54 1639 -1641 4 25.68 274.37 33.29 0.54 1640 -1642 4 25.67 275.29 33.3 0.54 1641 -1643 4 24.52 224.25 32.36 0.54 1616 -1644 4 25.58 225.03 32.34 0.54 1643 -1645 4 26.86 225.88 32.98 0.54 1644 -1646 4 27.65 227.83 33.4 0.54 1645 -1647 4 27.64 230.27 33.72 0.54 1646 -1648 4 27.35 231.76 34.04 0.54 1647 -1649 4 28.88 232.96 34.32 0.54 1648 -1650 4 29.8 233.58 34.3 0.54 1649 -1651 4 30.74 234.17 34.64 0.54 1650 -1652 4 31.12 234.08 35.5 0.54 1651 -1653 4 32.67 234.68 35.64 0.54 1652 -1654 4 35.62 235.72 36.07 0.54 1653 -1655 4 36.39 236.46 36.23 0.54 1654 -1656 4 36.88 238.11 36.8 0.54 1655 -1657 4 37.07 240.02 37.57 0.54 1656 -1658 4 38.75 242.32 37.72 0.54 1657 -1659 4 40.57 244.76 37.86 0.54 1658 -1660 4 42.41 245.96 38.05 0.54 1659 -1661 4 46.98 248.44 37.87 0.54 1660 -1662 4 50.48 250.76 37.84 0.54 1661 -1663 4 53.24 252.27 38.04 0.54 1662 -1664 4 55.08 252.88 38.08 0.54 1663 -1665 4 56.44 253.65 38.02 0.54 1664 -1666 4 58.12 254.42 38.02 0.54 1665 -1667 4 59.18 255.19 38.0 0.54 1666 -1668 4 19.34 225.08 25.73 0.435 1607 -1669 4 21.17 226.01 25.66 0.435 1668 -1670 4 22.34 226.98 25.19 0.435 1669 -1671 4 23.82 227.94 24.69 0.54 1670 -1672 4 26.39 231.16 24.77 0.54 1671 -1673 4 28.48 232.75 24.27 0.54 1672 -1674 4 30.77 232.92 24.09 0.54 1673 -1675 4 32.74 232.18 23.83 0.54 1674 -1676 4 36.09 232.51 23.55 0.54 1675 -1677 4 38.92 233.14 23.2 0.435 1676 -1678 4 43.64 234.84 22.93 0.435 1677 -1679 4 47.43 237.48 22.84 0.435 1678 -1680 4 49.28 238.68 21.43 0.54 1679 -1681 4 51.85 241.3 21.44 0.54 1680 -1682 4 53.21 245.11 21.69 0.54 1681 -1683 4 53.26 248.1 20.92 0.54 1682 -1684 4 53.55 250.24 21.03 0.54 1683 -1685 4 55.83 253.76 21.16 0.54 1684 -1686 4 57.48 256.67 21.29 0.54 1685 -1687 4 57.79 257.58 21.36 0.54 1686 -1688 4 57.93 261.07 21.68 0.54 1687 -1689 4 59.6 263.37 21.75 0.54 1688 -1690 4 60.48 264.32 21.46 0.54 1689 -1691 4 62.1 265.14 20.85 0.54 1690 -1692 4 63.89 264.6 20.18 0.54 1691 -1693 4 65.71 264.63 20.01 0.54 1692 -1694 4 -14.08 209.9 24.62 1.08 1583 -1695 4 -13.95 213.4 24.94 1.08 1694 -1696 4 -13.35 216.14 25.16 1.08 1695 -1697 4 -13.66 218.28 25.39 1.08 1696 -1698 4 -15.03 220.84 25.77 1.08 1697 -1699 4 -16.41 222.8 26.09 1.08 1698 -1700 4 -17.17 224.47 26.32 1.08 1699 -1701 4 -17.34 227.36 26.62 1.08 1700 -1702 4 -17.19 231.16 26.98 1.08 1701 -1703 4 -16.75 234.36 27.25 1.08 1702 -1704 4 -17.18 237.23 26.29 1.08 1703 -1705 4 -17.48 239.02 26.71 1.08 1704 -1706 4 -18.11 240.86 26.64 1.08 1705 -1707 4 -18.39 242.66 25.57 1.08 1706 -1708 4 -19.02 243.14 26.35 0.65 1707 -1709 4 -20.33 243.83 25.56 0.65 1708 -1710 4 -21.29 244.15 26.89 0.65 1709 -1711 4 -21.74 243.98 28.65 0.65 1710 -1712 4 -23.19 244.51 29.59 0.65 1711 -1713 4 -26.02 245.48 30.62 0.65 1712 -1714 4 -27.69 246.81 31.06 0.65 1713 -1715 4 -30.05 248.52 32.35 0.65 1714 -1716 4 -31.28 249.74 32.58 0.65 1715 -1717 4 -32.6 251.04 33.28 0.65 1716 -1718 4 -34.58 253.61 33.8 0.65 1717 -1719 4 -36.41 254.2 34.03 0.65 1718 -1720 4 -39.15 255.38 34.46 0.65 1719 -1721 4 -41.74 257.03 34.86 0.65 1720 -1722 4 -44.48 258.52 35.26 0.65 1721 -1723 4 -46.01 260.03 35.63 0.54 1722 -1724 4 -47.21 260.01 35.74 0.54 1723 -1725 4 -49.35 261.21 36.12 0.54 1724 -1726 4 -51.02 263.16 36.47 0.54 1725 -1727 4 -53.63 266.04 36.99 0.54 1726 -1728 4 -56.67 268.74 37.53 0.54 1727 -1729 4 -58.05 271.32 37.92 0.54 1728 -1730 4 -59.43 274.2 38.32 0.54 1729 -1731 4 -60.5 276.46 38.65 0.54 1730 -1732 4 -61.58 279.35 39.02 0.54 1731 -1733 4 -63.56 280.08 39.28 0.54 1732 -1734 4 -65.24 281.44 39.56 0.54 1733 -1735 4 -67.53 283.39 39.97 0.54 1734 -1736 4 -68.7 284.54 40.79 0.54 1735 -1737 4 -70.06 287.11 41.25 0.54 1736 -1738 4 -70.49 288.73 41.9 0.54 1737 -1739 4 -70.46 290.23 42.35 0.54 1738 -1740 4 -69.8 290.77 43.02 0.54 1739 -1741 4 -69.26 291.15 43.84 0.54 1740 -1742 4 -70.31 292.18 44.26 0.54 1741 -1743 4 -71.52 293.38 44.64 0.54 1742 -1744 4 -71.68 295.35 44.85 0.54 1743 -1745 4 -71.81 296.69 45.29 0.54 1744 -1746 4 -73.02 297.58 45.64 0.54 1745 -1747 4 -74.21 297.85 46.0 0.54 1746 -1748 4 -75.86 299.17 46.58 0.54 1747 -1749 4 -76.45 299.76 46.92 0.54 1748 -1750 4 -77.45 300.75 47.79 0.54 1749 -1751 4 -77.62 301.18 49.51 0.54 1750 -1752 4 -78.53 301.79 49.65 0.54 1751 -1753 4 -78.86 302.11 51.08 0.54 1752 -1754 4 -79.29 302.22 51.51 0.54 1753 -1755 4 -17.79 245.71 25.81 1.08 1707 -1756 4 -17.95 247.99 26.05 1.08 1755 -1757 4 -17.21 249.38 25.88 1.08 1756 -1758 4 -16.46 251.67 26.03 1.08 1757 -1759 4 -16.93 253.35 26.17 1.08 1758 -1760 4 -18.15 255.17 26.46 1.08 1759 -1761 4 -19.82 258.34 25.41 1.08 1760 -1762 4 -20.59 260.91 25.73 1.08 1761 -1763 4 -20.91 263.96 26.06 1.08 1762 -1764 4 -20.63 268.83 26.42 1.08 1763 -1765 4 -20.07 271.27 26.55 1.19 1764 -1766 4 -19.33 274.16 26.75 1.19 1765 -1767 4 -19.33 275.38 26.88 1.19 1766 -1768 4 -19.12 276.58 28.11 0.865 1767 -1769 4 -19.42 278.11 28.28 0.865 1768 -1770 4 -19.72 279.01 28.47 0.865 1769 -1771 4 -20.34 279.62 28.51 0.865 1770 -1772 4 -20.67 280.85 30.11 0.865 1771 -1773 4 -21.56 281.73 30.43 0.865 1772 -1774 4 -21.99 283.36 31.15 0.865 1773 -1775 4 -23.18 284.53 31.67 0.865 1774 -1776 4 -23.79 286.34 31.99 0.865 1775 -1777 4 -25.13 287.66 32.62 0.865 1776 -1778 4 -26.51 289.01 32.88 0.865 1777 -1779 4 -27.87 291.27 33.3 0.865 1778 -1780 4 -28.64 293.86 33.63 0.865 1779 -1781 4 -28.65 296.29 33.86 0.865 1780 -1782 4 -28.8 298.55 34.24 0.865 1781 -1783 4 -28.79 300.07 34.47 0.865 1782 -1784 4 -30.47 303.85 35.07 0.865 1783 -1785 4 -31.85 307.03 35.51 0.865 1784 -1786 4 -32.63 310.21 35.89 0.865 1785 -1787 4 -34.3 312.78 36.3 0.865 1786 -1788 4 -36.6 315.05 36.73 0.865 1787 -1789 4 -37.54 315.89 37.05 0.865 1788 -1790 4 -38.92 318.77 37.46 0.865 1789 -1791 4 -40.3 321.64 37.86 0.865 1790 -1792 4 -42.89 323.29 38.26 0.865 1791 -1793 4 -44.42 326.01 38.68 0.865 1792 -1794 4 -46.11 329.51 39.17 0.865 1793 -1795 4 -47.21 332.39 40.99 0.865 1794 -1796 4 -47.72 334.12 40.59 0.865 1795 -1797 4 -48.34 335.36 38.88 0.865 1796 -1798 4 -49.4 337.62 37.77 0.865 1797 -1799 4 -50.47 338.68 37.9 0.865 1798 -1800 4 -52.63 341.41 38.28 0.865 1799 -1801 4 -54.76 344.73 38.8 0.865 1800 -1802 4 -55.43 349.03 38.75 0.865 1801 -1803 4 -55.94 352.55 38.84 0.865 1802 -1804 4 -55.08 356.27 38.6 0.865 1803 -1805 4 -54.71 359.25 37.95 0.865 1804 -1806 4 -55.34 362.0 38.2 0.865 1805 -1807 4 -54.82 365.14 37.47 0.865 1806 -1808 4 -53.38 368.86 36.95 0.865 1807 -1809 4 -52.37 372.41 36.67 0.865 1808 -1810 4 -51.94 375.04 35.07 0.865 1809 -1811 4 -50.47 378.74 34.92 0.865 1810 -1812 4 -49.98 381.91 33.91 0.865 1811 -1813 4 -50.57 382.78 32.75 0.865 1812 -1814 4 -51.17 383.99 32.93 0.865 1813 -1815 4 -51.52 384.33 32.99 0.435 1814 -1816 4 -51.82 384.93 33.08 0.865 1815 -1817 4 -51.5 387.06 31.89 0.865 1816 -1818 4 -51.65 388.73 32.07 0.865 1817 -1819 4 -52.87 389.93 32.3 0.865 1818 -1820 4 -54.06 390.8 31.21 0.865 1819 -1821 4 -55.81 392.23 30.67 0.865 1820 -1822 4 -55.97 393.0 30.69 0.865 1821 -1823 4 -56.94 395.16 30.47 0.865 1822 -1824 4 -57.4 396.54 30.57 0.865 1823 -1825 4 -57.73 398.37 30.7 1.3 1824 -1826 4 -57.88 400.03 30.89 0.975 1825 -1827 4 -58.48 403.06 29.79 0.975 1826 -1828 4 -58.77 404.3 29.93 0.975 1827 -1829 4 -59.79 404.09 30.46 0.54 1828 -1830 4 -61.01 403.47 30.52 0.54 1829 -1831 4 -62.07 403.92 30.66 0.54 1830 -1832 4 -63.75 404.36 30.86 0.54 1831 -1833 4 -65.44 405.12 31.02 0.54 1832 -1834 4 -66.97 405.74 29.4 0.54 1833 -1835 4 -68.34 407.08 29.66 0.54 1834 -1836 4 -69.56 408.3 29.89 0.54 1835 -1837 4 -70.93 408.73 30.06 0.54 1836 -1838 4 -72.2 409.67 29.88 0.54 1837 -1839 4 -72.78 409.97 28.45 0.54 1838 -1840 4 -73.63 409.59 27.59 0.54 1839 -1841 4 -74.09 409.46 25.81 0.54 1840 -1842 4 -74.35 409.11 24.59 0.54 1841 -1843 4 -74.54 408.99 24.21 0.54 1842 -1844 4 -74.69 408.54 24.18 0.54 1843 -1845 4 -58.94 404.74 29.92 0.975 1828 -1846 4 -58.5 407.04 30.03 0.975 1845 -1847 4 -58.83 408.88 28.42 0.975 1846 -1848 4 -59.16 410.74 26.67 0.975 1847 -1849 4 -60.12 411.68 26.4 0.975 1848 -1850 4 -62.36 413.31 25.56 0.975 1849 -1851 4 -63.03 415.56 24.85 0.975 1850 -1852 4 -63.49 417.54 25.08 0.865 1851 -1853 4 -64.8 419.45 24.42 0.865 1852 -1854 4 -64.81 420.98 22.83 0.865 1853 -1855 4 -64.64 422.34 21.5 0.865 1854 -1856 4 -64.51 423.12 21.34 0.865 1855 -1857 4 -64.07 423.6 21.2 0.865 1856 -1858 4 -64.23 425.88 19.85 0.865 1857 -1859 4 -64.97 427.53 18.64 0.865 1858 -1860 4 -64.91 430.2 17.92 0.865 1859 -1861 4 -65.28 432.71 15.85 0.865 1860 -1862 4 -65.7 433.72 16.59 0.865 1861 -1863 4 -66.37 435.91 16.1 0.865 1862 -1864 4 -66.93 437.69 15.27 0.865 1863 -1865 4 -67.17 439.14 14.53 0.865 1864 -1866 4 -68.16 439.81 13.86 0.865 1865 -1867 4 -69.28 441.53 13.6 0.865 1866 -1868 4 -70.9 442.84 12.82 0.865 1867 -1869 4 -71.75 444.29 12.06 0.865 1868 -1870 4 -72.49 445.63 10.97 0.865 1869 -1871 4 -73.83 446.97 9.79 0.865 1870 -1872 4 -74.39 448.11 9.04 0.865 1871 -1873 4 -75.42 449.76 7.94 0.865 1872 -1874 4 -75.89 450.83 8.01 0.865 1873 -1875 4 -77.1 451.73 8.21 0.865 1874 -1876 4 -78.48 453.7 8.46 0.865 1875 -1877 4 -79.04 456.07 7.75 0.865 1876 -1878 4 -77.54 459.43 7.94 0.865 1877 -1879 4 -75.96 462.44 7.03 0.865 1878 -1880 4 -75.44 465.57 6.45 0.865 1879 -1881 4 -75.68 468.54 5.86 0.865 1880 -1882 4 -75.19 470.47 4.87 0.865 1881 -1883 4 -74.8 472.53 4.29 0.865 1882 -1884 4 -74.42 474.28 3.66 0.865 1883 -1885 4 -74.74 475.39 3.8 0.865 1884 -1886 4 -75.42 475.77 3.06 0.435 1885 -1887 4 -75.88 476.23 3.15 0.435 1886 -1888 4 -76.82 476.55 2.96 0.435 1887 -1889 4 -77.28 476.1 2.81 0.435 1888 -1890 4 -77.61 476.43 2.65 0.54 1889 -1891 4 -79.59 477.17 2.91 0.54 1890 -1892 4 -79.9 478.69 3.08 0.54 1891 -1893 4 -80.67 479.16 1.38 0.54 1892 -1894 4 -81.7 479.26 0.28 0.54 1893 -1895 4 -82.29 479.55 -1.07 0.54 1894 -1896 4 -82.72 479.38 -2.55 0.54 1895 -1897 4 -83.65 479.7 -2.52 0.54 1896 -1898 4 -85.11 480.23 -3.31 0.54 1897 -1899 4 -85.96 480.46 -4.12 0.54 1898 -1900 4 -86.59 481.1 -4.37 0.54 1899 -1901 4 -87.51 481.41 -5.92 0.54 1900 -1902 4 -87.66 481.58 -7.71 0.54 1901 -1903 4 -88.41 482.0 -8.96 0.54 1902 -1904 4 -89.13 482.72 -10.02 0.54 1903 -1905 4 -89.85 483.45 -11.17 0.54 1904 -1906 4 -73.88 475.57 3.05 0.865 1885 -1907 4 -73.79 477.62 2.57 0.865 1906 -1908 4 -73.62 479.27 1.28 0.865 1907 -1909 4 -74.82 481.66 0.33 0.865 1908 -1910 4 -74.93 483.61 -0.73 0.865 1909 -1911 4 -74.02 485.14 -0.67 0.865 1910 -1912 4 -72.32 487.12 -1.93 0.865 1911 -1913 4 -71.11 490.18 -3.4 0.865 1912 -1914 4 -71.5 492.69 -4.03 0.865 1913 -1915 4 -71.93 494.64 -5.08 0.865 1914 -1916 4 -71.81 496.33 -5.15 0.865 1915 -1917 4 -72.31 498.87 -6.06 0.865 1916 -1918 4 -71.64 499.73 -7.03 0.865 1917 -1919 4 -70.64 503.6 -7.28 0.865 1918 -1920 4 -69.15 505.47 -7.6 0.865 1919 -1921 4 -69.42 508.16 -8.46 0.865 1920 -1922 4 -70.29 509.94 -9.33 0.865 1921 -1923 4 -70.46 511.32 -9.41 0.865 1922 -1924 4 -70.53 513.51 -9.87 0.865 1923 -1925 4 -70.27 516.0 -10.1 0.865 1924 -1926 4 -71.33 518.26 -11.23 0.865 1925 -1927 4 -71.95 520.08 -11.07 0.865 1926 -1928 4 -72.93 522.29 -11.58 0.865 1927 -1929 4 -73.88 523.83 -13.25 0.865 1928 -1930 4 -73.89 525.66 -13.14 0.865 1929 -1931 4 -73.9 529.32 -14.44 0.865 1930 -1932 4 -73.97 529.39 -15.19 0.865 1931 -1933 4 -73.61 531.16 -16.03 0.865 1932 -1934 4 -73.7 533.69 -16.76 0.865 1933 -1935 4 -73.7 535.51 -18.1 0.865 1934 -1936 4 -73.96 537.29 -19.03 0.865 1935 -1937 4 -74.53 539.99 -19.92 0.865 1936 -1938 4 -74.15 542.65 -20.53 0.865 1937 -1939 4 -72.95 545.1 -20.4 0.865 1938 -1940 4 -72.42 548.52 -20.86 0.865 1939 -1941 4 -71.81 551.27 -22.32 0.865 1940 -1942 4 -70.81 554.24 -22.81 0.865 1941 -1943 4 -70.18 556.94 -23.82 0.865 1942 -1944 4 -68.51 558.96 -25.51 0.865 1943 -1945 4 -67.91 560.48 -25.41 0.865 1944 -1946 4 -66.61 561.93 -26.07 0.865 1945 -1947 4 -65.91 563.36 -26.6 0.865 1946 -1948 4 -65.22 566.04 -27.24 0.865 1947 -1949 4 -65.31 567.95 -27.88 0.865 1948 -1950 4 -65.54 570.59 -28.28 0.865 1949 -1951 4 -66.56 574.04 -28.98 0.865 1950 -1952 4 -67.53 578.34 -29.0 0.865 1951 -1953 4 -68.36 581.65 -28.75 0.865 1952 -1954 4 -68.66 585.6 -28.34 0.865 1953 -1955 4 -68.84 588.5 -28.19 0.865 1954 -1956 4 -69.31 591.09 -27.98 0.865 1955 -1957 4 -70.14 594.33 -28.18 0.865 1956 -1958 4 -70.38 596.7 -28.84 0.865 1957 -1959 4 -70.16 598.92 -29.55 0.865 1958 -1960 4 -69.48 600.67 -30.2 0.865 1959 -1961 4 -68.03 601.97 -30.88 0.865 1960 -1962 4 -67.78 602.91 -30.89 0.54 1961 -1963 4 -66.57 605.06 -30.8 0.54 1962 -1964 4 -66.17 605.58 -31.46 0.54 1963 -1965 4 -65.24 606.49 -32.89 0.54 1964 -1966 4 -63.43 608.04 -33.05 0.54 1965 -1967 4 -62.07 608.82 -33.11 0.54 1966 -1968 4 -59.79 609.9 -33.21 0.54 1967 -1969 4 -58.44 610.39 -33.51 0.54 1968 -1970 4 -56.47 611.48 -33.66 0.54 1969 -1971 4 -54.88 612.34 -34.57 0.54 1970 -1972 4 -54.03 612.73 -35.37 0.54 1971 -1973 4 -53.88 612.57 -35.39 0.54 1972 -1974 4 -54.3 613.0 -36.6 0.435 1973 -1975 4 -54.77 613.47 -36.66 0.435 1974 -1976 4 -55.42 613.78 -36.87 0.435 1975 -1977 4 -54.82 614.42 -37.02 0.435 1976 -1978 4 -55.23 614.83 -38.06 0.435 1977 -1979 4 -54.75 615.58 -39.47 0.435 1978 -1980 4 -54.58 616.63 -40.82 0.435 1979 -1981 4 -54.26 617.24 -42.31 0.435 1980 -1982 4 -54.19 617.48 -43.27 0.435 1981 -1983 4 -54.01 617.91 -44.46 0.435 1982 -1984 4 -53.71 618.53 -46.17 0.435 1983 -1985 4 -53.72 619.75 -46.12 0.435 1984 -1986 4 -53.51 621.68 -47.01 0.435 1985 -1987 4 -53.61 623.29 -47.75 0.435 1986 -1988 4 -53.55 625.07 -48.56 0.435 1987 -1989 4 -54.08 626.8 -49.1 0.435 1988 -1990 4 -54.38 628.63 -50.49 0.435 1989 -1991 4 -54.53 630.0 -51.93 0.435 1990 -1992 4 -54.96 632.25 -52.94 0.435 1991 -1993 4 -56.33 633.9 -52.66 0.435 1992 -1994 4 -56.39 634.89 -53.24 0.435 1993 -1995 4 -56.05 635.78 -54.47 0.435 1994 -1996 4 -55.39 636.34 -55.54 0.435 1995 -1997 4 -52.58 613.43 -36.26 0.54 1973 -1998 4 -51.09 614.37 -36.53 0.54 1997 -1999 4 -50.09 615.5 -37.11 0.54 1998 -2000 4 -47.89 617.89 -37.98 0.54 1999 -2001 4 -46.31 618.77 -39.1 0.54 2000 -2002 4 -43.9 620.02 -39.29 0.54 2001 -2003 4 -41.36 621.45 -39.9 0.54 2002 -2004 4 -39.1 623.18 -40.18 0.54 2003 -2005 4 -36.98 625.03 -40.27 0.54 2004 -2006 4 -36.05 626.84 -41.62 0.54 2005 -2007 4 -32.96 629.26 -42.65 0.54 2006 -2008 4 -31.82 631.17 -43.39 0.54 2007 -2009 4 -30.72 634.63 -44.3 0.54 2008 -2010 4 -29.79 636.45 -45.57 0.54 2009 -2011 4 -28.27 637.99 -45.63 0.54 2010 -2012 4 -26.39 639.78 -46.68 0.54 2011 -2013 4 -24.2 640.96 -47.76 0.54 2012 -2014 4 -22.17 641.99 -48.83 0.54 2013 -2015 4 -21.01 642.38 -49.66 0.54 2014 -2016 4 -20.54 642.82 -51.09 0.54 2015 -2017 4 -19.07 644.42 -51.67 0.54 2016 -2018 4 -18.46 645.94 -53.09 0.54 2017 -2019 4 -16.92 649.28 -54.34 0.54 2018 -2020 4 -15.61 651.63 -54.77 0.54 2019 -2021 4 -14.71 653.18 -56.51 0.54 2020 -2022 4 -13.13 656.16 -57.13 0.54 2021 -2023 4 -11.23 657.33 -58.09 0.54 2022 -2024 4 -9.11 658.88 -58.21 0.54 2023 -2025 4 -7.68 660.51 -59.17 0.54 2024 -2026 4 -6.55 662.44 -59.99 0.54 2025 -2027 4 -5.71 664.02 -60.6 0.54 2026 -2028 4 -5.26 665.1 -60.61 0.54 2027 -2029 4 -3.83 667.32 -61.35 0.54 2028 -2030 4 -3.0 668.95 -62.25 0.54 2029 -2031 4 -1.86 672.08 -62.89 0.54 2030 -2032 4 -1.23 674.79 -63.89 0.54 2031 -2033 4 1.18 677.26 -64.02 0.54 2032 -2034 4 4.06 679.87 -64.02 0.54 2033 -2035 4 5.35 680.42 -65.0 0.54 2034 -2036 4 7.82 681.93 -66.22 0.54 2035 -2037 4 10.21 684.13 -66.68 0.54 2036 -2038 4 10.36 684.6 -68.46 0.54 2037 -2039 4 -68.53 604.57 -30.88 0.865 1961 -2040 4 -69.08 609.08 -31.45 0.865 2039 -2041 4 -69.0 614.17 -31.57 0.865 2040 -2042 4 -68.42 616.32 -31.57 0.865 2041 -2043 4 -67.21 619.67 -31.35 0.865 2042 -2044 4 -66.84 625.07 -31.61 0.865 2043 -2045 4 -67.06 630.75 -31.56 0.865 2044 -2046 4 -66.61 633.94 -31.3 0.865 2045 -2047 4 -66.46 637.44 -30.97 0.865 2046 -2048 4 -65.59 640.58 -30.89 0.54 2047 -2049 4 -65.91 644.53 -30.47 0.54 2048 -2050 4 -64.24 649.25 -30.18 0.54 2049 -2051 4 -62.58 652.77 -29.98 0.54 2050 -2052 4 -61.12 655.25 -28.66 0.54 2051 -2053 4 -59.15 659.67 -28.34 0.54 2052 -2054 4 -56.11 663.66 -28.23 0.54 2053 -2055 4 -53.24 668.4 -28.03 0.54 2054 -2056 4 -51.27 673.13 -27.75 0.54 2055 -2057 4 -50.07 679.22 -27.27 0.54 2056 -2058 4 -49.03 684.55 -26.77 0.54 2057 -2059 4 -48.58 689.26 -26.35 0.54 2058 -2060 4 -47.95 693.21 -25.72 0.54 2059 -2061 4 -47.12 696.32 -26.25 0.54 2060 -2062 4 -45.22 698.92 -28.14 0.54 2061 -2063 4 -43.1 701.08 -28.13 0.54 2062 -2064 4 -42.34 703.36 -27.97 0.54 2063 -2065 4 -40.37 706.27 -27.87 0.54 2064 -2066 4 -38.4 709.47 -27.74 0.54 2065 -2067 4 -36.9 713.44 -27.49 0.54 2066 -2068 4 -35.53 717.56 -27.21 0.54 2067 -2069 4 -34.18 720.16 -27.09 0.54 2068 -2070 4 -30.1 723.41 -25.71 0.54 2069 -2071 4 -26.09 725.2 -25.22 0.54 2070 -2072 4 -22.39 726.69 -24.74 0.54 2071 -2073 4 -19.04 728.84 -24.76 0.54 2072 -2074 4 -17.81 729.46 -24.74 0.54 2073 -2075 4 -15.69 732.52 -24.64 0.54 2074 -2076 4 -14.33 735.11 -24.51 0.54 2075 -2077 4 -13.19 736.11 -23.68 0.54 2076 -2078 4 -11.21 738.41 -23.57 0.54 2077 -2079 4 -9.54 739.49 -23.62 0.54 2078 -2080 4 -7.73 740.42 -23.69 0.54 2079 -2081 4 -17.36 277.69 26.92 1.19 1767 -2082 4 -15.39 280.28 26.99 1.19 2081 -2083 4 -13.39 282.85 25.84 1.19 2082 -2084 4 -11.82 284.96 24.78 1.19 2083 -2085 4 -10.56 287.07 23.65 1.19 2084 -2086 4 -8.93 289.09 23.25 1.19 2085 -2087 4 -8.11 290.11 22.28 1.19 2086 -2088 4 -6.9 291.04 22.26 1.19 2087 -2089 4 -5.65 291.83 23.13 0.755 2088 -2090 4 -4.02 293.26 22.67 0.755 2089 -2091 4 -3.27 294.64 22.73 0.755 2090 -2092 4 -2.78 296.0 21.38 1.08 2091 -2093 4 -1.73 298.6 21.55 1.08 2092 -2094 4 -1.02 300.03 21.09 1.08 2093 -2095 4 -0.04 301.18 20.27 1.08 2094 -2096 4 0.25 302.69 20.4 1.08 2095 -2097 4 0.7 304.37 20.52 1.08 2096 -2098 4 1.14 306.06 20.49 1.08 2097 -2099 4 1.18 307.56 19.43 1.08 2098 -2100 4 1.39 309.18 18.43 1.08 2099 -2101 4 1.89 310.03 17.56 0.755 2100 -2102 4 2.2 310.34 17.63 0.755 2101 -2103 4 3.12 311.24 17.78 0.755 2102 -2104 4 4.06 312.43 18.12 1.08 2103 -2105 4 4.95 313.69 17.94 1.08 2104 -2106 4 5.14 314.72 16.74 1.08 2105 -2107 4 4.92 316.75 16.35 1.08 2106 -2108 4 4.92 318.58 16.53 1.08 2107 -2109 4 4.84 319.58 15.73 1.08 2108 -2110 4 5.23 322.22 15.42 1.08 2109 -2111 4 5.35 324.83 15.36 1.08 2110 -2112 4 5.76 326.25 15.0 1.08 2111 -2113 4 6.0 327.82 14.61 1.08 2112 -2114 4 6.98 329.6 13.71 1.08 2113 -2115 4 7.27 332.96 13.94 1.08 2114 -2116 4 7.1 335.85 14.23 1.08 2115 -2117 4 7.55 338.44 14.45 1.08 2116 -2118 4 7.7 341.33 14.71 0.975 2117 -2119 4 7.32 344.13 14.27 0.975 2118 -2120 4 7.16 346.12 14.47 0.975 2119 -2121 4 5.72 348.74 14.18 0.975 2120 -2122 4 4.94 351.03 14.4 0.865 2121 -2123 4 4.62 354.67 14.78 0.865 2122 -2124 4 5.08 357.26 15.0 0.865 2123 -2125 4 6.28 359.11 14.99 0.865 2124 -2126 4 8.1 360.65 14.98 0.865 2125 -2127 4 9.61 362.79 14.96 0.865 2126 -2128 4 10.51 365.85 15.18 0.865 2127 -2129 4 10.8 370.41 15.6 0.865 2128 -2130 4 11.28 374.18 14.71 0.865 2129 -2131 4 12.49 378.15 14.98 0.865 2130 -2132 4 13.09 380.89 15.2 0.865 2131 -2133 4 14.89 386.39 15.5 0.865 2132 -2134 4 16.25 389.6 15.69 0.865 2133 -2135 4 16.25 392.64 15.98 0.865 2134 -2136 4 17.15 395.08 16.21 0.865 2135 -2137 4 18.52 397.07 16.28 0.865 2136 -2138 4 19.73 399.51 16.41 0.865 2137 -2139 4 20.78 402.41 16.59 0.865 2138 -2140 4 20.61 407.73 17.12 0.865 2139 -2141 4 20.7 411.29 16.79 0.865 2140 -2142 4 20.14 414.87 16.27 0.755 2141 -2143 4 19.98 419.9 16.78 0.755 2142 -2144 4 19.66 422.93 17.11 0.755 2143 -2145 4 18.58 425.81 17.49 0.755 2144 -2146 4 18.43 427.18 17.64 0.755 2145 -2147 4 18.88 429.77 17.85 0.755 2146 -2148 4 17.97 431.28 18.08 0.755 2147 -2149 4 16.43 432.48 18.34 0.755 2148 -2150 4 15.96 433.55 18.34 0.755 2149 -2151 4 16.2 436.36 17.98 0.755 2150 -2152 4 17.27 438.02 18.2 0.755 2151 -2153 4 18.34 440.93 18.45 0.755 2152 -2154 4 18.82 442.56 18.88 0.755 2153 -2155 4 18.97 443.93 19.07 0.755 2154 -2156 4 19.27 447.27 19.44 0.755 2155 -2157 4 19.56 450.62 19.74 0.755 2156 -2158 4 20.19 453.33 20.25 0.755 2157 -2159 4 20.94 455.3 20.45 0.755 2158 -2160 4 21.4 457.6 20.64 0.755 2159 -2161 4 22.46 458.97 20.67 0.755 2160 -2162 4 25.04 462.1 21.2 0.755 2161 -2163 4 26.55 466.07 21.44 0.755 2162 -2164 4 27.91 470.5 21.74 0.755 2163 -2165 4 27.89 473.84 22.08 0.755 2164 -2166 4 27.73 475.52 22.25 0.755 2165 -2167 4 28.04 477.66 23.95 0.54 2166 -2168 4 28.02 479.2 24.02 0.54 2167 -2169 4 29.08 480.27 24.02 0.54 2168 -2170 4 29.8 481.69 23.72 0.54 2169 -2171 4 29.64 483.05 23.79 0.54 2170 -2172 4 29.79 484.42 23.99 0.54 2171 -2173 4 29.53 485.89 24.61 0.54 2172 -2174 4 28.98 486.44 25.39 0.54 2173 -2175 4 29.01 488.22 26.02 0.54 2174 -2176 4 28.58 489.55 26.49 0.54 2175 -2177 4 28.94 490.01 26.5 0.54 2176 -2178 4 28.57 490.08 27.45 0.54 2177 -2179 4 27.96 490.68 27.56 0.54 2178 -2180 4 28.41 492.04 27.65 0.54 2179 -2181 4 28.56 494.01 27.91 0.54 2180 -2182 4 29.32 496.3 28.06 0.54 2181 -2183 4 29.76 496.79 27.91 0.54 2182 -2184 4 30.51 498.77 28.04 0.54 2183 -2185 4 30.47 500.33 27.82 0.54 2184 -2186 4 30.32 501.09 27.91 0.54 2185 -2187 4 30.97 501.65 28.36 0.54 2186 -2188 4 31.5 502.03 29.25 0.54 2187 -2189 4 32.59 503.08 29.56 0.54 2188 -2190 4 33.5 503.69 29.54 0.54 2189 -2191 4 34.15 504.26 29.9 0.54 2190 -2192 4 33.99 506.54 30.22 0.54 2191 -2193 4 33.84 508.21 30.4 0.54 2192 -2194 4 33.53 509.12 30.59 0.54 2193 -2195 4 35.06 509.43 30.48 0.435 2194 -2196 4 35.97 511.57 30.68 0.435 2195 -2197 4 37.18 513.69 30.85 0.435 2196 -2198 4 37.04 514.75 31.04 0.435 2197 -2199 4 37.19 516.41 31.26 0.435 2198 -2200 4 38.28 518.06 31.71 0.435 2199 -2201 4 39.65 519.14 31.68 0.435 2200 -2202 4 41.49 521.57 31.98 0.435 2201 -2203 4 41.85 521.81 32.65 0.435 2202 -2204 4 43.07 522.74 32.63 0.435 2203 -2205 4 44.13 523.8 32.7 0.435 2204 -2206 4 45.06 524.72 32.86 0.435 2205 -2207 4 45.85 526.67 33.28 0.435 2206 -2208 4 47.11 528.13 33.91 0.54 2207 -2209 4 48.02 529.06 33.99 0.54 2208 -2210 4 48.39 529.9 34.73 0.54 2209 -2211 4 48.13 531.37 35.42 0.54 2210 -2212 4 48.64 533.6 36.19 0.54 2211 -2213 4 49.72 534.64 36.58 0.54 2212 -2214 4 50.83 536.28 37.09 0.54 2213 -2215 4 51.47 537.45 37.59 0.54 2214 -2216 4 51.81 539.24 38.2 0.54 2215 -2217 4 51.83 540.13 38.5 0.54 2216 -2218 4 51.84 541.34 38.7 0.54 2217 -2219 4 52.15 542.24 38.83 0.54 2218 -2220 4 52.33 543.59 39.32 0.54 2219 -2221 4 53.6 545.36 39.99 0.54 2220 -2222 4 54.28 545.89 40.81 0.54 2221 -2223 4 55.34 546.35 40.83 0.54 2222 -2224 4 56.13 546.78 41.09 0.54 2223 -2225 4 56.77 547.36 41.39 0.54 2224 -2226 4 57.57 548.09 41.93 0.54 2225 -2227 4 57.56 550.21 42.21 0.54 2226 -2228 4 57.72 551.28 42.29 0.54 2227 -2229 4 57.57 552.32 42.56 0.54 2228 -2230 4 58.03 553.09 42.6 0.54 2229 -2231 4 58.34 553.99 42.74 0.54 2230 -2232 4 59.13 554.73 43.11 0.54 2231 -2233 4 59.45 555.63 43.32 0.54 2232 -2234 4 59.32 556.35 43.7 0.54 2233 -2235 4 59.47 558.03 43.94 0.54 2234 -2236 4 58.88 558.3 44.17 0.54 2235 -2237 4 29.04 490.61 26.63 0.54 2177 -2238 4 29.72 492.36 27.64 0.54 2237 -2239 4 30.65 494.47 27.99 0.54 2238 -2240 4 32.98 497.63 28.69 0.54 2239 -2241 4 34.1 499.26 29.35 0.54 2240 -2242 4 34.53 499.43 29.09 0.54 2241 -2243 4 35.37 501.32 28.6 0.54 2242 -2244 4 36.74 502.7 28.61 0.54 2243 -2245 4 37.77 504.43 28.3 0.54 2244 -2246 4 38.65 506.3 28.03 0.54 2245 -2247 4 39.81 507.26 27.49 0.54 2246 -2248 4 41.92 509.73 27.45 0.54 2247 -2249 4 42.23 511.56 27.6 0.54 2248 -2250 4 43.71 512.51 27.26 0.54 2249 -2251 4 44.78 513.28 27.24 0.54 2250 -2252 4 46.29 515.73 27.34 0.54 2251 -2253 4 47.49 518.78 27.44 0.54 2252 -2254 4 48.37 519.74 27.16 0.54 2253 -2255 4 49.59 521.58 27.15 0.54 2254 -2256 4 51.09 522.81 27.13 0.54 2255 -2257 4 51.84 523.29 27.02 0.54 2256 -2258 4 52.76 524.21 26.97 0.54 2257 -2259 4 53.56 524.62 27.46 0.54 2258 -2260 4 54.52 525.19 28.03 0.54 2259 -2261 4 56.24 527.44 28.55 0.54 2260 -2262 4 57.33 528.46 29.0 0.54 2261 -2263 4 58.44 530.41 29.61 0.54 2262 -2264 4 59.99 533.42 30.14 0.54 2263 -2265 4 60.91 535.55 30.41 0.54 2264 -2266 4 61.08 536.92 29.03 0.54 2265 -2267 4 59.7 537.66 29.22 0.54 2266 -2268 4 59.23 538.12 29.16 0.54 2267 -2269 4 59.76 538.5 29.98 0.54 2268 -2270 4 59.88 539.59 29.85 0.54 2269 -2271 4 59.98 539.81 29.25 0.54 2270 -2272 4 59.62 540.17 28.64 0.54 2271 -2273 4 59.29 540.5 28.4 0.54 2272 -2274 4 59.24 541.17 27.94 0.54 2273 -2275 4 59.32 541.68 27.3 0.54 2274 -2276 4 58.81 542.19 26.79 0.54 2275 -2277 4 58.14 543.48 26.23 0.54 2276 -2278 4 58.07 544.76 25.76 0.54 2277 -2279 4 58.32 546.03 25.25 0.54 2278 -2280 4 58.55 547.32 24.67 0.54 2279 -2281 4 58.82 547.67 24.22 0.54 2280 -2282 4 59.4 548.3 24.01 0.54 2281 -2283 4 60.73 549.42 23.54 0.54 2282 -2284 4 61.76 549.92 23.19 0.54 2283 -2285 4 63.43 551.0 23.07 0.54 2284 -2286 4 64.13 552.74 22.58 0.54 2285 -2287 4 64.24 553.84 22.29 0.54 2286 -2288 4 65.11 554.8 21.85 0.54 2287 -2289 4 65.65 555.19 21.08 0.54 2288 -2290 4 66.55 555.81 20.98 0.54 2289 -2291 4 67.24 556.66 20.24 0.54 2290 -2292 4 67.35 556.86 19.72 0.54 2291 -2293 4 68.34 558.0 18.99 0.54 2292 -2294 4 69.21 559.57 18.62 0.54 2293 -2295 4 70.23 560.4 18.14 0.54 2294 -2296 4 70.45 560.79 17.17 0.54 2295 -2297 4 70.86 561.29 16.81 0.54 2296 -2298 4 71.45 561.94 16.52 0.54 2297 -2299 4 72.6 563.83 15.99 0.54 2298 -2300 4 72.7 565.56 15.61 0.54 2299 -2301 4 73.54 568.06 15.03 0.54 2300 -2302 4 74.38 568.75 14.34 0.54 2301 -2303 4 74.67 569.39 12.56 0.54 2302 -2304 4 75.73 570.17 12.39 0.54 2303 -2305 4 76.89 571.45 11.81 0.54 2304 -2306 4 77.94 573.13 11.87 0.54 2305 -2307 4 78.76 575.36 11.1 0.54 2306 -2308 4 79.3 576.06 10.3 0.54 2307 -2309 4 80.31 577.19 9.71 0.54 2308 -2310 4 81.31 578.93 9.17 0.54 2309 -2311 4 82.86 579.76 8.13 0.54 2310 -2312 4 83.76 583.11 8.38 0.54 2311 -2313 4 83.89 585.4 8.52 0.54 2312 -2314 4 83.09 588.03 8.39 0.54 2313 -2315 4 82.89 591.55 8.53 0.54 2314 -2316 4 82.42 594.13 8.74 0.54 2315 -2317 4 82.09 597.81 8.83 0.54 2316 -2318 4 80.69 599.8 8.85 0.54 2317 -2319 4 79.69 600.78 8.21 0.54 2318 -2320 4 26.36 477.48 22.58 0.755 2166 -2321 4 24.42 479.08 23.43 0.755 2320 -2322 4 23.06 481.64 23.96 0.755 2321 -2323 4 21.95 482.74 23.71 0.755 2322 -2324 4 21.76 484.24 25.7 0.755 2323 -2325 4 21.44 485.15 25.82 0.755 2324 -2326 4 21.44 488.19 26.11 0.755 2325 -2327 4 22.34 490.02 26.21 0.54 2326 -2328 4 23.55 491.86 26.27 0.54 2327 -2329 4 24.7 492.57 25.41 0.54 2328 -2330 4 26.64 493.37 25.0 0.54 2329 -2331 4 28.16 494.6 24.99 0.54 2330 -2332 4 29.82 496.6 25.02 0.54 2331 -2333 4 31.5 499.79 25.33 0.54 2332 -2334 4 35.02 503.9 25.71 0.54 2333 -2335 4 36.39 505.89 25.78 0.54 2334 -2336 4 37.44 507.57 25.85 0.54 2335 -2337 4 39.27 508.79 25.87 0.54 2336 -2338 4 41.55 511.1 25.89 0.54 2337 -2339 4 43.37 512.94 25.89 0.54 2338 -2340 4 45.21 515.97 26.41 0.54 2339 -2341 4 46.45 518.1 26.65 0.54 2340 -2342 4 47.53 519.74 27.02 0.54 2341 -2343 4 48.62 522.01 27.43 0.54 2342 -2344 4 50.17 523.2 27.78 0.54 2343 -2345 4 50.85 523.74 28.6 0.54 2344 -2346 4 51.93 524.48 28.81 0.54 2345 -2347 4 53.46 526.01 28.88 0.54 2346 -2348 4 56.05 529.52 29.14 0.54 2347 -2349 4 57.74 531.78 29.58 0.54 2348 -2350 4 58.99 534.18 30.08 0.54 2349 -2351 4 59.92 536.9 30.63 0.54 2350 -2352 4 60.03 537.4 31.74 0.54 2351 -2353 4 59.3 538.72 32.39 0.54 2352 -2354 4 58.51 539.21 30.61 0.54 2353 -2355 4 58.69 540.25 29.33 0.54 2354 -2356 4 58.29 541.25 28.49 0.54 2355 -2357 4 58.14 542.0 28.57 0.54 2356 -2358 4 57.79 542.95 28.32 0.54 2357 -2359 4 57.57 544.41 27.59 0.54 2358 -2360 4 57.43 545.47 26.19 0.54 2359 -2361 4 57.68 547.64 25.92 0.54 2360 -2362 4 58.55 549.2 25.61 0.54 2361 -2363 4 60.81 550.32 25.21 0.54 2362 -2364 4 62.55 551.33 24.39 0.54 2363 -2365 4 64.07 552.86 24.33 0.54 2364 -2366 4 64.52 555.77 24.57 0.54 2365 -2367 4 66.41 556.93 23.6 0.54 2366 -2368 4 67.27 557.6 23.06 0.54 2367 -2369 4 69.63 560.75 22.39 0.54 2368 -2370 4 70.56 562.25 21.01 0.54 2369 -2371 4 71.46 562.88 19.26 0.54 2370 -2372 4 71.6 564.27 19.3 0.54 2371 -2373 4 72.57 565.75 18.3 0.54 2372 -2374 4 72.91 568.45 17.39 0.54 2373 -2375 4 73.87 569.02 16.15 0.54 2374 -2376 4 74.26 569.56 15.34 0.54 2375 -2377 4 74.92 571.33 14.54 0.54 2376 -2378 4 76.82 573.71 13.77 0.54 2377 -2379 4 77.18 574.27 12.73 0.54 2378 -2380 4 78.21 575.39 12.36 0.54 2379 -2381 4 79.55 577.99 12.43 0.54 2380 -2382 4 80.96 580.25 11.3 0.54 2381 -2383 4 81.84 581.2 11.02 0.54 2382 -2384 4 82.74 582.73 11.0 0.54 2383 -2385 4 82.67 584.93 10.54 0.54 2384 -2386 4 82.51 588.13 10.79 0.54 2385 -2387 4 81.97 591.69 10.44 0.54 2386 -2388 4 81.88 593.0 9.67 0.54 2387 -2389 4 81.54 596.06 9.69 0.54 2388 -2390 4 81.34 597.5 9.25 0.54 2389 -2391 4 80.58 599.45 8.0 0.54 2390 -2392 4 79.34 601.89 8.2 0.54 2391 -2393 4 78.44 602.79 6.85 0.54 2392 -2394 4 20.72 483.94 23.94 0.755 2323 -2395 4 19.2 485.14 24.21 0.755 2394 -2396 4 16.73 486.68 24.28 0.755 2395 -2397 4 15.18 489.43 24.38 0.755 2396 -2398 4 14.35 490.85 23.92 0.755 2397 -2399 4 12.92 492.26 23.58 0.755 2398 -2400 4 11.82 493.95 23.63 0.755 2399 -2401 4 9.92 496.43 23.29 0.755 2400 -2402 4 7.41 498.92 23.01 0.755 2401 -2403 4 5.5 501.41 22.6 0.755 2402 -2404 4 4.59 502.93 22.83 0.755 2403 -2405 4 3.9 503.93 22.08 0.755 2404 -2406 4 3.28 506.96 22.44 0.755 2405 -2407 4 1.99 508.53 22.03 0.755 2406 -2408 4 -0.01 509.91 22.05 0.755 2407 -2409 4 -1.77 511.36 21.36 0.755 2408 -2410 4 -4.16 512.8 20.74 0.755 2409 -2411 4 -6.66 514.37 20.37 0.755 2410 -2412 4 -9.32 516.4 20.06 0.755 2411 -2413 4 -11.82 518.26 19.87 0.755 2412 -2414 4 -14.28 520.09 20.05 0.755 2413 -2415 4 -16.46 522.25 20.0 0.755 2414 -2416 4 -18.6 524.05 20.3 0.755 2415 -2417 4 -20.89 525.7 20.67 0.755 2416 -2418 4 -23.94 527.8 21.16 0.755 2417 -2419 4 -26.93 529.84 20.72 0.755 2418 -2420 4 -29.22 531.8 21.05 0.755 2419 -2421 4 -29.98 534.08 21.35 0.755 2420 -2422 4 -30.75 534.84 20.96 0.755 2421 -2423 4 -31.21 536.5 21.16 0.755 2422 -2424 4 -30.76 540.01 21.46 0.755 2423 -2425 4 -30.25 542.53 20.68 0.755 2424 -2426 4 -30.3 545.32 20.51 0.755 2425 -2427 4 -30.29 546.84 19.14 0.755 2426 -2428 4 -30.31 549.89 19.29 0.755 2427 -2429 4 -29.75 552.96 19.23 0.755 2428 -2430 4 -30.09 554.54 18.9 0.755 2429 -2431 4 -31.06 556.7 18.74 0.755 2430 -2432 4 -32.64 557.96 18.4 0.755 2431 -2433 4 -32.86 561.2 18.21 0.755 2432 -2434 4 -33.38 564.45 17.96 0.755 2433 -2435 4 -34.04 566.93 17.68 0.755 2434 -2436 4 -33.96 570.49 17.41 0.755 2435 -2437 4 -33.17 573.98 16.38 0.755 2436 -2438 4 -32.45 577.82 16.32 0.755 2437 -2439 4 -32.12 579.92 15.2 0.755 2438 -2440 4 -32.25 582.78 14.22 0.755 2439 -2441 4 -32.01 584.97 13.8 0.755 2440 -2442 4 -31.58 586.68 13.62 0.755 2441 -2443 4 -30.45 589.2 12.94 0.755 2442 -2444 4 -29.95 590.83 11.99 0.755 2443 -2445 4 -29.68 592.4 11.66 0.755 2444 -2446 4 -29.88 595.32 11.58 0.755 2445 -2447 4 -29.65 597.51 11.17 0.755 2446 -2448 4 -28.28 599.5 11.17 0.755 2447 -2449 4 -26.84 601.72 10.49 0.755 2448 -2450 4 -27.0 604.61 10.79 0.755 2449 -2451 4 -26.27 606.94 10.56 0.755 2450 -2452 4 -25.77 609.69 10.64 0.755 2451 -2453 4 -26.39 612.12 10.93 0.755 2452 -2454 4 -27.3 614.54 11.26 0.755 2453 -2455 4 -28.75 616.58 10.76 0.755 2454 -2456 4 -29.58 619.82 10.55 0.755 2455 -2457 4 -29.82 622.48 10.07 0.755 2456 -2458 4 -30.14 625.24 10.14 0.755 2457 -2459 4 -31.18 628.09 9.23 0.755 2458 -2460 4 -31.97 631.59 9.5 0.755 2459 -2461 4 -33.21 634.65 9.68 0.755 2460 -2462 4 -34.46 637.08 9.95 0.755 2461 -2463 4 -34.52 640.79 9.65 0.755 2462 -2464 4 -35.78 643.25 9.62 0.755 2463 -2465 4 -36.33 645.32 8.9 0.755 2464 -2466 4 -37.28 647.47 8.89 0.755 2465 -2467 4 -38.71 650.71 8.74 0.755 2466 -2468 4 -39.06 654.69 8.85 0.755 2467 -2469 4 -38.94 658.81 9.09 0.755 2468 -2470 4 -38.69 661.92 8.7 0.755 2469 -2471 4 -38.58 665.73 8.9 0.755 2470 -2472 4 -38.48 669.28 8.79 0.755 2471 -2473 4 -36.45 674.25 8.18 0.755 2472 -2474 4 -35.23 677.91 8.42 0.755 2473 -2475 4 -35.36 680.69 7.11 0.755 2474 -2476 4 -35.11 684.39 6.85 0.755 2475 -2477 4 -35.23 686.32 7.57 0.755 2476 -2478 4 -35.07 688.29 7.83 0.755 2477 -2479 4 -35.04 690.69 6.85 0.755 2478 -2480 4 -34.86 693.24 5.88 0.755 2479 -2481 4 -34.95 696.08 5.1 0.755 2480 -2482 4 -35.02 698.27 4.64 0.755 2481 -2483 4 -34.65 700.63 4.07 0.755 2482 -2484 4 -34.07 703.1 3.9 0.755 2483 -2485 4 -32.44 705.74 2.11 0.755 2484 -2486 4 -30.6 706.97 2.06 0.755 2485 -2487 4 -28.65 708.68 1.9 0.755 2486 -2488 4 -27.71 709.59 0.45 0.755 2487 -2489 4 -25.75 710.99 0.26 0.755 2488 -2490 4 -24.15 712.43 -0.41 0.755 2489 -2491 4 -21.64 713.91 -1.26 0.755 2490 -2492 4 -20.49 715.5 -1.96 0.755 2491 -2493 4 -19.15 716.91 -2.25 0.755 2492 -2494 4 -17.57 718.38 -3.09 0.755 2493 -2495 4 -15.77 719.65 -3.57 0.755 2494 -2496 4 -14.31 720.93 -4.04 0.755 2495 -2497 4 -13.02 722.09 -4.96 0.755 2496 -2498 4 -12.3 722.91 -5.48 0.755 2497 -2499 4 0.45 311.01 18.62 0.975 2100 -2500 4 -0.41 312.78 17.74 0.975 2499 -2501 4 -1.24 313.6 17.23 0.975 2500 -2502 4 -1.75 314.11 16.64 0.975 2501 -2503 4 -1.81 316.3 16.33 0.975 2502 -2504 4 -1.73 318.05 15.65 0.975 2503 -2505 4 -2.05 319.58 15.76 0.975 2504 -2506 4 -2.58 321.63 15.25 0.975 2505 -2507 4 -3.23 322.86 15.13 0.975 2506 -2508 4 -4.25 324.19 14.06 0.865 2507 -2509 4 -5.18 325.71 14.3 0.865 2508 -2510 4 -5.49 328.14 14.56 0.865 2509 -2511 4 -4.58 331.49 14.81 0.865 2510 -2512 4 -3.58 333.83 14.42 0.865 2511 -2513 4 -3.49 335.87 13.94 0.865 2512 -2514 4 -3.81 338.62 14.08 0.865 2513 -2515 4 -5.36 341.96 14.47 0.865 2514 -2516 4 -6.25 344.68 13.45 0.865 2515 -2517 4 -7.41 347.64 12.94 0.865 2516 -2518 4 -8.21 349.66 12.76 0.865 2517 -2519 4 -9.21 351.85 12.23 0.865 2518 -2520 4 -9.95 353.8 11.13 0.865 2519 -2521 4 -10.57 356.85 11.42 0.865 2520 -2522 4 -11.34 358.81 11.68 0.865 2521 -2523 4 -12.0 361.28 11.53 0.865 2522 -2524 4 -14.22 363.19 11.01 0.865 2523 -2525 4 -15.83 365.69 10.49 0.865 2524 -2526 4 -18.06 369.41 10.07 0.865 2525 -2527 4 -19.29 373.04 10.54 0.865 2526 -2528 4 -22.14 377.07 10.14 0.865 2527 -2529 4 -23.1 379.24 9.98 0.865 2528 -2530 4 -23.53 380.89 8.84 0.865 2529 -2531 4 -23.88 383.35 8.72 0.865 2530 -2532 4 -24.53 387.03 8.77 0.865 2531 -2533 4 -24.08 389.32 8.95 0.865 2532 -2534 4 -24.09 391.45 9.16 0.865 2533 -2535 4 -24.86 394.03 9.48 0.865 2534 -2536 4 -25.48 395.85 8.05 0.865 2535 -2537 4 -26.13 397.42 7.81 0.865 2536 -2538 4 -26.68 399.8 7.1 0.865 2537 -2539 4 -26.49 400.51 6.33 0.865 2538 -2540 4 -25.58 402.04 6.39 0.865 2539 -2541 4 -24.74 402.73 7.22 0.865 2540 -2542 4 -24.29 404.69 7.51 0.865 2541 -2543 4 -23.23 406.69 7.6 0.755 2542 -2544 4 -22.88 408.46 8.29 0.755 2543 -2545 4 -22.43 409.53 8.35 0.755 2544 -2546 4 -21.7 410.33 8.05 0.755 2545 -2547 4 -20.98 411.14 7.53 0.755 2546 -2548 4 -20.3 412.0 6.66 0.755 2547 -2549 4 -19.27 412.5 6.31 0.755 2548 -2550 4 -18.52 412.96 6.2 0.865 2549 -2551 4 -17.16 414.95 6.27 0.865 2550 -2552 4 -15.9 417.06 5.15 0.865 2551 -2553 4 -14.49 419.23 4.55 0.865 2552 -2554 4 -14.04 422.43 4.83 0.865 2553 -2555 4 -13.9 425.02 3.32 0.865 2554 -2556 4 -14.02 426.97 2.32 0.865 2555 -2557 4 -14.02 429.4 1.04 0.865 2556 -2558 4 -13.44 431.27 0.72 0.865 2557 -2559 4 -12.65 432.3 -0.38 0.865 2558 -2560 4 -11.8 433.29 -1.12 0.865 2559 -2561 4 -10.33 434.26 -1.62 0.865 2560 -2562 4 -9.34 435.12 -2.54 0.865 2561 -2563 4 -7.91 435.84 -3.57 0.865 2562 -2564 4 -6.58 436.96 -3.96 0.865 2563 -2565 4 -5.57 439.61 -4.4 0.865 2564 -2566 4 -5.38 440.92 -5.34 0.865 2565 -2567 4 -4.84 441.91 -6.06 0.865 2566 -2568 4 -4.81 443.41 -7.21 0.865 2567 -2569 4 -4.87 444.69 -7.75 0.865 2568 -2570 4 -5.13 445.57 -8.86 0.865 2569 -2571 4 -5.01 446.65 -8.98 0.865 2570 -2572 4 -4.96 447.81 -9.93 0.865 2571 -2573 4 -5.06 449.15 -10.93 0.865 2572 -2574 4 -4.75 449.29 -11.62 0.54 2573 -2575 4 -3.29 449.98 -12.38 0.54 2574 -2576 4 -2.58 450.49 -13.0 0.54 2575 -2577 4 -2.33 450.54 -13.46 0.54 2576 -2578 4 -1.64 451.07 -14.22 0.54 2577 -2579 4 -0.5 452.39 -15.11 0.54 2578 -2580 4 -0.14 453.85 -15.99 0.54 2579 -2581 4 -0.05 454.99 -16.57 0.54 2580 -2582 4 0.18 455.67 -17.28 0.54 2581 -2583 4 0.48 455.98 -17.35 0.54 2582 -2584 4 0.13 456.62 -17.63 0.54 2583 -2585 4 0.62 457.37 -18.97 0.54 2584 -2586 4 -0.14 458.15 -20.56 0.54 2585 -2587 4 -0.75 459.36 -22.05 0.54 2586 -2588 4 -1.78 460.98 -22.94 0.54 2587 -2589 4 -1.54 462.27 -23.57 0.54 2588 -2590 4 -0.84 464.32 -24.05 0.54 2589 -2591 4 -1.11 464.9 -25.33 0.54 2590 -2592 4 -0.49 465.5 -25.11 0.54 2591 -2593 4 -0.34 466.55 -24.94 0.54 2592 -2594 4 -0.49 467.31 -26.45 0.54 2593 -2595 4 -0.39 468.13 -26.97 0.54 2594 -2596 4 -0.74 470.01 -27.28 0.54 2595 -2597 4 -0.97 470.83 -27.87 0.54 2596 -2598 4 -1.67 472.13 -28.58 0.54 2597 -2599 4 -0.75 473.06 -28.65 0.54 2598 -2600 4 0.2 473.93 -29.71 0.54 2599 -2601 4 0.79 474.26 -29.96 0.54 2600 -2602 4 2.11 475.08 -30.54 0.54 2601 -2603 4 2.81 475.31 -31.25 0.54 2602 -2604 4 3.67 475.98 -31.81 0.54 2603 -2605 4 5.03 477.05 -31.82 0.54 2604 -2606 4 5.69 477.93 -32.93 0.54 2605 -2607 4 6.67 479.09 -33.81 0.54 2606 -2608 4 7.67 481.74 -34.25 0.54 2607 -2609 4 8.44 482.82 -35.8 0.54 2608 -2610 4 9.07 484.33 -37.16 0.54 2609 -2611 4 9.71 485.22 -38.41 0.54 2610 -2612 4 10.16 485.67 -38.41 0.54 2611 -2613 4 11.12 486.86 -39.51 0.54 2612 -2614 4 11.62 487.59 -40.69 0.54 2613 -2615 4 12.5 488.85 -40.96 0.54 2614 -2616 4 13.86 490.84 -40.89 0.54 2615 -2617 4 14.78 491.76 -40.88 0.54 2616 -2618 4 15.2 492.24 -41.18 0.54 2617 -2619 4 15.27 493.08 -41.94 0.54 2618 -2620 4 16.1 493.79 -42.86 0.54 2619 -2621 4 16.49 494.33 -43.6 0.54 2620 -2622 4 16.5 494.62 -45.07 0.54 2621 -2623 4 17.73 495.24 -45.13 0.54 2622 -2624 4 18.31 495.88 -45.34 0.54 2623 -2625 4 18.85 496.56 -46.09 0.54 2624 -2626 4 19.69 497.56 -46.82 0.54 2625 -2627 4 20.38 498.39 -47.49 0.54 2626 -2628 4 21.06 499.85 -48.25 0.54 2627 -2629 4 21.6 501.14 -48.84 0.54 2628 -2630 4 22.39 502.73 -48.76 0.54 2629 -2631 4 22.61 503.49 -49.38 0.54 2630 -2632 4 23.96 504.88 -49.45 0.54 2631 -2633 4 25.57 508.45 -49.93 0.54 2632 -2634 4 26.97 511.91 -50.78 0.54 2633 -2635 4 27.71 513.93 -50.89 0.54 2634 -2636 4 28.54 515.53 -51.56 0.54 2635 -2637 4 28.97 516.64 -51.94 0.54 2636 -2638 4 29.65 518.08 -52.54 0.54 2637 -2639 4 30.79 519.69 -53.39 0.54 2638 -2640 4 32.95 523.04 -54.55 0.54 2639 -2641 4 33.78 525.84 -55.04 0.54 2640 -2642 4 34.99 529.21 -56.49 0.54 2641 -2643 4 35.75 531.81 -57.97 0.54 2642 -2644 4 36.13 533.87 -58.56 0.54 2643 -2645 4 35.91 537.95 -58.37 0.54 2644 -2646 4 36.37 539.31 -59.71 0.54 2645 -2647 4 37.22 541.51 -60.26 0.54 2646 -2648 4 37.72 543.15 -61.28 0.54 2647 -2649 4 38.29 543.73 -61.27 0.54 2648 -2650 4 38.41 544.21 -61.54 0.11 2649 -2651 4 37.6 545.31 -61.8 0.435 2650 -2652 4 36.83 548.18 -61.46 0.435 2651 -2653 4 36.22 550.02 -61.31 0.435 2652 -2654 4 35.87 550.37 -61.69 0.435 2653 -2655 4 35.35 553.01 -61.99 0.435 2654 -2656 4 34.88 554.08 -61.91 0.435 2655 -2657 4 35.14 556.25 -62.18 0.435 2656 -2658 4 35.21 557.09 -63.01 0.435 2657 -2659 4 35.17 557.73 -63.25 0.435 2658 -2660 4 35.41 559.32 -63.79 0.435 2659 -2661 4 35.81 559.85 -64.46 0.435 2660 -2662 4 35.76 560.51 -64.85 0.435 2661 -2663 4 36.27 561.21 -65.89 0.435 2662 -2664 4 36.21 562.19 -66.39 0.435 2663 -2665 4 36.15 562.25 -67.05 0.435 2664 -2666 4 36.99 563.24 -67.71 0.435 2665 -2667 4 38.29 565.32 -68.54 0.435 2666 -2668 4 38.96 565.85 -67.72 0.435 2667 -2669 4 39.41 566.93 -67.72 0.435 2668 -2670 4 39.67 567.27 -68.17 0.435 2669 -2671 4 39.73 567.54 -69.29 0.435 2670 -2672 4 40.12 568.06 -69.95 0.435 2671 -2673 4 40.64 568.76 -70.84 0.435 2672 -2674 4 40.89 569.12 -71.43 0.435 2673 -2675 4 41.23 569.41 -72.72 0.435 2674 -2676 4 42.55 570.23 -73.3 0.435 2675 -2677 4 43.04 570.96 -74.47 0.435 2676 -2678 4 44.59 571.87 -75.89 0.435 2677 -2679 4 46.21 572.71 -76.57 0.435 2678 -2680 4 47.96 574.0 -77.28 0.435 2679 -2681 4 48.98 574.52 -77.86 0.435 2680 -2682 4 49.68 575.06 -78.69 0.435 2681 -2683 4 51.18 576.3 -78.86 0.435 2682 -2684 4 52.38 576.63 -79.02 0.435 2683 -2685 4 53.07 576.56 -79.84 0.435 2684 -2686 4 53.63 576.92 -80.4 0.435 2685 -2687 4 54.5 577.58 -80.94 0.435 2686 -2688 4 38.92 545.0 -61.35 0.54 2649 -2689 4 39.59 545.86 -62.32 0.54 2688 -2690 4 39.83 547.44 -62.8 0.54 2689 -2691 4 40.2 548.91 -63.59 0.54 2690 -2692 4 39.93 549.79 -64.76 0.54 2691 -2693 4 40.73 551.11 -64.25 0.54 2692 -2694 4 42.55 552.96 -64.25 0.54 2693 -2695 4 44.21 554.65 -64.3 0.54 2694 -2696 4 44.58 555.52 -65.24 0.54 2695 -2697 4 45.64 557.2 -65.18 0.54 2696 -2698 4 46.81 559.99 -66.97 0.54 2697 -2699 4 48.13 562.04 -67.51 0.54 2698 -2700 4 49.0 564.21 -67.81 0.54 2699 -2701 4 50.03 565.33 -68.19 0.54 2700 -2702 4 50.9 566.28 -68.55 0.54 2701 -2703 4 52.68 567.85 -68.94 0.54 2702 -2704 4 56.02 571.54 -68.89 0.54 2703 -2705 4 58.84 573.92 -69.67 0.54 2704 -2706 4 60.43 575.37 -70.44 0.54 2705 -2707 4 61.6 576.65 -70.87 0.54 2706 -2708 4 63.19 579.03 -71.7 0.54 2707 -2709 4 63.94 579.81 -71.76 0.54 2708 -2710 4 65.4 581.1 -72.45 0.54 2709 -2711 4 66.7 581.94 -73.17 0.54 2710 -2712 4 69.07 583.76 -73.37 0.54 2711 -2713 4 70.55 584.43 -73.95 0.54 2712 -2714 4 72.2 585.53 -74.23 0.54 2713 -2715 4 73.5 586.37 -74.95 0.54 2714 -2716 4 74.67 587.34 -75.5 0.54 2715 -2717 4 76.08 588.98 -76.59 0.54 2716 -2718 4 78.19 590.26 -76.9 0.54 2717 -2719 4 79.84 591.64 -76.99 0.54 2718 -2720 4 80.71 592.31 -77.6 0.54 2719 -2721 4 82.15 593.33 -78.55 0.54 2720 -2722 4 82.64 594.06 -79.73 0.54 2721 -2723 4 84.0 594.84 -79.86 0.54 2722 -2724 4 84.73 595.34 -80.26 0.54 2723 -2725 4 85.78 596.12 -80.35 0.54 2724 -2726 4 86.62 596.81 -81.11 0.54 2725 -2727 4 -5.68 450.37 -10.83 0.755 2573 -2728 4 -7.62 451.97 -11.56 0.755 2727 -2729 4 -8.69 452.12 -11.59 0.755 2728 -2730 4 -10.72 453.23 -11.83 0.755 2729 -2731 4 -11.21 454.92 -11.91 0.755 2730 -2732 4 -12.07 457.6 -12.63 0.755 2731 -2733 4 -12.78 459.52 -13.43 0.755 2732 -2734 4 -13.79 461.13 -14.09 0.755 2733 -2735 4 -14.92 462.85 -14.51 0.755 2734 -2736 4 -16.0 466.65 -14.1 0.755 2735 -2737 4 -17.08 471.05 -13.58 0.65 2736 -2738 4 -17.55 473.64 -13.28 0.65 2737 -2739 4 -18.17 476.06 -12.99 0.65 2738 -2740 4 -18.93 477.41 -12.79 0.65 2739 -2741 4 -18.92 478.03 -12.72 0.65 2740 -2742 4 -19.99 479.08 -12.52 0.65 2741 -2743 4 -20.0 481.22 -12.32 0.65 2742 -2744 4 -20.47 484.1 -11.99 0.65 2743 -2745 4 -21.39 487.12 -11.61 0.65 2744 -2746 4 -22.53 489.47 -12.03 0.65 2745 -2747 4 -23.69 491.23 -12.66 0.65 2746 -2748 4 -25.08 494.72 -12.35 0.65 2747 -2749 4 -26.47 498.82 -11.82 0.65 2748 -2750 4 -27.38 501.55 -11.47 0.65 2749 -2751 4 -28.46 503.51 -11.17 0.65 2750 -2752 4 -29.07 504.49 -11.02 0.65 2751 -2753 4 -28.35 504.98 -11.42 0.54 2752 -2754 4 -27.59 505.75 -11.41 0.54 2753 -2755 4 -26.52 506.52 -11.44 0.54 2754 -2756 4 -25.61 507.43 -11.43 0.54 2755 -2757 4 -25.62 508.66 -11.31 0.54 2756 -2758 4 -25.5 509.45 -11.63 0.54 2757 -2759 4 -24.78 510.86 -11.86 0.54 2758 -2760 4 -24.04 512.26 -12.01 0.54 2759 -2761 4 -22.72 514.91 -12.41 0.54 2760 -2762 4 -21.39 515.71 -12.76 0.54 2761 -2763 4 -20.04 517.11 -12.96 0.54 2762 -2764 4 -18.72 518.54 -13.41 0.54 2763 -2765 4 -17.36 519.63 -13.58 0.54 2764 -2766 4 -16.54 521.23 -14.33 0.54 2765 -2767 4 -15.85 523.9 -14.89 0.54 2766 -2768 4 -15.57 526.04 -14.86 0.54 2767 -2769 4 -14.71 528.24 -15.25 0.54 2768 -2770 4 -14.13 529.49 -15.49 0.54 2769 -2771 4 -11.55 531.19 -15.62 0.54 2770 -2772 4 -9.73 533.95 -15.53 0.54 2771 -2773 4 -8.89 536.13 -15.92 0.54 2772 -2774 4 -8.8 538.78 -16.35 0.54 2773 -2775 4 -7.45 543.52 -16.1 0.54 2774 -2776 4 -7.16 546.86 -15.79 0.54 2775 -2777 4 -6.71 550.38 -15.49 0.54 2776 -2778 4 -6.26 552.04 -15.37 0.54 2777 -2779 4 -6.58 554.78 -15.08 0.54 2778 -2780 4 -6.43 557.07 -14.86 0.54 2779 -2781 4 -5.68 559.05 -14.74 0.54 2780 -2782 4 -4.0 560.12 -14.79 0.54 2781 -2783 4 -3.71 562.26 -14.61 0.54 2782 -2784 4 -3.24 565.75 -14.08 0.54 2783 -2785 4 -3.1 568.93 -13.79 0.54 2784 -2786 4 -2.49 570.47 -13.69 0.54 2785 -2787 4 -2.65 573.04 -13.35 0.54 2786 -2788 4 -3.35 576.46 -12.2 0.54 2787 -2789 4 -3.06 579.81 -11.9 0.54 2788 -2790 4 -1.85 581.94 -11.8 0.54 2789 -2791 4 -0.34 585.61 -11.58 0.54 2790 -2792 4 1.06 590.57 -10.55 0.54 2791 -2793 4 1.36 592.1 -10.43 0.54 2792 -2794 4 2.42 593.18 -10.43 0.54 2793 -2795 4 3.33 594.09 -10.42 0.54 2794 -2796 4 4.09 596.99 -10.21 0.54 2795 -2797 4 5.18 601.67 -9.4 0.54 2796 -2798 4 6.39 605.03 -9.1 0.54 2797 -2799 4 8.17 608.71 -7.63 0.54 2798 -2800 4 8.66 611.57 -6.94 0.54 2799 -2801 4 8.85 612.9 -6.37 0.54 2800 -2802 4 8.73 614.22 -5.85 0.54 2801 -2803 4 8.63 615.53 -5.1 0.54 2802 -2804 4 8.21 617.15 -4.3 0.54 2803 -2805 4 7.77 618.49 -3.91 0.54 2804 -2806 4 -29.22 505.49 -10.91 0.65 2752 -2807 4 -30.38 510.28 -11.25 0.65 2806 -2808 4 -30.54 512.56 -11.01 0.65 2807 -2809 4 -31.88 517.53 -11.53 0.65 2808 -2810 4 -32.81 520.25 -11.18 0.65 2809 -2811 4 -34.59 524.5 -10.76 0.65 2810 -2812 4 -35.11 527.47 -11.17 0.65 2811 -2813 4 -36.54 531.0 -11.15 0.65 2812 -2814 4 -37.46 534.04 -12.51 0.65 2813 -2815 4 -38.11 536.8 -12.49 0.65 2814 -2816 4 -39.15 539.05 -13.45 0.65 2815 -2817 4 -39.8 541.51 -13.53 0.65 2816 -2818 4 -41.08 544.31 -13.82 0.65 2817 -2819 4 -43.01 547.42 -14.25 0.65 2818 -2820 4 -43.05 550.19 -14.34 0.65 2819 -2821 4 -43.57 552.83 -14.65 0.65 2820 -2822 4 -44.35 554.81 -14.47 0.65 2821 -2823 4 -45.33 556.4 -14.97 0.65 2822 -2824 4 -45.18 558.68 -14.83 0.65 2823 -2825 4 -45.56 560.87 -15.27 0.65 2824 -2826 4 -46.54 563.05 -15.64 0.65 2825 -2827 4 -47.8 564.91 -15.72 0.65 2826 -2828 4 -48.62 566.93 -15.99 0.65 2827 -2829 4 -49.69 569.52 -15.7 0.65 2828 -2830 4 -51.23 572.23 -15.3 0.65 2829 -2831 4 -52.47 575.28 -15.03 0.65 2830 -2832 4 -52.71 577.04 -15.75 0.65 2831 -2833 4 -52.46 581.04 -15.91 0.65 2832 -2834 4 -52.79 585.91 -15.41 0.65 2833 -2835 4 -53.43 588.98 -15.36 0.65 2834 -2836 4 -54.13 591.48 -15.95 0.65 2835 -2837 4 -54.63 593.8 -16.06 0.65 2836 -2838 4 -55.34 595.72 -16.87 0.65 2837 -2839 4 -56.04 597.02 -17.65 0.65 2838 -2840 4 -56.59 599.4 -18.27 0.65 2839 -2841 4 -58.6 603.8 -17.89 0.65 2840 -2842 4 -59.74 607.65 -17.79 0.65 2841 -2843 4 -61.44 612.95 -17.11 0.65 2842 -2844 4 -62.51 614.61 -16.85 0.65 2843 -2845 4 -64.65 617.03 -16.41 0.65 2844 -2846 4 -66.74 620.92 -16.99 0.65 2845 -2847 4 -68.28 626.39 -16.31 0.65 2846 -2848 4 -69.9 630.41 -16.74 0.65 2847 -2849 4 -70.57 634.1 -16.78 0.65 2848 -2850 4 -72.15 636.28 -17.02 0.65 2849 -2851 4 -74.14 639.76 -16.5 0.65 2850 -2852 4 -76.29 642.78 -16.08 0.65 2851 -2853 4 -80.28 645.82 -15.8 0.65 2852 -2854 4 -83.81 648.7 -15.27 0.65 2853 -2855 4 -86.4 652.46 -14.66 0.65 2854 -2856 4 -86.7 653.63 -16.33 0.65 2855 -2857 4 -88.69 656.8 -15.83 0.65 2856 -2858 4 -90.16 660.37 -16.26 0.65 2857 -2859 4 -90.83 664.69 -16.31 0.65 2858 -2860 4 -92.21 668.77 -15.78 0.65 2859 -2861 4 -92.89 672.19 -16.15 0.65 2860 -2862 4 -94.32 674.81 -16.28 0.65 2861 -2863 4 -95.39 676.78 -15.99 0.65 2862 -2864 4 -96.13 678.12 -17.23 0.65 2863 -2865 4 -97.23 680.42 -17.13 0.65 2864 -2866 4 -98.4 681.58 -18.04 0.65 2865 -2867 4 -99.66 684.65 -18.01 0.65 2866 -2868 4 -100.65 686.24 -18.59 0.65 2867 -2869 4 -101.65 687.22 -19.15 0.65 2868 -2870 4 -101.87 688.35 -19.78 0.65 2869 -2871 4 -102.17 690.47 -19.47 0.65 2870 -2872 4 -102.02 693.06 -19.23 0.65 2871 -2873 4 -102.79 694.41 -19.03 0.65 2872 -2874 4 -103.4 696.84 -18.74 0.65 2873 -2875 4 -103.41 699.89 -18.43 0.65 2874 -2876 4 -103.28 701.26 -18.4 0.65 2875 -2877 4 -102.84 703.86 -18.25 0.65 2876 -2878 4 -102.62 706.68 -18.84 0.65 2877 -2879 4 -102.17 708.97 -18.65 0.65 2878 -2880 4 -101.57 712.62 -18.36 0.65 2879 -2881 4 -101.12 716.13 -18.05 0.65 2880 -2882 4 -101.59 719.31 -17.7 0.65 2881 -2883 4 -101.45 723.13 -17.34 0.65 2882 -2884 4 -100.55 727.08 -17.04 0.65 2883 -2885 4 -99.54 730.7 -16.84 0.65 2884 -2886 4 -99.0 736.53 -16.86 0.65 2885 -2887 4 -98.71 738.97 -16.65 0.65 2886 -2888 4 -97.84 739.93 -17.09 0.65 2887 -2889 4 -96.18 741.32 -17.26 0.65 2888 -2890 4 -94.52 743.93 -17.16 0.65 2889 -2891 4 -93.56 748.14 -17.82 0.65 2890 -2892 4 -93.31 750.02 -18.19 0.65 2891 -2893 4 -92.56 752.01 -18.14 0.65 2892 -2894 4 -91.61 753.82 -19.26 0.65 2893 -2895 4 -90.7 754.74 -19.33 0.65 2894 -2896 4 -103.71 688.65 -19.73 0.65 2869 -2897 4 -105.4 690.34 -19.64 0.65 2896 -2898 4 -107.22 692.14 -20.81 0.65 2897 -2899 4 -108.98 692.97 -21.48 0.65 2898 -2900 4 -110.42 694.08 -21.92 0.65 2899 -2901 4 -112.79 695.52 -22.47 0.65 2900 -2902 4 -114.23 696.65 -22.99 0.65 2901 -2903 4 -115.02 697.43 -23.2 0.65 2902 -2904 4 -116.57 700.18 -23.02 0.65 2903 -2905 4 -117.92 701.51 -24.12 0.65 2904 -2906 4 -118.68 703.48 -23.87 0.65 2905 -2907 4 -119.14 706.06 -23.57 0.65 2906 -2908 4 -118.3 710.09 -23.85 0.65 2907 -2909 4 -117.2 712.04 -24.91 0.65 2908 -2910 4 -116.16 715.54 -24.73 0.65 2909 -2911 4 -115.67 719.32 -25.62 0.65 2910 -2912 4 -115.32 721.72 -26.63 0.65 2911 -2913 4 -114.96 723.78 -27.29 0.65 2912 -2914 4 -114.38 725.05 -27.67 0.65 2913 -2915 4 -113.51 726.6 -27.98 0.65 2914 -2916 4 -113.22 728.44 -27.91 0.65 2915 -2917 4 -112.84 730.5 -28.49 0.65 2916 -2918 4 -27.98 401.37 6.92 0.65 2538 -2919 4 -29.04 402.74 7.15 0.65 2918 -2920 4 -31.79 405.45 7.68 0.65 2919 -2921 4 -34.06 407.7 6.67 0.65 2920 -2922 4 -35.9 409.5 7.01 0.65 2921 -2923 4 -38.35 411.92 7.41 0.65 2922 -2924 4 -41.44 414.68 7.43 0.65 2923 -2925 4 -46.14 419.63 7.14 0.65 2924 -2926 4 -48.43 422.49 7.62 0.65 2925 -2927 4 -48.54 425.34 6.78 0.65 2926 -2928 4 -48.64 428.77 6.22 0.65 2927 -2929 4 -48.07 430.64 5.89 0.65 2928 -2930 4 -47.63 433.53 6.06 0.54 2929 -2931 4 -47.99 435.73 5.77 0.54 2930 -2932 4 -48.6 437.55 4.35 0.54 2931 -2933 4 -49.3 438.85 3.63 0.54 2932 -2934 4 -49.29 439.74 5.46 0.54 2933 -2935 4 -50.1 440.54 5.16 0.54 2934 -2936 4 -50.96 441.39 4.26 0.54 2935 -2937 4 -51.52 442.86 3.39 0.54 2936 -2938 4 -52.49 444.74 3.07 0.54 2937 -2939 4 -53.85 447.31 1.86 0.54 2938 -2940 4 -54.82 448.87 1.56 0.54 2939 -2941 4 -54.78 450.35 0.58 0.54 2940 -2942 4 -55.02 452.7 0.0 0.54 2941 -2943 4 -55.12 454.94 -0.91 0.54 2942 -2944 4 -55.78 456.2 -1.17 0.54 2943 -2945 4 -57.93 457.42 -1.09 0.54 2944 -2946 4 -60.72 460.18 -1.02 0.54 2945 -2947 4 -61.87 463.13 -1.44 0.54 2946 -2948 4 -62.44 464.91 -2.35 0.54 2947 -2949 4 -62.81 466.19 -2.88 0.54 2948 -2950 4 -62.67 466.98 -3.04 0.54 2949 -2951 4 -5.99 292.26 22.29 0.865 2088 -2952 4 -5.25 294.24 22.42 0.865 2951 -2953 4 -4.94 296.38 22.6 0.865 2952 -2954 4 -3.89 299.58 22.82 0.865 2953 -2955 4 -1.99 302.56 22.11 0.865 2954 -2956 4 -0.94 304.26 22.18 0.865 2955 -2957 4 -0.79 306.85 22.41 0.865 2956 -2958 4 -1.4 310.18 22.8 0.865 2957 -2959 4 -2.07 313.26 24.29 0.865 2958 -2960 4 -1.92 315.84 24.61 0.865 2959 -2961 4 -2.08 318.11 24.91 0.865 2960 -2962 4 -2.39 321.15 25.24 0.865 2961 -2963 4 -3.31 324.17 25.7 0.865 2962 -2964 4 -4.07 326.74 26.09 0.65 2963 -2965 4 -6.04 328.69 26.61 0.65 2964 -2966 4 -7.57 332.02 27.16 0.65 2965 -2967 4 -8.07 332.51 28.39 0.65 2966 -2968 4 -9.45 333.87 28.64 0.65 2967 -2969 4 -11.59 335.97 29.04 0.65 2968 -2970 4 -12.81 339.01 29.46 0.65 2969 -2971 4 -14.35 342.33 29.92 0.65 2970 -2972 4 -16.34 344.9 30.36 0.65 2971 -2973 4 -18.01 346.25 30.64 0.65 2972 -2974 4 -19.26 348.09 32.3 0.65 2973 -2975 4 -19.83 349.85 33.05 0.65 2974 -2976 4 -20.38 351.0 33.9 0.65 2975 -2977 4 -21.41 352.01 34.62 0.65 2976 -2978 4 -21.71 352.9 34.81 0.65 2977 -2979 4 -21.97 353.78 35.37 0.65 2978 -2980 4 -21.82 356.05 35.65 0.65 2979 -2981 4 -21.83 358.78 35.92 0.65 2980 -2982 4 -21.29 360.38 36.93 0.65 2981 -2983 4 -20.75 362.49 38.54 0.65 2982 -2984 4 -19.8 363.97 39.11 0.65 2983 -2985 4 -19.08 364.47 40.23 0.65 2984 -2986 4 -18.66 364.64 41.56 0.65 2985 -2987 4 -18.04 365.84 41.93 0.65 2986 -2988 4 -17.67 365.79 42.5 0.65 2987 -2989 4 -17.2 365.91 44.37 0.65 2988 -2990 4 -6.61 91.18 9.77 0.435 1189 -2991 4 -7.98 91.62 9.94 0.435 2990 -2992 4 -8.7 91.42 10.44 0.435 2991 -2993 4 -8.69 91.11 10.56 0.65 2992 -2994 4 -8.95 90.75 11.08 0.65 2993 -2995 4 -8.89 90.09 11.62 0.65 2994 -2996 4 -9.16 89.43 11.96 0.65 2995 -2997 4 -9.56 88.31 12.41 0.65 2996 -2998 4 -9.55 87.99 12.53 0.65 2997 -2999 4 -9.83 87.06 12.69 0.65 2998 -3000 4 -9.81 86.44 12.78 0.65 2999 -3001 4 -9.77 86.09 13.2 0.65 3000 -3002 4 -9.87 85.27 13.65 0.65 3001 -3003 4 -9.68 84.79 13.89 0.65 3002 -3004 4 -9.21 84.32 13.95 0.65 3003 -3005 4 -8.85 83.96 14.57 0.65 3004 -3006 4 -8.62 83.72 15.35 0.65 3005 -3007 4 -8.21 83.31 16.42 0.65 3006 -3008 4 -7.9 82.7 16.39 0.65 3007 -3009 4 -7.85 82.04 16.93 0.65 3008 -3010 4 -7.79 81.68 17.42 0.65 3009 -3011 4 -7.91 80.57 17.78 0.435 3010 -3012 4 -7.99 80.05 18.49 0.435 3011 -3013 4 -7.97 79.73 18.53 0.435 3012 -3014 4 -8.26 79.11 18.65 0.435 3013 -3015 4 -8.4 78.63 18.84 0.435 3014 -3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc b/examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc deleted file mode 100644 index 1a48b8f..0000000 --- a/examples/tutorials/Rdesigneur/cells/barrionuevo_cell1zr.CNG.swc +++ /dev/null @@ -1,2267 +0,0 @@ -# Original file cell1zr.txt.swc edited by Duncan Donohue using StdSwc version 1.21 on 5/25/05. -# Irregularities and fixes documented in cell1zr.txt.swc.std. See StdSwc1.21.doc for more information. -# -# Amaral to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu -# Original fileName:H:\\cells\\ca3\\henze\\cell1zr.txt -# -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 -1.135 21 1.692 6.603 -1 - 2 2 0 0 0 0.9 1 - 3 2 -1.5 0 -2 0.9 2 - 4 2 -2.5 -6.5 -2 0.9 3 - 5 2 -7.5 -10.5 0 0.9 4 - 6 2 -10 -14 -7 0.9 5 - 7 2 -10 -18.5 -13.5 0.9 6 - 8 2 -10.5 -22 -17 0.9 7 - 9 2 -9 -26 -18 0.9 8 - 10 2 -7.5 -29.5 -19 0.3 9 - 11 2 -6.5 -36.5 -13.5 0.3 10 - 12 2 -5.5 -44.5 -14.5 0.3 11 - 13 2 -8 -50.5 -14.5 0.3 12 - 14 2 -9.5 -54 -17 0.3 13 - 15 2 -8.5 -60 -18 0.3 14 - 16 2 -9.5 -67 -18 0.3 15 - 17 2 -9 -77.5 -19 0.3 16 - 18 2 -8 -86.5 -20 0.3 17 - 19 2 -5.5 -93 -20 0.3 18 - 20 2 -6.5 -100 -19 0.3 19 - 21 2 -6 -106 -19 0.3 20 - 22 2 -7.5 -110.5 -19 0.3 21 - 23 2 -7.5 -116 -19 0.3 22 - 24 2 -8 -118.5 -19 0.3 23 - 25 2 -9.5 -125 -22 0.3 24 - 26 2 -11.5 -129.5 -22 0.3 25 - 27 2 -16.5 -133.5 -22 0.3 26 - 28 2 -20 -138 -30.5 0.3 27 - 29 2 -21 -142 -30.5 0.3 28 - 30 2 -20 -144 -30.5 0.3 29 - 31 2 -21 -148.5 -29.5 0.3 30 - 32 2 -22 -151 -29.5 0.2 31 - 33 2 -21 -155.5 -29.5 0.2 32 - 34 2 -19.5 -160 -28.5 0.2 33 - 35 2 -5.5 -124.5 -19 0.3 24 - 36 2 -4 -130 -19 0.3 35 - 37 2 -2.5 -135 -20 0.3 36 - 38 2 -4 -140 -20 0.3 37 - 39 2 -4 -143.5 -20 0.3 38 - 40 2 3 -151 -15.5 0.3 39 - 41 2 8.5 -157 -10.5 0.3 40 - 42 2 11.5 -162 -10.5 0.3 41 - 43 2 15.5 -165 -10.5 0.3 42 - 44 2 20 -164.5 -9.5 0.2 43 - 45 2 -4 -36 -10.5 0.55 9 - 46 2 -2.5 -41 -10.5 0.55 45 - 47 2 3.5 -44 -10.5 0.55 46 - 48 2 6.5 -47.5 -10.5 0.55 47 - 49 2 10.5 -49.5 -9.5 0.55 48 - 50 2 13 -55 -15.5 0.55 49 - 51 2 16 -60 -15.5 0.4 50 - 52 2 22 -63 -19 0.4 51 - 53 2 28 -67.5 -19 0.4 52 - 54 2 40 -69.5 -18 0.4 53 - 55 2 48 -69 -18 0.4 54 - 56 2 57 -69.5 -17 0.4 55 - 57 2 68 -69.5 -12.5 0.4 56 - 58 2 73 -71 -12.5 0.4 57 - 59 2 79.5 -74.5 -12.5 0.4 58 - 60 2 84.5 -76 -12.5 0.4 59 - 61 2 86.5 -77 -12.5 0.4 60 - 62 2 87.5 -80.5 -11.5 0.4 61 - 63 2 91 -82.5 -11.5 0.4 62 - 64 2 94.5 -85 -6 0.4 63 - 65 2 99.5 -90 -5 0.4 64 - 66 2 104 -93 0 0.4 65 - 67 2 105.5 -96.5 3.5 0.3 66 - 68 2 106.5 -102 6.5 0.3 67 - 69 2 108.5 -107.5 13 0.3 68 - 70 2 108.5 -113 18 0.3 69 - 71 2 111.5 -115.5 22.5 0.3 70 - 72 2 115.5 -123 28.5 0.3 71 - 73 2 122 -128 36 0.3 72 - 74 2 123.5 -132.5 38.5 0.3 73 - 75 2 134.5 -139 38.5 0.3 74 - 76 2 138 -141.5 46.5 0.3 75 - 77 2 142 -143 46.5 0.3 76 - 78 2 148.5 -148 52 0.3 77 - 79 2 153.5 -148.5 50 0.3 78 - 80 2 158 -150 56.5 0.3 79 - 81 2 162 -151 59.5 0.3 80 - 82 2 167 -152 61.5 0.3 81 - 83 2 171 -151.5 61.5 0.3 82 - 84 2 176 -153 63.5 0.3 83 - 85 2 182 -155 64.5 0.3 84 - 86 2 184.5 -154 66 0.3 85 - 87 2 192.5 -156.5 64.5 0.3 86 - 88 2 193 -157 63.5 0.3 87 - 89 2 197 -155 62.5 0.3 88 - 90 2 205.5 -156 69 0.3 89 - 91 2 211 -157.5 70 0.3 90 - 92 2 213.5 -156.5 70 0.3 91 - 93 2 218 -158 75.5 0.3 92 - 94 2 223.5 -159.5 74 0.3 93 - 95 2 229.5 -161 73 0.3 94 - 96 2 236 -161 74 0.3 95 - 97 2 244 -160 75.5 0.3 96 - 98 2 254 -159 79.5 0.3 97 - 99 2 262.5 -158.5 79.5 0.3 98 - 100 2 271.5 -160.5 82.5 0.3 99 - 101 2 278 -159.5 85 0.3 100 - 102 2 285 -157 89 0.3 101 - 103 2 290.5 -154 89 0.3 102 - 104 2 298.5 -153 90 0.3 103 - 105 2 303 -151.5 90 0.3 104 - 106 2 309.5 -149 90 0.3 105 - 107 2 318.5 -151.5 95.5 0.3 106 - 108 2 323 -150.5 97.5 0.3 107 - 109 2 329 -146 100.5 0.3 108 - 110 2 334 -147.5 104 0.3 109 - 111 2 340.5 -147.5 108 0.3 110 - 112 2 346 -146.5 111.5 0.3 111 - 113 2 351.5 -145.5 114.5 0.3 112 - 114 2 356 -147.5 116.5 0.3 113 - 115 2 356 -147.5 115.5 0.3 114 - 116 2 89.5 -77.5 -23 0.2 61 - 117 2 93 -75 -33.5 0.2 116 - 118 2 97.5 -69.5 -39 0.2 117 - 119 2 98.5 -67 -49.5 0.2 118 - 120 2 102 -62 -49.5 0.2 119 - 121 2 104.5 -56 -57 0.2 120 - 122 2 109 -53 -61 0.2 121 - 123 2 115 -52 -70.5 0.2 122 - 124 2 114.5 -46 -82.5 0.2 123 - 125 2 116 -43 -100.5 0.2 124 - 126 2 120 -37 -112 0.2 125 - 127 2 127 -33 -129 0.2 126 - 128 2 138.5 -32.5 -131 0.2 127 - 129 2 148 -29.5 -148 0.2 128 - 130 2 157.5 -26.5 -156.5 0.2 129 - 131 2 166 -22.5 -160.5 0.2 130 - 132 2 173 -17 -163 0.2 131 - 133 2 181 -18 -174.5 0.2 132 - 134 2 189 -20.5 -178.5 0.2 133 - 135 2 202 -20 -183 0.2 134 - 136 2 205.5 -15.5 -191.5 0.2 135 - 137 2 211 -11 -194.5 0.2 136 - 138 2 223 -8 -196.5 0.2 137 - 139 2 229.5 -4 -209.5 0.2 138 - 140 2 234 4 -206 0.2 139 - 141 2 238 8.5 -207 0.2 140 - 142 2 237.5 13 -209.5 0.2 141 - 143 2 242.5 16 -212.5 0.2 142 - 144 2 246.5 17 -220 0.2 143 - 145 2 249.5 21.5 -212.5 0.2 144 - 146 2 253.5 27.5 -219 0.2 145 - 147 2 256 31 -223 0.2 146 - 148 2 263 37.5 -217 0.2 147 - 149 2 268 42 -215.5 0.2 148 - 150 2 273.5 45.5 -214.5 0.2 149 - 151 2 276.5 49.5 -224 0.2 150 - 152 2 280.5 51.5 -229.5 0.2 151 - 153 2 288 58 -233.5 0.2 152 - 154 2 289.5 61 -238 0.2 153 - 155 2 294 62.5 -237 0.2 154 - 156 2 298.5 64 -241 0.2 155 - 157 2 305.5 69 -248.5 0.2 156 - 158 2 306.5 71.5 -246.5 0.2 157 - 159 2 310 73.5 -246.5 0.2 158 - 160 2 317 82 -247.5 0.2 159 - 161 2 322 85 -247.5 0.2 160 - 162 2 331 88 -263.5 0.2 161 - 163 2 332 92 -263.5 0.2 162 - 164 2 338 95 -263.5 0.2 163 - 165 2 342.5 98 -263.5 0.2 164 - 166 2 346 96 -256 0.2 165 - 167 2 349.5 99.5 -256 0.2 166 - 168 2 353.5 102 -269.5 0.2 167 - 169 2 360 104 -275 0.2 168 - 170 2 361.5 108.5 -275 0.2 169 - 171 2 367 109.5 -275 0.2 170 - 172 2 367.5 112.5 -275 0.2 171 - 173 2 375.5 110.5 -279 0.2 172 - 174 2 380 111.5 -279 0.2 173 - 175 2 382.5 115 -280 0.2 174 - 176 2 386.5 114.5 -280 0.2 175 - 177 2 340 103.5 -259 0.2 165 - 178 2 338 106.5 -262.5 0.2 177 - 179 2 337 109.5 -264.5 0.2 178 - 180 2 334.5 113.5 -266.5 0.2 179 - 181 2 333.5 118.5 -259 0.2 180 - 182 2 333.5 123.5 -255 0.2 181 - 183 2 332 130 -255 0.2 182 - 184 2 333 138 -254 0.2 183 - 185 2 334 149 -248.5 0.2 184 - 186 2 338 160.5 -240 0.2 185 - 187 2 340.5 168 -237 0.2 186 - 188 2 345 174.5 -229.5 0.2 187 - 189 2 346 181 -223 0.2 188 - 190 2 346 188.5 -218 0.2 189 - 191 2 347 192 -213.5 0.2 190 - 192 2 353.5 199.5 -209.5 0.2 191 - 193 2 355 206 -207 0.2 192 - 194 2 357 211.5 -205 0.2 193 - 195 2 359 217 -195.5 0.2 194 - 196 2 359.5 218 -195.5 0.2 195 - 197 2 361 225 -195.5 0.2 196 - 198 2 364 234 -195.5 0.2 197 - 199 2 369.5 248 -185 0.2 198 - 200 2 370.5 258 -174.5 0.2 199 - 201 2 372.5 265.5 -171.5 0.2 200 - 202 2 374.5 274.5 -164 0.2 201 - 203 2 375.5 286 -143.5 0.2 202 - 204 2 374.5 295 -130 0.2 203 - 205 2 377.5 303 -129 0.2 204 - 206 2 384.5 314 -128 0.2 205 - 207 2 392 327 -123.5 0.2 206 - 208 2 395 336 -118.5 0.2 207 - 209 2 396 341 -114 0.2 208 - 210 2 399 349 -113 0.2 209 - 211 2 403.5 358 -111 0.2 210 - 212 2 408.5 367 -108 0.2 211 - 213 2 414 372 -111 0.2 212 - 214 2 427 387 -127 0.2 213 - 215 2 429 389 -126 0.2 214 - 216 2 341.5 110.5 -261 0.2 179 - 217 2 345 117 -260 0.2 216 - 218 2 347.5 126.5 -257 0.2 217 - 219 2 349 133 -257 0.2 218 - 220 2 351 145 -265.5 0.2 219 - 221 2 353 150 -267.5 0.2 220 - 222 2 350.5 150.5 -272 0.2 221 - 223 2 359 158 -273 0.2 222 - 224 2 362 167.5 -278 0.2 223 - 225 2 363 175.5 -279 0.2 224 - 226 2 363.5 180 -275 0.2 225 - 227 2 366.5 188.5 -274 0.2 226 - 228 2 366 197.5 -274 0.2 227 - 229 2 376 196 -278 0.2 228 - 230 2 389.5 199 -260 0.2 229 - 231 2 405 208.5 -260 0.2 230 - 232 2 420.5 210 -255 0.2 231 - 233 2 427.5 204 -229.5 0.2 232 - 234 2 430.5 202 -232.5 0.2 233 - 235 2 345.5 157 -267.5 0.2 222 - 236 4 -0.5 41.5 -9.5 3.9 1 - 237 4 -0.5 49.5 -8.5 3.6 236 - 238 4 -1.5 55 -6 3.65 237 - 239 4 -0.5 59.5 -11.5 3.65 238 - 240 4 -2 65.5 -11.5 2.45 239 - 241 4 -4 69.5 -11.5 3.2 240 - 242 4 -8.5 71.5 -10.5 1.8 241 - 243 4 -12 75 -8.5 1.6 242 - 244 4 -14.5 76.5 -8.5 1.6 243 - 245 4 -15 80 -8.5 1.6 244 - 246 4 -17 84.5 -8.5 1.3 245 - 247 4 -19 86.5 -8.5 1.3 246 - 248 4 -21 89.5 -4 1.3 247 - 249 4 -22.5 93.5 -3 1.3 248 - 250 4 -24.5 98.5 -4 1.3 249 - 251 4 -25.5 102.5 0 1.3 250 - 252 4 -26.5 105.5 3.5 1.3 251 - 253 4 -27 109 4.5 1.3 252 - 254 4 -27.5 112 5.5 1.2 253 - 255 4 -29.5 116 5.5 1.2 254 - 256 4 -29.5 117 5.5 1.2 255 - 257 4 -33 118 2.5 0.65 256 - 258 4 -37 119.5 6.5 0.6 257 - 259 4 -39.5 120 6.5 0.6 258 - 260 4 -42 122 4.5 0.6 259 - 261 4 -45 123.5 5.5 0.6 260 - 262 4 -47 125.5 5.5 0.6 261 - 263 4 -49.5 125.5 7.5 0.45 262 - 264 4 -54 127 8.5 0.45 263 - 265 4 -57.5 128.5 8.5 0.45 264 - 266 4 -60 129 12 0.45 265 - 267 4 -63 131 14 0.45 266 - 268 4 -63.5 132 15 0.45 267 - 269 4 -66.5 131.5 21.5 0.4 268 - 270 4 -68.5 130 23.5 0.4 269 - 271 4 -71 129 28.5 0.4 270 - 272 4 -72 130 28.5 0.3 271 - 273 4 -73.5 130.5 28.5 0.3 272 - 274 4 -73.5 132 27.5 0.3 273 - 275 4 -75.5 131.5 33 0.3 274 - 276 4 -77 132 34 0.3 275 - 277 4 -78 132.5 36 0.3 276 - 278 4 -79.5 132.5 39.5 0.3 277 - 279 4 -81.5 133.5 43.5 0.3 278 - 280 4 -84.5 133.5 40.5 0.3 279 - 281 4 -86.5 134 43.5 0.3 280 - 282 4 -88.5 134.5 41.5 0.3 281 - 283 4 -91 132.5 40.5 0.2 282 - 284 4 -91 132.5 41.5 0.2 283 - 285 4 -66 133.5 17 0.4 268 - 286 4 -68.5 134.5 17 0.4 285 - 287 4 -70.5 137 15 0.4 286 - 288 4 -71 139.5 14 0.4 287 - 289 4 -72.5 141 13 0.4 288 - 290 4 -73.5 144.5 12 0.4 289 - 291 4 -74 147 14 0.3 290 - 292 4 -76 151 15 0.3 291 - 293 4 -75 153 16 0.3 292 - 294 4 -77 156.5 17 0.3 293 - 295 4 -78.5 160 15 0.3 294 - 296 4 -79 162.5 14 0.3 295 - 297 4 -81 164.5 14 0.3 296 - 298 4 -82.5 166.5 19 0.3 297 - 299 4 -84 171 17 0.2 298 - 300 4 -86 174 20.5 0.2 299 - 301 4 -90 177 20.5 0.2 300 - 302 4 -89.5 180 20.5 0.2 301 - 303 4 -91 182 20.5 0.2 302 - 304 4 -92.5 185 18 0.2 303 - 305 4 -93.5 187.5 18 0.2 304 - 306 4 -95 193 21.5 0.2 305 - 307 4 -95 193 22.5 0.2 306 - 308 4 -29.5 118 8.5 0.85 256 - 309 4 -31.5 120.5 7.5 0.85 308 - 310 4 -33 124 18 0.85 309 - 311 4 -35 129.5 20.5 0.85 310 - 312 4 -36.5 134 20.5 0.85 311 - 313 4 -36.5 134 21.5 0.85 312 - 314 4 -38 135 21.5 0.55 313 - 315 4 -41 137 30 0.55 314 - 316 4 -42.5 139 28.5 0.55 315 - 317 4 -44 139.5 34 0.55 316 - 318 4 -45 140.5 36 0.45 317 - 319 4 -44.5 142.5 36 0.45 318 - 320 4 -43.5 145 36 0.45 319 - 321 4 -43.5 146 37 0.4 320 - 322 4 -42 150.5 39.5 0.4 321 - 323 4 -40.5 152.5 39.5 0.4 322 - 324 4 -41 156 43.5 0.4 323 - 325 4 -40.5 157 43.5 0.4 324 - 326 4 -38.5 160 48 0.4 325 - 327 4 -38 162.5 54 0.4 326 - 328 4 -41 163.5 54 0.4 327 - 329 4 -44.5 164.5 60.5 0.4 328 - 330 4 -45.5 167 60.5 0.3 329 - 331 4 -48 166.5 59.5 0.3 330 - 332 4 -50 165 61.5 0.3 331 - 333 4 -49.5 167.5 68 0.3 332 - 334 4 -52 170 67 0.3 333 - 335 4 -53.5 171.5 70 0.3 334 - 336 4 -54 176.5 73 0.3 335 - 337 4 -56 177.5 75.5 0.3 336 - 338 4 -58 178.5 79.5 0.3 337 - 339 4 -57.5 181.5 81.5 0.3 338 - 340 4 -57 182.5 80.5 0.3 339 - 341 4 -59.5 183.5 86 0.3 340 - 342 4 -58.5 186 88 0.3 341 - 343 4 -58 188 88 0.3 342 - 344 4 -58.5 188.5 86 0.2 343 - 345 4 -60 190 90 0.2 344 - 346 4 -58.5 192.5 91 0.15 345 - 347 4 -38 165 50 0.3 327 - 348 4 -37.5 167 55 0.3 347 - 349 4 -39.5 172 59.5 0.3 348 - 350 4 -38 174 63.5 0.3 349 - 351 4 -38 176 64.5 0.3 350 - 352 4 -38 177.5 68 0.3 351 - 353 4 -37 181 68 0.3 352 - 354 4 -38.5 181.5 69 0.3 353 - 355 4 -40 183 73 0.3 354 - 356 4 -40 185 76.5 0.3 355 - 357 4 -40.5 187.5 80.5 0.3 356 - 358 4 -40 189 85 0.3 357 - 359 4 -38 191 89 0.3 358 - 360 4 -37 192.5 89 0.3 359 - 361 4 -39 140 20.5 0.65 313 - 362 4 -39 143.5 19 0.65 361 - 363 4 -39.5 146.5 18 0.65 362 - 364 4 -41 151 18 0.65 363 - 365 4 -42 155.5 17 0.65 364 - 366 4 -42.5 158 22.5 0.65 365 - 367 4 -43.5 161.5 22.5 0.65 366 - 368 4 -44 164 23.5 0.65 367 - 369 4 -43.5 167.5 23.5 0.65 368 - 370 4 -44.5 169.5 22.5 0.65 369 - 371 4 -46 171.5 21.5 0.65 370 - 372 4 -48 174 21.5 0.65 371 - 373 4 -49 176.5 26.5 0.65 372 - 374 4 -50.5 178.5 26.5 0.65 373 - 375 4 -52.5 181 27.5 0.65 374 - 376 4 -53.5 184 27.5 0.65 375 - 377 4 -54.5 187 28.5 0.65 376 - 378 4 -54 189 30 0.65 377 - 379 4 -54 192 31 0.65 378 - 380 4 -54.5 194 30 0.65 379 - 381 4 -58 201 33 0.65 380 - 382 4 -59.5 205 35 0.65 381 - 383 4 -59.5 207.5 36 0.65 382 - 384 4 -60.5 209.5 34 0.65 383 - 385 4 -63.5 212 33 0.65 384 - 386 4 -65.5 215.5 41.5 0.65 385 - 387 4 -66.5 218 44.5 0.65 386 - 388 4 -68 221.5 45.5 0.65 387 - 389 4 -68 223 50 0.65 388 - 390 4 -70 223.5 50 0.65 389 - 391 4 -70.5 226.5 51 0.65 390 - 392 4 -71 231 51 0.65 391 - 393 4 -71 233 54 0.65 392 - 394 4 -73 235.5 58.5 0.65 393 - 395 4 -73.5 235.5 56.5 0.65 394 - 396 4 -75.5 237.5 60.5 0.65 395 - 397 4 -78.5 242 52 0.65 396 - 398 4 -80.5 244.5 51 0.65 397 - 399 4 -82 247 50 0.6 398 - 400 4 -82.5 250.5 58.5 0.6 399 - 401 4 -82.5 253.5 57.5 0.6 400 - 402 4 -83.5 256.5 59.5 0.6 401 - 403 4 -85 259.5 61.5 0.6 402 - 404 4 -87 262.5 64.5 0.6 403 - 405 4 -88 263.5 64.5 0.6 404 - 406 4 -88.5 267.5 62.5 0.6 405 - 407 4 -87.5 270.5 62.5 0.6 406 - 408 4 -88.5 274 62.5 0.6 407 - 409 4 -90 278 60.5 0.6 408 - 410 4 -92 278.5 59.5 0.6 409 - 411 4 -94 283.5 59.5 0.6 410 - 412 4 -93.5 286 59.5 0.6 411 - 413 4 -93 289 68 0.6 412 - 414 4 -94.5 293.5 66 0.6 413 - 415 4 -99 295 64.5 0.2 414 - 416 4 -101.5 297.5 72 0.2 415 - 417 4 -104 298 74 0.2 416 - 418 4 -105.5 301.5 74 0.2 417 - 419 4 -111 303.5 70 0.2 418 - 420 4 -112.5 306.5 71 0.2 419 - 421 4 -115 307 70 0.2 420 - 422 4 -116.5 308.5 71 0.2 421 - 423 4 -118.5 310 73 0.2 422 - 424 4 -121.5 311.5 75.5 0.2 423 - 425 4 -127 314 74 0.2 424 - 426 4 -127 314 75.5 0.2 425 - 427 4 -96 297.5 69 0.45 414 - 428 4 -95.5 299.5 67 0.45 427 - 429 4 -97 302 70 0.45 428 - 430 4 -99 304 70 0.45 429 - 431 4 -101.5 305 72 0.45 430 - 432 4 -103.5 306 72 0.45 431 - 433 4 -104 309 71 0.45 432 - 434 4 -106.5 310 77.5 0.45 433 - 435 4 -110.5 311 79.5 0.4 434 - 436 4 -109.5 312.5 77.5 0.4 435 - 437 4 -113.5 315.5 78.5 0.4 436 - 438 4 -115.5 318.5 81.5 0.4 437 - 439 4 -118.5 321.5 80.5 0.4 438 - 440 4 -121 323.5 81.5 0.4 439 - 441 4 -123 326 82.5 0.4 440 - 442 4 -126 327.5 88 0.4 441 - 443 4 -129.5 330.5 87 0.4 442 - 444 4 -131 333 88 0.4 443 - 445 4 -134.5 334 89 0.4 444 - 446 4 -137 338 88 0.4 445 - 447 4 -139 342 91 0.4 446 - 448 4 -138.5 343.5 91 0.4 447 - 449 4 -142 347 94.5 0.4 448 - 450 4 -141.5 352.5 93.5 0.3 449 - 451 4 -140.5 356 93.5 0.3 450 - 452 4 -141 358 98.5 0.3 451 - 453 4 -142 360.5 97.5 0.3 452 - 454 4 -144 362.5 96.5 0.3 453 - 455 4 -144.5 364 96.5 0.3 454 - 456 4 -144.5 364 93.5 0.3 455 - 457 4 -146.5 367.5 96.5 0.2 456 - 458 4 -147 372.5 100.5 0.2 457 - 459 4 -149 375 100.5 0.2 458 - 460 4 -151 376.5 100.5 0.2 459 - 461 4 -150.5 377 100.5 0.2 460 - 462 4 -152.5 379.5 104 0.2 461 - 463 4 -154 379.5 103 0.2 462 - 464 4 -154.5 378.5 106 0.2 463 - 465 4 -156 378 105 0.2 464 - 466 4 -158 379.5 105 0.2 465 - 467 4 -157.5 380.5 104 0.2 466 - 468 4 -156 381 102 0.2 463 - 469 4 -157 382.5 104 0.2 468 - 470 4 -158 384 103 0.2 469 - 471 4 -159 384 102 0.2 470 - 472 4 -143.5 368 99.5 0.2 456 - 473 4 -143 370.5 99.5 0.2 472 - 474 4 -142 373 99.5 0.2 473 - 475 4 -143.5 375 99.5 0.2 474 - 476 4 -143 377.5 106 0.2 475 - 477 4 -142.5 379 104 0.2 476 - 478 4 -143.5 381.5 104 0.2 477 - 479 4 -145 384 102 0.2 478 - 480 4 -104 311.5 68 0.3 433 - 481 4 -104.5 314.5 67 0.3 480 - 482 4 -105.5 318.5 69 0.3 481 - 483 4 -105 321 69 0.3 482 - 484 4 -105.5 325.5 69 0.3 483 - 485 4 -107.5 329 66 0.3 484 - 486 4 -107.5 332 66 0.3 485 - 487 4 -108.5 336.5 69 0.3 486 - 488 4 -108.5 342.5 68 0.2 487 - 489 4 -69.5 235 58.5 0.3 395 - 490 4 -69.5 238 63.5 0.3 489 - 491 4 -69.5 241 67 0.3 490 - 492 4 -67.5 243 70 0.3 491 - 493 4 -65.5 245 69 0.3 492 - 494 4 -65.5 251 74 0.3 493 - 495 4 -64 252 75.5 0.3 494 - 496 4 -60.5 253.5 77.5 0.3 495 - 497 4 -61 256 77.5 0.3 496 - 498 4 -60 258.5 79.5 0.3 497 - 499 4 -59.5 260 81.5 0.3 498 - 500 4 -60 262 84 0.3 499 - 501 4 -60.5 262.5 85 0.3 500 - 502 4 -60 265.5 85 0.3 501 - 503 4 -59 267.5 87 0.3 502 - 504 4 -58 270 82.5 0.3 503 - 505 4 -57.5 271.5 82.5 0.3 504 - 506 4 -57 274.5 86 0.3 505 - 507 4 -57 276.5 86 0.3 506 - 508 4 -55.5 279.5 84 0.3 507 - 509 4 -53 280.5 80.5 0.2 508 - 510 4 -53.5 282 84 0.2 509 - 511 4 -56 283 82.5 0.2 510 - 512 4 -56 283 84 0.2 511 - 513 4 -53.5 197.5 31 0.3 380 - 514 4 -54.5 202 31 0.3 513 - 515 4 -53 208 23.5 0.3 514 - 516 4 -54 210 23.5 0.3 515 - 517 4 -53 214 22.5 0.3 516 - 518 4 -52.5 218 21.5 0.3 517 - 519 4 -51 221.5 21.5 0.3 518 - 520 4 -52 225.5 22.5 0.3 519 - 521 4 -52.5 229 21.5 0.3 520 - 522 4 -52 231.5 21.5 0.3 521 - 523 4 -53 235 20.5 0.3 522 - 524 4 -54 238 21.5 0.3 523 - 525 4 -53.5 240 21.5 0.2 524 - 526 4 -54 246.5 21.5 0.2 525 - 527 4 -53 250 17 0.2 526 - 528 4 -53.5 254 14 0.2 527 - 529 4 -52 258 12 0.2 528 - 530 4 -51.5 267 12 0.2 529 - 531 4 -50.5 270.5 12 0.2 530 - 532 4 -49.5 276.5 13 0.2 531 - 533 4 -47.5 283.5 14 0.2 532 - 534 4 -47 286.5 13 0.15 533 - 535 4 -45.5 292.5 6.5 0.15 534 - 536 4 -2.5 70.5 -11.5 1.8 241 - 537 4 -3 76 -9.5 1.8 536 - 538 4 -4.5 79 -10.5 1.8 537 - 539 4 -6.5 83.5 -7 0.9 538 - 540 4 -8 88 0 0.9 539 - 541 4 -7 91 0 0.9 540 - 542 4 -8 96.5 -1 0.9 541 - 543 4 -9 99.5 -2 0.9 542 - 544 4 -10.5 101.5 6.5 0.9 543 - 545 4 -11 103.5 9.5 0.9 544 - 546 4 -10.5 108.5 11 0.9 545 - 547 4 -11.5 111 7.5 0.9 546 - 548 4 -11.5 115 6.5 0.9 547 - 549 4 -11.5 118.5 14 0.9 548 - 550 4 -13 128 14 0.85 549 - 551 4 -14.5 136 15 0.65 550 - 552 4 -16 141.5 16 0.65 551 - 553 4 -15 144 16 0.65 552 - 554 4 -15.5 148 16 0.65 553 - 555 4 -16.5 155 16 0.65 554 - 556 4 -16.5 158.5 15 0.65 555 - 557 4 -17.5 163 15 0.65 556 - 558 4 -19 167 18 0.65 557 - 559 4 -18 170.5 18 0.65 558 - 560 4 -18 173 18 0.65 559 - 561 4 -19 176.5 18 0.65 560 - 562 4 -20.5 181.5 24.5 0.65 561 - 563 4 -21 183.5 24.5 0.65 562 - 564 4 -21.5 188 24.5 0.65 563 - 565 4 -21.5 190.5 24.5 0.65 564 - 566 4 -23 194.5 24.5 0.65 565 - 567 4 -24 198.5 24.5 0.65 566 - 568 4 -25 200.5 27.5 0.65 567 - 569 4 -27.5 206.5 25.5 0.65 568 - 570 4 -28.5 209 25.5 0.65 569 - 571 4 -29 214 25.5 0.65 570 - 572 4 -29.5 215.5 31 0.65 571 - 573 4 -30 220 31 0.65 572 - 574 4 -31.5 222.5 31 0.65 573 - 575 4 -32 225.5 31 0.65 574 - 576 4 -31 229.5 34 0.65 575 - 577 4 -32 231 34 0.65 576 - 578 4 -33 235.5 32 0.65 577 - 579 4 -32.5 238 34 0.65 578 - 580 4 -31.5 242.5 33 0.65 579 - 581 4 -31.5 247 39.5 0.6 580 - 582 4 -32 252.5 37 0.6 581 - 583 4 -30.5 256 38.5 0.6 582 - 584 4 -31 263.5 39.5 0.6 583 - 585 4 -32.5 266 46.5 0.6 584 - 586 4 -35 266.5 45.5 0.6 585 - 587 4 -36 268.5 49 0.6 586 - 588 4 -36.5 271.5 49 0.6 587 - 589 4 -36.5 275.5 53 0.6 588 - 590 4 -39 286 55 0.6 589 - 591 4 -40 294 58.5 0.6 590 - 592 4 -39.5 296.5 58.5 0.6 591 - 593 4 -37 300.5 58.5 0.6 592 - 594 4 -36.5 301.5 60.5 0.55 593 - 595 4 -35.5 304.5 60.5 0.55 594 - 596 4 -36 306 59.5 0.55 595 - 597 4 -37.5 309.5 58.5 0.55 596 - 598 4 -38.5 313.5 58.5 0.55 597 - 599 4 -40 317.5 62.5 0.45 598 - 600 4 -41.5 320.5 63.5 0.45 599 - 601 4 -42 324 63.5 0.4 600 - 602 4 -43 326.5 63.5 0.4 601 - 603 4 -45 328 63.5 0.4 602 - 604 4 -47.5 329.5 63.5 0.4 603 - 605 4 -51 333.5 63.5 0.4 604 - 606 4 -49.5 336.5 63.5 0.4 605 - 607 4 -52 341.5 63.5 0.4 606 - 608 4 -56 343.5 63.5 0.4 607 - 609 4 -61 346.5 64.5 0.4 608 - 610 4 -65 350 60.5 0.4 609 - 611 4 -69 353.5 72 0.3 610 - 612 4 -72.5 357 73 0.3 611 - 613 4 -75.5 362 75.5 0.3 612 - 614 4 -78.5 367.5 76.5 0.3 613 - 615 4 -86 377.5 75.5 0.3 614 - 616 4 -89.5 383 78.5 0.3 615 - 617 4 -89 390 79.5 0.3 616 - 618 4 -92 398 79.5 0.3 617 - 619 4 -96.5 405 80.5 0.3 618 - 620 4 -101 409.5 79.5 0.3 619 - 621 4 -103.5 412.5 79.5 0.3 620 - 622 4 -105.5 419 79.5 0.3 621 - 623 4 -109.5 424.5 79.5 0.3 622 - 624 4 -110.5 428.5 79.5 0.3 623 - 625 4 -111.5 432.5 79.5 0.3 624 - 626 4 -118.5 436.5 85 0.3 625 - 627 4 -121 439 85 0.3 626 - 628 4 -121.5 444.5 85 0.3 627 - 629 4 -125 447.5 81.5 0.3 628 - 630 4 -126.5 448.5 81.5 0.3 629 - 631 4 -128.5 452.5 80.5 0.3 630 - 632 4 -130 454 80.5 0.3 631 - 633 4 -132.5 456.5 80.5 0.2 632 - 634 4 -137 460 80.5 0.2 633 - 635 4 -138 463 76.5 0.2 634 - 636 4 -139 467 76.5 0.2 635 - 637 4 -140 474 76.5 0.2 636 - 638 4 -141.5 478.5 75.5 0.2 637 - 639 4 -140 482.5 75.5 0.2 638 - 640 4 -143 486.5 75.5 0.2 639 - 641 4 -144.5 490.5 78.5 0.2 640 - 642 4 -143 494.5 78.5 0.2 641 - 643 4 -143 500.5 78.5 0.2 642 - 644 4 -144 503 84 0.2 643 - 645 4 -143.5 507 84 0.2 644 - 646 4 -142.5 509 84 0.2 645 - 647 4 -142 515 90 0.2 646 - 648 4 -146 522.5 89 0.2 647 - 649 4 -148.5 523.5 89 0.2 648 - 650 4 -149.5 527 92 0.2 649 - 651 4 -153 528.5 92 0.2 650 - 652 4 -156 530 93.5 0.2 651 - 653 4 -156 530 92 0.2 652 - 654 4 -33 317 57.5 0.4 598 - 655 4 -33 319 57.5 0.4 654 - 656 4 -31.5 321 61.5 0.4 655 - 657 4 -31 324.5 60.5 0.4 656 - 658 4 -31 328.5 59.5 0.4 657 - 659 4 -31.5 331 59.5 0.4 658 - 660 4 -31 336 61.5 0.3 659 - 661 4 -33 339 62.5 0.3 660 - 662 4 -32 344 62.5 0.3 661 - 663 4 -35.5 349 61.5 0.3 662 - 664 4 -35.5 354 70 0.3 663 - 665 4 -31 381 68 0.3 664 - 666 4 -31 392 69 0.3 665 - 667 4 -32 403 69 0.3 666 - 668 4 -35.5 417 69 0.3 667 - 669 4 -35 419.5 73 0.3 668 - 670 4 -37.5 430.5 70 0.3 669 - 671 4 -39 437 68 0.3 670 - 672 4 -44 444.5 71 0.3 671 - 673 4 -48 459.5 67 0.3 672 - 674 4 -49 466 66 0.3 673 - 675 4 -50.5 476 63.5 0.2 674 - 676 4 -50.5 489 62.5 0.2 675 - 677 4 -50 497 64.5 0.2 676 - 678 4 -51 503.5 64.5 0.2 677 - 679 4 -53 505.5 63.5 0.2 678 - 680 4 -52.5 513.5 64.5 0.2 679 - 681 4 -53 515.5 66 0.2 680 - 682 4 -55.5 524 64.5 0.15 681 - 683 4 -55.5 524 67 0.15 682 - 684 4 -51.5 520.5 64.5 0.2 681 - 685 4 -53 523.5 63.5 0.2 684 - 686 4 -54.5 525.5 66 0.2 685 - 687 4 -56.5 528.5 63.5 0.2 686 - 688 4 -58 532.5 61.5 0.2 687 - 689 4 -56 537.5 61.5 0.2 688 - 690 4 -57 540.5 63.5 0.2 689 - 691 4 -28.5 205 36 0.3 568 - 692 4 -31.5 206 36 0.3 691 - 693 4 -30.5 207.5 43.5 0.3 692 - 694 4 -33 209.5 43.5 0.3 693 - 695 4 -34 210 44.5 0.3 694 - 696 4 -34.5 212.5 46.5 0.3 695 - 697 4 -36.5 213 49 0.3 696 - 698 4 -39 215.5 51 0.3 697 - 699 4 -41 219 56.5 0.3 698 - 700 4 -45 220 55 0.3 699 - 701 4 -46.5 223 55 0.3 700 - 702 4 -47.5 225 53 0.3 701 - 703 4 -49.5 226.5 50 0.3 702 - 704 4 -51.5 227.5 55 0.3 703 - 705 4 -54 230 55 0.3 704 - 706 4 -55.5 232.5 59.5 0.3 705 - 707 4 -58.5 238 59.5 0.3 706 - 708 4 -59.5 240.5 59.5 0.3 707 - 709 4 -60.5 243.5 58.5 0.3 708 - 710 4 -62 247.5 61.5 0.3 709 - 711 4 -64 251.5 61.5 0.3 710 - 712 4 -66 254 68 0.3 711 - 713 4 -67.5 254.5 67 0.2 712 - 714 4 -68.5 256 68 0.2 713 - 715 4 -71.5 259 68 0.2 714 - 716 4 -8 121.5 15 0.3 549 - 717 4 -7.5 123.5 17 0.3 716 - 718 4 -9 124.5 20.5 0.3 717 - 719 4 -7.5 128 25.5 0.4 718 - 720 4 -9 130 28.5 0.4 719 - 721 4 -8.5 131 28.5 0.4 720 - 722 4 -7.5 131.5 30 0.4 721 - 723 4 -6 136 39.5 0.4 722 - 724 4 -3 137.5 44.5 0.4 723 - 725 4 -2 142 51 0.4 724 - 726 4 -3.5 144.5 50 0.4 725 - 727 4 -4 147 59.5 0.4 726 - 728 4 -4 148 60.5 0.4 727 - 729 4 -5 151.5 59.5 0.3 728 - 730 4 -7.5 154 64.5 0.3 729 - 731 4 -7.5 156 63.5 0.2 730 - 732 4 -7.5 157.5 67 0.2 731 - 733 4 -8.5 159 71 0.2 732 - 734 4 -12.5 159.5 77.5 0.2 733 - 735 4 -11 161 77.5 0.2 734 - 736 4 -13.5 160.5 79.5 0.2 735 - 737 4 -14.5 162 81.5 0.2 736 - 738 4 -14 163.5 85 0.2 737 - 739 4 -14 165.5 88 0.2 738 - 740 4 -13.5 167.5 92 0.2 739 - 741 4 -12.5 170.5 95.5 0.2 740 - 742 4 -14 172 98.5 0.2 741 - 743 4 -12.5 175 94.5 0.2 742 - 744 4 -17 176.5 96.5 0.2 743 - 745 4 -16.5 177 99.5 0.2 744 - 746 4 -17.5 180.5 98.5 0.15 745 - 747 4 -1 150.5 61.5 0.3 728 - 748 4 0 152 63.5 0.3 747 - 749 4 -1.5 153 63.5 0.2 748 - 750 4 0.5 154.5 64.5 0.3 749 - 751 4 3 155.5 64.5 0.3 750 - 752 4 0 157.5 72 0.3 751 - 753 4 3 159.5 75.5 0.3 752 - 754 4 1 161.5 75.5 0.3 753 - 755 4 2 163 78.5 0.2 754 - 756 4 2 166.5 81.5 0.2 755 - 757 4 0.5 166.5 80.5 0.2 756 - 758 4 1 169.5 85 0.2 757 - 759 4 -0.5 173 87 0.2 758 - 760 4 -0.5 175.5 91 0.2 759 - 761 4 -2 178 94.5 0.2 760 - 762 4 0 179.5 97.5 0.2 761 - 763 4 0.5 184 102 0.2 762 - 764 4 1 186.5 97.5 0.2 763 - 765 4 2 189 99.5 0.2 764 - 766 4 4.5 191 98.5 0.2 765 - 767 4 3 192 98.5 0.2 766 - 768 4 2 193.5 107 0.2 767 - 769 4 3 195 109 0.2 768 - 770 4 2.5 196.5 111.5 0.2 769 - 771 4 3.5 199 104 0.2 770 - 772 4 4 200.5 103 0.2 771 - 773 4 -2 82 -13.5 0.6 538 - 774 4 -1 85.5 -7 0.55 773 - 775 4 -0.5 89 -10.5 0.55 774 - 776 4 -1.5 89.5 -13.5 0.55 775 - 777 4 -3 94 -3 0.3 776 - 778 4 -3.5 99.5 -5 0.3 777 - 779 4 -5.5 103.5 -13.5 0.3 778 - 780 4 -8 110 -15.5 0.3 779 - 781 4 -7 113.5 -14.5 0.3 780 - 782 4 -7 119 -13.5 0.3 781 - 783 4 -8 122.5 -18 0.3 782 - 784 4 -10.5 125 -22 0.3 783 - 785 4 -13.5 130 -25 0.3 784 - 786 4 -17 136.5 -28.5 0.3 785 - 787 4 -17 143 -29.5 0.3 786 - 788 4 -17.5 148 -31.5 0.3 787 - 789 4 -18 156.5 -31.5 0.3 788 - 790 4 -20 163 -31.5 0.3 789 - 791 4 -19.5 164.5 -37 0.3 790 - 792 4 -24.5 167 -39 0.3 791 - 793 4 -26.5 171 -45.5 0.3 792 - 794 4 -27 174.5 -47.5 0.3 793 - 795 4 -28.5 180.5 -54 0.3 794 - 796 4 -31 182.5 -60 0.2 795 - 797 4 -33.5 186 -66.5 0.2 796 - 798 4 -37.5 187 -63.5 0.2 797 - 799 4 -40.5 191 -59 0.2 798 - 800 4 -42.5 194 -59 0.2 799 - 801 4 -45.5 196 -75 0.2 800 - 802 4 -50 198 -78 0.2 801 - 803 4 -52 199 -83.5 0.2 802 - 804 4 -54 199.5 -90 0.2 803 - 805 4 -20 169 -30.5 0.3 791 - 806 4 -23 176.5 -28.5 0.3 805 - 807 4 -25 185.5 -34.5 0.3 806 - 808 4 -25 190 -37 0.3 807 - 809 4 -27 195 -37 0.3 808 - 810 4 -28 200 -40 0.3 809 - 811 4 -29.5 202.5 -43 0.3 810 - 812 4 -30.5 207.5 -43 0.3 811 - 813 4 -32 215 -40 0.3 812 - 814 4 -32 221.5 -39 0.3 813 - 815 4 -33 227 -40 0.3 814 - 816 4 -34 232.5 -42 0.3 815 - 817 4 -35 239.5 -48.5 0.3 816 - 818 4 -37 247 -50.5 0.3 817 - 819 4 -39 252 -52.5 0.3 818 - 820 4 -37.5 256.5 -48.5 0.3 819 - 821 4 -37.5 262 -52.5 0.3 820 - 822 4 -37 266.5 -56 0.3 821 - 823 4 -39.5 273 -57 0.3 822 - 824 4 -40.5 281 -58 0.3 823 - 825 4 -41.5 287.5 -56 0.3 824 - 826 4 -42.5 293.5 -52.5 0.3 825 - 827 4 -44.5 297.5 -58 0.3 826 - 828 4 -45.5 303 -60 0.3 827 - 829 4 -47 306.5 -60 0.3 828 - 830 4 -47.5 311 -59 0.3 829 - 831 4 -49.5 321.5 -63.5 0.3 830 - 832 4 -50 329.5 -68.5 0.3 831 - 833 4 -51.5 334 -64.5 0.3 832 - 834 4 -53.5 342 -61 0.3 833 - 835 4 -57.5 351 -64.5 0.3 834 - 836 4 -58 358.5 -64.5 0.3 835 - 837 4 -58.5 364.5 -59 0.3 836 - 838 4 -57.5 374 -69.5 0.3 837 - 839 4 -55.5 380.5 -74 0.3 838 - 840 4 -53 389 -76 0.2 839 - 841 4 -52 392 -83.5 0.2 840 - 842 4 -53 404.5 -86.5 0.2 841 - 843 4 -54 420 -85.5 0.2 842 - 844 4 -53.5 433 -93 0.2 843 - 845 4 -54 443 -100.5 0.2 844 - 846 4 -54.5 452.5 -99.5 0.2 845 - 847 4 -55.5 462 -110 0.2 846 - 848 4 -59.5 471.5 -109 0.2 847 - 849 4 -59.5 482 -110 0.2 848 - 850 4 -60.5 492 -113 0.2 849 - 851 4 -60 502 -113 0.2 850 - 852 4 -62.5 508.5 -115 0.15 851 - 853 4 -63.5 513 -121.5 0.15 852 - 854 4 -66 517.5 -127 0.15 853 - 855 4 -65.5 519 -121.5 0.15 854 - 856 4 -58 508 -111 0.15 851 - 857 4 -60.5 514.5 -119.5 0.15 856 - 858 4 -59 517.5 -122.5 0.15 857 - 859 4 -59 517.5 -120.5 0.15 858 - 860 4 -0.5 98 -7 0.85 776 - 861 4 0 101.5 -6 0.85 860 - 862 4 1 106 -7 0.65 861 - 863 4 1 111 -10.5 0.65 862 - 864 4 2.5 114.5 -11.5 0.65 863 - 865 4 0.5 120.5 -1 0.4 864 - 866 4 0 124.5 -1 0.3 865 - 867 4 -0.5 127.5 -1 0.3 866 - 868 4 -1 132 -3 0.3 867 - 869 4 0 137 -4 0.3 868 - 870 4 -0.5 140.5 -6 0.3 869 - 871 4 -1 145 -3 0.3 870 - 872 4 0 148.5 -2 0.3 871 - 873 4 4 174 -4 0.3 872 - 874 4 5 187 -5 0.3 873 - 875 4 9 201.5 0 0.3 874 - 876 4 13 214.5 -1 0.3 875 - 877 4 15 221 -2 0.3 876 - 878 4 15 228 3.5 0.3 877 - 879 4 18 236.5 2.5 0.3 878 - 880 4 21.5 248.5 2.5 0.3 879 - 881 4 24 258 4.5 0.3 880 - 882 4 24.5 265.5 4.5 0.3 881 - 883 4 25 271.5 3.5 0.3 882 - 884 4 27 279 3.5 0.3 883 - 885 4 28.5 282.5 2.5 0.3 884 - 886 4 29.5 287.5 2.5 0.3 885 - 887 4 30.5 295.5 2.5 0.3 886 - 888 4 31 302 2.5 0.3 887 - 889 4 33 307 2.5 0.3 888 - 890 4 39.5 312 2.5 0.3 889 - 891 4 43 316.5 1 0.3 890 - 892 4 48 323.5 1 0.3 891 - 893 4 49.5 327 1 0.3 892 - 894 4 52.5 333 1 0.3 893 - 895 4 54.5 339 1 0.2 894 - 896 4 56.5 348.5 2.5 0.2 895 - 897 4 56 355 1 0.2 896 - 898 4 56 360 0 0.2 897 - 899 4 56 370.5 2.5 0.2 898 - 900 4 57.5 381 -2 0.2 899 - 901 4 59 386 -4 0.2 900 - 902 4 62 393.5 -5 0.2 901 - 903 4 66 401 -6 0.2 902 - 904 4 68 409 -8.5 0.2 903 - 905 4 69.5 415 -8.5 0.2 904 - 906 4 71.5 419.5 -8.5 0.2 905 - 907 4 71.5 433.5 -5 0.2 906 - 908 4 71.5 442 0 0.2 907 - 909 4 71 451.5 -1 0.2 908 - 910 4 71.5 459.5 -8.5 0.2 909 - 911 4 73 467.5 -10.5 0.2 910 - 912 4 72 476 -12.5 0.2 911 - 913 4 68.5 487.5 -4 0.2 912 - 914 4 67 497 -3 0.2 913 - 915 4 67.5 504.5 -2 0.2 914 - 916 4 67.5 511.5 -6 0.2 915 - 917 4 68.5 521.5 -3 0.2 916 - 918 4 70.5 527.5 2.5 0.2 917 - 919 4 70 533.5 0 0.2 918 - 920 4 69.5 536 1 0.2 919 - 921 4 3.5 122.5 -3 0.45 864 - 922 4 4 127.5 -4 0.45 921 - 923 4 4.5 131.5 -3 0.45 922 - 924 4 5.5 137.5 -2 0.45 923 - 925 4 6.5 142.5 -2 0.45 924 - 926 4 5.5 144 2.5 0.45 925 - 927 4 6.5 151 -7 0.45 926 - 928 4 7 156 -9.5 0.45 927 - 929 4 8.5 160 -13.5 0.45 928 - 930 4 10 165 -15.5 0.45 929 - 931 4 11.5 170.5 -12.5 0.45 930 - 932 4 12.5 173.5 -14.5 0.45 931 - 933 4 13.5 176.5 -14.5 0.45 932 - 934 4 15 181 -18 0.45 933 - 935 4 16.5 186 -14.5 0.45 934 - 936 4 17 189.5 -15.5 0.45 935 - 937 4 18.5 194.5 -18 0.45 936 - 938 4 18.5 195.5 -17 0.45 937 - 939 4 18.5 201.5 -17 0.45 938 - 940 4 20 207 -15.5 0.45 939 - 941 4 22 213.5 -20 0.45 940 - 942 4 25 220.5 -25 0.45 941 - 943 4 23.5 227 -23 0.45 942 - 944 4 26 237.5 -28.5 0.45 943 - 945 4 28 243.5 -37 0.45 944 - 946 4 29 249.5 -33.5 0.3 945 - 947 4 31 259.5 -30.5 0.3 946 - 948 4 32.5 264.5 -40 0.3 947 - 949 4 33.5 267.5 -43 0.3 948 - 950 4 35 278 -45.5 0.3 949 - 951 4 38.5 283.5 -34.5 0.3 950 - 952 4 41 286.5 -36 0.3 951 - 953 4 43.5 296.5 -41 0.3 952 - 954 4 42 303.5 -34.5 0.3 953 - 955 4 43.5 309 -39 0.3 954 - 956 4 45 313 -40 0.3 955 - 957 4 48 319 -33.5 0.3 956 - 958 4 52.5 328.5 -41 0.3 957 - 959 4 54.5 332.5 -40 0.3 958 - 960 4 54 339.5 -40 0.3 959 - 961 4 53.5 345.5 -39 0.3 960 - 962 4 53 349.5 -44.5 0.3 961 - 963 4 54 356 -44.5 0.3 962 - 964 4 54.5 362 -55 0.3 963 - 965 4 57 374 -58 0.3 964 - 966 4 60 383 -59 0.3 965 - 967 4 62.5 391 -60 0.3 966 - 968 4 68 407 -61 0.3 967 - 969 4 64.5 416.5 -62.5 0.3 968 - 970 4 61 425 -61 0.3 969 - 971 4 60.5 431 -61 0.3 970 - 972 4 57.5 437.5 -69.5 0.3 971 - 973 4 55.5 443.5 -73 0.3 972 - 974 4 52.5 449 -76 0.3 973 - 975 4 49 455 -65.5 0.3 974 - 976 4 40.5 461.5 -64.5 0.3 975 - 977 4 35.5 466.5 -64.5 0.3 976 - 978 4 33.5 474 -66.5 0.3 977 - 979 4 31.5 478.5 -68.5 0.2 978 - 980 4 27 488.5 -68.5 0.2 979 - 981 4 25.5 494.5 -68.5 0.2 980 - 982 4 25 502 -72 0.2 981 - 983 4 21.5 516 -72 0.2 982 - 984 4 20.5 531.5 -76 0.15 983 - 985 4 21.5 534.5 -79 0.15 984 - 986 4 35 478.5 -65.5 0.2 978 - 987 4 33.5 485 -56 0.2 986 - 988 4 33.5 494.5 -54 0.2 987 - 989 4 35 509 -49.5 0.2 988 - 990 4 38 518.5 -46.5 0.2 989 - 991 4 40.5 529 -45.5 0.2 990 - 992 4 42 533.5 -56 0.2 991 - 993 4 44.5 541 -58 0.2 992 - 994 4 48.5 551 -58 0.2 993 - 995 4 51.5 559.5 -55 0.2 994 - 996 4 52 571 -57 0.15 995 - 997 4 24 198.5 -23 0.2 938 - 998 4 29.5 203 -23 0.2 997 - 999 4 31 206 -26.5 0.2 998 - 1000 4 35 210.5 -22 0.2 999 - 1001 4 39 214.5 -21 0.2 1000 - 1002 4 43.5 216 -25 0.2 1001 - 1003 4 47 218 -25 0.2 1002 - 1004 4 50.5 220 -22 0.2 1003 - 1005 4 56 224 -21 0.2 1004 - 1006 4 61 224 -22 0.2 1005 - 1007 4 66.5 225 -24 0.2 1006 - 1008 4 13.5 148 -1 0.3 926 - 1009 4 18.5 155.5 -1 0.3 1008 - 1010 4 20 159.5 0 0.3 1009 - 1011 4 26 167 0 0.3 1010 - 1012 4 32.5 171.5 -1 0.3 1011 - 1013 4 35.5 173.5 0 0.2 1012 - 1014 4 36 177 4.5 0.2 1013 - 1015 4 40.5 184.5 2.5 0.2 1014 - 1016 4 42 188 1 0.2 1015 - 1017 4 43 192 3.5 0.2 1016 - 1018 4 45 197 -4 0.2 1017 - 1019 4 48.5 200.5 -3 0.2 1018 - 1020 4 53 205.5 1 0.2 1019 - 1021 4 54.5 209 5.5 0.2 1020 - 1022 4 59 215 7.5 0.2 1021 - 1023 4 59.5 216.5 2.5 0.2 1022 - 1024 4 3.5 67 -13.5 1.55 239 - 1025 4 4 72.5 -14.5 1.55 1024 - 1026 4 3.5 76.5 -13.5 1.55 1025 - 1027 4 5 83 -12.5 1.55 1026 - 1028 4 4.5 89 -21 1.2 1027 - 1029 4 4 96 -17 1.2 1028 - 1030 4 5.5 101 -17 1.2 1029 - 1031 4 5 105.5 -25 1.2 1030 - 1032 4 4 111 -26.5 1.2 1031 - 1033 4 -2 124 -33.5 0.3 1032 - 1034 4 -3.5 129.5 -34.5 0.3 1033 - 1035 4 -6 133 -36 0.3 1034 - 1036 4 -7.5 136.5 -37 0.3 1035 - 1037 4 -7.5 136.5 -41 0.3 1036 - 1038 4 -11.5 140 -41 0.3 1037 - 1039 4 -11.5 150 -45.5 0.3 1038 - 1040 4 7.5 121 -26.5 0.45 1032 - 1041 4 10 129.5 -26.5 0.45 1040 - 1042 4 12 134 -25 0.45 1041 - 1043 4 13.5 137.5 -27.5 0.45 1042 - 1044 4 14.5 141.5 -31.5 0.45 1043 - 1045 4 16 146.5 -37 0.45 1044 - 1046 4 18 151.5 -37 0.45 1045 - 1047 4 19 155.5 -34.5 0.45 1046 - 1048 4 22 160 -33.5 0.45 1047 - 1049 4 24.5 167.5 -31.5 0.45 1048 - 1050 4 26 172 -32.5 0.45 1049 - 1051 4 30.5 177 -38 0.45 1050 - 1052 4 31.5 180.5 -37 0.45 1051 - 1053 4 33 185.5 -33.5 0.45 1052 - 1054 4 36.5 189.5 -44.5 0.45 1053 - 1055 4 39.5 193.5 -45.5 0.45 1054 - 1056 4 41.5 199 -44.5 0.45 1055 - 1057 4 43 202 -44.5 0.45 1056 - 1058 4 43.5 203.5 -42 0.45 1057 - 1059 4 47.5 207 -48.5 0.45 1058 - 1060 4 50.5 211 -52.5 0.45 1059 - 1061 4 52 215.5 -55 0.45 1060 - 1062 4 56.5 221.5 -57 0.45 1061 - 1063 4 58 226.5 -57 0.45 1062 - 1064 4 62 234.5 -56 0.45 1063 - 1065 4 63 237 -58 0.45 1064 - 1066 4 67.5 240 -43 0.2 1065 - 1067 4 76.5 243.5 -49.5 0.2 1066 - 1068 4 83 248 -38 0.2 1067 - 1069 4 89 250.5 -27.5 0.2 1068 - 1070 4 94.5 254.5 -18 0.2 1069 - 1071 4 99 255.5 -27.5 0.2 1070 - 1072 4 101.5 258.5 -26.5 0.2 1071 - 1073 4 67.5 245 -61 0.45 1065 - 1074 4 69 250.5 -62.5 0.45 1073 - 1075 4 69 256.5 -61 0.3 1074 - 1076 4 67.5 265 -63.5 0.3 1075 - 1077 4 59.5 269.5 -69.5 0.3 1076 - 1078 4 55 272.5 -73 0.3 1077 - 1079 4 53 277 -79 0.3 1078 - 1080 4 51 283.5 -75 0.3 1079 - 1081 4 51 287.5 -74 0.3 1080 - 1082 4 50.5 294.5 -82.5 0.3 1081 - 1083 4 51.5 297.5 -83.5 0.3 1082 - 1084 4 50.5 305 -83.5 0.3 1083 - 1085 4 51.5 311.5 -87.5 0.3 1084 - 1086 4 51.5 315 -93 0.3 1085 - 1087 4 49.5 318 -96 0.3 1086 - 1088 4 49.5 323 -92 0.3 1087 - 1089 4 49.5 331 -93 0.3 1088 - 1090 4 48.5 334.5 -93 0.3 1089 - 1091 4 49.5 340 -92 0.3 1090 - 1092 4 49.5 346 -92 0.3 1091 - 1093 4 51 350 -91 0.3 1092 - 1094 4 52 355 -87.5 0.3 1093 - 1095 4 51 360 -83.5 0.3 1094 - 1096 4 49.5 366 -92 0.3 1095 - 1097 4 53 372 -92 0.15 1096 - 1098 4 54 379 -92 0.15 1097 - 1099 4 53.5 386.5 -90 0.15 1098 - 1100 4 56 389.5 -90 0.15 1099 - 1101 4 44 376.5 -70.5 0.3 1096 - 1102 4 43.5 383.5 -74 0.2 1101 - 1103 4 42 390.5 -68.5 0.2 1102 - 1104 4 40 398.5 -67.5 0.2 1103 - 1105 4 37 404 -69.5 0.2 1104 - 1106 4 33.5 410.5 -62.5 0.2 1105 - 1107 4 26 417.5 -54 0.2 1106 - 1108 4 21 423.5 -65.5 0.2 1107 - 1109 4 17 428 -58 0.2 1108 - 1110 4 16 434.5 -59 0.2 1109 - 1111 4 13 441.5 -60 0.2 1110 - 1112 4 9.5 446 -52.5 0.2 1111 - 1113 4 7.5 452.5 -52.5 0.2 1112 - 1114 4 7.5 459 -59 0.2 1113 - 1115 4 6 463.5 -59 0.2 1114 - 1116 4 2.5 468.5 -60 0.2 1115 - 1117 4 0 477.5 -61 0.2 1116 - 1118 4 -2.5 485.5 -49.5 0.2 1117 - 1119 4 -6.5 493.5 -46.5 0.2 1118 - 1120 4 -6 503 -41 0.2 1119 - 1121 4 -9.5 511.5 -37 0.2 1120 - 1122 4 -12.5 512.5 -33.5 0.2 1121 - 1123 4 -17.5 506.5 -32.5 0.2 1122 - 1124 4 -17.5 506.5 -31.5 0.2 1123 - 1125 4 42 408 -74 0.2 1104 - 1126 4 38.5 417.5 -72 0.2 1125 - 1127 4 37 429 -80 0.2 1126 - 1128 4 34.5 431.5 -88.5 0.2 1127 - 1129 4 31 439.5 -93 0.2 1128 - 1130 4 29 448 -93 0.2 1129 - 1131 4 28.5 455 -96 0.2 1130 - 1132 4 26 467 -102.5 0.2 1131 - 1133 4 25 476 -110 0.2 1132 - 1134 4 22.5 482.5 -120.5 0.2 1133 - 1135 4 22 492 -121.5 0.2 1134 - 1136 4 20.5 495 -124.5 0.2 1135 - 1137 4 21 509 -123.5 0.2 1136 - 1138 4 20 515 -132 0.2 1137 - 1139 4 16 523 -133 0.2 1138 - 1140 4 14.5 529 -137.5 0.2 1139 - 1141 4 11 535 -132 0.2 1140 - 1142 4 75.5 259 -62.5 0.3 1074 - 1143 4 76 262 -61 0.3 1142 - 1144 4 78 267 -61 0.3 1143 - 1145 4 80 271.5 -62.5 0.3 1144 - 1146 4 84.5 276.5 -64.5 0.3 1145 - 1147 4 86 281.5 -63.5 0.3 1146 - 1148 4 88.5 283 -62.5 0.3 1147 - 1149 4 89.5 289.5 -55 0.2 1148 - 1150 4 90.5 300 -58 0.2 1149 - 1151 4 92 306 -58 0.2 1150 - 1152 4 93.5 314.5 -57 0.2 1151 - 1153 4 95.5 319.5 -47.5 0.2 1152 - 1154 4 98 326 -51.5 0.2 1153 - 1155 4 100 332 -51.5 0.2 1154 - 1156 4 105 343 -48.5 0.2 1155 - 1157 4 110 352 -44.5 0.2 1156 - 1158 4 116.5 365 -38 0.2 1157 - 1159 4 119.5 370.5 -32.5 0.2 1158 - 1160 4 124 378 -41 0.2 1159 - 1161 4 126 387 -40 0.2 1160 - 1162 4 124 392 -45.5 0.2 1161 - 1163 4 123.5 401 -49.5 0.2 1162 - 1164 4 122 410 -49.5 0.2 1163 - 1165 4 122 419 -56 0.2 1164 - 1166 4 121 429 -60 0.2 1165 - 1167 4 122 441.5 -59 0.2 1166 - 1168 4 122 450.5 -67.5 0.2 1167 - 1169 4 120.5 457 -66.5 0.2 1168 - 1170 4 121.5 466.5 -67.5 0.2 1169 - 1171 4 125 471.5 -66.5 0.2 1170 - 1172 4 126.5 476.5 -67.5 0.2 1171 - 1173 4 129.5 483 -75 0.2 1172 - 1174 4 129.5 488.5 -78 0.2 1173 - 1175 4 131.5 494 -77 0.2 1174 - 1176 4 133.5 501 -79 0.2 1175 - 1177 4 132.5 504.5 -80 0.2 1176 - 1178 4 133.5 513 -81.5 0.2 1177 - 1179 4 133 519 -83.5 0.2 1178 - 1180 4 133 527.5 -83.5 0.2 1179 - 1181 4 133.5 535.5 -90 0.2 1180 - 1182 4 136 546 -88.5 0.2 1181 - 1183 4 137 550 -91 0.2 1182 - 1184 4 135.5 557 -92 0.2 1183 - 1185 4 135.5 566 -95 0.2 1184 - 1186 4 135.5 566 -92 0.2 1185 - 1187 4 130.5 389.5 -37 0.2 1161 - 1188 4 132 392.5 -37 0.2 1187 - 1189 4 137.5 400 -33.5 0.2 1188 - 1190 4 142.5 407 -30.5 0.2 1189 - 1191 4 145.5 411.5 -22 0.2 1190 - 1192 4 149 417 -21 0.2 1191 - 1193 4 152.5 420.5 -26.5 0.2 1192 - 1194 4 155.5 424 -26.5 0.2 1193 - 1195 4 158.5 426 -22 0.2 1194 - 1196 4 95.5 290 -66.5 0.2 1148 - 1197 4 100.5 295 -64.5 0.2 1196 - 1198 4 105.5 298.5 -68.5 0.2 1197 - 1199 4 109.5 302 -76 0.2 1198 - 1200 4 115 306.5 -81.5 0.2 1199 - 1201 4 124 307.5 -85.5 0.2 1200 - 1202 4 126 308.5 -94 0.2 1201 - 1203 4 8.5 87.5 -12.5 0.8 1027 - 1204 4 15 95 -9.5 0.8 1203 - 1205 4 16 99 -9.5 0.8 1204 - 1206 4 19.5 104.5 -9.5 0.8 1205 - 1207 4 20.5 108 -9.5 0.8 1206 - 1208 4 23 112 -9.5 0.8 1207 - 1209 4 25.5 116.5 -5 0.8 1208 - 1210 4 29 121.5 -5 0.8 1209 - 1211 4 31.5 122.5 -5 0.8 1210 - 1212 4 34 126 -6 0.8 1211 - 1213 4 35.5 130.5 -4 0.8 1212 - 1214 4 39.5 132 5.5 0.45 1213 - 1215 4 42 135 6.5 0.45 1214 - 1216 4 49 136.5 6.5 0.4 1215 - 1217 4 57 139 5.5 0.4 1216 - 1218 4 65 141.5 3.5 0.4 1217 - 1219 4 74 144 3.5 0.4 1218 - 1220 4 82.5 144.5 3.5 0.4 1219 - 1221 4 91 146.5 3.5 0.3 1220 - 1222 4 95 145 2.5 0.3 1221 - 1223 4 100.5 144.5 2.5 0.3 1222 - 1224 4 104.5 143.5 0 0.2 1223 - 1225 4 111.5 144 1 0.2 1224 - 1226 4 112.5 144 3.5 0.2 1225 - 1227 4 36.5 137.5 -2 0.6 1213 - 1228 4 38 142 -2 0.6 1227 - 1229 4 39 144.5 1 0.6 1228 - 1230 4 40 149 1 0.6 1229 - 1231 4 43 149.5 -4 0.2 1230 - 1232 4 47.5 150.5 -4 0.2 1231 - 1233 4 50.5 150 -4 0.2 1232 - 1234 4 56.5 153.5 -9.5 0.2 1233 - 1235 4 61 155.5 -13.5 0.2 1234 - 1236 4 66.5 161.5 -15.5 0.2 1235 - 1237 4 71.5 164 -15.5 0.2 1236 - 1238 4 75 167.5 -7 0.2 1237 - 1239 4 79 170.5 -3 0.2 1238 - 1240 4 83.5 171.5 2.5 0.2 1239 - 1241 4 93 173.5 2.5 0.2 1240 - 1242 4 97.5 177 8.5 0.2 1241 - 1243 4 106 179 9.5 0.2 1242 - 1244 4 111.5 182.5 12 0.2 1243 - 1245 4 119 184 7.5 0.2 1244 - 1246 4 123 185 12 0.2 1245 - 1247 4 41.5 154 0 0.55 1230 - 1248 4 41.5 155.5 0 0.55 1247 - 1249 4 41.5 158.5 -6 0.2 1248 - 1250 4 39.5 166.5 -3 0.2 1249 - 1251 4 38 170 -4 0.2 1250 - 1252 4 39 175 -3 0.2 1251 - 1253 4 40 178.5 -7 0.2 1252 - 1254 4 38.5 184 -8.5 0.2 1253 - 1255 4 39 189.5 -10.5 0.2 1254 - 1256 4 41 194.5 -10.5 0.2 1255 - 1257 4 43 204.5 -13.5 0.2 1256 - 1258 4 44 207.5 -15.5 0.2 1257 - 1259 4 44.5 212.5 -19 0.2 1258 - 1260 4 46.5 217.5 -25 0.2 1259 - 1261 4 48 224.5 -18 0.2 1260 - 1262 4 48 232 -18 0.15 1261 - 1263 4 48 235 -19 0.15 1262 - 1264 4 48 235 -20 0.15 1263 - 1265 4 47.5 169 -4 0.55 1248 - 1266 4 49 174 -5 0.55 1265 - 1267 4 53.5 181 -5 0.55 1266 - 1268 4 56 184 -13.5 0.55 1267 - 1269 4 57.5 188 -14.5 0.55 1268 - 1270 4 59 191 -13.5 0.55 1269 - 1271 4 60.5 195.5 -10.5 0.55 1270 - 1272 4 62.5 202 -10.5 0.2 1271 - 1273 4 65 209 -15.5 0.2 1272 - 1274 4 64.5 214 -18 0.2 1273 - 1275 4 65 221 -18 0.2 1274 - 1276 4 65.5 227.5 -18 0.2 1275 - 1277 4 65 235 -22 0.2 1276 - 1278 4 65 244.5 -14.5 0.2 1277 - 1279 4 62 248 -13.5 0.2 1278 - 1280 4 67.5 204.5 -19 0.6 1271 - 1281 4 73.5 209.5 -18 0.45 1280 - 1282 4 76 213 -19 0.45 1281 - 1283 4 79 218.5 -19 0.45 1282 - 1284 4 80.5 223.5 -30.5 0.2 1283 - 1285 4 82.5 231 -36 0.2 1284 - 1286 4 84 238 -37 0.2 1285 - 1287 4 85.5 243.5 -37 0.2 1286 - 1288 4 86.5 247.5 -33.5 0.2 1287 - 1289 4 88.5 254 -42 0.2 1288 - 1290 4 90 257 -48.5 0.2 1289 - 1291 4 89 261.5 -56 0.2 1290 - 1292 4 91 267 -58 0.2 1291 - 1293 4 92 271 -62.5 0.2 1292 - 1294 4 94.5 273 -62.5 0.2 1293 - 1295 4 100 279 -62.5 0.2 1294 - 1296 4 103.5 283 -61 0.2 1295 - 1297 4 103 288.5 -64.5 0.2 1296 - 1298 4 103.5 290.5 -64.5 0.2 1297 - 1299 4 104.5 295.5 -66.5 0.2 1298 - 1300 4 106.5 303.5 -63.5 0.2 1299 - 1301 4 106.5 323 -61 0.2 1300 - 1302 4 106 333.5 -63.5 0.2 1301 - 1303 4 108.5 288 -61 0.3 1296 - 1304 4 112 291.5 -59 0.3 1303 - 1305 4 113 295 -62.5 0.3 1304 - 1306 4 119 298.5 -59 0.2 1305 - 1307 4 123 303 -64.5 0.2 1306 - 1308 4 128.5 308.5 -64.5 0.2 1307 - 1309 4 131 315 -59 0.2 1308 - 1310 4 135.5 321 -63.5 0.2 1309 - 1311 4 140.5 324.5 -74 0.2 1310 - 1312 4 144.5 329 -78 0.2 1311 - 1313 4 146 333.5 -79 0.2 1312 - 1314 4 149.5 338.5 -80 0.2 1313 - 1315 4 153.5 343 -78 0.2 1314 - 1316 4 149 351 -84.5 0.2 1315 - 1317 4 148 356 -82.5 0.2 1316 - 1318 4 145 365 -81.5 0.2 1317 - 1319 4 141 369 -83.5 0.2 1318 - 1320 4 135 378 -86.5 0.2 1319 - 1321 4 133 384.5 -88.5 0.2 1320 - 1322 4 130.5 389.5 -91 0.2 1321 - 1323 4 129.5 394 -93 0.2 1322 - 1324 4 127 406.5 -98 0.2 1323 - 1325 4 124 413 -92 0.2 1324 - 1326 4 125.5 422 -91 0.2 1325 - 1327 4 127.5 429 -86.5 0.2 1326 - 1328 4 128 431 -91 0.2 1327 - 1329 4 135 454 -91 0.2 1328 - 1330 4 138.5 464.5 -83.5 0.2 1329 - 1331 4 142 474 -82.5 0.2 1330 - 1332 4 144 480.5 -72 0.2 1331 - 1333 4 146 488 -81.5 0.2 1332 - 1334 4 142.5 494.5 -70.5 0.2 1333 - 1335 4 145 506 -73 0.2 1334 - 1336 4 147.5 519.5 -69.5 0.2 1335 - 1337 4 148.5 531 -66.5 0.2 1336 - 1338 4 147 540.5 -73 0.2 1337 - 1339 4 144 550.5 -66.5 0.2 1338 - 1340 4 138.5 552 -65.5 0.15 1339 - 1341 4 131.5 557.5 -66.5 0.15 1340 - 1342 4 131 438 -101.5 0.2 1328 - 1343 4 130.5 447.5 -101.5 0.2 1342 - 1344 4 130 454 -114 0.2 1343 - 1345 4 127 464.5 -113 0.2 1344 - 1346 4 128.5 469.5 -119.5 0.2 1345 - 1347 4 128.5 477 -118.5 0.2 1346 - 1348 4 126.5 482.5 -128 0.2 1347 - 1349 4 121.5 491.5 -131 0.2 1348 - 1350 4 117 495 -133 0.2 1349 - 1351 4 115.5 501.5 -135.5 0.2 1350 - 1352 4 112 510.5 -138.5 0.2 1351 - 1353 4 108 518.5 -142.5 0.2 1352 - 1354 4 105.5 521 -140.5 0.2 1353 - 1355 4 101.5 525.5 -140.5 0.2 1354 - 1356 4 97.5 536 -145 0.2 1355 - 1357 4 93 539 -146 0.2 1356 - 1358 4 90.5 542 -146 0.2 1357 - 1359 4 81 220 -18 0.3 1283 - 1360 4 86.5 225 -15.5 0.3 1359 - 1361 4 91.5 231 -17 0.3 1360 - 1362 4 96 236.5 -18 0.3 1361 - 1363 4 97 239.5 -20 0.3 1362 - 1364 4 102 243 -19 0.3 1363 - 1365 4 106 247 -19 0.3 1364 - 1366 4 111.5 253.5 -19 0.3 1365 - 1367 4 115.5 256 -19 0.3 1366 - 1368 4 118 259.5 -20 0.3 1367 - 1369 4 120.5 263 -19 0.3 1368 - 1370 4 121.5 265 -18 0.3 1369 - 1371 4 126 270 -17 0.3 1370 - 1372 4 127.5 274.5 -14.5 0.3 1371 - 1373 4 130.5 280 -14.5 0.3 1372 - 1374 4 132.5 285 -15.5 0.3 1373 - 1375 4 134.5 288 -15.5 0.2 1374 - 1376 4 135.5 294 -17 0.2 1375 - 1377 4 135 298 -18 0.2 1376 - 1378 4 135.5 305 -18 0.2 1377 - 1379 4 136 311 -15.5 0.2 1378 - 1380 4 138 316.5 -12.5 0.2 1379 - 1381 4 140 321 -22 0.2 1380 - 1382 4 139 327.5 -20 0.2 1381 - 1383 4 141.5 334.5 -25 0.2 1382 - 1384 4 143 339 -27.5 0.2 1383 - 1385 4 144.5 344.5 -20 0.2 1384 - 1386 4 144 349 -29.5 0.2 1385 - 1387 4 145.5 357.5 -29.5 0.2 1386 - 1388 4 145.5 368 -40 0.2 1387 - 1389 4 143.5 372 -43 0.2 1388 - 1390 4 142.5 378.5 -46.5 0.2 1389 - 1391 4 142.5 384.5 -46.5 0.2 1390 - 1392 4 143 389 -48.5 0.2 1391 - 1393 4 142.5 396 -47.5 0.2 1392 - 1394 4 143 415.5 -42 0.2 1393 - 1395 4 144 426.5 -44.5 0.2 1394 - 1396 4 143.5 433.5 -44.5 0.2 1395 - 1397 4 143.5 441.5 -46.5 0.2 1396 - 1398 4 140.5 459 -32.5 0.2 1397 - 1399 4 142 464 -27.5 0.2 1398 - 1400 4 141 475 -32.5 0.2 1399 - 1401 4 143 482.5 -33.5 0.2 1400 - 1402 4 143.5 492.5 -28.5 0.2 1401 - 1403 4 145 501 -21 0.2 1402 - 1404 4 145 507 -27.5 0.2 1403 - 1405 4 142 513.5 -20 0.2 1404 - 1406 4 143.5 522 -17 0.2 1405 - 1407 4 145.5 532.5 -9.5 0.2 1406 - 1408 4 147.5 541 -9.5 0.2 1407 - 1409 4 147.5 541 2.5 0.2 1408 - 1410 3 2 1 3.5 1.8 1 - 1411 3 5.5 -2.5 3.5 1.45 1410 - 1412 3 6.5 -6 2.5 1.45 1411 - 1413 3 6.5 -8 5.5 1.45 1412 - 1414 3 7 -9 0 0.55 1413 - 1415 3 7 -18.5 -1 0.55 1414 - 1416 3 6 -25.5 -6 0.55 1415 - 1417 3 4.5 -30.5 -6 0.55 1416 - 1418 3 3.5 -33 -6 0.45 1417 - 1419 3 4 -40.5 -6 0.45 1418 - 1420 3 4 -49 -10.5 0.45 1419 - 1421 3 5.5 -57.5 -8.5 0.45 1420 - 1422 3 5.5 -61 -8.5 0.45 1421 - 1423 3 6 -64.5 -8.5 0.45 1422 - 1424 3 3.5 -69 -8.5 0.45 1423 - 1425 3 5.5 -75 -7 0.45 1424 - 1426 3 5 -86 -6 0.45 1425 - 1427 3 6 -96 -6 0.45 1426 - 1428 3 5.5 -105 -5 0.45 1427 - 1429 3 4 -113.5 -9.5 0.45 1428 - 1430 3 5 -119 -9.5 0.4 1429 - 1431 3 6.5 -125.5 -9.5 0.4 1430 - 1432 3 5.5 -127.5 -9.5 0.4 1431 - 1433 3 5.5 -137.5 -9.5 0.4 1432 - 1434 3 3.5 -142.5 -7 0.4 1433 - 1435 3 4.5 -149.5 -6 0.4 1434 - 1436 3 4 -155 -12.5 0.4 1435 - 1437 3 4 -162 -12.5 0.4 1436 - 1438 3 2.5 -165.5 -12.5 0.4 1437 - 1439 3 2 -169.5 -12.5 0.3 1438 - 1440 3 4 -172 -12.5 0.3 1439 - 1441 3 2 -176.5 -11.5 0.3 1440 - 1442 3 3.5 -179 -20 0.3 1441 - 1443 3 3.5 -184 -19 0.3 1442 - 1444 3 0.5 -186.5 -19 0.3 1443 - 1445 3 -0.5 -189.5 -17 0.3 1444 - 1446 3 -1 -192 -15.5 0.3 1445 - 1447 3 -1.5 -193.5 -23 0.2 1446 - 1448 3 -2.5 -197 -21 0.2 1447 - 1449 3 -3 -200.5 -26.5 0.2 1448 - 1450 3 -4 -204 -26.5 0.2 1449 - 1451 3 7.5 -13 5.5 0.2 1414 - 1452 3 6 -16.5 9.5 0.3 1451 - 1453 3 8 -19 13 0.3 1452 - 1454 3 9 -29 17 0.3 1453 - 1455 3 9 -33 20.5 0.3 1454 - 1456 3 4.5 -38 20.5 0.3 1455 - 1457 3 3.5 -41.5 20.5 0.3 1456 - 1458 3 2 -46 19 0.3 1457 - 1459 3 1 -50 18 0.3 1458 - 1460 3 -0.5 -53 18 0.3 1459 - 1461 3 -4 -57.5 24.5 0.3 1460 - 1462 3 -3.5 -59 25.5 0.3 1461 - 1463 3 -3.5 -64 26.5 0.3 1462 - 1464 3 -2.5 -73.5 31 0.3 1463 - 1465 3 -2.5 -82.5 43.5 0.3 1464 - 1466 3 -1 -88.5 37 0.3 1465 - 1467 3 -1.5 -94 38.5 0.3 1466 - 1468 3 -2.5 -97.5 42.5 0.3 1467 - 1469 3 0 -99.5 48 0.3 1468 - 1470 3 1.5 -107 53 0.3 1469 - 1471 3 2.5 -110.5 56.5 0.3 1470 - 1472 3 3.5 -114 56.5 0.3 1471 - 1473 3 3 -116.5 60.5 0.3 1472 - 1474 3 2.5 -121.5 68 0.2 1473 - 1475 3 1.5 -125 69 0.2 1474 - 1476 3 2 -127 67 0.2 1475 - 1477 3 1.5 -130 67 0.2 1476 - 1478 3 -7 -65.5 25.5 0.3 1462 - 1479 3 -8 -69.5 25.5 0.3 1478 - 1480 3 -10 -74 30 0.3 1479 - 1481 3 -11.5 -79 28.5 0.3 1480 - 1482 3 -13 -83.5 28.5 0.3 1481 - 1483 3 -16.5 -88.5 35 0.3 1482 - 1484 3 -18.5 -94 36 0.3 1483 - 1485 3 -21.5 -100 36 0.3 1484 - 1486 3 -22.5 -107 37 0.3 1485 - 1487 3 -24 -114 37 0.3 1486 - 1488 3 -25 -123 36 0.3 1487 - 1489 3 -26.5 -128 38.5 0.3 1488 - 1490 3 -27.5 -132 39.5 0.3 1489 - 1491 3 -30 -138 38.5 0.3 1490 - 1492 3 -31 -142 39.5 0.3 1491 - 1493 3 -32.5 -146 39.5 0.3 1492 - 1494 3 -33 -149 39.5 0.3 1493 - 1495 3 -34.5 -152.5 39.5 0.3 1494 - 1496 3 -35 -155 39.5 0.3 1495 - 1497 3 -34.5 -158.5 38.5 0.3 1496 - 1498 3 -33 -163.5 38.5 0.2 1497 - 1499 3 -34 -167 38.5 0.2 1498 - 1500 3 -35 -169 38.5 0.2 1499 - 1501 3 -33 -170.5 38.5 0.2 1500 - 1502 3 -34.5 -173.5 36 0.2 1501 - 1503 3 -33.5 -174.5 37 0.2 1502 - 1504 3 7.5 -10 -9.5 0.3 1451 - 1505 3 12.5 -16 -17 0.3 1504 - 1506 3 14.5 -19 -17 0.3 1505 - 1507 3 15 -21 -17 0.3 1506 - 1508 3 16.5 -27.5 -15.5 0.3 1507 - 1509 3 16 -32 -24 0.3 1508 - 1510 3 19 -37.5 -23 0.3 1509 - 1511 3 16.5 -42.5 -27.5 0.3 1510 - 1512 3 17 -45.5 -26.5 0.3 1511 - 1513 3 18.5 -49.5 -25 0.3 1512 - 1514 3 20 -55.5 -24 0.3 1513 - 1515 3 23 -60.5 -23 0.3 1514 - 1516 3 22 -64 -29.5 0.3 1515 - 1517 3 23.5 -67 -33.5 0.3 1516 - 1518 3 25 -72 -38 0.3 1517 - 1519 3 25 -76 -42 0.3 1518 - 1520 3 26.5 -81 -47.5 0.3 1519 - 1521 3 29 -86.5 -47.5 0.3 1520 - 1522 3 28 -89 -51.5 0.3 1521 - 1523 3 30 -96 -56 0.3 1522 - 1524 3 30 -101.5 -61 0.3 1523 - 1525 3 30 -107.5 -65.5 0.3 1524 - 1526 3 32 -112.5 -64.5 0.3 1525 - 1527 3 35 -119 -67.5 0.3 1526 - 1528 3 36 -123.5 -74 0.3 1527 - 1529 3 37.5 -129 -77 0.3 1528 - 1530 3 38.5 -132 -81.5 0.3 1529 - 1531 3 41.5 -136.5 -83.5 0.3 1530 - 1532 3 42.5 -141.5 -87.5 0.3 1531 - 1533 3 41 -146.5 -87.5 0.2 1532 - 1534 3 42 -152 -95 0.2 1533 - 1535 3 43 -157 -91 0.2 1534 - 1536 3 43.5 -162 -96 0.2 1535 - 1537 3 44 -164.5 -98 0.2 1536 - 1538 3 43.5 -167 -104.5 0.2 1537 - 1539 3 41 -170.5 -99.5 0.2 1538 - 1540 3 39.5 -173 -100.5 0.15 1539 - 1541 3 18 -21 -15.5 0.3 1507 - 1542 3 22.5 -26.5 -23 0.3 1541 - 1543 3 25 -29 -25 0.3 1542 - 1544 3 29 -35 -26.5 0.3 1543 - 1545 3 33 -42 -30.5 0.3 1544 - 1546 3 36 -45 -36 0.3 1545 - 1547 3 39.5 -48 -37 0.3 1546 - 1548 3 38.5 -54 -37 0.3 1547 - 1549 3 40.5 -60 -37 0.3 1548 - 1550 3 41.5 -66 -37 0.3 1549 - 1551 3 40 -72 -37 0.3 1550 - 1552 3 41.5 -81 -34.5 0.3 1551 - 1553 3 44 -90.5 -34.5 0.3 1552 - 1554 3 46 -97 -34.5 0.3 1553 - 1555 3 46.5 -106 -34.5 0.3 1554 - 1556 3 48 -118 -41 0.3 1555 - 1557 3 46 -128.5 -42 0.3 1556 - 1558 3 48 -135 -49.5 0.3 1557 - 1559 3 47.5 -143 -49.5 0.3 1558 - 1560 3 49.5 -145.5 -49.5 0.3 1559 - 1561 3 47.5 -152.5 -48.5 0.3 1560 - 1562 3 48.5 -161.5 -46.5 0.3 1561 - 1563 3 47 -165.5 -46.5 0.3 1562 - 1564 3 46.5 -169.5 -50.5 0.3 1563 - 1565 3 48.5 -172 -49.5 0.3 1564 - 1566 3 46.5 -176.5 -49.5 0.3 1565 - 1567 3 48 -181.5 -55 0.3 1566 - 1568 3 47 -186 -54 0.2 1567 - 1569 3 46 -189 -55 0.2 1568 - 1570 3 43 -51 -31.5 0.3 1547 - 1571 3 46.5 -55 -32.5 0.3 1570 - 1572 3 49 -58.5 -39 0.3 1571 - 1573 3 53.5 -59.5 -39 0.3 1572 - 1574 3 54.5 -62.5 -41 0.3 1573 - 1575 3 59 -63.5 -45.5 0.3 1574 - 1576 3 62.5 -64.5 -47.5 0.3 1575 - 1577 3 64 -69.5 -45.5 0.3 1576 - 1578 3 64 -73 -44.5 0.3 1577 - 1579 3 63.5 -74.5 -50.5 0.3 1578 - 1580 3 6.5 -12.5 -1 0.3 1504 - 1581 3 10.5 -20.5 -2 0.3 1580 - 1582 3 14 -29.5 -2 0.3 1581 - 1583 3 17 -34.5 0 0.3 1582 - 1584 3 20 -40.5 0 0.3 1583 - 1585 3 22 -46 1 0.3 1584 - 1586 3 27.5 -51.5 0 0.3 1585 - 1587 3 28 -55 0 0.3 1586 - 1588 3 30 -58 1 0.3 1587 - 1589 3 33 -62 1 0.3 1588 - 1590 3 35 -63.5 3.5 0.3 1589 - 1591 3 35.5 -68.5 3.5 0.3 1590 - 1592 3 38 -72.5 2.5 0.2 1591 - 1593 3 39.5 -81.5 5.5 0.2 1592 - 1594 3 42.5 -86 5.5 0.2 1593 - 1595 3 44 -87.5 12 0.2 1594 - 1596 3 46.5 -90.5 14 0.2 1595 - 1597 3 49.5 -93 16 0.2 1596 - 1598 3 52 -97.5 18 0.2 1597 - 1599 3 55 -98.5 19 0.2 1598 - 1600 3 57.5 -100 19 0.2 1599 - 1601 3 40 -69 -3 0.3 1590 - 1602 3 42.5 -72 -5 0.3 1601 - 1603 3 47 -77 -10.5 0.3 1602 - 1604 3 49 -80.5 -5 0.3 1603 - 1605 3 53.5 -83 -13.5 0.3 1604 - 1606 3 56 -87 -12.5 0.3 1605 - 1607 3 58 -93 -14.5 0.3 1606 - 1608 3 59.5 -97 -19 0.3 1607 - 1609 3 63 -103.5 -21 0.3 1608 - 1610 3 66 -105.5 -21 0.3 1609 - 1611 3 67.5 -114.5 -26.5 0.3 1610 - 1612 3 70 -122 -24 0.3 1611 - 1613 3 71.5 -130.5 -27.5 0.3 1612 - 1614 3 71 -132.5 -27.5 0.2 1613 - 1615 3 71.5 -135 -28.5 0.2 1614 - 1616 3 71.5 -140 -27.5 0.15 1615 - 1617 3 71.5 -140 -28.5 0.15 1616 - 1618 3 8 -12.5 -5 0.4 1580 - 1619 3 13.5 -13 -3 0.4 1618 - 1620 3 15 -17.5 2.5 0.4 1619 - 1621 3 21 -20.5 3.5 0.4 1620 - 1622 3 27 -23.5 5.5 0.4 1621 - 1623 3 31 -27 2.5 0.3 1622 - 1624 3 34.5 -32.5 6.5 0.3 1623 - 1625 3 39 -38 7.5 0.3 1624 - 1626 3 41.5 -42 14 0.3 1625 - 1627 3 43 -45.5 12 0.3 1626 - 1628 3 46 -50.5 12 0.3 1627 - 1629 3 49.5 -53.5 12 0.3 1628 - 1630 3 51 -56 13 0.3 1629 - 1631 3 55.5 -54.5 21.5 0.3 1630 - 1632 3 58 -55 26.5 0.3 1631 - 1633 3 62.5 -55.5 32 0.3 1632 - 1634 3 64.5 -59 37 0.3 1633 - 1635 3 67.5 -63 33 0.3 1634 - 1636 3 70 -66.5 34 0.3 1635 - 1637 3 76.5 -68.5 34 0.3 1636 - 1638 3 81 -73.5 36 0.3 1637 - 1639 3 82.5 -76 36 0.3 1638 - 1640 3 84.5 -80 35 0.15 1639 - 1641 3 9.5 -18 19 0.3 1618 - 1642 3 11 -19.5 20.5 0.3 1641 - 1643 3 13.5 -20.5 19 0.3 1642 - 1644 3 19 -25.5 20.5 0.3 1643 - 1645 3 22 -27 24.5 0.3 1644 - 1646 3 22 -29 22.5 0.3 1645 - 1647 3 24.5 -32 32 0.3 1646 - 1648 3 24.5 -31.5 39.5 0.3 1647 - 1649 3 26 -34.5 40.5 0.3 1648 - 1650 3 27 -35.5 39.5 0.3 1649 - 1651 3 28 -39 42.5 0.3 1650 - 1652 3 30 -41 48 0.3 1651 - 1653 3 30 -43.5 48 0.3 1652 - 1654 3 29 -46 49 0.3 1653 - 1655 3 31.5 -46.5 50 0.3 1654 - 1656 3 31.5 -49 53 0.3 1655 - 1657 3 31.5 -50.5 54 0.3 1656 - 1658 3 34 -52.5 56.5 0.3 1657 - 1659 3 33 -54.5 61.5 0.3 1658 - 1660 3 32 -57.5 62.5 0.3 1659 - 1661 3 33 -59.5 62.5 0.3 1660 - 1662 3 32.5 -62 67 0.3 1661 - 1663 3 34.5 -65 64.5 0.3 1662 - 1664 3 34 -66.5 64.5 0.3 1663 - 1665 3 33.5 -69.5 68 0.3 1664 - 1666 3 33.5 -71 71 0.3 1665 - 1667 3 35 -75 75.5 0.3 1666 - 1668 3 34 -78 80.5 0.3 1667 - 1669 3 36.5 -80.5 87 0.3 1668 - 1670 3 37 -83.5 91 0.3 1669 - 1671 3 37 -86 86 0.2 1670 - 1672 3 35 -87 85 0.2 1671 - 1673 3 35 -87 86 0.2 1672 - 1674 3 31 -32 32 0.3 1648 - 1675 3 33 -35 36 0.3 1674 - 1676 3 38 -38.5 36 0.3 1675 - 1677 3 41.5 -41.5 39.5 0.3 1676 - 1678 3 45 -44 41.5 0.3 1677 - 1679 3 49.5 -47 48 0.3 1678 - 1680 3 51 -49 50 0.3 1679 - 1681 3 53 -51.5 50 0.3 1680 - 1682 3 56 -52.5 49 0.3 1681 - 1683 3 58 -55 54 0.3 1682 - 1684 3 60 -58 58.5 0.3 1683 - 1685 3 61.5 -58 58.5 0.3 1684 - 1686 3 64 -63 59.5 0.2 1685 - 1687 3 66 -65 58.5 0.2 1686 - 1688 3 67.5 -66.5 58.5 0.2 1687 - 1689 3 69 -68 57.5 0.2 1688 - 1690 3 74 -72.5 58.5 0.2 1689 - 1691 3 0 0 -4 0.65 1 - 1692 3 0.5 -5 -4 0.65 1691 - 1693 3 0 -10.5 -3 0.65 1692 - 1694 3 -0.5 -14 -3 0.65 1693 - 1695 3 -1 -17.5 -3 0.65 1694 - 1696 3 -2.5 -21.5 -1 0.65 1695 - 1697 3 -2.5 -22.5 -1 0.65 1696 - 1698 3 -4.5 -27 -1 0.45 1697 - 1699 3 -5 -30 -2 0.45 1698 - 1700 3 -6 -32 -2 0.45 1699 - 1701 3 -4 -35.5 -2 0.45 1700 - 1702 3 -5.5 -39 -2 0.45 1701 - 1703 3 -5.5 -41.5 -2 0.4 1702 - 1704 3 -3 -46 -2 0.4 1703 - 1705 3 -4.5 -51 3.5 0.4 1704 - 1706 3 -4.5 -50.5 2.5 0.4 1705 - 1707 3 -6.5 -56.5 0 0.4 1706 - 1708 3 -6.5 -63.5 1 0.4 1707 - 1709 3 -6 -69 1 0.4 1708 - 1710 3 -7 -71 1 0.4 1709 - 1711 3 -7.5 -73.5 2.5 0.4 1710 - 1712 3 -9 -77 0 0.4 1711 - 1713 3 -8 -80 1 0.4 1712 - 1714 3 -10 -84 -4 0.4 1713 - 1715 3 -11.5 -88 -4 0.4 1714 - 1716 3 -10 -94.5 -5 0.4 1715 - 1717 3 -11 -98.5 -5 0.4 1716 - 1718 3 -13.5 -104.5 -4 0.4 1717 - 1719 3 -13.5 -111 -8.5 0.4 1718 - 1720 3 -15 -115.5 -7 0.4 1719 - 1721 3 -16.5 -120.5 -7 0.4 1720 - 1722 3 -18.5 -126 -8.5 0.4 1721 - 1723 3 -19.5 -129 -6 0.4 1722 - 1724 3 -20 -133 -9.5 0.3 1723 - 1725 3 -20.5 -137.5 -9.5 0.3 1724 - 1726 3 -20 -142.5 -8.5 0.3 1725 - 1727 3 -20 -144.5 -8.5 0.3 1726 - 1728 3 -19 -148 -11.5 0.3 1727 - 1729 3 -19 -149.5 -15.5 0.3 1728 - 1730 3 -18.5 -154.5 -12.5 0.3 1729 - 1731 3 -20.5 -157 -12.5 0.3 1730 - 1732 3 -22 -160.5 -12.5 0.3 1731 - 1733 3 -20.5 -165 -12.5 0.2 1732 - 1734 3 -18.5 -166 -20 0.2 1733 - 1735 3 -2.5 -58.5 2.5 0.3 1706 - 1736 3 0 -67 8.5 0.3 1735 - 1737 3 0 -76.5 9.5 0.3 1736 - 1738 3 0.5 -87 9.5 0.3 1737 - 1739 3 0.5 -93.5 16 0.3 1738 - 1740 3 0 -97 15 0.3 1739 - 1741 3 0 -102.5 18 0.3 1740 - 1742 3 -0.5 -107.5 23.5 0.3 1741 - 1743 3 0.5 -113 26.5 0.3 1742 - 1744 3 2.5 -119 23.5 0.3 1743 - 1745 3 5 -127.5 23.5 0.3 1744 - 1746 3 2.5 -135.5 24.5 0.3 1745 - 1747 3 1 -136.5 25.5 0.3 1746 - 1748 3 2 -151.5 30 0.3 1747 - 1749 3 3.5 -158 31 0.3 1748 - 1750 3 3 -161.5 31 0.2 1749 - 1751 3 4.5 -163.5 31 0.3 1750 - 1752 3 3.5 -168.5 31 0.3 1751 - 1753 3 3.5 -172.5 32 0.3 1752 - 1754 3 5 -178 31 0.3 1753 - 1755 3 5.5 -184 31 0.2 1754 - 1756 3 5.5 -187.5 25.5 0.2 1755 - 1757 3 10 -191 27.5 0.2 1756 - 1758 3 9 -194.5 26.5 0.2 1757 - 1759 3 0.5 -28.5 -4 0.4 1697 - 1760 3 2.5 -32 -5 0.4 1759 - 1761 3 4 -35 -6 0.4 1760 - 1762 3 6.5 -41 -6 0.4 1761 - 1763 3 9 -46 -6 0.4 1762 - 1764 3 11.5 -51 -5 0.4 1763 - 1765 3 14 -57 -3 0.4 1764 - 1766 3 16 -63.5 -3 0.4 1765 - 1767 3 19 -67.5 -6 0.4 1766 - 1768 3 19 -67.5 -5 0.4 1767 - 1769 3 21 -74.5 -3 0.3 1768 - 1770 3 22.5 -79 -6 0.3 1769 - 1771 3 23.5 -85 -11.5 0.3 1770 - 1772 3 25 -90 -13.5 0.3 1771 - 1773 3 26.5 -97.5 -8.5 0.3 1772 - 1774 3 27 -106 -6 0.3 1773 - 1775 3 28 -112 -8.5 0.3 1774 - 1776 3 26.5 -117 -6 0.3 1775 - 1777 3 28 -121.5 -7 0.3 1776 - 1778 3 29 -125 -10.5 0.3 1777 - 1779 3 31.5 -134 -11.5 0.3 1778 - 1780 3 33 -137 -9.5 0.3 1779 - 1781 3 34 -148 -9.5 0.3 1780 - 1782 3 36.5 -150.5 -9.5 0.3 1781 - 1783 3 38 -155.5 -12.5 0.3 1782 - 1784 3 38.5 -160 -12.5 0.2 1783 - 1785 3 37.5 -164.5 -8.5 0.2 1784 - 1786 3 35.5 -166 -8.5 0.2 1785 - 1787 3 34.5 -166.5 -7 0.2 1786 - 1788 3 24 -76 -12.5 0.3 1768 - 1789 3 25.5 -78.5 -13.5 0.3 1788 - 1790 3 28 -83.5 -10.5 0.3 1789 - 1791 3 29.5 -88 -10.5 0.3 1790 - 1792 3 30.5 -91 -14.5 0.3 1791 - 1793 3 32.5 -96 -14.5 0.3 1792 - 1794 3 35 -99 -14.5 0.3 1793 - 1795 3 36 -101 -14.5 0.3 1794 - 1796 3 39 -104 -18 0.3 1795 - 1797 3 40.5 -111 -18 0.3 1796 - 1798 3 45.5 -116 -20 0.3 1797 - 1799 3 46.5 -121 -20 0.3 1798 - 1800 3 50.5 -126 -21 0.3 1799 - 1801 3 50.5 -130 -26.5 0.3 1800 - 1802 3 54 -138 -26.5 0.3 1801 - 1803 3 56.5 -143.5 -29.5 0.3 1802 - 1804 3 57.5 -149 -29.5 0.3 1803 - 1805 3 59.5 -154.5 -32.5 0.3 1804 - 1806 3 62.5 -160.5 -32.5 0.3 1805 - 1807 3 62 -166 -34.5 0.3 1806 - 1808 3 64.5 -169 -34.5 0.3 1807 - 1809 3 66 -173 -39 0.3 1808 - 1810 3 66 -176.5 -41 0.3 1809 - 1811 3 67 -179.5 -45.5 0.2 1810 - 1812 3 3 -17 -5 0.3 1694 - 1813 3 6 -21.5 -5 0.3 1812 - 1814 3 9 -24 -5 0.3 1813 - 1815 3 12 -29 -4 0.3 1814 - 1816 3 13 -32.5 -3 0.3 1815 - 1817 3 16 -34.5 -3 0.3 1816 - 1818 3 18.5 -38.5 -3 0.3 1817 - 1819 3 23 -41.5 -3 0.3 1818 - 1820 3 26 -44 -5 0.3 1819 - 1821 3 28.5 -48.5 -5 0.3 1820 - 1822 3 33 -52.5 -5 0.3 1821 - 1823 3 35.5 -53.5 -5 0.3 1822 - 1824 3 35 -57.5 -6 0.3 1823 - 1825 3 35 -64 -6 0.3 1824 - 1826 3 36 -70.5 -8.5 0.3 1825 - 1827 3 34.5 -75.5 -8.5 0.3 1826 - 1828 3 34 -81.5 -5 0.3 1827 - 1829 3 34.5 -90.5 -5 0.3 1828 - 1830 3 33 -95.5 -6 0.3 1829 - 1831 3 35.5 -99 -6 0.3 1830 - 1832 3 34 -101.5 -3 0.3 1831 - 1833 3 34 -105.5 -3 0.3 1832 - 1834 3 36 -110.5 -3 0.3 1833 - 1835 3 37 -114 -1 0.3 1834 - 1836 3 37.5 -121.5 -3 0.3 1835 - 1837 3 38 -127.5 3.5 0.3 1836 - 1838 3 38.5 -134.5 3.5 0.3 1837 - 1839 3 38 -136 2.5 0.3 1838 - 1840 3 41 -138.5 2.5 0.3 1839 - 1841 3 40.5 -141.5 2.5 0.3 1840 - 1842 3 43.5 -148.5 2.5 0.3 1841 - 1843 3 46.5 -155 -4 0.3 1842 - 1844 3 47.5 -158.5 -3 0.2 1843 - 1845 3 50 -164.5 -8.5 0.2 1844 - 1846 3 50 -169.5 -6 0.2 1845 - 1847 3 38 -63.5 -6 0.3 1824 - 1848 3 41.5 -73.5 -6 0.3 1847 - 1849 3 46.5 -83 -6 0.3 1848 - 1850 3 48 -87 -5 0.3 1849 - 1851 3 54 -90.5 -5 0.3 1850 - 1852 3 57.5 -95.5 -5 0.3 1851 - 1853 3 66 -102 -5 0.3 1852 - 1854 3 73 -104.5 -4 0.3 1853 - 1855 3 76.5 -110 -3 0.3 1854 - 1856 3 82 -114.5 -2 0.3 1855 - 1857 3 88.5 -117 -2 0.3 1856 - 1858 3 -3.5 0 16 0.85 1 - 1859 3 -7 -5.5 15 0.85 1858 - 1860 3 -8.5 -10 21.5 0.85 1859 - 1861 3 -12.5 -16 21.5 0.85 1860 - 1862 3 -16.5 -22 18 0.85 1861 - 1863 3 -17 -25 21.5 0.85 1862 - 1864 3 -20 -29.5 22.5 0.85 1863 - 1865 3 -22 -34 28.5 0.65 1864 - 1866 3 -25 -40.5 17 0.4 1865 - 1867 3 -28.5 -42 15 0.4 1866 - 1868 3 -31.5 -46 20.5 0.4 1867 - 1869 3 -33.5 -50 21.5 0.4 1868 - 1870 3 -35.5 -50 21.5 0.4 1869 - 1871 3 -37 -52.5 21.5 0.4 1870 - 1872 3 -40 -55 18 0.4 1871 - 1873 3 -44.5 -56.5 18 0.4 1872 - 1874 3 -47 -65 18 0.4 1873 - 1875 3 -49.5 -70.5 13 0.4 1874 - 1876 3 -50.5 -74 13 0.4 1875 - 1877 3 -51 -75.5 13 0.4 1876 - 1878 3 -53 -78 12 0.4 1877 - 1879 3 -54.5 -82 12 0.4 1878 - 1880 3 -56.5 -86.5 12 0.4 1879 - 1881 3 -59 -91 12 0.4 1880 - 1882 3 -60 -94 12 0.4 1881 - 1883 3 -61.5 -99.5 12 0.4 1882 - 1884 3 -64.5 -101 12 0.4 1883 - 1885 3 -68 -110 11 0.4 1884 - 1886 3 -70.5 -114 11 0.4 1885 - 1887 3 -74 -117.5 11 0.4 1886 - 1888 3 -73.5 -120 12 0.3 1887 - 1889 3 -76 -127.5 12 0.3 1888 - 1890 3 -79.5 -133 12 0.3 1889 - 1891 3 -82 -138.5 13 0.3 1890 - 1892 3 -82.5 -145 12 0.3 1891 - 1893 3 -84.5 -150.5 11 0.3 1892 - 1894 3 -87.5 -154 11 0.3 1893 - 1895 3 -21.5 -42 26.5 0.3 1865 - 1896 3 -22 -47.5 25.5 0.3 1895 - 1897 3 -23.5 -51.5 26.5 0.3 1896 - 1898 3 -25 -56.5 23.5 0.3 1897 - 1899 3 -24.5 -63.5 23.5 0.3 1898 - 1900 3 -25.5 -73 23.5 0.3 1899 - 1901 3 -28.5 -78 22.5 0.3 1900 - 1902 3 -28 -82.5 22.5 0.3 1901 - 1903 3 -30 -89 22.5 0.3 1902 - 1904 3 -31.5 -93 22.5 0.3 1903 - 1905 3 -31.5 -95 22.5 0.3 1904 - 1906 3 -31 -100.5 22.5 0.3 1905 - 1907 3 -32.5 -106 23.5 0.3 1906 - 1908 3 -33.5 -112.5 23.5 0.3 1907 - 1909 3 -35 -116 22.5 0.3 1908 - 1910 3 -36.5 -122.5 22.5 0.3 1909 - 1911 3 -38.5 -125 22.5 0.3 1910 - 1912 3 -37 -128 22.5 0.3 1911 - 1913 3 -38 -132 22.5 0.3 1912 - 1914 3 -39 -137 27.5 0.3 1913 - 1915 3 -40.5 -144.5 26.5 0.3 1914 - 1916 3 -40 -149.5 26.5 0.3 1915 - 1917 3 -41 -153.5 27.5 0.3 1916 - 1918 3 -41 -159.5 27.5 0.3 1917 - 1919 3 -40.5 -164 27.5 0.3 1918 - 1920 3 -40 -168.5 27.5 0.2 1919 - 1921 3 -23.5 -33.5 31 0.45 1864 - 1922 3 -25 -39 32 0.45 1921 - 1923 3 -26 -43 31 0.45 1922 - 1924 3 -25.5 -48 32 0.45 1923 - 1925 3 -27.5 -49 36 0.3 1924 - 1926 3 -29 -52 35 0.3 1925 - 1927 3 -33.5 -55 35 0.3 1926 - 1928 3 -36.5 -57 41.5 0.3 1927 - 1929 3 -38.5 -59.5 41.5 0.3 1928 - 1930 3 -39 -61.5 48 0.3 1929 - 1931 3 -44.5 -64 46.5 0.3 1930 - 1932 3 -47 -69.5 46.5 0.3 1931 - 1933 3 -48.5 -74.5 46.5 0.3 1932 - 1934 3 -48 -79.5 46.5 0.3 1933 - 1935 3 -46.5 -84 46.5 0.3 1934 - 1936 3 -44.5 -89.5 46.5 0.3 1935 - 1937 3 -45.5 -95.5 48 0.3 1936 - 1938 3 -47.5 -101.5 48 0.3 1937 - 1939 3 -48.5 -105 46.5 0.3 1938 - 1940 3 -47 -112.5 54 0.3 1939 - 1941 3 -48.5 -117.5 55 0.3 1940 - 1942 3 -49.5 -126 55 0.3 1941 - 1943 3 -51 -131.5 60.5 0.3 1942 - 1944 3 -53.5 -135 60.5 0.3 1943 - 1945 3 -54.5 -138 60.5 0.3 1944 - 1946 3 -54.5 -146 61.5 0.3 1945 - 1947 3 -58.5 -148.5 61.5 0.3 1946 - 1948 3 -59.5 -152 61.5 0.3 1947 - 1949 3 -60.5 -159.5 60.5 0.3 1948 - 1950 3 -59.5 -166 60.5 0.3 1949 - 1951 3 -61.5 -170.5 61.5 0.3 1950 - 1952 3 -62.5 -171.5 54 0.3 1951 - 1953 3 -63.5 -173.5 52 0.2 1952 - 1954 3 -65.5 -175.5 52 0.2 1953 - 1955 3 -66.5 -179 52 0.2 1954 - 1956 3 -68 -181.5 53 0.2 1955 - 1957 3 -71 -182.5 53 0.2 1956 - 1958 3 -72 -184 52 0.15 1957 - 1959 3 -73 -187.5 51 0.15 1958 - 1960 3 -73 -187.5 50 0.15 1959 - 1961 3 -26.5 -54.5 32 0.3 1924 - 1962 3 -24.5 -59.5 39.5 0.3 1961 - 1963 3 -24.5 -65 40.5 0.3 1962 - 1964 3 -24.5 -72.5 41.5 0.3 1963 - 1965 3 -22 -79 42.5 0.3 1964 - 1966 3 -23.5 -82 44.5 0.3 1965 - 1967 3 -23.5 -89 45.5 0.3 1966 - 1968 3 -23.5 -94.5 45.5 0.3 1967 - 1969 3 -25 -99.5 45.5 0.3 1968 - 1970 3 -26.5 -104.5 46.5 0.3 1969 - 1971 3 -28 -109.5 53 0.3 1970 - 1972 3 -27.5 -114.5 52 0.3 1971 - 1973 3 -27.5 -121 55 0.3 1972 - 1974 3 -26.5 -127 60.5 0.3 1973 - 1975 3 -30 -132.5 61.5 0.3 1974 - 1976 3 -29.5 -137 67 0.3 1975 - 1977 3 -28 -141 66 0.3 1976 - 1978 3 -31.5 -151.5 64.5 0.3 1977 - 1979 3 -31.5 -155 64.5 0.3 1978 - 1980 3 -32.5 -157.5 66 0.3 1979 - 1981 3 -32 -162 63.5 0.2 1980 - 1982 3 -30.5 -165.5 63.5 0.2 1981 - 1983 3 -33.5 -170 63.5 0.2 1982 - 1984 3 -34.5 -174.5 63.5 0.2 1983 - 1985 3 -36.5 -178.5 62.5 0.2 1984 - 1986 3 -35.5 -181.5 62.5 0.2 1985 - 1987 3 -37.5 -184.5 62.5 0.2 1986 - 1988 3 -37 -187.5 62.5 0.2 1987 - 1989 3 -4.5 1 -10.5 0.9 1 - 1990 3 -8.5 -3 -10.5 0.9 1989 - 1991 3 -10.5 -8 -11.5 0.9 1990 - 1992 3 -12.5 -11 -11.5 0.9 1991 - 1993 3 -13 -11 -11.5 0.9 1992 - 1994 3 -9 -16 -3 0.3 1993 - 1995 3 -10.5 -19 -3 0.3 1994 - 1996 3 -9.5 -27.5 -12.5 0.3 1995 - 1997 3 -8.5 -36.5 -14.5 0.3 1996 - 1998 3 -8 -45 -14.5 0.3 1997 - 1999 3 -5 -52.5 -19 0.3 1998 - 2000 3 -4 -59.5 -25 0.3 1999 - 2001 3 -2 -67 -33.5 0.3 2000 - 2002 3 -1 -72.5 -36 0.3 2001 - 2003 3 1 -80 -38 0.3 2002 - 2004 3 1 -85 -47.5 0.3 2003 - 2005 3 3.5 -90.5 -46.5 0.3 2004 - 2006 3 2.5 -94 -46.5 0.3 2005 - 2007 3 5.5 -101 -49.5 0.3 2006 - 2008 3 8 -110 -56 0.3 2007 - 2009 3 9.5 -116 -56 0.3 2008 - 2010 3 12.5 -120 -56 0.3 2009 - 2011 3 13.5 -129.5 -61 0.3 2010 - 2012 3 15 -138.5 -69.5 0.3 2011 - 2013 3 14.5 -142.5 -67.5 0.3 2012 - 2014 3 15 -146.5 -74 0.3 2013 - 2015 3 16 -154 -78 0.3 2014 - 2016 3 16 -155.5 -85.5 0.3 2015 - 2017 3 16.5 -159 -84.5 0.3 2016 - 2018 3 14 -163 -88.5 0.3 2017 - 2019 3 13.5 -167 -91 0.3 2018 - 2020 3 13 -173.5 -94 0.3 2019 - 2021 3 -18.5 -12.5 -11.5 0.55 1993 - 2022 3 -21 -16 -11.5 0.55 2021 - 2023 3 -24 -19 -6 0.55 2022 - 2024 3 -27 -23 -1 0.55 2023 - 2025 3 -29.5 -26.5 1 0.55 2024 - 2026 3 -34.5 -28.5 1 0.4 2025 - 2027 3 -40.5 -32 1 0.4 2026 - 2028 3 -45 -37 1 0.4 2027 - 2029 3 -50 -41 1 0.4 2028 - 2030 3 -55.5 -44.5 1 0.4 2029 - 2031 3 -60 -49 1 0.4 2030 - 2032 3 -65.5 -51 1 0.4 2031 - 2033 3 -69 -53 1 0.4 2032 - 2034 3 -71.5 -57 1 0.4 2033 - 2035 3 -77.5 -59 1 0.4 2034 - 2036 3 -81.5 -64 1 0.4 2035 - 2037 3 -85 -69 1 0.4 2036 - 2038 3 -89.5 -72.5 1 0.4 2037 - 2039 3 -94.5 -76 1 0.4 2038 - 2040 3 -95.5 -79 6.5 0.4 2039 - 2041 3 -99.5 -80.5 6.5 0.4 2040 - 2042 3 -103 -87.5 6.5 0.4 2041 - 2043 3 -108 -91 6.5 0.4 2042 - 2044 3 -115 -95.5 6.5 0.4 2043 - 2045 3 -119.5 -98.5 6.5 0.4 2044 - 2046 3 -123 -97 6.5 0.4 2045 - 2047 3 -125.5 -101 6.5 0.4 2046 - 2048 3 -129.5 -105.5 6.5 0.4 2047 - 2049 3 -132.5 -109.5 6.5 0.4 2048 - 2050 3 -136.5 -109.5 13 0.4 2049 - 2051 3 -140 -110.5 13 0.3 2050 - 2052 3 -142.5 -114 13 0.3 2051 - 2053 3 -146.5 -119 13 0.3 2052 - 2054 3 -149.5 -121 13 0.3 2053 - 2055 3 -154.5 -122 13 0.3 2054 - 2056 3 -15 -15.5 -14.5 0.4 1992 - 2057 3 -18.5 -19 -14.5 0.4 2056 - 2058 3 -22 -25 -13.5 0.4 2057 - 2059 3 -24.5 -30.5 -22 0.4 2058 - 2060 3 -26 -34 -27.5 0.4 2059 - 2061 3 -28.5 -37 -28.5 0.4 2060 - 2062 3 -29.5 -39.5 -28.5 0.4 2061 - 2063 3 -32.5 -45 -30.5 0.4 2062 - 2064 3 -36 -49.5 -31.5 0.4 2063 - 2065 3 -37 -52 -28.5 0.4 2064 - 2066 3 -38 -55.5 -27.5 0.4 2065 - 2067 3 -41.5 -59.5 -39 0.3 2066 - 2068 3 -43.5 -64.5 -38 0.3 2067 - 2069 3 -46.5 -69 -45.5 0.3 2068 - 2070 3 -50.5 -72 -45.5 0.3 2069 - 2071 3 -53 -77 -49.5 0.3 2070 - 2072 3 -54.5 -81 -49.5 0.3 2071 - 2073 3 -57.5 -84.5 -55 0.3 2072 - 2074 3 -59.5 -89 -61 0.3 2073 - 2075 3 -62.5 -94 -61 0.3 2074 - 2076 3 -63.5 -99 -61 0.3 2075 - 2077 3 -67.5 -104.5 -61 0.3 2076 - 2078 3 -69.5 -108.5 -61 0.3 2077 - 2079 3 -71.5 -115 -64.5 0.3 2078 - 2080 3 -71.5 -121 -64.5 0.3 2079 - 2081 3 -73 -125.5 -67.5 0.3 2080 - 2082 3 -77 -130.5 -69.5 0.3 2081 - 2083 3 -78.5 -136 -69.5 0.3 2082 - 2084 3 -82 -141.5 -70.5 0.3 2083 - 2085 3 -85 -146 -75 0.2 2084 - 2086 3 -87.5 -147.5 -73 0.2 2085 - 2087 3 -88.5 -151 -73 0.2 2086 - 2088 3 -91.5 -152 -72 0.2 2087 - 2089 3 -93 -153.5 -79 0.2 2088 - 2090 3 -95 -155.5 -79 0.2 2089 - 2091 3 -98 -156.5 -76 0.15 2090 - 2092 3 -39.5 -59 -22 0.3 2066 - 2093 3 -40.5 -63 -22 0.3 2092 - 2094 3 -43 -66.5 -23 0.3 2093 - 2095 3 -44.5 -72 -22 0.3 2094 - 2096 3 -46.5 -72.5 -22 0.3 2095 - 2097 3 -47.5 -75.5 -21 0.3 2096 - 2098 3 -50.5 -80 -21 0.3 2097 - 2099 3 -55.5 -86 -22 0.3 2098 - 2100 3 -59.5 -93 -22 0.3 2099 - 2101 3 -61 -97.5 -22 0.3 2100 - 2102 3 -65.5 -101 -22 0.3 2101 - 2103 3 -67.5 -106.5 -22 0.3 2102 - 2104 3 -71 -110 -22 0.3 2103 - 2105 3 -76 -113.5 -22 0.3 2104 - 2106 3 -79 -117.5 -17 0.3 2105 - 2107 3 -81.5 -122 -18 0.2 2106 - 2108 3 -83 -127 -17 0.2 2107 - 2109 3 -85.5 -131 -17 0.2 2108 - 2110 3 -86 -133.5 -10.5 0.2 2109 - 2111 3 -88.5 -134 -18 0.2 2110 - 2112 3 -27.5 -42.5 -31.5 0.3 2062 - 2113 3 -25 -48.5 -36 0.3 2112 - 2114 3 -24 -52.5 -36 0.3 2113 - 2115 3 -22 -58 -42 0.3 2114 - 2116 3 -20.5 -61 -44.5 0.3 2115 - 2117 3 -19.5 -66.5 -47.5 0.3 2116 - 2118 3 -20 -72 -50.5 0.3 2117 - 2119 3 -20 -79.5 -50.5 0.3 2118 - 2120 3 -21 -82.5 -56 0.3 2119 - 2121 3 -21 -87 -59 0.3 2120 - 2122 3 -21.5 -95 -57 0.3 2121 - 2123 3 -22.5 -99 -61 0.3 2122 - 2124 3 -22.5 -104 -67.5 0.3 2123 - 2125 3 -23.5 -108 -72 0.3 2124 - 2126 3 -23 -112.5 -76 0.3 2125 - 2127 3 -24.5 -117 -81.5 0.3 2126 - 2128 3 -24 -123.5 -81.5 0.3 2127 - 2129 3 -25.5 -129 -86.5 0.3 2128 - 2130 3 -24.5 -132.5 -91 0.3 2129 - 2131 3 -23 -135 -79 0.3 2130 - 2132 3 -21 -140 -79 0.3 2131 - 2133 3 -5.5 2.5 12 0.55 1 - 2134 3 -8 1.5 13 0.55 2133 - 2135 3 -4 0 13 0.45 2134 - 2136 3 -3.5 -2 19 0.45 2135 - 2137 3 -3 -6 24.5 0.45 2136 - 2138 3 -4.5 -7 31 0.45 2137 - 2139 3 -5.5 -8 34 0.45 2138 - 2140 3 -7.5 -8.5 35 0.45 2139 - 2141 3 -9.5 -8 35 0.45 2140 - 2142 3 -11 -10.5 41.5 0.45 2141 - 2143 3 -14 -13 42.5 0.45 2142 - 2144 3 -16.5 -14 46.5 0.45 2143 - 2145 3 -19 -18.5 49 0.45 2144 - 2146 3 -19 -20.5 48 0.45 2145 - 2147 3 -22 -22.5 51 0.4 2146 - 2148 3 -25 -22 46.5 0.4 2147 - 2149 3 -26 -23.5 51 0.4 2148 - 2150 3 -29 -25.5 51 0.4 2149 - 2151 3 -29.5 -26.5 57.5 0.4 2150 - 2152 3 -30.5 -28 54 0.4 2151 - 2153 3 -31.5 -27 55 0.4 2152 - 2154 3 -32.5 -29 66 0.4 2153 - 2155 3 -33 -30.5 66 0.4 2154 - 2156 3 -38.5 -33 67 0.4 2155 - 2157 3 -36.5 -36.5 72 0.4 2156 - 2158 3 -38 -40.5 74 0.4 2157 - 2159 3 -40.5 -44 77.5 0.4 2158 - 2160 3 -40.5 -47 77.5 0.3 2159 - 2161 3 -43 -50 73 0.3 2160 - 2162 3 -45.5 -52.5 82.5 0.3 2161 - 2163 3 -46.5 -55 88 0.3 2162 - 2164 3 -49 -57.5 91 0.3 2163 - 2165 3 -49 -61.5 93.5 0.3 2164 - 2166 3 -50.5 -64.5 95.5 0.3 2165 - 2167 3 -51.5 -68 95.5 0.3 2166 - 2168 3 -52.5 -72 102 0.3 2167 - 2169 3 -52 -75.5 109 0.3 2168 - 2170 3 -52.5 -78.5 113.5 0.3 2169 - 2171 3 -50.5 -80.5 120 0.3 2170 - 2172 3 -5 5 1 0.45 1 - 2173 3 -8.5 1.5 5.5 0.45 2172 - 2174 3 -12 0 1 0.45 2173 - 2175 3 -15 -3 1 0.45 2174 - 2176 3 -15.5 -6 1 0.45 2175 - 2177 3 -17 -7.5 5.5 0.4 2176 - 2178 3 -19.5 -11 4.5 0.4 2177 - 2179 3 -22.5 -13 5.5 0.4 2178 - 2180 3 -25 -18 5.5 0.4 2179 - 2181 3 -29.5 -21 4.5 0.4 2180 - 2182 3 -33.5 -24 4.5 0.4 2181 - 2183 3 -37.5 -25 7.5 0.4 2182 - 2184 3 -42 -30 6.5 0.4 2183 - 2185 3 -45.5 -36.5 6.5 0.4 2184 - 2186 3 -48 -42 7.5 0.4 2185 - 2187 3 -51 -45 7.5 0.4 2186 - 2188 3 -56.5 -49.5 13 0.4 2187 - 2189 3 -57 -52 13 0.4 2188 - 2190 3 -60 -53 12 0.4 2189 - 2191 3 -63 -55 12 0.4 2190 - 2192 3 -65 -60.5 18 0.4 2191 - 2193 3 -65.5 -62 18 0.4 2192 - 2194 3 -69 -63 18 0.3 2193 - 2195 3 -73 -66 18 0.3 2194 - 2196 3 -73.5 -67.5 18 0.3 2195 - 2197 3 -77 -68 19 0.3 2196 - 2198 3 -78 -72.5 18 0.3 2197 - 2199 3 -82.5 -77 23.5 0.3 2198 - 2200 3 -86.5 -82 26.5 0.3 2199 - 2201 3 -91 -83 30 0.3 2200 - 2202 3 -93 -86 30 0.3 2201 - 2203 3 -97.5 -90 33 0.3 2202 - 2204 3 -99.5 -92 33 0.3 2203 - 2205 3 -102.5 -95.5 35 0.3 2204 - 2206 3 -104 -100.5 38.5 0.3 2205 - 2207 3 -106.5 -102 38.5 0.3 2206 - 2208 3 -111 -104.5 38.5 0.3 2207 - 2209 3 -113 -107 44.5 0.3 2208 - 2210 3 -116 -109.5 43.5 0.3 2209 - 2211 3 -118 -113.5 43.5 0.3 2210 - 2212 3 -121.5 -116.5 43.5 0.3 2211 - 2213 3 -123.5 -117.5 43.5 0.3 2212 - 2214 3 -126.5 -119 43.5 0.3 2213 - 2215 3 -127 -122.5 44.5 0.3 2214 - 2216 3 -129.5 -126 44.5 0.3 2215 - 2217 3 -132 -129 48 0.3 2216 - 2218 3 -134 -130.5 48 0.3 2217 - 2219 3 -136.5 -133 48 0.3 2218 - 2220 3 -138 -134.5 48 0.3 2219 - 2221 3 -141 -136 48 0.3 2220 - 2222 3 -143.5 -136.5 48 0.3 2221 - 2223 3 -145.5 -136 51 0.3 2222 - 2224 3 -148 -136.5 50 0.3 2223 - 2225 3 -150.5 -136.5 50 0.3 2224 - 2226 3 -67.5 -66 18 0.3 2193 - 2227 3 -68.5 -70.5 18 0.3 2226 - 2228 3 -69.5 -72 18 0.3 2227 - 2229 3 -70.5 -75 17 0.3 2228 - 2230 3 -71.5 -80 18 0.3 2229 - 2231 3 -73.5 -85 18 0.3 2230 - 2232 3 -75.5 -88.5 18 0.3 2231 - 2233 3 -77 -93.5 18 0.3 2232 - 2234 3 -75 -96 18 0.3 2233 - 2235 3 -76.5 -101 27.5 0.3 2234 - 2236 3 -76.5 -106.5 28.5 0.3 2235 - 2237 3 -78.5 -112 27.5 0.3 2236 - 2238 3 -79.5 -118 30 0.3 2237 - 2239 3 -80.5 -120 30 0.3 2238 - 2240 3 -80.5 -122 30 0.3 2239 - 2241 3 -84 -128 28.5 0.3 2240 - 2242 3 -83 -132.5 33 0.3 2241 - 2243 3 -84 -137 33 0.3 2242 - 2244 3 -86 -136 36 0.3 2243 - 2245 3 -85.5 -139.5 37 0.2 2244 - 2246 3 -87.5 -139.5 37 0.2 2245 diff --git a/examples/tutorials/Rdesigneur/cells/ca1_minimal.p b/examples/tutorials/Rdesigneur/cells/ca1_minimal.p deleted file mode 100644 index 4395d62..0000000 --- a/examples/tutorials/Rdesigneur/cells/ca1_minimal.p +++ /dev/null @@ -1,58 +0,0 @@ -// genesis -// cell parameter file for the 1991 Traub CA1 hippocampal cell -// "phi" parameter reduced by e-3 -*cartesian -*relative - -*set_global RM 1.0 //ohm*m^2 -*set_global RA 1.0 //ohm*m -*set_global CM 0.03 //F/m^2 -*set_global EREST_ACT -0.06 // volts - -// The format for each compartment parameter line is : -// name parent x y z d ch dens ... -// For channels, "dens" = maximum conductance per unit area of compartment - - -dend_3 none 0 220 0 3.84 -dend_5 . 0 220 0 3.84 -dend_6 . 0 220 0 3.84 -dend_8 . 0 110 0 3.84 - -soma dend_8 0 125 0 8.46 - - -apical_10 soma 0 120 0 4.0 -apical_11 apical_10 0 120 0 3 -apical_12 apical_11 0 120 0 3 -apical_13 apical_12 0 120 0 2.6 -apical_14 apical_13 0 120 0 2.6 -apical_15 apical_14 0 120 0 2.6 -apical_16 apical_15 0 120 0 2.6 -apical_17 apical_16 0 120 0 2.6 -apical_18 apical_17 0 120 0 2.6 -apical_19 apical_18 0 120 0 2.6 - -apical_11_1 apical_10 -60 60 0 2 -apical_11_2 apical_11_1 -60 60 0 1.8 -apical_11_3 apical_11_2 0 80 0 1.5 -apical_11_4 apical_11_3 0 80 0 1.5 - -apical_13_1 apical_12 40 40 0 1.0 -apical_13_2 apical_13_1 40 40 0 1.0 - -apical_14_1 apical_13_2 0 10 0 1.0 -apical_14_2 . 0 10 0 1.0 -apical_14_3 . 0 10 0 1.0 -apical_14_4 . 0 10 0 1.0 -apical_14_5 . 0 10 0 1.0 -apical_14_6 . 0 10 0 1.0 -apical_14_7 . 0 10 0 1.0 -apical_14_8 . 0 10 0 1.0 -apical_14_9 . 0 10 0 1.0 -apical_14_10 . 0 10 0 1.0 -apical_14_11 . 0 10 0 1.0 -apical_14_12 . 0 10 0 1.0 -apical_14_13 . 0 10 0 1.0 -apical_15_1 . 0 30 0 1.0 -apical_15_2 . 0 60 0 1.0 diff --git a/examples/tutorials/Rdesigneur/cells/h10.CNG.swc b/examples/tutorials/Rdesigneur/cells/h10.CNG.swc deleted file mode 100644 index 554dbe2..0000000 --- a/examples/tutorials/Rdesigneur/cells/h10.CNG.swc +++ /dev/null @@ -1,226 +0,0 @@ -# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. -# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. -# -#---------------------------------------------------------------------- -# This file was obtained using ban2swc.pl on file h10.txt -# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 -#---------------------------------------------------------------------- -# ORIGINAL_SOURCE -# CREATURE -# REGION -# FIELD/LAYER -# TYPE -# CONTRIBUTOR -# REFERENCE -# RAW -# EXTRAS -# SOMA_AREA -# SHRINKAGE_CORRECTION -# VERSION_NUMBER -# VERSION_DATE -# ********************************************* -# SCALE 1.0 1.0 1.0 - 1 1 0. 23. 0. 3.35 -1 - 2 1 0. 18. 0. 2.5 1 - 3 1 0. 0. 0. 1.058 2 - 4 3 -4.157 -2.778 0. 0.6 3 - 5 3 -5.925 -3.510 -4.62 0.55 4 - 6 3 -15.47 -7.464 -29.560 0.4 5 - 7 3 -23.89 -9.139 -72.72 0.4 6 - 8 3 -24.39 -13.43 -83.51 0.350 6 - 9 3 -9.814 -5.121 -14.780 0.5 5 - 10 3 -15.81 -6.313 -23.93 0.5 9 - 11 3 -65.94 -16.29 -100.4 0.4 10 - 12 3 -54.5 -14.01 -82.960 0.4 10 - 13 3 -17.2 -10.06 -28.09 0.4 9 - 14 3 -78.64 -51.11 -138.70 0.4 13 - 15 3 -41.69 -26.42 -72.15 0.350 13 - 16 3 -10.11 -8.731 -20.330 0.45 4 - 17 3 -14.44 -13.06 -35.11 0.350 16 - 18 3 -26.61 -21.19 -108.7 0.3 17 - 19 3 -24.2 -27.66 -123.4 0.3 17 - 20 3 -32.3 -30.92 -96.08 0.350 16 - 21 3 -45.7 -39.87 -120.2 0.3 20 - 22 3 -56.99 -67.88 -162.60 0.350 20 - 23 3 -8.889 -13.3 0. 0.65 3 - 24 3 -11.39 -15.8 -3.54 0.55 23 - 25 3 -19.39 -23.8 -14.85 0.5 24 - 26 3 -21.7 -25.35 -19.01 0.45 25 - 27 3 -33.25 -33.06 -39.79 0.4 26 - 28 3 -64.36 -45.95 -121.10 0.350 27 - 29 3 -53.54 -53.36 -109.10 0.350 27 - 30 3 -26.32 -28.43 -27.32 0.4 26 - 31 3 -68.78 -46.02 -73.28 0.3 30 - 32 3 -71.820 -73.93 -91.67 0.350 30 - 33 3 -59.82 -84.320 -123.80 0.350 25 - 34 3 -84.52 -121.30 -190.3 0.25 33 - 35 3 -34.39 -38.80 -36.06 0.350 24 - 36 3 -96.61 -80.38 -86.06 0.3 35 - 37 3 -93.98 -128. -107.7 0.3 35 - 38 3 -15.65 -29.64 -17.68 0.5 23 - 39 3 -17.01 -32.9 -21.21 0.5 38 - 40 3 -21.95 -40.29 -34.52 0.4 39 - 41 3 -50.03 -82.33 -110.2 0.3 40 - 42 3 -49.730 -81.87 -109.30 0.350 40 - 43 3 -22.75 -61.78 -65.28 0.3 39 - 44 3 -37.30 -81.9 -74.25 0.3 38 - 45 3 -2.146 -10.790 0. 0.75 3 - 46 3 -24.77 -65.42 -24.490 0.350 45 - 47 3 -54.47 -137.1 -56.64 0.350 46 - 48 3 -55.18 -138.8 -57.4 0.350 46 - 49 3 -2.146 -20.95 -4.21 0.6 45 - 50 3 -2.146 -35.730 -10.33 0.45 49 - 51 3 -22.75 -139.3 -80.89 0.3 50 - 52 3 29. -192.3 -117. 0.350 50 - 53 3 -2.146 -25.57 -6.12 0.55 49 - 54 3 -3.103 -30.38 -7.10 0.5 53 - 55 3 -49.410 -263.2 -54.31 0.350 54 - 56 3 -22.05 -125.60 -26.41 0.3 54 - 57 3 16.990 -121.80 -25.63 0.3 53 - 58 3 2.146 -10.790 0. 0.65 3 - 59 3 2.146 -20.79 0. 0.4 58 - 60 3 2.146 -235.8 0. 0.350 59 - 61 3 2.146 -250.8 0. 0.25 60 - 62 3 4.059 -15.41 0. 0.4 58 - 63 3 8.269 -25.57 0. 0.350 62 - 64 3 35.63 -163.10 -27.90 0.4 63 - 65 3 45.32 -81.02 -13.27 0.3 63 - 66 3 20.13 -54.21 0. 0.350 62 - 67 3 35.25 -130.20 15.41 0.3 66 - 68 3 78.98 -142.3 21.07 0.350 66 - 69 3 8.889 -13.3 0. 0.6 3 - 70 3 16.67 -32.08 8.42 0.5 69 - 71 3 24.45 -50.86 16.84 0.45 70 - 72 3 49.32 -175.9 42.2 0.350 71 - 73 3 84.38 -140.6 38.30 0.350 71 - 74 3 42.45 -141.4 78.51 0.4 70 - 75 3 48.94 -174. 100.7 0.3 74 - 76 3 16.080 -20.490 4.21 0.4 69 - 77 3 99.04 -103.5 52.81 0.3 76 - 78 3 41.550 -45.97 19.13 0.3 76 - 79 3 63.71 -109.60 64.06 0.3 78 - 80 3 75.26 -126.9 77.95 0.2 79 - 81 3 18.29 -12.22 0. 0.6 3 - 82 3 20.79 -14.72 3.54 0.55 81 - 83 3 26.29 -20.22 11.31 0.5 82 - 84 3 101.10 -132.20 101.30 0.350 83 - 85 3 97.5 -67.8 68.54 0.3 83 - 86 3 47.29 -41.22 41.01 0.25 82 - 87 3 21.56 -13.58 3.54 0.5 81 - 88 3 28.09 -16.28 10.61 0.45 87 - 89 3 122.10 -79.11 86.16 0.3 88 - 90 3 85.99 -27.8 50.050 0.3 88 - 91 3 43.12 -22.51 26.87 0.4 87 - 92 3 75.45 -44.11 85.070 0.350 91 - 93 3 97.61 -33.34 110. 0.350 91 - 94 4 0. 41. 0. 2.550 1 - 95 4 0. 127. 0. 0.3 94 - 96 4 5.932 70.820 -6.05 2.25 94 - 97 4 18.37 133.3 -18.73 1.25 96 - 98 4 26.63 153.3 -23.02 0.6 97 - 99 4 56.65 225.8 -38.63 0.3 98 - 100 4 29.63 160.5 -24.580 0.6 98 - 101 4 91.850 253.70 -24.580 0.350 100 - 102 4 63.97 333.1 -24.580 0.350 100 - 103 4 18.37 142.20 -20.48 1.25 97 - 104 4 18.37 145.1 -21.07 1.25 103 - 105 4 28.28 195. -42.12 0.45 104 - 106 4 33.69 222.10 -53.6 0.350 105 - 107 4 39.1 249.3 -65.08 0.25 106 - 108 4 17.47 149.6 -22.98 1.25 104 - 109 4 4.851 213.10 -49.77 0.5 108 - 110 4 -10.07 288.1 -100.9 0.350 109 - 111 4 15.85 157.8 -26.43 1.25 108 - 112 4 15.85 182.3 -31.3 0.5 111 - 113 4 15.85 235.3 -41.84 0.350 112 - 114 4 15.85 272.2 -57.15 0.3 113 - 115 4 15.85 195.10 -33.84 0.350 112 - 116 4 30.09 266.7 -33.84 0.3 115 - 117 4 0.2380 273.5 -33.84 0.3 115 - 118 4 11.72 167.8 -28.57 1.25 111 - 119 4 3.46 187.70 -32.87 1.25 118 - 120 4 -0.506 207.60 -41.28 1.25 119 - 121 4 -3.39 222.10 -47.410 1.25 120 - 122 4 -3.39 223.8 -48.52 1.25 121 - 123 4 -3.39 247.10 -64.070 0.45 122 - 124 4 1.439 271.40 -88.820 0.3 123 - 125 4 -16.080 310.90 -129.1 0.350 123 - 126 4 -3.39 248.70 -65.19 1.25 122 - 127 4 -3.209 249.70 -65.570 1.25 126 - 128 4 1.297 272.3 -75.14 0.5 127 - 129 4 12. 326.1 -111.80 0.350 128 - 130 4 -0.506 263.2 -71.31 1.25 127 - 131 4 0.2450 265.1 -71.7 0.6 130 - 132 4 3.623 273.2 -73.45 0.55 131 - 133 4 46.230 337. -105.2 0.3 132 - 134 4 22.55 368.40 -113.60 0.350 132 - 135 4 19.01 310.40 -81.45 0.45 131 - 136 4 42.74 367.6 -81.45 0.350 135 - 137 4 -0.506 280.90 -74.820 1.25 130 - 138 4 -0.506 284.8 -75.60 0.850 137 - 139 4 14.450 360. -107.4 0.4 138 - 140 4 18.06 378.1 -115. 0.3 139 - 141 4 -14.02 352.8 -104.30 0.850 138 - 142 4 -20.330 384.5 -117.7 0.70 141 - 143 4 -20.330 441.8 -141.4 0.70 142 - 144 4 -20.330 494.40 -163.20 0.45 143 - 145 4 -20.330 544.30 -196.60 0.350 144 - 146 4 -20.330 582.6 -222.10 0.3 145 - 147 4 -20.330 622.5 -248.8 0.3 145 - 148 4 -20.330 462.1 -149.8 0.6 143 - 149 4 -7.321 527.5 -163.10 0.45 148 - 150 4 -1.389 557.30 -169.20 0.350 149 - 151 4 21.51 612.6 -181.10 0.3 150 - 152 4 -1.389 630.90 -183.8 0.25 150 - 153 4 -36.6 543.9 -166.4 0.6 148 - 154 4 -46.36 592.9 -176.4 0.350 153 - 155 4 -46.36 669.6 -208.10 0.25 154 - 156 4 -74.99 662.1 -207.4 0.25 154 - 157 4 -44.44 583.30 -174.4 0.5 153 - 158 4 -44.44 665.30 -174.4 0.350 157 - 159 4 -44.44 705.30 -174.4 0.25 158 - 160 4 -87.3 686.80 -174.4 0.350 157 - 161 4 -121.7 769.90 -174.4 0.25 160 - 162 4 -32.71 414.40 -131.1 0.45 142 - 163 4 -85.74 542.4 -188.5 0.350 162 - 164 4 -120. 625.2 -225.60 0.3 163 - 165 4 -137.4 667. -244.4 0.25 164 - 166 4 -132.4 655.1 -239. 0.2 164 - 167 4 -0.506 290.7 -76.77 0.9 137 - 168 4 6.713 327. -76.77 0.8 167 - 169 4 8.664 336.8 -76.77 0.6 168 - 170 4 12.49 356. -80.67 0.5 169 - 171 4 21.48 401.3 -89.84 0.350 170 - 172 4 13.74 362.3 -76.77 0.5 168 - 173 4 23.12 385. -71.89 0.25 172 - 174 4 13.74 396.6 -69.94 0.350 172 - 175 4 -20.6 391.70 -76.77 0.350 167 - 176 4 -15.83 311.3 -91.59 0.4 126 - 177 4 -28.44 374.70 -118.4 0.3 176 - 178 4 -14.84 249.8 -67.41 0.45 121 - 179 4 -37.12 303.6 -106.30 0.350 178 - 180 4 -55.25 347.3 -138. 0.3 178 - 181 4 -3.209 221.20 -47.02 0.45 120 - 182 4 -3.209 356.6 -73.95 0.350 181 - 183 4 -31.36 289.2 -61.660 0.350 181 - 184 4 -11.94 210.70 -44.35 0.6 119 - 185 4 -36.06 246.9 -62.33 0.5 184 - 186 4 -67.18 322. -96.01 0.3 185 - 187 4 -81.14 291.90 -88.74 0.3 185 - 188 4 1.208 193.10 -34.04 0.4 118 - 189 4 -21.42 306.90 -34.04 0.3 188 - 190 4 -77.13 310.40 -34.04 0.350 188 - 191 4 18.37 165.70 -25.17 0.5 103 - 192 4 25.78 203. -25.17 0.350 191 - 193 4 56.22 356. -25.17 0.3 192 - 194 4 50.36 326.6 -25.17 0.3 192 - 195 4 16.22 176.5 -25.17 0.350 191 - 196 4 -10.31 309.90 -25.17 0.350 195 - 197 4 2.957 243.20 -25.17 0.3 195 - 198 4 -2.105 51.58 -2.15 0.350 94 - 199 4 -20.09 142. -20.48 0.350 198 - 200 4 -3.061 56.39 -3.12 0.3 198 - 201 4 -3.061 76.39 -3.12 0.3 200 - 202 4 -3.061 142.4 -3.12 0.3 201 - 203 4 -3.061 167.4 -3.12 0.3 201 - 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/tutorials/Rdesigneur/chans/CA1.morph.xml b/examples/tutorials/Rdesigneur/chans/CA1.morph.xml deleted file mode 100644 index 2a3815b..0000000 --- a/examples/tutorials/Rdesigneur/chans/CA1.morph.xml +++ /dev/null @@ -1,12673 +0,0 @@ - - - - - - - Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path Length from root - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ModelViewParmSubset_5 - - - - ModelViewParmSubset_5 - - - - - - soma_group - - - - soma_group - - - - - - ModelViewParmSubset_7 - - - - ModelViewParmSubset_7 - - - - - - axon_group - soma_group - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - ModelViewParmSubset_2 - - - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - all - - - - - - - - dendrite_group - - - - - - - - - - dendrite_group - - - - - - - - - - dendrite_group - - - - - - - - all - - - - - - ModelViewParmSubset_2 - - - - OneSecGrp_SectionRef_5 - - - - - - all - - - - - - all - - - - - - - all - - - - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/Ca.xml b/examples/tutorials/Rdesigneur/chans/Ca.xml deleted file mode 100644 index 645161c..0000000 --- a/examples/tutorials/Rdesigneur/chans/Ca.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a - Detailed Network Model of the Cerebellar Granule Cell Layer - - - - - - - Voltage-gated Ca2+ channel, based on Traub - - - - Traub, R. - - - Upi Bhalla - NCBS - bhalla - at - ncbs.res.in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/tutorials/Rdesigneur/chans/CaConc.xml b/examples/tutorials/Rdesigneur/chans/CaConc.xml deleted file mode 100644 index fe10a98..0000000 --- a/examples/tutorials/Rdesigneur/chans/CaConc.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - Ca pool - - - Signifies that the ion is involved in a process which alters its concentration - - - - - - - Upi Bhalla - - - - An expontially decaying pool of calcium - - - - Upi Bhalla - National Centre for Biological Sciences, Bangalore, India. - bhalla - at - ncbs.res.in - - - - - - - - - - - - diff --git a/examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml b/examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml deleted file mode 100644 index 58cc74e..0000000 --- a/examples/tutorials/Rdesigneur/chans/DoubExpSyn.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - ChannelML file describing a single synaptic mechanism - - - - - - - Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as - double exponential function of time. Mappings exist for NEURON and GENESIS. - - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Receptor properties - http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp - - - - - - - - diff --git a/examples/tutorials/Rdesigneur/chans/Generated.net.xml b/examples/tutorials/Rdesigneur/chans/Generated.net.xml deleted file mode 100644 index d2f3f34..0000000 --- a/examples/tutorials/Rdesigneur/chans/Generated.net.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 - -Cell Group: CA1_CG contains 1 cells - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/Glu.xml b/examples/tutorials/Rdesigneur/chans/Glu.xml deleted file mode 100644 index c1a7d7c..0000000 --- a/examples/tutorials/Rdesigneur/chans/Glu.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Glutamate receptor synchan, 2 ms tau. - - - - Simple double exponential waveform glu synapse - - - diff --git a/examples/tutorials/Rdesigneur/chans/HChannel.xml b/examples/tutorials/Rdesigneur/chans/HChannel.xml deleted file mode 100644 index c1c91b4..0000000 --- a/examples/tutorials/Rdesigneur/chans/HChannel.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - diff --git a/examples/tutorials/Rdesigneur/chans/NMDA.xml b/examples/tutorials/Rdesigneur/chans/NMDA.xml deleted file mode 100644 index ce7e3dd..0000000 --- a/examples/tutorials/Rdesigneur/chans/NMDA.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - NMDA receptor synchan, 20 ms tau. - - - - Simple double exponential waveform NMDA synapse - - - diff --git a/examples/tutorials/Rdesigneur/chans/hd.xml b/examples/tutorials/Rdesigneur/chans/hd.xml deleted file mode 100644 index a882baa..0000000 --- a/examples/tutorials/Rdesigneur/chans/hd.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse - - Padraig Gleeson - - - - H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/kad.xml b/examples/tutorials/Rdesigneur/chans/kad.xml deleted file mode 100644 index bb7c5af..0000000 --- a/examples/tutorials/Rdesigneur/chans/kad.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/kap.xml b/examples/tutorials/Rdesigneur/chans/kap.xml deleted file mode 100644 index 58fdea0..0000000 --- a/examples/tutorials/Rdesigneur/chans/kap.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, - modified to account for Dax A Current --- M.Migliore Jun 1997, - modified to be used with cvode M.Migliore 2001 - - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/kdr.xml b/examples/tutorials/Rdesigneur/chans/kdr.xml deleted file mode 100644 index 180c563..0000000 --- a/examples/tutorials/Rdesigneur/chans/kdr.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, - modified to account for Dax et al., M.Migliore 1997 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - K channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/na3.xml b/examples/tutorials/Rdesigneur/chans/na3.xml deleted file mode 100644 index 94e9713..0000000 --- a/examples/tutorials/Rdesigneur/chans/na3.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! - - Padraig Gleeson - - - - Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chans/nax.xml b/examples/tutorials/Rdesigneur/chans/nax.xml deleted file mode 100644 index 1225d6a..0000000 --- a/examples/tutorials/Rdesigneur/chans/nax.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse - - Padraig Gleeson - - - - Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, - added sh to account for higher threshold M.Migliore, Apr.2002 - - - - Michele Migliore - Cited implementer according to ModelDB - - - Padraig Gleeson - UCL - p.gleeson - at - ucl.ac.uk - - - - - Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 - http://www.ncbi.nlm.nih.gov/pubmed/16293591 - - - - Na channels - http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 - - - - CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) - http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values - - - - - - - - diff --git a/examples/tutorials/Rdesigneur/chans/pas.xml b/examples/tutorials/Rdesigneur/chans/pas.xml deleted file mode 100644 index 9abffeb..0000000 --- a/examples/tutorials/Rdesigneur/chans/pas.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - ChannelML file containing a single Channel description - - - - - - Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, - it is better to use the Rm and Em variables for a passive current. - - - - - - \ No newline at end of file diff --git a/examples/tutorials/Rdesigneur/chem/psd52.g b/examples/tutorials/Rdesigneur/chem/psd52.g deleted file mode 100644 index 9b4197e..0000000 --- a/examples/tutorials/Rdesigneur/chem/psd52.g +++ /dev/null @@ -1,488 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Sun Dec 7 15:51:46 2014 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.0001 -CONTROLDT = 1 -PLOTDT = 0.2 -MAXTIME = 200 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-19 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ - -4 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ - -17 0 -simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ - -13 0 -simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ - 0 -simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ - 0 -simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ - -18 0 -simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump text /kinetics/geometry[7]/notes 0 "" -call /kinetics/geometry[7]/notes LOAD \ -"" -simundump text /kinetics/geometry[8]/notes 0 "" -call /kinetics/geometry[8]/notes LOAD \ -"" -simundump text /kinetics/geometry[9]/notes 0 "" -call /kinetics/geometry[9]/notes LOAD \ -"" -simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 -simundump text /kinetics/exocytosis/notes 0 "" -call /kinetics/exocytosis/notes LOAD \ -"" -simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 -simundump text /kinetics/endocytosis/notes 0 "" -call /kinetics/endocytosis/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/Rp/notes 0 "" -call /kinetics/PSD/Rp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ - 0 -4 -2 0 -simundump text /kinetics/PSD/P/notes 0 "" -call /kinetics/PSD/P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -6 -1 0 -simundump text /kinetics/PSD/P/P1/notes 0 "" -call /kinetics/PSD/P/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -2 -1 0 -simundump text /kinetics/PSD/P/P2/notes 0 "" -call /kinetics/PSD/P/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ - 49 0 -4 4 0 -simundump text /kinetics/PSD/KK/notes 0 "" -call /kinetics/PSD/KK/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -6 3 0 -simundump text /kinetics/PSD/KK/KK1/notes 0 "" -call /kinetics/PSD/KK/KK1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -2 3 0 -simundump text /kinetics/PSD/KK/KK2/notes 0 "" -call /kinetics/PSD/KK/KK2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - 28 0 0 1 0 -simundump text /kinetics/PSD/Rpp/notes 0 "" -call /kinetics/PSD/Rpp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R/notes 0 "" -call /kinetics/PSD/R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[4] blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_PSD 0 0 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry[5] 53 0 -15 2 0 -simundump text /kinetics/PSD/Ca_PSD/notes 0 "" -call /kinetics/PSD/Ca_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry[7] blue 0 -12 5 0 -simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" -call /kinetics/PSD/psd_inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 -simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" -call /kinetics/PSD/psd_activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ - blue 0 -4 -4 0 -simundump text /kinetics/PSD/Ca.P/notes 0 "" -call /kinetics/PSD/Ca.P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -2 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -6 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ - /kinetics/geometry[8] 60 black -12 9 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 -simundump text /kinetics/PSD/Ca_reac/notes 0 "" -call /kinetics/PSD/Ca_reac/notes LOAD \ -"" -simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/Bulk/notes 0 "" -call /kinetics/Bulk/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry 29 yellow 2 -11 0 -simundump text /kinetics/Bulk/iRpp/notes 0 "" -call /kinetics/Bulk/iRpp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry blue yellow -2 -11 0 -simundump text /kinetics/Bulk/iRp/notes 0 "" -call /kinetics/Bulk/iRp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ - /kinetics/geometry 0 yellow -6 -11 0 -simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ - /kinetics/geometry 50 yellow -2 -8 0 -simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" -4 -9 0 -simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" -call /kinetics/Bulk/iKK/iKK1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" 0 -9 0 -simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" -call /kinetics/Bulk/iKK/iKK2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ - /kinetics/geometry 62 yellow -2 -14 0 -simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" -4 -13 0 -simundump text /kinetics/Bulk/iP/iP1/notes 0 "" -call /kinetics/Bulk/iP/iP1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" 0 -13 0 -simundump text /kinetics/Bulk/iP/iP2/notes 0 "" -call /kinetics/Bulk/iP/iP2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ - 43 yellow -3 -5 0 -simundump text /kinetics/Bulk/PKA/notes 0 "" -call /kinetics/Bulk/PKA/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" -4 -7 0 -simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" -call /kinetics/Bulk/PKA/PKA1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" 0 -7 0 -simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" -call /kinetics/Bulk/PKA/PKA2/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ - red 43 "" 1 -5 0 -simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" -call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ - -10 0 -simundump text /kinetics/Bulk/activate_PKA/notes 0 "" -call /kinetics/Bulk/activate_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ - /kinetics/geometry[2] 51 yellow -12 -6 0 -simundump text /kinetics/Bulk/inact_PKA/notes 0 "" -call /kinetics/Bulk/inact_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ - /kinetics/geometry[6] blue yellow -13 -18 0 -simundump text /kinetics/Bulk/inact_CaN/notes 0 "" -call /kinetics/Bulk/inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ - -16 0 -simundump text /kinetics/Bulk/activate_CaN/notes 0 "" -call /kinetics/Bulk/activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/Ca_Spine 0 0 0.1 0.1 6 6 0 0 60 0 \ - /kinetics/geometry[2] 50 yellow -15 -13 0 -simundump text /kinetics/Bulk/Ca_Spine/notes 0 "" -call /kinetics/Bulk/Ca_Spine/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/Ca_to_dend 0 10 1 "" white black -16 -22 0 -simundump text /kinetics/Bulk/Ca_to_dend/notes 0 "" -call /kinetics/Bulk/Ca_to_dend/notes LOAD \ -"" -simundump kreac /kinetics/Ca_to_bulk 0 10 100 "" white black -15 -3 0 -simundump text /kinetics/Ca_to_bulk/notes 0 "" -call /kinetics/Ca_to_bulk/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend 0 0 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ - 1 black -19 -25 0 -simundump text /kinetics/Ca_dend/notes 0 "" -call /kinetics/Ca_dend/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[9] 60 black -12 -28 0 -simundump text /kinetics/Ca_dend_input/notes 0 "" -call /kinetics/Ca_dend_input/notes LOAD \ -"" -simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 -simundump text /kinetics/dend_Ca_reac/notes 0 "" -call /kinetics/dend_Ca_reac/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 -simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 -simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 41 0 0 1 -simundump xplot /graphs/conc1/PKA.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 43 0 0 1 -simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 -simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 -simundump xcoredraw /edit/draw 0 -21 7 -30 11 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"26 Nov 2014. psd51.g: based on psd50.g which was" \ -"based on psd41_back_dend.g." \ -"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ -"10x while retaining Keq." -addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n -addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n -addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n -addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n -addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n -addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A -addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B -addmsg /kinetics/Ca_to_bulk /kinetics/PSD/Ca_PSD REAC B A -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_PSD REAC B A -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B -addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/Ca_reac PRODUCT n -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n -addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B -addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Ca_to_bulk /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/Ca_to_dend /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/Ca_to_dend SUBSTRATE n -addmsg /kinetics/Ca_dend /kinetics/Bulk/Ca_to_dend PRODUCT n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Ca_to_bulk SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/Ca_to_bulk PRODUCT n -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend REAC B A -addmsg /kinetics/Bulk/Ca_to_dend /kinetics/Ca_dend REAC B A -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B -addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n -addmsg /kinetics/Ca_dend /kinetics/dend_Ca_reac PRODUCT n -addmsg /kinetics/PSD/Ca_PSD /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 -addmsg /kinetics/Bulk/Ca_Spine /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 -addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 -addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue -addmsg /kinetics/Ca_dend /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -enddump -// End of dump - -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -complete_loading diff --git a/examples/tutorials/Rdesigneur/chem/psd53.g b/examples/tutorials/Rdesigneur/chem/psd53.g deleted file mode 100644 index e120a6a..0000000 --- a/examples/tutorials/Rdesigneur/chem/psd53.g +++ /dev/null @@ -1,477 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Fri Jun 5 09:12:59 2015 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.0001 -CONTROLDT = 1 -PLOTDT = 0.2 -MAXTIME = 200 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-19 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ - -4 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ - -17 0 -simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ - -13 0 -simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ - 0 -simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ - 0 -simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ - -18 0 -simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump text /kinetics/geometry[7]/notes 0 "" -call /kinetics/geometry[7]/notes LOAD \ -"" -simundump text /kinetics/geometry[8]/notes 0 "" -call /kinetics/geometry[8]/notes LOAD \ -"" -simundump text /kinetics/geometry[9]/notes 0 "" -call /kinetics/geometry[9]/notes LOAD \ -"" -simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 -simundump text /kinetics/exocytosis/notes 0 "" -call /kinetics/exocytosis/notes LOAD \ -"" -simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 -simundump text /kinetics/endocytosis/notes 0 "" -call /kinetics/endocytosis/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/Rp/notes 0 "" -call /kinetics/PSD/Rp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ - 0 -4 -2 0 -simundump text /kinetics/PSD/P/notes 0 "" -call /kinetics/PSD/P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -6 -1 0 -simundump text /kinetics/PSD/P/P1/notes 0 "" -call /kinetics/PSD/P/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -2 -1 0 -simundump text /kinetics/PSD/P/P2/notes 0 "" -call /kinetics/PSD/P/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ - 49 0 -4 4 0 -simundump text /kinetics/PSD/KK/notes 0 "" -call /kinetics/PSD/KK/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -6 3 0 -simundump text /kinetics/PSD/KK/KK1/notes 0 "" -call /kinetics/PSD/KK/KK1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -2 3 0 -simundump text /kinetics/PSD/KK/KK2/notes 0 "" -call /kinetics/PSD/KK/KK2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - 28 0 0 1 0 -simundump text /kinetics/PSD/Rpp/notes 0 "" -call /kinetics/PSD/Rpp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R/notes 0 "" -call /kinetics/PSD/R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[4] blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry[7] blue 0 -12 5 0 -simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" -call /kinetics/PSD/psd_inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 -simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" -call /kinetics/PSD/psd_activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ - blue 0 -4 -4 0 -simundump text /kinetics/PSD/Ca.P/notes 0 "" -call /kinetics/PSD/Ca.P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -2 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -6 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ - /kinetics/geometry[8] 60 black -12 9 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 -simundump text /kinetics/PSD/Ca_reac/notes 0 "" -call /kinetics/PSD/Ca_reac/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry[5] 53 0 -15 2 0 -simundump text /kinetics/PSD/Ca/notes 0 "" -call /kinetics/PSD/Ca/notes LOAD \ -"" -simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/Bulk/notes 0 "" -call /kinetics/Bulk/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry 29 yellow 2 -11 0 -simundump text /kinetics/Bulk/iRpp/notes 0 "" -call /kinetics/Bulk/iRpp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry blue yellow -2 -11 0 -simundump text /kinetics/Bulk/iRp/notes 0 "" -call /kinetics/Bulk/iRp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ - /kinetics/geometry 0 yellow -6 -11 0 -simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ - /kinetics/geometry 50 yellow -2 -8 0 -simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" -4 -9 0 -simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" -call /kinetics/Bulk/iKK/iKK1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" 0 -9 0 -simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" -call /kinetics/Bulk/iKK/iKK2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ - /kinetics/geometry 62 yellow -2 -14 0 -simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" -4 -13 0 -simundump text /kinetics/Bulk/iP/iP1/notes 0 "" -call /kinetics/Bulk/iP/iP1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" 0 -13 0 -simundump text /kinetics/Bulk/iP/iP2/notes 0 "" -call /kinetics/Bulk/iP/iP2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ - 43 yellow -3 -5 0 -simundump text /kinetics/Bulk/PKA/notes 0 "" -call /kinetics/Bulk/PKA/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" -4 -7 0 -simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" -call /kinetics/Bulk/PKA/PKA1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" 0 -7 0 -simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" -call /kinetics/Bulk/PKA/PKA2/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ - red 43 "" 1 -5 0 -simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" -call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ - -10 0 -simundump text /kinetics/Bulk/activate_PKA/notes 0 "" -call /kinetics/Bulk/activate_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ - /kinetics/geometry[2] 51 yellow -12 -6 0 -simundump text /kinetics/Bulk/inact_PKA/notes 0 "" -call /kinetics/Bulk/inact_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ - /kinetics/geometry[6] blue yellow -13 -18 0 -simundump text /kinetics/Bulk/inact_CaN/notes 0 "" -call /kinetics/Bulk/inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ - -16 0 -simundump text /kinetics/Bulk/activate_CaN/notes 0 "" -call /kinetics/Bulk/activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ - /kinetics/geometry[2] 50 yellow -15 -13 0 -simundump text /kinetics/Bulk/Ca/notes 0 "" -call /kinetics/Bulk/Ca/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[9] 60 black -12 -28 0 -simundump text /kinetics/Ca_dend_input/notes 0 "" -call /kinetics/Ca_dend_input/notes LOAD \ -"" -simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 -simundump text /kinetics/dend_Ca_reac/notes 0 "" -call /kinetics/dend_Ca_reac/notes LOAD \ -"" -simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ - 1 black -19 -25 0 -simundump text /kinetics/Ca/notes 0 "" -call /kinetics/Ca/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 -simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 -simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 41 0 0 1 -simundump xplot /graphs/conc1/PKA.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 43 0 0 1 -simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 -simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 -simundump xcoredraw /edit/draw 0 -21 7 -30 11 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"26 Nov 2014. psd51.g: based on psd50.g which was" \ -"based on psd41_back_dend.g." \ -"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ -"10x while retaining Keq." \ -"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ -"psd. Will use diffusion instead." \ -"05 June 2015. psd53.g updated further to use the same name (Ca)" \ -"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ -"" -addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n -addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n -addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n -addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n -addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n -addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A -addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B -addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n -addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n -addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B -addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B -addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n -addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n -addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A -addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 -addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 -addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 -addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue -addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -enddump -// End of dump - -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -complete_loading diff --git a/examples/tutorials/Rdesigneur/chem/psd53_old.g b/examples/tutorials/Rdesigneur/chem/psd53_old.g deleted file mode 100644 index 7546933..0000000 --- a/examples/tutorials/Rdesigneur/chem/psd53_old.g +++ /dev/null @@ -1,474 +0,0 @@ -//genesis -// kkit Version 11 flat dumpfile - -// Saved on Thu Jun 4 22:45:34 2015 - -include kkit {argv 1} - -FASTDT = 1e-05 -SIMDT = 0.0001 -CONTROLDT = 1 -PLOTDT = 0.2 -MAXTIME = 200 -TRANSIENT_TIME = 2 -VARIABLE_DT_FLAG = 1 -DEFAULT_VOL = 1e-19 -VERSION = 11.0 -setfield /file/modpath value /home2/bhalla/scripts/modules -kparms - -//genesis - -initdump -version 3 -ignoreorphans 1 -simobjdump doqcsinfo filename accessname accesstype transcriber developer \ - citation species tissue cellcompartment methodology sources \ - model_implementation model_validation x y z -simobjdump table input output alloced step_mode stepsize x y z -simobjdump xtree path script namemode sizescale -simobjdump xcoredraw xmin xmax ymin ymax -simobjdump xtext editable -simobjdump xgraph xmin xmax ymin ymax overlay -simobjdump xplot pixflags script fg ysquish do_slope wy -simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ - link savename file version md5sum mod_save_flag x y z -simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ - z -simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ - geomname xtree_fg_req xtree_textfg_req x y z -simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z -simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ - keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z -simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ - trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z -simobjdump xtab input output alloced step_mode stepsize notes editfunc \ - xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z -simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ - xtree_textfg_req x y z -simobjdump transport input output alloced step_mode stepsize dt delay clock \ - kf xtree_fg_req xtree_textfg_req x y z -simobjdump proto x y z -simobjdump text str -simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ - -4 0 -simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ - 0 -simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ - 0 -simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ - 0 -simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ - -17 0 -simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ - -13 0 -simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ - 0 -simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ - 0 -simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ - -18 0 -simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ - 0 -simundump text /kinetics/notes 0 "" -call /kinetics/notes LOAD \ -"" -simundump text /kinetics/geometry/notes 0 "" -call /kinetics/geometry/notes LOAD \ -"" -simundump text /kinetics/geometry[1]/notes 0 "" -call /kinetics/geometry[1]/notes LOAD \ -"" -simundump text /kinetics/geometry[2]/notes 0 "" -call /kinetics/geometry[2]/notes LOAD \ -"" -simundump text /kinetics/geometry[3]/notes 0 "" -call /kinetics/geometry[3]/notes LOAD \ -"" -simundump text /kinetics/geometry[4]/notes 0 "" -call /kinetics/geometry[4]/notes LOAD \ -"" -simundump text /kinetics/geometry[5]/notes 0 "" -call /kinetics/geometry[5]/notes LOAD \ -"" -simundump text /kinetics/geometry[6]/notes 0 "" -call /kinetics/geometry[6]/notes LOAD \ -"" -simundump text /kinetics/geometry[7]/notes 0 "" -call /kinetics/geometry[7]/notes LOAD \ -"" -simundump text /kinetics/geometry[8]/notes 0 "" -call /kinetics/geometry[8]/notes LOAD \ -"" -simundump text /kinetics/geometry[9]/notes 0 "" -call /kinetics/geometry[9]/notes LOAD \ -"" -simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 -simundump text /kinetics/exocytosis/notes 0 "" -call /kinetics/exocytosis/notes LOAD \ -"" -simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 -simundump text /kinetics/endocytosis/notes 0 "" -call /kinetics/endocytosis/notes LOAD \ -"" -simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ - -3 0 -simundump text /kinetics/PSD/notes 0 "" -call /kinetics/PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - blue 0 -4 1 0 -simundump text /kinetics/PSD/Rp/notes 0 "" -call /kinetics/PSD/Rp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ - 0 -4 -2 0 -simundump text /kinetics/PSD/P/notes 0 "" -call /kinetics/PSD/P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -6 -1 0 -simundump text /kinetics/PSD/P/P1/notes 0 "" -call /kinetics/PSD/P/P1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ - -2 -1 0 -simundump text /kinetics/PSD/P/P2/notes 0 "" -call /kinetics/PSD/P/P2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ - 49 0 -4 4 0 -simundump text /kinetics/PSD/KK/notes 0 "" -call /kinetics/PSD/KK/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -6 3 0 -simundump text /kinetics/PSD/KK/KK1/notes 0 "" -call /kinetics/PSD/KK/KK1/notes LOAD \ -"" -simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ - "" -2 3 0 -simundump text /kinetics/PSD/KK/KK2/notes 0 "" -call /kinetics/PSD/KK/KK2/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ - 28 0 0 1 0 -simundump text /kinetics/PSD/Rpp/notes 0 "" -call /kinetics/PSD/Rpp/notes LOAD \ -"" -simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ - -8 1 0 -simundump text /kinetics/PSD/R/notes 0 "" -call /kinetics/PSD/R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ - /kinetics/geometry[4] blue 0 -4 7 0 -simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" -call /kinetics/PSD/tot_PSD_R/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_PSD 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ - /kinetics/geometry[5] 53 0 -15 2 0 -simundump text /kinetics/PSD/Ca_PSD/notes 0 "" -call /kinetics/PSD/Ca_PSD/notes LOAD \ -"" -simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ - /kinetics/geometry[7] blue 0 -12 5 0 -simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" -call /kinetics/PSD/psd_inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 -simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" -call /kinetics/PSD/psd_activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ - blue 0 -4 -4 0 -simundump text /kinetics/PSD/Ca.P/notes 0 "" -call /kinetics/PSD/Ca.P/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -2 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ -"" -simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ - blue "" -6 -3 0 -simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" -call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ -"" -simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ - /kinetics/geometry[8] 60 black -12 9 0 -simundump text /kinetics/PSD/Ca_input/notes 0 "" -call /kinetics/PSD/Ca_input/notes LOAD \ -"" -simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 -simundump text /kinetics/PSD/Ca_reac/notes 0 "" -call /kinetics/PSD/Ca_reac/notes LOAD \ -"" -simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ - 0 -6 -16 0 -simundump text /kinetics/Bulk/notes 0 "" -call /kinetics/Bulk/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry 29 yellow 2 -11 0 -simundump text /kinetics/Bulk/iRpp/notes 0 "" -call /kinetics/Bulk/iRpp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ - /kinetics/geometry blue yellow -2 -11 0 -simundump text /kinetics/Bulk/iRp/notes 0 "" -call /kinetics/Bulk/iRp/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ - /kinetics/geometry 0 yellow -6 -11 0 -simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ - /kinetics/geometry 50 yellow -2 -8 0 -simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" -4 -9 0 -simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" -call /kinetics/Bulk/iKK/iKK1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ - red 50 "" 0 -9 0 -simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" -call /kinetics/Bulk/iKK/iKK2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ - /kinetics/geometry 62 yellow -2 -14 0 -simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" -4 -13 0 -simundump text /kinetics/Bulk/iP/iP1/notes 0 "" -call /kinetics/Bulk/iP/iP1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ - 62 "" 0 -13 0 -simundump text /kinetics/Bulk/iP/iP2/notes 0 "" -call /kinetics/Bulk/iP/iP2/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ - 43 yellow -3 -5 0 -simundump text /kinetics/Bulk/PKA/notes 0 "" -call /kinetics/Bulk/PKA/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" -4 -7 0 -simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" -call /kinetics/Bulk/PKA/PKA1/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ - 43 "" 0 -7 0 -simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" -call /kinetics/Bulk/PKA/PKA2/notes LOAD \ -"" -simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ - red 43 "" 1 -5 0 -simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" -call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ - -10 0 -simundump text /kinetics/Bulk/activate_PKA/notes 0 "" -call /kinetics/Bulk/activate_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ - /kinetics/geometry[2] 51 yellow -12 -6 0 -simundump text /kinetics/Bulk/inact_PKA/notes 0 "" -call /kinetics/Bulk/inact_PKA/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ - /kinetics/geometry[6] blue yellow -13 -18 0 -simundump text /kinetics/Bulk/inact_CaN/notes 0 "" -call /kinetics/Bulk/inact_CaN/notes LOAD \ -"" -simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ - -16 0 -simundump text /kinetics/Bulk/activate_CaN/notes 0 "" -call /kinetics/Bulk/activate_CaN/notes LOAD \ -"" -simundump kpool /kinetics/Bulk/Ca_Spine 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ - /kinetics/geometry[2] 50 yellow -15 -13 0 -simundump text /kinetics/Bulk/Ca_Spine/notes 0 "" -call /kinetics/Bulk/Ca_Spine/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend 0 1e-11 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[9] 1 black -19 -25 0 -simundump text /kinetics/Ca_dend/notes 0 "" -call /kinetics/Ca_dend/notes LOAD \ -"" -simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ - /kinetics/geometry[9] 60 black -12 -28 0 -simundump text /kinetics/Ca_dend_input/notes 0 "" -call /kinetics/Ca_dend_input/notes LOAD \ -"" -simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 -simundump text /kinetics/dend_Ca_reac/notes 0 "" -call /kinetics/dend_Ca_reac/notes LOAD \ -"" -simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 -simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 -simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 53 0 0 1 -simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 41 0 0 1 -simundump xplot /graphs/conc1/PKA.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 43 0 0 1 -simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 1 0 0 1 -simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " blue 0 0 1 -simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ - "delete_plot.w ; edit_plot.D " 28 0 0 1 -simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 -simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 -simundump xcoredraw /edit/draw 0 -21 7 -30 11 -simundump xtree /edit/draw/tree 0 \ - /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ - "edit_elm.D ; drag_from_edit.w " auto 0.6 -simundump xtext /file/notes 0 1 -xtextload /file/notes \ -"26 Nov 2014. psd51.g: based on psd50.g which was" \ -"based on psd41_back_dend.g." \ -"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ -"10x while retaining Keq." \ -"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ -"psd. Will use diffusion instead." -addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n -addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n -addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n -addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B -addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n -addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n -addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n -addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n -addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B -addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B -addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA -addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A -addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca_PSD REAC A B -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_PSD REAC B A -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B -addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/psd_activate_CaN SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n -addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A -addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n -addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n -addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n -addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n -addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B -addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n -addmsg /kinetics/PSD/Ca_PSD /kinetics/PSD/Ca_reac PRODUCT n -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B -addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B -addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n -addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n -addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A -addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n -addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n -addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n -addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n -addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_PKA SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B -addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/Ca_Spine /kinetics/Bulk/activate_CaN SUBSTRATE n -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca_Spine REAC A B -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend REAC B A -addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B -addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n -addmsg /kinetics/Ca_dend /kinetics/dend_Ca_reac PRODUCT n -addmsg /kinetics/PSD/Ca_PSD /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 -addmsg /kinetics/Bulk/Ca_Spine /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 -addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 -addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue -addmsg /kinetics/Ca_dend /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 -addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue -addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 -enddump -// End of dump - -call /kinetics/Bulk/iR/notes LOAD \ -"Same as Fus3" \ -"" -call /kinetics/Bulk/iKK/notes LOAD \ -"Same as Ste7" \ -"" -call /kinetics/Bulk/iP/notes LOAD \ -"Same as Msg5" \ -"" -complete_loading diff --git a/examples/tutorials/Rdesigneur/rdes_ex1.py b/examples/tutorials/Rdesigneur/rdes_ex1.py deleted file mode 100644 index 6f83868..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex1.py +++ /dev/null @@ -1,5 +0,0 @@ -import moose -import rdesigneur as rd -rdes = rd.rdesigneur() -rdes.buildModel() -moose.showfields( rdes.soma ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex10.py b/examples/tutorials/Rdesigneur/rdes_ex10.py deleted file mode 100644 index 634fdaa..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex10.py +++ /dev/null @@ -1,41 +0,0 @@ -import moose -import rdesigneur as rd - -library = moose.Neutral( '/library' ) -compt = rd.makeChemOscillator( 'osc' ) -compt.volume = 1e-18 -moose.copy( compt, '/library/osc', 'spine' ) -moose.element( '/library/osc/spine' ).volume = 1e-19 -moose.copy( compt, '/library/osc', 'psd' ) -moose.element( '/library/osc/psd' ).volume = 1e-20 - -rdes = rd.rdesigneur( - turnOffElec = True, - useGssa = False, - cellProto = [[ './cells/h10.CNG.swc', 'elec']], - spineProto = [[ 'makePassiveSpine()', 'spine' ] ], - spineDistrib = [ ["spine", '#apical#,#dend#', '10e-6', '1e-6' ]], - chemProto = [['/library/osc', 'osc']], - chemDistrib =[[ 'osc', '#apical#,#dend#', 'install', 'H(p - 5e-4)' ]], - plotList = [ - ['#', '1', 'psd/a', 'conc', 'conc of a in PSD'], - ['#', '1', 'spine/a', 'conc', 'conc of a in spine'], - ['#', '1', 'dend/a', 'conc', 'conc of a in Dend'] - ] -) - -rdes.buildModel() - -av = moose.vec( '/model/chem/psd/a' ) -av[0].concInit *= 10 - -''' -dv = moose.vec( '/model/chem/dend/a' ) -print len( dv ) -dv[0].concInit *= 2 -''' - -moose.reinit() -moose.start( 100 ) - -rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex2.py b/examples/tutorials/Rdesigneur/rdes_ex2.py deleted file mode 100644 index 76901ae..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex2.py +++ /dev/null @@ -1,12 +0,0 @@ -import moose -import rdesigneur as rd -rdes = rd.rdesigneur( - stimList = [['soma', '1', '.', 'inject', '(t>0.1 && t<0.2) * 2e-8' ]], - plotList = [['soma', '1', '.', 'Vm', 'Soma membrane potential']] -) -rdes.buildModel() -moose.reinit() -moose.start( 0.3 ) - -rdes.display() - diff --git a/examples/tutorials/Rdesigneur/rdes_ex3.1.py b/examples/tutorials/Rdesigneur/rdes_ex3.1.py deleted file mode 100644 index 9729a0d..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex3.1.py +++ /dev/null @@ -1,54 +0,0 @@ -#################################################################### -# Rdesigneur example 3.1 -# Making an axon with a propagating action potential. -#################################################################### -import numpy as np -import moose -import pylab -import rdesigneur as rd - -numAxonSegments = 200 -comptLen = 10e-6 -comptDia = 1e-6 -RM = 1.0 -RA = 10.0 -CM = 0.01 - -def makeAxonProto(): - axon = moose.Neuron( '/library/axon' ) - prev = rd.buildCompt( axon, 'soma', RM = RM, RA = RA, CM = CM, dia = 10e-6, x=0, dx=comptLen) - theta = 0 - x = comptLen - y = 0.0 - - for i in range( numAxonSegments ): - dx = comptLen * np.cos( theta ) - dy = comptLen * np.sin( theta ) - r = np.sqrt( x * x + y * y ) - theta += comptLen / r - compt = rd.buildCompt( axon, 'axon' + str(i), RM = RM, RA = RA, CM = CM, x = x, y = y, dx = dx, dy = dy, dia = comptDia ) - moose.connect( prev, 'axial', compt, 'raxial' ) - prev = compt - x += dx - y += dy - - return axon - -moose.Neutral( '/library' ) -makeAxonProto() - -rdes = rd.rdesigneur( - chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], - cellProto = [['elec','axon']], - chanDistrib = [ - ['Na', '#', 'Gbar', '1200' ], - ['K', '#', 'Gbar', '360' ]], - stimList = [['soma', '1', '.', 'inject', '(t>0.01 && t<0.2) * 2e-11' ]], - plotList = [['soma', '1', '.', 'Vm', 'Membrane potential']], - moogList = [['#', '1', '.', 'Vm', 'Vm (mV)']] -) - -rdes.buildModel() -moose.reinit() - -rdes.displayMoogli( 0.00005, 0.05, 0.0 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex3.2.py b/examples/tutorials/Rdesigneur/rdes_ex3.2.py deleted file mode 100644 index fc453eb..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex3.2.py +++ /dev/null @@ -1,69 +0,0 @@ -#################################################################### -# Rdesigneur example 3.2 -# Making a myelinated axon with a propagating action potential. -#################################################################### -import numpy as np -import moose -import pylab -import rdesigneur as rd - -numAxonSegments = 405 -nodeSpacing = 100 -comptLen = 10e-6 -comptDia = 2e-6 # 2x usual -RM = 100.0 # 10x usual -RA = 5.0 -CM = 0.001 # 0.1x usual - -nodeDia = 1e-6 -nodeRM = 1.0 -nodeCM = 0.01 - -def makeAxonProto(): - axon = moose.Neuron( '/library/axon' ) - x = 0.0 - y = 0.0 - prev = rd.buildCompt( axon, 'soma', RM = RM, RA = RA, CM = CM, dia = 10e-6, x=0, dx=comptLen) - theta = 0 - x = comptLen - - for i in range( numAxonSegments ): - r = comptLen - dx = comptLen * np.cos( theta ) - dy = comptLen * np.sin( theta ) - r = np.sqrt( x * x + y * y ) - theta += comptLen / r - if i % nodeSpacing == 0: - compt = rd.buildCompt( axon, 'axon' + str(i), RM = nodeRM, RA = RA, CM = nodeCM, x = x, y = y, dx = dx, dy = dy, dia = nodeDia ) - else: - compt = rd.buildCompt( axon, 'axon' + str(i), RM = RM, RA = RA, CM = CM, x = x, y = y, dx = dx, dy = dy, dia = comptDia ) - moose.connect( prev, 'axial', compt, 'raxial' ) - prev = compt - x += dx - y += dy - - return axon - -moose.Neutral( '/library' ) -makeAxonProto() - -rdes = rd.rdesigneur( - chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], - cellProto = [['elec','axon']], - chanDistrib = [ - ['Na', '#', 'Gbar', '12000 * (dia < 1.5e-6)' ], - ['K', '#', 'Gbar', '3600 * (dia < 1.5e-6)' ]], - stimList = [['soma', '1', '.', 'inject', '(t>0.01 && t<0.2) * 1e-10' ]], - plotList = [['soma,axon100,axon200,axon300,axon400', '1', '.', 'Vm', 'Membrane potential']], - moogList = [['#', '1', '.', 'Vm', 'Vm (mV)']] -) - - -rdes.buildModel() - -for i in moose.wildcardFind( "/model/elec/#/Na" ): - print i.parent.name, i.Gbar - -moose.reinit() - -rdes.displayMoogli( 0.00005, 0.05, 0.0 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex3.py b/examples/tutorials/Rdesigneur/rdes_ex3.py deleted file mode 100644 index dbf6e2c..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex3.py +++ /dev/null @@ -1,17 +0,0 @@ -import moose -import pylab -import rdesigneur as rd -rdes = rd.rdesigneur( - chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], - chanDistrib = [ - ['Na', 'soma', 'Gbar', '1200' ], - ['K', 'soma', 'Gbar', '360' ]], - stimList = [['soma', '1', '.', 'inject', '(t>0.1 && t<0.2) * 1e-8' ]], - plotList = [['soma', '1', '.', 'Vm', 'Membrane potential']] -) - -rdes.buildModel() -moose.reinit() -moose.start( 0.3 ) - -rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex4.py b/examples/tutorials/Rdesigneur/rdes_ex4.py deleted file mode 100644 index 790d66e..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex4.py +++ /dev/null @@ -1,19 +0,0 @@ -import moose -import pylab -import rdesigneur as rd -rdes = rd.rdesigneur( - turnOffElec = True, - diffusionLength = 1e-3, # Default diffusion length is 2 microns - chemProto = [['makeChemOscillator()', 'osc']], - chemDistrib = [['osc', 'soma', 'install', '1' ]], - plotList = [['soma', '1', 'dend/a', 'conc', 'a Conc'], - ['soma', '1', 'dend/b', 'conc', 'b Conc']] -) - -rdes.buildModel() -b = moose.element( '/model/chem/dend/b' ) -b.concInit *= 5 -moose.reinit() -moose.start( 200 ) - -rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex5.py b/examples/tutorials/Rdesigneur/rdes_ex5.py deleted file mode 100644 index 92a3fb7..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex5.py +++ /dev/null @@ -1,19 +0,0 @@ -import moose -import pylab -import rdesigneur as rd -rdes = rd.rdesigneur( - turnOffElec = True, - chemProto = [['makeChemOscillator()', 'osc']], - chemDistrib = [['osc', 'soma', 'install', '1' ]], - plotList = [['soma', '1', 'dend/a', 'conc', 'Concentration of a'], - ['soma', '1', 'dend/b', 'conc', 'Concentration of b']], - moogList = [['soma', '1', 'dend/a', 'conc', 'a Conc', 0, 360 ]] -) - -rdes.buildModel() -bv = moose.vec( '/model/chem/dend/b' ) -bv[0].concInit *= 2 -bv[-1].concInit *= 2 -moose.reinit() - -rdes.displayMoogli( 1, 400, 0.001 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex6.py b/examples/tutorials/Rdesigneur/rdes_ex6.py deleted file mode 100644 index 7bd2dcd..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex6.py +++ /dev/null @@ -1,34 +0,0 @@ -import moose -import pylab -import rdesigneur as rd -rdes = rd.rdesigneur( - # We want just one compartment so we set diffusion length to be - # bigger than the 0.5 mm HH axon compartment default. - diffusionLength = 1e-3, - chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']], - chanDistrib = [ - ['Na', 'soma', 'Gbar', '1200' ], - ['K', 'soma', 'Gbar', '360' ]], - chemProto = [['makeChemOscillator()', 'osc']], - chemDistrib = [['osc', 'soma', 'install', '1' ]], - # These adaptor parameters give interesting-looking but not - # particularly physiological behaviour. - adaptorList = [ - [ 'dend/a', 'conc', 'Na', 'modulation', 1, -5.0 ], - [ 'dend/b', 'conc', 'K', 'modulation', 1, -0.2], - [ 'dend/b', 'conc', '.', 'inject', -1.0e-7, 4e-7 ], - [ '.', 'Vm', 'dend/s', 'conc', 2.5, 20.0 ] - ], - plotList = [['soma', '1', 'dend/a', 'conc', 'a Conc'], - ['soma', '1', 'dend/b', 'conc', 'b Conc'], - ['soma', '1', 'dend/s', 'conc', 's Conc'], - ['soma', '1', 'Na', 'Gk', 'Na Gk'], - ['soma', '1', '.', 'Vm', 'Membrane potential'] - ] -) - -rdes.buildModel() -moose.reinit() -moose.start( 250 ) # Takes a few seconds to run this. - -rdes.display() diff --git a/examples/tutorials/Rdesigneur/rdes_ex7.py b/examples/tutorials/Rdesigneur/rdes_ex7.py deleted file mode 100644 index e798dfb..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex7.py +++ /dev/null @@ -1,14 +0,0 @@ -import moose -import rdesigneur as rd -rdes = rd.rdesigneur( - cellProto = [['./cells/h10.CNG.swc', 'elec']], - stimList = [['soma', '1', '.', 'inject', 't * 25e-9' ]], - plotList = [['#', '1', '.', 'Vm', 'Membrane potential'], - ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']], - moogList = [['#', '1', '.', 'Vm', 'Soma potential']] -) - -rdes.buildModel() - -moose.reinit() -rdes.displayMoogli( 0.0002, 0.1 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex8.py b/examples/tutorials/Rdesigneur/rdes_ex8.py deleted file mode 100644 index 105d6a5..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex8.py +++ /dev/null @@ -1,37 +0,0 @@ -import moose -import rdesigneur as rd -rdes = rd.rdesigneur( - chanProto = [ - ['./chans/hd.xml'], - ['./chans/kap.xml'], - ['./chans/kad.xml'], - ['./chans/kdr.xml'], - ['./chans/na3.xml'], - ['./chans/nax.xml'], - ['./chans/CaConc.xml'], - ['./chans/Ca.xml'] - ], - cellProto = [['./cells/h10.CNG.swc', 'elec']], - chanDistrib = [ \ - ["hd", "#dend#,#apical#", "Gbar", "50e-2*(1+(p*3e4))" ], - ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], - ["na3", "#soma#,#dend#,#apical#", "Gbar", "850" ], - ["nax", "#soma#,#axon#", "Gbar", "1250" ], - ["kap", "#axon#,#soma#", "Gbar", "300" ], - ["kap", "#dend#,#apical#", "Gbar", - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], - ["Ca_conc", "#", "tau", "0.0133" ], - ["kad", "#soma#,#dend#,#apical#", "Gbar", "50" ], - ["Ca", "#", "Gbar", "50" ] - ], - stimList = [['soma', '1', '.', 'inject', '(t>0.02) * 1e-9' ]], - plotList = [['#', '1', '.', 'Vm', 'Membrane potential'], - ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']], - moogList = [['#', '1', 'Ca_conc', 'Ca', 'Calcium conc (uM)', 0, 120], - ['#', '1', '.', 'Vm', 'Soma potential']] -) - -rdes.buildModel() - -moose.reinit() -rdes.displayMoogli( 0.0002, 0.052 ) diff --git a/examples/tutorials/Rdesigneur/rdes_ex9.py b/examples/tutorials/Rdesigneur/rdes_ex9.py deleted file mode 100644 index ed2ad04..0000000 --- a/examples/tutorials/Rdesigneur/rdes_ex9.py +++ /dev/null @@ -1,40 +0,0 @@ -import moose -import pylab -import rdesigneur as rd -rdes = rd.rdesigneur( - chanProto = [ - ['./chans/hd.xml'], - ['./chans/kap.xml'], - ['./chans/kad.xml'], - ['./chans/kdr.xml'], - ['./chans/na3.xml'], - ['./chans/nax.xml'], - ['./chans/CaConc.xml'], - ['./chans/Ca.xml'] - ], - cellProto = [['./cells/h10.CNG.swc', 'elec']], - spineProto = [['makeActiveSpine()', 'spine']], - chanDistrib = [ - ["hd", "#dend#,#apical#", "Gbar", "50e-2*(1+(p*3e4))" ], - ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], - ["na3", "#soma#,#dend#,#apical#", "Gbar", "850" ], - ["nax", "#soma#,#axon#", "Gbar", "1250" ], - ["kap", "#axon#,#soma#", "Gbar", "300" ], - ["kap", "#dend#,#apical#", "Gbar", - "300*(H(100-p*1e6)) * (1+(p*1e4))" ], - ["Ca_conc", "#", "tau", "0.0133" ], - ["kad", "#soma#,#dend#,#apical#", "Gbar", "50" ], - ["Ca", "#", "Gbar", "50" ] - ], - spineDistrib = [['spine', '#dend#,#apical#', '20e-6', '1e-6']], - stimList = [['soma', '1', '.', 'inject', '(t>0.02) * 1e-9' ]], - plotList = [['#', '1', '.', 'Vm', 'Membrane potential'], - ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']], - moogList = [['#', '1', 'Ca_conc', 'Ca', 'Calcium conc (uM)', 0, 120], - ['#', '1', '.', 'Vm', 'Soma potential']] -) - -rdes.buildModel() - -moose.reinit() -rdes.displayMoogli( 0.0002, 0.0255 ) diff --git a/examples/unsorted/ksolve_with_heavy_load.py b/examples/unsorted/ksolve_with_heavy_load.py deleted file mode 100644 index f7bbd62..0000000 --- a/examples/unsorted/ksolve_with_heavy_load.py +++ /dev/null @@ -1,106 +0,0 @@ -import math -import pylab -import numpy -import moose -import moose.utils as mu - -try: - from collections import OrderedDict - records_ = OrderedDict() -except: - records_ = {} - -def main(): - compartment = makeModel() - ksolve = moose.Ksolve( '/model/compartment/ksolve' ) - stoich = moose.Stoich( '/model/compartment/stoich' ) - stoich.compartment = compartment - stoich.ksolve = ksolve - stoich.path = "/model/compartment/##" - state = moose.SteadyState( '/model/compartment/state' ) - - moose.reinit() - state.stoich = stoich - state.convergenceCriterion = 1e-6 - moose.seed( 111 ) # Used when generating the samples in state space - moose.reinit() - moose.start(10) - plot( 10) - -def add_table(elem): - global records_ - tab = moose.Table2('%s/tab' % elem.path) - moose.connect(tab, 'requestOut', elem, 'getConc') - records_[elem.name] = tab - -def plot( numPlots ): - global records_ - toPlots = records_.keys()[0:numPlots] - newPlots = {} - for i in toPlots: - newPlots[i] = records_[i] - mu.plotRecords(newPlots, subplot = True) - -def makeModel(): - """ This function creates a bistable reaction system using explicit - MOOSE calls rather than load from a file. - The reaction is:: - - a ---b---> 2b # b catalyzes a to form more of b. - 2b ---c---> a # c catalyzes b to form a. - a <======> 2b # a interconverts to b. - - """ - # create container for model - model = moose.Neutral( 'model' ) - compartment = moose.CubeMesh( '/model/compartment' ) - compartment.volume = 1e-15 - # the mesh is created automatically by the compartment - mesh = moose.element( '/model/compartment/mesh' ) - - # create molecules and reactions - size = 100 - for i in range(size): - a = moose.Pool( '/model/compartment/a%s' % i ) - b = moose.Pool( '/model/compartment/b%s' % i ) - c = moose.Pool( '/model/compartment/c%s' % i ) - enz1 = moose.Enz( '%s/enz1' % a.path ) - enz2 = moose.Enz( '%s/enz2' % c.path ) - cplx1 = moose.Pool( '%s/cplx' % enz1.path ) - cplx2 = moose.Pool( '%s/cplx' % enz2.path ) - reac = moose.Reac( '/model/compartment/reac%s' % i) - - # connect them up for reactions - moose.connect( enz1, 'sub', a, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) - moose.connect( enz1, 'prd', b, 'reac' ) # Note 2 molecules of b. - moose.connect( enz1, 'enz', b, 'reac' ) - moose.connect( enz1, 'cplx', cplx1, 'reac' ) - - moose.connect( enz2, 'sub', b, 'reac' ) - moose.connect( enz2, 'sub', b, 'reac' ) # Note 2 molecules of b. - moose.connect( enz2, 'prd', a, 'reac' ) - moose.connect( enz2, 'enz', c, 'reac' ) - moose.connect( enz2, 'cplx', cplx2, 'reac' ) - - moose.connect( reac, 'sub', a, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) - moose.connect( reac, 'prd', b, 'reac' ) # Note 2 order in b. - add_table(a) - add_table(b) - add_table(c) - # Assign parameters - a.concInit = 1 - b.concInit = 0 - c.concInit = 0.01 - enz1.kcat = 0.4 - enz1.Km = 4 - enz2.kcat = 0.6 - enz2.Km = 0.01 - reac.Kf = 0.001 - reac.Kb = 0.01 - return compartment - -# Run the 'main' if this script is executed standalone. -if __name__ == '__main__': - main() diff --git a/examples/unsorted/test_function.py b/examples/unsorted/test_function.py deleted file mode 100644 index 5b7937f..0000000 --- a/examples/unsorted/test_function.py +++ /dev/null @@ -1,26 +0,0 @@ -import moose - -a = moose.CubeMesh('/cube') -a.volume = 1 - -ca = moose.BufPool('/cube/ca') -ca.concInit = 1.0 - -f = moose.Function('/cube/ca/func') -f.expr = 'sin(0.1*3.14*t) > 0.81 ? 25e-3 : 0' -moose.connect(f, 'valueOut', ca, 'setConc') - -# create a table. -tab = moose.Table2('/cube/ca/table') -moose.connect( tab, 'requestOut', ca, 'getConc' ) - -# refine clock -for i in range(10, 16): - moose.setClock(i, 0.001) - -moose.reinit() -moose.start(100) - -import pylab -pylab.plot( tab.vector ) -pylab.savefig('output.png') diff --git a/examples/unsorted/test_gsolve.py b/examples/unsorted/test_gsolve.py deleted file mode 100644 index bc88757..0000000 --- a/examples/unsorted/test_gsolve.py +++ /dev/null @@ -1,53 +0,0 @@ -import moose -import sys - -compt = moose.CubeMesh('/compt') -compt.volume = 1e-20 - -a = moose.Pool('/compt/a') -b = moose.Pool('/compt/b') - -a.nInit, b.nInit = 100, 10 - -atab = moose.Table2('/tableA') -btab = moose.Table2('/tableB') -moose.connect(atab, 'requestOut', a, 'getN') -moose.connect(btab, 'requestOut', b, 'getN') - -# Add a function which set conc of a - -## NOTE: This cause seg-fault. -func = moose.Function('/compt/a/function') - -# This does not. -#func = moose.Function('/func') - -func.expr = '100*(1 + sin(0.1*t) + cos(x0) )' -func.mode = 1 -moose.connect( a, 'nOut', func.x[0], 'input' ) -moose.connect(func, 'valueOut', a, 'setN') - -reac = moose.Reac('/compt/reac') -moose.connect(reac, 'sub', a, 'reac') -moose.connect(reac, 'prd', b, 'reac') -reac.Kf = 2 -reac.Kb = 1 - -gsolve = moose.Gsolve('/compt/gsolve') -stoich = moose.Stoich('/compt/stoich') -stoich.compartment = compt -stoich.ksolve = gsolve -stoich.path = '/compt/##' - -print("Reinit") -moose.reinit() -moose.start(100) -print("Done simulation") - -# plots -import pylab -pylab.plot(atab.vector, label = 'a') -pylab.plot(btab.vector, label = 'b' ) -pylab.legend( framealpha=0.4) -pylab.savefig( '%s.png' % sys.argv[0] ) -pylab.show() diff --git a/examples/util/moogli_viewer.py b/examples/util/moogli_viewer.py deleted file mode 100644 index f48330c..0000000 --- a/examples/util/moogli_viewer.py +++ /dev/null @@ -1,301 +0,0 @@ - -# -*- coding: utf-8 -*- - -""" -Moogli Visualizer. -""" - -# http://stackoverflow.com/questions/28104362/how-to-rotate-camera-in-openscenegraphwalk-through-in-model -from PyQt4 import QtGui -from PyQt4 import QtCore -from PyQt4 import Qt -from PyQt4.QtGui import QPushButton -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QVBoxLayout -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QDialog -from PyQt4.QtGui import QTableWidget -from PyQt4.QtGui import QTableWidgetItem -from PyQt4.QtGui import QCheckBox -from PyQt4.QtGui import QComboBox -import time -import moose -from moose import neuroml -import moogli -import pprint -import numpy as np -import os -import sys - - -class MorphologyEditor(moogli.MorphologyViewer): - - def __init__(self, morphology, width, height): - super(MorphologyEditor, self).__init__( morphology - , width - , height - ) - self._timer = QtCore.QTimer(self) - - def start(self): - self._timer.timeout.connect(self.next) - self._timer.start(0) - - @QtCore.pyqtSlot() - def show(self): - self._timer.timeout.connect(self.next) - super(MorphologyEditor, self).show() - self._timer.start(0) - - @QtCore.pyqtSlot() - def hide(self): - self._timer.stop() - super(MorphologyEditor, self).hide() - - def next(self): - self.frame() - info_id = self.select_info.get_id() - info_event = self.select_info.get_event_type() - if info_event == 1: - self.select_info.set_event_type(0) - - -def model(element): - """Given model root element, extracts morphology - information about all neurons and compartments belonging - to that model - """ - return morphology(moose.element(element)) - # if element.path.endswith("/") : - # return morphology(moose.element(element.path + "cells")) - # else: - # return morphology(moose.element(element.path + "/cells")) - -def morphology(element): - """Given the element containing all neurons, extracts - morphology information from all child elements. - """ - return { "name" : element.name - , "id" : element.path - , "type" : etype(element) - , "neurons" : neurons(element) - } - -def neurons(element): - """Given a neuron element, extracts morphology - information from all child compartment elements. - """ - retval = {} - neurons = list(moose.wildcardFind(element.path + "/##[TYPE=Neutral]")) - neurons.extend(list(moose.wildcardFind(element.path + "/##[TYPE=Neuron]"))) - for element in neurons: - retval[element.path] = { "name" : element.name - , "id" : element.path - , "object" : element - , "type" : etype(element) - , "compartments" : compartments(element) - } - return retval - -def compartments(element): - retval = {} - compartments = moose.wildcardFind(element.path + "/##[ISA=CompartmentBase]") - for element in compartments: - retval[element.path] = { "name" : element.name - , "object" : element - , "id" : element.path - , "type" : etype(element) - , "proximal" : { "x" : element.x0 - , "y" : element.y0 - , "z" : element.z0 - } - , "distal" : { "x" : element.x - , "y" : element.y - , "z" : element.z - } - , "diameter" : element.diameter - } - return retval - -def etype(element): - element_type = element.name.rpartition("_")[0] - if element_type == '': return element.name - return element_type - -def recurse(element, func, classType): - return dict( [ func(child[0]) for child in element.children - if isinstance(child[0], classType) - ] - ) - -class MoogliViewer(QWidget): - - """ - NeuroKitEditor - """ - - def __init__(self, modelPath): - super(MoogliViewer, self).__init__() - self._centralWidget = None - self.modelRoot = moose.element(modelPath) - self.setLayout(QVBoxLayout()) - self.createCentralWidget() - - - def setBaseColor(self, color): - self.morphology.set_initial_color( color[0] / 255.0 - , color[1] / 255.0 - , color[2] / 255.0 - , color[3] / 255.0 - ) - - def setPeakColor(self, color): - self.morphology.set_final_color( color[0] / 255.0 - , color[1] / 255.0 - , color[2] / 255.0 - , color[3] / 255.0 - ) - - def setBackgroundColor(self, color): - self.visualizer.set_background_color( color[0] / 255.0 - , color[1] / 255.0 - , color[2] / 255.0 - , color[3] / 255.0 - ) - - def setBaseVm(self, vm): - self.morphology.set_base_membrane_voltage(vm) - - def setPeakVm(self, vm): - self.morphology.set_peak_membrane_voltage(vm) - - - def createCentralWidget(self): - self.geometry = model(moose.element(self.modelRoot.path)) - self.morphology = self.createMorphology(self.geometry) - - self.morphology.set_compartment_order( - map(lambda x : x.path, self.compartmentOrder) - ) - - self.vms = np.empty(len(self.compartmentOrder), dtype=np.float, order='C') - self.ims = np.empty(len(self.compartmentOrder), dtype=np.float, order='C') - # self.visualizer.insertPlainText(pprint.pformat(self.geometry, indent = 4)) - # self.visualizer = QTextEdit()#NeuroKitVisualizer(self.modelRoot) - desktop = QtGui.QApplication.desktop() - # print("**********************") - # print(desktop.screenGeometry()) - # print("***********************") - - self.visualizer = MorphologyEditor( self.morphology - , desktop.screenGeometry().width() - , desktop.screenGeometry().height() - ) - # self.scheduler = self.getSchedulingDockWidget().widget() - # self._centralWidget.setChildWidget(self.scheduler, False, 0,0,1,-1) - # self.visualizer.setGeometry( 0, 0, desktop.screenGeometry().width(), desktop.screenGeometry().height() ) - self.visualizer.showMaximized() - self.visualizer.show() - # self.visualizer.start() - self.layout().addWidget(self.visualizer) - - def update(self, time): - # print("Update called => ", time) - # print("Update called") - # for neuron_id in self.geometry["neurons"]: - # neuron = self.geometry["neurons"][neuron_id] - # for compartment_id in neuron["compartments"]: - # voltage = neuron["compartments"][compartment_id]["object"].Vm - # print(compartment_id + " => " + str(voltage)) - - # self.visualizer. - self.updateVms() - # self.updateIms() - # self.visualizer.next() - # print(self.vms) - - def updateVms(self): - for i in range(0, len(self.compartmentOrder)): - self.vms[i] = self.compartmentOrder[i].Vm - self.morphology.set_membrane_voltages(self.vms) - - def updateIms(self): - for i in range(0, len(self.compartmentOrder)): - self.ims[i] = self.compartmentOrder[i].Im - - def getCompartmentOrder(self): - return self.compartmentOrder - - def createMorphology(self, geometry): - # import json - # f = open("/home/aviral/purkinje.json", "w") - # f.write(json.dumps(geometry, indent=4)) - # f.close() - # morphology = moogli.Morphology("morph") - # morphology.add_compartment( "a" - # , "b", 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0) - # morphology.add_compartment( "c" - # , "b" - # , 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0) - morphology = moogli.Morphology("morph", 1) - self.compartmentOrder = [] - for neuron_id in geometry["neurons"]: - neuron = geometry["neurons"][neuron_id] - for compartment_id in neuron["compartments"]: - compartment = neuron["compartments"][compartment_id] - print( compartment_id) - # , neuron_id - # , compartment["proximal"]["x"] - # , compartment["proximal"]["y"] - # , compartment["proximal"]["z"] - # , compartment["diameter"] - # , compartment["distal"]["x"] - # , compartment["distal"]["y"] - # , compartment["distal"]["z"] - # , compartment["diameter"] - # ) - self.compartmentOrder.append(compartment["object"]) - morphology.add_compartment( compartment_id - , neuron_id - , compartment["proximal"]["x"] * 10000000 - , compartment["proximal"]["y"] * 10000000 - , compartment["proximal"]["z"] * 10000000 - , compartment["diameter"] * 10000000 - , compartment["distal"]["x"] * 10000000 - , compartment["distal"]["y"] * 10000000 - , compartment["distal"]["z"] * 10000000 - , compartment["diameter"] * 10000000 - ) - return morphology - - - -def main(): - filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - , "../neuroml/CA1/CA1.morph.pop.xml") - - - # filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - # , "../neuroml/PurkinjeCellPassivePulseInput/PurkinjePassive.net.xml") - # filename = os.path.join( os.path.split(os.path.realpath(__file__))[0] - # , "../neuroml/OlfactoryBulbPassive/OBpassive_numgloms3_seed750.0.xml") - - popdict, projdict = moose.neuroml.loadNeuroML_L123(filename) - modelRoot = moose.Neutral("/" + os.path.splitext(os.path.basename(filename))[0]) - element = moose.Neutral(modelRoot.path + "/model") - if(moose.exists("/cells")) : moose.move("/cells" , element.path) - if(moose.exists("/elec")) : moose.move("/elec" , modelRoot.path) - if(moose.exists("/library")): moose.move("/library", modelRoot.path) - show_morphology(modelRoot.path) - -def show_morphology(modelpath): - app = QtGui.QApplication(sys.argv) - widget = MoogliViewer(modelpath) - # widget.setBaseVm() - widget.showMaximized() - # widget.setStyleSheet("background-color: black;") - widget.show() - return app.exec_() - -if __name__ == "__main__": - main() diff --git a/examples/util/pymoose.py b/examples/util/pymoose.py deleted file mode 100644 index bea5251..0000000 --- a/examples/util/pymoose.py +++ /dev/null @@ -1,45 +0,0 @@ -# pymoose.py --- -# -# Filename: pymoose.py -# Description: -# Author: Subhasis Ray -# Maintainer: -# Copyright (C) 2010 Subhasis Ray, all rights reserved. -# Created: Wed Apr 20 11:51:24 2011 (+0530) -# Version: -# Last-Updated: Fri Apr 22 15:09:53 2011 (+0530) -# By: Subhasis Ray -# Update #: 13 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This provides ports of the code in pymoose.py in earlier moose. -# -# - -# Change log: -# -# -# - -# Code: - -from moose import * -def listmsg(pymoose_object): - """Print a list of the messages on this object. - - """ - print 'Incoming messages:' - for msg in pymoose_object.inMessages(): - print msg - print 'Outgoing messages:' - for msg in pymoose_object.outMessages(): - print msg - -# -# pymoose.py ends here diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 19a2de9..52d4528 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -262,7 +262,7 @@ def run_python_script(self, filepath): import subprocess, shlex t = os.path.abspath(filepath) directory, filename = os.path.split(t) - p = subprocess.Popen(["python", filename], cwd=directory) + p = subprocess.Popen([ sys.executable, filename], cwd=directory) p.wait() freeCursor() @@ -321,6 +321,7 @@ def loadPluginModule(self, name, re=False): except Exception as e: _logger.warn( "Could not load module %s' % fp" ) _logger.debug( "Error was %s" % e ) + module = "" if fp: fp.close() return module From 50f376463bdc16cd8d09cf8b19143f70e47b5325 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 10:13:12 +0530 Subject: [PATCH 13/66] Just examples from paper. --- examples/Fig2_elecModels/Fig2A.py | 527 + examples/Fig2_elecModels/Fig2A_analysis.py | 62 + examples/Fig2_elecModels/Fig2C.py | 356 + examples/Fig2_elecModels/Fig2D.py | 104 + examples/Fig2_elecModels/Fig2E.py | 125 + examples/Fig2_elecModels/cells/CA1.morph.xml | 12535 +++++++++++++++ examples/Fig2_elecModels/cells/K-18.CNG.swc | 1193 ++ .../Fig2_elecModels/cells/VHC-neuron.CNG.swc | 3022 ++++ examples/Fig2_elecModels/cells/ca1_minimal.p | 58 + examples/Fig2_elecModels/cells/h10.CNG.swc | 226 + .../Fig2_elecModels/cells/ko20x-07.CNG.swc | 165 + examples/Fig2_elecModels/chans/CA1.morph.xml | 12673 +++++++++++++++ .../chans/CA1.morph.xml.REMOVED.git-id | 1 + examples/Fig2_elecModels/chans/Ca.xml | 62 + examples/Fig2_elecModels/chans/CaConc.xml | 36 + examples/Fig2_elecModels/chans/DoubExpSyn.xml | 32 + .../Fig2_elecModels/chans/Generated.net.xml | 59 + examples/Fig2_elecModels/chans/Glu.xml | 16 + examples/Fig2_elecModels/chans/HChannel.xml | 73 + .../Fig2_elecModels/chans/KChannel_HH.xml | 49 + .../Fig2_elecModels/chans/LeakConductance.xml | 17 + examples/Fig2_elecModels/chans/NMDA.xml | 16 + .../Fig2_elecModels/chans/NaChannel_HH.xml | 58 + examples/Fig2_elecModels/chans/hd.xml | 73 + examples/Fig2_elecModels/chans/kad.xml | 84 + examples/Fig2_elecModels/chans/kap.xml | 86 + examples/Fig2_elecModels/chans/kdr.xml | 75 + examples/Fig2_elecModels/chans/na3.xml | 107 + examples/Fig2_elecModels/chans/nax.xml | 88 + examples/Fig2_elecModels/chans/pas.xml | 17 + examples/Fig3_chemModels/Fig3ABC.g | 832 + examples/Fig3_chemModels/Fig3D.py | 67 + examples/Fig3_chemModels/Fig3_NEURON.py | 44 + examples/Fig4_ReacDiff/CaMKII_merged77.g | 2076 +++ examples/Fig4_ReacDiff/Fig4B.py | 185 + examples/Fig4_ReacDiff/Fig4CDEF.py | 242 + examples/Fig4_ReacDiff/Fig4GHIJ.py | 242 + examples/Fig4_ReacDiff/ca1_minimal.p | 58 + examples/Fig4_ReacDiff/rxdSpineSize.py | 293 + examples/Fig5_CellMultiscale/Fig5A.py | 157 + examples/Fig5_CellMultiscale/Fig5BCD.py | 281 + .../Fig5_CellMultiscale/cells/970529c.CNG.swc | 2493 +++ .../Fig5_CellMultiscale/cells/CA1.morph.xml | 12535 +++++++++++++++ .../cells/DHC-neuron.CNG.swc | 6764 ++++++++ .../cells/VHC-neuron.CNG.swc | 3022 ++++ .../Fig5_CellMultiscale/cells/ca1_minimal.p | 58 + .../Fig5_CellMultiscale/cells/h10.CNG.swc | 226 + .../Fig5_CellMultiscale/chans/CA1.morph.xml | 12673 +++++++++++++++ examples/Fig5_CellMultiscale/chans/Ca.xml | 62 + examples/Fig5_CellMultiscale/chans/CaConc.xml | 36 + .../Fig5_CellMultiscale/chans/DoubExpSyn.xml | 32 + .../chans/Generated.net.xml | 59 + examples/Fig5_CellMultiscale/chans/Glu.xml | 16 + .../Fig5_CellMultiscale/chans/HChannel.xml | 73 + examples/Fig5_CellMultiscale/chans/NMDA.xml | 16 + examples/Fig5_CellMultiscale/chans/hd.xml | 73 + examples/Fig5_CellMultiscale/chans/kad.xml | 84 + examples/Fig5_CellMultiscale/chans/kap.xml | 86 + examples/Fig5_CellMultiscale/chans/kdr.xml | 75 + examples/Fig5_CellMultiscale/chans/na3.xml | 107 + examples/Fig5_CellMultiscale/chans/nax.xml | 88 + examples/Fig5_CellMultiscale/chans/pas.xml | 17 + examples/Fig5_CellMultiscale/chem/psd53.g | 477 + examples/Fig6_NetMultiscale/Fig6A.py | 503 + examples/Fig6_NetMultiscale/Fig6BCDE.py | 940 ++ examples/Fig6_NetMultiscale/ReducedModel.py | 887 ++ .../cells_channels/CA1.morph.spines.xml | 12658 +++++++++++++++ .../cells_channels/CA1.morph.xml | 12628 +++++++++++++++ .../cells_channels/CA1_nochans.morph.xml | 12535 +++++++++++++++ .../cells_channels/CA1spiny.morph.xml | 13066 +++++++++++++++ .../cells_channels/CA1spiny7_0.morph.xml | 13118 ++++++++++++++++ .../Fig6_NetMultiscale/cells_channels/Ca.xml | 62 + .../cells_channels/CaConc.xml | 36 + .../cells_channels/Ca_conc.xml | 31 + .../cells_channels/GABA.xml | 16 + .../Fig6_NetMultiscale/cells_channels/Glu.xml | 16 + .../cells_channels/NMDA.xml | 16 + .../cells_channels/Pyramidal_KM.xml | 92 + .../cells_channels/Traub_KA.xml | 109 + .../cells_channels/Traub_KCaAHP.xml | 105 + .../cells_channels/ca1_minimal.p | 58 + .../Fig6_NetMultiscale/cells_channels/hd.xml | 73 + .../cells_channels/hd_minus73.xml | 73 + .../Fig6_NetMultiscale/cells_channels/kad.xml | 84 + .../Fig6_NetMultiscale/cells_channels/kap.xml | 86 + .../Fig6_NetMultiscale/cells_channels/kdr.xml | 75 + .../Fig6_NetMultiscale/cells_channels/na3.xml | 107 + .../Fig6_NetMultiscale/cells_channels/nax.xml | 88 + .../Fig6_NetMultiscale/cells_channels/pas.xml | 17 + examples/Fig6_NetMultiscale/psd53.g | 477 + examples/README | 33 + examples/rxdSpineSize.py | 293 + 92 files changed, 143826 insertions(+) create mode 100644 examples/Fig2_elecModels/Fig2A.py create mode 100644 examples/Fig2_elecModels/Fig2A_analysis.py create mode 100644 examples/Fig2_elecModels/Fig2C.py create mode 100644 examples/Fig2_elecModels/Fig2D.py create mode 100644 examples/Fig2_elecModels/Fig2E.py create mode 100644 examples/Fig2_elecModels/cells/CA1.morph.xml create mode 100644 examples/Fig2_elecModels/cells/K-18.CNG.swc create mode 100644 examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc create mode 100644 examples/Fig2_elecModels/cells/ca1_minimal.p create mode 100644 examples/Fig2_elecModels/cells/h10.CNG.swc create mode 100644 examples/Fig2_elecModels/cells/ko20x-07.CNG.swc create mode 100644 examples/Fig2_elecModels/chans/CA1.morph.xml create mode 100644 examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id create mode 100644 examples/Fig2_elecModels/chans/Ca.xml create mode 100644 examples/Fig2_elecModels/chans/CaConc.xml create mode 100644 examples/Fig2_elecModels/chans/DoubExpSyn.xml create mode 100644 examples/Fig2_elecModels/chans/Generated.net.xml create mode 100644 examples/Fig2_elecModels/chans/Glu.xml create mode 100644 examples/Fig2_elecModels/chans/HChannel.xml create mode 100644 examples/Fig2_elecModels/chans/KChannel_HH.xml create mode 100644 examples/Fig2_elecModels/chans/LeakConductance.xml create mode 100644 examples/Fig2_elecModels/chans/NMDA.xml create mode 100644 examples/Fig2_elecModels/chans/NaChannel_HH.xml create mode 100644 examples/Fig2_elecModels/chans/hd.xml create mode 100644 examples/Fig2_elecModels/chans/kad.xml create mode 100644 examples/Fig2_elecModels/chans/kap.xml create mode 100644 examples/Fig2_elecModels/chans/kdr.xml create mode 100644 examples/Fig2_elecModels/chans/na3.xml create mode 100644 examples/Fig2_elecModels/chans/nax.xml create mode 100644 examples/Fig2_elecModels/chans/pas.xml create mode 100644 examples/Fig3_chemModels/Fig3ABC.g create mode 100644 examples/Fig3_chemModels/Fig3D.py create mode 100644 examples/Fig3_chemModels/Fig3_NEURON.py create mode 100644 examples/Fig4_ReacDiff/CaMKII_merged77.g create mode 100644 examples/Fig4_ReacDiff/Fig4B.py create mode 100644 examples/Fig4_ReacDiff/Fig4CDEF.py create mode 100644 examples/Fig4_ReacDiff/Fig4GHIJ.py create mode 100644 examples/Fig4_ReacDiff/ca1_minimal.p create mode 100644 examples/Fig4_ReacDiff/rxdSpineSize.py create mode 100644 examples/Fig5_CellMultiscale/Fig5A.py create mode 100644 examples/Fig5_CellMultiscale/Fig5BCD.py create mode 100644 examples/Fig5_CellMultiscale/cells/970529c.CNG.swc create mode 100644 examples/Fig5_CellMultiscale/cells/CA1.morph.xml create mode 100644 examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc create mode 100644 examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc create mode 100644 examples/Fig5_CellMultiscale/cells/ca1_minimal.p create mode 100644 examples/Fig5_CellMultiscale/cells/h10.CNG.swc create mode 100644 examples/Fig5_CellMultiscale/chans/CA1.morph.xml create mode 100644 examples/Fig5_CellMultiscale/chans/Ca.xml create mode 100644 examples/Fig5_CellMultiscale/chans/CaConc.xml create mode 100644 examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml create mode 100644 examples/Fig5_CellMultiscale/chans/Generated.net.xml create mode 100644 examples/Fig5_CellMultiscale/chans/Glu.xml create mode 100644 examples/Fig5_CellMultiscale/chans/HChannel.xml create mode 100644 examples/Fig5_CellMultiscale/chans/NMDA.xml create mode 100644 examples/Fig5_CellMultiscale/chans/hd.xml create mode 100644 examples/Fig5_CellMultiscale/chans/kad.xml create mode 100644 examples/Fig5_CellMultiscale/chans/kap.xml create mode 100644 examples/Fig5_CellMultiscale/chans/kdr.xml create mode 100644 examples/Fig5_CellMultiscale/chans/na3.xml create mode 100644 examples/Fig5_CellMultiscale/chans/nax.xml create mode 100644 examples/Fig5_CellMultiscale/chans/pas.xml create mode 100644 examples/Fig5_CellMultiscale/chem/psd53.g create mode 100644 examples/Fig6_NetMultiscale/Fig6A.py create mode 100644 examples/Fig6_NetMultiscale/Fig6BCDE.py create mode 100644 examples/Fig6_NetMultiscale/ReducedModel.py create mode 100644 examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/Ca.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/CaConc.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/GABA.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/Glu.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/NMDA.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p create mode 100644 examples/Fig6_NetMultiscale/cells_channels/hd.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/kad.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/kap.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/kdr.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/na3.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/nax.xml create mode 100644 examples/Fig6_NetMultiscale/cells_channels/pas.xml create mode 100644 examples/Fig6_NetMultiscale/psd53.g create mode 100644 examples/README create mode 100644 examples/rxdSpineSize.py diff --git a/examples/Fig2_elecModels/Fig2A.py b/examples/Fig2_elecModels/Fig2A.py new file mode 100644 index 0000000..997b5f2 --- /dev/null +++ b/examples/Fig2_elecModels/Fig2A.py @@ -0,0 +1,527 @@ +#!/usr/bin/env python +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Author: Aditya Gilra, NCBS, Bangalore, October, 2014. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose + +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 11.5e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +red_fact = 10 # reduction factor for N,C,J +N = 10000/red_fact # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 1200.0 #s # Simulation time +dt = 1e-3 #s # time step +plotDt = 1.0 #s # Time step for storing output. + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 500/red_fact # Number of incoming connections on each neuron (exc or inh) + # 5% conn prob between any two neurons + # Since we reduced N from 10000 to 1000, C = 50 instead of 500 + # but we need to increase J by 10 to maintain total input per neuron +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +J *= red_fact # Multiply J by red_fact to compensate C/red_fact. +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.16 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = self.Iinject + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=int(self.T) + ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + self.noiseTables.vec[i].stopTime = self.simtime + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + # moose simulation + #moose.useClock( 1, '/network', 'process' ) + #moose.setClock( 0, dt ) + #moose.setClock( 1, dt ) + #moose.setClock( 2, dt ) + #moose.setClock( 3, dt ) + #moose.setClock( 9, dt ) + ## Do need to set the dt for MOOSE clocks + for i in range(10): + moose.setClock( i, dt ) + moose.setClock( 18, plotDt ) + t1 = time.time() + print('reinit MOOSE -- takes a while ~20s.') + moose.reinit() + print('reinit time t = ', time.time() - t1) + t1 = time.time() + print('starting') + simadvance = self.simtime / 50.0 + for i in range( 50 ): + moose.start( simadvance ) + print('at t = ', i * simadvance, 'realtime = ', time.time() - t1) + #moose.start(self.simtime) + print('runtime for ', self.simtime, 'sec, is t = ', time.time() - t1) + + if plotif: + self._plot() + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table2( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(list(range(self.N)),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table2( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table2( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table2( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self): + """ plots the spike raster for the simulated net""" + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + self.recN = 50 # number of neurons for which to record weights and Ca + if CaPlasticity: + ## make tables to store weights of recN exc synapses + ## for each post-synaptic exc neuron + self.weights = moose.Table2( '/plotWeights', self.excC*self.recN ) + for i in range(self.recN): # range(self.N) is too large + for j in range(self.excC): + moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + self.CaTables = moose.Table2( '/plotCa', self.recN ) + for i in range(self.recN): # range(self.N) is too large + moose.connect( self.CaTables.vec[i], 'requestOut', + self.synsEE.vec[i*self.excC+j], 'getCa') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + if np.random.uniform()<0.05: + synij.weight = 1.0 + else: + synij.weight = self.J # no weightScale here, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + ## individual neuron Vm-s + + timeseries = net.trange + ## individual neuron firing rates + + ## population firing rates + + ## Ca plasticity: weight vs time plots + if CaPlasticity: + ## Ca versus time in post-synaptic neurons + for i in range(net.recN): # range(net.N) is too large + net.CaTables.vec[i].xplot( 'ca.xplot', 'Ca_' + str(i) ) + + for i in range(net.recN): # range(net.N) is too large + for j in range(net.excC): + k = net.excC*i+j + net.weights.vec[k].xplot( 'wt.xplot', 'w_' + str(k) ) + + ## all EE weights are used for a histogram + weights = [ net.synsEE.vec[i*net.excC+j].synapse[0].weight \ + for i in range(net.NmaxExc) for j in range(net.excC) ] + histo, edges = np.histogram( weights, bins=100 ) + print() + print(histo) + print() + print(edges) + print() + + plt.figure() + plt.hist(weights, bins=100) + plt.title("Histogram of efficacies") + plt.xlabel("Efficacy (arb)") + plt.ylabel("# per bin") + +if __name__=='__main__': + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print(net) + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + net.simulate(simtime,plotif=True, v0=np.random.uniform(el-20e-3,vt,size=N)) + plt.figure() + extra_plots(net) + plt.show() + diff --git a/examples/Fig2_elecModels/Fig2A_analysis.py b/examples/Fig2_elecModels/Fig2A_analysis.py new file mode 100644 index 0000000..8caeccb --- /dev/null +++ b/examples/Fig2_elecModels/Fig2A_analysis.py @@ -0,0 +1,62 @@ +import os +import numpy as np +from pylab import * +from itertools import islice + +if not os.path.isfile('wx.xplot'): + print("Please run ./Fig2A.py to generate the data") + quit() + +fh = open('wt.xplot',mode='r') + +fulltime = 1200 #s +plotdt = 1 #s +numpts = int(fulltime/plotdt)+1 + +print 'reading' +wts = [] +while True: + next_line = '' + while 'plotname' not in next_line: + next_line = fh.readline() + if next_line == '': break + if next_line == '': break + next_wt = [float(fh.readline()) for i in range(numpts)] + wts.append(next_wt) + print 'weight',len(wts) + + +hiAve = np.zeros( len( wts[0] ) ) +loAve = np.zeros( len( wts[0] ) ) +numHi = 0 +for i in wts: + if i[0] > 0.5: + hiAve += np.array( i ) + numHi += 1 + else: + loAve += np.array( i ) + + +hiAve /= numHi +loAve /= ( len( wts ) - numHi ) + +def dumpVec( f, name, vec ): + f.write( '/newplot\n' ) + f.write( '/plotname ' + name + '\n' ) + for i in vec: + f.write( str( i ) + '\n' ) + +f = open( 'averageOfxplots', 'w' ) +dumpVec( f, 'highAverage', hiAve ) +dumpVec( f, 'lowAverage', loAve ) +dumpVec( f, 'highExample', wts[4] ) +dumpVec( f, 'lowExample', wts[5] ) +f.close() + + +print 'numHi = ', numHi, ' plotting...' +figure() +plot(transpose(wts)) +plot( hiAve, linewidth=4 ) +plot( loAve, linewidth=4 ) +show() diff --git a/examples/Fig2_elecModels/Fig2C.py b/examples/Fig2_elecModels/Fig2C.py new file mode 100644 index 0000000..5314c3a --- /dev/null +++ b/examples/Fig2_elecModels/Fig2C.py @@ -0,0 +1,356 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This programme illustrates building a panel of multiscale models to +# test neuronal plasticity in different contexts. +######################################################################## +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('../../../Demos/util') +import rdesigneur as rd +import moogli + +PI = 3.14159265359 +useGssa = True +combineSegments = True +# Pick your favourite cell here. +#elecFileName = "ca1_minimal.p" +## Cell morphology from Bannister and Larkman J Neurophys 2015/NeuroMorpho +elecFileName = "h10.CNG.swc" +#elecFileName = "CA1.morph.xml" +#elecFileName = "VHC-neuron.CNG.swc" +synSpineList = [] +synDendList = [] +probeInterval = 0.1 +probeAmplitude = 1.0 +tetanusFrequency = 100.0 +tetanusAmplitude = 1000 +tetanusAmplitudeForSpines = 1000 +frameRunTime = 1e-3 # 1 ms +baselineTime = 0.05 +tetTime = 0.01 +postTetTime = 0.01 +runtime = baselineTime + tetTime + postTetTime + +def buildRdesigneur(): + ''' + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + ''' + cellProto = [ [ "./cells/" + elecFileName, "elec" ] ] + chanProto = [ + ['./chans/hd.xml'], \ + ['./chans/kap.xml'], \ + ['./chans/kad.xml'], \ + ['./chans/kdr.xml'], \ + ['./chans/na3.xml'], \ + ['./chans/nax.xml'], \ + ['./chans/CaConc.xml'], \ + ['./chans/Ca.xml'], \ + ['./chans/NMDA.xml'], \ + ['./chans/Glu.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are: + # p, g, L, len, dia, maxP, maxG, maxL. + # where + # p = path distance from soma, threaded along dendrite + # g = geometrical distance from soma (shortest distance) + # L = electrotonic distance from soma: number of length constants + # len = length of dendritic compartment + # dia = diameter of dendritic compartment + # maxP = maximal value of 'p' for the cell + # maxG = maximal value of 'g' for the cell + # maxL = maximal value of 'L' for the cell + # + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], \ + ["na3", "#soma#,#dend#,#apical#", "Gbar", "250" ], \ + ["nax", "#soma#,#axon#", "Gbar", "1250" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#", "tau", "0.0133" ], \ + ["kad", "#soma#,#dend#,#apical#", "Gbar", \ + "300*H(p - 100e-6)*(1+p*1e4)" ], \ + ["Ca", "#dend#,#apical#", "Gbar", "p<160e-6? 10+ p*0.25e-6 : 50" ], \ + ["Ca", "#soma#", "Gbar", "10" ], \ + ["glu", "#dend#,#apical#", "Gbar", "200*H(p-200e-6)" ], \ + ["NMDA", "#dend#,#apical#", "Gbar", "2*H(p-200e-6)" ] \ + ] + spineDistrib = [ \ + ["spine", '#apical#', "spineSpacing", "20e-6", \ + "spineSpacingDistrib", "2e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField offset scale + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rd.addSpineProto() # This adds a version with an LCa channel by default. + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + #spineProto = spineProto, \ + + return rdes + +def buildPlots( rdes ): + graphs = moose.Neutral( '/graphs' ) + vtab = moose.Table( '/graphs/VmTab' ) + moose.connect( vtab, 'requestOut', rdes.soma, 'getVm' ) + +def displayPlots(): + pylab.figure(1, figsize = (8,10 ) ) + pylab.subplot( 1,1,1) + for i in moose.wildcardFind( "/graphs/#VmTab" ): + t = numpy.arange( 0, i.vector.size, 1 ) * i.dt + pylab.plot( t, i.vector, label = i.name ) + pylab.xlabel( "Time (s)" ) + pylab.legend() + pylab.title( 'Vm' ) + + pylab.figure(2, figsize= (8,10)) + ax = pylab.subplot( 1,1,1 ) + neuron = moose.element( '/model/elec' ) + comptDistance = dict( zip( neuron.compartments, neuron.pathDistanceFromSoma ) ) + for i in moose.wildcardFind( '/library/#[ISA=ChanBase]' ): + chans = moose.wildcardFind( '/model/elec/#/' + i.name ) + print i.name, len( chans ) + p = [ 1e6*comptDistance.get( j.parent, 0) for j in chans ] + Gbar = [ j.Gbar/(j.parent.length * j.parent.diameter * PI) for j in chans ] + if len( p ) > 2: + pylab.plot( p, Gbar, linestyle = 'None', marker = ".", label = i.name ) + sortedGbar = sorted(zip(p, Gbar), key=lambda x: x[0]) + ax.set_yscale( 'log' ) + pylab.xlabel( "Distance from soma (microns)" ) + pylab.ylabel( "Channel density (Seimens/sq mtr)" ) + pylab.legend() + pylab.title( 'Channel distribution' ) + pylab.show() + +def create_vm_viewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.0, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 1.0, + 0.0, + 0.1)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + + def prelude(view): + view.pitch(PI/2) + view.zoom(0.4) + + def interlude(view): + moose.start(frameRunTime) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + view.yaw(0.01) + currTime = moose.element('/clock').currentTime + if currTime < runtime: + deliverStim(currTime) + else: + view.stop() + + def postlude(view): + displayPlots() + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + prelude=prelude, + interlude=interlude, + postlude=postlude) + viewer.attach_view(view) + return viewer + + +def create_ca_viewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path) + ca_elements = [] + for compartment_path in network.shapes.keys(): + if moose.exists(compartment_path + '/Ca_conc'): + ca_elements.append(moose.element(compartment_path + '/Ca_conc')) + else: + ca_elements.append(moose.element('/library/Ca_conc')) + + normalizer = moogli.utilities.normalizer(0.0, + 0.002, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(1.0, + 0.0, + 0.0, + 1.0), + moogli.colors.Color(0.0, + 1.0, + 1.0, + 0.1)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + cas = [element.Ca for element in ca_elements] + network.set("color", cas, mapper) + + def prelude(view): + view.pitch(PI/2) + view.zoom(0.4) + + def interlude(view): + moose.start(frameRunTime) + cas = [element.Ca for element in ca_elements] + network.set("color", cas, mapper) + view.yaw(0.01) + currTime = moose.element('/clock').currentTime + if currTime < runtime: + deliverStim(currTime) + else: + view.stop() + + viewer = moogli.Viewer("ca-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("ca-view", + prelude=prelude, + interlude=interlude) + viewer.attach_view(view) + return viewer + +def build3dDisplay(rdes): + print "building 3d Display" + app = QtGui.QApplication(sys.argv) + + vm_viewer = create_vm_viewer(rdes) + vm_viewer.resize(700, 900) + vm_viewer.show() + vm_viewer.start() + + ca_viewer = create_ca_viewer(rdes) + ca_viewer.resize(700, 900) + ca_viewer.show() + ca_viewer.start() + + return app.exec_() + + +def deliverStim( currTime ): + if currTime > baselineTime and currTime < baselineTime + tetTime: + # deliver tet stim + step = int ( (currTime - baselineTime) / frameRunTime ) + tetStep = int( 1.0 / (tetanusFrequency * frameRunTime ) ) + if step % tetStep == 0: + for i in synDendList: + i.activation( tetanusAmplitude ) + for i in synSpineList: + i.activation( tetanusAmplitudeForSpines ) + else: + # deliver probe stim + step = int (currTime / frameRunTime ) + probeStep = int( probeInterval / frameRunTime ) + if step % probeStep == 0: + print "Doing probe Stim at ", currTime + for i in synSpineList: + i.activation( probeAmplitude ) + + +def main(): + global synSpineList + global synDendList + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + synSpineList = moose.wildcardFind( "/model/elec/#head#/glu,/model/elec/#head#/NMDA" ) + temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) + + synDendList = list( temp - set( synSpineList ) ) + print "num spine, dend syns = ", len( synSpineList ), len( synDendList ) + moose.reinit() + #for i in moose.wildcardFind( '/model/elec/#apical#/#[ISA=CaConcBase]' ): + #print i.path, i.length, i.diameter, i.parent.length, i.parent.diameter + + buildPlots(rdes) + # Run for baseline, tetanus, and post-tetanic settling time + t1 = time.time() + build3dDisplay(rdes) + print 'real time = ', time.time() - t1 + +if __name__ == '__main__': + main() diff --git a/examples/Fig2_elecModels/Fig2D.py b/examples/Fig2_elecModels/Fig2D.py new file mode 100644 index 0000000..ef8a05e --- /dev/null +++ b/examples/Fig2_elecModels/Fig2D.py @@ -0,0 +1,104 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### +# This example illustrates loading a model from an SWC file, inserting +# spines, and viewing it. + +import moogli +import moose +from PyQt4 import Qt, QtCore, QtGui +import sys +import os +import rdesigneur as rd + +PI = 3.14159265358979 +frameRunTime = 0.0001 +runtime = 0.1 +inject = 15e-10 +simdt = 5e-5 +RM = 1.0 +RA = 1.0 +CM = 0.01 +# This is the expression used to set spine spacing: +spineSpacing = "dia * 2" +minSpacing = 0.1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle = 0 +spineAngleDistrib = 2*PI + + +def create_vm_viewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path, + vertices=10) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + + def interlude(view): + moose.start(frameRunTime) + #vms = [moose.element(x).Vm for x in network.shapes.keys()] + #network.set("color", vms, mapper) + view.pitch(0.01) + currTime = moose.element('/clock').currentTime + if currTime >= runtime: + view.stop() + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + interlude=interlude) + viewer.attach_view(view) + return viewer + + +def main(): + ######## Put your favourite cell model here ###### + ##This one is from PMID 19146814: Peng et al Neuron 2009 + filename = 'cells/K-18.CNG.swc' + moose.Neutral( '/library' ) + rdes = rd.rdesigneur( \ + cellProto = [[ filename, 'elec' ] ],\ + spineProto = [['makeSpineProto()', 'spine' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', spineSpacing, \ + 'spacingDistrib', str( minSpacing ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ] \ + ) + rdes.buildModel('/model') + moose.reinit() + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + + ################## Now we set up the display ######################## + print "Setting Up 3D Display" + app = QtGui.QApplication(sys.argv) + vm_viewer = create_vm_viewer(rdes) + vm_viewer.showMaximized() + vm_viewer.start() + return app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/Fig2_elecModels/Fig2E.py b/examples/Fig2_elecModels/Fig2E.py new file mode 100644 index 0000000..1a02727 --- /dev/null +++ b/examples/Fig2_elecModels/Fig2E.py @@ -0,0 +1,125 @@ +######################################################################### +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +######################################################################### +# This example illustrates loading a model from an SWC file, inserting +# channels, and running it. + +import moogli +import moose +from PyQt4 import Qt, QtCore, QtGui +import numpy +import pylab +import sys +import os +import rdesigneur as rd + +PI = 3.14159265358979 +frameRunTime = 0.0005 +runtime = 0.1 +inject = 1e-9 +chanProto_ = [ + ['./chans/KChannel_HH.xml'], + ['./chans/NaChannel_HH.xml'], + ['./chans/LeakConductance.xml'], + [ './chans/kdr.xml' ] + ] + +passiveDistrib_ = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", + "Em", "-58e-3", "initVm", "-65e-3" ] + , [ ".", "#axon#", "RA", "0.5" ] + ] + +chanDistrib_ = [ + [ "NaConductance", "#", "Gbar", "1200" ] + , [ "KConductance", "#", "Gbar", "360" ] + , [ "LeakConductance", "#", "Gbar", "3" ] + , [ "kdr", "#", "Gbar", "10" ] + ] + + +def create_vm_viewer(rdes, somaVm): + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + + def prelude(view): + view.pitch(PI/2.0) + + def interlude(view): + moose.start(frameRunTime) + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + view.yaw(0.01) + currTime = moose.element('/clock').currentTime + if currTime >= runtime: + view.stop() + + def postlude(view): + pylab.plot(numpy.linspace(0, + runtime, + len(somaVm.vector)), + somaVm.vector * 1000) + pylab.xlabel("Time (s)") + pylab.ylabel("Vm (mV)") + pylab.show() + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + prelude=prelude, + interlude=interlude, + postlude=postlude) + viewer.attach_view(view) + return viewer + + +def main(): + ######## Put your favourite cell model here ###### + ##This one is from PMID 22730554: Suo et al J. Mol Cell Biol 2012 + filename = 'cells/ko20x-07.CNG.swc' + moose.Neutral( '/library' ) + rdes = rd.rdesigneur( \ + cellProto = [[ filename, 'elec' ] ],\ + passiveDistrib = passiveDistrib_, + chanProto = chanProto_, + chanDistrib = chanDistrib_ + ) + rdes.buildModel( '/model' ) + moose.reinit() + + ################## Now we store plots ######################## + somaVm = moose.Table( '/somaVm' ) + moose.connect( somaVm, 'requestOut', rdes.soma, 'getVm' ) + ################## Now we set up the display ######################## + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + compts[0].inject = inject + + print "Setting Up 3D Display" + app = QtGui.QApplication(sys.argv) + vm_viewer = create_vm_viewer(rdes, somaVm) + vm_viewer.show() + vm_viewer.start() + return app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/Fig2_elecModels/cells/CA1.morph.xml b/examples/Fig2_elecModels/cells/CA1.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/Fig2_elecModels/cells/CA1.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig2_elecModels/cells/K-18.CNG.swc b/examples/Fig2_elecModels/cells/K-18.CNG.swc new file mode 100644 index 0000000..c8c64e8 --- /dev/null +++ b/examples/Fig2_elecModels/cells/K-18.CNG.swc @@ -0,0 +1,1193 @@ +# Original file K-18.swc edited using StdSwc version 1.31 on 1/26/12. +# Irregularities and fixes documented in K-18.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\Master File Processing\Original\K-18.asc +# +# NEUROMANTIC V1.6.3 (1/26/2012 12:52:03 PM): Saved to K-18.swc.CNG.swc +1 1 2.67 1.55 -7.84 9.3275 -1 +2 1 2.67 10.87 -7.84 9.3275 1 +3 1 2.67 -7.77 -7.84 9.3275 1 +4 3 -4.16 8.32 -5.88 1.91 1 +5 3 -5.85 11.02 -5.88 1.575 4 +6 3 -8.89 16.3 -5.88 1.405 5 +7 3 -12.37 21.82 -5.88 1.405 6 +8 3 -14.4 25.42 -5.88 1.405 7 +9 3 -15.63 27.67 -4.9 1.405 8 +10 3 -16.76 29.13 -4.9 1.405 9 +11 3 -21.37 31.15 -4.9 0.845 10 +12 3 -23.96 32.72 -4.9 0.845 11 +13 3 -26.54 34.08 -4.9 0.845 12 +14 3 -26.77 34.19 -4.9 0.845 13 +15 3 -30.25 32.72 -4.9 0.675 14 +16 3 -32.28 31.49 -4.9 0.675 15 +17 3 -33.07 32.61 -3.92 0.225 16 +18 3 -35.88 27.78 -3.92 0.675 17 +19 3 -37.68 25.64 -3.92 0.675 18 +20 3 -41.95 24.29 -3.92 0.505 19 +21 3 -44.99 23.06 -3.92 0.505 20 +22 3 -46.45 23.39 -3.92 0.225 21 +23 3 -48.7 20.13 -3.92 0.45 22 +24 3 -51.4 16.98 -3.92 0.45 23 +25 3 -53.87 14.85 -3.92 0.45 24 +26 3 -54.32 14.28 -3.92 0.45 25 +27 3 -55.34 12.93 -4.9 0.395 26 +28 3 -58.71 12.15 -4.9 0.395 27 +29 3 -60.4 12.03 -4.9 0.28 28 +30 3 -62.65 11.81 -4.9 0.225 29 +31 3 -64.56 11.47 -4.9 0.225 30 +32 3 -37.56 19.12 -4.9 0.62 19 +33 3 -38.24 15.97 -4.9 0.56 32 +34 3 -38.58 14.51 -4.9 0.56 33 +35 3 -39.59 15.52 -4.9 0.395 34 +36 3 -39.81 10.91 -4.9 0.56 35 +37 3 -40.83 8.32 -4.9 0.56 36 +38 3 -42.29 6.19 -4.9 0.56 37 +39 3 -42.85 3.49 -4.9 0.56 38 +40 3 -42.96 1.12 -4.9 0.56 39 +41 3 -43.19 -0.11 -4.9 0.56 40 +42 3 -46.56 -2.81 -4.9 0.56 41 +43 3 -49.94 -5.96 -4.9 0.56 42 +44 3 -53.31 -7.31 -4.9 0.56 43 +45 3 -57.02 -8.77 -4.9 0.56 44 +46 3 -59.27 -9.56 -4.9 0.56 45 +47 3 -61.52 -12.03 -4.9 0.56 46 +48 3 -63.32 -14.06 -4.9 0.56 47 +49 3 -66.36 -14.85 -4.9 0.56 48 +50 3 -69.28 -15.3 -4.9 0.56 49 +51 3 -73.22 -15.75 -4.9 0.56 50 +52 3 -76.37 -18.22 -4.9 0.56 51 +53 3 -78.39 -19.12 -4.9 0.56 52 +54 3 -82.22 -18.55 -4.9 0.56 53 +55 3 -85.14 -18.89 -4.9 0.56 54 +56 3 -86.38 -18.89 -4.9 0.56 55 +57 3 -88.06 -20.47 -4.9 0.335 56 +58 3 -90.2 -22.72 -4.9 0.335 57 +59 3 -91.78 -23.84 -4.9 0.335 58 +60 3 -93.69 -25.42 -4.9 0.335 59 +61 3 -94.59 -26.21 -4.9 0.335 60 +62 3 -88.4 -16.07 -4.9 0.395 56 +63 3 -88.63 -13.72 -4.9 0.395 62 +64 3 -89.08 -12.15 -4.9 0.395 63 +65 3 -90.54 -11.58 -4.9 0.395 64 +66 3 -93.24 -12.82 -4.9 0.395 65 +67 3 -96.16 -13.05 -4.9 0.395 66 +68 3 -97.96 -11.58 -4.9 0.395 67 +69 3 -99.76 -10.57 -4.9 0.395 68 +70 3 -100.77 -11.47 -4.9 0.28 69 +71 3 -100.55 -10.11 -4.9 0.395 70 +72 3 -103.47 -9.67 -4.9 0.395 71 +73 3 -106.28 -9.67 -4.9 0.395 72 +74 3 -107.86 -10.01 -4.9 0.395 73 +75 3 -109.32 -11.02 -4.9 0.395 74 +76 3 -110.45 -11.47 -4.9 0.395 75 +77 3 -111.46 -11.92 -4.9 0.395 76 +78 3 -113.03 -11.92 -4.9 0.395 77 +79 3 -29.02 36.44 -4.9 0.73 14 +80 3 -30.59 36.22 -4.9 0.28 79 +81 3 -31.27 36.33 -4.9 0.28 80 +82 3 -31.72 36.33 -4.9 0.28 81 +83 3 -31.15 38.58 -4.9 0.73 79 +84 3 -32.28 39.59 -4.9 0.73 83 +85 3 -33.29 40.15 -4.9 0.73 84 +86 3 -33.29 40.26 -4.9 0.73 85 +87 3 -37.22 43.3 -4.9 0.62 86 +88 3 -39.47 44.88 -4.9 0.62 87 +89 3 -41.28 45.89 -4.9 0.62 88 +90 3 -44.2 47.91 -4.9 0.62 89 +91 3 -45.89 49.71 -4.9 0.62 90 +92 3 -49.04 52.75 -4.9 0.62 91 +93 3 -52.41 55.34 -4.9 0.62 92 +94 3 -58.26 59.16 -4.9 0.62 93 +95 3 -59.72 60.4 -4.9 0.62 94 +96 3 -60.96 61.52 -4.9 0.62 95 +97 3 -61.07 61.52 -4.9 0.62 96 +98 3 -59.95 62.53 -4.9 0.335 97 +99 3 -63.66 63.55 -4.9 0.62 98 +100 3 -65.01 64.9 -4.9 0.62 99 +101 3 -66.13 65.91 -4.9 0.62 100 +102 3 -66.23 66.02 -4.9 0.62 101 +103 3 -65.12 67.37 -4.9 0.335 102 +104 3 -68.38 67.81 -4.9 0.62 103 +105 3 -68.94 68.72 -4.9 0.62 104 +106 3 -72.88 69.06 -3.92 0.56 105 +107 3 -77.83 70.41 -3.92 0.56 106 +108 3 -81.77 71.64 -3.92 0.56 107 +109 3 -84.8 74.12 -4.9 0.56 108 +110 3 -87.39 76.37 -4.9 0.56 109 +111 3 -89.19 77.27 -4.9 0.56 110 +112 3 -89.64 77.48 -4.9 0.56 111 +113 3 -93.24 77.83 -4.9 0.56 112 +114 3 -97.06 77.94 -4.9 0.56 113 +115 3 -100.66 78.05 -4.9 0.56 114 +116 3 -103.25 78.05 -4.9 0.56 115 +117 3 -106.17 77.48 -4.9 0.56 116 +118 3 -106.96 77.04 -4.9 0.56 117 +119 3 -108.98 76.59 -4.9 0.56 118 +120 3 -110.78 76.7 -4.9 0.56 119 +121 3 -112.69 76.25 -4.9 0.56 120 +122 3 -90.54 82.33 -4.9 0.335 112 +123 3 -90.88 84.69 -4.9 0.335 122 +124 3 -90.09 89.64 -4.9 0.335 123 +125 3 -89.08 95.37 -4.9 0.335 124 +126 3 -88.74 99.2 -4.9 0.335 125 +127 3 -88.63 101.22 -4.9 0.335 126 +128 3 -88.4 104.82 -4.9 0.335 127 +129 3 -87.95 106.4 -4.9 0.335 128 +130 3 -87.95 108.08 -4.9 0.335 129 +131 3 -87.84 108.87 -4.9 0.335 130 +132 3 -87.84 109.21 -4.9 0.335 131 +133 3 -69.62 71.42 -4.9 0.62 105 +134 3 -70.41 74.34 -4.9 0.62 133 +135 3 -71.08 77.48 -3.92 0.62 134 +136 3 -70.86 79.84 -3.92 0.62 135 +137 3 -70.63 82.44 -4.9 0.62 136 +138 3 -71.08 85.36 -3.92 0.62 137 +139 3 -71.87 86.94 -3.92 0.62 138 +140 3 -72.77 90.65 -3.92 0.62 139 +141 3 -73.11 92.11 -3.92 0.62 140 +142 3 -75.69 91.89 -3.92 0.45 141 +143 3 -78.5 90.54 -3.92 0.45 142 +144 3 -79.84 90.31 -3.92 0.45 143 +145 3 -81.88 91.44 -3.92 0.45 144 +146 3 -83.34 92.56 -3.92 0.45 145 +147 3 -84.35 92.9 -3.92 0.45 146 +148 3 -84.69 92.9 -3.92 0.45 147 +149 3 -73.89 94.47 -3.92 0.45 141 +150 3 -74.23 96.5 -3.92 0.45 149 +151 3 -75.69 98.19 -3.92 0.45 150 +152 3 -76.25 98.41 -3.92 0.45 151 +153 3 -78.17 97.17 -3.92 0.28 152 +154 3 -78.84 96.16 -3.92 0.28 153 +155 3 -79.06 95.71 -3.92 0.28 154 +156 3 -78.5 102.01 -3.92 0.62 152 +157 3 -79.52 104.26 -3.92 0.62 156 +158 3 -79.4 108.08 -3.92 0.62 157 +159 3 -81.65 113.93 -3.92 0.62 158 +160 3 -82.44 115.28 -3.92 0.62 159 +161 3 -84.46 114.94 -3.92 0.505 160 +162 3 -86.49 114.94 -3.92 0.45 161 +163 3 -87.95 115.28 -3.92 0.45 162 +164 3 -89.08 115.39 -3.92 0.45 163 +165 3 -34.29 43.41 -4.9 0.45 86 +166 3 -35.09 45.33 -4.9 0.395 165 +167 3 -37.34 47.46 -4.9 0.395 166 +168 3 -39.14 50.16 -4.9 0.395 167 +169 3 -40.94 52.52 -4.9 0.395 168 +170 3 -41.39 53.76 -4.9 0.395 169 +171 3 -42.06 54.44 -4.9 0.395 170 +172 3 -47.01 56.01 -4.9 0.395 171 +173 3 -53.31 59.5 -4.9 0.395 172 +174 3 -56.12 62.65 -4.9 0.395 173 +175 3 -56.35 60.06 -4.9 0.28 174 +176 3 -58.48 55.56 -4.9 0.225 175 +177 3 -59.38 53.31 -4.9 0.225 176 +178 3 -60.51 51.51 -4.9 0.225 177 +179 3 -61.63 49.26 -4.9 0.225 178 +180 3 -58.37 66.58 -4.9 0.335 174 +181 3 -60.4 71.08 -4.9 0.335 180 +182 3 -63.21 75.34 -4.9 0.28 181 +183 3 -65.56 78.05 -4.9 0.28 182 +184 3 -70.41 83.23 -4.9 0.28 183 +185 3 -75.58 84.69 -4.9 0.28 184 +186 3 -80.3 85.93 -4.9 0.28 185 +187 3 -84.02 85.59 -5.88 0.28 186 +188 3 -88.96 85.7 -5.88 0.28 187 +189 3 -94.02 85.7 -5.88 0.28 188 +190 3 -96.61 86.38 -5.88 0.28 189 +191 3 -102.57 87.16 -5.88 0.28 190 +192 3 -106.73 88.29 -5.88 0.28 191 +193 3 -109.21 89.75 -5.88 0.28 192 +194 3 -110.78 91.66 -4.9 0.28 193 +195 3 -111.8 93.35 -4.9 0.28 194 +196 3 -111.91 94.25 -4.9 0.28 195 +197 3 -108.76 85.36 -5.88 0.28 191 +198 3 -111.8 84.02 -5.88 0.28 197 +199 3 -40.15 58.71 -4.9 0.335 171 +200 3 -38.35 62.53 -4.9 0.335 199 +201 3 -37.22 67.26 -4.9 0.335 200 +202 3 -37.45 71.42 -4.9 0.335 201 +203 3 -38.69 76.59 -4.9 0.335 202 +204 3 -40.38 79.63 -4.9 0.335 203 +205 3 -42.4 82.55 -4.9 0.335 204 +206 3 -42.85 84.13 -4.9 0.335 205 +207 3 -42.96 88.18 -4.9 0.335 206 +208 3 -42.63 91.44 -4.9 0.335 207 +209 3 -42.51 92.11 -4.9 0.335 208 +210 3 -42.74 97.62 -4.9 0.335 209 +211 3 -40.6 104.93 -3.92 0.335 210 +212 3 -39.03 110.56 -3.92 0.335 211 +213 3 -39.14 113.26 -3.92 0.335 212 +214 3 -38.35 114.94 -3.92 0.335 213 +215 3 -15.41 32.84 -4.9 0.955 10 +216 3 -15.07 34.08 -4.9 0.955 215 +217 3 -11.81 35.77 -3.92 0.395 216 +218 3 -8.32 39.81 -3.92 0.395 217 +219 3 -3.37 44.43 -3.92 0.395 218 +220 3 0.34 47.8 -3.92 0.395 219 +221 3 5.05 54.41 -4.9 0.335 220 +222 3 11.92 60.03 -4.9 0.335 221 +223 3 16.42 62.28 -4.9 0.335 222 +224 3 21.26 64.31 -4.9 0.335 223 +225 3 28.01 71.17 -4.9 0.335 224 +226 3 31.15 74.88 -4.9 0.335 225 +227 3 33.74 77.58 -3.92 0.335 226 +228 3 38.58 81.96 -3.92 0.335 227 +229 3 41.61 86.35 -3.92 0.335 228 +230 3 43.53 90.17 -3.92 0.335 229 +231 3 44.09 93.21 -3.92 0.335 230 +232 3 45.33 96.36 -3.92 0.335 231 +233 3 44.31 100.63 -3.92 0.335 232 +234 3 42.85 105.47 -3.92 0.335 233 +235 3 42.85 107.72 -3.92 0.335 234 +236 3 41.16 113.12 -3.92 0.335 235 +237 3 40.94 114.13 -3.92 0.335 236 +238 3 40.83 114.47 -3.92 0.335 237 +239 3 -14.51 39.7 -4.9 0.9 216 +240 3 -14.62 41.84 -4.9 0.9 239 +241 3 -16.3 43.3 -4.9 0.675 240 +242 3 -16.87 43.98 -4.9 0.675 241 +243 3 -18.45 43.08 -4.9 0.335 242 +244 3 -19.68 42.51 -4.9 0.335 243 +245 3 -20.02 48.02 -4.9 0.73 242 +246 3 -21.59 50.16 -4.9 0.73 245 +247 3 -23.62 51.96 -4.9 0.73 246 +248 3 -24.52 53.09 -4.9 0.73 247 +249 3 -28.12 53.87 -4.9 0.56 248 +250 3 -29.58 54.21 -4.9 0.56 249 +251 3 -30.93 56.12 -4.9 0.28 250 +252 3 -31.04 57.13 -4.9 0.28 251 +253 3 -31.27 57.92 -4.9 0.28 252 +254 3 -33.18 54.89 -4.9 0.395 250 +255 3 -36.33 54.77 -4.9 0.395 254 +256 3 -39.81 53.65 -4.9 0.395 255 +257 3 -44.65 54.32 -4.9 0.395 256 +258 3 -48.7 55.45 -4.9 0.395 257 +259 3 -52.3 56.12 -4.9 0.395 258 +260 3 -55.56 57.02 -4.9 0.395 259 +261 3 -57.7 56.91 -4.9 0.395 260 +262 3 -27.67 56.01 -4.9 0.675 248 +263 3 -31.27 58.93 -4.9 0.675 262 +264 3 -33.85 61.18 -4.9 0.675 263 +265 3 -34.42 62.31 -4.9 0.675 264 +266 3 -32.84 63.97 -3.92 0.395 265 +267 3 -31.94 64.42 -3.92 0.395 266 +268 3 -31.49 64.98 -3.92 0.395 267 +269 3 -37.34 65.31 -4.9 0.62 265 +270 3 -40.94 68.13 -4.9 0.62 269 +271 3 -42.85 69.93 -4.9 0.62 270 +272 3 -43.98 71.62 -4.9 0.62 271 +273 3 -44.2 72.29 -4.9 0.62 272 +274 3 -43.3 72.63 -3.92 0.395 273 +275 3 -46.68 74.88 -3.92 0.62 274 +276 3 -48.81 77.23 -3.92 0.62 275 +277 3 -50.95 78.93 -3.92 0.62 276 +278 3 -51.74 79.48 -4.9 0.62 277 +279 3 -53.31 77.23 -4.9 0.225 278 +280 3 -53.76 76.12 -4.9 0.225 279 +281 3 -54.32 75.89 -4.9 0.225 280 +282 3 -53.2 80.5 -4.9 0.62 278 +283 3 -57.36 79.26 -4.9 0.335 282 +284 3 -60.4 79.48 -4.9 0.335 283 +285 3 -63.88 78.7 -4.9 0.335 284 +286 3 -68.27 78.81 -4.9 0.335 285 +287 3 -73.22 79.04 -4.9 0.335 286 +288 3 -76.37 80.05 -4.9 0.335 287 +289 3 -80.64 79.83 -4.9 0.335 288 +290 3 -81.99 79.83 -4.9 0.335 289 +291 3 -84.35 79.38 -4.9 0.335 290 +292 3 -86.6 79.38 -4.9 0.335 291 +293 3 -90.76 81.96 -4.9 0.335 292 +294 3 -92.11 83.09 -4.9 0.335 293 +295 3 -93.13 83.88 -4.9 0.335 294 +296 3 -54.89 82.75 -4.9 0.62 282 +297 3 -55.67 83.88 -4.9 0.62 296 +298 3 -54.44 84.44 -4.9 0.335 297 +299 3 -58.6 86.24 -4.9 0.62 298 +300 3 -61.63 88.82 -4.9 0.62 299 +301 3 -63.21 89.61 -4.9 0.62 300 +302 3 -69.06 89.05 -4.9 0.62 301 +303 3 -73.22 88.94 -4.9 0.62 302 +304 3 -77.59 90.96 -4.9 0.62 303 +305 3 -82.1 93.55 -4.9 0.62 304 +306 3 -84.91 95.46 -4.9 0.62 305 +307 3 -90.76 96.58 -4.9 0.62 306 +308 3 -94.47 95.24 -4.9 0.62 307 +309 3 -95.37 95.01 -4.9 0.62 308 +310 3 -96.72 93.55 -4.9 0.335 309 +311 3 -99.2 93.55 -4.9 0.335 310 +312 3 -101.67 93.32 -4.9 0.335 311 +313 3 -99.65 95.12 -4.9 0.675 309 +314 3 -103.13 95.35 -4.9 0.675 313 +315 3 -105.83 95.12 -4.9 0.62 314 +316 3 -107.63 95.8 -4.9 0.62 315 +317 3 -110.11 94.34 -4.9 0.62 316 +318 3 -111.8 93.1 -4.9 0.62 317 +319 3 -112.69 93.21 -4.9 0.62 318 +320 3 -11.36 46.56 -4.9 0.845 240 +321 3 -10.01 49.15 -4.9 0.845 320 +322 3 -9.34 50.27 -4.9 0.845 321 +323 3 -8.1 56.35 -4.9 0.845 322 +324 3 -7.87 59.5 -4.9 0.73 323 +325 3 -7.99 62.53 -4.9 0.73 324 +326 3 -7.54 64.33 -4.9 0.73 325 +327 3 -9.44 65.34 -4.9 0.45 326 +328 3 -9.9 65.68 -4.9 0.45 327 +329 3 -10.91 66.13 -4.9 0.45 328 +330 3 -11.58 66.23 -4.9 0.45 329 +331 3 -5.4 69.39 -4.9 0.73 326 +332 3 -3.94 69.06 -4.9 0.335 331 +333 3 -4.61 72.2 -4.9 0.73 332 +334 3 -3.6 74.45 -5.88 0.73 333 +335 3 -4.61 75.47 -5.88 0.335 334 +336 3 -5.4 76.14 -5.88 0.335 335 +337 3 -6.3 76.59 -5.88 0.335 336 +338 3 -1.46 79.63 -4.9 0.845 334 +339 3 1.57 80.42 -4.9 0.45 338 +340 3 4.16 81.77 -4.9 0.45 339 +341 3 5.96 83.12 -4.9 0.335 340 +342 3 7.31 84.35 -3.92 0.335 341 +343 3 7.76 84.69 -3.92 0.335 342 +344 3 -0.11 83.23 -4.9 0.785 338 +345 3 0.73 85.7 -4.9 0.785 344 +346 3 1.14 86.94 -4.9 0.785 345 +347 3 1.57 88.18 -4.9 0.785 346 +348 3 9.97 87.5 -4.9 0.335 346 +349 3 2.36 89.98 -4.9 0.785 345 +350 3 2.59 89.98 -4.9 0.785 349 +351 3 -1.01 94.14 -4.9 0.62 350 +352 3 -3.15 96.39 -4.9 0.62 351 +353 3 -7.09 99.99 -3.92 0.62 352 +354 3 -8.32 101 -3.92 0.62 353 +355 3 -9.22 103.81 -3.92 0.56 354 +356 3 -10.11 106.62 -3.92 0.56 355 +357 3 -10.8 108.53 -3.92 0.56 356 +358 3 -13.05 110.56 -3.92 0.56 357 +359 3 -14.85 111.23 -3.92 0.56 358 +360 3 -16.07 111.8 -3.92 0.56 359 +361 3 -16.76 113.37 -3.92 0.505 360 +362 3 -17.77 114.61 -3.92 0.505 361 +363 3 -18.55 115.39 -3.92 0.505 362 +364 3 -18.89 110.33 -3.92 0.395 360 +365 3 -21.48 109.55 -3.92 0.395 364 +366 3 -22.72 109.55 -3.92 0.395 365 +367 3 -24.63 110.22 -3.92 0.335 366 +368 3 -26.21 110.56 -3.92 0.335 367 +369 3 -28.01 110.11 -3.92 0.335 368 +370 3 -30.14 108.76 -3.92 0.335 369 +371 3 -34.64 108.53 -3.92 0.335 370 +372 3 -36.22 107.41 -3.92 0.335 371 +373 3 -38.46 104.93 -3.92 0.28 372 +374 3 -39.14 104.48 -3.92 0.28 373 +375 3 -25.31 106.4 -3.92 0.28 366 +376 3 -26.88 105.27 -3.92 0.28 375 +377 3 -28.79 105.38 -3.92 0.28 376 +378 3 -29.35 105.72 -3.92 0.28 377 +379 3 -30.14 105.72 -3.92 0.28 378 +380 3 9 94.36 -4.9 0.73 350 +381 3 10.23 95.26 -4.9 0.73 380 +382 3 10.68 95.82 -4.9 0.73 381 +383 3 12.37 94.59 -4.9 0.28 382 +384 3 14.62 93.35 -4.9 0.28 383 +385 3 16.2 93.13 -4.9 0.28 384 +386 3 18.78 92.56 -4.9 0.28 385 +387 3 20.36 91.44 -4.9 0.28 386 +388 3 13.05 99.09 -3.92 0.73 382 +389 3 14.4 102.46 -3.92 0.62 388 +390 3 12.03 103.13 -3.92 0.45 389 +391 3 10.23 103.36 -3.92 0.45 390 +392 3 7.2 104.03 -3.92 0.45 391 +393 3 6.3 104.03 -3.92 0.45 392 +394 3 15.18 104.26 -3.92 0.73 389 +395 3 14.4 107.86 -3.92 0.45 394 +396 3 14.28 110.33 -3.92 0.45 395 +397 3 14.17 111.12 -3.92 0.45 396 +398 3 13.95 112.25 -3.92 0.45 397 +399 3 13.5 113.37 -3.92 0.45 398 +400 3 13.05 114.49 -3.92 0.45 399 +401 3 12.6 115.28 -3.92 0.45 400 +402 3 17.43 111.8 -3.92 0.395 397 +403 3 20.36 113.26 -3.92 0.395 402 +404 3 22.49 114.16 -3.92 0.395 403 +405 3 23.96 114.61 -3.92 0.395 404 +406 3 24.86 114.94 -3.92 0.395 405 +407 3 18.11 106.28 -3.92 0.62 394 +408 3 20.13 108.08 -3.92 0.62 407 +409 3 22.16 109.88 -3.92 0.62 408 +410 3 23.62 111.46 -3.92 0.62 409 +411 3 23.73 112.69 -3.92 0.62 410 +412 3 24.86 114.16 -3.92 0.62 411 +413 3 25.64 115.06 -3.92 0.62 412 +414 3 26.09 115.51 -3.92 0.62 413 +415 3 2.81 82.1 -4.9 0.335 344 +416 3 4.84 80.75 -4.9 0.335 415 +417 3 5.62 80.19 -4.9 0.335 416 +418 3 -3.07 51.53 -4.9 0.845 322 +419 3 -9.6 56.25 -4.9 0.335 418 +420 3 -15.67 60.75 -4.9 0.335 419 +421 3 -20.17 62.33 -4.9 0.335 420 +422 3 1.01 53.2 -4.9 0.62 418 +423 3 5.17 54.1 -4.9 0.62 422 +424 3 12.26 58.93 -4.9 0.62 423 +425 3 15.97 61.3 -4.9 0.62 424 +426 3 23.84 66.58 -4.9 0.62 425 +427 3 28.57 70.18 -4.9 0.62 426 +428 3 32.84 72.31 -4.9 0.62 427 +429 3 35.99 72.98 -4.9 0.62 428 +430 3 40.38 74.01 -4.9 0.62 429 +431 3 46 77.04 -3.92 0.62 430 +432 3 48.25 79.84 -3.92 0.56 431 +433 3 49.82 82.1 -3.92 0.56 432 +434 3 51.4 86.71 -3.92 0.56 433 +435 3 53.42 90.09 -3.92 0.505 434 +436 3 55.56 93.57 -3.92 0.505 435 +437 3 59.61 96.84 -2.94 0.505 436 +438 3 63.55 100.32 -2.94 0.505 437 +439 3 66.92 103.25 -2.94 0.505 438 +440 3 69.28 105.27 -2.94 0.505 439 +441 3 70.97 107.97 -2.94 0.505 440 +442 3 71.08 107.94 -2.94 0.505 441 +443 3 71.64 109.32 -2.94 0.505 442 +444 3 71.87 110 -2.94 0.505 443 +445 3 73.67 112.33 -2.94 0.335 444 +446 3 74.9 114.8 -2.94 0.335 445 +447 3 75.23 115.25 -2.94 0.335 446 +448 3 75.23 108.28 -2.94 0.335 442 +449 3 79.52 110.08 -2.94 0.335 448 +450 3 83.57 113.12 -2.94 0.335 449 +451 3 84.24 113.91 -2.94 0.335 450 +452 3 11.7 -3.15 -4.9 0.675 1 +453 3 12.71 -6.97 -4.9 0.73 452 +454 3 12.26 -11.02 -3.92 0.73 453 +455 3 12.48 -13.72 -3.92 0.62 454 +456 3 12.37 -16.42 -3.92 0.62 455 +457 3 11.81 -19.23 -3.92 0.62 456 +458 3 9.34 -24.07 -3.92 0.62 457 +459 3 6.41 -31.49 -3.92 0.62 458 +460 3 4.26 -30.93 -3.92 0.45 459 +461 3 0.79 -31.49 -3.92 0.45 460 +462 3 -3.94 -33.74 -3.92 0.45 461 +463 3 -5.17 -34.64 -3.92 0.45 462 +464 3 -6.64 -35.09 -3.92 0.45 463 +465 3 2.02 -41.84 -3.92 0.45 459 +466 3 2.02 -42.4 -3.92 0.45 465 +467 3 3.15 -43.53 -3.92 0.45 466 +468 3 4.05 -44.2 -3.92 0.45 467 +469 3 5.05 -44.43 -3.92 0.45 468 +470 3 0.11 -46.68 -3.92 0.45 466 +471 3 0 -48.92 -3.92 0.45 470 +472 3 -0.22 -50.72 -3.92 0.45 471 +473 3 -1.69 -52.64 -3.92 0.45 472 +474 3 -5.74 -58.03 -3.92 0.45 473 +475 3 -10.01 -65.91 -3.92 0.45 474 +476 3 -11.02 -70.29 -3.92 0.45 475 +477 3 -12.03 -74.9 -3.92 0.45 476 +478 3 -11.92 -77.38 -3.92 0.45 477 +479 3 -11.02 -78.84 -3.92 0.45 478 +480 3 -11.92 -80.53 -4.9 0.395 479 +481 3 -11.7 -82.89 -4.9 0.395 480 +482 3 -12.48 -85.7 -4.9 0.28 481 +483 3 -13.95 -89.64 -4.9 0.28 482 +484 3 -14.73 -92 -4.9 0.28 483 +485 3 -15.41 -93.35 -4.9 0.28 484 +486 3 11.25 5.17 -4.9 0.73 1 +487 3 13.83 8.44 -4.9 0.73 486 +488 3 15.97 11.81 -4.9 0.73 487 +489 3 16.3 13.72 -4.9 0.62 488 +490 3 12.82 17.66 -4.9 0.505 489 +491 3 9.56 19.91 -4.9 0.45 490 +492 3 6.86 22.49 -4.9 0.45 491 +493 3 4.61 25.64 -4.9 0.45 492 +494 3 2.14 28.57 -4.9 0.45 493 +495 3 -0.56 30.37 -4.9 0.45 494 +496 3 -3.26 32.17 -4.9 0.45 495 +497 3 -6.52 34.86 -4.9 0.45 496 +498 3 -10.23 37.68 -4.9 0.45 497 +499 3 -12.03 37.68 -4.9 0.45 498 +500 3 -13.61 39.14 -4.9 0.395 499 +501 3 18.45 18.55 -4.9 0.62 489 +502 3 20.47 25.76 -4.9 0.62 501 +503 3 20.81 29.24 -4.9 0.62 502 +504 3 20.23 33.29 -4.9 0.56 503 +505 3 18.78 37.9 -4.9 0.56 504 +506 3 18.11 42.18 -3.92 0.45 505 +507 3 18.11 45.21 -3.92 0.45 506 +508 3 19.57 49.26 -3.92 0.45 507 +509 3 21.37 51.17 -3.92 0.45 508 +510 3 23.51 52.86 -3.92 0.45 509 +511 3 28.45 53.31 -4.9 0.45 510 +512 3 32.61 54.89 -4.9 0.45 511 +513 3 34.97 55.56 -5.88 0.45 512 +514 3 40.6 55.79 -6.86 0.45 513 +515 3 44.2 57.13 -6.86 0.45 514 +516 3 46.45 60.73 -4.9 0.45 515 +517 3 46.23 63.43 -4.9 0.45 516 +518 3 45.66 68.61 -4.9 0.45 517 +519 3 46.23 73.33 -4.9 0.45 518 +520 3 47.91 76.59 -4.9 0.45 519 +521 3 49.04 80.42 -4.9 0.45 520 +522 3 49.71 83.99 -3.92 0.45 521 +523 3 -8.55 1.57 -4.9 1.63 1 +524 3 -11.02 0.22 -4.9 1.63 523 +525 3 -16.07 -8.21 -4.9 0.73 524 +526 3 -16.64 -9 -4.9 0.73 525 +527 3 -34.9 -18.63 -4.9 0.73 526 +528 3 -35.55 -18.97 -4.9 0.73 527 +529 3 -36.19 -19.31 -4.9 0.73 528 +530 3 -37.49 -20 -4.9 0.73 529 +531 3 -17.88 -13.16 -4.9 0.675 529 +532 3 -18.67 -16.42 -4.9 0.675 531 +533 3 -20.02 -18.89 -4.9 0.62 532 +534 3 -22.61 -22.72 -4.9 0.62 533 +535 3 -26.32 -28.57 -4.9 0.62 534 +536 3 -28.01 -30.93 -4.9 0.62 535 +537 3 -28.9 -37.34 -4.9 0.505 536 +538 3 -26.66 -38.69 -4.9 0.28 537 +539 3 -23.39 -41.39 -4.9 0.28 538 +540 3 -19.91 -44.31 -4.9 0.28 539 +541 3 -32.5 -47.01 -4.9 0.505 537 +542 3 -34.29 -50.5 -4.9 0.505 541 +543 3 -35.99 -52.75 -4.9 0.505 542 +544 3 -37.22 -58.6 -4.9 0.505 543 +545 3 -37.56 -61.18 -5.88 0.505 544 +546 3 -38.9 -68.38 -5.88 0.505 545 +547 3 -39.03 -71.64 -5.88 0.45 546 +548 3 -39.59 -75.92 -4.9 0.395 547 +549 3 -38.79 -80.53 -4.9 0.395 548 +550 3 -37.45 -84.8 -4.9 0.395 549 +551 3 -35.43 -90.88 -4.9 0.395 550 +552 3 -34.08 -99.65 -4.9 0.395 551 +553 3 -33.63 -100.44 -4.9 0.395 552 +554 3 -44.31 -72.2 -4.9 0.395 546 +555 3 -46.11 -75.23 -4.9 0.395 554 +556 3 -49.6 -74.68 -4.9 0.225 555 +557 3 -51.4 -74.79 -4.9 0.225 556 +558 3 -53.65 -74.9 -4.9 0.225 557 +559 3 -48.92 -80.53 -4.9 0.45 555 +560 3 -50.61 -83.9 -4.9 0.45 559 +561 3 -52.75 -88.63 -4.9 0.45 560 +562 3 -53.09 -92.68 -4.9 0.45 561 +563 3 -52.52 -97.74 -4.9 0.45 562 +564 3 -53.54 -102.57 -4.9 0.45 563 +565 3 -53.65 -103.92 -4.9 0.45 564 +566 3 -54.32 -107.52 -4.9 0.395 565 +567 3 -34.42 -33.52 -4.9 0.395 536 +568 3 -36.33 -35.2 -4.9 0.395 567 +569 3 -37.11 -35.54 -4.9 0.395 568 +570 3 -37.79 -38.24 -4.9 0.28 569 +571 3 -38.01 -39.14 -4.9 0.28 570 +572 3 -44.31 -38.9 -4.9 0.395 569 +573 3 -48.02 -40.26 -4.9 0.395 572 +574 3 -50.16 -41.39 -4.9 0.395 573 +575 3 -50.84 -41.73 -4.9 0.395 574 +576 3 -50.27 -44.31 -4.9 0.225 575 +577 3 -49.71 -46.56 -4.9 0.225 576 +578 3 -49.94 -47.69 -4.9 0.225 577 +579 3 -58.15 -43.64 -4.9 0.395 575 +580 3 -59.95 -44.54 -4.9 0.395 579 +581 3 -62.76 -44.88 -4.9 0.395 580 +582 3 -65.56 -44.76 -4.9 0.395 581 +583 3 -68.04 -44.43 -4.9 0.395 582 +584 3 -71.08 -46.23 -4.9 0.395 583 +585 3 -75.02 -48.92 -4.9 0.395 584 +586 3 -77.15 -49.71 -4.9 0.395 585 +587 3 -79.84 -51.17 -4.9 0.395 586 +588 3 -81.43 -51.51 -4.9 0.395 587 +589 3 -81.99 -52.07 -4.9 0.395 588 +590 3 -82.22 -52.75 -4.9 0.395 589 +591 3 -82.67 -54.44 -4.9 0.395 590 +592 3 -83 -55.22 -4.9 0.395 591 +593 3 -32.09 -24.5 -4.9 0.335 528 +594 3 -38.46 -20.27 -4.9 0.505 527 +595 3 -43.64 -23.42 -4.9 0.505 594 +596 3 -47.24 -26.01 -4.9 0.505 595 +597 3 -48.02 -29.61 -4.9 0.505 596 +598 3 -50.61 -32.19 -4.9 0.505 597 +599 3 -51.4 -32.97 -4.9 0.505 598 +600 3 -50.27 -33.99 -4.9 0.335 599 +601 3 -59.16 -41.19 -4.9 0.505 600 +602 3 -61.52 -44.23 -4.9 0.45 601 +603 3 -64.9 -48.05 -4.9 0.45 602 +604 3 -67.7 -50.75 -4.9 0.45 603 +605 3 -71.53 -49.18 -3.92 0.335 604 +606 3 -76.37 -44.9 -3.92 0.335 605 +607 3 -80.64 -42.43 -3.92 0.335 606 +608 3 -83.9 -40.18 -3.92 0.335 607 +609 3 -91.21 -41.53 -3.92 0.335 608 +610 3 -93.91 -42.09 -4.9 0.335 609 +611 3 -99.2 -41.3 -4.9 0.335 610 +612 3 -102.91 -38.15 -4.9 0.335 611 +613 3 -105.61 -36.79 -5.88 0.335 612 +614 3 -108.53 -36.13 -4.9 0.335 613 +615 3 -111.12 -35.34 -4.9 0.335 614 +616 3 -112.36 -35.22 -4.9 0.335 615 +617 3 -74.34 -57.16 -4.9 0.335 604 +618 3 -76.14 -59.97 -4.9 0.335 617 +619 3 -75.13 -63.01 -4.9 0.225 618 +620 3 -74.91 -68.41 -4.9 0.225 619 +621 3 -73.44 -72.23 -4.9 0.225 620 +622 3 -72.31 -77.06 -4.9 0.225 621 +623 3 -69.17 -82.36 -4.9 0.225 622 +624 3 -63.55 -87.19 -4.9 0.225 623 +625 3 -62.53 -87.53 -4.9 0.225 624 +626 3 -61.86 -87.87 -4.9 0.225 625 +627 3 -79.63 -66.38 -4.9 0.395 618 +628 3 -79.97 -67.28 -4.9 0.395 627 +629 3 -80.19 -70.2 -4.9 0.225 628 +630 3 -81.54 -72.23 -4.9 0.225 629 +631 3 -84.58 -75.83 -4.9 0.225 630 +632 3 -86.15 -77.18 -4.9 0.225 631 +633 3 -87.61 -77.86 -4.9 0.225 632 +634 3 -87.95 -78.08 -4.9 0.225 633 +635 3 -87.16 -70.2 -4.9 0.225 628 +636 3 -91.44 -72.8 -4.9 0.225 635 +637 3 -99.2 -78.76 -4.9 0.225 636 +638 3 -102.8 -82.8 -4.9 0.225 637 +639 3 -106.62 -89.22 -4.9 0.225 638 +640 3 -106.4 -92.93 -4.9 0.225 639 +641 3 -106.73 -97.99 -4.9 0.225 640 +642 3 -104.71 -102.37 -4.9 0.225 641 +643 3 -103.7 -103.5 -4.9 0.225 642 +644 3 -19.68 -9.22 -4.9 0.45 526 +645 3 -21.59 -11.13 -4.9 0.45 644 +646 3 -24.86 -16.87 -4.9 0.45 645 +647 3 -27.33 -21.26 -4.9 0.45 646 +648 3 -30.37 -23.84 -4.9 0.45 647 +649 3 -33.74 -26.77 -3.92 0.45 648 +650 3 -36.54 -28.34 -3.92 0.45 649 +651 3 -38.46 -27.44 -3.92 0.335 650 +652 3 -39.59 -26.66 -3.92 0.335 651 +653 3 -40.15 -26.32 -3.92 0.335 652 +654 3 -38.01 -31.27 -3.92 0.335 650 +655 3 -38.79 -34.75 -3.92 0.335 654 +656 3 -41.39 -38.35 -3.92 0.335 655 +657 3 -45.89 -41.95 -3.92 0.335 656 +658 3 -49.26 -44.99 -3.92 0.335 657 +659 3 -52.19 -47.57 -4.9 0.335 658 +660 3 14.17 0.34 -4.9 1.575 1 +661 3 16.76 0.22 -4.9 1.575 660 +662 3 19.37 -0.72 -4.61 1.01 661 +663 3 21.98 -1.67 -4.33 1.01 662 +664 3 25.76 -3.04 -3.92 1.01 663 +665 3 25.42 -5.29 -3.92 0.225 664 +666 3 32.04 -4.5 -3.92 1.01 665 +667 3 37.68 -7.09 -3.92 1.01 666 +668 3 42.06 -9 -3.92 1.01 667 +669 3 44.31 -12.71 -3.92 0.62 668 +670 3 46 -13.83 -3.92 0.62 669 +671 3 50.05 -19.12 -3.92 0.62 670 +672 3 50.95 -20.92 -3.92 0.62 671 +673 3 52.52 -26.54 -3.92 0.62 672 +674 3 55.79 -31.83 -3.92 0.73 673 +675 3 56.35 -32.61 -3.92 0.73 674 +676 3 63.43 -37.68 -3.92 0.62 675 +677 3 66.02 -39.36 -3.92 0.62 676 +678 3 73.22 -39.47 -3.92 0.56 677 +679 3 79.52 -39.14 -3.92 0.56 678 +680 3 80.53 -39.03 -3.92 0.56 679 +681 3 84.02 -34.86 -3.92 0.56 680 +682 3 86.26 -32.5 -3.92 0.56 681 +683 3 89.86 -26.88 -3.92 0.505 682 +684 3 91.78 -23.06 -3.92 0.505 683 +685 3 95.94 -18.32 -3.92 0.505 684 +686 3 98.07 -16.42 -3.92 0.505 685 +687 3 100.1 -14.85 -3.92 0.505 686 +688 3 100.55 -13.95 -3.92 0.505 687 +689 3 100.89 -13.61 -3.92 0.505 688 +690 3 88.85 -32.72 -3.92 0.335 682 +691 3 91.21 -32.72 -3.92 0.335 690 +692 3 83.45 -39.36 -3.92 0.56 680 +693 3 83.57 -40.94 -3.92 0.28 692 +694 3 85.93 -39.59 -3.92 0.56 693 +695 3 89.64 -41.05 -3.92 0.56 694 +696 3 96.72 -44.43 -3.92 0.56 695 +697 3 99.87 -46.9 -4.9 0.56 696 +698 3 102.57 -48.81 -4.9 0.56 697 +699 3 105.16 -50.61 -4.9 0.56 698 +700 3 109.66 -52.19 -4.9 0.56 699 +701 3 112.69 -54.1 -4.9 0.56 700 +702 3 115.96 -55.22 -4.9 0.56 701 +703 3 116.97 -55.56 -4.9 0.56 702 +704 3 66.02 -42.63 -3.92 0.45 677 +705 3 65.34 -44.54 -3.92 0.45 704 +706 3 67.37 -46.45 -3.92 0.45 705 +707 3 68.16 -46.79 -3.92 0.45 706 +708 3 70.97 -51.51 -3.92 0.395 707 +709 3 73.44 -54.89 -3.92 0.395 708 +710 3 76.59 -61.3 -3.92 0.395 709 +711 3 77.72 -60.73 -3.92 0.395 710 +712 3 76.7 -64.22 -3.92 0.395 711 +713 3 76.25 -67.7 -3.92 0.395 712 +714 3 76.37 -68.72 -3.92 0.395 713 +715 3 80.19 -71.08 -2.94 0.505 714 +716 3 82.89 -71.08 -2.94 0.505 715 +717 3 85.93 -72.31 -2.94 0.505 716 +718 3 90.31 -74.12 -2.94 0.505 717 +719 3 94.02 -75.23 -2.94 0.505 718 +720 3 97.06 -74.45 -2.94 0.505 719 +721 3 101.67 -74.01 -2.94 0.395 720 +722 3 104.82 -74.12 -2.94 0.395 721 +723 3 108.2 -75.34 -2.94 0.395 722 +724 3 110.78 -76.37 -2.94 0.395 723 +725 3 113.03 -77.27 -2.94 0.395 724 +726 3 114.38 -77.83 -2.94 0.395 725 +727 3 115.39 -78.28 -2.94 0.395 726 +728 3 98.07 -72.66 -2.94 0.335 720 +729 3 98.3 -71.53 -2.94 0.335 728 +730 3 73.56 -70.06 -2.94 0.395 714 +731 3 69.84 -73.11 -2.94 0.395 730 +732 3 68.04 -73.56 -2.94 0.395 731 +733 3 66.13 -73.78 -2.94 0.395 732 +734 3 69.06 -44.65 -2.94 0.28 707 +735 3 69.06 -43.53 -2.94 0.225 734 +736 3 69.06 -42.51 -2.94 0.225 735 +737 3 54.55 -36.54 -3.92 0.56 675 +738 3 53.76 -41.5 -3.92 0.56 737 +739 3 53.87 -46.68 -3.92 0.56 738 +740 3 53.76 -48.47 -3.92 0.56 739 +741 3 52.75 -53.76 -3.92 0.395 740 +742 3 53.65 -55.9 -3.92 0.395 741 +743 3 53.87 -58.48 -3.92 0.395 742 +744 3 53.42 -59.95 -3.92 0.395 743 +745 3 53.09 -62.98 -3.92 0.395 744 +746 3 53.09 -64.56 -3.92 0.395 745 +747 3 51.4 -50.72 -3.92 0.395 740 +748 3 50.84 -52.64 -3.92 0.395 747 +749 3 50.39 -53.76 -3.92 0.395 748 +750 3 51.85 -66.36 -3.92 0.395 749 +751 3 53.09 -68.38 -3.92 0.335 750 +752 3 53.87 -72.31 -4.9 0.335 751 +753 3 55.22 -74.68 -4.9 0.335 752 +754 3 55.34 -78.5 -4.9 0.335 753 +755 3 56.46 -81.77 -4.9 0.335 754 +756 3 56.46 -82.55 -4.9 0.335 755 +757 3 51.17 -29.58 -3.92 0.45 673 +758 3 50.16 -32.28 -3.92 0.45 757 +759 3 48.92 -35.54 -3.92 0.45 758 +760 3 49.37 -41.16 -3.92 0.45 759 +761 3 48.36 -45.89 -3.92 0.45 760 +762 3 46.45 -48.7 -3.92 0.395 761 +763 3 43.41 -51.96 -3.92 0.395 762 +764 3 39.7 -53.42 -3.92 0.395 763 +765 3 36.67 -54.89 -3.92 0.395 764 +766 3 33.74 -56.68 -3.92 0.395 765 +767 3 32.28 -58.03 -3.92 0.395 766 +768 3 31.72 -58.48 -3.92 0.395 767 +769 3 43.98 -46.34 -2.94 0.335 761 +770 3 40.94 -47.91 -2.94 0.335 769 +771 3 40.15 -48.47 -2.94 0.335 770 +772 3 54.1 -20.23 -3.92 0.45 672 +773 3 56.8 -19.01 -3.92 0.45 772 +774 3 60.73 -17.21 -3.92 0.45 773 +775 3 61.52 -14.06 -3.92 0.45 774 +776 3 62.2 -12.15 -3.92 0.45 775 +777 3 62.2 -11.36 -3.92 0.45 776 +778 3 46.79 -12.6 -3.92 0.335 670 +779 3 47.69 -12.03 -3.92 0.335 778 +780 3 50.5 -6.52 -3.92 0.73 668 +781 3 52.3 -6.19 -4.9 0.73 780 +782 3 52.64 -7.2 -3.92 0.395 781 +783 3 56.57 -4.38 -3.92 0.73 782 +784 3 61.07 -8.66 -3.92 0.505 783 +785 3 62.76 -12.15 -3.92 0.505 784 +786 3 63.43 -14.85 -3.92 0.505 785 +787 3 63.43 -16.42 -3.92 0.395 786 +788 3 66.81 -19.46 -3.92 0.395 787 +789 3 70.86 -25.64 -3.92 0.395 788 +790 3 72.43 -29.02 -3.92 0.395 789 +791 3 74.68 -32.04 -2.94 0.395 790 +792 3 75.8 -36.44 -2.94 0.395 791 +793 3 76.03 -41.16 -2.94 0.395 792 +794 3 76.25 -49.04 -2.94 0.395 793 +795 3 75.13 -52.41 -2.94 0.395 794 +796 3 74.12 -55.9 -2.94 0.395 795 +797 3 73.22 -57.25 -2.94 0.395 796 +798 3 73.33 -27.67 -3.92 0.395 790 +799 3 74.01 -26.66 -3.92 0.395 798 +800 3 74.23 -25.42 -3.92 0.395 799 +801 3 67.59 -13.61 -3.92 0.335 786 +802 3 69.62 -16.3 -3.92 0.335 801 +803 3 69.17 -19.68 -3.92 0.28 802 +804 3 68.61 -24.97 -3.92 0.28 803 +805 3 68.38 -28.23 -3.92 0.28 804 +806 3 69.28 -32.28 -3.92 0.28 805 +807 3 69.39 -34.08 -3.92 0.28 806 +808 3 69.39 -35.99 -3.92 0.28 807 +809 3 69.39 -37.45 -3.92 0.28 808 +810 3 68.94 -38.35 -3.92 0.28 809 +811 3 60.17 -1.35 -3.92 0.62 783 +812 3 63.77 1.35 -3.92 0.62 811 +813 3 69.17 5.74 -3.92 0.62 812 +814 3 72.98 6.97 -3.92 0.62 813 +815 3 78.73 9.11 -3.92 0.56 814 +816 3 84.46 11.36 -3.92 0.56 815 +817 3 85.93 12.03 -3.92 0.56 816 +818 3 89.64 15.63 -3.92 0.62 817 +819 3 90.88 16.3 -3.92 0.62 818 +820 3 95.37 16.42 -3.92 0.62 819 +821 3 99.42 21.03 -4.9 0.395 820 +822 3 103.7 24.86 -4.9 0.395 821 +823 3 109.43 30.37 -4.9 0.395 822 +824 3 112.92 33.97 -3.92 0.395 823 +825 3 115.73 36.22 -3.92 0.395 824 +826 3 115.96 36.89 -3.92 0.395 825 +827 3 116.18 38.13 -3.92 0.395 826 +828 3 116.18 39.25 -3.92 0.395 827 +829 3 116.82 42.98 -2.94 0.335 828 +830 3 130.54 45.23 -2.94 0.335 829 +831 3 99.76 16.2 -2.94 0.395 820 +832 3 103.02 16.98 -2.94 0.395 831 +833 3 106.4 18.32 -2.94 0.395 832 +834 3 110.22 19.12 -2.94 0.395 833 +835 3 112.81 19.23 -2.94 0.395 834 +836 3 114.61 18.11 -2.94 0.395 835 +837 3 115.06 17.32 -2.94 0.395 836 +838 3 89.86 22.38 -4.9 0.56 819 +839 3 88.74 25.87 -2.94 0.505 838 +840 3 88.29 29.92 -2.94 0.505 839 +841 3 90.31 33.97 -2.94 0.505 840 +842 3 91.44 38.35 -2.94 0.505 841 +843 3 91.89 43.3 -3.92 0.505 842 +844 3 91.1 45.55 -3.92 0.505 843 +845 3 90.54 49.37 -2.94 0.56 844 +846 3 88.74 53.31 -2.94 0.56 845 +847 3 88.06 58.15 -2.94 0.56 846 +848 3 88.85 62.42 -2.94 0.56 847 +849 3 88.63 67.26 -2.94 0.505 848 +850 3 88.74 69.51 -2.94 0.45 849 +851 3 89.64 73.11 -2.94 0.45 850 +852 3 90.2 77.15 -1.96 0.45 851 +853 3 90.54 80.64 -1.96 0.45 852 +854 3 90.99 84.91 -2.94 0.45 853 +855 3 91.89 89.3 -2.94 0.395 854 +856 3 93.01 93.24 -2.94 0.335 855 +857 3 95.15 96.16 -2.94 0.335 856 +858 3 95.94 97.51 -2.94 0.335 857 +859 3 89.41 44.76 -2.94 0.335 844 +860 3 87.39 42.51 -2.94 0.335 859 +861 3 86.49 41.84 -2.94 0.335 860 +862 3 88.18 8.44 -2.94 0.395 817 +863 3 89.64 6.19 -2.94 0.395 862 +864 3 88.74 2.36 -1.96 0.395 863 +865 3 88.96 0.67 -2.94 0.395 864 +866 3 88.63 -1.24 -2.94 0.395 865 +867 3 89.53 -4.61 -2.94 0.395 866 +868 3 66.47 6.19 -3.92 0.395 812 +869 3 67.81 6.3 -3.92 0.395 868 +870 3 69.95 12.48 -3.92 0.395 869 +871 3 72.43 16.98 -3.92 0.395 870 +872 3 74.23 15.86 -3.92 0.395 871 +873 3 74.34 23.39 -3.92 0.395 872 +874 3 75.69 27.67 -3.92 0.395 873 +875 3 76.48 29.69 -3.92 0.395 874 +876 3 76.7 31.04 -3.92 0.395 875 +877 3 77.04 32.04 -3.92 0.395 876 +878 3 39.7 -5.51 -3.92 0.335 667 +879 3 40.83 -3.37 -3.92 0.335 878 +880 3 40.71 -1.8 -3.92 0.225 879 +881 3 39.7 -0.67 -3.92 0.225 880 +882 3 41.84 -2.92 -3.92 0.225 879 +883 3 43.08 -3.49 -3.92 0.225 882 +884 3 43.64 -3.6 -3.92 0.225 883 +885 3 33.18 -2.14 -3.92 0.56 666 +886 3 33.4 -1.35 -3.92 0.56 885 +887 3 37.11 -0.22 -3.92 0.395 886 +888 3 39.93 2.14 -3.92 0.395 887 +889 3 41.95 3.94 -3.92 0.395 888 +890 3 43.3 4.95 -3.92 0.395 889 +891 3 31.15 1.01 -2.94 0.45 886 +892 3 29.58 2.47 -2.94 0.335 891 +893 3 28.12 3.94 -2.94 0.335 892 +894 3 27.78 4.95 -2.94 0.335 893 +895 3 28.68 -0.67 -3.92 0.45 663 +896 3 34.64 0.34 -4.9 0.45 895 +897 3 39.7 0.79 -3.92 0.45 896 +898 3 40.83 0.67 -3.92 0.45 897 +899 3 43.08 5.29 -3.92 0.45 898 +900 3 45.78 9.22 -2.94 0.45 899 +901 3 48.59 14.28 -2.94 0.395 900 +902 3 49.04 15.86 -2.94 0.395 901 +903 3 48.59 18.32 -2.94 0.395 902 +904 3 48.81 18.89 -2.94 0.395 903 +905 3 47.35 18.89 -1.96 0.28 904 +906 3 51.06 23.17 -2.94 0.45 905 +907 3 57.36 29.24 -2.94 0.45 906 +908 3 64.9 40.85 -3.92 0.45 907 +909 3 64.78 42.2 -3.92 0.45 908 +910 3 43.98 -0.79 -4.9 0.395 898 +911 3 46.11 -1.91 -4.9 0.395 910 +912 3 50.84 -3.15 -4.9 0.395 911 +913 3 58.37 -1.57 -4.9 0.395 912 +914 3 60.73 0.11 -4.9 0.395 913 +915 3 65.68 1.01 -4.9 0.395 914 +916 3 69.17 0.45 -4.9 0.395 915 +917 3 72.31 0.22 -4.9 0.335 916 +918 3 73.22 -0.11 -4.9 0.335 917 +919 3 22.04 -7.99 -4.9 0.73 662 +920 3 23.39 -11.7 -4.9 0.675 919 +921 3 25.42 -14.96 -4.9 0.62 920 +922 3 26.54 -17.43 -4.9 0.62 921 +923 3 25.64 -21.03 -4.9 0.62 922 +924 3 24.18 -25.53 -4.9 0.62 923 +925 3 22.94 -29.13 -4.9 0.62 924 +926 3 25.76 -34.08 -4.9 0.62 925 +927 3 29.13 -37.11 -4.9 0.62 926 +928 3 30.59 -36.67 -3.92 0.395 927 +929 3 31.38 -40.04 -3.92 0.62 928 +930 3 35.99 -43.75 -3.92 0.62 929 +931 3 41.5 -46.9 -3.92 0.62 930 +932 3 46.56 -50.95 -3.92 0.62 931 +933 3 50.72 -54.66 -3.92 0.62 932 +934 3 51.29 -64.02 -3.92 0.62 933 +935 3 49.94 -67.73 -3.92 0.56 934 +936 3 48.59 -70.31 -3.92 0.505 935 +937 3 49.71 -74.59 -3.92 0.505 936 +938 3 51.29 -80.44 -3.92 0.505 937 +939 3 56.24 -83.36 -3.92 0.505 938 +940 3 61.52 -84.6 -3.92 0.505 939 +941 3 66.36 -85.27 -3.92 0.505 940 +942 3 69.84 -85.72 -3.92 0.335 941 +943 3 71.53 -85.72 -3.92 0.335 942 +944 3 73.22 -85.72 -3.92 0.335 943 +945 3 75.47 -86.29 -2.94 0.335 944 +946 3 67.93 -83.48 -3.92 0.335 941 +947 3 68.27 -82.24 -3.92 0.335 946 +948 3 21.37 4.84 -4.9 0.955 661 +949 3 26.43 10.23 -4.9 0.955 948 +950 3 31.49 14.96 -4.9 0.955 949 +951 3 33.29 16.98 -4.9 0.955 950 +952 3 34.64 15.63 -4.9 0.225 951 +953 3 36.44 19.91 -4.9 0.955 952 +954 3 35.77 21.82 -4.9 0.45 953 +955 3 39.93 23.28 -3.92 0.9 954 +956 3 37.34 26.32 -3.92 0.45 955 +957 3 33.97 29.35 -3.92 0.45 956 +958 3 33.07 30.93 -3.92 0.45 957 +959 3 32.5 31.49 -4.9 0.45 958 +960 3 30.48 31.6 -3.92 0.28 959 +961 3 29.13 31.38 -3.92 0.28 960 +962 3 29.8 35.2 -4.9 0.45 959 +963 3 27.11 37.34 -4.9 0.45 962 +964 3 20.92 39.14 -4.9 0.45 963 +965 3 17.55 39.36 -4.9 0.45 964 +966 3 16.07 39.81 -4.9 0.45 965 +967 3 15.3 42.51 -4.9 0.395 966 +968 3 14.85 44.65 -4.9 0.395 967 +969 3 15.3 45.21 -4.9 0.395 968 +970 3 12.03 39.03 -4.9 0.395 966 +971 3 7.54 38.35 -4.9 0.395 970 +972 3 3.15 38.69 -4.9 0.395 971 +973 3 0.67 39.14 -4.9 0.395 972 +974 3 -1.24 39.7 -4.9 0.395 973 +975 3 -2.47 40.26 -4.9 0.395 974 +976 3 43.75 26.54 -3.92 0.73 955 +977 3 49.37 26.21 -3.92 0.56 976 +978 3 52.86 26.21 -3.92 0.56 977 +979 3 58.26 26.09 -3.92 0.56 978 +980 3 63.1 26.77 -3.92 0.56 979 +981 3 67.37 26.88 -3.92 0.56 980 +982 3 71.64 28.34 -3.92 0.56 981 +983 3 75.47 31.6 -3.92 0.56 982 +984 3 77.83 32.95 -3.92 0.56 983 +985 3 86.26 33.4 -3.92 0.56 984 +986 3 89.98 33.52 -3.92 0.56 985 +987 3 94.14 32.95 -3.92 0.505 986 +988 3 98.86 31.6 -3.92 0.45 987 +989 3 100.77 30.93 -3.92 0.45 988 +990 3 101.45 30.37 -3.92 0.45 989 +991 3 44.43 28.01 -3.92 0.73 976 +992 3 38.9 28.79 -3.92 0.45 991 +993 3 37.68 28.34 -3.92 0.45 992 +994 3 37.11 26.99 -3.92 0.335 993 +995 3 36.89 26.21 -3.92 0.335 994 +996 3 33.74 28.23 -3.92 0.395 993 +997 3 32.28 28.01 -3.92 0.395 996 +998 3 33.29 26.99 -3.92 0.335 997 +999 3 33.74 25.98 -3.92 0.335 998 +1000 3 28.34 26.32 -2.94 0.45 997 +1001 3 24.86 25.08 -2.94 0.45 1000 +1002 3 22.72 23.28 -2.94 0.45 1001 +1003 3 20.81 21.48 -2.94 0.45 1002 +1004 3 15.97 19.12 -3.92 0.45 1003 +1005 3 13.61 18.32 -3.92 0.45 1004 +1006 3 12.48 18.32 -3.92 0.45 1005 +1007 3 8.44 17.88 -3.92 0.335 1006 +1008 3 6.19 17.88 -3.92 0.335 1007 +1009 3 4.95 17.77 -3.92 0.335 1008 +1010 3 7.87 15.18 -3.92 0.335 1006 +1011 3 4.26 14.28 -3.92 0.335 1010 +1012 3 1.35 12.37 -3.92 0.335 1011 +1013 3 0.11 11.47 -3.92 0.335 1012 +1014 3 -1.35 10.91 -3.92 0.335 1013 +1015 3 -2.25 10.35 -3.92 0.335 1014 +1016 3 49.37 34.15 -3.92 0.675 991 +1017 3 47.18 36.28 -3.92 0.45 1016 +1018 3 45.89 37.54 -3.92 0.45 1017 +1019 3 41.28 42.15 -3.92 0.45 1018 +1020 3 39.14 43.95 -3.92 0.45 1019 +1021 3 36.89 45.41 -3.92 0.45 1020 +1022 3 36.33 45.75 -3.92 0.45 1021 +1023 3 35.43 44.74 -2.94 0.28 1022 +1024 3 34.19 48.11 -3.92 0.45 1023 +1025 3 30.93 51.48 -3.92 0.45 1024 +1026 3 28.34 52.95 -3.92 0.45 1025 +1027 3 22.49 53.62 -3.92 0.45 1026 +1028 3 20.36 54.97 -3.92 0.45 1027 +1029 3 18.32 55.65 -3.92 0.45 1028 +1030 3 16.2 57.45 -3.92 0.45 1029 +1031 3 16.2 60.48 -3.92 0.45 1030 +1032 3 16.3 63.97 -3.92 0.395 1031 +1033 3 14.96 66.56 -2.94 0.395 1032 +1034 3 12.93 68.02 -2.94 0.395 1033 +1035 3 10.46 69.48 -2.94 0.395 1034 +1036 3 7.65 70.04 -2.94 0.395 1035 +1037 3 5.51 72.18 -2.94 0.395 1036 +1038 3 4.16 80.39 -2.94 0.395 1037 +1039 3 3.82 83.54 -2.94 0.335 1038 +1040 3 3.82 84.21 -3.92 0.335 1039 +1041 3 3.71 84.66 -3.92 0.335 1040 +1042 3 49.94 34.95 -3.92 0.73 1017 +1043 3 49.71 31.01 -3.92 0.505 1042 +1044 3 50.05 27.64 -3.92 0.45 1043 +1045 3 51.74 24.38 -3.92 0.45 1044 +1046 3 55.45 21.68 -3.92 0.45 1045 +1047 3 58.6 18.42 -3.92 0.45 1046 +1048 3 62.08 15.72 -3.92 0.45 1047 +1049 3 64.11 13.24 -3.92 0.45 1048 +1050 3 64.9 10.55 -3.92 0.45 1049 +1051 3 62.98 7.62 -3.92 0.45 1050 +1052 3 61.63 4.01 -4.9 0.45 1051 +1053 3 61.75 1.1 -4.9 0.45 1052 +1054 3 61.52 -0.7 -4.9 0.45 1053 +1055 3 61.52 -1.6 -4.9 0.45 1054 +1056 3 52.3 38.76 -3.92 0.73 1016 +1057 3 52.75 39.65 -3.92 0.73 1056 +1058 3 52.75 41.23 -3.92 0.675 1057 +1059 3 52.75 42.81 -3.92 0.675 1058 +1060 3 53.42 46.63 -3.92 0.675 1059 +1061 3 53.99 50 -3.92 0.675 1060 +1062 3 54.32 51.24 -3.92 0.675 1061 +1063 3 49.6 55.18 -3.92 0.505 1062 +1064 3 46.45 57.31 -3.92 0.505 1063 +1065 3 42.51 59.45 -3.92 0.505 1064 +1066 3 40.04 60.69 -3.92 0.505 1065 +1067 3 39.47 60.91 -3.92 0.505 1066 +1068 3 38.58 64.84 -3.92 0.395 1067 +1069 3 37.34 69.45 -3.92 0.395 1068 +1070 3 36.44 71.37 -2.94 0.395 1069 +1071 3 33.63 73.73 -3.92 0.395 1070 +1072 3 32.28 74.75 -3.92 0.395 1071 +1073 3 31.94 75.08 -3.92 0.395 1072 +1074 3 33.4 80.5 -3.92 0.335 1073 +1075 3 37.45 84.33 -3.92 0.335 1074 +1076 3 42.18 88.04 -2.94 0.28 1075 +1077 3 45.21 90.17 -2.94 0.28 1076 +1078 3 45.89 90.29 -2.94 0.28 1077 +1079 3 46.11 90.51 -2.94 0.28 1078 +1080 3 50.16 88.49 -2.94 0.28 1079 +1081 3 54.89 85.23 -2.94 0.28 1080 +1082 3 60.62 83.54 -2.94 0.28 1081 +1083 3 73.78 86.24 -2.94 0.28 1082 +1084 3 81.43 89.39 -2.94 0.28 1083 +1085 3 85.03 90.51 -2.94 0.28 1084 +1086 3 92.56 93.77 -2.94 0.28 1085 +1087 3 105.72 97.82 -2.94 0.28 1086 +1088 3 110 98.27 -2.94 0.28 1087 +1089 3 113.59 98.83 -2.94 0.28 1088 +1090 3 115.06 98.95 -2.94 0.28 1089 +1091 3 49.6 101.87 -2.94 0.28 1079 +1092 3 49.82 103.33 -2.94 0.28 1091 +1093 3 49.82 104.79 -2.94 0.28 1092 +1094 3 49.82 105.69 -2.94 0.28 1093 +1095 3 36.33 57.76 -3.92 0.45 1067 +1096 3 34.42 55.18 -3.92 0.45 1095 +1097 3 33.18 53.27 -3.92 0.45 1096 +1098 3 33.52 52.14 -3.92 0.45 1097 +1099 3 60.17 58.44 -3.92 0.62 1062 +1100 3 62.2 61.48 -3.92 0.62 1099 +1101 3 67.26 65.3 -3.92 0.62 1100 +1102 3 71.53 70.02 -3.92 0.62 1101 +1103 3 72.31 71.15 -3.92 0.62 1102 +1104 3 71.53 71.81 -3.92 0.395 1103 +1105 3 76.93 74.97 -3.92 0.62 1104 +1106 3 84.58 80.7 -3.92 0.62 1105 +1107 3 88.85 84.53 -2.94 0.62 1106 +1108 3 93.35 91.39 -2.94 0.62 1107 +1109 3 98.86 96.79 -2.94 0.62 1108 +1110 3 103.7 101.85 -2.94 0.62 1109 +1111 3 104.26 102.42 -2.94 0.62 1110 +1112 3 106.17 103.76 -2.94 0.395 1111 +1113 3 107.97 105.11 -2.94 0.395 1112 +1114 3 108.31 105.34 -2.94 0.395 1113 +1115 3 103.92 106.8 -2.94 0.505 1111 +1116 3 103.25 109.5 -2.94 0.505 1115 +1117 3 103.13 110.96 -2.94 0.505 1116 +1118 3 104.71 113.44 -3.92 0.505 1117 +1119 3 107.41 114.9 -3.92 0.505 1118 +1120 3 110.11 115.01 -3.92 0.505 1119 +1121 3 114.04 115.12 -3.92 0.505 1120 +1122 3 115.51 115.12 -3.92 0.505 1121 +1123 3 102.69 113.1 -2.94 0.45 1117 +1124 3 102.24 114.79 -2.94 0.335 1123 +1125 3 101.9 115.57 -2.94 0.335 1124 +1126 3 60.62 67.55 -3.92 0.56 1100 +1127 3 59.95 70.02 -3.92 0.56 1126 +1128 3 59.95 70.47 -3.92 0.56 1127 +1129 3 57.81 69.45 -3.92 0.335 1128 +1130 3 56.01 68.79 -3.92 0.335 1129 +1131 3 54.77 68.34 -3.92 0.335 1130 +1132 3 54.32 68.11 -3.92 0.335 1131 +1133 3 60.06 73.62 -2.94 0.505 1128 +1134 3 61.75 76.43 -2.94 0.505 1133 +1135 3 62.53 79.36 -2.94 0.505 1134 +1136 3 64.67 82.73 -2.94 0.505 1135 +1137 3 67.59 86.22 -2.94 0.505 1136 +1138 3 68.83 87.57 -2.94 0.505 1137 +1139 3 70.18 91.51 -2.94 0.505 1138 +1140 3 70.63 94.77 -2.94 0.505 1139 +1141 3 72.66 98.59 -2.94 0.505 1140 +1142 3 73.11 99.83 -2.94 0.505 1141 +1143 3 76.25 104.1 -2.94 0.505 1142 +1144 3 76.25 106.8 -2.94 0.505 1143 +1145 3 77.48 109.05 -3.92 0.505 1144 +1146 3 79.63 112.54 -3.92 0.505 1145 +1147 3 81.2 114.56 -3.92 0.505 1146 +1148 3 82.1 115.8 -3.92 0.505 1147 +1149 3 45.96 45.9 -3.92 0.335 1058 +1150 3 60.4 41.57 -3.92 0.62 1057 +1151 3 62.87 42.13 -3.92 0.62 1150 +1152 3 65.56 39.88 -3.92 0.45 1151 +1153 3 67.37 39.09 -3.92 0.45 1152 +1154 3 70.73 39.88 -3.92 0.45 1153 +1155 3 73.56 39.43 -3.92 0.45 1154 +1156 3 76.14 38.31 -3.92 0.45 1155 +1157 3 76.59 38.08 -3.92 0.45 1156 +1158 3 77.59 36.61 -3.92 0.28 1157 +1159 3 79.29 35.61 -3.92 0.28 1158 +1160 3 80.42 34.93 -3.92 0.28 1159 +1161 3 80.64 38.31 -3.92 0.505 1157 +1162 3 81.43 38.31 -3.92 0.505 1161 +1163 3 83.12 38.19 -3.92 0.395 1162 +1164 3 84.91 36.72 -3.92 0.395 1163 +1165 3 85.48 36.06 -3.92 0.395 1164 +1166 3 84.02 35.95 -3.92 0.395 1162 +1167 3 85.93 34.47 -3.92 0.395 1166 +1168 3 86.38 33.92 -3.92 0.395 1167 +1169 3 68.16 44.61 -3.92 0.675 1151 +1170 3 69.39 44.83 -3.92 0.675 1169 +1171 3 69.84 47.19 -3.92 0.335 1170 +1172 3 69.95 48.88 -3.92 0.335 1171 +1173 3 75.69 45.84 -3.92 0.73 1170 +1174 3 78.28 46.97 -3.92 0.675 1173 +1175 3 79.4 45.17 -2.94 0.335 1174 +1176 3 83.57 49.67 -3.92 0.675 1175 +1177 3 88.74 52.7 -3.92 0.675 1176 +1178 3 94.59 57.31 -3.92 0.62 1177 +1179 3 96.84 61.59 -3.92 0.62 1178 +1180 3 99.76 67.66 -2.94 0.56 1179 +1181 3 103.25 75.76 -2.94 0.56 1180 +1182 3 107.52 82.28 -3.92 0.56 1181 +1183 3 111.8 87.23 -3.92 0.56 1182 +1184 3 113.26 88.24 -3.92 0.56 1183 +1185 3 115.62 89.26 -3.92 0.56 1184 +1186 3 116.52 89.48 -3.92 0.56 1185 diff --git a/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc b/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc new file mode 100644 index 0000000..3a7b77c --- /dev/null +++ b/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc @@ -0,0 +1,3022 @@ +# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +1 1 0.0 0.0 0.0 8.88119 -1 +2 1 0.35 -8.83 -0.87 8.88119 1 +3 1 -0.35 8.83 0.87 8.88119 1 +4 3 0.67 -4.33 -2.18 2.165 1 +5 3 -0.09 -6.62 -2.34 1.84 4 +6 3 -1.76 -8.01 -2.31 1.405 5 +7 3 -2.97 -8.02 -2.2 1.405 6 +8 3 -3.39 -8.37 -2.2 1.405 7 +9 3 -3.48 -8.5 -2.2 1.405 8 +10 3 -3.53 -8.81 -3.1 1.19 9 +11 3 -3.61 -9.04 -3.55 1.19 10 +12 3 -4.27 -8.08 -3.52 0.11 11 +13 3 -5.31 -7.95 -3.18 0.11 12 +14 3 -5.47 -8.42 -3.21 0.54 13 +15 3 -6.69 -8.42 -3.11 0.54 14 +16 3 -7.0 -7.52 -2.98 0.54 15 +17 3 -8.21 -7.23 -2.84 0.54 16 +18 3 -8.66 -7.68 -2.85 0.54 17 +19 3 -9.28 -8.31 -2.85 0.54 18 +20 3 -9.73 -9.06 -2.88 0.54 19 +21 3 -10.03 -10.29 -2.97 0.54 20 +22 3 -10.03 -10.88 -3.03 0.54 21 +23 3 -10.18 -11.95 -3.12 0.54 22 +24 3 -10.63 -12.42 -3.13 0.54 23 +25 3 -10.94 -13.64 -3.22 0.54 24 +26 3 -11.39 -14.1 -3.22 0.54 25 +27 3 -11.68 -15.01 -3.28 0.54 26 +28 3 -12.22 -15.99 -4.24 0.65 27 +29 3 -12.53 -16.61 -4.26 0.65 28 +30 3 -12.98 -17.36 -4.31 0.65 29 +31 3 -13.66 -18.21 -5.16 0.54 30 +32 3 -14.88 -18.82 -5.11 0.54 31 +33 3 -16.85 -19.3 -4.97 0.54 32 +34 3 -17.61 -20.37 -5.0 0.54 33 +35 3 -17.76 -22.05 -5.16 0.54 34 +36 3 -17.6 -22.81 -5.25 0.54 35 +37 3 -17.44 -24.17 -5.39 0.54 36 +38 3 -17.74 -25.1 -5.45 0.54 37 +39 3 -19.12 -25.86 -5.4 0.54 38 +40 3 -20.94 -25.87 -5.24 0.54 39 +41 3 -22.15 -25.9 -5.05 0.54 40 +42 3 -22.3 -26.96 -5.14 0.54 41 +43 3 -22.29 -27.57 -5.19 0.54 42 +44 3 -22.44 -28.04 -5.22 0.54 43 +45 3 -22.94 -27.75 -6.06 0.435 44 +46 3 -23.25 -28.36 -6.09 0.435 45 +47 3 -23.56 -29.27 -6.23 0.435 46 +48 3 -24.05 -29.99 -6.72 0.435 47 +49 3 -24.86 -30.7 -7.31 0.435 48 +50 3 -26.08 -31.33 -7.26 0.435 49 +51 3 -27.75 -31.18 -7.09 0.435 50 +52 3 -29.32 -31.45 -7.5 0.435 51 +53 3 -30.27 -31.72 -7.89 0.435 52 +54 3 -31.81 -31.43 -7.79 0.435 53 +55 3 -33.73 -30.72 -8.68 0.435 54 +56 3 -34.98 -30.41 -8.84 0.435 55 +57 3 -35.25 -30.43 -10.1 0.54 56 +58 3 -36.17 -31.34 -10.26 0.54 57 +59 3 -37.55 -32.11 -10.29 0.54 58 +60 3 -38.19 -32.68 -10.73 0.54 59 +61 3 -38.5 -33.59 -10.86 0.54 60 +62 3 -39.6 -34.93 -11.27 0.54 61 +63 3 -40.35 -36.61 -11.37 0.54 62 +64 3 -41.27 -37.83 -11.48 0.54 63 +65 3 -41.72 -38.58 -11.59 0.54 64 +66 3 -42.19 -39.04 -11.66 0.54 65 +67 3 -42.37 -39.46 -11.98 0.54 66 +68 3 -42.4 -39.43 -12.36 0.54 67 +69 3 -43.94 -40.64 -12.57 0.54 68 +70 3 -45.25 -41.77 -13.61 0.54 69 +71 3 -46.49 -43.28 -13.86 0.54 70 +72 3 -47.71 -44.49 -13.96 0.54 71 +73 3 -48.47 -45.27 -13.96 0.54 72 +74 3 -49.24 -46.32 -14.14 0.54 73 +75 3 -50.18 -47.81 -14.57 0.54 74 +76 3 -52.32 -49.34 -14.68 0.54 75 +77 3 -53.07 -50.1 -14.68 0.54 76 +78 3 -53.41 -50.69 -15.09 0.54 77 +79 3 -53.87 -51.44 -15.19 0.54 78 +80 3 -54.81 -52.33 -15.5 0.54 79 +81 3 -56.05 -53.53 -15.8 0.54 80 +82 3 -57.73 -54.0 -15.77 0.54 81 +83 3 -59.85 -54.92 -15.66 0.54 82 +84 3 -61.23 -56.61 -15.78 0.54 83 +85 3 -62.89 -58.3 -15.79 0.54 84 +86 3 -66.39 -60.61 -15.69 0.54 85 +87 3 -67.76 -61.99 -15.7 0.54 86 +88 3 -68.97 -63.22 -15.7 0.54 87 +89 3 -71.85 -64.3 -15.55 0.54 88 +90 3 -73.99 -64.64 -15.38 0.54 89 +91 3 -75.81 -64.35 -15.19 0.54 90 +92 3 -79.65 -65.1 -15.35 0.54 91 +93 3 -82.24 -64.37 -15.04 0.54 92 +94 3 -84.53 -64.23 -14.82 0.54 93 +95 3 -86.41 -64.78 -15.39 0.54 94 +96 3 -88.69 -65.57 -15.26 0.54 95 +97 3 -90.98 -66.66 -15.15 0.54 96 +98 3 -92.87 -67.8 -16.07 0.54 97 +99 3 -93.53 -69.89 -16.73 0.54 98 +100 3 -95.82 -71.88 -16.79 0.54 99 +101 3 -96.87 -73.56 -16.87 0.54 100 +102 3 -97.85 -75.31 -17.77 0.54 101 +103 3 -98.47 -76.52 -17.99 0.54 102 +104 3 -98.16 -77.74 -18.06 0.54 103 +105 3 -98.09 -78.42 -17.38 0.54 104 +106 3 -97.89 -79.23 -16.87 0.54 105 +107 3 -98.75 -80.5 -16.54 0.54 106 +108 3 -99.36 -81.41 -16.57 0.54 107 +109 3 -99.32 -83.28 -16.31 0.54 108 +110 3 -100.2 -86.04 -16.34 0.54 109 +111 3 -99.59 -88.77 -16.67 0.54 110 +112 3 -99.27 -90.91 -16.82 0.54 111 +113 3 -98.62 -92.16 -16.55 0.54 112 +114 3 -98.46 -93.83 -16.73 0.54 113 +115 3 -98.58 -94.93 -16.45 0.54 114 +116 3 -98.4 -96.01 -16.42 0.54 115 +117 3 -98.69 -96.93 -16.4 0.54 116 +118 3 -22.3 -29.09 -5.42 0.54 44 +119 3 -21.83 -31.67 -5.72 0.54 118 +120 3 -20.61 -34.99 -6.22 0.54 119 +121 3 -19.89 -36.61 -6.91 0.54 120 +122 3 -19.46 -38.24 -7.56 0.54 121 +123 3 -19.16 -39.45 -7.78 0.54 122 +124 3 -18.65 -40.57 -7.25 0.54 123 +125 3 -17.05 -42.46 -6.82 0.54 124 +126 3 -16.58 -44.14 -6.97 0.54 125 +127 3 -16.87 -45.37 -6.98 0.54 126 +128 3 -16.66 -45.58 -6.26 0.54 127 +129 3 -17.25 -47.1 -6.35 0.54 128 +130 3 -18.32 -47.57 -6.3 0.54 129 +131 3 -19.05 -48.38 -6.01 0.54 130 +132 3 -20.1 -49.46 -5.87 0.54 131 +133 3 -20.55 -51.43 -6.02 0.54 132 +134 3 -21.15 -53.57 -6.17 0.54 133 +135 3 -22.35 -55.72 -6.2 0.54 134 +136 3 -23.41 -57.41 -6.27 0.54 135 +137 3 -24.16 -59.09 -6.36 0.54 136 +138 3 -25.52 -59.88 -6.16 0.54 137 +139 3 -26.42 -60.8 -6.08 0.54 138 +140 3 -27.46 -61.9 -5.8 0.54 139 +141 3 -28.2 -64.21 -5.88 0.54 140 +142 3 -28.5 -66.33 -6.07 0.54 141 +143 3 -29.72 -67.87 -6.1 0.54 142 +144 3 -31.08 -68.64 -6.05 0.54 143 +145 3 -32.76 -70.63 -6.09 0.54 144 +146 3 -33.19 -72.63 -6.16 0.54 145 +147 3 -33.8 -75.05 -6.34 0.54 146 +148 3 -33.71 -76.04 -5.62 0.54 147 +149 3 -35.03 -77.17 -6.74 0.54 148 +150 3 -36.24 -79.02 -6.8 0.54 149 +151 3 -37.19 -80.5 -7.25 0.54 150 +152 3 -37.41 -81.78 -8.26 0.54 151 +153 3 -37.85 -84.68 -8.5 0.54 152 +154 3 -38.77 -88.03 -8.81 0.54 153 +155 3 -38.91 -90.01 -9.0 0.54 154 +156 3 -39.06 -91.68 -9.15 0.54 155 +157 3 -38.76 -93.18 -9.47 0.54 156 +158 3 -38.8 -94.06 -9.93 0.54 157 +159 3 -39.48 -94.59 -10.83 0.54 158 +160 3 -41.17 -96.26 -10.99 0.54 159 +161 3 -41.54 -97.09 -11.87 0.54 160 +162 3 -41.81 -97.74 -13.11 0.54 161 +163 3 -41.84 -99.24 -11.97 0.54 162 +164 3 -42.03 -99.98 -10.67 0.54 163 +165 3 -41.98 -100.61 -10.44 0.54 164 +166 3 -42.73 -102.6 -10.48 0.54 165 +167 3 -42.57 -105.2 -10.68 0.54 166 +168 3 -42.71 -106.56 -10.8 0.54 167 +169 3 -43.6 -108.43 -10.59 0.54 168 +170 3 -44.18 -109.97 -10.46 0.54 169 +171 3 -44.24 -110.81 -9.71 0.54 170 +172 3 -44.24 -112.04 -9.68 0.54 171 +173 3 -44.52 -113.29 -9.54 0.54 172 +174 3 -44.93 -114.69 -9.33 0.54 173 +175 3 -44.89 -116.26 -9.04 0.54 174 +176 3 -44.68 -117.66 -8.75 0.54 175 +177 3 -44.39 -119.19 -8.84 0.54 176 +178 3 -43.91 -120.55 -9.02 0.54 177 +179 3 -43.89 -120.9 -8.69 0.54 178 +180 3 -42.63 -122.13 -8.62 0.54 179 +181 3 -41.35 -123.71 -8.14 0.54 180 +182 3 -40.56 -125.39 -8.29 0.54 181 +183 3 -39.95 -126.59 -8.46 0.54 182 +184 3 -39.34 -128.42 -8.63 0.54 183 +185 3 -38.71 -130.56 -8.81 0.54 184 +186 3 -38.07 -131.8 -8.62 0.54 185 +187 3 -37.6 -132.87 -8.68 0.54 186 +188 3 -37.59 -134.08 -8.74 0.54 187 +189 3 -37.59 -135.0 -8.83 0.54 188 +190 3 -37.43 -135.76 -8.92 0.54 189 +191 3 -36.82 -136.67 -9.06 0.54 190 +192 3 -36.05 -138.64 -9.32 0.54 191 +193 3 -35.9 -140.01 -9.47 0.54 192 +194 3 -36.34 -141.07 -9.54 0.54 193 +195 3 -37.05 -141.51 -9.36 0.435 194 +196 3 -37.96 -142.43 -9.36 0.435 195 +197 3 -39.64 -142.9 -9.25 0.435 196 +198 3 -41.44 -143.55 -9.01 0.435 197 +199 3 -42.34 -144.48 -8.86 0.435 198 +200 3 -43.11 -144.62 -8.95 0.435 199 +201 3 -43.6 -145.36 -9.28 0.435 200 +202 3 -43.94 -145.63 -9.65 0.435 201 +203 3 -44.28 -146.19 -10.13 0.435 202 +204 3 -44.99 -146.71 -11.25 0.435 203 +205 3 -45.66 -147.56 -11.88 0.435 204 +206 3 -45.84 -148.59 -12.34 0.435 205 +207 3 -46.13 -150.11 -12.46 0.435 206 +208 3 -46.59 -151.48 -12.62 0.435 207 +209 3 -46.59 -152.7 -12.74 0.435 208 +210 3 -46.42 -154.06 -12.89 0.435 209 +211 3 -46.6 -154.8 -13.25 0.435 210 +212 3 -46.15 -155.85 -13.47 0.435 211 +213 3 -45.85 -157.07 -13.61 0.435 212 +214 3 -46.02 -157.81 -13.9 0.435 213 +215 3 -46.02 -158.71 -14.14 0.435 214 +216 3 -46.22 -159.72 -14.67 0.435 215 +217 3 -46.53 -160.34 -14.78 0.435 216 +218 3 -46.83 -160.94 -14.81 0.435 217 +219 3 -46.99 -161.4 -14.84 0.435 218 +220 3 -47.04 -161.94 -15.64 0.435 219 +221 3 -47.65 -162.54 -15.73 0.435 220 +222 3 -48.11 -163.01 -15.73 0.435 221 +223 3 -48.42 -163.32 -15.73 0.435 222 +224 3 -48.62 -163.71 -16.28 0.435 223 +225 3 -48.31 -165.22 -16.53 0.435 224 +226 3 -47.25 -165.67 -16.67 0.435 225 +227 3 -3.29 -10.26 -4.74 1.19 10 +228 3 -2.54 -10.99 -5.1 1.08 227 +229 3 -1.93 -11.9 -5.24 0.865 228 +230 3 -1.81 -12.92 -5.81 0.65 229 +231 3 -1.21 -13.83 -5.95 0.65 230 +232 3 -1.2 -14.74 -6.04 0.65 231 +233 3 -1.8 -15.96 -6.11 0.65 232 +234 3 -2.26 -16.71 -6.22 0.65 233 +235 3 -3.79 -17.95 -6.19 0.65 234 +236 3 -4.84 -19.93 -6.3 0.65 235 +237 3 -5.14 -20.55 -6.33 0.435 236 +238 3 -6.2 -22.22 -6.39 0.435 237 +239 3 -6.34 -23.59 -6.51 0.435 238 +240 3 -5.58 -24.95 -6.72 0.435 239 +241 3 -4.67 -27.09 -7.01 0.435 240 +242 3 -4.2 -29.67 -7.3 0.435 241 +243 3 -4.2 -30.88 -7.42 0.435 242 +244 3 -3.89 -32.39 -7.6 0.435 243 +245 3 -2.46 -33.18 -8.94 0.435 244 +246 3 -1.39 -33.63 -9.08 0.435 245 +247 3 -0.03 -34.37 -9.35 0.435 246 +248 3 1.17 -35.88 -9.61 0.435 247 +249 3 2.25 -38.15 -9.94 0.435 248 +250 3 3.18 -40.28 -10.23 0.435 249 +251 3 3.48 -41.49 -10.37 0.435 250 +252 3 4.85 -42.85 -10.63 0.435 251 +253 3 6.49 -42.62 -11.29 0.435 252 +254 3 8.21 -43.42 -12.58 0.435 253 +255 3 9.59 -44.79 -11.18 0.435 254 +256 3 10.7 -45.29 -10.8 0.435 255 +257 3 11.5 -46.08 -10.51 0.435 256 +258 3 11.97 -47.16 -10.5 0.435 257 +259 3 13.08 -48.25 -10.26 0.435 258 +260 3 13.0 -48.78 -9.54 0.435 259 +261 3 12.87 -49.57 -9.46 0.435 260 +262 3 12.76 -50.06 -9.04 0.435 261 +263 3 12.82 -51.04 -8.45 0.435 262 +264 3 13.34 -52.46 -7.97 0.435 263 +265 3 13.53 -52.95 -7.73 0.435 264 +266 3 13.55 -53.89 -7.6 0.435 265 +267 3 13.56 -54.5 -7.58 0.435 266 +268 3 -4.18 -10.16 -2.3 0.755 9 +269 3 -5.4 -11.08 -2.28 0.65 268 +270 3 -6.46 -12.15 -2.28 0.65 269 +271 3 -7.06 -13.68 -2.38 0.65 270 +272 3 -7.51 -15.67 -2.45 0.65 271 +273 3 -7.34 -17.65 -2.66 0.65 272 +274 3 -6.43 -19.76 -2.95 0.65 273 +275 3 -5.66 -21.74 -3.21 0.65 274 +276 3 -5.04 -24.47 -3.53 0.65 275 +277 3 -4.42 -25.98 -3.75 0.65 276 +278 3 -4.72 -27.19 -3.83 0.65 277 +279 3 -5.34 -27.81 -3.84 0.65 278 +280 3 -6.55 -27.83 -3.72 0.65 279 +281 3 -7.47 -29.36 -3.79 0.65 280 +282 3 -7.71 -30.46 -3.88 0.65 281 +283 3 -7.85 -30.94 -2.1 0.435 282 +284 3 -8.31 -31.4 -2.1 0.435 283 +285 3 -8.76 -31.87 -2.1 0.435 284 +286 3 -9.26 -32.27 -2.63 0.435 285 +287 3 -9.8 -32.65 -3.44 0.435 286 +288 3 -10.28 -33.09 -3.67 0.435 287 +289 3 -10.55 -33.42 -3.44 0.435 288 +290 3 -10.84 -33.75 -3.23 0.435 289 +291 3 -10.83 -34.36 -3.22 0.435 290 +292 3 -10.5 -34.69 -3.06 0.435 291 +293 3 -9.99 -35.2 -2.47 0.435 292 +294 3 -9.77 -35.72 -1.86 0.435 293 +295 3 -8.83 -36.34 -1.86 0.435 294 +296 3 -8.98 -37.42 -1.86 0.435 295 +297 3 -9.13 -38.17 -1.92 0.435 296 +298 3 -9.44 -38.79 -1.95 0.435 297 +299 3 -10.19 -39.56 -1.89 0.435 298 +300 3 -10.33 -40.33 -1.88 0.435 299 +301 3 -10.62 -41.25 -1.87 0.435 300 +302 3 -10.93 -41.86 -1.9 0.435 301 +303 3 -11.04 -42.96 -1.61 0.435 302 +304 3 -10.29 -43.39 -3.53 0.435 303 +305 3 -10.28 -44.0 -3.52 0.435 304 +306 3 -7.61 -30.42 -3.89 0.54 282 +307 3 -6.54 -31.79 -4.11 0.54 306 +308 3 -5.85 -33.07 -3.47 0.54 307 +309 3 -6.0 -34.45 -3.59 0.54 308 +310 3 -7.37 -35.22 -3.55 0.54 309 +311 3 -7.21 -37.19 -3.75 0.54 310 +312 3 -6.22 -38.47 -4.87 0.54 311 +313 3 -5.61 -39.97 -5.07 0.54 312 +314 3 -6.21 -41.81 -5.21 0.54 313 +315 3 -5.85 -42.47 -4.77 0.435 314 +316 3 -5.24 -43.37 -4.91 0.435 315 +317 3 -4.62 -45.49 -5.17 0.435 316 +318 3 -4.17 -46.86 -5.35 0.435 317 +319 3 -3.56 -47.46 -5.47 0.435 318 +320 3 -2.5 -47.3 -5.55 0.435 319 +321 3 -1.73 -47.43 -5.72 0.435 320 +322 3 -1.12 -48.96 -5.92 0.435 321 +323 3 -1.58 -50.03 -5.98 0.435 322 +324 3 -1.42 -51.69 -6.15 0.435 323 +325 3 -0.66 -53.05 -6.36 0.435 324 +326 3 0.4 -54.4 -6.66 0.435 325 +327 3 1.17 -55.16 -6.81 0.435 326 +328 3 0.71 -56.23 -6.87 0.435 327 +329 3 0.33 -56.76 -7.79 0.435 328 +330 3 -0.32 -58.22 -8.39 0.435 329 +331 3 -1.38 -59.61 -8.44 0.435 330 +332 3 -1.83 -60.98 -8.53 0.435 331 +333 3 -1.82 -62.5 -8.67 0.435 332 +334 3 -1.82 -64.32 -8.86 0.435 333 +335 3 -1.2 -65.54 -9.03 0.435 334 +336 3 0.0 -66.74 -9.26 0.435 335 +337 3 0.47 -68.12 -9.43 0.435 336 +338 3 0.32 -68.57 -9.46 0.435 337 +339 3 0.01 -69.48 -9.53 0.435 338 +340 3 0.02 -70.4 -9.62 0.435 339 +341 3 0.78 -71.76 -9.82 0.435 340 +342 3 1.7 -72.97 -10.02 0.435 341 +343 3 2.45 -74.0 -10.42 0.435 342 +344 3 1.99 -75.37 -10.59 0.435 343 +345 3 1.98 -75.98 -10.65 0.435 344 +346 3 2.75 -77.03 -10.82 0.435 345 +347 3 3.06 -78.25 -10.97 0.435 346 +348 3 2.76 -78.86 -11.0 0.435 347 +349 3 2.15 -79.78 -11.03 0.435 348 +350 3 2.61 -81.14 -11.21 0.435 349 +351 3 3.98 -81.27 -11.35 0.435 350 +352 3 4.44 -81.73 -11.44 0.435 351 +353 3 4.9 -82.79 -11.58 0.435 352 +354 3 5.05 -84.17 -11.73 0.435 353 +355 3 5.11 -85.41 -13.06 0.435 354 +356 3 4.51 -86.03 -13.07 0.435 355 +357 3 4.05 -87.08 -13.13 0.435 356 +358 3 5.87 -87.99 -13.39 0.435 357 +359 3 6.94 -89.34 -13.62 0.435 358 +360 3 7.26 -89.66 -15.19 0.435 359 +361 3 7.41 -90.71 -15.31 0.435 360 +362 3 7.27 -91.78 -15.4 0.435 361 +363 3 6.96 -92.39 -15.43 0.435 362 +364 3 6.97 -93.61 -15.55 0.435 363 +365 3 7.89 -94.51 -15.72 0.435 364 +366 3 8.9 -95.81 -16.63 0.435 365 +367 3 9.5 -97.01 -16.87 0.435 366 +368 3 9.78 -97.89 -17.28 0.435 367 +369 3 10.05 -99.68 -17.87 0.435 368 +370 3 10.22 -101.04 -18.02 0.435 369 +371 3 11.12 -101.33 -18.2 0.435 370 +372 3 12.8 -101.77 -18.4 0.435 371 +373 3 13.56 -102.83 -18.57 0.435 372 +374 3 13.72 -104.5 -18.75 0.435 373 +375 3 14.47 -105.55 -19.0 0.435 374 +376 3 15.39 -106.77 -19.2 0.435 375 +377 3 16.61 -108.57 -19.48 0.435 376 +378 3 17.38 -110.24 -19.72 0.435 377 +379 3 18.45 -112.52 -20.04 0.435 378 +380 3 19.52 -114.78 -20.36 0.435 379 +381 3 21.03 -116.57 -20.9 0.435 380 +382 3 21.89 -118.02 -21.88 0.435 381 +383 3 22.81 -119.53 -22.12 0.435 382 +384 3 24.02 -120.73 -22.34 0.435 383 +385 3 25.54 -121.63 -22.57 0.435 384 +386 3 27.84 -123.58 -22.97 0.435 385 +387 3 29.06 -125.1 -23.23 0.435 386 +388 3 28.92 -127.99 -23.5 0.435 387 +389 3 29.37 -129.34 -23.68 0.435 388 +390 3 29.07 -130.27 -23.81 0.435 389 +391 3 30.9 -131.15 -24.06 0.435 390 +392 3 31.66 -132.83 -24.3 0.435 391 +393 3 32.58 -134.34 -24.53 0.435 392 +394 3 33.65 -135.38 -24.73 0.435 393 +395 3 33.96 -136.6 -24.88 0.435 394 +396 3 35.33 -138.86 -25.23 0.435 395 +397 3 35.84 -140.11 -25.48 0.435 396 +398 3 36.6 -141.17 -25.65 0.435 397 +399 3 37.52 -142.08 -25.82 0.435 398 +400 3 39.34 -142.96 -26.08 0.435 399 +401 3 40.03 -144.86 -27.15 0.435 400 +402 3 40.8 -146.82 -27.42 0.435 401 +403 3 42.11 -148.41 -28.45 0.435 402 +404 3 42.11 -149.32 -28.54 0.435 403 +405 3 42.07 -149.87 -29.12 0.435 404 +406 3 42.82 -151.24 -29.39 0.435 405 +407 3 44.05 -151.83 -29.57 0.435 406 +408 3 45.05 -152.2 -30.46 0.435 407 +409 3 45.07 -152.83 -31.95 0.435 408 +410 3 44.94 -153.0 -33.4 0.435 409 +411 3 45.09 -154.36 -33.54 0.435 410 +412 3 46.16 -156.02 -33.87 0.435 411 +413 3 47.23 -157.98 -34.17 0.435 412 +414 3 49.06 -160.71 -34.6 0.435 413 +415 3 49.67 -162.22 -34.8 0.435 414 +416 3 50.75 -162.66 -34.94 0.435 415 +417 3 51.97 -163.86 -35.17 0.435 416 +418 3 52.73 -165.53 -35.49 0.435 417 +419 3 53.95 -166.73 -35.79 0.435 418 +420 3 56.12 -167.07 -37.08 0.435 419 +421 3 57.77 -167.77 -37.76 0.435 420 +422 3 59.29 -169.59 -38.07 0.435 421 +423 3 60.21 -170.79 -38.27 0.435 422 +424 3 61.11 -171.07 -38.53 0.435 423 +425 3 61.46 -172.32 -39.9 0.435 424 +426 3 61.73 -172.88 -40.37 0.435 425 +427 3 61.98 -174.03 -41.25 0.435 426 +428 3 62.36 -175.0 -42.21 0.435 427 +429 3 62.89 -176.75 -43.26 0.435 428 +430 3 63.65 -178.11 -43.54 0.435 429 +431 3 64.27 -179.61 -43.75 0.435 430 +432 3 64.73 -180.38 -43.87 0.435 431 +433 3 65.79 -181.11 -44.04 0.435 432 +434 3 66.86 -181.57 -44.18 0.435 433 +435 3 68.38 -180.94 -44.26 0.435 434 +436 3 68.69 -180.64 -44.26 0.435 435 +437 3 68.53 -180.47 -46.04 0.435 436 +438 3 68.0 -179.64 -46.59 0.435 437 +439 3 -7.29 -42.58 -5.25 0.435 314 +440 3 -8.04 -43.04 -5.22 0.435 439 +441 3 -9.1 -45.63 -5.38 0.435 440 +442 3 -7.72 -48.2 -5.76 0.435 441 +443 3 -7.1 -50.64 -6.05 0.435 442 +444 3 -7.7 -51.86 -6.05 0.435 443 +445 3 -9.02 -52.67 -5.62 0.435 444 +446 3 -9.47 -53.15 -5.47 0.435 445 +447 3 -10.07 -53.77 -5.41 0.435 446 +448 3 -9.61 -54.83 -5.55 0.435 447 +449 3 -9.46 -55.59 -5.64 0.435 448 +450 3 -10.07 -56.21 -5.65 0.435 449 +451 3 -11.44 -56.36 -5.54 0.435 450 +452 3 -12.35 -57.28 -5.54 0.435 451 +453 3 -12.49 -57.74 -5.57 0.435 452 +454 3 -12.6 -58.26 -5.08 0.435 453 +455 3 -12.59 -59.47 -5.19 0.435 454 +456 3 -12.13 -61.45 -5.36 0.435 455 +457 3 -12.12 -62.66 -5.48 0.435 456 +458 3 -13.18 -63.13 -5.43 0.435 457 +459 3 -13.79 -64.05 -5.46 0.435 458 +460 3 -14.7 -65.88 -5.56 0.435 459 +461 3 -14.54 -67.86 -5.76 0.435 460 +462 3 -14.05 -69.56 -5.67 0.435 461 +463 3 -13.28 -70.32 -5.73 0.435 462 +464 3 -12.67 -71.52 -5.92 0.435 463 +465 3 -12.66 -72.75 -6.03 0.435 464 +466 3 -12.95 -73.97 -6.05 0.435 465 +467 3 -12.96 -75.19 -6.17 0.435 466 +468 3 -13.05 -75.7 -5.67 0.435 467 +469 3 -13.36 -76.3 -5.71 0.435 468 +470 3 -13.35 -76.61 -5.67 0.435 469 +471 3 -13.8 -77.68 -5.73 0.435 470 +472 3 -4.13 -8.82 -3.75 0.11 8 +473 3 -5.04 -9.14 -3.56 0.11 472 +474 3 -5.17 -9.91 -3.62 0.11 473 +475 3 -5.4 -9.38 -4.23 0.65 474 +476 3 -6.03 -9.39 -4.32 0.65 475 +477 3 -7.57 -9.66 -4.59 0.65 476 +478 3 -9.11 -9.96 -4.69 0.65 477 +479 3 -11.24 -10.59 -4.56 0.65 478 +480 3 -13.07 -11.2 -4.52 0.65 479 +481 3 -14.78 -12.25 -4.85 0.65 480 +482 3 -15.69 -13.17 -4.93 0.54 481 +483 3 -16.79 -14.8 -5.44 0.54 482 +484 3 -17.3 -15.82 -6.03 0.54 483 +485 3 -17.49 -16.53 -6.61 0.54 484 +486 3 -18.03 -16.92 -7.43 0.54 485 +487 3 -18.49 -17.35 -7.58 0.54 486 +488 3 -20.18 -16.91 -7.45 0.54 487 +489 3 -22.02 -17.51 -7.64 0.54 488 +490 3 -23.12 -17.93 -7.96 0.54 489 +491 3 -24.34 -18.55 -7.9 0.54 490 +492 3 -25.12 -18.67 -9.82 0.54 491 +493 3 -25.19 -19.23 -10.54 0.54 492 +494 3 -25.88 -18.84 -11.35 0.54 493 +495 3 -27.71 -17.94 -11.09 0.54 494 +496 3 -28.76 -18.42 -10.97 0.54 495 +497 3 -29.45 -18.34 -11.73 0.54 496 +498 3 -31.51 -17.81 -12.39 0.54 497 +499 3 -33.03 -18.12 -12.35 0.54 498 +500 3 -35.21 -17.8 -12.65 0.54 499 +501 3 -37.66 -17.18 -12.52 0.54 500 +502 3 -40.65 -16.07 -13.04 0.54 501 +503 3 -41.66 -16.27 -14.1 0.54 502 +504 3 -43.19 -16.58 -14.07 0.54 503 +505 3 -46.23 -17.82 -13.91 0.54 504 +506 3 -49.43 -18.6 -13.84 0.54 505 +507 3 -52.13 -18.96 -14.91 0.54 506 +508 3 -54.57 -19.28 -14.71 0.54 507 +509 3 -57.24 -18.15 -15.33 0.54 508 +510 3 -60.0 -18.47 -15.2 0.54 509 +511 3 -60.98 -18.7 -15.96 0.54 510 +512 3 -61.98 -18.92 -16.94 0.54 511 +513 3 -63.16 -19.26 -18.08 0.54 512 +514 3 -63.47 -19.57 -18.16 0.54 513 +515 3 -64.11 -20.15 -18.53 0.54 514 +516 3 -64.76 -20.11 -18.92 0.54 515 +517 3 -65.52 -20.87 -18.92 0.54 516 +518 3 -65.65 -21.05 -20.29 0.54 517 +519 3 -65.8 -21.49 -20.48 0.54 518 +520 3 -66.24 -21.66 -21.89 0.54 519 +521 3 -66.09 -21.81 -21.84 0.54 520 +522 3 -65.97 -21.94 -22.24 0.54 521 +523 3 -66.03 -21.87 -22.91 0.54 522 +524 3 -65.79 -22.1 -23.72 0.54 523 +525 3 -65.66 -22.21 -24.11 0.54 524 +526 3 -65.56 -22.92 -24.72 0.54 525 +527 3 -65.5 -23.29 -25.67 0.54 526 +528 3 -65.7 -23.68 -26.37 0.54 527 +529 3 -65.88 -24.11 -26.69 0.54 528 +530 3 -65.95 -24.34 -27.47 0.54 529 +531 3 -66.0 -24.89 -28.04 0.54 530 +532 3 -66.14 -24.75 -29.53 0.54 531 +533 3 -66.17 -25.01 -30.08 0.54 532 +534 3 -66.41 -25.36 -31.07 0.54 533 +535 3 -66.47 -25.93 -31.66 0.54 534 +536 3 -67.13 -26.47 -32.33 0.54 535 +537 3 -67.32 -26.9 -32.73 0.54 536 +538 3 -67.71 -27.11 -33.62 0.54 537 +539 3 -68.11 -27.31 -34.74 0.54 538 +540 3 -68.29 -27.74 -35.07 0.54 539 +541 3 -68.48 -28.16 -35.55 0.54 540 +542 3 -68.82 -29.04 -35.97 0.54 541 +543 3 -65.85 -20.54 -20.83 0.54 517 +544 3 -66.61 -20.69 -20.77 0.54 543 +545 3 -68.01 -20.83 -20.97 0.54 544 +546 3 -69.3 -20.45 -21.72 0.54 545 +547 3 -71.02 -20.27 -21.99 0.54 546 +548 3 -71.91 -20.3 -23.28 0.54 547 +549 3 -73.47 -20.56 -23.68 0.54 548 +550 3 -75.26 -20.3 -24.77 0.54 549 +551 3 -77.1 -20.02 -24.66 0.54 550 +552 3 -78.96 -19.68 -24.82 0.54 551 +553 3 -80.73 -19.46 -25.63 0.54 552 +554 3 -82.71 -20.23 -25.59 0.54 553 +555 3 -84.53 -20.25 -25.42 0.54 554 +556 3 -86.26 -19.76 -25.75 0.54 555 +557 3 -87.79 -18.56 -25.49 0.54 556 +558 3 -89.16 -17.5 -25.26 0.54 557 +559 3 -90.21 -17.06 -25.04 0.54 558 +560 3 -92.19 -16.62 -24.81 0.54 559 +561 3 -93.6 -16.14 -25.02 0.54 560 +562 3 -94.25 -15.81 -25.3 0.54 561 +563 3 -96.38 -14.92 -25.02 0.54 562 +564 3 -24.5 -18.09 -7.92 0.54 491 +565 3 -26.66 -18.39 -8.06 0.54 564 +566 3 -28.03 -19.16 -8.08 0.54 565 +567 3 -29.48 -19.84 -8.99 0.54 566 +568 3 -29.94 -20.9 -9.13 0.54 567 +569 3 -30.25 -21.2 -9.13 0.54 568 +570 3 -31.18 -21.5 -7.63 0.54 569 +571 3 -32.1 -21.52 -7.55 0.54 570 +572 3 -34.69 -21.09 -7.28 0.54 571 +573 3 -38.04 -20.2 -6.96 0.54 572 +574 3 -40.66 -19.74 -6.9 0.54 573 +575 3 -41.28 -20.34 -7.05 0.54 574 +576 3 -43.0 -20.75 -7.53 0.54 575 +577 3 -43.16 -20.9 -7.68 0.54 576 +578 3 -43.07 -21.29 -6.75 0.54 577 +579 3 -43.92 -21.67 -5.95 0.54 578 +580 3 -45.55 -22.49 -5.42 0.54 579 +581 3 -47.53 -23.89 -5.38 0.54 580 +582 3 -49.35 -23.9 -5.14 0.54 581 +583 3 -52.08 -25.15 -5.0 0.54 582 +584 3 -53.9 -26.08 -4.92 0.54 583 +585 3 -55.41 -27.31 -4.77 0.54 584 +586 3 -57.2 -27.98 -4.36 0.54 585 +587 3 -59.45 -28.48 -3.9 0.54 586 +588 3 -61.09 -28.99 -3.41 0.54 587 +589 3 -63.5 -29.65 -2.96 0.54 588 +590 3 -65.78 -29.51 -2.73 0.54 589 +591 3 -69.56 -29.72 -2.18 0.54 590 +592 3 -71.53 -29.6 -1.84 0.54 591 +593 3 -73.15 -29.53 -0.99 0.54 592 +594 3 -73.43 -30.78 -0.87 0.54 593 +595 3 -74.0 -31.43 -0.5 0.54 594 +596 3 -76.57 -30.69 -0.12 0.54 595 +597 3 -79.45 -31.49 0.14 0.54 596 +598 3 -81.74 -31.97 0.31 0.54 597 +599 3 -84.31 -32.46 0.65 0.54 598 +600 3 -85.67 -33.25 0.84 0.54 599 +601 3 -87.01 -33.45 1.25 0.54 600 +602 3 -89.27 -33.94 1.64 0.54 601 +603 3 -90.76 -34.9 1.98 0.54 602 +604 3 -92.58 -36.14 2.12 0.54 603 +605 3 -93.74 -36.8 2.6 0.54 604 +606 3 -96.02 -37.9 2.78 0.54 605 +607 3 -96.78 -38.67 2.78 0.54 606 +608 3 -30.41 -22.58 -9.26 0.54 569 +609 3 -31.31 -24.71 -9.38 0.54 608 +610 3 -32.21 -26.85 -9.5 0.54 609 +611 3 -32.21 -28.06 -9.63 0.54 610 +612 3 -32.23 -28.94 -10.01 0.54 611 +613 3 -32.43 -29.97 -10.55 0.54 612 +614 3 -33.03 -31.18 -10.68 0.54 613 +615 3 -33.72 -32.01 -11.69 0.54 614 +616 3 -34.8 -32.47 -11.71 0.54 615 +617 3 -35.85 -33.55 -11.71 0.54 616 +618 3 -36.47 -34.77 -11.77 0.54 617 +619 3 -36.15 -36.29 -11.95 0.54 618 +620 3 -36.42 -36.55 -11.96 0.54 619 +621 3 -36.57 -37.32 -10.35 0.65 620 +622 3 -36.91 -37.59 -10.73 0.65 621 +623 3 -37.01 -37.49 -11.77 0.65 622 +624 3 -37.15 -37.96 -10.06 0.65 623 +625 3 -37.58 -38.45 -9.76 0.65 624 +626 3 -38.43 -38.82 -9.11 0.65 625 +627 3 -38.88 -39.29 -9.04 0.65 626 +628 3 -39.78 -39.01 -8.85 0.65 627 +629 3 -40.55 -38.86 -8.77 0.54 628 +630 3 -41.77 -38.87 -8.65 0.54 629 +631 3 -42.51 -39.64 -8.51 0.54 630 +632 3 -43.42 -40.58 -8.45 0.54 631 +633 3 -43.39 -42.11 -8.45 0.54 632 +634 3 -43.69 -42.74 -8.4 0.54 633 +635 3 -44.43 -43.52 -8.19 0.54 634 +636 3 -45.94 -43.85 -8.0 0.54 635 +637 3 -47.62 -43.72 -7.76 0.54 636 +638 3 -48.63 -44.23 -7.27 0.54 637 +639 3 -49.35 -45.04 -6.76 0.54 638 +640 3 -50.21 -45.4 -6.26 0.54 639 +641 3 -50.79 -46.05 -5.96 0.54 640 +642 3 -51.85 -47.74 -5.94 0.54 641 +643 3 -53.06 -48.36 -5.9 0.54 642 +644 3 -54.11 -49.45 -5.69 0.54 643 +645 3 -55.62 -50.38 -5.63 0.54 644 +646 3 -56.5 -51.33 -5.34 0.54 645 +647 3 -57.4 -51.64 -5.21 0.54 646 +648 3 -59.23 -50.75 -4.95 0.54 647 +649 3 -59.97 -51.54 -4.75 0.54 648 +650 3 -61.03 -52.62 -4.67 0.54 649 +651 3 -62.84 -53.27 -4.34 0.54 650 +652 3 -63.74 -54.5 -4.3 0.54 651 +653 3 -64.65 -55.42 -4.31 0.54 652 +654 3 -65.71 -55.88 -4.26 0.54 653 +655 3 -67.38 -55.75 -4.09 0.54 654 +656 3 -69.97 -56.54 -3.92 0.54 655 +657 3 -71.02 -58.52 -4.02 0.54 656 +658 3 -71.77 -59.29 -3.96 0.54 657 +659 3 -71.92 -60.98 -4.11 0.54 658 +660 3 -72.07 -62.04 -4.19 0.54 659 +661 3 -72.51 -62.82 -4.0 0.54 660 +662 3 -74.79 -62.7 -3.7 0.54 661 +663 3 -76.29 -63.03 -3.52 0.54 662 +664 3 -76.89 -63.65 -3.38 0.54 663 +665 3 -77.75 -64.63 -2.87 0.54 664 +666 3 -78.35 -65.25 -2.79 0.54 665 +667 3 -79.26 -66.17 -2.79 0.54 666 +668 3 -80.78 -66.49 -2.61 0.54 667 +669 3 -81.84 -67.57 -2.63 0.54 668 +670 3 -82.9 -68.64 -2.63 0.54 669 +671 3 -85.03 -68.97 -2.46 0.54 670 +672 3 -86.1 -70.04 -2.47 0.54 671 +673 3 -87.15 -70.52 -2.34 0.54 672 +674 3 -87.87 -71.62 -2.08 0.54 673 +675 3 -88.17 -71.94 -1.93 0.54 674 +676 3 -88.62 -72.4 -1.93 0.54 675 +677 3 -89.21 -73.02 -1.87 0.54 676 +678 3 -90.59 -73.18 -1.75 0.54 677 +679 3 -92.27 -73.35 -1.62 0.54 678 +680 3 -93.03 -74.13 -1.63 0.54 679 +681 3 -93.63 -74.73 -1.63 0.54 680 +682 3 -94.37 -75.52 -1.49 0.54 681 +683 3 -94.98 -76.74 -1.47 0.54 682 +684 3 -95.28 -77.66 -1.53 0.54 683 +685 3 -95.57 -78.28 -1.49 0.54 684 +686 3 -96.18 -79.2 -1.53 0.54 685 +687 3 -96.63 -79.96 -1.56 0.54 686 +688 3 -98.31 -79.81 -1.39 0.54 687 +689 3 -99.52 -79.83 -1.28 0.54 688 +690 3 -100.5 -80.4 -0.26 0.65 689 +691 3 -101.37 -81.06 0.2 0.65 690 +692 3 -101.93 -81.71 0.64 0.65 691 +693 3 -104.5 -82.22 1.12 0.65 692 +694 3 -107.38 -82.71 1.34 0.65 693 +695 3 -108.58 -83.33 1.48 0.65 694 +696 3 -110.26 -84.42 1.53 0.435 695 +697 3 -112.24 -84.59 1.69 0.435 696 +698 3 -113.74 -84.92 1.94 0.435 697 +699 3 -115.1 -86.3 2.09 0.435 698 +700 3 -115.4 -86.62 2.09 0.65 699 +701 3 -116.47 -87.09 2.14 0.65 700 +702 3 -117.67 -88.32 2.2 0.65 701 +703 3 -118.11 -89.99 2.08 0.65 702 +704 3 -117.51 -90.91 1.93 0.65 703 +705 3 -116.44 -91.96 1.81 0.65 704 +706 3 -116.38 -93.84 2.08 0.65 705 +707 3 -116.38 -94.75 2.06 0.65 706 +708 3 -116.66 -95.39 2.17 0.65 707 +709 3 -116.82 -95.84 2.22 0.65 708 +710 3 -117.38 -95.88 2.65 0.65 709 +711 3 -117.21 -97.57 2.55 0.65 710 +712 3 -117.31 -98.69 3.06 0.65 711 +713 3 -117.87 -99.35 3.56 0.65 712 +714 3 -118.31 -99.82 3.64 0.65 713 +715 3 -119.48 -99.89 4.34 0.65 714 +716 3 -119.79 -100.19 4.34 0.65 715 +717 3 -120.37 -100.84 4.64 0.65 716 +718 3 -121.26 -101.77 4.78 0.65 717 +719 3 -121.57 -102.09 4.78 0.65 718 +720 3 -122.02 -102.54 4.78 0.65 719 +721 3 -123.54 -102.26 5.02 0.65 720 +722 3 -124.3 -102.42 5.07 0.65 721 +723 3 -124.59 -102.74 5.14 0.65 722 +724 3 -124.74 -103.2 5.11 0.65 723 +725 3 -36.35 -37.31 -10.9 0.54 620 +726 3 -35.82 -37.83 -10.25 0.54 725 +727 3 -35.54 -38.11 -10.45 0.54 726 +728 3 -35.25 -38.41 -9.06 0.54 727 +729 3 -34.88 -38.78 -8.38 0.54 728 +730 3 -34.45 -39.82 -7.17 0.54 729 +731 3 -34.43 -40.75 -7.11 0.54 730 +732 3 -34.99 -42.63 -6.71 0.54 731 +733 3 -35.37 -44.07 -6.05 0.54 732 +734 3 -35.66 -44.7 -5.94 0.54 733 +735 3 -35.61 -45.35 -5.55 0.54 734 +736 3 -35.72 -46.45 -5.27 0.54 735 +737 3 -36.02 -47.07 -5.22 0.54 736 +738 3 -36.42 -47.6 -4.63 0.54 737 +739 3 -36.87 -48.68 -4.55 0.54 738 +740 3 -37.46 -49.3 -4.4 0.54 739 +741 3 -37.74 -49.94 -4.22 0.54 740 +742 3 -38.08 -51.13 -3.09 0.54 741 +743 3 -37.89 -52.21 -2.84 0.54 742 +744 3 -38.14 -53.2 -2.31 0.54 743 +745 3 -38.38 -54.17 -1.7 0.54 744 +746 3 -38.36 -55.11 -1.64 0.54 745 +747 3 -38.5 -55.57 -1.52 0.54 746 +748 3 -38.49 -55.89 -1.4 0.54 747 +749 3 -38.75 -56.54 -1.06 0.54 748 +750 3 -39.46 -57.36 -0.54 0.54 749 +751 3 -40.96 -57.7 -0.14 0.54 750 +752 3 -42.01 -57.87 0.0 0.54 751 +753 3 -42.45 -58.35 0.23 0.54 752 +754 3 -43.05 -58.98 0.29 0.54 753 +755 3 6.7 -3.75 -5.33 0.865 1 +756 3 7.16 -4.21 -5.41 0.865 755 +757 3 8.22 -4.04 -5.49 0.865 756 +758 3 9.44 -4.63 -5.66 0.865 757 +759 3 10.51 -5.08 -5.81 0.865 758 +760 3 11.58 -6.45 -6.04 0.865 759 +761 3 12.35 -7.2 -6.18 0.54 760 +762 3 14.62 -7.02 -6.37 0.54 761 +763 3 16.16 -7.01 -6.52 0.54 762 +764 3 16.73 -7.29 -5.23 0.54 763 +765 3 17.34 -7.28 -5.29 0.54 764 +766 3 18.42 -6.85 -3.46 0.54 765 +767 3 19.63 -5.01 -3.39 0.54 766 +768 3 20.89 -4.13 -4.55 0.54 767 +769 3 22.56 -3.66 -4.66 0.54 768 +770 3 23.48 -3.35 -4.72 0.54 769 +771 3 24.39 -2.42 -4.71 0.54 770 +772 3 25.0 -1.82 -4.71 0.54 771 +773 3 27.48 -1.23 -6.0 0.54 772 +774 3 29.0 -1.51 -6.17 0.54 773 +775 3 29.91 -0.59 -6.17 0.54 774 +776 3 31.13 0.63 -6.16 0.54 775 +777 3 32.73 1.79 -6.95 0.54 776 +778 3 34.85 3.33 -7.0 0.54 777 +779 3 36.38 4.25 -7.05 0.54 778 +780 3 39.25 5.95 -7.15 0.54 779 +781 3 41.7 6.88 -7.28 0.54 780 +782 3 44.17 7.47 -8.52 0.54 781 +783 3 45.54 7.95 -8.75 0.54 782 +784 3 46.67 8.34 -7.98 0.54 783 +785 3 48.22 8.32 -7.82 0.54 784 +786 3 49.47 8.61 -7.53 0.54 785 +787 3 50.45 8.24 -6.98 0.54 786 +788 3 52.97 7.87 -6.34 0.54 787 +789 3 54.85 8.43 -5.78 0.54 788 +790 3 56.74 8.68 -5.18 0.54 789 +791 3 58.14 9.43 -5.0 0.54 790 +792 3 59.39 9.7 -4.63 0.54 791 +793 3 60.79 10.44 -4.32 0.54 792 +794 3 62.66 10.41 -4.04 0.54 793 +795 3 65.9 10.85 -3.76 0.54 794 +796 3 18.25 -7.88 -5.43 0.54 765 +797 3 19.2 -8.81 -5.31 0.54 796 +798 3 19.5 -10.04 -5.37 0.54 797 +799 3 19.68 -10.81 -5.32 0.54 798 +800 3 21.72 -13.13 -5.06 0.54 799 +801 3 23.56 -14.94 -5.4 0.54 800 +802 3 24.81 -16.17 -5.41 0.54 801 +803 3 26.03 -18.3 -5.59 0.54 802 +804 3 26.38 -18.96 -5.23 0.54 803 +805 3 26.56 -19.43 -5.06 0.54 804 +806 3 26.58 -20.67 -5.03 0.54 805 +807 3 26.88 -21.57 -5.14 0.54 806 +808 3 27.2 -22.79 -5.22 0.54 807 +809 3 27.99 -23.57 -5.13 0.54 808 +810 3 29.55 -24.49 -4.99 0.54 809 +811 3 31.08 -24.2 -5.03 0.54 810 +812 3 33.23 -23.6 -4.79 0.54 811 +813 3 34.92 -24.35 -4.94 0.54 812 +814 3 36.3 -25.12 -4.99 0.54 813 +815 3 37.35 -25.55 -5.28 0.54 814 +816 3 38.39 -25.36 -5.66 0.54 815 +817 3 39.69 -25.1 -6.6 0.54 816 +818 3 41.21 -25.7 -6.8 0.54 817 +819 3 41.11 -26.5 -8.07 0.435 818 +820 3 41.28 -26.98 -7.9 0.435 819 +821 3 41.37 -27.36 -8.7 0.435 820 +822 3 41.43 -27.72 -9.65 0.435 821 +823 3 41.51 -28.11 -10.53 0.435 822 +824 3 41.7 -28.58 -11.96 0.435 823 +825 3 43.52 -30.38 -12.38 0.435 824 +826 3 44.59 -31.74 -12.61 0.435 825 +827 3 45.81 -34.47 -13.0 0.435 826 +828 3 48.56 -36.26 -13.42 0.435 827 +829 3 49.79 -38.08 -13.71 0.435 828 +830 3 50.69 -39.29 -13.91 0.435 829 +831 3 50.1 -40.51 -13.97 0.435 830 +832 3 47.97 -41.44 -13.87 0.435 831 +833 3 47.06 -42.66 -13.91 0.435 832 +834 3 47.67 -44.48 -14.14 0.435 833 +835 3 49.35 -44.92 -14.33 0.435 834 +836 3 50.37 -45.02 -14.96 0.435 835 +837 3 50.05 -46.22 -15.28 0.435 836 +838 3 49.9 -47.27 -15.45 0.435 837 +839 3 49.75 -49.25 -15.62 0.435 838 +840 3 49.75 -50.47 -15.74 0.435 839 +841 3 49.59 -51.52 -15.98 0.435 840 +842 3 49.53 -52.98 -16.73 0.435 841 +843 3 49.98 -54.33 -17.05 0.435 842 +844 3 50.87 -55.81 -17.58 0.435 843 +845 3 51.79 -57.63 -17.85 0.435 844 +846 3 52.1 -59.75 -18.15 0.435 845 +847 3 52.26 -62.03 -18.38 0.435 846 +848 3 52.85 -62.92 -18.67 0.435 847 +849 3 53.77 -63.52 -18.91 0.435 848 +850 3 54.58 -65.83 -20.41 0.435 849 +851 3 54.57 -67.64 -20.66 0.435 850 +852 3 54.7 -69.58 -21.25 0.435 851 +853 3 54.93 -71.32 -22.26 0.435 852 +854 3 56.08 -72.45 -23.31 0.435 853 +855 3 57.4 -74.07 -24.12 0.435 854 +856 3 58.83 -75.75 -25.63 0.435 855 +857 3 61.87 -78.15 -26.21 0.435 856 +858 3 63.91 -79.24 -27.57 0.435 857 +859 3 66.44 -81.15 -28.52 0.435 858 +860 3 67.97 -82.65 -28.87 0.435 859 +861 3 68.9 -84.76 -29.17 0.435 860 +862 3 70.27 -86.12 -29.43 0.435 861 +863 3 72.7 -86.41 -29.68 0.435 862 +864 3 74.37 -87.44 -30.09 0.435 863 +865 3 76.32 -89.68 -30.79 0.435 864 +866 3 77.64 -91.58 -31.71 0.435 865 +867 3 77.81 -92.34 -33.31 0.435 866 +868 3 78.38 -93.21 -33.98 0.435 867 +869 3 79.18 -94.29 -35.44 0.435 868 +870 3 80.02 -95.42 -36.38 0.435 869 +871 3 79.7 -97.22 -36.84 0.435 870 +872 3 79.68 -100.23 -37.49 0.435 871 +873 3 81.27 -104.22 -39.09 0.435 872 +874 3 82.94 -106.47 -39.54 0.435 873 +875 3 84.3 -108.12 -39.98 0.435 874 +876 3 84.22 -110.15 -41.09 0.435 875 +877 3 83.92 -111.99 -41.3 0.435 876 +878 3 83.01 -114.72 -41.57 0.435 877 +879 3 83.16 -115.79 -41.69 0.435 878 +880 3 84.18 -117.08 -42.58 0.435 879 +881 3 85.78 -118.66 -43.64 0.435 880 +882 3 86.0 -120.08 -44.85 0.435 881 +883 3 86.26 -120.62 -45.54 0.435 882 +884 3 87.14 -121.81 -45.96 0.435 883 +885 3 88.82 -122.26 -46.16 0.435 884 +886 3 89.68 -124.0 -47.16 0.435 885 +887 3 89.84 -126.28 -47.4 0.435 886 +888 3 91.66 -128.08 -47.83 0.435 887 +889 3 93.26 -128.44 -48.84 0.435 888 +890 3 94.76 -128.1 -49.18 0.435 889 +891 3 95.21 -128.56 -49.26 0.435 890 +892 3 41.61 -25.79 -7.52 0.54 818 +893 3 44.26 -26.59 -8.82 0.54 892 +894 3 46.54 -26.4 -9.01 0.54 893 +895 3 48.66 -26.67 -9.47 0.54 894 +896 3 50.33 -27.72 -9.72 0.54 895 +897 3 52.09 -28.24 -10.61 0.54 896 +898 3 54.16 -29.07 -11.64 0.54 897 +899 3 55.53 -29.2 -11.78 0.54 898 +900 3 56.54 -30.2 -10.99 0.54 899 +901 3 58.49 -30.93 -9.81 0.54 900 +902 3 60.79 -32.89 -10.21 0.54 901 +903 3 63.02 -34.5 -9.37 0.54 902 +904 3 65.02 -35.86 -9.6 0.54 903 +905 3 66.69 -37.83 -9.95 0.54 904 +906 3 67.76 -39.18 -10.18 0.54 905 +907 3 69.76 -41.14 -10.55 0.54 906 +908 3 71.64 -42.09 -10.14 0.54 907 +909 3 72.86 -43.0 -10.35 0.54 908 +910 3 73.48 -43.9 -10.49 0.54 909 +911 4 -2.36 9.28 -0.57 4.11 1 +912 4 -2.99 13.54 -0.1 3.14 911 +913 4 -3.77 16.72 0.27 2.49 912 +914 4 -4.07 19.45 0.57 1.73 913 +915 4 -4.39 21.59 0.8 1.515 914 +916 4 -5.0 23.4 1.12 1.405 915 +917 4 -5.16 25.07 1.3 1.405 916 +918 4 -5.16 26.28 1.42 1.405 917 +919 4 -5.46 27.8 1.66 1.405 918 +920 4 -5.05 29.49 3.08 1.73 919 +921 4 -4.75 31.94 3.29 1.73 920 +922 4 -5.06 34.06 3.52 1.73 921 +923 4 -5.52 36.34 3.79 1.73 922 +924 4 -5.87 38.81 3.61 1.405 923 +925 4 -5.8 40.87 2.97 1.405 924 +926 4 -5.82 42.7 3.08 1.19 925 +927 4 -5.37 44.38 3.2 1.19 926 +928 4 -5.22 46.05 3.35 1.19 927 +929 4 -4.31 47.89 3.45 1.19 928 +930 4 -3.71 50.02 3.6 1.19 929 +931 4 -2.65 51.7 3.67 1.19 930 +932 4 -1.75 54.45 3.84 1.19 931 +933 4 -1.45 55.98 3.97 1.19 932 +934 4 -1.43 57.49 2.68 1.19 933 +935 4 -1.34 58.92 3.72 1.19 934 +936 4 -1.66 60.43 3.97 1.19 935 +937 4 -1.36 61.35 3.97 1.19 936 +938 4 -2.03 62.01 3.48 1.19 937 +939 4 -2.42 63.01 2.71 1.19 938 +940 4 -2.68 62.9 3.33 0.54 939 +941 4 -3.28 62.89 3.38 0.54 940 +942 4 -3.26 62.88 3.53 0.54 941 +943 4 -3.2 62.81 4.27 0.54 942 +944 4 -3.18 62.79 4.49 0.54 943 +945 4 -3.56 62.84 5.44 0.54 944 +946 4 -3.5 62.49 6.01 0.54 945 +947 4 -3.44 62.43 6.67 0.54 946 +948 4 -3.33 62.31 7.86 0.54 947 +949 4 -3.13 62.11 8.28 0.54 948 +950 4 -3.12 61.49 8.37 0.54 949 +951 4 -3.11 60.57 8.28 0.54 950 +952 4 -3.24 59.47 8.56 0.54 951 +953 4 -3.23 58.56 8.47 0.54 952 +954 4 -3.22 57.95 8.48 0.54 953 +955 4 -3.81 57.02 8.53 0.54 954 +956 4 -4.11 56.71 8.6 0.54 955 +957 4 -5.02 57.0 8.79 0.54 956 +958 4 -5.55 57.5 9.87 0.54 957 +959 4 -6.0 58.57 10.01 0.65 958 +960 4 -6.76 59.01 10.12 0.65 959 +961 4 -7.3 58.93 10.92 0.65 960 +962 4 -8.11 58.83 10.45 0.65 961 +963 4 -8.11 60.05 8.99 0.65 962 +964 4 -7.92 60.48 7.8 0.65 963 +965 4 -9.09 61.64 6.89 0.65 964 +966 4 -9.86 62.4 6.89 0.65 965 +967 4 -11.04 63.28 5.79 0.65 966 +968 4 -12.6 63.9 5.7 0.65 967 +969 4 -14.08 64.45 4.69 0.65 968 +970 4 -14.86 65.22 4.75 0.65 969 +971 4 -16.53 66.26 5.01 0.65 970 +972 4 -17.44 67.16 5.18 0.65 971 +973 4 -17.75 67.47 5.24 0.65 972 +974 4 -18.66 67.76 5.35 0.65 973 +975 4 -19.88 68.37 5.52 0.65 974 +976 4 -21.15 69.63 5.15 0.65 975 +977 4 -21.96 71.62 5.12 0.65 976 +978 4 -22.38 72.05 3.84 0.65 977 +979 4 -22.04 73.24 2.8 0.65 978 +980 4 -22.69 73.88 2.38 0.435 979 +981 4 -23.76 74.94 2.66 0.435 980 +982 4 -23.91 76.0 2.78 0.54 981 +983 4 -24.22 77.83 2.98 0.54 982 +984 4 -24.36 79.48 3.24 0.54 983 +985 4 -24.22 80.86 3.28 0.54 984 +986 4 -24.13 81.98 2.78 0.54 985 +987 4 -24.25 83.31 1.79 0.54 986 +988 4 -23.93 84.83 0.32 0.54 987 +989 4 -24.03 85.56 -0.72 0.54 988 +990 4 -23.99 87.04 -1.8 0.54 989 +991 4 -24.53 88.18 -2.39 0.54 990 +992 4 -25.3 89.55 -4.0 0.54 991 +993 4 -25.85 91.31 -4.69 0.54 992 +994 4 -26.54 93.82 -5.29 0.54 993 +995 4 -26.94 96.94 -5.77 0.54 994 +996 4 -26.5 99.86 -5.68 0.54 995 +997 4 -25.4 101.2 -6.86 0.54 996 +998 4 -24.5 102.74 -6.87 0.54 997 +999 4 -24.36 105.01 -6.66 0.54 998 +1000 4 -23.75 105.63 -6.73 0.54 999 +1001 4 -22.53 105.95 -6.81 0.54 1000 +1002 4 -21.96 106.6 -7.18 0.54 1001 +1003 4 -21.07 107.54 -7.4 0.54 1002 +1004 4 -20.88 107.97 -8.66 0.54 1003 +1005 4 -20.98 108.68 -9.57 0.54 1004 +1006 4 -21.55 110.15 -10.59 0.54 1005 +1007 4 -22.0 110.61 -12.0 0.54 1006 +1008 4 -22.54 110.53 -12.87 0.54 1007 +1009 4 -23.53 110.0 -13.74 0.54 1008 +1010 4 -24.05 109.62 -14.48 0.54 1009 +1011 4 -24.55 108.9 -15.04 0.54 1010 +1012 4 -24.91 108.66 -15.7 0.54 1011 +1013 4 -25.63 108.16 -16.9 0.54 1012 +1014 4 -27.38 107.78 -17.6 0.54 1013 +1015 4 -29.09 107.35 -18.02 0.54 1014 +1016 4 -30.38 106.79 -18.63 0.54 1015 +1017 4 -31.99 105.66 -19.65 0.54 1016 +1018 4 -33.92 105.15 -20.66 0.54 1017 +1019 4 -35.31 105.02 -20.85 0.54 1018 +1020 4 -36.26 104.14 -21.23 0.54 1019 +1021 4 -37.38 103.73 -21.84 0.54 1020 +1022 4 -38.82 103.03 -22.53 0.54 1021 +1023 4 -39.89 102.56 -22.55 0.54 1022 +1024 4 -21.12 73.85 2.77 0.435 979 +1025 4 -20.74 75.31 2.04 0.435 1024 +1026 4 -21.43 75.38 1.21 0.54 1025 +1027 4 -22.5 76.74 1.44 0.54 1026 +1028 4 -24.34 77.95 1.72 0.54 1027 +1029 4 -25.85 78.23 1.89 0.54 1028 +1030 4 -27.46 79.21 1.31 0.54 1029 +1031 4 -29.09 80.52 0.37 0.54 1030 +1032 4 -30.73 81.25 -0.68 0.54 1031 +1033 4 -31.11 81.93 -1.33 0.54 1032 +1034 4 -32.04 82.54 -1.34 0.54 1033 +1035 4 -32.62 83.11 -2.51 0.54 1034 +1036 4 -33.03 83.23 -3.67 0.54 1035 +1037 4 -33.66 83.85 -3.79 0.54 1036 +1038 4 -34.42 84.31 -5.41 0.54 1037 +1039 4 -34.98 84.86 -4.7 0.54 1038 +1040 4 -35.5 85.38 -5.28 0.54 1039 +1041 4 -36.26 86.44 -6.7 0.54 1040 +1042 4 -36.87 87.35 -6.55 0.54 1041 +1043 4 -38.48 88.04 -7.4 0.54 1042 +1044 4 -40.59 88.91 -8.48 0.54 1043 +1045 4 -42.74 89.84 -8.4 0.54 1044 +1046 4 -44.31 90.47 -8.73 0.54 1045 +1047 4 -45.65 92.4 -9.63 0.54 1046 +1048 4 -46.08 93.44 -10.85 0.54 1047 +1049 4 -2.27 64.69 2.78 1.19 939 +1050 4 -1.98 65.92 2.81 1.19 1049 +1051 4 -1.53 66.99 2.87 1.19 1050 +1052 4 -0.62 69.11 3.05 1.19 1051 +1053 4 -0.92 70.01 3.25 1.19 1052 +1054 4 -1.19 71.49 3.88 1.19 1053 +1055 4 -2.26 72.5 4.08 1.19 1054 +1056 4 -1.69 72.84 5.34 0.54 1055 +1057 4 -1.53 73.28 5.59 0.54 1056 +1058 4 -1.03 73.39 5.93 0.54 1057 +1059 4 -0.89 74.16 5.91 0.54 1058 +1060 4 -0.13 75.84 6.01 0.54 1059 +1061 4 0.46 77.68 6.13 0.54 1060 +1062 4 0.91 78.75 6.19 0.54 1061 +1063 4 0.02 79.93 6.69 0.54 1062 +1064 4 -0.87 80.82 6.94 0.54 1063 +1065 4 -1.18 83.25 7.21 0.54 1064 +1066 4 -1.14 84.41 7.93 0.54 1065 +1067 4 -1.51 85.09 7.27 0.54 1066 +1068 4 -1.52 85.99 7.43 0.54 1067 +1069 4 -1.73 86.82 6.85 0.54 1068 +1070 4 -1.93 87.64 6.35 0.54 1069 +1071 4 -2.29 88.0 5.81 0.54 1070 +1072 4 -2.37 88.68 5.06 0.54 1071 +1073 4 -2.92 89.83 4.23 0.54 1072 +1074 4 -2.86 90.69 3.33 0.54 1073 +1075 4 -3.25 91.68 2.62 0.54 1074 +1076 4 -3.31 92.36 2.02 0.54 1075 +1077 4 -4.27 94.22 1.77 0.54 1076 +1078 4 -4.28 95.44 1.89 0.54 1077 +1079 4 -4.44 96.5 1.92 0.54 1078 +1080 4 -4.95 97.32 1.45 0.54 1079 +1081 4 -4.83 98.72 1.35 0.54 1080 +1082 4 -5.2 99.99 0.83 0.54 1081 +1083 4 -5.57 101.57 0.34 0.54 1082 +1084 4 -5.51 102.44 -0.64 0.54 1083 +1085 4 -6.15 102.16 -2.57 0.54 1084 +1086 4 -6.45 102.17 -2.54 0.54 1085 +1087 4 -7.51 102.61 -2.4 0.54 1086 +1088 4 -7.83 103.82 -2.26 0.54 1087 +1089 4 -7.82 104.73 -2.09 0.54 1088 +1090 4 -7.83 105.65 -1.99 0.54 1089 +1091 4 -8.17 106.6 -2.4 0.54 1090 +1092 4 -8.11 107.45 -3.15 0.54 1091 +1093 4 -8.11 108.07 -4.84 0.54 1092 +1094 4 -8.42 108.38 -6.45 0.54 1093 +1095 4 -9.37 109.01 -6.67 0.54 1094 +1096 4 -9.37 110.83 -6.43 0.54 1095 +1097 4 -9.28 112.27 -6.96 0.54 1096 +1098 4 -9.84 112.83 -7.99 0.54 1097 +1099 4 -10.31 113.3 -8.13 0.54 1098 +1100 4 -11.46 115.96 -8.6 0.54 1099 +1101 4 -11.75 118.36 -9.69 0.54 1100 +1102 4 -11.68 120.11 -10.37 0.54 1101 +1103 4 -11.17 122.05 -11.21 0.54 1102 +1104 4 -12.02 123.2 -12.0 0.54 1103 +1105 4 -13.35 125.12 -12.89 0.54 1104 +1106 4 -12.85 126.46 -13.87 0.54 1105 +1107 4 -12.1 127.24 -14.02 0.54 1106 +1108 4 -10.88 129.37 -13.91 0.54 1107 +1109 4 -10.66 131.88 -14.45 0.54 1108 +1110 4 -10.24 134.8 -14.5 0.54 1109 +1111 4 -9.71 136.09 -15.19 0.54 1110 +1112 4 -9.21 137.74 -16.28 0.54 1111 +1113 4 -8.85 139.52 -17.12 0.54 1112 +1114 4 -8.37 140.88 -18.47 0.54 1113 +1115 4 -8.15 142.17 -19.2 0.54 1114 +1116 4 -7.47 143.03 -20.17 0.54 1115 +1117 4 -6.98 143.76 -21.34 0.54 1116 +1118 4 -6.3 144.62 -22.15 0.54 1117 +1119 4 -5.65 145.49 -23.34 0.54 1118 +1120 4 -4.55 146.83 -24.52 0.54 1119 +1121 4 -4.03 147.56 -25.56 0.54 1120 +1122 4 -3.49 148.24 -26.29 0.54 1121 +1123 4 -2.86 149.13 -27.56 0.54 1122 +1124 4 -1.65 150.97 -27.55 0.54 1123 +1125 4 -1.2 152.35 -29.06 0.54 1124 +1126 4 0.46 154.05 -29.11 0.54 1125 +1127 4 -2.56 72.54 4.11 1.19 1055 +1128 4 -4.2 74.16 4.79 1.08 1127 +1129 4 -5.12 75.06 5.04 1.08 1128 +1130 4 -5.32 75.9 5.51 0.54 1129 +1131 4 -4.55 76.67 5.52 0.54 1130 +1132 4 -2.73 76.99 5.39 0.54 1131 +1133 4 0.29 77.02 5.11 0.54 1132 +1134 4 2.09 76.76 4.54 0.54 1133 +1135 4 4.1 76.3 4.61 0.54 1134 +1136 4 6.44 75.81 4.88 0.54 1135 +1137 4 9.03 74.46 4.59 0.54 1136 +1138 4 11.15 73.57 4.3 0.54 1137 +1139 4 12.56 73.4 4.45 0.54 1138 +1140 4 14.72 72.48 4.46 0.54 1139 +1141 4 16.24 71.58 4.24 0.54 1140 +1142 4 17.65 70.18 4.35 0.54 1141 +1143 4 20.1 68.37 4.02 0.54 1142 +1144 4 21.94 68.38 4.0 0.54 1143 +1145 4 23.51 68.34 4.38 0.54 1144 +1146 4 24.77 68.32 4.65 0.54 1145 +1147 4 26.58 68.03 4.45 0.54 1146 +1148 4 28.73 66.83 4.21 0.54 1147 +1149 4 31.16 67.15 4.02 0.54 1148 +1150 4 34.23 66.84 4.01 0.54 1149 +1151 4 37.46 65.47 3.95 0.54 1150 +1152 4 39.76 65.63 3.9 0.54 1151 +1153 4 42.35 65.8 3.76 0.54 1152 +1154 4 45.1 66.44 3.64 0.54 1153 +1155 4 46.65 66.11 3.77 0.54 1154 +1156 4 49.09 64.29 3.45 0.54 1155 +1157 4 51.69 62.65 3.05 0.54 1156 +1158 4 53.37 63.12 2.94 0.54 1157 +1159 4 55.18 64.05 2.86 0.54 1158 +1160 4 62.55 62.92 2.23 0.54 1159 +1161 4 66.81 62.05 1.75 0.54 1160 +1162 4 69.42 61.89 1.79 0.54 1161 +1163 4 70.71 61.85 2.34 0.54 1162 +1164 4 71.95 60.62 2.34 0.54 1163 +1165 4 74.38 60.03 2.06 0.54 1164 +1166 4 76.51 60.05 1.87 0.54 1165 +1167 4 76.74 59.83 2.57 0.54 1166 +1168 4 78.33 59.47 3.22 0.54 1167 +1169 4 79.02 58.79 3.85 0.54 1168 +1170 4 79.24 58.56 4.57 0.54 1169 +1171 4 79.18 57.1 5.41 0.54 1170 +1172 4 78.9 56.15 5.64 0.54 1171 +1173 4 78.68 55.45 6.5 0.54 1172 +1174 4 78.42 55.1 6.94 0.54 1173 +1175 4 78.14 54.47 7.21 0.54 1174 +1176 4 -6.09 76.33 6.23 1.08 1129 +1177 4 -6.97 77.79 6.92 1.08 1176 +1178 4 -6.79 78.22 7.24 1.08 1177 +1179 4 -6.31 79.27 7.52 1.08 1178 +1180 4 -5.77 79.63 8.49 1.08 1179 +1181 4 -5.31 80.69 8.77 1.08 1180 +1182 4 -4.24 82.37 8.85 1.08 1181 +1183 4 -3.78 82.82 8.93 1.08 1182 +1184 4 -3.8 83.87 9.55 1.08 1183 +1185 4 -3.8 86.0 9.76 1.08 1184 +1186 4 -4.21 87.32 8.86 1.08 1185 +1187 4 -4.67 88.38 9.02 1.08 1186 +1188 4 -5.57 89.89 7.73 1.405 1187 +1189 4 -6.18 91.4 7.93 1.405 1188 +1190 4 -6.29 92.12 8.47 1.3 1189 +1191 4 -6.35 92.48 8.73 1.3 1190 +1192 4 -5.43 91.69 7.22 0.11 1191 +1193 4 -4.97 92.16 7.3 0.435 1192 +1194 4 -4.52 93.52 7.4 0.435 1193 +1195 4 -3.75 95.19 7.49 0.435 1194 +1196 4 -2.85 96.11 7.56 0.435 1195 +1197 4 -1.34 96.74 7.48 0.435 1196 +1198 4 -0.13 96.77 7.22 0.435 1197 +1199 4 1.04 97.42 6.81 0.435 1198 +1200 4 2.99 98.23 6.32 0.435 1199 +1201 4 4.03 99.03 6.08 0.435 1200 +1202 4 5.07 100.41 5.96 0.435 1201 +1203 4 6.42 101.2 5.77 0.435 1202 +1204 4 8.85 102.46 5.52 0.435 1203 +1205 4 9.2 103.02 4.48 0.435 1204 +1206 4 10.99 103.99 3.95 0.435 1205 +1207 4 12.96 105.69 3.94 0.435 1206 +1208 4 15.08 107.22 3.81 0.435 1207 +1209 4 16.37 108.09 2.95 0.435 1208 +1210 4 18.6 109.22 2.32 0.435 1209 +1211 4 21.77 110.34 1.91 0.435 1210 +1212 4 23.85 111.03 1.18 0.435 1211 +1213 4 26.71 111.84 0.7 0.435 1212 +1214 4 29.14 113.08 0.59 0.435 1213 +1215 4 31.56 113.73 0.21 0.435 1214 +1216 4 33.64 114.71 -0.4 0.435 1215 +1217 4 35.75 115.65 -0.58 0.435 1216 +1218 4 39.1 117.21 -0.74 0.435 1217 +1219 4 41.37 119.2 -0.75 0.435 1218 +1220 4 43.96 120.89 -0.83 0.435 1219 +1221 4 47.91 123.37 -0.95 0.435 1220 +1222 4 50.77 124.17 -1.29 0.435 1221 +1223 4 52.39 123.8 -2.23 0.435 1222 +1224 4 55.57 123.99 -2.59 0.435 1223 +1225 4 58.26 124.68 -3.29 0.435 1224 +1226 4 61.6 125.33 -3.62 0.435 1225 +1227 4 65.79 126.35 -4.59 0.435 1226 +1228 4 69.02 127.72 -6.04 0.435 1227 +1229 4 72.83 127.0 -6.53 0.435 1228 +1230 4 77.43 127.39 -7.0 0.435 1229 +1231 4 81.36 128.35 -7.33 0.435 1230 +1232 4 84.07 129.01 -7.82 0.435 1231 +1233 4 86.66 128.58 -8.11 0.435 1232 +1234 4 88.95 128.75 -8.3 0.435 1233 +1235 4 90.32 128.61 -8.44 0.435 1234 +1236 4 -6.92 93.64 8.6 1.3 1190 +1237 4 -6.7 94.03 9.3 1.3 1236 +1238 4 -7.6 95.22 9.65 1.3 1237 +1239 4 -8.01 95.74 9.74 1.3 1238 +1240 4 -6.77 95.72 9.93 0.435 1239 +1241 4 -6.3 95.85 10.13 0.435 1240 +1242 4 -5.99 96.17 10.13 0.435 1241 +1243 4 -5.56 96.37 9.72 0.435 1242 +1244 4 -5.11 96.52 9.7 0.435 1243 +1245 4 -3.65 97.2 9.02 0.435 1244 +1246 4 -3.22 96.78 8.64 0.435 1245 +1247 4 -1.59 96.69 7.95 0.435 1246 +1248 4 0.06 96.27 7.54 0.435 1247 +1249 4 0.75 95.59 6.65 0.435 1248 +1250 4 1.95 94.41 6.19 0.435 1249 +1251 4 3.43 93.55 5.52 0.435 1250 +1252 4 4.94 93.58 5.16 0.435 1251 +1253 4 6.69 93.67 4.25 0.435 1252 +1254 4 7.39 93.9 3.52 0.435 1253 +1255 4 7.55 94.05 1.94 0.435 1254 +1256 4 7.86 93.75 1.95 0.435 1255 +1257 4 8.62 93.6 1.87 0.435 1256 +1258 4 8.47 93.76 0.24 0.435 1257 +1259 4 8.55 93.69 -0.6 0.435 1258 +1260 4 8.65 93.28 -1.17 0.435 1259 +1261 4 8.86 93.09 -2.27 0.435 1260 +1262 4 9.6 92.98 -2.73 0.435 1261 +1263 4 10.35 92.85 -2.97 0.435 1262 +1264 4 11.04 93.07 -3.62 0.435 1263 +1265 4 12.22 92.49 0.75 0.435 1264 +1266 4 12.37 91.72 0.66 0.435 1265 +1267 4 12.64 91.46 0.24 0.435 1266 +1268 4 12.07 91.13 -1.02 0.435 1267 +1269 4 12.68 90.22 -1.24 0.435 1268 +1270 4 13.27 89.64 -1.58 0.435 1269 +1271 4 13.77 88.24 -2.98 0.435 1270 +1272 4 14.83 87.19 -3.25 0.435 1271 +1273 4 15.9 86.75 -3.39 0.435 1272 +1274 4 16.34 85.41 -3.71 0.435 1273 +1275 4 16.74 84.41 -4.6 0.435 1274 +1276 4 17.49 83.36 -4.85 0.435 1275 +1277 4 17.74 82.52 -5.71 0.435 1276 +1278 4 17.35 81.99 -6.48 0.435 1277 +1279 4 16.73 81.39 -6.71 0.435 1278 +1280 4 16.61 80.62 -8.14 0.435 1279 +1281 4 16.89 79.13 -8.68 0.435 1280 +1282 4 17.51 77.92 -8.85 0.435 1281 +1283 4 17.9 76.92 -9.67 0.435 1282 +1284 4 18.34 75.89 -10.12 0.435 1283 +1285 4 18.93 75.3 -10.39 0.435 1284 +1286 4 19.68 75.17 -10.54 0.435 1285 +1287 4 20.75 75.34 -10.7 0.435 1286 +1288 4 21.77 74.33 -11.35 0.435 1287 +1289 4 22.35 73.44 -11.79 0.435 1288 +1290 4 22.45 73.35 -12.41 0.435 1289 +1291 4 22.72 71.88 -13.03 0.435 1290 +1292 4 23.1 69.68 -14.19 0.435 1291 +1293 4 24.33 68.48 -14.42 0.435 1292 +1294 4 24.92 67.6 -14.79 0.435 1293 +1295 4 26.7 66.45 -15.59 0.435 1294 +1296 4 27.74 64.82 -16.14 0.435 1295 +1297 4 30.33 61.95 -16.75 0.435 1296 +1298 4 32.47 60.45 -17.09 0.435 1297 +1299 4 33.38 59.54 -17.26 0.435 1298 +1300 4 35.28 56.77 -18.68 0.435 1299 +1301 4 35.84 55.31 -19.42 0.435 1300 +1302 4 36.6 54.26 -19.66 0.435 1301 +1303 4 37.2 53.36 -19.88 0.435 1302 +1304 4 37.67 52.92 -19.97 0.435 1303 +1305 4 38.06 52.53 -20.8 0.435 1304 +1306 4 38.49 52.1 -21.18 0.435 1305 +1307 4 -8.0 96.22 10.54 1.3 1239 +1308 4 -8.91 97.42 10.82 1.3 1307 +1309 4 -10.54 98.52 11.08 1.3 1308 +1310 4 -11.37 99.05 12.03 0.54 1309 +1311 4 -12.45 99.8 12.2 0.54 1310 +1312 4 -13.21 100.55 12.35 0.54 1311 +1313 4 -14.17 100.6 11.92 0.54 1312 +1314 4 -15.54 101.05 12.01 0.54 1313 +1315 4 -16.17 102.27 12.04 0.54 1314 +1316 4 -17.05 103.14 12.59 0.54 1315 +1317 4 -19.02 105.37 13.29 0.54 1316 +1318 4 -19.32 106.29 13.4 0.54 1317 +1319 4 -19.78 107.34 13.55 0.54 1318 +1320 4 -20.55 109.01 13.79 0.54 1319 +1321 4 -20.8 108.95 14.41 0.54 1320 +1322 4 -21.56 109.39 14.52 0.54 1321 +1323 4 -22.61 109.53 14.7 0.54 1322 +1324 4 -23.57 109.86 14.45 0.54 1323 +1325 4 -24.08 110.37 13.94 0.54 1324 +1326 4 -23.72 112.15 13.02 0.54 1325 +1327 4 -24.34 112.46 13.03 0.54 1326 +1328 4 -25.41 113.81 13.26 0.54 1327 +1329 4 -26.93 116.54 13.67 0.54 1328 +1330 4 -27.6 119.31 13.54 0.54 1329 +1331 4 -27.31 120.86 13.51 0.54 1330 +1332 4 -26.83 122.22 12.17 0.54 1331 +1333 4 -27.15 123.13 12.22 0.54 1332 +1334 4 -28.01 125.51 11.47 0.54 1333 +1335 4 -27.85 127.77 10.24 0.54 1334 +1336 4 -28.01 129.17 8.65 0.54 1335 +1337 4 -28.25 130.01 7.85 0.54 1336 +1338 4 -29.16 130.9 8.1 0.54 1337 +1339 4 -30.38 132.72 8.38 0.54 1338 +1340 4 -30.99 133.33 6.83 0.54 1339 +1341 4 -32.18 136.02 6.0 0.54 1340 +1342 4 -33.32 138.37 5.49 0.54 1341 +1343 4 -33.63 140.51 5.67 0.54 1342 +1344 4 -35.17 143.23 6.07 0.54 1343 +1345 4 -35.5 145.38 6.08 0.54 1344 +1346 4 -35.76 148.97 5.47 0.54 1345 +1347 4 -35.49 152.03 5.45 0.54 1346 +1348 4 -35.46 155.97 4.54 0.54 1347 +1349 4 -36.39 158.7 4.9 0.54 1348 +1350 4 -37.16 162.49 5.33 0.54 1349 +1351 4 -38.67 165.51 4.26 0.54 1350 +1352 4 -40.46 167.59 3.49 0.54 1351 +1353 4 -40.73 169.07 2.37 0.54 1352 +1354 4 -41.1 170.05 1.83 0.54 1353 +1355 4 -42.23 171.76 1.5 0.54 1354 +1356 4 -43.65 173.48 1.26 0.54 1355 +1357 4 -44.41 174.23 1.4 0.54 1356 +1358 4 -44.59 175.64 -0.4 0.54 1357 +1359 4 -44.76 177.91 -0.16 0.54 1358 +1360 4 -44.15 180.04 -0.01 0.54 1359 +1361 4 -43.85 182.49 0.19 0.54 1360 +1362 4 -44.5 184.95 0.18 0.54 1361 +1363 4 -45.07 187.94 -0.59 0.54 1362 +1364 4 -44.92 190.53 -1.94 0.54 1363 +1365 4 -44.75 191.57 -0.05 0.54 1364 +1366 4 -45.06 191.87 -0.06 0.54 1365 +1367 4 -44.43 192.47 0.09 0.54 1366 +1368 4 -46.08 176.81 1.81 0.54 1357 +1369 4 -49.45 181.64 1.0 0.54 1368 +1370 4 -50.39 182.55 2.54 0.54 1369 +1371 4 -52.84 184.97 3.01 0.54 1370 +1372 4 -54.24 188.18 3.14 0.54 1371 +1373 4 -10.13 99.23 11.11 1.19 1309 +1374 4 -10.86 100.86 11.71 1.08 1373 +1375 4 -10.7 100.97 11.71 1.08 1374 +1376 4 -11.55 100.89 12.54 0.54 1375 +1377 4 -12.46 101.19 12.65 0.54 1376 +1378 4 -13.07 101.79 12.77 0.54 1377 +1379 4 -13.83 102.54 12.91 0.54 1378 +1380 4 -14.44 103.15 13.02 0.54 1379 +1381 4 -15.2 104.51 13.22 0.54 1380 +1382 4 -15.97 106.78 13.51 0.54 1381 +1383 4 -15.22 108.15 13.58 0.54 1382 +1384 4 -15.22 109.07 13.67 0.54 1383 +1385 4 -15.45 110.22 12.9 0.54 1384 +1386 4 -16.38 111.13 13.0 0.54 1385 +1387 4 -17.15 112.5 13.2 0.54 1386 +1388 4 -18.07 114.61 13.5 0.54 1387 +1389 4 -18.84 116.58 13.76 0.54 1388 +1390 4 -19.91 119.16 14.11 0.54 1389 +1391 4 -20.09 122.07 14.18 0.54 1390 +1392 4 -20.92 123.8 13.74 0.54 1391 +1393 4 -21.25 125.64 13.81 0.54 1392 +1394 4 -22.16 128.37 14.07 0.54 1393 +1395 4 -23.4 130.48 14.39 0.54 1394 +1396 4 -24.92 133.22 14.8 0.54 1395 +1397 4 -26.92 135.79 15.17 0.54 1396 +1398 4 -29.09 138.84 15.37 0.54 1397 +1399 4 -29.71 140.97 15.55 0.54 1398 +1400 4 -31.13 144.79 15.68 0.54 1399 +1401 4 -31.29 147.39 15.86 0.54 1400 +1402 4 -32.47 150.38 15.14 0.54 1401 +1403 4 -33.09 152.81 15.43 0.54 1402 +1404 4 -32.94 154.79 15.61 0.54 1403 +1405 4 -34.16 155.99 15.84 0.54 1404 +1406 4 -35.44 156.94 15.45 0.54 1405 +1407 4 -36.97 157.54 15.58 0.54 1406 +1408 4 -38.05 158.61 15.78 0.54 1407 +1409 4 -38.2 160.89 16.01 0.54 1408 +1410 4 -39.55 162.96 16.26 0.54 1409 +1411 4 -39.86 165.09 16.5 0.54 1410 +1412 4 -40.93 167.05 16.78 0.54 1411 +1413 4 -42.35 169.06 16.59 0.54 1412 +1414 4 -43.42 171.33 16.91 0.54 1413 +1415 4 -44.51 173.92 17.18 0.54 1414 +1416 4 -44.51 175.75 17.36 0.54 1415 +1417 4 -45.66 179.31 16.98 0.54 1416 +1418 4 -46.89 181.43 17.31 0.54 1417 +1419 4 -48.12 185.38 17.72 0.54 1418 +1420 4 -48.44 189.33 18.14 0.54 1419 +1421 4 -49.21 191.61 18.43 0.54 1420 +1422 4 -49.37 193.89 18.67 0.54 1421 +1423 4 -48.8 196.05 18.52 0.54 1422 +1424 4 -48.59 197.98 17.64 0.54 1423 +1425 4 -49.06 199.95 17.8 0.54 1424 +1426 4 -49.67 201.17 17.98 0.54 1425 +1427 4 -49.29 205.94 17.8 0.54 1426 +1428 4 -50.12 208.29 17.43 0.54 1427 +1429 4 -50.05 209.74 16.66 0.54 1428 +1430 4 -50.52 211.72 16.81 0.54 1429 +1431 4 -51.59 214.3 17.16 0.54 1430 +1432 4 -51.95 216.77 16.99 0.54 1431 +1433 4 -51.85 218.19 16.59 0.54 1432 +1434 4 -51.41 220.79 16.73 0.54 1433 +1435 4 -51.44 221.73 16.52 0.54 1434 +1436 4 -51.19 223.31 16.04 0.54 1435 +1437 4 -10.4 102.22 11.88 1.08 1375 +1438 4 -9.64 102.99 11.89 1.08 1437 +1439 4 -8.89 104.97 12.08 1.08 1438 +1440 4 -8.74 106.95 12.26 1.08 1439 +1441 4 -8.24 109.18 12.96 0.975 1440 +1442 4 -7.33 111.62 13.19 0.975 1441 +1443 4 -7.03 112.84 13.28 0.975 1442 +1444 4 -6.11 112.65 14.32 0.65 1443 +1445 4 -5.35 112.5 14.23 0.65 1444 +1446 4 -4.89 112.05 14.15 0.65 1445 +1447 4 -5.04 110.98 14.06 0.65 1446 +1448 4 -4.58 109.62 13.89 0.435 1447 +1449 4 -3.51 108.26 13.65 0.435 1448 +1450 4 -2.19 106.34 12.81 0.435 1449 +1451 4 -1.4 105.26 12.86 0.435 1450 +1452 4 -0.76 104.63 13.11 0.54 1451 +1453 4 0.21 103.36 13.59 0.54 1452 +1454 4 0.57 102.09 13.96 0.54 1453 +1455 4 1.41 100.65 14.64 0.54 1454 +1456 4 1.88 99.27 14.47 0.54 1455 +1457 4 2.21 98.33 14.65 0.54 1456 +1458 4 2.57 97.38 15.13 0.54 1457 +1459 4 2.89 96.46 15.08 0.54 1458 +1460 4 3.2 95.23 15.0 0.54 1459 +1461 4 3.81 94.63 14.89 0.54 1460 +1462 4 5.05 92.81 14.75 0.54 1461 +1463 4 5.54 92.32 14.96 0.54 1462 +1464 4 6.32 90.95 14.91 0.54 1463 +1465 4 6.78 89.56 14.89 0.54 1464 +1466 4 7.3 88.75 15.36 0.54 1465 +1467 4 7.46 88.3 15.37 0.54 1466 +1468 4 -7.18 114.81 13.56 0.975 1443 +1469 4 -8.4 116.92 13.89 0.975 1468 +1470 4 -9.63 119.35 14.24 0.975 1469 +1471 4 -11.16 122.06 14.65 0.975 1470 +1472 4 -11.68 123.48 15.96 0.975 1471 +1473 4 -12.43 124.23 16.1 0.975 1472 +1474 4 -12.83 124.88 16.2 0.975 1473 +1475 4 -12.98 124.12 14.48 0.54 1474 +1476 4 -13.43 123.36 14.45 0.54 1475 +1477 4 -13.12 122.14 14.29 0.54 1476 +1478 4 -12.82 121.54 14.21 0.435 1477 +1479 4 -13.12 120.02 14.09 0.435 1478 +1480 4 -13.12 119.41 14.03 0.435 1479 +1481 4 -13.11 118.19 13.92 0.435 1480 +1482 4 -13.12 116.97 13.79 0.435 1481 +1483 4 -12.96 116.52 13.73 0.435 1482 +1484 4 -12.65 115.62 13.62 0.435 1483 +1485 4 -12.49 115.15 13.56 0.435 1484 +1486 4 -13.5 126.51 16.42 0.975 1474 +1487 4 -14.27 128.76 16.8 0.975 1486 +1488 4 -14.12 131.35 17.03 0.975 1487 +1489 4 -13.67 132.73 17.12 0.975 1488 +1490 4 -12.92 135.01 17.28 0.975 1489 +1491 4 -13.22 136.23 17.43 1.08 1490 +1492 4 -13.7 139.11 17.76 1.08 1491 +1493 4 -13.55 141.09 17.93 1.08 1492 +1494 4 -14.31 142.46 18.13 1.08 1493 +1495 4 -15.08 144.43 18.4 1.08 1494 +1496 4 -15.85 146.39 18.66 1.08 1495 +1497 4 -16.31 147.77 18.84 1.08 1496 +1498 4 -16.16 150.04 19.05 1.08 1497 +1499 4 -14.95 150.66 19.0 1.08 1498 +1500 4 -13.58 151.74 18.97 1.08 1499 +1501 4 -13.12 152.8 19.03 1.08 1500 +1502 4 -12.97 154.78 19.29 1.08 1501 +1503 4 -11.31 158.28 19.47 1.08 1502 +1504 4 -11.32 162.24 19.86 1.08 1503 +1505 4 -10.83 162.78 19.87 1.08 1504 +1506 4 -11.36 162.68 20.73 0.65 1505 +1507 4 -11.81 163.75 20.88 0.65 1506 +1508 4 -12.24 164.17 21.34 0.65 1507 +1509 4 -12.68 164.59 21.64 0.65 1508 +1510 4 -13.29 164.59 21.63 0.65 1509 +1511 4 -13.7 165.61 22.23 0.65 1510 +1512 4 -14.28 166.17 22.79 0.65 1511 +1513 4 -14.49 166.37 23.89 0.65 1512 +1514 4 -14.78 168.17 24.39 0.65 1513 +1515 4 -15.17 169.17 23.53 0.435 1514 +1516 4 -15.63 170.83 23.82 0.435 1515 +1517 4 -15.93 172.06 22.23 0.435 1516 +1518 4 -16.16 172.88 21.58 0.435 1517 +1519 4 -16.22 174.47 21.2 0.435 1518 +1520 4 -16.27 176.03 20.83 0.54 1519 +1521 4 -16.43 178.01 21.05 0.54 1520 +1522 4 -16.93 179.72 20.8 0.54 1521 +1523 4 -17.55 181.55 20.96 0.54 1522 +1524 4 -18.77 183.36 21.25 0.54 1523 +1525 4 -18.47 185.5 21.43 0.54 1524 +1526 4 -17.72 187.48 21.55 0.54 1525 +1527 4 -18.03 189.0 21.73 0.54 1526 +1528 4 -19.3 191.46 21.63 0.54 1527 +1529 4 -18.91 193.2 21.09 0.54 1528 +1530 4 -18.65 195.37 20.9 0.54 1529 +1531 4 -18.39 198.45 20.79 0.54 1530 +1532 4 -19.05 201.54 20.63 0.54 1531 +1533 4 -19.92 203.6 19.93 0.54 1532 +1534 4 -20.71 205.91 19.86 0.54 1533 +1535 4 -21.75 208.16 18.88 0.54 1534 +1536 4 -21.61 209.84 18.95 0.54 1535 +1537 4 -22.45 211.58 18.37 0.54 1536 +1538 4 -24.56 213.98 17.36 0.54 1537 +1539 4 -26.24 215.33 17.65 0.54 1538 +1540 4 -27.77 216.85 17.94 0.54 1539 +1541 4 -29.3 218.97 18.28 0.54 1540 +1542 4 -31.19 220.23 17.83 0.54 1541 +1543 4 -33.94 222.94 18.35 0.54 1542 +1544 4 -35.63 224.61 18.58 0.54 1543 +1545 4 -36.53 226.41 17.41 0.54 1544 +1546 4 -37.71 229.4 16.6 0.54 1545 +1547 4 -38.66 230.29 16.7 0.54 1546 +1548 4 -39.74 231.03 16.87 0.54 1547 +1549 4 -40.73 232.02 16.22 0.54 1548 +1550 4 -40.98 234.4 15.51 0.54 1549 +1551 4 -41.28 237.74 14.26 0.54 1550 +1552 4 -42.13 239.8 13.65 0.54 1551 +1553 4 -41.6 241.71 12.87 0.54 1552 +1554 4 -41.19 243.74 12.65 0.54 1553 +1555 4 -41.33 245.7 11.34 0.54 1554 +1556 4 -42.81 248.37 10.68 0.54 1555 +1557 4 -43.38 251.37 9.9 0.54 1556 +1558 4 -44.94 256.24 10.29 0.54 1557 +1559 4 -45.75 259.78 10.26 0.54 1558 +1560 4 -46.31 261.56 9.27 0.54 1559 +1561 4 -46.66 264.63 9.37 0.54 1560 +1562 4 -46.86 266.34 9.03 0.54 1561 +1563 4 -47.79 269.09 9.24 0.54 1562 +1564 4 -48.3 273.22 9.38 0.54 1563 +1565 4 -48.53 275.89 8.76 0.54 1564 +1566 4 -49.27 277.53 8.83 0.54 1565 +1567 4 -11.65 164.37 20.09 1.08 1505 +1568 4 -11.89 164.43 20.12 1.08 1567 +1569 4 -11.64 167.11 20.37 1.08 1568 +1570 4 -11.65 169.85 20.63 0.865 1569 +1571 4 -11.81 173.65 21.02 0.865 1570 +1572 4 -11.53 177.92 21.41 0.865 1571 +1573 4 -11.39 180.56 21.73 0.975 1572 +1574 4 -10.79 183.0 21.92 0.975 1573 +1575 4 -10.02 185.58 22.09 0.975 1574 +1576 4 -9.42 188.02 22.28 0.975 1575 +1577 4 -11.12 192.11 22.84 0.975 1576 +1578 4 -11.1 193.92 23.23 0.975 1577 +1579 4 -12.33 196.94 23.64 0.975 1578 +1580 4 -13.26 199.97 24.02 0.975 1579 +1581 4 -13.87 202.4 24.39 1.08 1580 +1582 4 -13.72 205.59 24.7 1.08 1581 +1583 4 -13.93 207.02 24.32 1.08 1582 +1584 4 -12.94 206.93 25.95 0.54 1583 +1585 4 -12.18 207.4 25.86 0.54 1584 +1586 4 -11.91 207.12 27.17 0.54 1585 +1587 4 -10.96 207.38 27.57 0.54 1586 +1588 4 -9.48 207.43 28.64 0.65 1587 +1589 4 -8.25 208.04 28.81 0.65 1588 +1590 4 -6.69 208.91 29.13 0.65 1589 +1591 4 -4.35 209.96 29.62 0.65 1590 +1592 4 -1.76 211.63 29.7 0.65 1591 +1593 4 1.57 213.79 29.6 0.65 1592 +1594 4 5.23 215.65 29.52 0.65 1593 +1595 4 8.0 217.15 29.86 0.65 1594 +1596 4 9.85 218.04 30.15 0.65 1595 +1597 4 10.79 218.33 30.33 0.65 1596 +1598 4 12.77 219.72 30.28 0.65 1597 +1599 4 14.44 221.11 30.33 0.65 1598 +1600 4 15.07 222.0 29.01 0.65 1599 +1601 4 15.08 221.98 29.16 0.65 1600 +1602 4 15.85 222.44 29.13 0.65 1601 +1603 4 15.8 222.5 28.61 0.65 1602 +1604 4 16.63 222.9 27.66 0.65 1603 +1605 4 16.85 223.59 26.8 0.65 1604 +1606 4 17.56 224.1 26.26 0.65 1605 +1607 4 17.52 224.53 26.3 0.65 1606 +1608 4 18.05 224.3 27.14 0.54 1607 +1609 4 18.36 224.0 27.0 0.54 1608 +1610 4 18.75 223.6 27.91 0.54 1609 +1611 4 19.28 223.68 28.78 0.54 1610 +1612 4 19.95 223.62 29.31 0.54 1611 +1613 4 20.91 223.89 29.78 0.54 1612 +1614 4 21.74 224.28 30.42 0.54 1613 +1615 4 22.2 224.73 30.51 0.54 1614 +1616 4 22.58 224.35 31.34 0.54 1615 +1617 4 22.5 225.33 32.27 0.54 1616 +1618 4 22.65 226.7 32.39 0.54 1617 +1619 4 22.5 227.76 32.58 0.54 1618 +1620 4 22.13 228.12 33.63 0.54 1619 +1621 4 21.74 228.49 34.46 0.54 1620 +1622 4 22.51 230.77 34.77 0.435 1621 +1623 4 23.87 233.07 34.86 0.435 1622 +1624 4 24.09 234.37 35.65 0.435 1623 +1625 4 23.78 237.4 36.05 0.435 1624 +1626 4 23.93 239.37 36.31 0.435 1625 +1627 4 24.38 241.05 36.42 0.435 1626 +1628 4 24.35 243.21 36.34 0.435 1627 +1629 4 24.32 245.05 36.3 0.435 1628 +1630 4 24.27 248.13 36.29 0.435 1629 +1631 4 24.72 251.63 36.53 0.435 1630 +1632 4 25.42 255.5 36.24 0.435 1631 +1633 4 25.34 256.48 35.58 0.435 1632 +1634 4 24.67 258.68 35.17 0.435 1633 +1635 4 25.39 260.99 35.03 0.435 1634 +1636 4 26.22 264.73 34.48 0.435 1635 +1637 4 27.38 266.0 34.05 0.435 1636 +1638 4 28.74 268.61 34.1 0.435 1637 +1639 4 27.51 271.35 34.41 0.435 1638 +1640 4 26.51 273.54 33.88 0.54 1639 +1641 4 25.68 274.37 33.29 0.54 1640 +1642 4 25.67 275.29 33.3 0.54 1641 +1643 4 24.52 224.25 32.36 0.54 1616 +1644 4 25.58 225.03 32.34 0.54 1643 +1645 4 26.86 225.88 32.98 0.54 1644 +1646 4 27.65 227.83 33.4 0.54 1645 +1647 4 27.64 230.27 33.72 0.54 1646 +1648 4 27.35 231.76 34.04 0.54 1647 +1649 4 28.88 232.96 34.32 0.54 1648 +1650 4 29.8 233.58 34.3 0.54 1649 +1651 4 30.74 234.17 34.64 0.54 1650 +1652 4 31.12 234.08 35.5 0.54 1651 +1653 4 32.67 234.68 35.64 0.54 1652 +1654 4 35.62 235.72 36.07 0.54 1653 +1655 4 36.39 236.46 36.23 0.54 1654 +1656 4 36.88 238.11 36.8 0.54 1655 +1657 4 37.07 240.02 37.57 0.54 1656 +1658 4 38.75 242.32 37.72 0.54 1657 +1659 4 40.57 244.76 37.86 0.54 1658 +1660 4 42.41 245.96 38.05 0.54 1659 +1661 4 46.98 248.44 37.87 0.54 1660 +1662 4 50.48 250.76 37.84 0.54 1661 +1663 4 53.24 252.27 38.04 0.54 1662 +1664 4 55.08 252.88 38.08 0.54 1663 +1665 4 56.44 253.65 38.02 0.54 1664 +1666 4 58.12 254.42 38.02 0.54 1665 +1667 4 59.18 255.19 38.0 0.54 1666 +1668 4 19.34 225.08 25.73 0.435 1607 +1669 4 21.17 226.01 25.66 0.435 1668 +1670 4 22.34 226.98 25.19 0.435 1669 +1671 4 23.82 227.94 24.69 0.54 1670 +1672 4 26.39 231.16 24.77 0.54 1671 +1673 4 28.48 232.75 24.27 0.54 1672 +1674 4 30.77 232.92 24.09 0.54 1673 +1675 4 32.74 232.18 23.83 0.54 1674 +1676 4 36.09 232.51 23.55 0.54 1675 +1677 4 38.92 233.14 23.2 0.435 1676 +1678 4 43.64 234.84 22.93 0.435 1677 +1679 4 47.43 237.48 22.84 0.435 1678 +1680 4 49.28 238.68 21.43 0.54 1679 +1681 4 51.85 241.3 21.44 0.54 1680 +1682 4 53.21 245.11 21.69 0.54 1681 +1683 4 53.26 248.1 20.92 0.54 1682 +1684 4 53.55 250.24 21.03 0.54 1683 +1685 4 55.83 253.76 21.16 0.54 1684 +1686 4 57.48 256.67 21.29 0.54 1685 +1687 4 57.79 257.58 21.36 0.54 1686 +1688 4 57.93 261.07 21.68 0.54 1687 +1689 4 59.6 263.37 21.75 0.54 1688 +1690 4 60.48 264.32 21.46 0.54 1689 +1691 4 62.1 265.14 20.85 0.54 1690 +1692 4 63.89 264.6 20.18 0.54 1691 +1693 4 65.71 264.63 20.01 0.54 1692 +1694 4 -14.08 209.9 24.62 1.08 1583 +1695 4 -13.95 213.4 24.94 1.08 1694 +1696 4 -13.35 216.14 25.16 1.08 1695 +1697 4 -13.66 218.28 25.39 1.08 1696 +1698 4 -15.03 220.84 25.77 1.08 1697 +1699 4 -16.41 222.8 26.09 1.08 1698 +1700 4 -17.17 224.47 26.32 1.08 1699 +1701 4 -17.34 227.36 26.62 1.08 1700 +1702 4 -17.19 231.16 26.98 1.08 1701 +1703 4 -16.75 234.36 27.25 1.08 1702 +1704 4 -17.18 237.23 26.29 1.08 1703 +1705 4 -17.48 239.02 26.71 1.08 1704 +1706 4 -18.11 240.86 26.64 1.08 1705 +1707 4 -18.39 242.66 25.57 1.08 1706 +1708 4 -19.02 243.14 26.35 0.65 1707 +1709 4 -20.33 243.83 25.56 0.65 1708 +1710 4 -21.29 244.15 26.89 0.65 1709 +1711 4 -21.74 243.98 28.65 0.65 1710 +1712 4 -23.19 244.51 29.59 0.65 1711 +1713 4 -26.02 245.48 30.62 0.65 1712 +1714 4 -27.69 246.81 31.06 0.65 1713 +1715 4 -30.05 248.52 32.35 0.65 1714 +1716 4 -31.28 249.74 32.58 0.65 1715 +1717 4 -32.6 251.04 33.28 0.65 1716 +1718 4 -34.58 253.61 33.8 0.65 1717 +1719 4 -36.41 254.2 34.03 0.65 1718 +1720 4 -39.15 255.38 34.46 0.65 1719 +1721 4 -41.74 257.03 34.86 0.65 1720 +1722 4 -44.48 258.52 35.26 0.65 1721 +1723 4 -46.01 260.03 35.63 0.54 1722 +1724 4 -47.21 260.01 35.74 0.54 1723 +1725 4 -49.35 261.21 36.12 0.54 1724 +1726 4 -51.02 263.16 36.47 0.54 1725 +1727 4 -53.63 266.04 36.99 0.54 1726 +1728 4 -56.67 268.74 37.53 0.54 1727 +1729 4 -58.05 271.32 37.92 0.54 1728 +1730 4 -59.43 274.2 38.32 0.54 1729 +1731 4 -60.5 276.46 38.65 0.54 1730 +1732 4 -61.58 279.35 39.02 0.54 1731 +1733 4 -63.56 280.08 39.28 0.54 1732 +1734 4 -65.24 281.44 39.56 0.54 1733 +1735 4 -67.53 283.39 39.97 0.54 1734 +1736 4 -68.7 284.54 40.79 0.54 1735 +1737 4 -70.06 287.11 41.25 0.54 1736 +1738 4 -70.49 288.73 41.9 0.54 1737 +1739 4 -70.46 290.23 42.35 0.54 1738 +1740 4 -69.8 290.77 43.02 0.54 1739 +1741 4 -69.26 291.15 43.84 0.54 1740 +1742 4 -70.31 292.18 44.26 0.54 1741 +1743 4 -71.52 293.38 44.64 0.54 1742 +1744 4 -71.68 295.35 44.85 0.54 1743 +1745 4 -71.81 296.69 45.29 0.54 1744 +1746 4 -73.02 297.58 45.64 0.54 1745 +1747 4 -74.21 297.85 46.0 0.54 1746 +1748 4 -75.86 299.17 46.58 0.54 1747 +1749 4 -76.45 299.76 46.92 0.54 1748 +1750 4 -77.45 300.75 47.79 0.54 1749 +1751 4 -77.62 301.18 49.51 0.54 1750 +1752 4 -78.53 301.79 49.65 0.54 1751 +1753 4 -78.86 302.11 51.08 0.54 1752 +1754 4 -79.29 302.22 51.51 0.54 1753 +1755 4 -17.79 245.71 25.81 1.08 1707 +1756 4 -17.95 247.99 26.05 1.08 1755 +1757 4 -17.21 249.38 25.88 1.08 1756 +1758 4 -16.46 251.67 26.03 1.08 1757 +1759 4 -16.93 253.35 26.17 1.08 1758 +1760 4 -18.15 255.17 26.46 1.08 1759 +1761 4 -19.82 258.34 25.41 1.08 1760 +1762 4 -20.59 260.91 25.73 1.08 1761 +1763 4 -20.91 263.96 26.06 1.08 1762 +1764 4 -20.63 268.83 26.42 1.08 1763 +1765 4 -20.07 271.27 26.55 1.19 1764 +1766 4 -19.33 274.16 26.75 1.19 1765 +1767 4 -19.33 275.38 26.88 1.19 1766 +1768 4 -19.12 276.58 28.11 0.865 1767 +1769 4 -19.42 278.11 28.28 0.865 1768 +1770 4 -19.72 279.01 28.47 0.865 1769 +1771 4 -20.34 279.62 28.51 0.865 1770 +1772 4 -20.67 280.85 30.11 0.865 1771 +1773 4 -21.56 281.73 30.43 0.865 1772 +1774 4 -21.99 283.36 31.15 0.865 1773 +1775 4 -23.18 284.53 31.67 0.865 1774 +1776 4 -23.79 286.34 31.99 0.865 1775 +1777 4 -25.13 287.66 32.62 0.865 1776 +1778 4 -26.51 289.01 32.88 0.865 1777 +1779 4 -27.87 291.27 33.3 0.865 1778 +1780 4 -28.64 293.86 33.63 0.865 1779 +1781 4 -28.65 296.29 33.86 0.865 1780 +1782 4 -28.8 298.55 34.24 0.865 1781 +1783 4 -28.79 300.07 34.47 0.865 1782 +1784 4 -30.47 303.85 35.07 0.865 1783 +1785 4 -31.85 307.03 35.51 0.865 1784 +1786 4 -32.63 310.21 35.89 0.865 1785 +1787 4 -34.3 312.78 36.3 0.865 1786 +1788 4 -36.6 315.05 36.73 0.865 1787 +1789 4 -37.54 315.89 37.05 0.865 1788 +1790 4 -38.92 318.77 37.46 0.865 1789 +1791 4 -40.3 321.64 37.86 0.865 1790 +1792 4 -42.89 323.29 38.26 0.865 1791 +1793 4 -44.42 326.01 38.68 0.865 1792 +1794 4 -46.11 329.51 39.17 0.865 1793 +1795 4 -47.21 332.39 40.99 0.865 1794 +1796 4 -47.72 334.12 40.59 0.865 1795 +1797 4 -48.34 335.36 38.88 0.865 1796 +1798 4 -49.4 337.62 37.77 0.865 1797 +1799 4 -50.47 338.68 37.9 0.865 1798 +1800 4 -52.63 341.41 38.28 0.865 1799 +1801 4 -54.76 344.73 38.8 0.865 1800 +1802 4 -55.43 349.03 38.75 0.865 1801 +1803 4 -55.94 352.55 38.84 0.865 1802 +1804 4 -55.08 356.27 38.6 0.865 1803 +1805 4 -54.71 359.25 37.95 0.865 1804 +1806 4 -55.34 362.0 38.2 0.865 1805 +1807 4 -54.82 365.14 37.47 0.865 1806 +1808 4 -53.38 368.86 36.95 0.865 1807 +1809 4 -52.37 372.41 36.67 0.865 1808 +1810 4 -51.94 375.04 35.07 0.865 1809 +1811 4 -50.47 378.74 34.92 0.865 1810 +1812 4 -49.98 381.91 33.91 0.865 1811 +1813 4 -50.57 382.78 32.75 0.865 1812 +1814 4 -51.17 383.99 32.93 0.865 1813 +1815 4 -51.52 384.33 32.99 0.435 1814 +1816 4 -51.82 384.93 33.08 0.865 1815 +1817 4 -51.5 387.06 31.89 0.865 1816 +1818 4 -51.65 388.73 32.07 0.865 1817 +1819 4 -52.87 389.93 32.3 0.865 1818 +1820 4 -54.06 390.8 31.21 0.865 1819 +1821 4 -55.81 392.23 30.67 0.865 1820 +1822 4 -55.97 393.0 30.69 0.865 1821 +1823 4 -56.94 395.16 30.47 0.865 1822 +1824 4 -57.4 396.54 30.57 0.865 1823 +1825 4 -57.73 398.37 30.7 1.3 1824 +1826 4 -57.88 400.03 30.89 0.975 1825 +1827 4 -58.48 403.06 29.79 0.975 1826 +1828 4 -58.77 404.3 29.93 0.975 1827 +1829 4 -59.79 404.09 30.46 0.54 1828 +1830 4 -61.01 403.47 30.52 0.54 1829 +1831 4 -62.07 403.92 30.66 0.54 1830 +1832 4 -63.75 404.36 30.86 0.54 1831 +1833 4 -65.44 405.12 31.02 0.54 1832 +1834 4 -66.97 405.74 29.4 0.54 1833 +1835 4 -68.34 407.08 29.66 0.54 1834 +1836 4 -69.56 408.3 29.89 0.54 1835 +1837 4 -70.93 408.73 30.06 0.54 1836 +1838 4 -72.2 409.67 29.88 0.54 1837 +1839 4 -72.78 409.97 28.45 0.54 1838 +1840 4 -73.63 409.59 27.59 0.54 1839 +1841 4 -74.09 409.46 25.81 0.54 1840 +1842 4 -74.35 409.11 24.59 0.54 1841 +1843 4 -74.54 408.99 24.21 0.54 1842 +1844 4 -74.69 408.54 24.18 0.54 1843 +1845 4 -58.94 404.74 29.92 0.975 1828 +1846 4 -58.5 407.04 30.03 0.975 1845 +1847 4 -58.83 408.88 28.42 0.975 1846 +1848 4 -59.16 410.74 26.67 0.975 1847 +1849 4 -60.12 411.68 26.4 0.975 1848 +1850 4 -62.36 413.31 25.56 0.975 1849 +1851 4 -63.03 415.56 24.85 0.975 1850 +1852 4 -63.49 417.54 25.08 0.865 1851 +1853 4 -64.8 419.45 24.42 0.865 1852 +1854 4 -64.81 420.98 22.83 0.865 1853 +1855 4 -64.64 422.34 21.5 0.865 1854 +1856 4 -64.51 423.12 21.34 0.865 1855 +1857 4 -64.07 423.6 21.2 0.865 1856 +1858 4 -64.23 425.88 19.85 0.865 1857 +1859 4 -64.97 427.53 18.64 0.865 1858 +1860 4 -64.91 430.2 17.92 0.865 1859 +1861 4 -65.28 432.71 15.85 0.865 1860 +1862 4 -65.7 433.72 16.59 0.865 1861 +1863 4 -66.37 435.91 16.1 0.865 1862 +1864 4 -66.93 437.69 15.27 0.865 1863 +1865 4 -67.17 439.14 14.53 0.865 1864 +1866 4 -68.16 439.81 13.86 0.865 1865 +1867 4 -69.28 441.53 13.6 0.865 1866 +1868 4 -70.9 442.84 12.82 0.865 1867 +1869 4 -71.75 444.29 12.06 0.865 1868 +1870 4 -72.49 445.63 10.97 0.865 1869 +1871 4 -73.83 446.97 9.79 0.865 1870 +1872 4 -74.39 448.11 9.04 0.865 1871 +1873 4 -75.42 449.76 7.94 0.865 1872 +1874 4 -75.89 450.83 8.01 0.865 1873 +1875 4 -77.1 451.73 8.21 0.865 1874 +1876 4 -78.48 453.7 8.46 0.865 1875 +1877 4 -79.04 456.07 7.75 0.865 1876 +1878 4 -77.54 459.43 7.94 0.865 1877 +1879 4 -75.96 462.44 7.03 0.865 1878 +1880 4 -75.44 465.57 6.45 0.865 1879 +1881 4 -75.68 468.54 5.86 0.865 1880 +1882 4 -75.19 470.47 4.87 0.865 1881 +1883 4 -74.8 472.53 4.29 0.865 1882 +1884 4 -74.42 474.28 3.66 0.865 1883 +1885 4 -74.74 475.39 3.8 0.865 1884 +1886 4 -75.42 475.77 3.06 0.435 1885 +1887 4 -75.88 476.23 3.15 0.435 1886 +1888 4 -76.82 476.55 2.96 0.435 1887 +1889 4 -77.28 476.1 2.81 0.435 1888 +1890 4 -77.61 476.43 2.65 0.54 1889 +1891 4 -79.59 477.17 2.91 0.54 1890 +1892 4 -79.9 478.69 3.08 0.54 1891 +1893 4 -80.67 479.16 1.38 0.54 1892 +1894 4 -81.7 479.26 0.28 0.54 1893 +1895 4 -82.29 479.55 -1.07 0.54 1894 +1896 4 -82.72 479.38 -2.55 0.54 1895 +1897 4 -83.65 479.7 -2.52 0.54 1896 +1898 4 -85.11 480.23 -3.31 0.54 1897 +1899 4 -85.96 480.46 -4.12 0.54 1898 +1900 4 -86.59 481.1 -4.37 0.54 1899 +1901 4 -87.51 481.41 -5.92 0.54 1900 +1902 4 -87.66 481.58 -7.71 0.54 1901 +1903 4 -88.41 482.0 -8.96 0.54 1902 +1904 4 -89.13 482.72 -10.02 0.54 1903 +1905 4 -89.85 483.45 -11.17 0.54 1904 +1906 4 -73.88 475.57 3.05 0.865 1885 +1907 4 -73.79 477.62 2.57 0.865 1906 +1908 4 -73.62 479.27 1.28 0.865 1907 +1909 4 -74.82 481.66 0.33 0.865 1908 +1910 4 -74.93 483.61 -0.73 0.865 1909 +1911 4 -74.02 485.14 -0.67 0.865 1910 +1912 4 -72.32 487.12 -1.93 0.865 1911 +1913 4 -71.11 490.18 -3.4 0.865 1912 +1914 4 -71.5 492.69 -4.03 0.865 1913 +1915 4 -71.93 494.64 -5.08 0.865 1914 +1916 4 -71.81 496.33 -5.15 0.865 1915 +1917 4 -72.31 498.87 -6.06 0.865 1916 +1918 4 -71.64 499.73 -7.03 0.865 1917 +1919 4 -70.64 503.6 -7.28 0.865 1918 +1920 4 -69.15 505.47 -7.6 0.865 1919 +1921 4 -69.42 508.16 -8.46 0.865 1920 +1922 4 -70.29 509.94 -9.33 0.865 1921 +1923 4 -70.46 511.32 -9.41 0.865 1922 +1924 4 -70.53 513.51 -9.87 0.865 1923 +1925 4 -70.27 516.0 -10.1 0.865 1924 +1926 4 -71.33 518.26 -11.23 0.865 1925 +1927 4 -71.95 520.08 -11.07 0.865 1926 +1928 4 -72.93 522.29 -11.58 0.865 1927 +1929 4 -73.88 523.83 -13.25 0.865 1928 +1930 4 -73.89 525.66 -13.14 0.865 1929 +1931 4 -73.9 529.32 -14.44 0.865 1930 +1932 4 -73.97 529.39 -15.19 0.865 1931 +1933 4 -73.61 531.16 -16.03 0.865 1932 +1934 4 -73.7 533.69 -16.76 0.865 1933 +1935 4 -73.7 535.51 -18.1 0.865 1934 +1936 4 -73.96 537.29 -19.03 0.865 1935 +1937 4 -74.53 539.99 -19.92 0.865 1936 +1938 4 -74.15 542.65 -20.53 0.865 1937 +1939 4 -72.95 545.1 -20.4 0.865 1938 +1940 4 -72.42 548.52 -20.86 0.865 1939 +1941 4 -71.81 551.27 -22.32 0.865 1940 +1942 4 -70.81 554.24 -22.81 0.865 1941 +1943 4 -70.18 556.94 -23.82 0.865 1942 +1944 4 -68.51 558.96 -25.51 0.865 1943 +1945 4 -67.91 560.48 -25.41 0.865 1944 +1946 4 -66.61 561.93 -26.07 0.865 1945 +1947 4 -65.91 563.36 -26.6 0.865 1946 +1948 4 -65.22 566.04 -27.24 0.865 1947 +1949 4 -65.31 567.95 -27.88 0.865 1948 +1950 4 -65.54 570.59 -28.28 0.865 1949 +1951 4 -66.56 574.04 -28.98 0.865 1950 +1952 4 -67.53 578.34 -29.0 0.865 1951 +1953 4 -68.36 581.65 -28.75 0.865 1952 +1954 4 -68.66 585.6 -28.34 0.865 1953 +1955 4 -68.84 588.5 -28.19 0.865 1954 +1956 4 -69.31 591.09 -27.98 0.865 1955 +1957 4 -70.14 594.33 -28.18 0.865 1956 +1958 4 -70.38 596.7 -28.84 0.865 1957 +1959 4 -70.16 598.92 -29.55 0.865 1958 +1960 4 -69.48 600.67 -30.2 0.865 1959 +1961 4 -68.03 601.97 -30.88 0.865 1960 +1962 4 -67.78 602.91 -30.89 0.54 1961 +1963 4 -66.57 605.06 -30.8 0.54 1962 +1964 4 -66.17 605.58 -31.46 0.54 1963 +1965 4 -65.24 606.49 -32.89 0.54 1964 +1966 4 -63.43 608.04 -33.05 0.54 1965 +1967 4 -62.07 608.82 -33.11 0.54 1966 +1968 4 -59.79 609.9 -33.21 0.54 1967 +1969 4 -58.44 610.39 -33.51 0.54 1968 +1970 4 -56.47 611.48 -33.66 0.54 1969 +1971 4 -54.88 612.34 -34.57 0.54 1970 +1972 4 -54.03 612.73 -35.37 0.54 1971 +1973 4 -53.88 612.57 -35.39 0.54 1972 +1974 4 -54.3 613.0 -36.6 0.435 1973 +1975 4 -54.77 613.47 -36.66 0.435 1974 +1976 4 -55.42 613.78 -36.87 0.435 1975 +1977 4 -54.82 614.42 -37.02 0.435 1976 +1978 4 -55.23 614.83 -38.06 0.435 1977 +1979 4 -54.75 615.58 -39.47 0.435 1978 +1980 4 -54.58 616.63 -40.82 0.435 1979 +1981 4 -54.26 617.24 -42.31 0.435 1980 +1982 4 -54.19 617.48 -43.27 0.435 1981 +1983 4 -54.01 617.91 -44.46 0.435 1982 +1984 4 -53.71 618.53 -46.17 0.435 1983 +1985 4 -53.72 619.75 -46.12 0.435 1984 +1986 4 -53.51 621.68 -47.01 0.435 1985 +1987 4 -53.61 623.29 -47.75 0.435 1986 +1988 4 -53.55 625.07 -48.56 0.435 1987 +1989 4 -54.08 626.8 -49.1 0.435 1988 +1990 4 -54.38 628.63 -50.49 0.435 1989 +1991 4 -54.53 630.0 -51.93 0.435 1990 +1992 4 -54.96 632.25 -52.94 0.435 1991 +1993 4 -56.33 633.9 -52.66 0.435 1992 +1994 4 -56.39 634.89 -53.24 0.435 1993 +1995 4 -56.05 635.78 -54.47 0.435 1994 +1996 4 -55.39 636.34 -55.54 0.435 1995 +1997 4 -52.58 613.43 -36.26 0.54 1973 +1998 4 -51.09 614.37 -36.53 0.54 1997 +1999 4 -50.09 615.5 -37.11 0.54 1998 +2000 4 -47.89 617.89 -37.98 0.54 1999 +2001 4 -46.31 618.77 -39.1 0.54 2000 +2002 4 -43.9 620.02 -39.29 0.54 2001 +2003 4 -41.36 621.45 -39.9 0.54 2002 +2004 4 -39.1 623.18 -40.18 0.54 2003 +2005 4 -36.98 625.03 -40.27 0.54 2004 +2006 4 -36.05 626.84 -41.62 0.54 2005 +2007 4 -32.96 629.26 -42.65 0.54 2006 +2008 4 -31.82 631.17 -43.39 0.54 2007 +2009 4 -30.72 634.63 -44.3 0.54 2008 +2010 4 -29.79 636.45 -45.57 0.54 2009 +2011 4 -28.27 637.99 -45.63 0.54 2010 +2012 4 -26.39 639.78 -46.68 0.54 2011 +2013 4 -24.2 640.96 -47.76 0.54 2012 +2014 4 -22.17 641.99 -48.83 0.54 2013 +2015 4 -21.01 642.38 -49.66 0.54 2014 +2016 4 -20.54 642.82 -51.09 0.54 2015 +2017 4 -19.07 644.42 -51.67 0.54 2016 +2018 4 -18.46 645.94 -53.09 0.54 2017 +2019 4 -16.92 649.28 -54.34 0.54 2018 +2020 4 -15.61 651.63 -54.77 0.54 2019 +2021 4 -14.71 653.18 -56.51 0.54 2020 +2022 4 -13.13 656.16 -57.13 0.54 2021 +2023 4 -11.23 657.33 -58.09 0.54 2022 +2024 4 -9.11 658.88 -58.21 0.54 2023 +2025 4 -7.68 660.51 -59.17 0.54 2024 +2026 4 -6.55 662.44 -59.99 0.54 2025 +2027 4 -5.71 664.02 -60.6 0.54 2026 +2028 4 -5.26 665.1 -60.61 0.54 2027 +2029 4 -3.83 667.32 -61.35 0.54 2028 +2030 4 -3.0 668.95 -62.25 0.54 2029 +2031 4 -1.86 672.08 -62.89 0.54 2030 +2032 4 -1.23 674.79 -63.89 0.54 2031 +2033 4 1.18 677.26 -64.02 0.54 2032 +2034 4 4.06 679.87 -64.02 0.54 2033 +2035 4 5.35 680.42 -65.0 0.54 2034 +2036 4 7.82 681.93 -66.22 0.54 2035 +2037 4 10.21 684.13 -66.68 0.54 2036 +2038 4 10.36 684.6 -68.46 0.54 2037 +2039 4 -68.53 604.57 -30.88 0.865 1961 +2040 4 -69.08 609.08 -31.45 0.865 2039 +2041 4 -69.0 614.17 -31.57 0.865 2040 +2042 4 -68.42 616.32 -31.57 0.865 2041 +2043 4 -67.21 619.67 -31.35 0.865 2042 +2044 4 -66.84 625.07 -31.61 0.865 2043 +2045 4 -67.06 630.75 -31.56 0.865 2044 +2046 4 -66.61 633.94 -31.3 0.865 2045 +2047 4 -66.46 637.44 -30.97 0.865 2046 +2048 4 -65.59 640.58 -30.89 0.54 2047 +2049 4 -65.91 644.53 -30.47 0.54 2048 +2050 4 -64.24 649.25 -30.18 0.54 2049 +2051 4 -62.58 652.77 -29.98 0.54 2050 +2052 4 -61.12 655.25 -28.66 0.54 2051 +2053 4 -59.15 659.67 -28.34 0.54 2052 +2054 4 -56.11 663.66 -28.23 0.54 2053 +2055 4 -53.24 668.4 -28.03 0.54 2054 +2056 4 -51.27 673.13 -27.75 0.54 2055 +2057 4 -50.07 679.22 -27.27 0.54 2056 +2058 4 -49.03 684.55 -26.77 0.54 2057 +2059 4 -48.58 689.26 -26.35 0.54 2058 +2060 4 -47.95 693.21 -25.72 0.54 2059 +2061 4 -47.12 696.32 -26.25 0.54 2060 +2062 4 -45.22 698.92 -28.14 0.54 2061 +2063 4 -43.1 701.08 -28.13 0.54 2062 +2064 4 -42.34 703.36 -27.97 0.54 2063 +2065 4 -40.37 706.27 -27.87 0.54 2064 +2066 4 -38.4 709.47 -27.74 0.54 2065 +2067 4 -36.9 713.44 -27.49 0.54 2066 +2068 4 -35.53 717.56 -27.21 0.54 2067 +2069 4 -34.18 720.16 -27.09 0.54 2068 +2070 4 -30.1 723.41 -25.71 0.54 2069 +2071 4 -26.09 725.2 -25.22 0.54 2070 +2072 4 -22.39 726.69 -24.74 0.54 2071 +2073 4 -19.04 728.84 -24.76 0.54 2072 +2074 4 -17.81 729.46 -24.74 0.54 2073 +2075 4 -15.69 732.52 -24.64 0.54 2074 +2076 4 -14.33 735.11 -24.51 0.54 2075 +2077 4 -13.19 736.11 -23.68 0.54 2076 +2078 4 -11.21 738.41 -23.57 0.54 2077 +2079 4 -9.54 739.49 -23.62 0.54 2078 +2080 4 -7.73 740.42 -23.69 0.54 2079 +2081 4 -17.36 277.69 26.92 1.19 1767 +2082 4 -15.39 280.28 26.99 1.19 2081 +2083 4 -13.39 282.85 25.84 1.19 2082 +2084 4 -11.82 284.96 24.78 1.19 2083 +2085 4 -10.56 287.07 23.65 1.19 2084 +2086 4 -8.93 289.09 23.25 1.19 2085 +2087 4 -8.11 290.11 22.28 1.19 2086 +2088 4 -6.9 291.04 22.26 1.19 2087 +2089 4 -5.65 291.83 23.13 0.755 2088 +2090 4 -4.02 293.26 22.67 0.755 2089 +2091 4 -3.27 294.64 22.73 0.755 2090 +2092 4 -2.78 296.0 21.38 1.08 2091 +2093 4 -1.73 298.6 21.55 1.08 2092 +2094 4 -1.02 300.03 21.09 1.08 2093 +2095 4 -0.04 301.18 20.27 1.08 2094 +2096 4 0.25 302.69 20.4 1.08 2095 +2097 4 0.7 304.37 20.52 1.08 2096 +2098 4 1.14 306.06 20.49 1.08 2097 +2099 4 1.18 307.56 19.43 1.08 2098 +2100 4 1.39 309.18 18.43 1.08 2099 +2101 4 1.89 310.03 17.56 0.755 2100 +2102 4 2.2 310.34 17.63 0.755 2101 +2103 4 3.12 311.24 17.78 0.755 2102 +2104 4 4.06 312.43 18.12 1.08 2103 +2105 4 4.95 313.69 17.94 1.08 2104 +2106 4 5.14 314.72 16.74 1.08 2105 +2107 4 4.92 316.75 16.35 1.08 2106 +2108 4 4.92 318.58 16.53 1.08 2107 +2109 4 4.84 319.58 15.73 1.08 2108 +2110 4 5.23 322.22 15.42 1.08 2109 +2111 4 5.35 324.83 15.36 1.08 2110 +2112 4 5.76 326.25 15.0 1.08 2111 +2113 4 6.0 327.82 14.61 1.08 2112 +2114 4 6.98 329.6 13.71 1.08 2113 +2115 4 7.27 332.96 13.94 1.08 2114 +2116 4 7.1 335.85 14.23 1.08 2115 +2117 4 7.55 338.44 14.45 1.08 2116 +2118 4 7.7 341.33 14.71 0.975 2117 +2119 4 7.32 344.13 14.27 0.975 2118 +2120 4 7.16 346.12 14.47 0.975 2119 +2121 4 5.72 348.74 14.18 0.975 2120 +2122 4 4.94 351.03 14.4 0.865 2121 +2123 4 4.62 354.67 14.78 0.865 2122 +2124 4 5.08 357.26 15.0 0.865 2123 +2125 4 6.28 359.11 14.99 0.865 2124 +2126 4 8.1 360.65 14.98 0.865 2125 +2127 4 9.61 362.79 14.96 0.865 2126 +2128 4 10.51 365.85 15.18 0.865 2127 +2129 4 10.8 370.41 15.6 0.865 2128 +2130 4 11.28 374.18 14.71 0.865 2129 +2131 4 12.49 378.15 14.98 0.865 2130 +2132 4 13.09 380.89 15.2 0.865 2131 +2133 4 14.89 386.39 15.5 0.865 2132 +2134 4 16.25 389.6 15.69 0.865 2133 +2135 4 16.25 392.64 15.98 0.865 2134 +2136 4 17.15 395.08 16.21 0.865 2135 +2137 4 18.52 397.07 16.28 0.865 2136 +2138 4 19.73 399.51 16.41 0.865 2137 +2139 4 20.78 402.41 16.59 0.865 2138 +2140 4 20.61 407.73 17.12 0.865 2139 +2141 4 20.7 411.29 16.79 0.865 2140 +2142 4 20.14 414.87 16.27 0.755 2141 +2143 4 19.98 419.9 16.78 0.755 2142 +2144 4 19.66 422.93 17.11 0.755 2143 +2145 4 18.58 425.81 17.49 0.755 2144 +2146 4 18.43 427.18 17.64 0.755 2145 +2147 4 18.88 429.77 17.85 0.755 2146 +2148 4 17.97 431.28 18.08 0.755 2147 +2149 4 16.43 432.48 18.34 0.755 2148 +2150 4 15.96 433.55 18.34 0.755 2149 +2151 4 16.2 436.36 17.98 0.755 2150 +2152 4 17.27 438.02 18.2 0.755 2151 +2153 4 18.34 440.93 18.45 0.755 2152 +2154 4 18.82 442.56 18.88 0.755 2153 +2155 4 18.97 443.93 19.07 0.755 2154 +2156 4 19.27 447.27 19.44 0.755 2155 +2157 4 19.56 450.62 19.74 0.755 2156 +2158 4 20.19 453.33 20.25 0.755 2157 +2159 4 20.94 455.3 20.45 0.755 2158 +2160 4 21.4 457.6 20.64 0.755 2159 +2161 4 22.46 458.97 20.67 0.755 2160 +2162 4 25.04 462.1 21.2 0.755 2161 +2163 4 26.55 466.07 21.44 0.755 2162 +2164 4 27.91 470.5 21.74 0.755 2163 +2165 4 27.89 473.84 22.08 0.755 2164 +2166 4 27.73 475.52 22.25 0.755 2165 +2167 4 28.04 477.66 23.95 0.54 2166 +2168 4 28.02 479.2 24.02 0.54 2167 +2169 4 29.08 480.27 24.02 0.54 2168 +2170 4 29.8 481.69 23.72 0.54 2169 +2171 4 29.64 483.05 23.79 0.54 2170 +2172 4 29.79 484.42 23.99 0.54 2171 +2173 4 29.53 485.89 24.61 0.54 2172 +2174 4 28.98 486.44 25.39 0.54 2173 +2175 4 29.01 488.22 26.02 0.54 2174 +2176 4 28.58 489.55 26.49 0.54 2175 +2177 4 28.94 490.01 26.5 0.54 2176 +2178 4 28.57 490.08 27.45 0.54 2177 +2179 4 27.96 490.68 27.56 0.54 2178 +2180 4 28.41 492.04 27.65 0.54 2179 +2181 4 28.56 494.01 27.91 0.54 2180 +2182 4 29.32 496.3 28.06 0.54 2181 +2183 4 29.76 496.79 27.91 0.54 2182 +2184 4 30.51 498.77 28.04 0.54 2183 +2185 4 30.47 500.33 27.82 0.54 2184 +2186 4 30.32 501.09 27.91 0.54 2185 +2187 4 30.97 501.65 28.36 0.54 2186 +2188 4 31.5 502.03 29.25 0.54 2187 +2189 4 32.59 503.08 29.56 0.54 2188 +2190 4 33.5 503.69 29.54 0.54 2189 +2191 4 34.15 504.26 29.9 0.54 2190 +2192 4 33.99 506.54 30.22 0.54 2191 +2193 4 33.84 508.21 30.4 0.54 2192 +2194 4 33.53 509.12 30.59 0.54 2193 +2195 4 35.06 509.43 30.48 0.435 2194 +2196 4 35.97 511.57 30.68 0.435 2195 +2197 4 37.18 513.69 30.85 0.435 2196 +2198 4 37.04 514.75 31.04 0.435 2197 +2199 4 37.19 516.41 31.26 0.435 2198 +2200 4 38.28 518.06 31.71 0.435 2199 +2201 4 39.65 519.14 31.68 0.435 2200 +2202 4 41.49 521.57 31.98 0.435 2201 +2203 4 41.85 521.81 32.65 0.435 2202 +2204 4 43.07 522.74 32.63 0.435 2203 +2205 4 44.13 523.8 32.7 0.435 2204 +2206 4 45.06 524.72 32.86 0.435 2205 +2207 4 45.85 526.67 33.28 0.435 2206 +2208 4 47.11 528.13 33.91 0.54 2207 +2209 4 48.02 529.06 33.99 0.54 2208 +2210 4 48.39 529.9 34.73 0.54 2209 +2211 4 48.13 531.37 35.42 0.54 2210 +2212 4 48.64 533.6 36.19 0.54 2211 +2213 4 49.72 534.64 36.58 0.54 2212 +2214 4 50.83 536.28 37.09 0.54 2213 +2215 4 51.47 537.45 37.59 0.54 2214 +2216 4 51.81 539.24 38.2 0.54 2215 +2217 4 51.83 540.13 38.5 0.54 2216 +2218 4 51.84 541.34 38.7 0.54 2217 +2219 4 52.15 542.24 38.83 0.54 2218 +2220 4 52.33 543.59 39.32 0.54 2219 +2221 4 53.6 545.36 39.99 0.54 2220 +2222 4 54.28 545.89 40.81 0.54 2221 +2223 4 55.34 546.35 40.83 0.54 2222 +2224 4 56.13 546.78 41.09 0.54 2223 +2225 4 56.77 547.36 41.39 0.54 2224 +2226 4 57.57 548.09 41.93 0.54 2225 +2227 4 57.56 550.21 42.21 0.54 2226 +2228 4 57.72 551.28 42.29 0.54 2227 +2229 4 57.57 552.32 42.56 0.54 2228 +2230 4 58.03 553.09 42.6 0.54 2229 +2231 4 58.34 553.99 42.74 0.54 2230 +2232 4 59.13 554.73 43.11 0.54 2231 +2233 4 59.45 555.63 43.32 0.54 2232 +2234 4 59.32 556.35 43.7 0.54 2233 +2235 4 59.47 558.03 43.94 0.54 2234 +2236 4 58.88 558.3 44.17 0.54 2235 +2237 4 29.04 490.61 26.63 0.54 2177 +2238 4 29.72 492.36 27.64 0.54 2237 +2239 4 30.65 494.47 27.99 0.54 2238 +2240 4 32.98 497.63 28.69 0.54 2239 +2241 4 34.1 499.26 29.35 0.54 2240 +2242 4 34.53 499.43 29.09 0.54 2241 +2243 4 35.37 501.32 28.6 0.54 2242 +2244 4 36.74 502.7 28.61 0.54 2243 +2245 4 37.77 504.43 28.3 0.54 2244 +2246 4 38.65 506.3 28.03 0.54 2245 +2247 4 39.81 507.26 27.49 0.54 2246 +2248 4 41.92 509.73 27.45 0.54 2247 +2249 4 42.23 511.56 27.6 0.54 2248 +2250 4 43.71 512.51 27.26 0.54 2249 +2251 4 44.78 513.28 27.24 0.54 2250 +2252 4 46.29 515.73 27.34 0.54 2251 +2253 4 47.49 518.78 27.44 0.54 2252 +2254 4 48.37 519.74 27.16 0.54 2253 +2255 4 49.59 521.58 27.15 0.54 2254 +2256 4 51.09 522.81 27.13 0.54 2255 +2257 4 51.84 523.29 27.02 0.54 2256 +2258 4 52.76 524.21 26.97 0.54 2257 +2259 4 53.56 524.62 27.46 0.54 2258 +2260 4 54.52 525.19 28.03 0.54 2259 +2261 4 56.24 527.44 28.55 0.54 2260 +2262 4 57.33 528.46 29.0 0.54 2261 +2263 4 58.44 530.41 29.61 0.54 2262 +2264 4 59.99 533.42 30.14 0.54 2263 +2265 4 60.91 535.55 30.41 0.54 2264 +2266 4 61.08 536.92 29.03 0.54 2265 +2267 4 59.7 537.66 29.22 0.54 2266 +2268 4 59.23 538.12 29.16 0.54 2267 +2269 4 59.76 538.5 29.98 0.54 2268 +2270 4 59.88 539.59 29.85 0.54 2269 +2271 4 59.98 539.81 29.25 0.54 2270 +2272 4 59.62 540.17 28.64 0.54 2271 +2273 4 59.29 540.5 28.4 0.54 2272 +2274 4 59.24 541.17 27.94 0.54 2273 +2275 4 59.32 541.68 27.3 0.54 2274 +2276 4 58.81 542.19 26.79 0.54 2275 +2277 4 58.14 543.48 26.23 0.54 2276 +2278 4 58.07 544.76 25.76 0.54 2277 +2279 4 58.32 546.03 25.25 0.54 2278 +2280 4 58.55 547.32 24.67 0.54 2279 +2281 4 58.82 547.67 24.22 0.54 2280 +2282 4 59.4 548.3 24.01 0.54 2281 +2283 4 60.73 549.42 23.54 0.54 2282 +2284 4 61.76 549.92 23.19 0.54 2283 +2285 4 63.43 551.0 23.07 0.54 2284 +2286 4 64.13 552.74 22.58 0.54 2285 +2287 4 64.24 553.84 22.29 0.54 2286 +2288 4 65.11 554.8 21.85 0.54 2287 +2289 4 65.65 555.19 21.08 0.54 2288 +2290 4 66.55 555.81 20.98 0.54 2289 +2291 4 67.24 556.66 20.24 0.54 2290 +2292 4 67.35 556.86 19.72 0.54 2291 +2293 4 68.34 558.0 18.99 0.54 2292 +2294 4 69.21 559.57 18.62 0.54 2293 +2295 4 70.23 560.4 18.14 0.54 2294 +2296 4 70.45 560.79 17.17 0.54 2295 +2297 4 70.86 561.29 16.81 0.54 2296 +2298 4 71.45 561.94 16.52 0.54 2297 +2299 4 72.6 563.83 15.99 0.54 2298 +2300 4 72.7 565.56 15.61 0.54 2299 +2301 4 73.54 568.06 15.03 0.54 2300 +2302 4 74.38 568.75 14.34 0.54 2301 +2303 4 74.67 569.39 12.56 0.54 2302 +2304 4 75.73 570.17 12.39 0.54 2303 +2305 4 76.89 571.45 11.81 0.54 2304 +2306 4 77.94 573.13 11.87 0.54 2305 +2307 4 78.76 575.36 11.1 0.54 2306 +2308 4 79.3 576.06 10.3 0.54 2307 +2309 4 80.31 577.19 9.71 0.54 2308 +2310 4 81.31 578.93 9.17 0.54 2309 +2311 4 82.86 579.76 8.13 0.54 2310 +2312 4 83.76 583.11 8.38 0.54 2311 +2313 4 83.89 585.4 8.52 0.54 2312 +2314 4 83.09 588.03 8.39 0.54 2313 +2315 4 82.89 591.55 8.53 0.54 2314 +2316 4 82.42 594.13 8.74 0.54 2315 +2317 4 82.09 597.81 8.83 0.54 2316 +2318 4 80.69 599.8 8.85 0.54 2317 +2319 4 79.69 600.78 8.21 0.54 2318 +2320 4 26.36 477.48 22.58 0.755 2166 +2321 4 24.42 479.08 23.43 0.755 2320 +2322 4 23.06 481.64 23.96 0.755 2321 +2323 4 21.95 482.74 23.71 0.755 2322 +2324 4 21.76 484.24 25.7 0.755 2323 +2325 4 21.44 485.15 25.82 0.755 2324 +2326 4 21.44 488.19 26.11 0.755 2325 +2327 4 22.34 490.02 26.21 0.54 2326 +2328 4 23.55 491.86 26.27 0.54 2327 +2329 4 24.7 492.57 25.41 0.54 2328 +2330 4 26.64 493.37 25.0 0.54 2329 +2331 4 28.16 494.6 24.99 0.54 2330 +2332 4 29.82 496.6 25.02 0.54 2331 +2333 4 31.5 499.79 25.33 0.54 2332 +2334 4 35.02 503.9 25.71 0.54 2333 +2335 4 36.39 505.89 25.78 0.54 2334 +2336 4 37.44 507.57 25.85 0.54 2335 +2337 4 39.27 508.79 25.87 0.54 2336 +2338 4 41.55 511.1 25.89 0.54 2337 +2339 4 43.37 512.94 25.89 0.54 2338 +2340 4 45.21 515.97 26.41 0.54 2339 +2341 4 46.45 518.1 26.65 0.54 2340 +2342 4 47.53 519.74 27.02 0.54 2341 +2343 4 48.62 522.01 27.43 0.54 2342 +2344 4 50.17 523.2 27.78 0.54 2343 +2345 4 50.85 523.74 28.6 0.54 2344 +2346 4 51.93 524.48 28.81 0.54 2345 +2347 4 53.46 526.01 28.88 0.54 2346 +2348 4 56.05 529.52 29.14 0.54 2347 +2349 4 57.74 531.78 29.58 0.54 2348 +2350 4 58.99 534.18 30.08 0.54 2349 +2351 4 59.92 536.9 30.63 0.54 2350 +2352 4 60.03 537.4 31.74 0.54 2351 +2353 4 59.3 538.72 32.39 0.54 2352 +2354 4 58.51 539.21 30.61 0.54 2353 +2355 4 58.69 540.25 29.33 0.54 2354 +2356 4 58.29 541.25 28.49 0.54 2355 +2357 4 58.14 542.0 28.57 0.54 2356 +2358 4 57.79 542.95 28.32 0.54 2357 +2359 4 57.57 544.41 27.59 0.54 2358 +2360 4 57.43 545.47 26.19 0.54 2359 +2361 4 57.68 547.64 25.92 0.54 2360 +2362 4 58.55 549.2 25.61 0.54 2361 +2363 4 60.81 550.32 25.21 0.54 2362 +2364 4 62.55 551.33 24.39 0.54 2363 +2365 4 64.07 552.86 24.33 0.54 2364 +2366 4 64.52 555.77 24.57 0.54 2365 +2367 4 66.41 556.93 23.6 0.54 2366 +2368 4 67.27 557.6 23.06 0.54 2367 +2369 4 69.63 560.75 22.39 0.54 2368 +2370 4 70.56 562.25 21.01 0.54 2369 +2371 4 71.46 562.88 19.26 0.54 2370 +2372 4 71.6 564.27 19.3 0.54 2371 +2373 4 72.57 565.75 18.3 0.54 2372 +2374 4 72.91 568.45 17.39 0.54 2373 +2375 4 73.87 569.02 16.15 0.54 2374 +2376 4 74.26 569.56 15.34 0.54 2375 +2377 4 74.92 571.33 14.54 0.54 2376 +2378 4 76.82 573.71 13.77 0.54 2377 +2379 4 77.18 574.27 12.73 0.54 2378 +2380 4 78.21 575.39 12.36 0.54 2379 +2381 4 79.55 577.99 12.43 0.54 2380 +2382 4 80.96 580.25 11.3 0.54 2381 +2383 4 81.84 581.2 11.02 0.54 2382 +2384 4 82.74 582.73 11.0 0.54 2383 +2385 4 82.67 584.93 10.54 0.54 2384 +2386 4 82.51 588.13 10.79 0.54 2385 +2387 4 81.97 591.69 10.44 0.54 2386 +2388 4 81.88 593.0 9.67 0.54 2387 +2389 4 81.54 596.06 9.69 0.54 2388 +2390 4 81.34 597.5 9.25 0.54 2389 +2391 4 80.58 599.45 8.0 0.54 2390 +2392 4 79.34 601.89 8.2 0.54 2391 +2393 4 78.44 602.79 6.85 0.54 2392 +2394 4 20.72 483.94 23.94 0.755 2323 +2395 4 19.2 485.14 24.21 0.755 2394 +2396 4 16.73 486.68 24.28 0.755 2395 +2397 4 15.18 489.43 24.38 0.755 2396 +2398 4 14.35 490.85 23.92 0.755 2397 +2399 4 12.92 492.26 23.58 0.755 2398 +2400 4 11.82 493.95 23.63 0.755 2399 +2401 4 9.92 496.43 23.29 0.755 2400 +2402 4 7.41 498.92 23.01 0.755 2401 +2403 4 5.5 501.41 22.6 0.755 2402 +2404 4 4.59 502.93 22.83 0.755 2403 +2405 4 3.9 503.93 22.08 0.755 2404 +2406 4 3.28 506.96 22.44 0.755 2405 +2407 4 1.99 508.53 22.03 0.755 2406 +2408 4 -0.01 509.91 22.05 0.755 2407 +2409 4 -1.77 511.36 21.36 0.755 2408 +2410 4 -4.16 512.8 20.74 0.755 2409 +2411 4 -6.66 514.37 20.37 0.755 2410 +2412 4 -9.32 516.4 20.06 0.755 2411 +2413 4 -11.82 518.26 19.87 0.755 2412 +2414 4 -14.28 520.09 20.05 0.755 2413 +2415 4 -16.46 522.25 20.0 0.755 2414 +2416 4 -18.6 524.05 20.3 0.755 2415 +2417 4 -20.89 525.7 20.67 0.755 2416 +2418 4 -23.94 527.8 21.16 0.755 2417 +2419 4 -26.93 529.84 20.72 0.755 2418 +2420 4 -29.22 531.8 21.05 0.755 2419 +2421 4 -29.98 534.08 21.35 0.755 2420 +2422 4 -30.75 534.84 20.96 0.755 2421 +2423 4 -31.21 536.5 21.16 0.755 2422 +2424 4 -30.76 540.01 21.46 0.755 2423 +2425 4 -30.25 542.53 20.68 0.755 2424 +2426 4 -30.3 545.32 20.51 0.755 2425 +2427 4 -30.29 546.84 19.14 0.755 2426 +2428 4 -30.31 549.89 19.29 0.755 2427 +2429 4 -29.75 552.96 19.23 0.755 2428 +2430 4 -30.09 554.54 18.9 0.755 2429 +2431 4 -31.06 556.7 18.74 0.755 2430 +2432 4 -32.64 557.96 18.4 0.755 2431 +2433 4 -32.86 561.2 18.21 0.755 2432 +2434 4 -33.38 564.45 17.96 0.755 2433 +2435 4 -34.04 566.93 17.68 0.755 2434 +2436 4 -33.96 570.49 17.41 0.755 2435 +2437 4 -33.17 573.98 16.38 0.755 2436 +2438 4 -32.45 577.82 16.32 0.755 2437 +2439 4 -32.12 579.92 15.2 0.755 2438 +2440 4 -32.25 582.78 14.22 0.755 2439 +2441 4 -32.01 584.97 13.8 0.755 2440 +2442 4 -31.58 586.68 13.62 0.755 2441 +2443 4 -30.45 589.2 12.94 0.755 2442 +2444 4 -29.95 590.83 11.99 0.755 2443 +2445 4 -29.68 592.4 11.66 0.755 2444 +2446 4 -29.88 595.32 11.58 0.755 2445 +2447 4 -29.65 597.51 11.17 0.755 2446 +2448 4 -28.28 599.5 11.17 0.755 2447 +2449 4 -26.84 601.72 10.49 0.755 2448 +2450 4 -27.0 604.61 10.79 0.755 2449 +2451 4 -26.27 606.94 10.56 0.755 2450 +2452 4 -25.77 609.69 10.64 0.755 2451 +2453 4 -26.39 612.12 10.93 0.755 2452 +2454 4 -27.3 614.54 11.26 0.755 2453 +2455 4 -28.75 616.58 10.76 0.755 2454 +2456 4 -29.58 619.82 10.55 0.755 2455 +2457 4 -29.82 622.48 10.07 0.755 2456 +2458 4 -30.14 625.24 10.14 0.755 2457 +2459 4 -31.18 628.09 9.23 0.755 2458 +2460 4 -31.97 631.59 9.5 0.755 2459 +2461 4 -33.21 634.65 9.68 0.755 2460 +2462 4 -34.46 637.08 9.95 0.755 2461 +2463 4 -34.52 640.79 9.65 0.755 2462 +2464 4 -35.78 643.25 9.62 0.755 2463 +2465 4 -36.33 645.32 8.9 0.755 2464 +2466 4 -37.28 647.47 8.89 0.755 2465 +2467 4 -38.71 650.71 8.74 0.755 2466 +2468 4 -39.06 654.69 8.85 0.755 2467 +2469 4 -38.94 658.81 9.09 0.755 2468 +2470 4 -38.69 661.92 8.7 0.755 2469 +2471 4 -38.58 665.73 8.9 0.755 2470 +2472 4 -38.48 669.28 8.79 0.755 2471 +2473 4 -36.45 674.25 8.18 0.755 2472 +2474 4 -35.23 677.91 8.42 0.755 2473 +2475 4 -35.36 680.69 7.11 0.755 2474 +2476 4 -35.11 684.39 6.85 0.755 2475 +2477 4 -35.23 686.32 7.57 0.755 2476 +2478 4 -35.07 688.29 7.83 0.755 2477 +2479 4 -35.04 690.69 6.85 0.755 2478 +2480 4 -34.86 693.24 5.88 0.755 2479 +2481 4 -34.95 696.08 5.1 0.755 2480 +2482 4 -35.02 698.27 4.64 0.755 2481 +2483 4 -34.65 700.63 4.07 0.755 2482 +2484 4 -34.07 703.1 3.9 0.755 2483 +2485 4 -32.44 705.74 2.11 0.755 2484 +2486 4 -30.6 706.97 2.06 0.755 2485 +2487 4 -28.65 708.68 1.9 0.755 2486 +2488 4 -27.71 709.59 0.45 0.755 2487 +2489 4 -25.75 710.99 0.26 0.755 2488 +2490 4 -24.15 712.43 -0.41 0.755 2489 +2491 4 -21.64 713.91 -1.26 0.755 2490 +2492 4 -20.49 715.5 -1.96 0.755 2491 +2493 4 -19.15 716.91 -2.25 0.755 2492 +2494 4 -17.57 718.38 -3.09 0.755 2493 +2495 4 -15.77 719.65 -3.57 0.755 2494 +2496 4 -14.31 720.93 -4.04 0.755 2495 +2497 4 -13.02 722.09 -4.96 0.755 2496 +2498 4 -12.3 722.91 -5.48 0.755 2497 +2499 4 0.45 311.01 18.62 0.975 2100 +2500 4 -0.41 312.78 17.74 0.975 2499 +2501 4 -1.24 313.6 17.23 0.975 2500 +2502 4 -1.75 314.11 16.64 0.975 2501 +2503 4 -1.81 316.3 16.33 0.975 2502 +2504 4 -1.73 318.05 15.65 0.975 2503 +2505 4 -2.05 319.58 15.76 0.975 2504 +2506 4 -2.58 321.63 15.25 0.975 2505 +2507 4 -3.23 322.86 15.13 0.975 2506 +2508 4 -4.25 324.19 14.06 0.865 2507 +2509 4 -5.18 325.71 14.3 0.865 2508 +2510 4 -5.49 328.14 14.56 0.865 2509 +2511 4 -4.58 331.49 14.81 0.865 2510 +2512 4 -3.58 333.83 14.42 0.865 2511 +2513 4 -3.49 335.87 13.94 0.865 2512 +2514 4 -3.81 338.62 14.08 0.865 2513 +2515 4 -5.36 341.96 14.47 0.865 2514 +2516 4 -6.25 344.68 13.45 0.865 2515 +2517 4 -7.41 347.64 12.94 0.865 2516 +2518 4 -8.21 349.66 12.76 0.865 2517 +2519 4 -9.21 351.85 12.23 0.865 2518 +2520 4 -9.95 353.8 11.13 0.865 2519 +2521 4 -10.57 356.85 11.42 0.865 2520 +2522 4 -11.34 358.81 11.68 0.865 2521 +2523 4 -12.0 361.28 11.53 0.865 2522 +2524 4 -14.22 363.19 11.01 0.865 2523 +2525 4 -15.83 365.69 10.49 0.865 2524 +2526 4 -18.06 369.41 10.07 0.865 2525 +2527 4 -19.29 373.04 10.54 0.865 2526 +2528 4 -22.14 377.07 10.14 0.865 2527 +2529 4 -23.1 379.24 9.98 0.865 2528 +2530 4 -23.53 380.89 8.84 0.865 2529 +2531 4 -23.88 383.35 8.72 0.865 2530 +2532 4 -24.53 387.03 8.77 0.865 2531 +2533 4 -24.08 389.32 8.95 0.865 2532 +2534 4 -24.09 391.45 9.16 0.865 2533 +2535 4 -24.86 394.03 9.48 0.865 2534 +2536 4 -25.48 395.85 8.05 0.865 2535 +2537 4 -26.13 397.42 7.81 0.865 2536 +2538 4 -26.68 399.8 7.1 0.865 2537 +2539 4 -26.49 400.51 6.33 0.865 2538 +2540 4 -25.58 402.04 6.39 0.865 2539 +2541 4 -24.74 402.73 7.22 0.865 2540 +2542 4 -24.29 404.69 7.51 0.865 2541 +2543 4 -23.23 406.69 7.6 0.755 2542 +2544 4 -22.88 408.46 8.29 0.755 2543 +2545 4 -22.43 409.53 8.35 0.755 2544 +2546 4 -21.7 410.33 8.05 0.755 2545 +2547 4 -20.98 411.14 7.53 0.755 2546 +2548 4 -20.3 412.0 6.66 0.755 2547 +2549 4 -19.27 412.5 6.31 0.755 2548 +2550 4 -18.52 412.96 6.2 0.865 2549 +2551 4 -17.16 414.95 6.27 0.865 2550 +2552 4 -15.9 417.06 5.15 0.865 2551 +2553 4 -14.49 419.23 4.55 0.865 2552 +2554 4 -14.04 422.43 4.83 0.865 2553 +2555 4 -13.9 425.02 3.32 0.865 2554 +2556 4 -14.02 426.97 2.32 0.865 2555 +2557 4 -14.02 429.4 1.04 0.865 2556 +2558 4 -13.44 431.27 0.72 0.865 2557 +2559 4 -12.65 432.3 -0.38 0.865 2558 +2560 4 -11.8 433.29 -1.12 0.865 2559 +2561 4 -10.33 434.26 -1.62 0.865 2560 +2562 4 -9.34 435.12 -2.54 0.865 2561 +2563 4 -7.91 435.84 -3.57 0.865 2562 +2564 4 -6.58 436.96 -3.96 0.865 2563 +2565 4 -5.57 439.61 -4.4 0.865 2564 +2566 4 -5.38 440.92 -5.34 0.865 2565 +2567 4 -4.84 441.91 -6.06 0.865 2566 +2568 4 -4.81 443.41 -7.21 0.865 2567 +2569 4 -4.87 444.69 -7.75 0.865 2568 +2570 4 -5.13 445.57 -8.86 0.865 2569 +2571 4 -5.01 446.65 -8.98 0.865 2570 +2572 4 -4.96 447.81 -9.93 0.865 2571 +2573 4 -5.06 449.15 -10.93 0.865 2572 +2574 4 -4.75 449.29 -11.62 0.54 2573 +2575 4 -3.29 449.98 -12.38 0.54 2574 +2576 4 -2.58 450.49 -13.0 0.54 2575 +2577 4 -2.33 450.54 -13.46 0.54 2576 +2578 4 -1.64 451.07 -14.22 0.54 2577 +2579 4 -0.5 452.39 -15.11 0.54 2578 +2580 4 -0.14 453.85 -15.99 0.54 2579 +2581 4 -0.05 454.99 -16.57 0.54 2580 +2582 4 0.18 455.67 -17.28 0.54 2581 +2583 4 0.48 455.98 -17.35 0.54 2582 +2584 4 0.13 456.62 -17.63 0.54 2583 +2585 4 0.62 457.37 -18.97 0.54 2584 +2586 4 -0.14 458.15 -20.56 0.54 2585 +2587 4 -0.75 459.36 -22.05 0.54 2586 +2588 4 -1.78 460.98 -22.94 0.54 2587 +2589 4 -1.54 462.27 -23.57 0.54 2588 +2590 4 -0.84 464.32 -24.05 0.54 2589 +2591 4 -1.11 464.9 -25.33 0.54 2590 +2592 4 -0.49 465.5 -25.11 0.54 2591 +2593 4 -0.34 466.55 -24.94 0.54 2592 +2594 4 -0.49 467.31 -26.45 0.54 2593 +2595 4 -0.39 468.13 -26.97 0.54 2594 +2596 4 -0.74 470.01 -27.28 0.54 2595 +2597 4 -0.97 470.83 -27.87 0.54 2596 +2598 4 -1.67 472.13 -28.58 0.54 2597 +2599 4 -0.75 473.06 -28.65 0.54 2598 +2600 4 0.2 473.93 -29.71 0.54 2599 +2601 4 0.79 474.26 -29.96 0.54 2600 +2602 4 2.11 475.08 -30.54 0.54 2601 +2603 4 2.81 475.31 -31.25 0.54 2602 +2604 4 3.67 475.98 -31.81 0.54 2603 +2605 4 5.03 477.05 -31.82 0.54 2604 +2606 4 5.69 477.93 -32.93 0.54 2605 +2607 4 6.67 479.09 -33.81 0.54 2606 +2608 4 7.67 481.74 -34.25 0.54 2607 +2609 4 8.44 482.82 -35.8 0.54 2608 +2610 4 9.07 484.33 -37.16 0.54 2609 +2611 4 9.71 485.22 -38.41 0.54 2610 +2612 4 10.16 485.67 -38.41 0.54 2611 +2613 4 11.12 486.86 -39.51 0.54 2612 +2614 4 11.62 487.59 -40.69 0.54 2613 +2615 4 12.5 488.85 -40.96 0.54 2614 +2616 4 13.86 490.84 -40.89 0.54 2615 +2617 4 14.78 491.76 -40.88 0.54 2616 +2618 4 15.2 492.24 -41.18 0.54 2617 +2619 4 15.27 493.08 -41.94 0.54 2618 +2620 4 16.1 493.79 -42.86 0.54 2619 +2621 4 16.49 494.33 -43.6 0.54 2620 +2622 4 16.5 494.62 -45.07 0.54 2621 +2623 4 17.73 495.24 -45.13 0.54 2622 +2624 4 18.31 495.88 -45.34 0.54 2623 +2625 4 18.85 496.56 -46.09 0.54 2624 +2626 4 19.69 497.56 -46.82 0.54 2625 +2627 4 20.38 498.39 -47.49 0.54 2626 +2628 4 21.06 499.85 -48.25 0.54 2627 +2629 4 21.6 501.14 -48.84 0.54 2628 +2630 4 22.39 502.73 -48.76 0.54 2629 +2631 4 22.61 503.49 -49.38 0.54 2630 +2632 4 23.96 504.88 -49.45 0.54 2631 +2633 4 25.57 508.45 -49.93 0.54 2632 +2634 4 26.97 511.91 -50.78 0.54 2633 +2635 4 27.71 513.93 -50.89 0.54 2634 +2636 4 28.54 515.53 -51.56 0.54 2635 +2637 4 28.97 516.64 -51.94 0.54 2636 +2638 4 29.65 518.08 -52.54 0.54 2637 +2639 4 30.79 519.69 -53.39 0.54 2638 +2640 4 32.95 523.04 -54.55 0.54 2639 +2641 4 33.78 525.84 -55.04 0.54 2640 +2642 4 34.99 529.21 -56.49 0.54 2641 +2643 4 35.75 531.81 -57.97 0.54 2642 +2644 4 36.13 533.87 -58.56 0.54 2643 +2645 4 35.91 537.95 -58.37 0.54 2644 +2646 4 36.37 539.31 -59.71 0.54 2645 +2647 4 37.22 541.51 -60.26 0.54 2646 +2648 4 37.72 543.15 -61.28 0.54 2647 +2649 4 38.29 543.73 -61.27 0.54 2648 +2650 4 38.41 544.21 -61.54 0.11 2649 +2651 4 37.6 545.31 -61.8 0.435 2650 +2652 4 36.83 548.18 -61.46 0.435 2651 +2653 4 36.22 550.02 -61.31 0.435 2652 +2654 4 35.87 550.37 -61.69 0.435 2653 +2655 4 35.35 553.01 -61.99 0.435 2654 +2656 4 34.88 554.08 -61.91 0.435 2655 +2657 4 35.14 556.25 -62.18 0.435 2656 +2658 4 35.21 557.09 -63.01 0.435 2657 +2659 4 35.17 557.73 -63.25 0.435 2658 +2660 4 35.41 559.32 -63.79 0.435 2659 +2661 4 35.81 559.85 -64.46 0.435 2660 +2662 4 35.76 560.51 -64.85 0.435 2661 +2663 4 36.27 561.21 -65.89 0.435 2662 +2664 4 36.21 562.19 -66.39 0.435 2663 +2665 4 36.15 562.25 -67.05 0.435 2664 +2666 4 36.99 563.24 -67.71 0.435 2665 +2667 4 38.29 565.32 -68.54 0.435 2666 +2668 4 38.96 565.85 -67.72 0.435 2667 +2669 4 39.41 566.93 -67.72 0.435 2668 +2670 4 39.67 567.27 -68.17 0.435 2669 +2671 4 39.73 567.54 -69.29 0.435 2670 +2672 4 40.12 568.06 -69.95 0.435 2671 +2673 4 40.64 568.76 -70.84 0.435 2672 +2674 4 40.89 569.12 -71.43 0.435 2673 +2675 4 41.23 569.41 -72.72 0.435 2674 +2676 4 42.55 570.23 -73.3 0.435 2675 +2677 4 43.04 570.96 -74.47 0.435 2676 +2678 4 44.59 571.87 -75.89 0.435 2677 +2679 4 46.21 572.71 -76.57 0.435 2678 +2680 4 47.96 574.0 -77.28 0.435 2679 +2681 4 48.98 574.52 -77.86 0.435 2680 +2682 4 49.68 575.06 -78.69 0.435 2681 +2683 4 51.18 576.3 -78.86 0.435 2682 +2684 4 52.38 576.63 -79.02 0.435 2683 +2685 4 53.07 576.56 -79.84 0.435 2684 +2686 4 53.63 576.92 -80.4 0.435 2685 +2687 4 54.5 577.58 -80.94 0.435 2686 +2688 4 38.92 545.0 -61.35 0.54 2649 +2689 4 39.59 545.86 -62.32 0.54 2688 +2690 4 39.83 547.44 -62.8 0.54 2689 +2691 4 40.2 548.91 -63.59 0.54 2690 +2692 4 39.93 549.79 -64.76 0.54 2691 +2693 4 40.73 551.11 -64.25 0.54 2692 +2694 4 42.55 552.96 -64.25 0.54 2693 +2695 4 44.21 554.65 -64.3 0.54 2694 +2696 4 44.58 555.52 -65.24 0.54 2695 +2697 4 45.64 557.2 -65.18 0.54 2696 +2698 4 46.81 559.99 -66.97 0.54 2697 +2699 4 48.13 562.04 -67.51 0.54 2698 +2700 4 49.0 564.21 -67.81 0.54 2699 +2701 4 50.03 565.33 -68.19 0.54 2700 +2702 4 50.9 566.28 -68.55 0.54 2701 +2703 4 52.68 567.85 -68.94 0.54 2702 +2704 4 56.02 571.54 -68.89 0.54 2703 +2705 4 58.84 573.92 -69.67 0.54 2704 +2706 4 60.43 575.37 -70.44 0.54 2705 +2707 4 61.6 576.65 -70.87 0.54 2706 +2708 4 63.19 579.03 -71.7 0.54 2707 +2709 4 63.94 579.81 -71.76 0.54 2708 +2710 4 65.4 581.1 -72.45 0.54 2709 +2711 4 66.7 581.94 -73.17 0.54 2710 +2712 4 69.07 583.76 -73.37 0.54 2711 +2713 4 70.55 584.43 -73.95 0.54 2712 +2714 4 72.2 585.53 -74.23 0.54 2713 +2715 4 73.5 586.37 -74.95 0.54 2714 +2716 4 74.67 587.34 -75.5 0.54 2715 +2717 4 76.08 588.98 -76.59 0.54 2716 +2718 4 78.19 590.26 -76.9 0.54 2717 +2719 4 79.84 591.64 -76.99 0.54 2718 +2720 4 80.71 592.31 -77.6 0.54 2719 +2721 4 82.15 593.33 -78.55 0.54 2720 +2722 4 82.64 594.06 -79.73 0.54 2721 +2723 4 84.0 594.84 -79.86 0.54 2722 +2724 4 84.73 595.34 -80.26 0.54 2723 +2725 4 85.78 596.12 -80.35 0.54 2724 +2726 4 86.62 596.81 -81.11 0.54 2725 +2727 4 -5.68 450.37 -10.83 0.755 2573 +2728 4 -7.62 451.97 -11.56 0.755 2727 +2729 4 -8.69 452.12 -11.59 0.755 2728 +2730 4 -10.72 453.23 -11.83 0.755 2729 +2731 4 -11.21 454.92 -11.91 0.755 2730 +2732 4 -12.07 457.6 -12.63 0.755 2731 +2733 4 -12.78 459.52 -13.43 0.755 2732 +2734 4 -13.79 461.13 -14.09 0.755 2733 +2735 4 -14.92 462.85 -14.51 0.755 2734 +2736 4 -16.0 466.65 -14.1 0.755 2735 +2737 4 -17.08 471.05 -13.58 0.65 2736 +2738 4 -17.55 473.64 -13.28 0.65 2737 +2739 4 -18.17 476.06 -12.99 0.65 2738 +2740 4 -18.93 477.41 -12.79 0.65 2739 +2741 4 -18.92 478.03 -12.72 0.65 2740 +2742 4 -19.99 479.08 -12.52 0.65 2741 +2743 4 -20.0 481.22 -12.32 0.65 2742 +2744 4 -20.47 484.1 -11.99 0.65 2743 +2745 4 -21.39 487.12 -11.61 0.65 2744 +2746 4 -22.53 489.47 -12.03 0.65 2745 +2747 4 -23.69 491.23 -12.66 0.65 2746 +2748 4 -25.08 494.72 -12.35 0.65 2747 +2749 4 -26.47 498.82 -11.82 0.65 2748 +2750 4 -27.38 501.55 -11.47 0.65 2749 +2751 4 -28.46 503.51 -11.17 0.65 2750 +2752 4 -29.07 504.49 -11.02 0.65 2751 +2753 4 -28.35 504.98 -11.42 0.54 2752 +2754 4 -27.59 505.75 -11.41 0.54 2753 +2755 4 -26.52 506.52 -11.44 0.54 2754 +2756 4 -25.61 507.43 -11.43 0.54 2755 +2757 4 -25.62 508.66 -11.31 0.54 2756 +2758 4 -25.5 509.45 -11.63 0.54 2757 +2759 4 -24.78 510.86 -11.86 0.54 2758 +2760 4 -24.04 512.26 -12.01 0.54 2759 +2761 4 -22.72 514.91 -12.41 0.54 2760 +2762 4 -21.39 515.71 -12.76 0.54 2761 +2763 4 -20.04 517.11 -12.96 0.54 2762 +2764 4 -18.72 518.54 -13.41 0.54 2763 +2765 4 -17.36 519.63 -13.58 0.54 2764 +2766 4 -16.54 521.23 -14.33 0.54 2765 +2767 4 -15.85 523.9 -14.89 0.54 2766 +2768 4 -15.57 526.04 -14.86 0.54 2767 +2769 4 -14.71 528.24 -15.25 0.54 2768 +2770 4 -14.13 529.49 -15.49 0.54 2769 +2771 4 -11.55 531.19 -15.62 0.54 2770 +2772 4 -9.73 533.95 -15.53 0.54 2771 +2773 4 -8.89 536.13 -15.92 0.54 2772 +2774 4 -8.8 538.78 -16.35 0.54 2773 +2775 4 -7.45 543.52 -16.1 0.54 2774 +2776 4 -7.16 546.86 -15.79 0.54 2775 +2777 4 -6.71 550.38 -15.49 0.54 2776 +2778 4 -6.26 552.04 -15.37 0.54 2777 +2779 4 -6.58 554.78 -15.08 0.54 2778 +2780 4 -6.43 557.07 -14.86 0.54 2779 +2781 4 -5.68 559.05 -14.74 0.54 2780 +2782 4 -4.0 560.12 -14.79 0.54 2781 +2783 4 -3.71 562.26 -14.61 0.54 2782 +2784 4 -3.24 565.75 -14.08 0.54 2783 +2785 4 -3.1 568.93 -13.79 0.54 2784 +2786 4 -2.49 570.47 -13.69 0.54 2785 +2787 4 -2.65 573.04 -13.35 0.54 2786 +2788 4 -3.35 576.46 -12.2 0.54 2787 +2789 4 -3.06 579.81 -11.9 0.54 2788 +2790 4 -1.85 581.94 -11.8 0.54 2789 +2791 4 -0.34 585.61 -11.58 0.54 2790 +2792 4 1.06 590.57 -10.55 0.54 2791 +2793 4 1.36 592.1 -10.43 0.54 2792 +2794 4 2.42 593.18 -10.43 0.54 2793 +2795 4 3.33 594.09 -10.42 0.54 2794 +2796 4 4.09 596.99 -10.21 0.54 2795 +2797 4 5.18 601.67 -9.4 0.54 2796 +2798 4 6.39 605.03 -9.1 0.54 2797 +2799 4 8.17 608.71 -7.63 0.54 2798 +2800 4 8.66 611.57 -6.94 0.54 2799 +2801 4 8.85 612.9 -6.37 0.54 2800 +2802 4 8.73 614.22 -5.85 0.54 2801 +2803 4 8.63 615.53 -5.1 0.54 2802 +2804 4 8.21 617.15 -4.3 0.54 2803 +2805 4 7.77 618.49 -3.91 0.54 2804 +2806 4 -29.22 505.49 -10.91 0.65 2752 +2807 4 -30.38 510.28 -11.25 0.65 2806 +2808 4 -30.54 512.56 -11.01 0.65 2807 +2809 4 -31.88 517.53 -11.53 0.65 2808 +2810 4 -32.81 520.25 -11.18 0.65 2809 +2811 4 -34.59 524.5 -10.76 0.65 2810 +2812 4 -35.11 527.47 -11.17 0.65 2811 +2813 4 -36.54 531.0 -11.15 0.65 2812 +2814 4 -37.46 534.04 -12.51 0.65 2813 +2815 4 -38.11 536.8 -12.49 0.65 2814 +2816 4 -39.15 539.05 -13.45 0.65 2815 +2817 4 -39.8 541.51 -13.53 0.65 2816 +2818 4 -41.08 544.31 -13.82 0.65 2817 +2819 4 -43.01 547.42 -14.25 0.65 2818 +2820 4 -43.05 550.19 -14.34 0.65 2819 +2821 4 -43.57 552.83 -14.65 0.65 2820 +2822 4 -44.35 554.81 -14.47 0.65 2821 +2823 4 -45.33 556.4 -14.97 0.65 2822 +2824 4 -45.18 558.68 -14.83 0.65 2823 +2825 4 -45.56 560.87 -15.27 0.65 2824 +2826 4 -46.54 563.05 -15.64 0.65 2825 +2827 4 -47.8 564.91 -15.72 0.65 2826 +2828 4 -48.62 566.93 -15.99 0.65 2827 +2829 4 -49.69 569.52 -15.7 0.65 2828 +2830 4 -51.23 572.23 -15.3 0.65 2829 +2831 4 -52.47 575.28 -15.03 0.65 2830 +2832 4 -52.71 577.04 -15.75 0.65 2831 +2833 4 -52.46 581.04 -15.91 0.65 2832 +2834 4 -52.79 585.91 -15.41 0.65 2833 +2835 4 -53.43 588.98 -15.36 0.65 2834 +2836 4 -54.13 591.48 -15.95 0.65 2835 +2837 4 -54.63 593.8 -16.06 0.65 2836 +2838 4 -55.34 595.72 -16.87 0.65 2837 +2839 4 -56.04 597.02 -17.65 0.65 2838 +2840 4 -56.59 599.4 -18.27 0.65 2839 +2841 4 -58.6 603.8 -17.89 0.65 2840 +2842 4 -59.74 607.65 -17.79 0.65 2841 +2843 4 -61.44 612.95 -17.11 0.65 2842 +2844 4 -62.51 614.61 -16.85 0.65 2843 +2845 4 -64.65 617.03 -16.41 0.65 2844 +2846 4 -66.74 620.92 -16.99 0.65 2845 +2847 4 -68.28 626.39 -16.31 0.65 2846 +2848 4 -69.9 630.41 -16.74 0.65 2847 +2849 4 -70.57 634.1 -16.78 0.65 2848 +2850 4 -72.15 636.28 -17.02 0.65 2849 +2851 4 -74.14 639.76 -16.5 0.65 2850 +2852 4 -76.29 642.78 -16.08 0.65 2851 +2853 4 -80.28 645.82 -15.8 0.65 2852 +2854 4 -83.81 648.7 -15.27 0.65 2853 +2855 4 -86.4 652.46 -14.66 0.65 2854 +2856 4 -86.7 653.63 -16.33 0.65 2855 +2857 4 -88.69 656.8 -15.83 0.65 2856 +2858 4 -90.16 660.37 -16.26 0.65 2857 +2859 4 -90.83 664.69 -16.31 0.65 2858 +2860 4 -92.21 668.77 -15.78 0.65 2859 +2861 4 -92.89 672.19 -16.15 0.65 2860 +2862 4 -94.32 674.81 -16.28 0.65 2861 +2863 4 -95.39 676.78 -15.99 0.65 2862 +2864 4 -96.13 678.12 -17.23 0.65 2863 +2865 4 -97.23 680.42 -17.13 0.65 2864 +2866 4 -98.4 681.58 -18.04 0.65 2865 +2867 4 -99.66 684.65 -18.01 0.65 2866 +2868 4 -100.65 686.24 -18.59 0.65 2867 +2869 4 -101.65 687.22 -19.15 0.65 2868 +2870 4 -101.87 688.35 -19.78 0.65 2869 +2871 4 -102.17 690.47 -19.47 0.65 2870 +2872 4 -102.02 693.06 -19.23 0.65 2871 +2873 4 -102.79 694.41 -19.03 0.65 2872 +2874 4 -103.4 696.84 -18.74 0.65 2873 +2875 4 -103.41 699.89 -18.43 0.65 2874 +2876 4 -103.28 701.26 -18.4 0.65 2875 +2877 4 -102.84 703.86 -18.25 0.65 2876 +2878 4 -102.62 706.68 -18.84 0.65 2877 +2879 4 -102.17 708.97 -18.65 0.65 2878 +2880 4 -101.57 712.62 -18.36 0.65 2879 +2881 4 -101.12 716.13 -18.05 0.65 2880 +2882 4 -101.59 719.31 -17.7 0.65 2881 +2883 4 -101.45 723.13 -17.34 0.65 2882 +2884 4 -100.55 727.08 -17.04 0.65 2883 +2885 4 -99.54 730.7 -16.84 0.65 2884 +2886 4 -99.0 736.53 -16.86 0.65 2885 +2887 4 -98.71 738.97 -16.65 0.65 2886 +2888 4 -97.84 739.93 -17.09 0.65 2887 +2889 4 -96.18 741.32 -17.26 0.65 2888 +2890 4 -94.52 743.93 -17.16 0.65 2889 +2891 4 -93.56 748.14 -17.82 0.65 2890 +2892 4 -93.31 750.02 -18.19 0.65 2891 +2893 4 -92.56 752.01 -18.14 0.65 2892 +2894 4 -91.61 753.82 -19.26 0.65 2893 +2895 4 -90.7 754.74 -19.33 0.65 2894 +2896 4 -103.71 688.65 -19.73 0.65 2869 +2897 4 -105.4 690.34 -19.64 0.65 2896 +2898 4 -107.22 692.14 -20.81 0.65 2897 +2899 4 -108.98 692.97 -21.48 0.65 2898 +2900 4 -110.42 694.08 -21.92 0.65 2899 +2901 4 -112.79 695.52 -22.47 0.65 2900 +2902 4 -114.23 696.65 -22.99 0.65 2901 +2903 4 -115.02 697.43 -23.2 0.65 2902 +2904 4 -116.57 700.18 -23.02 0.65 2903 +2905 4 -117.92 701.51 -24.12 0.65 2904 +2906 4 -118.68 703.48 -23.87 0.65 2905 +2907 4 -119.14 706.06 -23.57 0.65 2906 +2908 4 -118.3 710.09 -23.85 0.65 2907 +2909 4 -117.2 712.04 -24.91 0.65 2908 +2910 4 -116.16 715.54 -24.73 0.65 2909 +2911 4 -115.67 719.32 -25.62 0.65 2910 +2912 4 -115.32 721.72 -26.63 0.65 2911 +2913 4 -114.96 723.78 -27.29 0.65 2912 +2914 4 -114.38 725.05 -27.67 0.65 2913 +2915 4 -113.51 726.6 -27.98 0.65 2914 +2916 4 -113.22 728.44 -27.91 0.65 2915 +2917 4 -112.84 730.5 -28.49 0.65 2916 +2918 4 -27.98 401.37 6.92 0.65 2538 +2919 4 -29.04 402.74 7.15 0.65 2918 +2920 4 -31.79 405.45 7.68 0.65 2919 +2921 4 -34.06 407.7 6.67 0.65 2920 +2922 4 -35.9 409.5 7.01 0.65 2921 +2923 4 -38.35 411.92 7.41 0.65 2922 +2924 4 -41.44 414.68 7.43 0.65 2923 +2925 4 -46.14 419.63 7.14 0.65 2924 +2926 4 -48.43 422.49 7.62 0.65 2925 +2927 4 -48.54 425.34 6.78 0.65 2926 +2928 4 -48.64 428.77 6.22 0.65 2927 +2929 4 -48.07 430.64 5.89 0.65 2928 +2930 4 -47.63 433.53 6.06 0.54 2929 +2931 4 -47.99 435.73 5.77 0.54 2930 +2932 4 -48.6 437.55 4.35 0.54 2931 +2933 4 -49.3 438.85 3.63 0.54 2932 +2934 4 -49.29 439.74 5.46 0.54 2933 +2935 4 -50.1 440.54 5.16 0.54 2934 +2936 4 -50.96 441.39 4.26 0.54 2935 +2937 4 -51.52 442.86 3.39 0.54 2936 +2938 4 -52.49 444.74 3.07 0.54 2937 +2939 4 -53.85 447.31 1.86 0.54 2938 +2940 4 -54.82 448.87 1.56 0.54 2939 +2941 4 -54.78 450.35 0.58 0.54 2940 +2942 4 -55.02 452.7 0.0 0.54 2941 +2943 4 -55.12 454.94 -0.91 0.54 2942 +2944 4 -55.78 456.2 -1.17 0.54 2943 +2945 4 -57.93 457.42 -1.09 0.54 2944 +2946 4 -60.72 460.18 -1.02 0.54 2945 +2947 4 -61.87 463.13 -1.44 0.54 2946 +2948 4 -62.44 464.91 -2.35 0.54 2947 +2949 4 -62.81 466.19 -2.88 0.54 2948 +2950 4 -62.67 466.98 -3.04 0.54 2949 +2951 4 -5.99 292.26 22.29 0.865 2088 +2952 4 -5.25 294.24 22.42 0.865 2951 +2953 4 -4.94 296.38 22.6 0.865 2952 +2954 4 -3.89 299.58 22.82 0.865 2953 +2955 4 -1.99 302.56 22.11 0.865 2954 +2956 4 -0.94 304.26 22.18 0.865 2955 +2957 4 -0.79 306.85 22.41 0.865 2956 +2958 4 -1.4 310.18 22.8 0.865 2957 +2959 4 -2.07 313.26 24.29 0.865 2958 +2960 4 -1.92 315.84 24.61 0.865 2959 +2961 4 -2.08 318.11 24.91 0.865 2960 +2962 4 -2.39 321.15 25.24 0.865 2961 +2963 4 -3.31 324.17 25.7 0.865 2962 +2964 4 -4.07 326.74 26.09 0.65 2963 +2965 4 -6.04 328.69 26.61 0.65 2964 +2966 4 -7.57 332.02 27.16 0.65 2965 +2967 4 -8.07 332.51 28.39 0.65 2966 +2968 4 -9.45 333.87 28.64 0.65 2967 +2969 4 -11.59 335.97 29.04 0.65 2968 +2970 4 -12.81 339.01 29.46 0.65 2969 +2971 4 -14.35 342.33 29.92 0.65 2970 +2972 4 -16.34 344.9 30.36 0.65 2971 +2973 4 -18.01 346.25 30.64 0.65 2972 +2974 4 -19.26 348.09 32.3 0.65 2973 +2975 4 -19.83 349.85 33.05 0.65 2974 +2976 4 -20.38 351.0 33.9 0.65 2975 +2977 4 -21.41 352.01 34.62 0.65 2976 +2978 4 -21.71 352.9 34.81 0.65 2977 +2979 4 -21.97 353.78 35.37 0.65 2978 +2980 4 -21.82 356.05 35.65 0.65 2979 +2981 4 -21.83 358.78 35.92 0.65 2980 +2982 4 -21.29 360.38 36.93 0.65 2981 +2983 4 -20.75 362.49 38.54 0.65 2982 +2984 4 -19.8 363.97 39.11 0.65 2983 +2985 4 -19.08 364.47 40.23 0.65 2984 +2986 4 -18.66 364.64 41.56 0.65 2985 +2987 4 -18.04 365.84 41.93 0.65 2986 +2988 4 -17.67 365.79 42.5 0.65 2987 +2989 4 -17.2 365.91 44.37 0.65 2988 +2990 4 -6.61 91.18 9.77 0.435 1189 +2991 4 -7.98 91.62 9.94 0.435 2990 +2992 4 -8.7 91.42 10.44 0.435 2991 +2993 4 -8.69 91.11 10.56 0.65 2992 +2994 4 -8.95 90.75 11.08 0.65 2993 +2995 4 -8.89 90.09 11.62 0.65 2994 +2996 4 -9.16 89.43 11.96 0.65 2995 +2997 4 -9.56 88.31 12.41 0.65 2996 +2998 4 -9.55 87.99 12.53 0.65 2997 +2999 4 -9.83 87.06 12.69 0.65 2998 +3000 4 -9.81 86.44 12.78 0.65 2999 +3001 4 -9.77 86.09 13.2 0.65 3000 +3002 4 -9.87 85.27 13.65 0.65 3001 +3003 4 -9.68 84.79 13.89 0.65 3002 +3004 4 -9.21 84.32 13.95 0.65 3003 +3005 4 -8.85 83.96 14.57 0.65 3004 +3006 4 -8.62 83.72 15.35 0.65 3005 +3007 4 -8.21 83.31 16.42 0.65 3006 +3008 4 -7.9 82.7 16.39 0.65 3007 +3009 4 -7.85 82.04 16.93 0.65 3008 +3010 4 -7.79 81.68 17.42 0.65 3009 +3011 4 -7.91 80.57 17.78 0.435 3010 +3012 4 -7.99 80.05 18.49 0.435 3011 +3013 4 -7.97 79.73 18.53 0.435 3012 +3014 4 -8.26 79.11 18.65 0.435 3013 +3015 4 -8.4 78.63 18.84 0.435 3014 +3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/Fig2_elecModels/cells/ca1_minimal.p b/examples/Fig2_elecModels/cells/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/Fig2_elecModels/cells/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/Fig2_elecModels/cells/h10.CNG.swc b/examples/Fig2_elecModels/cells/h10.CNG.swc new file mode 100644 index 0000000..554dbe2 --- /dev/null +++ b/examples/Fig2_elecModels/cells/h10.CNG.swc @@ -0,0 +1,226 @@ +# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. +# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. +# +#---------------------------------------------------------------------- +# This file was obtained using ban2swc.pl on file h10.txt +# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 +#---------------------------------------------------------------------- +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0. 23. 0. 3.35 -1 + 2 1 0. 18. 0. 2.5 1 + 3 1 0. 0. 0. 1.058 2 + 4 3 -4.157 -2.778 0. 0.6 3 + 5 3 -5.925 -3.510 -4.62 0.55 4 + 6 3 -15.47 -7.464 -29.560 0.4 5 + 7 3 -23.89 -9.139 -72.72 0.4 6 + 8 3 -24.39 -13.43 -83.51 0.350 6 + 9 3 -9.814 -5.121 -14.780 0.5 5 + 10 3 -15.81 -6.313 -23.93 0.5 9 + 11 3 -65.94 -16.29 -100.4 0.4 10 + 12 3 -54.5 -14.01 -82.960 0.4 10 + 13 3 -17.2 -10.06 -28.09 0.4 9 + 14 3 -78.64 -51.11 -138.70 0.4 13 + 15 3 -41.69 -26.42 -72.15 0.350 13 + 16 3 -10.11 -8.731 -20.330 0.45 4 + 17 3 -14.44 -13.06 -35.11 0.350 16 + 18 3 -26.61 -21.19 -108.7 0.3 17 + 19 3 -24.2 -27.66 -123.4 0.3 17 + 20 3 -32.3 -30.92 -96.08 0.350 16 + 21 3 -45.7 -39.87 -120.2 0.3 20 + 22 3 -56.99 -67.88 -162.60 0.350 20 + 23 3 -8.889 -13.3 0. 0.65 3 + 24 3 -11.39 -15.8 -3.54 0.55 23 + 25 3 -19.39 -23.8 -14.85 0.5 24 + 26 3 -21.7 -25.35 -19.01 0.45 25 + 27 3 -33.25 -33.06 -39.79 0.4 26 + 28 3 -64.36 -45.95 -121.10 0.350 27 + 29 3 -53.54 -53.36 -109.10 0.350 27 + 30 3 -26.32 -28.43 -27.32 0.4 26 + 31 3 -68.78 -46.02 -73.28 0.3 30 + 32 3 -71.820 -73.93 -91.67 0.350 30 + 33 3 -59.82 -84.320 -123.80 0.350 25 + 34 3 -84.52 -121.30 -190.3 0.25 33 + 35 3 -34.39 -38.80 -36.06 0.350 24 + 36 3 -96.61 -80.38 -86.06 0.3 35 + 37 3 -93.98 -128. -107.7 0.3 35 + 38 3 -15.65 -29.64 -17.68 0.5 23 + 39 3 -17.01 -32.9 -21.21 0.5 38 + 40 3 -21.95 -40.29 -34.52 0.4 39 + 41 3 -50.03 -82.33 -110.2 0.3 40 + 42 3 -49.730 -81.87 -109.30 0.350 40 + 43 3 -22.75 -61.78 -65.28 0.3 39 + 44 3 -37.30 -81.9 -74.25 0.3 38 + 45 3 -2.146 -10.790 0. 0.75 3 + 46 3 -24.77 -65.42 -24.490 0.350 45 + 47 3 -54.47 -137.1 -56.64 0.350 46 + 48 3 -55.18 -138.8 -57.4 0.350 46 + 49 3 -2.146 -20.95 -4.21 0.6 45 + 50 3 -2.146 -35.730 -10.33 0.45 49 + 51 3 -22.75 -139.3 -80.89 0.3 50 + 52 3 29. -192.3 -117. 0.350 50 + 53 3 -2.146 -25.57 -6.12 0.55 49 + 54 3 -3.103 -30.38 -7.10 0.5 53 + 55 3 -49.410 -263.2 -54.31 0.350 54 + 56 3 -22.05 -125.60 -26.41 0.3 54 + 57 3 16.990 -121.80 -25.63 0.3 53 + 58 3 2.146 -10.790 0. 0.65 3 + 59 3 2.146 -20.79 0. 0.4 58 + 60 3 2.146 -235.8 0. 0.350 59 + 61 3 2.146 -250.8 0. 0.25 60 + 62 3 4.059 -15.41 0. 0.4 58 + 63 3 8.269 -25.57 0. 0.350 62 + 64 3 35.63 -163.10 -27.90 0.4 63 + 65 3 45.32 -81.02 -13.27 0.3 63 + 66 3 20.13 -54.21 0. 0.350 62 + 67 3 35.25 -130.20 15.41 0.3 66 + 68 3 78.98 -142.3 21.07 0.350 66 + 69 3 8.889 -13.3 0. 0.6 3 + 70 3 16.67 -32.08 8.42 0.5 69 + 71 3 24.45 -50.86 16.84 0.45 70 + 72 3 49.32 -175.9 42.2 0.350 71 + 73 3 84.38 -140.6 38.30 0.350 71 + 74 3 42.45 -141.4 78.51 0.4 70 + 75 3 48.94 -174. 100.7 0.3 74 + 76 3 16.080 -20.490 4.21 0.4 69 + 77 3 99.04 -103.5 52.81 0.3 76 + 78 3 41.550 -45.97 19.13 0.3 76 + 79 3 63.71 -109.60 64.06 0.3 78 + 80 3 75.26 -126.9 77.95 0.2 79 + 81 3 18.29 -12.22 0. 0.6 3 + 82 3 20.79 -14.72 3.54 0.55 81 + 83 3 26.29 -20.22 11.31 0.5 82 + 84 3 101.10 -132.20 101.30 0.350 83 + 85 3 97.5 -67.8 68.54 0.3 83 + 86 3 47.29 -41.22 41.01 0.25 82 + 87 3 21.56 -13.58 3.54 0.5 81 + 88 3 28.09 -16.28 10.61 0.45 87 + 89 3 122.10 -79.11 86.16 0.3 88 + 90 3 85.99 -27.8 50.050 0.3 88 + 91 3 43.12 -22.51 26.87 0.4 87 + 92 3 75.45 -44.11 85.070 0.350 91 + 93 3 97.61 -33.34 110. 0.350 91 + 94 4 0. 41. 0. 2.550 1 + 95 4 0. 127. 0. 0.3 94 + 96 4 5.932 70.820 -6.05 2.25 94 + 97 4 18.37 133.3 -18.73 1.25 96 + 98 4 26.63 153.3 -23.02 0.6 97 + 99 4 56.65 225.8 -38.63 0.3 98 + 100 4 29.63 160.5 -24.580 0.6 98 + 101 4 91.850 253.70 -24.580 0.350 100 + 102 4 63.97 333.1 -24.580 0.350 100 + 103 4 18.37 142.20 -20.48 1.25 97 + 104 4 18.37 145.1 -21.07 1.25 103 + 105 4 28.28 195. -42.12 0.45 104 + 106 4 33.69 222.10 -53.6 0.350 105 + 107 4 39.1 249.3 -65.08 0.25 106 + 108 4 17.47 149.6 -22.98 1.25 104 + 109 4 4.851 213.10 -49.77 0.5 108 + 110 4 -10.07 288.1 -100.9 0.350 109 + 111 4 15.85 157.8 -26.43 1.25 108 + 112 4 15.85 182.3 -31.3 0.5 111 + 113 4 15.85 235.3 -41.84 0.350 112 + 114 4 15.85 272.2 -57.15 0.3 113 + 115 4 15.85 195.10 -33.84 0.350 112 + 116 4 30.09 266.7 -33.84 0.3 115 + 117 4 0.2380 273.5 -33.84 0.3 115 + 118 4 11.72 167.8 -28.57 1.25 111 + 119 4 3.46 187.70 -32.87 1.25 118 + 120 4 -0.506 207.60 -41.28 1.25 119 + 121 4 -3.39 222.10 -47.410 1.25 120 + 122 4 -3.39 223.8 -48.52 1.25 121 + 123 4 -3.39 247.10 -64.070 0.45 122 + 124 4 1.439 271.40 -88.820 0.3 123 + 125 4 -16.080 310.90 -129.1 0.350 123 + 126 4 -3.39 248.70 -65.19 1.25 122 + 127 4 -3.209 249.70 -65.570 1.25 126 + 128 4 1.297 272.3 -75.14 0.5 127 + 129 4 12. 326.1 -111.80 0.350 128 + 130 4 -0.506 263.2 -71.31 1.25 127 + 131 4 0.2450 265.1 -71.7 0.6 130 + 132 4 3.623 273.2 -73.45 0.55 131 + 133 4 46.230 337. -105.2 0.3 132 + 134 4 22.55 368.40 -113.60 0.350 132 + 135 4 19.01 310.40 -81.45 0.45 131 + 136 4 42.74 367.6 -81.45 0.350 135 + 137 4 -0.506 280.90 -74.820 1.25 130 + 138 4 -0.506 284.8 -75.60 0.850 137 + 139 4 14.450 360. -107.4 0.4 138 + 140 4 18.06 378.1 -115. 0.3 139 + 141 4 -14.02 352.8 -104.30 0.850 138 + 142 4 -20.330 384.5 -117.7 0.70 141 + 143 4 -20.330 441.8 -141.4 0.70 142 + 144 4 -20.330 494.40 -163.20 0.45 143 + 145 4 -20.330 544.30 -196.60 0.350 144 + 146 4 -20.330 582.6 -222.10 0.3 145 + 147 4 -20.330 622.5 -248.8 0.3 145 + 148 4 -20.330 462.1 -149.8 0.6 143 + 149 4 -7.321 527.5 -163.10 0.45 148 + 150 4 -1.389 557.30 -169.20 0.350 149 + 151 4 21.51 612.6 -181.10 0.3 150 + 152 4 -1.389 630.90 -183.8 0.25 150 + 153 4 -36.6 543.9 -166.4 0.6 148 + 154 4 -46.36 592.9 -176.4 0.350 153 + 155 4 -46.36 669.6 -208.10 0.25 154 + 156 4 -74.99 662.1 -207.4 0.25 154 + 157 4 -44.44 583.30 -174.4 0.5 153 + 158 4 -44.44 665.30 -174.4 0.350 157 + 159 4 -44.44 705.30 -174.4 0.25 158 + 160 4 -87.3 686.80 -174.4 0.350 157 + 161 4 -121.7 769.90 -174.4 0.25 160 + 162 4 -32.71 414.40 -131.1 0.45 142 + 163 4 -85.74 542.4 -188.5 0.350 162 + 164 4 -120. 625.2 -225.60 0.3 163 + 165 4 -137.4 667. -244.4 0.25 164 + 166 4 -132.4 655.1 -239. 0.2 164 + 167 4 -0.506 290.7 -76.77 0.9 137 + 168 4 6.713 327. -76.77 0.8 167 + 169 4 8.664 336.8 -76.77 0.6 168 + 170 4 12.49 356. -80.67 0.5 169 + 171 4 21.48 401.3 -89.84 0.350 170 + 172 4 13.74 362.3 -76.77 0.5 168 + 173 4 23.12 385. -71.89 0.25 172 + 174 4 13.74 396.6 -69.94 0.350 172 + 175 4 -20.6 391.70 -76.77 0.350 167 + 176 4 -15.83 311.3 -91.59 0.4 126 + 177 4 -28.44 374.70 -118.4 0.3 176 + 178 4 -14.84 249.8 -67.41 0.45 121 + 179 4 -37.12 303.6 -106.30 0.350 178 + 180 4 -55.25 347.3 -138. 0.3 178 + 181 4 -3.209 221.20 -47.02 0.45 120 + 182 4 -3.209 356.6 -73.95 0.350 181 + 183 4 -31.36 289.2 -61.660 0.350 181 + 184 4 -11.94 210.70 -44.35 0.6 119 + 185 4 -36.06 246.9 -62.33 0.5 184 + 186 4 -67.18 322. -96.01 0.3 185 + 187 4 -81.14 291.90 -88.74 0.3 185 + 188 4 1.208 193.10 -34.04 0.4 118 + 189 4 -21.42 306.90 -34.04 0.3 188 + 190 4 -77.13 310.40 -34.04 0.350 188 + 191 4 18.37 165.70 -25.17 0.5 103 + 192 4 25.78 203. -25.17 0.350 191 + 193 4 56.22 356. -25.17 0.3 192 + 194 4 50.36 326.6 -25.17 0.3 192 + 195 4 16.22 176.5 -25.17 0.350 191 + 196 4 -10.31 309.90 -25.17 0.350 195 + 197 4 2.957 243.20 -25.17 0.3 195 + 198 4 -2.105 51.58 -2.15 0.350 94 + 199 4 -20.09 142. -20.48 0.350 198 + 200 4 -3.061 56.39 -3.12 0.3 198 + 201 4 -3.061 76.39 -3.12 0.3 200 + 202 4 -3.061 142.4 -3.12 0.3 201 + 203 4 -3.061 167.4 -3.12 0.3 201 + 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc b/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc new file mode 100644 index 0000000..066eaf4 --- /dev/null +++ b/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc @@ -0,0 +1,165 @@ +# Original file ko20x-07.swc edited using StdSwc version 1.31 on 7/9/13. +# Irregularities and fixes documented in ko20x-07.swc.std. See StdSwc1.31.doc for more information. +# +# SWC to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\Uzma\NewArchives\ToBeProcessed\WuOriginal\NeuroMorph files\Hippocampal CA1 Neuron\Wu test file\Before L measure\ko20x-07-T1.swc +# +# Original neuron tracing performed in Neuromantic +# which was programmed by Darren Myatt (d.r.myatt@reading.ac.uk) +# See homepage at http://www.rdg.ac.uk/Neuromantic +# +# NEUROMANTIC V1.6.3 (2012-4-11 10:34:10): Saved to 20x-7.swc +# NEUROMANTIC V1.6.3 (6/19/2013 5:45:09 PM): Saved to ko20x-07-T1.swc +# NEUROMANTIC V1.6.3 (7/9/2013 2:47:31 PM): Saved to ko20x-07-T1.swc +1 1 0.0 0.0 0.0 13.655 -1 +2 1 10.4 -8.84 0.0 13.655 1 +3 1 -10.4 8.84 0.0 13.655 1 +4 4 3.38 17.23 0.0 3.5795 1 +5 4 6.39 30.42 -6.0 1.5 4 +6 4 5.47 41.7 -10.0 1.0 5 +7 4 4.56 52.98 -10.0 1.0 6 +8 4 5.28 61.55 -13.0 1.0 7 +9 4 4.36 72.83 -15.0 1.5 8 +10 4 3.45 84.1 -16.0 1.5 9 +11 4 -0.93 94.39 -18.0 1.5 10 +12 4 -5.96 103.91 -19.0 1.5 11 +13 4 -4.4 119.65 -22.0 2.0 12 +14 4 -5.96 130.16 -23.0 1.5 13 +15 4 -6.88 141.44 -24.0 1.5 14 +16 4 -4.39 154.41 -27.0 1.5 15 +17 4 -4.35 154.43 -36.0 0.18199 16 +18 4 -4.94 169.97 -27.0 2.0 17 +19 4 -5.86 181.25 -28.0 2.0 18 +20 4 -8.83 191.65 -28.0 1.5 19 +21 4 -13.86 201.17 -29.0 1.5 20 +22 4 -14.78 212.45 -29.0 1.5 21 +23 4 -11.35 222.66 -30.0 1.5 22 +24 4 -9.34 232.75 -30.0 1.0 23 +25 4 -6.33 239.38 -30.0 1.5 24 +26 4 -10.71 249.67 -29.0 1.5 25 +27 4 -12.92 259.42 -28.0 1.5 26 +28 4 -15.9 269.82 -27.0 1.5 27 +29 4 -16.81 281.1 -27.0 1.5 28 +30 4 -14.15 291.96 -27.0 1.5 29 +31 4 -11.48 302.81 -27.0 2.0 30 +32 4 -10.11 312.15 -32.0 2.0 31 +33 4 -3.64 319.77 -35.0 2.0 32 +34 4 6.1 321.98 -36.0 2.0 33 +35 4 12.58 329.6 -37.0 2.0 34 +36 4 16.01 339.81 -38.0 2.0 35 +37 4 17.07 344.16 -44.0 1.5 36 +38 4 19.09 354.25 -45.0 1.5 37 +39 4 15.47 363.89 -45.0 1.5 38 +40 4 9.14 371.89 -44.0 1.5 39 +41 4 1.52 378.36 -42.0 1.5 40 +42 4 -5.44 385.6 -42.0 1.5 41 +43 4 -8.42 396.0 -42.0 1.5 42 +44 4 -13.45 405.52 -42.0 1.0 43 +45 4 -19.12 414.28 -42.0 1.5 44 +46 4 -19.13 414.43 -42.0 0.10175 45 +47 4 -25.45 422.28 -41.0 1.0 46 +48 4 -26.14 430.74 -40.0 1.0 47 +49 4 -27.05 442.02 -39.0 1.0 48 +50 4 -27.21 452.65 -39.0 1.5 49 +51 4 -24.41 464.05 -45.0 2.4622 50 +52 4 -13.72 417.56 -42.0 1.0 46 +53 4 -7.24 425.18 -41.0 1.0 52 +54 4 -2.29 434.1 -39.0 1.0 53 +55 4 -0.27 444.19 -39.0 1.0 54 +56 4 -38.44 416.26 -47.0 1.5 45 +57 4 -49.07 416.11 -48.0 1.5 56 +58 4 29.79 362.22 -51.0 2.0 38 +59 4 40.31 363.78 -51.0 2.0 58 +60 4 50.71 366.75 -51.0 3.0 59 +61 4 4.09 285.64 -25.0 1.5 30 +62 4 13.65 281.45 -25.0 1.5 61 +63 4 -25.07 234.31 -30.0 1.5 23 +64 4 -32.69 240.79 -29.0 1.5 63 +65 4 -39.66 248.03 -29.0 1.0 64 +66 4 -46.64 255.26 -29.0 1.0 65 +67 4 7.5 173.82 -30.0 1.0 17 +68 4 12.26 182.9 -29.0 2.25 67 +69 4 -13.4 169.28 -36.0 2.0 16 +70 4 -21.02 175.76 -33.0 2.0 69 +71 4 -28.64 182.23 -36.0 2.5 70 +72 4 11.85 146.51 -28.0 1.5 15 +73 4 20.73 150.78 -28.0 3.5 72 +74 4 -16.78 130.17 -30.0 1.5207 14 +75 4 -20.5 130.04 -30.0 2.0 74 +76 3 4.32 -18.33 0.0 2.5 1 +77 3 7.16 -22.71 1.0 1.5 76 +78 3 13.49 -30.71 1.0 2.0 77 +79 3 21.76 -36.42 -3.0 2.0 78 +80 3 32.61 -39.09 -5.0 1.5 79 +81 3 43.47 -41.75 -6.0 1.5 80 +82 3 51.93 -41.06 -6.0 1.0 81 +83 3 62.56 -40.91 -6.0 1.0 82 +84 3 72.65 -42.93 -7.0 1.0 83 +85 3 82.75 -44.94 -7.0 1.0 84 +86 3 93.61 -47.61 -8.0 1.5 85 +87 3 103.29 -53.21 -8.0 1.5 86 +88 3 113.38 -55.22 -9.0 1.5 87 +89 3 122.3 -60.18 -9.0 1.5 88 +90 3 23.43 -48.35 3.0 1.0 79 +91 3 31.7 -54.06 4.0 1.0 90 +92 3 42.56 -56.72 4.0 1.0 91 +93 3 -1.45 -17.03 -1.0 2.1506 1 +94 3 -6.05 -25.91 0.0 1.5 93 +95 3 -11.0 -34.83 -2.0 1.0 94 +96 3 -19.76 -40.51 -1.0 1.0 95 +97 3 -27.76 -46.83 1.0 1.0 96 +98 3 -35.0 -53.81 2.0 1.0 97 +99 3 -40.18 -59.9 4.0 1.0 98 +100 3 -45.13 -68.82 5.0 1.0 99 +101 3 -50.08 -77.73 8.0 1.0 100 +102 3 -54.38 -85.89 10.0 1.0 101 +103 3 -54.99 -95.87 10.0 1.0 102 +104 3 -57.0 -105.96 11.0 1.0 103 +105 3 -41.81 -51.52 2.0 1.2693 98 +106 3 -49.15 -54.25 2.0 1.3333 105 +107 3 -6.96 -40.89 -5.0 1.0 95 +108 3 -2.58 -51.17 -7.0 1.0 107 +109 3 -1.01 -61.69 -10.0 1.0 108 +110 3 1.84 -70.68 -11.0 1.0 109 +111 3 -0.82 -81.53 -13.0 1.5 110 +112 3 -0.66 -92.16 -14.0 1.5 111 +113 3 -4.09 -102.37 -15.0 1.5 112 +114 3 -8.28 -111.94 -16.0 1.5 113 +115 3 -7.7 -118.98 -19.0 1.0 114 +116 3 -6.79 -130.26 -21.0 1.5 115 +117 3 -6.63 -140.89 -23.0 1.5 116 +118 3 -10.06 -151.1 -24.0 1.5 117 +119 3 5.42 -71.09 -11.0 2.5 109 +120 3 9.04 -80.73 -13.0 1.5 119 +121 3 11.25 -90.48 -14.0 1.5 120 +122 3 15.29 -96.54 -18.0 1.5 121 +123 3 20.97 -105.3 -24.0 1.5 122 +124 3 22.84 -110.83 -26.0 1.5 123 +125 3 20.82 -120.92 -26.0 1.5 124 +126 3 -12.14 -14.17 3.0 2.3049 1 +127 3 -23.12 -16.66 6.0 1.0 126 +128 3 -32.87 -18.87 6.0 1.0 127 +129 3 -42.39 -23.9 8.0 1.0 128 +130 3 -55.74 -25.45 5.0 1.0541 129 +131 3 -67.32 -24.15 5.0 1.3017 130 +132 3 -76.81 -32.49 5.0 1.2134 131 +133 3 -85.84 -33.34 5.0 2.1213 132 +134 3 -22.46 -26.18 11.0 1.8333 126 +135 3 -32.88 -40.51 13.0 1.2133 134 +136 3 -43.11 -47.14 12.0 1.0 135 +137 3 -51.92 -60.86 12.0 1.5092 136 +138 3 -14.02 -6.34 3.0 2.5739 1 +139 3 -30.43 -5.19 5.0 1.0 138 +140 3 -41.06 -5.35 5.0 1.0 139 +141 3 -51.04 -4.74 3.0 1.0 140 +142 3 -61.67 -4.89 2.0 1.0 141 +143 3 -71.65 -4.29 1.0 1.0 142 +144 3 -82.93 -5.2 0.0 1.0 143 +145 3 -94.21 -6.12 0.0 1.0 144 +146 3 -38.36 -15.29 7.0 1.3333 139 +147 3 -45.07 -18.56 7.0 0.89754 146 +148 3 -50.51 -15.69 7.0 1.1667 147 +149 3 -58.94 -18.15 7.0 1.2693 148 +150 3 -26.71 -13.17 9.0 0.84984 138 +151 3 -41.67 -26.91 9.0 1.3333 150 +152 3 -48.31 -28.28 9.0 0.89753 151 diff --git a/examples/Fig2_elecModels/chans/CA1.morph.xml b/examples/Fig2_elecModels/chans/CA1.morph.xml new file mode 100644 index 0000000..2a3815b --- /dev/null +++ b/examples/Fig2_elecModels/chans/CA1.morph.xml @@ -0,0 +1,12673 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + soma_group + + + + soma_group + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + axon_group + soma_group + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + all + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id b/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id new file mode 100644 index 0000000..be0ea2f --- /dev/null +++ b/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id @@ -0,0 +1 @@ +2a3815b394f8bcb4b6450081d9ba45d20abdf3cf \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/Ca.xml b/examples/Fig2_elecModels/chans/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/Fig2_elecModels/chans/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig2_elecModels/chans/CaConc.xml b/examples/Fig2_elecModels/chans/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/Fig2_elecModels/chans/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/Fig2_elecModels/chans/DoubExpSyn.xml b/examples/Fig2_elecModels/chans/DoubExpSyn.xml new file mode 100644 index 0000000..58cc74e --- /dev/null +++ b/examples/Fig2_elecModels/chans/DoubExpSyn.xml @@ -0,0 +1,32 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + diff --git a/examples/Fig2_elecModels/chans/Generated.net.xml b/examples/Fig2_elecModels/chans/Generated.net.xml new file mode 100644 index 0000000..d2f3f34 --- /dev/null +++ b/examples/Fig2_elecModels/chans/Generated.net.xml @@ -0,0 +1,59 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 + +Cell Group: CA1_CG contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/Glu.xml b/examples/Fig2_elecModels/chans/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/Fig2_elecModels/chans/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/Fig2_elecModels/chans/HChannel.xml b/examples/Fig2_elecModels/chans/HChannel.xml new file mode 100644 index 0000000..c1c91b4 --- /dev/null +++ b/examples/Fig2_elecModels/chans/HChannel.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/Fig2_elecModels/chans/KChannel_HH.xml b/examples/Fig2_elecModels/chans/KChannel_HH.xml new file mode 100644 index 0000000..dfd1d3c --- /dev/null +++ b/examples/Fig2_elecModels/chans/KChannel_HH.xml @@ -0,0 +1,49 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations adapted from HH paper for modern convention of external potential being zero + + Padraig Gleeson + + + + Simple example of K conductance in squid giant axon. Based on channel from Hodgkin and Huxley 1952 + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + A. L. Hodgkin and A. F. Huxley, A quantitative description of membrane current and its application + to conduction and excitation in nerve, J. Physiol., vol. 117, pp. 500-544, 1952. + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12991237 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/LeakConductance.xml b/examples/Fig2_elecModels/chans/LeakConductance.xml new file mode 100644 index 0000000..c40270d --- /dev/null +++ b/examples/Fig2_elecModels/chans/LeakConductance.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/NMDA.xml b/examples/Fig2_elecModels/chans/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/Fig2_elecModels/chans/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/Fig2_elecModels/chans/NaChannel_HH.xml b/examples/Fig2_elecModels/chans/NaChannel_HH.xml new file mode 100644 index 0000000..5e52c69 --- /dev/null +++ b/examples/Fig2_elecModels/chans/NaChannel_HH.xml @@ -0,0 +1,58 @@ + + + + ChannelML file containing a single Channel description + + + + + Equations adapted from HH paper for modern convention of external potential being zero + + Padraig Gleeson + + + + Simple example of Na conductance in squid giant axon. Based on channel from Hodgkin and Huxley 1952 + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + A. L. Hodgkin and A. F. Huxley, A quantitative description of membrane current and + its application to conduction and excitation in nerve, J. Physiol., vol. 117, pp. 500-544, 1952. + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12991237 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/hd.xml b/examples/Fig2_elecModels/chans/hd.xml new file mode 100644 index 0000000..a882baa --- /dev/null +++ b/examples/Fig2_elecModels/chans/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/kad.xml b/examples/Fig2_elecModels/chans/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/Fig2_elecModels/chans/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/kap.xml b/examples/Fig2_elecModels/chans/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/Fig2_elecModels/chans/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/kdr.xml b/examples/Fig2_elecModels/chans/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/Fig2_elecModels/chans/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/na3.xml b/examples/Fig2_elecModels/chans/na3.xml new file mode 100644 index 0000000..94e9713 --- /dev/null +++ b/examples/Fig2_elecModels/chans/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig2_elecModels/chans/nax.xml b/examples/Fig2_elecModels/chans/nax.xml new file mode 100644 index 0000000..1225d6a --- /dev/null +++ b/examples/Fig2_elecModels/chans/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/Fig2_elecModels/chans/pas.xml b/examples/Fig2_elecModels/chans/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/Fig2_elecModels/chans/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/Fig3_chemModels/Fig3ABC.g b/examples/Fig3_chemModels/Fig3ABC.g new file mode 100644 index 0000000..d784b24 --- /dev/null +++ b/examples/Fig3_chemModels/Fig3ABC.g @@ -0,0 +1,832 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun May 18 16:56:17 2014 + +include kkit {argv 1} + +FASTDT = 5e-05 +SIMDT = 0.01 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 10000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 3e-18 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 3e-18 3 sphere "" white black 0 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/lac_gene 0 yellow black x 0 0 "" lac_gene \ + /home2/bhalla/scripts/modules/lac_gene_0.g 0 0 0 27 0 0 +simundump text /kinetics/lac_gene/notes 0 \ + "This is a group of reactions resulting in the production\nof Lac" +call /kinetics/lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac" +simundump kpool /kinetics/lac_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 52 yellow 26 -12 0 +simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 0 0 0 \ + 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 26 -11 0 +simundump text /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes 0 \ + "Rates from\nBox 1 Elowitz et al Nature (2000)\n403: 335-338" +call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +simundump kreac /kinetics/lac_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ + yellow 30 -13 0 +simundump text /kinetics/lac_gene/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/lac_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 yellow 33 -12 0 +simundump text /kinetics/lac_gene/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/lac_gene/l_op_1rst_bound/lac_transcription 0 0 0 0 0 \ + 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 33 -10 0 +simundump text /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes 0 \ + "Rates from\nBox 1 Elowitz et al Nature 2000\n403: 335-338" +call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature 2000" \ +"403: 335-338" +simundump kreac /kinetics/lac_gene/inhib_reac 0 0.0055556 2.24 "" white \ + yellow 36 -13 0 +simundump text /kinetics/lac_gene/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 224 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/lac_gene/lac_operator 0 0 0.022222 0.022222 40 40 0 \ + 0 1800 0 /kinetics/geometry 36 yellow 40 -12 0 +simundump text /kinetics/lac_gene/lac_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/lac_gene/lac_operator/lac_transcription2 0 0 0 0 0 \ + 1800 2.4998 2 0.5 0 1 "" red 36 "" 40 -11 0 +simundump text /kinetics/lac_gene/lac_operator/lac_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\n403:335-338" +call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"403:335-338" +simundump kpool /kinetics/lac_gene/lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 yellow 26 -8 0 +simundump text /kinetics/lac_gene/lac_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/lac_gene/lac_mRNA/lac_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" 20 -10 0 +simundump text /kinetics/lac_gene/lac_mRNA/lac_translation/notes 0 \ + "Rates from \nBox 1 Elowitz et al Nature (2000)\n403: 335-338" +call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +simundump kpool /kinetics/lac_gene/lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 62 yellow 20 -15 0 +simundump text /kinetics/lac_gene/lac/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kpool /kinetics/lac_gene/degraded_lac 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 yellow 20 -19 0 +simundump text /kinetics/lac_gene/degraded_lac/notes 0 \ + "Degradation product of lac protein" +call /kinetics/lac_gene/degraded_lac/notes LOAD \ +"Degradation product of lac protein" +simundump kpool /kinetics/lac_gene/degraded_lac_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 yellow 33 -8 0 +simundump text /kinetics/lac_gene/degraded_lac_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kreac /kinetics/lac_gene/lac_mRNA_degradation 0 0.005775 0 "" white \ + yellow 29 -7 0 +simundump text /kinetics/lac_gene/lac_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kreac /kinetics/lac_gene/lac_degradation 0 0.016666 0 "" white \ + yellow 20 -17 0 +simundump text /kinetics/lac_gene/lac_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to scaled by approx 1.4 to get desired levels\n\nElowitz et al Nature 2000. Vol403 335-338" +call /kinetics/lac_gene/lac_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz et al Nature 2000. Vol403 335-338" +simundump kpool /kinetics/lac_gene/AminoAcids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 52 yellow 20 -8 0 +simundump text /kinetics/lac_gene/AminoAcids/notes 0 "" +call /kinetics/lac_gene/AminoAcids/notes LOAD \ +"" +simundump kpool /kinetics/lac_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry 6 yellow 40 -8 0 +simundump text /kinetics/lac_gene/Nucleotides/notes 0 "" +call /kinetics/lac_gene/Nucleotides/notes LOAD \ +"" +simundump group /kinetics/TetR_gene 0 61 black x 0 0 "" TetR_gene \ + /home2/bhalla/scripts/modules/TetR_gene_0.g 0 0 0 -2 0 0 +simundump text /kinetics/TetR_gene/notes 0 \ + "This is a group of reactions resulting in the production\nof Tet R" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" +simundump kpool /kinetics/TetR_gene/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 46 61 -3 -12 0 +simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 0 0 \ + 0 0 0 1800 0.0024998 0.002 0.0005 0 1 "" red 46 "" -3 -11 0 +simundump text /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes 0 \ + "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/inhib_reac[1] 0 0.0055556 0.09 "" white \ + 61 1 -13 0 +simundump text /kinetics/TetR_gene/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf = 1 /nM/sec\nKb = 9 /sec\n\nBox 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +simundump kpool /kinetics/TetR_gene/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 61 4 -12 0 +simundump text /kinetics/TetR_gene/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription 0 0 0 0 \ + 0 1800 0.0024998 0.002 0.0005 0 1 "" red 2 "" 4 -10 0 +simundump text /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes 0 \ + "Rates from \nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/inhib_reac 0 0.0055556 2.24 "" white 61 7 \ + -13 0 +simundump text /kinetics/TetR_gene/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/TetR_gene/TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 11 61 -9 -15 0 +simundump text /kinetics/TetR_gene/TetR/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kpool /kinetics/TetR_gene/degraded_TetR 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 61 -9 -19 0 +simundump text /kinetics/TetR_gene/degraded_TetR/notes 0 \ + "Degradation product of lac protein" +call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ +"Degradation product of lac protein" +simundump kreac /kinetics/TetR_gene/TetR_degradation 0 0.01666 0 "" white 61 \ + -9 -17 0 +simundump text /kinetics/TetR_gene/TetR_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get appropriate levels\n\nElowitz etal Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +simundump kpool /kinetics/TetR_gene/TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 12 61 -3 -8 0 +simundump text /kinetics/TetR_gene/TetR_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/TetR_gene/TetR_mRNA/TetR_translation 0 0 0 0 0 1800 \ + 0.83494 0.668 0.167 0 1 "" red 12 "" -9 -10 0 +simundump text /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/TetR_gene/TetR_mRNA_degradation 0 0.005775 0 "" \ + white 61 1 -7 0 +simundump text /kinetics/TetR_gene/TetR_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kpool /kinetics/TetR_gene/degraded_TetR_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 61 4 -8 0 +simundump text /kinetics/TetR_gene/degraded_TetR_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kpool /kinetics/TetR_gene/TetR_operator 0 0 0.022222 0.022222 40 40 \ + 0 0 1800 0 /kinetics/geometry 36 61 11 -12 0 +simundump text /kinetics/TetR_gene/TetR_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/TetR_gene/TetR_operator/TetR_transcription2 0 0 0 0 \ + 0 1800 2.4998 2 0.5 0 1 "" red 36 "" 11 -11 0 +simundump text /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kpool /kinetics/TetR_gene/Nucleotides 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 11 -8 0 +simundump text /kinetics/TetR_gene/Nucleotides/notes 0 "" +call /kinetics/TetR_gene/Nucleotides/notes LOAD \ +"" +simundump kpool /kinetics/TetR_gene/AminoAcids 0 0 0.00055555 0.00055555 \ + 0.99999 0.99999 0 0 1800 4 /kinetics/geometry blue 61 -9 -8 0 +simundump text /kinetics/TetR_gene/AminoAcids/notes 0 "" +call /kinetics/TetR_gene/AminoAcids/notes LOAD \ +"" +simundump group /kinetics/Lcl 0 15 black x 0 0 "" yellow \ + /home2/bhalla/scripts/modules/yellow_0.g 0 0 0 56 0 0 +simundump text /kinetics/Lcl/notes 0 \ + "This is a group of reactions resulting in the production\nof Lambda cl" +call /kinetics/Lcl/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +simundump kpool /kinetics/Lcl/l_op_2nd_bound[1] 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 52 15 55 -12 0 +simundump text /kinetics/Lcl/l_op_2nd_bound[1]/notes 0 \ + "it represents the promotor with both of its sites\n bound by the inhibitor" +call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 0 0 0 0 0 \ + 1800 0.0024998 0.002 0.0005 0 1 "" red 52 "" 55 -11 0 +simundump text /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes 0 "" +call /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1/notes LOAD \ +"" +simundump kreac /kinetics/Lcl/inhib_reac[1] 0 0.0055556 0.09 "" white 15 59 \ + -13 0 +simundump text /kinetics/Lcl/inhib_reac[1]/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=9 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/Lcl/l_op_1rst_bound 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 15 62 -12 0 +simundump text /kinetics/Lcl/l_op_1rst_bound/notes 0 \ + "it represents the promotor with one of its sites\n bound by the inhibitor" +call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +simundump kenz /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription 0 0 0 0 0 1800 \ + 0.0024998 0.002 0.0005 0 1 "" red 2 "" 62 -10 0 +simundump text /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2000)\nNature 403:335-338" +call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +simundump kreac /kinetics/Lcl/inhib_reac 0 0.0055556 2.24 "" white 15 65 -13 \ + 0 +simundump text /kinetics/Lcl/inhib_reac/notes 0 \ + "It signifies the first binding of the repressor\n with the operator\n\nKf=1 /nM/sec\nKb=224 /sec\n\nBox1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +simundump kpool /kinetics/Lcl/AminoAcids 0 0 0.00055555 0.00055555 0.99999 \ + 0.99999 0 0 1800 4 /kinetics/geometry 52 15 48 -8 0 +simundump text /kinetics/Lcl/AminoAcids/notes 0 "" +call /kinetics/Lcl/AminoAcids/notes LOAD \ +"" +simundump kpool /kinetics/Lcl/Nucleotides 0 0 0.00055555 0.00055555 0.99999 \ + 0.99999 0 0 1800 4 /kinetics/geometry 6 15 69 -8 0 +simundump text /kinetics/Lcl/Nucleotides/notes 0 "" +call /kinetics/Lcl/Nucleotides/notes LOAD \ +"" +simundump kreac /kinetics/Lcl/Lcl_mRNA_degradation 0 0.005775 0 "" white 15 \ + 58 -7 0 +simundump text /kinetics/Lcl/Lcl_mRNA_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac m-RNA,\n the half life of which is two minutes.\nt1/2=.693/k where k denotes kf" +call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +simundump kpool /kinetics/Lcl/Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 5 15 55 -8 0 +simundump text /kinetics/Lcl/Lcl_mRNA/notes 0 \ + "The m-RNA transcribed by the lac operator\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/Lcl/Lcl_mRNA/Lcl_translation 0 0 0 0 0 1800 0.83494 \ + 0.668 0.167 0 1 "" red 5 "" 48 -10 0 +simundump text /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +simundump kpool /kinetics/Lcl/Lcl 0 0 0.055555 0.055555 99.999 99.999 0 0 \ + 1800 0 /kinetics/geometry 24 15 48 -15 0 +simundump text /kinetics/Lcl/Lcl/notes 0 \ + "Lac translated from lac m-RNA\nDerived from Figure 1(c) stochastic version\n\nElowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +simundump kreac /kinetics/Lcl/Lcl_degradation 0 0.016666 0 "" white 15 48 -17 \ + 0 +simundump text /kinetics/Lcl/Lcl_degradation/notes 0 \ + "This reaction denotes the degradation of the Lac\n the half life of which is ten minutes.\nt1/2=.693/k where k denotes kf\n\nNote: Rates had to be scaled by 1.4 to get the desired levels\n\nElowitz etal Nature 2000. Vol403 335-338" +call /kinetics/Lcl/Lcl_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get the desired levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +simundump kpool /kinetics/Lcl/degraded_Lcl 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 2 15 48 -19 0 +simundump text /kinetics/Lcl/degraded_Lcl/notes 0 \ + "Degradation product of lac protein" +call /kinetics/Lcl/degraded_Lcl/notes LOAD \ +"Degradation product of lac protein" +simundump kpool /kinetics/Lcl/degraded_Lcl_mRNA 0 0 0 0 0 0 0 0 1800 0 \ + /kinetics/geometry 1 15 62 -8 0 +simundump text /kinetics/Lcl/degraded_Lcl_mRNA/notes 0 \ + "Degradation product of lac m-RNA" +call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +simundump kpool /kinetics/Lcl/Lcl_operator 0 0 0.022222 0.022222 40 40 0 0 \ + 1800 0 /kinetics/geometry 36 15 69 -12 0 +simundump text /kinetics/Lcl/Lcl_operator/notes 0 \ + "The lac operator under normal conditions\n drives transcription of lac\n\nElowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +simundump kenz /kinetics/Lcl/Lcl_operator/Lcl_transcription2 0 0 0 0 0 1800 \ + 2.4998 2 0.5 0 1 "" red 36 "" 69 -11 0 +simundump text /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes 0 \ + "Rates from\nBox 1 Elowitz et al (2003)\nNature 403:335-338" +call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 10000 0 2.0691 0 +simundump xgraph /graphs/conc2 0 0 10000 0 3.33 0 +simundump xplot /graphs/conc1/TetR.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 11 0 0 1 +simundump xplot /graphs/conc1/lac.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 62 0 0 1 +simundump xplot /graphs/conc1/Lcl.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 24 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 10000 0 95.756 0 +simundump xgraph /moregraphs/conc4 0 0 10000 0 1 0 +simundump xcoredraw /edit/draw 0 -11 71 -21 2 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"Repressilator model: A synthetic oscillatory network" \ +"of transcriptional regulators designed by Michael B. Elowitz and" \ +"Stanislas Leibler 2000 Nature 403(6767):335-338" +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_2nd_bound[1] /kinetics/lac_gene/inhib_reac[1] PRODUCT n +addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/l_op_1rst_bound REAC B A +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/lac_gene/l_op_1rst_bound REAC A B +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/l_op_1rst_bound/lac_transcription ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/l_op_1rst_bound/lac_transcription SUBSTRATE n +addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/l_op_1rst_bound /kinetics/lac_gene/inhib_reac PRODUCT n +addmsg /kinetics/Lcl/Lcl /kinetics/lac_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/inhib_reac /kinetics/lac_gene/lac_operator REAC A B +addmsg /kinetics/lac_gene/lac_operator /kinetics/lac_gene/lac_operator/lac_transcription2 ENZYME n +addmsg /kinetics/lac_gene/Nucleotides /kinetics/lac_gene/lac_operator/lac_transcription2 SUBSTRATE n +addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/lac_mRNA REAC A B +addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/lac_mRNA MM_PRD pA +addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA/lac_translation ENZYME n +addmsg /kinetics/lac_gene/AminoAcids /kinetics/lac_gene/lac_mRNA/lac_translation SUBSTRATE n +addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/lac MM_PRD pA +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/lac_gene/lac REAC A B +addmsg /kinetics/lac_gene/lac_degradation /kinetics/lac_gene/degraded_lac REAC B A +addmsg /kinetics/lac_gene/lac_mRNA_degradation /kinetics/lac_gene/degraded_lac_mRNA REAC B A +addmsg /kinetics/lac_gene/lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation SUBSTRATE n +addmsg /kinetics/lac_gene/degraded_lac_mRNA /kinetics/lac_gene/lac_mRNA_degradation PRODUCT n +addmsg /kinetics/lac_gene/degraded_lac /kinetics/lac_gene/lac_degradation PRODUCT n +addmsg /kinetics/lac_gene/lac /kinetics/lac_gene/lac_degradation SUBSTRATE n +addmsg /kinetics/lac_gene/lac_mRNA/lac_translation /kinetics/lac_gene/AminoAcids REAC sA B +addmsg /kinetics/lac_gene/lac_operator/lac_transcription2 /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1 /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/lac_gene/l_op_1rst_bound/lac_transcription /kinetics/lac_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 SUBSTRATE n +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1] /kinetics/TetR_gene/inhib_reac[1] PRODUCT n +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/inhib_reac[1] /kinetics/TetR_gene/l_op_1rst_bound REAC A B +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/l_op_1rst_bound REAC B A +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription SUBSTRATE n +addmsg /kinetics/TetR_gene/l_op_1rst_bound /kinetics/TetR_gene/inhib_reac PRODUCT n +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/lac_gene/lac /kinetics/TetR_gene/inhib_reac SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/TetR MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/Lcl/inhib_reac /kinetics/TetR_gene/TetR REAC A B +addmsg /kinetics/TetR_gene/TetR_degradation /kinetics/TetR_gene/degraded_TetR REAC B A +addmsg /kinetics/TetR_gene/TetR /kinetics/TetR_gene/TetR_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/degraded_TetR /kinetics/TetR_gene/TetR_degradation PRODUCT n +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/TetR_mRNA MM_PRD pA +addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/TetR_mRNA REAC A B +addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA/TetR_translation ENZYME n +addmsg /kinetics/TetR_gene/AminoAcids /kinetics/TetR_gene/TetR_mRNA/TetR_translation SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation SUBSTRATE n +addmsg /kinetics/TetR_gene/degraded_TetR_mRNA /kinetics/TetR_gene/TetR_mRNA_degradation PRODUCT n +addmsg /kinetics/TetR_gene/TetR_mRNA_degradation /kinetics/TetR_gene/degraded_TetR_mRNA REAC B A +addmsg /kinetics/TetR_gene/inhib_reac /kinetics/TetR_gene/TetR_operator REAC A B +addmsg /kinetics/TetR_gene/TetR_operator /kinetics/TetR_gene/TetR_operator/TetR_transcription2 ENZYME n +addmsg /kinetics/TetR_gene/Nucleotides /kinetics/TetR_gene/TetR_operator/TetR_transcription2 SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR_operator/TetR_transcription2 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1 /kinetics/TetR_gene/Nucleotides REAC sA B +addmsg /kinetics/TetR_gene/TetR_mRNA/TetR_translation /kinetics/TetR_gene/AminoAcids REAC sA B +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_2nd_bound[1] REAC B A +addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 SUBSTRATE n +addmsg /kinetics/Lcl/l_op_2nd_bound[1] /kinetics/Lcl/inhib_reac[1] PRODUCT n +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac[1] SUBSTRATE n +addmsg /kinetics/Lcl/inhib_reac[1] /kinetics/Lcl/l_op_1rst_bound REAC A B +addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/l_op_1rst_bound REAC B A +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription SUBSTRATE n +addmsg /kinetics/Lcl/l_op_1rst_bound /kinetics/Lcl/inhib_reac PRODUCT n +addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/inhib_reac SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /kinetics/Lcl/inhib_reac SUBSTRATE n +addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/AminoAcids REAC sA B +addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Nucleotides REAC sA B +addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation SUBSTRATE n +addmsg /kinetics/Lcl/degraded_Lcl_mRNA /kinetics/Lcl/Lcl_mRNA_degradation PRODUCT n +addmsg /kinetics/Lcl/l_op_2nd_bound[1]/Lcl_transcription1 /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/Lcl_operator/Lcl_transcription2 /kinetics/Lcl/Lcl_mRNA MM_PRD pA +addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/Lcl_mRNA REAC A B +addmsg /kinetics/Lcl/Lcl_mRNA /kinetics/Lcl/Lcl_mRNA/Lcl_translation ENZYME n +addmsg /kinetics/Lcl/AminoAcids /kinetics/Lcl/Lcl_mRNA/Lcl_translation SUBSTRATE n +addmsg /kinetics/Lcl/Lcl_mRNA/Lcl_translation /kinetics/Lcl/Lcl MM_PRD pA +addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/lac_gene/inhib_reac /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/lac_gene/inhib_reac[1] /kinetics/Lcl/Lcl REAC A B +addmsg /kinetics/Lcl/Lcl /kinetics/Lcl/Lcl_degradation SUBSTRATE n +addmsg /kinetics/Lcl/degraded_Lcl /kinetics/Lcl/Lcl_degradation PRODUCT n +addmsg /kinetics/Lcl/Lcl_degradation /kinetics/Lcl/degraded_Lcl REAC B A +addmsg /kinetics/Lcl/Lcl_mRNA_degradation /kinetics/Lcl/degraded_Lcl_mRNA REAC B A +addmsg /kinetics/Lcl/inhib_reac /kinetics/Lcl/Lcl_operator REAC A B +addmsg /kinetics/Lcl/Lcl_operator /kinetics/Lcl/Lcl_operator/Lcl_transcription2 ENZYME n +addmsg /kinetics/Lcl/Nucleotides /kinetics/Lcl/Lcl_operator/Lcl_transcription2 SUBSTRATE n +addmsg /kinetics/TetR_gene/TetR /graphs/conc1/TetR.Co PLOT Co *TetR.Co *11 +addmsg /kinetics/lac_gene/lac /graphs/conc1/lac.Co PLOT Co *lac.Co *62 +addmsg /kinetics/Lcl/Lcl /graphs/conc1/Lcl.Co PLOT Co *Lcl.Co *24 +enddump +// End of dump + +call /kinetics/lac_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lac" +call /kinetics/lac_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/lac_gene/l_op_2nd_bound[1]/lac_transcription1/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +call /kinetics/lac_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/lac_gene/l_op_1rst_bound/lac_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al Nature 2000" \ +"403: 335-338" +call /kinetics/lac_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 224 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/lac_gene/lac_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_operator/lac_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"403:335-338" +call /kinetics/lac_gene/lac_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/lac_mRNA/lac_translation/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al Nature (2000)" \ +"403: 335-338" +call /kinetics/lac_gene/lac/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/lac_gene/degraded_lac/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/lac_gene/degraded_lac_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/lac_gene/lac_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/lac_gene/lac_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to scaled by approx 1.4 to get desired levels" \ +"" \ +"Elowitz et al Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Tet R" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/TetR_gene/l_op_2nd_bound[1]/TetR_transcription1/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf = 1 /nM/sec" \ +"Kb = 9 /sec" \ +"" \ +"Box 1 Elowitz et al Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/TetR_gene/l_op_1rst_bound/TetR_transcription/notes LOAD \ +"Rates from " \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/TetR_gene/TetR/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/degraded_TetR/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/TetR_gene/TetR_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get appropriate levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +call /kinetics/TetR_gene/TetR_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA/TetR_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/TetR_gene/TetR_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/TetR_gene/degraded_TetR_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/TetR_gene/TetR_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/TetR_gene/TetR_operator/TetR_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lcl/notes LOAD \ +"This is a group of reactions resulting in the production" \ +"of Lambda cl" +call /kinetics/Lcl/l_op_2nd_bound[1]/notes LOAD \ +"it represents the promotor with both of its sites" \ +" bound by the inhibitor" +call /kinetics/Lcl/inhib_reac[1]/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=9 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/l_op_1rst_bound/notes LOAD \ +"it represents the promotor with one of its sites" \ +" bound by the inhibitor" +call /kinetics/Lcl/l_op_1rst_bound/Lcl_transcription/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2000)" \ +"Nature 403:335-338" +call /kinetics/Lcl/inhib_reac/notes LOAD \ +"It signifies the first binding of the repressor" \ +" with the operator" \ +"" \ +"Kf=1 /nM/sec" \ +"Kb=224 /sec" \ +"" \ +"Box1 Elowitz etal Nature 2000 vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac m-RNA," \ +" the half life of which is two minutes." \ +"t1/2=.693/k where k denotes kf" +call /kinetics/Lcl/Lcl_mRNA/notes LOAD \ +"The m-RNA transcribed by the lac operator" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_mRNA/Lcl_translation/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +call /kinetics/Lcl/Lcl/notes LOAD \ +"Lac translated from lac m-RNA" \ +"Derived from Figure 1(c) stochastic version" \ +"" \ +"Elowitz et al Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_degradation/notes LOAD \ +"This reaction denotes the degradation of the Lac" \ +" the half life of which is ten minutes." \ +"t1/2=.693/k where k denotes kf" \ +"" \ +"Note: Rates had to be scaled by 1.4 to get the desired levels" \ +"" \ +"Elowitz etal Nature 2000. Vol403 335-338" +call /kinetics/Lcl/degraded_Lcl/notes LOAD \ +"Degradation product of lac protein" +call /kinetics/Lcl/degraded_Lcl_mRNA/notes LOAD \ +"Degradation product of lac m-RNA" +call /kinetics/Lcl/Lcl_operator/notes LOAD \ +"The lac operator under normal conditions" \ +" drives transcription of lac" \ +"" \ +"Elowitz etal Nature 2000 Vol 403:335-338" +call /kinetics/Lcl/Lcl_operator/Lcl_transcription2/notes LOAD \ +"Rates from" \ +"Box 1 Elowitz et al (2003)" \ +"Nature 403:335-338" +complete_loading diff --git a/examples/Fig3_chemModels/Fig3D.py b/examples/Fig3_chemModels/Fig3D.py new file mode 100644 index 0000000..b2117f2 --- /dev/null +++ b/examples/Fig3_chemModels/Fig3D.py @@ -0,0 +1,67 @@ +import numpy +import pylab +import moose +import time + +''' +This example implements a reaction-diffusion like system which is +bistable and propagates losslessly. It is based on the NEURON example +rxdrun.py, but incorporates more compartments and runs for a longer time. +The system is implemented in a function rather than as a proper system +of chemical reactions. Please see rxdReacDiffusion.py for a variant that +uses a reaction plus a function object to control its rates. +''' + +dt = 0.1 + +# define the geometry +compt = moose.CylMesh( '/cylinder' ) +compt.r0 = compt.r1 = 1 +compt.x1 = 100 +compt.diffLength = 0.2 +assert( compt.numDiffCompts == compt.x1/compt.diffLength ) + +#define the molecule. Its geometry is defined by its parent volume, cylinder +c = moose.Pool( '/cylinder/pool' ) +c.diffConst = 1 # define diffusion constant + +# Here we set up a function calculation +func = moose.Function( '/cylinder/pool/func' ) +func.expr = "-x0 * (0.3 - x0) * (1 - x0)" +func.x.num = 1 #specify number of input variables. + +#Connect the molecules to the func +moose.connect( c, 'nOut', func.x[0], 'input' ) +#Connect the function to the pool +moose.connect( func, 'valueOut', c, 'increment' ) + +#Set up solvers +ksolve = moose.Ksolve( '/cylinder/ksolve' ) +dsolve = moose.Dsolve( '/cylinder/dsolve' ) +stoich = moose.Stoich( '/cylinder/stoich' ) +stoich.compartment = compt +stoich.ksolve = ksolve +stoich.dsolve = dsolve +stoich.path = '/cylinder/##' +for i in range( 10, 18 ): + moose.setClock( i, dt ) + +#initialize +x = numpy.arange( 0, compt.x1, compt.diffLength ) +c.vec.nInit = [ (q < 0.2 * compt.x1) for q in x ] + +# Run and plot it. +moose.reinit() +updateDt = 50 +runtime = updateDt * 4 +plt = pylab.plot( x, c.vec.n, label='t = 0 ') +t1 = time.time() +for t in range( 0, runtime-1, updateDt ): + moose.start( updateDt ) + plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) +print "Time = ", time.time() - t1 + +pylab.ylim( 0, 1.05 ) +pylab.legend() +pylab.show() + diff --git a/examples/Fig3_chemModels/Fig3_NEURON.py b/examples/Fig3_chemModels/Fig3_NEURON.py new file mode 100644 index 0000000..ea4330c --- /dev/null +++ b/examples/Fig3_chemModels/Fig3_NEURON.py @@ -0,0 +1,44 @@ +from neuron import h, rxd +import numpy +from matplotlib import pyplot +import time + +# needed for standard run system +h.load_file('stdrun.hoc') + +dend = h.Section() +dend.nseg = 501 + +# WHERE the dynamics will take place +where = rxd.Region(h.allsec()) + +# WHO the actors are +u = rxd.Species(where, d=1, initial=0) + +# HOW they act +bistable_reaction = rxd.Rate(u, -u * (1 - u) * (0.3 - u)) + +# initial conditions +h.finitialize() +for node in u.nodes: + if node.x < .2: node.concentration = 1 + +def plot_it(color='k'): + y = u.nodes.concentration + x = u.nodes.x + + # convert x from normalized position to microns + x = dend.L * numpy.array(x) + + pyplot.plot(x, y, color) + +plot_it('r') +interval = 50 + +t1 = time.time() +for i in xrange(1, 5): + h.continuerun(i * interval) + plot_it() +print "Time = ", time.time() - t1 + +pyplot.show() diff --git a/examples/Fig4_ReacDiff/CaMKII_merged77.g b/examples/Fig4_ReacDiff/CaMKII_merged77.g new file mode 100644 index 0000000..41b8311 --- /dev/null +++ b/examples/Fig4_ReacDiff/CaMKII_merged77.g @@ -0,0 +1,2076 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun Nov 15 09:10:36 2015 + +include kkit {argv 1} + +FASTDT = 0.0001 +SIMDT = 0.001 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 2000 +TRANSIENT_TIME = 10 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-20 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1e-20 3 sphere "" white black -4 -26 \ + 0 +simundump geometry /kinetics/geometry[1] 0 1e-18 3 sphere "" white black 1 \ + -24 0 +simundump geometry /kinetics/geometry[2] 0 9e-20 3 sphere "" white black 4 \ + -20 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 3 -6 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-18 3 sphere "" white black -2 \ + -12 0 +simundump geometry /kinetics/geometry[5] 0 1e-18 3 sphere "" white black 9 \ + -11 0 +simundump geometry /kinetics/geometry[6] 0 9e-20 3 sphere "" white black 10 \ + -15 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump group /kinetics/PSD 0 20 black x 0 0 "" PSD defaultfile.g 0 0 0 27 \ + 12 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/actCaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 12 20 70 33 0 +simundump text /kinetics/PSD/actCaMKII/notes 0 "" +call /kinetics/PSD/actCaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_1 0 0 0 0 0 6 0.083325 8 2 0 0 \ + "" red 35 "" -6 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_1/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/actCaMKII/CaMKII_2 0 0 0 0 0 6 0.083325 8 2 0 0 \ + "" red 35 "" -2 3 0 +simundump text /kinetics/PSD/actCaMKII/CaMKII_2/notes 0 "" +call /kinetics/PSD/actCaMKII/CaMKII_2/notes LOAD \ +"" +simundump group /kinetics/PSD/PP1_PSD 1 yellow 20 x 0 0 "" PP1_PSD \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 12 27 0 +simundump text /kinetics/PSD/PP1_PSD/notes 0 "" +call /kinetics/PSD/PP1_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-active 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry cyan yellow 44 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/notes 0 \ + "Cohen et al Meth Enz 159 390-408 is main source of info\nconc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 61 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 71 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 78 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c 0 0 0 0 0 54.001 \ + 0.020833 0.5 0.125 0 0 "" red cyan "" 88 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a 0 0 0 0 0 54.001 \ + 0.083333 2 0.5 0 0 "" red cyan "" 83 25 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1 1 0 4 4 24 24 0 0 6 0 \ + /kinetics/geometry orange yellow 35.35 21.88 0 +simundump text /kinetics/PSD/PP1_PSD/I1/notes 0 \ + "I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet\ninhibitor (Foulkes et al Eur J Biochem 132 309-313 9183).\nWe treat it as non-compet, so it just turns the enz off\nwithout interacting with the binding site.\nCohen et al ann rev bioch refer to results where conc is \n1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM,\nwe need >= 1.8 uM.\n\n" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 36 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 1 1 0 "" white yellow 33 \ + 26 0 +simundump text /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes 0 \ + "Let us assume that the equil in this case is very far over to the\nright. This is probably safe.\n" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Inact-PP1 1 83.33 0.1 "" white yellow \ + 17 26 0 +simundump text /kinetics/PSD/PP1_PSD/Inact-PP1/notes 0 \ + "K inhib = 1nM from Cohen Ann Rev Bioch 1989, \n4 nM from Foukes et al \nAssume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +simundump kpool /kinetics/PSD/PP1_PSD/PP1-I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry brown yellow 22 29 0 +simundump text /kinetics/PSD/PP1_PSD/PP1-I1_p/notes 0 "" +call /kinetics/PSD/PP1_PSD/PP1-I1_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/I1_p 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry orange yellow 21 22 0 +simundump text /kinetics/PSD/PP1_PSD/I1_p/notes 0 \ + "Dephosph is mainly by PP2B" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +simundump kpool /kinetics/PSD/PP1_PSD/CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 1 yellow -1 33 0 +simundump text /kinetics/PSD/PP1_PSD/CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/CaM-Bind-CaN 0 7.6667 0.5 "" white \ + yellow 21 40 0 +simundump text /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/CaM-Bind-CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP1_PSD/Ca2_CaN 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue yellow 12 33 0 +simundump text /kinetics/PSD/PP1_PSD/Ca2_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca2_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/PP1_PSD/Ca_bind_CaN 0 0.69444 1 "" white yellow \ + 7 40 0 +simundump text /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes 0 "" +call /kinetics/PSD/PP1_PSD/Ca_bind_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/move_to_PSD 0 0.1 3 "" white 0 -8 -5 0 +simundump text /kinetics/PSD/move_to_PSD/notes 0 "" +call /kinetics/PSD/move_to_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_S2 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R_S2/notes 0 "" +call /kinetics/PSD/R_S2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpS 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/R_SpS/notes 0 "" +call /kinetics/PSD/R_SpS/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R_SpSp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 28 0 0 1 0 +simundump text /kinetics/PSD/R_SpSp/notes 0 "" +call /kinetics/PSD/R_SpSp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/basal_phosphatase 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry 61 0 -4 -2 0 +simundump text /kinetics/PSD/basal_phosphatase/notes 0 \ + "There isn't any clear info for this. I had originally called \nit PP2A, but that causes odd interactions with other pathways.\n" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P1 0 0 0 0 0 60 0.62499 \ + 0.59998 0.15 0 0 "" red 61 "" -6 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P1/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/basal_phosphatase/P2 0 0 0 0 0 60 0.62499 \ + 0.59998 0.15 0 0 "" red 61 "" -2 -1 0 +simundump text /kinetics/PSD/basal_phosphatase/P2/notes 0 "" +call /kinetics/PSD/basal_phosphatase/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PKA-active 1 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry yellow 20 14 17 0 +simundump text /kinetics/PSD/PKA-active/notes 0 "" +call /kinetics/PSD/PKA-active/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PKA-active/PKA-phosph-I1 0 0 0 0 0 54.001 \ + 0.012345 4 1 0 0 "" red 27 "" 27 19 0 +simundump text /kinetics/PSD/PKA-active/PKA-phosph-I1/notes 0 "" +call /kinetics/PSD/PKA-active/PKA-phosph-I1/notes LOAD \ +"" +simundump group /kinetics/PSD/CaMKII_PSD 0 33 20 x 0 0 "" CaMKII_PSD \ + defaultfile.g 0 0 0 39 32 0 +simundump text /kinetics/PSD/CaMKII_PSD/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-auto 0 0 2 0.5 3 12 0 0 6 0 \ + /kinetics/geometry 29 33 74 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph 0 0 0 0 0 7.732 \ + 0.066667 8 2 0 0 "" red 29 "" 72 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 0 0 0 0 0 7.732 \ + 0.016667 2 0.5 0 0 "" red 29 "" 59 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 0 0 0 0 0 54.001 \ + 0.2 24 6 0 0 "" red 29 "" 78 23 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot_CaMKII 0 0 2 2 12 12 0 0 6 0 \ + /kinetics/geometry 23 33 84 36 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/286P 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 59 33 52 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/286P/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/286P/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 47 33 61 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 0 \ + 0 7.732 0.10417 8 2 0 0 "" red 47 "" 72 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 0 \ + 54.001 0.3125 24 6 0 0 "" red 47 "" 78 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 0 \ + 7.732 0.026042 2 0.5 0 0 "" red 47 "" 60 20 0 +simundump text /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/basal_CaMKII 0 0 0.5 0.5 3 3 0 0 6 0 \ + /kinetics/geometry blue 33 81 33 0 +simundump text /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM 0 10.945 \ + 0.0022 "" white 33 54 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM 0 10.945 2.2 "" \ + white 33 65 28 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/NMDAR 0 0 40 40 240 240 0 0 6 0 \ + /kinetics/geometry blue 33 67 8 0 +simundump text /kinetics/PSD/CaMKII_PSD/NMDAR/notes 0 \ + "The stochiometry is a bit off here. Each NMDAR actually\nbinds to a holoenzyme, about 12 CaMKII subunits. But\nour CaMKII calculations are in terms of individual\nsubunits. So as a hack, we put in much more NMDAR than\nis actually there.\n\nDec 2011: Reconsidered this, now only 120 NMDARs.\n\nJune 02 2012. Consider these as anchor points for a dodecamer.\nThere are far more effected CaMKII bindin...." +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_2 0 0.002 0 "" white 33 56 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_2/notes 0 \ + "Same as for transloc_1\n\n\n" +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/transloc_1 0 0.002 0 "" white 33 63 \ + 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/transloc_1/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/transloc_1/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaMKII_PSD/back_1 0 0.04 6.6667e-06 "" white 33 \ + 75 12 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_1/notes 0 \ + "Rates set by the translocation experiments of \nShen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +simundump kreac /kinetics/PSD/CaMKII_PSD/back_2 0 0.04 6.6667e-06 "" white 33 \ + 89 13 0 +simundump text /kinetics/PSD/CaMKII_PSD/back_2/notes 0 "Same as for back_1\n" +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM 0 0 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry 47 33 56 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 50 33 63 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 62 33 75 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 0 33 81 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 30 33 88 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[7] 50 black 66 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[7] 2 black 84 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII_p_p_p/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 0 \ + 0 6 0 /kinetics/geometry[7] 46 black 58 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII 0 5e-13 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[7] 61 black 78 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry[7] 36 black 91 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry 57 33 69 22 0 +simundump text /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaMKII_PSD/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 6 \ + 0 /kinetics/geometry[7] 54 black 73 17 0 +simundump text /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes 0 "" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/PSD/PP2A 1 0 1 1 6 6 0 0 6 0 /kinetics/geometry red \ + 20 45 17 0 +simundump text /kinetics/PSD/PP2A/notes 0 "" +call /kinetics/PSD/PP2A/notes LOAD \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0013289 0.92593 0.22222 0 0 "" red red "" 29 27 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes 0 \ + "k1 changed from 3.3e-6 to 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +simundump kenz /kinetics/PSD/PP2A/PP2A-dephosph-I1 1 0 0 0 0 54.001 0.0013289 \ + 0.92593 0.22222 0 0 "" red red "" 27 20 0 +simundump text /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes 0 \ + "PP2A does most of the dephosph of I1 at basal Ca levels. See\nthe review by Cohen in Ann Rev Biochem 1989.\nFor now, lets halve Km. k1 was 3.3e-6, now 6.6e-6\n" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +simundump group /kinetics/PSD/CaM 1 blue 20 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 31 37 0 +simundump text /kinetics/PSD/CaM/notes 0 "" +call /kinetics/PSD/CaM/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM 1 5e-13 20 20 120 120 0 0 6 0 \ + /kinetics/geometry pink blue 35 39 0 +simundump text /kinetics/PSD/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca3-bind-Ca 1 0.6 10 "" white blue 49 \ + 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10\n24 Sep 2015\nThis is a bit too low affinity. Changing to match K2 at \nKd = 2.8." +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ +"24 Sep 2015" \ +"This is a bit too low affinity. Changing to match K2 at " \ +"Kd = 2.8." +simundump kpool /kinetics/PSD/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry hotpink blue 47 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca3/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-bind-Ca 1 1.4141 8.4853 "" white blue \ + 37 36 0 +simundump text /kinetics/PSD/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 43 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/PSD/CaM/CaM-Ca2-bind-Ca 1 0.60001 10 "" white blue \ + 45 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/PSD/CaM/CaM-Ca-bind-Ca 1 1.4141 8.4853 "" white \ + blue 41 36 0 +simundump text /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry pink blue 39 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/PSD/CaM/Ca 1 1e-11 0.08 0.08 0.48 0.48 0 0 6 0 \ + /kinetics/geometry red blue 43 33 0 +simundump text /kinetics/PSD/CaM/Ca/notes 0 "" +call /kinetics/PSD/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 6 0 \ + /kinetics/geometry blue blue 52 39 0 +simundump text /kinetics/PSD/CaM/CaM-Ca4/notes 0 "" +call /kinetics/PSD/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM/Ca_input 0 0 0.08 0.08 0.48 0.48 0 0 6 4 \ + /kinetics/geometry[3] blue black 49 33 0 +simundump text /kinetics/PSD/CaM/Ca_input/notes 0 "" +call /kinetics/PSD/CaM/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/CaM/Ca_stim 0 50 50 "" white black 46 31 0 +simundump text /kinetics/PSD/CaM/Ca_stim/notes 0 "" +call /kinetics/PSD/CaM/Ca_stim/notes LOAD \ +"" +simundump kpool /kinetics/PSD/CaM_CaN 1 0 0 0 0 0 0 0 6 0 /kinetics/geometry \ + 1 20 30 33 0 +simundump text /kinetics/PSD/CaM_CaN/notes 0 "" +call /kinetics/PSD/CaM_CaN/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" white 1 "" 29 30 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/dephosph_inhib1 1 0 0 0 0 54.001 \ + 0.0063334 1.36 0.34 0 0 "" red 1 "" 29 24 0 +simundump text /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes 0 "" +call /kinetics/PSD/CaM_CaN/dephosph_inhib1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/CaN_1 0 0 0 0 0 6 0.033333 8 2 0 0 "" \ + red pink "" -6 -4 0 +simundump text /kinetics/PSD/CaM_CaN/CaN_1/notes 0 "" +call /kinetics/PSD/CaM_CaN/CaN_1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/CaM_CaN/CaN_2 0 0 0 0 0 6 0.033333 8 2 0 0 "" \ + red pink "" -2 -4 0 +simundump text /kinetics/PSD/CaM_CaN/CaN_2/notes 0 "" +call /kinetics/PSD/CaM_CaN/CaN_2/notes LOAD \ +"" +simundump group /kinetics/DEND 0 13 black x 0 0 "" DEND defaultfile.g 0 0 0 \ + 11 -30 0 +simundump text /kinetics/DEND/notes 0 "" +call /kinetics/DEND/notes LOAD \ +"" +simundump group /kinetics/DEND/CaM 1 blue 13 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 34 -32 0 +simundump text /kinetics/DEND/CaM/notes 0 "" +call /kinetics/DEND/CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaM/CaM 1 5e-13 1 1 600 600 0 0 600 0 \ + /kinetics/geometry pink blue 38 -30 0 +simundump text /kinetics/DEND/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/DEND/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-Ca3-bind-Ca 1 0.006 10 "" white blue \ + 52 -33 0 +simundump text /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/DEND/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry hotpink blue 50 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca3/notes 0 "" +call /kinetics/DEND/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-bind-Ca 1 0.014141 8.4853 "" white \ + blue 40 -33 0 +simundump text /kinetics/DEND/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/DEND/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry pink blue 46 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/DEND/CaM/CaM-Ca2-bind-Ca 1 0.006 10 "" white blue \ + 48 -33 0 +simundump text /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/DEND/CaM/CaM-Ca-bind-Ca 1 0.014141 8.4853 "" white \ + blue 44 -33 0 +simundump text /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/DEND/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry pink blue 42 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/DEND/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 600 0 \ + /kinetics/geometry blue blue 55 -30 0 +simundump text /kinetics/DEND/CaM/CaM-Ca4/notes 0 "" +call /kinetics/DEND/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaM/CaM_x2 0 10 10 "" white black 28 -30 0 +simundump text /kinetics/DEND/CaM/CaM_x2/notes 0 "" +call /kinetics/DEND/CaM/CaM_x2/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[1] blue blue 19 -32 0 +simundump text /kinetics/DEND/CaM/CaM_xchange/notes 0 "" +call /kinetics/DEND/CaM/CaM_xchange/notes LOAD \ +"" +simundump group /kinetics/DEND/CaMKII_BULK 0 33 13 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 42 -37 0 +simundump text /kinetics/DEND/CaMKII_BULK/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/tot-auto 0 0 0.18 0.5 300 108 0 0 \ + 600 0 /kinetics/geometry 29 33 77 -33 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.00066667 8 2 0 0 "" red 29 "" 75 -46 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 69.588 \ + 0.00016667 2 0.5 0 0 "" red 29 "" 62 -46 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 486.01 \ + 0.002 24 6 0 0 "" red 29 "" 81 -46 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/tot_CaMKII 0 0 0.18 1.18 708 108 0 \ + 0 600 0 /kinetics/geometry 23 33 87 -33 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 600 \ + 0 /kinetics/geometry 47 33 64 -36 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 0 \ + 0 0 69.588 0.0010417 8 2 0 0 "" red 47 "" 75 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.003125 24 6 0 0 "" red 47 "" 81 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.00026042 2 0.5 0 0 "" red 47 "" 63 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/basal_CaMKII 0 0 0.5 0.5 300 300 0 \ + 0 600 0 /kinetics/geometry blue 33 84 -36 0 +simundump text /kinetics/DEND/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 0.10945 \ + 0.0022 "" white 33 57 -41 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM 0 0.10945 2.2 "" \ + white 33 68 -41 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 \ + 0 0 600 0 /kinetics/geometry 47 33 59 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 600 \ + 0 /kinetics/geometry 50 33 66 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry 57 33 72 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII 0 5e-13 1 1 600 600 0 0 600 \ + 0 /kinetics/geometry 62 33 78 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry 30 33 91 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry 0 33 84 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/DEND/CaMKII_BULK/CaMKII_x2 0 10 10 "" white black \ + 95 -49 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_x2/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII_x2/notes LOAD \ +"" +simundump kpool /kinetics/DEND/CaMKII_BULK/CaMKII_xchange 0 2e-11 0 0 0 0 0 0 \ + 600 0 /kinetics/geometry[5] blue black 99 -47 0 +simundump text /kinetics/DEND/CaMKII_BULK/CaMKII_xchange/notes 0 "" +call /kinetics/DEND/CaMKII_BULK/CaMKII_xchange/notes LOAD \ +"" +simundump kpool /kinetics/DEND/actCaMKII 0 0 0.18 0.18 108 108 0 0 600 0 \ + /kinetics/geometry 12 5 73 -36 0 +simundump text /kinetics/DEND/actCaMKII/notes 0 "" +call /kinetics/DEND/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/DEND/PP2A 1 0 1.2 1.2 720 720 0 0 600 0 \ + /kinetics/geometry 62 5 47 -44 0 +simundump text /kinetics/DEND/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/DEND/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/DEND/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.0033334 8 2 \ + 0 0 "" red 62 "" 64 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr286/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.0033334 8 \ + 2 0 0 "" red 62 "" 74 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.0033334 8 2 \ + 0 0 "" red 62 "" 81 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr305/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.00083332 2 \ + 0.5 0 0 "" red 62 "" 91 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/DEND/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.0033334 8 \ + 2 0 0 "" red 62 "" 86 -44 0 +simundump text /kinetics/DEND/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/DEND/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump kpool /kinetics/DEND/Ca_input 0 0 0.08 0.08 48 48 0 0 600 4 \ + /kinetics/geometry[4] blue black 53 -37 0 +simundump text /kinetics/DEND/Ca_input/notes 0 "" +call /kinetics/DEND/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/DEND/Ca_stim 0 50 50 "" white black 49 -38 0 +simundump text /kinetics/DEND/Ca_stim/notes 0 "" +call /kinetics/DEND/Ca_stim/notes LOAD \ +"" +simundump group /kinetics/SPINE 0 5 black x 0 0 "" SPINE defaultfile.g 0 0 0 \ + 29 -23 0 +simundump text /kinetics/SPINE/notes 0 "" +call /kinetics/SPINE/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/iR 0 0 4.4444 4.4444 240 240 0 0 54 0 \ + /kinetics/geometry 0 yellow -8 -10 0 +simundump text /kinetics/SPINE/iR/notes 0 "Same as Fus3\n" +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump group /kinetics/SPINE/CaM 1 blue 5 x 0 0 "" defaultfile \ + defaultfile.g 0 fbb0ff81553508bc01f3dd51428742fb 0 33 2 0 +simundump text /kinetics/SPINE/CaM/notes 0 "" +call /kinetics/SPINE/CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM 1 5e-13 20 20 1080 1080 0 0 54 0 \ + /kinetics/geometry pink blue 37 4 0 +simundump text /kinetics/SPINE/CaM/CaM/notes 0 \ + "There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)\nSay 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying\nit is comparable to CaMK levels. \n" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca 1 0.066667 10 "" white \ + blue 51 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes 0 \ + "Use K3 = 21.5 uM here from Stemmer and Klee table 3.\nkb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca3 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry hotpink blue 49 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca3/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca3/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-bind-Ca 1 0.15712 8.4853 "" white \ + blue 39 1 0 +simundump text /kinetics/SPINE/CaM/CaM-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca2 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 45 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kreac /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca 1 0.066668 10 "" white \ + blue 47 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes 0 \ + "K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get\nkb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10\n" +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM-Ca-bind-Ca 1 0.15712 8.4853 "" white \ + blue 43 1 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes 0 \ + "Lets use the fast rate consts here. Since the rates are so different, I am not\nsure whether the order is relevant. These correspond to the TR2C fragment.\nWe use the Martin et al rates here, plus the Drabicowski binding consts.\nAll are scaled by 3X to cell temp.\nkf = 2e-10 kb = 72\nStemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11.\nIf kb=72, kf = 2e-10 (Exactly the same !)...." +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry pink blue 41 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca/notes 0 \ + "This is the intermediate where the TR2 end (the high-affinity end) has\nbound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +simundump kpool /kinetics/SPINE/CaM/Ca 1 1e-11 0.08 0.08 4.32 4.32 0 0 54 0 \ + /kinetics/geometry red blue 45 -2 0 +simundump text /kinetics/SPINE/CaM/Ca/notes 0 "" +call /kinetics/SPINE/CaM/Ca/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM-Ca4 1 1e-12 0 0 0 0 0 0 54 0 \ + /kinetics/geometry blue blue 54 4 0 +simundump text /kinetics/SPINE/CaM/CaM-Ca4/notes 0 "" +call /kinetics/SPINE/CaM/CaM-Ca4/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaM/CaM_x2 0 1 100 "" white black 34 10 0 +simundump text /kinetics/SPINE/CaM/CaM_x2/notes 0 "" +call /kinetics/SPINE/CaM/CaM_x2/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM/CaM_xchange 0 2e-11 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[2] blue black 29 7 0 +simundump text /kinetics/SPINE/CaM/CaM_xchange/notes 0 "" +call /kinetics/SPINE/CaM/CaM_xchange/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaMKII_BULK 0 33 5 x 0 0 "" CaMKII_BULK \ + defaultfile.g 0 0 0 41 -3 0 +simundump text /kinetics/SPINE/CaMKII_BULK/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-auto 0 0 2 0.5 27 108 0 0 54 \ + 0 /kinetics/geometry 29 33 76 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph 0 0 0 0 0 \ + 69.588 0.0074074 8 2 0 0 "" red 29 "" 74 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 0 0 0 0 0 \ + 69.588 0.0018519 2 0.5 0 0 "" red 29 "" 61 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 0 0 0 0 0 \ + 486.01 0.022222 24 6 0 0 "" red 29 "" 80 -12 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot_CaMKII 0 0 2 22 1188 108 0 0 \ + 54 0 /kinetics/geometry 23 33 86 1 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot_CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/286P 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 59 33 54 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/286P/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/286P/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII 0 0 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 47 33 63 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph 0 0 \ + 0 0 0 69.588 0.011574 8 2 0 0 "" red 47 "" 74 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 0 0 0 0 \ + 0 486.01 0.034722 24 6 0 0 "" red 47 "" 80 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 0 0 0 0 \ + 0 69.588 0.0028935 2 0.5 0 0 "" red 47 "" 62 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes 0 \ + "" +call /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/basal_CaMKII 0 0 0.5 0.5 27 27 0 \ + 0 54 0 /kinetics/geometry blue 33 83 -2 0 +simundump text /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/basal_CaMKII/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM 0 1.2161 \ + 0.0022 "" white 33 56 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes 0 \ + "Same values as for the main compartment\nCan the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM 0 1.2161 2.2 "" \ + white 33 67 -7 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM 0 1e-12 0 0 0 0 \ + 0 0 54 0 /kinetics/geometry 47 33 58 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM 0 1e-12 0 0 0 0 0 0 54 \ + 0 /kinetics/geometry 50 33 65 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 0 1e-12 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 57 33 71 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII 0 5e-13 20 20 1080 1080 0 \ + 0 54 0 /kinetics/geometry 62 33 77 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 0 1e-12 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 30 33 90 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p 0 1e-12 0 0 0 0 0 0 \ + 54 0 /kinetics/geometry 0 33 83 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 0 1 100 "" white black \ + 92 -15 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_x2/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_x2/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange 0 2e-11 0 0 0 0 0 \ + 0 54 0 /kinetics/geometry[6] blue black 98 -13 0 +simundump text /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange/notes 0 "" +call /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaM_CaN 1 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry 1 5 32 -2 0 +simundump text /kinetics/SPINE/CaM_CaN/notes 0 "" +call /kinetics/SPINE/CaM_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/actCaMKII 0 0 2 2 108 108 0 0 54 0 \ + /kinetics/geometry 12 5 72 -2 0 +simundump text /kinetics/SPINE/actCaMKII/notes 0 "" +call /kinetics/SPINE/actCaMKII/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/PP2A 1 0 5 5 270 270 0 0 54 0 \ + /kinetics/geometry 62 5 46 -10 0 +simundump text /kinetics/SPINE/PP2A/notes 0 \ + "Strack et al JBC 1997 show that PP2A is the primary\nphosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286 0 0 0 0 0 486.01 0.037038 8 2 \ + 0 0 "" red 62 "" 63 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286b 0 0 0 0 0 486.01 0.037038 8 \ + 2 0 0 "" red 62 "" 73 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286b/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286b/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305 0 0 0 0 0 486.01 0.037038 8 2 \ + 0 0 "" red 62 "" 80 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr286c 0 0 0 0 0 486.01 0.0092593 2 \ + 0.5 0 0 "" red 62 "" 90 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr286c/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr286c/notes LOAD \ +"" +simundump kenz /kinetics/SPINE/PP2A/Deph-thr305a 0 0 0 0 0 486.01 0.037038 8 \ + 2 0 0 "" red 62 "" 85 -10 0 +simundump text /kinetics/SPINE/PP2A/Deph-thr305a/notes 0 "" +call /kinetics/SPINE/PP2A/Deph-thr305a/notes LOAD \ +"" +simundump group /kinetics/SPINE/CaN_BULK 1 yellow 5 x 0 0 "" CaN_BULK \ + /home2/bhalla/scripts/modules/PP1_PSD_0.g 0 \ + 62a600ae10e53f567e47decb4f2b6488 0 14 -8 0 +simundump text /kinetics/SPINE/CaN_BULK/notes 0 "" +call /kinetics/SPINE/CaN_BULK/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/CaN 0 0 1 1 54 54 0 0 54 0 \ + /kinetics/geometry 1 yellow 4 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/CaN/notes LOAD \ +"" +simundump kreac /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN 0 0.85185 0.5 "" white \ + yellow 23 5 0 +simundump text /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes 0 \ + "From Quintana et al 2005" +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +simundump kreac /kinetics/SPINE/CaN_BULK/Ca_bind_CaN 0 0.0085734 1 "" white \ + yellow 8 5 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca_bind_CaN/notes LOAD \ +"" +simundump kpool /kinetics/SPINE/CaN_BULK/Ca2_CaN 0 0 0 0 0 0 0 0 54 0 \ + /kinetics/geometry[1] blue yellow 15 -2 0 +simundump text /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes 0 "" +call /kinetics/SPINE/CaN_BULK/Ca2_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Ca 1 1e-11 0.08 0.08 48 48 0 0 600 0 \ + /kinetics/geometry red 13 46 -36 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 2000 0 4 0 +simundump xgraph /graphs/conc2 0 0 2000 0 16.804 0 +simundump xplot /graphs/conc1/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc1/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 12 0 0 1 +simundump xplot /graphs/conc1/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /graphs/conc2/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 12 0 0 1 +simundump xplot /graphs/conc2/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 2000 0 4 0 +simundump xgraph /moregraphs/conc4 0 0 2000 0 4 0 +simundump xplot /moregraphs/conc3/Ca.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " red 0 0 1 +simundump xplot /moregraphs/conc3/actCaMKII.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 12 0 0 1 +simundump xplot /moregraphs/conc3/CaM-Ca4.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xcoredraw /edit/draw 0 -10 101 -51 42 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"23 Dec 2011" \ +"CaMKII_merged16.g" \ +"Added Ca-binding step to the CaN activation pathway." \ +"Based on CaMKII_merged15.g" \ +"" \ +"CaMKII_merged16a.g" \ +"Halved the Kb for CaN-bind-CaM" \ +"" \ +"CaMKII_merged17.g" \ +" Used more rates from Saucerman and Bers BPJ 2008" \ +"" \ +"CaMKII_merged17a.g" \ +"Fix to init conc of PP1-active in PSD: from 2 to 4." \ +"" \ +"CaMKII_merged17b.g" \ +"Raised PP2A CoInit from 0.1111 uM to 1 uM, to avoid sub-molecular" \ +"levels in PSD. Scaled kcats down to match." \ +"" \ +"CaMKII_merged20.g" \ +"First pass at a version with a reasonable basal PKA and a less" \ +"saturating effect on PP1-active of CaMKII." \ +"" \ +"CaMKII_merged20c.g: This version turns on but does not go off" \ +"afterwards. " \ +"" \ +"CaMKII_merged20d.g: 10x higher Km and kcat for PP1 on CaMKII." \ +"" \ +"CaMKII_merged20e.g: Km = 5 and kcat =0.5" \ +"" \ +"02 June 2012. CaMKII_merged20g.g: NMDAR = 40, effective # of" \ +"sites given that CaMKII is a dodecamer." \ +"" \ +"CaMKII_merged20h.g: Lowered Kb for CaM-Bind-CaN from 0.006 to " \ +"0.002/sec." \ +"" \ +"CaMKII_merged20i.g: Set PKA-active in both compts to be 0.02 uM." \ +"" \ +"CaMKII_merged20j.g: Faster CaN diffusion, by 6x. Now matches" \ +"CaM with 6:54." \ +"" \ +"CaMKII_merged20k.g: Halved CaMKII affinity for NMDAR." \ +"" \ +"CaMKII_merged21.g: Removed bulk PP1. Use PP2A to dephosphorylate" \ +"CaMKII in bulk." \ +"" \ +"19 July 2013. psd_merged30.g: Variant for signeur loading." \ +"" \ +"22 Aug 2015. CaMKII_merged32.g: Duplicated spine head CaMKII and" \ +"ancillary reactions, into Dend. Will need to figure out how to " \ +"keep hihger CaMKII and CaM levels in spine head rather than" \ +"dend." \ +"23 Aug 2015. CaMKII_merged33.g: Added pools and reactions to " \ +"sustain the gradients of CaM and CaMKII between DEND and SPINE." \ +"Needed because we have diffusion of CaM, CaMKII and various " \ +"converted forms of these molecules." \ +"" \ +"23 Aug 2015. CaMKII_merged34.g: Added Ca_input for PSD and DEND." \ +"" \ +"24 Aug 2015. CaMKII_merged35.g" \ +"Increased CaDiffusion rate to 10 microns^2/sec. " \ +"Increased Ca_stim Kf and Kb to 50 from 20." \ +"" \ +"13 Sep 2015. CaMKII_merged36.g" \ +"Set PSD/PKA-active nInit to zero. It was a tiny fractional value" \ +"leading to a possible discrepancy between stochastic and determ" \ +"calculations." \ +"" \ +"14 Sep 2015. CaMKII_merged37.g" \ +"PP2A in the PSD had some tiny nComplexInits in its enz sites." \ +"Zeroed." \ +"" \ +"24 Sep 2015. CaMKII_merged38.g" \ +"Fixed some discrepancies in rates in the Dend compartment. Seems" \ +"that vol scaling had not happened properly." \ +"Also raised affinity of final stage of CaM.Ca3 binding to Ca to" \ +"the same value as for CaM.Ca2 binding." \ +"" \ +"25 Sep 2015. CaMKII_merged39.g" \ +"Fixed CaM_xchange reactions, also similar for CaMKII. These set" \ +"up the higher conc in the spine and PSD, but were not effective." \ +"" \ +"26 Sep 2015. CaMKII_merged42.g" \ +"Moved PP1_1 and PP1_2 enzymes to CaM_CaN" \ +"Some rates changes." \ +"CaMKII_merged42a.g: moved /kinetics/DEND/Ca to /kinetics/Ca so" \ +"that the system isn't confused during diffusions setup." \ +"" \ +"29 Sep 2015. CaMKII_merged43.g" \ +"Added back the CaMKII exchange reaction, and CaMKII diffusion" \ +"between dend and spine. Also moved the CaM_xchange reaction to" \ +"the dend as its substrate is there." \ +"CaMKII_merged44.g: Lower Keq rate of both xchangeReactions from" \ +"10 to 2. kb now 0.5, kf still 1." \ +"" \ +"02 Oct 2015: CaMKII_merged50.g. Moved NMDAR to Spine rather than" \ +"PSD, to keep both substrates in same compt. Also moved reac to" \ +"same compt as substrates." \ +"" \ +"05 Nov 2015: CaMKII_merged57.g. Put all the translocation reactions" \ +"in the PSD itself, now the CaMKII phospho forms just diffuse" \ +"into the PSD if they want to translocate. Then they bind to" \ +"NMDAR and form the scaffolded version." \ +"CaMKII_merged58.g: There was too little CaM and CaMKII in the " \ +"spine. Increased the rate of the reactions pumping them in." \ +"" \ +"09 Nov 2015" \ +"CaMKII_merged59.g: 3 major changes. " \ +"1. Lowered basal activity of CaMKII to 0.5 uM from 1 uM." \ +"2. Fixed Km of intramolecular CaMKII. Divide Km by 20 for" \ +" each of the intramolecular reactions, this brings it into the" \ +" same range as the total amount of CaMKII" \ +"3. CaN is now activated by Ca2.CaM, not by Ca4.CaM." \ +"CaMKII_merged60.g. Fix to Km for PP2A on CaMKII in Dend: it had" \ +" been reduced to 0.45, restored to 5 so that it is the same as" \ +" in PSD. Also doubled kcat for PP2A action on CaMKII phospho-" \ +" forms, across the board." \ +"" \ +"CaMKII_merged61.g: Zero out diffusion constt for all CaN forms." \ +"CaMKII_merged62.g: Double PP2A rates on CaMKII phosph forms in" \ +" dend and spine. Raise back-reac rate for Ca2.CaM binding to" \ +" CaN by factor of 10." \ +"" \ +"10 Nov 2015. CaMKII_merged63.g: Raised PP2A levels in dend and" \ +"spine head by 25%. Doubled kcat for CaMKII on PSDR. Doubled" \ +"back rate for CaM binding to CaN." \ +"" \ +"" \ +"11 Nov 2015. CaMKII_merged65.g: (64 was a dead end). Removed" \ +"xchange reacs between dend and spine, which were there for setting" \ +"up the steady-state conc gradient of CaM and CaMKII. Replaced" \ +"with a diffusion process and local reacs to achieve gradient." \ +"CaMKII_merged66.g: Changed local rates to steepen gradient." \ +"CaMKII_merged67.g: Further sped up diffusion of xchange molecules" \ +"to steepen gradient. Also lowered CaN affinity for CaM." \ +"CaMKII_merged68.g: Lowered CaN affinity for CaM. Lowered CaMKII" \ +"activity on PSDR. Increased 10x rate for NMDAR binding to CaMKII." \ +"CaMKII_merged69.g: further lowered CaN affinity for CaM to ~0.1." \ +"Lowered CaMKII basal activity to 0.2 uM." \ +"Increased 2x further NMDAR binding to CaMKII." \ +"CaMKII_merged70.g: Double CaMKII rate on PSDR." \ +"" \ +"13 Nov 2015. CaMKII_merged71.g. Fine-tuning to restore bistability" \ +"in the PSDR. Lowered CaN kcas on PSDR to 0.8. Raised basal" \ +"CaMKII back to 0.5 uM, from 0.2, in PSD." \ +"" \ +"14 Nov 2015. CaMKII_merged74.g. Did various tests for the" \ +"bistability of the PSDR system. This one has slower CaN kcat on" \ +"PSDR, from 0.8 to 0.2. Based on psdr2.g" \ +"CaMKII_merged75.g. The prev one didn't acheive turnoff. Doubled" \ +"CaN kcat on psdr, now at 0.4." \ +"15 Nov 2015." \ +"CaMKII_merged76.g. Raised kcat and Km both for CaN on PSDR, to" \ +"lessen saturation." \ +"CaMKII_merged77.g. Raised kcat of basal_phosphatase for PSDR from" \ +"0.11 to 0.15, in order to raise threshold and lessen spontaneous" \ +"turnons." \ +"" \ +"" +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/actCaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_1 ENZYME n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/actCaMKII/CaMKII_1 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/actCaMKII/CaMKII_2 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/actCaMKII/CaMKII_2 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/PP1_PSD/PP1-active REAC eA B +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-active REAC B A +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-active REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/I1 REAC B A +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1 REAC sA B +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1 MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 /kinetics/PSD/PP1_PSD/PP1-I1 REAC A B +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1 /kinetics/PSD/PP1_PSD/dissoc-PP1-I1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP1_PSD/Inact-PP1 PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/PP1-active /kinetics/PSD/PP1_PSD/Inact-PP1 SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/PP1-I1_p REAC B A +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP1_PSD/PP1-I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Inact-PP1 /kinetics/PSD/PP1_PSD/I1_p REAC A B +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PP1_PSD/I1_p MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP1_PSD/I1_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/CaN REAC A B +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/PP1_PSD/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/PP1_PSD/Ca2_CaN REAC A B +addmsg /kinetics/PSD/PP1_PSD/CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/PP1_PSD/Ca2_CaN /kinetics/PSD/PP1_PSD/Ca_bind_CaN PRODUCT n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/PP1_PSD/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/iR /kinetics/PSD/move_to_PSD SUBSTRATE n +addmsg /kinetics/PSD/R_S2 /kinetics/PSD/move_to_PSD PRODUCT n +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/R_S2 MM_PRD pA +addmsg /kinetics/PSD/move_to_PSD /kinetics/PSD/R_S2 REAC B A +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_S2 REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_1 /kinetics/PSD/R_SpS MM_PRD pA +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpS REAC sA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/R_SpSp REAC sA B +addmsg /kinetics/PSD/actCaMKII/CaMKII_2 /kinetics/PSD/R_SpSp MM_PRD pA +addmsg /kinetics/PSD/basal_phosphatase/P1 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase/P2 /kinetics/PSD/basal_phosphatase REAC eA B +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P1 ENZYME n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/basal_phosphatase/P1 SUBSTRATE n +addmsg /kinetics/PSD/basal_phosphatase /kinetics/PSD/basal_phosphatase/P2 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/basal_phosphatase/P2 SUBSTRATE n +addmsg /kinetics/PSD/PKA-active/PKA-phosph-I1 /kinetics/PSD/PKA-active REAC eA B +addmsg /kinetics/PSD/PKA-active /kinetics/PSD/PKA-active/PKA-phosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1 /kinetics/PSD/PKA-active/PKA-phosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/basal_CaMKII /kinetics/PSD/CaMKII_PSD/tot-auto SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/tot-auto REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/PSD/actCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/CaMKII_PSD/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/286P SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/NMDAR REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM /kinetics/PSD/CaMKII_PSD/transloc_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-CaM /kinetics/PSD/CaMKII_PSD/transloc_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII /kinetics/PSD/CaMKII_PSD/back_1 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII /kinetics/PSD/CaMKII_PSD/back_1 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 SUBSTRATE n +addmsg /kinetics/PSD/CaMKII_PSD/NMDAR /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 /kinetics/PSD/CaMKII_PSD/back_2 PRODUCT n +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286 /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-CaM REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/sCaMKII REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/sCaMKII MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/sCaMKII MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/sCaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/sCaMKII REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p MM_PRD pA +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/sCaMKII_p_p_p REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305a /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286c /kinetics/PSD/CaMKII_PSD/sCaMKII-thr305 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/transloc_1 /kinetics/PSD/CaMKII_PSD/CaMKII-CaM REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/transloc_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-CaM REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/back_1 /kinetics/PSD/CaMKII_PSD/CaMKII REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/back_2 /kinetics/PSD/CaMKII_PSD/CaMKII-thr305 REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM-act-305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC A B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr286b /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 REAC sA B +addmsg /kinetics/PSD/PP1_PSD/PP1-active/Deph-thr305 /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-CaM-CaMKII/CaM_act_autoph /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/CaMKII_PSD/tot-auto/auton-autoph /kinetics/PSD/CaMKII_PSD/sCaMKII-thr286 MM_PRD pA +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-I1 /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p /kinetics/PSD/PP2A REAC eA B +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/PP2A /kinetics/PSD/PP2A/PP2A-dephosph-I1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/PP2A/PP2A-dephosph-I1 SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca4 /kinetics/PSD/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/PSD/CaM/CaM /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca3 /kinetics/PSD/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/PSD/CaM/CaM-Ca2 /kinetics/PSD/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC B A +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/CaM-Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca2-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca-bind-Ca /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/PP1_PSD/Ca_bind_CaN /kinetics/PSD/CaM/Ca REAC A B +addmsg /kinetics/PSD/CaM/Ca_stim /kinetics/PSD/CaM/Ca REAC B A +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaMKII_PSD/CaMKII-bind-CaM /kinetics/PSD/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/PSD/CaM/CaM-Ca3-bind-Ca /kinetics/PSD/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/PSD/CaM/Ca_stim /kinetics/PSD/CaM/Ca_input REAC A B +addmsg /kinetics/PSD/CaM/Ca_input /kinetics/PSD/CaM/Ca_stim SUBSTRATE n +addmsg /kinetics/PSD/CaM/Ca /kinetics/PSD/CaM/Ca_stim PRODUCT n +addmsg /kinetics/PSD/CaM_CaN/dephosph_inhib1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/PP1_PSD/CaM-Bind-CaN /kinetics/PSD/CaM_CaN REAC B A +addmsg /kinetics/PSD/CaM_CaN/CaN_1 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN/CaN_2 /kinetics/PSD/CaM_CaN REAC eA B +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p ENZYME n +addmsg /kinetics/PSD/PP1_PSD/PP1-I1_p /kinetics/PSD/CaM_CaN/dephosph-PP1-I_p SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/dephosph_inhib1 ENZYME n +addmsg /kinetics/PSD/PP1_PSD/I1_p /kinetics/PSD/CaM_CaN/dephosph_inhib1 SUBSTRATE n +addmsg /kinetics/PSD/R_SpS /kinetics/PSD/CaM_CaN/CaN_1 SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/CaN_1 ENZYME n +addmsg /kinetics/PSD/R_SpSp /kinetics/PSD/CaM_CaN/CaN_2 SUBSTRATE n +addmsg /kinetics/PSD/CaM_CaN /kinetics/PSD/CaM_CaN/CaN_2 ENZYME n +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM REAC A B +addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca3 /kinetics/DEND/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca2 /kinetics/DEND/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC B A +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/DEND/CaM/CaM-Ca REAC A B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/DEND/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/DEND/CaM/CaM /kinetics/DEND/CaM/CaM_x2 SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM_xchange /kinetics/DEND/CaM/CaM_x2 PRODUCT n +addmsg /kinetics/DEND/CaM/CaM_x2 /kinetics/DEND/CaM/CaM_xchange REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/basal_CaMKII /kinetics/DEND/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/DEND/actCaMKII /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 /kinetics/DEND/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaM/CaM-Ca4 /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-bind-CaM /kinetics/DEND/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/DEND/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-autoph /kinetics/DEND/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_x2 /kinetics/DEND/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto/auton-305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII /kinetics/DEND/CaMKII_BULK/CaMKII_x2 SUBSTRATE n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_xchange /kinetics/DEND/CaMKII_BULK/CaMKII_x2 PRODUCT n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_x2 /kinetics/DEND/CaMKII_BULK/CaMKII_xchange REAC B A +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-CaM /kinetics/DEND/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/CaMKII_BULK/tot-auto /kinetics/DEND/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/DEND/PP2A/Deph-thr286 /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr286b /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr305 /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr305a /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A/Deph-thr286c /kinetics/DEND/PP2A REAC eA B +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/DEND/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr286 /kinetics/DEND/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII_p_p_p /kinetics/DEND/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/DEND/PP2A /kinetics/DEND/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/DEND/CaMKII_BULK/CaMKII-thr305 /kinetics/DEND/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/DEND/Ca_stim /kinetics/DEND/Ca_input REAC A B +addmsg /kinetics/DEND/Ca_input /kinetics/DEND/Ca_stim SUBSTRATE n +addmsg /kinetics/Ca /kinetics/DEND/Ca_stim PRODUCT n +addmsg /kinetics/PSD/move_to_PSD /kinetics/SPINE/iR REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca3 REAC A B +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca2 REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM/CaM-Ca2 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca3 /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaM/CaM-Ca-bind-Ca SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaM/CaM-Ca-bind-Ca PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC B A +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/CaM-Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca-bind-Ca /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaM/Ca REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaM/CaM-Ca4 REAC A B +addmsg /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca /kinetics/SPINE/CaM/CaM-Ca4 REAC B A +addmsg /kinetics/SPINE/CaM/CaM /kinetics/SPINE/CaM/CaM_x2 SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM_xchange /kinetics/SPINE/CaM/CaM_x2 PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM_x2 /kinetics/SPINE/CaM/CaM_xchange REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/basal_CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/tot-auto REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 SUBSTRATE n +addmsg /kinetics/SPINE/actCaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/CaMKII_BULK/tot_CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/286P SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII REAC eA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-bind-CaM /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/CaMKII_BULK/CaMKII MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM_act_autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-autoph /kinetics/SPINE/CaMKII_BULK/CaMKII REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 /kinetics/SPINE/CaMKII_BULK/CaMKII REAC A B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-CaM-CaMKII/CaM-act-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto/auton-305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p MM_PRD pA +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p REAC sA B +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 SUBSTRATE n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 PRODUCT n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_x2 /kinetics/SPINE/CaMKII_BULK/CaMKII_xchange REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaM_CaN REAC B A +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-CaM /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/CaMKII_BULK/tot-auto /kinetics/SPINE/actCaMKII SUMTOTAL n nInit +addmsg /kinetics/SPINE/PP2A/Deph-thr286 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286b /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305 /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr305a /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A/Deph-thr286c /kinetics/SPINE/PP2A REAC eA B +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-CaM /kinetics/SPINE/PP2A/Deph-thr286 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286b ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286 /kinetics/SPINE/PP2A/Deph-thr286b SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305 ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr305 SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr286c ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII_p_p_p /kinetics/SPINE/PP2A/Deph-thr286c SUBSTRATE n +addmsg /kinetics/SPINE/PP2A /kinetics/SPINE/PP2A/Deph-thr305a ENZYME n +addmsg /kinetics/SPINE/CaMKII_BULK/CaMKII-thr305 /kinetics/SPINE/PP2A/Deph-thr305a SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/CaN REAC A B +addmsg /kinetics/SPINE/CaM_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN PRODUCT n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/CaM-Ca2 /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca2_CaN /kinetics/SPINE/CaN_BULK/Ca_bind_CaN PRODUCT n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaM/Ca /kinetics/SPINE/CaN_BULK/Ca_bind_CaN SUBSTRATE n +addmsg /kinetics/SPINE/CaN_BULK/Ca_bind_CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC B A +addmsg /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN /kinetics/SPINE/CaN_BULK/Ca2_CaN REAC A B +addmsg /kinetics/DEND/CaM/CaM-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca2-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca3-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/CaM/CaM-Ca-bind-Ca /kinetics/Ca REAC A B +addmsg /kinetics/DEND/Ca_stim /kinetics/Ca REAC B A +addmsg /kinetics/PSD/CaM/Ca /graphs/conc1/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/PSD/actCaMKII /graphs/conc1/actCaMKII.Co PLOT Co *actCaMKII.Co *12 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc1/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/CaM/CaM-Ca4 /graphs/conc1/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/SPINE/CaM/Ca /graphs/conc2/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/SPINE/actCaMKII /graphs/conc2/actCaMKII.Co PLOT Co *actCaMKII.Co *12 +addmsg /kinetics/SPINE/CaM/CaM-Ca4 /graphs/conc2/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +addmsg /kinetics/Ca /moregraphs/conc3/Ca.Co PLOT Co *Ca.Co *red +addmsg /kinetics/DEND/actCaMKII /moregraphs/conc3/actCaMKII.Co PLOT Co *actCaMKII.Co *12 +addmsg /kinetics/DEND/CaM/CaM-Ca4 /moregraphs/conc3/CaM-Ca4.Co PLOT Co *CaM-Ca4.Co *blue +enddump +// End of dump + +call /kinetics/PSD/PP1_PSD/PP1-active/notes LOAD \ +"Cohen et al Meth Enz 159 390-408 is main source of info" \ +"conc = 1.8 uM" +call /kinetics/PSD/PP1_PSD/I1/notes LOAD \ +"I1 is a 'mixed' inhibitor, but at high enz concs it looks like a non-compet" \ +"inhibitor (Foulkes et al Eur J Biochem 132 309-313 9183)." \ +"We treat it as non-compet, so it just turns the enz off" \ +"without interacting with the binding site." \ +"Cohen et al ann rev bioch refer to results where conc is " \ +"1.5 to 1.8 uM. In order to get complete inhib of PP1, which is at 1.8 uM," \ +"we need >= 1.8 uM." \ +"" \ +"" +call /kinetics/PSD/PP1_PSD/dissoc-PP1-I1/notes LOAD \ +"Let us assume that the equil in this case is very far over to the" \ +"right. This is probably safe." \ +"" +call /kinetics/PSD/PP1_PSD/Inact-PP1/notes LOAD \ +"K inhib = 1nM from Cohen Ann Rev Bioch 1989, " \ +"4 nM from Foukes et al " \ +"Assume 2 nM. kf /kb = 8.333e-4" +call /kinetics/PSD/PP1_PSD/I1_p/notes LOAD \ +"Dephosph is mainly by PP2B" +call /kinetics/PSD/basal_phosphatase/notes LOAD \ +"There isn't any clear info for this. I had originally called " \ +"it PP2A, but that causes odd interactions with other pathways." \ +"" +call /kinetics/PSD/CaMKII_PSD/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/PSD/CaMKII_PSD/NMDAR/notes LOAD \ +"The stochiometry is a bit off here. Each NMDAR actually" \ +"binds to a holoenzyme, about 12 CaMKII subunits. But" \ +"our CaMKII calculations are in terms of individual" \ +"subunits. So as a hack, we put in much more NMDAR than" \ +"is actually there." \ +"" \ +"Dec 2011: Reconsidered this, now only 120 NMDARs." \ +"" \ +"June 02 2012. Consider these as anchor points for a dodecamer." \ +"There are far more effected CaMKII binding sites then, than" \ +"individual molecules of NMDAR. Raised limit to 40." +call /kinetics/PSD/CaMKII_PSD/transloc_2/notes LOAD \ +"Same as for transloc_1" \ +"" \ +"" \ +"" +call /kinetics/PSD/CaMKII_PSD/back_1/notes LOAD \ +"Rates set by the translocation experiments of " \ +"Shen and Meyer, Science 1999." +call /kinetics/PSD/CaMKII_PSD/back_2/notes LOAD \ +"Same as for back_1" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-PP1-I_p/notes LOAD \ +"k1 changed from 3.3e-6 to 6.6e-6" \ +"" +call /kinetics/PSD/PP2A/PP2A-dephosph-I1/notes LOAD \ +"PP2A does most of the dephosph of I1 at basal Ca levels. See" \ +"the review by Cohen in Ann Rev Biochem 1989." \ +"For now, lets halve Km. k1 was 3.3e-6, now 6.6e-6" \ +"" +call /kinetics/PSD/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/PSD/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" \ +"24 Sep 2015" \ +"This is a bit too low affinity. Changing to match K2 at " \ +"Kd = 2.8." +call /kinetics/PSD/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/PSD/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/PSD/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/PSD/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/DEND/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/DEND/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/DEND/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/DEND/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/DEND/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/DEND/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/DEND/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/SPINE/CaM/CaM/notes LOAD \ +"There is a LOT of this in the cell: upto 1% of total protein mass. (Alberts et al)" \ +"Say 25 uM. Meyer et al Science 256 1199-1202 1992 refer to studies saying" \ +"it is comparable to CaMK levels. " \ +"" +call /kinetics/SPINE/CaM/CaM-Ca3-bind-Ca/notes LOAD \ +"Use K3 = 21.5 uM here from Stemmer and Klee table 3." \ +"kb/kf =21.5 * 6e5 so kf = 7.75e-7, kb = 10" +call /kinetics/SPINE/CaM/CaM-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca2/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaM/CaM-Ca2-bind-Ca/notes LOAD \ +"K3 = 21.5, K4 = 2.8. Assuming that the K4 step happens first, we get" \ +"kb/kf = 2.8 uM = 1.68e6 so kf =6e-6 assuming kb = 10" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca-bind-Ca/notes LOAD \ +"Lets use the fast rate consts here. Since the rates are so different, I am not" \ +"sure whether the order is relevant. These correspond to the TR2C fragment." \ +"We use the Martin et al rates here, plus the Drabicowski binding consts." \ +"All are scaled by 3X to cell temp." \ +"kf = 2e-10 kb = 72" \ +"Stemmer & Klee: K1=.9, K2=1.1. Assume 1.0uM for both. kb/kf=3.6e11." \ +"If kb=72, kf = 2e-10 (Exactly the same !)" \ +"" \ +"19 May 2006. Splitting the old CaM-TR2-bind-Ca reaction into" \ +"two steps, each binding 1 Ca. This improves numerical" \ +"stability and is conceptually better too." \ +"" \ +"Overall rates are the same, so each kf and kb is the " \ +"square root of the earlier ones. So" \ +"kf = 1.125e-4, kb = 8.4853" \ +"" +call /kinetics/SPINE/CaM/CaM-Ca/notes LOAD \ +"This is the intermediate where the TR2 end (the high-affinity end) has" \ +"bound the Ca but the TR1 end has not." +call /kinetics/SPINE/CaMKII_BULK/CaMKII-thr286-bind-CaM/notes LOAD \ +"Same values as for the main compartment" \ +"Can the main compartment pool of Ca/CaM be used?" +call /kinetics/SPINE/PP2A/notes LOAD \ +"Strack et al JBC 1997 show that PP2A is the primary" \ +"phosphatase acting on CaMKII in the bulk." +call /kinetics/SPINE/CaN_BULK/CaM-Bind-CaN/notes LOAD \ +"From Quintana et al 2005" +complete_loading diff --git a/examples/Fig4_ReacDiff/Fig4B.py b/examples/Fig4_ReacDiff/Fig4B.py new file mode 100644 index 0000000..fd3029f --- /dev/null +++ b/examples/Fig4_ReacDiff/Fig4B.py @@ -0,0 +1,185 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This program builds a multiscale model with a few spines inserted into +# a simplified cellular morphology. Each spine has a signaling model in it +# too. The program doesn't run the model, it just displays it in 3D. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +baselineTime = 1 +tetTime = 1 +interTetTime = 0.1 +postTetTime = 0.1 +ltdTime = 0.1 +postLtdTime = 0.1 +do3D = True +dt = 0.01 +plotdt = 0.1 +psdTetCa = 8e-3 +basalCa = 0.08e-3 +ltdCa = 0.25e-3 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ ['ca1_minimal.p', 'elec'] ] + spineProto = [ ['makeSpineProto()', 'spine' ]] + chemProto = [ ['CaMKII_merged77.g', 'chem'] ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", chemRange + " * 5e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", "6.28", \ + "size", "6", \ + "sizeDistrib", "0" ] \ + ] + chemDistrib = [ \ + [ "chem", "#apical#", "install", chemRange ] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/DEND/Ca_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + spineDistrib = spineDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chemProto = chemProto + ) + + return rdes + +def createVmViewer(rdes): + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def prelude(view): + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + view.pitch(PI/2.0) + view.down(450) + view.left(100) + view.h = 2.0 + view.zoom(5.0) + + def interlude(view): + if view.h > 0.10: + view.h /= 1.005 + view.zoom(0.005) + view.yaw(0.01) + + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", + prelude=prelude, + interlude=interlude) + viewer.attach_view(view) + return viewer + + +def main(): + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + moose.element( '/model/elec/hsolve' ).tick = -1 + for i in range( 10, 18 ): + moose.setClock( i, dt ) + moose.setClock( 18, plotdt ) + moose.reinit() + + if do3D: + app = QtGui.QApplication(sys.argv) + compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) + print "LEN = ", len( compts ) + for i in compts: + n = i.name[:4] + if ( n == 'head' or n == 'shaf' ): + i.diameter *= 1.0 + i.Vm = 0.02 + else: + i.diameter *= 4.0 + i.Vm = -0.05 + vm_viewer = createVmViewer(rdes) + vm_viewer.showMaximized() + vm_viewer.start() + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/Fig4_ReacDiff/Fig4CDEF.py b/examples/Fig4_ReacDiff/Fig4CDEF.py new file mode 100644 index 0000000..5d76909 --- /dev/null +++ b/examples/Fig4_ReacDiff/Fig4CDEF.py @@ -0,0 +1,242 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This program builds a multiscale model with a few spines inserted into +# a simplified cellular morphology. Each spine has a signaling model in it +# too. The program runs the model with a strong but brief calcium input +# synapses at 10 seconds, and a long but smaller Ca influx from 290 to +# 650 seconds. This simulation runs using a deterministic method. +# The runtime on a 2.2 GHz Intel core I7 processor is about 550 s. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = False +combineSegments = False +baselineTime = 10 +tetTime = 1 +interTetTime = 20 +postTetTime = 240 +ltdTime = 360 +postLtdTime = 60 +do3D = False +dt = 0.001 +plotdt = 0.1 +psdTetCa = 8e-3 +dendTetCa = 2e-3 +basalCa = 0.08e-3 +ltdCa = 0.25e-3 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ ['ca1_minimal.p', 'elec'] ] + spineProto = [ ['makeSpineProto()', 'spine' ]] + chemProto = [ ['CaMKII_merged77.g', 'chem'] ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", chemRange + " * 5e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", "0", \ + "size", "1", \ + "sizeDistrib", "0" ] \ + ] + chemDistrib = [ \ + [ "chem", "#apical#", "install", chemRange ] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + spineDistrib = spineDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chemProto = chemProto + ) + + return rdes + +def buildOnePlot( path, field = 'getConc' ): + elist = moose.vec( '/model/chem/' + path ) + tabname = path.replace( '/', '_' ) + tab = moose.Table2( '/graphs/' + tabname, len( elist ) ).vec + moose.connect( tab, 'requestOut', elist, field, 'OneToOne' ) + +def buildPlots(): + if not moose.exists( '/graphs' ): + moose.Neutral( '/graphs' ) + buildOnePlot( 'psd/actCaMKII' ) + buildOnePlot( 'spine/actCaMKII' ) + buildOnePlot( 'dend/DEND/actCaMKII' ) + buildOnePlot( 'psd/tot_PSD_R', 'getN' ) + +def displayPlots(): + #plt.style.use( 'ggplot' ) + #fig = plt.figure( figsize=( 6, 10 ), frameon=False, facecolor='white' ) + fig = plt.figure( figsize=( 5, 10 ), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + elist = moose.wildcardFind( '/graphs/#[0]' ) + n = len(elist) + j = 1 + timePts = numpy.arange( 0, len( elist[0].vector ) ) * elist[0].dt + labelName = [ "[CaMKII] (uM)", "[CaMKII] (uM)", + "[CaMKII] (uM)", "# AMPAR" ] + showTickLabels = [0,0,0,1] + plotTitle = ['C', 'D', 'E', 'F'] + plotScale = [1000,1000,1000,1] + for i in zip( elist, labelName, showTickLabels, plotTitle, plotScale ): + ax = plt.subplot( 4, 1, j ) + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + + #This function does the same as below, one axis at a time + #ax.xaxis.set_tick_params( direction = 'out' ) + #ax.yaxis.set_tick_params( direction = 'out' ) + ax.tick_params( direction = 'out' ) + + # These two are equivalent, get rid of the ticks but not the border + #ax.xaxis.set_visible( False ) + #ax.get_xaxis().set_visible( False ) + if not i[2]: + ax.set_xticklabels([]) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + + plt.ylabel( i[1], fontsize = 16 ) + # alternate way of doing this separately. + #plt.yaxis.label.size_size(16) + #plt.title( 'B' ) + ax.text( -0.18, 1.0, i[3], fontsize = 18, weight = 'bold', + transform=ax.transAxes ) + j = j + 1 + for k in i[0].vec: + plt.plot( timePts, k.vector * i[4] ) + #plt.title( i.name ) + print i[0].name + + plt.xlabel( 'Time (s)', fontsize = 16 ) + plt.show() + +def main(): + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + moose.element( '/model/elec/hsolve' ).tick = -1 + for i in range( 0, 10 ): + moose.setClock( i, 100 ) + for i in range( 10, 18 ): + moose.setClock( i, dt ) + moose.setClock( 18, plotdt ) + moose.reinit() + buildPlots() + # Run for baseline, tetanus, and post-tetanic settling time + print 'starting...' + t1 = time.time() + moose.start( baselineTime ) + caPsd = moose.vec( '/model/chem/psd/Ca_input' ) + caDend = moose.vec( '/model/chem/dend/DEND/Ca_input' ) + castim = (numpy.random.rand( len( caPsd.concInit ) ) * 0.8 + 0.2) * psdTetCa + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( interTetTime ) + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postTetTime ) + caPsd.concInit = ltdCa + caDend.concInit = ltdCa + moose.start( ltdTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postLtdTime ) + print 'real time = ', time.time() - t1 + + if do3D: + app = QtGui.QApplication(sys.argv) + compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + def callback( morphology, viewer ): + moose.start( 0.1 ) + return True + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + + displayPlots() + +if __name__ == '__main__': + main() diff --git a/examples/Fig4_ReacDiff/Fig4GHIJ.py b/examples/Fig4_ReacDiff/Fig4GHIJ.py new file mode 100644 index 0000000..997dfd9 --- /dev/null +++ b/examples/Fig4_ReacDiff/Fig4GHIJ.py @@ -0,0 +1,242 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This program builds a multiscale model with a few spines inserted into +# a simplified cellular morphology. Each spine has a signaling model in it +# too. The program runs the model with a strong but brief calcium input +# synapses at 10 seconds, and a long but smaller Ca influx from 290 to +# 650 seconds. This simulation runs using a stochastic method. +# The runtime on a 2.2 GHz Intel core I7 processor is about 465 s. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +baselineTime = 10 +tetTime = 1 +interTetTime = 20 +postTetTime = 240 +ltdTime = 360 +postLtdTime = 60 +do3D = False +dt = 0.001 +plotdt = 0.1 +psdTetCa = 8e-3 +dendTetCa = 2e-3 +basalCa = 0.08e-3 +ltdCa = 0.25e-3 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ ['ca1_minimal.p', 'elec'] ] + spineProto = [ ['makeSpineProto()', 'spine' ]] + chemProto = [ ['CaMKII_merged77.g', 'chem'] ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + chemRange = "H(1.1e-6 - dia) * H(p - 1300e-6)" + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", chemRange + " * 5e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", "0", \ + "size", "1", \ + "sizeDistrib", "0" ] \ + ] + chemDistrib = [ \ + [ "chem", "#apical#", "install", chemRange ] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + spineDistrib = spineDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chemProto = chemProto + ) + + return rdes + +def buildOnePlot( path, field = 'getConc' ): + elist = moose.vec( '/model/chem/' + path ) + tabname = path.replace( '/', '_' ) + tab = moose.Table2( '/graphs/' + tabname, len( elist ) ).vec + moose.connect( tab, 'requestOut', elist, field, 'OneToOne' ) + +def buildPlots(): + if not moose.exists( '/graphs' ): + moose.Neutral( '/graphs' ) + buildOnePlot( 'psd/actCaMKII' ) + buildOnePlot( 'spine/actCaMKII' ) + buildOnePlot( 'dend/DEND/actCaMKII' ) + buildOnePlot( 'psd/tot_PSD_R', 'getN' ) + +def displayPlots(): + #plt.style.use( 'ggplot' ) + #fig = plt.figure( figsize=( 6, 10 ), frameon=False, facecolor='white' ) + fig = plt.figure( figsize=( 5, 10 ), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + elist = moose.wildcardFind( '/graphs/#[0]' ) + n = len(elist) + j = 1 + timePts = numpy.arange( 0, len( elist[0].vector ) ) * elist[0].dt + labelName = [ "[CaMKII] (uM)", "[CaMKII] (uM)", + "[CaMKII] (uM)", "# AMPAR" ] + showTickLabels = [0,0,0,1] + plotTitle = ['G', 'H', 'I', 'J'] + plotScale = [1000,1000,1000,1] + for i in zip( elist, labelName, showTickLabels, plotTitle, plotScale ): + ax = plt.subplot( 4, 1, j ) + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + + #This function does the same as below, one axis at a time + #ax.xaxis.set_tick_params( direction = 'out' ) + #ax.yaxis.set_tick_params( direction = 'out' ) + ax.tick_params( direction = 'out' ) + + # These two are equivalent, get rid of the ticks but not the border + #ax.xaxis.set_visible( False ) + #ax.get_xaxis().set_visible( False ) + if not i[2]: + ax.set_xticklabels([]) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + + plt.ylabel( i[1], fontsize = 16 ) + # alternate way of doing this separately. + #plt.yaxis.label.size_size(16) + #plt.title( 'B' ) + ax.text( -0.18, 1.0, i[3], fontsize = 18, weight = 'bold', + transform=ax.transAxes ) + j = j + 1 + for k in i[0].vec: + plt.plot( timePts, k.vector * i[4] ) + #plt.title( i.name ) + print i[0].name + + plt.xlabel( 'Time (s)', fontsize = 16 ) + plt.show() + +def main(): + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + moose.element( '/model/elec/hsolve' ).tick = -1 + for i in range( 0, 10 ): + moose.setClock( i, 100 ) + for i in range( 10, 18 ): + moose.setClock( i, dt ) + moose.setClock( 18, plotdt ) + moose.reinit() + buildPlots() + # Run for baseline, tetanus, and post-tetanic settling time + print 'starting...' + t1 = time.time() + moose.start( baselineTime ) + caPsd = moose.vec( '/model/chem/psd/Ca_input' ) + caDend = moose.vec( '/model/chem/dend/DEND/Ca_input' ) + castim = (numpy.random.rand( len( caPsd.concInit ) ) * 0.8 + 0.2) * psdTetCa + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( interTetTime ) + caPsd.concInit = castim + caDend.concInit = numpy.random.rand( len( caDend.concInit ) ) * dendTetCa + moose.start( tetTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postTetTime ) + caPsd.concInit = ltdCa + caDend.concInit = ltdCa + moose.start( ltdTime ) + caPsd.concInit = basalCa + caDend.concInit = basalCa + moose.start( postLtdTime ) + print 'real time = ', time.time() - t1 + + if do3D: + app = QtGui.QApplication(sys.argv) + compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) + ecomptPath = map( lambda x : x.path, compts ) + morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") + morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ + [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) + viewer = moogli.DynamicMorphologyViewerWidget(morphology) + def callback( morphology, viewer ): + moose.start( 0.1 ) + return True + viewer.set_callback( callback, idletime = 0 ) + viewer.showMaximized() + viewer.show() + app.exec_() + + displayPlots() + +if __name__ == '__main__': + main() diff --git a/examples/Fig4_ReacDiff/ca1_minimal.p b/examples/Fig4_ReacDiff/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/Fig4_ReacDiff/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/Fig4_ReacDiff/rxdSpineSize.py b/examples/Fig4_ReacDiff/rxdSpineSize.py new file mode 100644 index 0000000..1d071ab --- /dev/null +++ b/examples/Fig4_ReacDiff/rxdSpineSize.py @@ -0,0 +1,293 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## rxdSpineSize.py: Builds a cell with spines and a propagating reaction +## wave. Products diffuse into the spine and cause it to get bigger. +################################################################## +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +sys.path.append( '../util' ) +import rdesigneur as rd +from PyQt4 import QtGui +import moogli +import moogli.extensions.moose +import matplotlib + +PI = 3.141592653 +ScalingForTesting = 10 +RM = 1.0 / ScalingForTesting +RA = 1.0 * ScalingForTesting +CM = 0.01 * ScalingForTesting +runtime = 100.0 +frameruntime = 1.0 +diffConst = 5e-12 +dendLen = 100e-6 +diffLen = 1.0e-6 +dendDia = 2e-6 +somaDia = 5e-6 +concInit = 0.001 # 1 millimolar +spineSpacing = 10e-6 +spineSpacingDistrib = 1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle= numpy.pi / 2.0 +spineAngleDistrib = 0.0 + +def makeCellProto( name ): + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) + dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) + moose.connect( soma, 'axial', dend, 'raxial' ) + elec.buildSegmentTree() + +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + comptVol = diffLen * dendDia * dendDia * PI / 4.0 + for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i[0] ) + compt.volume = i[1] + #x = moose.Pool( compt.path + '/x' ) + #y = moose.BufPool( compt.path + '/y' ) + z = moose.Pool( compt.path + '/z' ) + #x.concInit = 0.0 + #x.diffConst = diffConst + #y.concInit = concInit + z.concInit = 0.0 + z.diffConst = diffConst + nInit = comptVol * 6e23 * concInit + nstr = str( 1/nInit) + + x = moose.Pool( chem.path + '/dend/x' ) + x.diffConst = diffConst + func = moose.Function( x.path + '/func' ) + func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" + print func.expr + func.x.num = 1 + moose.connect( x, 'nOut', func.x[0], 'input' ) + moose.connect( func, 'valueOut', x, 'increment' ) + z = moose.element( '/library/' + name + '/dend/z' ) + reac = moose.Reac( '/library/' + name + '/dend/reac' ) + reac.Kf = 1 + reac.Kb = 10 + moose.connect( reac, 'sub', x, 'reac' ) + moose.connect( reac, 'prd', z, 'reac' ) + +def makeSpineProto2( name ): + spine = moose.Neutral( '/library/' + name ) + shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) + head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def makeModel(): + moose.Neutral( '/library' ) + makeCellProto( 'cellProto' ) + makeChemProto( 'cProto' ) + makeSpineProto2( 'spine' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + stealCellFromLibrary = True, \ + diffusionLength = 1e-6, \ + cellProto = [['cellProto', 'elec' ]] ,\ + spineProto = [['spineProto', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "dend", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + x = moose.vec( '/model/chem/dend/x' ) + x.concInit = 0.0 + for i in range( 0,20 ): + x[i].concInit = concInit + +def makePlot( name, srcVec, field ): + tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec + for i in zip(srcVec, tab): + moose.connect(i[1], 'requestOut', i[0], field) + return tab + + +def displayPlots(): + for x in moose.wildcardFind( '/graphs/#[0]' ): + tab = moose.vec( x ) + for i in range( len( tab ) ): + pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) + pylab.legend() + pylab.figure() + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and then to resize them using spine fields. These are the + fields that would be changed dynamically in a simulation with reactions + that affect spine geometry. + In this simulation there is a propagating reaction wave using a + highly abstracted equation, whose product diffuses into the spines and + makes them bigger. + """ + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + makePlot( 'headDia', eHead, 'getDiameter' ) + + ''' + debug = moose.PyRun( '/pyrun' ) + debug.tick = 10 + debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" + ''' + moose.reinit() + moose.start( runtime ) + + displayPlots() + pylab.plot( oldDia, label = 'old Diameter' ) + pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) + pylab.legend() + pylab.show() + + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +# Run the 'main' if this script is executed standalone. + +def showVisualization(): + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) + # print diaTab[0].vector[-1] + # return + dendrite = moose.element("/model/elec/dend") + dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] + # print dendrites + moose.reinit() + + spineHeads = moose.wildcardFind( '/model/elec/#head#') + # print moose.wildcardFind( '/model/elec/##') + + # print "dendZ", readValues(dendZ) + # print dendrite + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) + viewer.showMaximized() + viewer.start() + return app.exec_() + + +def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): + network = moogli.extensions.moose.read(path=path, + vertices=15) + + dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] + chem_compt_group = dendrite.subdivide(len(dendZ)) + normalizer = moogli.utilities.normalizer(0.0, + 300.0, + clipleft=True, + clipright=True) + colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def readValues(tables): + values = [] + for i in range(len(tables)): + values.append(tables[i].vector[-1]) + return values + + def prelude(view): + view.home() + view.pitch(math.pi / 3.0) + view.zoom(0.3) + network.groups["soma"].set("color", moogli.colors.RED) + network.groups["spine"].groups["shaft"].set("color", + moogli.colors.RED) + + def interlude(view): + moose.start(frameruntime) + network.groups["spine"].groups["head"].set("radius", + readValues(diaTab), + lambda x: x * 0.5e6) + network.groups["spine"].groups["head"].set("color", + readValues(psdZ), + mapper) + chem_compt_group.set("color", + readValues(dendZ), + mapper) + if moose.element("/clock").currentTime >= runtime: + view.stop() + + viewer = moogli.Viewer("Viewer") + viewer.attach_shapes(network.shapes.values()) + viewer.detach_shape(dendrite) + viewer.attach_shapes(chem_compt_group.shapes.values()) + + view = moogli.View("main-view", + prelude=prelude, + interlude=interlude) + cb = moogli.widgets.ColorBar(id="cb", + title="Molecule #", + text_color=moogli.colors.BLACK, + position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), + size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), + text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", + orientation=math.pi / 2.0, + text_character_size=20, + label_formatting_precision=0, + colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), + color_resolution=100, + scalar_range=moogli.geometry.Vec2f(0.0, + 300.0)) + view.attach_color_bar(cb) + viewer.attach_view(view) + return viewer + + +if __name__ == '__main__': + showVisualization() diff --git a/examples/Fig5_CellMultiscale/Fig5A.py b/examples/Fig5_CellMultiscale/Fig5A.py new file mode 100644 index 0000000..330516e --- /dev/null +++ b/examples/Fig5_CellMultiscale/Fig5A.py @@ -0,0 +1,157 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This programme illustrates building a panel of multiscale models to +# test neuronal plasticity in different contexts. The simulation is set +# to settle for 5 seconds, then a 2 second tetanus is delivered, then +# the simulation continues for another 50 seconds. +# By default we set it to run the smallest model, that takes about 4 minutes +# to run 57 seconds of simulation time, on an Intel core I7 at +# 2.2 GHz. The big model, VHC-neuron, takes almost 90 minutes. +# This program dumps data to text files for further analysis. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +#### Choose your favourite models here. ################# +#elecFileNames = ( "ca1_minimal.p", ) +#elecFileNames = ( "ca1_minimal.p", "h10.CNG.swc" ) +elecFileNames = ( "CA1.morph.xml", "ca1_minimal.p", "VHC-neuron.CNG.swc", "h10.CNG.swc" ) +synSpineList = [] +synDendList = [] +probeInterval = 0.1 +probeAmplitude = 1.0 +tetanusFrequency = 100.0 +tetanusAmplitude = 1000 +tetanusAmplitudeForSpines = 1000 +baselineTime = 5 +tetTime = 2 +postTetTime = 50 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + spineDistrib = [ \ + ["spine", '#apical#', "spineSpacing", "20e-6", \ + "spineSpacingDistrib", "2e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + spineProto = spineProto \ + ) + + return rdes + +def interlude( view ): + view.yaw( 0.01 ) + +def create_viewer(rdes): + print ' doing viewer for ', rdes.soma.path + network = moogli.extensions.moose.read(rdes.elecid.path) + normalizer = moogli.utilities.normalizer(-0.08, + 0.02, + clipleft=True, + clipright=True) + colormap = moogli.colors.UniformColorMap([moogli.colors.Color(0.0, + 0.5, + 1.0, + 1.0), + moogli.colors.Color(1.0, + 0.0, + 0.0, + 0.9)]) + mapper = moogli.utilities.mapper(colormap, normalizer) + + vms = [moose.element(x).Vm for x in network.shapes.keys()] + network.set("color", vms, mapper) + viewer = moogli.Viewer("vm-viewer") + viewer.attach_shapes(network.shapes.values()) + view = moogli.View("vm-view", interlude=interlude ) + viewer.attach_view(view) + viewer.show() + viewer.start() + view.pitch( PI/2.0 ) + return viewer + +def main(): + app = QtGui.QApplication(sys.argv) + numpy.random.seed(1234) + rdes = buildRdesigneur() + viewers = [] + j = 0 + for i in elecFileNames: + print i + ename = '/model' + str(j) + rdes.cellProtoList = [ ['./cells/' + i, 'elec' ] ] + rdes.buildModel( ename ) + assert( moose.exists( ename ) ) + moose.reinit() + viewers.append(create_viewer(rdes)) + j = j + 1 + app.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/Fig5_CellMultiscale/Fig5BCD.py b/examples/Fig5_CellMultiscale/Fig5BCD.py new file mode 100644 index 0000000..78595b4 --- /dev/null +++ b/examples/Fig5_CellMultiscale/Fig5BCD.py @@ -0,0 +1,281 @@ +######################################################################## +# This program is copyright (c) Upinder S. Bhalla, NCBS, 2015. +# It is licenced under the GPL 2.1 or higher. +# There is no warranty of any kind. You are welcome to make copies under +# the provisions of the GPL. +# This programme illustrates building a panel of multiscale models to +# test neuronal plasticity in different contexts. The simulation is set +# to settle for 5 seconds, then a 2 second tetanus is delivered, then +# the simulation continues for another 50 seconds. +# By default we set it to run the smallest model, that takes about 4 minutes +# to run 57 seconds of simulation time, on an Intel core I7 at +# 2.2 GHz. The big model, VHC-neuron, takes almost 90 minutes. +# This program dumps data to text files for further analysis. +######################################################################## +import moogli +import numpy +import time +import pylab +import moose +from moose import neuroml +from PyQt4 import Qt, QtCore, QtGui +import matplotlib.pyplot as plt +import sys +import os +from moose.neuroml.ChannelML import ChannelML +sys.path.append('/home/bhalla/moose/trunk/Demos/util') +import rdesigneur as rd + +PI = 3.14159265359 +useGssa = True +combineSegments = False +#### Choose your favourite model here. ################# +#elecFileNames = ( "ca1_minimal.p", ) +#elecFileNames = ( "ca1_minimal.p", "h10.CNG.swc" ) +elecFileNames = ( "CA1.morph.xml", "ca1_minimal.p", "VHC-neuron.CNG.swc", "h10.CNG.swc" ) +synSpineList = [] +synDendList = [] +probeInterval = 0.1 +probeAmplitude = 1.0 +tetanusFrequency = 100.0 +tetanusAmplitude = 1000 +tetanusAmplitudeForSpines = 1000 +baselineTime = 5 +tetTime = 2 +postTetTime = 50 + +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + chanProto = [ + ['./chans/hd.xml'], \ + ['./chans/kap.xml'], \ + ['./chans/kad.xml'], \ + ['./chans/kdr.xml'], \ + ['./chans/na3.xml'], \ + ['./chans/nax.xml'], \ + ['./chans/CaConc.xml'], \ + ['./chans/Ca.xml'], \ + ['./chans/NMDA.xml'], \ + ['./chans/Glu.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [ \ + ['./chem/' + 'psd53.g', 'ltpModel'] \ + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ], \ + ["na3", "#soma#,#dend#,#apical#", "Gbar", "250" ], \ + ["nax", "#soma#,#axon#", "Gbar", "1250" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#dend#,#apical#", "tau", "0.0133" ], \ + ["kad", "#soma#,#dend#,#apical#", "Gbar", \ + "300*H(p - 100e-6)*(1+p*1e4)" ], \ + ["Ca", "#dend#,#apical#", "Gbar", "50" ], \ + ["glu", "#dend#,#apical#", "Gbar", "200*H(p-200e-6)" ], \ + ["NMDA", "#dend#,#apical#", "Gbar", "2*H(p-200e-6)" ] \ + ] + spineDistrib = [ \ + ["spine", '#apical#', "spineSpacing", "20e-6", \ + "spineSpacingDistrib", "2e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [ \ + [ "ltpModel", "#apical#", "install", "1"] + ] + + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'Gbar', 0, 0.01 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + + return rdes + +def buildPlots( rdes ): + numPlots = 10 + caPsd = moose.vec( '/model/chem/psd/Ca' ) + caHead = moose.vec( '/model/chem/spine/Ca' ) + psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) + numSpines = rdes.spineCompt.mesh.num + assert( 2 * numSpines == len( rdes.spineComptElist ) ) + if not moose.exists( '/graphs' ): + moose.Neutral( '/graphs' ) + assert( len( caPsd ) == numSpines ) + assert( len( caHead ) == numSpines ) + if numSpines < numPlots: + caPsdTab = moose.Table2( '/graphs/caPsdTab', numSpines ).vec + caHeadTab = moose.Table2( '/graphs/caHeadTab', numSpines ).vec + psdRtab = moose.Table2( '/graphs/psdRtab', numSpines ).vec + for i in range( numSpines ): + moose.connect( caPsdTab[i], 'requestOut', caPsd[i], 'getConc' ) + moose.connect( caHeadTab[i], 'requestOut', caHead[i], 'getConc') + moose.connect( psdRtab[i], 'requestOut', psdR[i], 'getN' ) + else: + caPsdTab = moose.Table2( '/graphs/caPsdTab', numPlots ).vec + caHeadTab = moose.Table2( '/graphs/caHeadTab', numPlots ).vec + psdRtab = moose.Table2( '/graphs/psdRtab', numPlots ).vec + dx = numSpines / numPlots + for i in range( numPlots ): + moose.connect( caPsdTab[i], 'requestOut', caPsd[i*dx], 'getConc' ) + moose.connect( caHeadTab[i], 'requestOut', caHead[i*dx], 'getConc' ) + moose.connect( psdRtab[i], 'requestOut', psdR[i*dx], 'getN' ) + vtab = moose.Table( '/graphs/vtab' ) + moose.connect( vtab, 'requestOut', rdes.soma, 'getVm' ) + eSpineCaTab = moose.Table( '/graphs/eSpineCaTab' ) + path = rdes.spineComptElist[1].path + "/Ca_conc" + moose.connect( eSpineCaTab, 'requestOut', path, 'getCa' ) + eSpineVmTab = moose.Table( '/graphs/eSpineVmTab' ) + moose.connect( eSpineVmTab, 'requestOut', rdes.spineComptElist[1], 'getVm' ) + eSpineGkTab = moose.Table( '/graphs/eSpineGkTab' ) + path = rdes.spineComptElist[1].path + "/NMDA" + moose.connect( eSpineGkTab, 'requestOut', path, 'getGk' ) + +def saveAndClearPlots( name ): + print 'saveAndClearPlots( ', name, ' )' + for i in moose.wildcardFind( "/graphs/#" ): + #plot stuff + i.xplot( name + '.xplot', i.name ) + moose.delete( "/graphs" ) + +def printPsd( name ): + # Print the vol, the path dist from soma, the electrotonic dist, and N + psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) + neuronVoxel = moose.element( '/model/chem/spine' ).neuronVoxel + elecComptMap = moose.element( '/model/chem/dend' ).elecComptMap + print "len( neuronVoxel = ", len( neuronVoxel), min( neuronVoxel), max( neuronVoxel) + print len( elecComptMap), elecComptMap[0], elecComptMap[12] + neuron = moose.element( '/model/elec' ) + ncompts = neuron.compartments + d = {} + j = 0 + for i in ncompts: + #print i + d[i] = j + j += 1 + + f = open( name + ".txt", 'w' ) + for i in range( len( psdR ) ): + n = psdR[i].n + conc = psdR[i].conc + vol = psdR[i].volume + compt = elecComptMap[ neuronVoxel[i] ] + #print compt + segIndex = d[compt[0]] + p = neuron.geometricalDistanceFromSoma[ segIndex ] + L = neuron.electrotonicDistanceFromSoma[ segIndex ] + s = str( i ) + " " + str(n) + " " + str( conc ) + " " + str(p) + " " + str(L) + "\n" + f.write( s ) + f.close() + + +def probeStimulus( time ): + for t in numpy.arange( 0, time, probeInterval ): + moose.start( probeInterval ) + for i in synSpineList: + i.activation( probeAmplitude ) + +def tetanicStimulus( time ): + tetInterval = 1.0/tetanusFrequency + for t in numpy.arange( 0, time, tetInterval ): + moose.start( tetInterval ) + for i in synDendList: + i.activation( tetanusAmplitude ) + for i in synSpineList: + i.activation( tetanusAmplitudeForSpines ) + +def main(): + global synSpineList + global synDendList + numpy.random.seed( 1234 ) + rdes = buildRdesigneur() + for i in elecFileNames: + print i + rdes.cellProtoList = [ ['./cells/' + i, 'elec'] ] + rdes.buildModel( '/model' ) + assert( moose.exists( '/model' ) ) + synSpineList = moose.wildcardFind( "/model/elec/#head#/glu,/model/elec/#head#/NMDA" ) + temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) + + synDendList = list( temp - set( synSpineList ) ) + moose.reinit() + buildPlots( rdes ) + # Run for baseline, tetanus, and post-tetanic settling time + t1 = time.time() + probeStimulus( baselineTime ) + tetanicStimulus( tetTime ) + probeStimulus( postTetTime ) + print 'real time = ', time.time() - t1 + + printPsd( i + ".fig5" ) + saveAndClearPlots( i + ".fig5" ) + moose.delete( '/model' ) + rdes.elecid = moose.element( '/' ) + +if __name__ == '__main__': + main() diff --git a/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc b/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc new file mode 100644 index 0000000..6b8748e --- /dev/null +++ b/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc @@ -0,0 +1,2493 @@ +# Original file 970529c.out.swc edited by Duncan Donohue using StdSwc version 1.21 on 8/16/05. +# Irregularities and fixes documented in 970529c.out.swc.std. See StdSwc1.21.doc for more information. +# +# Claiborne to SWC conversion from L-Measure. R. Scorcioni: rscorcio@gmu.edu +# Original fileName:C:\Documents and Settings\Admin\Desktop\Jaffe\970529c.out +# +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0 0 0 42.789 -1 + 2 3 -3.25 -3.95 -1.35 2.485 1 + 3 3 -4.34 -5.37 -1.38 1.955 2 + 4 3 -5.86 -5.37 -1.38 1.955 3 + 5 3 -5.64 -8.92 -1.38 1.955 4 + 6 3 -6.73 -11.41 -1.38 1.955 5 + 7 3 -8.03 -13.01 -1.38 1.955 6 + 8 3 -8.9 -14.61 -1.38 1.775 7 + 9 3 -9.55 -16.74 -1.38 1.775 8 + 10 3 -10.42 -17.27 0.67 1.955 9 + 11 3 -10.42 -17.8 0.67 1.955 10 + 12 3 -12.16 -18.87 0.67 0.89 11 + 13 3 -13.46 -20.65 -1.74 0.89 12 + 14 3 -15.42 -22.25 -1.74 0.89 13 + 15 3 -16.28 -23.84 -4.51 0.71 14 + 16 3 -18.46 -25.8 -4.51 0.71 15 + 17 3 -20.63 -27.93 -4.51 0.71 16 + 18 3 -21.71 -29.35 -6.68 0.71 17 + 19 3 -23.67 -32.02 -6.68 0.71 18 + 20 3 -25.19 -33.26 -6.68 0.71 19 + 21 3 -26.87 -35.31 -6.68 0.71 20 + 22 3 -28.39 -37.45 -6.68 0.71 21 + 23 3 -30.13 -38.69 -6.68 0.71 22 + 24 3 -31.43 -38.36 -7.26 0.71 23 + 25 3 -31.65 -41.2 -7.26 0.71 24 + 26 3 -33.61 -43.33 -7.26 0.71 25 + 27 3 -34.69 -45.46 -7.7 0.71 26 + 28 3 -36.21 -47.95 -7.7 0.71 27 + 29 3 -36.99 -50.85 -7.7 0.71 28 + 30 3 -38.29 -52.8 -7.7 0.71 29 + 31 3 -38.94 -54.58 -7.7 0.71 30 + 32 3 -39.59 -56.71 -7.7 0.71 31 + 33 3 -40.24 -58.84 -7.7 0.71 32 + 34 3 -41.11 -61.15 -7.7 0.71 33 + 35 3 -41.98 -63.46 -7.7 0.71 34 + 36 3 -43.02 -65.34 -7.7 0.71 35 + 37 3 -44.98 -66.94 -7.05 0.71 36 + 38 3 -46.06 -68.38 -7.34 0.71 37 + 39 3 -48.45 -71.04 -7.34 0.71 38 + 40 3 -49.54 -72.82 -7.34 0.71 39 + 41 3 -51.27 -74.6 -7.14 0.71 40 + 42 3 -53.01 -76.55 -7.14 0.71 41 + 43 3 -54.31 -78.68 -7.14 0.71 42 + 44 3 -55.86 -81.29 -7.14 0.71 43 + 45 3 -57.59 -83.07 -7.14 0.71 44 + 46 3 -59.33 -85.56 -7.14 0.71 45 + 47 3 -60.85 -88.22 -7.14 0.71 46 + 48 3 -61.8 -88.72 -7.14 0.71 47 + 49 3 -63.11 -89.43 -9.1 0.71 48 + 50 3 -64.84 -90.67 -12.48 0.71 49 + 51 3 -67.02 -91.38 -14.43 0.71 50 + 52 3 -68.54 -92.45 -15.53 0.71 51 + 53 3 -70.71 -93.87 -15.53 0.71 52 + 54 3 -72.45 -95.47 -15.53 0.71 53 + 55 3 -73.31 -97.42 -15.53 0.71 54 + 56 3 -74.18 -100.08 -17.04 0.71 55 + 57 3 -74.83 -102.75 -17.04 0.71 56 + 58 3 -74.5 -104.76 -17.04 0.71 57 + 59 3 -74.72 -106.18 -15.7 0.71 58 + 60 3 -75.15 -108.84 -15.7 0.71 59 + 61 3 -76.02 -111.15 -15.7 0.71 60 + 62 3 -77.11 -113.29 -15.7 0.71 61 + 63 3 -78.63 -115.77 -17.44 0.71 62 + 64 3 -80.15 -117.55 -17.44 0.71 63 + 65 3 -80.79 -120.07 -17.44 0.71 64 + 66 3 -80.79 -121.14 -20.1 0.71 65 + 67 3 -82.26 -123.16 -20.1 0.71 66 + 68 3 -83.78 -125.29 -20.1 0.71 67 + 69 3 -84.43 -127.24 -20.1 0.71 68 + 70 3 -85.51 -129.02 -20.1 0.71 69 + 71 3 -87.9 -130.26 -20.1 0.71 70 + 72 3 -88.77 -132.04 -20.1 0.71 71 + 73 3 -89.64 -134 -20.1 0.71 72 + 74 3 -92.03 -136.84 -20.1 0.71 73 + 75 3 -93.67 -138.89 -20.1 0.71 74 + 76 3 -94.82 -140.58 -20.1 0.71 75 + 77 3 -96.34 -141.65 -20.1 0.71 76 + 78 3 -98.3 -142.18 -20.1 0.71 77 + 79 3 -99.82 -143.6 -20.1 0.71 78 + 80 3 -100.47 -145.02 -20.1 0.71 79 + 81 3 -101.55 -146.09 -20.1 0.71 80 + 82 3 -80.79 -123.27 -20.1 0.71 66 + 83 3 -81 -125.4 -20.1 0.71 82 + 84 3 -82.09 -128.06 -20.1 0.71 83 + 85 3 -82.09 -130.2 -20.1 0.71 84 + 86 3 -82.31 -130.91 -20.1 0.71 85 + 87 3 -82.31 -131.26 -19.08 0.71 86 + 88 3 -82.74 -133.04 -19.08 0.71 87 + 89 3 -82.95 -134.31 -19.08 0.71 88 + 90 3 -82.74 -135.74 -19.08 0.71 89 + 91 3 -61.15 -89.6 -5.21 0.71 47 + 92 3 -62.46 -92.82 -5.21 0.71 91 + 93 3 -63.54 -95.67 -5.21 0.71 92 + 94 3 -64.41 -97.8 -5.21 0.71 93 + 95 3 -65.06 -100.28 -5.21 0.71 94 + 96 3 -65.28 -101.88 -5.21 0.71 95 + 97 3 -65.71 -104.55 -5.21 0.71 96 + 98 3 -65.95 -107.94 -5.21 0.71 97 + 99 3 -66.19 -110.6 -5.21 0.71 98 + 100 3 -66.62 -113.09 -5.21 0.71 99 + 101 3 -66.62 -114.86 -5.46 0.71 100 + 102 3 -67.27 -116.28 -5.46 0.71 101 + 103 3 -68.14 -117.88 -5.46 0.71 102 + 104 3 -67.92 -119.66 -3.45 0.71 103 + 105 3 -67.72 -121.38 -3.45 0.71 104 + 106 3 -67.07 -124.05 -3.45 0.71 105 + 107 3 -67.72 -126.36 -3.45 0.71 106 + 108 3 -67.72 -128.49 -3.45 0.71 107 + 109 3 -68.37 -130.09 0.1 0.71 108 + 110 3 -68.37 -132.75 0.1 0.71 109 + 111 3 -69.67 -133.99 0.1 0.71 110 + 112 3 -70.11 -135.77 0.1 0.71 111 + 113 3 -69.48 -139.14 0.1 0.71 112 + 114 3 -69.27 -140.73 0.26 0.71 113 + 115 3 -69.48 -142.69 0.26 0.71 114 + 116 3 -69.7 -144.46 0.26 0.71 115 + 117 3 -69.48 -146.24 2.1 0.71 116 + 118 3 -68.62 -148.91 2.1 0.71 117 + 119 3 -70.14 -150.68 2.1 0.71 118 + 120 3 -70.14 -151.52 1.9 0.89 119 + 121 3 -10.6 -19.79 0.67 1.245 11 + 122 3 -10.82 -20.86 0.67 1.065 121 + 123 3 -11.25 -22.63 3.11 1.065 122 + 124 3 -11.69 -23.34 3.11 1.065 123 + 125 3 -11.91 -24.05 3.1 1.065 124 + 126 3 -12.77 -25.12 3.1 0.89 125 + 127 3 -13.86 -26.72 3.1 0.89 126 + 128 3 -15.16 -28.5 2.5 0.89 127 + 129 3 -16.68 -30.45 2.5 0.89 128 + 130 3 -17.34 -32.05 4.34 0.89 129 + 131 3 -18.2 -33.65 4.34 0.89 130 + 132 3 -19.29 -34.18 6.59 0.89 131 + 133 3 -19.72 -35.07 6.06 0.89 132 + 134 3 -20.94 -35.93 6.06 0.71 133 + 135 3 -22.24 -37.71 6.06 0.71 134 + 136 3 -23.54 -38.95 8.27 0.71 135 + 137 3 -25.5 -40.02 9.75 0.71 136 + 138 3 -26.58 -40.73 12.12 0.71 137 + 139 3 -28.1 -40.91 14.37 0.71 138 + 140 3 -29.84 -40.73 15.93 0.71 139 + 141 3 -31.36 -40.91 17.94 0.71 140 + 142 3 -33.1 -41.26 20.75 0.71 141 + 143 3 -34.83 -42.15 22.3 0.71 142 + 144 3 -36.35 -43.04 24.67 0.71 143 + 145 3 -39.18 -44.46 26.14 0.71 144 + 146 3 -42.72 -46.04 26.14 0.71 145 + 147 3 -45.11 -46.22 28.64 0.71 146 + 148 3 -47.5 -46.75 31.14 0.71 147 + 149 3 -49.67 -47.82 30.56 0.71 148 + 150 3 -52.5 -48 30.56 0.71 149 + 151 3 -54.89 -48.89 30.56 0.71 150 + 152 3 -57.06 -49.24 30.56 0.71 151 + 153 3 -59.66 -49.96 30.56 0.71 152 + 154 3 -62.04 -50.13 33.3 0.71 153 + 155 3 -65.3 -51.02 33.3 0.71 154 + 156 3 -68.13 -51.73 33.3 0.71 155 + 157 3 -71.17 -53.15 32.83 0.71 156 + 158 3 -73.99 -54.4 32.83 0.71 157 + 159 3 -76.59 -55.64 32.83 0.71 158 + 160 3 -78.39 -56.69 32.83 0.71 159 + 161 3 -80.34 -57.6 32.83 0.71 160 + 162 3 -82.51 -58.13 32.83 0.71 161 + 163 3 -84.03 -59.02 32.83 0.71 162 + 164 3 -85.55 -59.73 34.9 0.71 163 + 165 3 -87.29 -59.91 34.9 0.71 164 + 166 3 -89.25 -59.91 34.9 0.71 165 + 167 3 -92.07 -61.15 36.86 0.71 166 + 168 3 -94.24 -63.28 36.86 0.71 167 + 169 3 -95.34 -65.4 36.86 0.71 168 + 170 3 -96.86 -67 36.86 0.71 169 + 171 3 -98.16 -68.24 36.86 0.71 170 + 172 3 -99.03 -69.13 36.86 0.71 171 + 173 3 -100.55 -70.02 36.86 0.71 172 + 174 3 -102.28 -71.08 36.86 0.71 173 + 175 3 -103.15 -71.79 36.42 0.71 174 + 176 3 -103.59 -72.86 32.87 0.71 175 + 177 3 -104.67 -74.99 32.87 0.71 176 + 178 3 -105.33 -77.12 32.87 0.71 177 + 179 3 -106.41 -78.9 32.87 0.71 178 + 180 3 -107.12 -80.29 32.87 0.71 179 + 181 3 -19.94 -36.85 3.29 0.71 133 + 182 3 -20.81 -37.73 3.29 0.71 181 + 183 3 -21.68 -39.51 4.88 0.71 182 + 184 3 -21.56 -41.92 1.67 0.71 183 + 185 3 -22.64 -43.87 2.73 0.71 184 + 186 3 -23.08 -46.18 0.45 0.71 185 + 187 3 -24.38 -48.32 0.45 0.71 186 + 188 3 -25.03 -50.45 0.45 0.71 187 + 189 3 -26.34 -52.58 0.45 0.71 188 + 190 3 -26.55 -54.71 0.45 0.71 189 + 191 3 -27.44 -56.21 -1.87 0.71 190 + 192 3 -28.03 -59.1 -2.98 0.71 191 + 193 3 -29.11 -61.94 -2.98 0.71 192 + 194 3 -29.55 -64.6 -2.98 0.71 193 + 195 3 -30.2 -67.09 -5.04 0.71 194 + 196 3 -30.63 -69.22 -6.86 0.71 195 + 197 3 -31.07 -71.36 -6.86 0.71 196 + 198 3 -31.59 -74.5 -6.86 0.71 197 + 199 3 -32.24 -76.45 -6.86 0.71 198 + 200 3 -33.11 -78.41 -6.42 0.71 199 + 201 3 -33.11 -81.25 -6.42 0.71 200 + 202 3 -33.33 -83.56 -6.42 0.71 201 + 203 3 -33.55 -84.8 -6.42 0.71 202 + 204 3 -33.55 -86.04 -6.86 0.89 203 + 205 3 -34.72 -86.76 -6.86 0.71 204 + 206 3 -35.59 -88.71 -6.86 0.71 205 + 207 3 -36.24 -89.98 -7.02 0.71 206 + 208 3 -36.89 -92.28 -7.78 0.71 207 + 209 3 -37.54 -94.42 -10.3 0.71 208 + 210 3 -37.98 -96.19 -10.3 0.71 209 + 211 3 -38.63 -98.15 -10.3 0.71 210 + 212 3 -39.28 -99.57 -10.62 0.71 211 + 213 3 -39.28 -100.81 -12.82 0.71 212 + 214 3 -39.9 -103.35 -12.82 0.71 213 + 215 3 -40.55 -105.13 -12.54 0.71 214 + 216 3 -41.2 -106.2 -13.25 0.71 215 + 217 3 -42.34 -107.47 -13.25 0.71 216 + 218 3 -43.86 -109.06 -13.25 0.71 217 + 219 3 -45.38 -110.13 -13.25 0.71 218 + 220 3 -46.03 -111.73 -13.25 0.71 219 + 221 3 -46.46 -113.15 -16.46 0.71 220 + 222 3 -47.98 -115.3 -16.46 0.71 221 + 223 3 -49.07 -117.44 -18.34 0.71 222 + 224 3 -51.02 -118.15 -18.34 0.71 223 + 225 3 -53.19 -119.57 -20.06 0.71 224 + 226 3 -55.37 -120.81 -20.06 0.71 225 + 227 3 -57.4 -122.11 -21.44 0.71 226 + 228 3 -59.36 -123 -24.04 0.71 227 + 229 3 -61.1 -124.95 -24.04 0.71 228 + 230 3 -63.48 -126.55 -24.04 0.71 229 + 231 3 -65.87 -128.51 -24.04 0.71 230 + 232 3 -67.18 -130.46 -27.01 0.71 231 + 233 3 -69.57 -131.35 -27.01 0.71 232 + 234 3 -71.74 -134.55 -27.01 0.71 233 + 235 3 -73.91 -135.61 -27.8 0.71 234 + 236 3 -76.22 -136.53 -30.56 0.71 235 + 237 3 -77.96 -137.07 -30.56 0.71 236 + 238 3 -80.35 -138.13 -30.56 0.71 237 + 239 3 -81.65 -139.2 -30.56 0.71 238 + 240 3 -83.17 -139.73 -30.56 0.71 239 + 241 3 -84.69 -141.15 -30.56 0.71 240 + 242 3 -86.43 -142.57 -30.56 0.71 241 + 243 3 -87.32 -144.27 -30.56 0.71 242 + 244 3 -89.49 -145.33 -30.56 0.71 243 + 245 3 -91.44 -146.22 -30.56 0.71 244 + 246 3 -41.42 -108.68 -15.42 0.71 216 + 247 3 -41.86 -111.88 -15.42 0.71 246 + 248 3 -41.86 -114.01 -15.34 0.71 247 + 249 3 -42.07 -116.15 -15.34 0.71 248 + 250 3 -41.38 -119.46 -16.16 0.71 249 + 251 3 -41.18 -121.77 -19.07 0.71 250 + 252 3 -41.83 -123.91 -18.58 0.71 251 + 253 3 -41.62 -125.86 -18.58 0.71 252 + 254 3 -41.62 -127.99 -20.79 0.71 253 + 255 3 -40.96 -130.48 -20.79 0.71 254 + 256 3 -40.96 -132.97 -22.38 0.71 255 + 257 3 -40.18 -135.18 -22.38 0.71 256 + 258 3 -40.4 -137.31 -24.36 0.71 257 + 259 3 -41.27 -139.08 -24.36 0.71 258 + 260 3 -41.7 -140.51 -26.77 0.71 259 + 261 3 -44.09 -142.64 -29.73 0.71 260 + 262 3 -44.96 -144.41 -29.73 0.71 261 + 263 3 -45.18 -146.01 -29.73 0.71 262 + 264 3 -45.18 -148.5 -29.73 0.71 263 + 265 3 -44.38 -151.06 -29.73 0.71 264 + 266 3 -43.36 -153.55 -29.73 0.71 265 + 267 3 -43.36 -155.15 -29.73 0.71 266 + 268 3 -33.55 -87.82 -5.68 0.71 204 + 269 3 -34.2 -90.66 -5.68 0.71 268 + 270 3 -34.42 -92.62 -5.68 0.71 269 + 271 3 -35.07 -95.1 -5.68 0.71 270 + 272 3 -35.5 -97.24 -5.68 0.71 271 + 273 3 -35.5 -99.72 -5.68 0.71 272 + 274 3 -34.63 -101.32 -5.68 0.71 273 + 275 3 -34.67 -103.04 -5.68 0.71 274 + 276 3 -35.1 -104.82 -6.99 0.71 275 + 277 3 -35.32 -106.42 -6.99 0.71 276 + 278 3 -35.54 -108.37 -6.99 0.71 277 + 279 3 -35.97 -109.79 -8.37 0.71 278 + 280 3 -35.97 -110.86 -8.37 0.71 279 + 281 3 -35.97 -111.22 -8.37 0.71 280 + 282 3 -37.35 -112.89 -8.37 0.71 281 + 283 3 -38.66 -115.02 -8.37 0.71 282 + 284 3 -39.31 -116.8 -8.37 0.71 283 + 285 3 -40.39 -117.68 -8.37 0.71 284 + 286 3 -41.26 -119.46 -8.37 0.71 285 + 287 3 -41.7 -120.7 -8.37 0.71 286 + 288 3 -43.43 -122.84 -8.37 0.71 287 + 289 3 -44.95 -124.08 -8.37 0.71 288 + 290 3 -46.26 -125.86 -8.37 0.71 289 + 291 3 -47.13 -127.63 -10.46 0.71 290 + 292 3 -48.14 -130.42 -10.46 0.71 291 + 293 3 -48.48 -132.24 -7.5 0.71 292 + 294 3 -49.79 -134.55 -7.5 0.71 293 + 295 3 -49.57 -136.86 -6.16 0.71 294 + 296 3 -50.66 -138.46 -7.18 0.71 295 + 297 3 -53.04 -140.24 -7.18 0.71 296 + 298 3 -55 -141.84 -4.03 0.71 297 + 299 3 -57.17 -142.37 -4.03 0.71 298 + 300 3 -58.91 -144.5 -4.03 0.71 299 + 301 3 -61.51 -145.75 -4.03 0.71 300 + 302 3 -63.6 -148.18 -3.6 0.71 301 + 303 3 -65.56 -149.78 -3.6 0.71 302 + 304 3 -66.86 -151.73 -3.6 0.71 303 + 305 3 -68.16 -152.44 -0.13 0.71 304 + 306 3 -68.62 -152.44 -0.76 0.71 305 + 307 3 -69.48 -152.97 -0.76 0.71 306 + 308 3 -35.32 -113.17 -10.42 0.71 281 + 309 3 -35.32 -117.08 -10.42 0.71 308 + 310 3 -35.25 -119.15 -10.42 0.71 309 + 311 3 -35.03 -121.29 -11.3 0.71 310 + 312 3 -34.82 -123.06 -11.3 0.71 311 + 313 3 -34.38 -124.48 -11.42 0.71 312 + 314 3 -33.73 -124.66 -11.42 0.71 313 + 315 3 -33.73 -126.79 -11.42 0.71 314 + 316 3 -33.51 -128.57 -11.42 0.71 315 + 317 3 -32.64 -129.99 -11.42 0.71 316 + 318 3 -31.56 -132.48 -11.42 0.71 317 + 319 3 -31.2 -135.26 -11.42 0.71 318 + 320 3 -30.55 -136.86 -11.42 0.71 319 + 321 3 -29.69 -139.17 -11.42 0.71 320 + 322 3 -29.04 -140.59 -11.42 0.71 321 + 323 3 -27.96 -141.84 -11.42 0.71 322 + 324 3 -28.61 -143.44 -11.42 0.71 323 + 325 3 -27.52 -143.97 -14.1 0.71 324 + 326 3 -27.31 -146.99 -14.1 0.71 325 + 327 3 -26.58 -148.51 -14.1 0.71 326 + 328 3 -25.8 -150.07 -14.1 0.71 327 + 329 3 -24.93 -151.49 -14.1 0.71 328 + 330 3 -23.41 -152.91 -14.1 0.71 329 + 331 3 -22.11 -153.62 -14.1 0.71 330 + 332 3 -20.8 -154.68 -14.1 0.71 331 + 333 3 -21.24 -157.17 -17.15 0.71 332 + 334 3 -20.59 -159.3 -17.15 0.71 333 + 335 3 -20.15 -160.72 -17.15 0.71 334 + 336 3 -19.28 -162.32 -17.15 0.71 335 + 337 3 -17.76 -162.15 -17.15 0.71 336 + 338 3 -17.11 -164.46 -17.15 0.71 337 + 339 3 -15.76 -166.02 -17.15 0.71 338 + 340 3 -14.68 -167.8 -17.15 0.71 339 + 341 3 -14.03 -168.51 -19.01 0.71 340 + 342 3 -12.75 -169.71 -19.01 0.71 341 + 343 3 -10.39 -25.65 6.52 0.71 125 + 344 3 -10.17 -27.43 7.42 0.71 343 + 345 3 -8.65 -28.32 7.42 0.71 344 + 346 3 -8.87 -30.1 7.42 0.71 345 + 347 3 -8.65 -32.4 10.22 0.71 346 + 348 3 -7.52 -34.06 13.02 0.71 347 + 349 3 -6.43 -35.66 15.02 0.71 348 + 350 3 -5.13 -37.08 14.17 0.71 349 + 351 3 -4.69 -39.21 14.17 0.71 350 + 352 3 -4.26 -40.63 16.77 0.71 351 + 353 3 -3.39 -42.41 16.22 0.71 352 + 354 3 -2.31 -43.65 16.22 0.71 353 + 355 3 -1.22 -45.61 18.72 0.71 354 + 356 3 -0.13 -47.03 19.02 0.71 355 + 357 3 1.1 -48.66 19.02 0.71 356 + 358 3 2.19 -49.37 21.17 0.71 357 + 359 3 3.92 -50.97 22.74 0.71 358 + 360 3 5.88 -52.39 22.74 0.71 359 + 361 3 7.83 -54.34 22.74 0.71 360 + 362 3 8.92 -55.76 24.71 0.71 361 + 363 3 9.79 -57.36 22.82 0.71 362 + 364 3 10.66 -59.32 22.82 0.71 363 + 365 3 11.31 -61.27 22.82 0.71 364 + 366 3 12.61 -62.87 22.82 0.71 365 + 367 3 13.67 -65.35 22.82 0.71 366 + 368 3 13.45 -67.66 24.69 0.71 367 + 369 3 13.23 -69.79 26.55 0.71 368 + 370 3 13.23 -72.28 26.55 0.71 369 + 371 3 12.36 -75.12 26.55 0.71 370 + 372 3 12.15 -77.96 26.55 0.71 371 + 373 3 13.27 -80.17 26.55 0.71 372 + 374 3 14.57 -83.01 26.55 0.71 373 + 375 3 16.31 -84.61 26.55 0.71 374 + 376 3 17.61 -86.03 25.15 0.71 375 + 377 3 18.91 -87.28 25.15 0.71 376 + 378 3 20.65 -89.58 25.15 0.71 377 + 379 3 21.52 -91.54 25.15 0.71 378 + 380 3 22.6 -93.14 25.15 0.71 379 + 381 3 23.88 -95.39 25.15 0.71 380 + 382 3 24.53 -96.99 25.15 0.71 381 + 383 3 24.75 -97.52 23.02 0.71 382 + 384 3 25.19 -98.59 23.02 0.71 383 + 385 3 24.55 -99.53 23.02 0.71 384 + 386 3 24.11 -102.72 23.02 0.71 385 + 387 3 24.11 -105.21 23.02 0.71 386 + 388 3 24.55 -106.63 23.02 0.71 387 + 389 3 23.03 -108.94 23.02 0.71 388 + 390 3 23.24 -112.14 23.02 0.71 389 + 391 3 23.24 -114.09 23.02 0.71 390 + 392 3 23.4 -116.15 23.28 0.71 391 + 393 3 23.18 -118.46 23.28 0.71 392 + 394 3 22.96 -120.41 23.28 0.71 393 + 395 3 22.75 -122.19 23.28 0.71 394 + 396 3 22.09 -124.5 23.28 0.71 395 + 397 3 20.79 -126.45 23.28 0.71 396 + 398 3 19.92 -128.4 23.28 0.71 397 + 399 3 18.93 -130.24 23.28 0.71 398 + 400 3 17.49 -131.68 23.28 0.71 399 + 401 3 26.71 -99.48 23.02 0.71 384 + 402 3 28.88 -101.61 23.02 0.71 401 + 403 3 29.96 -103.39 23.02 0.71 402 + 404 3 30.62 -104.1 25.22 0.71 403 + 405 3 32.14 -104.98 25.22 0.71 404 + 406 3 33.22 -106.94 25.22 0.71 405 + 407 3 34.09 -108.54 25.22 0.71 406 + 408 3 35.52 -110.44 23.38 0.71 407 + 409 3 36.6 -112.21 22.04 0.71 408 + 410 3 36.6 -114.88 20.78 0.71 409 + 411 3 37.25 -116.83 20.78 0.71 410 + 412 3 37.91 -119.14 20.78 0.71 411 + 413 3 37.47 -121.1 20.78 0.71 412 + 414 3 38.56 -122.52 20.78 0.71 413 + 415 3 38.34 -125.36 20.78 0.71 414 + 416 3 38.63 -127.72 20.78 0.71 415 + 417 3 39.93 -130.03 20.78 0.71 416 + 418 3 41.67 -133.05 20.78 0.71 417 + 419 3 42.76 -133.94 20.34 0.71 418 + 420 3 43.84 -136.07 18.02 0.71 419 + 421 3 44.93 -138.21 18.02 0.71 420 + 422 3 47.1 -140.16 18.02 0.71 421 + 423 3 48.97 -141.7 18.02 0.71 422 + 424 3 -3.44 -3.24 -7.45 1.42 1 + 425 3 -5.39 -5.04 -7.45 1.065 424 + 426 3 -6.26 -6.81 -9 1.065 425 + 427 3 -7.56 -9.3 -11.45 1.065 426 + 428 3 -8.87 -12.14 -11.15 1.065 427 + 429 3 -9.74 -13.74 -11.15 1.065 428 + 430 3 -9.95 -14.63 -11.15 1.065 429 + 431 3 -10.82 -15.87 -11.15 1.065 430 + 432 3 -11.04 -17.65 -10.71 0.89 431 + 433 3 -11.47 -19.96 -10.71 0.89 432 + 434 3 -11.39 -21.59 -12.99 0.89 433 + 435 3 -12.04 -24.61 -15.49 0.89 434 + 436 3 -11.39 -27.28 -15.49 0.89 435 + 437 3 -10.3 -29.41 -15.78 0.89 436 + 438 3 -9 -32.25 -15.78 0.71 437 + 439 3 -5.96 -34.92 -15.78 0.71 438 + 440 3 -4.25 -37.17 -15.78 0.71 439 + 441 3 -2.95 -40.01 -15.78 0.71 440 + 442 3 -1.86 -42.32 -17.46 0.71 441 + 443 3 -0.12 -44.45 -17.46 0.71 442 + 444 3 0.96 -46.58 -17.46 0.71 443 + 445 3 2.92 -47.3 -17.46 0.71 444 + 446 3 5.31 -49.96 -17.46 0.71 445 + 447 3 7.15 -50.93 -17.46 0.71 446 + 448 3 8.45 -51.99 -17.37 0.71 447 + 449 3 10.63 -53.26 -15.32 0.71 448 + 450 3 13.23 -54.32 -15.32 0.71 449 + 451 3 14.97 -56.1 -15.32 0.71 450 + 452 3 16.73 -57.99 -11.07 0.71 451 + 453 3 19.99 -60.3 -11.07 0.71 452 + 454 3 22.16 -62.61 -11.07 0.71 453 + 455 3 24.55 -64.56 -11.07 0.71 454 + 456 3 26.51 -65.28 -9.06 0.71 455 + 457 3 29.33 -66.52 -7.1 0.71 456 + 458 3 31.94 -68.83 -7.5 0.71 457 + 459 3 34.98 -70.6 -6.11 0.71 458 + 460 3 37.4 -72.08 -6.09 0.71 459 + 461 3 40.66 -73.68 -6.09 0.71 460 + 462 3 43.48 -75.46 -6.09 0.71 461 + 463 3 45.44 -75.99 -6.09 0.71 462 + 464 3 47.39 -77.05 -6.09 0.71 463 + 465 3 48.91 -77.23 -7.27 0.71 464 + 466 3 50.65 -78.3 -7.27 0.71 465 + 467 3 53.91 -77.77 -7.27 0.71 466 + 468 3 55.32 -79.97 -9.21 0.71 467 + 469 3 58.14 -81.03 -7.62 0.71 468 + 470 3 60.09 -82.28 -10.16 0.71 469 + 471 3 62.05 -84.05 -10.16 0.71 470 + 472 3 62.27 -85.83 -8.19 0.71 471 + 473 3 62.85 -87.26 -8.19 0.71 472 + 474 3 64.8 -88.5 -8.19 0.71 473 + 475 3 66.11 -88.86 -8.19 0.71 474 + 476 3 67.41 -90.28 -8.19 0.71 475 + 477 3 68.28 -90.63 -8.19 0.71 476 + 478 3 69.58 -90.81 -8.19 0.71 477 + 479 3 70.23 -91.17 -8.19 0.71 478 + 480 3 71.32 -91.88 -8.19 0.71 479 + 481 3 72.19 -93.12 -8.19 0.71 480 + 482 3 73.27 -93.12 -8.19 0.71 481 + 483 3 -4.72 8.96 0.48 0.89 1 + 484 3 -5.59 9.67 -1.32 0.89 483 + 485 3 -6.68 9.67 -2.98 0.89 484 + 486 3 -8.42 9.5 -2.98 0.89 485 + 487 3 -9.94 9.67 -5.41 0.89 486 + 488 3 -12.11 10.21 -3.33 0.89 487 + 489 3 -13.84 10.21 -5.28 0.89 488 + 490 3 -15.15 10.03 -5.28 0.89 489 + 491 3 -16.02 10.38 -5.26 0.89 490 + 492 3 -17.54 10.21 -7.5 0.89 491 + 493 3 -19.06 10.03 -7.5 0.89 492 + 494 3 -20.58 9.85 -7.5 0.89 493 + 495 3 -22.52 9.05 -7.5 0.89 494 + 496 3 -22.54 9.39 -8.39 1.065 495 + 497 3 -24.56 9.52 -6.46 0.71 496 + 498 3 -27.6 9.16 -6.46 0.71 497 + 499 3 -29.12 9.52 -6.46 0.71 498 + 500 3 -30.42 9.87 -6.46 0.71 499 + 501 3 -31.72 9.52 -6.46 0.71 500 + 502 3 -33.9 9.16 -6.46 0.71 501 + 503 3 -35.42 9.16 -5.93 0.71 502 + 504 3 -36.72 9.52 -5.93 0.71 503 + 505 3 -38.46 10.23 -5.93 0.71 504 + 506 3 -39.54 9.87 -3.47 0.71 505 + 507 3 -41.06 9.87 -3.47 0.71 506 + 508 3 -42.31 9.79 -3.34 0.71 507 + 509 3 -44.26 9.43 -3.34 0.71 508 + 510 3 -45.78 8.7 -3.32 0.71 509 + 511 3 -46 7.81 -3.5 0.71 510 + 512 3 -48.6 7.81 -3.5 0.71 511 + 513 3 -51.64 7.28 -3.5 0.71 512 + 514 3 -54.03 7.28 -7.03 0.71 513 + 515 3 -57.07 7.28 -8.9 0.71 514 + 516 3 -59.68 7.45 -8.9 0.71 515 + 517 3 -61.31 7.01 -9.79 0.71 516 + 518 3 -62.61 7.19 -9.79 0.71 517 + 519 3 -63.48 6.65 -8.6 0.71 518 + 520 3 -65 5.94 -11.2 0.71 519 + 521 3 -67.17 5.76 -11.2 0.71 520 + 522 3 -69.56 6.12 -13.28 0.71 521 + 523 3 -69.78 6.83 -15.9 0.71 522 + 524 3 -73.03 5.41 -18.18 0.71 523 + 525 3 -74.99 4.88 -18.18 0.71 524 + 526 3 -75.64 4.7 -16.49 0.71 525 + 527 3 -77.38 4.17 -16.49 0.71 526 + 528 3 -78.05 3.79 -16.49 0.71 527 + 529 3 -22.76 9.92 -8.69 0.71 496 + 530 3 -25.17 7.83 -13.5 0.71 529 + 531 3 -26.69 6.94 -16 0.71 530 + 532 3 -28 6.23 -17.93 0.71 531 + 533 3 -29.95 5.52 -17.93 0.71 532 + 534 3 -31.47 5.17 -17.49 0.71 533 + 535 3 -32.99 4.63 -19.25 0.71 534 + 536 3 -33.88 3.75 -21.23 0.71 535 + 537 3 -34.75 2.48 -23.63 0.71 536 + 538 3 -35.83 1.06 -21.14 0.71 537 + 539 3 -36.92 -0.36 -21.14 0.71 538 + 540 3 -37.57 -1.25 -23.59 0.71 539 + 541 3 -38.87 -2.67 -26.42 0.71 540 + 542 3 -39.53 -4.27 -25.9 0.71 541 + 543 3 -40.61 -5.52 -27.79 0.71 542 + 544 3 -41.65 -7.41 -27.57 0.71 543 + 545 3 -42.74 -8.48 -27.36 0.71 544 + 546 3 -43.83 -10.43 -29.26 0.71 545 + 547 3 -44.91 -12.39 -30.73 0.71 546 + 548 3 -46 -14.16 -32.63 0.71 547 + 549 3 -46.65 -16.12 -32.63 0.71 548 + 550 3 -46.87 -15.94 -33.9 0.71 549 + 551 3 -48.82 -18.25 -36.08 0.71 550 + 552 3 -50.34 -20.56 -35.03 0.71 551 + 553 3 -51.91 -23.32 -36.91 0.71 552 + 554 3 -53.21 -25.28 -36.91 0.71 553 + 555 3 -54.95 -26.88 -38.65 0.71 554 + 556 3 -54.95 -26.88 -39.05 0.71 555 + 557 3 -56.31 -27.93 -39.05 0.71 556 + 558 3 -57.83 -28.81 -39.05 0.71 557 + 559 3 -59.56 -30.41 -40.08 0.71 558 + 560 3 -61.52 -32.37 -40.08 0.71 559 + 561 3 -62.6 -33.61 -42.58 0.71 560 + 562 3 -63.69 -35.21 -42.58 0.71 561 + 563 3 -65.43 -36.1 -42.58 0.71 562 + 564 3 -67.38 -37.34 -44.58 0.71 563 + 565 3 -69.55 -38.41 -47.55 0.71 564 + 566 3 -70.86 -39.3 -47.55 0.71 565 + 567 3 -72.16 -40.18 -49.9 0.71 566 + 568 3 -73.71 -41.5 -51.42 0.71 567 + 569 3 -75.23 -43.63 -51.42 0.71 568 + 570 3 -76.09 -45.06 -51.42 0.71 569 + 571 3 -77.4 -46.65 -51.42 0.71 570 + 572 3 -79.14 -48.43 -51.42 0.71 571 + 573 3 -80.66 -50.56 -51.42 0.71 572 + 574 3 -81.74 -52.52 -51.12 0.71 573 + 575 3 -82.18 -54.65 -51.12 0.71 574 + 576 3 -83.04 -56.6 -51.12 0.71 575 + 577 3 -81.48 -58.19 -51.12 0.71 576 + 578 3 -83.44 -61.74 -51.12 0.71 577 + 579 3 -84.09 -64.05 -53.42 0.71 578 + 580 3 -85.17 -66.01 -53.42 0.71 579 + 581 3 -85.39 -67.96 -53.42 0.71 580 + 582 3 -85.17 -70.27 -53.42 0.71 581 + 583 3 -85.39 -72.58 -53.42 0.71 582 + 584 3 -85.19 -74.57 -53.42 0.71 583 + 585 3 -86.49 -76.88 -53.42 0.71 584 + 586 3 -87.79 -78.65 -53.42 0.71 585 + 587 3 -88.88 -80.43 -53.42 0.71 586 + 588 3 -89.31 -82.03 -53.42 0.71 587 + 589 3 -90.18 -83.81 -53.42 0.71 588 + 590 3 -92.35 -85.23 -53.42 0.71 589 + 591 3 -94.09 -86.83 -53.42 0.71 590 + 592 3 -95.07 -88.99 -55.52 0.71 591 + 593 3 -97.24 -91.12 -55.52 0.71 592 + 594 3 -99.2 -91.3 -59.18 0.71 593 + 595 3 -101.8 -91.83 -59.18 0.71 594 + 596 3 -103.54 -92.37 -57.78 0.71 595 + 597 3 -105.06 -92.54 -60.13 0.71 596 + 598 3 -106.8 -93.97 -60.13 0.71 597 + 599 3 -107.23 -94.14 -58.8 0.71 598 + 600 3 -108.97 -96.99 -60.87 0.71 599 + 601 3 -110.93 -99.3 -64.3 0.71 600 + 602 3 -112.88 -101.25 -64.3 0.71 601 + 603 3 -114.07 -103.95 -64.3 0.71 602 + 604 3 -115.16 -106.08 -64.3 0.71 603 + 605 3 -116.46 -108.03 -64.3 0.71 604 + 606 3 -118.42 -108.57 -64.3 0.71 605 + 607 3 -120.8 -109.45 -64.3 0.71 606 + 608 3 -123.19 -110.16 -64.3 0.71 607 + 609 3 -125.58 -109.28 -63.32 0.71 608 + 610 3 -127.32 -109.99 -63.32 0.71 609 + 611 3 -129.27 -110.34 -63.32 0.71 610 + 612 3 -130.79 -110.34 -63.32 0.71 611 + 613 3 -132.54 -110.46 -61.53 0.71 612 + 614 3 -135.8 -111.88 -61.53 0.71 613 + 615 3 -136.67 -113.3 -61.53 0.71 614 + 616 3 -137.75 -114.9 -61.53 0.71 615 + 617 3 -138.19 -116.32 -61.53 0.71 616 + 618 3 -138.4 -118.28 -61.53 0.71 617 + 619 3 -54.95 -29.54 -40.82 0.71 556 + 620 3 -56.03 -31.5 -40.82 0.71 619 + 621 3 -56.68 -33.1 -40.82 0.71 620 + 622 3 -57.55 -35.58 -41.45 0.71 621 + 623 3 -58.04 -38.86 -41.45 0.71 622 + 624 3 -58.91 -40.63 -43.09 0.71 623 + 625 3 -59.77 -42.94 -43.87 0.71 624 + 626 3 -60.22 -44.48 -43.87 0.71 625 + 627 3 -60.65 -46.08 -43.07 0.71 626 + 628 3 -61.24 -47.99 -43.07 0.71 627 + 629 3 -61.89 -49.59 -43.07 0.71 628 + 630 3 -62.32 -50.83 -43.07 0.71 629 + 631 3 8.75 -0.81 1.12 1.065 1 + 632 3 9.61 -2.79 -0.82 0.89 631 + 633 3 11.13 -4.57 -0.82 0.89 632 + 634 3 12 -6.7 -3.23 0.89 633 + 635 3 12.87 -8.3 -3.23 0.89 634 + 636 3 14.17 -9.9 -3.23 0.89 635 + 637 3 15.69 -12.21 -3.23 0.89 636 + 638 3 17.35 -13.53 -3.23 0.71 637 + 639 3 19.09 -17.26 -3.23 0.71 638 + 640 3 20.39 -19.39 -3.23 0.71 639 + 641 3 21.48 -20.45 -3.23 0.71 640 + 642 3 22.13 -23.65 -3.23 0.71 641 + 643 3 22.56 -25.43 -4.4 0.71 642 + 644 3 24.3 -27.56 -4.4 0.71 643 + 645 3 25.08 -29.28 -4.4 0.71 644 + 646 3 25.65 -30.5 -4.4 0.71 645 + 647 3 27.17 -31.92 -4.4 0.71 646 + 648 3 27.8 -32.81 -4.4 0.89 647 + 649 3 26.95 -34.99 -4.4 0.71 648 + 650 3 26.29 -37.3 -4.4 0.71 649 + 651 3 25.86 -39.08 -4.4 0.71 650 + 652 3 25.64 -40.5 -6.3 0.71 651 + 653 3 26.29 -41.74 -6.3 0.71 652 + 654 3 26.73 -43.7 -6.3 0.71 653 + 655 3 26.51 -45.65 -6.3 0.71 654 + 656 3 26.95 -47.25 -6.3 0.71 655 + 657 3 27.6 -49.2 -7.94 0.71 656 + 658 3 28.05 -51.3 -7.94 0.71 657 + 659 3 28.7 -53.63 -7.83 0.71 658 + 660 3 29.35 -55.23 -7.38 0.71 659 + 661 3 30 -57.01 -10.33 0.71 660 + 662 3 30.44 -59.14 -10.35 0.71 661 + 663 3 30.61 -59.41 -10.35 0.71 662 + 664 3 29.51 -60.88 -12.27 0.71 663 + 665 3 28.43 -64.26 -12.27 0.71 664 + 666 3 28.21 -66.21 -12.27 0.71 665 + 667 3 27.56 -67.81 -12.9 0.71 666 + 668 3 27.56 -69.76 -12.9 0.71 667 + 669 3 26.91 -72.07 -14.77 0.71 668 + 670 3 27.12 -74.2 -14.77 0.71 669 + 671 3 27.21 -76.04 -16.82 0.71 670 + 672 3 27.21 -79.06 -16.82 0.71 671 + 673 3 27.21 -81.54 -16.82 0.71 672 + 674 3 27.65 -83.5 -16.82 0.71 673 + 675 3 27.43 -86.16 -16.82 0.71 674 + 676 3 27.43 -88.83 -16.82 0.71 675 + 677 3 27.4 -91.52 -19.22 0.71 676 + 678 3 28.05 -94.37 -19.22 0.71 677 + 679 3 28.05 -97.21 -19.22 0.71 678 + 680 3 28.05 -100.41 -19.22 0.71 679 + 681 3 27.83 -102.72 -19.22 0.71 680 + 682 3 27.6 -104.61 -19.22 0.71 681 + 683 3 27.38 -106.21 -19.22 0.71 682 + 684 3 32.35 -61.19 -11.72 0.71 663 + 685 3 33.44 -63.15 -11.72 0.71 684 + 686 3 34.74 -64.92 -11.72 0.71 685 + 687 3 35.83 -66.52 -11.72 0.71 686 + 688 3 36.91 -68.3 -11.72 0.71 687 + 689 3 37.56 -69.72 -12.58 0.71 688 + 690 3 38.43 -70.78 -14.82 0.71 689 + 691 3 39.08 -73.63 -16.77 0.71 690 + 692 3 39.9 -74.37 -15.78 0.71 691 + 693 3 40.99 -77.57 -15.78 0.71 692 + 694 3 41.88 -79.41 -18.03 0.71 693 + 695 3 43.4 -81.9 -18.03 0.71 694 + 696 3 44.27 -83.85 -18.03 0.71 695 + 697 3 45.36 -85.63 -18.03 0.71 696 + 698 3 46.01 -87.76 -18.03 0.71 697 + 699 3 47.51 -89.18 -20.03 0.71 698 + 700 3 48.6 -90.61 -21.13 0.71 699 + 701 3 49.25 -92.38 -20.53 0.71 700 + 702 3 50.73 -94.57 -20.53 0.71 701 + 703 3 51.8 -96.55 -20.53 0.71 702 + 704 3 53.11 -97.61 -21.27 0.71 703 + 705 3 53.97 -99.03 -21.27 0.71 704 + 706 3 55.28 -101.34 -21.27 0.71 705 + 707 3 57.23 -102.23 -21.27 0.71 706 + 708 3 59.84 -104.01 -23.21 0.71 707 + 709 3 61.58 -105.25 -23.21 0.71 708 + 710 3 63.75 -105.07 -23.21 0.71 709 + 711 3 65.7 -105.78 -21.2 0.71 710 + 712 3 67.01 -106.14 -22.98 0.71 711 + 713 3 69.39 -107.38 -22.98 0.71 712 + 714 3 72.24 -108.7 -22.98 0.71 713 + 715 3 74.41 -109.24 -22.98 0.71 714 + 716 3 75.93 -110.3 -23.78 0.71 715 + 717 3 77.23 -111.9 -23.78 0.71 716 + 718 3 78.54 -113.5 -23.78 0.71 717 + 719 3 79.62 -115.1 -23.78 0.71 718 + 720 3 81.14 -117.23 -23.78 0.71 719 + 721 3 82.88 -119.01 -23.78 0.71 720 + 722 3 83.96 -120.25 -24.59 0.71 721 + 723 3 85.27 -121.49 -24.59 0.71 722 + 724 3 86.35 -122.92 -24.59 0.71 723 + 725 3 87.92 -124.28 -24.59 0.71 724 + 726 3 29.76 -33.88 -2.3 0.71 648 + 727 3 31.71 -36.37 -2.3 0.71 726 + 728 3 33.23 -37.79 -2.3 0.71 727 + 729 3 33.67 -37.96 3.37 0.71 728 + 730 3 35.19 -40.63 3.37 0.71 729 + 731 3 36.49 -41.52 5.54 0.71 730 + 732 3 37.58 -42.94 5.54 0.71 731 + 733 3 38.88 -43.83 7.86 0.71 732 + 734 3 41.19 -45.86 7.86 0.71 733 + 735 3 42.49 -47.28 7.86 0.71 734 + 736 3 43.57 -48.7 10.42 0.71 735 + 737 3 44.66 -51.37 10.42 0.71 736 + 738 3 46.18 -52.25 12.98 0.71 737 + 739 3 47.48 -53.32 14.64 0.71 738 + 740 3 48.79 -54.56 14.64 0.71 739 + 741 3 49.87 -55.81 16.12 0.71 740 + 742 3 50.52 -57.94 17.84 0.71 741 + 743 3 51.18 -59.72 20.06 0.71 742 + 744 3 50.33 -63.95 20.06 0.71 743 + 745 3 50.11 -66.63 22.44 0.71 744 + 746 3 50.33 -68.23 21.22 0.71 745 + 747 3 50.55 -70.36 22.63 0.71 746 + 748 3 50.98 -72.32 22.82 0.71 747 + 749 3 50.76 -74.98 25.59 0.71 748 + 750 3 51.67 -77.75 25.59 0.71 749 + 751 3 52.1 -80.59 25.59 0.71 750 + 752 3 52.97 -82.37 25.59 0.71 751 + 753 3 53.19 -84.85 25.51 0.71 752 + 754 3 53.62 -86.98 25.51 0.71 753 + 755 3 54.05 -89.12 25.51 0.71 754 + 756 3 54.71 -91.43 25.51 0.71 755 + 757 3 55.48 -94.1 25.51 0.71 756 + 758 3 55.47 -95.52 26.67 0.71 757 + 759 3 56.77 -96.06 26.67 0.71 758 + 760 3 56.33 -99.79 28.31 0.71 759 + 761 3 56.4 -101.81 28.31 0.71 760 + 762 3 55.96 -104.12 28.31 0.71 761 + 763 3 57.05 -106.61 28.31 0.71 762 + 764 3 57.47 -108.39 28.98 0.71 763 + 765 3 58.33 -110.52 28.98 0.71 764 + 766 3 58.33 -112.12 28.98 0.71 765 + 767 3 58.55 -114.07 28.98 0.71 766 + 768 3 59.85 -115.49 28.98 0.71 767 + 769 3 59.8 -117.52 28.98 0.71 768 + 770 3 59.58 -119.3 28.98 0.71 769 + 771 3 59.15 -121.43 28.98 0.71 770 + 772 3 59.8 -122.85 28.98 0.71 771 + 773 3 60.45 -124.45 28.98 0.71 772 + 774 3 61.53 -125.7 28.98 0.71 773 + 775 3 61.75 -128.18 28.98 0.71 774 + 776 3 61.32 -129.96 28.98 0.71 775 + 777 4 11.43 16.93 -0.7 2.485 1 + 778 4 13.17 18.71 -0.7 2.485 777 + 779 4 14.69 19.95 -0.6 2.31 778 + 780 4 16.43 21.55 -0.6 2.31 779 + 781 4 18.38 23.15 -3.24 2.31 780 + 782 4 20.34 25.64 -2.86 2.31 781 + 783 4 23.6 29.01 -2.86 2.13 782 + 784 4 25.07 30.07 -0.58 2.13 783 + 785 4 27.24 32.2 -0.58 2.13 784 + 786 4 28.11 34.33 -0.58 2.13 785 + 787 4 28.98 36.46 1.38 2.13 786 + 788 4 30.28 38.42 1.38 2.13 787 + 789 4 31.8 40.01 3.08 2.13 788 + 790 4 33.54 42.15 1.32 1.955 789 + 791 4 35.28 44.28 1.96 1.6 790 + 792 4 38.42 47.91 1.96 1.775 791 + 793 4 39.51 49.15 -0.19 1.775 792 + 794 4 39.73 51.11 0.88 1.775 793 + 795 4 41.03 53.24 0.88 1.775 794 + 796 4 41.9 54.66 -1.98 1.775 795 + 797 4 43.42 56.97 -1.98 1.775 796 + 798 4 45.81 58.57 -2.04 1.775 797 + 799 4 46.43 59.84 -4.69 1.775 798 + 800 4 48.17 61.98 -4.32 1.775 799 + 801 4 50.13 64.64 -4.32 1.775 800 + 802 4 50.78 66.77 -6.38 1.775 801 + 803 4 52.08 68.19 -8.52 1.775 802 + 804 4 54.25 70.32 -9.89 1.775 803 + 805 4 55.99 72.63 -10.66 1.775 804 + 806 4 58.38 75.3 -10.66 1.775 805 + 807 4 60.54 78.02 -8.25 1.6 806 + 808 4 62.27 79.97 -8.25 1.6 807 + 809 4 64.01 82.46 -5.63 1.6 808 + 810 4 65.97 85.3 -5.63 1.6 809 + 811 4 67.27 87.61 -4 1.6 810 + 812 4 69.44 90.1 -4 1.6 811 + 813 4 70.69 93.58 -4 1.775 812 + 814 4 71.55 95.53 -7.28 1.955 813 + 815 4 72.62 97.84 -7.28 1.955 814 + 816 4 73.71 99.97 -7.28 2.13 815 + 817 4 74.79 101.75 -7.28 2.13 816 + 818 4 76.1 104.95 -7.28 2.13 817 + 819 4 78.57 108.91 -6 2.13 818 + 820 4 79.87 111.22 -6 2.13 819 + 821 4 81.39 113.53 -4.77 2.13 820 + 822 4 82.05 115.84 -4.77 2.13 821 + 823 4 82.92 116.72 -4.77 2.13 822 + 824 4 83.13 119.39 -4.77 2.13 823 + 825 4 84.47 121.53 -4.77 1.955 824 + 826 4 85.99 123.31 -4.77 1.955 825 + 827 4 87.73 125.62 -4.77 1.955 826 + 828 4 89.25 127.39 -6.71 1.955 827 + 829 4 90.98 129.53 -6.71 1.955 828 + 830 4 92.5 130.59 -11.6 2.13 829 + 831 4 94.02 131.3 -11.6 2.13 830 + 832 4 95.54 132.01 -11.6 2.485 831 + 833 4 95.76 132.37 -11.6 3.02 832 + 834 4 94.89 134.15 -10.74 1.775 833 + 835 4 95.11 136.1 -10.74 1.775 834 + 836 4 95.11 137.34 -12.26 1.775 835 + 837 4 95.11 139.3 -12.26 1.775 836 + 838 4 95.11 139.47 -11.68 1.6 837 + 839 4 95.11 140.9 -11.68 1.6 838 + 840 4 95.33 142.14 -11.68 1.42 839 + 841 4 95.76 143.92 -13.98 1.42 840 + 842 4 96.16 145.86 -13.98 1.42 841 + 843 4 96.38 147.81 -12.71 1.42 842 + 844 4 96.6 149.94 -12.71 1.42 843 + 845 4 97.68 151.37 -12.71 1.42 844 + 846 4 99.2 153.32 -12.71 1.42 845 + 847 4 100.51 155.27 -12.71 1.42 846 + 848 4 101.16 156.52 -12.71 1.42 847 + 849 4 101.81 157.58 -14.33 1.42 848 + 850 4 102.68 158.83 -14.33 1.6 849 + 851 4 102.94 158.9 -14.33 1.775 850 + 852 4 102.35 159.83 -13.14 1.6 851 + 853 4 102.35 161.79 -13.14 1.6 852 + 854 4 102.56 163.56 -13.07 1.42 853 + 855 4 103 166.05 -13.07 1.42 854 + 856 4 103.21 168.36 -13.07 1.42 855 + 857 4 103.65 170.14 -13.07 1.42 856 + 858 4 104.08 171.91 -13.07 1.42 857 + 859 4 104.3 172.62 -13.23 1.42 858 + 860 4 105.27 174.66 -13.23 1.42 859 + 861 4 105.48 176.23 -13.23 1.42 860 + 862 4 105.27 178.01 -13.23 1.42 861 + 863 4 105.7 179.07 -13.23 1.42 862 + 864 4 106.13 180.32 -13.23 1.42 863 + 865 4 106.13 181.21 -13.23 1.42 864 + 866 4 106.35 181.92 -13.23 1.42 865 + 867 4 105.48 183.16 -13.23 1.065 866 + 868 4 105.7 184.76 -13.23 1.065 867 + 869 4 106.35 186 -11.38 0.89 868 + 870 4 106.79 188.31 -11.38 0.89 869 + 871 4 106.35 190.09 -8.14 0.89 870 + 872 4 105.7 191.51 -8.14 0.89 871 + 873 4 106.35 193.11 -8.14 1.065 872 + 874 4 105.7 194.71 -8.14 1.065 873 + 875 4 105.83 196.52 -5.66 1.065 874 + 876 4 106.05 198.83 -5.66 1.065 875 + 877 4 106.48 200.25 -5.66 1.065 876 + 878 4 106.7 201.49 -5.66 1.065 877 + 879 4 106.27 203.09 -7.68 1.065 878 + 880 4 106.27 204.16 -6.5 0.89 879 + 881 4 106.27 206.47 -6.5 0.89 880 + 882 4 106.27 208.6 -6.5 0.89 881 + 883 4 105.83 210.55 -6.5 0.89 882 + 884 4 105.81 211.61 -4.37 1.065 883 + 885 4 106.03 214.09 -4.37 1.065 884 + 886 4 106.25 215.69 -4.37 1.065 885 + 887 4 105.81 216.94 -2.22 1.065 886 + 888 4 105.81 218.53 -2.22 0.89 887 + 889 4 105.38 220.84 -2.22 0.89 888 + 890 4 105.16 222.8 -2.22 0.89 889 + 891 4 105.16 224.4 -2.22 0.89 890 + 892 4 104.29 226.35 -0.57 0.89 891 + 893 4 104.85 227.41 -0.57 0.89 892 + 894 4 105.07 229.54 -0.57 0.89 893 + 895 4 105.07 231.49 -0.57 0.89 894 + 896 4 105.28 233.62 -0.57 0.89 895 + 897 4 105.72 235.76 -0.57 0.89 896 + 898 4 106.15 237 -0.57 0.89 897 + 899 4 106.59 238.42 -0.57 0.89 898 + 900 4 106.8 239.84 0.98 0.89 899 + 901 4 107.24 241.97 0.98 0.89 900 + 902 4 107.67 244.78 0.98 0.89 901 + 903 4 107.67 246.91 0.98 0.89 902 + 904 4 107.67 248.87 0.98 0.89 903 + 905 4 108.1 250.47 0.98 0.89 904 + 906 4 108.53 251.89 0.98 0.89 905 + 907 4 109.62 253.67 0.98 0.89 906 + 908 4 109.84 255.09 0.98 0.89 907 + 909 4 110.71 256.15 0.98 0.89 908 + 910 4 111.05 257.54 2.28 0.89 909 + 911 4 111.48 259.32 2.28 1.065 910 + 912 4 111.05 260.91 2.28 1.065 911 + 913 4 111.27 262.34 3.51 1.065 912 + 914 4 111.27 264.47 3.51 1.065 913 + 915 4 111.27 265.71 3.51 1.065 914 + 916 4 111.48 267.31 5.26 0.89 915 + 917 4 111.7 269.09 5.26 0.89 916 + 918 4 111.92 270.69 5.26 1.065 917 + 919 4 112.47 272.01 5.26 1.065 918 + 920 4 113.1 273.94 7.2 1.065 919 + 921 4 113.53 276.43 7.2 1.065 920 + 922 4 113.75 278.2 7.2 1.065 921 + 923 4 113.97 280.33 8.1 1.065 922 + 924 4 114.19 282.29 8.1 1.065 923 + 925 4 114.19 284.42 8.1 1.065 924 + 926 4 114.62 286.37 9.94 1.065 925 + 927 4 114.63 288.12 9.94 1.065 926 + 928 4 114.2 290.25 9.94 1.065 927 + 929 4 113.98 292.2 9.94 1.065 928 + 930 4 113.98 294.69 9.94 1.065 929 + 931 4 113.33 296.11 9.94 1.065 930 + 932 4 113.11 297.35 11.25 1.065 931 + 933 4 113.55 299.31 11.25 1.065 932 + 934 4 113.76 301.26 13.19 1.065 933 + 935 4 113.6 303.12 13.19 1.065 934 + 936 4 113.38 306.31 13.19 1.065 935 + 937 4 112.73 308.27 13.19 1.065 936 + 938 4 112.73 310.05 15.53 1.065 937 + 939 4 112.51 311.64 15.53 1.065 938 + 940 4 112.95 313.42 15.53 1.065 939 + 941 4 113.6 314.84 15.53 1.065 940 + 942 4 113.38 316.8 15.53 1.065 941 + 943 4 113.2 319.23 16.7 1.065 942 + 944 4 112.98 322.07 16.57 0.89 943 + 945 4 112.98 325.09 16.57 0.89 944 + 946 4 112.98 327.22 18.62 0.89 945 + 947 4 112.33 330.06 18.62 0.89 946 + 948 4 111.46 332.2 19.22 0.89 947 + 949 4 111.2 333.92 19.22 0.89 948 + 950 4 110.98 336.05 20.91 0.89 949 + 951 4 111.63 338 20.91 0.89 950 + 952 4 111.41 340.31 20.91 0.89 951 + 953 4 111.41 342.44 22.79 0.89 952 + 954 4 111.63 344.58 22.79 0.89 953 + 955 4 112.28 347.6 22.79 0.89 954 + 956 4 112.87 348.78 22.79 0.89 955 + 957 4 113.52 350.92 24.5 0.89 956 + 958 4 114.48 352.03 24.5 0.71 957 + 959 4 114.92 353.61 24.5 0.71 958 + 960 4 116 356.09 26.17 0.71 959 + 961 4 116.44 358.4 26.17 0.71 960 + 962 4 117.09 360 28.04 0.71 961 + 963 4 117.96 361.42 28.04 0.71 962 + 964 4 118.17 363.2 27.9 0.71 963 + 965 4 118.61 364.8 27.9 0.71 964 + 966 4 119.48 366.04 27.9 0.71 965 + 967 4 119.85 367.36 30.1 0.71 966 + 968 4 120.07 369.32 31.49 0.71 967 + 969 4 120.93 370.91 31.49 0.71 968 + 970 4 121.59 373.05 31.49 0.71 969 + 971 4 122.24 374.47 31.49 0.71 970 + 972 4 124.41 376.6 31.49 0.71 971 + 973 4 123.54 378.02 31.49 0.71 972 + 974 4 124.63 379.8 31.49 0.71 973 + 975 4 125.93 381.04 32.14 0.71 974 + 976 4 127.12 382.89 32.14 0.71 975 + 977 4 128.42 385.03 32.14 0.71 976 + 978 4 129.29 386.63 32.14 0.71 977 + 979 4 130.16 389.11 32.14 0.71 978 + 980 4 130.81 389.82 32.14 0.71 979 + 981 4 131.46 391.6 32.47 0.71 980 + 982 4 132.11 393.2 32.47 0.71 981 + 983 4 133.63 395.33 32.78 0.71 982 + 984 4 134.05 397.47 35.28 0.71 983 + 985 4 134.27 399.6 35.28 0.71 984 + 986 4 135.35 401.74 35.28 0.71 985 + 987 4 135.79 403.51 35.28 0.89 986 + 988 4 136.44 405.11 35.28 0.89 987 + 989 4 136.85 405.32 35.28 0.89 988 + 990 4 108.09 183.34 -16.39 1.065 866 + 991 4 108.52 185.47 -16.39 0.89 990 + 992 4 108.96 187.07 -17.9 0.89 991 + 993 4 109.39 188.13 -15.86 0.89 992 + 994 4 109.83 189.73 -18.03 0.89 993 + 995 4 110.04 191.15 -20.49 0.89 994 + 996 4 110.69 192.58 -21.47 0.89 995 + 997 4 111.56 193.29 -21.47 0.89 996 + 998 4 112.43 194.53 -22.15 0.89 997 + 999 4 113.08 195.6 -23.38 0.89 998 + 1000 4 113.74 196.66 -24.36 0.89 999 + 1001 4 113.74 198.08 -25.89 0.89 1000 + 1002 4 114.17 199.15 -27.94 0.89 1001 + 1003 4 114.6 200.75 -30.08 0.89 1002 + 1004 4 115.69 203.06 -30.08 0.89 1003 + 1005 4 115.64 204.31 -31.51 0.89 1004 + 1006 4 116.08 205.56 -31.51 0.89 1005 + 1007 4 116.73 206.98 -31.51 0.71 1006 + 1008 4 117.16 208.75 -31.51 0.71 1007 + 1009 4 117.6 210.53 -32.74 0.71 1008 + 1010 4 117.6 212.13 -32.74 0.71 1009 + 1011 4 117.6 214.62 -34.55 0.89 1010 + 1012 4 117.82 216.75 -34.55 0.89 1011 + 1013 4 118.03 218.7 -34.55 0.89 1012 + 1014 4 118.24 220.22 -33.58 0.89 1013 + 1015 4 118.03 223.6 -33.58 0.89 1014 + 1016 4 117.37 225.2 -34.98 0.89 1015 + 1017 4 117.16 226.97 -34.98 0.89 1016 + 1018 4 116.72 228.75 -34.98 0.89 1017 + 1019 4 116.51 230.17 -36.51 0.89 1018 + 1020 4 116.29 231.95 -36.51 0.89 1019 + 1021 4 116.29 233.72 -38.15 0.89 1020 + 1022 4 116.01 235.6 -38.15 0.89 1021 + 1023 4 116.01 237.38 -39.9 0.89 1022 + 1024 4 117.08 239.33 -39.9 0.89 1023 + 1025 4 117.73 241.11 -41.34 0.89 1024 + 1026 4 118.82 242.88 -41.34 0.89 1025 + 1027 4 119.9 244.66 -41.34 0.89 1026 + 1028 4 121.42 248.57 -41.34 0.71 1027 + 1029 4 122.73 249.89 -43.37 0.71 1028 + 1030 4 123.58 251.13 -43.37 0.71 1029 + 1031 4 124.67 252.73 -45.26 0.71 1030 + 1032 4 125.75 254.15 -45.26 0.71 1031 + 1033 4 126.84 255.93 -46.82 0.71 1032 + 1034 4 127.92 257.88 -46.82 0.71 1033 + 1035 4 128.58 259.48 -47.64 0.71 1034 + 1036 4 129.44 261.26 -48.99 0.71 1035 + 1037 4 130.53 262.86 -50.41 0.71 1036 + 1038 4 131.62 264.64 -50.32 0.71 1037 + 1039 4 133.14 266.59 -50.32 0.71 1038 + 1040 4 135.09 268.19 -50.32 0.71 1039 + 1041 4 136.39 270.32 -50.32 0.71 1040 + 1042 4 137.7 271.92 -50.32 0.71 1041 + 1043 4 139.22 273.52 -50.32 0.71 1042 + 1044 4 140.3 275.12 -49.5 0.71 1043 + 1045 4 141.61 277.07 -49.5 0.71 1044 + 1046 4 143.45 279.1 -49.5 0.71 1045 + 1047 4 144.32 280.88 -49.5 0.71 1046 + 1048 4 144.97 282.12 -49.77 0.71 1047 + 1049 4 146.06 284.08 -49.77 0.71 1048 + 1050 4 146.71 285.5 -49.77 0.71 1049 + 1051 4 147.36 287.45 -49.77 0.71 1050 + 1052 4 148.45 289.23 -49.77 0.71 1051 + 1053 4 149.31 291 -49.77 0.71 1052 + 1054 4 150.4 292.43 -49.77 0.71 1053 + 1055 4 151.49 293.65 -49.77 0.71 1054 + 1056 4 151.7 295.42 -51.57 0.71 1055 + 1057 4 152.57 297.38 -51.57 0.71 1056 + 1058 4 153.22 298.98 -51.57 0.71 1057 + 1059 4 153.87 300.93 -51.45 0.71 1058 + 1060 4 153.87 302.88 -51.45 0.71 1059 + 1061 4 154.09 305.02 -51.45 0.71 1060 + 1062 4 154.31 306.62 -51.45 0.71 1061 + 1063 4 154.67 308.27 -51.45 0.71 1062 + 1064 4 154.45 310.05 -53.14 0.71 1063 + 1065 4 155.1 312 -53.14 0.71 1064 + 1066 4 155.32 314.31 -53.14 0.71 1065 + 1067 4 155.32 316.09 -53.55 0.89 1066 + 1068 4 155.97 317.86 -53.55 0.89 1067 + 1069 4 155.75 320.17 -53.55 0.89 1068 + 1070 4 155.97 321.59 -52.72 0.89 1069 + 1071 4 155.82 324 -52.72 0.89 1070 + 1072 4 155.8 325.96 -55.36 0.89 1071 + 1073 4 155.58 327.38 -55.36 0.89 1072 + 1074 4 156.23 328.98 -55.14 0.89 1073 + 1075 4 156.23 331.29 -55.14 0.89 1074 + 1076 4 156.45 333.95 -55.14 0.89 1075 + 1077 4 157.1 336.08 -57.1 0.89 1076 + 1078 4 157.47 337.14 -59.1 0.89 1077 + 1079 4 157.9 338.2 -59.1 0.89 1078 + 1080 4 158.12 338.91 -59.1 1.065 1079 + 1081 4 157.6 341.05 -59.34 0.71 1080 + 1082 4 158.03 343.36 -59.34 0.71 1081 + 1083 4 158.03 344.42 -59.79 0.71 1082 + 1084 4 157.6 346.91 -59.79 0.71 1083 + 1085 4 157.38 348.15 -59.85 0.71 1084 + 1086 4 157.38 350.28 -61.52 0.71 1085 + 1087 4 157.17 352.77 -61.52 0.71 1086 + 1088 4 157.17 354.55 -61.52 0.71 1087 + 1089 4 157.23 357.49 -62.28 0.71 1088 + 1090 4 157.23 359.62 -62.28 0.71 1089 + 1091 4 157.23 362.11 -62.28 0.71 1090 + 1092 4 157.23 363.89 -64.82 0.71 1091 + 1093 4 157.45 366.02 -64.82 0.71 1092 + 1094 4 157.89 367.97 -64.82 0.71 1093 + 1095 4 158.54 369.57 -64.82 0.71 1094 + 1096 4 160.17 371.42 -64.82 0.71 1095 + 1097 4 160.82 373.2 -64.82 0.71 1096 + 1098 4 162.13 374.98 -66.88 0.71 1097 + 1099 4 162.56 376.22 -66.88 0.71 1098 + 1100 4 164.3 378.53 -68.36 0.71 1099 + 1101 4 165.17 380.31 -68.36 0.71 1100 + 1102 4 166.04 382.26 -70.17 0.71 1101 + 1103 4 167.12 384.57 -68.43 0.71 1102 + 1104 4 167.47 386.6 -71.03 0.71 1103 + 1105 4 168.34 388.73 -71.34 0.71 1104 + 1106 4 168.55 390.69 -73.47 0.71 1105 + 1107 4 168.55 392.29 -73.47 0.71 1106 + 1108 4 168.99 393.35 -73.47 0.71 1107 + 1109 4 168.4 394.54 -72.38 0.71 1108 + 1110 4 169.05 396.49 -72.38 0.71 1109 + 1111 4 169.27 398.27 -72.38 0.71 1110 + 1112 4 168.83 400.04 -72.38 0.71 1111 + 1113 4 168.4 401.46 -72.38 0.71 1112 + 1114 4 167.75 402.53 -72.38 0.71 1113 + 1115 4 167.53 403.95 -72.3 0.71 1114 + 1116 4 167.53 405.37 -71.58 0.71 1115 + 1117 4 167.31 408.04 -69.38 0.71 1116 + 1118 4 167.45 410.2 -69.38 0.71 1117 + 1119 4 166.8 411.62 -67.06 0.71 1118 + 1120 4 166.37 413.04 -67.06 0.71 1119 + 1121 4 166.37 415.53 -67.06 0.71 1120 + 1122 4 165.93 417.49 -67.06 0.71 1121 + 1123 4 165.28 419.08 -66.7 0.71 1122 + 1124 4 163.54 420.33 -66.7 0.71 1123 + 1125 4 162.02 421.57 -63.24 0.71 1124 + 1126 4 160.72 424.24 -63.24 0.71 1125 + 1127 4 159.77 425.71 -63.24 0.71 1126 + 1128 4 159.11 427.67 -62.42 0.71 1127 + 1129 4 158.25 429.27 -62.42 0.71 1128 + 1130 4 158.03 431.04 -62.42 0.71 1129 + 1131 4 157.38 432.46 -62.42 0.71 1130 + 1132 4 156.73 434.77 -62.42 0.71 1131 + 1133 4 155.64 436.55 -61.43 0.71 1132 + 1134 4 155.21 439.04 -61.93 0.71 1133 + 1135 4 153.71 441.2 -60.51 0.71 1134 + 1136 4 152.41 443.16 -60.51 0.71 1135 + 1137 4 151.54 445.29 -60.51 0.71 1136 + 1138 4 150.46 447.42 -60.97 0.71 1137 + 1139 4 148.94 449.91 -60.97 0.71 1138 + 1140 4 147.63 451.86 -59.15 0.71 1139 + 1141 4 146.98 453.97 -60.79 0.71 1140 + 1142 4 147.23 456 -60.79 0.71 1141 + 1143 4 146.15 458.49 -59.41 0.71 1142 + 1144 4 145.5 460.8 -59.41 0.71 1143 + 1145 4 144.85 462.75 -59.41 0.71 1144 + 1146 4 144.41 464.88 -59.41 0.71 1145 + 1147 4 143.76 467.37 -59.41 0.71 1146 + 1148 4 144.41 467.91 -59.41 0.71 1147 + 1149 4 143.33 471.1 -59.41 0.71 1148 + 1150 4 143.43 473.2 -59.26 0.71 1149 + 1151 4 143.22 475.51 -59.26 0.71 1150 + 1152 4 143.65 478 -59.26 0.71 1151 + 1153 4 143.43 480.13 -59.26 0.71 1152 + 1154 4 143.43 481.91 -59.26 0.71 1153 + 1155 4 144.3 483.86 -60.06 0.71 1154 + 1156 4 144.74 486.53 -60.06 0.71 1155 + 1157 4 146.14 488.42 -60.06 0.71 1156 + 1158 4 147.22 490.73 -60.06 0.71 1157 + 1159 4 148.53 492.33 -60.06 0.71 1158 + 1160 4 149.18 493.93 -60.06 0.71 1159 + 1161 4 148.96 496.42 -60.06 0.71 1160 + 1162 4 149.83 498.55 -60.06 0.71 1161 + 1163 4 151.13 501.04 -60.06 0.71 1162 + 1164 4 151.92 503.74 -60.06 0.71 1163 + 1165 4 153.01 505.69 -60.54 0.71 1164 + 1166 4 154.31 507.82 -60.54 0.71 1165 + 1167 4 154.96 510.66 -60.54 0.71 1166 + 1168 4 156.48 513.51 -60.54 0.71 1167 + 1169 4 158 515.82 -59.02 0.71 1168 + 1170 4 158.7 517.29 -61.86 0.71 1169 + 1171 4 160.01 519.25 -61.86 0.71 1170 + 1172 4 161.96 520.49 -61.86 0.71 1171 + 1173 4 163.92 521.91 -61.86 0.71 1172 + 1174 4 164.35 523.69 -61.86 0.71 1173 + 1175 4 165.65 524.93 -61.86 0.71 1174 + 1176 4 167.17 526.17 -61.86 0.71 1175 + 1177 4 169.34 527.06 -61.64 0.71 1176 + 1178 4 171.3 528.13 -61.64 0.71 1177 + 1179 4 172.17 529.73 -60.11 0.71 1178 + 1180 4 173.25 531.5 -59.06 0.71 1179 + 1181 4 175.41 532.91 -59.06 0.71 1180 + 1182 4 176.71 534.34 -59.06 0.71 1181 + 1183 4 178.23 536.29 -59.06 0.71 1182 + 1184 4 179.32 537.51 -59.06 0.71 1183 + 1185 4 181.92 539.29 -59.06 0.71 1184 + 1186 4 183.44 539.64 -59.06 0.71 1185 + 1187 4 185.18 540.71 -62.56 0.71 1186 + 1188 4 186.26 542.31 -62.56 0.71 1187 + 1189 4 188 543.91 -62.56 0.71 1188 + 1190 4 190.17 545.86 -62.56 0.71 1189 + 1191 4 192.01 547.82 -61.79 0.71 1190 + 1192 4 193.73 549.78 -63.96 0.71 1191 + 1193 4 195.68 551.2 -66.18 0.71 1192 + 1194 4 198.29 552.8 -66.18 0.71 1193 + 1195 4 199.59 553.86 -66.18 0.71 1194 + 1196 4 200.89 556 -66.18 0.71 1195 + 1197 4 202.85 557.6 -66.18 0.71 1196 + 1198 4 204.37 559.73 -66.18 0.71 1197 + 1199 4 205.89 562.57 -66.18 0.71 1198 + 1200 4 206.72 564.09 -67.75 0.71 1199 + 1201 4 208.01 566.05 -67.21 0.71 1200 + 1202 4 208.87 568.36 -69.38 0.71 1201 + 1203 4 209.96 570.49 -69.38 0.71 1202 + 1204 4 210.61 572.62 -69.38 0.71 1203 + 1205 4 211.7 574.04 -69.38 0.71 1204 + 1206 4 212.78 575.64 -69.38 0.71 1205 + 1207 4 214.3 576.88 -69.38 0.71 1206 + 1208 4 215.97 578.29 -69.38 0.71 1207 + 1209 4 170.51 394.6 -73.47 0.71 1108 + 1210 4 172.9 395.31 -73.47 0.71 1209 + 1211 4 174.42 397.26 -73.47 0.71 1210 + 1212 4 175.07 398.15 -74.9 0.71 1211 + 1213 4 176.16 399.57 -74.9 0.71 1212 + 1214 4 177.75 400.36 -74.9 0.71 1213 + 1215 4 177.97 401.6 -73.17 0.71 1214 + 1216 4 178.19 403.02 -75.59 0.71 1215 + 1217 4 178.41 404.27 -75.59 0.71 1216 + 1218 4 179.27 406.04 -75.34 0.71 1217 + 1219 4 178.84 408.18 -75.34 0.71 1218 + 1220 4 178.84 410.13 -77.88 0.71 1219 + 1221 4 179.27 412.08 -77.88 0.71 1220 + 1222 4 179.49 413.86 -77.88 0.71 1221 + 1223 4 180.3 416.54 -77.88 0.71 1222 + 1224 4 180.3 418.49 -77.88 0.71 1223 + 1225 4 180.52 420.27 -78.7 0.71 1224 + 1226 4 180.74 422.4 -78.7 0.71 1225 + 1227 4 180.52 424.35 -78.7 0.71 1226 + 1228 4 179.65 426.84 -78.7 0.71 1227 + 1229 4 180.09 429.15 -80.71 0.71 1228 + 1230 4 179.82 430.67 -80.71 0.71 1229 + 1231 4 179.6 432.8 -80.71 0.71 1230 + 1232 4 179.6 435.11 -79.88 0.71 1231 + 1233 4 179.38 437.24 -79.88 0.71 1232 + 1234 4 179.82 438.84 -79.88 0.71 1233 + 1235 4 180.25 440.44 -79.88 0.71 1234 + 1236 4 180.25 441.68 -81.52 0.71 1235 + 1237 4 180.69 442.93 -83.26 0.71 1236 + 1238 4 181.99 444.35 -83.26 0.71 1237 + 1239 4 183.55 445.71 -82.04 0.71 1238 + 1240 4 185.29 447.49 -82.04 0.71 1239 + 1241 4 186.59 449.09 -81.54 0.71 1240 + 1242 4 187.46 450.69 -81.54 0.71 1241 + 1243 4 188.98 452.11 -83.78 0.71 1242 + 1244 4 190.29 453.89 -85.06 0.71 1243 + 1245 4 191.81 455.66 -83.98 0.71 1244 + 1246 4 193.33 457.44 -83.98 0.71 1245 + 1247 4 193.98 458.86 -83.98 0.71 1246 + 1248 4 194.9 461 -84.02 0.71 1247 + 1249 4 195.77 463.31 -84.02 0.71 1248 + 1250 4 197.29 464.56 -87.18 0.71 1249 + 1251 4 198.81 466.69 -87.18 0.71 1250 + 1252 4 200.33 468.64 -87.18 0.71 1251 + 1253 4 201.42 470.42 -88.28 0.71 1252 + 1254 4 201.85 471.66 -87.12 0.71 1253 + 1255 4 202.94 473.97 -85.42 0.71 1254 + 1256 4 204.79 476.71 -85.42 0.71 1255 + 1257 4 205.64 478.31 -85.42 0.71 1256 + 1258 4 206.94 480.8 -85.42 0.71 1257 + 1259 4 208.25 483.29 -85.42 0.71 1258 + 1260 4 209.55 485.06 -83.62 0.71 1259 + 1261 4 210.85 487.37 -83.62 0.71 1260 + 1262 4 213.02 489.5 -83.62 0.71 1261 + 1263 4 213.7 491.96 -83.62 0.71 1262 + 1264 4 214.77 493.73 -85.06 0.71 1263 + 1265 4 216.07 496.4 -87.32 0.71 1264 + 1266 4 217.81 498.35 -88.84 0.71 1265 + 1267 4 219.55 500.48 -88.84 0.71 1266 + 1268 4 220.2 502.44 -88.84 0.71 1267 + 1269 4 221.29 504.04 -88.84 0.71 1268 + 1270 4 222.75 505.71 -88.84 0.71 1269 + 1271 4 224.06 507.67 -88.84 0.71 1270 + 1272 4 225.36 509.07 -88.84 0.71 1271 + 1273 4 226.23 510.13 -88.84 0.71 1272 + 1274 4 226.88 511.91 -88.84 0.71 1273 + 1275 4 227.97 514.22 -90.92 0.71 1274 + 1276 4 228.18 516 -90.92 0.71 1275 + 1277 4 229.27 517.42 -89.16 0.71 1276 + 1278 4 230.14 519.02 -89.16 0.71 1277 + 1279 4 232.01 520.67 -89.16 0.71 1278 + 1280 4 233.53 522.25 -89.16 0.71 1279 + 1281 4 234.61 524.38 -89.16 0.71 1280 + 1282 4 236.35 525.8 -89.16 0.71 1281 + 1283 4 237.22 527.04 -89.16 0.71 1282 + 1284 4 238.3 528.64 -90.46 0.71 1283 + 1285 4 240.04 530.06 -90.46 0.71 1284 + 1286 4 240.69 531.84 -89.98 0.71 1285 + 1287 4 241.56 534.15 -89.98 0.71 1286 + 1288 4 242.72 535.67 -89.98 0.71 1287 + 1289 4 243.81 537.27 -89.98 0.71 1288 + 1290 4 245.33 538.16 -89.54 0.71 1289 + 1291 4 246.41 539.58 -89.54 0.71 1290 + 1292 4 247.93 541 -89.54 0.71 1291 + 1293 4 249.45 542.42 -89.54 0.71 1292 + 1294 4 250.76 543.49 -89.54 0.71 1293 + 1295 4 252.71 544.37 -86.81 0.71 1294 + 1296 4 254.23 544.91 -85.04 0.71 1295 + 1297 4 255.53 545.62 -86.74 0.71 1296 + 1298 4 257.49 546.51 -86.26 0.71 1297 + 1299 4 258.57 546.51 -86.66 0.71 1298 + 1300 4 260.31 547.22 -85.52 0.71 1299 + 1301 4 261.75 548.34 -85.52 0.71 1300 + 1302 4 262.84 548.69 -85.52 0.71 1301 + 1303 4 158.99 339.8 -60.21 0.71 1080 + 1304 4 160.51 341.04 -60.21 0.71 1303 + 1305 4 162.45 342.11 -62.85 0.71 1304 + 1306 4 164.18 343.71 -62.85 0.71 1305 + 1307 4 165.27 343.71 -63.99 0.71 1306 + 1308 4 167.01 344.06 -66.1 0.71 1307 + 1309 4 168.74 345.84 -68.3 0.71 1308 + 1310 4 170.26 346.91 -70.45 0.71 1309 + 1311 4 172.22 348.51 -70.45 0.71 1310 + 1312 4 174.39 350.11 -71.54 0.71 1311 + 1313 4 176.13 351.53 -73.3 0.71 1312 + 1314 4 178.41 353.42 -76.18 0.71 1313 + 1315 4 180.36 355.2 -77.5 0.71 1314 + 1316 4 182.1 356.44 -78.82 0.71 1315 + 1317 4 183.18 357.33 -77.79 0.71 1316 + 1318 4 184.92 359.29 -79.28 0.71 1317 + 1319 4 187.09 361.06 -81.11 0.71 1318 + 1320 4 188.83 363.02 -82.41 0.71 1319 + 1321 4 190.78 364.97 -83.39 0.71 1320 + 1322 4 191.44 365.68 -84.27 0.71 1321 + 1323 4 192.32 366.58 -82.58 0.71 1322 + 1324 4 194.04 367.29 -82.58 0.71 1323 + 1325 4 195.78 368.54 -82.58 0.71 1324 + 1326 4 197.73 370.84 -82.58 0.71 1325 + 1327 4 199.69 372.62 -81.69 0.71 1326 + 1328 4 200.56 373.86 -81.69 0.71 1327 + 1329 4 202.08 374.22 -81.69 0.71 1328 + 1330 4 203.6 375.82 -81.69 0.71 1329 + 1331 4 205.33 377.24 -84.2 0.71 1330 + 1332 4 206.85 379.37 -84.2 0.71 1331 + 1333 4 209.24 380.62 -82.27 0.71 1332 + 1334 4 210.99 381.38 -82.27 0.71 1333 + 1335 4 212.29 382.45 -83.34 0.71 1334 + 1336 4 214.03 383.51 -83.34 0.71 1335 + 1337 4 215.77 384.76 -83.34 0.71 1336 + 1338 4 217.29 384.93 -83.34 0.71 1337 + 1339 4 218.59 385.64 -83.34 0.71 1338 + 1340 4 220.11 385.82 -83.34 0.71 1339 + 1341 4 221.63 386.71 -83.34 0.71 1340 + 1342 4 223.15 387.6 -83.34 0.71 1341 + 1343 4 225.1 388.13 -83.34 0.71 1342 + 1344 4 227.28 389.2 -84.61 0.71 1343 + 1345 4 229.86 389.27 -84.61 0.71 1344 + 1346 4 231.81 389.8 -83.78 0.71 1345 + 1347 4 235.5 391.05 -85.85 0.71 1346 + 1348 4 236.37 392.65 -85.85 0.71 1347 + 1349 4 238.11 394.42 -87.34 0.71 1348 + 1350 4 240.28 395.84 -89.05 0.71 1349 + 1351 4 242.45 397.44 -89.05 0.71 1350 + 1352 4 243.1 399.4 -89.05 0.71 1351 + 1353 4 244.63 400.82 -91.1 0.71 1352 + 1354 4 246.36 402.42 -92.89 0.71 1353 + 1355 4 248.62 404.09 -92.35 0.71 1354 + 1356 4 251.01 405.87 -92.35 0.71 1355 + 1357 4 252.53 407.47 -92.35 0.71 1356 + 1358 4 254.05 408.71 -94.54 0.71 1357 + 1359 4 255.57 410.13 -94.65 0.71 1358 + 1360 4 259.26 412.09 -97.34 0.71 1359 + 1361 4 259.92 413.86 -97.34 0.71 1360 + 1362 4 261.65 415.64 -97.34 0.71 1361 + 1363 4 262.3 416.35 -97.92 0.71 1362 + 1364 4 262.74 417.77 -98.9 0.71 1363 + 1365 4 264.37 418.74 -98.9 0.71 1364 + 1366 4 266.11 419.98 -98.9 0.71 1365 + 1367 4 268.26 421.22 -97.77 0.71 1366 + 1368 4 270.44 422.82 -97.77 0.71 1367 + 1369 4 272.39 424.95 -97.58 0.71 1368 + 1370 4 274.13 425.84 -97.58 0.71 1369 + 1371 4 275.21 427.44 -97.58 0.71 1370 + 1372 4 276.08 429.22 -97.58 0.71 1371 + 1373 4 276.73 429.93 -97.58 0.71 1372 + 1374 4 278.69 432.24 -99.62 0.71 1373 + 1375 4 279.72 434.22 -96.31 0.71 1374 + 1376 4 281.02 435.82 -96.31 0.71 1375 + 1377 4 282.33 437.6 -96.31 0.71 1376 + 1378 4 283.85 439.02 -96.31 0.71 1377 + 1379 4 285.37 440.09 -96.31 0.71 1378 + 1380 4 287.1 441.15 -96.31 0.71 1379 + 1381 4 287.97 443.11 -96.31 0.71 1380 + 1382 4 289.28 445.06 -96.31 0.71 1381 + 1383 4 291.66 447.55 -95.6 0.71 1382 + 1384 4 291.42 449.07 -95.6 0.71 1383 + 1385 4 292.07 451.38 -94.46 0.71 1384 + 1386 4 292.94 453.16 -94.46 0.71 1385 + 1387 4 293.59 455.11 -93.38 0.71 1386 + 1388 4 294.89 457.42 -93.38 0.71 1387 + 1389 4 296.19 459.73 -95.56 0.71 1388 + 1390 4 299.45 461.86 -95.56 0.71 1389 + 1391 4 299.87 464.02 -95.56 0.71 1390 + 1392 4 300.09 465.45 -93.33 0.71 1391 + 1393 4 300.09 467.04 -93.33 0.71 1392 + 1394 4 299.87 468.64 -93.33 0.71 1393 + 1395 4 300.3 470.78 -92.41 0.71 1394 + 1396 4 300.52 473.26 -92.41 0.71 1395 + 1397 4 300.95 475.04 -90.96 0.71 1396 + 1398 4 300.52 477.17 -92.18 0.71 1397 + 1399 4 301.07 479.2 -92.18 0.71 1398 + 1400 4 301.94 481.33 -89.05 0.71 1399 + 1401 4 303.46 483.47 -89.05 0.71 1400 + 1402 4 305.19 485.42 -87.02 0.71 1401 + 1403 4 307.58 488.08 -87.02 0.71 1402 + 1404 4 309.1 490.04 -87.33 0.71 1403 + 1405 4 310.41 491.99 -87.33 0.71 1404 + 1406 4 312.41 493.87 -85.52 0.71 1405 + 1407 4 313.71 496 -82.5 0.71 1406 + 1408 4 315.45 497.24 -82.5 0.71 1407 + 1409 4 317.18 498.67 -80.96 0.71 1408 + 1410 4 319.36 499.91 -78.21 0.71 1409 + 1411 4 320.52 500.76 -78.21 0.71 1410 + 1412 4 321.17 501.65 -78.21 0.71 1411 + 1413 4 321.61 502.71 -78.21 0.71 1412 + 1414 4 321.82 504.13 -78.21 0.71 1413 + 1415 4 322.04 505.2 -78.21 0.71 1414 + 1416 4 193.82 366.2 -86.77 0.71 1322 + 1417 4 195.13 367.62 -89.76 0.71 1416 + 1418 4 196.65 368.51 -92.06 0.71 1417 + 1419 4 198.38 369.58 -93.94 0.71 1418 + 1420 4 200.56 370.64 -95.34 0.71 1419 + 1421 4 202.29 371.71 -95.34 0.71 1420 + 1422 4 203.81 372.24 -97.05 0.71 1421 + 1423 4 205.77 371.71 -99.43 0.71 1422 + 1424 4 207.72 371 -100.82 0.71 1423 + 1425 4 210.76 371 -102.69 0.71 1424 + 1426 4 213.24 370.38 -104.76 0.71 1425 + 1427 4 215.63 369.67 -104.76 0.71 1426 + 1428 4 217.8 370.2 -104.76 0.71 1427 + 1429 4 219.1 370.38 -106.96 0.71 1428 + 1430 4 221.49 370.92 -109.06 0.71 1429 + 1431 4 223.37 371.25 -109.06 0.71 1430 + 1432 4 104.68 159.61 -14.07 1.065 851 + 1433 4 106.64 160.68 -14.07 1.065 1432 + 1434 4 108.16 161.75 -16.66 1.065 1433 + 1435 4 109.68 162.46 -15.8 1.065 1434 + 1436 4 111.41 163.35 -15.85 0.89 1435 + 1437 4 112.93 164.06 -15.85 0.89 1436 + 1438 4 114.67 164.77 -15.85 0.89 1437 + 1439 4 116.19 165.65 -17.62 0.89 1438 + 1440 4 117.71 166.9 -18.6 0.89 1439 + 1441 4 119.45 168.32 -18.6 0.89 1440 + 1442 4 121.84 169.74 -20.68 0.89 1441 + 1443 4 122.85 170.59 -19.88 1.065 1442 + 1444 4 123.65 171.72 -23.29 1.065 1443 + 1445 4 124.52 172.79 -22.74 0.89 1444 + 1446 4 125.17 174.21 -25.44 0.71 1445 + 1447 4 126.04 175.45 -25.16 0.71 1446 + 1448 4 126.91 177.76 -28.48 0.71 1447 + 1449 4 128.21 179.72 -28.48 0.71 1448 + 1450 4 129.29 181.67 -30.55 0.71 1449 + 1451 4 130.38 183.63 -33.03 0.71 1450 + 1452 4 132.55 186.82 -35.06 0.71 1451 + 1453 4 131.96 189.37 -36.48 0.71 1452 + 1454 4 132.38 191.5 -36.71 0.71 1453 + 1455 4 132.81 193.63 -40.1 0.71 1454 + 1456 4 132.81 195.76 -40.1 0.71 1455 + 1457 4 133.68 197.54 -40.1 0.71 1456 + 1458 4 133.68 200.2 -41.74 0.71 1457 + 1459 4 133.9 203.05 -41.74 0.71 1458 + 1460 4 133.8 205.94 -42.17 0.71 1459 + 1461 4 134.65 208.25 -44.11 0.71 1460 + 1462 4 134.21 209.85 -44.11 0.71 1461 + 1463 4 134.43 212.16 -46.74 0.71 1462 + 1464 4 134.87 214.83 -48.19 0.71 1463 + 1465 4 134.65 217.14 -48.19 0.71 1464 + 1466 4 136.17 219.62 -50 0.71 1465 + 1467 4 137.5 221.61 -52.58 0.71 1466 + 1468 4 139.24 223.39 -52.18 0.71 1467 + 1469 4 140.76 225.34 -53.82 0.71 1468 + 1470 4 142.71 226.94 -53.82 0.71 1469 + 1471 4 143.8 229.07 -55.17 0.71 1470 + 1472 4 144.88 231.03 -56.26 0.71 1471 + 1473 4 145.97 233.34 -58 0.71 1472 + 1474 4 146.84 235.47 -59.86 0.71 1473 + 1475 4 147.25 237.08 -59.86 0.71 1474 + 1476 4 148.33 239.03 -57.89 0.71 1475 + 1477 4 149.4 240.45 -59.65 0.71 1476 + 1478 4 150.71 241.87 -62.14 0.71 1477 + 1479 4 152.01 244.18 -62.14 0.71 1478 + 1480 4 152.88 245.61 -64 0.71 1479 + 1481 4 153.96 247.56 -66.18 0.71 1480 + 1482 4 155.27 248.98 -66.18 0.71 1481 + 1483 4 156.79 250.4 -67.97 0.71 1482 + 1484 4 158.1 253.68 -67.97 0.71 1483 + 1485 4 158.32 255.63 -69.63 0.71 1484 + 1486 4 159.19 257.41 -69.63 0.71 1485 + 1487 4 160.71 259.54 -71.56 0.71 1486 + 1488 4 161.14 261.67 -73.5 0.71 1487 + 1489 4 162.23 262.91 -73.5 0.71 1488 + 1490 4 163.53 263.8 -75.31 0.71 1489 + 1491 4 163.96 265.76 -77.27 0.71 1490 + 1492 4 164.63 267.63 -77.26 0.71 1491 + 1493 4 165.72 268.88 -79.4 0.71 1492 + 1494 4 166.37 271.01 -81.16 0.71 1493 + 1495 4 168.11 273.14 -82.99 0.71 1494 + 1496 4 169.84 275.45 -85.39 0.71 1495 + 1497 4 171.15 277.05 -88.18 0.71 1496 + 1498 4 172.23 279.54 -89.27 0.71 1497 + 1499 4 174.4 280.96 -92.58 0.71 1498 + 1500 4 176.59 281.59 -92.58 0.71 1499 + 1501 4 178.09 283.19 -95.35 0.71 1500 + 1502 4 179.83 283.9 -95.35 0.71 1501 + 1503 4 182.22 286.21 -97.55 0.71 1502 + 1504 4 183.95 287.99 -99.36 0.71 1503 + 1505 4 185.04 289.76 -101.12 0.71 1504 + 1506 4 186.12 291.89 -102.69 0.71 1505 + 1507 4 186.34 294.2 -102.69 0.71 1506 + 1508 4 187.86 295.8 -104.69 0.71 1507 + 1509 4 189.53 297.66 -106.06 0.71 1508 + 1510 4 191.27 299.61 -106.06 0.71 1509 + 1511 4 193.01 301.39 -109.05 0.71 1510 + 1512 4 194.09 302.63 -109.05 0.71 1511 + 1513 4 195.83 303.52 -110.88 0.71 1512 + 1514 4 196.48 305.29 -112.76 0.71 1513 + 1515 4 197.79 306.54 -114.91 0.71 1514 + 1516 4 198.22 308.49 -116.84 0.71 1515 + 1517 4 198.87 310.62 -118.38 0.71 1516 + 1518 4 200.3 312.46 -120.46 0.71 1517 + 1519 4 200.95 314.94 -123.82 0.71 1518 + 1520 4 202.25 317.25 -125.7 0.71 1519 + 1521 4 203.99 319.03 -125.7 0.71 1520 + 1522 4 204.86 320.45 -127.08 0.71 1521 + 1523 4 206.16 323.11 -127.08 0.71 1522 + 1524 4 206.82 325.07 -131.26 0.71 1523 + 1525 4 207.23 327.06 -131.26 0.71 1524 + 1526 4 208.1 328.12 -133.51 0.71 1525 + 1527 4 209.19 329.9 -136.01 0.71 1526 + 1528 4 209.84 331.85 -137.86 0.71 1527 + 1529 4 210.49 333.45 -140.03 0.71 1528 + 1530 4 210.92 335.58 -142.07 0.71 1529 + 1531 4 211.14 337 -144.91 0.71 1530 + 1532 4 211.79 338.6 -146.06 0.71 1531 + 1533 4 212.88 340.56 -146.84 0.71 1532 + 1534 4 214.53 342.08 -146.84 0.71 1533 + 1535 4 215.4 344.39 -148.82 0.71 1534 + 1536 4 217.14 346.52 -150.9 0.71 1535 + 1537 4 218.01 348.3 -153.4 0.71 1536 + 1538 4 218.66 350.43 -154.82 0.71 1537 + 1539 4 219.96 352.2 -154.82 0.71 1538 + 1540 4 221.27 353.98 -156.14 0.71 1539 + 1541 4 222.79 355.4 -158.7 0.71 1540 + 1542 4 223.87 356.72 -158.7 0.71 1541 + 1543 4 225.17 358.14 -161.48 0.71 1542 + 1544 4 226.69 359.21 -163.85 0.71 1543 + 1545 4 228.21 361.16 -163.85 0.71 1544 + 1546 4 228.64 361.52 -166.42 0.71 1545 + 1547 4 230.16 362.94 -166.42 0.71 1546 + 1548 4 231.47 365.07 -166.42 0.71 1547 + 1549 4 232.77 367.56 -166.42 0.71 1548 + 1550 4 234.29 368.63 -168.77 0.71 1549 + 1551 4 235.38 370.22 -170.48 0.71 1550 + 1552 4 236.68 372.06 -173.12 0.71 1551 + 1553 4 237.99 374.19 -171.79 0.71 1552 + 1554 4 239.51 376.32 -171.79 0.71 1553 + 1555 4 240.59 377.92 -174.18 0.71 1554 + 1556 4 242.11 379.87 -176.73 0.71 1555 + 1557 4 243.85 381.47 -176.73 0.71 1556 + 1558 4 245.59 383.07 -178.46 0.71 1557 + 1559 4 247.32 384.85 -177.55 0.71 1558 + 1560 4 249.12 386.86 -179.96 0.71 1559 + 1561 4 250.2 388.45 -179.96 0.71 1560 + 1562 4 252.16 389.88 -179.96 0.71 1561 + 1563 4 253.03 391.3 -182.7 0.71 1562 + 1564 4 254.55 392.72 -182.7 0.71 1563 + 1565 4 255.85 394.49 -182.7 0.71 1564 + 1566 4 256.28 396.27 -182.7 0.71 1565 + 1567 4 256.85 397.88 -182.7 0.71 1566 + 1568 4 257.28 398.59 -185.53 0.71 1567 + 1569 4 257.5 400.54 -187.73 0.71 1568 + 1570 4 257.5 402.5 -189.17 0.71 1569 + 1571 4 256.85 404.45 -190.48 0.71 1570 + 1572 4 256.63 406.58 -190.48 0.71 1571 + 1573 4 256.41 408.18 -189 0.71 1572 + 1574 4 256.41 409.96 -191.3 0.71 1573 + 1575 4 257.72 411.38 -191.3 0.71 1574 + 1576 4 258 413.97 -191.3 0.71 1575 + 1577 4 258.21 416.25 -192.57 0.71 1576 + 1578 4 258 418.92 -192.57 0.71 1577 + 1579 4 258.65 420.69 -195.35 0.71 1578 + 1580 4 258.87 422.65 -195.35 0.71 1579 + 1581 4 259.73 425.31 -195.42 0.71 1580 + 1582 4 260.17 427.8 -195.42 0.71 1581 + 1583 4 260.85 429.1 -197.68 0.71 1582 + 1584 4 261.07 431.94 -197.68 0.71 1583 + 1585 4 261.65 433.83 -197.68 0.71 1584 + 1586 4 261.65 436.5 -197.68 0.71 1585 + 1587 4 261.87 438.1 -197.91 0.71 1586 + 1588 4 262.08 440.41 -199.85 0.71 1587 + 1589 4 261.87 443.07 -197.82 0.71 1588 + 1590 4 261.87 444.85 -200.63 0.71 1589 + 1591 4 262.08 446.98 -200.63 0.71 1590 + 1592 4 262.65 449.54 -200.63 0.71 1591 + 1593 4 263.25 451.43 -200.63 0.71 1592 + 1594 4 263.9 453.57 -198.22 0.71 1593 + 1595 4 264.33 455.7 -198.22 0.71 1594 + 1596 4 265.27 457.63 -198.22 0.71 1595 + 1597 4 265.7 459.59 -198.22 0.71 1596 + 1598 4 265.92 460.65 -198.22 0.71 1597 + 1599 4 266.57 462.61 -198.22 0.71 1598 + 1600 4 265.92 464.38 -198.22 0.71 1599 + 1601 4 265.48 465.63 -198.22 0.71 1600 + 1602 4 124.37 171.12 -19.88 1.065 1443 + 1603 4 126.11 171.66 -22.04 0.89 1602 + 1604 4 127.84 172.9 -22.04 0.71 1603 + 1605 4 129.15 173.97 -20.95 0.71 1604 + 1606 4 131.1 174.86 -23.14 0.71 1605 + 1607 4 133.49 176.1 -23.14 0.71 1606 + 1608 4 135.66 177.52 -25.39 0.71 1607 + 1609 4 137.18 179.3 -25.39 0.71 1608 + 1610 4 139.14 181.07 -26.37 0.71 1609 + 1611 4 141.31 182.32 -27.28 0.71 1610 + 1612 4 142.86 183.55 -26.5 0.71 1611 + 1613 4 144.38 184.61 -27.97 0.71 1612 + 1614 4 146.12 186.57 -30.14 0.71 1613 + 1615 4 148.08 187.81 -30.14 0.71 1614 + 1616 4 149.16 189.23 -32.23 0.71 1615 + 1617 4 150.25 191.36 -35.3 0.71 1616 + 1618 4 151.12 193.14 -35.3 0.71 1617 + 1619 4 152.85 195.45 -38.03 0.71 1618 + 1620 4 154.16 197.76 -39.54 0.71 1619 + 1621 4 155.43 199.66 -39.54 0.71 1620 + 1622 4 156.52 201.43 -41.39 0.71 1621 + 1623 4 157.6 203.39 -43.26 0.71 1622 + 1624 4 159.34 204.99 -43.26 0.71 1623 + 1625 4 160.64 207.12 -45.29 0.71 1624 + 1626 4 161.95 209.25 -45.29 0.71 1625 + 1627 4 163.25 210.49 -46.8 0.71 1626 + 1628 4 164.33 212.09 -46.8 0.71 1627 + 1629 4 164.98 213.52 -49.34 0.71 1628 + 1630 4 166.72 216.01 -50.76 0.71 1629 + 1631 4 168.67 219.21 -53.36 0.71 1630 + 1632 4 170.84 222.05 -55.05 0.71 1631 + 1633 4 172.58 224.18 -55.05 0.71 1632 + 1634 4 174.1 225.78 -56.75 0.71 1633 + 1635 4 175.62 227.91 -57.33 0.71 1634 + 1636 4 176.2 229.68 -57.33 0.71 1635 + 1637 4 176.41 231.1 -55.85 0.71 1636 + 1638 4 177.5 233.59 -55.85 0.71 1637 + 1639 4 178.8 235.37 -57.51 0.71 1638 + 1640 4 180.54 237.32 -59.19 0.71 1639 + 1641 4 181.84 239.1 -59.19 0.71 1640 + 1642 4 184.01 241.23 -59.39 0.71 1641 + 1643 4 185.32 243 -61.45 0.71 1642 + 1644 4 186.85 244.17 -60.1 0.71 1643 + 1645 4 188.58 245.59 -60.1 0.71 1644 + 1646 4 190.54 247.55 -60.1 0.71 1645 + 1647 4 191.84 248.97 -58.18 0.71 1646 + 1648 4 193.8 250.21 -59.54 0.71 1647 + 1649 4 194.67 251.99 -59.62 0.71 1648 + 1650 4 196.4 252.87 -60.71 0.71 1649 + 1651 4 197.71 253.94 -62.62 0.71 1650 + 1652 4 199.44 254.65 -64.31 0.71 1651 + 1653 4 200.96 255.54 -64.31 0.71 1652 + 1654 4 203.14 256.61 -66.01 0.71 1653 + 1655 4 205.31 258.38 -66.01 0.71 1654 + 1656 4 207.06 259.37 -66.01 0.71 1655 + 1657 4 208.37 260.61 -67.36 0.71 1656 + 1658 4 210.32 261.15 -67.36 0.71 1657 + 1659 4 212.28 262.03 -66.45 0.71 1658 + 1660 4 213.8 262.39 -66.45 0.71 1659 + 1661 4 215.32 263.46 -68.96 0.71 1660 + 1662 4 217.71 264.52 -68.96 0.71 1661 + 1663 4 220.53 266.3 -68.96 0.71 1662 + 1664 4 222.7 267.72 -71.01 0.71 1663 + 1665 4 224.66 268.96 -71.01 0.71 1664 + 1666 4 226.18 270.03 -71.01 0.71 1665 + 1667 4 228.13 271.98 -72.57 0.71 1666 + 1668 4 229.43 273.94 -74.75 0.71 1667 + 1669 4 231.17 276.25 -74.75 0.71 1668 + 1670 4 231.65 278.23 -74.16 0.71 1669 + 1671 4 232.52 280.72 -75.14 0.71 1670 + 1672 4 233.82 282.85 -78.13 0.71 1671 + 1673 4 235.12 284.63 -75.94 0.71 1672 + 1674 4 236.43 286.76 -75.94 0.71 1673 + 1675 4 237.95 288.71 -75.94 0.71 1674 + 1676 4 239.68 291.56 -78.56 0.71 1675 + 1677 4 240.9 294.7 -78.56 0.71 1676 + 1678 4 241.75 297.34 -78.34 0.71 1677 + 1679 4 243.05 299.47 -80.03 0.71 1678 + 1680 4 243.49 301.07 -80.82 0.71 1679 + 1681 4 244.79 303.03 -80.82 0.71 1680 + 1682 4 246.09 304.09 -80.82 0.71 1681 + 1683 4 248.05 305.51 -80.82 0.71 1682 + 1684 4 248.92 307.29 -80.26 0.71 1683 + 1685 4 249.01 308.88 -82.98 0.71 1684 + 1686 4 250.97 311.37 -82.98 0.71 1685 + 1687 4 251.62 313.32 -82.98 0.71 1686 + 1688 4 252.71 314.74 -84.96 0.71 1687 + 1689 4 253.14 316.52 -84.38 0.71 1688 + 1690 4 253.57 318.65 -86.87 0.71 1689 + 1691 4 253.57 320.6 -88.82 0.71 1690 + 1692 4 253.79 322.2 -86.19 0.71 1691 + 1693 4 253.8 324.59 -86.19 0.71 1692 + 1694 4 254.01 325.83 -88.11 0.71 1693 + 1695 4 254.23 329.03 -88.11 0.71 1694 + 1696 4 255.1 330.27 -89.68 0.71 1695 + 1697 4 255.75 332.41 -90.22 0.71 1696 + 1698 4 256.19 334.54 -90.22 0.71 1697 + 1699 4 256.84 336.67 -90.22 0.71 1698 + 1700 4 257.67 338.99 -90.22 0.71 1699 + 1701 4 257.88 341.12 -90.22 0.71 1700 + 1702 4 258.1 343.07 -91.56 0.71 1701 + 1703 4 259.19 345.74 -91.56 0.71 1702 + 1704 4 258.97 348.05 -92.98 0.71 1703 + 1705 4 259.4 350.89 -92.43 0.71 1704 + 1706 4 259.61 353.19 -92.43 0.71 1705 + 1707 4 260.03 355.85 -92.43 0.71 1706 + 1708 4 259.81 357.99 -92.43 0.71 1707 + 1709 4 261.12 359.58 -94.19 0.71 1708 + 1710 4 261.77 361.54 -93.5 0.71 1709 + 1711 4 263.07 364.74 -93.5 0.71 1710 + 1712 4 264.16 367.05 -96.28 0.71 1711 + 1713 4 265.5 368.68 -94.7 0.71 1712 + 1714 4 266.15 370.1 -96.42 0.71 1713 + 1715 4 267.02 372.23 -96.42 0.71 1714 + 1716 4 268.32 374.36 -96.42 0.71 1715 + 1717 4 269.63 377.74 -99.59 0.71 1716 + 1718 4 269.84 379.69 -99.59 0.71 1717 + 1719 4 269.63 381.47 -99.49 0.71 1718 + 1720 4 269.83 383.43 -99.49 0.71 1719 + 1721 4 269.83 385.92 -99.49 0.71 1720 + 1722 4 270.48 388.41 -99.49 0.71 1721 + 1723 4 270.92 390.36 -99.49 0.71 1722 + 1724 4 270.78 392.23 -99.49 0.71 1723 + 1725 4 271.21 395.08 -99.49 0.71 1724 + 1726 4 272.3 397.21 -100.18 0.71 1725 + 1727 4 274.04 399.52 -100.18 0.71 1726 + 1728 4 274.69 400.76 -96.18 0.71 1727 + 1729 4 275.12 403.07 -96.18 0.71 1728 + 1730 4 275.99 405.2 -96.18 0.71 1729 + 1731 4 278.15 407.77 -96.18 0.71 1730 + 1732 4 279.67 409.72 -96.18 0.71 1731 + 1733 4 281.19 411.5 -96.18 0.71 1732 + 1734 4 281.84 413.98 -96.18 0.71 1733 + 1735 4 283.15 415.94 -96.18 0.71 1734 + 1736 4 283.8 418.25 -96.18 0.71 1735 + 1737 4 284.88 419.67 -93.06 0.71 1736 + 1738 4 285.25 421.99 -93.06 0.71 1737 + 1739 4 286.12 424.65 -93.06 0.71 1738 + 1740 4 287.2 426.41 -93.06 0.71 1739 + 1741 4 287.87 427.72 -93.06 0.71 1740 + 1742 4 98.15 132.37 -11.6 1.6 833 + 1743 4 99.89 133.61 -11.6 1.6 1742 + 1744 4 101.63 135.03 -10.04 1.42 1743 + 1745 4 102.89 136.4 -10.04 1.42 1744 + 1746 4 104.84 137.29 -10.04 1.245 1745 + 1747 4 107.01 137.29 -10.04 1.245 1746 + 1748 4 108.32 138.35 -10.04 1.245 1747 + 1749 4 110.7 139.24 -8.42 1.245 1748 + 1750 4 113.09 140.31 -8.42 1.245 1749 + 1751 4 114.4 141.55 -8.42 1.245 1750 + 1752 4 115.92 143.5 -8.42 1.245 1751 + 1753 4 117.44 144.93 -8.42 1.245 1752 + 1754 4 119.17 146.7 -8.42 1.245 1753 + 1755 4 120.91 147.41 -10.38 1.245 1754 + 1756 4 124.01 149.35 -10.38 1.245 1755 + 1757 4 125.09 150.42 -10.38 1.245 1756 + 1758 4 127.03 151.49 -10.38 1.245 1757 + 1759 4 127.9 152.2 -12.32 1.42 1758 + 1760 4 128.12 153.26 -12.32 1.6 1759 + 1761 4 127.66 154.48 -11.34 1.42 1760 + 1762 4 127.01 157.15 -11.34 1.245 1761 + 1763 4 127.23 158.57 -11.34 1.245 1762 + 1764 4 126.14 159.99 -11.34 1.065 1763 + 1765 4 125.93 161.59 -11.34 1.065 1764 + 1766 4 126.14 163.72 -11.34 1.065 1765 + 1767 4 125.71 166.39 -10.09 0.89 1766 + 1768 4 124.99 167.6 -10.74 1.065 1767 + 1769 4 123.69 170.44 -10.74 1.065 1768 + 1770 4 122.61 173.1 -10.74 1.065 1769 + 1771 4 122.39 174.88 -10.74 1.065 1770 + 1772 4 120.43 176.3 -10.74 0.89 1771 + 1773 4 119.57 179.14 -13.15 0.89 1772 + 1774 4 118.48 181.1 -13.15 0.89 1773 + 1775 4 111.53 199.88 -15.63 0.89 1774 + 1776 4 111.09 202.19 -17.74 0.89 1775 + 1777 4 109.57 204.15 -16.32 0.89 1776 + 1778 4 108.05 206.81 -16.32 0.89 1777 + 1779 4 107.4 208.59 -19 0.89 1778 + 1780 4 106.97 210.01 -18.81 0.89 1779 + 1781 4 106.75 212.14 -19.57 0.89 1780 + 1782 4 107.08 214.82 -19.57 0.89 1781 + 1783 4 107.73 217.13 -21.53 0.89 1782 + 1784 4 107.95 219.08 -21.53 0.89 1783 + 1785 4 108.17 220.68 -20.49 0.89 1784 + 1786 4 108.17 222.28 -20.49 0.89 1785 + 1787 4 109.04 224.06 -22.98 0.89 1786 + 1788 4 109.47 225.48 -22.98 0.89 1787 + 1789 4 109.69 227.61 -22.98 0.89 1788 + 1790 4 110.12 229.92 -21.8 0.89 1789 + 1791 4 110.99 232.23 -23.58 0.89 1790 + 1792 4 111.86 233.83 -23.58 0.89 1791 + 1793 4 112.73 235.96 -22.74 0.71 1792 + 1794 4 113.16 238.62 -22.74 0.71 1793 + 1795 4 113.81 240.58 -24.97 0.71 1794 + 1796 4 114.46 241.82 -26.93 0.71 1795 + 1797 4 114.46 245.02 -27.81 0.71 1796 + 1798 4 115.62 246.41 -29.34 0.71 1797 + 1799 4 116.06 248.36 -29.34 0.71 1798 + 1800 4 116.28 249.96 -31.06 0.71 1799 + 1801 4 116.71 253.34 -29.5 0.71 1800 + 1802 4 117.36 256 -29.5 0.71 1801 + 1803 4 118.66 259.91 -29.5 0.71 1802 + 1804 4 119.61 262.45 -31.09 0.71 1803 + 1805 4 120.48 264.76 -31.09 0.71 1804 + 1806 4 121.13 266.71 -31.09 0.71 1805 + 1807 4 121.78 269.02 -31.24 0.71 1806 + 1808 4 122.43 271.16 -31.24 0.71 1807 + 1809 4 123.08 273.47 -31.24 0.71 1808 + 1810 4 123.3 275.77 -31.24 0.71 1809 + 1811 4 124.84 277.36 -31.24 0.71 1810 + 1812 4 124.41 279.85 -31.24 0.71 1811 + 1813 4 124.62 282.16 -31.19 0.71 1812 + 1814 4 124.62 284.65 -31.19 0.89 1813 + 1815 4 123.76 287.84 -31.19 0.89 1814 + 1816 4 123.32 290.15 -29.84 0.89 1815 + 1817 4 122.45 291.76 -29.84 0.89 1816 + 1818 4 122.02 294.07 -29.84 0.89 1817 + 1819 4 121.37 295.85 -27.79 0.89 1818 + 1820 4 120.28 299.4 -27.79 0.89 1819 + 1821 4 119.63 301 -27.79 0.89 1820 + 1822 4 119.41 303.31 -27.79 0.89 1821 + 1823 4 118.76 305.44 -27.79 0.89 1822 + 1824 4 118.3 308.23 -29.7 0.89 1823 + 1825 4 118.3 310.36 -29.7 0.89 1824 + 1826 4 117.87 312.31 -29.35 0.71 1825 + 1827 4 117.65 314.27 -29.35 0.71 1826 + 1828 4 117.22 316.22 -29.35 0.71 1827 + 1829 4 116.78 318.53 -29.44 0.71 1828 + 1830 4 117 320.84 -29.44 0.71 1829 + 1831 4 117.16 323.58 -26.38 0.71 1830 + 1832 4 117.37 326.43 -25.88 0.71 1831 + 1833 4 117.37 328.74 -26.61 0.71 1832 + 1834 4 117.59 331.93 -26.61 0.71 1833 + 1835 4 118.02 333.89 -24.66 0.71 1834 + 1836 4 118.24 336.55 -24.66 0.71 1835 + 1837 4 117.7 339.05 -24.66 0.71 1836 + 1838 4 117.49 341.18 -24.46 0.71 1837 + 1839 4 116.84 343.67 -24.46 0.71 1838 + 1840 4 116.18 345.27 -23.34 0.71 1839 + 1841 4 115.32 347.4 -23.08 0.71 1840 + 1842 4 114.66 349.53 -23.08 0.71 1841 + 1843 4 113.36 351.49 -23.08 0.71 1842 + 1844 4 113.12 352.99 -22.22 0.71 1843 + 1845 4 112.25 354.58 -22.22 0.71 1844 + 1846 4 110.73 355.83 -20.5 0.71 1845 + 1847 4 108.99 357.07 -20.5 0.71 1846 + 1848 4 107.69 359.03 -20.5 0.71 1847 + 1849 4 106.61 361.16 -20.86 0.71 1848 + 1850 4 105.74 362.93 -20.86 0.71 1849 + 1851 4 105.3 365.24 -18.22 0.71 1850 + 1852 4 105.52 367.55 -18.22 0.71 1851 + 1853 4 105.76 369.36 -18.22 0.71 1852 + 1854 4 105.54 370.96 -18.22 0.71 1853 + 1855 4 104.89 372.56 -17.36 0.71 1854 + 1856 4 104.89 375.76 -17.36 0.71 1855 + 1857 4 104.24 377.36 -17.36 0.71 1856 + 1858 4 104.45 378.96 -19.62 0.71 1857 + 1859 4 103.58 380.91 -19.62 0.71 1858 + 1860 4 103.15 382.69 -19.62 0.71 1859 + 1861 4 102.05 384.01 -18.9 0.71 1860 + 1862 4 101.18 385.61 -18.9 0.71 1861 + 1863 4 100.75 387.38 -19.01 0.71 1862 + 1864 4 100.1 389.69 -19.08 0.71 1863 + 1865 4 99.45 391.47 -19.08 0.71 1864 + 1866 4 99.23 393.25 -17.48 0.71 1865 + 1867 4 98.58 395.02 -17.48 0.71 1866 + 1868 4 97.06 397.69 -16.22 0.71 1867 + 1869 4 96.07 399.54 -16.22 0.71 1868 + 1870 4 95.64 401.85 -16.22 0.71 1869 + 1871 4 94.98 403.8 -15.14 0.71 1870 + 1872 4 94.77 406.29 -15.14 0.71 1871 + 1873 4 94.55 408.96 -16.16 0.71 1872 + 1874 4 94.33 411.09 -16.16 0.71 1873 + 1875 4 94.12 412.51 -16.16 0.71 1874 + 1876 4 93.92 414.7 -15.18 0.71 1875 + 1877 4 93.49 416.12 -15.18 0.71 1876 + 1878 4 93.7 418.07 -16.14 0.71 1877 + 1879 4 94.57 420.03 -16.14 0.71 1878 + 1880 4 95.22 422.87 -16.14 0.71 1879 + 1881 4 96.09 424.29 -16.14 0.71 1880 + 1882 4 97.4 426.24 -16.14 0.71 1881 + 1883 4 99.13 428.55 -16.14 0.71 1882 + 1884 4 100.24 429.81 -16.26 0.71 1883 + 1885 4 101.09 431.23 -17.58 0.71 1884 + 1886 4 101.96 433.54 -17.58 0.71 1885 + 1887 4 102.83 435.49 -17.58 0.71 1886 + 1888 4 103.48 437.8 -19.68 0.71 1887 + 1889 4 104.13 439.93 -19.68 0.71 1888 + 1890 4 104.57 441.71 -18.02 0.71 1889 + 1891 4 105.65 444.02 -19.78 0.71 1890 + 1892 4 107.08 445.94 -19.78 0.71 1891 + 1893 4 108.58 449.32 -19.78 0.71 1892 + 1894 4 108.58 451.45 -19.78 0.71 1893 + 1895 4 108.36 453.76 -18.92 0.71 1894 + 1896 4 108.58 455.87 -18.92 0.71 1895 + 1897 4 107.93 457.64 -18.92 0.71 1896 + 1898 4 108.14 459.6 -20.96 0.71 1897 + 1899 4 108.16 462.05 -20.78 0.71 1898 + 1900 4 108.81 464.36 -19.81 0.71 1899 + 1901 4 109.46 466.67 -22.46 0.71 1900 + 1902 4 109.68 469.33 -22.46 0.71 1901 + 1903 4 110.11 471.29 -22.46 0.71 1902 + 1904 4 110.76 473.24 -22.1 0.71 1903 + 1905 4 111.41 475.73 -22.1 0.71 1904 + 1906 4 111.56 477.72 -22.1 0.71 1905 + 1907 4 112.21 480.38 -22.1 0.71 1906 + 1908 4 112.21 482.51 -21.55 0.71 1907 + 1909 4 113.29 483.76 -23.06 0.71 1908 + 1910 4 114.81 485.36 -23.06 0.71 1909 + 1911 4 116.98 487.31 -23.06 0.71 1910 + 1912 4 118.29 488.55 -24.53 0.71 1911 + 1913 4 120.46 489.98 -24.53 0.71 1912 + 1914 4 123.14 491.74 -23.77 0.71 1913 + 1915 4 124.88 493.34 -23.77 0.71 1914 + 1916 4 126.18 494.58 -24.12 0.71 1915 + 1917 4 128.36 495.65 -25.64 0.71 1916 + 1918 4 129.23 496.71 -27.22 0.71 1917 + 1919 4 130.31 499.02 -29.28 0.71 1918 + 1920 4 131.61 501.16 -29.28 0.71 1919 + 1921 4 133.35 503.64 -29.28 0.71 1920 + 1922 4 135.09 505.95 -29.28 0.71 1921 + 1923 4 138.18 507.25 -26.71 0.71 1922 + 1924 4 139.92 507.59 -28.54 0.71 1923 + 1925 4 141.87 508.12 -27.29 0.71 1924 + 1926 4 144.04 509.54 -27.29 0.71 1925 + 1927 4 146.87 510.61 -27.29 0.71 1926 + 1928 4 149.25 512.03 -28.7 0.71 1927 + 1929 4 151.86 512.74 -28.7 0.71 1928 + 1930 4 154.11 513.83 -28.7 0.71 1929 + 1931 4 156.28 514.9 -28.7 0.71 1930 + 1932 4 157.8 515.78 -28.05 0.71 1931 + 1933 4 160.19 515.96 -28.05 0.71 1932 + 1934 4 161.71 517.38 -28.05 0.71 1933 + 1935 4 163.88 518.63 -29.96 0.71 1934 + 1936 4 165.84 518.98 -29.96 0.71 1935 + 1937 4 167.36 519.51 -30.54 0.71 1936 + 1938 4 169.75 520.4 -30.54 0.71 1937 + 1939 4 171.71 521.07 -30.54 0.71 1938 + 1940 4 174.75 522.83 -30.54 0.71 1939 + 1941 4 177.36 523.54 -30.54 0.71 1940 + 1942 4 178.42 525.19 -30.54 0.71 1941 + 1943 4 180.6 526.07 -29.19 0.71 1942 + 1944 4 182.77 527.49 -29.19 0.71 1943 + 1945 4 184.48 528.45 -30.65 0.71 1944 + 1946 4 186.65 529.52 -32.37 0.71 1945 + 1947 4 189.04 531.29 -30.94 0.71 1946 + 1948 4 190.99 532.54 -30.94 0.71 1947 + 1949 4 192.73 534.14 -33.76 0.71 1948 + 1950 4 195.33 536.09 -33.76 0.71 1949 + 1951 4 197.07 537.16 -33.76 0.71 1950 + 1952 4 198.37 539.29 -31.19 0.71 1951 + 1953 4 200.55 541.78 -33.38 0.71 1952 + 1954 4 202.94 543.74 -33.38 0.71 1953 + 1955 4 205.55 545.16 -32.87 0.71 1954 + 1956 4 207.51 546.58 -36.15 0.71 1955 + 1957 4 209.89 547.12 -36.15 0.71 1956 + 1958 4 211.85 547.83 -36.15 0.71 1957 + 1959 4 214.24 549.07 -36.28 0.71 1958 + 1960 4 215.97 550.31 -38.06 0.71 1959 + 1961 4 218.15 551.2 -38.06 0.71 1960 + 1962 4 220.11 552.41 -38.06 0.71 1961 + 1963 4 222.5 553.83 -38.06 0.71 1962 + 1964 4 224.02 555.43 -38.06 0.71 1963 + 1965 4 225.76 556.85 -39.22 0.71 1964 + 1966 4 227.28 558.8 -39.22 0.71 1965 + 1967 4 229.23 560.22 -38.27 0.71 1966 + 1968 4 231.4 562.36 -40.79 0.71 1967 + 1969 4 233.57 564.31 -40.79 0.71 1968 + 1970 4 235.31 565.73 -38.98 0.71 1969 + 1971 4 236.66 567.43 -41.87 0.71 1970 + 1972 4 238.04 568.45 -41.87 0.71 1971 + 1973 4 130.29 153.62 -12.32 1.42 1760 + 1974 4 132.46 154.33 -12.32 1.42 1973 + 1975 4 134.2 155.93 -13 1.42 1974 + 1976 4 135.28 157.35 -13 1.42 1975 + 1977 4 136.8 158.77 -13 1.42 1976 + 1978 4 138.97 160.01 -14.96 1.42 1977 + 1979 4 140.93 160.55 -14.96 1.42 1978 + 1980 4 143.34 162.18 -14.96 1.245 1979 + 1981 4 144.42 163.42 -14.96 1.245 1980 + 1982 4 146.38 165.02 -17.78 1.245 1981 + 1983 4 148.77 166.97 -17.78 1.245 1982 + 1984 4 150.94 168.75 -20.4 1.245 1983 + 1985 4 153.54 170.7 -20.4 1.245 1984 + 1986 4 155.5 171.95 -20.4 1.245 1985 + 1987 4 157.67 173.37 -20.4 1.245 1986 + 1988 4 159.84 174.79 -22.43 1.245 1987 + 1989 4 161.09 176.91 -22.43 1.245 1988 + 1990 4 162.61 179.04 -22.43 1.245 1989 + 1991 4 163.91 181.71 -23.53 1.245 1990 + 1992 4 165.86 184.02 -23.53 1.245 1991 + 1993 4 167.6 186.32 -25.49 1.245 1992 + 1994 4 168.47 187.57 -25.49 1.245 1993 + 1995 4 169.56 189.17 -26.96 1.245 1994 + 1996 4 170.42 190.77 -26.96 1.245 1995 + 1997 4 170.86 192.54 -26.96 1.245 1996 + 1998 4 171.29 193.25 -26.96 1.245 1997 + 1999 4 171.69 196.41 -29.56 1.065 1998 + 2000 4 172.35 200.67 -30.86 0.89 1999 + 2001 4 173 201.91 -32.81 0.89 2000 + 2002 4 172.78 203.16 -30.36 0.71 2001 + 2003 4 173.21 204.56 -33.54 0.71 2002 + 2004 4 173.87 206.51 -33.54 0.71 2003 + 2005 4 173.61 207.99 -36.85 0.71 2004 + 2006 4 174.48 210.47 -39.62 0.71 2005 + 2007 4 176.21 212.6 -41.46 0.71 2006 + 2008 4 176.43 214.2 -44.14 0.71 2007 + 2009 4 178.17 216.34 -44.14 0.71 2008 + 2010 4 179.69 218.64 -44.53 0.71 2009 + 2011 4 181.21 220.95 -46.7 0.71 2010 + 2012 4 184.28 224.14 -48.52 0.71 2011 + 2013 4 186.02 226.09 -50.26 0.71 2012 + 2014 4 187.76 228.76 -50.26 0.71 2013 + 2015 4 189.93 231.07 -49.74 0.71 2014 + 2016 4 191.02 232.84 -49.74 0.71 2015 + 2017 4 192.95 234.8 -53.27 0.71 2016 + 2018 4 193.39 236.4 -52.7 0.71 2017 + 2019 4 193.88 238.3 -56.21 0.71 2018 + 2020 4 195.61 240.25 -56.21 0.71 2019 + 2021 4 196.7 242.03 -55.74 0.71 2020 + 2022 4 198.44 244.16 -55.74 0.71 2021 + 2023 4 200.39 246.47 -60.65 0.71 2022 + 2024 4 202.13 249.13 -60.65 0.71 2023 + 2025 4 203.65 250.55 -62.71 0.71 2024 + 2026 4 204.28 251.96 -63.17 0.71 2025 + 2027 4 205.36 255.16 -63.17 0.71 2026 + 2028 4 205.8 257.29 -65.22 0.71 2027 + 2029 4 206.67 259.78 -68.57 0.71 2028 + 2030 4 207.32 262.09 -68.57 0.71 2029 + 2031 4 208.62 264.4 -70.42 0.71 2030 + 2032 4 208.84 266.89 -70.42 0.71 2031 + 2033 4 209.73 269.1 -70.22 0.71 2032 + 2034 4 210.81 270.7 -73.11 0.71 2033 + 2035 4 211.9 272.83 -73.11 0.71 2034 + 2036 4 213.85 274.96 -76.22 0.71 2035 + 2037 4 215.16 277.45 -76.22 0.71 2036 + 2038 4 216.89 280.47 -79.48 0.71 2037 + 2039 4 218.63 283.31 -79.48 0.71 2038 + 2040 4 220.38 284.94 -80.12 0.71 2039 + 2041 4 221.25 286.54 -82.98 0.71 2040 + 2042 4 224.07 289.92 -82.98 0.71 2041 + 2043 4 222.99 292.22 -84.88 0.71 2042 + 2044 4 224.29 294.89 -84.88 0.71 2043 + 2045 4 226.03 297.2 -87.38 0.71 2044 + 2046 4 227.33 299.15 -87.38 0.71 2045 + 2047 4 228.76 301.1 -89.58 0.71 2046 + 2048 4 230.72 303.76 -89.58 0.71 2047 + 2049 4 232.24 305.72 -88.9 0.71 2048 + 2050 4 233.32 307.14 -91.44 0.71 2049 + 2051 4 234.63 308.74 -91.44 0.71 2050 + 2052 4 235.49 311.04 -92.26 0.71 2051 + 2053 4 237.23 312.82 -92.26 0.71 2052 + 2054 4 239.4 314.42 -94.47 0.71 2053 + 2055 4 241.18 316.12 -94.47 0.71 2054 + 2056 4 242.05 317.72 -94.5 0.71 2055 + 2057 4 243.57 318.78 -94.5 0.71 2056 + 2058 4 245.74 320.03 -94.5 0.71 2057 + 2059 4 247.69 321.45 -94.5 0.71 2058 + 2060 4 249.18 322.23 -94.5 0.71 2059 + 2061 4 249.83 323.3 -94.5 0.71 2060 + 2062 4 250.48 324.18 -94.5 0.89 2061 + 2063 4 250.24 325.41 -92.05 0.71 2062 + 2064 4 251.11 327.16 -92.05 0.71 2063 + 2065 4 252.41 329.12 -92.05 0.71 2064 + 2066 4 254.15 330.72 -91.42 0.71 2065 + 2067 4 255.02 332.67 -88.13 0.71 2066 + 2068 4 256.76 335.69 -88.13 0.71 2067 + 2069 4 258.71 338.89 -88.13 0.71 2068 + 2070 4 260.16 341.07 -86.93 0.71 2069 + 2071 4 261.25 343.03 -86.93 0.71 2070 + 2072 4 261.68 344.8 -86.93 0.71 2071 + 2073 4 262.77 346.94 -89.26 0.71 2072 + 2074 4 265.37 349.6 -89.26 0.71 2073 + 2075 4 265.81 351.91 -88.25 0.71 2074 + 2076 4 267.55 354.93 -88.25 0.71 2075 + 2077 4 269.41 357.07 -87.89 0.71 2076 + 2078 4 270.5 359.56 -90.03 0.71 2077 + 2079 4 272.24 361.16 -90.03 0.71 2078 + 2080 4 273.97 362.76 -91.48 0.71 2079 + 2081 4 275.49 364.71 -91.48 0.71 2080 + 2082 4 277.88 366.13 -91.48 0.71 2081 + 2083 4 280.92 367.73 -91.48 0.71 2082 + 2084 4 282.44 370.04 -93.86 0.71 2083 + 2085 4 283.75 372.07 -93.86 0.71 2084 + 2086 4 286.13 374.38 -93.86 0.71 2085 + 2087 4 288.96 376.52 -93.86 0.71 2086 + 2088 4 290.48 378.47 -93.86 0.71 2087 + 2089 4 291.78 380.25 -95.68 0.71 2088 + 2090 4 294.17 383.62 -95.68 0.71 2089 + 2091 4 296.56 385.75 -95.68 0.71 2090 + 2092 4 297.95 387.52 -93.94 0.71 2091 + 2093 4 299.03 389.65 -93.94 0.71 2092 + 2094 4 300.33 391.78 -93.94 0.71 2093 + 2095 4 300.77 394.45 -91.73 0.71 2094 + 2096 4 301.2 397.29 -91.73 0.71 2095 + 2097 4 301.42 400.31 -91.73 0.71 2096 + 2098 4 300.81 403.01 -91.73 0.71 2097 + 2099 4 300.63 404.39 -91.73 0.71 2098 + 2100 4 299.32 406.87 -91.73 0.71 2099 + 2101 4 299.54 408.63 -87.99 0.71 2100 + 2102 4 299.76 411.47 -87.99 0.71 2101 + 2103 4 299.11 413.6 -84.5 0.71 2102 + 2104 4 299.32 416.27 -84.5 0.71 2103 + 2105 4 299.97 418.93 -84.5 0.71 2104 + 2106 4 298.96 421.78 -84.5 0.71 2105 + 2107 4 298.96 424.09 -84.14 0.71 2106 + 2108 4 299.39 426.23 -84.14 0.71 2107 + 2109 4 300.48 428.89 -84.14 0.71 2108 + 2110 4 301.35 433.33 -80.07 0.71 2109 + 2111 4 302.75 436.18 -80.07 0.71 2110 + 2112 4 304.7 439.92 -80.07 0.71 2111 + 2113 4 306.44 442.4 -80.07 0.71 2112 + 2114 4 307.31 444.71 -77.86 0.71 2113 + 2115 4 308.17 446.67 -77.86 0.71 2114 + 2116 4 309.48 449.86 -74.91 0.71 2115 + 2117 4 310.75 452.41 -74.91 0.71 2116 + 2118 4 312.48 454.89 -74.91 0.71 2117 + 2119 4 314.22 457.03 -74.91 0.71 2118 + 2120 4 315.31 459.34 -73.53 0.71 2119 + 2121 4 316.17 461.11 -73.53 0.71 2120 + 2122 4 317.48 463.78 -73.53 0.71 2121 + 2123 4 318.56 466.97 -75.58 0.71 2122 + 2124 4 319.51 468.92 -75.58 0.71 2123 + 2125 4 319.95 470.87 -74.23 0.71 2124 + 2126 4 321.03 473 -74.23 0.71 2125 + 2127 4 320.38 475.67 -71.43 0.71 2126 + 2128 4 320.16 477.62 -71.43 0.71 2127 + 2129 4 320.81 479.93 -71.43 0.71 2128 + 2130 4 319.95 482.78 -71.67 0.71 2129 + 2131 4 319.61 484.54 -69.26 0.71 2130 + 2132 4 319.83 486.67 -67.86 0.71 2131 + 2133 4 319.83 488.8 -70.26 0.71 2132 + 2134 4 319.83 490.94 -70.26 0.71 2133 + 2135 4 320.26 493.6 -70.57 0.71 2134 + 2136 4 320.26 495.91 -70.57 0.71 2135 + 2137 4 318.96 497.69 -67.66 0.71 2136 + 2138 4 317.76 499.54 -67.66 0.71 2137 + 2139 4 316.67 502.74 -67.66 0.71 2138 + 2140 4 315.8 505.23 -67.66 0.71 2139 + 2141 4 316.28 507.32 -67.66 0.71 2140 + 2142 4 316.28 509.98 -67.66 0.71 2141 + 2143 4 316.49 512.83 -67.66 0.71 2142 + 2144 4 316.66 514.16 -67.66 0.71 2143 + 2145 4 252.41 324.14 -94.5 0.71 2062 + 2146 4 255.89 324.12 -96.7 0.71 2145 + 2147 4 260.23 324.65 -96.7 0.71 2146 + 2148 4 262.84 325.36 -96.7 0.71 2147 + 2149 4 265.01 326.25 -101.5 0.71 2148 + 2150 4 267.83 327.14 -101.63 0.71 2149 + 2151 4 271.31 327.85 -103.7 0.71 2150 + 2152 4 274.32 330.05 -106.5 0.71 2151 + 2153 4 277.57 331.12 -106.5 0.71 2152 + 2154 4 279.51 332.01 -106.5 0.71 2153 + 2155 4 281.85 332.65 -106.5 0.71 2154 + 2156 4 285.74 333.01 -106.5 0.71 2155 + 2157 4 290.74 333.72 -106.5 0.71 2156 + 2158 4 293.56 335.14 -106.5 0.71 2157 + 2159 4 294.43 336.38 -106.5 0.71 2158 + 2160 4 172.38 195.39 -25.17 1.065 1998 + 2161 4 173.03 196.98 -25.17 1.065 2160 + 2162 4 173.46 198.58 -25.17 1.065 2161 + 2163 4 174.77 200.54 -21.96 0.89 2162 + 2164 4 175.2 202.49 -21.96 0.89 2163 + 2165 4 176.07 204.45 -21.96 0.89 2164 + 2166 4 177.74 206.48 -20.91 0.89 2165 + 2167 4 178.61 208.43 -20.91 0.89 2166 + 2168 4 181 210.92 -18.71 0.89 2167 + 2169 4 180.35 212.69 -18.71 0.89 2168 + 2170 4 180.78 214.47 -17.41 0.89 2169 + 2171 4 182.09 216.6 -17.41 0.89 2170 + 2172 4 183.61 218.2 -16.01 0.89 2171 + 2173 4 185.56 219.98 -16.01 0.89 2172 + 2174 4 187.28 221.04 -17.66 0.89 2173 + 2175 4 189.67 222.11 -17.66 0.89 2174 + 2176 4 191.63 223.18 -17.66 0.89 2175 + 2177 4 193.58 224.6 -17.66 0.89 2176 + 2178 4 195.32 225.49 -17.66 0.89 2177 + 2179 4 196.84 227.26 -17.66 0.89 2178 + 2180 4 198.14 228.51 -18.38 0.89 2179 + 2181 4 200.31 230.28 -18.38 0.89 2180 + 2182 4 202.05 231.7 -18.38 0.89 2181 + 2183 4 203.57 233.12 -16.53 0.89 2182 + 2184 4 205.31 234.55 -18.31 0.89 2183 + 2185 4 206.7 236 -18.31 0.89 2184 + 2186 4 208.87 238.13 -17.34 0.89 2185 + 2187 4 210.83 240.44 -19.08 0.89 2186 + 2188 4 212.56 242.39 -19.08 0.89 2187 + 2189 4 214.08 244.35 -19.08 0.89 2188 + 2190 4 215.82 245.77 -17.5 0.89 2189 + 2191 4 217.34 247.19 -19.88 0.89 2190 + 2192 4 218.86 248.61 -19.88 0.89 2191 + 2193 4 220.6 250.03 -20.38 0.71 2192 + 2194 4 222.1 252.31 -20.38 0.89 2193 + 2195 4 222.97 253.91 -20.38 0.89 2194 + 2196 4 224.27 256.04 -20.38 0.89 2195 + 2197 4 224.92 257.64 -20.38 0.89 2196 + 2198 4 225.57 259.95 -22.62 0.89 2197 + 2199 4 226.44 261.9 -22.62 0.89 2198 + 2200 4 226.88 264.04 -22.62 0.89 2199 + 2201 4 227.96 266.34 -22.62 0.89 2200 + 2202 4 229.33 269.27 -22.62 0.89 2201 + 2203 4 229.77 270.69 -22.22 0.89 2202 + 2204 4 230.42 271.75 -22.22 1.065 2203 + 2205 4 230.85 272.64 -22.22 1.065 2204 + 2206 4 230.85 273 -22.22 1.245 2205 + 2207 4 230.2 274.24 -22.22 0.89 2206 + 2208 4 230.2 275.48 -24.66 0.89 2207 + 2209 4 229.55 277.44 -27.06 0.89 2208 + 2210 4 228.9 279.04 -27.06 0.89 2209 + 2211 4 228.68 280.46 -26.86 0.71 2210 + 2212 4 228.68 282.59 -26.86 0.71 2211 + 2213 4 227.16 284.37 -26.86 0.71 2212 + 2214 4 226.51 286.68 -28.33 0.71 2213 + 2215 4 225.86 288.45 -28.37 0.71 2214 + 2216 4 225.43 289.7 -28.37 0.71 2215 + 2217 4 224.99 291.83 -28.37 0.71 2216 + 2218 4 224.77 294.31 -28.37 0.71 2217 + 2219 4 224.56 295.91 -29.94 0.71 2218 + 2220 4 223.91 298.93 -29.94 0.71 2219 + 2221 4 223.25 301.06 -31.99 0.71 2220 + 2222 4 223.03 303.27 -33.33 0.71 2221 + 2223 4 222.16 306.12 -33.33 0.71 2222 + 2224 4 221.94 309.14 -35.13 0.71 2223 + 2225 4 222.16 312.51 -35.13 0.71 2224 + 2226 4 221.51 314.64 -36.4 0.71 2225 + 2227 4 221.29 316.78 -35.34 0.71 2226 + 2228 4 221.03 318.52 -35.34 0.71 2227 + 2229 4 221.03 320.65 -37.2 0.71 2228 + 2230 4 221.24 323.32 -37.2 0.71 2229 + 2231 4 220.81 326.51 -37.2 0.71 2230 + 2232 4 220.59 329.89 -37.2 0.71 2231 + 2233 4 220.81 333.09 -37.3 0.71 2232 + 2234 4 221.06 336.16 -37.3 0.71 2233 + 2235 4 220.84 337.58 -38.95 0.71 2234 + 2236 4 221.71 339.89 -38.95 0.71 2235 + 2237 4 222.36 342.38 -37.04 0.71 2236 + 2238 4 223.01 343.8 -37.04 0.71 2237 + 2239 4 223.67 345.76 -37.04 0.71 2238 + 2240 4 224.1 348.42 -37.04 0.71 2239 + 2241 4 224.91 350.14 -37.04 0.71 2240 + 2242 4 224.91 352.27 -37.04 0.71 2241 + 2243 4 225.78 355.12 -35.97 0.71 2242 + 2244 4 226.87 357.42 -37.05 0.71 2243 + 2245 4 228.39 360.27 -37.05 0.71 2244 + 2246 4 229.69 362.75 -37.05 0.71 2245 + 2247 4 230.53 365.23 -37.05 0.71 2246 + 2248 4 232.7 368.6 -37.05 0.71 2247 + 2249 4 234.87 370.18 -37.82 0.71 2248 + 2250 4 236.83 371.96 -37.82 0.71 2249 + 2251 4 239 374.09 -37.82 0.71 2250 + 2252 4 240.52 376.58 -37.82 0.71 2251 + 2253 4 242.26 378.53 -38.21 0.71 2252 + 2254 4 244.18 379.96 -38.21 0.71 2253 + 2255 4 245.92 381.38 -38.21 0.71 2254 + 2256 4 248.31 382.81 -38.21 0.71 2255 + 2257 4 249.17 384.05 -37.32 0.71 2256 + 2258 4 251.56 385.83 -36.91 0.71 2257 + 2259 4 253.95 387.25 -36.91 0.71 2258 + 2260 4 256.12 388.67 -39.64 0.71 2259 + 2261 4 258.51 390.09 -39.64 0.71 2260 + 2262 4 261.12 392.22 -39.64 0.71 2261 + 2263 4 262.35 393.74 -39.64 0.71 2262 + 2264 4 264.3 394.98 -41.7 0.71 2263 + 2265 4 266.04 396.23 -40.45 0.71 2264 + 2266 4 268.21 398.18 -40.45 0.71 2265 + 2267 4 269.51 399.6 -42.02 0.71 2266 + 2268 4 271.03 400.85 -45.7 0.71 2267 + 2269 4 273.2 402.62 -45.7 0.71 2268 + 2270 4 275.38 404.93 -47.35 0.71 2269 + 2271 4 277.33 406 -47.35 0.71 2270 + 2272 4 279.28 407.24 -47.12 0.71 2271 + 2273 4 281.87 408.21 -47.12 0.71 2272 + 2274 4 283.39 409.45 -47.3 0.71 2273 + 2275 4 285.12 411.05 -48.96 0.71 2274 + 2276 4 285.99 413 -51.37 0.71 2275 + 2277 4 287.29 415.14 -51.37 0.71 2276 + 2278 4 288.82 418.16 -51.37 0.71 2277 + 2279 4 290.34 420.11 -50.91 0.71 2278 + 2280 4 292.07 422.42 -50.91 0.71 2279 + 2281 4 292.93 424.1 -52.87 0.71 2280 + 2282 4 294.23 425.7 -52.86 0.71 2281 + 2283 4 294.91 427.52 -52.86 0.71 2282 + 2284 4 296.21 430.01 -52.86 0.71 2283 + 2285 4 296.21 432.14 -55.55 0.71 2284 + 2286 4 297.95 434.09 -55.55 0.71 2285 + 2287 4 299.04 436.05 -55.6 0.71 2286 + 2288 4 300.12 438 -55.6 0.71 2287 + 2289 4 301.43 439.42 -58.14 0.71 2288 + 2290 4 302.55 440.23 -58.14 0.535 2289 + 2291 4 304.07 442.9 -58.14 0.535 2290 + 2292 4 306.02 444.67 -58.14 0.535 2291 + 2293 4 306.45 446.98 -58.14 0.535 2292 + 2294 4 307.11 448.76 -58.14 0.535 2293 + 2295 4 308.19 450.18 -58.14 0.535 2294 + 2296 4 232.81 274.06 -24.65 0.89 2206 + 2297 4 234.33 275.13 -24.22 0.89 2296 + 2298 4 235.63 276.37 -24.22 0.89 2297 + 2299 4 236.5 277.79 -26.18 0.89 2298 + 2300 4 237.59 279.04 -24.21 0.89 2299 + 2301 4 238.89 280.64 -24.21 0.89 2300 + 2302 4 239.98 281.7 -24.77 0.89 2301 + 2303 4 240.45 283.2 -24.77 0.89 2302 + 2304 4 241.27 284.44 -24.77 0.89 2303 + 2305 4 241.27 285.87 -24.77 0.89 2304 + 2306 4 242.13 287.29 -24.77 0.89 2305 + 2307 4 242.35 288 -24.77 0.89 2306 + 2308 4 243.46 291.06 -21.93 0.89 2307 + 2309 4 244.33 292.3 -23.02 0.71 2308 + 2310 4 245.85 293.54 -21.62 0.71 2309 + 2311 4 247.15 295.5 -19.23 0.71 2310 + 2312 4 248.46 297.1 -19.23 0.71 2311 + 2313 4 249.98 298.87 -19.23 0.71 2312 + 2314 4 251.71 300.83 -19.23 0.71 2313 + 2315 4 253.02 302.78 -16.84 0.71 2314 + 2316 4 255.16 304.41 -17.58 0.71 2315 + 2317 4 256.25 306.01 -17.58 0.71 2316 + 2318 4 257.55 307.43 -15.7 0.71 2317 + 2319 4 258.42 309.03 -16.48 0.71 2318 + 2320 4 259.94 310.28 -13 0.71 2319 + 2321 4 261.68 311.7 -13 0.71 2320 + 2322 4 264.07 313.83 -13 0.71 2321 + 2323 4 266.02 314.69 -11.39 0.71 2322 + 2324 4 267.76 316.12 -11.39 0.71 2323 + 2325 4 269.5 316.83 -11.39 0.71 2324 + 2326 4 270.91 317.52 -9.86 0.71 2325 + 2327 4 273.52 318.95 -9.86 0.71 2326 + 2328 4 274.61 320.19 -10.13 0.71 2327 + 2329 4 276.13 321.08 -8.43 0.71 2328 + 2330 4 277.21 323.21 -7.66 0.71 2329 + 2331 4 277.65 325.87 -7.66 0.71 2330 + 2332 4 278.95 328.01 -7.66 0.71 2331 + 2333 4 281.12 329.78 -9.3 0.71 2332 + 2334 4 282.86 331.2 -9.3 0.71 2333 + 2335 4 284.51 332.46 -9.3 0.71 2334 + 2336 4 285.16 334.23 -7.48 0.71 2335 + 2337 4 286.68 335.48 -7.48 0.71 2336 + 2338 4 287.77 337.08 -7.48 0.71 2337 + 2339 4 289.07 339.56 -6.02 0.71 2338 + 2340 4 290.81 341.52 -7.11 0.71 2339 + 2341 4 292.77 343.12 -4.54 0.71 2340 + 2342 4 295.37 345.43 -4.54 0.71 2341 + 2343 4 297.33 346.84 -3.45 0.71 2342 + 2344 4 300.37 348.61 -2.7 0.71 2343 + 2345 4 302.98 350.57 -2.7 0.71 2344 + 2346 4 304.71 352.16 -0.7 0.71 2345 + 2347 4 306.89 355.01 -0.7 0.71 2346 + 2348 4 308.19 356.96 -0.7 0.71 2347 + 2349 4 309.93 358.2 -0.06 0.71 2348 + 2350 4 311.66 359.98 -2.46 0.71 2349 + 2351 4 313.13 361.97 -2.46 0.71 2350 + 2352 4 314.65 364.1 -2.46 0.71 2351 + 2353 4 315.95 366.05 -0.24 0.71 2352 + 2354 4 318.34 366.94 -0.24 0.71 2353 + 2355 4 320.95 369.07 -0.79 0.71 2354 + 2356 4 322.9 371.21 -0.79 0.71 2355 + 2357 4 324.21 373.34 -1.72 0.71 2356 + 2358 4 324.86 374.94 -3.03 0.71 2357 + 2359 4 325.64 376.44 -0.34 0.71 2358 + 2360 4 326.95 378.21 -0.34 0.71 2359 + 2361 4 327.38 380.7 2.91 0.71 2360 + 2362 4 327.82 383.01 2.91 0.71 2361 + 2363 4 327.38 385.14 3.42 0.71 2362 + 2364 4 326.3 386.74 3.42 0.71 2363 + 2365 4 326.3 388.52 5.5 0.71 2364 + 2366 4 324.34 391.18 4.82 0.71 2365 + 2367 4 322.86 394.94 6.1 0.71 2366 + 2368 4 321.55 397.79 6.1 0.71 2367 + 2369 4 321.34 400.27 9.19 0.71 2368 + 2370 4 321.34 402.41 9.19 0.71 2369 + 2371 4 320.68 404.54 9.31 0.71 2370 + 2372 4 320.9 407.02 9.31 0.71 2371 + 2373 4 320.11 408.84 9.31 0.71 2372 + 2374 4 319.24 410.61 11.2 0.71 2373 + 2375 4 318.8 412.57 11.2 0.71 2374 + 2376 4 318.59 414.7 13.74 0.71 2375 + 2377 4 318.59 417.01 13.74 0.71 2376 + 2378 4 318.37 420.56 16.29 0.71 2377 + 2379 4 317.94 423.76 17.03 0.71 2378 + 2380 4 317.54 426.3 18.78 0.71 2379 + 2381 4 317.54 428.79 17.7 0.71 2380 + 2382 4 317.11 432.16 18.41 0.71 2381 + 2383 4 316.67 435.01 18.41 0.71 2382 + 2384 4 316.24 436.78 20.42 0.71 2383 + 2385 4 316.24 439.27 23.22 0.71 2384 + 2386 4 315.74 441.9 23.22 0.71 2385 + 2387 4 315.52 444.03 23.22 0.71 2386 + 2388 4 316.39 446.16 23.31 0.71 2387 + 2389 4 317.7 448.83 25.14 0.71 2388 + 2390 4 317.7 452.2 25.14 0.71 2389 + 2391 4 318.56 454.34 27.66 0.71 2390 + 2392 4 319.88 455.86 27.66 0.71 2391 + 2393 4 319.88 457.99 30.31 0.71 2392 + 2394 4 320.21 459.64 30.31 0.71 2393 + 2395 4 320.86 462.3 33.11 0.535 2394 + 2396 4 322.16 464.79 33.11 0.535 2395 + 2397 4 323.68 466.92 33.11 0.535 2396 + 2398 4 324.55 469.41 33.11 0.535 2397 + 2399 4 325.42 471.72 33.11 0.535 2398 + 2400 4 324.77 473.14 35.75 0.71 2399 + 2401 4 325.66 475.19 35.75 0.71 2400 + 2402 4 243.87 288.89 -24.82 0.71 2307 + 2403 4 246.04 290.84 -24.82 0.71 2402 + 2404 4 247.56 292.62 -27.58 0.71 2403 + 2405 4 249.52 294.93 -27.58 0.71 2404 + 2406 4 251.91 296.35 -27.14 0.71 2405 + 2407 4 253.21 297.41 -27.14 0.71 2406 + 2408 4 254.73 298.66 -24.03 0.71 2407 + 2409 4 256.25 299.9 -24.03 0.71 2408 + 2410 4 256.9 301.32 -24.03 0.71 2409 + 2411 4 258.21 302.39 -24.03 0.71 2410 + 2412 4 259.29 303.45 -22.58 0.71 2411 + 2413 4 260.59 305.23 -24.06 0.71 2412 + 2414 4 261.68 307.01 -22.05 0.71 2413 + 2415 4 262.98 308.6 -19.55 0.71 2414 + 2416 4 265.15 310.38 -19.55 0.71 2415 + 2417 4 268.02 311.66 -19.55 0.71 2416 + 2418 4 270.61 311.48 -19.55 0.71 2417 + 2419 4 272.34 311.12 -21.46 0.71 2418 + 2420 4 273.43 311.48 -24.34 0.71 2419 + 2421 4 274.73 313.43 -24.9 0.71 2420 + 2422 4 276.47 315.03 -23.42 0.71 2421 + 2423 4 279.07 316.63 -25.15 0.71 2422 + 2424 4 281.9 319.12 -25.15 0.71 2423 + 2425 4 285.59 321.61 -22.04 0.71 2424 + 2426 4 287.55 323.04 -19.46 0.71 2425 + 2427 4 289.5 325.17 -19.46 0.71 2426 + 2428 4 290.37 326.23 -20.76 0.71 2427 + 2429 4 291.89 328.19 -20.76 0.71 2428 + 2430 4 293.19 329.61 -20.76 0.71 2429 + 2431 4 295.15 331.74 -19.03 0.71 2430 + 2432 4 297.1 333.34 -17.14 0.71 2431 + 2433 4 300.58 335.65 -18 0.71 2432 + 2434 4 303.4 336.54 -18 0.71 2433 + 2435 4 304.44 338.06 -15.97 0.71 2434 + 2436 4 306.83 339.12 -14.74 0.71 2435 + 2437 4 309.44 340.19 -14.29 0.71 2436 + 2438 4 310.96 340.72 -13.74 0.71 2437 + 2439 4 313.78 341.97 -12.42 0.71 2438 + 2440 4 316.61 343.03 -12.42 0.71 2439 + 2441 4 318.56 343.56 -9.78 0.71 2440 + 2442 4 321.6 344.1 -9.78 0.71 2441 + 2443 4 323.11 345.44 -9.78 0.71 2442 + 2444 4 326.15 346.15 -9.78 0.71 2443 + 2445 4 328.31 347.03 -5.91 0.71 2444 + 2446 4 331.35 347.57 -5.91 0.71 2445 + 2447 4 333.95 348.81 -5.91 0.71 2446 + 2448 4 336.13 349.88 -5.91 0.71 2447 + 2449 4 338.52 350.23 -6.59 0.71 2448 + 2450 4 340.9 352.01 -3.68 0.71 2449 + 2451 4 342.5 353.26 -3.56 0.71 2450 + 2452 4 345.32 354.86 -3.56 0.71 2451 + 2453 4 347.49 354.86 -4.33 0.71 2452 + 2454 4 350.31 356.63 -2.45 0.71 2453 + 2455 4 351.83 359.12 -2.45 0.71 2454 + 2456 4 353.14 361.43 -2.17 0.71 2455 + 2457 4 353.35 363.38 -2.17 0.71 2456 + 2458 4 353.79 365.16 -1.03 0.71 2457 + 2459 4 354.22 366.94 2.1 0.71 2458 + 2460 4 353.98 368.1 2.1 0.71 2459 + 2461 4 354.19 369.7 2.34 0.71 2460 + 2462 4 355.93 372.01 2.34 0.71 2461 + 2463 4 357.45 374.32 3.12 0.71 2462 + 2464 4 358.75 376.1 5.85 0.71 2463 + 2465 4 360.49 378.23 9.16 0.71 2464 + 2466 4 362.01 380.89 11.15 0.71 2465 + 2467 4 363.1 383.02 11.15 0.71 2466 + 2468 4 365.58 386.39 10.92 0.71 2467 + 2469 4 367.1 388.88 10.92 0.71 2468 + 2470 4 367.97 391.54 10.8 0.71 2469 + 2471 4 369.49 393.14 10.8 0.71 2470 + 2472 4 370.91 395.52 12.87 0.71 2471 diff --git a/examples/Fig5_CellMultiscale/cells/CA1.morph.xml b/examples/Fig5_CellMultiscale/cells/CA1.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/Fig5_CellMultiscale/cells/CA1.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc b/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc new file mode 100644 index 0000000..6ca8c78 --- /dev/null +++ b/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc @@ -0,0 +1,6764 @@ +# Original file DHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in DHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\DHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +# NEUROMANTIC V1.6.3 (2/28/2013 12:43:57 PM): Saved to DHC-neuron.swc +1 1 0.0 0.0 0.0 8.5214 -1 +2 1 -0.05 -8.47 -0.87 8.5214 1 +3 1 0.05 8.47 0.87 8.5214 1 +4 3 4.36 -6.98 -4.24 2.275 1 +5 3 5.55 -8.63 -4.38 1.625 4 +6 3 6.29 -9.84 -4.79 1.3 5 +7 3 7.21 -11.46 -3.28 1.085 6 +8 3 7.88 -11.55 -3.27 1.085 7 +9 3 8.14 -12.19 -3.18 0.435 8 +10 3 8.15 -12.41 -3.2 0.435 9 +11 3 8.2 -12.48 -4.57 0.435 10 +12 3 8.45 -12.85 -5.05 0.435 11 +13 3 8.5 -13.21 -5.84 0.435 12 +14 3 8.52 -13.12 -6.74 0.435 13 +15 3 7.83 -13.33 -5.11 0.435 14 +16 3 7.81 -13.11 -5.09 0.435 15 +17 3 8.03 -13.11 -5.01 0.76 16 +18 3 8.07 -13.74 -5.07 0.975 17 +19 3 8.38 -15.02 -5.2 0.975 18 +20 3 8.84 -15.53 -5.24 0.975 19 +21 3 9.53 -16.4 -4.87 0.435 20 +22 3 10.63 -16.55 -4.86 0.435 21 +23 3 11.07 -16.51 -4.99 0.435 22 +24 3 11.52 -16.63 -5.59 0.435 23 +25 3 12.19 -16.76 -5.97 0.435 24 +26 3 12.66 -17.12 -6.45 0.435 25 +27 3 13.12 -17.29 -6.68 0.435 26 +28 3 13.14 -17.22 -7.35 0.435 27 +29 3 13.74 -17.39 -5.39 0.435 28 +30 3 14.63 -17.69 -6.08 0.435 29 +31 3 15.99 -18.22 -6.4 0.435 30 +32 3 17.12 -18.77 -6.73 0.435 31 +33 3 18.71 -19.93 -7.12 0.435 32 +34 3 20.11 -21.34 -7.31 0.435 33 +35 3 22.14 -22.5 -7.38 0.435 34 +36 3 23.28 -23.3 -7.44 0.435 35 +37 3 24.85 -24.28 -7.5 0.435 36 +38 3 25.78 -25.09 -7.57 0.435 37 +39 3 26.27 -25.9 -7.71 0.435 38 +40 3 27.19 -26.95 -7.49 0.435 39 +41 3 28.59 -28.63 -7.33 0.435 40 +42 3 29.96 -29.62 -7.33 0.435 41 +43 3 31.09 -30.41 -7.39 0.435 42 +44 3 33.97 -31.32 -7.41 0.435 43 +45 3 35.74 -31.85 -7.43 0.435 44 +46 3 36.9 -33.07 -7.44 0.435 45 +47 3 38.05 -34.08 -7.52 0.435 46 +48 3 39.23 -35.52 -7.64 0.435 47 +49 3 39.91 -36.13 -7.62 0.435 48 +50 3 40.4 -36.75 -7.67 0.435 49 +51 3 41.32 -37.76 -7.76 0.435 50 +52 3 42.03 -38.57 -7.89 0.435 51 +53 3 43.66 -40.19 -8.02 0.435 52 +54 3 44.56 -41.0 -8.08 0.435 53 +55 3 46.4 -42.39 -8.18 0.435 54 +56 3 47.96 -43.15 -8.23 0.435 55 +57 3 49.11 -44.17 -8.3 0.435 56 +58 3 50.04 -45.18 -8.39 0.435 57 +59 3 50.3 -45.82 -8.45 0.435 58 +60 3 50.6 -47.08 -8.57 0.435 59 +61 3 51.33 -48.33 -8.68 0.435 60 +62 3 51.57 -48.74 -8.72 0.435 61 +63 3 51.64 -49.82 -8.83 0.435 62 +64 3 51.88 -50.23 -8.87 0.435 63 +65 3 52.6 -50.99 -9.46 0.435 64 +66 3 53.31 -51.52 -10.25 0.435 65 +67 3 54.03 -52.51 -10.71 0.435 66 +68 3 54.98 -53.25 -11.45 0.435 67 +69 3 55.45 -53.84 -11.72 0.435 68 +70 3 55.93 -54.45 -11.92 0.435 69 +71 3 56.4 -54.8 -12.4 0.435 70 +72 3 56.85 -55.2 -12.43 0.435 71 +73 3 57.55 -55.81 -12.48 0.435 72 +74 3 58.34 -57.88 -12.9 0.435 73 +75 3 60.6 -58.97 -13.57 0.435 74 +76 3 61.73 -59.75 -13.69 0.435 75 +77 3 62.66 -60.25 -14.7 0.435 76 +78 3 63.34 -60.38 -15.15 0.435 77 +79 3 64.47 -61.16 -15.28 0.435 78 +80 3 64.93 -61.28 -15.96 0.435 79 +81 3 65.87 -62.29 -16.12 0.435 80 +82 3 66.34 -62.63 -16.67 0.435 81 +83 3 68.15 -63.33 -17.3 0.435 82 +84 3 69.71 -63.8 -18.06 0.435 83 +85 3 70.82 -63.89 -18.65 0.435 84 +86 3 71.91 -63.81 -18.7 0.435 85 +87 3 72.57 -64.2 -18.72 0.435 86 +88 3 74.39 -65.36 -19.02 0.435 87 +89 3 75.52 -65.91 -19.2 0.435 88 +90 3 76.46 -66.92 -19.43 0.435 89 +91 3 77.38 -67.42 -20.37 0.435 90 +92 3 78.31 -67.94 -21.16 0.435 91 +93 3 79.92 -69.31 -21.56 0.435 92 +94 3 80.83 -69.62 -22.25 0.435 93 +95 3 81.76 -70.4 -22.45 0.435 94 +96 3 82.22 -70.48 -23.51 0.435 95 +97 3 83.16 -71.24 -24.02 0.435 96 +98 3 84.75 -72.15 -24.76 0.435 97 +99 3 85.43 -72.52 -25.0 0.435 98 +100 3 85.9 -72.64 -25.69 0.435 99 +101 3 86.57 -72.79 -25.91 0.435 100 +102 3 87.47 -73.12 -26.37 0.435 101 +103 3 88.61 -73.89 -26.65 0.435 102 +104 3 89.93 -74.21 -26.95 0.435 103 +105 3 93.09 -75.67 -27.63 0.435 104 +106 3 94.85 -75.94 -28.15 0.435 105 +107 3 96.18 -76.28 -28.22 0.435 106 +108 3 97.7 -76.16 -28.41 0.435 107 +109 3 100.33 -76.4 -28.67 0.435 108 +110 3 101.47 -77.19 -28.8 0.435 109 +111 3 103.49 -78.36 -28.87 0.435 110 +112 3 104.84 -78.87 -29.42 0.435 111 +113 3 106.17 -79.21 -29.5 0.435 112 +114 3 107.69 -79.12 -29.45 0.435 113 +115 3 109.24 -79.64 -29.77 0.435 114 +116 3 111.67 -80.12 -29.84 0.435 115 +117 3 112.82 -81.12 -29.99 0.435 116 +118 3 114.22 -82.51 -30.48 0.435 117 +119 3 114.92 -83.33 -30.55 0.435 118 +120 3 115.64 -84.35 -30.71 0.435 119 +121 3 116.36 -85.37 -30.8 0.435 120 +122 3 116.85 -86.2 -30.95 0.435 121 +123 3 117.37 -87.46 -31.07 0.435 122 +124 3 118.05 -88.06 -31.12 0.435 123 +125 3 118.54 -88.87 -31.41 0.435 124 +126 3 119.26 -89.66 -31.78 0.435 125 +127 3 119.51 -90.03 -32.26 0.435 126 +128 3 120.21 -90.61 -32.61 0.435 127 +129 3 120.45 -91.23 -32.66 0.435 128 +130 3 120.92 -91.62 -32.76 0.435 129 +131 3 121.41 -92.46 -32.84 0.435 130 +132 3 121.66 -92.85 -33.03 0.435 131 +133 3 122.36 -93.45 -33.22 0.435 132 +134 3 123.27 -94.21 -33.58 0.435 133 +135 3 123.52 -94.63 -33.7 0.435 134 +136 3 124.69 -95.56 -34.44 0.435 135 +137 3 125.16 -95.96 -34.47 0.435 136 +138 3 125.6 -96.36 -34.58 0.435 137 +139 3 126.29 -96.74 -34.76 0.435 138 +140 3 126.74 -96.91 -34.83 0.435 139 +141 3 127.21 -97.3 -35.01 0.435 140 +142 3 127.66 -97.66 -35.42 0.435 141 +143 3 128.13 -98.03 -35.82 0.435 142 +144 3 128.6 -98.41 -36.0 0.435 143 +145 3 128.84 -98.55 -36.61 0.435 144 +146 3 129.53 -99.14 -36.74 0.435 145 +147 3 130.42 -99.29 -36.95 0.435 146 +148 3 130.45 -99.43 -37.57 0.435 147 +149 3 7.37 -16.37 -5.36 0.54 20 +150 3 7.01 -17.48 -5.48 0.54 149 +151 3 6.43 -18.58 -5.61 0.54 150 +152 3 5.65 -19.92 -5.77 0.54 151 +153 3 4.59 -20.41 -5.84 0.54 152 +154 3 4.39 -20.67 -5.65 0.65 153 +155 3 3.35 -21.35 -5.9 0.65 154 +156 3 2.97 -21.68 -7.22 0.65 155 +157 3 3.24 -21.69 -9.02 0.435 156 +158 3 3.3 -22.56 -9.11 0.435 157 +159 3 3.35 -23.42 -9.13 0.435 158 +160 3 2.55 -24.33 -9.24 0.435 159 +161 3 1.72 -25.03 -9.34 0.435 160 +162 3 0.89 -25.5 -9.4 0.435 161 +163 3 1.32 -25.86 -8.79 0.435 162 +164 3 1.76 -26.22 -8.17 0.435 163 +165 3 2.7 -27.25 -8.25 0.435 164 +166 3 3.62 -28.27 -8.34 0.435 165 +167 3 4.79 -29.48 -8.44 0.435 166 +168 3 5.98 -31.13 -8.58 0.435 167 +169 3 6.73 -32.59 -8.71 0.435 168 +170 3 7.49 -34.48 -8.89 0.435 169 +171 3 8.25 -36.16 -9.05 0.435 170 +172 3 8.84 -38.48 -9.27 0.435 171 +173 3 9.36 -39.74 -9.39 0.435 172 +174 3 9.88 -41.22 -9.53 0.435 173 +175 3 10.22 -43.14 -9.72 0.435 174 +176 3 10.15 -45.29 -9.95 0.435 175 +177 3 10.26 -47.0 -10.12 0.435 176 +178 3 10.79 -48.69 -10.28 0.435 177 +179 3 10.9 -50.39 -10.46 0.435 178 +180 3 11.63 -51.65 -10.57 0.435 179 +181 3 12.82 -53.08 -10.69 0.435 180 +182 3 13.38 -54.92 -11.4 0.435 181 +183 3 13.71 -56.38 -11.84 0.435 182 +184 3 14.0 -57.37 -12.69 0.435 183 +185 3 14.11 -58.82 -13.21 0.435 184 +186 3 14.45 -60.73 -13.48 0.435 185 +187 3 14.96 -62.0 -13.6 0.435 186 +188 3 15.07 -63.71 -13.78 0.435 187 +189 3 15.17 -65.21 -13.93 0.435 188 +190 3 15.86 -66.02 -14.0 0.435 189 +191 3 16.38 -67.28 -14.11 0.435 190 +192 3 17.11 -68.31 -14.2 0.435 191 +193 3 17.59 -69.15 -14.28 0.435 192 +194 3 17.6 -69.32 -14.3 0.435 193 +195 3 17.43 -69.37 -15.89 0.435 194 +196 3 17.24 -69.83 -15.94 0.435 195 +197 3 16.82 -70.07 -15.9 0.435 196 +198 3 16.39 -70.1 -15.91 0.435 197 +199 3 16.23 -70.96 -16.01 0.435 198 +200 3 16.26 -71.39 -16.12 0.435 199 +201 3 16.31 -72.24 -16.28 0.435 200 +202 3 16.41 -73.74 -16.43 0.435 201 +203 3 16.7 -74.8 -16.54 0.435 202 +204 3 16.97 -75.64 -16.62 0.435 203 +205 3 17.24 -76.49 -16.7 0.435 204 +206 3 17.26 -76.91 -16.82 0.435 205 +207 3 17.31 -77.54 -16.95 0.435 206 +208 3 17.34 -77.97 -17.08 0.435 207 +209 3 17.38 -78.6 -17.14 0.435 208 +210 3 17.43 -79.23 -17.28 0.435 209 +211 3 17.06 -80.33 -17.4 0.435 210 +212 3 16.68 -81.22 -17.5 0.435 211 +213 3 16.28 -81.67 -17.56 0.435 212 +214 3 16.34 -82.75 -17.67 0.435 213 +215 3 16.39 -83.39 -17.73 0.435 214 +216 3 16.45 -84.46 -17.84 0.435 215 +217 3 16.51 -85.31 -17.93 0.435 216 +218 3 16.8 -86.37 -18.03 0.435 217 +219 3 16.84 -87.02 -18.1 0.435 218 +220 3 16.88 -87.66 -18.16 0.435 219 +221 3 16.7 -88.31 -18.23 0.435 220 +222 3 16.98 -88.89 -18.82 0.435 221 +223 3 17.2 -88.88 -18.73 0.435 222 +224 3 17.23 -89.3 -18.93 0.435 223 +225 3 17.69 -89.67 -19.26 0.435 224 +226 3 17.94 -90.08 -19.37 0.435 225 +227 3 17.98 -90.47 -19.79 0.435 226 +228 3 18.43 -90.61 -20.24 0.435 227 +229 3 18.93 -91.37 -21.06 0.435 228 +230 3 19.19 -91.95 -21.5 0.435 229 +231 3 19.45 -92.34 -21.9 0.435 230 +232 3 20.13 -92.44 -22.5 0.435 231 +233 3 20.38 -92.81 -22.99 0.435 232 +234 3 20.64 -93.13 -23.92 0.435 233 +235 3 21.11 -93.49 -24.47 0.435 234 +236 3 21.36 -93.9 -24.51 0.435 235 +237 3 21.61 -94.26 -24.99 0.435 236 +238 3 22.1 -94.85 -25.34 0.435 237 +239 3 22.13 -95.48 -25.49 0.435 238 +240 3 22.6 -95.86 -25.89 0.435 239 +241 3 23.1 -96.41 -26.46 0.435 240 +242 3 23.35 -97.04 -26.59 0.435 241 +243 3 23.61 -97.62 -27.1 0.435 242 +244 3 23.88 -98.25 -27.24 0.435 243 +245 3 24.13 -98.85 -27.45 0.435 244 +246 3 24.18 -99.49 -27.58 0.435 245 +247 3 24.67 -100.04 -28.31 0.435 246 +248 3 24.92 -100.4 -28.86 0.435 247 +249 3 25.22 -101.44 -29.12 0.435 248 +250 3 25.51 -102.23 -29.79 0.435 249 +251 3 25.97 -102.62 -29.9 0.435 250 +252 3 26.21 -102.75 -30.59 0.435 251 +253 3 26.71 -103.54 -31.11 0.435 252 +254 3 27.2 -104.3 -31.78 0.435 253 +255 3 27.46 -104.93 -31.84 0.435 254 +256 3 27.73 -105.52 -32.26 0.435 255 +257 3 28.61 -105.68 -32.34 0.435 256 +258 3 29.09 -106.03 -32.89 0.435 257 +259 3 29.78 -106.59 -33.23 0.435 258 +260 3 30.24 -106.74 -33.69 0.435 259 +261 3 31.18 -107.46 -34.58 0.435 260 +262 3 31.42 -107.59 -35.26 0.435 261 +263 3 32.77 -108.1 -35.81 0.435 262 +264 3 33.22 -108.29 -35.82 0.435 263 +265 3 33.91 -108.34 -36.94 0.435 264 +266 3 34.15 -108.47 -37.7 0.435 265 +267 3 34.38 -108.39 -38.29 0.435 266 +268 3 35.06 -108.76 -38.61 0.435 267 +269 3 35.74 -109.15 -38.63 0.435 268 +270 3 37.1 -109.63 -39.41 0.435 269 +271 3 37.99 -109.77 -39.62 0.435 270 +272 3 38.45 -110.11 -40.25 0.435 271 +273 3 38.9 -110.3 -40.34 0.435 272 +274 3 39.15 -110.7 -40.37 0.435 273 +275 3 39.4 -111.33 -40.43 0.435 274 +276 3 39.46 -112.19 -40.52 0.435 275 +277 3 39.54 -112.71 -41.85 0.435 276 +278 3 39.78 -113.09 -42.11 0.435 277 +279 3 39.83 -113.4 -43.27 0.435 278 +280 3 39.85 -113.57 -43.81 0.435 279 +281 3 39.04 -114.25 -43.98 0.435 280 +282 3 38.86 -114.41 -44.76 0.435 281 +283 3 38.45 -114.58 -45.54 0.435 282 +284 3 38.5 -114.9 -46.55 0.435 283 +285 3 38.53 -114.78 -47.67 0.435 284 +286 3 38.12 -115.21 -47.94 0.435 285 +287 3 37.73 -115.62 -48.45 0.435 286 +288 3 37.76 -116.04 -48.56 0.435 287 +289 3 38.01 -116.2 -49.11 0.435 288 +290 3 38.03 -116.35 -49.64 0.435 289 +291 3 37.63 -116.75 -50.15 0.435 290 +292 3 38.12 -117.35 -50.43 0.435 291 +293 3 38.15 -117.77 -50.54 0.435 292 +294 3 38.62 -118.36 -50.89 0.435 293 +295 3 40.77 -117.78 -50.93 0.435 294 +296 3 41.66 -118.16 -50.95 0.435 295 +297 3 42.34 -118.76 -51.0 0.435 296 +298 3 43.03 -119.38 -51.05 0.435 297 +299 3 43.52 -120.2 -51.12 0.435 298 +300 3 44.0 -120.82 -51.17 0.435 299 +301 3 44.47 -121.43 -51.22 0.435 300 +302 3 44.91 -121.4 -51.21 0.435 301 +303 3 46.2 -121.32 -51.17 0.435 302 +304 3 46.85 -121.28 -51.15 0.435 303 +305 3 47.28 -121.25 -51.14 0.435 304 +306 3 48.32 -120.55 -51.04 0.435 305 +307 3 49.37 -120.05 -50.96 0.435 306 +308 3 50.2 -119.37 -50.87 0.435 307 +309 3 50.85 -119.28 -51.23 0.435 308 +310 3 51.28 -119.25 -51.29 0.435 309 +311 3 52.18 -119.37 -51.66 0.435 310 +312 3 53.04 -119.32 -51.64 0.435 311 +313 3 53.92 -119.48 -51.7 0.435 312 +314 3 55.44 -119.59 -51.68 0.435 313 +315 3 56.53 -119.75 -51.67 0.435 314 +316 3 56.98 -119.93 -51.68 0.435 315 +317 3 57.67 -120.29 -52.0 0.435 316 +318 3 58.36 -120.61 -52.62 0.435 317 +319 3 59.04 -121.22 -52.67 0.435 318 +320 3 59.75 -121.78 -53.09 0.435 319 +321 3 60.44 -122.38 -53.14 0.435 320 +322 3 60.89 -122.78 -53.24 0.435 321 +323 3 61.14 -123.19 -53.27 0.435 322 +324 3 61.63 -124.03 -53.35 0.435 323 +325 3 61.88 -124.44 -53.47 0.435 324 +326 3 62.12 -124.84 -53.57 0.435 325 +327 3 62.37 -125.23 -53.83 0.435 326 +328 3 62.83 -125.62 -53.94 0.435 327 +329 3 63.49 -125.8 -54.01 0.435 328 +330 3 63.95 -126.19 -54.04 0.435 329 +331 3 64.4 -126.12 -54.48 0.435 330 +332 3 64.83 -126.07 -54.69 0.435 331 +333 3 65.28 -126.01 -54.98 0.435 332 +334 3 16.54 -88.97 -18.31 0.435 221 +335 3 16.16 -90.07 -18.43 0.435 334 +336 3 16.21 -90.92 -18.52 0.435 335 +337 3 15.45 -92.27 -18.67 0.435 336 +338 3 15.98 -93.94 -18.83 0.435 337 +339 3 16.27 -95.01 -18.94 0.435 338 +340 3 16.3 -95.45 -18.98 0.435 339 +341 3 16.59 -96.44 -19.61 0.435 340 +342 3 15.61 -97.73 -20.37 0.435 341 +343 3 15.72 -97.83 -20.38 0.435 342 +344 3 16.49 -97.63 -20.86 0.325 343 +345 3 16.73 -98.26 -20.85 0.325 344 +346 3 16.76 -98.43 -21.24 0.325 345 +347 3 16.78 -98.35 -22.07 0.325 346 +348 3 17.03 -98.46 -23.05 0.325 347 +349 3 17.29 -98.53 -24.26 0.325 348 +350 3 17.34 -99.17 -24.4 0.325 349 +351 3 17.38 -99.52 -25.11 0.325 350 +352 3 17.44 -100.09 -25.92 0.325 351 +353 3 17.73 -100.78 -27.49 0.325 352 +354 3 17.99 -101.13 -28.05 0.325 353 +355 3 18.03 -101.53 -28.47 0.325 354 +356 3 18.27 -101.19 -29.56 0.325 355 +357 3 18.31 -101.57 -30.05 0.325 356 +358 3 18.35 -102.17 -30.56 0.325 357 +359 3 17.62 -103.88 -31.36 0.325 358 +360 3 17.67 -104.72 -31.51 0.325 359 +361 3 17.74 -105.78 -31.85 0.325 360 +362 3 17.82 -106.54 -32.84 0.325 361 +363 3 18.1 -107.1 -33.56 0.325 362 +364 3 18.15 -107.68 -34.22 0.325 363 +365 3 18.63 -108.29 -34.35 0.325 364 +366 3 18.88 -108.69 -34.54 0.325 365 +367 3 19.12 -109.31 -34.6 0.325 366 +368 3 19.38 -109.94 -34.73 0.325 367 +369 3 19.63 -110.33 -34.99 0.325 368 +370 3 19.72 -111.62 -35.13 0.325 369 +371 3 19.8 -112.89 -35.33 0.325 370 +372 3 19.87 -113.96 -35.44 0.325 371 +373 3 20.12 -114.59 -35.49 0.325 372 +374 3 20.17 -115.45 -35.58 0.325 373 +375 3 20.42 -115.87 -35.62 0.325 374 +376 3 20.49 -116.93 -35.73 0.325 375 +377 3 20.53 -117.58 -35.79 0.325 376 +378 3 20.78 -117.99 -35.91 0.325 377 +379 3 20.81 -118.39 -36.1 0.325 378 +380 3 20.86 -119.02 -36.39 0.325 379 +381 3 20.04 -119.7 -36.63 0.325 380 +382 3 20.13 -120.95 -37.06 0.325 381 +383 3 20.28 -123.02 -37.95 0.325 382 +384 3 20.76 -123.6 -38.44 0.325 383 +385 3 20.82 -124.41 -38.98 0.325 384 +386 3 21.32 -125.22 -39.28 0.325 385 +387 3 21.48 -127.57 -39.59 0.325 386 +388 3 21.13 -129.1 -39.76 0.325 387 +389 3 21.41 -129.93 -39.92 0.325 388 +390 3 21.92 -130.95 -40.23 0.325 389 +391 3 21.98 -131.76 -40.77 0.325 390 +392 3 22.02 -132.37 -41.06 0.325 391 +393 3 22.08 -132.99 -41.43 0.325 392 +394 3 22.11 -133.63 -41.49 0.325 393 +395 3 22.17 -134.24 -41.85 0.325 394 +396 3 22.21 -134.86 -42.22 0.325 395 +397 3 22.28 -135.66 -42.82 0.325 396 +398 3 22.34 -136.47 -43.36 0.325 397 +399 3 22.4 -137.32 -43.52 0.325 398 +400 3 22.04 -138.12 -44.37 0.325 399 +401 3 22.17 -140.04 -44.64 0.325 400 +402 3 22.25 -141.04 -45.41 0.325 401 +403 3 22.3 -141.68 -45.56 0.325 402 +404 3 22.36 -142.74 -45.82 0.325 403 +405 3 22.03 -144.05 -46.03 0.325 404 +406 3 22.08 -144.9 -46.12 0.325 405 +407 3 22.34 -145.24 -46.9 0.325 406 +408 3 22.38 -145.62 -47.47 0.325 407 +409 3 22.41 -146.25 -47.61 0.325 408 +410 3 22.66 -146.67 -47.64 0.325 409 +411 3 22.72 -147.51 -47.88 0.325 410 +412 3 22.75 -147.92 -48.07 0.325 411 +413 3 23.02 -148.53 -48.28 0.325 412 +414 3 23.09 -149.33 -48.96 0.325 413 +415 3 22.74 -150.6 -49.49 0.325 414 +416 3 23.5 -152.26 -49.79 0.325 415 +417 3 23.56 -153.09 -50.1 0.325 416 +418 3 24.1 -154.54 -50.54 0.325 417 +419 3 24.82 -155.53 -51.0 0.325 418 +420 3 25.76 -156.24 -51.96 0.325 419 +421 3 26.72 -156.9 -53.43 0.325 420 +422 3 27.19 -157.23 -54.13 0.325 421 +423 3 27.66 -157.62 -54.31 0.325 422 +424 3 27.91 -157.68 -55.67 0.325 423 +425 3 28.4 -158.01 -56.52 0.325 424 +426 3 29.27 -157.89 -57.1 0.325 425 +427 3 29.94 -157.77 -57.82 0.325 426 +428 3 30.87 -158.02 -59.02 0.325 427 +429 3 31.76 -158.35 -59.49 0.325 428 +430 3 15.84 -97.92 -20.39 0.435 343 +431 3 15.47 -99.02 -20.58 0.435 430 +432 3 15.74 -99.62 -21.02 0.435 431 +433 3 15.79 -100.21 -21.53 0.435 432 +434 3 15.87 -101.24 -22.09 0.435 433 +435 3 15.93 -102.07 -22.39 0.435 434 +436 3 16.17 -102.48 -22.43 0.435 435 +437 3 16.23 -103.34 -22.6 0.435 436 +438 3 16.26 -103.77 -22.64 0.435 437 +439 3 16.74 -104.59 -22.78 0.435 438 +440 3 16.41 -106.11 -22.95 0.435 439 +441 3 15.87 -107.87 -23.14 0.435 440 +442 3 15.91 -108.27 -23.42 0.435 441 +443 3 15.97 -108.84 -24.15 0.435 442 +444 3 16.04 -109.64 -24.83 0.435 443 +445 3 16.08 -110.01 -25.4 0.435 444 +446 3 16.13 -110.6 -26.06 0.435 445 +447 3 16.2 -111.39 -26.74 0.435 446 +448 3 16.25 -112.22 -26.97 0.435 447 +449 3 16.75 -112.77 -27.7 0.435 448 +450 3 16.79 -113.14 -28.34 0.435 449 +451 3 16.81 -113.58 -28.39 0.435 450 +452 3 17.31 -114.61 -28.55 0.435 451 +453 3 17.34 -115.04 -28.68 0.435 452 +454 3 17.41 -115.8 -29.58 0.435 453 +455 3 18.15 -117.04 -29.84 0.435 454 +456 3 18.2 -117.61 -30.5 0.435 455 +457 3 18.48 -118.41 -31.03 0.435 456 +458 3 19.64 -119.41 -31.19 0.435 457 +459 3 19.69 -120.27 -31.28 0.435 458 +460 3 19.75 -120.6 -32.35 0.435 459 +461 3 19.38 -121.68 -32.55 0.435 460 +462 3 19.42 -122.06 -33.05 0.435 461 +463 3 19.05 -122.91 -33.44 0.435 462 +464 3 19.13 -123.95 -33.85 0.435 463 +465 3 19.2 -124.75 -34.54 0.435 464 +466 3 19.48 -125.77 -35.01 0.435 465 +467 3 19.55 -126.6 -35.39 0.435 466 +468 3 19.84 -127.64 -35.57 0.435 467 +469 3 20.17 -129.33 -35.89 0.435 468 +470 3 20.44 -130.14 -36.19 0.435 469 +471 3 20.49 -130.75 -36.71 0.435 470 +472 3 20.99 -131.58 -36.86 0.435 471 +473 3 21.01 -131.78 -36.95 0.435 472 +474 3 21.06 -132.62 -37.04 0.435 473 +475 3 21.11 -132.95 -38.13 0.435 474 +476 3 21.17 -133.49 -39.16 0.435 475 +477 3 21.21 -133.86 -39.8 0.435 476 +478 3 21.51 -134.33 -41.43 0.435 477 +479 3 21.57 -135.14 -42.03 0.435 478 +480 3 21.63 -135.7 -42.84 0.435 479 +481 3 21.68 -136.33 -43.06 0.435 480 +482 3 21.72 -136.69 -43.78 0.435 481 +483 3 21.13 -137.56 -44.03 0.435 482 +484 3 21.39 -138.2 -44.09 0.435 483 +485 3 21.48 -139.48 -44.22 0.435 484 +486 3 21.51 -139.89 -44.49 0.435 485 +487 3 21.55 -140.24 -45.27 0.435 486 +488 3 21.23 -141.71 -46.04 0.435 487 +489 3 20.47 -143.47 -46.24 0.435 488 +490 3 19.27 -145.04 -46.5 0.435 489 +491 3 18.52 -146.8 -46.78 0.435 490 +492 3 16.95 -149.26 -47.07 0.435 491 +493 3 16.61 -150.79 -47.24 0.435 492 +494 3 15.85 -152.55 -47.44 0.435 493 +495 3 15.49 -153.65 -47.56 0.435 494 +496 3 15.13 -154.97 -47.71 0.435 495 +497 3 15.21 -156.25 -47.84 0.435 496 +498 3 14.41 -157.16 -47.95 0.435 497 +499 3 13.66 -158.92 -48.15 0.435 498 +500 3 11.6 -160.56 -48.37 0.435 499 +501 3 9.96 -162.16 -48.57 0.435 500 +502 3 8.77 -163.96 -48.79 0.435 501 +503 3 8.22 -165.49 -48.96 0.435 502 +504 3 7.1 -168.37 -49.28 0.435 503 +505 3 5.65 -172.47 -50.49 0.435 504 +506 3 4.45 -173.98 -51.2 0.435 505 +507 3 2.96 -177.21 -52.48 0.435 506 +508 3 1.37 -179.44 -52.9 0.435 507 +509 3 0.17 -180.72 -53.96 0.435 508 +510 3 -1.46 -182.09 -54.29 0.435 509 +511 3 -2.47 -183.23 -54.43 0.435 510 +512 3 -3.95 -183.96 -54.55 0.435 511 +513 3 -5.18 -184.89 -54.75 0.435 512 +514 3 -6.45 -185.39 -54.83 0.435 513 +515 3 17.85 -69.54 -14.54 0.435 194 +516 3 18.1 -70.12 -15.04 0.435 515 +517 3 18.36 -70.75 -15.1 0.435 516 +518 3 17.99 -71.63 -15.28 0.435 517 +519 3 17.21 -72.96 -15.44 0.435 518 +520 3 17.26 -73.81 -15.52 0.435 519 +521 3 17.3 -74.46 -15.59 0.435 520 +522 3 17.75 -74.86 -15.62 0.435 521 +523 3 18.21 -75.06 -15.63 0.435 522 +524 3 18.65 -75.24 -15.64 0.435 523 +525 3 19.33 -75.63 -15.66 0.435 524 +526 3 19.83 -76.65 -15.98 0.435 525 +527 3 20.35 -77.91 -16.18 0.435 526 +528 3 20.86 -78.94 -16.34 0.435 527 +529 3 20.94 -80.22 -16.47 0.435 528 +530 3 21.02 -81.52 -16.6 0.435 529 +531 3 21.28 -82.15 -16.66 0.435 530 +532 3 21.59 -83.63 -16.81 0.435 531 +533 3 22.11 -84.89 -16.93 0.435 532 +534 3 23.54 -86.95 -17.11 0.435 533 +535 3 24.47 -87.97 -17.19 0.435 534 +536 3 25.18 -89.0 -17.28 0.435 535 +537 3 25.29 -90.5 -17.51 0.435 536 +538 3 25.4 -92.2 -17.69 0.435 537 +539 3 25.45 -93.07 -17.78 0.435 538 +540 3 25.79 -94.98 -17.97 0.435 539 +541 3 25.9 -96.69 -18.14 0.435 540 +542 3 26.39 -97.73 -18.24 0.435 541 +543 3 27.1 -97.72 -19.72 0.435 542 +544 3 27.98 -98.1 -19.73 0.435 543 +545 3 28.66 -98.48 -19.76 0.435 544 +546 3 29.13 -99.12 -19.66 0.435 545 +547 3 29.41 -99.95 -19.74 0.435 546 +548 3 29.9 -101.0 -19.84 0.435 547 +549 3 30.37 -101.4 -19.87 0.435 548 +550 3 30.64 -102.46 -19.97 0.435 549 +551 3 30.91 -103.07 -20.26 0.435 550 +552 3 31.41 -104.1 -20.51 0.435 551 +553 3 31.72 -105.34 -20.85 0.435 552 +554 3 32.0 -106.18 -21.08 0.435 553 +555 3 32.29 -107.2 -21.48 0.435 554 +556 3 32.31 -107.63 -21.52 0.435 555 +557 3 33.25 -108.64 -21.61 0.435 556 +558 3 33.71 -109.26 -21.66 0.435 557 +559 3 34.2 -109.59 -22.44 0.435 558 +560 3 35.38 -111.01 -22.64 0.435 559 +561 3 35.44 -112.09 -22.75 0.435 560 +562 3 35.47 -112.51 -22.86 0.435 561 +563 3 35.97 -113.55 -22.95 0.435 562 +564 3 36.06 -114.84 -23.09 0.435 563 +565 3 36.54 -115.67 -23.16 0.435 564 +566 3 37.22 -116.05 -23.18 0.435 565 +567 3 37.92 -116.67 -23.23 0.435 566 +568 3 39.1 -118.32 -23.37 0.435 567 +569 3 39.39 -119.36 -23.48 0.435 568 +570 3 39.91 -120.84 -23.62 0.435 569 +571 3 39.96 -121.48 -23.68 0.435 570 +572 3 40.69 -122.7 -24.02 0.435 571 +573 3 40.79 -124.2 -24.24 0.435 572 +574 3 41.3 -125.45 -24.44 0.435 573 +575 3 41.8 -126.29 -24.52 0.435 574 +576 3 42.09 -127.54 -24.79 0.435 575 +577 3 42.35 -128.17 -24.85 0.435 576 +578 3 42.42 -129.24 -25.03 0.435 577 +579 3 42.45 -129.66 -25.07 0.435 578 +580 3 43.15 -130.48 -25.14 0.435 579 +581 3 43.61 -130.88 -25.17 0.435 580 +582 3 43.87 -131.51 -25.23 0.435 581 +583 3 44.12 -131.92 -25.27 0.435 582 +584 3 44.85 -133.18 -25.38 0.435 583 +585 3 45.31 -133.78 -25.43 0.435 584 +586 3 45.82 -134.83 -25.53 0.435 585 +587 3 45.84 -135.26 -25.57 0.435 586 +588 3 46.1 -135.88 -25.63 0.435 587 +589 3 46.35 -136.3 -25.67 0.435 588 +590 3 46.64 -137.58 -25.79 0.435 589 +591 3 46.91 -138.42 -25.87 0.435 590 +592 3 47.02 -139.91 -26.1 0.435 591 +593 3 47.7 -140.51 -26.15 0.435 592 +594 3 48.42 -141.54 -26.24 0.435 593 +595 3 48.9 -142.37 -26.32 0.435 594 +596 3 49.19 -143.43 -26.42 0.435 595 +597 3 49.45 -144.07 -26.48 0.435 596 +598 3 49.71 -144.7 -26.54 0.435 597 +599 3 49.74 -145.33 -26.6 0.435 598 +600 3 50.02 -146.18 -26.68 0.435 599 +601 3 50.28 -146.81 -26.74 0.435 600 +602 3 50.55 -147.66 -26.82 0.435 601 +603 3 50.85 -148.93 -26.95 0.435 602 +604 3 50.89 -149.57 -27.01 0.435 603 +605 3 50.94 -150.43 -27.1 0.435 604 +606 3 51.22 -151.28 -27.18 0.435 605 +607 3 51.96 -152.73 -27.31 0.435 606 +608 3 52.44 -153.56 -27.39 0.435 607 +609 3 52.7 -154.19 -27.45 0.435 608 +610 3 52.96 -154.53 -28.3 0.435 609 +611 3 53.44 -155.08 -28.95 0.435 610 +612 3 53.93 -155.42 -29.58 0.435 611 +613 3 54.39 -155.8 -29.83 0.435 612 +614 3 54.64 -156.21 -29.86 0.435 613 +615 3 55.73 -156.35 -30.0 0.435 614 +616 3 56.48 -157.81 -30.14 0.435 615 +617 3 57.44 -159.26 -30.26 0.435 616 +618 3 57.91 -159.86 -30.31 0.435 617 +619 3 58.41 -160.6 -31.36 0.435 618 +620 3 59.36 -161.6 -31.67 0.435 619 +621 3 59.84 -162.17 -32.1 0.435 620 +622 3 60.09 -162.79 -32.23 0.435 621 +623 3 60.84 -163.75 -33.06 0.435 622 +624 3 61.29 -164.14 -33.17 0.435 623 +625 3 61.54 -164.55 -33.21 0.435 624 +626 3 61.77 -164.49 -33.72 0.435 625 +627 3 62.25 -165.08 -34.07 0.435 626 +628 3 62.49 -165.21 -34.76 0.435 627 +629 3 62.98 -165.78 -35.18 0.435 628 +630 3 63.0 -165.68 -36.15 0.435 629 +631 3 63.47 -166.04 -36.71 0.435 630 +632 3 64.15 -166.41 -36.88 0.435 631 +633 3 64.82 -166.8 -36.9 0.435 632 +634 3 65.28 -166.98 -36.98 0.435 633 +635 3 65.96 -167.37 -37.01 0.435 634 +636 3 66.39 -167.55 -37.01 0.435 635 +637 3 27.14 -99.2 -18.37 0.435 542 +638 3 27.21 -100.26 -18.55 0.435 637 +639 3 28.24 -101.99 -20.21 0.435 638 +640 3 27.9 -103.51 -20.38 0.435 639 +641 3 27.98 -104.79 -20.51 0.435 640 +642 3 28.07 -106.08 -20.71 0.435 641 +643 3 27.29 -107.42 -20.87 0.435 642 +644 3 26.91 -108.29 -20.97 0.435 643 +645 3 26.94 -108.73 -21.01 0.435 644 +646 3 27.19 -109.35 -21.07 0.435 645 +647 3 27.49 -110.36 -21.62 0.435 646 +648 3 27.75 -110.71 -22.25 0.435 647 +649 3 28.02 -111.56 -22.33 0.435 648 +650 3 28.3 -112.62 -22.52 0.435 649 +651 3 28.04 -115.2 -22.79 0.435 650 +652 3 28.11 -116.0 -23.55 0.435 651 +653 3 28.21 -117.48 -23.78 0.435 652 +654 3 28.51 -118.98 -23.92 0.435 653 +655 3 28.81 -120.25 -24.05 0.435 654 +656 3 28.91 -121.69 -24.27 0.435 655 +657 3 28.98 -122.77 -24.38 0.435 656 +658 3 29.26 -123.57 -24.75 0.435 657 +659 3 29.33 -124.38 -25.37 0.435 658 +660 3 28.99 -125.9 -25.68 0.435 659 +661 3 29.28 -126.92 -26.16 0.435 660 +662 3 28.94 -127.97 -26.65 0.435 661 +663 3 28.56 -129.07 -26.78 0.435 662 +664 3 27.79 -130.41 -26.93 0.435 663 +665 3 27.44 -131.93 -27.17 0.435 664 +666 3 27.53 -133.2 -27.38 0.435 665 +667 3 27.18 -134.51 -27.52 0.435 666 +668 3 27.25 -135.59 -27.63 0.435 667 +669 3 27.01 -138.39 -27.93 0.435 668 +670 3 27.07 -139.45 -28.19 0.435 669 +671 3 27.18 -140.92 -28.71 0.435 670 +672 3 27.26 -142.21 -28.84 0.435 671 +673 3 26.88 -143.08 -28.94 0.435 672 +674 3 26.51 -144.17 -29.13 0.435 673 +675 3 26.59 -145.25 -29.24 0.435 674 +676 3 26.21 -146.13 -29.34 0.435 675 +677 3 26.47 -146.72 -29.78 0.435 676 +678 3 26.72 -147.12 -29.97 0.435 677 +679 3 26.98 -147.75 -30.03 0.435 678 +680 3 27.23 -148.38 -30.08 0.435 679 +681 3 27.73 -149.21 -30.23 0.435 680 +682 3 28.21 -150.04 -30.3 0.435 681 +683 3 28.51 -151.08 -30.55 0.435 682 +684 3 28.14 -152.15 -30.91 0.435 683 +685 3 28.21 -152.93 -31.66 0.435 684 +686 3 28.97 -154.57 -32.19 0.435 685 +687 3 29.28 -155.61 -32.59 0.435 686 +688 3 29.34 -156.41 -33.13 0.435 687 +689 3 29.42 -157.69 -33.33 0.435 688 +690 3 29.71 -158.74 -33.51 0.435 689 +691 3 29.77 -159.3 -34.32 0.435 690 +692 3 29.84 -160.11 -34.93 0.435 691 +693 3 29.45 -160.72 -35.53 0.435 692 +694 3 29.52 -161.79 -35.71 0.435 693 +695 3 29.58 -162.64 -35.88 0.435 694 +696 3 29.84 -163.27 -35.94 0.435 695 +697 3 29.49 -164.57 -36.15 0.435 696 +698 3 29.52 -165.0 -36.19 0.435 697 +699 3 29.19 -166.49 -36.74 0.435 698 +700 3 29.29 -167.98 -36.96 0.435 699 +701 3 29.34 -168.57 -37.54 0.435 700 +702 3 29.39 -169.41 -37.71 0.435 701 +703 3 29.47 -170.49 -37.82 0.435 702 +704 3 29.13 -171.75 -38.41 0.435 703 +705 3 29.2 -172.79 -38.74 0.435 704 +706 3 29.93 -174.05 -38.85 0.435 705 +707 3 30.43 -174.58 -39.73 0.435 706 +708 3 30.94 -175.59 -40.12 0.435 707 +709 3 31.18 -176.0 -40.23 0.435 708 +710 3 31.7 -176.7 -41.58 0.435 709 +711 3 31.75 -177.3 -42.09 0.435 710 +712 3 31.99 -177.7 -42.2 0.435 711 +713 3 32.23 -178.12 -42.23 0.435 712 +714 3 32.71 -178.72 -42.52 0.435 713 +715 3 32.76 -179.33 -42.8 0.435 714 +716 3 33.22 -179.51 -42.89 0.435 715 +717 3 33.52 -180.76 -43.31 0.435 716 +718 3 33.99 -181.08 -44.01 0.435 717 +719 3 34.43 -180.99 -44.66 0.435 718 +720 3 35.13 -181.58 -44.86 0.435 719 +721 3 35.6 -181.97 -45.04 0.435 720 +722 3 36.07 -182.57 -45.09 0.435 721 +723 3 37.41 -183.12 -45.34 0.435 722 +724 3 38.31 -183.22 -45.94 0.435 723 +725 3 40.08 -183.75 -46.02 0.435 724 +726 3 41.89 -184.9 -46.48 0.435 725 +727 3 42.37 -185.21 -47.25 0.435 726 +728 3 42.86 -185.8 -47.61 0.435 727 +729 3 43.1 -186.2 -47.86 0.435 728 +730 3 43.58 -186.81 -47.91 0.435 729 +731 3 43.85 -187.35 -48.87 0.435 730 +732 3 44.12 -187.97 -49.01 0.435 731 +733 3 1.19 -26.21 -10.83 0.435 163 +734 3 1.24 -27.08 -10.84 0.435 733 +735 3 1.32 -28.35 -10.97 0.435 734 +736 3 1.4 -29.65 -11.1 0.435 735 +737 3 1.71 -30.91 -11.22 0.435 736 +738 3 1.81 -32.63 -11.4 0.435 737 +739 3 1.92 -34.13 -11.55 0.435 738 +740 3 2.02 -35.84 -11.72 0.435 739 +741 3 2.14 -37.77 -11.92 0.435 740 +742 3 2.24 -39.27 -12.07 0.435 741 +743 3 2.76 -40.53 -12.19 0.435 742 +744 3 3.28 -41.79 -12.31 0.435 743 +745 3 3.62 -43.91 -12.52 0.435 744 +746 3 3.88 -44.56 -12.51 0.435 745 +747 3 4.35 -45.15 -12.78 0.435 746 +748 3 4.64 -45.7 -13.67 0.435 747 +749 3 4.9 -46.25 -14.39 0.435 748 +750 3 5.19 -47.3 -14.56 0.435 749 +751 3 5.25 -48.16 -14.65 0.435 750 +752 3 5.3 -49.01 -14.82 0.435 751 +753 3 4.96 -50.32 -14.96 0.435 752 +754 3 5.0 -50.96 -15.1 0.435 753 +755 3 5.51 -51.96 -15.57 0.435 754 +756 3 5.76 -52.6 -15.63 0.435 755 +757 3 6.23 -52.94 -16.18 0.435 756 +758 3 6.77 -54.62 -16.42 0.435 757 +759 3 7.04 -55.24 -16.55 0.435 758 +760 3 7.32 -56.09 -16.71 0.435 759 +761 3 7.56 -56.47 -16.97 0.435 760 +762 3 8.09 -57.95 -17.11 0.435 761 +763 3 8.14 -58.59 -17.17 0.435 762 +764 3 8.17 -59.22 -17.32 0.435 763 +765 3 7.79 -60.11 -17.42 0.435 764 +766 3 7.82 -60.54 -17.46 0.435 765 +767 3 8.1 -61.34 -17.84 0.435 766 +768 3 8.67 -63.46 -18.12 0.435 767 +769 3 9.0 -65.16 -18.28 0.435 768 +770 3 8.68 -66.89 -18.47 0.435 769 +771 3 8.71 -67.3 -18.74 0.435 770 +772 3 9.19 -67.89 -19.09 0.435 771 +773 3 9.45 -68.23 -19.73 0.435 772 +774 3 9.7 -68.85 -20.01 0.435 773 +775 3 9.97 -69.47 -20.14 0.435 774 +776 3 10.21 -69.89 -20.18 0.435 775 +777 3 10.47 -70.5 -20.39 0.435 776 +778 3 10.77 -71.48 -21.24 0.435 777 +779 3 11.56 -73.57 -21.51 0.435 778 +780 3 11.39 -74.44 -21.68 0.435 779 +781 3 11.94 -76.12 -21.84 0.435 780 +782 3 12.29 -78.01 -22.33 0.435 781 +783 3 12.38 -79.26 -22.83 0.435 782 +784 3 12.45 -80.29 -23.24 0.435 783 +785 3 13.21 -81.96 -23.54 0.435 784 +786 3 13.51 -83.01 -23.64 0.435 785 +787 3 13.78 -83.85 -23.8 0.435 786 +788 3 13.81 -84.28 -23.84 0.435 787 +789 3 14.08 -85.11 -24.0 0.435 788 +790 3 14.35 -85.95 -24.15 0.435 789 +791 3 14.39 -86.34 -24.57 0.435 790 +792 3 14.47 -87.1 -25.55 0.435 791 +793 3 14.49 -87.27 -26.09 0.435 792 +794 3 14.53 -87.91 -26.16 0.435 793 +795 3 14.78 -88.01 -27.15 0.435 794 +796 3 15.04 -88.65 -27.21 0.435 795 +797 3 15.54 -89.68 -27.3 0.435 796 +798 3 16.0 -90.09 -27.26 0.435 797 +799 3 17.33 -90.44 -27.26 0.435 798 +800 3 18.92 -91.08 -28.49 0.435 799 +801 3 19.13 -91.08 -28.42 0.435 800 +802 3 19.37 -91.28 -28.43 0.435 801 +803 3 19.81 -91.46 -28.51 0.435 802 +804 3 20.65 -90.97 -28.52 0.435 803 +805 3 21.09 -90.89 -29.03 0.435 804 +806 3 22.36 -90.13 -29.22 0.435 805 +807 3 23.24 -90.25 -29.66 0.435 806 +808 3 23.94 -90.56 -30.5 0.435 807 +809 3 24.38 -90.74 -30.59 0.435 808 +810 3 24.87 -91.04 -31.52 0.435 809 +811 3 25.55 -91.42 -31.76 0.435 810 +812 3 26.45 -92.0 -31.88 0.435 811 +813 3 26.7 -92.14 -32.41 0.435 812 +814 3 28.04 -92.71 -32.44 0.435 813 +815 3 28.72 -93.09 -32.46 0.435 814 +816 3 29.85 -93.61 -33.09 0.435 815 +817 3 30.55 -94.19 -33.44 0.435 816 +818 3 31.43 -94.34 -33.51 0.435 817 +819 3 31.89 -94.7 -33.84 0.435 818 +820 3 32.12 -94.9 -33.93 0.435 819 +821 3 32.36 -94.84 -34.37 0.435 820 +822 3 32.6 -94.99 -34.98 0.435 821 +823 3 33.06 -95.11 -35.59 0.435 822 +824 3 33.53 -95.45 -36.21 0.435 823 +825 3 34.25 -95.93 -37.45 0.435 824 +826 3 35.62 -96.88 -37.97 0.435 825 +827 3 36.73 -97.22 -38.13 0.435 826 +828 3 37.66 -97.74 -38.92 0.435 827 +829 3 38.37 -98.27 -39.63 0.435 828 +830 3 39.27 -98.33 -40.59 0.435 829 +831 3 39.95 -98.72 -40.54 0.435 830 +832 3 40.17 -98.66 -41.05 0.435 831 +833 3 40.19 -98.55 -42.1 0.435 832 +834 3 40.89 -98.84 -43.1 0.435 833 +835 3 41.56 -98.99 -43.4 0.435 834 +836 3 42.03 -99.13 -43.86 0.435 835 +837 3 42.48 -99.52 -43.95 0.435 836 +838 3 43.15 -99.69 -43.96 0.435 837 +839 3 43.58 -99.88 -43.97 0.435 838 +840 3 44.52 -100.65 -44.41 0.435 839 +841 3 45.17 -100.6 -44.39 0.435 840 +842 3 45.64 -101.22 -44.51 0.435 841 +843 3 46.34 -102.03 -44.58 0.435 842 +844 3 46.82 -102.4 -44.99 0.435 843 +845 3 47.94 -102.94 -45.32 0.435 844 +846 3 48.39 -103.12 -45.4 0.435 845 +847 3 49.28 -103.5 -45.41 0.435 846 +848 3 49.71 -103.47 -45.4 0.435 847 +849 3 50.37 -103.37 -45.91 0.435 848 +850 3 50.8 -103.35 -45.89 0.435 849 +851 3 51.26 -103.25 -46.55 0.435 850 +852 3 51.96 -103.25 -48.34 0.435 851 +853 3 52.4 -103.19 -48.7 0.435 852 +854 3 52.84 -103.11 -49.21 0.435 853 +855 3 53.5 -103.03 -49.49 0.435 854 +856 3 53.96 -102.91 -50.37 0.435 855 +857 3 54.84 -103.02 -50.88 0.435 856 +858 3 55.29 -102.93 -51.47 0.435 857 +859 3 55.96 -102.83 -52.11 0.435 858 +860 3 56.41 -102.96 -52.65 0.435 859 +861 3 57.08 -103.12 -52.72 0.435 860 +862 3 57.3 -103.1 -52.79 0.435 861 +863 3 58.16 -103.01 -53.14 0.435 862 +864 3 59.06 -103.11 -53.73 0.435 863 +865 3 59.5 -103.04 -54.16 0.435 864 +866 3 60.15 -103.0 -54.22 0.435 865 +867 3 60.8 -102.94 -54.35 0.435 866 +868 3 60.83 -102.78 -55.85 0.435 867 +869 3 61.08 -102.65 -57.03 0.435 868 +870 3 61.53 -102.56 -57.61 0.435 869 +871 3 62.21 -102.94 -57.71 0.435 870 +872 3 63.12 -103.5 -58.12 0.435 871 +873 3 64.02 -103.55 -59.09 0.435 872 +874 3 64.91 -103.7 -59.23 0.435 873 +875 3 65.36 -103.87 -59.46 0.435 874 +876 3 66.04 -104.26 -59.49 0.435 875 +877 3 66.71 -104.37 -60.01 0.435 876 +878 3 67.4 -104.7 -60.64 0.435 877 +879 3 68.3 -105.05 -61.02 0.435 878 +880 3 68.53 -105.23 -61.12 0.435 879 +881 3 68.77 -105.43 -61.13 0.435 880 +882 3 0.29 -26.4 -9.51 0.435 162 +883 3 -0.93 -27.34 -9.64 0.435 882 +884 3 -1.38 -27.94 -8.27 0.435 883 +885 3 -1.79 -28.43 -7.88 0.435 884 +886 3 -2.19 -28.86 -8.17 0.435 885 +887 3 -2.59 -29.26 -8.82 0.435 886 +888 3 -2.53 -29.84 -9.48 0.435 887 +889 3 -2.92 -30.23 -10.13 0.435 888 +890 3 -3.32 -30.68 -10.26 0.435 889 +891 3 -3.67 -31.43 -11.7 0.435 890 +892 3 -3.13 -32.61 -12.5 0.435 891 +893 3 -3.1 -33.26 -12.56 0.435 892 +894 3 -3.04 -34.11 -12.72 0.435 893 +895 3 -3.41 -35.0 -12.82 0.435 894 +896 3 -4.65 -36.14 -12.97 0.435 895 +897 3 -5.8 -38.58 -13.25 0.435 896 +898 3 -6.98 -40.36 -13.53 0.435 897 +899 3 -8.19 -41.44 -14.43 0.435 898 +900 3 -9.82 -43.0 -15.01 0.435 899 +901 3 -12.12 -44.19 -15.49 0.435 900 +902 3 -13.3 -45.69 -16.34 0.435 901 +903 3 -14.53 -46.62 -16.62 0.435 902 +904 3 -15.3 -47.89 -17.45 0.435 903 +905 3 -16.54 -48.53 -18.37 0.435 904 +906 3 -18.31 -51.16 -19.29 0.435 905 +907 3 -19.43 -53.77 -19.89 0.435 906 +908 3 -20.98 -56.14 -21.08 0.435 907 +909 3 -22.19 -57.71 -21.34 0.435 908 +910 3 -23.77 -59.88 -22.35 0.435 909 +911 3 -25.82 -61.73 -22.67 0.435 910 +912 3 -27.89 -63.13 -22.87 0.435 911 +913 3 -28.48 -63.75 -23.7 0.435 912 +914 3 -29.05 -65.07 -23.77 0.435 913 +915 3 -29.42 -66.17 -23.89 0.435 914 +916 3 -30.22 -67.06 -24.31 0.435 915 +917 3 -30.58 -67.91 -24.63 0.435 916 +918 3 -31.39 -68.78 -25.11 0.435 917 +919 3 -31.81 -68.74 -25.8 0.435 918 +920 3 -32.15 -69.73 -26.97 0.435 919 +921 3 -33.77 -71.56 -27.2 0.435 920 +922 3 -34.1 -72.55 -28.21 0.435 921 +923 3 -35.7 -74.58 -28.53 0.435 922 +924 3 -36.05 -75.31 -30.12 0.435 923 +925 3 -37.0 -77.52 -30.38 0.435 924 +926 3 -38.2 -79.1 -30.57 0.435 925 +927 3 -40.22 -81.37 -30.85 0.435 926 +928 3 -41.35 -83.44 -32.67 0.435 927 +929 3 -42.99 -84.82 -32.93 0.435 928 +930 3 -42.66 -85.7 -34.74 0.435 929 +931 3 -43.7 -86.41 -34.84 0.435 930 +932 3 -44.9 -87.99 -35.03 0.435 931 +933 3 -45.93 -88.91 -35.08 0.435 932 +934 3 -45.88 -89.77 -35.17 0.435 933 +935 3 -47.05 -91.47 -36.28 0.435 934 +936 3 -48.65 -93.25 -36.87 0.435 935 +937 3 -49.03 -93.83 -37.77 0.435 936 +938 3 -49.36 -95.35 -38.01 0.435 937 +939 3 -50.16 -96.19 -38.87 0.435 938 +940 3 -50.49 -97.43 -39.61 0.435 939 +941 3 -50.44 -97.76 -40.62 0.435 940 +942 3 -50.82 -98.39 -41.08 0.435 941 +943 3 -50.75 -98.91 -42.41 0.435 942 +944 3 -51.12 -99.7 -43.4 0.435 943 +945 3 -51.46 -100.75 -43.89 0.435 944 +946 3 -51.15 -101.45 -45.4 0.435 945 +947 3 1.92 -21.67 -8.0 0.54 156 +948 3 1.3 -21.83 -8.86 0.54 947 +949 3 0.89 -21.74 -10.07 0.54 948 +950 3 -0.54 -22.67 -10.35 0.54 949 +951 3 -1.97 -24.01 -10.9 0.435 950 +952 3 -3.24 -24.51 -11.06 0.435 951 +953 3 -4.44 -25.28 -12.75 0.435 952 +954 3 -6.7 -27.13 -13.06 0.435 953 +955 3 -7.53 -27.79 -13.53 0.435 954 +956 3 -8.55 -28.47 -14.0 0.435 955 +957 3 -9.18 -28.93 -14.06 0.435 956 +958 3 -9.63 -28.48 -14.48 0.435 957 +959 3 -10.24 -28.65 -15.41 0.435 958 +960 3 -10.2 -28.69 -17.08 0.435 959 +961 3 -10.58 -29.36 -17.08 0.435 960 +962 3 -11.2 -29.81 -17.45 0.435 961 +963 3 -12.0 -30.67 -18.01 0.435 962 +964 3 -12.74 -32.12 -19.07 0.435 963 +965 3 -13.54 -32.94 -20.01 0.435 964 +966 3 -13.65 -34.57 -20.18 0.435 965 +967 3 -13.84 -35.31 -19.58 0.325 966 +968 3 -13.6 -35.72 -19.61 0.325 967 +969 3 -13.35 -35.6 -20.73 0.435 968 +970 3 -13.31 -36.24 -20.8 0.435 969 +971 3 -13.28 -36.66 -20.84 0.435 970 +972 3 -13.22 -37.74 -20.95 0.435 971 +973 3 -13.19 -38.15 -21.14 0.435 972 +974 3 -13.16 -38.31 -21.61 0.435 973 +975 3 -13.07 -39.6 -21.74 0.435 974 +976 3 -13.42 -40.89 -22.04 0.435 975 +977 3 -13.34 -41.96 -22.21 0.435 976 +978 3 -13.29 -42.81 -22.38 0.435 977 +979 3 -13.67 -43.69 -22.55 0.435 978 +980 3 -13.6 -44.75 -22.81 0.435 979 +981 3 -13.51 -45.73 -23.74 0.435 980 +982 3 -13.44 -46.79 -24.0 0.435 981 +983 3 -13.38 -47.36 -24.67 0.435 982 +984 3 -13.35 -47.76 -25.01 0.435 983 +985 3 -13.3 -48.35 -25.66 0.435 984 +986 3 -13.03 -48.96 -25.87 0.435 985 +987 3 -12.95 -50.24 -26.0 0.435 986 +988 3 -12.88 -51.04 -26.61 0.435 987 +989 3 -12.82 -52.11 -26.79 0.435 988 +990 3 -12.77 -52.45 -27.66 0.435 989 +991 3 -12.72 -53.09 -27.8 0.435 990 +992 3 -12.64 -53.85 -28.86 0.435 991 +993 3 -12.61 -54.26 -28.97 0.435 992 +994 3 -12.55 -55.09 -29.36 0.435 993 +995 3 -12.3 -55.51 -29.47 0.435 994 +996 3 -12.27 -56.13 -29.61 0.435 995 +997 3 -12.16 -57.63 -29.76 0.435 996 +998 3 -12.51 -58.89 -30.5 0.435 997 +999 3 -12.45 -59.46 -31.25 0.435 998 +1000 3 -12.37 -60.47 -31.87 0.435 999 +1001 3 -12.31 -61.32 -32.04 0.435 1000 +1002 3 -11.96 -62.93 -33.09 0.435 1001 +1003 3 -12.28 -64.64 -33.58 0.435 1002 +1004 3 -12.19 -65.64 -34.43 0.435 1003 +1005 3 -11.93 -65.98 -35.15 0.435 1004 +1006 3 -11.88 -66.83 -35.3 0.435 1005 +1007 3 -11.6 -67.65 -35.68 0.435 1006 +1008 3 -11.56 -68.06 -35.87 0.435 1007 +1009 3 -11.03 -69.24 -36.74 0.435 1008 +1010 3 -11.0 -69.89 -36.8 0.435 1009 +1011 3 -10.93 -70.42 -37.91 0.435 1010 +1012 3 -10.87 -71.27 -38.0 0.435 1011 +1013 3 -11.22 -72.58 -38.23 0.435 1012 +1014 3 -11.59 -73.13 -39.42 0.435 1013 +1015 3 -11.54 -73.78 -39.48 0.435 1014 +1016 3 -11.48 -74.32 -40.44 0.435 1015 +1017 3 -11.43 -74.95 -40.66 0.435 1016 +1018 3 -11.41 -75.38 -40.7 0.435 1017 +1019 3 -11.78 -76.22 -41.25 0.435 1018 +1020 3 -11.5 -77.27 -41.42 0.435 1019 +1021 3 -11.44 -78.09 -41.81 0.435 1020 +1022 3 -11.4 -78.47 -42.38 0.435 1021 +1023 3 -11.34 -78.82 -43.24 0.435 1022 +1024 3 -11.29 -79.42 -43.68 0.435 1023 +1025 3 -11.25 -79.74 -44.62 0.435 1024 +1026 3 -11.21 -80.16 -44.81 0.435 1025 +1027 3 -11.18 -80.55 -45.3 0.435 1026 +1028 3 -11.1 -81.07 -46.55 0.435 1027 +1029 3 -10.85 -81.69 -46.61 0.435 1028 +1030 3 -10.58 -82.24 -47.57 0.435 1029 +1031 3 -10.33 -82.63 -47.75 0.435 1030 +1032 3 -10.06 -82.96 -48.61 0.435 1031 +1033 3 -10.02 -83.33 -49.17 0.435 1032 +1034 3 -9.54 -83.94 -49.31 0.435 1033 +1035 3 -9.26 -84.22 -50.69 0.435 1034 +1036 3 -9.02 -84.63 -50.87 0.435 1035 +1037 3 -7.86 -85.83 -51.12 0.435 1036 +1038 3 -6.91 -86.76 -52.02 0.435 1037 +1039 3 -6.65 -87.16 -52.21 0.435 1038 +1040 3 -5.51 -87.86 -53.16 0.435 1039 +1041 3 -5.04 -88.02 -53.38 0.435 1040 +1042 3 -4.78 -88.32 -54.54 0.435 1041 +1043 3 -3.87 -88.91 -54.65 0.435 1042 +1044 3 -2.92 -89.61 -55.69 0.435 1043 +1045 3 -1.81 -90.18 -55.87 0.435 1044 +1046 3 -1.36 -90.36 -55.88 0.435 1045 +1047 3 -0.47 -90.73 -55.97 0.435 1046 +1048 3 -0.04 -90.7 -55.96 0.435 1047 +1049 3 -14.34 -33.86 -20.12 0.435 966 +1050 3 -15.59 -34.79 -20.32 0.435 1049 +1051 3 -17.03 -35.45 -21.18 0.435 1050 +1052 3 -17.43 -36.09 -21.4 0.435 1051 +1053 3 -19.06 -37.71 -21.61 0.435 1052 +1054 3 -19.44 -38.37 -21.77 0.435 1053 +1055 3 -18.95 -39.16 -22.29 0.435 1054 +1056 3 -18.89 -39.68 -23.47 0.435 1055 +1057 3 -19.69 -40.57 -23.73 0.435 1056 +1058 3 -20.74 -41.07 -23.81 0.435 1057 +1059 3 -22.16 -42.12 -25.08 0.435 1058 +1060 3 -23.17 -42.97 -25.79 0.435 1059 +1061 3 -23.96 -43.76 -27.03 0.435 1060 +1062 3 -24.35 -44.14 -27.83 0.435 1061 +1063 3 -25.12 -44.94 -29.14 0.435 1062 +1064 3 -25.92 -45.78 -29.85 0.435 1063 +1065 3 -26.67 -47.29 -30.47 0.435 1064 +1066 3 -27.48 -47.59 -32.17 0.435 1065 +1067 3 -28.26 -48.4 -33.33 0.435 1066 +1068 3 -30.44 -50.98 -35.01 0.435 1067 +1069 3 -31.67 -51.85 -35.81 0.435 1068 +1070 3 -33.3 -53.45 -36.08 0.435 1069 +1071 3 -34.3 -54.0 -37.67 0.435 1070 +1072 3 -35.92 -55.57 -38.25 0.435 1071 +1073 3 -36.72 -56.69 -38.46 0.435 1072 +1074 3 -37.27 -57.67 -39.85 0.435 1073 +1075 3 -38.9 -59.01 -40.48 0.435 1074 +1076 3 -39.67 -60.25 -41.53 0.435 1075 +1077 3 -40.46 -61.34 -41.97 0.435 1076 +1078 3 -41.65 -62.59 -43.26 0.435 1077 +1079 3 -41.78 -63.34 -44.54 0.435 1078 +1080 3 -42.79 -64.47 -44.76 0.435 1079 +1081 3 -43.48 -66.53 -46.35 0.435 1080 +1082 3 -44.25 -68.08 -46.53 0.435 1081 +1083 3 -45.19 -69.45 -46.69 0.435 1082 +1084 3 -46.21 -69.76 -48.41 0.11 1083 +1085 3 -46.16 -70.05 -49.79 0.435 1084 +1086 3 -46.52 -70.41 -50.81 0.435 1085 +1087 3 -47.32 -71.5 -51.32 0.435 1086 +1088 3 -48.1 -72.31 -52.32 0.435 1087 +1089 3 -48.87 -73.56 -53.31 0.435 1088 +1090 3 -49.65 -74.65 -53.81 0.435 1089 +1091 3 -50.69 -75.31 -54.35 0.435 1090 +1092 3 -51.51 -75.99 -54.68 0.435 1091 +1093 3 -53.16 -76.87 -55.56 0.435 1092 +1094 3 -54.83 -77.55 -56.34 0.435 1093 +1095 3 -56.47 -78.89 -57.05 0.435 1094 +1096 3 -56.41 -79.43 -58.15 0.435 1095 +1097 3 -57.64 -80.35 -58.36 0.435 1096 +1098 3 -58.43 -81.42 -59.01 0.435 1097 +1099 3 -58.77 -82.73 -59.24 0.435 1098 +1100 3 -59.17 -83.39 -59.31 0.435 1099 +1101 3 -59.11 -84.02 -59.6 0.435 1100 +1102 3 -59.49 -84.35 -60.78 0.435 1101 +1103 3 -59.87 -85.44 -60.97 0.435 1102 +1104 3 -59.79 -85.95 -62.31 0.435 1103 +1105 3 -45.01 -69.81 -47.02 0.435 1083 +1106 3 -45.76 -71.04 -48.22 0.435 1105 +1107 3 -46.57 -71.93 -48.56 0.435 1106 +1108 3 -46.9 -73.45 -48.8 0.435 1107 +1109 3 -46.61 -73.94 -50.2 0.435 1108 +1110 3 -47.8 -75.72 -50.57 0.435 1109 +1111 3 -48.97 -77.73 -50.72 0.435 1110 +1112 3 -49.89 -80.15 -50.99 0.435 1111 +1113 3 -51.1 -81.45 -51.84 0.435 1112 +1114 3 -51.44 -82.51 -52.4 0.435 1113 +1115 3 -52.65 -84.08 -52.59 0.435 1114 +1116 3 -52.6 -84.93 -52.76 0.435 1115 +1117 3 -53.8 -86.26 -53.3 0.435 1116 +1118 3 -54.76 -87.72 -54.46 0.435 1117 +1119 3 -55.72 -89.71 -54.69 0.435 1118 +1120 3 -56.13 -89.89 -54.87 0.435 1119 +1121 3 -56.75 -90.58 -54.95 0.435 1120 +1122 3 -56.64 -91.74 -56.2 0.435 1121 +1123 3 -57.01 -92.61 -56.53 0.435 1122 +1124 3 -56.95 -93.45 -56.76 0.435 1123 +1125 3 -56.89 -94.29 -57.07 0.435 1124 +1126 3 -56.82 -95.07 -57.83 0.435 1125 +1127 3 -57.44 -95.54 -57.96 0.435 1126 +1128 3 -58.24 -96.66 -58.1 0.435 1127 +1129 3 -59.06 -97.34 -58.27 0.435 1128 +1130 3 -60.27 -98.7 -58.51 0.435 1129 +1131 3 -60.64 -99.57 -58.69 0.435 1130 +1132 3 -61.42 -100.9 -59.07 0.435 1131 +1133 3 -61.78 -101.7 -59.91 0.435 1132 +1134 3 -62.57 -102.81 -60.12 0.435 1133 +1135 3 -63.38 -103.94 -60.25 0.435 1134 +1136 3 -63.29 -105.17 -60.91 0.435 1135 +1137 3 -63.2 -106.17 -61.69 0.435 1136 +1138 3 -63.16 -106.55 -62.18 0.435 1137 +1139 3 -63.11 -107.19 -62.32 0.435 1138 +1140 3 -62.85 -107.82 -62.45 0.435 1139 +1141 3 -63.59 -109.78 -62.75 0.435 1140 +1142 3 -63.96 -110.63 -63.15 0.435 1141 +1143 3 -63.9 -111.46 -63.61 0.435 1142 +1144 3 -63.85 -112.04 -64.27 0.435 1143 +1145 3 -63.82 -112.46 -64.31 0.435 1144 +1146 3 -63.79 -112.88 -64.44 0.435 1145 +1147 3 -63.51 -113.44 -65.16 0.435 1146 +1148 3 -63.43 -114.71 -65.44 0.435 1147 +1149 3 -64.59 -116.93 -65.78 0.435 1148 +1150 3 -64.94 -118.24 -65.92 0.435 1149 +1151 3 -64.89 -119.09 -66.08 0.435 1150 +1152 3 -64.81 -120.12 -66.57 0.435 1151 +1153 3 -64.75 -120.98 -66.65 0.435 1152 +1154 3 -64.7 -121.56 -67.32 0.435 1153 +1155 3 -64.4 -122.83 -67.51 0.435 1154 +1156 3 -64.37 -123.23 -67.77 0.435 1155 +1157 3 -64.09 -124.05 -68.0 0.435 1156 +1158 3 -63.83 -124.69 -68.06 0.435 1157 +1159 3 -63.54 -125.73 -68.31 0.435 1158 +1160 3 -62.83 -126.51 -68.76 0.435 1159 +1161 3 -62.31 -127.49 -69.52 0.435 1160 +1162 3 -62.06 -127.88 -69.71 0.435 1161 +1163 3 -61.59 -128.49 -69.91 0.435 1162 +1164 3 -61.56 -128.88 -70.25 0.435 1163 +1165 3 -61.53 -129.3 -70.37 0.435 1164 +1166 3 -61.26 -129.65 -71.08 0.435 1165 +1167 3 -60.79 -129.98 -71.85 0.435 1166 +1168 3 -60.97 -130.41 -71.9 0.435 1167 +1169 3 -60.92 -130.76 -72.77 0.435 1168 +1170 3 -61.77 -131.24 -72.84 0.435 1169 +1171 3 -61.75 -131.45 -72.93 0.435 1170 +1172 3 -62.09 -131.96 -73.08 0.435 1171 +1173 3 -61.83 -132.58 -73.2 0.435 1172 +1174 3 -61.78 -132.89 -74.36 0.435 1173 +1175 3 -61.51 -133.23 -75.07 0.435 1174 +1176 3 -61.46 -133.78 -76.04 0.435 1175 +1177 3 -61.38 -134.56 -76.87 0.435 1176 +1178 3 -61.11 -134.86 -77.95 0.435 1177 +1179 3 -60.64 -135.46 -78.22 0.435 1178 +1180 3 -60.37 -136.08 -78.36 0.435 1179 +1181 3 -60.14 -136.5 -78.4 0.435 1180 +1182 3 -60.1 -136.91 -78.66 0.435 1181 +1183 3 -59.84 -137.53 -78.8 0.435 1182 +1184 3 8.32 -12.11 -2.64 1.085 8 +1185 3 8.51 -12.22 -1.51 1.085 1184 +1186 3 9.85 -13.04 -1.04 0.65 1185 +1187 3 10.53 -13.65 -1.09 0.65 1186 +1188 3 11.44 -14.25 -0.98 0.65 1187 +1189 3 11.86 -14.57 0.27 0.65 1188 +1190 3 12.51 -14.78 0.57 0.65 1189 +1191 3 12.93 -15.07 1.52 0.65 1190 +1192 3 13.59 -15.27 1.89 0.65 1191 +1193 3 14.04 -15.97 2.58 0.65 1192 +1194 3 14.75 -16.78 2.52 0.65 1193 +1195 3 14.77 -17.22 2.55 0.65 1194 +1196 3 14.87 -17.58 2.52 0.65 1195 +1197 3 14.42 -16.6 1.17 0.65 1196 +1198 3 13.99 -16.86 1.28 0.65 1197 +1199 3 14.06 -17.12 -0.31 0.65 1198 +1200 3 14.3 -17.32 -0.4 0.54 1199 +1201 3 14.16 -18.62 -0.53 0.54 1200 +1202 3 14.22 -19.47 -0.62 0.54 1201 +1203 3 14.25 -20.12 -0.69 0.54 1202 +1204 3 13.88 -21.0 -0.79 0.54 1203 +1205 3 13.07 -21.92 -0.83 0.54 1204 +1206 3 12.23 -22.61 -0.92 0.54 1205 +1207 3 11.87 -23.19 -1.9 0.54 1206 +1208 3 11.94 -23.7 -3.22 0.54 1207 +1209 3 11.56 -24.09 -3.96 0.54 1208 +1210 3 11.64 -24.84 -5.01 0.54 1209 +1211 3 11.7 -25.65 -5.54 0.54 1210 +1212 3 11.34 -26.71 -6.11 0.54 1211 +1213 3 10.13 -28.06 -6.35 0.54 1212 +1214 3 10.21 -29.06 -7.21 0.54 1213 +1215 3 9.41 -29.7 -7.83 0.54 1214 +1216 3 9.03 -30.28 -8.72 0.54 1215 +1217 3 9.07 -30.62 -9.59 0.54 1216 +1218 3 9.11 -31.01 -10.08 0.54 1217 +1219 3 7.78 -33.11 -11.61 0.54 1218 +1220 3 7.79 -33.32 -11.63 0.54 1219 +1221 3 7.81 -34.05 -10.88 0.54 1220 +1222 3 7.39 -34.0 -11.64 0.54 1221 +1223 3 6.59 -34.35 -12.97 0.54 1222 +1224 3 6.2 -34.68 -14.22 0.54 1223 +1225 3 6.28 -35.45 -15.2 0.54 1224 +1226 3 6.78 -35.32 -24.67 0.54 1225 +1227 3 7.25 -35.94 -24.72 0.54 1226 +1228 3 7.55 -37.21 -24.85 0.54 1227 +1229 3 7.16 -37.88 -24.93 0.54 1228 +1230 3 7.22 -37.9 -26.74 0.54 1229 +1231 3 7.25 -38.03 -27.66 0.54 1230 +1232 3 7.08 -38.69 -27.73 0.54 1231 +1233 3 6.89 -39.1 -28.08 0.435 1232 +1234 3 6.09 -40.0 -28.19 0.435 1233 +1235 3 5.95 -41.32 -28.25 0.435 1234 +1236 3 5.55 -41.72 -28.68 0.435 1235 +1237 3 5.18 -42.83 -28.8 0.435 1236 +1238 3 4.82 -43.41 -29.7 0.435 1237 +1239 3 4.46 -44.23 -30.4 0.435 1238 +1240 3 4.51 -44.55 -31.55 0.435 1239 +1241 3 4.56 -44.87 -32.64 0.435 1240 +1242 3 4.62 -45.42 -33.6 0.435 1241 +1243 3 4.24 -46.27 -33.93 0.435 1242 +1244 3 4.28 -46.64 -34.57 0.435 1243 +1245 3 3.95 -47.64 -35.66 0.435 1244 +1246 3 4.01 -48.7 -35.85 0.435 1245 +1247 3 4.06 -49.04 -36.77 0.435 1246 +1248 3 4.12 -49.62 -37.44 0.435 1247 +1249 3 4.19 -50.43 -37.9 0.435 1248 +1250 3 4.24 -51.06 -38.12 0.54 1249 +1251 3 4.29 -51.93 -38.12 0.54 1250 +1252 3 4.3 -52.12 -38.44 0.54 1251 +1253 3 3.94 -52.18 -40.27 0.54 1252 +1254 3 3.99 -52.71 -41.31 0.54 1253 +1255 3 4.07 -53.48 -42.28 0.54 1254 +1256 3 3.73 -54.17 -44.17 0.54 1255 +1257 3 3.41 -55.12 -45.79 0.54 1256 +1258 3 3.08 -56.09 -47.18 0.54 1257 +1259 3 3.13 -56.43 -48.04 0.54 1258 +1260 3 3.21 -56.88 -49.96 0.54 1259 +1261 3 3.27 -56.89 -51.93 0.54 1260 +1262 3 3.32 -57.2 -53.09 0.54 1261 +1263 3 2.93 -57.81 -53.77 0.54 1262 +1264 3 2.57 -58.38 -54.88 0.54 1263 +1265 3 2.23 -59.39 -55.83 0.54 1264 +1266 3 2.28 -60.24 -55.99 0.54 1265 +1267 3 2.37 -60.94 -57.49 0.54 1266 +1268 3 2.65 -61.23 -58.88 0.54 1267 +1269 3 2.71 -61.48 -60.63 0.54 1268 +1270 3 2.81 -62.14 -62.66 0.54 1269 +1271 3 2.44 -62.46 -63.83 0.54 1270 +1272 3 2.5 -63.31 -64.14 0.54 1271 +1273 3 2.53 -63.73 -64.19 0.54 1272 +1274 3 2.18 -64.23 -65.89 0.54 1273 +1275 3 2.23 -65.09 -65.98 0.54 1274 +1276 3 2.71 -65.71 -66.03 0.54 1275 +1277 3 2.98 -66.26 -66.77 0.54 1276 +1278 3 3.05 -66.78 -68.1 0.54 1277 +1279 3 3.09 -67.43 -68.16 0.54 1278 +1280 3 3.14 -68.02 -68.53 0.54 1279 +1281 3 3.21 -68.84 -69.06 0.54 1280 +1282 3 2.8 -69.29 -69.2 0.54 1281 +1283 3 2.41 -69.69 -69.77 0.54 1282 +1284 3 2.04 -70.31 -70.38 0.54 1283 +1285 3 2.09 -70.87 -71.26 0.54 1284 +1286 3 2.14 -71.19 -72.35 0.54 1285 +1287 3 2.21 -71.98 -72.95 0.54 1286 +1288 3 1.44 -73.0 -74.13 0.54 1287 +1289 3 1.5 -73.26 -75.82 0.54 1288 +1290 3 1.59 -74.0 -77.03 0.54 1289 +1291 3 1.22 -74.57 -78.14 0.54 1290 +1292 3 1.26 -75.21 -78.21 0.54 1291 +1293 3 0.89 -75.54 -79.38 0.54 1292 +1294 3 0.95 -76.11 -80.2 0.54 1293 +1295 3 0.54 -76.56 -80.32 0.54 1294 +1296 3 0.61 -77.6 -80.73 0.54 1295 +1297 3 0.67 -78.19 -81.39 0.54 1296 +1298 3 0.71 -78.8 -81.69 0.54 1297 +1299 3 0.76 -79.44 -81.82 0.54 1298 +1300 3 1.02 -80.06 -81.96 0.54 1299 +1301 3 1.5 -80.63 -82.53 0.54 1300 +1302 3 1.78 -81.47 -82.61 0.54 1301 +1303 3 1.87 -82.96 -82.84 0.54 1302 +1304 3 2.12 -83.37 -82.88 0.54 1303 +1305 3 2.61 -84.17 -83.25 0.54 1304 +1306 3 3.32 -84.96 -83.62 0.54 1305 +1307 3 4.04 -85.73 -84.13 0.54 1306 +1308 3 4.73 -86.33 -84.25 0.54 1307 +1309 3 6.52 -87.29 -84.31 0.54 1308 +1310 3 7.42 -87.67 -84.33 0.54 1309 +1311 3 8.31 -88.03 -84.42 0.54 1310 +1312 3 9.43 -88.61 -84.46 0.54 1311 +1313 3 10.76 -88.96 -84.46 0.54 1312 +1314 3 11.42 -89.13 -84.46 0.54 1313 +1315 3 12.28 -89.07 -84.44 0.54 1314 +1316 3 12.9 -88.61 -84.37 0.54 1315 +1317 3 13.54 -88.58 -84.36 0.54 1316 +1318 3 7.3 -38.67 -27.79 0.54 1232 +1319 3 8.0 -39.48 -27.86 0.54 1318 +1320 3 9.16 -40.13 -29.26 0.54 1319 +1321 3 9.84 -40.51 -29.36 0.54 1320 +1322 3 10.54 -40.82 -30.27 0.54 1321 +1323 3 11.03 -41.62 -30.57 0.54 1322 +1324 3 11.98 -42.31 -31.68 0.54 1323 +1325 3 12.23 -42.17 -32.93 0.54 1324 +1326 3 12.91 -42.52 -33.41 0.54 1325 +1327 3 13.55 -42.48 -33.39 0.54 1326 +1328 3 14.65 -42.34 -34.1 0.54 1327 +1329 3 15.58 -43.13 -34.24 0.54 1328 +1330 3 16.28 -43.39 -35.45 0.54 1329 +1331 3 16.74 -43.79 -35.48 0.54 1330 +1332 3 17.21 -44.14 -36.04 0.54 1331 +1333 3 17.9 -44.42 -37.11 0.54 1332 +1334 3 18.62 -45.2 -37.62 0.54 1333 +1335 3 18.89 -45.26 -38.9 0.54 1334 +1336 3 19.39 -46.04 -39.57 0.54 1335 +1337 3 20.11 -46.46 -41.26 0.54 1336 +1338 3 21.29 -47.68 -41.43 0.54 1337 +1339 3 21.78 -47.92 -43.03 0.54 1338 +1340 3 22.25 -48.52 -43.23 0.54 1339 +1341 3 22.99 -49.5 -43.84 0.54 1340 +1342 3 23.7 -50.24 -44.58 0.54 1341 +1343 3 24.4 -50.84 -44.78 0.54 1342 +1344 3 25.1 -51.65 -44.91 0.54 1343 +1345 3 26.05 -52.61 -45.59 0.54 1344 +1346 3 27.18 -53.39 -45.65 0.54 1345 +1347 3 27.89 -54.21 -45.72 0.54 1346 +1348 3 28.39 -54.96 -46.62 0.54 1347 +1349 3 29.33 -55.97 -46.77 0.54 1348 +1350 3 30.26 -56.99 -46.85 0.54 1349 +1351 3 31.22 -57.92 -47.83 0.54 1350 +1352 3 31.7 -58.74 -47.97 0.54 1351 +1353 3 31.97 -59.37 -48.03 0.54 1352 +1354 3 32.25 -60.15 -48.64 0.54 1353 +1355 3 32.5 -60.52 -49.13 0.54 1354 +1356 3 32.99 -61.35 -49.27 0.54 1355 +1357 3 33.25 -61.74 -49.61 0.54 1356 +1358 3 33.49 -62.11 -50.02 0.54 1357 +1359 3 33.52 -62.53 -50.13 0.54 1358 +1360 3 33.79 -63.37 -50.3 0.54 1359 +1361 3 33.81 -63.54 -50.68 0.54 1360 +1362 3 15.23 -17.86 2.72 0.65 1196 +1363 3 15.26 -18.31 2.82 0.65 1362 +1364 3 15.74 -18.94 2.92 0.65 1363 +1365 3 16.41 -19.35 3.12 0.65 1364 +1366 3 16.84 -19.57 3.41 0.65 1365 +1367 3 18.16 -20.22 4.13 0.65 1366 +1368 3 18.83 -20.39 4.13 0.65 1367 +1369 3 19.7 -20.81 4.56 0.65 1368 +1370 3 21.0 -21.01 5.17 0.65 1369 +1371 3 22.34 -21.59 5.21 0.65 1370 +1372 3 23.65 -21.71 5.23 0.65 1371 +1373 3 24.79 -22.51 5.18 0.65 1372 +1374 3 25.71 -23.3 5.12 0.65 1373 +1375 3 26.39 -23.92 5.07 0.65 1374 +1376 3 27.29 -24.3 5.13 0.65 1375 +1377 3 28.58 -24.22 5.17 0.65 1376 +1378 3 29.47 -24.37 5.18 0.65 1377 +1379 3 30.55 -24.53 5.19 0.65 1378 +1380 3 31.88 -24.88 5.18 0.65 1379 +1381 3 32.55 -25.26 5.16 0.65 1380 +1382 3 33.22 -25.66 5.28 0.65 1381 +1383 3 33.86 -25.94 7.07 0.435 1382 +1384 3 34.52 -26.12 7.15 0.435 1383 +1385 3 36.08 -26.67 7.13 0.435 1384 +1386 3 36.29 -26.78 7.12 0.435 1385 +1387 3 37.03 -27.74 6.43 0.11 1386 +1388 3 38.98 -27.86 6.69 0.435 1387 +1389 3 41.2 -28.59 6.67 0.435 1388 +1390 3 43.79 -28.43 6.74 0.435 1389 +1391 3 45.55 -28.75 6.75 0.435 1390 +1392 3 47.55 -29.5 6.72 0.435 1391 +1393 3 49.35 -30.68 6.64 0.435 1392 +1394 3 50.06 -31.49 6.58 0.435 1393 +1395 3 51.41 -32.28 6.53 0.435 1394 +1396 3 53.25 -33.34 5.4 0.435 1395 +1397 3 55.69 -34.04 5.32 0.435 1396 +1398 3 56.61 -34.3 4.11 0.435 1397 +1399 3 58.36 -34.38 3.92 0.435 1398 +1400 3 59.27 -34.97 3.8 0.435 1399 +1401 3 59.67 -35.31 5.2 0.435 1400 +1402 3 60.55 -35.51 5.65 0.435 1401 +1403 3 60.99 -35.99 6.37 0.435 1402 +1404 3 62.29 -36.17 6.91 0.435 1403 +1405 3 62.7 -36.22 7.67 0.435 1404 +1406 3 63.38 -36.86 7.84 0.435 1405 +1407 3 65.15 -37.18 7.85 0.435 1406 +1408 3 66.24 -37.56 8.07 0.435 1407 +1409 3 68.62 -37.67 8.57 0.435 1408 +1410 3 71.21 -37.53 8.79 0.435 1409 +1411 3 73.12 -37.0 8.96 0.435 1410 +1412 3 74.0 -37.17 9.05 0.435 1411 +1413 3 75.1 -37.57 9.41 0.435 1412 +1414 3 76.23 -38.4 9.8 0.435 1413 +1415 3 76.9 -39.1 10.73 0.435 1414 +1416 3 77.35 -39.53 10.98 0.435 1415 +1417 3 78.68 -40.13 11.26 0.435 1416 +1418 3 80.02 -40.73 11.53 0.435 1417 +1419 3 81.14 -41.53 11.55 0.435 1418 +1420 3 81.83 -42.14 11.66 0.435 1419 +1421 3 83.41 -43.14 11.66 0.435 1420 +1422 3 84.99 -44.12 11.6 0.435 1421 +1423 3 85.89 -44.71 11.64 0.435 1422 +1424 3 86.81 -45.55 11.94 0.435 1423 +1425 3 87.91 -45.93 12.01 0.435 1424 +1426 3 88.35 -46.11 12.0 0.435 1425 +1427 3 90.36 -46.86 12.04 0.435 1426 +1428 3 91.23 -46.81 12.07 0.435 1427 +1429 3 92.09 -46.76 12.09 0.435 1428 +1430 3 92.71 -46.29 12.16 0.435 1429 +1431 3 93.33 -45.81 12.22 0.435 1430 +1432 3 94.6 -45.31 12.3 0.435 1431 +1433 3 97.19 -45.15 12.38 0.435 1432 +1434 3 98.73 -45.48 12.38 0.435 1433 +1435 3 99.88 -46.28 12.33 0.435 1434 +1436 3 101.02 -47.31 12.4 0.435 1435 +1437 3 101.92 -47.88 12.36 0.435 1436 +1438 3 102.84 -48.7 12.38 0.435 1437 +1439 3 103.49 -48.88 12.38 0.435 1438 +1440 3 104.82 -49.22 12.37 0.435 1439 +1441 3 105.45 -49.28 13.29 0.435 1440 +1442 3 106.54 -49.46 13.59 0.435 1441 +1443 3 106.97 -49.69 13.95 0.435 1442 +1444 3 108.06 -49.88 14.41 0.435 1443 +1445 3 108.76 -50.45 14.0 0.435 1444 +1446 3 109.22 -50.33 13.12 0.435 1445 +1447 3 110.35 -50.57 11.98 0.435 1446 +1448 3 110.39 -50.38 10.2 0.435 1447 +1449 3 111.7 -50.24 9.64 0.435 1448 +1450 3 114.97 -50.22 9.27 0.435 1449 +1451 3 116.93 -50.28 9.01 0.435 1450 +1452 3 118.26 -50.1 8.07 0.435 1451 +1453 3 119.16 -50.45 7.84 0.435 1452 +1454 3 120.53 -51.12 6.66 0.435 1453 +1455 3 121.21 -51.49 6.42 0.435 1454 +1456 3 36.99 -27.48 7.06 0.435 1386 +1457 3 39.19 -28.0 7.13 0.435 1456 +1458 3 40.11 -28.02 5.79 0.435 1457 +1459 3 41.83 -27.92 5.93 0.435 1458 +1460 3 43.56 -27.82 5.98 0.435 1459 +1461 3 45.3 -27.94 6.08 0.435 1460 +1462 3 46.2 -28.3 6.06 0.435 1461 +1463 3 47.24 -27.81 6.07 0.435 1462 +1464 3 48.79 -28.14 6.07 0.435 1463 +1465 3 50.79 -28.87 6.04 0.435 1464 +1466 3 51.7 -29.47 6.0 0.435 1465 +1467 3 52.63 -30.48 5.84 0.435 1466 +1468 3 53.59 -31.93 5.71 0.435 1467 +1469 3 54.56 -33.37 5.58 0.435 1468 +1470 3 55.27 -34.4 5.49 0.435 1469 +1471 3 56.68 -36.05 5.36 0.435 1470 +1472 3 56.93 -36.67 5.3 0.435 1471 +1473 3 57.61 -37.03 4.83 0.11 1472 +1474 3 58.07 -37.48 5.39 0.435 1473 +1475 3 58.71 -37.46 5.56 0.435 1474 +1476 3 59.14 -37.43 5.57 0.435 1475 +1477 3 59.6 -37.83 5.47 0.435 1476 +1478 3 60.07 -38.23 5.44 0.435 1477 +1479 3 60.75 -38.3 4.47 0.435 1478 +1480 3 61.01 -38.64 3.76 0.435 1479 +1481 3 61.69 -38.7 2.57 0.435 1480 +1482 3 62.17 -39.07 2.17 0.435 1481 +1483 3 62.41 -39.2 1.55 0.435 1482 +1484 3 63.11 -39.73 0.83 0.435 1483 +1485 3 63.59 -40.08 0.28 0.435 1484 +1486 3 64.51 -40.57 -0.79 0.435 1485 +1487 3 65.22 -41.38 -0.86 0.435 1486 +1488 3 65.7 -41.71 -1.55 0.435 1487 +1489 3 65.1 -42.41 -1.57 0.435 1488 +1490 3 65.75 -42.58 -1.57 0.435 1489 +1491 3 66.87 -43.16 -1.52 0.435 1490 +1492 3 68.43 -43.72 -1.55 0.435 1491 +1493 3 69.09 -43.89 -1.55 0.435 1492 +1494 3 69.53 -44.07 -1.64 0.435 1493 +1495 3 70.44 -44.4 -2.1 0.435 1494 +1496 3 70.68 -44.27 -3.14 0.435 1495 +1497 3 71.39 -44.77 -4.3 0.435 1496 +1498 3 72.08 -44.86 -5.13 0.435 1497 +1499 3 72.74 -44.74 -5.92 0.435 1498 +1500 3 73.22 -44.81 -6.9 0.435 1499 +1501 3 73.93 -45.61 -7.34 0.435 1500 +1502 3 74.66 -46.32 -8.31 0.435 1501 +1503 3 75.14 -47.14 -8.53 0.435 1502 +1504 3 75.62 -47.72 -8.95 0.435 1503 +1505 3 76.31 -48.32 -9.0 0.435 1504 +1506 3 76.83 -48.8 -10.39 0.435 1505 +1507 3 77.29 -49.4 -10.52 0.435 1506 +1508 3 77.76 -50.02 -10.58 0.435 1507 +1509 3 78.48 -50.78 -11.24 0.435 1508 +1510 3 78.76 -51.05 -12.61 0.435 1509 +1511 3 79.23 -51.67 -12.66 0.435 1510 +1512 3 79.93 -51.94 -13.81 0.435 1511 +1513 3 80.39 -52.13 -13.89 0.435 1512 +1514 3 81.11 -52.88 -14.55 0.435 1513 +1515 3 81.8 -53.47 -14.75 0.435 1514 +1516 3 82.89 -53.59 -14.97 0.435 1515 +1517 3 83.35 -53.98 -15.22 0.435 1516 +1518 3 84.06 -54.24 -16.43 0.435 1517 +1519 3 84.98 -54.79 -16.92 0.435 1518 +1520 3 85.42 -54.7 -17.44 0.435 1519 +1521 3 85.9 -54.75 -18.78 0.435 1520 +1522 3 86.41 -55.49 -19.75 0.435 1521 +1523 3 86.91 -56.0 -20.84 0.435 1522 +1524 3 86.98 -56.5 -22.18 0.435 1523 +1525 3 87.23 -56.89 -22.52 0.435 1524 +1526 3 87.26 -57.06 -23.06 0.435 1525 +1527 3 87.75 -57.85 -23.51 0.435 1526 +1528 3 88.01 -58.19 -24.21 0.435 1527 +1529 3 88.48 -58.57 -24.46 0.435 1528 +1530 3 88.5 -58.7 -25.31 0.435 1529 +1531 3 88.77 -59.33 -25.37 0.435 1530 +1532 3 89.26 -59.61 -26.59 0.435 1531 +1533 3 89.75 -59.87 -27.96 0.435 1532 +1534 3 90.42 -60.23 -28.21 0.435 1533 +1535 3 91.17 -61.15 -29.42 0.435 1534 +1536 3 91.68 -62.15 -29.96 0.435 1535 +1537 3 92.39 -62.96 -30.03 0.435 1536 +1538 3 92.39 -62.95 -30.17 0.435 1537 +1539 3 92.4 -62.89 -30.77 0.435 1538 +1540 3 92.44 -63.28 -31.19 0.435 1539 +1541 3 92.48 -63.67 -31.6 0.435 1540 +1542 3 92.71 -63.56 -32.57 0.435 1541 +1543 3 92.94 -63.74 -32.73 0.435 1542 +1544 3 93.2 -63.88 -33.5 0.435 1543 +1545 3 93.43 -64.01 -34.11 0.435 1544 +1546 3 93.9 -64.14 -34.71 0.435 1545 +1547 3 94.13 -64.27 -35.24 0.435 1546 +1548 3 94.6 -64.44 -35.55 0.435 1547 +1549 3 94.81 -64.42 -35.63 0.435 1548 +1550 3 95.05 -64.57 -36.16 0.435 1549 +1551 3 95.95 -64.93 -36.33 0.435 1550 +1552 3 96.39 -65.11 -36.33 0.435 1551 +1553 3 96.86 -65.23 -37.09 0.435 1552 +1554 3 97.54 -65.56 -37.56 0.435 1553 +1555 3 98.22 -65.7 -38.01 0.435 1554 +1556 3 98.68 -65.8 -38.83 0.435 1555 +1557 3 99.39 -66.07 -39.98 0.435 1556 +1558 3 100.51 -66.64 -40.08 0.435 1557 +1559 3 100.73 -66.62 -40.16 0.435 1558 +1560 3 100.97 -66.75 -40.84 0.435 1559 +1561 3 101.22 -66.64 -41.88 0.435 1560 +1562 3 101.88 -66.51 -42.67 0.435 1561 +1563 3 102.11 -66.42 -43.41 0.435 1562 +1564 3 102.98 -66.35 -43.54 0.435 1563 +1565 3 103.64 -66.26 -44.04 0.435 1564 +1566 3 104.3 -66.18 -44.47 0.435 1565 +1567 3 105.4 -66.07 -44.81 0.435 1566 +1568 3 106.04 -66.02 -44.79 0.435 1567 +1569 3 106.7 -65.93 -45.3 0.435 1568 +1570 3 107.35 -65.88 -45.35 0.435 1569 +1571 3 108.21 -65.31 -46.02 0.435 1570 +1572 3 108.86 -65.26 -46.23 0.435 1571 +1573 3 57.45 -37.93 5.18 0.435 1472 +1574 3 58.41 -39.38 5.05 0.435 1573 +1575 3 60.03 -41.0 4.92 0.435 1574 +1576 3 61.15 -41.56 4.74 0.435 1575 +1577 3 62.73 -42.29 4.33 0.435 1576 +1578 3 64.53 -43.26 4.27 0.435 1577 +1579 3 65.45 -43.49 2.91 0.435 1578 +1580 3 66.15 -43.82 2.29 0.435 1579 +1581 3 66.59 -43.97 1.91 0.435 1580 +1582 3 67.75 -44.47 1.14 0.435 1581 +1583 3 68.43 -44.78 0.44 0.435 1582 +1584 3 69.98 -45.06 -0.15 0.435 1583 +1585 3 70.49 -45.56 -1.39 0.435 1584 +1586 3 71.18 -46.16 -1.43 0.435 1585 +1587 3 71.43 -46.25 -2.57 0.435 1586 +1588 3 71.94 -46.75 -3.67 0.435 1587 +1589 3 72.45 -48.01 -3.86 0.435 1588 +1590 3 72.46 -48.21 -3.96 0.435 1589 +1591 3 73.2 -49.67 -4.09 0.435 1590 +1592 3 73.29 -50.15 -5.72 0.435 1591 +1593 3 73.79 -51.15 -6.19 0.435 1592 +1594 3 74.07 -51.95 -6.72 0.435 1593 +1595 3 74.61 -53.11 -7.8 0.435 1594 +1596 3 74.89 -53.91 -8.33 0.435 1595 +1597 3 75.4 -54.95 -8.5 0.435 1596 +1598 3 75.71 -56.18 -9.15 0.435 1597 +1599 3 75.77 -57.02 -9.3 0.435 1598 +1600 3 76.27 -58.05 -9.55 0.435 1599 +1601 3 76.8 -59.28 -9.97 0.435 1600 +1602 3 77.35 -60.91 -10.66 0.435 1601 +1603 3 77.43 -62.18 -10.86 0.435 1602 +1604 3 77.03 -62.62 -11.06 0.435 1603 +1605 3 77.09 -62.94 -12.23 0.435 1604 +1606 3 77.37 -63.69 -13.21 0.435 1605 +1607 3 77.43 -64.54 -13.29 0.435 1606 +1608 3 77.99 -66.44 -13.48 0.435 1607 +1609 3 78.69 -67.26 -13.61 0.435 1608 +1610 3 79.22 -68.19 -14.75 0.435 1609 +1611 3 79.5 -69.25 -14.86 0.435 1610 +1612 3 33.53 -26.95 5.16 0.435 1382 +1613 3 33.0 -28.91 4.94 0.435 1612 +1614 3 33.95 -30.35 4.81 0.435 1613 +1615 3 34.47 -31.4 4.72 0.435 1614 +1616 3 35.16 -31.81 4.69 0.435 1615 +1617 3 35.41 -31.89 3.4 0.435 1616 +1618 3 36.91 -31.37 3.49 0.435 1617 +1619 3 37.35 -31.51 3.11 0.435 1618 +1620 3 38.63 -31.0 3.12 0.435 1619 +1621 3 39.75 -31.35 3.04 0.435 1620 +1622 3 41.08 -31.37 1.86 0.435 1621 +1623 3 42.41 -31.44 1.28 0.435 1622 +1624 3 44.82 -31.65 0.56 0.435 1623 +1625 3 46.34 -31.51 0.16 0.435 1624 +1626 3 47.45 -31.38 -0.39 0.435 1625 +1627 3 48.32 -31.53 -0.46 0.435 1626 +1628 3 49.9 -31.99 -1.45 0.435 1627 +1629 3 51.03 -32.55 -1.64 0.435 1628 +1630 3 52.16 -33.1 -1.82 0.435 1629 +1631 3 52.62 -33.49 -2.0 0.435 1630 +1632 3 52.66 -33.84 -2.86 0.435 1631 +1633 3 53.13 -34.45 -2.91 0.435 1632 +1634 3 53.41 -35.28 -3.22 0.435 1633 +1635 3 53.66 -35.67 -3.48 0.435 1634 +1636 3 54.13 -36.29 -3.53 0.435 1635 +1637 3 54.61 -36.89 -3.66 0.435 1636 +1638 3 56.82 -37.37 -4.03 0.435 1637 +1639 3 57.92 -37.2 -4.97 0.435 1638 +1640 3 58.82 -37.28 -5.78 0.435 1639 +1641 3 60.17 -37.78 -6.33 0.435 1640 +1642 3 61.29 -37.82 -7.44 0.435 1641 +1643 3 62.84 -37.83 -8.53 0.435 1642 +1644 3 63.31 -37.95 -9.14 0.435 1643 +1645 3 63.99 -38.31 -9.39 0.435 1644 +1646 3 64.7 -38.82 -10.33 0.435 1645 +1647 3 65.4 -39.36 -11.12 0.435 1646 +1648 3 66.36 -40.3 -11.94 0.435 1647 +1649 3 68.16 -41.26 -12.08 0.435 1648 +1650 3 35.47 -33.7 4.5 0.435 1616 +1651 3 35.98 -34.75 4.41 0.435 1650 +1652 3 36.08 -36.25 4.25 0.435 1651 +1653 3 36.6 -37.72 4.11 0.435 1652 +1654 3 36.73 -39.87 3.9 0.435 1653 +1655 3 36.49 -42.68 3.6 0.435 1654 +1656 3 36.15 -44.21 3.43 0.435 1655 +1657 3 36.21 -45.28 3.32 0.435 1656 +1658 3 36.71 -46.1 3.25 0.435 1657 +1659 3 37.21 -47.15 3.15 0.435 1658 +1660 3 37.7 -48.2 3.06 0.435 1659 +1661 3 37.32 -48.87 2.98 0.435 1660 +1662 3 36.54 -50.42 2.8 0.435 1661 +1663 3 36.67 -52.56 2.65 0.435 1662 +1664 3 36.39 -54.73 2.42 0.435 1663 +1665 3 36.73 -56.64 2.23 0.435 1664 +1666 3 36.95 -57.17 3.09 0.435 1665 +1667 3 37.01 -58.52 3.77 0.435 1666 +1668 3 37.3 -59.02 2.3 0.435 1667 +1669 3 37.0 -60.16 0.6 0.435 1668 +1670 3 37.08 -61.43 0.23 0.435 1669 +1671 3 37.42 -63.04 -0.67 0.435 1670 +1672 3 38.13 -63.82 -1.18 0.435 1671 +1673 3 38.39 -64.14 -2.12 0.435 1672 +1674 3 38.67 -64.98 -2.27 0.435 1673 +1675 3 39.16 -65.8 -2.42 0.435 1674 +1676 3 39.19 -66.23 -2.47 0.435 1675 +1677 3 39.27 -67.51 -2.6 0.435 1676 +1678 3 39.32 -68.36 -2.68 0.435 1677 +1679 3 39.38 -68.96 -3.27 0.435 1678 +1680 3 40.09 -69.76 -3.41 0.435 1679 +1681 3 41.05 -71.22 -3.54 0.435 1680 +1682 3 41.35 -71.91 -5.03 0.435 1681 +1683 3 41.62 -72.74 -5.26 0.435 1682 +1684 3 41.69 -73.81 -5.37 0.435 1683 +1685 3 41.79 -74.76 -6.75 0.435 1684 +1686 3 41.85 -75.61 -6.83 0.435 1685 +1687 3 42.38 -77.3 -6.99 0.435 1686 +1688 3 42.66 -78.13 -7.07 0.435 1687 +1689 3 42.93 -78.99 -7.16 0.435 1688 +1690 3 43.39 -79.39 -7.27 0.435 1689 +1691 3 43.45 -79.68 -8.65 0.435 1690 +1692 3 43.56 -81.09 -9.55 0.435 1691 +1693 3 43.91 -83.0 -9.74 0.435 1692 +1694 3 44.16 -83.62 -10.02 0.435 1693 +1695 3 44.45 -84.39 -10.78 0.435 1694 +1696 3 44.53 -85.13 -12.05 0.435 1695 +1697 3 44.61 -86.18 -12.24 0.435 1696 +1698 3 44.67 -86.73 -13.2 0.435 1697 +1699 3 44.79 -88.14 -14.31 0.435 1698 +1700 3 44.89 -89.37 -15.04 0.435 1699 +1701 3 45.42 -90.54 -15.91 0.435 1700 +1702 3 45.47 -91.39 -15.99 0.435 1701 +1703 3 45.57 -92.86 -16.59 0.435 1702 +1704 3 46.01 -92.83 -16.66 0.435 1703 +1705 3 46.53 -94.07 -16.78 0.435 1704 +1706 3 46.87 -95.99 -16.97 0.435 1705 +1707 3 46.12 -97.97 -17.19 0.435 1706 +1708 3 46.2 -99.25 -17.32 0.435 1707 +1709 3 47.16 -100.23 -17.85 0.435 1708 +1710 3 48.5 -100.77 -18.18 0.435 1709 +1711 3 49.42 -101.57 -18.24 0.435 1710 +1712 3 49.94 -102.28 -19.35 0.435 1711 +1713 3 49.98 -102.64 -20.07 0.435 1712 +1714 3 49.19 -103.97 -20.37 0.435 1713 +1715 3 49.26 -105.04 -20.55 0.435 1714 +1716 3 49.12 -105.91 -20.73 0.435 1715 +1717 3 49.18 -106.2 -22.11 0.435 1716 +1718 3 48.81 -106.52 -23.51 0.435 1717 +1719 3 48.86 -107.11 -24.1 0.435 1718 +1720 3 48.9 -106.93 -25.89 0.435 1719 +1721 3 48.95 -107.26 -26.89 0.435 1720 +1722 3 48.57 -107.9 -27.05 0.435 1721 +1723 3 48.61 -108.28 -27.69 0.435 1722 +1724 3 48.22 -108.89 -28.29 0.435 1723 +1725 3 48.26 -109.26 -28.86 0.435 1724 +1726 3 48.75 -109.87 -28.98 0.435 1725 +1727 3 48.85 -111.32 -29.66 0.435 1726 +1728 3 48.94 -112.04 -31.08 0.435 1727 +1729 3 49.19 -112.14 -32.07 0.435 1728 +1730 3 49.25 -112.99 -32.23 0.435 1729 +1731 3 49.3 -113.84 -32.39 0.435 1730 +1732 3 49.33 -114.26 -32.44 0.435 1731 +1733 3 49.24 -115.37 -34.36 0.435 1732 +1734 3 48.47 -116.65 -35.19 0.435 1733 +1735 3 48.53 -117.24 -35.78 0.435 1734 +1736 3 47.52 -118.09 -36.57 0.435 1735 +1737 3 47.76 -118.21 -37.4 0.435 1736 +1738 3 47.83 -118.75 -38.44 0.435 1737 +1739 3 47.84 -118.68 -39.1 0.435 1738 +1740 3 47.91 -119.48 -39.79 0.435 1739 +1741 3 47.56 -120.27 -40.78 0.435 1740 +1742 3 47.43 -121.51 -41.37 0.435 1741 +1743 3 47.06 -122.39 -41.62 0.435 1742 +1744 3 47.13 -122.92 -42.66 0.435 1743 +1745 3 47.18 -123.5 -43.39 0.435 1744 +1746 3 46.82 -124.33 -44.16 0.435 1745 +1747 3 46.26 -125.64 -44.39 0.435 1746 +1748 3 45.92 -126.9 -44.98 0.435 1747 +1749 3 45.56 -127.41 -46.62 0.435 1748 +1750 3 45.21 -127.94 -47.97 0.435 1749 +1751 3 45.26 -128.27 -48.98 0.435 1750 +1752 3 44.88 -129.1 -49.59 0.435 1751 +1753 3 44.96 -129.86 -50.73 0.435 1752 +1754 3 45.01 -129.96 -51.79 0.435 1753 +1755 3 45.29 -130.78 -52.1 0.435 1754 +1756 3 45.55 -131.13 -52.73 0.435 1755 +1757 3 45.8 -131.97 -52.89 0.435 1756 +1758 3 45.87 -132.55 -53.63 0.435 1757 +1759 3 45.92 -133.39 -53.78 0.435 1758 +1760 3 45.99 -133.95 -54.68 0.435 1759 +1761 3 46.02 -134.06 -55.58 0.435 1760 +1762 3 46.07 -134.7 -55.8 0.435 1761 +1763 3 46.13 -135.21 -57.14 0.435 1762 +1764 3 46.18 -135.55 -57.99 0.435 1763 +1765 3 46.47 -136.09 -58.95 0.435 1764 +1766 3 46.52 -136.94 -59.12 0.435 1765 +1767 3 46.33 -137.37 -59.16 0.435 1766 +1768 3 46.15 -138.07 -58.94 0.435 1767 +1769 3 46.2 -138.71 -59.0 0.435 1768 +1770 3 45.82 -139.02 -60.47 0.435 1769 +1771 3 45.48 -140.08 -61.5 0.435 1770 +1772 3 45.18 -141.44 -63.3 0.435 1771 +1773 3 45.31 -142.81 -64.72 0.435 1772 +1774 3 44.53 -144.1 -65.32 0.435 1773 +1775 3 43.31 -145.24 -65.55 0.435 1774 +1776 3 42.27 -145.43 -66.5 0.435 1775 +1777 3 41.27 -146.17 -68.4 0.435 1776 +1778 3 40.0 -146.41 -68.91 0.435 1777 +1779 3 39.34 -145.95 -69.48 0.435 1778 +1780 3 39.12 -145.47 -70.19 0.435 1779 +1781 3 38.27 -145.19 -71.39 0.435 1780 +1782 3 37.66 -145.04 -73.27 0.435 1781 +1783 3 36.18 -145.51 -73.8 0.435 1782 +1784 3 35.38 -145.9 -74.77 0.435 1783 +1785 3 34.75 -146.09 -75.4 0.435 1784 +1786 3 34.36 -146.47 -76.14 0.435 1785 +1787 3 -1.87 -7.91 -3.58 1.95 1 +1788 3 -1.88 -7.93 -3.36 1.95 1787 +1789 3 -2.04 -8.83 -3.3 1.41 1788 +1790 3 -2.46 -9.07 -3.26 1.41 1789 +1791 3 -3.08 -9.83 -2.6 1.41 1790 +1792 3 -3.06 -9.74 -3.49 1.41 1791 +1793 3 -3.22 -10.82 -3.61 1.085 1792 +1794 3 -3.62 -11.28 -3.6 1.085 1793 +1795 3 -3.6 -11.71 -3.64 1.085 1794 +1796 3 -3.75 -12.58 -3.73 1.085 1795 +1797 3 -4.61 -13.19 -2.61 0.65 1796 +1798 3 -5.76 -12.39 -2.55 0.65 1797 +1799 3 -6.84 -12.46 -2.59 0.65 1798 +1800 3 -7.88 -12.95 -2.73 0.54 1799 +1801 3 -9.8 -13.5 -2.83 0.54 1800 +1802 3 -11.46 -15.43 -1.95 0.54 1801 +1803 3 -12.71 -16.16 -1.97 0.54 1802 +1804 3 -14.18 -16.92 -1.86 0.54 1803 +1805 3 -14.62 -17.46 -1.1 0.54 1804 +1806 3 -15.03 -17.97 -0.55 0.54 1805 +1807 3 -16.51 -18.73 -0.52 0.54 1806 +1808 3 -18.18 -19.97 -0.09 0.54 1807 +1809 3 -19.0 -20.9 0.01 0.54 1808 +1810 3 -21.24 -23.21 -0.12 0.54 1809 +1811 3 -22.87 -24.8 -0.32 0.54 1810 +1812 3 -23.72 -25.31 -0.17 0.54 1811 +1813 3 -25.62 -26.08 -0.22 0.54 1812 +1814 3 -27.32 -26.62 -0.31 0.54 1813 +1815 3 -27.56 -26.2 -0.27 0.54 1814 +1816 3 -27.89 -26.6 -2.96 0.325 1815 +1817 3 -28.28 -26.66 -4.71 0.435 1816 +1818 3 -29.08 -27.58 -4.68 0.435 1817 +1819 3 -29.71 -28.06 -4.66 0.435 1818 +1820 3 -30.73 -28.96 -5.08 0.435 1819 +1821 3 -31.54 -29.34 -6.12 0.435 1820 +1822 3 -32.36 -30.03 -6.22 0.435 1821 +1823 3 -33.65 -30.31 -6.35 0.435 1822 +1824 3 -34.95 -30.13 -6.89 0.435 1823 +1825 3 -36.89 -29.95 -7.66 0.435 1824 +1826 3 -38.44 -29.16 -7.92 0.435 1825 +1827 3 -39.74 -29.23 -8.04 0.435 1826 +1828 3 -41.47 -29.29 -8.46 0.435 1827 +1829 3 -42.54 -29.1 -8.91 0.435 1828 +1830 3 -43.6 -29.37 -9.05 0.435 1829 +1831 3 -44.43 -29.53 -10.14 0.435 1830 +1832 3 -45.26 -29.94 -10.88 0.435 1831 +1833 3 -46.06 -30.84 -11.07 0.435 1832 +1834 3 -46.88 -31.53 -11.31 0.435 1833 +1835 3 -48.15 -32.0 -11.76 0.435 1834 +1836 3 -50.03 -32.69 -12.56 0.435 1835 +1837 3 -51.76 -32.78 -12.68 0.435 1836 +1838 3 -53.27 -32.29 -14.17 0.435 1837 +1839 3 -54.79 -32.14 -14.57 0.435 1838 +1840 3 -56.09 -32.22 -14.6 0.435 1839 +1841 3 -57.58 -32.51 -14.67 0.435 1840 +1842 3 -59.07 -32.49 -15.84 0.435 1841 +1843 3 -60.63 -31.7 -16.1 0.435 1842 +1844 3 -62.14 -31.78 -16.21 0.435 1843 +1845 3 -62.1 -31.63 -17.63 0.435 1844 +1846 3 -63.39 -31.94 -17.61 0.435 1845 +1847 3 -64.26 -32.01 -17.49 0.435 1846 +1848 3 -65.77 -31.8 -18.34 0.435 1847 +1849 3 -66.64 -31.33 -19.22 0.435 1848 +1850 3 -67.73 -31.4 -19.25 0.435 1849 +1851 3 -68.99 -31.91 -19.33 0.435 1850 +1852 3 -69.81 -32.58 -19.57 0.435 1851 +1853 3 -70.85 -33.03 -20.09 0.435 1852 +1854 3 -72.31 -33.43 -21.3 0.435 1853 +1855 3 -73.8 -33.95 -21.46 0.435 1854 +1856 3 -75.25 -35.11 -21.61 0.435 1855 +1857 3 -75.62 -36.0 -21.79 0.435 1856 +1858 3 -76.68 -36.26 -21.92 0.435 1857 +1859 3 -77.28 -36.92 -22.23 0.435 1858 +1860 3 -78.33 -37.41 -22.31 0.435 1859 +1861 3 -79.2 -37.47 -22.33 0.435 1860 +1862 3 -80.76 -36.91 -22.31 0.435 1861 +1863 3 -82.03 -37.17 -22.74 0.435 1862 +1864 3 -82.64 -37.57 -23.4 0.435 1863 +1865 3 -82.59 -37.89 -24.57 0.435 1864 +1866 3 -83.61 -38.56 -25.11 0.435 1865 +1867 3 -84.89 -38.85 -25.24 0.435 1866 +1868 3 -86.38 -39.1 -25.69 0.435 1867 +1869 3 -88.12 -38.99 -25.79 0.435 1868 +1870 3 -88.91 -39.37 -25.85 0.435 1869 +1871 3 -88.62 -39.85 -27.32 0.435 1870 +1872 3 -88.58 -40.5 -27.31 0.435 1871 +1873 3 -88.48 -41.47 -28.47 0.435 1872 +1874 3 -88.86 -42.07 -29.21 0.435 1873 +1875 3 -89.02 -42.39 -30.38 0.435 1874 +1876 3 -89.41 -43.06 -30.46 0.435 1875 +1877 3 -89.78 -44.43 -30.08 0.435 1876 +1878 3 -89.73 -45.33 -29.87 0.435 1877 +1879 3 -89.9 -45.14 -31.75 0.435 1878 +1880 3 -90.28 -45.47 -32.99 0.435 1879 +1881 3 -90.64 -46.28 -33.76 0.435 1880 +1882 3 -91.0 -46.55 -35.61 0.435 1881 +1883 3 -90.93 -47.32 -36.44 0.435 1882 +1884 3 -91.75 -48.01 -36.6 0.435 1883 +1885 3 -91.71 -47.84 -38.24 0.435 1884 +1886 3 -92.08 -48.68 -38.86 0.435 1885 +1887 3 -92.45 -49.24 -39.91 0.435 1886 +1888 3 -92.85 -49.41 -40.7 0.435 1887 +1889 3 -92.81 -49.77 -41.4 0.435 1888 +1890 3 -92.77 -50.14 -42.05 0.435 1889 +1891 3 -92.49 -50.74 -42.33 0.435 1890 +1892 3 -92.24 -51.08 -43.12 0.435 1891 +1893 3 -92.2 -51.72 -43.25 0.435 1892 +1894 3 -92.15 -52.33 -43.62 0.54 1893 +1895 3 -92.09 -53.16 -44.0 0.54 1894 +1896 3 -91.57 -53.91 -44.82 0.54 1895 +1897 3 -91.29 -54.68 -45.57 0.54 1896 +1898 3 -90.78 -55.44 -46.39 0.54 1897 +1899 3 -90.56 -55.61 -46.63 0.54 1898 +1900 3 -90.5 -56.2 -47.21 0.54 1899 +1901 3 -90.46 -56.6 -47.56 0.54 1900 +1902 3 -90.41 -57.16 -48.45 0.54 1901 +1903 3 -90.37 -57.53 -49.09 0.54 1902 +1904 3 -90.3 -57.8 -50.61 0.54 1903 +1905 3 -90.24 -58.61 -51.15 0.54 1904 +1906 3 -90.16 -59.68 -51.34 0.54 1905 +1907 3 -90.07 -60.91 -51.99 0.54 1906 +1908 3 -89.99 -61.66 -53.12 0.54 1907 +1909 3 -89.92 -62.45 -53.8 0.54 1908 +1910 3 -90.68 -63.45 -55.21 0.54 1909 +1911 3 -91.25 -64.48 -55.93 0.54 1910 +1912 3 -91.35 -65.92 -56.98 0.54 1911 +1913 3 -91.27 -66.66 -58.11 0.54 1912 +1914 3 -91.63 -67.47 -58.89 0.54 1913 +1915 3 -91.53 -68.39 -60.49 0.54 1914 +1916 3 -91.41 -69.8 -61.54 0.54 1915 +1917 3 -91.8 -70.16 -62.41 0.54 1916 +1918 3 -92.15 -70.67 -64.13 0.54 1917 +1919 3 -92.09 -70.98 -65.28 0.54 1918 +1920 3 -92.02 -71.76 -66.05 0.54 1919 +1921 3 -92.4 -72.14 -67.0 0.54 1920 +1922 3 -92.79 -72.7 -68.04 0.54 1921 +1923 3 -93.58 -73.06 -69.38 0.54 1922 +1924 3 -93.97 -73.66 -70.05 0.54 1923 +1925 3 -93.89 -74.42 -71.03 0.54 1924 +1926 3 -93.85 -75.06 -71.1 0.54 1925 +1927 3 -94.65 -75.98 -71.21 0.54 1926 +1928 3 -95.45 -76.79 -72.22 0.54 1927 +1929 3 -95.4 -77.13 -73.16 0.54 1928 +1930 3 -96.18 -78.18 -74.04 0.54 1929 +1931 3 -96.97 -79.02 -74.68 0.54 1930 +1932 3 -97.36 -79.39 -75.7 0.54 1931 +1933 3 -97.69 -80.37 -76.87 0.54 1932 +1934 3 -98.46 -81.62 -77.99 0.54 1933 +1935 3 -98.36 -82.84 -78.65 0.54 1934 +1936 3 -98.72 -83.66 -79.41 0.54 1935 +1937 3 -99.08 -84.75 -79.62 0.54 1936 +1938 3 -99.65 -86.07 -79.77 0.54 1937 +1939 3 -99.39 -86.71 -79.83 0.54 1938 +1940 3 -100.16 -87.71 -81.07 0.54 1939 +1941 3 -99.83 -88.59 -83.04 0.54 1940 +1942 3 -99.76 -89.35 -83.87 0.54 1941 +1943 3 -100.11 -90.41 -84.44 0.54 1942 +1944 3 -100.04 -91.23 -84.82 0.54 1943 +1945 3 -99.95 -92.47 -85.48 0.54 1944 +1946 3 -100.27 -93.91 -86.39 0.54 1945 +1947 3 -101.05 -95.23 -86.77 0.54 1946 +1948 3 -101.36 -96.67 -87.76 0.54 1947 +1949 3 -102.33 -98.39 -88.56 0.54 1948 +1950 3 -103.48 -100.29 -89.76 0.54 1949 +1951 3 -103.38 -101.25 -90.99 0.54 1950 +1952 3 -104.15 -102.8 -91.25 0.54 1951 +1953 3 -104.07 -103.86 -91.35 0.54 1952 +1954 3 -104.45 -104.47 -92.03 0.54 1953 +1955 3 -104.81 -105.51 -92.75 0.54 1954 +1956 3 -104.92 -106.98 -93.36 0.54 1955 +1957 3 -105.29 -107.85 -93.61 0.54 1956 +1958 3 -105.24 -108.19 -94.46 0.54 1957 +1959 3 -105.18 -108.49 -95.77 0.54 1958 +1960 3 -105.15 -108.87 -96.19 0.54 1959 +1961 3 -89.59 -39.42 -26.77 0.435 1870 +1962 3 -89.56 -39.53 -27.76 0.435 1961 +1963 3 -90.37 -39.98 -28.13 0.435 1962 +1964 3 -90.98 -40.36 -29.08 0.435 1963 +1965 3 -91.79 -40.73 -30.2 0.435 1964 +1966 3 -92.64 -41.21 -30.27 0.435 1965 +1967 3 -93.68 -41.67 -30.79 0.435 1966 +1968 3 -95.95 -43.02 -31.74 0.435 1967 +1969 3 -97.62 -43.97 -31.96 0.435 1968 +1970 3 -99.09 -44.69 -32.29 0.435 1969 +1971 3 -99.72 -44.91 -32.63 0.435 1970 +1972 3 -99.82 -45.64 -33.01 0.435 1971 +1973 3 -100.84 -46.57 -33.13 0.435 1972 +1974 3 -102.96 -47.34 -33.33 0.435 1973 +1975 3 -102.94 -47.24 -34.3 0.435 1974 +1976 3 -104.01 -47.24 -34.93 0.435 1975 +1977 3 -105.07 -47.5 -35.13 0.435 1976 +1978 3 -106.13 -47.47 -36.06 0.435 1977 +1979 3 -107.51 -46.27 -35.97 0.435 1978 +1980 3 -108.82 -45.89 -36.33 0.435 1979 +1981 3 -110.63 -44.67 -36.55 0.435 1980 +1982 3 -112.17 -44.29 -36.93 0.435 1981 +1983 3 -113.02 -44.03 -37.9 0.435 1982 +1984 3 -113.93 -43.17 -38.37 0.435 1983 +1985 3 -115.29 -41.94 -38.64 0.435 1984 +1986 3 -117.25 -41.52 -39.55 0.435 1985 +1987 3 -118.36 -41.16 -39.54 0.435 1986 +1988 3 -119.26 -40.03 -40.5 0.435 1987 +1989 3 -120.39 -39.46 -40.54 0.435 1988 +1990 3 -120.86 -38.55 -41.06 0.435 1989 +1991 3 -121.96 -37.94 -41.47 0.435 1990 +1992 3 -121.97 -37.43 -42.18 0.435 1991 +1993 3 -122.65 -37.31 -41.73 0.435 1992 +1994 3 -123.55 -36.94 -41.64 0.435 1993 +1995 3 -124.24 -36.35 -41.51 0.435 1994 +1996 3 -124.91 -35.66 -42.21 0.435 1995 +1997 3 -125.56 -35.17 -43.16 0.435 1996 +1998 3 -28.4 -26.9 -0.37 0.54 1815 +1999 3 -29.67 -27.43 -0.15 0.54 1998 +2000 3 -31.37 -27.97 -0.25 0.54 1999 +2001 3 -33.05 -28.72 -0.36 0.54 2000 +2002 3 -34.27 -30.09 -0.46 0.54 2001 +2003 3 -34.25 -30.55 -0.13 0.54 2002 +2004 3 -34.16 -31.84 -0.19 0.54 2003 +2005 3 -34.76 -33.54 1.05 0.54 2004 +2006 3 -34.73 -34.24 1.65 0.54 2005 +2007 3 -35.5 -35.53 0.98 0.54 2006 +2008 3 -36.74 -36.18 0.13 0.54 2007 +2009 3 -38.38 -37.28 -0.77 0.54 2008 +2010 3 -39.59 -38.59 -1.39 0.54 2009 +2011 3 -40.41 -39.27 -1.56 0.54 2010 +2012 3 -41.17 -40.83 -1.74 0.54 2011 +2013 3 -41.78 -41.48 -2.12 0.54 2012 +2014 3 -42.79 -42.63 -2.26 0.54 2013 +2015 3 -44.67 -43.8 -2.43 0.54 2014 +2016 3 -45.9 -44.67 -3.3 0.54 2015 +2017 3 -46.01 -45.92 -3.89 0.54 2016 +2018 3 -45.96 -46.55 -4.09 0.54 2017 +2019 3 -46.75 -47.88 -4.25 0.54 2018 +2020 3 -47.39 -48.98 -2.5 0.54 2019 +2021 3 -48.17 -50.31 -2.65 0.54 2020 +2022 3 -49.0 -51.33 -1.8 0.54 2021 +2023 3 -50.02 -52.49 -1.65 0.54 2022 +2024 3 -50.81 -53.86 -1.57 0.54 2023 +2025 3 -51.17 -55.43 -1.22 0.54 2024 +2026 3 -51.56 -56.12 -1.15 0.54 2025 +2027 3 -52.39 -56.84 -0.95 0.54 2026 +2028 3 -52.8 -57.34 -0.62 0.54 2027 +2029 3 -53.21 -57.83 -0.31 0.54 2028 +2030 3 -53.62 -58.58 0.34 0.54 2029 +2031 3 -53.63 -59.16 1.71 0.54 2030 +2032 3 -54.47 -59.7 2.24 0.54 2031 +2033 3 -54.47 -60.22 3.17 0.54 2032 +2034 3 -54.46 -60.71 3.72 0.54 2033 +2035 3 -54.87 -61.71 4.67 0.54 2034 +2036 3 -55.65 -62.83 4.53 0.54 2035 +2037 3 -56.45 -64.19 4.59 0.54 2036 +2038 3 -56.83 -65.1 4.79 0.54 2037 +2039 3 -57.6 -66.92 5.11 0.54 2038 +2040 3 -58.63 -68.15 5.79 0.54 2039 +2041 3 -59.27 -69.24 7.54 0.54 2040 +2042 3 -3.66 -14.09 -3.89 0.76 1796 +2043 3 -2.93 -15.33 -4.0 0.76 2042 +2044 3 -2.9 -15.76 -3.96 0.76 2043 +2045 3 -2.63 -16.31 -4.77 0.76 2044 +2046 3 -2.41 -16.85 -3.69 0.76 2045 +2047 3 -2.19 -17.34 -2.9 0.76 2046 +2048 3 -1.95 -17.78 -2.79 0.76 2047 +2049 3 -1.73 -18.35 -1.34 0.76 2048 +2050 3 -1.26 -19.25 -0.74 0.76 2049 +2051 3 -0.57 -20.09 -0.51 0.76 2050 +2052 3 -0.09 -20.96 -0.36 0.76 2051 +2053 3 0.37 -21.37 -0.32 0.76 2052 +2054 3 0.6 -21.79 -0.21 0.76 2053 +2055 3 1.29 -22.4 -0.18 0.76 2054 +2056 3 2.21 -23.23 -0.02 0.76 2055 +2057 3 2.66 -23.65 0.09 0.76 2056 +2058 3 3.35 -24.25 0.05 0.76 2057 +2059 3 3.58 -24.72 0.46 0.76 2058 +2060 3 4.04 -25.12 0.49 0.76 2059 +2061 3 4.28 -26.09 1.61 0.65 2060 +2062 3 4.53 -26.49 1.42 0.65 2061 +2063 3 4.76 -26.95 1.76 0.65 2062 +2064 3 5.2 -27.72 3.12 0.65 2063 +2065 3 5.42 -28.21 3.91 0.65 2064 +2066 3 5.43 -28.5 4.62 0.65 2065 +2067 3 5.45 -29.19 5.0 0.65 2066 +2068 3 5.71 -29.85 5.24 0.65 2067 +2069 3 5.93 -30.33 5.88 0.65 2068 +2070 3 5.95 -31.06 6.63 0.65 2069 +2071 3 5.95 -31.32 7.14 0.65 2070 +2072 3 6.19 -31.79 7.55 0.65 2071 +2073 3 6.47 -32.85 7.45 0.65 2072 +2074 3 6.77 -34.12 7.32 0.65 2073 +2075 3 6.81 -34.79 7.47 0.65 2074 +2076 3 7.27 -35.46 7.95 0.65 2075 +2077 3 7.73 -36.08 8.05 0.65 2076 +2078 3 8.43 -36.94 8.28 0.65 2077 +2079 3 8.9 -37.58 8.44 0.65 2078 +2080 3 9.81 -38.7 9.4 0.65 2079 +2081 3 10.05 -39.16 9.73 0.65 2080 +2082 3 10.58 -40.88 9.95 0.65 2081 +2083 3 11.04 -41.53 10.2 0.65 2082 +2084 3 11.3 -42.42 10.56 0.65 2083 +2085 3 11.36 -43.28 10.47 0.65 2084 +2086 3 11.6 -43.72 10.74 0.65 2085 +2087 3 11.83 -44.15 10.85 0.65 2086 +2088 3 12.08 -44.57 10.81 0.65 2087 +2089 4 -1.69 6.41 -3.07 2.06 1 +2090 4 -3.12 8.26 -2.91 1.085 2089 +2091 4 -4.24 9.64 -4.3 0.975 2090 +2092 4 -4.45 10.02 -4.27 0.975 2091 +2093 4 -4.03 10.53 -4.74 0.54 2092 +2094 4 -3.64 11.2 -4.66 0.54 2093 +2095 4 -3.02 11.88 -4.57 0.54 2094 +2096 4 -2.19 12.41 -5.02 0.54 2095 +2097 4 -1.95 13.03 -6.76 0.54 2096 +2098 4 -1.74 13.57 -7.53 0.54 2097 +2099 4 -1.69 13.77 -9.46 0.54 2098 +2100 4 -1.03 13.86 -10.04 0.54 2099 +2101 4 -0.87 14.73 -10.03 0.54 2100 +2102 4 -0.44 15.3 -10.94 0.54 2101 +2103 4 -0.26 16.28 -11.89 0.54 2102 +2104 4 -0.07 17.24 -12.69 0.54 2103 +2105 4 0.13 17.5 -13.03 0.54 2104 +2106 4 0.32 18.25 -13.78 0.54 2105 +2107 4 0.49 19.43 -14.71 0.435 2106 +2108 4 1.33 20.22 -15.43 0.435 2107 +2109 4 1.51 20.86 -15.29 0.435 2108 +2110 4 1.72 21.38 -15.91 0.435 2109 +2111 4 1.92 22.2 -17.41 0.435 2110 +2112 4 2.93 23.86 -18.19 0.435 2111 +2113 4 3.37 24.46 -19.54 0.435 2112 +2114 4 3.97 25.62 -19.94 0.435 2113 +2115 4 4.36 26.61 -20.8 0.435 2114 +2116 4 4.34 27.64 -22.36 0.435 2115 +2117 4 4.66 29.6 -22.15 0.435 2116 +2118 4 4.84 30.31 -22.59 0.435 2117 +2119 4 5.26 31.06 -23.41 0.435 2118 +2120 4 5.46 32.12 -25.1 0.435 2119 +2121 4 6.02 33.71 -25.46 0.435 2120 +2122 4 7.29 34.76 -26.45 0.435 2121 +2123 4 7.92 35.26 -26.76 0.435 2122 +2124 4 9.72 38.56 -28.11 0.435 2123 +2125 4 9.48 38.99 -28.22 0.435 2124 +2126 4 9.67 39.21 -28.04 0.435 2125 +2127 4 10.08 39.67 -28.06 0.435 2126 +2128 4 10.28 40.69 -29.53 0.435 2127 +2129 4 11.11 41.45 -29.96 0.435 2128 +2130 4 11.35 41.81 -31.12 0.435 2129 +2131 4 11.54 42.82 -32.44 0.435 2130 +2132 4 11.49 43.69 -32.5 0.435 2131 +2133 4 12.1 44.39 -32.57 0.435 2132 +2134 4 12.45 46.23 -33.27 0.435 2133 +2135 4 12.45 46.79 -34.5 0.435 2134 +2136 4 12.84 47.74 -35.15 0.435 2135 +2137 4 13.4 49.33 -35.42 0.435 2136 +2138 4 13.62 50.11 -36.55 0.435 2137 +2139 4 14.22 51.07 -37.11 0.435 2138 +2140 4 14.57 52.39 -37.03 0.435 2139 +2141 4 15.12 54.43 -37.49 0.435 2140 +2142 4 15.45 56.3 -38.5 0.435 2141 +2143 4 16.46 58.17 -39.25 0.435 2142 +2144 4 16.78 60.21 -39.87 0.435 2143 +2145 4 17.59 61.64 -40.61 0.435 2144 +2146 4 17.76 62.81 -41.31 0.435 2145 +2147 4 18.54 64.43 -41.73 0.435 2146 +2148 4 19.25 67.35 -42.23 0.435 2147 +2149 4 19.83 68.75 -42.76 0.435 2148 +2150 4 20.79 70.78 -42.9 0.435 2149 +2151 4 22.01 72.14 -42.73 0.435 2150 +2152 4 23.83 74.2 -42.55 0.435 2151 +2153 4 25.66 76.04 -42.32 0.435 2152 +2154 4 27.1 77.41 -42.14 0.435 2153 +2155 4 28.6 77.76 -42.52 0.435 2154 +2156 4 31.63 77.95 -42.43 0.435 2155 +2157 4 32.99 77.17 -42.55 0.435 2156 +2158 4 34.55 76.12 -41.87 0.435 2157 +2159 4 35.47 75.29 -41.71 0.435 2158 +2160 4 36.13 74.29 -39.99 0.435 2159 +2161 4 37.28 73.02 -39.64 0.435 2160 +2162 4 38.45 71.58 -39.76 0.435 2161 +2163 4 38.89 71.08 -38.75 0.435 2162 +2164 4 39.09 70.48 -36.99 0.435 2163 +2165 4 38.69 70.59 -38.35 0.435 2164 +2166 4 39.12 70.33 -37.76 0.435 2165 +2167 4 39.12 70.36 -37.99 0.435 2166 +2168 4 39.37 70.24 -38.67 0.435 2167 +2169 4 39.66 69.99 -40.35 0.435 2168 +2170 4 39.7 70.15 -41.91 0.435 2169 +2171 4 40.18 69.31 -41.91 0.435 2170 +2172 4 40.41 69.1 -41.85 0.435 2171 +2173 4 40.69 68.87 -43.61 0.435 2172 +2174 4 40.98 68.42 -45.45 0.435 2173 +2175 4 41.04 68.35 -46.89 0.435 2174 +2176 4 41.93 68.49 -47.68 0.435 2175 +2177 4 42.42 68.0 -49.01 0.435 2176 +2178 4 42.69 67.68 -50.01 0.435 2177 +2179 4 43.18 67.16 -50.89 0.435 2178 +2180 4 43.65 67.09 -52.08 0.435 2179 +2181 4 43.95 66.87 -54.05 0.435 2180 +2182 4 44.21 66.26 -54.26 0.435 2181 +2183 4 44.69 66.21 -55.54 0.435 2182 +2184 4 45.15 66.37 -56.79 0.435 2183 +2185 4 46.09 65.95 -58.54 0.435 2184 +2186 4 46.76 66.07 -59.27 0.435 2185 +2187 4 48.03 65.53 -57.42 0.435 2186 +2188 4 48.67 66.29 -58.23 0.435 2187 +2189 4 48.86 67.31 -59.39 0.435 2188 +2190 4 49.29 68.12 -60.89 0.435 2189 +2191 4 49.29 68.95 -62.6 0.435 2190 +2192 4 -5.37 10.72 -5.05 0.975 2092 +2193 4 -5.84 11.44 -4.99 0.975 2192 +2194 4 -6.11 13.03 -5.88 0.54 2193 +2195 4 -7.05 14.04 -5.8 0.54 2194 +2196 4 -7.34 15.32 -5.68 0.435 2195 +2197 4 -8.06 16.35 -5.59 0.435 2196 +2198 4 -7.86 17.13 -6.63 0.435 2197 +2199 4 -7.65 17.64 -7.25 0.435 2198 +2200 4 -7.69 18.29 -7.41 0.435 2199 +2201 4 -8.14 18.99 -8.1 0.435 2200 +2202 4 -8.58 19.52 -9.26 0.435 2201 +2203 4 -8.62 20.18 -9.35 0.435 2202 +2204 4 -8.65 20.59 -9.22 0.435 2203 +2205 4 -8.68 21.01 -9.11 0.435 2204 +2206 4 -8.7 21.51 -9.66 0.435 2205 +2207 4 -8.72 22.51 -10.99 0.435 2206 +2208 4 -8.73 23.0 -11.54 0.435 2207 +2209 4 -9.21 23.86 -11.7 0.435 2208 +2210 4 -9.23 24.56 -12.23 0.435 2209 +2211 4 -9.71 25.73 -13.39 0.435 2210 +2212 4 -9.74 26.39 -13.4 0.435 2211 +2213 4 -10.23 27.26 -13.7 0.435 2212 +2214 4 -10.28 28.11 -13.61 0.435 2213 +2215 4 -10.32 28.76 -13.62 0.435 2214 +2216 4 -10.38 29.61 -13.53 0.435 2215 +2217 4 -10.19 30.83 -14.61 0.435 2216 +2218 4 -10.23 31.5 -14.84 0.435 2217 +2219 4 -10.06 32.4 -15.04 0.435 2218 +2220 4 -9.89 33.32 -15.4 0.435 2219 +2221 4 -9.69 34.04 -16.0 0.435 2220 +2222 4 -9.76 35.16 -16.34 0.435 2221 +2223 4 -9.59 36.02 -16.17 0.435 2222 +2224 4 -9.59 36.06 -16.54 0.435 2223 +2225 4 -9.59 36.6 -17.54 0.435 2224 +2226 4 -9.58 36.9 -18.41 0.435 2225 +2227 4 -9.6 37.64 -19.24 0.435 2226 +2228 4 -9.38 38.24 -20.76 0.435 2227 +2229 4 -9.44 39.1 -20.67 0.435 2228 +2230 4 -9.49 39.96 -20.58 0.435 2229 +2231 4 -10.47 41.04 -18.99 0.435 2230 +2232 4 -10.99 42.29 -18.87 0.435 2231 +2233 4 -11.03 43.2 -19.3 0.435 2232 +2234 4 -11.06 44.17 -20.19 0.435 2233 +2235 4 -11.58 45.65 -20.11 0.435 2234 +2236 4 -11.65 46.73 -20.16 0.435 2235 +2237 4 -12.62 48.44 -20.45 0.435 2236 +2238 4 -13.54 49.73 -20.95 0.435 2237 +2239 4 -14.61 52.93 -21.01 0.435 2238 +2240 4 -14.67 54.01 -21.05 0.435 2239 +2241 4 -15.63 55.77 -21.73 0.435 2240 +2242 4 -16.62 58.14 -22.26 0.435 2241 +2243 4 -16.95 60.11 -22.59 0.435 2242 +2244 4 -17.9 61.63 -23.14 0.435 2243 +2245 4 -18.37 62.52 -23.51 0.435 2244 +2246 4 -18.84 63.41 -24.1 0.435 2245 +2247 4 -18.53 65.66 -24.62 0.435 2246 +2248 4 -18.59 66.8 -25.17 0.435 2247 +2249 4 -18.64 67.66 -25.17 0.435 2248 +2250 4 -18.68 68.6 -25.89 0.435 2249 +2251 4 -18.76 69.91 -25.91 0.435 2250 +2252 4 -18.81 70.78 -25.97 0.435 2251 +2253 4 -19.31 72.07 -26.23 0.435 2252 +2254 4 -19.8 72.92 -26.31 0.435 2253 +2255 4 -19.86 73.78 -26.22 0.435 2254 +2256 4 -19.91 74.65 -26.2 0.435 2255 +2257 4 -20.85 76.67 -27.52 0.435 2256 +2258 4 -20.88 77.64 -28.56 0.435 2257 +2259 4 -20.66 77.98 -29.57 0.435 2258 +2260 4 -20.68 78.7 -30.25 0.435 2259 +2261 4 -21.2 80.23 -30.63 0.435 2260 +2262 4 -21.68 81.32 -30.98 0.435 2261 +2263 4 -23.31 83.19 -31.13 0.435 2262 +2264 4 -23.81 84.49 -31.53 0.435 2263 +2265 4 -24.84 87.05 -31.59 0.435 2264 +2266 4 -25.64 89.35 -31.37 0.435 2265 +2267 4 -26.13 90.18 -31.15 0.435 2266 +2268 4 -26.85 91.2 -30.99 0.435 2267 +2269 4 -27.35 92.51 -31.39 0.435 2268 +2270 4 -27.8 93.24 -32.38 0.435 2269 +2271 4 -28.95 94.5 -32.66 0.435 2270 +2272 4 -30.19 97.06 -33.01 0.435 2271 +2273 4 -31.12 98.33 -33.14 0.435 2272 +2274 4 -32.78 100.63 -33.39 0.435 2273 +2275 4 -33.34 102.76 -33.25 0.435 2274 +2276 4 -34.31 104.46 -33.55 0.435 2275 +2277 4 -34.41 106.22 -33.83 0.435 2276 +2278 4 -36.15 109.81 -33.88 0.435 2277 +2279 4 -36.75 112.63 -34.12 0.435 2278 +2280 4 -36.89 115.02 -34.26 0.435 2279 +2281 4 -38.78 117.5 -34.12 0.435 2280 +2282 4 -40.66 119.53 -33.95 0.435 2281 +2283 4 -41.7 122.48 -33.67 0.435 2282 +2284 4 -42.3 125.02 -33.43 0.435 2283 +2285 4 -42.41 126.73 -33.25 0.435 2284 +2286 4 -44.52 129.19 -33.05 0.435 2285 +2287 4 -45.04 130.45 -32.93 0.435 2286 +2288 4 -45.01 130.82 -34.55 0.435 2287 +2289 4 -45.71 131.42 -34.35 0.435 2288 +2290 4 -45.73 131.85 -34.31 0.435 2289 +2291 4 -46.86 132.67 -34.55 0.435 2290 +2292 4 -7.72 38.87 -19.52 0.435 2227 +2293 4 -7.35 40.26 -20.05 0.435 2292 +2294 4 -6.26 40.67 -21.26 0.435 2293 +2295 4 -6.06 41.37 -21.63 0.435 2294 +2296 4 -5.92 42.75 -22.31 0.435 2295 +2297 4 -5.94 43.48 -23.07 0.435 2296 +2298 4 -6.57 43.52 -23.91 0.435 2297 +2299 4 -6.39 44.47 -24.49 0.435 2298 +2300 4 -5.99 45.22 -25.16 0.435 2299 +2301 4 -5.79 45.93 -25.6 0.435 2300 +2302 4 -5.61 46.89 -26.48 0.435 2301 +2303 4 -5.42 47.65 -27.3 0.435 2302 +2304 4 -5.03 48.82 -27.92 0.435 2303 +2305 4 -4.88 49.94 -28.1 0.435 2304 +2306 4 -5.11 50.64 -28.79 0.435 2305 +2307 4 -5.83 51.67 -28.78 0.435 2306 +2308 4 -5.85 52.14 -29.1 0.435 2307 +2309 4 -5.65 52.9 -30.01 0.435 2308 +2310 4 -5.62 53.06 -31.57 0.435 2309 +2311 4 -6.06 53.52 -32.13 0.435 2310 +2312 4 -6.68 53.61 -33.34 0.435 2311 +2313 4 -7.13 54.29 -33.89 0.435 2312 +2314 4 -7.13 54.6 -34.76 0.435 2313 +2315 4 -7.75 54.39 -35.25 0.435 2314 +2316 4 -7.37 55.59 -36.09 0.435 2315 +2317 4 -7.55 55.22 -36.89 0.435 2316 +2318 4 -7.53 55.85 -38.78 0.435 2317 +2319 4 -7.4 57.36 -38.63 0.435 2318 +2320 4 -7.41 57.84 -39.1 0.435 2319 +2321 4 -8.06 58.1 -39.09 0.435 2320 +2322 4 -8.96 58.49 -39.07 0.435 2321 +2323 4 -9.89 59.28 -39.01 0.435 2322 +2324 4 -9.96 60.04 -37.96 0.435 2323 +2325 4 -10.89 60.48 -36.42 0.435 2324 +2326 4 -10.9 60.77 -37.07 0.435 2325 +2327 4 -11.34 60.74 -37.01 0.435 2326 +2328 4 -11.57 61.42 -37.62 0.435 2327 +2329 4 -11.57 61.73 -38.49 0.435 2328 +2330 4 -11.55 62.08 -39.74 0.435 2329 +2331 4 -11.58 62.78 -40.2 0.435 2330 +2332 4 -11.55 63.15 -41.66 0.435 2331 +2333 4 -11.99 63.69 -42.98 0.435 2332 +2334 4 -11.79 64.14 -43.08 0.435 2333 +2335 4 -11.61 65.09 -43.73 0.435 2334 +2336 4 -11.41 65.59 -44.19 0.435 2335 +2337 4 -11.19 66.17 -45.49 0.435 2336 +2338 4 -10.56 66.71 -46.1 0.435 2337 +2339 4 -10.39 67.6 -46.3 0.435 2338 +2340 4 -10.36 67.74 -47.64 0.435 2339 +2341 4 -10.15 68.52 -48.76 0.435 2340 +2342 4 -10.16 68.8 -49.41 0.435 2341 +2343 4 -10.18 69.8 -50.67 0.435 2342 +2344 4 -10.01 70.93 -51.0 0.435 2343 +2345 4 -10.07 71.79 -50.91 0.435 2344 +2346 4 -10.53 72.49 -51.6 0.435 2345 +2347 4 -10.6 74.04 -51.97 0.435 2346 +2348 4 -10.66 75.45 -53.1 0.435 2347 +2349 4 -10.14 77.66 -53.09 0.435 2348 +2350 4 -10.15 78.17 -53.86 0.435 2349 +2351 4 -10.18 78.85 -54.1 0.435 2350 +2352 4 -9.36 79.85 -54.88 0.435 2351 +2353 4 -9.34 79.92 -55.62 0.435 2352 +2354 4 -9.15 80.63 -56.08 0.435 2353 +2355 4 -9.17 81.35 -56.68 0.435 2354 +2356 4 -9.21 82.27 -57.26 0.435 2355 +2357 4 -9.01 82.76 -57.74 0.435 2356 +2358 4 -9.33 84.48 -57.72 0.435 2357 +2359 4 -8.69 84.81 -58.34 0.435 2358 +2360 4 -8.73 85.73 -58.85 0.435 2359 +2361 4 -8.74 86.25 -59.63 0.435 2360 +2362 4 -7.96 87.81 -59.67 0.435 2361 +2363 4 -10.09 19.69 -9.8 0.435 2202 +2364 4 -11.18 19.93 -10.64 0.435 2363 +2365 4 -12.26 20.12 -11.1 0.435 2364 +2366 4 -13.38 20.97 -11.64 0.435 2365 +2367 4 -14.08 22.3 -12.34 0.435 2366 +2368 4 -14.76 22.99 -12.96 0.435 2367 +2369 4 -14.53 23.1 -14.0 0.435 2368 +2370 4 -14.51 23.15 -14.45 0.435 2369 +2371 4 -14.93 23.71 -15.99 0.435 2370 +2372 4 -14.93 24.54 -17.71 0.435 2371 +2373 4 -16.27 25.38 -18.18 0.435 2372 +2374 4 -16.25 25.48 -19.15 0.435 2373 +2375 4 -17.13 25.93 -19.95 0.435 2374 +2376 4 -17.34 26.47 -21.11 0.435 2375 +2377 4 -17.78 27.24 -22.47 0.435 2376 +2378 4 -17.77 27.55 -23.41 0.435 2377 +2379 4 -18.66 28.17 -23.75 0.435 2378 +2380 4 -18.67 28.39 -23.73 0.435 2379 +2381 4 -18.83 28.11 -25.34 0.435 2380 +2382 4 -19.26 28.09 -25.35 0.435 2381 +2383 4 -19.68 27.86 -25.54 0.435 2382 +2384 4 -19.67 27.9 -25.98 0.435 2383 +2385 4 -20.08 27.96 -26.82 0.435 2384 +2386 4 -20.05 28.1 -28.17 0.435 2385 +2387 4 -20.46 28.13 -28.69 0.435 2386 +2388 4 -20.92 28.86 -29.69 0.435 2387 +2389 4 -21.75 28.63 -30.1 0.435 2388 +2390 4 -22.38 28.67 -30.95 0.435 2389 +2391 4 -22.86 29.58 -31.54 0.435 2390 +2392 4 -23.71 29.59 -32.24 0.435 2391 +2393 4 -25.0 30.04 -33.2 0.435 2392 +2394 4 -25.22 30.02 -33.21 0.435 2393 +2395 4 -26.1 30.49 -34.01 0.435 2394 +2396 4 -26.52 30.5 -34.4 0.435 2395 +2397 4 -26.71 30.32 -34.87 0.435 2396 +2398 4 -28.25 31.19 -35.87 0.435 2397 +2399 4 -28.67 31.53 -37.36 0.435 2398 +2400 4 -28.69 31.98 -37.53 0.435 2399 +2401 4 -28.67 32.07 -38.36 0.435 2400 +2402 4 -29.1 32.31 -38.86 0.435 2401 +2403 4 -29.1 32.58 -39.29 0.435 2402 +2404 4 -29.99 32.98 -39.64 0.435 2403 +2405 4 -29.98 33.02 -40.02 0.435 2404 +2406 4 -30.19 33.59 -41.39 0.435 2405 +2407 4 -30.84 33.78 -41.69 0.435 2406 +2408 4 -30.85 34.33 -42.69 0.435 2407 +2409 4 -31.32 34.97 -42.94 0.435 2408 +2410 4 -31.97 35.18 -43.23 0.435 2409 +2411 4 -32.64 35.6 -43.51 0.435 2410 +2412 4 -33.09 36.03 -43.7 0.435 2411 +2413 4 -33.08 36.08 -44.22 0.435 2412 +2414 4 -33.1 36.54 -44.56 0.435 2413 +2415 4 -33.52 36.8 -45.21 0.435 2414 +2416 4 -34.19 37.24 -45.64 0.435 2415 +2417 4 -34.83 37.23 -46.02 0.435 2416 +2418 4 -35.24 37.11 -47.18 0.435 2417 +2419 4 -35.43 36.89 -47.28 0.435 2418 +2420 4 -36.32 37.28 -47.34 0.435 2419 +2421 4 -36.97 37.24 -47.43 0.435 2420 +2422 4 -37.17 37.57 -48.69 0.435 2421 +2423 4 -36.98 38.0 -48.41 0.435 2422 +2424 4 -38.03 37.75 -48.91 0.435 2423 +2425 4 -38.05 38.22 -49.25 0.435 2424 +2426 4 -38.48 38.54 -50.42 0.435 2425 +2427 4 -38.51 39.49 -51.31 0.435 2426 +2428 4 -38.49 39.61 -52.42 0.435 2427 +2429 4 -38.93 40.33 -53.34 0.435 2428 +2430 4 -38.91 40.41 -54.16 0.435 2429 +2431 4 -38.94 41.15 -54.99 0.435 2430 +2432 4 -39.0 42.49 -55.45 0.435 2431 +2433 4 -39.47 43.12 -55.55 0.435 2432 +2434 4 -40.35 43.8 -56.25 0.435 2433 +2435 4 -40.39 44.49 -56.71 0.435 2434 +2436 4 -41.96 45.27 -56.81 0.435 2435 +2437 4 -42.16 45.32 -57.35 0.435 2436 +2438 4 -43.02 45.77 -58.15 0.435 2437 +2439 4 -43.24 45.8 -58.53 0.435 2438 +2440 4 -44.14 46.63 -58.77 0.435 2439 +2441 4 -44.78 46.64 -59.23 0.435 2440 +2442 4 -6.88 11.21 -6.39 0.76 2193 +2443 4 -9.07 12.29 -7.91 0.76 2442 +2444 4 -10.02 13.21 -6.78 0.65 2443 +2445 4 -10.7 13.6 -6.76 0.65 2444 +2446 4 -11.62 14.4 -6.7 0.65 2445 +2447 4 -12.57 15.9 -7.02 0.65 2446 +2448 4 -13.29 16.96 -7.23 0.65 2447 +2449 4 -13.52 17.65 -7.76 0.65 2448 +2450 4 -14.46 18.7 -7.98 0.65 2449 +2451 4 -14.93 19.59 -8.42 0.65 2450 +2452 4 -14.95 20.33 -9.33 0.65 2451 +2453 4 -15.46 21.6 -9.36 0.65 2452 +2454 4 -15.95 22.69 -9.63 0.65 2453 +2455 4 -16.89 23.72 -9.63 0.65 2454 +2456 4 -18.03 24.74 -9.7 0.65 2455 +2457 4 -19.38 25.78 -10.15 0.65 2456 +2458 4 -20.76 27.01 -10.28 0.65 2457 +2459 4 -21.3 28.7 -10.12 0.65 2458 +2460 4 -21.9 31.26 -10.02 0.65 2459 +2461 4 -22.63 32.52 -10.13 0.54 2460 +2462 4 -22.8 35.31 -9.85 0.54 2461 +2463 4 -23.63 38.3 -9.79 0.54 2462 +2464 4 -23.86 38.8 -9.74 0.54 2463 +2465 4 -24.5 39.31 -10.91 0.435 2464 +2466 4 -25.42 39.9 -10.79 0.435 2465 +2467 4 -25.43 40.1 -10.62 0.435 2466 +2468 4 -26.1 40.52 -10.89 0.435 2467 +2469 4 -26.31 40.52 -10.98 0.435 2468 +2470 4 -26.76 40.99 -11.77 0.435 2469 +2471 4 -27.45 41.88 -12.36 0.435 2470 +2472 4 -27.42 41.98 -13.34 0.435 2471 +2473 4 -27.63 42.25 -13.92 0.435 2472 +2474 4 -28.12 43.36 -14.49 0.435 2473 +2475 4 -29.69 44.4 -14.95 0.435 2474 +2476 4 -30.19 45.74 -15.65 0.325 2475 +2477 4 -31.06 46.18 -16.3 0.325 2476 +2478 4 -31.53 46.83 -16.54 0.325 2477 +2479 4 -32.21 47.73 -17.3 0.325 2478 +2480 4 -33.11 48.61 -17.91 0.325 2479 +2481 4 -33.59 49.51 -18.58 0.325 2480 +2482 4 -35.38 50.74 -18.87 0.325 2481 +2483 4 -36.05 51.17 -19.3 0.325 2482 +2484 4 -37.89 52.78 -19.25 0.325 2483 +2485 4 -39.26 54.53 -20.15 0.325 2484 +2486 4 -39.95 55.4 -20.68 0.325 2485 +2487 4 -41.54 56.92 -21.54 0.325 2486 +2488 4 -42.64 57.34 -22.05 0.325 2487 +2489 4 -43.55 58.2 -22.51 0.325 2488 +2490 4 -45.35 59.42 -22.96 0.325 2489 +2491 4 -48.0 60.65 -23.8 0.325 2490 +2492 4 -49.56 61.5 -24.65 0.325 2491 +2493 4 -50.24 62.11 -24.68 0.325 2492 +2494 4 -52.9 63.27 -24.92 0.325 2493 +2495 4 -55.35 64.75 -26.03 0.325 2494 +2496 4 -56.93 66.04 -26.84 0.325 2495 +2497 4 -58.95 67.22 -26.99 0.325 2496 +2498 4 -60.52 68.5 -27.73 0.325 2497 +2499 4 -61.86 69.33 -28.13 0.325 2498 +2500 4 -63.86 70.59 -28.95 0.325 2499 +2501 4 -65.17 71.02 -29.69 0.325 2500 +2502 4 -66.26 70.98 -30.09 0.325 2501 +2503 4 -66.67 71.03 -30.78 0.325 2502 +2504 4 -67.51 71.1 -31.99 0.325 2503 +2505 4 -68.56 70.89 -32.72 0.325 2504 +2506 4 -68.96 70.7 -33.2 0.325 2505 +2507 4 -69.15 70.81 -34.47 0.325 2506 +2508 4 -24.69 41.48 -9.79 0.54 2464 +2509 4 -25.39 45.75 -9.43 0.54 2508 +2510 4 -26.04 48.94 -9.12 0.54 2509 +2511 4 -27.54 52.08 -8.91 0.54 2510 +2512 4 -28.85 55.65 -8.57 0.54 2511 +2513 4 -30.58 59.0 -8.26 0.54 2512 +2514 4 -30.75 61.56 -8.0 0.54 2513 +2515 4 -31.61 64.74 -7.69 0.54 2514 +2516 4 -32.05 65.78 -8.72 0.435 2515 +2517 4 -33.21 67.0 -8.62 0.435 2516 +2518 4 -33.25 67.61 -8.26 0.435 2517 +2519 4 -34.6 68.69 -9.08 0.435 2518 +2520 4 -34.64 69.87 -9.94 0.435 2519 +2521 4 -34.68 70.79 -10.53 0.435 2520 +2522 4 -34.71 71.75 -11.41 0.435 2521 +2523 4 -35.45 73.27 -11.8 0.435 2522 +2524 4 -36.43 75.46 -12.65 0.435 2523 +2525 4 -37.63 77.87 -13.56 0.435 2524 +2526 4 -38.42 80.0 -13.58 0.435 2525 +2527 4 -39.58 81.52 -14.28 0.435 2526 +2528 4 -39.79 82.04 -15.36 0.435 2527 +2529 4 -40.75 83.24 -14.95 0.435 2528 +2530 4 -41.24 84.3 -14.94 0.435 2529 +2531 4 -41.75 85.59 -15.12 0.435 2530 +2532 4 -42.22 86.49 -15.71 0.435 2531 +2533 4 -43.15 87.84 -16.73 0.435 2532 +2534 4 -42.99 89.21 -17.26 0.435 2533 +2535 4 -45.58 92.8 -17.85 0.435 2534 +2536 4 -47.01 95.38 -18.52 0.435 2535 +2537 4 -48.22 97.31 -18.96 0.435 2536 +2538 4 -49.12 98.41 -19.62 0.435 2537 +2539 4 -49.67 100.34 -19.8 0.435 2538 +2540 4 -50.17 101.65 -20.21 0.435 2539 +2541 4 -50.9 103.21 -20.97 0.435 2540 +2542 4 -51.84 104.74 -21.66 0.435 2541 +2543 4 -51.94 106.51 -22.08 0.435 2542 +2544 4 -52.98 109.5 -22.25 0.435 2543 +2545 4 -54.16 111.44 -22.75 0.435 2544 +2546 4 -54.87 112.8 -23.83 0.435 2545 +2547 4 -56.75 115.06 -23.65 0.435 2546 +2548 4 -57.75 117.16 -23.6 0.435 2547 +2549 4 -58.29 118.89 -23.82 0.435 2548 +2550 4 -59.25 120.58 -23.97 0.435 2549 +2551 4 -60.47 122.69 -24.08 0.435 2550 +2552 4 -62.55 124.71 -23.92 0.435 2551 +2553 4 -64.6 126.32 -23.87 0.435 2552 +2554 4 -65.99 127.74 -23.76 0.435 2553 +2555 4 -10.59 12.43 -8.01 0.54 2443 +2556 4 -12.47 11.52 -8.75 0.54 2555 +2557 4 -14.18 10.98 -8.84 0.54 2556 +2558 4 -16.11 10.66 -9.0 0.54 2557 +2559 4 -17.64 11.29 -9.8 0.54 2558 +2560 4 -20.23 11.14 -9.87 0.54 2559 +2561 4 -21.95 10.81 -9.95 0.54 2560 +2562 4 -24.78 11.07 -9.99 0.54 2561 +2563 4 -30.29 12.82 -11.29 0.54 2562 +2564 4 -31.62 13.39 -11.42 0.54 2563 +2565 4 -32.79 14.82 -11.3 0.54 2564 +2566 4 -34.55 15.14 -11.31 0.54 2565 +2567 4 -37.17 15.42 -11.34 0.54 2566 +2568 4 -38.72 15.97 -11.32 0.435 2567 +2569 4 -40.34 17.37 -11.21 0.435 2568 +2570 4 -40.87 19.06 -11.05 0.435 2569 +2571 4 -42.04 20.28 -10.95 0.435 2570 +2572 4 -44.05 21.22 -10.9 0.435 2571 +2573 4 -46.75 22.79 -10.8 0.435 2572 +2574 4 -48.18 24.63 -10.65 0.435 2573 +2575 4 -49.51 26.02 -12.19 0.435 2574 +2576 4 -51.34 27.41 -12.09 0.435 2575 +2577 4 -52.5 27.85 -10.72 0.435 2576 +2578 4 -53.43 28.87 -10.63 0.435 2577 +2579 4 -54.38 30.32 -10.51 0.435 2578 +2580 4 -54.76 32.11 -9.2 0.435 2579 +2581 4 -56.21 34.39 -8.92 0.435 2580 +2582 4 -57.23 36.41 -8.13 0.435 2581 +2583 4 -58.2 38.07 -7.91 0.435 2582 +2584 4 -60.1 39.69 -5.83 0.435 2583 +2585 4 -61.27 40.31 -4.21 0.435 2584 +2586 4 -61.99 41.34 -4.13 0.435 2585 +2587 4 -62.47 42.19 -4.2 0.435 2586 +2588 4 -62.97 43.24 -4.1 0.435 2587 +2589 4 -63.86 43.6 -4.01 0.435 2588 +2590 4 -64.93 43.28 -3.61 0.435 2589 +2591 4 -65.77 42.56 -3.49 0.435 2590 +2592 4 -66.63 42.26 -3.24 0.435 2591 +2593 4 -67.18 42.89 -3.18 0.435 2592 +2594 4 -68.05 42.83 -3.13 0.435 2593 +2595 4 -68.52 43.45 -3.16 0.435 2594 +2596 4 -70.61 42.79 -4.48 0.435 2595 +2597 4 -71.47 42.55 -4.68 0.435 2596 +2598 4 -72.13 42.47 -4.32 0.435 2597 +2599 4 -73.17 41.71 -3.9 0.435 2598 +2600 4 -74.92 42.02 -3.91 0.435 2599 +2601 4 -75.85 42.81 -3.7 0.435 2600 +2602 4 -76.78 43.62 -3.56 0.435 2601 +2603 4 -77.69 44.12 -2.62 0.435 2602 +2604 4 -79.0 44.03 -2.51 0.435 2603 +2605 4 -79.27 44.03 -0.72 0.435 2604 +2606 4 -80.38 44.39 -0.7 0.435 2605 +2607 4 -80.59 44.4 -0.93 0.435 2606 +2608 4 -80.79 44.49 -1.98 0.435 2607 +2609 4 -81.02 44.91 -1.94 0.435 2608 +2610 4 -81.51 44.93 -0.22 0.435 2609 +2611 4 -81.76 44.77 1.18 0.435 2610 +2612 4 -82.24 45.04 2.41 0.435 2611 +2613 4 -82.5 45.16 3.24 0.435 2612 +2614 4 -82.56 45.71 4.13 0.435 2613 +2615 4 -83.1 47.14 4.85 0.435 2614 +2616 4 -83.58 47.72 5.21 0.435 2615 +2617 4 -84.26 48.09 5.31 0.435 2616 +2618 4 -85.57 47.97 5.72 0.435 2617 +2619 4 -87.37 48.93 5.84 0.435 2618 +2620 4 -88.9 49.05 5.82 0.435 2619 +2621 4 -90.44 49.35 6.2 0.435 2620 +2622 4 -91.98 49.68 6.27 0.435 2621 +2623 4 -93.13 50.66 6.57 0.435 2622 +2624 4 -94.31 51.87 6.82 0.435 2623 +2625 4 -94.99 52.24 6.99 0.435 2624 +2626 4 -95.45 52.6 7.39 0.435 2625 +2627 4 3.0 7.07 -2.66 3.035 1 +2628 4 2.98 7.28 -2.64 3.035 2627 +2629 4 3.48 9.68 -2.38 2.6 2628 +2630 4 4.2 11.88 -2.14 2.385 2629 +2631 4 4.5 14.03 -1.84 2.165 2630 +2632 4 5.01 16.22 -1.6 2.275 2631 +2633 4 4.91 18.79 -1.34 2.275 2632 +2634 4 5.35 19.38 -2.54 0.325 2633 +2635 4 6.38 20.08 -2.36 0.325 2634 +2636 4 6.81 20.1 -2.28 0.325 2635 +2637 4 7.24 20.62 -2.89 0.325 2636 +2638 4 7.47 20.74 -3.86 0.325 2637 +2639 4 7.88 21.71 -4.57 0.325 2638 +2640 4 8.29 22.21 -5.05 0.325 2639 +2641 4 8.72 22.29 -5.48 0.325 2640 +2642 4 9.13 22.97 -5.47 0.325 2641 +2643 4 9.73 23.65 -5.39 0.435 2642 +2644 4 10.73 24.99 -5.22 0.435 2643 +2645 4 11.24 27.18 -4.98 0.435 2644 +2646 4 11.42 27.83 -4.91 0.435 2645 +2647 4 11.81 28.81 -5.79 0.435 2646 +2648 4 12.47 29.42 -6.99 0.435 2647 +2649 4 13.07 30.91 -8.4 0.435 2648 +2650 4 13.46 31.59 -8.47 0.435 2649 +2651 4 13.72 31.76 -10.1 0.435 2650 +2652 4 14.88 34.0 -9.92 0.435 2651 +2653 4 16.1 35.4 -10.05 0.435 2652 +2654 4 16.73 36.17 -10.85 0.435 2653 +2655 4 17.16 36.23 -11.22 0.435 2654 +2656 4 17.37 37.27 -12.69 0.435 2655 +2657 4 17.75 38.19 -12.96 0.435 2656 +2658 4 18.17 38.67 -13.2 0.435 2657 +2659 4 18.35 39.89 -14.43 0.435 2658 +2660 4 18.52 40.81 -14.78 0.435 2659 +2661 4 18.5 41.57 -15.83 0.435 2660 +2662 4 18.49 42.34 -16.96 0.435 2661 +2663 4 18.68 43.06 -17.48 0.435 2662 +2664 4 19.01 45.1 -18.17 0.435 2663 +2665 4 19.33 46.85 -18.05 0.435 2664 +2666 4 19.8 47.26 -19.66 0.435 2665 +2667 4 20.15 48.07 -18.96 0.435 2666 +2668 4 20.74 49.19 -18.76 0.435 2667 +2669 4 21.11 50.08 -18.66 0.435 2668 +2670 4 21.73 51.13 -20.12 0.435 2669 +2671 4 21.96 51.95 -21.69 0.435 2670 +2672 4 22.08 53.47 -21.6 0.435 2671 +2673 4 22.66 54.59 -21.47 0.435 2672 +2674 4 22.99 56.11 -21.3 0.435 2673 +2675 4 23.38 57.02 -21.5 0.435 2674 +2676 4 23.55 57.93 -21.78 0.435 2675 +2677 4 23.74 58.91 -22.65 0.435 2676 +2678 4 24.33 60.07 -23.12 0.435 2677 +2679 4 24.5 60.77 -23.43 0.435 2678 +2680 4 5.64 19.91 -1.2 2.275 2633 +2681 4 5.48 22.49 -0.94 2.275 2680 +2682 4 5.36 24.41 -0.74 2.275 2681 +2683 4 5.46 26.14 -0.56 2.275 2682 +2684 4 5.78 27.88 -0.38 2.275 2683 +2685 4 5.94 28.84 -0.27 2.275 2684 +2686 4 5.28 28.75 0.23 0.54 2685 +2687 4 4.63 28.71 0.21 0.54 2686 +2688 4 4.42 28.71 0.12 0.54 2687 +2689 4 4.16 29.07 0.61 0.54 2688 +2690 4 2.59 29.3 1.73 0.54 2689 +2691 4 2.12 29.65 2.21 0.54 2690 +2692 4 1.04 29.55 2.54 0.54 2691 +2693 4 0.08 29.95 4.37 0.435 2692 +2694 4 -0.79 30.33 4.39 0.435 2693 +2695 4 -0.8 30.56 4.19 0.435 2694 +2696 4 -1.48 30.95 4.29 0.435 2695 +2697 4 -2.2 31.69 5.1 0.435 2696 +2698 4 -3.14 32.4 6.06 0.435 2697 +2699 4 -3.86 33.15 6.79 0.435 2698 +2700 4 -3.89 33.56 6.98 0.435 2699 +2701 4 -3.94 34.19 7.2 0.435 2700 +2702 4 -4.86 34.74 7.69 0.435 2701 +2703 4 -5.96 35.11 7.55 0.435 2702 +2704 4 -6.0 35.49 8.12 0.435 2703 +2705 4 -6.51 35.91 10.11 0.435 2704 +2706 4 -7.45 36.38 11.18 0.435 2705 +2707 4 -8.38 36.89 11.97 0.435 2706 +2708 4 -9.56 38.04 12.81 0.435 2707 +2709 4 -10.75 39.63 13.4 0.435 2708 +2710 4 -11.26 40.38 14.37 0.435 2709 +2711 4 -12.21 41.36 14.9 0.435 2710 +2712 4 -12.71 42.11 15.65 0.435 2711 +2713 4 -13.44 42.8 16.98 0.435 2712 +2714 4 -13.96 43.76 17.9 0.435 2713 +2715 4 -15.11 44.23 18.97 0.435 2714 +2716 4 -16.25 44.45 20.26 0.435 2715 +2717 4 -17.65 46.1 20.39 0.435 2716 +2718 4 -17.68 46.53 20.44 0.435 2717 +2719 4 -18.21 47.43 21.8 0.435 2718 +2720 4 -19.14 47.96 22.51 0.435 2719 +2721 4 -19.41 48.52 23.24 0.435 2720 +2722 4 -19.95 49.4 24.83 0.435 2721 +2723 4 -20.88 50.36 25.51 0.435 2722 +2724 4 -22.09 51.74 26.14 0.435 2723 +2725 4 -23.0 52.52 26.5 0.435 2724 +2726 4 -23.95 53.73 26.76 0.435 2725 +2727 4 -25.35 54.88 27.45 0.435 2726 +2728 4 -25.88 56.08 28.16 0.435 2727 +2729 4 -27.31 57.85 29.06 0.435 2728 +2730 4 -29.43 59.99 30.14 0.435 2729 +2731 4 -31.52 62.0 30.45 0.435 2730 +2732 4 -33.11 62.97 30.58 0.435 2731 +2733 4 -34.12 65.28 30.8 0.435 2732 +2734 4 -36.02 67.96 31.03 0.435 2733 +2735 4 -37.7 70.21 31.22 0.435 2734 +2736 4 -39.61 73.12 31.48 0.435 2735 +2737 4 -41.94 75.56 31.68 0.435 2736 +2738 4 -42.55 78.31 31.95 0.435 2737 +2739 4 -44.88 80.98 32.17 0.435 2738 +2740 4 -47.95 84.66 32.48 0.435 2739 +2741 4 -49.78 86.26 32.6 0.435 2740 +2742 4 -50.31 87.47 33.24 0.435 2741 +2743 4 -50.89 89.29 34.17 0.435 2742 +2744 4 -52.06 90.42 35.24 0.435 2743 +2745 4 -53.98 92.83 35.97 0.435 2744 +2746 4 -55.83 94.64 36.12 0.435 2745 +2747 4 -57.89 96.23 36.31 0.435 2746 +2748 4 -59.06 97.68 36.43 0.435 2747 +2749 4 -60.07 99.75 36.62 0.435 2748 +2750 4 -61.49 101.57 37.15 0.435 2749 +2751 4 -63.0 104.69 37.59 0.435 2750 +2752 4 -63.54 106.1 38.25 0.435 2751 +2753 4 -64.52 107.47 39.12 0.435 2752 +2754 4 -65.05 108.64 40.13 0.435 2753 +2755 4 -65.13 109.67 40.69 0.435 2754 +2756 4 -65.66 110.64 41.53 0.435 2755 +2757 4 -66.17 111.89 41.72 0.435 2756 +2758 4 -66.25 112.88 42.58 0.435 2757 +2759 4 -66.75 113.66 43.1 0.435 2758 +2760 4 -66.82 114.72 43.36 0.435 2759 +2761 4 -67.77 115.69 43.89 0.435 2760 +2762 4 -68.89 116.26 44.07 0.435 2761 +2763 4 -69.21 117.44 45.02 0.435 2762 +2764 4 -69.94 118.45 45.26 0.435 2763 +2765 4 -69.81 119.72 45.69 0.435 2764 +2766 4 -15.97 43.66 19.73 0.435 2715 +2767 4 -16.79 42.96 19.64 0.435 2766 +2768 4 -17.44 42.62 20.49 0.435 2767 +2769 4 -18.28 42.12 20.64 0.435 2768 +2770 4 -19.6 41.98 21.13 0.435 2769 +2771 4 -20.29 42.3 21.82 0.435 2770 +2772 4 -20.98 42.08 23.51 0.435 2771 +2773 4 -22.1 42.38 24.2 0.435 2772 +2774 4 -22.98 42.01 25.11 0.435 2773 +2775 4 -23.41 41.7 25.76 0.435 2774 +2776 4 -24.25 40.89 26.78 0.435 2775 +2777 4 -25.71 39.72 26.77 0.435 2776 +2778 4 -26.52 38.57 26.87 0.435 2777 +2779 4 -26.89 37.39 27.48 0.435 2778 +2780 4 -28.8 36.6 27.65 0.435 2779 +2781 4 -29.2 35.64 28.3 0.435 2780 +2782 4 -30.48 35.08 28.75 0.435 2781 +2783 4 -30.93 34.72 29.82 0.435 2782 +2784 4 -31.32 34.29 29.47 0.435 2783 +2785 4 -31.35 34.2 30.36 0.435 2784 +2786 4 -31.78 33.59 31.8 0.435 2785 +2787 4 -32.43 33.01 32.93 0.435 2786 +2788 4 -33.27 32.26 33.29 0.435 2787 +2789 4 -33.52 32.37 34.2 0.435 2788 +2790 4 6.3 30.1 -0.5 2.06 2685 +2791 4 6.21 32.13 -1.27 2.06 2790 +2792 4 6.31 33.86 -1.09 1.95 2791 +2793 4 6.23 35.76 -2.71 1.95 2792 +2794 4 6.32 37.92 -2.48 1.95 2793 +2795 4 6.01 39.27 -2.35 1.95 2794 +2796 4 5.11 39.05 -0.73 0.435 2795 +2797 4 4.71 38.83 -0.92 0.435 2796 +2798 4 4.27 38.81 -1.01 0.435 2797 +2799 4 3.83 38.75 -0.72 0.435 2798 +2800 4 2.99 38.26 -0.64 0.54 2799 +2801 4 1.74 37.32 -0.77 0.54 2800 +2802 4 0.47 36.55 -0.28 0.54 2801 +2803 4 0.01 36.37 1.11 0.54 2802 +2804 4 -0.41 36.04 1.9 0.54 2803 +2805 4 -1.24 35.32 2.03 0.54 2804 +2806 4 -2.32 35.03 2.12 0.54 2805 +2807 4 -3.16 34.49 2.58 0.54 2806 +2808 4 -3.56 33.53 3.23 0.54 2807 +2809 4 -3.97 33.05 3.47 0.54 2808 +2810 4 -4.65 33.43 3.49 0.54 2809 +2811 4 -4.56 34.54 5.49 0.435 2810 +2812 4 -4.38 35.2 5.56 0.435 2811 +2813 4 -4.41 35.35 6.18 0.435 2812 +2814 4 -4.49 36.09 7.31 0.435 2813 +2815 4 -4.53 36.44 8.1 0.435 2814 +2816 4 -5.02 36.78 8.88 0.435 2815 +2817 4 -5.07 37.4 9.09 0.435 2816 +2818 4 -4.3 38.92 9.64 0.435 2817 +2819 4 -4.98 39.28 9.96 0.435 2818 +2820 4 -5.46 40.11 10.04 0.435 2819 +2821 4 -5.95 40.72 10.09 0.435 2820 +2822 4 -6.91 42.38 10.24 0.435 2821 +2823 4 -8.51 43.58 10.32 0.435 2822 +2824 4 -9.87 44.35 10.37 0.435 2823 +2825 4 -11.2 44.64 10.97 0.435 2824 +2826 4 -11.68 45.26 11.03 0.435 2825 +2827 4 -11.93 45.89 11.09 0.435 2826 +2828 4 -11.95 46.35 10.83 0.435 2827 +2829 4 -12.36 46.7 9.2 0.435 2828 +2830 4 -12.19 46.79 10.57 0.435 2829 +2831 4 -12.65 46.94 10.96 0.435 2830 +2832 4 -12.9 47.07 11.72 0.435 2831 +2833 4 -12.74 47.88 12.4 0.435 2832 +2834 4 -13.17 47.86 12.39 0.435 2833 +2835 4 -13.23 48.17 13.55 0.435 2834 +2836 4 -13.71 48.52 14.1 0.435 2835 +2837 4 -14.04 50.15 14.8 0.435 2836 +2838 4 -14.72 50.53 15.04 0.435 2837 +2839 4 -15.23 51.29 15.71 0.435 2838 +2840 4 -4.82 32.52 3.85 0.54 2810 +2841 4 -6.34 32.12 4.59 0.54 2840 +2842 4 -6.8 31.97 5.84 0.54 2841 +2843 4 -7.67 31.93 5.67 0.435 2842 +2844 4 -8.73 31.66 5.62 0.435 2843 +2845 4 -9.17 31.08 6.75 0.435 2844 +2846 4 -10.06 31.46 6.77 0.435 2845 +2847 4 -10.96 32.03 6.81 0.435 2846 +2848 4 -11.67 32.86 6.88 0.435 2847 +2849 4 -12.09 32.85 6.72 0.435 2848 +2850 4 -12.54 32.51 7.65 0.435 2849 +2851 4 -12.78 32.65 8.19 0.435 2850 +2852 4 -13.2 32.42 8.08 0.435 2851 +2853 4 -13.59 31.99 7.73 0.435 2852 +2854 4 -14.01 31.2 8.84 0.435 2853 +2855 4 -14.4 30.29 8.96 0.435 2854 +2856 4 -14.8 29.54 9.71 0.435 2855 +2857 4 -15.42 28.54 10.64 0.435 2856 +2858 4 -16.03 27.56 11.35 0.435 2857 +2859 4 -16.47 27.25 11.92 0.325 2858 +2860 4 -16.87 26.82 11.63 0.325 2859 +2861 4 -16.87 26.81 11.78 0.325 2860 +2862 4 -17.31 26.51 12.27 0.325 2861 +2863 4 -17.3 26.0 13.04 0.325 2862 +2864 4 -17.73 25.68 13.75 0.325 2863 +2865 4 -17.71 25.2 14.16 0.325 2864 +2866 4 -18.15 24.93 14.42 0.325 2865 +2867 4 6.01 39.73 -3.51 1.95 2795 +2868 4 6.01 39.83 -3.5 1.95 2867 +2869 4 5.88 41.88 -3.29 1.735 2868 +2870 4 5.82 42.74 -3.2 1.735 2869 +2871 4 5.94 45.07 -4.62 1.735 2870 +2872 4 5.85 46.56 -4.46 1.735 2871 +2873 4 6.01 48.21 -5.65 1.735 2872 +2874 4 6.35 49.75 -5.55 1.735 2873 +2875 4 6.51 51.43 -7.11 1.735 2874 +2876 4 6.85 52.75 -6.97 1.735 2875 +2877 4 7.21 54.39 -7.92 1.735 2876 +2878 4 7.81 56.14 -9.68 1.735 2877 +2879 4 8.84 57.58 -10.48 1.735 2878 +2880 4 9.61 59.18 -10.75 1.735 2879 +2881 4 10.39 60.51 -10.6 1.735 2880 +2882 4 9.14 60.71 -12.41 0.54 2881 +2883 4 8.27 60.66 -12.44 0.54 2882 +2884 4 7.18 60.81 -12.38 0.54 2883 +2885 4 5.84 61.37 -12.35 0.54 2884 +2886 4 5.33 62.63 -12.24 0.54 2885 +2887 4 4.58 64.09 -12.1 0.54 2886 +2888 4 2.54 65.47 -12.01 0.54 2887 +2889 4 0.95 66.98 -12.95 0.54 2888 +2890 4 0.43 68.46 -12.8 0.54 2889 +2891 4 -0.12 70.35 -12.62 0.54 2890 +2892 4 -1.77 72.41 -12.45 0.54 2891 +2893 4 -3.09 72.76 -12.44 0.54 2892 +2894 4 -4.42 72.82 -11.71 0.54 2893 +2895 4 -6.0 73.57 -11.59 0.435 2894 +2896 4 -6.65 73.54 -11.61 0.435 2895 +2897 4 -7.79 74.85 -12.34 0.435 2896 +2898 4 -7.95 74.5 -13.35 0.435 2897 +2899 4 -7.94 75.08 -14.8 0.435 2898 +2900 4 -8.59 75.36 -15.84 0.435 2899 +2901 4 -9.19 75.51 -17.72 0.435 2900 +2902 4 -9.63 75.71 -17.71 0.435 2901 +2903 4 -9.87 75.92 -17.78 0.435 2902 +2904 4 -9.82 76.11 -19.56 0.435 2903 +2905 4 -9.81 76.19 -20.38 0.435 2904 +2906 4 -9.98 76.31 -21.65 0.435 2905 +2907 4 -9.94 76.47 -23.22 0.435 2906 +2908 4 -9.91 76.6 -24.49 0.435 2907 +2909 4 -10.31 75.93 -24.56 0.435 2908 +2910 4 -10.12 77.17 -26.01 0.435 2909 +2911 4 -11.26 77.95 -25.81 0.435 2910 +2912 4 -11.7 78.47 -26.97 0.435 2911 +2913 4 -11.66 78.61 -28.31 0.435 2912 +2914 4 -11.65 79.21 -29.98 0.435 2913 +2915 4 -11.65 79.51 -30.7 0.435 2914 +2916 4 -11.64 79.8 -31.43 0.435 2915 +2917 4 -11.42 80.12 -32.22 0.435 2916 +2918 4 -11.45 81.1 -33.33 0.435 2917 +2919 4 -11.45 81.65 -34.47 0.435 2918 +2920 4 -11.44 81.92 -35.04 0.435 2919 +2921 4 -12.33 82.57 -35.6 0.435 2920 +2922 4 -12.38 83.78 -36.76 0.435 2921 +2923 4 -12.38 84.32 -37.83 0.435 2922 +2924 4 -13.08 85.41 -38.27 0.435 2923 +2925 4 -13.08 85.94 -39.19 0.435 2924 +2926 4 -13.11 86.69 -40.17 0.435 2925 +2927 4 -12.9 87.2 -40.87 0.435 2926 +2928 4 -11.38 87.59 -41.55 0.435 2927 +2929 4 -11.34 87.74 -43.04 0.435 2928 +2930 4 -11.86 89.01 -42.99 0.435 2929 +2931 4 -11.88 89.72 -43.6 0.435 2930 +2932 4 -11.92 90.66 -44.26 0.435 2931 +2933 4 -12.17 91.55 -44.76 0.435 2932 +2934 4 -12.38 91.87 -45.79 0.435 2933 +2935 4 -12.84 92.56 -46.33 0.435 2934 +2936 4 -12.89 93.41 -46.33 0.435 2935 +2937 4 -13.78 94.34 -47.53 0.435 2936 +2938 4 -13.79 95.14 -48.89 0.435 2937 +2939 4 -13.59 95.6 -49.13 0.435 2938 +2940 4 -13.38 95.66 -49.5 0.435 2939 +2941 4 -12.95 96.19 -50.18 0.435 2940 +2942 4 -12.99 97.1 -50.54 0.435 2941 +2943 4 -13.01 97.58 -51.02 0.435 2942 +2944 4 -13.48 98.48 -51.62 0.435 2943 +2945 4 -14.09 98.57 -52.9 0.435 2944 +2946 4 -14.75 99.04 -53.7 0.435 2945 +2947 4 -15.41 99.52 -54.57 0.435 2946 +2948 4 -16.08 100.2 -55.19 0.435 2947 +2949 4 -16.27 100.26 -55.95 0.435 2948 +2950 4 -17.17 100.95 -56.87 0.435 2949 +2951 4 -18.99 102.35 -56.77 0.435 2950 +2952 4 -19.92 103.9 -57.69 0.435 2951 +2953 4 -20.8 104.63 -58.92 0.435 2952 +2954 4 -21.61 107.17 -58.75 0.435 2953 +2955 4 -22.15 108.84 -58.59 0.435 2954 +2956 4 -21.92 109.48 -60.25 0.435 2955 +2957 4 -22.48 111.38 -60.14 0.435 2956 +2958 4 -22.5 111.85 -60.55 0.435 2957 +2959 4 -20.93 115.05 -61.0 0.435 2958 +2960 4 -20.98 115.94 -61.36 0.435 2959 +2961 4 -20.8 116.64 -61.59 0.435 2960 +2962 4 -10.54 76.41 -25.12 0.435 2909 +2963 4 -10.72 76.53 -26.47 0.435 2962 +2964 4 -11.15 77.06 -27.64 0.435 2963 +2965 4 -11.13 77.16 -28.68 0.435 2964 +2966 4 -11.11 77.5 -29.77 0.435 2965 +2967 4 -11.12 77.77 -30.35 0.435 2966 +2968 4 -11.75 78.28 -31.59 0.435 2967 +2969 4 -12.86 78.67 -31.8 0.435 2968 +2970 4 -12.87 78.65 -31.57 0.435 2969 +2971 4 -13.28 78.72 -32.56 0.435 2970 +2972 4 -13.3 79.18 -32.82 0.435 2971 +2973 4 -14.16 79.43 -33.72 0.435 2972 +2974 4 -15.04 80.13 -34.64 0.435 2973 +2975 4 -15.94 80.48 -34.39 0.435 2974 +2976 4 -16.38 80.66 -34.25 0.435 2975 +2977 4 -16.4 80.85 -34.07 0.435 2976 +2978 4 -17.06 81.3 -34.57 0.435 2977 +2979 4 -17.71 81.26 -34.59 0.435 2978 +2980 4 -18.57 81.83 -36.36 0.435 2979 +2981 4 -19.22 81.99 -36.36 0.435 2980 +2982 4 -19.66 81.94 -36.14 0.435 2981 +2983 4 -20.54 82.39 -36.8 0.435 2982 +2984 4 -21.8 82.49 -38.63 0.435 2983 +2985 4 -23.06 82.52 -39.71 0.435 2984 +2986 4 -23.5 82.46 -39.43 0.435 2985 +2987 4 -23.49 82.51 -39.87 0.435 2986 +2988 4 -24.11 82.36 -40.88 0.435 2987 +2989 4 -24.95 82.12 -41.23 0.435 2988 +2990 4 -25.98 81.99 -42.69 0.435 2989 +2991 4 -27.03 81.83 -43.94 0.435 2990 +2992 4 -27.65 81.66 -44.73 0.435 2991 +2993 4 -29.6 81.8 -45.29 0.435 2992 +2994 4 -31.12 82.69 -46.51 0.435 2993 +2995 4 -32.18 82.76 -47.81 0.435 2994 +2996 4 -33.91 83.23 -49.16 0.435 2995 +2997 4 -35.18 83.24 -50.09 0.435 2996 +2998 4 -36.51 84.11 -50.94 0.435 2997 +2999 4 -37.97 83.93 -52.2 0.435 2998 +3000 4 -39.06 83.87 -52.38 0.435 2999 +3001 4 -40.72 83.47 -53.74 0.435 3000 +3002 4 -42.01 83.19 -53.88 0.435 3001 +3003 4 -43.69 82.48 -54.36 0.435 3002 +3004 4 -45.64 82.59 -54.55 0.435 3003 +3005 4 -46.48 82.12 -54.7 0.435 3004 +3006 4 -47.97 82.11 -55.64 0.435 3005 +3007 4 -48.84 82.56 -56.29 0.435 3006 +3008 4 -50.16 82.99 -56.96 0.435 3007 +3009 4 -51.19 83.1 -58.77 0.435 3008 +3010 4 -4.78 75.24 -12.23 0.54 2893 +3011 4 -6.22 77.52 -12.02 0.54 3010 +3012 4 -7.69 80.02 -11.8 0.54 3011 +3013 4 -7.97 81.89 -13.34 0.54 3012 +3014 4 -8.26 83.44 -13.86 0.54 3013 +3015 4 -8.3 84.39 -14.6 0.54 3014 +3016 4 -8.67 86.73 -14.44 0.54 3015 +3017 4 -9.65 88.88 -14.77 0.54 3016 +3018 4 -10.54 89.56 -15.55 0.54 3017 +3019 4 -10.6 90.92 -16.24 0.54 3018 +3020 4 -11.49 91.9 -17.89 0.54 3019 +3021 4 -11.49 92.43 -18.74 0.54 3020 +3022 4 -11.95 93.37 -19.71 0.54 3021 +3023 4 -13.83 95.86 -19.72 0.54 3022 +3024 4 -15.05 98.0 -20.13 0.54 3023 +3025 4 -16.44 99.95 -21.02 0.54 3024 +3026 4 -17.68 102.49 -21.16 0.54 3025 +3027 4 -18.65 104.16 -21.09 0.54 3026 +3028 4 -20.59 107.5 -20.86 0.54 3027 +3029 4 -21.64 110.5 -21.17 0.54 3028 +3030 4 -23.5 112.56 -21.09 0.54 3029 +3031 4 -25.02 116.15 -21.12 0.54 3030 +3032 4 -26.44 118.01 -21.04 0.54 3031 +3033 4 -27.85 119.64 -20.91 0.54 3032 +3034 4 -27.98 121.57 -20.71 0.54 3033 +3035 4 -27.92 124.16 -20.44 0.54 3034 +3036 4 -28.67 125.92 -20.65 0.435 3035 +3037 4 -29.2 127.4 -20.51 0.435 3036 +3038 4 -29.34 129.58 -20.67 0.435 3037 +3039 4 -29.5 132.15 -20.41 0.435 3038 +3040 4 -29.58 133.45 -20.5 0.435 3039 +3041 4 -30.37 135.78 -20.42 0.435 3040 +3042 4 -30.98 138.84 -20.88 0.435 3041 +3043 4 -31.67 139.92 -21.38 0.435 3042 +3044 4 -32.43 141.61 -21.23 0.435 3043 +3045 4 -33.45 143.91 -21.01 0.435 3044 +3046 4 -34.64 145.56 -20.87 0.435 3045 +3047 4 -36.27 147.18 -20.74 0.435 3046 +3048 4 -36.78 148.69 -20.9 0.435 3047 +3049 4 -37.45 152.32 -20.62 0.435 3048 +3050 4 -37.63 155.33 -20.53 0.435 3049 +3051 4 -38.17 157.06 -20.82 0.435 3050 +3052 4 -38.28 159.07 -21.29 0.435 3051 +3053 4 -39.1 161.85 -21.4 0.435 3052 +3054 4 -39.2 163.61 -21.75 0.435 3053 +3055 4 -39.68 164.7 -22.03 0.435 3054 +3056 4 -39.76 166.29 -22.69 0.435 3055 +3057 4 -39.83 167.62 -23.16 0.435 3056 +3058 4 -39.91 168.93 -23.17 0.435 3057 +3059 4 -39.99 170.24 -23.27 0.435 3058 +3060 4 -40.07 171.78 -23.57 0.435 3059 +3061 4 -40.11 172.44 -23.65 0.435 3060 +3062 4 -40.59 173.28 -23.64 0.435 3061 +3063 4 -41.06 174.22 -24.54 0.435 3062 +3064 4 -41.52 174.62 -24.51 0.435 3063 +3065 4 10.83 61.1 -11.73 1.735 2881 +3066 4 11.81 62.66 -11.55 1.735 3065 +3067 4 11.57 63.18 -11.5 1.735 3066 +3068 4 10.69 64.17 -13.38 0.54 3067 +3069 4 10.23 64.56 -13.2 0.54 3068 +3070 4 10.2 64.99 -13.15 0.54 3069 +3071 4 9.3 65.36 -13.14 0.54 3070 +3072 4 8.17 66.16 -13.08 0.54 3071 +3073 4 7.72 66.57 -13.2 0.54 3072 +3074 4 7.25 67.24 -13.59 0.54 3073 +3075 4 6.55 68.1 -13.97 0.54 3074 +3076 4 5.86 68.94 -14.12 0.54 3075 +3077 4 4.95 70.06 -15.02 0.54 3076 +3078 4 4.44 71.34 -15.05 0.54 3077 +3079 4 4.42 72.08 -15.95 0.54 3078 +3080 4 4.38 73.0 -16.38 0.54 3079 +3081 4 4.08 74.52 -16.61 0.54 3080 +3082 4 4.25 75.45 -17.11 0.54 3081 +3083 4 4.22 76.14 -17.49 0.54 3082 +3084 4 4.63 76.89 -18.16 0.54 3083 +3085 4 5.19 78.71 -18.71 0.435 3084 +3086 4 5.14 79.9 -19.65 0.435 3085 +3087 4 5.11 80.55 -19.73 0.435 3086 +3088 4 5.1 81.05 -20.43 0.435 3087 +3089 4 4.6 82.4 -21.21 0.435 3088 +3090 4 4.55 83.56 -21.91 0.435 3089 +3091 4 4.73 84.51 -22.49 0.435 3090 +3092 4 4.87 86.06 -22.77 0.435 3091 +3093 4 4.4 87.0 -23.74 0.435 3092 +3094 4 4.08 88.73 -23.8 0.435 3093 +3095 4 3.98 90.77 -24.72 0.435 3094 +3096 4 3.62 93.14 -24.79 0.435 3095 +3097 4 3.53 94.92 -25.21 0.435 3096 +3098 4 3.48 95.81 -25.42 0.435 3097 +3099 4 2.53 97.34 -26.19 0.435 3098 +3100 4 2.46 98.91 -26.7 0.435 3099 +3101 4 1.51 100.37 -26.65 0.435 3100 +3102 4 1.42 101.69 -26.89 0.435 3101 +3103 4 0.4 104.51 -27.46 0.435 3102 +3104 4 0.34 105.61 -27.65 0.435 3103 +3105 4 -0.74 109.23 -27.6 0.435 3104 +3106 4 -0.83 111.04 -28.24 0.435 3105 +3107 4 -0.92 112.82 -28.81 0.435 3106 +3108 4 -0.82 114.8 -28.84 0.435 3107 +3109 4 -0.86 115.69 -29.2 0.435 3108 +3110 4 -0.94 116.77 -29.16 0.435 3109 +3111 4 -0.77 117.95 -29.94 0.435 3110 +3112 4 -0.38 118.88 -30.28 0.435 3111 +3113 4 -0.82 119.6 -31.27 0.435 3112 +3114 4 -0.38 119.68 -31.78 0.435 3113 +3115 4 11.52 63.81 -11.43 1.735 3067 +3116 4 11.74 63.82 -11.43 1.735 3115 +3117 4 13.25 63.84 -11.47 1.735 3116 +3118 4 12.89 65.33 -9.36 0.435 3117 +3119 4 12.86 66.0 -9.52 0.435 3118 +3120 4 12.38 66.35 -9.04 0.435 3119 +3121 4 12.12 66.36 -7.24 0.435 3120 +3122 4 11.63 67.21 -7.24 0.435 3121 +3123 4 11.6 67.66 -7.41 0.435 3122 +3124 4 11.58 67.57 -6.53 0.435 3123 +3125 4 11.55 67.71 -5.76 0.435 3124 +3126 4 11.53 67.65 -5.16 0.435 3125 +3127 4 11.48 67.98 -4.3 0.435 3126 +3128 4 11.47 68.15 -3.91 0.435 3127 +3129 4 11.6 68.9 -2.54 0.435 3128 +3130 4 11.97 69.51 -1.86 0.435 3129 +3131 4 12.27 71.11 -0.41 0.435 3130 +3132 4 12.4 72.17 0.0 0.435 3131 +3133 4 12.9 74.54 0.4 0.435 3132 +3134 4 12.73 77.06 1.26 0.435 3133 +3135 4 12.81 78.97 1.76 0.435 3134 +3136 4 13.33 80.92 2.19 0.435 3135 +3137 4 13.03 81.37 3.89 0.435 3136 +3138 4 13.37 82.9 3.99 0.435 3137 +3139 4 13.94 84.23 4.21 0.435 3138 +3140 4 14.28 85.23 5.23 0.435 3139 +3141 4 14.23 85.58 6.09 0.435 3140 +3142 4 13.48 86.72 7.09 0.435 3141 +3143 4 13.17 88.21 7.24 0.435 3142 +3144 4 13.06 89.92 7.41 0.435 3143 +3145 4 12.95 91.64 7.59 0.435 3144 +3146 4 11.87 95.01 7.91 0.435 3145 +3147 4 12.01 95.28 9.68 0.435 3146 +3148 4 11.52 96.32 9.78 0.435 3147 +3149 4 11.44 97.4 9.81 0.435 3148 +3150 4 11.38 98.23 10.19 0.435 3149 +3151 4 11.35 98.63 10.54 0.435 3150 +3152 4 10.65 98.92 11.54 0.435 3151 +3153 4 10.17 99.46 12.25 0.435 3152 +3154 4 9.61 100.87 13.06 0.435 3153 +3155 4 9.55 101.71 13.3 0.435 3154 +3156 4 9.19 104.04 13.61 0.435 3155 +3157 4 9.07 105.97 13.81 0.435 3156 +3158 4 8.93 107.55 15.24 0.435 3157 +3159 4 8.79 109.7 15.46 0.435 3158 +3160 4 7.78 111.79 15.66 0.435 3159 +3161 4 7.23 113.42 16.41 0.435 3160 +3162 4 7.14 114.69 16.7 0.435 3161 +3163 4 7.26 116.18 17.08 0.435 3162 +3164 4 5.78 118.62 17.75 0.435 3163 +3165 4 5.29 119.67 17.92 0.435 3164 +3166 4 5.44 120.49 18.39 0.435 3165 +3167 4 5.72 122.61 19.07 0.435 3166 +3168 4 6.0 124.99 19.39 0.435 3167 +3169 4 6.73 127.18 19.64 0.435 3168 +3170 4 7.67 129.38 19.97 0.435 3169 +3171 4 9.27 131.62 20.31 0.435 3170 +3172 4 9.84 132.7 20.66 0.435 3171 +3173 4 10.56 134.66 21.26 0.435 3172 +3174 4 11.08 136.57 21.99 0.435 3173 +3175 4 11.64 137.83 22.67 0.435 3174 +3176 4 11.94 139.56 23.61 0.435 3175 +3177 4 12.46 141.23 24.62 0.435 3176 +3178 4 12.83 142.07 25.09 0.435 3177 +3179 4 13.15 143.55 25.71 0.435 3178 +3180 4 13.25 145.0 26.46 0.435 3179 +3181 4 14.59 147.82 27.31 0.435 3180 +3182 4 14.89 149.25 28.45 0.435 3181 +3183 4 15.2 150.4 30.22 0.435 3182 +3184 4 16.2 151.74 30.39 0.435 3183 +3185 4 16.82 152.18 30.75 0.435 3184 +3186 4 17.37 153.69 31.22 0.435 3185 +3187 4 17.9 154.62 33.14 0.435 3186 +3188 4 18.71 155.53 33.25 0.435 3187 +3189 4 19.64 157.39 34.75 0.435 3188 +3190 4 19.77 158.42 35.39 0.435 3189 +3191 4 20.74 160.19 35.66 0.435 3190 +3192 4 21.26 162.15 36.03 0.435 3191 +3193 4 22.91 163.28 36.57 0.435 3192 +3194 4 23.68 164.78 37.26 0.435 3193 +3195 4 24.03 165.84 37.68 0.435 3194 +3196 4 24.79 167.34 38.39 0.435 3195 +3197 4 24.84 169.66 39.23 0.435 3196 +3198 4 25.09 172.44 39.68 0.435 3197 +3199 4 24.97 174.12 40.3 0.435 3198 +3200 4 24.8 176.66 40.86 0.435 3199 +3201 4 24.7 177.86 41.74 0.435 3200 +3202 4 24.82 178.89 42.37 0.435 3201 +3203 4 24.01 181.41 42.76 0.435 3202 +3204 4 23.5 182.66 43.03 0.435 3203 +3205 4 23.39 184.36 43.28 0.435 3204 +3206 4 23.26 186.28 43.63 0.435 3205 +3207 4 22.7 187.88 44.53 0.435 3206 +3208 4 22.96 190.22 45.31 0.435 3207 +3209 4 23.5 191.94 45.8 0.435 3208 +3210 4 22.95 193.82 46.05 0.435 3209 +3211 4 23.02 195.76 46.41 0.435 3210 +3212 4 22.95 196.76 47.19 0.435 3211 +3213 4 22.88 197.31 48.15 0.435 3212 +3214 4 21.95 198.07 48.73 0.435 3213 +3215 4 22.29 199.59 48.9 0.435 3214 +3216 4 22.45 200.44 49.22 0.435 3215 +3217 4 22.37 201.19 50.27 0.435 3216 +3218 4 22.3 202.24 50.53 0.435 3217 +3219 4 21.82 202.86 50.58 0.435 3218 +3220 4 21.1 203.62 51.17 0.435 3219 +3221 4 20.21 203.99 51.26 0.435 3220 +3222 4 19.9 205.44 51.71 0.435 3221 +3223 4 20.42 207.19 51.97 0.435 3222 +3224 4 21.61 208.97 52.42 0.435 3223 +3225 4 22.34 211.16 52.73 0.435 3224 +3226 4 24.35 213.47 53.1 0.435 3225 +3227 4 24.84 215.84 53.66 0.435 3226 +3228 4 25.98 218.24 54.3 0.435 3227 +3229 4 26.73 219.72 55.16 0.435 3228 +3230 4 27.48 221.44 55.81 0.435 3229 +3231 4 27.98 223.81 56.37 0.435 3230 +3232 4 28.33 224.65 56.91 0.435 3231 +3233 4 29.14 225.76 57.12 0.435 3232 +3234 4 29.24 227.22 57.8 0.435 3233 +3235 4 29.79 228.5 58.4 0.435 3234 +3236 4 30.33 230.21 58.96 0.435 3235 +3237 4 30.69 231.3 59.24 0.435 3236 +3238 4 30.8 232.52 60.19 0.435 3237 +3239 4 30.71 233.79 60.4 0.435 3238 +3240 4 14.76 86.98 7.6 0.435 3141 +3241 4 15.26 88.6 9.07 0.435 3240 +3242 4 15.39 89.85 9.57 0.435 3241 +3243 4 15.1 90.35 10.91 0.435 3242 +3244 4 15.22 91.87 11.07 0.435 3243 +3245 4 15.79 93.19 11.22 0.435 3244 +3246 4 15.76 94.42 9.83 0.325 3245 +3247 4 15.0 96.1 9.99 0.325 3246 +3248 4 14.21 98.2 10.19 0.325 3247 +3249 4 13.43 100.31 10.39 0.325 3248 +3250 4 12.58 103.47 10.69 0.325 3249 +3251 4 12.58 106.7 11.03 0.325 3250 +3252 4 14.55 64.69 -12.56 1.735 3117 +3253 4 15.81 65.98 -13.89 1.735 3252 +3254 4 16.36 67.52 -13.72 1.735 3253 +3255 4 16.59 67.59 -14.31 0.435 3254 +3256 4 17.05 67.18 -14.27 0.435 3255 +3257 4 17.53 66.85 -14.97 0.435 3256 +3258 4 17.97 66.91 -15.26 0.435 3257 +3259 4 17.76 66.94 -15.71 0.435 3258 +3260 4 18.22 67.07 -16.67 0.435 3259 +3261 4 18.67 67.16 -17.25 0.435 3260 +3262 4 19.12 66.8 -17.65 0.435 3261 +3263 4 19.58 66.61 -17.74 0.435 3262 +3264 4 20.04 66.21 -17.77 0.435 3263 +3265 4 20.92 66.3 -18.11 0.435 3264 +3266 4 21.74 67.02 -18.25 0.435 3265 +3267 4 22.55 67.93 -18.14 0.435 3266 +3268 4 22.96 68.41 -18.37 0.435 3267 +3269 4 23.5 70.22 -18.62 0.435 3268 +3270 4 24.35 70.71 -18.7 0.435 3269 +3271 4 24.6 71.08 -20.17 0.435 3270 +3272 4 24.77 71.55 -20.2 0.435 3271 +3273 4 25.42 72.35 -21.37 0.435 3272 +3274 4 25.44 72.44 -22.27 0.435 3273 +3275 4 26.1 72.54 -22.78 0.435 3274 +3276 4 26.91 73.47 -22.81 0.435 3275 +3277 4 26.93 73.57 -23.7 0.435 3276 +3278 4 27.56 74.06 -23.93 0.435 3277 +3279 4 27.76 74.79 -24.61 0.435 3278 +3280 4 27.99 74.91 -25.57 0.435 3279 +3281 4 28.64 74.96 -25.7 0.435 3280 +3282 4 29.24 75.88 -25.82 0.435 3281 +3283 4 29.46 75.91 -26.04 0.435 3282 +3284 4 29.7 76.01 -26.78 0.435 3283 +3285 4 30.58 76.15 -27.65 0.435 3284 +3286 4 30.82 75.97 -27.96 0.435 3285 +3287 4 31.27 76.09 -28.76 0.435 3286 +3288 4 31.28 76.14 -29.28 0.435 3287 +3289 4 32.19 75.82 -29.9 0.435 3288 +3290 4 32.43 75.94 -30.78 0.435 3289 +3291 4 33.12 75.59 -31.18 0.435 3290 +3292 4 33.35 75.45 -31.87 0.435 3291 +3293 4 33.84 75.15 -32.87 0.435 3292 +3294 4 34.33 74.57 -33.29 0.435 3293 +3295 4 35.03 74.06 -34.15 0.435 3294 +3296 4 35.52 73.23 -34.31 0.435 3295 +3297 4 36.01 72.94 -35.38 0.435 3296 +3298 4 36.49 72.37 -35.8 0.435 3297 +3299 4 36.58 71.36 -36.59 0.435 3298 +3300 4 37.28 70.55 -36.73 0.435 3299 +3301 4 37.57 69.76 -37.33 0.435 3300 +3302 4 37.84 69.24 -38.44 0.435 3301 +3303 4 38.1 68.89 -39.14 0.435 3302 +3304 4 38.35 68.49 -39.33 0.435 3303 +3305 4 38.57 69.09 -40.77 0.435 3304 +3306 4 39.04 68.68 -40.72 0.435 3305 +3307 4 39.46 68.69 -40.56 0.435 3306 +3308 4 39.71 68.28 -40.67 0.435 3307 +3309 4 39.96 67.9 -41.01 0.435 3308 +3310 4 40.45 67.35 -41.73 0.435 3309 +3311 4 40.72 66.78 -42.38 0.435 3310 +3312 4 40.73 66.8 -42.61 0.435 3311 +3313 4 40.78 66.79 -44.49 0.435 3312 +3314 4 41.04 66.72 -45.77 0.435 3313 +3315 4 41.07 66.56 -46.39 0.435 3314 +3316 4 41.32 66.69 -47.51 0.435 3315 +3317 4 41.6 65.92 -48.34 0.435 3316 +3318 4 41.64 65.87 -49.85 0.435 3317 +3319 4 41.67 66.0 -51.11 0.435 3318 +3320 4 41.94 65.66 -52.05 0.435 3319 +3321 4 41.98 65.53 -52.73 0.435 3320 +3322 4 42.21 65.35 -53.05 0.435 3321 +3323 4 42.24 65.49 -54.32 0.435 3322 +3324 4 42.47 65.6 -55.28 0.435 3323 +3325 4 42.51 65.46 -55.89 0.435 3324 +3326 4 42.54 65.59 -57.24 0.435 3325 +3327 4 42.79 65.5 -58.37 0.435 3326 +3328 4 43.28 65.21 -59.52 0.435 3327 +3329 4 43.54 65.11 -60.43 0.435 3328 +3330 4 43.98 64.94 -60.66 0.435 3329 +3331 4 44.43 64.77 -60.82 0.435 3330 +3332 4 44.91 64.44 -61.59 0.435 3331 +3333 4 45.37 64.05 -61.7 0.435 3332 +3334 4 45.82 63.87 -61.86 0.435 3333 +3335 4 46.48 63.71 -61.93 0.435 3334 +3336 4 47.57 63.79 -61.98 0.435 3335 +3337 4 48.37 64.69 -61.87 0.435 3336 +3338 4 48.83 64.82 -62.82 0.435 3337 +3339 4 48.86 64.93 -63.86 0.435 3338 +3340 4 49.29 64.96 -63.92 0.435 3339 +3341 4 49.53 65.08 -64.89 0.435 3340 +3342 4 50.82 65.65 -65.4 0.435 3341 +3343 4 52.12 65.5 -65.24 0.435 3342 +3344 4 53.39 65.98 -64.92 0.435 3343 +3345 4 54.04 66.02 -64.91 0.435 3344 +3346 4 55.14 65.66 -64.92 0.435 3345 +3347 4 56.66 65.75 -64.8 0.435 3346 +3348 4 57.54 65.36 -64.82 0.435 3347 +3349 4 58.62 65.42 -64.79 0.435 3348 +3350 4 59.07 65.22 -64.65 0.435 3349 +3351 4 60.58 65.58 -65.03 0.435 3350 +3352 4 61.44 65.63 -65.0 0.435 3351 +3353 4 61.67 65.66 -65.14 0.435 3352 +3354 4 62.15 65.15 -66.16 0.435 3353 +3355 4 62.63 65.04 -67.0 0.435 3354 +3356 4 62.87 64.66 -67.4 0.435 3355 +3357 4 63.35 64.32 -67.95 0.435 3356 +3358 4 64.03 63.95 -68.12 0.435 3357 +3359 4 65.16 63.42 -68.6 0.435 3358 +3360 4 65.86 63.12 -69.6 0.435 3359 +3361 4 66.29 63.16 -69.74 0.435 3360 +3362 4 67.0 62.64 -70.53 0.435 3361 +3363 4 67.91 62.34 -71.29 0.435 3362 +3364 4 68.61 61.75 -71.49 0.435 3363 +3365 4 68.63 61.58 -71.88 0.435 3364 +3366 4 69.09 61.2 -72.21 0.435 3365 +3367 4 69.59 60.93 -73.5 0.435 3366 +3368 4 70.06 60.58 -74.06 0.435 3367 +3369 4 70.3 60.72 -75.17 0.435 3368 +3370 4 70.78 60.38 -75.87 0.435 3369 +3371 4 71.04 60.33 -77.3 0.435 3370 +3372 4 71.5 59.94 -77.41 0.435 3371 +3373 4 71.99 59.13 -77.7 0.435 3372 +3374 4 72.18 59.27 -76.93 0.435 3373 +3375 4 72.39 59.29 -76.92 0.435 3374 +3376 4 72.63 58.86 -76.81 0.435 3375 +3377 4 72.63 58.9 -77.19 0.435 3376 +3378 4 72.87 58.99 -78.0 0.435 3377 +3379 4 73.1 59.57 -79.21 0.435 3378 +3380 4 74.62 59.45 -79.19 0.435 3379 +3381 4 74.86 59.55 -80.01 0.435 3380 +3382 4 74.89 59.7 -81.42 0.435 3381 +3383 4 75.78 59.55 -81.64 0.435 3382 +3384 4 76.0 59.59 -81.94 0.435 3383 +3385 4 76.47 59.49 -82.69 0.435 3384 +3386 4 76.92 59.63 -83.79 0.435 3385 +3387 4 77.38 59.5 -84.4 0.435 3386 +3388 4 77.66 59.49 -86.27 0.435 3387 +3389 4 78.1 59.31 -86.36 0.435 3388 +3390 4 78.36 59.22 -87.42 0.435 3389 +3391 4 78.59 59.27 -87.78 0.435 3390 +3392 4 79.03 59.39 -88.66 0.435 3391 +3393 4 79.72 59.04 -89.06 0.435 3392 +3394 4 80.0 58.79 -90.73 0.435 3393 +3395 4 81.14 58.24 -90.99 0.435 3394 +3396 4 82.05 57.71 -91.55 0.435 3395 +3397 4 82.73 57.31 -91.58 0.435 3396 +3398 4 83.82 57.18 -91.64 0.435 3397 +3399 4 16.39 67.89 -15.27 1.735 3254 +3400 4 16.95 69.7 -16.05 1.515 3399 +3401 4 17.06 71.43 -15.87 1.515 3400 +3402 4 17.17 72.62 -14.76 1.41 3401 +3403 4 17.53 73.74 -14.79 1.515 3402 +3404 4 17.48 74.59 -14.7 1.515 3403 +3405 4 17.45 75.02 -14.66 1.515 3404 +3406 4 16.45 73.5 -14.24 0.435 3405 +3407 4 15.36 73.43 -14.27 0.435 3406 +3408 4 13.39 73.76 -14.35 0.435 3407 +3409 4 11.64 74.09 -14.44 0.435 3408 +3410 4 10.05 74.79 -13.8 0.435 3409 +3411 4 9.35 75.57 -13.44 0.435 3410 +3412 4 7.4 75.18 -12.92 0.435 3411 +3413 4 4.82 74.81 -13.02 0.435 3412 +3414 4 2.25 74.44 -13.12 0.435 3413 +3415 4 0.35 73.55 -13.25 0.435 3414 +3416 4 -1.0 74.06 -12.63 0.435 3415 +3417 4 -1.47 74.68 -12.58 0.435 3416 +3418 4 -2.36 75.29 -12.76 0.435 3417 +3419 4 -3.73 75.48 -11.19 0.435 3418 +3420 4 -4.63 76.06 -11.15 0.435 3419 +3421 4 -5.51 76.84 -11.09 0.435 3420 +3422 4 -6.02 77.84 -10.48 0.435 3421 +3423 4 -6.09 78.91 -10.37 0.435 3422 +3424 4 -6.59 79.95 -10.27 0.435 3423 +3425 4 -6.67 81.03 -10.16 0.435 3424 +3426 4 -6.5 82.16 -10.5 0.435 3425 +3427 4 -6.63 84.09 -10.3 0.435 3426 +3428 4 -7.17 85.98 -10.12 0.435 3427 +3429 4 -8.66 88.7 -9.87 0.435 3428 +3430 4 -10.18 92.25 -9.54 0.435 3429 +3431 4 -11.29 95.29 -7.96 0.435 3430 +3432 4 -12.28 97.37 -7.77 0.435 3431 +3433 4 -13.72 99.44 -7.52 0.435 3432 +3434 4 -14.51 101.54 -7.32 0.435 3433 +3435 4 -15.74 103.54 -6.46 0.435 3434 +3436 4 -17.2 105.51 -5.39 0.435 3435 +3437 4 -18.65 107.78 -5.11 0.435 3436 +3438 4 -20.35 110.44 -4.58 0.435 3437 +3439 4 -20.51 113.02 -4.31 0.435 3438 +3440 4 -20.41 114.73 -3.9 0.435 3439 +3441 4 -22.87 119.29 -3.49 0.435 3440 +3442 4 -24.08 121.16 -3.33 0.435 3441 +3443 4 -25.03 122.33 -2.62 0.435 3442 +3444 4 -25.14 123.81 -2.18 0.435 3443 +3445 4 -25.19 123.83 -0.22 0.435 3444 +3446 4 -26.19 124.85 1.74 0.435 3445 +3447 4 -27.85 127.13 1.94 0.435 3446 +3448 4 -28.31 127.53 1.97 0.435 3447 +3449 4 -28.82 128.79 2.09 0.435 3448 +3450 4 -29.33 129.3 3.03 0.435 3449 +3451 4 -30.29 130.73 3.38 0.435 3450 +3452 4 -30.4 132.44 3.71 0.435 3451 +3453 4 -31.42 134.48 4.26 0.435 3452 +3454 4 -32.49 137.39 4.92 0.435 3453 +3455 4 -33.02 138.81 5.58 0.435 3454 +3456 4 -32.92 140.5 6.14 0.435 3455 +3457 4 -32.85 142.62 6.66 0.435 3456 +3458 4 -33.39 144.08 7.02 0.435 3457 +3459 4 -33.95 145.92 7.73 0.435 3458 +3460 4 -34.52 147.79 8.28 0.435 3459 +3461 4 -35.1 150.11 8.59 0.435 3460 +3462 4 -35.18 151.11 9.37 0.435 3461 +3463 4 -36.59 152.73 9.58 0.435 3462 +3464 4 -37.54 153.97 9.69 0.435 3463 +3465 4 -37.63 155.25 9.89 0.435 3464 +3466 4 -37.46 156.05 10.05 0.435 3465 +3467 4 -37.53 156.86 10.66 0.435 3466 +3468 4 -37.4 157.55 12.39 0.435 3467 +3469 4 -37.01 158.22 12.47 0.435 3468 +3470 4 -37.06 158.85 12.76 0.435 3469 +3471 4 -36.67 159.26 13.26 0.435 3470 +3472 4 -24.84 124.92 -0.1 0.435 3445 +3473 4 -24.92 126.2 0.02 0.435 3472 +3474 4 -24.99 127.3 -0.08 0.435 3473 +3475 4 -24.46 129.01 0.55 0.435 3474 +3476 4 -24.35 130.72 0.8 0.435 3475 +3477 4 -24.97 133.45 1.37 0.435 3476 +3478 4 -25.4 136.85 1.87 0.435 3477 +3479 4 -25.47 137.64 2.63 0.435 3478 +3480 4 -26.48 139.71 2.97 0.435 3479 +3481 4 -27.47 141.56 3.36 0.435 3480 +3482 4 -5.99 76.83 -10.88 0.435 3421 +3483 4 -7.05 76.32 -10.88 0.435 3482 +3484 4 -9.26 76.79 -10.58 0.435 3483 +3485 4 -9.91 76.17 -9.08 0.435 3484 +3486 4 -12.01 74.73 -9.05 0.435 3485 +3487 4 -14.12 73.95 -9.11 0.435 3486 +3488 4 -15.62 73.64 -9.18 0.435 3487 +3489 4 -19.31 73.63 -9.19 0.435 3488 +3490 4 -21.22 72.86 -9.31 0.435 3489 +3491 4 -22.9 71.89 -9.38 0.435 3490 +3492 4 -24.41 71.79 -9.35 0.435 3491 +3493 4 -26.13 71.45 -9.2 0.435 3492 +3494 4 -30.21 70.75 -9.22 0.435 3493 +3495 4 -33.67 70.54 -9.32 0.435 3494 +3496 4 -36.46 69.95 -9.45 0.435 3495 +3497 4 -38.34 68.95 -9.45 0.435 3496 +3498 4 -40.88 67.93 -9.61 0.435 3497 +3499 4 -44.5 66.64 -9.83 0.435 3498 +3500 4 -47.67 65.37 -10.04 0.435 3499 +3501 4 -50.67 64.75 -10.17 0.435 3500 +3502 4 -54.34 64.54 -10.28 0.435 3501 +3503 4 -58.4 63.64 -10.47 0.435 3502 +3504 4 -60.7 62.21 -10.67 0.435 3503 +3505 4 -63.37 59.9 -10.98 0.435 3504 +3506 4 -64.95 57.43 -11.27 0.435 3505 +3507 4 -67.84 55.11 -11.58 0.435 3506 +3508 4 -69.04 53.53 -11.77 0.435 3507 +3509 4 -69.82 52.19 -11.93 0.435 3508 +3510 4 -0.14 74.49 -13.09 0.435 3415 +3511 4 -2.29 74.13 -12.96 0.435 3510 +3512 4 -4.92 74.34 -12.39 0.435 3511 +3513 4 -7.74 74.17 -12.48 0.435 3512 +3514 4 -9.88 73.6 -12.52 0.435 3513 +3515 4 -11.39 73.5 -12.56 0.435 3514 +3516 4 -13.11 73.17 -12.56 0.435 3515 +3517 4 -13.92 72.47 -12.65 0.435 3516 +3518 4 -14.71 71.15 -12.8 0.435 3517 +3519 4 -15.47 69.1 -12.43 0.435 3518 +3520 4 -16.66 67.3 -12.57 0.435 3519 +3521 4 -17.45 65.89 -12.06 0.435 3520 +3522 4 -18.2 63.9 -12.21 0.435 3521 +3523 4 -18.15 63.47 -12.86 0.435 3522 +3524 4 -18.55 62.79 -12.63 0.435 3523 +3525 4 -18.95 62.39 -13.21 0.435 3524 +3526 4 -19.88 60.72 -14.61 0.435 3525 +3527 4 -21.28 58.7 -14.85 0.435 3526 +3528 4 -22.06 57.89 -15.86 0.435 3527 +3529 4 -22.41 56.6 -16.22 0.435 3528 +3530 4 -23.38 54.82 -16.51 0.435 3529 +3531 4 -24.54 52.88 -17.41 0.435 3530 +3532 4 -26.19 51.72 -17.72 0.435 3531 +3533 4 -26.54 50.68 -18.44 0.435 3532 +3534 4 -27.04 48.57 -19.42 0.435 3533 +3535 4 -27.38 47.06 -19.59 0.435 3534 +3536 4 -28.17 45.94 -19.8 0.435 3535 +3537 4 -28.93 44.39 -20.05 0.435 3536 +3538 4 -29.72 43.86 -21.56 0.435 3537 +3539 4 -30.65 41.7 -22.33 0.435 3538 +3540 4 -30.36 40.42 -22.53 0.435 3539 +3541 4 -30.27 39.45 -23.46 0.435 3540 +3542 4 -31.39 36.61 -24.08 0.435 3541 +3543 4 -31.96 35.79 -24.86 0.435 3542 +3544 4 -32.3 34.47 -25.08 0.435 3543 +3545 4 -33.54 33.32 -25.23 0.435 3544 +3546 4 -33.44 32.35 -26.23 0.435 3545 +3547 4 -33.76 30.65 -26.79 0.435 3546 +3548 4 -34.11 29.86 -27.86 0.435 3547 +3549 4 -34.46 28.81 -28.43 0.435 3548 +3550 4 -35.04 28.29 -30.08 0.435 3549 +3551 4 -35.8 26.74 -30.26 0.435 3550 +3552 4 -36.6 25.61 -30.24 0.435 3551 +3553 4 -36.34 25.0 -30.67 0.435 3552 +3554 4 -36.7 24.46 -32.02 0.435 3553 +3555 4 -36.98 22.37 -32.85 0.435 3554 +3556 4 17.35 77.3 -15.78 1.515 3404 +3557 4 17.49 78.38 -15.67 1.515 3556 +3558 4 18.01 80.57 -15.5 1.41 3557 +3559 4 18.55 82.33 -15.31 1.41 3558 +3560 4 19.09 84.08 -15.11 1.41 3559 +3561 4 20.1 85.76 -16.05 1.41 3560 +3562 4 20.64 87.52 -15.85 1.41 3561 +3563 4 21.46 88.75 -16.75 1.41 3562 +3564 4 22.34 88.42 -16.77 1.41 3563 +3565 4 23.52 87.51 -17.74 0.54 3564 +3566 4 23.95 87.53 -17.73 0.54 3565 +3567 4 24.17 87.53 -17.5 0.54 3566 +3568 4 24.41 87.16 -17.99 0.54 3567 +3569 4 25.11 86.91 -19.35 0.54 3568 +3570 4 25.6 86.31 -19.62 0.54 3569 +3571 4 26.32 85.31 -19.94 0.54 3570 +3572 4 26.79 84.93 -20.27 0.54 3571 +3573 4 27.28 84.13 -20.56 0.54 3572 +3574 4 27.74 84.02 -21.32 0.54 3573 +3575 4 28.44 83.42 -21.51 0.54 3574 +3576 4 29.36 82.93 -22.45 0.54 3575 +3577 4 30.08 82.47 -23.84 0.54 3576 +3578 4 30.53 82.53 -24.12 0.54 3577 +3579 4 31.02 82.28 -25.64 0.54 3578 +3580 4 31.51 81.73 -26.44 0.54 3579 +3581 4 31.98 81.4 -26.99 0.54 3580 +3582 4 32.48 80.89 -28.16 0.54 3581 +3583 4 32.74 80.26 -28.3 0.54 3582 +3584 4 33.21 79.91 -28.77 0.54 3583 +3585 4 33.27 79.1 -29.23 0.54 3584 +3586 4 33.53 78.73 -29.79 0.54 3585 +3587 4 34.01 78.41 -30.57 0.54 3586 +3588 4 34.69 78.04 -30.81 0.54 3587 +3589 4 35.37 77.67 -30.99 0.54 3588 +3590 4 36.26 77.57 -31.51 0.54 3589 +3591 4 36.73 77.44 -32.18 0.54 3590 +3592 4 36.96 77.25 -32.35 0.54 3591 +3593 4 37.4 77.09 -32.51 0.54 3592 +3594 4 37.87 76.73 -32.92 0.54 3593 +3595 4 38.35 76.38 -33.46 0.54 3594 +3596 4 38.82 76.03 -34.09 0.54 3595 +3597 4 39.54 75.27 -34.68 0.54 3596 +3598 4 40.68 74.26 -34.83 0.54 3597 +3599 4 40.93 73.87 -35.02 0.54 3598 +3600 4 41.0 73.31 -35.98 0.54 3599 +3601 4 41.73 72.6 -37.01 0.54 3600 +3602 4 42.19 72.5 -37.85 0.54 3601 +3603 4 42.9 71.71 -38.21 0.54 3602 +3604 4 42.92 71.53 -38.6 0.54 3603 +3605 4 43.41 70.98 -39.18 0.54 3604 +3606 4 43.88 70.63 -39.73 0.54 3605 +3607 4 44.39 69.88 -40.7 0.54 3606 +3608 4 45.08 69.07 -40.77 0.54 3607 +3609 4 45.56 68.45 -40.82 0.54 3608 +3610 4 46.27 67.65 -41.04 0.54 3609 +3611 4 47.36 67.79 -41.67 0.54 3610 +3612 4 48.06 67.46 -42.29 0.54 3611 +3613 4 48.49 67.5 -42.43 0.54 3612 +3614 4 48.75 66.85 -42.27 0.54 3613 +3615 4 48.75 66.87 -42.42 0.54 3614 +3616 4 49.47 66.68 -44.38 0.54 3615 +3617 4 49.47 66.7 -44.53 0.54 3616 +3618 4 49.96 66.14 -45.18 0.54 3617 +3619 4 50.22 65.76 -45.58 0.54 3618 +3620 4 50.92 65.22 -46.3 0.54 3619 +3621 4 51.38 64.82 -46.33 0.54 3620 +3622 4 51.84 64.46 -46.74 0.54 3621 +3623 4 52.52 64.08 -46.83 0.54 3622 +3624 4 52.99 63.99 -47.81 0.54 3623 +3625 4 53.23 63.85 -48.28 0.54 3624 +3626 4 53.26 63.73 -49.26 0.54 3625 +3627 4 53.3 63.87 -50.6 0.54 3626 +3628 4 53.77 63.47 -50.71 0.54 3627 +3629 4 53.84 62.68 -51.47 0.435 3628 +3630 4 53.87 62.53 -52.16 0.435 3629 +3631 4 53.66 62.32 -52.33 0.435 3630 +3632 4 54.12 61.92 -52.37 0.435 3631 +3633 4 54.8 61.29 -52.26 0.435 3632 +3634 4 55.48 60.92 -52.37 0.435 3633 +3635 4 55.94 60.74 -52.44 0.435 3634 +3636 4 56.67 60.01 -53.34 0.435 3635 +3637 4 57.14 59.18 -53.41 0.435 3636 +3638 4 57.41 58.55 -53.54 0.435 3637 +3639 4 57.9 57.73 -53.69 0.435 3638 +3640 4 58.36 57.36 -54.02 0.435 3639 +3641 4 58.83 56.99 -54.35 0.435 3640 +3642 4 59.52 56.71 -55.34 0.435 3641 +3643 4 59.99 56.59 -56.1 0.435 3642 +3644 4 60.7 56.1 -57.19 0.435 3643 +3645 4 61.18 55.79 -58.11 0.435 3644 +3646 4 61.65 55.4 -58.29 0.435 3645 +3647 4 62.14 55.15 -59.74 0.435 3646 +3648 4 62.63 54.63 -60.76 0.435 3647 +3649 4 62.91 54.35 -62.06 0.435 3648 +3650 4 63.18 53.75 -62.5 0.435 3649 +3651 4 63.68 53.28 -63.96 0.435 3650 +3652 4 63.73 52.95 -64.97 0.435 3651 +3653 4 64.24 52.46 -66.3 0.435 3652 +3654 4 64.48 52.33 -66.98 0.435 3653 +3655 4 64.97 51.83 -68.08 0.435 3654 +3656 4 65.23 51.43 -68.26 0.435 3655 +3657 4 65.5 50.85 -68.84 0.435 3656 +3658 4 65.54 50.75 -69.9 0.435 3657 +3659 4 65.79 50.96 -71.84 0.435 3658 +3660 4 66.29 50.71 -73.21 0.435 3659 +3661 4 66.34 50.61 -74.43 0.435 3660 +3662 4 67.5 49.67 -75.25 0.435 3661 +3663 4 67.99 49.17 -76.35 0.435 3662 +3664 4 68.93 48.42 -76.92 0.435 3663 +3665 4 69.39 48.27 -77.31 0.435 3664 +3666 4 70.3 47.72 -77.72 0.435 3665 +3667 4 71.01 47.23 -78.89 0.435 3666 +3668 4 71.95 46.73 -79.82 0.435 3667 +3669 4 72.83 46.36 -79.84 0.435 3668 +3670 4 74.2 45.88 -80.75 0.435 3669 +3671 4 74.86 45.72 -80.83 0.435 3670 +3672 4 75.51 45.76 -80.88 0.435 3671 +3673 4 76.62 45.43 -81.12 0.435 3672 +3674 4 77.75 44.88 -81.38 0.435 3673 +3675 4 79.75 44.4 -81.83 0.435 3674 +3676 4 81.09 43.62 -81.88 0.435 3675 +3677 4 82.23 42.83 -82.01 0.435 3676 +3678 4 83.38 42.08 -82.44 0.435 3677 +3679 4 84.96 41.1 -82.58 0.435 3678 +3680 4 86.52 40.56 -82.6 0.435 3679 +3681 4 87.63 40.0 -82.7 0.435 3680 +3682 4 22.05 89.61 -16.28 1.41 3564 +3683 4 22.63 90.56 -16.17 1.41 3682 +3684 4 23.48 90.8 -15.89 0.54 3683 +3685 4 23.92 90.6 -15.83 0.54 3684 +3686 4 24.11 91.04 -15.78 0.54 3685 +3687 4 24.13 91.15 -16.82 0.54 3686 +3688 4 24.37 90.97 -17.06 0.54 3687 +3689 4 24.6 91.05 -17.65 0.54 3688 +3690 4 24.62 91.13 -18.39 0.54 3689 +3691 4 24.84 91.18 -18.84 0.54 3690 +3692 4 24.86 91.27 -19.66 0.54 3691 +3693 4 25.32 91.39 -20.61 0.54 3692 +3694 4 25.75 91.42 -20.6 0.54 3693 +3695 4 25.94 91.87 -20.55 0.54 3694 +3696 4 26.37 92.41 -21.39 0.54 3695 +3697 4 27.03 92.81 -22.76 0.435 3696 +3698 4 27.66 93.85 -23.99 0.435 3697 +3699 4 28.49 94.58 -24.28 0.435 3698 +3700 4 28.91 95.1 -24.89 0.435 3699 +3701 4 29.15 95.19 -25.56 0.435 3700 +3702 4 29.93 96.56 -25.77 0.435 3701 +3703 4 30.4 96.71 -26.95 0.435 3702 +3704 4 31.07 96.82 -27.53 0.435 3703 +3705 4 31.49 97.39 -28.59 0.435 3704 +3706 4 32.3 98.84 -29.55 0.435 3705 +3707 4 32.94 99.39 -30.23 0.435 3706 +3708 4 33.54 100.29 -30.2 0.435 3707 +3709 4 34.15 101.26 -30.77 0.435 3708 +3710 4 34.78 102.04 -31.65 0.435 3709 +3711 4 35.39 103.01 -32.36 0.435 3710 +3712 4 37.08 104.04 -32.74 0.435 3711 +3713 4 38.73 105.72 -33.28 0.435 3712 +3714 4 39.8 106.32 -34.25 0.435 3713 +3715 4 41.01 108.18 -34.63 0.435 3714 +3716 4 41.37 109.55 -35.01 0.435 3715 +3717 4 41.76 110.78 -36.23 0.435 3716 +3718 4 42.13 112.44 -37.33 0.435 3717 +3719 4 42.54 113.2 -38.14 0.435 3718 +3720 4 43.07 115.21 -38.3 0.435 3719 +3721 4 44.26 117.53 -39.09 0.435 3720 +3722 4 45.69 119.45 -39.91 0.435 3721 +3723 4 46.5 120.95 -41.32 0.435 3722 +3724 4 47.11 121.9 -41.73 0.435 3723 +3725 4 47.49 122.82 -42.08 0.435 3724 +3726 4 48.02 125.07 -42.52 0.435 3725 +3727 4 48.78 127.36 -43.09 0.435 3726 +3728 4 48.86 130.11 -44.46 0.435 3727 +3729 4 48.83 131.08 -45.48 0.435 3728 +3730 4 49.19 132.67 -46.0 0.435 3729 +3731 4 49.12 134.04 -46.61 0.435 3730 +3732 4 48.66 135.25 -48.0 0.435 3731 +3733 4 48.19 136.18 -48.98 0.435 3732 +3734 4 48.36 137.33 -49.45 0.435 3733 +3735 4 47.87 138.43 -49.95 0.435 3734 +3736 4 47.83 138.83 -49.68 0.435 3735 +3737 4 47.82 139.59 -50.66 0.435 3736 +3738 4 47.78 140.48 -50.94 0.435 3737 +3739 4 47.73 141.12 -50.73 0.435 3738 +3740 4 47.74 141.7 -52.18 0.435 3739 +3741 4 47.65 143.5 -52.9 0.435 3740 +3742 4 47.79 144.59 -52.71 0.435 3741 +3743 4 48.04 144.99 -54.46 0.435 3742 +3744 4 48.02 146.01 -55.95 0.435 3743 +3745 4 48.34 148.3 -56.98 0.435 3744 +3746 4 48.51 149.47 -57.61 0.435 3745 +3747 4 49.52 150.91 -58.19 0.435 3746 +3748 4 50.63 154.51 -58.77 0.435 3747 +3749 4 50.52 156.52 -59.47 0.435 3748 +3750 4 51.36 157.53 -60.33 0.435 3749 +3751 4 52.3 159.75 -60.15 0.435 3750 +3752 4 53.1 161.19 -60.96 0.435 3751 +3753 4 22.85 90.51 -16.09 1.515 3683 +3754 4 22.57 92.13 -17.13 1.515 3753 +3755 4 22.02 93.8 -16.97 1.515 3754 +3756 4 21.93 95.3 -16.82 1.515 3755 +3757 4 21.88 96.76 -18.26 1.515 3756 +3758 4 21.34 98.44 -18.1 1.515 3757 +3759 4 20.58 100.67 -19.09 1.515 3758 +3760 4 20.06 102.74 -20.54 1.515 3759 +3761 4 19.98 104.02 -20.41 1.515 3760 +3762 4 19.9 105.31 -20.28 1.515 3761 +3763 4 20.05 106.96 -21.54 1.515 3762 +3764 4 20.46 107.53 -21.47 1.515 3763 +3765 4 21.29 107.75 -20.98 0.435 3764 +3766 4 21.91 108.22 -20.91 0.435 3765 +3767 4 22.1 108.63 -20.56 0.435 3766 +3768 4 22.25 109.21 -19.75 0.435 3767 +3769 4 22.42 109.82 -19.23 0.435 3768 +3770 4 22.57 110.63 -18.54 0.435 3769 +3771 4 22.96 111.03 -17.96 0.435 3770 +3772 4 23.12 111.62 -17.29 0.435 3771 +3773 4 23.24 112.86 -16.56 0.435 3772 +3774 4 23.4 113.5 -16.34 0.435 3773 +3775 4 23.93 115.19 -15.47 0.435 3774 +3776 4 24.5 116.24 -14.82 0.435 3775 +3777 4 24.86 117.31 -14.32 0.435 3776 +3778 4 25.26 117.74 -14.05 0.435 3777 +3779 4 25.63 118.35 -13.52 0.435 3778 +3780 4 26.03 118.74 -12.8 0.435 3779 +3781 4 26.65 119.21 -12.74 0.435 3780 +3782 4 26.82 119.6 -12.24 0.435 3781 +3783 4 27.21 120.26 -12.01 0.435 3782 +3784 4 27.36 121.12 -11.84 0.435 3783 +3785 4 28.04 121.27 -12.93 0.435 3784 +3786 4 29.51 122.22 -12.8 0.435 3785 +3787 4 31.01 125.77 -12.4 0.435 3786 +3788 4 32.36 128.42 -12.09 0.435 3787 +3789 4 33.15 129.2 -10.71 0.435 3788 +3790 4 34.13 130.76 -10.46 0.435 3789 +3791 4 35.32 132.3 -9.97 0.435 3790 +3792 4 36.59 132.81 -9.89 0.435 3791 +3793 4 36.94 133.62 -9.04 0.435 3792 +3794 4 37.74 134.69 -8.38 0.435 3793 +3795 4 38.48 136.41 -7.73 0.435 3794 +3796 4 39.86 138.15 -6.76 0.435 3795 +3797 4 41.33 138.85 -6.5 0.435 3796 +3798 4 43.14 140.85 -5.65 0.435 3797 +3799 4 44.74 142.57 -4.53 0.435 3798 +3800 4 45.93 144.1 -3.9 0.435 3799 +3801 4 48.45 145.31 -3.57 0.435 3800 +3802 4 49.44 146.67 -3.4 0.435 3801 +3803 4 49.96 148.61 -2.89 0.435 3802 +3804 4 51.36 150.41 -2.59 0.435 3803 +3805 4 52.91 153.29 -2.18 0.435 3804 +3806 4 54.07 155.51 -1.92 0.435 3805 +3807 4 54.9 155.69 -0.98 0.435 3806 +3808 4 55.92 156.81 -0.76 0.435 3807 +3809 4 57.57 157.67 0.41 0.435 3808 +3810 4 57.69 158.39 1.92 0.435 3809 +3811 4 58.75 158.89 1.99 0.435 3810 +3812 4 59.16 158.81 3.05 0.435 3811 +3813 4 59.29 159.6 3.89 0.435 3812 +3814 4 59.69 159.73 4.97 0.435 3813 +3815 4 60.56 159.54 5.27 0.435 3814 +3816 4 61.21 159.58 5.29 0.435 3815 +3817 4 61.15 160.41 5.6 0.435 3816 +3818 4 61.32 161.07 5.75 0.435 3817 +3819 4 61.25 161.86 6.35 0.435 3818 +3820 4 61.2 162.45 6.95 0.435 3819 +3821 4 60.73 163.05 7.15 0.435 3820 +3822 4 60.67 163.62 7.88 0.435 3821 +3823 4 60.6 164.69 8.07 0.435 3822 +3824 4 60.96 165.52 8.62 0.435 3823 +3825 4 61.32 166.55 9.41 0.435 3824 +3826 4 62.1 167.65 9.76 0.435 3825 +3827 4 63.67 170.32 10.15 0.435 3826 +3828 4 64.03 170.62 11.7 0.435 3827 +3829 4 64.64 171.04 12.21 0.435 3828 +3830 4 64.59 171.36 13.45 0.435 3829 +3831 4 64.55 171.99 13.58 0.435 3830 +3832 4 65.14 172.28 15.29 0.435 3831 +3833 4 65.47 173.28 16.37 0.435 3832 +3834 4 65.67 173.21 17.13 0.435 3833 +3835 4 66.47 174.04 18.07 0.435 3834 +3836 4 66.8 175.29 18.81 0.435 3835 +3837 4 68.03 175.92 19.88 0.435 3836 +3838 4 68.55 177.62 20.6 0.435 3837 +3839 4 69.3 179.31 21.39 0.435 3838 +3840 4 70.3 180.15 22.33 0.435 3839 +3841 4 70.45 180.94 23.32 0.435 3840 +3842 4 71.67 181.79 24.26 0.435 3841 +3843 4 72.27 182.19 24.92 0.435 3842 +3844 4 73.02 183.94 25.35 0.435 3843 +3845 4 73.59 185.01 25.84 0.435 3844 +3846 4 74.2 185.45 26.21 0.435 3845 +3847 4 75.35 187.62 26.91 0.435 3846 +3848 4 75.7 188.68 27.41 0.435 3847 +3849 4 76.07 189.76 27.75 0.435 3848 +3850 4 76.68 190.17 28.34 0.435 3849 +3851 4 77.96 190.2 28.83 0.435 3850 +3852 4 78.35 190.59 29.55 0.435 3851 +3853 4 79.91 193.22 30.23 0.435 3852 +3854 4 80.0 194.85 31.39 0.435 3853 +3855 4 80.81 194.94 33.15 0.435 3854 +3856 4 81.56 196.18 34.2 0.435 3855 +3857 4 82.14 197.04 34.75 0.435 3856 +3858 4 82.52 197.37 36.0 0.435 3857 +3859 4 83.57 197.54 37.1 0.435 3858 +3860 4 83.9 198.53 38.27 0.435 3859 +3861 4 85.0 200.99 40.36 0.435 3860 +3862 4 85.41 200.94 41.12 0.435 3861 +3863 4 85.78 201.53 41.93 0.435 3862 +3864 4 86.56 202.58 42.81 0.435 3863 +3865 4 87.13 203.33 44.26 0.435 3864 +3866 4 87.48 204.13 45.26 0.435 3865 +3867 4 88.09 204.53 45.92 0.435 3866 +3868 4 88.65 205.58 46.79 0.435 3867 +3869 4 26.62 122.57 -11.63 0.435 3784 +3870 4 26.15 123.19 -11.58 0.435 3869 +3871 4 26.08 123.99 -10.97 0.435 3870 +3872 4 26.02 124.54 -9.94 0.435 3871 +3873 4 25.95 125.33 -9.25 0.435 3872 +3874 4 25.86 126.34 -8.55 0.435 3873 +3875 4 25.32 128.01 -8.24 0.435 3874 +3876 4 25.66 129.53 -7.99 0.435 3875 +3877 4 25.56 131.03 -7.84 0.435 3876 +3878 4 25.48 132.31 -7.71 0.435 3877 +3879 4 24.9 134.64 -7.48 0.435 3878 +3880 4 24.82 135.93 -7.35 0.435 3879 +3881 4 25.11 138.1 -7.05 0.435 3880 +3882 4 24.95 140.66 -6.78 0.435 3881 +3883 4 25.02 142.82 -6.56 0.435 3882 +3884 4 25.06 145.62 -6.27 0.435 3883 +3885 4 24.89 148.18 -6.01 0.435 3884 +3886 4 25.54 151.67 -5.63 0.435 3885 +3887 4 25.69 152.73 -5.29 0.435 3886 +3888 4 25.78 154.41 -4.66 0.435 3887 +3889 4 26.29 156.35 -4.14 0.435 3888 +3890 4 26.58 158.48 -3.55 0.435 3889 +3891 4 26.54 159.62 -4.1 0.435 3890 +3892 4 26.48 160.77 -4.74 0.435 3891 +3893 4 26.82 162.34 -5.02 0.435 3892 +3894 4 27.01 163.3 -5.75 0.435 3893 +3895 4 27.37 164.93 -6.7 0.435 3894 +3896 4 27.71 165.68 -5.19 0.435 3895 +3897 4 27.21 166.71 -4.94 0.435 3896 +3898 4 27.41 167.2 -5.41 0.435 3897 +3899 4 27.58 167.57 -4.61 0.435 3898 +3900 4 27.72 168.65 -4.5 0.435 3899 +3901 4 27.67 168.98 -3.49 0.435 3900 +3902 4 27.8 170.46 -3.03 0.435 3901 +3903 4 27.72 171.53 -2.84 0.435 3902 +3904 4 27.65 172.54 -2.29 0.435 3903 +3905 4 27.97 174.27 -2.03 0.435 3904 +3906 4 27.44 175.5 -1.46 0.435 3905 +3907 4 27.57 176.54 -0.98 0.435 3906 +3908 4 19.98 108.04 -21.43 1.515 3764 +3909 4 19.66 109.74 -21.26 1.515 3908 +3910 4 19.6 110.82 -21.15 1.515 3909 +3911 4 19.52 111.88 -21.04 1.515 3910 +3912 4 19.03 112.76 -20.96 1.515 3911 +3913 4 18.38 112.89 -21.57 0.65 3912 +3914 4 18.17 113.1 -21.62 0.975 3913 +3915 4 17.74 112.85 -21.59 0.975 3914 +3916 4 17.58 113.02 -23.39 0.975 3915 +3917 4 17.38 113.1 -24.29 0.975 3916 +3918 4 17.18 113.2 -25.48 0.975 3917 +3919 4 16.99 113.28 -26.31 0.975 3918 +3920 4 16.58 113.36 -27.37 0.975 3919 +3921 4 16.36 113.85 -28.07 0.975 3920 +3922 4 15.72 114.12 -28.97 0.975 3921 +3923 4 15.09 114.7 -30.8 0.975 3922 +3924 4 13.8 114.94 -31.78 0.975 3923 +3925 4 12.88 116.07 -32.74 0.76 3924 +3926 4 12.91 116.18 -33.79 0.76 3925 +3927 4 12.0 117.03 -34.25 0.65 3926 +3928 4 11.56 117.48 -34.74 0.65 3927 +3929 4 11.33 118.52 -36.52 0.65 3928 +3930 4 11.32 118.5 -36.3 0.65 3929 +3931 4 10.87 118.9 -36.27 0.65 3930 +3932 4 11.3 119.47 -37.33 0.54 3931 +3933 4 11.49 119.94 -37.5 0.54 3932 +3934 4 11.46 120.89 -38.31 0.54 3933 +3935 4 10.95 122.16 -38.26 0.54 3934 +3936 4 10.95 122.13 -38.05 0.54 3935 +3937 4 10.97 122.24 -39.09 0.54 3936 +3938 4 11.0 122.36 -40.28 0.54 3937 +3939 4 10.32 123.3 -41.33 0.54 3938 +3940 4 10.28 123.11 -39.47 0.54 3939 +3941 4 10.46 122.99 -38.19 0.54 3940 +3942 4 10.46 123.55 -39.49 0.54 3941 +3943 4 10.5 123.72 -41.13 0.54 3942 +3944 4 10.25 124.37 -41.29 0.54 3943 +3945 4 10.23 124.84 -41.62 0.54 3944 +3946 4 10.24 125.12 -42.2 0.54 3945 +3947 4 10.2 125.79 -42.43 0.54 3946 +3948 4 9.76 126.05 -43.09 0.54 3947 +3949 4 9.77 126.64 -44.62 0.54 3948 +3950 4 9.77 126.91 -45.11 0.54 3949 +3951 4 9.76 127.45 -46.11 0.54 3950 +3952 4 9.37 127.59 -47.69 0.54 3951 +3953 4 9.39 127.67 -48.51 0.54 3952 +3954 4 9.17 128.21 -49.74 0.54 3953 +3955 4 8.77 128.25 -50.35 0.54 3954 +3956 4 8.32 128.98 -51.34 0.54 3955 +3957 4 7.86 129.7 -52.33 0.54 3956 +3958 4 7.84 130.44 -53.31 0.54 3957 +3959 4 8.0 131.85 -54.13 0.54 3958 +3960 4 8.02 132.17 -55.16 0.54 3959 +3961 4 8.02 132.72 -56.38 0.54 3960 +3962 4 8.01 133.2 -56.78 0.54 3961 +3963 4 8.21 133.97 -57.83 0.54 3962 +3964 4 8.4 134.48 -58.38 0.54 3963 +3965 4 8.42 134.83 -59.7 0.54 3964 +3966 4 8.39 135.51 -60.0 0.54 3965 +3967 4 8.79 137.01 -61.65 0.54 3966 +3968 4 8.22 139.44 -62.38 0.54 3967 +3969 4 7.52 140.56 -63.19 0.54 3968 +3970 4 7.46 141.4 -62.88 0.54 3969 +3971 4 6.8 142.09 -63.73 0.54 3970 +3972 4 6.63 142.25 -65.38 0.54 3971 +3973 4 6.41 142.81 -66.75 0.54 3972 +3974 4 6.23 142.96 -68.25 0.54 3973 +3975 4 5.81 143.5 -69.63 0.54 3974 +3976 4 5.31 144.6 -70.07 0.54 3975 +3977 4 4.64 144.97 -69.81 0.54 3976 +3978 4 3.74 146.15 -71.37 0.54 3977 +3979 4 3.7 146.79 -71.23 0.54 3978 +3980 4 3.22 147.39 -71.03 0.54 3979 +3981 4 2.73 148.49 -71.45 0.54 3980 +3982 4 2.69 149.18 -71.84 0.54 3981 +3983 4 2.24 149.85 -72.3 0.54 3982 +3984 4 2.46 150.42 -73.52 0.54 3983 +3985 4 2.65 151.18 -74.42 0.54 3984 +3986 4 2.64 151.67 -74.97 0.54 3985 +3987 4 2.61 152.38 -75.5 0.54 3986 +3988 4 3.2 153.76 -76.03 0.54 3987 +3989 4 3.17 154.21 -76.12 0.54 3988 +3990 4 2.06 154.84 -76.68 0.54 3989 +3991 4 1.84 155.35 -77.47 0.54 3990 +3992 4 1.63 155.64 -78.27 0.54 3991 +3993 4 0.76 156.34 -79.36 0.54 3992 +3994 4 0.08 156.48 -79.06 0.54 3993 +3995 4 -0.38 157.08 -78.77 0.54 3994 +3996 4 -1.29 157.94 -79.24 0.54 3995 +3997 4 -1.26 158.07 -80.5 0.54 3996 +3998 4 -1.69 158.61 -81.88 0.54 3997 +3999 4 -1.5 159.58 -82.68 0.54 3998 +4000 4 -1.51 160.62 -84.39 0.54 3999 +4001 4 -2.2 161.21 -84.19 0.435 4000 +4002 4 -2.7 162.04 -84.12 0.435 4001 +4003 4 -2.72 162.26 -84.18 0.435 4002 +4004 4 10.87 119.2 -37.06 0.65 3931 +4005 4 10.41 119.58 -36.88 0.65 4004 +4006 4 10.44 119.74 -38.38 0.65 4005 +4007 4 9.99 120.2 -38.94 0.65 4006 +4008 4 9.81 120.32 -40.22 0.65 4007 +4009 4 9.58 120.81 -40.85 0.65 4008 +4010 4 8.93 121.28 -41.64 0.65 4009 +4011 4 8.8 120.58 -43.38 0.65 4010 +4012 4 8.16 120.31 -43.2 0.65 4011 +4013 4 7.76 120.43 -44.62 0.65 4012 +4014 4 7.39 120.36 -46.37 0.65 4013 +4015 4 6.36 120.02 -47.94 0.65 4014 +4016 4 5.35 119.43 -49.16 0.54 4015 +4017 4 5.45 118.99 -51.16 0.54 4016 +4018 4 4.67 117.68 -51.69 0.54 4017 +4019 4 4.72 117.13 -52.65 0.54 4018 +4020 4 3.51 116.3 -53.67 0.54 4019 +4021 4 2.68 116.14 -54.76 0.54 4020 +4022 4 1.92 115.15 -56.16 0.54 4021 +4023 4 1.13 114.59 -57.59 0.54 4022 +4024 4 0.09 114.42 -58.84 0.54 4023 +4025 4 -1.18 114.2 -59.57 0.54 4024 +4026 4 -1.34 114.33 -60.92 0.54 4025 +4027 4 -1.96 114.42 -62.21 0.54 4026 +4028 4 -3.06 114.9 -63.24 0.54 4027 +4029 4 -4.1 114.97 -64.69 0.54 4028 +4030 4 -5.15 115.07 -66.28 0.54 4029 +4031 4 -6.21 114.81 -66.56 0.54 4030 +4032 4 -6.22 114.79 -66.41 0.54 4031 +4033 4 -6.84 114.89 -67.69 0.54 4032 +4034 4 -7.87 114.74 -69.02 0.54 4033 +4035 4 -7.83 114.89 -70.43 0.54 4034 +4036 4 -9.67 113.88 -72.31 0.54 4035 +4037 4 -10.51 113.98 -73.83 0.54 4036 +4038 4 -11.54 113.8 -74.93 0.54 4037 +4039 4 -13.68 113.5 -75.46 0.54 4038 +4040 4 -14.51 113.32 -76.33 0.54 4039 +4041 4 -15.3 112.51 -77.41 0.54 4040 +4042 4 -16.59 112.47 -77.82 0.54 4041 +4043 4 -18.43 111.46 -79.71 0.54 4042 +4044 4 -19.48 111.46 -80.41 0.54 4043 +4045 4 -21.17 110.72 -80.6 0.54 4044 +4046 4 -22.67 110.43 -80.74 0.54 4045 +4047 4 -23.5 109.98 -81.19 0.54 4046 +4048 4 -25.47 110.32 -81.49 0.54 4047 +4049 4 19.18 113.86 -20.92 1.515 3912 +4050 4 19.09 115.37 -20.76 1.515 4049 +4051 4 18.99 116.87 -20.61 1.515 4050 +4052 4 19.52 118.83 -20.39 1.515 4051 +4053 4 20.31 120.49 -21.26 1.515 4052 +4054 4 20.66 121.8 -21.12 1.515 4053 +4055 4 21.2 123.55 -20.92 1.515 4054 +4056 4 21.27 125.71 -20.7 1.515 4055 +4057 4 21.21 126.84 -20.58 1.515 4056 +4058 4 21.88 126.7 -21.11 0.54 4057 +4059 4 23.14 127.43 -21.01 0.54 4058 +4060 4 24.0 127.48 -20.98 0.65 4059 +4061 4 25.46 128.43 -20.85 0.65 4060 +4062 4 26.96 128.74 -20.78 0.65 4061 +4063 4 28.05 128.59 -20.77 0.65 4062 +4064 4 29.35 128.67 -20.73 0.65 4063 +4065 4 29.86 127.99 -22.22 0.435 4064 +4066 4 30.13 127.36 -22.28 0.435 4065 +4067 4 31.32 125.72 -22.42 0.435 4066 +4068 4 32.5 124.28 -22.54 0.435 4067 +4069 4 34.04 123.72 -22.56 0.435 4068 +4070 4 35.99 123.85 -22.5 0.435 4069 +4071 4 39.06 123.39 -22.56 0.435 4070 +4072 4 40.87 122.43 -22.61 0.435 4071 +4073 4 43.74 121.05 -22.16 0.435 4072 +4074 4 45.94 120.75 -22.14 0.435 4073 +4075 4 48.53 120.9 -21.99 0.435 4074 +4076 4 50.45 121.45 -21.89 0.435 4075 +4077 4 53.72 121.21 -21.83 0.435 4076 +4078 4 57.2 121.21 -21.75 0.435 4077 +4079 4 59.79 121.38 -21.67 0.435 4078 +4080 4 62.48 123.26 -21.41 0.435 4079 +4081 4 65.65 124.77 -21.48 0.435 4080 +4082 4 69.23 126.7 -21.2 0.435 4081 +4083 4 72.44 127.33 -21.06 0.435 4082 +4084 4 75.21 127.93 -20.93 0.435 4083 +4085 4 78.27 127.92 -20.93 0.435 4084 +4086 4 81.82 127.24 -22.8 0.435 4085 +4087 4 85.38 126.18 -22.82 0.435 4086 +4088 4 89.98 125.38 -22.8 0.435 4087 +4089 4 93.42 125.8 -22.67 0.435 4088 +4090 4 96.63 126.43 -22.53 0.435 4089 +4091 4 99.06 125.93 -22.52 0.435 4090 +4092 4 101.28 124.99 -22.57 0.435 4091 +4093 4 103.3 124.04 -22.62 0.435 4092 +4094 4 105.73 123.33 -22.64 0.435 4093 +4095 4 107.68 123.45 -22.58 0.435 4094 +4096 4 110.7 123.63 -22.49 0.435 4095 +4097 4 112.38 124.59 -22.35 0.435 4096 +4098 4 30.61 129.4 -20.63 0.54 4064 +4099 4 32.57 129.3 -20.59 0.54 4098 +4100 4 34.3 129.19 -20.48 0.54 4099 +4101 4 36.24 129.3 -20.42 0.54 4100 +4102 4 38.42 129.21 -20.38 0.54 4101 +4103 4 39.99 129.51 -22.28 0.54 4102 +4104 4 42.14 129.64 -22.21 0.54 4103 +4105 4 42.55 130.4 -23.03 0.54 4104 +4106 4 43.57 131.54 -22.89 0.54 4105 +4107 4 44.52 133.53 -22.66 0.54 4106 +4108 4 45.05 135.51 -22.44 0.54 4107 +4109 4 45.7 138.99 -22.06 0.54 4108 +4110 4 47.59 143.19 -21.58 0.54 4109 +4111 4 47.5 144.13 -20.21 0.54 4110 +4112 4 48.89 146.15 -19.97 0.54 4111 +4113 4 50.97 147.57 -19.85 0.54 4112 +4114 4 52.95 149.97 -18.64 0.54 4113 +4115 4 54.56 152.22 -18.37 0.54 4114 +4116 4 56.0 153.17 -18.24 0.54 4115 +4117 4 58.05 154.7 -17.13 0.54 4116 +4118 4 59.17 157.04 -15.89 0.54 4117 +4119 4 59.91 158.98 -15.13 0.54 4118 +4120 4 60.44 160.44 -14.22 0.54 4119 +4121 4 61.28 160.68 -13.95 0.54 4120 +4122 4 62.74 161.62 -13.74 0.54 4121 +4123 4 63.74 162.96 -13.58 0.54 4122 +4124 4 64.53 163.79 -12.65 0.54 4123 +4125 4 65.91 165.75 -11.81 0.54 4124 +4126 4 66.85 167.66 -10.76 0.54 4125 +4127 4 67.14 169.3 -9.6 0.54 4126 +4128 4 67.89 170.74 -8.31 0.54 4127 +4129 4 68.43 172.22 -7.61 0.54 4128 +4130 4 69.63 173.51 -6.69 0.54 4129 +4131 4 70.22 173.89 -5.81 0.54 4130 +4132 4 72.11 175.13 -6.16 0.54 4131 +4133 4 72.49 175.5 -5.29 0.54 4132 +4134 4 74.4 175.45 -3.52 0.54 4133 +4135 4 76.56 175.57 -3.38 0.54 4134 +4136 4 77.63 175.59 -2.9 0.54 4135 +4137 4 78.68 175.53 -1.67 0.54 4136 +4138 4 79.31 176.0 -1.61 0.54 4137 +4139 4 80.18 176.05 -1.59 0.54 4138 +4140 4 82.28 177.04 -1.43 0.54 4139 +4141 4 84.52 179.32 -1.14 0.54 4140 +4142 4 85.3 180.11 0.22 0.54 4141 +4143 4 86.27 181.07 2.08 0.54 4142 +4144 4 86.59 182.81 2.26 0.54 4143 +4145 4 87.32 184.75 3.01 0.54 4144 +4146 4 87.26 185.26 4.12 0.54 4145 +4147 4 87.4 185.81 5.31 0.54 4146 +4148 4 87.54 186.83 6.1 0.54 4147 +4149 4 87.67 188.11 6.31 0.54 4148 +4150 4 88.24 189.19 6.81 0.54 4149 +4151 4 88.58 190.21 7.6 0.54 4150 +4152 4 88.99 190.65 7.88 0.54 4151 +4153 4 44.5 130.01 -22.12 0.54 4104 +4154 4 47.27 130.82 -21.97 0.54 4153 +4155 4 50.0 132.49 -21.81 0.54 4154 +4156 4 51.7 133.59 -22.93 0.54 4155 +4157 4 54.21 135.04 -22.72 0.54 4156 +4158 4 56.75 136.07 -22.71 0.54 4157 +4159 4 58.21 137.27 -23.0 0.54 4158 +4160 4 59.53 137.44 -23.78 0.54 4159 +4161 4 62.07 138.47 -23.84 0.54 4160 +4162 4 63.74 139.44 -23.7 0.54 4161 +4163 4 65.09 138.93 -24.25 0.54 4162 +4164 4 66.86 138.66 -24.77 0.54 4163 +4165 4 70.11 138.64 -24.69 0.54 4164 +4166 4 73.04 140.55 -24.49 0.54 4165 +4167 4 74.89 142.17 -24.28 0.54 4166 +4168 4 76.12 143.61 -24.86 0.54 4167 +4169 4 78.29 143.81 -25.47 0.54 4168 +4170 4 81.27 144.9 -25.73 0.54 4169 +4171 4 84.64 146.62 -25.55 0.54 4170 +4172 4 86.97 147.9 -26.12 0.54 4171 +4173 4 88.24 148.46 -26.4 0.54 4172 +4174 4 90.65 148.72 -27.38 0.54 4173 +4175 4 94.09 149.39 -27.61 0.54 4174 +4176 4 97.55 150.17 -28.87 0.54 4175 +4177 4 100.52 151.21 -28.69 0.54 4176 +4178 4 102.0 152.24 -29.24 0.54 4177 +4179 4 103.54 152.45 -30.3 0.54 4178 +4180 4 105.05 152.54 -30.33 0.54 4179 +4181 4 105.93 152.66 -30.9 0.54 4180 +4182 4 108.04 153.67 -30.98 0.54 4181 +4183 4 109.51 154.65 -31.21 0.54 4182 +4184 4 110.77 155.68 -31.91 0.54 4183 +4185 4 112.3 155.85 -32.61 0.54 4184 +4186 4 114.43 156.62 -32.55 0.54 4185 +4187 4 117.2 157.5 -33.0 0.54 4186 +4188 4 118.68 158.49 -33.24 0.54 4187 +4189 4 119.98 158.63 -33.8 0.54 4188 +4190 4 120.89 158.59 -34.91 0.54 4189 +4191 4 121.76 158.67 -35.18 0.54 4190 +4192 4 122.88 158.63 -36.29 0.54 4191 +4193 4 124.61 158.76 -36.38 0.54 4192 +4194 4 125.69 158.82 -36.35 0.54 4193 +4195 4 126.6 158.78 -37.47 0.54 4194 +4196 4 127.05 158.88 -38.2 0.54 4195 +4197 4 127.71 158.75 -38.57 0.54 4196 +4198 4 21.84 127.26 -20.67 1.515 4057 +4199 4 21.95 128.77 -20.52 1.515 4198 +4200 4 22.31 130.93 -22.24 1.41 4199 +4201 4 22.62 132.68 -22.06 1.41 4200 +4202 4 22.95 134.41 -21.87 1.41 4201 +4203 4 23.48 136.38 -21.65 1.41 4202 +4204 4 23.84 138.32 -23.4 1.41 4203 +4205 4 23.99 139.4 -23.29 1.41 4204 +4206 4 24.13 140.72 -23.3 1.41 4205 +4207 4 24.27 142.02 -23.16 1.41 4206 +4208 4 24.16 143.74 -22.99 1.41 4207 +4209 4 24.27 145.25 -22.83 1.41 4208 +4210 4 24.38 146.97 -22.65 1.41 4209 +4211 4 24.55 147.85 -22.55 1.515 4210 +4212 4 24.3 148.31 -22.51 1.515 4211 +4213 4 23.55 148.94 -20.58 0.435 4212 +4214 4 23.09 149.35 -20.62 0.54 4213 +4215 4 22.13 150.8 -20.49 0.54 4214 +4216 4 21.35 153.48 -21.66 0.54 4215 +4217 4 21.38 156.48 -21.35 0.54 4216 +4218 4 21.85 159.3 -21.05 0.54 4217 +4219 4 23.2 161.76 -20.76 0.54 4218 +4220 4 23.82 162.73 -21.4 0.54 4219 +4221 4 23.71 164.44 -21.16 0.435 4220 +4222 4 23.43 166.07 -22.42 0.435 4221 +4223 4 22.66 168.51 -23.4 0.435 4222 +4224 4 22.01 171.71 -23.16 0.435 4223 +4225 4 21.61 174.69 -22.86 0.435 4224 +4226 4 21.57 175.4 -22.86 0.435 4225 +4227 4 21.51 176.26 -22.77 0.54 4226 +4228 4 21.38 178.39 -22.55 0.54 4227 +4229 4 20.61 180.29 -22.38 0.54 4228 +4230 4 20.35 181.2 -23.04 0.54 4229 +4231 4 19.39 182.65 -22.91 0.54 4230 +4232 4 18.88 184.2 -23.44 0.54 4231 +4233 4 17.42 186.69 -23.22 0.54 4232 +4234 4 16.97 187.42 -24.21 0.54 4233 +4235 4 16.93 188.35 -24.87 0.54 4234 +4236 4 16.43 189.71 -25.72 0.54 4235 +4237 4 15.73 191.35 -27.3 0.54 4236 +4238 4 24.85 149.8 -22.34 1.515 4212 +4239 4 24.98 151.31 -22.18 1.515 4238 +4240 4 25.43 152.54 -22.05 1.515 4239 +4241 4 25.86 153.16 -23.48 0.54 4240 +4242 4 26.28 153.61 -23.42 0.54 4241 +4243 4 26.62 154.33 -21.9 0.54 4242 +4244 4 26.8 154.18 -20.19 0.54 4243 +4245 4 27.47 154.32 -21.21 0.54 4244 +4246 4 27.88 155.1 -22.18 0.54 4245 +4247 4 28.73 155.59 -22.18 0.54 4246 +4248 4 29.15 156.15 -23.16 0.54 4247 +4249 4 29.78 156.41 -23.12 0.54 4248 +4250 4 29.99 157.21 -24.54 0.54 4249 +4251 4 30.77 158.56 -24.38 0.54 4250 +4252 4 30.98 158.5 -23.71 0.54 4251 +4253 4 31.35 159.1 -22.96 0.54 4252 +4254 4 31.95 160.04 -23.3 0.54 4253 +4255 4 32.79 161.05 -24.16 0.54 4254 +4256 4 33.39 161.99 -24.42 0.54 4255 +4257 4 33.97 163.34 -24.57 0.54 4256 +4258 4 34.8 164.09 -24.92 0.54 4257 +4259 4 35.59 165.47 -25.29 0.54 4258 +4260 4 36.79 167.06 -25.17 0.54 4259 +4261 4 37.59 168.18 -25.04 0.54 4260 +4262 4 38.86 168.7 -25.02 0.54 4261 +4263 4 39.86 170.05 -24.86 0.54 4262 +4264 4 41.04 171.85 -24.65 0.54 4263 +4265 4 42.05 173.21 -24.63 0.54 4264 +4266 4 42.8 175.23 -24.86 0.54 4265 +4267 4 43.37 176.83 -25.21 0.54 4266 +4268 4 44.34 178.66 -25.45 0.54 4267 +4269 4 44.71 180.0 -25.68 0.54 4268 +4270 4 45.06 181.59 -26.11 0.54 4269 +4271 4 45.44 182.8 -27.03 0.54 4270 +4272 4 45.38 184.16 -27.49 0.54 4271 +4273 4 45.31 185.27 -27.83 0.54 4272 +4274 4 45.48 186.4 -28.08 0.54 4273 +4275 4 46.04 188.0 -28.51 0.54 4274 +4276 4 46.64 188.89 -28.48 0.54 4275 +4277 4 46.79 189.98 -28.44 0.54 4276 +4278 4 47.2 190.75 -29.25 0.54 4277 +4279 4 47.6 191.2 -29.2 0.54 4278 +4280 4 47.57 191.89 -29.51 0.54 4279 +4281 4 47.93 193.21 -29.43 0.54 4280 +4282 4 48.68 195.26 -29.96 0.54 4281 +4283 4 49.29 196.25 -30.75 0.54 4282 +4284 4 50.06 198.02 -30.62 0.54 4283 +4285 4 51.53 199.04 -31.16 0.54 4284 +4286 4 52.58 200.08 -32.08 0.54 4285 +4287 4 53.6 201.81 -33.54 0.54 4286 +4288 4 55.02 203.4 -33.34 0.54 4287 +4289 4 55.57 205.23 -33.81 0.54 4288 +4290 4 56.15 206.83 -34.24 0.54 4289 +4291 4 56.65 209.01 -34.08 0.54 4290 +4292 4 57.16 211.19 -33.84 0.54 4291 +4293 4 57.31 212.78 -34.35 0.54 4292 +4294 4 57.67 213.88 -34.3 0.54 4293 +4295 4 58.03 215.28 -34.91 0.54 4294 +4296 4 59.03 216.86 -34.87 0.54 4295 +4297 4 60.61 219.11 -34.6 0.54 4296 +4298 4 62.89 220.99 -34.64 0.54 4297 +4299 4 64.75 222.42 -34.68 0.54 4298 +4300 4 65.32 224.0 -34.88 0.54 4299 +4301 4 65.71 224.89 -34.86 0.54 4300 +4302 4 66.67 226.68 -34.72 0.54 4301 +4303 4 66.58 228.19 -34.64 0.54 4302 +4304 4 66.62 231.25 -34.85 0.54 4303 +4305 4 67.17 233.02 -34.88 0.54 4304 +4306 4 68.56 234.86 -34.96 0.54 4305 +4307 4 70.2 236.69 -34.74 0.54 4306 +4308 4 71.38 238.74 -34.95 0.54 4307 +4309 4 72.16 240.37 -35.52 0.54 4308 +4310 4 72.54 241.53 -35.99 0.54 4309 +4311 4 73.78 243.24 -37.14 0.54 4310 +4312 4 74.13 244.6 -37.51 0.54 4311 +4313 4 74.5 246.02 -38.33 0.54 4312 +4314 4 74.45 246.92 -38.62 0.54 4313 +4315 4 74.84 247.86 -39.12 0.54 4314 +4316 4 75.2 249.48 -39.77 0.54 4315 +4317 4 75.12 251.03 -40.14 0.54 4316 +4318 4 75.45 252.78 -40.11 0.54 4317 +4319 4 75.94 255.18 -39.85 0.54 4318 +4320 4 76.86 257.82 -39.55 0.54 4319 +4321 4 77.19 259.56 -39.36 0.54 4320 +4322 4 77.26 261.72 -39.21 0.54 4321 +4323 4 76.78 262.86 -40.01 0.54 4322 +4324 4 76.58 266.08 -39.68 0.54 4323 +4325 4 77.28 268.7 -39.39 0.54 4324 +4326 4 78.82 271.59 -39.06 0.54 4325 +4327 4 79.58 272.88 -39.05 0.54 4326 +4328 4 80.77 273.9 -37.64 0.54 4327 +4329 4 80.79 273.99 -38.46 0.54 4328 +4330 4 81.35 275.58 -38.81 0.54 4329 +4331 4 81.76 276.3 -39.25 0.54 4330 +4332 4 82.28 278.51 -39.31 0.54 4331 +4333 4 82.62 280.04 -39.22 0.54 4332 +4334 4 82.72 281.99 -39.09 0.54 4333 +4335 4 83.04 283.73 -38.91 0.54 4334 +4336 4 83.93 286.81 -38.72 0.54 4335 +4337 4 84.59 290.09 -38.43 0.54 4336 +4338 4 84.62 293.1 -38.12 0.54 4337 +4339 4 84.46 295.45 -37.88 0.54 4338 +4340 4 84.52 297.84 -37.71 0.54 4339 +4341 4 84.74 301.29 -37.35 0.54 4340 +4342 4 85.27 303.26 -37.13 0.54 4341 +4343 4 85.74 306.08 -36.83 0.54 4342 +4344 4 85.82 308.29 -37.05 0.54 4343 +4345 4 86.03 311.96 -36.74 0.54 4344 +4346 4 86.21 315.85 -36.33 0.54 4345 +4347 4 86.03 318.63 -36.05 0.54 4346 +4348 4 86.48 321.88 -35.7 0.54 4347 +4349 4 86.75 324.48 -35.43 0.54 4348 +4350 4 87.27 326.47 -35.44 0.54 4349 +4351 4 87.41 328.04 -35.88 0.54 4350 +4352 4 87.95 329.82 -35.9 0.54 4351 +4353 4 88.08 331.34 -35.89 0.54 4352 +4354 4 30.68 156.34 -24.01 0.54 4249 +4355 4 31.78 156.2 -24.08 0.54 4354 +4356 4 32.45 156.03 -24.15 0.54 4355 +4357 4 33.5 156.53 -24.16 0.54 4356 +4358 4 34.12 157.02 -24.31 0.54 4357 +4359 4 34.99 157.07 -24.22 0.54 4358 +4360 4 35.6 157.51 -23.93 0.54 4359 +4361 4 36.01 157.44 -23.02 0.54 4360 +4362 4 36.19 157.83 -22.3 0.54 4361 +4363 4 36.58 158.22 -21.65 0.54 4362 +4364 4 37.16 159.05 -20.94 0.54 4363 +4365 4 37.58 159.0 -20.26 0.54 4364 +4366 4 37.94 159.86 -19.94 0.54 4365 +4367 4 38.3 160.91 -19.44 0.54 4366 +4368 4 38.68 161.56 -19.14 0.54 4367 +4369 4 39.29 161.99 -18.63 0.54 4368 +4370 4 39.88 162.85 -18.15 0.54 4369 +4371 4 40.67 163.95 -17.87 0.54 4370 +4372 4 41.04 164.57 -17.19 0.54 4371 +4373 4 41.22 164.93 -16.47 0.54 4372 +4374 4 42.24 165.84 -16.2 0.54 4373 +4375 4 42.65 166.29 -16.07 0.54 4374 +4376 4 43.05 166.7 -15.64 0.54 4375 +4377 4 43.6 167.99 -15.12 0.54 4376 +4378 4 43.81 167.93 -14.44 0.54 4377 +4379 4 44.23 167.91 -13.98 0.54 4378 +4380 4 44.63 167.88 -13.37 0.54 4379 +4381 4 45.69 168.35 -12.99 0.54 4380 +4382 4 46.32 168.3 -12.16 0.54 4381 +4383 4 46.72 168.74 -11.88 0.54 4382 +4384 4 47.31 169.59 -11.48 0.54 4383 +4385 4 47.7 170.02 -11.12 0.54 4384 +4386 4 48.25 171.54 -10.8 0.54 4385 +4387 4 48.65 171.95 -10.3 0.54 4386 +4388 4 49.04 172.34 -9.56 0.54 4387 +4389 4 49.43 172.73 -8.91 0.54 4388 +4390 4 49.82 173.16 -8.56 0.54 4389 +4391 4 50.59 173.93 -7.1 0.54 4390 +4392 4 51.44 173.88 -6.11 0.54 4391 +4393 4 52.07 173.8 -4.98 0.54 4392 +4394 4 52.47 173.73 -4.07 0.54 4393 +4395 4 53.11 173.71 -3.45 0.54 4394 +4396 4 54.2 173.53 -2.99 0.54 4395 +4397 4 55.47 173.5 -1.91 0.54 4396 +4398 4 56.74 174.01 -1.83 0.54 4397 +4399 4 57.54 174.9 -1.64 0.54 4398 +4400 4 58.08 175.86 -0.03 0.54 4399 +4401 4 59.09 177.21 0.21 0.54 4400 +4402 4 59.84 178.43 1.48 0.54 4401 +4403 4 60.4 179.72 1.93 0.54 4402 +4404 4 60.97 180.52 2.93 0.54 4403 +4405 4 61.54 181.33 3.86 0.54 4404 +4406 4 62.77 182.18 4.8 0.54 4405 +4407 4 63.79 183.07 5.37 0.54 4406 +4408 4 64.97 184.82 5.81 0.54 4407 +4409 4 65.96 186.18 6.05 0.54 4408 +4410 4 66.77 187.04 6.53 0.54 4409 +4411 4 67.73 188.8 7.03 0.54 4410 +4412 4 68.26 190.76 7.33 0.54 4411 +4413 4 68.63 191.4 7.62 0.54 4412 +4414 4 69.22 192.25 8.18 0.54 4413 +4415 4 70.67 193.15 8.76 0.54 4414 +4416 4 71.47 193.73 10.04 0.54 4415 +4417 4 71.88 193.99 9.93 0.54 4416 +4418 4 72.67 195.33 10.02 0.54 4417 +4419 4 72.86 195.76 10.14 0.54 4418 +4420 4 73.46 196.14 11.18 0.54 4419 +4421 4 73.58 197.11 12.25 0.54 4420 +4422 4 74.18 197.72 13.09 0.54 4421 +4423 4 74.96 198.55 13.94 0.54 4422 +4424 4 75.31 199.56 14.96 0.54 4423 +4425 4 75.86 200.55 16.2 0.54 4424 +4426 4 76.39 202.0 17.2 0.54 4425 +4427 4 76.93 203.47 18.04 0.54 4426 +4428 4 77.44 205.12 19.28 0.54 4427 +4429 4 78.16 206.99 20.55 0.54 4428 +4430 4 78.31 207.56 21.43 0.54 4429 +4431 4 78.83 209.24 22.37 0.54 4430 +4432 4 79.39 210.5 23.2 0.54 4431 +4433 4 80.18 211.32 24.13 0.54 4432 +4434 4 80.52 212.09 25.35 0.54 4433 +4435 4 80.9 212.42 26.59 0.54 4434 +4436 4 81.46 213.45 27.47 0.54 4435 +4437 4 82.5 213.86 28.44 0.54 4436 +4438 4 83.34 213.86 28.99 0.54 4437 +4439 4 83.95 214.25 29.72 0.54 4438 +4440 4 84.56 214.67 30.31 0.54 4439 +4441 4 85.34 215.99 30.69 0.54 4440 +4442 4 85.69 216.79 31.53 0.54 4441 +4443 4 86.27 217.33 33.03 0.54 4442 +4444 4 86.69 217.28 33.79 0.54 4443 +4445 4 87.75 217.29 34.35 0.54 4444 +4446 4 88.59 217.76 34.49 0.54 4445 +4447 4 25.53 152.84 -22.01 1.515 4240 +4448 4 25.68 153.72 -21.92 1.515 4447 +4449 4 25.09 153.81 -20.72 0.435 4448 +4450 4 24.57 154.5 -19.3 0.435 4449 +4451 4 24.13 154.39 -18.5 0.435 4450 +4452 4 24.11 154.3 -17.6 0.435 4451 +4453 4 23.85 154.13 -16.19 0.435 4452 +4454 4 23.82 153.98 -14.71 0.435 4453 +4455 4 23.54 154.26 -13.4 0.435 4454 +4456 4 23.52 154.16 -12.43 0.435 4455 +4457 4 23.48 153.96 -10.56 0.435 4456 +4458 4 23.45 153.87 -9.67 0.435 4457 +4459 4 23.2 153.69 -7.96 0.435 4458 +4460 4 22.23 154.8 -6.74 0.435 4459 +4461 4 21.46 156.15 -5.49 0.435 4460 +4462 4 20.67 157.71 -4.22 0.435 4461 +4463 4 19.49 159.14 -4.1 0.435 4462 +4464 4 18.97 160.4 -3.9 0.435 4463 +4465 4 18.61 162.2 -2.59 0.435 4464 +4466 4 18.77 163.06 -2.5 0.435 4465 +4467 4 18.89 164.57 -2.34 0.435 4466 +4468 4 19.07 165.22 -2.2 0.435 4467 +4469 4 19.01 165.83 -1.76 0.435 4468 +4470 4 19.16 166.89 -1.49 0.435 4469 +4471 4 18.41 168.09 -0.86 0.435 4470 +4472 4 17.68 169.09 -0.48 0.435 4471 +4473 4 16.3 170.25 0.05 0.435 4472 +4474 4 16.27 170.65 0.33 0.435 4473 +4475 4 15.31 171.84 0.88 0.435 4474 +4476 4 15.23 172.88 1.29 0.435 4475 +4477 4 15.35 174.14 1.87 0.435 4476 +4478 4 15.45 176.05 2.37 0.435 4477 +4479 4 15.37 176.83 3.21 0.435 4478 +4480 4 15.52 177.6 4.12 0.435 4479 +4481 4 15.46 178.44 4.5 0.435 4480 +4482 4 15.4 179.26 4.89 0.435 4481 +4483 4 14.39 181.1 5.36 0.435 4482 +4484 4 12.69 184.0 5.69 0.435 4483 +4485 4 12.18 185.04 5.78 0.435 4484 +4486 4 11.69 185.84 6.24 0.435 4485 +4487 4 11.13 187.47 6.99 0.435 4486 +4488 4 11.31 188.12 7.14 0.435 4487 +4489 4 11.23 189.16 7.54 0.435 4488 +4490 4 11.35 190.36 8.57 0.435 4489 +4491 4 10.82 191.62 8.77 0.435 4490 +4492 4 9.88 192.84 8.88 0.435 4491 +4493 4 9.38 193.88 9.04 0.435 4492 +4494 4 8.89 194.71 9.12 0.435 4493 +4495 4 8.85 195.35 9.26 0.435 4494 +4496 4 8.73 195.63 9.29 0.435 4495 +4497 4 8.52 196.19 7.83 0.435 4496 +4498 4 7.89 196.53 6.27 0.435 4497 +4499 4 7.25 196.48 6.33 0.435 4498 +4500 4 6.8 196.94 5.84 0.65 4499 +4501 4 6.11 197.54 5.89 0.865 4500 +4502 4 5.01 198.52 4.22 0.325 4501 +4503 4 3.65 199.5 4.29 0.325 4502 +4504 4 2.74 200.63 3.26 0.325 4503 +4505 4 2.19 201.74 4.94 0.325 4504 +4506 4 1.28 202.3 5.36 0.325 4505 +4507 4 0.33 202.98 6.45 0.325 4506 +4508 4 -0.56 203.3 7.07 0.325 4507 +4509 4 -1.51 203.98 8.25 0.325 4508 +4510 4 -1.78 204.34 8.89 0.325 4509 +4511 4 -1.83 204.37 10.7 0.325 4510 +4512 4 -1.66 205.26 10.56 0.325 4511 +4513 4 -1.47 205.41 11.42 0.325 4512 +4514 4 -1.29 205.31 12.46 0.325 4513 +4515 4 -1.13 205.62 13.78 0.325 4514 +4516 4 -0.79 206.89 14.44 0.325 4515 +4517 4 -0.22 208.2 14.67 0.325 4516 +4518 4 0.1 209.93 14.93 0.325 4517 +4519 4 -0.49 212.25 15.24 0.325 4518 +4520 4 -1.12 215.44 15.55 0.325 4519 +4521 4 -1.5 217.78 15.78 0.325 4520 +4522 4 -1.57 218.79 16.49 0.325 4521 +4523 4 -1.23 220.07 17.0 0.325 4522 +4524 4 -1.23 222.99 18.14 0.325 4523 +4525 4 -1.84 225.72 18.63 0.325 4524 +4526 4 -2.02 228.51 18.99 0.325 4525 +4527 4 -2.18 230.85 19.3 0.325 4526 +4528 4 -2.67 231.68 19.98 0.325 4527 +4529 4 -2.84 234.25 20.24 0.325 4528 +4530 4 -2.18 237.31 20.57 0.325 4529 +4531 4 -2.54 239.66 20.81 0.325 4530 +4532 4 -3.11 241.76 21.01 0.325 4531 +4533 4 -5.12 246.16 21.42 0.325 4532 +4534 4 -6.67 249.93 21.85 0.325 4533 +4535 4 -7.64 251.07 22.77 0.325 4534 +4536 4 -7.77 252.99 23.12 0.325 4535 +4537 4 -8.6 255.73 23.39 0.325 4536 +4538 4 -10.02 257.8 23.56 0.325 4537 +4539 4 -12.59 259.6 25.65 0.325 4538 +4540 4 -13.58 261.41 26.49 0.325 4539 +4541 4 -14.1 262.12 27.54 0.325 4540 +4542 4 -14.17 262.65 28.79 0.325 4541 +4543 4 -15.12 263.87 29.12 0.325 4542 +4544 4 9.2 196.39 9.83 0.435 4496 +4545 4 8.68 197.86 10.04 0.435 4544 +4546 4 7.68 199.46 10.87 0.435 4545 +4547 4 6.97 200.26 11.08 0.435 4546 +4548 4 6.0 201.63 11.95 0.435 4547 +4549 4 4.99 203.44 12.71 0.435 4548 +4550 4 3.58 205.02 13.45 0.435 4549 +4551 4 2.17 206.41 13.79 0.435 4550 +4552 4 1.2 207.83 14.29 0.435 4551 +4553 4 0.7 208.8 14.98 0.435 4552 +4554 4 -0.3 210.36 16.17 0.435 4553 +4555 4 -0.41 211.84 16.62 0.435 4554 +4556 4 -1.64 213.54 18.28 0.435 4555 +4557 4 -1.72 214.82 18.41 0.435 4556 +4558 4 -2.52 217.11 18.93 0.435 4557 +4559 4 -3.58 219.28 20.34 0.435 4558 +4560 4 -4.14 221.14 20.97 0.435 4559 +4561 4 -4.68 222.02 22.7 0.435 4560 +4562 4 -5.31 224.99 23.0 0.435 4561 +4563 4 -5.42 226.71 23.17 0.435 4562 +4564 4 -5.52 228.15 23.84 0.435 4563 +4565 4 -6.07 229.83 24.15 0.435 4564 +4566 4 -6.63 231.7 24.57 0.435 4565 +4567 4 -7.18 233.37 25.03 0.435 4566 +4568 4 -7.29 234.82 25.55 0.435 4567 +4569 4 -7.4 236.5 26.02 0.435 4568 +4570 4 -7.93 237.39 27.68 0.435 4569 +4571 4 -8.01 238.46 27.79 0.435 4570 +4572 4 -9.48 240.35 29.69 0.435 4571 +4573 4 -10.93 242.62 29.89 0.435 4572 +4574 4 -10.79 243.92 30.02 0.435 4573 +4575 4 -10.9 245.1 31.2 0.435 4574 +4576 4 -11.36 245.49 31.3 0.435 4575 +4577 4 -11.94 247.82 31.53 0.435 4576 +4578 4 -12.47 249.3 31.67 0.435 4577 +4579 4 -13.08 251.8 32.36 0.435 4578 +4580 4 -12.95 253.1 32.5 0.435 4579 +4581 4 -12.65 255.26 32.81 0.435 4580 +4582 4 -12.81 257.64 33.36 0.435 4581 +4583 4 -13.91 261.23 33.7 0.435 4582 +4584 4 -14.88 265.57 35.33 0.435 4583 +4585 4 -15.0 267.49 35.52 0.435 4584 +4586 4 -16.25 269.42 37.13 0.435 4585 +4587 4 -17.2 270.66 37.24 0.435 4586 +4588 4 -17.12 272.81 37.46 0.435 4587 +4589 4 -18.0 276.37 38.26 0.435 4588 +4590 4 -18.67 279.49 39.24 0.435 4589 +4591 4 -19.97 282.53 40.58 0.435 4590 +4592 4 -20.8 284.47 42.27 0.435 4591 +4593 4 -20.66 285.78 42.41 0.435 4592 +4594 4 -20.31 286.29 43.98 0.435 4593 +4595 4 -20.37 287.35 44.09 0.435 4594 +4596 4 -21.31 288.37 44.17 0.435 4595 +4597 4 -22.54 290.37 45.17 0.435 4596 +4598 4 -23.08 291.83 45.39 0.435 4597 +4599 4 -23.18 293.28 46.06 0.435 4598 +4600 4 -23.28 294.77 46.29 0.435 4599 +4601 4 -23.37 296.08 46.58 0.435 4600 +4602 4 -24.18 298.61 46.82 0.435 4601 +4603 4 -24.24 299.45 47.13 0.435 4602 +4604 4 -25.23 301.07 47.72 0.435 4603 +4605 4 -26.2 302.22 48.5 0.435 4604 +4606 4 -27.16 303.88 48.72 0.435 4605 +4607 4 -27.66 304.67 49.18 0.435 4606 +4608 4 -28.19 305.88 49.81 0.435 4607 +4609 4 -28.74 307.26 50.85 0.435 4608 +4610 4 -29.27 308.71 51.14 0.435 4609 +4611 4 -29.36 309.97 51.56 0.435 4610 +4612 4 -29.85 310.78 51.86 0.435 4611 +4613 4 -30.35 311.81 52.18 0.435 4612 +4614 4 -30.44 313.08 52.38 0.435 4613 +4615 4 -30.98 314.55 52.6 0.435 4614 +4616 4 -32.33 315.32 52.72 0.435 4615 +4617 4 -33.49 316.54 52.82 0.435 4616 +4618 4 -35.11 317.94 53.01 0.435 4617 +4619 4 -36.21 318.26 53.32 0.435 4618 +4620 4 -36.92 318.84 53.58 0.435 4619 +4621 4 -37.84 319.6 54.09 0.435 4620 +4622 4 -38.52 319.98 54.19 0.435 4621 +4623 4 -39.94 321.82 54.42 0.435 4622 +4624 4 -40.45 322.86 54.6 0.435 4623 +4625 4 -40.5 323.7 54.83 0.435 4624 +4626 4 -41.44 324.71 55.07 0.435 4625 +4627 4 -41.9 325.09 55.32 0.435 4626 +4628 4 -42.38 325.68 55.52 0.435 4627 +4629 4 -43.75 326.67 55.74 0.435 4628 +4630 4 -45.3 327.22 55.69 0.435 4629 +4631 4 -46.31 329.3 55.95 0.435 4630 +4632 4 -47.31 331.39 56.22 0.435 4631 +4633 4 -48.0 331.96 56.49 0.435 4632 +4634 4 -49.15 332.73 56.77 0.435 4633 +4635 4 -49.62 333.35 56.89 0.435 4634 +4636 4 -50.11 334.15 57.2 0.435 4635 +4637 4 -50.62 335.19 57.44 0.435 4636 +4638 4 -50.7 336.21 57.92 0.435 4637 +4639 4 -51.45 337.65 58.27 0.435 4638 +4640 4 -52.15 338.46 58.42 0.435 4639 +4641 4 -52.85 339.04 58.68 0.435 4640 +4642 4 -53.54 339.64 58.73 0.435 4641 +4643 4 -54.48 340.88 58.83 0.435 4642 +4644 4 -54.78 342.14 58.96 0.435 4643 +4645 4 -55.3 343.62 59.1 0.435 4644 +4646 4 -55.8 344.65 59.27 0.435 4645 +4647 4 -56.53 345.68 59.51 0.435 4646 +4648 4 -56.54 345.87 59.76 0.435 4647 +4649 4 -57.5 347.09 59.94 0.435 4648 +4650 4 -57.95 347.49 59.97 0.435 4649 +4651 4 -58.49 348.97 60.11 0.435 4650 +4652 4 -58.96 349.59 60.16 0.435 4651 +4653 4 -58.99 350.0 60.21 0.435 4652 +4654 4 -59.01 350.44 60.25 0.435 4653 +4655 4 25.8 155.24 -21.76 1.515 4448 +4656 4 25.68 157.16 -21.56 1.515 4655 +4657 4 25.82 158.46 -21.42 1.515 4656 +4658 4 25.95 159.76 -21.29 1.515 4657 +4659 4 26.34 160.65 -21.19 1.515 4658 +4660 4 26.62 162.81 -20.96 1.515 4659 +4661 4 27.01 163.49 -20.88 1.515 4660 +4662 4 26.91 164.99 -20.72 1.515 4661 +4663 4 27.05 166.28 -20.59 1.515 4662 +4664 4 26.95 167.93 -20.42 1.3 4663 +4665 4 26.87 169.75 -21.29 1.3 4664 +4666 4 26.34 170.96 -20.57 1.41 4665 +4667 4 25.77 172.85 -20.39 1.41 4666 +4668 4 25.25 174.33 -20.25 1.41 4667 +4669 4 25.22 174.66 -20.22 1.41 4668 +4670 4 24.34 175.06 -20.5 0.76 4669 +4671 4 23.19 176.07 -20.42 0.76 4670 +4672 4 22.52 176.45 -20.4 0.865 4671 +4673 4 21.37 177.46 -20.32 0.76 4672 +4674 4 20.68 178.36 -21.0 0.76 4673 +4675 4 19.39 178.29 -21.18 0.54 4674 +4676 4 18.28 179.45 -22.6 0.435 4675 +4677 4 16.93 180.81 -23.99 0.435 4676 +4678 4 15.12 182.54 -25.06 0.435 4677 +4679 4 13.01 185.53 -25.94 0.435 4678 +4680 4 11.36 188.14 -26.91 0.435 4679 +4681 4 11.12 188.84 -27.52 0.435 4680 +4682 4 9.47 190.9 -27.42 0.435 4681 +4683 4 7.4 192.7 -27.29 0.435 4682 +4684 4 6.91 194.39 -28.55 0.435 4683 +4685 4 5.46 196.65 -28.27 0.435 4684 +4686 4 25.17 175.61 -20.12 1.41 4669 +4687 4 25.09 176.91 -20.14 1.41 4686 +4688 4 25.21 178.42 -19.98 1.41 4687 +4689 4 25.33 179.93 -19.82 1.41 4688 +4690 4 25.51 180.38 -19.77 1.41 4689 +4691 4 25.89 180.97 -19.01 0.54 4690 +4692 4 26.29 181.68 -19.23 0.54 4691 +4693 4 26.72 181.7 -19.15 0.54 4692 +4694 4 27.33 182.38 -19.06 0.54 4693 +4695 4 27.48 183.46 -18.95 0.54 4694 +4696 4 27.41 184.54 -18.84 0.435 4695 +4697 4 27.75 186.06 -18.67 0.435 4696 +4698 4 28.3 187.33 -18.0 0.435 4697 +4699 4 28.65 188.38 -17.36 0.435 4698 +4700 4 29.21 189.13 -15.91 0.435 4699 +4701 4 29.64 189.1 -15.38 0.435 4700 +4702 4 29.74 190.57 -14.77 0.435 4701 +4703 4 29.88 191.61 -14.28 0.435 4702 +4704 4 29.78 192.84 -13.55 0.435 4703 +4705 4 29.9 194.34 -13.32 0.435 4704 +4706 4 30.03 195.37 -12.61 0.435 4705 +4707 4 30.38 196.65 -12.24 0.435 4706 +4708 4 30.77 197.07 -11.73 0.435 4707 +4709 4 31.08 198.75 -10.95 0.435 4708 +4710 4 31.44 199.8 -10.46 0.435 4709 +4711 4 31.76 201.27 -9.76 0.435 4710 +4712 4 31.68 202.31 -9.29 0.435 4711 +4713 4 32.05 203.18 -9.04 0.435 4712 +4714 4 32.18 204.67 -8.73 0.435 4713 +4715 4 32.25 206.81 -8.35 0.435 4714 +4716 4 32.38 208.12 -8.22 0.435 4715 +4717 4 32.49 209.57 -7.46 0.435 4716 +4718 4 31.99 210.3 -6.49 0.435 4717 +4719 4 32.14 211.45 -6.97 0.435 4718 +4720 4 32.11 212.4 -7.86 0.435 4719 +4721 4 32.22 214.42 -8.39 0.435 4720 +4722 4 32.58 215.79 -8.78 0.435 4721 +4723 4 32.5 217.07 -8.72 0.435 4722 +4724 4 33.1 218.01 -8.84 0.435 4723 +4725 4 33.04 219.11 -9.1 0.435 4724 +4726 4 33.61 220.44 -8.94 0.435 4725 +4727 4 34.14 222.2 -8.75 0.435 4726 +4728 4 34.24 224.14 -8.63 0.435 4727 +4729 4 34.63 225.37 -9.85 0.435 4728 +4730 4 35.17 227.13 -9.65 0.435 4729 +4731 4 35.12 227.43 -8.42 0.435 4730 +4732 4 35.72 228.09 -8.1 0.435 4731 +4733 4 36.08 228.92 -7.4 0.435 4732 +4734 4 36.48 229.32 -6.83 0.435 4733 +4735 4 36.63 229.93 -6.31 0.435 4734 +4736 4 36.79 230.76 -5.92 0.435 4735 +4737 4 36.97 231.15 -5.27 0.435 4736 +4738 4 37.13 231.51 -4.56 0.435 4737 +4739 4 37.31 231.9 -3.98 0.435 4738 +4740 4 37.73 231.86 -3.37 0.435 4739 +4741 4 25.23 181.44 -19.73 1.41 4690 +4742 4 25.15 182.74 -19.6 1.41 4741 +4743 4 24.84 184.22 -19.46 1.41 4742 +4744 4 24.33 185.27 -19.36 1.41 4743 +4745 4 23.6 186.51 -19.25 1.41 4744 +4746 4 22.68 187.52 -19.17 1.41 4745 +4747 4 21.94 188.99 -19.03 1.41 4746 +4748 4 21.86 190.06 -18.92 1.41 4747 +4749 4 21.75 191.78 -18.75 1.41 4748 +4750 4 22.08 193.31 -18.58 1.41 4749 +4751 4 22.45 194.4 -18.46 1.41 4750 +4752 4 23.94 195.52 -19.97 1.41 4751 +4753 4 24.28 196.77 -19.31 1.41 4752 +4754 4 24.86 198.17 -19.75 1.41 4753 +4755 4 24.77 198.43 -21.0 0.54 4754 +4756 4 25.39 198.07 -19.3 0.54 4755 +4757 4 26.05 197.88 -19.07 0.54 4756 +4758 4 26.29 197.44 -18.89 0.54 4757 +4759 4 26.71 197.42 -18.35 0.54 4758 +4760 4 26.91 197.35 -17.6 0.54 4759 +4761 4 27.32 197.57 -17.41 0.54 4760 +4762 4 27.74 197.51 -16.58 0.54 4761 +4763 4 28.55 198.41 -16.32 0.54 4762 +4764 4 29.09 199.94 -16.07 0.54 4763 +4765 4 29.52 199.95 -15.84 0.54 4764 +4766 4 29.9 200.31 -14.89 0.54 4765 +4767 4 30.31 200.74 -14.61 0.54 4766 +4768 4 30.3 200.71 -14.31 0.54 4767 +4769 4 30.91 201.13 -13.87 0.54 4768 +4770 4 31.28 201.7 -12.83 0.54 4769 +4771 4 31.42 203.01 -12.84 0.54 4770 +4772 4 31.58 203.68 -12.84 0.54 4771 +4773 4 31.76 204.29 -12.25 0.54 4772 +4774 4 32.08 205.56 -11.73 0.54 4773 +4775 4 32.62 207.3 -11.38 0.54 4774 +4776 4 33.79 209.52 -11.13 0.54 4775 +4777 4 35.13 212.16 -10.67 0.54 4776 +4778 4 36.26 214.8 -10.22 0.54 4777 +4779 4 36.96 217.19 -9.8 0.54 4778 +4780 4 37.5 218.94 -9.54 0.54 4779 +4781 4 38.23 221.13 -9.3 0.54 4780 +4782 4 38.59 222.21 -8.95 0.54 4781 +4783 4 39.57 223.73 -8.31 0.54 4782 +4784 4 40.12 225.23 -7.84 0.54 4783 +4785 4 40.69 226.88 -8.71 0.54 4784 +4786 4 40.88 227.37 -9.04 0.54 4785 +4787 4 41.24 228.98 -9.69 0.54 4786 +4788 4 42.02 230.57 -9.89 0.54 4787 +4789 4 42.56 232.33 -9.84 0.54 4788 +4790 4 43.29 234.53 -9.67 0.54 4789 +4791 4 43.89 235.71 -10.14 0.54 4790 +4792 4 44.72 236.74 -11.15 0.54 4791 +4793 4 45.28 238.27 -10.98 0.54 4792 +4794 4 45.65 239.42 -11.44 0.54 4793 +4795 4 45.59 240.79 -11.99 0.54 4794 +4796 4 45.77 241.48 -12.21 0.54 4795 +4797 4 45.3 242.39 -12.95 0.54 4796 +4798 4 45.66 244.01 -13.68 0.54 4797 +4799 4 45.82 244.63 -13.24 0.54 4798 +4800 4 46.46 244.88 -13.2 0.54 4799 +4801 4 46.91 244.97 -13.85 0.54 4800 +4802 4 47.11 245.47 -14.33 0.54 4801 +4803 4 48.19 246.1 -15.45 0.54 4802 +4804 4 49.24 246.59 -15.37 0.54 4803 +4805 4 49.7 246.72 -16.39 0.54 4804 +4806 4 50.14 247.3 -17.61 0.54 4805 +4807 4 50.76 248.29 -18.47 0.54 4806 +4808 4 51.82 249.12 -19.41 0.54 4807 +4809 4 52.89 249.97 -20.74 0.54 4808 +4810 4 53.31 251.01 -22.12 0.54 4809 +4811 4 54.2 250.94 -23.01 0.54 4810 +4812 4 54.21 251.0 -23.61 0.54 4811 +4813 4 55.25 251.68 -23.29 0.54 4812 +4814 4 55.26 251.98 -24.01 0.54 4813 +4815 4 55.3 252.17 -25.87 0.54 4814 +4816 4 56.6 252.8 -26.98 0.54 4815 +4817 4 57.24 253.37 -27.82 0.54 4816 +4818 4 58.1 253.97 -28.94 0.54 4817 +4819 4 58.34 254.06 -29.75 0.54 4818 +4820 4 58.94 255.02 -30.09 0.54 4819 +4821 4 59.83 255.14 -30.74 0.54 4820 +4822 4 60.68 255.99 -32.28 0.54 4821 +4823 4 61.08 256.93 -32.71 0.54 4822 +4824 4 62.16 257.53 -33.59 0.54 4823 +4825 4 62.38 258.1 -34.82 0.54 4824 +4826 4 62.78 258.87 -35.63 0.54 4825 +4827 4 62.8 258.94 -36.37 0.54 4826 +4828 4 63.03 259.52 -37.66 0.54 4827 +4829 4 63.26 259.91 -39.27 0.54 4828 +4830 4 63.43 261.09 -40.05 0.54 4829 +4831 4 63.66 260.9 -40.07 0.54 4830 +4832 4 63.62 262.36 -41.73 0.54 4831 +4833 4 63.59 262.78 -41.6 0.54 4832 +4834 4 63.77 263.74 -42.26 0.54 4833 +4835 4 63.74 264.18 -42.44 0.54 4834 +4836 4 63.77 264.56 -44.06 0.54 4835 +4837 4 63.81 264.71 -45.55 0.54 4836 +4838 4 64.01 265.49 -46.59 0.54 4837 +4839 4 64.21 266.5 -47.91 0.54 4838 +4840 4 64.2 267.3 -49.27 0.54 4839 +4841 4 64.2 267.85 -50.42 0.54 4840 +4842 4 64.37 269.05 -51.42 0.54 4841 +4843 4 64.34 270.02 -52.37 0.54 4842 +4844 4 64.49 271.38 -52.83 0.54 4843 +4845 4 64.61 272.89 -52.67 0.54 4844 +4846 4 64.58 273.3 -52.48 0.54 4845 +4847 4 64.08 274.12 -52.26 0.54 4846 +4848 4 64.08 274.67 -53.33 0.54 4847 +4849 4 64.07 275.42 -54.38 0.54 4848 +4850 4 63.85 276.22 -55.97 0.54 4849 +4851 4 32.19 201.41 -13.59 0.54 4769 +4852 4 33.04 201.46 -13.57 0.54 4851 +4853 4 34.92 202.37 -12.74 0.54 4852 +4854 4 35.13 202.33 -12.29 0.54 4853 +4855 4 36.77 203.71 -12.04 0.54 4854 +4856 4 38.03 204.18 -11.51 0.54 4855 +4857 4 39.28 204.57 -10.3 0.54 4856 +4858 4 40.91 205.94 -9.9 0.54 4857 +4859 4 41.71 206.78 -9.19 0.54 4858 +4860 4 42.55 207.25 -9.04 0.54 4859 +4861 4 44.01 207.94 -8.49 0.54 4860 +4862 4 44.83 208.36 -7.68 0.54 4861 +4863 4 46.12 208.41 -7.41 0.54 4862 +4864 4 46.89 209.41 -6.01 0.54 4863 +4865 4 47.54 209.42 -5.76 0.54 4864 +4866 4 48.14 209.84 -5.18 0.54 4865 +4867 4 48.89 211.33 -4.48 0.54 4866 +4868 4 49.94 211.78 -3.95 0.54 4867 +4869 4 51.14 213.33 -3.61 0.54 4868 +4870 4 51.92 214.44 -3.26 0.54 4869 +4871 4 53.38 215.38 -2.98 0.54 4870 +4872 4 54.59 216.74 -2.81 0.54 4871 +4873 4 55.84 217.66 -2.53 0.54 4872 +4874 4 57.03 219.23 -2.26 0.54 4873 +4875 4 58.09 219.72 -2.18 0.54 4874 +4876 4 59.76 220.69 -2.04 0.54 4875 +4877 4 61.46 221.22 -1.95 0.54 4876 +4878 4 63.72 223.07 -1.63 0.54 4877 +4879 4 65.35 224.89 -1.41 0.54 4878 +4880 4 66.72 227.13 -1.14 0.54 4879 +4881 4 68.18 228.07 -1.01 0.54 4880 +4882 4 69.11 230.48 -0.66 0.54 4881 +4883 4 70.69 232.95 -0.37 0.54 4882 +4884 4 71.91 234.32 -0.2 0.54 4883 +4885 4 72.52 234.74 0.22 0.54 4884 +4886 4 73.16 234.75 0.54 0.54 4885 +4887 4 75.06 235.55 0.3 0.54 4886 +4888 4 77.23 235.68 0.36 0.54 4887 +4889 4 78.5 236.19 0.45 0.54 4888 +4890 4 79.12 236.65 0.51 0.54 4889 +4891 4 80.16 237.12 0.95 0.54 4890 +4892 4 81.67 237.19 1.22 0.54 4891 +4893 4 83.17 237.24 1.71 0.54 4892 +4894 4 84.22 237.68 2.16 0.54 4893 +4895 4 85.72 237.7 2.95 0.54 4894 +4896 4 87.43 237.77 3.37 0.54 4895 +4897 4 88.09 237.53 3.97 0.54 4896 +4898 4 89.16 237.33 4.51 0.54 4897 +4899 4 90.24 237.11 5.26 0.54 4898 +4900 4 91.09 237.11 5.74 0.54 4899 +4901 4 91.96 237.14 5.98 0.54 4900 +4902 4 92.82 236.91 6.58 0.54 4901 +4903 4 93.69 236.75 6.65 0.54 4902 +4904 4 94.33 236.76 6.97 0.54 4903 +4905 4 94.97 236.75 7.44 0.54 4904 +4906 4 95.84 236.54 7.82 0.54 4905 +4907 4 96.28 236.33 8.11 0.54 4906 +4908 4 97.05 236.71 7.72 0.54 4907 +4909 4 97.3 236.87 6.23 0.54 4908 +4910 4 97.71 236.29 7.91 0.54 4909 +4911 4 97.9 236.96 7.91 0.54 4910 +4912 4 98.32 236.97 8.07 0.54 4911 +4913 4 98.53 236.91 8.75 0.54 4912 +4914 4 98.93 236.85 9.65 0.54 4913 +4915 4 99.55 237.02 10.44 0.54 4914 +4916 4 100.19 237.03 10.69 0.54 4915 +4917 4 100.64 236.59 11.11 0.54 4916 +4918 4 101.7 236.55 12.18 0.54 4917 +4919 4 102.55 236.59 12.28 0.54 4918 +4920 4 102.75 236.5 13.25 0.54 4919 +4921 4 103.16 236.44 14.16 0.54 4920 +4922 4 103.37 236.41 14.61 0.54 4921 +4923 4 104.0 236.37 15.46 0.54 4922 +4924 4 104.2 236.06 16.49 0.54 4923 +4925 4 104.39 235.98 17.46 0.54 4924 +4926 4 104.83 235.69 18.34 0.54 4925 +4927 4 105.02 235.37 19.37 0.54 4926 +4928 4 105.23 235.32 20.04 0.54 4927 +4929 4 106.11 234.88 20.62 0.54 4928 +4930 4 106.55 234.42 21.19 0.54 4929 +4931 4 107.21 234.23 21.42 0.54 4930 +4932 4 107.43 233.94 22.22 0.54 4931 +4933 4 108.07 233.45 23.16 0.54 4932 +4934 4 108.73 233.23 23.53 0.54 4933 +4935 4 108.92 232.91 24.71 0.54 4934 +4936 4 109.55 232.86 25.62 0.54 4935 +4937 4 109.75 232.8 26.3 0.54 4936 +4938 4 110.38 233.02 26.63 0.54 4937 +4939 4 110.59 232.99 27.09 0.54 4938 +4940 4 110.78 232.9 27.99 0.54 4939 +4941 4 25.17 200.33 -19.52 1.41 4754 +4942 4 25.25 202.27 -19.32 1.41 4941 +4943 4 25.33 204.43 -19.09 1.41 4942 +4944 4 25.43 204.52 -19.08 1.41 4943 +4945 4 24.91 204.95 -17.16 0.435 4944 +4946 4 23.76 206.25 -17.96 0.435 4945 +4947 4 23.23 207.43 -17.02 0.435 4946 +4948 4 22.52 207.95 -16.08 0.435 4947 +4949 4 21.58 208.38 -14.63 0.435 4948 +4950 4 20.89 208.7 -13.93 0.435 4949 +4951 4 20.18 209.19 -12.77 0.435 4950 +4952 4 19.27 209.47 -11.86 0.435 4951 +4953 4 18.56 210.28 -11.64 0.435 4952 +4954 4 18.24 211.23 -10.49 0.435 4953 +4955 4 16.82 213.07 -10.25 0.435 4954 +4956 4 15.8 215.09 -9.4 0.435 4955 +4957 4 14.64 216.26 -8.85 0.435 4956 +4958 4 13.68 217.23 -8.32 0.435 4957 +4959 4 12.72 218.64 -7.82 0.435 4958 +4960 4 12.38 220.34 -7.12 0.435 4959 +4961 4 11.33 223.08 -6.87 0.435 4960 +4962 4 11.09 223.49 -6.76 0.435 4961 +4963 4 10.15 224.71 -6.65 0.435 4962 +4964 4 9.59 226.63 -6.47 0.435 4963 +4965 4 9.33 227.24 -6.41 0.435 4964 +4966 4 9.28 228.11 -6.32 0.435 4965 +4967 4 8.34 228.87 -5.81 0.435 4966 +4968 4 7.2 229.86 -5.66 0.435 4967 +4969 4 6.67 231.33 -5.52 0.435 4968 +4970 4 6.14 232.59 -5.4 0.435 4969 +4971 4 5.9 233.21 -5.27 0.435 4970 +4972 4 5.41 233.83 -5.22 0.435 4971 +4973 4 4.92 234.88 -5.12 0.435 4972 +4974 4 4.2 235.91 -5.03 0.435 4973 +4975 4 3.07 236.7 -4.98 0.435 4974 +4976 4 2.56 237.74 -4.88 0.435 4975 +4977 4 2.23 239.44 -4.63 0.435 4976 +4978 4 1.75 240.27 -4.56 0.435 4977 +4979 4 0.98 241.9 -3.96 0.435 4978 +4980 4 0.46 242.86 -3.11 0.435 4979 +4981 4 -0.05 244.09 -2.7 0.435 4980 +4982 4 -0.97 244.89 -2.64 0.435 4981 +4983 4 -1.48 245.9 -2.09 0.435 4982 +4984 4 -2.17 246.21 -1.4 0.435 4983 +4985 4 -3.26 246.95 -2.93 0.435 4984 +4986 4 -3.7 247.44 -3.73 0.435 4985 +4987 4 -4.37 247.87 -4.07 0.435 4986 +4988 4 -5.49 248.44 -4.04 0.435 4987 +4989 4 -6.81 248.79 -4.03 0.435 4988 +4990 4 -7.94 249.59 -3.97 0.435 4989 +4991 4 -8.49 251.27 -3.81 0.435 4990 +4992 4 -9.9 252.91 -3.68 0.435 4991 +4993 4 -10.38 254.27 -4.6 0.435 4992 +4994 4 -11.32 255.57 -5.16 0.435 4993 +4995 4 -12.9 257.31 -6.16 0.435 4994 +4996 4 -13.38 258.21 -6.68 0.435 4995 +4997 4 -13.47 259.79 -7.27 0.435 4996 +4998 4 -14.64 261.23 -7.22 0.435 4997 +4999 4 -15.82 262.91 -7.38 0.435 4998 +5000 4 -16.71 263.56 -7.94 0.435 4999 +5001 4 -16.85 266.0 -8.52 0.435 5000 +5002 4 -16.96 267.93 -8.32 0.435 5001 +5003 4 -17.07 269.42 -8.17 0.435 5002 +5004 4 -18.23 270.88 -8.27 0.435 5003 +5005 4 -19.17 272.18 -8.84 0.435 5004 +5006 4 -19.69 273.66 -8.77 0.435 5005 +5007 4 -20.61 274.48 -8.86 0.435 5006 +5008 4 -20.67 275.6 -9.2 0.435 5007 +5009 4 -20.73 276.7 -9.31 0.435 5008 +5010 4 -20.56 277.87 -10.09 0.435 5009 +5011 4 -20.59 278.83 -10.89 0.435 5010 +5012 4 -20.66 279.9 -10.78 0.435 5011 +5013 4 -20.75 281.69 -11.43 0.435 5012 +5014 4 -21.44 282.59 -12.03 0.435 5013 +5015 4 -22.55 283.51 -13.32 0.435 5014 +5016 4 -23.45 284.36 -13.71 0.435 5015 +5017 4 -24.11 284.83 -14.5 0.435 5016 +5018 4 -25.64 285.23 -15.1 0.435 5017 +5019 4 -26.92 285.2 -15.58 0.435 5018 +5020 4 -27.79 285.17 -15.84 0.435 5019 +5021 4 -29.05 284.69 -16.22 0.435 5020 +5022 4 -30.6 285.25 -16.27 0.435 5021 +5023 4 -32.61 286.22 -16.3 0.435 5022 +5024 4 -36.18 287.73 -16.29 0.435 5023 +5025 4 -39.26 288.93 -17.23 0.435 5024 +5026 4 -40.9 291.3 -18.15 0.435 5025 +5027 4 -42.33 292.61 -16.84 0.435 5026 +5028 4 -43.32 294.68 -16.65 0.435 5027 +5029 4 -43.79 294.82 -16.12 0.435 5028 +5030 4 -45.41 296.18 -15.57 0.435 5029 +5031 4 -45.51 297.63 -14.89 0.435 5030 +5032 4 -46.48 299.06 -14.54 0.435 5031 +5033 4 -47.18 299.6 -13.9 0.435 5032 +5034 4 -47.71 300.56 -12.98 0.435 5033 +5035 4 -48.41 301.36 -12.76 0.435 5034 +5036 4 -48.67 301.94 -12.25 0.435 5035 +5037 4 -48.75 302.97 -11.7 0.435 5036 +5038 4 -48.91 305.3 -11.24 0.435 5037 +5039 4 25.5 205.85 -20.22 1.41 4944 +5040 4 24.79 206.88 -20.13 1.41 5039 +5041 4 25.11 206.91 -20.16 1.41 5040 +5042 4 25.27 206.92 -20.17 1.41 5041 +5043 4 24.04 207.49 -18.58 0.11 5042 +5044 4 23.5 209.18 -18.49 0.11 5043 +5045 4 22.71 211.23 -17.77 0.435 5044 +5046 4 21.92 213.08 -17.29 0.435 5045 +5047 4 21.35 214.89 -16.06 0.435 5046 +5048 4 20.8 216.26 -15.03 0.435 5047 +5049 4 20.27 217.2 -13.89 0.435 5048 +5050 4 19.56 217.43 -12.38 0.435 5049 +5051 4 18.45 217.81 -12.44 0.435 5050 +5052 4 16.79 220.07 -12.25 0.435 5051 +5053 4 15.97 222.59 -12.0 0.435 5052 +5054 4 15.88 224.1 -11.85 0.435 5053 +5055 4 16.25 224.93 -11.15 0.435 5054 +5056 4 16.43 225.36 -11.1 0.435 5055 +5057 4 16.79 226.68 -11.04 0.435 5056 +5058 4 16.74 227.28 -10.53 0.435 5057 +5059 4 16.85 228.53 -9.86 0.435 5058 +5060 4 15.6 230.76 -9.06 0.435 5059 +5061 4 15.09 231.72 -8.14 0.435 5060 +5062 4 13.63 234.2 -7.84 0.435 5061 +5063 4 12.41 236.27 -7.59 0.435 5062 +5064 4 12.33 237.31 -7.18 0.435 5063 +5065 4 11.36 238.69 -6.46 0.435 5064 +5066 4 11.01 240.07 -5.2 0.435 5065 +5067 4 10.49 240.98 -3.91 0.435 5066 +5068 4 8.18 242.98 -3.6 0.435 5067 +5069 4 6.48 245.65 -3.14 0.435 5068 +5070 4 4.52 249.17 -2.67 0.435 5069 +5071 4 2.66 251.21 -2.5 0.435 5070 +5072 4 0.25 254.68 -1.83 0.435 5071 +5073 4 -1.47 257.75 -1.02 0.435 5072 +5074 4 -2.04 259.34 0.18 0.435 5073 +5075 4 -3.67 260.9 0.83 0.435 5074 +5076 4 -4.19 261.88 1.59 0.435 5075 +5077 4 -4.7 262.85 2.28 0.435 5076 +5078 4 -5.65 263.83 2.81 0.435 5077 +5079 4 -8.18 266.03 3.06 0.435 5078 +5080 4 -10.04 268.06 3.3 0.435 5079 +5081 4 -11.68 269.63 3.95 0.435 5080 +5082 4 -13.1 270.93 5.26 0.435 5081 +5083 4 -14.12 272.97 5.97 0.435 5082 +5084 4 -14.27 275.05 6.72 0.435 5083 +5085 4 -14.29 275.74 6.25 0.435 5084 +5086 4 -14.76 276.37 6.24 0.435 5085 +5087 4 -14.57 276.28 7.29 0.435 5086 +5088 4 -15.09 276.72 9.12 0.435 5087 +5089 4 -15.13 277.05 10.06 0.435 5088 +5090 4 -15.87 277.49 11.6 0.435 5089 +5091 4 -16.77 278.03 12.16 0.435 5090 +5092 4 25.36 208.22 -20.06 1.41 5041 +5093 4 25.75 208.68 -20.0 1.41 5092 +5094 4 26.09 210.2 -19.84 1.41 5093 +5095 4 25.77 211.9 -19.67 1.41 5094 +5096 4 25.17 214.24 -19.44 1.41 5095 +5097 4 24.36 216.77 -19.2 1.41 5096 +5098 4 23.37 218.86 -19.0 1.41 5097 +5099 4 23.07 220.44 -19.74 1.41 5098 +5100 4 23.38 220.59 -19.72 1.41 5099 +5101 4 24.2 221.0 -18.9 0.435 5100 +5102 4 24.15 221.65 -18.92 0.435 5101 +5103 4 24.33 222.02 -18.2 0.435 5102 +5104 4 24.46 223.29 -17.77 0.435 5103 +5105 4 24.65 223.19 -16.72 0.435 5104 +5106 4 24.62 223.6 -16.52 0.435 5105 +5107 4 24.82 223.54 -15.69 0.435 5106 +5108 4 24.77 224.14 -15.33 0.435 5107 +5109 4 24.95 224.52 -14.61 0.435 5108 +5110 4 25.08 225.32 -13.84 0.435 5109 +5111 4 25.45 226.14 -13.07 0.435 5110 +5112 4 25.82 227.0 -12.82 0.435 5111 +5113 4 25.97 228.07 -12.56 0.435 5112 +5114 4 26.35 228.7 -12.11 0.435 5113 +5115 4 26.52 229.33 -11.74 0.435 5114 +5116 4 26.89 230.21 -11.64 0.435 5115 +5117 4 27.48 231.31 -11.43 0.435 5116 +5118 4 27.77 233.48 -11.13 0.435 5117 +5119 4 28.12 234.79 -10.99 0.435 5118 +5120 4 28.22 236.24 -10.23 0.435 5119 +5121 4 28.37 237.31 -10.04 0.435 5120 +5122 4 28.52 238.37 -9.7 0.435 5121 +5123 4 28.87 239.44 -9.2 0.435 5122 +5124 4 29.21 240.48 -8.48 0.435 5123 +5125 4 29.39 241.1 -8.19 0.435 5124 +5126 4 29.74 242.18 -7.84 0.435 5125 +5127 4 29.94 242.89 -8.37 0.435 5126 +5128 4 30.15 243.45 -9.36 0.435 5127 +5129 4 30.55 244.16 -9.73 0.435 5128 +5130 4 30.73 245.09 -10.23 0.435 5129 +5131 4 31.11 245.99 -10.21 0.435 5130 +5132 4 31.25 247.32 -10.44 0.435 5131 +5133 4 31.18 248.39 -10.4 0.435 5132 +5134 4 31.55 249.5 -10.36 0.435 5133 +5135 4 31.52 250.23 -11.04 0.435 5134 +5136 4 31.69 251.11 -11.1 0.435 5135 +5137 4 32.76 251.67 -11.62 0.435 5136 +5138 4 33.71 253.66 -11.39 0.435 5137 +5139 4 34.25 255.41 -11.19 0.435 5138 +5140 4 34.44 256.14 -11.79 0.435 5139 +5141 4 34.59 257.25 -11.82 0.435 5140 +5142 4 34.56 257.39 -11.28 0.435 5141 +5143 4 34.75 258.1 -11.58 0.435 5142 +5144 4 34.72 258.79 -11.96 0.435 5143 +5145 4 34.69 259.48 -12.42 0.435 5144 +5146 4 34.85 260.61 -12.75 0.435 5145 +5147 4 35.01 261.49 -12.73 0.435 5146 +5148 4 36.04 262.67 -13.11 0.435 5147 +5149 4 36.14 264.4 -12.93 0.435 5148 +5150 4 35.79 266.54 -12.79 0.435 5149 +5151 4 35.71 267.82 -12.66 0.435 5150 +5152 4 35.69 268.04 -12.64 0.435 5151 +5153 4 35.63 269.41 -13.33 0.435 5152 +5154 4 35.1 271.14 -13.61 0.435 5153 +5155 4 34.33 273.34 -14.3 0.435 5154 +5156 4 33.58 275.36 -15.4 0.435 5155 +5157 4 33.7 277.1 -15.37 0.435 5156 +5158 4 33.35 279.26 -15.37 0.435 5157 +5159 4 32.99 282.12 -15.99 0.435 5158 +5160 4 32.62 284.52 -16.35 0.435 5159 +5161 4 32.53 286.02 -16.2 0.435 5160 +5162 4 32.46 287.66 -17.32 0.435 5161 +5163 4 31.64 290.4 -17.06 0.435 5162 +5164 4 31.79 292.04 -18.08 0.435 5163 +5165 4 31.73 293.12 -18.05 0.435 5164 +5166 4 31.78 295.75 -18.23 0.435 5165 +5167 4 33.4 297.78 -18.05 0.435 5166 +5168 4 34.36 299.85 -18.42 0.435 5167 +5169 4 34.49 301.4 -18.64 0.435 5168 +5170 4 35.25 303.21 -18.88 0.435 5169 +5171 4 35.57 305.17 -18.74 0.435 5170 +5172 4 36.5 307.32 -17.9 0.435 5171 +5173 4 36.73 310.34 -17.58 0.435 5172 +5174 4 36.45 311.38 -17.33 0.435 5173 +5175 4 36.33 313.31 -17.13 0.435 5174 +5176 4 36.4 315.47 -16.9 0.435 5175 +5177 4 36.68 318.06 -16.63 0.435 5176 +5178 4 36.99 319.86 -16.52 0.435 5177 +5179 4 37.58 321.0 -16.69 0.435 5178 +5180 4 37.96 322.18 -17.31 0.435 5179 +5181 4 37.91 323.61 -18.59 0.435 5180 +5182 4 38.08 324.77 -19.22 0.435 5181 +5183 4 38.05 325.76 -20.48 0.435 5182 +5184 4 37.32 327.26 -20.71 0.435 5183 +5185 4 37.04 328.64 -21.56 0.435 5184 +5186 4 36.36 329.55 -22.46 0.435 5185 +5187 4 36.31 330.19 -22.32 0.435 5186 +5188 4 35.84 331.32 -23.04 0.435 5187 +5189 4 36.15 333.84 -24.2 0.435 5188 +5190 4 36.3 335.24 -24.96 0.435 5189 +5191 4 36.86 337.06 -25.51 0.435 5190 +5192 4 37.23 338.46 -26.11 0.435 5191 +5193 4 38.13 341.55 -26.0 0.435 5192 +5194 4 38.46 343.32 -26.11 0.435 5193 +5195 4 39.61 345.76 -25.9 0.435 5194 +5196 4 40.68 349.53 -25.94 0.435 5195 +5197 4 41.48 350.65 -25.8 0.435 5196 +5198 4 42.65 352.66 -25.57 0.435 5197 +5199 4 42.56 354.16 -25.42 0.435 5198 +5200 4 42.46 355.67 -25.34 0.435 5199 +5201 4 42.15 357.69 -26.2 0.435 5200 +5202 4 41.01 359.3 -27.79 0.435 5201 +5203 4 22.75 222.16 -19.87 1.41 5100 +5204 4 22.65 224.49 -21.37 1.41 5203 +5205 4 23.01 225.8 -21.3 1.41 5204 +5206 4 23.11 227.53 -21.12 1.41 5205 +5207 4 23.26 229.17 -22.15 1.41 5206 +5208 4 23.43 230.84 -23.49 1.41 5207 +5209 4 23.32 232.56 -23.46 1.41 5208 +5210 4 23.49 234.07 -25.26 1.41 5209 +5211 4 23.54 234.89 -25.17 1.41 5210 +5212 4 22.83 235.39 -24.08 0.435 5211 +5213 4 22.78 236.02 -23.94 0.435 5212 +5214 4 22.3 236.57 -23.22 0.435 5213 +5215 4 21.58 237.07 -22.21 0.435 5214 +5216 4 20.88 237.39 -21.44 0.435 5215 +5217 4 20.16 238.63 -21.25 0.435 5216 +5218 4 19.69 238.98 -20.7 0.435 5217 +5219 4 19.19 239.55 -20.2 0.435 5218 +5220 4 19.12 240.32 -19.37 0.435 5219 +5221 4 18.38 241.76 -19.09 0.435 5220 +5222 4 17.89 242.59 -19.01 0.435 5221 +5223 4 17.38 243.85 -18.81 0.435 5222 +5224 4 16.67 244.66 -18.68 0.435 5223 +5225 4 15.93 245.88 -18.33 0.435 5224 +5226 4 15.43 246.92 -18.17 0.435 5225 +5227 4 14.98 247.09 -18.01 0.435 5226 +5228 4 14.51 247.71 -17.96 0.435 5227 +5229 4 14.65 248.79 -17.84 0.435 5228 +5230 4 14.54 250.5 -17.59 0.435 5229 +5231 4 13.77 252.39 -17.41 0.435 5230 +5232 4 12.98 254.48 -17.21 0.435 5231 +5233 4 12.44 256.16 -16.9 0.435 5232 +5234 4 11.94 256.92 -16.16 0.435 5233 +5235 4 11.42 258.18 -16.04 0.435 5234 +5236 4 10.97 258.88 -16.74 0.435 5235 +5237 4 10.48 259.71 -16.66 0.435 5236 +5238 4 9.56 260.78 -17.02 0.435 5237 +5239 4 8.9 261.52 -18.32 0.435 5238 +5240 4 8.24 261.93 -18.6 0.435 5239 +5241 4 7.57 262.11 -18.59 0.435 5240 +5242 4 6.85 263.14 -18.57 0.435 5241 +5243 4 6.82 264.1 -19.31 0.435 5242 +5244 4 7.0 264.79 -19.69 0.435 5243 +5245 4 6.98 265.47 -19.99 0.435 5244 +5246 4 6.92 266.62 -20.55 0.435 5245 +5247 4 6.9 267.32 -21.01 0.435 5246 +5248 4 6.83 268.43 -21.35 0.435 5247 +5249 4 6.34 269.26 -21.27 0.435 5248 +5250 4 5.84 270.81 -21.88 0.435 5249 +5251 4 4.9 271.83 -21.79 0.435 5250 +5252 4 4.18 273.41 -22.77 0.435 5251 +5253 4 3.18 275.49 -22.51 0.435 5252 +5254 4 2.65 276.73 -22.24 0.435 5253 +5255 4 1.75 277.84 -23.13 0.435 5254 +5256 4 1.73 279.1 -24.73 0.435 5255 +5257 4 1.68 280.29 -25.74 0.435 5256 +5258 4 1.6 281.8 -25.74 0.435 5257 +5259 4 1.0 284.13 -25.51 0.435 5258 +5260 4 -0.66 286.61 -25.29 0.435 5259 +5261 4 -1.83 288.37 -26.19 0.435 5260 +5262 4 -2.36 289.84 -26.06 0.435 5261 +5263 4 -3.3 291.13 -26.55 0.435 5262 +5264 4 -4.21 292.46 -27.34 0.435 5263 +5265 4 -4.7 293.29 -27.33 0.435 5264 +5266 4 -5.87 295.04 -28.16 0.435 5265 +5267 4 -6.74 295.55 -29.41 0.435 5266 +5268 4 -8.07 296.12 -29.45 0.435 5267 +5269 4 -9.19 296.97 -29.99 0.435 5268 +5270 4 -9.92 298.24 -30.03 0.435 5269 +5271 4 -11.31 299.66 -29.92 0.435 5270 +5272 4 -13.35 301.85 -31.4 0.435 5271 +5273 4 -14.71 303.16 -32.2 0.435 5272 +5274 4 -15.39 303.83 -32.83 0.435 5273 +5275 4 -15.85 304.72 -33.34 0.435 5274 +5276 4 -16.78 306.05 -34.28 0.435 5275 +5277 4 -17.7 307.36 -34.85 0.435 5276 +5278 4 -18.83 308.5 -36.12 0.435 5277 +5279 4 -20.42 310.21 -36.88 0.435 5278 +5280 4 -21.37 311.49 -37.15 0.435 5279 +5281 4 -22.28 312.58 -37.81 0.435 5280 +5282 4 -23.39 313.49 -38.87 0.435 5281 +5283 4 -23.87 314.36 -39.24 0.435 5282 +5284 4 -23.91 315.8 -40.53 0.435 5283 +5285 4 -24.63 317.11 -41.09 0.435 5284 +5286 4 -25.3 318.08 -42.36 0.435 5285 +5287 4 -25.97 319.0 -43.41 0.435 5286 +5288 4 -28.19 319.76 -43.76 0.435 5287 +5289 4 -29.1 320.62 -44.15 0.435 5288 +5290 4 -29.79 321.5 -44.75 0.435 5289 +5291 4 -31.42 323.58 -44.87 0.435 5290 +5292 4 -32.36 324.61 -44.87 0.435 5291 +5293 4 -32.78 325.16 -46.18 0.435 5292 +5294 4 -33.89 326.08 -47.47 0.435 5293 +5295 4 23.42 235.13 -25.15 1.41 5211 +5296 4 23.56 236.43 -25.01 1.41 5295 +5297 4 24.14 237.55 -24.89 1.41 5296 +5298 4 24.54 238.83 -26.55 1.41 5297 +5299 4 24.89 240.4 -26.76 1.515 5298 +5300 4 25.23 242.5 -27.96 1.515 5299 +5301 4 25.6 243.61 -27.99 1.515 5300 +5302 4 25.31 244.88 -27.86 1.625 5301 +5303 4 25.0 246.65 -28.89 1.625 5302 +5304 4 24.94 248.26 -29.93 1.625 5303 +5305 4 25.08 249.34 -29.6 1.625 5304 +5306 4 24.51 249.71 -29.57 1.625 5305 +5307 4 23.36 250.4 -29.08 0.65 5306 +5308 4 22.83 251.57 -28.13 0.54 5307 +5309 4 22.6 251.78 -28.2 0.54 5308 +5310 4 22.58 251.68 -27.22 0.54 5309 +5311 4 22.56 251.59 -26.34 0.54 5310 +5312 4 22.54 251.5 -25.51 0.54 5311 +5313 4 22.49 251.84 -24.57 0.54 5312 +5314 4 22.48 251.81 -24.27 0.54 5313 +5315 4 22.46 252.0 -24.03 0.54 5314 +5316 4 22.44 251.94 -23.44 0.54 5315 +5317 4 22.41 252.04 -22.37 0.54 5316 +5318 4 22.4 251.99 -21.92 0.54 5317 +5319 4 22.38 251.89 -20.88 0.54 5318 +5320 4 22.37 252.16 -21.37 0.54 5319 +5321 4 22.36 252.36 -21.28 0.54 5320 +5322 4 22.33 252.78 -21.02 0.54 5321 +5323 4 22.31 252.68 -20.12 0.54 5322 +5324 4 21.83 253.01 -19.42 0.54 5323 +5325 4 21.34 253.82 -19.2 0.76 5324 +5326 4 20.56 255.93 -19.0 0.65 5325 +5327 4 20.46 257.43 -18.84 0.65 5326 +5328 4 19.04 259.27 -18.69 0.65 5327 +5329 4 18.3 260.51 -18.5 0.65 5328 +5330 4 17.54 262.4 -18.33 0.65 5329 +5331 4 16.79 263.84 -17.96 0.65 5330 +5332 4 16.0 265.68 -17.27 0.65 5331 +5333 4 15.42 267.46 -16.04 0.54 5332 +5334 4 14.89 268.65 -15.18 0.54 5333 +5335 4 14.36 269.59 -14.11 0.54 5334 +5336 4 14.31 270.15 -13.23 0.54 5335 +5337 4 14.21 271.11 -12.07 0.54 5336 +5338 4 13.4 273.38 -11.34 0.54 5337 +5339 4 12.61 275.47 -11.06 0.54 5338 +5340 4 12.33 276.85 -11.98 0.435 5339 +5341 4 11.57 278.53 -11.82 0.435 5340 +5342 4 11.52 279.4 -11.88 0.435 5341 +5343 4 11.32 282.9 -12.28 0.435 5342 +5344 4 10.65 286.74 -11.9 0.435 5343 +5345 4 10.75 288.46 -11.72 0.435 5344 +5346 4 9.78 290.13 -11.57 0.435 5345 +5347 4 8.54 292.42 -11.36 0.435 5346 +5348 4 7.73 294.95 -11.2 0.435 5347 +5349 4 7.38 296.75 -9.96 0.435 5348 +5350 4 6.84 298.5 -10.32 0.435 5349 +5351 4 6.77 299.84 -10.72 0.435 5350 +5352 4 6.85 302.01 -10.56 0.435 5351 +5353 4 6.76 303.77 -10.9 0.435 5352 +5354 4 5.1 305.83 -10.81 0.435 5353 +5355 4 3.96 306.84 -10.73 0.435 5354 +5356 4 2.12 308.45 -10.61 0.435 5355 +5357 4 -0.11 309.63 -10.84 0.435 5356 +5358 4 -1.79 312.11 -10.62 0.435 5357 +5359 4 -1.95 314.69 -10.36 0.435 5358 +5360 4 -2.92 316.34 -10.28 0.435 5359 +5361 4 -4.14 318.47 -10.54 0.435 5360 +5362 4 -4.68 320.41 -10.66 0.435 5361 +5363 4 -5.42 321.63 -10.33 0.435 5362 +5364 4 -6.12 322.44 -10.26 0.435 5363 +5365 4 -7.54 324.29 -10.1 0.435 5364 +5366 4 -7.82 324.88 -9.6 0.435 5365 +5367 4 -8.26 324.73 -8.42 0.435 5366 +5368 4 -8.35 325.44 -6.99 0.435 5367 +5369 4 -9.28 325.67 -5.56 0.435 5368 +5370 4 -9.76 326.01 -4.85 0.435 5369 +5371 4 -10.23 326.33 -4.0 0.435 5370 +5372 4 -11.15 326.62 -3.24 0.435 5371 +5373 4 -11.62 327.2 -2.74 0.435 5372 +5374 4 -13.21 327.89 -2.03 0.435 5373 +5375 4 -13.07 328.41 -0.69 0.435 5374 +5376 4 -13.85 330.49 -0.19 0.435 5375 +5377 4 -13.88 330.39 0.77 0.435 5376 +5378 4 -15.05 331.32 1.52 0.435 5377 +5379 4 -16.19 332.06 2.09 0.435 5378 +5380 4 -17.59 333.2 2.71 0.435 5379 +5381 4 -18.96 334.16 3.15 0.435 5380 +5382 4 -19.52 335.76 4.28 0.435 5381 +5383 4 -20.73 337.1 5.29 0.435 5382 +5384 4 -20.82 338.32 5.95 0.435 5383 +5385 4 -21.76 339.33 6.18 0.435 5384 +5386 4 -22.96 340.62 7.64 0.435 5385 +5387 4 -24.08 340.44 8.81 0.435 5386 +5388 4 -24.8 341.18 9.61 0.435 5387 +5389 4 -25.96 342.11 10.28 0.435 5388 +5390 4 -26.74 343.94 11.14 0.435 5389 +5391 4 -27.77 346.22 11.5 0.435 5390 +5392 4 -28.76 348.06 12.04 0.435 5391 +5393 4 -29.82 350.7 13.19 0.435 5392 +5394 4 -30.86 352.41 15.0 0.435 5393 +5395 4 -30.94 353.4 15.86 0.435 5394 +5396 4 -31.03 354.39 16.78 0.435 5395 +5397 4 -32.45 355.93 17.81 0.435 5396 +5398 4 -31.91 357.2 18.49 0.435 5397 +5399 4 -31.56 358.73 18.66 0.435 5398 +5400 4 -31.4 359.6 18.75 0.435 5399 +5401 4 -31.48 360.67 18.86 0.435 5400 +5402 4 -32.2 361.64 19.55 0.435 5401 +5403 4 -32.92 362.42 19.98 0.435 5402 +5404 4 -34.33 364.03 20.35 0.435 5403 +5405 4 -36.16 365.41 20.6 0.435 5404 +5406 4 -36.49 366.99 21.36 0.435 5405 +5407 4 -36.56 367.79 21.96 0.435 5406 +5408 4 -37.48 368.57 22.32 0.435 5407 +5409 4 -38.01 369.8 22.67 0.435 5408 +5410 4 -38.95 370.79 23.04 0.435 5409 +5411 4 -39.04 372.28 23.34 0.435 5410 +5412 4 -39.79 373.69 23.92 0.435 5411 +5413 4 -39.72 375.36 24.7 0.435 5412 +5414 4 -40.3 377.65 25.22 0.435 5413 +5415 4 -40.82 378.86 25.79 0.435 5414 +5416 4 -41.99 379.56 26.82 0.435 5415 +5417 4 -42.9 379.8 28.1 0.435 5416 +5418 4 -43.81 380.12 28.65 0.435 5417 +5419 4 -45.2 381.29 29.26 0.435 5418 +5420 4 -46.14 382.28 29.41 0.435 5419 +5421 4 -46.22 383.56 29.69 0.435 5420 +5422 4 -46.34 385.24 30.16 0.435 5421 +5423 4 -46.88 386.68 30.68 0.435 5422 +5424 4 -48.33 389.16 30.97 0.435 5423 +5425 4 -49.85 392.51 31.36 0.435 5424 +5426 4 -51.48 394.12 31.49 0.435 5425 +5427 4 -52.44 395.57 31.69 0.435 5426 +5428 4 -54.07 397.17 31.9 0.435 5427 +5429 4 -55.67 398.37 31.98 0.435 5428 +5430 4 -57.42 401.86 32.83 0.435 5429 +5431 4 -59.31 404.32 33.12 0.435 5430 +5432 4 -60.72 405.95 33.4 0.435 5431 +5433 4 -61.9 407.12 34.02 0.435 5432 +5434 4 -63.33 408.94 34.32 0.435 5433 +5435 4 -63.43 410.15 35.2 0.435 5434 +5436 4 -63.37 412.46 36.04 0.435 5435 +5437 4 -63.43 413.03 36.79 0.435 5436 +5438 4 -63.31 414.52 37.16 0.435 5437 +5439 4 -63.4 415.48 38.39 0.435 5438 +5440 4 -64.82 417.09 38.75 0.435 5439 +5441 4 -64.9 418.37 38.95 0.435 5440 +5442 4 -65.46 420.27 39.14 0.435 5441 +5443 4 -65.57 421.98 39.31 0.435 5442 +5444 4 -66.5 423.0 39.39 0.435 5443 +5445 4 -67.03 424.46 39.61 0.435 5444 +5446 4 -67.09 425.09 39.9 0.435 5445 +5447 4 -67.15 425.62 41.09 0.435 5446 +5448 4 -67.24 426.87 41.52 0.435 5447 +5449 4 -67.91 427.06 41.89 0.435 5448 +5450 4 -68.38 427.69 41.88 0.435 5449 +5451 4 -68.67 427.89 43.85 0.435 5450 +5452 4 -69.34 427.76 44.8 0.435 5451 +5453 4 -69.82 428.09 45.42 0.435 5452 +5454 4 -70.53 428.32 47.09 0.435 5453 +5455 4 -70.4 428.79 48.87 0.435 5454 +5456 4 -70.69 429.56 49.78 0.435 5455 +5457 4 -71.19 430.83 49.75 0.435 5456 +5458 4 -70.83 431.4 50.79 0.435 5457 +5459 4 -70.69 432.44 51.35 0.435 5458 +5460 4 -71.64 432.86 53.1 0.435 5459 +5461 4 -72.13 433.68 53.26 0.435 5460 +5462 4 -72.86 434.38 54.37 0.435 5461 +5463 4 -73.55 434.95 54.71 0.435 5462 +5464 4 -74.52 436.37 55.14 0.435 5463 +5465 4 -74.8 437.18 55.52 0.435 5464 +5466 4 -74.42 437.8 56.11 0.435 5465 +5467 4 -74.29 438.86 56.46 0.435 5466 +5468 4 -74.34 439.71 56.61 0.435 5467 +5469 4 -74.81 440.33 56.67 0.435 5468 +5470 4 -75.98 441.75 56.87 0.435 5469 +5471 4 -77.58 442.95 56.95 0.435 5470 +5472 4 -79.51 445.84 57.21 0.435 5471 +5473 4 -80.99 448.77 57.48 0.435 5472 +5474 4 -81.53 449.95 58.26 0.435 5473 +5475 4 -83.24 452.79 59.19 0.435 5474 +5476 4 -83.16 454.71 59.62 0.435 5475 +5477 4 -83.05 456.16 60.37 0.435 5476 +5478 4 -82.78 458.54 60.7 0.435 5477 +5479 4 -82.69 460.44 61.28 0.435 5478 +5480 4 -82.56 461.44 62.21 0.435 5479 +5481 4 -82.16 461.87 62.49 0.435 5480 +5482 4 -82.28 463.52 63.26 0.435 5481 +5483 4 -82.79 464.27 64.09 0.435 5482 +5484 4 -83.96 465.19 64.98 0.435 5483 +5485 4 -84.45 465.43 66.57 0.435 5484 +5486 4 -85.19 466.12 67.91 0.435 5485 +5487 4 -86.14 466.82 68.94 0.435 5486 +5488 4 -86.39 467.15 69.87 0.435 5487 +5489 4 -87.75 467.87 70.36 0.435 5488 +5490 4 -89.09 468.16 71.04 0.435 5489 +5491 4 24.48 250.15 -29.53 1.625 5306 +5492 4 25.04 250.78 -31.11 1.735 5491 +5493 4 25.2 251.66 -31.01 1.735 5492 +5494 4 24.94 253.32 -32.58 1.735 5493 +5495 4 24.84 255.39 -33.79 1.735 5494 +5496 4 24.75 257.17 -34.21 1.735 5495 +5497 4 24.22 258.42 -34.03 1.735 5496 +5498 4 24.4 259.13 -33.95 1.735 5497 +5499 4 24.81 259.89 -34.69 0.65 5498 +5500 4 25.2 260.54 -34.54 0.865 5499 +5501 4 26.04 260.81 -34.41 0.865 5500 +5502 4 26.62 262.18 -34.71 0.865 5501 +5503 4 27.38 263.94 -34.59 0.65 5502 +5504 4 28.18 265.31 -34.65 0.65 5503 +5505 4 28.52 266.63 -34.58 0.65 5504 +5506 4 29.08 268.17 -34.48 0.65 5505 +5507 4 30.07 269.54 -34.4 0.65 5506 +5508 4 31.02 271.74 -34.15 0.65 5507 +5509 4 31.97 273.96 -34.05 0.65 5508 +5510 4 32.68 276.4 -33.93 0.65 5509 +5511 4 33.63 278.6 -33.68 0.65 5510 +5512 4 34.55 281.24 -33.45 0.65 5511 +5513 4 35.7 283.46 -33.2 0.65 5512 +5514 4 36.96 287.63 -32.73 0.65 5513 +5515 4 37.71 289.39 -32.53 0.65 5514 +5516 4 38.64 291.81 -32.26 0.65 5515 +5517 4 39.53 294.88 -31.92 0.65 5516 +5518 4 40.45 297.31 -31.65 0.65 5517 +5519 4 41.41 299.51 -31.4 0.65 5518 +5520 4 42.53 302.38 -31.08 0.65 5519 +5521 4 43.47 304.59 -30.83 0.65 5520 +5522 4 43.84 305.22 -30.38 0.65 5521 +5523 4 44.85 306.57 -30.22 0.65 5522 +5524 4 47.13 308.21 -29.99 0.65 5523 +5525 4 47.49 309.32 -29.87 0.65 5524 +5526 4 47.83 310.83 -29.62 0.65 5525 +5527 4 48.14 312.78 -29.41 0.65 5526 +5528 4 48.48 314.1 -29.27 0.65 5527 +5529 4 48.44 314.73 -29.21 0.65 5528 +5530 4 49.23 316.37 -29.7 0.65 5529 +5531 4 49.64 316.85 -29.94 0.65 5530 +5532 4 49.99 317.91 -29.44 0.65 5531 +5533 4 23.96 259.81 -35.1 1.735 5498 +5534 4 23.69 260.96 -35.81 1.735 5533 +5535 4 23.35 261.23 -35.79 1.735 5534 +5536 4 22.02 261.6 -36.08 0.76 5535 +5537 4 21.26 263.26 -35.78 0.54 5536 +5538 4 20.31 264.49 -35.67 0.54 5537 +5539 4 19.56 266.17 -35.52 0.54 5538 +5540 4 18.81 267.63 -35.38 0.54 5539 +5541 4 18.32 268.68 -35.29 0.54 5540 +5542 4 17.79 269.93 -35.17 0.54 5541 +5543 4 17.69 271.43 -35.02 0.54 5542 +5544 4 17.64 272.29 -34.93 0.54 5543 +5545 4 17.8 273.16 -34.84 0.54 5544 +5546 4 17.71 274.66 -34.68 0.54 5545 +5547 4 17.82 276.39 -34.5 0.54 5546 +5548 4 17.75 277.45 -34.39 0.54 5547 +5549 4 16.37 278.66 -34.3 0.54 5548 +5550 4 15.86 279.71 -34.2 0.54 5549 +5551 4 14.91 281.16 -34.08 0.54 5550 +5552 4 13.53 282.35 -33.99 0.54 5551 +5553 4 13.23 282.82 -32.22 0.54 5552 +5554 4 12.87 283.44 -32.08 0.65 5553 +5555 4 12.99 284.95 -31.92 0.65 5554 +5556 4 12.9 286.45 -31.77 0.865 5555 +5557 4 13.01 288.18 -31.58 0.865 5556 +5558 4 13.31 290.14 -31.38 0.865 5557 +5559 4 13.44 291.65 -31.22 0.865 5558 +5560 4 13.55 293.16 -31.06 0.865 5559 +5561 4 13.52 293.6 -31.01 0.865 5560 +5562 4 12.83 294.19 -30.97 0.865 5561 +5563 4 11.9 295.21 -30.88 0.54 5562 +5564 4 11.62 296.27 -30.78 0.76 5563 +5565 4 10.47 297.28 -30.7 0.76 5564 +5566 4 9.96 298.32 -30.61 0.76 5565 +5567 4 9.23 299.56 -30.5 0.65 5566 +5568 4 7.86 300.78 -30.4 0.65 5567 +5569 4 7.34 302.03 -30.29 0.65 5568 +5570 4 6.36 303.7 -30.14 0.65 5569 +5571 4 6.28 304.98 -30.01 0.65 5570 +5572 4 4.84 306.46 -28.38 0.65 5571 +5573 4 3.46 307.67 -28.29 0.65 5572 +5574 4 2.76 308.22 -27.79 0.65 5573 +5575 4 2.71 308.55 -26.78 0.65 5574 +5576 4 2.2 309.51 -25.87 0.65 5575 +5577 4 2.08 311.2 -25.47 0.65 5576 +5578 4 1.07 313.3 -25.28 0.65 5577 +5579 4 0.53 314.97 -25.05 0.65 5578 +5580 4 0.44 315.97 -24.26 0.65 5579 +5581 4 -0.94 317.37 -23.85 0.65 5580 +5582 4 -2.36 318.97 -23.41 0.65 5581 +5583 4 -2.91 320.61 -22.73 0.65 5582 +5584 4 -3.02 322.03 -21.84 0.65 5583 +5585 4 -4.45 323.85 -21.38 0.65 5584 +5586 4 -5.83 325.02 -21.06 0.65 5585 +5587 4 -6.99 326.03 -20.91 0.65 5586 +5588 4 -7.04 326.65 -20.7 0.65 5587 +5589 4 -7.98 327.89 -20.59 0.65 5588 +5590 4 -8.05 328.91 -20.04 0.65 5589 +5591 4 -8.15 330.13 -19.24 0.65 5590 +5592 4 -8.02 331.23 -18.82 0.65 5591 +5593 4 -8.08 331.81 -18.16 0.65 5592 +5594 4 -8.15 332.61 -17.62 0.65 5593 +5595 4 -8.23 333.62 -16.92 0.65 5594 +5596 4 -8.79 335.49 -16.35 0.65 5595 +5597 4 -9.29 336.5 -15.96 0.65 5596 +5598 4 -10.29 338.34 -15.49 0.65 5597 +5599 4 -10.35 339.15 -14.96 0.65 5598 +5600 4 -10.87 340.4 -14.69 0.65 5599 +5601 4 -12.29 342.24 -14.46 0.65 5600 +5602 4 -13.48 343.64 -14.04 0.65 5601 +5603 4 -14.39 344.2 -13.63 0.65 5602 +5604 4 -14.69 345.19 -12.93 0.65 5603 +5605 4 -15.23 346.86 -12.55 0.65 5604 +5606 4 -15.13 348.58 -12.28 0.65 5605 +5607 4 -15.69 350.22 -11.69 0.65 5606 +5608 4 -16.9 352.03 -11.07 0.65 5607 +5609 4 -17.39 352.56 -10.13 0.65 5608 +5610 4 -18.55 353.54 -9.82 0.65 5609 +5611 4 -19.71 354.75 -9.65 0.65 5610 +5612 4 -19.78 355.32 -8.84 0.65 5611 +5613 4 -20.29 356.3 -8.07 0.65 5612 +5614 4 -20.38 357.3 -7.29 0.65 5613 +5615 4 -20.9 358.51 -6.8 0.65 5614 +5616 4 -21.63 359.5 -6.34 0.65 5615 +5617 4 -22.57 360.46 -5.66 0.65 5616 +5618 4 -23.53 361.65 -5.11 0.65 5617 +5619 4 -24.03 362.65 -4.64 0.65 5618 +5620 4 -24.1 363.46 -4.03 0.65 5619 +5621 4 -24.87 365.08 -3.36 0.65 5620 +5622 4 -25.42 366.51 -2.84 0.65 5621 +5623 4 -26.14 366.97 -1.38 0.65 5622 +5624 4 -26.65 368.24 -1.26 0.65 5623 +5625 4 -27.14 368.73 -0.09 0.65 5624 +5626 4 -27.24 369.72 0.76 0.65 5625 +5627 4 -27.36 371.37 1.67 0.65 5626 +5628 4 -27.45 372.63 1.95 0.65 5627 +5629 4 -28.21 373.99 3.06 0.65 5628 +5630 4 -28.73 375.25 3.18 0.65 5629 +5631 4 -30.1 375.97 3.74 0.65 5630 +5632 4 -31.5 376.83 5.16 0.65 5631 +5633 4 -32.39 377.2 5.25 0.65 5632 +5634 4 -33.59 379.06 5.42 0.65 5633 +5635 4 -33.05 380.82 5.61 0.65 5634 +5636 4 -32.69 381.85 5.8 0.54 5635 +5637 4 -32.09 382.23 6.69 0.54 5636 +5638 4 -31.98 383.44 7.71 0.54 5637 +5639 4 -31.83 384.22 8.55 0.54 5638 +5640 4 -32.82 385.83 9.29 0.54 5639 +5641 4 -33.32 386.84 9.69 0.54 5640 +5642 4 -33.43 388.04 10.64 0.54 5641 +5643 4 -33.51 389.07 11.2 0.54 5642 +5644 4 -33.84 390.75 11.44 0.54 5643 +5645 4 -33.91 391.81 11.7 0.54 5644 +5646 4 -33.78 392.52 13.36 0.54 5645 +5647 4 -34.06 393.33 13.81 0.54 5646 +5648 4 -35.05 394.9 14.85 0.54 5647 +5649 4 -35.81 396.05 15.86 0.54 5648 +5650 4 -36.56 397.22 16.72 0.54 5649 +5651 4 -37.24 397.82 16.83 0.54 5650 +5652 4 -37.95 398.37 17.33 0.54 5651 +5653 4 -38.22 399.17 17.79 0.54 5652 +5654 4 -38.72 399.95 18.46 0.54 5653 +5655 4 -38.78 400.55 18.82 0.54 5654 +5656 4 -38.89 401.98 19.79 0.54 5655 +5657 4 -39.18 402.49 20.89 0.54 5656 +5658 4 -39.72 403.64 22.21 0.54 5657 +5659 4 -40.72 404.91 23.97 0.54 5658 +5660 4 -41.89 406.33 24.24 0.54 5659 +5661 4 -42.64 407.24 25.45 0.54 5660 +5662 4 -43.11 407.62 25.7 0.54 5661 +5663 4 -43.59 407.96 26.33 0.54 5662 +5664 4 -44.26 408.32 26.72 0.54 5663 +5665 4 -44.95 408.67 27.05 0.54 5664 +5666 4 -45.66 409.44 27.63 0.54 5665 +5667 4 -46.57 409.76 28.18 0.54 5666 +5668 4 -47.26 410.12 28.42 0.54 5667 +5669 4 -47.94 410.72 28.55 0.54 5668 +5670 4 -49.04 410.85 28.68 0.54 5669 +5671 4 23.1 261.64 -35.75 1.735 5535 +5672 4 23.43 262.39 -37.18 1.735 5671 +5673 4 23.38 263.57 -38.11 1.735 5672 +5674 4 23.64 264.48 -38.01 1.735 5673 +5675 4 24.05 264.17 -36.74 0.65 5674 +5676 4 24.7 263.88 -35.71 0.65 5675 +5677 4 25.3 264.57 -35.7 0.65 5676 +5678 4 25.72 264.48 -34.57 0.65 5677 +5679 4 26.13 264.46 -34.03 0.65 5678 +5680 4 27.13 265.27 -32.95 0.65 5679 +5681 4 27.31 265.69 -32.6 0.65 5680 +5682 4 27.73 265.65 -31.99 0.65 5681 +5683 4 27.91 266.03 -31.34 0.65 5682 +5684 4 27.89 265.96 -30.68 0.65 5683 +5685 4 28.3 265.91 -29.99 0.65 5684 +5686 4 28.26 266.28 -29.28 0.65 5685 +5687 4 29.29 267.16 -28.78 0.65 5686 +5688 4 29.68 267.55 -28.06 0.65 5687 +5689 4 30.02 268.82 -27.61 0.65 5688 +5690 4 30.38 269.67 -27.07 0.65 5689 +5691 4 30.75 270.52 -26.67 0.65 5690 +5692 4 31.13 271.14 -26.14 0.65 5691 +5693 4 31.52 271.78 -25.76 0.65 5692 +5694 4 31.7 272.2 -25.42 0.65 5693 +5695 4 32.28 273.05 -24.93 0.65 5694 +5696 4 33.06 274.35 -24.33 0.65 5695 +5697 4 33.64 275.21 -23.93 0.65 5696 +5698 4 34.17 276.94 -23.51 0.65 5697 +5699 4 34.76 278.02 -23.23 0.65 5698 +5700 4 35.08 279.53 -22.85 0.65 5699 +5701 4 36.24 281.75 -22.51 0.65 5700 +5702 4 37.42 283.54 -22.3 0.65 5701 +5703 4 39.89 285.62 -21.95 0.65 5702 +5704 4 41.54 287.02 -21.77 0.65 5703 +5705 4 42.13 287.9 -21.58 0.65 5704 +5706 4 42.53 288.57 -21.43 0.65 5705 +5707 4 44.27 291.68 -20.99 0.65 5706 +5708 4 45.89 293.48 -20.7 0.65 5707 +5709 4 46.89 295.09 -21.03 0.65 5708 +5710 4 47.87 296.67 -20.84 0.65 5709 +5711 4 48.65 297.67 -19.59 0.65 5710 +5712 4 49.63 298.65 -17.88 0.65 5711 +5713 4 50.8 300.66 -17.64 0.65 5712 +5714 4 52.16 302.88 -17.31 0.65 5713 +5715 4 53.49 305.69 -16.31 0.65 5714 +5716 4 55.72 307.97 -15.95 0.65 5715 +5717 4 56.91 309.76 -15.73 0.65 5716 +5718 4 58.53 311.8 -15.48 0.65 5717 +5719 4 60.98 314.1 -15.19 0.65 5718 +5720 4 61.76 314.65 -13.68 0.65 5719 +5721 4 62.58 315.56 -13.57 0.65 5720 +5722 4 64.04 316.51 -13.44 0.65 5721 +5723 4 64.8 317.81 -12.9 0.65 5722 +5724 4 65.38 318.91 -12.71 0.65 5723 +5725 4 66.61 320.06 -12.56 0.65 5724 +5726 4 68.26 321.45 -12.37 0.65 5725 +5727 4 69.25 323.01 -12.19 0.65 5726 +5728 4 70.18 325.22 -11.94 0.65 5727 +5729 4 71.18 326.58 -11.77 0.65 5728 +5730 4 72.81 328.39 -11.47 0.65 5729 +5731 4 74.19 330.4 -11.08 0.65 5730 +5732 4 75.33 332.55 -10.22 0.65 5731 +5733 4 75.43 334.5 -10.02 0.65 5732 +5734 4 76.29 337.72 -9.21 0.65 5733 +5735 4 76.35 340.09 -8.9 0.65 5734 +5736 4 77.43 343.6 -8.51 0.65 5735 +5737 4 78.93 346.81 -7.08 0.65 5736 +5738 4 79.42 349.21 -6.82 0.65 5737 +5739 4 79.93 351.59 -6.49 0.65 5738 +5740 4 80.73 352.51 -6.37 0.65 5739 +5741 4 81.71 354.07 -6.19 0.65 5740 +5742 4 82.85 356.72 -5.89 0.65 5741 +5743 4 83.26 360.41 -5.49 0.65 5742 +5744 4 84.34 363.91 -5.11 0.65 5743 +5745 4 85.32 365.95 -5.4 0.65 5744 +5746 4 86.98 367.17 -5.54 0.65 5745 +5747 4 87.81 368.14 -6.09 0.65 5746 +5748 4 87.98 369.09 -6.75 0.65 5747 +5749 4 88.17 369.78 -7.12 0.65 5748 +5750 4 89.0 371.3 -8.61 0.65 5749 +5751 4 23.56 265.03 -39.61 1.735 5674 +5752 4 23.87 267.3 -40.43 1.41 5751 +5753 4 24.22 269.42 -41.78 1.19 5752 +5754 4 24.58 271.04 -42.51 1.19 5753 +5755 4 24.74 272.44 -43.26 1.19 5754 +5756 4 24.99 273.38 -43.16 1.19 5755 +5757 4 25.4 273.84 -43.1 1.19 5756 +5758 4 25.55 274.68 -42.78 0.54 5757 +5759 4 25.53 275.13 -42.89 0.54 5758 +5760 4 25.71 274.98 -41.32 0.54 5759 +5761 4 26.32 275.7 -41.68 0.54 5760 +5762 4 26.52 276.14 -41.63 0.54 5761 +5763 4 26.9 276.82 -41.62 0.54 5762 +5764 4 27.05 277.63 -40.93 0.54 5763 +5765 4 27.01 277.98 -40.15 0.54 5764 +5766 4 27.2 278.18 -39.83 0.54 5765 +5767 4 27.37 278.52 -38.88 0.54 5766 +5768 4 27.56 278.94 -38.45 0.54 5767 +5769 4 27.7 279.75 -37.84 0.54 5768 +5770 4 27.85 280.55 -37.15 0.54 5769 +5771 4 27.78 281.61 -36.89 0.76 5770 +5772 4 27.9 282.61 -35.95 0.65 5771 +5773 4 27.85 282.92 -34.72 0.65 5772 +5774 4 27.84 282.88 -34.35 0.65 5773 +5775 4 27.79 283.23 -33.56 0.65 5774 +5776 4 27.72 284.02 -32.72 0.65 5775 +5777 4 27.36 286.11 -32.21 0.76 5776 +5778 4 27.25 287.29 -31.12 0.76 5777 +5779 4 26.75 288.28 -30.43 0.76 5778 +5780 4 26.66 289.31 -29.94 0.76 5779 +5781 4 26.8 290.36 -29.45 0.76 5780 +5782 4 26.9 292.02 -28.68 0.76 5781 +5783 4 26.78 293.72 -28.35 0.76 5782 +5784 4 27.11 295.46 -28.16 0.76 5783 +5785 4 27.46 296.51 -27.6 0.76 5784 +5786 4 28.64 298.26 -26.93 0.76 5785 +5787 4 29.17 299.99 -26.44 0.76 5786 +5788 4 29.29 301.25 -26.09 0.76 5787 +5789 4 29.59 303.41 -25.62 0.76 5788 +5790 4 28.98 305.94 -25.31 0.76 5789 +5791 4 28.41 308.06 -25.1 0.76 5790 +5792 4 28.7 310.21 -24.79 0.76 5791 +5793 4 29.24 312.18 -24.5 0.76 5792 +5794 4 30.0 313.67 -24.25 0.65 5793 +5795 4 31.77 316.57 -23.91 0.65 5794 +5796 4 32.93 318.79 -23.65 0.65 5795 +5797 4 34.26 321.67 -23.32 0.65 5796 +5798 4 35.05 323.0 -23.17 0.65 5797 +5799 4 35.16 324.73 -22.98 0.65 5798 +5800 4 34.62 326.2 -22.85 0.65 5799 +5801 4 33.58 328.93 -22.52 0.65 5800 +5802 4 32.2 333.37 -22.09 0.65 5801 +5803 4 31.87 335.49 -21.88 0.65 5802 +5804 4 31.97 337.0 -21.72 0.65 5803 +5805 4 32.06 339.16 -21.49 0.65 5804 +5806 4 32.39 340.69 -21.33 0.65 5805 +5807 4 32.46 343.06 -21.08 0.65 5806 +5808 4 32.28 345.84 -20.8 0.65 5807 +5809 4 31.76 347.32 -20.66 0.65 5808 +5810 4 31.24 348.57 -20.54 0.65 5809 +5811 4 31.18 349.43 -20.45 0.65 5810 +5812 4 30.84 351.02 -19.24 0.54 5811 +5813 4 31.16 352.76 -19.05 0.54 5812 +5814 4 31.91 354.53 -18.85 0.54 5813 +5815 4 32.28 355.64 -18.8 0.54 5814 +5816 4 32.42 356.93 -18.66 0.54 5815 +5817 4 32.34 358.0 -18.55 0.54 5816 +5818 4 32.29 358.86 -18.47 0.54 5817 +5819 4 31.76 360.33 -18.33 0.54 5818 +5820 4 32.45 362.96 -18.04 0.54 5819 +5821 4 33.01 364.49 -17.87 0.54 5820 +5822 4 33.75 366.49 -17.64 0.54 5821 +5823 4 34.9 368.91 -17.36 0.54 5822 +5824 4 35.9 370.26 -17.2 0.54 5823 +5825 4 36.27 371.15 -17.1 0.54 5824 +5826 4 36.23 371.79 -17.03 0.54 5825 +5827 4 36.28 374.37 -16.77 0.54 5826 +5828 4 35.69 376.91 -16.52 0.54 5827 +5829 4 36.2 379.1 -16.28 0.54 5828 +5830 4 37.1 381.95 -15.96 0.54 5829 +5831 4 38.04 384.15 -15.71 0.54 5830 +5832 4 38.75 386.26 -14.57 0.54 5831 +5833 4 39.93 388.27 -14.34 0.54 5832 +5834 4 40.65 390.46 -14.02 0.435 5833 +5835 4 41.41 391.98 -13.62 0.435 5834 +5836 4 41.94 393.7 -13.05 0.435 5835 +5837 4 41.83 395.15 -12.45 0.435 5836 +5838 4 42.49 398.41 -12.02 0.435 5837 +5839 4 43.63 400.84 -11.67 0.435 5838 +5840 4 44.36 403.24 -11.4 0.435 5839 +5841 4 44.69 404.78 -11.24 0.435 5840 +5842 4 44.98 406.94 -11.01 0.435 5841 +5843 4 44.87 408.65 -10.75 0.435 5842 +5844 4 45.18 410.61 -10.54 0.435 5843 +5845 4 45.88 413.23 -10.26 0.435 5844 +5846 4 47.67 415.71 -9.96 0.435 5845 +5847 4 48.69 416.84 -9.82 0.435 5846 +5848 4 48.63 417.91 -9.71 0.435 5847 +5849 4 48.71 419.63 -9.38 0.435 5848 +5850 4 49.03 421.58 -9.1 0.435 5849 +5851 4 50.44 423.16 -8.82 0.435 5850 +5852 4 53.74 425.93 -8.45 0.435 5851 +5853 4 54.83 429.24 -8.09 0.435 5852 +5854 4 55.38 430.77 -7.91 0.435 5853 +5855 4 55.72 432.04 -7.33 0.435 5854 +5856 4 55.86 433.08 -6.77 0.435 5855 +5857 4 55.78 434.11 -6.28 0.435 5856 +5858 4 55.09 435.55 -7.96 0.435 5857 +5859 4 54.63 436.16 -7.98 0.435 5858 +5860 4 53.7 437.53 -9.21 0.435 5859 +5861 4 53.28 437.76 -9.65 0.435 5860 +5862 4 52.38 438.71 -10.86 0.435 5861 +5863 4 51.26 440.11 -12.55 0.435 5862 +5864 4 50.59 441.31 -14.18 0.435 5863 +5865 4 49.21 443.34 -15.73 0.435 5864 +5866 4 47.62 444.86 -16.67 0.435 5865 +5867 4 47.54 445.89 -16.26 0.435 5866 +5868 4 46.84 446.99 -16.69 0.435 5867 +5869 4 46.54 448.01 -16.29 0.435 5868 +5870 4 46.73 448.43 -16.1 0.435 5869 +5871 4 46.72 449.17 -16.84 0.435 5870 +5872 4 46.45 450.35 -17.94 0.435 5871 +5873 4 46.4 451.22 -18.07 0.435 5872 +5874 4 45.74 451.94 -19.14 0.435 5873 +5875 4 45.25 453.3 -19.99 0.435 5874 +5876 4 45.25 453.85 -20.99 0.435 5875 +5877 4 43.92 454.97 -22.26 0.435 5876 +5878 4 44.24 456.76 -22.52 0.435 5877 +5879 4 42.85 458.73 -23.56 0.435 5878 +5880 4 42.56 460.57 -24.65 0.435 5879 +5881 4 42.88 462.31 -24.54 0.435 5880 +5882 4 43.59 465.49 -25.33 0.435 5881 +5883 4 44.93 468.16 -25.1 0.435 5882 +5884 4 45.62 470.99 -24.79 0.435 5883 +5885 4 46.91 474.68 -24.53 0.435 5884 +5886 4 47.97 478.4 -24.12 0.435 5885 +5887 4 50.13 481.98 -23.7 0.435 5886 +5888 4 52.83 487.3 -23.08 0.435 5887 +5889 4 55.67 490.27 -22.71 0.435 5888 +5890 4 57.08 491.86 -22.51 0.435 5889 +5891 4 59.46 495.96 -22.85 0.435 5890 +5892 4 61.33 497.44 -23.26 0.435 5891 +5893 4 62.37 498.44 -24.04 0.435 5892 +5894 4 64.34 501.8 -23.79 0.435 5893 +5895 4 65.3 502.99 -21.99 0.435 5894 +5896 4 65.63 504.45 -21.31 0.435 5895 +5897 4 66.65 505.4 -21.25 0.435 5896 +5898 4 67.2 506.94 -21.16 0.435 5897 +5899 4 67.75 508.48 -20.99 0.435 5898 +5900 4 68.32 509.8 -20.84 0.435 5899 +5901 4 68.65 511.06 -20.1 0.435 5900 +5902 4 68.8 512.08 -19.54 0.435 5901 +5903 4 68.76 512.5 -19.26 0.435 5902 +5904 4 68.74 513.22 -20.02 0.435 5903 +5905 4 68.72 513.99 -21.14 0.435 5904 +5906 4 68.29 514.99 -22.86 0.435 5905 +5907 4 68.3 515.31 -23.81 0.435 5906 +5908 4 68.27 516.04 -24.49 0.435 5907 +5909 4 68.2 517.37 -24.81 0.435 5908 +5910 4 68.14 518.5 -25.21 0.435 5909 +5911 4 67.33 521.04 -25.12 0.435 5910 +5912 4 67.04 522.62 -25.87 0.435 5911 +5913 4 67.62 524.04 -26.61 0.435 5912 +5914 4 68.19 525.07 -25.66 0.435 5913 +5915 4 68.57 526.53 -26.94 0.435 5914 +5916 4 68.76 527.5 -27.89 0.435 5915 +5917 4 69.37 528.5 -28.75 0.435 5916 +5918 4 69.77 529.73 -29.9 0.435 5917 +5919 4 70.22 530.08 -30.97 0.435 5918 +5920 4 70.75 532.12 -31.5 0.435 5919 +5921 4 70.64 534.61 -32.38 0.435 5920 +5922 4 71.39 536.69 -33.2 0.435 5921 +5923 4 71.73 538.48 -33.46 0.435 5922 +5924 4 72.67 541.21 -34.06 0.435 5923 +5925 4 72.8 542.77 -34.35 0.435 5924 +5926 4 71.81 545.17 -35.18 0.435 5925 +5927 4 71.71 546.68 -35.09 0.435 5926 +5928 4 71.83 548.68 -35.42 0.435 5927 +5929 4 71.94 550.45 -35.68 0.435 5928 +5930 4 64.14 504.21 -21.89 0.435 5895 +5931 4 64.08 505.07 -21.95 0.435 5930 +5932 4 63.6 505.68 -21.75 0.435 5931 +5933 4 64.15 506.63 -19.98 0.435 5932 +5934 4 64.05 507.57 -18.76 0.435 5933 +5935 4 63.68 509.33 -17.0 0.435 5934 +5936 4 62.73 510.02 -15.82 0.435 5935 +5937 4 62.51 509.99 -15.68 0.435 5936 +5938 4 61.42 509.6 -14.77 0.435 5937 +5939 4 60.34 509.57 -15.02 0.435 5938 +5940 4 59.91 509.53 -14.88 0.435 5939 +5941 4 29.75 351.27 -20.3 0.54 5811 +5942 4 29.28 352.11 -20.22 0.54 5941 +5943 4 29.22 352.68 -19.48 0.54 5942 +5944 4 29.16 352.99 -18.32 0.54 5943 +5945 4 29.09 353.79 -17.56 0.54 5944 +5946 4 29.4 355.21 -16.43 0.54 5945 +5947 4 29.58 355.84 -16.06 0.54 5946 +5948 4 29.47 357.04 -15.11 0.54 5947 +5949 4 29.84 357.87 -14.63 0.54 5948 +5950 4 29.76 358.9 -14.01 0.54 5949 +5951 4 29.71 359.26 -13.37 0.54 5950 +5952 4 28.75 360.4 -12.29 0.54 5951 +5953 4 28.7 360.99 -11.77 0.54 5952 +5954 4 27.98 361.47 -10.53 0.54 5953 +5955 4 27.5 361.81 -9.84 0.54 5954 +5956 4 27.02 362.11 -8.84 0.54 5955 +5957 4 26.49 363.26 -7.68 0.54 5956 +5958 4 26.2 364.02 -6.85 0.54 5957 +5959 4 26.12 364.52 -5.37 0.54 5958 +5960 4 26.28 365.11 -4.63 0.54 5959 +5961 4 26.2 365.58 -2.92 0.54 5960 +5962 4 25.47 366.54 -2.01 0.54 5961 +5963 4 25.61 367.34 -1.32 0.54 5962 +5964 4 25.52 368.34 -0.47 0.54 5963 +5965 4 25.47 368.92 0.18 0.54 5964 +5966 4 24.03 370.93 0.81 0.54 5965 +5967 4 23.55 371.52 1.16 0.54 5966 +5968 4 22.6 372.48 1.84 0.54 5967 +5969 4 21.68 373.0 2.48 0.54 5968 +5970 4 21.24 372.96 2.61 0.54 5969 +5971 4 19.84 374.27 3.24 0.54 5970 +5972 4 18.95 374.15 3.89 0.54 5971 +5973 4 18.7 374.48 4.67 0.54 5972 +5974 4 17.53 375.13 6.07 0.54 5973 +5975 4 17.49 375.25 7.06 0.54 5974 +5976 4 17.43 376.06 7.52 0.54 5975 +5977 4 17.62 376.23 8.22 0.54 5976 +5978 4 17.56 376.82 8.88 0.54 5977 +5979 4 17.51 377.66 8.97 0.54 5978 +5980 4 17.63 378.93 9.32 0.54 5979 +5981 4 17.78 380.0 9.67 0.54 5980 +5982 4 17.1 380.35 9.99 0.54 5981 +5983 4 16.64 380.75 10.17 0.54 5982 +5984 4 15.92 381.27 10.96 0.54 5983 +5985 4 15.23 381.86 11.23 0.54 5984 +5986 4 14.3 382.63 11.51 0.54 5985 +5987 4 13.98 384.06 12.11 0.54 5986 +5988 4 12.77 385.63 13.15 0.54 5987 +5989 4 12.73 385.99 13.79 0.54 5988 +5990 4 12.2 387.19 14.5 0.54 5989 +5991 4 11.27 387.95 15.0 0.54 5990 +5992 4 11.22 388.55 15.59 0.54 5991 +5993 4 10.51 389.08 16.24 0.54 5992 +5994 4 10.01 389.86 16.83 0.54 5993 +5995 4 9.52 390.67 17.05 0.54 5994 +5996 4 9.04 391.25 17.48 0.54 5995 +5997 4 8.57 391.6 17.96 0.54 5996 +5998 4 7.88 391.95 18.43 0.54 5997 +5999 4 7.39 392.76 18.65 0.54 5998 +6000 4 6.87 393.74 19.42 0.54 5999 +6001 4 6.34 394.9 20.58 0.54 6000 +6002 4 6.27 395.69 21.26 0.54 6001 +6003 4 6.43 396.3 21.78 0.54 6002 +6004 4 6.57 397.58 22.07 0.54 6003 +6005 4 6.48 398.57 22.93 0.54 6004 +6006 4 6.43 399.2 23.21 0.54 6005 +6007 4 5.04 400.33 23.98 0.54 6006 +6008 4 3.43 401.74 24.09 0.54 6007 +6009 4 3.35 402.8 24.19 0.54 6008 +6010 4 2.87 403.36 24.84 0.54 6009 +6011 4 3.0 404.6 25.58 0.54 6010 +6012 4 3.15 405.46 25.74 0.54 6011 +6013 4 3.08 406.27 26.28 0.54 6012 +6014 4 2.59 407.07 26.73 0.54 6013 +6015 4 2.05 408.49 27.39 0.54 6014 +6016 4 1.98 409.29 27.92 0.54 6015 +6017 4 1.93 409.89 28.5 0.54 6016 +6018 4 2.91 410.88 29.99 0.54 6017 +6019 4 3.43 412.3 31.43 0.54 6018 +6020 4 3.58 413.37 31.7 0.54 6019 +6021 4 3.68 414.82 32.37 0.54 6020 +6022 4 2.95 415.81 32.91 0.54 6021 +6023 4 1.76 417.17 33.71 0.54 6022 +6024 4 1.25 418.16 34.32 0.54 6023 +6025 4 0.73 419.13 35.08 0.54 6024 +6026 4 0.64 420.39 35.51 0.54 6025 +6027 4 0.55 421.35 36.67 0.54 6026 +6028 4 0.08 421.72 37.08 0.54 6027 +6029 4 0.2 422.94 37.88 0.54 6028 +6030 4 0.98 424.27 38.19 0.54 6029 +6031 4 1.17 424.16 39.38 0.54 6030 +6032 4 1.72 425.18 40.41 0.54 6031 +6033 4 2.03 426.31 42.26 0.54 6032 +6034 4 2.55 427.98 43.35 0.54 6033 +6035 4 2.95 428.35 44.08 0.54 6034 +6036 4 3.28 429.66 44.38 0.54 6035 +6037 4 3.67 430.28 44.82 0.54 6036 +6038 4 4.72 430.74 45.28 0.54 6037 +6039 4 5.06 431.83 46.0 0.54 6038 +6040 4 5.04 431.74 46.89 0.54 6039 +6041 4 5.43 431.63 48.17 0.54 6040 +6042 4 5.59 432.47 48.64 0.54 6041 +6043 4 5.98 432.84 49.37 0.54 6042 +6044 4 6.11 433.6 50.73 0.54 6043 +6045 4 6.7 434.17 51.85 0.54 6044 +6046 4 25.07 273.97 -43.1 1.19 5757 +6047 4 25.06 274.47 -43.87 1.19 6046 +6048 4 24.98 275.75 -43.74 1.19 6047 +6049 4 24.47 277.02 -43.62 1.19 6048 +6050 4 24.18 278.89 -45.02 1.19 6049 +6051 4 23.72 279.38 -44.98 1.19 6050 +6052 4 23.54 279.55 -46.77 0.54 6051 +6053 4 22.14 280.97 -46.66 0.54 6052 +6054 4 21.71 280.93 -46.52 0.76 6053 +6055 4 20.77 282.16 -46.41 0.76 6054 +6056 4 21.32 283.49 -46.26 0.76 6055 +6057 4 21.69 284.59 -46.22 0.76 6056 +6058 4 22.05 285.9 -46.08 0.76 6057 +6059 4 21.67 287.7 -44.69 0.435 6058 +6060 4 20.96 288.73 -44.6 0.435 6059 +6061 4 20.88 289.49 -43.62 0.435 6060 +6062 4 19.97 290.04 -43.13 0.435 6061 +6063 4 20.11 291.12 -42.95 0.435 6062 +6064 4 20.25 292.16 -42.61 0.435 6063 +6065 4 20.15 293.62 -42.01 0.435 6064 +6066 4 20.09 294.45 -41.55 0.435 6065 +6067 4 19.1 296.31 -41.3 0.435 6066 +6068 4 18.6 297.08 -40.63 0.435 6067 +6069 4 18.08 298.1 -40.23 0.435 6068 +6070 4 17.71 300.38 -39.4 0.435 6069 +6071 4 17.6 301.85 -39.03 0.435 6070 +6072 4 17.04 303.73 -38.55 0.435 6071 +6073 4 16.52 304.94 -38.06 0.435 6072 +6074 4 16.0 305.92 -37.37 0.435 6073 +6075 4 15.94 306.77 -37.05 0.435 6074 +6076 4 16.04 307.95 -35.87 0.435 6075 +6077 4 16.18 309.25 -35.74 0.435 6076 +6078 4 16.07 310.96 -35.49 0.435 6077 +6079 4 15.99 312.25 -35.36 0.435 6078 +6080 4 15.08 312.83 -35.32 0.435 6079 +6081 4 14.15 313.82 -34.94 0.435 6080 +6082 4 13.44 314.33 -34.07 0.435 6081 +6083 4 12.93 315.37 -33.82 0.435 6082 +6084 4 12.82 316.81 -33.07 0.435 6083 +6085 4 12.97 317.64 -32.68 0.435 6084 +6086 4 12.9 318.66 -32.05 0.435 6085 +6087 4 12.36 320.08 -31.47 0.435 6086 +6088 4 12.3 320.94 -31.3 0.435 6087 +6089 4 12.88 322.03 -30.95 0.435 6088 +6090 4 13.02 323.1 -30.76 0.435 6089 +6091 4 13.18 323.98 -30.66 0.435 6090 +6092 4 13.34 324.8 -30.13 0.435 6091 +6093 4 13.27 325.61 -29.67 0.435 6092 +6094 4 12.95 327.09 -29.45 0.435 6093 +6095 4 12.63 328.3 -28.73 0.435 6094 +6096 4 12.55 329.29 -27.79 0.435 6095 +6097 4 12.93 330.14 -27.33 0.435 6096 +6098 4 13.03 331.6 -26.72 0.435 6097 +6099 4 12.97 332.43 -26.4 0.435 6098 +6100 4 12.94 332.86 -26.21 0.435 6099 +6101 4 13.08 333.88 -25.65 0.435 6100 +6102 4 13.23 334.95 -25.38 0.435 6101 +6103 4 13.22 334.92 -25.08 0.435 6102 +6104 4 13.18 335.3 -24.52 0.435 6103 +6105 4 13.11 336.11 -23.99 0.435 6104 +6106 4 13.49 336.45 -22.82 0.435 6105 +6107 4 13.67 336.84 -22.32 0.435 6106 +6108 4 13.81 337.65 -21.55 0.435 6107 +6109 4 13.96 338.45 -20.79 0.435 6108 +6110 4 14.12 339.31 -20.62 0.435 6109 +6111 4 13.15 340.74 -20.34 0.435 6110 +6112 4 13.31 341.59 -19.95 0.435 6111 +6113 4 12.79 342.32 -18.98 0.435 6112 +6114 4 12.08 343.34 -18.74 0.435 6113 +6115 4 12.02 343.94 -18.38 0.435 6114 +6116 4 12.4 344.81 -18.06 0.435 6115 +6117 4 12.53 346.1 -17.84 0.435 6116 +6118 4 12.49 346.49 -17.43 0.435 6117 +6119 4 12.68 346.93 -17.3 0.435 6118 +6120 4 23.88 280.73 -46.27 1.19 6051 +6121 4 23.8 282.02 -46.14 1.19 6120 +6122 4 24.18 283.73 -47.76 1.19 6121 +6123 4 23.93 284.24 -47.71 1.19 6122 +6124 4 24.54 285.07 -47.92 1.19 6123 +6125 4 24.75 285.61 -48.91 1.19 6124 +6126 4 24.73 286.62 -50.23 1.19 6125 +6127 4 24.24 288.08 -51.45 0.76 6126 +6128 4 23.77 289.26 -52.62 0.975 6127 +6129 4 22.84 291.08 -54.11 0.975 6128 +6130 4 22.32 292.88 -54.92 0.975 6129 +6131 4 22.28 294.06 -56.0 0.975 6130 +6132 4 22.27 294.85 -57.27 0.975 6131 +6133 4 22.43 295.98 -57.61 0.975 6132 +6134 4 23.01 297.66 -58.78 0.975 6133 +6135 4 23.58 299.53 -59.78 0.975 6134 +6136 4 24.17 300.95 -60.52 0.975 6135 +6137 4 24.3 302.04 -60.4 0.975 6136 +6138 4 24.05 303.4 -61.24 0.975 6137 +6139 4 23.55 304.79 -62.25 0.975 6138 +6140 4 23.07 306.17 -63.39 0.975 6139 +6141 4 22.15 307.54 -64.56 0.975 6140 +6142 4 21.22 309.11 -65.62 0.975 6141 +6143 4 20.31 310.26 -66.81 0.975 6142 +6144 4 19.35 312.0 -67.48 0.975 6143 +6145 4 18.4 313.99 -68.43 0.975 6144 +6146 4 18.14 315.18 -69.59 0.975 6145 +6147 4 17.65 316.26 -69.79 0.865 6146 +6148 4 17.4 317.49 -71.33 0.865 6147 +6149 4 17.34 318.61 -71.67 0.865 6148 +6150 4 17.65 320.56 -71.53 0.865 6149 +6151 4 18.23 322.23 -72.63 0.865 6150 +6152 4 18.59 323.55 -72.48 0.865 6151 +6153 4 19.17 324.66 -72.35 0.865 6152 +6154 4 19.57 325.67 -73.52 0.865 6153 +6155 4 19.49 326.96 -73.39 0.865 6154 +6156 4 19.0 328.54 -74.36 0.865 6155 +6157 4 18.04 329.78 -74.25 0.865 6156 +6158 4 17.54 331.38 -75.31 0.865 6157 +6159 4 17.01 333.39 -76.25 0.865 6158 +6160 4 17.18 334.26 -76.15 0.865 6159 +6161 4 17.7 336.24 -76.01 0.865 6160 +6162 4 17.68 337.23 -77.26 0.865 6161 +6163 4 18.05 338.95 -78.89 0.865 6162 +6164 4 18.21 340.34 -79.64 0.865 6163 +6165 4 18.14 341.68 -80.03 0.865 6164 +6166 4 17.88 342.83 -80.82 0.865 6165 +6167 4 17.86 343.85 -82.31 0.865 6166 +6168 4 17.82 345.06 -83.54 0.865 6167 +6169 4 17.55 346.43 -84.3 0.865 6168 +6170 4 17.5 347.57 -85.02 0.865 6169 +6171 4 16.56 348.85 -85.28 0.865 6170 +6172 4 16.07 350.2 -86.06 0.865 6171 +6173 4 15.34 352.02 -87.24 0.865 6172 +6174 4 14.82 353.82 -88.2 0.865 6173 +6175 4 14.52 355.6 -88.92 0.865 6174 +6176 4 14.69 356.56 -89.5 0.865 6175 +6177 4 14.85 358.18 -90.46 0.865 6176 +6178 4 15.41 358.73 -90.84 1.085 6177 +6179 4 16.01 359.36 -90.24 1.085 6178 +6180 4 16.63 360.66 -91.82 1.085 6179 +6181 4 17.24 361.91 -93.1 1.085 6180 +6182 4 17.68 362.51 -94.47 1.085 6181 +6183 4 18.09 363.26 -95.21 1.085 6182 +6184 4 18.3 363.8 -96.05 1.085 6183 +6185 4 18.57 363.98 -96.71 0.975 6184 +6186 4 18.89 364.43 -97.11 1.085 6185 +6187 4 20.61 365.32 -98.4 0.865 6186 +6188 4 21.66 366.12 -99.2 0.76 6187 +6189 4 22.49 367.37 -100.18 0.76 6188 +6190 4 23.14 367.67 -100.58 0.65 6189 +6191 4 23.59 367.52 -100.97 0.65 6190 +6192 4 24.48 367.15 -100.99 0.65 6191 +6193 4 25.35 367.2 -100.96 0.65 6192 +6194 4 26.06 366.9 -102.03 0.65 6193 +6195 4 27.52 367.65 -101.92 0.65 6194 +6196 4 28.62 368.09 -103.43 0.65 6195 +6197 4 29.49 368.42 -104.05 0.65 6196 +6198 4 31.18 369.75 -105.38 0.65 6197 +6199 4 32.48 370.4 -106.64 0.65 6198 +6200 4 34.19 370.94 -106.54 0.65 6199 +6201 4 36.2 370.49 -107.29 0.65 6200 +6202 4 37.67 371.01 -107.2 0.65 6201 +6203 4 39.8 372.33 -108.14 0.65 6202 +6204 4 42.52 374.0 -107.91 0.65 6203 +6205 4 44.19 375.52 -109.07 0.65 6204 +6206 4 47.21 376.51 -110.4 0.65 6205 +6207 4 49.54 377.51 -110.24 0.65 6206 +6208 4 51.91 378.44 -111.53 0.65 6207 +6209 4 53.85 379.36 -112.89 0.65 6208 +6210 4 55.73 380.56 -112.72 0.65 6209 +6211 4 56.29 381.92 -113.02 0.65 6210 +6212 4 56.51 382.16 -113.07 0.65 6211 +6213 4 56.69 382.91 -113.89 0.65 6212 +6214 4 56.91 383.44 -114.73 0.65 6213 +6215 4 57.12 384.21 -115.71 0.65 6214 +6216 4 57.12 384.8 -117.15 0.65 6215 +6217 4 57.14 384.88 -117.97 0.65 6216 +6218 4 57.14 385.14 -118.55 0.65 6217 +6219 4 57.13 385.64 -119.17 0.65 6218 +6220 4 57.31 386.34 -119.47 0.65 6219 +6221 4 57.29 387.11 -120.6 0.65 6220 +6222 4 57.48 387.85 -121.27 0.65 6221 +6223 4 57.7 388.4 -122.34 0.65 6222 +6224 4 58.07 389.78 -122.86 0.65 6223 +6225 4 58.52 389.9 -123.82 0.65 6224 +6226 4 58.95 390.42 -124.36 0.65 6225 +6227 4 59.54 391.6 -124.98 0.65 6226 +6228 4 59.93 392.56 -125.48 0.65 6227 +6229 4 60.59 392.63 -125.75 0.65 6228 +6230 4 61.26 392.78 -126.78 0.65 6229 +6231 4 61.71 392.87 -127.43 0.65 6230 +6232 4 62.38 393.01 -128.31 0.65 6231 +6233 4 62.8 393.51 -128.7 0.65 6232 +6234 4 62.99 394.27 -129.67 0.65 6233 +6235 4 63.18 395.23 -130.47 0.65 6234 +6236 4 62.7 396.08 -130.62 0.65 6235 +6237 4 62.67 396.82 -131.45 0.65 6236 +6238 4 62.85 397.77 -132.18 0.65 6237 +6239 4 63.43 399.16 -132.61 0.65 6238 +6240 4 63.42 399.66 -133.25 0.65 6239 +6241 4 64.45 400.85 -133.62 0.65 6240 +6242 4 64.87 401.65 -134.82 0.65 6241 +6243 4 65.71 402.42 -135.47 0.65 6242 +6244 4 66.81 403.1 -137.18 0.65 6243 +6245 4 67.66 403.67 -137.93 0.65 6244 +6246 4 68.96 404.04 -138.61 0.65 6245 +6247 4 69.74 405.63 -138.88 0.65 6246 +6248 4 70.81 406.19 -139.4 0.65 6247 +6249 4 71.86 407.23 -140.4 0.65 6248 +6250 4 72.65 408.33 -139.96 0.65 6249 +6251 4 73.03 409.19 -139.71 0.65 6250 +6252 4 73.64 409.66 -139.65 0.65 6251 +6253 4 17.2 365.25 -97.28 0.865 6185 +6254 4 16.5 366.08 -97.29 0.865 6253 +6255 4 16.03 366.97 -97.82 0.865 6254 +6256 4 15.58 367.94 -99.07 0.865 6255 +6257 4 15.3 369.59 -100.57 0.865 6256 +6258 4 14.84 370.27 -101.04 0.865 6257 +6259 4 14.38 371.26 -102.53 0.865 6258 +6260 4 14.78 372.76 -104.18 0.865 6259 +6261 4 15.14 373.55 -103.25 0.865 6260 +6262 4 15.73 374.75 -103.87 0.65 6261 +6263 4 15.25 375.54 -103.57 0.65 6262 +6264 4 15.25 375.85 -104.37 0.65 6263 +6265 4 15.25 376.1 -104.72 0.65 6264 +6266 4 15.02 376.57 -105.2 0.65 6265 +6267 4 15.2 377.28 -105.66 0.65 6266 +6268 4 14.76 377.77 -106.44 0.65 6267 +6269 4 14.76 378.6 -108.17 0.65 6268 +6270 4 14.75 379.09 -108.79 0.65 6269 +6271 4 14.74 379.58 -109.27 0.65 6270 +6272 4 14.73 379.83 -109.62 0.65 6271 +6273 4 14.95 380.39 -110.76 0.65 6272 +6274 4 15.37 380.92 -111.45 0.65 6273 +6275 4 15.56 381.37 -111.48 0.65 6274 +6276 4 16.18 382.37 -112.27 0.65 6275 +6277 4 16.39 382.88 -112.97 0.65 6276 +6278 4 16.57 383.62 -113.71 0.65 6277 +6279 4 16.55 384.62 -114.96 0.65 6278 +6280 4 16.55 385.18 -116.18 0.65 6279 +6281 4 16.56 385.76 -117.63 0.65 6280 +6282 4 16.59 386.14 -119.17 0.65 6281 +6283 4 16.6 386.74 -120.77 0.65 6282 +6284 4 16.61 387.1 -122.09 0.65 6283 +6285 4 16.6 387.83 -122.92 0.65 6284 +6286 4 16.63 387.96 -124.26 0.65 6285 +6287 4 16.21 388.54 -125.94 0.65 6286 +6288 4 16.22 389.13 -127.47 0.65 6287 +6289 4 16.23 389.73 -129.05 0.65 6288 +6290 4 16.22 390.53 -130.48 0.65 6289 +6291 4 16.2 391.22 -130.94 0.65 6290 +6292 4 15.75 391.96 -132.0 0.65 6291 +6293 4 15.77 392.32 -133.32 0.65 6292 +6294 4 15.76 393.08 -134.45 0.65 6293 +6295 4 15.31 393.82 -135.66 0.65 6294 +6296 4 14.8 395.38 -136.35 0.65 6295 +6297 4 14.06 396.62 -136.16 0.65 6296 +6298 4 13.1 398.29 -136.09 0.65 6297 +6299 4 11.94 399.82 -136.86 0.65 6298 +6300 4 11.41 401.81 -137.57 0.65 6299 +6301 4 10.48 403.39 -138.64 0.65 6300 +6302 4 9.92 405.82 -139.45 0.65 6301 +6303 4 8.96 407.61 -140.49 0.65 6302 +6304 4 8.04 410.54 -140.44 0.65 6303 +6305 4 7.22 413.91 -141.99 0.54 6304 +6306 4 6.69 415.63 -142.13 0.54 6305 +6307 4 6.49 418.84 -141.88 0.54 6306 +6308 4 5.33 423.29 -141.45 0.54 6307 +6309 4 5.45 425.3 -141.91 0.54 6308 +6310 4 4.76 429.13 -141.53 0.54 6309 +6311 4 3.92 432.09 -141.24 0.54 6310 +6312 4 3.52 435.08 -140.94 0.54 6311 +6313 4 2.56 439.97 -140.46 0.54 6312 +6314 4 1.01 444.29 -141.26 0.54 6313 +6315 4 0.41 446.84 -141.01 0.54 6314 +6316 4 -0.88 450.78 -141.99 0.54 6315 +6317 4 -0.83 453.86 -142.42 0.54 6316 +6318 4 -1.95 457.88 -142.1 0.54 6317 +6319 4 -3.85 460.35 -141.89 0.54 6318 +6320 4 -5.45 462.07 -142.74 0.54 6319 +6321 4 -6.5 464.81 -142.48 0.54 6320 +6322 4 -6.65 467.43 -142.73 0.54 6321 +6323 4 -6.75 469.37 -143.22 0.54 6322 +6324 4 -7.34 471.69 -142.91 0.54 6323 +6325 4 -7.7 474.33 -143.4 0.54 6324 +6326 4 -7.43 476.94 -143.2 0.54 6325 +6327 4 -7.16 479.52 -142.92 0.54 6326 +6328 4 -7.23 484.58 -143.54 0.54 6327 +6329 4 -8.41 489.46 -143.06 0.54 6328 +6330 4 -10.77 492.32 -142.82 0.54 6329 +6331 4 13.94 358.71 -90.57 0.65 6177 +6332 4 13.27 359.66 -91.85 0.65 6331 +6333 4 11.72 360.49 -92.33 0.65 6332 +6334 4 9.96 361.66 -94.21 0.435 6333 +6335 4 7.77 362.75 -95.8 0.435 6334 +6336 4 6.24 363.68 -97.18 0.435 6335 +6337 4 4.2 365.32 -97.58 0.435 6336 +6338 4 2.62 366.31 -97.67 0.435 6337 +6339 4 0.86 367.46 -99.32 0.435 6338 +6340 4 -1.39 368.83 -99.31 0.435 6339 +6341 4 -2.3 370.21 -100.55 0.435 6340 +6342 4 -2.78 371.63 -102.07 0.435 6341 +6343 4 -4.64 373.96 -102.48 0.435 6342 +6344 4 -6.0 375.27 -103.57 0.435 6343 +6345 4 -7.09 375.98 -104.66 0.435 6344 +6346 4 -8.41 377.16 -106.45 0.435 6345 +6347 4 -10.18 378.25 -107.59 0.435 6346 +6348 4 -11.29 379.14 -108.58 0.435 6347 +6349 4 -12.83 380.01 -109.58 0.435 6348 +6350 4 -14.42 381.25 -109.79 0.435 6349 +6351 4 -15.52 381.92 -110.8 0.435 6350 +6352 4 -16.7 383.36 -110.68 0.435 6351 +6353 4 -18.53 384.97 -110.63 0.435 6352 +6354 4 -19.95 386.82 -110.47 0.435 6353 +6355 4 -21.35 388.24 -110.36 0.435 6354 +6356 4 -22.49 389.25 -110.28 0.435 6355 +6357 4 -23.84 390.03 -110.23 0.435 6356 +6358 4 -25.45 391.44 -110.12 0.435 6357 +6359 4 -27.06 392.62 -110.04 0.435 6358 +6360 4 -28.23 394.06 -109.92 0.435 6359 +6361 4 -29.65 395.91 -109.76 0.435 6360 +6362 4 -30.41 396.78 -108.11 0.435 6361 +6363 4 -31.37 397.92 -107.03 0.435 6362 +6364 4 -32.33 399.06 -106.04 0.435 6363 +6365 4 -33.7 400.04 -105.89 0.435 6364 +6366 4 -36.03 402.2 -104.97 0.435 6365 +6367 4 -37.92 404.15 -104.14 0.435 6366 +6368 4 -39.35 405.95 -103.45 0.435 6367 +6369 4 -42.34 408.03 -102.33 0.435 6368 +6370 4 -45.07 410.03 -102.19 0.435 6369 +6371 4 -47.13 411.35 -101.5 0.435 6370 +6372 4 -48.08 412.27 -100.52 0.435 6371 +6373 4 -49.68 413.44 -100.35 0.435 6372 +6374 4 -50.84 414.68 -100.25 0.435 6373 +6375 4 -51.84 416.18 -98.69 0.435 6374 +6376 4 -53.02 417.61 -98.57 0.435 6375 +6377 4 -53.85 417.53 -97.63 0.435 6376 +6378 4 -55.21 418.03 -97.0 0.435 6377 +6379 4 -58.36 419.78 -96.9 0.435 6378 +6380 4 -60.0 421.83 -96.72 0.435 6379 +6381 4 -61.59 422.76 -96.21 0.435 6380 +6382 4 -63.43 424.36 -96.09 0.435 6381 +6383 4 -66.58 426.11 -95.99 0.435 6382 +6384 4 -69.33 428.31 -95.82 0.435 6383 +6385 4 -70.26 429.87 -96.81 0.435 6384 +6386 4 -72.98 431.63 -96.62 0.435 6385 +6387 4 -74.8 433.03 -96.52 0.435 6386 +6388 4 -76.41 434.23 -96.43 0.435 6387 +6389 4 -77.77 434.91 -95.56 0.435 6388 +6390 4 -80.09 437.14 -95.38 0.435 6389 +6391 4 -81.29 438.48 -94.37 0.435 6390 +6392 4 -82.9 439.88 -94.26 0.435 6391 +6393 4 -84.33 441.12 -92.44 0.435 6392 +6394 4 -86.39 442.72 -92.32 0.435 6393 +6395 4 -88.22 444.34 -92.2 0.435 6394 +6396 4 -89.6 445.53 -92.11 0.435 6395 +6397 4 -92.32 446.75 -90.84 0.435 6396 +6398 4 -94.61 448.54 -90.64 0.435 6397 +6399 4 -96.24 450.38 -90.48 0.435 6398 +6400 4 -98.24 451.7 -91.9 0.435 6399 +6401 4 -100.52 453.5 -91.77 0.435 6400 +6402 4 -103.5 456.13 -91.64 0.435 6401 +6403 4 -108.48 459.26 -91.43 0.435 6402 +6404 4 -112.75 461.59 -91.44 0.435 6403 +6405 4 -114.79 462.97 -91.35 0.435 6404 +6406 4 -117.01 463.92 -91.3 0.435 6405 +6407 4 -119.5 465.25 -91.07 0.435 6406 +6408 4 -122.39 466.37 -91.03 0.435 6407 +6409 4 -125.71 467.46 -90.99 0.435 6408 +6410 4 -128.61 468.54 -90.58 0.435 6409 +6411 4 -131.06 469.45 -90.54 0.435 6410 +6412 4 -132.12 469.84 -90.6 0.435 6411 +6413 4 -134.14 470.78 -90.48 0.435 6412 +6414 4 -137.65 471.43 -90.49 0.435 6413 +6415 4 -139.86 471.94 -90.49 0.435 6414 +6416 4 -142.97 473.04 -90.45 0.435 6415 +6417 4 -146.94 474.08 -90.44 0.435 6416 +6418 4 -149.59 474.79 -90.5 0.435 6417 +6419 4 -153.5 474.99 -90.65 0.435 6418 +6420 4 -157.9 475.8 -90.67 0.435 6419 +6421 4 -161.81 475.99 -90.74 0.435 6420 +6422 4 -165.49 475.98 -90.83 0.435 6421 +6423 4 -168.73 475.79 -90.93 0.435 6422 +6424 4 -170.88 475.23 -91.04 0.435 6423 +6425 4 -172.18 475.15 -91.08 0.435 6424 +6426 4 -53.98 419.96 -98.13 0.435 6376 +6427 4 -54.47 421.11 -99.08 0.435 6426 +6428 4 -54.55 422.4 -98.95 0.435 6427 +6429 4 -54.7 424.75 -98.63 0.435 6428 +6430 4 -55.05 426.87 -98.35 0.435 6429 +6431 4 -55.62 429.0 -98.29 0.435 6430 +6432 4 -55.78 431.36 -98.05 0.435 6431 +6433 4 -56.79 433.88 -97.82 0.435 6432 +6434 4 -57.51 435.75 -99.52 0.435 6433 +6435 4 -58.62 436.66 -100.66 0.435 6434 +6436 4 -60.23 438.34 -101.13 0.435 6435 +6437 4 -61.38 439.91 -102.27 0.435 6436 +6438 4 -62.59 442.28 -102.89 0.435 6437 +6439 4 -62.74 444.64 -102.65 0.435 6438 +6440 4 -62.39 446.48 -103.42 0.435 6439 +6441 4 -62.91 448.53 -104.65 0.435 6440 +6442 4 -63.36 449.54 -106.22 0.435 6441 +6443 4 -63.59 450.54 -107.78 0.435 6442 +6444 4 -64.07 451.4 -107.92 0.435 6443 +6445 4 -64.54 452.3 -108.67 0.435 6444 +6446 4 -64.54 453.15 -110.55 0.435 6445 +6447 4 -65.01 453.47 -109.77 0.435 6446 +6448 4 -65.72 454.6 -110.57 0.435 6447 +6449 4 -65.74 455.6 -111.83 0.435 6448 +6450 4 -65.98 456.55 -112.86 0.435 6449 +6451 4 -66.5 458.6 -114.02 0.435 6450 +6452 4 -66.98 460.04 -115.54 0.435 6451 +6453 4 -68.17 461.96 -116.13 0.435 6452 +6454 4 -68.23 463.29 -116.44 0.435 6453 +6455 4 -68.76 464.81 -116.67 0.435 6454 +6456 4 -68.82 465.88 -116.64 0.435 6455 +6457 4 -69.3 467.29 -117.85 0.435 6456 +6458 4 -69.86 469.19 -117.67 0.435 6457 +6459 4 -71.22 470.75 -118.98 0.435 6458 +6460 4 -72.16 472.05 -119.54 0.435 6459 +6461 4 -73.14 473.99 -119.51 0.435 6460 +6462 4 -74.33 476.17 -120.3 0.435 6461 +6463 4 -75.36 478.48 -120.16 0.435 6462 +6464 4 -76.78 480.54 -119.98 0.435 6463 +6465 4 -77.95 481.76 -119.88 0.435 6464 +6466 4 25.33 288.32 -51.62 0.975 6126 +6467 4 26.34 290.03 -52.71 0.865 6466 +6468 4 27.32 292.17 -53.97 0.54 6467 +6469 4 28.34 293.86 -54.98 0.54 6468 +6470 4 28.5 294.74 -55.04 0.54 6469 +6471 4 29.05 296.28 -54.86 0.54 6470 +6472 4 29.4 298.1 -55.41 0.54 6471 +6473 4 29.46 300.47 -55.17 0.54 6472 +6474 4 29.8 302.0 -55.0 0.54 6473 +6475 4 31.12 305.09 -54.65 0.54 6474 +6476 4 31.67 306.63 -54.48 0.54 6475 +6477 4 32.83 308.84 -54.15 0.54 6476 +6478 4 33.98 311.27 -53.87 0.54 6477 +6479 4 34.72 313.2 -53.65 0.54 6478 +6480 4 35.26 314.95 -53.46 0.54 6479 +6481 4 35.57 316.91 -53.25 0.54 6480 +6482 4 35.66 318.85 -53.05 0.54 6481 +6483 4 35.54 320.77 -52.85 0.54 6482 +6484 4 35.46 322.1 -53.09 0.54 6483 +6485 4 35.59 324.19 -54.38 0.54 6484 +6486 4 36.11 326.39 -54.22 0.54 6485 +6487 4 36.61 328.57 -53.98 0.54 6486 +6488 4 37.33 330.97 -53.71 0.54 6487 +6489 4 38.08 332.95 -53.49 0.54 6488 +6490 4 38.65 334.06 -53.36 0.54 6489 +6491 4 39.0 335.63 -53.56 0.54 6490 +6492 4 39.52 337.6 -53.35 0.54 6491 +6493 4 39.48 337.95 -52.49 0.54 6492 +6494 4 39.65 338.6 -52.49 0.54 6493 +6495 4 39.41 339.59 -53.75 0.54 6494 +6496 4 40.0 341.01 -54.49 0.54 6495 +6497 4 40.37 341.85 -54.09 0.54 6496 +6498 4 40.94 343.76 -55.24 0.54 6497 +6499 4 41.13 344.72 -56.11 0.54 6498 +6500 4 41.5 346.44 -57.67 0.54 6499 +6501 4 41.87 347.52 -57.55 0.54 6500 +6502 4 42.46 349.24 -59.08 0.54 6501 +6503 4 43.68 351.44 -60.64 0.54 6502 +6504 4 44.45 353.3 -61.4 0.54 6503 +6505 4 45.24 355.23 -62.84 0.54 6504 +6506 4 46.44 357.87 -64.5 0.54 6505 +6507 4 47.47 359.41 -66.13 0.54 6506 +6508 4 47.84 360.77 -66.5 0.54 6507 +6509 4 47.97 362.08 -66.36 0.54 6508 +6510 4 47.26 363.12 -66.35 0.54 6509 +6511 4 47.47 363.58 -67.05 0.435 6510 +6512 4 48.02 365.12 -66.88 0.435 6511 +6513 4 48.8 366.44 -66.65 0.435 6512 +6514 4 49.75 368.44 -66.35 0.435 6513 +6515 4 50.52 370.19 -66.15 0.435 6514 +6516 4 50.64 371.19 -65.21 0.435 6515 +6517 4 50.96 372.38 -63.8 0.435 6516 +6518 4 50.37 374.71 -63.57 0.435 6517 +6519 4 49.19 376.38 -63.58 0.435 6518 +6520 4 47.53 378.96 -64.41 0.435 6519 +6521 4 46.11 381.06 -64.59 0.435 6520 +6522 4 45.62 382.4 -65.3 0.435 6521 +6523 4 44.67 384.19 -66.34 0.435 6522 +6524 4 44.18 385.82 -67.7 0.435 6523 +6525 4 43.68 387.4 -68.59 0.435 6524 +6526 4 43.36 388.88 -68.44 0.435 6525 +6527 4 43.47 391.11 -68.97 0.435 6526 +6528 4 43.54 393.27 -68.82 0.435 6527 +6529 4 43.76 396.8 -68.6 0.435 6528 +6530 4 44.6 400.51 -68.2 0.435 6529 +6531 4 45.02 404.49 -68.6 0.435 6530 +6532 4 45.92 407.35 -68.28 0.435 6531 +6533 4 46.95 411.5 -67.83 0.435 6532 +6534 4 48.16 416.51 -67.28 0.435 6533 +6535 4 48.99 420.44 -66.86 0.435 6534 +6536 4 49.54 422.24 -67.11 0.435 6535 +6537 4 49.69 423.06 -66.5 0.435 6536 +6538 4 49.83 424.08 -65.86 0.435 6537 +6539 4 49.72 425.54 -65.26 0.435 6538 +6540 4 50.11 426.18 -64.96 0.435 6539 +6541 4 50.89 427.52 -64.72 0.435 6540 +6542 4 51.24 428.04 -63.3 0.435 6541 +6543 4 51.42 428.65 -62.79 0.435 6542 +6544 4 51.54 429.67 -62.0 0.435 6543 +6545 4 51.84 431.56 -61.19 0.435 6544 +6546 4 51.98 432.38 -60.58 0.435 6545 +6547 4 52.35 433.2 -59.89 0.435 6546 +6548 4 52.47 434.22 -59.09 0.435 6547 +6549 4 53.17 436.8 -58.44 0.435 6548 +6550 4 53.21 439.02 -56.85 0.435 6549 +6551 4 53.69 441.63 -56.49 0.435 6550 +6552 4 53.57 443.04 -55.45 0.435 6551 +6553 4 53.9 444.78 -55.26 0.435 6552 +6554 4 54.8 447.42 -54.97 0.435 6553 +6555 4 55.34 449.16 -54.69 0.435 6554 +6556 4 55.83 451.48 -53.69 0.435 6555 +6557 4 56.18 452.79 -53.54 0.435 6556 +6558 4 56.06 454.72 -53.28 0.435 6557 +6559 4 55.49 456.62 -53.09 0.435 6558 +6560 4 54.94 458.52 -52.91 0.435 6559 +6561 4 55.05 460.25 -52.73 0.435 6560 +6562 4 55.07 462.73 -51.42 0.435 6561 +6563 4 56.13 466.45 -51.01 0.435 6562 +6564 4 56.83 469.1 -50.63 0.435 6563 +6565 4 59.16 473.33 -50.14 0.435 6564 +6566 4 60.09 475.75 -49.87 0.435 6565 +6567 4 61.0 478.38 -49.5 0.435 6566 +6568 4 62.09 481.12 -48.06 0.435 6567 +6569 4 62.84 485.72 -45.77 0.435 6568 +6570 4 62.89 487.54 -44.37 0.435 6569 +6571 4 63.63 489.73 -44.13 0.435 6570 +6572 4 64.43 493.53 -42.43 0.435 6571 +6573 4 65.12 495.81 -40.9 0.435 6572 +6574 4 66.22 498.33 -39.4 0.435 6573 +6575 4 66.92 500.4 -37.97 0.435 6574 +6576 4 67.17 502.41 -36.09 0.435 6575 +6577 4 67.07 503.61 -35.15 0.325 6576 +6578 4 67.29 506.85 -34.81 0.325 6577 +6579 4 67.4 508.79 -34.6 0.325 6578 +6580 4 67.66 511.38 -34.33 0.325 6579 +6581 4 67.25 513.79 -32.58 0.325 6580 +6582 4 67.3 516.14 -32.18 0.325 6581 +6583 4 67.8 518.54 -31.92 0.325 6582 +6584 4 67.84 521.06 -30.99 0.325 6583 +6585 4 68.53 523.88 -30.6 0.325 6584 +6586 4 69.43 525.93 -28.86 0.325 6585 +6587 4 69.7 528.54 -28.58 0.325 6586 +6588 4 70.4 531.15 -28.22 0.325 6587 +6589 4 70.49 533.31 -28.0 0.325 6588 +6590 4 70.59 534.82 -27.84 0.325 6589 +6591 4 71.12 536.79 -27.62 0.325 6590 +6592 4 71.92 537.9 -27.41 0.325 6591 +6593 4 72.07 538.99 -27.29 0.325 6592 +6594 4 72.4 540.52 -27.13 0.325 6593 +6595 4 72.5 542.45 -26.93 0.325 6594 +6596 4 72.43 543.53 -26.82 0.325 6595 +6597 4 72.34 545.02 -26.66 0.325 6596 +6598 4 71.81 546.28 -26.55 0.325 6597 +6599 4 71.76 547.15 -26.46 0.325 6598 +6600 4 71.29 547.75 -26.34 0.325 6599 +6601 4 46.3 364.57 -66.23 0.54 6510 +6602 4 45.33 366.22 -66.08 0.54 6601 +6603 4 45.04 367.56 -66.62 0.435 6602 +6604 4 44.56 368.95 -67.77 0.435 6603 +6605 4 44.09 369.87 -68.51 0.435 6604 +6606 4 43.19 371.03 -69.84 0.435 6605 +6607 4 42.95 372.02 -71.1 0.435 6606 +6608 4 42.67 373.11 -71.3 0.435 6607 +6609 4 42.44 374.02 -72.5 0.435 6608 +6610 4 42.21 374.83 -74.15 0.435 6609 +6611 4 41.98 375.79 -75.26 0.435 6610 +6612 4 41.73 376.73 -76.15 0.435 6611 +6613 4 40.8 377.78 -76.36 0.435 6612 +6614 4 39.98 378.15 -78.3 0.435 6613 +6615 4 24.1 207.46 -20.24 0.435 5040 +6616 4 23.59 208.52 -20.21 0.435 6615 +6617 4 23.58 208.74 -20.27 0.435 6616 +6618 4 23.52 209.54 -19.66 0.435 6617 +6619 4 22.8 210.05 -18.64 0.435 6618 +6620 4 22.31 211.11 -18.77 0.435 6619 +6621 4 22.24 211.91 -18.16 0.435 6620 +6622 4 21.69 213.25 -16.68 0.435 6621 +6623 4 20.7 214.86 -16.08 0.435 6622 +6624 4 19.73 216.03 -15.38 0.435 6623 +6625 4 18.27 218.52 -15.16 0.435 6624 +6626 4 18.18 220.03 -15.0 0.435 6625 +6627 4 17.53 223.42 -14.67 0.435 6626 +6628 4 16.27 226.15 -14.42 0.435 6627 +6629 4 14.17 228.39 -14.23 0.435 6628 +6630 4 12.99 229.82 -14.11 0.435 6629 +6631 4 11.49 232.96 -13.82 0.435 6630 +6632 4 9.96 237.06 -14.57 0.435 6631 +6633 4 8.24 240.19 -14.36 0.435 6632 +6634 4 7.72 241.99 -15.32 0.435 6633 +6635 4 6.74 243.87 -15.22 0.435 6634 +6636 4 6.18 246.59 -16.61 0.435 6635 +6637 4 5.23 248.03 -16.49 0.435 6636 +6638 4 4.69 249.52 -16.34 0.435 6637 +6639 4 4.6 251.02 -16.19 0.435 6638 +6640 4 4.72 252.53 -16.03 0.435 6639 +6641 4 4.43 253.75 -16.06 0.435 6640 +6642 4 4.37 254.91 -16.77 0.435 6641 +6643 4 4.32 256.02 -17.11 0.435 6642 +6644 4 2.9 257.88 -17.03 0.435 6643 +6645 4 1.5 259.3 -16.92 0.435 6644 +6646 4 0.6 260.18 -17.52 0.435 6645 +6647 4 0.32 261.24 -17.57 0.435 6646 +6648 4 0.24 262.54 -17.51 0.435 6647 +6649 4 0.18 263.67 -17.92 0.435 6648 +6650 4 -0.38 265.99 -17.7 0.435 6649 +6651 4 -0.96 268.12 -17.49 0.435 6650 +6652 4 -3.07 271.38 -18.86 0.435 6651 +6653 4 -3.81 272.84 -18.73 0.435 6652 +6654 4 -5.45 274.92 -18.78 0.435 6653 +6655 4 -6.01 276.82 -18.6 0.435 6654 +6656 4 -6.17 279.18 -18.43 0.435 6655 +6657 4 -5.97 283.06 -18.02 0.435 6656 +6658 4 -6.37 285.85 -17.89 0.435 6657 +6659 4 -7.39 288.98 -19.47 0.435 6658 +6660 4 -8.22 291.94 -19.19 0.435 6659 +6661 4 -8.3 293.77 -20.06 0.435 6660 +6662 4 -8.93 297.01 -20.19 0.435 6661 +6663 4 -10.6 299.52 -20.27 0.435 6662 +6664 4 -11.6 302.14 -21.08 0.435 6663 +6665 4 -12.66 305.41 -21.82 0.435 6664 +6666 4 -14.57 308.3 -21.57 0.435 6665 +6667 4 -15.9 312.63 -22.13 0.435 6666 +6668 4 -15.82 315.09 -22.86 0.435 6667 +6669 4 -15.83 318.75 -22.55 0.435 6668 +6670 4 -15.55 321.68 -23.29 0.435 6669 +6671 4 -15.48 324.35 -23.85 0.435 6670 +6672 4 -15.2 326.74 -23.67 0.435 6671 +6673 4 -15.06 328.24 -24.04 0.435 6672 +6674 4 -14.28 329.57 -23.73 0.435 6673 +6675 4 -13.73 331.1 -23.48 0.435 6674 +6676 4 -13.31 331.64 -24.25 0.435 6675 +6677 4 -12.95 333.3 -25.35 0.435 6676 +6678 4 -12.51 334.09 -26.53 0.435 6677 +6679 4 -12.15 335.46 -26.92 0.435 6678 +6680 4 17.94 73.8 -14.09 0.435 3403 +6681 4 19.39 74.96 -13.94 0.435 6680 +6682 4 19.82 75.01 -14.07 0.435 6681 +6683 4 20.41 75.32 -12.6 0.435 6682 +6684 4 21.21 75.62 -10.74 0.435 6683 +6685 4 21.97 76.89 -9.83 0.435 6684 +6686 4 23.57 78.87 -9.14 0.435 6685 +6687 4 24.55 80.17 -8.53 0.435 6686 +6688 4 25.68 82.56 -7.73 0.435 6687 +6689 4 26.63 84.46 -6.61 0.435 6688 +6690 4 27.17 85.96 -6.06 0.435 6689 +6691 4 28.36 87.5 -5.5 0.435 6690 +6692 4 30.0 88.86 -4.94 0.435 6691 +6693 4 31.2 90.19 -4.48 0.435 6692 +6694 4 31.43 90.14 -4.48 0.435 6693 +6695 4 31.8 91.02 -4.3 0.435 6694 +6696 4 32.39 91.92 -4.19 0.435 6695 +6697 4 33.18 93.25 -4.03 0.435 6696 +6698 4 33.75 94.57 -3.88 0.435 6697 +6699 4 33.68 95.65 -3.77 0.435 6698 +6700 4 33.82 97.0 -4.23 0.435 6699 +6701 4 33.59 98.01 -5.56 0.435 6700 +6702 4 33.54 98.61 -5.13 0.435 6701 +6703 4 33.5 98.96 -4.34 0.435 6702 +6704 4 33.85 100.02 -3.99 0.435 6703 +6705 4 33.32 101.45 -3.33 0.435 6704 +6706 4 33.4 102.86 -2.13 0.435 6705 +6707 4 33.49 104.76 -1.56 0.435 6706 +6708 4 33.8 105.95 -0.29 0.435 6707 +6709 4 34.35 107.18 0.81 0.435 6708 +6710 4 35.3 109.1 1.72 0.435 6709 +6711 4 35.83 110.81 2.36 0.435 6710 +6712 4 37.04 112.17 2.6 0.435 6711 +6713 4 37.33 114.33 2.91 0.435 6712 +6714 4 37.7 115.16 3.46 0.435 6713 +6715 4 38.24 116.65 4.15 0.435 6714 +6716 4 39.49 117.08 4.98 0.435 6715 +6717 4 40.44 119.07 5.28 0.435 6716 +6718 4 41.22 120.37 5.73 0.435 6717 +6719 4 41.79 121.19 6.51 0.435 6718 +6720 4 42.38 122.61 5.92 0.435 6719 +6721 4 43.11 123.96 7.96 0.435 6720 +6722 4 43.91 124.89 7.92 0.435 6721 +6723 4 33.33 90.68 -3.77 0.435 6694 +6724 4 35.91 91.05 -3.59 0.435 6723 +6725 4 37.85 91.18 -3.54 0.435 6724 +6726 4 40.24 91.1 -3.49 0.435 6725 +6727 4 43.02 91.7 -3.36 0.435 6726 +6728 4 46.0 92.75 -3.18 0.435 6727 +6729 4 49.06 92.28 -3.16 0.435 6728 +6730 4 53.19 92.32 -3.05 0.435 6729 +6731 4 55.53 92.88 -2.94 0.435 6730 +6732 4 57.69 92.96 -2.36 0.435 6731 +6733 4 60.19 94.37 -1.7 0.435 6732 +6734 4 61.4 95.15 -0.15 0.435 6733 +6735 4 63.65 97.22 0.1 0.435 6734 +6736 4 64.84 98.51 1.09 0.435 6735 +6737 4 65.38 99.99 1.86 0.435 6736 +6738 4 68.32 101.44 2.16 0.435 6737 +6739 4 71.07 102.68 2.42 0.435 6738 +6740 4 72.46 104.7 2.67 0.435 6739 +6741 4 75.61 109.62 3.25 0.435 6740 +6742 4 78.25 112.36 3.6 0.435 6741 +6743 4 80.84 115.97 4.03 0.435 6742 +6744 4 83.49 118.72 4.38 0.435 6743 +6745 4 85.54 120.56 4.62 0.435 6744 +6746 4 87.68 120.9 4.78 0.435 6745 +6747 4 90.67 121.69 5.24 0.435 6746 +6748 4 93.01 121.97 6.06 0.435 6747 +6749 4 95.6 122.13 6.22 0.435 6748 +6750 4 98.95 124.04 6.57 0.435 6749 +6751 4 102.37 124.68 6.72 0.435 6750 +6752 4 105.55 125.96 6.92 0.435 6751 +6753 4 106.75 127.24 7.77 0.435 6752 +6754 4 109.25 128.64 8.43 0.435 6753 +6755 4 110.47 129.77 8.79 0.435 6754 +6756 4 111.34 129.82 8.9 0.435 6755 +6757 4 112.41 129.85 9.3 0.435 6756 diff --git a/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc b/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc new file mode 100644 index 0000000..3a7b77c --- /dev/null +++ b/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc @@ -0,0 +1,3022 @@ +# Original file VHC-neuron.swc edited using StdSwc version 1.31 on 2/28/13. +# Irregularities and fixes documented in VHC-neuron.swc.std. See StdSwc1.31.doc for more information. +# +# Neurolucida to SWC conversion from L-Measure. Sridevi Polavaram: spolavar@gmu.edu +# Original fileName:C:\Users\praveen\Desktop\DataProcessing\CurrentArchives\Processing\Johnston\ASC\VHC-neuron.asc +#The original file has a single soma contour that is averaged into 3 soma points +1 1 0.0 0.0 0.0 8.88119 -1 +2 1 0.35 -8.83 -0.87 8.88119 1 +3 1 -0.35 8.83 0.87 8.88119 1 +4 3 0.67 -4.33 -2.18 2.165 1 +5 3 -0.09 -6.62 -2.34 1.84 4 +6 3 -1.76 -8.01 -2.31 1.405 5 +7 3 -2.97 -8.02 -2.2 1.405 6 +8 3 -3.39 -8.37 -2.2 1.405 7 +9 3 -3.48 -8.5 -2.2 1.405 8 +10 3 -3.53 -8.81 -3.1 1.19 9 +11 3 -3.61 -9.04 -3.55 1.19 10 +12 3 -4.27 -8.08 -3.52 0.11 11 +13 3 -5.31 -7.95 -3.18 0.11 12 +14 3 -5.47 -8.42 -3.21 0.54 13 +15 3 -6.69 -8.42 -3.11 0.54 14 +16 3 -7.0 -7.52 -2.98 0.54 15 +17 3 -8.21 -7.23 -2.84 0.54 16 +18 3 -8.66 -7.68 -2.85 0.54 17 +19 3 -9.28 -8.31 -2.85 0.54 18 +20 3 -9.73 -9.06 -2.88 0.54 19 +21 3 -10.03 -10.29 -2.97 0.54 20 +22 3 -10.03 -10.88 -3.03 0.54 21 +23 3 -10.18 -11.95 -3.12 0.54 22 +24 3 -10.63 -12.42 -3.13 0.54 23 +25 3 -10.94 -13.64 -3.22 0.54 24 +26 3 -11.39 -14.1 -3.22 0.54 25 +27 3 -11.68 -15.01 -3.28 0.54 26 +28 3 -12.22 -15.99 -4.24 0.65 27 +29 3 -12.53 -16.61 -4.26 0.65 28 +30 3 -12.98 -17.36 -4.31 0.65 29 +31 3 -13.66 -18.21 -5.16 0.54 30 +32 3 -14.88 -18.82 -5.11 0.54 31 +33 3 -16.85 -19.3 -4.97 0.54 32 +34 3 -17.61 -20.37 -5.0 0.54 33 +35 3 -17.76 -22.05 -5.16 0.54 34 +36 3 -17.6 -22.81 -5.25 0.54 35 +37 3 -17.44 -24.17 -5.39 0.54 36 +38 3 -17.74 -25.1 -5.45 0.54 37 +39 3 -19.12 -25.86 -5.4 0.54 38 +40 3 -20.94 -25.87 -5.24 0.54 39 +41 3 -22.15 -25.9 -5.05 0.54 40 +42 3 -22.3 -26.96 -5.14 0.54 41 +43 3 -22.29 -27.57 -5.19 0.54 42 +44 3 -22.44 -28.04 -5.22 0.54 43 +45 3 -22.94 -27.75 -6.06 0.435 44 +46 3 -23.25 -28.36 -6.09 0.435 45 +47 3 -23.56 -29.27 -6.23 0.435 46 +48 3 -24.05 -29.99 -6.72 0.435 47 +49 3 -24.86 -30.7 -7.31 0.435 48 +50 3 -26.08 -31.33 -7.26 0.435 49 +51 3 -27.75 -31.18 -7.09 0.435 50 +52 3 -29.32 -31.45 -7.5 0.435 51 +53 3 -30.27 -31.72 -7.89 0.435 52 +54 3 -31.81 -31.43 -7.79 0.435 53 +55 3 -33.73 -30.72 -8.68 0.435 54 +56 3 -34.98 -30.41 -8.84 0.435 55 +57 3 -35.25 -30.43 -10.1 0.54 56 +58 3 -36.17 -31.34 -10.26 0.54 57 +59 3 -37.55 -32.11 -10.29 0.54 58 +60 3 -38.19 -32.68 -10.73 0.54 59 +61 3 -38.5 -33.59 -10.86 0.54 60 +62 3 -39.6 -34.93 -11.27 0.54 61 +63 3 -40.35 -36.61 -11.37 0.54 62 +64 3 -41.27 -37.83 -11.48 0.54 63 +65 3 -41.72 -38.58 -11.59 0.54 64 +66 3 -42.19 -39.04 -11.66 0.54 65 +67 3 -42.37 -39.46 -11.98 0.54 66 +68 3 -42.4 -39.43 -12.36 0.54 67 +69 3 -43.94 -40.64 -12.57 0.54 68 +70 3 -45.25 -41.77 -13.61 0.54 69 +71 3 -46.49 -43.28 -13.86 0.54 70 +72 3 -47.71 -44.49 -13.96 0.54 71 +73 3 -48.47 -45.27 -13.96 0.54 72 +74 3 -49.24 -46.32 -14.14 0.54 73 +75 3 -50.18 -47.81 -14.57 0.54 74 +76 3 -52.32 -49.34 -14.68 0.54 75 +77 3 -53.07 -50.1 -14.68 0.54 76 +78 3 -53.41 -50.69 -15.09 0.54 77 +79 3 -53.87 -51.44 -15.19 0.54 78 +80 3 -54.81 -52.33 -15.5 0.54 79 +81 3 -56.05 -53.53 -15.8 0.54 80 +82 3 -57.73 -54.0 -15.77 0.54 81 +83 3 -59.85 -54.92 -15.66 0.54 82 +84 3 -61.23 -56.61 -15.78 0.54 83 +85 3 -62.89 -58.3 -15.79 0.54 84 +86 3 -66.39 -60.61 -15.69 0.54 85 +87 3 -67.76 -61.99 -15.7 0.54 86 +88 3 -68.97 -63.22 -15.7 0.54 87 +89 3 -71.85 -64.3 -15.55 0.54 88 +90 3 -73.99 -64.64 -15.38 0.54 89 +91 3 -75.81 -64.35 -15.19 0.54 90 +92 3 -79.65 -65.1 -15.35 0.54 91 +93 3 -82.24 -64.37 -15.04 0.54 92 +94 3 -84.53 -64.23 -14.82 0.54 93 +95 3 -86.41 -64.78 -15.39 0.54 94 +96 3 -88.69 -65.57 -15.26 0.54 95 +97 3 -90.98 -66.66 -15.15 0.54 96 +98 3 -92.87 -67.8 -16.07 0.54 97 +99 3 -93.53 -69.89 -16.73 0.54 98 +100 3 -95.82 -71.88 -16.79 0.54 99 +101 3 -96.87 -73.56 -16.87 0.54 100 +102 3 -97.85 -75.31 -17.77 0.54 101 +103 3 -98.47 -76.52 -17.99 0.54 102 +104 3 -98.16 -77.74 -18.06 0.54 103 +105 3 -98.09 -78.42 -17.38 0.54 104 +106 3 -97.89 -79.23 -16.87 0.54 105 +107 3 -98.75 -80.5 -16.54 0.54 106 +108 3 -99.36 -81.41 -16.57 0.54 107 +109 3 -99.32 -83.28 -16.31 0.54 108 +110 3 -100.2 -86.04 -16.34 0.54 109 +111 3 -99.59 -88.77 -16.67 0.54 110 +112 3 -99.27 -90.91 -16.82 0.54 111 +113 3 -98.62 -92.16 -16.55 0.54 112 +114 3 -98.46 -93.83 -16.73 0.54 113 +115 3 -98.58 -94.93 -16.45 0.54 114 +116 3 -98.4 -96.01 -16.42 0.54 115 +117 3 -98.69 -96.93 -16.4 0.54 116 +118 3 -22.3 -29.09 -5.42 0.54 44 +119 3 -21.83 -31.67 -5.72 0.54 118 +120 3 -20.61 -34.99 -6.22 0.54 119 +121 3 -19.89 -36.61 -6.91 0.54 120 +122 3 -19.46 -38.24 -7.56 0.54 121 +123 3 -19.16 -39.45 -7.78 0.54 122 +124 3 -18.65 -40.57 -7.25 0.54 123 +125 3 -17.05 -42.46 -6.82 0.54 124 +126 3 -16.58 -44.14 -6.97 0.54 125 +127 3 -16.87 -45.37 -6.98 0.54 126 +128 3 -16.66 -45.58 -6.26 0.54 127 +129 3 -17.25 -47.1 -6.35 0.54 128 +130 3 -18.32 -47.57 -6.3 0.54 129 +131 3 -19.05 -48.38 -6.01 0.54 130 +132 3 -20.1 -49.46 -5.87 0.54 131 +133 3 -20.55 -51.43 -6.02 0.54 132 +134 3 -21.15 -53.57 -6.17 0.54 133 +135 3 -22.35 -55.72 -6.2 0.54 134 +136 3 -23.41 -57.41 -6.27 0.54 135 +137 3 -24.16 -59.09 -6.36 0.54 136 +138 3 -25.52 -59.88 -6.16 0.54 137 +139 3 -26.42 -60.8 -6.08 0.54 138 +140 3 -27.46 -61.9 -5.8 0.54 139 +141 3 -28.2 -64.21 -5.88 0.54 140 +142 3 -28.5 -66.33 -6.07 0.54 141 +143 3 -29.72 -67.87 -6.1 0.54 142 +144 3 -31.08 -68.64 -6.05 0.54 143 +145 3 -32.76 -70.63 -6.09 0.54 144 +146 3 -33.19 -72.63 -6.16 0.54 145 +147 3 -33.8 -75.05 -6.34 0.54 146 +148 3 -33.71 -76.04 -5.62 0.54 147 +149 3 -35.03 -77.17 -6.74 0.54 148 +150 3 -36.24 -79.02 -6.8 0.54 149 +151 3 -37.19 -80.5 -7.25 0.54 150 +152 3 -37.41 -81.78 -8.26 0.54 151 +153 3 -37.85 -84.68 -8.5 0.54 152 +154 3 -38.77 -88.03 -8.81 0.54 153 +155 3 -38.91 -90.01 -9.0 0.54 154 +156 3 -39.06 -91.68 -9.15 0.54 155 +157 3 -38.76 -93.18 -9.47 0.54 156 +158 3 -38.8 -94.06 -9.93 0.54 157 +159 3 -39.48 -94.59 -10.83 0.54 158 +160 3 -41.17 -96.26 -10.99 0.54 159 +161 3 -41.54 -97.09 -11.87 0.54 160 +162 3 -41.81 -97.74 -13.11 0.54 161 +163 3 -41.84 -99.24 -11.97 0.54 162 +164 3 -42.03 -99.98 -10.67 0.54 163 +165 3 -41.98 -100.61 -10.44 0.54 164 +166 3 -42.73 -102.6 -10.48 0.54 165 +167 3 -42.57 -105.2 -10.68 0.54 166 +168 3 -42.71 -106.56 -10.8 0.54 167 +169 3 -43.6 -108.43 -10.59 0.54 168 +170 3 -44.18 -109.97 -10.46 0.54 169 +171 3 -44.24 -110.81 -9.71 0.54 170 +172 3 -44.24 -112.04 -9.68 0.54 171 +173 3 -44.52 -113.29 -9.54 0.54 172 +174 3 -44.93 -114.69 -9.33 0.54 173 +175 3 -44.89 -116.26 -9.04 0.54 174 +176 3 -44.68 -117.66 -8.75 0.54 175 +177 3 -44.39 -119.19 -8.84 0.54 176 +178 3 -43.91 -120.55 -9.02 0.54 177 +179 3 -43.89 -120.9 -8.69 0.54 178 +180 3 -42.63 -122.13 -8.62 0.54 179 +181 3 -41.35 -123.71 -8.14 0.54 180 +182 3 -40.56 -125.39 -8.29 0.54 181 +183 3 -39.95 -126.59 -8.46 0.54 182 +184 3 -39.34 -128.42 -8.63 0.54 183 +185 3 -38.71 -130.56 -8.81 0.54 184 +186 3 -38.07 -131.8 -8.62 0.54 185 +187 3 -37.6 -132.87 -8.68 0.54 186 +188 3 -37.59 -134.08 -8.74 0.54 187 +189 3 -37.59 -135.0 -8.83 0.54 188 +190 3 -37.43 -135.76 -8.92 0.54 189 +191 3 -36.82 -136.67 -9.06 0.54 190 +192 3 -36.05 -138.64 -9.32 0.54 191 +193 3 -35.9 -140.01 -9.47 0.54 192 +194 3 -36.34 -141.07 -9.54 0.54 193 +195 3 -37.05 -141.51 -9.36 0.435 194 +196 3 -37.96 -142.43 -9.36 0.435 195 +197 3 -39.64 -142.9 -9.25 0.435 196 +198 3 -41.44 -143.55 -9.01 0.435 197 +199 3 -42.34 -144.48 -8.86 0.435 198 +200 3 -43.11 -144.62 -8.95 0.435 199 +201 3 -43.6 -145.36 -9.28 0.435 200 +202 3 -43.94 -145.63 -9.65 0.435 201 +203 3 -44.28 -146.19 -10.13 0.435 202 +204 3 -44.99 -146.71 -11.25 0.435 203 +205 3 -45.66 -147.56 -11.88 0.435 204 +206 3 -45.84 -148.59 -12.34 0.435 205 +207 3 -46.13 -150.11 -12.46 0.435 206 +208 3 -46.59 -151.48 -12.62 0.435 207 +209 3 -46.59 -152.7 -12.74 0.435 208 +210 3 -46.42 -154.06 -12.89 0.435 209 +211 3 -46.6 -154.8 -13.25 0.435 210 +212 3 -46.15 -155.85 -13.47 0.435 211 +213 3 -45.85 -157.07 -13.61 0.435 212 +214 3 -46.02 -157.81 -13.9 0.435 213 +215 3 -46.02 -158.71 -14.14 0.435 214 +216 3 -46.22 -159.72 -14.67 0.435 215 +217 3 -46.53 -160.34 -14.78 0.435 216 +218 3 -46.83 -160.94 -14.81 0.435 217 +219 3 -46.99 -161.4 -14.84 0.435 218 +220 3 -47.04 -161.94 -15.64 0.435 219 +221 3 -47.65 -162.54 -15.73 0.435 220 +222 3 -48.11 -163.01 -15.73 0.435 221 +223 3 -48.42 -163.32 -15.73 0.435 222 +224 3 -48.62 -163.71 -16.28 0.435 223 +225 3 -48.31 -165.22 -16.53 0.435 224 +226 3 -47.25 -165.67 -16.67 0.435 225 +227 3 -3.29 -10.26 -4.74 1.19 10 +228 3 -2.54 -10.99 -5.1 1.08 227 +229 3 -1.93 -11.9 -5.24 0.865 228 +230 3 -1.81 -12.92 -5.81 0.65 229 +231 3 -1.21 -13.83 -5.95 0.65 230 +232 3 -1.2 -14.74 -6.04 0.65 231 +233 3 -1.8 -15.96 -6.11 0.65 232 +234 3 -2.26 -16.71 -6.22 0.65 233 +235 3 -3.79 -17.95 -6.19 0.65 234 +236 3 -4.84 -19.93 -6.3 0.65 235 +237 3 -5.14 -20.55 -6.33 0.435 236 +238 3 -6.2 -22.22 -6.39 0.435 237 +239 3 -6.34 -23.59 -6.51 0.435 238 +240 3 -5.58 -24.95 -6.72 0.435 239 +241 3 -4.67 -27.09 -7.01 0.435 240 +242 3 -4.2 -29.67 -7.3 0.435 241 +243 3 -4.2 -30.88 -7.42 0.435 242 +244 3 -3.89 -32.39 -7.6 0.435 243 +245 3 -2.46 -33.18 -8.94 0.435 244 +246 3 -1.39 -33.63 -9.08 0.435 245 +247 3 -0.03 -34.37 -9.35 0.435 246 +248 3 1.17 -35.88 -9.61 0.435 247 +249 3 2.25 -38.15 -9.94 0.435 248 +250 3 3.18 -40.28 -10.23 0.435 249 +251 3 3.48 -41.49 -10.37 0.435 250 +252 3 4.85 -42.85 -10.63 0.435 251 +253 3 6.49 -42.62 -11.29 0.435 252 +254 3 8.21 -43.42 -12.58 0.435 253 +255 3 9.59 -44.79 -11.18 0.435 254 +256 3 10.7 -45.29 -10.8 0.435 255 +257 3 11.5 -46.08 -10.51 0.435 256 +258 3 11.97 -47.16 -10.5 0.435 257 +259 3 13.08 -48.25 -10.26 0.435 258 +260 3 13.0 -48.78 -9.54 0.435 259 +261 3 12.87 -49.57 -9.46 0.435 260 +262 3 12.76 -50.06 -9.04 0.435 261 +263 3 12.82 -51.04 -8.45 0.435 262 +264 3 13.34 -52.46 -7.97 0.435 263 +265 3 13.53 -52.95 -7.73 0.435 264 +266 3 13.55 -53.89 -7.6 0.435 265 +267 3 13.56 -54.5 -7.58 0.435 266 +268 3 -4.18 -10.16 -2.3 0.755 9 +269 3 -5.4 -11.08 -2.28 0.65 268 +270 3 -6.46 -12.15 -2.28 0.65 269 +271 3 -7.06 -13.68 -2.38 0.65 270 +272 3 -7.51 -15.67 -2.45 0.65 271 +273 3 -7.34 -17.65 -2.66 0.65 272 +274 3 -6.43 -19.76 -2.95 0.65 273 +275 3 -5.66 -21.74 -3.21 0.65 274 +276 3 -5.04 -24.47 -3.53 0.65 275 +277 3 -4.42 -25.98 -3.75 0.65 276 +278 3 -4.72 -27.19 -3.83 0.65 277 +279 3 -5.34 -27.81 -3.84 0.65 278 +280 3 -6.55 -27.83 -3.72 0.65 279 +281 3 -7.47 -29.36 -3.79 0.65 280 +282 3 -7.71 -30.46 -3.88 0.65 281 +283 3 -7.85 -30.94 -2.1 0.435 282 +284 3 -8.31 -31.4 -2.1 0.435 283 +285 3 -8.76 -31.87 -2.1 0.435 284 +286 3 -9.26 -32.27 -2.63 0.435 285 +287 3 -9.8 -32.65 -3.44 0.435 286 +288 3 -10.28 -33.09 -3.67 0.435 287 +289 3 -10.55 -33.42 -3.44 0.435 288 +290 3 -10.84 -33.75 -3.23 0.435 289 +291 3 -10.83 -34.36 -3.22 0.435 290 +292 3 -10.5 -34.69 -3.06 0.435 291 +293 3 -9.99 -35.2 -2.47 0.435 292 +294 3 -9.77 -35.72 -1.86 0.435 293 +295 3 -8.83 -36.34 -1.86 0.435 294 +296 3 -8.98 -37.42 -1.86 0.435 295 +297 3 -9.13 -38.17 -1.92 0.435 296 +298 3 -9.44 -38.79 -1.95 0.435 297 +299 3 -10.19 -39.56 -1.89 0.435 298 +300 3 -10.33 -40.33 -1.88 0.435 299 +301 3 -10.62 -41.25 -1.87 0.435 300 +302 3 -10.93 -41.86 -1.9 0.435 301 +303 3 -11.04 -42.96 -1.61 0.435 302 +304 3 -10.29 -43.39 -3.53 0.435 303 +305 3 -10.28 -44.0 -3.52 0.435 304 +306 3 -7.61 -30.42 -3.89 0.54 282 +307 3 -6.54 -31.79 -4.11 0.54 306 +308 3 -5.85 -33.07 -3.47 0.54 307 +309 3 -6.0 -34.45 -3.59 0.54 308 +310 3 -7.37 -35.22 -3.55 0.54 309 +311 3 -7.21 -37.19 -3.75 0.54 310 +312 3 -6.22 -38.47 -4.87 0.54 311 +313 3 -5.61 -39.97 -5.07 0.54 312 +314 3 -6.21 -41.81 -5.21 0.54 313 +315 3 -5.85 -42.47 -4.77 0.435 314 +316 3 -5.24 -43.37 -4.91 0.435 315 +317 3 -4.62 -45.49 -5.17 0.435 316 +318 3 -4.17 -46.86 -5.35 0.435 317 +319 3 -3.56 -47.46 -5.47 0.435 318 +320 3 -2.5 -47.3 -5.55 0.435 319 +321 3 -1.73 -47.43 -5.72 0.435 320 +322 3 -1.12 -48.96 -5.92 0.435 321 +323 3 -1.58 -50.03 -5.98 0.435 322 +324 3 -1.42 -51.69 -6.15 0.435 323 +325 3 -0.66 -53.05 -6.36 0.435 324 +326 3 0.4 -54.4 -6.66 0.435 325 +327 3 1.17 -55.16 -6.81 0.435 326 +328 3 0.71 -56.23 -6.87 0.435 327 +329 3 0.33 -56.76 -7.79 0.435 328 +330 3 -0.32 -58.22 -8.39 0.435 329 +331 3 -1.38 -59.61 -8.44 0.435 330 +332 3 -1.83 -60.98 -8.53 0.435 331 +333 3 -1.82 -62.5 -8.67 0.435 332 +334 3 -1.82 -64.32 -8.86 0.435 333 +335 3 -1.2 -65.54 -9.03 0.435 334 +336 3 0.0 -66.74 -9.26 0.435 335 +337 3 0.47 -68.12 -9.43 0.435 336 +338 3 0.32 -68.57 -9.46 0.435 337 +339 3 0.01 -69.48 -9.53 0.435 338 +340 3 0.02 -70.4 -9.62 0.435 339 +341 3 0.78 -71.76 -9.82 0.435 340 +342 3 1.7 -72.97 -10.02 0.435 341 +343 3 2.45 -74.0 -10.42 0.435 342 +344 3 1.99 -75.37 -10.59 0.435 343 +345 3 1.98 -75.98 -10.65 0.435 344 +346 3 2.75 -77.03 -10.82 0.435 345 +347 3 3.06 -78.25 -10.97 0.435 346 +348 3 2.76 -78.86 -11.0 0.435 347 +349 3 2.15 -79.78 -11.03 0.435 348 +350 3 2.61 -81.14 -11.21 0.435 349 +351 3 3.98 -81.27 -11.35 0.435 350 +352 3 4.44 -81.73 -11.44 0.435 351 +353 3 4.9 -82.79 -11.58 0.435 352 +354 3 5.05 -84.17 -11.73 0.435 353 +355 3 5.11 -85.41 -13.06 0.435 354 +356 3 4.51 -86.03 -13.07 0.435 355 +357 3 4.05 -87.08 -13.13 0.435 356 +358 3 5.87 -87.99 -13.39 0.435 357 +359 3 6.94 -89.34 -13.62 0.435 358 +360 3 7.26 -89.66 -15.19 0.435 359 +361 3 7.41 -90.71 -15.31 0.435 360 +362 3 7.27 -91.78 -15.4 0.435 361 +363 3 6.96 -92.39 -15.43 0.435 362 +364 3 6.97 -93.61 -15.55 0.435 363 +365 3 7.89 -94.51 -15.72 0.435 364 +366 3 8.9 -95.81 -16.63 0.435 365 +367 3 9.5 -97.01 -16.87 0.435 366 +368 3 9.78 -97.89 -17.28 0.435 367 +369 3 10.05 -99.68 -17.87 0.435 368 +370 3 10.22 -101.04 -18.02 0.435 369 +371 3 11.12 -101.33 -18.2 0.435 370 +372 3 12.8 -101.77 -18.4 0.435 371 +373 3 13.56 -102.83 -18.57 0.435 372 +374 3 13.72 -104.5 -18.75 0.435 373 +375 3 14.47 -105.55 -19.0 0.435 374 +376 3 15.39 -106.77 -19.2 0.435 375 +377 3 16.61 -108.57 -19.48 0.435 376 +378 3 17.38 -110.24 -19.72 0.435 377 +379 3 18.45 -112.52 -20.04 0.435 378 +380 3 19.52 -114.78 -20.36 0.435 379 +381 3 21.03 -116.57 -20.9 0.435 380 +382 3 21.89 -118.02 -21.88 0.435 381 +383 3 22.81 -119.53 -22.12 0.435 382 +384 3 24.02 -120.73 -22.34 0.435 383 +385 3 25.54 -121.63 -22.57 0.435 384 +386 3 27.84 -123.58 -22.97 0.435 385 +387 3 29.06 -125.1 -23.23 0.435 386 +388 3 28.92 -127.99 -23.5 0.435 387 +389 3 29.37 -129.34 -23.68 0.435 388 +390 3 29.07 -130.27 -23.81 0.435 389 +391 3 30.9 -131.15 -24.06 0.435 390 +392 3 31.66 -132.83 -24.3 0.435 391 +393 3 32.58 -134.34 -24.53 0.435 392 +394 3 33.65 -135.38 -24.73 0.435 393 +395 3 33.96 -136.6 -24.88 0.435 394 +396 3 35.33 -138.86 -25.23 0.435 395 +397 3 35.84 -140.11 -25.48 0.435 396 +398 3 36.6 -141.17 -25.65 0.435 397 +399 3 37.52 -142.08 -25.82 0.435 398 +400 3 39.34 -142.96 -26.08 0.435 399 +401 3 40.03 -144.86 -27.15 0.435 400 +402 3 40.8 -146.82 -27.42 0.435 401 +403 3 42.11 -148.41 -28.45 0.435 402 +404 3 42.11 -149.32 -28.54 0.435 403 +405 3 42.07 -149.87 -29.12 0.435 404 +406 3 42.82 -151.24 -29.39 0.435 405 +407 3 44.05 -151.83 -29.57 0.435 406 +408 3 45.05 -152.2 -30.46 0.435 407 +409 3 45.07 -152.83 -31.95 0.435 408 +410 3 44.94 -153.0 -33.4 0.435 409 +411 3 45.09 -154.36 -33.54 0.435 410 +412 3 46.16 -156.02 -33.87 0.435 411 +413 3 47.23 -157.98 -34.17 0.435 412 +414 3 49.06 -160.71 -34.6 0.435 413 +415 3 49.67 -162.22 -34.8 0.435 414 +416 3 50.75 -162.66 -34.94 0.435 415 +417 3 51.97 -163.86 -35.17 0.435 416 +418 3 52.73 -165.53 -35.49 0.435 417 +419 3 53.95 -166.73 -35.79 0.435 418 +420 3 56.12 -167.07 -37.08 0.435 419 +421 3 57.77 -167.77 -37.76 0.435 420 +422 3 59.29 -169.59 -38.07 0.435 421 +423 3 60.21 -170.79 -38.27 0.435 422 +424 3 61.11 -171.07 -38.53 0.435 423 +425 3 61.46 -172.32 -39.9 0.435 424 +426 3 61.73 -172.88 -40.37 0.435 425 +427 3 61.98 -174.03 -41.25 0.435 426 +428 3 62.36 -175.0 -42.21 0.435 427 +429 3 62.89 -176.75 -43.26 0.435 428 +430 3 63.65 -178.11 -43.54 0.435 429 +431 3 64.27 -179.61 -43.75 0.435 430 +432 3 64.73 -180.38 -43.87 0.435 431 +433 3 65.79 -181.11 -44.04 0.435 432 +434 3 66.86 -181.57 -44.18 0.435 433 +435 3 68.38 -180.94 -44.26 0.435 434 +436 3 68.69 -180.64 -44.26 0.435 435 +437 3 68.53 -180.47 -46.04 0.435 436 +438 3 68.0 -179.64 -46.59 0.435 437 +439 3 -7.29 -42.58 -5.25 0.435 314 +440 3 -8.04 -43.04 -5.22 0.435 439 +441 3 -9.1 -45.63 -5.38 0.435 440 +442 3 -7.72 -48.2 -5.76 0.435 441 +443 3 -7.1 -50.64 -6.05 0.435 442 +444 3 -7.7 -51.86 -6.05 0.435 443 +445 3 -9.02 -52.67 -5.62 0.435 444 +446 3 -9.47 -53.15 -5.47 0.435 445 +447 3 -10.07 -53.77 -5.41 0.435 446 +448 3 -9.61 -54.83 -5.55 0.435 447 +449 3 -9.46 -55.59 -5.64 0.435 448 +450 3 -10.07 -56.21 -5.65 0.435 449 +451 3 -11.44 -56.36 -5.54 0.435 450 +452 3 -12.35 -57.28 -5.54 0.435 451 +453 3 -12.49 -57.74 -5.57 0.435 452 +454 3 -12.6 -58.26 -5.08 0.435 453 +455 3 -12.59 -59.47 -5.19 0.435 454 +456 3 -12.13 -61.45 -5.36 0.435 455 +457 3 -12.12 -62.66 -5.48 0.435 456 +458 3 -13.18 -63.13 -5.43 0.435 457 +459 3 -13.79 -64.05 -5.46 0.435 458 +460 3 -14.7 -65.88 -5.56 0.435 459 +461 3 -14.54 -67.86 -5.76 0.435 460 +462 3 -14.05 -69.56 -5.67 0.435 461 +463 3 -13.28 -70.32 -5.73 0.435 462 +464 3 -12.67 -71.52 -5.92 0.435 463 +465 3 -12.66 -72.75 -6.03 0.435 464 +466 3 -12.95 -73.97 -6.05 0.435 465 +467 3 -12.96 -75.19 -6.17 0.435 466 +468 3 -13.05 -75.7 -5.67 0.435 467 +469 3 -13.36 -76.3 -5.71 0.435 468 +470 3 -13.35 -76.61 -5.67 0.435 469 +471 3 -13.8 -77.68 -5.73 0.435 470 +472 3 -4.13 -8.82 -3.75 0.11 8 +473 3 -5.04 -9.14 -3.56 0.11 472 +474 3 -5.17 -9.91 -3.62 0.11 473 +475 3 -5.4 -9.38 -4.23 0.65 474 +476 3 -6.03 -9.39 -4.32 0.65 475 +477 3 -7.57 -9.66 -4.59 0.65 476 +478 3 -9.11 -9.96 -4.69 0.65 477 +479 3 -11.24 -10.59 -4.56 0.65 478 +480 3 -13.07 -11.2 -4.52 0.65 479 +481 3 -14.78 -12.25 -4.85 0.65 480 +482 3 -15.69 -13.17 -4.93 0.54 481 +483 3 -16.79 -14.8 -5.44 0.54 482 +484 3 -17.3 -15.82 -6.03 0.54 483 +485 3 -17.49 -16.53 -6.61 0.54 484 +486 3 -18.03 -16.92 -7.43 0.54 485 +487 3 -18.49 -17.35 -7.58 0.54 486 +488 3 -20.18 -16.91 -7.45 0.54 487 +489 3 -22.02 -17.51 -7.64 0.54 488 +490 3 -23.12 -17.93 -7.96 0.54 489 +491 3 -24.34 -18.55 -7.9 0.54 490 +492 3 -25.12 -18.67 -9.82 0.54 491 +493 3 -25.19 -19.23 -10.54 0.54 492 +494 3 -25.88 -18.84 -11.35 0.54 493 +495 3 -27.71 -17.94 -11.09 0.54 494 +496 3 -28.76 -18.42 -10.97 0.54 495 +497 3 -29.45 -18.34 -11.73 0.54 496 +498 3 -31.51 -17.81 -12.39 0.54 497 +499 3 -33.03 -18.12 -12.35 0.54 498 +500 3 -35.21 -17.8 -12.65 0.54 499 +501 3 -37.66 -17.18 -12.52 0.54 500 +502 3 -40.65 -16.07 -13.04 0.54 501 +503 3 -41.66 -16.27 -14.1 0.54 502 +504 3 -43.19 -16.58 -14.07 0.54 503 +505 3 -46.23 -17.82 -13.91 0.54 504 +506 3 -49.43 -18.6 -13.84 0.54 505 +507 3 -52.13 -18.96 -14.91 0.54 506 +508 3 -54.57 -19.28 -14.71 0.54 507 +509 3 -57.24 -18.15 -15.33 0.54 508 +510 3 -60.0 -18.47 -15.2 0.54 509 +511 3 -60.98 -18.7 -15.96 0.54 510 +512 3 -61.98 -18.92 -16.94 0.54 511 +513 3 -63.16 -19.26 -18.08 0.54 512 +514 3 -63.47 -19.57 -18.16 0.54 513 +515 3 -64.11 -20.15 -18.53 0.54 514 +516 3 -64.76 -20.11 -18.92 0.54 515 +517 3 -65.52 -20.87 -18.92 0.54 516 +518 3 -65.65 -21.05 -20.29 0.54 517 +519 3 -65.8 -21.49 -20.48 0.54 518 +520 3 -66.24 -21.66 -21.89 0.54 519 +521 3 -66.09 -21.81 -21.84 0.54 520 +522 3 -65.97 -21.94 -22.24 0.54 521 +523 3 -66.03 -21.87 -22.91 0.54 522 +524 3 -65.79 -22.1 -23.72 0.54 523 +525 3 -65.66 -22.21 -24.11 0.54 524 +526 3 -65.56 -22.92 -24.72 0.54 525 +527 3 -65.5 -23.29 -25.67 0.54 526 +528 3 -65.7 -23.68 -26.37 0.54 527 +529 3 -65.88 -24.11 -26.69 0.54 528 +530 3 -65.95 -24.34 -27.47 0.54 529 +531 3 -66.0 -24.89 -28.04 0.54 530 +532 3 -66.14 -24.75 -29.53 0.54 531 +533 3 -66.17 -25.01 -30.08 0.54 532 +534 3 -66.41 -25.36 -31.07 0.54 533 +535 3 -66.47 -25.93 -31.66 0.54 534 +536 3 -67.13 -26.47 -32.33 0.54 535 +537 3 -67.32 -26.9 -32.73 0.54 536 +538 3 -67.71 -27.11 -33.62 0.54 537 +539 3 -68.11 -27.31 -34.74 0.54 538 +540 3 -68.29 -27.74 -35.07 0.54 539 +541 3 -68.48 -28.16 -35.55 0.54 540 +542 3 -68.82 -29.04 -35.97 0.54 541 +543 3 -65.85 -20.54 -20.83 0.54 517 +544 3 -66.61 -20.69 -20.77 0.54 543 +545 3 -68.01 -20.83 -20.97 0.54 544 +546 3 -69.3 -20.45 -21.72 0.54 545 +547 3 -71.02 -20.27 -21.99 0.54 546 +548 3 -71.91 -20.3 -23.28 0.54 547 +549 3 -73.47 -20.56 -23.68 0.54 548 +550 3 -75.26 -20.3 -24.77 0.54 549 +551 3 -77.1 -20.02 -24.66 0.54 550 +552 3 -78.96 -19.68 -24.82 0.54 551 +553 3 -80.73 -19.46 -25.63 0.54 552 +554 3 -82.71 -20.23 -25.59 0.54 553 +555 3 -84.53 -20.25 -25.42 0.54 554 +556 3 -86.26 -19.76 -25.75 0.54 555 +557 3 -87.79 -18.56 -25.49 0.54 556 +558 3 -89.16 -17.5 -25.26 0.54 557 +559 3 -90.21 -17.06 -25.04 0.54 558 +560 3 -92.19 -16.62 -24.81 0.54 559 +561 3 -93.6 -16.14 -25.02 0.54 560 +562 3 -94.25 -15.81 -25.3 0.54 561 +563 3 -96.38 -14.92 -25.02 0.54 562 +564 3 -24.5 -18.09 -7.92 0.54 491 +565 3 -26.66 -18.39 -8.06 0.54 564 +566 3 -28.03 -19.16 -8.08 0.54 565 +567 3 -29.48 -19.84 -8.99 0.54 566 +568 3 -29.94 -20.9 -9.13 0.54 567 +569 3 -30.25 -21.2 -9.13 0.54 568 +570 3 -31.18 -21.5 -7.63 0.54 569 +571 3 -32.1 -21.52 -7.55 0.54 570 +572 3 -34.69 -21.09 -7.28 0.54 571 +573 3 -38.04 -20.2 -6.96 0.54 572 +574 3 -40.66 -19.74 -6.9 0.54 573 +575 3 -41.28 -20.34 -7.05 0.54 574 +576 3 -43.0 -20.75 -7.53 0.54 575 +577 3 -43.16 -20.9 -7.68 0.54 576 +578 3 -43.07 -21.29 -6.75 0.54 577 +579 3 -43.92 -21.67 -5.95 0.54 578 +580 3 -45.55 -22.49 -5.42 0.54 579 +581 3 -47.53 -23.89 -5.38 0.54 580 +582 3 -49.35 -23.9 -5.14 0.54 581 +583 3 -52.08 -25.15 -5.0 0.54 582 +584 3 -53.9 -26.08 -4.92 0.54 583 +585 3 -55.41 -27.31 -4.77 0.54 584 +586 3 -57.2 -27.98 -4.36 0.54 585 +587 3 -59.45 -28.48 -3.9 0.54 586 +588 3 -61.09 -28.99 -3.41 0.54 587 +589 3 -63.5 -29.65 -2.96 0.54 588 +590 3 -65.78 -29.51 -2.73 0.54 589 +591 3 -69.56 -29.72 -2.18 0.54 590 +592 3 -71.53 -29.6 -1.84 0.54 591 +593 3 -73.15 -29.53 -0.99 0.54 592 +594 3 -73.43 -30.78 -0.87 0.54 593 +595 3 -74.0 -31.43 -0.5 0.54 594 +596 3 -76.57 -30.69 -0.12 0.54 595 +597 3 -79.45 -31.49 0.14 0.54 596 +598 3 -81.74 -31.97 0.31 0.54 597 +599 3 -84.31 -32.46 0.65 0.54 598 +600 3 -85.67 -33.25 0.84 0.54 599 +601 3 -87.01 -33.45 1.25 0.54 600 +602 3 -89.27 -33.94 1.64 0.54 601 +603 3 -90.76 -34.9 1.98 0.54 602 +604 3 -92.58 -36.14 2.12 0.54 603 +605 3 -93.74 -36.8 2.6 0.54 604 +606 3 -96.02 -37.9 2.78 0.54 605 +607 3 -96.78 -38.67 2.78 0.54 606 +608 3 -30.41 -22.58 -9.26 0.54 569 +609 3 -31.31 -24.71 -9.38 0.54 608 +610 3 -32.21 -26.85 -9.5 0.54 609 +611 3 -32.21 -28.06 -9.63 0.54 610 +612 3 -32.23 -28.94 -10.01 0.54 611 +613 3 -32.43 -29.97 -10.55 0.54 612 +614 3 -33.03 -31.18 -10.68 0.54 613 +615 3 -33.72 -32.01 -11.69 0.54 614 +616 3 -34.8 -32.47 -11.71 0.54 615 +617 3 -35.85 -33.55 -11.71 0.54 616 +618 3 -36.47 -34.77 -11.77 0.54 617 +619 3 -36.15 -36.29 -11.95 0.54 618 +620 3 -36.42 -36.55 -11.96 0.54 619 +621 3 -36.57 -37.32 -10.35 0.65 620 +622 3 -36.91 -37.59 -10.73 0.65 621 +623 3 -37.01 -37.49 -11.77 0.65 622 +624 3 -37.15 -37.96 -10.06 0.65 623 +625 3 -37.58 -38.45 -9.76 0.65 624 +626 3 -38.43 -38.82 -9.11 0.65 625 +627 3 -38.88 -39.29 -9.04 0.65 626 +628 3 -39.78 -39.01 -8.85 0.65 627 +629 3 -40.55 -38.86 -8.77 0.54 628 +630 3 -41.77 -38.87 -8.65 0.54 629 +631 3 -42.51 -39.64 -8.51 0.54 630 +632 3 -43.42 -40.58 -8.45 0.54 631 +633 3 -43.39 -42.11 -8.45 0.54 632 +634 3 -43.69 -42.74 -8.4 0.54 633 +635 3 -44.43 -43.52 -8.19 0.54 634 +636 3 -45.94 -43.85 -8.0 0.54 635 +637 3 -47.62 -43.72 -7.76 0.54 636 +638 3 -48.63 -44.23 -7.27 0.54 637 +639 3 -49.35 -45.04 -6.76 0.54 638 +640 3 -50.21 -45.4 -6.26 0.54 639 +641 3 -50.79 -46.05 -5.96 0.54 640 +642 3 -51.85 -47.74 -5.94 0.54 641 +643 3 -53.06 -48.36 -5.9 0.54 642 +644 3 -54.11 -49.45 -5.69 0.54 643 +645 3 -55.62 -50.38 -5.63 0.54 644 +646 3 -56.5 -51.33 -5.34 0.54 645 +647 3 -57.4 -51.64 -5.21 0.54 646 +648 3 -59.23 -50.75 -4.95 0.54 647 +649 3 -59.97 -51.54 -4.75 0.54 648 +650 3 -61.03 -52.62 -4.67 0.54 649 +651 3 -62.84 -53.27 -4.34 0.54 650 +652 3 -63.74 -54.5 -4.3 0.54 651 +653 3 -64.65 -55.42 -4.31 0.54 652 +654 3 -65.71 -55.88 -4.26 0.54 653 +655 3 -67.38 -55.75 -4.09 0.54 654 +656 3 -69.97 -56.54 -3.92 0.54 655 +657 3 -71.02 -58.52 -4.02 0.54 656 +658 3 -71.77 -59.29 -3.96 0.54 657 +659 3 -71.92 -60.98 -4.11 0.54 658 +660 3 -72.07 -62.04 -4.19 0.54 659 +661 3 -72.51 -62.82 -4.0 0.54 660 +662 3 -74.79 -62.7 -3.7 0.54 661 +663 3 -76.29 -63.03 -3.52 0.54 662 +664 3 -76.89 -63.65 -3.38 0.54 663 +665 3 -77.75 -64.63 -2.87 0.54 664 +666 3 -78.35 -65.25 -2.79 0.54 665 +667 3 -79.26 -66.17 -2.79 0.54 666 +668 3 -80.78 -66.49 -2.61 0.54 667 +669 3 -81.84 -67.57 -2.63 0.54 668 +670 3 -82.9 -68.64 -2.63 0.54 669 +671 3 -85.03 -68.97 -2.46 0.54 670 +672 3 -86.1 -70.04 -2.47 0.54 671 +673 3 -87.15 -70.52 -2.34 0.54 672 +674 3 -87.87 -71.62 -2.08 0.54 673 +675 3 -88.17 -71.94 -1.93 0.54 674 +676 3 -88.62 -72.4 -1.93 0.54 675 +677 3 -89.21 -73.02 -1.87 0.54 676 +678 3 -90.59 -73.18 -1.75 0.54 677 +679 3 -92.27 -73.35 -1.62 0.54 678 +680 3 -93.03 -74.13 -1.63 0.54 679 +681 3 -93.63 -74.73 -1.63 0.54 680 +682 3 -94.37 -75.52 -1.49 0.54 681 +683 3 -94.98 -76.74 -1.47 0.54 682 +684 3 -95.28 -77.66 -1.53 0.54 683 +685 3 -95.57 -78.28 -1.49 0.54 684 +686 3 -96.18 -79.2 -1.53 0.54 685 +687 3 -96.63 -79.96 -1.56 0.54 686 +688 3 -98.31 -79.81 -1.39 0.54 687 +689 3 -99.52 -79.83 -1.28 0.54 688 +690 3 -100.5 -80.4 -0.26 0.65 689 +691 3 -101.37 -81.06 0.2 0.65 690 +692 3 -101.93 -81.71 0.64 0.65 691 +693 3 -104.5 -82.22 1.12 0.65 692 +694 3 -107.38 -82.71 1.34 0.65 693 +695 3 -108.58 -83.33 1.48 0.65 694 +696 3 -110.26 -84.42 1.53 0.435 695 +697 3 -112.24 -84.59 1.69 0.435 696 +698 3 -113.74 -84.92 1.94 0.435 697 +699 3 -115.1 -86.3 2.09 0.435 698 +700 3 -115.4 -86.62 2.09 0.65 699 +701 3 -116.47 -87.09 2.14 0.65 700 +702 3 -117.67 -88.32 2.2 0.65 701 +703 3 -118.11 -89.99 2.08 0.65 702 +704 3 -117.51 -90.91 1.93 0.65 703 +705 3 -116.44 -91.96 1.81 0.65 704 +706 3 -116.38 -93.84 2.08 0.65 705 +707 3 -116.38 -94.75 2.06 0.65 706 +708 3 -116.66 -95.39 2.17 0.65 707 +709 3 -116.82 -95.84 2.22 0.65 708 +710 3 -117.38 -95.88 2.65 0.65 709 +711 3 -117.21 -97.57 2.55 0.65 710 +712 3 -117.31 -98.69 3.06 0.65 711 +713 3 -117.87 -99.35 3.56 0.65 712 +714 3 -118.31 -99.82 3.64 0.65 713 +715 3 -119.48 -99.89 4.34 0.65 714 +716 3 -119.79 -100.19 4.34 0.65 715 +717 3 -120.37 -100.84 4.64 0.65 716 +718 3 -121.26 -101.77 4.78 0.65 717 +719 3 -121.57 -102.09 4.78 0.65 718 +720 3 -122.02 -102.54 4.78 0.65 719 +721 3 -123.54 -102.26 5.02 0.65 720 +722 3 -124.3 -102.42 5.07 0.65 721 +723 3 -124.59 -102.74 5.14 0.65 722 +724 3 -124.74 -103.2 5.11 0.65 723 +725 3 -36.35 -37.31 -10.9 0.54 620 +726 3 -35.82 -37.83 -10.25 0.54 725 +727 3 -35.54 -38.11 -10.45 0.54 726 +728 3 -35.25 -38.41 -9.06 0.54 727 +729 3 -34.88 -38.78 -8.38 0.54 728 +730 3 -34.45 -39.82 -7.17 0.54 729 +731 3 -34.43 -40.75 -7.11 0.54 730 +732 3 -34.99 -42.63 -6.71 0.54 731 +733 3 -35.37 -44.07 -6.05 0.54 732 +734 3 -35.66 -44.7 -5.94 0.54 733 +735 3 -35.61 -45.35 -5.55 0.54 734 +736 3 -35.72 -46.45 -5.27 0.54 735 +737 3 -36.02 -47.07 -5.22 0.54 736 +738 3 -36.42 -47.6 -4.63 0.54 737 +739 3 -36.87 -48.68 -4.55 0.54 738 +740 3 -37.46 -49.3 -4.4 0.54 739 +741 3 -37.74 -49.94 -4.22 0.54 740 +742 3 -38.08 -51.13 -3.09 0.54 741 +743 3 -37.89 -52.21 -2.84 0.54 742 +744 3 -38.14 -53.2 -2.31 0.54 743 +745 3 -38.38 -54.17 -1.7 0.54 744 +746 3 -38.36 -55.11 -1.64 0.54 745 +747 3 -38.5 -55.57 -1.52 0.54 746 +748 3 -38.49 -55.89 -1.4 0.54 747 +749 3 -38.75 -56.54 -1.06 0.54 748 +750 3 -39.46 -57.36 -0.54 0.54 749 +751 3 -40.96 -57.7 -0.14 0.54 750 +752 3 -42.01 -57.87 0.0 0.54 751 +753 3 -42.45 -58.35 0.23 0.54 752 +754 3 -43.05 -58.98 0.29 0.54 753 +755 3 6.7 -3.75 -5.33 0.865 1 +756 3 7.16 -4.21 -5.41 0.865 755 +757 3 8.22 -4.04 -5.49 0.865 756 +758 3 9.44 -4.63 -5.66 0.865 757 +759 3 10.51 -5.08 -5.81 0.865 758 +760 3 11.58 -6.45 -6.04 0.865 759 +761 3 12.35 -7.2 -6.18 0.54 760 +762 3 14.62 -7.02 -6.37 0.54 761 +763 3 16.16 -7.01 -6.52 0.54 762 +764 3 16.73 -7.29 -5.23 0.54 763 +765 3 17.34 -7.28 -5.29 0.54 764 +766 3 18.42 -6.85 -3.46 0.54 765 +767 3 19.63 -5.01 -3.39 0.54 766 +768 3 20.89 -4.13 -4.55 0.54 767 +769 3 22.56 -3.66 -4.66 0.54 768 +770 3 23.48 -3.35 -4.72 0.54 769 +771 3 24.39 -2.42 -4.71 0.54 770 +772 3 25.0 -1.82 -4.71 0.54 771 +773 3 27.48 -1.23 -6.0 0.54 772 +774 3 29.0 -1.51 -6.17 0.54 773 +775 3 29.91 -0.59 -6.17 0.54 774 +776 3 31.13 0.63 -6.16 0.54 775 +777 3 32.73 1.79 -6.95 0.54 776 +778 3 34.85 3.33 -7.0 0.54 777 +779 3 36.38 4.25 -7.05 0.54 778 +780 3 39.25 5.95 -7.15 0.54 779 +781 3 41.7 6.88 -7.28 0.54 780 +782 3 44.17 7.47 -8.52 0.54 781 +783 3 45.54 7.95 -8.75 0.54 782 +784 3 46.67 8.34 -7.98 0.54 783 +785 3 48.22 8.32 -7.82 0.54 784 +786 3 49.47 8.61 -7.53 0.54 785 +787 3 50.45 8.24 -6.98 0.54 786 +788 3 52.97 7.87 -6.34 0.54 787 +789 3 54.85 8.43 -5.78 0.54 788 +790 3 56.74 8.68 -5.18 0.54 789 +791 3 58.14 9.43 -5.0 0.54 790 +792 3 59.39 9.7 -4.63 0.54 791 +793 3 60.79 10.44 -4.32 0.54 792 +794 3 62.66 10.41 -4.04 0.54 793 +795 3 65.9 10.85 -3.76 0.54 794 +796 3 18.25 -7.88 -5.43 0.54 765 +797 3 19.2 -8.81 -5.31 0.54 796 +798 3 19.5 -10.04 -5.37 0.54 797 +799 3 19.68 -10.81 -5.32 0.54 798 +800 3 21.72 -13.13 -5.06 0.54 799 +801 3 23.56 -14.94 -5.4 0.54 800 +802 3 24.81 -16.17 -5.41 0.54 801 +803 3 26.03 -18.3 -5.59 0.54 802 +804 3 26.38 -18.96 -5.23 0.54 803 +805 3 26.56 -19.43 -5.06 0.54 804 +806 3 26.58 -20.67 -5.03 0.54 805 +807 3 26.88 -21.57 -5.14 0.54 806 +808 3 27.2 -22.79 -5.22 0.54 807 +809 3 27.99 -23.57 -5.13 0.54 808 +810 3 29.55 -24.49 -4.99 0.54 809 +811 3 31.08 -24.2 -5.03 0.54 810 +812 3 33.23 -23.6 -4.79 0.54 811 +813 3 34.92 -24.35 -4.94 0.54 812 +814 3 36.3 -25.12 -4.99 0.54 813 +815 3 37.35 -25.55 -5.28 0.54 814 +816 3 38.39 -25.36 -5.66 0.54 815 +817 3 39.69 -25.1 -6.6 0.54 816 +818 3 41.21 -25.7 -6.8 0.54 817 +819 3 41.11 -26.5 -8.07 0.435 818 +820 3 41.28 -26.98 -7.9 0.435 819 +821 3 41.37 -27.36 -8.7 0.435 820 +822 3 41.43 -27.72 -9.65 0.435 821 +823 3 41.51 -28.11 -10.53 0.435 822 +824 3 41.7 -28.58 -11.96 0.435 823 +825 3 43.52 -30.38 -12.38 0.435 824 +826 3 44.59 -31.74 -12.61 0.435 825 +827 3 45.81 -34.47 -13.0 0.435 826 +828 3 48.56 -36.26 -13.42 0.435 827 +829 3 49.79 -38.08 -13.71 0.435 828 +830 3 50.69 -39.29 -13.91 0.435 829 +831 3 50.1 -40.51 -13.97 0.435 830 +832 3 47.97 -41.44 -13.87 0.435 831 +833 3 47.06 -42.66 -13.91 0.435 832 +834 3 47.67 -44.48 -14.14 0.435 833 +835 3 49.35 -44.92 -14.33 0.435 834 +836 3 50.37 -45.02 -14.96 0.435 835 +837 3 50.05 -46.22 -15.28 0.435 836 +838 3 49.9 -47.27 -15.45 0.435 837 +839 3 49.75 -49.25 -15.62 0.435 838 +840 3 49.75 -50.47 -15.74 0.435 839 +841 3 49.59 -51.52 -15.98 0.435 840 +842 3 49.53 -52.98 -16.73 0.435 841 +843 3 49.98 -54.33 -17.05 0.435 842 +844 3 50.87 -55.81 -17.58 0.435 843 +845 3 51.79 -57.63 -17.85 0.435 844 +846 3 52.1 -59.75 -18.15 0.435 845 +847 3 52.26 -62.03 -18.38 0.435 846 +848 3 52.85 -62.92 -18.67 0.435 847 +849 3 53.77 -63.52 -18.91 0.435 848 +850 3 54.58 -65.83 -20.41 0.435 849 +851 3 54.57 -67.64 -20.66 0.435 850 +852 3 54.7 -69.58 -21.25 0.435 851 +853 3 54.93 -71.32 -22.26 0.435 852 +854 3 56.08 -72.45 -23.31 0.435 853 +855 3 57.4 -74.07 -24.12 0.435 854 +856 3 58.83 -75.75 -25.63 0.435 855 +857 3 61.87 -78.15 -26.21 0.435 856 +858 3 63.91 -79.24 -27.57 0.435 857 +859 3 66.44 -81.15 -28.52 0.435 858 +860 3 67.97 -82.65 -28.87 0.435 859 +861 3 68.9 -84.76 -29.17 0.435 860 +862 3 70.27 -86.12 -29.43 0.435 861 +863 3 72.7 -86.41 -29.68 0.435 862 +864 3 74.37 -87.44 -30.09 0.435 863 +865 3 76.32 -89.68 -30.79 0.435 864 +866 3 77.64 -91.58 -31.71 0.435 865 +867 3 77.81 -92.34 -33.31 0.435 866 +868 3 78.38 -93.21 -33.98 0.435 867 +869 3 79.18 -94.29 -35.44 0.435 868 +870 3 80.02 -95.42 -36.38 0.435 869 +871 3 79.7 -97.22 -36.84 0.435 870 +872 3 79.68 -100.23 -37.49 0.435 871 +873 3 81.27 -104.22 -39.09 0.435 872 +874 3 82.94 -106.47 -39.54 0.435 873 +875 3 84.3 -108.12 -39.98 0.435 874 +876 3 84.22 -110.15 -41.09 0.435 875 +877 3 83.92 -111.99 -41.3 0.435 876 +878 3 83.01 -114.72 -41.57 0.435 877 +879 3 83.16 -115.79 -41.69 0.435 878 +880 3 84.18 -117.08 -42.58 0.435 879 +881 3 85.78 -118.66 -43.64 0.435 880 +882 3 86.0 -120.08 -44.85 0.435 881 +883 3 86.26 -120.62 -45.54 0.435 882 +884 3 87.14 -121.81 -45.96 0.435 883 +885 3 88.82 -122.26 -46.16 0.435 884 +886 3 89.68 -124.0 -47.16 0.435 885 +887 3 89.84 -126.28 -47.4 0.435 886 +888 3 91.66 -128.08 -47.83 0.435 887 +889 3 93.26 -128.44 -48.84 0.435 888 +890 3 94.76 -128.1 -49.18 0.435 889 +891 3 95.21 -128.56 -49.26 0.435 890 +892 3 41.61 -25.79 -7.52 0.54 818 +893 3 44.26 -26.59 -8.82 0.54 892 +894 3 46.54 -26.4 -9.01 0.54 893 +895 3 48.66 -26.67 -9.47 0.54 894 +896 3 50.33 -27.72 -9.72 0.54 895 +897 3 52.09 -28.24 -10.61 0.54 896 +898 3 54.16 -29.07 -11.64 0.54 897 +899 3 55.53 -29.2 -11.78 0.54 898 +900 3 56.54 -30.2 -10.99 0.54 899 +901 3 58.49 -30.93 -9.81 0.54 900 +902 3 60.79 -32.89 -10.21 0.54 901 +903 3 63.02 -34.5 -9.37 0.54 902 +904 3 65.02 -35.86 -9.6 0.54 903 +905 3 66.69 -37.83 -9.95 0.54 904 +906 3 67.76 -39.18 -10.18 0.54 905 +907 3 69.76 -41.14 -10.55 0.54 906 +908 3 71.64 -42.09 -10.14 0.54 907 +909 3 72.86 -43.0 -10.35 0.54 908 +910 3 73.48 -43.9 -10.49 0.54 909 +911 4 -2.36 9.28 -0.57 4.11 1 +912 4 -2.99 13.54 -0.1 3.14 911 +913 4 -3.77 16.72 0.27 2.49 912 +914 4 -4.07 19.45 0.57 1.73 913 +915 4 -4.39 21.59 0.8 1.515 914 +916 4 -5.0 23.4 1.12 1.405 915 +917 4 -5.16 25.07 1.3 1.405 916 +918 4 -5.16 26.28 1.42 1.405 917 +919 4 -5.46 27.8 1.66 1.405 918 +920 4 -5.05 29.49 3.08 1.73 919 +921 4 -4.75 31.94 3.29 1.73 920 +922 4 -5.06 34.06 3.52 1.73 921 +923 4 -5.52 36.34 3.79 1.73 922 +924 4 -5.87 38.81 3.61 1.405 923 +925 4 -5.8 40.87 2.97 1.405 924 +926 4 -5.82 42.7 3.08 1.19 925 +927 4 -5.37 44.38 3.2 1.19 926 +928 4 -5.22 46.05 3.35 1.19 927 +929 4 -4.31 47.89 3.45 1.19 928 +930 4 -3.71 50.02 3.6 1.19 929 +931 4 -2.65 51.7 3.67 1.19 930 +932 4 -1.75 54.45 3.84 1.19 931 +933 4 -1.45 55.98 3.97 1.19 932 +934 4 -1.43 57.49 2.68 1.19 933 +935 4 -1.34 58.92 3.72 1.19 934 +936 4 -1.66 60.43 3.97 1.19 935 +937 4 -1.36 61.35 3.97 1.19 936 +938 4 -2.03 62.01 3.48 1.19 937 +939 4 -2.42 63.01 2.71 1.19 938 +940 4 -2.68 62.9 3.33 0.54 939 +941 4 -3.28 62.89 3.38 0.54 940 +942 4 -3.26 62.88 3.53 0.54 941 +943 4 -3.2 62.81 4.27 0.54 942 +944 4 -3.18 62.79 4.49 0.54 943 +945 4 -3.56 62.84 5.44 0.54 944 +946 4 -3.5 62.49 6.01 0.54 945 +947 4 -3.44 62.43 6.67 0.54 946 +948 4 -3.33 62.31 7.86 0.54 947 +949 4 -3.13 62.11 8.28 0.54 948 +950 4 -3.12 61.49 8.37 0.54 949 +951 4 -3.11 60.57 8.28 0.54 950 +952 4 -3.24 59.47 8.56 0.54 951 +953 4 -3.23 58.56 8.47 0.54 952 +954 4 -3.22 57.95 8.48 0.54 953 +955 4 -3.81 57.02 8.53 0.54 954 +956 4 -4.11 56.71 8.6 0.54 955 +957 4 -5.02 57.0 8.79 0.54 956 +958 4 -5.55 57.5 9.87 0.54 957 +959 4 -6.0 58.57 10.01 0.65 958 +960 4 -6.76 59.01 10.12 0.65 959 +961 4 -7.3 58.93 10.92 0.65 960 +962 4 -8.11 58.83 10.45 0.65 961 +963 4 -8.11 60.05 8.99 0.65 962 +964 4 -7.92 60.48 7.8 0.65 963 +965 4 -9.09 61.64 6.89 0.65 964 +966 4 -9.86 62.4 6.89 0.65 965 +967 4 -11.04 63.28 5.79 0.65 966 +968 4 -12.6 63.9 5.7 0.65 967 +969 4 -14.08 64.45 4.69 0.65 968 +970 4 -14.86 65.22 4.75 0.65 969 +971 4 -16.53 66.26 5.01 0.65 970 +972 4 -17.44 67.16 5.18 0.65 971 +973 4 -17.75 67.47 5.24 0.65 972 +974 4 -18.66 67.76 5.35 0.65 973 +975 4 -19.88 68.37 5.52 0.65 974 +976 4 -21.15 69.63 5.15 0.65 975 +977 4 -21.96 71.62 5.12 0.65 976 +978 4 -22.38 72.05 3.84 0.65 977 +979 4 -22.04 73.24 2.8 0.65 978 +980 4 -22.69 73.88 2.38 0.435 979 +981 4 -23.76 74.94 2.66 0.435 980 +982 4 -23.91 76.0 2.78 0.54 981 +983 4 -24.22 77.83 2.98 0.54 982 +984 4 -24.36 79.48 3.24 0.54 983 +985 4 -24.22 80.86 3.28 0.54 984 +986 4 -24.13 81.98 2.78 0.54 985 +987 4 -24.25 83.31 1.79 0.54 986 +988 4 -23.93 84.83 0.32 0.54 987 +989 4 -24.03 85.56 -0.72 0.54 988 +990 4 -23.99 87.04 -1.8 0.54 989 +991 4 -24.53 88.18 -2.39 0.54 990 +992 4 -25.3 89.55 -4.0 0.54 991 +993 4 -25.85 91.31 -4.69 0.54 992 +994 4 -26.54 93.82 -5.29 0.54 993 +995 4 -26.94 96.94 -5.77 0.54 994 +996 4 -26.5 99.86 -5.68 0.54 995 +997 4 -25.4 101.2 -6.86 0.54 996 +998 4 -24.5 102.74 -6.87 0.54 997 +999 4 -24.36 105.01 -6.66 0.54 998 +1000 4 -23.75 105.63 -6.73 0.54 999 +1001 4 -22.53 105.95 -6.81 0.54 1000 +1002 4 -21.96 106.6 -7.18 0.54 1001 +1003 4 -21.07 107.54 -7.4 0.54 1002 +1004 4 -20.88 107.97 -8.66 0.54 1003 +1005 4 -20.98 108.68 -9.57 0.54 1004 +1006 4 -21.55 110.15 -10.59 0.54 1005 +1007 4 -22.0 110.61 -12.0 0.54 1006 +1008 4 -22.54 110.53 -12.87 0.54 1007 +1009 4 -23.53 110.0 -13.74 0.54 1008 +1010 4 -24.05 109.62 -14.48 0.54 1009 +1011 4 -24.55 108.9 -15.04 0.54 1010 +1012 4 -24.91 108.66 -15.7 0.54 1011 +1013 4 -25.63 108.16 -16.9 0.54 1012 +1014 4 -27.38 107.78 -17.6 0.54 1013 +1015 4 -29.09 107.35 -18.02 0.54 1014 +1016 4 -30.38 106.79 -18.63 0.54 1015 +1017 4 -31.99 105.66 -19.65 0.54 1016 +1018 4 -33.92 105.15 -20.66 0.54 1017 +1019 4 -35.31 105.02 -20.85 0.54 1018 +1020 4 -36.26 104.14 -21.23 0.54 1019 +1021 4 -37.38 103.73 -21.84 0.54 1020 +1022 4 -38.82 103.03 -22.53 0.54 1021 +1023 4 -39.89 102.56 -22.55 0.54 1022 +1024 4 -21.12 73.85 2.77 0.435 979 +1025 4 -20.74 75.31 2.04 0.435 1024 +1026 4 -21.43 75.38 1.21 0.54 1025 +1027 4 -22.5 76.74 1.44 0.54 1026 +1028 4 -24.34 77.95 1.72 0.54 1027 +1029 4 -25.85 78.23 1.89 0.54 1028 +1030 4 -27.46 79.21 1.31 0.54 1029 +1031 4 -29.09 80.52 0.37 0.54 1030 +1032 4 -30.73 81.25 -0.68 0.54 1031 +1033 4 -31.11 81.93 -1.33 0.54 1032 +1034 4 -32.04 82.54 -1.34 0.54 1033 +1035 4 -32.62 83.11 -2.51 0.54 1034 +1036 4 -33.03 83.23 -3.67 0.54 1035 +1037 4 -33.66 83.85 -3.79 0.54 1036 +1038 4 -34.42 84.31 -5.41 0.54 1037 +1039 4 -34.98 84.86 -4.7 0.54 1038 +1040 4 -35.5 85.38 -5.28 0.54 1039 +1041 4 -36.26 86.44 -6.7 0.54 1040 +1042 4 -36.87 87.35 -6.55 0.54 1041 +1043 4 -38.48 88.04 -7.4 0.54 1042 +1044 4 -40.59 88.91 -8.48 0.54 1043 +1045 4 -42.74 89.84 -8.4 0.54 1044 +1046 4 -44.31 90.47 -8.73 0.54 1045 +1047 4 -45.65 92.4 -9.63 0.54 1046 +1048 4 -46.08 93.44 -10.85 0.54 1047 +1049 4 -2.27 64.69 2.78 1.19 939 +1050 4 -1.98 65.92 2.81 1.19 1049 +1051 4 -1.53 66.99 2.87 1.19 1050 +1052 4 -0.62 69.11 3.05 1.19 1051 +1053 4 -0.92 70.01 3.25 1.19 1052 +1054 4 -1.19 71.49 3.88 1.19 1053 +1055 4 -2.26 72.5 4.08 1.19 1054 +1056 4 -1.69 72.84 5.34 0.54 1055 +1057 4 -1.53 73.28 5.59 0.54 1056 +1058 4 -1.03 73.39 5.93 0.54 1057 +1059 4 -0.89 74.16 5.91 0.54 1058 +1060 4 -0.13 75.84 6.01 0.54 1059 +1061 4 0.46 77.68 6.13 0.54 1060 +1062 4 0.91 78.75 6.19 0.54 1061 +1063 4 0.02 79.93 6.69 0.54 1062 +1064 4 -0.87 80.82 6.94 0.54 1063 +1065 4 -1.18 83.25 7.21 0.54 1064 +1066 4 -1.14 84.41 7.93 0.54 1065 +1067 4 -1.51 85.09 7.27 0.54 1066 +1068 4 -1.52 85.99 7.43 0.54 1067 +1069 4 -1.73 86.82 6.85 0.54 1068 +1070 4 -1.93 87.64 6.35 0.54 1069 +1071 4 -2.29 88.0 5.81 0.54 1070 +1072 4 -2.37 88.68 5.06 0.54 1071 +1073 4 -2.92 89.83 4.23 0.54 1072 +1074 4 -2.86 90.69 3.33 0.54 1073 +1075 4 -3.25 91.68 2.62 0.54 1074 +1076 4 -3.31 92.36 2.02 0.54 1075 +1077 4 -4.27 94.22 1.77 0.54 1076 +1078 4 -4.28 95.44 1.89 0.54 1077 +1079 4 -4.44 96.5 1.92 0.54 1078 +1080 4 -4.95 97.32 1.45 0.54 1079 +1081 4 -4.83 98.72 1.35 0.54 1080 +1082 4 -5.2 99.99 0.83 0.54 1081 +1083 4 -5.57 101.57 0.34 0.54 1082 +1084 4 -5.51 102.44 -0.64 0.54 1083 +1085 4 -6.15 102.16 -2.57 0.54 1084 +1086 4 -6.45 102.17 -2.54 0.54 1085 +1087 4 -7.51 102.61 -2.4 0.54 1086 +1088 4 -7.83 103.82 -2.26 0.54 1087 +1089 4 -7.82 104.73 -2.09 0.54 1088 +1090 4 -7.83 105.65 -1.99 0.54 1089 +1091 4 -8.17 106.6 -2.4 0.54 1090 +1092 4 -8.11 107.45 -3.15 0.54 1091 +1093 4 -8.11 108.07 -4.84 0.54 1092 +1094 4 -8.42 108.38 -6.45 0.54 1093 +1095 4 -9.37 109.01 -6.67 0.54 1094 +1096 4 -9.37 110.83 -6.43 0.54 1095 +1097 4 -9.28 112.27 -6.96 0.54 1096 +1098 4 -9.84 112.83 -7.99 0.54 1097 +1099 4 -10.31 113.3 -8.13 0.54 1098 +1100 4 -11.46 115.96 -8.6 0.54 1099 +1101 4 -11.75 118.36 -9.69 0.54 1100 +1102 4 -11.68 120.11 -10.37 0.54 1101 +1103 4 -11.17 122.05 -11.21 0.54 1102 +1104 4 -12.02 123.2 -12.0 0.54 1103 +1105 4 -13.35 125.12 -12.89 0.54 1104 +1106 4 -12.85 126.46 -13.87 0.54 1105 +1107 4 -12.1 127.24 -14.02 0.54 1106 +1108 4 -10.88 129.37 -13.91 0.54 1107 +1109 4 -10.66 131.88 -14.45 0.54 1108 +1110 4 -10.24 134.8 -14.5 0.54 1109 +1111 4 -9.71 136.09 -15.19 0.54 1110 +1112 4 -9.21 137.74 -16.28 0.54 1111 +1113 4 -8.85 139.52 -17.12 0.54 1112 +1114 4 -8.37 140.88 -18.47 0.54 1113 +1115 4 -8.15 142.17 -19.2 0.54 1114 +1116 4 -7.47 143.03 -20.17 0.54 1115 +1117 4 -6.98 143.76 -21.34 0.54 1116 +1118 4 -6.3 144.62 -22.15 0.54 1117 +1119 4 -5.65 145.49 -23.34 0.54 1118 +1120 4 -4.55 146.83 -24.52 0.54 1119 +1121 4 -4.03 147.56 -25.56 0.54 1120 +1122 4 -3.49 148.24 -26.29 0.54 1121 +1123 4 -2.86 149.13 -27.56 0.54 1122 +1124 4 -1.65 150.97 -27.55 0.54 1123 +1125 4 -1.2 152.35 -29.06 0.54 1124 +1126 4 0.46 154.05 -29.11 0.54 1125 +1127 4 -2.56 72.54 4.11 1.19 1055 +1128 4 -4.2 74.16 4.79 1.08 1127 +1129 4 -5.12 75.06 5.04 1.08 1128 +1130 4 -5.32 75.9 5.51 0.54 1129 +1131 4 -4.55 76.67 5.52 0.54 1130 +1132 4 -2.73 76.99 5.39 0.54 1131 +1133 4 0.29 77.02 5.11 0.54 1132 +1134 4 2.09 76.76 4.54 0.54 1133 +1135 4 4.1 76.3 4.61 0.54 1134 +1136 4 6.44 75.81 4.88 0.54 1135 +1137 4 9.03 74.46 4.59 0.54 1136 +1138 4 11.15 73.57 4.3 0.54 1137 +1139 4 12.56 73.4 4.45 0.54 1138 +1140 4 14.72 72.48 4.46 0.54 1139 +1141 4 16.24 71.58 4.24 0.54 1140 +1142 4 17.65 70.18 4.35 0.54 1141 +1143 4 20.1 68.37 4.02 0.54 1142 +1144 4 21.94 68.38 4.0 0.54 1143 +1145 4 23.51 68.34 4.38 0.54 1144 +1146 4 24.77 68.32 4.65 0.54 1145 +1147 4 26.58 68.03 4.45 0.54 1146 +1148 4 28.73 66.83 4.21 0.54 1147 +1149 4 31.16 67.15 4.02 0.54 1148 +1150 4 34.23 66.84 4.01 0.54 1149 +1151 4 37.46 65.47 3.95 0.54 1150 +1152 4 39.76 65.63 3.9 0.54 1151 +1153 4 42.35 65.8 3.76 0.54 1152 +1154 4 45.1 66.44 3.64 0.54 1153 +1155 4 46.65 66.11 3.77 0.54 1154 +1156 4 49.09 64.29 3.45 0.54 1155 +1157 4 51.69 62.65 3.05 0.54 1156 +1158 4 53.37 63.12 2.94 0.54 1157 +1159 4 55.18 64.05 2.86 0.54 1158 +1160 4 62.55 62.92 2.23 0.54 1159 +1161 4 66.81 62.05 1.75 0.54 1160 +1162 4 69.42 61.89 1.79 0.54 1161 +1163 4 70.71 61.85 2.34 0.54 1162 +1164 4 71.95 60.62 2.34 0.54 1163 +1165 4 74.38 60.03 2.06 0.54 1164 +1166 4 76.51 60.05 1.87 0.54 1165 +1167 4 76.74 59.83 2.57 0.54 1166 +1168 4 78.33 59.47 3.22 0.54 1167 +1169 4 79.02 58.79 3.85 0.54 1168 +1170 4 79.24 58.56 4.57 0.54 1169 +1171 4 79.18 57.1 5.41 0.54 1170 +1172 4 78.9 56.15 5.64 0.54 1171 +1173 4 78.68 55.45 6.5 0.54 1172 +1174 4 78.42 55.1 6.94 0.54 1173 +1175 4 78.14 54.47 7.21 0.54 1174 +1176 4 -6.09 76.33 6.23 1.08 1129 +1177 4 -6.97 77.79 6.92 1.08 1176 +1178 4 -6.79 78.22 7.24 1.08 1177 +1179 4 -6.31 79.27 7.52 1.08 1178 +1180 4 -5.77 79.63 8.49 1.08 1179 +1181 4 -5.31 80.69 8.77 1.08 1180 +1182 4 -4.24 82.37 8.85 1.08 1181 +1183 4 -3.78 82.82 8.93 1.08 1182 +1184 4 -3.8 83.87 9.55 1.08 1183 +1185 4 -3.8 86.0 9.76 1.08 1184 +1186 4 -4.21 87.32 8.86 1.08 1185 +1187 4 -4.67 88.38 9.02 1.08 1186 +1188 4 -5.57 89.89 7.73 1.405 1187 +1189 4 -6.18 91.4 7.93 1.405 1188 +1190 4 -6.29 92.12 8.47 1.3 1189 +1191 4 -6.35 92.48 8.73 1.3 1190 +1192 4 -5.43 91.69 7.22 0.11 1191 +1193 4 -4.97 92.16 7.3 0.435 1192 +1194 4 -4.52 93.52 7.4 0.435 1193 +1195 4 -3.75 95.19 7.49 0.435 1194 +1196 4 -2.85 96.11 7.56 0.435 1195 +1197 4 -1.34 96.74 7.48 0.435 1196 +1198 4 -0.13 96.77 7.22 0.435 1197 +1199 4 1.04 97.42 6.81 0.435 1198 +1200 4 2.99 98.23 6.32 0.435 1199 +1201 4 4.03 99.03 6.08 0.435 1200 +1202 4 5.07 100.41 5.96 0.435 1201 +1203 4 6.42 101.2 5.77 0.435 1202 +1204 4 8.85 102.46 5.52 0.435 1203 +1205 4 9.2 103.02 4.48 0.435 1204 +1206 4 10.99 103.99 3.95 0.435 1205 +1207 4 12.96 105.69 3.94 0.435 1206 +1208 4 15.08 107.22 3.81 0.435 1207 +1209 4 16.37 108.09 2.95 0.435 1208 +1210 4 18.6 109.22 2.32 0.435 1209 +1211 4 21.77 110.34 1.91 0.435 1210 +1212 4 23.85 111.03 1.18 0.435 1211 +1213 4 26.71 111.84 0.7 0.435 1212 +1214 4 29.14 113.08 0.59 0.435 1213 +1215 4 31.56 113.73 0.21 0.435 1214 +1216 4 33.64 114.71 -0.4 0.435 1215 +1217 4 35.75 115.65 -0.58 0.435 1216 +1218 4 39.1 117.21 -0.74 0.435 1217 +1219 4 41.37 119.2 -0.75 0.435 1218 +1220 4 43.96 120.89 -0.83 0.435 1219 +1221 4 47.91 123.37 -0.95 0.435 1220 +1222 4 50.77 124.17 -1.29 0.435 1221 +1223 4 52.39 123.8 -2.23 0.435 1222 +1224 4 55.57 123.99 -2.59 0.435 1223 +1225 4 58.26 124.68 -3.29 0.435 1224 +1226 4 61.6 125.33 -3.62 0.435 1225 +1227 4 65.79 126.35 -4.59 0.435 1226 +1228 4 69.02 127.72 -6.04 0.435 1227 +1229 4 72.83 127.0 -6.53 0.435 1228 +1230 4 77.43 127.39 -7.0 0.435 1229 +1231 4 81.36 128.35 -7.33 0.435 1230 +1232 4 84.07 129.01 -7.82 0.435 1231 +1233 4 86.66 128.58 -8.11 0.435 1232 +1234 4 88.95 128.75 -8.3 0.435 1233 +1235 4 90.32 128.61 -8.44 0.435 1234 +1236 4 -6.92 93.64 8.6 1.3 1190 +1237 4 -6.7 94.03 9.3 1.3 1236 +1238 4 -7.6 95.22 9.65 1.3 1237 +1239 4 -8.01 95.74 9.74 1.3 1238 +1240 4 -6.77 95.72 9.93 0.435 1239 +1241 4 -6.3 95.85 10.13 0.435 1240 +1242 4 -5.99 96.17 10.13 0.435 1241 +1243 4 -5.56 96.37 9.72 0.435 1242 +1244 4 -5.11 96.52 9.7 0.435 1243 +1245 4 -3.65 97.2 9.02 0.435 1244 +1246 4 -3.22 96.78 8.64 0.435 1245 +1247 4 -1.59 96.69 7.95 0.435 1246 +1248 4 0.06 96.27 7.54 0.435 1247 +1249 4 0.75 95.59 6.65 0.435 1248 +1250 4 1.95 94.41 6.19 0.435 1249 +1251 4 3.43 93.55 5.52 0.435 1250 +1252 4 4.94 93.58 5.16 0.435 1251 +1253 4 6.69 93.67 4.25 0.435 1252 +1254 4 7.39 93.9 3.52 0.435 1253 +1255 4 7.55 94.05 1.94 0.435 1254 +1256 4 7.86 93.75 1.95 0.435 1255 +1257 4 8.62 93.6 1.87 0.435 1256 +1258 4 8.47 93.76 0.24 0.435 1257 +1259 4 8.55 93.69 -0.6 0.435 1258 +1260 4 8.65 93.28 -1.17 0.435 1259 +1261 4 8.86 93.09 -2.27 0.435 1260 +1262 4 9.6 92.98 -2.73 0.435 1261 +1263 4 10.35 92.85 -2.97 0.435 1262 +1264 4 11.04 93.07 -3.62 0.435 1263 +1265 4 12.22 92.49 0.75 0.435 1264 +1266 4 12.37 91.72 0.66 0.435 1265 +1267 4 12.64 91.46 0.24 0.435 1266 +1268 4 12.07 91.13 -1.02 0.435 1267 +1269 4 12.68 90.22 -1.24 0.435 1268 +1270 4 13.27 89.64 -1.58 0.435 1269 +1271 4 13.77 88.24 -2.98 0.435 1270 +1272 4 14.83 87.19 -3.25 0.435 1271 +1273 4 15.9 86.75 -3.39 0.435 1272 +1274 4 16.34 85.41 -3.71 0.435 1273 +1275 4 16.74 84.41 -4.6 0.435 1274 +1276 4 17.49 83.36 -4.85 0.435 1275 +1277 4 17.74 82.52 -5.71 0.435 1276 +1278 4 17.35 81.99 -6.48 0.435 1277 +1279 4 16.73 81.39 -6.71 0.435 1278 +1280 4 16.61 80.62 -8.14 0.435 1279 +1281 4 16.89 79.13 -8.68 0.435 1280 +1282 4 17.51 77.92 -8.85 0.435 1281 +1283 4 17.9 76.92 -9.67 0.435 1282 +1284 4 18.34 75.89 -10.12 0.435 1283 +1285 4 18.93 75.3 -10.39 0.435 1284 +1286 4 19.68 75.17 -10.54 0.435 1285 +1287 4 20.75 75.34 -10.7 0.435 1286 +1288 4 21.77 74.33 -11.35 0.435 1287 +1289 4 22.35 73.44 -11.79 0.435 1288 +1290 4 22.45 73.35 -12.41 0.435 1289 +1291 4 22.72 71.88 -13.03 0.435 1290 +1292 4 23.1 69.68 -14.19 0.435 1291 +1293 4 24.33 68.48 -14.42 0.435 1292 +1294 4 24.92 67.6 -14.79 0.435 1293 +1295 4 26.7 66.45 -15.59 0.435 1294 +1296 4 27.74 64.82 -16.14 0.435 1295 +1297 4 30.33 61.95 -16.75 0.435 1296 +1298 4 32.47 60.45 -17.09 0.435 1297 +1299 4 33.38 59.54 -17.26 0.435 1298 +1300 4 35.28 56.77 -18.68 0.435 1299 +1301 4 35.84 55.31 -19.42 0.435 1300 +1302 4 36.6 54.26 -19.66 0.435 1301 +1303 4 37.2 53.36 -19.88 0.435 1302 +1304 4 37.67 52.92 -19.97 0.435 1303 +1305 4 38.06 52.53 -20.8 0.435 1304 +1306 4 38.49 52.1 -21.18 0.435 1305 +1307 4 -8.0 96.22 10.54 1.3 1239 +1308 4 -8.91 97.42 10.82 1.3 1307 +1309 4 -10.54 98.52 11.08 1.3 1308 +1310 4 -11.37 99.05 12.03 0.54 1309 +1311 4 -12.45 99.8 12.2 0.54 1310 +1312 4 -13.21 100.55 12.35 0.54 1311 +1313 4 -14.17 100.6 11.92 0.54 1312 +1314 4 -15.54 101.05 12.01 0.54 1313 +1315 4 -16.17 102.27 12.04 0.54 1314 +1316 4 -17.05 103.14 12.59 0.54 1315 +1317 4 -19.02 105.37 13.29 0.54 1316 +1318 4 -19.32 106.29 13.4 0.54 1317 +1319 4 -19.78 107.34 13.55 0.54 1318 +1320 4 -20.55 109.01 13.79 0.54 1319 +1321 4 -20.8 108.95 14.41 0.54 1320 +1322 4 -21.56 109.39 14.52 0.54 1321 +1323 4 -22.61 109.53 14.7 0.54 1322 +1324 4 -23.57 109.86 14.45 0.54 1323 +1325 4 -24.08 110.37 13.94 0.54 1324 +1326 4 -23.72 112.15 13.02 0.54 1325 +1327 4 -24.34 112.46 13.03 0.54 1326 +1328 4 -25.41 113.81 13.26 0.54 1327 +1329 4 -26.93 116.54 13.67 0.54 1328 +1330 4 -27.6 119.31 13.54 0.54 1329 +1331 4 -27.31 120.86 13.51 0.54 1330 +1332 4 -26.83 122.22 12.17 0.54 1331 +1333 4 -27.15 123.13 12.22 0.54 1332 +1334 4 -28.01 125.51 11.47 0.54 1333 +1335 4 -27.85 127.77 10.24 0.54 1334 +1336 4 -28.01 129.17 8.65 0.54 1335 +1337 4 -28.25 130.01 7.85 0.54 1336 +1338 4 -29.16 130.9 8.1 0.54 1337 +1339 4 -30.38 132.72 8.38 0.54 1338 +1340 4 -30.99 133.33 6.83 0.54 1339 +1341 4 -32.18 136.02 6.0 0.54 1340 +1342 4 -33.32 138.37 5.49 0.54 1341 +1343 4 -33.63 140.51 5.67 0.54 1342 +1344 4 -35.17 143.23 6.07 0.54 1343 +1345 4 -35.5 145.38 6.08 0.54 1344 +1346 4 -35.76 148.97 5.47 0.54 1345 +1347 4 -35.49 152.03 5.45 0.54 1346 +1348 4 -35.46 155.97 4.54 0.54 1347 +1349 4 -36.39 158.7 4.9 0.54 1348 +1350 4 -37.16 162.49 5.33 0.54 1349 +1351 4 -38.67 165.51 4.26 0.54 1350 +1352 4 -40.46 167.59 3.49 0.54 1351 +1353 4 -40.73 169.07 2.37 0.54 1352 +1354 4 -41.1 170.05 1.83 0.54 1353 +1355 4 -42.23 171.76 1.5 0.54 1354 +1356 4 -43.65 173.48 1.26 0.54 1355 +1357 4 -44.41 174.23 1.4 0.54 1356 +1358 4 -44.59 175.64 -0.4 0.54 1357 +1359 4 -44.76 177.91 -0.16 0.54 1358 +1360 4 -44.15 180.04 -0.01 0.54 1359 +1361 4 -43.85 182.49 0.19 0.54 1360 +1362 4 -44.5 184.95 0.18 0.54 1361 +1363 4 -45.07 187.94 -0.59 0.54 1362 +1364 4 -44.92 190.53 -1.94 0.54 1363 +1365 4 -44.75 191.57 -0.05 0.54 1364 +1366 4 -45.06 191.87 -0.06 0.54 1365 +1367 4 -44.43 192.47 0.09 0.54 1366 +1368 4 -46.08 176.81 1.81 0.54 1357 +1369 4 -49.45 181.64 1.0 0.54 1368 +1370 4 -50.39 182.55 2.54 0.54 1369 +1371 4 -52.84 184.97 3.01 0.54 1370 +1372 4 -54.24 188.18 3.14 0.54 1371 +1373 4 -10.13 99.23 11.11 1.19 1309 +1374 4 -10.86 100.86 11.71 1.08 1373 +1375 4 -10.7 100.97 11.71 1.08 1374 +1376 4 -11.55 100.89 12.54 0.54 1375 +1377 4 -12.46 101.19 12.65 0.54 1376 +1378 4 -13.07 101.79 12.77 0.54 1377 +1379 4 -13.83 102.54 12.91 0.54 1378 +1380 4 -14.44 103.15 13.02 0.54 1379 +1381 4 -15.2 104.51 13.22 0.54 1380 +1382 4 -15.97 106.78 13.51 0.54 1381 +1383 4 -15.22 108.15 13.58 0.54 1382 +1384 4 -15.22 109.07 13.67 0.54 1383 +1385 4 -15.45 110.22 12.9 0.54 1384 +1386 4 -16.38 111.13 13.0 0.54 1385 +1387 4 -17.15 112.5 13.2 0.54 1386 +1388 4 -18.07 114.61 13.5 0.54 1387 +1389 4 -18.84 116.58 13.76 0.54 1388 +1390 4 -19.91 119.16 14.11 0.54 1389 +1391 4 -20.09 122.07 14.18 0.54 1390 +1392 4 -20.92 123.8 13.74 0.54 1391 +1393 4 -21.25 125.64 13.81 0.54 1392 +1394 4 -22.16 128.37 14.07 0.54 1393 +1395 4 -23.4 130.48 14.39 0.54 1394 +1396 4 -24.92 133.22 14.8 0.54 1395 +1397 4 -26.92 135.79 15.17 0.54 1396 +1398 4 -29.09 138.84 15.37 0.54 1397 +1399 4 -29.71 140.97 15.55 0.54 1398 +1400 4 -31.13 144.79 15.68 0.54 1399 +1401 4 -31.29 147.39 15.86 0.54 1400 +1402 4 -32.47 150.38 15.14 0.54 1401 +1403 4 -33.09 152.81 15.43 0.54 1402 +1404 4 -32.94 154.79 15.61 0.54 1403 +1405 4 -34.16 155.99 15.84 0.54 1404 +1406 4 -35.44 156.94 15.45 0.54 1405 +1407 4 -36.97 157.54 15.58 0.54 1406 +1408 4 -38.05 158.61 15.78 0.54 1407 +1409 4 -38.2 160.89 16.01 0.54 1408 +1410 4 -39.55 162.96 16.26 0.54 1409 +1411 4 -39.86 165.09 16.5 0.54 1410 +1412 4 -40.93 167.05 16.78 0.54 1411 +1413 4 -42.35 169.06 16.59 0.54 1412 +1414 4 -43.42 171.33 16.91 0.54 1413 +1415 4 -44.51 173.92 17.18 0.54 1414 +1416 4 -44.51 175.75 17.36 0.54 1415 +1417 4 -45.66 179.31 16.98 0.54 1416 +1418 4 -46.89 181.43 17.31 0.54 1417 +1419 4 -48.12 185.38 17.72 0.54 1418 +1420 4 -48.44 189.33 18.14 0.54 1419 +1421 4 -49.21 191.61 18.43 0.54 1420 +1422 4 -49.37 193.89 18.67 0.54 1421 +1423 4 -48.8 196.05 18.52 0.54 1422 +1424 4 -48.59 197.98 17.64 0.54 1423 +1425 4 -49.06 199.95 17.8 0.54 1424 +1426 4 -49.67 201.17 17.98 0.54 1425 +1427 4 -49.29 205.94 17.8 0.54 1426 +1428 4 -50.12 208.29 17.43 0.54 1427 +1429 4 -50.05 209.74 16.66 0.54 1428 +1430 4 -50.52 211.72 16.81 0.54 1429 +1431 4 -51.59 214.3 17.16 0.54 1430 +1432 4 -51.95 216.77 16.99 0.54 1431 +1433 4 -51.85 218.19 16.59 0.54 1432 +1434 4 -51.41 220.79 16.73 0.54 1433 +1435 4 -51.44 221.73 16.52 0.54 1434 +1436 4 -51.19 223.31 16.04 0.54 1435 +1437 4 -10.4 102.22 11.88 1.08 1375 +1438 4 -9.64 102.99 11.89 1.08 1437 +1439 4 -8.89 104.97 12.08 1.08 1438 +1440 4 -8.74 106.95 12.26 1.08 1439 +1441 4 -8.24 109.18 12.96 0.975 1440 +1442 4 -7.33 111.62 13.19 0.975 1441 +1443 4 -7.03 112.84 13.28 0.975 1442 +1444 4 -6.11 112.65 14.32 0.65 1443 +1445 4 -5.35 112.5 14.23 0.65 1444 +1446 4 -4.89 112.05 14.15 0.65 1445 +1447 4 -5.04 110.98 14.06 0.65 1446 +1448 4 -4.58 109.62 13.89 0.435 1447 +1449 4 -3.51 108.26 13.65 0.435 1448 +1450 4 -2.19 106.34 12.81 0.435 1449 +1451 4 -1.4 105.26 12.86 0.435 1450 +1452 4 -0.76 104.63 13.11 0.54 1451 +1453 4 0.21 103.36 13.59 0.54 1452 +1454 4 0.57 102.09 13.96 0.54 1453 +1455 4 1.41 100.65 14.64 0.54 1454 +1456 4 1.88 99.27 14.47 0.54 1455 +1457 4 2.21 98.33 14.65 0.54 1456 +1458 4 2.57 97.38 15.13 0.54 1457 +1459 4 2.89 96.46 15.08 0.54 1458 +1460 4 3.2 95.23 15.0 0.54 1459 +1461 4 3.81 94.63 14.89 0.54 1460 +1462 4 5.05 92.81 14.75 0.54 1461 +1463 4 5.54 92.32 14.96 0.54 1462 +1464 4 6.32 90.95 14.91 0.54 1463 +1465 4 6.78 89.56 14.89 0.54 1464 +1466 4 7.3 88.75 15.36 0.54 1465 +1467 4 7.46 88.3 15.37 0.54 1466 +1468 4 -7.18 114.81 13.56 0.975 1443 +1469 4 -8.4 116.92 13.89 0.975 1468 +1470 4 -9.63 119.35 14.24 0.975 1469 +1471 4 -11.16 122.06 14.65 0.975 1470 +1472 4 -11.68 123.48 15.96 0.975 1471 +1473 4 -12.43 124.23 16.1 0.975 1472 +1474 4 -12.83 124.88 16.2 0.975 1473 +1475 4 -12.98 124.12 14.48 0.54 1474 +1476 4 -13.43 123.36 14.45 0.54 1475 +1477 4 -13.12 122.14 14.29 0.54 1476 +1478 4 -12.82 121.54 14.21 0.435 1477 +1479 4 -13.12 120.02 14.09 0.435 1478 +1480 4 -13.12 119.41 14.03 0.435 1479 +1481 4 -13.11 118.19 13.92 0.435 1480 +1482 4 -13.12 116.97 13.79 0.435 1481 +1483 4 -12.96 116.52 13.73 0.435 1482 +1484 4 -12.65 115.62 13.62 0.435 1483 +1485 4 -12.49 115.15 13.56 0.435 1484 +1486 4 -13.5 126.51 16.42 0.975 1474 +1487 4 -14.27 128.76 16.8 0.975 1486 +1488 4 -14.12 131.35 17.03 0.975 1487 +1489 4 -13.67 132.73 17.12 0.975 1488 +1490 4 -12.92 135.01 17.28 0.975 1489 +1491 4 -13.22 136.23 17.43 1.08 1490 +1492 4 -13.7 139.11 17.76 1.08 1491 +1493 4 -13.55 141.09 17.93 1.08 1492 +1494 4 -14.31 142.46 18.13 1.08 1493 +1495 4 -15.08 144.43 18.4 1.08 1494 +1496 4 -15.85 146.39 18.66 1.08 1495 +1497 4 -16.31 147.77 18.84 1.08 1496 +1498 4 -16.16 150.04 19.05 1.08 1497 +1499 4 -14.95 150.66 19.0 1.08 1498 +1500 4 -13.58 151.74 18.97 1.08 1499 +1501 4 -13.12 152.8 19.03 1.08 1500 +1502 4 -12.97 154.78 19.29 1.08 1501 +1503 4 -11.31 158.28 19.47 1.08 1502 +1504 4 -11.32 162.24 19.86 1.08 1503 +1505 4 -10.83 162.78 19.87 1.08 1504 +1506 4 -11.36 162.68 20.73 0.65 1505 +1507 4 -11.81 163.75 20.88 0.65 1506 +1508 4 -12.24 164.17 21.34 0.65 1507 +1509 4 -12.68 164.59 21.64 0.65 1508 +1510 4 -13.29 164.59 21.63 0.65 1509 +1511 4 -13.7 165.61 22.23 0.65 1510 +1512 4 -14.28 166.17 22.79 0.65 1511 +1513 4 -14.49 166.37 23.89 0.65 1512 +1514 4 -14.78 168.17 24.39 0.65 1513 +1515 4 -15.17 169.17 23.53 0.435 1514 +1516 4 -15.63 170.83 23.82 0.435 1515 +1517 4 -15.93 172.06 22.23 0.435 1516 +1518 4 -16.16 172.88 21.58 0.435 1517 +1519 4 -16.22 174.47 21.2 0.435 1518 +1520 4 -16.27 176.03 20.83 0.54 1519 +1521 4 -16.43 178.01 21.05 0.54 1520 +1522 4 -16.93 179.72 20.8 0.54 1521 +1523 4 -17.55 181.55 20.96 0.54 1522 +1524 4 -18.77 183.36 21.25 0.54 1523 +1525 4 -18.47 185.5 21.43 0.54 1524 +1526 4 -17.72 187.48 21.55 0.54 1525 +1527 4 -18.03 189.0 21.73 0.54 1526 +1528 4 -19.3 191.46 21.63 0.54 1527 +1529 4 -18.91 193.2 21.09 0.54 1528 +1530 4 -18.65 195.37 20.9 0.54 1529 +1531 4 -18.39 198.45 20.79 0.54 1530 +1532 4 -19.05 201.54 20.63 0.54 1531 +1533 4 -19.92 203.6 19.93 0.54 1532 +1534 4 -20.71 205.91 19.86 0.54 1533 +1535 4 -21.75 208.16 18.88 0.54 1534 +1536 4 -21.61 209.84 18.95 0.54 1535 +1537 4 -22.45 211.58 18.37 0.54 1536 +1538 4 -24.56 213.98 17.36 0.54 1537 +1539 4 -26.24 215.33 17.65 0.54 1538 +1540 4 -27.77 216.85 17.94 0.54 1539 +1541 4 -29.3 218.97 18.28 0.54 1540 +1542 4 -31.19 220.23 17.83 0.54 1541 +1543 4 -33.94 222.94 18.35 0.54 1542 +1544 4 -35.63 224.61 18.58 0.54 1543 +1545 4 -36.53 226.41 17.41 0.54 1544 +1546 4 -37.71 229.4 16.6 0.54 1545 +1547 4 -38.66 230.29 16.7 0.54 1546 +1548 4 -39.74 231.03 16.87 0.54 1547 +1549 4 -40.73 232.02 16.22 0.54 1548 +1550 4 -40.98 234.4 15.51 0.54 1549 +1551 4 -41.28 237.74 14.26 0.54 1550 +1552 4 -42.13 239.8 13.65 0.54 1551 +1553 4 -41.6 241.71 12.87 0.54 1552 +1554 4 -41.19 243.74 12.65 0.54 1553 +1555 4 -41.33 245.7 11.34 0.54 1554 +1556 4 -42.81 248.37 10.68 0.54 1555 +1557 4 -43.38 251.37 9.9 0.54 1556 +1558 4 -44.94 256.24 10.29 0.54 1557 +1559 4 -45.75 259.78 10.26 0.54 1558 +1560 4 -46.31 261.56 9.27 0.54 1559 +1561 4 -46.66 264.63 9.37 0.54 1560 +1562 4 -46.86 266.34 9.03 0.54 1561 +1563 4 -47.79 269.09 9.24 0.54 1562 +1564 4 -48.3 273.22 9.38 0.54 1563 +1565 4 -48.53 275.89 8.76 0.54 1564 +1566 4 -49.27 277.53 8.83 0.54 1565 +1567 4 -11.65 164.37 20.09 1.08 1505 +1568 4 -11.89 164.43 20.12 1.08 1567 +1569 4 -11.64 167.11 20.37 1.08 1568 +1570 4 -11.65 169.85 20.63 0.865 1569 +1571 4 -11.81 173.65 21.02 0.865 1570 +1572 4 -11.53 177.92 21.41 0.865 1571 +1573 4 -11.39 180.56 21.73 0.975 1572 +1574 4 -10.79 183.0 21.92 0.975 1573 +1575 4 -10.02 185.58 22.09 0.975 1574 +1576 4 -9.42 188.02 22.28 0.975 1575 +1577 4 -11.12 192.11 22.84 0.975 1576 +1578 4 -11.1 193.92 23.23 0.975 1577 +1579 4 -12.33 196.94 23.64 0.975 1578 +1580 4 -13.26 199.97 24.02 0.975 1579 +1581 4 -13.87 202.4 24.39 1.08 1580 +1582 4 -13.72 205.59 24.7 1.08 1581 +1583 4 -13.93 207.02 24.32 1.08 1582 +1584 4 -12.94 206.93 25.95 0.54 1583 +1585 4 -12.18 207.4 25.86 0.54 1584 +1586 4 -11.91 207.12 27.17 0.54 1585 +1587 4 -10.96 207.38 27.57 0.54 1586 +1588 4 -9.48 207.43 28.64 0.65 1587 +1589 4 -8.25 208.04 28.81 0.65 1588 +1590 4 -6.69 208.91 29.13 0.65 1589 +1591 4 -4.35 209.96 29.62 0.65 1590 +1592 4 -1.76 211.63 29.7 0.65 1591 +1593 4 1.57 213.79 29.6 0.65 1592 +1594 4 5.23 215.65 29.52 0.65 1593 +1595 4 8.0 217.15 29.86 0.65 1594 +1596 4 9.85 218.04 30.15 0.65 1595 +1597 4 10.79 218.33 30.33 0.65 1596 +1598 4 12.77 219.72 30.28 0.65 1597 +1599 4 14.44 221.11 30.33 0.65 1598 +1600 4 15.07 222.0 29.01 0.65 1599 +1601 4 15.08 221.98 29.16 0.65 1600 +1602 4 15.85 222.44 29.13 0.65 1601 +1603 4 15.8 222.5 28.61 0.65 1602 +1604 4 16.63 222.9 27.66 0.65 1603 +1605 4 16.85 223.59 26.8 0.65 1604 +1606 4 17.56 224.1 26.26 0.65 1605 +1607 4 17.52 224.53 26.3 0.65 1606 +1608 4 18.05 224.3 27.14 0.54 1607 +1609 4 18.36 224.0 27.0 0.54 1608 +1610 4 18.75 223.6 27.91 0.54 1609 +1611 4 19.28 223.68 28.78 0.54 1610 +1612 4 19.95 223.62 29.31 0.54 1611 +1613 4 20.91 223.89 29.78 0.54 1612 +1614 4 21.74 224.28 30.42 0.54 1613 +1615 4 22.2 224.73 30.51 0.54 1614 +1616 4 22.58 224.35 31.34 0.54 1615 +1617 4 22.5 225.33 32.27 0.54 1616 +1618 4 22.65 226.7 32.39 0.54 1617 +1619 4 22.5 227.76 32.58 0.54 1618 +1620 4 22.13 228.12 33.63 0.54 1619 +1621 4 21.74 228.49 34.46 0.54 1620 +1622 4 22.51 230.77 34.77 0.435 1621 +1623 4 23.87 233.07 34.86 0.435 1622 +1624 4 24.09 234.37 35.65 0.435 1623 +1625 4 23.78 237.4 36.05 0.435 1624 +1626 4 23.93 239.37 36.31 0.435 1625 +1627 4 24.38 241.05 36.42 0.435 1626 +1628 4 24.35 243.21 36.34 0.435 1627 +1629 4 24.32 245.05 36.3 0.435 1628 +1630 4 24.27 248.13 36.29 0.435 1629 +1631 4 24.72 251.63 36.53 0.435 1630 +1632 4 25.42 255.5 36.24 0.435 1631 +1633 4 25.34 256.48 35.58 0.435 1632 +1634 4 24.67 258.68 35.17 0.435 1633 +1635 4 25.39 260.99 35.03 0.435 1634 +1636 4 26.22 264.73 34.48 0.435 1635 +1637 4 27.38 266.0 34.05 0.435 1636 +1638 4 28.74 268.61 34.1 0.435 1637 +1639 4 27.51 271.35 34.41 0.435 1638 +1640 4 26.51 273.54 33.88 0.54 1639 +1641 4 25.68 274.37 33.29 0.54 1640 +1642 4 25.67 275.29 33.3 0.54 1641 +1643 4 24.52 224.25 32.36 0.54 1616 +1644 4 25.58 225.03 32.34 0.54 1643 +1645 4 26.86 225.88 32.98 0.54 1644 +1646 4 27.65 227.83 33.4 0.54 1645 +1647 4 27.64 230.27 33.72 0.54 1646 +1648 4 27.35 231.76 34.04 0.54 1647 +1649 4 28.88 232.96 34.32 0.54 1648 +1650 4 29.8 233.58 34.3 0.54 1649 +1651 4 30.74 234.17 34.64 0.54 1650 +1652 4 31.12 234.08 35.5 0.54 1651 +1653 4 32.67 234.68 35.64 0.54 1652 +1654 4 35.62 235.72 36.07 0.54 1653 +1655 4 36.39 236.46 36.23 0.54 1654 +1656 4 36.88 238.11 36.8 0.54 1655 +1657 4 37.07 240.02 37.57 0.54 1656 +1658 4 38.75 242.32 37.72 0.54 1657 +1659 4 40.57 244.76 37.86 0.54 1658 +1660 4 42.41 245.96 38.05 0.54 1659 +1661 4 46.98 248.44 37.87 0.54 1660 +1662 4 50.48 250.76 37.84 0.54 1661 +1663 4 53.24 252.27 38.04 0.54 1662 +1664 4 55.08 252.88 38.08 0.54 1663 +1665 4 56.44 253.65 38.02 0.54 1664 +1666 4 58.12 254.42 38.02 0.54 1665 +1667 4 59.18 255.19 38.0 0.54 1666 +1668 4 19.34 225.08 25.73 0.435 1607 +1669 4 21.17 226.01 25.66 0.435 1668 +1670 4 22.34 226.98 25.19 0.435 1669 +1671 4 23.82 227.94 24.69 0.54 1670 +1672 4 26.39 231.16 24.77 0.54 1671 +1673 4 28.48 232.75 24.27 0.54 1672 +1674 4 30.77 232.92 24.09 0.54 1673 +1675 4 32.74 232.18 23.83 0.54 1674 +1676 4 36.09 232.51 23.55 0.54 1675 +1677 4 38.92 233.14 23.2 0.435 1676 +1678 4 43.64 234.84 22.93 0.435 1677 +1679 4 47.43 237.48 22.84 0.435 1678 +1680 4 49.28 238.68 21.43 0.54 1679 +1681 4 51.85 241.3 21.44 0.54 1680 +1682 4 53.21 245.11 21.69 0.54 1681 +1683 4 53.26 248.1 20.92 0.54 1682 +1684 4 53.55 250.24 21.03 0.54 1683 +1685 4 55.83 253.76 21.16 0.54 1684 +1686 4 57.48 256.67 21.29 0.54 1685 +1687 4 57.79 257.58 21.36 0.54 1686 +1688 4 57.93 261.07 21.68 0.54 1687 +1689 4 59.6 263.37 21.75 0.54 1688 +1690 4 60.48 264.32 21.46 0.54 1689 +1691 4 62.1 265.14 20.85 0.54 1690 +1692 4 63.89 264.6 20.18 0.54 1691 +1693 4 65.71 264.63 20.01 0.54 1692 +1694 4 -14.08 209.9 24.62 1.08 1583 +1695 4 -13.95 213.4 24.94 1.08 1694 +1696 4 -13.35 216.14 25.16 1.08 1695 +1697 4 -13.66 218.28 25.39 1.08 1696 +1698 4 -15.03 220.84 25.77 1.08 1697 +1699 4 -16.41 222.8 26.09 1.08 1698 +1700 4 -17.17 224.47 26.32 1.08 1699 +1701 4 -17.34 227.36 26.62 1.08 1700 +1702 4 -17.19 231.16 26.98 1.08 1701 +1703 4 -16.75 234.36 27.25 1.08 1702 +1704 4 -17.18 237.23 26.29 1.08 1703 +1705 4 -17.48 239.02 26.71 1.08 1704 +1706 4 -18.11 240.86 26.64 1.08 1705 +1707 4 -18.39 242.66 25.57 1.08 1706 +1708 4 -19.02 243.14 26.35 0.65 1707 +1709 4 -20.33 243.83 25.56 0.65 1708 +1710 4 -21.29 244.15 26.89 0.65 1709 +1711 4 -21.74 243.98 28.65 0.65 1710 +1712 4 -23.19 244.51 29.59 0.65 1711 +1713 4 -26.02 245.48 30.62 0.65 1712 +1714 4 -27.69 246.81 31.06 0.65 1713 +1715 4 -30.05 248.52 32.35 0.65 1714 +1716 4 -31.28 249.74 32.58 0.65 1715 +1717 4 -32.6 251.04 33.28 0.65 1716 +1718 4 -34.58 253.61 33.8 0.65 1717 +1719 4 -36.41 254.2 34.03 0.65 1718 +1720 4 -39.15 255.38 34.46 0.65 1719 +1721 4 -41.74 257.03 34.86 0.65 1720 +1722 4 -44.48 258.52 35.26 0.65 1721 +1723 4 -46.01 260.03 35.63 0.54 1722 +1724 4 -47.21 260.01 35.74 0.54 1723 +1725 4 -49.35 261.21 36.12 0.54 1724 +1726 4 -51.02 263.16 36.47 0.54 1725 +1727 4 -53.63 266.04 36.99 0.54 1726 +1728 4 -56.67 268.74 37.53 0.54 1727 +1729 4 -58.05 271.32 37.92 0.54 1728 +1730 4 -59.43 274.2 38.32 0.54 1729 +1731 4 -60.5 276.46 38.65 0.54 1730 +1732 4 -61.58 279.35 39.02 0.54 1731 +1733 4 -63.56 280.08 39.28 0.54 1732 +1734 4 -65.24 281.44 39.56 0.54 1733 +1735 4 -67.53 283.39 39.97 0.54 1734 +1736 4 -68.7 284.54 40.79 0.54 1735 +1737 4 -70.06 287.11 41.25 0.54 1736 +1738 4 -70.49 288.73 41.9 0.54 1737 +1739 4 -70.46 290.23 42.35 0.54 1738 +1740 4 -69.8 290.77 43.02 0.54 1739 +1741 4 -69.26 291.15 43.84 0.54 1740 +1742 4 -70.31 292.18 44.26 0.54 1741 +1743 4 -71.52 293.38 44.64 0.54 1742 +1744 4 -71.68 295.35 44.85 0.54 1743 +1745 4 -71.81 296.69 45.29 0.54 1744 +1746 4 -73.02 297.58 45.64 0.54 1745 +1747 4 -74.21 297.85 46.0 0.54 1746 +1748 4 -75.86 299.17 46.58 0.54 1747 +1749 4 -76.45 299.76 46.92 0.54 1748 +1750 4 -77.45 300.75 47.79 0.54 1749 +1751 4 -77.62 301.18 49.51 0.54 1750 +1752 4 -78.53 301.79 49.65 0.54 1751 +1753 4 -78.86 302.11 51.08 0.54 1752 +1754 4 -79.29 302.22 51.51 0.54 1753 +1755 4 -17.79 245.71 25.81 1.08 1707 +1756 4 -17.95 247.99 26.05 1.08 1755 +1757 4 -17.21 249.38 25.88 1.08 1756 +1758 4 -16.46 251.67 26.03 1.08 1757 +1759 4 -16.93 253.35 26.17 1.08 1758 +1760 4 -18.15 255.17 26.46 1.08 1759 +1761 4 -19.82 258.34 25.41 1.08 1760 +1762 4 -20.59 260.91 25.73 1.08 1761 +1763 4 -20.91 263.96 26.06 1.08 1762 +1764 4 -20.63 268.83 26.42 1.08 1763 +1765 4 -20.07 271.27 26.55 1.19 1764 +1766 4 -19.33 274.16 26.75 1.19 1765 +1767 4 -19.33 275.38 26.88 1.19 1766 +1768 4 -19.12 276.58 28.11 0.865 1767 +1769 4 -19.42 278.11 28.28 0.865 1768 +1770 4 -19.72 279.01 28.47 0.865 1769 +1771 4 -20.34 279.62 28.51 0.865 1770 +1772 4 -20.67 280.85 30.11 0.865 1771 +1773 4 -21.56 281.73 30.43 0.865 1772 +1774 4 -21.99 283.36 31.15 0.865 1773 +1775 4 -23.18 284.53 31.67 0.865 1774 +1776 4 -23.79 286.34 31.99 0.865 1775 +1777 4 -25.13 287.66 32.62 0.865 1776 +1778 4 -26.51 289.01 32.88 0.865 1777 +1779 4 -27.87 291.27 33.3 0.865 1778 +1780 4 -28.64 293.86 33.63 0.865 1779 +1781 4 -28.65 296.29 33.86 0.865 1780 +1782 4 -28.8 298.55 34.24 0.865 1781 +1783 4 -28.79 300.07 34.47 0.865 1782 +1784 4 -30.47 303.85 35.07 0.865 1783 +1785 4 -31.85 307.03 35.51 0.865 1784 +1786 4 -32.63 310.21 35.89 0.865 1785 +1787 4 -34.3 312.78 36.3 0.865 1786 +1788 4 -36.6 315.05 36.73 0.865 1787 +1789 4 -37.54 315.89 37.05 0.865 1788 +1790 4 -38.92 318.77 37.46 0.865 1789 +1791 4 -40.3 321.64 37.86 0.865 1790 +1792 4 -42.89 323.29 38.26 0.865 1791 +1793 4 -44.42 326.01 38.68 0.865 1792 +1794 4 -46.11 329.51 39.17 0.865 1793 +1795 4 -47.21 332.39 40.99 0.865 1794 +1796 4 -47.72 334.12 40.59 0.865 1795 +1797 4 -48.34 335.36 38.88 0.865 1796 +1798 4 -49.4 337.62 37.77 0.865 1797 +1799 4 -50.47 338.68 37.9 0.865 1798 +1800 4 -52.63 341.41 38.28 0.865 1799 +1801 4 -54.76 344.73 38.8 0.865 1800 +1802 4 -55.43 349.03 38.75 0.865 1801 +1803 4 -55.94 352.55 38.84 0.865 1802 +1804 4 -55.08 356.27 38.6 0.865 1803 +1805 4 -54.71 359.25 37.95 0.865 1804 +1806 4 -55.34 362.0 38.2 0.865 1805 +1807 4 -54.82 365.14 37.47 0.865 1806 +1808 4 -53.38 368.86 36.95 0.865 1807 +1809 4 -52.37 372.41 36.67 0.865 1808 +1810 4 -51.94 375.04 35.07 0.865 1809 +1811 4 -50.47 378.74 34.92 0.865 1810 +1812 4 -49.98 381.91 33.91 0.865 1811 +1813 4 -50.57 382.78 32.75 0.865 1812 +1814 4 -51.17 383.99 32.93 0.865 1813 +1815 4 -51.52 384.33 32.99 0.435 1814 +1816 4 -51.82 384.93 33.08 0.865 1815 +1817 4 -51.5 387.06 31.89 0.865 1816 +1818 4 -51.65 388.73 32.07 0.865 1817 +1819 4 -52.87 389.93 32.3 0.865 1818 +1820 4 -54.06 390.8 31.21 0.865 1819 +1821 4 -55.81 392.23 30.67 0.865 1820 +1822 4 -55.97 393.0 30.69 0.865 1821 +1823 4 -56.94 395.16 30.47 0.865 1822 +1824 4 -57.4 396.54 30.57 0.865 1823 +1825 4 -57.73 398.37 30.7 1.3 1824 +1826 4 -57.88 400.03 30.89 0.975 1825 +1827 4 -58.48 403.06 29.79 0.975 1826 +1828 4 -58.77 404.3 29.93 0.975 1827 +1829 4 -59.79 404.09 30.46 0.54 1828 +1830 4 -61.01 403.47 30.52 0.54 1829 +1831 4 -62.07 403.92 30.66 0.54 1830 +1832 4 -63.75 404.36 30.86 0.54 1831 +1833 4 -65.44 405.12 31.02 0.54 1832 +1834 4 -66.97 405.74 29.4 0.54 1833 +1835 4 -68.34 407.08 29.66 0.54 1834 +1836 4 -69.56 408.3 29.89 0.54 1835 +1837 4 -70.93 408.73 30.06 0.54 1836 +1838 4 -72.2 409.67 29.88 0.54 1837 +1839 4 -72.78 409.97 28.45 0.54 1838 +1840 4 -73.63 409.59 27.59 0.54 1839 +1841 4 -74.09 409.46 25.81 0.54 1840 +1842 4 -74.35 409.11 24.59 0.54 1841 +1843 4 -74.54 408.99 24.21 0.54 1842 +1844 4 -74.69 408.54 24.18 0.54 1843 +1845 4 -58.94 404.74 29.92 0.975 1828 +1846 4 -58.5 407.04 30.03 0.975 1845 +1847 4 -58.83 408.88 28.42 0.975 1846 +1848 4 -59.16 410.74 26.67 0.975 1847 +1849 4 -60.12 411.68 26.4 0.975 1848 +1850 4 -62.36 413.31 25.56 0.975 1849 +1851 4 -63.03 415.56 24.85 0.975 1850 +1852 4 -63.49 417.54 25.08 0.865 1851 +1853 4 -64.8 419.45 24.42 0.865 1852 +1854 4 -64.81 420.98 22.83 0.865 1853 +1855 4 -64.64 422.34 21.5 0.865 1854 +1856 4 -64.51 423.12 21.34 0.865 1855 +1857 4 -64.07 423.6 21.2 0.865 1856 +1858 4 -64.23 425.88 19.85 0.865 1857 +1859 4 -64.97 427.53 18.64 0.865 1858 +1860 4 -64.91 430.2 17.92 0.865 1859 +1861 4 -65.28 432.71 15.85 0.865 1860 +1862 4 -65.7 433.72 16.59 0.865 1861 +1863 4 -66.37 435.91 16.1 0.865 1862 +1864 4 -66.93 437.69 15.27 0.865 1863 +1865 4 -67.17 439.14 14.53 0.865 1864 +1866 4 -68.16 439.81 13.86 0.865 1865 +1867 4 -69.28 441.53 13.6 0.865 1866 +1868 4 -70.9 442.84 12.82 0.865 1867 +1869 4 -71.75 444.29 12.06 0.865 1868 +1870 4 -72.49 445.63 10.97 0.865 1869 +1871 4 -73.83 446.97 9.79 0.865 1870 +1872 4 -74.39 448.11 9.04 0.865 1871 +1873 4 -75.42 449.76 7.94 0.865 1872 +1874 4 -75.89 450.83 8.01 0.865 1873 +1875 4 -77.1 451.73 8.21 0.865 1874 +1876 4 -78.48 453.7 8.46 0.865 1875 +1877 4 -79.04 456.07 7.75 0.865 1876 +1878 4 -77.54 459.43 7.94 0.865 1877 +1879 4 -75.96 462.44 7.03 0.865 1878 +1880 4 -75.44 465.57 6.45 0.865 1879 +1881 4 -75.68 468.54 5.86 0.865 1880 +1882 4 -75.19 470.47 4.87 0.865 1881 +1883 4 -74.8 472.53 4.29 0.865 1882 +1884 4 -74.42 474.28 3.66 0.865 1883 +1885 4 -74.74 475.39 3.8 0.865 1884 +1886 4 -75.42 475.77 3.06 0.435 1885 +1887 4 -75.88 476.23 3.15 0.435 1886 +1888 4 -76.82 476.55 2.96 0.435 1887 +1889 4 -77.28 476.1 2.81 0.435 1888 +1890 4 -77.61 476.43 2.65 0.54 1889 +1891 4 -79.59 477.17 2.91 0.54 1890 +1892 4 -79.9 478.69 3.08 0.54 1891 +1893 4 -80.67 479.16 1.38 0.54 1892 +1894 4 -81.7 479.26 0.28 0.54 1893 +1895 4 -82.29 479.55 -1.07 0.54 1894 +1896 4 -82.72 479.38 -2.55 0.54 1895 +1897 4 -83.65 479.7 -2.52 0.54 1896 +1898 4 -85.11 480.23 -3.31 0.54 1897 +1899 4 -85.96 480.46 -4.12 0.54 1898 +1900 4 -86.59 481.1 -4.37 0.54 1899 +1901 4 -87.51 481.41 -5.92 0.54 1900 +1902 4 -87.66 481.58 -7.71 0.54 1901 +1903 4 -88.41 482.0 -8.96 0.54 1902 +1904 4 -89.13 482.72 -10.02 0.54 1903 +1905 4 -89.85 483.45 -11.17 0.54 1904 +1906 4 -73.88 475.57 3.05 0.865 1885 +1907 4 -73.79 477.62 2.57 0.865 1906 +1908 4 -73.62 479.27 1.28 0.865 1907 +1909 4 -74.82 481.66 0.33 0.865 1908 +1910 4 -74.93 483.61 -0.73 0.865 1909 +1911 4 -74.02 485.14 -0.67 0.865 1910 +1912 4 -72.32 487.12 -1.93 0.865 1911 +1913 4 -71.11 490.18 -3.4 0.865 1912 +1914 4 -71.5 492.69 -4.03 0.865 1913 +1915 4 -71.93 494.64 -5.08 0.865 1914 +1916 4 -71.81 496.33 -5.15 0.865 1915 +1917 4 -72.31 498.87 -6.06 0.865 1916 +1918 4 -71.64 499.73 -7.03 0.865 1917 +1919 4 -70.64 503.6 -7.28 0.865 1918 +1920 4 -69.15 505.47 -7.6 0.865 1919 +1921 4 -69.42 508.16 -8.46 0.865 1920 +1922 4 -70.29 509.94 -9.33 0.865 1921 +1923 4 -70.46 511.32 -9.41 0.865 1922 +1924 4 -70.53 513.51 -9.87 0.865 1923 +1925 4 -70.27 516.0 -10.1 0.865 1924 +1926 4 -71.33 518.26 -11.23 0.865 1925 +1927 4 -71.95 520.08 -11.07 0.865 1926 +1928 4 -72.93 522.29 -11.58 0.865 1927 +1929 4 -73.88 523.83 -13.25 0.865 1928 +1930 4 -73.89 525.66 -13.14 0.865 1929 +1931 4 -73.9 529.32 -14.44 0.865 1930 +1932 4 -73.97 529.39 -15.19 0.865 1931 +1933 4 -73.61 531.16 -16.03 0.865 1932 +1934 4 -73.7 533.69 -16.76 0.865 1933 +1935 4 -73.7 535.51 -18.1 0.865 1934 +1936 4 -73.96 537.29 -19.03 0.865 1935 +1937 4 -74.53 539.99 -19.92 0.865 1936 +1938 4 -74.15 542.65 -20.53 0.865 1937 +1939 4 -72.95 545.1 -20.4 0.865 1938 +1940 4 -72.42 548.52 -20.86 0.865 1939 +1941 4 -71.81 551.27 -22.32 0.865 1940 +1942 4 -70.81 554.24 -22.81 0.865 1941 +1943 4 -70.18 556.94 -23.82 0.865 1942 +1944 4 -68.51 558.96 -25.51 0.865 1943 +1945 4 -67.91 560.48 -25.41 0.865 1944 +1946 4 -66.61 561.93 -26.07 0.865 1945 +1947 4 -65.91 563.36 -26.6 0.865 1946 +1948 4 -65.22 566.04 -27.24 0.865 1947 +1949 4 -65.31 567.95 -27.88 0.865 1948 +1950 4 -65.54 570.59 -28.28 0.865 1949 +1951 4 -66.56 574.04 -28.98 0.865 1950 +1952 4 -67.53 578.34 -29.0 0.865 1951 +1953 4 -68.36 581.65 -28.75 0.865 1952 +1954 4 -68.66 585.6 -28.34 0.865 1953 +1955 4 -68.84 588.5 -28.19 0.865 1954 +1956 4 -69.31 591.09 -27.98 0.865 1955 +1957 4 -70.14 594.33 -28.18 0.865 1956 +1958 4 -70.38 596.7 -28.84 0.865 1957 +1959 4 -70.16 598.92 -29.55 0.865 1958 +1960 4 -69.48 600.67 -30.2 0.865 1959 +1961 4 -68.03 601.97 -30.88 0.865 1960 +1962 4 -67.78 602.91 -30.89 0.54 1961 +1963 4 -66.57 605.06 -30.8 0.54 1962 +1964 4 -66.17 605.58 -31.46 0.54 1963 +1965 4 -65.24 606.49 -32.89 0.54 1964 +1966 4 -63.43 608.04 -33.05 0.54 1965 +1967 4 -62.07 608.82 -33.11 0.54 1966 +1968 4 -59.79 609.9 -33.21 0.54 1967 +1969 4 -58.44 610.39 -33.51 0.54 1968 +1970 4 -56.47 611.48 -33.66 0.54 1969 +1971 4 -54.88 612.34 -34.57 0.54 1970 +1972 4 -54.03 612.73 -35.37 0.54 1971 +1973 4 -53.88 612.57 -35.39 0.54 1972 +1974 4 -54.3 613.0 -36.6 0.435 1973 +1975 4 -54.77 613.47 -36.66 0.435 1974 +1976 4 -55.42 613.78 -36.87 0.435 1975 +1977 4 -54.82 614.42 -37.02 0.435 1976 +1978 4 -55.23 614.83 -38.06 0.435 1977 +1979 4 -54.75 615.58 -39.47 0.435 1978 +1980 4 -54.58 616.63 -40.82 0.435 1979 +1981 4 -54.26 617.24 -42.31 0.435 1980 +1982 4 -54.19 617.48 -43.27 0.435 1981 +1983 4 -54.01 617.91 -44.46 0.435 1982 +1984 4 -53.71 618.53 -46.17 0.435 1983 +1985 4 -53.72 619.75 -46.12 0.435 1984 +1986 4 -53.51 621.68 -47.01 0.435 1985 +1987 4 -53.61 623.29 -47.75 0.435 1986 +1988 4 -53.55 625.07 -48.56 0.435 1987 +1989 4 -54.08 626.8 -49.1 0.435 1988 +1990 4 -54.38 628.63 -50.49 0.435 1989 +1991 4 -54.53 630.0 -51.93 0.435 1990 +1992 4 -54.96 632.25 -52.94 0.435 1991 +1993 4 -56.33 633.9 -52.66 0.435 1992 +1994 4 -56.39 634.89 -53.24 0.435 1993 +1995 4 -56.05 635.78 -54.47 0.435 1994 +1996 4 -55.39 636.34 -55.54 0.435 1995 +1997 4 -52.58 613.43 -36.26 0.54 1973 +1998 4 -51.09 614.37 -36.53 0.54 1997 +1999 4 -50.09 615.5 -37.11 0.54 1998 +2000 4 -47.89 617.89 -37.98 0.54 1999 +2001 4 -46.31 618.77 -39.1 0.54 2000 +2002 4 -43.9 620.02 -39.29 0.54 2001 +2003 4 -41.36 621.45 -39.9 0.54 2002 +2004 4 -39.1 623.18 -40.18 0.54 2003 +2005 4 -36.98 625.03 -40.27 0.54 2004 +2006 4 -36.05 626.84 -41.62 0.54 2005 +2007 4 -32.96 629.26 -42.65 0.54 2006 +2008 4 -31.82 631.17 -43.39 0.54 2007 +2009 4 -30.72 634.63 -44.3 0.54 2008 +2010 4 -29.79 636.45 -45.57 0.54 2009 +2011 4 -28.27 637.99 -45.63 0.54 2010 +2012 4 -26.39 639.78 -46.68 0.54 2011 +2013 4 -24.2 640.96 -47.76 0.54 2012 +2014 4 -22.17 641.99 -48.83 0.54 2013 +2015 4 -21.01 642.38 -49.66 0.54 2014 +2016 4 -20.54 642.82 -51.09 0.54 2015 +2017 4 -19.07 644.42 -51.67 0.54 2016 +2018 4 -18.46 645.94 -53.09 0.54 2017 +2019 4 -16.92 649.28 -54.34 0.54 2018 +2020 4 -15.61 651.63 -54.77 0.54 2019 +2021 4 -14.71 653.18 -56.51 0.54 2020 +2022 4 -13.13 656.16 -57.13 0.54 2021 +2023 4 -11.23 657.33 -58.09 0.54 2022 +2024 4 -9.11 658.88 -58.21 0.54 2023 +2025 4 -7.68 660.51 -59.17 0.54 2024 +2026 4 -6.55 662.44 -59.99 0.54 2025 +2027 4 -5.71 664.02 -60.6 0.54 2026 +2028 4 -5.26 665.1 -60.61 0.54 2027 +2029 4 -3.83 667.32 -61.35 0.54 2028 +2030 4 -3.0 668.95 -62.25 0.54 2029 +2031 4 -1.86 672.08 -62.89 0.54 2030 +2032 4 -1.23 674.79 -63.89 0.54 2031 +2033 4 1.18 677.26 -64.02 0.54 2032 +2034 4 4.06 679.87 -64.02 0.54 2033 +2035 4 5.35 680.42 -65.0 0.54 2034 +2036 4 7.82 681.93 -66.22 0.54 2035 +2037 4 10.21 684.13 -66.68 0.54 2036 +2038 4 10.36 684.6 -68.46 0.54 2037 +2039 4 -68.53 604.57 -30.88 0.865 1961 +2040 4 -69.08 609.08 -31.45 0.865 2039 +2041 4 -69.0 614.17 -31.57 0.865 2040 +2042 4 -68.42 616.32 -31.57 0.865 2041 +2043 4 -67.21 619.67 -31.35 0.865 2042 +2044 4 -66.84 625.07 -31.61 0.865 2043 +2045 4 -67.06 630.75 -31.56 0.865 2044 +2046 4 -66.61 633.94 -31.3 0.865 2045 +2047 4 -66.46 637.44 -30.97 0.865 2046 +2048 4 -65.59 640.58 -30.89 0.54 2047 +2049 4 -65.91 644.53 -30.47 0.54 2048 +2050 4 -64.24 649.25 -30.18 0.54 2049 +2051 4 -62.58 652.77 -29.98 0.54 2050 +2052 4 -61.12 655.25 -28.66 0.54 2051 +2053 4 -59.15 659.67 -28.34 0.54 2052 +2054 4 -56.11 663.66 -28.23 0.54 2053 +2055 4 -53.24 668.4 -28.03 0.54 2054 +2056 4 -51.27 673.13 -27.75 0.54 2055 +2057 4 -50.07 679.22 -27.27 0.54 2056 +2058 4 -49.03 684.55 -26.77 0.54 2057 +2059 4 -48.58 689.26 -26.35 0.54 2058 +2060 4 -47.95 693.21 -25.72 0.54 2059 +2061 4 -47.12 696.32 -26.25 0.54 2060 +2062 4 -45.22 698.92 -28.14 0.54 2061 +2063 4 -43.1 701.08 -28.13 0.54 2062 +2064 4 -42.34 703.36 -27.97 0.54 2063 +2065 4 -40.37 706.27 -27.87 0.54 2064 +2066 4 -38.4 709.47 -27.74 0.54 2065 +2067 4 -36.9 713.44 -27.49 0.54 2066 +2068 4 -35.53 717.56 -27.21 0.54 2067 +2069 4 -34.18 720.16 -27.09 0.54 2068 +2070 4 -30.1 723.41 -25.71 0.54 2069 +2071 4 -26.09 725.2 -25.22 0.54 2070 +2072 4 -22.39 726.69 -24.74 0.54 2071 +2073 4 -19.04 728.84 -24.76 0.54 2072 +2074 4 -17.81 729.46 -24.74 0.54 2073 +2075 4 -15.69 732.52 -24.64 0.54 2074 +2076 4 -14.33 735.11 -24.51 0.54 2075 +2077 4 -13.19 736.11 -23.68 0.54 2076 +2078 4 -11.21 738.41 -23.57 0.54 2077 +2079 4 -9.54 739.49 -23.62 0.54 2078 +2080 4 -7.73 740.42 -23.69 0.54 2079 +2081 4 -17.36 277.69 26.92 1.19 1767 +2082 4 -15.39 280.28 26.99 1.19 2081 +2083 4 -13.39 282.85 25.84 1.19 2082 +2084 4 -11.82 284.96 24.78 1.19 2083 +2085 4 -10.56 287.07 23.65 1.19 2084 +2086 4 -8.93 289.09 23.25 1.19 2085 +2087 4 -8.11 290.11 22.28 1.19 2086 +2088 4 -6.9 291.04 22.26 1.19 2087 +2089 4 -5.65 291.83 23.13 0.755 2088 +2090 4 -4.02 293.26 22.67 0.755 2089 +2091 4 -3.27 294.64 22.73 0.755 2090 +2092 4 -2.78 296.0 21.38 1.08 2091 +2093 4 -1.73 298.6 21.55 1.08 2092 +2094 4 -1.02 300.03 21.09 1.08 2093 +2095 4 -0.04 301.18 20.27 1.08 2094 +2096 4 0.25 302.69 20.4 1.08 2095 +2097 4 0.7 304.37 20.52 1.08 2096 +2098 4 1.14 306.06 20.49 1.08 2097 +2099 4 1.18 307.56 19.43 1.08 2098 +2100 4 1.39 309.18 18.43 1.08 2099 +2101 4 1.89 310.03 17.56 0.755 2100 +2102 4 2.2 310.34 17.63 0.755 2101 +2103 4 3.12 311.24 17.78 0.755 2102 +2104 4 4.06 312.43 18.12 1.08 2103 +2105 4 4.95 313.69 17.94 1.08 2104 +2106 4 5.14 314.72 16.74 1.08 2105 +2107 4 4.92 316.75 16.35 1.08 2106 +2108 4 4.92 318.58 16.53 1.08 2107 +2109 4 4.84 319.58 15.73 1.08 2108 +2110 4 5.23 322.22 15.42 1.08 2109 +2111 4 5.35 324.83 15.36 1.08 2110 +2112 4 5.76 326.25 15.0 1.08 2111 +2113 4 6.0 327.82 14.61 1.08 2112 +2114 4 6.98 329.6 13.71 1.08 2113 +2115 4 7.27 332.96 13.94 1.08 2114 +2116 4 7.1 335.85 14.23 1.08 2115 +2117 4 7.55 338.44 14.45 1.08 2116 +2118 4 7.7 341.33 14.71 0.975 2117 +2119 4 7.32 344.13 14.27 0.975 2118 +2120 4 7.16 346.12 14.47 0.975 2119 +2121 4 5.72 348.74 14.18 0.975 2120 +2122 4 4.94 351.03 14.4 0.865 2121 +2123 4 4.62 354.67 14.78 0.865 2122 +2124 4 5.08 357.26 15.0 0.865 2123 +2125 4 6.28 359.11 14.99 0.865 2124 +2126 4 8.1 360.65 14.98 0.865 2125 +2127 4 9.61 362.79 14.96 0.865 2126 +2128 4 10.51 365.85 15.18 0.865 2127 +2129 4 10.8 370.41 15.6 0.865 2128 +2130 4 11.28 374.18 14.71 0.865 2129 +2131 4 12.49 378.15 14.98 0.865 2130 +2132 4 13.09 380.89 15.2 0.865 2131 +2133 4 14.89 386.39 15.5 0.865 2132 +2134 4 16.25 389.6 15.69 0.865 2133 +2135 4 16.25 392.64 15.98 0.865 2134 +2136 4 17.15 395.08 16.21 0.865 2135 +2137 4 18.52 397.07 16.28 0.865 2136 +2138 4 19.73 399.51 16.41 0.865 2137 +2139 4 20.78 402.41 16.59 0.865 2138 +2140 4 20.61 407.73 17.12 0.865 2139 +2141 4 20.7 411.29 16.79 0.865 2140 +2142 4 20.14 414.87 16.27 0.755 2141 +2143 4 19.98 419.9 16.78 0.755 2142 +2144 4 19.66 422.93 17.11 0.755 2143 +2145 4 18.58 425.81 17.49 0.755 2144 +2146 4 18.43 427.18 17.64 0.755 2145 +2147 4 18.88 429.77 17.85 0.755 2146 +2148 4 17.97 431.28 18.08 0.755 2147 +2149 4 16.43 432.48 18.34 0.755 2148 +2150 4 15.96 433.55 18.34 0.755 2149 +2151 4 16.2 436.36 17.98 0.755 2150 +2152 4 17.27 438.02 18.2 0.755 2151 +2153 4 18.34 440.93 18.45 0.755 2152 +2154 4 18.82 442.56 18.88 0.755 2153 +2155 4 18.97 443.93 19.07 0.755 2154 +2156 4 19.27 447.27 19.44 0.755 2155 +2157 4 19.56 450.62 19.74 0.755 2156 +2158 4 20.19 453.33 20.25 0.755 2157 +2159 4 20.94 455.3 20.45 0.755 2158 +2160 4 21.4 457.6 20.64 0.755 2159 +2161 4 22.46 458.97 20.67 0.755 2160 +2162 4 25.04 462.1 21.2 0.755 2161 +2163 4 26.55 466.07 21.44 0.755 2162 +2164 4 27.91 470.5 21.74 0.755 2163 +2165 4 27.89 473.84 22.08 0.755 2164 +2166 4 27.73 475.52 22.25 0.755 2165 +2167 4 28.04 477.66 23.95 0.54 2166 +2168 4 28.02 479.2 24.02 0.54 2167 +2169 4 29.08 480.27 24.02 0.54 2168 +2170 4 29.8 481.69 23.72 0.54 2169 +2171 4 29.64 483.05 23.79 0.54 2170 +2172 4 29.79 484.42 23.99 0.54 2171 +2173 4 29.53 485.89 24.61 0.54 2172 +2174 4 28.98 486.44 25.39 0.54 2173 +2175 4 29.01 488.22 26.02 0.54 2174 +2176 4 28.58 489.55 26.49 0.54 2175 +2177 4 28.94 490.01 26.5 0.54 2176 +2178 4 28.57 490.08 27.45 0.54 2177 +2179 4 27.96 490.68 27.56 0.54 2178 +2180 4 28.41 492.04 27.65 0.54 2179 +2181 4 28.56 494.01 27.91 0.54 2180 +2182 4 29.32 496.3 28.06 0.54 2181 +2183 4 29.76 496.79 27.91 0.54 2182 +2184 4 30.51 498.77 28.04 0.54 2183 +2185 4 30.47 500.33 27.82 0.54 2184 +2186 4 30.32 501.09 27.91 0.54 2185 +2187 4 30.97 501.65 28.36 0.54 2186 +2188 4 31.5 502.03 29.25 0.54 2187 +2189 4 32.59 503.08 29.56 0.54 2188 +2190 4 33.5 503.69 29.54 0.54 2189 +2191 4 34.15 504.26 29.9 0.54 2190 +2192 4 33.99 506.54 30.22 0.54 2191 +2193 4 33.84 508.21 30.4 0.54 2192 +2194 4 33.53 509.12 30.59 0.54 2193 +2195 4 35.06 509.43 30.48 0.435 2194 +2196 4 35.97 511.57 30.68 0.435 2195 +2197 4 37.18 513.69 30.85 0.435 2196 +2198 4 37.04 514.75 31.04 0.435 2197 +2199 4 37.19 516.41 31.26 0.435 2198 +2200 4 38.28 518.06 31.71 0.435 2199 +2201 4 39.65 519.14 31.68 0.435 2200 +2202 4 41.49 521.57 31.98 0.435 2201 +2203 4 41.85 521.81 32.65 0.435 2202 +2204 4 43.07 522.74 32.63 0.435 2203 +2205 4 44.13 523.8 32.7 0.435 2204 +2206 4 45.06 524.72 32.86 0.435 2205 +2207 4 45.85 526.67 33.28 0.435 2206 +2208 4 47.11 528.13 33.91 0.54 2207 +2209 4 48.02 529.06 33.99 0.54 2208 +2210 4 48.39 529.9 34.73 0.54 2209 +2211 4 48.13 531.37 35.42 0.54 2210 +2212 4 48.64 533.6 36.19 0.54 2211 +2213 4 49.72 534.64 36.58 0.54 2212 +2214 4 50.83 536.28 37.09 0.54 2213 +2215 4 51.47 537.45 37.59 0.54 2214 +2216 4 51.81 539.24 38.2 0.54 2215 +2217 4 51.83 540.13 38.5 0.54 2216 +2218 4 51.84 541.34 38.7 0.54 2217 +2219 4 52.15 542.24 38.83 0.54 2218 +2220 4 52.33 543.59 39.32 0.54 2219 +2221 4 53.6 545.36 39.99 0.54 2220 +2222 4 54.28 545.89 40.81 0.54 2221 +2223 4 55.34 546.35 40.83 0.54 2222 +2224 4 56.13 546.78 41.09 0.54 2223 +2225 4 56.77 547.36 41.39 0.54 2224 +2226 4 57.57 548.09 41.93 0.54 2225 +2227 4 57.56 550.21 42.21 0.54 2226 +2228 4 57.72 551.28 42.29 0.54 2227 +2229 4 57.57 552.32 42.56 0.54 2228 +2230 4 58.03 553.09 42.6 0.54 2229 +2231 4 58.34 553.99 42.74 0.54 2230 +2232 4 59.13 554.73 43.11 0.54 2231 +2233 4 59.45 555.63 43.32 0.54 2232 +2234 4 59.32 556.35 43.7 0.54 2233 +2235 4 59.47 558.03 43.94 0.54 2234 +2236 4 58.88 558.3 44.17 0.54 2235 +2237 4 29.04 490.61 26.63 0.54 2177 +2238 4 29.72 492.36 27.64 0.54 2237 +2239 4 30.65 494.47 27.99 0.54 2238 +2240 4 32.98 497.63 28.69 0.54 2239 +2241 4 34.1 499.26 29.35 0.54 2240 +2242 4 34.53 499.43 29.09 0.54 2241 +2243 4 35.37 501.32 28.6 0.54 2242 +2244 4 36.74 502.7 28.61 0.54 2243 +2245 4 37.77 504.43 28.3 0.54 2244 +2246 4 38.65 506.3 28.03 0.54 2245 +2247 4 39.81 507.26 27.49 0.54 2246 +2248 4 41.92 509.73 27.45 0.54 2247 +2249 4 42.23 511.56 27.6 0.54 2248 +2250 4 43.71 512.51 27.26 0.54 2249 +2251 4 44.78 513.28 27.24 0.54 2250 +2252 4 46.29 515.73 27.34 0.54 2251 +2253 4 47.49 518.78 27.44 0.54 2252 +2254 4 48.37 519.74 27.16 0.54 2253 +2255 4 49.59 521.58 27.15 0.54 2254 +2256 4 51.09 522.81 27.13 0.54 2255 +2257 4 51.84 523.29 27.02 0.54 2256 +2258 4 52.76 524.21 26.97 0.54 2257 +2259 4 53.56 524.62 27.46 0.54 2258 +2260 4 54.52 525.19 28.03 0.54 2259 +2261 4 56.24 527.44 28.55 0.54 2260 +2262 4 57.33 528.46 29.0 0.54 2261 +2263 4 58.44 530.41 29.61 0.54 2262 +2264 4 59.99 533.42 30.14 0.54 2263 +2265 4 60.91 535.55 30.41 0.54 2264 +2266 4 61.08 536.92 29.03 0.54 2265 +2267 4 59.7 537.66 29.22 0.54 2266 +2268 4 59.23 538.12 29.16 0.54 2267 +2269 4 59.76 538.5 29.98 0.54 2268 +2270 4 59.88 539.59 29.85 0.54 2269 +2271 4 59.98 539.81 29.25 0.54 2270 +2272 4 59.62 540.17 28.64 0.54 2271 +2273 4 59.29 540.5 28.4 0.54 2272 +2274 4 59.24 541.17 27.94 0.54 2273 +2275 4 59.32 541.68 27.3 0.54 2274 +2276 4 58.81 542.19 26.79 0.54 2275 +2277 4 58.14 543.48 26.23 0.54 2276 +2278 4 58.07 544.76 25.76 0.54 2277 +2279 4 58.32 546.03 25.25 0.54 2278 +2280 4 58.55 547.32 24.67 0.54 2279 +2281 4 58.82 547.67 24.22 0.54 2280 +2282 4 59.4 548.3 24.01 0.54 2281 +2283 4 60.73 549.42 23.54 0.54 2282 +2284 4 61.76 549.92 23.19 0.54 2283 +2285 4 63.43 551.0 23.07 0.54 2284 +2286 4 64.13 552.74 22.58 0.54 2285 +2287 4 64.24 553.84 22.29 0.54 2286 +2288 4 65.11 554.8 21.85 0.54 2287 +2289 4 65.65 555.19 21.08 0.54 2288 +2290 4 66.55 555.81 20.98 0.54 2289 +2291 4 67.24 556.66 20.24 0.54 2290 +2292 4 67.35 556.86 19.72 0.54 2291 +2293 4 68.34 558.0 18.99 0.54 2292 +2294 4 69.21 559.57 18.62 0.54 2293 +2295 4 70.23 560.4 18.14 0.54 2294 +2296 4 70.45 560.79 17.17 0.54 2295 +2297 4 70.86 561.29 16.81 0.54 2296 +2298 4 71.45 561.94 16.52 0.54 2297 +2299 4 72.6 563.83 15.99 0.54 2298 +2300 4 72.7 565.56 15.61 0.54 2299 +2301 4 73.54 568.06 15.03 0.54 2300 +2302 4 74.38 568.75 14.34 0.54 2301 +2303 4 74.67 569.39 12.56 0.54 2302 +2304 4 75.73 570.17 12.39 0.54 2303 +2305 4 76.89 571.45 11.81 0.54 2304 +2306 4 77.94 573.13 11.87 0.54 2305 +2307 4 78.76 575.36 11.1 0.54 2306 +2308 4 79.3 576.06 10.3 0.54 2307 +2309 4 80.31 577.19 9.71 0.54 2308 +2310 4 81.31 578.93 9.17 0.54 2309 +2311 4 82.86 579.76 8.13 0.54 2310 +2312 4 83.76 583.11 8.38 0.54 2311 +2313 4 83.89 585.4 8.52 0.54 2312 +2314 4 83.09 588.03 8.39 0.54 2313 +2315 4 82.89 591.55 8.53 0.54 2314 +2316 4 82.42 594.13 8.74 0.54 2315 +2317 4 82.09 597.81 8.83 0.54 2316 +2318 4 80.69 599.8 8.85 0.54 2317 +2319 4 79.69 600.78 8.21 0.54 2318 +2320 4 26.36 477.48 22.58 0.755 2166 +2321 4 24.42 479.08 23.43 0.755 2320 +2322 4 23.06 481.64 23.96 0.755 2321 +2323 4 21.95 482.74 23.71 0.755 2322 +2324 4 21.76 484.24 25.7 0.755 2323 +2325 4 21.44 485.15 25.82 0.755 2324 +2326 4 21.44 488.19 26.11 0.755 2325 +2327 4 22.34 490.02 26.21 0.54 2326 +2328 4 23.55 491.86 26.27 0.54 2327 +2329 4 24.7 492.57 25.41 0.54 2328 +2330 4 26.64 493.37 25.0 0.54 2329 +2331 4 28.16 494.6 24.99 0.54 2330 +2332 4 29.82 496.6 25.02 0.54 2331 +2333 4 31.5 499.79 25.33 0.54 2332 +2334 4 35.02 503.9 25.71 0.54 2333 +2335 4 36.39 505.89 25.78 0.54 2334 +2336 4 37.44 507.57 25.85 0.54 2335 +2337 4 39.27 508.79 25.87 0.54 2336 +2338 4 41.55 511.1 25.89 0.54 2337 +2339 4 43.37 512.94 25.89 0.54 2338 +2340 4 45.21 515.97 26.41 0.54 2339 +2341 4 46.45 518.1 26.65 0.54 2340 +2342 4 47.53 519.74 27.02 0.54 2341 +2343 4 48.62 522.01 27.43 0.54 2342 +2344 4 50.17 523.2 27.78 0.54 2343 +2345 4 50.85 523.74 28.6 0.54 2344 +2346 4 51.93 524.48 28.81 0.54 2345 +2347 4 53.46 526.01 28.88 0.54 2346 +2348 4 56.05 529.52 29.14 0.54 2347 +2349 4 57.74 531.78 29.58 0.54 2348 +2350 4 58.99 534.18 30.08 0.54 2349 +2351 4 59.92 536.9 30.63 0.54 2350 +2352 4 60.03 537.4 31.74 0.54 2351 +2353 4 59.3 538.72 32.39 0.54 2352 +2354 4 58.51 539.21 30.61 0.54 2353 +2355 4 58.69 540.25 29.33 0.54 2354 +2356 4 58.29 541.25 28.49 0.54 2355 +2357 4 58.14 542.0 28.57 0.54 2356 +2358 4 57.79 542.95 28.32 0.54 2357 +2359 4 57.57 544.41 27.59 0.54 2358 +2360 4 57.43 545.47 26.19 0.54 2359 +2361 4 57.68 547.64 25.92 0.54 2360 +2362 4 58.55 549.2 25.61 0.54 2361 +2363 4 60.81 550.32 25.21 0.54 2362 +2364 4 62.55 551.33 24.39 0.54 2363 +2365 4 64.07 552.86 24.33 0.54 2364 +2366 4 64.52 555.77 24.57 0.54 2365 +2367 4 66.41 556.93 23.6 0.54 2366 +2368 4 67.27 557.6 23.06 0.54 2367 +2369 4 69.63 560.75 22.39 0.54 2368 +2370 4 70.56 562.25 21.01 0.54 2369 +2371 4 71.46 562.88 19.26 0.54 2370 +2372 4 71.6 564.27 19.3 0.54 2371 +2373 4 72.57 565.75 18.3 0.54 2372 +2374 4 72.91 568.45 17.39 0.54 2373 +2375 4 73.87 569.02 16.15 0.54 2374 +2376 4 74.26 569.56 15.34 0.54 2375 +2377 4 74.92 571.33 14.54 0.54 2376 +2378 4 76.82 573.71 13.77 0.54 2377 +2379 4 77.18 574.27 12.73 0.54 2378 +2380 4 78.21 575.39 12.36 0.54 2379 +2381 4 79.55 577.99 12.43 0.54 2380 +2382 4 80.96 580.25 11.3 0.54 2381 +2383 4 81.84 581.2 11.02 0.54 2382 +2384 4 82.74 582.73 11.0 0.54 2383 +2385 4 82.67 584.93 10.54 0.54 2384 +2386 4 82.51 588.13 10.79 0.54 2385 +2387 4 81.97 591.69 10.44 0.54 2386 +2388 4 81.88 593.0 9.67 0.54 2387 +2389 4 81.54 596.06 9.69 0.54 2388 +2390 4 81.34 597.5 9.25 0.54 2389 +2391 4 80.58 599.45 8.0 0.54 2390 +2392 4 79.34 601.89 8.2 0.54 2391 +2393 4 78.44 602.79 6.85 0.54 2392 +2394 4 20.72 483.94 23.94 0.755 2323 +2395 4 19.2 485.14 24.21 0.755 2394 +2396 4 16.73 486.68 24.28 0.755 2395 +2397 4 15.18 489.43 24.38 0.755 2396 +2398 4 14.35 490.85 23.92 0.755 2397 +2399 4 12.92 492.26 23.58 0.755 2398 +2400 4 11.82 493.95 23.63 0.755 2399 +2401 4 9.92 496.43 23.29 0.755 2400 +2402 4 7.41 498.92 23.01 0.755 2401 +2403 4 5.5 501.41 22.6 0.755 2402 +2404 4 4.59 502.93 22.83 0.755 2403 +2405 4 3.9 503.93 22.08 0.755 2404 +2406 4 3.28 506.96 22.44 0.755 2405 +2407 4 1.99 508.53 22.03 0.755 2406 +2408 4 -0.01 509.91 22.05 0.755 2407 +2409 4 -1.77 511.36 21.36 0.755 2408 +2410 4 -4.16 512.8 20.74 0.755 2409 +2411 4 -6.66 514.37 20.37 0.755 2410 +2412 4 -9.32 516.4 20.06 0.755 2411 +2413 4 -11.82 518.26 19.87 0.755 2412 +2414 4 -14.28 520.09 20.05 0.755 2413 +2415 4 -16.46 522.25 20.0 0.755 2414 +2416 4 -18.6 524.05 20.3 0.755 2415 +2417 4 -20.89 525.7 20.67 0.755 2416 +2418 4 -23.94 527.8 21.16 0.755 2417 +2419 4 -26.93 529.84 20.72 0.755 2418 +2420 4 -29.22 531.8 21.05 0.755 2419 +2421 4 -29.98 534.08 21.35 0.755 2420 +2422 4 -30.75 534.84 20.96 0.755 2421 +2423 4 -31.21 536.5 21.16 0.755 2422 +2424 4 -30.76 540.01 21.46 0.755 2423 +2425 4 -30.25 542.53 20.68 0.755 2424 +2426 4 -30.3 545.32 20.51 0.755 2425 +2427 4 -30.29 546.84 19.14 0.755 2426 +2428 4 -30.31 549.89 19.29 0.755 2427 +2429 4 -29.75 552.96 19.23 0.755 2428 +2430 4 -30.09 554.54 18.9 0.755 2429 +2431 4 -31.06 556.7 18.74 0.755 2430 +2432 4 -32.64 557.96 18.4 0.755 2431 +2433 4 -32.86 561.2 18.21 0.755 2432 +2434 4 -33.38 564.45 17.96 0.755 2433 +2435 4 -34.04 566.93 17.68 0.755 2434 +2436 4 -33.96 570.49 17.41 0.755 2435 +2437 4 -33.17 573.98 16.38 0.755 2436 +2438 4 -32.45 577.82 16.32 0.755 2437 +2439 4 -32.12 579.92 15.2 0.755 2438 +2440 4 -32.25 582.78 14.22 0.755 2439 +2441 4 -32.01 584.97 13.8 0.755 2440 +2442 4 -31.58 586.68 13.62 0.755 2441 +2443 4 -30.45 589.2 12.94 0.755 2442 +2444 4 -29.95 590.83 11.99 0.755 2443 +2445 4 -29.68 592.4 11.66 0.755 2444 +2446 4 -29.88 595.32 11.58 0.755 2445 +2447 4 -29.65 597.51 11.17 0.755 2446 +2448 4 -28.28 599.5 11.17 0.755 2447 +2449 4 -26.84 601.72 10.49 0.755 2448 +2450 4 -27.0 604.61 10.79 0.755 2449 +2451 4 -26.27 606.94 10.56 0.755 2450 +2452 4 -25.77 609.69 10.64 0.755 2451 +2453 4 -26.39 612.12 10.93 0.755 2452 +2454 4 -27.3 614.54 11.26 0.755 2453 +2455 4 -28.75 616.58 10.76 0.755 2454 +2456 4 -29.58 619.82 10.55 0.755 2455 +2457 4 -29.82 622.48 10.07 0.755 2456 +2458 4 -30.14 625.24 10.14 0.755 2457 +2459 4 -31.18 628.09 9.23 0.755 2458 +2460 4 -31.97 631.59 9.5 0.755 2459 +2461 4 -33.21 634.65 9.68 0.755 2460 +2462 4 -34.46 637.08 9.95 0.755 2461 +2463 4 -34.52 640.79 9.65 0.755 2462 +2464 4 -35.78 643.25 9.62 0.755 2463 +2465 4 -36.33 645.32 8.9 0.755 2464 +2466 4 -37.28 647.47 8.89 0.755 2465 +2467 4 -38.71 650.71 8.74 0.755 2466 +2468 4 -39.06 654.69 8.85 0.755 2467 +2469 4 -38.94 658.81 9.09 0.755 2468 +2470 4 -38.69 661.92 8.7 0.755 2469 +2471 4 -38.58 665.73 8.9 0.755 2470 +2472 4 -38.48 669.28 8.79 0.755 2471 +2473 4 -36.45 674.25 8.18 0.755 2472 +2474 4 -35.23 677.91 8.42 0.755 2473 +2475 4 -35.36 680.69 7.11 0.755 2474 +2476 4 -35.11 684.39 6.85 0.755 2475 +2477 4 -35.23 686.32 7.57 0.755 2476 +2478 4 -35.07 688.29 7.83 0.755 2477 +2479 4 -35.04 690.69 6.85 0.755 2478 +2480 4 -34.86 693.24 5.88 0.755 2479 +2481 4 -34.95 696.08 5.1 0.755 2480 +2482 4 -35.02 698.27 4.64 0.755 2481 +2483 4 -34.65 700.63 4.07 0.755 2482 +2484 4 -34.07 703.1 3.9 0.755 2483 +2485 4 -32.44 705.74 2.11 0.755 2484 +2486 4 -30.6 706.97 2.06 0.755 2485 +2487 4 -28.65 708.68 1.9 0.755 2486 +2488 4 -27.71 709.59 0.45 0.755 2487 +2489 4 -25.75 710.99 0.26 0.755 2488 +2490 4 -24.15 712.43 -0.41 0.755 2489 +2491 4 -21.64 713.91 -1.26 0.755 2490 +2492 4 -20.49 715.5 -1.96 0.755 2491 +2493 4 -19.15 716.91 -2.25 0.755 2492 +2494 4 -17.57 718.38 -3.09 0.755 2493 +2495 4 -15.77 719.65 -3.57 0.755 2494 +2496 4 -14.31 720.93 -4.04 0.755 2495 +2497 4 -13.02 722.09 -4.96 0.755 2496 +2498 4 -12.3 722.91 -5.48 0.755 2497 +2499 4 0.45 311.01 18.62 0.975 2100 +2500 4 -0.41 312.78 17.74 0.975 2499 +2501 4 -1.24 313.6 17.23 0.975 2500 +2502 4 -1.75 314.11 16.64 0.975 2501 +2503 4 -1.81 316.3 16.33 0.975 2502 +2504 4 -1.73 318.05 15.65 0.975 2503 +2505 4 -2.05 319.58 15.76 0.975 2504 +2506 4 -2.58 321.63 15.25 0.975 2505 +2507 4 -3.23 322.86 15.13 0.975 2506 +2508 4 -4.25 324.19 14.06 0.865 2507 +2509 4 -5.18 325.71 14.3 0.865 2508 +2510 4 -5.49 328.14 14.56 0.865 2509 +2511 4 -4.58 331.49 14.81 0.865 2510 +2512 4 -3.58 333.83 14.42 0.865 2511 +2513 4 -3.49 335.87 13.94 0.865 2512 +2514 4 -3.81 338.62 14.08 0.865 2513 +2515 4 -5.36 341.96 14.47 0.865 2514 +2516 4 -6.25 344.68 13.45 0.865 2515 +2517 4 -7.41 347.64 12.94 0.865 2516 +2518 4 -8.21 349.66 12.76 0.865 2517 +2519 4 -9.21 351.85 12.23 0.865 2518 +2520 4 -9.95 353.8 11.13 0.865 2519 +2521 4 -10.57 356.85 11.42 0.865 2520 +2522 4 -11.34 358.81 11.68 0.865 2521 +2523 4 -12.0 361.28 11.53 0.865 2522 +2524 4 -14.22 363.19 11.01 0.865 2523 +2525 4 -15.83 365.69 10.49 0.865 2524 +2526 4 -18.06 369.41 10.07 0.865 2525 +2527 4 -19.29 373.04 10.54 0.865 2526 +2528 4 -22.14 377.07 10.14 0.865 2527 +2529 4 -23.1 379.24 9.98 0.865 2528 +2530 4 -23.53 380.89 8.84 0.865 2529 +2531 4 -23.88 383.35 8.72 0.865 2530 +2532 4 -24.53 387.03 8.77 0.865 2531 +2533 4 -24.08 389.32 8.95 0.865 2532 +2534 4 -24.09 391.45 9.16 0.865 2533 +2535 4 -24.86 394.03 9.48 0.865 2534 +2536 4 -25.48 395.85 8.05 0.865 2535 +2537 4 -26.13 397.42 7.81 0.865 2536 +2538 4 -26.68 399.8 7.1 0.865 2537 +2539 4 -26.49 400.51 6.33 0.865 2538 +2540 4 -25.58 402.04 6.39 0.865 2539 +2541 4 -24.74 402.73 7.22 0.865 2540 +2542 4 -24.29 404.69 7.51 0.865 2541 +2543 4 -23.23 406.69 7.6 0.755 2542 +2544 4 -22.88 408.46 8.29 0.755 2543 +2545 4 -22.43 409.53 8.35 0.755 2544 +2546 4 -21.7 410.33 8.05 0.755 2545 +2547 4 -20.98 411.14 7.53 0.755 2546 +2548 4 -20.3 412.0 6.66 0.755 2547 +2549 4 -19.27 412.5 6.31 0.755 2548 +2550 4 -18.52 412.96 6.2 0.865 2549 +2551 4 -17.16 414.95 6.27 0.865 2550 +2552 4 -15.9 417.06 5.15 0.865 2551 +2553 4 -14.49 419.23 4.55 0.865 2552 +2554 4 -14.04 422.43 4.83 0.865 2553 +2555 4 -13.9 425.02 3.32 0.865 2554 +2556 4 -14.02 426.97 2.32 0.865 2555 +2557 4 -14.02 429.4 1.04 0.865 2556 +2558 4 -13.44 431.27 0.72 0.865 2557 +2559 4 -12.65 432.3 -0.38 0.865 2558 +2560 4 -11.8 433.29 -1.12 0.865 2559 +2561 4 -10.33 434.26 -1.62 0.865 2560 +2562 4 -9.34 435.12 -2.54 0.865 2561 +2563 4 -7.91 435.84 -3.57 0.865 2562 +2564 4 -6.58 436.96 -3.96 0.865 2563 +2565 4 -5.57 439.61 -4.4 0.865 2564 +2566 4 -5.38 440.92 -5.34 0.865 2565 +2567 4 -4.84 441.91 -6.06 0.865 2566 +2568 4 -4.81 443.41 -7.21 0.865 2567 +2569 4 -4.87 444.69 -7.75 0.865 2568 +2570 4 -5.13 445.57 -8.86 0.865 2569 +2571 4 -5.01 446.65 -8.98 0.865 2570 +2572 4 -4.96 447.81 -9.93 0.865 2571 +2573 4 -5.06 449.15 -10.93 0.865 2572 +2574 4 -4.75 449.29 -11.62 0.54 2573 +2575 4 -3.29 449.98 -12.38 0.54 2574 +2576 4 -2.58 450.49 -13.0 0.54 2575 +2577 4 -2.33 450.54 -13.46 0.54 2576 +2578 4 -1.64 451.07 -14.22 0.54 2577 +2579 4 -0.5 452.39 -15.11 0.54 2578 +2580 4 -0.14 453.85 -15.99 0.54 2579 +2581 4 -0.05 454.99 -16.57 0.54 2580 +2582 4 0.18 455.67 -17.28 0.54 2581 +2583 4 0.48 455.98 -17.35 0.54 2582 +2584 4 0.13 456.62 -17.63 0.54 2583 +2585 4 0.62 457.37 -18.97 0.54 2584 +2586 4 -0.14 458.15 -20.56 0.54 2585 +2587 4 -0.75 459.36 -22.05 0.54 2586 +2588 4 -1.78 460.98 -22.94 0.54 2587 +2589 4 -1.54 462.27 -23.57 0.54 2588 +2590 4 -0.84 464.32 -24.05 0.54 2589 +2591 4 -1.11 464.9 -25.33 0.54 2590 +2592 4 -0.49 465.5 -25.11 0.54 2591 +2593 4 -0.34 466.55 -24.94 0.54 2592 +2594 4 -0.49 467.31 -26.45 0.54 2593 +2595 4 -0.39 468.13 -26.97 0.54 2594 +2596 4 -0.74 470.01 -27.28 0.54 2595 +2597 4 -0.97 470.83 -27.87 0.54 2596 +2598 4 -1.67 472.13 -28.58 0.54 2597 +2599 4 -0.75 473.06 -28.65 0.54 2598 +2600 4 0.2 473.93 -29.71 0.54 2599 +2601 4 0.79 474.26 -29.96 0.54 2600 +2602 4 2.11 475.08 -30.54 0.54 2601 +2603 4 2.81 475.31 -31.25 0.54 2602 +2604 4 3.67 475.98 -31.81 0.54 2603 +2605 4 5.03 477.05 -31.82 0.54 2604 +2606 4 5.69 477.93 -32.93 0.54 2605 +2607 4 6.67 479.09 -33.81 0.54 2606 +2608 4 7.67 481.74 -34.25 0.54 2607 +2609 4 8.44 482.82 -35.8 0.54 2608 +2610 4 9.07 484.33 -37.16 0.54 2609 +2611 4 9.71 485.22 -38.41 0.54 2610 +2612 4 10.16 485.67 -38.41 0.54 2611 +2613 4 11.12 486.86 -39.51 0.54 2612 +2614 4 11.62 487.59 -40.69 0.54 2613 +2615 4 12.5 488.85 -40.96 0.54 2614 +2616 4 13.86 490.84 -40.89 0.54 2615 +2617 4 14.78 491.76 -40.88 0.54 2616 +2618 4 15.2 492.24 -41.18 0.54 2617 +2619 4 15.27 493.08 -41.94 0.54 2618 +2620 4 16.1 493.79 -42.86 0.54 2619 +2621 4 16.49 494.33 -43.6 0.54 2620 +2622 4 16.5 494.62 -45.07 0.54 2621 +2623 4 17.73 495.24 -45.13 0.54 2622 +2624 4 18.31 495.88 -45.34 0.54 2623 +2625 4 18.85 496.56 -46.09 0.54 2624 +2626 4 19.69 497.56 -46.82 0.54 2625 +2627 4 20.38 498.39 -47.49 0.54 2626 +2628 4 21.06 499.85 -48.25 0.54 2627 +2629 4 21.6 501.14 -48.84 0.54 2628 +2630 4 22.39 502.73 -48.76 0.54 2629 +2631 4 22.61 503.49 -49.38 0.54 2630 +2632 4 23.96 504.88 -49.45 0.54 2631 +2633 4 25.57 508.45 -49.93 0.54 2632 +2634 4 26.97 511.91 -50.78 0.54 2633 +2635 4 27.71 513.93 -50.89 0.54 2634 +2636 4 28.54 515.53 -51.56 0.54 2635 +2637 4 28.97 516.64 -51.94 0.54 2636 +2638 4 29.65 518.08 -52.54 0.54 2637 +2639 4 30.79 519.69 -53.39 0.54 2638 +2640 4 32.95 523.04 -54.55 0.54 2639 +2641 4 33.78 525.84 -55.04 0.54 2640 +2642 4 34.99 529.21 -56.49 0.54 2641 +2643 4 35.75 531.81 -57.97 0.54 2642 +2644 4 36.13 533.87 -58.56 0.54 2643 +2645 4 35.91 537.95 -58.37 0.54 2644 +2646 4 36.37 539.31 -59.71 0.54 2645 +2647 4 37.22 541.51 -60.26 0.54 2646 +2648 4 37.72 543.15 -61.28 0.54 2647 +2649 4 38.29 543.73 -61.27 0.54 2648 +2650 4 38.41 544.21 -61.54 0.11 2649 +2651 4 37.6 545.31 -61.8 0.435 2650 +2652 4 36.83 548.18 -61.46 0.435 2651 +2653 4 36.22 550.02 -61.31 0.435 2652 +2654 4 35.87 550.37 -61.69 0.435 2653 +2655 4 35.35 553.01 -61.99 0.435 2654 +2656 4 34.88 554.08 -61.91 0.435 2655 +2657 4 35.14 556.25 -62.18 0.435 2656 +2658 4 35.21 557.09 -63.01 0.435 2657 +2659 4 35.17 557.73 -63.25 0.435 2658 +2660 4 35.41 559.32 -63.79 0.435 2659 +2661 4 35.81 559.85 -64.46 0.435 2660 +2662 4 35.76 560.51 -64.85 0.435 2661 +2663 4 36.27 561.21 -65.89 0.435 2662 +2664 4 36.21 562.19 -66.39 0.435 2663 +2665 4 36.15 562.25 -67.05 0.435 2664 +2666 4 36.99 563.24 -67.71 0.435 2665 +2667 4 38.29 565.32 -68.54 0.435 2666 +2668 4 38.96 565.85 -67.72 0.435 2667 +2669 4 39.41 566.93 -67.72 0.435 2668 +2670 4 39.67 567.27 -68.17 0.435 2669 +2671 4 39.73 567.54 -69.29 0.435 2670 +2672 4 40.12 568.06 -69.95 0.435 2671 +2673 4 40.64 568.76 -70.84 0.435 2672 +2674 4 40.89 569.12 -71.43 0.435 2673 +2675 4 41.23 569.41 -72.72 0.435 2674 +2676 4 42.55 570.23 -73.3 0.435 2675 +2677 4 43.04 570.96 -74.47 0.435 2676 +2678 4 44.59 571.87 -75.89 0.435 2677 +2679 4 46.21 572.71 -76.57 0.435 2678 +2680 4 47.96 574.0 -77.28 0.435 2679 +2681 4 48.98 574.52 -77.86 0.435 2680 +2682 4 49.68 575.06 -78.69 0.435 2681 +2683 4 51.18 576.3 -78.86 0.435 2682 +2684 4 52.38 576.63 -79.02 0.435 2683 +2685 4 53.07 576.56 -79.84 0.435 2684 +2686 4 53.63 576.92 -80.4 0.435 2685 +2687 4 54.5 577.58 -80.94 0.435 2686 +2688 4 38.92 545.0 -61.35 0.54 2649 +2689 4 39.59 545.86 -62.32 0.54 2688 +2690 4 39.83 547.44 -62.8 0.54 2689 +2691 4 40.2 548.91 -63.59 0.54 2690 +2692 4 39.93 549.79 -64.76 0.54 2691 +2693 4 40.73 551.11 -64.25 0.54 2692 +2694 4 42.55 552.96 -64.25 0.54 2693 +2695 4 44.21 554.65 -64.3 0.54 2694 +2696 4 44.58 555.52 -65.24 0.54 2695 +2697 4 45.64 557.2 -65.18 0.54 2696 +2698 4 46.81 559.99 -66.97 0.54 2697 +2699 4 48.13 562.04 -67.51 0.54 2698 +2700 4 49.0 564.21 -67.81 0.54 2699 +2701 4 50.03 565.33 -68.19 0.54 2700 +2702 4 50.9 566.28 -68.55 0.54 2701 +2703 4 52.68 567.85 -68.94 0.54 2702 +2704 4 56.02 571.54 -68.89 0.54 2703 +2705 4 58.84 573.92 -69.67 0.54 2704 +2706 4 60.43 575.37 -70.44 0.54 2705 +2707 4 61.6 576.65 -70.87 0.54 2706 +2708 4 63.19 579.03 -71.7 0.54 2707 +2709 4 63.94 579.81 -71.76 0.54 2708 +2710 4 65.4 581.1 -72.45 0.54 2709 +2711 4 66.7 581.94 -73.17 0.54 2710 +2712 4 69.07 583.76 -73.37 0.54 2711 +2713 4 70.55 584.43 -73.95 0.54 2712 +2714 4 72.2 585.53 -74.23 0.54 2713 +2715 4 73.5 586.37 -74.95 0.54 2714 +2716 4 74.67 587.34 -75.5 0.54 2715 +2717 4 76.08 588.98 -76.59 0.54 2716 +2718 4 78.19 590.26 -76.9 0.54 2717 +2719 4 79.84 591.64 -76.99 0.54 2718 +2720 4 80.71 592.31 -77.6 0.54 2719 +2721 4 82.15 593.33 -78.55 0.54 2720 +2722 4 82.64 594.06 -79.73 0.54 2721 +2723 4 84.0 594.84 -79.86 0.54 2722 +2724 4 84.73 595.34 -80.26 0.54 2723 +2725 4 85.78 596.12 -80.35 0.54 2724 +2726 4 86.62 596.81 -81.11 0.54 2725 +2727 4 -5.68 450.37 -10.83 0.755 2573 +2728 4 -7.62 451.97 -11.56 0.755 2727 +2729 4 -8.69 452.12 -11.59 0.755 2728 +2730 4 -10.72 453.23 -11.83 0.755 2729 +2731 4 -11.21 454.92 -11.91 0.755 2730 +2732 4 -12.07 457.6 -12.63 0.755 2731 +2733 4 -12.78 459.52 -13.43 0.755 2732 +2734 4 -13.79 461.13 -14.09 0.755 2733 +2735 4 -14.92 462.85 -14.51 0.755 2734 +2736 4 -16.0 466.65 -14.1 0.755 2735 +2737 4 -17.08 471.05 -13.58 0.65 2736 +2738 4 -17.55 473.64 -13.28 0.65 2737 +2739 4 -18.17 476.06 -12.99 0.65 2738 +2740 4 -18.93 477.41 -12.79 0.65 2739 +2741 4 -18.92 478.03 -12.72 0.65 2740 +2742 4 -19.99 479.08 -12.52 0.65 2741 +2743 4 -20.0 481.22 -12.32 0.65 2742 +2744 4 -20.47 484.1 -11.99 0.65 2743 +2745 4 -21.39 487.12 -11.61 0.65 2744 +2746 4 -22.53 489.47 -12.03 0.65 2745 +2747 4 -23.69 491.23 -12.66 0.65 2746 +2748 4 -25.08 494.72 -12.35 0.65 2747 +2749 4 -26.47 498.82 -11.82 0.65 2748 +2750 4 -27.38 501.55 -11.47 0.65 2749 +2751 4 -28.46 503.51 -11.17 0.65 2750 +2752 4 -29.07 504.49 -11.02 0.65 2751 +2753 4 -28.35 504.98 -11.42 0.54 2752 +2754 4 -27.59 505.75 -11.41 0.54 2753 +2755 4 -26.52 506.52 -11.44 0.54 2754 +2756 4 -25.61 507.43 -11.43 0.54 2755 +2757 4 -25.62 508.66 -11.31 0.54 2756 +2758 4 -25.5 509.45 -11.63 0.54 2757 +2759 4 -24.78 510.86 -11.86 0.54 2758 +2760 4 -24.04 512.26 -12.01 0.54 2759 +2761 4 -22.72 514.91 -12.41 0.54 2760 +2762 4 -21.39 515.71 -12.76 0.54 2761 +2763 4 -20.04 517.11 -12.96 0.54 2762 +2764 4 -18.72 518.54 -13.41 0.54 2763 +2765 4 -17.36 519.63 -13.58 0.54 2764 +2766 4 -16.54 521.23 -14.33 0.54 2765 +2767 4 -15.85 523.9 -14.89 0.54 2766 +2768 4 -15.57 526.04 -14.86 0.54 2767 +2769 4 -14.71 528.24 -15.25 0.54 2768 +2770 4 -14.13 529.49 -15.49 0.54 2769 +2771 4 -11.55 531.19 -15.62 0.54 2770 +2772 4 -9.73 533.95 -15.53 0.54 2771 +2773 4 -8.89 536.13 -15.92 0.54 2772 +2774 4 -8.8 538.78 -16.35 0.54 2773 +2775 4 -7.45 543.52 -16.1 0.54 2774 +2776 4 -7.16 546.86 -15.79 0.54 2775 +2777 4 -6.71 550.38 -15.49 0.54 2776 +2778 4 -6.26 552.04 -15.37 0.54 2777 +2779 4 -6.58 554.78 -15.08 0.54 2778 +2780 4 -6.43 557.07 -14.86 0.54 2779 +2781 4 -5.68 559.05 -14.74 0.54 2780 +2782 4 -4.0 560.12 -14.79 0.54 2781 +2783 4 -3.71 562.26 -14.61 0.54 2782 +2784 4 -3.24 565.75 -14.08 0.54 2783 +2785 4 -3.1 568.93 -13.79 0.54 2784 +2786 4 -2.49 570.47 -13.69 0.54 2785 +2787 4 -2.65 573.04 -13.35 0.54 2786 +2788 4 -3.35 576.46 -12.2 0.54 2787 +2789 4 -3.06 579.81 -11.9 0.54 2788 +2790 4 -1.85 581.94 -11.8 0.54 2789 +2791 4 -0.34 585.61 -11.58 0.54 2790 +2792 4 1.06 590.57 -10.55 0.54 2791 +2793 4 1.36 592.1 -10.43 0.54 2792 +2794 4 2.42 593.18 -10.43 0.54 2793 +2795 4 3.33 594.09 -10.42 0.54 2794 +2796 4 4.09 596.99 -10.21 0.54 2795 +2797 4 5.18 601.67 -9.4 0.54 2796 +2798 4 6.39 605.03 -9.1 0.54 2797 +2799 4 8.17 608.71 -7.63 0.54 2798 +2800 4 8.66 611.57 -6.94 0.54 2799 +2801 4 8.85 612.9 -6.37 0.54 2800 +2802 4 8.73 614.22 -5.85 0.54 2801 +2803 4 8.63 615.53 -5.1 0.54 2802 +2804 4 8.21 617.15 -4.3 0.54 2803 +2805 4 7.77 618.49 -3.91 0.54 2804 +2806 4 -29.22 505.49 -10.91 0.65 2752 +2807 4 -30.38 510.28 -11.25 0.65 2806 +2808 4 -30.54 512.56 -11.01 0.65 2807 +2809 4 -31.88 517.53 -11.53 0.65 2808 +2810 4 -32.81 520.25 -11.18 0.65 2809 +2811 4 -34.59 524.5 -10.76 0.65 2810 +2812 4 -35.11 527.47 -11.17 0.65 2811 +2813 4 -36.54 531.0 -11.15 0.65 2812 +2814 4 -37.46 534.04 -12.51 0.65 2813 +2815 4 -38.11 536.8 -12.49 0.65 2814 +2816 4 -39.15 539.05 -13.45 0.65 2815 +2817 4 -39.8 541.51 -13.53 0.65 2816 +2818 4 -41.08 544.31 -13.82 0.65 2817 +2819 4 -43.01 547.42 -14.25 0.65 2818 +2820 4 -43.05 550.19 -14.34 0.65 2819 +2821 4 -43.57 552.83 -14.65 0.65 2820 +2822 4 -44.35 554.81 -14.47 0.65 2821 +2823 4 -45.33 556.4 -14.97 0.65 2822 +2824 4 -45.18 558.68 -14.83 0.65 2823 +2825 4 -45.56 560.87 -15.27 0.65 2824 +2826 4 -46.54 563.05 -15.64 0.65 2825 +2827 4 -47.8 564.91 -15.72 0.65 2826 +2828 4 -48.62 566.93 -15.99 0.65 2827 +2829 4 -49.69 569.52 -15.7 0.65 2828 +2830 4 -51.23 572.23 -15.3 0.65 2829 +2831 4 -52.47 575.28 -15.03 0.65 2830 +2832 4 -52.71 577.04 -15.75 0.65 2831 +2833 4 -52.46 581.04 -15.91 0.65 2832 +2834 4 -52.79 585.91 -15.41 0.65 2833 +2835 4 -53.43 588.98 -15.36 0.65 2834 +2836 4 -54.13 591.48 -15.95 0.65 2835 +2837 4 -54.63 593.8 -16.06 0.65 2836 +2838 4 -55.34 595.72 -16.87 0.65 2837 +2839 4 -56.04 597.02 -17.65 0.65 2838 +2840 4 -56.59 599.4 -18.27 0.65 2839 +2841 4 -58.6 603.8 -17.89 0.65 2840 +2842 4 -59.74 607.65 -17.79 0.65 2841 +2843 4 -61.44 612.95 -17.11 0.65 2842 +2844 4 -62.51 614.61 -16.85 0.65 2843 +2845 4 -64.65 617.03 -16.41 0.65 2844 +2846 4 -66.74 620.92 -16.99 0.65 2845 +2847 4 -68.28 626.39 -16.31 0.65 2846 +2848 4 -69.9 630.41 -16.74 0.65 2847 +2849 4 -70.57 634.1 -16.78 0.65 2848 +2850 4 -72.15 636.28 -17.02 0.65 2849 +2851 4 -74.14 639.76 -16.5 0.65 2850 +2852 4 -76.29 642.78 -16.08 0.65 2851 +2853 4 -80.28 645.82 -15.8 0.65 2852 +2854 4 -83.81 648.7 -15.27 0.65 2853 +2855 4 -86.4 652.46 -14.66 0.65 2854 +2856 4 -86.7 653.63 -16.33 0.65 2855 +2857 4 -88.69 656.8 -15.83 0.65 2856 +2858 4 -90.16 660.37 -16.26 0.65 2857 +2859 4 -90.83 664.69 -16.31 0.65 2858 +2860 4 -92.21 668.77 -15.78 0.65 2859 +2861 4 -92.89 672.19 -16.15 0.65 2860 +2862 4 -94.32 674.81 -16.28 0.65 2861 +2863 4 -95.39 676.78 -15.99 0.65 2862 +2864 4 -96.13 678.12 -17.23 0.65 2863 +2865 4 -97.23 680.42 -17.13 0.65 2864 +2866 4 -98.4 681.58 -18.04 0.65 2865 +2867 4 -99.66 684.65 -18.01 0.65 2866 +2868 4 -100.65 686.24 -18.59 0.65 2867 +2869 4 -101.65 687.22 -19.15 0.65 2868 +2870 4 -101.87 688.35 -19.78 0.65 2869 +2871 4 -102.17 690.47 -19.47 0.65 2870 +2872 4 -102.02 693.06 -19.23 0.65 2871 +2873 4 -102.79 694.41 -19.03 0.65 2872 +2874 4 -103.4 696.84 -18.74 0.65 2873 +2875 4 -103.41 699.89 -18.43 0.65 2874 +2876 4 -103.28 701.26 -18.4 0.65 2875 +2877 4 -102.84 703.86 -18.25 0.65 2876 +2878 4 -102.62 706.68 -18.84 0.65 2877 +2879 4 -102.17 708.97 -18.65 0.65 2878 +2880 4 -101.57 712.62 -18.36 0.65 2879 +2881 4 -101.12 716.13 -18.05 0.65 2880 +2882 4 -101.59 719.31 -17.7 0.65 2881 +2883 4 -101.45 723.13 -17.34 0.65 2882 +2884 4 -100.55 727.08 -17.04 0.65 2883 +2885 4 -99.54 730.7 -16.84 0.65 2884 +2886 4 -99.0 736.53 -16.86 0.65 2885 +2887 4 -98.71 738.97 -16.65 0.65 2886 +2888 4 -97.84 739.93 -17.09 0.65 2887 +2889 4 -96.18 741.32 -17.26 0.65 2888 +2890 4 -94.52 743.93 -17.16 0.65 2889 +2891 4 -93.56 748.14 -17.82 0.65 2890 +2892 4 -93.31 750.02 -18.19 0.65 2891 +2893 4 -92.56 752.01 -18.14 0.65 2892 +2894 4 -91.61 753.82 -19.26 0.65 2893 +2895 4 -90.7 754.74 -19.33 0.65 2894 +2896 4 -103.71 688.65 -19.73 0.65 2869 +2897 4 -105.4 690.34 -19.64 0.65 2896 +2898 4 -107.22 692.14 -20.81 0.65 2897 +2899 4 -108.98 692.97 -21.48 0.65 2898 +2900 4 -110.42 694.08 -21.92 0.65 2899 +2901 4 -112.79 695.52 -22.47 0.65 2900 +2902 4 -114.23 696.65 -22.99 0.65 2901 +2903 4 -115.02 697.43 -23.2 0.65 2902 +2904 4 -116.57 700.18 -23.02 0.65 2903 +2905 4 -117.92 701.51 -24.12 0.65 2904 +2906 4 -118.68 703.48 -23.87 0.65 2905 +2907 4 -119.14 706.06 -23.57 0.65 2906 +2908 4 -118.3 710.09 -23.85 0.65 2907 +2909 4 -117.2 712.04 -24.91 0.65 2908 +2910 4 -116.16 715.54 -24.73 0.65 2909 +2911 4 -115.67 719.32 -25.62 0.65 2910 +2912 4 -115.32 721.72 -26.63 0.65 2911 +2913 4 -114.96 723.78 -27.29 0.65 2912 +2914 4 -114.38 725.05 -27.67 0.65 2913 +2915 4 -113.51 726.6 -27.98 0.65 2914 +2916 4 -113.22 728.44 -27.91 0.65 2915 +2917 4 -112.84 730.5 -28.49 0.65 2916 +2918 4 -27.98 401.37 6.92 0.65 2538 +2919 4 -29.04 402.74 7.15 0.65 2918 +2920 4 -31.79 405.45 7.68 0.65 2919 +2921 4 -34.06 407.7 6.67 0.65 2920 +2922 4 -35.9 409.5 7.01 0.65 2921 +2923 4 -38.35 411.92 7.41 0.65 2922 +2924 4 -41.44 414.68 7.43 0.65 2923 +2925 4 -46.14 419.63 7.14 0.65 2924 +2926 4 -48.43 422.49 7.62 0.65 2925 +2927 4 -48.54 425.34 6.78 0.65 2926 +2928 4 -48.64 428.77 6.22 0.65 2927 +2929 4 -48.07 430.64 5.89 0.65 2928 +2930 4 -47.63 433.53 6.06 0.54 2929 +2931 4 -47.99 435.73 5.77 0.54 2930 +2932 4 -48.6 437.55 4.35 0.54 2931 +2933 4 -49.3 438.85 3.63 0.54 2932 +2934 4 -49.29 439.74 5.46 0.54 2933 +2935 4 -50.1 440.54 5.16 0.54 2934 +2936 4 -50.96 441.39 4.26 0.54 2935 +2937 4 -51.52 442.86 3.39 0.54 2936 +2938 4 -52.49 444.74 3.07 0.54 2937 +2939 4 -53.85 447.31 1.86 0.54 2938 +2940 4 -54.82 448.87 1.56 0.54 2939 +2941 4 -54.78 450.35 0.58 0.54 2940 +2942 4 -55.02 452.7 0.0 0.54 2941 +2943 4 -55.12 454.94 -0.91 0.54 2942 +2944 4 -55.78 456.2 -1.17 0.54 2943 +2945 4 -57.93 457.42 -1.09 0.54 2944 +2946 4 -60.72 460.18 -1.02 0.54 2945 +2947 4 -61.87 463.13 -1.44 0.54 2946 +2948 4 -62.44 464.91 -2.35 0.54 2947 +2949 4 -62.81 466.19 -2.88 0.54 2948 +2950 4 -62.67 466.98 -3.04 0.54 2949 +2951 4 -5.99 292.26 22.29 0.865 2088 +2952 4 -5.25 294.24 22.42 0.865 2951 +2953 4 -4.94 296.38 22.6 0.865 2952 +2954 4 -3.89 299.58 22.82 0.865 2953 +2955 4 -1.99 302.56 22.11 0.865 2954 +2956 4 -0.94 304.26 22.18 0.865 2955 +2957 4 -0.79 306.85 22.41 0.865 2956 +2958 4 -1.4 310.18 22.8 0.865 2957 +2959 4 -2.07 313.26 24.29 0.865 2958 +2960 4 -1.92 315.84 24.61 0.865 2959 +2961 4 -2.08 318.11 24.91 0.865 2960 +2962 4 -2.39 321.15 25.24 0.865 2961 +2963 4 -3.31 324.17 25.7 0.865 2962 +2964 4 -4.07 326.74 26.09 0.65 2963 +2965 4 -6.04 328.69 26.61 0.65 2964 +2966 4 -7.57 332.02 27.16 0.65 2965 +2967 4 -8.07 332.51 28.39 0.65 2966 +2968 4 -9.45 333.87 28.64 0.65 2967 +2969 4 -11.59 335.97 29.04 0.65 2968 +2970 4 -12.81 339.01 29.46 0.65 2969 +2971 4 -14.35 342.33 29.92 0.65 2970 +2972 4 -16.34 344.9 30.36 0.65 2971 +2973 4 -18.01 346.25 30.64 0.65 2972 +2974 4 -19.26 348.09 32.3 0.65 2973 +2975 4 -19.83 349.85 33.05 0.65 2974 +2976 4 -20.38 351.0 33.9 0.65 2975 +2977 4 -21.41 352.01 34.62 0.65 2976 +2978 4 -21.71 352.9 34.81 0.65 2977 +2979 4 -21.97 353.78 35.37 0.65 2978 +2980 4 -21.82 356.05 35.65 0.65 2979 +2981 4 -21.83 358.78 35.92 0.65 2980 +2982 4 -21.29 360.38 36.93 0.65 2981 +2983 4 -20.75 362.49 38.54 0.65 2982 +2984 4 -19.8 363.97 39.11 0.65 2983 +2985 4 -19.08 364.47 40.23 0.65 2984 +2986 4 -18.66 364.64 41.56 0.65 2985 +2987 4 -18.04 365.84 41.93 0.65 2986 +2988 4 -17.67 365.79 42.5 0.65 2987 +2989 4 -17.2 365.91 44.37 0.65 2988 +2990 4 -6.61 91.18 9.77 0.435 1189 +2991 4 -7.98 91.62 9.94 0.435 2990 +2992 4 -8.7 91.42 10.44 0.435 2991 +2993 4 -8.69 91.11 10.56 0.65 2992 +2994 4 -8.95 90.75 11.08 0.65 2993 +2995 4 -8.89 90.09 11.62 0.65 2994 +2996 4 -9.16 89.43 11.96 0.65 2995 +2997 4 -9.56 88.31 12.41 0.65 2996 +2998 4 -9.55 87.99 12.53 0.65 2997 +2999 4 -9.83 87.06 12.69 0.65 2998 +3000 4 -9.81 86.44 12.78 0.65 2999 +3001 4 -9.77 86.09 13.2 0.65 3000 +3002 4 -9.87 85.27 13.65 0.65 3001 +3003 4 -9.68 84.79 13.89 0.65 3002 +3004 4 -9.21 84.32 13.95 0.65 3003 +3005 4 -8.85 83.96 14.57 0.65 3004 +3006 4 -8.62 83.72 15.35 0.65 3005 +3007 4 -8.21 83.31 16.42 0.65 3006 +3008 4 -7.9 82.7 16.39 0.65 3007 +3009 4 -7.85 82.04 16.93 0.65 3008 +3010 4 -7.79 81.68 17.42 0.65 3009 +3011 4 -7.91 80.57 17.78 0.435 3010 +3012 4 -7.99 80.05 18.49 0.435 3011 +3013 4 -7.97 79.73 18.53 0.435 3012 +3014 4 -8.26 79.11 18.65 0.435 3013 +3015 4 -8.4 78.63 18.84 0.435 3014 +3016 4 -8.68 78.0 18.96 0.435 3015 diff --git a/examples/Fig5_CellMultiscale/cells/ca1_minimal.p b/examples/Fig5_CellMultiscale/cells/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/Fig5_CellMultiscale/cells/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/Fig5_CellMultiscale/cells/h10.CNG.swc b/examples/Fig5_CellMultiscale/cells/h10.CNG.swc new file mode 100644 index 0000000..554dbe2 --- /dev/null +++ b/examples/Fig5_CellMultiscale/cells/h10.CNG.swc @@ -0,0 +1,226 @@ +# Original file h10.swc edited by Duncan Donohue using StdSwc version 1.21 on 9/6/05. +# Irregularities and fixes documented in h10.swc.std. See StdSwc1.21.doc for more information. +# +#---------------------------------------------------------------------- +# This file was obtained using ban2swc.pl on file h10.txt +# (Jose Ambros-Ingerson, jose@kiubo.net): Sun Oct 19 18:38:56 2003 +#---------------------------------------------------------------------- +# ORIGINAL_SOURCE +# CREATURE +# REGION +# FIELD/LAYER +# TYPE +# CONTRIBUTOR +# REFERENCE +# RAW +# EXTRAS +# SOMA_AREA +# SHRINKAGE_CORRECTION +# VERSION_NUMBER +# VERSION_DATE +# ********************************************* +# SCALE 1.0 1.0 1.0 + 1 1 0. 23. 0. 3.35 -1 + 2 1 0. 18. 0. 2.5 1 + 3 1 0. 0. 0. 1.058 2 + 4 3 -4.157 -2.778 0. 0.6 3 + 5 3 -5.925 -3.510 -4.62 0.55 4 + 6 3 -15.47 -7.464 -29.560 0.4 5 + 7 3 -23.89 -9.139 -72.72 0.4 6 + 8 3 -24.39 -13.43 -83.51 0.350 6 + 9 3 -9.814 -5.121 -14.780 0.5 5 + 10 3 -15.81 -6.313 -23.93 0.5 9 + 11 3 -65.94 -16.29 -100.4 0.4 10 + 12 3 -54.5 -14.01 -82.960 0.4 10 + 13 3 -17.2 -10.06 -28.09 0.4 9 + 14 3 -78.64 -51.11 -138.70 0.4 13 + 15 3 -41.69 -26.42 -72.15 0.350 13 + 16 3 -10.11 -8.731 -20.330 0.45 4 + 17 3 -14.44 -13.06 -35.11 0.350 16 + 18 3 -26.61 -21.19 -108.7 0.3 17 + 19 3 -24.2 -27.66 -123.4 0.3 17 + 20 3 -32.3 -30.92 -96.08 0.350 16 + 21 3 -45.7 -39.87 -120.2 0.3 20 + 22 3 -56.99 -67.88 -162.60 0.350 20 + 23 3 -8.889 -13.3 0. 0.65 3 + 24 3 -11.39 -15.8 -3.54 0.55 23 + 25 3 -19.39 -23.8 -14.85 0.5 24 + 26 3 -21.7 -25.35 -19.01 0.45 25 + 27 3 -33.25 -33.06 -39.79 0.4 26 + 28 3 -64.36 -45.95 -121.10 0.350 27 + 29 3 -53.54 -53.36 -109.10 0.350 27 + 30 3 -26.32 -28.43 -27.32 0.4 26 + 31 3 -68.78 -46.02 -73.28 0.3 30 + 32 3 -71.820 -73.93 -91.67 0.350 30 + 33 3 -59.82 -84.320 -123.80 0.350 25 + 34 3 -84.52 -121.30 -190.3 0.25 33 + 35 3 -34.39 -38.80 -36.06 0.350 24 + 36 3 -96.61 -80.38 -86.06 0.3 35 + 37 3 -93.98 -128. -107.7 0.3 35 + 38 3 -15.65 -29.64 -17.68 0.5 23 + 39 3 -17.01 -32.9 -21.21 0.5 38 + 40 3 -21.95 -40.29 -34.52 0.4 39 + 41 3 -50.03 -82.33 -110.2 0.3 40 + 42 3 -49.730 -81.87 -109.30 0.350 40 + 43 3 -22.75 -61.78 -65.28 0.3 39 + 44 3 -37.30 -81.9 -74.25 0.3 38 + 45 3 -2.146 -10.790 0. 0.75 3 + 46 3 -24.77 -65.42 -24.490 0.350 45 + 47 3 -54.47 -137.1 -56.64 0.350 46 + 48 3 -55.18 -138.8 -57.4 0.350 46 + 49 3 -2.146 -20.95 -4.21 0.6 45 + 50 3 -2.146 -35.730 -10.33 0.45 49 + 51 3 -22.75 -139.3 -80.89 0.3 50 + 52 3 29. -192.3 -117. 0.350 50 + 53 3 -2.146 -25.57 -6.12 0.55 49 + 54 3 -3.103 -30.38 -7.10 0.5 53 + 55 3 -49.410 -263.2 -54.31 0.350 54 + 56 3 -22.05 -125.60 -26.41 0.3 54 + 57 3 16.990 -121.80 -25.63 0.3 53 + 58 3 2.146 -10.790 0. 0.65 3 + 59 3 2.146 -20.79 0. 0.4 58 + 60 3 2.146 -235.8 0. 0.350 59 + 61 3 2.146 -250.8 0. 0.25 60 + 62 3 4.059 -15.41 0. 0.4 58 + 63 3 8.269 -25.57 0. 0.350 62 + 64 3 35.63 -163.10 -27.90 0.4 63 + 65 3 45.32 -81.02 -13.27 0.3 63 + 66 3 20.13 -54.21 0. 0.350 62 + 67 3 35.25 -130.20 15.41 0.3 66 + 68 3 78.98 -142.3 21.07 0.350 66 + 69 3 8.889 -13.3 0. 0.6 3 + 70 3 16.67 -32.08 8.42 0.5 69 + 71 3 24.45 -50.86 16.84 0.45 70 + 72 3 49.32 -175.9 42.2 0.350 71 + 73 3 84.38 -140.6 38.30 0.350 71 + 74 3 42.45 -141.4 78.51 0.4 70 + 75 3 48.94 -174. 100.7 0.3 74 + 76 3 16.080 -20.490 4.21 0.4 69 + 77 3 99.04 -103.5 52.81 0.3 76 + 78 3 41.550 -45.97 19.13 0.3 76 + 79 3 63.71 -109.60 64.06 0.3 78 + 80 3 75.26 -126.9 77.95 0.2 79 + 81 3 18.29 -12.22 0. 0.6 3 + 82 3 20.79 -14.72 3.54 0.55 81 + 83 3 26.29 -20.22 11.31 0.5 82 + 84 3 101.10 -132.20 101.30 0.350 83 + 85 3 97.5 -67.8 68.54 0.3 83 + 86 3 47.29 -41.22 41.01 0.25 82 + 87 3 21.56 -13.58 3.54 0.5 81 + 88 3 28.09 -16.28 10.61 0.45 87 + 89 3 122.10 -79.11 86.16 0.3 88 + 90 3 85.99 -27.8 50.050 0.3 88 + 91 3 43.12 -22.51 26.87 0.4 87 + 92 3 75.45 -44.11 85.070 0.350 91 + 93 3 97.61 -33.34 110. 0.350 91 + 94 4 0. 41. 0. 2.550 1 + 95 4 0. 127. 0. 0.3 94 + 96 4 5.932 70.820 -6.05 2.25 94 + 97 4 18.37 133.3 -18.73 1.25 96 + 98 4 26.63 153.3 -23.02 0.6 97 + 99 4 56.65 225.8 -38.63 0.3 98 + 100 4 29.63 160.5 -24.580 0.6 98 + 101 4 91.850 253.70 -24.580 0.350 100 + 102 4 63.97 333.1 -24.580 0.350 100 + 103 4 18.37 142.20 -20.48 1.25 97 + 104 4 18.37 145.1 -21.07 1.25 103 + 105 4 28.28 195. -42.12 0.45 104 + 106 4 33.69 222.10 -53.6 0.350 105 + 107 4 39.1 249.3 -65.08 0.25 106 + 108 4 17.47 149.6 -22.98 1.25 104 + 109 4 4.851 213.10 -49.77 0.5 108 + 110 4 -10.07 288.1 -100.9 0.350 109 + 111 4 15.85 157.8 -26.43 1.25 108 + 112 4 15.85 182.3 -31.3 0.5 111 + 113 4 15.85 235.3 -41.84 0.350 112 + 114 4 15.85 272.2 -57.15 0.3 113 + 115 4 15.85 195.10 -33.84 0.350 112 + 116 4 30.09 266.7 -33.84 0.3 115 + 117 4 0.2380 273.5 -33.84 0.3 115 + 118 4 11.72 167.8 -28.57 1.25 111 + 119 4 3.46 187.70 -32.87 1.25 118 + 120 4 -0.506 207.60 -41.28 1.25 119 + 121 4 -3.39 222.10 -47.410 1.25 120 + 122 4 -3.39 223.8 -48.52 1.25 121 + 123 4 -3.39 247.10 -64.070 0.45 122 + 124 4 1.439 271.40 -88.820 0.3 123 + 125 4 -16.080 310.90 -129.1 0.350 123 + 126 4 -3.39 248.70 -65.19 1.25 122 + 127 4 -3.209 249.70 -65.570 1.25 126 + 128 4 1.297 272.3 -75.14 0.5 127 + 129 4 12. 326.1 -111.80 0.350 128 + 130 4 -0.506 263.2 -71.31 1.25 127 + 131 4 0.2450 265.1 -71.7 0.6 130 + 132 4 3.623 273.2 -73.45 0.55 131 + 133 4 46.230 337. -105.2 0.3 132 + 134 4 22.55 368.40 -113.60 0.350 132 + 135 4 19.01 310.40 -81.45 0.45 131 + 136 4 42.74 367.6 -81.45 0.350 135 + 137 4 -0.506 280.90 -74.820 1.25 130 + 138 4 -0.506 284.8 -75.60 0.850 137 + 139 4 14.450 360. -107.4 0.4 138 + 140 4 18.06 378.1 -115. 0.3 139 + 141 4 -14.02 352.8 -104.30 0.850 138 + 142 4 -20.330 384.5 -117.7 0.70 141 + 143 4 -20.330 441.8 -141.4 0.70 142 + 144 4 -20.330 494.40 -163.20 0.45 143 + 145 4 -20.330 544.30 -196.60 0.350 144 + 146 4 -20.330 582.6 -222.10 0.3 145 + 147 4 -20.330 622.5 -248.8 0.3 145 + 148 4 -20.330 462.1 -149.8 0.6 143 + 149 4 -7.321 527.5 -163.10 0.45 148 + 150 4 -1.389 557.30 -169.20 0.350 149 + 151 4 21.51 612.6 -181.10 0.3 150 + 152 4 -1.389 630.90 -183.8 0.25 150 + 153 4 -36.6 543.9 -166.4 0.6 148 + 154 4 -46.36 592.9 -176.4 0.350 153 + 155 4 -46.36 669.6 -208.10 0.25 154 + 156 4 -74.99 662.1 -207.4 0.25 154 + 157 4 -44.44 583.30 -174.4 0.5 153 + 158 4 -44.44 665.30 -174.4 0.350 157 + 159 4 -44.44 705.30 -174.4 0.25 158 + 160 4 -87.3 686.80 -174.4 0.350 157 + 161 4 -121.7 769.90 -174.4 0.25 160 + 162 4 -32.71 414.40 -131.1 0.45 142 + 163 4 -85.74 542.4 -188.5 0.350 162 + 164 4 -120. 625.2 -225.60 0.3 163 + 165 4 -137.4 667. -244.4 0.25 164 + 166 4 -132.4 655.1 -239. 0.2 164 + 167 4 -0.506 290.7 -76.77 0.9 137 + 168 4 6.713 327. -76.77 0.8 167 + 169 4 8.664 336.8 -76.77 0.6 168 + 170 4 12.49 356. -80.67 0.5 169 + 171 4 21.48 401.3 -89.84 0.350 170 + 172 4 13.74 362.3 -76.77 0.5 168 + 173 4 23.12 385. -71.89 0.25 172 + 174 4 13.74 396.6 -69.94 0.350 172 + 175 4 -20.6 391.70 -76.77 0.350 167 + 176 4 -15.83 311.3 -91.59 0.4 126 + 177 4 -28.44 374.70 -118.4 0.3 176 + 178 4 -14.84 249.8 -67.41 0.45 121 + 179 4 -37.12 303.6 -106.30 0.350 178 + 180 4 -55.25 347.3 -138. 0.3 178 + 181 4 -3.209 221.20 -47.02 0.45 120 + 182 4 -3.209 356.6 -73.95 0.350 181 + 183 4 -31.36 289.2 -61.660 0.350 181 + 184 4 -11.94 210.70 -44.35 0.6 119 + 185 4 -36.06 246.9 -62.33 0.5 184 + 186 4 -67.18 322. -96.01 0.3 185 + 187 4 -81.14 291.90 -88.74 0.3 185 + 188 4 1.208 193.10 -34.04 0.4 118 + 189 4 -21.42 306.90 -34.04 0.3 188 + 190 4 -77.13 310.40 -34.04 0.350 188 + 191 4 18.37 165.70 -25.17 0.5 103 + 192 4 25.78 203. -25.17 0.350 191 + 193 4 56.22 356. -25.17 0.3 192 + 194 4 50.36 326.6 -25.17 0.3 192 + 195 4 16.22 176.5 -25.17 0.350 191 + 196 4 -10.31 309.90 -25.17 0.350 195 + 197 4 2.957 243.20 -25.17 0.3 195 + 198 4 -2.105 51.58 -2.15 0.350 94 + 199 4 -20.09 142. -20.48 0.350 198 + 200 4 -3.061 56.39 -3.12 0.3 198 + 201 4 -3.061 76.39 -3.12 0.3 200 + 202 4 -3.061 142.4 -3.12 0.3 201 + 203 4 -3.061 167.4 -3.12 0.3 201 + 204 4 -32.910 128.5 -3.12 0.3 200 diff --git a/examples/Fig5_CellMultiscale/chans/CA1.morph.xml b/examples/Fig5_CellMultiscale/chans/CA1.morph.xml new file mode 100644 index 0000000..2a3815b --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/CA1.morph.xml @@ -0,0 +1,12673 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelViewParmSubset_5 + + + + ModelViewParmSubset_5 + + + + + + soma_group + + + + soma_group + + + + + + ModelViewParmSubset_7 + + + + ModelViewParmSubset_7 + + + + + + axon_group + soma_group + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + ModelViewParmSubset_2 + + + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + all + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + + + dendrite_group + + + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/Ca.xml b/examples/Fig5_CellMultiscale/chans/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig5_CellMultiscale/chans/CaConc.xml b/examples/Fig5_CellMultiscale/chans/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml b/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml new file mode 100644 index 0000000..58cc74e --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml @@ -0,0 +1,32 @@ + + + + ChannelML file describing a single synaptic mechanism + + + + + + + Simple example of a synaptic mechanism, which consists of a postsynaptic conductance which changes as + double exponential function of time. Mappings exist for NEURON and GENESIS. + + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Receptor properties + http://senselab.med.yale.edu/senselab/NeuronDB/receptors2.asp + + + + + + + + diff --git a/examples/Fig5_CellMultiscale/chans/Generated.net.xml b/examples/Fig5_CellMultiscale/chans/Generated.net.xml new file mode 100644 index 0000000..d2f3f34 --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/Generated.net.xml @@ -0,0 +1,59 @@ + + + + + +Network structure (NeuroML 1.x) for project: CA1PyramidalCell saved with neuroConstruct v1.7.1 on: 11:29:49, 18-Jul-14 + +Cell Group: CA1_CG contains 1 cells + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/Glu.xml b/examples/Fig5_CellMultiscale/chans/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/Fig5_CellMultiscale/chans/HChannel.xml b/examples/Fig5_CellMultiscale/chans/HChannel.xml new file mode 100644 index 0000000..c1c91b4 --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/HChannel.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/Fig5_CellMultiscale/chans/NMDA.xml b/examples/Fig5_CellMultiscale/chans/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/Fig5_CellMultiscale/chans/hd.xml b/examples/Fig5_CellMultiscale/chans/hd.xml new file mode 100644 index 0000000..a882baa --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/kad.xml b/examples/Fig5_CellMultiscale/chans/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/kap.xml b/examples/Fig5_CellMultiscale/chans/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/kdr.xml b/examples/Fig5_CellMultiscale/chans/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/na3.xml b/examples/Fig5_CellMultiscale/chans/na3.xml new file mode 100644 index 0000000..94e9713 --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chans/nax.xml b/examples/Fig5_CellMultiscale/chans/nax.xml new file mode 100644 index 0000000..1225d6a --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/Fig5_CellMultiscale/chans/pas.xml b/examples/Fig5_CellMultiscale/chans/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/Fig5_CellMultiscale/chans/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/Fig5_CellMultiscale/chem/psd53.g b/examples/Fig5_CellMultiscale/chem/psd53.g new file mode 100644 index 0000000..e120a6a --- /dev/null +++ b/examples/Fig5_CellMultiscale/chem/psd53.g @@ -0,0 +1,477 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Jun 5 09:12:59 2015 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca/notes 0 "" +call /kinetics/Bulk/Ca/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ + 1 black -19 -25 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." \ +"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ +"psd. Will use diffusion instead." \ +"05 June 2015. psd53.g updated further to use the same name (Ca)" \ +"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ +"" +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A +addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/Fig6_NetMultiscale/Fig6A.py b/examples/Fig6_NetMultiscale/Fig6A.py new file mode 100644 index 0000000..752fa89 --- /dev/null +++ b/examples/Fig6_NetMultiscale/Fig6A.py @@ -0,0 +1,503 @@ +#!/usr/bin/env python +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. +This variant has 2500 LIF neurons + +Upi Bhalla, Nov 2014: Appended single neuron model. +This script generates Panel A from Figure 6. It is a dummy for showing +the layout, and loads in about 20 seconds. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose +from PyQt4 import Qt, QtCore, QtGui +from numpy import random as nprand +from moose.neuroml.NeuroML import NeuroML +import sys +sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) +import rdesigneur as rd +import moogli +cellname = "./cells_channels/CA1_nochans.morph.xml" +#cellname = "./ca1_minimal.p" +fname = "fig6bcde" + +############################################# +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +PI = 3.14159265358979 +useGssa = True +combineSegments = False + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 10e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +N = 2500 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30 #s # Simulation time +interTetInterval = 5.0 # sec +updateDt = 0.2 #s: time to update live display +dt = 1e-3 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM + +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Here we set up a single neuron to fit in this network +############################################# + +diffDt = 0.005 +chemDt = 0.005 +ePlotDt = 0.5e-3 +cPlotDt = 0.005 + +############################################# +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ [cellname, 'elec'] ] + chanProto = [ + ['./cells_channels/hd.xml'], \ + ['./cells_channels/kap.xml'], \ + ['./cells_channels/kad.xml'], \ + ['./cells_channels/kdr.xml'], \ + ['./cells_channels/na3.xml'], \ + ['./cells_channels/nax.xml'], \ + ['./cells_channels/CaConc.xml'], \ + ['./cells_channels/Ca.xml'], \ + ['./cells_channels/NMDA.xml'], \ + ['./cells_channels/Glu.xml'], \ + ['./cells_channels/GABA.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "100" ], \ + ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ + ["nax", "#axon#", "Gbar", "1250" ], \ + ["nax", "#soma#", "Gbar", "100" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#,#user#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ + ["kad", "#dend#,#apical#,#user#", "Gbar", \ + "300*H(p*1e6-100)*(1+p*1e4)" ], \ + ["Ca", "#soma#", "Gbar", "10e-3" ], \ + ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ + ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ + ] + spineDistrib = [ \ + ["spine", '#apical#,#dend#,#user#', "spineSpacing", "6.2e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + ) + + return rdes + + +############################################# + +def makeDetailedNeuron(): + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + #bcs.addAllPlots() + + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(range(self.N),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self, fig): + """ plots the spike raster for the simulated net""" + plt.figure(1) + + ax = plt.subplot(221) + cleanAx( ax, 'B' ) + plt.ylabel( 'Neuron #', fontsize = 16 ) + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.', markersize = 2, label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.', markersize = 2, label=label) + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Make plots +############################################# + +def interlude( view ): + view.yaw( 0.005 ) + +def create_viewer(rdes): + # print "Creating 3D Viewer" + network = moogli.extensions.moose.read(path=rdes.elecid.path, + vertices=10) + # print "Read Network" + network.set("color", moogli.colors.LIGHT_BLUE) + network.groups["spine"].set("color", moogli.colors.ORANGE) + # for dendrite in dendrites.values(): + # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) + + [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in + network.groups["spine"].groups["head"].shapes.values()] + # print "Creating LIFS" + soma = network.shapes[rdes.soma.path] + + center = soma.get_center() + row_axis = moogli.geometry.X_AXIS + row_count = 50 + row_separation = soma.get_base_radius() * 5.0 + col_axis = moogli.geometry.Z_AXIS + col_count = 50 + col_separation = row_separation + radii = soma.get_base_radius() + colors = moogli.colors.GREEN + vertices = 20 + lifs = moogli.shapes.Sphere.grid("LIF", + center, + row_axis, + row_count, + row_separation, + col_axis, + col_count, + col_separation, + radii, + colors, + vertices) + # print "Created LIFS" + # morphology.create_group("dendrites", dendrites, 0.0, 300.0, colormap) + # print "Creating Viewer" + viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) + # print "Created Viewer" + viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(lifs.shapes.values()) + # print "Attached Shapes" + view = moogli.View("view", interlude=interlude) + viewer.attach_view(view) + # print "Attached View" + viewer.showMaximized() + viewer.start() + view.zoom( 0.4 ) + view.pitch( PI/2.5 ) + return viewer + +if __name__=='__main__': + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print net + moose.le( '/' ) + moose.le( '/network' ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer(rdes) + app.exec_() diff --git a/examples/Fig6_NetMultiscale/Fig6BCDE.py b/examples/Fig6_NetMultiscale/Fig6BCDE.py new file mode 100644 index 0000000..066e68d --- /dev/null +++ b/examples/Fig6_NetMultiscale/Fig6BCDE.py @@ -0,0 +1,940 @@ +#!/usr/bin/env python +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. +This variant has 2500 LIF neurons + +Upi Bhalla, Nov 2014: Appended single neuron model. +This script generates the panels in Figure 6. It takes a long time, +about 65 minutes to run 30 seconds of simulation time. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose +from PyQt4 import Qt, QtCore, QtGui +from numpy import random as nprand +from moose.neuroml.NeuroML import NeuroML +import sys +sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) +import rdesigneur as rd +import moogli +cellname = "./cells_channels/CA1_nochans.morph.xml" +#cellname = "./ca1_minimal.p" +fname = "fig6bcde" + +############################################# +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +PI = 3.14159265358979 +useGssa = True +combineSegments = False + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 10e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +N = 2500 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30 #s # Simulation time +interTetInterval = 5.0 # sec +updateDt = 0.2 #s: time to update live display +dt = 1e-3 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM + +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Here we set up a single neuron to fit in this network +############################################# + +diffDt = 0.005 +chemDt = 0.005 +ePlotDt = 0.5e-3 +cPlotDt = 0.005 + +############################################# +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ [cellname, 'elec'] ] + chanProto = [ + ['./cells_channels/hd.xml'], \ + ['./cells_channels/kap.xml'], \ + ['./cells_channels/kad.xml'], \ + ['./cells_channels/kdr.xml'], \ + ['./cells_channels/na3.xml'], \ + ['./cells_channels/nax.xml'], \ + ['./cells_channels/CaConc.xml'], \ + ['./cells_channels/Ca.xml'], \ + ['./cells_channels/NMDA.xml'], \ + ['./cells_channels/Glu.xml'], \ + ['./cells_channels/GABA.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [ \ + [ 'psd53.g', 'ltpModel'] \ + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "100" ], \ + ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ + ["nax", "#axon#", "Gbar", "1250" ], \ + ["nax", "#soma#", "Gbar", "100" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#,#user#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ + ["kad", "#dend#,#apical#,#user#", "Gbar", \ + "300*H(p*1e6-100)*(1+p*1e4)" ], \ + ["Ca", "#soma#", "Gbar", "10e-3" ], \ + ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ + ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ + ] + spineDistrib = [ \ + ["spine", '#apical#,#dend#,#user#', "spineSpacing", "6.2e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [ \ + [ "ltpModel", "#apical#,#dend#,#user#", "install", "1" ] \ + ] + + ''' + ''' + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'modulation', 0.5, 0.002 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + + return rdes + + +############################################# + +def makeDetailedNeuron(): + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + #bcs.addAllPlots() + +def connectDetailedNeuron(): + excProb = 0.00042 + excSeed = 1234 + inhProb = 0.00013 + inhSeed = 4567 + numExc = 0 + numNMDA = 0 + numInh = 0 + delayMax = 0.010 + delayMin = 0.002 + excWeightMax = 360 + nmdaWeightMax = 1 + inhWeightMax = 100 + # Note we use the same seed for all 3 exc connections, to make sure + # they are all equivalent. + seed = excSeed + totGluWt = 0.0 + totNMDAWt = 0.0 + totGABAWt = 0.0 + for x in moose.wildcardFind( '/model/elec/#/glu/##[ISA=Synapse]' ): + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numExc += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '+', + totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = excSeed + for x in moose.wildcardFind( '/model/elec/#/NMDA/##[ISA=Synapse]' ): + #print " x = ", x + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numNMDA += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '*', + totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = inhSeed + for x in moose.wildcardFind( '/model/elec/#/GABA/##[ISA=Synapse]' ): + #print x + inh = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + inh.setRandomConnectivity( inhProb, seed ) + seed = seed + 1 + if inh.numEntries > 0: + numInh += inh.numEntries + x.vec.delay = delayMin + nprand.rand( inh.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '-', + totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + print 'connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh + print 'connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + # Build in the LTP stimulus + offset = Iinject * 0.5 + injBaseline = np.repeat( self.Iinject, self.T ) + start = np.ceil( simtime / (interTetInterval * dt) ) + for i in range( 3 ): + end = start + np.ceil( 0.5 / dt ) + injBaseline[ start:end ] += offset + start = start + np.ceil( interTetInterval / dt ) + + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = injBaseline + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=self.T ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + + + self.noiseTables.vec[i].stopTime = self.simtime + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(range(self.N),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self, fig): + """ plots the spike raster for the simulated net""" + plt.figure(1) + + ax = plt.subplot(221) + cleanAx( ax, 'B' ) + plt.ylabel( 'Neuron #', fontsize = 16 ) + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.', markersize = 2, label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.', markersize = 2, label=label) + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + self.recN = 5 # number of neurons for which to record weights and Ca + if CaPlasticity: + ## make tables to store weights of recN exc synapses + ## for each post-synaptic exc neuron + self.weights = moose.Table( '/plotWeights', self.excC*self.recN ) + for i in range(self.recN): # range(self.N) is too large + for j in range(self.excC): + moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(self.NmaxExc),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + if np.random.uniform()<0.05: + synij.weight = 1.0 + else: + synij.weight = self.J # no weightScale here, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(self.NmaxExc),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + timeseries = net.trange + ## individual neuron firing rates + fig3 = plt.figure() + plt.subplot(221) + num_to_plot = 10 + #rates = [] + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" exc nrns") + plt.ylabel("Hz") + plt.ylim(0,100) + plt.subplot(222) + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" inh nrns") + plt.ylim(0,100) + + ## population firing rates + plt.subplot(223) + rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ + /float(net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Exc population rate") + plt.ylabel("Hz") + plt.xlabel("Time (s)") + plt.subplot(224) + rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ + /float(net.N-net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Inh population rate") + plt.xlabel("Time (s)") + + fig3.tight_layout() + +def makeScatterPlot( m, n, v ): + fig4 = plt.figure() + + dx = 100e-6 + dy = 100e-6 + x = np.arange( m ) * dx + x = np.tile( x, n ) + y = np.arange( n ) * dy + y = y.repeat( m ) + #z = np.arange( m * n ) + #ret = plt.scatter( x, y, s = 64, c = v, vmin = -0.065, vmax = -0.055 ) + cmap = plt.get_cmap('afmhot') + ret = plt.scatter( x, y, s = 64, c = v, vmin = 0.5, vmax = 1.0, cmap = cmap ) + plt.xlim( -dx, dx * m ) + plt.ylim( -dy, dy * n ) + return fig4, ret + +def buildNeuronPlots( rdes ): + if not moose.exists( '/graphs' ): + graphs = moose.Neutral( '/graphs' ) + vtab = moose.Table( '/graphs/vtab' ) + catab = moose.Table( '/graphs/catab' ) + moose.connect( vtab, "requestOut", rdes.soma, "getVm" ) + caSoma = moose.element( rdes.soma.path + "/Ca_conc" ) + moose.connect( catab, "requestOut", caSoma, "getCa" ) + elist = moose.wildcardFind( '/model/chem/psd/tot_PSD_R[]' ) + rtab = moose.Table2( '/graphs/rtab', len( elist ) ).vec + for i in zip( elist, rtab ): + moose.connect( i[1], "requestOut", i[0], "getN" ) + elist = moose.wildcardFind( '/model/chem/spine/Ca[]' ) + pcatab = moose.Table2( '/graphs/pcatab', len( elist ) ).vec + for i in zip( elist, pcatab ): + moose.connect( i[1], "requestOut", i[0], "getConc" ) + +def cleanAx( ax, label, showXlabel = False ): + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + ax.tick_params( direction = 'out' ) + if not showXlabel: + ax.set_xticklabels( [] ) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + ax.text( -0.18, 1.0, label, fontsize = 18, weight = 'bold', transform=ax.transAxes ) + + +def saveNeuronPlots( fig, rdes ): + #fig = plt.figure( figsize=(12, 10), facecolor='white' ) + #fig.subplots_adjust( left = 0.18 ) + plt.figure(1) + + ax = plt.subplot(222) + cleanAx( ax, 'C' ) + plt.ylabel( 'Vm (mV)', fontsize = 16 ) + vtab = moose.element( '/graphs/vtab' ) + t = np.arange( 0, len( vtab.vector ), 1 ) * vtab.dt + plt.plot( t, vtab.vector * 1000, label="Vm" ) + #plt.legend() + + ax = plt.subplot(223) + cleanAx( ax, 'D', showXlabel = True ) + pcatab = list( moose.vec( '/graphs/pcatab' ) )[0::50] + t = np.arange( 0, len( pcatab[0].vector ), 1 ) * pcatab[0].dt + for i in pcatab: + plt.plot( t, i.vector * 1000 ) + plt.ylabel( '[Ca] (uM)', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + + ax = plt.subplot(224) + cleanAx( ax, 'E', showXlabel = True ) + rtab = list( moose.vec( '/graphs/rtab' ) )[0::50] + t = np.arange( 0, len( rtab[0].vector ), 1 ) * rtab[0].dt + for i in rtab: + plt.plot( t, i.vector ) + plt.ylabel( '# of inserted GluRs', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + ''' + for i in moose.wildcardFind( '/graphs/#' ): + i.xplot( fname + '.xplot', i.name ) + ''' + +def create_viewer(rdes): + # print "Creating 3D Viewer" + network = moogli.extensions.moose.read(path=rdes.elecid.path, + vertices=10) + # print "Read Network" + network.set("color", moogli.colors.LIGHT_BLUE) + network.groups["spine"].set("color", moogli.colors.ORANGE) + # for dendrite in dendrites.values(): + # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) + + [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in + network.groups["spine"].groups["head"].shapes.values()] + # print "Creating LIFS" + soma = network.shapes[rdes.soma.path] + + center = soma.get_center() + row_axis = moogli.geometry.X_AXIS + row_count = 25 + row_separation = soma.get_base_radius() * 5.0 + col_axis = moogli.geometry.Z_AXIS + col_count = 25 + col_separation = row_separation + radii = soma.get_base_radius() + colors = moogli.colors.GREEN + vertices = 20 + lifs = moogli.shapes.Sphere.grid("LIF", + center, + row_axis, + row_count, + row_separation, + col_axis, + col_count, + col_separation, + radii, + colors, + vertices) + # print "Created LIFS" + # morphology.create_group("dendrites", dendrites, 0.0, 300.0, colormap) + # print "Creating Viewer" + viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) + # print "Created Viewer" + viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(lifs.shapes.values()) + # print "Attached Shapes" + view = moogli.View("view") + viewer.attach_view(view) + # print "Attached View" + return viewer + +if __name__=='__main__': + plt.ion() + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print net + moose.le( '/' ) + moose.le( '/network' ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + buildNeuronPlots( rdes ) + connectDetailedNeuron() + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer(rdes) + viewer.showMaximized() + viewer.start() + app.exec_() + + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + plotif = True + net.simulate(simtime,plotif=plotif,\ + v0=np.random.uniform(el-20e-3,vt,size=N)) + + # moose simulation + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/plotSpikes', 'process' ) + moose.useClock( 3, '/plotVms', 'process' ) + if CaPlasticity: + moose.useClock( 3, '/plotWeights', 'process' ) + moose.useClock( 3, '/plotCa', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + #moose.setClock( moose.element( '/cell/hsolve' ), dt ) + moose.setClock( 9, dt ) + + if plotif: + Vm = net.network.vec.Vm + fig = plt.figure( 1, figsize=(12, 10), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + fig2, ret = makeScatterPlot( 50, 50, Vm ) + #cellFig = bcs.neuronPlot( '/model/elec', '/model/chem/psd/tot_PSD_R[]' ) + + moose.reinit() + t1 = time.time() + print 'starting' + #moose.start(simtime) + for currTime in np.arange( 0, simtime, updateDt ): + moose.start(updateDt) + lastt = net.network.vec.lastEventTime + lastt = np.exp( 2 * (lastt - currTime ) ) + print currTime, time.time() - t1 + ret.set_array( lastt ) + fig2.canvas.draw() + + print 'runtime, t = ', time.time() - t1 + + if plotif: + net._plot( fig ) + + extra_plots(net) + #bcs.displayCellPlots( plt ) + saveNeuronPlots( fig, rdes ) + plt.show() + plt.savefig( fname + '.svg', bbox_inches='tight') + print( "Hit 'enter' to exit" ) + raw_input() diff --git a/examples/Fig6_NetMultiscale/ReducedModel.py b/examples/Fig6_NetMultiscale/ReducedModel.py new file mode 100644 index 0000000..6b0ae96 --- /dev/null +++ b/examples/Fig6_NetMultiscale/ReducedModel.py @@ -0,0 +1,887 @@ +#!/usr/bin/env python +#/********************************************************************** +#** This program is part of 'MOOSE', the +#** Messaging Object Oriented Simulation Environment. +#** Copyright (C) 2003-2014 Upinder S. Bhalla. and NCBS +#** It is made available under the terms of the +#** GNU Lesser General Public License version 2.1 +#** See the file COPYING.LIB for the full notice. +#**********************************************************************/ + +''' +This LIF network with Ca plasticity is based on: +David Higgins, Michael Graupner, Nicolas Brunel + Memory Maintenance in Synapses with Calcium-Based + Plasticity in the Presence of Background Activity + PLOS Computational Biology, 2014. + +Implemented by: Aditya Gilra, NCBS, Bangalore, October, 2014. +This variant has 400 LIF neurons + +Upi Bhalla, Nov 2014: Appended single neuron model. + +This script is a reduced version of the model that generates the panels +in Figure 6. It takes just a couple of minutes to run 30 seconds of +simulation time. That is, 400 neurons, 1 detailed model with 36 +compartments plus 16 spines each having 2 compartments and 34 molecules, +and lots of synapses. +''' + +## import modules and functions to be used +import numpy as np +import matplotlib.pyplot as plt +import random +import time +import moose +from numpy import random as nprand +from moose.neuroml.NeuroML import NeuroML +import sys +sys.path.append( "/home/bhalla/moose/trunk/Demos/util" ) +import rdesigneur as rd +#cellname = "./cells_channels/CA1_nochans.morph.xml" +cellname = "./cells_channels/ca1_minimal.p" +fname = "reduced" + +############################################# +np.random.seed(100) # set seed for reproducibility of simulations +random.seed(100) # set seed for reproducibility of simulations +moose.seed(100) # set seed for reproducibility of simulations + +############################################# +# All parameters as per: +# David Higgins, Michael Graupner, Nicolas Brunel +# Memory Maintenance in Synapses with Calcium-Based +# Plasticity in the Presence of Background Activity +# PLOS Computational Biology, 2014. +############################################# + +############################################# +# Neuron model +############################################# + +# equation: dv/dt = (1/taum)*(-(v-el)) + inp +# with spike when v>vt, reset to vr + +PI = 3.14159265358979 +useGssa = True +combineSegments = False + +el = -70e-3 #V # Resting potential +vt = -50e-3 #V # Spiking threshold +Rm = 20e6 #Ohm # Only taum is needed, but LIF neuron accepts +Cm = 1e-9 #F # Rm and Cm and constructs taum=Rm*Cm +taum = Rm*Cm #s # Membrane time constant is 20 ms +vr = -60e-3 #V # Reset potential +Iinject = 10e-3/Rm # constant current injection into LIF neuron + # same as setting el=-70+15=-55 mV and inp=0 +noiseInj = True # inject noisy current into each cell: boolean +noiseInjSD = 5e-3/Rm #A # SD of noise added to 'current' + # SD*sqrt(taum) is used as noise current SD + +############################################# +# Network parameters: numbers +############################################# + +N = 400 # Total number of neurons +fexc = 0.8 # Fraction of exc neurons +NE = int(fexc*N) # Number of excitatory cells +NI = N-NE # Number of inhibitory cells + +############################################# +# Simulation parameters +############################################# + +simtime = 30 #s # Simulation time +interTetInterval = 5.0 # sec +updateDt = 0.2 #s: time to update live display +dt = 1e-3 #s # time step + +############################################# +# Network parameters: synapses (not for ExcInhNetBase) +############################################# + +## With each presynaptic spike in exc / inh neuron, +## J / -g*J is added to post-synaptic Vm -- delta-fn synapse +## Since LIF neuron used below is derived from Compartment class, +## conductance-based synapses (SynChan class) can also be used. + +C = 100 # Number of incoming connections on each neuron (exc or inh) +fC = fexc # fraction fC incoming connections are exc, rest inhibitory +J = 0.2e-3 #V # exc strength is J (in V as we add to voltage) + # Critical J is ~ 0.45e-3 V in paper for N = 10000, C = 1000 + # See what happens for J = 0.2e-3 V versus J = 0.8e-3 V +g = 4.0 # -gJ is the inh strength. For exc-inh balance g >~ f(1-f)=4 +syndelay = dt # synaptic delay: +refrT = 0.0 # s # absolute refractory time + +############################################# +# Ca Plasticity parameters: synapses (not for ExcInhNetBase) +############################################# + +CaPlasticity = True # set it True or False to turn on/off plasticity +tauCa = 22.6936e-3 # s # Ca decay time scale +tauSyn = 346.3615 # s # synaptic plasticity time scale +## in vitro values in Higgins et al 2014, faster plasticity +CaPre = 0.56175 # mM + +CaPost = 1.2964 # mM +## in vivo values in Higgins et al 2014, slower plasticity +#CaPre = 0.33705 # mM +#CaPost = 0.74378 # mM +delayD = 4.6098e-3 # s # CaPre is added to Ca after this delay + # proxy for rise-time of NMDA +thetaD = 1.0 # mM # depression threshold for Ca +thetaP = 1.3 # mM # potentiation threshold for Ca +gammaD = 331.909 # factor for depression term +gammaP = 725.085 # factor for potentiation term + +eqWeight = 0.5 # initial synaptic weight + # gammaP/(gammaP+gammaD) = eq weight w/o noise + # but see eqn (22), noiseSD also appears + +bistable = True # if bistable is True, use bistable potential for weights +noisy = True # use noisy weight updates given by noiseSD +noiseSD = 3.3501 # if noisy, use noiseSD (3.3501 from Higgins et al 2014) +#noiseSD = 0.1 # if bistable==False, use a smaller noise than in Higgins et al 2014 + +############################################# +# Here we set up a single neuron to fit in this network +############################################# + +diffDt = 0.005 +chemDt = 0.005 +ePlotDt = 0.5e-3 +cPlotDt = 0.005 + +############################################# +def buildRdesigneur(): + ################################################################## + # Here we define which prototypes are to be loaded in to the system. + # Each specification has the format + # source [localName] + # source can be any of + # filename.extension, # Identify type of file by extension, load it. + # function(), # func( name ) builds object of specified name + # file.py:function() , # load Python file, run function(name) in it. + # moose.Classname # Make obj moose.Classname, assign to name. + # path # Already loaded into library or on path. + # After loading the prototypes, there should be an object called 'name' + # in the library. + ################################################################## + cellProto = [ [cellname, 'elec'] ] + chanProto = [ + ['./cells_channels/hd.xml'], \ + ['./cells_channels/kap.xml'], \ + ['./cells_channels/kad.xml'], \ + ['./cells_channels/kdr.xml'], \ + ['./cells_channels/na3.xml'], \ + ['./cells_channels/nax.xml'], \ + ['./cells_channels/CaConc.xml'], \ + ['./cells_channels/Ca.xml'], \ + ['./cells_channels/NMDA.xml'], \ + ['./cells_channels/Glu.xml'], \ + ['./cells_channels/GABA.xml'] \ + ] + spineProto = [ \ + ['makeSpineProto()', 'spine' ] + ] + chemProto = [ \ + [ 'psd53.g', 'ltpModel'] \ + ] + + ################################################################## + # Here we define what goes where, and any parameters. Each distribution + # has the format + # protoName, path, field, expr, [field, expr]... + # where + # protoName identifies the prototype to be placed on the cell + # path is a MOOSE wildcard path specifying where to put things + # field is the field to assign. + # expr is a math expression to define field value. This uses the + # muParser. Built-in variables are p, g, L, len, dia. + # The muParser provides most math functions, and the Heaviside + # function H(x) = 1 for x > 0 is also provided. + ################################################################## + passiveDistrib = [ + [ ".", "#", "RM", "2.8", "CM", "0.01", "RA", "1.5", \ + "Em", "-58e-3", "initVm", "-65e-3" ], \ + [ ".", "#axon#", "RA", "0.5" ] \ + ] + chanDistrib = [ \ + ["hd", "#dend#,#apical#,#user#", "Gbar", "5e-2*(1+(p*3e4))" ], \ + ["kdr", "#", "Gbar", "100" ], \ + ["na3", "#soma#,#dend#,#apical#,#user#", "Gbar", "250" ], \ + ["nax", "#axon#", "Gbar", "1250" ], \ + ["nax", "#soma#", "Gbar", "100" ], \ + ["kap", "#axon#,#soma#", "Gbar", "300" ], \ + ["kap", "#dend#,#apical#,#user#", "Gbar", \ + "300*(H(100-p*1e6)) * (1+(p*1e4))" ], \ + ["Ca_conc", "#soma#,#dend#,#apical#,#user#", "tau", "0.0133" ], \ + ["kad", "#dend#,#apical#,#user#", "Gbar", \ + "300*H(p*1e6-100)*(1+p*1e4)" ], \ + ["Ca", "#soma#", "Gbar", "10e-3" ], \ + ["Ca", "#dend#,#apical#,#user#", "Gbar", "50e-3" ], \ + ["glu", "#dend#,#apical#", "Gbar", "50" ], \ + ["NMDA", "#dend#,#apical#", "Gbar", "20" ], \ + ["GABA", "#dend#,#apical#,#user#", "Gbar", "100*H(250e-6 - p)" ], \ + ] + spineDistrib = [ \ + ["spine", '#apical#', \ + "spineSpacing", "H(p-400e-6)*H(800e-6-p)*10e-6", \ + "spineSpacingDistrib", "1e-6", \ + "angle", "0", \ + "angleDistrib", str( 2*PI ), \ + "size", "1", \ + "sizeDistrib", "0.5" ] \ + ] + chemDistrib = [ \ + [ "ltpModel", "#apical#", "install", "1" ] \ + ] + + ''' + ''' + ###################################################################### + # Here we define the mappings across scales. Format: + # sourceObj sourceField destObj destField couplingExpr [wildcard][spatialExpn] + # where the coupling expression is anything a muParser can evaluate, + # using the input variable x. For example: 8e-5 + 300*x + # For now, let's use existing adaptors which take an offset and scale. + ###################################################################### + adaptorList = [ + [ 'Ca_conc', 'Ca', 'psd/Ca_input', 'concInit', 8e-5, 1 ], + [ 'Ca_conc', 'Ca', 'dend/Ca_dend_input', 'concInit', 8e-5, 1 ], + [ 'psd/tot_PSD_R', 'n', 'glu', 'modulation', 0.5, 0.002 ], + ] + + ###################################################################### + # Having defined everything, now to create the rdesigneur and proceed + # with creating the model. + ###################################################################### + + + rdes = rd.rdesigneur( + useGssa = useGssa, \ + combineSegments = combineSegments, \ + stealCellFromLibrary = True, \ + passiveDistrib = passiveDistrib, \ + spineDistrib = spineDistrib, \ + chanDistrib = chanDistrib, \ + chemDistrib = chemDistrib, \ + cellProto = cellProto, \ + spineProto = spineProto, \ + chanProto = chanProto, \ + chemProto = chemProto, \ + adaptorList = adaptorList + ) + + return rdes + + +############################################# + +def makeDetailedNeuron(): + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + #bcs.addAllPlots() + +def connectDetailedNeuron(): + excProb = 0.005 + excSeed = 1234 + inhProb = 0.005 + inhSeed = 4567 + numExc = 0 + numNMDA = 0 + numInh = 0 + delayMax = 0.010 + delayMin = 0.002 + excWeightMax = 5 + nmdaWeightMax = 2 + inhWeightMax = 50 + # Note we use the same seed for all 3 exc connections, to make sure + # they are all equivalent. + seed = excSeed + totGluWt = 0.0 + totNMDAWt = 0.0 + totGABAWt = 0.0 + for x in moose.wildcardFind( '/model/elec/#/glu/##[ISA=Synapse]' ): + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numExc += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '+', + totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = excSeed + for x in moose.wildcardFind( '/model/elec/#/NMDA/##[ISA=Synapse]' ): + #print " x = ", x + exc = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + exc.setRandomConnectivity( excProb, seed ) + seed = seed + 1 + if exc.numEntries > 0: + numNMDA += exc.numEntries + assert( exc.numEntries == x.numField ) + x.vec.delay = delayMin + nprand.rand( exc.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '*', + totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + seed = inhSeed + for x in moose.wildcardFind( '/model/elec/#/GABA/##[ISA=Synapse]' ): + #print x + inh = moose.connect( '/network', 'spikeOut', x, 'addSpike','sparse') + inh.setRandomConnectivity( inhProb, seed ) + seed = seed + 1 + if inh.numEntries > 0: + numInh += inh.numEntries + x.vec.delay = delayMin + nprand.rand( inh.numEntries ) * ( delayMax - delayMin ) + x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax + #x.parent.tick = 4 + x.parent.parent.tick = 4 + print '-', + totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar + + print 'connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh + print 'connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt + +############################################# +# Exc-Inh network base class without connections +############################################# + +class ExcInhNetBase: + """Simulates and plots LIF neurons (exc and inh separate). + Author: Aditya Gilra, NCBS, Bangalore, India, October 2014 + """ + + def __init__(self,N=N,fexc=fexc,el=el,vt=vt,Rm=Rm,Cm=Cm,vr=vr,\ + refrT=refrT,Iinject=Iinject): + """ Constructor of the class """ + + self.N = N # Total number of neurons + self.fexc = fexc # Fraction of exc neurons + self.NmaxExc = int(fexc*N) # max idx of exc neurons, rest inh + + self.el = el # Resting potential + self.vt = vt # Spiking threshold + self.taum = taum # Membrane time constant + self.vr = vr # Reset potential + self.refrT = refrT # Absolute refractory period + self.Rm = Rm # Membrane resistance + self.Cm = Cm # Membrane capacitance + self.Iinject = Iinject # constant input current + self.noiseInjSD = noiseInjSD # SD of injected noise + + self.simif = False # whether the simulation is complete + + self._setup_network() + + def __str__(self): + return "LIF network of %d neurons "\ + "having %d exc." % (self.N,self.NmaxExc) + + def _setup_network(self): + """Sets up the network (_init_network is enough)""" + self.network = moose.LIF( 'network', self.N ); + moose.le( '/network' ) + self.network.vec.Em = self.el + self.network.vec.thresh = self.vt + self.network.vec.refractoryPeriod = self.refrT + self.network.vec.Rm = self.Rm + self.network.vec.vReset = self.vr + self.network.vec.Cm = self.Cm + if not noiseInj: + self.network.vec.inject = self.Iinject + else: + ## inject a constant + noisy current + ## values are set in self.simulate() + self.noiseTables = moose.StimulusTable('noiseTables',self.N) + moose.connect( self.noiseTables, 'output', \ + self.network, 'setInject', 'OneToOne') + + def _init_network(self,v0=el): + """Initialises the network variables before simulation""" + self.network.vec.initVm = v0 + + def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): + + self.dt = dt + self.simtime = simtime + self.T = np.ceil(simtime/dt) + self.trange = np.arange(0,self.simtime,dt) + + # Build in the LTP stimulus + offset = Iinject * 0.5 + injBaseline = np.repeat( self.Iinject, self.T ) + start = np.ceil( simtime / (interTetInterval * dt) ) + for i in range( 3 ): + end = start + np.ceil( 0.5 / dt ) + injBaseline[ start:end ] += offset + start = start + np.ceil( interTetInterval / dt ) + + for i in range(self.N): + if noiseInj: + ## Gaussian white noise SD added every dt interval should be + ## divided by sqrt(dt), as the later numerical integration + ## will multiply it by dt. + ## See the Euler-Maruyama method, numerical integration in + ## http://www.scholarpedia.org/article/Stochastic_dynamical_systems + self.noiseTables.vec[i].vector = injBaseline + \ + np.random.normal( \ + scale=self.noiseInjSD*np.sqrt(self.Rm*self.Cm/self.dt), \ + size=self.T ) # scale = SD + self.noiseTables.vec[i].stepSize = 0 # use current time + # as x value for interpolation + + + self.noiseTables.vec[i].stopTime = self.simtime + + self._init_network(**kwargs) + if plotif: + self._init_plots() + + + def _init_plots(self): + ## make a few tables to store a few Vm-s + numVms = 10 + self.plots = moose.Table( '/plotVms', numVms ) + ## draw numVms out of N neurons + nrnIdxs = random.sample(range(self.N),numVms) + for i in range( numVms ): + moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ + self.plots.vec[i], 'input') + + ## make self.N tables to store spikes of all neurons + self.spikes = moose.Table( '/plotSpikes', self.N ) + moose.connect( self.network, 'spikeOut', \ + self.spikes, 'input', 'OneToOne' ) + + ## make 2 tables to store spikes of all exc and all inh neurons + self.spikesExc = moose.Table( '/plotSpikesAllExc' ) + for i in range(self.NmaxExc): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesExc, 'input' ) + self.spikesInh = moose.Table( '/plotSpikesAllInh' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.network.vec[i], 'spikeOut', \ + self.spikesInh, 'input' ) + + def _plot(self, fig): + """ plots the spike raster for the simulated net""" + plt.figure(1) + + ax = plt.subplot(221) + cleanAx( ax, 'B' ) + plt.ylabel( 'Neuron #', fontsize = 16 ) + for i in range(0,self.NmaxExc): + if i==0: label = 'Exc. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'b.',marker='.', markersize = 2, label=label) + for i in range(self.NmaxExc,self.N): + if i==self.NmaxExc: label = 'Inh. spike trains' + else: label = '' + spikes = self.spikes.vec[i].vector + ax.plot(spikes,[i]*len(spikes),\ + 'r.',marker='.', markersize = 2, label=label) + +############################################# +# Exc-Inh network class with Ca plasticity based connections +# (inherits from ExcInhNetBase) +############################################# + +class ExcInhNet(ExcInhNetBase): + """ Recurrent network simulation """ + + def __init__(self,J=J,incC=C,fC=fC,scaleI=g,syndelay=syndelay,**kwargs): + """Overloads base (parent) class""" + self.J = J # exc connection weight + self.incC = incC # number of incoming connections per neuron + self.fC = fC # fraction of exc incoming connections + self.excC = int(fC*incC)# number of exc incoming connections + self.scaleI = scaleI # inh weight is scaleI*J + self.syndelay = syndelay# synaptic delay + + # call the parent class constructor + ExcInhNetBase.__init__(self,**kwargs) + + def __str__(self): + return "LIF network of %d neurons "\ + "of which %d are exc." % (self.N,self.NmaxExc) + + def _init_network(self,**args): + ExcInhNetBase._init_network(self,**args) + + def _init_plots(self): + ExcInhNetBase._init_plots(self) + self.recN = 5 # number of neurons for which to record weights and Ca + if CaPlasticity: + ## make tables to store weights of recN exc synapses + ## for each post-synaptic exc neuron + self.weights = moose.Table( '/plotWeights', self.excC*self.recN ) + for i in range(self.recN): # range(self.N) is too large + for j in range(self.excC): + moose.connect( self.weights.vec[self.excC*i+j], 'requestOut', + self.synsEE.vec[i*self.excC+j].synapse[0], 'getWeight') + + def _setup_network(self): + ## Set up the neurons without connections + ExcInhNetBase._setup_network(self) + + ## Now, add in the connections... + ## Each pre-synaptic spike cause Vm of post-neuron to rise by + ## synaptic weight in one time step i.e. delta-fn synapse. + ## Since LIF neuron is derived from Compartment class, + ## conductance-based synapses (SynChan class) can also be used. + + ## E to E synapses can be plastic + ## Two ways to do this: + ## 1) Each LIF neuron has one incoming postsynaptic SynHandler, + ## which collects the activation from all presynaptic neurons, + ## but then a common Ca pool is used. + ## 2) Each LIF neuron has multiple postsyanptic SynHandlers, + ## one for each pre-synaptic neuron, i.e. one per synapse, + ## then each synapse has a different Ca pool. + ## Here we go with option 2) as per Higgins et al 2014 (Brunel private email) + ## separate SynHandler per EE synapse, thus NmaxExc*excC + if CaPlasticity: + self.synsEE = moose.GraupnerBrunel2012CaPlasticitySynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + else: + self.synsEE = moose.SimpleSynHandler( \ + '/network/synsEE', self.NmaxExc*self.excC ) + moose.useClock( 0, '/network/synsEE', 'process' ) + + ## I to E synapses are not plastic + self.synsIE = moose.SimpleSynHandler( '/network/synsIE', self.NmaxExc ) + ## all synapses to I neurons are not plastic + self.synsI = moose.SimpleSynHandler( '/network/synsI', self.N-self.NmaxExc ) + ## connect all SynHandlers to their respective neurons + for i in range(self.NmaxExc): + moose.connect( self.synsIE.vec[i], 'activationOut', \ + self.network.vec[i], 'activation' ) + for i in range(self.NmaxExc,self.N): + moose.connect( self.synsI.vec[i-self.NmaxExc], 'activationOut', \ + self.network.vec[i], 'activation' ) + + ## Connections from some Exc/Inh neurons to each Exc neuron + for i in range(0,self.NmaxExc): + self.synsIE.vec[i].numSynapses = self.incC-self.excC + + ## Connections from some Exc neurons to each Exc neuron + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(self.NmaxExc),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synidx = i*self.excC+synnum + synHand = self.synsEE.vec[synidx] + + ## connect each synhandler to the post-synaptic neuron + moose.connect( synHand, 'activationOut', \ + self.network.vec[i], 'activation' ) + ## important to set numSynapses = 1 for each synHandler, + ## doesn't create synapses if you set the full array of SynHandlers + synHand.numSynapses = 1 + + synij = synHand.synapse[0] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + if CaPlasticity: + ## set parameters for the Ca Plasticity SynHandler + ## have to be set for each SynHandler + ## doesn't set for full array at a time + synHand.CaInit = 0.0 + synHand.tauCa = tauCa + synHand.tauSyn = tauSyn + synHand.CaPre = CaPre + synHand.CaPost = CaPost + synHand.delayD = delayD + synHand.thetaD = thetaD + synHand.thetaP = thetaP + synHand.gammaD = gammaD + synHand.gammaP = gammaP + synHand.weightMax = 1.0 # bounds on the weight + synHand.weightMin = 0.0 + synHand.weightScale = \ + self.J*2.0 # 0.2 mV, weight*weightScale is activation + # typically weight <~ 0.5, so activation <~ J + synHand.noisy = noisy + synHand.noiseSD = noiseSD + synHand.bistable = bistable + + moose.connect( self.network.vec[i], \ + 'spikeOut', synHand, 'addPostSpike') + synij.weight = eqWeight # activation = weight*weightScale + # weightScale = 2*J + # weight <~ 0.5 + ## Randomly set 5% of them to be 1.0 + if np.random.uniform()<0.05: + synij.weight = 1.0 + else: + synij.weight = self.J # no weightScale here, activation = weight + + ## Connections from some Inh neurons to each Exc neuron + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsIE.vec[i].synapse[synnum] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + ## Connections from some Exc/Inh neurons to each Inh neuron + for i in range(self.N-self.NmaxExc): + ## each neuron has incC number of synapses + self.synsI.vec[i].numSynapses = self.incC + + ## draw excC number of neuron indices out of NmaxExc neurons + preIdxs = random.sample(range(self.NmaxExc),self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[synnum] + connectExcId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = self.J # activation = weight + + ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons + preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + ## connect these presynaptically to i-th post-synaptic neuron + for synnum,preIdx in enumerate(preIdxs): + synij = self.synsI.vec[i].synapse[ self.excC + synnum ] + connectInhId = moose.connect( self.network.vec[preIdx], \ + 'spikeOut', synij, 'addSpike') + synij.delay = syndelay + synij.weight = -self.scaleI*self.J # activation = weight + + moose.useClock( 0, '/network/synsIE', 'process' ) + moose.useClock( 0, '/network/synsI', 'process' ) + +############################################# +# Analysis functions +############################################# + +def rate_from_spiketrain(spiketimes,fulltime,dt,tau=50e-3): + """ + Returns a rate series of spiketimes convolved with a Gaussian kernel; + all times must be in SI units. + """ + sigma = tau/2. + ## normalized Gaussian kernel, integral with dt is normed to 1 + ## to count as 1 spike smeared over a finite interval + norm_factor = 1./(np.sqrt(2.*np.pi)*sigma) + gauss_kernel = np.array([norm_factor*np.exp(-x**2/(2.*sigma**2))\ + for x in np.arange(-5.*sigma,5.*sigma+dt,dt)]) + kernel_len = len(gauss_kernel) + ## need to accommodate half kernel_len on either side of fulltime + rate_full = np.zeros(int(fulltime/dt)+kernel_len) + for spiketime in spiketimes: + idx = int(spiketime/dt) + rate_full[idx:idx+kernel_len] += gauss_kernel + ## only the middle fulltime part of the rate series + ## This is already in Hz, + ## since should have multiplied by dt for above convolution + ## and divided by dt to get a rate, so effectively not doing either. + return rate_full[kernel_len/2:kernel_len/2+int(fulltime/dt)] + +############################################# +# Make plots +############################################# + +def extra_plots(net): + ## extra plots apart from the spike rasters + timeseries = net.trange + ## individual neuron firing rates + fig3 = plt.figure() + plt.subplot(221) + num_to_plot = 10 + #rates = [] + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" exc nrns") + plt.ylabel("Hz") + plt.ylim(0,100) + plt.subplot(222) + for nrni in range(num_to_plot): + rate = rate_from_spiketrain(\ + net.spikes.vec[net.NmaxExc+nrni].vector,simtime,dt, 1.0 ) + plt.plot(timeseries,rate) + plt.title("Rates of "+str(num_to_plot)+" inh nrns") + plt.ylim(0,100) + + ## population firing rates + plt.subplot(223) + rate = rate_from_spiketrain(net.spikesExc.vector,simtime,dt)\ + /float(net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Exc population rate") + plt.ylabel("Hz") + plt.xlabel("Time (s)") + plt.subplot(224) + rate = rate_from_spiketrain(net.spikesInh.vector,simtime,dt)\ + /float(net.N-net.NmaxExc) # per neuron + plt.plot(timeseries,rate) + plt.ylim(0,100) + plt.title("Inh population rate") + plt.xlabel("Time (s)") + + fig3.tight_layout() + +def makeScatterPlot( m, n, v ): + fig4 = plt.figure() + + dx = 100e-6 + dy = 100e-6 + x = np.arange( m ) * dx + x = np.tile( x, n ) + y = np.arange( n ) * dy + y = y.repeat( m ) + #z = np.arange( m * n ) + #ret = plt.scatter( x, y, s = 64, c = v, vmin = -0.065, vmax = -0.055 ) + cmap = plt.get_cmap('afmhot') + ret = plt.scatter( x, y, s = 64, c = v, vmin = 0.5, vmax = 1.0, cmap = cmap ) + plt.xlim( -dx, dx * m ) + plt.ylim( -dy, dy * n ) + return fig4, ret + +def buildNeuronPlots( rdes ): + if not moose.exists( '/graphs' ): + graphs = moose.Neutral( '/graphs' ) + vtab = moose.Table( '/graphs/vtab' ) + catab = moose.Table( '/graphs/catab' ) + moose.connect( vtab, "requestOut", rdes.soma, "getVm" ) + caSoma = moose.element( rdes.soma.path + "/Ca_conc" ) + moose.connect( catab, "requestOut", caSoma, "getCa" ) + elist = moose.wildcardFind( '/model/chem/psd/tot_PSD_R[]' ) + rtab = moose.Table2( '/graphs/rtab', len( elist ) ).vec + for i in zip( elist, rtab ): + moose.connect( i[1], "requestOut", i[0], "getN" ) + elist = moose.wildcardFind( '/model/chem/spine/Ca[]' ) + pcatab = moose.Table2( '/graphs/pcatab', len( elist ) ).vec + for i in zip( elist, pcatab ): + moose.connect( i[1], "requestOut", i[0], "getConc" ) + +def cleanAx( ax, label, showXlabel = False ): + ax.spines['top'].set_visible( False ) + ax.spines['right'].set_visible( False ) + ax.tick_params( direction = 'out' ) + if not showXlabel: + ax.set_xticklabels( [] ) + for tick in ax.xaxis.get_major_ticks(): + tick.tick2On = False + for tick in ax.yaxis.get_major_ticks(): + tick.tick2On = False + ax.text( -0.18, 1.0, label, fontsize = 18, weight = 'bold', transform=ax.transAxes ) + + +def saveNeuronPlots( fig, rdes ): + #fig = plt.figure( figsize=(12, 10), facecolor='white' ) + #fig.subplots_adjust( left = 0.18 ) + plt.figure(1) + + ax = plt.subplot(222) + cleanAx( ax, 'C' ) + plt.ylabel( 'Vm (mV)', fontsize = 16 ) + vtab = moose.element( '/graphs/vtab' ) + t = np.arange( 0, len( vtab.vector ), 1 ) * vtab.dt + plt.plot( t, vtab.vector * 1000, label="Vm" ) + #plt.legend() + + ax = plt.subplot(223) + cleanAx( ax, 'D', showXlabel = True ) + pcatab = list( moose.vec( '/graphs/pcatab' ) )[0::2] + t = np.arange( 0, len( pcatab[0].vector ), 1 ) * pcatab[0].dt + for i in pcatab: + plt.plot( t, i.vector * 1000 ) + plt.ylabel( '[Ca] (uM)', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + + ax = plt.subplot(224) + cleanAx( ax, 'E', showXlabel = True ) + rtab = list( moose.vec( '/graphs/rtab' ) )[0::2] + t = np.arange( 0, len( rtab[0].vector ), 1 ) * rtab[0].dt + for i in rtab: + plt.plot( t, i.vector ) + plt.ylabel( '# of inserted GluRs', fontsize = 16 ) + plt.xlabel( 'Time (s)', fontsize = 16 ) + ''' + for i in moose.wildcardFind( '/graphs/#' ): + i.xplot( fname + '.xplot', i.name ) + ''' + +if __name__=='__main__': + plt.ion() + ## ExcInhNetBase has unconnected neurons, + ## ExcInhNet connects them + ## Instantiate either ExcInhNetBase or ExcInhNet below + #net = ExcInhNetBase(N=N) + net = ExcInhNet(N=N) + print net + moose.le( '/' ) + moose.le( '/network' ) + rdes = buildRdesigneur() + rdes.buildModel( '/model' ) + buildNeuronPlots( rdes ) + connectDetailedNeuron() + + ## Important to distribute the initial Vm-s + ## else weak coupling gives periodic synchronous firing + plotif = True + net.simulate(simtime,plotif=plotif,\ + v0=np.random.uniform(el-20e-3,vt,size=N)) + + # moose simulation + moose.useClock( 1, '/network', 'process' ) + moose.useClock( 2, '/plotSpikes', 'process' ) + moose.useClock( 3, '/plotVms', 'process' ) + if CaPlasticity: + moose.useClock( 3, '/plotWeights', 'process' ) + moose.useClock( 3, '/plotCa', 'process' ) + moose.setClock( 0, dt ) + moose.setClock( 1, dt ) + moose.setClock( 2, dt ) + moose.setClock( 3, dt ) + moose.setClock( 9, dt ) + + if plotif: + Vm = net.network.vec.Vm + fig = plt.figure( 1, figsize=(12, 10), facecolor='white' ) + fig.subplots_adjust( left = 0.18 ) + fig2, ret = makeScatterPlot( 20, 20, Vm ) + title = fig2.text( 0.1, 0.95, "Simulation starting..." ) + + moose.reinit() + t1 = time.time() + print 'starting' + for currTime in np.arange( 0, simtime, updateDt ): + moose.start(updateDt) + lastt = net.network.vec.lastEventTime + lastt = np.exp( 2 * (lastt - currTime ) ) + title.set_text( "t = " + str( currTime ) ) + ret.set_array( lastt ) + fig2.canvas.draw() + + print 'runtime, t = ', time.time() - t1 + + if plotif: + net._plot( fig ) + + extra_plots(net) + saveNeuronPlots( fig, rdes ) + plt.show() + plt.savefig( fname + '.svg', bbox_inches='tight') + print( "Hit 'enter' to exit" ) + raw_input() diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml b/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml new file mode 100644 index 0000000..028852a --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml @@ -0,0 +1,12658 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml b/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml new file mode 100644 index 0000000..074524a --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml @@ -0,0 +1,12628 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + ModelViewParmSubset_2 + + + + + + all + + + + + + ModelViewParmSubset_2 + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml b/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml new file mode 100644 index 0000000..dcae7ae --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml @@ -0,0 +1,12535 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml b/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml new file mode 100644 index 0000000..6041e73 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml @@ -0,0 +1,13066 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allButSpineShaft + + + + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + + soma_group + + + + + + OneSecGrp_SectionRef_5 + + + + + + allButSpineShaft + + + + + + allButSpineShaft + + + + + allButShaft + + + + + + all + + + + + + all + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml b/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml new file mode 100644 index 0000000..b2f8ee5 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml @@ -0,0 +1,13118 @@ + + + + + + + Cell exported from NEURON ModelView in NeuroML Level 2 format and imported into neuroConstruct. The densities of hd, kap, kad have been replaced with variable mechanisms recreating the densities as used in the original model from ModelDB. + MOOSE NeuroML importer still does not support changing channel parameters post load and inhomogenous tags. Thus this model has been modified. + All inhomogeneous tags have been removed. All changed channel parameters have been hardcoded into modified channels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path Length from root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allButSpineShaft + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + + + all + + + all + + + + + + + This opaque name OneSecGrp_SectionRef_5 means the axon. + + + OneSecGrp_SectionRef_5 + soma_group + + + + + + SomaPlusProxDend + + + axon_group + soma_group + + + + + + allButSpineShaft + + + + + allButShaft + + + + + + all + + + + + + all + + + + OneSecGrp_SectionRef_5 + + + + + + all + + + + + + all + + + + + + + all + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/Ca.xml b/examples/Fig6_NetMultiscale/cells_channels/Ca.xml new file mode 100644 index 0000000..645161c --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/Ca.xml @@ -0,0 +1,62 @@ + + + + + A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a + Detailed Network Model of the Cerebellar Granule Cell Layer + + + + + + + Voltage-gated Ca2+ channel, based on Traub + + + + Traub, R. + + + Upi Bhalla + NCBS + bhalla - at - ncbs.res.in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml b/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml new file mode 100644 index 0000000..fe10a98 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml @@ -0,0 +1,36 @@ + + + + Ca pool + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + Upi Bhalla + + + + An expontially decaying pool of calcium + + + + Upi Bhalla + National Centre for Biological Sciences, Bangalore, India. + bhalla - at - ncbs.res.in + + + + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml b/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml new file mode 100644 index 0000000..29da3e8 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml @@ -0,0 +1,31 @@ + + + + Ca pool. + + + Signifies that the ion is involved in a process which alters its concentration + + + + + + + + An expontially decaying pool of calcium + + + + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/GABA.xml b/examples/Fig6_NetMultiscale/cells_channels/GABA.xml new file mode 100644 index 0000000..306dd9e --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/GABA.xml @@ -0,0 +1,16 @@ + + + + + GABA receptor synchan, 2 ms tau. + + + + Simple double exponential waveform GABA synapse + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/Glu.xml b/examples/Fig6_NetMultiscale/cells_channels/Glu.xml new file mode 100644 index 0000000..c1a7d7c --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/Glu.xml @@ -0,0 +1,16 @@ + + + + + Glutamate receptor synchan, 2 ms tau. + + + + Simple double exponential waveform glu synapse + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml b/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml new file mode 100644 index 0000000..ce7e3dd --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml @@ -0,0 +1,16 @@ + + + + + NMDA receptor synchan, 20 ms tau. + + + + Simple double exponential waveform NMDA synapse + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml b/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml new file mode 100644 index 0000000..09239c3 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml @@ -0,0 +1,92 @@ + + + + + Voltage-gated K channel + + + + + + Matteo Farinella + + + + Channel translated from the original .mod file used in Kole MH, Ilschner SU, Kampa BM, Williams SR, Ruben PC, Stuart GJ, Action potential generation requires a high sodium channel density in the axon initial segment. Nat Neurosci. 2008 Feb;11(2):178-86. + Based on I-M (muscarinic K channel) Slow, noninactivating + + + + + Zach Mainen + Salk Institute + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Matteo Farinella + UCL + m.farinella - at - ucl.ac.uk + + + + + + + Rothman JS, Cathala L, Steuber V, Silver RA, Synaptic depression enables neuronal gain control. Nature. 2009 Jan 14 + http://www.ncbi.nlm.nih.gov/pubmed/19145233?ordinalpos=1&itool=EntrezSystem2.PEntrez.Pubmed.Pubmed_ResultsPanel.Pubmed_DefaultReportPanel.Pubmed_RVDocSum + + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml b/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml new file mode 100644 index 0000000..9e507d0 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml @@ -0,0 +1,109 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + Yoana Dimitrova + + + Padraig Gleeson + + + + Potasium A-type conductance (transient, inactivating). Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Yoana Dimitrova + UCL + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Using broad range of voltages for sufficient coverage + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml b/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml new file mode 100644 index 0000000..bc5e1b5 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml @@ -0,0 +1,105 @@ + + + + ChannelML file based on Traub et al. 2003 + + + + + Verified equivalence of NEURON and GENESIS mapping to orig NEURON mod impl at 0.02ms dt with current pulse on single comp incl CaD + In original mod, m is initialised to 0, as opposed to minf at t=0. ChannelML impl corrects this + + + Padraig Gleeson + + + Yoana Dimitrova + + + + [Ca2+] dependent K AHP (afterhyperpolarization) conductance. Based on NEURON port of FRB L2/3 model from Traub et al 2003. Same channel used in Traub et al 2005 + + + + Maciej Lazarewicz + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Roger D Traub + Conversion of FORTRAN model to NEURON. See Traub et al 2003 for detailed origin of channels + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + Yoana Dimitrova + UCL + + + + + Roger D. Traub, Eberhard H. Buhl, Tengis Gloveli, and Miles A. Whittington +Fast Rhythmic Bursting Can Be Induced in Layer 2/3 Cortical Neurons by Enhancing Persistent Na+ Conductance or by Blocking BK Channels +J Neurophysiol 89: 909-921, 2003 + http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=12574468 + + + + Roger D. Traub, Diego Contreras, Mark O. Cunningham, Hilary Murray, Fiona E. N. LeBeau, Anita Roopun, Andrea Bibbig, W. Bryan Wilent, Michael J. Higley, and Miles A. Whittington +Single-column thalamocortical network model exhibiting gamma oscillations, sleep spindles, and epileptogenic bursts. +J. Neurophysiol. 93, 2194-2232, 2005 + http://www.ncbi.nlm.nih.gov/pubmed/15525801?dopt=Abstract + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + Mechanisms of fast rhythmic bursting in a layer 2/3 cortical neuron (Traub et al 2003) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=20756 + + + + A single column thalamocortical network model (Traub et al 2005) + http://senselab.med.yale.edu/ModelDb/ShowModel.asp?model=45539 + + + + + + + + + + + + + + + + + + + + + + + + + This will ensure more points in calcium dependence table + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p b/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p new file mode 100644 index 0000000..4395d62 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p @@ -0,0 +1,58 @@ +// genesis +// cell parameter file for the 1991 Traub CA1 hippocampal cell +// "phi" parameter reduced by e-3 +*cartesian +*relative + +*set_global RM 1.0 //ohm*m^2 +*set_global RA 1.0 //ohm*m +*set_global CM 0.03 //F/m^2 +*set_global EREST_ACT -0.06 // volts + +// The format for each compartment parameter line is : +// name parent x y z d ch dens ... +// For channels, "dens" = maximum conductance per unit area of compartment + + +dend_3 none 0 220 0 3.84 +dend_5 . 0 220 0 3.84 +dend_6 . 0 220 0 3.84 +dend_8 . 0 110 0 3.84 + +soma dend_8 0 125 0 8.46 + + +apical_10 soma 0 120 0 4.0 +apical_11 apical_10 0 120 0 3 +apical_12 apical_11 0 120 0 3 +apical_13 apical_12 0 120 0 2.6 +apical_14 apical_13 0 120 0 2.6 +apical_15 apical_14 0 120 0 2.6 +apical_16 apical_15 0 120 0 2.6 +apical_17 apical_16 0 120 0 2.6 +apical_18 apical_17 0 120 0 2.6 +apical_19 apical_18 0 120 0 2.6 + +apical_11_1 apical_10 -60 60 0 2 +apical_11_2 apical_11_1 -60 60 0 1.8 +apical_11_3 apical_11_2 0 80 0 1.5 +apical_11_4 apical_11_3 0 80 0 1.5 + +apical_13_1 apical_12 40 40 0 1.0 +apical_13_2 apical_13_1 40 40 0 1.0 + +apical_14_1 apical_13_2 0 10 0 1.0 +apical_14_2 . 0 10 0 1.0 +apical_14_3 . 0 10 0 1.0 +apical_14_4 . 0 10 0 1.0 +apical_14_5 . 0 10 0 1.0 +apical_14_6 . 0 10 0 1.0 +apical_14_7 . 0 10 0 1.0 +apical_14_8 . 0 10 0 1.0 +apical_14_9 . 0 10 0 1.0 +apical_14_10 . 0 10 0 1.0 +apical_14_11 . 0 10 0 1.0 +apical_14_12 . 0 10 0 1.0 +apical_14_13 . 0 10 0 1.0 +apical_15_1 . 0 30 0 1.0 +apical_15_2 . 0 60 0 1.0 diff --git a/examples/Fig6_NetMultiscale/cells_channels/hd.xml b/examples/Fig6_NetMultiscale/cells_channels/hd.xml new file mode 100644 index 0000000..141c1ac --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/hd.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml b/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml new file mode 100644 index 0000000..38815ff --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml @@ -0,0 +1,73 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and l traces on single comp with current pulse + + Padraig Gleeson + + + + H current. Comment from original mod: I-h channel from Magee 1998 for distal dendrites + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/kad.xml b/examples/Fig6_NetMultiscale/cells_channels/kad.xml new file mode 100644 index 0000000..bb7c5af --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/kad.xml @@ -0,0 +1,84 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel for distal dendrites. Comment from original mod: K-A channel from Klee Ficker and Heinemann, modified to account for Dax A Current, M.Migliore Jun 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig6_NetMultiscale/cells_channels/kap.xml b/examples/Fig6_NetMultiscale/cells_channels/kap.xml new file mode 100644 index 0000000..58fdea0 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/kap.xml @@ -0,0 +1,86 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + A type K channel. Comment from original mod: K-A channel from Klee Ficker and Heinemann, + modified to account for Dax A Current --- M.Migliore Jun 1997, + modified to be used with cvode M.Migliore 2001 + + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig6_NetMultiscale/cells_channels/kdr.xml b/examples/Fig6_NetMultiscale/cells_channels/kdr.xml new file mode 100644 index 0000000..180c563 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/kdr.xml @@ -0,0 +1,75 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Delayed rectifier K channel. Comment from original mod: K-DR channel, from Klee Ficker and Heinemann, + modified to account for Dax et al., M.Migliore 1997 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + K channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table3 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + \ No newline at end of file diff --git a/examples/Fig6_NetMultiscale/cells_channels/na3.xml b/examples/Fig6_NetMultiscale/cells_channels/na3.xml new file mode 100644 index 0000000..5684d19 --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/na3.xml @@ -0,0 +1,107 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + Note: the inactivation gate s is not included here as it was disabled in original mod file for Migliore et al. Changing the parameter below ar from 1 will not enable s! + + Padraig Gleeson + + + + Na channel. Comment from original mod: Na current, modified from Jeff Magee. M.Migliore may97, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/nax.xml b/examples/Fig6_NetMultiscale/cells_channels/nax.xml new file mode 100644 index 0000000..3ca589c --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/nax.xml @@ -0,0 +1,88 @@ + + + + ChannelML file containing a single Channel description + + + + + Agreement of generated NEURON and GENESIS to original NEURON mod. Compared voltage and n traces on single comp with current pulse + + Padraig Gleeson + + + + Na channel for axon. Comment from original mod: Na current for axon. No slow inact. M.Migliore Jul. 1997, + added sh to account for higher threshold M.Migliore, Apr.2002 + + + + Michele Migliore + Cited implementer according to ModelDB + + + Padraig Gleeson + UCL + p.gleeson - at - ucl.ac.uk + + + + + Migliore M, Ferrante M, Ascoli GA (2005) Signal propagation in oblique dendrites of CA1 pyramidal cells. J Neurophysiol 94:4145-4155 + http://www.ncbi.nlm.nih.gov/pubmed/16293591 + + + + Na channels + http://senselab.med.yale.edu/senselab/NeuronDB/channelGene2.htm#table2 + + + + CA1 pyramidal neuron: signal propagation in oblique dendrites (Migliore et al 2005) + http://senselab.med.yale.edu/ModelDB/ShowModel.asp?model=55035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suggesting using a large table of precomputed rate equation values since original mod didn't use any table, i.e. used continuous values + + + + + + + + diff --git a/examples/Fig6_NetMultiscale/cells_channels/pas.xml b/examples/Fig6_NetMultiscale/cells_channels/pas.xml new file mode 100644 index 0000000..9abffeb --- /dev/null +++ b/examples/Fig6_NetMultiscale/cells_channels/pas.xml @@ -0,0 +1,17 @@ + + + + ChannelML file containing a single Channel description + + + + + + Simple example of a leak/passive conductance. Note: for GENESIS cells with a single leak conductance, + it is better to use the Rm and Em variables for a passive current. + + + + + + \ No newline at end of file diff --git a/examples/Fig6_NetMultiscale/psd53.g b/examples/Fig6_NetMultiscale/psd53.g new file mode 100644 index 0000000..e120a6a --- /dev/null +++ b/examples/Fig6_NetMultiscale/psd53.g @@ -0,0 +1,477 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Fri Jun 5 09:12:59 2015 + +include kkit {argv 1} + +FASTDT = 1e-05 +SIMDT = 0.0001 +CONTROLDT = 1 +PLOTDT = 0.2 +MAXTIME = 200 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1e-19 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 5 \ + -4 0 +simundump geometry /kinetics/geometry[1] 0 1e-19 3 sphere "" white black 5 -2 \ + 0 +simundump geometry /kinetics/geometry[2] 0 1e-20 3 sphere "" white black 2 2 \ + 0 +simundump geometry /kinetics/geometry[3] 0 1e-20 3 sphere "" white black 4 8 \ + 0 +simundump geometry /kinetics/geometry[4] 0 1e-20 3 sphere "" white black 2 \ + -17 0 +simundump geometry /kinetics/geometry[5] 0 1e-20 3 sphere "" white black 5 \ + -13 0 +simundump geometry /kinetics/geometry[6] 0 1e-19 3 sphere "" white black 0 7 \ + 0 +simundump geometry /kinetics/geometry[7] 0 1e-20 3 sphere "" white black 0 -3 \ + 0 +simundump geometry /kinetics/geometry[8] 0 1e-20 3 sphere "" white black -1 \ + -18 0 +simundump geometry /kinetics/geometry[9] 0 1e-18 3 sphere "" white black 0 0 \ + 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump text /kinetics/geometry[1]/notes 0 "" +call /kinetics/geometry[1]/notes LOAD \ +"" +simundump text /kinetics/geometry[2]/notes 0 "" +call /kinetics/geometry[2]/notes LOAD \ +"" +simundump text /kinetics/geometry[3]/notes 0 "" +call /kinetics/geometry[3]/notes LOAD \ +"" +simundump text /kinetics/geometry[4]/notes 0 "" +call /kinetics/geometry[4]/notes LOAD \ +"" +simundump text /kinetics/geometry[5]/notes 0 "" +call /kinetics/geometry[5]/notes LOAD \ +"" +simundump text /kinetics/geometry[6]/notes 0 "" +call /kinetics/geometry[6]/notes LOAD \ +"" +simundump text /kinetics/geometry[7]/notes 0 "" +call /kinetics/geometry[7]/notes LOAD \ +"" +simundump text /kinetics/geometry[8]/notes 0 "" +call /kinetics/geometry[8]/notes LOAD \ +"" +simundump text /kinetics/geometry[9]/notes 0 "" +call /kinetics/geometry[9]/notes LOAD \ +"" +simundump kreac /kinetics/exocytosis 0 0.01 0 "" white black 4 -5 0 +simundump text /kinetics/exocytosis/notes 0 "" +call /kinetics/exocytosis/notes LOAD \ +"" +simundump kreac /kinetics/endocytosis 0 0 4 "" white black -7 -5 0 +simundump text /kinetics/endocytosis/notes 0 "" +call /kinetics/endocytosis/notes LOAD \ +"" +simundump group /kinetics/PSD 0 0 black x 0 1 "" PSD defaultfile.g 0 0 0 -10 \ + -3 0 +simundump text /kinetics/PSD/notes 0 "" +call /kinetics/PSD/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + blue 0 -4 1 0 +simundump text /kinetics/PSD/Rp/notes 0 "" +call /kinetics/PSD/Rp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/P 0 0 1 1 6 6 0 0 6 0 /kinetics/geometry[1] 61 \ + 0 -4 -2 0 +simundump text /kinetics/PSD/P/notes 0 "" +call /kinetics/PSD/P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P1 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -6 -1 0 +simundump text /kinetics/PSD/P/P1/notes 0 "" +call /kinetics/PSD/P/P1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/P/P2 0 0 0 0 0 60 10.417 20 5 0 0 "" red 61 "" \ + -2 -1 0 +simundump text /kinetics/PSD/P/P2/notes 0 "" +call /kinetics/PSD/P/P2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/KK 0 0 3 3 18 18 0 0 6 0 /kinetics/geometry[1] \ + 49 0 -4 4 0 +simundump text /kinetics/PSD/KK/notes 0 "" +call /kinetics/PSD/KK/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK1 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -6 3 0 +simundump text /kinetics/PSD/KK/KK1/notes 0 "" +call /kinetics/PSD/KK/KK1/notes LOAD \ +"" +simundump kenz /kinetics/PSD/KK/KK2 0 0 0 0 0 60 4.1667 40 10 0 0 "" red 49 \ + "" -2 3 0 +simundump text /kinetics/PSD/KK/KK2/notes 0 "" +call /kinetics/PSD/KK/KK2/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Rpp 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] \ + 28 0 0 1 0 +simundump text /kinetics/PSD/Rpp/notes 0 "" +call /kinetics/PSD/Rpp/notes LOAD \ +"" +simundump kpool /kinetics/PSD/R 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[1] 4 0 \ + -8 1 0 +simundump text /kinetics/PSD/R/notes 0 "" +call /kinetics/PSD/R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/tot_PSD_R 0 0 0 0 0 0 0 0 6 0 \ + /kinetics/geometry[4] blue 0 -4 7 0 +simundump text /kinetics/PSD/tot_PSD_R/notes 0 "" +call /kinetics/PSD/tot_PSD_R/notes LOAD \ +"" +simundump kpool /kinetics/PSD/psd_inact_CaN 0 0 1 1 6 6 0 0 6 0 \ + /kinetics/geometry[7] blue 0 -12 5 0 +simundump text /kinetics/PSD/psd_inact_CaN/notes 0 "" +call /kinetics/PSD/psd_inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/PSD/psd_activate_CaN 0 0.27778 1 "" white 0 -11 1 0 +simundump text /kinetics/PSD/psd_activate_CaN/notes 0 "" +call /kinetics/PSD/psd_activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca.P 0 0 0 0 0 0 0 0 6 0 /kinetics/geometry[7] \ + blue 0 -4 -4 0 +simundump text /kinetics/PSD/Ca.P/notes 0 "" +call /kinetics/PSD/Ca.P/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P2 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -2 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P2/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P2/notes LOAD \ +"" +simundump kenz /kinetics/PSD/Ca.P/Ca.P1 0 0 0 0 0 6 1.6667 40 10 0 0 "" red \ + blue "" -6 -3 0 +simundump text /kinetics/PSD/Ca.P/Ca.P1/notes 0 "" +call /kinetics/PSD/Ca.P/Ca.P1/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca_input 0 0 0.1 0.1 0.6 0.6 0 0 6 4 \ + /kinetics/geometry[8] 60 black -12 9 0 +simundump text /kinetics/PSD/Ca_input/notes 0 "" +call /kinetics/PSD/Ca_input/notes LOAD \ +"" +simundump kreac /kinetics/PSD/Ca_reac 0 100 100 "" white black -17 6 0 +simundump text /kinetics/PSD/Ca_reac/notes 0 "" +call /kinetics/PSD/Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/PSD/Ca 0 1e-11 0.1 0.1 0.6 0.6 0 0 6 0 \ + /kinetics/geometry[5] 53 0 -15 2 0 +simundump text /kinetics/PSD/Ca/notes 0 "" +call /kinetics/PSD/Ca/notes LOAD \ +"" +simundump group /kinetics/Bulk 0 yellow black x 0 0 "" Bulk defaultfile.g 0 0 \ + 0 -6 -16 0 +simundump text /kinetics/Bulk/notes 0 "" +call /kinetics/Bulk/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRpp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry 29 yellow 2 -11 0 +simundump text /kinetics/Bulk/iRpp/notes 0 "" +call /kinetics/Bulk/iRpp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iRp 0 0 0 0 0 0 0 0 59.999 0 \ + /kinetics/geometry blue yellow -2 -11 0 +simundump text /kinetics/Bulk/iRp/notes 0 "" +call /kinetics/Bulk/iRp/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iR 0 0 4.0001 4.0001 240 240 0 0 59.999 0 \ + /kinetics/geometry 0 yellow -6 -11 0 +simundump text /kinetics/Bulk/iR/notes 0 "Same as Fus3\n" +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +simundump kpool /kinetics/Bulk/iKK 0 0 1 1 59.999 59.999 0 0 59.999 0 \ + /kinetics/geometry 50 yellow -2 -8 0 +simundump text /kinetics/Bulk/iKK/notes 0 "Same as Ste7\n" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK1 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" -4 -9 0 +simundump text /kinetics/Bulk/iKK/iKK1/notes 0 "" +call /kinetics/Bulk/iKK/iKK1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iKK/iKK2 0 0 0 0 0 59.999 0.83335 40 10 0 0 "" \ + red 50 "" 0 -9 0 +simundump text /kinetics/Bulk/iKK/iKK2/notes 0 "" +call /kinetics/Bulk/iKK/iKK2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/iP 0 0 0.50001 0.50001 30 30 0 0 59.999 0 \ + /kinetics/geometry 62 yellow -2 -14 0 +simundump text /kinetics/Bulk/iP/notes 0 "Same as Msg5\n" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +simundump kenz /kinetics/Bulk/iP/iP1 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" -4 -13 0 +simundump text /kinetics/Bulk/iP/iP1/notes 0 "" +call /kinetics/Bulk/iP/iP1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/iP/iP2 0 0 0 0 0 59.999 6.2501 60 15 0 0 "" red \ + 62 "" 0 -13 0 +simundump text /kinetics/Bulk/iP/iP2/notes 0 "" +call /kinetics/Bulk/iP/iP2/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/PKA 0 0 0 0 0 0 0 0 60 0 /kinetics/geometry[3] \ + 43 yellow -3 -5 0 +simundump text /kinetics/Bulk/PKA/notes 0 "" +call /kinetics/Bulk/PKA/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA1 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" -4 -7 0 +simundump text /kinetics/Bulk/PKA/PKA1/notes 0 "" +call /kinetics/Bulk/PKA/PKA1/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA2 0 0 0 0 0 60 0.41667 40 10 0 0 "" red \ + 43 "" 0 -7 0 +simundump text /kinetics/Bulk/PKA/PKA2/notes 0 "" +call /kinetics/Bulk/PKA/PKA2/notes LOAD \ +"" +simundump kenz /kinetics/Bulk/PKA/PKA_exo 0 0 0 0 0 60 0.016667 8 2 0 0 "" \ + red 43 "" 1 -5 0 +simundump text /kinetics/Bulk/PKA/PKA_exo/notes 0 "" +call /kinetics/Bulk/PKA/PKA_exo/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_PKA 0 0.0016667 5 "" white yellow -11 \ + -10 0 +simundump text /kinetics/Bulk/activate_PKA/notes 0 "" +call /kinetics/Bulk/activate_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_PKA 0 0 1.6 1.6 96 96 0 0 60 0 \ + /kinetics/geometry[2] 51 yellow -12 -6 0 +simundump text /kinetics/Bulk/inact_PKA/notes 0 "" +call /kinetics/Bulk/inact_PKA/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/inact_CaN 0 0 0.2 0.2 12 12 0 0 60 0 \ + /kinetics/geometry[6] blue yellow -13 -18 0 +simundump text /kinetics/Bulk/inact_CaN/notes 0 "" +call /kinetics/Bulk/inact_CaN/notes LOAD \ +"" +simundump kreac /kinetics/Bulk/activate_CaN 0 0.0055556 1 "" white yellow -10 \ + -16 0 +simundump text /kinetics/Bulk/activate_CaN/notes 0 "" +call /kinetics/Bulk/activate_CaN/notes LOAD \ +"" +simundump kpool /kinetics/Bulk/Ca 0 1e-11 0.1 0.1 6 6 0 0 60 0 \ + /kinetics/geometry[2] 50 yellow -15 -13 0 +simundump text /kinetics/Bulk/Ca/notes 0 "" +call /kinetics/Bulk/Ca/notes LOAD \ +"" +simundump kpool /kinetics/Ca_dend_input 0 0 0 0 0 0 0 0 600 0 \ + /kinetics/geometry[9] 60 black -12 -28 0 +simundump text /kinetics/Ca_dend_input/notes 0 "" +call /kinetics/Ca_dend_input/notes LOAD \ +"" +simundump kreac /kinetics/dend_Ca_reac 0 100 100 "" white black -16 -27 0 +simundump text /kinetics/dend_Ca_reac/notes 0 "" +call /kinetics/dend_Ca_reac/notes LOAD \ +"" +simundump kpool /kinetics/Ca 0 1e-11 0 0 0 0 0 0 600 0 /kinetics/geometry[9] \ + 1 black -19 -25 0 +simundump text /kinetics/Ca/notes 0 "" +call /kinetics/Ca/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 800 9.6002e-07 0.10547 0 +simundump xgraph /graphs/conc2 0 0 800 0 18.128 0 +simundump xplot /graphs/conc1/Ca_PSD.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 53 0 0 1 +simundump xplot /graphs/conc1/Ca_Bulk.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 41 0 0 1 +simundump xplot /graphs/conc1/PKA.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 43 0 0 1 +simundump xplot /graphs/conc1/Ca.P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc1/Ca_dend.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 1 0 0 1 +simundump xplot /graphs/conc2/tot_PSD_R.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " blue 0 0 1 +simundump xplot /graphs/conc2/Rpp.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 28 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 800 0 33.241 0 +simundump xgraph /moregraphs/conc4 0 0 800 0 2 0 +simundump xcoredraw /edit/draw 0 -21 7 -30 11 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"26 Nov 2014. psd51.g: based on psd50.g which was" \ +"based on psd41_back_dend.g." \ +"07 Dec 2014. psd52.g: based on psd51. Slowed down Ca_to_dend by " \ +"10x while retaining Keq." \ +"04 June 2015. psd53.g: Removed the reacts between dend, head and" \ +"psd. Will use diffusion instead." \ +"05 June 2015. psd53.g updated further to use the same name (Ca)" \ +"for Ca_dend, Ca_spine and Ca_PSD so as to get them to diffuse." \ +"" +addmsg /kinetics/Bulk/iRpp /kinetics/exocytosis SUBSTRATE n +addmsg /kinetics/PSD/Rpp /kinetics/exocytosis PRODUCT n +addmsg /kinetics/Bulk/iR /kinetics/endocytosis SUBSTRATE n +addmsg /kinetics/PSD/R /kinetics/endocytosis PRODUCT n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Rp REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/P REAC eA B +addmsg /kinetics/PSD/P /kinetics/PSD/P/P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/P/P1 SUBSTRATE n +addmsg /kinetics/PSD/P /kinetics/PSD/P/P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/P/P2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/KK REAC eA B +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK1 ENZYME n +addmsg /kinetics/PSD/R /kinetics/PSD/KK/KK1 SUBSTRATE n +addmsg /kinetics/PSD/KK /kinetics/PSD/KK/KK2 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/KK/KK2 SUBSTRATE n +addmsg /kinetics/PSD/KK/KK2 /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/P/P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/PSD/Rpp REAC B A +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/PSD/Rpp MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Rpp REAC sA B +addmsg /kinetics/PSD/KK/KK1 /kinetics/PSD/R REAC sA B +addmsg /kinetics/PSD/P/P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/R MM_PRD pA +addmsg /kinetics/endocytosis /kinetics/PSD/R REAC B A +addmsg /kinetics/PSD/R /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/Rpp /kinetics/PSD/tot_PSD_R SUMTOTAL n nInit +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/psd_inact_CaN REAC A B +addmsg /kinetics/PSD/psd_inact_CaN /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/psd_activate_CaN SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/psd_activate_CaN PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca.P REAC B A +addmsg /kinetics/PSD/Ca.P/Ca.P2 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P/Ca.P1 /kinetics/PSD/Ca.P REAC eA B +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P2 ENZYME n +addmsg /kinetics/PSD/Rpp /kinetics/PSD/Ca.P/Ca.P2 SUBSTRATE n +addmsg /kinetics/PSD/Ca.P /kinetics/PSD/Ca.P/Ca.P1 ENZYME n +addmsg /kinetics/PSD/Rp /kinetics/PSD/Ca.P/Ca.P1 SUBSTRATE n +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca_input REAC A B +addmsg /kinetics/PSD/Ca_input /kinetics/PSD/Ca_reac SUBSTRATE n +addmsg /kinetics/PSD/Ca /kinetics/PSD/Ca_reac PRODUCT n +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/psd_activate_CaN /kinetics/PSD/Ca REAC A B +addmsg /kinetics/PSD/Ca_reac /kinetics/PSD/Ca REAC B A +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/exocytosis /kinetics/Bulk/iRpp REAC A B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRpp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/iRpp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iRp MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/iRp REAC sA B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iR MM_PRD pA +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/iR REAC sA B +addmsg /kinetics/endocytosis /kinetics/Bulk/iR REAC A B +addmsg /kinetics/Bulk/iKK/iKK1 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK/iKK2 /kinetics/Bulk/iKK REAC eA B +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/iKK/iKK1 SUBSTRATE n +addmsg /kinetics/Bulk/iKK /kinetics/Bulk/iKK/iKK2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iKK/iKK2 SUBSTRATE n +addmsg /kinetics/Bulk/iP/iP1 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/iP/iP2 /kinetics/Bulk/iP REAC eA B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/iP REAC B A +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP1 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/iP/iP1 SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/iP/iP2 ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/iP/iP2 SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/PKA REAC B A +addmsg /kinetics/Bulk/PKA/PKA1 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA2 /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA/PKA_exo /kinetics/Bulk/PKA REAC eA B +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA1 ENZYME n +addmsg /kinetics/Bulk/iR /kinetics/Bulk/PKA/PKA1 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA2 ENZYME n +addmsg /kinetics/Bulk/iRp /kinetics/Bulk/PKA/PKA2 SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/PKA/PKA_exo ENZYME n +addmsg /kinetics/Bulk/iRpp /kinetics/Bulk/PKA/PKA_exo SUBSTRATE n +addmsg /kinetics/Bulk/inact_PKA /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/PKA /kinetics/Bulk/activate_PKA PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_PKA SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/inact_PKA REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/inact_CaN REAC A B +addmsg /kinetics/Bulk/inact_CaN /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/iP /kinetics/Bulk/activate_CaN PRODUCT n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/Ca /kinetics/Bulk/activate_CaN SUBSTRATE n +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_PKA /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/Bulk/activate_CaN /kinetics/Bulk/Ca REAC A B +addmsg /kinetics/dend_Ca_reac /kinetics/Ca_dend_input REAC A B +addmsg /kinetics/Ca_dend_input /kinetics/dend_Ca_reac SUBSTRATE n +addmsg /kinetics/Ca /kinetics/dend_Ca_reac PRODUCT n +addmsg /kinetics/dend_Ca_reac /kinetics/Ca REAC B A +addmsg /kinetics/PSD/Ca /graphs/conc1/Ca_PSD.Co PLOT Co *Ca_PSD.Co *53 +addmsg /kinetics/Bulk/Ca /graphs/conc1/Ca_Bulk.Co PLOT Co *Ca_Bulk.Co *41 +addmsg /kinetics/Bulk/PKA /graphs/conc1/PKA.Co PLOT Co *PKA.Co *43 +addmsg /kinetics/PSD/Ca.P /graphs/conc1/Ca.P.Co PLOT Co *Ca.P.Co *blue +addmsg /kinetics/Ca /graphs/conc1/Ca_dend.Co PLOT Co *Ca_dend.Co *1 +addmsg /kinetics/PSD/tot_PSD_R /graphs/conc2/tot_PSD_R.Co PLOT Co *tot_PSD_R.Co *blue +addmsg /kinetics/PSD/Rpp /graphs/conc2/Rpp.Co PLOT Co *Rpp.Co *28 +enddump +// End of dump + +call /kinetics/Bulk/iR/notes LOAD \ +"Same as Fus3" \ +"" +call /kinetics/Bulk/iKK/notes LOAD \ +"Same as Ste7" \ +"" +call /kinetics/Bulk/iP/notes LOAD \ +"Same as Msg5" \ +"" +complete_loading diff --git a/examples/README b/examples/README new file mode 100644 index 0000000..bd856f3 --- /dev/null +++ b/examples/README @@ -0,0 +1,33 @@ +Here we have Python scripts that replicate most of the figures in the MOOSE +paper. Most of these can be accessed through the MooseGUI startup screen. +Some of these take a very long time. Approximate runtimes for a 2.2 GHz +core I7 processor are listed here. +Some of these figures/demos depend on the 3-D graphics visualization, which +may not be compiled into your distribution. + +The figure scripts are in the directories Fig_ +and are named Fig2A, Fig3D etc. + +Figure panel Runtime(s) Uses 3-D? Notes +2A 1500 No Generates 2 xplot files for + analysis by Fig2A_analysis.py +2C 6 Yes +2D 35 Yes +2E 5 Yes + +3ABC 2 No This is a GENESIS/KKIT model + definition file loaded by MOOSE. +3D 1 No There is a corresponding + Fig3_NEURON.py for the same + model in NEURON. + +4B 10 Yes +4CDEF 370 No +4GHIJ 300 No + +5A 20 Yes Pops up four windows. +5BCDE 240 No Text only output. + +6A 60 Yes Spines exaggerated for display +6BCDE 3900 No Dumps to SVG. + diff --git a/examples/rxdSpineSize.py b/examples/rxdSpineSize.py new file mode 100644 index 0000000..c6fb828 --- /dev/null +++ b/examples/rxdSpineSize.py @@ -0,0 +1,293 @@ +################################################################## +## This program is part of 'MOOSE', the +## Messaging Object Oriented Simulation Environment. +## Copyright (C) 2015 Upinder S. Bhalla. and NCBS +## It is made available under the terms of the +## GNU Lesser General Public License version 2.1 +## See the file COPYING.LIB for the full notice. +## +## rxdSpineSize.py: Builds a cell with spines and a propagating reaction +## wave. Products diffuse into the spine and cause it to get bigger. +################################################################## +import math +import pylab +import numpy +import matplotlib.pyplot as plt +import moose +import sys +sys.path.append( '../util' ) +import rdesigneur as rd +from PyQt4 import QtGui +import moogli +import moogli.extensions.moose +import matplotlib + +PI = 3.141592653 +ScalingForTesting = 10 +RM = 1.0 / ScalingForTesting +RA = 1.0 * ScalingForTesting +CM = 0.01 * ScalingForTesting +runtime = 100.0 +frameruntime = 1.0 +diffConst = 5e-12 +dendLen = 100e-6 +diffLen = 1.0e-6 +dendDia = 2e-6 +somaDia = 5e-6 +concInit = 0.001 # 1 millimolar +spineSpacing = 10e-6 +spineSpacingDistrib = 1e-6 +spineSize = 1.0 +spineSizeDistrib = 0.5 +spineAngle= numpy.pi / 2.0 +spineAngleDistrib = 0.0 + +def makeCellProto( name ): + elec = moose.Neuron( '/library/' + name ) + ecompt = [] + soma = rd.buildCompt( elec, 'soma', somaDia, somaDia, -somaDia, RM, RA, CM ) + dend = rd.buildCompt( elec, 'dend', dendLen, dendDia, 0, RM, RA, CM ) + moose.connect( soma, 'axial', dend, 'raxial' ) + elec.buildSegmentTree() + +def makeChemProto( name ): + chem = moose.Neutral( '/library/' + name ) + comptVol = diffLen * dendDia * dendDia * PI / 4.0 + for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): + print 'making ', i + compt = moose.CubeMesh( chem.path + '/' + i[0] ) + compt.volume = i[1] + #x = moose.Pool( compt.path + '/x' ) + #y = moose.BufPool( compt.path + '/y' ) + z = moose.Pool( compt.path + '/z' ) + #x.concInit = 0.0 + #x.diffConst = diffConst + #y.concInit = concInit + z.concInit = 0.0 + z.diffConst = diffConst + nInit = comptVol * 6e23 * concInit + nstr = str( 1/nInit) + + x = moose.Pool( chem.path + '/dend/x' ) + x.diffConst = diffConst + func = moose.Function( x.path + '/func' ) + func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" + print func.expr + func.x.num = 1 + moose.connect( x, 'nOut', func.x[0], 'input' ) + moose.connect( func, 'valueOut', x, 'increment' ) + z = moose.element( '/library/' + name + '/dend/z' ) + reac = moose.Reac( '/library/' + name + '/dend/reac' ) + reac.Kf = 1 + reac.Kb = 10 + moose.connect( reac, 'sub', x, 'reac' ) + moose.connect( reac, 'prd', z, 'reac' ) + +def makeSpineProto2( name ): + spine = moose.Neutral( '/library/' + name ) + shaft = rd.buildCompt( spine, 'shaft', 0.5e-6, 0.4e-6, 0, RM, RA, CM ) + head = rd.buildCompt( spine, 'head', 0.5e-6, 0.5e-6, 0.5e-6, RM, RA, CM ) + moose.connect( shaft, 'axial', head, 'raxial' ) + +def makeModel(): + moose.Neutral( '/library' ) + makeCellProto( 'cellProto' ) + makeChemProto( 'cProto' ) + makeSpineProto2( 'spine' ) + rdes = rd.rdesigneur( useGssa = False, \ + combineSegments = False, \ + stealCellFromLibrary = True, \ + meshLambda = 1e-6, \ + cellProto = [['cellProto', 'elec' ]] ,\ + spineProto = [['spineProto', 'spine' ]] ,\ + chemProto = [['cProto', 'chem' ]] ,\ + spineDistrib = [ \ + ['spine', '#', \ + 'spacing', str( spineSpacing ), \ + 'spacingDistrib', str( spineSpacingDistrib ), \ + 'angle', str( spineAngle ), \ + 'angleDistrib', str( spineAngleDistrib ), \ + 'size', str( spineSize ), \ + 'sizeDistrib', str( spineSizeDistrib ) ] \ + ], \ + chemDistrib = [ \ + [ "chem", "dend", "install", "1" ] \ + ], + adaptorList = [ \ + [ 'psd/z', 'n', 'spine', 'psdArea', 10.0e-15, 300e-15 ], \ + ] \ + ) + rdes.buildModel( '/model' ) + x = moose.vec( '/model/chem/dend/x' ) + x.concInit = 0.0 + for i in range( 0,20 ): + x[i].concInit = concInit + +def makePlot( name, srcVec, field ): + tab = moose.Table2('/graphs/' + name + 'Tab', len( srcVec ) ).vec + for i in zip(srcVec, tab): + moose.connect(i[1], 'requestOut', i[0], field) + return tab + + +def displayPlots(): + for x in moose.wildcardFind( '/graphs/#[0]' ): + tab = moose.vec( x ) + for i in range( len( tab ) ): + pylab.plot( tab[i].vector, label=x.name[:-3] + " " + str( i ) ) + pylab.legend() + pylab.figure() + +def main(): + """ + This illustrates the use of rdesigneur to build a simple dendrite with + spines, and then to resize them using spine fields. These are the + fields that would be changed dynamically in a simulation with reactions + that affect spine geometry. + In this simulation there is a propagating reaction wave using a + highly abstracted equation, whose product diffuses into the spines and + makes them bigger. + """ + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + makePlot( 'headDia', eHead, 'getDiameter' ) + + ''' + debug = moose.PyRun( '/pyrun' ) + debug.tick = 10 + debug.runString = """print "RUNNING: ", moose.element( '/model/chem/psd/z' ).n, moose.element( '/model/elec/head0' ).diameter""" + ''' + moose.reinit() + moose.start( runtime ) + + displayPlots() + pylab.plot( oldDia, label = 'old Diameter' ) + pylab.plot( [ i.diameter for i in eHead ], label = 'new Diameter' ) + pylab.legend() + pylab.show() + + app = QtGui.QApplication(sys.argv) + #widget = mv.MoogliViewer( '/model' ) + morphology = moogli.read_morphology_from_moose( name="", path = '/model/elec' ) + widget = moogli.MorphologyViewerWidget( morphology ) + widget.show() + return app.exec_() + quit() + +# Run the 'main' if this script is executed standalone. + +def showVisualization(): + makeModel() + elec = moose.element( '/model/elec' ) + elec.setSpineAndPsdMesh( moose.element('/model/chem/spine'), moose.element('/model/chem/psd') ) + + eHead = moose.wildcardFind( '/model/elec/#head#' ) + oldDia = [ i.diameter for i in eHead ] + graphs = moose.Neutral( '/graphs' ) + #makePlot( 'psd_x', moose.vec( '/model/chem/psd/x' ), 'getN' ) + #makePlot( 'head_x', moose.vec( '/model/chem/spine/x' ), 'getN' ) + makePlot( 'dend_x', moose.vec( '/model/chem/dend/x' ), 'getN' ) + dendZ = makePlot( 'dend_z', moose.vec( '/model/chem/dend/z' ), 'getN' ) + makePlot( 'head_z', moose.vec( '/model/chem/spine/z' ), 'getN' ) + psdZ = makePlot( 'psd_z', moose.vec( '/model/chem/psd/z' ), 'getN' ) + diaTab = makePlot( 'headDia', eHead, 'getDiameter' ) + # print diaTab[0].vector[-1] + # return + dendrite = moose.element("/model/elec/dend") + dendrites = [dendrite.path + "/" + str(i) for i in range(len(dendZ))] + # print dendrites + moose.reinit() + + spineHeads = moose.wildcardFind( '/model/elec/#head#') + # print moose.wildcardFind( '/model/elec/##') + + # print "dendZ", readValues(dendZ) + # print dendrite + + app = QtGui.QApplication(sys.argv) + viewer = create_viewer("/model/elec", dendrite, dendZ, diaTab, psdZ) + viewer.showMaximized() + viewer.start() + return app.exec_() + + +def create_viewer(path, moose_dendrite, dendZ, diaTab, psdZ): + network = moogli.extensions.moose.read(path=path, + vertices=15) + + dendrite = network.groups["dendrite"].shapes[moose_dendrite.path] + chem_compt_group = dendrite.subdivide(len(dendZ)) + normalizer = moogli.utilities.normalizer(0.0, + 300.0, + clipleft=True, + clipright=True) + colormap = moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow) + mapper = moogli.utilities.mapper(colormap, normalizer) + + def readValues(tables): + values = [] + for i in range(len(tables)): + values.append(tables[i].vector[-1]) + return values + + def prelude(view): + view.home() + view.pitch(math.pi / 3.0) + view.zoom(0.3) + network.groups["soma"].set("color", moogli.colors.RED) + network.groups["spine"].groups["shaft"].set("color", + moogli.colors.RED) + + def interlude(view): + moose.start(frameruntime) + network.groups["spine"].groups["head"].set("radius", + readValues(diaTab), + lambda x: x * 0.5e6) + network.groups["spine"].groups["head"].set("color", + readValues(psdZ), + mapper) + chem_compt_group.set("color", + readValues(dendZ), + mapper) + if moose.element("/clock").currentTime >= runtime: + view.stop() + + viewer = moogli.Viewer("Viewer") + viewer.attach_shapes(network.shapes.values()) + viewer.detach_shape(dendrite) + viewer.attach_shapes(chem_compt_group.shapes.values()) + + view = moogli.View("main-view", + prelude=prelude, + interlude=interlude) + cb = moogli.widgets.ColorBar(id="cb", + title="Molecule #", + text_color=moogli.colors.BLACK, + position=moogli.geometry.Vec3f(0.975, 0.5, 0.0), + size=moogli.geometry.Vec3f(0.30, 0.05, 0.0), + text_font="/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf", + orientation=math.pi / 2.0, + text_character_size=20, + label_formatting_precision=0, + colormap=moogli.colors.MatplotlibColorMap(matplotlib.cm.rainbow), + color_resolution=100, + scalar_range=moogli.geometry.Vec2f(0.0, + 300.0)) + view.attach_color_bar(cb) + viewer.attach_view(view) + return viewer + + +if __name__ == '__main__': + showVisualization() From 70ebf93624a74da4fef547242f3b7152e4a22d54 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 10:14:02 +0530 Subject: [PATCH 14/66] Examples only from paper. --- about.html | 36 ------------------------------------ mgui/MWindow.py | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 24 insertions(+), 60 deletions(-) delete mode 100644 about.html diff --git a/about.html b/about.html deleted file mode 100644 index 5345c9c..0000000 --- a/about.html +++ /dev/null @@ -1,36 +0,0 @@ - -
-MOOSE is the Multiscale Object-Oriented Simulation Environment (MOOSE) -

Version 3.0.2pre "Ghevar" - -


-

Copyright (C) 2003-2016 Upinder S. Bhalla and NCBS.

- -

MOOSE is released under the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or (at -your option) any later version.

- -

MOOSE is the Multiscale Object-Oriented Simulation Environment. It is designed -to simulate neural systems ranging from subcellular components and biochemical -reactions to complex models of single neurons, circuits, and large networks. -MOOSE can operate at many levels of detail, from stochastic chemical -computations, to multicompartment single-neuron models, to spiking neuron -network models. - -MOOSE is multiscale: It can do all these calculations together. For example it -handles interactions seamlessly between electrical and chemical signaling. -MOOSE is object-oriented. Biological concepts are mapped into classes, and a -model is built by creating instances of these classes and connecting them by -messages. MOOSE also has classes whose job is to take over difficult -computations in a certain domain, and do them fast. There are such solver -classes for stochastic and deterministic chemistry, for diffusion, and for -multicompartment neuronal models. MOOSE is a simulation environment, not just a -numerical engine: It provides data representations and solvers (of course!), but -also a scripting interface with Python, graphical displays with Matplotlib, -PyQt, and OpenGL, and support for many model formats. These include SBML, -NeuroML, GENESIS kkit and cell.p formats, HDF5 and NSDF for data writing.

- -
- - diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 52d4528..0499b5c 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -153,18 +153,18 @@ def createPopup(self): layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) self.menuitems = OrderedDict([ - ("Fig2C" , "examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E", "examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D", "examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B", "examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)", "examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Fig2C" , "examples/gFig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "examples/gFig2_elecModels/Fig2D.py"), + ("Fig2E", "examples/gFig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa", "examples/gFig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl", "examples/gFig3_chemModels/Fig3ABC.g"), + ("Fig3D", "examples/gFig3_chemModels/Fig3D.py"), + ("Fig4B", "examples/gFig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "examples/gFig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "examples/gFig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)", "examples/gFig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "examples/gFig6_NetMultiscale/Fig6A.py" ), + ("Reduced6 (200s)", "examples/gFig6_NetMultiscale/ReducedModel.py"), ("Squid" , "examples/squid/squid_demo.py") ]) layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) @@ -592,18 +592,18 @@ def getFileMenu(self): if not hasattr(self, 'Paper_2015'): self.menuitems = OrderedDict([ - ("Fig2C (6s)" , "examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E (5s)" , "examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa (2s)", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl (2s)", "examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D (1s)", "examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B (10s)", "examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Fig2C (6s)" , "examples/gFig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "examples/gFig2_elecModels/Fig2D.py"), + ("Fig2E (5s)" , "examples/gFig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa (2s)", "examples/gFig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl (2s)", "examples/gFig3_chemModels/Fig3ABC.g"), + ("Fig3D (1s)", "examples/gFig3_chemModels/Fig3D.py"), + ("Fig4B (10s)", "examples/gFig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "examples/gFig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "examples/gFig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)" , "examples/gFig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "examples/gFig6_NetMultiscale/Fig6A.py" ), + ("Reduced6 (200s)", "examples/gFig6_NetMultiscale/ReducedModel.py"), ("Squid" , "examples/squid/squid_demo.py") ]) self.subMenu = QtGui.QMenu('Paper_2015_Demos') From 2be366814775788463214c020276c1b11c54024d Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 10:15:25 +0530 Subject: [PATCH 15/66] Fixed syntax. --- examples/Fig2_elecModels/Fig2A.py | 6 ++-- examples/Fig2_elecModels/Fig2A_analysis.py | 6 ++-- examples/Fig2_elecModels/Fig2C.py | 22 ++++++------- examples/Fig2_elecModels/Fig2D.py | 6 ++-- examples/Fig2_elecModels/Fig2E.py | 8 ++--- examples/Fig3_chemModels/Fig3D.py | 2 +- examples/Fig3_chemModels/Fig3_NEURON.py | 4 +-- examples/Fig4_ReacDiff/Fig4B.py | 6 ++-- examples/Fig4_ReacDiff/Fig4CDEF.py | 8 ++--- examples/Fig4_ReacDiff/Fig4GHIJ.py | 8 ++--- examples/Fig4_ReacDiff/rxdSpineSize.py | 8 ++--- examples/Fig5_CellMultiscale/Fig5A.py | 8 ++--- examples/Fig5_CellMultiscale/Fig5BCD.py | 10 +++--- examples/Fig6_NetMultiscale/Fig6A.py | 10 +++--- examples/Fig6_NetMultiscale/Fig6BCDE.py | 36 ++++++++++----------- examples/Fig6_NetMultiscale/ReducedModel.py | 28 ++++++++-------- examples/rxdSpineSize.py | 8 ++--- 17 files changed, 92 insertions(+), 92 deletions(-) diff --git a/examples/Fig2_elecModels/Fig2A.py b/examples/Fig2_elecModels/Fig2A.py index 997b5f2..9f00a41 100644 --- a/examples/Fig2_elecModels/Fig2A.py +++ b/examples/Fig2_elecModels/Fig2A.py @@ -224,15 +224,15 @@ def simulate(self,simtime=simtime,dt=dt,plotif=False,**kwargs): t1 = time.time() print('reinit MOOSE -- takes a while ~20s.') moose.reinit() - print('reinit time t = ', time.time() - t1) + print(('reinit time t = ', time.time() - t1)) t1 = time.time() print('starting') simadvance = self.simtime / 50.0 for i in range( 50 ): moose.start( simadvance ) - print('at t = ', i * simadvance, 'realtime = ', time.time() - t1) + print(('at t = ', i * simadvance, 'realtime = ', time.time() - t1)) #moose.start(self.simtime) - print('runtime for ', self.simtime, 'sec, is t = ', time.time() - t1) + print(('runtime for ', self.simtime, 'sec, is t = ', time.time() - t1)) if plotif: self._plot() diff --git a/examples/Fig2_elecModels/Fig2A_analysis.py b/examples/Fig2_elecModels/Fig2A_analysis.py index 8caeccb..fadc704 100644 --- a/examples/Fig2_elecModels/Fig2A_analysis.py +++ b/examples/Fig2_elecModels/Fig2A_analysis.py @@ -13,7 +13,7 @@ plotdt = 1 #s numpts = int(fulltime/plotdt)+1 -print 'reading' +print('reading') wts = [] while True: next_line = '' @@ -23,7 +23,7 @@ if next_line == '': break next_wt = [float(fh.readline()) for i in range(numpts)] wts.append(next_wt) - print 'weight',len(wts) + print('weight',len(wts)) hiAve = np.zeros( len( wts[0] ) ) @@ -54,7 +54,7 @@ def dumpVec( f, name, vec ): f.close() -print 'numHi = ', numHi, ' plotting...' +print('numHi = ', numHi, ' plotting...') figure() plot(transpose(wts)) plot( hiAve, linewidth=4 ) diff --git a/examples/Fig2_elecModels/Fig2C.py b/examples/Fig2_elecModels/Fig2C.py index 5314c3a..5e5aa34 100644 --- a/examples/Fig2_elecModels/Fig2C.py +++ b/examples/Fig2_elecModels/Fig2C.py @@ -182,10 +182,10 @@ def displayPlots(): pylab.figure(2, figsize= (8,10)) ax = pylab.subplot( 1,1,1 ) neuron = moose.element( '/model/elec' ) - comptDistance = dict( zip( neuron.compartments, neuron.pathDistanceFromSoma ) ) + comptDistance = dict( list(zip( neuron.compartments, neuron.pathDistanceFromSoma )) ) for i in moose.wildcardFind( '/library/#[ISA=ChanBase]' ): chans = moose.wildcardFind( '/model/elec/#/' + i.name ) - print i.name, len( chans ) + print(i.name, len( chans )) p = [ 1e6*comptDistance.get( j.parent, 0) for j in chans ] Gbar = [ j.Gbar/(j.parent.length * j.parent.diameter * PI) for j in chans ] if len( p ) > 2: @@ -213,7 +213,7 @@ def create_vm_viewer(rdes): 0.0, 0.1)]) mapper = moogli.utilities.mapper(colormap, normalizer) - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) def prelude(view): @@ -222,7 +222,7 @@ def prelude(view): def interlude(view): moose.start(frameRunTime) - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) view.yaw(0.01) currTime = moose.element('/clock').currentTime @@ -235,7 +235,7 @@ def postlude(view): displayPlots() viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) view = moogli.View("vm-view", prelude=prelude, interlude=interlude, @@ -247,7 +247,7 @@ def postlude(view): def create_ca_viewer(rdes): network = moogli.extensions.moose.read(rdes.elecid.path) ca_elements = [] - for compartment_path in network.shapes.keys(): + for compartment_path in list(network.shapes.keys()): if moose.exists(compartment_path + '/Ca_conc'): ca_elements.append(moose.element(compartment_path + '/Ca_conc')) else: @@ -286,7 +286,7 @@ def interlude(view): view.stop() viewer = moogli.Viewer("ca-viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) view = moogli.View("ca-view", prelude=prelude, interlude=interlude) @@ -294,7 +294,7 @@ def interlude(view): return viewer def build3dDisplay(rdes): - print "building 3d Display" + print("building 3d Display") app = QtGui.QApplication(sys.argv) vm_viewer = create_vm_viewer(rdes) @@ -325,7 +325,7 @@ def deliverStim( currTime ): step = int (currTime / frameRunTime ) probeStep = int( probeInterval / frameRunTime ) if step % probeStep == 0: - print "Doing probe Stim at ", currTime + print("Doing probe Stim at ", currTime) for i in synSpineList: i.activation( probeAmplitude ) @@ -341,7 +341,7 @@ def main(): temp = set( moose.wildcardFind( "/model/elec/#/glu,/model/elec/#/NMDA" ) ) synDendList = list( temp - set( synSpineList ) ) - print "num spine, dend syns = ", len( synSpineList ), len( synDendList ) + print("num spine, dend syns = ", len( synSpineList ), len( synDendList )) moose.reinit() #for i in moose.wildcardFind( '/model/elec/#apical#/#[ISA=CaConcBase]' ): #print i.path, i.length, i.diameter, i.parent.length, i.parent.diameter @@ -350,7 +350,7 @@ def main(): # Run for baseline, tetanus, and post-tetanic settling time t1 = time.time() build3dDisplay(rdes) - print 'real time = ', time.time() - t1 + print('real time = ', time.time() - t1) if __name__ == '__main__': main() diff --git a/examples/Fig2_elecModels/Fig2D.py b/examples/Fig2_elecModels/Fig2D.py index ef8a05e..94ffcd8 100644 --- a/examples/Fig2_elecModels/Fig2D.py +++ b/examples/Fig2_elecModels/Fig2D.py @@ -49,7 +49,7 @@ def create_vm_viewer(rdes): 0.0, 0.9)]) mapper = moogli.utilities.mapper(colormap, normalizer) - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) def interlude(view): @@ -62,7 +62,7 @@ def interlude(view): view.stop() viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) view = moogli.View("vm-view", interlude=interlude) viewer.attach_view(view) @@ -93,7 +93,7 @@ def main(): compts[0].inject = inject ################## Now we set up the display ######################## - print "Setting Up 3D Display" + print("Setting Up 3D Display") app = QtGui.QApplication(sys.argv) vm_viewer = create_vm_viewer(rdes) vm_viewer.showMaximized() diff --git a/examples/Fig2_elecModels/Fig2E.py b/examples/Fig2_elecModels/Fig2E.py index 1a02727..08d6406 100644 --- a/examples/Fig2_elecModels/Fig2E.py +++ b/examples/Fig2_elecModels/Fig2E.py @@ -59,7 +59,7 @@ def create_vm_viewer(rdes, somaVm): 0.9)]) mapper = moogli.utilities.mapper(colormap, normalizer) - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) def prelude(view): @@ -67,7 +67,7 @@ def prelude(view): def interlude(view): moose.start(frameRunTime) - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) view.yaw(0.01) currTime = moose.element('/clock').currentTime @@ -84,7 +84,7 @@ def postlude(view): pylab.show() viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) view = moogli.View("vm-view", prelude=prelude, interlude=interlude, @@ -114,7 +114,7 @@ def main(): compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) compts[0].inject = inject - print "Setting Up 3D Display" + print("Setting Up 3D Display") app = QtGui.QApplication(sys.argv) vm_viewer = create_vm_viewer(rdes, somaVm) vm_viewer.show() diff --git a/examples/Fig3_chemModels/Fig3D.py b/examples/Fig3_chemModels/Fig3D.py index b2117f2..531758b 100644 --- a/examples/Fig3_chemModels/Fig3D.py +++ b/examples/Fig3_chemModels/Fig3D.py @@ -59,7 +59,7 @@ for t in range( 0, runtime-1, updateDt ): moose.start( updateDt ) plt = pylab.plot( x, c.vec.n, label='t = '+str(t + updateDt) ) -print "Time = ", time.time() - t1 +print("Time = ", time.time() - t1) pylab.ylim( 0, 1.05 ) pylab.legend() diff --git a/examples/Fig3_chemModels/Fig3_NEURON.py b/examples/Fig3_chemModels/Fig3_NEURON.py index ea4330c..6032b2c 100644 --- a/examples/Fig3_chemModels/Fig3_NEURON.py +++ b/examples/Fig3_chemModels/Fig3_NEURON.py @@ -36,9 +36,9 @@ def plot_it(color='k'): interval = 50 t1 = time.time() -for i in xrange(1, 5): +for i in range(1, 5): h.continuerun(i * interval) plot_it() -print "Time = ", time.time() - t1 +print("Time = ", time.time() - t1) pyplot.show() diff --git a/examples/Fig4_ReacDiff/Fig4B.py b/examples/Fig4_ReacDiff/Fig4B.py index fd3029f..e9b55c2 100644 --- a/examples/Fig4_ReacDiff/Fig4B.py +++ b/examples/Fig4_ReacDiff/Fig4B.py @@ -130,7 +130,7 @@ def createVmViewer(rdes): mapper = moogli.utilities.mapper(colormap, normalizer) def prelude(view): - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) view.pitch(PI/2.0) view.down(450) @@ -145,7 +145,7 @@ def interlude(view): view.yaw(0.01) viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) view = moogli.View("vm-view", prelude=prelude, interlude=interlude) @@ -167,7 +167,7 @@ def main(): if do3D: app = QtGui.QApplication(sys.argv) compts = moose.wildcardFind( "/model/elec/#[ISA=CompartmentBase]" ) - print "LEN = ", len( compts ) + print("LEN = ", len( compts )) for i in compts: n = i.name[:4] if ( n == 'head' or n == 'shaf' ): diff --git a/examples/Fig4_ReacDiff/Fig4CDEF.py b/examples/Fig4_ReacDiff/Fig4CDEF.py index 5d76909..09c2050 100644 --- a/examples/Fig4_ReacDiff/Fig4CDEF.py +++ b/examples/Fig4_ReacDiff/Fig4CDEF.py @@ -175,7 +175,7 @@ def displayPlots(): for k in i[0].vec: plt.plot( timePts, k.vector * i[4] ) #plt.title( i.name ) - print i[0].name + print(i[0].name) plt.xlabel( 'Time (s)', fontsize = 16 ) plt.show() @@ -194,7 +194,7 @@ def main(): moose.reinit() buildPlots() # Run for baseline, tetanus, and post-tetanic settling time - print 'starting...' + print('starting...') t1 = time.time() moose.start( baselineTime ) caPsd = moose.vec( '/model/chem/psd/Ca_input' ) @@ -218,12 +218,12 @@ def main(): caPsd.concInit = basalCa caDend.concInit = basalCa moose.start( postLtdTime ) - print 'real time = ', time.time() - t1 + print('real time = ', time.time() - t1) if do3D: app = QtGui.QApplication(sys.argv) compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) - ecomptPath = map( lambda x : x.path, compts ) + ecomptPath = [x.path for x in compts] morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) diff --git a/examples/Fig4_ReacDiff/Fig4GHIJ.py b/examples/Fig4_ReacDiff/Fig4GHIJ.py index 997dfd9..ca99951 100644 --- a/examples/Fig4_ReacDiff/Fig4GHIJ.py +++ b/examples/Fig4_ReacDiff/Fig4GHIJ.py @@ -175,7 +175,7 @@ def displayPlots(): for k in i[0].vec: plt.plot( timePts, k.vector * i[4] ) #plt.title( i.name ) - print i[0].name + print(i[0].name) plt.xlabel( 'Time (s)', fontsize = 16 ) plt.show() @@ -194,7 +194,7 @@ def main(): moose.reinit() buildPlots() # Run for baseline, tetanus, and post-tetanic settling time - print 'starting...' + print('starting...') t1 = time.time() moose.start( baselineTime ) caPsd = moose.vec( '/model/chem/psd/Ca_input' ) @@ -218,12 +218,12 @@ def main(): caPsd.concInit = basalCa caDend.concInit = basalCa moose.start( postLtdTime ) - print 'real time = ', time.time() - t1 + print('real time = ', time.time() - t1) if do3D: app = QtGui.QApplication(sys.argv) compts = moose.wildcardFind( "/model/elec/#[ISA=compartmentBase]" ) - ecomptPath = map( lambda x : x.path, compts ) + ecomptPath = [x.path for x in compts] morphology = moogli.read_morphology_from_moose(name = "", path = "/model/elec") morphology.create_group( "group_all", ecomptPath, -0.08, 0.02, \ [0.0, 0.5, 1.0, 1.0], [1.0, 0.0, 0.0, 0.9] ) diff --git a/examples/Fig4_ReacDiff/rxdSpineSize.py b/examples/Fig4_ReacDiff/rxdSpineSize.py index 1d071ab..5065332 100644 --- a/examples/Fig4_ReacDiff/rxdSpineSize.py +++ b/examples/Fig4_ReacDiff/rxdSpineSize.py @@ -54,7 +54,7 @@ def makeChemProto( name ): chem = moose.Neutral( '/library/' + name ) comptVol = diffLen * dendDia * dendDia * PI / 4.0 for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): - print 'making ', i + print('making ', i) compt = moose.CubeMesh( chem.path + '/' + i[0] ) compt.volume = i[1] #x = moose.Pool( compt.path + '/x' ) @@ -72,7 +72,7 @@ def makeChemProto( name ): x.diffConst = diffConst func = moose.Function( x.path + '/func' ) func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" - print func.expr + print(func.expr) func.x.num = 1 moose.connect( x, 'nOut', func.x[0], 'input' ) moose.connect( func, 'valueOut', x, 'increment' ) @@ -264,9 +264,9 @@ def interlude(view): view.stop() viewer = moogli.Viewer("Viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) viewer.detach_shape(dendrite) - viewer.attach_shapes(chem_compt_group.shapes.values()) + viewer.attach_shapes(list(chem_compt_group.shapes.values())) view = moogli.View("main-view", prelude=prelude, diff --git a/examples/Fig5_CellMultiscale/Fig5A.py b/examples/Fig5_CellMultiscale/Fig5A.py index 330516e..75bb21b 100644 --- a/examples/Fig5_CellMultiscale/Fig5A.py +++ b/examples/Fig5_CellMultiscale/Fig5A.py @@ -109,7 +109,7 @@ def interlude( view ): view.yaw( 0.01 ) def create_viewer(rdes): - print ' doing viewer for ', rdes.soma.path + print(' doing viewer for ', rdes.soma.path) network = moogli.extensions.moose.read(rdes.elecid.path) normalizer = moogli.utilities.normalizer(-0.08, 0.02, @@ -125,10 +125,10 @@ def create_viewer(rdes): 0.9)]) mapper = moogli.utilities.mapper(colormap, normalizer) - vms = [moose.element(x).Vm for x in network.shapes.keys()] + vms = [moose.element(x).Vm for x in list(network.shapes.keys())] network.set("color", vms, mapper) viewer = moogli.Viewer("vm-viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) view = moogli.View("vm-view", interlude=interlude ) viewer.attach_view(view) viewer.show() @@ -143,7 +143,7 @@ def main(): viewers = [] j = 0 for i in elecFileNames: - print i + print(i) ename = '/model' + str(j) rdes.cellProtoList = [ ['./cells/' + i, 'elec' ] ] rdes.buildModel( ename ) diff --git a/examples/Fig5_CellMultiscale/Fig5BCD.py b/examples/Fig5_CellMultiscale/Fig5BCD.py index 78595b4..b77cce6 100644 --- a/examples/Fig5_CellMultiscale/Fig5BCD.py +++ b/examples/Fig5_CellMultiscale/Fig5BCD.py @@ -197,7 +197,7 @@ def buildPlots( rdes ): moose.connect( eSpineGkTab, 'requestOut', path, 'getGk' ) def saveAndClearPlots( name ): - print 'saveAndClearPlots( ', name, ' )' + print('saveAndClearPlots( ', name, ' )') for i in moose.wildcardFind( "/graphs/#" ): #plot stuff i.xplot( name + '.xplot', i.name ) @@ -208,8 +208,8 @@ def printPsd( name ): psdR = moose.vec( '/model/chem/psd/tot_PSD_R' ) neuronVoxel = moose.element( '/model/chem/spine' ).neuronVoxel elecComptMap = moose.element( '/model/chem/dend' ).elecComptMap - print "len( neuronVoxel = ", len( neuronVoxel), min( neuronVoxel), max( neuronVoxel) - print len( elecComptMap), elecComptMap[0], elecComptMap[12] + print("len( neuronVoxel = ", len( neuronVoxel), min( neuronVoxel), max( neuronVoxel)) + print(len( elecComptMap), elecComptMap[0], elecComptMap[12]) neuron = moose.element( '/model/elec' ) ncompts = neuron.compartments d = {} @@ -255,7 +255,7 @@ def main(): numpy.random.seed( 1234 ) rdes = buildRdesigneur() for i in elecFileNames: - print i + print(i) rdes.cellProtoList = [ ['./cells/' + i, 'elec'] ] rdes.buildModel( '/model' ) assert( moose.exists( '/model' ) ) @@ -270,7 +270,7 @@ def main(): probeStimulus( baselineTime ) tetanicStimulus( tetTime ) probeStimulus( postTetTime ) - print 'real time = ', time.time() - t1 + print('real time = ', time.time() - t1) printPsd( i + ".fig5" ) saveAndClearPlots( i + ".fig5" ) diff --git a/examples/Fig6_NetMultiscale/Fig6A.py b/examples/Fig6_NetMultiscale/Fig6A.py index 752fa89..a527fea 100644 --- a/examples/Fig6_NetMultiscale/Fig6A.py +++ b/examples/Fig6_NetMultiscale/Fig6A.py @@ -319,7 +319,7 @@ def _init_plots(self): numVms = 10 self.plots = moose.Table( '/plotVms', numVms ) ## draw numVms out of N neurons - nrnIdxs = random.sample(range(self.N),numVms) + nrnIdxs = random.sample(list(range(self.N)),numVms) for i in range( numVms ): moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ self.plots.vec[i], 'input') @@ -444,7 +444,7 @@ def create_viewer(rdes): # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in - network.groups["spine"].groups["head"].shapes.values()] + list(network.groups["spine"].groups["head"].shapes.values())] # print "Creating LIFS" soma = network.shapes[rdes.soma.path] @@ -474,8 +474,8 @@ def create_viewer(rdes): # print "Creating Viewer" viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) # print "Created Viewer" - viewer.attach_shapes(network.shapes.values()) - viewer.attach_shapes(lifs.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) + viewer.attach_shapes(list(lifs.shapes.values())) # print "Attached Shapes" view = moogli.View("view", interlude=interlude) viewer.attach_view(view) @@ -492,7 +492,7 @@ def create_viewer(rdes): ## Instantiate either ExcInhNetBase or ExcInhNet below #net = ExcInhNetBase(N=N) net = ExcInhNet(N=N) - print net + print(net) moose.le( '/' ) moose.le( '/network' ) rdes = buildRdesigneur() diff --git a/examples/Fig6_NetMultiscale/Fig6BCDE.py b/examples/Fig6_NetMultiscale/Fig6BCDE.py index 066e68d..6d79570 100644 --- a/examples/Fig6_NetMultiscale/Fig6BCDE.py +++ b/examples/Fig6_NetMultiscale/Fig6BCDE.py @@ -309,7 +309,7 @@ def connectDetailedNeuron(): x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax #x.parent.tick = 4 x.parent.parent.tick = 4 - print '+', + print('+', end=' ') totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar seed = excSeed @@ -325,7 +325,7 @@ def connectDetailedNeuron(): x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax #x.parent.tick = 4 x.parent.parent.tick = 4 - print '*', + print('*', end=' ') totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar seed = inhSeed @@ -340,11 +340,11 @@ def connectDetailedNeuron(): x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax #x.parent.tick = 4 x.parent.parent.tick = 4 - print '-', + print('-', end=' ') totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar - print 'connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh - print 'connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt + print('connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh) + print('connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt) ############################################# # Exc-Inh network base class without connections @@ -447,7 +447,7 @@ def _init_plots(self): numVms = 10 self.plots = moose.Table( '/plotVms', numVms ) ## draw numVms out of N neurons - nrnIdxs = random.sample(range(self.N),numVms) + nrnIdxs = random.sample(list(range(self.N)),numVms) for i in range( numVms ): moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ self.plots.vec[i], 'input') @@ -572,7 +572,7 @@ def _setup_network(self): ## Connections from some Exc neurons to each Exc neuron ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(self.NmaxExc),self.excC) + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synidx = i*self.excC+synnum @@ -625,7 +625,7 @@ def _setup_network(self): ## Connections from some Inh neurons to each Exc neuron ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synij = self.synsIE.vec[i].synapse[synnum] @@ -640,7 +640,7 @@ def _setup_network(self): self.synsI.vec[i].numSynapses = self.incC ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(self.NmaxExc),self.excC) + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synij = self.synsI.vec[i].synapse[synnum] @@ -650,7 +650,7 @@ def _setup_network(self): synij.weight = self.J # activation = weight ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synij = self.synsI.vec[i].synapse[ self.excC + synnum ] @@ -828,7 +828,7 @@ def create_viewer(rdes): # dendrite.set_colors(moogli.core.Vec4f(173 / 255.0, 216 / 255.0, 230 / 255.0, 1.0)) [shape.set_radius(shape.get_apex_radius() * 4.0) for shape in - network.groups["spine"].groups["head"].shapes.values()] + list(network.groups["spine"].groups["head"].shapes.values())] # print "Creating LIFS" soma = network.shapes[rdes.soma.path] @@ -858,8 +858,8 @@ def create_viewer(rdes): # print "Creating Viewer" viewer = moogli.Viewer("viewer") # prelude = prelude, interlude = interlude) # print "Created Viewer" - viewer.attach_shapes(network.shapes.values()) - viewer.attach_shapes(lifs.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) + viewer.attach_shapes(list(lifs.shapes.values())) # print "Attached Shapes" view = moogli.View("view") viewer.attach_view(view) @@ -873,7 +873,7 @@ def create_viewer(rdes): ## Instantiate either ExcInhNetBase or ExcInhNet below #net = ExcInhNetBase(N=N) net = ExcInhNet(N=N) - print net + print(net) moose.le( '/' ) moose.le( '/network' ) rdes = buildRdesigneur() @@ -916,17 +916,17 @@ def create_viewer(rdes): moose.reinit() t1 = time.time() - print 'starting' + print('starting') #moose.start(simtime) for currTime in np.arange( 0, simtime, updateDt ): moose.start(updateDt) lastt = net.network.vec.lastEventTime lastt = np.exp( 2 * (lastt - currTime ) ) - print currTime, time.time() - t1 + print(currTime, time.time() - t1) ret.set_array( lastt ) fig2.canvas.draw() - print 'runtime, t = ', time.time() - t1 + print('runtime, t = ', time.time() - t1) if plotif: net._plot( fig ) @@ -937,4 +937,4 @@ def create_viewer(rdes): plt.show() plt.savefig( fname + '.svg', bbox_inches='tight') print( "Hit 'enter' to exit" ) - raw_input() + input() diff --git a/examples/Fig6_NetMultiscale/ReducedModel.py b/examples/Fig6_NetMultiscale/ReducedModel.py index 6b0ae96..c3bf4c5 100644 --- a/examples/Fig6_NetMultiscale/ReducedModel.py +++ b/examples/Fig6_NetMultiscale/ReducedModel.py @@ -314,7 +314,7 @@ def connectDetailedNeuron(): x.vec.weight = nprand.rand( exc.numEntries ) * excWeightMax #x.parent.tick = 4 x.parent.parent.tick = 4 - print '+', + print('+', end=' ') totGluWt += sum(x.vec.weight) * x.parent.parent.Gbar seed = excSeed @@ -330,7 +330,7 @@ def connectDetailedNeuron(): x.vec.weight = nprand.rand( exc.numEntries ) * nmdaWeightMax #x.parent.tick = 4 x.parent.parent.tick = 4 - print '*', + print('*', end=' ') totNMDAWt += sum(x.vec.weight) * x.parent.parent.Gbar seed = inhSeed @@ -345,11 +345,11 @@ def connectDetailedNeuron(): x.vec.weight = nprand.rand( inh.numEntries ) * inhWeightMax #x.parent.tick = 4 x.parent.parent.tick = 4 - print '-', + print('-', end=' ') totGABAWt += sum(x.vec.weight) * x.parent.parent.Gbar - print 'connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh - print 'connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt + print('connectDetailedNeuron: numExc = ', numExc, ', numNMDA=', numNMDA, ', numInh = ', numInh) + print('connectDetailedNeuron: totWts Glu = ', totGluWt, ', NMDA = ', totNMDAWt, ', GABA = ', totGABAWt) ############################################# # Exc-Inh network base class without connections @@ -452,7 +452,7 @@ def _init_plots(self): numVms = 10 self.plots = moose.Table( '/plotVms', numVms ) ## draw numVms out of N neurons - nrnIdxs = random.sample(range(self.N),numVms) + nrnIdxs = random.sample(list(range(self.N)),numVms) for i in range( numVms ): moose.connect( self.network.vec[nrnIdxs[i]], 'VmOut', \ self.plots.vec[i], 'input') @@ -577,7 +577,7 @@ def _setup_network(self): ## Connections from some Exc neurons to each Exc neuron ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(self.NmaxExc),self.excC) + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synidx = i*self.excC+synnum @@ -630,7 +630,7 @@ def _setup_network(self): ## Connections from some Inh neurons to each Exc neuron ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synij = self.synsIE.vec[i].synapse[synnum] @@ -645,7 +645,7 @@ def _setup_network(self): self.synsI.vec[i].numSynapses = self.incC ## draw excC number of neuron indices out of NmaxExc neurons - preIdxs = random.sample(range(self.NmaxExc),self.excC) + preIdxs = random.sample(list(range(self.NmaxExc)),self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synij = self.synsI.vec[i].synapse[synnum] @@ -655,7 +655,7 @@ def _setup_network(self): synij.weight = self.J # activation = weight ## draw inhC=incC-excC number of neuron indices out of inhibitory neurons - preIdxs = random.sample(range(self.NmaxExc,self.N),self.incC-self.excC) + preIdxs = random.sample(list(range(self.NmaxExc,self.N)),self.incC-self.excC) ## connect these presynaptically to i-th post-synaptic neuron for synnum,preIdx in enumerate(preIdxs): synij = self.synsI.vec[i].synapse[ self.excC + synnum ] @@ -829,7 +829,7 @@ def saveNeuronPlots( fig, rdes ): ## Instantiate either ExcInhNetBase or ExcInhNet below #net = ExcInhNetBase(N=N) net = ExcInhNet(N=N) - print net + print(net) moose.le( '/' ) moose.le( '/network' ) rdes = buildRdesigneur() @@ -865,7 +865,7 @@ def saveNeuronPlots( fig, rdes ): moose.reinit() t1 = time.time() - print 'starting' + print('starting') for currTime in np.arange( 0, simtime, updateDt ): moose.start(updateDt) lastt = net.network.vec.lastEventTime @@ -874,7 +874,7 @@ def saveNeuronPlots( fig, rdes ): ret.set_array( lastt ) fig2.canvas.draw() - print 'runtime, t = ', time.time() - t1 + print('runtime, t = ', time.time() - t1) if plotif: net._plot( fig ) @@ -884,4 +884,4 @@ def saveNeuronPlots( fig, rdes ): plt.show() plt.savefig( fname + '.svg', bbox_inches='tight') print( "Hit 'enter' to exit" ) - raw_input() + input() diff --git a/examples/rxdSpineSize.py b/examples/rxdSpineSize.py index c6fb828..77a9fec 100644 --- a/examples/rxdSpineSize.py +++ b/examples/rxdSpineSize.py @@ -54,7 +54,7 @@ def makeChemProto( name ): chem = moose.Neutral( '/library/' + name ) comptVol = diffLen * dendDia * dendDia * PI / 4.0 for i in ( ['dend', comptVol], ['spine', 1e-19], ['psd', 1e-20] ): - print 'making ', i + print(('making ', i)) compt = moose.CubeMesh( chem.path + '/' + i[0] ) compt.volume = i[1] #x = moose.Pool( compt.path + '/x' ) @@ -72,7 +72,7 @@ def makeChemProto( name ): x.diffConst = diffConst func = moose.Function( x.path + '/func' ) func.expr = "-x0 * (0.3 - " + nstr + " * x0) * ( 1 - " + nstr + " * x0)" - print func.expr + print((func.expr)) func.x.num = 1 moose.connect( x, 'nOut', func.x[0], 'input' ) moose.connect( func, 'valueOut', x, 'increment' ) @@ -264,9 +264,9 @@ def interlude(view): view.stop() viewer = moogli.Viewer("Viewer") - viewer.attach_shapes(network.shapes.values()) + viewer.attach_shapes(list(network.shapes.values())) viewer.detach_shape(dendrite) - viewer.attach_shapes(chem_compt_group.shapes.values()) + viewer.attach_shapes(list(chem_compt_group.shapes.values())) view = moogli.View("main-view", prelude=prelude, From 311706e83ad65ad75ea038b6a986fdf52cc8adbb Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 10:28:55 +0530 Subject: [PATCH 16/66] Cleanup in qsettings. --- mgui/config.py | 87 +++++--------------------------------------------- 1 file changed, 8 insertions(+), 79 deletions(-) diff --git a/mgui/config.py b/mgui/config.py index 0c91f28..f186453 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -61,8 +61,8 @@ logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', datefmt='%m-%d %H:%M', - filename='moose-gui.log', - filemode='w' + filename='moosegui.log', + filemode='a' ) console = logging.StreamHandler() console.setLevel(logging.INFO) @@ -71,10 +71,6 @@ _logger = logging.getLogger('') _logger.addHandler(console) -TEMPDIR = tempfile.gettempdir() -KEY_FIRSTTIME = 'firsttime' -# KEY_STATE_FILE = 'statefile' - KEY_UNDO_LENGTH = 'main/undolength' KEY_WINDOW_GEOMETRY = 'main/geometry' KEY_WINDOW_LAYOUT = 'main/layout' @@ -105,23 +101,18 @@ QT_MINOR_VERSION = int(QT_VERSION[1]) MOOSE_DOC_URL = 'http://moose.ncbs.res.in/builtins_classes/moose_builtins.html' -MOOSE_REPORT_BUG_URL = 'http://sourceforge.net/tracker/?func=add&group_id=165660&atid=836272' +MOOSE_REPORT_BUG_URL = 'http://github.com/BhallaLab/moose/issues' MOOSE_GUI_BUG_URL = 'https://github.com/BhallaLab/moose-gui/issues' MOOSE_CORE_BUG_URL = 'https://github.com/BhallaLab/moose-core/issues' -MOOSE_DEMOS_DIR = '/usr/share/moose/Demos' MOOSE_DOCS_DIR = '/usr/share/doc/moose' + MOOSE_GUI_DIR = os.path.dirname(os.path.abspath(__file__)) MOOSE_PLUGIN_DIR = os.path.join(MOOSE_GUI_DIR, 'plugins') NEUROKIT_PLUGIN_DIR = os.path.join(MOOSE_GUI_DIR, 'plugins/NeuroKit') -# MOOSE_CFG_DIR = os.path.join(os.environ['HOME'], '.moose') -MOOSE_LOCAL_DIR = os.path.join(os.environ['HOME'], 'moose') MOOSE_NUMPTHREADS = '1' -MOOSE_ABOUT_FILE = os.path.join(MOOSE_GUI_DIR, 'about.html') MOOSE_UNDO_LENGTH = 128 # Arbitrary undo length -LOCAL_BUILD = False -sys.path.append(os.path.join(MOOSE_PLUGIN_DIR)) def qvalue( qsetting, key ): """ Return value as unicode from QSetting object. @@ -152,9 +143,6 @@ def __new__(cls, *args, **kwargs): # creates it. if cls._instance is None: cls._instance = super(MooseSetting, cls).__new__(cls, *args, **kwargs) - firsttime, errs = init_dirs() - for e in errs: - print(e) QtCore.QCoreApplication.setOrganizationName('NCBS Bangalore') QtCore.QCoreApplication.setOrganizationDomain('ncbs.res.in') QtCore.QCoreApplication.setApplicationName('MOOSE') @@ -163,17 +151,12 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_COLORMAP_DIR, os.path.join(MOOSE_GUI_DIR, 'colormaps')) cls._instance.qsettings.setValue(KEY_BIOMODEL_DIR, os.path.join(MOOSE_GUI_DIR, 'bioModels')) cls._instance.qsettings.setValue(KEY_ICON_DIR, os.path.join(MOOSE_GUI_DIR, 'icons')) - _logger.info( "Icon directory is %s" % KEY_ICON_DIR ) cls._instance.qsettings.setValue(KEY_NUMPTHREADS, '1') cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, ('%s' % MOOSE_UNDO_LENGTH)) # These are to be checked at every run cls._instance.qsettings.setValue(KEY_HOME_DIR, os.environ['HOME']) cls._instance.qsettings.setValue(KEY_DEMOS_DIR, MOOSE_DEMOS_DIR) - cls._instance.qsettings.setValue(KEY_LOCAL_DEMOS_DIR, os.path.join(MOOSE_LOCAL_DIR, 'Demos/')) cls._instance.qsettings.setValue(KEY_DOCS_DIR, MOOSE_DOCS_DIR) - cls._instance.qsettings.setValue(KEY_MOOSE_LOCAL_DIR, MOOSE_LOCAL_DIR) - cls._instance.qsettings.setValue(KEY_LOCAL_BUILD, LOCAL_BUILD) - os.environ['NUMPTHREADS'] = qvalue(cls._instance.qsettings, KEY_NUMPTHREADS) return cls._instance def __init__(self, *args, **kwargs): @@ -183,7 +166,7 @@ def __iter__(self): return ('%s' % key for key in self.qsettings.allKeys()) def __setitem__(self, key, value): - if isinstance(key, str): + if isinstance(key, type("")): self.qsettings.setValue(key, value) else: raise TypeError('Expect only strings as keys') @@ -193,67 +176,13 @@ def __getitem__(self, key): return val def keys(self): - return [unicode(key) for key in self.qsettings.allKeys()] + return ['%s' % key for key in self.qsettings.allKeys()] def values(self): - return [unicode(self.qsettings.value(key)) for key in self.qsettings.allKeys()] + return [ qvalue(self.qsettings, key)) for key in self.qsettings.allKeys()] def itervalues(self): - return (unicode(self.qsettings.value(key)) for key in self.qsettings.allKeys()) + return ( qvalue(self.qsettings, key) for key in self.qsettings.allKeys()) -def init_dirs(): - """Check if there is a `.moose` directory in user's home - directory. If not, we assume this to be the first run of MOOSE. - Then we try to create the `~/.moose` directory and `~/moose` - directory. - """ - firsttime = False - global MOOSE_DEMOS_DIR - global MOOSE_LOCAL_DIR - # global MOOSE_CFG_DIR - global MOOSE_DOCS_DIR - global LOCAL_BUILD - # If we have a Makefile above GUI directory, then this must be a - # locally built version - LOCAL_BUILD = os.access(os.path.join(MOOSE_GUI_DIR, '../Makefile'), os.R_OK) - errors = [] - ''' - moose_cfg_dir = os.path.join(os.environ['HOME'], '.moose') - if not os.path.exists(moose_cfg_dir): - firsttime = True - # try: - # # os.mkdir(moose_cfg_dir) - # # # MOOSE_CFG_DIR = moose_cfg_dir - # # print 'Created moose configuration directory:', moose_cfg_dir - # except OSError, e: - # errors.append(e) - # print e - if LOCAL_BUILD: - MOOSE_LOCAL_DIR = os.path.normpath(os.path.join(MOOSE_GUI_DIR, '..')) - MOOSE_DEMOS_DIR = os.path.join(MOOSE_LOCAL_DIR, 'Demos') - MOOSE_DOCS_DIR = os.path.join(MOOSE_LOCAL_DIR, 'Docs/user/py/_build/html/') - else: - MOOSE_LOCAL_DIR = os.path.join(os.environ['HOME'], 'moose') - if not os.path.exists(MOOSE_LOCAL_DIR): - try: - os.mkdir(MOOSE_LOCAL_DIR) - print 'Created local moose directory:', MOOSE_LOCAL_DIR - except OSError, e: - errors.append(e) - print e - if not os.access(MOOSE_DOCS_DIR, os.R_OK + os.X_OK): - print "Could not access Demos directory: %s" % (MOOSE_DOCS_DIR) - errors.append(OSError(errno.EACCES, 'Cannot access %s' % (MOOSE_DOCS_DIR))) - ''' - return firsttime, errors settings = MooseSetting() - -# LOG_FILENAME = os.path.join(TEMPDIR, 'moose.log') -LOG_LEVEL = logging.ERROR -# logging.basicConfig(filename=LOG_FILENAME, level=LOG_LEVEL, filemode='w', format='%(asctime)s %(levelname)s %(name)s %(filename)s %(funcName)s: %(lineno)d: %(message)s') -logging.basicConfig(stream=sys.stdout, level=LOG_LEVEL, filemode='w', format='%(asctime)s %(levelname)s %(name)s %(filename)s %(funcName)s: %(lineno)d: %(message)s') -LOGGER = logging.getLogger('moose') -BENCHMARK_LOGGER = logging.getLogger('moose.benchmark') -BENCHMARK_LOGGER.setLevel(logging.INFO) - From cde7c04823297789e023caefc7e19cf401966dab Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 11:11:37 +0530 Subject: [PATCH 17/66] String/float comparision fixes. --- mgui/MWindow.py | 55 ++++--- mgui/config.py | 9 +- mgui/mgui.py | 2 +- mgui/plugins/default.py | 326 ++-------------------------------------- mgui/plugins/kkit.py | 82 +++++----- 5 files changed, 92 insertions(+), 382 deletions(-) diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 0499b5c..ae69fff 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -153,18 +153,18 @@ def createPopup(self): layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) self.menuitems = OrderedDict([ - ("Fig2C" , "examples/gFig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "examples/gFig2_elecModels/Fig2D.py"), - ("Fig2E", "examples/gFig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa", "examples/gFig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl", "examples/gFig3_chemModels/Fig3ABC.g"), - ("Fig3D", "examples/gFig3_chemModels/Fig3D.py"), - ("Fig4B", "examples/gFig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "examples/gFig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "examples/gFig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)", "examples/gFig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "examples/gFig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "examples/gFig6_NetMultiscale/ReducedModel.py"), + ("Fig2C" , "examples/Fig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "examples/Fig2_elecModels/Fig2D.py"), + ("Fig2E", "examples/Fig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa", "examples/Fig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl", "examples/Fig3_chemModels/Fig3ABC.g"), + ("Fig3D", "examples/Fig3_chemModels/Fig3D.py"), + ("Fig4B", "examples/Fig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "examples/Fig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "examples/Fig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)", "examples/Fig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "examples/Fig6_NetMultiscale/Fig6A.py" ), + ("Reduced6 (200s)", "examples/Fig6_NetMultiscale/ReducedModel.py"), ("Squid" , "examples/squid/squid_demo.py") ]) layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) @@ -311,16 +311,24 @@ def loadPluginModule(self, name, re=False): module from {MOOSE_GUI_DIRECTORY}/plugins directory. If re is True, the plugin is reloaded. + """ + _logger.info( "Loading plugin '%s' from %s" % ( name, + config.MOOSE_PLUGIN_DIR ) + ) if (not re) and name in sys.modules: + _logger.debug( "\tThis plugin is already loaded" ) return sys.modules[name] - fp, pathname, description = imp.find_module(name, [config.MOOSE_PLUGIN_DIR]) + fp, pathname, description = imp.find_module( + name, [ config.MOOSE_PLUGIN_DIR ] + ) + _logger.debug( "Found modules %s, %s" % (pathname, description) ) try: module = imp.load_module(name, fp, pathname, description) except Exception as e: - _logger.warn( "Could not load module %s' % fp" ) - _logger.debug( "Error was %s" % e ) + _logger.warn( "Could not load module %s" % fp ) + _logger.debug( "\tError was %s" % e ) module = "" if fp: fp.close() @@ -367,16 +375,15 @@ def loadPluginClass(self, name, re=False): MoosePluginBase. Otherwise the first such class found will be loaded. """ - try: + if name in self._loadedPlugins: return self._loadedPlugins[name] - except KeyError: - pluginModule = self.loadPluginModule(name, re=re) - for classname, classobj in inspect.getmembers(pluginModule, inspect.isclass): - if issubclass(classobj, mplugin.MoosePluginBase): - self._loadedPlugins[name] = classobj - # classobj.getEditorView().getCentralWidget().editObject.connect(self.objectEditSlot) - return self._loadedPlugins[name] - raise Exception('No plugin with name: %s' % (name)) + + pluginModule = self.loadPluginModule(name, re=re) + for classname, classobj in inspect.getmembers(pluginModule, inspect.isclass): + if issubclass(classobj, mplugin.MoosePluginBase): + self._loadedPlugins[name] = classobj + return self._loadedPlugins[name] + raise IndexError('No plugin with name: %s' % name) def setPlugin(self, name, root='/'): """Set the current plugin to use. diff --git a/mgui/config.py b/mgui/config.py index f186453..4dc6c34 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -65,7 +65,7 @@ filemode='a' ) console = logging.StreamHandler() -console.setLevel(logging.INFO) +console.setLevel(logging.DEBUG) formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') console.setFormatter(formatter) _logger = logging.getLogger('') @@ -113,6 +113,10 @@ MOOSE_UNDO_LENGTH = 128 # Arbitrary undo length +# It is important that MOOSE_PLUGIN_DIR is added to system path. This is ued to +# search multiple plugins. +sys.path.append( MOOSE_PLUGIN_DIR ) + def qvalue( qsetting, key ): """ Return value as unicode from QSetting object. @@ -155,7 +159,6 @@ def __new__(cls, *args, **kwargs): cls._instance.qsettings.setValue(KEY_UNDO_LENGTH, ('%s' % MOOSE_UNDO_LENGTH)) # These are to be checked at every run cls._instance.qsettings.setValue(KEY_HOME_DIR, os.environ['HOME']) - cls._instance.qsettings.setValue(KEY_DEMOS_DIR, MOOSE_DEMOS_DIR) cls._instance.qsettings.setValue(KEY_DOCS_DIR, MOOSE_DOCS_DIR) return cls._instance @@ -179,7 +182,7 @@ def keys(self): return ['%s' % key for key in self.qsettings.allKeys()] def values(self): - return [ qvalue(self.qsettings, key)) for key in self.qsettings.allKeys()] + return [ qvalue(self.qsettings, key) for key in self.qsettings.allKeys()] def itervalues(self): return ( qvalue(self.qsettings, key) for key in self.qsettings.allKeys()) diff --git a/mgui/mgui.py b/mgui/mgui.py index 792c897..ad564ed 100644 --- a/mgui/mgui.py +++ b/mgui/mgui.py @@ -33,7 +33,7 @@ def main(): mWindow.setWindowState(QtCore.Qt.WindowMaximized) sys.excepthook = mWindow.handleException mWindow.show() - config.settings[config.KEY_FIRSTTIME] = 'False' + # config.settings[config.KEY_FIRSTTIME] = 'False' sys.exit( app_.exec_() ) if __name__ == '__main__': diff --git a/mgui/plugins/default.py b/mgui/plugins/default.py index 909f8ac..a49072b 100644 --- a/mgui/plugins/default.py +++ b/mgui/plugins/default.py @@ -5,10 +5,6 @@ # Author: Subhasis Ray # Maintainer: # Created: Tue Nov 13 15:58:31 2012 (+0530) -# Version: -# Last-Updated: Thu Jul 18 10:35:00 2013 (+0530) -# By: subha -# Update #: 2244 # URL: # Keywords: # Compatibility: @@ -21,63 +17,37 @@ # # -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: +from __future__ import print_function import sys -from mgui import config import pickle import os from collections import defaultdict import numpy as np -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt + +from matplotlib import rcParams +from matplotlib.lines import Line2D +from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar +rcParams.update({'figure.autolayout': True}) import moose from moose import utils import mgui.mtree as mtree - from mgui.mtoolbutton import MToolButton from mgui.msearch import SearchWidget from mgui.checkcombobox import CheckComboBox - +from mgui import config from mgui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase -#from defaultToolPanel import DefaultToolPanel -#from DataTable import DataTable -from matplotlib import rcParams -rcParams.update({'figure.autolayout': True}) -from matplotlib.lines import Line2D from mgui.PlotWidgetContainer import PlotWidgetContainer +from mgui.plugins.kkitUtil import getColor +from mgui.plugins.Runner import Runner +from mgui.global_constants import preferences +from mgui.plugins.setsolver import * from PyQt4 import QtCore, QtGui +from PyQt4.QtCore import Qt from PyQt4.QtGui import QDoubleValidator -from mgui.plugins.kkitUtil import getColor -from mgui.plugins.Runner import Runner -# from Runner import Runner -# from __future__ import print_function -from PyQt4 import QtGui, QtCore from PyQt4.QtGui import QToolBar from PyQt4.QtGui import QToolButton from PyQt4.QtGui import QLabel @@ -88,11 +58,6 @@ from PyQt4.QtGui import QIcon from PyQt4.QtGui import QPixmap from PyQt4.QtGui import QAction -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar -#from EventBlocker import EventBlocker -# from PlotNavigationToolbar import PlotNavigationToolbar -from mgui.global_constants import preferences -from mgui.plugins.setsolver import * ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -101,8 +66,7 @@ class MoosePlugin(MoosePluginBase): """Default plugin for MOOSE GUI""" def __init__(self, root, mainwindow): MoosePluginBase.__init__(self, root, mainwindow) - #print "mplugin ",self.getRunView() - #self.connect(self, QtCore.SIGNAL("tableCreated"),self.getRunView().getCentralWidget().plotAllData) + def getPreviousPlugin(self): return None @@ -249,6 +213,7 @@ def getTreeMenu(self): return self.treeMenu except AttributeError: self.treeMenu = QtGui.QMenu() + self.tree.setContextMenuPolicy(Qt.CustomContextMenu) self.tree.customContextMenuRequested.connect(lambda : self.treeMenu.exec_(QtGui.QCursor.pos()) ) # Inserting a child element @@ -314,8 +279,6 @@ def getToolBars(self): # View for running a simulation and runtime visualization # ############################################################ - - from mgui.mplot import CanvasWidget class RunView(RunBase): @@ -391,77 +354,7 @@ def getSchedulingDockWidget(self): self._toolBars += widget.getToolBars() return self.schedulingDockWidget -''' -class MooseRunner(QtCore.QObject): - """Helper class to control simulation execution - See: http://doc.qt.digia.com/qq/qq27-responsive-guis.html : - 'Solving a Problem Step by Step' for design details. - """ - resetAndRun = QtCore.pyqtSignal(name='resetAndRun') - update = QtCore.pyqtSignal(name='update') - currentTime = QtCore.pyqtSignal(float, name='currentTime') - finished = QtCore.pyqtSignal(name='finished') - - def __init__( self - , runTime - , updateInterval - ): - QtCore.QObject.__init__(self) - # if (MooseRunner.inited): - # return - self.runTime = runTime - self.updateInterval = updateInterval - self._updateInterval = 100e-3 - self._simtime = 0.0 - self._clock = moose.Clock('/clock') - self._pause = False - self.dataRoot = '/data' - self.modelRoot = '/model' - #MooseRunner.inited = True - - def doResetAndRun(self, tickDtMap, tickTargetMap, simtime, updateInterval): - self._pause = False - self._updateInterval = 0.1 #updateInterval - self._simtime = simtime - utils.updateTicks(tickDtMap) - utils.assignTicks(tickTargetMap) - self.resetAndRun.emit() - moose.reinit() - QtCore.QTimer.singleShot(0, self.run) - - def run(self): - """Run simulation for a small interval.""" - print("simtime => ", self._simtime) - print("update interval => ", self._updateInterval) - print("current time => ", self._clock.currentTime) - print("Base dt => ", self._clock.baseDt) - if self._clock.currentTime >= self._simtime: - self.finished.emit() - return - if self._pause: - return - toRun = self._simtime - self._clock.currentTime - if toRun > self._updateInterval: - toRun = self._updateInterval - if toRun < self._clock.baseDt: - return - moose.start(toRun) - self.update.emit() - self.currentTime.emit(self._clock.currentTime) - QtCore.QTimer.singleShot(0, self.run) - - def continueRun(self, simtime, updateInterval): - """Continue running without reset for `simtime`.""" - self._simtime = simtime - self._updateInterval = updateInterval - self._pause = False - QtCore.QTimer.singleShot(0, self.run) - - def stop(self): - """Pause simulation""" - self._pause = True -''' class SchedulingWidget(QtGui.QWidget): """Widget for scheduling. @@ -578,7 +471,6 @@ def getSchedulerToolBar(self): bar.addWidget(QLabel("Current Time : ")) bar.addWidget(self.currentSimulationRuntime) bar.addWidget(QLabel(" (s)")) - # self._runToolBar.addWidget(self.()) bar.addSeparator() @@ -589,13 +481,6 @@ def getSchedulerToolBar(self): bar.addWidget(self.preferencesButton) return bar - # def updateTickswidget(self): - # if self.advanceOptiondisplayed: - # self.advancedOptionsWidget.hide() - # self.advanceOptiondisplayed = False - # else: - # self.advancedOptionsWidget.show() - # self.advanceOptiondisplayed = True def continueSimulation(self): self.runner.continueSimulation( self.runTime @@ -649,12 +534,6 @@ def runSimulation(self): self.checkConsistency() self.continueSimulation = True self.runner.runSimulation(self.runtime) - # return - # if self.continueFlag: - # self.continueSimulation() - # else: - # self.runner.runSimulation() - # self.continueFlag = True def setParameters(self): if self.modelType == ELECTRICAL_MODEL: @@ -671,7 +550,6 @@ def setChemicalParameters(self): self.simulationRuntime.setText(str(chemicalPreferences["simulation"]["default-runtime"])) self.runTime = float(self.simulationRuntime.text()) self.solver = chemicalPreferences["simulation"]["solver"] - #print(self.solver) def setElectricalParameters(self): electricalPreferences = self.preferences.getElectricalPreferences() @@ -682,27 +560,12 @@ def setElectricalParameters(self): self.simulationRuntime.setText(str(electricalPreferences["simulation"]["default-runtime"])) self.runTime = float(self.simulationRuntime.text()) self.solver = electricalPreferences["simulation"]["solver"] - #print(self.solver) def checkConsistency(self): if self.updateInterval < self.simulationInterval : self.updateInterval = self.simulationInterval - - # print("Hello") - # dialog = QErrorMessage() - # dialog.showMessage( - # """GUI Update interval should be greater than Simulation Interval. - # Please update these values in Edit > Preferences.""" - # ) - # return False if self.runTime < self.updateInterval : self.runTime = self.updateInterval - # dialog = QErrorMessage() - # dialog.showMessage( - # """Simulation runtime should greater than GUI Update interval. - # Please update the runtime in the Scheduling Toolbar""" - # ) - # return False return True def solverStatus(self): @@ -738,16 +601,6 @@ def solverStatus(self): print("Successfully built stoichiometry matrix.\n ") # moose.reinit() return 0 - # def setElectricalParameters(self): - # chemicalPreferences = self.preferences.getChemicalPreferences() - # self.updateInterval = chemicalPreferences["guiUpdateInterval"] - # self.simulationInterval = chemicalPreferences["simulationInterval"] - # chemicalPreferences["diffusionInterval"] - # chemicalPreferences - # self. chemicalPreferences - # self. chemicalPreferences - # self. chemicalPreferences - # self. runTime = float(self.simulationRuntime.text()) def __getAdvanceOptionsButton(self): icon = QtGui.QIcon(os.path.join(config.settings[config.KEY_ICON_DIR],'arrow.png')) @@ -1254,155 +1107,6 @@ def getMenus(self): # Plot view - select fields to record # ################################################### -''' -class PlotView(PlotBase): - """View for selecting fields on elements to plot.""" - def __init__(self, model, graph, index, *args): - PlotBase.__init__(self, *args) - self.model = model - self.graph = graph - self.index = index - # self.plugin.modelRootChanged.connect(self.getSelectionPane().setSearchRoot) - # self.plugin.dataRootChanged.connect(self.setDataRoot) - # self.dataRoot = self.plugin.dataRoot - - def setDataRoot(self, root): - self.dataRoot = moose.element(root).path - - def getToolPanes(self): - return (self.getFieldSelectionDock(), ) - - def getSelectionPane(self): - """Creates a widget to select elements and fields for plotting. - search-root, field-name, comparison operator , value - """ - if not hasattr(self, '_selectionPane'): - self._searchWidget = SearchWidget() - self._searchWidget.setSearchRoot(self.model.path) - self._fieldLabel = QtGui.QLabel('Field to plot') - self._fieldEdit = QtGui.QLineEdit() - self._fieldEdit.returnPressed.connect(self._searchWidget.searchSlot) - self._selectionPane = QtGui.QWidget() - layout = QtGui.QHBoxLayout() - layout.addWidget(self._fieldLabel) - layout.addWidget(self._fieldEdit) - self._searchWidget.layout().addLayout(layout) - self._selectionPane = self._searchWidget - self._selectionPane.layout().addStretch(1) - return self._selectionPane - - def getOperationsPane(self): - """TODO: complete this""" - if hasattr(self, 'operationsPane'): - return self.operationsPane - self.operationsPane = QtGui.QWidget() - self._createTablesButton = QtGui.QPushButton('Create tables for recording selected fields', self.operationsPane) - self._createTablesButton.clicked.connect(self.setupRecording) - layout = QtGui.QVBoxLayout() - self.operationsPane.setLayout(layout) - layout.addWidget(self._createTablesButton) - return self.operationsPane - - def getFieldSelectionDock(self): - if not hasattr(self, '_fieldSelectionDock'): - self._fieldSelectionDock = QtGui.QDockWidget('Search and select elements') - self._fieldSelectionWidget = QtGui.QWidget() - layout = QtGui.QVBoxLayout() - self._fieldSelectionWidget.setLayout(layout) - layout.addWidget(self.getSelectionPane()) - layout.addWidget(self.getOperationsPane()) - self._fieldSelectionDock.setWidget(self._fieldSelectionWidget) - return self._fieldSelectionDock - - def getCentralWidget(self): - if not hasattr(self, '_centralWidget') or self._centralWidget is None: - self._centralWidget = PlotSelectionWidget(self.model, self.graph) - self.getSelectionPane().executed.connect(self.selectElements) - return self._centralWidget - - def selectElements(self, elements): - """Refines the selection. - - Currently checks if _fieldEdit has an entry and if so, selects - only elements which have that field, and ticks the same in the - PlotSelectionWidget. - - """ - field = str(self._fieldEdit.text()).strip() - if len(field) == 0: - self.getCentralWidget().setSelectedElements(elements) - return - classElementDict = defaultdict(list) - for epath in elements: - el = moose.element(epath) - classElementDict[el.className].append(el) - refinedList = [] - elementFieldList = [] - for className, elist in classElementDict.items(): - if field in elist[0].getFieldNames('valueFinfo'): - refinedList +=elist - elementFieldList += [(el, field) for el in elist] - self.getCentralWidget().setSelectedElements(refinedList) - self.getCentralWidget().setSelectedFields(elementFieldList) - - - def setupRecording(self): - """Create the tables for recording selected data and connect them.""" - for element, field in self.getCentralWidget().getSelectedFields(): - #createRecordingTable(element, field, self._recordingDict, self._reverseDict, self.dataRoot) - #harsha:CreateRecordingTable function is moved to python/moose/utils.py file as create function - #as this is required when I drop table on to the plot - utils.create(self.plugin.modelRoot,moose.element(element),field,"Table2") - #self.dataTable.create(self.plugin.modelRoot, moose.element(element), field) - #self.updateCallback() - - def createRecordingTable(self, element, field): - """Create table to record `field` from element `element` - - Tables are created under `dataRoot`, the names are generally - created by removing `/model` in the beginning of `elementPath` - and replacing `/` with `_`. If this conflicts with an existing - table, the id value of the target element (elementPath) is - appended to the name. - - """ - if len(field) == 0 or ((element, field) in self._recordingDict): - return - # The table path is not foolproof - conflict is - # possible: e.g. /model/test_object and - # /model/test/object will map to same table. So we - # check for existing table without element field - # path in recording dict. - relativePath = element.path.partition('/model[0]/')[-1] - if relativePath.startswith('/'): - relativePath = relativePath[1:] - #Convert to camelcase - if field == "concInit": - field = "ConcInit" - elif field == "conc": - field = "Conc" - elif field == "nInit": - field = "NInit" - elif field == "n": - field = "N" - elif field == "volume": - field = "Volume" - elif field == "diffConst": - field ="DiffConst" - - tablePath = relativePath.replace('/', '_') + '.' + field - tablePath = re.sub('.', lambda m: {'[':'_', ']':'_'}.get(m.group(), m.group()),tablePath) - tablePath = self.dataRoot + '/' +tablePath - if moose.exists(tablePath): - tablePath = '%s_%d' % (tablePath, element.getId().value) - if not moose.exists(tablePath): - table = moose.Table(tablePath) - print 'Created', table.path, 'for plotting', '%s.%s' % (element.path, field) - target = element - moose.connect(table, 'requestOut', target, 'get%s' % (field)) - self._recordingDict[(target, field)] = table - self._reverseDict[table] = (target, field) -''' class PlotSelectionWidget(QtGui.QScrollArea): """Widget showing the fields of specified elements and their plottable fields. User can select any number of fields for plotting and click a @@ -1504,5 +1208,3 @@ def setSelectedFields(self, elementFieldList): if idx >= 0: combo.setItemData(idx, QtCore.QVariant(Qt.Checked), Qt.CheckStateRole) combo.setCurrentIndex(idx) -# -# default.py ends here diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index 2ab58ce..23c5fbd 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -13,8 +13,6 @@ from mgui.mplugin import * from mgui.mtoolbutton import MToolButton -import mgui.RunWidget as RunWidget - from mgui.plugins.default import * from mgui.plugins.kkitUtil import * from mgui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem @@ -22,24 +20,27 @@ from mgui.plugins.kkitCalcArrow import * from mgui.plugins.kkitOrdinateUtil import * from mgui.plugins.setsolver import * +from mgui.RunWidget import RunWidget from mgui.config import _logger - class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" def __init__(self, *args): - #print args MoosePlugin.__init__(self, *args) self.view = None self.fileinsertMenu = QtGui.QMenu('&File') if not hasattr(self,'SaveModelAction'): self.saveModelAction = QtGui.QAction('Save', self) self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) + # self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) self.fileinsertMenu.addAction(self.saveModelAction) self._menus.append(self.fileinsertMenu) self.getEditorView() + + def connect( self, *args ): + """Commeneted out """ + pass def SaveModelDialogSlot(self): type_sbml = 'SBML' @@ -157,10 +158,8 @@ def getRunView(self): graphView.plotAllData() schedulingDockWidget = self.view.getSchedulingDockWidget().widget() self._kkitWidget = self.view.plugin.getEditorView().getCentralWidget() - #self.runView = KkitRunView(self,self.dataTable) - self.runView = KkitRunView(self, self._kkitWidget) - self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() - + self.runView = KkitRunView(self._kkitWidget) + # self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() #schedulingDockWidget.runner.update.connect(self.currentRunView.changeBgSize) #schedulingDockWidget.runner.resetAndRun.connect(self.currentRunView.resetColor) graphView.layout().addWidget(self.currentRunView,0,0,2,1) @@ -180,7 +179,7 @@ def setSolverFromSettings(self, chemicalSettings): chemicalSettings["simulation"]["solver"]) def createCentralWidget(self): - self._centralWidget = RunWidget.RunWidget(self.modelRoot) + self._centralWidget = RunWidget(self.modelRoot) self.kkitRunView = KkitRunView(self.plugin) self.plotWidgetContainer = PlotWidgetContainer(self.modelRoot) self._centralWidget.setChildWidget(self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) @@ -378,7 +377,7 @@ def updateModelView(self): self.view.setAcceptDrops(True) elif isinstance(self,kineticRunWidget): self.view.setRefWidget("runView") - self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) + # self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view,0,0) @@ -403,7 +402,7 @@ def updateModelView(self): self.drawLine_arrow() self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) - self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) + # self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) @@ -957,12 +956,10 @@ def changeBgSize(self): else: # multipying by 1000 b'cos moose concentration is in milli in moose ratio = presentConc - #print "ratio",item.mobj,ratio - if ratio > '10': + if ratio > 10: ratio = 9 if ratio < '0.0': ratio =0.1 - #print "size ",ratio item.updateRect(math.sqrt(abs(ratio))) def resetColor(self): @@ -970,31 +967,32 @@ def resetColor(self): if isinstance(item,PoolItemCircle): item.returnEllispeSize() -if __name__ == "__main__": - app = QtGui.QApplication(sys.argv) - size = QtCore.QSize(1024 ,768) - modelPath = 'acc27' - itemignoreZooming = False - try: - filepath = '../../Demos/Genesis_files/'+modelPath+'.g' - filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' - print(filepath) - f = open(filepath, "r") - loadModel(filepath,'/'+modelPath) - - #moose.le('/'+modelPath+'/kinetics') - dt = KineticsWidget() - dt.modelRoot ='/'+modelPath - ''' Loading moose signalling model in python ''' - #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') - #dt.modelRoot = '/model' - - dt.updateModelView() - dt.show() - - except IOError as what: - (errno, strerror) = what - print("Error number",errno,"(%s)" %strerror) - sys.exit(0) - sys.exit(app.exec_()) +# if __name__ == "__main__": +# app = QtGui.QApplication(sys.argv) +# size = QtCore.QSize(1024 ,768) +# modelPath = 'acc27' +# itemignoreZooming = False +# try: +# filepath = '../../Demos/Genesis_files/'+modelPath+'.g' +# filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' +# print(filepath) +# f = open(filepath, "r") +# loadModel(filepath,'/'+modelPath) +# +# #moose.le('/'+modelPath+'/kinetics') +# dt = KineticsWidget() +# dt.modelRoot ='/'+modelPath +# ''' Loading moose signalling model in python ''' +# #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') +# #dt.modelRoot = '/model' +# +# dt.updateModelView() +# dt.show() +# +# except IOError as what: +# (errno, strerror) = what +# print("Error number",errno,"(%s)" %strerror) +# sys.exit(0) +# sys.exit(app.exec_()) +# From 11f5906e026a8f43831e4245379451d6c6be56d1 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 11:13:17 +0530 Subject: [PATCH 18/66] Runs fine. In run view, I can see some buttons. --- mgui/plugins/kkit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index 23c5fbd..2aaa36a 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -958,7 +958,7 @@ def changeBgSize(self): ratio = presentConc if ratio > 10: ratio = 9 - if ratio < '0.0': + if ratio < 0.0: ratio =0.1 item.updateRect(math.sqrt(abs(ratio))) From 5218bdb833c6bf6031ce80cb60581d597ed34561 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 11:28:20 +0530 Subject: [PATCH 19/66] Well. Icon issue is fixed. Using absolute paths rather than relative paths. --- mgui/RunWidget.py | 3 ++- mgui/config.py | 1 + mgui/plugins/default.py | 27 +++++++++++++++------------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/mgui/RunWidget.py b/mgui/RunWidget.py index d531688..5e508bc 100644 --- a/mgui/RunWidget.py +++ b/mgui/RunWidget.py @@ -16,13 +16,14 @@ import sys import os from . import SettingsDialog -from PyQt4 import QtGui, Qt + from PyQt4.QtGui import QWidget from PyQt4.QtGui import QScrollArea from PyQt4.QtGui import QGridLayout from PyQt4.QtGui import QSplitter class RunWidget(QSplitter): + """ Run view """ def __init__(self, modelRoot, *args, **kwargs): super(RunWidget, self).__init__(None) diff --git a/mgui/config.py b/mgui/config.py index 4dc6c34..c0d1e69 100644 --- a/mgui/config.py +++ b/mgui/config.py @@ -108,6 +108,7 @@ MOOSE_GUI_DIR = os.path.dirname(os.path.abspath(__file__)) MOOSE_PLUGIN_DIR = os.path.join(MOOSE_GUI_DIR, 'plugins') +MOOSE_ICON_DIR = os.path.join(MOOSE_GUI_DIR, 'icons' ) NEUROKIT_PLUGIN_DIR = os.path.join(MOOSE_GUI_DIR, 'plugins/NeuroKit') MOOSE_NUMPTHREADS = '1' diff --git a/mgui/plugins/default.py b/mgui/plugins/default.py index a49072b..59d5e80 100644 --- a/mgui/plugins/default.py +++ b/mgui/plugins/default.py @@ -426,23 +426,26 @@ def getSchedulerToolBar(self): bar = QToolBar("Run", self) - self.resetAction = bar.addAction( QIcon('icons/arrow_undo.png') - , 'Reset' - , self.resetSimulation - ) + self.resetAction = bar.addAction( + QIcon( os.path.join( config.MOOSE_ICON_DIR, 'reset.png' ) ) + , 'Reset' + , self.resetSimulation + ) self.resetAction.setToolTip('Reset simulation.') - self.runAction = bar.addAction( QIcon('icons/run.png') - , 'Run' - , self.runSimulation - ) + self.runAction = bar.addAction( + QIcon( os.path.join( config.MOOSE_ICON_DIR, 'run.png') ) + , 'Run' + , self.runSimulation + ) self.runAction.setToolTip('Run simulation.') - self.stopAction = bar.addAction( QIcon('icons/stop.png') - , 'Stop' - , self.runner.togglePauseSimulation - ) + self.stopAction = bar.addAction( + QIcon( os.path.join( config.MOOSE_ICON_DIR, 'stop.png') ) + , 'Stop' + , self.runner.togglePauseSimulation + ) self.stopAction.setToolTip('Stop simulation.') bar.addSeparator() From 0038b398d5ff88cfb466b74f002930a27542a3a2 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 11:40:59 +0530 Subject: [PATCH 20/66] reorganized modules. --- AUTHOR | 4 ++++ __init__.py | 1 + moose | 6 +++--- setup.py | 26 +++++++++++++++++--------- 4 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 AUTHOR create mode 100644 __init__.py diff --git a/AUTHOR b/AUTHOR new file mode 100644 index 0000000..58cd432 --- /dev/null +++ b/AUTHOR @@ -0,0 +1,4 @@ +Harsha Rani +Subhasis Ray +Aviral Goel +Dilawar Singh diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..f294cf0 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +from moosegui.mgui import * diff --git a/moose b/moose index 2268b6e..d4b51ed 100755 --- a/moose +++ b/moose @@ -1,5 +1,5 @@ #!/usr/bin/env python -import mgui -print( mgui.__file__ ) -mgui.main( ) +import moosegui +print( moosegui.__file__ ) +moosegui.main( ) diff --git a/setup.py b/setup.py index 2ffff4a..078d88c 100644 --- a/setup.py +++ b/setup.py @@ -25,19 +25,27 @@ readme = f.read() setup( - name = "moose-gui", + name = "moosegui", version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", long_description = readme, - packages = [ "mgui", 'mgui.plugins', 'mgui.colormaps', 'suds' ], - package_dir = { 'mgui' : 'mgui' - , 'suds' : 'suds' - , 'mgui.plugins' : 'mgui/plugins' - , 'mgui.colormaps' : 'mgui/colormaps' + packages = [ "moosegui" + , "moosegui.mgui" + , 'moosegui.mgui.plugins' + , 'moosegui.suds' + ], + package_dir = { + 'moosegui' : '.' + , 'moosegui.mgui' : 'mgui' + , 'moosegui.mgui.plugins' : 'mgui/plugins' + , 'moosegui.suds' : 'suds' }, - package_data = { 'mgui' : [ 'icons/*', 'colormaps/*', '../examples/*' ] }, - author = "Harsha Rani", - author_email = "hrani@ncbs.res.in", + package_data = { + 'moosegui' : [ 'moose', 'examples/*' ] + , 'moosegui.mgui' : [ 'icons/*', 'colormaps/*', ] + , 'moosegui.mgui.plugins' : [ 'datastore/*' ] + }, + author = open('AUTHOR').read(), maintainer = 'Dilawar Singh', maintainer_email = 'dilawars@ncbs.res.in', url = "http://github.com/BhallaLab/moose-gui", From 586a391dfd0c05d3b96485627042bcd1145e0611 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 12:25:43 +0530 Subject: [PATCH 21/66] Fixed the plugin import scheme in MWindow so class comparison is flawless. --- mgui/MWindow.py | 24 ++++++++++++------------ setup.py | 7 ++----- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/mgui/MWindow.py b/mgui/MWindow.py index ae69fff..5ac6712 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -29,18 +29,18 @@ import moose from moose import utils -from . import config -from . import mplugin -from . import mexception -from . import mload -from .loaderdialog import LoaderDialog -from .shell import get_shell_class -from .objectedit import ObjectEditDockWidget -from .newmodeldialog import DialogWidget -from .biomodelsclient import BioModelsClientWidget -from .MdiArea import MdiArea -from .plugins.setsolver import * -from .plugins.defines import * +from mgui import config +from mgui import mplugin +from mgui import mexception +from mgui import mload +from mgui.loaderdialog import LoaderDialog +from mgui.shell import get_shell_class +from mgui.objectedit import ObjectEditDockWidget +from mgui.newmodeldialog import DialogWidget +from mgui.biomodelsclient import BioModelsClientWidget +from mgui.MdiArea import MdiArea +from mgui.plugins.setsolver import * +from mgui.plugins.defines import * # Logger _logger = config._logger diff --git a/setup.py b/setup.py index 078d88c..b28d007 100644 --- a/setup.py +++ b/setup.py @@ -21,14 +21,11 @@ import sys from distutils.core import setup -with open("README.md") as f: - readme = f.read() - setup( name = "moosegui", version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", - long_description = readme, + long_description = open( 'README.md' ).read(), packages = [ "moosegui" , "moosegui.mgui" , 'moosegui.mgui.plugins' @@ -43,7 +40,7 @@ package_data = { 'moosegui' : [ 'moose', 'examples/*' ] , 'moosegui.mgui' : [ 'icons/*', 'colormaps/*', ] - , 'moosegui.mgui.plugins' : [ 'datastore/*' ] + , 'moosegui.mgui.plugins' : [ 'datastore/*', 'list.txt' ] }, author = open('AUTHOR').read(), maintainer = 'Dilawar Singh', From 468dde48dfe3382c02f9106acf209ceac149b67e Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 12:27:39 +0530 Subject: [PATCH 22/66] Fixed squid demo for python3. --- examples/squid/.gitignore | 1 + examples/squid/README.txt | 14 + examples/squid/channeleditor.py | 147 ++++ examples/squid/electronics.py | 116 +++ examples/squid/help.html | 587 +++++++++++++ examples/squid/help.org | 242 ++++++ examples/squid/images/navigationtoolbar.jpg | Bin 0 -> 11973 bytes examples/squid/squid.py | 376 ++++++++ examples/squid/squid_demo.py | 899 ++++++++++++++++++++ examples/squid/squid_setup.py | 118 +++ examples/squid/test_squid.py | 117 +++ 11 files changed, 2617 insertions(+) create mode 100644 examples/squid/.gitignore create mode 100644 examples/squid/README.txt create mode 100644 examples/squid/channeleditor.py create mode 100644 examples/squid/electronics.py create mode 100644 examples/squid/help.html create mode 100644 examples/squid/help.org create mode 100644 examples/squid/images/navigationtoolbar.jpg create mode 100644 examples/squid/squid.py create mode 100644 examples/squid/squid_demo.py create mode 100644 examples/squid/squid_setup.py create mode 100644 examples/squid/test_squid.py diff --git a/examples/squid/.gitignore b/examples/squid/.gitignore new file mode 100644 index 0000000..773a6df --- /dev/null +++ b/examples/squid/.gitignore @@ -0,0 +1 @@ +*.dat diff --git a/examples/squid/README.txt b/examples/squid/README.txt new file mode 100644 index 0000000..221cc0a --- /dev/null +++ b/examples/squid/README.txt @@ -0,0 +1,14 @@ +This is the port of Hodgkin-Huxley Squid Giant Axon demo from +GENESIS. Run `python squid_demo.py` to start the GUI. Open help.org in +a text editor or help.html in a web-browser (or click `Help` button in +the GUI) to read the tutorial. + +The biophysical model is in `squid.py`. The electronics setup is in +`electronics.py`. The combination of squid axon model and the +electronics is in squid_setup.py. All these can be run without any GUI +dependency. To run squid_demo.py you need PyQt and matplotlib with Qt +backend installed. + +Author: Subhasis Ray +Place: NCBS, Bangalore, INDIA +Date: 21 September 2012 diff --git a/examples/squid/channeleditor.py b/examples/squid/channeleditor.py new file mode 100644 index 0000000..0309690 --- /dev/null +++ b/examples/squid/channeleditor.py @@ -0,0 +1,147 @@ +# channeleditor.py --- +# +# Filename: channeleditor.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Jul 18 19:06:39 2012 (+0530) +# Version: +# Last-Updated: Wed Aug 8 16:36:10 2012 (+0530) +# By: Subhasis Ray +# Update #: 179 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# A widget for editing Hodgkin-Huxley type ion channels. +# +# + +# Change log: +# +# +# + +# Code: + +import sys +from PyQt4 import QtGui, QtCore +from numpy import * +import ast + +class GateEditor(QtGui.QWidget): + """Utility to edit gate equations. + + It provides two line edits to enter the alpha and beta equations + directly. + """ + def __init__(self, *args): + QtGui.QWidget.__init__(self, *args) + self.useVButton = QtGui.QRadioButton('Use V', self) + self.useVButton.setChecked(True) + self.useCaButton = QtGui.QRadioButton('Use Ca', self) + self.useCaButton.setChecked(False) + self.symbolGroup = QtGui.QGroupBox(self) + layout = QtGui.QHBoxLayout() + # self.symbolGroup.setExclusive(True) + layout.addWidget(self.useVButton) + layout.addWidget(self.useCaButton) + self.symbolGroup.setLayout(layout) + self.inputPanel = QtGui.QFrame(self) + self.minVLabel = QtGui.QLabel('Minimum', self) + self.maxVLabel = QtGui.QLabel('Maximum', self) + self.divsVLabel = QtGui.QLabel('Number of divisions', self) + self.minVEdit = QtGui.QLineEdit(self) + self.maxVEdit = QtGui.QLineEdit(self) + self.divsVEdit = QtGui.QLineEdit(self) + self.equation = '(A + B * V) / (C + exp((V + D)/F))' + self.alphaText = 'Equation for forward rate \u03B1 ' + self.betaText = 'Equation for backward rate \u03B2 ' + self.minfText = 'Equation for m\u221E ' + self.taumText = 'Equation for \u03C4m ' + self.alphaLabel = QtGui.QLabel(self.minfText, self) + self.betaLabel = QtGui.QLabel(self.taumText, self) + self.alphaEdit = QtGui.QLineEdit(self) + self.betaEdit = QtGui.QLineEdit(self) + self.formCombo = QtGui.QComboBox(self) + self.formCombo.addItem('m\u221E - \u03C4m') + self.formCombo.addItem('\u03B1 - \u03B2') + self.okButton = QtGui.QPushButton('OK', self) + layout = QtGui.QGridLayout(self.inputPanel) + layout.addWidget(self.minVLabel, 0, 0) + layout.addWidget(self.minVEdit, 0, 1) + layout.addWidget(self.maxVLabel, 0, 3) + layout.addWidget(self.maxVEdit, 0, 4) + layout.addWidget(self.divsVLabel, 0, 6) + layout.addWidget(self.divsVEdit, 0, 7) + layout.addWidget(self.formCombo, 1, 0, 1, 4) + layout.addWidget(self.alphaLabel, 2, 0, 1, 2) + layout.addWidget(self.alphaEdit, 2, 2, 1, 7) + layout.addWidget(self.betaLabel, 3, 0, 1, 2) + layout.addWidget(self.betaEdit, 3, 2, 1, 7) + self.inputPanel.setLayout(layout) + layout = QtGui.QVBoxLayout(self) + layout.addWidget(self.symbolGroup) + layout.addWidget(self.inputPanel) + layout.addWidget(self.okButton) + self.setLayout(layout) + self.connect(self.okButton, QtCore.SIGNAL('clicked()'), self.evalGateExpressions) + # self.connect(self.useVButton, QtCore.SIGNAL('toggled(bool)'), self.toggleInputPanel) + self.connect(self.formCombo, QtCore.SIGNAL('currentIndexChanged(int)'), self.switchEquationForm) + + def toggleInputPanel(self, on): + self.inputPanel.setVisible(on) + self.adjustSize() + + def switchEquationForm(self, index): + if index == 1: + self.alphaLabel.setText(self.alphaText) + self.betaLabel.setText(self.betaText) + elif index == 0: + self.alphaLabel.setText(self.minfText) + self.betaLabel.setText(self.taumText) + + def evalGateExpressions(self): + """Evaluate the expressions supplied by user to obtain the + arrays for the gate tables.""" + vmin = float(str(self.minVEdit.text())) + vmax = float(str(self.maxVEdit.text())) + vdivs = float(str(self.divsVEdit.text())) + vrange = linspace(vmin, vmax, vdivs+1) + a_expr = str(self.alphaEdit.text()) + b_expr = str(self.betaEdit.text()) + a = zeros(vdivs+1) + b = zeros(vdivs+1) + if self.useVButton.isChecked(): + symbol = 'V' + elif self.useCaButton.isChecked(): + symbol = 'Ca' + code = """for ii in range(len(vrange)): + %s = vrange[ii] + a[ii] = %s + b[ii] = %s + """ % (symbol, a_expr, b_expr) + print(code) + tree = compile(code, '', 'exec') + exec(tree) + print(a, b) + return {'min': vmin, + 'max': vmax, + 'divs': vdivs, + 'a': a, + 'b': b} + + # 0.5 * (1-exp(-(V-10)/10)) +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + QtGui.qApp = app + editor = GateEditor() + editor.show() + sys.exit(app.exec_()) + +# +# channeleditor.py ends here diff --git a/examples/squid/electronics.py b/examples/squid/electronics.py new file mode 100644 index 0000000..2f356e3 --- /dev/null +++ b/examples/squid/electronics.py @@ -0,0 +1,116 @@ +# electronics.py --- +# +# Filename: electronics.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Feb 22 00:53:38 2012 (+0530) +# Version: +# Last-Updated: Tue Jul 10 10:28:40 2012 (+0530) +# By: subha +# Update #: 221 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# 2012-02-22 23:22:30 (+0530) Subha - the circuitry put in a class. +# + +# Code: + +import numpy +import moose + +class ClampCircuit(moose.Neutral): + """Container for a Voltage-Clamp/Current clamp circuit.""" + defaults = { + 'level1': 25.0, + 'width1': 50.0, + 'delay1': 2.0, + 'delay2': 1e6, + 'trigMode': 0, + 'delay3': 1e9 + } + def __init__(self, path, compartment): + moose.Neutral.__init__(self, path) + self.pulsegen = moose.PulseGen(path+"/pulse") # holding voltage/current generator + self.pulsegen.count = 2 + self.pulsegen.firstLevel = 25.0 + self.pulsegen.firstWidth = 50.0 + self.pulsegen.firstDelay = 2.0 + self.pulsegen.secondDelay = 0.0 + self.pulsegen.trigMode = 2 + self.gate = moose.PulseGen(path+"/gate") # holding voltage/current generator + self.gate.level[0] = 1.0 + self.gate.delay[0] = 0.0 + self.gate.width[0] = 1e9 + moose.connect(self.gate, 'output', self.pulsegen, 'input') + self.lowpass = moose.RC(path+"/lowpass") # lowpass filter + self.lowpass.R = 1.0 + self.lowpass.C = 0.03 + self.vclamp = moose.DiffAmp(path+"/vclamp") + self.vclamp.gain = 0.0 + self.vclamp.saturation = 1e10 + self.iclamp = moose.DiffAmp(path+"/iclamp") + self.iclamp.gain = 0.0 + self.iclamp.saturation = 1e10 + self.pid = moose.PIDController(path+"/pid") + self.pid.gain = 0.5 + self.pid.tauI = 0.02 + self.pid.tauD = 0.005 + self.pid.saturation = 1e10 + # Connect current clamp circuitry + moose.connect(self.pulsegen, "output", self.iclamp, "plusIn") + moose.connect(self.iclamp, "output", compartment, "injectMsg") + # Connect voltage clamp circuitry + moose.connect(self.pulsegen, "output", self.lowpass, "injectIn") + moose.connect(self.lowpass, "output", self.vclamp, "plusIn") + moose.connect(self.vclamp, "output", self.pid, "commandIn") + moose.connect(compartment, "VmOut", self.pid, "sensedIn") + moose.connect(self.pid, "output", compartment, "injectMsg") + current_table = moose.Table("/data/Im") + moose.connect(current_table, "requestOut", compartment, "getIm") + + def configure_pulses(self, baseLevel=0.0, firstLevel=0.1, firstDelay=5.0, firstWidth=40.0, secondLevel=0.0, secondDelay=1e6, secondWidth=0.0, singlePulse=True): + """Set up the pulse generator.""" + self.pulsegen.baseLevel = baseLevel + self.pulsegen.firstLevel = firstLevel + self.pulsegen.firstWidth = firstWidth + self.pulsegen.firstDelay = firstDelay + self.pulsegen.secondLevel = secondLevel + self.pulsegen.secondDelay = secondDelay + self.pulsegen.secondWidth = secondWidth + if singlePulse: + self.pulsegen.trigMode = 1 + else: + self.pulsegen.trigMode = 0 + + def do_voltage_clamp(self): + """Switch to voltage clamp circuitry. After this the simdt may + need to be changed for correct performance.""" + self.vclamp.gain = 1.0 + self.iclamp.gain = 0.0 + self.pid.gain = 0.5 + self.pid.tauD = 0.005 + self.pid.tauI = 0.02 + + def do_current_clamp(self): + """Switch to current clamp circuitry. After this the simdt may + need to be changed for correct performance.""" + self.iclamp.gain = 1.0 + self.vclamp.gain = 0.0 + self.pid.gain = 0.0 + + +# +# electronics.py ends here diff --git a/examples/squid/help.html b/examples/squid/help.html new file mode 100644 index 0000000..617a710 --- /dev/null +++ b/examples/squid/help.html @@ -0,0 +1,587 @@ + + + + +Simulation of squid axon with Hodgkin-Huxley ion channels + + + + + + + + + + + + + +
+ +
+ +
+

Simulation of squid axon with Hodgkin-Huxley ion channels

+ + + + +
+

1 Navigation: navigation toolbar is located at bottom of the plots

+
+ +

This uses the built-in navigation toolbar of matplotlib [click to + open in your default web-browser]. +

+ +
+

./images/navigationtoolbar.jpg

+

Navigation toolbar for plots

+
+ +

+ You can hover the mouse cursor on any icon on this toolbar to get a + brief tool-tip. To summarize: +

+ +
+ +
+

1.1 Zoom

+
+ +
    +
  1. Zoom-in: +
      +
    1. Zoom-in both X and Y axes: +
        +
      • click on the subplot you want to zoom and scroll mouse + wheel down, or +
      • +
      • click magnifier icon and press left mouse button on the + subplot and drag. This will zoom the subplot to the + rectangle you cover by this. +
      • +
      • click compass icon and press right mouse button on the plot + and drag towards top-right. +
      • +
      + +
    2. +
    3. Zoom-in along X-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag towards right. +
      • +
      + +
    4. +
    5. Zoom-in along Y-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag upwards. +
      • +
      + +
    6. +
    + +
  2. +
  3. Zoom-out: +
      +
    1. Zoom-out both X and Y axes: +
        +
      • click on the subplot you want to zoom and scroll mouse wheel up, or +
      • +
      • click magnifier icon and press right mouse button on the + plot and drag. The whole visible axis area will fit into + the rectangle you cover by this. +
      • +
      • click compass icon and press right mouse button on the plot + and drag towards bottom-left. +
      • +
      + +
    2. +
    3. Zoom-out whole plot window along X-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag towards left. +
      • +
      + +
    4. +
    5. Zoom-out Y-axis: +
        +
      • click compass icon and press right mouse button on the plot + and drag downwards. +
      • +
      + +
    6. +
    + +
  4. +
  5. Go forward/backward in zoom stack: + click right/left arrow icon. +
  6. +
+ +
+ +
+ +
+

1.2 Pan:

+
+ +

click compass-icon and left click-and-drag +

+ +
+ +
+

1.3 Reset to initial plot state:

+
+ +

click home icon. +

+ +
+ +
+

1.4 Change spacing and position of subplots:

+
+ +

click button with four green arrow-heads pointing (this is called + the Subplot-Configuration button). +

+ +
+ +
+

1.5 Configure axes:

+
+ +

click green tick-mark. In the pop-up dialog select the axis you want + to modify and click OK. In the next dialog you can set the range of + X and Y values for the axes and modify several other properties. +

+ +
+ +
+

1.6 Save plot:

+
+ +

click floppy-disk icon. +

+
+
+ +
+ +
+

2 Rearranging the frames on small screens

+
+ +

The default layout of the squid demo may exceed available screen + size on your system. But you can always undock the control panels + and put them one over the other to save screen space. To undock all + panels in one go, click the "Undock all" button in the tool bar. +

+

+ To move or float a single panel, click the left mouse button on its + title bar (in the same horizontal line with the expand buttons) of + any of the panels and drag. You can choose to leave it floating or + drop it somewhere (top, left, bottom or right of the plot window) in + the main window to reposition it. You can drop multiple panels in + the same location. Then they will be put as multiple tabs over one + another. +

+

+ An undocked panel will be always on top of the main window. If this + is a problem, you can close it by clicking the close button. You can + make it visible again by clicking "Show all" button on the tool bar. +

+
+ +
+ +
+

3 The SQUID tutorial

+
+ +

The following is adapted from the GENESIS squid demo notes with + modifications for MOOSE by Subhasis Ray, September 2012. +

+

+ The original header was: +

+ +
+ +

+ SQUID +

+

+ An Introductory Tutorial for GENESIS, XODUS, and the HODGKIN-HUXLEY model +

+

+ By M. Nelson, Caltech, April 1989 - Modified by D. Beeman, June 1991, Dec 1994 + ­ Modified by E. Vigmond, September 1993 +

+ +
+ +

+ In the process of working through this tutorial, you will learn + something about the Hodgkin-Huxley model. This program may serve as + a good starting point for those of you who plan to work on + single-cell models for a course project. +

+ +
+ +
+

3.1 The Model

+
+ +

For the time being, we are going to simulate a single axon + compartment with active Na and K conductances, as described by Hodgkin + and Huxley for the squid giant axon. In other tutorials we will link + compartments together to form a simple model of an entire neuron with + a soma and dendrites (the Neuron tutorial), model a cable with many + compartments (the cable tutorial), and build neural circuits with + connected neurons (MultiCell and tritonia). For now, we confine + ourselves to a single axon compartment. +

+
+ +
+ +
+

3.2 Running the Simulation

+
+ +

The model has already been initialized with some reasonable + parameter values, so all you have to do to run the simulation is: +

+

+ click on the ``Run`` button in the toolbar. +

+

+ The simulation which you just observed was for a constant current + pulse, which is shown in the lower left graph panel. The upper left + graph shows the membrane potential. You can see that 3 action + potentials were generated during this 50 msec simulation. Now let's + change the injection current and see what happens. +

+

+ At the bottom of the left panel is a widget labeled "Electronics" + and inside it there are two tabs labeled ``Current clamp`` and + ``Voltage clamp``. Select the ``Current clamp`` tab and you will + see a series of labeled text boxes with default values. In order + to change the injection current: +

+

+ position the cursor to the right of the last digit in the "First + Pulse Current" field and click in the text box with the left mouse + button. +

+

+ Let's change the peak injection current from 0.1 to 1.0. +

+

+ type <BACKSPACE> to delete the 0.1 and then type 1.0 +

+

+ The value in the dialog field should now be 1.0. +

+

+ Now we'll run the simulation again. +

+

+ click the "Run" button on the toolbar again. +

+

+ There should be a dramatic change in the time-course of the + membrane potential at this higher current injection level. + Experiment with the injection level to see what happens to the + axon at higher injection currents. Also try decreasing the + injection level until an action potential is no longer elicited by + the stimulus. What is the threshold for producing an action + potential in this compartment? +

+

+ You may also experiment with trains of short pulses. Set the + "First Pulse Width" dialog field to 1 msec and click on the + "Single Pulse" drop down box and select "Pulse Train". Now vary + "First Onset Delay". What is the minimum interval between action + potentials that you can achieve? +

+
+ +
+ +
+

3.3 Voltage Clamping

+
+ +

You can also perform voltage clamp experiments in this simulation. +

+

+ click on the "Voltage clamp" tab header at the bottom of the + control form under "Electronics". +

+

+ Again, reasonable default values have been selected , so all you + have to do to run the voltage clamp simulation is: +

+

+ click the "Run" button on the control form +

+
+ +
+ +
+

3.4 Changing Extracellular Concentrations

+
+ +

You can alter the extracellular concentrations of the ions through + the "Channels" panel. Any changes in concentration will cause the + reversal potentials to be recalculated. To reset the values back + to the initial ones, just click on the "Restore defaults" button + in the top tool bar. +

+
+ +
+ +
+

3.5 Controlling Graphs

+
+ +

The graph of the clamp current (lower left panel) has gone off + scale. In order to rescale the graph: +

+

+ click on the button with green tick mark in the navigation toolbar + at the bottom of the plots. +

+

+ A dialog containing drop-down to select the subplot should appear. + Select the "Injection current" and click OK. Another dialog box + will appear with text boxes for `Min` and `Max` values for X-Axis + and Y-Axis. Adjust for Y axis to bring the graph into range and + press "Apply". +

+ +

+ The top toolbar has an "Overlay plots" button. When it is + checked, any existing plots in the graph will be held and new + simulation results will be overlayed. Try this now. +

+

+ Click "Overlay plots" and run the simulation at several values of + the clamp voltage. Do the first run with "Overlay plots" button + unchecked so that all previous graphs are cleared at this + run. Then click this button to checked state and do the subsequent + runs. +

+
+ +
+ +
+

3.6 State Plots

+
+ +

One can learn a great deal by studying plots in which one of the + Hodgkin-Huxley channel activation parameters (the K activation + "n", the Na activation "m", or the Na inactivation "h") is plotted + as a function of the membrane potential, V. (See, for example, + Chapter 5 of "Methods in Neuronal Modeling", by Koch and Segev.) +

+

+ In order to view such a plot, click the left mouse button on the + button labeled "State plot" in the top toolbar. The label will + change to "State Plot Visible", and a state plot graph will + appear. Clicking the button again will hide the graph. The + default plot is to show the K channel "n" parameter on the y-axis + and the membrane potential on the x-axis. The drop-down menus at + the top of the window allow you to change these defaults. +

+
+ +
+ +
+

3.7 Channel Blocking

+
+ +

In order to explore the effects of blocking one of the channels, + you may click on one of the check boxes in the "Channels" panel + for blocking and unblocking a channel. When a channel is blocked, + its conductance is set to zero. Activation parameters for a + blocked channel are still calculated and may be plotted, but are + relatively meaningless because they will have no effect on the + membrane potential. +

+
+ +
+ +
+

3.8 Saving Graphs

+
+ +

You can save a graph to file by clicking the save button in the + navigation toolbar. In the file dialog you can select from several + formats including PDF, JPEG, PNG and SVG. +

+
+ +
+ +
+

3.9 Units used in the simulation

+
+ +

Units: +

+ ++ + + + + + + + + + + + + + + +
quantityunit
timemsec
lengthum (microns)
potentialmV
conductancemS (mmho)
resistancekohm
capacitanceuF
specific axial resistancekohm-cm
specific membrane conductancemS/cm2
specific membrane capacitanceuF/cm2
+ + +
+
+
+
+ +
+

Date: 2012-09-25 17:03:29 IST

+

Author: Subhasis Ray

+

Org version 7.8.11 with Emacs version 23

+Validate XHTML 1.0 + +
+ + diff --git a/examples/squid/help.org b/examples/squid/help.org new file mode 100644 index 0000000..2b47b4e --- /dev/null +++ b/examples/squid/help.org @@ -0,0 +1,242 @@ +Simulation of squid axon with Hodgkin-Huxley ion channels + +#+AUTHOR: Subhasis Ray + +* Navigation: navigation toolbar is located at bottom of the plots + This uses the built-in navigation toolbar of [[http://matplotlib.org/users/navigation_toolbar.html][matplotlib]] [click to + open in your default web-browser]. + +#+CAPTION: Navigation toolbar for plots +#+LABEL: fignavigationtoolbar +[[./images/navigationtoolbar.jpg]] + + You can hover the mouse cursor on any icon on this toolbar to get a + brief tool-tip. To summarize: + +** Zoom + 1. Zoom-in: + 1) Zoom-in both X and Y axes: + - click on the subplot you want to zoom and scroll mouse + wheel down, or + - click magnifier icon and press left mouse button on the + subplot and drag. This will zoom the subplot to the + rectangle you cover by this. + - click compass icon and press right mouse button on the plot + and drag towards top-right. + 2) Zoom-in along X-axis: + - click compass icon and press right mouse button on the plot + and drag towards right. + 3) Zoom-in along Y-axis: + - click compass icon and press right mouse button on the plot + and drag upwards. + 2. Zoom-out: + 1) Zoom-out both X and Y axes: + - click on the subplot you want to zoom and scroll mouse wheel up, or + - click magnifier icon and press right mouse button on the + plot and drag. The whole visible axis area will fit into + the rectangle you cover by this. + - click compass icon and press right mouse button on the plot + and drag towards bottom-left. + 2) Zoom-out whole plot window along X-axis: + - click compass icon and press right mouse button on the plot + and drag towards left. + 3) Zoom-out Y-axis: + - click compass icon and press right mouse button on the plot + and drag downwards. + 3. Go forward/backward in zoom stack: + click right/left arrow icon. +** Pan: + click compass-icon and left click-and-drag +** Reset to initial plot state: + click home icon. +** Change spacing and position of subplots: + click button with four green arrow-heads pointing (this is called + the Subplot-Configuration button). +** Configure axes: + click green tick-mark. In the pop-up dialog select the axis you want + to modify and click OK. In the next dialog you can set the range of + X and Y values for the axes and modify several other properties. +** Save plot: + click floppy-disk icon. + +* Rearranging the frames on small screens + The default layout of the squid demo may exceed available screen + size on your system. But you can always undock the control panels + and put them one over the other to save screen space. To undock all + panels in one go, click the "Undock all" button in the tool bar. + + To move or float a single panel, click the left mouse button on its + title bar (in the same horizontal line with the expand buttons) of + any of the panels and drag. You can choose to leave it floating or + drop it somewhere (top, left, bottom or right of the plot window) in + the main window to reposition it. You can drop multiple panels in + the same location. Then they will be put as multiple tabs over one + another. + + An undocked panel will be always on top of the main window. If this + is a problem, you can close it by clicking the close button. You can + make it visible again by clicking "Show all" button on the tool bar. + +* The SQUID tutorial + The following is adapted from the GENESIS squid demo notes with + modifications for MOOSE by Subhasis Ray, September 2012. + + The original header was: + + ----------------------------------------------------------------------------- + + SQUID + + An Introductory Tutorial for GENESIS, XODUS, and the HODGKIN-HUXLEY model + + By M. Nelson, Caltech, April 1989 - Modified by D. Beeman, June 1991, Dec 1994 + \- Modified by E. Vigmond, September 1993 + + ----------------------------------------------------------------------------- + + In the process of working through this tutorial, you will learn + something about the Hodgkin-Huxley model. This program may serve as + a good starting point for those of you who plan to work on + single-cell models for a course project. + +** The Model + For the time being, we are going to simulate a single axon + compartment with active Na and K conductances, as described by Hodgkin + and Huxley for the squid giant axon. In other tutorials we will link + compartments together to form a simple model of an entire neuron with + a soma and dendrites (the Neuron tutorial), model a cable with many + compartments (the cable tutorial), and build neural circuits with + connected neurons (MultiCell and tritonia). For now, we confine + ourselves to a single axon compartment. + +** Running the Simulation + The model has already been initialized with some reasonable + parameter values, so all you have to do to run the simulation is: + + click on the ``Run`` button in the toolbar. + + The simulation which you just observed was for a constant current + pulse, which is shown in the lower left graph panel. The upper left + graph shows the membrane potential. You can see that 3 action + potentials were generated during this 50 msec simulation. Now let's + change the injection current and see what happens. + + At the bottom of the left panel is a widget labeled "Electronics" + and inside it there are two tabs labeled ``Current clamp`` and + ``Voltage clamp``. Select the ``Current clamp`` tab and you will + see a series of labeled text boxes with default values. In order + to change the injection current: + + position the cursor to the right of the last digit in the "First + Pulse Current" field and click in the text box with the left mouse + button. + + Let's change the peak injection current from 0.1 to 1.0. + + type to delete the 0.1 and then type 1.0 + + The value in the dialog field should now be 1.0. + + Now we'll run the simulation again. + + click the "Run" button on the toolbar again. + + There should be a dramatic change in the time-course of the + membrane potential at this higher current injection level. + Experiment with the injection level to see what happens to the + axon at higher injection currents. Also try decreasing the + injection level until an action potential is no longer elicited by + the stimulus. What is the threshold for producing an action + potential in this compartment? + + You may also experiment with trains of short pulses. Set the + "First Pulse Width" dialog field to 1 msec and click on the + "Single Pulse" drop down box and select "Pulse Train". Now vary + "First Onset Delay". What is the minimum interval between action + potentials that you can achieve? + +** Voltage Clamping + You can also perform voltage clamp experiments in this simulation. + + click on the "Voltage clamp" tab header at the bottom of the + control form under "Electronics". + + Again, reasonable default values have been selected , so all you + have to do to run the voltage clamp simulation is: + + click the "Run" button on the control form + +** Changing Extracellular Concentrations + You can alter the extracellular concentrations of the ions through + the "Channels" panel. Any changes in concentration will cause the + reversal potentials to be recalculated. To reset the values back + to the initial ones, just click on the "Restore defaults" button + in the top tool bar. + +** Controlling Graphs + The graph of the clamp current (lower left panel) has gone off + scale. In order to rescale the graph: + + click on the button with green tick mark in the navigation toolbar + at the bottom of the plots. + + A dialog containing drop-down to select the subplot should appear. + Select the "Injection current" and click OK. Another dialog box + will appear with text boxes for `Min` and `Max` values for X-Axis + and Y-Axis. Adjust for Y axis to bring the graph into range and + press "Apply". + + + The top toolbar has an "Overlay plots" button. When it is + checked, any existing plots in the graph will be held and new + simulation results will be overlayed. Try this now. + + Click "Overlay plots" and run the simulation at several values of + the clamp voltage. Do the first run with "Overlay plots" button + unchecked so that all previous graphs are cleared at this + run. Then click this button to checked state and do the subsequent + runs. + +** State Plots + One can learn a great deal by studying plots in which one of the + Hodgkin-Huxley channel activation parameters (the K activation + "n", the Na activation "m", or the Na inactivation "h") is plotted + as a function of the membrane potential, V. (See, for example, + Chapter 5 of "Methods in Neuronal Modeling", by Koch and Segev.) + + In order to view such a plot, click the left mouse button on the + button labeled "State plot" in the top toolbar. The label will + change to "State Plot Visible", and a state plot graph will + appear. Clicking the button again will hide the graph. The + default plot is to show the K channel "n" parameter on the y-axis + and the membrane potential on the x-axis. The drop-down menus at + the top of the window allow you to change these defaults. + +** Channel Blocking + In order to explore the effects of blocking one of the channels, + you may click on one of the check boxes in the "Channels" panel + for blocking and unblocking a channel. When a channel is blocked, + its conductance is set to zero. Activation parameters for a + blocked channel are still calculated and may be plotted, but are + relatively meaningless because they will have no effect on the + membrane potential. + +** Saving Graphs + You can save a graph to file by clicking the save button in the + navigation toolbar. In the file dialog you can select from several + formats including PDF, JPEG, PNG and SVG. + +** Units used in the simulation + Units: + | quantity | unit | + |-------------------------------+--------------| + | time | msec | + | length | um (microns) | + | potential | mV | + | conductance | mS (mmho) | + | resistance | kohm | + | capacitance | uF | + | specific axial resistance | kohm-cm | + | specific membrane conductance | mS/cm^2 | + | specific membrane capacitance | uF/cm^2 | + diff --git a/examples/squid/images/navigationtoolbar.jpg b/examples/squid/images/navigationtoolbar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7ba52a5f5481ce63c8a7eda502fb8c6710755dc GIT binary patch literal 11973 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 0: + gate = moose.HHGate(self.path + '/gateX') + elif gate == 'Y' and self.Ypower > 0: + gate = moose.HHGate(self.path + '/gateY') + else: + return False + gate.setupAlpha([params['A_A'], + params['A_B'], + params['A_C'], + params['A_D'], + params['A_F'], + params['B_A'], + params['B_B'], + params['B_C'], + params['B_D'], + params['B_F'], + vdivs, vmin, vmax]) + return True + + @property + def alpha_m(self): + if self.Xpower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableA) + @property + def beta_m(self): + if self.Xpower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableB) - numpy.array(moose.HHGate('%s/gateX' % (self.path)).tableA) + @property + def alpha_h(self): + if self.Ypower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableA) + @property + def beta_h(self): + if self.Ypower == 0: + return numpy.array([]) + return numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableB) - numpy.array(moose.HHGate('%s/gateY' % (self.path)).tableA) + +class SquidAxon(moose.Compartment): + EREST_ACT = 0.0 # can be -70 mV if not following original HH convention + VMIN = -30.0 + VMAX = 120.0 + VDIVS = 150 + defaults = { + 'temperature': CELSIUS_TO_KELVIN + 6.3, + 'K_out': 10.0, + 'Na_out': 460.0, + 'K_in': 301.4, + 'Na_in': 70.96, + 'Cl_out': 540.0, + 'Cl_in': 100.0, + 'length': 500, # um + 'diameter': 500, # um + 'Em': EREST_ACT + 10.613, + 'initVm': EREST_ACT, + 'specific_cm': 1.0, # uF/cm^2 + 'specific_gl': 0.3, # mmho/cm^2 + 'specific_ra': 0.030, # kohm-cm + 'specific_gNa': 120.0, # mmho/cm^2 + 'specific_gK': 36.0 # mmho/cm^2 + } + + Na_m_params = {'A_A':0.1 * (25.0 + EREST_ACT), + 'A_B': -0.1, + 'A_C': -1.0, + 'A_D': -25.0 - EREST_ACT, + 'A_F':-10.0, + 'B_A': 4.0, + 'B_B': 0.0, + 'B_C': 0.0, + 'B_D': 0.0 - EREST_ACT, + 'B_F': 18.0} + Na_h_params = {'A_A': 0.07, + 'A_B': 0.0, + 'A_C': 0.0, + 'A_D': 0.0 - EREST_ACT, + 'A_F': 20.0, + 'B_A': 1.0, + 'B_B': 0.0, + 'B_C': 1.0, + 'B_D': -30.0 - EREST_ACT, + 'B_F': -10.0} + K_n_params = {'A_A': 0.01*(10.0 + EREST_ACT), + 'A_B': -0.01, + 'A_C': -1.0, + 'A_D': -10.0 - EREST_ACT, + 'A_F': -10.0, + 'B_A': 0.125, + 'B_B': 0.0, + 'B_C': 0.0, + 'B_D': 0.0 - EREST_ACT, + 'B_F': 80.0} + """Compartment class enhanced with specific values of passive + electrical properties set and calculated using dimensions.""" + def __init__(self, path): + moose.Compartment.__init__(self, path) + self.temperature = SquidAxon.defaults['temperature'] + self.K_out = SquidAxon.defaults['K_out'] + self.Na_out = SquidAxon.defaults['Na_out'] + # Modified internal concentrations used to give HH values of + # equilibrium constants from the Nernst equation at 6.3 deg C. + # HH 1952a, p. 455 + self.K_in = SquidAxon.defaults['K_in'] + self.Na_in = SquidAxon.defaults['Na_in'] + self.Cl_out = SquidAxon.defaults['Cl_out'] + self.Cl_in = SquidAxon.defaults['Cl_in'] + + self.length = SquidAxon.defaults['length'] + self.diameter = SquidAxon.defaults['diameter'] + self.Em = SquidAxon.defaults['Em'] + self.initVm = SquidAxon.defaults['initVm'] + self.specific_cm = SquidAxon.defaults['specific_cm'] + self.specific_gl = SquidAxon.defaults['specific_gl'] + self.specific_ra = SquidAxon.defaults['specific_ra'] + + self.Na_channel = IonChannel('Na', self, + 0.0, + self.VNa, + Xpower=3.0, + Ypower=1.0) + self.Na_channel.setupAlpha('X', SquidAxon.Na_m_params, + SquidAxon.VDIVS, + SquidAxon.VMIN, + SquidAxon.VMAX) + self.Na_channel.setupAlpha('Y', SquidAxon.Na_h_params, + SquidAxon.VDIVS, + SquidAxon.VMIN, + SquidAxon.VMAX) + self.K_channel = IonChannel('K', self, + 0.0, + self.VK, + Xpower=4.0) + self.K_channel.setupAlpha('X', SquidAxon.K_n_params, + SquidAxon.VDIVS, + SquidAxon.VMIN, + SquidAxon.VMAX) + self.specific_gNa = SquidAxon.defaults['specific_gNa'] + self.specific_gK = SquidAxon.defaults['specific_gK'] + + @classmethod + def reversal_potential(cls, temp, c_out, c_in): + """Compute the reversal potential based on Nernst equation.""" + # NOTE the 70 mV added for compatibility with original HH + return (GAS_CONSTANT * temp / FARADAY) * 1000.0 * numpy.log(c_out/c_in) + 70.0 + cls.EREST_ACT + + + @property + def xarea(self): + """Area of cross section in cm^2 when length and diameter are in um""" + return 1e-8 * numpy.pi * self.diameter * self.diameter / 4.0 # cm^2 + + @property + def area(self): + """Area in cm^2 when length and diameter are in um""" + return 1e-8 * self.length * numpy.pi * self.diameter # cm^2 + + @property + def specific_ra(self): + return self.Ra * self.xarea / self.length + @specific_ra.setter + def specific_ra(self, value): + self.Ra = value * self.length / self.xarea + + @property + def specific_cm(self): + return self.Cm / self.area + @specific_cm.setter + def specific_cm(self, value): + self.Cm = value * self.area + + @property + def specific_gl(self): + return 1.0/(self.Rm * self.area) + @specific_gl.setter + def specific_gl(self, value): + self.Rm = 1.0/(value * self.area) + + @property + def specific_rm(self): + return self.Rm * self.area + @specific_rm.setter + def specific_rm(self, value): + self.Rm = value / self.area + + @property + def specific_gNa(self): + return self.Na_channel.Gbar / self.area + + @specific_gNa.setter + def specific_gNa(self, value): + self.Na_channel.Gbar = value * self.area + + @property + def specific_gK(self): + return self.K_channel.Gbar / self.area + + @specific_gK.setter + def specific_gK(self, value): + self.K_channel.Gbar = value * self.area + + @property + def VK(self): + """Reversal potential of K+ channels""" + return SquidAxon.reversal_potential(self.temperature, self.K_out, self.K_in) + + @property + def VNa(self): + """Reversal potential of Na+ channels""" + return SquidAxon.reversal_potential(self.temperature, self.Na_out, self.Na_in) + + def updateEk(self): + """Update the channels' Ek""" + self.Na_channel.Ek = self.VNa + self.K_channel.Ek = self.VK + + + @property + def celsius(self): + return self.temperature - CELSIUS_TO_KELVIN + + @celsius.setter + def celsius(self, celsius): + self.temperature = celsius + CELSIUS_TO_KELVIN + + def use_defaults(self): + for field, value in list(SquidAxon.defaults.items()): + setattr(self, field, value) + +class SquidModel(moose.Neutral): + """Container for squid demo.""" + def __init__(self, path): + moose.Neutral.__init__(self, path) + self.squid_axon = SquidAxon(path+'/squid_axon') + print(self.squid_axon.Na_channel.Gbar, self.squid_axon.K_channel.Gbar) + self.current_clamp = moose.PulseGen(path+'/pulsegen') + self.current_clamp.firstDelay = 5.0 # ms + self.current_clamp.firstWidth = 40 # ms + self.current_clamp.firstLevel = 0.1 # uA + self.current_clamp.secondDelay = 1e9 + print('Current clamp connected:', moose.connect(self.current_clamp, 'output', self.squid_axon, 'injectMsg')) + + self.Vm_table = moose.Table('%s/Vm' % (self.path)) + moose.connect(self.Vm_table, 'requestOut', self.squid_axon, 'getVm') + self.gK_table = moose.Table('%s/gK' % (self.path)) + moose.connect(self.gK_table, 'requestOut', self.squid_axon.K_channel, 'getGk') + self.gNa_table = moose.Table('%s/gNa' % (self.path)) + moose.connect(self.gNa_table, 'requestOut', self.squid_axon.Na_channel, 'getGk') + self.clocks_assigned = False + + def run(self, runtime, simdt=1e-6): + self.squid_axon.updateEk() + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.setClock(3, simdt) + if not self.clocks_assigned: + moose.useClock(0, '%s/#[TYPE=Compartment]' % (self.path), 'init') + moose.useClock(0, '%s/#[TYPE=PulseGen]' % (self.path), 'process') + moose.useClock(1, '%s/#[TYPE=Compartment]' % (self.path), 'process') + moose.useClock(2, '%s/#[TYPE=HHChannel]' % (self.squid_axon.path), 'process') + moose.useClock(3, '%s/#[TYPE=Table]' % (self.path), 'process') + self.clocks_assigned = True + moose.reinit() + moose.start(runtime) + + def save_data(self): + self.Vm_table.xplot('Vm.dat', 'Vm') + print('Vm saved to Vm.dat') + if hasattr(self, 'gK_table'): + self.gK_table.xplot('gK.dat', 'gK') + numpy.savetxt('K_alpha_n.dat', self.squid_axon.K_channel.alpha_m) + numpy.savetxt('K_beta_n.dat', self.squid_axon.K_channel.beta_m) + print('K conductance saved to gK.dat') + if hasattr(self, 'gNa_table'): + self.gNa_table.xplot('gNa.dat', 'gNa') + numpy.savetxt('Na_alpha_m.dat', self.squid_axon.Na_channel.alpha_m) + numpy.savetxt('Na_beta_m.dat', self.squid_axon.Na_channel.beta_m) + numpy.savetxt('Na_alpha_h.dat', self.squid_axon.Na_channel.alpha_h) + numpy.savetxt('Na_beta_h.dat', self.squid_axon.Na_channel.beta_h) + print('Na conductance saved to gNa.dat') + + + +def test(runtime=100.0, simdt=1e-2): + model = SquidModel('model') + model.run(runtime, simdt) + model.save_data() + +if __name__ == '__main__': + # unittest.main() + test() + + + +# +# squid.py ends here diff --git a/examples/squid/squid_demo.py b/examples/squid/squid_demo.py new file mode 100644 index 0000000..31285d0 --- /dev/null +++ b/examples/squid/squid_demo.py @@ -0,0 +1,899 @@ +#!/usr/bin/env python + # -*- coding: utf-8 -*- +# squidgui.py --- +# +# Filename: squidgui.py +# Description: +# Author: +# Maintainer: +# Created: Mon Jul 9 18:23:55 2012 (+0530) +# Version: +# Last-Updated: Tue May 3 00:18:47 2016 (-0400) +# By: subha +# Update #: 1078 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth +# Floor, Boston, MA 02110-1301, USA. +# +# + +# Code: + +import sys +sys.path.append('../../python') +import os +os.environ['NUMPTHREADS'] = '1' + +from collections import defaultdict +import time + +from PyQt4 import QtGui +from PyQt4 import QtCore +import numpy +from matplotlib.figure import Figure +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar + +import moose + +from squid import * +from squid_setup import SquidSetup +from electronics import ClampCircuit + + +tooltip_Nernst = """

Ionic equilibrium potential

+

+The equilibrium potential for ion C is given by Nernst equation: +

+EC = (RT/zF) * ln([C]out / [C]in) +

+where R is the ideal gas constant (8.3145 J/mol K),
+ T is absolute temperature,
+ z is the valence of the ion,
+ F is Faraday's constant 96480 C/mol,
+ [C]out is concentration of C outside the membrane,
+ [C]in is concentration of C inside the membrane.""" + +tooltip_Erest = """

Resting membrane potential

+

+The resting membrane potential is determined by the ionic +concentrations inside and outside the cell membrane and is given by +the Goldman-Hodgkin-Katz equation: +

+ +V = (RT/F) * ln((PK[K+]out + PNa[Na+]out + PCl[Cl-]in) / (PK[K+]in + PNa[Na+]in + PCl[Cl-]out)) + +

+where PC is the permeability of the membrane to ion C. + +""" + +tooltip_NaChan = """

Na+ channel conductance

+

+The Na+ channel conductance in squid giant axon is given by: + +

GNa = ḠNa * m3 * h

+ +and the current through this channel is: +

+INa = GNa * (V - ENa) = ḠNa * m3 * h * (V - ENa) +

+ +where ḠNa is the peak conductance of Na+ channel, m is +the fraction of activation gates open and h is the fraction of +deactivation gates open. The transition from open to closed state has +first order kinetics: +

dm/dt = αm * ( 1 - m) - βm * m

+and similarly for h. + +The steady state values are: +

m = αm/(αm + βm)

+and time constant for steady state is: +

τm = 1/ (αm + βm)

+and similarly for h. +""" + +tooltip_KChan = """

K+ channel conductance

+

The K+ channel conductance in squid giant axon is given by: + +

GK = ḠK * n4

+ +and the current through this channel is: +

+IK = GK * (V - EK) = ḠK * n4 * (V - EK) +

+where ḠK is the peak conductance of K+ channel, +n is the fraction of activation gates open. The transition from open +to closed state has first order kinetics:

dn/dt = αn * +( 1 - n) - βn * n

. + +The steady state values are: +

+n = αn/(αn + βn) +

+and time constant for steady state is: +

n = 1/ (αn + βn) + +

+and similarly for h. +""" + +tooltip_Im = """

Membrane current

+

+The current through the membrane is given by: +

+Im = Cm dV/dt + IK + INa + IL +

+ = Cm dV/dt + GK(V, t) * (V - EK) + GNa * (V - ENa) + GL * (V - EL) +

+where GL is the leak current and EL is the leak reversal potential. + +""" + +default_line_edit_size = QtCore.QSize(80, 25) +def set_default_line_edit_size(widget): + widget.setMinimumSize(default_line_edit_size) + widget.setMaximumSize(default_line_edit_size) + + +class SquidGui(QtGui.QMainWindow): + defaults = {} + defaults.update(SquidAxon.defaults) + defaults.update(ClampCircuit.defaults) + defaults.update({'runtime': 50.0, + 'simdt': 0.01, + 'plotdt': 0.1, + 'vclamp.holdingV': 0.0, + 'vclamp.holdingT': 10.0, + 'vclamp.prepulseV': 0.0, + 'vclamp.prepulseT': 0.0, + 'vclamp.clampV': 50.0, + 'vclamp.clampT': 20.0, + 'iclamp.baseI': 0.0, + 'iclamp.firstI': 0.1, + 'iclamp.firstT': 40.0, + 'iclamp.firstD': 5.0, + 'iclamp.secondI': 0.0, + 'iclamp.secondT': 0.0, + 'iclamp.secondD': 0.0 + }) + def __init__(self, *args): + QtGui.QMainWindow.__init__(self, *args) + self.squid_setup = SquidSetup() + self._plotdt = SquidGui.defaults['plotdt'] + self._plot_dict = defaultdict(list) + self.setWindowTitle('Squid Axon simulation') + self.setDockNestingEnabled(True) + self._createRunControl() + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._runControlDock) + self._runControlDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) + self._createChannelControl() + self._channelCtrlBox.setWindowTitle('Channel properties') + self._channelControlDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._channelControlDock) + self._createElectronicsControl() + self._electronicsDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) + self._electronicsDock.setWindowTitle('Electronics') + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self._electronicsDock) + self._createPlotWidget() + self.setCentralWidget(self._plotWidget) + self._createStatePlotWidget() + self._createHelpMessage() + self._helpWindow.setVisible(False) + self._statePlotWidget.setWindowFlags(QtCore.Qt.Window) + self._statePlotWidget.setWindowTitle('State plot') + self._initActions() + self._createRunToolBar() + self._createPlotToolBar() + + def getFloatInput(self, widget, name): + try: + return float(str(widget.text())) + except ValueError: + QtGui.QMessageBox.critical(self, 'Invalid input', 'Please enter a valid number for {}'.format(name)) + raise + + + def _createPlotWidget(self): + self._plotWidget = QtGui.QWidget() + self._plotFigure = Figure() + self._plotCanvas = FigureCanvas(self._plotFigure) + self._plotCanvas.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._plotCanvas.updateGeometry() + self._plotCanvas.setParent(self._plotWidget) + self._plotCanvas.mpl_connect('scroll_event', self._onScroll) + self._plotFigure.set_canvas(self._plotCanvas) + # Vm and command voltage go in the same subplot + self._vm_axes = self._plotFigure.add_subplot(2,2,1, title='Membrane potential') + self._vm_axes.set_ylim(-20.0, 120.0) + # Channel conductances go to the same subplot + self._g_axes = self._plotFigure.add_subplot(2,2,2, title='Channel conductance') + self._g_axes.set_ylim(0.0, 0.5) + # Injection current for Vclamp/Iclamp go to the same subplot + self._im_axes = self._plotFigure.add_subplot(2,2,3, title='Injection current') + self._im_axes.set_ylim(-0.5, 0.5) + # Channel currents go to the same subplot + self._i_axes = self._plotFigure.add_subplot(2,2,4, title='Channel current') + self._i_axes.set_ylim(-10, 10) + for axis in self._plotFigure.axes: + axis.set_autoscale_on(False) + layout = QtGui.QVBoxLayout() + layout.addWidget(self._plotCanvas) + self._plotNavigator = NavigationToolbar(self._plotCanvas, self._plotWidget) + layout.addWidget(self._plotNavigator) + self._plotWidget.setLayout(layout) + + def _createStatePlotWidget(self): + self._statePlotWidget = QtGui.QWidget() + self._statePlotFigure = Figure() + self._statePlotCanvas = FigureCanvas(self._statePlotFigure) + self._statePlotCanvas.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._statePlotCanvas.updateGeometry() + self._statePlotCanvas.setParent(self._statePlotWidget) + self._statePlotFigure.set_canvas(self._statePlotCanvas) + self._statePlotFigure.subplots_adjust(hspace=0.5) + self._statePlotAxes = self._statePlotFigure.add_subplot(2,1,1, title='State plot') + self._state_plot, = self._statePlotAxes.plot([], [], label='state') + self._activationParamAxes = self._statePlotFigure.add_subplot(2,1,2, title='H-H activation parameters vs time') + self._activationParamAxes.set_xlabel('Time (ms)') + #for axis in self._plotFigure.axes: + # axis.autoscale(False) + self._stateplot_xvar_label = QtGui.QLabel('Variable on X-axis') + self._stateplot_xvar_combo = QtGui.QComboBox() + self._stateplot_xvar_combo.addItems(['V', 'm', 'n', 'h']) + self._stateplot_xvar_combo.setCurrentIndex(0) + self._stateplot_xvar_combo.setEditable(False) + self.connect(self._stateplot_xvar_combo, + QtCore.SIGNAL('currentIndexChanged(const QString&)'), + self._statePlotXSlot) + self._stateplot_yvar_label = QtGui.QLabel('Variable on Y-axis') + self._stateplot_yvar_combo = QtGui.QComboBox() + self._stateplot_yvar_combo.addItems(['V', 'm', 'n', 'h']) + self._stateplot_yvar_combo.setCurrentIndex(2) + self._stateplot_yvar_combo.setEditable(False) + self.connect(self._stateplot_yvar_combo, + QtCore.SIGNAL('currentIndexChanged(const QString&)'), + self._statePlotYSlot) + self._statePlotNavigator = NavigationToolbar(self._statePlotCanvas, self._statePlotWidget) + frame = QtGui.QFrame() + frame.setFrameStyle(QtGui.QFrame.StyledPanel + QtGui.QFrame.Raised) + layout = QtGui.QHBoxLayout() + layout.addWidget(self._stateplot_xvar_label) + layout.addWidget(self._stateplot_xvar_combo) + layout.addWidget(self._stateplot_yvar_label) + layout.addWidget(self._stateplot_yvar_combo) + frame.setLayout(layout) + self._closeStatePlotAction = QtGui.QAction('Close', self) + self.connect(self._closeStatePlotAction, QtCore.SIGNAL('triggered()'), self._statePlotWidget.close) + self._closeStatePlotButton = QtGui.QToolButton() + self._closeStatePlotButton.setDefaultAction(self._closeStatePlotAction) + layout = QtGui.QVBoxLayout() + layout.addWidget(frame) + layout.addWidget(self._statePlotCanvas) + layout.addWidget(self._statePlotNavigator) + layout.addWidget(self._closeStatePlotButton) + self._statePlotWidget.setLayout(layout) + # Setting the close event so that when the help window is + # closed the ``State plot`` button becomes unchecked + self._statePlotWidget.closeEvent = lambda event: self._showStatePlotAction.setChecked(False) + + def _createRunControl(self): + self._runControlBox = QtGui.QGroupBox(self) + self._runControlBox.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + self._runTimeLabel = QtGui.QLabel("Run time (ms)", self._runControlBox) + self._simTimeStepLabel = QtGui.QLabel("Simulation time step (ms)", self._runControlBox) + self._runTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['runtime']), self._runControlBox) + set_default_line_edit_size(self._runTimeEdit) + self._simTimeStepEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['simdt']), self._runControlBox) + set_default_line_edit_size(self._simTimeStepEdit) + layout = QtGui.QGridLayout() + layout.addWidget(self._runTimeLabel, 0, 0) + layout.addWidget(self._runTimeEdit, 0, 1) + layout.addWidget(self._simTimeStepLabel, 1, 0) + layout.addWidget(self._simTimeStepEdit, 1, 1) + layout.setColumnStretch(2, 1.0) + layout.setRowStretch(2, 1.0) + self._runControlBox.setLayout(layout) + self._runControlDock = QtGui.QDockWidget('Simulation', self) + self._runControlDock.setWidget(self._runControlBox) + + def _createChannelControl(self): + self._channelControlDock = QtGui.QDockWidget('Channels', self) + self._channelCtrlBox = QtGui.QGroupBox(self) + self._naConductanceToggle = QtGui.QCheckBox('Block Na+ channel', self._channelCtrlBox) + self._naConductanceToggle.setToolTip('%s' % (tooltip_NaChan)) + self._kConductanceToggle = QtGui.QCheckBox('Block K+ channel', self._channelCtrlBox) + self._kConductanceToggle.setToolTip('%s' % (tooltip_KChan)) + self._kOutLabel = QtGui.QLabel('[K+]out (mM)', self._channelCtrlBox) + self._kOutEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.K_out), + self._channelCtrlBox) + self._kOutLabel.setToolTip('%s' % (tooltip_Nernst)) + self._kOutEdit.setToolTip('%s' % (tooltip_Nernst)) + set_default_line_edit_size(self._kOutEdit) + self._naOutLabel = QtGui.QLabel('[Na+]out (mM)', self._channelCtrlBox) + self._naOutEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.Na_out), + self._channelCtrlBox) + self._naOutLabel.setToolTip('%s' % (tooltip_Nernst)) + self._naOutEdit.setToolTip('%s' % (tooltip_Nernst)) + set_default_line_edit_size(self._naOutEdit) + self._kInLabel = QtGui.QLabel('[K+]in (mM)', self._channelCtrlBox) + self._kInEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.K_in), + self._channelCtrlBox) + self._kInEdit.setToolTip(tooltip_Nernst) + self._naInLabel = QtGui.QLabel('[Na+]in (mM)', self._channelCtrlBox) + self._naInEdit = QtGui.QLineEdit('%g' % (self.squid_setup.squid_axon.Na_in), + self._channelCtrlBox) + self._naInEdit.setToolTip('%s' % (tooltip_Nernst)) + self._temperatureLabel = QtGui.QLabel('Temperature (C)', self._channelCtrlBox) + self._temperatureEdit = QtGui.QLineEdit('%g' % (self.defaults['temperature'] - CELSIUS_TO_KELVIN), + self._channelCtrlBox) + self._temperatureEdit.setToolTip('%s' % (tooltip_Nernst)) + set_default_line_edit_size(self._temperatureEdit) + for child in self._channelCtrlBox.children(): + if isinstance(child, QtGui.QLineEdit): + set_default_line_edit_size(child) + layout = QtGui.QGridLayout(self._channelCtrlBox) + layout.addWidget(self._naConductanceToggle, 0, 0) + layout.addWidget(self._kConductanceToggle, 1, 0) + layout.addWidget(self._naOutLabel, 2, 0) + layout.addWidget(self._naOutEdit, 2, 1) + layout.addWidget(self._naInLabel, 3, 0) + layout.addWidget(self._naInEdit, 3, 1) + layout.addWidget(self._kOutLabel, 4, 0) + layout.addWidget(self._kOutEdit, 4, 1) + layout.addWidget(self._kInLabel, 5, 0) + layout.addWidget(self._kInEdit, 5, 1) + layout.addWidget(self._temperatureLabel, 6, 0) + layout.addWidget(self._temperatureEdit, 6, 1) + layout.setRowStretch(7, 1.0) + self._channelCtrlBox.setLayout(layout) + self._channelControlDock.setWidget(self._channelCtrlBox) + return self._channelCtrlBox + + def __get_stateplot_data(self, name): + data = [] + if name == 'V': + data = self.squid_setup.vm_table.vector + elif name == 'm': + data = self.squid_setup.m_table.vector + elif name == 'h': + data = self.squid_setup.h_table.vector + elif name == 'n': + data = self.squid_setup.n_table.vector + else: + raise ValueError('Unrecognized selection: %s' % (name)) + return numpy.asarray(data) + + def _statePlotYSlot(self, selectedItem): + ydata = self.__get_stateplot_data(str(selectedItem)) + self._state_plot.set_ydata(ydata) + self._statePlotAxes.set_ylabel(selectedItem) + if str(selectedItem) == 'V': + self._statePlotAxes.set_ylim(-20, 120) + else: + self._statePlotAxes.set_ylim(0, 1) + self._statePlotCanvas.draw() + + def _statePlotXSlot(self, selectedItem): + xdata = self.__get_stateplot_data(str(selectedItem)) + self._state_plot.set_xdata(xdata) + self._statePlotAxes.set_xlabel(selectedItem) + if str(selectedItem) == 'V': + self._statePlotAxes.set_xlim(-20, 120) + else: + self._statePlotAxes.set_xlim(0, 1) + self._statePlotCanvas.draw() + + def _createElectronicsControl(self): + """Creates a tabbed widget of voltage clamp and current clamp controls""" + self._electronicsTab = QtGui.QTabWidget(self) + self._electronicsTab.addTab(self._getIClampCtrlBox(), 'Current clamp') + self._electronicsTab.addTab(self._getVClampCtrlBox(), 'Voltage clamp') + self._electronicsDock = QtGui.QDockWidget(self) + self._electronicsDock.setWidget(self._electronicsTab) + + def _getVClampCtrlBox(self): + vClampPanel = QtGui.QGroupBox(self) + self._vClampCtrlBox = vClampPanel + self._holdingVLabel = QtGui.QLabel("Holding Voltage (mV)", vClampPanel) + self._holdingVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.holdingV']), vClampPanel) + self._holdingTimeLabel = QtGui.QLabel("Holding Time (ms)", vClampPanel) + self._holdingTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.holdingT']), vClampPanel) + self._prePulseVLabel = QtGui.QLabel("Pre-pulse Voltage (mV)", vClampPanel) + self._prePulseVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.prepulseV']), vClampPanel) + self._prePulseTimeLabel = QtGui.QLabel("Pre-pulse Time (ms)", vClampPanel) + self._prePulseTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.prepulseT']), vClampPanel) + self._clampVLabel = QtGui.QLabel("Clamp Voltage (mV)", vClampPanel) + self._clampVEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.clampV']), vClampPanel) + self._clampTimeLabel = QtGui.QLabel("Clamp Time (ms)", vClampPanel) + self._clampTimeEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['vclamp.clampT']), vClampPanel) + for child in vClampPanel.children(): + if isinstance(child, QtGui.QLineEdit): + set_default_line_edit_size(child) + layout = QtGui.QGridLayout(vClampPanel) + layout.addWidget(self._holdingVLabel, 0, 0) + layout.addWidget(self._holdingVEdit, 0, 1) + layout.addWidget(self._holdingTimeLabel, 1, 0) + layout.addWidget(self._holdingTimeEdit, 1, 1) + layout.addWidget(self._prePulseVLabel, 2, 0) + layout.addWidget(self._prePulseVEdit, 2, 1) + layout.addWidget(self._prePulseTimeLabel,3,0) + layout.addWidget(self._prePulseTimeEdit, 3, 1) + layout.addWidget(self._clampVLabel, 4, 0) + layout.addWidget(self._clampVEdit, 4, 1) + layout.addWidget(self._clampTimeLabel, 5, 0) + layout.addWidget(self._clampTimeEdit, 5, 1) + layout.setRowStretch(6, 1.0) + vClampPanel.setLayout(layout) + return self._vClampCtrlBox + + def _getIClampCtrlBox(self): + iClampPanel = QtGui.QGroupBox(self) + self._iClampCtrlBox = iClampPanel + self._baseCurrentLabel = QtGui.QLabel("Base Current Level (uA)",iClampPanel) + self._baseCurrentEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.baseI']),iClampPanel) + self._firstPulseLabel = QtGui.QLabel("First Pulse Current (uA)", iClampPanel) + self._firstPulseEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstI']), iClampPanel) + self._firstDelayLabel = QtGui.QLabel("First Onset Delay (ms)", iClampPanel) + self._firstDelayEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstD']),iClampPanel) + self._firstPulseWidthLabel = QtGui.QLabel("First Pulse Width (ms)", iClampPanel) + self._firstPulseWidthEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.firstT']), iClampPanel) + self._secondPulseLabel = QtGui.QLabel("Second Pulse Current (uA)", iClampPanel) + self._secondPulseEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondI']), iClampPanel) + self._secondDelayLabel = QtGui.QLabel("Second Onset Delay (ms)", iClampPanel) + self._secondDelayEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondD']),iClampPanel) + self._secondPulseWidthLabel = QtGui.QLabel("Second Pulse Width (ms)", iClampPanel) + self._secondPulseWidthEdit = QtGui.QLineEdit('%g' % (SquidGui.defaults['iclamp.secondT']), iClampPanel) + self._pulseMode = QtGui.QComboBox(iClampPanel) + self._pulseMode.addItem("Single Pulse") + self._pulseMode.addItem("Pulse Train") + for child in iClampPanel.children(): + if isinstance(child, QtGui.QLineEdit): + set_default_line_edit_size(child) + layout = QtGui.QGridLayout(iClampPanel) + layout.addWidget(self._baseCurrentLabel, 0, 0) + layout.addWidget(self._baseCurrentEdit, 0, 1) + layout.addWidget(self._firstPulseLabel, 1, 0) + layout.addWidget(self._firstPulseEdit, 1, 1) + layout.addWidget(self._firstDelayLabel, 2, 0) + layout.addWidget(self._firstDelayEdit, 2, 1) + layout.addWidget(self._firstPulseWidthLabel, 3, 0) + layout.addWidget(self._firstPulseWidthEdit, 3, 1) + layout.addWidget(self._secondPulseLabel, 4, 0) + layout.addWidget(self._secondPulseEdit, 4, 1) + layout.addWidget(self._secondDelayLabel, 5, 0) + layout.addWidget(self._secondDelayEdit, 5, 1) + layout.addWidget(self._secondPulseWidthLabel, 6, 0) + layout.addWidget(self._secondPulseWidthEdit, 6, 1) + layout.addWidget(self._pulseMode, 7, 0, 1, 2) + layout.setRowStretch(8, 1.0) + # layout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + iClampPanel.setLayout(layout) + return self._iClampCtrlBox + + def _overlayPlots(self, overlay): + if not overlay: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + title = axis.get_title() + axis.clear() + axis.set_title(title) + suffix = '' + else: + suffix = '_%d' % (len(self._plot_dict['vm'])) + self._vm_axes.set_xlim(0.0, self._runtime) + self._g_axes.set_xlim(0.0, self._runtime) + self._im_axes.set_xlim(0.0, self._runtime) + self._i_axes.set_xlim(0.0, self._runtime) + self._vm_plot, = self._vm_axes.plot([], [], label='Vm%s'%(suffix)) + self._plot_dict['vm'].append(self._vm_plot) + self._command_plot, = self._vm_axes.plot([], [], label='command%s'%(suffix)) + self._plot_dict['command'].append(self._command_plot) + # Channel conductances go to the same subplot + self._gna_plot, = self._g_axes.plot([], [], label='Na%s'%(suffix)) + self._plot_dict['gna'].append(self._gna_plot) + self._gk_plot, = self._g_axes.plot([], [], label='K%s'%(suffix)) + self._plot_dict['gk'].append(self._gk_plot) + # Injection current for Vclamp/Iclamp go to the same subplot + self._iclamp_plot, = self._im_axes.plot([], [], label='Iclamp%s'%(suffix)) + self._vclamp_plot, = self._im_axes.plot([], [], label='Vclamp%s'%(suffix)) + self._plot_dict['iclamp'].append(self._iclamp_plot) + self._plot_dict['vclamp'].append(self._vclamp_plot) + # Channel currents go to the same subplot + self._ina_plot, = self._i_axes.plot([], [], label='Na%s'%(suffix)) + self._plot_dict['ina'].append(self._ina_plot) + self._ik_plot, = self._i_axes.plot([], [], label='K%s'%(suffix)) + self._plot_dict['ik'].append(self._ik_plot) + # self._i_axes.legend() + # State plots + self._state_plot, = self._statePlotAxes.plot([], [], label='state%s'%(suffix)) + self._plot_dict['state'].append(self._state_plot) + self._m_plot, = self._activationParamAxes.plot([],[], label='m%s'%(suffix)) + self._h_plot, = self._activationParamAxes.plot([], [], label='h%s'%(suffix)) + self._n_plot, = self._activationParamAxes.plot([], [], label='n%s'%(suffix)) + self._plot_dict['m'].append(self._m_plot) + self._plot_dict['h'].append(self._h_plot) + self._plot_dict['n'].append(self._n_plot) + if self._showLegendAction.isChecked(): + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.legend() + + def _updateAllPlots(self): + self._updatePlots() + self._updateStatePlot() + + def _updatePlots(self): + if len(self.squid_setup.vm_table.vector) <= 0: + return + vm = numpy.asarray(self.squid_setup.vm_table.vector) + cmd = numpy.asarray(self.squid_setup.cmd_table.vector) + ik = numpy.asarray(self.squid_setup.ik_table.vector) + ina = numpy.asarray(self.squid_setup.ina_table.vector) + iclamp = numpy.asarray(self.squid_setup.iclamp_table.vector) + vclamp = numpy.asarray(self.squid_setup.vclamp_table.vector) + gk = numpy.asarray(self.squid_setup.gk_table.vector) + gna = numpy.asarray(self.squid_setup.gna_table.vector) + time_series = numpy.linspace(0, self._plotdt * len(vm), len(vm)) + self._vm_plot.set_data(time_series, vm) + time_series = numpy.linspace(0, self._plotdt * len(cmd), len(cmd)) + self._command_plot.set_data(time_series, cmd) + time_series = numpy.linspace(0, self._plotdt * len(ik), len(ik)) + self._ik_plot.set_data(time_series, ik) + time_series = numpy.linspace(0, self._plotdt * len(ina), len(ina)) + self._ina_plot.set_data(time_series, ina) + time_series = numpy.linspace(0, self._plotdt * len(iclamp), len(iclamp)) + self._iclamp_plot.set_data(time_series, iclamp) + time_series = numpy.linspace(0, self._plotdt * len(vclamp), len(vclamp)) + self._vclamp_plot.set_data(time_series, vclamp) + time_series = numpy.linspace(0, self._plotdt * len(gk), len(gk)) + self._gk_plot.set_data(time_series, gk) + time_series = numpy.linspace(0, self._plotdt * len(gna), len(gna)) + self._gna_plot.set_data(time_series, gna) + # self._vm_axes.margins(y=0.1) + # self._g_axes.margin(y=0.1) + # self._im_axes.margins(y=0.1) + # self._i_axes.margins(y=0.1) + if self._autoscaleAction.isChecked(): + for axis in self._plotFigure.axes: + axis.relim() + axis.margins(0.1, 0.1) + axis.autoscale_view(tight=True) + else: + self._vm_axes.set_ylim(-20.0, 120.0) + self._g_axes.set_ylim(0.0, 0.5) + self._im_axes.set_ylim(-0.5, 0.5) + self._i_axes.set_ylim(-10, 10) + self._vm_axes.set_xlim(0.0, time_series[-1]) + self._g_axes.set_xlim(0.0, time_series[-1]) + self._im_axes.set_xlim(0.0, time_series[-1]) + self._i_axes.set_xlim(0.0, time_series[-1]) + self._plotCanvas.draw() + + def _updateStatePlot(self): + if len(self.squid_setup.vm_table.vector) <= 0: + return + sx = str(self._stateplot_xvar_combo.currentText()) + sy = str(self._stateplot_yvar_combo.currentText()) + xdata = self.__get_stateplot_data(sx) + ydata = self.__get_stateplot_data(sy) + minlen = min(len(xdata), len(ydata)) + self._state_plot.set_data(xdata[:minlen], ydata[:minlen]) + self._statePlotAxes.set_xlabel(sx) + self._statePlotAxes.set_ylabel(sy) + if sx == 'V': + self._statePlotAxes.set_xlim(-20, 120) + else: + self._statePlotAxes.set_xlim(0, 1) + if sy == 'V': + self._statePlotAxes.set_ylim(-20, 120) + else: + self._statePlotAxes.set_ylim(0, 1) + self._activationParamAxes.set_xlim(0, self._runtime) + m = self.__get_stateplot_data('m') + n = self.__get_stateplot_data('n') + h = self.__get_stateplot_data('h') + time_series = numpy.linspace(0, self._plotdt*len(m), len(m)) + self._m_plot.set_data(time_series, m) + time_series = numpy.linspace(0, self._plotdt*len(h), len(h)) + self._h_plot.set_data(time_series, h) + time_series = numpy.linspace(0, self._plotdt*len(n), len(n)) + self._n_plot.set_data(time_series, n) + if self._autoscaleAction.isChecked(): + for axis in self._statePlotFigure.axes: + axis.relim() + axis.set_autoscale_on(True) + axis.autoscale_view(True) + self._statePlotCanvas.draw() + + def _runSlot(self): + if moose.isRunning(): + print('Stopping simulation in progress ...') + moose.stop() + self._runtime = self.getFloatInput(self._runTimeEdit, self._runTimeLabel.text()) + self._overlayPlots(self._overlayAction.isChecked()) + self._simdt = self.getFloatInput(self._simTimeStepEdit, self._simTimeStepLabel.text()) + clampMode = None + singlePulse = True + if self._electronicsTab.currentWidget() == self._vClampCtrlBox: + clampMode = 'vclamp' + baseLevel = self.getFloatInput(self._holdingVEdit, self._holdingVLabel.text()) + firstDelay = self.getFloatInput(self._holdingTimeEdit, self._holdingTimeLabel.text()) + firstWidth = self.getFloatInput(self._prePulseTimeEdit, self._prePulseTimeLabel.text()) + firstLevel = self.getFloatInput(self._prePulseVEdit, self._prePulseVLabel.text()) + secondDelay = firstWidth + secondWidth = self.getFloatInput(self._clampTimeEdit, self._clampTimeLabel.text()) + secondLevel = self.getFloatInput(self._clampVEdit, self._clampVLabel.text()) + if not self._autoscaleAction.isChecked(): + self._im_axes.set_ylim(-10.0, 10.0) + else: + clampMode = 'iclamp' + baseLevel = self.getFloatInput(self._baseCurrentEdit, self._baseCurrentLabel.text()) + firstDelay = self.getFloatInput(self._firstDelayEdit, self._firstDelayLabel.text()) + firstWidth = self.getFloatInput(self._firstPulseWidthEdit, self._firstPulseWidthLabel.text()) + firstLevel = self.getFloatInput(self._firstPulseEdit, self._firstPulseLabel.text()) + secondDelay = self.getFloatInput(self._secondDelayEdit, self._secondDelayLabel.text()) + secondLevel = self.getFloatInput(self._secondPulseEdit, self._secondPulseLabel.text()) + secondWidth = self.getFloatInput(self._secondPulseWidthEdit, self._secondPulseWidthLabel.text()) + singlePulse = (self._pulseMode.currentIndex() == 0) + if not self._autoscaleAction.isChecked(): + self._im_axes.set_ylim(-0.4, 0.4) + self.squid_setup.clamp_ckt.configure_pulses(baseLevel=baseLevel, + firstDelay=firstDelay, + firstWidth=firstWidth, + firstLevel=firstLevel, + secondDelay=secondDelay, + secondWidth=secondWidth, + secondLevel=secondLevel, + singlePulse=singlePulse) + if self._kConductanceToggle.isChecked(): + self.squid_setup.squid_axon.specific_gK = 0.0 + else: + self.squid_setup.squid_axon.specific_gK = SquidAxon.defaults['specific_gK'] + if self._naConductanceToggle.isChecked(): + self.squid_setup.squid_axon.specific_gNa = 0.0 + else: + self.squid_setup.squid_axon.specific_gNa = SquidAxon.defaults['specific_gNa'] + self.squid_setup.squid_axon.celsius = self.getFloatInput(self._temperatureEdit, self._temperatureLabel.text()) + self.squid_setup.squid_axon.K_out = self.getFloatInput(self._kOutEdit, self._kOutLabel.text()) + self.squid_setup.squid_axon.Na_out = self.getFloatInput(self._naOutEdit, self._naOutLabel.text()) + self.squid_setup.squid_axon.K_in = self.getFloatInput(self._kInEdit, self._kInLabel.text()) + self.squid_setup.squid_axon.Na_in = self.getFloatInput(self._naInEdit, self._naInLabel.text()) + self.squid_setup.squid_axon.updateEk() + self.squid_setup.schedule(self._simdt, self._plotdt, clampMode) + # The following line is for use with Qthread + self.squid_setup.run(self._runtime) + self._updateAllPlots() + + def _toggleDocking(self, on): + self._channelControlDock.setFloating(on) + self._electronicsDock.setFloating(on) + self._runControlDock.setFloating(on) + + def _restoreDocks(self): + self._channelControlDock.setVisible(True) + self._electronicsDock.setVisible(True) + self._runControlDock.setVisible(True) + + def _initActions(self): + self._runAction = QtGui.QAction(self.tr('Run'), self) + self._runAction.setShortcut(self.tr('F5')) + self._runAction.setToolTip('Run simulation (F5)') + self.connect(self._runAction, QtCore.SIGNAL('triggered()'), self._runSlot) + self._resetToDefaultsAction = QtGui.QAction(self.tr('Restore defaults'), self) + self._resetToDefaultsAction.setToolTip('Reset all settings to their default values') + self.connect(self._resetToDefaultsAction, QtCore.SIGNAL('triggered()'), self._useDefaults) + self._showLegendAction = QtGui.QAction(self.tr('Display legend'), self) + self._showLegendAction.setCheckable(True) + self.connect(self._showLegendAction, QtCore.SIGNAL('toggled(bool)'), self._showLegend) + self._showStatePlotAction = QtGui.QAction(self.tr('State plot'), self) + self._showStatePlotAction.setCheckable(True) + self._showStatePlotAction.setChecked(False) + self.connect(self._showStatePlotAction, QtCore.SIGNAL('toggled(bool)'), self._statePlotWidget.setVisible) + self._autoscaleAction = QtGui.QAction(self.tr('Auto-scale plots'), self) + self._autoscaleAction.setCheckable(True) + self._autoscaleAction.setChecked(False) + self.connect(self._autoscaleAction, QtCore.SIGNAL('toggled(bool)'), self._autoscale) + self._overlayAction = QtGui.QAction('Overlay plots', self) + self._overlayAction.setCheckable(True) + self._overlayAction.setChecked(False) + self._dockAction = QtGui.QAction('Undock all', self) + self._dockAction.setCheckable(True) + self._dockAction.setChecked(False) + self.connect(self._dockAction, QtCore.SIGNAL('toggled(bool)'), self._toggleDocking) + self._restoreDocksAction = QtGui.QAction('Show all', self) + self.connect(self._restoreDocksAction, QtCore.SIGNAL('triggered()'), self._restoreDocks) + self._quitAction = QtGui.QAction(self.tr('&Quit'), self) + self._quitAction.setShortcut(self.tr('Ctrl+Q')) + self.connect(self._quitAction, QtCore.SIGNAL('triggered()'), QtGui.qApp.closeAllWindows) + + + + def _createRunToolBar(self): + self._simToolBar = self.addToolBar(self.tr('Simulation control')) + self._simToolBar.addAction(self._quitAction) + self._simToolBar.addAction(self._runAction) + self._simToolBar.addAction(self._resetToDefaultsAction) + self._simToolBar.addAction(self._dockAction) + self._simToolBar.addAction(self._restoreDocksAction) + + def _createPlotToolBar(self): + self._plotToolBar = self.addToolBar(self.tr('Plotting control')) + self._plotToolBar.addAction(self._showLegendAction) + self._plotToolBar.addAction(self._autoscaleAction) + self._plotToolBar.addAction(self._overlayAction) + self._plotToolBar.addAction(self._showStatePlotAction) + self._plotToolBar.addAction(self._helpAction) + self._plotToolBar.addAction(self._helpBiophysicsAction) + + def _showLegend(self, on): + if on: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.legend().set_visible(True) + else: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.legend().set_visible(False) + self._plotCanvas.draw() + self._statePlotCanvas.draw() + + def _autoscale(self, on): + if on: + for axis in (self._plotFigure.axes + self._statePlotFigure.axes): + axis.relim() + axis.set_autoscale_on(True) + axis.autoscale_view(True) + else: + for axis in self._plotFigure.axes: + axis.set_autoscale_on(False) + self._vm_axes.set_ylim(-20.0, 120.0) + self._g_axes.set_ylim(0.0, 0.5) + self._im_axes.set_ylim(-0.5, 0.5) + self._i_axes.set_ylim(-10, 10) + self._plotCanvas.draw() + self._statePlotCanvas.draw() + + def _useDefaults(self): + self._runTimeEdit.setText('%g' % (self.defaults['runtime'])) + self._simTimeStepEdit.setText('%g' % (self.defaults['simdt'])) + self._overlayAction.setChecked(False) + self._naConductanceToggle.setChecked(False) + self._kConductanceToggle.setChecked(False) + self._kOutEdit.setText('%g' % (SquidGui.defaults['K_out'])) + self._naOutEdit.setText('%g' % (SquidGui.defaults['Na_out'])) + self._kInEdit.setText('%g' % (SquidGui.defaults['K_in'])) + self._naInEdit.setText('%g' % (SquidGui.defaults['Na_in'])) + self._temperatureEdit.setText('%g' % (SquidGui.defaults['temperature'] - CELSIUS_TO_KELVIN)) + self._holdingVEdit.setText('%g' % (SquidGui.defaults['vclamp.holdingV'])) + self._holdingTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.holdingT'])) + self._prePulseVEdit.setText('%g' % (SquidGui.defaults['vclamp.prepulseV'])) + self._prePulseTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.prepulseT'])) + self._clampVEdit.setText('%g' % (SquidGui.defaults['vclamp.clampV'])) + self._clampTimeEdit.setText('%g' % (SquidGui.defaults['vclamp.clampT'])) + self._baseCurrentEdit.setText('%g' % (SquidGui.defaults['iclamp.baseI'])) + self._firstPulseEdit.setText('%g' % (SquidGui.defaults['iclamp.firstI'])) + self._firstDelayEdit.setText('%g' % (SquidGui.defaults['iclamp.firstD'])) + self._firstPulseWidthEdit.setText('%g' % (SquidGui.defaults['iclamp.firstT'])) + self._secondPulseEdit.setText('%g' % (SquidGui.defaults['iclamp.secondI'])) + self._secondDelayEdit.setText('%g' % (SquidGui.defaults['iclamp.secondD'])) + self._secondPulseWidthEdit.setText('%g' % (SquidGui.defaults['iclamp.secondT'])) + self._pulseMode.setCurrentIndex(0) + + def _onScroll(self, event): + if event.inaxes is None: + return + axes = event.inaxes + zoom = 0.0 + if event.button == 'up': + zoom = -1.0 + elif event.button == 'down': + zoom = 1.0 + if zoom != 0.0: + self._plotNavigator.push_current() + axes.get_xaxis().zoom(zoom) + axes.get_yaxis().zoom(zoom) + self._plotCanvas.draw() + + def closeEvent(self, event): + QtGui.qApp.closeAllWindows() + + def _showBioPhysicsHelp(self): + self._createHelpMessage() + self._helpMessageText.setText('

%s

%s

%s

%s

%s

' % + (tooltip_Nernst, + tooltip_Erest, + tooltip_KChan, + tooltip_NaChan, + tooltip_Im)) + self._helpWindow.setVisible(True) + + def _showRunningHelp(self): + self._createHelpMessage() + self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) + self._helpWindow.setVisible(True) + + def _createHelpMessage(self): + if hasattr(self, '_helpWindow'): + return + self._helpWindow = QtGui.QWidget() + self._helpWindow.setWindowFlags(QtCore.Qt.Window) + layout = QtGui.QVBoxLayout() + self._helpWindow.setLayout(layout) + self._helpMessageArea = QtGui.QScrollArea() + self._helpMessageText = QtGui.QTextBrowser() + self._helpMessageText.setOpenExternalLinks(True) + self._helpMessageArea.setWidget(self._helpMessageText) + layout.addWidget(self._helpMessageText) + self._squidGuiPath = os.path.dirname(os.path.abspath(__file__)) + self._helpBaseURL = os.path.join(self._squidGuiPath,'help.html') + self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) + self._helpMessageText.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._helpMessageArea.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self._helpMessageText.setMinimumSize(800, 600) + self._closeHelpAction = QtGui.QAction('Close', self) + self.connect(self._closeHelpAction, QtCore.SIGNAL('triggered()'), self._helpWindow.close) + # Setting the close event so that the ``Help`` button is + # unchecked when the help window is closed + self._helpWindow.closeEvent = lambda event: self._helpAction.setChecked(False) + self._helpTOCAction = QtGui.QAction('Help running demo', self) + self.connect(self._helpTOCAction, QtCore.SIGNAL('triggered()'), self._jumpToHelpTOC) + # This panel is for putting two buttons using horizontal + # layout + panel = QtGui.QFrame() + panel.setFrameStyle(QtGui.QFrame.StyledPanel + QtGui.QFrame.Raised) + layout.addWidget(panel) + layout = QtGui.QHBoxLayout() + panel.setLayout(layout) + self._helpAction = QtGui.QAction('Help running', self) + self.connect(self._helpAction, QtCore.SIGNAL('triggered()'), self._showRunningHelp) + self._helpBiophysicsAction = QtGui.QAction('Help biophysics', self) + self.connect(self._helpBiophysicsAction, QtCore.SIGNAL('triggered()'), self._showBioPhysicsHelp) + self._helpTOCButton = QtGui.QToolButton() + self._helpTOCButton.setDefaultAction(self._helpTOCAction) + self._helpBiophysicsButton = QtGui.QToolButton() + self._helpBiophysicsButton.setDefaultAction(self._helpBiophysicsAction) + layout.addWidget(self._helpTOCButton) + layout.addWidget(self._helpBiophysicsButton) + self._closeHelpButton = QtGui.QToolButton() + self._closeHelpButton.setDefaultAction(self._closeHelpAction) + layout.addWidget(self._closeHelpButton) + + def _jumpToHelpTOC(self): + self._helpMessageText.setSource(QtCore.QUrl(self._helpBaseURL)) + +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + app.connect(app, QtCore.SIGNAL('lastWindowClosed()'), app, QtCore.SLOT('quit()')) + QtGui.qApp = app + squid_gui = SquidGui() + squid_gui.show() + print(squid_gui.size()) + sys.exit(app.exec_()) + +# +# squidgui.py ends here diff --git a/examples/squid/squid_setup.py b/examples/squid/squid_setup.py new file mode 100644 index 0000000..6f24e46 --- /dev/null +++ b/examples/squid/squid_setup.py @@ -0,0 +1,118 @@ +# squid_demo.py --- +# +# Filename: squid_demo.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Feb 22 23:24:21 2012 (+0530) +# Version: +# Last-Updated: Tue Mar 6 23:25:50 2012 (+0530) +# By: Subhasis Ray +# Update #: 162 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: + +import moose + +from squid import SquidAxon +from electronics import ClampCircuit + +class SquidSetup(object): + def __init__(self): + self.scheduled = False + self.model_container = moose.Neutral('/model') + self.data_container = moose.Neutral('/data') + self.squid_axon = SquidAxon('/model/squid_axon') + self.clamp_ckt = ClampCircuit('/model/electronics', self.squid_axon) + self.simdt = 0.0 + self.plotdt = 0.0 + self.setup_recording() + + def setup_recording(self): + # Setup data collection + self.vm_table = moose.Table('/data/Vm') + moose.connect(self.vm_table, 'requestOut', self.squid_axon, 'getVm') + self.cmd_table = moose.Table('/data/command') + moose.connect(self.cmd_table, 'requestOut', self.clamp_ckt.vclamp, 'getOutputValue') + self.iclamp_table = moose.Table('/data/Iclamp') + moose.connect(self.iclamp_table, 'requestOut', self.clamp_ckt.iclamp, 'getOutputValue') + self.vclamp_table = moose.Table('/data/Vclamp') + moose.connect(self.vclamp_table, 'requestOut', self.clamp_ckt.pid, 'getOutputValue') + self.m_table = moose.Table('/data/m') + moose.connect(self.m_table, 'requestOut', self.squid_axon.Na_channel, 'getX') + self.h_table = moose.Table('/data/h') + moose.connect(self.h_table, 'requestOut', self.squid_axon.Na_channel, 'getY') + self.n_table = moose.Table('/data/n') + moose.connect(self.n_table, 'requestOut', self.squid_axon.K_channel, 'getX') + self.ina_table = moose.Table('/data/INa') + moose.connect(self.ina_table, 'requestOut', self.squid_axon.Na_channel, 'getIk') + self.ik_table = moose.Table('/data/IK') + moose.connect(self.ik_table, 'requestOut', self.squid_axon.K_channel, 'getIk') + self.gna_table = moose.Table('/data/GNa') + moose.connect(self.gna_table, 'requestOut', self.squid_axon.Na_channel, 'getGk') + self.gk_table = moose.Table('/data/GK') + moose.connect(self.gk_table, 'requestOut', self.squid_axon.K_channel, 'getGk') + + def schedule(self, simdt, plotdt, clampmode): + self.simdt = simdt + self.plotdt = plotdt + if clampmode == 'vclamp': + self.clamp_ckt.do_voltage_clamp() + else: + self.clamp_ckt.do_current_clamp() + moose.setClock(0, simdt) + moose.setClock(1, simdt) + moose.setClock(2, simdt) + moose.setClock(3, plotdt) + # Ensure we do not create multiple scheduling + if not self.scheduled: + moose.useClock(0, '%s/#[TYPE=Compartment]' % (self.model_container.path), 'init') + moose.useClock(0, '%s/##' % (self.clamp_ckt.path), 'process') + moose.useClock(1, '%s/#[TYPE=Compartment]' % (self.model_container.path), 'process') + moose.useClock(2, '%s/#[TYPE=HHChannel]' % (self.squid_axon.path), 'process') + moose.useClock(3, '%s/#[TYPE=Table]' % (self.data_container.path), 'process') + self.scheduled = True + moose.reinit() + + def run(self, runtime): + moose.start(runtime) + + def save_data(self): + for child in self.data_container.children: + tab = moose.Table(child) + tab.xplot('%s.dat' % (tab.name), tab.name) + +import sys +clamp_mode = 'vclamp' +if __name__ == '__main__': + demo = SquidSetup() + if len(sys.argv) > 1: + clamp_mode = sys.argv[1] + # The pulsegen object needs different values for different clamp modes + if clamp_mode == 'iclamp': + demo.clamp_ckt.configure_pulses() + else: + demo.clamp_ckt.configure_pulses(baseLevel=0.0, firstDelay=10.0, firstLevel=SquidAxon.EREST_ACT, firstWidth=0.0, secondDelay=0.0, secondLevel=50.0+SquidAxon.EREST_ACT, secondWidth=20.0) + demo.schedule(1e-2, 0.01, clamp_mode) + + demo.run(50.0) + demo.save_data() + +# +# squid_demo.py ends here diff --git a/examples/squid/test_squid.py b/examples/squid/test_squid.py new file mode 100644 index 0000000..005cb16 --- /dev/null +++ b/examples/squid/test_squid.py @@ -0,0 +1,117 @@ +# test_squid.py --- +# +# Filename: test_squid.py +# Description: +# Author: Subhasis Ray +# Maintainer: +# Created: Wed Feb 22 00:41:36 2012 (+0530) +# Version: +# Last-Updated: Wed Feb 22 00:41:51 2012 (+0530) +# By: Subhasis Ray +# Update #: 2 +# URL: +# Keywords: +# Compatibility: +# +# + +# Commentary: +# +# +# +# + +# Change log: +# +# +# + +# Code: + +import unittest +import pylab +from squid import SquidModel + +class SquidAxonTest(unittest.TestCase): + def setUp(self): + self.vrange = numpy.linspace(SquidModel.VMIN, SquidModel.VMAX, SquidModel.VDIVS+1) + self.model = SquidModel('testSquidAxon') + + def calc_alpha_beta(self, params, table='A'): + denominator = params[table+'_C'] + numpy.exp((self.vrange+params[table+'_D'])/params[table+'_F']) + numerator = params[table+'_A'] + params[table+'_B'] * self.vrange + y = numpy.zeros(len(self.vrange)) + singularities = numpy.nonzero(denominator == 0.0)[0] + self.assertLessEqual(len(singularities), 1) + if len(singularities) == 1: + y[:singularities[0]] = numerator[:singularities[0]]/denominator[:singularities[0]] + y[singularities[0]] = params[table+'_B'] * params[table+'_F'] + y[singularities[0]+1:] = numerator[singularities[0]+1:]/denominator[singularities[0]+1:] + elif len(singularities) == 0: + y[:] = numerator[:]/denominator[:] + return y + + def test_Na_alpha_m(self): + alpha_m = self.calc_alpha_beta(SquidModel.Na_m_params, 'A') + difference = numpy.sqrt(numpy.mean((alpha_m - self.model.Na_channel.alpha_m)**2)) + pylab.title('Na_alpha_m') + pylab.plot(alpha_m, label='python') + pylab.plot(self.model.Na_channel.alpha_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(alpha_m)*1e-6) + + def test_Na_beta_m(self): + beta_m = self.calc_alpha_beta(SquidModel.Na_m_params, 'B') + difference = numpy.sqrt(numpy.mean((beta_m - self.model.Na_channel.beta_m)**2)) + pylab.title('Na_beta_m') + pylab.plot(beta_m, label='python') + pylab.plot(self.model.Na_channel.beta_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(beta_m)*1e-6) + + def test_Na_alpha_h(self): + alpha_h = self.calc_alpha_beta(SquidModel.Na_h_params, 'A') + difference = numpy.sqrt(numpy.mean((alpha_h - self.model.Na_channel.alpha_h)**2)) + pylab.title('Na_alpha_h') + pylab.plot(alpha_h, label='python') + pylab.plot(self.model.Na_channel.alpha_h, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(alpha_h)*1e-6) + + def test_Na_beta_h(self): + beta_h = self.calc_alpha_beta(SquidModel.Na_h_params, 'B') + difference = numpy.sqrt(numpy.mean((beta_h - self.model.Na_channel.beta_h)**2)) + pylab.title('Na_beta_h') + pylab.plot(beta_h, label='python') + pylab.plot(self.model.Na_channel.beta_h, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(beta_h)*1e-6) + + def test_K_alpha_m(self): + alpha_m = self.calc_alpha_beta(SquidModel.K_n_params, 'A') + difference = numpy.sqrt(numpy.mean((alpha_m - self.model.K_channel.alpha_m)**2)) + pylab.title('K_alpha_n') + pylab.plot(alpha_m, label='python') + pylab.plot(self.model.K_channel.alpha_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(alpha_m)*1e-6) + + def test_K_beta_m(self): + beta_m = self.calc_alpha_beta(SquidModel.K_n_params, 'B') + difference = numpy.sqrt(numpy.mean((beta_m - self.model.K_channel.beta_m)**2)) + pylab.title('K_beta_n') + pylab.plot(beta_m, label='python') + pylab.plot(self.model.K_channel.beta_m, label='moose') + pylab.legend() + pylab.show() + self.assertLessEqual(difference, numpy.mean(beta_m)*1e-6) + + + +# +# test_squid.py ends here From e6a69b73e1fe2526eb37c0fc81667e84b942c979 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 12:28:15 +0530 Subject: [PATCH 23/66] Removed .gitignore. --- examples/squid/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 examples/squid/.gitignore diff --git a/examples/squid/.gitignore b/examples/squid/.gitignore deleted file mode 100644 index 773a6df..0000000 --- a/examples/squid/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.dat From e238e13a9d609b465721845859bc9e093a25a0a4 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 12:31:33 +0530 Subject: [PATCH 24/66] Removed popup for now. --- mgui/MWindow.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 5ac6712..1ee7732 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -130,7 +130,7 @@ def __init__(self, *args): self.setPlugin('default', '/') self.plugin.getEditorView().getCentralWidget().parent().close() self.popup = None - self.createPopup() + # self.createPopup() def createPopup(self): self.popup = dialog = QDialog(self) @@ -476,14 +476,12 @@ def updateMenus(self): """ self.menuBar().clear() self.getPluginsMenu() - menus = [self.getFileMenu(), - self.getEditMenu(), - self.getViewMenu(), - #self.getRunMenu(), - #self.getConnectMenu(), - self.getHelpMenu()] - for menu in menus: - self.menuBar().addMenu(menu) + menus = [self.getFileMenu() + , self.getEditMenu() + , self.getViewMenu(), + self.getHelpMenu() + ] + [ self.menuBar().addMenu(menu) for menu in menus ] for menu in self.plugin.getMenus(): if not self.updateExistingMenu(menu): @@ -494,7 +492,7 @@ def updateMenus(self): menus[0].addAction(self.quitAction) def updateToolbars(self): - _logger.info( "Updating toolbar" ) + _logger.debug( "Updating toolbar" ) for toolbar in self.toolBars: self.removeToolBar(toolbar) self.toolBars = [] From a79074c7448b3058112dc578f36c44bd65a639e1 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 14:42:04 +0530 Subject: [PATCH 25/66] Okie dok. This looks fine. Now layout engine. --- mgui/GenericTypes.py | 34 ++++++++++++ mgui/MWindow.py | 95 ++++++--------------------------- mgui/__init__.py | 3 +- mgui/examples.py | 65 ++++++++++++++++++++++ mgui/objectedit.py | 9 ++-- mgui/plugins/default.py | 84 ++++++----------------------- mgui/plugins/kkitViewcontrol.py | 53 +++++++++--------- 7 files changed, 162 insertions(+), 181 deletions(-) create mode 100644 mgui/GenericTypes.py create mode 100644 mgui/examples.py diff --git a/mgui/GenericTypes.py b/mgui/GenericTypes.py new file mode 100644 index 0000000..6d4fc78 --- /dev/null +++ b/mgui/GenericTypes.py @@ -0,0 +1,34 @@ +"""GenericTypes + +This class fixes the pytho2 and python3 related issues with PyQt4 + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys +import os + +from PyQt4 import QtCore + +if sys.version_info >= (3, 0): + + class QVariant(str): + """docstring for QVariant""" + def __init__(self, val): + super(QVariant, self).__init__() + self.val = val + + def toString( self ): + return "%s" % self.val + +else: + QVariant = QtCore.QVariant + diff --git a/mgui/MWindow.py b/mgui/MWindow.py index 1ee7732..bb77d02 100644 --- a/mgui/MWindow.py +++ b/mgui/MWindow.py @@ -41,6 +41,8 @@ from mgui.MdiArea import MdiArea from mgui.plugins.setsolver import * from mgui.plugins.defines import * +import mgui.examples as demos + # Logger _logger = config._logger @@ -130,7 +132,7 @@ def __init__(self, *args): self.setPlugin('default', '/') self.plugin.getEditorView().getCentralWidget().parent().close() self.popup = None - # self.createPopup() + self.createPopup() def createPopup(self): self.popup = dialog = QDialog(self) @@ -152,21 +154,7 @@ def createPopup(self): loadNeuronalModelButton = QPushButton("Load Neuronal Model") layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) - self.menuitems = OrderedDict([ - ("Fig2C" , "examples/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "examples/Fig2_elecModels/Fig2D.py"), - ("Fig2E", "examples/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa", "examples/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl", "examples/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D", "examples/Fig3_chemModels/Fig3D.py"), - ("Fig4B", "examples/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "examples/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "examples/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)", "examples/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "examples/Fig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "examples/Fig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "examples/squid/squid_demo.py") - ]) + self.menuitems = demos.examples_ layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) layout1 = QHBoxLayout() layout1.addWidget(createKineticModelButton) @@ -178,36 +166,11 @@ def createPopup(self): layout6 = QHBoxLayout() layout7 = QHBoxLayout() listofButtons = {} - for i in range(0,len(self.menuitems)): - k = self.menuitems.popitem(0) + for i, k in enumerate( self.menuitems ): + _logger.debug( "Adding button for %s" % k[0] ) t = k[0] button = QPushButton(k[0]) - if k[0] == "Fig2E": - button.setToolTip("Illustrates loading a model from an SWC file, inserting channels, and running it") - elif k[0] == "Fig2D (35s)": - button.setToolTip("Illustrates loading a model from an SWC file, inserting spines, and running it") - elif k[0] == "Fig2C": - button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") - elif k[0] == "Fig3B_Gssa": - button.setToolTip("Loades Repressilator model into Gui with Gssa solver and runs the model") - elif k[0] == "Fig3C_Gsl": - button.setToolTip("Loades Repressilator model into Gui with Gsl solver and runs the model") - elif k[0] == "Fig3D": - button.setToolTip("This example implements a reaction-diffusion like system which is bistable and propagates losslessly") - elif k[0] == "Fig4B": - button.setToolTip("This program builds a multiscale model with a few spines inserted into a simplified cellular morphology. Each spine has a signaling model in it too. The program doesn't run the model, it just displays it in 3D") - elif k[0] == "Fig4K": - button.setToolTip("Builds a cell with spines and a propagating reaction wave") - elif k[0] == "Fig5A (20s)": - button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") - elif k[0] == "Fig5BCD (240s)": - button.setToolTip("Illustrates building a panel of multiscale models to test neuronal plasticity in different contexts") - elif k[0] == "Fig6A (60s)": - button.setToolTip("This LIF network with Ca plasticity is based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") - elif k[0] == "Reduced6 (200s)": - button.setToolTip("This is the Reduced version of LIF network with Ca plasticity model based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") - elif k[0] == "Squid": - button.setToolTip("squid Demo") + button.setToolTip( demos.description_[ t ] ) if k[0] in ["Fig2E","Fig2D (35s)","Fig2C"]: layout2.addWidget(button) elif k[0] in ["Fig3B_Gssa","Fig3C_Gsl","Fig3D"]: @@ -246,8 +209,9 @@ def createPopup(self): freeCursor() return dialog - def run_genesis_script(self,filepath,solver): - self.popup.hide() + def run_genesis_script(self, filepath, solver): + if self.popup: + self.popup.hide() abspath = os.path.abspath(filepath) directory, modulename = os.path.split(abspath) modelName = os.path.splitext(modulename)[0] @@ -258,10 +222,12 @@ def run_genesis_script(self,filepath,solver): widget.runSimulation() def run_python_script(self, filepath): + """ Execute a python script """ busyCursor() import subprocess, shlex t = os.path.abspath(filepath) directory, filename = os.path.split(t) + _logger.info( "Executing %s" % filepath ) p = subprocess.Popen([ sys.executable, filename], cwd=directory) p.wait() freeCursor() @@ -595,37 +561,6 @@ def getFileMenu(self): self.connect(self.loadModelAction, QtCore.SIGNAL('triggered()'), self.loadModelDialogSlot) self.fileMenu.addAction(self.loadModelAction) - if not hasattr(self, 'Paper_2015'): - self.menuitems = OrderedDict([ - ("Fig2C (6s)" , "examples/gFig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "examples/gFig2_elecModels/Fig2D.py"), - ("Fig2E (5s)" , "examples/gFig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa (2s)", "examples/gFig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl (2s)", "examples/gFig3_chemModels/Fig3ABC.g"), - ("Fig3D (1s)", "examples/gFig3_chemModels/Fig3D.py"), - ("Fig4B (10s)", "examples/gFig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "examples/gFig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "examples/gFig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "examples/gFig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "examples/gFig6_NetMultiscale/Fig6A.py" ), - ("Reduced6 (200s)", "examples/gFig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "examples/squid/squid_demo.py") - ]) - self.subMenu = QtGui.QMenu('Paper_2015_Demos') - for i in range(0,len(self.menuitems)): - k = self.menuitems.popitem(0) - t = "self."+k[0]+"Action" - t = QtGui.QAction(k[0],self) - self.subMenu.addAction(t) - if k[0] == "Fig3C_Gsl (2s)": - t.connect(t,QtCore.SIGNAL('triggered()'),lambda script = k[1]: self.run_genesis_script(script,"gsl")) - elif k[0] == "Fig3B_Gssa (2s)": - t.connect(t,QtCore.SIGNAL('triggered()'),lambda script = k[1]: self.run_genesis_script(script,"gssa")) - else: - t.connect(t,QtCore.SIGNAL('triggered()'),lambda : self.run_python_script(k[1])) - self.subMenu.addAction(t) - self.fileMenu.addMenu(self.subMenu) - if not hasattr(self,'loadedModels'): self.loadedModelAction = QtGui.QAction('Recently Loaded Models',self) self.loadedModelAction.setCheckable(False) @@ -989,7 +924,8 @@ def loadModelDialogSlot(self): by looking into the model file for a regular expression) """ - self.popup.close() + if self.popup is not None: + self.popup.close() activeWindow = None # This to be used later to refresh the current widget with newly loaded model dialog = LoaderDialog(self, self.tr('Load model from file')) @@ -1067,7 +1003,8 @@ def dialog_check(self,ret): return ret,True def newModelDialogSlot(self): - self.popup.close() + if self.popup is not None: + self.popup.close() newModelDialog = DialogWidget() if newModelDialog.exec_(): modelPath = str(newModelDialog.modelPathEdit.text()).strip() diff --git a/mgui/__init__.py b/mgui/__init__.py index 8df7fe7..2cbebb2 100644 --- a/mgui/__init__.py +++ b/mgui/__init__.py @@ -8,4 +8,5 @@ # we are using Python3 so QString is not defined. Also QVariant is a mapped # type. QtCore.QString = type("") - + # In python3, QtCore.QVariant is just a string + QtCore.QVariant = type( "" ) diff --git a/mgui/examples.py b/mgui/examples.py new file mode 100644 index 0000000..3766ceb --- /dev/null +++ b/mgui/examples.py @@ -0,0 +1,65 @@ +"""examples.py: + +Here is dictionary of demos. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Dev,opment" + +import sys +import os + +from collections import OrderedDict + +examples_ = [ + ("Fig2C" , "examples/Fig2_elecModels/Fig2C.py") + , ("Fig2D (35s)","examples/Fig2_elecModels/Fig2D.py") + , ("Fig2E","examples/Fig2_elecModels/Fig2E.py") + , ("Fig3B_Gssa","examples/Fig3_chemModels/Fig3ABC.g") + , ("Fig3C_Gsl","examples/Fig3_chemModels/Fig3ABC.g") + , ("Fig3D","examples/Fig3_chemModels/Fig3D.py") + , ("Fig4B","examples/Fig4_ReacDiff/Fig4B.py" ) + , ("Fig4K", "examples/Fig4_ReacDiff/rxdSpineSize.py") + , ("Fig5A (20s)","examples/Fig5_CellMultiscale/Fig5A.py") + , ("Fig5BCD (240s)","examples/Fig5_CellMultiscale/Fig5BCD.py") + , ("Fig6A (60s)","examples/Fig6_NetMultiscale/Fig6A.py" ) + , ("Reduced6 (200s)","examples/Fig6_NetMultiscale/ReducedModel.py") + , ("Squid" , "examples/squid/squid_demo.py") + ] + +description_ = { + "Fig2E": + ("Illustrates loading a mod, from an SWC file, inserting chann,s, and running it") + , "Fig2D (35s)": + ("Illustrates loading a mod, from an SWC file, inserting spines, and running it") + , "Fig2C": + ("Illustrates building a pan, of multiscale mod,s to test neuronal plasticity in different contexts") + , "Fig3B_Gssa": + ("Loades Repressilator mod, into Gui with Gssa solver and runs the mod,") + , "Fig3C_Gsl": + ("Loades Repressilator mod, into Gui with Gsl solver and runs the mod,") + , "Fig3D": + ("This example implements a reaction-diffusion like system which is bistable and propagates losslessly") + , "Fig4B": + ("This program builds a multiscale mod, with a few spines inserted into a simplified c,lular morphology. Each spine has a signaling mod, in it too. The program doesn't run the mod,, it just displays it in 3D") + , "Fig4K": + ("Builds a c,l with spines and a propagating reaction wave") + , "Fig5A (20s)": + ("Illustrates building a pan, of multiscale mod,s to test neuronal plasticity in different contexts") + , "Fig5BCD (240s)": + ("Illustrates building a pan, of multiscale mod,s to test neuronal plasticity in different contexts") + , "Fig6A (60s)": + ("This LIF network with Ca plasticity is based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") + , "Reduced6 (200s)": + ("This is the Reduced version of LIF network with Ca plasticity mod, based on: Memory Maintenance in Synapses with Calcium-Based Plasticity in the Presence of Background Activity PLOS Computational Biology, 2014") + , "Squid": + ("squid Demo") + } + diff --git a/mgui/objectedit.py b/mgui/objectedit.py index 15a55c2..2ea0cce 100644 --- a/mgui/objectedit.py +++ b/mgui/objectedit.py @@ -41,10 +41,12 @@ import traceback import moose +import numpy as np from mgui import defaults from mgui import config from mgui.plugins.kkitUtil import getColor +from mgui.GenericTypes import QVariant extra_fields = ['this', 'me', @@ -155,7 +157,6 @@ def columnCount(self, parent): def setData(self, index, value, role=QtCore.Qt.EditRole): if not index.isValid() or index.row () >= len(self.fields) or index.column() != 1: return False - print(value) field = self.fields[index.row()] if (role == QtCore.Qt.CheckStateRole): if (index.column() == 1): @@ -163,7 +164,8 @@ def setData(self, index, value, role=QtCore.Qt.EditRole): return True else: - value = str(value.toString()).strip() # convert Qt datastructure to Python string + # convert Qt datastructure to Python string + value = value.strip() if len(value) == 0: return False if field == "Notes": @@ -192,8 +194,7 @@ def setData(self, index, value, role=QtCore.Qt.EditRole): vectorlist.append(float(d)) except: pass - from numpy import array - a = array( vectorlist ) + a = np.array( vectorlist ) self.mooseObject.setField(field, a) else: diff --git a/mgui/plugins/default.py b/mgui/plugins/default.py index 59d5e80..ca47179 100644 --- a/mgui/plugins/default.py +++ b/mgui/plugins/default.py @@ -59,6 +59,8 @@ from PyQt4.QtGui import QPixmap from PyQt4.QtGui import QAction +from mgui.config import _logger + ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -388,15 +390,6 @@ def __init__(self, *args, **kwargs): self.updateInterval = None self.runTime = None - # if not self.advanceOptiondisplayed: - # self.advancedOptionsWidget.hide() - - # self.__getUpdateIntervalWidget() - #layout.addWidget(self.__getUpdateIntervalWidget()) - # spacerItem = QtGui.QSpacerItem(450, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - # layout.addItem(spacerItem) - # self.setLayout(layout) - # self._toolBars.append( self.modelRoot = None self.dataRoot = None self.runner = Runner() @@ -411,10 +404,6 @@ def __init__(self, *args, **kwargs): self.runner.simulationProgressed.connect(self.updateCurrentSimulationRuntime) self.continueFlag = False self.preferences.applyChemicalSettings.connect(self.resetSimulation) - # self.resetAndRunButton.clicked.connect(self.resetAndRunSlot) - # self.continueButton.clicked.connect(self.doContinueRun) - # self.continueRun.connect(self.runner.continueRun) - # self.stopButton.clicked.connect(self.runner.stop) def updateCurrentSimulationRuntime(self, time): self.currentSimulationRuntime.setText(str(time)) @@ -460,9 +449,6 @@ def getSchedulerToolBar(self): bar.addSeparator() #: current time - # spacer.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) - # self._runToolBar.addWidget(spacer) - # self._runToolBar.addWidget(QtGui.QLabel('Current time')) self.currentSimulationRuntime = QLineEdit() # 6 digits self.currentSimulationRuntime.setToolTip('Current simulation runtime.') self.currentSimulationRuntime.setFixedWidth(75) @@ -688,9 +674,6 @@ class PlotWidget(QWidget): dataRoot - path to the container of data tables. - TODO: do we really need this separation or should we go for - standardizing location of data with respect to model root. - pathToLine - map from moose path to Line2D objects in plot. Can one moose table be plotted multiple times? Maybe yes (e.g., when you want multiple other tables to be compared with the same data). @@ -701,6 +684,7 @@ class PlotWidget(QWidget): widgetClosedSignal = pyqtSignal(object) addGraph = pyqtSignal(object) + def __init__(self, model, graph, index, parentWidget, *args, **kwargs): super(PlotWidget, self).__init__() self.model = model @@ -720,70 +704,44 @@ def __init__(self, model, graph, index, parentWidget, *args, **kwargs): self.navToolbar = NavigationToolbar(self.canvas, self) self.hackNavigationToolbar() self.canvas.mpl_connect('pick_event',self.togglePlot) - # self.canvas. - # self.navToolbar.addSeparator() layout = QtGui.QGridLayout() - # canvasScrollArea = QScrollArea() - # canvasScrollArea.setWidget(self.canvas) layout.addWidget(self.navToolbar, 0, 0) layout.addWidget(self.canvas, 1, 0) self.setLayout(layout) - # self.setAcceptDrops(True) - #self.modelRoot = '/' self.pathToLine = defaultdict(set) self.lineToDataSource = {} self.axesRef = self.canvas.addSubplot(1, 1) - # box = self.axesRef.get_position() - # self.axesRef.set_position([box.x0, box.y0, box.width * 0.8, box.height]) - self.legend = None - # layout.setSizeConstraint( QLayout.SetNoConstraint ) - # self.setSizePolicy( QtGui.QSizePolicy.Expanding - # , QtGui.QSizePolicy.Expanding - # ) - desktop = QtGui.QApplication.desktop() - # print("**********************") - # print(desktop.screenGeometry()) - # print("***********************") self.setMinimumSize(desktop.screenGeometry().width() / 4, desktop.screenGeometry().height() / 3) - # self.setMaximumSize(desktop.screenGeometry().width() / 2, desktop.screenGeometry().height() / 2) - # self.setMinimumSize(self.width(), self.height()) - # self.setMaximumSize(2 * self.width(), 2* self.height()) - # QtCore.QObject.connect(utils.tableEmitter,QtCore.SIGNAL("tableCreated()"),self.plotAllData) self.canvas.updateSignal.connect(self.plotAllData) self.plotAllData() - # self.plotView = PlotView(model, graph, index, self) - #self.dataTable = DataTable() - #utils.tableCreated.connect(plotAllData) - # self.plotAllData() - # self.setSizePolicy(QtGui.QSizePolicy.Fixed, - # QtGui.QSizePolicy.Expanding) def hackNavigationToolbar(self): # ADD Graph Action - pixmap = QPixmap("icons/add_graph.png") + pixmap = QPixmap( + os.path.join( config.MOOSE_ICON_DIR, 'add_graph.png' ) + ) icon = QIcon(pixmap) action = QAction(icon, "Add a graph", self.navToolbar) # self.navToolbar.addAction(action) - action.triggered.connect(self.addGraph.emit) + action.triggered.connect( self.addGraph.emit ) self.navToolbar.insertAction(self.navToolbar.actions()[0], action) # Delete Graph Action - pixmap = QPixmap("icons/delete_graph.png") + pixmap = QPixmap( os.path.join( config.MOOSE_ICON_DIR, + "delete_graph.png") ) icon = QIcon(pixmap) action = QAction(icon, "Delete this graph", self.navToolbar) - # self.navToolbar.addAction(action) action.triggered.connect(self.delete) - self.navToolbar.insertAction(self.navToolbar.actions()[1], action) #Toggle Grid Action - - pixmap = QPixmap("icons/grid.png") + pixmap = QPixmap( + os.path.join( config.MOOSE_ICON_DIR, "grid.png" ) + ) icon = QIcon(pixmap) action = QAction(icon, "Toggle Grid", self.navToolbar) - # self.navToolbar.addAction(action) action.triggered.connect(self.canvas.toggleGrid) self.navToolbar.insertAction(self.navToolbar.actions()[2], action) self.navToolbar.insertSeparator(self.navToolbar.actions()[3]) @@ -815,11 +773,13 @@ def getContextMenu(self): return menu def deleteGraph(self): - print(("Deleting " + self.graph.path)) + """ If there is only one graph in the view, please don't delete it """ + print( "Deleting %s " % self.graph.path) moose.delete(self.graph.path) def delete(self, event): - print("Deleting PlotWidget") + """FIXME: The last element should not be deleted """ + _logger.info("Deleting PlotWidget " ) self.deleteGraph() self.close() self.widgetClosedSignal.emit(self) @@ -830,16 +790,6 @@ def configure(self, event): @pyqtSlot(QtCore.QPoint) def contextMenuRequested(self,point): - # menu = QtGui.QMenu() - - # # action1 = menu.addAction("Set Size 100x100") - # # action2 = menu.addAction("Set Size 500x500") - - - # # self.connect(action2,SIGNAL("triggered()"), - # # self,SLOT("slotShow500x500()")) - # # self.connect(action1,SIGNAL("triggered()"), - # # self,SLOT("slotShow100x100()")) self.menu.exec_(self.mapToGlobal(point)) def setModelRoot(self, path): @@ -850,7 +800,6 @@ def setDataRoot(self, path): #plotAllData() def genColorMap(self,tableObject): - #print "tableObject in colorMap ",tableObject species = tableObject+'/info' colormap_file = open(os.path.join(config.settings[config.KEY_COLORMAP_DIR], 'rainbow2.pkl'),'rb') self.colorMap = pickle.load(colormap_file) @@ -871,7 +820,6 @@ def genColorMap(self,tableObject): color = 'white' return color - def removePlot(self, table): print(("removePlot =>", table)) moose.delete(table) diff --git a/mgui/plugins/kkitViewcontrol.py b/mgui/plugins/kkitViewcontrol.py index ba70df0..8f67adc 100644 --- a/mgui/plugins/kkitViewcontrol.py +++ b/mgui/plugins/kkitViewcontrol.py @@ -1,12 +1,15 @@ import sys -from .modelBuild import * -from .constants import * + +from mgui.plugins.modelBuild import * +from mgui.plugins.constants import * +from mgui.plugins.kkitUtil import * +from mgui.plugins.setsolver import * + from PyQt4.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem from PyQt4.QtCore import pyqtSignal -from .kkitUtil import * -from .setsolver import * from PyQt4 import QtSvg from moose import utils +from mgui.GenericTypes import QVariant class GraphicalView(QtGui.QGraphicsView): @@ -105,10 +108,6 @@ def resolveItem(self, items, position): return solution def editorMousePressEvent(self, event): - # self.deselectSelections() - # if self.state["press"]["item"] is not None: - # self.state["press"]["item"].setSelected(False) - # self.resetState() if event.buttons() == QtCore.Qt.LeftButton: self.clickPosition = self.mapToScene(event.pos()) (item, itemType) = self.resolveItem(self.items(event.pos()), self.clickPosition) @@ -116,14 +115,11 @@ def editorMousePressEvent(self, event): self.state["press"]["item"] = item self.state["press"]["type"] = itemType self.state["press"]["pos"] = event.pos() - #If connector exist and if mousePress on Compartment interior, - # then removing any connect if exist if itemType == COMPARTMENT_INTERIOR: self.removeConnector() elif itemType == ITEM: if not self.move: self.showConnector(self.state["press"]["item"]) - # self.layoutPt.plugin.mainWindow.objectEditSlot(self.state["press"]["item"].mobj, False) else: self.resetState() comptList = [] @@ -238,15 +234,6 @@ def editorMouseMoveEvent(self, event): y0,y1= y1,y0 self.customrubberBand.setGeometry(QtCore.QRect(QtCore.QPoint(x0, y0), QtCore.QSize(abs(displacement.x()), abs(displacement.y())))) - - - # if itemType == COMPARTMENT: - # rubberband selection - - # if itemType == COMPARTMENT_BOUNDARY: - - # if itemType == ITEM: - # dragging the item def editorMouseReleaseEvent(self, event): if self.move: @@ -543,8 +530,10 @@ def showConnector(self, item): if isinstance(item.mobj,PoolBase) or isinstance(item.mobj,ReacBase): if l == "clone": - self.connectionSign = QtSvg.QGraphicsSvgItem('icons/clone.svg') - self.connectionSign.setData(0, QtCore.QVariant("clone")) + self.connectionSign = QtSvg.QGraphicsSvgItem( + os.path.join( config.MOOSE_ICON_DIR, 'clone.svg' ) + ) + self.connectionSign.setData(0, QVariant("clone")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setScale( (1.0 * rectangle.height()) / self.connectionSign.boundingRect().height() @@ -558,8 +547,10 @@ def showConnector(self, item): if isinstance(item.mobj,PoolBase): if l == "plot": - self.connectionSign = QtSvg.QGraphicsSvgItem('icons/plot.svg') - self.connectionSign.setData(0, QtCore.QVariant("plot")) + self.connectionSign = QtSvg.QGraphicsSvgItem( + os.path.join( config.MOOSE_ICON_DIR, 'plot.svg' ) + ) + self.connectionSign.setData(0, QVariant("plot")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setScale( (1.0 * rectangle.height()) / self.connectionSign.boundingRect().height() @@ -575,8 +566,10 @@ def showConnector(self, item): if ((item.mobj.parent.className == "ZombieEnz") or (item.mobj.parent.className == "Enz")): pass else: - self.connectionSign = QtSvg.QGraphicsSvgItem('icons/move.svg') - self.connectionSign.setData(0, QtCore.QVariant("move")) + self.connectionSign = QtSvg.QGraphicsSvgItem( + os.path.join( config.MOOSE_ICON_DIR, 'move.svg' ) + ) + self.connectionSign.setData(0, QVariant("move")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setToolTip("Drag to move.") if ( item.mobj.className == "ZombieFunction" or item.mobj.className == "Function"): @@ -596,9 +589,11 @@ def showConnector(self, item): if ((item.mobj.parent.className == "ZombieEnz") or (item.mobj.parent.className == "Enz")): pass else: - self.connectionSign = QtSvg.QGraphicsSvgItem('icons/delete.svg') + self.connectionSign = QtSvg.QGraphicsSvgItem( + os.path.join( config.MOOSE_ICON_DIR, 'delete.svg' ) + ) self.connectionSign.setParent(self.connectionSource) - self.connectionSign.setData(0, QtCore.QVariant("delete")) + self.connectionSign.setData(0, QVariant("delete")) if ( item.mobj.className == "ZombieFunction" or item.mobj.className == "Function"): self.connectionSign.setScale( (0.75 * rectangle.height()) / self.connectionSign.boundingRect().height() @@ -1180,4 +1175,4 @@ def populate_srcdes(self,src,des): if callsetupItem: self.layoutPt.getMooseObj() setupItem(self.modelRoot,self.layoutPt.srcdesConnection) - self.layoutPt.drawLine_arrow(False) \ No newline at end of file + self.layoutPt.drawLine_arrow(False) From 83b0d8970d7672c42998a44a856231364e753537 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Tue, 22 Nov 2016 16:01:10 +0530 Subject: [PATCH 26/66] This is the current branch. --- mgui/TooltipInfo.py | 29 + mgui/plugins/kkit.py | 834 +++++++++++++------------ mgui/plugins/kkitViewcontrol.py | 1021 ++++++++++++++++++------------- mgui/plugins/modelBuild.py | 389 +++++++----- 4 files changed, 1315 insertions(+), 958 deletions(-) create mode 100644 mgui/TooltipInfo.py diff --git a/mgui/TooltipInfo.py b/mgui/TooltipInfo.py new file mode 100644 index 0000000..538e06d --- /dev/null +++ b/mgui/TooltipInfo.py @@ -0,0 +1,29 @@ +"""TooltipInfo.py: + +Keeps all TooltipInfo here. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys +import os + +tooltip_info_dict_ = { + "CubeMesh": "Cubical compartment", + "CylMesh": "Cylinderical compartment", + "Pool": "A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", + "BufPool": "A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", + "Function": "A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", + "StimulusTable": "A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", + "Reac": "A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", + "MMenz": "An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", + "Enz": "An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" +} diff --git a/mgui/plugins/kkit.py b/mgui/plugins/kkit.py index 2aaa36a..4a51dee 100644 --- a/mgui/plugins/kkit.py +++ b/mgui/plugins/kkit.py @@ -15,109 +15,131 @@ from mgui.mtoolbutton import MToolButton from mgui.plugins.default import * from mgui.plugins.kkitUtil import * -from mgui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from mgui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem from mgui.plugins.kkitViewcontrol import * from mgui.plugins.kkitCalcArrow import * from mgui.plugins.kkitOrdinateUtil import * from mgui.plugins.setsolver import * from mgui.RunWidget import RunWidget +import mgui.TooltipInfo as TooltipInfo + from mgui.config import _logger + class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" + def __init__(self, *args): MoosePlugin.__init__(self, *args) self.view = None self.fileinsertMenu = QtGui.QMenu('&File') - if not hasattr(self,'SaveModelAction'): + if not hasattr(self, 'SaveModelAction'): self.saveModelAction = QtGui.QAction('Save', self) - self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - # self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) + self.saveModelAction.setShortcut(QtGui.QApplication.translate( + "MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) self.fileinsertMenu.addAction(self.saveModelAction) self._menus.append(self.fileinsertMenu) self.getEditorView() - def connect( self, *args ): + def connect(self, *args): """Commeneted out """ pass - + def SaveModelDialogSlot(self): type_sbml = 'SBML' type_genesis = 'Genesis' dirpath = "" - # if moose.Annotator(self.modelRoot+'/model/info'): - # moose.Annotator(self.modelRoot+'/model/info') - # mooseAnno = moose.Annotator(self.modelRoot+'/model/info') - #dirpath = mooseAnno.dirpath if not dirpath: dirpath = expanduser("~") - filters = {'SBML(*.xml)': type_sbml,'Genesis(*.g)':type_genesis} + filters = {'SBML(*.xml)': type_sbml, 'Genesis(*.g)': type_genesis} - filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,';;'.join(filters)) + filename, filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter( + None, 'Save File', dirpath, ';;'.join(filters)) extension = "" if str(filename).rfind('.') != -1: filename = filename[:str(filename).rfind('.')] if str(filter_).rfind('.') != -1: - extension = filter_[str(filter_).rfind('.'):len(filter_)-1] + extension = filter_[str(filter_).rfind('.'):len(filter_) - 1] if filename: filename = filename if filters[str(filter_)] == 'SBML': - self.sceneObj = KkitEditorView(self).getCentralWidget().mooseId_GObj + self.sceneObj = KkitEditorView( + self).getCentralWidget().mooseId_GObj self.coOrdinates = {} - for k,v in list(self.sceneObj.items()): - if moose.exists(moose.element(k).path+'/info'): - annoInfo = Annotator(k.path+'/info') - self.coOrdinates[k] = {'x':annoInfo.x, 'y':annoInfo.y} + for k, v in list(self.sceneObj.items()): + if moose.exists(moose.element(k).path + '/info'): + annoInfo = Annotator(k.path + '/info') + self.coOrdinates[k] = { + 'x': annoInfo.x, 'y': annoInfo.y} - #writeerror = moose.writeSBML(self.modelRoot,str(filename),self.coOrdinates) writeerror = -2 conisitencyMessages = "" writtentofile = "/test.xml" - writeerror,consistencyMessages,writtentofile = moose.SBML.mooseWriteSBML(self.modelRoot,str(filename),self.coOrdinates) + writeerror, consistencyMessages, writtentofile = moose.SBML.mooseWriteSBML( + self.modelRoot, str(filename), self.coOrdinates) if writeerror == -2: - #QtGui.QMessageBox.warning(None,'Could not save the Model','\n WriteSBML : This copy of MOOSE has not been compiled with SBML writing support.') - QtGui.QMessageBox.warning(None,'Could not save the Model',consistencyMessages) + QtGui.QMessageBox.warning( + None, 'Could not save the Model', consistencyMessages) elif writeerror == -1: - QtGui.QMessageBox.warning(None,'Could not save the Model','\n This model is not valid SBML Model, failed in the consistency check') + QtGui.QMessageBox.warning( + None, + 'Could not save the Model', + '\n This model is not valid SBML Model, failed in the consistency check') elif writeerror == 1: - QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.xml'),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, 'Saved the Model', '\n File saved to \'{filename}\''.format( + filename=filename + '.xml'), QtGui.QMessageBox.Ok) elif writeerror == 0: - QtGui.QMessageBox.information(None,'Could not save the Model','\nThe filename could not be opened for writing') + QtGui.QMessageBox.information( + None, + 'Could not save the Model', + '\nThe filename could not be opened for writing') elif filters[str(filter_)] == 'Genesis': - mdtype = moose.Annotator(self.modelRoot+'/info') + mdtype = moose.Annotator(self.modelRoot + '/info') self.coOrdinates = {} xycord = [] - self.sceneObj = KkitEditorView(self).getCentralWidget().mooseId_GObj - #Here get x,y coordinates from the Annotation, to save layout position + self.sceneObj = KkitEditorView( + self).getCentralWidget().mooseId_GObj + # Here get x,y coordinates from the Annotation, to save layout position # into genesis - for k,v in list(self.sceneObj.items()): - if moose.exists(moose.element(k).path+'/info'): - annoInfo = Annotator(k.path+'/info') - self.coOrdinates[k] = {'x':annoInfo.x, 'y':annoInfo.y} + for k, v in list(self.sceneObj.items()): + if moose.exists(moose.element(k).path + '/info'): + annoInfo = Annotator(k.path + '/info') + self.coOrdinates[k] = { + 'x': annoInfo.x, 'y': annoInfo.y} if mdtype.modeltype != "kkit": - #If coordinates come from kkit then directly transfering the co-ordinates - # else zoomed in factor is applied before saving it to genesis form - for k,v in list(self.coOrdinates.items()): + # If coordinates come from kkit then directly transfering the co-ordinates + # else zoomed in factor is applied before saving it to + # genesis form + for k, v in list(self.coOrdinates.items()): xycord.append(v['x']) xycord.append(v['y']) cmin = min(xycord) cmax = max(xycord) - for k,v in list(self.coOrdinates.items()): + for k, v in list(self.coOrdinates.items()): x = v['x'] - xprime = int((20*(float(v['x']-cmin)/float(cmax-cmin)))-10) + xprime = int( + (20 * (float(v['x'] - cmin) / float(cmax - cmin))) - 10) v['x'] = xprime y = v['y'] - yprime = int((20*(float(v['y']-cmin)/float(cmax-cmin)))-10) + yprime = int( + (20 * (float(v['y'] - cmin) / float(cmax - cmin))) - 10) v['y'] = -yprime filename = filename - writeerror = write(self.modelRoot,str(filename),self.coOrdinates) - if writeerror == False: - QtGui.QMessageBox.information(None,'Could not save the Model','\nCheck the file') + writeerror = write( + self.modelRoot, + str(filename), + self.coOrdinates) + if not writeerror: + QtGui.QMessageBox.information( + None, 'Could not save the Model', '\nCheck the file') else: - QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.g'),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, 'Saved the Model', '\n File saved to \'{filename}\''.format( + filename=filename + '.g'), QtGui.QMessageBox.Ok) def getPreviousPlugin(self): return None @@ -138,9 +160,10 @@ def getEditorView(self): if not hasattr(self, 'editorView'): #self.editorView = KkitEditorView(self, self.dataTable) self.editorView = KkitEditorView(self) - self.editorView.getCentralWidget().editObject.connect(self.mainWindow.objectEditSlot) - #self.editorView.GrViewresize(self) - #self.editorView.connect(self,QtCore.SIGNAL("resize(QResizeEvent)"),self.editorView.GrViewresize) + self.editorView.getCentralWidget().editObject.connect( + self.mainWindow.objectEditSlot) + # self.editorView.GrViewresize(self) + # self.editorView.connect(self,QtCore.SIGNAL("resize(QResizeEvent)"),self.editorView.GrViewresize) self.currentView = self.editorView return self.editorView @@ -149,9 +172,10 @@ def getRunView(self): self.view = AnotherKkitRunView(self.modelRoot, self) return self.view - - if self.view is not None: return AnotherKkitRunView(self.modelRoot, self) - if self.view is not None: return self.view + if self.view is not None: + return AnotherKkitRunView(self.modelRoot, self) + if self.view is not None: + return self.view self.view = RunView(self.modelRoot, self) graphView = self.view._centralWidget graphView.setDataRoot(self.modelRoot) @@ -159,19 +183,16 @@ def getRunView(self): schedulingDockWidget = self.view.getSchedulingDockWidget().widget() self._kkitWidget = self.view.plugin.getEditorView().getCentralWidget() self.runView = KkitRunView(self._kkitWidget) - # self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() - #schedulingDockWidget.runner.update.connect(self.currentRunView.changeBgSize) - #schedulingDockWidget.runner.resetAndRun.connect(self.currentRunView.resetColor) - graphView.layout().addWidget(self.currentRunView,0,0,2,1) + graphView.layout().addWidget(self.currentRunView, 0, 0, 2, 1) return self.view class AnotherKkitRunView(RunView): - def __init__(self, modelRoot, plugin,*args): + def __init__(self, modelRoot, plugin, *args): RunView.__init__(self, modelRoot, plugin, *args) self.modelRoot = modelRoot - self.plugin = plugin + self.plugin = plugin self.schedular = None def setSolverFromSettings(self, chemicalSettings): @@ -180,19 +201,25 @@ def setSolverFromSettings(self, chemicalSettings): def createCentralWidget(self): self._centralWidget = RunWidget(self.modelRoot) - self.kkitRunView = KkitRunView(self.plugin) + self.kkitRunView = KkitRunView(self.plugin) self.plotWidgetContainer = PlotWidgetContainer(self.modelRoot) - self._centralWidget.setChildWidget(self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) - self._centralWidget.setChildWidget(self.plotWidgetContainer, False, 0, 1, 1, 2) + self._centralWidget.setChildWidget( + self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) + self._centralWidget.setChildWidget( + self.plotWidgetContainer, False, 0, 1, 1, 2) self._centralWidget.setPlotWidgetContainer(self.plotWidgetContainer) self.schedular = self.getSchedulingDockWidget().widget() - self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().updateValue) - self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().changeBgSize) - self.schedular.runner.simulationReset.connect(self.kkitRunView.getCentralWidget().resetColor) + self.schedular.runner.simulationProgressed.connect( + self.kkitRunView.getCentralWidget().updateValue) + self.schedular.runner.simulationProgressed.connect( + self.kkitRunView.getCentralWidget().changeBgSize) + self.schedular.runner.simulationReset.connect( + self.kkitRunView.getCentralWidget().resetColor) # self.schedular.runner.simulationReset.connect(self.setSolver) - self.schedular.preferences.applyChemicalSettings.connect(self.setSolverFromSettings) - compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - ann = moose.Annotator(self.modelRoot+'/info') + self.schedular.preferences.applyChemicalSettings.connect( + self.setSolverFromSettings) + compt = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') + ann = moose.Annotator(self.modelRoot + '/info') if compt: #self.runTime = (moose.Annotator(self.modelRoot+'/info')).runtime #solver = (moose.Annotator(self.modelRoot+'/info')).solver @@ -202,7 +229,7 @@ def createCentralWidget(self): self.runTime = 100 solver = "gsl" self.schedular.simulationRuntime.setText(str(self.runTime)) - #preferences + # preferences chemprefs = self.schedular.preferences.getChemicalPreferences() c = moose.Clock('/clock') self.simulationdt = c.tickDt[11] @@ -222,43 +249,31 @@ def createCentralWidget(self): self.schedular.preferences.setChemicalPreferences() return self._centralWidget - def setSolver(self, modelRoot,solver = None): - if solver == None: - reinit = addSolver(modelRoot,self.getSchedulingDockWidget().widget().solver) + def setSolver(self, modelRoot, solver=None): + if solver is None: + reinit = addSolver( + modelRoot, self.getSchedulingDockWidget().widget().solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() else: - reinit = addSolver(modelRoot,solver) + reinit = addSolver(modelRoot, solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() - #self.kkitRunView.getCentralWidget().addSolver(solver) + # self.kkitRunView.getCentralWidget().addSolver(solver) def getCentralWidget(self): if self._centralWidget is None: self.createCentralWidget() return self._centralWidget + class KkitRunView(MooseEditorView): - #def __init__(self, plugin,dataTable): def __init__(self, plugin): MooseEditorView.__init__(self, plugin) - #self.dataTable =dataTable self.plugin = plugin - ''' - def getToolPanes(self): - return super(KkitRunView, self).getToolPanes() - - def getLibraryPane(self): - return super(KkitRunView, self).getLibraryPane() - def getOperationsWidget(self): - return super(KkitRunView, self).getOperationsPane() - - def getToolBars(self): - return self._toolBars - ''' def getCentralWidget(self): if self._centralWidget is None: self._centralWidget = kineticRunWidget(self.plugin) @@ -267,58 +282,21 @@ def getCentralWidget(self): self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget + class KkitEditorView(MooseEditorView): - #def __init__(self, plugin, dataTable): + def __init__(self, plugin): MooseEditorView.__init__(self, plugin) - ''' EditorView ''' - #self.dataTable = dataTable - #self.fileinsertMenu = QtGui.QMenu('&File') - # if not hasattr(self,'SaveModelAction'): - # #self.fileinsertMenu.addSeparator() - # self.saveModelAction = QtGui.QAction('SaveToGenesisFormat', self) - # self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - # self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveToGenesisSlot) - # self.fileinsertMenu.addAction(self.saveModelAction) - #self._menus.append(self.fileinsertMenu) - - # def SaveModelDialogSlot(self): - # type_sbml = 'SBML' - # filters = {'SBML(*.xml)': type_sbml} - # filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) - # extension = "" - # if str(filename).rfind('.') != -1: - # filename = filename[:str(filename).rfind('.')] - # if str(filter_).rfind('.') != -1: - # extension = filter_[str(filter_).rfind('.'):len(filter_)-1] - # if filename: - # filename = filename+extension - # if filters[str(filter_)] == 'SBML': - # writeerror = moose.writeSBML(str(filename),self.plugin.modelRoot) - # if writeerror: - # QtGui.QMessageBox.warning(None,'Could not save the Model','\n Error in the consistency check') - # else: - # QtGui.QMessageBox.information(None,'Saved the Model','\n File Saved to \'{filename}\''.format(filename =filename),QtGui.QMessageBox.Ok) - ''' - def getToolPanes(self): - return super(KkitEditorView, self).getToolPanes() - - def getLibraryPane(self): - return super(KkitEditorView, self).getLibraryPane() - - def getOperationsWidget(self): - return super(KkitEditorView, self).getOperationsPane() - def getToolBars(self): - return self._toolBars - ''' def getCentralWidget(self): if self._centralWidget is None: - self._centralWidget = kineticEditorWidget(self.plugin) + self._centralWidget = KineticEditorWidget(self.plugin) self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget -class KineticsWidget(EditorWidgetBase): + +class KineticsWidget(EditorWidgetBase): + def __init__(self, plugin, *args): EditorWidgetBase.__init__(self, *args) self.plugin = plugin @@ -328,76 +306,86 @@ def __init__(self, plugin, *args): self.arrowsize = 2 self.defaultComptsize = 5 self.noPositionInfo = True - self.xyCord = {} + self.xyCord = {} self.reset() - self.qGraCompt = {} - self.mooseId_GObj = {} - self.srcdesConnection = {} - self.editor = None - self.xmin = 0.0 - self.xmax = 1.0 - self.ymin = 0.0 - self.ymax = 1.0 - self.xratio = 1.0 - self.yratio = 1.0 - + self.qGraCompt = {} + self.mooseId_GObj = {} + self.srcdesConnection = {} + self.editor = None + self.xmin = 0.0 + self.xmax = 1.0 + self.ymin = 0.0 + self.ymax = 1.0 + self.xratio = 1.0 + self.yratio = 1.0 def reset(self): self.createdItem = {} - #This are created at drawLine + # This are created at drawLine self.lineItem_dict = {} self.object2line = defaultdict(list) self.itemignoreZooming = False - if hasattr(self,'sceneContainer'): - self.sceneContainer.clear() + if hasattr(self, 'sceneContainer'): + self.sceneContainer.clear() self.sceneContainer = QtGui.QGraphicsScene(self) self.sceneContainer.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex) sceneDim = self.sceneContainer.itemsBoundingRect() # if (sceneDim.width() == 0 and sceneDim.height() == 0): # self.sceneContainer.setSceneRect(0,0,30,30) # else: - #elf.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) - self.sceneContainer.setBackgroundBrush(QColor(230,220,219,120)) + # elf.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) + self.sceneContainer.setBackgroundBrush(QColor(230, 220, 219, 120)) def updateModelView(self): self.getMooseObj() - minmaxratiodict = {'xmin':self.xmin,'xmax':self.xmax,'ymin':self.ymin,'ymax':self.ymax,'xratio':self.xratio,'yratio':self.yratio} + minmaxratiodict = { + 'xmin': self.xmin, + 'xmax': self.xmax, + 'ymin': self.ymin, + 'ymax': self.ymax, + 'xratio': self.xratio, + 'yratio': self.yratio} if not self.m: - #At the time of model building + # At the time of model building # when we want an empty GraphicView while creating new model, # then remove all the view and add an empty view if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): self.layout().removeWidget(self.view) - #self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) - self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) - - if isinstance(self,kineticEditorWidget): + # self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) + self.view = GraphicalView( + self.modelRoot, + self.sceneContainer, + self.border, + self, + self.createdItem, + minmaxratiodict) + + if isinstance(self, KineticEditorWidget): self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) - elif isinstance(self,kineticRunWidget): + elif isinstance(self, kineticRunWidget): self.view.setRefWidget("runView") # self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) - hLayout.addWidget(self.view,0,0) + hLayout.addWidget(self.view, 0, 0) else: # Already created Model # maxmium and minimum coordinates of the objects specified in kkit file. - #self.mooseObjOntoscene() - #self.drawLine_arrow() + # self.mooseObjOntoscene() + # self.drawLine_arrow() if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): self.layout().removeWidget(self.view) self.view = GraphicalView( - self.modelRoot - , self.sceneContainer - , self.border - , self - , self.createdItem - , minmaxratiodict - ) - if isinstance(self, kineticEditorWidget): - #self.getMooseObj() + self.modelRoot, + self.sceneContainer, + self.border, + self, + self.createdItem, + minmaxratiodict) + if isinstance(self, KineticEditorWidget): + # self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow() self.view.setRefWidget("editorView") @@ -412,19 +400,18 @@ def updateModelView(self): self.setLayout(hLayout) hLayout.addWidget(self.view) self.view.fitInView( - self.sceneContainer.itemsBoundingRect().x()-10 - , self.sceneContainer.itemsBoundingRect().y()-10 - , self.sceneContainer.itemsBoundingRect().width()+20 - , self.sceneContainer.itemsBoundingRect().height()+20 - , Qt.Qt.IgnoreAspectRatio - ) + self.sceneContainer.itemsBoundingRect().x() - 10, + self.sceneContainer.itemsBoundingRect().y() - 10, + self.sceneContainer.itemsBoundingRect().width() + 20, + self.sceneContainer.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) def getMooseObj(self): - #This fun call 2 more function + # This fun call 2 more function # -- setupMeshObj(self.modelRoot), # ----self.meshEntry has [meshEnt] = function: {}, Pool: {} etc # setupItem - self.m = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + self.m = wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') if self.m: # self.xmin = 0.0 # self.xmax = 1.0 @@ -435,65 +422,78 @@ def getMooseObj(self): #self.meshEntry.clear= {} # Compartment and its members are setup - self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) + self.meshEntry, self.xmin, self.xmax, self.ymin, self.ymax, self.noPositionInfo = setupMeshObj( + self.modelRoot) self.autocoordinates = False if self.srcdesConnection: self.srcdesConnection.clear() else: self.srcdesConnection = {} - setupItem(self.modelRoot,self.srcdesConnection) + setupItem(self.modelRoot, self.srcdesConnection) if not self.noPositionInfo: self.autocoordinates = True - self.xmin,self.xmax,self.ymin,self.ymax,self.autoCordinatepos = autoCoordinates(self.meshEntry,self.srcdesConnection) - # TODO: size will be dummy at this point, but size I need the availiable size from the Gui - self.size= QtCore.QSize(1000 ,550) + self.xmin, self.xmax, self.ymin, self.ymax, self.autoCordinatepos = autoCoordinates( + self.meshEntry, self.srcdesConnection) + # TODO: size will be dummy at this point, but size I need the + # availiable size from the Gui + self.size = QtCore.QSize(1000, 550) - if self.xmax-self.xmin != 0: - self.xratio = (self.size.width()-10)/(self.xmax-self.xmin) - else: self.xratio = self.size.width()-10 + if self.xmax - self.xmin != 0: + self.xratio = (self.size.width() - 10) / \ + (self.xmax - self.xmin) + else: + self.xratio = self.size.width() - 10 + + if self.ymax - self.ymin: + self.yratio = (self.size.height() - 10) / \ + (self.ymax - self.ymin) + else: + self.yratio = (self.size.height() - 10) - if self.ymax-self.ymin: - self.yratio = (self.size.height()-10)/(self.ymax-self.ymin) - else: self.yratio = (self.size.height()-10) - self.xratio = int(self.xratio) self.yratio = int(self.yratio) if self.xratio == 0: self.xratio = 1 if self.yratio == 0: self.yratio = 1 - + def sizeHint(self): - return QtCore.QSize(800,400) + return QtCore.QSize(800, 400) def updateItemSlot(self, mooseObject): - #This is overridden by derived classes to connect appropriate - #slot for updating the display item. - #In this case if the name is updated from the keyboard both in mooseobj and gui gets updation + # This is overridden by derived classes to connect appropriate + # slot for updating the display item. + # In this case if the name is updated from the keyboard both in + # mooseobj and gui gets updation changedItem = '' for item in list(self.sceneContainer.items()): - if isinstance(item,PoolItem): + if isinstance(item, PoolItem): if mooseObject.getId() == element(item.mobj).getId(): item.updateSlot() - #once the text is edited in editor, laydisplay gets updated in turn resize the length, positionChanged signal shd be emitted + # once the text is edited in editor, laydisplay gets + # updated in turn resize the length, positionChanged signal + # shd be emitted self.positionChange(mooseObject) self.view.removeConnector() self.view.showConnector(item) - def updateColorSlot(self,mooseObject, color): - #Color slot for changing background color for PoolItem from objecteditor - anninfo = moose.Annotator(mooseObject.path+'/info') - textcolor,bgcolor = getColor(anninfo) + + def updateColorSlot(self, mooseObject, color): + # Color slot for changing background color for PoolItem from + # objecteditor + anninfo = moose.Annotator(mooseObject.path + '/info') + textcolor, bgcolor = getColor(anninfo) anninfo.color = str(color.name()) item = self.mooseId_GObj[mooseObject] - if (isinstance(item,PoolItem) or isinstance(item,EnzItem) or isinstance(item,MMEnzItem) ): + if (isinstance(item, PoolItem) or isinstance( + item, EnzItem) or isinstance(item, MMEnzItem)): item.updateColor(color) def mooseObjOntoscene(self): # All the compartments are put first on to the scene \ # Need to do: Check With upi if empty compartments exist - self.qGraCompt = {} + self.qGraCompt = {} self.mooseId_GObj = {} if self.qGraCompt: self.qGraCompt.clear() @@ -509,259 +509,305 @@ def mooseObjOntoscene(self): self.qGraCompt[cmpt] #comptRef = self.qGraCompt[cmpt] - #Enzymes of all the compartments are placed first, \ + # Enzymes of all the compartments are placed first, \ # so that when cplx (which is pool object) queries for its parent, it gets its \ # parent enz co-ordinates with respect to QGraphicsscene """ - for cmpt,memb in list(self.meshEntry.items()): - for enzObj in find_index(memb,'enzyme'): - enzinfo = enzObj.path+'/info' + for cmpt, memb in list(self.meshEntry.items()): + for enzObj in find_index(memb, 'enzyme'): + enzinfo = enzObj.path + '/info' if enzObj.className == 'Enz': - enzItem = EnzItem(enzObj,self.qGraCompt[cmpt]) + enzItem = EnzItem(enzObj, self.qGraCompt[cmpt]) else: - enzItem = MMEnzItem(enzObj,self.qGraCompt[cmpt]) + enzItem = MMEnzItem(enzObj, self.qGraCompt[cmpt]) self.mooseId_GObj[element(enzObj.getId())] = enzItem - self.setupDisplay(enzinfo,enzItem,"enzyme") - - #self.setupSlot(enzObj,enzItem) - for cmpt,memb in list(self.meshEntry.items()): - for poolObj in find_index(memb,'pool'): - poolinfo = poolObj.path+'/info' - #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle - poolItem = self.makePoolItem(poolObj,self.qGraCompt[cmpt]) + self.setupDisplay(enzinfo, enzItem, "enzyme") + + # self.setupSlot(enzObj,enzItem) + for cmpt, memb in list(self.meshEntry.items()): + for poolObj in find_index(memb, 'pool'): + poolinfo = poolObj.path + '/info' + # depending on Editor Widget or Run widget pool will be created + # a PoolItem or PoolItemCircle + poolItem = self.makePoolItem(poolObj, self.qGraCompt[cmpt]) self.mooseId_GObj[element(poolObj.getId())] = poolItem - self.setupDisplay(poolinfo,poolItem,"pool") + self.setupDisplay(poolinfo, poolItem, "pool") - for reaObj in find_index(memb,'reaction'): - reainfo = reaObj.path+'/info' - reaItem = ReacItem(reaObj,self.qGraCompt[cmpt]) - self.setupDisplay(reainfo,reaItem,"reaction") + for reaObj in find_index(memb, 'reaction'): + reainfo = reaObj.path + '/info' + reaItem = ReacItem(reaObj, self.qGraCompt[cmpt]) + self.setupDisplay(reainfo, reaItem, "reaction") self.mooseId_GObj[element(reaObj.getId())] = reaItem - for tabObj in find_index(memb,'table'): - tabinfo = tabObj.path+'/info' - tabItem = TableItem(tabObj,self.qGraCompt[cmpt]) - self.setupDisplay(tabinfo,tabItem,"tab") + for tabObj in find_index(memb, 'table'): + tabinfo = tabObj.path + '/info' + tabItem = TableItem(tabObj, self.qGraCompt[cmpt]) + self.setupDisplay(tabinfo, tabItem, "tab") self.mooseId_GObj[element(tabObj.getId())] = tabItem - for funcObj in find_index(memb,'function'): - funcinfo = moose.element(funcObj).path+'/info' - if funcObj.parent.className == "ZombieBufPool" or funcObj.parent.className == "BufPool": - funcinfo = moose.element(funcObj).path+'/info' + for funcObj in find_index(memb, 'function'): + funcinfo = moose.element(funcObj).path + '/info' + if funcObj.parent.className in [ "ZombieBufPool", "BufPool" ]: + funcinfo = moose.element(funcObj).path + '/info' Af = Annotator(funcinfo) - funcParent =self.mooseId_GObj[element(funcObj.parent)] - elif funcObj.parent.className == "CubeMesh" or funcObj.parent.className == "CylMesh": + funcParent = self.mooseId_GObj[element(funcObj.parent)] + elif funcObj.parent.className in [ "CubeMesh", "CylMesh"] : funcParent = self.qGraCompt[cmpt] - funcItem = FuncItem(funcObj,funcParent) + funcItem = FuncItem(funcObj, funcParent) self.mooseId_GObj[element(funcObj.getId())] = funcItem - self.setupDisplay(funcinfo,funcItem,"Function") + self.setupDisplay(funcinfo, funcItem, "Function") - for cplxObj in find_index(memb,'cplx'): - cplxinfo = (cplxObj.parent).path+'/info' + for cplxObj in find_index(memb, 'cplx'): + cplxinfo = (cplxObj.parent).path + '/info' p = element(cplxObj).parent - cplxItem = CplxItem(cplxObj,self.mooseId_GObj[element(cplxObj).parent]) + cplxItem = CplxItem( + cplxObj, self.mooseId_GObj[ + element(cplxObj).parent]) self.mooseId_GObj[element(cplxObj.getId())] = cplxItem - self.setupDisplay(cplxinfo,cplxItem,"cplx") + self.setupDisplay(cplxinfo, cplxItem, "cplx") # compartment's rectangle size is calculated depending on children self.comptChilrenBoundingRect() - def comptChilrenBoundingRect(self): for k, v in list(self.qGraCompt.items()): # compartment's rectangle size is calculated depending on children rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - v.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - - def createCompt(self,key): - self.new_Compt = ComptItem(self,0,0,0,0,key) + v.setRect( + rectcompt.x() - 10, + rectcompt.y() - 10, + (rectcompt.width() + 20), + (rectcompt.height() + 20)) + v.setPen( + QtGui.QPen( + Qt.QColor( 66, 66, 66, 100), + self.comptPen, + Qt.Qt.SolidLine, + Qt.Qt.RoundCap, + Qt.Qt.RoundJoin) + ) + + def createCompt(self, key): + self.new_Compt = ComptItem(self, 0, 0, 0, 0, key) self.qGraCompt[key] = self.new_Compt - self.new_Compt.setRect(10,10,10,10) + self.new_Compt.setRect(10, 10, 10, 10) self.sceneContainer.addItem(self.new_Compt) - def setupDisplay(self,info,graphicalObj,objClass): + def setupDisplay(self, info, graphicalObj, objClass): Annoinfo = Annotator(info) - # For Reaction and Complex object I have skipped the process to get the facecolor and background color as \ - # we are not using these colors for displaying the object so just passing dummy color white - if( objClass == "reaction" or objClass == "cplx" or objClass == "Function" or objClass == "StimulusTable"): - textcolor,bgcolor = QColor("white"),QColor("white") + if objClass in [ "reaction", "cplx", "Function", "StimulusTable" ]: + textcolor, bgcolor = QColor("white"), QColor("white") else: - textcolor,bgcolor = getColor(info) + textcolor, bgcolor = getColor(info) if bgcolor.name() == "#ffffff" or bgcolor == "white": bgcolor = getRandColor() Annoinfo.color = str(bgcolor.name()) - if isinstance(self,kineticEditorWidget): - funct = ["Function","ZombieFunction"] - comptt = ["CubeMesh","CylMesh"] + + if isinstance(self, KineticEditorWidget): + funct = ["Function", "ZombieFunction"] + comptt = ["CubeMesh", "CylMesh"] if objClass in funct: - poolt = ["ZombieBufPool","BufPool"] + poolt = ["ZombieBufPool", "BufPool"] if graphicalObj.mobj.parent.className in poolt: xpos = 0 ypos = 30 if graphicalObj.mobj.parent.className in comptt: - xpos,ypos = self.positioninfo(info) + xpos, ypos = self.positioninfo(info) else: - xpos,ypos = self.positioninfo(info) + xpos, ypos = self.positioninfo(info) - self.xylist = [xpos,ypos] - self.xyCord[moose.element(info).parent] = [xpos,ypos] + self.xylist = [xpos, ypos] + self.xyCord[moose.element(info).parent] = [xpos, ypos] - elif isinstance(self,kineticRunWidget): + elif isinstance(self, kineticRunWidget): self.editormooseId_GObj = self.editor.getCentralWidget().mooseId_GObj editorItem = self.editormooseId_GObj[moose.element(info).parent] xpos = editorItem.scenePos().x() ypos = editorItem.scenePos().y() #Annoinfo.x = xpos - #Annoinfo.y = -ypos - graphicalObj.setDisplayProperties(xpos,ypos,textcolor,bgcolor) + #Annoinfo.y = -ypos + graphicalObj.setDisplayProperties(xpos, ypos, textcolor, bgcolor) #Annoinfo.x = xpos #Annoinfo.y = ypos - def positioninfo(self,iteminfo): - Anno = moose.Annotator(self.modelRoot+'/info') + def positioninfo(self, iteminfo): + Anno = moose.Annotator(self.modelRoot + '/info') if not self.noPositionInfo: try: - # kkit does exist item's/info which up querying for parent.path gives the information of item's parent - x,y = self.autoCordinatepos[(element(iteminfo).parent).path] + # kkit does exist item's/info which up querying for parent.path + # gives the information of item's parent + x, y = self.autoCordinatepos[(element(iteminfo).parent).path] except: # But in Cspace reader doesn't create item's/info, up on querying gives me the error which need to change\ # in ReadCspace.cpp, at present i am taking care b'cos i don't want to pass just the item where I need to check\ - # type of the object (rea,pool,enz,cplx,tab) which I have already done. + # type of the object (rea,pool,enz,cplx,tab) which I have + # already done. parent, child = posixpath.split(iteminfo) - x,y = self.autoCordinatepos[parent] - ypos = (y-self.ymin)*self.yratio + x, y = self.autoCordinatepos[parent] + ypos = (y - self.ymin) * self.yratio else: x = float(element(iteminfo).getField('x')) y = float(element(iteminfo).getField('y')) - #Qt origin is at the top-left corner. The x values increase to the right and the y values increase downwards \ - #as compared to Genesis codinates where origin is center and y value is upwards, that is why ypos is negated + # Qt origin is at the top-left corner. The x values increase to the right and the y values increase downwards \ + # as compared to Genesis codinates where origin is center and y value is upwards, that is why ypos is negated # if Anno.modeltype == "kkit": # ypos = 1.0-(y-self.ymin)*self.yratio # else: # ypos = (y-self.ymin)*self.yratio - ypos = 1.0 - (y-self.ymin)*self.yratio - xpos = (x-self.xmin)*self.xratio - return(xpos,ypos) + ypos = 1.0 - (y - self.ymin) * self.yratio + xpos = (x - self.xmin) * self.xratio + return(xpos, ypos) def drawLine_arrow(self, itemignoreZooming=False): - for inn,out in list(self.srcdesConnection.items()): - #print "inn ",inn, " out ",out + for inn, out in list(self.srcdesConnection.items()): + # print "inn ",inn, " out ",out # self.srcdesConnection is dictionary which contains key,value \ # key is Enzyme or Reaction and value [[list of substrate],[list of product]] (tuple) # key is Function and value is [list of pool] (list) #src = self.mooseId_GObj[inn] - if isinstance(out,tuple): + if isinstance(out, tuple): src = self.mooseId_GObj[inn] - if len(out[0])== 0: - print(inn.className + ' : ' +inn.name+ " doesn't output message") + if len(out[0]) == 0: + print( + inn.className + + ' : ' + + inn.name + + " doesn't output message") else: - for items in (items for items in out[0] ): + for items in (items for items in out[0]): des = self.mooseId_GObj[element(items[0])] - self.lineCord(src,des,items,itemignoreZooming) + self.lineCord(src, des, items, itemignoreZooming) if len(out[1]) == 0: - print(inn.className + ' : ' +inn.name+ " doesn't output message") + print( + inn.className + + ' : ' + + inn.name + + " doesn't output message") else: - for items in (items for items in out[1] ): + for items in (items for items in out[1]): des = self.mooseId_GObj[element(items[0])] - self.lineCord(src,des,items,itemignoreZooming) - elif isinstance(out,list): + self.lineCord(src, des, items, itemignoreZooming) + elif isinstance(out, list): if len(out) == 0: if inn.className == "StimulusTable": - print(inn.name +" doesn't have output") + print(inn.name + " doesn't have output") elif inn.className == "ZombieFunction" or inn.className == "Function": print(inn.name + " doesn't have sumtotal ") else: src = self.mooseId_GObj[inn] - for items in (items for items in out ): + for items in (items for items in out): des = self.mooseId_GObj[element(items[0])] - self.lineCord(src,des,items,itemignoreZooming) - def lineCord(self,src,des,type_no,itemignoreZooming): + self.lineCord(src, des, items, itemignoreZooming) + + def lineCord(self, src, des, type_no, itemignoreZooming): srcdes_list = [] endtype = type_no[1] line = 0 if (src == "") and (des == ""): print("Source or destination is missing or incorrect") return - srcdes_list = [src,des,endtype,line] - arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) - self.drawLine(srcdes_list,arrow) + srcdes_list = [src, des, endtype, line] + arrow = calcArrow(srcdes_list, itemignoreZooming, self.iconScale) + self.drawLine(srcdes_list, arrow) - while(type_no[2] > 1 and line <= (type_no[2]-1)): - srcdes_list =[src,des,endtype,line] - arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) - self.drawLine(srcdes_list,arrow) - line = line +1 + while(type_no[2] > 1 and line <= (type_no[2] - 1)): + srcdes_list = [src, des, endtype, line] + arrow = calcArrow(srcdes_list, itemignoreZooming, self.iconScale) + self.drawLine(srcdes_list, arrow) + line = line + 1 if type_no[2] > 5: print("Higher order reaction will not be displayed") - def drawLine(self,srcdes_list,arrow): + def drawLine(self, srcdes_list, arrow): src = srcdes_list[0] des = srcdes_list[1] endtype = srcdes_list[2] line = srcdes_list[3] - source = element(next((k for k,v in list(self.mooseId_GObj.items()) if v == src), None)) - for l,v,et,o in self.object2line[src]: - if v == des and o ==line: + source = element( + next( + (k for k, + v in list( + self.mooseId_GObj.items()) if v == src), + None)) + for l, v, et, o in self.object2line[src]: + if v == des and o == line: l.setPolygon(arrow) arrowPen = l.pen() - arrowPenWidth = self.arrowsize*self.iconScale + arrowPenWidth = self.arrowsize * self.iconScale arrowPen.setColor(l.pen().color()) arrowPen.setWidth(arrowPenWidth) l.setPen(arrowPen) return qgLineitem = self.sceneContainer.addPolygon(arrow) qgLineitem.setParentItem(src.parentItem()) - pen = QtGui.QPen(QtCore.Qt.green, 0, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin) + pen = QtGui.QPen( + QtCore.Qt.green, + 0, + Qt.Qt.SolidLine, + Qt.Qt.RoundCap, + Qt.Qt.RoundJoin) pen.setWidth(self.arrowsize) - # Green is default color moose.ReacBase and derivatives - already set above - if isinstance(source, EnzBase): - if ( (endtype == 's') or (endtype == 'p')): + # Green is default color moose.ReacBase and derivatives - already set + # above + if isinstance(source, EnzBase): + if ((endtype == 's') or (endtype == 'p')): pen.setColor(QtCore.Qt.red) elif(endtype != 'cplx'): - p1 = (next((k for k,v in list(self.mooseId_GObj.items()) if v == src), None)) - pinfo = p1.parent.path+'/info' - color,bgcolor = getColor(pinfo) + p1 = ( + next( + (k for k, + v in list( + self.mooseId_GObj.items()) if v == src), + None)) + pinfo = p1.parent.path + '/info' + color, bgcolor = getColor(pinfo) #color = QColor(color[0],color[1],color[2]) pen.setColor(bgcolor) - elif isinstance(source, moose.PoolBase) or isinstance(source,moose.Function): + elif isinstance(source, moose.PoolBase) or isinstance(source, moose.Function): pen.setColor(QtCore.Qt.blue) - elif isinstance(source,moose.StimulusTable): + elif isinstance(source, moose.StimulusTable): pen.setColor(QtCore.Qt.yellow) self.lineItem_dict[qgLineitem] = srcdes_list - self.object2line[ src ].append( ( qgLineitem, des,endtype,line) ) - self.object2line[ des ].append( ( qgLineitem, src,endtype,line ) ) + self.object2line[src].append((qgLineitem, des, endtype, line)) + self.object2line[des].append((qgLineitem, src, endtype, line)) qgLineitem.setPen(pen) - - def positionChange(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated - if isinstance(element(mooseObject),ChemCompt): + + def positionChange(self, mooseObject): + # If the item position changes, the corresponding arrow's are + # calculated + if isinstance(element(mooseObject), ChemCompt): for k, v in list(self.qGraCompt.items()): mesh = mooseObject if k.path == mesh: for rectChilditem in v.childItems(): if isinstance(rectChilditem, KineticsDisplayItem): - if isinstance(moose.element(rectChilditem.mobj.path),PoolBase): + if isinstance( + moose.element( + rectChilditem.mobj.path), + PoolBase): t = moose.element(rectChilditem.mobj.path) moose.element(t).children for items in moose.element(t).children: - if isinstance(moose.element(items),Function): - test = moose.element(items.path+'/x') - for i in moose.element(test).neighbors['input']: - j = self.mooseId_GObj[moose.element(i)] + if isinstance( + moose.element(items), Function): + test = moose.element(items.path + '/x') + for i in moose.element( + test).neighbors['input']: + j = self.mooseId_GObj[ + moose.element(i)] self.updateArrow(j) self.updateArrow(rectChilditem) else: mobj = self.mooseId_GObj[element(mooseObject)] self.updateArrow(mobj) elePath = moose.element(mooseObject).path - pos = elePath.find('/',1) + pos = elePath.find('/', 1) l = elePath[0:pos] - linfo = moose.Annotator(l+'/info') + linfo = moose.Annotator(l + '/info') for k, v in list(self.qGraCompt.items()): #rectcompt = v.childrenBoundingRect() rectcompt = calculateChildBoundingRect(v) @@ -779,48 +825,48 @@ def positionChange(self,mooseObject): rectcompt = calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) ''' + def updateCompartmentSize(self, compartment): compartmentBoundary = compartment.rect() - #print " compartmentBoundary ",compartmentBoundary, " ",compartment.childrenBoundingRect() + # print " compartmentBoundary ",compartmentBoundary, " ",compartment.childrenBoundingRect() #compartmentBoundary =compartment.childrenBoundingRect() #childrenBoundary = compartment.childrenBoundingRect() - #print " 758 ",compartment.childrenBoundaryRect() + # print " 758 ",compartment.childrenBoundaryRect() childrenBoundary = calculateChildBoundingRect(compartment) - #print " ch ",childrenBoundary + # print " ch ",childrenBoundary x = min(compartmentBoundary.x(), childrenBoundary.x()) y = min(compartmentBoundary.y(), childrenBoundary.y()) width = max(compartmentBoundary.width(), childrenBoundary.width()) height = max(compartmentBoundary.height(), childrenBoundary.height()) - compartment.setRect( x-10 - , y-10 - , width + 20 - , height + 20 - ) - - def updateArrow(self,qGTextitem): - #if there is no arrow to update then return + compartment.setRect(x - 10, y - 10, width + 20, height + 20 + ) + + def updateArrow(self, qGTextitem): + # if there is no arrow to update then return if qGTextitem not in self.object2line: return listItem = self.object2line[qGTextitem] - for ql, va,endtype,order in self.object2line[qGTextitem]: + for ql, va, endtype, order in self.object2line[qGTextitem]: srcdes = [] srcdes = self.lineItem_dict[ql] # Checking if src (srcdes[0]) or des (srcdes[1]) is ZombieEnz, # if yes then need to check if cplx is connected to any mooseObject, - # so that when Enzyme is moved, cplx connected arrow to other mooseObject(poolItem) should also be updated - if( type(srcdes[0]) == EnzItem or type(srcdes[0] == MMEnzItem)): + # so that when Enzyme is moved, cplx connected arrow to other + # mooseObject(poolItem) should also be updated + if(isinstance(srcdes[0], EnzItem) or type(srcdes[0] == MMEnzItem)): self.cplxUpdatearrow(srcdes[0]) - elif( type(srcdes[1]) == EnzItem or type(srcdes[1] == MMEnzItem)): + elif(isinstance(srcdes[1], EnzItem) or type(srcdes[1] == MMEnzItem)): self.cplxUpdatearrow(srcdes[1]) - # For calcArrow(src,des,endtype,itemignoreZooming) is to be provided - arrow = calcArrow(srcdes,self.itemignoreZooming,self.iconScale) + # For calcArrow(src,des,endtype,itemignoreZooming) is to be + # provided + arrow = calcArrow(srcdes, self.itemignoreZooming, self.iconScale) ql.setPolygon(arrow) - def cplxUpdatearrow(self,srcdes): + def cplxUpdatearrow(self, srcdes): # srcdes which is 'EnzItem' from this,get ChildItems are retrived (b'cos cplx is child of zombieEnz) - #And cplxItem is passed for updatearrow + # And cplxItem is passed for updatearrow for item in srcdes.childItems(): - if isinstance(item,CplxItem): + if isinstance(item, CplxItem): self.updateArrow(item) # def deleteSolver(self): @@ -840,9 +886,11 @@ def cplxUpdatearrow(self,srcdes): # moose.delete( compt[0].path+'/gsolve' ) # for x in moose.wildcardFind( self.modelRoot+'/data/graph#/#' ): # x.tick = -1 - def positionChange1(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated - if ( (isinstance(element(mooseObject),CubeMesh)) or (isinstance(element(mooseObject),CylMesh))): + def positionChange1(self, mooseObject): + # If the item position changes, the corresponding arrow's are + # calculated + if ((isinstance(element(mooseObject), CubeMesh)) + or (isinstance(element(mooseObject), CylMesh))): v = self.qGraCompt[mooseObject] for rectChilditem in v.childItems(): self.updateArrow(rectChilditem) @@ -856,34 +904,36 @@ def positionChange1(self,mooseObject): comptBoundingRect = v.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = v.pen() - comptWidth = 5 + comptWidth = 5 comptPen.setWidth(comptWidth) v.setPen(comptPen) if not comptBoundingRect.contains(childBoundingRect): - v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) + v.setRect(rectcompt.x() - comptWidth, + rectcompt.y() - comptWidth, + rectcompt.width() + (comptWidth * 2), + rectcompt.height() + (comptWidth * 2)) -class kineticEditorWidget(KineticsWidget): - def __init__(self, plugin,*args): +class KineticEditorWidget(KineticsWidget): + + def __init__(self, plugin, *args): KineticsWidget.__init__(self, plugin, *args) self.plugin = plugin self.insertMenu = QtGui.QMenu('&Insert') self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) - classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] - self.toolTipinfo = { - "CubeMesh":"" - , "CylMesh" : "" - , "Pool": "A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", - "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", - "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", - "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", - "Reac":"A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", - "MMenz":"An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", - "Enz":"An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" - - } + classlist = [ + 'CubeMesh', + 'CylMesh', + 'Pool', + 'BufPool', + 'Function', + 'Reac', + 'Enz', + 'MMenz', + 'StimulusTable'] + self.toolTipinfo = TooltipInfo.tooltip_info_dict_ insertMapper, actions = self.getInsertActions(classlist) for action in actions: self.insertMenu.addAction(action) @@ -894,47 +944,60 @@ def __init__(self, plugin,*args): doc = doc.split('Description:')[-1].split('Name:')[0].strip() action.setToolTip(doc) - def GrViewresize(self, event): - #when Gui resize and event is sent which inturn call resizeEvent of qgraphicsview - _logger.debug( "Resizing on event %s" % event ) - #self.view.resizeEvent1(event) + # Set size policy + self.setMinimumSize( 1000, 1000 ) + self.setSizePolicy( + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding + ) def makePoolItem(self, poolObj, qGraCompt): return PoolItem(poolObj, qGraCompt) + def rescaleView( self ): + """Rescale when outerboundries are crowded. But not too much + + NOTE: The size policy should take care of this. + + """ + pass + def getToolBars(self): - #Add specific tool items with respect to kkit + # Add specific tool items with respect to kkit if not hasattr(self, '_insertToolBar'): self._insertToolBar = QtGui.QToolBar('Insert') self._toolBars.append(self._insertToolBar) for action in self.insertMenu.actions(): button = MToolButton() button.setDefaultAction(action) - #set the unicode instead of image by setting - #button.setText(unicode(u'\u20de')) - Iconpath = os.path.join(config.MOOSE_GUI_DIR, 'icons/classIcon/') - button.setIcon(QtGui.QIcon(Iconpath+action.text()+".png")) - #button.setIcon(QtGui.QIcon("icons/classIcon/"+action.text()+".png")) - #button.setIconSize(QtCore.QSize(200,200)) + # set the unicode instead of image by setting + # button.setText(unicode(u'\u20de')) + Iconpath = os.path.join( + config.MOOSE_GUI_DIR, 'icons/classIcon/') + button.setIcon(QtGui.QIcon(Iconpath + action.text() + ".png")) + # button.setIcon(QtGui.QIcon("icons/classIcon/"+action.text()+".png")) + # button.setIconSize(QtCore.QSize(200,200)) self._insertToolBar.addWidget(button) return self._toolBars + class kineticRunWidget(KineticsWidget): + def __init__(self, plugin, *args): - KineticsWidget.__init__(self, plugin,*args) + KineticsWidget.__init__(self, plugin, *args) def showEvent(self, event): self.refresh() # pass + def refresh(self): self.sceneContainer.clear() - self.Comptexist = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + self.Comptexist = wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') if self.Comptexist: # pass self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow(itemignoreZooming=False) - + def makePoolItem(self, poolObj, qGraCompt): return PoolItemCircle(poolObj, qGraCompt) @@ -943,28 +1006,39 @@ def getToolBars(self): def updateValue(self): for item in list(self.sceneContainer.items()): - if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,PoolItemCircle) or isinstance(item,CplxItem): + if isinstance( + item, + ReacItem) or isinstance( + item, + MMEnzItem) or isinstance( + item, + EnzItem) or isinstance( + item, + PoolItemCircle) or isinstance( + item, + CplxItem): item.updateValue(item.mobj) def changeBgSize(self): for item in list(self.sceneContainer.items()): - if isinstance(item,PoolItemCircle): + if isinstance(item, PoolItemCircle): initialConc = moose.element(item.mobj).concInit presentConc = moose.element(item.mobj).conc if initialConc != 0: - ratio = presentConc/initialConc + ratio = presentConc / initialConc else: - # multipying by 1000 b'cos moose concentration is in milli in moose + # multipying by 1000 b'cos moose concentration is in milli + # in moose ratio = presentConc if ratio > 10: ratio = 9 if ratio < 0.0: - ratio =0.1 + ratio = 0.1 item.updateRect(math.sqrt(abs(ratio))) def resetColor(self): for item in list(self.sceneContainer.items()): - if isinstance(item,PoolItemCircle): + if isinstance(item, PoolItemCircle): item.returnEllispeSize() @@ -979,20 +1053,20 @@ def resetColor(self): # print(filepath) # f = open(filepath, "r") # loadModel(filepath,'/'+modelPath) -# +# # #moose.le('/'+modelPath+'/kinetics') # dt = KineticsWidget() # dt.modelRoot ='/'+modelPath # ''' Loading moose signalling model in python ''' # #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') # #dt.modelRoot = '/model' -# +# # dt.updateModelView() # dt.show() -# +# # except IOError as what: # (errno, strerror) = what # print("Error number",errno,"(%s)" %strerror) # sys.exit(0) # sys.exit(app.exec_()) -# +# diff --git a/mgui/plugins/kkitViewcontrol.py b/mgui/plugins/kkitViewcontrol.py index 8f67adc..dec172d 100644 --- a/mgui/plugins/kkitViewcontrol.py +++ b/mgui/plugins/kkitViewcontrol.py @@ -2,7 +2,7 @@ from mgui.plugins.modelBuild import * from mgui.plugins.constants import * -from mgui.plugins.kkitUtil import * +from mgui.plugins.kkitUtil import * from mgui.plugins.setsolver import * from PyQt4.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem @@ -10,22 +10,25 @@ from PyQt4 import QtSvg from moose import utils from mgui.GenericTypes import QVariant +from mgui.config import _logger + class GraphicalView(QtGui.QGraphicsView): - def __init__(self, modelRoot,parent,border,layoutPt,createdItem,minmaxratio): - QtGui.QGraphicsView.__init__(self,parent) + def __init__(self, modelRoot, parent, border, + layoutPt, createdItem, minmaxratio): + QtGui.QGraphicsView.__init__(self, parent) self.minmaxratioDict = minmaxratio self.state = None - self.move = False + self.move = False self.resetState() - self.connectionSign = None - self.connectionSource = None - self.expectedConnection = None - self.selections = [] - self.connector = None + self.connectionSign = None + self.connectionSource = None + self.expectedConnection = None + self.selections = [] + self.connector = None self.connectionSignImagePath = "../gui/icons/connection.png" - self.connectionSignImage = QImage(self.connectionSignImagePath) + self.connectionSignImage = QImage(self.connectionSignImagePath) # self.expectedConnectionPen = QPen() self.setScene(parent) @@ -45,44 +48,45 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem,minmaxratio): self.layoutPt = layoutPt # All the object which are stacked on the scene are listed self.stackOrder = self.sceneContainerPt.items(Qt.Qt.DescendingOrder) - #From stackOrder selecting only compartment - self.cmptStackorder = [i for i in self.stackOrder if isinstance(i,ComptItem)] + # From stackOrder selecting only compartment + self.cmptStackorder = [ + i for i in self.stackOrder if isinstance( + i, ComptItem)] self.viewBaseType = " " self.iconScale = 1 self.arrowsize = 2 self.defaultComptsize = 5 - self.connectorlist = {"plot": None ,"clone": None,"move": None,"delete": None} + self.connectorlist = { + "plot": None, + "clone": None, + "move": None, + "delete": None} self.setHorizontalScrollBarPolicy(PyQt4.QtCore.Qt.ScrollBarAlwaysOn) self.setVerticalScrollBarPolicy(PyQt4.QtCore.Qt.ScrollBarAlwaysOn) - def setRefWidget(self,path): + def setRefWidget(self, path): self.viewBaseType = path - - def resizeEvent(self, event): - #print event.size().width(),event.size().height() - self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) - #print("Called =>", event) + def resizeEvent(self, event): + self.fitInView( + self.sceneContainerPt.itemsBoundingRect().x() - 10, + self.sceneContainerPt.itemsBoundingRect().y() - 10, + self.sceneContainerPt.itemsBoundingRect().width() + 20, + self.sceneContainerPt.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) return - + def resolveCompartmentInteriorAndBoundary(self, item, position): - bound = item.rect().adjusted(3,3,-3,-3) - return COMPARTMENT_INTERIOR if bound.contains(item.mapFromScene(position)) else COMPARTMENT_BOUNDARY + bound = item.rect().adjusted(3, 3, -3, -3) + return COMPARTMENT_INTERIOR if bound.contains( + item.mapFromScene(position)) else COMPARTMENT_BOUNDARY def resetState(self): - self.state = { "press" : { "mode" : INVALID - , "item" : None - , "sign" : None - , "pos" : None - } - , "move" : { "happened": False - } - , "release" : { "mode" : INVALID - , "item" : None - , "sign" : None - } - } - + self.state = { + "press": { + "mode": INVALID, "item": None, "sign": None, "pos": None}, "move": { + "happened": False}, "release": { + "mode": INVALID, "item": None, "sign": None}} def resolveItem(self, items, position): solution = None @@ -91,17 +95,19 @@ def resolveItem(self, items, position): # return (item, CONNECTOR) if isinstance(item, QtSvg.QGraphicsSvgItem): return (item, CONNECTOR) - + if isinstance(item, QtGui.QGraphicsPolygonItem): return (item, CONNECTION) for item in items: if hasattr(item, "name"): - #print(item.name) + # print(item.name) if item.name == ITEM: return (item, ITEM) if item.name == COMPARTMENT: - solution = (item, self.resolveCompartmentInteriorAndBoundary(item, position)) + solution = ( + item, self.resolveCompartmentInteriorAndBoundary( + item, position)) if solution is None: return (None, EMPTY) @@ -109,12 +115,13 @@ def resolveItem(self, items, position): def editorMousePressEvent(self, event): if event.buttons() == QtCore.Qt.LeftButton: - self.clickPosition = self.mapToScene(event.pos()) - (item, itemType) = self.resolveItem(self.items(event.pos()), self.clickPosition) + self.clickPosition = self.mapToScene(event.pos()) + (item, itemType) = self.resolveItem( + self.items(event.pos()), self.clickPosition) self.state["press"]["mode"] = VALID self.state["press"]["item"] = item self.state["press"]["type"] = itemType - self.state["press"]["pos"] = event.pos() + self.state["press"]["pos"] = event.pos() if itemType == COMPARTMENT_INTERIOR: self.removeConnector() elif itemType == ITEM: @@ -127,11 +134,14 @@ def editorMousePressEvent(self, event): comptList.append(v) if len(comptList) > 1: popupmenu = QtGui.QMenu('PopupMenu', self) - popupmenu.addAction("LinearLayout", lambda : handleCollisions(comptList, moveX, self.layoutPt)) - popupmenu.addAction("VerticalLayout" ,lambda : handleCollisions(comptList, moveMin, self.layoutPt )) + popupmenu.addAction( + "LinearLayout", lambda: handleCollisions( + comptList, moveX, self.layoutPt)) + popupmenu.addAction( + "VerticalLayout", lambda: handleCollisions( + comptList, moveMin, self.layoutPt)) popupmenu.exec_(self.mapToGlobal(event.pos())) - def editorMouseMoveEvent(self, event): if self.state["press"]["mode"] == INVALID: self.state["move"]["happened"] = False @@ -142,49 +152,54 @@ def editorMouseMoveEvent(self, event): final = self.mapToScene(event.pos()) displacement = final - initial for item in self.selectedItems: - if isinstance(item, KineticsDisplayItem) and not isinstance(item,ComptItem) and not isinstance(item,CplxItem): + if isinstance(item, KineticsDisplayItem) and not isinstance( + item, ComptItem) and not isinstance(item, CplxItem): item.moveBy(displacement.x(), displacement.y()) - self.layoutPt.positionChange(item.mobj.path) + self.layoutPt.positionChange(item.mobj.path) self.state["press"]["pos"] = event.pos() return self.state["move"]["happened"] = True itemType = self.state["press"]["type"] - item = self.state["press"]["item"] - + item = self.state["press"]["item"] + if itemType == CONNECTOR: ''' connecting 2 object is removed and movement is impled''' actionType = str(item.data(0).toString()) if actionType == "move": - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) + QtGui.QApplication.setOverrideCursor( + QtGui.QCursor(QtCore.Qt.CrossCursor)) initial = self.mapToScene(self.state["press"]["pos"]) #initial = item.parent().pos() final = self.mapToScene(event.pos()) - displacement = final-initial - if isinstance(item.parent(),KineticsDisplayItem): + displacement = final - initial + if isinstance(item.parent(), KineticsDisplayItem): itemPath = item.parent().mobj.path if moose.exists(itemPath): - iInfo = itemPath+'/info' + iInfo = itemPath + '/info' anno = moose.Annotator(iInfo) - modelAnno = moose.Annotator(self.modelRoot+'/info') + modelAnno = moose.Annotator(self.modelRoot + '/info') if modelAnno.modeltype == "kkit": - x = ((self.mapToScene(event.pos()).x())+(self.minmaxratioDict['xmin']*self.minmaxratioDict['xratio']))/self.minmaxratioDict['xratio'] - y = (1.0 - self.mapToScene(event.pos()).y()+(self.minmaxratioDict['ymin']*self.minmaxratioDict['yratio']))/self.minmaxratioDict['yratio'] + x = ((self.mapToScene(event.pos()).x()) + (self.minmaxratioDict[ + 'xmin'] * self.minmaxratioDict['xratio'])) / self.minmaxratioDict['xratio'] + y = (1.0 - self.mapToScene(event.pos()).y() + (self.minmaxratioDict[ + 'ymin'] * self.minmaxratioDict['yratio'])) / self.minmaxratioDict['yratio'] anno.x = x anno.y = y elif(modelAnno.modeltype == "new_kkit" or modelAnno.modeltype == "sbml" or modelAnno.modeltype == "cspace"): anno.x = self.mapToScene(event.pos()).x() anno.y = self.mapToScene(event.pos()).y() - - #if not isinstance(item.parent(),FuncItem) and not isinstance(item.parent(),CplxItem): - if not isinstance(item.parent(),CplxItem): + + # if not isinstance(item.parent(),FuncItem) and not + # isinstance(item.parent(),CplxItem): + if not isinstance(item.parent(), CplxItem): self.removeConnector() item.parent().moveBy(displacement.x(), displacement.y()) - if isinstance(item.parent(),PoolItem): + if isinstance(item.parent(), PoolItem): for funcItem in item.parent().childItems(): - if isinstance(funcItem,FuncItem): + if isinstance(funcItem, FuncItem): self.layoutPt.updateArrow(funcItem) - + self.state["press"]["pos"] = event.pos() self.layoutPt.positionChange(item.parent().mobj) if actionType == "clone": @@ -196,10 +211,10 @@ def editorMouseMoveEvent(self, event): pen = QtGui.QPen(QtGui.QBrush(QtGui.QColor("black")), 1) pen.setWidthF(1.5) painter.setPen(pen) - painter.drawLine(12,7,12,17) - painter.drawLine(7,12,17,12) + painter.drawLine(12, 7, 12, 17) + painter.drawLine(7, 12, 17, 12) painter.end() - #self.setCursor(QtGui.QCursor(pixmap)) + # self.setCursor(QtGui.QCursor(pixmap)) QtGui.QApplication.setOverrideCursor(QtGui.QCursor(pixmap)) if itemType == ITEM: @@ -214,27 +229,29 @@ def editorMouseMoveEvent(self, event): self.state["press"]["pos"] = event.pos() if itemType == COMPARTMENT_INTERIOR: - if self.customrubberBand == None: - self.customrubberBand = QtGui.QRubberBand(QtGui.QRubberBand.Rectangle,self) + if self.customrubberBand is None: + self.customrubberBand = QtGui.QRubberBand( + QtGui.QRubberBand.Rectangle, self) self.customrubberBand.show() startingPosition = self.state["press"]["pos"] endingPosition = event.pos() - displacement = endingPosition - startingPosition + displacement = endingPosition - startingPosition - x0 = startingPosition.x() + x0 = startingPosition.x() x1 = endingPosition.x() - y0 = startingPosition.y() + y0 = startingPosition.y() y1 = endingPosition.y() - if displacement.x() < 0 : - x0,x1= x1,x0 + if displacement.x() < 0: + x0, x1 = x1, x0 - if displacement.y() < 0 : - y0,y1= y1,y0 + if displacement.y() < 0: + y0, y1 = y1, y0 + + self.customrubberBand.setGeometry(QtCore.QRect(QtCore.QPoint( + x0, y0), QtCore.QSize(abs(displacement.x()), abs(displacement.y())))) - self.customrubberBand.setGeometry(QtCore.QRect(QtCore.QPoint(x0, y0), QtCore.QSize(abs(displacement.x()), abs(displacement.y())))) - def editorMouseReleaseEvent(self, event): if self.move: self.move = False @@ -245,8 +262,9 @@ def editorMouseReleaseEvent(self, event): self.resetState() return - self.clickPosition = self.mapToScene(event.pos()) - (item, itemType) = self.resolveItem(self.items(event.pos()), self.clickPosition) + self.clickPosition = self.mapToScene(event.pos()) + (item, itemType) = self.resolveItem( + self.items(event.pos()), self.clickPosition) self.state["release"]["mode"] = VALID self.state["release"]["item"] = item self.state["release"]["type"] = itemType @@ -255,43 +273,53 @@ def editorMouseReleaseEvent(self, event): if not self.state["move"]["happened"]: if not self.move: self.showConnector(self.state["press"]["item"]) - self.layoutPt.plugin.mainWindow.objectEditSlot(self.state["press"]["item"].mobj, True) + self.layoutPt.plugin.mainWindow.objectEditSlot( + self.state["press"]["item"].mobj, True) # compartment's rectangle size is calculated depending on children - #self.layoutPt.comptChilrenBoundingRect() + # self.layoutPt.comptChilrenBoundingRect() l = self.modelRoot - if self.modelRoot.find('/',1) > 0: - l = self.modelRoot[0:self.modelRoot.find('/',1)] + if self.modelRoot.find('/', 1) > 0: + l = self.modelRoot[0:self.modelRoot.find('/', 1)] - linfo = moose.Annotator(l+'/model/info') + linfo = moose.Annotator(l + '/model/info') for k, v in list(self.layoutPt.qGraCompt.items()): rectcompt = v.childrenBoundingRect() if linfo.modeltype == "new_kkit": - #if newly built model then compartment is size is fixed for some size. + # if newly built model then compartment is size is + # fixed for some size. comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.layoutPt.updateCompartmentSize(v) else: - #if already built model then compartment size depends on max and min objects + # if already built model then compartment size depends + # on max and min objects rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + v.setRect( + rectcompt.x() - 10, + rectcompt.y() - 10, + (rectcompt.width() + 20), + (rectcompt.height() + 20)) else: - if isinstance(self.state["release"]["item"], KineticsDisplayItem): - if not moose.element(self.state["press"]["item"].mobj) == moose.element(self.state["release"]["item"].mobj): - self.populate_srcdes( self.state["press"]["item"].mobj - , self.state["release"]["item"].mobj - ) + if isinstance(self.state["release"][ + "item"], KineticsDisplayItem): + if not moose.element( + self.state["press"]["item"].mobj) == moose.element( + self.state["release"]["item"].mobj): + self.populate_srcdes( + self.state["press"]["item"].mobj, + self.state["release"]["item"].mobj) else: pass self.removeExpectedConnection() self.removeConnector() self.move = False - if clickedItemType == CONNECTOR: + if clickedItemType == CONNECTOR: actionType = str(self.state["press"]["item"].data(0).toString()) - - + if actionType == "move": - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) + QtGui.QApplication.setOverrideCursor( + QtGui.QCursor(Qt.Qt.ArrowCursor)) if actionType == "delete": self.removeConnector() @@ -303,14 +331,17 @@ def editorMouseReleaseEvent(self, event): pen = QtGui.QPen(QtGui.QBrush(QtGui.QColor("black")), 1) pen.setWidthF(1.5) painter.setPen(pen) - painter.drawLine(8,8,16,16) - painter.drawLine(8,16,16,8) + painter.drawLine(8, 8, 16, 16) + painter.drawLine(8, 16, 16, 8) painter.end() QtGui.QApplication.setOverrideCursor(QtGui.QCursor(pixmap)) - reply = QtGui.QMessageBox.question(self, "Deleting Object","Do want to delete object and its connections", - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) + reply = QtGui.QMessageBox.question( + self, + "Deleting Object", + "Do want to delete object and its connections", + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: - #delete solver first as topology is changing + # delete solver first as topology is changing deleteSolver(self.modelRoot) self.deleteObj([item.parent()]) QtGui.QApplication.restoreOverrideCursor() @@ -319,121 +350,153 @@ def editorMouseReleaseEvent(self, event): elif actionType == "plot": element = moose.element(item.parent().mobj.path) - if isinstance (element,moose.PoolBase): - self.graph = moose.element(self.modelRoot+'/data/graph_0') - tablePath = utils.create_table_path(moose.element(self.modelRoot), self.graph, element, "Conc") - table = utils.create_table(tablePath, element, "Conc","Table2") + if isinstance(element, moose.PoolBase): + self.graph = moose.element( + self.modelRoot + '/data/graph_0') + tablePath = utils.create_table_path(moose.element( + self.modelRoot), self.graph, element, "Conc") + table = utils.create_table( + tablePath, element, "Conc", "Table2") self.layoutPt.plugin.view.getCentralWidget().plotWidgetContainer.plotAllData() - reply = QtGui.QMessageBox.information(self, "plot Object","Plot is added to Graph1", - QtGui.QMessageBox.Ok) + reply = QtGui.QMessageBox.information( + self, "plot Object", "Plot is added to Graph1", QtGui.QMessageBox.Ok) elif actionType == "clone": if self.state["move"]["happened"]: - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) + QtGui.QApplication.setOverrideCursor( + QtGui.QCursor(Qt.Qt.ArrowCursor)) self.state["press"]["item"].parent().mobj cloneObj = self.state["press"]["item"] posWrtComp = self.mapToScene(event.pos()) - itemAtView = self.sceneContainerPt.itemAt(self.mapToScene(event.pos())) + itemAtView = self.sceneContainerPt.itemAt( + self.mapToScene(event.pos())) self.removeConnector() - if isinstance(itemAtView,ComptItem): - #Solver should be deleted - ## if there is change in 'Topology' of the model - ## or if copy has to made then oject should be in unZombify mode + if isinstance(itemAtView, ComptItem): + # Solver should be deleted + # if there is change in 'Topology' of the model + # or if copy has to made then oject should be in + # unZombify mode deleteSolver(self.modelRoot) - lKey = [key for key, value in self.layoutPt.qGraCompt.items() if value == itemAtView][0] + lKey = [ + key for key, + value in self.layoutPt.qGraCompt.items() if value == itemAtView][0] iR = 0 iP = 0 t = moose.element(cloneObj.parent().mobj) name = t.name - if isinstance(cloneObj.parent().mobj,PoolBase): - retValue = self.objExist(lKey.path,name,iP) - if retValue != None: + if isinstance(cloneObj.parent().mobj, PoolBase): + retValue = self.objExist(lKey.path, name, iP) + if retValue is not None: name += retValue - pmooseCp = moose.copy(t,lKey.path,name,1) - #if moose.copy failed then check for path != '/' + pmooseCp = moose.copy(t, lKey.path, name, 1) + # if moose.copy failed then check for path != '/' if pmooseCp.path != '/': ct = moose.element(pmooseCp) concInit = pmooseCp.concInit[0] - #this is b'cos if pool copied across the comptartment, - #then it doesn't calculate nInit according but if one set - #concInit then it would, just a hack + # this is b'cos if pool copied across the comptartment, + # then it doesn't calculate nInit according but if one set + # concInit then it would, just a hack ct.concInit = concInit #itemAtView = self.state["release"]["item"] poolObj = moose.element(ct) - poolinfo = moose.element(poolObj.path+'/info') - qGItem = PoolItem(poolObj,itemAtView) + poolinfo = moose.element( + poolObj.path + '/info') + qGItem = PoolItem(poolObj, itemAtView) self.layoutPt.mooseId_GObj[poolObj] = qGItem #bgcolor = getRandColor() - color,bgcolor = getColor(poolinfo) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),color,bgcolor) - self.emit(QtCore.SIGNAL("dropped"),poolObj) - - if isinstance(cloneObj.parent().mobj,ReacBase): - retValue = self.objExist(lKey.path,name,iR) - if retValue != None : + color, bgcolor = getColor(poolinfo) + qGItem.setDisplayProperties( + posWrtComp.x(), posWrtComp.y(), color, bgcolor) + self.emit(QtCore.SIGNAL("dropped"), poolObj) + + if isinstance(cloneObj.parent().mobj, ReacBase): + retValue = self.objExist(lKey.path, name, iR) + if retValue is not None: name += retValue - rmooseCp = moose.copy(t,lKey.path,name,1) + rmooseCp = moose.copy(t, lKey.path, name, 1) if rmooseCp.path != '/': ct = moose.element(rmooseCp) #itemAtView = self.state["release"]["item"] reacObj = moose.element(ct) - reacinfo = moose.Annotator(reacObj.path+'/info') - qGItem = ReacItem(reacObj,itemAtView) + reacinfo = moose.Annotator( + reacObj.path + '/info') + qGItem = ReacItem(reacObj, itemAtView) self.layoutPt.mooseId_GObj[reacObj] = qGItem posWrtComp = self.mapToScene(event.pos()) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") - self.emit(QtCore.SIGNAL("dropped"),reacObj) + qGItem.setDisplayProperties( + posWrtComp.x(), posWrtComp.y(), "white", "white") + self.emit(QtCore.SIGNAL("dropped"), reacObj) self.updateScale(self.iconScale) else: - if itemAtView == None: - QtGui.QMessageBox.information(None,'Dropping Not possible ','Dropping not allowed outside the compartment',QtGui.QMessageBox.Ok) + if itemAtView is None: + QtGui.QMessageBox.information( + None, + 'Dropping Not possible ', + 'Dropping not allowed outside the compartment', + QtGui.QMessageBox.Ok) else: - srcdesString = ((self.state["release"]["item"]).mobj).className - QtGui.QMessageBox.information(None,'Dropping Not possible','Dropping on \'{srcdesString}\' not allowed'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + srcdesString = ( + (self.state["release"]["item"]).mobj).className + QtGui.QMessageBox.information( + None, + 'Dropping Not possible', + 'Dropping on \'{srcdesString}\' not allowed'.format( + srcdesString=srcdesString), + QtGui.QMessageBox.Ok) if clickedItemType == CONNECTION: popupmenu = QtGui.QMenu('PopupMenu', self) - popupmenu.addAction("Delete", lambda : self.deleteConnection(item)) + popupmenu.addAction("Delete", lambda: self.deleteConnection(item)) popupmenu.exec_(self.mapToGlobal(event.pos())) - + if clickedItemType == COMPARTMENT_BOUNDARY: if not self.state["move"]["happened"]: - self.layoutPt.plugin.mainWindow.objectEditSlot(self.state["press"]["item"].mobj, True) + self.layoutPt.plugin.mainWindow.objectEditSlot( + self.state["press"]["item"].mobj, True) self.resetState() if clickedItemType == COMPARTMENT_INTERIOR: if self.state["move"]["happened"]: startingPosition = self.state["press"]["pos"] endingPosition = event.pos() - displacement = endingPosition - startingPosition - x0 = startingPosition.x() + displacement = endingPosition - startingPosition + x0 = startingPosition.x() x1 = endingPosition.x() - y0 = startingPosition.y() + y0 = startingPosition.y() y1 = endingPosition.y() - if displacement.x() < 0 : - x0,x1= x1,x0 + if displacement.x() < 0: + x0, x1 = x1, x0 + + if displacement.y() < 0: + y0, y1 = y1, y0 - if displacement.y() < 0 : - y0,y1= y1,y0 - - #print "kkitview COMPARTMENT_INTERIOR",x0,y0 - self.selectedItems = selectedItems = self.items(x0,y0,abs(displacement.x()), abs(displacement.y())) + # print "kkitview COMPARTMENT_INTERIOR",x0,y0 + self.selectedItems = selectedItems = self.items( + x0, y0, abs(displacement.x()), abs(displacement.y())) # print("Rect => ", self.customrubberBand.rect()) # selectedItems = self.items(self.mapToScene(self.customrubberBand.rect()).boundingRect()) self.selectSelections(selectedItems) for item in selectedItems: - if isinstance(item, KineticsDisplayItem) and not isinstance(item,ComptItem): + if isinstance( + item, + KineticsDisplayItem) and not isinstance( + item, + ComptItem): item.setSelected(True) #print("Rubberband Selections => ", self.selections) self.customrubberBand.hide() self.customrubberBand = None popupmenu = QtGui.QMenu('PopupMenu', self) - popupmenu.addAction("Delete", lambda: self.deleteSelections(x0,y0,x1,y1)) - popupmenu.addAction("Zoom", lambda: self.zoomSelections(x0,y0,x1,y1)) - popupmenu.addAction("Move", lambda: self.moveSelections()) + popupmenu.addAction( + "Delete", lambda: self.deleteSelections( + x0, y0, x1, y1)) + popupmenu.addAction( + "Zoom", lambda: self.zoomSelections( + x0, y0, x1, y1)) + popupmenu.addAction("Move", lambda: self.moveSelections()) popupmenu.exec_(self.mapToGlobal(event.pos())) # self.delete = QtGui.QAction(self.tr('delete'), self) # self.connect(self.delete, QtCore.SIGNAL('triggered()'), self.deleteItems) @@ -441,9 +504,6 @@ def editorMouseReleaseEvent(self, event): # self.connect(self.zoom, QtCore.SIGNAL('triggered()'), self.zoomItem) # self.move = QtGui.QAction(self.tr('move'), self) # self.connect(self.move, QtCore.SIGNAL('triggered()'), self.moveItem) - - - # else: # self.layoutPt.plugin.mainWindow.objectEditSlot(self.state["press"]["item"].mobj, True) @@ -451,25 +511,22 @@ def editorMouseReleaseEvent(self, event): def drawExpectedConnection(self, event): self.connectionSource = self.state["press"]["item"] - sourcePoint = self.connectionSource.mapToScene( + sourcePoint = self.connectionSource.mapToScene( self.connectionSource.boundingRect().center() - ) + ) destinationPoint = self.mapToScene(event.pos()) if self.expectedConnection is None: - self.expectedConnection = QGraphicsLineItem( sourcePoint.x() - , sourcePoint.y() - , destinationPoint.x() - , destinationPoint.y() - ) + self.expectedConnection = QGraphicsLineItem( + sourcePoint.x(), sourcePoint.y(), destinationPoint.x(), destinationPoint.y()) self.expectedConnection.setPen(QPen(Qt.Qt.DashLine)) self.sceneContainerPt.addItem(self.expectedConnection) else: - self.expectedConnection.setLine( sourcePoint.x() - , sourcePoint.y() - , destinationPoint.x() - , destinationPoint.y() - ) + self.expectedConnection.setLine( + sourcePoint.x(), + sourcePoint.y(), + destinationPoint.x(), + destinationPoint.y()) ''' print " drawExpectedConnection ()() ",self.state["item"]["press"].mobj @@ -493,15 +550,16 @@ def drawExpectedConnection(self, event): , destinationPoint.y() ) ''' + def removeExpectedConnection(self): - #print("removeExpectedConnection") + # print("removeExpectedConnection") self.sceneContainerPt.removeItem(self.expectedConnection) self.expectedConnection = None - self.connectionSource = None + self.connectionSource = None def removeConnector(self): try: - for l,k in list(self.connectorlist.items()): + for l, k in list(self.connectorlist.items()): if k is not None: self.sceneContainerPt.removeItem(k) self.connectorlist[l] = None @@ -528,33 +586,37 @@ def showConnector(self, item): self.yDisp = 0 self.connectionSign = None - if isinstance(item.mobj,PoolBase) or isinstance(item.mobj,ReacBase): + if isinstance(item.mobj, PoolBase) or isinstance( + item.mobj, ReacBase): if l == "clone": self.connectionSign = QtSvg.QGraphicsSvgItem( - os.path.join( config.MOOSE_ICON_DIR, 'clone.svg' ) - ) + os.path.join(config.MOOSE_ICON_DIR, 'clone.svg') + ) self.connectionSign.setData(0, QVariant("clone")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setScale( - (1.0 * rectangle.height()) / self.connectionSign.boundingRect().height() - ) + (1.0 * rectangle.height()) / + self.connectionSign.boundingRect().height() + ) position = item.mapToParent(rectangle.bottomLeft()) self.xDisp = 15 self.yDisp = 2 self.connectionSign.setZValue(1) - self.connectionSign.setToolTip("Click and drag to clone the object") - self.connectorlist["clone"] = self.connectionSign - - if isinstance(item.mobj,PoolBase): + self.connectionSign.setToolTip( + "Click and drag to clone the object") + self.connectorlist["clone"] = self.connectionSign + + if isinstance(item.mobj, PoolBase): if l == "plot": self.connectionSign = QtSvg.QGraphicsSvgItem( - os.path.join( config.MOOSE_ICON_DIR, 'plot.svg' ) - ) + os.path.join(config.MOOSE_ICON_DIR, 'plot.svg') + ) self.connectionSign.setData(0, QVariant("plot")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setScale( - (1.0 * rectangle.height()) / self.connectionSign.boundingRect().height() - ) + (1.0 * rectangle.height()) / + self.connectionSign.boundingRect().height() + ) position = item.mapToParent(rectangle.bottomRight()) #self.xDisp = 15 #self.yDisp = 2 @@ -563,81 +625,90 @@ def showConnector(self, item): self.connectorlist["plot"] = self.connectionSign if l == "move": - if ((item.mobj.parent.className == "ZombieEnz") or (item.mobj.parent.className == "Enz")): + if ((item.mobj.parent.className == "ZombieEnz") + or (item.mobj.parent.className == "Enz")): pass else: self.connectionSign = QtSvg.QGraphicsSvgItem( - os.path.join( config.MOOSE_ICON_DIR, 'move.svg' ) - ) + os.path.join(config.MOOSE_ICON_DIR, 'move.svg') + ) self.connectionSign.setData(0, QVariant("move")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setToolTip("Drag to move.") - if ( item.mobj.className == "ZombieFunction" or item.mobj.className == "Function"): + if (item.mobj.className == + "ZombieFunction" or item.mobj.className == "Function"): self.connectionSign.setScale( - (0.75 * rectangle.height()) / self.connectionSign.boundingRect().height() - ) + (0.75 * rectangle.height()) / + self.connectionSign.boundingRect().height() + ) else: self.connectionSign.setScale( - (1 * rectangle.height()) / self.connectionSign.boundingRect().height() - ) + (1 * rectangle.height()) / + self.connectionSign.boundingRect().height() + ) position = item.mapToParent(rectangle.topLeft()) self.xDisp = 15 self.yDisp = 2 self.connectionSign.setZValue(1) self.connectorlist["move"] = self.connectionSign elif l == "delete": - if ((item.mobj.parent.className == "ZombieEnz") or (item.mobj.parent.className == "Enz")): + if ((item.mobj.parent.className == "ZombieEnz") + or (item.mobj.parent.className == "Enz")): pass else: self.connectionSign = QtSvg.QGraphicsSvgItem( - os.path.join( config.MOOSE_ICON_DIR, 'delete.svg' ) - ) + os.path.join(config.MOOSE_ICON_DIR, 'delete.svg') + ) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setData(0, QVariant("delete")) - if ( item.mobj.className == "ZombieFunction" or item.mobj.className == "Function"): + if (item.mobj.className == + "ZombieFunction" or item.mobj.className == "Function"): self.connectionSign.setScale( - (0.75 * rectangle.height()) / self.connectionSign.boundingRect().height() - ) + (0.75 * rectangle.height()) / + self.connectionSign.boundingRect().height() + ) else: self.connectionSign.setScale( - (1.0 * rectangle.height()) / self.connectionSign.boundingRect().height() - ) + (1.0 * rectangle.height()) / + self.connectionSign.boundingRect().height() + ) position = item.mapToParent(rectangle.topRight()) self.connectionSign.setZValue(1) self.connectionSign.setToolTip("Delete the object") self.connectorlist["delete"] = self.connectionSign - if self.connectionSign != None: - self.connectionSign.setFlag(QtGui.QGraphicsItem.ItemIsSelectable,True) + if self.connectionSign is not None: + self.connectionSign.setFlag( + QtGui.QGraphicsItem.ItemIsSelectable, True) self.connectionSign.setParentItem(item.parentItem()) - self.connectionSign.setPos(0.0,0.0) - self.connectionSign.moveBy( position.x()-self.xDisp - , position.y() +self.yDisp - rectangle.height() / 2.0 - ) + self.connectionSign.setPos(0.0, 0.0) + self.connectionSign.moveBy( + position.x() - self.xDisp, + position.y() + self.yDisp - rectangle.height() / 2.0) - def objExist(self,path,name,index): + def objExist(self, path, name, index): if index == 0: - fPath = path+'/'+name + fPath = path + '/' + name else: - fPath = path+'/'+name+'_'+str(index) + fPath = path + '/' + name + '_' + str(index) if moose.exists(fPath): index += 1 - return self.objExist(path,name,index) + return self.objExist(path, name, index) else: if index == 0: return else: - return ('_'+str(index)) + return ('_' + str(index)) def selectSelections(self, selections): - for selection in selections : + for selection in selections: if isinstance(selection, KineticsDisplayItem): self.selections.append(selection) def deselectSelections(self): for selection in self.selections: selection.setSelected(False) - self.selections = [] + self.selections = [] def mousePressEvent(self, event): selectedItem = None @@ -649,23 +720,21 @@ def mousePressEvent(self, event): item = self.itemAt(pos) if item: itemClass = type(item).__name__ - if ( itemClass!='ComptItem' and itemClass != 'QGraphicsPolygonItem' and - itemClass != 'QGraphicsEllipseItem' and itemClass != 'QGraphicsRectItem'): + if (itemClass != 'ComptItem' and itemClass != 'QGraphicsPolygonItem' and + itemClass != 'QGraphicsEllipseItem' and itemClass != 'QGraphicsRectItem'): self.setCursor(Qt.Qt.CrossCursor) mimeData = QtCore.QMimeData() mimeData.setText(item.mobj.name) mimeData.setData("text/plain", "") - mimeData.data =(self.modelRoot,item.mobj) + mimeData.data = (self.modelRoot, item.mobj) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) dropAction = drag.start(QtCore.Qt.MoveAction) self.setCursor(Qt.Qt.ArrowCursor) - - def mouseMoveEvent(self,event): + def mouseMoveEvent(self, event): if self.viewBaseType == "editorView": return self.editorMouseMoveEvent(event) - def mouseReleaseEvent(self, event): if self.viewBaseType == "editorView": @@ -676,104 +745,106 @@ def mouseReleaseEvent(self, event): return if self.state["press"]["mode"] == CONNECTION: - desPos =self.mapToScene(event.pos()) + desPos = self.mapToScene(event.pos()) destination = self.items(event.pos()) src = self.state["press"]["item"] - des = [j for j in destination if isinstance(j,KineticsDisplayItem)] + des = [ + j for j in destination if isinstance( + j, KineticsDisplayItem)] if len(des): - self.populate_srcdes(src.mobj,des[0].mobj) - #print " pop", self.layoutPt.srcdesConnection() + self.populate_srcdes(src.mobj, des[0].mobj) + # print " pop", self.layoutPt.srcdesConnection() self.setCursor(Qt.Qt.ArrowCursor) QtGui.QGraphicsView.mouseReleaseEvent(self, event) - '''if(self.customrubberBand): - self.customrubberBand.hide() - self.customrubberBand = 0 - if event.button() == QtCore.Qt.LeftButton and self.itemSelected == False : - self.endingPos = event.pos() - self.endScenepos = self.mapToScene(self.endingPos) - self.rubberbandWidth = (self.endScenepos.x()-self.startScenepos.x()) - self.rubberbandHeight = (self.endScenepos.y()-self.startScenepos.y()) - selecteditems = self.sceneContainerPt.selectedItems() - #print "selecteditems ",selecteditems - if self.rubberbandWidth != 0 and self.rubberbandHeight != 0 and len(selecteditems) != 0 : - self.showpopupmenu = True - ''' - #self.itemSelected = False - ''' - if self.showpopupmenu: - popupmenu = QtGui.QMenu('PopupMenu', self) - self.delete = QtGui.QAction(self.tr('delete'), self) - self.connect(self.delete, QtCore.SIGNAL('triggered()'), self.deleteItems) - self.zoom = QtGui.QAction(self.tr('zoom'), self) - self.connect(self.zoom, QtCore.SIGNAL('triggered()'), self.zoomItem) - self.move = QtGui.QAction(self.tr('move'), self) - self.connect(self.move, QtCore.SIGNAL('triggered()'), self.moveItem) - popupmenu.addAction(self.delete) - popupmenu.addAction(self.zoom) - popupmenu.addAction(self.move) - popupmenu.exec_(event.globalPos()) - self.showpopupmenu = False - ''' def updateItemTransformationMode(self, on): for v in list(self.sceneContainerPt.items()): - #v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations,on) - if( not isinstance(v,ComptItem)): - #if ( isinstance(v, PoolItem) or isinstance(v, ReacItem) or isinstance(v, EnzItem) or isinstance(v, CplxItem) ): - if isinstance(v,KineticsDisplayItem): - v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations, on) - def keyPressEvent(self,event): + # v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations,on) + if(not isinstance(v, ComptItem)): + # if ( isinstance(v, PoolItem) or isinstance(v, ReacItem) or + # isinstance(v, EnzItem) or isinstance(v, CplxItem) ): + if isinstance(v, KineticsDisplayItem): + v.setFlag( + QtGui.QGraphicsItem.ItemIgnoresTransformations, on) + + def keyPressEvent(self, event): key = event.key() self.removeConnector() - if (key == Qt.Qt.Key_A and (event.modifiers() & Qt.Qt.ShiftModifier)): # 'A' fits the view to iconScale factor + if (key == Qt.Qt.Key_A and (event.modifiers() & Qt.Qt.ShiftModifier) + ): # 'A' fits the view to iconScale factor itemignoreZooming = False self.updateItemTransformationMode(itemignoreZooming) - self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) + self.fitInView( + self.sceneContainerPt.itemsBoundingRect().x() - 10, + self.sceneContainerPt.itemsBoundingRect().y() - 10, + self.sceneContainerPt.itemsBoundingRect().width() + 20, + self.sceneContainerPt.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) self.layoutPt.drawLine_arrow(itemignoreZooming=False) - elif (key == Qt.Qt.Key_Less or key == Qt.Qt.Key_Minus):# and (event.modifiers() & Qt.Qt.ShiftModifier)): # '<' key. zooms-in to iconScale factor + # and (event.modifiers() & Qt.Qt.ShiftModifier)): # '<' key. zooms-in + # to iconScale factor + elif (key == Qt.Qt.Key_Less or key == Qt.Qt.Key_Minus): self.iconScale *= 0.8 - self.updateScale( self.iconScale ) + self.updateScale(self.iconScale) - elif (key == Qt.Qt.Key_Greater or key == Qt.Qt.Key_Plus):# and (event.modifiers() & Qt.Qt.ShiftModifier)): # '>' key. zooms-out to iconScale factor + # and (event.modifiers() & Qt.Qt.ShiftModifier)): # '>' key. zooms-out + # to iconScale factor + elif (key == Qt.Qt.Key_Greater or key == Qt.Qt.Key_Plus): self.iconScale *= 1.25 - self.updateScale( self.iconScale ) + self.updateScale(self.iconScale) - elif (key == Qt.Qt.Key_Period): # '.' key, lower case for '>' zooms in - self.scale(1.1,1.1) + elif (key == Qt.Qt.Key_Period): # '.' key, lower case for '>' zooms in + self.scale(1.1, 1.1) - elif (key == Qt.Qt.Key_Comma): # ',' key, lower case for '<' zooms in - self.scale(1/1.1,1/1.1) + elif (key == Qt.Qt.Key_Comma): # ',' key, lower case for '<' zooms in + self.scale(1 / 1.1, 1 / 1.1) elif (key == Qt.Qt.Key_A): # 'a' fits the view to initial value where iconscale=1 - self.updateScale( 1 ) - self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) - - def updateScale( self, scale ): + self.updateScale(1) + self.fitInView( + self.sceneContainerPt.itemsBoundingRect().x() - 10, + self.sceneContainerPt.itemsBoundingRect().y() - 10, + self.sceneContainerPt.itemsBoundingRect().width() + 20, + self.sceneContainerPt.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) + + def updateScale(self, scale): for item in list(self.sceneContainerPt.items()): - if isinstance(item,KineticsDisplayItem): + if isinstance(item, KineticsDisplayItem): item.refresh(scale) #iteminfo = item.mobj.path+'/info' #xpos,ypos = self.positioninfo(iteminfo) xpos = item.scenePos().x() ypos = item.scenePos().y() - if isinstance(item,ReacItem) or isinstance(item,EnzItem) or isinstance(item,MMEnzItem): - item.setGeometry(xpos,ypos, - item.gobj.boundingRect().width(), - item.gobj.boundingRect().height()) - elif isinstance(item,CplxItem): - item.setGeometry(item.gobj.boundingRect().width()/2,item.gobj.boundingRect().height(), + if isinstance(item, ReacItem) or isinstance( + item, EnzItem) or isinstance(item, MMEnzItem): + item.setGeometry(xpos, ypos, item.gobj.boundingRect().width(), item.gobj.boundingRect().height()) - elif isinstance(item,PoolItem) or isinstance(item, PoolItemCircle): - item.setGeometry(xpos, ypos,item.gobj.boundingRect().width() - +PoolItem.fontMetrics.width(' '), - item.gobj.boundingRect().height()) - item.bg.setRect(0, 0, item.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '), item.gobj.boundingRect().height()) + elif isinstance(item, CplxItem): + item.setGeometry( + item.gobj.boundingRect().width() / 2, + item.gobj.boundingRect().height(), + item.gobj.boundingRect().width(), + item.gobj.boundingRect().height()) + elif isinstance(item, PoolItem) or isinstance(item, PoolItemCircle): + item.setGeometry( + xpos, + ypos, + item.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' '), + item.gobj.boundingRect().height()) + item.bg.setRect( + 0, + 0, + item.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' '), + item.gobj.boundingRect().height()) self.layoutPt.drawLine_arrow(itemignoreZooming=False) self.layoutPt.comptChilrenBoundingRect() - #compartment width is resize according apart from calculating boundingRect + # compartment width is resize according apart from calculating boundingRect # for k, v in self.layoutPt.qGraCompt.items(): # rectcompt = v.childrenBoundingRect() # comptPen = v.pen() @@ -781,24 +852,36 @@ def updateScale( self, scale ): # comptPen.setWidth(comptWidth) # v.setPen(comptPen) # v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,(rectcompt.width()+2*comptWidth),(rectcompt.height()+2*comptWidth)) - + def moveSelections(self): self.setCursor(Qt.Qt.CrossCursor) self.move = True return - + def GrVfitinView(self): - #print " here in GrVfitinView" + # print " here in GrVfitinView" itemignoreZooming = False self.layoutPt.updateItemTransformationMode(itemignoreZooming) - self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) + self.fitInView( + self.sceneContainerPt.itemsBoundingRect().x() - 10, + self.sceneContainerPt.itemsBoundingRect().y() - 10, + self.sceneContainerPt.itemsBoundingRect().width() + 20, + self.sceneContainerPt.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) self.layoutPt.drawLine_arrow(itemignoreZooming=False) - def deleteSelections(self,x0,y0,x1,y1): - if( x1-x0 > 0 and y1-y0 >0): - self.rubberbandlist = self.sceneContainerPt.items(self.mapToScene(QtCore.QRect(x0, y0, x1 - x0, y1 - y0)).boundingRect(), Qt.Qt.IntersectsItemShape) + def deleteSelections(self, x0, y0, x1, y1): + if(x1 - x0 > 0 and y1 - y0 > 0): + self.rubberbandlist = self.sceneContainerPt.items( + self.mapToScene( + QtCore.QRect( + x0, + y0, + x1 - x0, + y1 - y0)).boundingRect(), + Qt.Qt.IntersectsItemShape) for unselectitem in self.rubberbandlist: - if unselectitem.isSelected() == True: + if unselectitem.isSelected(): unselectitem.setSelected(0) self.deleteObj(self.rubberbandlist) # deleteSolver(self.layoutPt.modelRoot) @@ -820,140 +903,159 @@ def deleteSelections(self,x0,y0,x1,y1): # self.layoutPt.plugin.view.getCentralWidget().plotWidgetContainer.plotAllData() # self.deleteItem(item) self.selections = [] - def deleteObj(self,item): + + def deleteObj(self, item): self.rubberbandlist = item deleteSolver(self.layoutPt.modelRoot) for item in (qgraphicsitem for qgraphicsitem in self.rubberbandlist): - #First Loop to remove all the enz b'cos if parent (which is a Pool) is removed, - #then it will created problem at qgraphicalitem not having parent. - #So first delete enz and then delete pool - if isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,CplxItem): - self.deleteItem(item) + # First Loop to remove all the enz b'cos if parent (which is a Pool) is removed, + # then it will created problem at qgraphicalitem not having parent. + # So first delete enz and then delete pool + if isinstance(item, MMEnzItem) or isinstance( + item, EnzItem) or isinstance(item, CplxItem): + self.deleteItem(item) for item in (qgraphicsitem for qgraphicsitem in self.rubberbandlist): - if not (isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,CplxItem)): - if isinstance(item,PoolItem): - plot = moose.wildcardFind(self.layoutPt.modelRoot+'/data/graph#/#') + if not (isinstance(item, MMEnzItem) or isinstance( + item, EnzItem) or isinstance(item, CplxItem)): + if isinstance(item, PoolItem): + plot = moose.wildcardFind( + self.layoutPt.modelRoot + '/data/graph#/#') for p in plot: if len(p.neighbors['requestOut']): - if item.mobj.path == moose.element(p.neighbors['requestOut'][0]).path: + if item.mobj.path == moose.element( + p.neighbors['requestOut'][0]).path: p.tick = -1 moose.delete(p) self.layoutPt.plugin.view.getCentralWidget().plotWidgetContainer.plotAllData() self.deleteItem(item) - def deleteObject2line(self,qpolygonline,src,des,endt): + def deleteObject2line(self, qpolygonline, src, des, endt): object2lineInfo = self.layoutPt.object2line[des] if len(object2lineInfo) == 1: - for polygon,objdes,endtype,numL in object2lineInfo: + for polygon, objdes, endtype, numL in object2lineInfo: if polygon == qpolygonline and objdes == src and endtype == endt: del(self.layoutPt.object2line[des]) else: - print(" check this condition when is len is single and else condition",qpolygonline, objdes,endtype) + print( + " check this condition when is len is single and else condition", + qpolygonline, + objdes, + endtype) else: n = 0 - for polygon,objdes,endtype,numL in object2lineInfo: + for polygon, objdes, endtype, numL in object2lineInfo: if polygon == qpolygonline and objdes == src and endtype == endt: - tup = object2lineInfo[:n]+object2lineInfo[n+1:] + tup = object2lineInfo[:n] + object2lineInfo[n + 1:] self.layoutPt.object2line[des] = tup - #d[keyNo].append((a,b,c)) + # d[keyNo].append((a,b,c)) else: - n = n+1 - - def deleteConnection(self,item): - #Delete moose connection, i.e one can click on connection arrow and delete the connection + n = n + 1 + + def deleteConnection(self, item): + # Delete moose connection, i.e one can click on connection arrow and + # delete the connection deleteSolver(self.layoutPt.modelRoot) msgIdforDeleting = " " - if isinstance(item,QtGui.QGraphicsPolygonItem): + if isinstance(item, QtGui.QGraphicsPolygonItem): src = self.layoutPt.lineItem_dict[item] lineItem_value = self.layoutPt.lineItem_dict[item] i = iter(lineItem_value) - source = next(i) - destination = next(i) + source = next(i) + destination = next(i) endt = next(i) numl = next(i) - self.deleteObject2line(item,source,destination,endt) - self.deleteObject2line(item,destination,source,endt) + self.deleteObject2line(item, source, destination, endt) + self.deleteObject2line(item, destination, source, endt) try: del self.layoutPt.lineItem_dict[item] except KeyError: pass - srcZero = [k for k, v in self.layoutPt.mooseId_GObj.items() if v == src[0]] - srcOne = [k for k, v in self.layoutPt.mooseId_GObj.items() if v == src[1]] - - if isinstance (moose.element(srcZero[0]),moose.MMenz): - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + srcZero = [k for k, v in self.layoutPt.mooseId_GObj.items() if v == src[ + 0]] + srcOne = [k for k, v in self.layoutPt.mooseId_GObj.items() if v == src[ + 1]] + + if isinstance(moose.element(srcZero[0]), moose.MMenz): + gItem = self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] # This block is done b'cos for MMenz while loaded from ReadKKit, the msg # from parent pool to Enz is different as compared to direct model building. - # if ReadKKit get the msg from parent Pool, else from MMenz itself. + # if ReadKKit get the msg from parent Pool, else from MMenz + # itself. # Rules: If some one tries to remove connection parent Pool to Enz # then delete entire enz itself, this is True for enz and mmenz for msg in srcZero[0].msgIn: - if moose.element(msg.e1.path) == moose.element(srcOne[0].path): + if moose.element(msg.e1.path) == moose.element( + srcOne[0].path): if src[2] == "t": if msg.destFieldsOnE2[0] == "enzDest": # delete indivial msg if later adding parent is possible - # msgIdforDeleting = msg + # msgIdforDeleting = msg # moose.delete(msgIdforDeleting) - # self.sceneContainerPt.removeItem(item) + # self.sceneContainerPt.removeItem(item) self.deleteItem(gItem) return else: - self.getMsgId(src,srcZero,srcOne,item) + self.getMsgId(src, srcZero, srcOne, item) moose.delete(msgIdforDeleting) self.sceneContainerPt.removeItem(item) - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + setupItem( + self.modelRoot, self.layoutPt.srcdesConnection) for msg in moose.element(srcZero[0].parent).msgIn: - if moose.element(msg.e2.path) == moose.element(srcZero[0].parent.path): + if moose.element(msg.e2.path) == moose.element( + srcZero[0].parent.path): if src[2] == 't': if len(msg.destFieldsOnE1) > 0: if msg.destFieldsOnE1[0] == "enzDest": # delete indivial msg if later adding parent is possible - # msgIdforDeleting = msg + # msgIdforDeleting = msg # moose.delete(msgIdforDeleting) # self.sceneContainerPt.removeItem(item) self.deleteItem(gItem) return else: - self.getMsgId(src,srcZero,srcOne,item) - - elif isinstance (moose.element(srcZero[0]),moose.Enz): - self.getMsgId(src,srcZero,srcOne,item) + self.getMsgId(src, srcZero, srcOne, item) - elif isinstance(moose.element(srcZero[0]),moose.Function): - v = moose.Variable(srcZero[0].path+'/x') + elif isinstance(moose.element(srcZero[0]), moose.Enz): + self.getMsgId(src, srcZero, srcOne, item) + + elif isinstance(moose.element(srcZero[0]), moose.Function): + v = moose.Variable(srcZero[0].path + '/x') found = False for msg in v.msgIn: - if moose.element(msg.e1.path) == moose.element(srcOne[0].path): + if moose.element(msg.e1.path) == moose.element( + srcOne[0].path): if src[2] == "sts": if msg.destFieldsOnE2[0] == "input": msgIdforDeleting = msg - self.deleteSceneObj(msgIdforDeleting,item) + self.deleteSceneObj(msgIdforDeleting, item) found = True if not found: for msg in srcZero[0].msgOut: - if moose.element(msg.e2.path) == moose.element(srcOne[0].path): + if moose.element(msg.e2.path) == moose.element( + srcOne[0].path): if src[2] == "stp": if msg.destFieldsOnE2[0] == "setN": - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + gItem = self.layoutPt.mooseId_GObj[ + moose.element(srcZero[0])] self.deleteItem(gItem) - self.deleteSceneObj(msg,item) + self.deleteSceneObj(msg, item) return - elif msg.destFieldsOnE2[0] == "setNumKf" or msg.destFieldsOnE2[0] == "setConcInit" or msg.destFieldsOnE2[0]=="increment": + elif msg.destFieldsOnE2[0] == "setNumKf" or msg.destFieldsOnE2[0] == "setConcInit" or msg.destFieldsOnE2[0] == "increment": msgIdforDeleting = msg - self.deleteSceneObj(msgIdforDeleting,item) - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + self.deleteSceneObj(msgIdforDeleting, item) + gItem = self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] self.deleteItem(gItem) - + else: - self.getMsgId(src,srcZero,srcOne,item) + self.getMsgId(src, srcZero, srcOne, item) - def deleteSceneObj(self,msgIdforDeleting,item): + def deleteSceneObj(self, msgIdforDeleting, item): moose.delete(msgIdforDeleting) self.sceneContainerPt.removeItem(item) - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + setupItem(self.modelRoot, self.layoutPt.srcdesConnection) - def getMsgId(self,src,srcZero,srcOne,item): + def getMsgId(self, src, srcZero, srcOne, item): for msg in srcZero[0].msgOut: msgIdforDeleting = " " if moose.element(msg.e2.path) == moose.element(srcOne[0].path): @@ -961,37 +1063,38 @@ def getMsgId(self,src,srcZero,srcOne,item): # substrate connection for R,E if msg.srcFieldsOnE1[0] == "subOut": msgIdforDeleting = msg - self.deleteSceneObj(msgIdforDeleting,item) + self.deleteSceneObj(msgIdforDeleting, item) return elif src[2] == 'p': # product connection for R,E if msg.srcFieldsOnE1[0] == "prdOut": msgIdforDeleting = msg - self.deleteSceneObj(msgIdforDeleting,item) - return + self.deleteSceneObj(msgIdforDeleting, item) + return elif src[2] == 't': if msg.srcFieldsOnE1[0] == "enzOut": - gItem =self.layoutPt.mooseId_GObj[moose.element(srcZero[0])] + gItem = self.layoutPt.mooseId_GObj[ + moose.element(srcZero[0])] self.deleteItem(gItem) return elif src[2] == 'tab': - #stimulation Table connection + # stimulation Table connection if msg.srcFieldsOnE1[0] == "output": msgIdforDeleting = msg - self.deleteSceneObj(msgIdforDeleting,item) - return + self.deleteSceneObj(msgIdforDeleting, item) + return - def deleteItem(self,item): - #delete Items + def deleteItem(self, item): + # delete Items self.layoutPt.plugin.mainWindow.objectEditSlot('/', False) - if isinstance(item,KineticsDisplayItem): + if isinstance(item, KineticsDisplayItem): if moose.exists(item.mobj.path): # if isinstance(item.mobj,Function): # print " inside the function" # for items in moose.element(item.mobj.path).children: # print items - if isinstance(item,PoolItem) or isinstance(item,BufPool): + if isinstance(item, PoolItem) or isinstance(item, BufPool): # pool is item is removed, then check is made if its a parent to any # enz if 'yes', then enz and its connection are removed before # removing Pool @@ -1004,25 +1107,30 @@ def deleteItem(self,item): # #deleting the connection which is connected to Enz # self.sceneContainerPt.removeItem(l[0]) # moose.delete(items) - # self.sceneContainerPt.removeItem(gItem) + # self.sceneContainerPt.removeItem(gItem) if isinstance(moose.element(items), EnzBase): - gItem = self.layoutPt.mooseId_GObj[moose.element(items)] + gItem = self.layoutPt.mooseId_GObj[ + moose.element(items)] for l in self.layoutPt.object2line[gItem]: # Need to check if the connection on the scene exist # or its removed from some other means - # E.g Enz to pool and pool to Enz is connected, - # when enz is removed the connection is removed, - # but when pool tried to remove then qgraphicscene says + # E.g Enz to pool and pool to Enz is connected, + # when enz is removed the connection is removed, + # but when pool tried to remove then qgraphicscene says # "item scene is different from this scene" - sceneItems = list(self.sceneContainerPt.items()) + sceneItems = list( + self.sceneContainerPt.items()) if l[0] in sceneItems: - #deleting the connection which is connected to Enz + # deleting the connection which is + # connected to Enz self.sceneContainerPt.removeItem(l[0]) moose.delete(items) self.sceneContainerPt.removeItem(gItem) - #If pool/bufpool is input to a function and if pool/bufpool is removed then function is also removed. + # If pool/bufpool is input to a function and if + # pool/bufpool is removed then function is also removed. for msg in moose.element(item.mobj.path).msgOut: - if (moose.element(msg.e2.path).className == "Variable" and msg.destFieldsOnE2[0]=="input"): + if (moose.element(msg.e2.path).className == + "Variable" and msg.destFieldsOnE2[0] == "input"): funcp = moose.element(msg.e2.path).parent pool = moose.element(funcp).parent self.deleteItem(self.layoutPt.mooseId_GObj[funcp]) @@ -1034,24 +1142,23 @@ def deleteItem(self,item): self.sceneContainerPt.removeItem(item) moose.delete(item.mobj) for key, value in list(self.layoutPt.object2line.items()): - self.layoutPt.object2line[key] = [tup for tup in value if tup[1] != item] + self.layoutPt.object2line[key] = [ + tup for tup in value if tup[1] != item] self.layoutPt.getMooseObj() - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + setupItem(self.modelRoot, self.layoutPt.srcdesConnection) def zoomSelections(self, x0, y0, x1, y1): p0 = self.mapToScene(x0, y0) p1 = self.mapToScene(x1, y1) - #print QtCore.QRectF(p0, p1) + # print QtCore.QRectF(p0, p1) self.fitInView(QtCore.QRectF(p0, p1), Qt.Qt.KeepAspectRatio) self.deselectSelections() return - - def wheelEvent(self,event): + def wheelEvent(self, event): factor = 1.41 ** (event.delta() / 240.0) self.scale(factor, factor) - def dragEnterEvent(self, event): if self.viewBaseType == "editorView": if event.mimeData().hasFormat('text/plain'): @@ -1074,105 +1181,147 @@ def eventFilter(self, source, event): pass def dropEvent(self, event): - """Insert an element of the specified class in drop location""" - """ Pool and reaction should have compartment as parent, dropping outside the compartment is not allowed """ - """ Enz should be droped on the PoolItem which inturn will be under compartment""" + """Insert an element of the specified class in drop location + + Pool and reaction should have compartment as parent, dropping outside + the compartment is not allowed. + + Enz should be droped on the PoolItem which inturn will be under compartment + + """ if self.viewBaseType == "editorView": if not event.mimeData().hasFormat('text/plain'): + _logger.warn("MIMEData is not text/plain. Doing nothing ...") return event_pos = event.pos() string = str(event.mimeData().text()) - createObj(self.viewBaseType,self,self.modelRoot,string,event_pos,self.layoutPt) + createObj( + self.viewBaseType, + self, + self.modelRoot, + string, + event_pos, + self.layoutPt + ) + # Check if view needs to rescaled to fit the dropped item. + self.layoutPt.rescaleView( ) + else: + _logger.debug("Not is editorView ") + return - def populate_srcdes(self,src,des): + def populate_srcdes(self, src, des): self.modelRoot = self.layoutPt.modelRoot callsetupItem = True - #print " populate_srcdes ",src,des - srcClass = moose.element(src).className + # print " populate_srcdes ",src,des + srcClass = moose.element(src).className if 'Zombie' in srcClass: srcClass = srcClass.split('Zombie')[1] desClass = moose.element(des).className if 'Zombie' in desClass: desClass = desClass.split('Zombie')[1] - if ( isinstance(moose.element(src),PoolBase) and ( (isinstance(moose.element(des),ReacBase) ) or isinstance(moose.element(des),EnzBase) )): - #If one to tries to connect pool to Reac/Enz (substrate to Reac/Enz), check if already (product to Reac/Enz) exist. - #If exist then connection not allowed one need to delete the msg and try connecting back. + if (isinstance(moose.element(src), PoolBase) and ((isinstance( + moose.element(des), ReacBase)) or isinstance(moose.element(des), EnzBase))): + # If one to tries to connect pool to Reac/Enz (substrate to Reac/Enz), check if already (product to Reac/Enz) exist. + # If exist then connection not allowed one need to delete the msg + # and try connecting back. found = False for msg in des.msgOut: if moose.element(msg.e2.path) == src: if msg.srcFieldsOnE1[0] == "prdOut": - found = True - if found == False: + found = True + if not found: # moose.connect(src, 'reac', des, 'sub', 'OneToOne') moose.connect(des, 'sub', src, 'reac', 'OneToOne') else: - srcdesString = srcClass+' is already connected as '+ '\'Product\''+' to '+desClass +' \n \nIf you wish to connect this object then first delete the exist connection' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) - - elif (isinstance (moose.element(src),PoolBase) and (isinstance(moose.element(des),Function))): + srcdesString = srcClass + ' is already connected as ' + '\'Product\'' + ' to ' + desClass + \ + ' \n \nIf you wish to connect this object then first delete the exist connection' + QtGui.QMessageBox.information( + None, 'Connection Not possible', '{srcdesString}'.format( + srcdesString=srcdesString), QtGui.QMessageBox.Ok) + + elif (isinstance(moose.element(src), PoolBase) and (isinstance(moose.element(des), Function))): numVariables = des.numVars expr = "" - expr = (des.expr+'+'+'x'+str(numVariables)) + expr = (des.expr + '+' + 'x' + str(numVariables)) expr = expr.lstrip("0 +") - expr = expr.replace(" ","") + expr = expr.replace(" ", "") des.expr = expr - moose.connect( src, 'nOut', des.x[numVariables], 'input' ) - - elif ( isinstance(moose.element(src),Function) and (moose.element(des).className=="Pool") or - isinstance(moose.element(src),ZombieFunction) and (moose.element(des).className=="ZombiePool") - ): - if ((element(des).parent).className != 'Enz'): - #moose.connect(src, 'valueOut', des, 'increment', 'OneToOne') - found = False - if len(moose.element(src).neighbors["valueOut"]): - for psl in moose.element(src).neighbors["valueOut"]: - if moose.element(psl) == moose.element(des): - found = True - if found == False: - moose.connect(src, 'valueOut', des, 'setN', 'OneToOne') - else: - srcdesString = '\"'+moose.element(src).name+'\" is already connected to \"'+ moose.element(des).name +'\" \n' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + moose.connect(src, 'nOut', des.x[numVariables], 'input') - + elif (isinstance(moose.element(src), Function) and (moose.element(des).className == "Pool") or + isinstance(moose.element(src), ZombieFunction) and ( + moose.element(des).className == "ZombiePool") + ): + if ((element(des).parent).className != 'Enz'): + #moose.connect(src, 'valueOut', des, 'increment', 'OneToOne') + found = False + if len(moose.element(src).neighbors["valueOut"]): + for psl in moose.element(src).neighbors["valueOut"]: + if moose.element(psl) == moose.element(des): + found = True + if not found: + moose.connect(src, 'valueOut', des, 'setN', 'OneToOne') else: - srcdesString = element(src).className+'-- EnzCplx' - QtGui.QMessageBox.information(None,'Connection Not possible','\'{srcdesString}\' not allowed to connect'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) - callsetupItem = False - elif ( isinstance(moose.element(src),Function) and (moose.element(des).className=="BufPool") or - isinstance(moose.element(src),ZombieFunction) and (moose.element(des).className=="ZombieBufPool") - ): - moose.connect(src, 'valueOut', des, 'setN', 'OneToOne') - elif ( isinstance(moose.element(src),Function) and (isinstance(moose.element(des),ReacBase) ) or - isinstance(moose.element(src),ZombieFunction) and (moose.element(des).className=="ZombieReac") - ): - moose.connect(src, 'valueOut', des, 'setNumKf', 'OneToOne') - elif (((isinstance(moose.element(src),ReacBase))or (isinstance(moose.element(src),EnzBase))) and (isinstance(moose.element(des),PoolBase))): + srcdesString = '\"' + \ + moose.element( + src).name + '\" is already connected to \"' + moose.element(des).name + '\" \n' + QtGui.QMessageBox.information( + None, 'Connection Not possible', '{srcdesString}'.format( + srcdesString=srcdesString), QtGui.QMessageBox.Ok) + + else: + srcdesString = element(src).className + '-- EnzCplx' + QtGui.QMessageBox.information( + None, + 'Connection Not possible', + '\'{srcdesString}\' not allowed to connect'.format( + srcdesString=srcdesString), + QtGui.QMessageBox.Ok) + callsetupItem = False + elif (isinstance(moose.element(src), Function) and (moose.element(des).className == "BufPool") or + isinstance(moose.element(src), ZombieFunction) and ( + moose.element(des).className == "ZombieBufPool") + ): + moose.connect(src, 'valueOut', des, 'setN', 'OneToOne') + elif (isinstance(moose.element(src), Function) and (isinstance(moose.element(des), ReacBase)) or + isinstance(moose.element(src), ZombieFunction) and ( + moose.element(des).className == "ZombieReac") + ): + moose.connect(src, 'valueOut', des, 'setNumKf', 'OneToOne') + elif (((isinstance(moose.element(src), ReacBase))or (isinstance(moose.element(src), EnzBase))) and (isinstance(moose.element(des), PoolBase))): found = False for msg in src.msgOut: if moose.element(msg.e2.path) == des: if msg.srcFieldsOnE1[0] == "subOut": - found = True - if found == False: + found = True + if not found: #moose.connect(src, 'prd', des, 'reac', 'OneToOne') - moose.connect(src, 'prd', des, 'reac', 'OneToOne') + moose.connect(src, 'prd', des, 'reac', 'OneToOne') else: - srcdesString = desClass+' is already connected as '+'\'Substrate\''+' to '+srcClass +' \n \nIf you wish to connect this object then first delete the exist connection' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + srcdesString = desClass + ' is already connected as ' + '\'Substrate\'' + ' to ' + \ + srcClass + ' \n \nIf you wish to connect this object then first delete the exist connection' + QtGui.QMessageBox.information( + None, 'Connection Not possible', '{srcdesString}'.format( + srcdesString=srcdesString), QtGui.QMessageBox.Ok) # elif( isinstance(moose.element(src),ReacBase) and (isinstance(moose.element(des),PoolBase) ) ): # moose.connect(src, 'prd', des, 'reac', 'OneToOne') # elif( isinstance(moose.element(src),EnzBase) and (isinstance(moose.element(des),PoolBase) ) ): # moose.connect(src, 'prd', des, 'reac', 'OneToOne') - elif( isinstance(moose.element(src),StimulusTable) and (isinstance(moose.element(des),PoolBase) ) ): + elif(isinstance(moose.element(src), StimulusTable) and (isinstance(moose.element(des), PoolBase))): moose.connect(src, 'output', des, 'setConcInit', 'OneToOne') else: srcString = moose.element(src).className desString = moose.element(des).className - srcdesString = srcString+'--'+desString - QtGui.QMessageBox.information(None,'Connection Not possible','\'{srcdesString}\' not allowed to connect'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + srcdesString = srcString + '--' + desString + QtGui.QMessageBox.information( + None, + 'Connection Not possible', + '\'{srcdesString}\' not allowed to connect'.format( + srcdesString=srcdesString), + QtGui.QMessageBox.Ok) callsetupItem = False - + if callsetupItem: self.layoutPt.getMooseObj() - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + setupItem(self.modelRoot, self.layoutPt.srcdesConnection) self.layoutPt.drawLine_arrow(False) diff --git a/mgui/plugins/modelBuild.py b/mgui/plugins/modelBuild.py index fce64d5..542e808 100644 --- a/mgui/plugins/modelBuild.py +++ b/mgui/plugins/modelBuild.py @@ -1,263 +1,347 @@ -import moose -from .kkitQGraphics import * -from .kkitOrdinateUtil import * -from .kkitUtil import * import PyQt4 -from .setsolver import * +import moose + +from mgui.plugins.kkitQGraphics import * +from mgui.plugins.kkitOrdinateUtil import * +from mgui.plugins.kkitUtil import * +from mgui.plugins.setsolver import * + +from mgui.config import _logger + def updateCompartmentSize(qGraCompt): - #childBoundingRect = qGraCompt.childrenBoundingRect() childBoundingRect = calculateChildBoundingRect(qGraCompt) comptBoundingRect = qGraCompt.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = qGraCompt.pen() - comptWidth = 1 + comptWidth = 1 comptPen.setWidth(comptWidth) qGraCompt.setPen(comptPen) if not comptBoundingRect.contains(childBoundingRect): - qGraCompt.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) - -# def checkCreate(string,num,itemAt,qGraCompt,modelRoot,scene,pos,posf,view,qGIMob): -def checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt): - # The variable 'compt' will be empty when dropping cubeMesh,cyclMesh, but rest it shd be - # compartment - # if modelpath.find('/',1) > -1: - # modelRoot = modelpath[0:modelpath.find('/',1)] - # else: - # modelRoot = modelpath - print("28 ",modelpath) - if moose.exists(modelpath+'/info'): - mType = moose.Annotator((moose.element(modelpath+'/info'))).modeltype - print(" 1 event_pos ",event_pos) + qGraCompt.setRect(rectcompt.x() - comptWidth, + rectcompt.y() - comptWidth, + rectcompt.width() + (comptWidth * 2), + rectcompt.height() + (comptWidth * 2)) + + +def checkCreate( + scene, + view, + modelpath, + mobj, + string, + ret_string, + num, + event_pos, + layoutPt): + """ + Check each element created by drag and drop. + """ + + _logger.info("28 %s " % modelpath) + if moose.exists(modelpath + '/info'): + mType = moose.Annotator((moose.element(modelpath + '/info'))).modeltype + _logger.info(" 1 event_pos %s" % event_pos) itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) - print("2 ",itemAtView) + _logger.info("2 %s" % itemAtView) pos = view.mapToScene(event_pos) - print(" 3 ",pos) + _logger.info(" 3 %s " % pos) modelpath = moose.element(modelpath) - print(" model path @34 ",modelpath) + _logger.info(" model path @34 %s " % modelpath) + if num: - string_num = ret_string+str(num) + string_num = ret_string + str(num) else: string_num = ret_string + if string == "CubeMesh" or string == "CylMesh": if string == "CylMesh": - mobj = moose.CylMesh(modelpath.path+'/'+string_num) - else: - mobj = moose.CubeMesh(modelpath.path+'/'+string_num) - + mobj = moose.CylMesh(modelpath.path + '/' + string_num) + else: + mobj = moose.CubeMesh(modelpath.path + '/' + string_num) + mobj.volume = 1e-15 - mesh = moose.element(mobj.path+'/mesh') - qGItem = ComptItem(scene,pos.toPoint().x(),pos.toPoint().y(),100,100,mobj) - qGItem.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), 1, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + mesh = moose.element(mobj.path + '/mesh') + qGItem = ComptItem( + scene, + pos.toPoint().x(), + pos.toPoint().y(), + 90, + 90, + mobj + ) + qGItem.setPen( + QtGui.QPen( + Qt.QColor( 66, 66, 66, 100), + 1, + Qt.Qt.SolidLine, + Qt.Qt.RoundCap, + Qt.Qt.RoundJoin) + ) view.sceneContainerPt.addItem(qGItem) - qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),layoutPt.positionChange1) - qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),layoutPt.objectEditSlot) + qGItem.cmptEmitter.connect( + qGItem.cmptEmitter, + QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"), + layoutPt.positionChange1) + qGItem.cmptEmitter.connect( + qGItem.cmptEmitter, + QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"), + layoutPt.objectEditSlot) compartment = qGItem - layoutPt.qGraCompt[mobj]= qGItem - view.emit(QtCore.SIGNAL("dropped"),mobj) - + layoutPt.qGraCompt[mobj] = qGItem + view.emit(QtCore.SIGNAL("dropped"), mobj) + elif string == "Pool" or string == "BufPool": - #getting pos with respect to compartment otherwise if compartment is moved then pos would be wrong + # getting pos with respect to compartment otherwise if compartment is + # moved then pos would be wrong posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() if string == "Pool": - poolObj = moose.Pool(mobj.path+'/'+string_num) + poolObj = moose.Pool(mobj.path + '/' + string_num) else: - poolObj = moose.BufPool(mobj.path+'/'+string_num) - - poolinfo = moose.Annotator(poolObj.path+'/info') - #Compartment's one Pool object is picked to get the font size - - qGItem = PoolItem(poolObj,itemAtView) + poolObj = moose.BufPool(mobj.path + '/' + string_num) + + poolinfo = moose.Annotator(poolObj.path + '/info') + # Compartment's one Pool object is picked to get the font size + + qGItem = PoolItem(poolObj, itemAtView) layoutPt.mooseId_GObj[poolObj] = qGItem posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('green'),bgcolor) + qGItem.setDisplayProperties( + posWrtComp.x(), + posWrtComp.y(), + QtGui.QColor('green'), + bgcolor) poolinfo.color = str(bgcolor.getRgb()) - #if mType == "new_kkit": + # if mType == "new_kkit": poolinfo.x = posWrtComp.x() poolinfo.y = posWrtComp.y() - view.emit(QtCore.SIGNAL("dropped"),poolObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"), poolObj) + setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) poolinfo.x = posWrtComp.x() poolinfo.y = posWrtComp.y() - - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): + + # Dropping is on compartment then update Compart size + if isinstance(mobj, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) - - elif string == "Reac": + + elif string == "Reac": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - reacObj = moose.Reac(mobj.path+'/'+string_num) - reacinfo = moose.Annotator(reacObj.path+'/info') - qGItem = ReacItem(reacObj,itemAtView) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") - #if mType == "new_kkit": + reacObj = moose.Reac(mobj.path + '/' + string_num) + reacinfo = moose.Annotator(reacObj.path + '/info') + qGItem = ReacItem(reacObj, itemAtView) + qGItem.setDisplayProperties( + posWrtComp.x(), posWrtComp.y(), "white", "white") + # if mType == "new_kkit": reacinfo.x = posWrtComp.x() reacinfo.y = posWrtComp.y() layoutPt.mooseId_GObj[reacObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),reacObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"), reacObj) + setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): + # Dropping is on compartment then update Compart size + if isinstance(mobj, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) - elif string == "StimulusTable": + elif string == "StimulusTable": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - tabObj = moose.StimulusTable(mobj.path+'/'+string_num) - tabinfo = moose.Annotator(tabObj.path+'/info') - qGItem = TableItem(tabObj,itemAtView) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('white'),QtGui.QColor('white')) - #if mType == "new_kkit": + tabObj = moose.StimulusTable(mobj.path + '/' + string_num) + tabinfo = moose.Annotator(tabObj.path + '/info') + qGItem = TableItem(tabObj, itemAtView) + qGItem.setDisplayProperties( + posWrtComp.x(), + posWrtComp.y(), + QtGui.QColor('white'), + QtGui.QColor('white')) + # if mType == "new_kkit": tabinfo.x = posWrtComp.x() tabinfo.y = posWrtComp.y() layoutPt.mooseId_GObj[tabObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),tabObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"), tabObj) + setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): + # Dropping is on compartment then update Compart size + if isinstance(mobj, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) elif string == "Function": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - funcObj = moose.Function(mobj.path+'/'+string_num) - funcinfo = moose.Annotator(funcObj.path+'/info') + funcObj = moose.Function(mobj.path + '/' + string_num) + funcinfo = moose.Annotator(funcObj.path + '/info') #moose.connect( funcObj, 'valueOut', mobj ,'setN' ) - poolclass = ["ZombieBufPool","BufPool"] - comptclass = ["CubeMesh","cyclMesh"] + poolclass = ["ZombieBufPool", "BufPool"] + comptclass = ["CubeMesh", "cyclMesh"] if mobj.className in poolclass: funcParent = layoutPt.mooseId_GObj[element(mobj.path)] elif mobj.className in comptclass: funcParent = layoutPt.qGraCompt[moose.element(mobj)] posWrtComp = funcParent.mapFromScene(pos).toPoint() #posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - qGItem = FuncItem(funcObj,funcParent) - #print " function ", posWrtComp.x(),posWrtComp.y() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('red'),QtGui.QColor('green')) + qGItem = FuncItem(funcObj, funcParent) + # print " function ", posWrtComp.x(),posWrtComp.y() + qGItem.setDisplayProperties( + posWrtComp.x(), + posWrtComp.y(), + QtGui.QColor('red'), + QtGui.QColor('green')) layoutPt.mooseId_GObj[funcObj] = qGItem - #if mType == "new_kkit": + # if mType == "new_kkit": funcinfo.x = posWrtComp.x() funcinfo.y = posWrtComp.y() - view.emit(QtCore.SIGNAL("dropped"),funcObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"), funcObj) + setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size + # Dropping is on compartment then update Compart size mooseCmpt = findCompartment(mobj) - if isinstance(mooseCmpt,moose.ChemCompt): + if isinstance(mooseCmpt, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mooseCmpt)] updateCompartmentSize(compt) - elif string == "Enz" or string == "MMenz": - #If 2 enz has same pool parent, then pos of the 2nd enz shd be displaced by some position, need to check how to deal with it + elif string == "Enz" or string == "MMenz": + # If 2 enz has same pool parent, then pos of the 2nd enz shd be + # displaced by some position, need to check how to deal with it posWrtComp = pos enzPool = layoutPt.mooseId_GObj[mobj] if ((mobj.parent).className == "Enz"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent and not Enzyme Complex'.format(newString =string),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, + 'Drop Not possible', + '\'{newString}\' has to have Pool as its parent and not Enzyme Complex'.format( + newString=string), + QtGui.QMessageBox.Ok) return else: enzparent = findCompartment(mobj) parentcompt = layoutPt.qGraCompt[enzparent] if string == "Enz": - enzObj = moose.Enz(moose.element(mobj).path+'/'+string_num) - enzinfo = moose.Annotator(enzObj.path+'/info') - moose.connect( enzObj, 'enz', mobj, 'reac' ) - qGItem = EnzItem(enzObj,parentcompt) + enzObj = moose.Enz(moose.element(mobj).path + '/' + string_num) + enzinfo = moose.Annotator(enzObj.path + '/info') + moose.connect(enzObj, 'enz', mobj, 'reac') + qGItem = EnzItem(enzObj, parentcompt) layoutPt.mooseId_GObj[enzObj] = qGItem posWrtComp = pos bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-40,QtGui.QColor('green'),bgcolor) - #if mType == "new_kkit": + qGItem.setDisplayProperties( + posWrtComp.x(), + posWrtComp.y() - 40, + QtGui.QColor('green'), + bgcolor) + # if mType == "new_kkit": enzinfo.x = posWrtComp.x() enzinfo.y = posWrtComp.y() - + enzinfo.color = str(bgcolor.name()) e = moose.Annotator(enzinfo) #e.x = posWrtComp.x() #e.y = posWrtComp.y() - Enz_cplx = enzObj.path+'/'+string_num+'_cplx'; + Enz_cplx = enzObj.path + '/' + string_num + '_cplx' cplxItem = moose.Pool(Enz_cplx) - cplxinfo = moose.Annotator(cplxItem.path+'/info') + cplxinfo = moose.Annotator(cplxItem.path + '/info') qGEnz = layoutPt.mooseId_GObj[enzObj] - qGItem = CplxItem(cplxItem,qGEnz) + qGItem = CplxItem(cplxItem, qGEnz) layoutPt.mooseId_GObj[cplxItem] = qGItem enzboundingRect = qGEnz.boundingRect() - moose.connect( enzObj, 'cplx', cplxItem, 'reac' ) - qGItem.setDisplayProperties(enzboundingRect.height()/2,enzboundingRect.height()-40,QtGui.QColor('white'),QtGui.QColor('white')) - cplxinfo.x = enzboundingRect.height()/2 - cplxinfo.y = enzboundingRect.height()-60 - view.emit(QtCore.SIGNAL("dropped"),enzObj) + moose.connect(enzObj, 'cplx', cplxItem, 'reac') + qGItem.setDisplayProperties( + enzboundingRect.height() / 2, + enzboundingRect.height() - 40, + QtGui.QColor('white'), + QtGui.QColor('white')) + cplxinfo.x = enzboundingRect.height() / 2 + cplxinfo.y = enzboundingRect.height() - 60 + view.emit(QtCore.SIGNAL("dropped"), enzObj) else: - enzObj = moose.MMenz(mobj.path+'/'+string_num) - enzinfo = moose.Annotator(enzObj.path+'/info') - moose.connect(mobj,"nOut",enzObj,"enzDest") - qGItem = MMEnzItem(enzObj,parentcompt) + enzObj = moose.MMenz(mobj.path + '/' + string_num) + enzinfo = moose.Annotator(enzObj.path + '/info') + moose.connect(mobj, "nOut", enzObj, "enzDest") + qGItem = MMEnzItem(enzObj, parentcompt) posWrtComp = pos bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-30,QtGui.QColor('green'),bgcolor) + qGItem.setDisplayProperties( + posWrtComp.x(), + posWrtComp.y() - 30, + QtGui.QColor('green'), + bgcolor) enzinfo.x = posWrtComp.x() enzinfo.y = posWrtComp.y() enzinfo.color = str(bgcolor.name()) layoutPt.mooseId_GObj[enzObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),enzObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"), enzObj) + setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(enzparent,moose.ChemCompt): + # Dropping is on compartment then update Compart size + if isinstance(enzparent, moose.ChemCompt): updateCompartmentSize(parentcompt) if view.iconScale != 1: view.updateScale(view.iconScale) -def createObj(scene,view,modelpath,string,pos,layoutPt): + +def createObj(scene, view, modelpath, string, pos, layoutPt): event_pos = pos num = 0 ret_string = " " pos = view.mapToScene(event_pos) itemAt = view.sceneContainerPt.itemAt(pos) - chemMesh = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') + chemMesh = moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') deleteSolver(modelpath) mobj = "" - if itemAt != None: + if itemAt is not None: itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) itemClass = type(itemAtView).__name__ - if ( itemClass == 'QGraphicsRectItem'): + if (itemClass == 'QGraphicsRectItem'): mobj = itemAtView.parentItem().mobj elif(itemClass == 'QGraphicsSvgItem'): mobj = itemAtView.parent().mobj else: mobj = itemAtView.mobj if string == "CubeMesh" or string == "CylMesh": - ret_string,num = findUniqId(moose.element(modelpath),"Compartment",0) - comptexist = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') + ret_string, num = findUniqId( + moose.element(modelpath), "Compartment", 0) + comptexist = moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') if not len(comptexist): - if itemAt != None: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) + if itemAt is not None: + QtGui.QMessageBox.information( + None, + 'Drop Not possible', + '\'{newString}\' currently single compartment model building is allowed'.format( + newString=string), + QtGui.QMessageBox.Ok) return else: mobj = moose.element(modelpath) else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, + 'Drop Not possible', + '\'{newString}\' currently single compartment model building is allowed'.format( + newString=string), + QtGui.QMessageBox.Ok) return - + elif string == "Pool" or string == "BufPool" or string == "Reac" or string == "StimulusTable": - if itemAt == None: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have compartment as its parent'.format(newString =string),QtGui.QMessageBox.Ok) + if itemAt is None: + QtGui.QMessageBox.information( + None, + 'Drop Not possible', + '\'{newString}\' has to have compartment as its parent'.format( + newString=string), + QtGui.QMessageBox.Ok) return else: mobj = findCompartment(mobj) - ret_string,num = findUniqId(mobj,string,num) + ret_string, num = findUniqId(mobj, string, num) elif string == "Function": mobj = findCompartment(mobj) - ret_string,num = findUniqId(mobj,string,num) + ret_string, num = findUniqId(mobj, string, num) ''' if itemAt != None: - if ((mobj).className != "BufPool"): + if ((mobj).className != "BufPool"): QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have BufPool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) return else: @@ -267,34 +351,55 @@ def createObj(scene,view,modelpath,string,pos,layoutPt): return ''' elif string == "Enz" or string == "MMenz": - if itemAt != None: - if ((mobj).className != "Pool" and (mobj).className != "BufPool"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) + if itemAt is not None: + if ((mobj).className != "Pool" and (mobj).className != "BufPool"): + QtGui.QMessageBox.information( + None, + 'Drop Not possible', + '\'{newString}\' has to have Pool as its parent'.format( + newString=string), + QtGui.QMessageBox.Ok) return else: - ret_string,num = findUniqId(mobj,string,num) + ret_string, num = findUniqId(mobj, string, num) else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, + 'Drop Not possible', + '\'{newString}\' has to have Pool as its parent'.format( + newString=string), + QtGui.QMessageBox.Ok) return - + if ret_string != " ": - checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt) + checkCreate( + scene, + view, + modelpath, + mobj, + string, + ret_string, + num, + event_pos, + layoutPt) + -def findUniqId(mobj,string,num): +def findUniqId(mobj, string, num): if num == 0: - path = mobj.path+'/'+string; + path = mobj.path + '/' + string else: - path = mobj.path+'/'+string+str(num); + path = mobj.path + '/' + string + str(num) if not moose.exists(path): - return(string,num) + return(string, num) else: - num +=1; - return(findUniqId(mobj,string,num)) + num += 1 + return(findUniqId(mobj, string, num)) + def findCompartment(mooseObj): if mooseObj.path == '/': return None - elif isinstance(mooseObj,ChemCompt): + elif isinstance(mooseObj, ChemCompt): return (mooseObj) else: - return findCompartment(moose.element(mooseObj.parent)) \ No newline at end of file + return findCompartment(moose.element(mooseObj.parent)) From d4e417382a86587b0dca5e8f42f0badec1a08623 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 23 Nov 2016 09:56:22 +0530 Subject: [PATCH 27/66] Some restructuring ... --- MANIFEST.in | 3 -- __init__.py | 1 - {examples => demos}/.gitignore | 0 {examples => demos}/.travis.yml | 0 {examples => demos}/Fig2_elecModels/Fig2A.py | 0 .../Fig2_elecModels/Fig2A_analysis.py | 0 {examples => demos}/Fig2_elecModels/Fig2C.py | 0 {examples => demos}/Fig2_elecModels/Fig2D.py | 0 {examples => demos}/Fig2_elecModels/Fig2E.py | 0 .../Fig2_elecModels/cells/CA1.morph.xml | 0 .../Fig2_elecModels/cells/K-18.CNG.swc | 0 .../Fig2_elecModels/cells/VHC-neuron.CNG.swc | 0 .../Fig2_elecModels/cells/ca1_minimal.p | 0 .../Fig2_elecModels/cells/h10.CNG.swc | 0 .../Fig2_elecModels/cells/ko20x-07.CNG.swc | 0 .../Fig2_elecModels/chans/CA1.morph.xml | 0 .../chans/CA1.morph.xml.REMOVED.git-id | 0 .../Fig2_elecModels/chans/Ca.xml | 0 .../Fig2_elecModels/chans/CaConc.xml | 0 .../Fig2_elecModels/chans/DoubExpSyn.xml | 0 .../Fig2_elecModels/chans/Generated.net.xml | 0 .../Fig2_elecModels/chans/Glu.xml | 0 .../Fig2_elecModels/chans/HChannel.xml | 0 .../Fig2_elecModels/chans/KChannel_HH.xml | 0 .../Fig2_elecModels/chans/LeakConductance.xml | 0 .../Fig2_elecModels/chans/NMDA.xml | 0 .../Fig2_elecModels/chans/NaChannel_HH.xml | 0 .../Fig2_elecModels/chans/hd.xml | 0 .../Fig2_elecModels/chans/kad.xml | 0 .../Fig2_elecModels/chans/kap.xml | 0 .../Fig2_elecModels/chans/kdr.xml | 0 .../Fig2_elecModels/chans/na3.xml | 0 .../Fig2_elecModels/chans/nax.xml | 0 .../Fig2_elecModels/chans/pas.xml | 0 {examples => demos}/Fig3_chemModels/Fig3ABC.g | 0 {examples => demos}/Fig3_chemModels/Fig3D.py | 0 .../Fig3_chemModels/Fig3_NEURON.py | 0 .../Fig4_ReacDiff/CaMKII_merged77.g | 0 {examples => demos}/Fig4_ReacDiff/Fig4B.py | 0 {examples => demos}/Fig4_ReacDiff/Fig4CDEF.py | 0 {examples => demos}/Fig4_ReacDiff/Fig4GHIJ.py | 0 .../Fig4_ReacDiff/ca1_minimal.p | 0 .../Fig4_ReacDiff/rxdSpineSize.py | 0 .../Fig5_CellMultiscale/Fig5A.py | 0 .../Fig5_CellMultiscale/Fig5BCD.py | 0 .../Fig5_CellMultiscale/cells/970529c.CNG.swc | 0 .../Fig5_CellMultiscale/cells/CA1.morph.xml | 0 .../cells/DHC-neuron.CNG.swc | 0 .../cells/VHC-neuron.CNG.swc | 0 .../Fig5_CellMultiscale/cells/ca1_minimal.p | 0 .../Fig5_CellMultiscale/cells/h10.CNG.swc | 0 .../Fig5_CellMultiscale/chans/CA1.morph.xml | 0 .../Fig5_CellMultiscale/chans/Ca.xml | 0 .../Fig5_CellMultiscale/chans/CaConc.xml | 0 .../Fig5_CellMultiscale/chans/DoubExpSyn.xml | 0 .../chans/Generated.net.xml | 0 .../Fig5_CellMultiscale/chans/Glu.xml | 0 .../Fig5_CellMultiscale/chans/HChannel.xml | 0 .../Fig5_CellMultiscale/chans/NMDA.xml | 0 .../Fig5_CellMultiscale/chans/hd.xml | 0 .../Fig5_CellMultiscale/chans/kad.xml | 0 .../Fig5_CellMultiscale/chans/kap.xml | 0 .../Fig5_CellMultiscale/chans/kdr.xml | 0 .../Fig5_CellMultiscale/chans/na3.xml | 0 .../Fig5_CellMultiscale/chans/nax.xml | 0 .../Fig5_CellMultiscale/chans/pas.xml | 0 .../Fig5_CellMultiscale/chem/psd53.g | 0 .../Fig6_NetMultiscale/Fig6A.py | 0 .../Fig6_NetMultiscale/Fig6BCDE.py | 0 .../Fig6_NetMultiscale/ReducedModel.py | 0 .../cells_channels/CA1.morph.spines.xml | 0 .../cells_channels/CA1.morph.xml | 0 .../cells_channels/CA1_nochans.morph.xml | 0 .../cells_channels/CA1spiny.morph.xml | 0 .../cells_channels/CA1spiny7_0.morph.xml | 0 .../Fig6_NetMultiscale/cells_channels/Ca.xml | 0 .../cells_channels/CaConc.xml | 0 .../cells_channels/Ca_conc.xml | 0 .../cells_channels/GABA.xml | 0 .../Fig6_NetMultiscale/cells_channels/Glu.xml | 0 .../cells_channels/NMDA.xml | 0 .../cells_channels/Pyramidal_KM.xml | 0 .../cells_channels/Traub_KA.xml | 0 .../cells_channels/Traub_KCaAHP.xml | 0 .../cells_channels/ca1_minimal.p | 0 .../Fig6_NetMultiscale/cells_channels/hd.xml | 0 .../cells_channels/hd_minus73.xml | 0 .../Fig6_NetMultiscale/cells_channels/kad.xml | 0 .../Fig6_NetMultiscale/cells_channels/kap.xml | 0 .../Fig6_NetMultiscale/cells_channels/kdr.xml | 0 .../Fig6_NetMultiscale/cells_channels/na3.xml | 0 .../Fig6_NetMultiscale/cells_channels/nax.xml | 0 .../Fig6_NetMultiscale/cells_channels/pas.xml | 0 .../Fig6_NetMultiscale/psd53.g | 0 {examples => demos}/README | 0 {examples => demos}/README.md | 0 {examples => demos}/rxdSpineSize.py | 0 {examples => demos}/squid/README.txt | 0 {examples => demos}/squid/channeleditor.py | 0 {examples => demos}/squid/electronics.py | 0 {examples => demos}/squid/help.html | 0 {examples => demos}/squid/help.org | 0 .../squid/images/navigationtoolbar.jpg | Bin {examples => demos}/squid/squid.py | 0 {examples => demos}/squid/squid_demo.py | 0 {examples => demos}/squid/squid_setup.py | 0 {examples => demos}/squid/test_squid.py | 0 moose | 1 + setup.py | 18 +++++------ {mgui => src}/GenericTypes.py | 0 {mgui => src}/MWindow.py | 26 ++++++++-------- {mgui => src}/MdiArea.py | 0 {mgui => src}/PlotWidgetContainer.py | 0 {mgui => src}/RunWidget.py | 0 {mgui => src}/SettingsDialog.py | 0 {mgui => src}/TooltipInfo.py | 0 {mgui => src}/__init__.py | 2 +- {mgui => src}/biomodelsclient.py | 0 {mgui => src}/checkcombobox.py | 0 {mgui => src}/colormaps/__init__.py | 0 {mgui => src}/colormaps/fire | 0 {mgui => src}/colormaps/greenfire | 0 {mgui => src}/colormaps/grey | 0 {mgui => src}/colormaps/heat | 0 {mgui => src}/colormaps/jet | 0 {mgui => src}/colormaps/rainbow2.pkl | 0 {mgui => src}/colormaps/redhot | 0 {mgui => src}/config.py | 0 {mgui => src}/configwidget.py | 0 {mgui => src}/defaults.py | 1 - {mgui => src}/examples.py | 0 {mgui => src}/global_constants.py | 0 {mgui => src}/icons/QMdiBackground.png | Bin {mgui => src}/icons/add.png | Bin {mgui => src}/icons/add_graph.png | Bin {mgui => src}/icons/arrow.png | Bin {mgui => src}/icons/arrow_undo.png | Bin {mgui => src}/icons/classIcon/BufPool.png | Bin {mgui => src}/icons/classIcon/CubeMesh.png | Bin {mgui => src}/icons/classIcon/CylMesh.png | Bin {mgui => src}/icons/classIcon/Enz.png | Bin {mgui => src}/icons/classIcon/FuncPool.png | Bin {mgui => src}/icons/classIcon/Function.png | Bin {mgui => src}/icons/classIcon/MMenz.png | Bin {mgui => src}/icons/classIcon/Pool.png | Bin {mgui => src}/icons/classIcon/Reac.png | Bin .../icons/classIcon/StimulusTable.png | Bin {mgui => src}/icons/classIcon/SumFunc.png | Bin {mgui => src}/icons/clone.svg | 0 {mgui => src}/icons/connection.png | Bin {mgui => src}/icons/continue.png | Bin {mgui => src}/icons/delete.svg | 0 {mgui => src}/icons/delete_graph.png | Bin {mgui => src}/icons/grid.png | Bin {mgui => src}/icons/hand.png | Bin {mgui => src}/icons/help.png | Bin {mgui => src}/icons/hopfield.png | Bin {mgui => src}/icons/list.png | Bin {mgui => src}/icons/moose_icon.png | Bin {mgui => src}/icons/moose_icon_64x64.png | Bin {mgui => src}/icons/moose_icon_large.png | Bin {mgui => src}/icons/move.svg | 0 {mgui => src}/icons/plot.svg | 0 {mgui => src}/icons/reset.png | Bin {mgui => src}/icons/run.png | Bin {mgui => src}/icons/runtime.png | Bin {mgui => src}/icons/squid.png | Bin {mgui => src}/icons/stop.png | Bin ...straight_connector_with_filled_circles.png | Bin {mgui => src}/icons/wrench.png | Bin {mgui => src}/loaderdialog.py | 0 {mgui => src}/mexception.py | 0 {mgui => src}/mgui.py | 8 ++--- {mgui => src}/mload.py | 0 {mgui => src}/mplot.py | 0 {mgui => src}/mplugin.py | 0 {mgui => src}/msearch.py | 0 {mgui => src}/mtoolbutton.py | 0 {mgui => src}/mtree.py | 0 {mgui => src}/mtypes.py | 0 {mgui => src}/neuroextractor.py | 0 {mgui => src}/newmodeldialog.py | 0 {mgui => src}/objectedit.py | 8 ++--- {mgui => src}/plugins/NeuroKit.py | 0 {mgui => src}/plugins/NeuroKitEditor.py | 0 {mgui => src}/plugins/NeuroKitRunner.py | 0 {mgui => src}/plugins/NeuroKitVisualizer.py | 4 +-- {mgui => src}/plugins/PreferencesPresenter.py | 4 +-- {mgui => src}/plugins/PreferencesView.py | 0 {mgui => src}/plugins/README | 0 {mgui => src}/plugins/Runner.py | 0 {mgui => src}/plugins/__init__.py | 0 {mgui => src}/plugins/buildkkit.py | 14 ++++----- {mgui => src}/plugins/constants.py | 0 .../plugins/datastore/preferences.json | 0 {mgui => src}/plugins/default.py | 26 ++++++++-------- {mgui => src}/plugins/defines.py | 0 {mgui => src}/plugins/kkit.py | 28 +++++++++--------- {mgui => src}/plugins/kkitCalcArrow.py | 0 {mgui => src}/plugins/kkitOrdinateUtil.py | 0 {mgui => src}/plugins/kkitQGraphics.py | 2 +- {mgui => src}/plugins/kkitUtil.py | 2 +- {mgui => src}/plugins/kkitViewcontrol.py | 12 ++++---- {mgui => src}/plugins/list.txt | 0 {mgui => src}/plugins/modelBuild.py | 10 +++---- {mgui => src}/plugins/setsolver.py | 0 {mgui => src}/plugins/test_plotwidget.py | 0 {mgui => src}/scishell.py | 0 {mgui => src}/shell.py | 0 {mgui => src}/sidebar.py | 0 {mgui => src}/utils.py | 0 211 files changed, 82 insertions(+), 88 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 __init__.py rename {examples => demos}/.gitignore (100%) rename {examples => demos}/.travis.yml (100%) rename {examples => demos}/Fig2_elecModels/Fig2A.py (100%) rename {examples => demos}/Fig2_elecModels/Fig2A_analysis.py (100%) rename {examples => demos}/Fig2_elecModels/Fig2C.py (100%) rename {examples => demos}/Fig2_elecModels/Fig2D.py (100%) rename {examples => demos}/Fig2_elecModels/Fig2E.py (100%) rename {examples => demos}/Fig2_elecModels/cells/CA1.morph.xml (100%) rename {examples => demos}/Fig2_elecModels/cells/K-18.CNG.swc (100%) rename {examples => demos}/Fig2_elecModels/cells/VHC-neuron.CNG.swc (100%) rename {examples => demos}/Fig2_elecModels/cells/ca1_minimal.p (100%) rename {examples => demos}/Fig2_elecModels/cells/h10.CNG.swc (100%) rename {examples => demos}/Fig2_elecModels/cells/ko20x-07.CNG.swc (100%) rename {examples => demos}/Fig2_elecModels/chans/CA1.morph.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id (100%) rename {examples => demos}/Fig2_elecModels/chans/Ca.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/CaConc.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/DoubExpSyn.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/Generated.net.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/Glu.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/HChannel.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/KChannel_HH.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/LeakConductance.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/NMDA.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/NaChannel_HH.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/hd.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/kad.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/kap.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/kdr.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/na3.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/nax.xml (100%) rename {examples => demos}/Fig2_elecModels/chans/pas.xml (100%) rename {examples => demos}/Fig3_chemModels/Fig3ABC.g (100%) rename {examples => demos}/Fig3_chemModels/Fig3D.py (100%) rename {examples => demos}/Fig3_chemModels/Fig3_NEURON.py (100%) rename {examples => demos}/Fig4_ReacDiff/CaMKII_merged77.g (100%) rename {examples => demos}/Fig4_ReacDiff/Fig4B.py (100%) rename {examples => demos}/Fig4_ReacDiff/Fig4CDEF.py (100%) rename {examples => demos}/Fig4_ReacDiff/Fig4GHIJ.py (100%) rename {examples => demos}/Fig4_ReacDiff/ca1_minimal.p (100%) rename {examples => demos}/Fig4_ReacDiff/rxdSpineSize.py (100%) rename {examples => demos}/Fig5_CellMultiscale/Fig5A.py (100%) rename {examples => demos}/Fig5_CellMultiscale/Fig5BCD.py (100%) rename {examples => demos}/Fig5_CellMultiscale/cells/970529c.CNG.swc (100%) rename {examples => demos}/Fig5_CellMultiscale/cells/CA1.morph.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc (100%) rename {examples => demos}/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc (100%) rename {examples => demos}/Fig5_CellMultiscale/cells/ca1_minimal.p (100%) rename {examples => demos}/Fig5_CellMultiscale/cells/h10.CNG.swc (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/CA1.morph.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/Ca.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/CaConc.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/DoubExpSyn.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/Generated.net.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/Glu.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/HChannel.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/NMDA.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/hd.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/kad.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/kap.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/kdr.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/na3.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/nax.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chans/pas.xml (100%) rename {examples => demos}/Fig5_CellMultiscale/chem/psd53.g (100%) rename {examples => demos}/Fig6_NetMultiscale/Fig6A.py (100%) rename {examples => demos}/Fig6_NetMultiscale/Fig6BCDE.py (100%) rename {examples => demos}/Fig6_NetMultiscale/ReducedModel.py (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/CA1.morph.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/Ca.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/CaConc.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/Ca_conc.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/GABA.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/Glu.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/NMDA.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/Traub_KA.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/ca1_minimal.p (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/hd.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/hd_minus73.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/kad.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/kap.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/kdr.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/na3.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/nax.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/cells_channels/pas.xml (100%) rename {examples => demos}/Fig6_NetMultiscale/psd53.g (100%) rename {examples => demos}/README (100%) rename {examples => demos}/README.md (100%) rename {examples => demos}/rxdSpineSize.py (100%) rename {examples => demos}/squid/README.txt (100%) rename {examples => demos}/squid/channeleditor.py (100%) rename {examples => demos}/squid/electronics.py (100%) rename {examples => demos}/squid/help.html (100%) rename {examples => demos}/squid/help.org (100%) rename {examples => demos}/squid/images/navigationtoolbar.jpg (100%) rename {examples => demos}/squid/squid.py (100%) rename {examples => demos}/squid/squid_demo.py (100%) rename {examples => demos}/squid/squid_setup.py (100%) rename {examples => demos}/squid/test_squid.py (100%) rename {mgui => src}/GenericTypes.py (100%) rename {mgui => src}/MWindow.py (98%) rename {mgui => src}/MdiArea.py (100%) rename {mgui => src}/PlotWidgetContainer.py (100%) rename {mgui => src}/RunWidget.py (100%) rename {mgui => src}/SettingsDialog.py (100%) rename {mgui => src}/TooltipInfo.py (100%) rename {mgui => src}/__init__.py (93%) rename {mgui => src}/biomodelsclient.py (100%) rename {mgui => src}/checkcombobox.py (100%) rename {mgui => src}/colormaps/__init__.py (100%) rename {mgui => src}/colormaps/fire (100%) rename {mgui => src}/colormaps/greenfire (100%) rename {mgui => src}/colormaps/grey (100%) rename {mgui => src}/colormaps/heat (100%) rename {mgui => src}/colormaps/jet (100%) rename {mgui => src}/colormaps/rainbow2.pkl (100%) rename {mgui => src}/colormaps/redhot (100%) rename {mgui => src}/config.py (100%) rename {mgui => src}/configwidget.py (100%) rename {mgui => src}/defaults.py (99%) rename {mgui => src}/examples.py (100%) rename {mgui => src}/global_constants.py (100%) rename {mgui => src}/icons/QMdiBackground.png (100%) rename {mgui => src}/icons/add.png (100%) rename {mgui => src}/icons/add_graph.png (100%) rename {mgui => src}/icons/arrow.png (100%) rename {mgui => src}/icons/arrow_undo.png (100%) rename {mgui => src}/icons/classIcon/BufPool.png (100%) rename {mgui => src}/icons/classIcon/CubeMesh.png (100%) rename {mgui => src}/icons/classIcon/CylMesh.png (100%) rename {mgui => src}/icons/classIcon/Enz.png (100%) rename {mgui => src}/icons/classIcon/FuncPool.png (100%) rename {mgui => src}/icons/classIcon/Function.png (100%) rename {mgui => src}/icons/classIcon/MMenz.png (100%) rename {mgui => src}/icons/classIcon/Pool.png (100%) rename {mgui => src}/icons/classIcon/Reac.png (100%) rename {mgui => src}/icons/classIcon/StimulusTable.png (100%) rename {mgui => src}/icons/classIcon/SumFunc.png (100%) rename {mgui => src}/icons/clone.svg (100%) rename {mgui => src}/icons/connection.png (100%) rename {mgui => src}/icons/continue.png (100%) rename {mgui => src}/icons/delete.svg (100%) rename {mgui => src}/icons/delete_graph.png (100%) rename {mgui => src}/icons/grid.png (100%) rename {mgui => src}/icons/hand.png (100%) rename {mgui => src}/icons/help.png (100%) rename {mgui => src}/icons/hopfield.png (100%) rename {mgui => src}/icons/list.png (100%) rename {mgui => src}/icons/moose_icon.png (100%) rename {mgui => src}/icons/moose_icon_64x64.png (100%) rename {mgui => src}/icons/moose_icon_large.png (100%) rename {mgui => src}/icons/move.svg (100%) rename {mgui => src}/icons/plot.svg (100%) rename {mgui => src}/icons/reset.png (100%) rename {mgui => src}/icons/run.png (100%) rename {mgui => src}/icons/runtime.png (100%) rename {mgui => src}/icons/squid.png (100%) rename {mgui => src}/icons/stop.png (100%) rename {mgui => src}/icons/straight_connector_with_filled_circles.png (100%) rename {mgui => src}/icons/wrench.png (100%) rename {mgui => src}/loaderdialog.py (100%) rename {mgui => src}/mexception.py (100%) rename {mgui => src}/mgui.py (88%) rename {mgui => src}/mload.py (100%) rename {mgui => src}/mplot.py (100%) rename {mgui => src}/mplugin.py (100%) rename {mgui => src}/msearch.py (100%) rename {mgui => src}/mtoolbutton.py (100%) rename {mgui => src}/mtree.py (100%) rename {mgui => src}/mtypes.py (100%) rename {mgui => src}/neuroextractor.py (100%) rename {mgui => src}/newmodeldialog.py (100%) rename {mgui => src}/objectedit.py (99%) rename {mgui => src}/plugins/NeuroKit.py (100%) rename {mgui => src}/plugins/NeuroKitEditor.py (100%) rename {mgui => src}/plugins/NeuroKitRunner.py (100%) rename {mgui => src}/plugins/NeuroKitVisualizer.py (98%) rename {mgui => src}/plugins/PreferencesPresenter.py (99%) rename {mgui => src}/plugins/PreferencesView.py (100%) rename {mgui => src}/plugins/README (100%) rename {mgui => src}/plugins/Runner.py (100%) rename {mgui => src}/plugins/__init__.py (100%) rename {mgui => src}/plugins/buildkkit.py (98%) rename {mgui => src}/plugins/constants.py (100%) rename {mgui => src}/plugins/datastore/preferences.json (100%) rename {mgui => src}/plugins/default.py (98%) rename {mgui => src}/plugins/defines.py (100%) rename {mgui => src}/plugins/kkit.py (98%) rename {mgui => src}/plugins/kkitCalcArrow.py (100%) rename {mgui => src}/plugins/kkitOrdinateUtil.py (100%) rename {mgui => src}/plugins/kkitQGraphics.py (99%) rename {mgui => src}/plugins/kkitUtil.py (99%) rename {mgui => src}/plugins/kkitViewcontrol.py (99%) rename {mgui => src}/plugins/list.txt (100%) rename {mgui => src}/plugins/modelBuild.py (98%) rename {mgui => src}/plugins/setsolver.py (100%) rename {mgui => src}/plugins/test_plotwidget.py (100%) rename {mgui => src}/scishell.py (100%) rename {mgui => src}/shell.py (100%) rename {mgui => src}/sidebar.py (100%) rename {mgui => src}/utils.py (100%) diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index e81af2e..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -recursive-include mgui *.pkl -include colormaps/* -include bioModels/* diff --git a/__init__.py b/__init__.py deleted file mode 100644 index f294cf0..0000000 --- a/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from moosegui.mgui import * diff --git a/examples/.gitignore b/demos/.gitignore similarity index 100% rename from examples/.gitignore rename to demos/.gitignore diff --git a/examples/.travis.yml b/demos/.travis.yml similarity index 100% rename from examples/.travis.yml rename to demos/.travis.yml diff --git a/examples/Fig2_elecModels/Fig2A.py b/demos/Fig2_elecModels/Fig2A.py similarity index 100% rename from examples/Fig2_elecModels/Fig2A.py rename to demos/Fig2_elecModels/Fig2A.py diff --git a/examples/Fig2_elecModels/Fig2A_analysis.py b/demos/Fig2_elecModels/Fig2A_analysis.py similarity index 100% rename from examples/Fig2_elecModels/Fig2A_analysis.py rename to demos/Fig2_elecModels/Fig2A_analysis.py diff --git a/examples/Fig2_elecModels/Fig2C.py b/demos/Fig2_elecModels/Fig2C.py similarity index 100% rename from examples/Fig2_elecModels/Fig2C.py rename to demos/Fig2_elecModels/Fig2C.py diff --git a/examples/Fig2_elecModels/Fig2D.py b/demos/Fig2_elecModels/Fig2D.py similarity index 100% rename from examples/Fig2_elecModels/Fig2D.py rename to demos/Fig2_elecModels/Fig2D.py diff --git a/examples/Fig2_elecModels/Fig2E.py b/demos/Fig2_elecModels/Fig2E.py similarity index 100% rename from examples/Fig2_elecModels/Fig2E.py rename to demos/Fig2_elecModels/Fig2E.py diff --git a/examples/Fig2_elecModels/cells/CA1.morph.xml b/demos/Fig2_elecModels/cells/CA1.morph.xml similarity index 100% rename from examples/Fig2_elecModels/cells/CA1.morph.xml rename to demos/Fig2_elecModels/cells/CA1.morph.xml diff --git a/examples/Fig2_elecModels/cells/K-18.CNG.swc b/demos/Fig2_elecModels/cells/K-18.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/K-18.CNG.swc rename to demos/Fig2_elecModels/cells/K-18.CNG.swc diff --git a/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc b/demos/Fig2_elecModels/cells/VHC-neuron.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc rename to demos/Fig2_elecModels/cells/VHC-neuron.CNG.swc diff --git a/examples/Fig2_elecModels/cells/ca1_minimal.p b/demos/Fig2_elecModels/cells/ca1_minimal.p similarity index 100% rename from examples/Fig2_elecModels/cells/ca1_minimal.p rename to demos/Fig2_elecModels/cells/ca1_minimal.p diff --git a/examples/Fig2_elecModels/cells/h10.CNG.swc b/demos/Fig2_elecModels/cells/h10.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/h10.CNG.swc rename to demos/Fig2_elecModels/cells/h10.CNG.swc diff --git a/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc b/demos/Fig2_elecModels/cells/ko20x-07.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/ko20x-07.CNG.swc rename to demos/Fig2_elecModels/cells/ko20x-07.CNG.swc diff --git a/examples/Fig2_elecModels/chans/CA1.morph.xml b/demos/Fig2_elecModels/chans/CA1.morph.xml similarity index 100% rename from examples/Fig2_elecModels/chans/CA1.morph.xml rename to demos/Fig2_elecModels/chans/CA1.morph.xml diff --git a/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id b/demos/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id similarity index 100% rename from examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id rename to demos/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id diff --git a/examples/Fig2_elecModels/chans/Ca.xml b/demos/Fig2_elecModels/chans/Ca.xml similarity index 100% rename from examples/Fig2_elecModels/chans/Ca.xml rename to demos/Fig2_elecModels/chans/Ca.xml diff --git a/examples/Fig2_elecModels/chans/CaConc.xml b/demos/Fig2_elecModels/chans/CaConc.xml similarity index 100% rename from examples/Fig2_elecModels/chans/CaConc.xml rename to demos/Fig2_elecModels/chans/CaConc.xml diff --git a/examples/Fig2_elecModels/chans/DoubExpSyn.xml b/demos/Fig2_elecModels/chans/DoubExpSyn.xml similarity index 100% rename from examples/Fig2_elecModels/chans/DoubExpSyn.xml rename to demos/Fig2_elecModels/chans/DoubExpSyn.xml diff --git a/examples/Fig2_elecModels/chans/Generated.net.xml b/demos/Fig2_elecModels/chans/Generated.net.xml similarity index 100% rename from examples/Fig2_elecModels/chans/Generated.net.xml rename to demos/Fig2_elecModels/chans/Generated.net.xml diff --git a/examples/Fig2_elecModels/chans/Glu.xml b/demos/Fig2_elecModels/chans/Glu.xml similarity index 100% rename from examples/Fig2_elecModels/chans/Glu.xml rename to demos/Fig2_elecModels/chans/Glu.xml diff --git a/examples/Fig2_elecModels/chans/HChannel.xml b/demos/Fig2_elecModels/chans/HChannel.xml similarity index 100% rename from examples/Fig2_elecModels/chans/HChannel.xml rename to demos/Fig2_elecModels/chans/HChannel.xml diff --git a/examples/Fig2_elecModels/chans/KChannel_HH.xml b/demos/Fig2_elecModels/chans/KChannel_HH.xml similarity index 100% rename from examples/Fig2_elecModels/chans/KChannel_HH.xml rename to demos/Fig2_elecModels/chans/KChannel_HH.xml diff --git a/examples/Fig2_elecModels/chans/LeakConductance.xml b/demos/Fig2_elecModels/chans/LeakConductance.xml similarity index 100% rename from examples/Fig2_elecModels/chans/LeakConductance.xml rename to demos/Fig2_elecModels/chans/LeakConductance.xml diff --git a/examples/Fig2_elecModels/chans/NMDA.xml b/demos/Fig2_elecModels/chans/NMDA.xml similarity index 100% rename from examples/Fig2_elecModels/chans/NMDA.xml rename to demos/Fig2_elecModels/chans/NMDA.xml diff --git a/examples/Fig2_elecModels/chans/NaChannel_HH.xml b/demos/Fig2_elecModels/chans/NaChannel_HH.xml similarity index 100% rename from examples/Fig2_elecModels/chans/NaChannel_HH.xml rename to demos/Fig2_elecModels/chans/NaChannel_HH.xml diff --git a/examples/Fig2_elecModels/chans/hd.xml b/demos/Fig2_elecModels/chans/hd.xml similarity index 100% rename from examples/Fig2_elecModels/chans/hd.xml rename to demos/Fig2_elecModels/chans/hd.xml diff --git a/examples/Fig2_elecModels/chans/kad.xml b/demos/Fig2_elecModels/chans/kad.xml similarity index 100% rename from examples/Fig2_elecModels/chans/kad.xml rename to demos/Fig2_elecModels/chans/kad.xml diff --git a/examples/Fig2_elecModels/chans/kap.xml b/demos/Fig2_elecModels/chans/kap.xml similarity index 100% rename from examples/Fig2_elecModels/chans/kap.xml rename to demos/Fig2_elecModels/chans/kap.xml diff --git a/examples/Fig2_elecModels/chans/kdr.xml b/demos/Fig2_elecModels/chans/kdr.xml similarity index 100% rename from examples/Fig2_elecModels/chans/kdr.xml rename to demos/Fig2_elecModels/chans/kdr.xml diff --git a/examples/Fig2_elecModels/chans/na3.xml b/demos/Fig2_elecModels/chans/na3.xml similarity index 100% rename from examples/Fig2_elecModels/chans/na3.xml rename to demos/Fig2_elecModels/chans/na3.xml diff --git a/examples/Fig2_elecModels/chans/nax.xml b/demos/Fig2_elecModels/chans/nax.xml similarity index 100% rename from examples/Fig2_elecModels/chans/nax.xml rename to demos/Fig2_elecModels/chans/nax.xml diff --git a/examples/Fig2_elecModels/chans/pas.xml b/demos/Fig2_elecModels/chans/pas.xml similarity index 100% rename from examples/Fig2_elecModels/chans/pas.xml rename to demos/Fig2_elecModels/chans/pas.xml diff --git a/examples/Fig3_chemModels/Fig3ABC.g b/demos/Fig3_chemModels/Fig3ABC.g similarity index 100% rename from examples/Fig3_chemModels/Fig3ABC.g rename to demos/Fig3_chemModels/Fig3ABC.g diff --git a/examples/Fig3_chemModels/Fig3D.py b/demos/Fig3_chemModels/Fig3D.py similarity index 100% rename from examples/Fig3_chemModels/Fig3D.py rename to demos/Fig3_chemModels/Fig3D.py diff --git a/examples/Fig3_chemModels/Fig3_NEURON.py b/demos/Fig3_chemModels/Fig3_NEURON.py similarity index 100% rename from examples/Fig3_chemModels/Fig3_NEURON.py rename to demos/Fig3_chemModels/Fig3_NEURON.py diff --git a/examples/Fig4_ReacDiff/CaMKII_merged77.g b/demos/Fig4_ReacDiff/CaMKII_merged77.g similarity index 100% rename from examples/Fig4_ReacDiff/CaMKII_merged77.g rename to demos/Fig4_ReacDiff/CaMKII_merged77.g diff --git a/examples/Fig4_ReacDiff/Fig4B.py b/demos/Fig4_ReacDiff/Fig4B.py similarity index 100% rename from examples/Fig4_ReacDiff/Fig4B.py rename to demos/Fig4_ReacDiff/Fig4B.py diff --git a/examples/Fig4_ReacDiff/Fig4CDEF.py b/demos/Fig4_ReacDiff/Fig4CDEF.py similarity index 100% rename from examples/Fig4_ReacDiff/Fig4CDEF.py rename to demos/Fig4_ReacDiff/Fig4CDEF.py diff --git a/examples/Fig4_ReacDiff/Fig4GHIJ.py b/demos/Fig4_ReacDiff/Fig4GHIJ.py similarity index 100% rename from examples/Fig4_ReacDiff/Fig4GHIJ.py rename to demos/Fig4_ReacDiff/Fig4GHIJ.py diff --git a/examples/Fig4_ReacDiff/ca1_minimal.p b/demos/Fig4_ReacDiff/ca1_minimal.p similarity index 100% rename from examples/Fig4_ReacDiff/ca1_minimal.p rename to demos/Fig4_ReacDiff/ca1_minimal.p diff --git a/examples/Fig4_ReacDiff/rxdSpineSize.py b/demos/Fig4_ReacDiff/rxdSpineSize.py similarity index 100% rename from examples/Fig4_ReacDiff/rxdSpineSize.py rename to demos/Fig4_ReacDiff/rxdSpineSize.py diff --git a/examples/Fig5_CellMultiscale/Fig5A.py b/demos/Fig5_CellMultiscale/Fig5A.py similarity index 100% rename from examples/Fig5_CellMultiscale/Fig5A.py rename to demos/Fig5_CellMultiscale/Fig5A.py diff --git a/examples/Fig5_CellMultiscale/Fig5BCD.py b/demos/Fig5_CellMultiscale/Fig5BCD.py similarity index 100% rename from examples/Fig5_CellMultiscale/Fig5BCD.py rename to demos/Fig5_CellMultiscale/Fig5BCD.py diff --git a/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc b/demos/Fig5_CellMultiscale/cells/970529c.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/970529c.CNG.swc rename to demos/Fig5_CellMultiscale/cells/970529c.CNG.swc diff --git a/examples/Fig5_CellMultiscale/cells/CA1.morph.xml b/demos/Fig5_CellMultiscale/cells/CA1.morph.xml similarity index 100% rename from examples/Fig5_CellMultiscale/cells/CA1.morph.xml rename to demos/Fig5_CellMultiscale/cells/CA1.morph.xml diff --git a/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc b/demos/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc rename to demos/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc diff --git a/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc b/demos/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc rename to demos/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc diff --git a/examples/Fig5_CellMultiscale/cells/ca1_minimal.p b/demos/Fig5_CellMultiscale/cells/ca1_minimal.p similarity index 100% rename from examples/Fig5_CellMultiscale/cells/ca1_minimal.p rename to demos/Fig5_CellMultiscale/cells/ca1_minimal.p diff --git a/examples/Fig5_CellMultiscale/cells/h10.CNG.swc b/demos/Fig5_CellMultiscale/cells/h10.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/h10.CNG.swc rename to demos/Fig5_CellMultiscale/cells/h10.CNG.swc diff --git a/examples/Fig5_CellMultiscale/chans/CA1.morph.xml b/demos/Fig5_CellMultiscale/chans/CA1.morph.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/CA1.morph.xml rename to demos/Fig5_CellMultiscale/chans/CA1.morph.xml diff --git a/examples/Fig5_CellMultiscale/chans/Ca.xml b/demos/Fig5_CellMultiscale/chans/Ca.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/Ca.xml rename to demos/Fig5_CellMultiscale/chans/Ca.xml diff --git a/examples/Fig5_CellMultiscale/chans/CaConc.xml b/demos/Fig5_CellMultiscale/chans/CaConc.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/CaConc.xml rename to demos/Fig5_CellMultiscale/chans/CaConc.xml diff --git a/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml b/demos/Fig5_CellMultiscale/chans/DoubExpSyn.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml rename to demos/Fig5_CellMultiscale/chans/DoubExpSyn.xml diff --git a/examples/Fig5_CellMultiscale/chans/Generated.net.xml b/demos/Fig5_CellMultiscale/chans/Generated.net.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/Generated.net.xml rename to demos/Fig5_CellMultiscale/chans/Generated.net.xml diff --git a/examples/Fig5_CellMultiscale/chans/Glu.xml b/demos/Fig5_CellMultiscale/chans/Glu.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/Glu.xml rename to demos/Fig5_CellMultiscale/chans/Glu.xml diff --git a/examples/Fig5_CellMultiscale/chans/HChannel.xml b/demos/Fig5_CellMultiscale/chans/HChannel.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/HChannel.xml rename to demos/Fig5_CellMultiscale/chans/HChannel.xml diff --git a/examples/Fig5_CellMultiscale/chans/NMDA.xml b/demos/Fig5_CellMultiscale/chans/NMDA.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/NMDA.xml rename to demos/Fig5_CellMultiscale/chans/NMDA.xml diff --git a/examples/Fig5_CellMultiscale/chans/hd.xml b/demos/Fig5_CellMultiscale/chans/hd.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/hd.xml rename to demos/Fig5_CellMultiscale/chans/hd.xml diff --git a/examples/Fig5_CellMultiscale/chans/kad.xml b/demos/Fig5_CellMultiscale/chans/kad.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/kad.xml rename to demos/Fig5_CellMultiscale/chans/kad.xml diff --git a/examples/Fig5_CellMultiscale/chans/kap.xml b/demos/Fig5_CellMultiscale/chans/kap.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/kap.xml rename to demos/Fig5_CellMultiscale/chans/kap.xml diff --git a/examples/Fig5_CellMultiscale/chans/kdr.xml b/demos/Fig5_CellMultiscale/chans/kdr.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/kdr.xml rename to demos/Fig5_CellMultiscale/chans/kdr.xml diff --git a/examples/Fig5_CellMultiscale/chans/na3.xml b/demos/Fig5_CellMultiscale/chans/na3.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/na3.xml rename to demos/Fig5_CellMultiscale/chans/na3.xml diff --git a/examples/Fig5_CellMultiscale/chans/nax.xml b/demos/Fig5_CellMultiscale/chans/nax.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/nax.xml rename to demos/Fig5_CellMultiscale/chans/nax.xml diff --git a/examples/Fig5_CellMultiscale/chans/pas.xml b/demos/Fig5_CellMultiscale/chans/pas.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/pas.xml rename to demos/Fig5_CellMultiscale/chans/pas.xml diff --git a/examples/Fig5_CellMultiscale/chem/psd53.g b/demos/Fig5_CellMultiscale/chem/psd53.g similarity index 100% rename from examples/Fig5_CellMultiscale/chem/psd53.g rename to demos/Fig5_CellMultiscale/chem/psd53.g diff --git a/examples/Fig6_NetMultiscale/Fig6A.py b/demos/Fig6_NetMultiscale/Fig6A.py similarity index 100% rename from examples/Fig6_NetMultiscale/Fig6A.py rename to demos/Fig6_NetMultiscale/Fig6A.py diff --git a/examples/Fig6_NetMultiscale/Fig6BCDE.py b/demos/Fig6_NetMultiscale/Fig6BCDE.py similarity index 100% rename from examples/Fig6_NetMultiscale/Fig6BCDE.py rename to demos/Fig6_NetMultiscale/Fig6BCDE.py diff --git a/examples/Fig6_NetMultiscale/ReducedModel.py b/demos/Fig6_NetMultiscale/ReducedModel.py similarity index 100% rename from examples/Fig6_NetMultiscale/ReducedModel.py rename to demos/Fig6_NetMultiscale/ReducedModel.py diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Ca.xml b/demos/Fig6_NetMultiscale/cells_channels/Ca.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Ca.xml rename to demos/Fig6_NetMultiscale/cells_channels/Ca.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml b/demos/Fig6_NetMultiscale/cells_channels/CaConc.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CaConc.xml rename to demos/Fig6_NetMultiscale/cells_channels/CaConc.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml b/demos/Fig6_NetMultiscale/cells_channels/Ca_conc.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml rename to demos/Fig6_NetMultiscale/cells_channels/Ca_conc.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/GABA.xml b/demos/Fig6_NetMultiscale/cells_channels/GABA.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/GABA.xml rename to demos/Fig6_NetMultiscale/cells_channels/GABA.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Glu.xml b/demos/Fig6_NetMultiscale/cells_channels/Glu.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Glu.xml rename to demos/Fig6_NetMultiscale/cells_channels/Glu.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml b/demos/Fig6_NetMultiscale/cells_channels/NMDA.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/NMDA.xml rename to demos/Fig6_NetMultiscale/cells_channels/NMDA.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml b/demos/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml rename to demos/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml b/demos/Fig6_NetMultiscale/cells_channels/Traub_KA.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml rename to demos/Fig6_NetMultiscale/cells_channels/Traub_KA.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml b/demos/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml rename to demos/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p b/demos/Fig6_NetMultiscale/cells_channels/ca1_minimal.p similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p rename to demos/Fig6_NetMultiscale/cells_channels/ca1_minimal.p diff --git a/examples/Fig6_NetMultiscale/cells_channels/hd.xml b/demos/Fig6_NetMultiscale/cells_channels/hd.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/hd.xml rename to demos/Fig6_NetMultiscale/cells_channels/hd.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml b/demos/Fig6_NetMultiscale/cells_channels/hd_minus73.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml rename to demos/Fig6_NetMultiscale/cells_channels/hd_minus73.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/kad.xml b/demos/Fig6_NetMultiscale/cells_channels/kad.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/kad.xml rename to demos/Fig6_NetMultiscale/cells_channels/kad.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/kap.xml b/demos/Fig6_NetMultiscale/cells_channels/kap.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/kap.xml rename to demos/Fig6_NetMultiscale/cells_channels/kap.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/kdr.xml b/demos/Fig6_NetMultiscale/cells_channels/kdr.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/kdr.xml rename to demos/Fig6_NetMultiscale/cells_channels/kdr.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/na3.xml b/demos/Fig6_NetMultiscale/cells_channels/na3.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/na3.xml rename to demos/Fig6_NetMultiscale/cells_channels/na3.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/nax.xml b/demos/Fig6_NetMultiscale/cells_channels/nax.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/nax.xml rename to demos/Fig6_NetMultiscale/cells_channels/nax.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/pas.xml b/demos/Fig6_NetMultiscale/cells_channels/pas.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/pas.xml rename to demos/Fig6_NetMultiscale/cells_channels/pas.xml diff --git a/examples/Fig6_NetMultiscale/psd53.g b/demos/Fig6_NetMultiscale/psd53.g similarity index 100% rename from examples/Fig6_NetMultiscale/psd53.g rename to demos/Fig6_NetMultiscale/psd53.g diff --git a/examples/README b/demos/README similarity index 100% rename from examples/README rename to demos/README diff --git a/examples/README.md b/demos/README.md similarity index 100% rename from examples/README.md rename to demos/README.md diff --git a/examples/rxdSpineSize.py b/demos/rxdSpineSize.py similarity index 100% rename from examples/rxdSpineSize.py rename to demos/rxdSpineSize.py diff --git a/examples/squid/README.txt b/demos/squid/README.txt similarity index 100% rename from examples/squid/README.txt rename to demos/squid/README.txt diff --git a/examples/squid/channeleditor.py b/demos/squid/channeleditor.py similarity index 100% rename from examples/squid/channeleditor.py rename to demos/squid/channeleditor.py diff --git a/examples/squid/electronics.py b/demos/squid/electronics.py similarity index 100% rename from examples/squid/electronics.py rename to demos/squid/electronics.py diff --git a/examples/squid/help.html b/demos/squid/help.html similarity index 100% rename from examples/squid/help.html rename to demos/squid/help.html diff --git a/examples/squid/help.org b/demos/squid/help.org similarity index 100% rename from examples/squid/help.org rename to demos/squid/help.org diff --git a/examples/squid/images/navigationtoolbar.jpg b/demos/squid/images/navigationtoolbar.jpg similarity index 100% rename from examples/squid/images/navigationtoolbar.jpg rename to demos/squid/images/navigationtoolbar.jpg diff --git a/examples/squid/squid.py b/demos/squid/squid.py similarity index 100% rename from examples/squid/squid.py rename to demos/squid/squid.py diff --git a/examples/squid/squid_demo.py b/demos/squid/squid_demo.py similarity index 100% rename from examples/squid/squid_demo.py rename to demos/squid/squid_demo.py diff --git a/examples/squid/squid_setup.py b/demos/squid/squid_setup.py similarity index 100% rename from examples/squid/squid_setup.py rename to demos/squid/squid_setup.py diff --git a/examples/squid/test_squid.py b/demos/squid/test_squid.py similarity index 100% rename from examples/squid/test_squid.py rename to demos/squid/test_squid.py diff --git a/moose b/moose index d4b51ed..3cf215f 100755 --- a/moose +++ b/moose @@ -2,4 +2,5 @@ import moosegui print( moosegui.__file__ ) +print( dir(moosegui) ) moosegui.main( ) diff --git a/setup.py b/setup.py index b28d007..b53fee8 100644 --- a/setup.py +++ b/setup.py @@ -26,21 +26,19 @@ version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", long_description = open( 'README.md' ).read(), - packages = [ "moosegui" - , "moosegui.mgui" - , 'moosegui.mgui.plugins' - , 'moosegui.suds' + packages = [ "moosegui", 'moosegui.plugins' + , 'moosegui.demos', 'moosegui.suds' ], package_dir = { - 'moosegui' : '.' - , 'moosegui.mgui' : 'mgui' - , 'moosegui.mgui.plugins' : 'mgui/plugins' + 'moosegui' : 'src' + , 'moosegui.plugins' : 'src/plugins' + , 'moosegui.demos' : 'demos' , 'moosegui.suds' : 'suds' }, package_data = { - 'moosegui' : [ 'moose', 'examples/*' ] - , 'moosegui.mgui' : [ 'icons/*', 'colormaps/*', ] - , 'moosegui.mgui.plugins' : [ 'datastore/*', 'list.txt' ] + 'moosegui' : [ '../moose', 'icons/*', 'colormaps/*' ] + , 'moosegui.demos' : [ './*' ] + , 'moosegui.plugins' : [ 'datastore/*', 'list.txt' ] }, author = open('AUTHOR').read(), maintainer = 'Dilawar Singh', diff --git a/mgui/GenericTypes.py b/src/GenericTypes.py similarity index 100% rename from mgui/GenericTypes.py rename to src/GenericTypes.py diff --git a/mgui/MWindow.py b/src/MWindow.py similarity index 98% rename from mgui/MWindow.py rename to src/MWindow.py index bb77d02..abfaed2 100644 --- a/mgui/MWindow.py +++ b/src/MWindow.py @@ -29,19 +29,19 @@ import moose from moose import utils -from mgui import config -from mgui import mplugin -from mgui import mexception -from mgui import mload -from mgui.loaderdialog import LoaderDialog -from mgui.shell import get_shell_class -from mgui.objectedit import ObjectEditDockWidget -from mgui.newmodeldialog import DialogWidget -from mgui.biomodelsclient import BioModelsClientWidget -from mgui.MdiArea import MdiArea -from mgui.plugins.setsolver import * -from mgui.plugins.defines import * -import mgui.examples as demos +from moosegui import config +from moosegui import mplugin +from moosegui import mexception +from moosegui import mload +from moosegui.loaderdialog import LoaderDialog +from moosegui.shell import get_shell_class +from moosegui.objectedit import ObjectEditDockWidget +from moosegui.newmodeldialog import DialogWidget +from moosegui.biomodelsclient import BioModelsClientWidget +from moosegui.MdiArea import MdiArea +from moosegui.plugins.setsolver import * +from moosegui.plugins.defines import * +import moosegui.examples as demos # Logger diff --git a/mgui/MdiArea.py b/src/MdiArea.py similarity index 100% rename from mgui/MdiArea.py rename to src/MdiArea.py diff --git a/mgui/PlotWidgetContainer.py b/src/PlotWidgetContainer.py similarity index 100% rename from mgui/PlotWidgetContainer.py rename to src/PlotWidgetContainer.py diff --git a/mgui/RunWidget.py b/src/RunWidget.py similarity index 100% rename from mgui/RunWidget.py rename to src/RunWidget.py diff --git a/mgui/SettingsDialog.py b/src/SettingsDialog.py similarity index 100% rename from mgui/SettingsDialog.py rename to src/SettingsDialog.py diff --git a/mgui/TooltipInfo.py b/src/TooltipInfo.py similarity index 100% rename from mgui/TooltipInfo.py rename to src/TooltipInfo.py diff --git a/mgui/__init__.py b/src/__init__.py similarity index 93% rename from mgui/__init__.py rename to src/__init__.py index 2cbebb2..1447887 100644 --- a/mgui/__init__.py +++ b/src/__init__.py @@ -1,4 +1,4 @@ -from .mgui import main +from . import mgui # Hack. In python3, Qt4 does not have QString object. from PyQt4 import QtCore diff --git a/mgui/biomodelsclient.py b/src/biomodelsclient.py similarity index 100% rename from mgui/biomodelsclient.py rename to src/biomodelsclient.py diff --git a/mgui/checkcombobox.py b/src/checkcombobox.py similarity index 100% rename from mgui/checkcombobox.py rename to src/checkcombobox.py diff --git a/mgui/colormaps/__init__.py b/src/colormaps/__init__.py similarity index 100% rename from mgui/colormaps/__init__.py rename to src/colormaps/__init__.py diff --git a/mgui/colormaps/fire b/src/colormaps/fire similarity index 100% rename from mgui/colormaps/fire rename to src/colormaps/fire diff --git a/mgui/colormaps/greenfire b/src/colormaps/greenfire similarity index 100% rename from mgui/colormaps/greenfire rename to src/colormaps/greenfire diff --git a/mgui/colormaps/grey b/src/colormaps/grey similarity index 100% rename from mgui/colormaps/grey rename to src/colormaps/grey diff --git a/mgui/colormaps/heat b/src/colormaps/heat similarity index 100% rename from mgui/colormaps/heat rename to src/colormaps/heat diff --git a/mgui/colormaps/jet b/src/colormaps/jet similarity index 100% rename from mgui/colormaps/jet rename to src/colormaps/jet diff --git a/mgui/colormaps/rainbow2.pkl b/src/colormaps/rainbow2.pkl similarity index 100% rename from mgui/colormaps/rainbow2.pkl rename to src/colormaps/rainbow2.pkl diff --git a/mgui/colormaps/redhot b/src/colormaps/redhot similarity index 100% rename from mgui/colormaps/redhot rename to src/colormaps/redhot diff --git a/mgui/config.py b/src/config.py similarity index 100% rename from mgui/config.py rename to src/config.py diff --git a/mgui/configwidget.py b/src/configwidget.py similarity index 100% rename from mgui/configwidget.py rename to src/configwidget.py diff --git a/mgui/defaults.py b/src/defaults.py similarity index 99% rename from mgui/defaults.py rename to src/defaults.py index 83f7d8e..9947672 100644 --- a/mgui/defaults.py +++ b/src/defaults.py @@ -1,4 +1,3 @@ - PLOT_FIELDS={ 'LeakyIaF':['Vm'], 'Compartment':['Vm','Im'], diff --git a/mgui/examples.py b/src/examples.py similarity index 100% rename from mgui/examples.py rename to src/examples.py diff --git a/mgui/global_constants.py b/src/global_constants.py similarity index 100% rename from mgui/global_constants.py rename to src/global_constants.py diff --git a/mgui/icons/QMdiBackground.png b/src/icons/QMdiBackground.png similarity index 100% rename from mgui/icons/QMdiBackground.png rename to src/icons/QMdiBackground.png diff --git a/mgui/icons/add.png b/src/icons/add.png similarity index 100% rename from mgui/icons/add.png rename to src/icons/add.png diff --git a/mgui/icons/add_graph.png b/src/icons/add_graph.png similarity index 100% rename from mgui/icons/add_graph.png rename to src/icons/add_graph.png diff --git a/mgui/icons/arrow.png b/src/icons/arrow.png similarity index 100% rename from mgui/icons/arrow.png rename to src/icons/arrow.png diff --git a/mgui/icons/arrow_undo.png b/src/icons/arrow_undo.png similarity index 100% rename from mgui/icons/arrow_undo.png rename to src/icons/arrow_undo.png diff --git a/mgui/icons/classIcon/BufPool.png b/src/icons/classIcon/BufPool.png similarity index 100% rename from mgui/icons/classIcon/BufPool.png rename to src/icons/classIcon/BufPool.png diff --git a/mgui/icons/classIcon/CubeMesh.png b/src/icons/classIcon/CubeMesh.png similarity index 100% rename from mgui/icons/classIcon/CubeMesh.png rename to src/icons/classIcon/CubeMesh.png diff --git a/mgui/icons/classIcon/CylMesh.png b/src/icons/classIcon/CylMesh.png similarity index 100% rename from mgui/icons/classIcon/CylMesh.png rename to src/icons/classIcon/CylMesh.png diff --git a/mgui/icons/classIcon/Enz.png b/src/icons/classIcon/Enz.png similarity index 100% rename from mgui/icons/classIcon/Enz.png rename to src/icons/classIcon/Enz.png diff --git a/mgui/icons/classIcon/FuncPool.png b/src/icons/classIcon/FuncPool.png similarity index 100% rename from mgui/icons/classIcon/FuncPool.png rename to src/icons/classIcon/FuncPool.png diff --git a/mgui/icons/classIcon/Function.png b/src/icons/classIcon/Function.png similarity index 100% rename from mgui/icons/classIcon/Function.png rename to src/icons/classIcon/Function.png diff --git a/mgui/icons/classIcon/MMenz.png b/src/icons/classIcon/MMenz.png similarity index 100% rename from mgui/icons/classIcon/MMenz.png rename to src/icons/classIcon/MMenz.png diff --git a/mgui/icons/classIcon/Pool.png b/src/icons/classIcon/Pool.png similarity index 100% rename from mgui/icons/classIcon/Pool.png rename to src/icons/classIcon/Pool.png diff --git a/mgui/icons/classIcon/Reac.png b/src/icons/classIcon/Reac.png similarity index 100% rename from mgui/icons/classIcon/Reac.png rename to src/icons/classIcon/Reac.png diff --git a/mgui/icons/classIcon/StimulusTable.png b/src/icons/classIcon/StimulusTable.png similarity index 100% rename from mgui/icons/classIcon/StimulusTable.png rename to src/icons/classIcon/StimulusTable.png diff --git a/mgui/icons/classIcon/SumFunc.png b/src/icons/classIcon/SumFunc.png similarity index 100% rename from mgui/icons/classIcon/SumFunc.png rename to src/icons/classIcon/SumFunc.png diff --git a/mgui/icons/clone.svg b/src/icons/clone.svg similarity index 100% rename from mgui/icons/clone.svg rename to src/icons/clone.svg diff --git a/mgui/icons/connection.png b/src/icons/connection.png similarity index 100% rename from mgui/icons/connection.png rename to src/icons/connection.png diff --git a/mgui/icons/continue.png b/src/icons/continue.png similarity index 100% rename from mgui/icons/continue.png rename to src/icons/continue.png diff --git a/mgui/icons/delete.svg b/src/icons/delete.svg similarity index 100% rename from mgui/icons/delete.svg rename to src/icons/delete.svg diff --git a/mgui/icons/delete_graph.png b/src/icons/delete_graph.png similarity index 100% rename from mgui/icons/delete_graph.png rename to src/icons/delete_graph.png diff --git a/mgui/icons/grid.png b/src/icons/grid.png similarity index 100% rename from mgui/icons/grid.png rename to src/icons/grid.png diff --git a/mgui/icons/hand.png b/src/icons/hand.png similarity index 100% rename from mgui/icons/hand.png rename to src/icons/hand.png diff --git a/mgui/icons/help.png b/src/icons/help.png similarity index 100% rename from mgui/icons/help.png rename to src/icons/help.png diff --git a/mgui/icons/hopfield.png b/src/icons/hopfield.png similarity index 100% rename from mgui/icons/hopfield.png rename to src/icons/hopfield.png diff --git a/mgui/icons/list.png b/src/icons/list.png similarity index 100% rename from mgui/icons/list.png rename to src/icons/list.png diff --git a/mgui/icons/moose_icon.png b/src/icons/moose_icon.png similarity index 100% rename from mgui/icons/moose_icon.png rename to src/icons/moose_icon.png diff --git a/mgui/icons/moose_icon_64x64.png b/src/icons/moose_icon_64x64.png similarity index 100% rename from mgui/icons/moose_icon_64x64.png rename to src/icons/moose_icon_64x64.png diff --git a/mgui/icons/moose_icon_large.png b/src/icons/moose_icon_large.png similarity index 100% rename from mgui/icons/moose_icon_large.png rename to src/icons/moose_icon_large.png diff --git a/mgui/icons/move.svg b/src/icons/move.svg similarity index 100% rename from mgui/icons/move.svg rename to src/icons/move.svg diff --git a/mgui/icons/plot.svg b/src/icons/plot.svg similarity index 100% rename from mgui/icons/plot.svg rename to src/icons/plot.svg diff --git a/mgui/icons/reset.png b/src/icons/reset.png similarity index 100% rename from mgui/icons/reset.png rename to src/icons/reset.png diff --git a/mgui/icons/run.png b/src/icons/run.png similarity index 100% rename from mgui/icons/run.png rename to src/icons/run.png diff --git a/mgui/icons/runtime.png b/src/icons/runtime.png similarity index 100% rename from mgui/icons/runtime.png rename to src/icons/runtime.png diff --git a/mgui/icons/squid.png b/src/icons/squid.png similarity index 100% rename from mgui/icons/squid.png rename to src/icons/squid.png diff --git a/mgui/icons/stop.png b/src/icons/stop.png similarity index 100% rename from mgui/icons/stop.png rename to src/icons/stop.png diff --git a/mgui/icons/straight_connector_with_filled_circles.png b/src/icons/straight_connector_with_filled_circles.png similarity index 100% rename from mgui/icons/straight_connector_with_filled_circles.png rename to src/icons/straight_connector_with_filled_circles.png diff --git a/mgui/icons/wrench.png b/src/icons/wrench.png similarity index 100% rename from mgui/icons/wrench.png rename to src/icons/wrench.png diff --git a/mgui/loaderdialog.py b/src/loaderdialog.py similarity index 100% rename from mgui/loaderdialog.py rename to src/loaderdialog.py diff --git a/mgui/mexception.py b/src/mexception.py similarity index 100% rename from mgui/mexception.py rename to src/mexception.py diff --git a/mgui/mgui.py b/src/mgui.py similarity index 88% rename from mgui/mgui.py rename to src/mgui.py index ad564ed..e26e592 100644 --- a/mgui/mgui.py +++ b/src/mgui.py @@ -1,4 +1,4 @@ -# Filename: mgui.py +# Filename: moosegui.py # Description: Graphical user interface of MOOSE simulator. # Author: Subhasis Ray, Harsha Rani, Dilawar Singh # Maintainer: @@ -13,8 +13,8 @@ from PyQt4 import Qt, QtCore, QtGui import posixpath -from . import config -from . import MWindow as MWindow +from moosegui import config +from moosegui import MWindow as MWindow app_ = None @@ -40,4 +40,4 @@ def main(): main() # -# mgui.py ends here +# moosegui.py ends here diff --git a/mgui/mload.py b/src/mload.py similarity index 100% rename from mgui/mload.py rename to src/mload.py diff --git a/mgui/mplot.py b/src/mplot.py similarity index 100% rename from mgui/mplot.py rename to src/mplot.py diff --git a/mgui/mplugin.py b/src/mplugin.py similarity index 100% rename from mgui/mplugin.py rename to src/mplugin.py diff --git a/mgui/msearch.py b/src/msearch.py similarity index 100% rename from mgui/msearch.py rename to src/msearch.py diff --git a/mgui/mtoolbutton.py b/src/mtoolbutton.py similarity index 100% rename from mgui/mtoolbutton.py rename to src/mtoolbutton.py diff --git a/mgui/mtree.py b/src/mtree.py similarity index 100% rename from mgui/mtree.py rename to src/mtree.py diff --git a/mgui/mtypes.py b/src/mtypes.py similarity index 100% rename from mgui/mtypes.py rename to src/mtypes.py diff --git a/mgui/neuroextractor.py b/src/neuroextractor.py similarity index 100% rename from mgui/neuroextractor.py rename to src/neuroextractor.py diff --git a/mgui/newmodeldialog.py b/src/newmodeldialog.py similarity index 100% rename from mgui/newmodeldialog.py rename to src/newmodeldialog.py diff --git a/mgui/objectedit.py b/src/objectedit.py similarity index 99% rename from mgui/objectedit.py rename to src/objectedit.py index 2ea0cce..a68385f 100644 --- a/mgui/objectedit.py +++ b/src/objectedit.py @@ -43,10 +43,10 @@ import moose import numpy as np -from mgui import defaults -from mgui import config -from mgui.plugins.kkitUtil import getColor -from mgui.GenericTypes import QVariant +from moosegui import defaults +from moosegui import config +from moosegui.plugins.kkitUtil import getColor +from moosegui.GenericTypes import QVariant extra_fields = ['this', 'me', diff --git a/mgui/plugins/NeuroKit.py b/src/plugins/NeuroKit.py similarity index 100% rename from mgui/plugins/NeuroKit.py rename to src/plugins/NeuroKit.py diff --git a/mgui/plugins/NeuroKitEditor.py b/src/plugins/NeuroKitEditor.py similarity index 100% rename from mgui/plugins/NeuroKitEditor.py rename to src/plugins/NeuroKitEditor.py diff --git a/mgui/plugins/NeuroKitRunner.py b/src/plugins/NeuroKitRunner.py similarity index 100% rename from mgui/plugins/NeuroKitRunner.py rename to src/plugins/NeuroKitRunner.py diff --git a/mgui/plugins/NeuroKitVisualizer.py b/src/plugins/NeuroKitVisualizer.py similarity index 98% rename from mgui/plugins/NeuroKitVisualizer.py rename to src/plugins/NeuroKitVisualizer.py index 19a433b..bbe000d 100644 --- a/mgui/plugins/NeuroKitVisualizer.py +++ b/src/plugins/NeuroKitVisualizer.py @@ -15,8 +15,8 @@ import moose import moogli -from mgui.config import _logger -from mgui.plugins import default +from moosegui.config import _logger +from moosegui.plugins import default class MorphologyEditor(moogli.MorphologyViewer): diff --git a/mgui/plugins/PreferencesPresenter.py b/src/plugins/PreferencesPresenter.py similarity index 99% rename from mgui/plugins/PreferencesPresenter.py rename to src/plugins/PreferencesPresenter.py index f351894..be90800 100644 --- a/mgui/plugins/PreferencesPresenter.py +++ b/src/plugins/PreferencesPresenter.py @@ -6,8 +6,8 @@ from PyQt4.QtCore import pyqtSignal from PyQt4.QtGui import QColor from PyQt4.QtGui import QGroupBox -from mgui.plugins.PreferencesView import PreferencesView -from mgui.plugins.defines import * +from moosegui.plugins.PreferencesView import PreferencesView +from moosegui.plugins.defines import * import json import os diff --git a/mgui/plugins/PreferencesView.py b/src/plugins/PreferencesView.py similarity index 100% rename from mgui/plugins/PreferencesView.py rename to src/plugins/PreferencesView.py diff --git a/mgui/plugins/README b/src/plugins/README similarity index 100% rename from mgui/plugins/README rename to src/plugins/README diff --git a/mgui/plugins/Runner.py b/src/plugins/Runner.py similarity index 100% rename from mgui/plugins/Runner.py rename to src/plugins/Runner.py diff --git a/mgui/plugins/__init__.py b/src/plugins/__init__.py similarity index 100% rename from mgui/plugins/__init__.py rename to src/plugins/__init__.py diff --git a/mgui/plugins/buildkkit.py b/src/plugins/buildkkit.py similarity index 98% rename from mgui/plugins/buildkkit.py rename to src/plugins/buildkkit.py index 86d8e76..b073d83 100644 --- a/mgui/plugins/buildkkit.py +++ b/src/plugins/buildkkit.py @@ -12,13 +12,13 @@ import networkx as nx import numpy as np -from mgui.plugins.default import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem -from mgui.plugins.kkitViewcontrol import * -from mgui.plugins.kkitCalcArrow import * -from mgui.plugins.kkitOrdinateUtil import * -from mgui.mtoolbutton import MToolButton +from moosegui.plugins.default import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from moosegui.plugins.kkitViewcontrol import * +from moosegui.plugins.kkitCalcArrow import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.mtoolbutton import MToolButton class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" diff --git a/mgui/plugins/constants.py b/src/plugins/constants.py similarity index 100% rename from mgui/plugins/constants.py rename to src/plugins/constants.py diff --git a/mgui/plugins/datastore/preferences.json b/src/plugins/datastore/preferences.json similarity index 100% rename from mgui/plugins/datastore/preferences.json rename to src/plugins/datastore/preferences.json diff --git a/mgui/plugins/default.py b/src/plugins/default.py similarity index 98% rename from mgui/plugins/default.py rename to src/plugins/default.py index ca47179..0669cbe 100644 --- a/mgui/plugins/default.py +++ b/src/plugins/default.py @@ -33,17 +33,17 @@ import moose from moose import utils -import mgui.mtree as mtree -from mgui.mtoolbutton import MToolButton -from mgui.msearch import SearchWidget -from mgui.checkcombobox import CheckComboBox -from mgui import config -from mgui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase -from mgui.PlotWidgetContainer import PlotWidgetContainer -from mgui.plugins.kkitUtil import getColor -from mgui.plugins.Runner import Runner -from mgui.global_constants import preferences -from mgui.plugins.setsolver import * +import moosegui.mtree as mtree +from moosegui.mtoolbutton import MToolButton +from moosegui.msearch import SearchWidget +from moosegui.checkcombobox import CheckComboBox +from moosegui import config +from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +from moosegui.PlotWidgetContainer import PlotWidgetContainer +from moosegui.plugins.kkitUtil import getColor +from moosegui.plugins.Runner import Runner +from moosegui.global_constants import preferences +from moosegui.plugins.setsolver import * from PyQt4 import QtCore, QtGui from PyQt4.QtCore import Qt @@ -59,7 +59,7 @@ from PyQt4.QtGui import QPixmap from PyQt4.QtGui import QAction -from mgui.config import _logger +from moosegui.config import _logger ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -281,7 +281,7 @@ def getToolBars(self): # View for running a simulation and runtime visualization # ############################################################ -from mgui.mplot import CanvasWidget +from moosegui.mplot import CanvasWidget class RunView(RunBase): """A default runtime view implementation. This should be diff --git a/mgui/plugins/defines.py b/src/plugins/defines.py similarity index 100% rename from mgui/plugins/defines.py rename to src/plugins/defines.py diff --git a/mgui/plugins/kkit.py b/src/plugins/kkit.py similarity index 98% rename from mgui/plugins/kkit.py rename to src/plugins/kkit.py index 4a51dee..09940c4 100644 --- a/mgui/plugins/kkit.py +++ b/src/plugins/kkit.py @@ -11,20 +11,20 @@ from moose.genesis import write from moose import SBML -from mgui.mplugin import * -from mgui.mtoolbutton import MToolButton -from mgui.plugins.default import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem -from mgui.plugins.kkitViewcontrol import * -from mgui.plugins.kkitCalcArrow import * -from mgui.plugins.kkitOrdinateUtil import * -from mgui.plugins.setsolver import * -from mgui.RunWidget import RunWidget - -import mgui.TooltipInfo as TooltipInfo - -from mgui.config import _logger +from moosegui.mplugin import * +from moosegui.mtoolbutton import MToolButton +from moosegui.plugins.default import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem +from moosegui.plugins.kkitViewcontrol import * +from moosegui.plugins.kkitCalcArrow import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.plugins.setsolver import * +from moosegui.RunWidget import RunWidget + +import moosegui.TooltipInfo as TooltipInfo + +from moosegui.config import _logger class KkitPlugin(MoosePlugin): diff --git a/mgui/plugins/kkitCalcArrow.py b/src/plugins/kkitCalcArrow.py similarity index 100% rename from mgui/plugins/kkitCalcArrow.py rename to src/plugins/kkitCalcArrow.py diff --git a/mgui/plugins/kkitOrdinateUtil.py b/src/plugins/kkitOrdinateUtil.py similarity index 100% rename from mgui/plugins/kkitOrdinateUtil.py rename to src/plugins/kkitOrdinateUtil.py diff --git a/mgui/plugins/kkitQGraphics.py b/src/plugins/kkitQGraphics.py similarity index 99% rename from mgui/plugins/kkitQGraphics.py rename to src/plugins/kkitQGraphics.py index 1f9286c..56b9da4 100644 --- a/mgui/plugins/kkitQGraphics.py +++ b/src/plugins/kkitQGraphics.py @@ -1,4 +1,4 @@ -from mgui import config +from moosegui import config from PyQt4 import QtGui, QtCore, Qt from moose import * from PyQt4.QtGui import QPixmap, QImage, QGraphicsPixmapItem diff --git a/mgui/plugins/kkitUtil.py b/src/plugins/kkitUtil.py similarity index 99% rename from mgui/plugins/kkitUtil.py rename to src/plugins/kkitUtil.py index ebf434c..744cf5b 100644 --- a/mgui/plugins/kkitUtil.py +++ b/src/plugins/kkitUtil.py @@ -2,7 +2,7 @@ from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem from PyQt4 import QtCore,QtGui,QtSvg from PyQt4.QtGui import QColor -from mgui import config +from moosegui import config import numpy as np import os diff --git a/mgui/plugins/kkitViewcontrol.py b/src/plugins/kkitViewcontrol.py similarity index 99% rename from mgui/plugins/kkitViewcontrol.py rename to src/plugins/kkitViewcontrol.py index dec172d..93b0d4f 100644 --- a/mgui/plugins/kkitViewcontrol.py +++ b/src/plugins/kkitViewcontrol.py @@ -1,16 +1,16 @@ import sys -from mgui.plugins.modelBuild import * -from mgui.plugins.constants import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.setsolver import * +from moosegui.plugins.modelBuild import * +from moosegui.plugins.constants import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.setsolver import * from PyQt4.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem from PyQt4.QtCore import pyqtSignal from PyQt4 import QtSvg from moose import utils -from mgui.GenericTypes import QVariant -from mgui.config import _logger +from moosegui.GenericTypes import QVariant +from moosegui.config import _logger class GraphicalView(QtGui.QGraphicsView): diff --git a/mgui/plugins/list.txt b/src/plugins/list.txt similarity index 100% rename from mgui/plugins/list.txt rename to src/plugins/list.txt diff --git a/mgui/plugins/modelBuild.py b/src/plugins/modelBuild.py similarity index 98% rename from mgui/plugins/modelBuild.py rename to src/plugins/modelBuild.py index 542e808..e6705d0 100644 --- a/mgui/plugins/modelBuild.py +++ b/src/plugins/modelBuild.py @@ -1,12 +1,12 @@ import PyQt4 import moose -from mgui.plugins.kkitQGraphics import * -from mgui.plugins.kkitOrdinateUtil import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.setsolver import * +from moosegui.plugins.kkitQGraphics import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.setsolver import * -from mgui.config import _logger +from moosegui.config import _logger def updateCompartmentSize(qGraCompt): diff --git a/mgui/plugins/setsolver.py b/src/plugins/setsolver.py similarity index 100% rename from mgui/plugins/setsolver.py rename to src/plugins/setsolver.py diff --git a/mgui/plugins/test_plotwidget.py b/src/plugins/test_plotwidget.py similarity index 100% rename from mgui/plugins/test_plotwidget.py rename to src/plugins/test_plotwidget.py diff --git a/mgui/scishell.py b/src/scishell.py similarity index 100% rename from mgui/scishell.py rename to src/scishell.py diff --git a/mgui/shell.py b/src/shell.py similarity index 100% rename from mgui/shell.py rename to src/shell.py diff --git a/mgui/sidebar.py b/src/sidebar.py similarity index 100% rename from mgui/sidebar.py rename to src/sidebar.py diff --git a/mgui/utils.py b/src/utils.py similarity index 100% rename from mgui/utils.py rename to src/utils.py From c57ecdcac9fd0f2158c65196ff7b78f387a4a0b1 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 23 Nov 2016 10:33:24 +0530 Subject: [PATCH 28/66] A lot of renaming. Problem installing suds in proper place. --- demos/__init__.py | 0 {suds => external/suds}/__init__.py | 0 {suds => external/suds}/argparser.py | 0 {suds => external/suds}/bindings/__init__.py | 0 {suds => external/suds}/bindings/binding.py | 0 {suds => external/suds}/bindings/document.py | 0 {suds => external/suds}/bindings/multiref.py | 0 {suds => external/suds}/bindings/rpc.py | 0 {suds => external/suds}/builder.py | 0 {suds => external/suds}/cache.py | 0 {suds => external/suds}/client.py | 0 {suds => external/suds}/metrics.py | 0 {suds => external/suds}/mx/__init__.py | 0 {suds => external/suds}/mx/appender.py | 0 {suds => external/suds}/mx/basic.py | 0 {suds => external/suds}/mx/core.py | 0 {suds => external/suds}/mx/encoded.py | 0 {suds => external/suds}/mx/literal.py | 0 {suds => external/suds}/mx/typer.py | 0 {suds => external/suds}/options.py | 0 {suds => external/suds}/plugin.py | 0 {suds => external/suds}/properties.py | 0 {suds => external/suds}/reader.py | 0 {suds => external/suds}/resolver.py | 0 {suds => external/suds}/sax/__init__.py | 0 {suds => external/suds}/sax/attribute.py | 0 {suds => external/suds}/sax/date.py | 0 {suds => external/suds}/sax/document.py | 0 {suds => external/suds}/sax/element.py | 0 {suds => external/suds}/sax/enc.py | 0 {suds => external/suds}/sax/parser.py | 0 {suds => external/suds}/sax/text.py | 2 +- {suds => external/suds}/servicedefinition.py | 0 {suds => external/suds}/serviceproxy.py | 0 {suds => external/suds}/soaparray.py | 0 {suds => external/suds}/store.py | 0 {suds => external/suds}/sudsobject.py | 0 {suds => external/suds}/transport/__init__.py | 0 {suds => external/suds}/transport/http.py | 0 {suds => external/suds}/transport/https.py | 0 {suds => external/suds}/transport/options.py | 0 {suds => external/suds}/umx/__init__.py | 0 {suds => external/suds}/umx/attrlist.py | 0 {suds => external/suds}/umx/basic.py | 0 {suds => external/suds}/umx/core.py | 0 {suds => external/suds}/umx/encoded.py | 0 {suds => external/suds}/umx/typed.py | 0 {suds => external/suds}/version.py | 0 {suds => external/suds}/wsdl.py | 0 {suds => external/suds}/wsse.py | 0 {suds => external/suds}/xsd/__init__.py | 0 {suds => external/suds}/xsd/deplist.py | 0 {suds => external/suds}/xsd/doctor.py | 0 {suds => external/suds}/xsd/query.py | 0 {suds => external/suds}/xsd/schema.py | 0 {suds => external/suds}/xsd/sxbase.py | 0 {suds => external/suds}/xsd/sxbasic.py | 0 {suds => external/suds}/xsd/sxbuiltin.py | 0 moose | 1 - setup.py | 10 ++++--- src/biomodelsclient.py | 28 +------------------ 61 files changed, 8 insertions(+), 33 deletions(-) create mode 100644 demos/__init__.py rename {suds => external/suds}/__init__.py (100%) rename {suds => external/suds}/argparser.py (100%) rename {suds => external/suds}/bindings/__init__.py (100%) rename {suds => external/suds}/bindings/binding.py (100%) rename {suds => external/suds}/bindings/document.py (100%) rename {suds => external/suds}/bindings/multiref.py (100%) rename {suds => external/suds}/bindings/rpc.py (100%) rename {suds => external/suds}/builder.py (100%) rename {suds => external/suds}/cache.py (100%) rename {suds => external/suds}/client.py (100%) rename {suds => external/suds}/metrics.py (100%) rename {suds => external/suds}/mx/__init__.py (100%) rename {suds => external/suds}/mx/appender.py (100%) rename {suds => external/suds}/mx/basic.py (100%) rename {suds => external/suds}/mx/core.py (100%) rename {suds => external/suds}/mx/encoded.py (100%) rename {suds => external/suds}/mx/literal.py (100%) rename {suds => external/suds}/mx/typer.py (100%) rename {suds => external/suds}/options.py (100%) rename {suds => external/suds}/plugin.py (100%) rename {suds => external/suds}/properties.py (100%) rename {suds => external/suds}/reader.py (100%) rename {suds => external/suds}/resolver.py (100%) rename {suds => external/suds}/sax/__init__.py (100%) rename {suds => external/suds}/sax/attribute.py (100%) rename {suds => external/suds}/sax/date.py (100%) rename {suds => external/suds}/sax/document.py (100%) rename {suds => external/suds}/sax/element.py (100%) rename {suds => external/suds}/sax/enc.py (100%) rename {suds => external/suds}/sax/parser.py (100%) rename {suds => external/suds}/sax/text.py (99%) rename {suds => external/suds}/servicedefinition.py (100%) rename {suds => external/suds}/serviceproxy.py (100%) rename {suds => external/suds}/soaparray.py (100%) rename {suds => external/suds}/store.py (100%) rename {suds => external/suds}/sudsobject.py (100%) rename {suds => external/suds}/transport/__init__.py (100%) rename {suds => external/suds}/transport/http.py (100%) rename {suds => external/suds}/transport/https.py (100%) rename {suds => external/suds}/transport/options.py (100%) rename {suds => external/suds}/umx/__init__.py (100%) rename {suds => external/suds}/umx/attrlist.py (100%) rename {suds => external/suds}/umx/basic.py (100%) rename {suds => external/suds}/umx/core.py (100%) rename {suds => external/suds}/umx/encoded.py (100%) rename {suds => external/suds}/umx/typed.py (100%) rename {suds => external/suds}/version.py (100%) rename {suds => external/suds}/wsdl.py (100%) rename {suds => external/suds}/wsse.py (100%) rename {suds => external/suds}/xsd/__init__.py (100%) rename {suds => external/suds}/xsd/deplist.py (100%) rename {suds => external/suds}/xsd/doctor.py (100%) rename {suds => external/suds}/xsd/query.py (100%) rename {suds => external/suds}/xsd/schema.py (100%) rename {suds => external/suds}/xsd/sxbase.py (100%) rename {suds => external/suds}/xsd/sxbasic.py (100%) rename {suds => external/suds}/xsd/sxbuiltin.py (100%) diff --git a/demos/__init__.py b/demos/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/suds/__init__.py b/external/suds/__init__.py similarity index 100% rename from suds/__init__.py rename to external/suds/__init__.py diff --git a/suds/argparser.py b/external/suds/argparser.py similarity index 100% rename from suds/argparser.py rename to external/suds/argparser.py diff --git a/suds/bindings/__init__.py b/external/suds/bindings/__init__.py similarity index 100% rename from suds/bindings/__init__.py rename to external/suds/bindings/__init__.py diff --git a/suds/bindings/binding.py b/external/suds/bindings/binding.py similarity index 100% rename from suds/bindings/binding.py rename to external/suds/bindings/binding.py diff --git a/suds/bindings/document.py b/external/suds/bindings/document.py similarity index 100% rename from suds/bindings/document.py rename to external/suds/bindings/document.py diff --git a/suds/bindings/multiref.py b/external/suds/bindings/multiref.py similarity index 100% rename from suds/bindings/multiref.py rename to external/suds/bindings/multiref.py diff --git a/suds/bindings/rpc.py b/external/suds/bindings/rpc.py similarity index 100% rename from suds/bindings/rpc.py rename to external/suds/bindings/rpc.py diff --git a/suds/builder.py b/external/suds/builder.py similarity index 100% rename from suds/builder.py rename to external/suds/builder.py diff --git a/suds/cache.py b/external/suds/cache.py similarity index 100% rename from suds/cache.py rename to external/suds/cache.py diff --git a/suds/client.py b/external/suds/client.py similarity index 100% rename from suds/client.py rename to external/suds/client.py diff --git a/suds/metrics.py b/external/suds/metrics.py similarity index 100% rename from suds/metrics.py rename to external/suds/metrics.py diff --git a/suds/mx/__init__.py b/external/suds/mx/__init__.py similarity index 100% rename from suds/mx/__init__.py rename to external/suds/mx/__init__.py diff --git a/suds/mx/appender.py b/external/suds/mx/appender.py similarity index 100% rename from suds/mx/appender.py rename to external/suds/mx/appender.py diff --git a/suds/mx/basic.py b/external/suds/mx/basic.py similarity index 100% rename from suds/mx/basic.py rename to external/suds/mx/basic.py diff --git a/suds/mx/core.py b/external/suds/mx/core.py similarity index 100% rename from suds/mx/core.py rename to external/suds/mx/core.py diff --git a/suds/mx/encoded.py b/external/suds/mx/encoded.py similarity index 100% rename from suds/mx/encoded.py rename to external/suds/mx/encoded.py diff --git a/suds/mx/literal.py b/external/suds/mx/literal.py similarity index 100% rename from suds/mx/literal.py rename to external/suds/mx/literal.py diff --git a/suds/mx/typer.py b/external/suds/mx/typer.py similarity index 100% rename from suds/mx/typer.py rename to external/suds/mx/typer.py diff --git a/suds/options.py b/external/suds/options.py similarity index 100% rename from suds/options.py rename to external/suds/options.py diff --git a/suds/plugin.py b/external/suds/plugin.py similarity index 100% rename from suds/plugin.py rename to external/suds/plugin.py diff --git a/suds/properties.py b/external/suds/properties.py similarity index 100% rename from suds/properties.py rename to external/suds/properties.py diff --git a/suds/reader.py b/external/suds/reader.py similarity index 100% rename from suds/reader.py rename to external/suds/reader.py diff --git a/suds/resolver.py b/external/suds/resolver.py similarity index 100% rename from suds/resolver.py rename to external/suds/resolver.py diff --git a/suds/sax/__init__.py b/external/suds/sax/__init__.py similarity index 100% rename from suds/sax/__init__.py rename to external/suds/sax/__init__.py diff --git a/suds/sax/attribute.py b/external/suds/sax/attribute.py similarity index 100% rename from suds/sax/attribute.py rename to external/suds/sax/attribute.py diff --git a/suds/sax/date.py b/external/suds/sax/date.py similarity index 100% rename from suds/sax/date.py rename to external/suds/sax/date.py diff --git a/suds/sax/document.py b/external/suds/sax/document.py similarity index 100% rename from suds/sax/document.py rename to external/suds/sax/document.py diff --git a/suds/sax/element.py b/external/suds/sax/element.py similarity index 100% rename from suds/sax/element.py rename to external/suds/sax/element.py diff --git a/suds/sax/enc.py b/external/suds/sax/enc.py similarity index 100% rename from suds/sax/enc.py rename to external/suds/sax/enc.py diff --git a/suds/sax/parser.py b/external/suds/sax/parser.py similarity index 100% rename from suds/sax/parser.py rename to external/suds/sax/parser.py diff --git a/suds/sax/text.py b/external/suds/sax/text.py similarity index 99% rename from suds/sax/text.py rename to external/suds/sax/text.py index 4d74ca5..c43f227 100644 --- a/suds/sax/text.py +++ b/external/suds/sax/text.py @@ -22,7 +22,7 @@ from suds.sax import * -class Text( str ): +class Text( type(u"") ): """ An XML text object used to represent text content. @ivar lang: The (optional) language flag. diff --git a/suds/servicedefinition.py b/external/suds/servicedefinition.py similarity index 100% rename from suds/servicedefinition.py rename to external/suds/servicedefinition.py diff --git a/suds/serviceproxy.py b/external/suds/serviceproxy.py similarity index 100% rename from suds/serviceproxy.py rename to external/suds/serviceproxy.py diff --git a/suds/soaparray.py b/external/suds/soaparray.py similarity index 100% rename from suds/soaparray.py rename to external/suds/soaparray.py diff --git a/suds/store.py b/external/suds/store.py similarity index 100% rename from suds/store.py rename to external/suds/store.py diff --git a/suds/sudsobject.py b/external/suds/sudsobject.py similarity index 100% rename from suds/sudsobject.py rename to external/suds/sudsobject.py diff --git a/suds/transport/__init__.py b/external/suds/transport/__init__.py similarity index 100% rename from suds/transport/__init__.py rename to external/suds/transport/__init__.py diff --git a/suds/transport/http.py b/external/suds/transport/http.py similarity index 100% rename from suds/transport/http.py rename to external/suds/transport/http.py diff --git a/suds/transport/https.py b/external/suds/transport/https.py similarity index 100% rename from suds/transport/https.py rename to external/suds/transport/https.py diff --git a/suds/transport/options.py b/external/suds/transport/options.py similarity index 100% rename from suds/transport/options.py rename to external/suds/transport/options.py diff --git a/suds/umx/__init__.py b/external/suds/umx/__init__.py similarity index 100% rename from suds/umx/__init__.py rename to external/suds/umx/__init__.py diff --git a/suds/umx/attrlist.py b/external/suds/umx/attrlist.py similarity index 100% rename from suds/umx/attrlist.py rename to external/suds/umx/attrlist.py diff --git a/suds/umx/basic.py b/external/suds/umx/basic.py similarity index 100% rename from suds/umx/basic.py rename to external/suds/umx/basic.py diff --git a/suds/umx/core.py b/external/suds/umx/core.py similarity index 100% rename from suds/umx/core.py rename to external/suds/umx/core.py diff --git a/suds/umx/encoded.py b/external/suds/umx/encoded.py similarity index 100% rename from suds/umx/encoded.py rename to external/suds/umx/encoded.py diff --git a/suds/umx/typed.py b/external/suds/umx/typed.py similarity index 100% rename from suds/umx/typed.py rename to external/suds/umx/typed.py diff --git a/suds/version.py b/external/suds/version.py similarity index 100% rename from suds/version.py rename to external/suds/version.py diff --git a/suds/wsdl.py b/external/suds/wsdl.py similarity index 100% rename from suds/wsdl.py rename to external/suds/wsdl.py diff --git a/suds/wsse.py b/external/suds/wsse.py similarity index 100% rename from suds/wsse.py rename to external/suds/wsse.py diff --git a/suds/xsd/__init__.py b/external/suds/xsd/__init__.py similarity index 100% rename from suds/xsd/__init__.py rename to external/suds/xsd/__init__.py diff --git a/suds/xsd/deplist.py b/external/suds/xsd/deplist.py similarity index 100% rename from suds/xsd/deplist.py rename to external/suds/xsd/deplist.py diff --git a/suds/xsd/doctor.py b/external/suds/xsd/doctor.py similarity index 100% rename from suds/xsd/doctor.py rename to external/suds/xsd/doctor.py diff --git a/suds/xsd/query.py b/external/suds/xsd/query.py similarity index 100% rename from suds/xsd/query.py rename to external/suds/xsd/query.py diff --git a/suds/xsd/schema.py b/external/suds/xsd/schema.py similarity index 100% rename from suds/xsd/schema.py rename to external/suds/xsd/schema.py diff --git a/suds/xsd/sxbase.py b/external/suds/xsd/sxbase.py similarity index 100% rename from suds/xsd/sxbase.py rename to external/suds/xsd/sxbase.py diff --git a/suds/xsd/sxbasic.py b/external/suds/xsd/sxbasic.py similarity index 100% rename from suds/xsd/sxbasic.py rename to external/suds/xsd/sxbasic.py diff --git a/suds/xsd/sxbuiltin.py b/external/suds/xsd/sxbuiltin.py similarity index 100% rename from suds/xsd/sxbuiltin.py rename to external/suds/xsd/sxbuiltin.py diff --git a/moose b/moose index 3cf215f..d4b51ed 100755 --- a/moose +++ b/moose @@ -2,5 +2,4 @@ import moosegui print( moosegui.__file__ ) -print( dir(moosegui) ) moosegui.main( ) diff --git a/setup.py b/setup.py index b53fee8..b5c9be5 100644 --- a/setup.py +++ b/setup.py @@ -26,14 +26,16 @@ version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", long_description = open( 'README.md' ).read(), - packages = [ "moosegui", 'moosegui.plugins' - , 'moosegui.demos', 'moosegui.suds' + packages = [ + "moosegui", 'moosegui.plugins' , 'moosegui.demos' + , 'moosegui.suds', 'moosegui.suds.bindings' + , 'moosegui.suds.transport', 'moosegui.suds.mx' + , 'moosegui.suds.umx', 'moosegui.suds.xsd', 'moosegui.suds.sax' ], package_dir = { 'moosegui' : 'src' - , 'moosegui.plugins' : 'src/plugins' , 'moosegui.demos' : 'demos' - , 'moosegui.suds' : 'suds' + , 'moosegui.suds' : 'external/suds' }, package_data = { 'moosegui' : [ '../moose', 'icons/*', 'colormaps/*' ] diff --git a/src/biomodelsclient.py b/src/biomodelsclient.py index e02776b..b979eba 100644 --- a/src/biomodelsclient.py +++ b/src/biomodelsclient.py @@ -21,37 +21,13 @@ # It imitates the SOAP client written in JAVA # availabele at biomodels website. -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - import os import pickle import moose from suds.client import Client from suds.transport.http import HttpTransport as SudsHttpTransport -from . import config +from moosegui import config BIOMODELS_WSDL_URI = 'http://www.ebi.ac.uk/biomodels-main/services/BioModelsWebServices?wsdl' proxyOpts = dict() @@ -289,5 +265,3 @@ def enableimportButton(self): #clientWidget.exec_() app.exec_() -# -# biomodelsclient.py ends here From e161b52a38c85266066ef5241947318b54690fe1 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 23 Nov 2016 11:14:16 +0530 Subject: [PATCH 29/66] Now time to fix the icon paths. --- __init__.py | 2 +- {examples => demos/examples}/.gitignore | 0 {examples => demos/examples}/.travis.yml | 0 .../examples}/Fig2_elecModels/Fig2A.py | 0 .../Fig2_elecModels/Fig2A_analysis.py | 0 .../examples}/Fig2_elecModels/Fig2C.py | 0 .../examples}/Fig2_elecModels/Fig2D.py | 0 .../examples}/Fig2_elecModels/Fig2E.py | 0 .../Fig2_elecModels/cells/CA1.morph.xml | 0 .../Fig2_elecModels/cells/K-18.CNG.swc | 0 .../Fig2_elecModels/cells/VHC-neuron.CNG.swc | 0 .../Fig2_elecModels/cells/ca1_minimal.p | 0 .../Fig2_elecModels/cells/h10.CNG.swc | 0 .../Fig2_elecModels/cells/ko20x-07.CNG.swc | 0 .../Fig2_elecModels/chans/CA1.morph.xml | 0 .../chans/CA1.morph.xml.REMOVED.git-id | 0 .../examples}/Fig2_elecModels/chans/Ca.xml | 0 .../Fig2_elecModels/chans/CaConc.xml | 0 .../Fig2_elecModels/chans/DoubExpSyn.xml | 0 .../Fig2_elecModels/chans/Generated.net.xml | 0 .../examples}/Fig2_elecModels/chans/Glu.xml | 0 .../Fig2_elecModels/chans/HChannel.xml | 0 .../Fig2_elecModels/chans/KChannel_HH.xml | 0 .../Fig2_elecModels/chans/LeakConductance.xml | 0 .../examples}/Fig2_elecModels/chans/NMDA.xml | 0 .../Fig2_elecModels/chans/NaChannel_HH.xml | 0 .../examples}/Fig2_elecModels/chans/hd.xml | 0 .../examples}/Fig2_elecModels/chans/kad.xml | 0 .../examples}/Fig2_elecModels/chans/kap.xml | 0 .../examples}/Fig2_elecModels/chans/kdr.xml | 0 .../examples}/Fig2_elecModels/chans/na3.xml | 0 .../examples}/Fig2_elecModels/chans/nax.xml | 0 .../examples}/Fig2_elecModels/chans/pas.xml | 0 .../examples}/Fig3_chemModels/Fig3ABC.g | 0 .../examples}/Fig3_chemModels/Fig3D.py | 0 .../examples}/Fig3_chemModels/Fig3_NEURON.py | 0 .../examples}/Fig4_ReacDiff/CaMKII_merged77.g | 0 .../examples}/Fig4_ReacDiff/Fig4B.py | 0 .../examples}/Fig4_ReacDiff/Fig4CDEF.py | 0 .../examples}/Fig4_ReacDiff/Fig4GHIJ.py | 0 .../examples}/Fig4_ReacDiff/ca1_minimal.p | 0 .../examples}/Fig4_ReacDiff/rxdSpineSize.py | 0 .../examples}/Fig5_CellMultiscale/Fig5A.py | 0 .../examples}/Fig5_CellMultiscale/Fig5BCD.py | 0 .../Fig5_CellMultiscale/cells/970529c.CNG.swc | 0 .../Fig5_CellMultiscale/cells/CA1.morph.xml | 0 .../cells/DHC-neuron.CNG.swc | 0 .../cells/VHC-neuron.CNG.swc | 0 .../Fig5_CellMultiscale/cells/ca1_minimal.p | 0 .../Fig5_CellMultiscale/cells/h10.CNG.swc | 0 .../Fig5_CellMultiscale/chans/CA1.morph.xml | 0 .../Fig5_CellMultiscale/chans/Ca.xml | 0 .../Fig5_CellMultiscale/chans/CaConc.xml | 0 .../Fig5_CellMultiscale/chans/DoubExpSyn.xml | 0 .../chans/Generated.net.xml | 0 .../Fig5_CellMultiscale/chans/Glu.xml | 0 .../Fig5_CellMultiscale/chans/HChannel.xml | 0 .../Fig5_CellMultiscale/chans/NMDA.xml | 0 .../Fig5_CellMultiscale/chans/hd.xml | 0 .../Fig5_CellMultiscale/chans/kad.xml | 0 .../Fig5_CellMultiscale/chans/kap.xml | 0 .../Fig5_CellMultiscale/chans/kdr.xml | 0 .../Fig5_CellMultiscale/chans/na3.xml | 0 .../Fig5_CellMultiscale/chans/nax.xml | 0 .../Fig5_CellMultiscale/chans/pas.xml | 0 .../Fig5_CellMultiscale/chem/psd53.g | 0 .../examples}/Fig6_NetMultiscale/Fig6A.py | 0 .../examples}/Fig6_NetMultiscale/Fig6BCDE.py | 0 .../Fig6_NetMultiscale/ReducedModel.py | 0 .../cells_channels/CA1.morph.spines.xml | 0 .../cells_channels/CA1.morph.xml | 0 .../cells_channels/CA1_nochans.morph.xml | 0 .../cells_channels/CA1spiny.morph.xml | 0 .../cells_channels/CA1spiny7_0.morph.xml | 0 .../Fig6_NetMultiscale/cells_channels/Ca.xml | 0 .../cells_channels/CaConc.xml | 0 .../cells_channels/Ca_conc.xml | 0 .../cells_channels/GABA.xml | 0 .../Fig6_NetMultiscale/cells_channels/Glu.xml | 0 .../cells_channels/NMDA.xml | 0 .../cells_channels/Pyramidal_KM.xml | 0 .../cells_channels/Traub_KA.xml | 0 .../cells_channels/Traub_KCaAHP.xml | 0 .../cells_channels/ca1_minimal.p | 0 .../Fig6_NetMultiscale/cells_channels/hd.xml | 0 .../cells_channels/hd_minus73.xml | 0 .../Fig6_NetMultiscale/cells_channels/kad.xml | 0 .../Fig6_NetMultiscale/cells_channels/kap.xml | 0 .../Fig6_NetMultiscale/cells_channels/kdr.xml | 0 .../Fig6_NetMultiscale/cells_channels/na3.xml | 0 .../Fig6_NetMultiscale/cells_channels/nax.xml | 0 .../Fig6_NetMultiscale/cells_channels/pas.xml | 0 .../examples}/Fig6_NetMultiscale/psd53.g | 0 {examples => demos/examples}/README | 0 {examples => demos/examples}/README.md | 0 {examples => demos/examples}/rxdSpineSize.py | 0 {examples => demos/examples}/squid/README.txt | 0 .../examples}/squid/channeleditor.py | 0 .../examples}/squid/electronics.py | 0 {examples => demos/examples}/squid/help.html | 0 {examples => demos/examples}/squid/help.org | 0 .../squid/images/navigationtoolbar.jpg | Bin {examples => demos/examples}/squid/squid.py | 0 .../examples}/squid/squid_demo.py | 0 .../examples}/squid/squid_setup.py | 0 .../examples}/squid/test_squid.py | 0 setup.py | 21 ++++++------- {mgui => src}/GenericTypes.py | 0 {mgui => src}/MWindow.py | 26 ++++++++-------- {mgui => src}/MdiArea.py | 0 {mgui => src}/PlotWidgetContainer.py | 0 {mgui => src}/RunWidget.py | 0 {mgui => src}/SettingsDialog.py | 0 {mgui => src}/TooltipInfo.py | 0 {mgui => src}/__init__.py | 0 {mgui => src}/biomodelsclient.py | 0 {mgui => src}/checkcombobox.py | 0 {mgui => src}/colormaps/__init__.py | 0 {mgui => src}/colormaps/fire | 0 {mgui => src}/colormaps/greenfire | 0 {mgui => src}/colormaps/grey | 0 {mgui => src}/colormaps/heat | 0 {mgui => src}/colormaps/jet | 0 {mgui => src}/colormaps/rainbow2.pkl | 0 {mgui => src}/colormaps/redhot | 0 {mgui => src}/config.py | 0 {mgui => src}/configwidget.py | 0 {mgui => src}/defaults.py | 0 {mgui => src}/examples.py | 0 {mgui => src}/global_constants.py | 0 {mgui => src}/icons/QMdiBackground.png | Bin {mgui => src}/icons/add.png | Bin {mgui => src}/icons/add_graph.png | Bin {mgui => src}/icons/arrow.png | Bin {mgui => src}/icons/arrow_undo.png | Bin {mgui => src}/icons/classIcon/BufPool.png | Bin {mgui => src}/icons/classIcon/CubeMesh.png | Bin {mgui => src}/icons/classIcon/CylMesh.png | Bin {mgui => src}/icons/classIcon/Enz.png | Bin {mgui => src}/icons/classIcon/FuncPool.png | Bin {mgui => src}/icons/classIcon/Function.png | Bin {mgui => src}/icons/classIcon/MMenz.png | Bin {mgui => src}/icons/classIcon/Pool.png | Bin {mgui => src}/icons/classIcon/Reac.png | Bin .../icons/classIcon/StimulusTable.png | Bin {mgui => src}/icons/classIcon/SumFunc.png | Bin {mgui => src}/icons/clone.svg | 0 {mgui => src}/icons/connection.png | Bin {mgui => src}/icons/continue.png | Bin {mgui => src}/icons/delete.svg | 0 {mgui => src}/icons/delete_graph.png | Bin {mgui => src}/icons/grid.png | Bin {mgui => src}/icons/hand.png | Bin {mgui => src}/icons/help.png | Bin {mgui => src}/icons/hopfield.png | Bin {mgui => src}/icons/list.png | Bin {mgui => src}/icons/moose_icon.png | Bin {mgui => src}/icons/moose_icon_64x64.png | Bin {mgui => src}/icons/moose_icon_large.png | Bin {mgui => src}/icons/move.svg | 0 {mgui => src}/icons/plot.svg | 0 {mgui => src}/icons/reset.png | Bin {mgui => src}/icons/run.png | Bin {mgui => src}/icons/runtime.png | Bin {mgui => src}/icons/squid.png | Bin {mgui => src}/icons/stop.png | Bin ...straight_connector_with_filled_circles.png | Bin {mgui => src}/icons/wrench.png | Bin {mgui => src}/loaderdialog.py | 0 {mgui => src}/mexception.py | 0 {mgui => src}/mgui.py | 4 +-- {mgui => src}/mload.py | 0 moose => src/moose | 0 {mgui => src}/mplot.py | 0 {mgui => src}/mplugin.py | 0 {mgui => src}/msearch.py | 0 {mgui => src}/mtoolbutton.py | 0 {mgui => src}/mtree.py | 0 {mgui => src}/mtypes.py | 0 {mgui => src}/neuroextractor.py | 0 {mgui => src}/newmodeldialog.py | 0 {mgui => src}/objectedit.py | 8 ++--- {mgui => src}/plugins/NeuroKit.py | 0 {mgui => src}/plugins/NeuroKitEditor.py | 0 {mgui => src}/plugins/NeuroKitRunner.py | 0 {mgui => src}/plugins/NeuroKitVisualizer.py | 4 +-- {mgui => src}/plugins/PreferencesPresenter.py | 4 +-- {mgui => src}/plugins/PreferencesView.py | 0 {mgui => src}/plugins/README | 0 {mgui => src}/plugins/Runner.py | 0 {mgui => src}/plugins/__init__.py | 0 {mgui => src}/plugins/buildkkit.py | 14 ++++----- {mgui => src}/plugins/constants.py | 0 .../plugins/datastore/preferences.json | 0 {mgui => src}/plugins/default.py | 26 ++++++++-------- {mgui => src}/plugins/defines.py | 0 {mgui => src}/plugins/kkit.py | 28 +++++++++--------- {mgui => src}/plugins/kkitCalcArrow.py | 0 {mgui => src}/plugins/kkitOrdinateUtil.py | 0 {mgui => src}/plugins/kkitQGraphics.py | 2 +- {mgui => src}/plugins/kkitUtil.py | 2 +- {mgui => src}/plugins/kkitViewcontrol.py | 12 ++++---- {mgui => src}/plugins/list.txt | 0 {mgui => src}/plugins/modelBuild.py | 10 +++---- {mgui => src}/plugins/setsolver.py | 0 {mgui => src}/plugins/test_plotwidget.py | 0 {mgui => src}/scishell.py | 0 {mgui => src}/shell.py | 0 {mgui => src}/sidebar.py | 0 {mgui => src}/utils.py | 0 suds/sax/text.py | 2 +- 211 files changed, 83 insertions(+), 82 deletions(-) rename {examples => demos/examples}/.gitignore (100%) rename {examples => demos/examples}/.travis.yml (100%) rename {examples => demos/examples}/Fig2_elecModels/Fig2A.py (100%) rename {examples => demos/examples}/Fig2_elecModels/Fig2A_analysis.py (100%) rename {examples => demos/examples}/Fig2_elecModels/Fig2C.py (100%) rename {examples => demos/examples}/Fig2_elecModels/Fig2D.py (100%) rename {examples => demos/examples}/Fig2_elecModels/Fig2E.py (100%) rename {examples => demos/examples}/Fig2_elecModels/cells/CA1.morph.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/cells/K-18.CNG.swc (100%) rename {examples => demos/examples}/Fig2_elecModels/cells/VHC-neuron.CNG.swc (100%) rename {examples => demos/examples}/Fig2_elecModels/cells/ca1_minimal.p (100%) rename {examples => demos/examples}/Fig2_elecModels/cells/h10.CNG.swc (100%) rename {examples => demos/examples}/Fig2_elecModels/cells/ko20x-07.CNG.swc (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/CA1.morph.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/Ca.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/CaConc.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/DoubExpSyn.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/Generated.net.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/Glu.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/HChannel.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/KChannel_HH.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/LeakConductance.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/NMDA.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/NaChannel_HH.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/hd.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/kad.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/kap.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/kdr.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/na3.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/nax.xml (100%) rename {examples => demos/examples}/Fig2_elecModels/chans/pas.xml (100%) rename {examples => demos/examples}/Fig3_chemModels/Fig3ABC.g (100%) rename {examples => demos/examples}/Fig3_chemModels/Fig3D.py (100%) rename {examples => demos/examples}/Fig3_chemModels/Fig3_NEURON.py (100%) rename {examples => demos/examples}/Fig4_ReacDiff/CaMKII_merged77.g (100%) rename {examples => demos/examples}/Fig4_ReacDiff/Fig4B.py (100%) rename {examples => demos/examples}/Fig4_ReacDiff/Fig4CDEF.py (100%) rename {examples => demos/examples}/Fig4_ReacDiff/Fig4GHIJ.py (100%) rename {examples => demos/examples}/Fig4_ReacDiff/ca1_minimal.p (100%) rename {examples => demos/examples}/Fig4_ReacDiff/rxdSpineSize.py (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/Fig5A.py (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/Fig5BCD.py (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/cells/970529c.CNG.swc (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/cells/CA1.morph.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/cells/ca1_minimal.p (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/cells/h10.CNG.swc (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/CA1.morph.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/Ca.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/CaConc.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/DoubExpSyn.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/Generated.net.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/Glu.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/HChannel.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/NMDA.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/hd.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/kad.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/kap.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/kdr.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/na3.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/nax.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chans/pas.xml (100%) rename {examples => demos/examples}/Fig5_CellMultiscale/chem/psd53.g (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/Fig6A.py (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/Fig6BCDE.py (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/ReducedModel.py (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/CA1.morph.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/Ca.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/CaConc.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/Ca_conc.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/GABA.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/Glu.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/NMDA.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/Traub_KA.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/ca1_minimal.p (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/hd.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/hd_minus73.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/kad.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/kap.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/kdr.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/na3.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/nax.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/cells_channels/pas.xml (100%) rename {examples => demos/examples}/Fig6_NetMultiscale/psd53.g (100%) rename {examples => demos/examples}/README (100%) rename {examples => demos/examples}/README.md (100%) rename {examples => demos/examples}/rxdSpineSize.py (100%) rename {examples => demos/examples}/squid/README.txt (100%) rename {examples => demos/examples}/squid/channeleditor.py (100%) rename {examples => demos/examples}/squid/electronics.py (100%) rename {examples => demos/examples}/squid/help.html (100%) rename {examples => demos/examples}/squid/help.org (100%) rename {examples => demos/examples}/squid/images/navigationtoolbar.jpg (100%) rename {examples => demos/examples}/squid/squid.py (100%) rename {examples => demos/examples}/squid/squid_demo.py (100%) rename {examples => demos/examples}/squid/squid_setup.py (100%) rename {examples => demos/examples}/squid/test_squid.py (100%) rename {mgui => src}/GenericTypes.py (100%) rename {mgui => src}/MWindow.py (98%) rename {mgui => src}/MdiArea.py (100%) rename {mgui => src}/PlotWidgetContainer.py (100%) rename {mgui => src}/RunWidget.py (100%) rename {mgui => src}/SettingsDialog.py (100%) rename {mgui => src}/TooltipInfo.py (100%) rename {mgui => src}/__init__.py (100%) rename {mgui => src}/biomodelsclient.py (100%) rename {mgui => src}/checkcombobox.py (100%) rename {mgui => src}/colormaps/__init__.py (100%) rename {mgui => src}/colormaps/fire (100%) rename {mgui => src}/colormaps/greenfire (100%) rename {mgui => src}/colormaps/grey (100%) rename {mgui => src}/colormaps/heat (100%) rename {mgui => src}/colormaps/jet (100%) rename {mgui => src}/colormaps/rainbow2.pkl (100%) rename {mgui => src}/colormaps/redhot (100%) rename {mgui => src}/config.py (100%) rename {mgui => src}/configwidget.py (100%) rename {mgui => src}/defaults.py (100%) rename {mgui => src}/examples.py (100%) rename {mgui => src}/global_constants.py (100%) rename {mgui => src}/icons/QMdiBackground.png (100%) rename {mgui => src}/icons/add.png (100%) rename {mgui => src}/icons/add_graph.png (100%) rename {mgui => src}/icons/arrow.png (100%) rename {mgui => src}/icons/arrow_undo.png (100%) rename {mgui => src}/icons/classIcon/BufPool.png (100%) rename {mgui => src}/icons/classIcon/CubeMesh.png (100%) rename {mgui => src}/icons/classIcon/CylMesh.png (100%) rename {mgui => src}/icons/classIcon/Enz.png (100%) rename {mgui => src}/icons/classIcon/FuncPool.png (100%) rename {mgui => src}/icons/classIcon/Function.png (100%) rename {mgui => src}/icons/classIcon/MMenz.png (100%) rename {mgui => src}/icons/classIcon/Pool.png (100%) rename {mgui => src}/icons/classIcon/Reac.png (100%) rename {mgui => src}/icons/classIcon/StimulusTable.png (100%) rename {mgui => src}/icons/classIcon/SumFunc.png (100%) rename {mgui => src}/icons/clone.svg (100%) rename {mgui => src}/icons/connection.png (100%) rename {mgui => src}/icons/continue.png (100%) rename {mgui => src}/icons/delete.svg (100%) rename {mgui => src}/icons/delete_graph.png (100%) rename {mgui => src}/icons/grid.png (100%) rename {mgui => src}/icons/hand.png (100%) rename {mgui => src}/icons/help.png (100%) rename {mgui => src}/icons/hopfield.png (100%) rename {mgui => src}/icons/list.png (100%) rename {mgui => src}/icons/moose_icon.png (100%) rename {mgui => src}/icons/moose_icon_64x64.png (100%) rename {mgui => src}/icons/moose_icon_large.png (100%) rename {mgui => src}/icons/move.svg (100%) rename {mgui => src}/icons/plot.svg (100%) rename {mgui => src}/icons/reset.png (100%) rename {mgui => src}/icons/run.png (100%) rename {mgui => src}/icons/runtime.png (100%) rename {mgui => src}/icons/squid.png (100%) rename {mgui => src}/icons/stop.png (100%) rename {mgui => src}/icons/straight_connector_with_filled_circles.png (100%) rename {mgui => src}/icons/wrench.png (100%) rename {mgui => src}/loaderdialog.py (100%) rename {mgui => src}/mexception.py (100%) rename {mgui => src}/mgui.py (95%) rename {mgui => src}/mload.py (100%) rename moose => src/moose (100%) rename {mgui => src}/mplot.py (100%) rename {mgui => src}/mplugin.py (100%) rename {mgui => src}/msearch.py (100%) rename {mgui => src}/mtoolbutton.py (100%) rename {mgui => src}/mtree.py (100%) rename {mgui => src}/mtypes.py (100%) rename {mgui => src}/neuroextractor.py (100%) rename {mgui => src}/newmodeldialog.py (100%) rename {mgui => src}/objectedit.py (99%) rename {mgui => src}/plugins/NeuroKit.py (100%) rename {mgui => src}/plugins/NeuroKitEditor.py (100%) rename {mgui => src}/plugins/NeuroKitRunner.py (100%) rename {mgui => src}/plugins/NeuroKitVisualizer.py (98%) rename {mgui => src}/plugins/PreferencesPresenter.py (99%) rename {mgui => src}/plugins/PreferencesView.py (100%) rename {mgui => src}/plugins/README (100%) rename {mgui => src}/plugins/Runner.py (100%) rename {mgui => src}/plugins/__init__.py (100%) rename {mgui => src}/plugins/buildkkit.py (98%) rename {mgui => src}/plugins/constants.py (100%) rename {mgui => src}/plugins/datastore/preferences.json (100%) rename {mgui => src}/plugins/default.py (98%) rename {mgui => src}/plugins/defines.py (100%) rename {mgui => src}/plugins/kkit.py (98%) rename {mgui => src}/plugins/kkitCalcArrow.py (100%) rename {mgui => src}/plugins/kkitOrdinateUtil.py (100%) rename {mgui => src}/plugins/kkitQGraphics.py (99%) rename {mgui => src}/plugins/kkitUtil.py (99%) rename {mgui => src}/plugins/kkitViewcontrol.py (99%) rename {mgui => src}/plugins/list.txt (100%) rename {mgui => src}/plugins/modelBuild.py (98%) rename {mgui => src}/plugins/setsolver.py (100%) rename {mgui => src}/plugins/test_plotwidget.py (100%) rename {mgui => src}/scishell.py (100%) rename {mgui => src}/shell.py (100%) rename {mgui => src}/sidebar.py (100%) rename {mgui => src}/utils.py (100%) diff --git a/__init__.py b/__init__.py index f294cf0..6d6c488 100644 --- a/__init__.py +++ b/__init__.py @@ -1 +1 @@ -from moosegui.mgui import * +from moosegui.moosegui import * diff --git a/examples/.gitignore b/demos/examples/.gitignore similarity index 100% rename from examples/.gitignore rename to demos/examples/.gitignore diff --git a/examples/.travis.yml b/demos/examples/.travis.yml similarity index 100% rename from examples/.travis.yml rename to demos/examples/.travis.yml diff --git a/examples/Fig2_elecModels/Fig2A.py b/demos/examples/Fig2_elecModels/Fig2A.py similarity index 100% rename from examples/Fig2_elecModels/Fig2A.py rename to demos/examples/Fig2_elecModels/Fig2A.py diff --git a/examples/Fig2_elecModels/Fig2A_analysis.py b/demos/examples/Fig2_elecModels/Fig2A_analysis.py similarity index 100% rename from examples/Fig2_elecModels/Fig2A_analysis.py rename to demos/examples/Fig2_elecModels/Fig2A_analysis.py diff --git a/examples/Fig2_elecModels/Fig2C.py b/demos/examples/Fig2_elecModels/Fig2C.py similarity index 100% rename from examples/Fig2_elecModels/Fig2C.py rename to demos/examples/Fig2_elecModels/Fig2C.py diff --git a/examples/Fig2_elecModels/Fig2D.py b/demos/examples/Fig2_elecModels/Fig2D.py similarity index 100% rename from examples/Fig2_elecModels/Fig2D.py rename to demos/examples/Fig2_elecModels/Fig2D.py diff --git a/examples/Fig2_elecModels/Fig2E.py b/demos/examples/Fig2_elecModels/Fig2E.py similarity index 100% rename from examples/Fig2_elecModels/Fig2E.py rename to demos/examples/Fig2_elecModels/Fig2E.py diff --git a/examples/Fig2_elecModels/cells/CA1.morph.xml b/demos/examples/Fig2_elecModels/cells/CA1.morph.xml similarity index 100% rename from examples/Fig2_elecModels/cells/CA1.morph.xml rename to demos/examples/Fig2_elecModels/cells/CA1.morph.xml diff --git a/examples/Fig2_elecModels/cells/K-18.CNG.swc b/demos/examples/Fig2_elecModels/cells/K-18.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/K-18.CNG.swc rename to demos/examples/Fig2_elecModels/cells/K-18.CNG.swc diff --git a/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc b/demos/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc rename to demos/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc diff --git a/examples/Fig2_elecModels/cells/ca1_minimal.p b/demos/examples/Fig2_elecModels/cells/ca1_minimal.p similarity index 100% rename from examples/Fig2_elecModels/cells/ca1_minimal.p rename to demos/examples/Fig2_elecModels/cells/ca1_minimal.p diff --git a/examples/Fig2_elecModels/cells/h10.CNG.swc b/demos/examples/Fig2_elecModels/cells/h10.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/h10.CNG.swc rename to demos/examples/Fig2_elecModels/cells/h10.CNG.swc diff --git a/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc b/demos/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc similarity index 100% rename from examples/Fig2_elecModels/cells/ko20x-07.CNG.swc rename to demos/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc diff --git a/examples/Fig2_elecModels/chans/CA1.morph.xml b/demos/examples/Fig2_elecModels/chans/CA1.morph.xml similarity index 100% rename from examples/Fig2_elecModels/chans/CA1.morph.xml rename to demos/examples/Fig2_elecModels/chans/CA1.morph.xml diff --git a/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id b/demos/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id similarity index 100% rename from examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id rename to demos/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id diff --git a/examples/Fig2_elecModels/chans/Ca.xml b/demos/examples/Fig2_elecModels/chans/Ca.xml similarity index 100% rename from examples/Fig2_elecModels/chans/Ca.xml rename to demos/examples/Fig2_elecModels/chans/Ca.xml diff --git a/examples/Fig2_elecModels/chans/CaConc.xml b/demos/examples/Fig2_elecModels/chans/CaConc.xml similarity index 100% rename from examples/Fig2_elecModels/chans/CaConc.xml rename to demos/examples/Fig2_elecModels/chans/CaConc.xml diff --git a/examples/Fig2_elecModels/chans/DoubExpSyn.xml b/demos/examples/Fig2_elecModels/chans/DoubExpSyn.xml similarity index 100% rename from examples/Fig2_elecModels/chans/DoubExpSyn.xml rename to demos/examples/Fig2_elecModels/chans/DoubExpSyn.xml diff --git a/examples/Fig2_elecModels/chans/Generated.net.xml b/demos/examples/Fig2_elecModels/chans/Generated.net.xml similarity index 100% rename from examples/Fig2_elecModels/chans/Generated.net.xml rename to demos/examples/Fig2_elecModels/chans/Generated.net.xml diff --git a/examples/Fig2_elecModels/chans/Glu.xml b/demos/examples/Fig2_elecModels/chans/Glu.xml similarity index 100% rename from examples/Fig2_elecModels/chans/Glu.xml rename to demos/examples/Fig2_elecModels/chans/Glu.xml diff --git a/examples/Fig2_elecModels/chans/HChannel.xml b/demos/examples/Fig2_elecModels/chans/HChannel.xml similarity index 100% rename from examples/Fig2_elecModels/chans/HChannel.xml rename to demos/examples/Fig2_elecModels/chans/HChannel.xml diff --git a/examples/Fig2_elecModels/chans/KChannel_HH.xml b/demos/examples/Fig2_elecModels/chans/KChannel_HH.xml similarity index 100% rename from examples/Fig2_elecModels/chans/KChannel_HH.xml rename to demos/examples/Fig2_elecModels/chans/KChannel_HH.xml diff --git a/examples/Fig2_elecModels/chans/LeakConductance.xml b/demos/examples/Fig2_elecModels/chans/LeakConductance.xml similarity index 100% rename from examples/Fig2_elecModels/chans/LeakConductance.xml rename to demos/examples/Fig2_elecModels/chans/LeakConductance.xml diff --git a/examples/Fig2_elecModels/chans/NMDA.xml b/demos/examples/Fig2_elecModels/chans/NMDA.xml similarity index 100% rename from examples/Fig2_elecModels/chans/NMDA.xml rename to demos/examples/Fig2_elecModels/chans/NMDA.xml diff --git a/examples/Fig2_elecModels/chans/NaChannel_HH.xml b/demos/examples/Fig2_elecModels/chans/NaChannel_HH.xml similarity index 100% rename from examples/Fig2_elecModels/chans/NaChannel_HH.xml rename to demos/examples/Fig2_elecModels/chans/NaChannel_HH.xml diff --git a/examples/Fig2_elecModels/chans/hd.xml b/demos/examples/Fig2_elecModels/chans/hd.xml similarity index 100% rename from examples/Fig2_elecModels/chans/hd.xml rename to demos/examples/Fig2_elecModels/chans/hd.xml diff --git a/examples/Fig2_elecModels/chans/kad.xml b/demos/examples/Fig2_elecModels/chans/kad.xml similarity index 100% rename from examples/Fig2_elecModels/chans/kad.xml rename to demos/examples/Fig2_elecModels/chans/kad.xml diff --git a/examples/Fig2_elecModels/chans/kap.xml b/demos/examples/Fig2_elecModels/chans/kap.xml similarity index 100% rename from examples/Fig2_elecModels/chans/kap.xml rename to demos/examples/Fig2_elecModels/chans/kap.xml diff --git a/examples/Fig2_elecModels/chans/kdr.xml b/demos/examples/Fig2_elecModels/chans/kdr.xml similarity index 100% rename from examples/Fig2_elecModels/chans/kdr.xml rename to demos/examples/Fig2_elecModels/chans/kdr.xml diff --git a/examples/Fig2_elecModels/chans/na3.xml b/demos/examples/Fig2_elecModels/chans/na3.xml similarity index 100% rename from examples/Fig2_elecModels/chans/na3.xml rename to demos/examples/Fig2_elecModels/chans/na3.xml diff --git a/examples/Fig2_elecModels/chans/nax.xml b/demos/examples/Fig2_elecModels/chans/nax.xml similarity index 100% rename from examples/Fig2_elecModels/chans/nax.xml rename to demos/examples/Fig2_elecModels/chans/nax.xml diff --git a/examples/Fig2_elecModels/chans/pas.xml b/demos/examples/Fig2_elecModels/chans/pas.xml similarity index 100% rename from examples/Fig2_elecModels/chans/pas.xml rename to demos/examples/Fig2_elecModels/chans/pas.xml diff --git a/examples/Fig3_chemModels/Fig3ABC.g b/demos/examples/Fig3_chemModels/Fig3ABC.g similarity index 100% rename from examples/Fig3_chemModels/Fig3ABC.g rename to demos/examples/Fig3_chemModels/Fig3ABC.g diff --git a/examples/Fig3_chemModels/Fig3D.py b/demos/examples/Fig3_chemModels/Fig3D.py similarity index 100% rename from examples/Fig3_chemModels/Fig3D.py rename to demos/examples/Fig3_chemModels/Fig3D.py diff --git a/examples/Fig3_chemModels/Fig3_NEURON.py b/demos/examples/Fig3_chemModels/Fig3_NEURON.py similarity index 100% rename from examples/Fig3_chemModels/Fig3_NEURON.py rename to demos/examples/Fig3_chemModels/Fig3_NEURON.py diff --git a/examples/Fig4_ReacDiff/CaMKII_merged77.g b/demos/examples/Fig4_ReacDiff/CaMKII_merged77.g similarity index 100% rename from examples/Fig4_ReacDiff/CaMKII_merged77.g rename to demos/examples/Fig4_ReacDiff/CaMKII_merged77.g diff --git a/examples/Fig4_ReacDiff/Fig4B.py b/demos/examples/Fig4_ReacDiff/Fig4B.py similarity index 100% rename from examples/Fig4_ReacDiff/Fig4B.py rename to demos/examples/Fig4_ReacDiff/Fig4B.py diff --git a/examples/Fig4_ReacDiff/Fig4CDEF.py b/demos/examples/Fig4_ReacDiff/Fig4CDEF.py similarity index 100% rename from examples/Fig4_ReacDiff/Fig4CDEF.py rename to demos/examples/Fig4_ReacDiff/Fig4CDEF.py diff --git a/examples/Fig4_ReacDiff/Fig4GHIJ.py b/demos/examples/Fig4_ReacDiff/Fig4GHIJ.py similarity index 100% rename from examples/Fig4_ReacDiff/Fig4GHIJ.py rename to demos/examples/Fig4_ReacDiff/Fig4GHIJ.py diff --git a/examples/Fig4_ReacDiff/ca1_minimal.p b/demos/examples/Fig4_ReacDiff/ca1_minimal.p similarity index 100% rename from examples/Fig4_ReacDiff/ca1_minimal.p rename to demos/examples/Fig4_ReacDiff/ca1_minimal.p diff --git a/examples/Fig4_ReacDiff/rxdSpineSize.py b/demos/examples/Fig4_ReacDiff/rxdSpineSize.py similarity index 100% rename from examples/Fig4_ReacDiff/rxdSpineSize.py rename to demos/examples/Fig4_ReacDiff/rxdSpineSize.py diff --git a/examples/Fig5_CellMultiscale/Fig5A.py b/demos/examples/Fig5_CellMultiscale/Fig5A.py similarity index 100% rename from examples/Fig5_CellMultiscale/Fig5A.py rename to demos/examples/Fig5_CellMultiscale/Fig5A.py diff --git a/examples/Fig5_CellMultiscale/Fig5BCD.py b/demos/examples/Fig5_CellMultiscale/Fig5BCD.py similarity index 100% rename from examples/Fig5_CellMultiscale/Fig5BCD.py rename to demos/examples/Fig5_CellMultiscale/Fig5BCD.py diff --git a/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc b/demos/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/970529c.CNG.swc rename to demos/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc diff --git a/examples/Fig5_CellMultiscale/cells/CA1.morph.xml b/demos/examples/Fig5_CellMultiscale/cells/CA1.morph.xml similarity index 100% rename from examples/Fig5_CellMultiscale/cells/CA1.morph.xml rename to demos/examples/Fig5_CellMultiscale/cells/CA1.morph.xml diff --git a/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc b/demos/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc rename to demos/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc diff --git a/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc b/demos/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc rename to demos/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc diff --git a/examples/Fig5_CellMultiscale/cells/ca1_minimal.p b/demos/examples/Fig5_CellMultiscale/cells/ca1_minimal.p similarity index 100% rename from examples/Fig5_CellMultiscale/cells/ca1_minimal.p rename to demos/examples/Fig5_CellMultiscale/cells/ca1_minimal.p diff --git a/examples/Fig5_CellMultiscale/cells/h10.CNG.swc b/demos/examples/Fig5_CellMultiscale/cells/h10.CNG.swc similarity index 100% rename from examples/Fig5_CellMultiscale/cells/h10.CNG.swc rename to demos/examples/Fig5_CellMultiscale/cells/h10.CNG.swc diff --git a/examples/Fig5_CellMultiscale/chans/CA1.morph.xml b/demos/examples/Fig5_CellMultiscale/chans/CA1.morph.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/CA1.morph.xml rename to demos/examples/Fig5_CellMultiscale/chans/CA1.morph.xml diff --git a/examples/Fig5_CellMultiscale/chans/Ca.xml b/demos/examples/Fig5_CellMultiscale/chans/Ca.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/Ca.xml rename to demos/examples/Fig5_CellMultiscale/chans/Ca.xml diff --git a/examples/Fig5_CellMultiscale/chans/CaConc.xml b/demos/examples/Fig5_CellMultiscale/chans/CaConc.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/CaConc.xml rename to demos/examples/Fig5_CellMultiscale/chans/CaConc.xml diff --git a/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml b/demos/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml rename to demos/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml diff --git a/examples/Fig5_CellMultiscale/chans/Generated.net.xml b/demos/examples/Fig5_CellMultiscale/chans/Generated.net.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/Generated.net.xml rename to demos/examples/Fig5_CellMultiscale/chans/Generated.net.xml diff --git a/examples/Fig5_CellMultiscale/chans/Glu.xml b/demos/examples/Fig5_CellMultiscale/chans/Glu.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/Glu.xml rename to demos/examples/Fig5_CellMultiscale/chans/Glu.xml diff --git a/examples/Fig5_CellMultiscale/chans/HChannel.xml b/demos/examples/Fig5_CellMultiscale/chans/HChannel.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/HChannel.xml rename to demos/examples/Fig5_CellMultiscale/chans/HChannel.xml diff --git a/examples/Fig5_CellMultiscale/chans/NMDA.xml b/demos/examples/Fig5_CellMultiscale/chans/NMDA.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/NMDA.xml rename to demos/examples/Fig5_CellMultiscale/chans/NMDA.xml diff --git a/examples/Fig5_CellMultiscale/chans/hd.xml b/demos/examples/Fig5_CellMultiscale/chans/hd.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/hd.xml rename to demos/examples/Fig5_CellMultiscale/chans/hd.xml diff --git a/examples/Fig5_CellMultiscale/chans/kad.xml b/demos/examples/Fig5_CellMultiscale/chans/kad.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/kad.xml rename to demos/examples/Fig5_CellMultiscale/chans/kad.xml diff --git a/examples/Fig5_CellMultiscale/chans/kap.xml b/demos/examples/Fig5_CellMultiscale/chans/kap.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/kap.xml rename to demos/examples/Fig5_CellMultiscale/chans/kap.xml diff --git a/examples/Fig5_CellMultiscale/chans/kdr.xml b/demos/examples/Fig5_CellMultiscale/chans/kdr.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/kdr.xml rename to demos/examples/Fig5_CellMultiscale/chans/kdr.xml diff --git a/examples/Fig5_CellMultiscale/chans/na3.xml b/demos/examples/Fig5_CellMultiscale/chans/na3.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/na3.xml rename to demos/examples/Fig5_CellMultiscale/chans/na3.xml diff --git a/examples/Fig5_CellMultiscale/chans/nax.xml b/demos/examples/Fig5_CellMultiscale/chans/nax.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/nax.xml rename to demos/examples/Fig5_CellMultiscale/chans/nax.xml diff --git a/examples/Fig5_CellMultiscale/chans/pas.xml b/demos/examples/Fig5_CellMultiscale/chans/pas.xml similarity index 100% rename from examples/Fig5_CellMultiscale/chans/pas.xml rename to demos/examples/Fig5_CellMultiscale/chans/pas.xml diff --git a/examples/Fig5_CellMultiscale/chem/psd53.g b/demos/examples/Fig5_CellMultiscale/chem/psd53.g similarity index 100% rename from examples/Fig5_CellMultiscale/chem/psd53.g rename to demos/examples/Fig5_CellMultiscale/chem/psd53.g diff --git a/examples/Fig6_NetMultiscale/Fig6A.py b/demos/examples/Fig6_NetMultiscale/Fig6A.py similarity index 100% rename from examples/Fig6_NetMultiscale/Fig6A.py rename to demos/examples/Fig6_NetMultiscale/Fig6A.py diff --git a/examples/Fig6_NetMultiscale/Fig6BCDE.py b/demos/examples/Fig6_NetMultiscale/Fig6BCDE.py similarity index 100% rename from examples/Fig6_NetMultiscale/Fig6BCDE.py rename to demos/examples/Fig6_NetMultiscale/Fig6BCDE.py diff --git a/examples/Fig6_NetMultiscale/ReducedModel.py b/demos/examples/Fig6_NetMultiscale/ReducedModel.py similarity index 100% rename from examples/Fig6_NetMultiscale/ReducedModel.py rename to demos/examples/Fig6_NetMultiscale/ReducedModel.py diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Ca.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/Ca.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Ca.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/Ca.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/CaConc.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/GABA.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/GABA.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/GABA.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/GABA.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Glu.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/Glu.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Glu.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/Glu.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/NMDA.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p b/demos/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p rename to demos/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p diff --git a/examples/Fig6_NetMultiscale/cells_channels/hd.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/hd.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/hd.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/hd.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/kad.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/kad.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/kad.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/kad.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/kap.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/kap.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/kap.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/kap.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/kdr.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/kdr.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/kdr.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/kdr.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/na3.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/na3.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/na3.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/na3.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/nax.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/nax.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/nax.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/nax.xml diff --git a/examples/Fig6_NetMultiscale/cells_channels/pas.xml b/demos/examples/Fig6_NetMultiscale/cells_channels/pas.xml similarity index 100% rename from examples/Fig6_NetMultiscale/cells_channels/pas.xml rename to demos/examples/Fig6_NetMultiscale/cells_channels/pas.xml diff --git a/examples/Fig6_NetMultiscale/psd53.g b/demos/examples/Fig6_NetMultiscale/psd53.g similarity index 100% rename from examples/Fig6_NetMultiscale/psd53.g rename to demos/examples/Fig6_NetMultiscale/psd53.g diff --git a/examples/README b/demos/examples/README similarity index 100% rename from examples/README rename to demos/examples/README diff --git a/examples/README.md b/demos/examples/README.md similarity index 100% rename from examples/README.md rename to demos/examples/README.md diff --git a/examples/rxdSpineSize.py b/demos/examples/rxdSpineSize.py similarity index 100% rename from examples/rxdSpineSize.py rename to demos/examples/rxdSpineSize.py diff --git a/examples/squid/README.txt b/demos/examples/squid/README.txt similarity index 100% rename from examples/squid/README.txt rename to demos/examples/squid/README.txt diff --git a/examples/squid/channeleditor.py b/demos/examples/squid/channeleditor.py similarity index 100% rename from examples/squid/channeleditor.py rename to demos/examples/squid/channeleditor.py diff --git a/examples/squid/electronics.py b/demos/examples/squid/electronics.py similarity index 100% rename from examples/squid/electronics.py rename to demos/examples/squid/electronics.py diff --git a/examples/squid/help.html b/demos/examples/squid/help.html similarity index 100% rename from examples/squid/help.html rename to demos/examples/squid/help.html diff --git a/examples/squid/help.org b/demos/examples/squid/help.org similarity index 100% rename from examples/squid/help.org rename to demos/examples/squid/help.org diff --git a/examples/squid/images/navigationtoolbar.jpg b/demos/examples/squid/images/navigationtoolbar.jpg similarity index 100% rename from examples/squid/images/navigationtoolbar.jpg rename to demos/examples/squid/images/navigationtoolbar.jpg diff --git a/examples/squid/squid.py b/demos/examples/squid/squid.py similarity index 100% rename from examples/squid/squid.py rename to demos/examples/squid/squid.py diff --git a/examples/squid/squid_demo.py b/demos/examples/squid/squid_demo.py similarity index 100% rename from examples/squid/squid_demo.py rename to demos/examples/squid/squid_demo.py diff --git a/examples/squid/squid_setup.py b/demos/examples/squid/squid_setup.py similarity index 100% rename from examples/squid/squid_setup.py rename to demos/examples/squid/squid_setup.py diff --git a/examples/squid/test_squid.py b/demos/examples/squid/test_squid.py similarity index 100% rename from examples/squid/test_squid.py rename to demos/examples/squid/test_squid.py diff --git a/setup.py b/setup.py index b28d007..315b6ee 100644 --- a/setup.py +++ b/setup.py @@ -27,20 +27,21 @@ description = "Graphical User Interface of MOOSE simulator", long_description = open( 'README.md' ).read(), packages = [ "moosegui" - , "moosegui.mgui" - , 'moosegui.mgui.plugins' - , 'moosegui.suds' + , "moosegui.demos" + , 'moosegui.plugins' + , 'suds', 'suds.bindings', 'suds.sax', 'suds.mx', 'suds.xsd' + , 'suds.umx', 'suds.transport' ], package_dir = { - 'moosegui' : '.' - , 'moosegui.mgui' : 'mgui' - , 'moosegui.mgui.plugins' : 'mgui/plugins' - , 'moosegui.suds' : 'suds' + 'moosegui' : 'src' + , 'moosegui.demos' : 'demos' + , 'moosegui.plugins' : 'src/plugins' + , 'suds' : 'suds' }, package_data = { - 'moosegui' : [ 'moose', 'examples/*' ] - , 'moosegui.mgui' : [ 'icons/*', 'colormaps/*', ] - , 'moosegui.mgui.plugins' : [ 'datastore/*', 'list.txt' ] + 'moosegui' : [ 'moose', 'icons/*', 'colormaps/*' ] + , 'moosegui.demos' : [ './*' ] + , 'moosegui.plugins' : [ 'datastore/*', 'list.txt' ] }, author = open('AUTHOR').read(), maintainer = 'Dilawar Singh', diff --git a/mgui/GenericTypes.py b/src/GenericTypes.py similarity index 100% rename from mgui/GenericTypes.py rename to src/GenericTypes.py diff --git a/mgui/MWindow.py b/src/MWindow.py similarity index 98% rename from mgui/MWindow.py rename to src/MWindow.py index bb77d02..abfaed2 100644 --- a/mgui/MWindow.py +++ b/src/MWindow.py @@ -29,19 +29,19 @@ import moose from moose import utils -from mgui import config -from mgui import mplugin -from mgui import mexception -from mgui import mload -from mgui.loaderdialog import LoaderDialog -from mgui.shell import get_shell_class -from mgui.objectedit import ObjectEditDockWidget -from mgui.newmodeldialog import DialogWidget -from mgui.biomodelsclient import BioModelsClientWidget -from mgui.MdiArea import MdiArea -from mgui.plugins.setsolver import * -from mgui.plugins.defines import * -import mgui.examples as demos +from moosegui import config +from moosegui import mplugin +from moosegui import mexception +from moosegui import mload +from moosegui.loaderdialog import LoaderDialog +from moosegui.shell import get_shell_class +from moosegui.objectedit import ObjectEditDockWidget +from moosegui.newmodeldialog import DialogWidget +from moosegui.biomodelsclient import BioModelsClientWidget +from moosegui.MdiArea import MdiArea +from moosegui.plugins.setsolver import * +from moosegui.plugins.defines import * +import moosegui.examples as demos # Logger diff --git a/mgui/MdiArea.py b/src/MdiArea.py similarity index 100% rename from mgui/MdiArea.py rename to src/MdiArea.py diff --git a/mgui/PlotWidgetContainer.py b/src/PlotWidgetContainer.py similarity index 100% rename from mgui/PlotWidgetContainer.py rename to src/PlotWidgetContainer.py diff --git a/mgui/RunWidget.py b/src/RunWidget.py similarity index 100% rename from mgui/RunWidget.py rename to src/RunWidget.py diff --git a/mgui/SettingsDialog.py b/src/SettingsDialog.py similarity index 100% rename from mgui/SettingsDialog.py rename to src/SettingsDialog.py diff --git a/mgui/TooltipInfo.py b/src/TooltipInfo.py similarity index 100% rename from mgui/TooltipInfo.py rename to src/TooltipInfo.py diff --git a/mgui/__init__.py b/src/__init__.py similarity index 100% rename from mgui/__init__.py rename to src/__init__.py diff --git a/mgui/biomodelsclient.py b/src/biomodelsclient.py similarity index 100% rename from mgui/biomodelsclient.py rename to src/biomodelsclient.py diff --git a/mgui/checkcombobox.py b/src/checkcombobox.py similarity index 100% rename from mgui/checkcombobox.py rename to src/checkcombobox.py diff --git a/mgui/colormaps/__init__.py b/src/colormaps/__init__.py similarity index 100% rename from mgui/colormaps/__init__.py rename to src/colormaps/__init__.py diff --git a/mgui/colormaps/fire b/src/colormaps/fire similarity index 100% rename from mgui/colormaps/fire rename to src/colormaps/fire diff --git a/mgui/colormaps/greenfire b/src/colormaps/greenfire similarity index 100% rename from mgui/colormaps/greenfire rename to src/colormaps/greenfire diff --git a/mgui/colormaps/grey b/src/colormaps/grey similarity index 100% rename from mgui/colormaps/grey rename to src/colormaps/grey diff --git a/mgui/colormaps/heat b/src/colormaps/heat similarity index 100% rename from mgui/colormaps/heat rename to src/colormaps/heat diff --git a/mgui/colormaps/jet b/src/colormaps/jet similarity index 100% rename from mgui/colormaps/jet rename to src/colormaps/jet diff --git a/mgui/colormaps/rainbow2.pkl b/src/colormaps/rainbow2.pkl similarity index 100% rename from mgui/colormaps/rainbow2.pkl rename to src/colormaps/rainbow2.pkl diff --git a/mgui/colormaps/redhot b/src/colormaps/redhot similarity index 100% rename from mgui/colormaps/redhot rename to src/colormaps/redhot diff --git a/mgui/config.py b/src/config.py similarity index 100% rename from mgui/config.py rename to src/config.py diff --git a/mgui/configwidget.py b/src/configwidget.py similarity index 100% rename from mgui/configwidget.py rename to src/configwidget.py diff --git a/mgui/defaults.py b/src/defaults.py similarity index 100% rename from mgui/defaults.py rename to src/defaults.py diff --git a/mgui/examples.py b/src/examples.py similarity index 100% rename from mgui/examples.py rename to src/examples.py diff --git a/mgui/global_constants.py b/src/global_constants.py similarity index 100% rename from mgui/global_constants.py rename to src/global_constants.py diff --git a/mgui/icons/QMdiBackground.png b/src/icons/QMdiBackground.png similarity index 100% rename from mgui/icons/QMdiBackground.png rename to src/icons/QMdiBackground.png diff --git a/mgui/icons/add.png b/src/icons/add.png similarity index 100% rename from mgui/icons/add.png rename to src/icons/add.png diff --git a/mgui/icons/add_graph.png b/src/icons/add_graph.png similarity index 100% rename from mgui/icons/add_graph.png rename to src/icons/add_graph.png diff --git a/mgui/icons/arrow.png b/src/icons/arrow.png similarity index 100% rename from mgui/icons/arrow.png rename to src/icons/arrow.png diff --git a/mgui/icons/arrow_undo.png b/src/icons/arrow_undo.png similarity index 100% rename from mgui/icons/arrow_undo.png rename to src/icons/arrow_undo.png diff --git a/mgui/icons/classIcon/BufPool.png b/src/icons/classIcon/BufPool.png similarity index 100% rename from mgui/icons/classIcon/BufPool.png rename to src/icons/classIcon/BufPool.png diff --git a/mgui/icons/classIcon/CubeMesh.png b/src/icons/classIcon/CubeMesh.png similarity index 100% rename from mgui/icons/classIcon/CubeMesh.png rename to src/icons/classIcon/CubeMesh.png diff --git a/mgui/icons/classIcon/CylMesh.png b/src/icons/classIcon/CylMesh.png similarity index 100% rename from mgui/icons/classIcon/CylMesh.png rename to src/icons/classIcon/CylMesh.png diff --git a/mgui/icons/classIcon/Enz.png b/src/icons/classIcon/Enz.png similarity index 100% rename from mgui/icons/classIcon/Enz.png rename to src/icons/classIcon/Enz.png diff --git a/mgui/icons/classIcon/FuncPool.png b/src/icons/classIcon/FuncPool.png similarity index 100% rename from mgui/icons/classIcon/FuncPool.png rename to src/icons/classIcon/FuncPool.png diff --git a/mgui/icons/classIcon/Function.png b/src/icons/classIcon/Function.png similarity index 100% rename from mgui/icons/classIcon/Function.png rename to src/icons/classIcon/Function.png diff --git a/mgui/icons/classIcon/MMenz.png b/src/icons/classIcon/MMenz.png similarity index 100% rename from mgui/icons/classIcon/MMenz.png rename to src/icons/classIcon/MMenz.png diff --git a/mgui/icons/classIcon/Pool.png b/src/icons/classIcon/Pool.png similarity index 100% rename from mgui/icons/classIcon/Pool.png rename to src/icons/classIcon/Pool.png diff --git a/mgui/icons/classIcon/Reac.png b/src/icons/classIcon/Reac.png similarity index 100% rename from mgui/icons/classIcon/Reac.png rename to src/icons/classIcon/Reac.png diff --git a/mgui/icons/classIcon/StimulusTable.png b/src/icons/classIcon/StimulusTable.png similarity index 100% rename from mgui/icons/classIcon/StimulusTable.png rename to src/icons/classIcon/StimulusTable.png diff --git a/mgui/icons/classIcon/SumFunc.png b/src/icons/classIcon/SumFunc.png similarity index 100% rename from mgui/icons/classIcon/SumFunc.png rename to src/icons/classIcon/SumFunc.png diff --git a/mgui/icons/clone.svg b/src/icons/clone.svg similarity index 100% rename from mgui/icons/clone.svg rename to src/icons/clone.svg diff --git a/mgui/icons/connection.png b/src/icons/connection.png similarity index 100% rename from mgui/icons/connection.png rename to src/icons/connection.png diff --git a/mgui/icons/continue.png b/src/icons/continue.png similarity index 100% rename from mgui/icons/continue.png rename to src/icons/continue.png diff --git a/mgui/icons/delete.svg b/src/icons/delete.svg similarity index 100% rename from mgui/icons/delete.svg rename to src/icons/delete.svg diff --git a/mgui/icons/delete_graph.png b/src/icons/delete_graph.png similarity index 100% rename from mgui/icons/delete_graph.png rename to src/icons/delete_graph.png diff --git a/mgui/icons/grid.png b/src/icons/grid.png similarity index 100% rename from mgui/icons/grid.png rename to src/icons/grid.png diff --git a/mgui/icons/hand.png b/src/icons/hand.png similarity index 100% rename from mgui/icons/hand.png rename to src/icons/hand.png diff --git a/mgui/icons/help.png b/src/icons/help.png similarity index 100% rename from mgui/icons/help.png rename to src/icons/help.png diff --git a/mgui/icons/hopfield.png b/src/icons/hopfield.png similarity index 100% rename from mgui/icons/hopfield.png rename to src/icons/hopfield.png diff --git a/mgui/icons/list.png b/src/icons/list.png similarity index 100% rename from mgui/icons/list.png rename to src/icons/list.png diff --git a/mgui/icons/moose_icon.png b/src/icons/moose_icon.png similarity index 100% rename from mgui/icons/moose_icon.png rename to src/icons/moose_icon.png diff --git a/mgui/icons/moose_icon_64x64.png b/src/icons/moose_icon_64x64.png similarity index 100% rename from mgui/icons/moose_icon_64x64.png rename to src/icons/moose_icon_64x64.png diff --git a/mgui/icons/moose_icon_large.png b/src/icons/moose_icon_large.png similarity index 100% rename from mgui/icons/moose_icon_large.png rename to src/icons/moose_icon_large.png diff --git a/mgui/icons/move.svg b/src/icons/move.svg similarity index 100% rename from mgui/icons/move.svg rename to src/icons/move.svg diff --git a/mgui/icons/plot.svg b/src/icons/plot.svg similarity index 100% rename from mgui/icons/plot.svg rename to src/icons/plot.svg diff --git a/mgui/icons/reset.png b/src/icons/reset.png similarity index 100% rename from mgui/icons/reset.png rename to src/icons/reset.png diff --git a/mgui/icons/run.png b/src/icons/run.png similarity index 100% rename from mgui/icons/run.png rename to src/icons/run.png diff --git a/mgui/icons/runtime.png b/src/icons/runtime.png similarity index 100% rename from mgui/icons/runtime.png rename to src/icons/runtime.png diff --git a/mgui/icons/squid.png b/src/icons/squid.png similarity index 100% rename from mgui/icons/squid.png rename to src/icons/squid.png diff --git a/mgui/icons/stop.png b/src/icons/stop.png similarity index 100% rename from mgui/icons/stop.png rename to src/icons/stop.png diff --git a/mgui/icons/straight_connector_with_filled_circles.png b/src/icons/straight_connector_with_filled_circles.png similarity index 100% rename from mgui/icons/straight_connector_with_filled_circles.png rename to src/icons/straight_connector_with_filled_circles.png diff --git a/mgui/icons/wrench.png b/src/icons/wrench.png similarity index 100% rename from mgui/icons/wrench.png rename to src/icons/wrench.png diff --git a/mgui/loaderdialog.py b/src/loaderdialog.py similarity index 100% rename from mgui/loaderdialog.py rename to src/loaderdialog.py diff --git a/mgui/mexception.py b/src/mexception.py similarity index 100% rename from mgui/mexception.py rename to src/mexception.py diff --git a/mgui/mgui.py b/src/mgui.py similarity index 95% rename from mgui/mgui.py rename to src/mgui.py index ad564ed..b2e67bf 100644 --- a/mgui/mgui.py +++ b/src/mgui.py @@ -1,4 +1,4 @@ -# Filename: mgui.py +# Filename: moosegui.py # Description: Graphical user interface of MOOSE simulator. # Author: Subhasis Ray, Harsha Rani, Dilawar Singh # Maintainer: @@ -40,4 +40,4 @@ def main(): main() # -# mgui.py ends here +# moosegui.py ends here diff --git a/mgui/mload.py b/src/mload.py similarity index 100% rename from mgui/mload.py rename to src/mload.py diff --git a/moose b/src/moose similarity index 100% rename from moose rename to src/moose diff --git a/mgui/mplot.py b/src/mplot.py similarity index 100% rename from mgui/mplot.py rename to src/mplot.py diff --git a/mgui/mplugin.py b/src/mplugin.py similarity index 100% rename from mgui/mplugin.py rename to src/mplugin.py diff --git a/mgui/msearch.py b/src/msearch.py similarity index 100% rename from mgui/msearch.py rename to src/msearch.py diff --git a/mgui/mtoolbutton.py b/src/mtoolbutton.py similarity index 100% rename from mgui/mtoolbutton.py rename to src/mtoolbutton.py diff --git a/mgui/mtree.py b/src/mtree.py similarity index 100% rename from mgui/mtree.py rename to src/mtree.py diff --git a/mgui/mtypes.py b/src/mtypes.py similarity index 100% rename from mgui/mtypes.py rename to src/mtypes.py diff --git a/mgui/neuroextractor.py b/src/neuroextractor.py similarity index 100% rename from mgui/neuroextractor.py rename to src/neuroextractor.py diff --git a/mgui/newmodeldialog.py b/src/newmodeldialog.py similarity index 100% rename from mgui/newmodeldialog.py rename to src/newmodeldialog.py diff --git a/mgui/objectedit.py b/src/objectedit.py similarity index 99% rename from mgui/objectedit.py rename to src/objectedit.py index 2ea0cce..a68385f 100644 --- a/mgui/objectedit.py +++ b/src/objectedit.py @@ -43,10 +43,10 @@ import moose import numpy as np -from mgui import defaults -from mgui import config -from mgui.plugins.kkitUtil import getColor -from mgui.GenericTypes import QVariant +from moosegui import defaults +from moosegui import config +from moosegui.plugins.kkitUtil import getColor +from moosegui.GenericTypes import QVariant extra_fields = ['this', 'me', diff --git a/mgui/plugins/NeuroKit.py b/src/plugins/NeuroKit.py similarity index 100% rename from mgui/plugins/NeuroKit.py rename to src/plugins/NeuroKit.py diff --git a/mgui/plugins/NeuroKitEditor.py b/src/plugins/NeuroKitEditor.py similarity index 100% rename from mgui/plugins/NeuroKitEditor.py rename to src/plugins/NeuroKitEditor.py diff --git a/mgui/plugins/NeuroKitRunner.py b/src/plugins/NeuroKitRunner.py similarity index 100% rename from mgui/plugins/NeuroKitRunner.py rename to src/plugins/NeuroKitRunner.py diff --git a/mgui/plugins/NeuroKitVisualizer.py b/src/plugins/NeuroKitVisualizer.py similarity index 98% rename from mgui/plugins/NeuroKitVisualizer.py rename to src/plugins/NeuroKitVisualizer.py index 19a433b..bbe000d 100644 --- a/mgui/plugins/NeuroKitVisualizer.py +++ b/src/plugins/NeuroKitVisualizer.py @@ -15,8 +15,8 @@ import moose import moogli -from mgui.config import _logger -from mgui.plugins import default +from moosegui.config import _logger +from moosegui.plugins import default class MorphologyEditor(moogli.MorphologyViewer): diff --git a/mgui/plugins/PreferencesPresenter.py b/src/plugins/PreferencesPresenter.py similarity index 99% rename from mgui/plugins/PreferencesPresenter.py rename to src/plugins/PreferencesPresenter.py index f351894..be90800 100644 --- a/mgui/plugins/PreferencesPresenter.py +++ b/src/plugins/PreferencesPresenter.py @@ -6,8 +6,8 @@ from PyQt4.QtCore import pyqtSignal from PyQt4.QtGui import QColor from PyQt4.QtGui import QGroupBox -from mgui.plugins.PreferencesView import PreferencesView -from mgui.plugins.defines import * +from moosegui.plugins.PreferencesView import PreferencesView +from moosegui.plugins.defines import * import json import os diff --git a/mgui/plugins/PreferencesView.py b/src/plugins/PreferencesView.py similarity index 100% rename from mgui/plugins/PreferencesView.py rename to src/plugins/PreferencesView.py diff --git a/mgui/plugins/README b/src/plugins/README similarity index 100% rename from mgui/plugins/README rename to src/plugins/README diff --git a/mgui/plugins/Runner.py b/src/plugins/Runner.py similarity index 100% rename from mgui/plugins/Runner.py rename to src/plugins/Runner.py diff --git a/mgui/plugins/__init__.py b/src/plugins/__init__.py similarity index 100% rename from mgui/plugins/__init__.py rename to src/plugins/__init__.py diff --git a/mgui/plugins/buildkkit.py b/src/plugins/buildkkit.py similarity index 98% rename from mgui/plugins/buildkkit.py rename to src/plugins/buildkkit.py index 86d8e76..b073d83 100644 --- a/mgui/plugins/buildkkit.py +++ b/src/plugins/buildkkit.py @@ -12,13 +12,13 @@ import networkx as nx import numpy as np -from mgui.plugins.default import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem -from mgui.plugins.kkitViewcontrol import * -from mgui.plugins.kkitCalcArrow import * -from mgui.plugins.kkitOrdinateUtil import * -from mgui.mtoolbutton import MToolButton +from moosegui.plugins.default import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from moosegui.plugins.kkitViewcontrol import * +from moosegui.plugins.kkitCalcArrow import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.mtoolbutton import MToolButton class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" diff --git a/mgui/plugins/constants.py b/src/plugins/constants.py similarity index 100% rename from mgui/plugins/constants.py rename to src/plugins/constants.py diff --git a/mgui/plugins/datastore/preferences.json b/src/plugins/datastore/preferences.json similarity index 100% rename from mgui/plugins/datastore/preferences.json rename to src/plugins/datastore/preferences.json diff --git a/mgui/plugins/default.py b/src/plugins/default.py similarity index 98% rename from mgui/plugins/default.py rename to src/plugins/default.py index ca47179..0669cbe 100644 --- a/mgui/plugins/default.py +++ b/src/plugins/default.py @@ -33,17 +33,17 @@ import moose from moose import utils -import mgui.mtree as mtree -from mgui.mtoolbutton import MToolButton -from mgui.msearch import SearchWidget -from mgui.checkcombobox import CheckComboBox -from mgui import config -from mgui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase -from mgui.PlotWidgetContainer import PlotWidgetContainer -from mgui.plugins.kkitUtil import getColor -from mgui.plugins.Runner import Runner -from mgui.global_constants import preferences -from mgui.plugins.setsolver import * +import moosegui.mtree as mtree +from moosegui.mtoolbutton import MToolButton +from moosegui.msearch import SearchWidget +from moosegui.checkcombobox import CheckComboBox +from moosegui import config +from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +from moosegui.PlotWidgetContainer import PlotWidgetContainer +from moosegui.plugins.kkitUtil import getColor +from moosegui.plugins.Runner import Runner +from moosegui.global_constants import preferences +from moosegui.plugins.setsolver import * from PyQt4 import QtCore, QtGui from PyQt4.QtCore import Qt @@ -59,7 +59,7 @@ from PyQt4.QtGui import QPixmap from PyQt4.QtGui import QAction -from mgui.config import _logger +from moosegui.config import _logger ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -281,7 +281,7 @@ def getToolBars(self): # View for running a simulation and runtime visualization # ############################################################ -from mgui.mplot import CanvasWidget +from moosegui.mplot import CanvasWidget class RunView(RunBase): """A default runtime view implementation. This should be diff --git a/mgui/plugins/defines.py b/src/plugins/defines.py similarity index 100% rename from mgui/plugins/defines.py rename to src/plugins/defines.py diff --git a/mgui/plugins/kkit.py b/src/plugins/kkit.py similarity index 98% rename from mgui/plugins/kkit.py rename to src/plugins/kkit.py index 4a51dee..09940c4 100644 --- a/mgui/plugins/kkit.py +++ b/src/plugins/kkit.py @@ -11,20 +11,20 @@ from moose.genesis import write from moose import SBML -from mgui.mplugin import * -from mgui.mtoolbutton import MToolButton -from mgui.plugins.default import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem -from mgui.plugins.kkitViewcontrol import * -from mgui.plugins.kkitCalcArrow import * -from mgui.plugins.kkitOrdinateUtil import * -from mgui.plugins.setsolver import * -from mgui.RunWidget import RunWidget - -import mgui.TooltipInfo as TooltipInfo - -from mgui.config import _logger +from moosegui.mplugin import * +from moosegui.mtoolbutton import MToolButton +from moosegui.plugins.default import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem +from moosegui.plugins.kkitViewcontrol import * +from moosegui.plugins.kkitCalcArrow import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.plugins.setsolver import * +from moosegui.RunWidget import RunWidget + +import moosegui.TooltipInfo as TooltipInfo + +from moosegui.config import _logger class KkitPlugin(MoosePlugin): diff --git a/mgui/plugins/kkitCalcArrow.py b/src/plugins/kkitCalcArrow.py similarity index 100% rename from mgui/plugins/kkitCalcArrow.py rename to src/plugins/kkitCalcArrow.py diff --git a/mgui/plugins/kkitOrdinateUtil.py b/src/plugins/kkitOrdinateUtil.py similarity index 100% rename from mgui/plugins/kkitOrdinateUtil.py rename to src/plugins/kkitOrdinateUtil.py diff --git a/mgui/plugins/kkitQGraphics.py b/src/plugins/kkitQGraphics.py similarity index 99% rename from mgui/plugins/kkitQGraphics.py rename to src/plugins/kkitQGraphics.py index 1f9286c..56b9da4 100644 --- a/mgui/plugins/kkitQGraphics.py +++ b/src/plugins/kkitQGraphics.py @@ -1,4 +1,4 @@ -from mgui import config +from moosegui import config from PyQt4 import QtGui, QtCore, Qt from moose import * from PyQt4.QtGui import QPixmap, QImage, QGraphicsPixmapItem diff --git a/mgui/plugins/kkitUtil.py b/src/plugins/kkitUtil.py similarity index 99% rename from mgui/plugins/kkitUtil.py rename to src/plugins/kkitUtil.py index ebf434c..744cf5b 100644 --- a/mgui/plugins/kkitUtil.py +++ b/src/plugins/kkitUtil.py @@ -2,7 +2,7 @@ from .kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem from PyQt4 import QtCore,QtGui,QtSvg from PyQt4.QtGui import QColor -from mgui import config +from moosegui import config import numpy as np import os diff --git a/mgui/plugins/kkitViewcontrol.py b/src/plugins/kkitViewcontrol.py similarity index 99% rename from mgui/plugins/kkitViewcontrol.py rename to src/plugins/kkitViewcontrol.py index dec172d..93b0d4f 100644 --- a/mgui/plugins/kkitViewcontrol.py +++ b/src/plugins/kkitViewcontrol.py @@ -1,16 +1,16 @@ import sys -from mgui.plugins.modelBuild import * -from mgui.plugins.constants import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.setsolver import * +from moosegui.plugins.modelBuild import * +from moosegui.plugins.constants import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.setsolver import * from PyQt4.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem from PyQt4.QtCore import pyqtSignal from PyQt4 import QtSvg from moose import utils -from mgui.GenericTypes import QVariant -from mgui.config import _logger +from moosegui.GenericTypes import QVariant +from moosegui.config import _logger class GraphicalView(QtGui.QGraphicsView): diff --git a/mgui/plugins/list.txt b/src/plugins/list.txt similarity index 100% rename from mgui/plugins/list.txt rename to src/plugins/list.txt diff --git a/mgui/plugins/modelBuild.py b/src/plugins/modelBuild.py similarity index 98% rename from mgui/plugins/modelBuild.py rename to src/plugins/modelBuild.py index 542e808..e6705d0 100644 --- a/mgui/plugins/modelBuild.py +++ b/src/plugins/modelBuild.py @@ -1,12 +1,12 @@ import PyQt4 import moose -from mgui.plugins.kkitQGraphics import * -from mgui.plugins.kkitOrdinateUtil import * -from mgui.plugins.kkitUtil import * -from mgui.plugins.setsolver import * +from moosegui.plugins.kkitQGraphics import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.setsolver import * -from mgui.config import _logger +from moosegui.config import _logger def updateCompartmentSize(qGraCompt): diff --git a/mgui/plugins/setsolver.py b/src/plugins/setsolver.py similarity index 100% rename from mgui/plugins/setsolver.py rename to src/plugins/setsolver.py diff --git a/mgui/plugins/test_plotwidget.py b/src/plugins/test_plotwidget.py similarity index 100% rename from mgui/plugins/test_plotwidget.py rename to src/plugins/test_plotwidget.py diff --git a/mgui/scishell.py b/src/scishell.py similarity index 100% rename from mgui/scishell.py rename to src/scishell.py diff --git a/mgui/shell.py b/src/shell.py similarity index 100% rename from mgui/shell.py rename to src/shell.py diff --git a/mgui/sidebar.py b/src/sidebar.py similarity index 100% rename from mgui/sidebar.py rename to src/sidebar.py diff --git a/mgui/utils.py b/src/utils.py similarity index 100% rename from mgui/utils.py rename to src/utils.py diff --git a/suds/sax/text.py b/suds/sax/text.py index 4d74ca5..44c28df 100644 --- a/suds/sax/text.py +++ b/suds/sax/text.py @@ -22,7 +22,7 @@ from suds.sax import * -class Text( str ): +class Text( type( u"") ): """ An XML text object used to represent text content. @ivar lang: The (optional) language flag. From 0bfb2d3072ac97f55a37024068b38c562458204b Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 23 Nov 2016 11:35:28 +0530 Subject: [PATCH 30/66] Working fine on ubuntu-14.04. --- demos/{examples => }/Fig2_elecModels/Fig2A.py | 0 .../Fig2_elecModels/Fig2A_analysis.py | 0 demos/{examples => }/Fig2_elecModels/Fig2C.py | 0 demos/{examples => }/Fig2_elecModels/Fig2D.py | 0 demos/{examples => }/Fig2_elecModels/Fig2E.py | 0 .../Fig2_elecModels/cells/CA1.morph.xml | 0 .../Fig2_elecModels/cells/K-18.CNG.swc | 0 .../Fig2_elecModels/cells/VHC-neuron.CNG.swc | 0 .../Fig2_elecModels/cells/ca1_minimal.p | 0 .../Fig2_elecModels/cells/h10.CNG.swc | 0 .../Fig2_elecModels/cells/ko20x-07.CNG.swc | 0 .../Fig2_elecModels/chans/CA1.morph.xml | 0 .../chans/CA1.morph.xml.REMOVED.git-id | 0 .../Fig2_elecModels/chans/Ca.xml | 0 .../Fig2_elecModels/chans/CaConc.xml | 0 .../Fig2_elecModels/chans/DoubExpSyn.xml | 0 .../Fig2_elecModels/chans/Generated.net.xml | 0 .../Fig2_elecModels/chans/Glu.xml | 0 .../Fig2_elecModels/chans/HChannel.xml | 0 .../Fig2_elecModels/chans/KChannel_HH.xml | 0 .../Fig2_elecModels/chans/LeakConductance.xml | 0 .../Fig2_elecModels/chans/NMDA.xml | 0 .../Fig2_elecModels/chans/NaChannel_HH.xml | 0 .../Fig2_elecModels/chans/hd.xml | 0 .../Fig2_elecModels/chans/kad.xml | 0 .../Fig2_elecModels/chans/kap.xml | 0 .../Fig2_elecModels/chans/kdr.xml | 0 .../Fig2_elecModels/chans/na3.xml | 0 .../Fig2_elecModels/chans/nax.xml | 0 .../Fig2_elecModels/chans/pas.xml | 0 .../{examples => }/Fig3_chemModels/Fig3ABC.g | 0 demos/{examples => }/Fig3_chemModels/Fig3D.py | 0 .../Fig3_chemModels/Fig3_NEURON.py | 0 .../Fig4_ReacDiff/CaMKII_merged77.g | 0 demos/{examples => }/Fig4_ReacDiff/Fig4B.py | 0 .../{examples => }/Fig4_ReacDiff/Fig4CDEF.py | 0 .../{examples => }/Fig4_ReacDiff/Fig4GHIJ.py | 0 .../Fig4_ReacDiff/ca1_minimal.p | 0 .../Fig4_ReacDiff/rxdSpineSize.py | 0 .../Fig5_CellMultiscale/Fig5A.py | 0 .../Fig5_CellMultiscale/Fig5BCD.py | 0 .../Fig5_CellMultiscale/cells/970529c.CNG.swc | 0 .../Fig5_CellMultiscale/cells/CA1.morph.xml | 0 .../cells/DHC-neuron.CNG.swc | 0 .../cells/VHC-neuron.CNG.swc | 0 .../Fig5_CellMultiscale/cells/ca1_minimal.p | 0 .../Fig5_CellMultiscale/cells/h10.CNG.swc | 0 .../Fig5_CellMultiscale/chans/CA1.morph.xml | 0 .../Fig5_CellMultiscale/chans/Ca.xml | 0 .../Fig5_CellMultiscale/chans/CaConc.xml | 0 .../Fig5_CellMultiscale/chans/DoubExpSyn.xml | 0 .../chans/Generated.net.xml | 0 .../Fig5_CellMultiscale/chans/Glu.xml | 0 .../Fig5_CellMultiscale/chans/HChannel.xml | 0 .../Fig5_CellMultiscale/chans/NMDA.xml | 0 .../Fig5_CellMultiscale/chans/hd.xml | 0 .../Fig5_CellMultiscale/chans/kad.xml | 0 .../Fig5_CellMultiscale/chans/kap.xml | 0 .../Fig5_CellMultiscale/chans/kdr.xml | 0 .../Fig5_CellMultiscale/chans/na3.xml | 0 .../Fig5_CellMultiscale/chans/nax.xml | 0 .../Fig5_CellMultiscale/chans/pas.xml | 0 .../Fig5_CellMultiscale/chem/psd53.g | 0 .../Fig6_NetMultiscale/Fig6A.py | 0 .../Fig6_NetMultiscale/Fig6BCDE.py | 0 .../Fig6_NetMultiscale/ReducedModel.py | 0 .../cells_channels/CA1.morph.spines.xml | 0 .../cells_channels/CA1.morph.xml | 0 .../cells_channels/CA1_nochans.morph.xml | 0 .../cells_channels/CA1spiny.morph.xml | 0 .../cells_channels/CA1spiny7_0.morph.xml | 0 .../Fig6_NetMultiscale/cells_channels/Ca.xml | 0 .../cells_channels/CaConc.xml | 0 .../cells_channels/Ca_conc.xml | 0 .../cells_channels/GABA.xml | 0 .../Fig6_NetMultiscale/cells_channels/Glu.xml | 0 .../cells_channels/NMDA.xml | 0 .../cells_channels/Pyramidal_KM.xml | 0 .../cells_channels/Traub_KA.xml | 0 .../cells_channels/Traub_KCaAHP.xml | 0 .../cells_channels/ca1_minimal.p | 0 .../Fig6_NetMultiscale/cells_channels/hd.xml | 0 .../cells_channels/hd_minus73.xml | 0 .../Fig6_NetMultiscale/cells_channels/kad.xml | 0 .../Fig6_NetMultiscale/cells_channels/kap.xml | 0 .../Fig6_NetMultiscale/cells_channels/kdr.xml | 0 .../Fig6_NetMultiscale/cells_channels/na3.xml | 0 .../Fig6_NetMultiscale/cells_channels/nax.xml | 0 .../Fig6_NetMultiscale/cells_channels/pas.xml | 0 .../{examples => }/Fig6_NetMultiscale/psd53.g | 0 demos/{examples => }/README | 0 demos/{examples => }/README.md | 0 demos/examples/.gitignore | 57 ------------------ demos/examples/.travis.yml | 24 -------- demos/{examples => }/rxdSpineSize.py | 0 demos/{examples => }/squid/README.txt | 0 demos/{examples => }/squid/channeleditor.py | 0 demos/{examples => }/squid/electronics.py | 0 demos/{examples => }/squid/help.html | 0 demos/{examples => }/squid/help.org | 0 .../squid/images/navigationtoolbar.jpg | Bin demos/{examples => }/squid/squid.py | 0 demos/{examples => }/squid/squid_demo.py | 0 demos/{examples => }/squid/squid_setup.py | 0 demos/{examples => }/squid/test_squid.py | 0 src/moose => moose | 0 setup.py | 6 +- src/examples.py | 26 ++++---- src/plugins/kkit.py | 12 ++-- 109 files changed, 22 insertions(+), 103 deletions(-) rename demos/{examples => }/Fig2_elecModels/Fig2A.py (100%) rename demos/{examples => }/Fig2_elecModels/Fig2A_analysis.py (100%) rename demos/{examples => }/Fig2_elecModels/Fig2C.py (100%) rename demos/{examples => }/Fig2_elecModels/Fig2D.py (100%) rename demos/{examples => }/Fig2_elecModels/Fig2E.py (100%) rename demos/{examples => }/Fig2_elecModels/cells/CA1.morph.xml (100%) rename demos/{examples => }/Fig2_elecModels/cells/K-18.CNG.swc (100%) rename demos/{examples => }/Fig2_elecModels/cells/VHC-neuron.CNG.swc (100%) rename demos/{examples => }/Fig2_elecModels/cells/ca1_minimal.p (100%) rename demos/{examples => }/Fig2_elecModels/cells/h10.CNG.swc (100%) rename demos/{examples => }/Fig2_elecModels/cells/ko20x-07.CNG.swc (100%) rename demos/{examples => }/Fig2_elecModels/chans/CA1.morph.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id (100%) rename demos/{examples => }/Fig2_elecModels/chans/Ca.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/CaConc.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/DoubExpSyn.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/Generated.net.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/Glu.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/HChannel.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/KChannel_HH.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/LeakConductance.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/NMDA.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/NaChannel_HH.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/hd.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/kad.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/kap.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/kdr.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/na3.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/nax.xml (100%) rename demos/{examples => }/Fig2_elecModels/chans/pas.xml (100%) rename demos/{examples => }/Fig3_chemModels/Fig3ABC.g (100%) rename demos/{examples => }/Fig3_chemModels/Fig3D.py (100%) rename demos/{examples => }/Fig3_chemModels/Fig3_NEURON.py (100%) rename demos/{examples => }/Fig4_ReacDiff/CaMKII_merged77.g (100%) rename demos/{examples => }/Fig4_ReacDiff/Fig4B.py (100%) rename demos/{examples => }/Fig4_ReacDiff/Fig4CDEF.py (100%) rename demos/{examples => }/Fig4_ReacDiff/Fig4GHIJ.py (100%) rename demos/{examples => }/Fig4_ReacDiff/ca1_minimal.p (100%) rename demos/{examples => }/Fig4_ReacDiff/rxdSpineSize.py (100%) rename demos/{examples => }/Fig5_CellMultiscale/Fig5A.py (100%) rename demos/{examples => }/Fig5_CellMultiscale/Fig5BCD.py (100%) rename demos/{examples => }/Fig5_CellMultiscale/cells/970529c.CNG.swc (100%) rename demos/{examples => }/Fig5_CellMultiscale/cells/CA1.morph.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc (100%) rename demos/{examples => }/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc (100%) rename demos/{examples => }/Fig5_CellMultiscale/cells/ca1_minimal.p (100%) rename demos/{examples => }/Fig5_CellMultiscale/cells/h10.CNG.swc (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/CA1.morph.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/Ca.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/CaConc.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/DoubExpSyn.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/Generated.net.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/Glu.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/HChannel.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/NMDA.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/hd.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/kad.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/kap.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/kdr.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/na3.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/nax.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chans/pas.xml (100%) rename demos/{examples => }/Fig5_CellMultiscale/chem/psd53.g (100%) rename demos/{examples => }/Fig6_NetMultiscale/Fig6A.py (100%) rename demos/{examples => }/Fig6_NetMultiscale/Fig6BCDE.py (100%) rename demos/{examples => }/Fig6_NetMultiscale/ReducedModel.py (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/CA1.morph.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/Ca.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/CaConc.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/Ca_conc.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/GABA.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/Glu.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/NMDA.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/Traub_KA.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/ca1_minimal.p (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/hd.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/hd_minus73.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/kad.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/kap.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/kdr.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/na3.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/nax.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/cells_channels/pas.xml (100%) rename demos/{examples => }/Fig6_NetMultiscale/psd53.g (100%) rename demos/{examples => }/README (100%) rename demos/{examples => }/README.md (100%) delete mode 100644 demos/examples/.gitignore delete mode 100644 demos/examples/.travis.yml rename demos/{examples => }/rxdSpineSize.py (100%) rename demos/{examples => }/squid/README.txt (100%) rename demos/{examples => }/squid/channeleditor.py (100%) rename demos/{examples => }/squid/electronics.py (100%) rename demos/{examples => }/squid/help.html (100%) rename demos/{examples => }/squid/help.org (100%) rename demos/{examples => }/squid/images/navigationtoolbar.jpg (100%) rename demos/{examples => }/squid/squid.py (100%) rename demos/{examples => }/squid/squid_demo.py (100%) rename demos/{examples => }/squid/squid_setup.py (100%) rename demos/{examples => }/squid/test_squid.py (100%) rename src/moose => moose (100%) diff --git a/demos/examples/Fig2_elecModels/Fig2A.py b/demos/Fig2_elecModels/Fig2A.py similarity index 100% rename from demos/examples/Fig2_elecModels/Fig2A.py rename to demos/Fig2_elecModels/Fig2A.py diff --git a/demos/examples/Fig2_elecModels/Fig2A_analysis.py b/demos/Fig2_elecModels/Fig2A_analysis.py similarity index 100% rename from demos/examples/Fig2_elecModels/Fig2A_analysis.py rename to demos/Fig2_elecModels/Fig2A_analysis.py diff --git a/demos/examples/Fig2_elecModels/Fig2C.py b/demos/Fig2_elecModels/Fig2C.py similarity index 100% rename from demos/examples/Fig2_elecModels/Fig2C.py rename to demos/Fig2_elecModels/Fig2C.py diff --git a/demos/examples/Fig2_elecModels/Fig2D.py b/demos/Fig2_elecModels/Fig2D.py similarity index 100% rename from demos/examples/Fig2_elecModels/Fig2D.py rename to demos/Fig2_elecModels/Fig2D.py diff --git a/demos/examples/Fig2_elecModels/Fig2E.py b/demos/Fig2_elecModels/Fig2E.py similarity index 100% rename from demos/examples/Fig2_elecModels/Fig2E.py rename to demos/Fig2_elecModels/Fig2E.py diff --git a/demos/examples/Fig2_elecModels/cells/CA1.morph.xml b/demos/Fig2_elecModels/cells/CA1.morph.xml similarity index 100% rename from demos/examples/Fig2_elecModels/cells/CA1.morph.xml rename to demos/Fig2_elecModels/cells/CA1.morph.xml diff --git a/demos/examples/Fig2_elecModels/cells/K-18.CNG.swc b/demos/Fig2_elecModels/cells/K-18.CNG.swc similarity index 100% rename from demos/examples/Fig2_elecModels/cells/K-18.CNG.swc rename to demos/Fig2_elecModels/cells/K-18.CNG.swc diff --git a/demos/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc b/demos/Fig2_elecModels/cells/VHC-neuron.CNG.swc similarity index 100% rename from demos/examples/Fig2_elecModels/cells/VHC-neuron.CNG.swc rename to demos/Fig2_elecModels/cells/VHC-neuron.CNG.swc diff --git a/demos/examples/Fig2_elecModels/cells/ca1_minimal.p b/demos/Fig2_elecModels/cells/ca1_minimal.p similarity index 100% rename from demos/examples/Fig2_elecModels/cells/ca1_minimal.p rename to demos/Fig2_elecModels/cells/ca1_minimal.p diff --git a/demos/examples/Fig2_elecModels/cells/h10.CNG.swc b/demos/Fig2_elecModels/cells/h10.CNG.swc similarity index 100% rename from demos/examples/Fig2_elecModels/cells/h10.CNG.swc rename to demos/Fig2_elecModels/cells/h10.CNG.swc diff --git a/demos/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc b/demos/Fig2_elecModels/cells/ko20x-07.CNG.swc similarity index 100% rename from demos/examples/Fig2_elecModels/cells/ko20x-07.CNG.swc rename to demos/Fig2_elecModels/cells/ko20x-07.CNG.swc diff --git a/demos/examples/Fig2_elecModels/chans/CA1.morph.xml b/demos/Fig2_elecModels/chans/CA1.morph.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/CA1.morph.xml rename to demos/Fig2_elecModels/chans/CA1.morph.xml diff --git a/demos/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id b/demos/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id similarity index 100% rename from demos/examples/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id rename to demos/Fig2_elecModels/chans/CA1.morph.xml.REMOVED.git-id diff --git a/demos/examples/Fig2_elecModels/chans/Ca.xml b/demos/Fig2_elecModels/chans/Ca.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/Ca.xml rename to demos/Fig2_elecModels/chans/Ca.xml diff --git a/demos/examples/Fig2_elecModels/chans/CaConc.xml b/demos/Fig2_elecModels/chans/CaConc.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/CaConc.xml rename to demos/Fig2_elecModels/chans/CaConc.xml diff --git a/demos/examples/Fig2_elecModels/chans/DoubExpSyn.xml b/demos/Fig2_elecModels/chans/DoubExpSyn.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/DoubExpSyn.xml rename to demos/Fig2_elecModels/chans/DoubExpSyn.xml diff --git a/demos/examples/Fig2_elecModels/chans/Generated.net.xml b/demos/Fig2_elecModels/chans/Generated.net.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/Generated.net.xml rename to demos/Fig2_elecModels/chans/Generated.net.xml diff --git a/demos/examples/Fig2_elecModels/chans/Glu.xml b/demos/Fig2_elecModels/chans/Glu.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/Glu.xml rename to demos/Fig2_elecModels/chans/Glu.xml diff --git a/demos/examples/Fig2_elecModels/chans/HChannel.xml b/demos/Fig2_elecModels/chans/HChannel.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/HChannel.xml rename to demos/Fig2_elecModels/chans/HChannel.xml diff --git a/demos/examples/Fig2_elecModels/chans/KChannel_HH.xml b/demos/Fig2_elecModels/chans/KChannel_HH.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/KChannel_HH.xml rename to demos/Fig2_elecModels/chans/KChannel_HH.xml diff --git a/demos/examples/Fig2_elecModels/chans/LeakConductance.xml b/demos/Fig2_elecModels/chans/LeakConductance.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/LeakConductance.xml rename to demos/Fig2_elecModels/chans/LeakConductance.xml diff --git a/demos/examples/Fig2_elecModels/chans/NMDA.xml b/demos/Fig2_elecModels/chans/NMDA.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/NMDA.xml rename to demos/Fig2_elecModels/chans/NMDA.xml diff --git a/demos/examples/Fig2_elecModels/chans/NaChannel_HH.xml b/demos/Fig2_elecModels/chans/NaChannel_HH.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/NaChannel_HH.xml rename to demos/Fig2_elecModels/chans/NaChannel_HH.xml diff --git a/demos/examples/Fig2_elecModels/chans/hd.xml b/demos/Fig2_elecModels/chans/hd.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/hd.xml rename to demos/Fig2_elecModels/chans/hd.xml diff --git a/demos/examples/Fig2_elecModels/chans/kad.xml b/demos/Fig2_elecModels/chans/kad.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/kad.xml rename to demos/Fig2_elecModels/chans/kad.xml diff --git a/demos/examples/Fig2_elecModels/chans/kap.xml b/demos/Fig2_elecModels/chans/kap.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/kap.xml rename to demos/Fig2_elecModels/chans/kap.xml diff --git a/demos/examples/Fig2_elecModels/chans/kdr.xml b/demos/Fig2_elecModels/chans/kdr.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/kdr.xml rename to demos/Fig2_elecModels/chans/kdr.xml diff --git a/demos/examples/Fig2_elecModels/chans/na3.xml b/demos/Fig2_elecModels/chans/na3.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/na3.xml rename to demos/Fig2_elecModels/chans/na3.xml diff --git a/demos/examples/Fig2_elecModels/chans/nax.xml b/demos/Fig2_elecModels/chans/nax.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/nax.xml rename to demos/Fig2_elecModels/chans/nax.xml diff --git a/demos/examples/Fig2_elecModels/chans/pas.xml b/demos/Fig2_elecModels/chans/pas.xml similarity index 100% rename from demos/examples/Fig2_elecModels/chans/pas.xml rename to demos/Fig2_elecModels/chans/pas.xml diff --git a/demos/examples/Fig3_chemModels/Fig3ABC.g b/demos/Fig3_chemModels/Fig3ABC.g similarity index 100% rename from demos/examples/Fig3_chemModels/Fig3ABC.g rename to demos/Fig3_chemModels/Fig3ABC.g diff --git a/demos/examples/Fig3_chemModels/Fig3D.py b/demos/Fig3_chemModels/Fig3D.py similarity index 100% rename from demos/examples/Fig3_chemModels/Fig3D.py rename to demos/Fig3_chemModels/Fig3D.py diff --git a/demos/examples/Fig3_chemModels/Fig3_NEURON.py b/demos/Fig3_chemModels/Fig3_NEURON.py similarity index 100% rename from demos/examples/Fig3_chemModels/Fig3_NEURON.py rename to demos/Fig3_chemModels/Fig3_NEURON.py diff --git a/demos/examples/Fig4_ReacDiff/CaMKII_merged77.g b/demos/Fig4_ReacDiff/CaMKII_merged77.g similarity index 100% rename from demos/examples/Fig4_ReacDiff/CaMKII_merged77.g rename to demos/Fig4_ReacDiff/CaMKII_merged77.g diff --git a/demos/examples/Fig4_ReacDiff/Fig4B.py b/demos/Fig4_ReacDiff/Fig4B.py similarity index 100% rename from demos/examples/Fig4_ReacDiff/Fig4B.py rename to demos/Fig4_ReacDiff/Fig4B.py diff --git a/demos/examples/Fig4_ReacDiff/Fig4CDEF.py b/demos/Fig4_ReacDiff/Fig4CDEF.py similarity index 100% rename from demos/examples/Fig4_ReacDiff/Fig4CDEF.py rename to demos/Fig4_ReacDiff/Fig4CDEF.py diff --git a/demos/examples/Fig4_ReacDiff/Fig4GHIJ.py b/demos/Fig4_ReacDiff/Fig4GHIJ.py similarity index 100% rename from demos/examples/Fig4_ReacDiff/Fig4GHIJ.py rename to demos/Fig4_ReacDiff/Fig4GHIJ.py diff --git a/demos/examples/Fig4_ReacDiff/ca1_minimal.p b/demos/Fig4_ReacDiff/ca1_minimal.p similarity index 100% rename from demos/examples/Fig4_ReacDiff/ca1_minimal.p rename to demos/Fig4_ReacDiff/ca1_minimal.p diff --git a/demos/examples/Fig4_ReacDiff/rxdSpineSize.py b/demos/Fig4_ReacDiff/rxdSpineSize.py similarity index 100% rename from demos/examples/Fig4_ReacDiff/rxdSpineSize.py rename to demos/Fig4_ReacDiff/rxdSpineSize.py diff --git a/demos/examples/Fig5_CellMultiscale/Fig5A.py b/demos/Fig5_CellMultiscale/Fig5A.py similarity index 100% rename from demos/examples/Fig5_CellMultiscale/Fig5A.py rename to demos/Fig5_CellMultiscale/Fig5A.py diff --git a/demos/examples/Fig5_CellMultiscale/Fig5BCD.py b/demos/Fig5_CellMultiscale/Fig5BCD.py similarity index 100% rename from demos/examples/Fig5_CellMultiscale/Fig5BCD.py rename to demos/Fig5_CellMultiscale/Fig5BCD.py diff --git a/demos/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc b/demos/Fig5_CellMultiscale/cells/970529c.CNG.swc similarity index 100% rename from demos/examples/Fig5_CellMultiscale/cells/970529c.CNG.swc rename to demos/Fig5_CellMultiscale/cells/970529c.CNG.swc diff --git a/demos/examples/Fig5_CellMultiscale/cells/CA1.morph.xml b/demos/Fig5_CellMultiscale/cells/CA1.morph.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/cells/CA1.morph.xml rename to demos/Fig5_CellMultiscale/cells/CA1.morph.xml diff --git a/demos/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc b/demos/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc similarity index 100% rename from demos/examples/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc rename to demos/Fig5_CellMultiscale/cells/DHC-neuron.CNG.swc diff --git a/demos/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc b/demos/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc similarity index 100% rename from demos/examples/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc rename to demos/Fig5_CellMultiscale/cells/VHC-neuron.CNG.swc diff --git a/demos/examples/Fig5_CellMultiscale/cells/ca1_minimal.p b/demos/Fig5_CellMultiscale/cells/ca1_minimal.p similarity index 100% rename from demos/examples/Fig5_CellMultiscale/cells/ca1_minimal.p rename to demos/Fig5_CellMultiscale/cells/ca1_minimal.p diff --git a/demos/examples/Fig5_CellMultiscale/cells/h10.CNG.swc b/demos/Fig5_CellMultiscale/cells/h10.CNG.swc similarity index 100% rename from demos/examples/Fig5_CellMultiscale/cells/h10.CNG.swc rename to demos/Fig5_CellMultiscale/cells/h10.CNG.swc diff --git a/demos/examples/Fig5_CellMultiscale/chans/CA1.morph.xml b/demos/Fig5_CellMultiscale/chans/CA1.morph.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/CA1.morph.xml rename to demos/Fig5_CellMultiscale/chans/CA1.morph.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/Ca.xml b/demos/Fig5_CellMultiscale/chans/Ca.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/Ca.xml rename to demos/Fig5_CellMultiscale/chans/Ca.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/CaConc.xml b/demos/Fig5_CellMultiscale/chans/CaConc.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/CaConc.xml rename to demos/Fig5_CellMultiscale/chans/CaConc.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml b/demos/Fig5_CellMultiscale/chans/DoubExpSyn.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/DoubExpSyn.xml rename to demos/Fig5_CellMultiscale/chans/DoubExpSyn.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/Generated.net.xml b/demos/Fig5_CellMultiscale/chans/Generated.net.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/Generated.net.xml rename to demos/Fig5_CellMultiscale/chans/Generated.net.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/Glu.xml b/demos/Fig5_CellMultiscale/chans/Glu.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/Glu.xml rename to demos/Fig5_CellMultiscale/chans/Glu.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/HChannel.xml b/demos/Fig5_CellMultiscale/chans/HChannel.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/HChannel.xml rename to demos/Fig5_CellMultiscale/chans/HChannel.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/NMDA.xml b/demos/Fig5_CellMultiscale/chans/NMDA.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/NMDA.xml rename to demos/Fig5_CellMultiscale/chans/NMDA.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/hd.xml b/demos/Fig5_CellMultiscale/chans/hd.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/hd.xml rename to demos/Fig5_CellMultiscale/chans/hd.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/kad.xml b/demos/Fig5_CellMultiscale/chans/kad.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/kad.xml rename to demos/Fig5_CellMultiscale/chans/kad.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/kap.xml b/demos/Fig5_CellMultiscale/chans/kap.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/kap.xml rename to demos/Fig5_CellMultiscale/chans/kap.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/kdr.xml b/demos/Fig5_CellMultiscale/chans/kdr.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/kdr.xml rename to demos/Fig5_CellMultiscale/chans/kdr.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/na3.xml b/demos/Fig5_CellMultiscale/chans/na3.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/na3.xml rename to demos/Fig5_CellMultiscale/chans/na3.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/nax.xml b/demos/Fig5_CellMultiscale/chans/nax.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/nax.xml rename to demos/Fig5_CellMultiscale/chans/nax.xml diff --git a/demos/examples/Fig5_CellMultiscale/chans/pas.xml b/demos/Fig5_CellMultiscale/chans/pas.xml similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chans/pas.xml rename to demos/Fig5_CellMultiscale/chans/pas.xml diff --git a/demos/examples/Fig5_CellMultiscale/chem/psd53.g b/demos/Fig5_CellMultiscale/chem/psd53.g similarity index 100% rename from demos/examples/Fig5_CellMultiscale/chem/psd53.g rename to demos/Fig5_CellMultiscale/chem/psd53.g diff --git a/demos/examples/Fig6_NetMultiscale/Fig6A.py b/demos/Fig6_NetMultiscale/Fig6A.py similarity index 100% rename from demos/examples/Fig6_NetMultiscale/Fig6A.py rename to demos/Fig6_NetMultiscale/Fig6A.py diff --git a/demos/examples/Fig6_NetMultiscale/Fig6BCDE.py b/demos/Fig6_NetMultiscale/Fig6BCDE.py similarity index 100% rename from demos/examples/Fig6_NetMultiscale/Fig6BCDE.py rename to demos/Fig6_NetMultiscale/Fig6BCDE.py diff --git a/demos/examples/Fig6_NetMultiscale/ReducedModel.py b/demos/Fig6_NetMultiscale/ReducedModel.py similarity index 100% rename from demos/examples/Fig6_NetMultiscale/ReducedModel.py rename to demos/Fig6_NetMultiscale/ReducedModel.py diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1.morph.spines.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1.morph.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/CA1.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1.morph.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1_nochans.morph.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1spiny.morph.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml b/demos/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml rename to demos/Fig6_NetMultiscale/cells_channels/CA1spiny7_0.morph.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/Ca.xml b/demos/Fig6_NetMultiscale/cells_channels/Ca.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/Ca.xml rename to demos/Fig6_NetMultiscale/cells_channels/Ca.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml b/demos/Fig6_NetMultiscale/cells_channels/CaConc.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/CaConc.xml rename to demos/Fig6_NetMultiscale/cells_channels/CaConc.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml b/demos/Fig6_NetMultiscale/cells_channels/Ca_conc.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/Ca_conc.xml rename to demos/Fig6_NetMultiscale/cells_channels/Ca_conc.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/GABA.xml b/demos/Fig6_NetMultiscale/cells_channels/GABA.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/GABA.xml rename to demos/Fig6_NetMultiscale/cells_channels/GABA.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/Glu.xml b/demos/Fig6_NetMultiscale/cells_channels/Glu.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/Glu.xml rename to demos/Fig6_NetMultiscale/cells_channels/Glu.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml b/demos/Fig6_NetMultiscale/cells_channels/NMDA.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/NMDA.xml rename to demos/Fig6_NetMultiscale/cells_channels/NMDA.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml b/demos/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml rename to demos/Fig6_NetMultiscale/cells_channels/Pyramidal_KM.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml b/demos/Fig6_NetMultiscale/cells_channels/Traub_KA.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KA.xml rename to demos/Fig6_NetMultiscale/cells_channels/Traub_KA.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml b/demos/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml rename to demos/Fig6_NetMultiscale/cells_channels/Traub_KCaAHP.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p b/demos/Fig6_NetMultiscale/cells_channels/ca1_minimal.p similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/ca1_minimal.p rename to demos/Fig6_NetMultiscale/cells_channels/ca1_minimal.p diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/hd.xml b/demos/Fig6_NetMultiscale/cells_channels/hd.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/hd.xml rename to demos/Fig6_NetMultiscale/cells_channels/hd.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml b/demos/Fig6_NetMultiscale/cells_channels/hd_minus73.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/hd_minus73.xml rename to demos/Fig6_NetMultiscale/cells_channels/hd_minus73.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/kad.xml b/demos/Fig6_NetMultiscale/cells_channels/kad.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/kad.xml rename to demos/Fig6_NetMultiscale/cells_channels/kad.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/kap.xml b/demos/Fig6_NetMultiscale/cells_channels/kap.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/kap.xml rename to demos/Fig6_NetMultiscale/cells_channels/kap.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/kdr.xml b/demos/Fig6_NetMultiscale/cells_channels/kdr.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/kdr.xml rename to demos/Fig6_NetMultiscale/cells_channels/kdr.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/na3.xml b/demos/Fig6_NetMultiscale/cells_channels/na3.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/na3.xml rename to demos/Fig6_NetMultiscale/cells_channels/na3.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/nax.xml b/demos/Fig6_NetMultiscale/cells_channels/nax.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/nax.xml rename to demos/Fig6_NetMultiscale/cells_channels/nax.xml diff --git a/demos/examples/Fig6_NetMultiscale/cells_channels/pas.xml b/demos/Fig6_NetMultiscale/cells_channels/pas.xml similarity index 100% rename from demos/examples/Fig6_NetMultiscale/cells_channels/pas.xml rename to demos/Fig6_NetMultiscale/cells_channels/pas.xml diff --git a/demos/examples/Fig6_NetMultiscale/psd53.g b/demos/Fig6_NetMultiscale/psd53.g similarity index 100% rename from demos/examples/Fig6_NetMultiscale/psd53.g rename to demos/Fig6_NetMultiscale/psd53.g diff --git a/demos/examples/README b/demos/README similarity index 100% rename from demos/examples/README rename to demos/README diff --git a/demos/examples/README.md b/demos/README.md similarity index 100% rename from demos/examples/README.md rename to demos/README.md diff --git a/demos/examples/.gitignore b/demos/examples/.gitignore deleted file mode 100644 index ba74660..0000000 --- a/demos/examples/.gitignore +++ /dev/null @@ -1,57 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] - -# C extensions -*.so - -# Distribution / packaging -.Python -env/ -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -*.egg-info/ -.installed.cfg -*.egg - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*,cover - -# Translations -*.mo -*.pot - -# Django stuff: -*.log - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ diff --git a/demos/examples/.travis.yml b/demos/examples/.travis.yml deleted file mode 100644 index 7aaff7a..0000000 --- a/demos/examples/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -notifications: - email: - recipients: - - dilawar.s.rajput@gmail.com - - upi.bhalla@gmail.com - - ray.shubhasis@gmail.com - - hrani@ncbs.res.in - - -install: - - wget http://download.opensuse.org/repositories/home:moose/xUbuntu_12.04/Release.key - - sudo apt-key add - < Release.key - - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/moose/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/moose.list" - - sudo apt-get -y update - - sudo apt-get install python-h5py - - sudo apt-get install python3 - - sudo apt-get -y install moose - -script: - - # Making sure no python3 incompatible file. - - python3 -m compileall -q . - - python -c 'import moose' - - python -c 'import moogli' - - cd _travis && ./find_scripts_to_run.sh && ./run_scripts.sh diff --git a/demos/examples/rxdSpineSize.py b/demos/rxdSpineSize.py similarity index 100% rename from demos/examples/rxdSpineSize.py rename to demos/rxdSpineSize.py diff --git a/demos/examples/squid/README.txt b/demos/squid/README.txt similarity index 100% rename from demos/examples/squid/README.txt rename to demos/squid/README.txt diff --git a/demos/examples/squid/channeleditor.py b/demos/squid/channeleditor.py similarity index 100% rename from demos/examples/squid/channeleditor.py rename to demos/squid/channeleditor.py diff --git a/demos/examples/squid/electronics.py b/demos/squid/electronics.py similarity index 100% rename from demos/examples/squid/electronics.py rename to demos/squid/electronics.py diff --git a/demos/examples/squid/help.html b/demos/squid/help.html similarity index 100% rename from demos/examples/squid/help.html rename to demos/squid/help.html diff --git a/demos/examples/squid/help.org b/demos/squid/help.org similarity index 100% rename from demos/examples/squid/help.org rename to demos/squid/help.org diff --git a/demos/examples/squid/images/navigationtoolbar.jpg b/demos/squid/images/navigationtoolbar.jpg similarity index 100% rename from demos/examples/squid/images/navigationtoolbar.jpg rename to demos/squid/images/navigationtoolbar.jpg diff --git a/demos/examples/squid/squid.py b/demos/squid/squid.py similarity index 100% rename from demos/examples/squid/squid.py rename to demos/squid/squid.py diff --git a/demos/examples/squid/squid_demo.py b/demos/squid/squid_demo.py similarity index 100% rename from demos/examples/squid/squid_demo.py rename to demos/squid/squid_demo.py diff --git a/demos/examples/squid/squid_setup.py b/demos/squid/squid_setup.py similarity index 100% rename from demos/examples/squid/squid_setup.py rename to demos/squid/squid_setup.py diff --git a/demos/examples/squid/test_squid.py b/demos/squid/test_squid.py similarity index 100% rename from demos/examples/squid/test_squid.py rename to demos/squid/test_squid.py diff --git a/src/moose b/moose similarity index 100% rename from src/moose rename to moose diff --git a/setup.py b/setup.py index 315b6ee..2f62a74 100644 --- a/setup.py +++ b/setup.py @@ -26,9 +26,7 @@ version = "1.0.0", description = "Graphical User Interface of MOOSE simulator", long_description = open( 'README.md' ).read(), - packages = [ "moosegui" - , "moosegui.demos" - , 'moosegui.plugins' + packages = [ "moosegui", 'moosegui.plugins', "moosegui.demos" , 'suds', 'suds.bindings', 'suds.sax', 'suds.mx', 'suds.xsd' , 'suds.umx', 'suds.transport' ], @@ -39,7 +37,7 @@ , 'suds' : 'suds' }, package_data = { - 'moosegui' : [ 'moose', 'icons/*', 'colormaps/*' ] + 'moosegui' : [ 'icons/*', 'icons/classIcon/*', 'colormaps/*' ] , 'moosegui.demos' : [ './*' ] , 'moosegui.plugins' : [ 'datastore/*', 'list.txt' ] }, diff --git a/src/examples.py b/src/examples.py index 3766ceb..f2c80df 100644 --- a/src/examples.py +++ b/src/examples.py @@ -19,19 +19,19 @@ from collections import OrderedDict examples_ = [ - ("Fig2C" , "examples/Fig2_elecModels/Fig2C.py") - , ("Fig2D (35s)","examples/Fig2_elecModels/Fig2D.py") - , ("Fig2E","examples/Fig2_elecModels/Fig2E.py") - , ("Fig3B_Gssa","examples/Fig3_chemModels/Fig3ABC.g") - , ("Fig3C_Gsl","examples/Fig3_chemModels/Fig3ABC.g") - , ("Fig3D","examples/Fig3_chemModels/Fig3D.py") - , ("Fig4B","examples/Fig4_ReacDiff/Fig4B.py" ) - , ("Fig4K", "examples/Fig4_ReacDiff/rxdSpineSize.py") - , ("Fig5A (20s)","examples/Fig5_CellMultiscale/Fig5A.py") - , ("Fig5BCD (240s)","examples/Fig5_CellMultiscale/Fig5BCD.py") - , ("Fig6A (60s)","examples/Fig6_NetMultiscale/Fig6A.py" ) - , ("Reduced6 (200s)","examples/Fig6_NetMultiscale/ReducedModel.py") - , ("Squid" , "examples/squid/squid_demo.py") + ("Fig2C" , "demos/Fig2_elecModels/Fig2C.py") + , ("Fig2D (35s)","demos/Fig2_elecModels/Fig2D.py") + , ("Fig2E","demos/Fig2_elecModels/Fig2E.py") + , ("Fig3B_Gssa","demos/Fig3_chemModels/Fig3ABC.g") + , ("Fig3C_Gsl","demos/Fig3_chemModels/Fig3ABC.g") + , ("Fig3D","demos/Fig3_chemModels/Fig3D.py") + , ("Fig4B","demos/Fig4_ReacDiff/Fig4B.py" ) + , ("Fig4K", "demos/Fig4_ReacDiff/rxdSpineSize.py") + , ("Fig5A (20s)","demos/Fig5_CellMultiscale/Fig5A.py") + , ("Fig5BCD (240s)","demos/Fig5_CellMultiscale/Fig5BCD.py") + , ("Fig6A (60s)","demos/Fig6_NetMultiscale/Fig6A.py" ) + , ("Reduced6 (200s)","demos/Fig6_NetMultiscale/ReducedModel.py") + , ("Squid" , "demos/squid/squid_demo.py") ] description_ = { diff --git a/src/plugins/kkit.py b/src/plugins/kkit.py index 09940c4..acb4e3a 100644 --- a/src/plugins/kkit.py +++ b/src/plugins/kkit.py @@ -971,11 +971,13 @@ def getToolBars(self): button.setDefaultAction(action) # set the unicode instead of image by setting # button.setText(unicode(u'\u20de')) - Iconpath = os.path.join( - config.MOOSE_GUI_DIR, 'icons/classIcon/') - button.setIcon(QtGui.QIcon(Iconpath + action.text() + ".png")) - # button.setIcon(QtGui.QIcon("icons/classIcon/"+action.text()+".png")) - # button.setIconSize(QtCore.QSize(200,200)) + Iconpath = os.path.join(config.MOOSE_ICON_DIR, 'classIcon') + _logger.debug( "Reading icons from %s" % Iconpath ) + button.setIcon( + QtGui.QIcon( + os.path.join(Iconpath, '%s' % action.text() + ".png") + ) + ) self._insertToolBar.addWidget(button) return self._toolBars From 67499975bf91be171f78beed1e50cec6b7f50c48 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 1 Dec 2016 13:33:44 +0530 Subject: [PATCH 31/66] New travis script to test gui as module. --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5e29a48..a614726 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,11 +12,10 @@ install: - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/moose/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/moose.list" - sudo apt-get -y update - sudo apt-get install python3 - - sudo apt-get -y install moose script: - # Making sure no python incompatible file is added. - - python -m compileall -q . - - python -c 'import moose' - - python -c 'import moogli' + - python2 -m compileall -q . + - python3 -m compileall -q . - # More tests here for gui. + - python setup.py install --user From 8df933ae7ec6fc0725e20b908fc255bd8148e0d8 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 1 Dec 2016 13:59:09 +0530 Subject: [PATCH 32/66] Fixed some issues with python3 compileall, python2 compileall Installing missing dependency on travis. --- .travis.yml | 2 ++ demos/Fig6_NetMultiscale/Fig6BCDE.py | 3 ++- demos/Fig6_NetMultiscale/ReducedModel.py | 3 ++- src/config.py | 4 ++-- suds/sax/text.py | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index a614726..470d794 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,8 @@ install: - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/moose/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/moose.list" - sudo apt-get -y update - sudo apt-get install python3 + - sudo apt-get install python-matplotlib + - sudo apt-get install python3-matplotlib script: - # Making sure no python incompatible file is added. diff --git a/demos/Fig6_NetMultiscale/Fig6BCDE.py b/demos/Fig6_NetMultiscale/Fig6BCDE.py index 6d79570..af04c9f 100644 --- a/demos/Fig6_NetMultiscale/Fig6BCDE.py +++ b/demos/Fig6_NetMultiscale/Fig6BCDE.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python #/********************************************************************** #** This program is part of 'MOOSE', the #** Messaging Object Oriented Simulation Environment. @@ -23,6 +22,8 @@ about 65 minutes to run 30 seconds of simulation time. ''' +from __future__ import print_function + ## import modules and functions to be used import numpy as np import matplotlib.pyplot as plt diff --git a/demos/Fig6_NetMultiscale/ReducedModel.py b/demos/Fig6_NetMultiscale/ReducedModel.py index c3bf4c5..1b73043 100644 --- a/demos/Fig6_NetMultiscale/ReducedModel.py +++ b/demos/Fig6_NetMultiscale/ReducedModel.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python #/********************************************************************** #** This program is part of 'MOOSE', the #** Messaging Object Oriented Simulation Environment. @@ -27,6 +26,8 @@ and lots of synapses. ''' +from __future__ import print_function + ## import modules and functions to be used import numpy as np import matplotlib.pyplot as plt diff --git a/src/config.py b/src/config.py index c0d1e69..d904930 100644 --- a/src/config.py +++ b/src/config.py @@ -127,8 +127,8 @@ def qvalue( qsetting, key ): try: val = qval.toString( ) except Exception as e: - val = '%s' % qval - return u'%s' % val + val = str(qval) + return unicode(val) class MooseSetting(dict): diff --git a/suds/sax/text.py b/suds/sax/text.py index 44c28df..bf82553 100644 --- a/suds/sax/text.py +++ b/suds/sax/text.py @@ -22,7 +22,7 @@ from suds.sax import * -class Text( type( u"") ): +class Text( type("") ): """ An XML text object used to represent text content. @ivar lang: The (optional) language flag. From 1ab2a9bb76e655edb1f8a30d7ca963dec9225417 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 1 Dec 2016 14:02:11 +0530 Subject: [PATCH 33/66] python3-matplotlib is not available on Travis. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 470d794..9cf3d90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,6 @@ install: - sudo apt-get -y update - sudo apt-get install python3 - sudo apt-get install python-matplotlib - - sudo apt-get install python3-matplotlib script: - # Making sure no python incompatible file is added. From fd2b639fcf19f3981eebb5cb5fc016d0c18b5195 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 1 Dec 2016 14:14:20 +0530 Subject: [PATCH 34/66] Icons are in one place. Fixed their paths. --- setup.py | 5 +---- src/icons/{classIcon => }/BufPool.png | Bin src/icons/{classIcon => }/CubeMesh.png | Bin src/icons/{classIcon => }/CylMesh.png | Bin src/icons/{classIcon => }/Enz.png | Bin src/icons/{classIcon => }/FuncPool.png | Bin src/icons/{classIcon => }/Function.png | Bin src/icons/{classIcon => }/MMenz.png | Bin src/icons/{classIcon => }/Pool.png | Bin src/icons/{classIcon => }/Reac.png | Bin src/icons/{classIcon => }/StimulusTable.png | Bin src/icons/{classIcon => }/SumFunc.png | Bin src/plugins/kkit.py | 2 +- src/plugins/kkitQGraphics.py | 5 +++-- 14 files changed, 5 insertions(+), 7 deletions(-) rename src/icons/{classIcon => }/BufPool.png (100%) rename src/icons/{classIcon => }/CubeMesh.png (100%) rename src/icons/{classIcon => }/CylMesh.png (100%) rename src/icons/{classIcon => }/Enz.png (100%) rename src/icons/{classIcon => }/FuncPool.png (100%) rename src/icons/{classIcon => }/Function.png (100%) rename src/icons/{classIcon => }/MMenz.png (100%) rename src/icons/{classIcon => }/Pool.png (100%) rename src/icons/{classIcon => }/Reac.png (100%) rename src/icons/{classIcon => }/StimulusTable.png (100%) rename src/icons/{classIcon => }/SumFunc.png (100%) diff --git a/setup.py b/setup.py index 2f62a74..6fc22f9 100644 --- a/setup.py +++ b/setup.py @@ -15,9 +15,6 @@ import sys import os -import matplotlib.pyplot as plt -import numpy as np -import os import sys from distutils.core import setup @@ -37,7 +34,7 @@ , 'suds' : 'suds' }, package_data = { - 'moosegui' : [ 'icons/*', 'icons/classIcon/*', 'colormaps/*' ] + 'moosegui' : [ 'icons/*', 'colormaps/*' ] , 'moosegui.demos' : [ './*' ] , 'moosegui.plugins' : [ 'datastore/*', 'list.txt' ] }, diff --git a/src/icons/classIcon/BufPool.png b/src/icons/BufPool.png similarity index 100% rename from src/icons/classIcon/BufPool.png rename to src/icons/BufPool.png diff --git a/src/icons/classIcon/CubeMesh.png b/src/icons/CubeMesh.png similarity index 100% rename from src/icons/classIcon/CubeMesh.png rename to src/icons/CubeMesh.png diff --git a/src/icons/classIcon/CylMesh.png b/src/icons/CylMesh.png similarity index 100% rename from src/icons/classIcon/CylMesh.png rename to src/icons/CylMesh.png diff --git a/src/icons/classIcon/Enz.png b/src/icons/Enz.png similarity index 100% rename from src/icons/classIcon/Enz.png rename to src/icons/Enz.png diff --git a/src/icons/classIcon/FuncPool.png b/src/icons/FuncPool.png similarity index 100% rename from src/icons/classIcon/FuncPool.png rename to src/icons/FuncPool.png diff --git a/src/icons/classIcon/Function.png b/src/icons/Function.png similarity index 100% rename from src/icons/classIcon/Function.png rename to src/icons/Function.png diff --git a/src/icons/classIcon/MMenz.png b/src/icons/MMenz.png similarity index 100% rename from src/icons/classIcon/MMenz.png rename to src/icons/MMenz.png diff --git a/src/icons/classIcon/Pool.png b/src/icons/Pool.png similarity index 100% rename from src/icons/classIcon/Pool.png rename to src/icons/Pool.png diff --git a/src/icons/classIcon/Reac.png b/src/icons/Reac.png similarity index 100% rename from src/icons/classIcon/Reac.png rename to src/icons/Reac.png diff --git a/src/icons/classIcon/StimulusTable.png b/src/icons/StimulusTable.png similarity index 100% rename from src/icons/classIcon/StimulusTable.png rename to src/icons/StimulusTable.png diff --git a/src/icons/classIcon/SumFunc.png b/src/icons/SumFunc.png similarity index 100% rename from src/icons/classIcon/SumFunc.png rename to src/icons/SumFunc.png diff --git a/src/plugins/kkit.py b/src/plugins/kkit.py index acb4e3a..a0133de 100644 --- a/src/plugins/kkit.py +++ b/src/plugins/kkit.py @@ -971,7 +971,7 @@ def getToolBars(self): button.setDefaultAction(action) # set the unicode instead of image by setting # button.setText(unicode(u'\u20de')) - Iconpath = os.path.join(config.MOOSE_ICON_DIR, 'classIcon') + Iconpath = os.path.join(config.MOOSE_ICON_DIR) _logger.debug( "Reading icons from %s" % Iconpath ) button.setIcon( QtGui.QIcon( diff --git a/src/plugins/kkitQGraphics.py b/src/plugins/kkitQGraphics.py index 56b9da4..e94faa0 100644 --- a/src/plugins/kkitQGraphics.py +++ b/src/plugins/kkitQGraphics.py @@ -59,11 +59,12 @@ class FuncItem(KineticsDisplayItem): def __init__(self, mobj, parent): super(FuncItem, self).__init__(mobj, parent) self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) - self.funcImage = QImage('icons/classIcon/Function.png').scaled(15,33) + self.funcImage = QImage( + os.path.join( config.MOOSE_ICON_DIR, 'Function.png') + ).scaled(15,33) self.bg = QtGui.QGraphicsRectItem(self) self.bg.setAcceptHoverEvents(True) self.gobj = QtGui.QGraphicsPixmapItem(QtGui.QPixmap.fromImage(self.funcImage),self.bg) - #self.gobj = QtGui.QGraphicsPixmapItem(QtGui.QPixmap('../icons/classIcon/Function.png')) self.gobj.setAcceptHoverEvents(True) self.gobj.mobj = self.mobj classname = self.mobj.className From b58a3a83f7a16f428ab013b62b09179971d7b4ff Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 1 Dec 2016 14:17:26 +0530 Subject: [PATCH 35/66] Removed unneccsary files. --- MANIFEST.in | 3 --- src/colormaps/__init__.py | 0 2 files changed, 3 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 src/colormaps/__init__.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index e81af2e..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -recursive-include mgui *.pkl -include colormaps/* -include bioModels/* diff --git a/src/colormaps/__init__.py b/src/colormaps/__init__.py deleted file mode 100644 index e69de29..0000000 From 984b754d2cb1a4e7baf433eb17d04cace8ba4075 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 1 Dec 2016 14:52:27 +0530 Subject: [PATCH 36/66] Demofiles are collected by a function now. --- demos/__init__.py | 0 setup.py | 14 +++++++++++--- src/plugins/list.txt | 1 - 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 demos/__init__.py diff --git a/demos/__init__.py b/demos/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/setup.py b/setup.py index 6fc22f9..a941463 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,14 @@ import sys from distutils.core import setup +demofiles = [] + +demoDir = './demos' +for d, sd, fs in os.walk( demoDir ): + for f in fs: + filepath = os.path.join( d, f ).replace( demoDir, '' ) + demofiles.append( filepath ) + setup( name = "moosegui", version = "1.0.0", @@ -29,13 +37,13 @@ ], package_dir = { 'moosegui' : 'src' - , 'moosegui.demos' : 'demos' + , 'moosegui.demos' : '.' , 'moosegui.plugins' : 'src/plugins' , 'suds' : 'suds' }, package_data = { - 'moosegui' : [ 'icons/*', 'colormaps/*' ] - , 'moosegui.demos' : [ './*' ] + 'moosegui' : [ 'icons/*', 'colormaps/*' ] + demofiles + , 'moosegui.demos' : [ '*' ] + demofiles , 'moosegui.plugins' : [ 'datastore/*', 'list.txt' ] }, author = open('AUTHOR').read(), diff --git a/src/plugins/list.txt b/src/plugins/list.txt index c3e68ca..7eaf8f2 100644 --- a/src/plugins/list.txt +++ b/src/plugins/list.txt @@ -1,3 +1,2 @@ kkit NeuroKit - From 80f0026297fe9bf531ab2361a00d6620c1397016 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 19:15:47 +0530 Subject: [PATCH 37/66] build is successful. --- setup.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index a941463..19019a9 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,4 @@ -"""setup.py: - -Install script of moose-gui project. - -""" +# -*- coding: utf-8 -*- __author__ = "Dilawar Singh" __copyright__ = "Copyright 2016, Dilawar Singh" @@ -16,7 +12,7 @@ import sys import os import sys -from distutils.core import setup +from setuptools import setup demofiles = [] @@ -28,7 +24,7 @@ setup( name = "moosegui", - version = "1.0.0", + version = "0.1.0", description = "Graphical User Interface of MOOSE simulator", long_description = open( 'README.md' ).read(), packages = [ "moosegui", 'moosegui.plugins', "moosegui.demos" @@ -50,5 +46,11 @@ maintainer = 'Dilawar Singh', maintainer_email = 'dilawars@ncbs.res.in', url = "http://github.com/BhallaLab/moose-gui", - license='GPL', + license='GPLv3', + install_requires = [ 'pymoose', 'pyqt5' ], + entry_points = { + 'console_scripts' : [ + 'moosegui = moosegui.mgui:main' + ], + }, ) From 7d202a99b7b076e5d605ef6fc61e7b4dae15ae31 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 19:40:20 +0530 Subject: [PATCH 38/66] Compiles with python3. Now port to qt5. --- Makefile | 4 + plugins/kkit.py | 1228 --------------------------- src/plugins/kkit.py | 1379 +++++++++++++++++-------------- src/plugins/kkitOrdinateUtil.py | 2 - 4 files changed, 771 insertions(+), 1842 deletions(-) create mode 100644 Makefile delete mode 100644 plugins/kkit.py diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c98d486 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +all : check + +check : + python -m compileall -q . diff --git a/plugins/kkit.py b/plugins/kkit.py deleted file mode 100644 index c375e06..0000000 --- a/plugins/kkit.py +++ /dev/null @@ -1,1228 +0,0 @@ - -__author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" -__maintainer__ = "HarshaRani" -__email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Feb 22 2019" - -#Change log: -#2019 -#Feb 22: cross compartment molecules are checked for destination -# 2018 -#Oct 26: xfer cross compartment molecules are hidden and for cross compartment reaction's -# connection are now dotted line -#Oct 10: filedialog default is sbml -# layout co-ordainates are updated with scenepos -#Sep 11: comparment size is calculated based on group sceneBoundingRect size -#Sep 07: in positionChange all the group's boundingRect is calculated -# and when group is moved the children's position are stored -#Jun 18: update the color of the group from objecteditor -#code - -import math -import sys -from PyQt4 import QtGui, QtCore, Qt -from default import * -from moose import * -from moose import SBML -from moose.genesis.writeKkit import mooseWriteKkit -from mplugin import * -from kkitUtil import * -from kkitQGraphics import * -from kkitViewcontrol import * -from kkitCalcArrow import * -from kkitOrdinateUtil import * -import posixpath -from mtoolbutton import MToolButton -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QColor -import RunWidget -from os.path import expanduser -#from setsolver import * -from moose.chemUtil.add_Delete_ChemicalSolver import * -import re - -class KkitPlugin(MoosePlugin): - """Default plugin for MOOSE GUI""" - def __init__(self, *args): - #print args - MoosePlugin.__init__(self, *args) - self.view = None - #self.plotView = PlotView(self) - #self.getRunView() - #self.plotView.dataTable = self.view._centralWidget.dataTable - #self.plotView.updateCallback = self.view._centralWidget.legendUpdate - #self.view._centralWidget.legendUpdate() - #self.dataTable = DataTable(self.dataRoot) - self.fileinsertMenu = QtGui.QMenu('&File') - if not hasattr(self,'SaveModelAction'): - #self.fileinsertMenu.addSeparator() - self.saveModelAction = QtGui.QAction('Save', self) - self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) - self.fileinsertMenu.addAction(self.saveModelAction) - self._menus.append(self.fileinsertMenu) - self.getEditorView() - - def SaveModelDialogSlot(self): - - dirpath = "" - if not dirpath: - dirpath = expanduser("~") - filters = {'SBML(*.xml)': 'SBML','Genesis(*.g)':'Genesis'} - #filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,';;'.join(filters)) - filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,"SBML(*.xml);;Genesis(*.g)") - extension = "" - if str(filename).rfind('.') != -1: - filename = filename[:str(filename).rfind('.')] - if str(filter_).rfind('.') != -1: - extension = filter_[str(filter_).rfind('.'):len(filter_)-1] - - if filename: - filename = filename - if filters[str(filter_)] == 'SBML': - self.coOrdinates = {} - self.plugin = KkitEditorView(self).getCentralWidget().plugin - self.coOrdinates = KkitEditorView(self).getCentralWidget().getsceneCord() - #writeerror = moose.writeSBML(self.modelRoot,str(filename),self.coOrdinates) - writeerror = -2 - conisitencyMessages = "" - writtentofile = "/test.xml" - writeerror,consistencyMessages,writtentofile = moose.SBML.mooseWriteSBML(self.modelRoot,str(filename),self.coOrdinates) - if writeerror == -2: - #QtGui.QMessageBox.warning(None,'Could not save the Model','\n WriteSBML : This copy of MOOSE has not been compiled with SBML writing support.') - QtGui.QMessageBox.warning(None,'Could not save the Model',consistencyMessages) - elif writeerror == -1: - QtGui.QMessageBox.warning(None,'Could not save the Model','\n This model is not valid SBML Model, failed in the consistency check') - elif writeerror == 1: - QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.xml'),QtGui.QMessageBox.Ok) - elif writeerror == 0: - QtGui.QMessageBox.information(None,'Could not save the Model','\nThe filename could not be opened for writing') - - elif filters[str(filter_)] == 'Genesis': - mdtype = moose.Annotator(self.modelRoot+'/info') - self.coOrdinates = {} - ss = KkitEditorView(self).getCentralWidget().mooseId_GObj - for k,v in ss.items(): - if moose.exists(moose.element(k).path+'/info'): - annoInfo = Annotator(k.path+'/info') - #co-ordinates will be in decimals converting to int which should be b/w 0 to 10 - x = annoInfo.x * 10 - y = -annoInfo.y * 10 - self.coOrdinates[k] = {'x':x, 'y':y} - - error,written = mooseWriteKkit(self.modelRoot,str(filename),self.coOrdinates) - if written == False: - QtGui.QMessageBox.information(None,'Could not save the Model','\nCheck the file') - else: - if error == "": - QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.g'),QtGui.QMessageBox.Ok) - else: - status = QtCore.QString("File saved but %2").arg(error); - QtGui.QMessageBox.information(None,'Saved the Model but ...','{error}'.format(error=error),QtGui.QMessageBox.Ok) - - def getPreviousPlugin(self): - return None - - def getNextPlugin(self): - return None - - def getAdjacentPlugins(self): - return [] - - def getViews(self): - return self._views - - def getCurrentView(self): - return self.currentView - - def getEditorView(self): - if not hasattr(self, 'editorView'): - #self.editorView = KkitEditorView(self, self.dataTable) - self.editorView = KkitEditorView(self) - self.editorView.getCentralWidget().editObject.connect(self.mainWindow.objectEditSlot) - #self.editorView.GrViewresize(self) - #self.editorView.connect(self,QtCore.SIGNAL("resize(QResizeEvent)"),self.editorView.GrViewresize) - self.currentView = self.editorView - return self.editorView - - def getRunView(self): - if self.view is None: - self.view = AnotherKkitRunView(self.modelRoot, self) - return self.view - - - if self.view is not None: return AnotherKkitRunView(self.modelRoot, self) - if self.view is not None: return self.view - self.view = RunView(self.modelRoot, self) - graphView = self.view._centralWidget - graphView.setDataRoot(self.modelRoot) - graphView.plotAllData() - schedulingDockWidget = self.view.getSchedulingDockWidget().widget() - self._kkitWidget = self.view.plugin.getEditorView().getCentralWidget() - #self.runView = KkitRunView(self,self.dataTable) - self.runView = KkitRunView(self, self._kkitWidget) - self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() - - #schedulingDockWidget.runner.update.connect(self.currentRunView.changeBgSize) - #schedulingDockWidget.runner.resetAndRun.connect(self.currentRunView.resetColor) - graphView.layout().addWidget(self.currentRunView,0,0,2,1) - return self.view - -class AnotherKkitRunView(RunView): - - def __init__(self, modelRoot, plugin,*args): - RunView.__init__(self, modelRoot, plugin, *args) - self.modelRoot = modelRoot - self.plugin = plugin - self.schedular = None - - def setSolverFromSettings(self, chemicalSettings): - self.setSolver(self.modelRoot, - chemicalSettings["simulation"]["solver"]) - - def createCentralWidget(self): - self._centralWidget = RunWidget.RunWidget(self.modelRoot) - self.kkitRunView = KkitRunView(self.plugin) - self.plotWidgetContainer = PlotWidgetContainer(self.modelRoot) - self._centralWidget.setChildWidget(self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) - self._centralWidget.setChildWidget(self.plotWidgetContainer, False, 0, 1, 1, 2) - self._centralWidget.setPlotWidgetContainer(self.plotWidgetContainer) - self.schedular = self.getSchedulingDockWidget().widget() - self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().updateValue) - self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().changeBgSize) - self.schedular.runner.simulationReset.connect(self.kkitRunView.getCentralWidget().resetColor) - # self.schedular.runner.simulationReset.connect(self.setSolver) - self.schedular.preferences.applyChemicalSettings.connect(self.setSolverFromSettings) - compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - ann = moose.Annotator(self.modelRoot+'/info') - if compt: - #self.runTime = (moose.Annotator(self.modelRoot+'/info')).runtime - #solver = (moose.Annotator(self.modelRoot+'/info')).solver - self.runTime = moose.element(ann).runtime - solver = moose.element(ann).solver - else: - self.runTime = 100 - solver = "gsl" - self.schedular.simulationRuntime.setText(str(self.runTime)) - #preferences - chemprefs = self.schedular.preferences.getChemicalPreferences() - c = moose.Clock('/clock') - self.simulationdt = c.tickDt[11] - self.plotdt = c.tickDt[18] - chemprefs["simulation"]["simulation-dt"] = self.simulationdt - chemprefs["simulation"]["plot-update-interval"] = self.plotdt - chemprefs["simulation"]["gui-update-interval"] = 2 * self.plotdt - chemprefs["simulation"]["solver"] = "Runge Kutta" - if solver == "gsl": - chemprefs["simulation"]["solver"] = "Runge Kutta" - elif solver == "gssa": - chemprefs["simulation"]["solver"] = "Gillespie" - elif solver == "ee" or solver == " ": - chemprefs["simulation"]["solver"] = "Exponential Euler" - else: - chemprefs["simulation"]["solver"] = "Runge Kutta" - self.schedular.preferences.setChemicalPreferences() - return self._centralWidget - - def setSolver(self, modelRoot,solver = None): - if solver == None: - reinit = mooseAddChemSolver(modelRoot,self.getSchedulingDockWidget().widget().solver) - if reinit: - self.getSchedulingDockWidget().widget().resetSimulation() - else: - reinit = mooseAddChemSolver(modelRoot,solver) - if reinit: - self.getSchedulingDockWidget().widget().resetSimulation() - - #self.kkitRunView.getCentralWidget().addSolver(solver) - - def getCentralWidget(self): - if self._centralWidget is None: - self.createCentralWidget() - return self._centralWidget - -class KkitRunView(MooseEditorView): - - #def __init__(self, plugin,dataTable): - def __init__(self, plugin): - MooseEditorView.__init__(self, plugin) - #self.dataTable =dataTable - self.plugin = plugin - ''' - def getToolPanes(self): - return super(KkitRunView, self).getToolPanes() - - def getLibraryPane(self): - return super(KkitRunView, self).getLibraryPane() - - def getOperationsWidget(self): - return super(KkitRunView, self).getOperationsPane() - - def getToolBars(self): - return self._toolBars - ''' - def getCentralWidget(self): - if self._centralWidget is None: - self._centralWidget = kineticRunWidget(self.plugin) - self._centralWidget.editor = self.plugin.editorView - # self._centralWidget.view.objectSelected.connect(self.plugin.mainWindow.objectEditSlot) - self._centralWidget.setModelRoot(self.plugin.modelRoot) - return self._centralWidget - -class KkitEditorView(MooseEditorView): - #def __init__(self, plugin, dataTable): - def __init__(self, plugin): - MooseEditorView.__init__(self, plugin) - ''' EditorView ''' - #self.dataTable = dataTable - #self.fileinsertMenu = QtGui.QMenu('&File') - # if not hasattr(self,'SaveModelAction'): - # #self.fileinsertMenu.addSeparator() - # self.saveModelAction = QtGui.QAction('SaveToGenesisFormat', self) - # self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - # self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveToGenesisSlot) - # self.fileinsertMenu.addAction(self.saveModelAction) - #self._menus.append(self.fileinsertMenu) - - # def SaveModelDialogSlot(self): - # type_sbml = 'SBML' - # filters = {'SBML(*.xml)': type_sbml} - # filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) - # extension = "" - # if str(filename).rfind('.') != -1: - # filename = filename[:str(filename).rfind('.')] - # if str(filter_).rfind('.') != -1: - # extension = filter_[str(filter_).rfind('.'):len(filter_)-1] - # if filename: - # filename = filename+extension - # if filters[str(filter_)] == 'SBML': - # writeerror = moose.writeSBML(str(filename),self.plugin.modelRoot) - # if writeerror: - # QtGui.QMessageBox.warning(None,'Could not save the Model','\n Error in the consistency check') - # else: - # QtGui.QMessageBox.information(None,'Saved the Model','\n File Saved to \'{filename}\''.format(filename =filename),QtGui.QMessageBox.Ok) - ''' - def getToolPanes(self): - return super(KkitEditorView, self).getToolPanes() - - def getLibraryPane(self): - return super(KkitEditorView, self).getLibraryPane() - - def getOperationsWidget(self): - return super(KkitEditorView, self).getOperationsPane() - - def getToolBars(self): - return self._toolBars - ''' - def getCentralWidget(self): - if self._centralWidget is None: - self._centralWidget = kineticEditorWidget(self.plugin) - self._centralWidget.setModelRoot(self.plugin.modelRoot) - return self._centralWidget - -class KineticsWidget(EditorWidgetBase): - def __init__(self, plugin, *args): - EditorWidgetBase.__init__(self, *args) - self.plugin = plugin - self.border = 5 - self.comptPen = 5 - self.iconScale = 1 - self.arrowsize = 2 - self.reset() - - self.defaultSceneheight = 1#800#1000 - self.defaultScenewidth = 1#000#2400 - self.positionInfoExist = True - self.defaultComptsize = 5 - self.srcdesConnection = {} - self.meshEntry = {} - self.mooseId_GObj = {} - self.qGraCompt = {} - self.qGraGrp = {} - self.xyCord = {} - self.editor = None - - def reset(self): - self.createdItem = {} - #This are created at drawLine - self.lineItem_dict = {} - self.object2line = defaultdict(list) - self.itemignoreZooming = False - - if hasattr(self,'sceneContainer'): - self.sceneContainer.clear() - self.sceneContainer = QtGui.QGraphicsScene(self) - self.sceneContainer.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex) - sceneDim = self.sceneContainer.itemsBoundingRect() - # if (sceneDim.width() == 0 and sceneDim.height() == 0): - # self.sceneContainer.setSceneRect(0,0,30,30) - # else: - #elf.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) - self.sceneContainer.setBackgroundBrush(QColor(230,220,219,120)) - - def getsceneCord(self): - self.cord = {} - self.view.setRefWidget("runView") - for item in self.sceneContainer.items(): - if isinstance(item,KineticsDisplayItem): - self.cord[item.mobj] = {'x':item.scenePos().x(),'y':item.scenePos().y()} - return self.cord - - def updateModelView(self): - self.getMooseObj() - #minmaxratiodict = {'xmin':self.xmin,'xmax':self.xmax,'ymin':self.ymin,'ymax':self.ymax,'xratio':self.xratio,'yratio':self.yratio} - if not self.m: - #At the time of model building - # when we want an empty GraphicView while creating new model, - # then remove all the view and add an empty view - if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): - self.layout().removeWidget(self.view) - #self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) - #self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) - self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) - if isinstance(self,kineticEditorWidget): - self.view.setRefWidget("editorView") - self.view.setAcceptDrops(True) - elif isinstance(self,kineticRunWidget): - self.view.setRefWidget("runView") - self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) - hLayout = QtGui.QGridLayout(self) - self.setLayout(hLayout) - hLayout.addWidget(self.view,0,0) - else: - # Already created Model - # maxmium and minimum coordinates of the objects specified in kkit file. - #self.mooseObjOntoscene() - #self.drawLine_arrow() - if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): - self.layout().removeWidget(self.view) - # self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) - self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) - if isinstance(self,kineticEditorWidget): - #self.getMooseObj() - self.mooseObjOntoscene() - self.drawLine_arrow() - self.view.setRefWidget("editorView") - self.view.setAcceptDrops(True) - self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) - hLayout = QtGui.QGridLayout(self) - self.setLayout(hLayout) - hLayout.addWidget(self.view) - elif isinstance(self,kineticRunWidget): - self.view.setRefWidget("runView") - hLayout = QtGui.QGridLayout(self) - self.setLayout(hLayout) - hLayout.addWidget(self.view) - self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10,self.sceneContainer.itemsBoundingRect().y()-10,self.sceneContainer.itemsBoundingRect().width()+20,self.sceneContainer.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) - - def getMooseObj(self): - #This fun call 2 more function - # -- setupMeshObj(self.modelRoot), - # ----self.meshEntry has [meshEnt] = function: {}, Pool: {} etc - # setupItem - self.m = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - if self.m: - self.srcdesConnection = {} - if self.meshEntry: - self.meshEntry.clear() - else: - self.meshEntry = {} - #self.meshEntry.clear= {} - # Compartment and its members are setup - #self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) - - #self.meshEntry,xcord,ycord = setupMeshObj(self.modelRoot) - #self.positionInfoExist = not(len(np.nonzero(xcord)[0]) == 0 \ - # and len(np.nonzero(ycord)[0]) == 0) - self.objPar,self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) - self.autocoordinates = False - if self.srcdesConnection: - self.srcdesConnection.clear() - else: - self.srcdesConnection = {} - - setupItem(self.modelRoot,self.srcdesConnection) - #self.noPositionInfo = False - if not self.noPositionInfo: - self.autocoordinates = True - #self.xmin,self.xmax,self.ymin,self.ymax,self.autoCordinatepos = autoCoordinates(self.meshEntry,self.srcdesConnection) - autoCoordinates(self.meshEntry,self.srcdesConnection) - - self.size = QtCore.QSize(1000 ,550) - - ''' - if self.xmax-self.xmin != 0: - self.xratio = (self.size.width()-10)/(self.xmax-self.xmin) - else: self.xratio = self.size.width()-10 - - if self.ymax-self.ymin: - self.yratio = (self.size.height()-10)/(self.ymax-self.ymin) - else: self.yratio = (self.size.height()-10) - - self.xratio = int(self.xratio) - self.yratio = int(self.yratio) - if self.xratio == 0: - self.xratio = 1 - if self.yratio == 0: - self.yratio = 1 - ''' - def sizeHint(self): - return QtCore.QSize(800,400) - - def updateItemSlot(self, mooseObject): - #This is overridden by derived classes to connect appropriate - #slot for updating the display item. - #In this case if the name is updated from the keyboard both in mooseobj and gui gets updation - changedItem = '' - - for item in self.sceneContainer.items(): - if isinstance(item,PoolItem): - if mooseObject.getId() == element(item.mobj).getId(): - item.updateSlot() - #once the text is edited in editor, laydisplay gets updated in turn resize the length, positionChanged signal shd be emitted - self.positionChange(mooseObject) - self.view.removeConnector() - self.view.showConnector(item) - - def updateColorSlot(self,mooseObject, colour): - #Color slot for changing background color for Pool,Enz and group from objecteditor - anninfo = moose.Annotator(mooseObject.path+'/info') - textcolor,bgcolor = getColor(anninfo) - anninfo.color = str(colour.name()) - - if mooseObject.className == "Neutral": - item = self.qGraGrp[mooseObject] - item.setPen(QtGui.QPen(QtGui.QColor(colour),item.pen().width(),item.pen().style(),item.pen().capStyle(),item.pen().joinStyle()))# self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - - elif (isinstance(mooseObject,PoolBase) or isinstance(mooseObject,EnzBase) ): - item = self.mooseId_GObj[mooseObject] - item.updateColor(colour) - - ''' - def mooseObjOntoscene(self): - # All the compartments are put first on to the scene \ - # Need to do: Check With upi if empty compartments exist - self.qGraCompt = {} - self.mooseId_GObj = {} - if self.qGraCompt: - self.qGraCompt.clear() - else: - self.qGraCompt = {} - if self.mooseId_GObj: - self.mooseId_GObj.clear() - else: - self.mooseId_GObj = {} - - for cmpt in sorted(self.meshEntry.iterkeys()): - self.createCompt(cmpt) - self.qGraCompt[cmpt] - #comptRef = self.qGraCompt[cmpt] - - #Enzymes of all the compartments are placed first, \ - # so that when cplx (which is pool object) queries for its parent, it gets its \ - # parent enz co-ordinates with respect to QGraphicsscene """ - - for cmpt,memb in self.meshEntry.items(): - for enzObj in find_index(memb,'enzyme'): - enzinfo = enzObj.path+'/info' - if enzObj.className == 'Enz': - enzItem = EnzItem(enzObj,self.qGraCompt[cmpt]) - else: - enzItem = MMEnzItem(enzObj,self.qGraCompt[cmpt]) - self.mooseId_GObj[element(enzObj.getId())] = enzItem - self.setupDisplay(enzinfo,enzItem,"enzyme") - - #self.setupSlot(enzObj,enzItem) - for cmpt,memb in self.meshEntry.items(): - for poolObj in find_index(memb,'pool'): - poolinfo = poolObj.path+'/info' - #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle - poolItem = self.makePoolItem(poolObj,self.qGraCompt[cmpt]) - self.mooseId_GObj[element(poolObj.getId())] = poolItem - self.setupDisplay(poolinfo,poolItem,"pool") - - for reaObj in find_index(memb,'reaction'): - reainfo = reaObj.path+'/info' - reaItem = ReacItem(reaObj,self.qGraCompt[cmpt]) - self.setupDisplay(reainfo,reaItem,"reaction") - self.mooseId_GObj[element(reaObj.getId())] = reaItem - - for tabObj in find_index(memb,'table'): - tabinfo = tabObj.path+'/info' - tabItem = TableItem(tabObj,self.qGraCompt[cmpt]) - self.setupDisplay(tabinfo,tabItem,"tab") - self.mooseId_GObj[element(tabObj.getId())] = tabItem - - for funcObj in find_index(memb,'function'): - funcinfo = moose.element(funcObj).path+'/info' - if funcObj.parent.className == "ZombieBufPool" or funcObj.parent.className == "BufPool": - funcinfo = moose.element(funcObj).path+'/info' - Af = Annotator(funcinfo) - funcParent =self.mooseId_GObj[element(funcObj.parent)] - elif funcObj.parent.className == "CubeMesh" or funcObj.parent.className == "CylMesh": - funcParent = self.qGraCompt[cmpt] - funcItem = FuncItem(funcObj,funcParent) - self.mooseId_GObj[element(funcObj.getId())] = funcItem - self.setupDisplay(funcinfo,funcItem,"Function") - - for cplxObj in find_index(memb,'cplx'): - cplxinfo = (cplxObj.parent).path+'/info' - p = element(cplxObj).parent - cplxItem = CplxItem(cplxObj,self.mooseId_GObj[element(cplxObj).parent]) - self.mooseId_GObj[element(cplxObj.getId())] = cplxItem - self.setupDisplay(cplxinfo,cplxItem,"cplx") - - # compartment's rectangle size is calculated depending on children - self.comptChildrenBoundingRect() - ''' - def mooseObjOntoscene(self): - # All the compartments are put first on to the scene \ - # Need to do: Check With upi if empty compartments exist - self.qGraCompt = {} - self.qGraGrp = {} - self.mooseId_GObj = {} - if self.qGraCompt: - self.qGraCompt.clear() - else: - self.qGraCompt = {} - - if self.qGraGrp: - self.qGraGrp.clear() - else: - self.qGraGrp = {} - - if self.qGraGrp: - self.qGraGrp.clear() - else: - self.qGraGrp = {} - - if self.mooseId_GObj: - self.mooseId_GObj.clear() - else: - self.mooseId_GObj = {} - for k,v in self.objPar.items(): - if isinstance(moose.element(k),moose.ChemCompt): - self.createCompt(k) - self.qGraCompt[k] - - elif isinstance(moose.element(k),Neutral): - if len(self.meshEntry[k]): - if isinstance(moose.element(v), moose.ChemCompt): - group_parent = self.qGraCompt[v] - elif isinstance(moose.element(v), moose.Neutral): - group_parent = self.qGraGrp[v] - self.createGroup(k,group_parent) - - for cmpt_grp,memb in self.meshEntry.items(): - if len(memb): - if isinstance(moose.element(cmpt_grp),moose.ChemCompt): - qtGrpparent = self.qGraCompt[cmpt_grp] - elif isinstance(moose.element(cmpt_grp), moose.Neutral): - qtGrpparent = self.qGraGrp[cmpt_grp] - for mclass in ["enzyme","pool","reaction","cplx","function","stimTab"]: - self.mObjontoscene(memb,mclass,qtGrpparent) - - self.groupChildrenBoundingRect() - # compartment's rectangle size is calculated depending on children - self.comptChildrenBoundingRect() - - def mObjontoscene(self,memb,mclass,qtGrpparent): - try: - value = memb[mclass] - except KeyError: - pass - else: - for mObj in memb[mclass]: - minfo = mObj.path+'/info' - if mObj.className in['Enz',"ZombieEnz"]: - mItem = EnzItem(mObj,qtGrpparent) - - elif mObj.className in['MMenz',"ZombieMMenz"]: - mItem = MMEnzItem(mObj,qtGrpparent) - - elif isinstance (moose.element(mObj),moose.PoolBase) and mclass != "cplx": - #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle - mItem = self.makePoolItem(mObj,qtGrpparent) - - elif isinstance (moose.element(mObj),moose.ReacBase): - mItem = ReacItem(mObj,qtGrpparent) - - elif mclass == "cplx": - minfo = (mObj.parent).path+'/info' - mItem = CplxItem(mObj,self.mooseId_GObj[element(mObj).parent]) - self.mooseId_GObj[element(mObj.getId())] = mItem - - elif mclass == "function": - if isinstance(moose.element(mObj.parent),moose.PoolBase): - minfo = moose.element(mObj).path+'/info' - Af = Annotator(minfo) - qtGrpparent = self.mooseId_GObj[element(mObj.parent)] - mItem = FuncItem(mObj,qtGrpparent) - - elif mclass == "stimTab": - minfo = mObj.path+'/info' - mItem = TableItem(mObj,qtGrpparent) - self.mooseId_GObj[element(mObj.getId())] = mItem - self.setupDisplay(minfo,mItem,mclass) - - def createGroup(self,key,parent): - self.new_GRP = GRPItem(parent,0,0,0,0,key) - self.qGraGrp[key] = self.new_GRP - self.new_GRP.setRect(20,20,20,20) - - def groupChildrenBoundingRect(self): - for k, v in self.qGraGrp.items(): - grpcolor = moose.Annotator(moose.element(k.path+'/info')).color - #Todo: One may need to calculate explicitly the boundary for Group also if there is a cross-group connection, then - # childrenBoundrect() will take the QPolygonItem position - rectcompt = v.childrenBoundingRect() - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - v.setPen(QtGui.QPen(Qt.QColor(grpcolor), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - - def comptChildrenBoundingRect(self): - comptlist = [] - for k, v in self.qGraCompt.items(): - # compartment's rectangle size is calculated depending on children - rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - v.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - - def createCompt(self,key): - self.new_Compt = ComptItem(self,0,0,0,0,key) - self.qGraCompt[key] = self.new_Compt - self.new_Compt.setRect(10,10,10,10) - self.sceneContainer.addItem(self.new_Compt) - - def setupDisplay(self,info,graphicalObj,objClass): - Annoinfo = Annotator(info) - # For Reaction and Complex object I have skipped the process to get the facecolor and background color as \ - # we are not using these colors for displaying the object so just passing dummy color white - if( objClass == "reaction" or objClass == "cplx" or objClass == "Function" or objClass == "StimulusTable"): - textcolor,bgcolor = QColor("white"),QColor("white") - elif(objClass == "enzyme"): - textcolor,bgcolor = getColor(info) - if bgcolor.name() == "#ffffff" or bgcolor == "white": - bgcolor = getRandColor() - Annoinfo.color = str(bgcolor.name()) - else: - textcolor,bgcolor = getColor(info) - if bgcolor.name() == "#ffffff" or bgcolor == "white": - bgcolor = getRandColor() - Annoinfo.color = str(bgcolor.name()) - if isinstance(self,kineticEditorWidget): - funct = ["Function","ZombieFunction"] - comptt = ["CubeMesh","CylMesh"] - - if objClass in funct: - poolt = ["ZombieBufPool","BufPool"] - if graphicalObj.mobj.parent.className in poolt: - xpos = 0 - ypos = 30 - if graphicalObj.mobj.parent.className in comptt: - xpos,ypos = self.positioninfo(info) - else: - xpos,ypos = self.positioninfo(info) - - elif isinstance(self,kineticRunWidget): - self.editormooseId_GObj = self.editor.getCentralWidget().mooseId_GObj - editorItem = self.editormooseId_GObj[moose.element(info).parent] - xpos = editorItem.scenePos().x() - ypos = editorItem.scenePos().y() - graphicalObj.setDisplayProperties(xpos,ypos,textcolor,bgcolor) - - - def positioninfo(self,iteminfo): - '''By this time, model loaded from kkit,cspace,SBML would have info field created and co-ordinates are added - either by autocoordinates (for cspace,SBML(unless it is not saved from moose)) or from kkit - ''' - - x = float(element(iteminfo).getField('x')) - y = float(element(iteminfo).getField('y')) - #print " positioninfo", iteminfo,x,y - # if moose.Annotator(self.plugin.modelRoot+'/info').modeltype == 'kkit': - # x = self.defaultScenewidth * float(element(iteminfo).getField('x')) - # y = self.defaultSceneheight * float(element(iteminfo).getField('y')) - # print " positioninfo ",iteminfo, element(iteminfo).getField('x'), element(iteminfo).getField('y'), x, y - - # #x = x /self.defaultScenewidth - # #y = y /self.defaultSceneheight - # else: - # x = float(element(iteminfo).getField('x')) - # y = float(element(iteminfo).getField('y')) - # self.defaultScenewidth = 1 - # self.defaultSceneheight = 1 - return(x,y) - - def drawLine_arrow(self, itemignoreZooming=False): - for inn,out in self.srcdesConnection.items(): - #print "inn ",inn, " out ",out - # self.srcdesConnection is dictionary which contains key,value \ - # key is Enzyme or Reaction and value [[list of substrate],[list of product]] (tuple) - # key is Function and value is [list of pool] (list) - - #src = self.mooseId_GObj[inn] - linetype = "regular" - if isinstance(out,tuple): - src = self.mooseId_GObj[inn] - if len(out[0])== 0: - print (inn.className + ' : ' +inn.name+ " doesn't output message") - else: - for items in (items for items in out[0] ): - if re.search("xfer",element(items[0]).name): - xrefPool = items[0].name[:items[0].name.index("_xfer_")] - xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] - orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] - orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] - itemslist = list(items) - itemslist[0] = orgPool - items = tuple(itemslist) - linetype = "crosscompt" - des = self.mooseId_GObj[element(items[0])] - self.lineCord(src,des,items,itemignoreZooming,linetype) - if len(out[1]) == 0: - print (inn.className + ' : ' +inn.name+ " doesn't output message") - else: - for items in (items for items in out[1] ): - if re.search("xfer",element(items[0]).name): - xrefPool = items[0].name[:items[0].name.index("_xfer_")] - xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] - orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] - orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] - itemslist = list(items) - itemslist[0] = orgPool - items = tuple(itemslist) - linetype = "crosscompt" - des = self.mooseId_GObj[element(items[0])] - self.lineCord(src,des,items,itemignoreZooming,linetype) - elif isinstance(out,list): - if len(out) == 0: - if inn.className == "StimulusTable": - print (inn.name +" doesn't have output") - elif inn.className == "ZombieFunction" or inn.className == "Function": - print (inn.name + " doesn't have sumtotal ") - else: - src = self.mooseId_GObj[inn] - for items in (items for items in out ): - if re.search("xfer",element(items[0]).name): - xrefPool = items[0].name[:items[0].name.index("_xfer_")] - xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] - orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] - orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] - itemslist = list(items) - itemslist[0] = orgPool - items = tuple(itemslist) - linetype = "crosscompt" - des = self.mooseId_GObj[element(items[0])] - self.lineCord(src,des,items,itemignoreZooming,linetype) - - def lineCord(self,src,des,type_no,itemignoreZooming,linetype): - srcdes_list = [] - endtype = type_no[1] - line = 0 - if (src == "") and (des == ""): - print ("Source or destination is missing or incorrect") - return - srcdes_list = [src,des,endtype,line] - arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) - self.drawLine(srcdes_list,arrow,linetype) - - while(type_no[2] > 1 and line <= (type_no[2]-1)): - srcdes_list =[src,des,endtype,line] - arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) - self.drawLine(srcdes_list,arrow,linetype) - line = line +1 - - if type_no[2] > 5: - print ("Higher order reaction will not be displayed") - - def drawLine(self,srcdes_list,arrow,linetype="solid"): - src = srcdes_list[0] - des = srcdes_list[1] - endtype = srcdes_list[2] - line = srcdes_list[3] - source = element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) - for l,v,et,o in self.object2line[src]: - if v == des and o ==line: - l.setPolygon(arrow) - arrowPen = l.pen() - arrowPenWidth = self.arrowsize*self.iconScale - arrowPen.setColor(l.pen().color()) - arrowPen.setWidth(arrowPenWidth) - l.setPen(arrowPen) - return - qgLineitem = self.sceneContainer.addPolygon(arrow) - qgLineitem.setParentItem(src.parentItem()) - pen = QtGui.QPen(QtCore.Qt.green, 0, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin) - if linetype == "crosscompt": - pen.setStyle(Qt.Qt.CustomDashLine) - pen.setDashPattern([1, 5, 1, 5]) - - pen.setWidth(self.arrowsize) - - # Green is default color moose.ReacBase and derivatives - already set above - if isinstance(source, EnzBase): - if ( (endtype == 's') or (endtype == 'p')): - pen.setColor(QtCore.Qt.red) - elif(endtype != 'cplx'): - p1 = (next((k for k,v in self.mooseId_GObj.items() if v == src), None)) - pinfo = p1.parent.path+'/info' - color,bgcolor = getColor(pinfo) - #color = QColor(color[0],color[1],color[2]) - pen.setColor(bgcolor) - - elif isinstance(source, moose.PoolBase) or isinstance(source,moose.Function): - pen.setColor(QtCore.Qt.blue) - elif isinstance(source,moose.StimulusTable): - pen.setColor(QtCore.Qt.yellow) - self.lineItem_dict[qgLineitem] = srcdes_list - self.object2line[ src ].append( ( qgLineitem, des,endtype,line) ) - self.object2line[ des ].append( ( qgLineitem, src,endtype,line ) ) - qgLineitem.setPen(pen) - - def positionChange(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated - print mooseObject - for k, v in self.qGraCompt.items(): - for rectChilditem in v.childItems(): - self.updateArrow(rectChilditem) - if isinstance(rectChilditem,GRPItem): - for grpChilditem in rectChilditem.childItems(): - self.updateArrow(grpChilditem) - if isinstance(grpChilditem,KineticsDisplayItem): - if moose.exists(grpChilditem.mobj.path+'/info'): - #print grpChilditem.mobj.name, grpChilditem.scenePos() - moose.element(grpChilditem.mobj.path+'/info').x = grpChilditem.scenePos().x() - moose.element(grpChilditem.mobj.path+'/info').y = grpChilditem.scenePos().y() - #self.updateGrpSize(rectChilditem) - if isinstance(rectChilditem,KineticsDisplayItem): - if moose.exists(rectChilditem.mobj.path+'/info'): - #print rectChilditem.mobj.name, rectChilditem.scenePos() - moose.element(rectChilditem.mobj.path+'/info').x = rectChilditem.scenePos().x() - moose.element(rectChilditem.mobj.path+'/info').y = rectChilditem.scenePos().y() - - rectcompt = calculateChildBoundingRect(v) - comptBoundingRect = v.boundingRect() - if not comptBoundingRect.contains(rectcompt): - self.updateCompartmentSize(v) - else: - rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - - def positionChange_old(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated - if isinstance(element(mooseObject),ChemCompt): - for k, v in self.qGraCompt.items(): - mesh = moose.element(mooseObject).path - if k.path == mesh: - for rectChilditem in v.childItems(): - if isinstance(rectChilditem, KineticsDisplayItem): - if moose.exists(rectChilditem.mobj.path): - iInfo = rectChilditem.mobj.path+'/info' - anno = moose.Annotator(iInfo) - #storing scenePos back to annotator file for further use - x = rectChilditem.scenePos().x() - y = rectChilditem.scenePos().y() - #anno.x = x - #anno.y = y - if isinstance(moose.element(rectChilditem.mobj.path),PoolBase): - t = moose.element(rectChilditem.mobj.path) - moose.element(t).children - for items in moose.element(t).children: - if isinstance(moose.element(items),Function): - test = moose.element(items.path+'/x') - for i in moose.element(test).neighbors['input']: - j = self.mooseId_GObj[moose.element(i)] - self.updateArrow(j) - self.updateArrow(rectChilditem) - elif element(mooseObject).className == 'Neutral': - for k,v in self.qGraGrp.items(): - for grpChilditem in v.childItems(): - if isinstance(grpChilditem, KineticsDisplayItem): - if moose.exists(grpChilditem.mobj.path): - iInfo = grpChilditem.mobj.path+'/info' - anno = moose.Annotator(iInfo) - #storing scenePos back to annotator file for further use - x = grpChilditem.scenePos().x() - y = grpChilditem.scenePos().y() - #anno.x = x - #anno.y = y - - if isinstance(moose.element(grpChilditem.mobj.path),PoolBase): - t = moose.element(grpChilditem.mobj.path) - moose.element(t).children - for items in moose.element(t).children: - if isinstance(moose.element(items),Function): - test = moose.element(items.path+'/x') - for i in moose.element(test).neighbors['input']: - j = self.mooseId_GObj[moose.element(i)] - self.updateArrow(j) - self.updateArrow(grpChilditem) - # grpcompt = self.qGraCompt[self.objPar[k]] - # rectcompt = calculateChildBoundingRect(grpcompt) - rectgrp = calculateChildBoundingRect(v) - v.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) - for k, v in self.qGraCompt.items(): - #rectcompt = v.childrenBoundingRect() - rectcompt = calculateChildBoundingRect(v) - comptBoundingRect = v.boundingRect() - if not comptBoundingRect.contains(rectcompt): - self.updateCompartmentSize(v) - - else: - rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - else: - mobj = self.mooseId_GObj[element(mooseObject)] - self.updateArrow(mobj) - # elePath = moose.element(mooseObject).path - # pos = elePath.find('/',1) - # l = elePath[0:pos] - # linfo = moose.Annotator(l+'/info') - # if moose.exists(l): - # #anno = moose.Annotator(linfo) - # # if moose.Annotator(self.plugin.modelRoot+'/info').modeltype == 'kkit': - # # x = mobj.scenePos().x()/self.defaultScenewidth - # # y = mobj.scenePos().y()/self.defaultSceneheight - # # else: - # # x = mobj.scenePos().x() - # # y = mobj.scenePos().y() - # x = mobj.scenePos().x() - # y = mobj.scenePos().y() - #print " x and y at 863 ",mobj.scenePos() - # for gk,gv in self.qGraGrp.items(): - # rectgrp = calculateChildBoundingRect(gv) - # grpBoundingRect = gv.boundingRect() - # if not grpBoundingRect.contains(rectgrp): - # self.updateCompartmentSize(v) - # else: - # gv.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) - for k, v in self.qGraCompt.items(): - #rectcompt = v.childrenBoundingRect() - rectcompt = calculateChildBoundingRect(v) - comptBoundingRect = v.boundingRect() - if not comptBoundingRect.contains(rectcompt): - self.updateCompartmentSize(v) - - else: - rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - # print " position change " - # for item in self.sceneContainer.items(): - # if isinstance(item,KineticsDisplayItem): - # print item.mobj.name, moose.element(item.mobj.path+'/info').x,moose.element(item.mobj.path+'/info').y - - def updateGrpSize(self,grp): - compartmentBoundary = grp.rect() - - childrenBoundary = calculateChildBoundingRect(grp) - x = childrenBoundary.x() - y = childrenBoundary.y() - height = childrenBoundary.height() - width = childrenBoundary.width() - grp.setRect( x-10 - , y-10 - , width + 20 - , height + 20 - ) - def updateCompartmentSize(self, compartment): - compartmentBoundary = compartment.rect() - childrenBoundary = calculateChildBoundingRect(compartment) - x = min(compartmentBoundary.x(), childrenBoundary.x()) - y = min(compartmentBoundary.y(), childrenBoundary.y()) - width = max(compartmentBoundary.width(), childrenBoundary.width()) - height = max(compartmentBoundary.height(), childrenBoundary.height()) - compartment.setRect( x-10 - , y-10 - , width + 20 - , height + 20 - ) - - def updateArrow(self,qGTextitem): - #if there is no arrow to update then return - if qGTextitem not in self.object2line: - return - listItem = self.object2line[qGTextitem] - for ql, va,endtype,order in self.object2line[qGTextitem]: - srcdes = [] - srcdes = self.lineItem_dict[ql] - # Checking if src (srcdes[0]) or des (srcdes[1]) is ZombieEnz, - # if yes then need to check if cplx is connected to any mooseObject, - # so that when Enzyme is moved, cplx connected arrow to other mooseObject(poolItem) should also be updated - if( type(srcdes[0]) == EnzItem or type(srcdes[0] == MMEnzItem)): - self.cplxUpdatearrow(srcdes[0]) - elif( type(srcdes[1]) == EnzItem or type(srcdes[1] == MMEnzItem)): - self.cplxUpdatearrow(srcdes[1]) - # For calcArrow(src,des,endtype,itemignoreZooming) is to be provided - arrow = calcArrow(srcdes,self.itemignoreZooming,self.iconScale) - ql.setPolygon(arrow) - - def cplxUpdatearrow(self,srcdes): - # srcdes which is 'EnzItem' from this,get ChildItems are retrived (b'cos cplx is child of zombieEnz) - #And cplxItem is passed for updatearrow - for item in srcdes.childItems(): - if isinstance(item,CplxItem): - self.updateArrow(item) - - def positionChange1(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated - if ( (isinstance(element(mooseObject),CubeMesh)) or (isinstance(element(mooseObject),CylMesh))): - v = self.qGraCompt[mooseObject] - for rectChilditem in v.childItems(): - self.updateArrow(rectChilditem) - else: - mobj = self.mooseId_GObj[mooseObject.getId()] - self.updateArrow(mobj) - mooseObjcompt = self.findparent(mooseObject) - v = self.qGraCompt[mooseObjcompt] - #childBoundingRect = v.childrenBoundingRect() - childBoundingRect = calculateChildBoundingRect(v) - comptBoundingRect = v.boundingRect() - rectcompt = comptBoundingRect.united(childBoundingRect) - comptPen = v.pen() - comptWidth = 5 - comptPen.setWidth(comptWidth) - v.setPen(comptPen) - if not comptBoundingRect.contains(childBoundingRect): - v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) - -class kineticEditorWidget(KineticsWidget): - def __init__(self, plugin,*args): - - KineticsWidget.__init__(self, plugin, *args) - self.plugin = plugin - self.insertMenu = QtGui.QMenu('&Insert') - self._menus.append(self.insertMenu) - self.insertMapper = QtCore.QSignalMapper(self) - classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] - self.toolTipinfo = { "CubeMesh":"", - "CylMesh" : "", - "Pool":"A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", - "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", - "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", - "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", - "Reac":"A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", - "MMenz":"An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", - "Enz":"An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" - - } - insertMapper, actions = self.getInsertActions(classlist) - for action in actions: - self.insertMenu.addAction(action) - doc = self.toolTipinfo[str(action.text())] - if doc == "": - classname = str(action.text()) - doc = moose.element('/classes/%s' % (classname)).docs - doc = doc.split('Description:')[-1].split('Name:')[0].strip() - action.setToolTip(doc) - - def GrViewresize(self,event): - #when Gui resize and event is sent which inturn call resizeEvent of qgraphicsview - pass - #self.view.resizeEvent1(event) - - def makePoolItem(self, poolObj, qGraCompt): - return PoolItem(poolObj, qGraCompt) - - def getToolBars(self): - #Add specific tool items with respect to kkit - if not hasattr(self, '_insertToolBar'): - self._insertToolBar = QtGui.QToolBar('Insert') - self._toolBars.append(self._insertToolBar) - for action in self.insertMenu.actions(): - button = MToolButton() - button.setDefaultAction(action) - #set the unicode instead of image by setting - #button.setText(unicode(u'\u20de')) - Iconpath = os.path.join(config.MOOSE_GUI_DIR, 'icons/classIcon/') - button.setIcon(QtGui.QIcon(Iconpath+action.text()+".png")) - #button.setIcon(QtGui.QIcon("icons/classIcon/"+action.text()+".png")) - #button.setIconSize(QtCore.QSize(200,200)) - self._insertToolBar.addWidget(button) - return self._toolBars - -class kineticRunWidget(KineticsWidget): - def __init__(self, plugin, *args): - KineticsWidget.__init__(self, plugin,*args) - - def showEvent(self, event): - self.refresh() - # pass - def refresh(self): - self.sceneContainer.clear() - self.Comptexist = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - if self.Comptexist: - # pass - self.getMooseObj() - self.mooseObjOntoscene() - self.drawLine_arrow(itemignoreZooming=False) - - def makePoolItem(self, poolObj, qGraCompt): - return PoolItemCircle(poolObj, qGraCompt) - - def getToolBars(self): - return self._toolBars - - def updateValue(self): - for item in self.sceneContainer.items(): - if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,PoolItemCircle) or isinstance(item,CplxItem): - item.updateValue(item.mobj) - - def changeBgSize(self): - for item in self.sceneContainer.items(): - if isinstance(item,PoolItemCircle): - initialConc = moose.element(item.mobj).concInit - presentConc = moose.element(item.mobj).conc - if initialConc != 0: - ratio = presentConc/initialConc - else: - # multipying by 1000 b'cos moose concentration is in milli in moose - ratio = presentConc - #print "ratio",item.mobj,ratio - if ratio > '10': - ratio = 9 - if ratio < '0.0': - ratio =0.1 - #print "size ",ratio - item.updateRect(math.sqrt(abs(ratio))) - - def resetColor(self): - for item in self.sceneContainer.items(): - if isinstance(item,PoolItemCircle): - item.returnEllispeSize() -if __name__ == "__main__": - app = QtGui.QApplication(sys.argv) - size = QtCore.QSize(1024 ,768) - #modelPath = 'Kholodenko' - modelPath = 'acc27' - #modelPath = 'acc8' - #modelPath = '3ARECB' - #modelPath = '3AreacB' - #modelPath = '5AreacB' - itemignoreZooming = False - try: - filepath = '../../Demos/Genesis_files/'+modelPath+'.g' - filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' - print( "%s" %(filepath)) - f = open(filepath, "r") - loadModel(filepath,'/'+modelPath) - - #moose.le('/'+modelPath+'/kinetics') - dt = KineticsWidget() - dt.modelRoot ='/'+modelPath - ''' Loading moose signalling model in python ''' - #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') - #dt.modelRoot = '/model' - - dt.updateModelView() - dt.show() - - except IOError, what: - (errno, strerror) = what - print ("Error number",errno,"(%s)" %(strerror)) - sys.exit(0) - sys.exit(app.exec_()) diff --git a/src/plugins/kkit.py b/src/plugins/kkit.py index a0133de..4bc52c4 100644 --- a/src/plugins/kkit.py +++ b/src/plugins/kkit.py @@ -1,146 +1,130 @@ -import sys -import posixpath -from os.path import expanduser +__author__ = "HarshaRani" +__credits__ = ["Upi Lab"] +__license__ = "GPL3" +__version__ = "1.0.0" +__maintainer__ = "HarshaRani" +__email__ = "hrani@ncbs.res.in" +__status__ = "Development" +__updated__ = "Feb 22 2019" + +#Change log: +#2019 +#Feb 22: cross compartment molecules are checked for destination +# 2018 +#Oct 26: xfer cross compartment molecules are hidden and for cross compartment reaction's +# connection are now dotted line +#Oct 10: filedialog default is sbml +# layout co-ordainates are updated with scenepos +#Sep 11: comparment size is calculated based on group sceneBoundingRect size +#Sep 07: in positionChange all the group's boundingRect is calculated +# and when group is moved the children's position are stored +#Jun 18: update the color of the group from objecteditor +#code + +import math +import sys from PyQt4 import QtGui, QtCore, Qt +from default import * +from moose import * +from moose import SBML +from moose.genesis.writeKkit import mooseWriteKkit +from mplugin import * +from kkitUtil import * +from kkitQGraphics import * +from kkitViewcontrol import * +from kkitCalcArrow import * +from kkitOrdinateUtil import * +import posixpath +from mtoolbutton import MToolButton from PyQt4.QtGui import QWidget from PyQt4.QtGui import QGridLayout from PyQt4.QtGui import QColor - -from moose import * -from moose.genesis import write -from moose import SBML - -from moosegui.mplugin import * -from moosegui.mtoolbutton import MToolButton -from moosegui.plugins.default import * -from moosegui.plugins.kkitUtil import * -from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem -from moosegui.plugins.kkitViewcontrol import * -from moosegui.plugins.kkitCalcArrow import * -from moosegui.plugins.kkitOrdinateUtil import * -from moosegui.plugins.setsolver import * -from moosegui.RunWidget import RunWidget - -import moosegui.TooltipInfo as TooltipInfo - -from moosegui.config import _logger - +import RunWidget +from os.path import expanduser +#from setsolver import * +from moose.chemUtil.add_Delete_ChemicalSolver import * +import re class KkitPlugin(MoosePlugin): """Default plugin for MOOSE GUI""" - def __init__(self, *args): + #print args MoosePlugin.__init__(self, *args) self.view = None + #self.plotView = PlotView(self) + #self.getRunView() + #self.plotView.dataTable = self.view._centralWidget.dataTable + #self.plotView.updateCallback = self.view._centralWidget.legendUpdate + #self.view._centralWidget.legendUpdate() + #self.dataTable = DataTable(self.dataRoot) self.fileinsertMenu = QtGui.QMenu('&File') - if not hasattr(self, 'SaveModelAction'): + if not hasattr(self,'SaveModelAction'): + #self.fileinsertMenu.addSeparator() self.saveModelAction = QtGui.QAction('Save', self) - self.saveModelAction.setShortcut(QtGui.QApplication.translate( - "MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) + self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) + self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) self.fileinsertMenu.addAction(self.saveModelAction) self._menus.append(self.fileinsertMenu) self.getEditorView() - - def connect(self, *args): - """Commeneted out """ - pass - + def SaveModelDialogSlot(self): - type_sbml = 'SBML' - type_genesis = 'Genesis' + dirpath = "" if not dirpath: dirpath = expanduser("~") - filters = {'SBML(*.xml)': type_sbml, 'Genesis(*.g)': type_genesis} - - filename, filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter( - None, 'Save File', dirpath, ';;'.join(filters)) + filters = {'SBML(*.xml)': 'SBML','Genesis(*.g)':'Genesis'} + #filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,';;'.join(filters)) + filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,"SBML(*.xml);;Genesis(*.g)") extension = "" if str(filename).rfind('.') != -1: filename = filename[:str(filename).rfind('.')] if str(filter_).rfind('.') != -1: - extension = filter_[str(filter_).rfind('.'):len(filter_) - 1] + extension = filter_[str(filter_).rfind('.'):len(filter_)-1] + if filename: filename = filename if filters[str(filter_)] == 'SBML': - self.sceneObj = KkitEditorView( - self).getCentralWidget().mooseId_GObj self.coOrdinates = {} - for k, v in list(self.sceneObj.items()): - if moose.exists(moose.element(k).path + '/info'): - annoInfo = Annotator(k.path + '/info') - self.coOrdinates[k] = { - 'x': annoInfo.x, 'y': annoInfo.y} - + self.plugin = KkitEditorView(self).getCentralWidget().plugin + self.coOrdinates = KkitEditorView(self).getCentralWidget().getsceneCord() + #writeerror = moose.writeSBML(self.modelRoot,str(filename),self.coOrdinates) writeerror = -2 conisitencyMessages = "" writtentofile = "/test.xml" - writeerror, consistencyMessages, writtentofile = moose.SBML.mooseWriteSBML( - self.modelRoot, str(filename), self.coOrdinates) + writeerror,consistencyMessages,writtentofile = moose.SBML.mooseWriteSBML(self.modelRoot,str(filename),self.coOrdinates) if writeerror == -2: - QtGui.QMessageBox.warning( - None, 'Could not save the Model', consistencyMessages) + #QtGui.QMessageBox.warning(None,'Could not save the Model','\n WriteSBML : This copy of MOOSE has not been compiled with SBML writing support.') + QtGui.QMessageBox.warning(None,'Could not save the Model',consistencyMessages) elif writeerror == -1: - QtGui.QMessageBox.warning( - None, - 'Could not save the Model', - '\n This model is not valid SBML Model, failed in the consistency check') + QtGui.QMessageBox.warning(None,'Could not save the Model','\n This model is not valid SBML Model, failed in the consistency check') elif writeerror == 1: - QtGui.QMessageBox.information( - None, 'Saved the Model', '\n File saved to \'{filename}\''.format( - filename=filename + '.xml'), QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.xml'),QtGui.QMessageBox.Ok) elif writeerror == 0: - QtGui.QMessageBox.information( - None, - 'Could not save the Model', - '\nThe filename could not be opened for writing') + QtGui.QMessageBox.information(None,'Could not save the Model','\nThe filename could not be opened for writing') elif filters[str(filter_)] == 'Genesis': - mdtype = moose.Annotator(self.modelRoot + '/info') + mdtype = moose.Annotator(self.modelRoot+'/info') self.coOrdinates = {} - xycord = [] - self.sceneObj = KkitEditorView( - self).getCentralWidget().mooseId_GObj - # Here get x,y coordinates from the Annotation, to save layout position - # into genesis - for k, v in list(self.sceneObj.items()): - if moose.exists(moose.element(k).path + '/info'): - annoInfo = Annotator(k.path + '/info') - self.coOrdinates[k] = { - 'x': annoInfo.x, 'y': annoInfo.y} - if mdtype.modeltype != "kkit": - # If coordinates come from kkit then directly transfering the co-ordinates - # else zoomed in factor is applied before saving it to - # genesis form - for k, v in list(self.coOrdinates.items()): - xycord.append(v['x']) - xycord.append(v['y']) - cmin = min(xycord) - cmax = max(xycord) - for k, v in list(self.coOrdinates.items()): - x = v['x'] - xprime = int( - (20 * (float(v['x'] - cmin) / float(cmax - cmin))) - 10) - v['x'] = xprime - y = v['y'] - yprime = int( - (20 * (float(v['y'] - cmin) / float(cmax - cmin))) - 10) - v['y'] = -yprime - - filename = filename - writeerror = write( - self.modelRoot, - str(filename), - self.coOrdinates) - if not writeerror: - QtGui.QMessageBox.information( - None, 'Could not save the Model', '\nCheck the file') + ss = KkitEditorView(self).getCentralWidget().mooseId_GObj + for k,v in ss.items(): + if moose.exists(moose.element(k).path+'/info'): + annoInfo = Annotator(k.path+'/info') + #co-ordinates will be in decimals converting to int which should be b/w 0 to 10 + x = annoInfo.x * 10 + y = -annoInfo.y * 10 + self.coOrdinates[k] = {'x':x, 'y':y} + + error,written = mooseWriteKkit(self.modelRoot,str(filename),self.coOrdinates) + if written == False: + QtGui.QMessageBox.information(None,'Could not save the Model','\nCheck the file') else: - QtGui.QMessageBox.information( - None, 'Saved the Model', '\n File saved to \'{filename}\''.format( - filename=filename + '.g'), QtGui.QMessageBox.Ok) - + if error == "": + QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.g'),QtGui.QMessageBox.Ok) + else: + status = QtCore.QString("File saved but %2").arg(error); + QtGui.QMessageBox.information(None,'Saved the Model but ...','{error}'.format(error=error),QtGui.QMessageBox.Ok) + def getPreviousPlugin(self): return None @@ -160,10 +144,9 @@ def getEditorView(self): if not hasattr(self, 'editorView'): #self.editorView = KkitEditorView(self, self.dataTable) self.editorView = KkitEditorView(self) - self.editorView.getCentralWidget().editObject.connect( - self.mainWindow.objectEditSlot) - # self.editorView.GrViewresize(self) - # self.editorView.connect(self,QtCore.SIGNAL("resize(QResizeEvent)"),self.editorView.GrViewresize) + self.editorView.getCentralWidget().editObject.connect(self.mainWindow.objectEditSlot) + #self.editorView.GrViewresize(self) + #self.editorView.connect(self,QtCore.SIGNAL("resize(QResizeEvent)"),self.editorView.GrViewresize) self.currentView = self.editorView return self.editorView @@ -172,27 +155,30 @@ def getRunView(self): self.view = AnotherKkitRunView(self.modelRoot, self) return self.view - if self.view is not None: - return AnotherKkitRunView(self.modelRoot, self) - if self.view is not None: - return self.view + + if self.view is not None: return AnotherKkitRunView(self.modelRoot, self) + if self.view is not None: return self.view self.view = RunView(self.modelRoot, self) graphView = self.view._centralWidget graphView.setDataRoot(self.modelRoot) graphView.plotAllData() schedulingDockWidget = self.view.getSchedulingDockWidget().widget() self._kkitWidget = self.view.plugin.getEditorView().getCentralWidget() - self.runView = KkitRunView(self._kkitWidget) - graphView.layout().addWidget(self.currentRunView, 0, 0, 2, 1) - return self.view + #self.runView = KkitRunView(self,self.dataTable) + self.runView = KkitRunView(self, self._kkitWidget) + self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() + #schedulingDockWidget.runner.update.connect(self.currentRunView.changeBgSize) + #schedulingDockWidget.runner.resetAndRun.connect(self.currentRunView.resetColor) + graphView.layout().addWidget(self.currentRunView,0,0,2,1) + return self.view class AnotherKkitRunView(RunView): - def __init__(self, modelRoot, plugin, *args): + def __init__(self, modelRoot, plugin,*args): RunView.__init__(self, modelRoot, plugin, *args) self.modelRoot = modelRoot - self.plugin = plugin + self.plugin = plugin self.schedular = None def setSolverFromSettings(self, chemicalSettings): @@ -200,26 +186,20 @@ def setSolverFromSettings(self, chemicalSettings): chemicalSettings["simulation"]["solver"]) def createCentralWidget(self): - self._centralWidget = RunWidget(self.modelRoot) - self.kkitRunView = KkitRunView(self.plugin) + self._centralWidget = RunWidget.RunWidget(self.modelRoot) + self.kkitRunView = KkitRunView(self.plugin) self.plotWidgetContainer = PlotWidgetContainer(self.modelRoot) - self._centralWidget.setChildWidget( - self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) - self._centralWidget.setChildWidget( - self.plotWidgetContainer, False, 0, 1, 1, 2) + self._centralWidget.setChildWidget(self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) + self._centralWidget.setChildWidget(self.plotWidgetContainer, False, 0, 1, 1, 2) self._centralWidget.setPlotWidgetContainer(self.plotWidgetContainer) self.schedular = self.getSchedulingDockWidget().widget() - self.schedular.runner.simulationProgressed.connect( - self.kkitRunView.getCentralWidget().updateValue) - self.schedular.runner.simulationProgressed.connect( - self.kkitRunView.getCentralWidget().changeBgSize) - self.schedular.runner.simulationReset.connect( - self.kkitRunView.getCentralWidget().resetColor) + self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().updateValue) + self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().changeBgSize) + self.schedular.runner.simulationReset.connect(self.kkitRunView.getCentralWidget().resetColor) # self.schedular.runner.simulationReset.connect(self.setSolver) - self.schedular.preferences.applyChemicalSettings.connect( - self.setSolverFromSettings) - compt = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') - ann = moose.Annotator(self.modelRoot + '/info') + self.schedular.preferences.applyChemicalSettings.connect(self.setSolverFromSettings) + compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + ann = moose.Annotator(self.modelRoot+'/info') if compt: #self.runTime = (moose.Annotator(self.modelRoot+'/info')).runtime #solver = (moose.Annotator(self.modelRoot+'/info')).solver @@ -229,7 +209,7 @@ def createCentralWidget(self): self.runTime = 100 solver = "gsl" self.schedular.simulationRuntime.setText(str(self.runTime)) - # preferences + #preferences chemprefs = self.schedular.preferences.getChemicalPreferences() c = moose.Clock('/clock') self.simulationdt = c.tickDt[11] @@ -249,31 +229,43 @@ def createCentralWidget(self): self.schedular.preferences.setChemicalPreferences() return self._centralWidget - def setSolver(self, modelRoot, solver=None): - if solver is None: - reinit = addSolver( - modelRoot, self.getSchedulingDockWidget().widget().solver) + def setSolver(self, modelRoot,solver = None): + if solver == None: + reinit = mooseAddChemSolver(modelRoot,self.getSchedulingDockWidget().widget().solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() else: - reinit = addSolver(modelRoot, solver) + reinit = mooseAddChemSolver(modelRoot,solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() - # self.kkitRunView.getCentralWidget().addSolver(solver) + #self.kkitRunView.getCentralWidget().addSolver(solver) def getCentralWidget(self): if self._centralWidget is None: self.createCentralWidget() return self._centralWidget - class KkitRunView(MooseEditorView): + #def __init__(self, plugin,dataTable): def __init__(self, plugin): MooseEditorView.__init__(self, plugin) + #self.dataTable =dataTable self.plugin = plugin + ''' + def getToolPanes(self): + return super(KkitRunView, self).getToolPanes() + + def getLibraryPane(self): + return super(KkitRunView, self).getLibraryPane() + def getOperationsWidget(self): + return super(KkitRunView, self).getOperationsPane() + + def getToolBars(self): + return self._toolBars + ''' def getCentralWidget(self): if self._centralWidget is None: self._centralWidget = kineticRunWidget(self.plugin) @@ -282,21 +274,58 @@ def getCentralWidget(self): self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget - class KkitEditorView(MooseEditorView): - + #def __init__(self, plugin, dataTable): def __init__(self, plugin): MooseEditorView.__init__(self, plugin) + ''' EditorView ''' + #self.dataTable = dataTable + #self.fileinsertMenu = QtGui.QMenu('&File') + # if not hasattr(self,'SaveModelAction'): + # #self.fileinsertMenu.addSeparator() + # self.saveModelAction = QtGui.QAction('SaveToGenesisFormat', self) + # self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) + # self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveToGenesisSlot) + # self.fileinsertMenu.addAction(self.saveModelAction) + #self._menus.append(self.fileinsertMenu) + + # def SaveModelDialogSlot(self): + # type_sbml = 'SBML' + # filters = {'SBML(*.xml)': type_sbml} + # filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) + # extension = "" + # if str(filename).rfind('.') != -1: + # filename = filename[:str(filename).rfind('.')] + # if str(filter_).rfind('.') != -1: + # extension = filter_[str(filter_).rfind('.'):len(filter_)-1] + # if filename: + # filename = filename+extension + # if filters[str(filter_)] == 'SBML': + # writeerror = moose.writeSBML(str(filename),self.plugin.modelRoot) + # if writeerror: + # QtGui.QMessageBox.warning(None,'Could not save the Model','\n Error in the consistency check') + # else: + # QtGui.QMessageBox.information(None,'Saved the Model','\n File Saved to \'{filename}\''.format(filename =filename),QtGui.QMessageBox.Ok) + ''' + def getToolPanes(self): + return super(KkitEditorView, self).getToolPanes() + + def getLibraryPane(self): + return super(KkitEditorView, self).getLibraryPane() + + def getOperationsWidget(self): + return super(KkitEditorView, self).getOperationsPane() + def getToolBars(self): + return self._toolBars + ''' def getCentralWidget(self): if self._centralWidget is None: - self._centralWidget = KineticEditorWidget(self.plugin) + self._centralWidget = kineticEditorWidget(self.plugin) self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget - -class KineticsWidget(EditorWidgetBase): - +class KineticsWidget(EditorWidgetBase): def __init__(self, plugin, *args): EditorWidgetBase.__init__(self, *args) self.plugin = plugin @@ -304,196 +333,181 @@ def __init__(self, plugin, *args): self.comptPen = 5 self.iconScale = 1 self.arrowsize = 2 - self.defaultComptsize = 5 - self.noPositionInfo = True - self.xyCord = {} self.reset() - self.qGraCompt = {} - self.mooseId_GObj = {} - self.srcdesConnection = {} - self.editor = None - self.xmin = 0.0 - self.xmax = 1.0 - self.ymin = 0.0 - self.ymax = 1.0 - self.xratio = 1.0 - self.yratio = 1.0 + self.defaultSceneheight = 1#800#1000 + self.defaultScenewidth = 1#000#2400 + self.positionInfoExist = True + self.defaultComptsize = 5 + self.srcdesConnection = {} + self.meshEntry = {} + self.mooseId_GObj = {} + self.qGraCompt = {} + self.qGraGrp = {} + self.xyCord = {} + self.editor = None + def reset(self): self.createdItem = {} - # This are created at drawLine + #This are created at drawLine self.lineItem_dict = {} self.object2line = defaultdict(list) self.itemignoreZooming = False - if hasattr(self, 'sceneContainer'): - self.sceneContainer.clear() + if hasattr(self,'sceneContainer'): + self.sceneContainer.clear() self.sceneContainer = QtGui.QGraphicsScene(self) self.sceneContainer.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex) sceneDim = self.sceneContainer.itemsBoundingRect() # if (sceneDim.width() == 0 and sceneDim.height() == 0): # self.sceneContainer.setSceneRect(0,0,30,30) # else: - # elf.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) - self.sceneContainer.setBackgroundBrush(QColor(230, 220, 219, 120)) + #elf.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) + self.sceneContainer.setBackgroundBrush(QColor(230,220,219,120)) + + def getsceneCord(self): + self.cord = {} + self.view.setRefWidget("runView") + for item in self.sceneContainer.items(): + if isinstance(item,KineticsDisplayItem): + self.cord[item.mobj] = {'x':item.scenePos().x(),'y':item.scenePos().y()} + return self.cord def updateModelView(self): self.getMooseObj() - minmaxratiodict = { - 'xmin': self.xmin, - 'xmax': self.xmax, - 'ymin': self.ymin, - 'ymax': self.ymax, - 'xratio': self.xratio, - 'yratio': self.yratio} + #minmaxratiodict = {'xmin':self.xmin,'xmax':self.xmax,'ymin':self.ymin,'ymax':self.ymax,'xratio':self.xratio,'yratio':self.yratio} if not self.m: - # At the time of model building + #At the time of model building # when we want an empty GraphicView while creating new model, # then remove all the view and add an empty view if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): self.layout().removeWidget(self.view) - # self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) - self.view = GraphicalView( - self.modelRoot, - self.sceneContainer, - self.border, - self, - self.createdItem, - minmaxratiodict) - - if isinstance(self, KineticEditorWidget): + #self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) + #self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) + self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) + if isinstance(self,kineticEditorWidget): self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) - elif isinstance(self, kineticRunWidget): + elif isinstance(self,kineticRunWidget): self.view.setRefWidget("runView") - # self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) + self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) - hLayout.addWidget(self.view, 0, 0) + hLayout.addWidget(self.view,0,0) else: # Already created Model # maxmium and minimum coordinates of the objects specified in kkit file. - # self.mooseObjOntoscene() - # self.drawLine_arrow() + #self.mooseObjOntoscene() + #self.drawLine_arrow() if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): self.layout().removeWidget(self.view) - self.view = GraphicalView( - self.modelRoot, - self.sceneContainer, - self.border, - self, - self.createdItem, - minmaxratiodict) - if isinstance(self, KineticEditorWidget): - # self.getMooseObj() + # self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) + self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) + if isinstance(self,kineticEditorWidget): + #self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow() self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) - # self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) + self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - elif isinstance(self, kineticRunWidget): + elif isinstance(self,kineticRunWidget): self.view.setRefWidget("runView") hLayout = QtGui.QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - self.view.fitInView( - self.sceneContainer.itemsBoundingRect().x() - 10, - self.sceneContainer.itemsBoundingRect().y() - 10, - self.sceneContainer.itemsBoundingRect().width() + 20, - self.sceneContainer.itemsBoundingRect().height() + 20, - Qt.Qt.IgnoreAspectRatio) + self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10,self.sceneContainer.itemsBoundingRect().y()-10,self.sceneContainer.itemsBoundingRect().width()+20,self.sceneContainer.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) def getMooseObj(self): - # This fun call 2 more function + #This fun call 2 more function # -- setupMeshObj(self.modelRoot), # ----self.meshEntry has [meshEnt] = function: {}, Pool: {} etc # setupItem - self.m = wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') + self.m = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') if self.m: - # self.xmin = 0.0 - # self.xmax = 1.0 - # self.ymin = 0.0 - # self.ymax = 1.0 - self.autoCordinatepos = {} self.srcdesConnection = {} - + if self.meshEntry: + self.meshEntry.clear() + else: + self.meshEntry = {} #self.meshEntry.clear= {} # Compartment and its members are setup - self.meshEntry, self.xmin, self.xmax, self.ymin, self.ymax, self.noPositionInfo = setupMeshObj( - self.modelRoot) + #self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) + + #self.meshEntry,xcord,ycord = setupMeshObj(self.modelRoot) + #self.positionInfoExist = not(len(np.nonzero(xcord)[0]) == 0 \ + # and len(np.nonzero(ycord)[0]) == 0) + self.objPar,self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) self.autocoordinates = False if self.srcdesConnection: self.srcdesConnection.clear() else: self.srcdesConnection = {} - setupItem(self.modelRoot, self.srcdesConnection) + + setupItem(self.modelRoot,self.srcdesConnection) + #self.noPositionInfo = False if not self.noPositionInfo: self.autocoordinates = True + #self.xmin,self.xmax,self.ymin,self.ymax,self.autoCordinatepos = autoCoordinates(self.meshEntry,self.srcdesConnection) + autoCoordinates(self.meshEntry,self.srcdesConnection) + + self.size = QtCore.QSize(1000 ,550) - self.xmin, self.xmax, self.ymin, self.ymax, self.autoCordinatepos = autoCoordinates( - self.meshEntry, self.srcdesConnection) - # TODO: size will be dummy at this point, but size I need the - # availiable size from the Gui - self.size = QtCore.QSize(1000, 550) - - if self.xmax - self.xmin != 0: - self.xratio = (self.size.width() - 10) / \ - (self.xmax - self.xmin) - else: - self.xratio = self.size.width() - 10 - - if self.ymax - self.ymin: - self.yratio = (self.size.height() - 10) / \ - (self.ymax - self.ymin) - else: - self.yratio = (self.size.height() - 10) - - self.xratio = int(self.xratio) - self.yratio = int(self.yratio) - if self.xratio == 0: - self.xratio = 1 - if self.yratio == 0: - self.yratio = 1 + ''' + if self.xmax-self.xmin != 0: + self.xratio = (self.size.width()-10)/(self.xmax-self.xmin) + else: self.xratio = self.size.width()-10 + if self.ymax-self.ymin: + self.yratio = (self.size.height()-10)/(self.ymax-self.ymin) + else: self.yratio = (self.size.height()-10) + + self.xratio = int(self.xratio) + self.yratio = int(self.yratio) + if self.xratio == 0: + self.xratio = 1 + if self.yratio == 0: + self.yratio = 1 + ''' def sizeHint(self): - return QtCore.QSize(800, 400) + return QtCore.QSize(800,400) def updateItemSlot(self, mooseObject): - # This is overridden by derived classes to connect appropriate - # slot for updating the display item. - # In this case if the name is updated from the keyboard both in - # mooseobj and gui gets updation + #This is overridden by derived classes to connect appropriate + #slot for updating the display item. + #In this case if the name is updated from the keyboard both in mooseobj and gui gets updation changedItem = '' - for item in list(self.sceneContainer.items()): - if isinstance(item, PoolItem): + for item in self.sceneContainer.items(): + if isinstance(item,PoolItem): if mooseObject.getId() == element(item.mobj).getId(): item.updateSlot() - # once the text is edited in editor, laydisplay gets - # updated in turn resize the length, positionChanged signal - # shd be emitted + #once the text is edited in editor, laydisplay gets updated in turn resize the length, positionChanged signal shd be emitted self.positionChange(mooseObject) self.view.removeConnector() self.view.showConnector(item) + + def updateColorSlot(self,mooseObject, colour): + #Color slot for changing background color for Pool,Enz and group from objecteditor + anninfo = moose.Annotator(mooseObject.path+'/info') + textcolor,bgcolor = getColor(anninfo) + anninfo.color = str(colour.name()) + + if mooseObject.className == "Neutral": + item = self.qGraGrp[mooseObject] + item.setPen(QtGui.QPen(QtGui.QColor(colour),item.pen().width(),item.pen().style(),item.pen().capStyle(),item.pen().joinStyle()))# self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - def updateColorSlot(self, mooseObject, color): - # Color slot for changing background color for PoolItem from - # objecteditor - anninfo = moose.Annotator(mooseObject.path + '/info') - textcolor, bgcolor = getColor(anninfo) - anninfo.color = str(color.name()) - item = self.mooseId_GObj[mooseObject] - if (isinstance(item, PoolItem) or isinstance( - item, EnzItem) or isinstance(item, MMEnzItem)): - item.updateColor(color) + elif (isinstance(mooseObject,PoolBase) or isinstance(mooseObject,EnzBase) ): + item = self.mooseId_GObj[mooseObject] + item.updateColor(colour) + ''' def mooseObjOntoscene(self): # All the compartments are put first on to the scene \ # Need to do: Check With upi if empty compartments exist - self.qGraCompt = {} + self.qGraCompt = {} self.mooseId_GObj = {} if self.qGraCompt: self.qGraCompt.clear() @@ -504,393 +518,558 @@ def mooseObjOntoscene(self): else: self.mooseId_GObj = {} - for cmpt in sorted(self.meshEntry.keys()): + for cmpt in sorted(self.meshEntry.iterkeys()): self.createCompt(cmpt) self.qGraCompt[cmpt] #comptRef = self.qGraCompt[cmpt] - # Enzymes of all the compartments are placed first, \ + #Enzymes of all the compartments are placed first, \ # so that when cplx (which is pool object) queries for its parent, it gets its \ # parent enz co-ordinates with respect to QGraphicsscene """ - for cmpt, memb in list(self.meshEntry.items()): - for enzObj in find_index(memb, 'enzyme'): - enzinfo = enzObj.path + '/info' + for cmpt,memb in self.meshEntry.items(): + for enzObj in find_index(memb,'enzyme'): + enzinfo = enzObj.path+'/info' if enzObj.className == 'Enz': - enzItem = EnzItem(enzObj, self.qGraCompt[cmpt]) + enzItem = EnzItem(enzObj,self.qGraCompt[cmpt]) else: - enzItem = MMEnzItem(enzObj, self.qGraCompt[cmpt]) + enzItem = MMEnzItem(enzObj,self.qGraCompt[cmpt]) self.mooseId_GObj[element(enzObj.getId())] = enzItem - self.setupDisplay(enzinfo, enzItem, "enzyme") - - # self.setupSlot(enzObj,enzItem) - for cmpt, memb in list(self.meshEntry.items()): - for poolObj in find_index(memb, 'pool'): - poolinfo = poolObj.path + '/info' - # depending on Editor Widget or Run widget pool will be created - # a PoolItem or PoolItemCircle - poolItem = self.makePoolItem(poolObj, self.qGraCompt[cmpt]) + self.setupDisplay(enzinfo,enzItem,"enzyme") + + #self.setupSlot(enzObj,enzItem) + for cmpt,memb in self.meshEntry.items(): + for poolObj in find_index(memb,'pool'): + poolinfo = poolObj.path+'/info' + #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle + poolItem = self.makePoolItem(poolObj,self.qGraCompt[cmpt]) self.mooseId_GObj[element(poolObj.getId())] = poolItem - self.setupDisplay(poolinfo, poolItem, "pool") + self.setupDisplay(poolinfo,poolItem,"pool") - for reaObj in find_index(memb, 'reaction'): - reainfo = reaObj.path + '/info' - reaItem = ReacItem(reaObj, self.qGraCompt[cmpt]) - self.setupDisplay(reainfo, reaItem, "reaction") + for reaObj in find_index(memb,'reaction'): + reainfo = reaObj.path+'/info' + reaItem = ReacItem(reaObj,self.qGraCompt[cmpt]) + self.setupDisplay(reainfo,reaItem,"reaction") self.mooseId_GObj[element(reaObj.getId())] = reaItem - for tabObj in find_index(memb, 'table'): - tabinfo = tabObj.path + '/info' - tabItem = TableItem(tabObj, self.qGraCompt[cmpt]) - self.setupDisplay(tabinfo, tabItem, "tab") + for tabObj in find_index(memb,'table'): + tabinfo = tabObj.path+'/info' + tabItem = TableItem(tabObj,self.qGraCompt[cmpt]) + self.setupDisplay(tabinfo,tabItem,"tab") self.mooseId_GObj[element(tabObj.getId())] = tabItem - for funcObj in find_index(memb, 'function'): - funcinfo = moose.element(funcObj).path + '/info' - if funcObj.parent.className in [ "ZombieBufPool", "BufPool" ]: - funcinfo = moose.element(funcObj).path + '/info' + for funcObj in find_index(memb,'function'): + funcinfo = moose.element(funcObj).path+'/info' + if funcObj.parent.className == "ZombieBufPool" or funcObj.parent.className == "BufPool": + funcinfo = moose.element(funcObj).path+'/info' Af = Annotator(funcinfo) - funcParent = self.mooseId_GObj[element(funcObj.parent)] - elif funcObj.parent.className in [ "CubeMesh", "CylMesh"] : + funcParent =self.mooseId_GObj[element(funcObj.parent)] + elif funcObj.parent.className == "CubeMesh" or funcObj.parent.className == "CylMesh": funcParent = self.qGraCompt[cmpt] - funcItem = FuncItem(funcObj, funcParent) + funcItem = FuncItem(funcObj,funcParent) self.mooseId_GObj[element(funcObj.getId())] = funcItem - self.setupDisplay(funcinfo, funcItem, "Function") + self.setupDisplay(funcinfo,funcItem,"Function") - for cplxObj in find_index(memb, 'cplx'): - cplxinfo = (cplxObj.parent).path + '/info' + for cplxObj in find_index(memb,'cplx'): + cplxinfo = (cplxObj.parent).path+'/info' p = element(cplxObj).parent - cplxItem = CplxItem( - cplxObj, self.mooseId_GObj[ - element(cplxObj).parent]) + cplxItem = CplxItem(cplxObj,self.mooseId_GObj[element(cplxObj).parent]) self.mooseId_GObj[element(cplxObj.getId())] = cplxItem - self.setupDisplay(cplxinfo, cplxItem, "cplx") + self.setupDisplay(cplxinfo,cplxItem,"cplx") + + # compartment's rectangle size is calculated depending on children + self.comptChildrenBoundingRect() + ''' + def mooseObjOntoscene(self): + # All the compartments are put first on to the scene \ + # Need to do: Check With upi if empty compartments exist + self.qGraCompt = {} + self.qGraGrp = {} + self.mooseId_GObj = {} + if self.qGraCompt: + self.qGraCompt.clear() + else: + self.qGraCompt = {} + if self.qGraGrp: + self.qGraGrp.clear() + else: + self.qGraGrp = {} + + if self.qGraGrp: + self.qGraGrp.clear() + else: + self.qGraGrp = {} + + if self.mooseId_GObj: + self.mooseId_GObj.clear() + else: + self.mooseId_GObj = {} + for k,v in self.objPar.items(): + if isinstance(moose.element(k),moose.ChemCompt): + self.createCompt(k) + self.qGraCompt[k] + + elif isinstance(moose.element(k),Neutral): + if len(self.meshEntry[k]): + if isinstance(moose.element(v), moose.ChemCompt): + group_parent = self.qGraCompt[v] + elif isinstance(moose.element(v), moose.Neutral): + group_parent = self.qGraGrp[v] + self.createGroup(k,group_parent) + + for cmpt_grp,memb in self.meshEntry.items(): + if len(memb): + if isinstance(moose.element(cmpt_grp),moose.ChemCompt): + qtGrpparent = self.qGraCompt[cmpt_grp] + elif isinstance(moose.element(cmpt_grp), moose.Neutral): + qtGrpparent = self.qGraGrp[cmpt_grp] + for mclass in ["enzyme","pool","reaction","cplx","function","stimTab"]: + self.mObjontoscene(memb,mclass,qtGrpparent) + + self.groupChildrenBoundingRect() # compartment's rectangle size is calculated depending on children - self.comptChilrenBoundingRect() + self.comptChildrenBoundingRect() - def comptChilrenBoundingRect(self): - for k, v in list(self.qGraCompt.items()): + def mObjontoscene(self,memb,mclass,qtGrpparent): + try: + value = memb[mclass] + except KeyError: + pass + else: + for mObj in memb[mclass]: + minfo = mObj.path+'/info' + if mObj.className in['Enz',"ZombieEnz"]: + mItem = EnzItem(mObj,qtGrpparent) + + elif mObj.className in['MMenz',"ZombieMMenz"]: + mItem = MMEnzItem(mObj,qtGrpparent) + + elif isinstance (moose.element(mObj),moose.PoolBase) and mclass != "cplx": + #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle + mItem = self.makePoolItem(mObj,qtGrpparent) + + elif isinstance (moose.element(mObj),moose.ReacBase): + mItem = ReacItem(mObj,qtGrpparent) + + elif mclass == "cplx": + minfo = (mObj.parent).path+'/info' + mItem = CplxItem(mObj,self.mooseId_GObj[element(mObj).parent]) + self.mooseId_GObj[element(mObj.getId())] = mItem + + elif mclass == "function": + if isinstance(moose.element(mObj.parent),moose.PoolBase): + minfo = moose.element(mObj).path+'/info' + Af = Annotator(minfo) + qtGrpparent = self.mooseId_GObj[element(mObj.parent)] + mItem = FuncItem(mObj,qtGrpparent) + + elif mclass == "stimTab": + minfo = mObj.path+'/info' + mItem = TableItem(mObj,qtGrpparent) + self.mooseId_GObj[element(mObj.getId())] = mItem + self.setupDisplay(minfo,mItem,mclass) + + def createGroup(self,key,parent): + self.new_GRP = GRPItem(parent,0,0,0,0,key) + self.qGraGrp[key] = self.new_GRP + self.new_GRP.setRect(20,20,20,20) + + def groupChildrenBoundingRect(self): + for k, v in self.qGraGrp.items(): + grpcolor = moose.Annotator(moose.element(k.path+'/info')).color + #Todo: One may need to calculate explicitly the boundary for Group also if there is a cross-group connection, then + # childrenBoundrect() will take the QPolygonItem position + rectcompt = v.childrenBoundingRect() + v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + v.setPen(QtGui.QPen(Qt.QColor(grpcolor), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + + def comptChildrenBoundingRect(self): + comptlist = [] + for k, v in self.qGraCompt.items(): # compartment's rectangle size is calculated depending on children rectcompt = calculateChildBoundingRect(v) - v.setRect( - rectcompt.x() - 10, - rectcompt.y() - 10, - (rectcompt.width() + 20), - (rectcompt.height() + 20)) - v.setPen( - QtGui.QPen( - Qt.QColor( 66, 66, 66, 100), - self.comptPen, - Qt.Qt.SolidLine, - Qt.Qt.RoundCap, - Qt.Qt.RoundJoin) - ) - - def createCompt(self, key): - self.new_Compt = ComptItem(self, 0, 0, 0, 0, key) + v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + v.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + + def createCompt(self,key): + self.new_Compt = ComptItem(self,0,0,0,0,key) self.qGraCompt[key] = self.new_Compt - self.new_Compt.setRect(10, 10, 10, 10) + self.new_Compt.setRect(10,10,10,10) self.sceneContainer.addItem(self.new_Compt) - def setupDisplay(self, info, graphicalObj, objClass): + def setupDisplay(self,info,graphicalObj,objClass): Annoinfo = Annotator(info) - if objClass in [ "reaction", "cplx", "Function", "StimulusTable" ]: - textcolor, bgcolor = QColor("white"), QColor("white") + # For Reaction and Complex object I have skipped the process to get the facecolor and background color as \ + # we are not using these colors for displaying the object so just passing dummy color white + if( objClass == "reaction" or objClass == "cplx" or objClass == "Function" or objClass == "StimulusTable"): + textcolor,bgcolor = QColor("white"),QColor("white") + elif(objClass == "enzyme"): + textcolor,bgcolor = getColor(info) + if bgcolor.name() == "#ffffff" or bgcolor == "white": + bgcolor = getRandColor() + Annoinfo.color = str(bgcolor.name()) else: - textcolor, bgcolor = getColor(info) + textcolor,bgcolor = getColor(info) if bgcolor.name() == "#ffffff" or bgcolor == "white": bgcolor = getRandColor() Annoinfo.color = str(bgcolor.name()) - - if isinstance(self, KineticEditorWidget): - funct = ["Function", "ZombieFunction"] - comptt = ["CubeMesh", "CylMesh"] + if isinstance(self,kineticEditorWidget): + funct = ["Function","ZombieFunction"] + comptt = ["CubeMesh","CylMesh"] if objClass in funct: - poolt = ["ZombieBufPool", "BufPool"] + poolt = ["ZombieBufPool","BufPool"] if graphicalObj.mobj.parent.className in poolt: xpos = 0 ypos = 30 if graphicalObj.mobj.parent.className in comptt: - xpos, ypos = self.positioninfo(info) + xpos,ypos = self.positioninfo(info) else: - xpos, ypos = self.positioninfo(info) + xpos,ypos = self.positioninfo(info) - self.xylist = [xpos, ypos] - self.xyCord[moose.element(info).parent] = [xpos, ypos] - - elif isinstance(self, kineticRunWidget): + elif isinstance(self,kineticRunWidget): self.editormooseId_GObj = self.editor.getCentralWidget().mooseId_GObj editorItem = self.editormooseId_GObj[moose.element(info).parent] xpos = editorItem.scenePos().x() - ypos = editorItem.scenePos().y() - #Annoinfo.x = xpos - #Annoinfo.y = -ypos - graphicalObj.setDisplayProperties(xpos, ypos, textcolor, bgcolor) - #Annoinfo.x = xpos - #Annoinfo.y = ypos - - def positioninfo(self, iteminfo): - Anno = moose.Annotator(self.modelRoot + '/info') - if not self.noPositionInfo: - try: - # kkit does exist item's/info which up querying for parent.path - # gives the information of item's parent - x, y = self.autoCordinatepos[(element(iteminfo).parent).path] - except: - # But in Cspace reader doesn't create item's/info, up on querying gives me the error which need to change\ - # in ReadCspace.cpp, at present i am taking care b'cos i don't want to pass just the item where I need to check\ - # type of the object (rea,pool,enz,cplx,tab) which I have - # already done. - parent, child = posixpath.split(iteminfo) - x, y = self.autoCordinatepos[parent] - ypos = (y - self.ymin) * self.yratio - else: - x = float(element(iteminfo).getField('x')) - y = float(element(iteminfo).getField('y')) - # Qt origin is at the top-left corner. The x values increase to the right and the y values increase downwards \ - # as compared to Genesis codinates where origin is center and y value is upwards, that is why ypos is negated - # if Anno.modeltype == "kkit": - # ypos = 1.0-(y-self.ymin)*self.yratio - # else: - # ypos = (y-self.ymin)*self.yratio - ypos = 1.0 - (y - self.ymin) * self.yratio - xpos = (x - self.xmin) * self.xratio - return(xpos, ypos) + ypos = editorItem.scenePos().y() + graphicalObj.setDisplayProperties(xpos,ypos,textcolor,bgcolor) + + def positioninfo(self,iteminfo): + '''By this time, model loaded from kkit,cspace,SBML would have info field created and co-ordinates are added + either by autocoordinates (for cspace,SBML(unless it is not saved from moose)) or from kkit + ''' + + x = float(element(iteminfo).getField('x')) + y = float(element(iteminfo).getField('y')) + #print " positioninfo", iteminfo,x,y + # if moose.Annotator(self.plugin.modelRoot+'/info').modeltype == 'kkit': + # x = self.defaultScenewidth * float(element(iteminfo).getField('x')) + # y = self.defaultSceneheight * float(element(iteminfo).getField('y')) + # print " positioninfo ",iteminfo, element(iteminfo).getField('x'), element(iteminfo).getField('y'), x, y + + # #x = x /self.defaultScenewidth + # #y = y /self.defaultSceneheight + # else: + # x = float(element(iteminfo).getField('x')) + # y = float(element(iteminfo).getField('y')) + # self.defaultScenewidth = 1 + # self.defaultSceneheight = 1 + return(x,y) + def drawLine_arrow(self, itemignoreZooming=False): - for inn, out in list(self.srcdesConnection.items()): - # print "inn ",inn, " out ",out + for inn,out in self.srcdesConnection.items(): + #print "inn ",inn, " out ",out # self.srcdesConnection is dictionary which contains key,value \ # key is Enzyme or Reaction and value [[list of substrate],[list of product]] (tuple) # key is Function and value is [list of pool] (list) #src = self.mooseId_GObj[inn] - if isinstance(out, tuple): + linetype = "regular" + if isinstance(out,tuple): src = self.mooseId_GObj[inn] - if len(out[0]) == 0: - print( - inn.className + - ' : ' + - inn.name + - " doesn't output message") + if len(out[0])== 0: + print (inn.className + ' : ' +inn.name+ " doesn't output message") else: - for items in (items for items in out[0]): + for items in (items for items in out[0] ): + if re.search("xfer",element(items[0]).name): + xrefPool = items[0].name[:items[0].name.index("_xfer_")] + xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] + orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] + orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] + itemslist = list(items) + itemslist[0] = orgPool + items = tuple(itemslist) + linetype = "crosscompt" des = self.mooseId_GObj[element(items[0])] - self.lineCord(src, des, items, itemignoreZooming) + self.lineCord(src,des,items,itemignoreZooming,linetype) if len(out[1]) == 0: - print( - inn.className + - ' : ' + - inn.name + - " doesn't output message") + print (inn.className + ' : ' +inn.name+ " doesn't output message") else: - for items in (items for items in out[1]): + for items in (items for items in out[1] ): + if re.search("xfer",element(items[0]).name): + xrefPool = items[0].name[:items[0].name.index("_xfer_")] + xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] + orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] + orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] + itemslist = list(items) + itemslist[0] = orgPool + items = tuple(itemslist) + linetype = "crosscompt" des = self.mooseId_GObj[element(items[0])] - self.lineCord(src, des, items, itemignoreZooming) - elif isinstance(out, list): + self.lineCord(src,des,items,itemignoreZooming,linetype) + elif isinstance(out,list): if len(out) == 0: if inn.className == "StimulusTable": - print(inn.name + " doesn't have output") + print (inn.name +" doesn't have output") elif inn.className == "ZombieFunction" or inn.className == "Function": - print(inn.name + " doesn't have sumtotal ") + print (inn.name + " doesn't have sumtotal ") else: src = self.mooseId_GObj[inn] - for items in (items for items in out): + for items in (items for items in out ): + if re.search("xfer",element(items[0]).name): + xrefPool = items[0].name[:items[0].name.index("_xfer_")] + xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] + orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] + orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] + itemslist = list(items) + itemslist[0] = orgPool + items = tuple(itemslist) + linetype = "crosscompt" des = self.mooseId_GObj[element(items[0])] - self.lineCord(src, des, items, itemignoreZooming) + self.lineCord(src,des,items,itemignoreZooming,linetype) - def lineCord(self, src, des, type_no, itemignoreZooming): + def lineCord(self,src,des,type_no,itemignoreZooming,linetype): srcdes_list = [] endtype = type_no[1] line = 0 if (src == "") and (des == ""): - print("Source or destination is missing or incorrect") + print ("Source or destination is missing or incorrect") return - srcdes_list = [src, des, endtype, line] - arrow = calcArrow(srcdes_list, itemignoreZooming, self.iconScale) - self.drawLine(srcdes_list, arrow) + srcdes_list = [src,des,endtype,line] + arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) + self.drawLine(srcdes_list,arrow,linetype) - while(type_no[2] > 1 and line <= (type_no[2] - 1)): - srcdes_list = [src, des, endtype, line] - arrow = calcArrow(srcdes_list, itemignoreZooming, self.iconScale) - self.drawLine(srcdes_list, arrow) - line = line + 1 + while(type_no[2] > 1 and line <= (type_no[2]-1)): + srcdes_list =[src,des,endtype,line] + arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) + self.drawLine(srcdes_list,arrow,linetype) + line = line +1 if type_no[2] > 5: - print("Higher order reaction will not be displayed") + print ("Higher order reaction will not be displayed") - def drawLine(self, srcdes_list, arrow): + def drawLine(self,srcdes_list,arrow,linetype="solid"): src = srcdes_list[0] des = srcdes_list[1] endtype = srcdes_list[2] line = srcdes_list[3] - source = element( - next( - (k for k, - v in list( - self.mooseId_GObj.items()) if v == src), - None)) - for l, v, et, o in self.object2line[src]: - if v == des and o == line: + source = element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + for l,v,et,o in self.object2line[src]: + if v == des and o ==line: l.setPolygon(arrow) arrowPen = l.pen() - arrowPenWidth = self.arrowsize * self.iconScale + arrowPenWidth = self.arrowsize*self.iconScale arrowPen.setColor(l.pen().color()) arrowPen.setWidth(arrowPenWidth) l.setPen(arrowPen) return qgLineitem = self.sceneContainer.addPolygon(arrow) qgLineitem.setParentItem(src.parentItem()) - pen = QtGui.QPen( - QtCore.Qt.green, - 0, - Qt.Qt.SolidLine, - Qt.Qt.RoundCap, - Qt.Qt.RoundJoin) + pen = QtGui.QPen(QtCore.Qt.green, 0, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin) + if linetype == "crosscompt": + pen.setStyle(Qt.Qt.CustomDashLine) + pen.setDashPattern([1, 5, 1, 5]) + pen.setWidth(self.arrowsize) - # Green is default color moose.ReacBase and derivatives - already set - # above - if isinstance(source, EnzBase): - if ((endtype == 's') or (endtype == 'p')): + + # Green is default color moose.ReacBase and derivatives - already set above + if isinstance(source, EnzBase): + if ( (endtype == 's') or (endtype == 'p')): pen.setColor(QtCore.Qt.red) elif(endtype != 'cplx'): - p1 = ( - next( - (k for k, - v in list( - self.mooseId_GObj.items()) if v == src), - None)) - pinfo = p1.parent.path + '/info' - color, bgcolor = getColor(pinfo) + p1 = (next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + pinfo = p1.parent.path+'/info' + color,bgcolor = getColor(pinfo) #color = QColor(color[0],color[1],color[2]) pen.setColor(bgcolor) - elif isinstance(source, moose.PoolBase) or isinstance(source, moose.Function): + elif isinstance(source, moose.PoolBase) or isinstance(source,moose.Function): pen.setColor(QtCore.Qt.blue) - elif isinstance(source, moose.StimulusTable): + elif isinstance(source,moose.StimulusTable): pen.setColor(QtCore.Qt.yellow) self.lineItem_dict[qgLineitem] = srcdes_list - self.object2line[src].append((qgLineitem, des, endtype, line)) - self.object2line[des].append((qgLineitem, src, endtype, line)) + self.object2line[ src ].append( ( qgLineitem, des,endtype,line) ) + self.object2line[ des ].append( ( qgLineitem, src,endtype,line ) ) qgLineitem.setPen(pen) - def positionChange(self, mooseObject): - # If the item position changes, the corresponding arrow's are - # calculated - if isinstance(element(mooseObject), ChemCompt): - for k, v in list(self.qGraCompt.items()): - mesh = mooseObject + def positionChange(self,mooseObject): + #If the item position changes, the corresponding arrow's are calculated + for k, v in self.qGraCompt.items(): + for rectChilditem in v.childItems(): + self.updateArrow(rectChilditem) + if isinstance(rectChilditem,GRPItem): + for grpChilditem in rectChilditem.childItems(): + self.updateArrow(grpChilditem) + if isinstance(grpChilditem,KineticsDisplayItem): + if moose.exists(grpChilditem.mobj.path+'/info'): + #print grpChilditem.mobj.name, grpChilditem.scenePos() + moose.element(grpChilditem.mobj.path+'/info').x = grpChilditem.scenePos().x() + moose.element(grpChilditem.mobj.path+'/info').y = grpChilditem.scenePos().y() + #self.updateGrpSize(rectChilditem) + if isinstance(rectChilditem,KineticsDisplayItem): + if moose.exists(rectChilditem.mobj.path+'/info'): + #print rectChilditem.mobj.name, rectChilditem.scenePos() + moose.element(rectChilditem.mobj.path+'/info').x = rectChilditem.scenePos().x() + moose.element(rectChilditem.mobj.path+'/info').y = rectChilditem.scenePos().y() + + rectcompt = calculateChildBoundingRect(v) + comptBoundingRect = v.boundingRect() + if not comptBoundingRect.contains(rectcompt): + self.updateCompartmentSize(v) + else: + rectcompt = calculateChildBoundingRect(v) + v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + + def positionChange_old(self,mooseObject): + #If the item position changes, the corresponding arrow's are calculated + if isinstance(element(mooseObject),ChemCompt): + for k, v in self.qGraCompt.items(): + mesh = moose.element(mooseObject).path if k.path == mesh: for rectChilditem in v.childItems(): if isinstance(rectChilditem, KineticsDisplayItem): - if isinstance( - moose.element( - rectChilditem.mobj.path), - PoolBase): - t = moose.element(rectChilditem.mobj.path) - moose.element(t).children - for items in moose.element(t).children: - if isinstance( - moose.element(items), Function): - test = moose.element(items.path + '/x') - for i in moose.element( - test).neighbors['input']: - j = self.mooseId_GObj[ - moose.element(i)] - self.updateArrow(j) + if moose.exists(rectChilditem.mobj.path): + iInfo = rectChilditem.mobj.path+'/info' + anno = moose.Annotator(iInfo) + #storing scenePos back to annotator file for further use + x = rectChilditem.scenePos().x() + y = rectChilditem.scenePos().y() + #anno.x = x + #anno.y = y + if isinstance(moose.element(rectChilditem.mobj.path),PoolBase): + t = moose.element(rectChilditem.mobj.path) + moose.element(t).children + for items in moose.element(t).children: + if isinstance(moose.element(items),Function): + test = moose.element(items.path+'/x') + for i in moose.element(test).neighbors['input']: + j = self.mooseId_GObj[moose.element(i)] + self.updateArrow(j) self.updateArrow(rectChilditem) + elif element(mooseObject).className == 'Neutral': + for k,v in self.qGraGrp.items(): + for grpChilditem in v.childItems(): + if isinstance(grpChilditem, KineticsDisplayItem): + if moose.exists(grpChilditem.mobj.path): + iInfo = grpChilditem.mobj.path+'/info' + anno = moose.Annotator(iInfo) + #storing scenePos back to annotator file for further use + x = grpChilditem.scenePos().x() + y = grpChilditem.scenePos().y() + #anno.x = x + #anno.y = y + + if isinstance(moose.element(grpChilditem.mobj.path),PoolBase): + t = moose.element(grpChilditem.mobj.path) + moose.element(t).children + for items in moose.element(t).children: + if isinstance(moose.element(items),Function): + test = moose.element(items.path+'/x') + for i in moose.element(test).neighbors['input']: + j = self.mooseId_GObj[moose.element(i)] + self.updateArrow(j) + self.updateArrow(grpChilditem) + # grpcompt = self.qGraCompt[self.objPar[k]] + # rectcompt = calculateChildBoundingRect(grpcompt) + rectgrp = calculateChildBoundingRect(v) + v.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) + for k, v in self.qGraCompt.items(): + #rectcompt = v.childrenBoundingRect() + rectcompt = calculateChildBoundingRect(v) + comptBoundingRect = v.boundingRect() + if not comptBoundingRect.contains(rectcompt): + self.updateCompartmentSize(v) + + else: + rectcompt = calculateChildBoundingRect(v) + v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) else: mobj = self.mooseId_GObj[element(mooseObject)] self.updateArrow(mobj) - elePath = moose.element(mooseObject).path - pos = elePath.find('/', 1) - l = elePath[0:pos] - linfo = moose.Annotator(l + '/info') - for k, v in list(self.qGraCompt.items()): + # elePath = moose.element(mooseObject).path + # pos = elePath.find('/',1) + # l = elePath[0:pos] + # linfo = moose.Annotator(l+'/info') + # if moose.exists(l): + # #anno = moose.Annotator(linfo) + # # if moose.Annotator(self.plugin.modelRoot+'/info').modeltype == 'kkit': + # # x = mobj.scenePos().x()/self.defaultScenewidth + # # y = mobj.scenePos().y()/self.defaultSceneheight + # # else: + # # x = mobj.scenePos().x() + # # y = mobj.scenePos().y() + # x = mobj.scenePos().x() + # y = mobj.scenePos().y() + #print " x and y at 863 ",mobj.scenePos() + # for gk,gv in self.qGraGrp.items(): + # rectgrp = calculateChildBoundingRect(gv) + # grpBoundingRect = gv.boundingRect() + # if not grpBoundingRect.contains(rectgrp): + # self.updateCompartmentSize(v) + # else: + # gv.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) + for k, v in self.qGraCompt.items(): #rectcompt = v.childrenBoundingRect() rectcompt = calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.updateCompartmentSize(v) - ''' - if linfo.modeltype == "new_kkit": - #if newly built model then compartment is size is fixed for some size. - comptBoundingRect = v.boundingRect() - if not comptBoundingRect.contains(rectcompt): - self.updateCompartmentSize(v) + else: - #if already built model then compartment size depends on max and min objects rectcompt = calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - ''' + # print " position change " + # for item in self.sceneContainer.items(): + # if isinstance(item,KineticsDisplayItem): + # print item.mobj.name, moose.element(item.mobj.path+'/info').x,moose.element(item.mobj.path+'/info').y + def updateGrpSize(self,grp): + compartmentBoundary = grp.rect() + + childrenBoundary = calculateChildBoundingRect(grp) + x = childrenBoundary.x() + y = childrenBoundary.y() + height = childrenBoundary.height() + width = childrenBoundary.width() + grp.setRect( x-10 + , y-10 + , width + 20 + , height + 20 + ) def updateCompartmentSize(self, compartment): compartmentBoundary = compartment.rect() - # print " compartmentBoundary ",compartmentBoundary, " ",compartment.childrenBoundingRect() - #compartmentBoundary =compartment.childrenBoundingRect() - #childrenBoundary = compartment.childrenBoundingRect() - # print " 758 ",compartment.childrenBoundaryRect() childrenBoundary = calculateChildBoundingRect(compartment) - # print " ch ",childrenBoundary x = min(compartmentBoundary.x(), childrenBoundary.x()) y = min(compartmentBoundary.y(), childrenBoundary.y()) width = max(compartmentBoundary.width(), childrenBoundary.width()) height = max(compartmentBoundary.height(), childrenBoundary.height()) - compartment.setRect(x - 10, y - 10, width + 20, height + 20 - ) - - def updateArrow(self, qGTextitem): - # if there is no arrow to update then return + compartment.setRect( x-10 + , y-10 + , width + 20 + , height + 20 + ) + + def updateArrow(self,qGTextitem): + #if there is no arrow to update then return if qGTextitem not in self.object2line: return listItem = self.object2line[qGTextitem] - for ql, va, endtype, order in self.object2line[qGTextitem]: + for ql, va,endtype,order in self.object2line[qGTextitem]: srcdes = [] srcdes = self.lineItem_dict[ql] # Checking if src (srcdes[0]) or des (srcdes[1]) is ZombieEnz, # if yes then need to check if cplx is connected to any mooseObject, - # so that when Enzyme is moved, cplx connected arrow to other - # mooseObject(poolItem) should also be updated - if(isinstance(srcdes[0], EnzItem) or type(srcdes[0] == MMEnzItem)): + # so that when Enzyme is moved, cplx connected arrow to other mooseObject(poolItem) should also be updated + if( type(srcdes[0]) == EnzItem or type(srcdes[0] == MMEnzItem)): self.cplxUpdatearrow(srcdes[0]) - elif(isinstance(srcdes[1], EnzItem) or type(srcdes[1] == MMEnzItem)): + elif( type(srcdes[1]) == EnzItem or type(srcdes[1] == MMEnzItem)): self.cplxUpdatearrow(srcdes[1]) - # For calcArrow(src,des,endtype,itemignoreZooming) is to be - # provided - arrow = calcArrow(srcdes, self.itemignoreZooming, self.iconScale) + # For calcArrow(src,des,endtype,itemignoreZooming) is to be provided + arrow = calcArrow(srcdes,self.itemignoreZooming,self.iconScale) ql.setPolygon(arrow) - def cplxUpdatearrow(self, srcdes): + def cplxUpdatearrow(self,srcdes): # srcdes which is 'EnzItem' from this,get ChildItems are retrived (b'cos cplx is child of zombieEnz) - # And cplxItem is passed for updatearrow + #And cplxItem is passed for updatearrow for item in srcdes.childItems(): - if isinstance(item, CplxItem): + if isinstance(item,CplxItem): self.updateArrow(item) - # def deleteSolver(self): - # print " delete Solver" - # print "### ",moose.wildcardFind(self.modelRoot+'/data/graph#/#') - # if moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]'): - # compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - # print " deletSolver ", - # # print moose.exists(compt[0].path+'/stoich'), " ksolve ", moose.exists(compt[0].path+'/ksolve') - # # print "gsolve ", moose.delete( compt[0].path+'/gsolve' ) - # if ( moose.exists( compt[0].path+'/stoich' ) ): - # #print "delete" - # moose.delete( compt[0].path+'/stoich' ) - # if ( moose.exists( compt[0].path+'/ksolve' ) ): - # moose.delete( compt[0].path+'/ksolve' ) - # if ( moose.exists( compt[0].path+'/gsolve' ) ): - # moose.delete( compt[0].path+'/gsolve' ) - # for x in moose.wildcardFind( self.modelRoot+'/data/graph#/#' ): - # x.tick = -1 - def positionChange1(self, mooseObject): - # If the item position changes, the corresponding arrow's are - # calculated - if ((isinstance(element(mooseObject), CubeMesh)) - or (isinstance(element(mooseObject), CylMesh))): + def positionChange1(self,mooseObject): + #If the item position changes, the corresponding arrow's are calculated + if ( (isinstance(element(mooseObject),CubeMesh)) or (isinstance(element(mooseObject),CylMesh))): v = self.qGraCompt[mooseObject] for rectChilditem in v.childItems(): self.updateArrow(rectChilditem) @@ -904,36 +1083,32 @@ def positionChange1(self, mooseObject): comptBoundingRect = v.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = v.pen() - comptWidth = 5 + comptWidth = 5 comptPen.setWidth(comptWidth) v.setPen(comptPen) if not comptBoundingRect.contains(childBoundingRect): - v.setRect(rectcompt.x() - comptWidth, - rectcompt.y() - comptWidth, - rectcompt.width() + (comptWidth * 2), - rectcompt.height() + (comptWidth * 2)) + v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) - -class KineticEditorWidget(KineticsWidget): - - def __init__(self, plugin, *args): +class kineticEditorWidget(KineticsWidget): + def __init__(self, plugin,*args): KineticsWidget.__init__(self, plugin, *args) self.plugin = plugin self.insertMenu = QtGui.QMenu('&Insert') self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) - classlist = [ - 'CubeMesh', - 'CylMesh', - 'Pool', - 'BufPool', - 'Function', - 'Reac', - 'Enz', - 'MMenz', - 'StimulusTable'] - self.toolTipinfo = TooltipInfo.tooltip_info_dict_ + classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] + self.toolTipinfo = { "CubeMesh":"", + "CylMesh" : "", + "Pool":"A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", + "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", + "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", + "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", + "Reac":"A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", + "MMenz":"An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", + "Enz":"An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" + + } insertMapper, actions = self.getInsertActions(classlist) for action in actions: self.insertMenu.addAction(action) @@ -944,62 +1119,47 @@ def __init__(self, plugin, *args): doc = doc.split('Description:')[-1].split('Name:')[0].strip() action.setToolTip(doc) - # Set size policy - self.setMinimumSize( 1000, 1000 ) - self.setSizePolicy( - QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding - ) + def GrViewresize(self,event): + #when Gui resize and event is sent which inturn call resizeEvent of qgraphicsview + pass + #self.view.resizeEvent1(event) def makePoolItem(self, poolObj, qGraCompt): return PoolItem(poolObj, qGraCompt) - def rescaleView( self ): - """Rescale when outerboundries are crowded. But not too much - - NOTE: The size policy should take care of this. - - """ - pass - def getToolBars(self): - # Add specific tool items with respect to kkit + #Add specific tool items with respect to kkit if not hasattr(self, '_insertToolBar'): self._insertToolBar = QtGui.QToolBar('Insert') self._toolBars.append(self._insertToolBar) for action in self.insertMenu.actions(): button = MToolButton() button.setDefaultAction(action) - # set the unicode instead of image by setting - # button.setText(unicode(u'\u20de')) - Iconpath = os.path.join(config.MOOSE_ICON_DIR) - _logger.debug( "Reading icons from %s" % Iconpath ) - button.setIcon( - QtGui.QIcon( - os.path.join(Iconpath, '%s' % action.text() + ".png") - ) - ) + #set the unicode instead of image by setting + #button.setText(unicode(u'\u20de')) + Iconpath = os.path.join(config.MOOSE_GUI_DIR, 'icons/classIcon/') + button.setIcon(QtGui.QIcon(Iconpath+action.text()+".png")) + #button.setIcon(QtGui.QIcon("icons/classIcon/"+action.text()+".png")) + #button.setIconSize(QtCore.QSize(200,200)) self._insertToolBar.addWidget(button) return self._toolBars - class kineticRunWidget(KineticsWidget): - def __init__(self, plugin, *args): - KineticsWidget.__init__(self, plugin, *args) + KineticsWidget.__init__(self, plugin,*args) def showEvent(self, event): self.refresh() # pass - def refresh(self): self.sceneContainer.clear() - self.Comptexist = wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') + self.Comptexist = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') if self.Comptexist: # pass self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow(itemignoreZooming=False) - + def makePoolItem(self, poolObj, qGraCompt): return PoolItemCircle(poolObj, qGraCompt) @@ -1007,68 +1167,63 @@ def getToolBars(self): return self._toolBars def updateValue(self): - for item in list(self.sceneContainer.items()): - if isinstance( - item, - ReacItem) or isinstance( - item, - MMEnzItem) or isinstance( - item, - EnzItem) or isinstance( - item, - PoolItemCircle) or isinstance( - item, - CplxItem): + for item in self.sceneContainer.items(): + if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,PoolItemCircle) or isinstance(item,CplxItem): item.updateValue(item.mobj) def changeBgSize(self): - for item in list(self.sceneContainer.items()): - if isinstance(item, PoolItemCircle): + for item in self.sceneContainer.items(): + if isinstance(item,PoolItemCircle): initialConc = moose.element(item.mobj).concInit presentConc = moose.element(item.mobj).conc if initialConc != 0: - ratio = presentConc / initialConc + ratio = presentConc/initialConc else: - # multipying by 1000 b'cos moose concentration is in milli - # in moose + # multipying by 1000 b'cos moose concentration is in milli in moose ratio = presentConc - if ratio > 10: + #print "ratio",item.mobj,ratio + if ratio > '10': ratio = 9 - if ratio < 0.0: - ratio = 0.1 + if ratio < '0.0': + ratio =0.1 + #print "size ",ratio item.updateRect(math.sqrt(abs(ratio))) def resetColor(self): - for item in list(self.sceneContainer.items()): - if isinstance(item, PoolItemCircle): + for item in self.sceneContainer.items(): + if isinstance(item,PoolItemCircle): item.returnEllispeSize() - -# if __name__ == "__main__": -# app = QtGui.QApplication(sys.argv) -# size = QtCore.QSize(1024 ,768) -# modelPath = 'acc27' -# itemignoreZooming = False -# try: -# filepath = '../../Demos/Genesis_files/'+modelPath+'.g' -# filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' -# print(filepath) -# f = open(filepath, "r") -# loadModel(filepath,'/'+modelPath) -# -# #moose.le('/'+modelPath+'/kinetics') -# dt = KineticsWidget() -# dt.modelRoot ='/'+modelPath -# ''' Loading moose signalling model in python ''' -# #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') -# #dt.modelRoot = '/model' -# -# dt.updateModelView() -# dt.show() -# -# except IOError as what: -# (errno, strerror) = what -# print("Error number",errno,"(%s)" %strerror) -# sys.exit(0) -# sys.exit(app.exec_()) -# +if __name__ == "__main__": + app = QtGui.QApplication(sys.argv) + size = QtCore.QSize(1024 ,768) + #modelPath = 'Kholodenko' + modelPath = 'acc27' + #modelPath = 'acc8' + #modelPath = '3ARECB' + #modelPath = '3AreacB' + #modelPath = '5AreacB' + itemignoreZooming = False + try: + filepath = '../../Demos/Genesis_files/'+modelPath+'.g' + filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' + print( "%s" %(filepath)) + f = open(filepath, "r") + loadModel(filepath,'/'+modelPath) + + #moose.le('/'+modelPath+'/kinetics') + dt = KineticsWidget() + dt.modelRoot ='/'+modelPath + ''' Loading moose signalling model in python ''' + #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') + #dt.modelRoot = '/model' + + dt.updateModelView() + dt.show() + + except IOError as what: + (errno, strerror) = what + print("Error number",errno,"(%s)" %(strerror)) + sys.exit(1) + + sys.exit(app.exec_()) diff --git a/src/plugins/kkitOrdinateUtil.py b/src/plugins/kkitOrdinateUtil.py index 205905d..d754ca7 100644 --- a/src/plugins/kkitOrdinateUtil.py +++ b/src/plugins/kkitOrdinateUtil.py @@ -64,7 +64,6 @@ def findGroup_compt(melement): return melement ''' def populateMeshEntry(meshEntry,parent,types,obj): - #print " parent ",parent, "types ",types, " obj ",obj try: value = meshEntry[element(parent.path)][types] except KeyError: @@ -74,7 +73,6 @@ def populateMeshEntry(meshEntry,parent,types,obj): mlist = meshEntry[element(parent.path)][types] mlist.append(element(obj)) def updateMeshObj(modelRoot): - print " updateMeshObj " meshEntry = {} if meshEntry: meshEntry.clear() From eeb3445f2ed76d3e87af2129ad2b15fe26a50c38 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 19:41:20 +0530 Subject: [PATCH 39/66] replaced all instance of PyQt4 with PyQt5 [skip ci] --- demos/Fig2_elecModels/Fig2C.py | 2 +- demos/Fig2_elecModels/Fig2D.py | 2 +- demos/Fig2_elecModels/Fig2E.py | 2 +- demos/Fig4_ReacDiff/Fig4B.py | 2 +- demos/Fig4_ReacDiff/Fig4CDEF.py | 2 +- demos/Fig4_ReacDiff/Fig4GHIJ.py | 2 +- demos/Fig4_ReacDiff/rxdSpineSize.py | 2 +- demos/Fig5_CellMultiscale/Fig5A.py | 2 +- demos/Fig5_CellMultiscale/Fig5BCD.py | 2 +- demos/Fig6_NetMultiscale/Fig6A.py | 2 +- demos/Fig6_NetMultiscale/Fig6BCDE.py | 2 +- demos/rxdSpineSize.py | 2 +- demos/squid/channeleditor.py | 2 +- demos/squid/squid_demo.py | 4 +-- plugins/modelBuild.py | 2 +- requirements.txt | 3 ++ src/GenericTypes.py | 4 +-- src/MWindow.py | 6 ++-- src/MdiArea.py | 4 +-- src/PlotWidgetContainer.py | 26 +++++++-------- src/RunWidget.py | 8 ++--- src/SettingsDialog.py | 12 +++---- src/__init__.py | 4 +-- src/biomodelsclient.py | 4 +-- src/checkcombobox.py | 4 +-- src/config.py | 4 +-- src/configwidget.py | 2 +- src/loaderdialog.py | 2 +- src/mgui.py | 4 +-- src/mload.py | 2 +- src/mplot.py | 8 ++--- src/mplugin.py | 2 +- src/msearch.py | 4 +-- src/mtoolbutton.py | 4 +-- src/mtree.py | 4 +-- src/newmodeldialog.py | 2 +- src/objectedit.py | 24 +++++++------- src/plugins/NeuroKit.py | 6 ++-- src/plugins/NeuroKitEditor.py | 24 +++++++------- src/plugins/NeuroKitRunner.py | 16 +++++----- src/plugins/NeuroKitVisualizer.py | 26 +++++++-------- src/plugins/PreferencesPresenter.py | 10 +++--- src/plugins/PreferencesView.py | 48 ++++++++++++++-------------- src/plugins/Runner.py | 8 ++--- src/plugins/buildkkit.py | 4 +-- src/plugins/default.py | 38 +++++++++++----------- src/plugins/kkit.py | 8 ++--- src/plugins/kkitCalcArrow.py | 4 +-- src/plugins/kkitOrdinateUtil.py | 2 +- src/plugins/kkitQGraphics.py | 4 +-- src/plugins/kkitUtil.py | 4 +-- src/plugins/kkitViewcontrol.py | 10 +++--- src/plugins/modelBuild.py | 2 +- src/plugins/test_plotwidget.py | 4 +-- src/scishell.py | 6 ++-- src/shell.py | 8 ++--- src/sidebar.py | 14 ++++---- src/utils.py | 2 +- 58 files changed, 210 insertions(+), 207 deletions(-) create mode 100644 requirements.txt diff --git a/demos/Fig2_elecModels/Fig2C.py b/demos/Fig2_elecModels/Fig2C.py index 5e5aa34..90cb21a 100644 --- a/demos/Fig2_elecModels/Fig2C.py +++ b/demos/Fig2_elecModels/Fig2C.py @@ -11,7 +11,7 @@ import pylab import moose from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import matplotlib.pyplot as plt import sys import os diff --git a/demos/Fig2_elecModels/Fig2D.py b/demos/Fig2_elecModels/Fig2D.py index 94ffcd8..5d7db8f 100644 --- a/demos/Fig2_elecModels/Fig2D.py +++ b/demos/Fig2_elecModels/Fig2D.py @@ -11,7 +11,7 @@ import moogli import moose -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import sys import os import rdesigneur as rd diff --git a/demos/Fig2_elecModels/Fig2E.py b/demos/Fig2_elecModels/Fig2E.py index 08d6406..6cd3e13 100644 --- a/demos/Fig2_elecModels/Fig2E.py +++ b/demos/Fig2_elecModels/Fig2E.py @@ -11,7 +11,7 @@ import moogli import moose -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import numpy import pylab import sys diff --git a/demos/Fig4_ReacDiff/Fig4B.py b/demos/Fig4_ReacDiff/Fig4B.py index e9b55c2..a6ad5da 100644 --- a/demos/Fig4_ReacDiff/Fig4B.py +++ b/demos/Fig4_ReacDiff/Fig4B.py @@ -13,7 +13,7 @@ import pylab import moose from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import matplotlib.pyplot as plt import sys import os diff --git a/demos/Fig4_ReacDiff/Fig4CDEF.py b/demos/Fig4_ReacDiff/Fig4CDEF.py index 09c2050..88f5e03 100644 --- a/demos/Fig4_ReacDiff/Fig4CDEF.py +++ b/demos/Fig4_ReacDiff/Fig4CDEF.py @@ -16,7 +16,7 @@ import pylab import moose from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import matplotlib.pyplot as plt import sys import os diff --git a/demos/Fig4_ReacDiff/Fig4GHIJ.py b/demos/Fig4_ReacDiff/Fig4GHIJ.py index ca99951..f305c87 100644 --- a/demos/Fig4_ReacDiff/Fig4GHIJ.py +++ b/demos/Fig4_ReacDiff/Fig4GHIJ.py @@ -16,7 +16,7 @@ import pylab import moose from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import matplotlib.pyplot as plt import sys import os diff --git a/demos/Fig4_ReacDiff/rxdSpineSize.py b/demos/Fig4_ReacDiff/rxdSpineSize.py index 5065332..22782de 100644 --- a/demos/Fig4_ReacDiff/rxdSpineSize.py +++ b/demos/Fig4_ReacDiff/rxdSpineSize.py @@ -17,7 +17,7 @@ import sys sys.path.append( '../util' ) import rdesigneur as rd -from PyQt4 import QtGui +from PyQt5 import QtGui import moogli import moogli.extensions.moose import matplotlib diff --git a/demos/Fig5_CellMultiscale/Fig5A.py b/demos/Fig5_CellMultiscale/Fig5A.py index 75bb21b..8c7d4d2 100644 --- a/demos/Fig5_CellMultiscale/Fig5A.py +++ b/demos/Fig5_CellMultiscale/Fig5A.py @@ -18,7 +18,7 @@ import pylab import moose from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import matplotlib.pyplot as plt import sys import os diff --git a/demos/Fig5_CellMultiscale/Fig5BCD.py b/demos/Fig5_CellMultiscale/Fig5BCD.py index b77cce6..5a4a9f7 100644 --- a/demos/Fig5_CellMultiscale/Fig5BCD.py +++ b/demos/Fig5_CellMultiscale/Fig5BCD.py @@ -18,7 +18,7 @@ import pylab import moose from moose import neuroml -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui import matplotlib.pyplot as plt import sys import os diff --git a/demos/Fig6_NetMultiscale/Fig6A.py b/demos/Fig6_NetMultiscale/Fig6A.py index a527fea..b8646bc 100644 --- a/demos/Fig6_NetMultiscale/Fig6A.py +++ b/demos/Fig6_NetMultiscale/Fig6A.py @@ -29,7 +29,7 @@ import random import time import moose -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui from numpy import random as nprand from moose.neuroml.NeuroML import NeuroML import sys diff --git a/demos/Fig6_NetMultiscale/Fig6BCDE.py b/demos/Fig6_NetMultiscale/Fig6BCDE.py index af04c9f..876be18 100644 --- a/demos/Fig6_NetMultiscale/Fig6BCDE.py +++ b/demos/Fig6_NetMultiscale/Fig6BCDE.py @@ -30,7 +30,7 @@ import random import time import moose -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import Qt, QtCore, QtGui from numpy import random as nprand from moose.neuroml.NeuroML import NeuroML import sys diff --git a/demos/rxdSpineSize.py b/demos/rxdSpineSize.py index 77a9fec..aa61446 100644 --- a/demos/rxdSpineSize.py +++ b/demos/rxdSpineSize.py @@ -17,7 +17,7 @@ import sys sys.path.append( '../util' ) import rdesigneur as rd -from PyQt4 import QtGui +from PyQt5 import QtGui import moogli import moogli.extensions.moose import matplotlib diff --git a/demos/squid/channeleditor.py b/demos/squid/channeleditor.py index 0309690..09ac719 100644 --- a/demos/squid/channeleditor.py +++ b/demos/squid/channeleditor.py @@ -29,7 +29,7 @@ # Code: import sys -from PyQt4 import QtGui, QtCore +from PyQt5 import QtGui, QtCore from numpy import * import ast diff --git a/demos/squid/squid_demo.py b/demos/squid/squid_demo.py index 31285d0..9e9344a 100644 --- a/demos/squid/squid_demo.py +++ b/demos/squid/squid_demo.py @@ -55,8 +55,8 @@ from collections import defaultdict import time -from PyQt4 import QtGui -from PyQt4 import QtCore +from PyQt5 import QtGui +from PyQt5 import QtCore import numpy from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar diff --git a/plugins/modelBuild.py b/plugins/modelBuild.py index 260c8af..27abd43 100644 --- a/plugins/modelBuild.py +++ b/plugins/modelBuild.py @@ -11,7 +11,7 @@ from kkitQGraphics import * from kkitOrdinateUtil import * from kkitUtil import * -import PyQt4 +import PyQt5 from setsolver import * def updateCompartmentSize(qGraCompt): diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ebbd809 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +pymoose +pyqt5 +networkx diff --git a/src/GenericTypes.py b/src/GenericTypes.py index 6d4fc78..c4ef7ab 100644 --- a/src/GenericTypes.py +++ b/src/GenericTypes.py @@ -1,6 +1,6 @@ """GenericTypes -This class fixes the pytho2 and python3 related issues with PyQt4 +This class fixes the pytho2 and python3 related issues with PyQt5 """ @@ -16,7 +16,7 @@ import sys import os -from PyQt4 import QtCore +from PyQt5 import QtCore if sys.version_info >= (3, 0): diff --git a/src/MWindow.py b/src/MWindow.py index 9dc9055..3dce1e5 100644 --- a/src/MWindow.py +++ b/src/MWindow.py @@ -66,9 +66,9 @@ import re from collections import defaultdict, OrderedDict -from PyQt4 import QtGui, QtCore, Qt -from PyQt4 import Qt, QtCore, QtGui -from PyQt4.QtGui import * +from PyQt5 import QtGui, QtCore, Qt +from PyQt5 import Qt, QtCore, QtGui +from PyQt5.QtGui import * from MdiArea import MdiArea import os from moose.chemUtil.add_Delete_ChemicalSolver import * diff --git a/src/MdiArea.py b/src/MdiArea.py index 005bf7c..0a4cf67 100644 --- a/src/MdiArea.py +++ b/src/MdiArea.py @@ -1,5 +1,5 @@ -from PyQt4 import Qt, QtCore, QtGui -from PyQt4.QtGui import * +from PyQt5 import Qt, QtCore, QtGui +from PyQt5.QtGui import * import os APPLICATION_BACKGROUND_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)) diff --git a/src/PlotWidgetContainer.py b/src/PlotWidgetContainer.py index bf93573..00c5d4f 100644 --- a/src/PlotWidgetContainer.py +++ b/src/PlotWidgetContainer.py @@ -16,18 +16,18 @@ import sys import os -import PyQt4 -from PyQt4 import QtGui, Qt -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QSizeGrip -from PyQt4.QtGui import QDockWidget -from PyQt4.QtGui import QLayout -from PyQt4.QtGui import QVBoxLayout -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QScrollArea -from PyQt4.QtGui import QToolBar -from PyQt4.QtGui import QSizeGrip -from PyQt4.QtGui import QSplitter +import PyQt5 +from PyQt5 import QtGui, Qt +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QSizeGrip +from PyQt5.QtGui import QDockWidget +from PyQt5.QtGui import QLayout +from PyQt5.QtGui import QVBoxLayout +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QScrollArea +from PyQt5.QtGui import QToolBar +from PyQt5.QtGui import QSizeGrip +from PyQt5.QtGui import QSplitter import moose import default @@ -60,7 +60,7 @@ def __init__(self, modelRoot, *args, **kwargs): self._layout = QVBoxLayout() self.graphs = QSplitter() - self.graphs.setOrientation(PyQt4.QtCore.Qt.Vertical) + self.graphs.setOrientation(PyQt5.QtCore.Qt.Vertical) self.graphsArea = QScrollArea() # self.graphsLayout = QGridLayout() # self.menubar = self.createMenuBar() diff --git a/src/RunWidget.py b/src/RunWidget.py index 5e508bc..5d09b37 100644 --- a/src/RunWidget.py +++ b/src/RunWidget.py @@ -17,10 +17,10 @@ import os from . import SettingsDialog -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QScrollArea -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QSplitter +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QScrollArea +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QSplitter class RunWidget(QSplitter): """ Run view """ diff --git a/src/SettingsDialog.py b/src/SettingsDialog.py index 16b0e58..3ac01ce 100644 --- a/src/SettingsDialog.py +++ b/src/SettingsDialog.py @@ -16,12 +16,12 @@ import sys import os -from PyQt4 import QtGui, Qt -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QLabel -from PyQt4.QtGui import QComboBox -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QTabWidget +from PyQt5 import QtGui, Qt +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QLabel +from PyQt5.QtGui import QComboBox +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QTabWidget class SettingsWidget(QTabWidget): def __init__( self diff --git a/src/__init__.py b/src/__init__.py index 2cbebb2..0951f39 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,9 +1,9 @@ from .mgui import main # Hack. In python3, Qt4 does not have QString object. -from PyQt4 import QtCore +from PyQt5 import QtCore try: - from PyQt4.QtCore import QString + from PyQt5.QtCore import QString except ImportError: # we are using Python3 so QString is not defined. Also QVariant is a mapped # type. diff --git a/src/biomodelsclient.py b/src/biomodelsclient.py index e02776b..4faf516 100644 --- a/src/biomodelsclient.py +++ b/src/biomodelsclient.py @@ -83,8 +83,8 @@ def __init__(self, WSDL_URI=BIOMODELS_WSDL_URI): except Exception as e: print(e) -from PyQt4.Qt import Qt -from PyQt4 import QtCore, QtGui +from PyQt5.Qt import Qt +from PyQt5 import QtCore, QtGui class BioModelsClientWidget(QtGui.QDialog): """This is a widget with a Biomodels Client. It provides simple diff --git a/src/checkcombobox.py b/src/checkcombobox.py index 70d3c07..a033c14 100644 --- a/src/checkcombobox.py +++ b/src/checkcombobox.py @@ -47,8 +47,8 @@ import sys -from PyQt4 import QtCore, QtGui -from PyQt4.Qt import Qt +from PyQt5 import QtCore, QtGui +from PyQt5.Qt import Qt from collections import defaultdict class CheckComboBoxModel(QtGui.QStandardItemModel): diff --git a/src/config.py b/src/config.py index d904930..b783ddf 100644 --- a/src/config.py +++ b/src/config.py @@ -53,8 +53,8 @@ import tempfile import logging import errno -from PyQt4.Qt import Qt -from PyQt4 import QtGui, QtCore +from PyQt5.Qt import Qt +from PyQt5 import QtGui, QtCore # Logger import logging diff --git a/src/configwidget.py b/src/configwidget.py index 8ac4488..69f6d9e 100644 --- a/src/configwidget.py +++ b/src/configwidget.py @@ -49,7 +49,7 @@ import shutil import os from . import config -from PyQt4 import QtGui, QtCore +from PyQt5 import QtGui, QtCore from . import config from .utils import * diff --git a/src/loaderdialog.py b/src/loaderdialog.py index d49e1ce..062620b 100644 --- a/src/loaderdialog.py +++ b/src/loaderdialog.py @@ -46,7 +46,7 @@ # Code: import sys -from PyQt4 import QtGui,QtCore,Qt +from PyQt5 import QtGui,QtCore,Qt import moose import os import posixpath diff --git a/src/mgui.py b/src/mgui.py index b2e67bf..8915b67 100644 --- a/src/mgui.py +++ b/src/mgui.py @@ -9,8 +9,8 @@ import sys import signal -from PyQt4 import QtGui, QtCore, Qt -from PyQt4 import Qt, QtCore, QtGui +from PyQt5 import QtGui, QtCore, Qt +from PyQt5 import Qt, QtCore, QtGui import posixpath from . import config diff --git a/src/mload.py b/src/mload.py index 6d9d6ce..e6bb2e2 100644 --- a/src/mload.py +++ b/src/mload.py @@ -57,7 +57,7 @@ import posixpath from os.path import basename from os.path import splitext -from PyQt4 import QtGui, QtCore, Qt +from PyQt5 import QtGui, QtCore, Qt from .plugins.setsolver import * from moose.SBML import * from plugins.kkitOrdinateUtil import * diff --git a/src/mplot.py b/src/mplot.py index 82f8952..6689b9e 100644 --- a/src/mplot.py +++ b/src/mplot.py @@ -80,15 +80,15 @@ __author__ = "Subhasis Ray" import sys import numpy as np -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt +from PyQt5 import QtGui, QtCore +from PyQt5.Qt import Qt from matplotlib import mlab from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar #from moose import utils import moose -from PyQt4.QtCore import * +from PyQt5.QtCore import * class CanvasWidget(FigureCanvas): """Widget to draw plots on. @@ -220,7 +220,7 @@ def setXLimit(self, minX, maxX): from . import config import unittest -from PyQt4.QtTest import QTest +from PyQt5.QtTest import QTest class CanvasWidgetTests(unittest.TestCase): def setUp(self): diff --git a/src/mplugin.py b/src/mplugin.py index c4ea6d0..29281c6 100644 --- a/src/mplugin.py +++ b/src/mplugin.py @@ -45,7 +45,7 @@ # Code: -from PyQt4 import QtGui,QtCore,Qt +from PyQt5 import QtGui,QtCore,Qt import moose class MoosePluginBase(QtCore.QObject): diff --git a/src/msearch.py b/src/msearch.py index 63fa809..0052897 100644 --- a/src/msearch.py +++ b/src/msearch.py @@ -50,8 +50,8 @@ """ import sys -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt +from PyQt5 import QtGui, QtCore +from PyQt5.Qt import Qt import moose diff --git a/src/mtoolbutton.py b/src/mtoolbutton.py index 909bb43..8d3074e 100644 --- a/src/mtoolbutton.py +++ b/src/mtoolbutton.py @@ -45,8 +45,8 @@ # Code: import sys -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt +from PyQt5 import QtGui, QtCore +from PyQt5.Qt import Qt class MToolButton(QtGui.QToolButton): """QToolButton subclass with dragEvent reimplemented. It sends the diff --git a/src/mtree.py b/src/mtree.py index 538518f..3d5ed4e 100644 --- a/src/mtree.py +++ b/src/mtree.py @@ -47,8 +47,8 @@ # Code: import sys -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt +from PyQt5 import QtGui, QtCore +from PyQt5.Qt import Qt import moose diff --git a/src/newmodeldialog.py b/src/newmodeldialog.py index 5ef5d30..30fc7a5 100644 --- a/src/newmodeldialog.py +++ b/src/newmodeldialog.py @@ -1,5 +1,5 @@ import os -from PyQt4 import QtGui, QtCore,Qt +from PyQt5 import QtGui, QtCore,Qt from . import config from .mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase import re diff --git a/src/objectedit.py b/src/objectedit.py index 98b338e..79ab443 100644 --- a/src/objectedit.py +++ b/src/objectedit.py @@ -63,16 +63,16 @@ # # Code: -import PyQt4 -from PyQt4 import QtCore -from PyQt4 import QtGui -from PyQt4.QtGui import QTextEdit -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QVBoxLayout -from PyQt4.QtGui import QSizePolicy -from PyQt4.QtCore import QMargins -from PyQt4.QtGui import QSplitter +import PyQt5 +from PyQt5 import QtCore +from PyQt5 import QtGui +from PyQt5.QtGui import QTextEdit +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QVBoxLayout +from PyQt5.QtGui import QSizePolicy +from PyQt5.QtCore import QMargins +from PyQt5.QtGui import QSplitter import sys from collections import deque import traceback @@ -419,7 +419,7 @@ def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=Non try: colorIndex = self.model().fields.index("Color") self.colorButton.clicked.connect(self.colorDialog.show) - self.colorButton.setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.colorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) self.colorDialog.colorSelected.connect( lambda color: self.colorButton.setStyleSheet( "QPushButton {" @@ -494,7 +494,7 @@ def setObject(self, mobj): ) textEdit.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) base = QSplitter() - base.setOrientation(PyQt4.QtCore.Qt.Vertical) + base.setOrientation(PyQt5.QtCore.Qt.Vertical) layout = QVBoxLayout() layout.addWidget(view)#, 0, 0) lineedit = QtGui.QLineEdit("Notes:") diff --git a/src/plugins/NeuroKit.py b/src/plugins/NeuroKit.py index b9d0b73..290da77 100644 --- a/src/plugins/NeuroKit.py +++ b/src/plugins/NeuroKit.py @@ -20,8 +20,8 @@ # from collections import defaultdict # import numpy as np # import re -# from PyQt4 import QtGui, QtCore -# from PyQt4.Qt import Qt +# from PyQt5 import QtGui, QtCore +# from PyQt5.Qt import Qt # from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar # import moose @@ -36,7 +36,7 @@ from . import NeuroKitRunner import mplugin import moose -from PyQt4.QtGui import QWidget +from PyQt5.QtGui import QWidget # import NeuroKitPlotter # import NeuroKitRunner diff --git a/src/plugins/NeuroKitEditor.py b/src/plugins/NeuroKitEditor.py index ac3b247..9d538ef 100644 --- a/src/plugins/NeuroKitEditor.py +++ b/src/plugins/NeuroKitEditor.py @@ -19,18 +19,18 @@ # import NeuroKitEditorWidget from . import default -from PyQt4 import QtGui -from PyQt4 import QtCore -from PyQt4 import Qt -from PyQt4.QtGui import QPushButton -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QHBoxLayout -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QDialog -from PyQt4.QtGui import QTableWidget -from PyQt4.QtGui import QTableWidgetItem -from PyQt4.QtGui import QCheckBox -from PyQt4.QtGui import QComboBox +from PyQt5 import QtGui +from PyQt5 import QtCore +from PyQt5 import Qt +from PyQt5.QtGui import QPushButton +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QHBoxLayout +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QDialog +from PyQt5.QtGui import QTableWidget +from PyQt5.QtGui import QTableWidgetItem +from PyQt5.QtGui import QCheckBox +from PyQt5.QtGui import QComboBox from .default import * from mplugin import * diff --git a/src/plugins/NeuroKitRunner.py b/src/plugins/NeuroKitRunner.py index a54791d..5cfe2b8 100644 --- a/src/plugins/NeuroKitRunner.py +++ b/src/plugins/NeuroKitRunner.py @@ -10,15 +10,15 @@ import RunWidget from PlotWidgetContainer import PlotWidgetContainer from .NeuroKitVisualizer import MorphologySimulator -from PyQt4 import QtGui, Qt -from PyQt4.QtGui import QLabel -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QToolBar -from PyQt4.QtGui import QPushButton -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QTextEdit +from PyQt5 import QtGui, Qt +from PyQt5.QtGui import QLabel +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QToolBar +from PyQt5.QtGui import QPushButton +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QTextEdit import pprint -# from PyQt4.QtGui import QToolBa +# from PyQt5.QtGui import QToolBa from .default import * import moose import neuroextractor diff --git a/src/plugins/NeuroKitVisualizer.py b/src/plugins/NeuroKitVisualizer.py index bbe000d..932d3f3 100644 --- a/src/plugins/NeuroKitVisualizer.py +++ b/src/plugins/NeuroKitVisualizer.py @@ -1,16 +1,16 @@ -from PyQt4 import QtGui, Qt, QtCore -from PyQt4.QtGui import QLabel -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QToolBar -from PyQt4.QtGui import QPushButton -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QTextEdit -from PyQt4.QtCore import QMimeData -from PyQt4.QtGui import QDrag -from PyQt4.QtGui import QPixmap -from PyQt4.QtGui import QPainter -from PyQt4.QtGui import QFont -from PyQt4.QtCore import QPoint +from PyQt5 import QtGui, Qt, QtCore +from PyQt5.QtGui import QLabel +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QToolBar +from PyQt5.QtGui import QPushButton +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QTextEdit +from PyQt5.QtCore import QMimeData +from PyQt5.QtGui import QDrag +from PyQt5.QtGui import QPixmap +from PyQt5.QtGui import QPainter +from PyQt5.QtGui import QFont +from PyQt5.QtCore import QPoint import moose import moogli diff --git a/src/plugins/PreferencesPresenter.py b/src/plugins/PreferencesPresenter.py index be90800..ff07cda 100644 --- a/src/plugins/PreferencesPresenter.py +++ b/src/plugins/PreferencesPresenter.py @@ -1,11 +1,11 @@ import sys import moose -from PyQt4 import Qt, QtGui, QtCore -from PyQt4.QtCore import QObject -from PyQt4.QtCore import pyqtSignal -from PyQt4.QtGui import QColor -from PyQt4.QtGui import QGroupBox +from PyQt5 import Qt, QtGui, QtCore +from PyQt5.QtCore import QObject +from PyQt5.QtCore import pyqtSignal +from PyQt5.QtGui import QColor +from PyQt5.QtGui import QGroupBox from moosegui.plugins.PreferencesView import PreferencesView from moosegui.plugins.defines import * import json diff --git a/src/plugins/PreferencesView.py b/src/plugins/PreferencesView.py index ff4a711..3c0ee36 100644 --- a/src/plugins/PreferencesView.py +++ b/src/plugins/PreferencesView.py @@ -1,21 +1,21 @@ -import PyQt4 -from PyQt4 import Qt, QtGui, QtCore -from PyQt4.QtCore import pyqtSignal -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QButtonGroup -from PyQt4.QtGui import QRadioButton -from PyQt4.QtGui import QVBoxLayout -from PyQt4.QtGui import QLabel -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QLineEdit -from PyQt4.QtGui import QDoubleValidator -from PyQt4.QtGui import QComboBox -from PyQt4.QtGui import QTabWidget -from PyQt4.QtGui import QPushButton -from PyQt4.QtGui import QColorDialog -from PyQt4.QtGui import QColor -from PyQt4.QtGui import QSizePolicy +import PyQt5 +from PyQt5 import Qt, QtGui, QtCore +from PyQt5.QtCore import pyqtSignal +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QButtonGroup +from PyQt5.QtGui import QRadioButton +from PyQt5.QtGui import QVBoxLayout +from PyQt5.QtGui import QLabel +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QLineEdit +from PyQt5.QtGui import QDoubleValidator +from PyQt5.QtGui import QComboBox +from PyQt5.QtGui import QTabWidget +from PyQt5.QtGui import QPushButton +from PyQt5.QtGui import QColorDialog +from PyQt5.QtGui import QColor +from PyQt5.QtGui import QSizePolicy import sys class PreferencesView(QTabWidget): @@ -72,7 +72,7 @@ def closeEvent(self, event): def create(self): # Set up the column titles self.setUsesScrollButtons(True) - self.setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) self.addTab( self.createChemicalSettingsTab(),"Chemical") self.addTab( self.createElectricalSettingsTab(),"Electrical") @@ -102,7 +102,7 @@ def createChemicalSettingsTab(self): for solver in self.chemicalSolvers: layout.addWidget(self.chemicalSolvers[solver], 5 + index, 1) self.chemicalSolver.addButton(self.chemicalSolvers[solver], index) - self.chemicalSolvers[solver].setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.chemicalSolvers[solver].setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) index += 1 self.chemicalSolver.setExclusive(True) @@ -128,7 +128,7 @@ def createElectricalSettingsTab(self): electricalSettingsTab.setTabShape(QTabWidget.Triangular) electricalSettingsTab.setDocumentMode(True) electricalSettingsTab.setUsesScrollButtons(True) - electricalSettingsTab.setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + electricalSettingsTab.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) return electricalSettingsTab def createElectricalSimulationSettingsTab(self): @@ -155,7 +155,7 @@ def createElectricalSimulationSettingsTab(self): for solver in self.electricalSolvers: # layout.addWidget(self.electricalSolvers[solver], 5 + index, 1) self.electricalSolver.addButton(self.electricalSolvers[solver], index) - self.electricalSolvers[solver].setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.electricalSolvers[solver].setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) index += 1 self.electricalSolver.setExclusive(True) @@ -179,7 +179,7 @@ def createElectricalSimulationVisualizationTab(self): self.electricalBaseColorDialog.setOption(QColorDialog.ShowAlphaChannel, True) layout.addWidget(self.electricalBaseColorButton, 2, 1) self.electricalBaseColorButton.clicked.connect(self.electricalBaseColorDialog.show) - self.electricalBaseColorButton.setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.electricalBaseColorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) self.electricalBaseColorDialog.colorSelected.connect( lambda color: self.electricalBaseColorButton.setStyleSheet( "QPushButton {" @@ -195,7 +195,7 @@ def createElectricalSimulationVisualizationTab(self): self.electricalPeakColorDialog.setOption(QColorDialog.ShowAlphaChannel, True) layout.addWidget(self.electricalPeakColorButton, 4, 1) self.electricalPeakColorButton.clicked.connect(self.electricalPeakColorDialog.show) - self.electricalPeakColorButton.setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.electricalPeakColorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) self.electricalPeakColorDialog.colorSelected.connect( lambda color: self.electricalPeakColorButton.setStyleSheet( "QPushButton {" @@ -208,7 +208,7 @@ def createElectricalSimulationVisualizationTab(self): self.electricalBackgroundColorDialog.setOption(QColorDialog.ShowAlphaChannel, True) layout.addWidget(self.electricalBackgroundColorButton, 5, 1) self.electricalBackgroundColorButton.clicked.connect(self.electricalBackgroundColorDialog.show) - self.electricalBackgroundColorButton.setFocusPolicy(PyQt4.QtCore.Qt.NoFocus) + self.electricalBackgroundColorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) self.electricalBackgroundColorDialog.colorSelected.connect( lambda color: self.electricalBackgroundColorButton.setStyleSheet( "QPushButton {" diff --git a/src/plugins/Runner.py b/src/plugins/Runner.py index 9708679..c541e41 100644 --- a/src/plugins/Runner.py +++ b/src/plugins/Runner.py @@ -1,9 +1,9 @@ import math import moose -from PyQt4 import Qt, QtGui, QtCore -from PyQt4.QtCore import QTimer -from PyQt4.QtCore import QObject -from PyQt4.QtCore import pyqtSignal +from PyQt5 import Qt, QtGui, QtCore +from PyQt5.QtCore import QTimer +from PyQt5.QtCore import QObject +from PyQt5.QtCore import pyqtSignal class Runner(QObject): """Helper class to control simulation execution diff --git a/src/plugins/buildkkit.py b/src/plugins/buildkkit.py index b073d83..bcc24f3 100644 --- a/src/plugins/buildkkit.py +++ b/src/plugins/buildkkit.py @@ -6,7 +6,7 @@ import pickle import posixpath -from PyQt4 import QtGui, QtCore, Qt +from PyQt5 import QtGui, QtCore, Qt from moose import * import networkx as nx @@ -477,7 +477,7 @@ def cplxUpdatearrow(self,srcdes): # srcdes which is 'EnzItem' from this,get ChildItems are retrived (b'cos cplx is child of zombieEnz) #And cplxItem is passed for updatearrow - #Note: Here at this point enzItem has just one child which is cplxItem and childItems returns, PyQt4.QtGui.QGraphicsEllipseItem,CplxItem + #Note: Here at this point enzItem has just one child which is cplxItem and childItems returns, PyQt5.QtGui.QGraphicsEllipseItem,CplxItem #Assuming CplxItem is always[1], but still check if not[0], if something changes in structure one need to keep an eye. if (srcdes.childItems()[1],CplxItem): self.updateArrow(srcdes.childItems()[1]) diff --git a/src/plugins/default.py b/src/plugins/default.py index 8897cee..095838e 100644 --- a/src/plugins/default.py +++ b/src/plugins/default.py @@ -78,19 +78,19 @@ from moosegui.global_constants import preferences from moosegui.plugins.setsolver import * -from PyQt4 import QtCore, QtGui -from PyQt4.QtCore import Qt -from PyQt4.QtGui import QDoubleValidator -from PyQt4.QtGui import QToolBar -from PyQt4.QtGui import QToolButton -from PyQt4.QtGui import QLabel -from PyQt4.QtGui import QIcon -from PyQt4.QtGui import QLineEdit -from PyQt4.QtGui import QErrorMessage -from PyQt4.QtGui import QSizeGrip -from PyQt4.QtGui import QIcon -from PyQt4.QtGui import QPixmap -from PyQt4.QtGui import QAction +from PyQt5 import QtCore, QtGui +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QDoubleValidator +from PyQt5.QtGui import QToolBar +from PyQt5.QtGui import QToolButton +from PyQt5.QtGui import QLabel +from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QLineEdit +from PyQt5.QtGui import QErrorMessage +from PyQt5.QtGui import QSizeGrip +from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QPixmap +from PyQt5.QtGui import QAction from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar #from EventBlocker import EventBlocker # from PlotNavigationToolbar import PlotNavigationToolbar @@ -717,12 +717,12 @@ def setModelType(self): legend = None canvas = None -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QSizeGrip -from PyQt4.QtGui import QLayout -from PyQt4.QtGui import QScrollArea -from PyQt4.QtGui import QMenu -from PyQt4.QtCore import pyqtSlot,SIGNAL,SLOT, Signal, pyqtSignal +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QSizeGrip +from PyQt5.QtGui import QLayout +from PyQt5.QtGui import QScrollArea +from PyQt5.QtGui import QMenu +from PyQt5.QtCore import pyqtSlot,SIGNAL,SLOT, Signal, pyqtSignal class PlotWidget(QWidget): """A wrapper over CanvasWidget to handle additional MOOSE-specific diff --git a/src/plugins/kkit.py b/src/plugins/kkit.py index 4bc52c4..1b5c491 100644 --- a/src/plugins/kkit.py +++ b/src/plugins/kkit.py @@ -24,7 +24,7 @@ import math import sys -from PyQt4 import QtGui, QtCore, Qt +from PyQt5 import QtGui, QtCore, Qt from default import * from moose import * from moose import SBML @@ -37,9 +37,9 @@ from kkitOrdinateUtil import * import posixpath from mtoolbutton import MToolButton -from PyQt4.QtGui import QWidget -from PyQt4.QtGui import QGridLayout -from PyQt4.QtGui import QColor +from PyQt5.QtGui import QWidget +from PyQt5.QtGui import QGridLayout +from PyQt5.QtGui import QColor import RunWidget from os.path import expanduser #from setsolver import * diff --git a/src/plugins/kkitCalcArrow.py b/src/plugins/kkitCalcArrow.py index ce850af..83764ba 100644 --- a/src/plugins/kkitCalcArrow.py +++ b/src/plugins/kkitCalcArrow.py @@ -7,8 +7,8 @@ __status__ = "Development" __updated__ = "Jul 27 2017" -from PyQt4.QtGui import QPolygonF -from PyQt4.QtCore import QLineF,QPointF +from PyQt5.QtGui import QPolygonF +from PyQt5.QtCore import QLineF,QPointF from math import sin,cos,atan2,radians from kkitQGraphics import PoolItem #, ReacItem,EnzItem,CplxItem,ComptItem diff --git a/src/plugins/kkitOrdinateUtil.py b/src/plugins/kkitOrdinateUtil.py index d754ca7..c9f5912 100644 --- a/src/plugins/kkitOrdinateUtil.py +++ b/src/plugins/kkitOrdinateUtil.py @@ -23,7 +23,7 @@ import numpy as np import networkx as nx from kkitUtil import getRandColor,colorCheck,findCompartment, findGroup, findGroup_compt, mooseIsInstance -from PyQt4.QtGui import QColor +from PyQt5.QtGui import QColor import re import moose._moose as moose diff --git a/src/plugins/kkitQGraphics.py b/src/plugins/kkitQGraphics.py index 56c5965..c0567aa 100644 --- a/src/plugins/kkitQGraphics.py +++ b/src/plugins/kkitQGraphics.py @@ -14,9 +14,9 @@ #import sys #sys.path.insert(0, '/home/harsha/trunk/gui') import config -from PyQt4 import QtGui, QtCore, Qt +from PyQt5 import QtGui, QtCore, Qt from moose import * -from PyQt4.QtGui import QPixmap, QImage, QGraphicsPixmapItem +from PyQt5.QtGui import QPixmap, QImage, QGraphicsPixmapItem from constants import * from os import path diff --git a/src/plugins/kkitUtil.py b/src/plugins/kkitUtil.py index 40d004f..bf09411 100644 --- a/src/plugins/kkitUtil.py +++ b/src/plugins/kkitUtil.py @@ -18,8 +18,8 @@ ''' from moose import Annotator,element,ChemCompt from kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,GRPItem,ComptItem -from PyQt4 import QtCore,QtGui,QtSvg -from PyQt4.QtGui import QColor +from PyQt5 import QtCore,QtGui,QtSvg +from PyQt5.QtGui import QColor from moosegui import config import numpy as np diff --git a/src/plugins/kkitViewcontrol.py b/src/plugins/kkitViewcontrol.py index 3defe95..31a262c 100644 --- a/src/plugins/kkitViewcontrol.py +++ b/src/plugins/kkitViewcontrol.py @@ -36,11 +36,11 @@ from moosegui.plugins.kkitUtil import * from moosegui.plugins.setsolver import * -from PyQt4.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem -from PyQt4.QtCore import pyqtSignal +from PyQt5.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem +from PyQt5.QtCore import pyqtSignal from kkitUtil import * #from setsolver import * -from PyQt4 import QtSvg +from PyQt5 import QtSvg from moose import utils from functools import partial @@ -92,8 +92,8 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem): "clone": None, "move": None, "delete": None} - self.setHorizontalScrollBarPolicy(PyQt4.QtCore.Qt.ScrollBarAlwaysOn) - self.setVerticalScrollBarPolicy(PyQt4.QtCore.Qt.ScrollBarAlwaysOn) + self.setHorizontalScrollBarPolicy(PyQt5.QtCore.Qt.ScrollBarAlwaysOn) + self.setVerticalScrollBarPolicy(PyQt5.QtCore.Qt.ScrollBarAlwaysOn) def setRefWidget(self, path): self.viewBaseType = path diff --git a/src/plugins/modelBuild.py b/src/plugins/modelBuild.py index e6705d0..2de4909 100644 --- a/src/plugins/modelBuild.py +++ b/src/plugins/modelBuild.py @@ -1,4 +1,4 @@ -import PyQt4 +import PyQt5 import moose from moosegui.plugins.kkitQGraphics import * diff --git a/src/plugins/test_plotwidget.py b/src/plugins/test_plotwidget.py index 360b4f0..f2fbf4b 100644 --- a/src/plugins/test_plotwidget.py +++ b/src/plugins/test_plotwidget.py @@ -47,8 +47,8 @@ import sys import os import numpy as np -from PyQt4 import QtGui, QtCore -from PyQt4.Qt import Qt +from PyQt5 import QtGui, QtCore +from PyQt5.Qt import Qt from matplotlib import mlab from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas diff --git a/src/scishell.py b/src/scishell.py index 30f5db3..95f349e 100644 --- a/src/scishell.py +++ b/src/scishell.py @@ -27,10 +27,10 @@ import os, sys -from PyQt4 import QtCore, QtGui -from PyQt4.QtCore import Qt +from PyQt5 import QtCore, QtGui +from PyQt5.QtCore import Qt -from PyQt4.Qsci import QsciScintilla, QsciLexerPython, QsciAPIs +from PyQt5.Qsci import QsciScintilla, QsciLexerPython, QsciAPIs class History: """ Backup and restore history between sessions diff --git a/src/shell.py b/src/shell.py index 4fecc71..22c4336 100644 --- a/src/shell.py +++ b/src/shell.py @@ -27,13 +27,13 @@ import os, sys -from PyQt4 import QtCore, QtGui -from PyQt4.QtGui import QTextEdit, QTextCursor -from PyQt4.QtCore import Qt +from PyQt5 import QtCore, QtGui +from PyQt5.QtGui import QTextEdit, QTextCursor +from PyQt5.QtCore import Qt # In python3, QString is just python strings. try: - from PyQt4.QtCore import QString + from PyQt5.QtCore import QString except ImportError as e: # we are using Python3 so QString is not defined QtCore.QString = type("") diff --git a/src/sidebar.py b/src/sidebar.py index 6a42eba..a977889 100644 --- a/src/sidebar.py +++ b/src/sidebar.py @@ -19,13 +19,13 @@ import sys import os from . import SettingsDialog -from PyQt4 import QtGui, Qt -from PyQt4.QtGui import QDialog -from PyQt4.QtGui import QHBoxLayout -from PyQt4.QtGui import QPixmap -from PyQt4.QtGui import QIcon -from PyQt4.QtGui import QPushButton -from PyQt4.QtGui import QAction +from PyQt5 import QtGui, Qt +from PyQt5.QtGui import QDialog +from PyQt5.QtGui import QHBoxLayout +from PyQt5.QtGui import QPixmap +from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QPushButton +from PyQt5.QtGui import QAction ICON_DIRECTORY = "../icons" HAND_ICON_FILENAME = "hand.png" diff --git a/src/utils.py b/src/utils.py index d281ef8..3687184 100644 --- a/src/utils.py +++ b/src/utils.py @@ -47,7 +47,7 @@ import shutil import os -from PyQt4 import QtGui, QtCore +from PyQt5 import QtGui, QtCore def resizeWidthToContents(lineEdit): """Resize a QLineEdit object to fit its content.""" From 3253d57eb58a444e2e4d187eed2400886d62300d Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 19:42:44 +0530 Subject: [PATCH 40/66] Remove Upi and Harsha email from build notifications. --- .travis.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0856801..751c1d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,23 +2,16 @@ notifications: email: recipients: - dilawar.s.rajput@gmail.com - - upi.bhalla@gmail.com - - hrani@ncbs.res.in install: - - wget http://download.opensuse.org/repositories/home:moose/xUbuntu_14.04/Release.key - - sudo apt-key add - < Release.key - - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/moose/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/moose.list" - sudo apt-get -y update - sudo apt-get -y --force-yes install python3 python-pip - - sudo apt-get -y --force-yes install moose - - sudo -H pip install python-libsbml + - sudo pip install python-libsbml + - sudo pip install pymoose --pre --upgrade script: - # Making sure no python incompatible file is added. - - python -m compileall -q . - - python -c 'import moose' - - #python -c 'import moogli' - - # More tests here for gui. - - python setup.py install --user + - python3 -m compileall -q . + - python3 -c 'import moose' + - python3 setup.py install --user From 276cb03d0adfacc6dcc683c6a8bae0a29bb6966d Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 20:10:23 +0530 Subject: [PATCH 41/66] [skip ci] temp commit. --- Makefile | 11 +++++++- __init__.py | 1 - setup.py | 7 +++-- src/MWindow.py | 74 +++++-------------------------------------------- src/__init__.py | 12 -------- src/config.py | 54 ++---------------------------------- src/mgui.py | 9 +++--- src/mplugin.py | 57 +++++-------------------------------- 8 files changed, 36 insertions(+), 189 deletions(-) delete mode 100644 __init__.py diff --git a/Makefile b/Makefile index c98d486..4d977e4 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,13 @@ -all : check +all : check build check : python -m compileall -q . + +build : + python setup.py sdist bdist + +install : + python -m pip install . --upgrade --user + +test: install + ( cd /tmp && moosegui ) diff --git a/__init__.py b/__init__.py deleted file mode 100644 index 6d6c488..0000000 --- a/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from moosegui.moosegui import * diff --git a/setup.py b/setup.py index 19019a9..8a23fdf 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,10 @@ demofiles = [] -demoDir = './demos' +version_ = '0.1.0' + +demoDir = os.path.join(os.path.dirname(__file__), 'demos') + for d, sd, fs in os.walk( demoDir ): for f in fs: filepath = os.path.join( d, f ).replace( demoDir, '' ) @@ -24,7 +27,7 @@ setup( name = "moosegui", - version = "0.1.0", + version = version_, description = "Graphical User Interface of MOOSE simulator", long_description = open( 'README.md' ).read(), packages = [ "moosegui", 'moosegui.plugins', "moosegui.demos" diff --git a/src/MWindow.py b/src/MWindow.py index 3dce1e5..ab09140 100644 --- a/src/MWindow.py +++ b/src/MWindow.py @@ -1,82 +1,21 @@ -# mgui.py --- -# -# Filename: mgui.py -# Description: +# -*- coding: utf-8 -*- + # Author: "Subhasis", "HarshaRani","Aviral Goel" # Maintainer: HarshaRani # Created: Mon Nov 12 09:38:09 2012 (+0530) -# Version: -# Last-Updated: Fri Sep 20 00:54:33 2018 (+0530) -# By: Harsha -# Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# The gui driver -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -'''' -2018 -Sep 20 : Lot of duplicate code removed - Function call made when filename or filepath is passed in command line -Sep 19 : From the cmd line if a directory is passed, then Gui opens up the dialog file for the folder, - window is resized to maximum width, clean warning message if filename or path is wrong - Added model info QmessageBox -Sep 7 : popup is closed if exist -2017 -Aug 31 : Pass file from the command to load into gui - : added dsolver in disableModel function is used to unset the solver for the model - into moose-gui which are not to be run. - -Oct 5 : clean up with round trip of dialog_exe - -''' -# Code: + import imp import inspect import traceback import re from collections import defaultdict, OrderedDict - from PyQt5 import QtGui, QtCore, Qt from PyQt5 import Qt, QtCore, QtGui from PyQt5.QtGui import * -from MdiArea import MdiArea -import os -from moose.chemUtil.add_Delete_ChemicalSolver import * -#from setsolver import * -from defines import * -from collections import OrderedDict +# moose import moose +from moose.chemUtil.add_Delete_ChemicalSolver import * from moose import utils from moosegui import config @@ -91,9 +30,10 @@ from moosegui.MdiArea import MdiArea from moosegui.plugins.setsolver import * from moosegui.plugins.defines import * +from moosegui.MdiArea import MdiArea +from moosegui.defines import * import moosegui.examples as demos - # Logger _logger = config._logger diff --git a/src/__init__.py b/src/__init__.py index 0951f39..e69de29 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,12 +0,0 @@ -from .mgui import main - -# Hack. In python3, Qt4 does not have QString object. -from PyQt5 import QtCore -try: - from PyQt5.QtCore import QString -except ImportError: - # we are using Python3 so QString is not defined. Also QVariant is a mapped - # type. - QtCore.QString = type("") - # In python3, QtCore.QVariant is just a string - QtCore.QVariant = type( "" ) diff --git a/src/config.py b/src/config.py index b783ddf..4dd985c 100644 --- a/src/config.py +++ b/src/config.py @@ -1,59 +1,17 @@ -# config.py --- -# +# -*- coding: utf-8 -*- + # Filename: config.py # Description: # Author: Subhasis Ray # Maintainer: # Created: Sat Feb 13 16:07:56 2010 (+0530) # Version: -# Last-Updated: Wed Nov 12 19:10:08 2014 (+0530) -# By: Subhasis Ray -# Update #: 369 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Provides keys for accessing per-user settings. -# Provides initialization of several per-user variables for MooseGUI. -# As part of initialization, creates `~/.moose` and `~/moose` -# directories. -# -# - -# Change log: -# -# 2012-09-22 13:49:36 (+0530) Subha: cleaned up the initialization -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import os import sys import tempfile import logging import errno -from PyQt5.Qt import Qt from PyQt5 import QtGui, QtCore # Logger @@ -123,12 +81,7 @@ def qvalue( qsetting, key ): """ Return value as unicode from QSetting object. Calling toString is not compatible with python3. """ - qval = qsetting.value( key ) - try: - val = qval.toString( ) - except Exception as e: - val = str(qval) - return unicode(val) + return qsetting.value( key ) class MooseSetting(dict): @@ -188,5 +141,4 @@ def values(self): def itervalues(self): return ( qvalue(self.qsettings, key) for key in self.qsettings.allKeys()) - settings = MooseSetting() diff --git a/src/mgui.py b/src/mgui.py index 8915b67..c74dc7b 100644 --- a/src/mgui.py +++ b/src/mgui.py @@ -9,12 +9,13 @@ import sys import signal +from PyQt5.QtWidgets import QApplication from PyQt5 import QtGui, QtCore, Qt from PyQt5 import Qt, QtCore, QtGui import posixpath -from . import config -from . import MWindow as MWindow +from moosegui import config +from moosegui import MWindow as MWindow app_ = None @@ -26,7 +27,7 @@ def signal_handler( *args ): def main(): # create the GUI application global app_ - app_ = QtGui.QApplication(sys.argv) + app_ = QApplication(sys.argv) signal.signal( signal.SIGINT, signal_handler ) QtGui.qApp = app_ mWindow = MWindow.MWindow() @@ -39,5 +40,3 @@ def main(): if __name__ == '__main__': main() -# -# moosegui.py ends here diff --git a/src/mplugin.py b/src/mplugin.py index 29281c6..687a03e 100644 --- a/src/mplugin.py +++ b/src/mplugin.py @@ -1,51 +1,13 @@ -# mplugin.py --- -# +# -*- coding: utf-8 -*- + # Filename: mplugin.py # Description: # Author: # Maintainer: # Created: Tue Oct 2 17:25:41 2012 (+0530) -# Version: -# Last-Updated: Thu Jul 18 10:51:48 2013 (+0530) -# By: subha -# Update #: 297 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This is to be the base class for all MOOSE GUI plugins. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: - -from PyQt5 import QtGui,QtCore,Qt + +from PyQt5 import QtGui, QtCore, Qt +from PyQt5.QtWidgets import QWidget import moose class MoosePluginBase(QtCore.QObject): @@ -250,7 +212,7 @@ def __init__(self, plugin, *args): super(RunBase, self).__init__(plugin) -class EditorWidgetBase(QtGui.QWidget): +class EditorWidgetBase(QWidget): """Base class for central widget displayed in editor view. The widget should display the model components in the tree rooted @@ -268,7 +230,7 @@ class EditorWidgetBase(QtGui.QWidget): """ editObject = QtCore.pyqtSignal('PyQt_PyObject') def __init__(self, *args): - QtGui.QWidget.__init__(self, *args) + QWidget.__init__(self, *args) self.modelRoot = '/' self._menus = [] self._toolBars = [] @@ -347,8 +309,3 @@ def sizeHint(self): def getCurrentMobj(self): raise NotImplementedError('should be reimplemented in subclass') - - - -# -# mplugin.py ends here From 859998f698ec754dd50fbdd94d05e51cbfd59835 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 21:18:30 +0530 Subject: [PATCH 42/66] segv finally ;-) --- Makefile | 6 +- {src => moosegui}/GenericTypes.py | 0 {src => moosegui}/MWindow.py | 119 +++++++++--------- {src => moosegui}/MdiArea.py | 11 +- {src => moosegui}/PlotWidgetContainer.py | 0 {src => moosegui}/RunWidget.py | 0 {src => moosegui}/SettingsDialog.py | 0 {src => moosegui}/TooltipInfo.py | 0 {src => moosegui}/__init__.py | 0 {src => moosegui}/biomodelsclient.py | 51 +------- {src => moosegui}/checkcombobox.py | 0 {src => moosegui}/colormaps/fire | 0 {src => moosegui}/colormaps/greenfire | 0 {src => moosegui}/colormaps/grey | 0 {src => moosegui}/colormaps/heat | 0 {src => moosegui}/colormaps/jet | 0 {src => moosegui}/colormaps/rainbow2.pkl | 0 {src => moosegui}/colormaps/redhot | 0 {src => moosegui}/config.py | 0 {src => moosegui}/configwidget.py | 0 {src => moosegui}/defaults.py | 0 {src => moosegui}/examples.py | 0 {src => moosegui}/global_constants.py | 0 {src => moosegui}/icons/BufPool.png | Bin {src => moosegui}/icons/CubeMesh.png | Bin {src => moosegui}/icons/CylMesh.png | Bin {src => moosegui}/icons/Enz.png | Bin {src => moosegui}/icons/FuncPool.png | Bin {src => moosegui}/icons/Function.png | Bin {src => moosegui}/icons/MMenz.png | Bin {src => moosegui}/icons/Pool.png | Bin {src => moosegui}/icons/QMdiBackground.png | Bin {src => moosegui}/icons/Reac.png | Bin {src => moosegui}/icons/StimulusTable.png | Bin {src => moosegui}/icons/SumFunc.png | Bin {src => moosegui}/icons/add.png | Bin {src => moosegui}/icons/add_graph.png | Bin {src => moosegui}/icons/arrow.png | Bin {src => moosegui}/icons/arrow_undo.png | Bin {src => moosegui}/icons/clone.svg | 0 {src => moosegui}/icons/connection.png | Bin {src => moosegui}/icons/continue.png | Bin {src => moosegui}/icons/delete.svg | 0 {src => moosegui}/icons/delete_graph.png | Bin {src => moosegui}/icons/grid.png | Bin {src => moosegui}/icons/hand.png | Bin {src => moosegui}/icons/help.png | Bin {src => moosegui}/icons/hopfield.png | Bin {src => moosegui}/icons/list.png | Bin {src => moosegui}/icons/moose_icon.png | Bin {src => moosegui}/icons/moose_icon_64x64.png | Bin {src => moosegui}/icons/moose_icon_large.png | Bin {src => moosegui}/icons/move.svg | 0 {src => moosegui}/icons/plot.svg | 0 {src => moosegui}/icons/reset.png | Bin {src => moosegui}/icons/run.png | Bin {src => moosegui}/icons/runtime.png | Bin {src => moosegui}/icons/squid.png | Bin {src => moosegui}/icons/stop.png | Bin ...straight_connector_with_filled_circles.png | Bin {src => moosegui}/icons/wrench.png | Bin {src => moosegui}/loaderdialog.py | 48 +------ {src => moosegui}/mexception.py | 0 {src => moosegui}/mgui.py | 0 {src => moosegui}/mload.py | 70 +++-------- {src => moosegui}/mplot.py | 0 {src => moosegui}/mplugin.py | 0 {src => moosegui}/msearch.py | 0 {src => moosegui}/mtoolbutton.py | 0 {src => moosegui}/mtree.py | 0 {src => moosegui}/mtypes.py | 0 {src => moosegui}/neuroextractor.py | 0 {src => moosegui}/newmodeldialog.py | 21 ++-- {src => moosegui}/objectedit.py | 90 ++----------- {src => moosegui}/plugins/NeuroKit.py | 0 {src => moosegui}/plugins/NeuroKitEditor.py | 0 {src => moosegui}/plugins/NeuroKitRunner.py | 0 .../plugins/NeuroKitVisualizer.py | 0 .../plugins/PreferencesPresenter.py | 0 {src => moosegui}/plugins/PreferencesView.py | 0 {src => moosegui}/plugins/README | 0 {src => moosegui}/plugins/Runner.py | 0 {src => moosegui}/plugins/__init__.py | 0 {src => moosegui}/plugins/buildkkit.py | 0 moosegui/plugins/constants.py | 24 ++++ .../plugins/datastore/preferences.json | 0 {src => moosegui}/plugins/default.py | 0 {src => moosegui}/plugins/defines.py | 0 {src => moosegui}/plugins/kkit.py | 0 {src => moosegui}/plugins/kkitCalcArrow.py | 0 {src => moosegui}/plugins/kkitOrdinateUtil.py | 0 {src => moosegui}/plugins/kkitQGraphics.py | 46 +++---- {src => moosegui}/plugins/kkitUtil.py | 0 {src => moosegui}/plugins/kkitViewcontrol.py | 0 {src => moosegui}/plugins/list.txt | 0 {src => moosegui}/plugins/modelBuild.py | 0 {src => moosegui}/plugins/setsolver.py | 0 {src => moosegui}/plugins/test_plotwidget.py | 0 {src => moosegui}/scishell.py | 0 {src => moosegui}/shell.py | 47 +++---- {src => moosegui}/sidebar.py | 0 {src => moosegui}/utils.py | 0 setup.py | 4 +- src/plugins/constants.py | 24 ---- 104 files changed, 191 insertions(+), 370 deletions(-) rename {src => moosegui}/GenericTypes.py (100%) rename {src => moosegui}/MWindow.py (93%) rename {src => moosegui}/MdiArea.py (76%) rename {src => moosegui}/PlotWidgetContainer.py (100%) rename {src => moosegui}/RunWidget.py (100%) rename {src => moosegui}/SettingsDialog.py (100%) rename {src => moosegui}/TooltipInfo.py (100%) rename {src => moosegui}/__init__.py (100%) rename {src => moosegui}/biomodelsclient.py (88%) rename {src => moosegui}/checkcombobox.py (100%) rename {src => moosegui}/colormaps/fire (100%) rename {src => moosegui}/colormaps/greenfire (100%) rename {src => moosegui}/colormaps/grey (100%) rename {src => moosegui}/colormaps/heat (100%) rename {src => moosegui}/colormaps/jet (100%) rename {src => moosegui}/colormaps/rainbow2.pkl (100%) rename {src => moosegui}/colormaps/redhot (100%) rename {src => moosegui}/config.py (100%) rename {src => moosegui}/configwidget.py (100%) rename {src => moosegui}/defaults.py (100%) rename {src => moosegui}/examples.py (100%) rename {src => moosegui}/global_constants.py (100%) rename {src => moosegui}/icons/BufPool.png (100%) rename {src => moosegui}/icons/CubeMesh.png (100%) rename {src => moosegui}/icons/CylMesh.png (100%) rename {src => moosegui}/icons/Enz.png (100%) rename {src => moosegui}/icons/FuncPool.png (100%) rename {src => moosegui}/icons/Function.png (100%) rename {src => moosegui}/icons/MMenz.png (100%) rename {src => moosegui}/icons/Pool.png (100%) rename {src => moosegui}/icons/QMdiBackground.png (100%) rename {src => moosegui}/icons/Reac.png (100%) rename {src => moosegui}/icons/StimulusTable.png (100%) rename {src => moosegui}/icons/SumFunc.png (100%) rename {src => moosegui}/icons/add.png (100%) rename {src => moosegui}/icons/add_graph.png (100%) rename {src => moosegui}/icons/arrow.png (100%) rename {src => moosegui}/icons/arrow_undo.png (100%) rename {src => moosegui}/icons/clone.svg (100%) rename {src => moosegui}/icons/connection.png (100%) rename {src => moosegui}/icons/continue.png (100%) rename {src => moosegui}/icons/delete.svg (100%) rename {src => moosegui}/icons/delete_graph.png (100%) rename {src => moosegui}/icons/grid.png (100%) rename {src => moosegui}/icons/hand.png (100%) rename {src => moosegui}/icons/help.png (100%) rename {src => moosegui}/icons/hopfield.png (100%) rename {src => moosegui}/icons/list.png (100%) rename {src => moosegui}/icons/moose_icon.png (100%) rename {src => moosegui}/icons/moose_icon_64x64.png (100%) rename {src => moosegui}/icons/moose_icon_large.png (100%) rename {src => moosegui}/icons/move.svg (100%) rename {src => moosegui}/icons/plot.svg (100%) rename {src => moosegui}/icons/reset.png (100%) rename {src => moosegui}/icons/run.png (100%) rename {src => moosegui}/icons/runtime.png (100%) rename {src => moosegui}/icons/squid.png (100%) rename {src => moosegui}/icons/stop.png (100%) rename {src => moosegui}/icons/straight_connector_with_filled_circles.png (100%) rename {src => moosegui}/icons/wrench.png (100%) rename {src => moosegui}/loaderdialog.py (68%) rename {src => moosegui}/mexception.py (100%) rename {src => moosegui}/mgui.py (100%) rename {src => moosegui}/mload.py (87%) rename {src => moosegui}/mplot.py (100%) rename {src => moosegui}/mplugin.py (100%) rename {src => moosegui}/msearch.py (100%) rename {src => moosegui}/mtoolbutton.py (100%) rename {src => moosegui}/mtree.py (100%) rename {src => moosegui}/mtypes.py (100%) rename {src => moosegui}/neuroextractor.py (100%) rename {src => moosegui}/newmodeldialog.py (84%) rename {src => moosegui}/objectedit.py (87%) rename {src => moosegui}/plugins/NeuroKit.py (100%) rename {src => moosegui}/plugins/NeuroKitEditor.py (100%) rename {src => moosegui}/plugins/NeuroKitRunner.py (100%) rename {src => moosegui}/plugins/NeuroKitVisualizer.py (100%) rename {src => moosegui}/plugins/PreferencesPresenter.py (100%) rename {src => moosegui}/plugins/PreferencesView.py (100%) rename {src => moosegui}/plugins/README (100%) rename {src => moosegui}/plugins/Runner.py (100%) rename {src => moosegui}/plugins/__init__.py (100%) rename {src => moosegui}/plugins/buildkkit.py (100%) create mode 100644 moosegui/plugins/constants.py rename {src => moosegui}/plugins/datastore/preferences.json (100%) rename {src => moosegui}/plugins/default.py (100%) rename {src => moosegui}/plugins/defines.py (100%) rename {src => moosegui}/plugins/kkit.py (100%) rename {src => moosegui}/plugins/kkitCalcArrow.py (100%) rename {src => moosegui}/plugins/kkitOrdinateUtil.py (100%) rename {src => moosegui}/plugins/kkitQGraphics.py (96%) rename {src => moosegui}/plugins/kkitUtil.py (100%) rename {src => moosegui}/plugins/kkitViewcontrol.py (100%) rename {src => moosegui}/plugins/list.txt (100%) rename {src => moosegui}/plugins/modelBuild.py (100%) rename {src => moosegui}/plugins/setsolver.py (100%) rename {src => moosegui}/plugins/test_plotwidget.py (100%) rename {src => moosegui}/scishell.py (100%) rename {src => moosegui}/shell.py (92%) rename {src => moosegui}/sidebar.py (100%) rename {src => moosegui}/utils.py (100%) delete mode 100644 src/plugins/constants.py diff --git a/Makefile b/Makefile index 4d977e4..8c7d51d 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,12 @@ check : build : python setup.py sdist bdist -install : +install : uninstall + git clean -fxd . python -m pip install . --upgrade --user test: install ( cd /tmp && moosegui ) + +uninstall : + python -m pip uninstall moosegui -y diff --git a/src/GenericTypes.py b/moosegui/GenericTypes.py similarity index 100% rename from src/GenericTypes.py rename to moosegui/GenericTypes.py diff --git a/src/MWindow.py b/moosegui/MWindow.py similarity index 93% rename from src/MWindow.py rename to moosegui/MWindow.py index ab09140..cff2d9b 100644 --- a/src/MWindow.py +++ b/moosegui/MWindow.py @@ -8,10 +8,13 @@ import inspect import traceback import re +import warnings +import code + from collections import defaultdict, OrderedDict from PyQt5 import QtGui, QtCore, Qt -from PyQt5 import Qt, QtCore, QtGui -from PyQt5.QtGui import * +from PyQt5.QtWidgets import QMainWindow, QAction, QApplication +from PyQt5.QtWidgets import QDockWidget # moose import moose @@ -31,7 +34,7 @@ from moosegui.plugins.setsolver import * from moosegui.plugins.defines import * from moosegui.MdiArea import MdiArea -from moosegui.defines import * +from moosegui.plugins.defines import * import moosegui.examples as demos # Logger @@ -54,7 +57,7 @@ def freeCursor(): app = QtGui.qApp app.restoreOverrideCursor() -class MWindow(QtGui.QMainWindow): +class MWindow(QMainWindow): """The main window for MOOSE GUI. This is the driver class that uses the mplugin API. mplugin based @@ -87,7 +90,7 @@ class MWindow(QtGui.QMainWindow): """ def __init__(self, *args): - QtGui.QMainWindow.__init__(self, *args) + QMainWindow.__init__(self, *args) self.setWindowTitle('MOOSE') self.pluginNames = None self.plugin = None @@ -107,13 +110,9 @@ def __init__(self, *args): self.setDockOptions(self.AnimatedDocks and self.AllowNestedDocks and self.AllowTabbedDocks) self.mdiArea = MdiArea() - self.quitAction = QtGui.QAction('&Quit', self) - self.connect(self.quitAction, QtCore.SIGNAL('triggered()'), self.quit) - self.quitAction.setShortcut( - QtGui.QApplication.translate( - "MainWindow", "Ctrl+Q" , None , QtGui.QApplication.UnicodeUTF8 - ) - ) + self.quitAction = QAction('&Quit', self) + self.quitAction.triggered.connect(self.quit) + self.quitAction.setShortcut("Ctrl+Q") self.getMyDockWidgets() self.setCentralWidget(self.mdiArea) @@ -147,7 +146,7 @@ def __init__(self, *args): freeCursor() reply = QtGui.QMessageBox.information(self,"Model file can not open","At present python file cann\'t be laoded into GUI",QtGui.QMessageBox.Ok) if reply == QtGui.QMessageBox.Ok: - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() return if not os.path.exists(cmdfilepath): self.setWindowState(QtCore.Qt.WindowMaximized) @@ -155,7 +154,7 @@ def __init__(self, *args): self.createPopup() reply = QtGui.QMessageBox.information(self,"Model file can not open","File Not Found \n \nCheck filename or filepath\n ",QtGui.QMessageBox.Ok) if reply == QtGui.QMessageBox.Ok: - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() return if os.path.isdir(cmdfilepath): self.setWindowState(QtCore.Qt.WindowMaximized) @@ -412,7 +411,7 @@ def getMyDockWidgets(self): Currently we only have shell for this.""" if not hasattr(self, 'dockWidgets') or self.dockWidgets is None: self.dockWidgets = {} - dockWidget = QtGui.QDockWidget('Python') + dockWidget = QDockWidget('Python') dockWidget.setWidget(self.getShellWidget()) self.dockWidgets[dockWidget] = True self.addDockWidget(Qt.Qt.BottomDockWidgetArea, dockWidget) @@ -425,9 +424,13 @@ def getMyDockWidgets(self): return list(self.dockWidgets.keys()) def getShellWidget(self): - """Create an instance of shell widget. This can be either a + """ + Create an instance of shell widget. This can be either a QSciQScintialla widget or a PyCute widget (extends QTextArea) - if the first is not available""" + if the first is not available. + """ + + # raise DeprecationWarning("ShellWidget is no longer supported.") if not hasattr(self, 'shellWidget') or self.shellWidget is None: self.shellWidget = get_shell_class()( code.InteractiveInterpreter() @@ -612,7 +615,7 @@ def setCurrentView(self, view): # Make dockwidgets from other views invisible and make those # from current view visible or add them if not already part of # main window. - dockWidgets = set([dockWidget for dockWidget in self.findChildren(QtGui.QDockWidget)]) + dockWidgets = set([dockWidget for dockWidget in self.findChildren(QDockWidget)]) for dockWidget in dockWidgets: if dockWidget not in self.dockWidgets: dockWidget.setVisible(False) @@ -655,13 +658,13 @@ def getFileMenu(self): self.fileMenu.clear() if not hasattr(self, 'newModelAction'): - self.newModelAction = QtGui.QAction('New', self) - self.newModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+N", None, QtGui.QApplication.UnicodeUTF8)) + self.newModelAction = QAction('New', self) + self.newModelAction.setShortcut(QApplication.translate("MainWindow", "Ctrl+N", None, QApplication.UnicodeUTF8)) self.connect(self.newModelAction, QtCore.SIGNAL('triggered()'), self.newModelDialogSlot) self.fileMenu.addAction(self.newModelAction) if not hasattr(self, 'loadModelAction'): - self.loadModelAction = QtGui.QAction('L&oad model', self) - self.loadModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) + self.loadModelAction = QAction('L&oad model', self) + self.loadModelAction.setShortcut(QApplication.translate("MainWindow", "Ctrl+O", None, QApplication.UnicodeUTF8)) self.connect(self.loadModelAction, QtCore.SIGNAL('triggered()'), self.loadModelDialogSlot) self.fileMenu.addAction(self.loadModelAction) @@ -685,63 +688,63 @@ def getFileMenu(self): for i in range(0,len(self.menuitems)): k = self.menuitems.popitem(0) if k[0] == "Fig2C (6s)": - self.Fig2Caction = QtGui.QAction('Fig2C (6s)', self) + self.Fig2Caction = QAction('Fig2C (6s)', self) self.Fig2Caction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py')) self.subMenu.addAction(self.Fig2Caction) elif k[0] == "Fig2D (35s)": - self.Fig2Daction = QtGui.QAction('Fig2D (35s)', self) + self.Fig2Daction = QAction('Fig2D (35s)', self) self.Fig2Daction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py')) self.subMenu.addAction(self.Fig2Daction) elif k[0] == "Fig2E (5s)": - self.Fig2Eaction = QtGui.QAction('Fig2E (5s)', self) + self.Fig2Eaction = QAction('Fig2E (5s)', self) self.Fig2Eaction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py')) self.subMenu.addAction(self.Fig2Eaction) elif k[0] == "Fig3B_Gssa (2s)": - self.Fig3B_Gssaaction = QtGui.QAction('Fig3B_Gssa (2s)', self) + self.Fig3B_Gssaaction = QAction('Fig3B_Gssa (2s)', self) self.Fig3B_Gssaaction.triggered.connect(lambda :self.run_genesis_script('../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g',"gssa")) self.subMenu.addAction(self.Fig3B_Gssaaction) elif k[0] == "Fig3C_Gsl (2s)": - self.Fig3C_Gslaction = QtGui.QAction('Fig3C_Gsl (2s)', self) + self.Fig3C_Gslaction = QAction('Fig3C_Gsl (2s)', self) self.Fig3C_Gslaction.triggered.connect(lambda :self.run_genesis_script('../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g',"gsl")) self.subMenu.addAction(self.Fig3C_Gslaction) elif k[0] == "Fig3D (1s)": - self.Fig3Daction = QtGui.QAction('Fig3D (1s)', self) + self.Fig3Daction = QAction('Fig3D (1s)', self) self.Fig3Daction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py')) self.subMenu.addAction(self.Fig3Daction) elif k[0] == "Fig4B (10s)": - self.Fig4Baction = QtGui.QAction('Fig4B (10s)', self) + self.Fig4Baction = QAction('Fig4B (10s)', self) self.Fig4Baction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py')) self.subMenu.addAction(self.Fig4Baction) elif k[0] == "Fig4K": - self.Fig4Kaction = QtGui.QAction('Fig4K', self) + self.Fig4Kaction = QAction('Fig4K', self) self.Fig4Kaction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py')) self.subMenu.addAction(self.Fig4Kaction) elif k[0] == "Fig5A (20s)": - self.Fig5Aaction = QtGui.QAction('Fig5A (20s)', self) + self.Fig5Aaction = QAction('Fig5A (20s)', self) self.Fig5Aaction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py')) self.subMenu.addAction(self.Fig5Aaction) elif k[0] == "Fig5BCD (240s)": - self.Fig5BCDaction = QtGui.QAction('Fig5BCD (240s)', self) + self.Fig5BCDaction = QAction('Fig5BCD (240s)', self) self.Fig5BCDaction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py')) self.subMenu.addAction(self.Fig5BCDaction) elif k[0] == "Fig6A (60s)": - self.Fig6Aaction = QtGui.QAction('Fig6A (60s)', self) + self.Fig6Aaction = QAction('Fig6A (60s)', self) self.Fig6Aaction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py')) self.subMenu.addAction(self.Fig6Aaction) elif k[0] == "ReducedModel (200s)": - self.ReducedModelaction = QtGui.QAction('ReducedModel (200s)', self) + self.ReducedModelaction = QAction('ReducedModel (200s)', self) self.ReducedModelaction.triggered.connect(lambda :self.run_python_script('../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py')) self.subMenu.addAction(self.ReducedModelaction) else: - self.Squidaction = QtGui.QAction('Squid', self) + self.Squidaction = QAction('Squid', self) self.Squidaction.triggered.connect(lambda :self.run_python_script('../moose-examples/squid/squid_demo.py')) self.subMenu.addAction(self.Squidaction) self.fileMenu.addMenu(self.subMenu) if not hasattr(self,'loadedModels'): - self.loadedModelAction = QtGui.QAction('Recently Loaded Models',self) + self.loadedModelAction = QAction('Recently Loaded Models',self) self.loadedModelAction.setCheckable(False) - #self.fileMenu.addAction(QtGui.QAction(self.loadedModelAction,checkable=True)) + #self.fileMenu.addAction(QAction(self.loadedModelAction,checkable=True)) if bool(self._loadedModels): self.fileMenu.addSeparator() self.fileMenu.addAction(self.loadedModelAction) @@ -751,8 +754,8 @@ def getFileMenu(self): self.fileMenu.addSeparator() if not hasattr(self,'connectBioModelAction'): - self.connectBioModelAction = QtGui.QAction('&Connect BioModels', self) - self.connectBioModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+B", None, QtGui.QApplication.UnicodeUTF8)) + self.connectBioModelAction = QAction('&Connect BioModels', self) + self.connectBioModelAction.setShortcut(QApplication.translate("MainWindow", "Ctrl+B", None, QApplication.UnicodeUTF8)) self.connect(self.connectBioModelAction, QtCore.SIGNAL('triggered()'), self.connectBioModel) self.fileMenu.addAction(self.connectBioModelAction) return self.fileMenu @@ -770,10 +773,10 @@ def getPluginsMenu(self): if (not hasattr(self, 'pluginsMenu')) or (self.pluginsMenu is None): self.pluginsMenu = QtGui.QMenu('&Plugins') mapper = QtCore.QSignalMapper(self) - pluginsGroup = QtGui.QActionGroup(self) + pluginsGroup = QActionGroup(self) pluginsGroup.setExclusive(True) for pluginName in self.getPluginNames(): - action = QtGui.QAction(pluginName, self) + action = QAction(pluginName, self) action.setObjectName(pluginName) action.setCheckable(True) mapper.setMapping(action, QtCore.QString(pluginName)) @@ -787,7 +790,7 @@ def getPluginsMenu(self): #openRootAction = self.defaultPluginMenu.addAction("/") #openRootAction.triggered.connect(lambda : self.setPlugin("default", "/") ) # if (not hasattr(self, 'loadedModelAction')) or (self.loadedModelAction is None) : - # self.loadedModelAction = QtGui.QAction("kkit",self) + # self.loadedModelAction = QAction("kkit",self) # self.loadedModelAction.addMenu('test') # self.pluginsMenu.addAction(self.loadedModelAction) # self.pluginsMenu.addMenu(self.insertkkitMenu) @@ -805,7 +808,7 @@ def getPluginsMenu(self): # for action in actions: # self.insertMenu.addAction(action) # self.connect(insertMapper, QtCore.SIGNAL('mapped(const QString&)'), self.tree.insertElementSlot) - # self.editAction = QtGui.QAction('Edit', self.treeMenu) + # self.editAction = QAction('Edit', self.treeMenu) # self.editAction.triggered.connect(self.editCurrentObjectSlot) # self.tree.elementInserted.connect(self.elementInsertedSlot) # self.treeMenu.addAction(self.editAction) @@ -868,11 +871,11 @@ def showSetDataRootDialog(self): def getViewActions(self): if (not hasattr(self, 'viewActions')) or (self.viewActions is None): - self.editorViewAction = QtGui.QAction('&Editor view', self) + self.editorViewAction = QAction('&Editor view', self) self.editorViewAction.triggered.connect(self.openEditorView) - #self.plotViewAction = QtGui.QAction('&Plot view', self) + #self.plotViewAction = QAction('&Plot view', self) #self.plotViewAction.triggered.connect(self.openPlotView) - self.runViewAction = QtGui.QAction('&Run view', self) + self.runViewAction = QAction('&Run view', self) self.runViewAction.triggered.connect(self.openRunView) #self.viewActions = [self.editorViewAction, self.plotViewAction, self.runViewAction] self.viewActions = [self.editorViewAction, self.runViewAction] @@ -886,13 +889,13 @@ def setSubWindowView(self): def getSubWindowActions(self): if not hasattr(self, 'subWindowActions') or self.subWindowActions is None: - self.tabbedViewAction = QtGui.QAction('&Tabbed view', self) + self.tabbedViewAction = QAction('&Tabbed view', self) self.tabbedViewAction.triggered.connect(self.setTabbedView) - self.subWindowViewAction = QtGui.QAction('&SubWindow view', self) + self.subWindowViewAction = QAction('&SubWindow view', self) self.subWindowViewAction.triggered.connect(self.setSubWindowView) - self.tileSubWindowsAction = QtGui.QAction('Ti&le subwindows', self) + self.tileSubWindowsAction = QAction('Ti&le subwindows', self) self.tileSubWindowsAction.triggered.connect(self.mdiArea.tileSubWindows) - self.cascadeSubWindowsAction = QtGui.QAction('&Cascade subwindows', self) + self.cascadeSubWindowsAction = QAction('&Cascade subwindows', self) self.cascadeSubWindowsAction.triggered.connect(self.mdiArea.cascadeSubWindows) self.subWindowActions = [self.tabbedViewAction, self.subWindowViewAction, @@ -905,17 +908,17 @@ def getDockWidgetsToggleActions(self): widgets """ - return [widget.toggleViewAction() for widget in self.findChildren(QtGui.QDockWidget)] + return [widget.toggleViewAction() for widget in self.findChildren(QDockWidget)] def getHelpActions(self): if (not hasattr(self, 'helpActions')) or (self.helpActions is None): - self.actionAbout = QtGui.QAction('About MOOSE', self) + self.actionAbout = QAction('About MOOSE', self) self.connect(self.actionAbout, QtCore.SIGNAL('triggered()'), self.showAboutMoose) - self.actionBuiltInDocumentation = QtGui.QAction('Built-in documentation', self) + self.actionBuiltInDocumentation = QAction('Built-in documentation', self) self.connect(self.actionBuiltInDocumentation, QtCore.SIGNAL('triggered()'), self.showBuiltInDocumentation) - self.actionGuiBug = QtGui.QAction('Report gui bug', self) + self.actionGuiBug = QAction('Report gui bug', self) self.connect(self.actionGuiBug, QtCore.SIGNAL('triggered()'), self.reportGuiBug) - self.actionCoreBug = QtGui.QAction('Report core bug', self) + self.actionCoreBug = QAction('Report core bug', self) self.connect(self.actionCoreBug, QtCore.SIGNAL('triggered()'), self.reportCoreBug) self.helpActions = [self.actionAbout, self.actionBuiltInDocumentation, self.actionCoreBug,self.actionGuiBug] return self.helpActions @@ -1162,7 +1165,7 @@ def displaymodelInfo(self,ret): reply = QtGui.QMessageBox.information(self,"Model Info","Model has : \n %s Compartment \t \n %s Group \t \n %s Pool \t \n %s Function \t \n %s reaction \t \n %s Enzyme \t \n %s StimulusTable" %(noOfCompt, grp, noOfPool, noOfFunc, noOfReac, noOfEnz, noOfStimtab)) if reply == QtGui.QMessageBox.Ok: - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() return def checkPlugin(self,dialog): @@ -1199,7 +1202,7 @@ def dialog_check(self,ret): reply = QtGui.QMessageBox.question(self, "python-libsbml is not found.","\n Read SBML is not possible.\n This can be installed using \n \n pip python-libsbml or \n apt-get install python-libsbml", QtGui.QMessageBox.Ok) if reply == QtGui.QMessageBox.Ok: - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() return valid, ret else: if ret['loaderror'] != "": @@ -1212,7 +1215,7 @@ def dialog_check(self,ret): ret,pluginName = self.checkPlugin(dialog) valid,ret = self.dialog_check(ret) else: - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() return valid,ret else: valid = True diff --git a/src/MdiArea.py b/moosegui/MdiArea.py similarity index 76% rename from src/MdiArea.py rename to moosegui/MdiArea.py index 0a4cf67..471e88e 100644 --- a/src/MdiArea.py +++ b/moosegui/MdiArea.py @@ -1,10 +1,11 @@ -from PyQt5 import Qt, QtCore, QtGui -from PyQt5.QtGui import * +from PyQt5.QtGui import QImage +from PyQt5.QtWidgets import QMdiArea import os -APPLICATION_BACKGROUND_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)) - , "icons/moose_icon_large.png" - ) +APPLICATION_BACKGROUND_PATH = os.path.join( + os.path.dirname(os.path.realpath(__file__)) + , "icons/moose_icon_large.png" + ) class MdiArea(QMdiArea): diff --git a/src/PlotWidgetContainer.py b/moosegui/PlotWidgetContainer.py similarity index 100% rename from src/PlotWidgetContainer.py rename to moosegui/PlotWidgetContainer.py diff --git a/src/RunWidget.py b/moosegui/RunWidget.py similarity index 100% rename from src/RunWidget.py rename to moosegui/RunWidget.py diff --git a/src/SettingsDialog.py b/moosegui/SettingsDialog.py similarity index 100% rename from src/SettingsDialog.py rename to moosegui/SettingsDialog.py diff --git a/src/TooltipInfo.py b/moosegui/TooltipInfo.py similarity index 100% rename from src/TooltipInfo.py rename to moosegui/TooltipInfo.py diff --git a/src/__init__.py b/moosegui/__init__.py similarity index 100% rename from src/__init__.py rename to moosegui/__init__.py diff --git a/src/biomodelsclient.py b/moosegui/biomodelsclient.py similarity index 88% rename from src/biomodelsclient.py rename to moosegui/biomodelsclient.py index 4faf516..4336df9 100644 --- a/src/biomodelsclient.py +++ b/moosegui/biomodelsclient.py @@ -1,6 +1,4 @@ -# biomodelsclient.py --- -# -# Filename: biomodelsclient.py +# -*- coding: utf-8 -*- # Description: # Author: Subhasis Ray # Maintainer: @@ -9,41 +7,6 @@ # Last-Updated: Wed Dec 11 15:47:32 2010 (+0530) # By: # Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This is a client for Biomodels database SOAP service. -# It imitates the SOAP client written in JAVA -# availabele at biomodels website. - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import os import pickle @@ -51,7 +14,7 @@ from suds.client import Client from suds.transport.http import HttpTransport as SudsHttpTransport -from . import config +from moosegui import config BIOMODELS_WSDL_URI = 'http://www.ebi.ac.uk/biomodels-main/services/BioModelsWebServices?wsdl' proxyOpts = dict() @@ -64,12 +27,6 @@ HttpProxy = os.environ[v.upper()].replace('http://', '') proxyOpts[k] = HttpProxy[0:HttpProxy.rfind('/',0,len(HttpProxy))] -''' -class HttpTransport(SudsHttpTransport): - """HttpTransport which properly obeys the ``*_proxy`` environment variables.""" - def u2handlers(self): - return [] -''' class BioModelsClient(Client): def __init__(self, WSDL_URI=BIOMODELS_WSDL_URI): """Initialize the client with the available queries listed in @@ -79,14 +36,14 @@ def __init__(self, WSDL_URI=BIOMODELS_WSDL_URI): """ try: Client.__init__(self, WSDL_URI,proxy=proxyOpts) - #Client.__init__(self, WSDL_URI,transport=HttpTransport()) except Exception as e: print(e) from PyQt5.Qt import Qt from PyQt5 import QtCore, QtGui +from PyQt5.QtWidgets import QDialog -class BioModelsClientWidget(QtGui.QDialog): +class BioModelsClientWidget(QDialog): """This is a widget with a Biomodels Client. It provides simple access to the biomodel queries and gives the user a view of the results""" diff --git a/src/checkcombobox.py b/moosegui/checkcombobox.py similarity index 100% rename from src/checkcombobox.py rename to moosegui/checkcombobox.py diff --git a/src/colormaps/fire b/moosegui/colormaps/fire similarity index 100% rename from src/colormaps/fire rename to moosegui/colormaps/fire diff --git a/src/colormaps/greenfire b/moosegui/colormaps/greenfire similarity index 100% rename from src/colormaps/greenfire rename to moosegui/colormaps/greenfire diff --git a/src/colormaps/grey b/moosegui/colormaps/grey similarity index 100% rename from src/colormaps/grey rename to moosegui/colormaps/grey diff --git a/src/colormaps/heat b/moosegui/colormaps/heat similarity index 100% rename from src/colormaps/heat rename to moosegui/colormaps/heat diff --git a/src/colormaps/jet b/moosegui/colormaps/jet similarity index 100% rename from src/colormaps/jet rename to moosegui/colormaps/jet diff --git a/src/colormaps/rainbow2.pkl b/moosegui/colormaps/rainbow2.pkl similarity index 100% rename from src/colormaps/rainbow2.pkl rename to moosegui/colormaps/rainbow2.pkl diff --git a/src/colormaps/redhot b/moosegui/colormaps/redhot similarity index 100% rename from src/colormaps/redhot rename to moosegui/colormaps/redhot diff --git a/src/config.py b/moosegui/config.py similarity index 100% rename from src/config.py rename to moosegui/config.py diff --git a/src/configwidget.py b/moosegui/configwidget.py similarity index 100% rename from src/configwidget.py rename to moosegui/configwidget.py diff --git a/src/defaults.py b/moosegui/defaults.py similarity index 100% rename from src/defaults.py rename to moosegui/defaults.py diff --git a/src/examples.py b/moosegui/examples.py similarity index 100% rename from src/examples.py rename to moosegui/examples.py diff --git a/src/global_constants.py b/moosegui/global_constants.py similarity index 100% rename from src/global_constants.py rename to moosegui/global_constants.py diff --git a/src/icons/BufPool.png b/moosegui/icons/BufPool.png similarity index 100% rename from src/icons/BufPool.png rename to moosegui/icons/BufPool.png diff --git a/src/icons/CubeMesh.png b/moosegui/icons/CubeMesh.png similarity index 100% rename from src/icons/CubeMesh.png rename to moosegui/icons/CubeMesh.png diff --git a/src/icons/CylMesh.png b/moosegui/icons/CylMesh.png similarity index 100% rename from src/icons/CylMesh.png rename to moosegui/icons/CylMesh.png diff --git a/src/icons/Enz.png b/moosegui/icons/Enz.png similarity index 100% rename from src/icons/Enz.png rename to moosegui/icons/Enz.png diff --git a/src/icons/FuncPool.png b/moosegui/icons/FuncPool.png similarity index 100% rename from src/icons/FuncPool.png rename to moosegui/icons/FuncPool.png diff --git a/src/icons/Function.png b/moosegui/icons/Function.png similarity index 100% rename from src/icons/Function.png rename to moosegui/icons/Function.png diff --git a/src/icons/MMenz.png b/moosegui/icons/MMenz.png similarity index 100% rename from src/icons/MMenz.png rename to moosegui/icons/MMenz.png diff --git a/src/icons/Pool.png b/moosegui/icons/Pool.png similarity index 100% rename from src/icons/Pool.png rename to moosegui/icons/Pool.png diff --git a/src/icons/QMdiBackground.png b/moosegui/icons/QMdiBackground.png similarity index 100% rename from src/icons/QMdiBackground.png rename to moosegui/icons/QMdiBackground.png diff --git a/src/icons/Reac.png b/moosegui/icons/Reac.png similarity index 100% rename from src/icons/Reac.png rename to moosegui/icons/Reac.png diff --git a/src/icons/StimulusTable.png b/moosegui/icons/StimulusTable.png similarity index 100% rename from src/icons/StimulusTable.png rename to moosegui/icons/StimulusTable.png diff --git a/src/icons/SumFunc.png b/moosegui/icons/SumFunc.png similarity index 100% rename from src/icons/SumFunc.png rename to moosegui/icons/SumFunc.png diff --git a/src/icons/add.png b/moosegui/icons/add.png similarity index 100% rename from src/icons/add.png rename to moosegui/icons/add.png diff --git a/src/icons/add_graph.png b/moosegui/icons/add_graph.png similarity index 100% rename from src/icons/add_graph.png rename to moosegui/icons/add_graph.png diff --git a/src/icons/arrow.png b/moosegui/icons/arrow.png similarity index 100% rename from src/icons/arrow.png rename to moosegui/icons/arrow.png diff --git a/src/icons/arrow_undo.png b/moosegui/icons/arrow_undo.png similarity index 100% rename from src/icons/arrow_undo.png rename to moosegui/icons/arrow_undo.png diff --git a/src/icons/clone.svg b/moosegui/icons/clone.svg similarity index 100% rename from src/icons/clone.svg rename to moosegui/icons/clone.svg diff --git a/src/icons/connection.png b/moosegui/icons/connection.png similarity index 100% rename from src/icons/connection.png rename to moosegui/icons/connection.png diff --git a/src/icons/continue.png b/moosegui/icons/continue.png similarity index 100% rename from src/icons/continue.png rename to moosegui/icons/continue.png diff --git a/src/icons/delete.svg b/moosegui/icons/delete.svg similarity index 100% rename from src/icons/delete.svg rename to moosegui/icons/delete.svg diff --git a/src/icons/delete_graph.png b/moosegui/icons/delete_graph.png similarity index 100% rename from src/icons/delete_graph.png rename to moosegui/icons/delete_graph.png diff --git a/src/icons/grid.png b/moosegui/icons/grid.png similarity index 100% rename from src/icons/grid.png rename to moosegui/icons/grid.png diff --git a/src/icons/hand.png b/moosegui/icons/hand.png similarity index 100% rename from src/icons/hand.png rename to moosegui/icons/hand.png diff --git a/src/icons/help.png b/moosegui/icons/help.png similarity index 100% rename from src/icons/help.png rename to moosegui/icons/help.png diff --git a/src/icons/hopfield.png b/moosegui/icons/hopfield.png similarity index 100% rename from src/icons/hopfield.png rename to moosegui/icons/hopfield.png diff --git a/src/icons/list.png b/moosegui/icons/list.png similarity index 100% rename from src/icons/list.png rename to moosegui/icons/list.png diff --git a/src/icons/moose_icon.png b/moosegui/icons/moose_icon.png similarity index 100% rename from src/icons/moose_icon.png rename to moosegui/icons/moose_icon.png diff --git a/src/icons/moose_icon_64x64.png b/moosegui/icons/moose_icon_64x64.png similarity index 100% rename from src/icons/moose_icon_64x64.png rename to moosegui/icons/moose_icon_64x64.png diff --git a/src/icons/moose_icon_large.png b/moosegui/icons/moose_icon_large.png similarity index 100% rename from src/icons/moose_icon_large.png rename to moosegui/icons/moose_icon_large.png diff --git a/src/icons/move.svg b/moosegui/icons/move.svg similarity index 100% rename from src/icons/move.svg rename to moosegui/icons/move.svg diff --git a/src/icons/plot.svg b/moosegui/icons/plot.svg similarity index 100% rename from src/icons/plot.svg rename to moosegui/icons/plot.svg diff --git a/src/icons/reset.png b/moosegui/icons/reset.png similarity index 100% rename from src/icons/reset.png rename to moosegui/icons/reset.png diff --git a/src/icons/run.png b/moosegui/icons/run.png similarity index 100% rename from src/icons/run.png rename to moosegui/icons/run.png diff --git a/src/icons/runtime.png b/moosegui/icons/runtime.png similarity index 100% rename from src/icons/runtime.png rename to moosegui/icons/runtime.png diff --git a/src/icons/squid.png b/moosegui/icons/squid.png similarity index 100% rename from src/icons/squid.png rename to moosegui/icons/squid.png diff --git a/src/icons/stop.png b/moosegui/icons/stop.png similarity index 100% rename from src/icons/stop.png rename to moosegui/icons/stop.png diff --git a/src/icons/straight_connector_with_filled_circles.png b/moosegui/icons/straight_connector_with_filled_circles.png similarity index 100% rename from src/icons/straight_connector_with_filled_circles.png rename to moosegui/icons/straight_connector_with_filled_circles.png diff --git a/src/icons/wrench.png b/moosegui/icons/wrench.png similarity index 100% rename from src/icons/wrench.png rename to moosegui/icons/wrench.png diff --git a/src/loaderdialog.py b/moosegui/loaderdialog.py similarity index 68% rename from src/loaderdialog.py rename to moosegui/loaderdialog.py index 062620b..7836dcd 100644 --- a/src/loaderdialog.py +++ b/moosegui/loaderdialog.py @@ -1,57 +1,17 @@ -# fileloader.py --- -# -# Filename: fileloader.py +# -*- coding: utf-8 -*- # Description: # Author: # Maintainer: # Created: Mon Feb 25 15:59:54 2013 (+0530) -# Version: -# Last-Updated: Wed May 22 12:30:14 2013 (+0530) -# By: subha -# Update #: 106 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Dialog for loading model files -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import sys -from PyQt5 import QtGui,QtCore,Qt import moose import os import posixpath +from PyQt5 import QtGui, QtCore +from PyQt5.QtWidgets import QFileDialog -class LoaderDialog(QtGui.QFileDialog): +class LoaderDialog(QFileDialog): # Update ftypes to include new file types ftypes='All Supported Files (*.cspace *.g *.xml *.p);; CSPACE (*.cspace);; GENESIS (*.g);; GENESIS Prototype (*.p);; NeuroML/SBML (*.xml)' target_default = '' # The default target when loading a model diff --git a/src/mexception.py b/moosegui/mexception.py similarity index 100% rename from src/mexception.py rename to moosegui/mexception.py diff --git a/src/mgui.py b/moosegui/mgui.py similarity index 100% rename from src/mgui.py rename to moosegui/mgui.py diff --git a/src/mload.py b/moosegui/mload.py similarity index 87% rename from src/mload.py rename to moosegui/mload.py index e6bb2e2..4bb8dab 100644 --- a/src/mload.py +++ b/moosegui/mload.py @@ -1,68 +1,28 @@ -# mload.py --- -# -# Filename: mload.py +# -*- coding: utf-8 -*- + # Description: # Author: Subhasis # Maintainer:HarshaRani # Created: Fri Feb 8 09:38:40 2013 (+0530) -# Version: -# Last-Updated: Wed Oct 5 15:16:35 2017 (+0530) -# By: HarshaRani -# Update #: 213 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Utility to load models and detect filetype. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# -# Code: -''' -Oct 5 : check is made for kkit model - -- Atleast one compartment should exists - -- Atleast 2 pool should exists -Oct 4 : clean up for python3 -''' -import moose -from moose import neuroml -from . import mtypes -from .mexception import FileLoadError import posixpath +from PyQt5 import QtGui, QtCore, Qt from os.path import basename from os.path import splitext -from PyQt5 import QtGui, QtCore, Qt -from .plugins.setsolver import * -from moose.SBML import * -from plugins.kkitOrdinateUtil import * + +# moosegui +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui import mtypes +from moosegui.mexception import FileLoadError +from moosegui.plugins.setsolver import * + +# moose import moose._moose as moose import moose.utils as mutils +import moose +from moose import neuroml +from moose.SBML import * + def loadGenCsp(target,filename,solver="gsl"): target = target.replace(" ", "") path = '/'+target diff --git a/src/mplot.py b/moosegui/mplot.py similarity index 100% rename from src/mplot.py rename to moosegui/mplot.py diff --git a/src/mplugin.py b/moosegui/mplugin.py similarity index 100% rename from src/mplugin.py rename to moosegui/mplugin.py diff --git a/src/msearch.py b/moosegui/msearch.py similarity index 100% rename from src/msearch.py rename to moosegui/msearch.py diff --git a/src/mtoolbutton.py b/moosegui/mtoolbutton.py similarity index 100% rename from src/mtoolbutton.py rename to moosegui/mtoolbutton.py diff --git a/src/mtree.py b/moosegui/mtree.py similarity index 100% rename from src/mtree.py rename to moosegui/mtree.py diff --git a/src/mtypes.py b/moosegui/mtypes.py similarity index 100% rename from src/mtypes.py rename to moosegui/mtypes.py diff --git a/src/neuroextractor.py b/moosegui/neuroextractor.py similarity index 100% rename from src/neuroextractor.py rename to moosegui/neuroextractor.py diff --git a/src/newmodeldialog.py b/moosegui/newmodeldialog.py similarity index 84% rename from src/newmodeldialog.py rename to moosegui/newmodeldialog.py index 30fc7a5..60c1933 100644 --- a/src/newmodeldialog.py +++ b/moosegui/newmodeldialog.py @@ -1,12 +1,19 @@ +# -*- coding: utf-8 -*- + +import sys import os -from PyQt5 import QtGui, QtCore,Qt -from . import config -from .mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +import numpy as np import re -class DialogWidget(QtGui.QDialog): +from PyQt5 import QtGui, QtCore,Qt +from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QDialog + +import moosegui.config as config +from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase + +class DialogWidget(QDialog): def __init__(self,parent=None): - QtGui.QWidget.__init__(self, parent) + QWidget.__init__(self, parent) self.warning = None self._currentRadioButton ="kkit" self.layout = QtGui.QGridLayout() @@ -23,11 +30,11 @@ def __init__(self,parent=None): # layout.addWidget(self.defaultRadio,2,1) # layout.addWidget(self.kkitRadio,2,0) self.hbox = QtGui.QHBoxLayout() - self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok) + self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok) self.connect(self.buttonBox, QtCore.SIGNAL('accepted()'), self.validateAccept) self.hbox.addWidget(self.buttonBox,1) - self.buttonBox1 = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel) + self.buttonBox1 = QDialogButtonBox(QDialogButtonBox.Cancel) self.connect(self.buttonBox1, QtCore.SIGNAL('rejected()'), self.Cancel) self.hbox.addWidget(self.buttonBox1,0) #self.hbox.setBackgroundColor(Blue) diff --git a/src/objectedit.py b/moosegui/objectedit.py similarity index 87% rename from src/objectedit.py rename to moosegui/objectedit.py index 79ab443..8310d57 100644 --- a/src/objectedit.py +++ b/moosegui/objectedit.py @@ -1,87 +1,23 @@ -# objectedit.py --- -# -# Filename: objectedit.py +# -*- coding: utf-8 -*- # Description: # Author: Subhasis Ray # Maintainer: # Created: Wed Jun 30 11:18:34 2010 (+0530) -# Version: -# Last-Updated: Fri Feb 01 11:05:59 2017 (+0530) -# By: Harsha -# Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# This code is for a widget to edit MOOSE objects. We can now track if -# a field is a Value field and make it editable accordingly. There -# seems to be no clean way of determining whether the field is worth -# plotting (without a knowledge of the model/biology there is no way -# we can tell this). But we can of course check if the field is a -# numeric one. -# -# - -# Change log: -# -# Wed Jun 30 11:18:34 2010 (+0530) - Originally created by Subhasis -# Ray, the model and the view -# -# Modified/adapted to dh_branch by Chaitanya/Harsharani -# -# Thu Apr 18 18:37:31 IST 2013 - Reintroduced into multiscale GUI by -# Subhasis -# -# Fri Apr 19 15:05:53 IST 2013 - Subhasis added undo redo -# feature. Create ObjectEditModel as part of ObjectEditView. -# Tue Mar 7 16:10:54 IST 2017 - Harsha now Pool or BufPool can be interchangable -# by setting/unsetting isbuffered field -# Fri May 17 23:45:59 2017 (+0530) - Harsha added, notes header, -# Kd is calculated for the second order reaction and value is displayed -# Tue Jun 18 12:10:54 IST 2018 - Harsha now group boundary color can be editable from the object editor -# Mon Sep 10 16:21:00 IST 2018 - When name is edited, the editorTitle gets updated -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -import PyQt5 + from PyQt5 import QtCore from PyQt5 import QtGui -from PyQt5.QtGui import QTextEdit -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QGridLayout -from PyQt5.QtGui import QVBoxLayout -from PyQt5.QtGui import QSizePolicy +from PyQt5.QtWidgets import QTextEdit, QWidget, QGridLayout +from PyQt5.QtWidgets import QVBoxLayout, QSizePolicy, QSplitter +from PyQt5.QtWidgets import QTableView, QDockWidget from PyQt5.QtCore import QMargins -from PyQt5.QtGui import QSplitter + import sys from collections import deque import traceback -#sys.path.append('../python') import moose -import defaults -import config -#from plugins.kkitUtil import getColor +import moosegui.defaults as defaults +import moosegui.config as config from moose.chemUtil.chemConnectUtil import getColor #these fields will be ignored @@ -375,7 +311,7 @@ def headerData(self, col, orientation, role): return (self.headerdata[col]) return "" -class ObjectEditView(QtGui.QTableView): +class ObjectEditView(QTableView): """View class for object editor. This class creates an instance of ObjectEditModel using the moose @@ -389,7 +325,7 @@ class ObjectEditView(QtGui.QTableView): to view.model().undo and view.model().redo slots. """ def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=None): - QtGui.QTableView.__init__(self, parent) + QTableView.__init__(self, parent) #self.setEditTriggers(self.DoubleClicked | self.SelectedClicked | self.EditKeyPressed) vh = self.verticalHeader() vh.setVisible(False) @@ -445,10 +381,10 @@ def setColor(self, color): self.colorDialog.setCurrentColor(color) def dataChanged(self, tl, br): - QtGui.QTableView.dataChanged(self, tl, br) + QTableView.dataChanged(self, tl, br) self.viewport().update() -class ObjectEditDockWidget(QtGui.QDockWidget): +class ObjectEditDockWidget(QDockWidget): """A dock widget whose title is set by the current moose object. Allows switching the moose object. It stores the created view in a dict for future use. @@ -462,7 +398,7 @@ class ObjectEditDockWidget(QtGui.QDockWidget): objectNameChanged = QtCore.pyqtSignal('PyQt_PyObject') colorChanged = QtCore.pyqtSignal(object, object) def __init__(self, mobj='/', parent=None, flags=None): - QtGui.QDockWidget.__init__(self, parent=parent) + QDockWidget.__init__(self, parent=parent) mobj = moose.element(mobj) #self.view = view = ObjectEditView(mobj) self.view = view = ObjectEditView(mobj) diff --git a/src/plugins/NeuroKit.py b/moosegui/plugins/NeuroKit.py similarity index 100% rename from src/plugins/NeuroKit.py rename to moosegui/plugins/NeuroKit.py diff --git a/src/plugins/NeuroKitEditor.py b/moosegui/plugins/NeuroKitEditor.py similarity index 100% rename from src/plugins/NeuroKitEditor.py rename to moosegui/plugins/NeuroKitEditor.py diff --git a/src/plugins/NeuroKitRunner.py b/moosegui/plugins/NeuroKitRunner.py similarity index 100% rename from src/plugins/NeuroKitRunner.py rename to moosegui/plugins/NeuroKitRunner.py diff --git a/src/plugins/NeuroKitVisualizer.py b/moosegui/plugins/NeuroKitVisualizer.py similarity index 100% rename from src/plugins/NeuroKitVisualizer.py rename to moosegui/plugins/NeuroKitVisualizer.py diff --git a/src/plugins/PreferencesPresenter.py b/moosegui/plugins/PreferencesPresenter.py similarity index 100% rename from src/plugins/PreferencesPresenter.py rename to moosegui/plugins/PreferencesPresenter.py diff --git a/src/plugins/PreferencesView.py b/moosegui/plugins/PreferencesView.py similarity index 100% rename from src/plugins/PreferencesView.py rename to moosegui/plugins/PreferencesView.py diff --git a/src/plugins/README b/moosegui/plugins/README similarity index 100% rename from src/plugins/README rename to moosegui/plugins/README diff --git a/src/plugins/Runner.py b/moosegui/plugins/Runner.py similarity index 100% rename from src/plugins/Runner.py rename to moosegui/plugins/Runner.py diff --git a/src/plugins/__init__.py b/moosegui/plugins/__init__.py similarity index 100% rename from src/plugins/__init__.py rename to moosegui/plugins/__init__.py diff --git a/src/plugins/buildkkit.py b/moosegui/plugins/buildkkit.py similarity index 100% rename from src/plugins/buildkkit.py rename to moosegui/plugins/buildkkit.py diff --git a/moosegui/plugins/constants.py b/moosegui/plugins/constants.py new file mode 100644 index 0000000..e8eeaf0 --- /dev/null +++ b/moosegui/plugins/constants.py @@ -0,0 +1,24 @@ +INVALID = 6 + +INTERIOR = 7 +BOUNDARY = 8 + +SAME_OBJECT = 9 +OTHER_OBJECT = 10 +NO_OBJECT = 11 + +RUBBERBAND_SELECTION = 12 +VALID = 13 + +ITEM = 0 +CONNECTOR = 1 +CONNECTION = 2 +EMPTY = 3 + +COMPARTMENT = 14 +COMPARTMENT_BOUNDARY = 4 +COMPARTMENT_INTERIOR = 5 + +GROUP = 15 +GROUP_BOUNDARY = 16 +GROUP_INTERIOR = 17 diff --git a/src/plugins/datastore/preferences.json b/moosegui/plugins/datastore/preferences.json similarity index 100% rename from src/plugins/datastore/preferences.json rename to moosegui/plugins/datastore/preferences.json diff --git a/src/plugins/default.py b/moosegui/plugins/default.py similarity index 100% rename from src/plugins/default.py rename to moosegui/plugins/default.py diff --git a/src/plugins/defines.py b/moosegui/plugins/defines.py similarity index 100% rename from src/plugins/defines.py rename to moosegui/plugins/defines.py diff --git a/src/plugins/kkit.py b/moosegui/plugins/kkit.py similarity index 100% rename from src/plugins/kkit.py rename to moosegui/plugins/kkit.py diff --git a/src/plugins/kkitCalcArrow.py b/moosegui/plugins/kkitCalcArrow.py similarity index 100% rename from src/plugins/kkitCalcArrow.py rename to moosegui/plugins/kkitCalcArrow.py diff --git a/src/plugins/kkitOrdinateUtil.py b/moosegui/plugins/kkitOrdinateUtil.py similarity index 100% rename from src/plugins/kkitOrdinateUtil.py rename to moosegui/plugins/kkitOrdinateUtil.py diff --git a/src/plugins/kkitQGraphics.py b/moosegui/plugins/kkitQGraphics.py similarity index 96% rename from src/plugins/kkitQGraphics.py rename to moosegui/plugins/kkitQGraphics.py index c0567aa..88051c9 100644 --- a/src/plugins/kkitQGraphics.py +++ b/moosegui/plugins/kkitQGraphics.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- __author__ = "HarshaRani" __credits__ = ["Upi Lab"] @@ -8,19 +9,17 @@ __status__ = "Development" __updated__ = "Sep 19 2017" -''' -sep 19: add GroupItem class -''' -#import sys -#sys.path.insert(0, '/home/harsha/trunk/gui') -import config -from PyQt5 import QtGui, QtCore, Qt -from moose import * -from PyQt5.QtGui import QPixmap, QImage, QGraphicsPixmapItem -from constants import * +from PyQt5 import QtGui +from PyQt5.QtWidgets import QGraphicsPixmapItem, QGraphicsWidget +from PyQt5.QtWidgets import QGraphicsRectItem + +from moosegui.plugins.constants import * +import moosegui.config + from os import path +from moose import * -class KineticsDisplayItem(QtGui.QGraphicsWidget): +class KineticsDisplayItem(QGraphicsWidget): """Base class for display elemenets in kinetics layout""" name = ITEM defaultFontName = "Helvetica" @@ -75,8 +74,8 @@ def __init__(self, mobj, parent): super(FuncItem, self).__init__(mobj, parent) self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) iconmap_file = (path.join(config.settings[config.KEY_ICON_DIR], 'classIcon/Function.png')) - self.funcImage = QImage(iconmap_file).scaled(15,33) - self.bg = QtGui.QGraphicsRectItem(self) + self.funcImage = QtGui.QImage(iconmap_file).scaled(15,33) + self.bg = QGraphicsRectItem(self) self.bg.setAcceptHoverEvents(True) self.gobj = QtGui.QGraphicsPixmapItem(QtGui.QPixmap.fromImage(self.funcImage),self.bg) self.gobj.setAcceptHoverEvents(True) @@ -151,7 +150,7 @@ class PoolItem(KineticsDisplayItem): fontMetrics = QtGui.QFontMetrics(font) def __init__(self, mobj, parent): KineticsDisplayItem.__init__(self, mobj, parent) - self.bg = QtGui.QGraphicsRectItem(self) + self.bg = QGraphicsRectItem(self) self.bg.setAcceptHoverEvents(True) self.gobj = QtGui.QGraphicsSimpleTextItem(self.mobj.name, self.bg) self.gobj.mobj = self.mobj @@ -441,7 +440,7 @@ class CplxItem(KineticsDisplayItem): name = ITEM def __init__(self, *args, **kwargs): KineticsDisplayItem.__init__(self, *args, **kwargs) - self.gobj = QtGui.QGraphicsRectItem(0,0, CplxItem.defaultWidth, CplxItem.defaultHeight, self) + self.gobj = QGraphicsRectItem(0,0, CplxItem.defaultWidth, CplxItem.defaultHeight, self) self.gobj.mobj = self.mobj self._conc = self.mobj.conc self._n = self.mobj.n @@ -468,12 +467,13 @@ def refresh(self,scale): defaultHeight = CplxItem.defaultHeight*scale self.gobj.setRect(0,0,defaultWidth,defaultHeight) -class GRPItem(QtGui.QGraphicsRectItem): + +class GRPItem(QGraphicsRectItem): #This is used for displaying Grp Item name = GROUP def __init__(self,parent,x,y,w,h,item): self.grpEmitter = QtCore.QObject() - QtGui.QGraphicsRectItem.__init__(self,x,y,w,h,parent) + QGraphicsRectItem.__init__(self,x,y,w,h,parent) self.mobj = item self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True); self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable) @@ -513,7 +513,7 @@ def itemChange(self,change,value): return QtGui.QGraphicsItem.itemChange(self,change,value) -class ComptItem(QtGui.QGraphicsRectItem): +class ComptItem(QGraphicsRectItem): name = COMPARTMENT def __init__(self,parent,x,y,w,h,item): self.cmptEmitter = QtCore.QObject() @@ -535,7 +535,7 @@ def __init__(self,parent,x,y,w,h,item): else: self.mobj = iParent self.layoutWidgetPt = parent - QtGui.QGraphicsRectItem.__init__(self,x,y,w,h) + QGraphicsRectItem.__init__(self,x,y,w,h) self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True); self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable) @@ -566,7 +566,7 @@ def hoverMoveEvent(self, event): else: self.setCursor(QtCore.Qt.SizeAllCursor) - QtGui.QGraphicsRectItem.hoverMoveEvent(self, event) + QGraphicsRectItem.hoverMoveEvent(self, event) def mousePressEvent(self, event): """ @@ -592,7 +592,7 @@ def mousePressEvent(self, event): else: self.mousePressArea = None - QtGui.QGraphicsRectItem.mousePressEvent(self, event) + QGraphicsRectItem.mousePressEvent(self, event) def mouseReleaseEvent(self, event): """ @@ -603,7 +603,7 @@ def mouseReleaseEvent(self, event): self.updateResizeHandles() self.prepareGeometryChange() - QtGui.QGraphicsRectItem.mouseReleaseEvent(self, event) + QGraphicsRectItem.mouseReleaseEvent(self, event) def mouseMoveEvent(self, event): """ @@ -631,7 +631,7 @@ def mouseMoveEvent(self, event): self.updateResizeHandles() self.prepareGeometryChange() - QtGui.QGraphicsRectItem.mousePressEvent(self, event) + QGraphicsRectItem.mousePressEvent(self, event) def boundingRect(self): """ diff --git a/src/plugins/kkitUtil.py b/moosegui/plugins/kkitUtil.py similarity index 100% rename from src/plugins/kkitUtil.py rename to moosegui/plugins/kkitUtil.py diff --git a/src/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py similarity index 100% rename from src/plugins/kkitViewcontrol.py rename to moosegui/plugins/kkitViewcontrol.py diff --git a/src/plugins/list.txt b/moosegui/plugins/list.txt similarity index 100% rename from src/plugins/list.txt rename to moosegui/plugins/list.txt diff --git a/src/plugins/modelBuild.py b/moosegui/plugins/modelBuild.py similarity index 100% rename from src/plugins/modelBuild.py rename to moosegui/plugins/modelBuild.py diff --git a/src/plugins/setsolver.py b/moosegui/plugins/setsolver.py similarity index 100% rename from src/plugins/setsolver.py rename to moosegui/plugins/setsolver.py diff --git a/src/plugins/test_plotwidget.py b/moosegui/plugins/test_plotwidget.py similarity index 100% rename from src/plugins/test_plotwidget.py rename to moosegui/plugins/test_plotwidget.py diff --git a/src/scishell.py b/moosegui/scishell.py similarity index 100% rename from src/scishell.py rename to moosegui/scishell.py diff --git a/src/shell.py b/moosegui/shell.py similarity index 92% rename from src/shell.py rename to moosegui/shell.py index 22c4336..b63dbcd 100644 --- a/src/shell.py +++ b/moosegui/shell.py @@ -1,24 +1,26 @@ # -*- python -*- # -# OpenAlea.Visualea: OpenAlea graphical user interface +# OpenAlea.Visualea: OpenAlea graphical user interface # -# Copyright 2006 INRIA - CIRAD - INRA +# Copyright 2006 INRIA - CIRAD - INRA # -# File author(s): Samuel Dufour-Kowalski -# Christophe Pradal +# File author(s): Samuel Dufour-Kowalski +# Christophe Pradal # -# Distributed under the CeCILL v2 License. -# See accompanying file LICENSE.txt or copy at -# http://www.cecill.info/licences/Licence_CeCILL_V2-en.html +# Distributed under the CeCILL v2 License. +# See accompanying file LICENSE.txt or copy at +# http://www.cecill.info/licences/Licence_CeCILL_V2-en.html # -# OpenAlea WebSite : http://openalea.gforge.inria.fr +# OpenAlea WebSite : http://openalea.gforge.inria.fr # # Fri Mar 15 15:10:58 IST 2013: This file was obtained from: # http://obswww.unige.ch/~revaz/git/old.glups-4.0/glups/shell.py - +# Wednesday 12 June 2019 08:37:21 PM IST +# + Ported to Qt5 # Subhasis Ray __doc__=""" -This module implements a QT4 python interpreter widget. +This module implements a Qt5 python interpreter widget. It is inspired bu PyCute : http://gerard.vermeulen.free.fr """ @@ -26,17 +28,11 @@ __revision__=" $Id: shell.py 579 2007-06-13 10:27:57Z dufourko $" -import os, sys +import os +import sys +from PyQt5.QtWidgets import QTextEdit +from PyQt5.QtGui import QTextCursor from PyQt5 import QtCore, QtGui -from PyQt5.QtGui import QTextEdit, QTextCursor -from PyQt5.QtCore import Qt - -# In python3, QString is just python strings. -try: - from PyQt5.QtCore import QString -except ImportError as e: - # we are using Python3 so QString is not defined - QtCore.QString = type("") class History: """ Backup and restore history between sessions @@ -73,11 +69,8 @@ def get_shell_class(): try: from .scishell import SciShell return SciShell - except ImportError: return PyCutExt - - class MultipleRedirection: """ Dummy file which redirects stream to multiple file """ @@ -129,7 +122,7 @@ def __init__(self, interpreter, message="", log='', parent=None): # to exit the main interpreter by a Ctrl-D if PyCute has no parent if parent is None: - self.eofKey = Qt.Key_D + self.eofKey = QtCore.Qt.Key_D else: self.eofKey = None @@ -140,7 +133,7 @@ def __init__(self, interpreter, message="", log='', parent=None): # last line + last incomplete lines - self.line = QtCore.QString() + self.line = "" self.lines = [] # the cursor position in the last line self.point = 0 @@ -282,7 +275,7 @@ def fakeUser(self, lines): Simulate a user: lines is a sequence of strings, (Python statements). """ for line in lines: - self.line = QtCore.QString(line.rstrip()) + self.line = line.rstrip() self.write(self.line) self.write('\n') self.__run() @@ -297,8 +290,8 @@ def __run(self): (3) the interpreter fails, finds errors and writes them to sys.stderr """ self.pointer = 0 - self.history.append(QtCore.QString(self.line)) - self.H.append(QtCore.QString(self.line)) # Added by yr + self.history.append(self.line) + self.H.append(self.line) try: self.lines.append(str(self.line)) except Exception as e: diff --git a/src/sidebar.py b/moosegui/sidebar.py similarity index 100% rename from src/sidebar.py rename to moosegui/sidebar.py diff --git a/src/utils.py b/moosegui/utils.py similarity index 100% rename from src/utils.py rename to moosegui/utils.py diff --git a/setup.py b/setup.py index 8a23fdf..e4074ef 100644 --- a/setup.py +++ b/setup.py @@ -35,9 +35,9 @@ , 'suds.umx', 'suds.transport' ], package_dir = { - 'moosegui' : 'src' + 'moosegui' : 'moosegui' , 'moosegui.demos' : '.' - , 'moosegui.plugins' : 'src/plugins' + , 'moosegui.plugins' : 'moosegui/plugins' , 'suds' : 'suds' }, package_data = { diff --git a/src/plugins/constants.py b/src/plugins/constants.py deleted file mode 100644 index 3596f2c..0000000 --- a/src/plugins/constants.py +++ /dev/null @@ -1,24 +0,0 @@ -INVALID = 6 - -INTERIOR = 7 -BOUNDARY = 8 - -SAME_OBJECT = 9 -OTHER_OBJECT = 10 -NO_OBJECT = 11 - -RUBBERBAND_SELECTION = 12 -VALID = 13 - -ITEM = 0 -CONNECTOR = 1 -CONNECTION = 2 -EMPTY = 3 - -COMPARTMENT = 14 -COMPARTMENT_BOUNDARY = 4 -COMPARTMENT_INTERIOR = 5 - -GROUP = 15 -GROUP_BOUNDARY = 16 -GROUP_INTERIOR = 17 From 5f913782d69644304e418d475bf00cfc2b42988d Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 21:27:30 +0530 Subject: [PATCH 43/66] added __main__.py. python -m moosegui will launch the gui. --- moosegui/__main__.py | 8 +++++ moosegui/mplot.py | 85 +++++--------------------------------------- 2 files changed, 16 insertions(+), 77 deletions(-) create mode 100644 moosegui/__main__.py diff --git a/moosegui/__main__.py b/moosegui/__main__.py new file mode 100644 index 0000000..24031be --- /dev/null +++ b/moosegui/__main__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +def main(): + import moosegui.mgui + moosegui.mgui.main() + +if __name__ == '__main__': + main() diff --git a/moosegui/mplot.py b/moosegui/mplot.py index 6689b9e..7d6eff9 100644 --- a/moosegui/mplot.py +++ b/moosegui/mplot.py @@ -1,94 +1,25 @@ -# mplot.py --- -# # Filename: mplot.py # Description: # Author: # Maintainer: # Created: Mon Mar 11 20:24:26 2013 (+0530) -# Version: -# Last-Updated: Wed Apr 11 15:32:35 2018 (+0530) -# By: Harsha -# Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Moose plot widget default implementation. This should be rich enough -# to suffice for most purposes. -# -# - -# Change log: -# 2018 April 11: In chemical model, now pool can be ploted as number or concentration. -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -""" - *TODO* - - 1) Option for default colors, markers, etc. - - 2) Option for configuring number of rows and columns of - subplots. (I think matplotlib grids will be a bit too much to - implement). Problem is this has to be done before actual axes are - created (as far as I know). Idea: can we do something like movable - widgets example in Qt? - - 3) Option for selecting any line or set of lines and change its - configuration (as in dataviz). - - 4) Association between plots and the data source. - - 5) Lots and lots of scipy/numpy/scikits/statsmodels utilities can be added. To - start with, we should have - a)digital filters - b) fft - c) curve fitting - - 6) For (5), think of another layer of plugins. Think of this as a - standalone program. All these facilities should again be - pluggable. We do not want to overwhelm novice users with fancy - machine-learning stuff. They should be made available only on - request. - - There is a proposal for data analysis library by Andrew Davison ... - -""" - __author__ = "Subhasis Ray" + import sys import numpy as np + from PyQt5 import QtGui, QtCore from PyQt5.Qt import Qt + +import matplotlib +matplotlib.use('Qt5Agg') from matplotlib import mlab from matplotlib.figure import Figure -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar -#from moose import utils +from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar + import moose -from PyQt5.QtCore import * class CanvasWidget(FigureCanvas): """Widget to draw plots on. From 885768c6cd04c234598d25a350456a6b8ac5495e Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 21:32:53 +0530 Subject: [PATCH 44/66] Should test on ubuntu. --- moosegui/__init__.py | 2 ++ moosegui/config.py | 17 +++++------------ moosegui/mplot.py | 9 +++------ 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/moosegui/__init__.py b/moosegui/__init__.py index e69de29..9f96150 100644 --- a/moosegui/__init__.py +++ b/moosegui/__init__.py @@ -0,0 +1,2 @@ +import matplotlib +matplotlib.use('Qt5Agg') diff --git a/moosegui/config.py b/moosegui/config.py index 4dd985c..8182eac 100644 --- a/moosegui/config.py +++ b/moosegui/config.py @@ -16,18 +16,11 @@ # Logger import logging -logging.basicConfig(level=logging.DEBUG, - format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', - datefmt='%m-%d %H:%M', - filename='moosegui.log', - filemode='a' - ) -console = logging.StreamHandler() -console.setLevel(logging.DEBUG) -formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') -console.setFormatter(formatter) -_logger = logging.getLogger('') -_logger.addHandler(console) +logging.basicConfig( level=logging.INFO + , format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s' + , datefmt='%m-%d %H:%M' + ) +_logger = logging.getLogger('moosegui') KEY_UNDO_LENGTH = 'main/undolength' KEY_WINDOW_GEOMETRY = 'main/geometry' diff --git a/moosegui/mplot.py b/moosegui/mplot.py index 7d6eff9..27d46cf 100644 --- a/moosegui/mplot.py +++ b/moosegui/mplot.py @@ -12,12 +12,9 @@ from PyQt5 import QtGui, QtCore from PyQt5.Qt import Qt -import matplotlib -matplotlib.use('Qt5Agg') -from matplotlib import mlab -from matplotlib.figure import Figure -from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar +#from matplotlib.figure import Figure +#from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas +#from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar import moose From 2b85ce0141d236f9828b6a23be35e75506d94cfb Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 21:44:12 +0530 Subject: [PATCH 45/66] small tweaks. Test with python3.6 --- moosegui/MWindow.py | 40 ++++++++++++++++++++++------------------ moosegui/mgui.py | 14 +------------- 2 files changed, 23 insertions(+), 31 deletions(-) diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index cff2d9b..c5f3ffe 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -12,7 +12,7 @@ import code from collections import defaultdict, OrderedDict -from PyQt5 import QtGui, QtCore, Qt +from PyQt5 import QtGui, QtCore from PyQt5.QtWidgets import QMainWindow, QAction, QApplication from PyQt5.QtWidgets import QDockWidget @@ -217,20 +217,21 @@ def createPopup(self): loadNeuronalModelButton = QPushButton("Load Neuronal Model") layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) - self.menuitems = OrderedDict([("Fig2C" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("ReducedModel (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "../moose-examples/squid/squid_demo.py") - ]) + self.menuitems = OrderedDict([ + ("Fig2C" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), + ("Fig2E" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3D", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), + ("Fig4B", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), + ("ReducedModel (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Squid" , "../moose-examples/squid/squid_demo.py") + ]) layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) layout1 = QHBoxLayout() layout1.addWidget(createKineticModelButton) @@ -399,7 +400,8 @@ def loadPluginModule(self, name, re=False): _logger.debug( "\tError was %s" % e ) module = "" - if fp: fp.close() + if fp: + fp.close() return module @@ -515,8 +517,10 @@ def setPlugin(self, name, root='/'): self.setCurrentView('run') if name == 'kkit': - self.objectEditDockWidget.objectNameChanged.connect(self.plugin.getEditorView().getCentralWidget().updateItemSlot) - self.objectEditDockWidget.colorChanged.connect(self.plugin.getEditorView().getCentralWidget().updateColorSlot) + self.objectEditDockWidget.objectNameChanged.connect( + self.plugin.getEditorView().getCentralWidget().updateItemSlot) + self.objectEditDockWidget.colorChanged.connect( + self.plugin.getEditorView().getCentralWidget().updateColorSlot) self.setCurrentView('editor') freeCursor() return self.plugin diff --git a/moosegui/mgui.py b/moosegui/mgui.py index c74dc7b..71cb6a1 100644 --- a/moosegui/mgui.py +++ b/moosegui/mgui.py @@ -7,34 +7,22 @@ __author__ = 'Subhasis Ray , HarshaRani, Aviral Goel, NCBS Bangalore' import sys -import signal - from PyQt5.QtWidgets import QApplication -from PyQt5 import QtGui, QtCore, Qt -from PyQt5 import Qt, QtCore, QtGui -import posixpath - +from PyQt5 import QtGui, QtCore from moosegui import config from moosegui import MWindow as MWindow app_ = None -def signal_handler( *args ): - global app_ - sys.stderr.write( '\r' ) - sys.exit( app_.exec_() ) - def main(): # create the GUI application global app_ app_ = QApplication(sys.argv) - signal.signal( signal.SIGINT, signal_handler ) QtGui.qApp = app_ mWindow = MWindow.MWindow() mWindow.setWindowState(QtCore.Qt.WindowMaximized) sys.excepthook = mWindow.handleException mWindow.show() - # config.settings[config.KEY_FIRSTTIME] = 'False' sys.exit( app_.exec_() ) if __name__ == '__main__': From 6efba1dcf18fba9cdf38eeca22820e1e028e695d Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 21:50:25 +0530 Subject: [PATCH 46/66] Updated travis. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 751c1d5..08a99d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,10 +8,10 @@ install: - sudo apt-get -y update - sudo apt-get -y --force-yes install python3 python-pip - sudo pip install python-libsbml - - sudo pip install pymoose --pre --upgrade script: - # Making sure no python incompatible file is added. + - python3 -m pip install pymoose --user --pre - python3 -m compileall -q . - python3 -c 'import moose' - python3 setup.py install --user From e634ca1ff5baba7fcdad16ed055802033de9b0f8 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 23:07:01 +0530 Subject: [PATCH 47/66] Some more pyqt5 related tweaks. --- moosegui/MWindow.py | 13 +- moosegui/RunWidget.py | 14 +- moosegui/__init__.py | 1 + moosegui/loaderdialog.py | 22 +- moosegui/objectedit.py | 9 +- moosegui/plugins/PreferencesPresenter.py | 12 +- moosegui/plugins/default.py | 89 ++--- moosegui/plugins/kkitUtil.py | 5 +- moosegui/plugins/modelBuild.py | 447 ++++++++++------------- plugins/modelBuild.py | 332 ----------------- suds/sax/text.py | 7 +- 11 files changed, 246 insertions(+), 705 deletions(-) delete mode 100644 plugins/modelBuild.py diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index c5f3ffe..be3766f 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -9,12 +9,13 @@ import traceback import re import warnings +import sys import code from collections import defaultdict, OrderedDict -from PyQt5 import QtGui, QtCore +from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QMainWindow, QAction, QApplication -from PyQt5.QtWidgets import QDockWidget +from PyQt5.QtWidgets import QDockWidget, QMdiArea # moose import moose @@ -116,7 +117,7 @@ def __init__(self, *args): self.getMyDockWidgets() self.setCentralWidget(self.mdiArea) - self.mdiArea.setViewMode(QtGui.QMdiArea.TabbedView) + self.mdiArea.setViewMode(QMdiArea.TabbedView) self.mdiArea.subWindowActivated.connect(self.switchSubwindowSlot) self.setPlugin('default', '/') self.plugin.getEditorView().getCentralWidget().parent().close() @@ -397,7 +398,7 @@ def loadPluginModule(self, name, re=False): module = imp.load_module(name, fp, pathname, description) except Exception as e: _logger.warn( "Could not load module %s" % fp ) - _logger.debug( "\tError was %s" % e ) + _logger.warn( "\tError was %s" % e ) module = "" if fp: @@ -886,10 +887,10 @@ def getViewActions(self): return self.viewActions def setTabbedView(self): - self.mdiArea.setViewMode(QtGui.QMdiArea.TabbedView) + self.mdiArea.setViewMode(QMdiArea.TabbedView) def setSubWindowView(self): - self.mdiArea.setViewMode(QtGui.QMdiArea.SubWindowView) + self.mdiArea.setViewMode(QMdiArea.SubWindowView) def getSubWindowActions(self): if not hasattr(self, 'subWindowActions') or self.subWindowActions is None: diff --git a/moosegui/RunWidget.py b/moosegui/RunWidget.py index 5d09b37..1690991 100644 --- a/moosegui/RunWidget.py +++ b/moosegui/RunWidget.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + """ Sidebar for plugins. The sidebar comprises of actions. Currently mode, connect and settings are defined. @@ -5,7 +7,6 @@ """ __author__ = "Aviral Goel" -__credits__ = ["Upi Lab"] __license__ = "GPL3" __version__ = "1.0.0" __maintainer__ = "Aviral Goel" @@ -15,12 +16,13 @@ import sys import os -from . import SettingsDialog -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QScrollArea -from PyQt5.QtGui import QGridLayout -from PyQt5.QtGui import QSplitter +from PyQt5.QtWidgets import QScrollArea +from PyQt5.QtWidgets import QGridLayout +from PyQt5.QtWidgets import QSplitter +from PyQt5.QtWidgets import QWidget + +from moosegui import SettingsDialog class RunWidget(QSplitter): """ Run view """ diff --git a/moosegui/__init__.py b/moosegui/__init__.py index 9f96150..f2d83d2 100644 --- a/moosegui/__init__.py +++ b/moosegui/__init__.py @@ -1,2 +1,3 @@ +from __future__ import print_function, division, absolute_import import matplotlib matplotlib.use('Qt5Agg') diff --git a/moosegui/loaderdialog.py b/moosegui/loaderdialog.py index 7836dcd..15fa1ea 100644 --- a/moosegui/loaderdialog.py +++ b/moosegui/loaderdialog.py @@ -9,7 +9,7 @@ import os import posixpath from PyQt5 import QtGui, QtCore -from PyQt5.QtWidgets import QFileDialog +from PyQt5.QtWidgets import QFileDialog, QApplication class LoaderDialog(QFileDialog): # Update ftypes to include new file types @@ -19,25 +19,7 @@ def __init__(self, *args): self.modelpath = None super(LoaderDialog, self).__init__(*args) self.setNameFilter(self.tr(self.ftypes)) - self.setNameFilterDetailsVisible(True) - self.setReadOnly(True) self.setFileMode(self.ExistingFile) - # self.targetPanel = QtGui.QFrame() - # self.targetLabel = QtGui.QLabel('Model name') - # self.targetText = QtGui.QLineEdit(self.target_default) - # form = QtGui.QFormLayout() - # form.addRow(self.targetLabel, self.targetText) - # self.modelChoiceBox = QtGui.QGroupBox('Model name') - # self.replaceExistingButton = QtGui.QRadioButton('&Replace current model') - # self.mergeExistingButton = QtGui.QRadioButton('&Keep current model') - # self.replaceExistingButton.setChecked(True) - # vbox = QtGui.QVBoxLayout() - # vbox.addWidget(self.replaceExistingButton) - # vbox.addWidget(self.mergeExistingButton) - # self.modelChoiceBox.setLayout(vbox) - # self.targetPanel.setLayout(form) - # self.layout().addWidget(self.targetPanel) - # self.layout().addWidget(self.modelChoiceBox) self.fileSelected.connect(self.fileSelectedSlot) def fileSelectedSlot(self, fpath): @@ -59,7 +41,7 @@ def getTargetPath(self): if __name__ == '__main__': - app = QtGui.QApplication(sys.argv) + app = QApplication(sys.argv) QtGui.qApp = app mw = LoaderDialog() mw.show() diff --git a/moosegui/objectedit.py b/moosegui/objectedit.py index 8310d57..859f6cc 100644 --- a/moosegui/objectedit.py +++ b/moosegui/objectedit.py @@ -8,7 +8,8 @@ from PyQt5 import QtGui from PyQt5.QtWidgets import QTextEdit, QWidget, QGridLayout from PyQt5.QtWidgets import QVBoxLayout, QSizePolicy, QSplitter -from PyQt5.QtWidgets import QTableView, QDockWidget +from PyQt5.QtWidgets import QTableView, QDockWidget, QPushButton +from PyQt5.QtWidgets import QColorDialog from PyQt5.QtCore import QMargins import sys @@ -277,7 +278,7 @@ def data(self, index, role): elif (role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole): try: if (str(field) =="Color" ): - return QtGui.QPushButton("Press Me!") + return QPushButton("Press Me!") if (str(field) =="Kd" ): #ret = self.mooseObject.getField(str(field)) Kd = 0 @@ -334,8 +335,8 @@ def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=Non self.setAlternatingRowColors(True) self.resizeColumnsToContents() self.setModel(ObjectEditModel(mobject, undolen=undolen)) - self.colorButton = QtGui.QPushButton() - self.colorDialog = QtGui.QColorDialog() + self.colorButton = QPushButton() + self.colorDialog = QColorDialog() self.textEdit = QTextEdit() try: notesIndex = self.model().fields.index("Notes") diff --git a/moosegui/plugins/PreferencesPresenter.py b/moosegui/plugins/PreferencesPresenter.py index ff07cda..1a0d48e 100644 --- a/moosegui/plugins/PreferencesPresenter.py +++ b/moosegui/plugins/PreferencesPresenter.py @@ -1,15 +1,19 @@ +# -*- coding: utf-8 -*- + import sys -import moose +import json +import os from PyQt5 import Qt, QtGui, QtCore from PyQt5.QtCore import QObject from PyQt5.QtCore import pyqtSignal from PyQt5.QtGui import QColor -from PyQt5.QtGui import QGroupBox +from PyQt5.QtWidgets import QGroupBox + +import moose + from moosegui.plugins.PreferencesView import PreferencesView from moosegui.plugins.defines import * -import json -import os PREFERENCES_FILEPATH = os.path.join( os.path.dirname(os.path.abspath(__file__)) , "datastore/preferences.json" diff --git a/moosegui/plugins/default.py b/moosegui/plugins/default.py index 095838e..c31d398 100644 --- a/moosegui/plugins/default.py +++ b/moosegui/plugins/default.py @@ -1,6 +1,5 @@ -# default.py --- -# -# Filename: default.py +# -*- coding: utf-8 -*- + # Description: # Author: Subhasis Ray # Maintainer: @@ -9,49 +8,7 @@ # Last-Updated: Mon Sep 10 23:35:00 2018 (+0530) # By: Harsha # Update #: -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# The default placeholder plugin for MOOSE -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: -''' -2018 -Sep 10: replace addSolver to mooseAddChemSolver from moose.chemUtil's -2013 -Oct 5: could not recreate if object already exist in moose which was allowed earlier - now if object exist need to use element which is cleaned here -''' import sys import pickle import os @@ -60,43 +17,39 @@ from matplotlib import rcParams from matplotlib.lines import Line2D -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar +from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar rcParams.update({'figure.autolayout': True}) import moose from moose import utils -import moosegui.mtree as mtree + +from PyQt5 import QtCore, QtGui +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QIcon, QPixmap +from PyQt5.QtGui import QDoubleValidator + +from PyQt5.QtWidgets import QToolBar, QToolButton +from PyQt5.QtWidgets import QLabel, QLineEdit +from PyQt5.QtWidgets import QErrorMessage, QSizeGrip, QAction + +from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar + +from moose.chemUtil.add_Delete_ChemicalSolver import * + +# moosegui +from moosegui.global_constants import preferences from moosegui.mtoolbutton import MToolButton from moosegui.msearch import SearchWidget from moosegui.checkcombobox import CheckComboBox -from moosegui import config from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase from moosegui.PlotWidgetContainer import PlotWidgetContainer from moosegui.plugins.kkitUtil import getColor from moosegui.plugins.Runner import Runner from moosegui.global_constants import preferences from moosegui.plugins.setsolver import * - -from PyQt5 import QtCore, QtGui -from PyQt5.QtCore import Qt -from PyQt5.QtGui import QDoubleValidator -from PyQt5.QtGui import QToolBar -from PyQt5.QtGui import QToolButton -from PyQt5.QtGui import QLabel -from PyQt5.QtGui import QIcon -from PyQt5.QtGui import QLineEdit -from PyQt5.QtGui import QErrorMessage -from PyQt5.QtGui import QSizeGrip -from PyQt5.QtGui import QIcon -from PyQt5.QtGui import QPixmap -from PyQt5.QtGui import QAction -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar -#from EventBlocker import EventBlocker -# from PlotNavigationToolbar import PlotNavigationToolbar -from global_constants import preferences -#from setsolver import * -from moose.chemUtil.add_Delete_ChemicalSolver import * +from moosegui import config +from moosegui import mtree ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 diff --git a/moosegui/plugins/kkitUtil.py b/moosegui/plugins/kkitUtil.py index bf09411..d1e28d9 100644 --- a/moosegui/plugins/kkitUtil.py +++ b/moosegui/plugins/kkitUtil.py @@ -18,7 +18,8 @@ ''' from moose import Annotator,element,ChemCompt from kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,GRPItem,ComptItem -from PyQt5 import QtCore,QtGui,QtSvg + +from PyQt5 import QtCore, QtGui, QtSvg from PyQt5.QtGui import QColor from moosegui import config @@ -220,4 +221,4 @@ def findGroup(melement): def findGroup_compt(melement): while not (mooseIsInstance(melement, ["Neutral","CubeMesh", "CylMesh"])): melement = melement.parent - return melement \ No newline at end of file + return melement diff --git a/moosegui/plugins/modelBuild.py b/moosegui/plugins/modelBuild.py index 2de4909..27abd43 100644 --- a/moosegui/plugins/modelBuild.py +++ b/moosegui/plugins/modelBuild.py @@ -1,347 +1,286 @@ -import PyQt5 -import moose - -from moosegui.plugins.kkitQGraphics import * -from moosegui.plugins.kkitOrdinateUtil import * -from moosegui.plugins.kkitUtil import * -from moosegui.plugins.setsolver import * - -from moosegui.config import _logger +__author__ = "HarshaRani" +__credits__ = ["Upi Lab"] +__license__ = "GPL3" +__version__ = "1.0.0" +__maintainer__ = "HarshaRani" +__email__ = "hrani@ncbs.res.in" +__status__ = "Development" +__updated__ = "Apr 11 2018" +import moose +from kkitQGraphics import * +from kkitOrdinateUtil import * +from kkitUtil import * +import PyQt5 +from setsolver import * def updateCompartmentSize(qGraCompt): + #childBoundingRect = qGraCompt.childrenBoundingRect() childBoundingRect = calculateChildBoundingRect(qGraCompt) comptBoundingRect = qGraCompt.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = qGraCompt.pen() - comptWidth = 1 + comptWidth = 1 comptPen.setWidth(comptWidth) qGraCompt.setPen(comptPen) if not comptBoundingRect.contains(childBoundingRect): - qGraCompt.setRect(rectcompt.x() - comptWidth, - rectcompt.y() - comptWidth, - rectcompt.width() + (comptWidth * 2), - rectcompt.height() + (comptWidth * 2)) - - -def checkCreate( - scene, - view, - modelpath, - mobj, - string, - ret_string, - num, - event_pos, - layoutPt): - """ - Check each element created by drag and drop. - """ - - _logger.info("28 %s " % modelpath) - if moose.exists(modelpath + '/info'): - mType = moose.Annotator((moose.element(modelpath + '/info'))).modeltype - _logger.info(" 1 event_pos %s" % event_pos) + qGraCompt.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) + +# def checkCreate(string,num,itemAt,qGraCompt,modelRoot,scene,pos,posf,view,qGIMob): +def checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt): + # The variable 'compt' will be empty when dropping cubeMesh,cyclMesh, but rest it shd be + # compartment + # if modelpath.find('/',1) > -1: + # modelRoot = modelpath[0:modelpath.find('/',1)] + # else: + # modelRoot = modelpath + if moose.exists(modelpath+'/info'): + mType = moose.Annotator((moose.element(modelpath+'/info'))).modeltype itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) - _logger.info("2 %s" % itemAtView) pos = view.mapToScene(event_pos) - _logger.info(" 3 %s " % pos) modelpath = moose.element(modelpath) - _logger.info(" model path @34 %s " % modelpath) - if num: - string_num = ret_string + str(num) + string_num = ret_string+str(num) else: string_num = ret_string - if string == "CubeMesh" or string == "CylMesh": if string == "CylMesh": - mobj = moose.CylMesh(modelpath.path + '/' + string_num) - else: - mobj = moose.CubeMesh(modelpath.path + '/' + string_num) - + mobj = moose.CylMesh(modelpath.path+'/'+string_num) + else: + mobj = moose.CubeMesh(modelpath.path+'/'+string_num) + mobj.volume = 1e-15 - mesh = moose.element(mobj.path + '/mesh') - qGItem = ComptItem( - scene, - pos.toPoint().x(), - pos.toPoint().y(), - 90, - 90, - mobj - ) - qGItem.setPen( - QtGui.QPen( - Qt.QColor( 66, 66, 66, 100), - 1, - Qt.Qt.SolidLine, - Qt.Qt.RoundCap, - Qt.Qt.RoundJoin) - ) + mesh = moose.element(mobj.path+'/mesh') + qGItem = ComptItem(scene,pos.toPoint().x(),pos.toPoint().y(),100,100,mobj) + qGItem.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), 1, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) view.sceneContainerPt.addItem(qGItem) - qGItem.cmptEmitter.connect( - qGItem.cmptEmitter, - QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"), - layoutPt.positionChange1) - qGItem.cmptEmitter.connect( - qGItem.cmptEmitter, - QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"), - layoutPt.objectEditSlot) + qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),layoutPt.positionChange1) + qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),layoutPt.objectEditSlot) compartment = qGItem - layoutPt.qGraCompt[mobj] = qGItem - view.emit(QtCore.SIGNAL("dropped"), mobj) - + layoutPt.qGraCompt[mobj]= qGItem + view.emit(QtCore.SIGNAL("dropped"),mobj) + elif string == "Pool" or string == "BufPool": - # getting pos with respect to compartment otherwise if compartment is - # moved then pos would be wrong + #getting pos with respect to compartment otherwise if compartment is moved then pos would be wrong posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() if string == "Pool": - poolObj = moose.Pool(mobj.path + '/' + string_num) + poolObj = moose.Pool(mobj.path+'/'+string_num) else: - poolObj = moose.BufPool(mobj.path + '/' + string_num) - - poolinfo = moose.Annotator(poolObj.path + '/info') - # Compartment's one Pool object is picked to get the font size - - qGItem = PoolItem(poolObj, itemAtView) + poolObj = moose.BufPool(mobj.path+'/'+string_num) + + poolinfo = moose.Annotator(poolObj.path+'/info') + #Compartment's one Pool object is picked to get the font size + + qGItem = PoolItem(poolObj,itemAtView) layoutPt.mooseId_GObj[poolObj] = qGItem posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() bgcolor = getRandColor() - qGItem.setDisplayProperties( - posWrtComp.x(), - posWrtComp.y(), - QtGui.QColor('green'), - bgcolor) + qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('green'),bgcolor) poolinfo.color = str(bgcolor.getRgb()) - # if mType == "new_kkit": - poolinfo.x = posWrtComp.x() - poolinfo.y = posWrtComp.y() - view.emit(QtCore.SIGNAL("dropped"), poolObj) - setupItem(modelpath.path, layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"),poolObj) + setupItem(modelpath.path,layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - poolinfo.x = posWrtComp.x() - poolinfo.y = posWrtComp.y() - - # Dropping is on compartment then update Compart size - if isinstance(mobj, moose.ChemCompt): + x,y = roundoff(qGItem.scenePos(),layoutPt) + poolinfo.x = x + poolinfo.y = y + #Dropping is on compartment then update Compart size + if isinstance(mobj,moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) - - elif string == "Reac": + + elif string == "Reac": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - reacObj = moose.Reac(mobj.path + '/' + string_num) - reacinfo = moose.Annotator(reacObj.path + '/info') - qGItem = ReacItem(reacObj, itemAtView) - qGItem.setDisplayProperties( - posWrtComp.x(), posWrtComp.y(), "white", "white") - # if mType == "new_kkit": - reacinfo.x = posWrtComp.x() - reacinfo.y = posWrtComp.y() + reacObj = moose.Reac(mobj.path+'/'+string_num) + reacinfo = moose.Annotator(reacObj.path+'/info') + qGItem = ReacItem(reacObj,itemAtView) + qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") + #if mType == "new_kkit": + # reacinfo.x = posWrtComp.x() + # reacinfo.y = posWrtComp.y() layoutPt.mooseId_GObj[reacObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"), reacObj) - setupItem(modelpath.path, layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"),reacObj) + setupItem(modelpath.path,layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - # Dropping is on compartment then update Compart size - if isinstance(mobj, moose.ChemCompt): + #Dropping is on compartment then update Compart size + if isinstance(mobj,moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) + x,y = roundoff(qGItem.scenePos(),layoutPt) + reacinfo.x = x + reacinfo.y = y - elif string == "StimulusTable": + elif string == "StimulusTable": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - tabObj = moose.StimulusTable(mobj.path + '/' + string_num) - tabinfo = moose.Annotator(tabObj.path + '/info') - qGItem = TableItem(tabObj, itemAtView) - qGItem.setDisplayProperties( - posWrtComp.x(), - posWrtComp.y(), - QtGui.QColor('white'), - QtGui.QColor('white')) - # if mType == "new_kkit": - tabinfo.x = posWrtComp.x() - tabinfo.y = posWrtComp.y() + tabObj = moose.StimulusTable(mobj.path+'/'+string_num) + tabinfo = moose.Annotator(tabObj.path+'/info') + qGItem = TableItem(tabObj,itemAtView) + qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('white'),QtGui.QColor('white')) + #if mType == "new_kkit": + #tabinfo.x = posWrtComp.x() + #tabinfo.y = posWrtComp.y() layoutPt.mooseId_GObj[tabObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"), tabObj) - setupItem(modelpath.path, layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"),tabObj) + setupItem(modelpath.path,layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - # Dropping is on compartment then update Compart size - if isinstance(mobj, moose.ChemCompt): + #Dropping is on compartment then update Compart size + if isinstance(mobj,moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) + x,y = roundoff(qGItem.scenePos(),layoutPt) + tabinfo.x = x + tabinfo.y = y + elif string == "Function": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - funcObj = moose.Function(mobj.path + '/' + string_num) - funcinfo = moose.Annotator(funcObj.path + '/info') + funcObj = moose.Function(mobj.path+'/'+string_num) + funcinfo = moose.Annotator(funcObj.path+'/info') #moose.connect( funcObj, 'valueOut', mobj ,'setN' ) - poolclass = ["ZombieBufPool", "BufPool"] - comptclass = ["CubeMesh", "cyclMesh"] + poolclass = ["ZombieBufPool","BufPool"] + comptclass = ["CubeMesh","cyclMesh"] + if mobj.className in poolclass: funcParent = layoutPt.mooseId_GObj[element(mobj.path)] elif mobj.className in comptclass: funcParent = layoutPt.qGraCompt[moose.element(mobj)] posWrtComp = funcParent.mapFromScene(pos).toPoint() #posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - qGItem = FuncItem(funcObj, funcParent) - # print " function ", posWrtComp.x(),posWrtComp.y() - qGItem.setDisplayProperties( - posWrtComp.x(), - posWrtComp.y(), - QtGui.QColor('red'), - QtGui.QColor('green')) + elif mobj.className in "Neutral": + funcParent = layoutPt.qGraGrp[element(mobj)] + + qGItem = FuncItem(funcObj,funcParent) + qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('red'),QtGui.QColor('green')) layoutPt.mooseId_GObj[funcObj] = qGItem - # if mType == "new_kkit": - funcinfo.x = posWrtComp.x() - funcinfo.y = posWrtComp.y() - view.emit(QtCore.SIGNAL("dropped"), funcObj) - setupItem(modelpath.path, layoutPt.srcdesConnection) + #if mType == "new_kkit": + #funcinfo.x = posWrtComp.x() + #funcinfo.y = posWrtComp.y() + view.emit(QtCore.SIGNAL("dropped"),funcObj) + setupItem(modelpath.path,layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - # Dropping is on compartment then update Compart size + #Dropping is on compartment then update Compart size mooseCmpt = findCompartment(mobj) - if isinstance(mooseCmpt, moose.ChemCompt): + if isinstance(mooseCmpt,moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mooseCmpt)] updateCompartmentSize(compt) + x,y = roundoff(qGItem.scenePos(),layoutPt) + funcinfo.x = x + funcinfo.y = y - elif string == "Enz" or string == "MMenz": - # If 2 enz has same pool parent, then pos of the 2nd enz shd be - # displaced by some position, need to check how to deal with it + elif string == "Enz" or string == "MMenz": + #If 2 enz has same pool parent, then pos of the 2nd enz shd be displaced by some position, need to check how to deal with it posWrtComp = pos enzPool = layoutPt.mooseId_GObj[mobj] if ((mobj.parent).className == "Enz"): - QtGui.QMessageBox.information( - None, - 'Drop Not possible', - '\'{newString}\' has to have Pool as its parent and not Enzyme Complex'.format( - newString=string), - QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent and not Enzyme Complex'.format(newString =string),QtGui.QMessageBox.Ok) return else: enzparent = findCompartment(mobj) parentcompt = layoutPt.qGraCompt[enzparent] if string == "Enz": - enzObj = moose.Enz(moose.element(mobj).path + '/' + string_num) - enzinfo = moose.Annotator(enzObj.path + '/info') - moose.connect(enzObj, 'enz', mobj, 'reac') - qGItem = EnzItem(enzObj, parentcompt) + enzObj = moose.Enz(moose.element(mobj).path+'/'+string_num) + enzinfo = moose.Annotator(enzObj.path+'/info') + moose.connect( enzObj, 'enz', mobj, 'reac' ) + qGItem = EnzItem(enzObj,parentcompt) layoutPt.mooseId_GObj[enzObj] = qGItem posWrtComp = pos bgcolor = getRandColor() - qGItem.setDisplayProperties( - posWrtComp.x(), - posWrtComp.y() - 40, - QtGui.QColor('green'), - bgcolor) - # if mType == "new_kkit": - enzinfo.x = posWrtComp.x() - enzinfo.y = posWrtComp.y() - + qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-40,QtGui.QColor('green'),bgcolor) + x,y = roundoff(qGItem.scenePos(),layoutPt) + enzinfo.x = x + enzinfo.y = y enzinfo.color = str(bgcolor.name()) + enzinfo.textColor = str(QtGui.QColor('green').name()) + #if mType == "new_kkit": + #enzinfo.x = posWrtComp.x() + #enzinfo.y = posWrtComp.y() + + #enzinfo.color = str(bgcolor.name()) e = moose.Annotator(enzinfo) #e.x = posWrtComp.x() #e.y = posWrtComp.y() - Enz_cplx = enzObj.path + '/' + string_num + '_cplx' + Enz_cplx = enzObj.path+'/'+string_num+'_cplx'; cplxItem = moose.Pool(Enz_cplx) - cplxinfo = moose.Annotator(cplxItem.path + '/info') + cplxinfo = moose.Annotator(cplxItem.path+'/info') qGEnz = layoutPt.mooseId_GObj[enzObj] - qGItem = CplxItem(cplxItem, qGEnz) + qGItem = CplxItem(cplxItem,qGEnz) layoutPt.mooseId_GObj[cplxItem] = qGItem enzboundingRect = qGEnz.boundingRect() - moose.connect(enzObj, 'cplx', cplxItem, 'reac') - qGItem.setDisplayProperties( - enzboundingRect.height() / 2, - enzboundingRect.height() - 40, - QtGui.QColor('white'), - QtGui.QColor('white')) - cplxinfo.x = enzboundingRect.height() / 2 - cplxinfo.y = enzboundingRect.height() - 60 - view.emit(QtCore.SIGNAL("dropped"), enzObj) + moose.connect( enzObj, 'cplx', cplxItem, 'reac' ) + qGItem.setDisplayProperties(enzboundingRect.height()/2,enzboundingRect.height()-40,QtGui.QColor('white'),QtGui.QColor('white')) + #cplxinfo.x = enzboundingRect.height()/2 + #cplxinfo.y = enzboundingRect.height()-60 + view.emit(QtCore.SIGNAL("dropped"),enzObj) else: - enzObj = moose.MMenz(mobj.path + '/' + string_num) - enzinfo = moose.Annotator(enzObj.path + '/info') - moose.connect(mobj, "nOut", enzObj, "enzDest") - qGItem = MMEnzItem(enzObj, parentcompt) + enzObj = moose.MMenz(mobj.path+'/'+string_num) + enzinfo = moose.Annotator(enzObj.path+'/info') + moose.connect(mobj,"nOut",enzObj,"enzDest") + qGItem = MMEnzItem(enzObj,parentcompt) posWrtComp = pos bgcolor = getRandColor() - qGItem.setDisplayProperties( - posWrtComp.x(), - posWrtComp.y() - 30, - QtGui.QColor('green'), - bgcolor) - enzinfo.x = posWrtComp.x() - enzinfo.y = posWrtComp.y() + qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-30,QtGui.QColor('green'),bgcolor) + #enzinfo.x = posWrtComp.x() + #enzinfo.y = posWrtComp.y() enzinfo.color = str(bgcolor.name()) layoutPt.mooseId_GObj[enzObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"), enzObj) - setupItem(modelpath.path, layoutPt.srcdesConnection) + view.emit(QtCore.SIGNAL("dropped"),enzObj) + x,y = roundoff(qGItem.scenePos(),layoutPt) + enzinfo.x = x + enzinfo.y = y + setupItem(modelpath.path,layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - # Dropping is on compartment then update Compart size - if isinstance(enzparent, moose.ChemCompt): + + #Dropping is on compartment then update Compart size + if isinstance(enzparent,moose.ChemCompt): updateCompartmentSize(parentcompt) if view.iconScale != 1: view.updateScale(view.iconScale) - -def createObj(scene, view, modelpath, string, pos, layoutPt): +def createObj(scene,view,modelpath,string,pos,layoutPt): event_pos = pos num = 0 ret_string = " " pos = view.mapToScene(event_pos) itemAt = view.sceneContainerPt.itemAt(pos) - chemMesh = moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') + chemMesh = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') deleteSolver(modelpath) mobj = "" - if itemAt is not None: + if itemAt != None: itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) itemClass = type(itemAtView).__name__ - if (itemClass == 'QGraphicsRectItem'): + if ( itemClass == 'QGraphicsRectItem'): mobj = itemAtView.parentItem().mobj elif(itemClass == 'QGraphicsSvgItem'): mobj = itemAtView.parent().mobj else: mobj = itemAtView.mobj if string == "CubeMesh" or string == "CylMesh": - ret_string, num = findUniqId( - moose.element(modelpath), "Compartment", 0) - comptexist = moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') + ret_string,num = findUniqId(moose.element(modelpath),"Compartment",0) + comptexist = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') if not len(comptexist): - if itemAt is not None: - QtGui.QMessageBox.information( - None, - 'Drop Not possible', - '\'{newString}\' currently single compartment model building is allowed'.format( - newString=string), - QtGui.QMessageBox.Ok) + if itemAt != None: + QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) return else: mobj = moose.element(modelpath) else: - QtGui.QMessageBox.information( - None, - 'Drop Not possible', - '\'{newString}\' currently single compartment model building is allowed'.format( - newString=string), - QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) return - + elif string == "Pool" or string == "BufPool" or string == "Reac" or string == "StimulusTable": - if itemAt is None: - QtGui.QMessageBox.information( - None, - 'Drop Not possible', - '\'{newString}\' has to have compartment as its parent'.format( - newString=string), - QtGui.QMessageBox.Ok) + if itemAt == None: + QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have compartment as its parent'.format(newString =string),QtGui.QMessageBox.Ok) return else: mobj = findCompartment(mobj) - ret_string, num = findUniqId(mobj, string, num) + ret_string,num = findUniqId(mobj,string,num) elif string == "Function": - mobj = findCompartment(mobj) - ret_string, num = findUniqId(mobj, string, num) + #mobj = findCompartment(mobj) + ret_string,num = findUniqId(mobj,string,num) ''' if itemAt != None: - if ((mobj).className != "BufPool"): + if ((mobj).className != "BufPool"): QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have BufPool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) return else: @@ -351,55 +290,43 @@ def createObj(scene, view, modelpath, string, pos, layoutPt): return ''' elif string == "Enz" or string == "MMenz": - if itemAt is not None: - if ((mobj).className != "Pool" and (mobj).className != "BufPool"): - QtGui.QMessageBox.information( - None, - 'Drop Not possible', - '\'{newString}\' has to have Pool as its parent'.format( - newString=string), - QtGui.QMessageBox.Ok) + if itemAt != None: + if ((mobj).className != "Pool" and (mobj).className != "BufPool"): + QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) return else: - ret_string, num = findUniqId(mobj, string, num) + ret_string,num = findUniqId(mobj,string,num) else: - QtGui.QMessageBox.information( - None, - 'Drop Not possible', - '\'{newString}\' has to have Pool as its parent'.format( - newString=string), - QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) return - + if ret_string != " ": - checkCreate( - scene, - view, - modelpath, - mobj, - string, - ret_string, - num, - event_pos, - layoutPt) + checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt) + +def roundoff(scenePos,layoutPt): + xtest = scenePos.x()/layoutPt.defaultScenewidth + xroundoff = round(xtest,1) + ytest = scenePos.y()/layoutPt.defaultSceneheight + yroundoff = round(ytest,1) + + return(xroundoff,yroundoff) -def findUniqId(mobj, string, num): +def findUniqId(mobj,string,num): if num == 0: - path = mobj.path + '/' + string + path = mobj.path+'/'+string; else: - path = mobj.path + '/' + string + str(num) + path = mobj.path+'/'+string+str(num); if not moose.exists(path): - return(string, num) + return(string,num) else: - num += 1 - return(findUniqId(mobj, string, num)) - + num +=1; + return(findUniqId(mobj,string,num)) def findCompartment(mooseObj): if mooseObj.path == '/': return None - elif isinstance(mooseObj, ChemCompt): + elif isinstance(mooseObj,ChemCompt): return (mooseObj) else: return findCompartment(moose.element(mooseObj.parent)) diff --git a/plugins/modelBuild.py b/plugins/modelBuild.py deleted file mode 100644 index 27abd43..0000000 --- a/plugins/modelBuild.py +++ /dev/null @@ -1,332 +0,0 @@ -__author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" -__maintainer__ = "HarshaRani" -__email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Apr 11 2018" - -import moose -from kkitQGraphics import * -from kkitOrdinateUtil import * -from kkitUtil import * -import PyQt5 -from setsolver import * - -def updateCompartmentSize(qGraCompt): - #childBoundingRect = qGraCompt.childrenBoundingRect() - childBoundingRect = calculateChildBoundingRect(qGraCompt) - comptBoundingRect = qGraCompt.boundingRect() - rectcompt = comptBoundingRect.united(childBoundingRect) - comptPen = qGraCompt.pen() - comptWidth = 1 - comptPen.setWidth(comptWidth) - qGraCompt.setPen(comptPen) - if not comptBoundingRect.contains(childBoundingRect): - qGraCompt.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) - -# def checkCreate(string,num,itemAt,qGraCompt,modelRoot,scene,pos,posf,view,qGIMob): -def checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt): - # The variable 'compt' will be empty when dropping cubeMesh,cyclMesh, but rest it shd be - # compartment - # if modelpath.find('/',1) > -1: - # modelRoot = modelpath[0:modelpath.find('/',1)] - # else: - # modelRoot = modelpath - if moose.exists(modelpath+'/info'): - mType = moose.Annotator((moose.element(modelpath+'/info'))).modeltype - itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) - pos = view.mapToScene(event_pos) - modelpath = moose.element(modelpath) - if num: - string_num = ret_string+str(num) - else: - string_num = ret_string - if string == "CubeMesh" or string == "CylMesh": - if string == "CylMesh": - mobj = moose.CylMesh(modelpath.path+'/'+string_num) - else: - mobj = moose.CubeMesh(modelpath.path+'/'+string_num) - - mobj.volume = 1e-15 - mesh = moose.element(mobj.path+'/mesh') - qGItem = ComptItem(scene,pos.toPoint().x(),pos.toPoint().y(),100,100,mobj) - qGItem.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), 1, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - view.sceneContainerPt.addItem(qGItem) - qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),layoutPt.positionChange1) - qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),layoutPt.objectEditSlot) - compartment = qGItem - layoutPt.qGraCompt[mobj]= qGItem - view.emit(QtCore.SIGNAL("dropped"),mobj) - - elif string == "Pool" or string == "BufPool": - #getting pos with respect to compartment otherwise if compartment is moved then pos would be wrong - posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - if string == "Pool": - poolObj = moose.Pool(mobj.path+'/'+string_num) - else: - poolObj = moose.BufPool(mobj.path+'/'+string_num) - - poolinfo = moose.Annotator(poolObj.path+'/info') - #Compartment's one Pool object is picked to get the font size - - qGItem = PoolItem(poolObj,itemAtView) - layoutPt.mooseId_GObj[poolObj] = qGItem - posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('green'),bgcolor) - poolinfo.color = str(bgcolor.getRgb()) - view.emit(QtCore.SIGNAL("dropped"),poolObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) - layoutPt.drawLine_arrow(False) - x,y = roundoff(qGItem.scenePos(),layoutPt) - poolinfo.x = x - poolinfo.y = y - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): - compt = layoutPt.qGraCompt[moose.element(mobj)] - updateCompartmentSize(compt) - - elif string == "Reac": - posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - reacObj = moose.Reac(mobj.path+'/'+string_num) - reacinfo = moose.Annotator(reacObj.path+'/info') - qGItem = ReacItem(reacObj,itemAtView) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") - #if mType == "new_kkit": - # reacinfo.x = posWrtComp.x() - # reacinfo.y = posWrtComp.y() - layoutPt.mooseId_GObj[reacObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),reacObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) - layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): - compt = layoutPt.qGraCompt[moose.element(mobj)] - updateCompartmentSize(compt) - x,y = roundoff(qGItem.scenePos(),layoutPt) - reacinfo.x = x - reacinfo.y = y - - elif string == "StimulusTable": - posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - tabObj = moose.StimulusTable(mobj.path+'/'+string_num) - tabinfo = moose.Annotator(tabObj.path+'/info') - qGItem = TableItem(tabObj,itemAtView) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('white'),QtGui.QColor('white')) - #if mType == "new_kkit": - #tabinfo.x = posWrtComp.x() - #tabinfo.y = posWrtComp.y() - layoutPt.mooseId_GObj[tabObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),tabObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) - layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): - compt = layoutPt.qGraCompt[moose.element(mobj)] - updateCompartmentSize(compt) - x,y = roundoff(qGItem.scenePos(),layoutPt) - tabinfo.x = x - tabinfo.y = y - - elif string == "Function": - posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - funcObj = moose.Function(mobj.path+'/'+string_num) - funcinfo = moose.Annotator(funcObj.path+'/info') - #moose.connect( funcObj, 'valueOut', mobj ,'setN' ) - poolclass = ["ZombieBufPool","BufPool"] - comptclass = ["CubeMesh","cyclMesh"] - - if mobj.className in poolclass: - funcParent = layoutPt.mooseId_GObj[element(mobj.path)] - elif mobj.className in comptclass: - funcParent = layoutPt.qGraCompt[moose.element(mobj)] - posWrtComp = funcParent.mapFromScene(pos).toPoint() - #posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - elif mobj.className in "Neutral": - funcParent = layoutPt.qGraGrp[element(mobj)] - - qGItem = FuncItem(funcObj,funcParent) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('red'),QtGui.QColor('green')) - layoutPt.mooseId_GObj[funcObj] = qGItem - #if mType == "new_kkit": - #funcinfo.x = posWrtComp.x() - #funcinfo.y = posWrtComp.y() - view.emit(QtCore.SIGNAL("dropped"),funcObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) - layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - mooseCmpt = findCompartment(mobj) - if isinstance(mooseCmpt,moose.ChemCompt): - compt = layoutPt.qGraCompt[moose.element(mooseCmpt)] - updateCompartmentSize(compt) - x,y = roundoff(qGItem.scenePos(),layoutPt) - funcinfo.x = x - funcinfo.y = y - - elif string == "Enz" or string == "MMenz": - #If 2 enz has same pool parent, then pos of the 2nd enz shd be displaced by some position, need to check how to deal with it - posWrtComp = pos - enzPool = layoutPt.mooseId_GObj[mobj] - if ((mobj.parent).className == "Enz"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent and not Enzyme Complex'.format(newString =string),QtGui.QMessageBox.Ok) - return - else: - enzparent = findCompartment(mobj) - parentcompt = layoutPt.qGraCompt[enzparent] - if string == "Enz": - enzObj = moose.Enz(moose.element(mobj).path+'/'+string_num) - enzinfo = moose.Annotator(enzObj.path+'/info') - moose.connect( enzObj, 'enz', mobj, 'reac' ) - qGItem = EnzItem(enzObj,parentcompt) - layoutPt.mooseId_GObj[enzObj] = qGItem - posWrtComp = pos - bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-40,QtGui.QColor('green'),bgcolor) - x,y = roundoff(qGItem.scenePos(),layoutPt) - enzinfo.x = x - enzinfo.y = y - enzinfo.color = str(bgcolor.name()) - enzinfo.textColor = str(QtGui.QColor('green').name()) - #if mType == "new_kkit": - #enzinfo.x = posWrtComp.x() - #enzinfo.y = posWrtComp.y() - - #enzinfo.color = str(bgcolor.name()) - e = moose.Annotator(enzinfo) - #e.x = posWrtComp.x() - #e.y = posWrtComp.y() - Enz_cplx = enzObj.path+'/'+string_num+'_cplx'; - cplxItem = moose.Pool(Enz_cplx) - cplxinfo = moose.Annotator(cplxItem.path+'/info') - qGEnz = layoutPt.mooseId_GObj[enzObj] - qGItem = CplxItem(cplxItem,qGEnz) - layoutPt.mooseId_GObj[cplxItem] = qGItem - enzboundingRect = qGEnz.boundingRect() - moose.connect( enzObj, 'cplx', cplxItem, 'reac' ) - qGItem.setDisplayProperties(enzboundingRect.height()/2,enzboundingRect.height()-40,QtGui.QColor('white'),QtGui.QColor('white')) - #cplxinfo.x = enzboundingRect.height()/2 - #cplxinfo.y = enzboundingRect.height()-60 - view.emit(QtCore.SIGNAL("dropped"),enzObj) - - else: - enzObj = moose.MMenz(mobj.path+'/'+string_num) - enzinfo = moose.Annotator(enzObj.path+'/info') - moose.connect(mobj,"nOut",enzObj,"enzDest") - qGItem = MMEnzItem(enzObj,parentcompt) - posWrtComp = pos - bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-30,QtGui.QColor('green'),bgcolor) - #enzinfo.x = posWrtComp.x() - #enzinfo.y = posWrtComp.y() - enzinfo.color = str(bgcolor.name()) - layoutPt.mooseId_GObj[enzObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),enzObj) - x,y = roundoff(qGItem.scenePos(),layoutPt) - enzinfo.x = x - enzinfo.y = y - setupItem(modelpath.path,layoutPt.srcdesConnection) - layoutPt.drawLine_arrow(False) - - #Dropping is on compartment then update Compart size - if isinstance(enzparent,moose.ChemCompt): - updateCompartmentSize(parentcompt) - if view.iconScale != 1: - view.updateScale(view.iconScale) - -def createObj(scene,view,modelpath,string,pos,layoutPt): - event_pos = pos - num = 0 - ret_string = " " - pos = view.mapToScene(event_pos) - itemAt = view.sceneContainerPt.itemAt(pos) - chemMesh = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') - deleteSolver(modelpath) - mobj = "" - - if itemAt != None: - itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) - itemClass = type(itemAtView).__name__ - if ( itemClass == 'QGraphicsRectItem'): - mobj = itemAtView.parentItem().mobj - elif(itemClass == 'QGraphicsSvgItem'): - mobj = itemAtView.parent().mobj - else: - mobj = itemAtView.mobj - if string == "CubeMesh" or string == "CylMesh": - ret_string,num = findUniqId(moose.element(modelpath),"Compartment",0) - comptexist = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') - if not len(comptexist): - if itemAt != None: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) - return - else: - mobj = moose.element(modelpath) - else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) - return - - elif string == "Pool" or string == "BufPool" or string == "Reac" or string == "StimulusTable": - if itemAt == None: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have compartment as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - else: - mobj = findCompartment(mobj) - ret_string,num = findUniqId(mobj,string,num) - - elif string == "Function": - #mobj = findCompartment(mobj) - ret_string,num = findUniqId(mobj,string,num) - ''' - if itemAt != None: - if ((mobj).className != "BufPool"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have BufPool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - else: - ret_string,num = findUniqId(mobj,string,num) - else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have BufPool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - ''' - elif string == "Enz" or string == "MMenz": - if itemAt != None: - if ((mobj).className != "Pool" and (mobj).className != "BufPool"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - else: - ret_string,num = findUniqId(mobj,string,num) - else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - - if ret_string != " ": - checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt) - -def roundoff(scenePos,layoutPt): - xtest = scenePos.x()/layoutPt.defaultScenewidth - xroundoff = round(xtest,1) - - ytest = scenePos.y()/layoutPt.defaultSceneheight - yroundoff = round(ytest,1) - - return(xroundoff,yroundoff) - -def findUniqId(mobj,string,num): - if num == 0: - path = mobj.path+'/'+string; - else: - path = mobj.path+'/'+string+str(num); - if not moose.exists(path): - return(string,num) - else: - num +=1; - return(findUniqId(mobj,string,num)) - -def findCompartment(mooseObj): - if mooseObj.path == '/': - return None - elif isinstance(mooseObj,ChemCompt): - return (mooseObj) - else: - return findCompartment(moose.element(mooseObj.parent)) diff --git a/suds/sax/text.py b/suds/sax/text.py index bf82553..3323f80 100644 --- a/suds/sax/text.py +++ b/suds/sax/text.py @@ -30,7 +30,8 @@ class Text( type("") ): @ivar escaped: The (optional) XML special character escaped flag. @type escaped: bool """ - __slots__ = ('lang', 'escaped') + + slots = ['lang', 'escaped'] @classmethod def __valid(cls, *args): @@ -91,12 +92,12 @@ def __repr__(self): def __getstate__(self): state = {} - for k in self.__slots__: + for k in self.slots: state[k] = getattr(self, k) return state def __setstate__(self, state): - for k in self.__slots__: + for k in self.slots: setattr(self, k, state[k]) From 7be19ae560b6c4663671942a0151927cc8dadc02 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 23:13:56 +0530 Subject: [PATCH 48/66] fixes in one more file. --- moosegui/PlotWidgetContainer.py | 30 ++++++++---------------------- moosegui/biomodelsclient.py | 16 +++++++++------- moosegui/sidebar.py | 20 +++++++++----------- 3 files changed, 26 insertions(+), 40 deletions(-) diff --git a/moosegui/PlotWidgetContainer.py b/moosegui/PlotWidgetContainer.py index 00c5d4f..b82b276 100644 --- a/moosegui/PlotWidgetContainer.py +++ b/moosegui/PlotWidgetContainer.py @@ -1,38 +1,24 @@ - # -*- coding: utf-8 -*- - -""" -""" -__credits__ = ["Upi Lab"] __author__ = "Aviral Goel" +__credits__ = ["Upi Lab"] __license__ = "GPL3" -__version__ = "1.0.0" __maintainer__ = "Aviral Goel", "HarshaRani" __email__ = "goel.aviral@gmail.com" -__status__ = "Development" -__updated__ = "Jul 26 2017" import sys import os -import PyQt5 from PyQt5 import QtGui, Qt -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QSizeGrip -from PyQt5.QtGui import QDockWidget -from PyQt5.QtGui import QLayout -from PyQt5.QtGui import QVBoxLayout -from PyQt5.QtGui import QGridLayout -from PyQt5.QtGui import QScrollArea -from PyQt5.QtGui import QToolBar -from PyQt5.QtGui import QSizeGrip -from PyQt5.QtGui import QSplitter +from PyQt5.QtWidgets import QWidget, QSizeGrip +from PyQt5.QtWidgets import QDockWidget, QLayout, QVBoxLayout +from PyQt5.QtWidgets import QGridLayout, QScrollArea, QToolBar +from PyQt5.QtWidgets import QSizeGrip, QSplitter + +from moosegui import default +from moosegui import sidebar import moose -import default -from . import sidebar -# from default import PlotWidget ELECTRICAL = 0 CHEMICAL = 1 diff --git a/moosegui/biomodelsclient.py b/moosegui/biomodelsclient.py index 4336df9..a7c2bf8 100644 --- a/moosegui/biomodelsclient.py +++ b/moosegui/biomodelsclient.py @@ -12,9 +12,14 @@ import pickle import moose + +from PyQt5.Qt import Qt +from PyQt5 import QtCore, QtGui +from PyQt5.QtWidgets import QDialog, QWidget + +from moosegui import config from suds.client import Client from suds.transport.http import HttpTransport as SudsHttpTransport -from moosegui import config BIOMODELS_WSDL_URI = 'http://www.ebi.ac.uk/biomodels-main/services/BioModelsWebServices?wsdl' proxyOpts = dict() @@ -39,9 +44,6 @@ def __init__(self, WSDL_URI=BIOMODELS_WSDL_URI): except Exception as e: print(e) -from PyQt5.Qt import Qt -from PyQt5 import QtCore, QtGui -from PyQt5.QtWidgets import QDialog class BioModelsClientWidget(QDialog): """This is a widget with a Biomodels Client. It provides simple @@ -60,10 +62,10 @@ class BioModelsClientWidget(QDialog): ('Model Ids by Publication', 'getModelsIdByPublication'), ('Model Ids by Taxonomy', 'getModelsIdByTaxonomy'),] def __init__(self, parent=None): - QtGui.QWidget.__init__(self, parent) + QWidget.__init__(self, parent) self.setWindowTitle('Connect to BioModels') self.client = BioModelsClient() - self.queryPanel = QtGui.QWidget(self) + self.queryPanel = QWidget(self) self.queryModelLabel = QtGui.QLabel('Get ', self.queryPanel) self.queryModelCombo = QtGui.QComboBox(self.queryPanel) self.queryLineEdit = QtGui.QLineEdit(self.queryPanel) @@ -83,7 +85,7 @@ def __init__(self, parent=None): layout.addWidget(self.queryPanel) layout.addWidget(self.resultsPanel) - self.queryPanel1 = QtGui.QWidget(self) + self.queryPanel1 = QWidget(self) self.importButton = QtGui.QPushButton('Import',self.queryPanel1) self.importButton.setEnabled(False) self.closeButton = QtGui.QPushButton('Close',self.queryPanel1) diff --git a/moosegui/sidebar.py b/moosegui/sidebar.py index a977889..88aa7da 100644 --- a/moosegui/sidebar.py +++ b/moosegui/sidebar.py @@ -1,9 +1,7 @@ -from __future__ import print_function - # -*- coding: utf-8 -*- - -"""Sidebar for plugins. The sidebar comprises of actions. +""" +Sidebar for plugins. The sidebar comprises of actions. Currently mode, connect and settings are defined. """ @@ -18,14 +16,14 @@ import sys import os -from . import SettingsDialog from PyQt5 import QtGui, Qt -from PyQt5.QtGui import QDialog -from PyQt5.QtGui import QHBoxLayout -from PyQt5.QtGui import QPixmap -from PyQt5.QtGui import QIcon -from PyQt5.QtGui import QPushButton -from PyQt5.QtGui import QAction +from PyQt5.QtWidgets import QDialog +from PyQt5.QtWidgets import QHBoxLayout +from PyQt5.QtWidgets import QPushButton +from PyQt5.QtWidgets import QAction +from PyQt5.QtGui import QPixmap, QIcon + +from moosegui import SettingsDialog ICON_DIRECTORY = "../icons" HAND_ICON_FILENAME = "hand.png" From 1c8cdfc30b2e4592cea92b0ac4e675808404ff67 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 23:32:46 +0530 Subject: [PATCH 49/66] Fixed QWidget import error. --- moosegui/configwidget.py | 56 +++++-------------------------- moosegui/defaults.py | 3 ++ moosegui/msearch.py | 9 ++--- moosegui/plugins/buildkkit.py | 15 ++++----- moosegui/plugins/default.py | 28 +++++++--------- moosegui/plugins/kkit.py | 63 ++++++++++++++++++----------------- moosegui/sidebar.py | 51 +--------------------------- 7 files changed, 69 insertions(+), 156 deletions(-) diff --git a/moosegui/configwidget.py b/moosegui/configwidget.py index 69f6d9e..3051910 100644 --- a/moosegui/configwidget.py +++ b/moosegui/configwidget.py @@ -1,57 +1,19 @@ -# firsttime.py --- -# -# Filename: firsttime.py +# -*- coding: utf-8 -*- + # Description: # Author: Subhasis Ray # Maintainer: # Created: Sun Jul 11 15:31:00 2010 (+0530) -# Version: -# Last-Updated: Sat Sep 22 15:30:15 2012 (+0530) -# By: subha -# Update #: 505 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Wizard to take the user through selection of some basic -# configurations for MOOSE gui. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import shutil import os -from . import config + from PyQt5 import QtGui, QtCore -from . import config -from .utils import * +from PyQt5.QtWidgets import QWidget + +from moosegui import config +from moosegui import config +from moosegui.utils import * class ConfigWidget(QtGui.QDialog): """Widget to configure MOOSE.""" @@ -76,7 +38,7 @@ def __init__(self, *args, **kwargs): def _createGeneralPanel(self): if hasattr(self, 'generalPanel'): return self.generalPanel - self.generalPanel = QtGui.QWidget(self) + self.generalPanel = QWidget(self) self.generalPanelLabel = QtGui.QLabel(self.generalPanel) self.generalPanelLabel.setText('
General configuration for MOOSE
') self.colormapDirLabel = QtGui.QLabel('Colormap directory', diff --git a/moosegui/defaults.py b/moosegui/defaults.py index 79c9988..992e515 100644 --- a/moosegui/defaults.py +++ b/moosegui/defaults.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + __credits__ = ["Upi Lab"] __author__ = "Subhasis" __license__ = "GPL3" @@ -16,6 +18,7 @@ 'HHChannel2D':['Ik','Gk'], 'CaConc':['Ca'] } + FIELD_UNITS={ 'volume':'m3', 'Kd' : 'mM', diff --git a/moosegui/msearch.py b/moosegui/msearch.py index 0052897..9c580e6 100644 --- a/moosegui/msearch.py +++ b/moosegui/msearch.py @@ -51,11 +51,12 @@ import sys from PyQt5 import QtGui, QtCore +from PyQt5.QtWidgets import QWidget from PyQt5.Qt import Qt import moose -class SearchWidget(QtGui.QWidget): +class SearchWidget(QWidget): """Widget to search MOOSE model tree using wildcards. SIGNALS: @@ -66,7 +67,7 @@ class SearchWidget(QtGui.QWidget): executed = QtCore.pyqtSignal(list, name='executed') def __init__(self, *args): - QtGui.QWidget.__init__(self, *args) + QWidget.__init__(self, *args) layout = QtGui.QVBoxLayout() self.modeCombo = QtGui.QComboBox() self.modeCombo.addItem('Basic', QtCore.QVariant(QtCore.QString('basic'))) @@ -91,7 +92,7 @@ def switchModeSlot(self, text): def getBasicPanel(self): """Create a widget for basic level usage.""" if not hasattr(self, '_basicPanel'): - self._basicPanel = QtGui.QWidget() + self._basicPanel = QWidget() self.searchRootEdit = QtGui.QLineEdit() self.searchRootEdit.returnPressed.connect(self.searchSlot) self.searchRootLabel = QtGui.QLabel('Search under') @@ -131,7 +132,7 @@ def getAdvancedPanel(self): """Create a panel for advanced users who can enter the search string directly.""" if not hasattr(self, '_advancedPanel'): - self._advancedPanel = QtGui.QWidget(self) + self._advancedPanel = QWidget(self) self._searchEdit = QtGui.QLineEdit() self._searchEdit.returnPressed.connect(self.searchSlot) self._searchLabel = QtGui.QLabel('Search string:') diff --git a/moosegui/plugins/buildkkit.py b/moosegui/plugins/buildkkit.py index bcc24f3..0c1e760 100644 --- a/moosegui/plugins/buildkkit.py +++ b/moosegui/plugins/buildkkit.py @@ -7,8 +7,8 @@ import posixpath from PyQt5 import QtGui, QtCore, Qt +from PyQt5.QtWidgets import QFileDialog, QWidget -from moose import * import networkx as nx import numpy as np @@ -74,16 +74,16 @@ def __init__(self, plugin): self.fileinsertMenu = QtGui.QMenu('&File') if not hasattr(self,'SaveModelAction'): self.saveModelAction = QtGui.QAction('SaveToSBMLFile', self) - self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) + self.saveModelAction.setShortcut( "Ctrl+S" ) + self.saveModelAction.triggered.connect(self.SaveModelDialogSlot) self.fileinsertMenu.addAction(self.saveModelAction) + self._menus.append(self.fileinsertMenu) def SaveModelDialogSlot(self): type_sbml = 'SBML' - print(" here in saveModelDialog") filters = {'SBML(*.xml)': type_sbml} - filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) + filename,filter_ = QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) extension = "" if str(filename).rfind('.') != -1: filename = filename[:str(filename).rfind('.')] @@ -92,7 +92,6 @@ def SaveModelDialogSlot(self): if filename: filename = filename+extension if filters[str(filter_)] == 'SBML': - print("here",filename," ",self.plugin.modelRoot) moose.writeSBML(str(filename),self.plugin.modelRoot) def getToolPanes(self): return super(KkitEditorView, self).getToolPanes() @@ -156,7 +155,7 @@ def updateModelView(self): if not m: # when we want an empty GraphicView while creating new model, # then remove all the view and add an empty view - if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): + if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) self.view = GraphicalView(self.sceneContainer,self.border,self) self.layout().addWidget(self.view) @@ -222,7 +221,7 @@ def updateModelView(self): # All the moose Object are connected for visualization self.drawLine_arrow(itemignoreZooming=False) - if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): + if hasattr(self, 'view') and isinstance(self.view,QWidget): self.layout().removeWidget(self.view) self.view = GraphicalView(self.sceneContainer,self.border,self) hLayout = QtGui.QGridLayout(self) diff --git a/moosegui/plugins/default.py b/moosegui/plugins/default.py index c31d398..8feadfc 100644 --- a/moosegui/plugins/default.py +++ b/moosegui/plugins/default.py @@ -4,10 +4,6 @@ # Author: Subhasis Ray # Maintainer: # Created: Tue Nov 13 15:58:31 2012 (+0530) -# Version: -# Last-Updated: Mon Sep 10 23:35:00 2018 (+0530) -# By: Harsha -# Update #: import sys import pickle @@ -23,7 +19,6 @@ import moose from moose import utils - from PyQt5 import QtCore, QtGui from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon, QPixmap @@ -32,6 +27,14 @@ from PyQt5.QtWidgets import QToolBar, QToolButton from PyQt5.QtWidgets import QLabel, QLineEdit from PyQt5.QtWidgets import QErrorMessage, QSizeGrip, QAction +from PyQt5.QtWidgets import QWidget +from PyQt5.QtWidgets import QSizeGrip +from PyQt5.QtWidgets import QLayout +from PyQt5.QtWidgets import QScrollArea +from PyQt5.QtWidgets import QMenu + +from PyQt5.QtCore import pyqtSlot, Signal, pyqtSignal + from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar @@ -338,7 +341,7 @@ def getSchedulingDockWidget(self): self.schedulingDockWidget = QtGui.QDockWidget('Scheduling') self.schedulingDockWidget.setFeatures( QtGui.QDockWidget.NoDockWidgetFeatures); self.schedulingDockWidget.setWindowFlags(Qt.CustomizeWindowHint) - titleWidget = QtGui.QWidget(); + titleWidget = QWidget(); self.schedulingDockWidget.setTitleBarWidget(titleWidget) widget = SchedulingWidget() widget.setDataRoot(self.dataRoot) @@ -353,7 +356,7 @@ def getSchedulingDockWidget(self): return self.schedulingDockWidget -class SchedulingWidget(QtGui.QWidget): +class SchedulingWidget(QWidget): """Widget for scheduling. Important member fields: @@ -381,7 +384,7 @@ class SchedulingWidget(QtGui.QWidget): continueRun = QtCore.pyqtSignal(float, float, name='continueRun') def __init__(self, *args, **kwargs): - QtGui.QWidget.__init__(self, *args, **kwargs) + QWidget.__init__(self, *args, **kwargs) self.simulationInterval = None self.updateInterval = None self.runTime = None @@ -670,13 +673,6 @@ def setModelType(self): legend = None canvas = None -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QSizeGrip -from PyQt5.QtGui import QLayout -from PyQt5.QtGui import QScrollArea -from PyQt5.QtGui import QMenu -from PyQt5.QtCore import pyqtSlot,SIGNAL,SLOT, Signal, pyqtSignal - class PlotWidget(QWidget): """A wrapper over CanvasWidget to handle additional MOOSE-specific stuff. @@ -1091,7 +1087,7 @@ def getPlotListWidget(self): """An internal widget to display the list of elements and their plottable fields in comboboxes.""" if not hasattr(self, '_plotListWidget'): - self._plotListWidget = QtGui.QWidget(self) + self._plotListWidget = QWidget(self) layout = QtGui.QGridLayout(self._plotListWidget) self._plotListWidget.setLayout(layout) layout.addWidget(QtGui.QLabel('

Elements matching search criterion will be listed here

'), 0, 0) diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index 1b5c491..50d87a4 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -24,47 +24,49 @@ import math import sys +import posixpath +from os.path import expanduser + from PyQt5 import QtGui, QtCore, Qt -from default import * -from moose import * +from PyQt5.QtWidgets import QWidget, QGridLayout +from PyQt5.QtGui import QColor + +# moosegui +from moosegui import RunWidget +from moosegui.mplugin import * + +from moosegui.plugins.default import * +from moosegui.plugins.kkitUtil import * +from moosegui.plugins.kkitQGraphics import * +from moosegui.plugins.kkitViewcontrol import * +from moosegui.plugins.kkitCalcArrow import * +from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.plugins.mtoolbutton import MToolButton + +# moose from moose import SBML from moose.genesis.writeKkit import mooseWriteKkit -from mplugin import * -from kkitUtil import * -from kkitQGraphics import * -from kkitViewcontrol import * -from kkitCalcArrow import * -from kkitOrdinateUtil import * -import posixpath -from mtoolbutton import MToolButton -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QGridLayout -from PyQt5.QtGui import QColor -import RunWidget -from os.path import expanduser -#from setsolver import * from moose.chemUtil.add_Delete_ChemicalSolver import * + import re class KkitPlugin(MoosePlugin): - """Default plugin for MOOSE GUI""" + """ + Default plugin for MOOSE GUI + """ + def __init__(self, *args): - #print args MoosePlugin.__init__(self, *args) self.view = None - #self.plotView = PlotView(self) - #self.getRunView() - #self.plotView.dataTable = self.view._centralWidget.dataTable - #self.plotView.updateCallback = self.view._centralWidget.legendUpdate - #self.view._centralWidget.legendUpdate() - #self.dataTable = DataTable(self.dataRoot) self.fileinsertMenu = QtGui.QMenu('&File') + if not hasattr(self,'SaveModelAction'): #self.fileinsertMenu.addSeparator() self.saveModelAction = QtGui.QAction('Save', self) - self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) + self.saveModelAction.setShortcut( "Ctrl+S" ) self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) self.fileinsertMenu.addAction(self.saveModelAction) + self._menus.append(self.fileinsertMenu) self.getEditorView() @@ -380,7 +382,7 @@ def updateModelView(self): #At the time of model building # when we want an empty GraphicView while creating new model, # then remove all the view and add an empty view - if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): + if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) #self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) #self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) @@ -399,7 +401,7 @@ def updateModelView(self): # maxmium and minimum coordinates of the objects specified in kkit file. #self.mooseObjOntoscene() #self.drawLine_arrow() - if hasattr(self, 'view') and isinstance(self.view, QtGui.QWidget): + if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) # self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) @@ -1195,7 +1197,7 @@ def resetColor(self): item.returnEllispeSize() if __name__ == "__main__": - app = QtGui.QApplication(sys.argv) + app = QApplication(sys.argv) size = QtCore.QSize(1024 ,768) #modelPath = 'Kholodenko' modelPath = 'acc27' @@ -1222,8 +1224,7 @@ def resetColor(self): dt.show() except IOError as what: - (errno, strerror) = what - print("Error number",errno,"(%s)" %(strerror)) - sys.exit(1) + print(e) + quit(1) sys.exit(app.exec_()) diff --git a/moosegui/sidebar.py b/moosegui/sidebar.py index 88aa7da..2b26fa1 100644 --- a/moosegui/sidebar.py +++ b/moosegui/sidebar.py @@ -161,38 +161,10 @@ def settings_action( parent def sidebar(): return QtGui.QToolBar() - # bar.setOrientation(Qt.Qt.Vertical) - # return bar - # if left_spacer: - # left_spacer = QWidget() - # left_spacer.setSizePolicy( QtGui.QSizePolicy.Expanding - # , QtGui.QSizePolicy.Expanding - # ) - # toolbar.addWidget(left_spacer) - - # for action in actions: - # toolbar.addAction(action(toolbar)) - - # if right_spacer: - # right_spacer = QWidget() - # right_spacer.setSizePolicy( QtGui.QSizePolicy.Expanding - # , QtGui.QSizePolicy.Expanding - # ) - # toolbar.addWidget(right_spacer) - - # return toolbar - - - - -# def connect_action(): - -# def settings_action(): - def main(): - app = QtGui.QApplication(sys.argv) + app = QApplication(sys.argv) window = QtGui.QMainWindow() widget = SettingsDialog.SettingsWidget({ 'LeakyIaF':['Vm'], @@ -218,24 +190,3 @@ def main(): if __name__ == "__main__": main() - -# # spacer widget for left -# # spacer widget for right -# # you can't add the same widget to both left and right. you need two different widgets. -# right_spacer = QtGui.QWidget() -# right_spacer.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - -# # here goes the left one -# # toolbar.addWidget(left_spacer) -# # some dummy actions - - - -# ################################################################################ -# # Hand Tool -# ################################################################################ - - - - - From fc56fea820a738e02009ef8af0e1bf39048a9390 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Wed, 12 Jun 2019 23:45:00 +0530 Subject: [PATCH 50/66] Some more fixes. --- moosegui/MWindow.py | 23 +++++++++-------------- moosegui/plugins/default.py | 13 +++++-------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index be3766f..ab53615 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -373,33 +373,28 @@ def getPluginNames(self): self.pluginNames = [name for name in self.pluginNames if name] return self.pluginNames - def loadPluginModule(self, name, re=False): + def loadPluginModule(self, name, _reload=False): """Load a plugin module by name. First check if the plugin is already loaded. If so return the existing one. Otherwise, search load the plugin as a python module from {MOOSE_GUI_DIRECTORY}/plugins directory. - If re is True, the plugin is reloaded. + If re is True, the plugin is _reloaded. """ - _logger.info( "Loading plugin '%s' from %s" % ( name, - config.MOOSE_PLUGIN_DIR ) - ) - if (not re) and name in sys.modules: + _logger.info("Loading plugin '%s' from %s" % (name, config.MOOSE_PLUGIN_DIR)) + if (not _reload) and name in sys.modules: _logger.debug( "\tThis plugin is already loaded" ) return sys.modules[name] - fp, pathname, description = imp.find_module( - name, [ config.MOOSE_PLUGIN_DIR ] - ) - _logger.debug( "Found modules %s, %s" % (pathname, description) ) + fp, pathname, description = imp.find_module(name, [config.MOOSE_PLUGIN_DIR]) try: module = imp.load_module(name, fp, pathname, description) except Exception as e: - _logger.warn( "Could not load module %s" % fp ) - _logger.warn( "\tError was %s" % e ) module = "" + extra = traceback.format_exc() + _logger.warn( "Could not load module %s: '%s'" % (fp, extra)) if fp: fp.close() @@ -443,7 +438,7 @@ def getShellWidget(self): self.shellWidget.setVisible(False) return self.shellWidget - def loadPluginClass(self, name, re=False): + def loadPluginClass(self, name, _reload=False): """Load the plugin class from a plugin module. A plugin module should have only one subclass of @@ -453,7 +448,7 @@ def loadPluginClass(self, name, re=False): if name in self._loadedPlugins: return self._loadedPlugins[name] - pluginModule = self.loadPluginModule(name, re=re) + pluginModule = self.loadPluginModule(name, _reload=_reload) for classname, classobj in inspect.getmembers(pluginModule, inspect.isclass): if issubclass(classobj, mplugin.MoosePluginBase): self._loadedPlugins[name] = classobj diff --git a/moosegui/plugins/default.py b/moosegui/plugins/default.py index 8feadfc..d2f4c31 100644 --- a/moosegui/plugins/default.py +++ b/moosegui/plugins/default.py @@ -16,11 +16,9 @@ from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar rcParams.update({'figure.autolayout': True}) -import moose -from moose import utils - from PyQt5 import QtCore, QtGui from PyQt5.QtCore import Qt +from PyQt5.QtCore import pyqtSlot, Signal, pyqtSignal from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtGui import QDoubleValidator @@ -33,13 +31,12 @@ from PyQt5.QtWidgets import QScrollArea from PyQt5.QtWidgets import QMenu -from PyQt5.QtCore import pyqtSlot, Signal, pyqtSignal - - -from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar - +# moose +import moose +from moose import utils from moose.chemUtil.add_Delete_ChemicalSolver import * + # moosegui from moosegui.global_constants import preferences from moosegui.mtoolbutton import MToolButton From 5d71222998cc63259ba069a00dde9b372708bcb7 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 10:24:43 +0530 Subject: [PATCH 51/66] cyclic imports. --- Makefile | 10 ++-- moosegui/PlotWidgetContainer.py | 66 +++++-------------------- moosegui/checkcombobox.py | 76 ++++++----------------------- moosegui/mtoolbutton.py | 58 ++++------------------ moosegui/plugins/PreferencesView.py | 29 +++++------ 5 files changed, 54 insertions(+), 185 deletions(-) diff --git a/Makefile b/Makefile index 8c7d51d..0bf2d10 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,19 @@ +PY := $(shell which python3) + all : check build check : - python -m compileall -q . + $(PY) -m compileall -q . build : - python setup.py sdist bdist + $(PY) setup.py sdist bdist install : uninstall git clean -fxd . - python -m pip install . --upgrade --user + $(PY) -m pip install . --upgrade --user test: install ( cd /tmp && moosegui ) uninstall : - python -m pip uninstall moosegui -y + $(PY) -m pip uninstall moosegui -y diff --git a/moosegui/PlotWidgetContainer.py b/moosegui/PlotWidgetContainer.py index b82b276..23bdd5e 100644 --- a/moosegui/PlotWidgetContainer.py +++ b/moosegui/PlotWidgetContainer.py @@ -6,22 +6,20 @@ __maintainer__ = "Aviral Goel", "HarshaRani" __email__ = "goel.aviral@gmail.com" +from PyQt5 import QtGui, QtCore +from PyQt5.QtWidgets import QWidget +from PyQt5.QtWidgets import QVBoxLayout +from PyQt5.QtWidgets import QScrollArea +from PyQt5.QtWidgets import QSplitter -import sys -import os -from PyQt5 import QtGui, Qt -from PyQt5.QtWidgets import QWidget, QSizeGrip -from PyQt5.QtWidgets import QDockWidget, QLayout, QVBoxLayout -from PyQt5.QtWidgets import QGridLayout, QScrollArea, QToolBar -from PyQt5.QtWidgets import QSizeGrip, QSplitter - -from moosegui import default -from moosegui import sidebar +from moosegui.plugins import default +from moosegui.plugins import sidebar import moose ELECTRICAL = 0 CHEMICAL = 1 + class PlotWidgetContainer(QWidget): def __init__(self, modelRoot, *args, **kwargs): @@ -40,31 +38,21 @@ def __init__(self, modelRoot, *args, **kwargs): self.data = moose.element(self.modelRoot + "/data") else: self.data = moose.Neutral(self.modelRoot + "/data") - else: self.data = moose.element("/data") self._layout = QVBoxLayout() self.graphs = QSplitter() - self.graphs.setOrientation(PyQt5.QtCore.Qt.Vertical) + self.graphs.setOrientation(QtCore.Qt.Vertical) self.graphsArea = QScrollArea() - # self.graphsLayout = QGridLayout() - # self.menubar = self.createMenuBar() self.rowIndex = 0 - # self.setSizePolicy( QtGui.QSizePolicy.Expanding - # , QtGui.QSizePolicy.Expanding - # ) - self.graphs.setSizePolicy( QtGui.QSizePolicy.Expanding - , QtGui.QSizePolicy.Expanding - ) + , QtGui.QSizePolicy.Expanding + ) self.setAcceptDrops(True) - # self._layout.setSizeConstraint( QLayout.SetNoConstraint ) - # self.graphs.setLayout(self.graphsLayout) self.graphsArea.setWidget(self.graphs) self.graphsArea.setWidgetResizable(True) self.graphWidgets = [] - # self._layout.addWidget(self.menubar) self._layout.addWidget(self.graphsArea) self.setLayout(self._layout) @@ -94,8 +82,6 @@ def deleteWidget(self, graphWidget): def createMenuBar(self): bar = sidebar.sidebar() bar.addAction(sidebar.add_graph_action(bar, lambda event: self.addPlotWidget() )) - # bar.addAction(sidebar.delete_graph_action(bar, lambda event: self.addPlotWidget() )) - # bar.addAction(sidebar.list_action(bar, self.showPlotView)) return bar def addPlotWidget(self, row = None, col = 0, graph = None): @@ -105,7 +91,6 @@ def addPlotWidget(self, row = None, col = 0, graph = None): if self.modelType == ELECTRICAL: for axes in list(widget.canvas.axes.values()): - # axes.autoscale(False, axis='x', tight=True) axes.set_ylim(bottom = -0.07, top= 0.03) if row == None: @@ -115,7 +100,6 @@ def addPlotWidget(self, row = None, col = 0, graph = None): self.graphWidgets.append(widget) widget.widgetClosedSignal.connect(self.deleteWidget) widget.addGraph.connect(lambda event : self.addPlotWidget()) - # widget.resize(1, 1); return widget def showPlotView(self): @@ -145,31 +129,3 @@ def extendXAxes(self, xlim): def plotAllData(self): for graphWidget in self.graphWidgets: graphWidget.plotAllData() - - #print(graphWidget) - # def plotAll(self): - # self.apply(lambda obj: obj.plotAll()) - - # def plotAllData(self): - # selt.plotWidgetContainer.plotAllData() - - # def genColorMap(self,tableObject): - # pass - - # def onclick(self,event1): - # pass - - # def addTimeSeries(self, table, *args, **kwargs): - # pass - - # def addRasterPlot(self, eventtable, yoffset=0, *args, **kwargs): - # pass - - # def extendXAxes(self, xlim): - # pass - - # def saveCsv(self, line,directory): - # pass - - # def saveAllCsv(self): - # pass diff --git a/moosegui/checkcombobox.py b/moosegui/checkcombobox.py index a033c14..8f111b0 100644 --- a/moosegui/checkcombobox.py +++ b/moosegui/checkcombobox.py @@ -1,54 +1,13 @@ -# checkcombobox.py --- -# -# Filename: checkcombobox.py # Description: # Author: # Maintainer: # Created: Wed Jun 5 15:06:21 2013 (+0530) # Version: -# Last-Updated: Wed Jun 5 18:42:50 2013 (+0530) -# By: subha -# Update #: 188 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# ComboBox with checkable items. Inspired by the same in libqxt. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import sys - from PyQt5 import QtCore, QtGui from PyQt5.Qt import Qt +from PyQt5.QtWidgets import QComboBox, QApplication, QMainWindow from collections import defaultdict class CheckComboBoxModel(QtGui.QStandardItemModel): @@ -62,13 +21,13 @@ def flags(self, index): return Qt.ItemIsUserCheckable | Qt.ItemIsSelectable | Qt.ItemIsEnabled def data(self, index, role): - if index.isValid() and role == Qt.CheckStateRole: + if index and role == Qt.CheckStateRole: return QtCore.QVariant(self.checked_dict[index]) else: return QtGui.QStandardItemModel.data(self, index, role) def setData(self, index, value, role=Qt.EditRole): - if not index.isValid(): + if not index: return False ok = QtGui.QStandardItemModel.setData(self, index, value, role) if ok and role == Qt.CheckStateRole: @@ -85,15 +44,13 @@ def __init__(self, parent): def eventFilter(self, obj, event): etype = event.type() if etype == event.KeyPress or etype == event.KeyRelease: - if obj == self and \ - (event.key() == Qt.Key_UP or - event.key() == Qt.Key_Down): + if obj == self and event.key() == Qt.Key_UP or event.key() == Qt.Key_Down: self.parent().showPopup() return True elif event.key() == Qt.Key_Enter or \ - event.key() == Qt.Key_Return or \ - event.key() == Qt.Key_Escape: - QtGui.QComboBox.hidePopup(self.parent()) + event.key() == Qt.Key_Return or \ + event.key() == Qt.Key_Escape: + QComboBox.hidePopup(self.parent()) if event.key() != Qt.Key_Escape: return True elif etype == event.MouseButtonPress: @@ -102,11 +59,11 @@ def eventFilter(self, obj, event): self.parent()._containerMousePress = False return False -class CheckComboBox(QtGui.QComboBox): +class CheckComboBox(QComboBox): """Specialization of QComboBox to allow checkable items. This is inspired by the same class in Qxt""" def __init__(self, *args): - QtGui.QComboBox.__init__(self, *args) + QComboBox.__init__(self, *args) self._containerMousePress = False self.setModel(CheckComboBoxModel()) self.activated.connect(self.toggleCheckState) @@ -119,7 +76,7 @@ def __init__(self, *args): def hidePopup(self): """This is to disable hiding of the popup when an item is clicked.""" if self._containerMousePress: - QtGui.QComboBox.hidePopup(self) + QComboBox.hidePopup(self) def itemCheckState(self, index): return self.itemData(index, Qt.CheckStateRole).toInt()[0] @@ -135,14 +92,14 @@ def checkedItems(self): def setCheckedItems(self, textItemList): for text in textItemList: index = self.findText(text) - if index.isValid(): + if index: self.setItemCheckState(index, Qt.Checked) else: self.setItemCheckState(index, Qt.Unchecked) def toggleCheckState(self, index): value = self.itemData(index, Qt.CheckStateRole) - if value.isValid(): + if value: state = value.toInt()[0] if state == Qt.Checked: self.setItemData(index, Qt.Unchecked, Qt.CheckStateRole) @@ -151,8 +108,8 @@ def toggleCheckState(self, index): def main(): """Test main: load a model and display the tree for it""" - app = QtGui.QApplication([]) - mainwin = QtGui.QMainWindow() + app = QApplication([]) + mainwin = QMainWindow() mainwin.setWindowTitle('CheckComboBox test') box = CheckComboBox() for ii in range(5): @@ -161,9 +118,6 @@ def main(): mainwin.show() sys.exit(app.exec_()) + if __name__ == '__main__': main() - - -# -# checkcombobox.py ends here diff --git a/moosegui/mtoolbutton.py b/moosegui/mtoolbutton.py index 8d3074e..8339ea7 100644 --- a/moosegui/mtoolbutton.py +++ b/moosegui/mtoolbutton.py @@ -1,60 +1,22 @@ -# mtoolbutton.py --- -# -# Filename: mtoolbutton.py +# -*- coding: utf-8 -*- # Description: Subclass of QToolButton to allow drag and drop # Author: # Maintainer: # Created: Fri Jun 14 14:24:11 2013 (+0530) -# Version: -# Last-Updated: Fri Jun 14 16:28:51 2013 (+0530) -# By: subha -# Update #: 89 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# -# Code: import sys from PyQt5 import QtGui, QtCore +from PyQt5.QtWidgets import QToolButton, QToolBar, QMainWindow +from PyQt5.QtWidgets import QApplication, QTextBrowser from PyQt5.Qt import Qt -class MToolButton(QtGui.QToolButton): +class MToolButton(QToolButton): """QToolButton subclass with dragEvent reimplemented. It sends the text of the ToolButton as the mimedata. """ def __init__(self, *args): - QtGui.QToolButton.__init__(self, *args) + QToolButton.__init__(self, *args) self.dragStartPosition = QtCore.QPoint(0,0) def mousePressEvent(self, event): @@ -74,10 +36,10 @@ def mouseMoveEvent(self, event): dropAction = drag.exec_(Qt.CopyAction) -class MyWidget(QtGui.QTextBrowser): +class MyWidget(QTextBrowser): """Class for testing the drag and drop ability of MToolButton""" def __init__(self, *args): - QtGui.QTextBrowser.__init__(self, *args) + QTextBrowser.__init__(self, *args) self.dropCount = 0 self.setPlainText('Drops: %d' % (self.dropCount)) self.setAcceptDrops(True) @@ -104,10 +66,10 @@ def dropEvent(self, event): def test_main(): """Test main: see if drag and drop is working""" - app = QtGui.QApplication(sys.argv) - mainwin = QtGui.QMainWindow() + app = QApplication(sys.argv) + mainwin = QMainWindow() mainwin.setWindowTitle('MTooButton') - toolbar = QtGui.QToolBar() + toolbar = QToolBar() mainwin.addToolBar(toolbar) button = MToolButton() button.setText('test') diff --git a/moosegui/plugins/PreferencesView.py b/moosegui/plugins/PreferencesView.py index 3c0ee36..9ed67f7 100644 --- a/moosegui/plugins/PreferencesView.py +++ b/moosegui/plugins/PreferencesView.py @@ -1,21 +1,16 @@ +# -*- coding: utf-8 -*- import PyQt5 from PyQt5 import Qt, QtGui, QtCore from PyQt5.QtCore import pyqtSignal -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QButtonGroup -from PyQt5.QtGui import QRadioButton -from PyQt5.QtGui import QVBoxLayout -from PyQt5.QtGui import QLabel -from PyQt5.QtGui import QGridLayout -from PyQt5.QtGui import QLineEdit -from PyQt5.QtGui import QDoubleValidator -from PyQt5.QtGui import QComboBox -from PyQt5.QtGui import QTabWidget -from PyQt5.QtGui import QPushButton -from PyQt5.QtGui import QColorDialog +from PyQt5.QtWidgets import QWidget, QButtonGroup, QRadioButton +from PyQt5.QtWidgets import QVBoxLayout, QLineEdit, QGridLayout +from PyQt5.QtWidgets import QLineEdit, QComboBox, QLabel +from PyQt5.QtWidgets import QTabWidget, QPushButton, QColorDialog +from PyQt5.QtWidgets import QColorDialog, QSizePolicy +from PyQt5.QtWidgets import QApplication from PyQt5.QtGui import QColor -from PyQt5.QtGui import QSizePolicy +from PyQt5.QtGui import QDoubleValidator import sys class PreferencesView(QTabWidget): @@ -78,7 +73,7 @@ def create(self): def createChemicalSettingsTab(self): chemicalSettingsTab = QWidget() - layout = QtGui.QGridLayout() + layout = QGridLayout() chemicalSettingsTab.setLayout(layout) layout.addWidget(QLabel('Simulation dt'), 0, 0) @@ -134,7 +129,7 @@ def createElectricalSettingsTab(self): def createElectricalSimulationSettingsTab(self): widget = QWidget() - layout = QtGui.QGridLayout() + layout = QGridLayout() widget.setLayout(layout) layout.addWidget(QLabel('Simulation dt'), 0, 0) @@ -169,7 +164,7 @@ def createElectricalSimulationSettingsTab(self): def createElectricalSimulationVisualizationTab(self): widget = QWidget() - layout = QtGui.QGridLayout() + layout = QGridLayout() widget.setLayout(layout) layout.addWidget(QLabel('Base Membrane Voltage'), 1, 0) @@ -229,7 +224,7 @@ def createFloatingPointEditor(self, value = 0.0, minValue = float("-inf"), maxVa return floatingPointEditor def main(): - app = QtGui.QApplication(sys.argv) + app = QApplication(sys.argv) widget = PreferencesView() widget.show() sys.exit(app.exec_()) From d18631bc66b587068e6a895f43b3c8ecfe5bb6a2 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 10:30:44 +0530 Subject: [PATCH 52/66] mtree is fixed. --- moosegui/mtree.py | 88 ++++++++++--------------------------- moosegui/plugins/default.py | 2 +- 2 files changed, 23 insertions(+), 67 deletions(-) diff --git a/moosegui/mtree.py b/moosegui/mtree.py index 3d5ed4e..ea2c7b9 100644 --- a/moosegui/mtree.py +++ b/moosegui/mtree.py @@ -1,54 +1,14 @@ -# mtree.py --- -# -# Filename: mtree.py +# -*- coding: utf-8 -*- + # Description: # Author: Subhasis Ray # Maintainer: # Created: Tue May 14 11:51:35 2013 (+0530) -# Version: -# Last-Updated: Fri Jun 14 16:13:08 2013 (+0530) -# By: subha -# Update #: 154 -# URL: -# Keywords: -# Compatibility: -# -# - -# Commentary: -# -# Implementation of moose tree widget. This can be used by multiple -# components in the moose gui. -# -# - -# Change log: -# -# -# -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 3, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth -# Floor, Boston, MA 02110-1301, USA. -# -# - -# Code: import sys from PyQt5 import QtGui, QtCore from PyQt5.Qt import Qt +from PyQt5.QtWidgets import QTreeWidgetItem, QTreeWidget import moose @@ -117,22 +77,21 @@ def flags(self, index): return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable -class MooseTreeItem(QtGui.QTreeWidgetItem): +class MooseTreeItem(QTreeWidgetItem): def __init__(self, *args): - QtGui.QTreeWidgetItem.__init__(self, *args) + QTreeWidgetItem.__init__(self, *args) self.mobj = None def setObject(self, element): self.mobj = moose.element(element) - self.setText(0, QtCore.QString(self.mobj.path.rpartition('/')[-1])) - self.setText(1, QtCore.QString(self.mobj.className)) - #self.setToolTip(0, QtCore.QString('class:' + self.mooseObj_.className)) + self.setText(0, self.mobj.path.rpartition('/')[-1]) + self.setText(1, self.mobj.className) def updateSlot(self): - self.setText(0, QtCore.QString(self.mobj.name)) + self.setText(0, self.mobj.name) -class MooseTreeWidget(QtGui.QTreeWidget): +class MooseTreeWidget(QTreeWidget): """Widget for displaying MOOSE model tree. """ @@ -159,7 +118,7 @@ def __init__(self, *args): elementInserted(melement) emitted when a new element is inserted. """ - QtGui.QTreeWidget.__init__(self, *args) + QTreeWidget.__init__(self, *args) self.header().hide() self.rootElement = moose.element('/') self.odict = {} @@ -242,25 +201,26 @@ def setCurrentItem(self, item): - adds ability to set item by corresponding moose object. """ - if isinstance(item, QtGui.QTreeWidgetItem): - QtGui.QTreeWidget.setCurrentItem(self, item) + if isinstance(item, QTreeWidgetItem): + QTreeWidget.setCurrentItem(self, item) return mobj = moose.element(item) - QtGui.QTreeWidget.setCurrentItem(self, self.odict[mobj]) + QTreeWidget.setCurrentItem(self, self.odict[mobj]) def updateItemSlot(self, element): self.odict[element].updateSlot() def main(): - """Test main: load a model and display the tree for it""" + """ + Test main: load a model and display the tree for it + """ + import sys + from PyQt5.QtWidgets import QApplication, QMainWindow model = moose.Neutral('/model') - moose.loadModel('../Demos/Genesis_files/Kholodenko.g', '/model/Kholodenko') - # tab = moose.element('/model/Kholodenko/graphs/conc1/MAPK_PP.Co') - # print tab - # for t in tab.children: - # print t - app = QtGui.QApplication(sys.argv) - mainwin = QtGui.QMainWindow() + modelfile = sys.argv[1] + moose.loadModel(modelfile, '/model') + app = QApplication(sys.argv) + mainwin = QMainWindow() mainwin.setWindowTitle('Model tree test') tree = MooseTreeWidget() tree.recreateTree(root='/model/') @@ -268,10 +228,6 @@ def main(): mainwin.show() sys.exit(app.exec_()) - if __name__ == "__main__": main() - -# -# mtree.py ends here diff --git a/moosegui/plugins/default.py b/moosegui/plugins/default.py index d2f4c31..d1f4024 100644 --- a/moosegui/plugins/default.py +++ b/moosegui/plugins/default.py @@ -43,13 +43,13 @@ from moosegui.msearch import SearchWidget from moosegui.checkcombobox import CheckComboBox from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase -from moosegui.PlotWidgetContainer import PlotWidgetContainer from moosegui.plugins.kkitUtil import getColor from moosegui.plugins.Runner import Runner from moosegui.global_constants import preferences from moosegui.plugins.setsolver import * from moosegui import config from moosegui import mtree +# from moosegui.PlotWidgetContainer import PlotWidgetContainer ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 From cf272074ead6ac533f3e7ac7fdee292db55b12ef Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 10:33:49 +0530 Subject: [PATCH 53/66] Added a test script and fixed mtree. --- data/Kholodenko.g | 528 ++++++++++++++++++++++++++++++++++++++++++++++ moosegui/mtree.py | 11 +- 2 files changed, 534 insertions(+), 5 deletions(-) create mode 100644 data/Kholodenko.g diff --git a/data/Kholodenko.g b/data/Kholodenko.g new file mode 100644 index 0000000..f6d4c5a --- /dev/null +++ b/data/Kholodenko.g @@ -0,0 +1,528 @@ +//genesis +// kkit Version 11 flat dumpfile + +// Saved on Sun May 18 16:25:59 2014 + +include kkit {argv 1} + +FASTDT = 5e-05 +SIMDT = 0.005 +CONTROLDT = 10 +PLOTDT = 10 +MAXTIME = 6000 +TRANSIENT_TIME = 2 +VARIABLE_DT_FLAG = 1 +DEFAULT_VOL = 1.6667e-21 +VERSION = 11.0 +setfield /file/modpath value /home2/bhalla/scripts/modules +kparms + +//genesis + +initdump -version 3 -ignoreorphans 1 +simobjdump doqcsinfo filename accessname accesstype transcriber developer \ + citation species tissue cellcompartment methodology sources \ + model_implementation model_validation x y z +simobjdump table input output alloced step_mode stepsize x y z +simobjdump xtree path script namemode sizescale +simobjdump xcoredraw xmin xmax ymin ymax +simobjdump xtext editable +simobjdump xgraph xmin xmax ymin ymax overlay +simobjdump xplot pixflags script fg ysquish do_slope wy +simobjdump group xtree_fg_req xtree_textfg_req plotfield expanded movealone \ + link savename file version md5sum mod_save_flag x y z +simobjdump geometry size dim shape outside xtree_fg_req xtree_textfg_req x y \ + z +simobjdump kpool DiffConst CoInit Co n nInit mwt nMin vol slave_enable \ + geomname xtree_fg_req xtree_textfg_req x y z +simobjdump kreac kf kb notes xtree_fg_req xtree_textfg_req x y z +simobjdump kenz CoComplexInit CoComplex nComplexInit nComplex vol k1 k2 k3 \ + keepconc usecomplex notes xtree_fg_req xtree_textfg_req link x y z +simobjdump stim level1 width1 delay1 level2 width2 delay2 baselevel trig_time \ + trig_mode notes xtree_fg_req xtree_textfg_req is_running x y z +simobjdump xtab input output alloced step_mode stepsize notes editfunc \ + xtree_fg_req xtree_textfg_req baselevel last_x last_y is_running x y z +simobjdump kchan perm gmax Vm is_active use_nernst notes xtree_fg_req \ + xtree_textfg_req x y z +simobjdump transport input output alloced step_mode stepsize dt delay clock \ + kf xtree_fg_req xtree_textfg_req x y z +simobjdump proto x y z +simobjdump text str +simundump geometry /kinetics/geometry 0 1.6667e-21 3 sphere "" white black 0 \ + 0 0 +simundump text /kinetics/notes 0 "" +call /kinetics/notes LOAD \ +"" +simundump group /kinetics/MAPK 0 yellow black x 0 0 "" MAPK \ + /home2/bhalla/scripts/modules/MAPK_0.g 0 0 0 1 10 0 +simundump text /kinetics/MAPK/notes 0 \ + "This is the oscillatory MAPK model from Kholodenko 2000\nEur J. Biochem 267:1583-1588\nThe original model is formulated in terms of idealized\nMichaelis-Menten enzymes and the enzyme-substrate complex\nconcentrations are therefore assumed negligible. The\ncurrent implementation of the model uses explicit enzyme\nreactions involving substrates and is therefore an\napproximation to the Kholodenko...." +call /kinetics/MAPK/notes LOAD \ +"This is the oscillatory MAPK model from Kholodenko 2000" \ +"Eur J. Biochem 267:1583-1588" \ +"The original model is formulated in terms of idealized" \ +"Michaelis-Menten enzymes and the enzyme-substrate complex" \ +"concentrations are therefore assumed negligible. The" \ +"current implementation of the model uses explicit enzyme" \ +"reactions involving substrates and is therefore an" \ +"approximation to the Kholodenko model. The approximation is" \ +"greatly improved if the enzyme is flagged as Available" \ +"which is an option in Kinetikit. This flag means that the" \ +"enzyme protein concentration is not reduced even when it" \ +"is involved in a complex. However, the substrate protein" \ +"continues to participate in enzyme-substrate complexes" \ +"and its concentration is therefore affected. Overall," \ +"this model works almost the same as the Kholodenko model" \ +"but the peak MAPK-PP amplitudes are a little reduced and" \ +"the period of oscillations is about 10% longer." \ +"If the enzymes are not flagged as Available then the" \ +"oscillations commence only when the Km for enzyme 1" \ +"is set to 0.1 uM." +simundump kpool /kinetics/MAPK/MAPK 0 0 0.3 0.3 0.3 0.3 0 0 1 0 \ + /kinetics/geometry 35 yellow -8 -7 0 +simundump text /kinetics/MAPK/MAPK/notes 0 \ + "The total concn. of MAPK is 300nM \nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MAPK/notes LOAD \ +"The total concn. of MAPK is 300nM " \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/MKKK 0 0 0.1 0.1 0.1 0.1 0 0 1 0 \ + /kinetics/geometry 16 yellow -8 5 0 +simundump text /kinetics/MAPK/MKKK/notes 0 \ + "The total concn. of MKKK is 100nM \nfrom\nKholodenko, 2000" +call /kinetics/MAPK/MKKK/notes LOAD \ +"The total concn. of MKKK is 100nM " \ +"from" \ +"Kholodenko, 2000" +simundump kpool /kinetics/MAPK/MKK 0 0 0.3 0.3 0.3 0.3 0 0 1 0 \ + /kinetics/geometry 60 yellow -8 -1 0 +simundump text /kinetics/MAPK/MKK/notes 0 \ + "The total concn. of MKK is 300nM \nfrom\nKholodenko,2000" +call /kinetics/MAPK/MKK/notes LOAD \ +"The total concn. of MKK is 300nM " \ +"from" \ +"Kholodenko,2000" +simundump kpool /kinetics/MAPK/int1 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 30 yellow -4 4 0 +simundump text /kinetics/MAPK/int1/notes 0 \ + "This is the intermediate enzyme which catalyses the \ndephosphorylation of MKKK-P to MKKK. The concentration\nis set to 1 nM based on\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int1/notes LOAD \ +"This is the intermediate enzyme which catalyses the " \ +"dephosphorylation of MKKK-P to MKKK. The concentration" \ +"is set to 1 nM based on" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int1/2 0 0 0 0 0 0.001 156.25 1 0.25 0 1 "" red \ + 30 "" -4 5 0 +simundump text /kinetics/MAPK/int1/2/notes 0 \ + "Km is 8nM and Vmax is 0.25nM.s-1 \nfrom\nKholodenko, 2000." +call /kinetics/MAPK/int1/2/notes LOAD \ +"Km is 8nM and Vmax is 0.25nM.s-1 " \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/MKKK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 51 yellow 0 5 0 +simundump text /kinetics/MAPK/MKKK-P/notes 0 \ + "This is the phosphorylated form of MKKK which converts MKK\nto MKK-P and then to MKK-PP\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MKKK-P/notes LOAD \ +"This is the phosphorylated form of MKKK which converts MKK" \ +"to MKK-P and then to MKK-PP" \ +"from" \ +"Kholodenko, 2000." +simundump kenz /kinetics/MAPK/MKKK-P/3 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 51 "" -4 2 0 +simundump text /kinetics/MAPK/MKKK-P/3/notes 0 \ + "Km is 15 nM and Vmax is 0.025s-1\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/MKKK-P/3/notes LOAD \ +"Km is 15 nM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/MKKK-P/4 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 51 "" 4 2 0 +simundump text /kinetics/MAPK/MKKK-P/4/notes 0 \ + "Km is 15nM and Vmax is 0.025s-1\nfrom \nKholodenko, 2000." +call /kinetics/MAPK/MKKK-P/4/notes LOAD \ +"Km is 15nM and Vmax is 0.025s-1" \ +"from " \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/int3 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry blue yellow -4 -2 0 +simundump text /kinetics/MAPK/int3/notes 0 \ + "This intermediate enzyme catalyses the dephosphorylation of\nMKK-P to MKK. The concentration is 1nM\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int3/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MKK-P to MKK. The concentration is 1nM" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int3/6 0 0 0 0 0 0.001 250 3 0.75 0 1 "" red \ + blue "" -4 -1 0 +simundump text /kinetics/MAPK/int3/6/notes 0 \ + "The Km is 15nM and the Vmax is 0.75nM.s-1\nfrom\nKholodenko 2000." +call /kinetics/MAPK/int3/6/notes LOAD \ +"The Km is 15nM and the Vmax is 0.75nM.s-1" \ +"from" \ +"Kholodenko 2000." +simundump kpool /kinetics/MAPK/int5 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 1 yellow -4 -8 0 +simundump text /kinetics/MAPK/int5/notes 0 \ + "This catalyses the conversion of MAPK-P to MAPK. The \nconcenration is 1nM.\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int5/notes LOAD \ +"This catalyses the conversion of MAPK-P to MAPK. The " \ +"concenration is 1nM." \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int5/10 0 0 0 0 0 0.001 166.67 2 0.5 0 1 "" red \ + 1 "" -4 -7 0 +simundump text /kinetics/MAPK/int5/10/notes 0 \ + "The Km is 15nM and Vmax is 0.5nM.s-1\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int5/10/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1" \ +"from" \ +"Kholodenko, 2000" +simundump kpool /kinetics/MAPK/MKK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry 5 \ + yellow 0 -1 0 +simundump text /kinetics/MAPK/MKK-P/notes 0 \ + "This is the single phoshorylated form of MKK.\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MKK-P/notes LOAD \ +"This is the single phoshorylated form of MKK." \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/MAPK-P 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 55 yellow 0 -7 0 +simundump text /kinetics/MAPK/MAPK-P/notes 0 \ + "This is the single phopshorylated form of MAPK\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MAPK-P/notes LOAD \ +"This is the single phopshorylated form of MAPK" \ +"from" \ +"Kholodenko, 2000." +simundump kpool /kinetics/MAPK/int2 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 2 yellow 4 -2 0 +simundump text /kinetics/MAPK/int2/notes 0 \ + "This intermediate enzyme which catalyses the dephosphorylation of\nMKK-PP to MKK-P. The concentration is 1nM.\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int2/notes LOAD \ +"This intermediate enzyme which catalyses the dephosphorylation of" \ +"MKK-PP to MKK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int2/5 0 0 0 0 0 0.001 250 3 0.75 0 1 "" red 2 \ + "" 4 -1 0 +simundump text /kinetics/MAPK/int2/5/notes 0 \ + "The Km is 15nM and Vmax is 0.75nM.s-1 \nfrom\nKholodenko, 2000\n" +call /kinetics/MAPK/int2/5/notes LOAD \ +"The Km is 15nM and Vmax is 0.75nM.s-1 " \ +"from" \ +"Kholodenko, 2000" \ +"" +simundump kpool /kinetics/MAPK/int4 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 17 yellow 4 -8 0 +simundump text /kinetics/MAPK/int4/notes 0 \ + "This intermediate enzyme catalyses the dephosphorylation of\nMAPK-PP to MAPK-P. The concentration is 1nM.\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int4/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MAPK-PP to MAPK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/int4/9 0 0 0 0 0 0.001 166.67 2 0.5 0 1 "" red \ + 17 "" 4 -7 0 +simundump text /kinetics/MAPK/int4/9/notes 0 \ + "The Km is 15nM and Vmax is 0.5nM.s-1 \nfrom\nKholodenko, 2000" +call /kinetics/MAPK/int4/9/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1 " \ +"from" \ +"Kholodenko, 2000" +simundump kpool /kinetics/MAPK/Ras-MKKKK 0 0 0.001 0.001 0.001 0.001 0 0 1 0 \ + /kinetics/geometry 11 yellow 6 8 0 +simundump text /kinetics/MAPK/Ras-MKKKK/notes 0 \ + "The concn. of Ras-MKKKK* is set to 1 nM implicitly\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/Ras-MKKKK/notes LOAD \ +"The concn. of Ras-MKKKK* is set to 1 nM implicitly" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/Ras-MKKKK/1 0 0 0 0 0 0.001 1250 10 2.5 0 1 "" \ + red 11 "" -4 8 0 +simundump text /kinetics/MAPK/Ras-MKKKK/1/notes 0 \ + "The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that\nthere is 1 nM of the Ras-MKKKK.\nFrom Kholodenko, 2000.\n\nIf the enzymes are not flagged as Available, then this\nKm should be set to 0.1 to obtain oscillations." +call /kinetics/MAPK/Ras-MKKKK/1/notes LOAD \ +"The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that" \ +"there is 1 nM of the Ras-MKKKK." \ +"From Kholodenko, 2000." \ +"" \ +"If the enzymes are not flagged as Available, then this" \ +"Km should be set to 0.1 to obtain oscillations." +simundump kpool /kinetics/MAPK/inactiveRas-MKKK 0 0 0 0 0 0 0 0 1 0 \ + /kinetics/geometry 30 yellow 11 8 0 +simundump text /kinetics/MAPK/inactiveRas-MKKK/notes 0 \ + "This is the inactive form of Ras-MKKK. Based on the\nreaction scheme from Kholodenko 2000, this is equivalent\nto a binding of the MAPK-PP to the Ras. The amount of\nRas in the model is small enough that negligible amounts\nof MAPK are involved in this reaction. So it is a fair\napproximation to the negative feedback mechanism from\nKholodenko, 2000." +call /kinetics/MAPK/inactiveRas-MKKK/notes LOAD \ +"This is the inactive form of Ras-MKKK. Based on the" \ +"reaction scheme from Kholodenko 2000, this is equivalent" \ +"to a binding of the MAPK-PP to the Ras. The amount of" \ +"Ras in the model is small enough that negligible amounts" \ +"of MAPK are involved in this reaction. So it is a fair" \ +"approximation to the negative feedback mechanism from" \ +"Kholodenko, 2000." +simundump kreac /kinetics/MAPK/Neg_feedback 0 1 0.009 "" white yellow 11 2 0 +simundump text /kinetics/MAPK/Neg_feedback/notes 0 \ + "From Kholodenko, 2000 Eur J Biochem 267\nthe Kd is 9 nM. We use a rather fast Kf of 1/sec/uM\nso that equilibrium is maintained.\n" +call /kinetics/MAPK/Neg_feedback/notes LOAD \ +"From Kholodenko, 2000 Eur J Biochem 267" \ +"the Kd is 9 nM. We use a rather fast Kf of 1/sec/uM" \ +"so that equilibrium is maintained." \ +"" +simundump kpool /kinetics/MAPK/MKK-PP 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 0 yellow 8 -1 0 +simundump text /kinetics/MAPK/MKK-PP/notes 0 \ + "This is the double phosphorylated and active form of MKK\nfrom\nKholodenko, 2000" +call /kinetics/MAPK/MKK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MKK" \ +"from" \ +"Kholodenko, 2000" +simundump kenz /kinetics/MAPK/MKK-PP/7 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 0 "" -4 -4 0 +simundump text /kinetics/MAPK/MKK-PP/7/notes 0 \ + "The Km is 15nM which is 0.015uM Vmax is 0.025s-1\nfrom\nKholodenko, 2000.\n" +call /kinetics/MAPK/MKK-PP/7/notes LOAD \ +"The Km is 15nM which is 0.015uM Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000." \ +"" +simundump kenz /kinetics/MAPK/MKK-PP/8 0 0 0 0 0 0.001 8.3333 0.1 0.025 0 1 \ + "" red 0 "" 4 -4 0 +simundump text /kinetics/MAPK/MKK-PP/8/notes 0 \ + "The Km is 15nM which is 0.015uM and Vmax is 0.025s-1\nfrom\nKholodenko, 2000\n" +call /kinetics/MAPK/MKK-PP/8/notes LOAD \ +"The Km is 15nM which is 0.015uM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" \ +"" +simundump kpool /kinetics/MAPK/MAPK-PP 0 0 0 0 0 0 0 0 1 0 /kinetics/geometry \ + 58 yellow 8 -7 0 +simundump text /kinetics/MAPK/MAPK-PP/notes 0 \ + "This is the double phosphorylated and active form of MAPK.\nfrom\nKholodenko, 2000." +call /kinetics/MAPK/MAPK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MAPK." \ +"from" \ +"Kholodenko, 2000." +simundump text /kinetics/geometry/notes 0 "" +call /kinetics/geometry/notes LOAD \ +"" +simundump xgraph /graphs/conc1 0 0 6000 0 0.3 0 +simundump xgraph /graphs/conc2 0 0 6000 4.5157e-05 0.3 0 +simundump xplot /graphs/conc1/Ras-MKKKK.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 11 0 0 1 +simundump xplot /graphs/conc1/MKKK-P.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 51 0 0 1 +simundump xplot /graphs/conc1/MKK-PP.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 0 0 0 1 +simundump xplot /graphs/conc1/MAPK-PP.Co 3 524288 \ + "delete_plot.w ; edit_plot.D " 58 0 0 1 +simundump xgraph /moregraphs/conc3 0 0 6000 0 1 0 +simundump xgraph /moregraphs/conc4 0 0 6000 0 1 0 +simundump xcoredraw /edit/draw 0 -10 13 -10 12 +simundump xtree /edit/draw/tree 0 \ + /kinetics/#[],/kinetics/#[]/#[],/kinetics/#[]/#[]/#[][TYPE!=proto],/kinetics/#[]/#[]/#[][TYPE!=linkinfo]/##[] \ + "edit_elm.D ; drag_from_edit.w " auto 0.6 +simundump xtext /file/notes 0 1 +xtextload /file/notes \ +"22 Jan 2002" \ +" " \ +" This model is based on Kholodenko, B.N." \ +" Eur. J. Biochem. 267, 1583-1588(2000)" \ +"" +addmsg /kinetics/MAPK/MKK-PP/7 /kinetics/MAPK/MAPK REAC sA B +addmsg /kinetics/MAPK/int5/10 /kinetics/MAPK/MAPK MM_PRD pA +addmsg /kinetics/MAPK/Ras-MKKKK/1 /kinetics/MAPK/MKKK REAC sA B +addmsg /kinetics/MAPK/int1/2 /kinetics/MAPK/MKKK MM_PRD pA +addmsg /kinetics/MAPK/MKKK-P/3 /kinetics/MAPK/MKK REAC sA B +addmsg /kinetics/MAPK/int3/6 /kinetics/MAPK/MKK MM_PRD pA +addmsg /kinetics/MAPK/int1 /kinetics/MAPK/int1/2 ENZYME n +addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/int1/2 SUBSTRATE n +addmsg /kinetics/MAPK/Ras-MKKKK/1 /kinetics/MAPK/MKKK-P MM_PRD pA +addmsg /kinetics/MAPK/int1/2 /kinetics/MAPK/MKKK-P REAC sA B +addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/MKKK-P/3 ENZYME n +addmsg /kinetics/MAPK/MKK /kinetics/MAPK/MKKK-P/3 SUBSTRATE n +addmsg /kinetics/MAPK/MKKK-P /kinetics/MAPK/MKKK-P/4 ENZYME n +addmsg /kinetics/MAPK/MKK-P /kinetics/MAPK/MKKK-P/4 SUBSTRATE n +addmsg /kinetics/MAPK/int3 /kinetics/MAPK/int3/6 ENZYME n +addmsg /kinetics/MAPK/MKK-P /kinetics/MAPK/int3/6 SUBSTRATE n +addmsg /kinetics/MAPK/int5 /kinetics/MAPK/int5/10 ENZYME n +addmsg /kinetics/MAPK/MAPK-P /kinetics/MAPK/int5/10 SUBSTRATE n +addmsg /kinetics/MAPK/MKKK-P/4 /kinetics/MAPK/MKK-P REAC sA B +addmsg /kinetics/MAPK/MKKK-P/3 /kinetics/MAPK/MKK-P MM_PRD pA +addmsg /kinetics/MAPK/int3/6 /kinetics/MAPK/MKK-P REAC sA B +addmsg /kinetics/MAPK/int2/5 /kinetics/MAPK/MKK-P MM_PRD pA +addmsg /kinetics/MAPK/MKK-PP/8 /kinetics/MAPK/MAPK-P REAC sA B +addmsg /kinetics/MAPK/MKK-PP/7 /kinetics/MAPK/MAPK-P MM_PRD pA +addmsg /kinetics/MAPK/int5/10 /kinetics/MAPK/MAPK-P REAC sA B +addmsg /kinetics/MAPK/int4/9 /kinetics/MAPK/MAPK-P MM_PRD pA +addmsg /kinetics/MAPK/int2 /kinetics/MAPK/int2/5 ENZYME n +addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/int2/5 SUBSTRATE n +addmsg /kinetics/MAPK/int4 /kinetics/MAPK/int4/9 ENZYME n +addmsg /kinetics/MAPK/MAPK-PP /kinetics/MAPK/int4/9 SUBSTRATE n +addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/Ras-MKKKK REAC A B +addmsg /kinetics/MAPK/Ras-MKKKK /kinetics/MAPK/Ras-MKKKK/1 ENZYME n +addmsg /kinetics/MAPK/MKKK /kinetics/MAPK/Ras-MKKKK/1 SUBSTRATE n +addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/inactiveRas-MKKK REAC B A +addmsg /kinetics/MAPK/MAPK-PP /kinetics/MAPK/Neg_feedback SUBSTRATE n +addmsg /kinetics/MAPK/Ras-MKKKK /kinetics/MAPK/Neg_feedback SUBSTRATE n +addmsg /kinetics/MAPK/inactiveRas-MKKK /kinetics/MAPK/Neg_feedback PRODUCT n +addmsg /kinetics/MAPK/MKKK-P/4 /kinetics/MAPK/MKK-PP MM_PRD pA +addmsg /kinetics/MAPK/int2/5 /kinetics/MAPK/MKK-PP REAC sA B +addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/MKK-PP/7 ENZYME n +addmsg /kinetics/MAPK/MAPK /kinetics/MAPK/MKK-PP/7 SUBSTRATE n +addmsg /kinetics/MAPK/MKK-PP /kinetics/MAPK/MKK-PP/8 ENZYME n +addmsg /kinetics/MAPK/MAPK-P /kinetics/MAPK/MKK-PP/8 SUBSTRATE n +addmsg /kinetics/MAPK/MKK-PP/8 /kinetics/MAPK/MAPK-PP MM_PRD pA +addmsg /kinetics/MAPK/int4/9 /kinetics/MAPK/MAPK-PP REAC sA B +addmsg /kinetics/MAPK/Neg_feedback /kinetics/MAPK/MAPK-PP REAC A B +addmsg /kinetics/MAPK/Ras-MKKKK /graphs/conc1/Ras-MKKKK.Co PLOT Co *Ras-MKKKK.Co *11 +addmsg /kinetics/MAPK/MKKK-P /graphs/conc1/MKKK-P.Co PLOT Co *MKKK-P.Co *51 +addmsg /kinetics/MAPK/MKK-PP /graphs/conc1/MKK-PP.Co PLOT Co *MKK-PP.Co *0 +addmsg /kinetics/MAPK/MAPK-PP /graphs/conc1/MAPK-PP.Co PLOT Co *MAPK-PP.Co *58 +enddump +// End of dump + +call /kinetics/MAPK/notes LOAD \ +"This is the oscillatory MAPK model from Kholodenko 2000" \ +"Eur J. Biochem 267:1583-1588" \ +"The original model is formulated in terms of idealized" \ +"Michaelis-Menten enzymes and the enzyme-substrate complex" \ +"concentrations are therefore assumed negligible. The" \ +"current implementation of the model uses explicit enzyme" \ +"reactions involving substrates and is therefore an" \ +"approximation to the Kholodenko model. The approximation is" \ +"greatly improved if the enzyme is flagged as Available" \ +"which is an option in Kinetikit. This flag means that the" \ +"enzyme protein concentration is not reduced even when it" \ +"is involved in a complex. However, the substrate protein" \ +"continues to participate in enzyme-substrate complexes" \ +"and its concentration is therefore affected. Overall," \ +"this model works almost the same as the Kholodenko model" \ +"but the peak MAPK-PP amplitudes are a little reduced and" \ +"the period of oscillations is about 10% longer." \ +"If the enzymes are not flagged as Available then the" \ +"oscillations commence only when the Km for enzyme 1" \ +"is set to 0.1 uM." +call /kinetics/MAPK/MAPK/notes LOAD \ +"The total concn. of MAPK is 300nM " \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MKKK/notes LOAD \ +"The total concn. of MKKK is 100nM " \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKK/notes LOAD \ +"The total concn. of MKK is 300nM " \ +"from" \ +"Kholodenko,2000" +call /kinetics/MAPK/int1/notes LOAD \ +"This is the intermediate enzyme which catalyses the " \ +"dephosphorylation of MKKK-P to MKKK. The concentration" \ +"is set to 1 nM based on" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int1/2/notes LOAD \ +"Km is 8nM and Vmax is 0.25nM.s-1 " \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MKKK-P/notes LOAD \ +"This is the phosphorylated form of MKKK which converts MKK" \ +"to MKK-P and then to MKK-PP" \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MKKK-P/3/notes LOAD \ +"Km is 15 nM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKKK-P/4/notes LOAD \ +"Km is 15nM and Vmax is 0.025s-1" \ +"from " \ +"Kholodenko, 2000." +call /kinetics/MAPK/int3/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MKK-P to MKK. The concentration is 1nM" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int3/6/notes LOAD \ +"The Km is 15nM and the Vmax is 0.75nM.s-1" \ +"from" \ +"Kholodenko 2000." +call /kinetics/MAPK/int5/notes LOAD \ +"This catalyses the conversion of MAPK-P to MAPK. The " \ +"concenration is 1nM." \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int5/10/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKK-P/notes LOAD \ +"This is the single phoshorylated form of MKK." \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/MAPK-P/notes LOAD \ +"This is the single phopshorylated form of MAPK" \ +"from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/int2/notes LOAD \ +"This intermediate enzyme which catalyses the dephosphorylation of" \ +"MKK-PP to MKK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int2/5/notes LOAD \ +"The Km is 15nM and Vmax is 0.75nM.s-1 " \ +"from" \ +"Kholodenko, 2000" \ +"" +call /kinetics/MAPK/int4/notes LOAD \ +"This intermediate enzyme catalyses the dephosphorylation of" \ +"MAPK-PP to MAPK-P. The concentration is 1nM." \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/int4/9/notes LOAD \ +"The Km is 15nM and Vmax is 0.5nM.s-1 " \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/Ras-MKKKK/notes LOAD \ +"The concn. of Ras-MKKKK* is set to 1 nM implicitly" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/Ras-MKKKK/1/notes LOAD \ +"The Km is 10nM and Vmax is 2.5nM sec^-1. We assume that" \ +"there is 1 nM of the Ras-MKKKK." \ +"From Kholodenko, 2000." \ +"" \ +"If the enzymes are not flagged as Available, then this" \ +"Km should be set to 0.1 to obtain oscillations." +call /kinetics/MAPK/inactiveRas-MKKK/notes LOAD \ +"This is the inactive form of Ras-MKKK. Based on the" \ +"reaction scheme from Kholodenko 2000, this is equivalent" \ +"to a binding of the MAPK-PP to the Ras. The amount of" \ +"Ras in the model is small enough that negligible amounts" \ +"of MAPK are involved in this reaction. So it is a fair" \ +"approximation to the negative feedback mechanism from" \ +"Kholodenko, 2000." +call /kinetics/MAPK/Neg_feedback/notes LOAD \ +"From Kholodenko, 2000 Eur J Biochem 267" \ +"the Kd is 9 nM. We use a rather fast Kf of 1/sec/uM" \ +"so that equilibrium is maintained." \ +"" +call /kinetics/MAPK/MKK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MKK" \ +"from" \ +"Kholodenko, 2000" +call /kinetics/MAPK/MKK-PP/7/notes LOAD \ +"The Km is 15nM which is 0.015uM Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000." \ +"" +call /kinetics/MAPK/MKK-PP/8/notes LOAD \ +"The Km is 15nM which is 0.015uM and Vmax is 0.025s-1" \ +"from" \ +"Kholodenko, 2000" \ +"" +call /kinetics/MAPK/MAPK-PP/notes LOAD \ +"This is the double phosphorylated and active form of MAPK." \ +"from" \ +"Kholodenko, 2000." +complete_loading diff --git a/moosegui/mtree.py b/moosegui/mtree.py index ea2c7b9..f6480ac 100644 --- a/moosegui/mtree.py +++ b/moosegui/mtree.py @@ -5,12 +5,11 @@ # Maintainer: # Created: Tue May 14 11:51:35 2013 (+0530) -import sys -from PyQt5 import QtGui, QtCore +from PyQt5 import QtCore from PyQt5.Qt import Qt from PyQt5.QtWidgets import QTreeWidgetItem, QTreeWidget -import moose +import moose class MooseTreeModel(QtCore.QAbstractItemModel): """Tree model for the MOOSE element tree. @@ -215,9 +214,11 @@ def main(): Test main: load a model and display the tree for it """ import sys + import os + sdir = os.path.dirname(__file__) from PyQt5.QtWidgets import QApplication, QMainWindow - model = moose.Neutral('/model') - modelfile = sys.argv[1] + # model = moose.Neutral('/model') + modelfile = os.path.join(sdir, '../data/Kholodenko.g') moose.loadModel(modelfile, '/model') app = QApplication(sys.argv) mainwin = QMainWindow() From 29efc1b97f61a50d26b003e4defde9114feb6538 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 11:41:51 +0530 Subject: [PATCH 54/66] Plugin windows always stays on top. --- moosegui/MWindow.py | 212 ++++++++++------------- moosegui/MdiArea.py | 3 +- moosegui/mplot.py | 12 +- moosegui/mplugin.py | 13 +- moosegui/newmodeldialog.py | 38 ++-- moosegui/plugins/PreferencesPresenter.py | 7 +- moosegui/plugins/default.py | 46 ++--- moosegui/plugins/defines.py | 7 +- 8 files changed, 142 insertions(+), 196 deletions(-) diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index ab53615..f907d15 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -1,27 +1,29 @@ # -*- coding: utf-8 -*- # Author: "Subhasis", "HarshaRani","Aviral Goel" -# Maintainer: HarshaRani +# Maintainer: HarshaRani, Dilawar Singh # Created: Mon Nov 12 09:38:09 2012 (+0530) +import os import imp import inspect import traceback import re -import warnings import sys import code -from collections import defaultdict, OrderedDict +from collections import OrderedDict from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QMainWindow, QAction, QApplication -from PyQt5.QtWidgets import QDockWidget, QMdiArea +from PyQt5.QtWidgets import QDockWidget, QMdiArea, QMenu +from PyQt5.QtWidgets import QActionGroup, QSizePolicy, QDialog +from PyQt5.QtWidgets import QDialog, QGridLayout, QPushButton +from PyQt5.QtWidgets import QHBoxLayout # moose import moose -from moose.chemUtil.add_Delete_ChemicalSolver import * -from moose import utils +# moosegui from moosegui import config from moosegui import mplugin from moosegui import mexception @@ -32,11 +34,7 @@ from moosegui.newmodeldialog import DialogWidget from moosegui.biomodelsclient import BioModelsClientWidget from moosegui.MdiArea import MdiArea -from moosegui.plugins.setsolver import * -from moosegui.plugins.defines import * -from moosegui.MdiArea import MdiArea -from moosegui.plugins.defines import * -import moosegui.examples as demos +from moosegui.plugins import defines # Logger _logger = config._logger @@ -199,41 +197,31 @@ def __init__(self, *args): self.createPopup() def createPopup(self): - self.popup = dialog = QDialog(self) - #dialog.setWindowFlags(Qt.Qt.Dialog | Qt.Qt.FramelessWindowHint) - dialog.setWindowFlags(Qt.Qt.Dialog | Qt.Qt.CustomizeWindowHint) - #dialog.setStyleSheet("border:1px solid rgb(0, 0, 0); ") - qapp = QApplication.desktop().screenGeometry(); - dialog.setGeometry((qapp.bottomLeft().x()+100),(qapp.bottomLeft().y()-250),100,100) - #dialog.move(qapp.bottomLeft().x()+10,qapp.bottomLeft().y()-10) - layout = QGridLayout() - self.setStyleSheet( - "QPushButton{border-radius: 5px; border-color: rgb(0,0,0); " - "border-width: 2px; border-style: outset;" - "padding-top: 2px; padding-bottom: 5px;" - "padding-left: 5px; padding-right: 5px}" - ) + self.popup = dialog = QDialog() createKineticModelButton = QPushButton("Create Kinetic Model") loadKineticModelButton = QPushButton("Load Model") loadNeuronalModelButton = QPushButton("Load Neuronal Model") - layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) - - self.menuitems = OrderedDict([ - ("Fig2C" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("ReducedModel (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "../moose-examples/squid/squid_demo.py") - ]) - layout.setContentsMargins(QtCore.QMargins(20,20,20,20)) + + # setup layout. + layout = QGridLayout() + _m = 15 + layout.setContentsMargins(QtCore.QMargins(_m, _m, _m, _m)) + + self.menuitems = [ + ("Fig2C" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), + ("Fig2E" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3D", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), + ("Fig4B", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), + ("ReducedModel (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Squid" , "../moose-examples/squid/squid_demo.py") + ] layout1 = QHBoxLayout() layout1.addWidget(createKineticModelButton) layout1.addWidget(loadKineticModelButton) @@ -245,7 +233,7 @@ def createPopup(self): layout7 = QHBoxLayout() listofButtons = {} for i, k in enumerate( self.menuitems ): - _logger.debug( "Adding button for %s" % k[0] ) + _logger.info( "Adding button for %s" % k[0] ) t = k[0] button = QPushButton(k[0]) if k[0] == "Fig2E": @@ -301,16 +289,22 @@ def createPopup(self): layout.addLayout(layout5,4,0) layout.addLayout(layout6,5,0) layout.addLayout(layout7,6,0) - dialog.setStyleSheet("border:1px solid rgb(0, 0, 0); ") - dialog.setLayout(layout) + self.popup.setStyleSheet("border:1px solid rgb(0, 0, 0); ") + self.popup.setLayout(layout) createKineticModelButton.clicked.connect(self.newModelDialogSlot) loadKineticModelButton.clicked.connect(self.loadModelDialogSlot) loadNeuronalModelButton.clicked.connect(self.loadModelDialogSlot) - - dialog.show() - freeCursor() - return dialog + + # Create the popup and move to the middle of destop app. + qApp = QApplication.desktop() + qAppScreen = qApp.screenGeometry(); + self.popup.setGeometry((qAppScreen.bottomLeft().x()+100),(qAppScreen.bottomLeft().y()-250),100,100) + self.popup.move( qApp.availableGeometry().center() ) + self.popup.setWindowFlags( Qt.Qt.WindowStaysOnTopHint | + Qt.Qt.X11BypassWindowManagerHint # else it wont go on top. + ) + self.popup.show() def run_genesis_script(self, filepath, solver): if self.popup: @@ -476,9 +470,9 @@ def setPlugin(self, name, root='/'): if self._loadedModels[i][0]== root: c = moose.Clock('/clock') compts = moose.wildcardFind(root+'/##[ISA=ChemCompt]') - for simdt in CHEMICAL_SIMULATION_DT_CLOCKS: + for simdt in defines.CHEMICAL_SIMULATION_DT_CLOCKS: c.tickDt[simdt] = self._loadedModels[i][3] - for plotdt in CHEMICAL_PLOT_UPDATE_INTERVAL_CLOCKS: + for plotdt in defines.CHEMICAL_PLOT_UPDATE_INTERVAL_CLOCKS: c.tickDt[plotdt] = self._loadedModels[i][4] if compts: @@ -526,7 +520,7 @@ def updateExistingMenu(self, menu): already exists. If so, update the same and return True. Otherwise return False. """ - if not isinstance(menu, QtGui.QMenu): + if not isinstance(menu, QMenu): return False for action in self.menuBar().actions(): if menu.title() == action.text(): @@ -607,10 +601,10 @@ def setCurrentView(self, view): title = widget.modelRoot+'/model' #subwin.setWindowTitle('%s: %s' % (view, widget.modelRoot)) subwin.setWindowTitle('%s: %s' % (view, title)) - subwin.setSizePolicy(QtGui.QSizePolicy.Minimum | - QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Minimum | - QtGui.QSizePolicy.Expanding) + subwin.setSizePolicy(QSizePolicy.Minimum | + QSizePolicy.Expanding, + QSizePolicy.Minimum | + QSizePolicy.Expanding) subwin.resize(600, 400) # Make dockwidgets from other views invisible and make those # from current view visible or add them if not already part of @@ -653,38 +647,40 @@ def getMyToolBars(self): def getFileMenu(self): if self.fileMenu is None: - self.fileMenu = QtGui.QMenu('&File') + self.fileMenu = QMenu('&File') else: self.fileMenu.clear() if not hasattr(self, 'newModelAction'): self.newModelAction = QAction('New', self) - self.newModelAction.setShortcut(QApplication.translate("MainWindow", "Ctrl+N", None, QApplication.UnicodeUTF8)) - self.connect(self.newModelAction, QtCore.SIGNAL('triggered()'), self.newModelDialogSlot) + self.newModelAction.setShortcut("Ctrl+N") + self.newModelAction.triggered.connect(self.newModelDialogSlot) + self.fileMenu.addAction(self.newModelAction) if not hasattr(self, 'loadModelAction'): self.loadModelAction = QAction('L&oad model', self) - self.loadModelAction.setShortcut(QApplication.translate("MainWindow", "Ctrl+O", None, QApplication.UnicodeUTF8)) - self.connect(self.loadModelAction, QtCore.SIGNAL('triggered()'), self.loadModelDialogSlot) + self.loadModelAction.setShortcut("Ctrl+O") + self.loadModelAction.triggered.connect(self.loadModelDialogSlot) + self.fileMenu.addAction(self.loadModelAction) if not hasattr(self, 'Paper_2015'): self.menuitems = OrderedDict([ - ("Fig2C (6s)" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), - ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), - ("Fig2E (5s)" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), - ("Fig3B_Gssa (2s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3C_Gsl (2s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), - ("Fig3D (1s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), - ("Fig4B (10s)", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), - ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), - ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), - ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), - ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), - ("ReducedModel (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), - ("Squid" , "../moose-examples/squid/squid_demo.py") - ]) - self.subMenu = QtGui.QMenu('Demos') + ("Fig2C (6s)" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2C.py"), + ("Fig2D (35s)", "../moose-examples/paper-2015/Fig2_elecModels/Fig2D.py"), + ("Fig2E (5s)" , "../moose-examples/paper-2015/Fig2_elecModels/Fig2E.py"), + ("Fig3B_Gssa (2s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3C_Gsl (2s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3ABC.g"), + ("Fig3D (1s)", "../moose-examples/paper-2015/Fig3_chemModels/Fig3D.py"), + ("Fig4B (10s)", "../moose-examples/paper-2015/Fig4_ReacDiff/Fig4B.py" ), + ("Fig4K", "../moose-examples/paper-2015/Fig4_ReacDiff/rxdSpineSize.py"), + ("Fig5A (20s)", "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5A.py"), + ("Fig5BCD (240s)" , "../moose-examples/paper-2015/Fig5_CellMultiscale/Fig5BCD.py"), + ("Fig6A (60s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/Fig6A.py" ), + ("ReducedModel (200s)", "../moose-examples/paper-2015/Fig6_NetMultiscale/ReducedModel.py"), + ("Squid" , "../moose-examples/squid/squid_demo.py") + ]) + self.subMenu = QMenu('Demos') for i in range(0,len(self.menuitems)): k = self.menuitems.popitem(0) if k[0] == "Fig2C (6s)": @@ -755,14 +751,15 @@ def getFileMenu(self): if not hasattr(self,'connectBioModelAction'): self.connectBioModelAction = QAction('&Connect BioModels', self) - self.connectBioModelAction.setShortcut(QApplication.translate("MainWindow", "Ctrl+B", None, QApplication.UnicodeUTF8)) - self.connect(self.connectBioModelAction, QtCore.SIGNAL('triggered()'), self.connectBioModel) + self.connectBioModelAction.setShortcut("Ctrl+B") + self.connectBioModelAction.triggered.connect(self.connectBioModel) + self.fileMenu.addAction(self.connectBioModelAction) return self.fileMenu def getEditMenu(self): if self.editMenu is None: - self.editMenu = QtGui.QMenu('&Edit') + self.editMenu = QMenu('&Edit') else: self.editMenu.clear() #self.editMenu.addActions(self.getEditActions()) @@ -771,7 +768,7 @@ def getEditMenu(self): def getPluginsMenu(self): """Populate plugins menu if it does not exist already.""" if (not hasattr(self, 'pluginsMenu')) or (self.pluginsMenu is None): - self.pluginsMenu = QtGui.QMenu('&Plugins') + self.pluginsMenu = QMenu('&Plugins') mapper = QtCore.QSignalMapper(self) pluginsGroup = QActionGroup(self) pluginsGroup.setExclusive(True) @@ -779,44 +776,16 @@ def getPluginsMenu(self): action = QAction(pluginName, self) action.setObjectName(pluginName) action.setCheckable(True) - mapper.setMapping(action, QtCore.QString(pluginName)) - self.connect(action, QtCore.SIGNAL('triggered()'), mapper, QtCore.SLOT('map()')) + mapper.setMapping(action, pluginName) + action.triggered.connect(mapper.map) self.pluginsMenu.addAction(action) pluginsGroup.addAction(action) - self.connect(mapper, QtCore.SIGNAL('mapped(const QString &)'), self.setPlugin) - #self.pluginsMenu.addMenu(self.defaultPluginMenu) - #self.pluginsMenu.addMenu(self.kkitPluginMenu) - #self.pluginsMenu.addMenu(self.neurokitPluginMenu) - #openRootAction = self.defaultPluginMenu.addAction("/") - #openRootAction.triggered.connect(lambda : self.setPlugin("default", "/") ) - # if (not hasattr(self, 'loadedModelAction')) or (self.loadedModelAction is None) : - # self.loadedModelAction = QAction("kkit",self) - # self.loadedModelAction.addMenu('test') - # self.pluginsMenu.addAction(self.loadedModelAction) - # self.pluginsMenu.addMenu(self.insertkkitMenu) - # self.insertMapperkkit = QtCore.QSignalMapper(self) - #insertMapperkkit,actions = self.getInsertkkitActions(self.loadedModels) - # ignored_bases = ['ZPool', 'Msg', 'Panel', 'SolverBase', 'none'] - # ignored_classes = ['ZPool','ZReac','ZMMenz','ZEnz','CplxEnzBase'] - # classlist = [ch[0].name for ch in moose.element('/classes').children - # if (ch[0].baseClass not in ignored_bases) - # and (ch[0].name not in (ignored_bases + ignored_classes)) - # and not ch[0].name.startswith('Zombie') - # and not ch[0].name.endswith('Base') - # ] - # insertMapper, actions = self.getInsertActions(classlist) - # for action in actions: - # self.insertMenu.addAction(action) - # self.connect(insertMapper, QtCore.SIGNAL('mapped(const QString&)'), self.tree.insertElementSlot) - # self.editAction = QAction('Edit', self.treeMenu) - # self.editAction.triggered.connect(self.editCurrentObjectSlot) - # self.tree.elementInserted.connect(self.elementInsertedSlot) - # self.treeMenu.addAction(self.editAction) + mapper.mapped.connect(self.setPlugin) return self.pluginsMenu def getHelpMenu(self): if self.helpMenu is None: - self.helpMenu = QtGui.QMenu('&Help') + self.helpMenu = QMenu('&Help') else: self.helpMenu.clear() self.helpMenu.addActions(self.getHelpActions()) @@ -824,7 +793,7 @@ def getHelpMenu(self): ''' def getConnectMenu(self): if self.connectMenu is None: - self.connectMenu = QtGui.QMenu('&Connect') + self.connectMenu = QMenu('&Connect') else: self.connectMenu.clear() self.connectMenu.addActions(self.getConnectActions()) @@ -832,7 +801,7 @@ def getConnectMenu(self): ''' def getViewMenu(self): if (not hasattr(self, 'viewMenu')) or (self.viewMenu is None): - self.viewMenu = QtGui.QMenu('&View') + self.viewMenu = QMenu('&View') else: self.viewMenu.clear() self.viewMenu.addActions(self.getViewActions()) @@ -913,14 +882,15 @@ def getDockWidgetsToggleActions(self): def getHelpActions(self): if (not hasattr(self, 'helpActions')) or (self.helpActions is None): self.actionAbout = QAction('About MOOSE', self) - self.connect(self.actionAbout, QtCore.SIGNAL('triggered()'), self.showAboutMoose) + self.actionAbout.triggered.connect(self.showAboutMoose) self.actionBuiltInDocumentation = QAction('Built-in documentation', self) - self.connect(self.actionBuiltInDocumentation, QtCore.SIGNAL('triggered()'), self.showBuiltInDocumentation) + self.actionBuiltInDocumentation.triggered.connect(self.showBuiltInDocumentation) self.actionGuiBug = QAction('Report gui bug', self) - self.connect(self.actionGuiBug, QtCore.SIGNAL('triggered()'), self.reportGuiBug) - self.actionCoreBug = QAction('Report core bug', self) - self.connect(self.actionCoreBug, QtCore.SIGNAL('triggered()'), self.reportCoreBug) - self.helpActions = [self.actionAbout, self.actionBuiltInDocumentation, self.actionCoreBug,self.actionGuiBug] + self.actionGuiBug.triggered.connect(self.reportGuiBug) + self.actionCoreBug = QAction('Report pymoose bug', self) + self.actionCoreBug.triggered.connect(self.reportCoreBug) + self.helpActions = [self.actionAbout, self.actionBuiltInDocumentation + , self.actionCoreBug,self.actionGuiBug] return self.helpActions diff --git a/moosegui/MdiArea.py b/moosegui/MdiArea.py index 471e88e..d13cbf6 100644 --- a/moosegui/MdiArea.py +++ b/moosegui/MdiArea.py @@ -1,5 +1,6 @@ -from PyQt5.QtGui import QImage +from PyQt5.QtGui import QImage, QPainter, QColor, QBrush from PyQt5.QtWidgets import QMdiArea +from PyQt5 import QtCore import os APPLICATION_BACKGROUND_PATH = os.path.join( diff --git a/moosegui/mplot.py b/moosegui/mplot.py index 27d46cf..411e99c 100644 --- a/moosegui/mplot.py +++ b/moosegui/mplot.py @@ -12,9 +12,9 @@ from PyQt5 import QtGui, QtCore from PyQt5.Qt import Qt -#from matplotlib.figure import Figure -#from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas -#from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar +from matplotlib.figure import Figure +from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar import moose @@ -30,8 +30,7 @@ class CanvasWidget(FigureCanvas): this). """ - updateSignal = pyqtSignal() - + updateSignal = QtCore.pyqtSignal() def __init__(self, model, graph, index, *args, **kwargs): self.model = model self.graph = graph @@ -143,10 +142,9 @@ def setXLimit(self, minX, maxX): self.draw() -import sys import os -from . import config import unittest +from moosegui import config from PyQt5.QtTest import QTest diff --git a/moosegui/mplugin.py b/moosegui/mplugin.py index 687a03e..3ffe46c 100644 --- a/moosegui/mplugin.py +++ b/moosegui/mplugin.py @@ -6,8 +6,8 @@ # Maintainer: # Created: Tue Oct 2 17:25:41 2012 (+0530) -from PyQt5 import QtGui, QtCore, Qt -from PyQt5.QtWidgets import QWidget +from PyQt5 import QtCore +from PyQt5.QtWidgets import QWidget, QAction import moose class MoosePluginBase(QtCore.QObject): @@ -255,12 +255,9 @@ def getInsertActions(self, classlist): if len(self._insertActions) == 0: self._insertMapper = QtCore.QSignalMapper(self) for classname in classlist: - action = QtGui.QAction(classname, self) - self._insertMapper.setMapping(action, QtCore.QString(classname)) - self.connect(action, - QtCore.SIGNAL('triggered()'), - self._insertMapper, - QtCore.SLOT('map()')) + action = QAction(classname, self) + self._insertMapper.setMapping(action, classname) + action.triggered.connect(self._insertMapper.map) doc = moose.element('/classes/%s' % (classname)).docs doc = doc.split('Description:')[-1].split('Name:')[0].strip() action.setToolTip(doc) diff --git a/moosegui/newmodeldialog.py b/moosegui/newmodeldialog.py index 60c1933..ebbdb9d 100644 --- a/moosegui/newmodeldialog.py +++ b/moosegui/newmodeldialog.py @@ -1,46 +1,29 @@ # -*- coding: utf-8 -*- -import sys -import os -import numpy as np import re -from PyQt5 import QtGui, QtCore,Qt +from PyQt5 import QtGui, QtCore from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QDialog - -import moosegui.config as config -from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +from PyQt5.QtWidgets import QGridLayout, QLabel, QLineEdit +from PyQt5.QtWidgets import QHBoxLayout class DialogWidget(QDialog): def __init__(self,parent=None): QWidget.__init__(self, parent) self.warning = None self._currentRadioButton ="kkit" - self.layout = QtGui.QGridLayout() - self.modelPathLabel = QtGui.QLabel('Model Name') - self.modelPathEdit = QtGui.QLineEdit('') + self.layout = QGridLayout() + self.modelPathLabel = QLabel('Model Name') + self.modelPathEdit = QLineEdit('') self.layout.addWidget(self.modelPathLabel, 0, 0) self.layout.addWidget(self.modelPathEdit, 0, 1,1,1) - # self.defaultRadio = QtGui.QRadioButton('default') - # #self.defaultRadio.setChecked(True); - # self.kkitRadio = QtGui.QRadioButton('kkit') - # self.kkitRadio.setChecked(True) - # self.defaultRadio.toggled.connect(lambda : self.setcurrentRadioButton('default')) - # self.kkitRadio.toggled.connect(lambda : self.setcurrentRadioButton('kkit')) - # layout.addWidget(self.defaultRadio,2,1) - # layout.addWidget(self.kkitRadio,2,0) - self.hbox = QtGui.QHBoxLayout() + self.hbox = QHBoxLayout() self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok) - self.connect(self.buttonBox, QtCore.SIGNAL('accepted()'), self.validateAccept) + self.buttonBox.accepted.connect(self.validateAccept) self.hbox.addWidget(self.buttonBox,1) - self.buttonBox1 = QDialogButtonBox(QDialogButtonBox.Cancel) - self.connect(self.buttonBox1, QtCore.SIGNAL('rejected()'), self.Cancel) + self.buttonBox1.rejected.connect(self.Cancel) self.hbox.addWidget(self.buttonBox1,0) - #self.hbox.setBackgroundColor(Blue) - #self.modelPathEdit.returnPressed.connect(self.validateAccept) - # self.connect(self.buttonBox, QtCore.SIGNAL('rejected()'), self.reject) - #self.hbox.addStretch(1) self.layout.addLayout(self.hbox,1,1) self.setLayout(self.layout) @@ -68,7 +51,8 @@ def getcurrentRadioButton(self): return self._currentRadioButton if __name__ == '__main__': - app =QtGui.QApplication([]) + from PyQt5.QtWidgets import QApplication + app = QApplication([]) widget = DialogWidget() widget.setWindowTitle('New Model') widget.setMinimumSize(400, 200) diff --git a/moosegui/plugins/PreferencesPresenter.py b/moosegui/plugins/PreferencesPresenter.py index 1a0d48e..bd05b77 100644 --- a/moosegui/plugins/PreferencesPresenter.py +++ b/moosegui/plugins/PreferencesPresenter.py @@ -15,9 +15,10 @@ from moosegui.plugins.PreferencesView import PreferencesView from moosegui.plugins.defines import * -PREFERENCES_FILEPATH = os.path.join( os.path.dirname(os.path.abspath(__file__)) - , "datastore/preferences.json" - ) +PREFERENCES_FILEPATH = os.path.join( + os.path.dirname(os.path.abspath(__file__)) + , "datastore/preferences.json" + ) class PreferencesPresenter(QObject): diff --git a/moosegui/plugins/default.py b/moosegui/plugins/default.py index d1f4024..bb59d2b 100644 --- a/moosegui/plugins/default.py +++ b/moosegui/plugins/default.py @@ -12,41 +12,32 @@ import numpy as np from matplotlib import rcParams -from matplotlib.lines import Line2D from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar rcParams.update({'figure.autolayout': True}) from PyQt5 import QtCore, QtGui from PyQt5.QtCore import Qt -from PyQt5.QtCore import pyqtSlot, Signal, pyqtSignal +from PyQt5.QtCore import pyqtSlot, pyqtSignal from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtGui import QDoubleValidator from PyQt5.QtWidgets import QToolBar, QToolButton from PyQt5.QtWidgets import QLabel, QLineEdit -from PyQt5.QtWidgets import QErrorMessage, QSizeGrip, QAction -from PyQt5.QtWidgets import QWidget -from PyQt5.QtWidgets import QSizeGrip -from PyQt5.QtWidgets import QLayout +from PyQt5.QtWidgets import QAction, QSizePolicy +from PyQt5.QtWidgets import QWidget, QHBoxLayout from PyQt5.QtWidgets import QScrollArea from PyQt5.QtWidgets import QMenu # moose import moose -from moose import utils -from moose.chemUtil.add_Delete_ChemicalSolver import * - # moosegui from moosegui.global_constants import preferences from moosegui.mtoolbutton import MToolButton -from moosegui.msearch import SearchWidget from moosegui.checkcombobox import CheckComboBox -from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, PlotBase, RunBase +from moosegui.mplugin import MoosePluginBase, EditorBase, EditorWidgetBase, RunBase from moosegui.plugins.kkitUtil import getColor from moosegui.plugins.Runner import Runner -from moosegui.global_constants import preferences -from moosegui.plugins.setsolver import * from moosegui import config from moosegui import mtree # from moosegui.PlotWidgetContainer import PlotWidgetContainer @@ -108,7 +99,7 @@ def __init__(self, plugin): self.__initToolBars() def __initMenus(self): - editMenu = QtGui.QMenu('&Edit') + editMenu = QMenu('&Edit') for menu in self.getCentralWidget().getMenus(): editMenu.addMenu(menu) self._menus.append(editMenu) @@ -193,7 +184,7 @@ class DefaultEditorWidget(EditorWidgetBase): """ def __init__(self, *args): EditorWidgetBase.__init__(self, *args) - layout = QtGui.QHBoxLayout() + layout = QHBoxLayout() self.setLayout(layout) self.tree = MooseTreeEditor() self.tree.setAcceptDrops(True) @@ -204,12 +195,12 @@ def getTreeMenu(self): try: return self.treeMenu except AttributeError: - self.treeMenu = QtGui.QMenu() + self.treeMenu = QMenu() self.tree.setContextMenuPolicy(Qt.CustomContextMenu) self.tree.customContextMenuRequested.connect(lambda : self.treeMenu.exec_(QtGui.QCursor.pos()) ) # Inserting a child element - self.insertMenu = QtGui.QMenu('Insert') + self.insertMenu = QMenu('Insert') self._menus.append(self.insertMenu) self.treeMenu.addMenu(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) @@ -224,8 +215,8 @@ def getTreeMenu(self): insertMapper, actions = self.getInsertActions(classlist) for action in actions: self.insertMenu.addAction(action) - self.connect(insertMapper, QtCore.SIGNAL('mapped(const QString&)'), self.tree.insertElementSlot) - self.editAction = QtGui.QAction('Edit', self.treeMenu) + insertMapper.mapped.connect(self.tree.insertElementSlot) + self.editAction = QAction('Edit', self.treeMenu) self.editAction.triggered.connect(self.editCurrentObjectSlot) self.tree.elementInserted.connect(self.elementInsertedSlot) self.treeMenu.addAction(self.editAction) @@ -256,7 +247,7 @@ def sizeHint(self): def getToolBars(self): if not hasattr(self, '_insertToolBar'): - self._insertToolBar = QtGui.QToolBar('Insert') + self._insertToolBar = QToolBar('Insert') return self._toolBars for action in self.insertMenu.actions(): button = MToolButton() @@ -347,7 +338,6 @@ def getSchedulingDockWidget(self): widget.runner.simulationStarted.connect(self._centralWidget.extendXAxes) widget.runner.simulationProgressed.connect(self._centralWidget.updatePlots) widget.runner.simulationFinished.connect(self._centralWidget.rescalePlots) - # widget.runner.simulationContinued.connect(self._centralWidget.extendXAxes) widget.runner.simulationReset.connect(self._centralWidget.plotAllData) self._toolBars += widget.getToolBars() return self.schedulingDockWidget @@ -761,7 +751,7 @@ def toggleLegend(self): self.canvas.draw() def getContextMenu(self): - menu = QMenu() + menu = QMenu() # closeAction = menu.addAction("Delete") exportCsvAction = menu.addAction("Export to CSV") exportCsvAction.triggered.connect(self.saveAllCsv) @@ -1043,11 +1033,11 @@ def saveAllCsv(self): def getMenus(self): if not hasattr(self, '_menus'): self._menus = [] - self.plotAllAction = QtGui.QAction('Plot all data', self) + self.plotAllAction = QAction('Plot all data', self) self.plotAllAction.triggered.connect(self.plotAllData) - self.plotMenu = QtGui.QMenu('Plot') + self.plotMenu = QMenu('Plot') self.plotMenu.addAction(self.plotAllAction) - self.saveAllCsvAction = QtGui.QAction('Save all data in CSV files', self) + self.saveAllCsvAction = QAction('Save all data in CSV files', self) self.saveAllCsvAction.triggered.connect(self.saveAllCsv) self.plotMenu.addAction(self.saveAllCsvAction) self._menus.append(self.plotMenu) @@ -1062,7 +1052,7 @@ def getMenus(self): # Plot view - select fields to record # ################################################### -class PlotSelectionWidget(QtGui.QScrollArea): +class PlotSelectionWidget(QScrollArea): """Widget showing the fields of specified elements and their plottable fields. User can select any number of fields for plotting and click a button to generate the tables for recording data. @@ -1072,7 +1062,7 @@ class PlotSelectionWidget(QtGui.QScrollArea): """ def __init__(self, model, graph, *args): - QtGui.QScrollArea.__init__(self, *args) + QScrollArea.__init__(self, *args) self.model = moose.element(model.path + "/model") self.modelRoot = self.model.path self.setLayout(QtGui.QVBoxLayout(self)) @@ -1109,7 +1099,7 @@ def setSelectedElements(self, elementlist): del item self._elementWidgetsDict.clear() label = QtGui.QLabel('Element') - label.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.getPlotListWidget().layout().addWidget(label, 0, 0, 1, 2) self.getPlotListWidget().layout().addWidget(QtGui.QLabel('Fields to plot'), 0, 2, 1, 1) for ii, entry in enumerate(elementlist): diff --git a/moosegui/plugins/defines.py b/moosegui/plugins/defines.py index 0f550e4..41e3d1e 100644 --- a/moosegui/plugins/defines.py +++ b/moosegui/plugins/defines.py @@ -1,7 +1,12 @@ +"""defines.py: + +Various clocks used in moose. +""" + + ELECTRICAL_SIMULATION_DT_CLOCKS = [1,2,3,4,5,6,7] ELECTRICAL_PLOT_UPDATE_INTERVAL_CLOCKS = [8] ELECTRICAL_DIFFUSION_INTERVAL_CLOCKS = [10] - CHEMICAL_SIMULATION_DT_CLOCKS = [11, 12, 13, 14, 15, 16, 17] CHEMICAL_PLOT_UPDATE_INTERVAL_CLOCKS = [18] CHEMICAL_DIFFUSION_DT_CLOCKS = [10] From df75d1ed11d8ac79c05380e6e92898008c09cbe6 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 12:17:23 +0530 Subject: [PATCH 55/66] more import related fixes. --- moosegui/MWindow.py | 54 ++++++++--------- moosegui/SettingsDialog.py | 51 ++++++---------- moosegui/plugins/kkit.py | 112 +++++++---------------------------- moosegui/plugins/kkitUtil.py | 76 +++++++++++------------- 4 files changed, 99 insertions(+), 194 deletions(-) diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index f907d15..c5af87e 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -17,8 +17,8 @@ from PyQt5.QtWidgets import QMainWindow, QAction, QApplication from PyQt5.QtWidgets import QDockWidget, QMdiArea, QMenu from PyQt5.QtWidgets import QActionGroup, QSizePolicy, QDialog -from PyQt5.QtWidgets import QDialog, QGridLayout, QPushButton -from PyQt5.QtWidgets import QHBoxLayout +from PyQt5.QtWidgets import QGridLayout, QPushButton +from PyQt5.QtWidgets import QHBoxLayout, QMessageBox # moose import moose @@ -143,16 +143,16 @@ def __init__(self, *args): self.show() self.createPopup() freeCursor() - reply = QtGui.QMessageBox.information(self,"Model file can not open","At present python file cann\'t be laoded into GUI",QtGui.QMessageBox.Ok) - if reply == QtGui.QMessageBox.Ok: + reply = QMessageBox.information(self,"Model file can not open","At present python file cann\'t be laoded into GUI", QMessageBox.Ok) + if reply == QMessageBox.Ok: QApplication.restoreOverrideCursor() return if not os.path.exists(cmdfilepath): self.setWindowState(QtCore.Qt.WindowMaximized) self.show() self.createPopup() - reply = QtGui.QMessageBox.information(self,"Model file can not open","File Not Found \n \nCheck filename or filepath\n ",QtGui.QMessageBox.Ok) - if reply == QtGui.QMessageBox.Ok: + reply = QMessageBox.information(self,"Model file can not open","File Not Found \n \nCheck filename or filepath\n ", QMessageBox.Ok) + if reply == QMessageBox.Ok: QApplication.restoreOverrideCursor() return if os.path.isdir(cmdfilepath): @@ -351,9 +351,9 @@ def handleException(self, t, v, s): if isinstance(v, mexception.MooseInfo): self.statusBar().showMessage(title, 5000) elif isinstance(v, mexception.MooseWarning): - QtGui.QMessageBox.warning(self, title, '\n'.join((title, trace))) + QMessageBox.warning(self, title, '\n'.join((title, trace))) else: - QtGui.QMessageBox.critical(self, title, '\n'.join((title, trace))) + QMessageBox.critical(self, title, '\n'.join((title, trace))) def getPluginNames(self): """ @@ -447,18 +447,17 @@ def loadPluginClass(self, name, _reload=False): if issubclass(classobj, mplugin.MoosePluginBase): self._loadedPlugins[name] = classobj return self._loadedPlugins[name] - raise IndexError('No plugin with name: %s' % name) + + errMsg = 'No plugin found with name: %s' % name + errMsg += ". Available: '{}'".format(', '.join(self._loadedPlugins.keys())) + _logger.error(errMsg) + raise IndexError(errMsg) def setPlugin(self, name, root='/'): """Set the current plugin to use. - - This - - 1. sets the `plugin` attribute. - 2. updates menus by clearing and reinstating menus including anything provided by the plugin. - 3. sets the current view to the plugins editor view. """ @@ -476,9 +475,7 @@ def setPlugin(self, name, root='/'): c.tickDt[plotdt] = self._loadedModels[i][4] if compts: - #setCompartmentSolver(self._loadedModels[i][0],"gsl") - mooseAddChemSolver(self._loadedModels[i][0],"gsl") - #addSolver(self._loadedModels[i][0],"gsl") + moose.mooseAddChemSolver(self._loadedModels[i][0],"gsl") else: c.tickDt[7] = self._loadedModels[i][3] c.tickDt[8] = self._loadedModels[i][4] @@ -551,8 +548,9 @@ def updateMenus(self): for menu in self.plugin.getMenus(): if not self.updateExistingMenu(menu): - if not self.menuBar().isEmpty(): - action.menu().addSeparator() + # bug: action was empty here. + #if not self.menuBar().isEmpty(): + # action.menu().addSeparator() self.menuBar().addMenu(menu) menus[0].addSeparator() menus[0].addAction(self.quitAction) @@ -931,7 +929,7 @@ def showAboutMoose(self): about = "

MOOSE simulator

" about += 'MOOSE Website' about += "

VERSION " + moose.__version__ + "

" - QtGui.QMessageBox.about(self, 'About MOOSE', about ) + QMessageBox.about(self, 'About MOOSE', about ) def showDocumentation(self): QtGui.QDesktopServices.openUrl(QtCore.QUrl(config.MOOSE_DOC_URL)) @@ -1133,8 +1131,8 @@ def displaymodelInfo(self,ret): noOfEnz = len(moose.wildcardFind(ret['model'].path+'/##[ISA=EnzBase]')) noOfStimtab = len(moose.wildcardFind(ret['model'].path+'/##[ISA=StimulusTable]')) - reply = QtGui.QMessageBox.information(self,"Model Info","Model has : \n %s Compartment \t \n %s Group \t \n %s Pool \t \n %s Function \t \n %s reaction \t \n %s Enzyme \t \n %s StimulusTable" %(noOfCompt, grp, noOfPool, noOfFunc, noOfReac, noOfEnz, noOfStimtab)) - if reply == QtGui.QMessageBox.Ok: + reply = QMessageBox.information(self,"Model Info","Model has : \n %s Compartment \t \n %s Group \t \n %s Pool \t \n %s Function \t \n %s reaction \t \n %s Enzyme \t \n %s StimulusTable" %(noOfCompt, grp, noOfPool, noOfFunc, noOfReac, noOfEnz, noOfStimtab)) + if reply == QMessageBox.Ok: QApplication.restoreOverrideCursor() return @@ -1169,16 +1167,16 @@ def dialog_check(self,ret): if pluginName == 'kkit': if (ret['subtype'] == 'sbml' and ret['foundlib'] == False): - reply = QtGui.QMessageBox.question(self, "python-libsbml is not found.","\n Read SBML is not possible.\n This can be installed using \n \n pip python-libsbml or \n apt-get install python-libsbml", - QtGui.QMessageBox.Ok) - if reply == QtGui.QMessageBox.Ok: + reply = QMessageBox.question(self, "python-libsbml is not found.","\n Read SBML is not possible.\n This can be installed using \n \n pip python-libsbml or \n apt-get install python-libsbml", + QMessageBox.Ok) + if reply == QMessageBox.Ok: QApplication.restoreOverrideCursor() return valid, ret else: if ret['loaderror'] != "": - reply = QtGui.QMessageBox.question(self, "Model can't be loaded", ret['loaderror']+" \n \n Do you want another file", - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: + reply = QMessageBox.question(self, "Model can't be loaded", ret['loaderror']+" \n \n Do you want another file", + QMessageBox.Yes | QMessageBox.No) + if reply == QMessageBox.Yes: dialog = LoaderDialog(self,self.tr('Load model from file')) if dialog.exec_(): pluginName = None diff --git a/moosegui/SettingsDialog.py b/moosegui/SettingsDialog.py index 3ac01ce..f565e0a 100644 --- a/moosegui/SettingsDialog.py +++ b/moosegui/SettingsDialog.py @@ -1,8 +1,7 @@ - # -*- coding: utf-8 -*- - -"""Dialog for settings. Currently only plot settings are supported +""" +Dialog for settings. Currently only plot settings are supported """ __author__ = "Aviral Goel" @@ -15,13 +14,12 @@ import sys -import os -from PyQt5 import QtGui, Qt -from PyQt5.QtGui import QWidget -from PyQt5.QtGui import QLabel -from PyQt5.QtGui import QComboBox -from PyQt5.QtGui import QGridLayout -from PyQt5.QtGui import QTabWidget +from PyQt5 import Qt +from PyQt5.QtWidgets import QWidget +from PyQt5.QtWidgets import QLabel +from PyQt5.QtWidgets import QComboBox +from PyQt5.QtWidgets import QGridLayout +from PyQt5.QtWidgets import QTabWidget class SettingsWidget(QTabWidget): def __init__( self @@ -50,32 +48,21 @@ def plotSettingsPage(self): index += 1 return page - # combo.move(50, 50) - # self.lbl.move(50, 150) - - # combo.activated[str].connect(self.onActivated) - - # self.setGeometry(300, 300, 300, 200) - # self.setWindowTitle('QtGui.QComboBox') - # self.show() - - def main(): - app = QtGui.QApplication(sys.argv) - window = QtGui.QMainWindow() + from PyQt5.QtWidgets import QApplication + app = QApplication(sys.argv) dialog = SettingsWidget({ - 'LeakyIaF':['Vm'], - 'Compartment':['Vm','Im'], - 'HHChannel':['Ik','Gk'], - 'ZombiePool':['n','conc'], - 'ZombieBufPool':['n','conc'], - 'HHChannel2D':['Ik','Gk'], - 'CaConc':['Ca'] - } - ) + 'LeakyIaF':['Vm'], + 'Compartment':['Vm','Im'], + 'HHChannel':['Ik','Gk'], + 'ZombiePool':['n','conc'], + 'ZombieBufPool':['n','conc'], + 'HHChannel2D':['Ik','Gk'], + 'CaConc':['Ca'] + } + ) dialog.show() sys.exit(app.exec_()) - if __name__ == "__main__": main() diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index 50d87a4..d9a56c6 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- __author__ = "HarshaRani" __credits__ = ["Upi Lab"] @@ -8,34 +9,18 @@ __status__ = "Development" __updated__ = "Feb 22 2019" -#Change log: -#2019 -#Feb 22: cross compartment molecules are checked for destination -# 2018 -#Oct 26: xfer cross compartment molecules are hidden and for cross compartment reaction's -# connection are now dotted line -#Oct 10: filedialog default is sbml -# layout co-ordainates are updated with scenepos -#Sep 11: comparment size is calculated based on group sceneBoundingRect size -#Sep 07: in positionChange all the group's boundingRect is calculated -# and when group is moved the children's position are stored -#Jun 18: update the color of the group from objecteditor -#code - import math import sys -import posixpath from os.path import expanduser from PyQt5 import QtGui, QtCore, Qt -from PyQt5.QtWidgets import QWidget, QGridLayout +from PyQt5.QtWidgets import QWidget, QGridLayout, QFileDialog from PyQt5.QtGui import QColor # moosegui from moosegui import RunWidget from moosegui.mplugin import * - -from moosegui.plugins.default import * +from moosegui.plugins.default import MoosePlugin, MooseEditorView from moosegui.plugins.kkitUtil import * from moosegui.plugins.kkitQGraphics import * from moosegui.plugins.kkitViewcontrol import * @@ -44,9 +29,7 @@ from moosegui.plugins.mtoolbutton import MToolButton # moose -from moose import SBML -from moose.genesis.writeKkit import mooseWriteKkit -from moose.chemUtil.add_Delete_ChemicalSolver import * +import moose import re @@ -76,13 +59,9 @@ def SaveModelDialogSlot(self): if not dirpath: dirpath = expanduser("~") filters = {'SBML(*.xml)': 'SBML','Genesis(*.g)':'Genesis'} - #filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,';;'.join(filters)) - filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,"SBML(*.xml);;Genesis(*.g)") - extension = "" + filename,filter_ = QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,"SBML(*.xml);;Genesis(*.g)") if str(filename).rfind('.') != -1: filename = filename[:str(filename).rfind('.')] - if str(filter_).rfind('.') != -1: - extension = filter_[str(filter_).rfind('.'):len(filter_)-1] if filename: filename = filename @@ -117,7 +96,7 @@ def SaveModelDialogSlot(self): y = -annoInfo.y * 10 self.coOrdinates[k] = {'x':x, 'y':y} - error,written = mooseWriteKkit(self.modelRoot,str(filename),self.coOrdinates) + error,written = moose.mooseWriteKkit(self.modelRoot,str(filename),self.coOrdinates) if written == False: QtGui.QMessageBox.information(None,'Could not save the Model','\nCheck the file') else: @@ -233,11 +212,11 @@ def createCentralWidget(self): def setSolver(self, modelRoot,solver = None): if solver == None: - reinit = mooseAddChemSolver(modelRoot,self.getSchedulingDockWidget().widget().solver) + reinit = moose.mooseAddChemSolver(modelRoot,self.getSchedulingDockWidget().widget().solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() else: - reinit = mooseAddChemSolver(modelRoot,solver) + reinit = moose.mooseAddChemSolver(modelRoot,solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() @@ -277,50 +256,10 @@ def getCentralWidget(self): return self._centralWidget class KkitEditorView(MooseEditorView): - #def __init__(self, plugin, dataTable): + def __init__(self, plugin): MooseEditorView.__init__(self, plugin) - ''' EditorView ''' - #self.dataTable = dataTable - #self.fileinsertMenu = QtGui.QMenu('&File') - # if not hasattr(self,'SaveModelAction'): - # #self.fileinsertMenu.addSeparator() - # self.saveModelAction = QtGui.QAction('SaveToGenesisFormat', self) - # self.saveModelAction.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) - # self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveToGenesisSlot) - # self.fileinsertMenu.addAction(self.saveModelAction) - #self._menus.append(self.fileinsertMenu) - - # def SaveModelDialogSlot(self): - # type_sbml = 'SBML' - # filters = {'SBML(*.xml)': type_sbml} - # filename,filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter(None,'Save File','',';;'.join(filters)) - # extension = "" - # if str(filename).rfind('.') != -1: - # filename = filename[:str(filename).rfind('.')] - # if str(filter_).rfind('.') != -1: - # extension = filter_[str(filter_).rfind('.'):len(filter_)-1] - # if filename: - # filename = filename+extension - # if filters[str(filter_)] == 'SBML': - # writeerror = moose.writeSBML(str(filename),self.plugin.modelRoot) - # if writeerror: - # QtGui.QMessageBox.warning(None,'Could not save the Model','\n Error in the consistency check') - # else: - # QtGui.QMessageBox.information(None,'Saved the Model','\n File Saved to \'{filename}\''.format(filename =filename),QtGui.QMessageBox.Ok) - ''' - def getToolPanes(self): - return super(KkitEditorView, self).getToolPanes() - - def getLibraryPane(self): - return super(KkitEditorView, self).getLibraryPane() - - def getOperationsWidget(self): - return super(KkitEditorView, self).getOperationsPane() - def getToolBars(self): - return self._toolBars - ''' def getCentralWidget(self): if self._centralWidget is None: self._centralWidget = kineticEditorWidget(self.plugin) @@ -393,7 +332,7 @@ def updateModelView(self): elif isinstance(self,kineticRunWidget): self.view.setRefWidget("runView") self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) - hLayout = QtGui.QGridLayout(self) + hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view,0,0) else: @@ -412,12 +351,12 @@ def updateModelView(self): self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) - hLayout = QtGui.QGridLayout(self) + hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) elif isinstance(self,kineticRunWidget): self.view.setRefWidget("runView") - hLayout = QtGui.QGridLayout(self) + hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10,self.sceneContainer.itemsBoundingRect().y()-10,self.sceneContainer.itemsBoundingRect().width()+20,self.sceneContainer.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) @@ -1170,7 +1109,10 @@ def getToolBars(self): def updateValue(self): for item in self.sceneContainer.items(): - if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) or isinstance(item,EnzItem) or isinstance(item,PoolItemCircle) or isinstance(item,CplxItem): + if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) \ + or isinstance(item,EnzItem) \ + or isinstance(item,PoolItemCircle) \ + or isinstance(item,CplxItem): item.updateValue(item.mobj) def changeBgSize(self): @@ -1193,37 +1135,25 @@ def changeBgSize(self): def resetColor(self): for item in self.sceneContainer.items(): - if isinstance(item,PoolItemCircle): + if isinstance(item, PoolItemCircle): item.returnEllispeSize() if __name__ == "__main__": + from PyQt5 import QApplication app = QApplication(sys.argv) size = QtCore.QSize(1024 ,768) - #modelPath = 'Kholodenko' modelPath = 'acc27' - #modelPath = 'acc8' - #modelPath = '3ARECB' - #modelPath = '3AreacB' - #modelPath = '5AreacB' itemignoreZooming = False try: - filepath = '../../Demos/Genesis_files/'+modelPath+'.g' - filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' + filepath = '../data/'+modelPath+'.g' print( "%s" %(filepath)) f = open(filepath, "r") - loadModel(filepath,'/'+modelPath) - - #moose.le('/'+modelPath+'/kinetics') + moose.loadModel(filepath,'/'+modelPath) dt = KineticsWidget() dt.modelRoot ='/'+modelPath - ''' Loading moose signalling model in python ''' - #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') - #dt.modelRoot = '/model' - dt.updateModelView() dt.show() - - except IOError as what: + except IOError as e: print(e) quit(1) diff --git a/moosegui/plugins/kkitUtil.py b/moosegui/plugins/kkitUtil.py index d1e28d9..08f69f3 100644 --- a/moosegui/plugins/kkitUtil.py +++ b/moosegui/plugins/kkitUtil.py @@ -1,23 +1,16 @@ +# -*- coding: utf-8 -*- + __author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" +__credits__ = ["Bhalla Lab, NCBS Bangalore"] +__license__ = "GPLv3" __maintainer__ = "HarshaRani" __email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Oct 11 2018" - -''' -2018 -Oct 11: when collision is handled an update of position is done -Sep 28: spell corrected cyclMesh to cylMesh -Sep 17: when vertical or horizontal layout is applied for group, compartment size is recalculated -Sep 11: group size is calculated based on sceneBoundingRect for compartment size -2017 -Oct 18 some of the function moved to this file from kkitOrdinateUtils -''' + +__all__ = [ "ReacItem", "EnzItem", "CplxItem" ] + from moose import Annotator,element,ChemCompt -from kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,GRPItem,ComptItem + +from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, GRPItem from PyQt5 import QtCore, QtGui, QtSvg from PyQt5.QtGui import QColor @@ -33,7 +26,16 @@ colorMap = pickle.load(colormap_file) colormap_file.close() -ignoreColor= ["mistyrose","antiquewhite","aliceblue","azure","bisque","black","blanchedalmond","blue","cornsilk","darkolivegreen","darkslategray","dimgray","floralwhite","gainsboro","ghostwhite","honeydew","ivory","lavender","lavenderblush","lemonchiffon","lightcyan","lightgoldenrodyellow","lightgray","lightyellow","linen","mediumblue","mintcream","navy","oldlace","papayawhip","saddlebrown","seashell","snow","wheat","white","whitesmoke","aquamarine","lightsalmon","moccasin","limegreen","snow","sienna","beige","dimgrey","lightsage"] +ignoreColor= ["mistyrose", "antiquewhite", "aliceblue", "azure", "bisque", + "black", "blanchedalmond", "blue", "cornsilk", "darkolivegreen", + "darkslategray", "dimgray", "floralwhite", "gainsboro", "ghostwhite", + "honeydew", "ivory", "lavender", "lavenderblush", "lemonchiffon", + "lightcyan", "lightgoldenrodyellow", "lightgray", "lightyellow", + "linen", "mediumblue", "mintcream", "navy", "oldlace", "papayawhip", + "saddlebrown", "seashell", "snow", "wheat", "white", "whitesmoke", + "aquamarine", "lightsalmon", "moccasin", "limegreen", "snow", "sienna", + "beige", "dimgrey", "lightsage"] + matplotcolor = {} for name,hexno in matplotlib.colors.cnames.items(): matplotcolor[name]=hexno @@ -72,12 +74,11 @@ def getColor(iteminfo): return(textcolor,bgcolor) def colorCheck(fc_bgcolor,fcbg): - """ textColor or background can be anything like string or tuple or list \ - if string its taken as colorname further down in validColorcheck checked for valid color, \ - but for tuple and list its taken as r,g,b value. + """ + textColor or background can be anything like string or tuple or list \ + if string its taken as colorname further down in validColorcheck checked for valid color, \ + but for tuple and list its taken as r,g,b value. """ - #import re - #fc_bgcolor = re.sub('[^a-zA-Z0-9-_*.]', '', fc_bgcolor) if isinstance(fc_bgcolor,str): if fc_bgcolor.startswith("#"): fc_bgcolor = QColor(fc_bgcolor) @@ -99,11 +100,6 @@ def colorCheck(fc_bgcolor,fcbg): return(fc_bgcolor) def validColorcheck(color): - ''' - Both in Qt4.7 and 4.8 if not a valid color it makes it as back but in 4.7 there will be a warning mssg which is taken here - checking if textcolor or backgroundcolor is valid color, if 'No' making white color as default - where I have not taken care for checking what will be backgroundcolor for textcolor or textcolor for backgroundcolor - ''' if QColor(color).isValid(): return (QColor(color)) else: @@ -120,10 +116,7 @@ def moveMin(reference, collider, layoutPt,margin): else: yDistance = referenceRect.y() + referenceRect.height() / 2.0 + colliderRect.height() / 2.0 + margin - colliderRect.y() - #if xDistance > yDistance: collider.moveBy(xDistance, yDistance) - #else: - # collider.moveBy(xDistance, 0.0) layoutPt.drawLine_arrow(itemignoreZooming=False) def moveX(reference, collider, layoutPt, margin): @@ -138,20 +131,20 @@ def handleCollisions(compartments, moveCallback, layoutPt,margin = 5.0): if len(compartments) is 0 : return compartments = sorted(compartments, key = lambda c: c.sceneBoundingRect().center().x()) reference = compartments.pop(0); - print (reference.name) referenceRect = reference.sceneBoundingRect() - colliders = [compartment for compartment in compartments if referenceRect.intersects(compartment.sceneBoundingRect())] + colliders = [compartment for compartment in compartments + if referenceRect.intersects(compartment.sceneBoundingRect()) + ] for collider in colliders: moveCallback(reference, collider, layoutPt,margin) - #print (reference.mobj).parent + if isinstance(element(((reference.mobj).parent)),ChemCompt): v = layoutPt.qGraCompt[element(((reference.mobj).parent))] - #layoutPt.updateCompartmentSize(x) rectcompt = calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): layoutPt.updateCompartmentSize(v) - + else: rectcompt = calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) @@ -181,17 +174,14 @@ def calculateChildBoundingRect(compt): xpos.append(l.sceneBoundingRect().bottomRight().x()) ypos.append(l.sceneBoundingRect().y()) ypos.append(l.sceneBoundingRect().bottomRight().y()) - ''' - xpos.append(l.rect().x()) - xpos.append(l.boundingRect().bottomRight().x()) - ypos.append(l.rect().y()) - ypos.append(l.boundingRect().bottomRight().y()) - ''' if (isinstance(l,PoolItem) or isinstance(l,EnzItem)): ''' For Enz cplx height and for pool function height needs to be taken''' for ll in l.childItems(): - ''' eleminating polygonItem (arrow) [This is happen in cross-compartment model that arrow from one compartment will be child] - pool's outboundary RectItem and Enz's outerboundary Ellipse is eleminating since its same + ''' eleminating polygonItem (arrow) [This is happen in + cross-compartment model that arrow from one compartment will be + child] + pool's outboundary RectItem and Enz's outerboundary Ellipse + is eleminating since its samee ''' if ( (not isinstance(ll,QtGui.QGraphicsPolygonItem)) and (not isinstance(ll,QtGui.QGraphicsRectItem)) and From dc15342e2263d364775b5c0a1e6951b35eda216c Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 13:58:27 +0530 Subject: [PATCH 56/66] major cleanup. --- moosegui/__init__.py | 2 +- moosegui/plugins/kkitUtil.py | 20 +- moosegui/plugins/kkitViewcontrol.py | 682 ++++++++++++++-------------- 3 files changed, 361 insertions(+), 343 deletions(-) diff --git a/moosegui/__init__.py b/moosegui/__init__.py index f2d83d2..04710fb 100644 --- a/moosegui/__init__.py +++ b/moosegui/__init__.py @@ -1,3 +1,3 @@ from __future__ import print_function, division, absolute_import import matplotlib -matplotlib.use('Qt5Agg') +# matplotlib.use('Qt5Agg') diff --git a/moosegui/plugins/kkitUtil.py b/moosegui/plugins/kkitUtil.py index 08f69f3..8c431e0 100644 --- a/moosegui/plugins/kkitUtil.py +++ b/moosegui/plugins/kkitUtil.py @@ -6,22 +6,22 @@ __maintainer__ = "HarshaRani" __email__ = "hrani@ncbs.res.in" -__all__ = [ "ReacItem", "EnzItem", "CplxItem" ] - -from moose import Annotator,element,ChemCompt - -from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, GRPItem - -from PyQt5 import QtCore, QtGui, QtSvg -from PyQt5.QtGui import QColor -from moosegui import config - import numpy as np import os import pickle import random import matplotlib +from PyQt5 import QtCore, QtGui, QtSvg +from PyQt5.QtGui import QColor + +# MOOSE +from moose import Annotator, element, ChemCompt + +# MOOSE gui +from moosegui.plugins.kkitQGraphics import PoolItem, EnzItem, GRPItem +from moosegui import config + colormap_file = open(os.path.join(config.settings[config.KEY_COLORMAP_DIR], 'rainbow2.pkl'),'rb') colorMap = pickle.load(colormap_file) colormap_file.close() diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 31a262c..981702a 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -1,54 +1,39 @@ +# -*- coding: utf-8 -*- + __author__ = "HarshaRani" __credits__ = ["Upi Lab"] __license__ = "GPL3" -__version__ = "1.0.0" __maintainer__ = "HarshaRani" __email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Oct 27 2018" - -''' -2018 -Oct 27 : When group is moved within another group, outer group is resize inturn compartmet is also resized -Oct 10 : Groups are handled with collision detection, - messagebox when object moved from one group to another - layout updated when object moved etc -Sep 18 : one can close the messagebox if doesn't want to plot -Sep 07 : when object qgraphicalparent is changed then connecting arrow's parent also need to be changed -Jun 08 : If object is moved from one group or compartment to another group or with in same Compartment, - then both at moose level (group or compartment path is updated ) and qt level the setParentItem is set - -If object is moved to Empty place or not allowed place in the GUI its moved back to origin position - -also some clean up when object is just clicked in QsvgItem and v/s clicked and some action done - -with Rubber selection if object are moved then group size is updated -2017 -Oct 03 : At mousePressEvent, a clean way of checking on what object mouse press Event happened is checked. - This is after group is added where Group Interior and Boundary is checked, with in groupInterior if click in - on COMPARTMENT BOUNDARY is clicked then COMPARTMENT_BOUNDARY is return, else top most group object is returned. -Sep 20 : Group related function added - -resolveGroupInteriorAndBoundary, findGraphic_groupcompt, graphicsIsInstance - -@resolveItem,editorMousePressEvent,editorMouseMoveEvent,editorMouseReleaseEvent checks made for group - -''' -import sys - -from moosegui.plugins.modelBuild import * -from moosegui.plugins.constants import * -from moosegui.plugins.kkitUtil import * -from moosegui.plugins.setsolver import * - -from PyQt5.QtGui import QPixmap, QImage, QPen, QGraphicsPixmapItem, QGraphicsLineItem -from PyQt5.QtCore import pyqtSignal -from kkitUtil import * -#from setsolver import * -from PyQt5 import QtSvg -from moose import utils + +import os from functools import partial +from PyQt5 import QtSvg, Qt, QtGui, QtCore +from PyQt5.QtWidgets import QGraphicsLineItem, QApplication +from PyQt5.QtWidgets import QGraphicsScene, QGraphicsView +from PyQt5.QtWidgets import QMenu, QMessageBox, QGraphicsPolygonItem +from PyQt5.QtWidgets import QGraphicsItem, QPushButton, QRubberBand + +# MOOSE +import moose + +# moosegui +from moosegui.plugins import kkitUtil +from moosegui.plugins import modelBuild +from moosegui.plugins import constants +from moosegui.plugins import setsolver +from moosegui.plugins import kkitQGraphics +from moosegui.plugins import kkitOrdinateUtil -class GraphicalView(QtGui.QGraphicsView): +# logger +from moosegui import config +_logger = config._logger + +class GraphicalView(QGraphicsView): def __init__(self, modelRoot,parent,border,layoutPt,createdItem): - QtGui.QGraphicsView.__init__(self,parent) + QGraphicsView.__init__(self,parent) self.state = None self.move = False @@ -59,14 +44,12 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem): self.selections = [] self.connector = None self.connectionSignImagePath = "../gui/icons/connection.png" - self.connectionSignImage = QImage(self.connectionSignImagePath) - - # self.expectedConnectionPen = QPen() + self.connectionSignImage = QtGui.QImage(self.connectionSignImagePath) self.setScene(parent) self.modelRoot = modelRoot self.sceneContainerPt = parent - self.sceneContainerPt.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex) - self.setDragMode(QtGui.QGraphicsView.RubberBandDrag) + self.sceneContainerPt.setItemIndexMethod(QGraphicsScene.NoIndex) + self.setDragMode(QGraphicsView.RubberBandDrag) self.itemSelected = False self.customrubberBand = None self.rubberbandWidth = 0 @@ -81,8 +64,7 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem): self.stackOrder = self.sceneContainerPt.items(Qt.Qt.DescendingOrder) # From stackOrder selecting only compartment self.cmptStackorder = [ - i for i in self.stackOrder if isinstance( - i, ComptItem)] + i for i in self.stackOrder if isinstance(i, kkitQGraphics.ComptItem)] self.viewBaseType = " " self.iconScale = 1 self.arrowsize = 2 @@ -92,8 +74,8 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem): "clone": None, "move": None, "delete": None} - self.setHorizontalScrollBarPolicy(PyQt5.QtCore.Qt.ScrollBarAlwaysOn) - self.setVerticalScrollBarPolicy(PyQt5.QtCore.Qt.ScrollBarAlwaysOn) + self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) + self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) def setRefWidget(self, path): self.viewBaseType = path @@ -109,27 +91,29 @@ def resizeEvent(self, event): def resolveCompartmentInteriorAndBoundary(self, item, position): bound = item.rect().adjusted(3, 3, -3, -3) - return COMPARTMENT_INTERIOR if bound.contains( - item.mapFromScene(position)) else COMPARTMENT_BOUNDARY + return constants.COMPARTMENT_INTERIOR if bound.contains( + item.mapFromScene(position)) else constants.COMPARTMENT_BOUNDARY def resolveGroupInteriorAndBoundary(self, item, position): bound = item.rect().adjusted(3,3,-3,-3) - return GROUP_INTERIOR if bound.contains(item.mapFromScene(position)) else GROUP_BOUNDARY + return constants.constants.GROUP_INTERIOR \ + if bound.contains(item.mapFromScene(position)) \ + else constants.GROUP_BOUNDARY def resetState(self): - self.state = { "press" : { "mode" : INVALID - , "item" : None - , "sign" : None - , "pos" : None - , "scenepos" : None - } - , "move" : { "happened": False - } - , "release" : { "mode" : INVALID - , "item" : None - , "sign" : None - } + self.state = { "press" : { "mode" : constants.INconstants.VALID + , "item" : None + , "sign" : None + , "pos" : None + , "scenepos" : None + } + , "move" : { "happened": False + } + , "release" : { "mode" : constants.INconstants.VALID + , "item" : None + , "sign" : None } + } def resolveItem(self, items, position): @@ -145,29 +129,29 @@ def resolveItem(self, items, position): #move is True the for item in items: if isinstance(item, QtSvg.QGraphicsSvgItem): - return (item, CONNECTOR) + return (item, constants.CONNECTOR) if not self.state["move"]["happened"]: for item in items: - if isinstance(item, QtGui.QGraphicsPolygonItem): - return (item, CONNECTION) + if isinstance(item, QGraphicsPolygonItem): + return (item, constants.CONNECTION) for item in items: if hasattr(item, "name"): - if item.name == ITEM: - return (item, ITEM) - if item.name == GROUP: + if item.name == constants.ITEM: + return (item, constants.ITEM) + if item.name == constants.GROUP: gsolution = (item, self.resolveGroupInteriorAndBoundary(item, position)) - if gsolution[1] == GROUP_BOUNDARY: + if gsolution[1] == constants.GROUP_BOUNDARY: return gsolution - elif gsolution[1] == GROUP_INTERIOR: + elif gsolution[1] == constants.constants.GROUP_INTERIOR: groupInteriorfound = True groupList.append(gsolution) - if item.name == COMPARTMENT: + if item.name == constants.COMPARTMENT: csolution = (item, self.resolveCompartmentInteriorAndBoundary(item, position)) - if csolution[1] == COMPARTMENT_BOUNDARY: + if csolution[1] == constants.COMPARTMENT_BOUNDARY: return csolution - # elif csolution[1] == COMPARTMENT_INTERIOR: + # elif csolution[1] == constants.COMPARTMENT_INTERIOR: # comptInteriorfound = True # comptBoundary.append(csolution) @@ -178,7 +162,7 @@ def resolveItem(self, items, position): return groupList[0] else: if csolution is None: - return (None, EMPTY) + return (None, constants.EMPTY) return csolution def findGraphic_groupcompt(self,gelement): @@ -187,13 +171,14 @@ def findGraphic_groupcompt(self,gelement): return gelement def graphicsIsInstance(self, gelement, classNames): + assert '.' not in gelement.__class__.__name__ return gelement.__class__.__name__ in classNames def editorMousePressEvent(self, event): self.clickPosition = self.mapToScene(event.pos()) (item, itemType) = self.resolveItem(self.items(event.pos()), self.clickPosition) if event.buttons() == QtCore.Qt.LeftButton: - self.state["press"]["mode"] = VALID + self.state["press"]["mode"] = constants.VALID self.state["press"]["item"] = item self.state["press"]["type"] = itemType self.state["press"]["pos"] = event.pos() @@ -201,47 +186,49 @@ def editorMousePressEvent(self, event): ##This is kept for reference, so that if object (P,R,E,Tab,Fun) is moved outside the compartment, #then it need to be pull back to original position self.state["press"]["scenepos"] = item.parent().scenePos() - if itemType == COMPARTMENT_INTERIOR or itemType == GROUP_BOUNDARY or itemType == GROUP_INTERIOR: + if itemType == constants.COMPARTMENT_INTERIOR or itemType == constants.GROUP_BOUNDARY or itemType == constants.constants.GROUP_INTERIOR: self.removeConnector() - - elif itemType == ITEM: + + elif itemType == constants.ITEM: if not self.move: self.showConnector(self.state["press"]["item"]) else: - #If right button clicked self.resetState() - # if itemType == GROUP_INTERIOR: - # print " self.layoutPt.qGraGrp ",item, item.childItems() - # grouplist = [] - # for i in item.childItems(): - # if isinstance(i,KineticsDisplayItem): - # grouplist.append(i) - # popupmenu = QtGui.QMenu('PopupMenu', self) - # popupmenu.addAction("LinearLayout", lambda : handleCollisions(list(grouplist), moveX, self.layoutPt)) - # popupmenu.addAction("VerticalLayout" ,lambda : handleCollisions(list(grouplist), moveMin, self.layoutPt )) - # popupmenu.exec_(self.mapToGlobal(event.pos())) - # self.layoutPt.updateGrpSize(item) - - if itemType == GROUP_BOUNDARY: - popupmenu = QtGui.QMenu('PopupMenu', self) + if itemType == constants.GROUP_BOUNDARY: + popupmenu = QMenu('PopupMenu', self) popupmenu.addAction("DeleteGroup", lambda : self.deleteGroup(item,self.layoutPt)) - popupmenu.addAction("LinearLayout", lambda : handleCollisions(list(self.layoutPt.qGraGrp.values()), moveX, self.layoutPt)) - popupmenu.addAction("VerticalLayout" ,lambda : handleCollisions(list(self.layoutPt.qGraGrp.values()), moveMin, self.layoutPt )) - + popupmenu.addAction("LinearLayout" + , lambda: kkitUtil.handleCollisions( + list(self.layoutPt.qGraGrp.values() ), kkitUtil.moveX, self.layoutPt) + ) + popupmenu.addAction("VerticalLayout" + , lambda : kkitUtil.handleCollisions( + list(self.layoutPt.qGraGrp.values()), kkitUtil.moveMin, self.layoutPt + ) + ) + #popupmenu.addAction("CloneGroup" ,lambda : handleCollisions(comptList, moveMin, self.layoutPt )) popupmenu.exec_(self.mapToGlobal(event.pos())) - - elif itemType == COMPARTMENT_BOUNDARY: + + elif itemType == constants.COMPARTMENT_BOUNDARY: if len(list(self.layoutPt.qGraCompt.values())) > 1: - popupmenu = QtGui.QMenu('PopupMenu', self) - #popupmenu.addAction("DeleteCmpt", lambda : self.deleteCmpt(item,self.layoutPt)) - popupmenu.addAction("LinearLayout", lambda : handleCollisions(list(self.layoutPt.qGraCompt.values()), moveX, self.layoutPt)) - popupmenu.addAction("VerticalLayout" ,lambda : handleCollisions(list(self.layoutPt.qGraCompt.values()), moveMin, self.layoutPt )) + popupmenu = QMenu('PopupMenu', self) + # popupmenu.addAction("DeleteCmpt", lambda : self.deleteCmpt(item,self.layoutPt)) + popupmenu.addAction("LinearLayout" + , lambda : kkitUtil.handleCollisions( + list(self.layoutPt.qGraCompt.values()), kkitUtil.moveX, self.layoutPt + ) + ) + popupmenu.addAction("VerticalLayout" + , lambda : kkitUtil.handleCollisions( + list(self.layoutPt.qGraCompt.values()), kkitUtil.moveMin, self.layoutPt + ) + ) popupmenu.exec_(self.mapToGlobal(event.pos())) def editorMouseMoveEvent(self,event): - if self.state["press"]["mode"] == INVALID: + if self.state["press"]["mode"] == constants.INconstants.VALID: self.state["move"]["happened"] = False return if self.move: @@ -250,8 +237,9 @@ def editorMouseMoveEvent(self,event): final = self.mapToScene(event.pos()) displacement = final - initial for item in self.selectedItems: - if isinstance(item, KineticsDisplayItem) and not isinstance( - item, ComptItem) and not isinstance(item, CplxItem): + if isinstance(item, kkitQGraphics.KineticsDisplayItem) \ + and not isinstance(item, kkitQGraphics.ComptItem) \ + and not isinstance(item, kkitQGraphics.CplxItem): item.moveBy(displacement.x(), displacement.y()) self.layoutPt.positionChange(item.mobj.path) self.state["press"]["pos"] = event.pos() @@ -260,20 +248,20 @@ def editorMouseMoveEvent(self,event): self.state["move"]["happened"] = True itemType = self.state["press"]["type"] item = self.state["press"]["item"] - if itemType == CONNECTOR: + if itemType == constants.CONNECTOR: actionType = str(item.data(0).toString()) if actionType == "move": - QtGui.QApplication.setOverrideCursor( + QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.CrossCursor)) initial = self.mapToScene(self.state["press"]["pos"]) final = self.mapToScene(event.pos()) displacement = final-initial self.removeConnector() item.parent().moveBy(displacement.x(), displacement.y()) - #self.layoutPt.updateArrow(item.parent()) - if isinstance(item.parent(),PoolItem): + # self.layoutPt.updateArrow(item.parent()) + if isinstance(item.parent(), kkitQGraphics.PoolItem): for funcItem in item.parent().childItems(): - if isinstance(funcItem,FuncItem): + if isinstance(funcItem, kkitQGraphics.FuncItem): self.layoutPt.updateArrow(funcItem) self.state["press"]["pos"] = event.pos() self.layoutPt.positionChange(item.parent().mobj) @@ -289,26 +277,26 @@ def editorMouseMoveEvent(self,event): painter.drawLine(12, 7, 12, 17) painter.drawLine(7, 12, 17, 12) painter.end() - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(pixmap)) + QApplication.setOverrideCursor(QtGui.QCursor(pixmap)) - if itemType == ITEM: + if itemType == constants.ITEM: self.drawExpectedConnection(event) - if itemType == COMPARTMENT_BOUNDARY or itemType == GROUP_BOUNDARY: + if itemType == constants.COMPARTMENT_BOUNDARY or itemType == constants.GROUP_BOUNDARY: '''When Comparement or group is moved from boundary''' initial = self.mapToScene(self.state["press"]["pos"]) final = self.mapToScene(event.pos()) displacement = final - initial item.moveBy(displacement.x(), displacement.y()) - if isinstance(item.parentItem(),GRPItem): + if isinstance(item.parentItem(), kkitQGraphics.GRPItem): self.layoutPt.updateGrpSize(item.parentItem()) self.layoutPt.positionChange(item.mobj.path) self.state["press"]["pos"] = event.pos() - if itemType == COMPARTMENT_INTERIOR or itemType == GROUP_INTERIOR: + if itemType == constants.COMPARTMENT_INTERIOR or itemType == constants.constants.GROUP_INTERIOR: if self.customrubberBand == None: - self.customrubberBand = QtGui.QRubberBand(QtGui.QRubberBand.Rectangle,self) + self.customrubberBand = QRubberBand(QRubberBand.Rectangle,self) self.customrubberBand.show() startingPosition = self.state["press"]["pos"] @@ -318,31 +306,35 @@ def editorMouseMoveEvent(self,event): x0 = startingPosition.x() x1 = endingPosition.x() y0 = startingPosition.y() - y1 = endingPosition.y() if displacement.x() < 0: x0, x1 = x1, x0 - self.customrubberBand.setGeometry(QtCore.QRect(QtCore.QPoint(x0, y0), QtCore.QSize(abs(displacement.x()), abs(displacement.y())))) + self.customrubberBand.setGeometry( + QtCore.QRect( + QtCore.QPoint(x0, y0) + , QtCore.QSize(abs(displacement.x()), abs(displacement.y())) + ) + ) def editorMouseReleaseEvent(self,event): if self.move: self.move = False self.setCursor(Qt.Qt.ArrowCursor) - if self.state["press"]["mode"] == INVALID: - self.state["release"]["mode"] = INVALID + if self.state["press"]["mode"] == constants.INconstants.VALID: + self.state["release"]["mode"] = constants.INconstants.VALID self.resetState() return self.clickPosition = self.mapToScene(event.pos()) (item, itemType) = self.resolveItem( self.items(event.pos()), self.clickPosition) - self.state["release"]["mode"] = VALID + self.state["release"]["mode"] = constants.VALID self.state["release"]["item"] = item self.state["release"]["type"] = itemType clickedItemType = self.state["press"]["type"] - if clickedItemType == ITEM: + if clickedItemType == constants.ITEM: if not self.state["move"]["happened"]: if not self.move: self.showConnector(self.state["press"]["item"]) @@ -355,7 +347,7 @@ def editorMouseReleaseEvent(self,event): l = self.modelRoot[0:self.modelRoot.find('/',1)] linfo = moose.Annotator(l+'/info') for k,v in self.layoutPt.qGraGrp.items(): - rectgrp = calculateChildBoundingRect(v) + rectgrp = kkitUtil.calculateChildBoundingRect(v) v.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) for k, v in self.layoutPt.qGraCompt.items(): rectcompt = v.childrenBoundingRect() @@ -368,11 +360,11 @@ def editorMouseReleaseEvent(self,event): else: # if already built model then compartment size depends # on max and min objects - rectcompt = calculateChildBoundingRect(v) + rectcompt = kkitUtil.calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) else: #When group is moved then compartment need to be update which is done here - if isinstance(self.state["release"]["item"], KineticsDisplayItem): + if isinstance(self.state["release"]["item"], kkitQGraphics.KineticsDisplayItem): if not moose.element(self.state["press"]["item"].mobj) == moose.element(self.state["release"]["item"].mobj): self.populate_srcdes( self.state["press"]["item"].mobj , self.state["release"]["item"].mobj @@ -382,7 +374,7 @@ def editorMouseReleaseEvent(self,event): self.removeExpectedConnection() self.removeConnector() self.move = False - elif clickedItemType == CONNECTOR: + elif clickedItemType == constants.CONNECTOR: actionType = str(self.state["press"]["item"].data(0).toString()) pressItem = self.state["press"]["item"] initscenepos = self.state["press"]["scenepos"] @@ -392,7 +384,7 @@ def editorMouseReleaseEvent(self,event): movedGraphObj = self.state["press"]["item"].parent() if actionType == "move": - if itemType == EMPTY: + if itemType == constants.EMPTY: self.objectpullback("Empty",item,movedGraphObj,xx,yy) else: @@ -400,22 +392,22 @@ def editorMouseReleaseEvent(self,event): if movedGraphObj.parentItem() != grpCmpt: '''Not same compartment/group to which it belonged to ''' - if isinstance(movedGraphObj,FuncItem): + if isinstance(movedGraphObj, kkitQGraphics.FuncItem): funcPool = moose.element((movedGraphObj.mobj.neighbors['valueOut'])[0]) parentGrapItem = self.layoutPt.mooseId_GObj[moose.element(funcPool)] if parentGrapItem.parentItem() != grpCmpt: self.objectpullback("Functionparent",grpCmpt,movedGraphObj,xx,yy) - if isinstance(movedGraphObj,(EnzItem,MMEnzItem)): + if isinstance(movedGraphObj, (kkitQGraphics.EnzItem, moose.MMEnzItem)): parentPool = moose.element((movedGraphObj.mobj.neighbors['enzDest'])[0]) - if isinstance(parentPool,PoolBase): + if isinstance(parentPool, moose.PoolBase): if moose.exists(grpCmpt.mobj.path+'/'+parentPool.name): if moose.exists(grpCmpt.mobj.path+'/'+parentPool.name+'/'+movedGraphObj.name): self.objectpullback("Enzyme",grpCmpt,movedGraphObj,xx,yy) else: - reply = QtGui.QMessageBox.question(self, "Moving the Object",'Do want to move \'{movedGraphObj}\' \n from \'{parent}\' to \'{grpCmpt}\''.format(movedGraphObj=movedGraphObj.mobj.name,parent= movedGraphObj.parentItem().mobj.name,grpCmpt=grpCmpt.mobj.name), - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.No: + reply = QMessageBox.question(self, "Moving the Object",'Do want to move \'{movedGraphObj}\' \n from \'{parent}\' to \'{grpCmpt}\''.format(movedGraphObj=movedGraphObj.mobj.name,parent= movedGraphObj.parentItem().mobj.name,grpCmpt=grpCmpt.mobj.name), + QMessageBox.Yes | QMessageBox.No) + if reply == QMessageBox.No: movedGraphObj.moveBy(-xx,-yy) self.layoutPt.updateArrow(movedGraphObj) @@ -428,37 +420,36 @@ def editorMouseReleaseEvent(self,event): if moose.exists(grpCmpt.mobj.path+'/'+movedGraphObj.mobj.name): self.objectpullback("All",grpCmpt,movedGraphObj,xx,yy) else: - reply = QtGui.QMessageBox.question(self, "Moving the Object",'Do want to move \'{movedGraphObj}\' \n from \'{parent}\' to \'{grpCmpt}\''.format(movedGraphObj=movedGraphObj.mobj.name,parent= movedGraphObj.parentItem().mobj.name,grpCmpt=grpCmpt.mobj.name), - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.No: + reply = QMessageBox.question(self, "Moving the Object",'Do want to move \'{movedGraphObj}\' \n from \'{parent}\' to \'{grpCmpt}\''.format(movedGraphObj=movedGraphObj.mobj.name,parent= movedGraphObj.parentItem().mobj.name,grpCmpt=grpCmpt.mobj.name), + QMessageBox.Yes | QMessageBox.No) + if reply == QMessageBox.No: movedGraphObj.moveBy(-xx,-yy) self.layoutPt.updateArrow(movedGraphObj) else: self.moveObjSceneParent(grpCmpt,movedGraphObj,item.pos(),self.mapToScene(event.pos())) else: '''Same compt/grp to which it was belong to ''' - if isinstance(movedGraphObj,KineticsDisplayItem): + if isinstance(movedGraphObj, kkitQGraphics.KineticsDisplayItem): itemPath = movedGraphObj.mobj.path if moose.exists(itemPath): iInfo = itemPath+'/info' anno = moose.Annotator(iInfo) eventpos = self.mapToScene(event.pos()) - itempos = item.pos() - x = eventpos.x()+(15/2)#-itempos.x() - y = eventpos.y()+(2/2)#-itempos.y() + x = eventpos.x()+(15/2) + y = eventpos.y()+(2/2) anno.x = x anno.y = y self.layoutPt.updateArrow(itemPath) - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) + QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) self.layoutPt.updateGrpSize(movedGraphObj.parentItem()) self.layoutPt.positionChange(movedGraphObj.mobj) self.updateScale(self.iconScale) - if isinstance(grpCmpt,GRPItem): + if isinstance(grpCmpt, kkitQGraphics.GRPItem): self.layoutPt.updateGrpSize(movedGraphObj.parentItem()) - elif isinstance(grpCmpt,ComptItem): + elif isinstance(grpCmpt, kkitQGraphics.ComptItem): self.layoutPt.updateCompartmentSize(movedGraphObj.parentItem()) - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) + QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) if actionType == "delete": self.removeConnector() @@ -473,38 +464,38 @@ def editorMouseReleaseEvent(self,event): painter.drawLine(8, 8, 16, 16) painter.drawLine(8, 16, 16, 8) painter.end() - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(pixmap)) - reply = QtGui.QMessageBox.question( + QApplication.setOverrideCursor(QtGui.QCursor(pixmap)) + reply = QMessageBox.question( self, "Deleting Object", "Do want to delete object and its connections", - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: - #delete solver first as topology is changing - mooseDeleteChemSolver(self.layoutPt.modelRoot) + QMessageBox.Yes | QMessageBox.No) + if reply == QMessageBox.Yes: + # delete solver first as topology is changing + moose.mooseDeleteChemSolver(self.layoutPt.modelRoot) self.deleteObj([item.parent()]) - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() else: - QtGui.QApplication.restoreOverrideCursor() + QApplication.restoreOverrideCursor() elif actionType == "plot": element = moose.element(item.parent().mobj.path) if isinstance (element,moose.PoolBase): - msgBox = QtGui.QMessageBox() + msgBox = QMessageBox() msgBox.setText('What to plot?') - self.pushButtonNumber = QtGui.QPushButton(('Number'))#, QtGui.QMessageBox.YesRole) - self.pushButtonConc = QtGui.QPushButton('Concentration')#, QtGui.QMessageBox.NoRole + self.pushButtonNumber = QPushButton(('Number')) + self.pushButtonConc = QPushButton('Concentration') self.pushButtonConc.setAutoDefault(False) self.pushButtonNumber.setAutoDefault(False) - msgBox.addButton(self.pushButtonNumber,QtGui.QMessageBox.YesRole) - msgBox.addButton(self.pushButtonConc,QtGui.QMessageBox.NoRole) + msgBox.addButton(self.pushButtonNumber,QMessageBox.YesRole) + msgBox.addButton(self.pushButtonConc,QMessageBox.NoRole) msgBox.buttonClicked.connect(partial(self.onClicked, str(self.modelRoot),element)) msgBox.exec_() self.removeConnector() elif actionType == "clone": if self.state["move"]["happened"]: - QtGui.QApplication.setOverrideCursor( + QApplication.setOverrideCursor( QtGui.QCursor(Qt.Qt.ArrowCursor)) self.state["press"]["item"].parent().mobj cloneObj = self.state["press"]["item"] @@ -512,21 +503,23 @@ def editorMouseReleaseEvent(self,event): itemAtView = self.sceneContainerPt.itemAt( self.mapToScene(event.pos())) self.removeConnector() - if isinstance(itemAtView,ComptItem) or isinstance(itemAtView, GRPItem): - #Solver should be deleted - ## if there is change in 'Topology' of the model - ## or if copy has to made then oject should be in unZombify mode - mooseDeleteChemSolver(self.layoutPt.modelRoot) - #As name is suggesting, if item is Compartment, then search in qGraCompt and if group then qGraGrp - if isinstance(itemAtView,ComptItem): - lKey = [key for key, value in self.layoutPt.qGraCompt.iteritems() if value == itemAtView][0] - if isinstance (itemAtView, GRPItem): - lKey = [key for key, value in self.layoutPt.qGraGrp.iteritems() if value == itemAtView][0] + if isinstance(itemAtView, kkitQGraphics.ComptItem) \ + or isinstance(itemAtView, kkitQGraphics.GRPItem): + moose.mooseDeleteChemSolver(self.layoutPt.modelRoot) + + # As name is suggesting, if item is Compartment, then + # search in qGraCompt and if group then qGraGrp + if isinstance(itemAtView, kkitQGraphics.ComptItem): + lKey = [key for key, value in self.layoutPt.qGraCompt.iteritems() + if value == itemAtView][0] + if isinstance (itemAtView, kkitQGraphics.GRPItem): + lKey = [key for key, value in self.layoutPt.qGraGrp.iteritems() + if value == itemAtView][0] iR = 0 iP = 0 t = moose.element(cloneObj.parent().mobj) name = t.name - if isinstance(cloneObj.parent().mobj, PoolBase): + if isinstance(cloneObj.parent().mobj, moose.PoolBase): retValue = self.objExist(lKey.path, name, iP) if retValue is not None: name += retValue @@ -538,19 +531,17 @@ def editorMouseReleaseEvent(self,event): # then it doesn't calculate nInit according but if one set # concInit then it would, just a hack ct.concInit = concInit - #itemAtView = self.state["release"]["item"] poolObj = moose.element(ct) poolinfo = moose.element( poolObj.path + '/info') - qGItem = PoolItem(poolObj, itemAtView) + qGItem = kkitQGraphics.PoolItem(poolObj, itemAtView) self.layoutPt.mooseId_GObj[poolObj] = qGItem - #bgcolor = getRandColor() - color, bgcolor = getColor(poolinfo) + color, bgcolor = kkitUtil.getColor(poolinfo) qGItem.setDisplayProperties( posWrtComp.x(), posWrtComp.y(), color, bgcolor) self.emit(QtCore.SIGNAL("dropped"), poolObj) - if isinstance(cloneObj.parent().mobj, ReacBase): + if isinstance(cloneObj.parent().mobj, moose.ReacBase): retValue = self.objExist(lKey.path, name, iR) if retValue is not None: name += retValue @@ -558,9 +549,8 @@ def editorMouseReleaseEvent(self,event): if rmooseCp.path != '/': ct = moose.element(rmooseCp) reacObj = moose.element(ct) - reacinfo = moose.Annotator( - reacObj.path + '/info') - qGItem = ReacItem(reacObj, itemAtView) + moose.Annotator(reacObj.path + '/info') + qGItem = kkitQGraphics.ReacItem(reacObj, itemAtView) self.layoutPt.mooseId_GObj[reacObj] = qGItem posWrtComp = self.mapToScene(event.pos()) qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") @@ -568,28 +558,30 @@ def editorMouseReleaseEvent(self,event): self.updateScale(self.iconScale) else: if itemAtView is None: - QtGui.QMessageBox.information( + QMessageBox.information( None, 'Dropping Not possible ', 'Dropping not allowed outside the compartment', - QtGui.QMessageBox.Ok) + QMessageBox.Ok) else: srcdesString = ((self.state["release"]["item"]).mobj).className - QtGui.QMessageBox.information(None,'Dropping Not possible','Dropping on \'{srcdesString}\' not allowed'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + QMessageBox.information(None,'Dropping Not possible','Dropping on \'{srcdesString}\' not allowed'.format(srcdesString = srcdesString),QMessageBox.Ok) - if clickedItemType == CONNECTION: - popupmenu = QtGui.QMenu('PopupMenu', self) + if clickedItemType == constants.CONNECTION: + popupmenu = QMenu('PopupMenu', self) popupmenu.addAction("Delete", lambda: self.deleteConnection(item)) popupmenu.exec_(self.mapToGlobal(event.pos())) - if clickedItemType == COMPARTMENT_BOUNDARY or clickedItemType == GROUP_BOUNDARY: + if clickedItemType == constants.COMPARTMENT_BOUNDARY \ + or clickedItemType == constants.GROUP_BOUNDARY: if item != None: item.setSelected(True) if not self.state["move"]["happened"]: self.layoutPt.plugin.mainWindow.objectEditSlot(self.state["press"]["item"].mobj, True) self.resetState() - if clickedItemType == COMPARTMENT_INTERIOR or clickedItemType == GROUP_INTERIOR: + if clickedItemType == constants.COMPARTMENT_INTERIOR \ + or clickedItemType == constants.GROUP_INTERIOR: if self.state["move"]["happened"]: startingPosition = self.state["press"]["pos"] endingPosition = event.pos() @@ -608,21 +600,19 @@ def editorMouseReleaseEvent(self,event): self.selectedItems = selectedItems = self.items(x0,y0,abs(displacement.x()), abs(displacement.y())) self.selectSelections(selectedItems) for item in selectedItems: - if isinstance( - item, - KineticsDisplayItem) and not isinstance( - item, - ComptItem): + if isinstance( item, kkitQGraphics.KineticsDisplayItem) \ + and not isinstance( item, kkitQGraphics.ComptItem): item.setSelected(True) if self.customrubberBand != None: self.customrubberBand.hide() self.customrubberBand = None - popupmenu = QtGui.QMenu('PopupMenu', self) + popupmenu = QMenu('PopupMenu', self) popupmenu.addAction("Delete", lambda: self.deleteSelections(x0,y0,x1,y1)) popupmenu.addAction("Zoom", lambda: self.zoomSelections(x0,y0,x1,y1)) popupmenu.addAction("Move", lambda: self.moveSelections()) popupmenu.exec_(self.mapToGlobal(event.pos())) + self.resetState() def onClicked(self,modelRoot,element, btn): @@ -640,15 +630,11 @@ def onClicked(self,modelRoot,element, btn): else: plotType = "Conc" - tablePath = moose.utils.create_table_path(moose.element(self.modelRoot), self.graph, element, plotType) - table = moose.utils.create_table(tablePath, element, plotType,"Table2") - ''' - tablePath = utils.create_table_path(moose.element(self.modelRoot), self.graph, element, "Conc") - table = utils.create_table(tablePath, element, "Conc","Table2") - ''' + tablePath = moose.utils.create_table_path( + moose.element(self.modelRoot), self.graph, element, plotType) + moose.utils.create_table(tablePath, element, plotType,"Table2") self.layoutPt.plugin.view.getCentralWidget().plotWidgetContainer.plotAllData() - reply = QtGui.QMessageBox.information(self, "plot Object","Plot is added to Graph1", - QtGui.QMessageBox.Ok) + QMessageBox.information(self, "plot Object", "Plot is added to Graph1", QMessageBox.Ok) self.removeConnector() def objectpullback(self,messgtype,item,movedGraphObj,xx,yy): @@ -673,30 +659,30 @@ def objectpullback(self,messgtype,item,movedGraphObj,xx,yy): elif messgtype.lower() =="functionparent": messgstr = "The Function parent \'{0}\' doesn't exist in \'{2}\' {1} \n If you need to move the function to {1} first move the parent pool".format(movedGraphObj.mobj.parent.name,desObj,item.mobj.name) - QtGui.QMessageBox.warning(None,'Could not move the object', messgstr ) - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) + QMessageBox.warning(None,'Could not move the object', messgstr ) + QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) - def moveObjSceneParent(self,item,movedGraphObj,itempos,eventpos): + def moveObjSceneParent(self,item, movedGraphObj, itempos, eventpos): ''' Scene parent object needs to be updated ''' - if isinstance(movedGraphObj,FuncItem): + if isinstance(movedGraphObj, kkitQGraphics.FuncItem): return prevPar = movedGraphObj.parentItem() movedGraphObj.setParentItem(item) - if isinstance(movedGraphObj,ReacItem): + if isinstance(movedGraphObj, kkitQGraphics.ReacItem): for ll in self.layoutPt.object2line[movedGraphObj]: ll[0].setParentItem(item) moose.move(movedGraphObj.mobj, item.mobj) self.layoutPt.plugin.mainWindow.objectEditSlot(movedGraphObj.mobj, True) - if isinstance(movedGraphObj ,PoolItem): + if isinstance(movedGraphObj, moose.PoolItem): ''' if pool is moved, a check is made to see if this pool is parent of a enzyme if yes then Graphicalparent is changed, and not moose path since it will be taken care while we move pool ''' pl = (movedGraphObj.mobj).neighbors['nOut'] for es in pl: - if isinstance(moose.element(es), EnzBase): + if isinstance(moose.element(es), moose.EnzBase): if moose.element(moose.element(es).neighbors['enzDest'][0]) == movedGraphObj.mobj: enzGrapObj = self.layoutPt.mooseId_GObj[moose.element(es)] enzXpos = enzGrapObj.scenePos().x() @@ -712,41 +698,48 @@ def moveObjSceneParent(self,item,movedGraphObj,itempos,eventpos): self.setnewPostion(movedGraphObj,itempos,eventpos) self.layoutPt.updateArrow(movedGraphObj) self.layoutPt.positionChange(movedGraphObj.mobj) - if isinstance(prevPar,GRPItem): + if isinstance(prevPar, kkitQGraphics.GRPItem): if item != prevPar: self.layoutPt.updateGrpSize(prevPar) self.layoutPt.updateGrpSize(item) def setnewPostion(self,movedGraphObj,itempos,eventpos): - if isinstance(movedGraphObj,KineticsDisplayItem): + if isinstance(movedGraphObj, kkitQGraphics.KineticsDisplayItem): itemPath = movedGraphObj.mobj.path if moose.exists(itemPath): iInfo = itemPath+'/info' - anno = moose.Annotator(iInfo) + moose.Annotator(iInfo) x = eventpos.x()+(15/2)-itempos.x() y = eventpos.y()+(2/2)-itempos.y() - if isinstance(movedGraphObj,ReacItem) or isinstance(movedGraphObj,EnzItem) or isinstance(movedGraphObj,MMEnzItem): + if isinstance(movedGraphObj, kkitQGraphics.ReacItem) \ + or isinstance(movedGraphObj, kkitQGraphics.EnzItem) \ + or isinstance(movedGraphObj, kkitQGraphics.MMEnzItem): movedGraphObj.setGeometry(x,y, movedGraphObj.gobj.boundingRect().width(), movedGraphObj.gobj.boundingRect().height()) - elif isinstance(movedGraphObj,PoolItem): - movedGraphObj.setGeometry(x, y,movedGraphObj.gobj.boundingRect().width() - +PoolItem.fontMetrics.width(' '), + elif isinstance(movedGraphObj, moose.PoolItem): + movedGraphObj.setGeometry(x, y, movedGraphObj.gobj.boundingRect().width() + + moose.PoolItem.fontMetrics.width(' '), movedGraphObj.gobj.boundingRect().height()) - movedGraphObj.bg.setRect(0, 0, movedGraphObj.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '), movedGraphObj.gobj.boundingRect().height()) - QtGui.QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) + movedGraphObj.bg.setRect(0, 0, + movedGraphObj.gobj.boundingRect().width() + moose.PoolItem.fontMetrics.width(' '), movedGraphObj.gobj.boundingRect().height()) + QApplication.setOverrideCursor(QtGui.QCursor(Qt.Qt.ArrowCursor)) def deleteGroup(self,item,layoutPt): - reply = QtGui.QMessageBox.question(self, "Deleting Object",'Do want to delete group \'{groupname}\' and its children and connections'.format(groupname=item.mobj.name), - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: - mooseDeleteChemSolver(self.layoutPt.modelRoot) + reply = QMessageBox.question(self + , "Deleting Object" + , "Do want to delete group \ + '{}' and its children and connections".format(item.mobj.name) + , QMessageBox.Yes | QMessageBox.No + ) + if reply == QMessageBox.Yes: + moose.mooseDeleteChemSolver(self.layoutPt.modelRoot) key = [k for k,v in self.layoutPt.qGraGrp.items() if v == item] if key[0] in self.layoutPt.qGraGrp: self.layoutPt.qGraGrp.pop(key[0]) self.groupItemlist1 = item.childItems() - self.groupItemlist = [ i for i in self.groupItemlist1 if not isinstance(i,QtGui.QGraphicsPolygonItem)] + self.groupItemlist = [ i for i in self.groupItemlist1 if not isinstance(i, QGraphicsPolygonItem)] self.deleteObj(self.groupItemlist) self.deleteItem(item) @@ -759,7 +752,7 @@ def drawExpectedConnection(self, event): if self.expectedConnection is None: self.expectedConnection = QGraphicsLineItem( sourcePoint.x(), sourcePoint.y(), destinationPoint.x(), destinationPoint.y()) - self.expectedConnection.setPen(QPen(Qt.Qt.DashLine)) + self.expectedConnection.setPen(QtGui.QPen(Qt.Qt.DashLine)) self.sceneContainerPt.addItem(self.expectedConnection) else: @@ -794,13 +787,13 @@ def showConnector(self, item): self.yDisp = 0 self.connectionSign = None - if isinstance(item.mobj, PoolBase) or isinstance( - item.mobj, ReacBase): + if isinstance(item.mobj, moose.PoolBase) \ + or isinstance(item.mobj, moose.ReacBase): if l == "clone": self.connectionSign = QtSvg.QGraphicsSvgItem( os.path.join(config.MOOSE_ICON_DIR, 'clone.svg') ) - self.connectionSign.setData(0, QVariant("clone")) + self.connectionSign.setData(0, QtCore.QVariant("clone")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setScale( (1.0 * rectangle.height()) / @@ -814,12 +807,12 @@ def showConnector(self, item): "Click and drag to clone the object") self.connectorlist["clone"] = self.connectionSign - if isinstance(item.mobj, PoolBase): + if isinstance(item.mobj, moose.PoolBase): if l == "plot": self.connectionSign = QtSvg.QGraphicsSvgItem( os.path.join(config.MOOSE_ICON_DIR, 'plot.svg') ) - self.connectionSign.setData(0, QVariant("plot")) + self.connectionSign.setData(0, QtCore.QVariant("plot")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setScale( (1.0 * rectangle.height()) / @@ -840,7 +833,7 @@ def showConnector(self, item): self.connectionSign = QtSvg.QGraphicsSvgItem( os.path.join(config.MOOSE_ICON_DIR, 'move.svg') ) - self.connectionSign.setData(0, QVariant("move")) + self.connectionSign.setData(0, QtCore.QVariant("move")) self.connectionSign.setParent(self.connectionSource) self.connectionSign.setToolTip("Drag to move.") if (item.mobj.className == @@ -868,7 +861,7 @@ def showConnector(self, item): os.path.join(config.MOOSE_ICON_DIR, 'delete.svg') ) self.connectionSign.setParent(self.connectionSource) - self.connectionSign.setData(0, QVariant("delete")) + self.connectionSign.setData(0, QtCore.QVariant("delete")) if (item.mobj.className == "ZombieFunction" or item.mobj.className == "Function"): self.connectionSign.setScale( @@ -887,7 +880,7 @@ def showConnector(self, item): if self.connectionSign is not None: self.connectionSign.setFlag( - QtGui.QGraphicsItem.ItemIsSelectable, True) + QGraphicsItem.ItemIsSelectable, True) self.connectionSign.setParentItem(item.parentItem()) self.connectionSign.setPos(0.0, 0.0) self.connectionSign.moveBy( @@ -910,7 +903,7 @@ def objExist(self, path, name, index): def selectSelections(self, selections): for selection in selections: - if isinstance(selection, KineticsDisplayItem): + if isinstance(selection, kkitQGraphics.KineticsDisplayItem): self.selections.append(selection) def deselectSelections(self): @@ -919,26 +912,26 @@ def deselectSelections(self): self.selections = [] def mousePressEvent(self, event): - selectedItem = None if self.viewBaseType == "editorView": return self.editorMousePressEvent(event) - - elif self.viewBaseType == "runView": + if self.viewBaseType == "runView": pos = event.pos() item = self.itemAt(pos) - if item: - itemClass = type(item).__name__ - if (itemClass != 'ComptItem' and itemClass != 'QGraphicsPolygonItem' and - itemClass != 'QGraphicsEllipseItem' and itemClass != 'QGraphicsRectItem'): - self.setCursor(Qt.Qt.CrossCursor) - mimeData = QtCore.QMimeData() - mimeData.setText(item.mobj.name) - mimeData.setData("text/plain", "") - mimeData.data = (self.modelRoot, item.mobj) - drag = QtGui.QDrag(self) - drag.setMimeData(mimeData) - dropAction = drag.start(QtCore.Qt.MoveAction) - self.setCursor(Qt.Qt.ArrowCursor) + if not item: + return + itemClass = type(item).__name__ + if itemClass in ['ComptItem', 'QGraphicsPolygonItem', + 'QGraphicsEllipseItem', 'QGraphicsRectItem' ]: + return + self.setCursor(Qt.Qt.CrossCursor) + mimeData = QtCore.QMimeData() + mimeData.setText(item.mobj.name) + mimeData.setData("text/plain", "") + mimeData.data = (self.modelRoot, item.mobj) + drag = QtGui.QGrag(self) + drag.setMimeData(mimeData) + drag.start(QtCore.Qt.MoveAction) + self.setCursor(Qt.Qt.ArrowCursor) def mouseMoveEvent(self, event): if self.viewBaseType == "editorView": @@ -949,37 +942,29 @@ def mouseReleaseEvent(self, event): for preSelectedItem in self.sceneContainerPt.selectedItems(): preSelectedItem.setSelected(False) return self.editorMouseReleaseEvent(event) - - return - - if self.state["press"]["mode"] == CONNECTION: - desPos = self.mapToScene(event.pos()) - destination = self.items(event.pos()) - src = self.state["press"]["item"] - des = [ - j for j in destination if isinstance( - j, KineticsDisplayItem)] - if len(des): - self.populate_srcdes(src.mobj,des[0].mobj) - self.setCursor(Qt.Qt.ArrowCursor) - QtGui.QGraphicsView.mouseReleaseEvent(self, event) + return None + # if self.state["press"]["mode"] == constants.CONNECTION: + # destination = self.items(event.pos()) + # src = self.state["press"]["item"] + # des = [ + # j for j in destination if isinstance(j, kkitQGraphics.KineticsDisplayItem)] + # if len(des): + # self.populate_srcdes(src.mobj,des[0].mobj) + # self.setCursor(Qt.Qt.ArrowCursor) + # QGraphicsView.mouseReleaseEvent(self, event) def updateItemTransformationMode(self, on): for v in self.sceneContainerPt.items(): - #v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations,on) - if( not isinstance(v,ComptItem)): - #if ( isinstance(v, PoolItem) or isinstance(v, ReacItem) or isinstance(v, EnzItem) or isinstance(v, CplxItem) ): - if isinstance(v,KineticsDisplayItem): - v.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations, on) + if( not isinstance(v, kkitQGraphics.ComptItem)): + if isinstance(v, kkitQGraphics.KineticsDisplayItem): + v.setFlag(QGraphicsItem.ItemIgnoresTransformations, on) def keyPressEvent(self,event): key = event.key() self.removeConnector() - if (key == Qt.Qt.Key_A and (event.modifiers() & Qt.Qt.ShiftModifier) - ): # 'A' fits the view to iconScale factor + if (key == Qt.Qt.Key_A and (event.modifiers() & Qt.Qt.ShiftModifier)): itemignoreZooming = False self.updateItemTransformationMode(itemignoreZooming) - #self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) self.layoutPt.drawLine_arrow(itemignoreZooming=False) # and (event.modifiers() & Qt.Qt.ShiftModifier)): # '<' key. zooms-in @@ -1003,14 +988,17 @@ def keyPressEvent(self,event): elif (key == Qt.Qt.Key_A): # 'a' fits the view to initial value where iconscale=1 self.iconscale = 1 self.updateScale( 1 ) - self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10,self.sceneContainerPt.itemsBoundingRect().y()-10,self.sceneContainerPt.itemsBoundingRect().width()+20,self.sceneContainerPt.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) + self.fitInView(self.sceneContainerPt.itemsBoundingRect().x()-10 + , self.sceneContainerPt.itemsBoundingRect().y()-10 + , self.sceneContainerPt.itemsBoundingRect().width()+20 + , self.sceneContainerPt.itemsBoundingRect().height()+20 + , Qt.Qt.IgnoreAspectRatio) + def updateScale( self, scale ): for item in self.sceneContainerPt.items(): - if isinstance(item,KineticsDisplayItem): + if isinstance(item, kkitQGraphics.KineticsDisplayItem): item.refresh(scale) - xpos = item.pos().x() - ypos = item.pos().y() self.layoutPt.drawLine_arrow(itemignoreZooming=False) self.layoutPt.comptChildrenBoundingRect() @@ -1032,8 +1020,6 @@ def GrVfitinView(self): def deleteSelections(self,x0,y0,x1,y1): if( x1-x0 > 0 and y1-y0 >0): - # self.rubberbandlist = self.sceneContainerPt.items(self.mapToScene(QtCore.QRect(x0, y0, x1 - x0, y1 - y0)).boundingRect(), Qt.Qt.IntersectsItemShape) - # for unselectitem in self.rubberbandlist: self.rubberbandlist_qpolygon = [] for unselectitem in self.rubberbandlist_qpolygon: if unselectitem.isSelected() == True: @@ -1041,7 +1027,7 @@ def deleteSelections(self,x0,y0,x1,y1): self.rubberbandlist_qpolygon = self.sceneContainerPt.items(self.mapToScene(QtCore.QRect(x0, y0, x1 - x0, y1 - y0)).boundingRect(), Qt.Qt.IntersectsItemShape) for item in self.rubberbandlist_qpolygon: ''' in RubberbandSelection if entire group object contains then group is removed,if partly selected then group is retained''' - if isinstance(item,GRPItem): + if isinstance(item, kkitQGraphics.GRPItem): if not (self.mapToScene(QtCore.QRect(x0, y0, x1 - x0, y1 - y0)).boundingRect()).contains(item.sceneBoundingRect()): self.rubberbandlist_qpolygon.remove(item) @@ -1050,17 +1036,23 @@ def deleteSelections(self,x0,y0,x1,y1): def deleteObj(self,item): self.rubberbandlist = item - mooseDeleteChemSolver(self.layoutPt.modelRoot) - self.list_EnzReccplx = [ i for i in self.rubberbandlist if (isinstance(i,MMEnzItem) or isinstance(i,EnzItem) or isinstance(i,CplxItem) or isinstance(i,ReacItem) )] - self.list_PFS = [ i for i in self.rubberbandlist if (isinstance(i,PoolItem) or isinstance(i,TableItem) or isinstance(i,FuncItem) )] - self.grp = [ i for i in self.rubberbandlist if isinstance(i,GRPItem)] + moose.mooseDeleteChemSolver(self.layoutPt.modelRoot) + self.list_EnzReccplx = [ i for i in self.rubberbandlist if + (isinstance(i, moose.MMEnzItem) or isinstance(i, moose.EnzItem) + or isinstance(i, moose.CplxItem) or isinstance(i, moose.ReacItem) )] + self.list_PFS = [ i for i in self.rubberbandlist if + (isinstance(i, moose.PoolItem) or isinstance(i, + kkitQGraphics.TableItem) or isinstance(i, kkitQGraphics.FuncItem) )] + self.grp = [ i for i in self.rubberbandlist if isinstance(i, + kkitQGraphics.GRPItem) ] for item in self.list_EnzReccplx: #First Loop to remove all the enz b'cos if parent (which is a Pool) is removed, #then it will created problem at qgraphicalitem not having parent. #So first delete enz, then Reac and then delete pool self.deleteItem(item) for item in self.list_PFS: - if isinstance(item,PoolItem) or isinstance(item,BufPool): + if isinstance(item, moose.PoolItem) \ + or isinstance(item, moose.BufPool): plot = moose.wildcardFind(self.layoutPt.modelRoot+'/data/graph#/#') for p in plot: if len(p.neighbors['requestOut']): @@ -1074,7 +1066,7 @@ def deleteObj(self,item): if key[0] in self.layoutPt.qGraGrp: self.layoutPt.qGraGrp.pop(key[0]) self.groupItemlist1 = item.childItems() - self.groupItemlist = [ i for i in self.groupItemlist1 if not isinstance(i,QtGui.QGraphicsPolygonItem)] + self.groupItemlist = [ i for i in self.groupItemlist1 if not isinstance(i,QGraphicsPolygonItem)] self.deleteObj(self.groupItemlist) self.deleteItem(item) @@ -1098,19 +1090,19 @@ def deleteObject2line(self,qpolygonline,src,des,endt): def deleteConnection(self,item): #Delete moose connection, i.e one can click on connection arrow and delete the connection - reply = QtGui.QMessageBox.question(self, "Deleting Object","Do want to delete object and its connections", - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) - if reply == QtGui.QMessageBox.Yes: - mooseDeleteChemSolver(self.layoutPt.modelRoot) + reply = QMessageBox.question(self, "Deleting Object","Do want to delete object and its connections", + QMessageBox.Yes | QMessageBox.No) + if reply == QMessageBox.Yes: + moose.mooseDeleteChemSolver(self.layoutPt.modelRoot) msgIdforDeleting = " " - if isinstance(item,QtGui.QGraphicsPolygonItem): + if isinstance(item, QGraphicsPolygonItem): src = self.layoutPt.lineItem_dict[item] lineItem_value = self.layoutPt.lineItem_dict[item] i = iter(lineItem_value) source = i.next() destination = i.next() endt = i.next() - numl = i.next() + i.next() self.deleteObject2line(item,source,destination,endt) self.deleteObject2line(item,destination,source,endt) try: @@ -1142,7 +1134,7 @@ def deleteConnection(self,item): self.getMsgId(src,srcZero,srcOne,item) moose.delete(msgIdforDeleting) self.sceneContainerPt.removeItem(item) - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + modelBuild.setupItem(self.modelRoot,self.layoutPt.srcdesConnection) for msg in moose.element(srcZero[0].parent).msgIn: if moose.element(msg.e2.path) == moose.element(srcZero[0].parent.path): if src[2] == 't': @@ -1193,7 +1185,7 @@ def deleteConnection(self,item): def deleteSceneObj(self, msgIdforDeleting, item): moose.delete(msgIdforDeleting) self.sceneContainerPt.removeItem(item) - setupItem(self.modelRoot, self.layoutPt.srcdesConnection) + modelBuild.setupItem(self.modelRoot, self.layoutPt.srcdesConnection) def getMsgId(self, src, srcZero, srcOne, item): for msg in srcZero[0].msgOut: @@ -1226,16 +1218,16 @@ def getMsgId(self, src, srcZero, srcOne, item): def deleteItem(self, item): # delete Items - self.layoutPt.plugin.mainWindow.objectEditSlot('/', False) - if isinstance(item,KineticsDisplayItem) or isinstance(item,GRPItem): + if isinstance(item, kkitQGraphics.KineticsDisplayItem) \ + or isinstance(item, kkitQGraphics.GRPItem): if moose.exists(item.mobj.path): - if isinstance(item,PoolItem) or isinstance(item,BufPool): + if isinstance(item, moose.PoolItem) or isinstance(item, moose.BufPool): # pool is item is removed, then check is made if its a parent to any # enz if 'yes', then enz and its connection are removed before # removing Pool for items in moose.element(item.mobj.path).children: - if isinstance(moose.element(items), EnzBase): + if isinstance(moose.element(items), moose.EnzBase): gItem = self.layoutPt.mooseId_GObj[ moose.element(items)] for l in self.layoutPt.object2line[gItem]: @@ -1259,7 +1251,6 @@ def deleteItem(self, item): if (moose.element(msg.e2.path).className == "Variable" and msg.destFieldsOnE2[0] == "input"): funcp = moose.element(msg.e2.path).parent - pool = moose.element(funcp).parent self.deleteItem(self.layoutPt.mooseId_GObj[funcp]) for l in self.layoutPt.object2line[item]: @@ -1272,7 +1263,7 @@ def deleteItem(self, item): self.layoutPt.object2line[key] = [ tup for tup in value if tup[1] != item] self.layoutPt.getMooseObj() - setupItem(self.modelRoot, self.layoutPt.srcdesConnection) + kkitOrdinateUtil.setupItem(self.modelRoot, self.layoutPt.srcdesConnection) def zoomSelections(self, x0, y0, x1, y1): p0 = self.mapToScene(x0, y0) @@ -1321,7 +1312,7 @@ def dropEvent(self, event): return event_pos = event.pos() string = str(event.mimeData().text()) - createObj( + modelBuild.createObj( self.viewBaseType, self, self.modelRoot, @@ -1345,13 +1336,18 @@ def populate_srcdes(self, src, des): desClass = moose.element(des).className if 'Zombie' in desClass: desClass = desClass.split('Zombie')[1] - if ( isinstance(moose.element(src),PoolBase) and ( (isinstance(moose.element(des),ReacBase) ) or isinstance(moose.element(des),EnzBase) )): - #If one to tries to connect pool to Reac/Enz (substrate to Reac/Enz), check if already (product to Reac/Enz) exist. - #If exist then connection not allowed one need to delete the msg and try connecting back. - #And in moose Enzyme can't have 2nd order reaction. + if ( isinstance(moose.element(src), moose.PoolBase) + and ( + (isinstance(moose.element(des), moose.ReacBase) ) + or isinstance(moose.element(des), moose.EnzBase))): + # If one to tries to connect pool to Reac/Enz (substrate to + # Reac/Enz), check if already (product to Reac/Enz) exist. + # If exist then connection not allowed one need to delete the msg + # and try connecting back. + # And in moose Enzyme can't have 2nd order reaction. founds, foundp = False,False - if isinstance(moose.element(des),EnzBase): + if isinstance(moose.element(des), moose.EnzBase): if len(moose.element(des).neighbors["subOut"]) > 0: founds = True @@ -1365,12 +1361,13 @@ def populate_srcdes(self, src, des): moose.connect(des, 'sub', src, 'reac', 'OneToOne') elif foundp: srcdesString = srcClass+' is already connected as '+ '\'Product\''+' to '+desClass +' \n \nIf you wish to connect this object then first delete the exist connection' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QMessageBox.Ok) elif founds: srcdesString = desClass+' has already connected to a'+ '\'Substrate\''+' \n \nIn moose Enzyme\'s can not have second order reaction. If you wish to connect this object then first delete the exist connection' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QMessageBox.Ok) - elif (isinstance (moose.element(src),PoolBase) and (isinstance(moose.element(des),Function))): + elif (isinstance (moose.element(src), moose.PoolBase) and + (isinstance(moose.element(des), moose.Function))): numVariables = des.numVars expr = "" expr = (des.expr + '+' + 'x' + str(numVariables)) @@ -1379,12 +1376,12 @@ def populate_srcdes(self, src, des): des.expr = expr moose.connect(src, 'nOut', des.x[numVariables], 'input') - elif (isinstance(moose.element(src), Function) and (moose.element(des).className == "Pool") or - isinstance(moose.element(src), ZombieFunction) and ( - moose.element(des).className == "ZombiePool") + elif (isinstance(moose.element(src), moose.Function) and + (moose.element(des).className == "Pool") + or isinstance(moose.element(src), moose.ZombieFunction) and + (moose.element(des).className == "ZombiePool") ): - if ((element(des).parent).className != 'Enz'): - #moose.connect(src, 'valueOut', des, 'increment', 'OneToOne') + if ((moose.element(des).parent).className != 'Enz'): found = False if len(moose.element(src).neighbors["valueOut"]): for psl in moose.element(src).neighbors["valueOut"]: @@ -1393,51 +1390,72 @@ def populate_srcdes(self, src, des): if not found: moose.connect(src, 'valueOut', des, 'setN', 'OneToOne') else: - srcdesString = element(src).className+'-- EnzCplx' - QtGui.QMessageBox.information(None,'Connection Not possible','\'{srcdesString}\' not allowed to connect'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + srcdesString = moose.element(src).className+'-- EnzCplx' + QMessageBox.information(None + , 'Connection Not possible','\'{}\' not allowed to connect'.format(srcdesString) + , QMessageBox.Ok + ) callsetupItem = False - elif ( isinstance(moose.element(src),Function) and (moose.element(des).className=="BufPool") or - isinstance(moose.element(src),ZombieFunction) and (moose.element(des).className=="ZombieBufPool") + elif (isinstance(moose.element(src), moose.Function) and + (moose.element(des).className=="BufPool") + or isinstance(moose.element(src), moose.ZombieFunction) and + (moose.element(des).className=="ZombieBufPool") ): moose.connect(src, 'valueOut', des, 'setN', 'OneToOne') - elif ( isinstance(moose.element(src),Function) and (isinstance(moose.element(des),ReacBase) ) or - isinstance(moose.element(src),ZombieFunction) and (moose.element(des).className=="ZombieReac") + elif ( isinstance(moose.element(src), moose.Function) and + (isinstance(moose.element(des), moose.ReacBase)) + or isinstance(moose.element(src), moose.ZombieFunction) and + (moose.element(des).className=="ZombieReac") ): moose.connect(src, 'valueOut', des, 'setNumKf', 'OneToOne') - elif (((isinstance(moose.element(src),ReacBase))or (isinstance(moose.element(src),EnzBase))) and (isinstance(moose.element(des),PoolBase))): - founds,foundp = False,False - if isinstance(moose.element(src),EnzBase): + elif ((isinstance(moose.element(src), moose.ReacBase) \ + or isinstance(moose.element(src), moose.EnzBase)) \ + and isinstance(moose.element(des), moose.PoolBase)): + founds, foundp = False, False + if isinstance(moose.element(src), moose.EnzBase): if len(moose.element(src).neighbors["prdOut"]) > 0: foundp = True - for msg in src.msgOut: if moose.element(msg.e2.path) == des: if msg.srcFieldsOnE1[0] == "subOut": founds = True if founds == False and foundp == False: - #moose.connect(src, 'prd', des, 'reac', 'OneToOne') moose.connect(src, 'prd', des, 'reac', 'OneToOne') elif foundp: - srcdesString = srcClass+' is already connected as '+ '\'Product\''+' to '+desClass +' \n \nIn moose Enzyme\'s can not have second order reaction. If you wish to connect this object then first delete the exist connection' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) + srcdesString = srcClass + ' is already connected as ' \ + + "'Product' + to {}\n\n'".format(desClass) + \ + 'In MOOSE, Enzyme\'s can not have second order reaction.'+\ + ' If you wish to connect this object then first delete'+\ + ' the existing connection.' + QMessageBox.information( None + , 'Connection Not possible','{}'.format(srcdesString) + , QMessageBox.Ok + ) elif founds: - srcdesString = desClass+' is already connected as '+'\'Substrate\''+' to '+srcClass +' \n \nIf you wish to connect this object then first delete the exist connection' - QtGui.QMessageBox.information(None,'Connection Not possible','{srcdesString}'.format(srcdesString = srcdesString),QtGui.QMessageBox.Ok) - elif( isinstance(moose.element(src),StimulusTable) and (isinstance(moose.element(des),PoolBase) ) ): + srcdesString = desClass+' is already connected as '+\ + '\'Substrate\''+' to '+srcClass +\ + ' \n\nIf you wish to connect this object '+\ + ' then first delete the exist connection.' + QMessageBox.information(None + ,'Connection Not possible' + , srcdesString + , QMessageBox.Ok) + elif( isinstance(moose.element(src), moose.StimulusTable) \ + and (isinstance(moose.element(des), moose.PoolBase)) + ): moose.connect(src, 'output', des, 'setConcInit', 'OneToOne') else: srcString = moose.element(src).className desString = moose.element(des).className srcdesString = srcString + '--' + desString - QtGui.QMessageBox.information( + QMessageBox.information( None, 'Connection Not possible', - '\'{srcdesString}\' not allowed to connect'.format( - srcdesString=srcdesString), - QtGui.QMessageBox.Ok) + '\'{}\' not allowed to connect'.format(srcdesString), + QMessageBox.Ok) callsetupItem = False if callsetupItem: self.layoutPt.getMooseObj() - setupItem(self.modelRoot,self.layoutPt.srcdesConnection) + kkitOrdinateUtil.setupItem(self.modelRoot,self.layoutPt.srcdesConnection) self.layoutPt.drawLine_arrow(False) From 80fe09ad288de93ac5affd82891bcc7dc1e0884d Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 14:38:30 +0530 Subject: [PATCH 57/66] Some more refactoring. --- moosegui/plugins/kkit.py | 512 ++++++++++++++------------------------- 1 file changed, 176 insertions(+), 336 deletions(-) diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index d9a56c6..d9aa4aa 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -9,9 +9,10 @@ __status__ = "Development" __updated__ = "Feb 22 2019" -import math +import os import sys -from os.path import expanduser +import re +import math from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QWidget, QGridLayout, QFileDialog @@ -19,20 +20,17 @@ # moosegui from moosegui import RunWidget -from moosegui.mplugin import * -from moosegui.plugins.default import MoosePlugin, MooseEditorView -from moosegui.plugins.kkitUtil import * -from moosegui.plugins.kkitQGraphics import * -from moosegui.plugins.kkitViewcontrol import * -from moosegui.plugins.kkitCalcArrow import * -from moosegui.plugins.kkitOrdinateUtil import * -from moosegui.plugins.mtoolbutton import MToolButton +from moosegui import mplugin, config +from moosegui.mtoolbutton import MToolButton +from moosegui.plugins.default import MoosePlugin, MooseEditorView, RunView +from moosegui.plugins import kkitUtil +from moosegui.plugins import kkitQGraphics +from moosegui.plugins import kkitViewcontrol +from moosegui.PlotWidgetContainer import PlotWidgetContainer # moose import moose -import re - class KkitPlugin(MoosePlugin): """ Default plugin for MOOSE GUI @@ -57,7 +55,7 @@ def SaveModelDialogSlot(self): dirpath = "" if not dirpath: - dirpath = expanduser("~") + dirpath = os.path.expanduser("~") filters = {'SBML(*.xml)': 'SBML','Genesis(*.g)':'Genesis'} filename,filter_ = QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,"SBML(*.xml);;Genesis(*.g)") if str(filename).rfind('.') != -1: @@ -71,11 +69,9 @@ def SaveModelDialogSlot(self): self.coOrdinates = KkitEditorView(self).getCentralWidget().getsceneCord() #writeerror = moose.writeSBML(self.modelRoot,str(filename),self.coOrdinates) writeerror = -2 - conisitencyMessages = "" writtentofile = "/test.xml" writeerror,consistencyMessages,writtentofile = moose.SBML.mooseWriteSBML(self.modelRoot,str(filename),self.coOrdinates) if writeerror == -2: - #QtGui.QMessageBox.warning(None,'Could not save the Model','\n WriteSBML : This copy of MOOSE has not been compiled with SBML writing support.') QtGui.QMessageBox.warning(None,'Could not save the Model',consistencyMessages) elif writeerror == -1: QtGui.QMessageBox.warning(None,'Could not save the Model','\n This model is not valid SBML Model, failed in the consistency check') @@ -85,13 +81,12 @@ def SaveModelDialogSlot(self): QtGui.QMessageBox.information(None,'Could not save the Model','\nThe filename could not be opened for writing') elif filters[str(filter_)] == 'Genesis': - mdtype = moose.Annotator(self.modelRoot+'/info') + moose.Annotator(self.modelRoot+'/info') self.coOrdinates = {} ss = KkitEditorView(self).getCentralWidget().mooseId_GObj for k,v in ss.items(): if moose.exists(moose.element(k).path+'/info'): - annoInfo = Annotator(k.path+'/info') - #co-ordinates will be in decimals converting to int which should be b/w 0 to 10 + annoInfo = moose.Annotator(k.path+'/info') x = annoInfo.x * 10 y = -annoInfo.y * 10 self.coOrdinates[k] = {'x':x, 'y':y} @@ -103,7 +98,6 @@ def SaveModelDialogSlot(self): if error == "": QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.g'),QtGui.QMessageBox.Ok) else: - status = QtCore.QString("File saved but %2").arg(error); QtGui.QMessageBox.information(None,'Saved the Model but ...','{error}'.format(error=error),QtGui.QMessageBox.Ok) def getPreviousPlugin(self): @@ -136,21 +130,17 @@ def getRunView(self): self.view = AnotherKkitRunView(self.modelRoot, self) return self.view - - if self.view is not None: return AnotherKkitRunView(self.modelRoot, self) - if self.view is not None: return self.view + if self.view is not None: + return AnotherKkitRunView(self.modelRoot, self) + if self.view is not None: + return self.view self.view = RunView(self.modelRoot, self) graphView = self.view._centralWidget graphView.setDataRoot(self.modelRoot) graphView.plotAllData() - schedulingDockWidget = self.view.getSchedulingDockWidget().widget() self._kkitWidget = self.view.plugin.getEditorView().getCentralWidget() - #self.runView = KkitRunView(self,self.dataTable) self.runView = KkitRunView(self, self._kkitWidget) self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() - - #schedulingDockWidget.runner.update.connect(self.currentRunView.changeBgSize) - #schedulingDockWidget.runner.resetAndRun.connect(self.currentRunView.resetColor) graphView.layout().addWidget(self.currentRunView,0,0,2,1) return self.view @@ -249,9 +239,8 @@ def getToolBars(self): ''' def getCentralWidget(self): if self._centralWidget is None: - self._centralWidget = kineticRunWidget(self.plugin) + self._centralWidget = KineticRunWidget(self.plugin) self._centralWidget.editor = self.plugin.editorView - # self._centralWidget.view.objectSelected.connect(self.plugin.mainWindow.objectEditSlot) self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget @@ -266,9 +255,9 @@ def getCentralWidget(self): self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget -class KineticsWidget(EditorWidgetBase): +class KineticsWidget(mplugin.EditorWidgetBase): def __init__(self, plugin, *args): - EditorWidgetBase.__init__(self, *args) + mplugin.EditorWidgetBase.__init__(self, *args) self.plugin = plugin self.border = 5 self.comptPen = 5 @@ -292,58 +281,50 @@ def reset(self): self.createdItem = {} #This are created at drawLine self.lineItem_dict = {} - self.object2line = defaultdict(list) self.itemignoreZooming = False - if hasattr(self,'sceneContainer'): - self.sceneContainer.clear() + self.sceneContainer.clear() self.sceneContainer = QtGui.QGraphicsScene(self) self.sceneContainer.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex) - sceneDim = self.sceneContainer.itemsBoundingRect() - # if (sceneDim.width() == 0 and sceneDim.height() == 0): - # self.sceneContainer.setSceneRect(0,0,30,30) - # else: - #elf.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) self.sceneContainer.setBackgroundBrush(QColor(230,220,219,120)) def getsceneCord(self): self.cord = {} self.view.setRefWidget("runView") for item in self.sceneContainer.items(): - if isinstance(item,KineticsDisplayItem): + if isinstance(item, kkitQGraphics.KineticsDisplayItem): self.cord[item.mobj] = {'x':item.scenePos().x(),'y':item.scenePos().y()} return self.cord def updateModelView(self): self.getMooseObj() - #minmaxratiodict = {'xmin':self.xmin,'xmax':self.xmax,'ymin':self.ymin,'ymax':self.ymax,'xratio':self.xratio,'yratio':self.yratio} if not self.m: - #At the time of model building + # At the time of model building # when we want an empty GraphicView while creating new model, # then remove all the view and add an empty view if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) - #self.sceneContainer.setSceneRect(-self.width()/2,-self.height()/2,self.width(),self.height()) - #self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) - self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) - if isinstance(self,kineticEditorWidget): + self.view = kkitViewcontrol.GraphicalView(self.modelRoot + , self.sceneContainer + , self.border + , self + , self.createdItem) + if isinstance(self, kineticEditorWidget): self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) - elif isinstance(self,kineticRunWidget): + elif isinstance(self, KineticRunWidget): self.view.setRefWidget("runView") self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view,0,0) else: - # Already created Model - # maxmium and minimum coordinates of the objects specified in kkit file. - #self.mooseObjOntoscene() - #self.drawLine_arrow() if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) - # self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem,minmaxratiodict) - self.view = GraphicalView(self.modelRoot,self.sceneContainer,self.border,self,self.createdItem) + self.view = kkitViewcontrol.GraphicalView(self.modelRoot + , self.sceneContainer + , self.border,self + , self.createdItem) if isinstance(self,kineticEditorWidget): #self.getMooseObj() self.mooseObjOntoscene() @@ -354,78 +335,52 @@ def updateModelView(self): hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - elif isinstance(self,kineticRunWidget): + elif isinstance(self, KineticRunWidget): self.view.setRefWidget("runView") hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10,self.sceneContainer.itemsBoundingRect().y()-10,self.sceneContainer.itemsBoundingRect().width()+20,self.sceneContainer.itemsBoundingRect().height()+20,Qt.Qt.IgnoreAspectRatio) + self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10 + , self.sceneContainer.itemsBoundingRect().y()-10 + , self.sceneContainer.itemsBoundingRect().width()+20 + , self.sceneContainer.itemsBoundingRect().height()+20 + , Qt.Qt.IgnoreAspectRatio) def getMooseObj(self): - #This fun call 2 more function - # -- setupMeshObj(self.modelRoot), - # ----self.meshEntry has [meshEnt] = function: {}, Pool: {} etc - # setupItem - self.m = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + self.m = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') if self.m: self.srcdesConnection = {} if self.meshEntry: self.meshEntry.clear() else: self.meshEntry = {} - #self.meshEntry.clear= {} - # Compartment and its members are setup - #self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) - - #self.meshEntry,xcord,ycord = setupMeshObj(self.modelRoot) - #self.positionInfoExist = not(len(np.nonzero(xcord)[0]) == 0 \ - # and len(np.nonzero(ycord)[0]) == 0) - self.objPar,self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) + self.objPar, self.meshEntry, self.xmin, self.xmax, self.ymin\ + , self.ymax, self.noPositionInfo = kkitUtil.setupMeshObj(self.modelRoot) self.autocoordinates = False if self.srcdesConnection: self.srcdesConnection.clear() else: self.srcdesConnection = {} - setupItem(self.modelRoot,self.srcdesConnection) + kkitUtil.setupItem(self.modelRoot,self.srcdesConnection) #self.noPositionInfo = False if not self.noPositionInfo: self.autocoordinates = True - #self.xmin,self.xmax,self.ymin,self.ymax,self.autoCordinatepos = autoCoordinates(self.meshEntry,self.srcdesConnection) - autoCoordinates(self.meshEntry,self.srcdesConnection) + kkitUtil.autoCoordinates(self.meshEntry,self.srcdesConnection) self.size = QtCore.QSize(1000 ,550) - ''' - if self.xmax-self.xmin != 0: - self.xratio = (self.size.width()-10)/(self.xmax-self.xmin) - else: self.xratio = self.size.width()-10 - - if self.ymax-self.ymin: - self.yratio = (self.size.height()-10)/(self.ymax-self.ymin) - else: self.yratio = (self.size.height()-10) - - self.xratio = int(self.xratio) - self.yratio = int(self.yratio) - if self.xratio == 0: - self.xratio = 1 - if self.yratio == 0: - self.yratio = 1 - ''' def sizeHint(self): return QtCore.QSize(800,400) def updateItemSlot(self, mooseObject): - #This is overridden by derived classes to connect appropriate - #slot for updating the display item. - #In this case if the name is updated from the keyboard both in mooseobj and gui gets updation - changedItem = '' - for item in self.sceneContainer.items(): - if isinstance(item,PoolItem): - if mooseObject.getId() == element(item.mobj).getId(): + if isinstance(item, kkitQGraphics.PoolItem): + if mooseObject.getId() == moose.element(item.mobj).getId(): item.updateSlot() - #once the text is edited in editor, laydisplay gets updated in turn resize the length, positionChanged signal shd be emitted + # once the text is edited in editor, laydisplay gets updated + # in turn resize the length, positionChanged signal shd be + # emitted. self.positionChange(mooseObject) self.view.removeConnector() self.view.showConnector(item) @@ -433,94 +388,25 @@ def updateItemSlot(self, mooseObject): def updateColorSlot(self,mooseObject, colour): #Color slot for changing background color for Pool,Enz and group from objecteditor anninfo = moose.Annotator(mooseObject.path+'/info') - textcolor,bgcolor = getColor(anninfo) + textcolor,bgcolor = kkitUtil.getColor(anninfo) anninfo.color = str(colour.name()) if mooseObject.className == "Neutral": item = self.qGraGrp[mooseObject] - item.setPen(QtGui.QPen(QtGui.QColor(colour),item.pen().width(),item.pen().style(),item.pen().capStyle(),item.pen().joinStyle()))# self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - - elif (isinstance(mooseObject,PoolBase) or isinstance(mooseObject,EnzBase) ): + item.setPen( + QtGui.QPen( QtGui.QColor(colour) + , item.pen().width() + , item.pen().style() + , item.pen().capStyle() + , item.pen().joinStyle() + ) + ) + + elif (isinstance(mooseObject, moose.PoolBase) \ + or isinstance(mooseObject, moose.EnzBase) ): item = self.mooseId_GObj[mooseObject] item.updateColor(colour) - ''' - def mooseObjOntoscene(self): - # All the compartments are put first on to the scene \ - # Need to do: Check With upi if empty compartments exist - self.qGraCompt = {} - self.mooseId_GObj = {} - if self.qGraCompt: - self.qGraCompt.clear() - else: - self.qGraCompt = {} - if self.mooseId_GObj: - self.mooseId_GObj.clear() - else: - self.mooseId_GObj = {} - - for cmpt in sorted(self.meshEntry.iterkeys()): - self.createCompt(cmpt) - self.qGraCompt[cmpt] - #comptRef = self.qGraCompt[cmpt] - - #Enzymes of all the compartments are placed first, \ - # so that when cplx (which is pool object) queries for its parent, it gets its \ - # parent enz co-ordinates with respect to QGraphicsscene """ - - for cmpt,memb in self.meshEntry.items(): - for enzObj in find_index(memb,'enzyme'): - enzinfo = enzObj.path+'/info' - if enzObj.className == 'Enz': - enzItem = EnzItem(enzObj,self.qGraCompt[cmpt]) - else: - enzItem = MMEnzItem(enzObj,self.qGraCompt[cmpt]) - self.mooseId_GObj[element(enzObj.getId())] = enzItem - self.setupDisplay(enzinfo,enzItem,"enzyme") - - #self.setupSlot(enzObj,enzItem) - for cmpt,memb in self.meshEntry.items(): - for poolObj in find_index(memb,'pool'): - poolinfo = poolObj.path+'/info' - #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle - poolItem = self.makePoolItem(poolObj,self.qGraCompt[cmpt]) - self.mooseId_GObj[element(poolObj.getId())] = poolItem - self.setupDisplay(poolinfo,poolItem,"pool") - - for reaObj in find_index(memb,'reaction'): - reainfo = reaObj.path+'/info' - reaItem = ReacItem(reaObj,self.qGraCompt[cmpt]) - self.setupDisplay(reainfo,reaItem,"reaction") - self.mooseId_GObj[element(reaObj.getId())] = reaItem - - for tabObj in find_index(memb,'table'): - tabinfo = tabObj.path+'/info' - tabItem = TableItem(tabObj,self.qGraCompt[cmpt]) - self.setupDisplay(tabinfo,tabItem,"tab") - self.mooseId_GObj[element(tabObj.getId())] = tabItem - - for funcObj in find_index(memb,'function'): - funcinfo = moose.element(funcObj).path+'/info' - if funcObj.parent.className == "ZombieBufPool" or funcObj.parent.className == "BufPool": - funcinfo = moose.element(funcObj).path+'/info' - Af = Annotator(funcinfo) - funcParent =self.mooseId_GObj[element(funcObj.parent)] - elif funcObj.parent.className == "CubeMesh" or funcObj.parent.className == "CylMesh": - funcParent = self.qGraCompt[cmpt] - funcItem = FuncItem(funcObj,funcParent) - self.mooseId_GObj[element(funcObj.getId())] = funcItem - self.setupDisplay(funcinfo,funcItem,"Function") - - for cplxObj in find_index(memb,'cplx'): - cplxinfo = (cplxObj.parent).path+'/info' - p = element(cplxObj).parent - cplxItem = CplxItem(cplxObj,self.mooseId_GObj[element(cplxObj).parent]) - self.mooseId_GObj[element(cplxObj.getId())] = cplxItem - self.setupDisplay(cplxinfo,cplxItem,"cplx") - - # compartment's rectangle size is calculated depending on children - self.comptChildrenBoundingRect() - ''' def mooseObjOntoscene(self): # All the compartments are put first on to the scene \ # Need to do: Check With upi if empty compartments exist @@ -551,7 +437,7 @@ def mooseObjOntoscene(self): self.createCompt(k) self.qGraCompt[k] - elif isinstance(moose.element(k),Neutral): + elif isinstance(moose.element(k), moose.Neutral): if len(self.meshEntry[k]): if isinstance(moose.element(v), moose.ChemCompt): group_parent = self.qGraCompt[v] @@ -572,88 +458,91 @@ def mooseObjOntoscene(self): # compartment's rectangle size is calculated depending on children self.comptChildrenBoundingRect() - def mObjontoscene(self,memb,mclass,qtGrpparent): + def mObjontoscene(self, memb, mclass, qtGrpparent): try: - value = memb[mclass] + memb[mclass] except KeyError: pass else: for mObj in memb[mclass]: minfo = mObj.path+'/info' if mObj.className in['Enz',"ZombieEnz"]: - mItem = EnzItem(mObj,qtGrpparent) + mItem = kkitQGraphics.EnzItem(mObj, qtGrpparent) elif mObj.className in['MMenz',"ZombieMMenz"]: - mItem = MMEnzItem(mObj,qtGrpparent) + mItem = kkitQGraphics.MMEnzItem(mObj, qtGrpparent) elif isinstance (moose.element(mObj),moose.PoolBase) and mclass != "cplx": - #depending on Editor Widget or Run widget pool will be created a PoolItem or PoolItemCircle + # depending on Editor Widget or Run widget pool will be + # created a PoolItem or PoolItemCircle mItem = self.makePoolItem(mObj,qtGrpparent) - elif isinstance (moose.element(mObj),moose.ReacBase): - mItem = ReacItem(mObj,qtGrpparent) + elif isinstance (moose.element(mObj), moose.ReacBase): + mItem = kkitQGraphics.ReacItem(mObj,qtGrpparent) elif mclass == "cplx": minfo = (mObj.parent).path+'/info' - mItem = CplxItem(mObj,self.mooseId_GObj[element(mObj).parent]) - self.mooseId_GObj[element(mObj.getId())] = mItem + mItem = kkitQGraphics.CplxItem(mObj,self.mooseId_GObj[moose.element(mObj).parent]) + self.mooseId_GObj[moose.element(mObj.getId())] = mItem elif mclass == "function": if isinstance(moose.element(mObj.parent),moose.PoolBase): minfo = moose.element(mObj).path+'/info' - Af = Annotator(minfo) - qtGrpparent = self.mooseId_GObj[element(mObj.parent)] - mItem = FuncItem(mObj,qtGrpparent) + moose.Annotator(minfo) + qtGrpparent = self.mooseId_GObj[moose.element(mObj.parent)] + mItem = kkitQGraphics.FuncItem(mObj,qtGrpparent) elif mclass == "stimTab": minfo = mObj.path+'/info' - mItem = TableItem(mObj,qtGrpparent) - self.mooseId_GObj[element(mObj.getId())] = mItem + mItem = kkitQGraphics.TableItem(mObj,qtGrpparent) + self.mooseId_GObj[moose.element(mObj.getId())] = mItem self.setupDisplay(minfo,mItem,mclass) def createGroup(self,key,parent): - self.new_GRP = GRPItem(parent,0,0,0,0,key) + self.new_GRP = kkitQGraphics.GRPItem(parent,0,0,0,0,key) self.qGraGrp[key] = self.new_GRP self.new_GRP.setRect(20,20,20,20) def groupChildrenBoundingRect(self): for k, v in self.qGraGrp.items(): grpcolor = moose.Annotator(moose.element(k.path+'/info')).color - #Todo: One may need to calculate explicitly the boundary for Group also if there is a cross-group connection, then + # TODO: One may need to calculate explicitly the boundary for Group + # also if there is a cross-group connection, then # childrenBoundrect() will take the QPolygonItem position rectcompt = v.childrenBoundingRect() v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) v.setPen(QtGui.QPen(Qt.QColor(grpcolor), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) def comptChildrenBoundingRect(self): - comptlist = [] for k, v in self.qGraCompt.items(): # compartment's rectangle size is calculated depending on children - rectcompt = calculateChildBoundingRect(v) + rectcompt = kkitUtil.calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) v.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) def createCompt(self,key): - self.new_Compt = ComptItem(self,0,0,0,0,key) + self.new_Compt = kkitQGraphics.ComptItem(self,0,0,0,0,key) self.qGraCompt[key] = self.new_Compt self.new_Compt.setRect(10,10,10,10) self.sceneContainer.addItem(self.new_Compt) def setupDisplay(self,info,graphicalObj,objClass): - Annoinfo = Annotator(info) - # For Reaction and Complex object I have skipped the process to get the facecolor and background color as \ - # we are not using these colors for displaying the object so just passing dummy color white + Annoinfo = moose.Annotator(info) + # For Reaction and Complex object I have skipped the process to get the + # facecolor and background color. + # we are not using these colors for displaying the object so just + # passing dummy color white if( objClass == "reaction" or objClass == "cplx" or objClass == "Function" or objClass == "StimulusTable"): textcolor,bgcolor = QColor("white"),QColor("white") elif(objClass == "enzyme"): - textcolor,bgcolor = getColor(info) + textcolor,bgcolor = kkitUtil.getColor(info) if bgcolor.name() == "#ffffff" or bgcolor == "white": - bgcolor = getRandColor() + bgcolor = kkitUtil.getRandColor() Annoinfo.color = str(bgcolor.name()) else: - textcolor,bgcolor = getColor(info) + textcolor,bgcolor = kkitUtil.getColor(info) if bgcolor.name() == "#ffffff" or bgcolor == "white": - bgcolor = getRandColor() + bgcolor = kkitUtil.getRandColor() Annoinfo.color = str(bgcolor.name()) if isinstance(self,kineticEditorWidget): funct = ["Function","ZombieFunction"] @@ -669,7 +558,7 @@ def setupDisplay(self,info,graphicalObj,objClass): else: xpos,ypos = self.positioninfo(info) - elif isinstance(self,kineticRunWidget): + elif isinstance(self,KineticRunWidget): self.editormooseId_GObj = self.editor.getCentralWidget().mooseId_GObj editorItem = self.editormooseId_GObj[moose.element(info).parent] xpos = editorItem.scenePos().x() @@ -682,22 +571,9 @@ def positioninfo(self,iteminfo): either by autocoordinates (for cspace,SBML(unless it is not saved from moose)) or from kkit ''' - x = float(element(iteminfo).getField('x')) - y = float(element(iteminfo).getField('y')) - #print " positioninfo", iteminfo,x,y - # if moose.Annotator(self.plugin.modelRoot+'/info').modeltype == 'kkit': - # x = self.defaultScenewidth * float(element(iteminfo).getField('x')) - # y = self.defaultSceneheight * float(element(iteminfo).getField('y')) - # print " positioninfo ",iteminfo, element(iteminfo).getField('x'), element(iteminfo).getField('y'), x, y - - # #x = x /self.defaultScenewidth - # #y = y /self.defaultSceneheight - # else: - # x = float(element(iteminfo).getField('x')) - # y = float(element(iteminfo).getField('y')) - # self.defaultScenewidth = 1 - # self.defaultSceneheight = 1 - return(x,y) + x = float(moose.element(iteminfo).getField('x')) + y = float(moose.element(iteminfo).getField('y')) + return x, y def drawLine_arrow(self, itemignoreZooming=False): for inn,out in self.srcdesConnection.items(): @@ -714,7 +590,7 @@ def drawLine_arrow(self, itemignoreZooming=False): print (inn.className + ' : ' +inn.name+ " doesn't output message") else: for items in (items for items in out[0] ): - if re.search("xfer",element(items[0]).name): + if re.search("xfer", moose.element(items[0]).name): xrefPool = items[0].name[:items[0].name.index("_xfer_")] xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] @@ -723,13 +599,13 @@ def drawLine_arrow(self, itemignoreZooming=False): itemslist[0] = orgPool items = tuple(itemslist) linetype = "crosscompt" - des = self.mooseId_GObj[element(items[0])] + des = self.mooseId_GObj[moose.element(items[0])] self.lineCord(src,des,items,itemignoreZooming,linetype) if len(out[1]) == 0: print (inn.className + ' : ' +inn.name+ " doesn't output message") else: for items in (items for items in out[1] ): - if re.search("xfer",element(items[0]).name): + if re.search("xfer", moose.element(items[0]).name): xrefPool = items[0].name[:items[0].name.index("_xfer_")] xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] @@ -738,7 +614,7 @@ def drawLine_arrow(self, itemignoreZooming=False): itemslist[0] = orgPool items = tuple(itemslist) linetype = "crosscompt" - des = self.mooseId_GObj[element(items[0])] + des = self.mooseId_GObj[moose.element(items[0])] self.lineCord(src,des,items,itemignoreZooming,linetype) elif isinstance(out,list): if len(out) == 0: @@ -749,7 +625,7 @@ def drawLine_arrow(self, itemignoreZooming=False): else: src = self.mooseId_GObj[inn] for items in (items for items in out ): - if re.search("xfer",element(items[0]).name): + if re.search("xfer", moose.element(items[0]).name): xrefPool = items[0].name[:items[0].name.index("_xfer_")] xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] @@ -758,7 +634,7 @@ def drawLine_arrow(self, itemignoreZooming=False): itemslist[0] = orgPool items = tuple(itemslist) linetype = "crosscompt" - des = self.mooseId_GObj[element(items[0])] + des = self.mooseId_GObj[moose.element(items[0])] self.lineCord(src,des,items,itemignoreZooming,linetype) def lineCord(self,src,des,type_no,itemignoreZooming,linetype): @@ -769,12 +645,12 @@ def lineCord(self,src,des,type_no,itemignoreZooming,linetype): print ("Source or destination is missing or incorrect") return srcdes_list = [src,des,endtype,line] - arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) + arrow = kkitUtil.calcArrow(srcdes_list,itemignoreZooming,self.iconScale) self.drawLine(srcdes_list,arrow,linetype) while(type_no[2] > 1 and line <= (type_no[2]-1)): srcdes_list =[src,des,endtype,line] - arrow = calcArrow(srcdes_list,itemignoreZooming,self.iconScale) + arrow = kkitUtil.calcArrow(srcdes_list,itemignoreZooming,self.iconScale) self.drawLine(srcdes_list,arrow,linetype) line = line +1 @@ -786,7 +662,7 @@ def drawLine(self,srcdes_list,arrow,linetype="solid"): des = srcdes_list[1] endtype = srcdes_list[2] line = srcdes_list[3] - source = element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) + source = moose.element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) for l,v,et,o in self.object2line[src]: if v == des and o ==line: l.setPolygon(arrow) @@ -806,13 +682,13 @@ def drawLine(self,srcdes_list,arrow,linetype="solid"): pen.setWidth(self.arrowsize) # Green is default color moose.ReacBase and derivatives - already set above - if isinstance(source, EnzBase): + if isinstance(source, moose.EnzBase): if ( (endtype == 's') or (endtype == 'p')): pen.setColor(QtCore.Qt.red) elif(endtype != 'cplx'): p1 = (next((k for k,v in self.mooseId_GObj.items() if v == src), None)) pinfo = p1.parent.path+'/info' - color,bgcolor = getColor(pinfo) + color,bgcolor = kkitUtil.getColor(pinfo) #color = QColor(color[0],color[1],color[2]) pen.setColor(bgcolor) @@ -830,136 +706,100 @@ def positionChange(self,mooseObject): for k, v in self.qGraCompt.items(): for rectChilditem in v.childItems(): self.updateArrow(rectChilditem) - if isinstance(rectChilditem,GRPItem): + if isinstance(rectChilditem, kkitQGraphics.GRPItem): for grpChilditem in rectChilditem.childItems(): self.updateArrow(grpChilditem) - if isinstance(grpChilditem,KineticsDisplayItem): + if isinstance(grpChilditem, kkitQGraphics.KineticsDisplayItem): if moose.exists(grpChilditem.mobj.path+'/info'): #print grpChilditem.mobj.name, grpChilditem.scenePos() moose.element(grpChilditem.mobj.path+'/info').x = grpChilditem.scenePos().x() moose.element(grpChilditem.mobj.path+'/info').y = grpChilditem.scenePos().y() - #self.updateGrpSize(rectChilditem) - if isinstance(rectChilditem,KineticsDisplayItem): + if isinstance(rectChilditem, kkitUtil.KineticsDisplayItem): if moose.exists(rectChilditem.mobj.path+'/info'): - #print rectChilditem.mobj.name, rectChilditem.scenePos() moose.element(rectChilditem.mobj.path+'/info').x = rectChilditem.scenePos().x() moose.element(rectChilditem.mobj.path+'/info').y = rectChilditem.scenePos().y() - rectcompt = calculateChildBoundingRect(v) + rectcompt = kkitUtil.calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.updateCompartmentSize(v) else: - rectcompt = calculateChildBoundingRect(v) + rectcompt = kkitUtil.calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) def positionChange_old(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated - if isinstance(element(mooseObject),ChemCompt): + # If the item position changes, the corresponding arrow's are calculated + if isinstance(moose.element(mooseObject), kkitQGraphics.ChemCompt): for k, v in self.qGraCompt.items(): mesh = moose.element(mooseObject).path if k.path == mesh: for rectChilditem in v.childItems(): - if isinstance(rectChilditem, KineticsDisplayItem): + if isinstance(rectChilditem, kkitQGraphics.KineticsDisplayItem): if moose.exists(rectChilditem.mobj.path): iInfo = rectChilditem.mobj.path+'/info' - anno = moose.Annotator(iInfo) - #storing scenePos back to annotator file for further use - x = rectChilditem.scenePos().x() - y = rectChilditem.scenePos().y() - #anno.x = x - #anno.y = y - if isinstance(moose.element(rectChilditem.mobj.path),PoolBase): + moose.Annotator(iInfo) + if isinstance(moose.element(rectChilditem.mobj.path), moose.PoolBase): t = moose.element(rectChilditem.mobj.path) moose.element(t).children for items in moose.element(t).children: - if isinstance(moose.element(items),Function): + if isinstance(moose.element(items), moose.Function): test = moose.element(items.path+'/x') for i in moose.element(test).neighbors['input']: j = self.mooseId_GObj[moose.element(i)] self.updateArrow(j) self.updateArrow(rectChilditem) - elif element(mooseObject).className == 'Neutral': + elif moose.element(mooseObject).className == 'Neutral': for k,v in self.qGraGrp.items(): for grpChilditem in v.childItems(): - if isinstance(grpChilditem, KineticsDisplayItem): + if isinstance(grpChilditem, kkitQGraphics.KineticsDisplayItem): if moose.exists(grpChilditem.mobj.path): iInfo = grpChilditem.mobj.path+'/info' - anno = moose.Annotator(iInfo) - #storing scenePos back to annotator file for further use - x = grpChilditem.scenePos().x() - y = grpChilditem.scenePos().y() - #anno.x = x - #anno.y = y + moose.Annotator(iInfo) - if isinstance(moose.element(grpChilditem.mobj.path),PoolBase): + if isinstance(moose.element(grpChilditem.mobj.path), moose.PoolBase): t = moose.element(grpChilditem.mobj.path) moose.element(t).children for items in moose.element(t).children: - if isinstance(moose.element(items),Function): + if isinstance(moose.element(items), moose.Function): test = moose.element(items.path+'/x') for i in moose.element(test).neighbors['input']: j = self.mooseId_GObj[moose.element(i)] self.updateArrow(j) self.updateArrow(grpChilditem) - # grpcompt = self.qGraCompt[self.objPar[k]] - # rectcompt = calculateChildBoundingRect(grpcompt) - rectgrp = calculateChildBoundingRect(v) + rectgrp = kkitUtil.calculateChildBoundingRect(v) v.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) for k, v in self.qGraCompt.items(): - #rectcompt = v.childrenBoundingRect() - rectcompt = calculateChildBoundingRect(v) + rectcompt = kkitUtil.calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.updateCompartmentSize(v) else: - rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + rectcompt = kkitUtil.calculateChildBoundingRect(v) + v.setRect( rectcompt.x()-10 + , rectcompt.y()-10 + , rectcompt.width()+20 + , rectcompt.height()+20 + ) else: - mobj = self.mooseId_GObj[element(mooseObject)] + mobj = self.mooseId_GObj[moose.element(mooseObject)] self.updateArrow(mobj) - # elePath = moose.element(mooseObject).path - # pos = elePath.find('/',1) - # l = elePath[0:pos] - # linfo = moose.Annotator(l+'/info') - # if moose.exists(l): - # #anno = moose.Annotator(linfo) - # # if moose.Annotator(self.plugin.modelRoot+'/info').modeltype == 'kkit': - # # x = mobj.scenePos().x()/self.defaultScenewidth - # # y = mobj.scenePos().y()/self.defaultSceneheight - # # else: - # # x = mobj.scenePos().x() - # # y = mobj.scenePos().y() - # x = mobj.scenePos().x() - # y = mobj.scenePos().y() - #print " x and y at 863 ",mobj.scenePos() - # for gk,gv in self.qGraGrp.items(): - # rectgrp = calculateChildBoundingRect(gv) - # grpBoundingRect = gv.boundingRect() - # if not grpBoundingRect.contains(rectgrp): - # self.updateCompartmentSize(v) - # else: - # gv.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) for k, v in self.qGraCompt.items(): - #rectcompt = v.childrenBoundingRect() - rectcompt = calculateChildBoundingRect(v) + rectcompt = kkitUtil.calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.updateCompartmentSize(v) else: - rectcompt = calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - # print " position change " - # for item in self.sceneContainer.items(): - # if isinstance(item,KineticsDisplayItem): - # print item.mobj.name, moose.element(item.mobj.path+'/info').x,moose.element(item.mobj.path+'/info').y + rectcompt = kkitUtil.calculateChildBoundingRect(v) + v.setRect(rectcompt.x()-10 + , rectcompt.y()-10 + , rectcompt.width()+20 + , rectcompt.height()+20 + ) def updateGrpSize(self,grp): - compartmentBoundary = grp.rect() - - childrenBoundary = calculateChildBoundingRect(grp) + childrenBoundary = kkitUtil.calculateChildBoundingRect(grp) x = childrenBoundary.x() y = childrenBoundary.y() height = childrenBoundary.height() @@ -971,7 +811,7 @@ def updateGrpSize(self,grp): ) def updateCompartmentSize(self, compartment): compartmentBoundary = compartment.rect() - childrenBoundary = calculateChildBoundingRect(compartment) + childrenBoundary = kkitUtil.calculateChildBoundingRect(compartment) x = min(compartmentBoundary.x(), childrenBoundary.x()) y = min(compartmentBoundary.y(), childrenBoundary.y()) width = max(compartmentBoundary.width(), childrenBoundary.width()) @@ -984,33 +824,35 @@ def updateCompartmentSize(self, compartment): def updateArrow(self,qGTextitem): #if there is no arrow to update then return - if qGTextitem not in self.object2line: - return listItem = self.object2line[qGTextitem] - for ql, va,endtype,order in self.object2line[qGTextitem]: + for ql, va,endtype,order in listItem: srcdes = [] srcdes = self.lineItem_dict[ql] # Checking if src (srcdes[0]) or des (srcdes[1]) is ZombieEnz, # if yes then need to check if cplx is connected to any mooseObject, - # so that when Enzyme is moved, cplx connected arrow to other mooseObject(poolItem) should also be updated - if( type(srcdes[0]) == EnzItem or type(srcdes[0] == MMEnzItem)): + # so that when Enzyme is moved, cplx connected arrow to other + # mooseObject(poolItem) should also be updated + if( type(srcdes[0]) == kkitQGraphics.EnzItem \ + or type(srcdes[0] == kkitQGraphics.MMEnzItem)): self.cplxUpdatearrow(srcdes[0]) - elif( type(srcdes[1]) == EnzItem or type(srcdes[1] == MMEnzItem)): + elif( type(srcdes[1]) == kkitQGraphics.EnzItem \ + or type(srcdes[1] == kkitQGraphics.MMEnzItem)): self.cplxUpdatearrow(srcdes[1]) - # For calcArrow(src,des,endtype,itemignoreZooming) is to be provided - arrow = calcArrow(srcdes,self.itemignoreZooming,self.iconScale) + # TODO: For calcArrow(src,des,endtype,itemignoreZooming) is to be provided + arrow = kkitUtil.calcArrow(srcdes, self.itemignoreZooming, self.iconScale) ql.setPolygon(arrow) def cplxUpdatearrow(self,srcdes): # srcdes which is 'EnzItem' from this,get ChildItems are retrived (b'cos cplx is child of zombieEnz) #And cplxItem is passed for updatearrow for item in srcdes.childItems(): - if isinstance(item,CplxItem): + if isinstance(item, kkitQGraphics.CplxItem): self.updateArrow(item) def positionChange1(self,mooseObject): #If the item position changes, the corresponding arrow's are calculated - if ( (isinstance(element(mooseObject),CubeMesh)) or (isinstance(element(mooseObject),CylMesh))): + if ( (isinstance(moose.element(mooseObject), moose.CubeMesh)) \ + or (isinstance(moose.element(mooseObject), moose.CylMesh))): v = self.qGraCompt[mooseObject] for rectChilditem in v.childItems(): self.updateArrow(rectChilditem) @@ -1020,7 +862,7 @@ def positionChange1(self,mooseObject): mooseObjcompt = self.findparent(mooseObject) v = self.qGraCompt[mooseObjcompt] #childBoundingRect = v.childrenBoundingRect() - childBoundingRect = calculateChildBoundingRect(v) + childBoundingRect = kkitUtil.calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = v.pen() @@ -1040,16 +882,16 @@ def __init__(self, plugin,*args): self.insertMapper = QtCore.QSignalMapper(self) classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] self.toolTipinfo = { "CubeMesh":"", - "CylMesh" : "", - "Pool":"A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", - "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", - "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", - "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", - "Reac":"A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", - "MMenz":"An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", - "Enz":"An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" - - } + "CylMesh" : "", + "Pool":"A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", + "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", + "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", + "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", + "Reac":"A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", + "MMenz":"An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", + "Enz":"An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" + + } insertMapper, actions = self.getInsertActions(classlist) for action in actions: self.insertMenu.addAction(action) @@ -1066,7 +908,7 @@ def GrViewresize(self,event): #self.view.resizeEvent1(event) def makePoolItem(self, poolObj, qGraCompt): - return PoolItem(poolObj, qGraCompt) + return kkitQGraphics.PoolItem(poolObj, qGraCompt) def getToolBars(self): #Add specific tool items with respect to kkit @@ -1085,7 +927,7 @@ def getToolBars(self): self._insertToolBar.addWidget(button) return self._toolBars -class kineticRunWidget(KineticsWidget): +class KineticRunWidget(KineticsWidget): def __init__(self, plugin, *args): KineticsWidget.__init__(self, plugin,*args) @@ -1094,7 +936,7 @@ def showEvent(self, event): # pass def refresh(self): self.sceneContainer.clear() - self.Comptexist = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + self.Comptexist = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') if self.Comptexist: # pass self.getMooseObj() @@ -1102,47 +944,45 @@ def refresh(self): self.drawLine_arrow(itemignoreZooming=False) def makePoolItem(self, poolObj, qGraCompt): - return PoolItemCircle(poolObj, qGraCompt) + return kkitQGraphics.PoolItemCircle(poolObj, qGraCompt) def getToolBars(self): return self._toolBars def updateValue(self): for item in self.sceneContainer.items(): - if isinstance(item,ReacItem) or isinstance(item,MMEnzItem) \ - or isinstance(item,EnzItem) \ - or isinstance(item,PoolItemCircle) \ - or isinstance(item,CplxItem): + if isinstance(item, kkitQGraphics.ReacItem) \ + or isinstance(item, kkitQGraphics.MMEnzItem) \ + or isinstance(item, kkitQGraphics.EnzItem) \ + or isinstance(item, kkitQGraphics.PoolItemCircle) \ + or isinstance(item, kkitQGraphics.CplxItem): item.updateValue(item.mobj) def changeBgSize(self): for item in self.sceneContainer.items(): - if isinstance(item,PoolItemCircle): + if isinstance(item, kkitQGraphics.PoolItemCircle): initialConc = moose.element(item.mobj).concInit presentConc = moose.element(item.mobj).conc if initialConc != 0: ratio = presentConc/initialConc else: - # multipying by 1000 b'cos moose concentration is in milli in moose ratio = presentConc - #print "ratio",item.mobj,ratio if ratio > '10': ratio = 9 if ratio < '0.0': ratio =0.1 - #print "size ",ratio item.updateRect(math.sqrt(abs(ratio))) def resetColor(self): for item in self.sceneContainer.items(): - if isinstance(item, PoolItemCircle): + if isinstance(item, kkitQGraphics.PoolItemCircle): item.returnEllispeSize() if __name__ == "__main__": from PyQt5 import QApplication app = QApplication(sys.argv) size = QtCore.QSize(1024 ,768) - modelPath = 'acc27' + modelPath = 'Khelodenco' itemignoreZooming = False try: filepath = '../data/'+modelPath+'.g' From 793500c2097d236c7d648920cf12762cccc22449 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 16:49:18 +0530 Subject: [PATCH 58/66] Some more changes. --- moosegui/PlotWidgetContainer.py | 4 +- moosegui/global_constants.py | 3 +- moosegui/mplugin.py | 2 + moosegui/plugins/PreferencesPresenter.py | 7 +- moosegui/plugins/PreferencesView.py | 64 +-- moosegui/plugins/defines.py | 2 - moosegui/plugins/kkit.py | 72 ++- moosegui/plugins/kkitOrdinateUtil.py | 582 ++++++++++------------- moosegui/plugins/kkitViewcontrol.py | 78 +-- moosegui/plugins/modelBuild.py | 394 ++++++++------- moosegui/sidebar.py | 123 +++-- 11 files changed, 636 insertions(+), 695 deletions(-) diff --git a/moosegui/PlotWidgetContainer.py b/moosegui/PlotWidgetContainer.py index 23bdd5e..51cb6e6 100644 --- a/moosegui/PlotWidgetContainer.py +++ b/moosegui/PlotWidgetContainer.py @@ -12,9 +12,11 @@ from PyQt5.QtWidgets import QScrollArea from PyQt5.QtWidgets import QSplitter +# MOOSE gui +from moosegui import sidebar from moosegui.plugins import default -from moosegui.plugins import sidebar +# MOOSE import moose ELECTRICAL = 0 diff --git a/moosegui/global_constants.py b/moosegui/global_constants.py index 247b5cb..3a5724c 100644 --- a/moosegui/global_constants.py +++ b/moosegui/global_constants.py @@ -1,3 +1,4 @@ -from PreferencesPresenter import PreferencesPresenter +# -*- coding: utf-8 -*- +from moosegui.plugins.PreferencesPresenter import PreferencesPresenter preferences = PreferencesPresenter() diff --git a/moosegui/mplugin.py b/moosegui/mplugin.py index 3ffe46c..4e037ce 100644 --- a/moosegui/mplugin.py +++ b/moosegui/mplugin.py @@ -25,8 +25,10 @@ class MoosePluginBase(QtCore.QObject): and getViews() functions. """ + modelRootChanged = QtCore.pyqtSignal(object, name='modelRootChanged') dataRootChanged = QtCore.pyqtSignal(object, name='dataRootChanged') + def __init__(self, root='/', mainwindow=None): """Create a plugin object whose model is the tree rooted at `root` and whose widgets will be displayed in `mainwindow`. diff --git a/moosegui/plugins/PreferencesPresenter.py b/moosegui/plugins/PreferencesPresenter.py index bd05b77..b8487fe 100644 --- a/moosegui/plugins/PreferencesPresenter.py +++ b/moosegui/plugins/PreferencesPresenter.py @@ -4,11 +4,10 @@ import json import os -from PyQt5 import Qt, QtGui, QtCore +from PyQt5 import Qt from PyQt5.QtCore import QObject from PyQt5.QtCore import pyqtSignal from PyQt5.QtGui import QColor -from PyQt5.QtWidgets import QGroupBox import moose @@ -21,7 +20,6 @@ ) class PreferencesPresenter(QObject): - electricalSimulationIntervalChanged = pyqtSignal(float) electricalPlotUpdateIntervalChanged = pyqtSignal(float) electricalDefaultSimulationRuntimeChanged = pyqtSignal(float) @@ -444,7 +442,8 @@ def cancelElectricalVisualizationSettings(self): def main(): - app = QtGui.QApplication(sys.argv) + from PyQt5.QtWidgets import QApplication + app = QApplication(sys.argv) preferences = PreferencesPresenter() preferences.view.show() sys.exit(app.exec_()) diff --git a/moosegui/plugins/PreferencesView.py b/moosegui/plugins/PreferencesView.py index 9ed67f7..94ecef8 100644 --- a/moosegui/plugins/PreferencesView.py +++ b/moosegui/plugins/PreferencesView.py @@ -1,41 +1,41 @@ # -*- coding: utf-8 -*- -import PyQt5 -from PyQt5 import Qt, QtGui, QtCore +import sys +import logging + +from PyQt5 import Qt, QtCore from PyQt5.QtCore import pyqtSignal -from PyQt5.QtWidgets import QWidget, QButtonGroup, QRadioButton -from PyQt5.QtWidgets import QVBoxLayout, QLineEdit, QGridLayout -from PyQt5.QtWidgets import QLineEdit, QComboBox, QLabel +from PyQt5.QtWidgets import QWidget, QButtonGroup, QRadioButton, QApplication +from PyQt5.QtWidgets import QLineEdit, QGridLayout +from PyQt5.QtWidgets import QLabel from PyQt5.QtWidgets import QTabWidget, QPushButton, QColorDialog -from PyQt5.QtWidgets import QColorDialog, QSizePolicy +# from PyQt5.QtWidgets import QSizePolicy from PyQt5.QtWidgets import QApplication -from PyQt5.QtGui import QColor from PyQt5.QtGui import QDoubleValidator -import sys class PreferencesView(QTabWidget): - - closed = pyqtSignal() + closed = pyqtSignal() def __init__(self, parent = None): super(PreferencesView, self).__init__(parent) - self.setWindowTitle("Preferences") - # self.setFixedSize(self.maximumSize()) - # self.setMinimumSize(self.maximumSize()) - # self.setMaximumSize(self.maximumSize()) + # If QApplication does not exists then don't do anything. + if QApplication.instance() is None: + logging.warn("No QApplication exists. Won't do anything.") + return -1 - # self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) + self.setWindowTitle("Preferences") self.chemicalSimulationDt = self.createFloatingPointEditor() self.chemicalDiffusionDt = self.createFloatingPointEditor() self.chemicalPlotUpdateInterval = self.createFloatingPointEditor() self.chemicalDefaultSimulationRuntime = self.createFloatingPointEditor() self.chemicalGuiUpdateInterval = self.createFloatingPointEditor() self.chemicalSolver = QButtonGroup() - self.chemicalSolvers = { "Exponential Euler" : QRadioButton("Exponential Euler") - , "Gillespie" : QRadioButton("Gillespie") - , "Runge Kutta" : QRadioButton("Runge Kutta") - } + self.chemicalSolvers = { + "Exponential Euler" : QRadioButton("Exponential Euler") + , "Gillespie" : QRadioButton("Gillespie") + , "Runge Kutta" : QRadioButton("Runge Kutta") + } self.chemicalSimulationApply = QPushButton("Apply") self.chemicalSimulationCancel = QPushButton("Cancel") self.electricalSimulationDt = self.createFloatingPointEditor() @@ -43,9 +43,10 @@ def __init__(self, parent = None): self.electricalDefaultSimulationRuntime = self.createFloatingPointEditor() self.electricalGuiUpdateInterval = self.createFloatingPointEditor() self.electricalSolver = QButtonGroup() - self.electricalSolvers = { "Gillespie" : QRadioButton("Gillespie") - , "Runge Kutta" : QRadioButton("Runge Kutta") - } + self.electricalSolvers = { + "Gillespie" : QRadioButton("Gillespie") + , "Runge Kutta" : QRadioButton("Runge Kutta") + } self.electricalSimulationApply = QPushButton("Apply") self.electricalSimulationCancel = QPushButton("Cancel") self.electricalVisualizationApply = QPushButton("Apply") @@ -67,9 +68,9 @@ def closeEvent(self, event): def create(self): # Set up the column titles self.setUsesScrollButtons(True) - self.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) - self.addTab( self.createChemicalSettingsTab(),"Chemical") - self.addTab( self.createElectricalSettingsTab(),"Electrical") + self.setFocusPolicy(QtCore.Qt.NoFocus) + self.addTab( self.createChemicalSettingsTab(), "Chemical") + self.addTab( self.createElectricalSettingsTab(), "Electrical") def createChemicalSettingsTab(self): chemicalSettingsTab = QWidget() @@ -97,7 +98,7 @@ def createChemicalSettingsTab(self): for solver in self.chemicalSolvers: layout.addWidget(self.chemicalSolvers[solver], 5 + index, 1) self.chemicalSolver.addButton(self.chemicalSolvers[solver], index) - self.chemicalSolvers[solver].setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + self.chemicalSolvers[solver].setFocusPolicy(QtCore.Qt.NoFocus) index += 1 self.chemicalSolver.setExclusive(True) @@ -123,11 +124,10 @@ def createElectricalSettingsTab(self): electricalSettingsTab.setTabShape(QTabWidget.Triangular) electricalSettingsTab.setDocumentMode(True) electricalSettingsTab.setUsesScrollButtons(True) - electricalSettingsTab.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + electricalSettingsTab.setFocusPolicy(QtCore.Qt.NoFocus) return electricalSettingsTab def createElectricalSimulationSettingsTab(self): - widget = QWidget() layout = QGridLayout() widget.setLayout(layout) @@ -150,7 +150,7 @@ def createElectricalSimulationSettingsTab(self): for solver in self.electricalSolvers: # layout.addWidget(self.electricalSolvers[solver], 5 + index, 1) self.electricalSolver.addButton(self.electricalSolvers[solver], index) - self.electricalSolvers[solver].setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + self.electricalSolvers[solver].setFocusPolicy(QtCore.Qt.NoFocus) index += 1 self.electricalSolver.setExclusive(True) @@ -174,7 +174,7 @@ def createElectricalSimulationVisualizationTab(self): self.electricalBaseColorDialog.setOption(QColorDialog.ShowAlphaChannel, True) layout.addWidget(self.electricalBaseColorButton, 2, 1) self.electricalBaseColorButton.clicked.connect(self.electricalBaseColorDialog.show) - self.electricalBaseColorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + self.electricalBaseColorButton.setFocusPolicy(QtCore.Qt.NoFocus) self.electricalBaseColorDialog.colorSelected.connect( lambda color: self.electricalBaseColorButton.setStyleSheet( "QPushButton {" @@ -190,7 +190,7 @@ def createElectricalSimulationVisualizationTab(self): self.electricalPeakColorDialog.setOption(QColorDialog.ShowAlphaChannel, True) layout.addWidget(self.electricalPeakColorButton, 4, 1) self.electricalPeakColorButton.clicked.connect(self.electricalPeakColorDialog.show) - self.electricalPeakColorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + self.electricalPeakColorButton.setFocusPolicy(QtCore.Qt.NoFocus) self.electricalPeakColorDialog.colorSelected.connect( lambda color: self.electricalPeakColorButton.setStyleSheet( "QPushButton {" @@ -203,7 +203,7 @@ def createElectricalSimulationVisualizationTab(self): self.electricalBackgroundColorDialog.setOption(QColorDialog.ShowAlphaChannel, True) layout.addWidget(self.electricalBackgroundColorButton, 5, 1) self.electricalBackgroundColorButton.clicked.connect(self.electricalBackgroundColorDialog.show) - self.electricalBackgroundColorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + self.electricalBackgroundColorButton.setFocusPolicy(QtCore.Qt.NoFocus) self.electricalBackgroundColorDialog.colorSelected.connect( lambda color: self.electricalBackgroundColorButton.setStyleSheet( "QPushButton {" diff --git a/moosegui/plugins/defines.py b/moosegui/plugins/defines.py index 41e3d1e..e08598b 100644 --- a/moosegui/plugins/defines.py +++ b/moosegui/plugins/defines.py @@ -1,8 +1,6 @@ """defines.py: - Various clocks used in moose. """ - ELECTRICAL_SIMULATION_DT_CLOCKS = [1,2,3,4,5,6,7] ELECTRICAL_PLOT_UPDATE_INTERVAL_CLOCKS = [8] diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index d9aa4aa..970398d 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -16,6 +16,7 @@ from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QWidget, QGridLayout, QFileDialog +from PyQt5.QtWidgets import QMenu, QAction, QGraphicsScene from PyQt5.QtGui import QColor # moosegui @@ -39,13 +40,13 @@ class KkitPlugin(MoosePlugin): def __init__(self, *args): MoosePlugin.__init__(self, *args) self.view = None - self.fileinsertMenu = QtGui.QMenu('&File') + self.fileinsertMenu = QMenu('&File') if not hasattr(self,'SaveModelAction'): #self.fileinsertMenu.addSeparator() - self.saveModelAction = QtGui.QAction('Save', self) + self.saveModelAction = QAction('Save', self) self.saveModelAction.setShortcut( "Ctrl+S" ) - self.connect(self.saveModelAction, QtCore.SIGNAL('triggered()'), self.SaveModelDialogSlot) + self.saveModelAction.triggered.connect(self.SaveModelDialogSlot) self.fileinsertMenu.addAction(self.saveModelAction) self._menus.append(self.fileinsertMenu) @@ -117,11 +118,8 @@ def getCurrentView(self): def getEditorView(self): if not hasattr(self, 'editorView'): - #self.editorView = KkitEditorView(self, self.dataTable) self.editorView = KkitEditorView(self) self.editorView.getCentralWidget().editObject.connect(self.mainWindow.objectEditSlot) - #self.editorView.GrViewresize(self) - #self.editorView.connect(self,QtCore.SIGNAL("resize(QResizeEvent)"),self.editorView.GrViewresize) self.currentView = self.editorView return self.editorView @@ -167,7 +165,6 @@ def createCentralWidget(self): self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().updateValue) self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().changeBgSize) self.schedular.runner.simulationReset.connect(self.kkitRunView.getCentralWidget().resetColor) - # self.schedular.runner.simulationReset.connect(self.setSolver) self.schedular.preferences.applyChemicalSettings.connect(self.setSolverFromSettings) compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') ann = moose.Annotator(self.modelRoot+'/info') @@ -217,26 +214,12 @@ def getCentralWidget(self): self.createCentralWidget() return self._centralWidget -class KkitRunView(MooseEditorView): - #def __init__(self, plugin,dataTable): +class KkitRunView(MooseEditorView): def __init__(self, plugin): MooseEditorView.__init__(self, plugin) - #self.dataTable =dataTable self.plugin = plugin - ''' - def getToolPanes(self): - return super(KkitRunView, self).getToolPanes() - - def getLibraryPane(self): - return super(KkitRunView, self).getLibraryPane() - - def getOperationsWidget(self): - return super(KkitRunView, self).getOperationsPane() - def getToolBars(self): - return self._toolBars - ''' def getCentralWidget(self): if self._centralWidget is None: self._centralWidget = KineticRunWidget(self.plugin) @@ -244,8 +227,8 @@ def getCentralWidget(self): self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget -class KkitEditorView(MooseEditorView): +class KkitEditorView(MooseEditorView): def __init__(self, plugin): MooseEditorView.__init__(self, plugin) @@ -284,8 +267,8 @@ def reset(self): self.itemignoreZooming = False if hasattr(self,'sceneContainer'): self.sceneContainer.clear() - self.sceneContainer = QtGui.QGraphicsScene(self) - self.sceneContainer.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex) + self.sceneContainer = QGraphicsScene(self) + self.sceneContainer.setItemIndexMethod(QGraphicsScene.NoIndex) self.sceneContainer.setBackgroundBrush(QColor(230,220,219,120)) def getsceneCord(self): @@ -314,7 +297,7 @@ def updateModelView(self): self.view.setAcceptDrops(True) elif isinstance(self, KineticRunWidget): self.view.setRefWidget("runView") - self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) + self.view.dropped.connect(self.objectEditSlot) hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view,0,0) @@ -331,7 +314,7 @@ def updateModelView(self): self.drawLine_arrow() self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) - self.connect(self.view, QtCore.SIGNAL("dropped"), self.objectEditSlot) + self.view.dropped.connect(self.objectEditSlot) hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) @@ -510,15 +493,24 @@ def groupChildrenBoundingRect(self): # also if there is a cross-group connection, then # childrenBoundrect() will take the QPolygonItem position rectcompt = v.childrenBoundingRect() - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - v.setPen(QtGui.QPen(Qt.QColor(grpcolor), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + v.setRect(rectcompt.x()-10, rectcompt.y()-10 + , rectcompt.width()+20, rectcompt.height()+20) + v.setPen(QtGui.QPen(Qt.QColor(grpcolor), self.comptPen + , Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) def comptChildrenBoundingRect(self): for k, v in self.qGraCompt.items(): # compartment's rectangle size is calculated depending on children rectcompt = kkitUtil.calculateChildBoundingRect(v) v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) - v.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), self.comptPen, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + v.setPen( + QtGui.QPen(Qt.QColor(66,66,66,100) + , self.comptPen + , Qt.Qt.SolidLine + , Qt.Qt.RoundCap + , Qt.Qt.RoundJoin + ) + ) def createCompt(self,key): self.new_Compt = kkitQGraphics.ComptItem(self,0,0,0,0,key) @@ -567,10 +559,11 @@ def setupDisplay(self,info,graphicalObj,objClass): def positioninfo(self,iteminfo): - '''By this time, model loaded from kkit,cspace,SBML would have info field created and co-ordinates are added - either by autocoordinates (for cspace,SBML(unless it is not saved from moose)) or from kkit ''' - + By this time, model loaded from kkit,cspace,SBML would have info + field created and co-ordinates are added either by autocoordinates (for + cspace,SBML(unless it is not saved from moose)) or from kkit. + ''' x = float(moose.element(iteminfo).getField('x')) y = float(moose.element(iteminfo).getField('y')) return x, y @@ -877,7 +870,7 @@ def __init__(self, plugin,*args): KineticsWidget.__init__(self, plugin, *args) self.plugin = plugin - self.insertMenu = QtGui.QMenu('&Insert') + self.insertMenu = QMenu('&Insert') self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] @@ -979,13 +972,14 @@ def resetColor(self): item.returnEllispeSize() if __name__ == "__main__": - from PyQt5 import QApplication + from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) size = QtCore.QSize(1024 ,768) - modelPath = 'Khelodenco' + sdir = os.path.dirname(__file__) + modelPath = 'Kholodenko' itemignoreZooming = False try: - filepath = '../data/'+modelPath+'.g' + filepath = os.path.join(sdir, '../data/'+modelPath+'.g') print( "%s" %(filepath)) f = open(filepath, "r") moose.loadModel(filepath,'/'+modelPath) @@ -994,7 +988,5 @@ def resetColor(self): dt.updateModelView() dt.show() except IOError as e: - print(e) - quit(1) - + print(e) sys.exit(app.exec_()) diff --git a/moosegui/plugins/kkitOrdinateUtil.py b/moosegui/plugins/kkitOrdinateUtil.py index c9f5912..963792a 100644 --- a/moosegui/plugins/kkitOrdinateUtil.py +++ b/moosegui/plugins/kkitOrdinateUtil.py @@ -1,77 +1,54 @@ -__author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" -__maintainer__ = "HarshaRani" -__email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Oct 26 2018" - -''' -2018 -Oct 26: xfer molecules are not put into screen -Sep 28: to zoom the kkit co-ordinates a factor of w=1000 and h=800 is multipled here -2017 -Oct 18: moved some function to kkitUtil -getxyCord, etc function are added -''' +# -*- coding: utf-8 -*- + +__author__ = "HarshaRani" +__credits__ = ["Upi Lab"] +__license__ = "GPL3" +__version__ = "1.0.0" +__maintainer__ = "HarshaRani" +__email__ = "hrani@ncbs.res.in" +__status__ = "Development" +__updated__ = "Oct 26 2018" + import collections -from moose import * import numpy as np -from moose import wildcardFind,element,PoolBase,CplxEnzBase,Annotator,exists from networkx.drawing.nx_agraph import graphviz_layout -import numpy as np import networkx as nx -from kkitUtil import getRandColor,colorCheck,findCompartment, findGroup, findGroup_compt, mooseIsInstance -from PyQt5.QtGui import QColor import re -import moose._moose as moose -def getxyCord(xcord,ycord,list1): +from PyQt5.QtGui import QColor + +import moose + +from moosegui.plugins.kkitUtil import colorCheck, findGroup_compt + + +def getxyCord(xcord, ycord, list1): for item in list1: - # if isinstance(item,Function): - # objInfo = element(item.parent).path+'/info' - # else: - # objInfo = item.path+'/info' - if not isinstance(item,Function): - objInfo = item.path+'/info' - xcord.append(xyPosition(objInfo,'x')) - ycord.append(xyPosition(objInfo,'y')) - -def xyPosition(objInfo,xory): + if not isinstance(item, moose.Function): + objInfo = item.path + '/info' + xcord.append(xyPosition(objInfo, 'x')) + ycord.append(xyPosition(objInfo, 'y')) + + +def xyPosition(objInfo, xory): try: - return(float(element(objInfo).getField(xory))) + return moose.element(objInfo).getField(xory) except ValueError: - return (float(0)) -''' -def mooseIsInstance(melement, classNames): - return element(melement).__class__.__name__ in classNames - - -def findCompartment(melement): - while not mooseIsInstance(melement, ["CubeMesh", "CyclMesh"]): - melement = melement.parent - return melement - -def findGroup(melement): - while not mooseIsInstance(melement, ["Neutral"]): - melement = melement.parent - return melement - -def findGroup_compt(melement): - while not (mooseIsInstance(melement, ["Neutral","CubeMesh", "CyclMesh"])): - melement = melement.parent - return melement -''' -def populateMeshEntry(meshEntry,parent,types,obj): + return 0.0, 0.0 + + +def populateMeshEntry(meshEntry, parent, types, obj): try: - value = meshEntry[element(parent.path)][types] + meshEntry[moose.element(parent.path)][types] except KeyError: # Key is not present - meshEntry[element(parent.path)].update({types :[element(obj)]}) + meshEntry[moose.element(parent.path)].update( + {types: [moose.element(obj)]}) else: - mlist = meshEntry[element(parent.path)][types] - mlist.append(element(obj)) + mlist = meshEntry[moose.element(parent.path)][types] + mlist.append(moose.element(obj)) + + def updateMeshObj(modelRoot): meshEntry = {} if meshEntry: @@ -80,75 +57,76 @@ def updateMeshObj(modelRoot): meshEntry = {} objPar = collections.OrderedDict() - for compt in wildcardFind(modelRoot+'/##[ISA=ChemCompt]'): - groupColor = [] + for compt in moose.wildcardFind(modelRoot + '/##[ISA=ChemCompt]'): try: - value = meshEntry[element(compt)] + meshEntry[moose.element(compt)] except KeyError: # Compt is not present - meshEntry[element(compt)] = {} - objPar[element(compt)] = element('/') - - for grp in wildcardFind(compt.path+'/##[TYPE=Neutral]'): - test = [x for x in wildcardFind(element(grp).path+'/#') if x.className in ["Pool","Reac","Enz"]] - grp_cmpt = findGroup_compt(grp.parent) + meshEntry[moose.element(compt)] = {} + objPar[moose.element(compt)] = moose.element('/') + for grp in moose.wildcardFind(compt.path + '/##[TYPE=Neutral]'): try: - value = meshEntry[element(grp)] + meshEntry[moose.element(grp)] except KeyError: # Grp is not present - meshEntry[element(grp)] = {} - objPar[element(grp)] = element(grp_cmpt) + grp_cmpt = findGroup_compt(grp.parent) + meshEntry[moose.element(grp)] = {} + objPar[moose.element(grp)] = moose.element(grp_cmpt) - for compt in wildcardFind(modelRoot+'/##[ISA=ChemCompt]'): - for m in wildcardFind(compt.path+'/##[ISA=PoolBase]'): + for compt in moose.wildcardFind(modelRoot + '/##[ISA=ChemCompt]'): + for m in moose.wildcardFind(compt.path + '/##[ISA=PoolBase]'): grp_cmpt = findGroup_compt(m) - if isinstance(element(grp_cmpt),Neutral): - if isinstance(element(m.parent),EnzBase): - populateMeshEntry(meshEntry,grp_cmpt,"cplx",m) + if isinstance(moose.element(grp_cmpt), moose.Neutral): + if isinstance(moose.element(m.parent), moose.EnzBase): + populateMeshEntry(meshEntry, grp_cmpt, "cplx", m) else: - populateMeshEntry(meshEntry,grp_cmpt,"pool",m) + populateMeshEntry(meshEntry, grp_cmpt, "pool", m) else: - if isinstance(element(m.parent),EnzBase): - populateMeshEntry(meshEntry,compt,"cplx",m) + if isinstance(moose.element(m.parent), moose.EnzBase): + populateMeshEntry(meshEntry, compt, "cplx", m) else: - populateMeshEntry(meshEntry,compt,"pool",m) - - for r in wildcardFind(compt.path+'/##[ISA=ReacBase]'): + populateMeshEntry(meshEntry, compt, "pool", m) + + for r in moose.wildcardFind(compt.path + '/##[ISA=ReacBase]'): rgrp_cmpt = findGroup_compt(r) - if isinstance(element(rgrp_cmpt),Neutral): - populateMeshEntry(meshEntry,rgrp_cmpt,"reaction",r) + if isinstance(moose.element(rgrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, rgrp_cmpt, "reaction", r) else: - populateMeshEntry(meshEntry,compt,"reaction",r) - - for e in wildcardFind(compt.path+'/##[ISA=EnzBase]'): + populateMeshEntry(meshEntry, compt, "reaction", r) + + for e in moose.wildcardFind(compt.path + '/##[ISA=EnzBase]'): egrp_cmpt = findGroup_compt(e) - if isinstance(element(egrp_cmpt),Neutral): - populateMeshEntry(meshEntry,egrp_cmpt,"enzyme",e) + if isinstance(moose.element(egrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, egrp_cmpt, "enzyme", e) else: - populateMeshEntry(meshEntry,compt,"enzyme",e) + populateMeshEntry(meshEntry, compt, "enzyme", e) - for f in wildcardFind(compt.path+'/##[ISA=Function]'): + for f in moose.wildcardFind(compt.path + '/##[ISA=Function]'): fgrp_cmpt = findGroup_compt(f) - if isinstance(element(fgrp_cmpt),Neutral): - populateMeshEntry(meshEntry,fgrp_cmpt,"function",f) + if isinstance(moose.element(fgrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, fgrp_cmpt, "function", f) else: - populateMeshEntry(meshEntry,compt,"function",f) + populateMeshEntry(meshEntry, compt, "function", f) - for t in wildcardFind(compt.path+'/##[ISA=StimulusTable]'): + for t in moose.wildcardFind(compt.path + '/##[ISA=StimulusTable]'): tgrp_cmpt = findGroup_compt(t) - if isinstance(element(tgrp_cmpt),Neutral): - populateMeshEntry(meshEntry,tgrp_cmpt,"stimTab",t) + if isinstance(moose.element(tgrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, tgrp_cmpt, "stimTab", t) else: - populateMeshEntry(meshEntry,compt,"stimTab",t) - return(objPar,meshEntry) + populateMeshEntry(meshEntry, compt, "stimTab", t) + return (objPar, meshEntry) + def setupMeshObj(modelRoot): - ''' Setup compartment and its members pool,reaction,enz cplx under self.meshEntry dictionaries \ - self.meshEntry with "key" as compartment, - value is key2:list where key2 represents moose object type,list of objects of a perticular type - e.g self.meshEntry[meshEnt] = { 'reaction': reaction_list,'enzyme':enzyme_list,'pool':poollist,'cplx': cplxlist } + ''' + Setup compartment and its members pool,reaction,enz cplx under + self.meshEntry dictionaries, self.meshEntry with "key" as compartment, + value is key2:list where key2 represents moose object type,list of objects + of a perticular type e.g self.meshEntry[meshEnt] = { 'reaction': + reaction_list,'enzyme':enzyme_list,'pool':poollist,'cplx': cplxlist} ''' + xmin = 0.0 xmax = 1.0 ymin = 0.0 @@ -161,325 +139,279 @@ def setupMeshObj(modelRoot): meshEntry = {} xcord = [] ycord = [] - n = 1 objPar = collections.OrderedDict() - - for compt in wildcardFind(modelRoot+'/##[ISA=ChemCompt]'): + + for compt in moose.wildcardFind(modelRoot + '/##[ISA=ChemCompt]'): groupColor = [] try: - value = meshEntry[element(compt)] + meshEntry[moose.element(compt)] except KeyError: # Compt is not present - meshEntry[element(compt)] = {} - objPar[element(compt)] = element('/') - - for grp in wildcardFind(compt.path+'/##[TYPE=Neutral]'): - test = [x for x in wildcardFind(element(grp).path+'/#') if x.className in ["Pool","Reac","Enz"]] - #if len(test) >1: - grpinfo = Annotator(element(grp).path+'/info') - validatecolor = colorCheck(grpinfo.color,"bg") + meshEntry[moose.element(compt)] = {} + objPar[moose.element(compt)] = moose.element('/') + + for grp in moose.wildcardFind(compt.path + '/##[TYPE=Neutral]'): + grpinfo = moose.Annotator(moose.element(grp).path + '/info') + validatecolor = colorCheck(grpinfo.color, "bg") validatedgrpcolor = str(QColor(validatecolor).name()) groupColor.append(validatedgrpcolor) - grp_cmpt = findGroup_compt(grp.parent) + grp_cmpt = findGroup_compt(grp.parent) try: - value = meshEntry[element(grp)] + meshEntry[moose.element(grp)] except KeyError: # Grp is not present - meshEntry[element(grp)] = {} - objPar[element(grp)] = element(grp_cmpt) - # if n > 1: - # validatecolor = colorCheck(grpinfo.color,"bg") - # validatedgrpcolor = str(QColor(validatecolor).name()) - # if validatedgrpcolor in groupColor: - # print " inside " - # c = getRandColor() - # print " c ",c, c.name() - # grpinfo.color = str(c.name()) - # groupColor.append(str(c.name())) - # print " groupColor ",grpinfo,grpinfo.color, groupColor - # n =n +1 - for compt in wildcardFind(modelRoot+'/##[ISA=ChemCompt]'): - for m in wildcardFind(compt.path+'/##[ISA=PoolBase]'): - if not re.search("xfer",m.name): + meshEntry[moose.element(grp)] = {} + objPar[moose.element(grp)] = moose.element(grp_cmpt) + + for compt in moose.wildcardFind(modelRoot + '/##[ISA=ChemCompt]'): + for m in moose.wildcardFind(compt.path + '/##[ISA=PoolBase]'): + if not re.search("xfer", m.name): grp_cmpt = findGroup_compt(m) - xcord.append(xyPosition(m.path+'/info','x')) - ycord.append(xyPosition(m.path+'/info','y')) - if isinstance(element(grp_cmpt),Neutral): - if isinstance(element(m.parent),EnzBase): - populateMeshEntry(meshEntry,grp_cmpt,"cplx",m) + xcord.append(xyPosition(m.path + '/info', 'x')) + ycord.append(xyPosition(m.path + '/info', 'y')) + if isinstance(moose.element(grp_cmpt), moose.Neutral): + if isinstance(moose.element(m.parent), moose.EnzBase): + populateMeshEntry(meshEntry, grp_cmpt, "cplx", m) else: - populateMeshEntry(meshEntry,grp_cmpt,"pool",m) + populateMeshEntry(meshEntry, grp_cmpt, "pool", m) else: - if isinstance(element(m.parent),EnzBase): - populateMeshEntry(meshEntry,compt,"cplx",m) + if isinstance(moose.element(m.parent), moose.EnzBase): + populateMeshEntry(meshEntry, compt, "cplx", m) else: - populateMeshEntry(meshEntry,compt,"pool",m) - - for r in wildcardFind(compt.path+'/##[ISA=ReacBase]'): + populateMeshEntry(meshEntry, compt, "pool", m) + + for r in moose.wildcardFind(compt.path + '/##[ISA=ReacBase]'): rgrp_cmpt = findGroup_compt(r) - xcord.append(xyPosition(r.path+'/info','x')) - ycord.append(xyPosition(r.path+'/info','y')) - if isinstance(element(rgrp_cmpt),Neutral): - populateMeshEntry(meshEntry,rgrp_cmpt,"reaction",r) + xcord.append(xyPosition(r.path + '/info', 'x')) + ycord.append(xyPosition(r.path + '/info', 'y')) + if isinstance(moose.element(rgrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, rgrp_cmpt, "reaction", r) else: - populateMeshEntry(meshEntry,compt,"reaction",r) - - for e in wildcardFind(compt.path+'/##[ISA=EnzBase]'): - egrp_cmpt = findGroup_compt(e) - xcord.append(xyPosition(e.path+'/info','x')) - ycord.append(xyPosition(e.path+'/info','y')) + populateMeshEntry(meshEntry, compt, "reaction", r) - if isinstance(element(egrp_cmpt),Neutral): - populateMeshEntry(meshEntry,egrp_cmpt,"enzyme",e) + for e in moose.wildcardFind(compt.path + '/##[ISA=EnzBase]'): + egrp_cmpt = findGroup_compt(e) + xcord.append(xyPosition(e.path + '/info', 'x')) + ycord.append(xyPosition(e.path + '/info', 'y')) + if isinstance(moose.element(egrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, egrp_cmpt, "enzyme", e) else: - populateMeshEntry(meshEntry,compt,"enzyme",e) + populateMeshEntry(meshEntry, compt, "enzyme", e) - for f in wildcardFind(compt.path+'/##[ISA=Function]'): + for f in moose.wildcardFind(compt.path + '/##[ISA=Function]'): fgrp_cmpt = findGroup_compt(f) - if isinstance(element(fgrp_cmpt),Neutral): - populateMeshEntry(meshEntry,fgrp_cmpt,"function",f) + if isinstance(moose.element(fgrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, fgrp_cmpt, "function", f) else: - populateMeshEntry(meshEntry,compt,"function",f) + populateMeshEntry(meshEntry, compt, "function", f) - for t in wildcardFind(compt.path+'/##[ISA=StimulusTable]'): + for t in moose.wildcardFind(compt.path + '/##[ISA=StimulusTable]'): tgrp_cmpt = findGroup_compt(t) - xcord.append(xyPosition(t.path+'/info','x')) - ycord.append(xyPosition(t.path+'/info','y')) - if isinstance(element(tgrp_cmpt),Neutral): - populateMeshEntry(meshEntry,tgrp_cmpt,"stimTab",t) + xcord.append(xyPosition(t.path + '/info', 'x')) + ycord.append(xyPosition(t.path + '/info', 'y')) + if isinstance(moose.element(tgrp_cmpt), moose.Neutral): + populateMeshEntry(meshEntry, tgrp_cmpt, "stimTab", t) else: - populateMeshEntry(meshEntry,compt,"stimTab",t) - + populateMeshEntry(meshEntry, compt, "stimTab", t) + xmin = min(xcord) xmax = max(xcord) ymin = min(ycord) ymax = max(ycord) - positionInfoExist = not(len(np.nonzero(xcord)[0]) == 0 and len(np.nonzero(ycord)[0]) == 0) - return(objPar,meshEntry,xmin,xmax,ymin,ymax,positionInfoExist) -''' -def setupMeshObj(modelRoot): - # Setup compartment and its members pool,reaction,enz cplx under self.meshEntry dictionaries \ - # self.meshEntry with "key" as compartment, - # value is key2:list where key2 represents moose object type,list of objects of a perticular type - # e.g self.meshEntry[meshEnt] = { 'reaction': reaction_list,'enzyme':enzyme_list,'pool':poollist,'cplx': cplxlist } - - meshEntry = {} - if meshEntry: - meshEntry.clear() - else: - meshEntry = {} - xcord = [] - ycord = [] - meshEntryWildcard = '/##[ISA=ChemCompt]' - if modelRoot != '/': - meshEntryWildcard = modelRoot+meshEntryWildcard - for meshEnt in wildcardFind(meshEntryWildcard): - mollist = [] - realist = [] - enzlist = [] - cplxlist = [] - tablist = [] - funclist = [] - - mol_cpl = wildcardFind(meshEnt.path+'/##[ISA=PoolBase]') - funclist = wildcardFind(meshEnt.path+'/##[ISA=Function]') - enzlist = wildcardFind(meshEnt.path+'/##[ISA=EnzBase]') - realist = wildcardFind(meshEnt.path+'/##[ISA=ReacBase]') - tablist = wildcardFind(meshEnt.path+'/##[ISA=StimulusTable]') - if mol_cpl or funclist or enzlist or realist or tablist: - for m in mol_cpl: - if isinstance(element(m.parent),CplxEnzBase): - cplxlist.append(m) - elif isinstance(element(m),moose.PoolBase): - mollist.append(m) - - meshEntry[meshEnt] = {'enzyme':enzlist, - 'reaction':realist, - 'pool':mollist, - 'cplx':cplxlist, - 'table':tablist, - 'function':funclist - } - - for mert in [mollist,enzlist,realist,tablist]: - for merts in mert: - objInfo = merts.path+'/info' - if exists(objInfo): - xcord.append(element(objInfo).x) - ycord.append(element(objInfo).y) - return(meshEntry,xcord,ycord) - -def sizeHint(self): - return QtCore.QSize(800,400) -''' -def setupItem(modelPath,cntDict): + positionInfoExist = not (len(np.nonzero(xcord)[0]) == 0 + and len(np.nonzero(ycord)[0]) == 0) + return (objPar, meshEntry, xmin, xmax, ymin, ymax, positionInfoExist) + + +def setupItem(modelPath, cntDict): # This function collects information of what is connected to what. \ # eg. substrate and product connectivity to reaction's and enzyme's \ - # sumtotal connectivity to its pool are collected + # sumtotal connectivity to its pool are collected #print " setupItem" sublist = [] prdlist = [] - zombieType = ['ReacBase','EnzBase','Function','StimulusTable'] + zombieType = ['ReacBase', 'EnzBase', 'Function', 'StimulusTable'] for baseObj in zombieType: - path = '/##[ISA='+baseObj+']' + path = '/##[ISA=' + baseObj + ']' if modelPath != '/': - path = modelPath+path - if ( (baseObj == 'ReacBase') or (baseObj == 'EnzBase')): - for items in wildcardFind(path): + path = modelPath + path + if ((baseObj == 'ReacBase') or (baseObj == 'EnzBase')): + for items in moose.wildcardFind(path): sublist = [] prdlist = [] - uniqItem,countuniqItem = countitems(items,'subOut') + uniqItem, countuniqItem = countitems(items, 'subOut') subNo = uniqItem - for sub in uniqItem: - sublist.append((element(sub),'s',countuniqItem[sub])) + for sub in uniqItem: + sublist.append( + (moose.element(sub), 's', countuniqItem[sub])) - uniqItem,countuniqItem = countitems(items,'prd') + uniqItem, countuniqItem = countitems(items, 'prd') prdNo = uniqItem if (len(subNo) == 0 or len(prdNo) == 0): - print ("Substrate Product is empty ",path, " ",items) - + print("Substrate Product is empty ", path, " ", items) + for prd in uniqItem: - prdlist.append((element(prd),'p',countuniqItem[prd])) - - if (baseObj == 'CplxEnzBase') : - uniqItem,countuniqItem = countitems(items,'toEnz') + prdlist.append( + (moose.element(prd), 'p', countuniqItem[prd])) + + if (baseObj == 'CplxEnzBase'): + uniqItem, countuniqItem = countitems(items, 'toEnz') for enzpar in uniqItem: - sublist.append((element(enzpar),'t',countuniqItem[enzpar])) - - uniqItem,countuniqItem = countitems(items,'cplxDest') + sublist.append((moose.element(enzpar), 't', + countuniqItem[enzpar])) + + uniqItem, countuniqItem = countitems(items, 'cplxDest') for cplx in uniqItem: - prdlist.append((element(cplx),'cplx',countuniqItem[cplx])) + prdlist.append( + (moose.element(cplx), 'cplx', countuniqItem[cplx])) if (baseObj == 'EnzBase'): - uniqItem,countuniqItem = countitems(items,'enzDest') + uniqItem, countuniqItem = countitems(items, 'enzDest') for enzpar in uniqItem: - sublist.append((element(enzpar),'t',countuniqItem[enzpar])) - cntDict[items] = sublist,prdlist + sublist.append((moose.element(enzpar), 't', + countuniqItem[enzpar])) + cntDict[items] = sublist, prdlist elif baseObj == 'Function': - for items in wildcardFind(path): + for items in moose.wildcardFind(path): sublist = [] prdlist = [] - item = items.path+'/x[0]' - uniqItem,countuniqItem = countitems(item,'input') + item = items.path + '/x[0]' + uniqItem, countuniqItem = countitems(item, 'input') for funcpar in uniqItem: - sublist.append((element(funcpar),'sts',countuniqItem[funcpar])) - - uniqItem,countuniqItem = countitems(items,'valueOut') + sublist.append((moose.element(funcpar), 'sts', + countuniqItem[funcpar])) + + uniqItem, countuniqItem = countitems(items, 'valueOut') for funcpar in uniqItem: - prdlist.append((element(funcpar),'stp',countuniqItem[funcpar])) - cntDict[items] = sublist,prdlist + prdlist.append((moose.element(funcpar), 'stp', + countuniqItem[funcpar])) + cntDict[items] = sublist, prdlist else: - for tab in wildcardFind(path): + for tab in moose.wildcardFind(path): tablist = [] - uniqItem,countuniqItem = countitems(tab,'output') + uniqItem, countuniqItem = countitems(tab, 'output') for tabconnect in uniqItem: - tablist.append((element(tabconnect),'tab',countuniqItem[tabconnect])) + tablist.append((moose.element(tabconnect), 'tab', + countuniqItem[tabconnect])) cntDict[tab] = tablist -def countitems(mitems,objtype): + +def countitems(mitems, objtype): items = [] - items = element(mitems).neighbors[objtype] + items = moose.element(mitems).neighbors[objtype] uniqItems = set(items) #countuniqItemsauto = Counter(items) countuniqItems = dict((i, items.count(i)) for i in items) - return(uniqItems,countuniqItems) + return (uniqItems, countuniqItems) + -def recalculatecoordinatesforKkit(mObjlist,xcord,ycord): +def recalculatecoordinatesforKkit(mObjlist, xcord, ycord): positionInfoExist = not(len(np.nonzero(xcord)[0]) == 0 \ and len(np.nonzero(ycord)[0]) == 0) if positionInfoExist: - #Here all the object has been taken now recalculate and reassign back x and y co-ordinates + # Here all the object has been taken now recalculate and reassign back x + # and y co-ordinates xmin = min(xcord) xmax = max(xcord) ymin = min(ycord) ymax = max(ycord) for merts in mObjlist: - objInfo = merts.path+'/info' + objInfo = merts.path + '/info' if moose.exists(objInfo): - Ix = (xyPosition(objInfo,'x')-xmin)/(xmax-xmin) - Iy = (ymin-xyPosition(objInfo,'y'))/(ymax-ymin) - element(objInfo).x = Ix*1000 - element(objInfo).y = Iy*800 - -def xyPosition(objInfo,xory): - try: - return(float(element(objInfo).getField(xory))) - except ValueError: - return (float(0)) + Ix = (xyPosition(objInfo, 'x') - xmin) / (xmax - xmin) + Iy = (ymin - xyPosition(objInfo, 'y')) / (ymax - ymin) + moose.element(objInfo).x = Ix * 1000 + moose.element(objInfo).y = Iy * 800 - -def autoCoordinates(meshEntry,srcdesConnection): - + +def autoCoordinates(meshEntry, srcdesConnection): G = nx.Graph() - for cmpt,memb in meshEntry.items(): + for cmpt, memb in meshEntry.items(): if memb in ["enzyme"]: - for enzObj in find_index(memb,'enzyme'): + for enzObj in find_index(memb, 'enzyme'): #G.add_node(enzObj.path) - G.add_node(enzObj.path,label='',shape='ellipse',color='',style='filled',fontname='Helvetica',fontsize=12,fontcolor='blue') - for cmpt,memb in meshEntry.items(): + G.add_node(enzObj.path, + label='', + shape='ellipse', + color='', + style='filled', + fontname='Helvetica', + fontsize=12, + fontcolor='blue') + for cmpt, memb in meshEntry.items(): #if memb.has_key - if memb in ["pool","cplx","reaction"]: - for poolObj in find_index(memb,'pool'): + if memb in ["pool", "cplx", "reaction"]: + for poolObj in find_index(memb, 'pool'): #G.add_node(poolObj.path) - G.add_node(poolObj.path,label = poolObj.name,shape = 'box',color = '',style = 'filled',fontname = 'Helvetica',fontsize = 9,fontcolor = 'blue') - for cplxObj in find_index(memb,'cplx'): + G.add_node(poolObj.path, + label=poolObj.name, + shape='box', + color='', + style='filled', + fontname='Helvetica', + fontsize=9, + fontcolor='blue') + for cplxObj in find_index(memb, 'cplx'): G.add_node(cplxObj.path) - G.add_node(cplxObj.path,label = cplxObj.name,shape = 'box',color = '',style = 'filled',fontname = 'Helvetica',fontsize = 12,fontcolor = 'blue') + G.add_node(cplxObj.path, + label=cplxObj.name, + shape='box', + color='', + style='filled', + fontname='Helvetica', + fontsize=12, + fontcolor='blue') #G.add_edge((cplxObj.parent).path,cplxObj.path) - for reaObj in find_index(memb,'reaction'): + for reaObj in find_index(memb, 'reaction'): #G.add_node(reaObj.path) - G.add_node(reaObj.path,label='',shape='circle',color='') - - for inn,out in list(srcdesConnection.items()): - if (inn.className =='ZombieReac'): arrowcolor = 'green' - elif(inn.className =='ZombieEnz'): arrowcolor = 'red' - else: arrowcolor = 'blue' - if isinstance(out,tuple): - if len(out[0])== 0: - print (inn.className + ':' +inn.name + " doesn't have input message") + G.add_node(reaObj.path, label='', shape='circle', color='') + + for inn, out in list(srcdesConnection.items()): + if isinstance(out, tuple): + if len(out[0]) == 0: + print(inn.className + ':' + inn.name + + " doesn't have input message") else: - for items in (items for items in out[0] ): - G.add_edge(element(items[0]).path,inn.path) + for items in (items for items in out[0]): + G.add_edge(moose.element(items[0]).path, inn.path) if len(out[1]) == 0: - print (inn.className + ':' + inn.name + "doesn't have output mssg") + print(inn.className + ':' + inn.name + + "doesn't have output mssg") else: - for items in (items for items in out[1] ): - G.add_edge(inn.path,element(items[0]).path) - elif isinstance(out,list): + for items in (items for items in out[1]): + G.add_edge(inn.path, moose.element(items[0]).path) + elif isinstance(out, list): if len(out) == 0: - print ("Func pool doesn't have sumtotal") + print("Func pool doesn't have sumtotal") else: - for items in (items for items in out ): - G.add_edge(element(items[0]).path,inn.path) + for items in (items for items in out): + G.add_edge(moose.element(items[0]).path, inn.path) + position = graphviz_layout(G) - xcord, ycord = [],[] + xcord, ycord = [], [] for item in position.items(): xy = item[1] - xroundoff = round(xy[0],0) - yroundoff = round(xy[1],0) + xroundoff = round(xy[0], 0) + yroundoff = round(xy[1], 0) xcord.append(xroundoff) ycord.append(yroundoff) - - xmin = min(xcord) - xmax = max(xcord) - ymin = min(ycord) - ymax = max(ycord) + for item in position.items(): xy = item[1] - anno = Annotator(item[0]+'/info') - Ax = (xy[0]-xmin)/(xmax-xmin) - Ay = (xy[1]-ymin)/(ymax-ymin) - #anno.x = round(Ax,1) - #anno.y = round(Ay,1) - #not roundingoff to max and min the co-ordinates for bigger model would overlay the co-ordinates + anno = moose.Annotator(item[0] + '/info') anno.x = xy[0] anno.y = xy[1] + + def find_index(value, key): - """ Value.get(key) to avoid expection which would raise if empty value in dictionary for a given key """ + """ + Value.get(key) to avoid expection which would raise if empty value in + dictionary for a given key. + """ if value.get(key) != None: return value.get(key) else: diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 981702a..795c4b7 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -101,19 +101,19 @@ def resolveGroupInteriorAndBoundary(self, item, position): else constants.GROUP_BOUNDARY def resetState(self): - self.state = { "press" : { "mode" : constants.INconstants.VALID - , "item" : None - , "sign" : None - , "pos" : None - , "scenepos" : None - } - , "move" : { "happened": False + self.state = { + "press" : { + "mode": constants.INVALID + , "item" : None + , "sign" : None + , "pos" : None + , "scenepos" : None } + , "move" : { "happened": False } + , "release" : { "mode" : constants.INVALID + , "item" : None + , "sign" : None + } } - , "release" : { "mode" : constants.INconstants.VALID - , "item" : None - , "sign" : None - } - } def resolveItem(self, items, position): @@ -124,9 +124,10 @@ def resolveItem(self, items, position): comptInteriorfound = False comptBoundary = [] - # If clicked , moved and dropped then drop object should not take polygonItem it shd take Goup or compartment - #(this is checked is self.state["move"]), else qpolygonItem then deleting the connection b/w 2 objects - #move is True the + # If clicked , moved and dropped then drop object should not take + # polygonItem it shd take Goup or compartment + # (this is checked is self.state["move"]), else qpolygonItem then + # deleting the connection b/w 2 objects move is True. for item in items: if isinstance(item, QtSvg.QGraphicsSvgItem): return (item, constants.CONNECTOR) @@ -137,23 +138,21 @@ def resolveItem(self, items, position): return (item, constants.CONNECTION) for item in items: - if hasattr(item, "name"): - if item.name == constants.ITEM: - return (item, constants.ITEM) - if item.name == constants.GROUP: - gsolution = (item, self.resolveGroupInteriorAndBoundary(item, position)) - if gsolution[1] == constants.GROUP_BOUNDARY: - return gsolution - elif gsolution[1] == constants.constants.GROUP_INTERIOR: - groupInteriorfound = True - groupList.append(gsolution) - if item.name == constants.COMPARTMENT: - csolution = (item, self.resolveCompartmentInteriorAndBoundary(item, position)) - if csolution[1] == constants.COMPARTMENT_BOUNDARY: - return csolution - # elif csolution[1] == constants.COMPARTMENT_INTERIOR: - # comptInteriorfound = True - # comptBoundary.append(csolution) + if not hasattr(item, "name"): + continue + if item.name == constants.ITEM: + return item, constants.ITEM + if item.name == constants.GROUP: + gsolution = (item, self.resolveGroupInteriorAndBoundary(item, position)) + if gsolution[1] == constants.GROUP_BOUNDARY: + return gsolution + elif gsolution[1] == constants.constants.GROUP_INTERIOR: + groupInteriorfound = True + groupList.append(gsolution) + if item.name == constants.COMPARTMENT: + csolution = (item, self.resolveCompartmentInteriorAndBoundary(item, position)) + if csolution[1] == constants.COMPARTMENT_BOUNDARY: + return csolution if groupInteriorfound: if comptInteriorfound: @@ -183,10 +182,13 @@ def editorMousePressEvent(self, event): self.state["press"]["type"] = itemType self.state["press"]["pos"] = event.pos() if isinstance(item, QtSvg.QGraphicsSvgItem): - ##This is kept for reference, so that if object (P,R,E,Tab,Fun) is moved outside the compartment, - #then it need to be pull back to original position + # This is kept for reference, so that if object (P,R,E,Tab,Fun) + # is moved outside the compartment, then it need to be pull back + # to original position self.state["press"]["scenepos"] = item.parent().scenePos() - if itemType == constants.COMPARTMENT_INTERIOR or itemType == constants.GROUP_BOUNDARY or itemType == constants.constants.GROUP_INTERIOR: + if itemType == constants.COMPARTMENT_INTERIOR \ + or itemType == constants.GROUP_BOUNDARY \ + or itemType == constants.constants.GROUP_INTERIOR: self.removeConnector() elif itemType == constants.ITEM: @@ -206,14 +208,11 @@ def editorMousePressEvent(self, event): list(self.layoutPt.qGraGrp.values()), kkitUtil.moveMin, self.layoutPt ) ) - - #popupmenu.addAction("CloneGroup" ,lambda : handleCollisions(comptList, moveMin, self.layoutPt )) popupmenu.exec_(self.mapToGlobal(event.pos())) elif itemType == constants.COMPARTMENT_BOUNDARY: if len(list(self.layoutPt.qGraCompt.values())) > 1: popupmenu = QMenu('PopupMenu', self) - # popupmenu.addAction("DeleteCmpt", lambda : self.deleteCmpt(item,self.layoutPt)) popupmenu.addAction("LinearLayout" , lambda : kkitUtil.handleCollisions( list(self.layoutPt.qGraCompt.values()), kkitUtil.moveX, self.layoutPt @@ -232,7 +231,8 @@ def editorMouseMoveEvent(self,event): self.state["move"]["happened"] = False return if self.move: - #This part of the code is when rubberband selection is done and move option is selected + # This part of the code is when rubberband selection is done and + # move option is selected initial = self.mapToScene(self.state["press"]["pos"]) final = self.mapToScene(event.pos()) displacement = final - initial diff --git a/moosegui/plugins/modelBuild.py b/moosegui/plugins/modelBuild.py index 27abd43..145d10c 100644 --- a/moosegui/plugins/modelBuild.py +++ b/moosegui/plugins/modelBuild.py @@ -1,332 +1,356 @@ -__author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" -__maintainer__ = "HarshaRani" -__email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Apr 11 2018" +# -*- coding: utf-8 -*- + +__author__ = "Harsha Rani" +__credits__ = ["Upi Lab"] +__license__ = "GPLv3" +__maintainer__ = "Harsha Rani, Dilawar Singh" +__email__ = "hrani@ncbs.res.in" import moose -from kkitQGraphics import * -from kkitOrdinateUtil import * -from kkitUtil import * -import PyQt5 -from setsolver import * +from moosegui.plugins import kkitQGraphics +from moosegui.plugins import kkitUtil +from PyQt5 import Qt, QtCore +from PyQt5 import QtGui + def updateCompartmentSize(qGraCompt): #childBoundingRect = qGraCompt.childrenBoundingRect() - childBoundingRect = calculateChildBoundingRect(qGraCompt) + childBoundingRect = kkitUtil.calculateChildBoundingRect(qGraCompt) comptBoundingRect = qGraCompt.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = qGraCompt.pen() - comptWidth = 1 + comptWidth = 1 comptPen.setWidth(comptWidth) qGraCompt.setPen(comptPen) if not comptBoundingRect.contains(childBoundingRect): - qGraCompt.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) - -# def checkCreate(string,num,itemAt,qGraCompt,modelRoot,scene,pos,posf,view,qGIMob): -def checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt): + qGraCompt.setRect(rectcompt.x() - comptWidth, + rectcompt.y() - comptWidth, + rectcompt.width() + (comptWidth * 2), + rectcompt.height() + (comptWidth * 2)) + + +def checkCreate(scene, view, modelpath, mobj, string, ret_string, num, + event_pos, layoutPt): # The variable 'compt' will be empty when dropping cubeMesh,cyclMesh, but rest it shd be # compartment - # if modelpath.find('/',1) > -1: - # modelRoot = modelpath[0:modelpath.find('/',1)] - # else: - # modelRoot = modelpath - if moose.exists(modelpath+'/info'): - mType = moose.Annotator((moose.element(modelpath+'/info'))).modeltype + if moose.exists(modelpath + '/info'): + moose.Annotator((moose.element(modelpath + '/info'))).modeltype itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) pos = view.mapToScene(event_pos) modelpath = moose.element(modelpath) if num: - string_num = ret_string+str(num) + string_num = ret_string + str(num) else: string_num = ret_string if string == "CubeMesh" or string == "CylMesh": if string == "CylMesh": - mobj = moose.CylMesh(modelpath.path+'/'+string_num) - else: - mobj = moose.CubeMesh(modelpath.path+'/'+string_num) - + mobj = moose.CylMesh(modelpath.path + '/' + string_num) + else: + mobj = moose.CubeMesh(modelpath.path + '/' + string_num) + mobj.volume = 1e-15 - mesh = moose.element(mobj.path+'/mesh') - qGItem = ComptItem(scene,pos.toPoint().x(),pos.toPoint().y(),100,100,mobj) - qGItem.setPen(QtGui.QPen(Qt.QColor(66,66,66,100), 1, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + qGItem = kkitQGraphics.ComptItem(scene, + pos.toPoint().x(), + pos.toPoint().y(), 100, 100, mobj) + qGItem.setPen( + QtGui.QPen(Qt.QColor(66, 66, 66, 100), 1, Qt.Qt.SolidLine, + Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) view.sceneContainerPt.addItem(qGItem) - qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),layoutPt.positionChange1) - qGItem.cmptEmitter.connect(qGItem.cmptEmitter,QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),layoutPt.objectEditSlot) - compartment = qGItem - layoutPt.qGraCompt[mobj]= qGItem - view.emit(QtCore.SIGNAL("dropped"),mobj) - + + qGItem.cmptEmitter.connect( + qGItem.cmptEmitter, + QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"), + layoutPt.positionChange1) + + qGItem.cmptEmitter.connect( + qGItem.cmptEmitter, + QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"), + layoutPt.objectEditSlot) + layoutPt.qGraCompt[mobj] = qGItem + + # Attach a drop signal. + qGItem.dropped.emit() + elif string == "Pool" or string == "BufPool": #getting pos with respect to compartment otherwise if compartment is moved then pos would be wrong posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() if string == "Pool": - poolObj = moose.Pool(mobj.path+'/'+string_num) + poolObj = moose.Pool(mobj.path + '/' + string_num) else: - poolObj = moose.BufPool(mobj.path+'/'+string_num) - - poolinfo = moose.Annotator(poolObj.path+'/info') - #Compartment's one Pool object is picked to get the font size - - qGItem = PoolItem(poolObj,itemAtView) + poolObj = moose.BufPool(mobj.path + '/' + string_num) + + poolinfo = moose.Annotator(poolObj.path + '/info') + + qGItem = kkitQGraphics.PoolItem(poolObj, itemAtView) layoutPt.mooseId_GObj[poolObj] = qGItem posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('green'),bgcolor) + bgcolor = kkitUtil.getRandColor() + qGItem.setDisplayProperties(posWrtComp.x(), posWrtComp.y(), + QtGui.QColor('green'), bgcolor) poolinfo.color = str(bgcolor.getRgb()) - view.emit(QtCore.SIGNAL("dropped"),poolObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + qGItem.dropped.emit() + + kkitUtil.setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - x,y = roundoff(qGItem.scenePos(),layoutPt) + x, y = roundoff(qGItem.scenePos(), layoutPt) poolinfo.x = x poolinfo.y = y #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): + if isinstance(mobj, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) - - elif string == "Reac": + + elif string == "Reac": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - reacObj = moose.Reac(mobj.path+'/'+string_num) - reacinfo = moose.Annotator(reacObj.path+'/info') - qGItem = ReacItem(reacObj,itemAtView) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") - #if mType == "new_kkit": - # reacinfo.x = posWrtComp.x() - # reacinfo.y = posWrtComp.y() + reacObj = moose.Reac(mobj.path + '/' + string_num) + reacinfo = moose.Annotator(reacObj.path + '/info') + qGItem = kkitQGraphics.ReacItem(reacObj, itemAtView) + qGItem.setDisplayProperties(posWrtComp.x(), posWrtComp.y(), "white", + "white") layoutPt.mooseId_GObj[reacObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),reacObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + qGItem.dopped.emit() + # view.emit(QtCore.SIGNAL("dropped"), reacObj) + kkitUtil.setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): + if isinstance(mobj, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) - x,y = roundoff(qGItem.scenePos(),layoutPt) + x, y = roundoff(qGItem.scenePos(), layoutPt) reacinfo.x = x reacinfo.y = y - elif string == "StimulusTable": + elif string == "StimulusTable": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - tabObj = moose.StimulusTable(mobj.path+'/'+string_num) - tabinfo = moose.Annotator(tabObj.path+'/info') - qGItem = TableItem(tabObj,itemAtView) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('white'),QtGui.QColor('white')) - #if mType == "new_kkit": - #tabinfo.x = posWrtComp.x() - #tabinfo.y = posWrtComp.y() + tabObj = moose.StimulusTable(mobj.path + '/' + string_num) + tabinfo = moose.Annotator(tabObj.path + '/info') + qGItem = kkitQGraphics.TableItem(tabObj, itemAtView) + qGItem.setDisplayProperties(posWrtComp.x(), posWrtComp.y(), + QtGui.QColor('white'), + QtGui.QColor('white')) layoutPt.mooseId_GObj[tabObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),tabObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + qGItem.dropped.emit() + # view.emit(QtCore.SIGNAL("dropped"), tabObj) + kkitUtil.setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(mobj,moose.ChemCompt): + # Dropping is on compartment then update Compart size + if isinstance(mobj, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mobj)] updateCompartmentSize(compt) - x,y = roundoff(qGItem.scenePos(),layoutPt) + x, y = roundoff(qGItem.scenePos(), layoutPt) tabinfo.x = x tabinfo.y = y elif string == "Function": posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() - funcObj = moose.Function(mobj.path+'/'+string_num) - funcinfo = moose.Annotator(funcObj.path+'/info') + funcObj = moose.Function(mobj.path + '/' + string_num) + funcinfo = moose.Annotator(funcObj.path + '/info') #moose.connect( funcObj, 'valueOut', mobj ,'setN' ) - poolclass = ["ZombieBufPool","BufPool"] - comptclass = ["CubeMesh","cyclMesh"] + poolclass = ["ZombieBufPool", "BufPool"] + comptclass = ["CubeMesh", "cyclMesh"] if mobj.className in poolclass: - funcParent = layoutPt.mooseId_GObj[element(mobj.path)] + funcParent = layoutPt.mooseId_GObj[moose.element(mobj.path)] elif mobj.className in comptclass: funcParent = layoutPt.qGraCompt[moose.element(mobj)] posWrtComp = funcParent.mapFromScene(pos).toPoint() - #posWrtComp = (itemAtView.mapFromScene(pos)).toPoint() elif mobj.className in "Neutral": - funcParent = layoutPt.qGraGrp[element(mobj)] + funcParent = layoutPt.qGraGrp[moose.element(mobj)] - qGItem = FuncItem(funcObj,funcParent) - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),QtGui.QColor('red'),QtGui.QColor('green')) + qGItem = kkitQGraphics.FuncItem(funcObj, funcParent) + qGItem.setDisplayProperties(posWrtComp.x(), posWrtComp.y(), + QtGui.QColor('red'), QtGui.QColor('green')) layoutPt.mooseId_GObj[funcObj] = qGItem - #if mType == "new_kkit": - #funcinfo.x = posWrtComp.x() - #funcinfo.y = posWrtComp.y() - view.emit(QtCore.SIGNAL("dropped"),funcObj) - setupItem(modelpath.path,layoutPt.srcdesConnection) + qGItem.dropped.emit() + # view.emit(QtCore.SIGNAL("dropped"), funcObj) + kkitUtil.setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) #Dropping is on compartment then update Compart size mooseCmpt = findCompartment(mobj) - if isinstance(mooseCmpt,moose.ChemCompt): + if isinstance(mooseCmpt, moose.ChemCompt): compt = layoutPt.qGraCompt[moose.element(mooseCmpt)] updateCompartmentSize(compt) - x,y = roundoff(qGItem.scenePos(),layoutPt) + x, y = roundoff(qGItem.scenePos(), layoutPt) funcinfo.x = x funcinfo.y = y - elif string == "Enz" or string == "MMenz": - #If 2 enz has same pool parent, then pos of the 2nd enz shd be displaced by some position, need to check how to deal with it + elif string == "Enz" or string == "MMenz": + # FIXME: If 2 enz has same pool parent, then pos of the 2nd enz shd be + # displaced by some position, need to check how to deal with it posWrtComp = pos - enzPool = layoutPt.mooseId_GObj[mobj] if ((mobj.parent).className == "Enz"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent and not Enzyme Complex'.format(newString =string),QtGui.QMessageBox.Ok) - return + QtGui.QMessageBox.information( + None, "Drop Not possible", + "'{}' has to have Pool as its parent and not Enzyme Complex". + format(string), QtGui.QMessageBox.Ok) + return None else: enzparent = findCompartment(mobj) parentcompt = layoutPt.qGraCompt[enzparent] if string == "Enz": - enzObj = moose.Enz(moose.element(mobj).path+'/'+string_num) - enzinfo = moose.Annotator(enzObj.path+'/info') - moose.connect( enzObj, 'enz', mobj, 'reac' ) - qGItem = EnzItem(enzObj,parentcompt) + enzObj = moose.Enz(moose.element(mobj).path + '/' + string_num) + enzinfo = moose.Annotator(enzObj.path + '/info') + moose.connect(enzObj, 'enz', mobj, 'reac') + qGItem = kkitQGraphics.EnzItem(enzObj, parentcompt) layoutPt.mooseId_GObj[enzObj] = qGItem posWrtComp = pos - bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-40,QtGui.QColor('green'),bgcolor) - x,y = roundoff(qGItem.scenePos(),layoutPt) + bgcolor = kkitUtil.getRandColor() + qGItem.setDisplayProperties(posWrtComp.x(), + posWrtComp.y() - 40, + QtGui.QColor('green'), bgcolor) + x, y = roundoff(qGItem.scenePos(), layoutPt) enzinfo.x = x enzinfo.y = y enzinfo.color = str(bgcolor.name()) enzinfo.textColor = str(QtGui.QColor('green').name()) - #if mType == "new_kkit": - #enzinfo.x = posWrtComp.x() - #enzinfo.y = posWrtComp.y() - - #enzinfo.color = str(bgcolor.name()) - e = moose.Annotator(enzinfo) - #e.x = posWrtComp.x() - #e.y = posWrtComp.y() - Enz_cplx = enzObj.path+'/'+string_num+'_cplx'; + moose.Annotator(enzinfo) + Enz_cplx = enzObj.path + '/' + string_num + '_cplx' cplxItem = moose.Pool(Enz_cplx) - cplxinfo = moose.Annotator(cplxItem.path+'/info') + moose.Annotator(cplxItem.path + '/info') qGEnz = layoutPt.mooseId_GObj[enzObj] - qGItem = CplxItem(cplxItem,qGEnz) + kkitQGraphics.CplxItem(cplxItem, qGEnz) layoutPt.mooseId_GObj[cplxItem] = qGItem enzboundingRect = qGEnz.boundingRect() - moose.connect( enzObj, 'cplx', cplxItem, 'reac' ) - qGItem.setDisplayProperties(enzboundingRect.height()/2,enzboundingRect.height()-40,QtGui.QColor('white'),QtGui.QColor('white')) - #cplxinfo.x = enzboundingRect.height()/2 - #cplxinfo.y = enzboundingRect.height()-60 - view.emit(QtCore.SIGNAL("dropped"),enzObj) - + moose.connect(enzObj, 'cplx', cplxItem, 'reac') + qGItem.setDisplayProperties(int(enzboundingRect.height() / 2), + enzboundingRect.height() - 40, + QtGui.QColor('white'), + QtGui.QColor('white')) + qGItem.dropped.emit() + # view.emit(QtCore.SIGNAL("dropped"), enzObj) else: - enzObj = moose.MMenz(mobj.path+'/'+string_num) - enzinfo = moose.Annotator(enzObj.path+'/info') - moose.connect(mobj,"nOut",enzObj,"enzDest") - qGItem = MMEnzItem(enzObj,parentcompt) + enzObj = moose.MMenz(mobj.path + '/' + string_num) + enzinfo = moose.Annotator(enzObj.path + '/info') + moose.connect(mobj, "nOut", enzObj, "enzDest") + qGItem = kkitQGraphics.MMEnzItem(enzObj, parentcompt) posWrtComp = pos - bgcolor = getRandColor() - qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y()-30,QtGui.QColor('green'),bgcolor) - #enzinfo.x = posWrtComp.x() - #enzinfo.y = posWrtComp.y() + bgcolor = kkitUtil.getRandColor() + qGItem.setDisplayProperties(posWrtComp.x(), + posWrtComp.y() - 30, + QtGui.QColor('green'), bgcolor) enzinfo.color = str(bgcolor.name()) layoutPt.mooseId_GObj[enzObj] = qGItem - view.emit(QtCore.SIGNAL("dropped"),enzObj) - x,y = roundoff(qGItem.scenePos(),layoutPt) + qGItem.dropped.emit() + # view.emit(QtCore.SIGNAL("dropped"), enzObj) + x, y = roundoff(qGItem.scenePos(), layoutPt) enzinfo.x = x enzinfo.y = y - setupItem(modelpath.path,layoutPt.srcdesConnection) + kkitUtil.setupItem(modelpath.path, layoutPt.srcdesConnection) layoutPt.drawLine_arrow(False) - #Dropping is on compartment then update Compart size - if isinstance(enzparent,moose.ChemCompt): + # Dropping is on compartment then update Compart size + if isinstance(enzparent, moose.ChemCompt): updateCompartmentSize(parentcompt) if view.iconScale != 1: view.updateScale(view.iconScale) -def createObj(scene,view,modelpath,string,pos,layoutPt): + +def createObj(scene, view, modelpath, string, pos, layoutPt): event_pos = pos num = 0 ret_string = " " pos = view.mapToScene(event_pos) itemAt = view.sceneContainerPt.itemAt(pos) - chemMesh = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') - deleteSolver(modelpath) + moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') + moose.mooseDeleteChemSolver(modelpath) mobj = "" if itemAt != None: itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) itemClass = type(itemAtView).__name__ - if ( itemClass == 'QGraphicsRectItem'): + if (itemClass == 'QGraphicsRectItem'): mobj = itemAtView.parentItem().mobj - elif(itemClass == 'QGraphicsSvgItem'): + elif (itemClass == 'QGraphicsSvgItem'): mobj = itemAtView.parent().mobj else: mobj = itemAtView.mobj + if string == "CubeMesh" or string == "CylMesh": - ret_string,num = findUniqId(moose.element(modelpath),"Compartment",0) - comptexist = moose.wildcardFind(modelpath+'/##[ISA=ChemCompt]') + ret_string, num = findUniqId(moose.element(modelpath), "Compartment", + 0) + comptexist = moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') if not len(comptexist): if itemAt != None: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) - return + QtGui.QMessageBox.information( + None, 'Drop Not possible', + "'{}' currently single compartment model building is allowed" + .format(string), QtGui.QMessageBox.Ok) + return False else: mobj = moose.element(modelpath) + return True else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' currently single compartment model building is allowed'.format(newString =string),QtGui.QMessageBox.Ok) - return - + QtGui.QMessageBox.information( + None, 'Drop Not possible', + '\'{newString}\' currently single compartment model building is allowed' + .format(newString=string), QtGui.QMessageBox.Ok) + return False + elif string == "Pool" or string == "BufPool" or string == "Reac" or string == "StimulusTable": if itemAt == None: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have compartment as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return + QtGui.QMessageBox.information( + None, 'Drop Not possible', + '\'{newString}\' has to have compartment as its parent'.format( + newString=string), QtGui.QMessageBox.Ok) + return False else: mobj = findCompartment(mobj) - ret_string,num = findUniqId(mobj,string,num) + ret_string, num = findUniqId(mobj, string, num) + return True elif string == "Function": #mobj = findCompartment(mobj) - ret_string,num = findUniqId(mobj,string,num) - ''' - if itemAt != None: - if ((mobj).className != "BufPool"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have BufPool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - else: - ret_string,num = findUniqId(mobj,string,num) - else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have BufPool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - ''' + ret_string, num = findUniqId(mobj, string, num) + return True elif string == "Enz" or string == "MMenz": if itemAt != None: - if ((mobj).className != "Pool" and (mobj).className != "BufPool"): - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return + if ((mobj).className != "Pool" and (mobj).className != "BufPool"): + QtGui.QMessageBox.information( + None, 'Drop Not possible', + "'{}' has to have Pool as its parent".format(string), + QtGui.QMessageBox.Ok) + return False else: - ret_string,num = findUniqId(mobj,string,num) + ret_string, num = findUniqId(mobj, string, num) + return True else: - QtGui.QMessageBox.information(None,'Drop Not possible','\'{newString}\' has to have Pool as its parent'.format(newString =string),QtGui.QMessageBox.Ok) - return - + QtGui.QMessageBox.information( + None, 'Drop Not possible', + "'{}' has to have Pool as its parent".format(string), + QtGui.QMessageBox.Ok) + return False + if ret_string != " ": - checkCreate(scene,view,modelpath,mobj,string,ret_string,num,event_pos,layoutPt) + checkCreate(scene, view, modelpath, mobj, string, ret_string, num, + event_pos, layoutPt) + -def roundoff(scenePos,layoutPt): - xtest = scenePos.x()/layoutPt.defaultScenewidth - xroundoff = round(xtest,1) +def roundoff(scenePos, layoutPt): + xtest = scenePos.x() / layoutPt.defaultScenewidth + xroundoff = round(xtest, 1) - ytest = scenePos.y()/layoutPt.defaultSceneheight - yroundoff = round(ytest,1) - - return(xroundoff,yroundoff) + ytest = scenePos.y() / layoutPt.defaultSceneheight + yroundoff = round(ytest, 1) -def findUniqId(mobj,string,num): + return (xroundoff, yroundoff) + + +def findUniqId(mobj, string, num): if num == 0: - path = mobj.path+'/'+string; + path = mobj.path + '/' + string else: - path = mobj.path+'/'+string+str(num); + path = mobj.path + '/' + string + str(num) if not moose.exists(path): - return(string,num) + return (string, num) else: - num +=1; - return(findUniqId(mobj,string,num)) + num += 1 + return (findUniqId(mobj, string, num)) + def findCompartment(mooseObj): if mooseObj.path == '/': return None - elif isinstance(mooseObj,ChemCompt): + elif isinstance(mooseObj, kkitQGraphics.ChemCompt): return (mooseObj) else: return findCompartment(moose.element(mooseObj.parent)) diff --git a/moosegui/sidebar.py b/moosegui/sidebar.py index 2b26fa1..612b499 100644 --- a/moosegui/sidebar.py +++ b/moosegui/sidebar.py @@ -16,14 +16,14 @@ import sys import os -from PyQt5 import QtGui, Qt from PyQt5.QtWidgets import QDialog from PyQt5.QtWidgets import QHBoxLayout -from PyQt5.QtWidgets import QPushButton -from PyQt5.QtWidgets import QAction +from PyQt5.QtWidgets import QAction, QToolBar from PyQt5.QtGui import QPixmap, QIcon from moosegui import SettingsDialog +from moosegui import config +_logger = config._logger ICON_DIRECTORY = "../icons" HAND_ICON_FILENAME = "hand.png" @@ -44,33 +44,33 @@ def create_action( parent pixmap = QPixmap(icon_path) icon = QIcon(pixmap) action = QAction(icon, text, parent) - # action.setIcon(icon) - # action.setIconText(text) action.triggered.connect(callback) action.setCheckable(checkable) action.setChecked(checked) return action +def do_nothing(event, msg): + _logger.debug( "do_nothing: %s" % msg ) def mode_action( parent - , callback = (lambda event: print("Mode Clicked!")) - , text = "Mode" - , checkable = True - , checked = True - , icon_path = os.path.join( ICON_DIRECTORY - , HAND_ICON_FILENAME - ) - ): + , callback = lambda ev: do_nothing(ev, "Action clicked") + , text = "Mode" + , checkable = True + , checked = True + , icon_path = os.path.join( ICON_DIRECTORY + , HAND_ICON_FILENAME + ) + ): return create_action( parent - , callback - , text - , checkable - , checked - , icon_path - ) + , callback + , text + , checkable + , checked + , icon_path + ) def add_graph_action( parent - , callback = (lambda event: print("Add Graph Clicked!")) + , callback = lambda event: do_nothing(event, "Add Graph Clicked!") , text = "Add Graph" , checkable = False , checked = False @@ -87,7 +87,7 @@ def add_graph_action( parent ) def delete_graph_action( parent - , callback = (lambda event: print("Delete Graph Clicked!")) + , callback = lambda event: do_nothing(event, "Delete Graph Clicked!") , text = "Delete Graph" , checkable = False , checked = False @@ -104,7 +104,7 @@ def delete_graph_action( parent ) def list_action( parent - , callback = (lambda event: print("List Clicked!")) + , callback = lambda event: do_nothing(event, "List Clicked!") , text = "Show List" , checkable = False , checked = False @@ -121,60 +121,52 @@ def list_action( parent ) def connector_action( parent - , callback = (lambda event: print("Connector Clicked!")) - , text = "Mode" - , checkable = True - , checked = False - , icon_path = os.path.join( ICON_DIRECTORY - , CONNECTOR_ICON_FILENAME - ) - ): + , callback = lambda event: do_nothing(event, "Connector Clicked!") + , text = "Mode" + , checkable = True + , checked = False + , icon_path = os.path.join( ICON_DIRECTORY , CONNECTOR_ICON_FILENAME) + ): return create_action( parent - , callback - , text - , checkable - , checked - , icon_path - ) + , callback + , text + , checkable + , checked + , icon_path + ) def settings_action( parent - , callback = (lambda event: print("Settings Clicked")) - , text = "Mode" - , checkable = False - , checked = False - , icon_path = os.path.join( ICON_DIRECTORY - , WRENCH_ICON_FILENAME - ) - ): + , callback = (lambda event: do_nothing(event, "Settings Clicked")) + , text = "Mode" + , checkable = False + , checked = False + , icon_path = os.path.join(ICON_DIRECTORY, WRENCH_ICON_FILENAME) + ): return create_action( parent - , callback - , text - , checkable - , checked - , icon_path - ) - - - # actions - # , left_spacer = False - # , right_spacer = False + , callback + , text + , checkable + , checked + , icon_path + ) def sidebar(): - return QtGui.QToolBar() + return QToolBar() def main(): + from PyQt5.QtWidgets import QApplication, QMainWindow app = QApplication(sys.argv) - window = QtGui.QMainWindow() + window = QMainWindow() widget = SettingsDialog.SettingsWidget({ - 'LeakyIaF':['Vm'], - 'Compartment':['Vm','Im'], - 'HHChannel':['Ik','Gk'], - 'ZombiePool':['n','conc'], - 'ZombieBufPool':['n','conc'], - 'HHChannel2D':['Ik','Gk'], - 'CaConc':['Ca'] - }) + 'LeakyIaF':['Vm'], + 'Compartment':['Vm','Im'], + 'HHChannel':['Ik','Gk'], + 'ZombiePool':['n','conc'], + 'ZombieBufPool':['n','conc'], + 'HHChannel2D':['Ik','Gk'], + 'CaConc':['Ca'] + }) d = QDialog() l = QHBoxLayout() d.setLayout(l) @@ -187,6 +179,5 @@ def main(): window.show() sys.exit(app.exec_()) - if __name__ == "__main__": main() From 12b44aea8ca8c853f0afd98060560660eba2070a Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 19:30:59 +0530 Subject: [PATCH 59/66] Refactoring is almost over. Now make it work. Phew! --- Makefile | 5 + moosegui/PlotWidgetContainer.py | 50 ++-- moosegui/objectedit.py | 399 ++++++++++++---------------- moosegui/plugins/default.py | 115 ++++---- moosegui/plugins/kkit.py | 6 +- moosegui/plugins/kkitViewcontrol.py | 45 ++-- setup.py | 1 - 7 files changed, 277 insertions(+), 344 deletions(-) diff --git a/Makefile b/Makefile index 0bf2d10..255b2e2 100644 --- a/Makefile +++ b/Makefile @@ -17,3 +17,8 @@ test: install uninstall : $(PY) -m pip uninstall moosegui -y + +lint: + find . -type f -name *.py -print0 | xargs -0 -I file pyflakes file + +.PHONY : lint uninstall test install build check diff --git a/moosegui/PlotWidgetContainer.py b/moosegui/PlotWidgetContainer.py index 51cb6e6..c534469 100644 --- a/moosegui/PlotWidgetContainer.py +++ b/moosegui/PlotWidgetContainer.py @@ -6,15 +6,14 @@ __maintainer__ = "Aviral Goel", "HarshaRani" __email__ = "goel.aviral@gmail.com" -from PyQt5 import QtGui, QtCore -from PyQt5.QtWidgets import QWidget +from PyQt5 import QtCore +from PyQt5.QtWidgets import QWidget, QSizePolicy from PyQt5.QtWidgets import QVBoxLayout from PyQt5.QtWidgets import QScrollArea from PyQt5.QtWidgets import QSplitter # MOOSE gui from moosegui import sidebar -from moosegui.plugins import default # MOOSE import moose @@ -25,7 +24,6 @@ class PlotWidgetContainer(QWidget): def __init__(self, modelRoot, *args, **kwargs): - super(PlotWidgetContainer, self).__init__(*args) self.modelRoot = modelRoot if len(moose.wildcardFind(modelRoot + "/##[ISA=ChemCompt]")) == 0: @@ -33,24 +31,22 @@ def __init__(self, modelRoot, *args, **kwargs): else: self.modelType = CHEMICAL - self.model = moose.element(self.modelRoot) + self.model = moose.element(self.modelRoot) if self.modelRoot != "/": self.modelRoot = self.findModelPath(self.modelRoot) if moose.exists(modelRoot + "/data"): - self.data = moose.element(self.modelRoot + "/data") + self.data = moose.element(self.modelRoot + "/data") else: - self.data = moose.Neutral(self.modelRoot + "/data") + self.data = moose.Neutral(self.modelRoot + "/data") else: - self.data = moose.element("/data") + self.data = moose.element("/data") - self._layout = QVBoxLayout() - self.graphs = QSplitter() + self._layout = QVBoxLayout() + self.graphs = QSplitter() self.graphs.setOrientation(QtCore.Qt.Vertical) - self.graphsArea = QScrollArea() - self.rowIndex = 0 - self.graphs.setSizePolicy( QtGui.QSizePolicy.Expanding - , QtGui.QSizePolicy.Expanding - ) + self.graphsArea = QScrollArea() + self.rowIndex = 0 + self.graphs.setSizePolicy( QSizePolicy.Expanding, QSizePolicy.Expanding) self.setAcceptDrops(True) self.graphsArea.setWidget(self.graphs) self.graphsArea.setWidgetResizable(True) @@ -89,20 +85,24 @@ def createMenuBar(self): def addPlotWidget(self, row = None, col = 0, graph = None): if graph == None: graph = moose.Neutral(self.data.path + "/graph_" + str(self.rowIndex)) - widget = default.PlotWidget(self.model, graph, self.rowIndex, self) - if self.modelType == ELECTRICAL: - for axes in list(widget.canvas.axes.values()): - axes.set_ylim(bottom = -0.07, top= 0.03) if row == None: row = self.rowIndex - self.graphs.addWidget(widget) - self.rowIndex += 1 - self.graphWidgets.append(widget) - widget.widgetClosedSignal.connect(self.deleteWidget) - widget.addGraph.connect(lambda event : self.addPlotWidget()) - return widget + + #if self.modelType == ELECTRICAL: + # for axes in list(widget.canvas.axes.values()): + # axes.set_ylim(bottom = -0.07, top= 0.03) + + # FIXME: + # Has been removed? See #23 + # widget = default.PlotWidget(self.model, graph, self.rowIndex, self) + ## self.graphs.addWidget(widget) + ## self.rowIndex += 1 + ## self.graphWidgets.append(widget) + ## widget.widgetClosedSignal.connect(self.deleteWidget) + ## widget.addGraph.connect(lambda event : self.addPlotWidget()) + ## return widget def showPlotView(self): pass diff --git a/moosegui/objectedit.py b/moosegui/objectedit.py index 859f6cc..320cfcd 100644 --- a/moosegui/objectedit.py +++ b/moosegui/objectedit.py @@ -4,80 +4,78 @@ # Maintainer: # Created: Wed Jun 30 11:18:34 2010 (+0530) +import sys +from collections import deque +import numpy as np + from PyQt5 import QtCore -from PyQt5 import QtGui -from PyQt5.QtWidgets import QTextEdit, QWidget, QGridLayout +from PyQt5.QtWidgets import QTextEdit, QWidget, QLineEdit from PyQt5.QtWidgets import QVBoxLayout, QSizePolicy, QSplitter from PyQt5.QtWidgets import QTableView, QDockWidget, QPushButton -from PyQt5.QtWidgets import QColorDialog -from PyQt5.QtCore import QMargins - -import sys -from collections import deque -import traceback +from PyQt5.QtWidgets import QColorDialog, QMessageBox import moose -import moosegui.defaults as defaults -import moosegui.config as config +from moosegui import defaults from moose.chemUtil.chemConnectUtil import getColor #these fields will be ignored -extra_fields = ['this', - 'me', - 'parent', - 'path', - 'children', - 'linearSize', - 'objectDimensions', - 'lastDimension', - 'localNumField', - 'pathIndices', - 'msgOut', - 'msgIn', - 'diffConst', - 'speciesId', - 'Coordinates', - 'neighbors', - 'DiffusionArea', - 'DiffusionScaling', - 'x', - 'x0', - 'x1', - 'dx', - 'nx', - 'y', - 'y0', - 'y1', - 'dy', - 'ny', - 'z', - 'z0', - 'z1', - 'dz', - 'nz', - 'coords', - 'isToroid', - 'preserveNumEntries', - # 'numKm', - 'numSubstrates', - 'concK1', - 'meshToSpace', - 'spaceToMesh', - 'surface', - 'method', - 'alwaysDiffuse', - 'numData', - 'numField', - 'valueFields', - 'sourceFields', - 'motorConst', - 'destFields', - 'dt', - 'tick', - 'idValue', - 'index', - 'fieldIndex' - ] +extra_fields = [ + 'this', + 'me', + 'parent', + 'path', + 'children', + 'linearSize', + 'objectDimensions', + 'lastDimension', + 'localNumField', + 'pathIndices', + 'msgOut', + 'msgIn', + 'diffConst', + 'speciesId', + 'Coordinates', + 'neighbors', + 'DiffusionArea', + 'DiffusionScaling', + 'x', + 'x0', + 'x1', + 'dx', + 'nx', + 'y', + 'y0', + 'y1', + 'dy', + 'ny', + 'z', + 'z0', + 'z1', + 'dz', + 'nz', + 'coords', + 'isToroid', + 'preserveNumEntries', + # 'numKm', + 'numSubstrates', + 'concK1', + 'meshToSpace', + 'spaceToMesh', + 'surface', + 'method', + 'alwaysDiffuse', + 'numData', + 'numField', + 'valueFields', + 'sourceFields', + 'motorConst', + 'destFields', + 'dt', + 'tick', + 'idValue', + 'index', + 'fieldIndex' +] class ObjectEditModel(QtCore.QAbstractTableModel): @@ -94,9 +92,16 @@ class ObjectEditModel(QtCore.QAbstractTableModel): dataChanged: emitted when any data is changed in the moose object """ + objectNameChanged = QtCore.pyqtSignal('PyQt_PyObject') - # dataChanged = QtCore.pyqtSignal('PyQt_PyObject') - def __init__(self, datain, headerdata=['Field','Value'], undolen=100, parent=None, *args): + dataChanged = QtCore.pyqtSignal(QtCore.QModelIndex, QtCore.QModelIndex) + + def __init__(self, + datain, + headerdata=['Field', 'Value'], + undolen=100, + parent=None, + *args): QtCore.QAbstractTableModel.__init__(self, parent, *args) self.fieldFlags = {} self.fields = [] @@ -107,27 +112,23 @@ def __init__(self, datain, headerdata=['Field','Value'], undolen=100, parent=Non self.checkState_ = False for fieldName in self.mooseObject.getFieldNames('valueFinfo'): - if fieldName in extra_fields : + if fieldName in extra_fields: continue - - value = self.mooseObject.getField(fieldName) self.fields.append(fieldName) - #harsha: For signalling models will be pulling out notes field from Annotator - # can updates if exist for other types also if (isinstance (self.mooseObject,moose.ChemCompt) or \ isinstance(self.mooseObject,moose.ReacBase) or \ isinstance(moose.element(moose.element(self.mooseObject).parent),moose.EnzBase) \ ): pass else: - self.fields.append("Color") - + self.fields.append("Color") + flag = QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable self.fieldFlags[fieldName] = flag - if ( isinstance(self.mooseObject, moose.ReacBase) ) : + if (isinstance(self.mooseObject, moose.ReacBase)): self.fields.append("Kd") - flag = QtCore.Qt.ItemIsEnabled + flag = QtCore.Qt.ItemIsEnabled self.fieldFlags[fieldName] = flag def rowCount(self, parent): @@ -137,7 +138,8 @@ def columnCount(self, parent): return len(self.headerdata) def setData(self, index, value, role=QtCore.Qt.EditRole): - if not index.isValid() or index.row () >= len(self.fields) or index.column() != 1: + if not index.isValid() or index.row() >= len( + self.fields) or index.column() != 1: return False field = self.fields[index.row()] if (role == QtCore.Qt.CheckStateRole): @@ -147,20 +149,20 @@ def setData(self, index, value, role=QtCore.Qt.EditRole): else: # convert Qt datastructure to Python string - value = value.strip() + value = value.strip() if len(value) == 0: return False if field == "Notes": field = "notes" - ann = moose.Annotator(self.mooseObject.path+'/info') + ann = moose.Annotator(self.mooseObject.path + '/info') oldValue = ann.getField(field) value = type(oldValue)(value) - ann.setField(field,value) - self.undoStack.append((index,oldValue)) + ann.setField(field, value) + self.undoStack.append((index, oldValue)) elif field == "vector": - for ch in ['[',']']: + for ch in ['[', ']']: if ch in value: - value = value.replace(ch," ") + value = value.replace(ch, " ") value = value.replace(",", " ") valuelist = [] if value.find(',') != -1: @@ -169,24 +171,18 @@ def setData(self, index, value, role=QtCore.Qt.EditRole): valuelist = value.split(" ") else: valuelist = value - vectorlist = [] - for d in valuelist: - try: - float(d) - vectorlist.append(float(d)) - except: - pass - a = np.array( vectorlist ) - self.mooseObject.setField(field, a) - + self.mooseObject.setField(field, np.array(valuelist, dtype=np.float)) else: oldValue = self.mooseObject.getField(field) if field != "isBuffered": value = type(oldValue)(value) self.mooseObject.setField(field, value) else: - if self.mooseObject.className == "ZombiePool" or self.mooseObject.className =="ZombieBufPool": - QtGui.QMessageBox.warning(None,'Solver is set, Could not set the value','\n Unset the solver by clicking \n run widget -> Preferences -> Exponential Euler->Apply') + if self.mooseObject.className == "ZombiePool" or self.mooseObject.className == "ZombieBufPool": + QMessageBox.warning( + None, 'Solver is set, Could not set the value', + '\n Unset the solver by clicking \n run widget -> Preferences -> Exponential Euler->Apply' + ) else: if value.lower() in ("yes", "true", "t", "1"): self.mooseObject.setField(field, True) @@ -194,112 +190,49 @@ def setData(self, index, value, role=QtCore.Qt.EditRole): self.mooseObject.setField(field, False) self.undoStack.append((index, oldValue)) if field == 'name': - self.emit(QtCore.SIGNAL('objectNameChanged(PyQt_PyObject)'), self.mooseObject) + self.emit(QtCore.SIGNAL('objectNameChanged(PyQt_PyObject)'), + self.mooseObject) return True self.dataChanged.emit(index, index) return True - def undo(self): - print ('Undo') - if len(self.undoStack) == 0: - raise Info('No more undo information') - index, oldvalue, = self.undoStack.pop() - field = self.fields[index.row()] - currentvalue = self.mooseObject.getField(field) - oldvalue = type(currentvalue)(oldvalue) - self.redoStack.append((index, str(currentvalue))) - self.mooseObject.setField(field, oldvalue) - if field == 'name': - self.objectNameChanged.emit(self.mooseObject) - self.emit(QtCore.SIGNAL('dataChanged(const QModelIndex&, const QModelIndex&)'), index, index) - - def redo(self): - if len(self.redoStack) ==0: - raise Info('No more redo information') - index, oldvalue, = self.redoStack.pop() - currentvalue = self.mooseObject.getField(self.fields[index.row()]) - self.undoStack.append((index, str(currentvalue))) - self.mooseObject.setField(self.fields[index.row()], type(currentvalue)(oldvalue)) - if field == 'name': - self.emit(QtCore.SIGNAL('objectNameChanged(PyQt_PyObject)'), self.mooseObject) - self.emit(QtCore.SIGNAL('dataChanged(const QModelIndex&, const QModelIndex&)'), index, index) - - def flags(self, index): - flag = QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable - #flag = QtCore.Qt.NoItemFlags - if not index.isValid(): - return None - # Replacing the `outrageous` up stuff with something sensible - field = self.fields[index.row()] - newstr = field[0] - newstr = newstr.upper() - field_string = newstr + field[1:] - setter = 'set%s' %(field_string) - #setter = 'set_%s' % (self.fields[index.row()]) - #print " from Object setter",setter, "object",self.mooseObject, " ",self.mooseObject.getFieldNames('destFinfo'); - if index.column() == 1: - # if field == "Color": - # flag = QtCore.Qt.ItemIsEnabled - if field == "Notes": - ann = moose.Annotator(self.mooseObject.path+'/info') - if setter in ann.getFieldNames('destFinfo'): - flag |= QtCore.Qt.ItemIsEditable - - if isinstance(self.mooseObject, moose.PoolBase) or isinstance(self.mooseObject,moose.Function): - if field == 'volume' or field == 'expr': - pass - elif setter in self.mooseObject.getFieldNames('destFinfo'): - flag |= QtCore.Qt.ItemIsEditable - else: - if setter in self.mooseObject.getFieldNames('destFinfo'): - flag |= QtCore.Qt.ItemIsEditable - - #if field == "Notes": - # flag |= QtCore.Qt.ItemIsEditable - - # !! Replaced till here - - return flag - def data(self, index, role): ret = None field = self.fields[index.row()] if index.column() == 0 and role == QtCore.Qt.DisplayRole: try: - ret = '%s (%s)' % (QtCore.QString(field), defaults.FIELD_UNITS[field]) + ret = '%s (%s)' % (field, defaults.FIELD_UNITS[field]) except KeyError: - ret = QtCore.QString(field) - elif index.column() == 1: - if role==QtCore.Qt.CheckStateRole: - if ((str(field) == "plot Conc") or (str(field) == "plot n") ): - # print index.data(QtCore.Qt. ), str(field) + ret = field + return ret + + if index.column() == 1: + if role == QtCore.Qt.CheckStateRole: + if (str(field) == "plot Conc") or (str(field) == "plot n"): return self.checkState_ elif (role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole): try: - if (str(field) =="Color" ): + if (str(field) == "Color"): return QPushButton("Press Me!") - if (str(field) =="Kd" ): - #ret = self.mooseObject.getField(str(field)) + if (str(field) == "Kd"): Kd = 0 - if self.mooseObject.className == "ZombieReac" or self.mooseObject.className == "Reac": if self.mooseObject.numSubstrates > 1 or self.mooseObject.numProducts > 1: if self.mooseObject.Kf != 0: - Kd = self.mooseObject.Kb/self.mooseObject.Kf - - #Kd = QtCore.QVariant(QtCore.QString(str(ret))) + Kd = self.mooseObject.Kb / self.mooseObject.Kf ret = QtCore.QVariant(QtCore.QString(str(Kd))) - if ( (str(field) != "Notes") and (str(field) != "className") and (str(field) != "Kd")): + if ((str(field) != "Notes") and (str(field) != "className") + and (str(field) != "Kd")): ret = self.mooseObject.getField(str(field)) ret = QtCore.QString(str(ret)) - elif(str(field) == "className"): + elif (str(field) == "className"): ret = self.mooseObject.getField(str(field)) if 'Zombie' in ret: ret = ret.split('Zombie')[1] ret = QtCore.QString(str(ret)) - elif(str(field) == "Notes"): - astr = self.mooseObject.path+'/info' + elif (str(field) == "Notes"): + astr = self.mooseObject.path + '/info' mastr = moose.Annotator(astr) ret = (mastr).getField(str('notes')) ret = (QtCore.QString(str(ret))) @@ -312,6 +245,7 @@ def headerData(self, col, orientation, role): return (self.headerdata[col]) return "" + class ObjectEditView(QTableView): """View class for object editor. @@ -325,9 +259,12 @@ class ObjectEditView(QTableView): To enable undo/redo conect the corresponding actions from the gui to view.model().undo and view.model().redo slots. """ - def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=None): + + def __init__(self, + mobject, + undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, + parent=None): QTableView.__init__(self, parent) - #self.setEditTriggers(self.DoubleClicked | self.SelectedClicked | self.EditKeyPressed) vh = self.verticalHeader() vh.setVisible(False) hh = self.horizontalHeader() @@ -337,11 +274,12 @@ def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=Non self.setModel(ObjectEditModel(mobject, undolen=undolen)) self.colorButton = QPushButton() self.colorDialog = QColorDialog() - self.textEdit = QTextEdit() + self.textEdit = QTextEdit() try: notesIndex = self.model().fields.index("Notes") - self.setIndexWidget(self.model().index(notesIndex,1), self.textEdit) - info = moose.Annotator(self.model().mooseObject.path+'/info') + self.setIndexWidget(self.model().index(notesIndex, 1), + self.textEdit) + info = moose.Annotator(self.model().mooseObject.path + '/info') self.textEdit.setText(QtCore.QString(info.getField('notes'))) self.setRowHeight(notesIndex, self.rowHeight(notesIndex) * 3) @@ -352,39 +290,32 @@ def __init__(self, mobject, undolen=defaults.OBJECT_EDIT_UNDO_LENGTH, parent=Non except: pass - try: - colorIndex = self.model().fields.index("Color") self.colorButton.clicked.connect(self.colorDialog.show) - self.colorButton.setFocusPolicy(PyQt5.QtCore.Qt.NoFocus) + self.colorButton.setFocusPolicy(QtCore.Qt.NoFocus) self.colorDialog.colorSelected.connect( lambda color: self.colorButton.setStyleSheet( - "QPushButton {" - + "background-color: {0}; color: {0};".format(color.name()) - + "}" - ) - ) - self.setIndexWidget(self.model().index(colorIndex,1), self.colorButton) - # self.colorDialog.colorSelected.connect( - # lambda color: - # - self.setColor(getColor(self.model().mooseObject.path+'/info')[1]) + "QPushButton {" + "background-color: {0}; color: {0};". + format(color.name()) + "}")) + # FIXME: + # colorIndex = self.model().fields.index("Color") + # self.setIndexWidget(self.model().index(colorIndex, 1), self.colorButton) + self.setColor(getColor(self.model().mooseObject.path + '/info')[1]) except: pass - print ('Created view with %s' %(mobject)) + print('Created view with %s' % (mobject)) def setColor(self, color): self.colorButton.setStyleSheet( - "QPushButton {" - + "background-color: {0}; color: {0};".format(color) - + "}" - ) + "QPushButton {" + + "background-color: {0}; color: {0};".format(color) + "}") self.colorDialog.setCurrentColor(color) def dataChanged(self, tl, br): - QTableView.dataChanged(self, tl, br) + QTableView.dataChanged.emit(tl, br) self.viewport().update() + class ObjectEditDockWidget(QDockWidget): """A dock widget whose title is set by the current moose object. Allows switching the moose object. It stores the created @@ -398,6 +329,7 @@ class ObjectEditDockWidget(QDockWidget): """ objectNameChanged = QtCore.pyqtSignal('PyQt_PyObject') colorChanged = QtCore.pyqtSignal(object, object) + def __init__(self, mobj='/', parent=None, flags=None): QDockWidget.__init__(self, parent=parent) mobj = moose.element(mobj) @@ -424,60 +356,61 @@ def setObject(self, mobj): view = ObjectEditView(element) self.view_dict[element] = view view.model().objectNameChanged.connect(self.emitObjectNameChanged) - view.colorDialog.colorSelected.connect(lambda color: self.colorChanged.emit(element, color)) + view.colorDialog.colorSelected.connect(lambda color: self.colorChanged. + emit(element, color)) textEdit = QTextEdit() - view.setSizePolicy( QSizePolicy.Ignored - , QSizePolicy.Ignored - ) + view.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) textEdit.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) base = QSplitter() - base.setOrientation(PyQt5.QtCore.Qt.Vertical) + base.setOrientation(QtCore.Qt.Vertical) layout = QVBoxLayout() - layout.addWidget(view)#, 0, 0) - lineedit = QtGui.QLineEdit("Notes:") + layout.addWidget(view) #, 0, 0) + lineedit = QLineEdit("Notes:") lineedit.setReadOnly(True) layout.addWidget(lineedit) - - if ( isinstance(mobj, moose.PoolBase) - or isinstance(mobj,moose.ReacBase) - or isinstance(mobj,moose.EnzBase) - ) : - info = moose.Annotator(mobj.path +'/info') - textEdit.setText(QtCore.QString(info.getField('notes'))) - textEdit.textChanged.connect(lambda : info.setField('notes', str(textEdit.toPlainText()))) - layout.addWidget(textEdit)#,1,0) - # self.setRowHeight(notesIndex, self.rowHeight(notesIndex) * 3) + if (isinstance(mobj, moose.PoolBase) + or isinstance(mobj, moose.ReacBase) + or isinstance(mobj, moose.EnzBase)): + info = moose.Annotator(mobj.path + '/info') + textEdit.setText(QtCore.QString(info.getField('notes'))) + textEdit.textChanged.connect(lambda: info.setField( + 'notes', str(textEdit.toPlainText()))) + layout.addWidget(textEdit) #,1,0) base.setLayout(layout) - # base.setSizes( [ view.height() - # , base.height() - view.height() - # ] - # ) - # print("a =>", view.height()) - # print("b =>", base.height()) - - - # layout.setStretch(0,3) - # layout.setStretch(1,1) - # layout.setContentsMargins(QMargins(0,0,0,0)) self.setWidget(base) self.setWindowTitle('Edit: %s' % (element.path)) view.update() def emitObjectNameChanged(self, mobj): self.objectNameChanged.emit(mobj) - self.setWindowTitle('Edit:%s'%(mobj.path)) + self.setWindowTitle('Edit:%s' % (mobj.path)) + + def undo(self): + if len(self.undoStack) == 0: + raise RuntimeWarning('No more undo information') + index, oldvalue, = self.undoStack.pop() + field = self.fields[index.row()] + currentvalue = self.mooseObject.getField(field) + oldvalue = type(currentvalue)(oldvalue) + self.redoStack.append((index, str(currentvalue))) + self.mooseObject.setField(field, oldvalue) + if field == 'name': + self.objectNameChanged.emit(self.mooseObject) + self.dataChanged.emit(index, index) + def main(): - app = QtGui.QApplication(sys.argv) - mainwin = QtGui.QMainWindow() + from PyQt5.QtWidgets import QApplication, QMainWindow, QAction + app = QApplication(sys.argv) + mainwin = QMainWindow() c = moose.Compartment("test") view = ObjectEditView(c, undolen=3) mainwin.setCentralWidget(view) - action = QtGui.QAction('Undo', mainwin) + action = QAction('Undo', mainwin) action.setShortcut('Ctrl+z') action.triggered.connect(view.model().undo) mainwin.menuBar().addAction(action) - action = QtGui.QAction('Redo', mainwin) + action = QAction('Redo', mainwin) action.setShortcut('Ctrl+y') action.triggered.connect(view.model().redo) mainwin.menuBar().addAction(action) diff --git a/moosegui/plugins/default.py b/moosegui/plugins/default.py index bb59d2b..0475a0e 100644 --- a/moosegui/plugins/default.py +++ b/moosegui/plugins/default.py @@ -18,15 +18,14 @@ from PyQt5 import QtCore, QtGui from PyQt5.QtCore import Qt from PyQt5.QtCore import pyqtSlot, pyqtSignal -from PyQt5.QtGui import QIcon, QPixmap -from PyQt5.QtGui import QDoubleValidator from PyQt5.QtWidgets import QToolBar, QToolButton from PyQt5.QtWidgets import QLabel, QLineEdit from PyQt5.QtWidgets import QAction, QSizePolicy from PyQt5.QtWidgets import QWidget, QHBoxLayout -from PyQt5.QtWidgets import QScrollArea -from PyQt5.QtWidgets import QMenu +from PyQt5.QtWidgets import QScrollArea, QGridLayout, QMessageBox +from PyQt5.QtWidgets import QMenu, QApplication, QDockWidget +from PyQt5.QtWidgets import QFrame, QFileDialog, QVBoxLayout # moose import moose @@ -40,7 +39,7 @@ from moosegui.plugins.Runner import Runner from moosegui import config from moosegui import mtree -# from moosegui.PlotWidgetContainer import PlotWidgetContainer +from moosegui.PlotWidgetContainer import PlotWidgetContainer ELECTRICAL_MODEL = 0 CHEMICAL_MODEL = 1 @@ -73,13 +72,7 @@ def getEditorView(self): self.currentView = self.editorView return self.editorView - def getPlotView(self): - if not hasattr(self, 'plotView'): - self.plotView = PlotView(self) - return self.plotView - def getRunView(self): - if not hasattr(self, 'runView') or self.runView is None: self.runView = RunView(self.modelRoot, self) return self.runView @@ -271,8 +264,8 @@ class RunView(RunBase): canvas: widget for plotting dataRoot: location of data tables - """ + def __init__(self, modelRoot, *args, **kwargs): RunBase.__init__(self, *args, **kwargs) self.modelRoot = modelRoot @@ -326,8 +319,8 @@ def getSchedulingDockWidget(self): """Create and/or return a widget for schduling""" if hasattr(self, 'schedulingDockWidget') and self.schedulingDockWidget is not None: return self.schedulingDockWidget - self.schedulingDockWidget = QtGui.QDockWidget('Scheduling') - self.schedulingDockWidget.setFeatures( QtGui.QDockWidget.NoDockWidgetFeatures); + self.schedulingDockWidget = QDockWidget('Scheduling') + self.schedulingDockWidget.setFeatures( QDockWidget.NoDockWidgetFeatures); self.schedulingDockWidget.setWindowFlags(Qt.CustomizeWindowHint) titleWidget = QWidget(); self.schedulingDockWidget.setTitleBarWidget(titleWidget) @@ -402,14 +395,14 @@ def getSchedulerToolBar(self): bar = QToolBar("Run", self) self.resetAction = bar.addAction( - QIcon( os.path.join( config.MOOSE_ICON_DIR, 'reset.png' ) ) + QtGui.QIcon( os.path.join( config.MOOSE_ICON_DIR, 'reset.png' ) ) , 'Reset' , self.resetSimulation ) self.resetAction.setToolTip('Reset simulation.') self.runAction = bar.addAction( - QIcon( os.path.join( config.MOOSE_ICON_DIR, 'run.png') ) + QtGui.QIcon( os.path.join( config.MOOSE_ICON_DIR, 'run.png') ) , 'Run' , self.runSimulation ) @@ -417,7 +410,7 @@ def getSchedulerToolBar(self): self.stopAction = bar.addAction( - QIcon( os.path.join( config.MOOSE_ICON_DIR, 'stop.png') ) + QtGui.QIcon( os.path.join( config.MOOSE_ICON_DIR, 'stop.png') ) , 'Stop' , self.runner.togglePauseSimulation ) @@ -427,7 +420,7 @@ def getSchedulerToolBar(self): runtimeLabel = QLabel('Run for') self.simulationRuntime = QLineEdit() - self.simulationRuntime.setValidator(QDoubleValidator()) + self.simulationRuntime.setValidator(QtGui.QDoubleValidator()) self.simulationRuntime.setFixedWidth(75) bar.addWidget(runtimeLabel) bar.addWidget(self.simulationRuntime) @@ -438,7 +431,7 @@ def getSchedulerToolBar(self): self.currentSimulationRuntime = QLineEdit() # 6 digits self.currentSimulationRuntime.setToolTip('Current simulation runtime.') self.currentSimulationRuntime.setFixedWidth(75) - self.currentSimulationRuntime.setValidator(QDoubleValidator()) + self.currentSimulationRuntime.setValidator(QtGui.QDoubleValidator()) self.currentSimulationRuntime.setText("0.0") self.currentSimulationRuntime.setReadOnly(True) @@ -568,36 +561,30 @@ def solverStatus(self): nameRE = nameRE+"\n "+res.className + " --> "+res.parent.name+ " --> "+res.name if status == -1: - QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: Reaction path not yet assigned.\n ") + QMessageBox.warning(None,"Could not Run the model","Warning: Reaction path not yet assigned.\n ") return -1 if status == 1: - #QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: Missing a reactant in a Reac or Enz.\n ") - QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: Missing a reactant in %s " %(nameRE)) + #QMessageBox.warning(None,"Could not Run the model","Warning: Missing a reactant in a Reac or Enz.\n ") + QMessageBox.warning(None,"Could not Run the model","Warning: Missing a reactant in %s " %(nameRE)) return 1 elif status == 2: - QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: Missing a substrate in an MMenz %s " %(nameRE)) - #QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: Missing a substrate in an MMenz.\n ") + QMessageBox.warning(None,"Could not Run the model","Warning: Missing a substrate in an MMenz %s " %(nameRE)) + #QMessageBox.warning(None,"Could not Run the model","Warning: Missing a substrate in an MMenz.\n ") return 2 elif status == 4: - QtGui.QMessageBox.warning(None,"Could not Run the model"," Warning: Compartment not defined.\n ") + QMessageBox.warning(None,"Could not Run the model"," Warning: Compartment not defined.\n ") return 4 elif status == 8: - QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: Neither Ksolve nor Dsolve defined.\n ") + QMessageBox.warning(None,"Could not Run the model","Warning: Neither Ksolve nor Dsolve defined.\n ") return 8 elif status == 16: - QtGui.QMessageBox.warning(None,"Could not Run the model","Warning: No objects found on path.\n ") + QMessageBox.warning(None,"Could not Run the model","Warning: No objects found on path.\n ") return 16 elif status == 0: print("Successfully built stoichiometry matrix.\n ") # moose.reinit() return 0 - def __getAdvanceOptionsButton(self): - icon = QtGui.QIcon(os.path.join(config.settings[config.KEY_ICON_DIR],'arrow.png')) - # self.advancedOptionsButton.setIcon(QtGui.QIcon(icon)) - # self.advancedOptionsButton.setToolButtonStyle( Qt.ToolButtonTextBesideIcon ); - return self.advancedOptionsButton - def preferencesToggler(self): visibility = not self.preferences.getView().isVisible() self.preferences.getView().setVisible(visibility) @@ -612,7 +599,7 @@ def updateCurrentTime(self): def updateTextFromTick(self, tickNo): tick = moose.vector('/clock/tick')[tickNo] widget = self.tickListWidget.layout().itemAtPosition(tickNo + 1, 1).widget() - if widget is not None and isinstance(widget, QtGui.QLineEdit): + if widget is not None and isinstance(widget, QLineEdit): widget.setText(str(tick.dt)) def updateFromMoose(self): @@ -627,10 +614,9 @@ def getSimTime(self): try: time = float(str(self.simtimeEdit.text())) return time - except ValueError as e: - QtGui.QMessageBox.warning(self, 'Invalid value', 'Specified runtime was meaningless.') - return 0 - + except ValueError: + QMessageBox.warning(self, 'Invalid value', 'Specified runtime was meaningless.') + return 0.0 def setDataRoot(self, root='/data'): self.dataRoot = moose.element(root).path @@ -687,18 +673,19 @@ def __init__(self, model, graph, index, parentWidget, *args, **kwargs): self.menu = self.getContextMenu() self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.connect( self - , SIGNAL("customContextMenuRequested(QPoint)") - , self - , SLOT("contextMenuRequested(QPoint)") - ) + self.customContextMenuRequested.connect(self.contextMenuRequested) + # self.connect( self + # , SIGNAL("customContextMenuRequested(QPoint)") + # , self + # , SLOT("contextMenuRequested(QPoint)") + # ) self.canvas = CanvasWidget(self.model, self.graph, self.index) self.canvas.setParent(self) self.navToolbar = NavigationToolbar(self.canvas, self) self.hackNavigationToolbar() self.canvas.mpl_connect('pick_event',self.togglePlot) - layout = QtGui.QGridLayout() + layout = QGridLayout() layout.addWidget(self.navToolbar, 0, 0) layout.addWidget(self.canvas, 1, 0) self.setLayout(layout) @@ -706,35 +693,35 @@ def __init__(self, model, graph, index, parentWidget, *args, **kwargs): self.lineToDataSource = {} self.axesRef = self.canvas.addSubplot(1, 1) self.legend = None - desktop = QtGui.QApplication.desktop() - self.setMinimumSize(desktop.screenGeometry().width() / 4, desktop.screenGeometry().height() / 3) + desktop = QApplication.desktop() + self.setMinimumSize(desktop.screenGeometry().width()//4, desktop.screenGeometry().height()//3) self.canvas.updateSignal.connect(self.plotAllData) self.plotAllData() def hackNavigationToolbar(self): # ADD Graph Action - pixmap = QPixmap( + pixmap = QtGui.QPixmap( os.path.join( config.MOOSE_ICON_DIR, 'add_graph.png' ) ) - icon = QIcon(pixmap) + icon = QtGui.QIcon(pixmap) action = QAction(icon, "Add a graph", self.navToolbar) # self.navToolbar.addAction(action) action.triggered.connect( self.addGraph.emit ) self.navToolbar.insertAction(self.navToolbar.actions()[0], action) # Delete Graph Action - pixmap = QPixmap( os.path.join( config.MOOSE_ICON_DIR, + pixmap = QtGui.QPixmap( os.path.join( config.MOOSE_ICON_DIR, "delete_graph.png") ) - icon = QIcon(pixmap) + icon = QtGui.QIcon(pixmap) action = QAction(icon, "Delete this graph", self.navToolbar) action.triggered.connect(self.delete) self.navToolbar.insertAction(self.navToolbar.actions()[1], action) #Toggle Grid Action - pixmap = QPixmap( + pixmap = QtGui.QPixmap( os.path.join( config.MOOSE_ICON_DIR, "grid.png" ) ) - icon = QIcon(pixmap) + icon = QtGui.QIcon(pixmap) action = QAction(icon, "Toggle Grid", self.navToolbar) action.triggered.connect(self.canvas.toggleGrid) self.navToolbar.insertAction(self.navToolbar.actions()[2], action) @@ -1015,13 +1002,13 @@ def saveAllCsv(self): """Save data for all currently plotted lines""" #Harsha: Plots were saved in GUI folder instead provided QFileDialog box to save to #user choose - fileDialog2 = QtGui.QFileDialog(self) - fileDialog2.setFileMode(QtGui.QFileDialog.Directory) + fileDialog2 = QFileDialog(self) + fileDialog2.setFileMode(QFileDialog.Directory) fileDialog2.setWindowTitle('Select Directory to save plots') - fileDialog2.setOptions(QtGui.QFileDialog.ShowDirsOnly) - fileDialog2.setLabelText(QtGui.QFileDialog.Accept, self.tr("Save")) - targetPanel = QtGui.QFrame(fileDialog2) - targetPanel.setLayout(QtGui.QVBoxLayout()) + fileDialog2.setOptions(QFileDialog.ShowDirsOnly) + fileDialog2.setLabelText(QFileDialog.Accept, self.tr("Save")) + targetPanel = QFrame(fileDialog2) + targetPanel.setLayout(QVBoxLayout()) layout = fileDialog2.layout() layout.addWidget(targetPanel) if fileDialog2.exec_(): @@ -1065,7 +1052,7 @@ def __init__(self, model, graph, *args): QScrollArea.__init__(self, *args) self.model = moose.element(model.path + "/model") self.modelRoot = self.model.path - self.setLayout(QtGui.QVBoxLayout(self)) + self.setLayout(QVBoxLayout(self)) self.layout().addWidget(self.getPlotListWidget()) self.setDataRoot(self.model.path) self._elementWidgetsDict = {} # element path to corresponding qlabel and fields combo @@ -1075,9 +1062,9 @@ def getPlotListWidget(self): plottable fields in comboboxes.""" if not hasattr(self, '_plotListWidget'): self._plotListWidget = QWidget(self) - layout = QtGui.QGridLayout(self._plotListWidget) + layout = QGridLayout(self._plotListWidget) self._plotListWidget.setLayout(layout) - layout.addWidget(QtGui.QLabel('

Elements matching search criterion will be listed here

'), 0, 0) + layout.addWidget(QLabel('

Elements matching search criterion will be listed here

'), 0, 0) return self._plotListWidget def setSelectedElements(self, elementlist): @@ -1098,10 +1085,10 @@ def setSelectedElements(self, elementlist): del w del item self._elementWidgetsDict.clear() - label = QtGui.QLabel('Element') + label = QLabel('Element') label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.getPlotListWidget().layout().addWidget(label, 0, 0, 1, 2) - self.getPlotListWidget().layout().addWidget(QtGui.QLabel('Fields to plot'), 0, 2, 1, 1) + self.getPlotListWidget().layout().addWidget(QLabel('Fields to plot'), 0, 2, 1, 1) for ii, entry in enumerate(elementlist): el = moose.element(entry) plottableFields = [] @@ -1110,7 +1097,7 @@ def setSelectedElements(self, elementlist): plottableFields.append(field) if len(plottableFields) == 0: continue - elementLabel = QtGui.QLabel(el.path) + elementLabel = QLabel(el.path) fieldsCombo = CheckComboBox(self) fieldsCombo.addItem('') for item in plottableFields: diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index 970398d..72c5f6d 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -17,6 +17,7 @@ from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QWidget, QGridLayout, QFileDialog from PyQt5.QtWidgets import QMenu, QAction, QGraphicsScene +from PyQt5.QtWidgets import QToolBar from PyQt5.QtGui import QColor # moosegui @@ -287,16 +288,19 @@ def updateModelView(self): # then remove all the view and add an empty view if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) + self.view = kkitViewcontrol.GraphicalView(self.modelRoot , self.sceneContainer , self.border , self , self.createdItem) + if isinstance(self, kineticEditorWidget): self.view.setRefWidget("editorView") self.view.setAcceptDrops(True) elif isinstance(self, KineticRunWidget): self.view.setRefWidget("runView") + self.view.dropped.connect(self.objectEditSlot) hLayout = QGridLayout(self) self.setLayout(hLayout) @@ -906,7 +910,7 @@ def makePoolItem(self, poolObj, qGraCompt): def getToolBars(self): #Add specific tool items with respect to kkit if not hasattr(self, '_insertToolBar'): - self._insertToolBar = QtGui.QToolBar('Insert') + self._insertToolBar = QToolBar('Insert') self._toolBars.append(self._insertToolBar) for action in self.insertMenu.actions(): button = MToolButton() diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 795c4b7..420acf2 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -22,19 +22,24 @@ from moosegui.plugins import kkitUtil from moosegui.plugins import modelBuild from moosegui.plugins import constants -from moosegui.plugins import setsolver from moosegui.plugins import kkitQGraphics from moosegui.plugins import kkitOrdinateUtil # logger from moosegui import config -_logger = config._logger +import logging +logger_ = logging.getLogger("moosegui.kkit.viewcontrol") + +SDIR_ = os.path.dirname(__file__) class GraphicalView(QGraphicsView): + # NOTE: why this is not inside __init__? See + # https://stackoverflow.com/a/2971426/1805129 and cry! + dropped = QtCore.pyqtSignal(int, name="dropped") + def __init__(self, modelRoot,parent,border,layoutPt,createdItem): - QGraphicsView.__init__(self,parent) - + QGraphicsView.__init__(self, parent) self.state = None self.move = False self.resetState() @@ -43,7 +48,7 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem): self.expectedConnection = None self.selections = [] self.connector = None - self.connectionSignImagePath = "../gui/icons/connection.png" + self.connectionSignImagePath = os.path.join(SDIR_, "../icons/connection.png") self.connectionSignImage = QtGui.QImage(self.connectionSignImagePath) self.setScene(parent) self.modelRoot = modelRoot @@ -96,7 +101,7 @@ def resolveCompartmentInteriorAndBoundary(self, item, position): def resolveGroupInteriorAndBoundary(self, item, position): bound = item.rect().adjusted(3,3,-3,-3) - return constants.constants.GROUP_INTERIOR \ + return constants.GROUP_INTERIOR \ if bound.contains(item.mapFromScene(position)) \ else constants.GROUP_BOUNDARY @@ -146,7 +151,7 @@ def resolveItem(self, items, position): gsolution = (item, self.resolveGroupInteriorAndBoundary(item, position)) if gsolution[1] == constants.GROUP_BOUNDARY: return gsolution - elif gsolution[1] == constants.constants.GROUP_INTERIOR: + elif gsolution[1] == constants.GROUP_INTERIOR: groupInteriorfound = True groupList.append(gsolution) if item.name == constants.COMPARTMENT: @@ -188,7 +193,7 @@ def editorMousePressEvent(self, event): self.state["press"]["scenepos"] = item.parent().scenePos() if itemType == constants.COMPARTMENT_INTERIOR \ or itemType == constants.GROUP_BOUNDARY \ - or itemType == constants.constants.GROUP_INTERIOR: + or itemType == constants.GROUP_INTERIOR: self.removeConnector() elif itemType == constants.ITEM: @@ -227,7 +232,7 @@ def editorMousePressEvent(self, event): def editorMouseMoveEvent(self,event): - if self.state["press"]["mode"] == constants.INconstants.VALID: + if self.state["press"]["mode"] == constants.INVALID: self.state["move"]["happened"] = False return if self.move: @@ -294,7 +299,7 @@ def editorMouseMoveEvent(self,event): self.layoutPt.positionChange(item.mobj.path) self.state["press"]["pos"] = event.pos() - if itemType == constants.COMPARTMENT_INTERIOR or itemType == constants.constants.GROUP_INTERIOR: + if itemType == constants.COMPARTMENT_INTERIOR or itemType == constants.GROUP_INTERIOR: if self.customrubberBand == None: self.customrubberBand = QRubberBand(QRubberBand.Rectangle,self) self.customrubberBand.show() @@ -322,8 +327,8 @@ def editorMouseReleaseEvent(self,event): self.move = False self.setCursor(Qt.Qt.ArrowCursor) - if self.state["press"]["mode"] == constants.INconstants.VALID: - self.state["release"]["mode"] = constants.INconstants.VALID + if self.state["press"]["mode"] == constants.INVALID: + self.state["release"]["mode"] = constants.INVALID self.resetState() return @@ -1290,12 +1295,12 @@ def dragMoveEvent(self, event): else: pass - def eventFilter(self, source, event): - if self.viewBase == "editorView": - if (event.type() == QtCore.QEvent.Drop): - pass - else: - pass + # def eventFilter(self, source, event): + # logger_.debug(self, source, event) + # if self.viewBaseType == "editorView": + # if event.type() == QtCore.QEvent.Drop: + # return True + # return False def dropEvent(self, event): """Insert an element of the specified class in drop location @@ -1308,7 +1313,7 @@ def dropEvent(self, event): """ if self.viewBaseType == "editorView": if not event.mimeData().hasFormat('text/plain'): - _logger.warn("MIMEData is not text/plain. Doing nothing ...") + logger_.warn("MIMEData is not text/plain. Doing nothing ...") return event_pos = event.pos() string = str(event.mimeData().text()) @@ -1323,7 +1328,7 @@ def dropEvent(self, event): # Check if view needs to rescaled to fit the dropped item. self.layoutPt.rescaleView( ) else: - _logger.debug("Not is editorView ") + logger_.debug("Not is editorView ") return def populate_srcdes(self, src, des): diff --git a/setup.py b/setup.py index e4074ef..0fbfe08 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,6 @@ __email__ = "dilawars@ncbs.res.in" __status__ = "Development" -import sys import os import sys from setuptools import setup From 25f2f7457146cd0495bdc2a46fb460e140492179 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 19:55:01 +0530 Subject: [PATCH 60/66] more refactoring. Seg-V while loading. --- moosegui/plugins/kkit.py | 9 +- moosegui/plugins/kkitQGraphics.py | 657 ++++++++++++++++-------------- 2 files changed, 344 insertions(+), 322 deletions(-) diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index 72c5f6d..cc1cb6f 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -25,7 +25,7 @@ from moosegui import mplugin, config from moosegui.mtoolbutton import MToolButton from moosegui.plugins.default import MoosePlugin, MooseEditorView, RunView -from moosegui.plugins import kkitUtil +from moosegui.plugins import kkitUtil, kkitOrdinateUtil from moosegui.plugins import kkitQGraphics from moosegui.plugins import kkitViewcontrol from moosegui.PlotWidgetContainer import PlotWidgetContainer @@ -342,18 +342,17 @@ def getMooseObj(self): else: self.meshEntry = {} self.objPar, self.meshEntry, self.xmin, self.xmax, self.ymin\ - , self.ymax, self.noPositionInfo = kkitUtil.setupMeshObj(self.modelRoot) + , self.ymax, self.noPositionInfo = kkitOrdinateUtil.setupMeshObj(self.modelRoot) self.autocoordinates = False if self.srcdesConnection: self.srcdesConnection.clear() else: self.srcdesConnection = {} - kkitUtil.setupItem(self.modelRoot,self.srcdesConnection) - #self.noPositionInfo = False + kkitOrdinateUtil.setupItem(self.modelRoot,self.srcdesConnection) if not self.noPositionInfo: self.autocoordinates = True - kkitUtil.autoCoordinates(self.meshEntry,self.srcdesConnection) + kkitOrdinateUtil.autoCoordinates(self.meshEntry,self.srcdesConnection) self.size = QtCore.QSize(1000 ,550) diff --git a/moosegui/plugins/kkitQGraphics.py b/moosegui/plugins/kkitQGraphics.py index 88051c9..8d8823d 100644 --- a/moosegui/plugins/kkitQGraphics.py +++ b/moosegui/plugins/kkitQGraphics.py @@ -1,41 +1,48 @@ # -*- coding: utf-8 -*- -__author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" -__maintainer__ = "HarshaRani" -__email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Sep 19 2017" - -from PyQt5 import QtGui +__author__ = "HarshaRani" +__credits__ = ["Upi Lab"] +__license__ = "GPL3" +__version__ = "1.0.0" +__maintainer__ = "HarshaRani" +__email__ = "hrani@ncbs.res.in" +__status__ = "Development" +__updated__ = "Sep 19 2017" + +import os + +from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QGraphicsPixmapItem, QGraphicsWidget -from PyQt5.QtWidgets import QGraphicsRectItem +from PyQt5.QtWidgets import QGraphicsRectItem, QGraphicsItem +from PyQt5.QtWidgets import QGraphicsObject, QGraphicsPathItem +from PyQt5.QtWidgets import QGraphicsEllipseItem -from moosegui.plugins.constants import * -import moosegui.config +from moosegui.plugins import constants +from moosegui import config + +import moose -from os import path -from moose import * class KineticsDisplayItem(QGraphicsWidget): """Base class for display elemenets in kinetics layout""" - name = ITEM + + name = constants.ITEM defaultFontName = "Helvetica" defaultFontSize = 10 + qgtextItemSelectedChange = QtCore.pyqtSignal('PyQt_PyObject') + def __init__(self, mooseObject, parent=None): - QtGui.QGraphicsObject.__init__(self,parent) + QGraphicsObject.__init__(self, parent) self.mobj = mooseObject self.gobj = None self.pressed = False - self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable,True) - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) + self.setFlag(QGraphicsItem.ItemIsSelectable, True) + self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setAcceptHoverEvents(True) self.setFocusPolicy(QtCore.Qt.StrongFocus) if QtCore.QT_VERSION >= 0x040600: - self.setFlag(QtGui.QGraphicsItem.ItemSendsGeometryChanges,1) - self.setFlag(QtGui.QGraphicsItem.ItemIgnoresTransformations, False) + self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, 1) + self.setFlag(QGraphicsItem.ItemIgnoresTransformations, False) def getParentMooseObject(self): return moose.element(self.mobj).parent @@ -45,143 +52,132 @@ def getParentGraphicsObject(self): def setDisplayProperties(self, dinfo): self.setGeometry(dinfo.x, dinfo.y) - - def paint(self, painter=None, option=None, widget = None): + + def paint(self, painter=None, option=None, widget=None): #If item is selected if self.hasFocus() or self.isSelected(): - painter.setPen(QtGui.QPen(QtGui.QPen(QtCore.Qt.black, 1.8,Qt.Qt.DashLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin))) + painter.setPen( + QtGui.QPen(QtCore.Qt.black, 1.8, Qt.Qt.DashLine, + Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) painter.drawRect(self.boundingRect()) + # def mouseDoubleClickEvent(self, event): - # self.emit(QtCore.SIGNAL("qgtextDoubleClick(PyQt_PyObject)"),element(self.mobj)) - - def itemChange(self,change,value): + # self.emit(QtCore.SIGNAL("qgtextDoubleClick(PyQt_PyObject)"),moose.element(self.mobj)) + + def itemChange(self, change, value): #pass - #if change == QtGui.QGraphicsItem.ItemPositionChange: - #print "itemChange ---->",self.mobj + #if change == QGraphicsItem.ItemPositionChange: + #print "itemChange ---->",self.mobj # self.emit(QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),self.mobj) - if change == QtGui.QGraphicsItem.ItemSelectedChange and value == True: - self.emit(QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),element(self.mobj)) - return QtGui.QGraphicsItem.itemChange(self,change,value) + if change == QGraphicsItem.ItemSelectedChange and value == True: + self.qgtextPositionChange.emit( moose.element(self.mobj) ) + # self.emit(QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"), + # moose.element(self.mobj)) + return QGraphicsItem.itemChange(self, change, value) + class FuncItem(KineticsDisplayItem): - name = ITEM - """Class for displaying Functions""" + name = constants.ITEM + """Class for displaying Functions""" #fontMetrics = None - font =QtGui.QFont(KineticsDisplayItem.defaultFontName) + font = QtGui.QFont(KineticsDisplayItem.defaultFontName) font.setPointSize(KineticsDisplayItem.defaultFontSize) fontMetrics = QtGui.QFontMetrics(font) + def __init__(self, mobj, parent): super(FuncItem, self).__init__(mobj, parent) - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) - iconmap_file = (path.join(config.settings[config.KEY_ICON_DIR], 'classIcon/Function.png')) - self.funcImage = QtGui.QImage(iconmap_file).scaled(15,33) + self.setFlag(QGraphicsItem.ItemIsMovable, True) + iconmap_file = (os.path.join(config.settings[config.KEY_ICON_DIR], + 'classIcon/Function.png')) + self.funcImage = QtGui.QImage(iconmap_file).scaled(15, 33) self.bg = QGraphicsRectItem(self) self.bg.setAcceptHoverEvents(True) - self.gobj = QtGui.QGraphicsPixmapItem(QtGui.QPixmap.fromImage(self.funcImage),self.bg) + self.gobj = QGraphicsPixmapItem( + QtGui.QPixmap.fromImage(self.funcImage), self.bg) self.gobj.setAcceptHoverEvents(True) self.gobj.mobj = self.mobj - classname = self.mobj.className - funcdoc = (element(self.mobj.path)).expr + funcdoc = (moose.element(self.mobj.path)).expr self.gobj.setToolTip(funcdoc) - #self.bg.setPen(Qt.QColor(100,100,10,10)) - - def setDisplayProperties(self,x,y,textcolor,bgcolor): + + def setDisplayProperties(self, x, y, textcolor, bgcolor): """Set the display properties of this item.""" - #With Respect to BuffPool (as parent which is in old genesis) then function are placed at 0,30 (which is below the BuffPool) - #else if droped from the GUI then placed wrt position - #self.setGeometry(0, 30,self.gobj.boundingRect().width(),self.gobj.boundingRect().height()) - #self.setGeometry(x,y) - poolt = ["ZombieBufPool","BufPool","ZombiePool","Pool"] + poolt = ["ZombieBufPool", "BufPool", "ZombiePool", "Pool"] if self.gobj.mobj.parent.className in poolt: - self.setGeometry(0, 30,self.gobj.boundingRect().width(),self.gobj.boundingRect().height()) + self.setGeometry(0, 30, + self.gobj.boundingRect().width(), + self.gobj.boundingRect().height()) else: - self.setGeometry(x,y,self.gobj.boundingRect().width(),self.gobj.boundingRect().height()) + self.setGeometry(x, y, + self.gobj.boundingRect().width(), + self.gobj.boundingRect().height()) self.bg.setBrush(QtGui.QBrush(bgcolor)) - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable,False) - def refresh(self,scale): - # fontsize = PoolItem.defaultFontsize*scale - # font =QtGui.QFont("Helvetica") - # font.setPointSize(fontsize) - # self.gobj.setFont(font) + self.setFlag(QGraphicsItem.ItemIsMovable, False) + + def refresh(self, scale): pass + def boundingRect(self): ''' reimplimenting boundingRect for redrawning ''' - return QtCore.QRectF(0,0,self.gobj.boundingRect().width(),self.gobj.boundingRect().height()) + return QtCore.QRectF(0, 0, + self.gobj.boundingRect().width(), + self.gobj.boundingRect().height()) def updateSlot(self): - pass - # #This func will adjust the background color with respect to text size - # self.gobj.setText(self.mobj.name) - # self.bg.setRect(0, 0, self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '), self.gobj.boundingRect().height()) - - def updateColor(self,bgcolor): - #self.bg.setBrush(QtGui.QBrush(QtGui.QColor(bgcolor))) - pass + return None + + def updateColor(self, bgcolor): + return None + + def updateRect(self, ratio): + return None - def updateRect(self,ratio): - pass - # width = self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' ') - # height = self.gobj.boundingRect().height() - # adjustw = width*ratio - # adjusth = height*ratio - # self.bgColor.setRect(width/2-abs(adjustw/2),height/2-abs(adjusth/2),adjustw, adjusth) - #self.bg.setRect(0,0,self.gobj.boundingRect().width()*ratio+PoolItem.fontMetrics.width(' '), self.gobj.boundingRect().height()*ratio) def returnColor(self): return (self.bg.brush().color()) - def updateValue(self,gobj): + def updateValue(self, gobj, funcdoc='Not Available'): self.gobj.setToolTip(funcdoc) - # self._gobj = gobj - # #if type(self._gobj) is moose.ZombiePool: - # if (isinstance(self._gobj,PoolBase)): - # self._conc = self.mobj.conc - # self._n = self.mobj.n - # doc = "Conc\t: "+str(self._conc)+"\nn\t: "+str(self._n) - # self.gobj.setToolTip(doc) class PoolItem(KineticsDisplayItem): - name = ITEM + name = constants.ITEM """Class for displaying pools. Uses a QGraphicsSimpleTextItem to - display the name.""" + display the name.""" #fontMetrics = None font = QtGui.QFont(KineticsDisplayItem.defaultFontName) font.setPointSize(KineticsDisplayItem.defaultFontSize) fontMetrics = QtGui.QFontMetrics(font) + def __init__(self, mobj, parent): KineticsDisplayItem.__init__(self, mobj, parent) self.bg = QGraphicsRectItem(self) self.bg.setAcceptHoverEvents(True) self.gobj = QtGui.QGraphicsSimpleTextItem(self.mobj.name, self.bg) self.gobj.mobj = self.mobj - classname = self.mobj.className - # classname = 'PoolBase' - # doc = moose.element('/classes/%s' % (classname)).docs - # print "docs ",self.gobj.mobj, " ",doc - # doc = doc.split('Description:')[-1].split('Name:')[0].strip() self._conc = self.mobj.conc - self._n = self.mobj.n - doc = "Conc\t: "+str(self._conc)+"\nn\t: "+str(self._n) + self._n = self.mobj.n + doc = "Conc\t: " + str(self._conc) + "\nn\t: " + str(self._n) self.gobj.setToolTip(doc) self.gobj.setFont(PoolItem.font) if not PoolItem.fontMetrics: PoolItem.fontMetrics = QtGui.QFontMetrics(self.gobj.font()) - self.bg.setRect(0, - 0, - self.gobj.boundingRect().width() - +PoolItem.fontMetrics.width(' '), - self.gobj.boundingRect().height()) - self.bg.setPen(Qt.QColor(0,0,0,0)) + self.bg.setRect( + 0, 0, + self.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' '), + self.gobj.boundingRect().height()) + self.bg.setPen(Qt.QColor(0, 0, 0, 0)) self.gobj.setPos(PoolItem.fontMetrics.width(' '), 0) - def setDisplayProperties(self,x,y,textcolor,bgcolor): + + def setDisplayProperties(self, x, y, textcolor, bgcolor): """Set the display properties of this item.""" - self.setGeometry(x, y,self.gobj.boundingRect().width() - +PoolItem.fontMetrics.width(''), - self.gobj.boundingRect().height()) + self.setGeometry( + x, y, + self.gobj.boundingRect().width() + PoolItem.fontMetrics.width(''), + self.gobj.boundingRect().height()) self.bg.setBrush(QtGui.QBrush(bgcolor)) - - def refresh(self,scale): - fontsize = KineticsDisplayItem.defaultFontSize*scale + + def refresh(self, scale): + fontsize = KineticsDisplayItem.defaultFontSize * scale font = QtGui.QFont(KineticsDisplayItem.defaultFontName) if (fontsize < 1): fontsize = self.gobj.font().pointSize() @@ -191,331 +187,352 @@ def refresh(self,scale): def boundingRect(self): ''' reimplimenting boundingRect for redrawning ''' - return QtCore.QRectF(0,0,self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '),self.gobj.boundingRect().height()) + return QtCore.QRectF( + 0, 0, + self.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' '), + self.gobj.boundingRect().height()) def updateSlot(self): #This func will adjust the background color with respect to text size self.gobj.setText(self.mobj.name) - self.bg.setRect(0, 0, self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '), self.gobj.boundingRect().height()) - self.setGeometry(self.pos().x(),self.pos().y(),self.gobj.boundingRect().width() - +PoolItem.fontMetrics.width(''), - self.gobj.boundingRect().height()) - def updateColor(self,bgcolor): + self.bg.setRect( + 0, 0, + self.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' '), + self.gobj.boundingRect().height()) + self.setGeometry( + self.pos().x(), + self.pos().y(), + self.gobj.boundingRect().width() + PoolItem.fontMetrics.width(''), + self.gobj.boundingRect().height()) + + def updateColor(self, bgcolor): self.bg.setBrush(QtGui.QBrush(QtGui.QColor(bgcolor))) - #pass - def updateRect(self,ratio=1.0): - width = self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' ') + def updateRect(self, ratio=1.0): + width = self.gobj.boundingRect().width() + PoolItem.fontMetrics.width( + ' ') height = self.gobj.boundingRect().height() - adjustw = width*ratio - adjusth = height*ratio - self.bg.setRect(width/2-abs(adjustw/2),height/2-abs(adjusth/2),adjustw, adjusth) - #self.bg.setRect(0,0,self.gobj.boundingRect().width()*ratio+PoolItem.fontMetrics.width(' '), self.gobj.boundingRect().height()*ratio) - + adjustw = width * ratio + adjusth = height * ratio + self.bg.setRect(width / 2 - abs(adjustw / 2), + height / 2 - abs(adjusth / 2), adjustw, adjusth) + def returnColor(self): return (self.bg.brush().color()) - def updateValue(self,gobj): + def updateValue(self, gobj): self._gobj = gobj - #if type(self._gobj) is moose.ZombiePool: - if (isinstance(self._gobj,PoolBase)): + if (isinstance(self._gobj, moose.PoolBase)): self._conc = self.mobj.conc - self._n = self.mobj.n - doc = "Conc\t: "+str(self._conc)+"\nn\t: "+str(self._n) + self._n = self.mobj.n + doc = "Conc\t: " + str(self._conc) + "\nn\t: " + str(self._n) self.gobj.setToolTip(doc) + class PoolItemCircle(PoolItem): - name = ITEM - def __init__(self,*args,**kwargs): + name = constants.ITEM + + def __init__(self, *args, **kwargs): PoolItem.__init__(self, *args, **kwargs) - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable,True) - self.bgColor = QtGui.QGraphicsEllipseItem(self) - self.bgColor.setFlag(QtGui.QGraphicsItem.ItemStacksBehindParent,True) - self.bgColor.setRect(((self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '))/2)-5,self.gobj.boundingRect().height()/2-5,10,10) - - def setDisplayProperties(self,x,y,textcolor,bgcolor): - self.setGeometry(x, y,self.gobj.boundingRect().width() - +PoolItem.fontMetrics.width(' '), - self.gobj.boundingRect().height()) - self.bgColor.setBrush(QtGui.QBrush(QtGui.QColor(bgcolor.red(),bgcolor.green(),bgcolor.blue(),255))) - - def updateRect(self,ratio): - width = self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' ') + self.setFlag(QGraphicsItem.ItemIsMovable, True) + self.bgColor = QGraphicsEllipseItem(self) + self.bgColor.setFlag(QGraphicsItem.ItemStacksBehindParent, True) + self.bgColor.setRect(((self.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' ')) / 2) - 5, + self.gobj.boundingRect().height() / 2 - 5, 10, 10) + + def setDisplayProperties(self, x, y, textcolor, bgcolor): + self.setGeometry( + x, y, + self.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' '), + self.gobj.boundingRect().height()) + self.bgColor.setBrush( + QtGui.QBrush( + QtGui.QColor(bgcolor.red(), bgcolor.green(), bgcolor.blue(), + 255))) + + def updateRect(self, ratio): + width = self.gobj.boundingRect().width() + PoolItem.fontMetrics.width( + ' ') height = self.gobj.boundingRect().height() - adjustw = width*ratio - adjusth = height*ratio - self.bgColor.setRect(width/2-abs(adjustw/2),height/2-abs(adjusth/2),adjustw, adjusth) + adjustw = width * ratio + adjusth = height * ratio + self.bgColor.setRect(width / 2 - abs(adjustw / 2), + height / 2 - abs(adjusth / 2), adjustw, adjusth) self.updateValue(self.gobj) - + def returnEllispeSize(self): - self.bgColor.setRect(((self.gobj.boundingRect().width()+PoolItem.fontMetrics.width(' '))/2)-5,self.gobj.boundingRect(). - height()/2-5,10,10) - - def refresh(self,scale): - fontsize = KineticsDisplayItem.defaultFontSize*scale - font =QtGui.QFont(KineticsDisplayItem.defaultFontName) + self.bgColor.setRect(((self.gobj.boundingRect().width() + + PoolItem.fontMetrics.width(' ')) / 2) - 5, + self.gobj.boundingRect().height() / 2 - 5, 10, 10) + + def refresh(self, scale): + fontsize = KineticsDisplayItem.defaultFontSize * scale + font = QtGui.QFont(KineticsDisplayItem.defaultFontName) if (fontsize < 1): fontsize = self.gobj.font().pointSize() font.setPointSize(fontsize) - self.gobj.setFont(font) + self.gobj.setFont(font) def MooseRef(self): return self.gobj.mobj + class TableItem(KineticsDisplayItem): defaultWidth = 30 defaultHeight = 30 defaultPenWidth = 2 - name = ITEM + name = constants.ITEM + def __init__(self, *args, **kwargs): KineticsDisplayItem.__init__(self, *args, **kwargs) - points = [QtCore.QPointF(0,TableItem.defaultWidth/2), - QtCore.QPointF(TableItem.defaultHeight/2-2,0), - QtCore.QPointF(TableItem.defaultWidth/2+2,0), - QtCore.QPointF(TableItem.defaultWidth,TableItem.defaultHeight/2), - ] + points = [ + QtCore.QPointF(0, TableItem.defaultWidth / 2), + QtCore.QPointF(TableItem.defaultHeight / 2 - 2, 0), + QtCore.QPointF(TableItem.defaultWidth / 2 + 2, 0), + QtCore.QPointF(TableItem.defaultWidth, + TableItem.defaultHeight / 2), + ] path = QtGui.QPainterPath() path.moveTo(points[0]) for p in points[1:]: path.lineTo(p) path.moveTo(p) - path.moveTo(0,0) - path.lineTo(TableItem.defaultWidth,0) - path.moveTo(-(TableItem.defaultWidth/3),TableItem.defaultHeight/4) - path.lineTo((TableItem.defaultWidth+10),TableItem.defaultHeight/4) + path.moveTo(0, 0) + path.lineTo(TableItem.defaultWidth, 0) + path.moveTo(-(TableItem.defaultWidth / 3), TableItem.defaultHeight / 4) + path.lineTo((TableItem.defaultWidth + 10), TableItem.defaultHeight / 4) - self.gobj = QtGui.QGraphicsPathItem(path, self) + self.gobj = QGraphicsPathItem(path, self) #self.gobj.setToolTip("Need to see what to show unlike conc/nint for pool") - tabledoc = (element(self.mobj.path)).outputValue + tabledoc = (moose.element(self.mobj.path)).outputValue self.gobj.setToolTip(str(tabledoc)) - self.gobj.setPen(QtGui.QPen(QtCore.Qt.black, 2,Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + self.gobj.setPen( + QtGui.QPen(QtCore.Qt.black, 2, Qt.Qt.SolidLine, Qt.Qt.RoundCap, + Qt.Qt.RoundJoin)) self.gobj.mobj = self.mobj - def refresh( self,scale): - defaultWidth = TableItem.defaultWidth*scale - defaultHeight = TableItem.defaultHeight*scale - points = [QtCore.QPointF(0,defaultWidth/2), - QtCore.QPointF(defaultHeight/2-2,0), - QtCore.QPointF(defaultWidth/2+2,0), - QtCore.QPointF(defaultWidth,defaultHeight/2) - ] + def refresh(self, scale): + defaultWidth = TableItem.defaultWidth * scale + defaultHeight = TableItem.defaultHeight * scale + points = [ + QtCore.QPointF(0, defaultWidth / 2), + QtCore.QPointF(defaultHeight / 2 - 2, 0), + QtCore.QPointF(defaultWidth / 2 + 2, 0), + QtCore.QPointF(defaultWidth, defaultHeight / 2) + ] path = QtGui.QPainterPath() path.moveTo(points[0]) for p in points[1:]: path.lineTo(p) path.moveTo(p) - path.moveTo(0,0) - path.lineTo(defaultWidth,0) - path.moveTo(-(defaultWidth/3),defaultHeight/4) - path.lineTo((defaultWidth+10),defaultHeight/4) + path.moveTo(0, 0) + path.lineTo(defaultWidth, 0) + path.moveTo(-(defaultWidth / 3), defaultHeight / 4) + path.lineTo((defaultWidth + 10), defaultHeight / 4) self.gobj.setPath(path) TablePen = self.gobj.pen() - defaultpenwidth = TableItem.defaultPenWidth - tableWidth = TableItem.defaultPenWidth*scale + tableWidth = TableItem.defaultPenWidth * scale TablePen.setWidth(tableWidth) self.gobj.setPen(TablePen) - def setDisplayProperties(self, x,y,textcolor,bgcolor): - #TODO check the table bounding reactangle b'cos selection looks ugly + def setDisplayProperties(self, x, y, textcolor, bgcolor): """Set the display properties of this item.""" - self.setGeometry(x,y, - self.gobj.boundingRect().width(), + # TODO: check the table bounding reactangle b'cos selection looks ugly + self.setGeometry(x, y, + self.gobj.boundingRect().width(), self.gobj.boundingRect().height()) - + + class ReacItem(KineticsDisplayItem): defaultWidth = 30 defaultHeight = 30 defaultPenWidth = 2 - name = ITEM + name = constants.ITEM + def __init__(self, *args, **kwargs): KineticsDisplayItem.__init__(self, *args, **kwargs) - points = [QtCore.QPointF(ReacItem.defaultWidth/4, 0), - QtCore.QPointF(0, ReacItem.defaultHeight/4), - QtCore.QPointF(ReacItem.defaultWidth, ReacItem.defaultHeight/4), - QtCore.QPointF(3*ReacItem.defaultWidth/4, ReacItem.defaultHeight/2)] + points = [ + QtCore.QPointF(ReacItem.defaultWidth / 4, 0), + QtCore.QPointF(0, ReacItem.defaultHeight / 4), + QtCore.QPointF(ReacItem.defaultWidth, ReacItem.defaultHeight / 4), + QtCore.QPointF(3 * ReacItem.defaultWidth / 4, + ReacItem.defaultHeight / 2) + ] path = QtGui.QPainterPath() path.moveTo(points[0]) for p in points[1:]: path.lineTo(p) path.moveTo(p) - self.gobj = QtGui.QGraphicsPathItem(path, self) - self.gobj.setPen(QtGui.QPen(QtCore.Qt.black, 2,Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + self.gobj = QGraphicsPathItem(path, self) + self.gobj.setPen( + QtGui.QPen(QtCore.Qt.black, 2, Qt.Qt.SolidLine, Qt.Qt.RoundCap, + Qt.Qt.RoundJoin)) self.gobj.mobj = self.mobj - #classname = self.mobj.className - # classname = 'ReacBase' - # doc = moose.element('/classes/%s' % (classname)).docs - # print "docs ",self.gobj.mobj, " ",doc - # doc = doc.split('Description:')[-1].split('Name:')[0].strip() self._Kf = self.gobj.mobj.Kf self._Kb = self.gobj.mobj.Kb - doc = "Kf\t: "+str(self._Kf)+"\nKb\t: "+str(self._Kb) + doc = "Kf\t: " + str(self._Kf) + "\nKb\t: " + str(self._Kb) self.gobj.setToolTip(doc) - def updateValue(self,gobj): + def updateValue(self, gobj): self._gobj = gobj - #if ( type(self._gobj) is moose.ZombieReac or type(self_gobj) is moose.Reac): - if (isinstance(self._gobj,ReacBase)): + if (isinstance(self._gobj, moose.ReacBase)): self._Kf = self._gobj.Kf self._Kb = self._gobj.Kb - doc = "Kf\t: "+str(self._Kf)+"\nKb\t: "+str(self._Kb) + doc = "Kf\t: " + str(self._Kf) + "\nKb\t: " + str(self._Kb) self.gobj.setToolTip(doc) - def refresh( self,scale): - defaultWidth = ReacItem.defaultWidth*scale - defaultHeight = ReacItem.defaultHeight*scale - points = [QtCore.QPointF(defaultWidth/4, 0), - QtCore.QPointF(0,defaultHeight/4), - QtCore.QPointF(defaultWidth, defaultHeight/4), - QtCore.QPointF(3*defaultWidth/4,defaultHeight/2)] + def refresh(self, scale): + defaultWidth = ReacItem.defaultWidth * scale + defaultHeight = ReacItem.defaultHeight * scale + points = [ + QtCore.QPointF(defaultWidth / 4, 0), + QtCore.QPointF(0, defaultHeight / 4), + QtCore.QPointF(defaultWidth, defaultHeight / 4), + QtCore.QPointF(3 * defaultWidth / 4, defaultHeight / 2) + ] path = QtGui.QPainterPath() path.moveTo(points[0]) for p in points[1:]: path.lineTo(p) path.moveTo(p) - + self.gobj.setPath(path) ReacPen = self.gobj.pen() defaultpenwidth = ReacItem.defaultPenWidth - reacWidth = defaultpenwidth*scale + reacWidth = defaultpenwidth * scale ReacPen.setWidth(reacWidth) self.gobj.setPen(ReacPen) - def setDisplayProperties(self, x,y,textcolor,bgcolor): + def setDisplayProperties(self, x, y, textcolor, bgcolor): """Set the display properties of this item.""" - self.setGeometry(x,y, - self.gobj.boundingRect().width(), + self.setGeometry(x, y, + self.gobj.boundingRect().width(), self.gobj.boundingRect().height()) + class EnzItem(KineticsDisplayItem): defaultWidth = 20 - defaultHeight = 10 - name = ITEM + defaultHeight = 10 + name = constants.ITEM + def __init__(self, *args, **kwargs): KineticsDisplayItem.__init__(self, *args, **kwargs) - self.gobj = QtGui.QGraphicsEllipseItem(0, 0, - EnzItem.defaultWidth, - EnzItem.defaultHeight, self) + self.gobj = QGraphicsEllipseItem(0, 0, EnzItem.defaultWidth, + EnzItem.defaultHeight, self) self.gobj.mobj = self.mobj - # classname = 'EnzBase' - # doc = moose.element('/classes/%s' % (classname)).docs - # doc = doc.split('Description:')[-1].split('Name:')[0].strip() - self._Km = self.gobj.mobj.Km + self._Km = self.gobj.mobj.Km self._Kcat = self.gobj.mobj.kcat - doc = "Km\t: "+str(self._Km)+"\nKcat\t: "+str(self._Kcat) + doc = "Km\t: " + str(self._Km) + "\nKcat\t: " + str(self._Kcat) self.gobj.setToolTip(doc) - def updateValue(self,gobj): + def updateValue(self, gobj): self._gobj = gobj - if ( isinstance(self.gobj,EnzBase)): + if (isinstance(self.gobj, moose.EnzBase)): self._Km = self._gobj.Km self._Kcat = self._gobj.kcat - doc = "Km\t: "+str(self._Km)+"\nKcat\t: "+str(self._Kcat) + doc = "Km\t: " + str(self._Km) + "\nKcat\t: " + str(self._Kcat) self.gobj.setToolTip(doc) - def updateColor(self,bgcolor): - self.gobj.setBrush(QtGui.QBrush(QtGui.QColor(bgcolor))) + def updateColor(self, bgcolor): + self.gobj.setBrush(QtGui.QBrush(QtGui.QColor(bgcolor))) - def setDisplayProperties(self,x,y,textcolor,bgcolor): + def setDisplayProperties(self, x, y, textcolor, bgcolor): """Set the display properties of this item.""" - self.setGeometry(x,y, - self.gobj.boundingRect().width(), - self.gobj.boundingRect().height()) + self.setGeometry(x, y, + self.gobj.boundingRect().width(), + self.gobj.boundingRect().height()) self.gobj.setBrush(QtGui.QBrush(bgcolor)) - def refresh(self,scale): - defaultWidth = EnzItem.defaultWidth*scale - defaultHeight = EnzItem.defaultHeight*scale - self.gobj.setRect(0,0,defaultWidth,defaultHeight) + def refresh(self, scale): + defaultWidth = EnzItem.defaultWidth * scale + defaultHeight = EnzItem.defaultHeight * scale + self.gobj.setRect(0, 0, defaultWidth, defaultHeight) + class MMEnzItem(EnzItem): - name = ITEM - def __init__(self,*args, **kwargs): - EnzItem.__init__(self,*args, **kwargs) + name = constants.ITEM + + def __init__(self, *args, **kwargs): + EnzItem.__init__(self, *args, **kwargs) + class CplxItem(KineticsDisplayItem): defaultWidth = 10 defaultHeight = 10 - name = ITEM + name = constants.ITEM + def __init__(self, *args, **kwargs): KineticsDisplayItem.__init__(self, *args, **kwargs) - self.gobj = QGraphicsRectItem(0,0, CplxItem.defaultWidth, CplxItem.defaultHeight, self) + self.gobj = QGraphicsRectItem(0, 0, CplxItem.defaultWidth, + CplxItem.defaultHeight, self) self.gobj.mobj = self.mobj self._conc = self.mobj.conc - self._n = self.mobj.n - doc = "Conc\t: "+str(self._conc)+"\nn\t: "+str(self._n) + self._n = self.mobj.n + doc = "Conc\t: " + str(self._conc) + "\nn\t: " + str(self._n) self.gobj.setToolTip(doc) - def updateValue(self,gobj): + def updateValue(self, gobj): self._gobj = gobj - if (isinstance(self._gobj,PoolBase)): + if (isinstance(self._gobj, moose.PoolBase)): self._conc = self.mobj.conc - self._n = self.mobj.n - doc = "Conc\t: "+str(self._conc)+"\nn\t: "+str(self._n) + self._n = self.mobj.n + doc = "Conc\t: " + str(self._conc) + "\nn\t: " + str(self._n) self.gobj.setToolTip(doc) - def setDisplayProperties(self,x,y,textcolor,bgcolor): + def setDisplayProperties(self, x, y, textcolor, bgcolor): """Set the display properties of this item.""" - self.setGeometry(self.gobj.boundingRect().width()/2,self.gobj.boundingRect().height(), - self.gobj.boundingRect().width(), + self.setGeometry(self.gobj.boundingRect().width() / 2, + self.gobj.boundingRect().height(), + self.gobj.boundingRect().width(), self.gobj.boundingRect().height()) - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable,False) + self.setFlag(QGraphicsItem.ItemIsMovable, False) + + def refresh(self, scale): + defaultWidth = CplxItem.defaultWidth * scale + defaultHeight = CplxItem.defaultHeight * scale + + self.gobj.setRect(0, 0, defaultWidth, defaultHeight) - def refresh(self,scale): - defaultWidth = CplxItem.defaultWidth*scale - defaultHeight = CplxItem.defaultHeight*scale - - self.gobj.setRect(0,0,defaultWidth,defaultHeight) class GRPItem(QGraphicsRectItem): #This is used for displaying Grp Item - name = GROUP - def __init__(self,parent,x,y,w,h,item): - self.grpEmitter = QtCore.QObject() - QGraphicsRectItem.__init__(self,x,y,w,h,parent) + name = constants.GROUP + + def __init__(self, parent, x, y, w, h, item): + QGraphicsRectItem.__init__(self, x, y, w, h, parent) self.mobj = item - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True); - self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable) + self.setFlag(QGraphicsItem.ItemIsMovable, True) + self.setFlag(QGraphicsItem.ItemIsSelectable) self.setAcceptHoverEvents(True) self.setToolTip(self.mobj.name) - QT_VERSION = str(QtCore.QT_VERSION_STR).split('.') - QT_MINOR_VERSION = int(QT_VERSION[1]) if config.QT_MINOR_VERSION >= 6: - self.setFlag(QtGui.QGraphicsItem.ItemSendsGeometryChanges, 1) - - # def paint(self, painter=None, option=None, widget = None): - # print " self .hasFocus ",self.hasFocus(), " ## ",self.isSelected() - - # if self.isSelected(): - # drawFocus(painter) - # #painter.setPen(QtGui.QPen(QtGui.QPen(QtCore.Qt.black, 1.8,Qt.Qt.DashLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin))) - # #painter.drawRect(self.boundingRect()) - - # def drawFocusRect(self, painter): - # self.focusbrush = QtGui.QBrush() - # self.focuspen = QtGui.QPen(QtCore.Qt.DotLine) - # self.focuspen.setColor(QtCore.Qt.black) - # self.focuspen.setWidthF(1.5) - # painter.setBrush(self.focusbrush) - # painter.setPen(self.focuspen) - # painter.drawRect(self.focusrect) - - def itemChange(self,change,value): - #print " itemchange at GRPItem ",change,value - if change == QtGui.QGraphicsItem.ItemPositionChange: - self.grpEmitter.emit(QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),self.mobj) - #if change == QtGui.QGraphicsItem. - if change == QtGui.QGraphicsItem.ItemSelectedChange and value == True: - #self.setPen(QtGui.QPen(QtGui.QPen(QtCore.Qt.black, 1.8,Qt.Qt.DashLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin))) - #self.drawRect(self.boundingRect()) - self.grpEmitter.emit(QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),self.mobj) - - return QtGui.QGraphicsItem.itemChange(self,change,value) + self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, 1) + + def itemChange(self, change, value): + if change == QGraphicsItem.ItemPositionChange: + self.qgtextItemSelectedChange.emit(self.mobj) + # self.grpEmitter.emit( + # QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"), + # self.mobj) + if change == QGraphicsItem.ItemSelectedChange and value == True: + self.qgtextItemSelectedChange.emit(self.mobj) + # self.grpEmitter.emit( + # QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"), + # self.mobj) + + return QGraphicsItem.itemChange(self, change, value) + class ComptItem(QGraphicsRectItem): - name = COMPARTMENT - def __init__(self,parent,x,y,w,h,item): + name = constants.COMPARTMENT + + def __init__(self, parent, x, y, w, h, item): self.cmptEmitter = QtCore.QObject() iParent = item ''' @@ -535,18 +552,19 @@ def __init__(self,parent,x,y,w,h,item): else: self.mobj = iParent self.layoutWidgetPt = parent - QGraphicsRectItem.__init__(self,x,y,w,h) + QGraphicsRectItem.__init__(self, x, y, w, h) - self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True); - self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable) - #self.setFlag(QtGui.QGraphicsItem.ItemSendsGeometryChanges, 1) + self.setFlag(QGraphicsItem.ItemIsMovable, True) + self.setFlag(QGraphicsItem.ItemIsSelectable) + #self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, 1) QT_VERSION = str(QtCore.QT_VERSION_STR).split('.') QT_MINOR_VERSION = int(QT_VERSION[1]) if QT_MINOR_VERSION >= 6: - #if config.QT_MINOR_VERSION >= 6: - self.setFlag(QtGui.QGraphicsItem.ItemSendsGeometryChanges, 1) + #if config.QT_MINOR_VERSION >= 6: + self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, 1) self.setAcceptHoverEvents(True) self.setToolTip(iParent.name) + ''' def hoverEnterEvent(self, event): self.updateResizeHandles() @@ -680,38 +698,43 @@ def paint(self, painter, option, widget): painter.drawRect(self.bottomLeft) painter.drawRect(self.bottomRight) ''' + def pointerLayoutpt(self): return (self.layoutWidgetPt) # def mouseDoubleClickEvent(self, event): - # self.cmptEmitter.emit(QtCore.SIGNAL("qgtextDoubleClick(PyQt_PyObject)"),element(self.mooseObj_)) - - def itemChange(self,change,value): - if change == QtGui.QGraphicsItem.ItemPositionChange: - self.cmptEmitter.emit(QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"),self.mobj) - if change == QtGui.QGraphicsItem.ItemSelectedChange and value == True: - self.cmptEmitter.emit(QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"),self.mobj) - return QtGui.QGraphicsItem.itemChange(self,change,value) + # self.cmptEmitter.emit(QtCore.SIGNAL("qgtextDoubleClick(PyQt_PyObject)"),moose.element(self.mooseObj_)) + + def itemChange(self, change, value): + if change == QGraphicsItem.ItemPositionChange: + self.cmptEmitter.emit( + QtCore.SIGNAL("qgtextPositionChange(PyQt_PyObject)"), + self.mobj) + if change == QGraphicsItem.ItemSelectedChange and value == True: + self.qgtextPositionChange.emit(self.mobj) + # self.cmptEmitter.emit( + # QtCore.SIGNAL("qgtextItemSelectedChange(PyQt_PyObject)"), + # self.mobj) + return QGraphicsItem.itemChange(self, change, value) if __name__ == '__main__': - app = QtGui.QApplication(sys.argv) + import sys + from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene + app = QApplication(sys.argv) a = moose.Pool('pool') b = moose.Reac('reac') c = moose.Enz('enzyme') - gview = QtGui.QGraphicsView() - scene = QtGui.QGraphicsScene(gview) - #item = PoolItem(a) - #dinfo = (5, 5, QtGui.QColor('red'), QtGui.QColor('blue')) - #item.setDisplayProperties(dinfo) + gview = QGraphicsView() + scene = QGraphicsScene(gview) reacItem = ReacItem(b) - reacItem.setDisplayProperties(50, 5, QtGui.QColor('yellow'), QtGui.QColor('green')) + reacItem.setDisplayProperties(50, 5, QtGui.QColor('yellow'), + QtGui.QColor('green')) enzItem = EnzItem(c) - enzItem.setDisplayProperties(100, 10, QtGui.QColor('blue'), QtGui.QColor('yellow')) - #scene.addItem(item) + enzItem.setDisplayProperties(100, 10, QtGui.QColor('blue'), + QtGui.QColor('yellow')) scene.addItem(reacItem) scene.addItem(enzItem) gview.setScene(scene) - #print 'Position', reacItem.pos() gview.show() sys.exit(app.exec_()) From 27a687ca4b6e6940f618424d5a93cc7af645f6cf Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 20:07:41 +0530 Subject: [PATCH 61/66] Icons are back. --- moosegui/config.py | 3 + moosegui/plugins/buildkkit.py | 6 +- moosegui/plugins/kkit.py | 744 ++++++++++++++++------------ moosegui/plugins/kkitViewcontrol.py | 1 + 4 files changed, 432 insertions(+), 322 deletions(-) diff --git a/moosegui/config.py b/moosegui/config.py index 8182eac..cafe429 100644 --- a/moosegui/config.py +++ b/moosegui/config.py @@ -58,8 +58,11 @@ MOOSE_DOCS_DIR = '/usr/share/doc/moose' MOOSE_GUI_DIR = os.path.dirname(os.path.abspath(__file__)) +assert os.path.exists(MOOSE_GUI_DIR) MOOSE_PLUGIN_DIR = os.path.join(MOOSE_GUI_DIR, 'plugins') +assert os.path.exists(MOOSE_PLUGIN_DIR) MOOSE_ICON_DIR = os.path.join(MOOSE_GUI_DIR, 'icons' ) +assert os.path.exists(MOOSE_ICON_DIR) NEUROKIT_PLUGIN_DIR = os.path.join(MOOSE_GUI_DIR, 'plugins/NeuroKit') MOOSE_NUMPTHREADS = '1' diff --git a/moosegui/plugins/buildkkit.py b/moosegui/plugins/buildkkit.py index 0c1e760..813a1f6 100644 --- a/moosegui/plugins/buildkkit.py +++ b/moosegui/plugins/buildkkit.py @@ -1,8 +1,9 @@ +# -*- coding: utf-8 -*- + import sys import os import math import re -import config import pickle import posixpath @@ -12,9 +13,10 @@ import networkx as nx import numpy as np +from moosegui import config from moosegui.plugins.default import * from moosegui.plugins.kkitUtil import * -from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem,EnzItem,CplxItem,ComptItem +from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem from moosegui.plugins.kkitViewcontrol import * from moosegui.plugins.kkitCalcArrow import * from moosegui.plugins.kkitOrdinateUtil import * diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index cc1cb6f..ed38270 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- -__author__ = "HarshaRani" -__credits__ = ["Upi Lab"] -__license__ = "GPL3" -__version__ = "1.0.0" -__maintainer__ = "HarshaRani" -__email__ = "hrani@ncbs.res.in" -__status__ = "Development" -__updated__ = "Feb 22 2019" +__author__ = "HarshaRani" +__credits__ = ["Upi Lab"] +__license__ = "GPL3" +__version__ = "1.0.0" +__maintainer__ = "HarshaRani" +__email__ = "hrani@ncbs.res.in" +__status__ = "Development" +__updated__ = "Feb 22 2019" import os import sys @@ -27,12 +27,13 @@ from moosegui.plugins.default import MoosePlugin, MooseEditorView, RunView from moosegui.plugins import kkitUtil, kkitOrdinateUtil from moosegui.plugins import kkitQGraphics -from moosegui.plugins import kkitViewcontrol +from moosegui.plugins import kkitViewcontrol from moosegui.PlotWidgetContainer import PlotWidgetContainer # moose import moose + class KkitPlugin(MoosePlugin): """ Default plugin for MOOSE GUI @@ -43,23 +44,24 @@ def __init__(self, *args): self.view = None self.fileinsertMenu = QMenu('&File') - if not hasattr(self,'SaveModelAction'): + if not hasattr(self, 'SaveModelAction'): #self.fileinsertMenu.addSeparator() self.saveModelAction = QAction('Save', self) - self.saveModelAction.setShortcut( "Ctrl+S" ) + self.saveModelAction.setShortcut("Ctrl+S") self.saveModelAction.triggered.connect(self.SaveModelDialogSlot) self.fileinsertMenu.addAction(self.saveModelAction) self._menus.append(self.fileinsertMenu) self.getEditorView() - + def SaveModelDialogSlot(self): - + dirpath = "" if not dirpath: dirpath = os.path.expanduser("~") - filters = {'SBML(*.xml)': 'SBML','Genesis(*.g)':'Genesis'} - filename,filter_ = QFileDialog.getSaveFileNameAndFilter(None,'Save File',dirpath,"SBML(*.xml);;Genesis(*.g)") + filters = {'SBML(*.xml)': 'SBML', 'Genesis(*.g)': 'Genesis'} + filename, filter_ = QFileDialog.getSaveFileNameAndFilter( + None, 'Save File', dirpath, "SBML(*.xml);;Genesis(*.g)") if str(filename).rfind('.') != -1: filename = filename[:str(filename).rfind('.')] @@ -68,40 +70,62 @@ def SaveModelDialogSlot(self): if filters[str(filter_)] == 'SBML': self.coOrdinates = {} self.plugin = KkitEditorView(self).getCentralWidget().plugin - self.coOrdinates = KkitEditorView(self).getCentralWidget().getsceneCord() + self.coOrdinates = KkitEditorView( + self).getCentralWidget().getsceneCord() #writeerror = moose.writeSBML(self.modelRoot,str(filename),self.coOrdinates) writeerror = -2 writtentofile = "/test.xml" - writeerror,consistencyMessages,writtentofile = moose.SBML.mooseWriteSBML(self.modelRoot,str(filename),self.coOrdinates) + writeerror, consistencyMessages, writtentofile = moose.SBML.mooseWriteSBML( + self.modelRoot, str(filename), self.coOrdinates) if writeerror == -2: - QtGui.QMessageBox.warning(None,'Could not save the Model',consistencyMessages) + QtGui.QMessageBox.warning(None, 'Could not save the Model', + consistencyMessages) elif writeerror == -1: - QtGui.QMessageBox.warning(None,'Could not save the Model','\n This model is not valid SBML Model, failed in the consistency check') + QtGui.QMessageBox.warning( + None, 'Could not save the Model', + '\n This model is not valid SBML Model, failed in the consistency check' + ) elif writeerror == 1: - QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.xml'),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, 'Saved the Model', + '\n File saved to \'{filename}\''.format( + filename=filename + '.xml'), QtGui.QMessageBox.Ok) elif writeerror == 0: - QtGui.QMessageBox.information(None,'Could not save the Model','\nThe filename could not be opened for writing') + QtGui.QMessageBox.information( + None, 'Could not save the Model', + '\nThe filename could not be opened for writing') elif filters[str(filter_)] == 'Genesis': - moose.Annotator(self.modelRoot+'/info') + moose.Annotator(self.modelRoot + '/info') self.coOrdinates = {} ss = KkitEditorView(self).getCentralWidget().mooseId_GObj - for k,v in ss.items(): - if moose.exists(moose.element(k).path+'/info'): - annoInfo = moose.Annotator(k.path+'/info') + for k, v in ss.items(): + if moose.exists(moose.element(k).path + '/info'): + annoInfo = moose.Annotator(k.path + '/info') x = annoInfo.x * 10 y = -annoInfo.y * 10 - self.coOrdinates[k] = {'x':x, 'y':y} + self.coOrdinates[k] = {'x': x, 'y': y} - error,written = moose.mooseWriteKkit(self.modelRoot,str(filename),self.coOrdinates) + error, written = moose.mooseWriteKkit(self.modelRoot, + str(filename), + self.coOrdinates) if written == False: - QtGui.QMessageBox.information(None,'Could not save the Model','\nCheck the file') + QtGui.QMessageBox.information(None, + 'Could not save the Model', + '\nCheck the file') else: if error == "": - QtGui.QMessageBox.information(None,'Saved the Model','\n File saved to \'{filename}\''.format(filename =filename+'.g'),QtGui.QMessageBox.Ok) + QtGui.QMessageBox.information( + None, 'Saved the Model', + '\n File saved to \'{filename}\''.format( + filename=filename + '.g'), + QtGui.QMessageBox.Ok) else: - QtGui.QMessageBox.information(None,'Saved the Model but ...','{error}'.format(error=error),QtGui.QMessageBox.Ok) - + QtGui.QMessageBox.information( + None, 'Saved the Model but ...', + '{error}'.format(error=error), + QtGui.QMessageBox.Ok) + def getPreviousPlugin(self): return None @@ -120,7 +144,8 @@ def getCurrentView(self): def getEditorView(self): if not hasattr(self, 'editorView'): self.editorView = KkitEditorView(self) - self.editorView.getCentralWidget().editObject.connect(self.mainWindow.objectEditSlot) + self.editorView.getCentralWidget().editObject.connect( + self.mainWindow.objectEditSlot) self.currentView = self.editorView return self.editorView @@ -140,15 +165,15 @@ def getRunView(self): self._kkitWidget = self.view.plugin.getEditorView().getCentralWidget() self.runView = KkitRunView(self, self._kkitWidget) self.currentRunView = self.ruAnotherKkitRunViewnView.getCentralWidget() - graphView.layout().addWidget(self.currentRunView,0,0,2,1) + graphView.layout().addWidget(self.currentRunView, 0, 0, 2, 1) return self.view -class AnotherKkitRunView(RunView): - def __init__(self, modelRoot, plugin,*args): +class AnotherKkitRunView(RunView): + def __init__(self, modelRoot, plugin, *args): RunView.__init__(self, modelRoot, plugin, *args) self.modelRoot = modelRoot - self.plugin = plugin + self.plugin = plugin self.schedular = None def setSolverFromSettings(self, chemicalSettings): @@ -157,18 +182,24 @@ def setSolverFromSettings(self, chemicalSettings): def createCentralWidget(self): self._centralWidget = RunWidget.RunWidget(self.modelRoot) - self.kkitRunView = KkitRunView(self.plugin) + self.kkitRunView = KkitRunView(self.plugin) self.plotWidgetContainer = PlotWidgetContainer(self.modelRoot) - self._centralWidget.setChildWidget(self.kkitRunView.getCentralWidget(), False, 0, 0, 1, 1) - self._centralWidget.setChildWidget(self.plotWidgetContainer, False, 0, 1, 1, 2) + self._centralWidget.setChildWidget(self.kkitRunView.getCentralWidget(), + False, 0, 0, 1, 1) + self._centralWidget.setChildWidget(self.plotWidgetContainer, False, 0, + 1, 1, 2) self._centralWidget.setPlotWidgetContainer(self.plotWidgetContainer) self.schedular = self.getSchedulingDockWidget().widget() - self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().updateValue) - self.schedular.runner.simulationProgressed.connect(self.kkitRunView.getCentralWidget().changeBgSize) - self.schedular.runner.simulationReset.connect(self.kkitRunView.getCentralWidget().resetColor) - self.schedular.preferences.applyChemicalSettings.connect(self.setSolverFromSettings) - compt = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') - ann = moose.Annotator(self.modelRoot+'/info') + self.schedular.runner.simulationProgressed.connect( + self.kkitRunView.getCentralWidget().updateValue) + self.schedular.runner.simulationProgressed.connect( + self.kkitRunView.getCentralWidget().changeBgSize) + self.schedular.runner.simulationReset.connect( + self.kkitRunView.getCentralWidget().resetColor) + self.schedular.preferences.applyChemicalSettings.connect( + self.setSolverFromSettings) + compt = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') + ann = moose.Annotator(self.modelRoot + '/info') if compt: #self.runTime = (moose.Annotator(self.modelRoot+'/info')).runtime #solver = (moose.Annotator(self.modelRoot+'/info')).solver @@ -198,13 +229,15 @@ def createCentralWidget(self): self.schedular.preferences.setChemicalPreferences() return self._centralWidget - def setSolver(self, modelRoot,solver = None): + def setSolver(self, modelRoot, solver=None): if solver == None: - reinit = moose.mooseAddChemSolver(modelRoot,self.getSchedulingDockWidget().widget().solver) + reinit = moose.mooseAddChemSolver( + modelRoot, + self.getSchedulingDockWidget().widget().solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() else: - reinit = moose.mooseAddChemSolver(modelRoot,solver) + reinit = moose.mooseAddChemSolver(modelRoot, solver) if reinit: self.getSchedulingDockWidget().widget().resetSimulation() @@ -239,7 +272,8 @@ def getCentralWidget(self): self._centralWidget.setModelRoot(self.plugin.modelRoot) return self._centralWidget -class KineticsWidget(mplugin.EditorWidgetBase): + +class KineticsWidget(mplugin.EditorWidgetBase): def __init__(self, plugin, *args): mplugin.EditorWidgetBase.__init__(self, *args) self.plugin = plugin @@ -249,51 +283,50 @@ def __init__(self, plugin, *args): self.arrowsize = 2 self.reset() - self.defaultSceneheight = 1#800#1000 - self.defaultScenewidth = 1#000#2400 - self.positionInfoExist = True - self.defaultComptsize = 5 - self.srcdesConnection = {} - self.meshEntry = {} - self.mooseId_GObj = {} - self.qGraCompt = {} - self.qGraGrp = {} - self.xyCord = {} - self.editor = None - + self.defaultSceneheight = 1 #800#1000 + self.defaultScenewidth = 1 #000#2400 + self.positionInfoExist = True + self.defaultComptsize = 5 + self.srcdesConnection = {} + self.meshEntry = {} + self.mooseId_GObj = {} + self.qGraCompt = {} + self.qGraGrp = {} + self.xyCord = {} + self.editor = None + def reset(self): self.createdItem = {} #This are created at drawLine self.lineItem_dict = {} self.itemignoreZooming = False - if hasattr(self,'sceneContainer'): + if hasattr(self, 'sceneContainer'): self.sceneContainer.clear() self.sceneContainer = QGraphicsScene(self) self.sceneContainer.setItemIndexMethod(QGraphicsScene.NoIndex) - self.sceneContainer.setBackgroundBrush(QColor(230,220,219,120)) - + self.sceneContainer.setBackgroundBrush(QColor(230, 220, 219, 120)) + def getsceneCord(self): self.cord = {} self.view.setRefWidget("runView") for item in self.sceneContainer.items(): if isinstance(item, kkitQGraphics.KineticsDisplayItem): - self.cord[item.mobj] = {'x':item.scenePos().x(),'y':item.scenePos().y()} + self.cord[item.mobj] = { + 'x': item.scenePos().x(), + 'y': item.scenePos().y() + } return self.cord def updateModelView(self): self.getMooseObj() if not self.m: - # At the time of model building - # when we want an empty GraphicView while creating new model, - # then remove all the view and add an empty view if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) - self.view = kkitViewcontrol.GraphicalView(self.modelRoot - , self.sceneContainer - , self.border - , self - , self.createdItem) + self.view = kkitViewcontrol.GraphicalView(self.modelRoot, + self.sceneContainer, + self.border, self, + self.createdItem) if isinstance(self, kineticEditorWidget): self.view.setRefWidget("editorView") @@ -304,15 +337,15 @@ def updateModelView(self): self.view.dropped.connect(self.objectEditSlot) hLayout = QGridLayout(self) self.setLayout(hLayout) - hLayout.addWidget(self.view,0,0) + hLayout.addWidget(self.view, 0, 0) else: if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) - self.view = kkitViewcontrol.GraphicalView(self.modelRoot - , self.sceneContainer - , self.border,self - , self.createdItem) - if isinstance(self,kineticEditorWidget): + self.view = kkitViewcontrol.GraphicalView(self.modelRoot, + self.sceneContainer, + self.border, self, + self.createdItem) + if isinstance(self, kineticEditorWidget): #self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow() @@ -327,14 +360,15 @@ def updateModelView(self): hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view) - self.view.fitInView(self.sceneContainer.itemsBoundingRect().x()-10 - , self.sceneContainer.itemsBoundingRect().y()-10 - , self.sceneContainer.itemsBoundingRect().width()+20 - , self.sceneContainer.itemsBoundingRect().height()+20 - , Qt.Qt.IgnoreAspectRatio) + self.view.fitInView( + self.sceneContainer.itemsBoundingRect().x() - 10, + self.sceneContainer.itemsBoundingRect().y() - 10, + self.sceneContainer.itemsBoundingRect().width() + 20, + self.sceneContainer.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) def getMooseObj(self): - self.m = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + self.m = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') if self.m: self.srcdesConnection = {} if self.meshEntry: @@ -348,16 +382,17 @@ def getMooseObj(self): self.srcdesConnection.clear() else: self.srcdesConnection = {} - - kkitOrdinateUtil.setupItem(self.modelRoot,self.srcdesConnection) + + kkitOrdinateUtil.setupItem(self.modelRoot, self.srcdesConnection) if not self.noPositionInfo: self.autocoordinates = True - kkitOrdinateUtil.autoCoordinates(self.meshEntry,self.srcdesConnection) - - self.size = QtCore.QSize(1000 ,550) + kkitOrdinateUtil.autoCoordinates(self.meshEntry, + self.srcdesConnection) + + self.size = QtCore.QSize(1000, 550) def sizeHint(self): - return QtCore.QSize(800,400) + return QtCore.QSize(800, 400) def updateItemSlot(self, mooseObject): for item in self.sceneContainer.items(): @@ -370,23 +405,21 @@ def updateItemSlot(self, mooseObject): self.positionChange(mooseObject) self.view.removeConnector() self.view.showConnector(item) - - def updateColorSlot(self,mooseObject, colour): + + def updateColorSlot(self, mooseObject, colour): #Color slot for changing background color for Pool,Enz and group from objecteditor - anninfo = moose.Annotator(mooseObject.path+'/info') - textcolor,bgcolor = kkitUtil.getColor(anninfo) + anninfo = moose.Annotator(mooseObject.path + '/info') + textcolor, bgcolor = kkitUtil.getColor(anninfo) anninfo.color = str(colour.name()) - + if mooseObject.className == "Neutral": item = self.qGraGrp[mooseObject] - item.setPen( - QtGui.QPen( QtGui.QColor(colour) - , item.pen().width() - , item.pen().style() - , item.pen().capStyle() - , item.pen().joinStyle() - ) - ) + item.setPen( + QtGui.QPen(QtGui.QColor(colour), + item.pen().width(), + item.pen().style(), + item.pen().capStyle(), + item.pen().joinStyle())) elif (isinstance(mooseObject, moose.PoolBase) \ or isinstance(mooseObject, moose.EnzBase) ): @@ -396,8 +429,8 @@ def updateColorSlot(self,mooseObject, colour): def mooseObjOntoscene(self): # All the compartments are put first on to the scene \ # Need to do: Check With upi if empty compartments exist - self.qGraCompt = {} - self.qGraGrp = {} + self.qGraCompt = {} + self.qGraGrp = {} self.mooseId_GObj = {} if self.qGraCompt: self.qGraCompt.clear() @@ -408,7 +441,7 @@ def mooseObjOntoscene(self): self.qGraGrp.clear() else: self.qGraGrp = {} - + if self.qGraGrp: self.qGraGrp.clear() else: @@ -418,27 +451,30 @@ def mooseObjOntoscene(self): self.mooseId_GObj.clear() else: self.mooseId_GObj = {} - for k,v in self.objPar.items(): - if isinstance(moose.element(k),moose.ChemCompt): + for k, v in self.objPar.items(): + if isinstance(moose.element(k), moose.ChemCompt): self.createCompt(k) self.qGraCompt[k] - + elif isinstance(moose.element(k), moose.Neutral): if len(self.meshEntry[k]): if isinstance(moose.element(v), moose.ChemCompt): group_parent = self.qGraCompt[v] elif isinstance(moose.element(v), moose.Neutral): group_parent = self.qGraGrp[v] - self.createGroup(k,group_parent) - - for cmpt_grp,memb in self.meshEntry.items(): + self.createGroup(k, group_parent) + + for cmpt_grp, memb in self.meshEntry.items(): if len(memb): - if isinstance(moose.element(cmpt_grp),moose.ChemCompt): + if isinstance(moose.element(cmpt_grp), moose.ChemCompt): qtGrpparent = self.qGraCompt[cmpt_grp] elif isinstance(moose.element(cmpt_grp), moose.Neutral): qtGrpparent = self.qGraGrp[cmpt_grp] - for mclass in ["enzyme","pool","reaction","cplx","function","stimTab"]: - self.mObjontoscene(memb,mclass,qtGrpparent) + for mclass in [ + "enzyme", "pool", "reaction", "cplx", "function", + "stimTab" + ]: + self.mObjontoscene(memb, mclass, qtGrpparent) self.groupChildrenBoundingRect() # compartment's rectangle size is calculated depending on children @@ -451,117 +487,121 @@ def mObjontoscene(self, memb, mclass, qtGrpparent): pass else: for mObj in memb[mclass]: - minfo = mObj.path+'/info' - if mObj.className in['Enz',"ZombieEnz"]: + minfo = mObj.path + '/info' + if mObj.className in ['Enz', "ZombieEnz"]: mItem = kkitQGraphics.EnzItem(mObj, qtGrpparent) - - elif mObj.className in['MMenz',"ZombieMMenz"]: + + elif mObj.className in ['MMenz', "ZombieMMenz"]: mItem = kkitQGraphics.MMEnzItem(mObj, qtGrpparent) - - elif isinstance (moose.element(mObj),moose.PoolBase) and mclass != "cplx": + + elif isinstance(moose.element(mObj), + moose.PoolBase) and mclass != "cplx": # depending on Editor Widget or Run widget pool will be # created a PoolItem or PoolItemCircle - mItem = self.makePoolItem(mObj,qtGrpparent) + mItem = self.makePoolItem(mObj, qtGrpparent) + + elif isinstance(moose.element(mObj), moose.ReacBase): + mItem = kkitQGraphics.ReacItem(mObj, qtGrpparent) - elif isinstance (moose.element(mObj), moose.ReacBase): - mItem = kkitQGraphics.ReacItem(mObj,qtGrpparent) - elif mclass == "cplx": - minfo = (mObj.parent).path+'/info' - mItem = kkitQGraphics.CplxItem(mObj,self.mooseId_GObj[moose.element(mObj).parent]) + minfo = (mObj.parent).path + '/info' + mItem = kkitQGraphics.CplxItem( + mObj, self.mooseId_GObj[moose.element(mObj).parent]) self.mooseId_GObj[moose.element(mObj.getId())] = mItem - + elif mclass == "function": - if isinstance(moose.element(mObj.parent),moose.PoolBase): - minfo = moose.element(mObj).path+'/info' + if isinstance(moose.element(mObj.parent), moose.PoolBase): + minfo = moose.element(mObj).path + '/info' moose.Annotator(minfo) - qtGrpparent = self.mooseId_GObj[moose.element(mObj.parent)] - mItem = kkitQGraphics.FuncItem(mObj,qtGrpparent) - + qtGrpparent = self.mooseId_GObj[moose.element( + mObj.parent)] + mItem = kkitQGraphics.FuncItem(mObj, qtGrpparent) + elif mclass == "stimTab": - minfo = mObj.path+'/info' - mItem = kkitQGraphics.TableItem(mObj,qtGrpparent) + minfo = mObj.path + '/info' + mItem = kkitQGraphics.TableItem(mObj, qtGrpparent) self.mooseId_GObj[moose.element(mObj.getId())] = mItem - self.setupDisplay(minfo,mItem,mclass) - - def createGroup(self,key,parent): - self.new_GRP = kkitQGraphics.GRPItem(parent,0,0,0,0,key) + self.setupDisplay(minfo, mItem, mclass) + + def createGroup(self, key, parent): + self.new_GRP = kkitQGraphics.GRPItem(parent, 0, 0, 0, 0, key) self.qGraGrp[key] = self.new_GRP - self.new_GRP.setRect(20,20,20,20) + self.new_GRP.setRect(20, 20, 20, 20) def groupChildrenBoundingRect(self): for k, v in self.qGraGrp.items(): - grpcolor = moose.Annotator(moose.element(k.path+'/info')).color + grpcolor = moose.Annotator(moose.element(k.path + '/info')).color # TODO: One may need to calculate explicitly the boundary for Group # also if there is a cross-group connection, then # childrenBoundrect() will take the QPolygonItem position rectcompt = v.childrenBoundingRect() - v.setRect(rectcompt.x()-10, rectcompt.y()-10 - , rectcompt.width()+20, rectcompt.height()+20) - v.setPen(QtGui.QPen(Qt.QColor(grpcolor), self.comptPen - , Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) - + v.setRect(rectcompt.x() - 10, + rectcompt.y() - 10, + rectcompt.width() + 20, + rectcompt.height() + 20) + v.setPen( + QtGui.QPen(Qt.QColor(grpcolor), self.comptPen, Qt.Qt.SolidLine, + Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + def comptChildrenBoundingRect(self): for k, v in self.qGraCompt.items(): # compartment's rectangle size is calculated depending on children rectcompt = kkitUtil.calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + v.setRect(rectcompt.x() - 10, + rectcompt.y() - 10, (rectcompt.width() + 20), + (rectcompt.height() + 20)) v.setPen( - QtGui.QPen(Qt.QColor(66,66,66,100) - , self.comptPen - , Qt.Qt.SolidLine - , Qt.Qt.RoundCap - , Qt.Qt.RoundJoin - ) - ) - - def createCompt(self,key): - self.new_Compt = kkitQGraphics.ComptItem(self,0,0,0,0,key) + QtGui.QPen(Qt.QColor(66, 66, 66, 100), self.comptPen, + Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) + + def createCompt(self, key): + self.new_Compt = kkitQGraphics.ComptItem(self, 0, 0, 0, 0, key) self.qGraCompt[key] = self.new_Compt - self.new_Compt.setRect(10,10,10,10) + self.new_Compt.setRect(10, 10, 10, 10) self.sceneContainer.addItem(self.new_Compt) - def setupDisplay(self,info,graphicalObj,objClass): + def setupDisplay(self, info, graphicalObj, objClass): Annoinfo = moose.Annotator(info) # For Reaction and Complex object I have skipped the process to get the # facecolor and background color. # we are not using these colors for displaying the object so just # passing dummy color white - if( objClass == "reaction" or objClass == "cplx" or objClass == "Function" or objClass == "StimulusTable"): - textcolor,bgcolor = QColor("white"),QColor("white") - elif(objClass == "enzyme"): - textcolor,bgcolor = kkitUtil.getColor(info) + if (objClass == "reaction" or objClass == "cplx" + or objClass == "Function" or objClass == "StimulusTable"): + textcolor, bgcolor = QColor("white"), QColor("white") + elif (objClass == "enzyme"): + textcolor, bgcolor = kkitUtil.getColor(info) if bgcolor.name() == "#ffffff" or bgcolor == "white": bgcolor = kkitUtil.getRandColor() Annoinfo.color = str(bgcolor.name()) else: - textcolor,bgcolor = kkitUtil.getColor(info) + textcolor, bgcolor = kkitUtil.getColor(info) if bgcolor.name() == "#ffffff" or bgcolor == "white": bgcolor = kkitUtil.getRandColor() Annoinfo.color = str(bgcolor.name()) - if isinstance(self,kineticEditorWidget): - funct = ["Function","ZombieFunction"] - comptt = ["CubeMesh","CylMesh"] + if isinstance(self, kineticEditorWidget): + funct = ["Function", "ZombieFunction"] + comptt = ["CubeMesh", "CylMesh"] if objClass in funct: - poolt = ["ZombieBufPool","BufPool"] + poolt = ["ZombieBufPool", "BufPool"] if graphicalObj.mobj.parent.className in poolt: xpos = 0 ypos = 30 if graphicalObj.mobj.parent.className in comptt: - xpos,ypos = self.positioninfo(info) + xpos, ypos = self.positioninfo(info) else: - xpos,ypos = self.positioninfo(info) + xpos, ypos = self.positioninfo(info) - elif isinstance(self,KineticRunWidget): - self.editormooseId_GObj = self.editor.getCentralWidget().mooseId_GObj + elif isinstance(self, KineticRunWidget): + self.editormooseId_GObj = self.editor.getCentralWidget( + ).mooseId_GObj editorItem = self.editormooseId_GObj[moose.element(info).parent] xpos = editorItem.scenePos().x() - ypos = editorItem.scenePos().y() - graphicalObj.setDisplayProperties(xpos,ypos,textcolor,bgcolor) - + ypos = editorItem.scenePos().y() + graphicalObj.setDisplayProperties(xpos, ypos, textcolor, bgcolor) - def positioninfo(self,iteminfo): + def positioninfo(self, iteminfo): ''' By this time, model loaded from kkit,cspace,SBML would have info field created and co-ordinates are added either by autocoordinates (for @@ -570,9 +610,9 @@ def positioninfo(self,iteminfo): x = float(moose.element(iteminfo).getField('x')) y = float(moose.element(iteminfo).getField('y')) return x, y - + def drawLine_arrow(self, itemignoreZooming=False): - for inn,out in self.srcdesConnection.items(): + for inn, out in self.srcdesConnection.items(): #print "inn ",inn, " out ",out # self.srcdesConnection is dictionary which contains key,value \ # key is Enzyme or Reaction and value [[list of substrate],[list of product]] (tuple) @@ -580,97 +620,127 @@ def drawLine_arrow(self, itemignoreZooming=False): #src = self.mooseId_GObj[inn] linetype = "regular" - if isinstance(out,tuple): + if isinstance(out, tuple): src = self.mooseId_GObj[inn] - if len(out[0])== 0: - print (inn.className + ' : ' +inn.name+ " doesn't output message") + if len(out[0]) == 0: + print(inn.className + ' : ' + inn.name + + " doesn't output message") else: - for items in (items for items in out[0] ): + for items in (items for items in out[0]): if re.search("xfer", moose.element(items[0]).name): - xrefPool = items[0].name[:items[0].name.index("_xfer_")] - xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] - orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] - orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] + xrefPool = items[0].name[:items[0].name. + index("_xfer_")] + xrefCompt = items[0].name[items[0].name. + index("_xfer_") + + len("_xfer_"):] + orgCompt = moose.wildcardFind(self.modelRoot + + '/##[FIELD(name)=' + + xrefCompt + ']')[0] + orgPool = moose.wildcardFind(orgCompt.path + + '/##[FIELD(name)=' + + xrefPool + ']')[0] itemslist = list(items) itemslist[0] = orgPool items = tuple(itemslist) linetype = "crosscompt" des = self.mooseId_GObj[moose.element(items[0])] - self.lineCord(src,des,items,itemignoreZooming,linetype) + self.lineCord(src, des, items, itemignoreZooming, + linetype) if len(out[1]) == 0: - print (inn.className + ' : ' +inn.name+ " doesn't output message") + print(inn.className + ' : ' + inn.name + + " doesn't output message") else: - for items in (items for items in out[1] ): + for items in (items for items in out[1]): if re.search("xfer", moose.element(items[0]).name): - xrefPool = items[0].name[:items[0].name.index("_xfer_")] - xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] - orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] - orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] + xrefPool = items[0].name[:items[0].name. + index("_xfer_")] + xrefCompt = items[0].name[items[0].name. + index("_xfer_") + + len("_xfer_"):] + orgCompt = moose.wildcardFind(self.modelRoot + + '/##[FIELD(name)=' + + xrefCompt + ']')[0] + orgPool = moose.wildcardFind(orgCompt.path + + '/##[FIELD(name)=' + + xrefPool + ']')[0] itemslist = list(items) itemslist[0] = orgPool items = tuple(itemslist) linetype = "crosscompt" des = self.mooseId_GObj[moose.element(items[0])] - self.lineCord(src,des,items,itemignoreZooming,linetype) - elif isinstance(out,list): + self.lineCord(src, des, items, itemignoreZooming, + linetype) + elif isinstance(out, list): if len(out) == 0: if inn.className == "StimulusTable": - print (inn.name +" doesn't have output") + print(inn.name + " doesn't have output") elif inn.className == "ZombieFunction" or inn.className == "Function": - print (inn.name + " doesn't have sumtotal ") + print(inn.name + " doesn't have sumtotal ") else: src = self.mooseId_GObj[inn] - for items in (items for items in out ): + for items in (items for items in out): if re.search("xfer", moose.element(items[0]).name): - xrefPool = items[0].name[:items[0].name.index("_xfer_")] - xrefCompt = items[0].name[items[0].name.index("_xfer_") + len("_xfer_"):] - orgCompt = moose.wildcardFind(self.modelRoot+'/##[FIELD(name)='+xrefCompt+']')[0] - orgPool = moose.wildcardFind(orgCompt.path+'/##[FIELD(name)='+xrefPool+']')[0] + xrefPool = items[0].name[:items[0].name. + index("_xfer_")] + xrefCompt = items[0].name[items[0].name. + index("_xfer_") + + len("_xfer_"):] + orgCompt = moose.wildcardFind(self.modelRoot + + '/##[FIELD(name)=' + + xrefCompt + ']')[0] + orgPool = moose.wildcardFind(orgCompt.path + + '/##[FIELD(name)=' + + xrefPool + ']')[0] itemslist = list(items) itemslist[0] = orgPool items = tuple(itemslist) linetype = "crosscompt" des = self.mooseId_GObj[moose.element(items[0])] - self.lineCord(src,des,items,itemignoreZooming,linetype) + self.lineCord(src, des, items, itemignoreZooming, + linetype) - def lineCord(self,src,des,type_no,itemignoreZooming,linetype): + def lineCord(self, src, des, type_no, itemignoreZooming, linetype): srcdes_list = [] endtype = type_no[1] line = 0 if (src == "") and (des == ""): - print ("Source or destination is missing or incorrect") + print("Source or destination is missing or incorrect") return - srcdes_list = [src,des,endtype,line] - arrow = kkitUtil.calcArrow(srcdes_list,itemignoreZooming,self.iconScale) - self.drawLine(srcdes_list,arrow,linetype) - - while(type_no[2] > 1 and line <= (type_no[2]-1)): - srcdes_list =[src,des,endtype,line] - arrow = kkitUtil.calcArrow(srcdes_list,itemignoreZooming,self.iconScale) - self.drawLine(srcdes_list,arrow,linetype) - line = line +1 + srcdes_list = [src, des, endtype, line] + arrow = kkitUtil.calcArrow(srcdes_list, itemignoreZooming, + self.iconScale) + self.drawLine(srcdes_list, arrow, linetype) + + while (type_no[2] > 1 and line <= (type_no[2] - 1)): + srcdes_list = [src, des, endtype, line] + arrow = kkitUtil.calcArrow(srcdes_list, itemignoreZooming, + self.iconScale) + self.drawLine(srcdes_list, arrow, linetype) + line = line + 1 if type_no[2] > 5: - print ("Higher order reaction will not be displayed") + print("Higher order reaction will not be displayed") - def drawLine(self,srcdes_list,arrow,linetype="solid"): + def drawLine(self, srcdes_list, arrow, linetype="solid"): src = srcdes_list[0] des = srcdes_list[1] endtype = srcdes_list[2] line = srcdes_list[3] - source = moose.element(next((k for k,v in self.mooseId_GObj.items() if v == src), None)) - for l,v,et,o in self.object2line[src]: - if v == des and o ==line: + source = moose.element( + next((k for k, v in self.mooseId_GObj.items() if v == src), None)) + for l, v, et, o in self.object2line[src]: + if v == des and o == line: l.setPolygon(arrow) arrowPen = l.pen() - arrowPenWidth = self.arrowsize*self.iconScale + arrowPenWidth = self.arrowsize * self.iconScale arrowPen.setColor(l.pen().color()) arrowPen.setWidth(arrowPenWidth) l.setPen(arrowPen) return qgLineitem = self.sceneContainer.addPolygon(arrow) qgLineitem.setParentItem(src.parentItem()) - pen = QtGui.QPen(QtCore.Qt.green, 0, Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin) + pen = QtGui.QPen(QtCore.Qt.green, 0, Qt.Qt.SolidLine, Qt.Qt.RoundCap, + Qt.Qt.RoundJoin) if linetype == "crosscompt": pen.setStyle(Qt.Qt.CustomDashLine) pen.setDashPattern([1, 5, 1, 5]) @@ -678,42 +748,54 @@ def drawLine(self,srcdes_list,arrow,linetype="solid"): pen.setWidth(self.arrowsize) # Green is default color moose.ReacBase and derivatives - already set above - if isinstance(source, moose.EnzBase): - if ( (endtype == 's') or (endtype == 'p')): + if isinstance(source, moose.EnzBase): + if ((endtype == 's') or (endtype == 'p')): pen.setColor(QtCore.Qt.red) - elif(endtype != 'cplx'): - p1 = (next((k for k,v in self.mooseId_GObj.items() if v == src), None)) - pinfo = p1.parent.path+'/info' - color,bgcolor = kkitUtil.getColor(pinfo) + elif (endtype != 'cplx'): + p1 = (next( + (k for k, v in self.mooseId_GObj.items() if v == src), + None)) + pinfo = p1.parent.path + '/info' + color, bgcolor = kkitUtil.getColor(pinfo) #color = QColor(color[0],color[1],color[2]) pen.setColor(bgcolor) - elif isinstance(source, moose.PoolBase) or isinstance(source,moose.Function): + elif isinstance(source, moose.PoolBase) or isinstance( + source, moose.Function): pen.setColor(QtCore.Qt.blue) - elif isinstance(source,moose.StimulusTable): + elif isinstance(source, moose.StimulusTable): pen.setColor(QtCore.Qt.yellow) self.lineItem_dict[qgLineitem] = srcdes_list - self.object2line[ src ].append( ( qgLineitem, des,endtype,line) ) - self.object2line[ des ].append( ( qgLineitem, src,endtype,line ) ) + self.object2line[src].append((qgLineitem, des, endtype, line)) + self.object2line[des].append((qgLineitem, src, endtype, line)) qgLineitem.setPen(pen) - def positionChange(self,mooseObject): - #If the item position changes, the corresponding arrow's are calculated + def positionChange(self, mooseObject): + #If the item position changes, the corresponding arrow's are calculated for k, v in self.qGraCompt.items(): for rectChilditem in v.childItems(): self.updateArrow(rectChilditem) if isinstance(rectChilditem, kkitQGraphics.GRPItem): for grpChilditem in rectChilditem.childItems(): self.updateArrow(grpChilditem) - if isinstance(grpChilditem, kkitQGraphics.KineticsDisplayItem): - if moose.exists(grpChilditem.mobj.path+'/info'): + if isinstance(grpChilditem, + kkitQGraphics.KineticsDisplayItem): + if moose.exists(grpChilditem.mobj.path + '/info'): #print grpChilditem.mobj.name, grpChilditem.scenePos() - moose.element(grpChilditem.mobj.path+'/info').x = grpChilditem.scenePos().x() - moose.element(grpChilditem.mobj.path+'/info').y = grpChilditem.scenePos().y() + moose.element( + grpChilditem.mobj.path + + '/info').x = grpChilditem.scenePos().x() + moose.element( + grpChilditem.mobj.path + + '/info').y = grpChilditem.scenePos().y() if isinstance(rectChilditem, kkitUtil.KineticsDisplayItem): - if moose.exists(rectChilditem.mobj.path+'/info'): - moose.element(rectChilditem.mobj.path+'/info').x = rectChilditem.scenePos().x() - moose.element(rectChilditem.mobj.path+'/info').y = rectChilditem.scenePos().y() + if moose.exists(rectChilditem.mobj.path + '/info'): + moose.element( + rectChilditem.mobj.path + + '/info').x = rectChilditem.scenePos().x() + moose.element( + rectChilditem.mobj.path + + '/info').y = rectChilditem.scenePos().y() rectcompt = kkitUtil.calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() @@ -721,62 +803,76 @@ def positionChange(self,mooseObject): self.updateCompartmentSize(v) else: rectcompt = kkitUtil.calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10,rectcompt.y()-10,(rectcompt.width()+20),(rectcompt.height()+20)) + v.setRect(rectcompt.x() - 10, + rectcompt.y() - 10, (rectcompt.width() + 20), + (rectcompt.height() + 20)) - def positionChange_old(self,mooseObject): + def positionChange_old(self, mooseObject): # If the item position changes, the corresponding arrow's are calculated if isinstance(moose.element(mooseObject), kkitQGraphics.ChemCompt): for k, v in self.qGraCompt.items(): mesh = moose.element(mooseObject).path if k.path == mesh: for rectChilditem in v.childItems(): - if isinstance(rectChilditem, kkitQGraphics.KineticsDisplayItem): + if isinstance(rectChilditem, + kkitQGraphics.KineticsDisplayItem): if moose.exists(rectChilditem.mobj.path): - iInfo = rectChilditem.mobj.path+'/info' + iInfo = rectChilditem.mobj.path + '/info' moose.Annotator(iInfo) - if isinstance(moose.element(rectChilditem.mobj.path), moose.PoolBase): + if isinstance( + moose.element(rectChilditem.mobj.path), + moose.PoolBase): t = moose.element(rectChilditem.mobj.path) moose.element(t).children for items in moose.element(t).children: - if isinstance(moose.element(items), moose.Function): - test = moose.element(items.path+'/x') - for i in moose.element(test).neighbors['input']: - j = self.mooseId_GObj[moose.element(i)] + if isinstance(moose.element(items), + moose.Function): + test = moose.element(items.path + + '/x') + for i in moose.element( + test).neighbors['input']: + j = self.mooseId_GObj[ + moose.element(i)] self.updateArrow(j) self.updateArrow(rectChilditem) elif moose.element(mooseObject).className == 'Neutral': - for k,v in self.qGraGrp.items(): + for k, v in self.qGraGrp.items(): for grpChilditem in v.childItems(): - if isinstance(grpChilditem, kkitQGraphics.KineticsDisplayItem): + if isinstance(grpChilditem, + kkitQGraphics.KineticsDisplayItem): if moose.exists(grpChilditem.mobj.path): - iInfo = grpChilditem.mobj.path+'/info' + iInfo = grpChilditem.mobj.path + '/info' moose.Annotator(iInfo) - - if isinstance(moose.element(grpChilditem.mobj.path), moose.PoolBase): + + if isinstance(moose.element(grpChilditem.mobj.path), + moose.PoolBase): t = moose.element(grpChilditem.mobj.path) moose.element(t).children for items in moose.element(t).children: - if isinstance(moose.element(items), moose.Function): - test = moose.element(items.path+'/x') - for i in moose.element(test).neighbors['input']: + if isinstance(moose.element(items), + moose.Function): + test = moose.element(items.path + '/x') + for i in moose.element( + test).neighbors['input']: j = self.mooseId_GObj[moose.element(i)] self.updateArrow(j) self.updateArrow(grpChilditem) rectgrp = kkitUtil.calculateChildBoundingRect(v) - v.setRect(rectgrp.x()-10,rectgrp.y()-10,(rectgrp.width()+20),(rectgrp.height()+20)) + v.setRect(rectgrp.x() - 10, + rectgrp.y() - 10, (rectgrp.width() + 20), + (rectgrp.height() + 20)) for k, v in self.qGraCompt.items(): rectcompt = kkitUtil.calculateChildBoundingRect(v) comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.updateCompartmentSize(v) - + else: rectcompt = kkitUtil.calculateChildBoundingRect(v) - v.setRect( rectcompt.x()-10 - , rectcompt.y()-10 - , rectcompt.width()+20 - , rectcompt.height()+20 - ) + v.setRect(rectcompt.x() - 10, + rectcompt.y() - 10, + rectcompt.width() + 20, + rectcompt.height() + 20) else: mobj = self.mooseId_GObj[moose.element(mooseObject)] self.updateArrow(mobj) @@ -785,26 +881,22 @@ def positionChange_old(self,mooseObject): comptBoundingRect = v.boundingRect() if not comptBoundingRect.contains(rectcompt): self.updateCompartmentSize(v) - + else: rectcompt = kkitUtil.calculateChildBoundingRect(v) - v.setRect(rectcompt.x()-10 - , rectcompt.y()-10 - , rectcompt.width()+20 - , rectcompt.height()+20 - ) + v.setRect(rectcompt.x() - 10, + rectcompt.y() - 10, + rectcompt.width() + 20, + rectcompt.height() + 20) - def updateGrpSize(self,grp): + def updateGrpSize(self, grp): childrenBoundary = kkitUtil.calculateChildBoundingRect(grp) x = childrenBoundary.x() y = childrenBoundary.y() height = childrenBoundary.height() width = childrenBoundary.width() - grp.setRect( x-10 - , y-10 - , width + 20 - , height + 20 - ) + grp.setRect(x - 10, y - 10, width + 20, height + 20) + def updateCompartmentSize(self, compartment): compartmentBoundary = compartment.rect() childrenBoundary = kkitUtil.calculateChildBoundingRect(compartment) @@ -812,16 +904,12 @@ def updateCompartmentSize(self, compartment): y = min(compartmentBoundary.y(), childrenBoundary.y()) width = max(compartmentBoundary.width(), childrenBoundary.width()) height = max(compartmentBoundary.height(), childrenBoundary.height()) - compartment.setRect( x-10 - , y-10 - , width + 20 - , height + 20 - ) + compartment.setRect(x - 10, y - 10, width + 20, height + 20) - def updateArrow(self,qGTextitem): + def updateArrow(self, qGTextitem): #if there is no arrow to update then return listItem = self.object2line[qGTextitem] - for ql, va,endtype,order in listItem: + for ql, va, endtype, order in listItem: srcdes = [] srcdes = self.lineItem_dict[ql] # Checking if src (srcdes[0]) or des (srcdes[1]) is ZombieEnz, @@ -834,18 +922,18 @@ def updateArrow(self,qGTextitem): elif( type(srcdes[1]) == kkitQGraphics.EnzItem \ or type(srcdes[1] == kkitQGraphics.MMEnzItem)): self.cplxUpdatearrow(srcdes[1]) - # TODO: For calcArrow(src,des,endtype,itemignoreZooming) is to be provided - arrow = kkitUtil.calcArrow(srcdes, self.itemignoreZooming, self.iconScale) + arrow = kkitUtil.calcArrow(srcdes, self.itemignoreZooming, + self.iconScale) ql.setPolygon(arrow) - def cplxUpdatearrow(self,srcdes): + def cplxUpdatearrow(self, srcdes): # srcdes which is 'EnzItem' from this,get ChildItems are retrived (b'cos cplx is child of zombieEnz) #And cplxItem is passed for updatearrow for item in srcdes.childItems(): if isinstance(item, kkitQGraphics.CplxItem): self.updateArrow(item) - def positionChange1(self,mooseObject): + def positionChange1(self, mooseObject): #If the item position changes, the corresponding arrow's are calculated if ( (isinstance(moose.element(mooseObject), moose.CubeMesh)) \ or (isinstance(moose.element(mooseObject), moose.CylMesh))): @@ -862,32 +950,48 @@ def positionChange1(self,mooseObject): comptBoundingRect = v.boundingRect() rectcompt = comptBoundingRect.united(childBoundingRect) comptPen = v.pen() - comptWidth = 5 + comptWidth = 5 comptPen.setWidth(comptWidth) v.setPen(comptPen) if not comptBoundingRect.contains(childBoundingRect): - v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,rectcompt.width()+(comptWidth*2),rectcompt.height()+(comptWidth*2)) + v.setRect(rectcompt.x() - comptWidth, + rectcompt.y() - comptWidth, + rectcompt.width() + (comptWidth * 2), + rectcompt.height() + (comptWidth * 2)) + class kineticEditorWidget(KineticsWidget): - def __init__(self, plugin,*args): + def __init__(self, plugin, *args): KineticsWidget.__init__(self, plugin, *args) self.plugin = plugin self.insertMenu = QMenu('&Insert') self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) - classlist = ['CubeMesh','CylMesh','Pool','BufPool','Function','Reac','Enz','MMenz','StimulusTable'] - self.toolTipinfo = { "CubeMesh":"", - "CylMesh" : "", - "Pool":"A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", - "BufPool":"A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", - "Function":"A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", - "StimulusTable":"A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", - "Reac":"A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", - "MMenz":"An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", - "Enz":"An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" - - } + classlist = [ + 'CubeMesh', 'CylMesh', 'Pool', 'BufPool', 'Function', 'Reac', + 'Enz', 'MMenz', 'StimulusTable' + ] + self.toolTipinfo = { + "CubeMesh": + "", + "CylMesh": + "", + "Pool": + "A Pool is a collection of molecules of a given species in a given cellular compartment.\n It can undergo reactions that convert it into other pool(s). \nParameters: initConc (Initial concentration), diffConst (diffusion constant). Variable: conc (Concentration)", + "BufPool": + "A BufPool is a buffered pool. \nIt is a collection of molecules of a given species in a given cellular compartment, that are always present at the same concentration.\n This is set by the initConc parameter. \nIt can undergo reactions in the same way as a pool.", + "Function": + "A Func computes an arbitrary mathematical expression of one or more input concentrations of Pools. The output can be used to control the concentration of another Pool, or as an input to another Func", + "StimulusTable": + "A StimulusTable stores an array of values that are read out during a simulation, and typically control the concentration of one of the pools in the model. \nParameters: size of table, values of entries, start and stop times, and an optional loopTime that defines the period over which the StimulusTable should loop around to repeat its values", + "Reac": + "A Reac is a chemical reaction that converts substrates into products, and back. \nThe rates of these conversions are specified by the rate constants Kf and Kb respectively.", + "MMenz": + "An MMenz is the Michaelis-Menten version of an enzyme activity of a given Pool.\n The MMenz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple MMenz activites must be created on the parent Pool. \nThe rate of an MMenz is V [S].[E].kcat/(Km + [S]). There is no enzyme-substrate complex. Parameters: Km and kcat.", + "Enz": + "An Enz is an enzyme activity of a given Pool. The Enz must be created on a pool and can only catalyze a single reaction with a specified substrate(s). \nIf a given enzyme species can have multiple substrates, then multiple Enz activities must be created on the parent Pool. \nThe reaction for an Enz is E + S <===> E.S ---> E + P. \nThis means that a new Pool, the enzyme-substrate complex E.S, is always formed when you create an Enz. \nParameters: Km and kcat, or alternatively, K1, K2 and K3. Km = (K2+K3)/K1" + } insertMapper, actions = self.getInsertActions(classlist) for action in actions: self.insertMenu.addAction(action) @@ -898,7 +1002,7 @@ def __init__(self, plugin,*args): doc = doc.split('Description:')[-1].split('Name:')[0].strip() action.setToolTip(doc) - def GrViewresize(self,event): + def GrViewresize(self, event): #when Gui resize and event is sent which inturn call resizeEvent of qgraphicsview pass #self.view.resizeEvent1(event) @@ -914,31 +1018,30 @@ def getToolBars(self): for action in self.insertMenu.actions(): button = MToolButton() button.setDefaultAction(action) - #set the unicode instead of image by setting - #button.setText(unicode(u'\u20de')) - Iconpath = os.path.join(config.MOOSE_GUI_DIR, 'icons/classIcon/') - button.setIcon(QtGui.QIcon(Iconpath+action.text()+".png")) - #button.setIcon(QtGui.QIcon("icons/classIcon/"+action.text()+".png")) - #button.setIconSize(QtCore.QSize(200,200)) + iconPath = os.path.join(config.MOOSE_ICON_DIR, action.text() + '.png') + assert os.path.exists(iconPath), "Does not exists %s" % iconPath + button.setIcon(QtGui.QIcon(iconPath)) self._insertToolBar.addWidget(button) return self._toolBars + class KineticRunWidget(KineticsWidget): def __init__(self, plugin, *args): - KineticsWidget.__init__(self, plugin,*args) + KineticsWidget.__init__(self, plugin, *args) def showEvent(self, event): self.refresh() # pass def refresh(self): self.sceneContainer.clear() - self.Comptexist = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + self.Comptexist = moose.wildcardFind(self.modelRoot + + '/##[ISA=ChemCompt]') if self.Comptexist: # pass self.getMooseObj() self.mooseObjOntoscene() self.drawLine_arrow(itemignoreZooming=False) - + def makePoolItem(self, poolObj, qGraCompt): return kkitQGraphics.PoolItemCircle(poolObj, qGraCompt) @@ -960,13 +1063,13 @@ def changeBgSize(self): initialConc = moose.element(item.mobj).concInit presentConc = moose.element(item.mobj).conc if initialConc != 0: - ratio = presentConc/initialConc + ratio = presentConc / initialConc else: ratio = presentConc if ratio > '10': ratio = 9 if ratio < '0.0': - ratio =0.1 + ratio = 0.1 item.updateRect(math.sqrt(abs(ratio))) def resetColor(self): @@ -974,20 +1077,21 @@ def resetColor(self): if isinstance(item, kkitQGraphics.PoolItemCircle): item.returnEllispeSize() + if __name__ == "__main__": from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) - size = QtCore.QSize(1024 ,768) + size = QtCore.QSize(1024, 768) sdir = os.path.dirname(__file__) modelPath = 'Kholodenko' itemignoreZooming = False try: - filepath = os.path.join(sdir, '../data/'+modelPath+'.g') - print( "%s" %(filepath)) + filepath = os.path.join(sdir, '../data/' + modelPath + '.g') + print("%s" % (filepath)) f = open(filepath, "r") - moose.loadModel(filepath,'/'+modelPath) + moose.loadModel(filepath, '/' + modelPath) dt = KineticsWidget() - dt.modelRoot ='/'+modelPath + dt.modelRoot = '/' + modelPath dt.updateModelView() dt.show() except IOError as e: diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 420acf2..10b79eb 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -49,6 +49,7 @@ def __init__(self, modelRoot,parent,border,layoutPt,createdItem): self.selections = [] self.connector = None self.connectionSignImagePath = os.path.join(SDIR_, "../icons/connection.png") + assert os.path.exists( self.connectionSignImagePath ) self.connectionSignImage = QtGui.QImage(self.connectionSignImagePath) self.setScene(parent) self.modelRoot = modelRoot From 1855a50f868108e6aa6d6278a5d8c5dbd817b6a0 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 20:52:33 +0530 Subject: [PATCH 62/66] now drag and drop. --- moosegui/config.py | 12 +++++++----- moosegui/mtoolbutton.py | 4 ++-- moosegui/plugins/kkit.py | 25 ++++++++++++++++--------- moosegui/plugins/kkitViewcontrol.py | 10 +++++----- moosegui/plugins/modelBuild.py | 2 +- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/moosegui/config.py b/moosegui/config.py index cafe429..b36e42d 100644 --- a/moosegui/config.py +++ b/moosegui/config.py @@ -9,14 +9,16 @@ import os import sys -import tempfile -import logging -import errno -from PyQt5 import QtGui, QtCore +from PyQt5 import QtCore # Logger import logging -logging.basicConfig( level=logging.INFO +if os.environ.get('MOOSE_GUI_DEBUG', ''): + logLevel = logging.DEBUG +else: + logLevel = logging.WARN + +logging.basicConfig(level=logLevel , format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s' , datefmt='%m-%d %H:%M' ) diff --git a/moosegui/mtoolbutton.py b/moosegui/mtoolbutton.py index 8339ea7..bfd3975 100644 --- a/moosegui/mtoolbutton.py +++ b/moosegui/mtoolbutton.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- + # Description: Subclass of QToolButton to allow drag and drop # Author: # Maintainer: @@ -26,13 +27,12 @@ def mousePressEvent(self, event): def mouseMoveEvent(self, event): if not (event.buttons() & Qt.LeftButton): return - if (event.pos() - self.dragStartPosition).manhattanLength() < QtGui.QApplication.startDragDistance(): + if (event.pos() - self.dragStartPosition).manhattanLength() < QApplication.startDragDistance(): return drag = QtGui.QDrag(self) mimeData = QtCore.QMimeData() mimeData.setText(self.text()) drag.setMimeData(mimeData) - # print '1111', mimeData.text() dropAction = drag.exec_(Qt.CopyAction) diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index ed38270..43ebd76 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -14,6 +14,12 @@ import re import math +from PyQt5.QtWidgets import QApplication + +# For testing: QApplication must be created before any other widget. +if __name__ == "__main__": + app = QApplication(sys.argv) + from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QWidget, QGridLayout, QFileDialog from PyQt5.QtWidgets import QMenu, QAction, QGraphicsScene @@ -33,6 +39,9 @@ # moose import moose +# Logging +import logging +logger_ = logging.getLogger('gui.plugins.kkit') class KkitPlugin(MoosePlugin): """ @@ -324,9 +333,9 @@ def updateModelView(self): self.layout().removeWidget(self.view) self.view = kkitViewcontrol.GraphicalView(self.modelRoot, - self.sceneContainer, - self.border, self, - self.createdItem) + self.sceneContainer, + self.border, self, + self.createdItem) if isinstance(self, kineticEditorWidget): self.view.setRefWidget("editorView") @@ -366,6 +375,8 @@ def updateModelView(self): self.sceneContainer.itemsBoundingRect().width() + 20, self.sceneContainer.itemsBoundingRect().height() + 20, Qt.Qt.IgnoreAspectRatio) + else: + logger_.warning("Unhandled type: %s:%s" % (type(self),self)) def getMooseObj(self): self.m = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') @@ -1024,7 +1035,6 @@ def getToolBars(self): self._insertToolBar.addWidget(button) return self._toolBars - class KineticRunWidget(KineticsWidget): def __init__(self, plugin, *args): KineticsWidget.__init__(self, plugin, *args) @@ -1079,18 +1089,15 @@ def resetColor(self): if __name__ == "__main__": - from PyQt5.QtWidgets import QApplication - app = QApplication(sys.argv) size = QtCore.QSize(1024, 768) sdir = os.path.dirname(__file__) modelPath = 'Kholodenko' itemignoreZooming = False try: - filepath = os.path.join(sdir, '../data/' + modelPath + '.g') + filepath = os.path.join(sdir, '../../data/' + modelPath + '.g') print("%s" % (filepath)) - f = open(filepath, "r") moose.loadModel(filepath, '/' + modelPath) - dt = KineticsWidget() + dt = KineticsWidget( "kkit" ) dt.modelRoot = '/' + modelPath dt.updateModelView() dt.show() diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 10b79eb..3794c4b 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -38,7 +38,7 @@ class GraphicalView(QGraphicsView): # https://stackoverflow.com/a/2971426/1805129 and cry! dropped = QtCore.pyqtSignal(int, name="dropped") - def __init__(self, modelRoot,parent,border,layoutPt,createdItem): + def __init__(self, modelRoot, parent, border, layoutPt, createdItem): QGraphicsView.__init__(self, parent) self.state = None self.move = False @@ -1279,7 +1279,9 @@ def zoomSelections(self, x0, y0, x1, y1): return def wheelEvent(self, event): - factor = 1.41 ** (event.delta() / 240.0) + pD = event.angleDelta().y() + factor = 1.41 ** (pD / 240.0) + logger_.debug( "WheelEvent %s and factor: %s" % (pD, factor)) self.scale(factor, factor) def dragEnterEvent(self, event): @@ -1326,10 +1328,8 @@ def dropEvent(self, event): event_pos, self.layoutPt ) - # Check if view needs to rescaled to fit the dropped item. - self.layoutPt.rescaleView( ) else: - logger_.debug("Not is editorView ") + logger_.debug("Not in editorView ") return def populate_srcdes(self, src, des): diff --git a/moosegui/plugins/modelBuild.py b/moosegui/plugins/modelBuild.py index 145d10c..43cb5e1 100644 --- a/moosegui/plugins/modelBuild.py +++ b/moosegui/plugins/modelBuild.py @@ -250,7 +250,7 @@ def createObj(scene, view, modelpath, string, pos, layoutPt): num = 0 ret_string = " " pos = view.mapToScene(event_pos) - itemAt = view.sceneContainerPt.itemAt(pos) + itemAt = view.sceneContainerPt.itemAt(float(pos.x()), float(pos.y()), QtGui.QTransform()) moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') moose.mooseDeleteChemSolver(modelpath) mobj = "" From c596104322fd0420d60cb3419c993d30206e3272 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 21:24:39 +0530 Subject: [PATCH 63/66] Drag and drop not working. Screw the old code, rewrite. --- moosegui/MWindow.py | 8 +++----- moosegui/config.py | 10 +--------- moosegui/mtoolbutton.py | 8 +++++--- moosegui/plugins/kkitViewcontrol.py | 13 +++---------- moosegui/plugins/modelBuild.py | 14 +++++++++----- 5 files changed, 21 insertions(+), 32 deletions(-) diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index c5af87e..b61df1a 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -556,17 +556,15 @@ def updateMenus(self): menus[0].addAction(self.quitAction) def updateToolbars(self): - _logger.debug( "Updating toolbar" ) for toolbar in self.toolBars: self.removeToolBar(toolbar) self.toolBars = [] self.toolBars.extend(self.getMyToolBars()) self.toolBars.extend(self.plugin.getToolBars()) self.toolBars.extend(self.plugin.getCurrentView().getToolBars()) - if len(self.toolBars): - for toolbar in self.toolBars: - self.addToolBar(toolbar) - toolbar.setVisible(True) + for toolbar in self.toolBars: + toolbar.setVisible(True) + self.addToolBar(toolbar) def switchSubwindowSlot(self, window): """Change view based on what subwindow `window` is activated.""" diff --git a/moosegui/config.py b/moosegui/config.py index b36e42d..07b2148 100644 --- a/moosegui/config.py +++ b/moosegui/config.py @@ -13,15 +13,7 @@ # Logger import logging -if os.environ.get('MOOSE_GUI_DEBUG', ''): - logLevel = logging.DEBUG -else: - logLevel = logging.WARN - -logging.basicConfig(level=logLevel - , format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s' - , datefmt='%m-%d %H:%M' - ) +logging.basicConfig(level=logging.DEBUG) _logger = logging.getLogger('moosegui') KEY_UNDO_LENGTH = 'main/undolength' diff --git a/moosegui/mtoolbutton.py b/moosegui/mtoolbutton.py index bfd3975..871ea40 100644 --- a/moosegui/mtoolbutton.py +++ b/moosegui/mtoolbutton.py @@ -12,7 +12,8 @@ from PyQt5.Qt import Qt class MToolButton(QToolButton): - """QToolButton subclass with dragEvent reimplemented. It sends the + """ + QToolButton subclass with dragEvent reimplemented. It sends the text of the ToolButton as the mimedata. """ @@ -33,7 +34,8 @@ def mouseMoveEvent(self, event): mimeData = QtCore.QMimeData() mimeData.setText(self.text()) drag.setMimeData(mimeData) - dropAction = drag.exec_(Qt.CopyAction) + print( 'mouseMoveEvent', mimeData.text()) + drag.exec_(Qt.CopyAction) class MyWidget(QTextBrowser): @@ -62,7 +64,7 @@ def dropEvent(self, event): self.dropCount += 1 self.setPlainText('`%s` dropped: %d times' % (event.mimeData().text(), self.dropCount)) event.acceptProposedAction() - QtGui.QTextBrowser.dropEvent(self, event) + QTextBrowser.dropEvent(self, event) def test_main(): """Test main: see if drag and drop is working""" diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 3794c4b..fb49458 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -36,7 +36,7 @@ class GraphicalView(QGraphicsView): # NOTE: why this is not inside __init__? See # https://stackoverflow.com/a/2971426/1805129 and cry! - dropped = QtCore.pyqtSignal(int, name="dropped") + dropped = QtCore.pyqtSignal('PyQt_PyObject') def __init__(self, modelRoot, parent, border, layoutPt, createdItem): QGraphicsView.__init__(self, parent) @@ -545,7 +545,7 @@ def editorMouseReleaseEvent(self,event): color, bgcolor = kkitUtil.getColor(poolinfo) qGItem.setDisplayProperties( posWrtComp.x(), posWrtComp.y(), color, bgcolor) - self.emit(QtCore.SIGNAL("dropped"), poolObj) + self.dropped.emit(poolObj) if isinstance(cloneObj.parent().mobj, moose.ReacBase): retValue = self.objExist(lKey.path, name, iR) @@ -560,7 +560,7 @@ def editorMouseReleaseEvent(self,event): self.layoutPt.mooseId_GObj[reacObj] = qGItem posWrtComp = self.mapToScene(event.pos()) qGItem.setDisplayProperties(posWrtComp.x(),posWrtComp.y(),"white", "white") - self.emit(QtCore.SIGNAL("dropped"),reacObj) + self.dropped.emit(reacObj) self.updateScale(self.iconScale) else: if itemAtView is None: @@ -1298,13 +1298,6 @@ def dragMoveEvent(self, event): else: pass - # def eventFilter(self, source, event): - # logger_.debug(self, source, event) - # if self.viewBaseType == "editorView": - # if event.type() == QtCore.QEvent.Drop: - # return True - # return False - def dropEvent(self, event): """Insert an element of the specified class in drop location diff --git a/moosegui/plugins/modelBuild.py b/moosegui/plugins/modelBuild.py index 43cb5e1..e70287a 100644 --- a/moosegui/plugins/modelBuild.py +++ b/moosegui/plugins/modelBuild.py @@ -11,7 +11,10 @@ from moosegui.plugins import kkitUtil from PyQt5 import Qt, QtCore from PyQt5 import QtGui +from PyQt5.QtWidgets import QGraphicsScene +import logging +logger_ = logging.getLogger("moosegui.plugin.kkit") def updateCompartmentSize(qGraCompt): #childBoundingRect = qGraCompt.childrenBoundingRect() @@ -31,8 +34,9 @@ def updateCompartmentSize(qGraCompt): def checkCreate(scene, view, modelpath, mobj, string, ret_string, num, event_pos, layoutPt): - # The variable 'compt' will be empty when dropping cubeMesh,cyclMesh, but rest it shd be - # compartment + # The variable 'compt' will be empty when dropping cubeMesh,cyclMesh, + # but rest it shd be compartment + logger_.debug( "checkCreate is called") if moose.exists(modelpath + '/info'): moose.Annotator((moose.element(modelpath + '/info'))).modeltype itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) @@ -244,8 +248,9 @@ def checkCreate(scene, view, modelpath, mobj, string, ret_string, num, if view.iconScale != 1: view.updateScale(view.iconScale) - def createObj(scene, view, modelpath, string, pos, layoutPt): + logger_.debug( "Crating object %s, %s, %s" % (modelpath, string, str(pos))) + assert isinstance(view.sceneContainerPt, QGraphicsScene) event_pos = pos num = 0 ret_string = " " @@ -320,7 +325,7 @@ def createObj(scene, view, modelpath, string, pos, layoutPt): QtGui.QMessageBox.Ok) return False - if ret_string != " ": + if ret_string.strip(): checkCreate(scene, view, modelpath, mobj, string, ret_string, num, event_pos, layoutPt) @@ -346,7 +351,6 @@ def findUniqId(mobj, string, num): num += 1 return (findUniqId(mobj, string, num)) - def findCompartment(mooseObj): if mooseObj.path == '/': return None From 45e4bedf188888b5960867307d908d8bb210aea7 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 22:51:59 +0530 Subject: [PATCH 64/66] Some cleanup. --- moosegui/MWindow.py | 17 ++++--- moosegui/RunWidget.py | 3 +- moosegui/mtoolbutton.py | 4 +- moosegui/plugins/buildkkit.py | 68 ++++++++++++---------------- moosegui/plugins/kkit.py | 3 -- moosegui/plugins/kkitOrdinateUtil.py | 6 +-- moosegui/plugins/kkitViewcontrol.py | 2 +- moosegui/plugins/modelBuild.py | 47 ++++++++++--------- 8 files changed, 69 insertions(+), 81 deletions(-) diff --git a/moosegui/MWindow.py b/moosegui/MWindow.py index b61df1a..379957c 100644 --- a/moosegui/MWindow.py +++ b/moosegui/MWindow.py @@ -37,7 +37,8 @@ from moosegui.plugins import defines # Logger -_logger = config._logger +import logging +logger_ = logging.getLogger("moosegui.window") # This maps model subtypes to corresponding plugin names. Should be # moved to a separate property file perhaps @@ -231,10 +232,7 @@ def createPopup(self): layout5 = QHBoxLayout() layout6 = QHBoxLayout() layout7 = QHBoxLayout() - listofButtons = {} for i, k in enumerate( self.menuitems ): - _logger.info( "Adding button for %s" % k[0] ) - t = k[0] button = QPushButton(k[0]) if k[0] == "Fig2E": button.setToolTip("Illustrates loading a model from an SWC file, inserting channels, and running it") @@ -325,7 +323,7 @@ def run_python_script(self, filepath): import subprocess, shlex t = os.path.abspath(filepath) directory, filename = os.path.split(t) - _logger.info( "Executing %s" % filepath ) + logger_.info( "Executing %s" % filepath ) p = subprocess.Popen([ sys.executable, filename], cwd=directory) p.wait() freeCursor() @@ -377,9 +375,9 @@ def loadPluginModule(self, name, _reload=False): If re is True, the plugin is _reloaded. """ - _logger.info("Loading plugin '%s' from %s" % (name, config.MOOSE_PLUGIN_DIR)) + logger_.info("Loading plugin '%s' from %s" % (name, config.MOOSE_PLUGIN_DIR)) if (not _reload) and name in sys.modules: - _logger.debug( "\tThis plugin is already loaded" ) + logger_.debug( "\tThis plugin is already loaded" ) return sys.modules[name] fp, pathname, description = imp.find_module(name, [config.MOOSE_PLUGIN_DIR]) @@ -388,7 +386,7 @@ def loadPluginModule(self, name, _reload=False): except Exception as e: module = "" extra = traceback.format_exc() - _logger.warn( "Could not load module %s: '%s'" % (fp, extra)) + logger_.warn( "Could not load module %s: '%s'" % (fp, extra)) if fp: fp.close() @@ -450,7 +448,7 @@ def loadPluginClass(self, name, _reload=False): errMsg = 'No plugin found with name: %s' % name errMsg += ". Available: '{}'".format(', '.join(self._loadedPlugins.keys())) - _logger.error(errMsg) + logger_.error(errMsg) raise IndexError(errMsg) def setPlugin(self, name, root='/'): @@ -1008,6 +1006,7 @@ def continueSimulation(self): def objectEditSlot(self, mobj, visible=True): """Slot for switching the current object in object editor.""" + logger_.debug("objectEditSlot is called: dropped event") self.objectEditDockWidget.setObject(mobj) self.objectEditDockWidget.setVisible(visible) diff --git a/moosegui/RunWidget.py b/moosegui/RunWidget.py index 1690991..e9ce380 100644 --- a/moosegui/RunWidget.py +++ b/moosegui/RunWidget.py @@ -30,8 +30,9 @@ class RunWidget(QSplitter): def __init__(self, modelRoot, *args, **kwargs): super(RunWidget, self).__init__(None) self.modelRoot = modelRoot + self.topWidget = QWidget() layout = QGridLayout() - self.setLayout(layout) + self.topWidget.setLayout(layout) self.plotWidgetContainer = None def setChildWidget(self, widget, wrap, row, col, rowspan = 1, colspan = 1): diff --git a/moosegui/mtoolbutton.py b/moosegui/mtoolbutton.py index 871ea40..cbf04b5 100644 --- a/moosegui/mtoolbutton.py +++ b/moosegui/mtoolbutton.py @@ -11,6 +11,9 @@ from PyQt5.QtWidgets import QApplication, QTextBrowser from PyQt5.Qt import Qt +import logging +logger_ = logging.getLogger('mtoolbutton') + class MToolButton(QToolButton): """ QToolButton subclass with dragEvent reimplemented. It sends the @@ -34,7 +37,6 @@ def mouseMoveEvent(self, event): mimeData = QtCore.QMimeData() mimeData.setText(self.text()) drag.setMimeData(mimeData) - print( 'mouseMoveEvent', mimeData.text()) drag.exec_(Qt.CopyAction) diff --git a/moosegui/plugins/buildkkit.py b/moosegui/plugins/buildkkit.py index 813a1f6..291d5a0 100644 --- a/moosegui/plugins/buildkkit.py +++ b/moosegui/plugins/buildkkit.py @@ -9,6 +9,11 @@ from PyQt5 import QtGui, QtCore, Qt from PyQt5.QtWidgets import QFileDialog, QWidget +from PyQt5.QtWidgets import QGraphicsScene, QMenu, QMessageBox + +if __name__ == "__main__": + from PyQt5.QtWidgets import QApplication + app = QApplication(sys.argv) import networkx as nx import numpy as np @@ -16,10 +21,10 @@ from moosegui import config from moosegui.plugins.default import * from moosegui.plugins.kkitUtil import * -from moosegui.plugins.kkitQGraphics import PoolItem, ReacItem, EnzItem, CplxItem, ComptItem +from moosegui.plugins.kkitQGraphics import * from moosegui.plugins.kkitViewcontrol import * from moosegui.plugins.kkitCalcArrow import * -from moosegui.plugins.kkitOrdinateUtil import * +from moosegui.plugins import kkitOrdinateUtil from moosegui.mtoolbutton import MToolButton class KkitPlugin(MoosePlugin): @@ -67,13 +72,13 @@ class KkitEditorView(MooseEditorView): def __init__(self, plugin): MooseEditorView.__init__(self, plugin) ''' - self.insertMenu = QtGui.QMenu('Insert') + self.insertMenu = QMenu('Insert') sortList = ['CubeMesh','CylMesh','Pool','FuncPool','SumFunc','Reac','Enz','MMenz','StimulusTable','Table'] for slist in sortList: action = QtGui.QAction(moose.element('/classes/'+slist).name, self.insertMenu) self._toolBars.append(action) ''' - self.fileinsertMenu = QtGui.QMenu('&File') + self.fileinsertMenu = QMenu('&File') if not hasattr(self,'SaveModelAction'): self.saveModelAction = QtGui.QAction('SaveToSBMLFile', self) self.saveModelAction.setShortcut( "Ctrl+S" ) @@ -120,15 +125,15 @@ def __init__(self, *args): EditorWidgetBase.__init__(self, *args) self.setAcceptDrops(True) self.border = 10 - self.sceneContainer = QtGui.QGraphicsScene(self) + self.sceneContainer = QGraphicsScene(self) self.sceneContainer.setSceneRect(self.sceneContainer.itemsBoundingRect()) self.sceneContainer.setBackgroundBrush(QtGui.QColor(230,220,219,120)) - self.insertMenu = QtGui.QMenu('&Insert') + self.insertMenu = QMenu('&Insert') self._menus.append(self.insertMenu) self.insertMapper = QtCore.QSignalMapper(self) - classlist = ['CubeMesh','CylMesh','Pool','FuncPool','SumFunc','Reac','Enz','MMenz','StimulusTable','Table'] + classlist = ['CubeMesh','CylMesh','Pool', 'Reac','Enz','MMenz','StimulusTable','Table'] insertMapper, actions = self.getInsertActions(classlist) for action in actions: @@ -150,9 +155,9 @@ def sizeHint(self): def updateModelView(self): #print "update model view",self.modelRoot if self.modelRoot == '/': - m = wildcardFind('/##[ISA=ChemCompt]') + m = moose.wildcardFind('/##[ISA=ChemCompt]') else: - m = wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') + m = moose.wildcardFind(self.modelRoot+'/##[ISA=ChemCompt]') #print "111",self.modelRoot,m if not m: # when we want an empty GraphicView while creating new model, @@ -180,20 +185,17 @@ def updateModelView(self): colormap_file.close() # Compartment and its members are setup """ - self.meshEntry,self.xmin,self.xmax,self.ymin,self.ymax,self.noPositionInfo = setupMeshObj(self.modelRoot) - # srcdesConnection dictonary will have connection information between src and des """ + o, self.meshEntry, self.xmin, self.xmax, self.ymin, \ + self.ymax, self.noPositionInfo = kkitOrdinateUtil.setupMeshObj(self.modelRoot) self.srcdesConnection = {} - setupItem(self.modelRoot,self.srcdesConnection) + kkitOrdinateUtil.setupItem(self.modelRoot,self.srcdesConnection) if self.noPositionInfo: self.autocoordinates = True - QtGui.QMessageBox.warning(self, - 'No coordinates found for the model', - '\n Automatic layouting will be done') - #raise Exception('Unsupported kkit version') - - - self.xmin,self.xmax,self.ymin,self.ymax,self.autoCordinatepos = autoCoordinates(self.meshEntry,self.srcdesConnection) + QMessageBox.warning(self, + 'No coordinates found for the model', + '\n Automatic layouting will be done') + kkitOrdinateUtil.autoCoordinates(self.meshEntry,self.srcdesConnection) # Scale factor to translate the x -y position to fit the Qt graphicalScene, scene width. """ if self.xmax-self.xmin != 0: @@ -237,14 +239,9 @@ def mooseObjOntoscene(self): for cmpt in sorted(self.meshEntry.keys()): self.createCompt(cmpt) self.qGraCompt[cmpt] - #comptRef = self.qGraCompt[cmpt] - - #Enzymes of all the compartments are placed first, \ - # so that when cplx (which is pool object) queries for its parent, it gets its \ - # parent enz co-ordinates with respect to QGraphicsscene """ for cmpt,memb in list(self.meshEntry.items()): - for enzObj in find_index(memb,'enzyme'): + for enzObj in memb.get('enzyme', []): enzinfo = enzObj.path+'/info' if enzObj.className == 'ZEnz': enzItem = EnzItem(enzObj,self.qGraCompt[cmpt]) @@ -254,25 +251,25 @@ def mooseObjOntoscene(self): self.setupSlot(enzObj,enzItem) for cmpt,memb in list(self.meshEntry.items()): - for poolObj in find_index(memb,'pool'): + for poolObj in kkitOrdinateUtil.find_index(memb,'pool'): poolinfo = poolObj.path+'/info' poolItem = PoolItem(poolObj,self.qGraCompt[cmpt]) self.setupDisplay(poolinfo,poolItem,"pool") self.setupSlot(poolObj,poolItem) - for cplxObj in find_index(memb,'cplx'): + for cplxObj in kkitOrdinateUtil.find_index(memb,'cplx'): cplxinfo = (cplxObj[0].parent).path+'/info' cplxItem = CplxItem(cplxObj,self.mooseId_GObj[element(cplxObj[0]).parent.getId()]) self.setupDisplay(cplxinfo,cplxItem,"cplx") self.setupSlot(cplxObj,cplxItem) - for reaObj in find_index(memb,'reaction'): + for reaObj in kkitOrdinateUtil.find_index(memb,'reaction'): reainfo = reaObj.path+'/info' reaItem = ReacItem(reaObj,self.qGraCompt[cmpt]) self.setupDisplay(reainfo,reaItem,"reaction") self.setupSlot(reaObj,reaItem) - for tabObj in find_index(memb,'table'): + for tabObj in kkitOrdinateUtil.find_index(memb,'table'): tabinfo = tabObj.path+'/info' tabItem = PoolItem(tabObj,self.qGraCompt[cmpt]) self.setupDisplay(tabinfo,tabItem,"tab") @@ -553,7 +550,6 @@ def updateScale( self, scale ): v.setRect(rectcompt.x()-comptWidth,rectcompt.y()-comptWidth,(rectcompt.width()+2*comptWidth),(rectcompt.height()+2*comptWidth)) if __name__ == "__main__": - app = QtGui.QApplication(sys.argv) size = QtCore.QSize(1024 ,768) modelPath = 'Kholodenko' #modelPath = 'acc61' @@ -563,19 +559,13 @@ def updateScale( self, scale ): modelPath = '5AreacB' itemignoreZooming = False try: - filepath = '../../Demos/Genesis_files/'+modelPath+'.g' - #filepath = '/home/harsha/genesis_files/gfile/'+modelPath+'.g' + sdir = os.path.dirname(__file__) + filepath = os.path.join(sdir, '../../data/Kholodenko.g') print(filepath) - f = open(filepath, "r") - loadModel(filepath,'/'+modelPath) - + moose.loadModel(filepath, '/'+modelPath) moose.le('/'+modelPath+'/kinetics') dt = KineticsWidget() dt.modelRoot ='/'+modelPath - ''' Loading moose signalling model in python ''' - #execfile('/home/harsha/BuildQ/Demos/Genesis_files/scriptKineticModel.py') - #dt.modelRoot = '/model' - dt.updateModelView() dt.show() diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index 43ebd76..116b680 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -210,15 +210,12 @@ def createCentralWidget(self): compt = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') ann = moose.Annotator(self.modelRoot + '/info') if compt: - #self.runTime = (moose.Annotator(self.modelRoot+'/info')).runtime - #solver = (moose.Annotator(self.modelRoot+'/info')).solver self.runTime = moose.element(ann).runtime solver = moose.element(ann).solver else: self.runTime = 100 solver = "gsl" self.schedular.simulationRuntime.setText(str(self.runTime)) - #preferences chemprefs = self.schedular.preferences.getChemicalPreferences() c = moose.Clock('/clock') self.simulationdt = c.tickDt[11] diff --git a/moosegui/plugins/kkitOrdinateUtil.py b/moosegui/plugins/kkitOrdinateUtil.py index 963792a..51685a7 100644 --- a/moosegui/plugins/kkitOrdinateUtil.py +++ b/moosegui/plugins/kkitOrdinateUtil.py @@ -412,7 +412,7 @@ def find_index(value, key): Value.get(key) to avoid expection which would raise if empty value in dictionary for a given key. """ - if value.get(key) != None: - return value.get(key) + if key in value: + return value[key] else: - raise ValueError('no dict with the key found') + raise ValueError("key '%s' not found" % key) diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index fb49458..94e9915 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -231,8 +231,8 @@ def editorMousePressEvent(self, event): ) popupmenu.exec_(self.mapToGlobal(event.pos())) - def editorMouseMoveEvent(self,event): + logger_.debug( "editorMouseMoveEvent %s" % str(event)) if self.state["press"]["mode"] == constants.INVALID: self.state["move"]["happened"] = False return diff --git a/moosegui/plugins/modelBuild.py b/moosegui/plugins/modelBuild.py index e70287a..3a12a9f 100644 --- a/moosegui/plugins/modelBuild.py +++ b/moosegui/plugins/modelBuild.py @@ -11,7 +11,7 @@ from moosegui.plugins import kkitUtil from PyQt5 import Qt, QtCore from PyQt5 import QtGui -from PyQt5.QtWidgets import QGraphicsScene +from PyQt5.QtWidgets import QGraphicsScene, QMessageBox import logging logger_ = logging.getLogger("moosegui.plugin.kkit") @@ -183,10 +183,10 @@ def checkCreate(scene, view, modelpath, mobj, string, ret_string, num, # displaced by some position, need to check how to deal with it posWrtComp = pos if ((mobj.parent).className == "Enz"): - QtGui.QMessageBox.information( + QMessageBox.information( None, "Drop Not possible", "'{}' has to have Pool as its parent and not Enzyme Complex". - format(string), QtGui.QMessageBox.Ok) + format(string), QMessageBox.Ok) return None else: enzparent = findCompartment(mobj) @@ -251,16 +251,15 @@ def checkCreate(scene, view, modelpath, mobj, string, ret_string, num, def createObj(scene, view, modelpath, string, pos, layoutPt): logger_.debug( "Crating object %s, %s, %s" % (modelpath, string, str(pos))) assert isinstance(view.sceneContainerPt, QGraphicsScene) - event_pos = pos - num = 0 - ret_string = " " + event_pos, num, ret_string = pos, 0, "" pos = view.mapToScene(event_pos) itemAt = view.sceneContainerPt.itemAt(float(pos.x()), float(pos.y()), QtGui.QTransform()) + logger_.debug( "\tItem At %s" % str(itemAt)) moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') moose.mooseDeleteChemSolver(modelpath) - mobj = "" + mobj = None - if itemAt != None: + if itemAt is not None: itemAtView = view.sceneContainerPt.itemAt(view.mapToScene(event_pos)) itemClass = type(itemAtView).__name__ if (itemClass == 'QGraphicsRectItem'): @@ -271,32 +270,32 @@ def createObj(scene, view, modelpath, string, pos, layoutPt): mobj = itemAtView.mobj if string == "CubeMesh" or string == "CylMesh": - ret_string, num = findUniqId(moose.element(modelpath), "Compartment", - 0) + ret_string, num = findUniqId(moose.element(modelpath), "Compartment", 0) comptexist = moose.wildcardFind(modelpath + '/##[ISA=ChemCompt]') if not len(comptexist): - if itemAt != None: - QtGui.QMessageBox.information( + if itemAt is not None: + QMessageBox.information( None, 'Drop Not possible', "'{}' currently single compartment model building is allowed" - .format(string), QtGui.QMessageBox.Ok) + .format(string), QMessageBox.Ok) return False else: + # create Rect here. + logger_.info("Mesh is not available") mobj = moose.element(modelpath) return True else: - QtGui.QMessageBox.information( + QMessageBox.information( None, 'Drop Not possible', - '\'{newString}\' currently single compartment model building is allowed' - .format(newString=string), QtGui.QMessageBox.Ok) + "'{}' currently single compartment model building is allowed" .format(string) + , QMessageBox.Ok) return False elif string == "Pool" or string == "BufPool" or string == "Reac" or string == "StimulusTable": if itemAt == None: - QtGui.QMessageBox.information( + QMessageBox.information( None, 'Drop Not possible', - '\'{newString}\' has to have compartment as its parent'.format( - newString=string), QtGui.QMessageBox.Ok) + "'{}' has to have compartment as its parent".format(string), QMessageBox.Ok) return False else: mobj = findCompartment(mobj) @@ -310,19 +309,19 @@ def createObj(scene, view, modelpath, string, pos, layoutPt): elif string == "Enz" or string == "MMenz": if itemAt != None: if ((mobj).className != "Pool" and (mobj).className != "BufPool"): - QtGui.QMessageBox.information( + QMessageBox.information( None, 'Drop Not possible', "'{}' has to have Pool as its parent".format(string), - QtGui.QMessageBox.Ok) + QMessageBox.Ok) return False else: ret_string, num = findUniqId(mobj, string, num) return True else: - QtGui.QMessageBox.information( + QMessageBox.information( None, 'Drop Not possible', "'{}' has to have Pool as its parent".format(string), - QtGui.QMessageBox.Ok) + QMessageBox.Ok) return False if ret_string.strip(): @@ -349,7 +348,7 @@ def findUniqId(mobj, string, num): return (string, num) else: num += 1 - return (findUniqId(mobj, string, num)) + return findUniqId(mobj, string, num) def findCompartment(mooseObj): if mooseObj.path == '/': From 0e8c6cc50529b1db65a7df85b400455d2f6751be Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 23:16:31 +0530 Subject: [PATCH 65/66] So very stupid. This GUI is one horrible mess of work. --- moosegui/config.py | 1 - moosegui/plugins/kkit.py | 68 +++++++++++++++-------------- moosegui/plugins/kkitViewcontrol.py | 2 +- moosegui/sidebar.py | 6 ++- 4 files changed, 41 insertions(+), 36 deletions(-) diff --git a/moosegui/config.py b/moosegui/config.py index 07b2148..241dd50 100644 --- a/moosegui/config.py +++ b/moosegui/config.py @@ -14,7 +14,6 @@ # Logger import logging logging.basicConfig(level=logging.DEBUG) -_logger = logging.getLogger('moosegui') KEY_UNDO_LENGTH = 'main/undolength' KEY_WINDOW_GEOMETRY = 'main/geometry' diff --git a/moosegui/plugins/kkit.py b/moosegui/plugins/kkit.py index 116b680..f755ef0 100644 --- a/moosegui/plugins/kkit.py +++ b/moosegui/plugins/kkit.py @@ -324,7 +324,8 @@ def getsceneCord(self): return self.cord def updateModelView(self): - self.getMooseObj() + self.initMooseObject() + logger_.info( "updateModelView called ... %s" % str(self.m) ) if not self.m: if hasattr(self, 'view') and isinstance(self.view, QWidget): self.layout().removeWidget(self.view) @@ -344,38 +345,38 @@ def updateModelView(self): hLayout = QGridLayout(self) self.setLayout(hLayout) hLayout.addWidget(self.view, 0, 0) + return + + if hasattr(self, 'view') and isinstance(self.view, QWidget): + self.layout().removeWidget(self.view) + + self.view = kkitViewcontrol.GraphicalView(self.modelRoot, + self.sceneContainer, self.border, self, self.createdItem) + + if isinstance(self, kineticEditorWidget): + self.mooseObjOntoscene() + self.drawLine_arrow() + self.view.setRefWidget("editorView") + self.view.setAcceptDrops(True) + self.view.dropped.connect(self.objectEditSlot) + hLayout = QGridLayout(self) + self.setLayout(hLayout) + hLayout.addWidget(self.view) + elif isinstance(self, KineticRunWidget): + self.view.setRefWidget("runView") + hLayout = QGridLayout(self) + self.setLayout(hLayout) + hLayout.addWidget(self.view) + self.view.fitInView( + self.sceneContainer.itemsBoundingRect().x() - 10, + self.sceneContainer.itemsBoundingRect().y() - 10, + self.sceneContainer.itemsBoundingRect().width() + 20, + self.sceneContainer.itemsBoundingRect().height() + 20, + Qt.Qt.IgnoreAspectRatio) else: - if hasattr(self, 'view') and isinstance(self.view, QWidget): - self.layout().removeWidget(self.view) - self.view = kkitViewcontrol.GraphicalView(self.modelRoot, - self.sceneContainer, - self.border, self, - self.createdItem) - if isinstance(self, kineticEditorWidget): - #self.getMooseObj() - self.mooseObjOntoscene() - self.drawLine_arrow() - self.view.setRefWidget("editorView") - self.view.setAcceptDrops(True) - self.view.dropped.connect(self.objectEditSlot) - hLayout = QGridLayout(self) - self.setLayout(hLayout) - hLayout.addWidget(self.view) - elif isinstance(self, KineticRunWidget): - self.view.setRefWidget("runView") - hLayout = QGridLayout(self) - self.setLayout(hLayout) - hLayout.addWidget(self.view) - self.view.fitInView( - self.sceneContainer.itemsBoundingRect().x() - 10, - self.sceneContainer.itemsBoundingRect().y() - 10, - self.sceneContainer.itemsBoundingRect().width() + 20, - self.sceneContainer.itemsBoundingRect().height() + 20, - Qt.Qt.IgnoreAspectRatio) - else: - logger_.warning("Unhandled type: %s:%s" % (type(self),self)) + logger_.warning("Unhandled type: %s:%s" % (type(self),self)) - def getMooseObj(self): + def initMooseObject(self): self.m = moose.wildcardFind(self.modelRoot + '/##[ISA=ChemCompt]') if self.m: self.srcdesConnection = {} @@ -459,6 +460,8 @@ def mooseObjOntoscene(self): self.mooseId_GObj.clear() else: self.mooseId_GObj = {} + + logger_.debug( "self.objPar: " + str(self.objPar) ) for k, v in self.objPar.items(): if isinstance(moose.element(k), moose.ChemCompt): self.createCompt(k) @@ -563,6 +566,7 @@ def comptChildrenBoundingRect(self): Qt.Qt.SolidLine, Qt.Qt.RoundCap, Qt.Qt.RoundJoin)) def createCompt(self, key): + logger_.debug( "Creating new compartment %s" % key) self.new_Compt = kkitQGraphics.ComptItem(self, 0, 0, 0, 0, key) self.qGraCompt[key] = self.new_Compt self.new_Compt.setRect(10, 10, 10, 10) @@ -1045,7 +1049,7 @@ def refresh(self): '/##[ISA=ChemCompt]') if self.Comptexist: # pass - self.getMooseObj() + self.initMooseObject() self.mooseObjOntoscene() self.drawLine_arrow(itemignoreZooming=False) diff --git a/moosegui/plugins/kkitViewcontrol.py b/moosegui/plugins/kkitViewcontrol.py index 94e9915..7a79f68 100644 --- a/moosegui/plugins/kkitViewcontrol.py +++ b/moosegui/plugins/kkitViewcontrol.py @@ -33,13 +33,13 @@ SDIR_ = os.path.dirname(__file__) class GraphicalView(QGraphicsView): - # NOTE: why this is not inside __init__? See # https://stackoverflow.com/a/2971426/1805129 and cry! dropped = QtCore.pyqtSignal('PyQt_PyObject') def __init__(self, modelRoot, parent, border, layoutPt, createdItem): QGraphicsView.__init__(self, parent) + logging.debug( "Creating GraphicalView " ) self.state = None self.move = False self.resetState() diff --git a/moosegui/sidebar.py b/moosegui/sidebar.py index 612b499..cb42999 100644 --- a/moosegui/sidebar.py +++ b/moosegui/sidebar.py @@ -23,7 +23,9 @@ from moosegui import SettingsDialog from moosegui import config -_logger = config._logger + +import logging +logger_ = logging.getLogger("sidebar") ICON_DIRECTORY = "../icons" HAND_ICON_FILENAME = "hand.png" @@ -50,7 +52,7 @@ def create_action( parent return action def do_nothing(event, msg): - _logger.debug( "do_nothing: %s" % msg ) + logger_.debug( "do_nothing: %s" % msg ) def mode_action( parent , callback = lambda ev: do_nothing(ev, "Action clicked") From 98672235660bbc76171ec2f92c2a4d0a5074c501 Mon Sep 17 00:00:00 2001 From: Dilawar Singh Date: Thu, 13 Jun 2019 23:25:48 +0530 Subject: [PATCH 66/66] Merged devel branch. --- .gitmodules | 3 + build/lib/moosegui/MooseCanvas.py | 104 ++ build/lib/moosegui/MooseWindow.py | 44 + build/lib/moosegui/PyShell.py | 1628 +++++++++++++++++++++++++++++ build/lib/moosegui/__init__.py | 1 + build/lib/moosegui/_globals.py | 29 + build/lib/moosegui/canvas.py | 71 ++ build/lib/moosegui/main.py | 70 ++ build/lib/moosegui/menus.py | 73 ++ build/lib/moosegui/pyshell.py | 1538 +++++++++++++++++++++++++++ build/lib/moosegui/toolbar.py | 74 ++ drawsbml | 1 + test_model.py | 882 ++++++++++++++++ 13 files changed, 4518 insertions(+) create mode 100644 .gitmodules create mode 100644 build/lib/moosegui/MooseCanvas.py create mode 100644 build/lib/moosegui/MooseWindow.py create mode 100644 build/lib/moosegui/PyShell.py create mode 100644 build/lib/moosegui/__init__.py create mode 100644 build/lib/moosegui/_globals.py create mode 100644 build/lib/moosegui/canvas.py create mode 100644 build/lib/moosegui/main.py create mode 100644 build/lib/moosegui/menus.py create mode 100644 build/lib/moosegui/pyshell.py create mode 100644 build/lib/moosegui/toolbar.py create mode 160000 drawsbml create mode 100644 test_model.py diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..65c6d20 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "drawsbml"] + path = drawsbml + url = git@github.com:dilawar/drawsbml diff --git a/build/lib/moosegui/MooseCanvas.py b/build/lib/moosegui/MooseCanvas.py new file mode 100644 index 0000000..26446c7 --- /dev/null +++ b/build/lib/moosegui/MooseCanvas.py @@ -0,0 +1,104 @@ +"""MooseCanvas.py: + + +Here is my Canvas. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys +import random +import os + +try: + import Tkinter as tk +except ImportError as e: + import tkinter as tk + +import logging + +class MooseCanvas( tk.Frame ): + + def __init__(self, root = None): + + + self.canvas = tk.Canvas( root , width=800, height=800 ) + self.canvas.create_line( 0, 0, 200, 200 ); + + ''' + self.xsb = tk.Scrollbar( self.canvas, + orient="horizontal", command=self.canvas.xview + ) + + self.ysb = tk.Scrollbar( self.canvas, orient="vertical", + command=self.canvas.yview + ) + self.canvas.configure( + yscrollcommand=self.ysb.set, + xscrollcommand=self.xsb.set + ) + + self.xsb.grid(row=1, column=0, sticky="ew") + self.ysb.grid(row=0, column=1, sticky="ns") + # self.grid_rowconfigure(0, weight=1) + # self.grid_columnconfigure(0, weight=1) + ''' + + # This is what enables using the mouse: + self.canvas.bind("", self.move_start) + self.canvas.bind("", self.move_move) + # linux scroll + self.canvas.bind("", self.zoomerP) + self.canvas.bind("", self.zoomerM) + # windows scroll + self.canvas.bind("", self.zoomer) + # self.canvas.bind( "", self.keyboard ) + self.canvas.bind( "Move", self.keyboard ) + self.canvas.bind( "", self.mouseCallback ) + self.canvas.grid( row = 0, column = 0, sticky = 'news' ) + # self.canvas.pack( ) + + # move + def move_start(self, event): + self.canvas.scan_mark(event.x, event.y) + + def move_move(self, event): + self.canvas.scan_dragto(event.x, event.y, gain=1) + + # windows zoom + def zoomer(self, event): + if (event.delta > 0): + self.canvas.scale("all", event.x, event.y, 1.1, 1.1) + elif (event.delta < 0): + self.canvas.scale("all", event.x, event.y, 0.9, 0.9) + self.canvas.configure(scrollregion=self.canvas.bbox("all")) + + # linux zoom + def zoomerP(self, event): + self.canvas.scale("all", event.x, event.y, 1.1, 1.1) + self.canvas.configure(scrollregion=self.canvas.bbox("all")) + + def zoomerM(self, event): + self.canvas.scale("all", event.x, event.y, 0.9, 0.9) + self.canvas.configure(scrollregion=self.canvas.bbox("all")) + + def mouseCallback(self, event ): + logging.info( 'Button pressed %s %s' % ( event.x, event.y ) ) + + def keyboard(self, event ): + logging.info( 'Key pressed %s' % ( event.char ) ) + +if __name__ == "__main__": + root = tk.Tk() + a = MooseCanvas( root ) + # a.plot_random_rects( ) + a.pack(fill="both", expand=True) + root.mainloop() diff --git a/build/lib/moosegui/MooseWindow.py b/build/lib/moosegui/MooseWindow.py new file mode 100644 index 0000000..c2b5cb6 --- /dev/null +++ b/build/lib/moosegui/MooseWindow.py @@ -0,0 +1,44 @@ +"""MooseWindow.py: + +MooseWindow. + +""" + +__author__ = "Me" +__copyright__ = "Copyright 2016, Me" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Me" +__email__ = "" +__status__ = "Development" + +import sys +import os + +try: + import Tkinter as tk +except ImportError as e: + import tkinter as tk + +class MooseWindow( tk.Tk ): + """docstring for MooseWindow""" + + def __init__( self, title = 'MOOSE' ): + tk.Tk.__init__( self ) + self.title( title ) + self.state = None + self.attributes( '-zoomed', True ) + self.bind( "", self.toggle_fullscreen ) + self.bind( "", self.end_fullscreen ) + + + def toggle_fullscreen(self, event=None): + self.state = not self.state # Just toggling the boolean + self.attributes("-fullscreen", self.state) + return "break" + + def end_fullscreen(self, event=None): + self.state = False + self.attributes("-fullscreen", False) + return "break" diff --git a/build/lib/moosegui/PyShell.py b/build/lib/moosegui/PyShell.py new file mode 100644 index 0000000..5b1ccff --- /dev/null +++ b/build/lib/moosegui/PyShell.py @@ -0,0 +1,1628 @@ +#! /usr/bin/env python +from __future__ import print_function + +import os +import os.path +import sys +import string +import getopt +import re +import socket +import time +import threading +import io + +import linecache +from code import InteractiveInterpreter +from platform import python_version, system + +try: + from Tkinter import * +except ImportError: + print("** IDLE can't import Tkinter.\n" + "Your Python may not be configured for Tk. **", file=sys.__stderr__) + sys.exit(1) +import tkMessageBox + +from idlelib.EditorWindow import EditorWindow, fixwordbreaks +from idlelib.FileList import FileList +from idlelib.ColorDelegator import ColorDelegator +from idlelib.UndoDelegator import UndoDelegator +from idlelib.OutputWindow import OutputWindow +from idlelib.configHandler import idleConf +from idlelib import rpc +from idlelib import Debugger +from idlelib import RemoteDebugger +from idlelib import macosxSupport +from idlelib import IOBinding + +IDENTCHARS = string.ascii_letters + string.digits + "_" +HOST = '127.0.0.1' # python execution server on localhost loopback +PORT = 0 # someday pass in host, port for remote debug capability + +try: + from signal import SIGTERM +except ImportError: + SIGTERM = 15 + +# Override warnings module to write to warning_stream. Initialize to send IDLE +# internal warnings to the console. ScriptBinding.check_syntax() will +# temporarily redirect the stream to the shell window to display warnings when +# checking user's code. +warning_stream = sys.__stderr__ # None, at least on Windows, if no console. +import warnings + +def idle_formatwarning(message, category, filename, lineno, line=None): + """Format warnings the IDLE way.""" + + s = "\nWarning (from warnings module):\n" + s += ' File \"%s\", line %s\n' % (filename, lineno) + if line is None: + line = linecache.getline(filename, lineno) + line = line.strip() + if line: + s += " %s\n" % line + s += "%s: %s\n" % (category.__name__, message) + return s + +def idle_showwarning( + message, category, filename, lineno, file=None, line=None): + """Show Idle-format warning (after replacing warnings.showwarning). + + The differences are the formatter called, the file=None replacement, + which can be None, the capture of the consequence AttributeError, + and the output of a hard-coded prompt. + """ + if file is None: + file = warning_stream + try: + file.write(idle_formatwarning( + message, category, filename, lineno, line=line)) + file.write(">>> ") + except (AttributeError, IOError): + pass # if file (probably __stderr__) is invalid, skip warning. + +_warnings_showwarning = None + +def capture_warnings(capture): + "Replace warning.showwarning with idle_showwarning, or reverse." + + global _warnings_showwarning + if capture: + if _warnings_showwarning is None: + _warnings_showwarning = warnings.showwarning + warnings.showwarning = idle_showwarning + else: + if _warnings_showwarning is not None: + warnings.showwarning = _warnings_showwarning + _warnings_showwarning = None + +capture_warnings(True) + +def extended_linecache_checkcache(filename=None, + orig_checkcache=linecache.checkcache): + """Extend linecache.checkcache to preserve the entries + + Rather than repeating the linecache code, patch it to save the + entries, call the original linecache.checkcache() + (skipping them), and then restore the saved entries. + + orig_checkcache is bound at definition time to the original + method, allowing it to be patched. + """ + cache = linecache.cache + save = {} + for key in list(cache): + if key[:1] + key[-1:] == '<>': + save[key] = cache.pop(key) + orig_checkcache(filename) + cache.update(save) + +# Patch linecache.checkcache(): +linecache.checkcache = extended_linecache_checkcache + + +class PyShellEditorWindow(EditorWindow): + "Regular text edit window in IDLE, supports breakpoints" + + def __init__(self, *args): + self.breakpoints = [] + EditorWindow.__init__(self, *args) + self.text.bind("<>", self.set_breakpoint_here) + self.text.bind("<>", self.clear_breakpoint_here) + self.text.bind("<>", self.flist.open_shell) + + self.breakpointPath = os.path.join(idleConf.GetUserCfgDir(), + 'breakpoints.lst') + # whenever a file is changed, restore breakpoints + def filename_changed_hook(old_hook=self.io.filename_change_hook, + self=self): + self.restore_file_breaks() + old_hook() + self.io.set_filename_change_hook(filename_changed_hook) + if self.io.filename: + self.restore_file_breaks() + self.color_breakpoint_text() + + rmenu_specs = [ + ("Cut", "<>", "rmenu_check_cut"), + ("Copy", "<>", "rmenu_check_copy"), + ("Paste", "<>", "rmenu_check_paste"), + ("Set Breakpoint", "<>", None), + ("Clear Breakpoint", "<>", None) + ] + + def color_breakpoint_text(self, color=True): + "Turn colorizing of breakpoint text on or off" + if self.io is None: + # possible due to update in restore_file_breaks + return + if color: + theme = idleConf.CurrentTheme() + cfg = idleConf.GetHighlight(theme, "break") + else: + cfg = {'foreground': '', 'background': ''} + self.text.tag_config('BREAK', cfg) + + def set_breakpoint(self, lineno): + text = self.text + filename = self.io.filename + text.tag_add("BREAK", "%d.0" % lineno, "%d.0" % (lineno+1)) + try: + self.breakpoints.index(lineno) + except ValueError: # only add if missing, i.e. do once + self.breakpoints.append(lineno) + try: # update the subprocess debugger + debug = self.flist.pyshell.interp.debugger + debug.set_breakpoint_here(filename, lineno) + except: # but debugger may not be active right now.... + pass + + def set_breakpoint_here(self, event=None): + text = self.text + filename = self.io.filename + if not filename: + text.bell() + return + lineno = int(float(text.index("insert"))) + self.set_breakpoint(lineno) + + def clear_breakpoint_here(self, event=None): + text = self.text + filename = self.io.filename + if not filename: + text.bell() + return + lineno = int(float(text.index("insert"))) + try: + self.breakpoints.remove(lineno) + except: + pass + text.tag_remove("BREAK", "insert linestart",\ + "insert lineend +1char") + try: + debug = self.flist.pyshell.interp.debugger + debug.clear_breakpoint_here(filename, lineno) + except: + pass + + def clear_file_breaks(self): + if self.breakpoints: + text = self.text + filename = self.io.filename + if not filename: + text.bell() + return + self.breakpoints = [] + text.tag_remove("BREAK", "1.0", END) + try: + debug = self.flist.pyshell.interp.debugger + debug.clear_file_breaks(filename) + except: + pass + + def store_file_breaks(self): + "Save breakpoints when file is saved" + # XXX 13 Dec 2002 KBK Currently the file must be saved before it can + # be run. The breaks are saved at that time. If we introduce + # a temporary file save feature the save breaks functionality + # needs to be re-verified, since the breaks at the time the + # temp file is created may differ from the breaks at the last + # permanent save of the file. Currently, a break introduced + # after a save will be effective, but not persistent. + # This is necessary to keep the saved breaks synched with the + # saved file. + # + # Breakpoints are set as tagged ranges in the text. + # Since a modified file has to be saved before it is + # run, and since self.breakpoints (from which the subprocess + # debugger is loaded) is updated during the save, the visible + # breaks stay synched with the subprocess even if one of these + # unexpected breakpoint deletions occurs. + breaks = self.breakpoints + filename = self.io.filename + try: + with open(self.breakpointPath,"r") as old_file: + lines = old_file.readlines() + except IOError: + lines = [] + try: + with open(self.breakpointPath,"w") as new_file: + for line in lines: + if not line.startswith(filename + '='): + new_file.write(line) + self.update_breakpoints() + breaks = self.breakpoints + if breaks: + new_file.write(filename + '=' + str(breaks) + '\n') + except IOError as err: + if not getattr(self.root, "breakpoint_error_displayed", False): + self.root.breakpoint_error_displayed = True + tkMessageBox.showerror(title='IDLE Error', + message='Unable to update breakpoint list:\n%s' + % str(err), + parent=self.text) + + def restore_file_breaks(self): + self.text.update() # this enables setting "BREAK" tags to be visible + if self.io is None: + # can happen if IDLE closes due to the .update() call + return + filename = self.io.filename + if filename is None: + return + if os.path.isfile(self.breakpointPath): + lines = open(self.breakpointPath,"r").readlines() + for line in lines: + if line.startswith(filename + '='): + breakpoint_linenumbers = eval(line[len(filename)+1:]) + for breakpoint_linenumber in breakpoint_linenumbers: + self.set_breakpoint(breakpoint_linenumber) + + def update_breakpoints(self): + "Retrieves all the breakpoints in the current window" + text = self.text + ranges = text.tag_ranges("BREAK") + linenumber_list = self.ranges_to_linenumbers(ranges) + self.breakpoints = linenumber_list + + def ranges_to_linenumbers(self, ranges): + lines = [] + for index in range(0, len(ranges), 2): + lineno = int(float(ranges[index].string)) + end = int(float(ranges[index+1].string)) + while lineno < end: + lines.append(lineno) + lineno += 1 + return lines + +# XXX 13 Dec 2002 KBK Not used currently +# def saved_change_hook(self): +# "Extend base method - clear breaks if module is modified" +# if not self.get_saved(): +# self.clear_file_breaks() +# EditorWindow.saved_change_hook(self) + + def _close(self): + "Extend base method - clear breaks when module is closed" + self.clear_file_breaks() + EditorWindow._close(self) + + +class PyShellFileList(FileList): + "Extend base class: IDLE supports a shell and breakpoints" + + # override FileList's class variable, instances return PyShellEditorWindow + # instead of EditorWindow when new edit windows are created. + EditorWindow = PyShellEditorWindow + + pyshell = None + + def open_shell(self, event=None): + if self.pyshell: + self.pyshell.top.wakeup() + else: + self.pyshell = PyShell(self) + if self.pyshell: + if not self.pyshell.begin(): + return None + return self.pyshell + + +class ModifiedColorDelegator(ColorDelegator): + "Extend base class: colorizer for the shell window itself" + + def __init__(self): + ColorDelegator.__init__(self) + self.LoadTagDefs() + + def recolorize_main(self): + self.tag_remove("TODO", "1.0", "iomark") + self.tag_add("SYNC", "1.0", "iomark") + ColorDelegator.recolorize_main(self) + + def LoadTagDefs(self): + ColorDelegator.LoadTagDefs(self) + theme = idleConf.CurrentTheme() + self.tagdefs.update({ + "stdin": {'background':None,'foreground':None}, + "stdout": idleConf.GetHighlight(theme, "stdout"), + "stderr": idleConf.GetHighlight(theme, "stderr"), + "console": idleConf.GetHighlight(theme, "console"), + }) + + def removecolors(self): + # Don't remove shell color tags before "iomark" + for tag in self.tagdefs: + self.tag_remove(tag, "iomark", "end") + +class ModifiedUndoDelegator(UndoDelegator): + "Extend base class: forbid insert/delete before the I/O mark" + + def insert(self, index, chars, tags=None): + try: + if self.delegate.compare(index, "<", "iomark"): + self.delegate.bell() + return + except TclError: + pass + UndoDelegator.insert(self, index, chars, tags) + + def delete(self, index1, index2=None): + try: + if self.delegate.compare(index1, "<", "iomark"): + self.delegate.bell() + return + except TclError: + pass + UndoDelegator.delete(self, index1, index2) + + +class MyRPCClient(rpc.RPCClient): + + def handle_EOF(self): + "Override the base class - just re-raise EOFError" + raise EOFError + + +class ModifiedInterpreter(InteractiveInterpreter): + + def __init__(self, tkconsole): + self.tkconsole = tkconsole + locals = sys.modules['__main__'].__dict__ + InteractiveInterpreter.__init__(self, locals=locals) + self.save_warnings_filters = None + self.restarting = False + self.subprocess_arglist = None + self.port = PORT + self.original_compiler_flags = self.compile.compiler.flags + + _afterid = None + rpcclt = None + rpcpid = None + + def spawn_subprocess(self): + if self.subprocess_arglist is None: + self.subprocess_arglist = self.build_subprocess_arglist() + args = self.subprocess_arglist + self.rpcpid = os.spawnv(os.P_NOWAIT, sys.executable, args) + + def build_subprocess_arglist(self): + assert (self.port!=0), ( + "Socket should have been assigned a port number.") + w = ['-W' + s for s in sys.warnoptions] + if 1/2 > 0: # account for new division + w.append('-Qnew') + # Maybe IDLE is installed and is being accessed via sys.path, + # or maybe it's not installed and the idle.py script is being + # run from the IDLE source directory. + del_exitf = idleConf.GetOption('main', 'General', 'delete-exitfunc', + default=False, type='bool') + if __name__ == 'idlelib.PyShell': + command = "__import__('idlelib.run').run.main(%r)" % (del_exitf,) + else: + command = "__import__('run').main(%r)" % (del_exitf,) + if sys.platform[:3] == 'win' and ' ' in sys.executable: + # handle embedded space in path by quoting the argument + decorated_exec = '"%s"' % sys.executable + else: + decorated_exec = sys.executable + return [decorated_exec] + w + ["-c", command, str(self.port)] + + def start_subprocess(self): + addr = (HOST, self.port) + # GUI makes several attempts to acquire socket, listens for connection + for i in range(3): + time.sleep(i) + try: + self.rpcclt = MyRPCClient(addr) + break + except socket.error: + pass + else: + self.display_port_binding_error() + return None + # if PORT was 0, system will assign an 'ephemeral' port. Find it out: + self.port = self.rpcclt.listening_sock.getsockname()[1] + # if PORT was not 0, probably working with a remote execution server + if PORT != 0: + # To allow reconnection within the 2MSL wait (cf. Stevens TCP + # V1, 18.6), set SO_REUSEADDR. Note that this can be problematic + # on Windows since the implementation allows two active sockets on + # the same address! + self.rpcclt.listening_sock.setsockopt(socket.SOL_SOCKET, + socket.SO_REUSEADDR, 1) + self.spawn_subprocess() + #time.sleep(20) # test to simulate GUI not accepting connection + # Accept the connection from the Python execution server + self.rpcclt.listening_sock.settimeout(10) + try: + self.rpcclt.accept() + except socket.timeout: + self.display_no_subprocess_error() + return None + self.rpcclt.register("console", self.tkconsole) + self.rpcclt.register("stdin", self.tkconsole.stdin) + self.rpcclt.register("stdout", self.tkconsole.stdout) + self.rpcclt.register("stderr", self.tkconsole.stderr) + self.rpcclt.register("flist", self.tkconsole.flist) + self.rpcclt.register("linecache", linecache) + self.rpcclt.register("interp", self) + self.transfer_path(with_cwd=True) + self.poll_subprocess() + return self.rpcclt + + def restart_subprocess(self, with_cwd=False, filename=''): + if self.restarting: + return self.rpcclt + self.restarting = True + # close only the subprocess debugger + debug = self.getdebugger() + if debug: + try: + # Only close subprocess debugger, don't unregister gui_adap! + RemoteDebugger.close_subprocess_debugger(self.rpcclt) + except: + pass + # Kill subprocess, spawn a new one, accept connection. + self.rpcclt.close() + self.unix_terminate() + console = self.tkconsole + was_executing = console.executing + console.executing = False + self.spawn_subprocess() + try: + self.rpcclt.accept() + except socket.timeout: + self.display_no_subprocess_error() + return None + self.transfer_path(with_cwd=with_cwd) + console.stop_readline() + # annotate restart in shell window and mark it + console.text.delete("iomark", "end-1c") + tag = 'RESTART: ' + (filename if filename else 'Shell') + halfbar = ((int(console.width) -len(tag) - 4) // 2) * '=' + console.write("\n{0} {1} {0}".format(halfbar, tag)) + console.text.mark_set("restart", "end-1c") + console.text.mark_gravity("restart", "left") + if not filename: + console.showprompt() + # restart subprocess debugger + if debug: + # Restarted debugger connects to current instance of debug GUI + RemoteDebugger.restart_subprocess_debugger(self.rpcclt) + # reload remote debugger breakpoints for all PyShellEditWindows + debug.load_breakpoints() + self.compile.compiler.flags = self.original_compiler_flags + self.restarting = False + return self.rpcclt + + def __request_interrupt(self): + self.rpcclt.remotecall("exec", "interrupt_the_server", (), {}) + + def interrupt_subprocess(self): + threading.Thread(target=self.__request_interrupt).start() + + def kill_subprocess(self): + if self._afterid is not None: + self.tkconsole.text.after_cancel(self._afterid) + try: + self.rpcclt.close() + except AttributeError: # no socket + pass + self.unix_terminate() + self.tkconsole.executing = False + self.rpcclt = None + + def unix_terminate(self): + "UNIX: make sure subprocess is terminated and collect status" + if hasattr(os, 'kill'): + try: + os.kill(self.rpcpid, SIGTERM) + except OSError: + # process already terminated: + return + else: + try: + os.waitpid(self.rpcpid, 0) + except OSError: + return + + def transfer_path(self, with_cwd=False): + if with_cwd: # Issue 13506 + path = [''] # include Current Working Directory + path.extend(sys.path) + else: + path = sys.path + + self.runcommand("""if 1: + import sys as _sys + _sys.path = %r + del _sys + \n""" % (path,)) + + active_seq = None + + def poll_subprocess(self): + clt = self.rpcclt + if clt is None: + return + try: + response = clt.pollresponse(self.active_seq, wait=0.05) + except (EOFError, IOError, KeyboardInterrupt): + # lost connection or subprocess terminated itself, restart + # [the KBI is from rpc.SocketIO.handle_EOF()] + if self.tkconsole.closing: + return + response = None + self.restart_subprocess() + if response: + self.tkconsole.resetoutput() + self.active_seq = None + how, what = response + console = self.tkconsole.console + if how == "OK": + if what is not None: + print(repr(what), file=console) + elif how == "EXCEPTION": + if self.tkconsole.getvar("<>"): + self.remote_stack_viewer() + elif how == "ERROR": + errmsg = "PyShell.ModifiedInterpreter: Subprocess ERROR:\n" + print(errmsg, what, file=sys.__stderr__) + print(errmsg, what, file=console) + # we received a response to the currently active seq number: + try: + self.tkconsole.endexecuting() + except AttributeError: # shell may have closed + pass + # Reschedule myself + if not self.tkconsole.closing: + self._afterid = self.tkconsole.text.after( + self.tkconsole.pollinterval, self.poll_subprocess) + + debugger = None + + def setdebugger(self, debugger): + self.debugger = debugger + + def getdebugger(self): + return self.debugger + + def open_remote_stack_viewer(self): + """Initiate the remote stack viewer from a separate thread. + + This method is called from the subprocess, and by returning from this + method we allow the subprocess to unblock. After a bit the shell + requests the subprocess to open the remote stack viewer which returns a + static object looking at the last exception. It is queried through + the RPC mechanism. + + """ + self.tkconsole.text.after(300, self.remote_stack_viewer) + return + + def remote_stack_viewer(self): + from idlelib import RemoteObjectBrowser + oid = self.rpcclt.remotequeue("exec", "stackviewer", ("flist",), {}) + if oid is None: + self.tkconsole.root.bell() + return + item = RemoteObjectBrowser.StubObjectTreeItem(self.rpcclt, oid) + from idlelib.TreeWidget import ScrolledCanvas, TreeNode + top = Toplevel(self.tkconsole.root) + theme = idleConf.CurrentTheme() + background = idleConf.GetHighlight(theme, 'normal')['background'] + sc = ScrolledCanvas(top, bg=background, highlightthickness=0) + sc.frame.pack(expand=1, fill="both") + node = TreeNode(sc.canvas, None, item) + node.expand() + # XXX Should GC the remote tree when closing the window + + gid = 0 + + def execsource(self, source): + "Like runsource() but assumes complete exec source" + filename = self.stuffsource(source) + self.execfile(filename, source) + + def execfile(self, filename, source=None): + "Execute an existing file" + if source is None: + source = open(filename, "r").read() + try: + code = compile(source, filename, "exec", dont_inherit=True) + except (OverflowError, SyntaxError): + self.tkconsole.resetoutput() + print('*** Error in script or command!\n' + 'Traceback (most recent call last):', + file=self.tkconsole.stderr) + InteractiveInterpreter.showsyntaxerror(self, filename) + self.tkconsole.showprompt() + else: + self.runcode(code) + + def runsource(self, source): + "Extend base class method: Stuff the source in the line cache first" + filename = self.stuffsource(source) + self.more = 0 + self.save_warnings_filters = warnings.filters[:] + warnings.filterwarnings(action="error", category=SyntaxWarning) + if isinstance(source, unicode) and IOBinding.encoding != 'utf-8': + try: + source = '# -*- coding: %s -*-\n%s' % ( + IOBinding.encoding, + source.encode(IOBinding.encoding)) + except UnicodeError: + self.tkconsole.resetoutput() + self.write("Unsupported characters in input\n") + return + try: + # InteractiveInterpreter.runsource() calls its runcode() method, + # which is overridden (see below) + return InteractiveInterpreter.runsource(self, source, filename) + finally: + if self.save_warnings_filters is not None: + warnings.filters[:] = self.save_warnings_filters + self.save_warnings_filters = None + + def stuffsource(self, source): + "Stuff source in the filename cache" + filename = "" % self.gid + self.gid = self.gid + 1 + lines = source.split("\n") + linecache.cache[filename] = len(source)+1, 0, lines, filename + return filename + + def prepend_syspath(self, filename): + "Prepend sys.path with file's directory if not already included" + self.runcommand("""if 1: + _filename = %r + import sys as _sys + from os.path import dirname as _dirname + _dir = _dirname(_filename) + if not _dir in _sys.path: + _sys.path.insert(0, _dir) + del _filename, _sys, _dirname, _dir + \n""" % (filename,)) + + def showsyntaxerror(self, filename=None): + """Extend base class method: Add Colorizing + + Color the offending position instead of printing it and pointing at it + with a caret. + + """ + text = self.tkconsole.text + stuff = self.unpackerror() + if stuff: + msg, lineno, offset, line = stuff + if lineno == 1: + pos = "iomark + %d chars" % (offset-1) + else: + pos = "iomark linestart + %d lines + %d chars" % \ + (lineno-1, offset-1) + text.tag_add("ERROR", pos) + text.see(pos) + char = text.get(pos) + if char and char in IDENTCHARS: + text.tag_add("ERROR", pos + " wordstart", pos) + self.tkconsole.resetoutput() + self.write("SyntaxError: %s\n" % str(msg)) + else: + self.tkconsole.resetoutput() + InteractiveInterpreter.showsyntaxerror(self, filename) + self.tkconsole.showprompt() + + def unpackerror(self): + type, value, tb = sys.exc_info() + ok = type is SyntaxError + if ok: + try: + msg, (dummy_filename, lineno, offset, line) = value + if not offset: + offset = 0 + except: + ok = 0 + if ok: + return msg, lineno, offset, line + else: + return None + + def showtraceback(self): + "Extend base class method to reset output properly" + self.tkconsole.resetoutput() + self.checklinecache() + InteractiveInterpreter.showtraceback(self) + if self.tkconsole.getvar("<>"): + self.tkconsole.open_stack_viewer() + + def checklinecache(self): + c = linecache.cache + for key in c.keys(): + if key[:1] + key[-1:] != "<>": + del c[key] + + def runcommand(self, code): + "Run the code without invoking the debugger" + # The code better not raise an exception! + if self.tkconsole.executing: + self.display_executing_dialog() + return 0 + if self.rpcclt: + self.rpcclt.remotequeue("exec", "runcode", (code,), {}) + else: + exec code in self.locals + return 1 + + def runcode(self, code): + "Override base class method" + if self.tkconsole.executing: + self.interp.restart_subprocess() + self.checklinecache() + if self.save_warnings_filters is not None: + warnings.filters[:] = self.save_warnings_filters + self.save_warnings_filters = None + debugger = self.debugger + try: + self.tkconsole.beginexecuting() + if not debugger and self.rpcclt is not None: + self.active_seq = self.rpcclt.asyncqueue("exec", "runcode", + (code,), {}) + elif debugger: + debugger.run(code, self.locals) + else: + exec code in self.locals + except SystemExit: + if not self.tkconsole.closing: + if tkMessageBox.askyesno( + "Exit?", + "Do you want to exit altogether?", + default="yes", + parent=self.tkconsole.text): + raise + else: + self.showtraceback() + else: + raise + except: + if use_subprocess: + print("IDLE internal error in runcode()", + file=self.tkconsole.stderr) + self.showtraceback() + self.tkconsole.endexecuting() + else: + if self.tkconsole.canceled: + self.tkconsole.canceled = False + print("KeyboardInterrupt", file=self.tkconsole.stderr) + else: + self.showtraceback() + finally: + if not use_subprocess: + try: + self.tkconsole.endexecuting() + except AttributeError: # shell may have closed + pass + + def write(self, s): + "Override base class method" + self.tkconsole.stderr.write(s) + + def display_port_binding_error(self): + tkMessageBox.showerror( + "Port Binding Error", + "IDLE can't bind to a TCP/IP port, which is necessary to " + "communicate with its Python execution server. This might be " + "because no networking is installed on this computer. " + "Run IDLE with the -n command line switch to start without a " + "subprocess and refer to Help/IDLE Help 'Running without a " + "subprocess' for further details.", + parent=self.tkconsole.text) + + def display_no_subprocess_error(self): + tkMessageBox.showerror( + "Subprocess Startup Error", + "IDLE's subprocess didn't make connection. Either IDLE can't " + "start a subprocess or personal firewall software is blocking " + "the connection.", + parent=self.tkconsole.text) + + def display_executing_dialog(self): + tkMessageBox.showerror( + "Already executing", + "The Python Shell window is already executing a command; " + "please wait until it is finished.", + parent=self.tkconsole.text) + + +class PyShell(OutputWindow): + + shell_title = "Python " + python_version() + " Shell" + + # Override classes + ColorDelegator = ModifiedColorDelegator + UndoDelegator = ModifiedUndoDelegator + + # Override menus + menu_specs = [ + ("file", "_File"), + ("edit", "_Edit"), + ("debug", "_Debug"), + ("options", "_Options"), + ("windows", "_Window"), + ("help", "_Help"), + ] + + + # New classes + from idlelib.IdleHistory import History + + def __init__(self, flist=None): + if use_subprocess: + ms = self.menu_specs + if ms[2][0] != "shell": + ms.insert(2, ("shell", "She_ll")) + self.interp = ModifiedInterpreter(self) + if flist is None: + root = Tk() + fixwordbreaks(root) + root.withdraw() + flist = PyShellFileList(root) + # + OutputWindow.__init__(self, flist, None, None) + # +## self.config(usetabs=1, indentwidth=8, context_use_ps1=1) + self.usetabs = True + # indentwidth must be 8 when using tabs. See note in EditorWindow: + self.indentwidth = 8 + self.context_use_ps1 = True + # + text = self.text + text.configure(wrap="char") + text.bind("<>", self.enter_callback) + text.bind("<>", self.linefeed_callback) + text.bind("<>", self.cancel_callback) + text.bind("<>", self.eof_callback) + text.bind("<>", self.open_stack_viewer) + text.bind("<>", self.toggle_debugger) + text.bind("<>", self.toggle_jit_stack_viewer) + if use_subprocess: + text.bind("<>", self.view_restart_mark) + text.bind("<>", self.restart_shell) + # + self.save_stdout = sys.stdout + self.save_stderr = sys.stderr + self.save_stdin = sys.stdin + from idlelib import IOBinding + self.stdin = PseudoInputFile(self, "stdin", IOBinding.encoding) + self.stdout = PseudoOutputFile(self, "stdout", IOBinding.encoding) + self.stderr = PseudoOutputFile(self, "stderr", IOBinding.encoding) + self.console = PseudoOutputFile(self, "console", IOBinding.encoding) + if not use_subprocess: + sys.stdout = self.stdout + sys.stderr = self.stderr + sys.stdin = self.stdin + # + self.history = self.History(self.text) + # + self.pollinterval = 50 # millisec + + def get_standard_extension_names(self): + return idleConf.GetExtensions(shell_only=True) + + reading = False + executing = False + canceled = False + endoffile = False + closing = False + _stop_readline_flag = False + + def set_warning_stream(self, stream): + global warning_stream + warning_stream = stream + + def get_warning_stream(self): + return warning_stream + + def toggle_debugger(self, event=None): + if self.executing: + tkMessageBox.showerror("Don't debug now", + "You can only toggle the debugger when idle", + parent=self.text) + self.set_debugger_indicator() + return "break" + else: + db = self.interp.getdebugger() + if db: + self.close_debugger() + else: + self.open_debugger() + + def set_debugger_indicator(self): + db = self.interp.getdebugger() + self.setvar("<>", not not db) + + def toggle_jit_stack_viewer(self, event=None): + pass # All we need is the variable + + def close_debugger(self): + db = self.interp.getdebugger() + if db: + self.interp.setdebugger(None) + db.close() + if self.interp.rpcclt: + RemoteDebugger.close_remote_debugger(self.interp.rpcclt) + self.resetoutput() + self.console.write("[DEBUG OFF]\n") + sys.ps1 = ">>> " + self.showprompt() + self.set_debugger_indicator() + + def open_debugger(self): + if self.interp.rpcclt: + dbg_gui = RemoteDebugger.start_remote_debugger(self.interp.rpcclt, + self) + else: + dbg_gui = Debugger.Debugger(self) + self.interp.setdebugger(dbg_gui) + dbg_gui.load_breakpoints() + sys.ps1 = "[DEBUG ON]\n>>> " + self.showprompt() + self.set_debugger_indicator() + + def beginexecuting(self): + "Helper for ModifiedInterpreter" + self.resetoutput() + self.executing = 1 + + def endexecuting(self): + "Helper for ModifiedInterpreter" + self.executing = 0 + self.canceled = 0 + self.showprompt() + + def close(self): + "Extend EditorWindow.close()" + if self.executing: + response = tkMessageBox.askokcancel( + "Kill?", + "Your program is still running!\n Do you want to kill it?", + default="ok", + parent=self.text) + if response is False: + return "cancel" + self.stop_readline() + self.canceled = True + self.closing = True + return EditorWindow.close(self) + + def _close(self): + "Extend EditorWindow._close(), shut down debugger and execution server" + self.close_debugger() + if use_subprocess: + self.interp.kill_subprocess() + # Restore std streams + sys.stdout = self.save_stdout + sys.stderr = self.save_stderr + sys.stdin = self.save_stdin + # Break cycles + self.interp = None + self.console = None + self.flist.pyshell = None + self.history = None + EditorWindow._close(self) + + def ispythonsource(self, filename): + "Override EditorWindow method: never remove the colorizer" + return True + + def short_title(self): + return self.shell_title + + COPYRIGHT = \ + 'Type "copyright", "credits" or "license()" for more information.' + + def begin(self): + self.resetoutput() + if use_subprocess: + nosub = '' + client = self.interp.start_subprocess() + if not client: + self.close() + return False + else: + nosub = "==== No Subprocess ====" + self.write("Python %s on %s\n%s\n%s" % + (sys.version, sys.platform, self.COPYRIGHT, nosub)) + self.text.focus_force() + self.showprompt() + import Tkinter + Tkinter._default_root = None # 03Jan04 KBK What's this? + return True + + def stop_readline(self): + if not self.reading: # no nested mainloop to exit. + return + self._stop_readline_flag = True + self.top.quit() + + def readline(self): + save = self.reading + try: + self.reading = 1 + self.top.mainloop() # nested mainloop() + finally: + self.reading = save + if self._stop_readline_flag: + self._stop_readline_flag = False + return "" + line = self.text.get("iomark", "end-1c") + if len(line) == 0: # may be EOF if we quit our mainloop with Ctrl-C + line = "\n" + if isinstance(line, unicode): + from idlelib import IOBinding + try: + line = line.encode(IOBinding.encoding) + except UnicodeError: + pass + self.resetoutput() + if self.canceled: + self.canceled = 0 + if not use_subprocess: + raise KeyboardInterrupt + if self.endoffile: + self.endoffile = 0 + line = "" + return line + + def isatty(self): + return True + + def cancel_callback(self, event=None): + try: + if self.text.compare("sel.first", "!=", "sel.last"): + return # Active selection -- always use default binding + except: + pass + if not (self.executing or self.reading): + self.resetoutput() + self.interp.write("KeyboardInterrupt\n") + self.showprompt() + return "break" + self.endoffile = 0 + self.canceled = 1 + if (self.executing and self.interp.rpcclt): + if self.interp.getdebugger(): + self.interp.restart_subprocess() + else: + self.interp.interrupt_subprocess() + if self.reading: + self.top.quit() # exit the nested mainloop() in readline() + return "break" + + def eof_callback(self, event): + if self.executing and not self.reading: + return # Let the default binding (delete next char) take over + if not (self.text.compare("iomark", "==", "insert") and + self.text.compare("insert", "==", "end-1c")): + return # Let the default binding (delete next char) take over + if not self.executing: + self.resetoutput() + self.close() + else: + self.canceled = 0 + self.endoffile = 1 + self.top.quit() + return "break" + + def linefeed_callback(self, event): + # Insert a linefeed without entering anything (still autoindented) + if self.reading: + self.text.insert("insert", "\n") + self.text.see("insert") + else: + self.newline_and_indent_event(event) + return "break" + + def enter_callback(self, event): + if self.executing and not self.reading: + return # Let the default binding (insert '\n') take over + # If some text is selected, recall the selection + # (but only if this before the I/O mark) + try: + sel = self.text.get("sel.first", "sel.last") + if sel: + if self.text.compare("sel.last", "<=", "iomark"): + self.recall(sel, event) + return "break" + except: + pass + # If we're strictly before the line containing iomark, recall + # the current line, less a leading prompt, less leading or + # trailing whitespace + if self.text.compare("insert", "<", "iomark linestart"): + # Check if there's a relevant stdin range -- if so, use it + prev = self.text.tag_prevrange("stdin", "insert") + if prev and self.text.compare("insert", "<", prev[1]): + self.recall(self.text.get(prev[0], prev[1]), event) + return "break" + next = self.text.tag_nextrange("stdin", "insert") + if next and self.text.compare("insert lineend", ">=", next[0]): + self.recall(self.text.get(next[0], next[1]), event) + return "break" + # No stdin mark -- just get the current line, less any prompt + indices = self.text.tag_nextrange("console", "insert linestart") + if indices and \ + self.text.compare(indices[0], "<=", "insert linestart"): + self.recall(self.text.get(indices[1], "insert lineend"), event) + else: + self.recall(self.text.get("insert linestart", "insert lineend"), event) + return "break" + # If we're between the beginning of the line and the iomark, i.e. + # in the prompt area, move to the end of the prompt + if self.text.compare("insert", "<", "iomark"): + self.text.mark_set("insert", "iomark") + # If we're in the current input and there's only whitespace + # beyond the cursor, erase that whitespace first + s = self.text.get("insert", "end-1c") + if s and not s.strip(): + self.text.delete("insert", "end-1c") + # If we're in the current input before its last line, + # insert a newline right at the insert point + if self.text.compare("insert", "<", "end-1c linestart"): + self.newline_and_indent_event(event) + return "break" + # We're in the last line; append a newline and submit it + self.text.mark_set("insert", "end-1c") + if self.reading: + self.text.insert("insert", "\n") + self.text.see("insert") + else: + self.newline_and_indent_event(event) + self.text.tag_add("stdin", "iomark", "end-1c") + self.text.update_idletasks() + if self.reading: + self.top.quit() # Break out of recursive mainloop() in raw_input() + else: + self.runit() + return "break" + + def recall(self, s, event): + # remove leading and trailing empty or whitespace lines + s = re.sub(r'^\s*\n', '' , s) + s = re.sub(r'\n\s*$', '', s) + lines = s.split('\n') + self.text.undo_block_start() + try: + self.text.tag_remove("sel", "1.0", "end") + self.text.mark_set("insert", "end-1c") + prefix = self.text.get("insert linestart", "insert") + if prefix.rstrip().endswith(':'): + self.newline_and_indent_event(event) + prefix = self.text.get("insert linestart", "insert") + self.text.insert("insert", lines[0].strip()) + if len(lines) > 1: + orig_base_indent = re.search(r'^([ \t]*)', lines[0]).group(0) + new_base_indent = re.search(r'^([ \t]*)', prefix).group(0) + for line in lines[1:]: + if line.startswith(orig_base_indent): + # replace orig base indentation with new indentation + line = new_base_indent + line[len(orig_base_indent):] + self.text.insert('insert', '\n'+line.rstrip()) + finally: + self.text.see("insert") + self.text.undo_block_stop() + + def runit(self): + line = self.text.get("iomark", "end-1c") + # Strip off last newline and surrounding whitespace. + # (To allow you to hit return twice to end a statement.) + i = len(line) + while i > 0 and line[i-1] in " \t": + i = i-1 + if i > 0 and line[i-1] == "\n": + i = i-1 + while i > 0 and line[i-1] in " \t": + i = i-1 + line = line[:i] + self.interp.runsource(line) + + def open_stack_viewer(self, event=None): + if self.interp.rpcclt: + return self.interp.remote_stack_viewer() + try: + sys.last_traceback + except: + tkMessageBox.showerror("No stack trace", + "There is no stack trace yet.\n" + "(sys.last_traceback is not defined)", + parent=self.text) + return + from idlelib.StackViewer import StackBrowser + StackBrowser(self.root, self.flist) + + def view_restart_mark(self, event=None): + self.text.see("iomark") + self.text.see("restart") + + def restart_shell(self, event=None): + "Callback for Run/Restart Shell Cntl-F6" + self.interp.restart_subprocess(with_cwd=True) + + def showprompt(self): + self.resetoutput() + try: + s = str(sys.ps1) + except: + s = "" + self.console.write(s) + self.text.mark_set("insert", "end-1c") + self.set_line_and_column() + self.io.reset_undo() + + def resetoutput(self): + source = self.text.get("iomark", "end-1c") + if self.history: + self.history.store(source) + if self.text.get("end-2c") != "\n": + self.text.insert("end-1c", "\n") + self.text.mark_set("iomark", "end-1c") + self.set_line_and_column() + sys.stdout.softspace = 0 + + def write(self, s, tags=()): + try: + self.text.mark_gravity("iomark", "right") + OutputWindow.write(self, s, tags, "iomark") + self.text.mark_gravity("iomark", "left") + except: + pass + if self.canceled: + self.canceled = 0 + if not use_subprocess: + raise KeyboardInterrupt + + def rmenu_check_cut(self): + try: + if self.text.compare('sel.first', '<', 'iomark'): + return 'disabled' + except TclError: # no selection, so the index 'sel.first' doesn't exist + return 'disabled' + return super(PyShell, self).rmenu_check_cut() + + def rmenu_check_paste(self): + if self.text.compare('insert', '<', 'iomark'): + return 'disabled' + return super(PyShell, self).rmenu_check_paste() + +class PseudoFile(io.TextIOBase): + + def __init__(self, shell, tags, encoding=None): + self.shell = shell + self.tags = tags + self.softspace = 0 + self._encoding = encoding + + @property + def encoding(self): + return self._encoding + + @property + def name(self): + return '<%s>' % self.tags + + def isatty(self): + return True + + +class PseudoOutputFile(PseudoFile): + + def writable(self): + return True + + def write(self, s): + if self.closed: + raise ValueError("write to closed file") + if type(s) not in (unicode, str, bytearray): + # See issue #19481 + if isinstance(s, unicode): + s = unicode.__getitem__(s, slice(None)) + elif isinstance(s, str): + s = str.__str__(s) + elif isinstance(s, bytearray): + s = bytearray.__str__(s) + else: + raise TypeError('must be string, not ' + type(s).__name__) + return self.shell.write(s, self.tags) + + +class PseudoInputFile(PseudoFile): + + def __init__(self, shell, tags, encoding=None): + PseudoFile.__init__(self, shell, tags, encoding) + self._line_buffer = '' + + def readable(self): + return True + + def read(self, size=-1): + if self.closed: + raise ValueError("read from closed file") + if size is None: + size = -1 + elif not isinstance(size, int): + raise TypeError('must be int, not ' + type(size).__name__) + result = self._line_buffer + self._line_buffer = '' + if size < 0: + while True: + line = self.shell.readline() + if not line: break + result += line + else: + while len(result) < size: + line = self.shell.readline() + if not line: break + result += line + self._line_buffer = result[size:] + result = result[:size] + return result + + def readline(self, size=-1): + if self.closed: + raise ValueError("read from closed file") + if size is None: + size = -1 + elif not isinstance(size, int): + raise TypeError('must be int, not ' + type(size).__name__) + line = self._line_buffer or self.shell.readline() + if size < 0: + size = len(line) + eol = line.find('\n', 0, size) + if eol >= 0: + size = eol + 1 + self._line_buffer = line[size:] + return line[:size] + + def close(self): + self.shell.close() + + +usage_msg = """\ + +USAGE: idle [-deins] [-t title] [file]* + idle [-dns] [-t title] (-c cmd | -r file) [arg]* + idle [-dns] [-t title] - [arg]* + + -h print this help message and exit + -n run IDLE without a subprocess (see Help/IDLE Help for details) + +The following options will override the IDLE 'settings' configuration: + + -e open an edit window + -i open a shell window + +The following options imply -i and will open a shell: + + -c cmd run the command in a shell, or + -r file run script from file + + -d enable the debugger + -s run $IDLESTARTUP or $PYTHONSTARTUP before anything else + -t title set title of shell window + +A default edit window will be bypassed when -c, -r, or - are used. + +[arg]* are passed to the command (-c) or script (-r) in sys.argv[1:]. + +Examples: + +idle + Open an edit window or shell depending on IDLE's configuration. + +idle foo.py foobar.py + Edit the files, also open a shell if configured to start with shell. + +idle -est "Baz" foo.py + Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell + window with the title "Baz". + +idle -c "import sys; print sys.argv" "foo" + Open a shell window and run the command, passing "-c" in sys.argv[0] + and "foo" in sys.argv[1]. + +idle -d -s -r foo.py "Hello World" + Open a shell window, run a startup script, enable the debugger, and + run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in + sys.argv[1]. + +echo "import sys; print sys.argv" | idle - "foobar" + Open a shell window, run the script piped in, passing '' in sys.argv[0] + and "foobar" in sys.argv[1]. +""" + +def main( tkroot ): + global flist, root, use_subprocess + root = tkroot + + capture_warnings(True) + use_subprocess = True + enable_shell = False + enable_edit = False + debug = False + cmd = None + script = None + startup = False + try: + opts, args = getopt.getopt(sys.argv[1:], "c:deihnr:st:") + except getopt.error as msg: + print("Error: %s\n%s" % (msg, usage_msg), file=sys.stderr) + sys.exit(2) + for o, a in opts: + if o == '-c': + cmd = a + enable_shell = True + if o == '-d': + debug = True + enable_shell = True + if o == '-e': + enable_edit = True + if o == '-h': + sys.stdout.write(usage_msg) + sys.exit() + if o == '-i': + enable_shell = True + if o == '-n': + use_subprocess = False + if o == '-r': + script = a + if os.path.isfile(script): + pass + else: + print("No script file: ", script, file=sys.stderr) + sys.exit() + enable_shell = True + if o == '-s': + startup = True + enable_shell = True + if o == '-t': + PyShell.shell_title = a + enable_shell = True + if args and args[0] == '-': + cmd = sys.stdin.read() + enable_shell = True + # process sys.argv and sys.path: + for i in range(len(sys.path)): + sys.path[i] = os.path.abspath(sys.path[i]) + if args and args[0] == '-': + sys.argv = [''] + args[1:] + elif cmd: + sys.argv = ['-c'] + args + elif script: + sys.argv = [script] + args + elif args: + enable_edit = True + pathx = [] + for filename in args: + pathx.append(os.path.dirname(filename)) + for dir in pathx: + dir = os.path.abspath(dir) + if dir not in sys.path: + sys.path.insert(0, dir) + else: + dir = os.getcwd() + if not dir in sys.path: + sys.path.insert(0, dir) + # check the IDLE settings configuration (but command line overrides) + edit_start = idleConf.GetOption('main', 'General', + 'editor-on-startup', type='bool') + enable_edit = enable_edit or edit_start + enable_shell = enable_shell or not enable_edit + # start editor and/or shell windows: + + # set application icon + icondir = os.path.join(os.path.dirname(__file__), 'Icons') + if system() == 'Windows': + iconfile = os.path.join(icondir, 'idle.ico') + root.wm_iconbitmap(default=iconfile) + elif TkVersion >= 8.5: + ext = '.png' if TkVersion >= 8.6 else '.gif' + iconfiles = [os.path.join(icondir, 'idle_%d%s' % (size, ext)) + for size in (16, 32, 48)] + icons = [PhotoImage(file=iconfile) for iconfile in iconfiles] + root.tk.call('wm', 'iconphoto', str(root), "-default", *icons) + + fixwordbreaks(root) + root.withdraw() + flist = PyShellFileList(root) + macosxSupport.setupApp(root, flist) + + if macosxSupport.isAquaTk(): + # There are some screwed up <2> class bindings for text + # widgets defined in Tk which we need to do away with. + # See issue #24801. + root.unbind_class('Text', '') + root.unbind_class('Text', '') + root.unbind_class('Text', '<>') + + if enable_edit: + if not (cmd or script): + for filename in args[:]: + if flist.open(filename) is None: + # filename is a directory actually, disconsider it + args.remove(filename) + if not args: + flist.new() + + if enable_shell: + shell = flist.open_shell() + if not shell: + return # couldn't open shell + if macosxSupport.isAquaTk() and flist.dict: + # On OSX: when the user has double-clicked on a file that causes + # IDLE to be launched the shell window will open just in front of + # the file she wants to see. Lower the interpreter window when + # there are open files. + shell.top.lower() + else: + shell = flist.pyshell + + # Handle remaining options. If any of these are set, enable_shell + # was set also, so shell must be true to reach here. + if debug: + shell.open_debugger() + if startup: + filename = os.environ.get("IDLESTARTUP") or \ + os.environ.get("PYTHONSTARTUP") + if filename and os.path.isfile(filename): + shell.interp.execfile(filename) + if cmd or script: + shell.interp.runcommand("""if 1: + import sys as _sys + _sys.argv = %r + del _sys + \n""" % (sys.argv,)) + if cmd: + shell.interp.execsource(cmd) + elif script: + shell.interp.prepend_syspath(script) + shell.interp.execfile(script) + elif shell: + # If there is a shell window and no cmd or script in progress, + # check for problematic OS X Tk versions and print a warning + # message in the IDLE shell window; this is less intrusive + # than always opening a separate window. + tkversionwarning = macosxSupport.tkVersionWarning(root) + if tkversionwarning: + shell.interp.runcommand("print('%s')" % tkversionwarning) + + while flist.inversedict: # keep IDLE running while files are open. + root.mainloop() + root.destroy() + capture_warnings(False) + +if __name__ == "__main__": + sys.modules['PyShell'] = sys.modules['__main__'] + main() + +capture_warnings(False) # Make sure turned off; see issue 18081 diff --git a/build/lib/moosegui/__init__.py b/build/lib/moosegui/__init__.py new file mode 100644 index 0000000..8aa84f1 --- /dev/null +++ b/build/lib/moosegui/__init__.py @@ -0,0 +1 @@ +from moosegui.main import main diff --git a/build/lib/moosegui/_globals.py b/build/lib/moosegui/_globals.py new file mode 100644 index 0000000..509c58f --- /dev/null +++ b/build/lib/moosegui/_globals.py @@ -0,0 +1,29 @@ +"""globals.py: + +Keep all GUI global option here. + +""" + +__author__ = "Me" +__copyright__ = "Copyright 2016, Me" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Me" +__email__ = "" +__status__ = "Development" + +import sys +import os + +# root +root_ = None + +# Main canvas. +canvas_ = None + +# Main canvas. +toolbar_ = None + +# Status bar +statusbar_ = None diff --git a/build/lib/moosegui/canvas.py b/build/lib/moosegui/canvas.py new file mode 100644 index 0000000..3bae5b4 --- /dev/null +++ b/build/lib/moosegui/canvas.py @@ -0,0 +1,71 @@ +""" +Add canvas + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys +import os +import logging + +import moosegui._globals +from moosegui.MooseCanvas import MooseCanvas + +try: + from Tkinter import * +except ImportError as e: + from tkinter import * + +class StatusBar(Frame): + + def __init__(self, master): + Frame.__init__(self, master) + self.label = Label(self, bd = 1, relief = SUNKEN, anchor = W) + self.label.config( text = 'LABEL' ) + self.label.grid( row = 2, column = 0, sticky = 'ew' ) + + def set(self, format, *args): + self.label.config(text=format % args) + self.label.update_idletasks() + + def clear(self): + self.label.config(text="") + self.label.update_idletasks() + +def update( ): + logging.info( '.' ) + + +def main( parent ): + """ + Added few frames. + + First frame is editor frame. By default take half of horizontal screen and + 80% of vertical screen. + + """ + + w, h = parent.winfo_screenwidth( ), parent.winfo_screenheight( ) + editCanvas = MooseCanvas( parent ) + # editCanvas.canvas.focus_set( ) + + # Add a statusbar + sbar = StatusBar( parent ) + sbar.grid( row = 3, column = 1, sticky = 'ew' ) + + sbar.bind( '', update ) + + _globals.statusbar_ = sbar + _globals.canvas_ = editCanvas + + +if __name__ == '__main__': + main() diff --git a/build/lib/moosegui/main.py b/build/lib/moosegui/main.py new file mode 100644 index 0000000..0a18a07 --- /dev/null +++ b/build/lib/moosegui/main.py @@ -0,0 +1,70 @@ +""" +Entry point. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys + +try: + import Tkinter as tk +except ImportError as e: + import tkinter as tk + +import os +import traceback + +from moosegui.MooseWindow import MooseWindow +import moosegui.menus +import moosegui.canvas +import moosegui.toolbar +import moosegui._globals + +import logging +logging.basicConfig( level = logging.DEBUG ) + + +class Catcher: + def __init__(self, func, subst, widget): + self.func = func + self.subst = subst + self.widget = widget + + def __call__(self, *args): + try: + if self.subst: + args = apply(self.subst, args) + return apply(self.func, args) + except SystemExit as msg: + logging.info( "Existing ... %s" % msg ) + raise SystemExit + except: + traceback.print_exc( file = open('moosegui.log', 'a') ) + +tk.CallWrapper = Catcher + +def main( ): + root = MooseWindow( ) + root.resizable( width = False, height = False ) + _globals.root_ = root + + # Handle all menues. + menus.main( root ) + + # Add toolbar + toolbar.main( root ) + + # All frames + canvas.main( root ) + tk.mainloop( ) + +if __name__ == '__main__': + main() diff --git a/build/lib/moosegui/menus.py b/build/lib/moosegui/menus.py new file mode 100644 index 0000000..b5bf2ba --- /dev/null +++ b/build/lib/moosegui/menus.py @@ -0,0 +1,73 @@ +"""menus.py: + +Menu management. + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2016, Dilawar Singh" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import sys +PY_MAJOR = int( sys.version_info.major ) +if PY_MAJOR == 2: + import Tkinter as tk +else: + import tkinter as tk + +import os +import logging + +menus_ = [ 'File', 'Insert' ] +menu_dict_ = { + "File" : [ ("New Model", "Ctrl+N", "Control-n" ) + , ("Load Model", "Ctrl+O", "Control-o") + , ("Exit", "Ctrl+Q", "Control-q") ] + , "Insert" : [ ( "CubeMesh", ) + , ( "CylMesh" , ) + , ( "Pool" , ) + , ( "BufPool", ) + , ( "Reac" , ) ] + } + +def callback( action, parent ): + logging.info( "Got action %s" % action ) + if action.lower() == 'exit': + raise SystemExit( "Exit command" ) + else: + logging.info( "TODO %s" % action ) + +def main( parent ): + """ + This function adds required menues + + """ + menu = tk.Menu( parent ) + for menuName in menus_ : + logging.info( "Adding menu %s" % menuName ) + thismenu = tk.Menu( menu ) + menu.add_cascade( label = menuName, menu = thismenu ) + for action in menu_dict_[ menuName ]: + shortcut, underline = '', 0 + cmd = action[0] + if len( action ) > 1: + shortcut, underline = action[1], 1 + shortKey = "<%s>" % action[2] + logging.debug( "Bidning key %s to action %s" % (shortKey, cmd)) + parent.bind( shortKey, lambda e, x=cmd: callback(x, parent) ) + + thismenu.add_command( label = action[0] + , command = lambda x=cmd: callback(x, parent) + , underline = underline + , accelerator = shortcut + ) + + parent.config( menu = menu ) + +if __name__ == '__main__': + main() diff --git a/build/lib/moosegui/pyshell.py b/build/lib/moosegui/pyshell.py new file mode 100644 index 0000000..e1eade1 --- /dev/null +++ b/build/lib/moosegui/pyshell.py @@ -0,0 +1,1538 @@ +#! /usr/bin/env python3 + +try: + from tkinter import * +except ImportError: + print("** IDLE can't import Tkinter.\n" + "Your Python may not be configured for Tk. **", file=sys.__stderr__) + sys.exit(1) +import tkinter.messagebox as tkMessageBox +if TkVersion < 8.5: + root = Tk() # otherwise create root in main + root.withdraw() + tkMessageBox.showerror("Idle Cannot Start", + "Idle requires tcl/tk 8.5+, not $s." % TkVersion, + parent=root) + sys.exit(1) + +from code import InteractiveInterpreter +import getopt +import io +import linecache +import os +import os.path +from platform import python_version, system +import re +import socket +import subprocess +import sys +import threading +import time +import tokenize +import warnings + +from idlelib import testing # bool value +from idlelib.colorizer import ColorDelegator +from idlelib.config import idleConf +from idlelib import debugger +from idlelib import debugger_r +from idlelib.editor import EditorWindow, fixwordbreaks +from idlelib.filelist import FileList +from idlelib import macosx +from idlelib.outwin import OutputWindow +from idlelib import rpc +from idlelib.run import idle_formatwarning, PseudoInputFile, PseudoOutputFile +from idlelib.undo import UndoDelegator + +HOST = '127.0.0.1' # python execution server on localhost loopback +PORT = 0 # someday pass in host, port for remote debug capability + +# Override warnings module to write to warning_stream. Initialize to send IDLE +# internal warnings to the console. ScriptBinding.check_syntax() will +# temporarily redirect the stream to the shell window to display warnings when +# checking user's code. +warning_stream = sys.__stderr__ # None, at least on Windows, if no console. + +def idle_showwarning( + message, category, filename, lineno, file=None, line=None): + """Show Idle-format warning (after replacing warnings.showwarning). + + The differences are the formatter called, the file=None replacement, + which can be None, the capture of the consequence AttributeError, + and the output of a hard-coded prompt. + """ + if file is None: + file = warning_stream + try: + file.write(idle_formatwarning( + message, category, filename, lineno, line=line)) + file.write(">>> ") + except (AttributeError, OSError): + pass # if file (probably __stderr__) is invalid, skip warning. + +_warnings_showwarning = None + +def capture_warnings(capture): + "Replace warning.showwarning with idle_showwarning, or reverse." + + global _warnings_showwarning + if capture: + if _warnings_showwarning is None: + _warnings_showwarning = warnings.showwarning + warnings.showwarning = idle_showwarning + else: + if _warnings_showwarning is not None: + warnings.showwarning = _warnings_showwarning + _warnings_showwarning = None + +capture_warnings(True) + +def extended_linecache_checkcache(filename=None, + orig_checkcache=linecache.checkcache): + """Extend linecache.checkcache to preserve the entries + + Rather than repeating the linecache code, patch it to save the + entries, call the original linecache.checkcache() + (skipping them), and then restore the saved entries. + + orig_checkcache is bound at definition time to the original + method, allowing it to be patched. + """ + cache = linecache.cache + save = {} + for key in list(cache): + if key[:1] + key[-1:] == '<>': + save[key] = cache.pop(key) + orig_checkcache(filename) + cache.update(save) + +# Patch linecache.checkcache(): +linecache.checkcache = extended_linecache_checkcache + + +class PyShellEditorWindow(EditorWindow): + "Regular text edit window in IDLE, supports breakpoints" + + def __init__(self, *args): + self.breakpoints = [] + EditorWindow.__init__(self, *args) + self.text.bind("<>", self.set_breakpoint_here) + self.text.bind("<>", self.clear_breakpoint_here) + self.text.bind("<>", self.flist.open_shell) + + self.breakpointPath = os.path.join(idleConf.GetUserCfgDir(), + 'breakpoints.lst') + # whenever a file is changed, restore breakpoints + def filename_changed_hook(old_hook=self.io.filename_change_hook, + self=self): + self.restore_file_breaks() + old_hook() + self.io.set_filename_change_hook(filename_changed_hook) + if self.io.filename: + self.restore_file_breaks() + self.color_breakpoint_text() + + rmenu_specs = [ + ("Cut", "<>", "rmenu_check_cut"), + ("Copy", "<>", "rmenu_check_copy"), + ("Paste", "<>", "rmenu_check_paste"), + (None, None, None), + ("Set Breakpoint", "<>", None), + ("Clear Breakpoint", "<>", None) + ] + + def color_breakpoint_text(self, color=True): + "Turn colorizing of breakpoint text on or off" + if self.io is None: + # possible due to update in restore_file_breaks + return + if color: + theme = idleConf.CurrentTheme() + cfg = idleConf.GetHighlight(theme, "break") + else: + cfg = {'foreground': '', 'background': ''} + self.text.tag_config('BREAK', cfg) + + def set_breakpoint(self, lineno): + text = self.text + filename = self.io.filename + text.tag_add("BREAK", "%d.0" % lineno, "%d.0" % (lineno+1)) + try: + self.breakpoints.index(lineno) + except ValueError: # only add if missing, i.e. do once + self.breakpoints.append(lineno) + try: # update the subprocess debugger + debug = self.flist.pyshell.interp.debugger + debug.set_breakpoint_here(filename, lineno) + except: # but debugger may not be active right now.... + pass + + def set_breakpoint_here(self, event=None): + text = self.text + filename = self.io.filename + if not filename: + text.bell() + return + lineno = int(float(text.index("insert"))) + self.set_breakpoint(lineno) + + def clear_breakpoint_here(self, event=None): + text = self.text + filename = self.io.filename + if not filename: + text.bell() + return + lineno = int(float(text.index("insert"))) + try: + self.breakpoints.remove(lineno) + except: + pass + text.tag_remove("BREAK", "insert linestart",\ + "insert lineend +1char") + try: + debug = self.flist.pyshell.interp.debugger + debug.clear_breakpoint_here(filename, lineno) + except: + pass + + def clear_file_breaks(self): + if self.breakpoints: + text = self.text + filename = self.io.filename + if not filename: + text.bell() + return + self.breakpoints = [] + text.tag_remove("BREAK", "1.0", END) + try: + debug = self.flist.pyshell.interp.debugger + debug.clear_file_breaks(filename) + except: + pass + + def store_file_breaks(self): + "Save breakpoints when file is saved" + # XXX 13 Dec 2002 KBK Currently the file must be saved before it can + # be run. The breaks are saved at that time. If we introduce + # a temporary file save feature the save breaks functionality + # needs to be re-verified, since the breaks at the time the + # temp file is created may differ from the breaks at the last + # permanent save of the file. Currently, a break introduced + # after a save will be effective, but not persistent. + # This is necessary to keep the saved breaks synched with the + # saved file. + # + # Breakpoints are set as tagged ranges in the text. + # Since a modified file has to be saved before it is + # run, and since self.breakpoints (from which the subprocess + # debugger is loaded) is updated during the save, the visible + # breaks stay synched with the subprocess even if one of these + # unexpected breakpoint deletions occurs. + breaks = self.breakpoints + filename = self.io.filename + try: + with open(self.breakpointPath, "r") as fp: + lines = fp.readlines() + except OSError: + lines = [] + try: + with open(self.breakpointPath, "w") as new_file: + for line in lines: + if not line.startswith(filename + '='): + new_file.write(line) + self.update_breakpoints() + breaks = self.breakpoints + if breaks: + new_file.write(filename + '=' + str(breaks) + '\n') + except OSError as err: + if not getattr(self.root, "breakpoint_error_displayed", False): + self.root.breakpoint_error_displayed = True + tkMessageBox.showerror(title='IDLE Error', + message='Unable to update breakpoint list:\n%s' + % str(err), + parent=self.text) + + def restore_file_breaks(self): + self.text.update() # this enables setting "BREAK" tags to be visible + if self.io is None: + # can happen if IDLE closes due to the .update() call + return + filename = self.io.filename + if filename is None: + return + if os.path.isfile(self.breakpointPath): + with open(self.breakpointPath, "r") as fp: + lines = fp.readlines() + for line in lines: + if line.startswith(filename + '='): + breakpoint_linenumbers = eval(line[len(filename)+1:]) + for breakpoint_linenumber in breakpoint_linenumbers: + self.set_breakpoint(breakpoint_linenumber) + + def update_breakpoints(self): + "Retrieves all the breakpoints in the current window" + text = self.text + ranges = text.tag_ranges("BREAK") + linenumber_list = self.ranges_to_linenumbers(ranges) + self.breakpoints = linenumber_list + + def ranges_to_linenumbers(self, ranges): + lines = [] + for index in range(0, len(ranges), 2): + lineno = int(float(ranges[index].string)) + end = int(float(ranges[index+1].string)) + while lineno < end: + lines.append(lineno) + lineno += 1 + return lines + +# XXX 13 Dec 2002 KBK Not used currently +# def saved_change_hook(self): +# "Extend base method - clear breaks if module is modified" +# if not self.get_saved(): +# self.clear_file_breaks() +# EditorWindow.saved_change_hook(self) + + def _close(self): + "Extend base method - clear breaks when module is closed" + self.clear_file_breaks() + EditorWindow._close(self) + + +class PyShellFileList(FileList): + "Extend base class: IDLE supports a shell and breakpoints" + + # override FileList's class variable, instances return PyShellEditorWindow + # instead of EditorWindow when new edit windows are created. + EditorWindow = PyShellEditorWindow + + pyshell = None + + def open_shell(self, event=None): + if self.pyshell: + self.pyshell.top.wakeup() + else: + self.pyshell = PyShell(self) + if self.pyshell: + if not self.pyshell.begin(): + return None + return self.pyshell + + +class ModifiedColorDelegator(ColorDelegator): + "Extend base class: colorizer for the shell window itself" + + def __init__(self): + ColorDelegator.__init__(self) + self.LoadTagDefs() + + def recolorize_main(self): + self.tag_remove("TODO", "1.0", "iomark") + self.tag_add("SYNC", "1.0", "iomark") + ColorDelegator.recolorize_main(self) + + def LoadTagDefs(self): + ColorDelegator.LoadTagDefs(self) + theme = idleConf.CurrentTheme() + self.tagdefs.update({ + "stdin": {'background':None,'foreground':None}, + "stdout": idleConf.GetHighlight(theme, "stdout"), + "stderr": idleConf.GetHighlight(theme, "stderr"), + "console": idleConf.GetHighlight(theme, "console"), + }) + + def removecolors(self): + # Don't remove shell color tags before "iomark" + for tag in self.tagdefs: + self.tag_remove(tag, "iomark", "end") + +class ModifiedUndoDelegator(UndoDelegator): + "Extend base class: forbid insert/delete before the I/O mark" + + def insert(self, index, chars, tags=None): + try: + if self.delegate.compare(index, "<", "iomark"): + self.delegate.bell() + return + except TclError: + pass + UndoDelegator.insert(self, index, chars, tags) + + def delete(self, index1, index2=None): + try: + if self.delegate.compare(index1, "<", "iomark"): + self.delegate.bell() + return + except TclError: + pass + UndoDelegator.delete(self, index1, index2) + + +class MyRPCClient(rpc.RPCClient): + + def handle_EOF(self): + "Override the base class - just re-raise EOFError" + raise EOFError + + +class ModifiedInterpreter(InteractiveInterpreter): + + def __init__(self, tkconsole): + self.tkconsole = tkconsole + locals = sys.modules['__main__'].__dict__ + InteractiveInterpreter.__init__(self, locals=locals) + self.save_warnings_filters = None + self.restarting = False + self.subprocess_arglist = None + self.port = PORT + self.original_compiler_flags = self.compile.compiler.flags + + _afterid = None + rpcclt = None + rpcsubproc = None + + def spawn_subprocess(self): + if self.subprocess_arglist is None: + self.subprocess_arglist = self.build_subprocess_arglist() + self.rpcsubproc = subprocess.Popen(self.subprocess_arglist) + + def build_subprocess_arglist(self): + assert (self.port!=0), ( + "Socket should have been assigned a port number.") + w = ['-W' + s for s in sys.warnoptions] + # Maybe IDLE is installed and is being accessed via sys.path, + # or maybe it's not installed and the idle.py script is being + # run from the IDLE source directory. + del_exitf = idleConf.GetOption('main', 'General', 'delete-exitfunc', + default=False, type='bool') + if __name__ == 'idlelib.pyshell': + command = "__import__('idlelib.run').run.main(%r)" % (del_exitf,) + else: + command = "__import__('run').main(%r)" % (del_exitf,) + return [sys.executable] + w + ["-c", command, str(self.port)] + + def start_subprocess(self): + addr = (HOST, self.port) + # GUI makes several attempts to acquire socket, listens for connection + for i in range(3): + time.sleep(i) + try: + self.rpcclt = MyRPCClient(addr) + break + except OSError: + pass + else: + self.display_port_binding_error() + return None + # if PORT was 0, system will assign an 'ephemeral' port. Find it out: + self.port = self.rpcclt.listening_sock.getsockname()[1] + # if PORT was not 0, probably working with a remote execution server + if PORT != 0: + # To allow reconnection within the 2MSL wait (cf. Stevens TCP + # V1, 18.6), set SO_REUSEADDR. Note that this can be problematic + # on Windows since the implementation allows two active sockets on + # the same address! + self.rpcclt.listening_sock.setsockopt(socket.SOL_SOCKET, + socket.SO_REUSEADDR, 1) + self.spawn_subprocess() + #time.sleep(20) # test to simulate GUI not accepting connection + # Accept the connection from the Python execution server + self.rpcclt.listening_sock.settimeout(10) + try: + self.rpcclt.accept() + except socket.timeout: + self.display_no_subprocess_error() + return None + self.rpcclt.register("console", self.tkconsole) + self.rpcclt.register("stdin", self.tkconsole.stdin) + self.rpcclt.register("stdout", self.tkconsole.stdout) + self.rpcclt.register("stderr", self.tkconsole.stderr) + self.rpcclt.register("flist", self.tkconsole.flist) + self.rpcclt.register("linecache", linecache) + self.rpcclt.register("interp", self) + self.transfer_path(with_cwd=True) + self.poll_subprocess() + return self.rpcclt + + def restart_subprocess(self, with_cwd=False, filename=''): + if self.restarting: + return self.rpcclt + self.restarting = True + # close only the subprocess debugger + debug = self.getdebugger() + if debug: + try: + # Only close subprocess debugger, don't unregister gui_adap! + debugger_r.close_subprocess_debugger(self.rpcclt) + except: + pass + # Kill subprocess, spawn a new one, accept connection. + self.rpcclt.close() + self.terminate_subprocess() + console = self.tkconsole + was_executing = console.executing + console.executing = False + self.spawn_subprocess() + try: + self.rpcclt.accept() + except socket.timeout: + self.display_no_subprocess_error() + return None + self.transfer_path(with_cwd=with_cwd) + console.stop_readline() + # annotate restart in shell window and mark it + console.text.delete("iomark", "end-1c") + tag = 'RESTART: ' + (filename if filename else 'Shell') + halfbar = ((int(console.width) -len(tag) - 4) // 2) * '=' + console.write("\n{0} {1} {0}".format(halfbar, tag)) + console.text.mark_set("restart", "end-1c") + console.text.mark_gravity("restart", "left") + if not filename: + console.showprompt() + # restart subprocess debugger + if debug: + # Restarted debugger connects to current instance of debug GUI + debugger_r.restart_subprocess_debugger(self.rpcclt) + # reload remote debugger breakpoints for all PyShellEditWindows + debug.load_breakpoints() + self.compile.compiler.flags = self.original_compiler_flags + self.restarting = False + return self.rpcclt + + def __request_interrupt(self): + self.rpcclt.remotecall("exec", "interrupt_the_server", (), {}) + + def interrupt_subprocess(self): + threading.Thread(target=self.__request_interrupt).start() + + def kill_subprocess(self): + if self._afterid is not None: + self.tkconsole.text.after_cancel(self._afterid) + try: + self.rpcclt.listening_sock.close() + except AttributeError: # no socket + pass + try: + self.rpcclt.close() + except AttributeError: # no socket + pass + self.terminate_subprocess() + self.tkconsole.executing = False + self.rpcclt = None + + def terminate_subprocess(self): + "Make sure subprocess is terminated" + try: + self.rpcsubproc.kill() + except OSError: + # process already terminated + return + else: + try: + self.rpcsubproc.wait() + except OSError: + return + + def transfer_path(self, with_cwd=False): + if with_cwd: # Issue 13506 + path = [''] # include Current Working Directory + path.extend(sys.path) + else: + path = sys.path + + self.runcommand("""if 1: + import sys as _sys + _sys.path = %r + del _sys + \n""" % (path,)) + + active_seq = None + + def poll_subprocess(self): + clt = self.rpcclt + if clt is None: + return + try: + response = clt.pollresponse(self.active_seq, wait=0.05) + except (EOFError, OSError, KeyboardInterrupt): + # lost connection or subprocess terminated itself, restart + # [the KBI is from rpc.SocketIO.handle_EOF()] + if self.tkconsole.closing: + return + response = None + self.restart_subprocess() + if response: + self.tkconsole.resetoutput() + self.active_seq = None + how, what = response + console = self.tkconsole.console + if how == "OK": + if what is not None: + print(repr(what), file=console) + elif how == "EXCEPTION": + if self.tkconsole.getvar("<>"): + self.remote_stack_viewer() + elif how == "ERROR": + errmsg = "pyshell.ModifiedInterpreter: Subprocess ERROR:\n" + print(errmsg, what, file=sys.__stderr__) + print(errmsg, what, file=console) + # we received a response to the currently active seq number: + try: + self.tkconsole.endexecuting() + except AttributeError: # shell may have closed + pass + # Reschedule myself + if not self.tkconsole.closing: + self._afterid = self.tkconsole.text.after( + self.tkconsole.pollinterval, self.poll_subprocess) + + debugger = None + + def setdebugger(self, debugger): + self.debugger = debugger + + def getdebugger(self): + return self.debugger + + def open_remote_stack_viewer(self): + """Initiate the remote stack viewer from a separate thread. + + This method is called from the subprocess, and by returning from this + method we allow the subprocess to unblock. After a bit the shell + requests the subprocess to open the remote stack viewer which returns a + static object looking at the last exception. It is queried through + the RPC mechanism. + + """ + self.tkconsole.text.after(300, self.remote_stack_viewer) + return + + def remote_stack_viewer(self): + from idlelib import debugobj_r + oid = self.rpcclt.remotequeue("exec", "stackviewer", ("flist",), {}) + if oid is None: + self.tkconsole.root.bell() + return + item = debugobj_r.StubObjectTreeItem(self.rpcclt, oid) + from idlelib.tree import ScrolledCanvas, TreeNode + top = Toplevel(self.tkconsole.root) + theme = idleConf.CurrentTheme() + background = idleConf.GetHighlight(theme, 'normal')['background'] + sc = ScrolledCanvas(top, bg=background, highlightthickness=0) + sc.frame.pack(expand=1, fill="both") + node = TreeNode(sc.canvas, None, item) + node.expand() + # XXX Should GC the remote tree when closing the window + + gid = 0 + + def execsource(self, source): + "Like runsource() but assumes complete exec source" + filename = self.stuffsource(source) + self.execfile(filename, source) + + def execfile(self, filename, source=None): + "Execute an existing file" + if source is None: + with tokenize.open(filename) as fp: + source = fp.read() + try: + code = compile(source, filename, "exec") + except (OverflowError, SyntaxError): + self.tkconsole.resetoutput() + print('*** Error in script or command!\n' + 'Traceback (most recent call last):', + file=self.tkconsole.stderr) + InteractiveInterpreter.showsyntaxerror(self, filename) + self.tkconsole.showprompt() + else: + self.runcode(code) + + def runsource(self, source): + "Extend base class method: Stuff the source in the line cache first" + filename = self.stuffsource(source) + self.more = 0 + self.save_warnings_filters = warnings.filters[:] + warnings.filterwarnings(action="error", category=SyntaxWarning) + # at the moment, InteractiveInterpreter expects str + assert isinstance(source, str) + #if isinstance(source, str): + # from idlelib import iomenu + # try: + # source = source.encode(iomenu.encoding) + # except UnicodeError: + # self.tkconsole.resetoutput() + # self.write("Unsupported characters in input\n") + # return + try: + # InteractiveInterpreter.runsource() calls its runcode() method, + # which is overridden (see below) + return InteractiveInterpreter.runsource(self, source, filename) + finally: + if self.save_warnings_filters is not None: + warnings.filters[:] = self.save_warnings_filters + self.save_warnings_filters = None + + def stuffsource(self, source): + "Stuff source in the filename cache" + filename = "" % self.gid + self.gid = self.gid + 1 + lines = source.split("\n") + linecache.cache[filename] = len(source)+1, 0, lines, filename + return filename + + def prepend_syspath(self, filename): + "Prepend sys.path with file's directory if not already included" + self.runcommand("""if 1: + _filename = %r + import sys as _sys + from os.path import dirname as _dirname + _dir = _dirname(_filename) + if not _dir in _sys.path: + _sys.path.insert(0, _dir) + del _filename, _sys, _dirname, _dir + \n""" % (filename,)) + + def showsyntaxerror(self, filename=None): + """Override Interactive Interpreter method: Use Colorizing + + Color the offending position instead of printing it and pointing at it + with a caret. + + """ + tkconsole = self.tkconsole + text = tkconsole.text + text.tag_remove("ERROR", "1.0", "end") + type, value, tb = sys.exc_info() + msg = getattr(value, 'msg', '') or value or "" + lineno = getattr(value, 'lineno', '') or 1 + offset = getattr(value, 'offset', '') or 0 + if offset == 0: + lineno += 1 #mark end of offending line + if lineno == 1: + pos = "iomark + %d chars" % (offset-1) + else: + pos = "iomark linestart + %d lines + %d chars" % \ + (lineno-1, offset-1) + tkconsole.colorize_syntax_error(text, pos) + tkconsole.resetoutput() + self.write("SyntaxError: %s\n" % msg) + tkconsole.showprompt() + + def showtraceback(self): + "Extend base class method to reset output properly" + self.tkconsole.resetoutput() + self.checklinecache() + InteractiveInterpreter.showtraceback(self) + if self.tkconsole.getvar("<>"): + self.tkconsole.open_stack_viewer() + + def checklinecache(self): + c = linecache.cache + for key in list(c.keys()): + if key[:1] + key[-1:] != "<>": + del c[key] + + def runcommand(self, code): + "Run the code without invoking the debugger" + # The code better not raise an exception! + if self.tkconsole.executing: + self.display_executing_dialog() + return 0 + if self.rpcclt: + self.rpcclt.remotequeue("exec", "runcode", (code,), {}) + else: + exec(code, self.locals) + return 1 + + def runcode(self, code): + "Override base class method" + if self.tkconsole.executing: + self.interp.restart_subprocess() + self.checklinecache() + if self.save_warnings_filters is not None: + warnings.filters[:] = self.save_warnings_filters + self.save_warnings_filters = None + debugger = self.debugger + try: + self.tkconsole.beginexecuting() + if not debugger and self.rpcclt is not None: + self.active_seq = self.rpcclt.asyncqueue("exec", "runcode", + (code,), {}) + elif debugger: + debugger.run(code, self.locals) + else: + exec(code, self.locals) + except SystemExit: + if not self.tkconsole.closing: + if tkMessageBox.askyesno( + "Exit?", + "Do you want to exit altogether?", + default="yes", + parent=self.tkconsole.text): + raise + else: + self.showtraceback() + else: + raise + except: + if use_subprocess: + print("IDLE internal error in runcode()", + file=self.tkconsole.stderr) + self.showtraceback() + self.tkconsole.endexecuting() + else: + if self.tkconsole.canceled: + self.tkconsole.canceled = False + print("KeyboardInterrupt", file=self.tkconsole.stderr) + else: + self.showtraceback() + finally: + if not use_subprocess: + try: + self.tkconsole.endexecuting() + except AttributeError: # shell may have closed + pass + + def write(self, s): + "Override base class method" + return self.tkconsole.stderr.write(s) + + def display_port_binding_error(self): + tkMessageBox.showerror( + "Port Binding Error", + "IDLE can't bind to a TCP/IP port, which is necessary to " + "communicate with its Python execution server. This might be " + "because no networking is installed on this computer. " + "Run IDLE with the -n command line switch to start without a " + "subprocess and refer to Help/IDLE Help 'Running without a " + "subprocess' for further details.", + parent=self.tkconsole.text) + + def display_no_subprocess_error(self): + tkMessageBox.showerror( + "Subprocess Startup Error", + "IDLE's subprocess didn't make connection. Either IDLE can't " + "start a subprocess or personal firewall software is blocking " + "the connection.", + parent=self.tkconsole.text) + + def display_executing_dialog(self): + tkMessageBox.showerror( + "Already executing", + "The Python Shell window is already executing a command; " + "please wait until it is finished.", + parent=self.tkconsole.text) + + +class PyShell(OutputWindow): + + shell_title = "Python " + python_version() + " Shell" + + # Override classes + ColorDelegator = ModifiedColorDelegator + UndoDelegator = ModifiedUndoDelegator + + # Override menus + menu_specs = [ + ("file", "_File"), + ("edit", "_Edit"), + ("debug", "_Debug"), + ("options", "_Options"), + ("windows", "_Window"), + ("help", "_Help"), + ] + + + # New classes + from idlelib.history import History + + def __init__(self, flist=None): + if use_subprocess: + ms = self.menu_specs + if ms[2][0] != "shell": + ms.insert(2, ("shell", "She_ll")) + self.interp = ModifiedInterpreter(self) + if flist is None: + root = Tk() + fixwordbreaks(root) + root.withdraw() + flist = PyShellFileList(root) + # + OutputWindow.__init__(self, flist, None, None) + # +## self.config(usetabs=1, indentwidth=8, context_use_ps1=1) + self.usetabs = True + # indentwidth must be 8 when using tabs. See note in EditorWindow: + self.indentwidth = 8 + self.context_use_ps1 = True + # + text = self.text + text.configure(wrap="char") + text.bind("<>", self.enter_callback) + text.bind("<>", self.linefeed_callback) + text.bind("<>", self.cancel_callback) + text.bind("<>", self.eof_callback) + text.bind("<>", self.open_stack_viewer) + text.bind("<>", self.toggle_debugger) + text.bind("<>", self.toggle_jit_stack_viewer) + if use_subprocess: + text.bind("<>", self.view_restart_mark) + text.bind("<>", self.restart_shell) + # + self.save_stdout = sys.stdout + self.save_stderr = sys.stderr + self.save_stdin = sys.stdin + from idlelib import iomenu + self.stdin = PseudoInputFile(self, "stdin", iomenu.encoding) + self.stdout = PseudoOutputFile(self, "stdout", iomenu.encoding) + self.stderr = PseudoOutputFile(self, "stderr", iomenu.encoding) + self.console = PseudoOutputFile(self, "console", iomenu.encoding) + if not use_subprocess: + sys.stdout = self.stdout + sys.stderr = self.stderr + sys.stdin = self.stdin + try: + # page help() text to shell. + import pydoc # import must be done here to capture i/o rebinding. + # XXX KBK 27Dec07 use TextViewer someday, but must work w/o subproc + pydoc.pager = pydoc.plainpager + except: + sys.stderr = sys.__stderr__ + raise + # + self.history = self.History(self.text) + # + self.pollinterval = 50 # millisec + + def get_standard_extension_names(self): + return idleConf.GetExtensions(shell_only=True) + + reading = False + executing = False + canceled = False + endoffile = False + closing = False + _stop_readline_flag = False + + def set_warning_stream(self, stream): + global warning_stream + warning_stream = stream + + def get_warning_stream(self): + return warning_stream + + def toggle_debugger(self, event=None): + if self.executing: + tkMessageBox.showerror("Don't debug now", + "You can only toggle the debugger when idle", + parent=self.text) + self.set_debugger_indicator() + return "break" + else: + db = self.interp.getdebugger() + if db: + self.close_debugger() + else: + self.open_debugger() + + def set_debugger_indicator(self): + db = self.interp.getdebugger() + self.setvar("<>", not not db) + + def toggle_jit_stack_viewer(self, event=None): + pass # All we need is the variable + + def close_debugger(self): + db = self.interp.getdebugger() + if db: + self.interp.setdebugger(None) + db.close() + if self.interp.rpcclt: + debugger_r.close_remote_debugger(self.interp.rpcclt) + self.resetoutput() + self.console.write("[DEBUG OFF]\n") + sys.ps1 = ">>> " + self.showprompt() + self.set_debugger_indicator() + + def open_debugger(self): + if self.interp.rpcclt: + dbg_gui = debugger_r.start_remote_debugger(self.interp.rpcclt, + self) + else: + dbg_gui = debugger.Debugger(self) + self.interp.setdebugger(dbg_gui) + dbg_gui.load_breakpoints() + sys.ps1 = "[DEBUG ON]\n>>> " + self.showprompt() + self.set_debugger_indicator() + + def beginexecuting(self): + "Helper for ModifiedInterpreter" + self.resetoutput() + self.executing = 1 + + def endexecuting(self): + "Helper for ModifiedInterpreter" + self.executing = 0 + self.canceled = 0 + self.showprompt() + + def close(self): + "Extend EditorWindow.close()" + if self.executing: + response = tkMessageBox.askokcancel( + "Kill?", + "Your program is still running!\n Do you want to kill it?", + default="ok", + parent=self.text) + if response is False: + return "cancel" + self.stop_readline() + self.canceled = True + self.closing = True + return EditorWindow.close(self) + + def _close(self): + "Extend EditorWindow._close(), shut down debugger and execution server" + self.close_debugger() + if use_subprocess: + self.interp.kill_subprocess() + # Restore std streams + sys.stdout = self.save_stdout + sys.stderr = self.save_stderr + sys.stdin = self.save_stdin + # Break cycles + self.interp = None + self.console = None + self.flist.pyshell = None + self.history = None + EditorWindow._close(self) + + def ispythonsource(self, filename): + "Override EditorWindow method: never remove the colorizer" + return True + + def short_title(self): + return self.shell_title + + COPYRIGHT = \ + 'Type "copyright", "credits" or "license()" for more information.' + + def begin(self): + self.text.mark_set("iomark", "insert") + self.resetoutput() + if use_subprocess: + nosub = '' + client = self.interp.start_subprocess() + if not client: + self.close() + return False + else: + nosub = ("==== No Subprocess ====\n\n" + + "WARNING: Running IDLE without a Subprocess is deprecated\n" + + "and will be removed in a later version. See Help/IDLE Help\n" + + "for details.\n\n") + sys.displayhook = rpc.displayhook + + self.write("Python %s on %s\n%s\n%s" % + (sys.version, sys.platform, self.COPYRIGHT, nosub)) + self.text.focus_force() + self.showprompt() + import tkinter + tkinter._default_root = None # 03Jan04 KBK What's this? + return True + + def stop_readline(self): + if not self.reading: # no nested mainloop to exit. + return + self._stop_readline_flag = True + self.top.quit() + + def readline(self): + save = self.reading + try: + self.reading = 1 + self.top.mainloop() # nested mainloop() + finally: + self.reading = save + if self._stop_readline_flag: + self._stop_readline_flag = False + return "" + line = self.text.get("iomark", "end-1c") + if len(line) == 0: # may be EOF if we quit our mainloop with Ctrl-C + line = "\n" + self.resetoutput() + if self.canceled: + self.canceled = 0 + if not use_subprocess: + raise KeyboardInterrupt + if self.endoffile: + self.endoffile = 0 + line = "" + return line + + def isatty(self): + return True + + def cancel_callback(self, event=None): + try: + if self.text.compare("sel.first", "!=", "sel.last"): + return # Active selection -- always use default binding + except: + pass + if not (self.executing or self.reading): + self.resetoutput() + self.interp.write("KeyboardInterrupt\n") + self.showprompt() + return "break" + self.endoffile = 0 + self.canceled = 1 + if (self.executing and self.interp.rpcclt): + if self.interp.getdebugger(): + self.interp.restart_subprocess() + else: + self.interp.interrupt_subprocess() + if self.reading: + self.top.quit() # exit the nested mainloop() in readline() + return "break" + + def eof_callback(self, event): + if self.executing and not self.reading: + return # Let the default binding (delete next char) take over + if not (self.text.compare("iomark", "==", "insert") and + self.text.compare("insert", "==", "end-1c")): + return # Let the default binding (delete next char) take over + if not self.executing: + self.resetoutput() + self.close() + else: + self.canceled = 0 + self.endoffile = 1 + self.top.quit() + return "break" + + def linefeed_callback(self, event): + # Insert a linefeed without entering anything (still autoindented) + if self.reading: + self.text.insert("insert", "\n") + self.text.see("insert") + else: + self.newline_and_indent_event(event) + return "break" + + def enter_callback(self, event): + if self.executing and not self.reading: + return # Let the default binding (insert '\n') take over + # If some text is selected, recall the selection + # (but only if this before the I/O mark) + try: + sel = self.text.get("sel.first", "sel.last") + if sel: + if self.text.compare("sel.last", "<=", "iomark"): + self.recall(sel, event) + return "break" + except: + pass + # If we're strictly before the line containing iomark, recall + # the current line, less a leading prompt, less leading or + # trailing whitespace + if self.text.compare("insert", "<", "iomark linestart"): + # Check if there's a relevant stdin range -- if so, use it + prev = self.text.tag_prevrange("stdin", "insert") + if prev and self.text.compare("insert", "<", prev[1]): + self.recall(self.text.get(prev[0], prev[1]), event) + return "break" + next = self.text.tag_nextrange("stdin", "insert") + if next and self.text.compare("insert lineend", ">=", next[0]): + self.recall(self.text.get(next[0], next[1]), event) + return "break" + # No stdin mark -- just get the current line, less any prompt + indices = self.text.tag_nextrange("console", "insert linestart") + if indices and \ + self.text.compare(indices[0], "<=", "insert linestart"): + self.recall(self.text.get(indices[1], "insert lineend"), event) + else: + self.recall(self.text.get("insert linestart", "insert lineend"), event) + return "break" + # If we're between the beginning of the line and the iomark, i.e. + # in the prompt area, move to the end of the prompt + if self.text.compare("insert", "<", "iomark"): + self.text.mark_set("insert", "iomark") + # If we're in the current input and there's only whitespace + # beyond the cursor, erase that whitespace first + s = self.text.get("insert", "end-1c") + if s and not s.strip(): + self.text.delete("insert", "end-1c") + # If we're in the current input before its last line, + # insert a newline right at the insert point + if self.text.compare("insert", "<", "end-1c linestart"): + self.newline_and_indent_event(event) + return "break" + # We're in the last line; append a newline and submit it + self.text.mark_set("insert", "end-1c") + if self.reading: + self.text.insert("insert", "\n") + self.text.see("insert") + else: + self.newline_and_indent_event(event) + self.text.tag_add("stdin", "iomark", "end-1c") + self.text.update_idletasks() + if self.reading: + self.top.quit() # Break out of recursive mainloop() + else: + self.runit() + return "break" + + def recall(self, s, event): + # remove leading and trailing empty or whitespace lines + s = re.sub(r'^\s*\n', '' , s) + s = re.sub(r'\n\s*$', '', s) + lines = s.split('\n') + self.text.undo_block_start() + try: + self.text.tag_remove("sel", "1.0", "end") + self.text.mark_set("insert", "end-1c") + prefix = self.text.get("insert linestart", "insert") + if prefix.rstrip().endswith(':'): + self.newline_and_indent_event(event) + prefix = self.text.get("insert linestart", "insert") + self.text.insert("insert", lines[0].strip()) + if len(lines) > 1: + orig_base_indent = re.search(r'^([ \t]*)', lines[0]).group(0) + new_base_indent = re.search(r'^([ \t]*)', prefix).group(0) + for line in lines[1:]: + if line.startswith(orig_base_indent): + # replace orig base indentation with new indentation + line = new_base_indent + line[len(orig_base_indent):] + self.text.insert('insert', '\n'+line.rstrip()) + finally: + self.text.see("insert") + self.text.undo_block_stop() + + def runit(self): + line = self.text.get("iomark", "end-1c") + # Strip off last newline and surrounding whitespace. + # (To allow you to hit return twice to end a statement.) + i = len(line) + while i > 0 and line[i-1] in " \t": + i = i-1 + if i > 0 and line[i-1] == "\n": + i = i-1 + while i > 0 and line[i-1] in " \t": + i = i-1 + line = line[:i] + self.interp.runsource(line) + + def open_stack_viewer(self, event=None): + if self.interp.rpcclt: + return self.interp.remote_stack_viewer() + try: + sys.last_traceback + except: + tkMessageBox.showerror("No stack trace", + "There is no stack trace yet.\n" + "(sys.last_traceback is not defined)", + parent=self.text) + return + from idlelib.stackviewer import StackBrowser + StackBrowser(self.root, self.flist) + + def view_restart_mark(self, event=None): + self.text.see("iomark") + self.text.see("restart") + + def restart_shell(self, event=None): + "Callback for Run/Restart Shell Cntl-F6" + self.interp.restart_subprocess(with_cwd=True) + + def showprompt(self): + self.resetoutput() + try: + s = str(sys.ps1) + except: + s = "" + self.console.write(s) + self.text.mark_set("insert", "end-1c") + self.set_line_and_column() + self.io.reset_undo() + + def resetoutput(self): + source = self.text.get("iomark", "end-1c") + if self.history: + self.history.store(source) + if self.text.get("end-2c") != "\n": + self.text.insert("end-1c", "\n") + self.text.mark_set("iomark", "end-1c") + self.set_line_and_column() + + def write(self, s, tags=()): + if isinstance(s, str) and len(s) and max(s) > '\uffff': + # Tk doesn't support outputting non-BMP characters + # Let's assume what printed string is not very long, + # find first non-BMP character and construct informative + # UnicodeEncodeError exception. + for start, char in enumerate(s): + if char > '\uffff': + break + raise UnicodeEncodeError("UCS-2", char, start, start+1, + 'Non-BMP character not supported in Tk') + try: + self.text.mark_gravity("iomark", "right") + count = OutputWindow.write(self, s, tags, "iomark") + self.text.mark_gravity("iomark", "left") + except: + raise ###pass # ### 11Aug07 KBK if we are expecting exceptions + # let's find out what they are and be specific. + if self.canceled: + self.canceled = 0 + if not use_subprocess: + raise KeyboardInterrupt + return count + + def rmenu_check_cut(self): + try: + if self.text.compare('sel.first', '<', 'iomark'): + return 'disabled' + except TclError: # no selection, so the index 'sel.first' doesn't exist + return 'disabled' + return super().rmenu_check_cut() + + def rmenu_check_paste(self): + if self.text.compare('insert','<','iomark'): + return 'disabled' + return super().rmenu_check_paste() + + +def fix_x11_paste(root): + "Make paste replace selection on x11. See issue #5124." + if root._windowingsystem == 'x11': + for cls in 'Text', 'Entry', 'Spinbox': + root.bind_class( + cls, + '<>', + 'catch {%W delete sel.first sel.last}\n' + + root.bind_class(cls, '<>')) + + +usage_msg = """\ + +USAGE: idle [-deins] [-t title] [file]* + idle [-dns] [-t title] (-c cmd | -r file) [arg]* + idle [-dns] [-t title] - [arg]* + + -h print this help message and exit + -n run IDLE without a subprocess (DEPRECATED, + see Help/IDLE Help for details) + +The following options will override the IDLE 'settings' configuration: + + -e open an edit window + -i open a shell window + +The following options imply -i and will open a shell: + + -c cmd run the command in a shell, or + -r file run script from file + + -d enable the debugger + -s run $IDLESTARTUP or $PYTHONSTARTUP before anything else + -t title set title of shell window + +A default edit window will be bypassed when -c, -r, or - are used. + +[arg]* are passed to the command (-c) or script (-r) in sys.argv[1:]. + +Examples: + +idle + Open an edit window or shell depending on IDLE's configuration. + +idle foo.py foobar.py + Edit the files, also open a shell if configured to start with shell. + +idle -est "Baz" foo.py + Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell + window with the title "Baz". + +idle -c "import sys; print(sys.argv)" "foo" + Open a shell window and run the command, passing "-c" in sys.argv[0] + and "foo" in sys.argv[1]. + +idle -d -s -r foo.py "Hello World" + Open a shell window, run a startup script, enable the debugger, and + run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in + sys.argv[1]. + +echo "import sys; print(sys.argv)" | idle - "foobar" + Open a shell window, run the script piped in, passing '' in sys.argv[0] + and "foobar" in sys.argv[1]. +""" + +def main(): + global flist, root, use_subprocess + + capture_warnings(True) + use_subprocess = True + enable_shell = False + enable_edit = False + debug = False + cmd = None + script = None + startup = False + try: + opts, args = getopt.getopt(sys.argv[1:], "c:deihnr:st:") + except getopt.error as msg: + print("Error: %s\n%s" % (msg, usage_msg), file=sys.stderr) + sys.exit(2) + for o, a in opts: + if o == '-c': + cmd = a + enable_shell = True + if o == '-d': + debug = True + enable_shell = True + if o == '-e': + enable_edit = True + if o == '-h': + sys.stdout.write(usage_msg) + sys.exit() + if o == '-i': + enable_shell = True + if o == '-n': + print(" Warning: running IDLE without a subprocess is deprecated.", + file=sys.stderr) + use_subprocess = False + if o == '-r': + script = a + if os.path.isfile(script): + pass + else: + print("No script file: ", script) + sys.exit() + enable_shell = True + if o == '-s': + startup = True + enable_shell = True + if o == '-t': + PyShell.shell_title = a + enable_shell = True + if args and args[0] == '-': + cmd = sys.stdin.read() + enable_shell = True + # process sys.argv and sys.path: + for i in range(len(sys.path)): + sys.path[i] = os.path.abspath(sys.path[i]) + if args and args[0] == '-': + sys.argv = [''] + args[1:] + elif cmd: + sys.argv = ['-c'] + args + elif script: + sys.argv = [script] + args + elif args: + enable_edit = True + pathx = [] + for filename in args: + pathx.append(os.path.dirname(filename)) + for dir in pathx: + dir = os.path.abspath(dir) + if not dir in sys.path: + sys.path.insert(0, dir) + else: + dir = os.getcwd() + if dir not in sys.path: + sys.path.insert(0, dir) + # check the IDLE settings configuration (but command line overrides) + edit_start = idleConf.GetOption('main', 'General', + 'editor-on-startup', type='bool') + enable_edit = enable_edit or edit_start + enable_shell = enable_shell or not enable_edit + + # Setup root. Don't break user code run in IDLE process. + # Don't change environment when testing. + if use_subprocess and not testing: + NoDefaultRoot() + root = Tk(className="Idle") + root.withdraw() + + # set application icon + icondir = os.path.join(os.path.dirname(__file__), 'Icons') + if system() == 'Windows': + iconfile = os.path.join(icondir, 'idle.ico') + root.wm_iconbitmap(default=iconfile) + else: + ext = '.png' if TkVersion >= 8.6 else '.gif' + iconfiles = [os.path.join(icondir, 'idle_%d%s' % (size, ext)) + for size in (16, 32, 48)] + icons = [PhotoImage(master=root, file=iconfile) + for iconfile in iconfiles] + root.wm_iconphoto(True, *icons) + + # start editor and/or shell windows: + fixwordbreaks(root) + fix_x11_paste(root) + flist = PyShellFileList(root) + macosx.setupApp(root, flist) + + if enable_edit: + if not (cmd or script): + for filename in args[:]: + if flist.open(filename) is None: + # filename is a directory actually, disconsider it + args.remove(filename) + if not args: + flist.new() + + if enable_shell: + shell = flist.open_shell() + if not shell: + return # couldn't open shell + if macosx.isAquaTk() and flist.dict: + # On OSX: when the user has double-clicked on a file that causes + # IDLE to be launched the shell window will open just in front of + # the file she wants to see. Lower the interpreter window when + # there are open files. + shell.top.lower() + else: + shell = flist.pyshell + + # Handle remaining options. If any of these are set, enable_shell + # was set also, so shell must be true to reach here. + if debug: + shell.open_debugger() + if startup: + filename = os.environ.get("IDLESTARTUP") or \ + os.environ.get("PYTHONSTARTUP") + if filename and os.path.isfile(filename): + shell.interp.execfile(filename) + if cmd or script: + shell.interp.runcommand("""if 1: + import sys as _sys + _sys.argv = %r + del _sys + \n""" % (sys.argv,)) + if cmd: + shell.interp.execsource(cmd) + elif script: + shell.interp.prepend_syspath(script) + shell.interp.execfile(script) + elif shell: + # If there is a shell window and no cmd or script in progress, + # check for problematic OS X Tk versions and print a warning + # message in the IDLE shell window; this is less intrusive + # than always opening a separate window. + tkversionwarning = macosx.tkVersionWarning(root) + if tkversionwarning: + shell.interp.runcommand("print('%s')" % tkversionwarning) + + while flist.inversedict: # keep IDLE running while files are open. + root.mainloop() + root.destroy() + capture_warnings(False) + +if __name__ == "__main__": + sys.modules['pyshell'] = sys.modules['__main__'] + main() + +capture_warnings(False) # Make sure turned off; see issue 18081 diff --git a/build/lib/moosegui/toolbar.py b/build/lib/moosegui/toolbar.py new file mode 100644 index 0000000..735ce7e --- /dev/null +++ b/build/lib/moosegui/toolbar.py @@ -0,0 +1,74 @@ +"""toolbar.py: + +Add toolbar + +""" + +__author__ = "Me" +__copyright__ = "Copyright 2016, Me" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Me" +__email__ = "" +__status__ = "Development" + +import sys +import os +import logging + +try: + import Tkinter as tk + import ttk +except Exception as e: + import tkinter as tk + import tkinter.ttk as ttk + +from PIL import Image, ImageTk + +import moosegui._globals + +# After each section, put a separator. +toolbar = [['Cylinder', 'Cube'], ['Pool', 'BufPool'], ['Move', 'Exit']] + + +def iconRead(name): + imgFilePath = os.path.join('icons', '%s.png' % name) + img = Image.open(imgFilePath) + img = img.resize((20, 20), Image.ANTIALIAS) + # return tk.PhotoImage( file = imgFilePath ) + return ImageTk.PhotoImage(img) + +def btnCallback( btn ): + if btn.lower( ) == 'exit': + raise SystemExit + if btn.lower( ) == 'cube': + logging.debug( "Drawing cube and changing cursor " ) + _globals.root_.config( cursor = 'wait' ) + print( btn ) + +class ToolBar(tk.Frame): + + def __init__(self, root): + logging.info("Creating a toolbar") + tk.Frame.__init__(self, root ) + i = 0 + for tools in toolbar: + for tool in tools: + i += 1 + btnImg = iconRead(tool) + btn = tk.Button( self + , image=btnImg + , command = lambda x = tool : btnCallback( x ) + ) + btn.image = btnImg + btn.grid(row=i, column=0) + i += 1 + sep = ttk.Separator( root , orient = tk.VERTICAL ) + sep.grid(row=i, column=0 ) + + +def main(parent): + toolbar = ToolBar( parent ) + toolbar.grid( row = 1, column = 0, sticky = 'ns' ) + _globals.toolbar_ = toolbar diff --git a/drawsbml b/drawsbml new file mode 160000 index 0000000..3805a2d --- /dev/null +++ b/drawsbml @@ -0,0 +1 @@ +Subproject commit 3805a2dd2b5bc218df3300bb36631a1059c5e895 diff --git a/test_model.py b/test_model.py new file mode 100644 index 0000000..a82d2d9 --- /dev/null +++ b/test_model.py @@ -0,0 +1,882 @@ +"""camkii_pp1_scheme.py + +See http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1069645/ + +""" + +__author__ = "Dilawar Singh" +__copyright__ = "Copyright 2015, Dilawar Singh and NCBS Bangalore" +__credits__ = ["NCBS Bangalore"] +__license__ = "GNU GPL" +__version__ = "1.0.0" +__maintainer__ = "Dilawar Singh" +__email__ = "dilawars@ncbs.res.in" +__status__ = "Development" + +import params as _p +import datetime +import moose +import moose.utils as mu +import numpy as np +import re +import sys +import time +import math +from collections import defaultdict + +import logging +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', + datefmt='%m-%d %H:%M', + filename='__log__.txt', + filemode='a' + ) +console = logging.StreamHandler() +console.setLevel(logging.INFO) +formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +console.setFormatter(formatter) +_logger = logging.getLogger('') +_logger.addHandler(console) + +class Args: pass +args = Args() + +print( '[INFO] Using moose from %s' % moose.__file__ ) +print( '[INFO] Using moose from %s' % moose.__version__ ) + +# global data-structures +model_path_ = '/model' +molecules_ = {} +tables_ = defaultdict( list ) +curr_subsec_ = None +compt_ = None + +N = 6.023e23 + +gainers_ , loosers_ = [], [] +dephospho_ = [] + +def pool_name( root, name ): + global molecules_ + molName = '%s.%s' % (root.name, name ) + return molName + + +def conc_to_n( conc ): + val = conc * float( args['volume'] ) * N + assert val > 0.0 + return val + + +def num_subunits( name ): + m = re.search( r'x(?P\d)y(?P\d)', name ) + try: + xs, ys = int(m.group('xs')), int(m.group( 'ys' )) + except Exception as e: + mu.warn( 'Failed to get subunit numbers in %s' % name ) + raise e + return xs + ys + + +def inv_conc_to_N( conc ): + return conc / (float(args['volume']) * N ) + +def n_to_conc( n ): + global args + return n / (N * args['volume'] ) + + +def add_pool( root, name ): + global molecules_ + pname = pool_name( root, name ) + ppath = '%s/%s' % (root.path, name) + if moose.exists( ppath ): + _logger.warn( 'Already exists %s' % ppath ) + return moose.element( ppath ) + else: + p = moose.Pool( ppath ) + p.name = pname + molecules_[pname] = p + return p + + +def init_pools( compt ): + global args + # Ring with 6 subunits. + for st in range(7): + state = 'x%dy%d' % (st, 6 - st ) + p = add_pool( compt, state ) + p.nInit = 0 + + if args['enable_subunit_exchange']: + # Ring with 7 subunits + for st in range(8): + state = 'x%dy%d' % (st, 7 - st ) + p = add_pool( compt, state ) + p.nInit = 0 + molecules_[p.name] = p + + if args['enable_subunit_exchange']: + # Add subunit x and y. + # NOTE: These guys are shared across multiple sub_sections.. + x = add_pool( compt, 'x' ) + x.nInit = 0 + molecules_[x.name] = x + + y = add_pool( compt, 'y' ) + y.nInit = 0 + molecules_[y.name] = y + else: + _logger.info( "Subunit exchange is disabled" ) + + + for p in [ 'I1', 'PP1', 'PP1_', 'I1P', 'I1P_', 'I1PPP1' ]: + if p in [ 'I1' ]: + c = moose.BufPool( '%s/%s' % (compt.path, p) ) + c.name = pool_name( compt, p ) + molecules_[c.name] = c + else: + c = moose.Pool( '%s/%s' % (compt.path, p) ) + c.name = pool_name( compt, p ) + molecules_[c.name] = c + + molecules_[c.name].nInit = 0 + + if args['enable_subunit_exchange']: + # Here we are using concInit rather than nInit to setup the number of + # molecules. This is because when Dsolve is used, setting nInit causes + # problem: they don't get divided into different voxels. + molecules_[ pool_name(compt, 'x0y7') ].concInit = args[ 'camkii_conc' ] / 2.0 + molecules_[ pool_name(compt, 'x0y6') ].concInit = args[ 'camkii_conc' ] / 2.0 + else: + molecules_[ pool_name(compt, 'x0y6') ].concInit = args['camkii_conc'] + + if args['enable_subunit_exchange']: + _logger.debug('CaMKII = %f (6sym) %f (7sym)' % ( + molecules_[ pool_name(compt,'x0y6')].nInit, + molecules_[pool_name(compt,'x0y7')].nInit ) + ) + else: + _logger.debug('CaMKII = %d (6sym)' % ( + molecules_[pool_name(compt,'x0y6')].nInit ) + ) + + molecules_[ pool_name(compt, 'PP1') ].concInit = args['pp1_conc'] + _logger.debug('Total PP1 %s' % molecules_[pool_name(compt,'PP1')].nInit ) + + # TODO: Much of it only make sense if stochastic solver is used. + molecules_[ pool_name(compt,'I1') ].concInit = _p.conc_i1_free + pp1CamKIICplx = moose.Pool( '%s/camkii_pp1_cplx' % compt.path ) + pp1CamKIICplx.name = pool_name( compt, pp1CamKIICplx.name ) + pp1CamKIICplx.concInit = 0 + molecules_[ pp1CamKIICplx.name ] = pp1CamKIICplx + + for k in sorted(molecules_): + _logger.debug( 'Molecule: %s (%f)' % (k, molecules_[k].nInit ) ) + + +def add_table( moose_elem, field, tableName = None): + global tables_ + tablePath = '%s/tab%s' % (moose_elem.path, field) + if moose.exists( tablePath ): + return None + t = moose.Table2( tablePath ) + moose.connect( t, 'requestOut', moose_elem, 'get'+field[0].upper()+field[1:]) + tables_[ moose_elem.name ].append( t ) + _logger.debug( 'Added table on %s' % moose_elem.path ) + + +def add_reaction( reacPath ): + if moose.exists( reacPath ): + mu.warn( 'Reaction %s already exists' % reacPath ) + return moose.element( reacPath ) + else: + r = moose.Reac( reacPath ) + return r + + +def looseX( pool, xs ): + # Only pool with 7 subunits can loose subunit. + assert num_subunits( pool.name ) == 7, 'Only CaMKII(7) can gain subunit' + global curr_subsec_ + loosers_.append( ('x', pool.name) ) + r = add_reaction( '%s/%s.loose_x' % (pool.path, pool.name)) + r.numKf = _p.rate_loosex + r.numKb = 0.0 + moose.connect( r, 'sub', pool, 'reac' ) + toPoolName = 'x%dy%d' % (xs-1, 7 - xs ) + toPool = molecules_[ curr_subsec_ + '.' + toPoolName ] + moose.connect( r, 'prd', toPool, 'reac' ) + moose.connect( r, 'prd', molecules_[curr_subsec_ + '.x'], 'reac' ) + assert num_subunits(pool.name) == num_subunits(toPool.name) + 1 + _logger.debug( 'Reaction: %s -> %s + x' % ( pool.name, toPool.name) ) + + +def looseY( pool, ys ): + # Only pool with 7 subunits can loose subunit. + assert num_subunits( pool.name ) == 7, 'Only CaMKII(7) can gain subunit' + global curr_subsec_ + loosers_.append( ('y', pool.name) ) + r = add_reaction( '%s/%s.loose_y' % (pool.path, pool.name) ) + r.numKf = _p.rate_loosey + r.numKb = 0.0 + moose.connect( r, 'sub', pool, 'reac' ) + toPoolName = 'x%dy%d' % (7-ys, ys - 1 ) + toPool = molecules_[ curr_subsec_ + '.' + toPoolName ] + moose.connect( r, 'prd', toPool, 'reac' ) + moose.connect( r, 'prd', molecules_[curr_subsec_ + '.y'], 'reac' ) + _logger.debug( 'Reaction: %s -> %s + y' % ( pool.name, toPool.name ) ) + assert num_subunits( pool.name) == num_subunits( toPool.name) + 1 + + +def gainX( pool, xs ): + # Only pool with 6 subunits can gain subunit. + global curr_subsec_ + gainers_.append( ('x', pool.name) ) + r = add_reaction( '%s/%s.gainx' % (pool.path, pool.name)) + r.numKf = _p.rate_gainx + r.numKb = 0.0 + moose.connect( r, 'sub', pool, 'reac' ) + moose.connect( r, 'sub', molecules_['%s.x' % curr_subsec_ ], 'reac' ) + toPoolName = 'x%dy%d' % (xs+1, 6 - xs ) + toPool = molecules_[ curr_subsec_ + '.' + toPoolName ] + moose.connect( r, 'prd', toPool, 'reac' ) + _logger.debug( 'Reaction: %s + x -> %s' % ( pool.name, toPool.name ) ) + assert num_subunits( pool.name ) == 6, 'Only CaMKII(6) can gain subunit' + assert num_subunits( pool.name) == num_subunits( toPool.name) - 1 + + +def gainY( pool, ys ): + # Only pool with 6 subunits can gain subunit. + global curr_subsec_ + gainers_.append( ('y', pool.name) ) + r = add_reaction( '%s/%s.gainy' % (pool.path, pool.name) ) + r.numKf = _p.rate_gainy + r.numKb = 0.0 + moose.connect( r, 'sub', pool, 'reac' ) + moose.connect( r, 'sub', molecules_['%s.y' % curr_subsec_], 'reac' ) + toPoolName = 'x%dy%d' % ( 6-ys, ys+1 ) + toPool = molecules_[ curr_subsec_ + '.' + toPoolName ] + moose.connect( r, 'prd', toPool, 'reac' ) + _logger.debug( 'Reaction: %s, y -> %s' % ( pool.name, toPool.name ) ) + assert num_subunits( pool.name ) == 6, 'Only CaMKII(6) can gain subunit' + assert num_subunits( pool.name) == num_subunits( toPool.name) - 1 + + +def ca_input( root ): + """Input calcium pulse + + When using stochastic solver, any event less than 100 or so seconds would + not work. + """ + global args + # Input calcium + ca = moose.Pool( '%s/ca' % root.path ) + ca.concInit = _p.ca_basal + ca.name = pool_name( root, ca.name ) + molecules_[ ca.name ] = ca + + _logger.info("Setting up input calcium : init = %s" % ca.concInit ) + + # _logger.debug("Baselevel ca conc = %s" % _p.resting_ca_conc) + concFunc = moose.Function( "%s/cafunc" % ca.path ) + concFunc.expr = args[ 'ca_expr' ] + moose.connect( concFunc, 'valueOut', ca, 'setConc' ) + _logger.info( "Ca conc expression = %s " % concFunc.expr ) + + +def i1_to_i1p( root ): + global molecules_ + global curr_subsec_ + i1p_const = moose.BufPool( '%s/i1p_const' % molecules_[curr_subsec_ + '.' + 'I1'].path) + i1p_const.name = pool_name( root, i1p_const.name ) + molecules_[i1p_const.name] = i1p_const + + f = moose.Function( '%s/i12i1p' % molecules_[pool_name(root, 'I1P')].path ) + f.x.num = 2 + f.expr = 'x1*(1+(x0/{kh2})^3)/(x0/{kh2})^3'.format(kh2=conc_to_n(_p.K_H2)) + frmName = pool_name( root, 'I1' ) + toName = pool_name( root, 'I1P_' ) + moose.connect( molecules_[pool_name(root,'ca')], 'nOut', f.x[0], 'input' ) + moose.connect( molecules_[frmName], 'nOut', f.x[1], 'input' ) + moose.connect( f, 'valueOut', molecules_[toName], 'setN' ) + _logger.debug('Reaction: %s -> %s, Expr = %s' % (frmName, toName, f.expr )) + + # A slow reaction between I1P and I1P_ which synchornize both pools. + r = add_reaction( '%s/sync' % molecules_[pool_name(root,'I1P')].path ); + frmPool = molecules_[ pool_name( root, 'I1P_' ) ] + toPool = molecules_[ pool_name( root, 'I1P' ) ] + moose.connect( r, 'sub', frmPool, 'reac' ) + moose.connect( r, 'prd', toPool, 'reac' ) + r.Kf = r.Kb = 1.0 + _logger.debug( 'Reaction: %s -> %s' % ( frmPool.name, toPool.name ) ) + + +def pp1_activation( root ): + """Here we setup the reactions PP1 + + I1P binds with PP1 and give rise to complex I1PPP1 (which is inavtivated PP1) + I1P + PP1 <- -> I1PPP1 + """ + activePP1 = molecules_[pool_name(root, 'PP1')] + i1pPool = molecules_[ pool_name( root, 'I1P' ) ] + inactive_pp1 = molecules_[ pool_name( root, 'I1PPP1' ) ] + r = add_reaction( '%s/reac_inactivate_pp1' % activePP1.path ) + + moose.connect( r, 'sub', activePP1, 'reac' ) + moose.connect( r, 'prd', inactive_pp1, 'reac') + k3, k4, s = 1e5, 0.0001, 1 + kfFun = moose.Function( '%s/kffunc' % r.path ) + kfFun.expr = '{scale}*{k3}*x0'.format( k3 = k3, scale = s ) + moose.connect( i1pPool, 'nOut', kfFun.x[0], 'input' ) + moose.connect( kfFun, 'valueOut', r, 'setNumKf' ) + r.numKb = s * k4 + + _logger.debug( 'Reaction: %s + %s -> %s' % ( activePP1.name, i1pPool.name, + inactive_pp1.name ) ) + + +def dephosphorylate( root, frmPool, toPool ): + global molecules_ + global curr_subsec_ + dephospho_.append( frmPool.name ) + + _logger.info( 'Not using Michealson Menten scheme for dephosphorylate' ) + inter = moose.Pool( '%s/pp1_%s_cplx' % (frmPool.path, frmPool.name) ) + inter.name = curr_subsec_ + '.' + inter.name + inter.nInit = 0 + r = add_reaction( '%s/%s.add_pp1' % (frmPool.path, frmPool.name) ) + moose.connect( r, 'sub', frmPool, 'reac' ) + moose.connect( r, 'sub', molecules_[curr_subsec_+ '.' + 'PP1'], 'reac' ) + moose.connect( r, 'prd', inter, 'reac' ) + r.Kf = _p.k_2 / _p.K_M + r.Kb = 0.0 + + rr = add_reaction( '%s/%s_dephospho' % (frmPool.path,frmPool.name) ) + moose.connect( rr, 'sub', inter, 'reac' ) + moose.connect( rr, 'prd', molecules_[curr_subsec_ + '.' + 'PP1'], 'reac' ) + moose.connect( rr, 'prd', toPool, 'reac' ) + rr.Kf = 1.0 + rr.Kb = 0.0 + _logger.debug( "Reac (dephospho): %s -> %s" % (frmPool.name, toPool.name )) + + +def phosphorylation_first_step( root, nc ): + # CaMKII to x1y0 is slow. + subPool = molecules_[ pool_name( root, 'x0y%d' % nc ) ] + prdPool = molecules_[ pool_name( root, 'x1y%d' % (nc-1) ) ] + r0 = add_reaction( '%s/reac_0to1_%d' % (subPool.path, nc) ) + r0.numKb = 0 + moose.connect( r0, 'sub', subPool, 'reac' ) + moose.connect( r0, 'prd', prdPool, 'reac' ) + # The rate expression of this reaction depends on Ca++ + f = moose.Function( '%s/func_kf' % r0.path ) + f.expr = '{nc}*{k1}*(x0/{kh1})^6/(1 + (x0/{kh1})^3)^2'.format( + k1 = _p.k_1, kh1= conc_to_n(_p.K_H1), nc = nc + ) + f.x.num = 1 + moose.connect( molecules_[pool_name(root,'ca')], 'nOut', f.x[0], 'input' ) + moose.connect( f, 'valueOut', r0, 'setNumKf' ) + _logger.debug( 'Reaction: %s -> %s' % (subPool.name, prdPool.name ) ) + + +def phosphorylation_first_step_subunit( compt ): + """ + NOTE: Phosphorylation of detached subunit is much faster than the subunits in + holoenzyme. Why? + + Phosphorylation of detached subunit is not possible. To phosphorylate, the + subunit must have a neighbour i.e. two subunit must come together first. + + """ + return + + # Previously I was phosphrylating the subunits. + global molecules_ + global curr_subsec_ + subPool = molecules_[ pool_name( compt, 'y') ] + prdPool = molecules_[ pool_name( compt, 'x') ] + r0 = add_reaction( '%s/reac_y2x' % compt.path ) + r0.numKb = 0 + moose.connect( r0, 'sub', subPool, 'reac' ) + moose.connect( r0, 'prd', prdPool, 'reac' ) + # The rate expression of this reaction depends on Ca++ + f = moose.Function( '%s/func_kf' % r0.path ) + f.expr = '{k1}*(x0/{kh1})^3/(1 + (x0/{kh1})^3)'.format( + k1 = _p.k_1 , kh1= conc_to_n(_p.K_H1) + ) + f.x.num = 1 + moose.connect( molecules_[ pool_name(compt, 'ca') ], 'nOut', f.x[0], 'input' ) + moose.connect( f, 'valueOut', r0, 'setNumKf' ) + _logger.info( 'Phosphorylation of subunit y in voxel %s' % compt.name ) + _logger.debug( 'Reaction: %s -> %s' % (subPool.name, prdPool.name ) ) + + +def camkii_activation_deactivation( root ): + """All reaction involved in activating CaMKII""" + + phosphorylation_first_step( root, 6 ) + + if args['enable_subunit_exchange']: + phosphorylation_first_step( root, 7 ) + + # Phosphorylation of CaMKII occurs in various stages: + # x0y0 -> x1y0 -> x2y0 -> x3y0 -> x4y0 -> x5y0 -> CaMKII* + for pp in range(1, 6): + frm, to = 'x%dy%d' % (pp, 6-pp), 'x%dy%d' % (pp + 1, 6-pp-1) + frmName, toName = [pool_name(root, x) for x in [frm, to]] + r = add_reaction( '%s/phospho_%s_%s' % (root.path, frmName, toName)) + # And its rate is controlled by another function + f = moose.Function( '%s/funcKf' % r.path ) + f.expr = '{k1}*(x0/{kh1})^3/(1 + (x0/{kh1})^3)'.format( + k1 = _p.k_1, kh1= conc_to_n(_p.K_H1) + ) + f.x.num = 1 + moose.connect( molecules_[pool_name(root,'ca')], 'nOut', f.x[0], 'input' ) + moose.connect( f, 'valueOut', r, 'setNumKf' ) + r.numKb = 0 + moose.connect( r, 'sub', molecules_[frmName], 'reac') + moose.connect( r, 'prd', molecules_[toName], 'reac') + _logger.debug("Reaction: %s -> %s, numKf=%s" % (frmName, toName, f.expr )) + + # The symmetry of 7 kicks in only when args['enable_subunit_exchange'] is enabled. + if args['enable_subunit_exchange']: + for pp in range(1, 7): + frm, to = 'x%dy%d' % (pp, 7-pp), 'x%dy%d' % (pp + 1, 7-pp-1) + frmName, toName = [ pool_name(root, x) for x in [frm, to] ] + r = add_reaction( '%s/phospho_%s_%s' % (root.path, frm, to)) + # And its rate is controlled by another function + f = moose.Function( '%s/funcKf' % r.path ) + f.expr = '{k1}*(x0/{kh1})^3/(1 + (x0/{kh1})^3)'.format( + k1 = _p.k_1, kh1= conc_to_n(_p.K_H1) + ) + f.x.num = 1 + moose.connect( molecules_[pool_name(root,'ca')], 'nOut', f.x[0], 'input' ) + moose.connect( f, 'valueOut', r, 'setNumKf' ) + r.numKb = 0 + moose.connect( r, 'sub', molecules_[frmName], 'reac') + moose.connect( r, 'prd', molecules_[toName], 'reac') + _logger.debug("Reaction: %s -> %s (numKf = %s)" % (frmName, toName, f.expr )) + + gainX( molecules_[ pool_name(root, 'x0y6') ], 0 ) + gainY( molecules_[ pool_name(root, 'x6y0') ], 0 ) + + for nP in range(1, 7): + if args['enable_subunit_exchange']: + gainX( molecules_[ pool_name(root, 'x%dy%d' % (nP, 6-nP) )], nP ) + gainY( molecules_[ pool_name(root, 'x%dy%d' % (6-nP, nP) )], nP ) + + frmPool = molecules_[ pool_name(root, 'x%dy%d' % (nP, 6-nP)) ] + toPool = molecules_[ pool_name( root, 'x%dy%d' % (nP-1, 6-nP+1)) ] + dephosphorylate( root, frmPool, toPool ) + + if args['enable_subunit_exchange']: + for nP in range(1, 8): + looseX( molecules_[ pool_name(root,'x%dy%d' % (nP, 7-nP)) ], nP ) + looseY( molecules_[ pool_name(root,'x%dy%d' % (7-nP, nP)) ], nP ) + + frmPool = molecules_[ pool_name(root, 'x%dy%d' % (nP, 7-nP)) ] + toPool = molecules_[ pool_name(root, 'x%dy%d' % (nP-1, 7-nP+1)) ] + dephosphorylate( root, frmPool, toPool ) + + if False: + # A reaction between PP1 and PP1_ which synchornize both pools. + r = add_reaction( '%s/sync' % molecules_[pool_name(root,'PP1_')].path ); + a = molecules_[ pool_name( root, 'PP1_' ) ] + b = molecules_[ pool_name( root, 'PP1' ) ] + moose.connect( r, 'sub', a, 'reac' ) + moose.connect( r, 'prd', b, 'reac' ) + r.Kf = 0.1 + r.Kb = 0 + _logger.debug( "Reac %s -> %s" % (a.name, b.name )) + +def remove_extra( pool, limit ): + null = moose.BufPool( '%s/null' % pool.path ) + null.nInit = 0.0 + nullReac = moose.Reac( '%s/null_reac' % pool.path ) + nullReac.numKb = 0.0 + moose.connect( nullReac, 'sub', pool, 'reac' ) + moose.connect( nullReac, 'prd', null, 'reac' ) + nullF = moose.Function( '%s/func_null' % pool.path ) + nullF.expr = '(x0 > %f)?1e-2:0' % limit + _logger.debug( 'Removing extra from pool %s' % pool.path ) + _logger.debug( '\tExpression on nullR %s' % nullF.expr ) + moose.connect( pool, 'nOut', nullF.x[0], 'input' ) + moose.connect( nullF, 'valueOut', nullReac, 'setNumKf' ) + + +def add_turnover( root ): + # Added turnover of CaMKII + global curr_subsec_ + global args + + r = add_reaction( '%s/%s.turnover6' % (root.path, curr_subsec_) ) + moose.connect( r, 'sub', molecules_[pool_name(root,'x6y0')], 'reac' ) + moose.connect( r, 'prd', molecules_[pool_name(root,'x0y6')], 'reac' ) + r.Kf = args[ 'turnover_rate' ] + _logger.info( "Turnover rate for CaMKII(6) %g" % r.Kf ) + r.Kb = 0.0 + + if args['enable_subunit_exchange']: + rr = add_reaction( '%s/%s.turnover7' % (root.path, curr_subsec_) ) + moose.connect( rr, 'sub', molecules_[pool_name(root,'x7y0')], 'reac' ) + moose.connect( rr, 'prd', molecules_[pool_name(root,'x0y7')], 'reac' ) + rr.Kf = args[ 'turnover_rate' ] + _logger.info( "Turnover rate for CaMKII(7) %g" % rr.Kf ) + rr.Kb = 0.0 + + +def print_compt( compt ): + reacs = moose.wildcardFind( '%s/##[TYPE=ZombieReac]' % compt.path ) + reacs += moose.wildcardFind( '%s/##[TYPE=Reac]' % compt.path ) + _logger.debug( 'Total %s reactions ' % len(reacs )) + dot = [ "digraph system { " ] + molecules = [] + rtext = '' + for r in reacs: + subs = [] + for ss in r.neighbors['sub']: + for s in ss: + subs.append( '"%s"' % s.path ) + molecules.append( '"%s" [label="%s",shape=circle,diffConst="%g"]; ' % ( + s.path, "", s.diffConst ) ) + rtext += '\t' + ' , '.join( subs ) + molecules.append( '"%s" [label="", shape=rect];' % r.name ) + rtext += ' -> "%s" -> ' % r.name + tgt = [ ] + # print( '->' ) + for tt in r.neighbors['prd']: + for t in tt: + # print(t.path[-20:]) + tgt.append( '"%s"' % t.path ) + molecules.append( '"%s" [label="%s",shape=circle,diffConst="%g"]; ' % ( + t.path, t.name, t.diffConst ) ) + rtext += ' , '.join( tgt ) + rtext += '\n' + # print( '\n') + try: + _logger.debug( 'Volume of compartment : %g, ' % compt.volume ) + except Exception as e: + _logger.warn( ' Compartment does not have volume' ) + + _logger.info( 'Total reactions %d' % len( set( reacs ) ) ) + _logger.info( 'Total species %d' % len( set(molecules) ) ) + dot.append( '\t\n'.join( molecules ) ) + dot.append( rtext ) + dot.append( "}" ) + with open( '%s.dot' % sys.argv[0], 'w' ) as f: + f.write( "\n".join( dot ) ) + + +def setup_solvers( compt, stochastic ): + global args + stoich = moose.Stoich( "%s/stoich" % compt.path) + if stochastic: + _logger.info("Setting up Stochastic solver in %s" % compt.path ) + s = moose.Gsolve('%s/gsolve' % compt.path) + s.useClockedUpdate = True + else: + s = moose.Ksolve('%s/ksolve' % compt.path) + _logger.info( 'Using method %s' % s.method ) + + stoich.compartment = moose.element(compt.path) + stoich.ksolve = s + stoich.path = '%s/##' % compt.path + + +def is_close( val, ref, rtol): + if abs(val - ref)/float(ref) <= rtol: + return True + return False + + +def assert_close( val, ref, rtol): + if is_close( val, ref, rtol ): + return True + _logger.warn('FAILED' + , "Expected %s, got %s, relative tolerance: %s" % (ref, val, rtol) + ) + return False + + +def make_model( root, **kwargs): + global args + _logger.info( 'Making model under %s' % root ) + init_pools( root ) + ca_input( root ) + i1_to_i1p( root ) + pp1_activation( root ) + camkii_activation_deactivation( root ) + if args['enable_subunit_exchange']: + _logger.info( 'Subunit exchange is enabled' ) + if True: + dephosphorylate( root, molecules_[ pool_name( root, 'x') ], molecules_[ pool_name( root, 'y' ) ] ) + else: + _logger.warn( 'x is not dephosphorylated to y in this version' ) + # And y phosphorylate into x + phosphorylation_first_step_subunit( root ) + else: + _logger.info( 'No subunit exchage in voxel %s' % root.name ) + add_turnover( root ) + + + +def verify( ): + global compt_ + # pools = moose.wildcardFind( '%s/##[TYPE=Pool]' % model_path_ ) + pools = moose.wildcardFind( '%s/##[TYPE=ZombiePool]' % model_path_ ) + assert len(pools) > 0 + allMolecules = np.sum( [ x.nInit for x in pools ] ) + _logger.debug( 'All molecules in systems %d' % allMolecules ) + +def setupTables( plotlist = [ ] ): + """Create tables. + Once can add table when pools are created. But when Dsolve is used, table + must be created after setting the solvers. If number of voxels are n (>1 ), + each pool is divided into n but Tables are not replicated. + Is it a bug BhallaLab/moose-core#159 + + If plotlist is empty, create table on all Pools/BuffPools + """ + + global tables_ + global model_path_ + + allPools = moose.wildcardFind( '%s/##[TYPE=ZombiePool]' % model_path_ ) + allPools += moose.wildcardFind( '%s/##[TYPE=ZombieBufPool]' % model_path_ ) + if not plotlist: + plotlist = allPools + + for i, p in enumerate( plotlist ): + add_table( p, 'n' ) + + # Now renamed the tables for better plotting. + tables = [ ] + for k in tables_: + for i, tab in enumerate( tables_[ k ] ): + tab.columnName = '%s[%d].N' % ( k, i ) + tables.append( tab ) + return tables + +def setup_diffusion_of_pool( voxel1, voxel2, species, diff_const = 1e-12 ): + """Setup diffusion between voxels """ + global molecules_ + global compt_ + pool1 = molecules_[ '%s.%s' % (voxel1.name, species ) ] + pool2 = molecules_[ '%s.%s' % (voxel2.name, species ) ] + r = moose.Reac( '%s/diff_%s' % (voxel1.path, species ) ) + moose.connect( r, 'sub', pool1, 'reac' ) + moose.connect( r, 'prd', pool2, 'reac' ) + _logger.info( + 'Diffusion reaction between %s <-> %s' % (pool1.name, pool2.name) + ) + # The rate constant is given by D / l / l. For diffusion coefficients of 1 + # uM^2/sec in a + d = diff_const / (( compt_.x1 - compt_.x0 ) ** 2) + _logger.debug( 'Diffusion coefficient (%s) %f -> rate %f' % (species, diff_const, d) ) + r.numKf = d + r.numKb = d + +def setup_diffusion( voxels, species ): + """Setup diffusion across voxels """ + global args + + if len( voxels ) < 2: + _logger.info( 'Not enough voxels to setup diffusion' ) + return + + if False: + # A <-> B <-> C where <-> is diffusion between two compartments. + for i, v2 in enumerate( voxels[1:] ): + v1 = voxels[i] + setup_diffusion_of_pool( v1, v2 + , species, args[ 'diff_dict'].get( species, 0.0 ) + ) + else: + # A <-> B <-> C <-> A where <-> is diffusion between two compartments. + for i, v1 in enumerate( voxels ): + v2 = voxels[ (i+1) % len(voxels) ] + setup_diffusion_of_pool( v1, v2, species, args[ 'diff_dict'].get( species, 0.0 ) ) + + +def main( compt_name, **kwargs ): + global args + global model_path_ + global curr_subsec_ + global compt_ + moose.Neutral( model_path_ ) + args = kwargs + + voxels = [ ] + l = args[ 'voxel_length' ] + nVoxels = args[ 'num_voxels' ] + radius = 30e-9 + args[ 'volume' ] = math.pi * radius * radius * l + args[ 'camkii_conc' ] = n_to_conc( args[ 'camkii' ] / nVoxels ) + args[ 'pp1_conc' ] = n_to_conc( args[ 'pp1' ] / nVoxels ) + args[ 'psd_volume' ] = 0.0 + + if isinstance( args['diff_dict'], str ): + args[ 'diff_dict' ] = eval( args[ 'diff_dict' ] ) + _logger.info( 'Diffusion dict %s' % args[ 'diff_dict' ] ) + + compt_ = moose.CylMesh( '%s/%s' % (model_path_, compt_name ) ) + compt_.x1 = l + compt_.r0 = compt_.r1 = radius + + _logger.info( 'Volume of compt %g' % compt_.volume ) + for i in range( args[ 'num_voxels' ] ): + curr_subsec_ = 'sw%d' % i + voxel = moose.Neutral( '%s/%s' % ( compt_.path, curr_subsec_ ) ) + _logger.info( "Creating voxles %d" % i ) + _logger.debug( '==== Created subsystem inside %s' % voxel.name ) + make_model( voxel, **kwargs ) + voxels.append( voxel ) + + for x in args[ 'diff_dict' ].keys( ): + _logger.info( "Setting up diffusion for %s" % x ) + try: + setup_diffusion( voxels, x ) + except Exception as e: + _logger.warn( 'Could not enable diffusion for %s' % x ) + _logger.warn( '\tError was %s' % e ) + + + setup_solvers( compt_, stochastic = True ) + print_compt( compt_ ) + + # Now add solvers and other goodies in compartment. + moose.setClock(18, args['record_dt'] ) # Table2 + tables = setupTables( ) + + st = moose.Streamer( '/model/streamer' ) + st.outfile = args['outfile'] + _logger.info( 'Added streamer with outfile %s' % st.outfile ) + st.addTables( tables ) + t1 = time.time() + stamp = datetime.datetime.now().isoformat() + # moose.setClock( 10, 0.003 ) + # moose.setClock( 15, 0.03 ) + # moose.setClock( 16, 0.03 ) + moose.reinit() + print( '== Gainers' ) + print( sorted( gainers_ ) ) + print( '== Loosers' ) + print( sorted( loosers_ ) ) + print( '== Dephosphorylated' ) + print( sorted( dephospho_ ) ) + + # sanity tests + verify( ) + runtime = 24 * 3600 * float( args[ 'simtime' ] ) + _logger.info('Running for %d seconds' % runtime ) + t = time.time( ) + moose.start( runtime, 1 ) + print( '[INFO] Time taken %f' % (time.time() - t ) ) + + # append parameters to streamer file. + with open( st.outfile, 'a' ) as f: + f.write( "# %s" % str( args ) ) + print( '[INFO] Appended simulation parameters to file' ) + + _logger.info( 'Total time taken %s' % (time.time() - t1 ) ) + + + +if __name__ == '__main__': + import argparse + # Argument parser. + description = 'CaMKII/PP1 switch. Most parameters are in params.py file.' + parser = argparse.ArgumentParser(description=description) + + parser.add_argument('--simtime', '-st' + , required = False + , default = _p.run_time + , type = float + , help = 'Run time for simulation (days)' + ) + + parser.add_argument('--outfile', '-o' + , required = False + , default = '%s.dat' % sys.argv[0] + , help = 'Outfile to save the data in (csv) file.' + ) + + parser.add_argument('--camkii', '-ck' + , required = False + , default = _p.N_CaMK + , type = float + , help = 'No of CaMKII molecules in each voxel.' + ) + + parser.add_argument('--pp1', '-pp' + , required = False + , type = float + , default = _p.N_PP1 + , help = 'No of PP1 molecules in each voxel.' + ) + + parser.add_argument('--turnover-rate', '-tr' + , required = False + , type = float + , default = _p.turnover_rate + , help = 'Turnover rate of CaMKKII (in per second)' + ) + + parser.add_argument('--record-dt', '-dt' + , required = False + , default = 60 + , type = float + , help = 'Record dt for plot' + ) + + parser.add_argument('--enable-subunit-exchange', '-SE' + , required = False + , default = False + , action = 'store_true' + , help = 'Enable subunit exchange.' + ) + + parser.add_argument('--num-switch', '-ns' + , required = False + , default = _p.num_switch + , type = int + , help = 'No of switches in system' + ) + + parser.add_argument('--num-voxels', '-nv' + , required = False + , default = _p.num_voxels + , type = int + , help = 'No of voxels in one switch.' + ) + + parser.add_argument('--diff-dict', '-dd' + , required = False + , default = '%s' % _p.diff_consts + , type = str + , help = 'Diffusion coefficients as python dictionary' + ) + + parser.add_argument('--voxel-length', '-nl' + , required = False + , default = _p.voxel_length + , type = float + , help = 'Length of individial voxel' + ) + + parser.add_argument('--ca-expr', '-ca' + , required = False + , default = _p.ca_expr + , help = 'Calcium expression (muParser/moose expression)' + ) + + parser.add_argument('--michaelis-menten', '-mm' + , required = False + , default = False + , action = 'store_true' + , help = 'Use Michealson-Menten scheme for dephosphorylated.' + ) + + parser.parse_args( namespace = args ) + main( 'camkii_pp1_0', **vars(args) )

Home Page: -http://moose.ncbs.res.in